{"version":3,"file":"static/js/main.87371cc8.js","mappings":"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K,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,QAAS,CAAC,IAAK,IAAK,KAAM,MAC1B,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KAAM,MACvB,GAAM,CAAC,IAAK,IAAK,KACjB,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,MACZ,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,KAClB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,SAAU,CAAC,IAAK,KAAM,IAAK,MAC3B,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GAAM,CAAC,IAAK,KAAM,IAAK,MACvB,GA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AAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,KAAgB,OAANA,GAAsB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAgB,OAANA,GAAgBA,GAAK,MAAUA,GAAK,MAAUA,GAAK,MAAUA,GAAK,M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AK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAEmB,CACxB,IAAK,WACJ,CACD,IAAK,WACJ,CACD,IAAK,WACJ,CACD,IAAK,WACJ,CACD,IAAK,YAyKHC,GAAyB,CAvKb,CACd,EAAG,UACH,GAAI,UACJ,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,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAoES,CACd,EAAG,UACH,GAAI,UACJ,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,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WA1CO,CACZ,EAAG,UACH,GAAI,UACJ,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,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAhES,CACd,EAAG,UACH,GAAI,UACJ,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,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAES,CACd,EAAG,UACH,GAAI,UACJ,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,UACL,IAAK,UACL,IAAK,UACL,IAA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I,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAA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AoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,kEAAmE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,sEAEtsR8koB,IAAK,CACHzvB,IAAK,EACLr1mB,OAAQ,CAAC,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,iEAAkE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,o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I,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAC/Q4zoB,EAAK,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAChR9qpB,EAAI,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAC1R+qpB,EAAK,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAA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ozqB,GAAeR,GAt4BG,CAEpB,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,I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AAU95S,EACV5kE,QAAS4kE,EACT+5S,QAAS,KACTjhoB,QAASknV,EACTg6S,KAAM,KACNl4rB,UAAW80rB,EACXxsnB,KAAM9jC,EACNmuO,QAAS,KACT/9O,QAAS,KACTujqB,gBAAiBtD,EACjB39nB,SAAUgnV,EACVk6S,aAActD,EACdhvmB,OAAQthD,EAAS0omB,EACjBnylB,YAAa,KACbptD,KAAM,KACNyhT,SAAU,KACVipZ,SAAU,KACV75pB,QAAS0/W,EACT2mR,MAAO3mR,EACP11W,IAAK,KACL8vpB,QAAS,KACTtprB,SAAUkvY,EACV5pW,SAAU8ipB,EACV1nrB,UAAWmlrB,EACX0D,QAAS,KACTC,aAAc,KACdC,KAAM,KACNC,WAAY,KACZC,YAAa,KACbC,WAAY,KACZC,eAAgB36S,EAChB46S,WAAY,KACZjxd,QAASitd,EACT12sB,OAAQomD,EACR1I,OAAQoiX,EACRrtZ,KAAM2zC,EACNz/B,KAAM,KACNg0rB,SAAU,KACVn+a,QAASk6a,EACTkE,UAAWlE,EACX3+sB,GAAI,KACJ8itB,WAAY,KACZC,YAAahsD,EACbisD,UAAW,KACXC,UAAW,KACXxqsB,GAAI,KACJ4jkB,MAAOt0K,EACPppM,OAAQ,KACRukf,SAAUvE,EACVwE,QAASxE,EACTyE,UAAWr7S,EACX1sH,SAAUsja,EACVt6Y,KAAM,KACN/jU,MAAO,KACPs/rB,KAAM,KACNn0oB,SAAU,KACVv5C,KAAM,KACNguO,QAAS,KACT9iN,KAAM2qY,EACNttZ,IAAK4zC,EACLg1pB,SAAU,KACVp/sB,IAAK,KACLkiL,UAAW93H,EACXypR,MAAO,KACPz4P,OAAQ,KACRr7E,IAAK,KACLuvY,UAAWllV,EACXszR,SAAUomF,EACVu7S,MAAOv7S,EACPrvZ,KAAM,KACNuiB,MAAO,KACPsorB,SAAUx7S,EACVy7S,WAAYz7S,EACZ07S,QAAS,KACTC,aAAc,KACdC,WAAY,KACZC,cAAe,KACfC,eAAgB,KAChBl2W,OAAQ,KACRs5E,SAAU,KACV68R,UAAW,KACXC,iBAAkB,KAClBl5e,SAAU,KACV5Y,QAAS,KACT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O,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,OACP,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,OACd,KAAM,CAAC,MAAO,MAAO,MAAO,OAC5B,KAAM,CAAC,MAAO,MAAO,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AAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,MAAO,IAAK,MAAO,MAAO,IAAK,MAAO,MAAO,IAAK,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,I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,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI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AAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,GAAI,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,IAAK,EAAG,GAAI,EAAG,GAAI,E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OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,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I,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAChR5gE,EAAK,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAChRmsK,EAAK,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAC3R7uK,EAAK,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,E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","sources":["webpack:///./src/analytics.ts","webpack:///./src/components/MainNav/config/horizontalMenu.tsx","webpack:///./src/graphql/generated.ts","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Percent.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Type.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Math.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Array.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Disposer.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/AsyncPending.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/EventDispatcher.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Object.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Iterator.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/String.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Dictionary.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Cache.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Registry.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/List.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/SortedList.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Number.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Order.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Adapter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Colors.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Color.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Base.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Strings.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Utils.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Browser.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Ease.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/SpriteState.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/SpriteEvents.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/defs/SVGDefaults.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Options.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Animation.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/DOM.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/AMElement.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/Group.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/InterfaceColorSet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/PopupCSS.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObjectEvents.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionObject.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/InteractionKeyboardObject.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/Inertia.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Keyboard.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Time.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/Interaction.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Popup.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Modal.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Log.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/ResizeSensor.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/SVGContainer.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/Paper.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/Pattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradient.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradient.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/interaction/Mouse.js","webpack:///./node_modules/@amcharts/amcharts4/lang/en.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Language.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/formatters/TextFormatter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/formatters/NumberFormatter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/formatters/DateFormatter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/formatters/DurationFormatter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/export/ExportCSS.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Validatable.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/export/Export.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/export/ExportMenu.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Net.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Sprite.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Rectangle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Container.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/System.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/data/DataParser.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/data/CSVParser.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/data/JSONParser.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/data/DataLoader.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/data/DataSource.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Responsive.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/DataItem.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/Component.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Label.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/RoundedRectangle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Button.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Circle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Ellipse.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Image.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Line.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedShape.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/PointedRectangle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/Path.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyline.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyarc.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Morpher.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polygon.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Polyspline.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Slice.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Preloader.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/ResizeButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/CloseButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/SwitchButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Scrollbar.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Slider.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/TextLink.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/Filter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DropShadowFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Tooltip.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Trapezoid.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Triangle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/Smoothing.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedCircle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedLine.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/WavedRectangle.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/ZoomOutButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/PlayButton.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/ColorModifier.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/GradientModifier.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinearGradientModifier.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Cone.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/LightenFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Rectangle3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/3d/Slice3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RadialGradientModifier.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/LinePattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/CirclePattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/fills/RectPattern.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/ColorizeFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/DesaturateFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/BlurFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/rendering/filters/FocusFilter.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/ColorSet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/PatternSet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Plugin.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/AmChartsLogo.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/utils/Instance.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/Grip.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/Chart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/Bullet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/Legend.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/Series.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SerialChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBreak.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/Axis.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLine.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFill.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/Grid.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabel.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/Tick.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisTick.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRenderer.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisBullet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxisBreak.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/ValueAxis.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxisBreak.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/DateAxis.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxisBreak.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/CategoryAxis.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/XYSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/XYChartScrollbar.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeriesSegment.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/DurationAxis.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/LineSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisFillCircular.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/GridCircular.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisLabelCircular.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererCircular.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererRadial.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/RadarChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/ClockHand.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/GaugeChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/PercentSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PercentChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/PieTick.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/PieSeries3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/PieChart3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SlicedChart.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramNode.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/FlowDiagramLink.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/FlowDiagram.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/LabelBullet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyNode.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/SankeyLink.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/SankeyDiagram.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordNode.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/core/elements/QuadraticCurve.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/ChordLink.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/ChordDiagram.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/TreeMapSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/TreeMap.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererX3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/axes/AxisRendererY3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/Column3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/ColumnSeries3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/types/XYChart3D.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/HeatLegend.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/Candlestick.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/CandlestickSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/OHLC.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/OHLCSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeriesSegment.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/StepLineSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/RadarColumn.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/RadarColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelSlice.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/FunnelTick.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/FunnelSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/PyramidSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/PictorialStackedSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/ConeColumn.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/ConeSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/CurvedColumn.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/series/CurvedColumnSeries.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/CircleBullet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/ErrorBullet.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/elements/NavigationBar.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/cursors/Cursor.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/cursors/XYCursor.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/charts/cursors/RadarCursor.js","webpack:///./node_modules/@amcharts/amcharts4/.internal/themes/animated.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Registry.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Percent.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Type.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Array.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Object.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Disposer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Utils.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Color.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Animation.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/EventDispatcher.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/List.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Children.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Ease.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/States.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Order.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Entity.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Template.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Math.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Sprite.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/Pattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/patterns/PicturePattern.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/Renderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Graphics.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Rectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Layout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/HorizontalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/VerticalLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/GridLayout.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/TextFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/PopulateString.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Container.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Text.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ResizeSensor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/InterfaceColors.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Label.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/PointedRectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tooltip.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/NumberFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Timezone.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DateFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/DurationFormatter.js","webpack:///./node_modules/@amcharts/amcharts5/locales/en.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Language.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Theme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/DefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Matrix.js","webpack:///./node_modules/svg-arc-to-cubic-bezier/modules/index.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/backend/CanvasRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/Root.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/ColorSet.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Time.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChartDefaultTheme.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Chart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/SerialChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/RoundedRectangle.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Button.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYChart.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Grid.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/XYCursor.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Data.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Component.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/Axis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/CategoryAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/util/Draw.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Line.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Tick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisTick.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisLabel.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRenderer.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererX.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/ValueAxis.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/axes/AxisRendererY.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/core/render/Series.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/XYSeries.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/path.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/charts/xy/series/LineSeries.js","webpack:///./node_modules/@amcharts/amcharts5/themes/Animated.js","webpack:///./node_modules/@amcharts/amcharts5/.internal/themes/AnimatedTheme.js","webpack:///./node_modules/@acin/acin-charts/es/index.js","webpack:///./node_modules/@acin/acin-terminal-risks-and-controls/es/index.js","webpack:///./node_modules/use-debounce/esm/useDebouncedCallback.js","webpack:///./node_modules/@acin/data-matching/node_modules/use-debounce/esm/useDebounce.js","webpack:///./node_modules/@acin/data-matching/node_modules/use-debounce/esm/useDebouncedCallback.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/@material-ui/utils/esm/deepmerge.js","webpack:///./node_modules/@material-ui/core/esm/styles/createBreakpoints.js","webpack:///./node_modules/@material-ui/core/esm/styles/createMixins.js","webpack:///./node_modules/@material-ui/utils/esm/formatMuiErrorMessage.js","webpack:///./node_modules/@material-ui/core/esm/colors/common.js","webpack:///./node_modules/@material-ui/core/esm/colors/grey.js","webpack:///./node_modules/@material-ui/core/esm/colors/indigo.js","webpack:///./node_modules/@material-ui/core/esm/colors/pink.js","webpack:///./node_modules/@material-ui/core/esm/colors/red.js","webpack:///./node_modules/@material-ui/core/esm/colors/orange.js","webpack:///./node_modules/@material-ui/core/esm/colors/blue.js","webpack:///./node_modules/@material-ui/core/esm/colors/green.js","webpack:///./node_modules/@material-ui/core/esm/styles/colorManipulator.js","webpack:///./node_modules/@material-ui/core/esm/styles/createPalette.js","webpack:///./node_modules/@material-ui/core/esm/styles/createTypography.js","webpack:///./node_modules/@material-ui/core/esm/styles/shadows.js","webpack:///./node_modules/@material-ui/core/esm/styles/shape.js","webpack:///./node_modules/@material-ui/system/esm/breakpoints.js","webpack:///./node_modules/@material-ui/system/esm/merge.js","webpack:///./node_modules/@material-ui/system/esm/spacing.js","webpack:///./node_modules/@material-ui/system/esm/memoize.js","webpack:///./node_modules/@material-ui/core/esm/styles/transitions.js","webpack:///./node_modules/@material-ui/core/esm/styles/zIndex.js","webpack:///./node_modules/@material-ui/core/esm/styles/createMuiTheme.js","webpack:///./node_modules/@material-ui/core/esm/styles/createSpacing.js","webpack:///./node_modules/@material-ui/styles/esm/useTheme/ThemeContext.js","webpack:///./node_modules/@material-ui/styles/esm/useTheme/useTheme.js","webpack:///./node_modules/@material-ui/styles/esm/ThemeProvider/nested.js","webpack:///./node_modules/@material-ui/styles/esm/ThemeProvider/ThemeProvider.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack:///./node_modules/redux/es/redux.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/types.js","webpack:///./node_modules/dnd-core/dist/esm/utils/equality.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/dragOffset.js","webpack:///./node_modules/dnd-core/dist/esm/actions/registry.js","webpack:///./node_modules/dnd-core/dist/esm/utils/js_utils.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/dragOperation.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/refCount.js","webpack:///./node_modules/dnd-core/dist/esm/utils/dirtiness.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/dirtyHandlerIds.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/stateId.js","webpack:///./node_modules/dnd-core/dist/esm/reducers/index.js","webpack:///./node_modules/@react-dnd/invariant/dist/invariant.esm.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/local/setClientOffset.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/beginDrag.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/publishDragSource.js","webpack:///./node_modules/dnd-core/dist/esm/utils/matchesType.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/hover.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/drop.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/endDrag.js","webpack:///./node_modules/dnd-core/dist/esm/utils/coords.js","webpack:///./node_modules/dnd-core/dist/esm/DragDropMonitorImpl.js","webpack:///./node_modules/dnd-core/dist/esm/interfaces.js","webpack:///./node_modules/dnd-core/dist/esm/utils/getNextUniqueId.js","webpack:///./node_modules/dnd-core/dist/esm/contracts.js","webpack:///./node_modules/@react-dnd/asap/dist/esm/makeRequestCall.mjs","webpack:///./node_modules/@react-dnd/asap/dist/esm/RawTask.mjs","webpack:///./node_modules/@react-dnd/asap/dist/esm/asap.mjs","webpack:///./node_modules/@react-dnd/asap/dist/esm/AsapQueue.mjs","webpack:///./node_modules/@react-dnd/asap/dist/esm/TaskFactory.mjs","webpack:///./node_modules/dnd-core/dist/esm/HandlerRegistryImpl.js","webpack:///./node_modules/dnd-core/dist/esm/DragDropManagerImpl.js","webpack:///./node_modules/dnd-core/dist/esm/actions/dragDrop/index.js","webpack:///./node_modules/dnd-core/dist/esm/factories.js","webpack:///./node_modules/react-dnd/dist/esm/common/DndContext.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/internal/useIsomorphicLayoutEffect.js","webpack:///./node_modules/@react-dnd/shallowequal/dist/shallowequal.esm.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/internal/useCollector.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/internal/useMonitorOutput.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/useDragDropManager.js","webpack:///./node_modules/react-dnd/dist/esm/common/DragSourceMonitorImpl.js","webpack:///./node_modules/react-dnd/dist/esm/utils/cloneWithRef.js","webpack:///./node_modules/react-dnd/dist/esm/common/wrapConnectorHooks.js","webpack:///./node_modules/react-dnd/dist/esm/utils/isRef.js","webpack:///./node_modules/react-dnd/dist/esm/common/SourceConnector.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/internal/drag.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/useDrag.js","webpack:///./node_modules/react-dnd/dist/esm/common/registration.js","webpack:///./node_modules/react-dnd/dist/esm/common/TargetConnector.js","webpack:///./node_modules/react-dnd/dist/esm/common/DropTargetMonitorImpl.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/internal/drop.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/useDrop.js","webpack:///./node_modules/react-dnd/dist/esm/hooks/useDragLayer.js","webpack:///./node_modules/react-dnd/dist/esm/common/DndProvider.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/utils/js_utils.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/EnterLeaveCounter.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/BrowserDetector.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/MonotonicInterpolant.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/OffsetUtils.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/NativeTypes.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/nativeTypesConfig.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/getDataFromDataTransfer.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/NativeDragSource.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/NativeDragSources/index.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/OptionsReader.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/HTML5BackendImpl.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/getEmptyImage.js","webpack:///./node_modules/react-dnd-html5-backend/dist/esm/index.js","webpack:///./node_modules/react-intl/lib/src/components/injectIntl.js","webpack:///./node_modules/@formatjs/ecma402-abstract/lib/utils.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack:///./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack:///./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack:///./node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","webpack:///./node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack:///./node_modules/@formatjs/fast-memoize/lib/index.js","webpack:///./node_modules/intl-messageformat/lib/src/error.js","webpack:///./node_modules/intl-messageformat/lib/src/formatters.js","webpack:///./node_modules/intl-messageformat/lib/src/core.js","webpack:///./node_modules/@formatjs/intl/lib/src/error.js","webpack:///./node_modules/@formatjs/intl/lib/src/utils.js","webpack:///./node_modules/react-intl/lib/src/utils.js","webpack:///./node_modules/react-intl/lib/src/components/useIntl.js","webpack:///./node_modules/@formatjs/intl/lib/src/message.js","webpack:///./node_modules/@formatjs/intl/lib/src/number.js","webpack:///./node_modules/@formatjs/intl/lib/src/relativeTime.js","webpack:///./node_modules/@formatjs/intl/lib/src/dateTime.js","webpack:///./node_modules/@formatjs/intl/lib/src/plural.js","webpack:///./node_modules/@formatjs/intl/lib/src/list.js","webpack:///./node_modules/@formatjs/intl/lib/src/displayName.js","webpack:///./node_modules/@formatjs/intl/lib/src/create-intl.js","webpack:///./node_modules/react-intl/lib/src/components/provider.js","webpack:///./node_modules/theming/dist/theming.esm.js","webpack:///./node_modules/is-in-browser/dist/module.js","webpack:///./node_modules/tiny-warning/dist/tiny-warning.esm.js","webpack:///./node_modules/jss/dist/jss.esm.js","webpack:///./node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","webpack:///./node_modules/jss-plugin-rule-value-observable/dist/jss-plugin-rule-value-observable.esm.js","webpack:///./node_modules/jss-plugin-template/dist/jss-plugin-template.esm.js","webpack:///./node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","webpack:///./node_modules/jss-plugin-extend/dist/jss-plugin-extend.esm.js","webpack:///./node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","webpack:///./node_modules/jss-plugin-compose/dist/jss-plugin-compose.esm.js","webpack:///./node_modules/hyphenate-style-name/index.js","webpack:///./node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","webpack:///./node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","webpack:///./node_modules/jss-plugin-expand/dist/jss-plugin-expand.esm.js","webpack:///./node_modules/css-vendor/dist/css-vendor.esm.js","webpack:///./node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","webpack:///./node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","webpack:///./node_modules/jss-preset-default/dist/jss-preset-default.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/css-jss/dist/css-jss.esm.js","webpack:///./node_modules/react-jss/dist/react-jss.esm.js","webpack:///./node_modules/react-redux/es/components/Context.js","webpack:///./node_modules/react-redux/es/utils/batch.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///./node_modules/react-redux/es/hooks/useStore.js","webpack:///./node_modules/react-redux/es/hooks/useDispatch.js","webpack:///./node_modules/react-redux/es/hooks/useSelector.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/reselect/es/defaultMemoize.js","webpack:///./node_modules/reselect/es/index.js","webpack:///./node_modules/immer/dist/immer.esm.mjs","webpack:///./node_modules/redux-thunk/es/index.js","webpack:///./node_modules/@reduxjs/toolkit/dist/redux-toolkit.esm.js","webpack:///./node_modules/fast-sort/dist/sort.es.js","webpack:///./node_modules/fuzzy-search/src/Helper.js","webpack:///./node_modules/fuzzy-search/src/FuzzySearch.js","webpack:///./node_modules/@material-ui/styles/esm/getThemeProps/getThemeProps.js","webpack:///./node_modules/@material-ui/system/esm/styleFunctionSx.js","webpack:///./node_modules/@material-ui/system/esm/compose.js","webpack:///./node_modules/@material-ui/system/esm/style.js","webpack:///./node_modules/@material-ui/system/esm/borders.js","webpack:///./node_modules/@material-ui/system/esm/display.js","webpack:///./node_modules/@material-ui/system/esm/flexbox.js","webpack:///./node_modules/@material-ui/system/esm/grid.js","webpack:///./node_modules/@material-ui/system/esm/positions.js","webpack:///./node_modules/@material-ui/system/esm/palette.js","webpack:///./node_modules/@material-ui/system/esm/shadows.js","webpack:///./node_modules/@material-ui/system/esm/sizing.js","webpack:///./node_modules/@material-ui/system/esm/typography.js","webpack:///./node_modules/@material-ui/styles/esm/mergeClasses/mergeClasses.js","webpack:///./node_modules/@material-ui/styles/esm/makeStyles/multiKeyStore.js","webpack:///./node_modules/@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js","webpack:///./node_modules/@material-ui/styles/esm/StylesProvider/StylesProvider.js","webpack:///./node_modules/@material-ui/styles/esm/jssPreset/jssPreset.js","webpack:///./node_modules/@material-ui/styles/esm/makeStyles/indexCounter.js","webpack:///./node_modules/@material-ui/styles/esm/getStylesCreator/noopTheme.js","webpack:///./node_modules/@material-ui/styles/esm/makeStyles/makeStyles.js","webpack:///./node_modules/@material-ui/styles/esm/getStylesCreator/getStylesCreator.js","webpack:///./node_modules/@material-ui/styles/esm/styled/styled.js","webpack:///./node_modules/@material-ui/core/esm/styles/defaultTheme.js","webpack:///./node_modules/@material-ui/core/esm/styles/styled.js","webpack:///./node_modules/@material-ui/core/esm/Box/Box.js","webpack:///./node_modules/@material-ui/core/esm/utils/ownerDocument.js","webpack:///./node_modules/@material-ui/core/esm/utils/setRef.js","webpack:///./node_modules/@material-ui/core/esm/utils/useForkRef.js","webpack:///./node_modules/@material-ui/core/esm/utils/useEventCallback.js","webpack:///./node_modules/@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js","webpack:///./node_modules/hotkeys-js/dist/hotkeys.esm.js","webpack:///./node_modules/@material-ui/styles/esm/withStyles/withStyles.js","webpack:///./node_modules/@material-ui/core/esm/styles/withStyles.js","webpack:///./node_modules/@material-ui/core/esm/utils/capitalize.js","webpack:///./node_modules/@material-ui/core/esm/Typography/Typography.js","webpack:///./node_modules/@material-ui/core/esm/SvgIcon/SvgIcon.js","webpack:///./node_modules/@material-ui/core/esm/utils/createSvgIcon.js","webpack:///./node_modules/@material-ui/core/esm/internal/svg-icons/MoreHoriz.js","webpack:///./node_modules/@material-ui/core/esm/utils/useIsFocusVisible.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack:///./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack:///./node_modules/react-transition-group/esm/TransitionGroup.js","webpack:///./node_modules/@material-ui/core/esm/ButtonBase/Ripple.js","webpack:///./node_modules/@material-ui/core/esm/ButtonBase/TouchRipple.js","webpack:///./node_modules/@material-ui/core/esm/ButtonBase/ButtonBase.js","webpack:///./node_modules/@material-ui/core/esm/Breadcrumbs/BreadcrumbCollapsed.js","webpack:///./node_modules/@material-ui/core/esm/Breadcrumbs/Breadcrumbs.js","webpack:///./node_modules/@material-ui/core/esm/Button/Button.js","webpack:///./node_modules/@material-ui/core/esm/utils/debounce.js","webpack:///./node_modules/@material-ui/core/esm/utils/ownerWindow.js","webpack:///./node_modules/@material-ui/core/esm/utils/createChainedFunction.js","webpack:///./node_modules/@material-ui/core/esm/Portal/Portal.js","webpack:///./node_modules/@material-ui/core/esm/utils/getScrollbarSize.js","webpack:///./node_modules/@material-ui/core/esm/Modal/ModalManager.js","webpack:///./node_modules/@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js","webpack:///./node_modules/@material-ui/core/esm/Modal/SimpleBackdrop.js","webpack:///./node_modules/@material-ui/core/esm/Modal/Modal.js","webpack:///./node_modules/react-transition-group/esm/config.js","webpack:///./node_modules/react-transition-group/esm/utils/reflow.js","webpack:///./node_modules/react-transition-group/esm/Transition.js","webpack:///./node_modules/@material-ui/core/esm/styles/useTheme.js","webpack:///./node_modules/@material-ui/core/esm/transitions/utils.js","webpack:///./node_modules/@material-ui/core/esm/Grow/Grow.js","webpack:///./node_modules/@material-ui/core/esm/Paper/Paper.js","webpack:///./node_modules/@material-ui/core/esm/Popover/Popover.js","webpack:///./node_modules/@material-ui/core/esm/List/ListContext.js","webpack:///./node_modules/@material-ui/core/esm/List/List.js","webpack:///./node_modules/@material-ui/core/esm/MenuList/MenuList.js","webpack:///./node_modules/@material-ui/core/esm/Menu/Menu.js","webpack:///./node_modules/@material-ui/core/esm/ListItemIcon/ListItemIcon.js","webpack:///./node_modules/@material-ui/core/esm/ListItemText/ListItemText.js","webpack:///./node_modules/@material-ui/core/esm/utils/isMuiElement.js","webpack:///./node_modules/@material-ui/core/esm/ListItem/ListItem.js","webpack:///./node_modules/@material-ui/core/esm/MenuItem/MenuItem.js","webpack:///./node_modules/@material-ui/core/esm/FormControl/FormControlContext.js","webpack:///./node_modules/@material-ui/core/esm/InputAdornment/InputAdornment.js","webpack:///./node_modules/@material-ui/core/esm/FormControl/formControlState.js","webpack:///./node_modules/@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js","webpack:///./node_modules/@material-ui/core/esm/InputBase/utils.js","webpack:///./node_modules/@material-ui/core/esm/InputBase/InputBase.js","webpack:///./node_modules/@material-ui/core/esm/Input/Input.js","webpack:///./node_modules/@material-ui/core/esm/FilledInput/FilledInput.js","webpack:///./node_modules/@material-ui/core/esm/OutlinedInput/NotchedOutline.js","webpack:///./node_modules/@material-ui/core/esm/OutlinedInput/OutlinedInput.js","webpack:///./node_modules/@material-ui/core/esm/FormControl/useFormControl.js","webpack:///./node_modules/@material-ui/core/esm/FormLabel/FormLabel.js","webpack:///./node_modules/@material-ui/core/esm/InputLabel/InputLabel.js","webpack:///./node_modules/@material-ui/core/esm/FormControl/FormControl.js","webpack:///./node_modules/@material-ui/core/esm/FormHelperText/FormHelperText.js","webpack:///./node_modules/@material-ui/core/esm/Select/SelectInput.js","webpack:///./node_modules/@material-ui/core/esm/utils/useControlled.js","webpack:///./node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDropDown.js","webpack:///./node_modules/@material-ui/core/esm/NativeSelect/NativeSelectInput.js","webpack:///./node_modules/@material-ui/core/esm/NativeSelect/NativeSelect.js","webpack:///./node_modules/@material-ui/core/esm/Select/Select.js","webpack:///./node_modules/@material-ui/core/esm/TextField/TextField.js","webpack:///./node_modules/@material-ui/core/esm/ListSubheader/ListSubheader.js","webpack:///./node_modules/chonky/dist/chonky.esm.js","webpack:///./node_modules/@material-ui/core/esm/useMediaQuery/useMediaQuery.js","webpack:///./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack:///./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack:///./node_modules/chonky-icon-fontawesome/dist/chonky-icon-fontawesome.esm.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/AxiosURLSearchParams.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/platform/browser/index.js","webpack:///./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","webpack:///./node_modules/axios/lib/platform/browser/classes/FormData.js","webpack:///./node_modules/axios/lib/platform/browser/classes/Blob.js","webpack:///./node_modules/axios/lib/platform/common/utils.js","webpack:///./node_modules/axios/lib/platform/index.js","webpack:///./node_modules/axios/lib/helpers/formDataToJSON.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/axios/lib/helpers/toURLEncodedForm.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/core/AxiosHeaders.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/speedometer.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/adapters/adapters.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/HttpStatusCode.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@acin/data-matching/es/index.js","webpack:///./node_modules/@acin/download/es/index.js","webpack:///./node_modules/@acin/filters/es/index.js","webpack:///./node_modules/@acin/inspector/es/index.js","webpack:///./node_modules/@acin/pagination/es/index.js","webpack:///./node_modules/date-fns/esm/constants/index.js","webpack:///./node_modules/date-fns/esm/parseISO/index.js","webpack:///./node_modules/@acin/risk-intel/es/index.js","webpack:///./node_modules/react-toastify/dist/react-toastify.esm.js","webpack:///./node_modules/@acin/terminal-onboarding/es/index.js","webpack:///./node_modules/react-modal-promise/lib/index.es.js","webpack:///./node_modules/react-portal/es/utils.js","webpack:///./node_modules/react-portal/es/Portal.js","webpack:///./node_modules/react-portal/es/LegacyPortal.js","webpack:///./node_modules/react-portal/es/PortalCompat.js","webpack:///./node_modules/are-passive-events-supported/dist/are-passive-events-supported.esm.browser.js","webpack:///./node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","webpack:///./node_modules/use-latest/dist/use-latest.esm.js","webpack:///./node_modules/use-onclickoutside/dist/use-onclickoutside.browser.esm.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack:///./node_modules/@popperjs/core/lib/utils/math.js","webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack:///./node_modules/@popperjs/core/lib/enums.js","webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js","webpack:///./node_modules/@popperjs/core/lib/createPopper.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack:///./node_modules/@popperjs/core/lib/utils/within.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack:///./node_modules/@popperjs/core/lib/popper.js","webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack:///./node_modules/tippy.js/dist/tippy.esm.js","webpack:///./node_modules/@tippyjs/react/dist/tippy-react.esm.js","webpack:///./node_modules/react-spring/web.js","webpack:///./node_modules/styled-reset/lib/esm/index.js","webpack:///./node_modules/@acin/ui-core/node_modules/dompurify/dist/purify.es.mjs","webpack:///./node_modules/file-selector/dist/es5/file.js","webpack:///./node_modules/file-selector/dist/es5/file-selector.js","webpack:///./node_modules/react-dropzone/dist/es/utils/index.js","webpack:///./node_modules/react-dropzone/dist/es/index.js","webpack:///./node_modules/@acin/ui-core/es/index.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/BarLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/BeatLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/BounceLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/CircleLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/ClimbingBoxLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/ClipLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/ClockLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/DotLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/FadeLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/GridLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/HashLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/MoonLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/PacmanLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/PropagateLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/PuffLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/PulseLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/RingLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/RiseLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/RotateLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/ScaleLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/SkewLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/SquareLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/SyncLoader.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/helpers/colors.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/helpers/index.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/helpers/proptypes.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/helpers/unitConverter.js","webpack:///./node_modules/@acin/ui-core/node_modules/react-spinners/index.js","webpack:///./node_modules/@acin/user-accounts/es/index.js","webpack:///./node_modules/@brainhubeu/react-carousel/lib/react-carousel.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/emotion-element-04d85134.browser.esm.js","webpack:///./node_modules/@emotion/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faAdobe.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faGitAlt.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faLinux.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faNodeJs.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faPhp.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faPython.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faRust.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faUbuntu.js","webpack:///./node_modules/@fortawesome/free-brands-svg-icons/faWindows.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faArrowDown.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBalanceScale.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faBoxOpen.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faChevronDown.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faChevronRight.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faCircleNotch.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faCogs.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faCopy.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faCubes.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faDatabase.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faDownload.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faEraser.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faExclamationTriangle.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faExternalLinkAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faEyeSlash.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFile.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileArchive.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileCode.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileExcel.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileImage.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFilePdf.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFileWord.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFilm.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFistRaised.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFolder.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFolderOpen.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faFolderPlus.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faInfoCircle.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faKey.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faLevelUpAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faList.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faLock.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faMinus.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faMusic.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faObjectGroup.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faPaste.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faRunning.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faSearch.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faShareAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faSortAmountDownAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faSortAmountUpAlt.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTerminal.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTh.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faThLarge.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faThList.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTimes.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faToggleOff.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faToggleOn.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faTrash.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faUpload.js","webpack:///./node_modules/@fortawesome/free-solid-svg-icons/faUsers.js","webpack:///./node_modules/@mapbox/hast-util-table-cell-style/index.js","webpack:///./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-is/convert.js","webpack:///./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/@mapbox/hast-util-table-cell-style/node_modules/unist-util-visit/index.js","webpack:///./node_modules/add-px-to-style/index.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/attr-accept/dist/es/index.js","webpack:///./node_modules/bail/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/buffer-equal-constant-time/index.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/clsx/dist/clsx.m.js","webpack:///./node_modules/comma-separated-tokens/index.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack:///./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack:///./node_modules/date-fns/esm/subMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/addMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack:///./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack:///./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack:///./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack:///./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/index.js","webpack:///./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack:///./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack:///./node_modules/date-fns/esm/format/index.js","webpack:///./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack:///./node_modules/date-fns/esm/isValid/index.js","webpack:///./node_modules/date-fns/esm/isDate/index.js","webpack:///./node_modules/date-fns/esm/toDate/index.js","webpack:///./node_modules/deepmerge/dist/cjs.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/dom-css/index.js","webpack:///./node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","webpack:///./node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/exact-trie/index.js","webpack:///./node_modules/exact-trie/lib/ExactTrie.js","webpack:///./node_modules/extend/index.js","webpack:///./node_modules/file-saver/dist/FileSaver.min.js","webpack:///./node_modules/filesize/lib/filesize.min.js","webpack:///./node_modules/graphql-deduplicator/dist/deflate.js","webpack:///./node_modules/graphql-deduplicator/dist/index.js","webpack:///./node_modules/graphql-deduplicator/dist/inflate.js","webpack:///./node_modules/graphql/jsutils/isObjectLike.mjs","webpack:///./node_modules/graphql/polyfills/symbols.mjs","webpack:///./node_modules/graphql/language/location.mjs","webpack:///./node_modules/graphql/language/printLocation.mjs","webpack:///./node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/graphql/language/tokenKind.mjs","webpack:///./node_modules/graphql/jsutils/devAssert.mjs","webpack:///./node_modules/graphql/jsutils/instanceOf.mjs","webpack:///./node_modules/graphql/language/source.mjs","webpack:///./node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/graphql/language/parser.mjs","webpack:///./node_modules/graphql-tag/lib/index.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/hast-to-hyperscript/index.js","webpack:///./node_modules/hast-util-sanitize/index.js","webpack:///./node_modules/hast-util-sanitize/lib/index.js","webpack:///./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///./node_modules/value-equal/esm/value-equal.js","webpack:///./node_modules/history/esm/history.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/inline-style-parser/index.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/is-plain-obj/index.js","webpack:///./node_modules/jsonwebtoken/decode.js","webpack:///./node_modules/jsonwebtoken/index.js","webpack:///./node_modules/jsonwebtoken/lib/JsonWebTokenError.js","webpack:///./node_modules/jsonwebtoken/lib/NotBeforeError.js","webpack:///./node_modules/jsonwebtoken/lib/TokenExpiredError.js","webpack:///./node_modules/jsonwebtoken/lib/psSupported.js","webpack:///./node_modules/jsonwebtoken/lib/timespan.js","webpack:///./node_modules/jsonwebtoken/node_modules/semver/semver.js","webpack:///./node_modules/jsonwebtoken/sign.js","webpack:///./node_modules/jsonwebtoken/verify.js","webpack:///./node_modules/jss-plugin-rule-value-observable/node_modules/symbol-observable/es/index.js","webpack:///./node_modules/jss-plugin-rule-value-observable/node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/jwa/index.js","webpack:///./node_modules/jws/index.js","webpack:///./node_modules/jws/lib/data-stream.js","webpack:///./node_modules/jws/lib/sign-stream.js","webpack:///./node_modules/jws/lib/tostring.js","webpack:///./node_modules/jws/lib/verify-stream.js","webpack:///./node_modules/local-storage/local-storage.js","webpack:///./node_modules/local-storage/parse.js","webpack:///./node_modules/local-storage/stub.js","webpack:///./node_modules/local-storage/tracking.js","webpack:///./node_modules/lodash.debounce/index.js","webpack:///./node_modules/lodash.includes/index.js","webpack:///./node_modules/lodash.isboolean/index.js","webpack:///./node_modules/lodash.isinteger/index.js","webpack:///./node_modules/lodash.isnumber/index.js","webpack:///./node_modules/lodash.isplainobject/index.js","webpack:///./node_modules/lodash.isstring/index.js","webpack:///./node_modules/lodash.once/index.js","webpack:///./node_modules/lodash/_DataView.js","webpack:///./node_modules/lodash/_Hash.js","webpack:///./node_modules/lodash/_ListCache.js","webpack:///./node_modules/lodash/_Map.js","webpack:///./node_modules/lodash/_MapCache.js","webpack:///./node_modules/lodash/_Promise.js","webpack:///./node_modules/lodash/_Set.js","webpack:///./node_modules/lodash/_SetCache.js","webpack:///./node_modules/lodash/_Stack.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_Uint8Array.js","webpack:///./node_modules/lodash/_WeakMap.js","webpack:///./node_modules/lodash/_arrayFilter.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/_arrayPush.js","webpack:///./node_modules/lodash/_arraySome.js","webpack:///./node_modules/lodash/_assocIndexOf.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseGet.js","webpack:///./node_modules/lodash/_baseGetAllKeys.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseHasIn.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsEqual.js","webpack:///./node_modules/lodash/_baseIsEqualDeep.js","webpack:///./node_modules/lodash/_baseIsMatch.js","webpack:///./node_modules/lodash/_baseIsNative.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseIteratee.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseMap.js","webpack:///./node_modules/lodash/_baseMatches.js","webpack:///./node_modules/lodash/_baseMatchesProperty.js","webpack:///./node_modules/lodash/_baseOrderBy.js","webpack:///./node_modules/lodash/_baseProperty.js","webpack:///./node_modules/lodash/_basePropertyDeep.js","webpack:///./node_modules/lodash/_baseSortBy.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseToString.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_cacheHas.js","webpack:///./node_modules/lodash/_castPath.js","webpack:///./node_modules/lodash/_compareAscending.js","webpack:///./node_modules/lodash/_compareMultiple.js","webpack:///./node_modules/lodash/_coreJsData.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_equalArrays.js","webpack:///./node_modules/lodash/_equalByTag.js","webpack:///./node_modules/lodash/_equalObjects.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getAllKeys.js","webpack:///./node_modules/lodash/_getMapData.js","webpack:///./node_modules/lodash/_getMatchData.js","webpack:///./node_modules/lodash/_getNative.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_getSymbols.js","webpack:///./node_modules/lodash/_getTag.js","webpack:///./node_modules/lodash/_getValue.js","webpack:///./node_modules/lodash/_hasPath.js","webpack:///./node_modules/lodash/_hashClear.js","webpack:///./node_modules/lodash/_hashDelete.js","webpack:///./node_modules/lodash/_hashGet.js","webpack:///./node_modules/lodash/_hashHas.js","webpack:///./node_modules/lodash/_hashSet.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isKey.js","webpack:///./node_modules/lodash/_isKeyable.js","webpack:///./node_modules/lodash/_isMasked.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_isStrictComparable.js","webpack:///./node_modules/lodash/_listCacheClear.js","webpack:///./node_modules/lodash/_listCacheDelete.js","webpack:///./node_modules/lodash/_listCacheGet.js","webpack:///./node_modules/lodash/_listCacheHas.js","webpack:///./node_modules/lodash/_listCacheSet.js","webpack:///./node_modules/lodash/_mapCacheClear.js","webpack:///./node_modules/lodash/_mapCacheDelete.js","webpack:///./node_modules/lodash/_mapCacheGet.js","webpack:///./node_modules/lodash/_mapCacheHas.js","webpack:///./node_modules/lodash/_mapCacheSet.js","webpack:///./node_modules/lodash/_mapToArray.js","webpack:///./node_modules/lodash/_matchesStrictComparable.js","webpack:///./node_modules/lodash/_memoizeCapped.js","webpack:///./node_modules/lodash/_nativeCreate.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_setCacheAdd.js","webpack:///./node_modules/lodash/_setCacheHas.js","webpack:///./node_modules/lodash/_setToArray.js","webpack:///./node_modules/lodash/_stackClear.js","webpack:///./node_modules/lodash/_stackDelete.js","webpack:///./node_modules/lodash/_stackGet.js","webpack:///./node_modules/lodash/_stackHas.js","webpack:///./node_modules/lodash/_stackSet.js","webpack:///./node_modules/lodash/_stringToPath.js","webpack:///./node_modules/lodash/_toKey.js","webpack:///./node_modules/lodash/_toSource.js","webpack:///./node_modules/lodash/eq.js","webpack:///./node_modules/lodash/get.js","webpack:///./node_modules/lodash/hasIn.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/lodash.js","webpack:///./node_modules/lodash/memoize.js","webpack:///./node_modules/lodash/orderBy.js","webpack:///./node_modules/lodash/property.js","webpack:///./node_modules/lodash/stubArray.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/toString.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/mdast-util-definitions/index.js","webpack:///./node_modules/mdast-util-from-markdown/dist/index.js","webpack:///./node_modules/mdast-util-from-markdown/index.js","webpack:///./node_modules/mdast-util-to-hast/index.js","webpack:///./node_modules/mdast-util-to-hast/lib/all.js","webpack:///./node_modules/mdast-util-to-hast/lib/footer.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/break.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/code.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/delete.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/footnote.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/heading.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/html.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/image.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/index.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/link.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/list-item.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/list.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/root.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/strong.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/table.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/text.js","webpack:///./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","webpack:///./node_modules/mdast-util-to-hast/lib/index.js","webpack:///./node_modules/mdast-util-to-hast/lib/one.js","webpack:///./node_modules/mdast-util-to-hast/lib/revert.js","webpack:///./node_modules/mdast-util-to-hast/lib/wrap.js","webpack:///./node_modules/mdast-util-to-string/index.js","webpack:///./node_modules/mdurl/encode.js","webpack:///./node_modules/micromark/dist/character/ascii-alpha.js","webpack:///./node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack:///./node_modules/micromark/dist/character/ascii-atext.js","webpack:///./node_modules/micromark/dist/character/ascii-control.js","webpack:///./node_modules/micromark/dist/character/ascii-digit.js","webpack:///./node_modules/micromark/dist/character/ascii-hex-digit.js","webpack:///./node_modules/micromark/dist/character/ascii-punctuation.js","webpack:///./node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack:///./node_modules/micromark/dist/character/markdown-line-ending.js","webpack:///./node_modules/micromark/dist/character/markdown-space.js","webpack:///./node_modules/micromark/dist/character/unicode-punctuation.js","webpack:///./node_modules/micromark/dist/character/unicode-whitespace.js","webpack:///./node_modules/micromark/dist/constant/assign.js","webpack:///./node_modules/micromark/dist/constant/from-char-code.js","webpack:///./node_modules/micromark/dist/constant/has-own-property.js","webpack:///./node_modules/micromark/dist/constant/html-block-names.js","webpack:///./node_modules/micromark/dist/constant/html-raw-names.js","webpack:///./node_modules/micromark/dist/constant/splice.js","webpack:///./node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack:///./node_modules/micromark/dist/constructs.js","webpack:///./node_modules/micromark/dist/initialize/content.js","webpack:///./node_modules/micromark/dist/initialize/document.js","webpack:///./node_modules/micromark/dist/initialize/flow.js","webpack:///./node_modules/micromark/dist/initialize/text.js","webpack:///./node_modules/micromark/dist/parse.js","webpack:///./node_modules/micromark/dist/postprocess.js","webpack:///./node_modules/micromark/dist/preprocess.js","webpack:///./node_modules/micromark/dist/tokenize/attention.js","webpack:///./node_modules/micromark/dist/tokenize/autolink.js","webpack:///./node_modules/micromark/dist/tokenize/block-quote.js","webpack:///./node_modules/micromark/dist/tokenize/character-escape.js","webpack:///./node_modules/micromark/dist/tokenize/character-reference.js","webpack:///./node_modules/micromark/dist/tokenize/code-fenced.js","webpack:///./node_modules/micromark/dist/tokenize/code-indented.js","webpack:///./node_modules/micromark/dist/tokenize/code-text.js","webpack:///./node_modules/micromark/dist/tokenize/content.js","webpack:///./node_modules/micromark/dist/tokenize/definition.js","webpack:///./node_modules/micromark/dist/tokenize/factory-destination.js","webpack:///./node_modules/micromark/dist/tokenize/factory-label.js","webpack:///./node_modules/micromark/dist/tokenize/factory-space.js","webpack:///./node_modules/micromark/dist/tokenize/factory-title.js","webpack:///./node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack:///./node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack:///./node_modules/micromark/dist/tokenize/heading-atx.js","webpack:///./node_modules/micromark/dist/tokenize/html-flow.js","webpack:///./node_modules/micromark/dist/tokenize/html-text.js","webpack:///./node_modules/micromark/dist/tokenize/label-end.js","webpack:///./node_modules/micromark/dist/tokenize/label-start-image.js","webpack:///./node_modules/micromark/dist/tokenize/label-start-link.js","webpack:///./node_modules/micromark/dist/tokenize/line-ending.js","webpack:///./node_modules/micromark/dist/tokenize/list.js","webpack:///./node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack:///./node_modules/micromark/dist/tokenize/setext-underline.js","webpack:///./node_modules/micromark/dist/tokenize/thematic-break.js","webpack:///./node_modules/micromark/dist/util/chunked-push.js","webpack:///./node_modules/micromark/dist/util/chunked-splice.js","webpack:///./node_modules/micromark/dist/util/classify-character.js","webpack:///./node_modules/micromark/dist/util/combine-extensions.js","webpack:///./node_modules/micromark/dist/util/create-tokenizer.js","webpack:///./node_modules/micromark/dist/util/miniflat.js","webpack:///./node_modules/micromark/dist/util/move-point.js","webpack:///./node_modules/micromark/dist/util/normalize-identifier.js","webpack:///./node_modules/micromark/dist/util/prefix-size.js","webpack:///./node_modules/micromark/dist/util/regex-check.js","webpack:///./node_modules/micromark/dist/util/resolve-all.js","webpack:///./node_modules/micromark/dist/util/safe-from-int.js","webpack:///./node_modules/micromark/dist/util/serialize-chunks.js","webpack:///./node_modules/micromark/dist/util/shallow.js","webpack:///./node_modules/micromark/dist/util/size-chunks.js","webpack:///./node_modules/micromark/dist/util/slice-chunks.js","webpack:///./node_modules/micromark/dist/util/subtokenize.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/object-path/index.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/parse-entities/decode-entity.browser.js","webpack:///./node_modules/path-to-regexp/index.js","webpack:///./node_modules/path-to-regexp/node_modules/isarray/index.js","webpack:///./node_modules/path/path.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/performance-now/lib/performance-now.js","webpack:///./node_modules/prefix-style/index.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/property-information/find.js","webpack:///./node_modules/property-information/html.js","webpack:///./node_modules/property-information/lib/aria.js","webpack:///./node_modules/property-information/lib/html.js","webpack:///./node_modules/property-information/lib/svg.js","webpack:///./node_modules/property-information/lib/util/case-insensitive-transform.js","webpack:///./node_modules/property-information/lib/util/case-sensitive-transform.js","webpack:///./node_modules/property-information/lib/util/create.js","webpack:///./node_modules/property-information/lib/util/defined-info.js","webpack:///./node_modules/property-information/lib/util/info.js","webpack:///./node_modules/property-information/lib/util/merge.js","webpack:///./node_modules/property-information/lib/util/schema.js","webpack:///./node_modules/property-information/lib/util/types.js","webpack:///./node_modules/property-information/lib/xlink.js","webpack:///./node_modules/property-information/lib/xml.js","webpack:///./node_modules/property-information/lib/xmlns.js","webpack:///./node_modules/property-information/normalize.js","webpack:///./node_modules/property-information/svg.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/raf/index.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/react-autosuggest/dist/Autosuggest.js","webpack:///./node_modules/react-autosuggest/dist/Autowhatever.js","webpack:///./node_modules/react-autosuggest/dist/Item.js","webpack:///./node_modules/react-autosuggest/dist/ItemList.js","webpack:///./node_modules/react-autosuggest/dist/SectionTitle.js","webpack:///./node_modules/react-autosuggest/dist/compareObjects.js","webpack:///./node_modules/react-autosuggest/dist/index.js","webpack:///./node_modules/react-autosuggest/dist/theme.js","webpack:///./node_modules/react-collapse/lib/Collapse.js","webpack:///./node_modules/react-collapse/lib/UnmountClosed.js","webpack:///./node_modules/react-collapse/lib/index.js","webpack:///./node_modules/react-component-export-image/dist/index.js","webpack:///./node_modules/react-custom-scrollbars/lib/Scrollbars/defaultRenderElements.js","webpack:///./node_modules/react-custom-scrollbars/lib/Scrollbars/index.js","webpack:///./node_modules/react-custom-scrollbars/lib/Scrollbars/styles.js","webpack:///./node_modules/react-custom-scrollbars/lib/index.js","webpack:///./node_modules/react-custom-scrollbars/lib/utils/getInnerHeight.js","webpack:///./node_modules/react-custom-scrollbars/lib/utils/getInnerWidth.js","webpack:///./node_modules/react-custom-scrollbars/lib/utils/getScrollbarWidth.js","webpack:///./node_modules/react-custom-scrollbars/lib/utils/isString.js","webpack:///./node_modules/react-custom-scrollbars/lib/utils/returnFalse.js","webpack:///./node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///./node_modules/react-dom/index.js","webpack:///./node_modules/react-image/umd/index.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/react-loading-skeleton/lib/index.js","webpack:///./node_modules/react-loading-skeleton/lib/skeleton-theme.js","webpack:///./node_modules/react-loading-skeleton/lib/skeleton.js","webpack:///./node_modules/react-router/esm/react-router.js","webpack:///./node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/react-router/node_modules/react-is/index.js","webpack:///./node_modules/react-themeable/dist/index.js","webpack:///./node_modules/react-themeable/node_modules/object-assign/index.js","webpack:///./node_modules/react-virtualized-auto-sizer/dist/react-virtualized-auto-sizer.esm.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/react-window/dist/index.esm.js","webpack:///./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack:///./node_modules/react/cjs/react.production.min.js","webpack:///./node_modules/react/index.js","webpack:///./node_modules/react/jsx-runtime.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/node_modules/isarray/index.js","webpack:///./node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/redux-watch/index.js","webpack:///./node_modules/rehackt/index.js","webpack:///./node_modules/remark-parse/index.js","webpack:///./node_modules/remark-react/index.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/section-iterator/dist/index.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/shallow-equal/arrays/index.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/shortid/index.js","webpack:///./node_modules/shortid/lib/alphabet.js","webpack:///./node_modules/shortid/lib/build.js","webpack:///./node_modules/shortid/lib/generate.js","webpack:///./node_modules/shortid/lib/index.js","webpack:///./node_modules/shortid/lib/is-valid.js","webpack:///./node_modules/shortid/lib/random/random-byte-browser.js","webpack:///./node_modules/shortid/lib/random/random-from-seed.js","webpack:///./node_modules/shortid/lib/util/cluster-worker-id-browser.js","webpack:///./node_modules/shortid/node_modules/nanoid/format.browser.js","webpack:///./node_modules/space-separated-tokens/index.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack:///./node_modules/style-to-object/index.js","webpack:///./node_modules/styled-components/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack:///./node_modules/styled-components/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack:///./node_modules/styled-components/dist/styled-components.browser.esm.js","webpack:///./node_modules/to-camel-case/index.js","webpack:///./node_modules/to-no-case/index.js","webpack:///./node_modules/to-space-case/index.js","webpack:///./node_modules/trough/index.js","webpack:///./node_modules/trough/wrap.js","webpack:///./node_modules/unified/index.js","webpack:///./node_modules/unist-builder/index.js","webpack:///./node_modules/unist-util-generated/index.js","webpack:///./node_modules/unist-util-is/convert.js","webpack:///./node_modules/unist-util-position/index.js","webpack:///./node_modules/unist-util-stringify-position/index.js","webpack:///./node_modules/unist-util-visit-parents/color.browser.js","webpack:///./node_modules/unist-util-visit-parents/index.js","webpack:///./node_modules/unist-util-visit/index.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/vfile-message/index.js","webpack:///./node_modules/vfile/index.js","webpack:///./node_modules/vfile/lib/core.js","webpack:///./node_modules/vfile/lib/index.js","webpack:///./node_modules/vfile/lib/minpath.browser.js","webpack:///./node_modules/vfile/lib/minproc.browser.js","webpack:///./node_modules/vm-browserify/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/classnames/index.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@apollo/client/core/networkStatus.js","webpack:///./node_modules/@apollo/client/errors/index.js","webpack:///./node_modules/@apollo/client/react/context/ApolloContext.js","webpack:///./node_modules/@apollo/client/react/hooks/useApolloClient.js","webpack:///./node_modules/@apollo/client/react/hooks/useLazyQuery.js","webpack:///./node_modules/@apollo/client/react/hooks/useMutation.js","webpack:///./node_modules/@apollo/client/react/hooks/useSyncExternalStore.js","webpack:///./node_modules/@apollo/client/react/hooks/internal/wrapHook.js","webpack:///./node_modules/@apollo/client/react/hooks/useQuery.js","webpack:///./node_modules/@apollo/client/react/parser/index.js","webpack:///./node_modules/@apollo/client/utilities/caching/caches.js","webpack:///./node_modules/@apollo/client/utilities/caching/getMemoryInternals.js","webpack:///./node_modules/@apollo/client/utilities/caching/sizes.js","webpack:///./node_modules/@apollo/client/utilities/common/arrays.js","webpack:///./node_modules/@apollo/client/utilities/common/canUse.js","webpack:///./node_modules/@apollo/client/utilities/common/compact.js","webpack:///./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack:///./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack:///./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack:///./node_modules/@apollo/client/utilities/common/objects.js","webpack:///./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack:///./node_modules/ts-invariant/lib/invariant.js","webpack:///./node_modules/@apollo/client/utilities/globals/maybe.js","webpack:///./node_modules/@apollo/client/utilities/globals/global.js","webpack:///./node_modules/@apollo/client/utilities/globals/invariantWrappers.js","webpack:///./node_modules/@apollo/client/utilities/globals/index.js","webpack:///./node_modules/@apollo/client/version.js","webpack:///./node_modules/@wry/caches/lib/strong.js","webpack:///./node_modules/@wry/caches/lib/weak.js","webpack:///./node_modules/@wry/equality/lib/index.js","webpack:///./node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","webpack:///./node_modules/graphql/jsutils/defineInspect.mjs","webpack:///./node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/graphql/language/ast.mjs","webpack:///./node_modules/graphql/language/blockString.mjs","webpack:///./node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack:///./node_modules/tslib/tslib.es6.mjs","webpack:///./node_modules/usehooks-ts/dist/index.mjs","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/load script","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack:///./node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js","webpack:///./node_modules/@acin/search/es/index.js","webpack:///./src/components/MainNav/components/MainNav.styled.tsx","webpack:///./src/components/MainNav/components/DownloadsList.styled.tsx","webpack:///./src/components/MainNav/components/DownloadsList.tsx","webpack:///./src/components/UserPreferencesModal/components/UserPreferencesModal.styled.tsx","webpack:///./src/components/UserPreferencesModal/components/Thumbnail.styled.tsx","webpack:///./src/components/UserPreferencesModal/components/Thumbnail.tsx","webpack:///./src/components/UserPreferencesModal/graphql/mutations/setUiTheme.generated.tsx","webpack:///./src/components/MainNav/graphql/fragments/user.generated.tsx","webpack:///./src/components/MainNav/graphql/queries/me.generated.tsx","webpack:///./src/components/UserPreferencesModal/components/UserPreferencesModal.tsx","webpack:///./src/components/UserPreferencesModal/graphql/mutations/notificationCategoryFieldsFragment.generated.tsx","webpack:///./src/components/UserPreferencesModal/graphql/mutations/getEmailNotificationSettings.generated.tsx","webpack:///./src/components/UserPreferencesModal/graphql/mutations/updateEmailNotificationSettings.generated.tsx","webpack:///./src/components/UserPreferencesModal/components/EmailPreferencesModal.tsx","webpack:///./src/pages/Search/helpers/onNavigate.ts","webpack:///./src/components/MainNav/graphql/queries/getReportCategories.generated.tsx","webpack:///./src/components/MainNav/components/MainNav.tsx","webpack:///./src/components/MainNav/components/utils.tsx","webpack:///./src/routes/PrivateRoute.tsx","webpack:///./src/routes/ScrollToTop.tsx","webpack:///./src/routes/PrivateLayout.tsx","webpack:///./src/routes/Login.tsx","webpack:///./src/routes/Auth.tsx","webpack:///./src/routes/Router.tsx","webpack:///./src/App.tsx","webpack:///./src/serviceWorker.ts","webpack:///./node_modules/zen-observable-ts/module.js","webpack:///./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack:///./node_modules/@apollo/client/utilities/common/canonicalStringify.js","webpack:///./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack:///./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack:///./node_modules/@apollo/client/link/core/ApolloLink.js","webpack:///./node_modules/@apollo/client/link/utils/createOperation.js","webpack:///./node_modules/@apollo/client/link/utils/transformOperation.js","webpack:///./node_modules/@apollo/client/link/utils/validateOperation.js","webpack:///./node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/@apollo/client/utilities/graphql/directives.js","webpack:///./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack:///./node_modules/@apollo/client/link/http/iterators/nodeStream.js","webpack:///./node_modules/@apollo/client/link/http/iterators/reader.js","webpack:///./node_modules/@apollo/client/link/http/responseIterator.js","webpack:///./node_modules/@apollo/client/link/http/iterators/async.js","webpack:///./node_modules/@apollo/client/link/http/iterators/promise.js","webpack:///./node_modules/@apollo/client/link/utils/throwServerError.js","webpack:///./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack:///./node_modules/@apollo/client/utilities/common/incrementalResult.js","webpack:///./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack:///./node_modules/@apollo/client/link/http/checkFetcher.js","webpack:///./node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@apollo/client/utilities/graphql/print.js","webpack:///./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack:///./node_modules/@apollo/client/link/utils/fromError.js","webpack:///./node_modules/@apollo/client/utilities/graphql/transform.js","webpack:///./node_modules/@apollo/client/link/http/createHttpLink.js","webpack:///./node_modules/@apollo/client/link/http/selectURI.js","webpack:///./node_modules/@apollo/client/link/utils/filterOperationVariables.js","webpack:///./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack:///./node_modules/@apollo/client/link/http/HttpLink.js","webpack:///./node_modules/optimism/node_modules/@wry/trie/lib/index.js","webpack:///./node_modules/@wry/context/lib/slot.js","webpack:///./node_modules/@wry/context/lib/index.js","webpack:///./node_modules/optimism/lib/context.js","webpack:///./node_modules/optimism/lib/helpers.js","webpack:///./node_modules/optimism/lib/entry.js","webpack:///./node_modules/optimism/lib/dep.js","webpack:///./node_modules/optimism/lib/index.js","webpack:///./node_modules/@apollo/client/cache/core/cache.js","webpack:///./node_modules/@apollo/client/cache/core/types/common.js","webpack:///./node_modules/@wry/trie/lib/index.js","webpack:///./node_modules/@apollo/client/utilities/graphql/DocumentTransform.js","webpack:///./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack:///./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack:///./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack:///./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack:///./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack:///./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack:///./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack:///./node_modules/@apollo/client/cache/inmemory/policies.js","webpack:///./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack:///./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack:///./node_modules/@apollo/client/link/core/execute.js","webpack:///./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack:///./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack:///./node_modules/@apollo/client/utilities/observables/iteration.js","webpack:///./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack:///./node_modules/@apollo/client/utilities/observables/Concast.js","webpack:///./node_modules/@apollo/client/core/equalByQuery.js","webpack:///./node_modules/@apollo/client/core/ObservableQuery.js","webpack:///./node_modules/graphql/language/predicates.mjs","webpack:///./node_modules/@apollo/client/core/LocalState.js","webpack:///./node_modules/@apollo/client/core/QueryInfo.js","webpack:///./node_modules/@apollo/client/core/QueryManager.js","webpack:///./node_modules/@apollo/client/core/ApolloClient.js","webpack:///./node_modules/@apollo/client/link/error/index.js","webpack:///./node_modules/@apollo/client/link/context/index.js","webpack:///./src/config/auth0.ts","webpack:///./node_modules/@datadog/browser-core/esm/tools/display.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/monitor.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/timer.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/mergeInto.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/observable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/addEventListener.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/encoder.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/user/user.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/eventBridge.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/cookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/matchOption.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/configuration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/performanceCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/error.types.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/valueHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewContexts.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","webpack:///./node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","webpack:///./node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/polyfills.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestTiming.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","webpack:///./node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/batch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/httpRequest.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/flushController.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","webpack:///./node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/replayStats.js","webpack:///./node_modules/@datadog/browser-rum/esm/constants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/privacy.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMove.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMouseInteraction.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackScroll.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewportResize.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMediaInteraction.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackStyleSheet.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFocus.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFrustration.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewEnd.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackInput.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMutation.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/record.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/startFullSnapshots.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/record/recordIds.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","webpack:///./node_modules/@datadog/browser-rum/esm/entries/main.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","webpack:///./node_modules/@datadog/browser-rum/esm/boot/startRecording.js","webpack:///./node_modules/@datadog/browser-rum/esm/domain/startRecordBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","webpack:///./node_modules/@datadog/browser-core/esm/boot/init.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","webpack:///./node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","webpack:///./src/helpers/pendo.ts","webpack:///./src/Auth/index.tsx","webpack:///./src/index.tsx","webpack:///./src/datadog/index.ts","webpack:///./src/config/apollo.ts"],"sourcesContent":["import { snakeCase } from 'lodash';\n\nexport interface AnalyticsPayload {\n [key: string]: string;\n}\n\nclass Analytics {\n private urlMap: Map;\n\n constructor() {\n this.urlMap = new Map();\n }\n\n setUrl(route?: string, title?: string, params?: object) {\n let comps: string[] = [];\n\n if (route) {\n comps = [...comps, route];\n }\n\n if (title) {\n comps = [...comps, snakeCase(title)];\n }\n\n this.urlMap.set(window.location.pathname, this.getObject(comps.join('/'), params));\n }\n\n getObject(page: string, params = {}): object {\n return { ...params, page };\n }\n\n getAnalyticsUrl() {\n return this.urlMap.get(window.location.pathname) || {};\n }\n}\n\nexport const analytics = new Analytics();\n","import { USER_ROLES } from '@acin/user-accounts';\nimport { MainNavMenuItem } from '@acin/ui-core';\nimport { SecondLevelNavItem } from '@acin/ui-core/types/src/components/MainNavHorizontal/components/MainNavHorizontal';\n\nexport interface AppMenuItem extends MainNavMenuItem {\n permissions?: string[];\n}\n\nexport const menu = (accountCode: string, reportCategories?: SecondLevelNavItem[]): AppMenuItem[] => {\n return [\n {\n id: 'controls',\n permissions: [USER_ROLES.ACIN_USER, USER_ROLES.CUSTOMER_USER, USER_ROLES.DATA_USER, USER_ROLES.SUPER_ADMIN],\n label: `${accountCode.slice(-4)} Controls`,\n },\n {\n id: 'controlQuality',\n permissions: [USER_ROLES.ACIN_USER, USER_ROLES.CUSTOMER_USER, USER_ROLES.DATA_USER, USER_ROLES.SUPER_ADMIN],\n label: `${accountCode.slice(-4)} Control Quality`,\n },\n {\n id: 'acinIndexControls',\n permissions: [USER_ROLES.ACIN_USER, USER_ROLES.CUSTOMER_USER, USER_ROLES.DATA_USER, USER_ROLES.SUPER_ADMIN],\n label: 'Acin Index Controls',\n },\n {\n id: 'calibrate',\n permissions: [USER_ROLES.ACIN_USER, USER_ROLES.CUSTOMER_USER, USER_ROLES.DATA_USER, USER_ROLES.SUPER_ADMIN],\n label: 'Calibrate to Industry',\n },\n {\n id: 'riskIntelligenceHub',\n permissions: [\n USER_ROLES.ACIN_USER,\n USER_ROLES.CUSTOMER_USER,\n USER_ROLES.DATA_USER,\n USER_ROLES.SUPER_ADMIN,\n USER_ROLES.RISK_INTEL_USER,\n ],\n label: 'Risk Intelligence',\n },\n {\n id: 'connectData',\n permissions: [USER_ROLES.SUPER_ADMIN, USER_ROLES.DATA_USER],\n label: 'Connect Data',\n },\n {\n id: 'manageAccounts',\n label: 'Manage Accounts',\n permissions: [USER_ROLES.SUPER_ADMIN],\n },\n ];\n};\n\nexport const getMenuItems = (\n accountCode: string,\n permissions?: string[],\n reportCategories?: SecondLevelNavItem[],\n): MainNavMenuItem[] => {\n if (!permissions) return [];\n\n const items = menu(accountCode, reportCategories).filter((item) =>\n item.permissions?.some((itemPermissions) => permissions.includes(itemPermissions)),\n );\n\n return items.map((item) => ({ id: item.id, label: item.label, secondLevelNavigation: item.secondLevelNavigation }));\n};\n\nexport const qualityToolsNavigationMap = new Map([\n ['check-control-quality', '/control-quality/check-control-quality'],\n ['rewrite-control', '/control-quality/rewrite-control'],\n ['merge-controls', '/control-quality/merge-controls'],\n ['process-to-control', '/control-quality/process-to-control'],\n ['procedure-to-control', '/control-quality/procedure-to-control'],\n ['policy-to-control', '/control-quality/policy-to-control'],\n ['control-to-key-control-indicator', '/control-quality/control-to-key-control-indicator'],\n ['control-to-testing-scripts', '/control-quality/control-to-testing-scripts'],\n]);\n\nconst routingMap = new Map([\n ['dashboard', '/'],\n ['calibrate', '/calibrate'],\n ['controls', '/controls'],\n ['controlQuality', '/control-quality'],\n ['acinIndexControls', '/acin-index-controls'],\n ['riskIntelligenceHub', '/risk-intelligence/hub'],\n ['controlGaps', '/control-gaps'],\n\n ...qualityToolsNavigationMap,\n\n ['interimDashboard', '/interim-dashboard'],\n ['search', '/search'],\n ['riskIntelligence', '/risk-intelligence'],\n ['riskIntelligenceAdmin', '/risk-intelligence/admin'],\n ['explorer', '/explorer'],\n ['connectData', '/data-management/maintain-data'],\n ['manageAccounts', '/data-management/manage-accounts'],\n ['documents', '/documents'],\n ['notifications', '/notifications'],\n ['settings', '/settings'],\n ['upload', '/upload'],\n\n // Calibrate\n ['reportBuilder', '/calibrate/report-builder'],\n ['reportBuilderControls', '/calibrate/report-builder-controls'],\n ['reportBuilderAcinControls', '/calibrate/report-builder-acin-controls'],\n ['reportBuilderControlQuality', '/calibrate/report-builder-control-quality'],\n ['reportBuilderNetworkControls', '/calibrate/report-builder-network-controls'],\n]);\n\n// Reverse map for looking up the id from the path\nexport const reverseRoutingMap = new Map([...routingMap].map((item) => [item[1], item[0]]));\n\nexport const getPathById = (id: string) => routingMap.get(id);\nexport const getIdByPath = (path: string) => reverseRoutingMap.get(path);\n","export type Maybe = T | null;\nexport type Exact = { [K in keyof T]: T[K] };\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\nexport type FieldWrapper = T;\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n};\n\nexport enum IAdpFileStage {\n Upload = 'UPLOAD',\n Scoping = 'SCOPING',\n Pipeline = 'PIPELINE',\n Matching = 'MATCHING',\n Publish = 'PUBLISH',\n Rematching = 'REMATCHING',\n Republish = 'REPUBLISH'\n}\n\nexport enum IAdpFileStatus {\n ToConnect = 'TO_CONNECT',\n InProgress = 'IN_PROGRESS',\n Approved = 'APPROVED',\n Completed = 'COMPLETED',\n Failed = 'FAILED',\n DataInvalid = 'DATA_INVALID',\n Rejected = 'REJECTED'\n}\n\nexport type IAccount = {\n __typename?: 'Account';\n id: FieldWrapper;\n name: FieldWrapper;\n code?: Maybe>;\n users: Array>>;\n status?: Maybe>;\n permittedRiskInventories: Array>>;\n availableMatchers: Array>;\n availableApprovers: Array>;\n defaultMatcher?: Maybe>;\n defaultApprover?: Maybe>;\n dataMatcher: Array>;\n riskInventories: Array>;\n};\n\nexport type IAccountRiskInventory = {\n __typename?: 'AccountRiskInventory';\n id: FieldWrapper;\n name: FieldWrapper;\n description?: Maybe>;\n sourceId: FieldWrapper;\n accounts: Array>>;\n};\n\nexport type IAcinControl = {\n __typename?: 'AcinControl';\n id: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n objectives: FieldWrapper;\n review?: Maybe>;\n identify?: Maybe>;\n actions?: Maybe>;\n controlSource: FieldWrapper;\n controlType: FieldWrapper;\n controlOwner: FieldWrapper;\n controlFrequency: FieldWrapper;\n controlCode: FieldWrapper;\n relatedRegulations: Array>;\n relatedRiskInventories: Array>;\n totalRelatedRiskInventories: FieldWrapper;\n totalRelatedRegulations: FieldWrapper;\n updatedAt: FieldWrapper;\n riskInventory?: Maybe>;\n reasonCode?: Maybe>;\n automation?: Maybe>;\n keywords: Array>;\n products: Array>;\n relatedRisks: Array>;\n nss?: Maybe>;\n};\n\nexport type IAcinControlsByRisk = {\n __typename?: 'AcinControlsByRisk';\n id: FieldWrapper;\n keyStats?: Maybe>>;\n availableFilters?: Maybe>;\n filters: FieldWrapper;\n risks?: Maybe>;\n};\n\n\nexport type IAcinControlsByRiskRisksArgs = {\n filters?: Maybe;\n};\n\nexport type IAcinRisk = {\n __typename?: 'AcinRisk';\n id: FieldWrapper;\n title: FieldWrapper;\n riskCode: FieldWrapper;\n riskSource: FieldWrapper;\n description?: Maybe>;\n riskGroup: FieldWrapper;\n updatedAt: FieldWrapper;\n controlCount: FieldWrapper;\n relatedReasonCodes: Array>;\n relatedRiskIntelligence: Array>;\n relatedRegulations: Array>;\n relatedControls: Array>;\n relatedRiskInventories: Array>;\n};\n\nexport type IAcinRiskGroup = {\n __typename?: 'AcinRiskGroup';\n id: FieldWrapper;\n name: FieldWrapper;\n risks: Array>;\n};\n\nexport type IAcinRiskPage = {\n __typename?: 'AcinRiskPage';\n sortInfo: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IActiveChartItem = {\n label?: Maybe;\n key?: Maybe;\n};\n\nexport type IAddAccountInput = {\n name: Scalars['String'];\n code?: Maybe;\n};\n\nexport type IAddUserInput = {\n name: Scalars['String'];\n email: Scalars['String'];\n accountId: Scalars['ID'];\n};\n\nexport type IAlertMessage = {\n __typename?: 'AlertMessage';\n title: FieldWrapper;\n message?: Maybe>;\n type: FieldWrapper;\n};\n\nexport enum IAlertMessageType {\n Info = 'INFO',\n Warning = 'WARNING',\n Success = 'SUCCESS',\n Danger = 'DANGER'\n}\n\nexport type IAllReportsInput = {\n filters?: Maybe;\n sorting?: Maybe;\n pagination?: Maybe;\n searchTerm?: Maybe;\n pageCode?: Maybe;\n};\n\nexport type IAllReportsPage = {\n __typename?: 'AllReportsPage';\n nodes: Array>;\n pagination?: Maybe>;\n activeSorting?: Maybe>;\n unfilteredTotal?: Maybe>;\n};\n\nexport type IAllReportsQuickFilter = {\n __typename?: 'AllReportsQuickFilter';\n reportType?: Maybe>;\n filter?: Maybe>;\n};\n\nexport type IAllReportsQuickFilterPage = {\n __typename?: 'AllReportsQuickFilterPage';\n filters: Array>;\n};\n\nexport enum IApprovalWorkflow {\n Dashboard = 'DASHBOARD',\n SubmitReview = 'SUBMIT_REVIEW',\n Unassigned = 'UNASSIGNED'\n}\n\nexport type IApproveMatchAcinControlMatchInput = {\n acinControlId?: Maybe;\n internalComment?: Maybe;\n externalComment?: Maybe;\n status: IDataMatchingMatchStatus;\n};\n\nexport type IApproveRejectMatchAcinControlInput = {\n dataMatcherId: Scalars['ID'];\n dataMatcherClientControlId: Scalars['ID'];\n matches: Array;\n};\n\nexport type IApproveRejectMissingAcinControlInput = {\n dataMatcherId: Scalars['ID'];\n acinControlId: Scalars['ID'];\n internalComment?: Maybe;\n externalComment?: Maybe;\n status: IDataMatchingMatchStatus;\n};\n\nexport type IAvailableChart = {\n __typename?: 'AvailableChart';\n id: FieldWrapper;\n type: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IAvailableCompletenessReport = {\n __typename?: 'AvailableCompletenessReport';\n id: FieldWrapper;\n name: FieldWrapper;\n count: FieldWrapper;\n};\n\nexport type IBenchmarkOverview = {\n __typename?: 'BenchmarkOverview';\n networkAlignmentScore: FieldWrapper;\n networkAlignmentMaxScore: FieldWrapper;\n charts: Array>;\n};\n\nexport type IBubbleChart = {\n __typename?: 'BubbleChart';\n colorPaletteName: FieldWrapper;\n series: Array>;\n keys: Array>;\n};\n\nexport type IBubbleChartSeries = {\n __typename?: 'BubbleChartSeries';\n itemId?: Maybe>;\n label: FieldWrapper;\n values: Array>;\n type?: Maybe>;\n};\n\nexport enum IBubbleChartShape {\n Circle = 'CIRCLE',\n Diamond = 'DIAMOND'\n}\n\nexport type IBubbleChartValue = {\n __typename?: 'BubbleChartValue';\n shape: FieldWrapper;\n colorPalette?: Maybe>;\n value: FieldWrapper;\n size?: Maybe>;\n label: FieldWrapper;\n description?: Maybe>>;\n};\n\nexport type IBulkApproveInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n clusterIds: Array;\n};\n\nexport type IBusinessLine = {\n __typename?: 'BusinessLine';\n id: FieldWrapper;\n title: FieldWrapper;\n};\n\nexport enum IChart_Value_Format {\n Months = 'MONTHS',\n Number = 'NUMBER'\n}\n\nexport type ICalibrateDownloadFile = {\n __typename?: 'CalibrateDownloadFile';\n id: FieldWrapper;\n filename: FieldWrapper;\n type: FieldWrapper;\n status: FieldWrapper;\n progressPercentage?: Maybe>;\n fileURL?: Maybe>;\n};\n\nexport enum ICalibrateDownloadFileStatus {\n Progress = 'PROGRESS',\n Failure = 'FAILURE',\n Processed = 'PROCESSED',\n Downloaded = 'DOWNLOADED'\n}\n\nexport type ICalibrateReportInput = {\n title?: Maybe;\n variant: ITableVariant;\n configuration?: Maybe>;\n filters?: Maybe;\n};\n\nexport type IChartAsTableCell = {\n __typename?: 'ChartAsTableCell';\n id: FieldWrapper;\n key: FieldWrapper;\n text?: Maybe>;\n};\n\nexport type IChartAsTableCellGroup = {\n __typename?: 'ChartAsTableCellGroup';\n name: FieldWrapper;\n color: FieldWrapper;\n cells: Array>;\n};\n\nexport type IChartAsTableHeader = {\n __typename?: 'ChartAsTableHeader';\n cells: Array>;\n groups: Array>;\n};\n\nexport type IChartAsTableHeaderCell = {\n __typename?: 'ChartAsTableHeaderCell';\n id?: Maybe>;\n key: FieldWrapper;\n color?: Maybe>;\n text?: Maybe>;\n};\n\nexport type IChartAsTableInput = {\n configuration?: Maybe>;\n filters?: Maybe;\n sort?: Maybe;\n breadcrumb?: Maybe>;\n variant?: Maybe;\n};\n\nexport type IChartAsTableResult = {\n __typename?: 'ChartAsTableResult';\n title?: Maybe>;\n header?: Maybe>;\n rows: Array>;\n sort: FieldWrapper;\n breadcrumb?: Maybe>>;\n levels?: Maybe>;\n pagination?: Maybe>;\n};\n\nexport type IChartAsTableRow = {\n __typename?: 'ChartAsTableRow';\n id: FieldWrapper;\n cells: Array>;\n};\n\nexport type IChartBreadcrumb = {\n __typename?: 'ChartBreadcrumb';\n id: FieldWrapper;\n label: FieldWrapper;\n configuration: Array>;\n filters?: Maybe>>;\n};\n\nexport type IChartBreadcrumbInput = {\n id: Scalars['String'];\n label: Scalars['String'];\n configuration: Array;\n filters?: Maybe>;\n};\n\nexport type IChartData = ITableRefresherBarChart;\n\nexport type IChartFiltersResult = {\n __typename?: 'ChartFiltersResult';\n levels?: Maybe>;\n};\n\nexport type IChartInput = {\n configuration?: Maybe>;\n filters?: Maybe;\n breadcrumb?: Maybe>;\n variant?: Maybe;\n};\n\nexport type IChartKey = {\n __typename?: 'ChartKey';\n label: FieldWrapper;\n key?: Maybe>;\n description?: Maybe>;\n count?: Maybe>;\n colorPalette?: Maybe>;\n};\n\nexport type IChartResult = {\n __typename?: 'ChartResult';\n title?: Maybe>;\n charts?: Maybe>>;\n breadcrumb?: Maybe>>;\n pagination?: Maybe>;\n};\n\nexport type IChartSummary = {\n __typename?: 'ChartSummary';\n data: Array>;\n};\n\nexport type IChartSummaryItem = {\n __typename?: 'ChartSummaryItem';\n value: FieldWrapper;\n label: FieldWrapper;\n colorPalette: FieldWrapper;\n};\n\nexport type IChartTableCategory = {\n __typename?: 'ChartTableCategory';\n id: FieldWrapper;\n label: FieldWrapper;\n colorPalette: FieldWrapper;\n};\n\nexport type IChartTableInstance = {\n __typename?: 'ChartTableInstance';\n category?: Maybe>;\n value: FieldWrapper;\n info?: Maybe>;\n id: FieldWrapper;\n};\n\nexport type IChartTableResult = {\n __typename?: 'ChartTableResult';\n colorPaletteName?: Maybe>;\n categories: Array>;\n nameHeader: FieldWrapper;\n valueHeader: FieldWrapper;\n rows: Array>;\n breadcrumb?: Maybe>>;\n};\n\nexport type IChartTableRow = {\n __typename?: 'ChartTableRow';\n id: FieldWrapper;\n isAcin?: Maybe>;\n label: FieldWrapper;\n info?: Maybe>;\n instances: Array>;\n};\n\nexport type IClientControl = {\n __typename?: 'ClientControl';\n id: FieldWrapper;\n title: FieldWrapper;\n description?: Maybe>;\n objectives?: Maybe>;\n controlCode?: Maybe>;\n controlSource?: Maybe>;\n controlType?: Maybe>;\n controlOwner?: Maybe>;\n controlFrequency?: Maybe>;\n controlId?: Maybe>;\n updatedAt?: Maybe>;\n riskInventory?: Maybe>;\n reasonCode?: Maybe>;\n relatedRiskInventories: Array>;\n totalRelatedRiskInventories: FieldWrapper;\n automation?: Maybe>;\n keywords: Array>;\n controlQualityScore?: Maybe>;\n relatedRisks: Array>;\n relatedBusinessLines: Array>;\n};\n\nexport type IClientControlData = {\n __typename?: 'ClientControlData';\n nodes: Array>;\n};\n\nexport type IClientControlsByRisk = {\n __typename?: 'ClientControlsByRisk';\n id: FieldWrapper;\n keyStats?: Maybe>>;\n availableFilters?: Maybe>;\n filters: FieldWrapper;\n risks?: Maybe>;\n};\n\n\nexport type IClientControlsByRiskRisksArgs = {\n filters?: Maybe;\n};\n\nexport type IClientRisk = {\n __typename?: 'ClientRisk';\n id: FieldWrapper;\n title: FieldWrapper;\n description?: Maybe>;\n riskCode?: Maybe>;\n riskLevel?: Maybe>;\n riskReason?: Maybe>;\n riskSource?: Maybe>;\n controlCount: FieldWrapper;\n updatedAt?: Maybe>;\n relatedReasonCodes: Array>;\n relatedRiskIntelligence: Array>;\n relatedControls: Array>;\n relatedBusinessLines: Array>;\n};\n\nexport type IClientRiskPage = {\n __typename?: 'ClientRiskPage';\n sortInfo: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IColorPalette = {\n __typename?: 'ColorPalette';\n paletteIndex?: Maybe>;\n shade?: Maybe>;\n};\n\nexport enum IColorPaletteName {\n DataVis = 'DATA_VIS',\n DataVisWithMeaning = 'DATA_VIS_WITH_MEANING'\n}\n\nexport type ICompareControl = ICompareControlOneToOne | ICompareControlOneToMany | ICompareControlManyToOne | ICompareEmpty;\n\nexport type ICompareControlManyToOne = {\n __typename?: 'CompareControlManyToOne';\n id: FieldWrapper;\n controlsA?: Maybe>>;\n controlB?: Maybe>;\n message?: Maybe>;\n};\n\nexport type ICompareControlOneToMany = {\n __typename?: 'CompareControlOneToMany';\n id: FieldWrapper;\n controlA?: Maybe>;\n controlsB?: Maybe>>;\n message?: Maybe>;\n};\n\nexport type ICompareControlOneToOne = {\n __typename?: 'CompareControlOneToOne';\n id: FieldWrapper;\n controlA?: Maybe>;\n controlB?: Maybe>;\n highlightedFields: Array>;\n message?: Maybe>;\n};\n\nexport type ICompareControlPage = {\n __typename?: 'CompareControlPage';\n availableRiskInventories?: Maybe>>;\n activeRiskInventory?: Maybe>;\n compare?: Maybe>;\n relationshipInsightContext?: Maybe>;\n};\n\nexport type ICompareEmpty = {\n __typename?: 'CompareEmpty';\n id: FieldWrapper;\n message?: Maybe>;\n};\n\nexport type ICompareRisk = ICompareRiskOneToMany | ICompareRiskManyToOne | ICompareEmpty;\n\nexport type ICompareRiskManyToOne = {\n __typename?: 'CompareRiskManyToOne';\n id: FieldWrapper;\n risksA?: Maybe>>;\n riskB?: Maybe>;\n message?: Maybe>;\n};\n\nexport type ICompareRiskOneToMany = {\n __typename?: 'CompareRiskOneToMany';\n id: FieldWrapper;\n riskA?: Maybe>;\n risksB?: Maybe>>;\n message?: Maybe>;\n};\n\nexport type ICompletenessOverTimeCategory = {\n __typename?: 'CompletenessOverTimeCategory';\n id: FieldWrapper;\n count: FieldWrapper;\n colorPalette: FieldWrapper;\n label: FieldWrapper;\n percentage: FieldWrapper;\n};\n\nexport type ICompletenessOverTimeChartData = {\n __typename?: 'CompletenessOverTimeChartData';\n id: FieldWrapper;\n colorLibrary: FieldWrapper;\n date: FieldWrapper;\n total: FieldWrapper;\n categories: Array>;\n};\n\nexport type ICompletenessOverTimeComparison = {\n __typename?: 'CompletenessOverTimeComparison';\n id: FieldWrapper;\n count: FieldWrapper;\n colorPalette: FieldWrapper;\n label: FieldWrapper;\n percentage: FieldWrapper;\n trend?: Maybe>;\n comparisonCount?: Maybe>;\n comparisonPercentage?: Maybe>;\n};\n\nexport type ICompletenessOverTimeComparisonTable = {\n __typename?: 'CompletenessOverTimeComparisonTable';\n totalCount: FieldWrapper;\n totalPercentage: FieldWrapper;\n categories: Array>>;\n};\n\nexport type ICompletenessOverTimeInput = {\n filters?: Maybe;\n};\n\nexport type ICompletenessOverTimeReport = {\n __typename?: 'CompletenessOverTimeReport';\n id: FieldWrapper;\n};\n\nexport type ICompletenessOverTimeReportResult = {\n __typename?: 'CompletenessOverTimeReportResult';\n chart: Array>;\n table: FieldWrapper;\n availableFilters?: Maybe>;\n};\n\nexport type ICompletenessReport = {\n __typename?: 'CompletenessReport';\n id: FieldWrapper;\n configurationTitle?: Maybe>;\n availableConfiguration?: Maybe>;\n useNewTemplate?: Maybe>;\n};\n\nexport type ICompletenessReportControlListPage = {\n __typename?: 'CompletenessReportControlListPage';\n title: FieldWrapper;\n subTitle: FieldWrapper;\n groups: Array>;\n};\n\nexport type ICompletenessReportControlListPageGroup = {\n __typename?: 'CompletenessReportControlListPageGroup';\n id: FieldWrapper;\n title: FieldWrapper;\n subTitle?: Maybe>;\n count: FieldWrapper;\n subGroups: Array>;\n};\n\nexport type ICompletenessReportControlListPageSubGroup = {\n __typename?: 'CompletenessReportControlListPageSubGroup';\n id: FieldWrapper;\n key?: Maybe>;\n title: FieldWrapper;\n description: FieldWrapper;\n count: FieldWrapper;\n colorPalette?: Maybe>;\n data: Array>;\n};\n\nexport type ICompletenessReportResult = {\n __typename?: 'CompletenessReportResult';\n id: FieldWrapper;\n availableFilters?: Maybe>;\n tableChart?: Maybe>;\n controlList?: Maybe>;\n availableReports?: Maybe>>>;\n preventExport?: Maybe>;\n filters: FieldWrapper;\n};\n\nexport type ICompletenessReportResultTableChart = {\n __typename?: 'CompletenessReportResultTableChart';\n chartTitle: FieldWrapper;\n chart: FieldWrapper;\n};\n\nexport type IConfiguratorOptionsInput = {\n filters?: Maybe>;\n};\n\nexport type IConfiguratorOptionsLabels = {\n __typename?: 'ConfiguratorOptionsLabels';\n groupKey: FieldWrapper;\n label: FieldWrapper;\n};\n\nexport type IConfiguratorReportInput = {\n name: Scalars['String'];\n description: Scalars['String'];\n shareWithOrganisation: Scalars['Boolean'];\n configuration?: Maybe>;\n filters?: Maybe;\n table?: Maybe;\n};\n\nexport type IConfiguratorReportResult = {\n __typename?: 'ConfiguratorReportResult';\n id: FieldWrapper;\n name: FieldWrapper;\n description?: Maybe>;\n shareWithOrganisation?: Maybe>;\n configuration?: Maybe>>;\n filters?: Maybe>;\n table?: Maybe>;\n configuratorLabels: Array>;\n author?: Maybe>;\n quickFilters: Array>;\n pageCode?: Maybe>;\n};\n\nexport type IConfiguratorReportTableOptions = {\n __typename?: 'ConfiguratorReportTableOptions';\n variant?: Maybe>;\n};\n\nexport type IConfiguratorReportTableOptionsInput = {\n variant?: Maybe;\n};\n\nexport type IConnectionUser = {\n __typename?: 'ConnectionUser';\n id: FieldWrapper;\n name: FieldWrapper;\n email?: Maybe>;\n};\n\nexport type IConnectionUsersInput = {\n filters?: Maybe;\n};\n\nexport type IConnectionUsersResponse = {\n __typename?: 'ConnectionUsersResponse';\n users: Array>;\n};\n\nexport type IControl = IAcinControl | IClientControl;\n\nexport type IControlAlignmentOverviewChart = {\n __typename?: 'ControlAlignmentOverviewChart';\n id: FieldWrapper;\n name: FieldWrapper;\n description: FieldWrapper;\n requiresClarificationKey: FieldWrapper;\n data: Array>;\n info?: Maybe>;\n};\n\nexport type IControlAlignmentOverviewChartCollection = {\n __typename?: 'ControlAlignmentOverviewChartCollection';\n name?: Maybe>;\n totalControls: FieldWrapper;\n items: Array>;\n};\n\nexport type IControlAlignmentOverviewChartInfo = {\n __typename?: 'ControlAlignmentOverviewChartInfo';\n riskInventoryId?: Maybe>;\n};\n\nexport type IControlAlignmentOverviewChartValue = {\n __typename?: 'ControlAlignmentOverviewChartValue';\n name: FieldWrapper;\n description: FieldWrapper;\n total: FieldWrapper;\n colorPalette: FieldWrapper;\n collection: Array>;\n};\n\nexport type IControlComparisonDataInput = {\n id: Scalars['String'];\n relationshipType: Scalars['String'];\n relationshipInstanceId: Scalars['String'];\n};\n\nexport type IControlHistory = {\n __typename?: 'ControlHistory';\n nodes: Array>;\n activeSorting?: Maybe>;\n pagination?: Maybe>;\n};\n\nexport type IControlHistoryAttributeChange = {\n __typename?: 'ControlHistoryAttributeChange';\n isLatest?: Maybe>;\n value?: Maybe>;\n};\n\nexport type IControlHistoryInput = {\n id: Scalars['ID'];\n pagination?: Maybe;\n sorting?: Maybe;\n};\n\nexport type IControlHistoryTable = {\n __typename?: 'ControlHistoryTable';\n id?: Maybe>;\n date?: Maybe>;\n riskInventoryName?: Maybe>;\n attributeChange?: Maybe>;\n};\n\nexport type IControlInspectorView = {\n __typename?: 'ControlInspectorView';\n id: FieldWrapper;\n compare?: Maybe>;\n};\n\nexport type IControlInstanceOptionsInput = {\n id: Scalars['String'];\n insightBy: IFilterInputGroup;\n};\n\nexport type IControlListPageGroupings = ICompletenessReportControlListPageGroup | ICompletenessReportControlListPageSubGroup;\n\nexport enum IControlQualityScore {\n Unclear = 'UNCLEAR',\n Clear = 'CLEAR'\n}\n\nexport type ICreateDataMatcherInput = {\n accountId: Scalars['ID'];\n fileId: Scalars['ID'];\n riskInventoryId: Scalars['ID'];\n matcherId: Scalars['ID'];\n approverId: Scalars['ID'];\n};\n\nexport type ICreateReportInput = {\n name: Scalars['String'];\n description: Scalars['String'];\n shareWithOrganisation: Scalars['Boolean'];\n configuration: IFilterInput;\n filters?: Maybe;\n};\n\nexport type IDashboardControlAlignment = {\n __typename?: 'DashboardControlAlignment';\n title: FieldWrapper;\n subTitle: FieldWrapper;\n chart?: Maybe>;\n};\n\nexport type IDashboardControlsByRiskInput = {\n filters?: Maybe;\n};\n\nexport enum IDashboardItemType {\n AcinControl = 'ACIN_CONTROL',\n ClientControl = 'CLIENT_CONTROL',\n AcinRisk = 'ACIN_RISK',\n ClientRisk = 'CLIENT_RISK'\n}\n\nexport type IDashboardNetworkAlignment = {\n __typename?: 'DashboardNetworkAlignment';\n title: FieldWrapper;\n chart?: Maybe>;\n};\n\nexport type IDashboardReport = {\n __typename?: 'DashboardReport';\n id: FieldWrapper;\n code: FieldWrapper;\n};\n\nexport type IDashboardReports = {\n __typename?: 'DashboardReports';\n reports: Array>;\n};\n\nexport enum IDataFormat {\n Number = 'NUMBER',\n DateTime = 'DATE_TIME',\n Text = 'TEXT'\n}\n\nexport type IDataMatcher = {\n __typename?: 'DataMatcher';\n id: FieldWrapper;\n riskInventory: FieldWrapper;\n matchers: Array>;\n approvers: Array>;\n account: FieldWrapper;\n matchCounts: FieldWrapper;\n assignedTo: FieldWrapper;\n matchingStatus: FieldWrapper;\n totalUnassignedNetworkControls: FieldWrapper;\n nextWorkflow?: Maybe>;\n availableFilters: FieldWrapper;\n file: FieldWrapper;\n};\n\nexport type IDataMatcherAcinControl = {\n __typename?: 'DataMatcherAcinControl';\n id: FieldWrapper;\n control: FieldWrapper;\n status: FieldWrapper;\n reasonCode: FieldWrapper;\n missing?: Maybe>;\n};\n\nexport type IDataMatcherAcinControlPreliminaryMissing = {\n __typename?: 'DataMatcherAcinControlPreliminaryMissing';\n internalComment?: Maybe>>;\n externalComment?: Maybe>;\n status: FieldWrapper;\n approvedRejectedAt?: Maybe>;\n};\n\nexport type IDataMatcherAcinControlSuggestion = {\n __typename?: 'DataMatcherAcinControlSuggestion';\n id: FieldWrapper;\n control: FieldWrapper;\n matchScore?: Maybe>;\n reasonCode: FieldWrapper;\n totalInventoryMatches?: Maybe>;\n inventoryMatches?: Maybe>>;\n};\n\nexport enum IDataMatcherAssignedTo {\n Matcher = 'MATCHER',\n Approver = 'APPROVER'\n}\n\nexport type IDataMatcherClientControl = {\n __typename?: 'DataMatcherClientControl';\n id: FieldWrapper;\n control: FieldWrapper;\n status: FieldWrapper;\n totalInternalComments: FieldWrapper;\n totalMatchedAcinControls: FieldWrapper;\n totalInventoryMatches?: Maybe>;\n matchScore?: Maybe>;\n relationshipCount?: Maybe>;\n matches?: Maybe>>;\n};\n\nexport type IDataMatcherClientControlHistoricalAcinMatch = {\n __typename?: 'DataMatcherClientControlHistoricalAcinMatch';\n name?: Maybe>;\n code?: Maybe>;\n reasonCode: FieldWrapper;\n};\n\nexport type IDataMatcherClientControlMatchingHistory = {\n __typename?: 'DataMatcherClientControlMatchingHistory';\n activeRiskInventory?: Maybe>;\n otherRiskInventories?: Maybe>>;\n};\n\nexport type IDataMatcherClientControlMatchingHistoryGroup = {\n __typename?: 'DataMatcherClientControlMatchingHistoryGroup';\n date: FieldWrapper;\n matches: Array>;\n};\n\nexport type IDataMatcherClientControlMatchingHistoryInput = {\n dataMatcherClientControlId: Scalars['String'];\n dataMatcherId: Scalars['String'];\n};\n\nexport type IDataMatcherClientControlSuggestion = {\n __typename?: 'DataMatcherClientControlSuggestion';\n id: FieldWrapper;\n control: FieldWrapper;\n matchScore?: Maybe>;\n reasonCode: FieldWrapper;\n};\n\nexport type IDataMatcherComment = {\n __typename?: 'DataMatcherComment';\n id: FieldWrapper;\n user: FieldWrapper;\n comment: FieldWrapper;\n createdAt: FieldWrapper;\n};\n\nexport type IDataMatcherControl = IDataMatcherClientControl | IDataMatcherAcinControl;\n\nexport type IDataMatcherMatchRecord = {\n __typename?: 'DataMatcherMatchRecord';\n id: FieldWrapper;\n reasonCode: FieldWrapper;\n matchedAcinControl?: Maybe>;\n internalComment?: Maybe>>;\n externalComment?: Maybe>;\n status: FieldWrapper;\n approvedRejectedAt?: Maybe>;\n};\n\nexport type IDataMatcherMatchScore = {\n __typename?: 'DataMatcherMatchScore';\n score: FieldWrapper;\n highlight: FieldWrapper;\n};\n\nexport type IDataMatcherMatches = {\n __typename?: 'DataMatcherMatches';\n total: FieldWrapper;\n matched: FieldWrapper;\n approved: FieldWrapper;\n rejected: FieldWrapper;\n};\n\nexport type IDataMatcherMatchingWorkflow = IDataMatchingControlsWorkflow;\n\nexport type IDataMatcherRiskInventoryMatchingHistory = {\n __typename?: 'DataMatcherRiskInventoryMatchingHistory';\n riskInventory: FieldWrapper;\n matchingHistory: Array>;\n};\n\nexport type IDataMatcherTab = {\n __typename?: 'DataMatcherTab';\n id: FieldWrapper;\n dataMatching: FieldWrapper;\n count: FieldWrapper;\n};\n\nexport type IDataMatcherUploadedClientControl = {\n __typename?: 'DataMatcherUploadedClientControl';\n id: FieldWrapper;\n title: FieldWrapper;\n description?: Maybe>;\n objectives?: Maybe>;\n controlCode: FieldWrapper;\n controlType?: Maybe>;\n controlOwner?: Maybe>;\n controlFrequency?: Maybe>;\n controlQualityScore?: Maybe>;\n};\n\nexport type IDataMatchingAcinControlPage = {\n __typename?: 'DataMatchingAcinControlPage';\n sortInfo: FieldWrapper;\n totalResults: FieldWrapper;\n nodes: Array>;\n availableFilters: FieldWrapper;\n};\n\nexport type IDataMatchingAcinControlPageInput = {\n dataMatcherClientControlId: Scalars['ID'];\n dataMatcherId: Scalars['ID'];\n sort?: Maybe;\n};\n\nexport type IDataMatchingControlsWorkflow = {\n __typename?: 'DataMatchingControlsWorkflow';\n controlView: FieldWrapper;\n summaryView: FieldWrapper;\n};\n\n\nexport type IDataMatchingControlsWorkflowControlViewArgs = {\n sort?: Maybe;\n};\n\n\nexport type IDataMatchingControlsWorkflowSummaryViewArgs = {\n sort?: Maybe;\n};\n\nexport type IDataMatchingControlsWorkflowControlView = {\n __typename?: 'DataMatchingControlsWorkflowControlView';\n sortInfo: FieldWrapper;\n controls: FieldWrapper;\n matchedMissingAcinControls?: Maybe>>>;\n};\n\nexport type IDataMatchingControlsWorkflowControlsPage = {\n __typename?: 'DataMatchingControlsWorkflowControlsPage';\n totalResults: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IDataMatchingControlsWorkflowSummaryView = {\n __typename?: 'DataMatchingControlsWorkflowSummaryView';\n sortInfo: FieldWrapper;\n rows: Array>;\n};\n\nexport type IDataMatchingControlsWorkflowSummaryViewRow = IDataMatchingControlsWorkflowSummaryViewRowOneToOne | IDataMatchingControlsWorkflowSummaryViewRowManyToOne | IDataMatchingControlsWorkflowSummaryViewRowManyToMany;\n\nexport type IDataMatchingControlsWorkflowSummaryViewRowManyToMany = {\n __typename?: 'DataMatchingControlsWorkflowSummaryViewRowManyToMany';\n groupName: FieldWrapper;\n items: Array>;\n relationshipCount?: Maybe>;\n};\n\nexport type IDataMatchingControlsWorkflowSummaryViewRowManyToOne = {\n __typename?: 'DataMatchingControlsWorkflowSummaryViewRowManyToOne';\n group: FieldWrapper;\n items: Array>;\n relationshipCount?: Maybe>;\n};\n\nexport type IDataMatchingControlsWorkflowSummaryViewRowOneToOne = {\n __typename?: 'DataMatchingControlsWorkflowSummaryViewRowOneToOne';\n item: FieldWrapper;\n};\n\nexport type IDataMatchingFile = {\n __typename?: 'DataMatchingFile';\n id: FieldWrapper;\n name: FieldWrapper;\n status: FieldWrapper;\n getIssues?: Maybe>;\n createdAt: FieldWrapper;\n updatedAt: FieldWrapper;\n};\n\nexport enum IDataMatchingMatchStatus {\n Unmatched = 'UNMATCHED',\n Matched = 'MATCHED',\n Rejected = 'REJECTED',\n Approved = 'APPROVED'\n}\n\nexport type IDataMatchingRelationshipCount = {\n __typename?: 'DataMatchingRelationshipCount';\n to: FieldWrapper;\n from: FieldWrapper;\n};\n\nexport enum IDataMatchingStatus {\n Todo = 'TODO',\n InProgress = 'IN_PROGRESS',\n Complete = 'COMPLETE'\n}\n\nexport type IDataMatchingUnassignedAcinControls = {\n __typename?: 'DataMatchingUnassignedAcinControls';\n acinControls: Array>;\n};\n\nexport type IDataMatchingUnassignedAcinControlsSuggestionsInput = {\n acinControlId: Scalars['ID'];\n dataMatcherId: Scalars['ID'];\n sort?: Maybe;\n};\n\nexport type IDataMatchingUnassignedAcinControlsSuggestionsPage = {\n __typename?: 'DataMatchingUnassignedAcinControlsSuggestionsPage';\n sortInfo: FieldWrapper;\n totalResults: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IDataMatchingUploadsPage = {\n __typename?: 'DataMatchingUploadsPage';\n pageInfo: FieldWrapper;\n sortInfo: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IDataMatchingUploadsPageInput = {\n pagination?: Maybe;\n sort?: Maybe;\n};\n\nexport type IDataOverview = {\n __typename?: 'DataOverview';\n clientControlCount: FieldWrapper;\n clientRiskCount: FieldWrapper;\n clientBusinessLineCount: FieldWrapper;\n acinRiskInventoryCount: FieldWrapper;\n acinProcessCount: FieldWrapper;\n};\n\nexport type IDataOverviewInput = {\n filters?: Maybe;\n};\n\nexport type IDataQuality = {\n __typename?: 'DataQuality';\n generatedText?: Maybe>;\n prompts?: Maybe>;\n score?: Maybe>;\n};\n\n\nexport type IDataQualityGeneratedTextArgs = {\n textList?: Maybe>;\n prompt?: Maybe;\n};\n\n\nexport type IDataQualityPromptsArgs = {\n promptCategory: IDataQualityPromptCategory;\n};\n\n\nexport type IDataQualityScoreArgs = {\n textList?: Maybe>;\n};\n\nexport type IDataQualityGeneratedText = {\n __typename?: 'DataQualityGeneratedText';\n text: FieldWrapper;\n};\n\nexport type IDataQualityInputText = {\n variant: IDataQualityInputTextVariant;\n text: Scalars['String'];\n};\n\nexport enum IDataQualityInputTextVariant {\n Control = 'CONTROL',\n Policy = 'POLICY',\n Regulation = 'REGULATION'\n}\n\nexport type IDataQualityJob = {\n __typename?: 'DataQualityJob';\n id: FieldWrapper;\n status: FieldWrapper;\n value?: Maybe>;\n};\n\nexport enum IDataQualityJobStatus {\n Started = 'STARTED',\n Completed = 'COMPLETED',\n Failed = 'FAILED'\n}\n\nexport enum IDataQualityPromptCategory {\n ControlRewriter = 'CONTROL_REWRITER',\n PolicyToControl = 'POLICY_TO_CONTROL',\n ProcedureToControl = 'PROCEDURE_TO_CONTROL',\n ProcessToControl = 'PROCESS_TO_CONTROL',\n ControlToTestingScript = 'CONTROL_TO_TESTING_SCRIPT',\n ControlToKeyControlIndicator = 'CONTROL_TO_KEY_CONTROL_INDICATOR'\n}\n\nexport type IDataQualityPromptOption = {\n __typename?: 'DataQualityPromptOption';\n value: FieldWrapper;\n label: FieldWrapper;\n};\n\nexport type IDataQualityPrompts = {\n __typename?: 'DataQualityPrompts';\n promptOptions: Array>;\n};\n\nexport type IDataTable = {\n __typename?: 'DataTable';\n headers: Array>;\n rows: Array>;\n};\n\nexport type IDataTableField = {\n __typename?: 'DataTableField';\n key: FieldWrapper;\n value?: Maybe>;\n};\n\nexport type IDataTableHeader = {\n __typename?: 'DataTableHeader';\n key: FieldWrapper;\n name: FieldWrapper;\n sortable: FieldWrapper;\n direction?: Maybe>;\n format?: Maybe>;\n};\n\nexport type IDataTableRow = {\n __typename?: 'DataTableRow';\n fields: Array>;\n meta?: Maybe>;\n};\n\nexport type IDataTableRowMeta = {\n __typename?: 'DataTableRowMeta';\n raw?: Maybe>>;\n};\n\nexport type IDataTableRowMetaValue = {\n __typename?: 'DataTableRowMetaValue';\n key: FieldWrapper;\n value: FieldWrapper;\n};\n\nexport type IDonutChart = {\n __typename?: 'DonutChart';\n colorPaletteName: FieldWrapper;\n values: Array>;\n};\n\nexport type IDonutChartValue = {\n __typename?: 'DonutChartValue';\n label: FieldWrapper;\n filterPayload?: Maybe>;\n value: FieldWrapper;\n colorPalette?: Maybe>;\n type?: Maybe>;\n};\n\nexport type IDownloadFile = {\n __typename?: 'DownloadFile';\n id: FieldWrapper;\n fileURL?: Maybe>;\n status: FieldWrapper;\n contentType: FieldWrapper;\n};\n\nexport enum IDownloadFileType {\n Csv = 'CSV',\n Excel = 'EXCEL'\n}\n\nexport enum IDownloadStatus {\n Pending = 'PENDING',\n Complete = 'COMPLETE',\n Failed = 'FAILED'\n}\n\nexport type IDrillDownInfo = {\n __typename?: 'DrillDownInfo';\n id?: Maybe>;\n configuration?: Maybe>>;\n filters?: Maybe>>;\n label?: Maybe>;\n};\n\nexport type IEmailNotificationCategory = {\n __typename?: 'EmailNotificationCategory';\n name: FieldWrapper;\n code: FieldWrapper;\n isEnabled: FieldWrapper;\n};\n\nexport type IEmailNotificationSettings = {\n __typename?: 'EmailNotificationSettings';\n notificationCategories: Array>;\n};\n\nexport type IEntityAssigned = {\n __typename?: 'EntityAssigned';\n id: FieldWrapper;\n matchers: Array>;\n approvers: Array>;\n permissions: Array>;\n};\n\nexport type IEntityAssigneesInput = {\n accountCode: Scalars['String'];\n jobId: Scalars['String'];\n type: IEntityAssigneesType;\n ids?: Maybe>;\n matchersIds: Array;\n approversIds: Array;\n};\n\nexport type IEntityAssigneesResponse = {\n __typename?: 'EntityAssigneesResponse';\n type: FieldWrapper;\n entity: Array>;\n};\n\nexport enum IEntityAssigneesType {\n Control = 'CONTROL',\n Cluster = 'CLUSTER'\n}\n\nexport type IExample = {\n __typename?: 'Example';\n id: FieldWrapper;\n title: FieldWrapper;\n content: FieldWrapper;\n};\n\nexport type IExampleInput = {\n title: Scalars['String'];\n content: Scalars['String'];\n};\n\nexport type IExamplePaginationItem = {\n __typename?: 'ExamplePaginationItem';\n id: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n value: FieldWrapper;\n};\n\nexport type IExportStatusReportInput = {\n type: IDownloadFileType;\n};\n\nexport type IExportTemplateQueryInput = {\n type: IDownloadFileType;\n};\n\nexport type IFeedInsight = {\n __typename?: 'FeedInsight';\n id: FieldWrapper;\n type: FieldWrapper;\n criteria: FieldWrapper;\n createdAt: FieldWrapper;\n reason: Array>;\n description: FieldWrapper;\n metrics: Array>;\n};\n\nexport type IFeedInsightsPage = {\n __typename?: 'FeedInsightsPage';\n nodes: Array>;\n};\n\nexport enum IFileUploadStatus {\n Uploaded = 'UPLOADED',\n Processing = 'PROCESSING',\n Completed = 'COMPLETED',\n UnsupportedFile = 'UNSUPPORTED_FILE',\n Error = 'ERROR',\n CompletedWithWarnings = 'COMPLETED_WITH_WARNINGS'\n}\n\nexport type IFilterCheckboxListInputType = {\n __typename?: 'FilterCheckboxListInputType';\n inputType: FieldWrapper;\n options: Array>;\n};\n\nexport type IFilterDropdownInputType = {\n __typename?: 'FilterDropdownInputType';\n inputType: FieldWrapper;\n options: Array>;\n placeholder?: Maybe>;\n};\n\nexport type IFilterGroup = {\n __typename?: 'FilterGroup';\n key: FieldWrapper;\n label?: Maybe>;\n filterInput: FieldWrapper;\n};\n\nexport enum IFilterGroupInputType {\n Dropdown = 'DROPDOWN',\n Tags = 'TAGS',\n Checkbox = 'CHECKBOX',\n Range = 'RANGE'\n}\n\nexport type IFilterGroupV2 = {\n __typename?: 'FilterGroupV2';\n label?: Maybe>;\n availableFilters: Array>;\n};\n\nexport type IFilterInput = {\n groups?: Maybe>;\n};\n\nexport type IFilterInputGroup = {\n groupKey: Scalars['String'];\n filterValues: Array;\n};\n\nexport type IFilterInputTypes = IFilterDropdownInputType | IFilterTagsInputType | IFilterCheckboxListInputType | IFilterRangeInputType;\n\nexport type IFilterInputValue = {\n value: Scalars['String'];\n label?: Maybe;\n sublabel?: Maybe;\n};\n\nexport type IFilterItem = {\n __typename?: 'FilterItem';\n key: FieldWrapper;\n label: FieldWrapper;\n code?: Maybe>;\n};\n\nexport type IFilterListLevelVariant = {\n __typename?: 'FilterListLevelVariant';\n searchPlaceholder?: Maybe>;\n appliedFilters: Array>;\n appliedFiltersCount: FieldWrapper;\n};\n\nexport type IFilterListVariant = {\n __typename?: 'FilterListVariant';\n searchPlaceholder?: Maybe>;\n filterGroups: Array>;\n appliedFilters: Array>;\n appliedFiltersCount: FieldWrapper;\n};\n\nexport type IFilterPayload = {\n __typename?: 'FilterPayload';\n groups?: Maybe>>;\n};\n\nexport type IFilterPayloadInputGroup = {\n __typename?: 'FilterPayloadInputGroup';\n groupKey: FieldWrapper;\n filterValues: Array>;\n label?: Maybe>;\n};\n\nexport type IFilterPayloadListValue = {\n __typename?: 'FilterPayloadListValue';\n value: FieldWrapper;\n code: FieldWrapper;\n label?: Maybe>;\n sublabel?: Maybe>;\n parentIds?: Maybe>>;\n hasChildren?: Maybe>;\n lastLevelFilterCount?: Maybe>;\n siblingCounts?: Maybe>;\n};\n\nexport type IFilterPayloadValue = {\n __typename?: 'FilterPayloadValue';\n value: FieldWrapper;\n label?: Maybe>;\n sublabel?: Maybe>;\n};\n\nexport type IFilterRange = {\n __typename?: 'FilterRange';\n min: FieldWrapper;\n max: FieldWrapper;\n};\n\nexport type IFilterRangeInputType = {\n __typename?: 'FilterRangeInputType';\n inputType: FieldWrapper;\n tagLabel?: Maybe>;\n tagUnit?: Maybe>;\n range: FieldWrapper;\n description: FieldWrapper;\n};\n\nexport type IFilterRangeVariant = {\n __typename?: 'FilterRangeVariant';\n range: FieldWrapper;\n activeRange?: Maybe>;\n};\n\nexport type IFilterResponse = {\n __typename?: 'FilterResponse';\n allFilters: Array>;\n exposedFilterIds: Array>;\n};\n\nexport type IFilterTagsInputType = {\n __typename?: 'FilterTagsInputType';\n inputType: FieldWrapper;\n options: Array>;\n};\n\nexport enum IFilterType {\n List = 'LIST',\n RadioList = 'RADIO_LIST',\n GroupList = 'GROUP_LIST',\n Range = 'RANGE',\n ListLevel = 'LIST_LEVEL'\n}\n\nexport type IFilterV2 = {\n __typename?: 'FilterV2';\n id: FieldWrapper;\n code: FieldWrapper;\n type: FieldWrapper;\n label: FieldWrapper;\n description?: Maybe>;\n info?: Maybe>;\n attributes: FieldWrapper;\n};\n\nexport type IFilterVariant = IFilterListVariant | IFilterRangeVariant | IFilterListLevelVariant;\n\nexport type IFilters = {\n __typename?: 'Filters';\n groups: Array>;\n};\n\nexport type IGetRiskDataInput = {\n ids: Array;\n sort?: Maybe;\n};\n\nexport type IGlobalSearchResult = {\n __typename?: 'GlobalSearchResult';\n id: FieldWrapper;\n text: FieldWrapper;\n assetType: FieldWrapper;\n};\n\nexport enum IGlobalSearchResultAssetType {\n ClientControl = 'CLIENT_CONTROL',\n AcinControl = 'ACIN_CONTROL',\n ClientRisk = 'CLIENT_RISK',\n AcinRisk = 'ACIN_RISK',\n RegAlert = 'REG_ALERT',\n NetworkUpdate = 'NETWORK_UPDATE',\n NetworkScenario = 'NETWORK_SCENARIO',\n Report = 'REPORT',\n ReportBuilder = 'REPORT_BUILDER'\n}\n\nexport type IHorizontalDumbbellPlotChart = {\n __typename?: 'HorizontalDumbbellPlotChart';\n colorPaletteName: FieldWrapper;\n mean?: Maybe>;\n rangeKey: FieldWrapper;\n valueKey: FieldWrapper;\n values: Array>;\n};\n\nexport type IHorizontalDumbbellPlotChartRange = {\n __typename?: 'HorizontalDumbbellPlotChartRange';\n rangeStart: FieldWrapper;\n rangeEnd: FieldWrapper;\n};\n\nexport type IHorizontalDumbbellPlotChartValue = {\n __typename?: 'HorizontalDumbbellPlotChartValue';\n label: FieldWrapper;\n value: FieldWrapper;\n range: FieldWrapper;\n};\n\nexport type IInsightMetric = {\n __typename?: 'InsightMetric';\n type: FieldWrapper;\n values: Array>;\n};\n\nexport enum IInsightMetricType {\n ETrading = 'E_TRADING',\n CrossAsset = 'CROSS_ASSET',\n AssetClass = 'ASSET_CLASS',\n Continuity = 'CONTINUITY',\n ControlImpact = 'CONTROL_IMPACT',\n Rating = 'RATING',\n All = 'ALL'\n}\n\nexport type IInsightMetricValue = {\n __typename?: 'InsightMetricValue';\n id: FieldWrapper;\n title: FieldWrapper;\n value?: Maybe>;\n};\n\nexport type IInsightReason = {\n __typename?: 'InsightReason';\n id: FieldWrapper;\n title: FieldWrapper;\n};\n\nexport enum IInsightType {\n RatingIncrease = 'RATING_INCREASE',\n RatingDecrease = 'RATING_DECREASE',\n NewControl = 'NEW_CONTROL',\n NewRisk = 'NEW_RISK'\n}\n\nexport enum IInspectorIdType {\n Control = 'Control'\n}\n\nexport type IInspectorInput = {\n id: Scalars['ID'];\n idType: IInspectorIdType;\n};\n\nexport type IInspectorPage = {\n __typename?: 'InspectorPage';\n content?: Maybe>;\n};\n\nexport type IInspectorPageView = IControlInspectorView;\n\nexport type IItemsPerPageOption = {\n __typename?: 'ItemsPerPageOption';\n value: FieldWrapper;\n label: FieldWrapper;\n};\n\nexport type IKeyStat = {\n __typename?: 'KeyStat';\n value?: Maybe>;\n label: FieldWrapper;\n isPercentage?: Maybe>;\n};\n\nexport type IKeyword = {\n __typename?: 'Keyword';\n id: FieldWrapper;\n code: FieldWrapper;\n name: FieldWrapper;\n count: FieldWrapper;\n items: Array>;\n};\n\nexport type IKeywordItem = {\n __typename?: 'KeywordItem';\n id: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IMatchAcinControlInput = {\n dataMatcherId: Scalars['ID'];\n dataMatcherClientControlId: Scalars['ID'];\n matches: Array;\n};\n\nexport type IMatchAcinControlMatchInput = {\n matchId?: Maybe;\n reasonCode: Scalars['String'];\n acinControlId?: Maybe;\n internalComment?: Maybe;\n externalComment?: Maybe;\n};\n\nexport type IMatchClientControlMatchInput = {\n reasonCode: Scalars['String'];\n dataMatcherUploadedClientControlId?: Maybe;\n internalComment?: Maybe;\n externalComment?: Maybe;\n};\n\nexport type IMatchUnassignedClientControlInput = {\n dataMatcherId: Scalars['ID'];\n acinControlId: Scalars['ID'];\n matches: Array;\n};\n\nexport type IMatchingControl = {\n __typename?: 'MatchingControl';\n id: FieldWrapper;\n code: FieldWrapper;\n name: FieldWrapper;\n description: FieldWrapper;\n controlType?: Maybe>;\n frequency?: Maybe>;\n automation?: Maybe>;\n riaDescription?: Maybe>;\n risks: Array>;\n indices: Array>;\n};\n\nexport type IMatchingControlsInput = {\n filters?: Maybe;\n pagination?: Maybe;\n};\n\nexport type IMatchingControlsResponse = {\n __typename?: 'MatchingControlsResponse';\n controls: Array>;\n pagination?: Maybe>;\n};\n\nexport type IMatchingIndices = {\n __typename?: 'MatchingIndices';\n code: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IMatchingJob = {\n __typename?: 'MatchingJob';\n id: FieldWrapper;\n name: FieldWrapper;\n stage: FieldWrapper;\n status: FieldWrapper;\n numberOfControls: FieldWrapper;\n numberOfRisks: FieldWrapper;\n fileUploaded?: Maybe>;\n permissions?: Maybe>>>;\n};\n\nexport type IMatchingJobApproval = {\n matchedIds: Array;\n quality: IUpdateProposedQuality;\n};\n\nexport type IMatchingJobCluster = {\n __typename?: 'MatchingJobCluster';\n id: FieldWrapper;\n name: FieldWrapper;\n status: FieldWrapper;\n numberOfControls: FieldWrapper;\n matchers: Array>;\n approvers: Array>;\n permissions?: Maybe>>>;\n};\n\nexport enum IMatchingJobClusterStatus {\n ToConnect = 'TO_CONNECT',\n InProgress = 'IN_PROGRESS',\n ReadyToSubmit = 'READY_TO_SUBMIT',\n ReadyForApproval = 'READY_FOR_APPROVAL',\n Approved = 'APPROVED',\n Completed = 'COMPLETED'\n}\n\nexport type IMatchingJobClustersFiltersInput = {\n matchingJobId: Scalars['ID'];\n accountCode: Scalars['String'];\n};\n\nexport type IMatchingJobClustersInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n pagination?: Maybe;\n filters?: Maybe;\n};\n\nexport type IMatchingJobClustersResponse = {\n __typename?: 'MatchingJobClustersResponse';\n clusters: Array>;\n pagination?: Maybe>;\n};\n\nexport type IMatchingJobControl = {\n __typename?: 'MatchingJobControl';\n id: FieldWrapper;\n code: FieldWrapper;\n name: FieldWrapper;\n description: FieldWrapper;\n status: FieldWrapper;\n suggestedQualityScore?: Maybe>;\n quality?: Maybe>;\n controlType?: Maybe>;\n frequency?: Maybe>;\n automation?: Maybe>;\n risks: Array>;\n indices: Array>;\n suggestedMatches?: Maybe>>;\n proposedMatches?: Maybe>>;\n matched?: Maybe>>;\n proposedMatchesBy?: Maybe>;\n matchesBy?: Maybe>;\n matchedAt?: Maybe>;\n riaDescription?: Maybe>;\n matcher?: Maybe>;\n approver?: Maybe>;\n permissions?: Maybe>>>;\n action?: Maybe>;\n unclearQualityDescriptorId?: Maybe>;\n};\n\nexport enum IMatchingJobControlAction {\n Approved = 'APPROVED',\n AutoMatched = 'AUTO_MATCHED',\n Proposed = 'PROPOSED',\n Inherited = 'INHERITED'\n}\n\nexport type IMatchingJobControlMetrics = {\n timeToProgress?: Maybe;\n};\n\nexport enum IMatchingJobControlStatus {\n ToConnect = 'TO_CONNECT',\n Skipped = 'SKIPPED',\n PreConnected = 'PRE_CONNECTED',\n ReadyForApproval = 'READY_FOR_APPROVAL',\n Approved = 'APPROVED',\n Completed = 'COMPLETED'\n}\n\nexport type IMatchingJobControlsInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n clusterId?: Maybe;\n pagination?: Maybe;\n filters?: Maybe;\n};\n\nexport type IMatchingJobProposal = {\n matchedIds?: Maybe>;\n quality?: Maybe;\n};\n\nexport enum IMatchingJobQualityLevel {\n Clear = 'CLEAR',\n Unclear = 'UNCLEAR'\n}\n\nexport type IMatchingJobsControlResponse = {\n __typename?: 'MatchingJobsControlResponse';\n controls: Array>;\n pagination?: Maybe>;\n};\n\nexport type IMatchingJobsInput = {\n accountCode: Scalars['String'];\n pagination?: Maybe;\n filters?: Maybe;\n};\n\nexport type IMatchingJobsResponse = {\n __typename?: 'MatchingJobsResponse';\n matchingJobs: Array>;\n pagination?: Maybe>;\n};\n\nexport type IMatchingRiaDescription = {\n __typename?: 'MatchingRiaDescription';\n review: FieldWrapper;\n identify: FieldWrapper;\n action: FieldWrapper;\n};\n\nexport type IMatchingRisk = {\n __typename?: 'MatchingRisk';\n code: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IMockedPaginationResults = {\n __typename?: 'MockedPaginationResults';\n pagination: FieldWrapper;\n nodes: Array>;\n};\n\nexport type IMutation = {\n __typename?: 'Mutation';\n setUITheme?: Maybe>;\n updateEmailNotificationSettings: FieldWrapper;\n generateCalibrateDownload: FieldWrapper;\n markCalibrateDownloadAsRead: FieldWrapper;\n deleteCalibrateDownload: FieldWrapper;\n createDataMatcher: FieldWrapper;\n matchAcinControlToClientControl: FieldWrapper;\n matchUnassignedClientControlToAcinControl: FieldWrapper;\n approveRejectAcinControlToClientControl: FieldWrapper;\n approveRejectMissingAcinControl: FieldWrapper;\n submitDataMatcher: FieldWrapper;\n deleteDataMatcher: FieldWrapper;\n inheritUnmatchedAcinControlReasonCodes: FieldWrapper;\n publish: FieldWrapper;\n bulkApprove: FieldWrapper;\n submitControlsForApproval: FieldWrapper;\n submitClustersForApproval: FieldWrapper;\n updateMatchingJobControl?: Maybe>;\n updateUnmatchedIndexControl?: Maybe>;\n updateEntityAssignees: FieldWrapper;\n toggleTemplateQueryFavourite?: Maybe>;\n exportTemplateQueryById: FieldWrapper;\n exportCompletenessReportById: FieldWrapper;\n createReport: FieldWrapper;\n updateReport: FieldWrapper;\n deleteReport: FieldWrapper;\n exportStatusReportById: FieldWrapper;\n getDataQuality: FieldWrapper;\n createDataQualityJob: FieldWrapper;\n toggleRiskIntelligenceFavourite: FieldWrapper;\n toggleRiskIntelligenceTableItemFavourite: FieldWrapper;\n createExample: FieldWrapper;\n toggleReportFavourite: FieldWrapper;\n createConfiguratorReport: FieldWrapper;\n updateConfiguratorReport: FieldWrapper;\n deleteConfiguratorReport: FieldWrapper;\n};\n\n\nexport type IMutationSetUiThemeArgs = {\n userId: Scalars['String'];\n theme: IUiTheme;\n};\n\n\nexport type IMutationUpdateEmailNotificationSettingsArgs = {\n input: IUpdateEmailNotificationSettingsInput;\n};\n\n\nexport type IMutationGenerateCalibrateDownloadArgs = {\n input: ICalibrateReportInput;\n};\n\n\nexport type IMutationMarkCalibrateDownloadAsReadArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IMutationDeleteCalibrateDownloadArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IMutationCreateDataMatcherArgs = {\n input: ICreateDataMatcherInput;\n};\n\n\nexport type IMutationMatchAcinControlToClientControlArgs = {\n input: IMatchAcinControlInput;\n filterInput?: Maybe;\n};\n\n\nexport type IMutationMatchUnassignedClientControlToAcinControlArgs = {\n input: IMatchUnassignedClientControlInput;\n};\n\n\nexport type IMutationApproveRejectAcinControlToClientControlArgs = {\n input: IApproveRejectMatchAcinControlInput;\n};\n\n\nexport type IMutationApproveRejectMissingAcinControlArgs = {\n input: IApproveRejectMissingAcinControlInput;\n};\n\n\nexport type IMutationSubmitDataMatcherArgs = {\n dataMatcherId: Scalars['ID'];\n};\n\n\nexport type IMutationDeleteDataMatcherArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IMutationInheritUnmatchedAcinControlReasonCodesArgs = {\n dataMatcherId: Scalars['ID'];\n unassignedAcinControlIds: Array>;\n};\n\n\nexport type IMutationPublishArgs = {\n input: IPublishInput;\n};\n\n\nexport type IMutationBulkApproveArgs = {\n input: IBulkApproveInput;\n};\n\n\nexport type IMutationSubmitControlsForApprovalArgs = {\n input: ISubmitControlsForApprovalInput;\n};\n\n\nexport type IMutationSubmitClustersForApprovalArgs = {\n input: ISubmitClustersForApprovalInput;\n};\n\n\nexport type IMutationUpdateMatchingJobControlArgs = {\n input?: Maybe;\n};\n\n\nexport type IMutationUpdateUnmatchedIndexControlArgs = {\n input: IUpdateUnmatchedIndexControlInput;\n};\n\n\nexport type IMutationUpdateEntityAssigneesArgs = {\n input: IEntityAssigneesInput;\n};\n\n\nexport type IMutationToggleTemplateQueryFavouriteArgs = {\n id: Scalars['ID'];\n favourite: Scalars['Boolean'];\n};\n\n\nexport type IMutationExportTemplateQueryByIdArgs = {\n id: Scalars['ID'];\n export: IExportTemplateQueryInput;\n filters?: Maybe;\n};\n\n\nexport type IMutationExportCompletenessReportByIdArgs = {\n configuration: IFilterInput;\n export: IExportTemplateQueryInput;\n filters?: Maybe;\n reportId?: Maybe;\n};\n\n\nexport type IMutationCreateReportArgs = {\n baseReportId: Scalars['ID'];\n report: ICreateReportInput;\n};\n\n\nexport type IMutationUpdateReportArgs = {\n id: Scalars['ID'];\n report: IUpdateReportInput;\n};\n\n\nexport type IMutationDeleteReportArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IMutationExportStatusReportByIdArgs = {\n id: Scalars['ID'];\n export: IExportStatusReportInput;\n};\n\n\nexport type IMutationCreateDataQualityJobArgs = {\n textList: Array;\n prompt: Scalars['String'];\n};\n\n\nexport type IMutationToggleRiskIntelligenceFavouriteArgs = {\n id: Scalars['ID'];\n favourite: Scalars['Boolean'];\n};\n\n\nexport type IMutationToggleRiskIntelligenceTableItemFavouriteArgs = {\n id: Scalars['ID'];\n favourite: Scalars['Boolean'];\n};\n\n\nexport type IMutationCreateExampleArgs = {\n input: IExampleInput;\n};\n\n\nexport type IMutationToggleReportFavouriteArgs = {\n id: Scalars['ID'];\n favourite: Scalars['Boolean'];\n};\n\n\nexport type IMutationCreateConfiguratorReportArgs = {\n report: IConfiguratorReportInput;\n};\n\n\nexport type IMutationUpdateConfiguratorReportArgs = {\n id: Scalars['ID'];\n report: IUpdateConfiguratorReportInput;\n};\n\n\nexport type IMutationDeleteConfiguratorReportArgs = {\n id: Scalars['ID'];\n};\n\nexport type IMyReports = {\n __typename?: 'MyReports';\n reports: Array>;\n pagination?: Maybe>;\n sorting?: Maybe>;\n unfilteredTotal?: Maybe>;\n};\n\nexport type IMyReportsInput = {\n filters?: Maybe;\n sorting?: Maybe;\n pagination?: Maybe;\n searchTerm?: Maybe;\n pageCode: IPageCode;\n};\n\nexport type INetworkAlignmentScoreProgress = {\n __typename?: 'NetworkAlignmentScoreProgress';\n name: FieldWrapper;\n colorPaletteName: FieldWrapper;\n value?: Maybe>;\n min: FieldWrapper;\n max: FieldWrapper;\n formatter: FieldWrapper;\n extendedMin: FieldWrapper;\n extendedMax: FieldWrapper;\n maxAxisTicks?: Maybe>;\n};\n\nexport type INetworkSignalScore = {\n __typename?: 'NetworkSignalScore';\n score: FieldWrapper;\n total?: Maybe>;\n highlight: FieldWrapper;\n};\n\nexport enum IPageCode {\n ClientControls = 'CLIENT_CONTROLS',\n ClientControlsQuality = 'CLIENT_CONTROLS_QUALITY',\n AcinControls = 'ACIN_CONTROLS',\n JointControls = 'JOINT_CONTROLS'\n}\n\nexport type IPageInfo = {\n __typename?: 'PageInfo';\n page: FieldWrapper;\n pageSize: FieldWrapper;\n totalResults: FieldWrapper;\n totalPages: FieldWrapper;\n hasNextPage: FieldWrapper;\n range?: Maybe>;\n subPage?: Maybe>;\n subPageSize?: Maybe>;\n hasNextSubPage?: Maybe>;\n totalSubPageResults?: Maybe>;\n};\n\nexport type IPaginationInput = {\n page: Scalars['Int'];\n pageSize?: Maybe;\n subPage?: Maybe;\n subPageSize?: Maybe;\n};\n\nexport type IProduct = {\n __typename?: 'Product';\n id: FieldWrapper;\n label: FieldWrapper;\n type: FieldWrapper;\n};\n\nexport type IProductInput = {\n type?: Maybe;\n};\n\nexport type IProductPage = {\n __typename?: 'ProductPage';\n nodes: Array>;\n};\n\nexport enum IProductType {\n Asset = 'ASSET',\n Trading = 'TRADING',\n Instrument = 'INSTRUMENT',\n Settlement = 'SETTLEMENT'\n}\n\nexport type IPublishInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n};\n\nexport type IPublishResponse = {\n __typename?: 'PublishResponse';\n started: FieldWrapper;\n};\n\nexport type IQuery = {\n __typename?: 'Query';\n getAccounts: Array>;\n searchAccounts: FieldWrapper;\n getUsers: Array>;\n getAccount: FieldWrapper;\n getUser: FieldWrapper;\n getRoles?: Maybe>>;\n me: FieldWrapper;\n getEmailNotificationSettings: FieldWrapper;\n getUserAuthorization: FieldWrapper;\n getAllCalibrateDownloads?: Maybe>>;\n getDownloadFileByIds: Array>;\n getDataMatchingAccounts: Array>;\n getDataMatchingUploads: FieldWrapper;\n getDataMatchingTabs: Array>;\n getDataMatcherById?: Maybe>;\n getDataMatchingControlsWorkflowAcinControls: FieldWrapper;\n getDataMatchingControlsWorkflowUnassignedAcinControls: FieldWrapper;\n getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions: FieldWrapper;\n getDataMatcherClientControlMatchingHistory?: Maybe>;\n getUnresolvedMatchingInfo: FieldWrapper;\n getDataMatchingUploadById?: Maybe>;\n getFoldersAndFiles?: Maybe>>>;\n getUploadUrl: FieldWrapper;\n getDownloadUrl: FieldWrapper;\n getMatchingJobs: FieldWrapper;\n getMatchingJobControls: FieldWrapper;\n getUnclearQualityDescriptors: FieldWrapper;\n getMatchingControls: FieldWrapper;\n getMatchingJobClusters: FieldWrapper;\n getMatchingJobClustersFilters: FieldWrapper;\n getUnmatchedIndexControls?: Maybe>;\n searchMatchingControls: FieldWrapper;\n searchMatchingJobControls: FieldWrapper;\n getConnectionUsers: FieldWrapper;\n getTemplateQueries: Array>;\n getTemplateQueryById?: Maybe>;\n getCompletenessReportResults: FieldWrapper;\n getCompletenessReportResultsByRiskIntelId: FieldWrapper;\n validateReportName: FieldWrapper;\n getCompletenessOverTime: FieldWrapper;\n getStatusReportChart?: Maybe>;\n getFeedInsights: FieldWrapper;\n getDashboardControlAlignment: FieldWrapper;\n getDashboardNetworkAlignment: FieldWrapper;\n getControlsByInventorySummary: FieldWrapper;\n getDashboardReports: FieldWrapper;\n getRiskIntelligenceFeed: FieldWrapper;\n getDataOverview: FieldWrapper;\n searchAcinControls: FieldWrapper;\n getAcinControlById: FieldWrapper;\n getControlData: FieldWrapper;\n getClientControlById: FieldWrapper;\n getClientControlByIds?: Maybe>>;\n getControlById?: Maybe>;\n searchRiskInventories: FieldWrapper;\n searchRegulators: FieldWrapper;\n getControlInstanceOptions: FieldWrapper;\n getClientRisks: FieldWrapper;\n getClientRiskById: FieldWrapper;\n getRiskById?: Maybe>;\n getRiskAnalysisById: FieldWrapper;\n searchAcinRisks: FieldWrapper;\n getBusinessLineById: FieldWrapper;\n getBusinessLineByIds?: Maybe>>;\n getComparisonByControlId?: Maybe>;\n getComparisonByRiskId?: Maybe>;\n getControlComparisonData: FieldWrapper;\n getControlHistory: FieldWrapper;\n getCompletenessControlTable: FieldWrapper;\n getTable: FieldWrapper;\n getChart: FieldWrapper;\n getChartFilters: FieldWrapper;\n getChartSummary: FieldWrapper;\n getChartTable?: Maybe>;\n getChartAsTable: FieldWrapper;\n getDataQualityJob: FieldWrapper;\n getRiskIntelligence: FieldWrapper;\n getRiskIntelligenceById: FieldWrapper;\n getHighestExposureRiskIntelligence: FieldWrapper;\n getTrendingRiskIntelligence: FieldWrapper;\n getRiskIntelligenceHubFilters: FieldWrapper;\n getRiskIntelligenceAlert: FieldWrapper;\n getRiskIntelligenceAlertRelatedData: FieldWrapper;\n getRiskIntelligenceAlertRisksChart: FieldWrapper;\n getRiskIntelligenceAlertControlsChart: FieldWrapper;\n getRiskIntelligenceAlertSummary: FieldWrapper;\n getRegulatoryFinesOverTimeByRisk: FieldWrapper;\n getRegulatoryFinesByAcinControls: FieldWrapper;\n inspect: FieldWrapper;\n getPaginationItemsPerPage: Array>;\n getMockedPaginationResults: FieldWrapper;\n examples: Array>;\n getGlobalSearchResults: Array>;\n getProducts?: Maybe>;\n getProductById?: Maybe>;\n getAllReports: FieldWrapper;\n getAllReportsFilters: FieldWrapper;\n getAllReportsQuickFilters: FieldWrapper;\n getReportPage: FieldWrapper;\n getMyReports: FieldWrapper;\n getConfiguratorOptions: Array>;\n getConfiguratorFilterOptions: FieldWrapper;\n getConfiguratorReportById?: Maybe>;\n};\n\n\nexport type IQuerySearchAccountsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetAccountArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IQueryGetUserArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IQueryGetRolesArgs = {\n userId?: Maybe;\n};\n\n\nexport type IQueryGetDownloadFileByIdsArgs = {\n ids: Array;\n};\n\n\nexport type IQueryGetDataMatchingUploadsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetDataMatchingTabsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetDataMatcherByIdArgs = {\n id: Scalars['String'];\n filterInput?: Maybe;\n};\n\n\nexport type IQueryGetDataMatchingControlsWorkflowAcinControlsArgs = {\n input: IDataMatchingAcinControlPageInput;\n filterInput: IFilterInput;\n};\n\n\nexport type IQueryGetDataMatchingControlsWorkflowUnassignedAcinControlsArgs = {\n dataMatcherId: Scalars['ID'];\n};\n\n\nexport type IQueryGetDataMatchingControlsWorkflowUnassignedAcinControlsSuggestionsArgs = {\n input: IDataMatchingUnassignedAcinControlsSuggestionsInput;\n};\n\n\nexport type IQueryGetDataMatcherClientControlMatchingHistoryArgs = {\n input: IDataMatcherClientControlMatchingHistoryInput;\n};\n\n\nexport type IQueryGetUnresolvedMatchingInfoArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetDataMatchingUploadByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetFoldersAndFilesArgs = {\n accountCode: Scalars['String'];\n};\n\n\nexport type IQueryGetDownloadUrlArgs = {\n fileName: Scalars['String'];\n};\n\n\nexport type IQueryGetMatchingJobsArgs = {\n input: IMatchingJobsInput;\n};\n\n\nexport type IQueryGetMatchingJobControlsArgs = {\n input: IMatchingJobControlsInput;\n};\n\n\nexport type IQueryGetMatchingControlsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetMatchingJobClustersArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetMatchingJobClustersFiltersArgs = {\n input: IMatchingJobClustersFiltersInput;\n};\n\n\nexport type IQueryGetUnmatchedIndexControlsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQuerySearchMatchingControlsArgs = {\n input: ISearchMatchingControlsInput;\n};\n\n\nexport type IQuerySearchMatchingJobControlsArgs = {\n input: ISearchMatchingJobControlsInput;\n};\n\n\nexport type IQueryGetConnectionUsersArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetTemplateQueriesArgs = {\n filters?: Maybe;\n};\n\n\nexport type IQueryGetTemplateQueryByIdArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IQueryGetCompletenessReportResultsArgs = {\n configuration: IFilterInput;\n filters?: Maybe;\n reportId?: Maybe;\n};\n\n\nexport type IQueryGetCompletenessReportResultsByRiskIntelIdArgs = {\n id: Scalars['ID'];\n reportId?: Maybe;\n filters?: Maybe;\n};\n\n\nexport type IQueryValidateReportNameArgs = {\n validateReportNameInput: IValidateReportNameInput;\n};\n\n\nexport type IQueryGetCompletenessOverTimeArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetStatusReportChartArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetRiskIntelligenceFeedArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetDataOverviewArgs = {\n input?: Maybe;\n};\n\n\nexport type IQuerySearchAcinControlsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetAcinControlByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetControlDataArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetClientControlByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetClientControlByIdsArgs = {\n ids: Array;\n};\n\n\nexport type IQueryGetControlByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQuerySearchRiskInventoriesArgs = {\n input?: Maybe;\n};\n\n\nexport type IQuerySearchRegulatorsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetControlInstanceOptionsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetClientRisksArgs = {\n input: IGetRiskDataInput;\n};\n\n\nexport type IQueryGetClientRiskByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetRiskByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetRiskAnalysisByIdArgs = {\n id: Scalars['ID'];\n};\n\n\nexport type IQuerySearchAcinRisksArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetBusinessLineByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetBusinessLineByIdsArgs = {\n ids: Array;\n};\n\n\nexport type IQueryGetComparisonByControlIdArgs = {\n id: Scalars['String'];\n riskInventoryId?: Maybe;\n};\n\n\nexport type IQueryGetComparisonByRiskIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetControlComparisonDataArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetControlHistoryArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetCompletenessControlTableArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetTableArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetChartArgs = {\n input: IChartInput;\n};\n\n\nexport type IQueryGetChartFiltersArgs = {\n input: IChartInput;\n};\n\n\nexport type IQueryGetChartSummaryArgs = {\n input: IChartInput;\n};\n\n\nexport type IQueryGetChartTableArgs = {\n input: IChartInput;\n};\n\n\nexport type IQueryGetChartAsTableArgs = {\n input: IChartAsTableInput;\n};\n\n\nexport type IQueryGetDataQualityJobArgs = {\n jobId: Scalars['String'];\n};\n\n\nexport type IQueryGetRiskIntelligenceArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetRiskIntelligenceByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetRiskIntelligenceAlertArgs = {\n input: IRiskIntelligenceAlertInput;\n};\n\n\nexport type IQueryGetRiskIntelligenceAlertRelatedDataArgs = {\n input: IRiskIntelligenceAlertInput;\n};\n\n\nexport type IQueryGetRiskIntelligenceAlertRisksChartArgs = {\n input: IRiskIntelligenceAlertInput;\n};\n\n\nexport type IQueryGetRiskIntelligenceAlertControlsChartArgs = {\n input: IRiskIntelligenceAlertInput;\n};\n\n\nexport type IQueryGetRiskIntelligenceAlertSummaryArgs = {\n input: IRiskIntelligenceAlertInput;\n};\n\n\nexport type IQueryGetRegulatoryFinesOverTimeByRiskArgs = {\n input: IRegulatoryFinesInput;\n};\n\n\nexport type IQueryGetRegulatoryFinesByAcinControlsArgs = {\n input: IRegulatoryFinesInput;\n};\n\n\nexport type IQueryInspectArgs = {\n input: IInspectorInput;\n};\n\n\nexport type IQueryGetMockedPaginationResultsArgs = {\n input: IPaginationInput;\n};\n\n\nexport type IQueryGetGlobalSearchResultsArgs = {\n searchTerm: Scalars['String'];\n resultTypes?: Maybe>>;\n};\n\n\nexport type IQueryGetProductsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetProductByIdArgs = {\n id: Scalars['String'];\n};\n\n\nexport type IQueryGetAllReportsArgs = {\n input?: Maybe;\n};\n\n\nexport type IQueryGetReportPageArgs = {\n input: IReportPageInput;\n};\n\n\nexport type IQueryGetMyReportsArgs = {\n input: IMyReportsInput;\n};\n\n\nexport type IQueryGetConfiguratorOptionsArgs = {\n input?: Maybe;\n pageCode?: Maybe;\n};\n\n\nexport type IQueryGetConfiguratorFilterOptionsArgs = {\n input: IConfiguratorOptionsInput;\n};\n\n\nexport type IQueryGetConfiguratorReportByIdArgs = {\n id: Scalars['ID'];\n};\n\nexport enum IReadPermission {\n Private = 'PRIVATE',\n Organisation = 'ORGANISATION'\n}\n\nexport type IReasonCode = {\n __typename?: 'ReasonCode';\n id: FieldWrapper;\n codeType: FieldWrapper;\n shortName: FieldWrapper;\n longName: FieldWrapper;\n clientFacingName: FieldWrapper;\n riskInventories: Array>;\n colorPalette?: Maybe>;\n};\n\nexport enum IReasonCodeType {\n A = 'A',\n B = 'B',\n C = 'C',\n R = 'R'\n}\n\nexport type IRegulation = {\n __typename?: 'Regulation';\n id: FieldWrapper;\n name: FieldWrapper;\n regulator: FieldWrapper;\n articles?: Maybe>>;\n};\n\nexport type IRegulator = {\n __typename?: 'Regulator';\n id: FieldWrapper;\n name: FieldWrapper;\n regulations: Array>;\n allArticles: Array>;\n};\n\nexport type IRegulatoryArticle = {\n __typename?: 'RegulatoryArticle';\n id: FieldWrapper;\n name: FieldWrapper;\n url?: Maybe>;\n};\n\nexport type IRegulatoryFinesInput = {\n configuration?: Maybe>;\n filters?: Maybe;\n};\n\nexport type IRegulatoryFinesOverTime = {\n __typename?: 'RegulatoryFinesOverTime';\n chart: FieldWrapper;\n yAxisLabel: FieldWrapper;\n};\n\nexport type IRelatedRiskIntelligence = IRiskIntelligence & {\n __typename?: 'RelatedRiskIntelligence';\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n createdAt: FieldWrapper;\n description: FieldWrapper;\n content: FieldWrapper;\n authorTitle: FieldWrapper;\n hasAnalyticsData: FieldWrapper;\n lockedInventoryGroup?: Maybe>;\n favourite: FieldWrapper;\n impact: FieldWrapper;\n};\n\nexport type IRelationshipInsight = {\n __typename?: 'RelationshipInsight';\n name: FieldWrapper;\n description: FieldWrapper;\n};\n\nexport type IRelationshipInsightContext = {\n __typename?: 'RelationshipInsightContext';\n colorPalette: FieldWrapper;\n insight?: Maybe>;\n externalComment?: Maybe>;\n};\n\nexport type IReport = {\n __typename?: 'Report';\n id: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n favourite?: Maybe>;\n createdAt: FieldWrapper;\n lastViewedDate?: Maybe>;\n author: FieldWrapper;\n visibility: FieldWrapper;\n isConfiguratorReport?: Maybe>;\n canDelete?: Maybe>;\n};\n\nexport type IReportCard = {\n __typename?: 'ReportCard';\n id: FieldWrapper;\n title?: Maybe>;\n description?: Maybe>;\n isConfiguratorReport?: Maybe>;\n};\n\nexport type IReportChartCard = {\n __typename?: 'ReportChartCard';\n id: FieldWrapper;\n title: FieldWrapper;\n chartType: FieldWrapper;\n configuration: Array>;\n variant: FieldWrapper;\n};\n\nexport enum IReportChartType {\n Horizontal = 'HORIZONTAL',\n Vertical = 'VERTICAL',\n Table = 'TABLE',\n Summary = 'SUMMARY'\n}\n\nexport type IReportCollection = {\n __typename?: 'ReportCollection';\n tabId: FieldWrapper;\n groups: Array>;\n reportCount: FieldWrapper;\n};\n\nexport type IReportPage = {\n __typename?: 'ReportPage';\n title?: Maybe>;\n description?: Maybe>;\n charts: Array>;\n sections?: Maybe>>;\n};\n\nexport type IReportPageInput = {\n pageCode: IPageCode;\n};\n\nexport type IReportPageSection = {\n __typename?: 'ReportPageSection';\n title?: Maybe>;\n description?: Maybe>;\n reports: Array>;\n};\n\nexport enum IReportType {\n HorizontalBar = 'HORIZONTAL_BAR',\n HorizontalBarDataVis = 'HORIZONTAL_BAR_DATA_VIS',\n HorizontalBarInsightCodes = 'HORIZONTAL_BAR_INSIGHT_CODES',\n HorizontalBarInsightCodesStacked = 'HORIZONTAL_BAR_INSIGHT_CODES_STACKED',\n VerticalBar = 'VERTICAL_BAR',\n VerticalBarDataVis = 'VERTICAL_BAR_DATA_VIS',\n VerticalBarInsightCodes = 'VERTICAL_BAR_INSIGHT_CODES',\n VerticalBarInsightCodesStacked = 'VERTICAL_BAR_INSIGHT_CODES_STACKED',\n Table = 'TABLE',\n TableDataVis = 'TABLE_DATA_VIS',\n TableInsightCodes = 'TABLE_INSIGHT_CODES',\n TableInsightCodesStacked = 'TABLE_INSIGHT_CODES_STACKED',\n OverTimeDataVis = 'OVER_TIME_DATA_VIS',\n OverTimeInsightCodes = 'OVER_TIME_INSIGHT_CODES',\n PieChartInsightCodes = 'PIE_CHART_INSIGHT_CODES'\n}\n\nexport type IRisk = IClientRisk | IAcinRisk;\n\nexport type IRiskAlignmentOverviewChart = {\n __typename?: 'RiskAlignmentOverviewChart';\n id: FieldWrapper;\n name: FieldWrapper;\n description: FieldWrapper;\n keys: Array>;\n data: Array>;\n};\n\nexport type IRiskAlignmentOverviewChartCollection = {\n __typename?: 'RiskAlignmentOverviewChartCollection';\n name?: Maybe>;\n totalRisks: FieldWrapper;\n items: Array>;\n};\n\nexport type IRiskAlignmentOverviewChartValue = {\n __typename?: 'RiskAlignmentOverviewChartValue';\n name: FieldWrapper;\n description: FieldWrapper;\n total: FieldWrapper;\n colorPalette: FieldWrapper;\n collection: Array>;\n};\n\nexport type IRiskAnalysisResult = {\n __typename?: 'RiskAnalysisResult';\n id: FieldWrapper;\n chart: FieldWrapper;\n controlList: FieldWrapper;\n};\n\nexport type IRiskDetailsControlList = ICompletenessReportControlListPageGroup;\n\nexport type IRiskIntelligence = {\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n createdAt: FieldWrapper;\n description: FieldWrapper;\n content: FieldWrapper;\n authorTitle: FieldWrapper;\n hasAnalyticsData: FieldWrapper;\n lockedInventoryGroup?: Maybe>;\n favourite: FieldWrapper;\n impact: FieldWrapper;\n};\n\nexport type IRiskIntelligenceAlert = {\n __typename?: 'RiskIntelligenceAlert';\n title: FieldWrapper;\n};\n\nexport type IRiskIntelligenceAlertInput = {\n id: Scalars['String'];\n insightBy?: Maybe;\n};\n\nexport enum IRiskIntelligenceAlertInsightType {\n BusinessLine = 'BUSINESS_LINE',\n Index = 'INDEX'\n}\n\nexport type IRiskIntelligenceAlertRelatedData = {\n __typename?: 'RiskIntelligenceAlertRelatedData';\n sources: Array>;\n regulations: Array>;\n fine?: Maybe>;\n indexRisks: Array>;\n};\n\nexport type IRiskIntelligenceFeed = {\n __typename?: 'RiskIntelligenceFeed';\n alerts: Array>;\n};\n\nexport type IRiskIntelligenceFeedAlert = {\n __typename?: 'RiskIntelligenceFeedAlert';\n id: FieldWrapper;\n type: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n datePublished: FieldWrapper;\n fineValue?: Maybe>;\n clientControlCount?: Maybe>;\n clientRiskCount?: Maybe>;\n};\n\nexport type IRiskIntelligenceFeedInput = {\n filters?: Maybe;\n pagination?: Maybe;\n};\n\nexport type IRiskIntelligenceHubFilters = {\n __typename?: 'RiskIntelligenceHubFilters';\n availableFilters?: Maybe>;\n};\n\nexport type IRiskIntelligenceImpact = {\n __typename?: 'RiskIntelligenceImpact';\n totalImpactedRisks: FieldWrapper;\n totalImpactedControls: FieldWrapper;\n totalImpactedRiskInventories: FieldWrapper;\n totalImpactedBusinessLines: FieldWrapper;\n};\n\nexport type IRiskIntelligenceInput = {\n filters?: Maybe;\n sorting?: Maybe;\n pagination?: Maybe;\n};\n\nexport type IRiskIntelligenceLockedInventoryGroup = {\n __typename?: 'RiskIntelligenceLockedInventoryGroup';\n nodes: Array>;\n};\n\nexport type IRiskIntelligenceLockedInventoryGroupItem = {\n __typename?: 'RiskIntelligenceLockedInventoryGroupItem';\n id: FieldWrapper;\n riskInventory: FieldWrapper;\n totalImpactedAcinControls: FieldWrapper;\n};\n\nexport type IRiskIntelligenceNetworkScenario = IRiskIntelligence & {\n __typename?: 'RiskIntelligenceNetworkScenario';\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n createdAt: FieldWrapper;\n description: FieldWrapper;\n content: FieldWrapper;\n authorTitle: FieldWrapper;\n incidentType: FieldWrapper;\n sources: Array>;\n regulations: Array>;\n impact: FieldWrapper;\n lockedInventoryGroup?: Maybe>;\n favourite: FieldWrapper;\n hasAnalyticsData: FieldWrapper;\n};\n\nexport type IRiskIntelligenceNetworkUpdate = IRiskIntelligence & {\n __typename?: 'RiskIntelligenceNetworkUpdate';\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n createdAt: FieldWrapper;\n description: FieldWrapper;\n content: FieldWrapper;\n authorTitle: FieldWrapper;\n incidentType?: Maybe>;\n status: FieldWrapper;\n sources: Array>;\n regulations: Array>;\n impact: FieldWrapper;\n hasAnalyticsData: FieldWrapper;\n lockedInventoryGroup?: Maybe>;\n favourite: FieldWrapper;\n};\n\nexport type IRiskIntelligencePage = {\n __typename?: 'RiskIntelligencePage';\n pagination?: Maybe>;\n nodes: Array>;\n activeSorting?: Maybe>;\n unfilteredTotal?: Maybe>;\n};\n\nexport type IRiskIntelligenceRegulation = {\n __typename?: 'RiskIntelligenceRegulation';\n regulator?: Maybe>;\n regulation?: Maybe>;\n regulationArticles: Array>;\n};\n\nexport type IRiskIntelligenceRegulatoryAlert = IRiskIntelligence & {\n __typename?: 'RiskIntelligenceRegulatoryAlert';\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n createdAt: FieldWrapper;\n description: FieldWrapper;\n content: FieldWrapper;\n authorTitle: FieldWrapper;\n incidentType: FieldWrapper;\n sources: Array>;\n regulations: Array>;\n impact: FieldWrapper;\n favourite: FieldWrapper;\n hasAnalyticsData: FieldWrapper;\n lockedInventoryGroup?: Maybe>;\n originalPublishDate: FieldWrapper;\n originalLastUpdated: FieldWrapper;\n classification: FieldWrapper;\n};\n\nexport type IRiskIntelligenceRisk = {\n __typename?: 'RiskIntelligenceRisk';\n id: FieldWrapper;\n code: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IRiskIntelligenceSource = {\n __typename?: 'RiskIntelligenceSource';\n label?: Maybe>;\n url: FieldWrapper;\n};\n\nexport type IRiskIntelligenceTableItem = {\n __typename?: 'RiskIntelligenceTableItem';\n id: FieldWrapper;\n publishDate: FieldWrapper;\n title: FieldWrapper;\n type: FieldWrapper;\n impact: FieldWrapper;\n favourite: FieldWrapper;\n};\n\nexport enum IRiskIntelligenceType {\n NetworkScenario = 'NetworkScenario',\n RegulatoryAlert = 'RegulatoryAlert',\n NetworkUpdate = 'NetworkUpdate'\n}\n\nexport type IRiskInventory = {\n __typename?: 'RiskInventory';\n id: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IRiskInventoryHistory = {\n __typename?: 'RiskInventoryHistory';\n id: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type IRole = {\n __typename?: 'Role';\n id: FieldWrapper;\n name: FieldWrapper;\n description?: Maybe>;\n};\n\nexport type ISearchAccountsInput = {\n term?: Maybe;\n riskInventoryIds?: Maybe>;\n};\n\nexport type ISearchAccountsPage = {\n __typename?: 'SearchAccountsPage';\n totalAccounts: FieldWrapper;\n nodes: Array>;\n};\n\nexport type ISearchAcinControlsInput = {\n term?: Maybe;\n riskInventoryIds?: Maybe>;\n};\n\nexport type ISearchAcinControlsPage = {\n __typename?: 'SearchAcinControlsPage';\n totalAvailableControls: FieldWrapper;\n nodes: Array>;\n};\n\nexport type ISearchAcinRisksInput = {\n term?: Maybe;\n riskInventoryIds?: Maybe>;\n};\n\nexport type ISearchAcinRisksPage = {\n __typename?: 'SearchAcinRisksPage';\n nodes: Array>;\n};\n\nexport type ISearchMatchingControlsInput = {\n accountCode?: Maybe;\n searchTerm: Scalars['String'];\n};\n\nexport type ISearchMatchingControlsResponse = {\n __typename?: 'SearchMatchingControlsResponse';\n controls: Array>;\n};\n\nexport type ISearchMatchingJobControlsInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n searchTerm: Scalars['String'];\n};\n\nexport type ISearchRegulatorInput = {\n term?: Maybe;\n};\n\nexport type ISearchRegulatorsPage = {\n __typename?: 'SearchRegulatorsPage';\n nodes: Array>;\n};\n\nexport type ISearchRiskInventoriesInput = {\n term?: Maybe;\n};\n\nexport type ISearchRiskInventoriesPage = {\n __typename?: 'SearchRiskInventoriesPage';\n nodes: Array>;\n};\n\nexport type ISecondaryBarChartValue = {\n __typename?: 'SecondaryBarChartValue';\n text: FieldWrapper;\n isAcin?: Maybe>;\n};\n\nexport enum ISentiment {\n Positive = 'POSITIVE',\n Neutral = 'NEUTRAL',\n Negative = 'NEGATIVE'\n}\n\nexport enum ISortDirection {\n Asc = 'ASC',\n Desc = 'DESC'\n}\n\nexport type ISortField = {\n __typename?: 'SortField';\n field: FieldWrapper;\n direction: FieldWrapper;\n label: FieldWrapper;\n};\n\nexport type ISortInfo = {\n __typename?: 'SortInfo';\n sort: FieldWrapper;\n available: Array>;\n};\n\nexport type ISortInput = {\n direction: ISortDirection;\n field: Scalars['String'];\n};\n\nexport type IStatusReport = {\n __typename?: 'StatusReport';\n id: FieldWrapper;\n availableCharts: Array>;\n benchmarkOverview: FieldWrapper;\n};\n\nexport type IStatusReportChart = IControlAlignmentOverviewChart | IRiskAlignmentOverviewChart;\n\nexport type IStorageFileType = {\n __typename?: 'StorageFileType';\n id: FieldWrapper;\n isFolder: FieldWrapper;\n name: FieldWrapper;\n};\n\nexport type ISubmitClustersForApprovalInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n clusterIds: Array;\n};\n\nexport type ISubmitClustersForApprovalResponse = {\n __typename?: 'SubmitClustersForApprovalResponse';\n clusters: Array>;\n};\n\nexport type ISubmitControlsForApprovalInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n controlIds: Array;\n};\n\nexport type ISubmitControlsForApprovalResponse = {\n __typename?: 'SubmitControlsForApprovalResponse';\n controls: Array>;\n};\n\nexport type ISuggestedMatch = {\n __typename?: 'SuggestedMatch';\n control: FieldWrapper;\n certainty: FieldWrapper;\n};\n\nexport type ITable = {\n __typename?: 'Table';\n headers?: Maybe>;\n rows: Array>;\n};\n\nexport type ITableCell = {\n __typename?: 'TableCell';\n id: FieldWrapper;\n key: FieldWrapper;\n text?: Maybe>;\n count?: Maybe>;\n content?: Maybe>;\n info?: Maybe>;\n};\n\nexport type ITableCellContent = ITableInsightCategory | INetworkSignalScore | ITableInsightCounts | ITableControlQualityScore;\n\nexport type ITableCellInfo = {\n __typename?: 'TableCellInfo';\n showAcinLogo?: Maybe>;\n isAcin?: Maybe>;\n isLink?: Maybe>;\n id?: Maybe>;\n entityId?: Maybe>;\n type?: Maybe>;\n businessOrgId?: Maybe>;\n riskInventoryId?: Maybe>;\n};\n\nexport type ITableControlQualityScore = {\n __typename?: 'TableControlQualityScore';\n controlQualityScore: FieldWrapper;\n};\n\nexport type ITableHeader = {\n __typename?: 'TableHeader';\n variant: FieldWrapper;\n cells?: Maybe>>;\n};\n\nexport enum ITableHeaderType {\n Outer = 'OUTER',\n Inner = 'INNER'\n}\n\nexport type ITableInput = {\n id?: Maybe;\n variant: ITableVariant;\n configuration?: Maybe>;\n filters?: Maybe;\n pagination?: Maybe;\n};\n\nexport type ITableInsightCategory = {\n __typename?: 'TableInsightCategory';\n id: FieldWrapper;\n label: FieldWrapper;\n colorPalette: FieldWrapper;\n};\n\nexport type ITableInsightCountItem = {\n __typename?: 'TableInsightCountItem';\n label: FieldWrapper;\n count: FieldWrapper;\n colorPalette: FieldWrapper;\n};\n\nexport type ITableInsightCounts = {\n __typename?: 'TableInsightCounts';\n nodes: Array>;\n};\n\nexport type ITableRefresherBarChart = {\n __typename?: 'TableRefresherBarChart';\n id?: Maybe>;\n chartTitle?: Maybe>;\n negativeKeys: Array>;\n positiveKeys: Array>;\n data: Array>;\n nameHeader?: Maybe>;\n valueHeader: FieldWrapper;\n secondaryHeader?: Maybe>;\n hideLegend?: Maybe>;\n};\n\nexport type ITableRefresherBarChartGroup = {\n __typename?: 'TableRefresherBarChartGroup';\n id: FieldWrapper;\n name: FieldWrapper;\n showName?: Maybe>;\n filters?: Maybe>;\n secondaryValue?: Maybe>;\n values: Array>;\n info?: Maybe>;\n};\n\nexport type ITableRefresherBarChartHeader = {\n __typename?: 'TableRefresherBarChartHeader';\n sortable: FieldWrapper;\n name: FieldWrapper;\n key: FieldWrapper;\n direction?: Maybe>;\n};\n\nexport type ITableRefresherBarChartValue = {\n __typename?: 'TableRefresherBarChartValue';\n key: FieldWrapper;\n name: FieldWrapper;\n total: FieldWrapper;\n percentage?: Maybe>;\n id?: Maybe>;\n info?: Maybe>;\n};\n\nexport type ITableResult = {\n __typename?: 'TableResult';\n id: FieldWrapper;\n table: FieldWrapper;\n title?: Maybe>;\n pagination?: Maybe>;\n};\n\nexport type ITableRow = {\n __typename?: 'TableRow';\n id: FieldWrapper;\n variant: FieldWrapper;\n cells: Array>;\n rows?: Maybe>>;\n table?: Maybe>;\n};\n\nexport enum ITableRowType {\n Grandparent = 'GRANDPARENT',\n Parent = 'PARENT',\n Child = 'CHILD'\n}\n\nexport enum ITableVariant {\n Instance = 'INSTANCE',\n Distinct = 'DISTINCT'\n}\n\nexport type ITemplateGroup = {\n __typename?: 'TemplateGroup';\n id: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n lockedGroup: FieldWrapper;\n nodes: Array>;\n};\n\nexport type ITemplateQuery = {\n __typename?: 'TemplateQuery';\n id: FieldWrapper;\n date: FieldWrapper;\n favourite: FieldWrapper;\n title: FieldWrapper;\n description: FieldWrapper;\n lockedQuery: FieldWrapper;\n comparison: FieldWrapper;\n result?: Maybe>;\n activeFilters?: Maybe>;\n activeConfiguration?: Maybe>;\n author?: Maybe>;\n shared: FieldWrapper;\n};\n\n\nexport type ITemplateQueryResultArgs = {\n input?: Maybe;\n};\n\nexport type ITemplateQueryResult = IClientControlsByRisk | IStatusReport | IAcinControlsByRisk | ICompletenessReport | ICompletenessOverTimeReport;\n\nexport type ITemplateQueryResultInput = {\n filters?: Maybe;\n};\n\nexport enum IUiTheme {\n Default = 'DEFAULT',\n Dark = 'DARK'\n}\n\nexport type IUnclearQualityDescriptor = {\n __typename?: 'UnclearQualityDescriptor';\n id: FieldWrapper;\n description: FieldWrapper;\n};\n\nexport type IUnclearQualityDescriptorResponse = {\n __typename?: 'UnclearQualityDescriptorResponse';\n unclearQualityDescriptors: Array>;\n};\n\nexport type IUnmatchedIndexControl = {\n __typename?: 'UnmatchedIndexControl';\n id: FieldWrapper;\n code: FieldWrapper;\n name: FieldWrapper;\n description: FieldWrapper;\n controlType?: Maybe>;\n frequency?: Maybe>;\n automation?: Maybe>;\n riaDescription?: Maybe>;\n risks: Array>;\n indices: Array>;\n status: FieldWrapper;\n};\n\nexport enum IUnmatchedIndexControlStatus {\n ToConnect = 'TO_CONNECT',\n Missing = 'MISSING',\n Approved = 'APPROVED'\n}\n\nexport type IUnmatchedIndexControlsInput = {\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n pagination?: Maybe;\n filters?: Maybe;\n};\n\nexport type IUnmatchedIndexControlsResponse = {\n __typename?: 'UnmatchedIndexControlsResponse';\n controls: Array>;\n pagination?: Maybe>;\n};\n\nexport type IUnresolvedMatchingInfo = {\n __typename?: 'UnresolvedMatchingInfo';\n remainingApprovers: Array>;\n nextWorkflow?: Maybe>;\n};\n\nexport type IUpdateAccountInput = {\n name: Scalars['String'];\n};\n\nexport type IUpdateConfiguratorReportInput = {\n name?: Maybe;\n description?: Maybe;\n shareWithOrganisation?: Maybe;\n configuration?: Maybe>;\n filters?: Maybe;\n table?: Maybe;\n quickFilterIds?: Maybe>;\n};\n\nexport type IUpdateEmailNotificationSettingsInput = {\n updatedNotificationCategories: Array;\n};\n\nexport type IUpdateMatchingJobControlInput = {\n id: Scalars['ID'];\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n proposed?: Maybe;\n approved?: Maybe;\n metrics?: Maybe;\n};\n\nexport type IUpdateProposedQuality = {\n descriptorId?: Maybe;\n};\n\nexport type IUpdateReportInput = {\n name?: Maybe;\n description?: Maybe;\n shareWithOrganisation?: Maybe;\n configuration?: Maybe;\n filters?: Maybe;\n};\n\nexport type IUpdateUnmatchedIndexControlInput = {\n unmatchedIndexControlId: Scalars['ID'];\n accountCode: Scalars['String'];\n matchingJobId: Scalars['String'];\n matchedIds: Array;\n};\n\nexport type IUpdateUserInput = {\n name?: Maybe;\n accountId: Scalars['ID'];\n email?: Maybe;\n};\n\nexport type IUpdatedEmailNotificationCategory = {\n code: Scalars['String'];\n isEnabled: Scalars['Boolean'];\n};\n\nexport type IUser = {\n __typename?: 'User';\n id: FieldWrapper;\n name: FieldWrapper;\n email: FieldWrapper;\n permissions?: Maybe>>>;\n avatar?: Maybe>;\n accountId?: Maybe>;\n account: FieldWrapper;\n preferences: FieldWrapper;\n};\n\nexport type IUserAuthorizationResponse = {\n __typename?: 'UserAuthorizationResponse';\n permissions: Array>;\n};\n\nexport type IUserInvitationInput = {\n email: Scalars['String'];\n};\n\nexport type IUserPreferences = {\n __typename?: 'UserPreferences';\n theme?: Maybe>;\n};\n\nexport type IValidateReportNameInput = {\n reportName: Scalars['String'];\n reportId?: Maybe;\n isSharable: Scalars['Boolean'];\n};\n\nexport type IValidateReportNameResult = {\n __typename?: 'ValidateReportNameResult';\n isValid: FieldWrapper;\n message?: Maybe>;\n};\n","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am4core.percent(X)`.\r\n *\r\n * `Percent` type objects can be used in a number of dual-measuring or\r\n * positioning properties, like `width`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JavaScript\r\n * chart.paddingRight = new Percent(10);\r\n * // or\r\n * chart.paddingRight = am4core.percent(10);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"paddingRight\": \"10%\"\r\n * }\r\n * ```\r\n */\nvar Percent = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\n function Percent(percent) {\n this._value = percent;\n }\n Object.defineProperty(Percent.prototype, \"value\", {\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am4core.Percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am4core.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am4core.percent(50);\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\n get: function () {\n return this._value / 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Percent.prototype, \"percent\", {\n /**\r\n * Value in percent.\r\n *\r\n * @return Percent\r\n */\n get: function () {\n return this._value;\n },\n enumerable: true,\n configurable: true\n });\n Percent.prototype.toString = function () {\n return \"\" + this._value + \"%\";\n };\n return Percent;\n}();\nexport { Percent };\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.radius = am4core.percent(80);\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\nexport function percent(value) {\n return new Percent(value);\n}\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\nexport function isPercent(value) {\n return value instanceof Percent;\n}\n//# sourceMappingURL=Percent.js.map","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @todo Review unused functions for removal\r\n * @hidden\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { percent, isPercent } from \"./Percent\";\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n * @deprecated Is not used anywhere. JS built-in isNaN is used everywhere. Maybe we don't need this, or if we do, then we should use it everywhere\r\n */\nexport function isNaN(value) {\n return Number(value) !== value;\n}\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n */\nexport function getType(value) {\n return {}.toString.call(value);\n}\n/**\r\n * Returns a default value if the passed in value is empty.\r\n *\r\n * @param value Input value\r\n * @param optional Default value\r\n * @return Value or default value whichever is available\r\n * @deprecated Not used anywhere\r\n */\nexport function getDefault(value, optional) {\n return value || optional;\n}\n/**\r\n * Checks if the passed in value is a string.\r\n *\r\n * @param value Value\r\n * @return Is string?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\nexport function checkString(value) {\n if (typeof value === \"string\") {\n return true;\n } else {\n throw new Error(\"Expected a string but got \" + getType(value));\n }\n}\n/**\r\n * Checks if the passed in value is a boolean.\r\n *\r\n * @param value Value\r\n * @return Is boolean?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\nexport function checkBoolean(value) {\n if (typeof value === \"boolean\") {\n return true;\n } else {\n throw new Error(\"Expected a boolean but got \" + getType(value));\n }\n}\n/**\r\n * Checks if the passed in value is a number.\r\n *\r\n * @param value Value\r\n * @return Is number?\r\n * @throws {Error}\r\n */\nexport function checkNumber(value) {\n if (typeof value === \"number\") {\n if (isNaN(value)) {\n throw new Error(\"Expected a number but got NaN\");\n }\n } else {\n throw new Error(\"Expected a number but got \" + getType(value));\n }\n return true;\n}\n/**\r\n * Checks if the passed in value is an object.\r\n *\r\n * @param value Value\r\n * @return Is object?\r\n * @throws {Error}\r\n * @todo Is the input type correct?\r\n * @deprecated Not used anywhere\r\n */\nexport function checkObject(value) {\n var t = getType(value);\n if (t === \"[object Object]\") {\n return true;\n } else {\n throw new Error(\"Expected an object but got \" + t);\n }\n}\n/**\r\n * Checks if the passed in value is an array.\r\n *\r\n * @param value Value\r\n * @return Is array?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\nexport function checkArray(value) {\n if (Array.isArray(value)) {\n return true;\n } else {\n throw new Error(\"Expected an array but got \" + getType(value));\n }\n}\n/**\r\n * Checks if the passed in value is a Date object.\r\n *\r\n * @param value Value\r\n * @return Is Date object?\r\n * @throws {Error}\r\n * @deprecated Not used anywhere\r\n */\nexport function checkDate(value) {\n var t = getType(value);\n if (t === \"[object Date]\") {\n return true;\n } else {\n throw new Error(\"Expected a date but got \" + t);\n }\n}\n/**\r\n * ============================================================================\r\n * TYPE CASTING\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Casts string or a number into string.\r\n *\r\n * @param value Input\r\n * @return String value\r\n * @deprecated Not used anywhere\r\n */\nexport function castString(value) {\n if (typeof value === \"string\") {\n return value;\n } else if (typeof value === \"number\") {\n return \"\" + value;\n } else {\n throw new Error(\"Expected a string or number but got \" + getType(value));\n }\n}\n/**\r\n * Casts string or a number into a number.\r\n *\r\n * @param value Input value\r\n * @return Number value\r\n * @throws {Error}\r\n */\nexport function castNumber(value) {\n if (typeof value === \"string\") {\n var number = +value;\n if (isNaN(number)) {\n throw new Error(\"Cannot cast string \" + JSON.stringify(value) + \" to a number\");\n } else {\n return number;\n }\n } else if (typeof value === \"number\") {\n if (isNaN(value)) {\n throw new Error(\"Expected a number but got NaN\");\n } else {\n return value;\n }\n } else {\n var t = getType(value);\n if (t === \"[object Date]\") {\n return value.getTime();\n } else {\n throw new Error(\"Expected a string, number, or date but got \" + t);\n }\n }\n}\n/**\r\n * Casts number, string or Date into a Date object.\r\n *\r\n * @param value Input value\r\n * @return Date object\r\n * @deprecated Not used anywhere\r\n * @throws {Error}\r\n * @hidden\r\n * @deprecated\r\n */\n/*export function castDate(value: string | number | Date, formatter?: DateFormatter): Date {\r\n if (typeof value === \"string\") {\r\n if (formatter) {\r\n return formatter.parse(value);\r\n }\r\n return new Date(value);\r\n\r\n } else if (typeof value === \"number\") {\r\n return new Date(value);\r\n\r\n } else {\r\n const t = getType(value);\r\n\r\n if (t === \"[object Date]\") {\r\n return value;\r\n\r\n } else {\r\n throw new Error(\"Expected a string, number, or date but got \" + t);\r\n }\r\n }\r\n}*/\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Converts any value into `boolean`.\r\n *\r\n * @param value Source value\r\n * @return `true` or `false`\r\n */\nexport function toBoolean(value) {\n return value ? true : false;\n}\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\nexport function toNumber(value) {\n if (hasValue(value) && !isNumber(value)) {\n var converted = Number(value);\n if (isNaN(converted) && isString(value) && value != \"\") {\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\n }\n return converted;\n }\n return value;\n}\n/**\r\n * Converts any value into a string (text).\r\n *\r\n * @param value Source value\r\n * @return String representation of the input\r\n */\nexport function toText(value) {\n if (hasValue(value) && !isString(value)) {\n if (isNumber(value)) {\n return castString(value);\n } else if (isObject(value)) {\n return value.toString();\n }\n }\n return value;\n}\n/**\r\n * Converts any value to a number or [[Percent]].\r\n *\r\n * If the parameter is a string and contains \"%\", it will\r\n * convert it into a [[Percent]].\r\n *\r\n * Otherwise, it will convert into a number.\r\n *\r\n * @param value Number or percent\r\n * @return Percent object\r\n */\nexport function toNumberOrPercent(value) {\n if (!hasValue(value) || isNumber(value) || isPercent(value)) {\n return value;\n }\n if (isString(value) && value.indexOf(\"%\") != -1) {\n return percent(toNumber(value));\n }\n return toNumber(value);\n}\n/**\r\n * Checks if a variable has a value.\r\n *\r\n * @param a Input value\r\n * @returns Has value?\r\n */\nexport function hasValue(a) {\n return a != null;\n}\n/**\r\n * Returns a value or throws an {Error} exception if the variable has not\r\n * value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\nexport function getValue(a) {\n if (hasValue(a)) {\n return a;\n } else {\n throw new Error(\"Value doesn't exist\");\n }\n}\n/**\r\n * Returns a value, or returns the default value if it doesn't have a value.\r\n *\r\n * @param a Input value\r\n * @returns Value\r\n */\nexport function getValueDefault(a, defaultValue) {\n if (hasValue(a)) {\n return a;\n } else {\n return defaultValue;\n }\n}\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\nexport function isDate(value) {\n return getType(value) === \"[object Date]\";\n}\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\nexport function isString(value) {\n return typeof value === \"string\";\n}\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\nexport function isNumber(value) {\n return typeof value === \"number\" && Number(value) == value;\n}\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\nexport function isObject(value) {\n return typeof value === \"object\" && value != null;\n}\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\nexport function isArray(value) {\n return Array.isArray(value);\n}\n//# sourceMappingURL=Type.js.map","/**\r\n * A collection of Math-related functions\r\n *\r\n * @todo Comment trigonometric functions?\r\n */\nimport * as $type from \"./Type\";\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\nexport var PI = Math.PI;\nexport var HALFPI = PI / 2;\nexport var RADIANS = PI / 180;\nexport var DEGREES = 180 / PI;\n/**\r\n * Converts any value and fits it into a specific value range.\r\n *\r\n * @param value Source value\r\n * @param min Minimum allowable value\r\n * @param max Maximum allowable value\r\n * @return Number\r\n */\nexport function toNumberRange(value, min, max) {\n if ($type.hasValue(value)) {\n value = $type.toNumber(value);\n return fitToRange(value, min, max);\n }\n return value;\n}\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\nexport function round(value, precision, floor) {\n if (!$type.isNumber(precision) || precision <= 0) {\n var rounded = Math.round(value);\n if (floor) {\n if (rounded - value == 0.5) {\n rounded--;\n }\n }\n return rounded;\n } else {\n var d = Math.pow(10, precision);\n return Math.round(value * d) / d;\n }\n}\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\nexport function ceil(value, precision) {\n if (!$type.isNumber(precision) || precision <= 0) {\n return Math.ceil(value);\n } else {\n var d = Math.pow(10, precision);\n return Math.ceil(value * d) / d;\n }\n}\n/**\r\n * Stretches `t` so that it will always be between `from` and `to`.\r\n *\r\n * @param t Number from 0 to 1\r\n * @param from Lowest possible value\r\n * @param to Highest possible value\r\n * @return Adjusted value\r\n */\nexport function stretch(t, from, to) {\n return t * (to - from) + from;\n}\n/**\r\n * Adjust numeric value so it fits to specific value range.\r\n *\r\n * @param value Value\r\n * @param minValue Lowest possible value\r\n * @param maxValue Highest possible value\r\n * @return Adjusted value\r\n */\nexport function fitToRange(value, minValue, maxValue) {\n if ($type.isNumber(minValue)) {\n if ($type.isNumber(maxValue) && maxValue < minValue) {\n var temp = maxValue;\n maxValue = minValue;\n minValue = temp;\n }\n if (value < minValue) {\n value = minValue;\n }\n }\n if ($type.isNumber(maxValue)) {\n if (value > maxValue) {\n value = maxValue;\n }\n }\n return value;\n}\n/**\r\n * Returns sine of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\nexport function sin(value) {\n return round(Math.sin(RADIANS * value), 10);\n}\n/**\r\n * Returns tan of a number.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\nexport function tan(value) {\n return round(Math.tan(RADIANS * value), 10);\n}\n/**\r\n * Returns cosine of a number.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\nexport function cos(value) {\n return round(Math.cos(RADIANS * value), 10);\n}\nexport function max(left, right) {\n if ($type.isNumber(left)) {\n if ($type.isNumber(right)) {\n if (right > left) {\n return right;\n } else {\n return left;\n }\n } else {\n return left;\n }\n } else if ($type.isNumber(right)) {\n return right;\n } else {\n return null;\n }\n}\nexport function min(left, right) {\n if ($type.isNumber(left)) {\n if ($type.isNumber(right)) {\n if (right < left) {\n return right;\n } else {\n return left;\n }\n } else {\n return left;\n }\n } else if ($type.isNumber(right)) {\n return right;\n } else {\n return null;\n }\n}\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\nexport function closest(values, referenceValue) {\n return values.reduce(function (prev, curr) {\n return Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev;\n });\n}\n/**\r\n * Checks whether two ranges of values intersect.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Any intersecting numbers?\r\n */\nexport function intersect(range1, range2) {\n var start1 = $type.getValue(range1.start);\n var start2 = $type.getValue(range2.start);\n var end1 = $type.getValue(range1.end);\n var end2 = $type.getValue(range2.end);\n return Math.max(start1, start2) <= Math.min(end1, end2);\n}\n/**\r\n * Inverts the range of values.\r\n *\r\n * @param range Range\r\n */\nexport function invertRange(range) {\n var start = $type.getValue(range.start);\n var end = $type.getValue(range.end);\n return {\n start: 1 - end,\n end: 1 - start\n };\n}\n/**\r\n * Returns an intersection range between two ranges of values.\r\n *\r\n * @param range1 Range 1\r\n * @param range2 Range 2\r\n * @return Intersecting value range\r\n */\nexport function intersection(range1, range2) {\n var start1 = $type.getValue(range1.start);\n var start2 = $type.getValue(range2.start);\n var end1 = $type.getValue(range1.end);\n var end2 = $type.getValue(range2.end);\n var startMax = Math.max(start1, start2);\n var endMin = Math.min(end1, end2);\n if (endMin < startMax) {\n return undefined;\n } else {\n return {\n start: startMax,\n end: endMin\n };\n }\n}\n/**\r\n * Returns pixel \"distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\nexport function getDistance(point1, point2) {\n if (!point1) {\n return 0;\n }\n if (!point2) {\n point2 = {\n x: 0,\n y: 0\n };\n }\n return Math.sqrt(Math.pow(Math.abs(point1.x - point2.x), 2) + Math.pow(Math.abs(point1.y - point2.y), 2));\n}\n/**\r\n * Returns pixel \"horizontal distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\nexport function getHorizontalDistance(point1, point2) {\n if (!point1) {\n return 0;\n }\n if (!point2) {\n point2 = {\n x: 0,\n y: 0\n };\n }\n return Math.abs(point1.x - point2.x);\n}\n/**\r\n * Returns pixel \"vertical distance\" between two points.\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Distance in relative pixels\r\n */\nexport function getVerticalDistance(point1, point2) {\n if (!point1) {\n return 0;\n }\n if (!point2) {\n point2 = {\n x: 0,\n y: 0\n };\n }\n return Math.abs(point1.y - point2.y);\n}\n/**\r\n * Returns approximate pixel \"distance\" between two points of cubic curve\r\n *\r\n * If second point is not specified, distance from {x:0, y:0} point is\r\n * calculated.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @param controlPointA Control Point 1\r\n * @param controlPointB Control Point 2\r\n * @param stepCount number of steps (the more, the more accurate result)\r\n * @return Distance in relative pixels\r\n */\nexport function getCubicCurveDistance(point1, point2, controlPointA, controlPointB, stepCount) {\n if (!point1) {\n return 0;\n }\n if (!point2) {\n point2 = {\n x: 0,\n y: 0\n };\n }\n var distance = 0;\n var prevPoint = point1;\n if (stepCount > 0) {\n for (var s = 0; s <= stepCount; s++) {\n var point = getPointOnCubicCurve(point1, point2, controlPointA, controlPointB, s / stepCount);\n distance += getDistance(prevPoint, point);\n prevPoint = point;\n }\n }\n return distance;\n}\n/**\r\n * Returns scale based on original and end position of the two points.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Scale Calculated scale\r\n */\nexport function getScale(point1, startPoint1, point2, startPoint2) {\n var initialDistance = getDistance(startPoint1, startPoint2);\n var currentDistance = getDistance(point1, point2);\n return Math.abs(currentDistance / initialDistance);\n}\n/**\r\n * Returns an exact mid point between two points.\r\n *\r\n * @param point1 Position of point 1\r\n * @param point2 Position of point 2\r\n * @return Mid point Position of mid-point\r\n */\nexport function getMidPoint(point1, point2, position) {\n if (!$type.isNumber(position)) {\n position = 0.5;\n }\n return {\n \"x\": point1.x + (point2.x - point1.x) * position,\n \"y\": point1.y + (point2.y - point1.y) * position\n };\n}\n/**\r\n * Returns difference in angles between starting and ending position of two\r\n * vectors.\r\n *\r\n * @param point1 Current position of point 1\r\n * @param startPoint1 Start position of point 1\r\n * @param point2 Current position of point 1\r\n * @param startPoint2 Start position of point 2\r\n * @return Angle difference in degrees\r\n */\nexport function getRotation(point1, startPoint1, point2, startPoint2) {\n // Get start and end angles\n var startAngle = getAngle(startPoint1, startPoint2);\n var angle = getAngle(point1, point2);\n // Calculate angle\n var diff = startAngle - angle;\n if (diff < 0) {\n diff += 360;\n }\n return diff;\n}\n/**\r\n * Calculates angle of the vector based on two or one point.\r\n *\r\n * @param point1 Point 1\r\n * @param point2 Point 2\r\n * @return Angle in degrees\r\n */\nexport function getAngle(point1, point2) {\n if (!point2) {\n point2 = {\n x: point1.x * 2,\n y: point1.y * 2\n };\n }\n var diffX = point2.x - point1.x;\n var diffY = point2.y - point1.y;\n var angle = Math.atan2(diffY, diffX) * DEGREES;\n if (angle < 0) {\n angle += 360;\n }\n return normalizeAngle(angle);\n}\n/**\r\n * Returns the shift in coordinates of the center when item is rotated, moved\r\n * and scaled at the same time.\r\n *\r\n * @param center Current center\r\n * @param point1 Frst reference point\r\n * @param startPoint1 Original position of the first reference point\r\n * @param point2 Second reference point\r\n * @param startPoint2 Original position of the first reference point\r\n * @return Shift in center point coordinates\r\n */\nexport function getCenterShift(center, point1, startPoint1, point2, startPoint2) {\n // Get angle\n var angle = getRotation(point1, startPoint1, point2, startPoint2) - 90;\n if (angle < 0) {\n angle += 360;\n }\n // Get distance between new position\n var distance = getDistance(point1, point2);\n // Calculate new X\n var x = Math.cos(angle) / distance + point1.x;\n var y = Math.cos(angle) / distance + point1.y;\n var shift = {\n \"x\": x - center.x,\n \"y\": y - center.y\n };\n return shift;\n}\n/**\r\n * Converts an array of points into a bounding box rectangle.\r\n *\r\n * Array can contain any number of points.\r\n *\r\n * @param points Points\r\n * @return Bounding box rectangle\r\n */\nexport function getBBox(points) {\n if (points) {\n var length_1 = points.length;\n if (length_1 !== 0) {\n var left = void 0;\n var right = void 0;\n var top_1;\n var bottom = void 0;\n for (var i = 0; i < length_1; i++) {\n var point = points[i];\n if (!$type.isNumber(right) || point.x > right) {\n right = point.x;\n }\n if (!$type.isNumber(left) || point.x < left) {\n left = point.x;\n }\n if (!$type.isNumber(top_1) || point.y < top_1) {\n top_1 = point.y;\n }\n if (!$type.isNumber(bottom) || point.y > bottom) {\n bottom = point.y;\n }\n }\n return {\n x: left,\n y: top_1,\n width: right - left,\n height: bottom - top_1\n };\n }\n }\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n}\n/**\r\n * Returns a [[IRectangle]] object representing a common rectangle that fits\r\n * all passed in rectangles in it.\r\n *\r\n * @param rectangles An array of rectangles\r\n * @return Common rectangle\r\n */\nexport function getCommonRectangle(rectangles) {\n var length = rectangles.length;\n if (length !== 0) {\n var minX = void 0;\n var minY = void 0;\n var maxX = void 0;\n var maxY = void 0;\n for (var i = 0; i < length; i++) {\n var rectangle = rectangles[i];\n minX = min(rectangle.x, minX);\n minY = min(rectangle.y, minY);\n maxX = max(rectangle.x + rectangle.width, maxX);\n maxY = max(rectangle.y + rectangle.height, maxY);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n }\n}\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\n var x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\n var y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\n return {\n x: x,\n y: y\n };\n}\n/**\r\n * [getPointOnCubicCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPointA [description]\r\n * @param controlPointB [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\nexport function getPointOnCubicCurve(pointA, pointB, controlPointA, controlPointB, position) {\n var point = {\n x: 0,\n y: 0\n };\n var mt1 = 1 - position;\n var mt2 = mt1 * mt1;\n var mt3 = mt2 * mt1;\n point.x = pointA.x * mt3 + controlPointA.x * 3 * mt2 * position + controlPointB.x * 3 * mt1 * position * position + pointB.x * position * position * position;\n point.y = pointA.y * mt3 + controlPointA.y * 3 * mt2 * position + controlPointB.y * 3 * mt1 * position * position + pointB.y * position * position * position;\n return point;\n}\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\nexport function getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY) {\n tensionX = adjustTension(tensionX);\n tensionY = adjustTension(tensionY);\n return {\n x: (-p0.x + p1.x / tensionX + p2.x) * tensionX,\n y: (-p0.y + p1.y / tensionY + p2.y) * tensionY\n };\n}\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\nexport function getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY) {\n tensionX = adjustTension(tensionX);\n tensionY = adjustTension(tensionY);\n return {\n x: (p1.x + p2.x / tensionX - p3.x) * tensionX,\n y: (p1.y + p2.y / tensionY - p3.y) * tensionY\n };\n}\n/**\r\n * [adjustTension description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param tension [description]\r\n * @return [description]\r\n */\nexport function adjustTension(tension) {\n return 1 - tension + 0.00001;\n}\n/**\r\n * [normalizeAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @return [description]\r\n */\nexport function normalizeAngle(value) {\n if (value == 360) {\n return 360;\n }\n return value % 360;\n}\n/**\r\n * [normalizeAngleToRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo review this with various angles, can be tested on radar chart with custom start/end angles\r\n * @param value [description]\r\n * @param startAngle [description]\r\n * @param endAngle [description]\r\n * @return [description]\r\n */\nexport function fitAngleToRange(value, startAngle, endAngle) {\n if (startAngle > endAngle) {\n var temp = startAngle;\n startAngle = endAngle;\n endAngle = temp;\n }\n value = normalizeAngle(value);\n var count = (startAngle - normalizeAngle(startAngle)) / 360;\n if (value < startAngle) {\n value += 360 * (count + 1);\n }\n var maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\n var maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\n if (value > endAngle) {\n if (value - 360 > startAngle) {\n value -= 360;\n } else {\n if (value < maxEnd) {\n value = endAngle;\n } else {\n value = startAngle;\n }\n }\n }\n if (value < startAngle) {\n if (value > maxStart) {\n value = startAngle;\n } else {\n value = endAngle;\n }\n }\n return value;\n}\n/**\r\n * Returns [[IRectangle]] of an arc in relative values, assuming that the\r\n * center is at the circle center.\r\n *\r\n * Used to find out max radius of an arc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param startAngle Start angle\r\n * @param endAngle End angle\r\n * @param radius \t Relative radius\r\n * @return Rectangle\r\n */\nexport function getArcRect(startAngle, endAngle, radius) {\n var minX = Number.MAX_VALUE;\n var minY = Number.MAX_VALUE;\n var maxX = -Number.MAX_VALUE;\n var maxY = -Number.MAX_VALUE;\n var bpoints = [];\n if (!$type.isNumber(radius)) {\n radius = 1;\n }\n bpoints.push(getArcPoint(radius, startAngle));\n bpoints.push(getArcPoint(radius, endAngle));\n var fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\n var toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\n for (var angle = fromAngle; angle <= toAngle; angle += 90) {\n if (angle >= startAngle && angle <= endAngle) {\n bpoints.push(getArcPoint(radius, angle));\n }\n }\n for (var i = 0; i < bpoints.length; i++) {\n var pt = bpoints[i];\n if (pt.x < minX) {\n minX = pt.x;\n }\n if (pt.y < minY) {\n minY = pt.y;\n }\n if (pt.x > maxX) {\n maxX = pt.x;\n }\n if (pt.y > maxY) {\n maxY = pt.y;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\nexport function getArcPoint(radius, arc) {\n return {\n x: radius * cos(arc),\n y: radius * sin(arc)\n };\n}\n/**\r\n * Returns true if a point is within rectangle\r\n *\r\n * @param point\r\n * @param rectangle\r\n * @return {boolean}\r\n */\nexport function isInRectangle(point, rectangle) {\n if (point.x >= rectangle.x && point.x <= rectangle.x + rectangle.width && point.y >= rectangle.y && point.y <= rectangle.y + rectangle.height) {\n return true;\n }\n return false;\n}\nexport function getLineIntersection(pointA1, pointA2, pointB1, pointB2) {\n var x = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.x - pointB2.x) - (pointA1.x - pointA2.x) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\n var y = ((pointA1.x * pointA2.y - pointA2.x * pointA1.y) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x * pointB2.y - pointB1.y * pointB2.x)) / ((pointA1.x - pointA2.x) * (pointB1.y - pointB2.y) - (pointA1.y - pointA2.y) * (pointB1.x - pointB2.x));\n return {\n x: x,\n y: y\n };\n}\n//# sourceMappingURL=Math.js.map","import * as $math from \"./Math\";\nimport * as $type from \"./Type\";\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\nexport function indexOf(array, value) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n // TODO handle NaN\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\nexport function any(array, test) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n if (test(array[i])) {\n return true;\n }\n }\n return false;\n}\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\nexport function map(array, fn) {\n var length = array.length;\n var output = new Array(length);\n for (var i = 0; i < length; ++i) {\n output[i] = fn(array[i], i);\n }\n return output;\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function each(array, fn) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n fn(array[i], i);\n }\n}\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function eachReverse(array, fn) {\n var i = array.length;\n while (i--) {\n fn(array[i], i);\n }\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function eachContinue(array, fn) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n if (!fn(array[i], i)) {\n break;\n }\n }\n}\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\nexport function shiftLeft(array, index) {\n var length = array.length;\n for (var i = index; i < length; ++i) {\n array[i - index] = array[i];\n }\n array.length = length - index;\n}\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\nexport function last(array) {\n var length = array.length;\n return length ? array[length - 1] : undefined;\n}\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\nexport function first(array) {\n return array[0];\n}\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\nexport function insert(array, element, index) {\n //if (array) {\n index = $math.fitToRange(index, 0, array.length);\n array.splice(index, 0, element);\n //}\n}\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\nexport function setIndex(array, element, index) {\n remove(array, element);\n insert(array, element, index);\n}\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\nexport function pushAll(array, input) {\n var length = input.length;\n for (var i = 0; i < length; ++i) {\n array.push(input[i]);\n }\n}\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\nexport function remove(array, element) {\n var found = false;\n var index = array.indexOf(element);\n if (index !== -1) {\n found = true;\n array.splice(index, 1);\n var length_1 = array.length;\n while (index < length_1) {\n // TODO handle NaN\n if (array[index] === element) {\n array.splice(index, 1);\n --length_1;\n } else {\n ++index;\n }\n }\n }\n return found;\n}\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\nexport function move(array, element, toIndex) {\n // @todo this implementation must be the same as the List.moveValue method\n // @todo don't do anything if the desired index is the same as the current index\n var index = indexOf(array, element);\n // @todo remove all old values rather than only the first ?\n if (index !== -1) {\n removeIndex(array, index);\n }\n if (toIndex == null) {\n array.push(element);\n } else {\n insertIndex(array, toIndex, element);\n }\n}\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\nexport function add(array, element, index) {\n // Append to the end if index is not set\n if (!$type.isNumber(index)) {\n array.push(element);\n }\n // Add to the beginning of array if index is 0\n else if (index === 0) {\n array.unshift(element);\n }\n // Add to indicated place if index is set\n else {\n array.splice(index, 0, element);\n }\n}\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\nexport function replace(array, element, index) {\n // check if exists\n var ind = array.indexOf(element);\n // remove if exists\n if (ind !== -1) {\n array.splice(ind, 1);\n }\n // add to end if index is not set\n if (!$type.isNumber(index)) {\n array.push(element);\n }\n // add to indicated place if index is set\n else {\n array.splice(index, 0, element);\n }\n}\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\nexport function toArray(input) {\n if (Array.isArray(input)) {\n return input;\n } else {\n return [input];\n }\n}\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\nexport function has(array, element) {\n return indexOf(array, element) !== -1;\n}\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\nexport function copy(array) {\n var length = array.length;\n // It's faster to create the array with a pre-defined length\n var output = new Array(length);\n for (var i = 0; i < length; ++i) {\n // Because the array has a pre-defined length, we have to assign rather than push\n // This is also faster than pushing\n output[i] = array[i];\n }\n return output;\n}\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\nexport function slice(array, start, end) {\n if (end === void 0) {\n end = array.length;\n }\n var output = new Array(end - start);\n for (var i = start; i < end; ++i) {\n output[i - start] = array[i];\n }\n return output;\n}\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\nexport function insertIndex(array, index, value) {\n array.splice(index, 0, value);\n}\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\nexport function removeIndex(array, index) {\n array.splice(index, 1);\n}\n/**\r\n * Orders an array using specific `ordering` function and returns index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @param value Value to search for\r\n * @returns Result of the search\r\n */\nexport function getSortedIndex(array, ordering, value) {\n var start = 0;\n var end = array.length;\n var found = false;\n while (start < end) {\n // TODO is this faster/slower than using Math.floor ?\n var pivot = start + end >> 1;\n var order = ordering(value, array[pivot]);\n // less\n if (order < 0) {\n end = pivot;\n // equal\n } else if (order === 0) {\n found = true;\n start = pivot + 1;\n // more\n } else {\n start = pivot + 1;\n }\n }\n return {\n found: found,\n index: found ? start - 1 : start\n };\n}\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\nexport function findIndex(array, matches) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n if (matches(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\nexport function find(array, matches) {\n var index = findIndex(array, matches);\n if (index !== -1) {\n return array[index];\n }\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function shuffle(array) {\n // https://stackoverflow.com/a/2450976/449477\n var currentIndex = array.length,\n temporaryValue,\n randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n}\nexport function keepIf(array, keep) {\n var length = array.length;\n var i = 0;\n while (i < length) {\n if (keep(array[i])) {\n ++i;\n } else {\n array.splice(i, 1);\n --length;\n }\n }\n}\n//# sourceMappingURL=Array.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar Disposer = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\n function Disposer(dispose) {\n this._disposed = false;\n this._dispose = dispose;\n }\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\n Disposer.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Disposes the object.\r\n */\n Disposer.prototype.dispose = function () {\n if (!this._disposed) {\n this._disposed = true;\n this._dispose();\n }\n };\n return Disposer;\n}();\nexport { Disposer };\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar MultiDisposer = /** @class */function (_super) {\n __extends(MultiDisposer, _super);\n function MultiDisposer(disposers) {\n return _super.call(this, function () {\n $array.each(disposers, function (x) {\n x.dispose();\n });\n }) || this;\n }\n return MultiDisposer;\n}(Disposer);\nexport { MultiDisposer };\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar MutableValueDisposer = /** @class */function (_super) {\n __extends(MutableValueDisposer, _super);\n /**\r\n * Constructor.\r\n */\n function MutableValueDisposer() {\n var _this = _super.call(this, function () {\n if ($type.hasValue(_this._disposer)) {\n _this._disposer.dispose();\n _this._disposer = undefined;\n }\n }) || this;\n return _this;\n }\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\n MutableValueDisposer.prototype.get = function () {\n return this._value;\n };\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\n MutableValueDisposer.prototype.set = function (value, disposer) {\n if ($type.hasValue(this._disposer)) {\n this._disposer.dispose();\n }\n this._disposer = disposer;\n this._value = value;\n };\n /**\r\n * Resets the disposer value.\r\n */\n MutableValueDisposer.prototype.reset = function () {\n this.set(undefined, undefined);\n };\n return MutableValueDisposer;\n}(Disposer);\nexport { MutableValueDisposer };\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar CounterDisposer = /** @class */function (_super) {\n __extends(CounterDisposer, _super);\n function CounterDisposer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\n _this._counter = 0;\n return _this;\n }\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\n CounterDisposer.prototype.increment = function () {\n var _this = this;\n // TODO throw an error if it is disposed\n ++this._counter;\n // TODO make this more efficient\n return new Disposer(function () {\n --_this._counter;\n if (_this._counter === 0) {\n _this.dispose();\n }\n });\n };\n return CounterDisposer;\n}(Disposer);\nexport { CounterDisposer };\n//# sourceMappingURL=Disposer.js.map","/**\r\n * A collection of low-level async operation stuff.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $array from \"./Array\";\nvar pendingFrame = false;\nvar nextQueue = [];\nvar readQueue = [];\nvar writeQueue = [];\nvar idleQueue = [];\nvar fps = 1000 / 60;\n/**\r\n * [raf description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport var raf = typeof requestAnimationFrame === \"function\" ? function (fn) {\n requestAnimationFrame(fn);\n} : function (fn) {\n setTimeout(fn, fps);\n};\n/**\r\n * [frameLoop description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nfunction frameLoop() {\n var now = Date.now();\n var length = nextQueue.length;\n for (var i = 0; i < length; ++i) {\n nextQueue[i](now);\n }\n $array.shiftLeft(nextQueue, length);\n for (var i = 0; i < readQueue.length; ++i) {\n readQueue[i](now);\n }\n readQueue.length = 0;\n for (var i = 0; i < writeQueue.length; ++i) {\n writeQueue[i](now);\n }\n writeQueue.length = 0;\n if (nextQueue.length === 0 && readQueue.length === 0) {\n pendingFrame = false;\n } else {\n raf(frameLoop);\n }\n}\n/**\r\n * [pendFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nfunction pendFrame() {\n if (!pendingFrame) {\n pendingFrame = true;\n raf(frameLoop);\n }\n}\n/**\r\n * [nextFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\nexport function nextFrame(fn) {\n nextQueue.push(fn);\n pendFrame();\n}\n/**\r\n * [readFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\nexport function readFrame(fn) {\n readQueue.push(fn);\n pendFrame();\n}\n/**\r\n * [writeFrame description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\nexport function writeFrame(fn) {\n writeQueue.push(fn);\n pendFrame();\n}\n/**\r\n * [whenIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param fn [description]\r\n */\nexport function whenIdle(fn) {\n idleQueue.push(fn);\n}\n/**\r\n * [triggerIdle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @todo Maybe don't trigger a callback which was added while in the middle of triggering?\r\n */\nexport function triggerIdle() {\n var now = Date.now();\n var length = idleQueue.length;\n for (var i = 0; i < length; ++i) {\n idleQueue.shift()(now);\n }\n}\n//# sourceMappingURL=AsyncPending.js.map","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Disposer } from \"./Disposer\";\nimport * as $array from \"./Array\";\nimport * as $async from \"./AsyncPending\";\nimport * as $type from \"./Type\";\n/*export interface IEventDispatcher {\r\n isDisposed(): boolean;\r\n dispose(): void;\r\n hasListeners(): boolean;\r\n enable(): void;\r\n disable(): void;\r\n enableType(type: Key): void;\r\n disableType(type: Key, amount?: number): void;\r\n isEnabled(type: Key): boolean;\r\n has(type: Key, callback?: (this: C, event: T[Key]) => void, context?: C): boolean;\r\n dispatchImmediately(type: Key, event: T[Key]): void;\r\n dispatch(type: Key, event: T[Key]): void;\r\n onAll(callback: (this: C, type: Key, event: T[Key]) => void, context?: C): IDisposer;\r\n on(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n once(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): IDisposer;\r\n off(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n off(type: Key, callback: (this: C, event: T[Key]) => void, context?: C): void;\r\n copyFrom(source: this): void;\r\n}*/\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @important\r\n */\nvar EventDispatcher = /** @class */function () {\n /**\r\n * Constructor\r\n */\n function EventDispatcher() {\n this._listeners = [];\n this._killed = [];\n this._disabled = {};\n this._iterating = 0;\n this._enabled = true;\n this._disposed = false;\n }\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\n EventDispatcher.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Dispose (destroy) this object.\r\n */\n EventDispatcher.prototype.dispose = function () {\n if (!this._disposed) {\n this._disposed = true;\n var a = this._listeners;\n this._iterating = 1;\n this._listeners = null;\n this._disabled = null;\n try {\n $array.each(a, function (x) {\n x.disposer.dispose();\n });\n } finally {\n this._killed = null;\n this._iterating = null;\n }\n }\n };\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\n EventDispatcher.prototype.hasListeners = function () {\n return this._listeners.length !== 0;\n };\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\n EventDispatcher.prototype.hasListenersByType = function (type) {\n return $array.any(this._listeners, function (x) {\n return (x.type === null || x.type === type) && !x.killed;\n });\n };\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\n EventDispatcher.prototype.enable = function () {\n this._enabled = true;\n };\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\n EventDispatcher.prototype.disable = function () {\n this._enabled = false;\n };\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\n EventDispatcher.prototype.enableType = function (type) {\n delete this._disabled[type];\n };\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\n EventDispatcher.prototype.disableType = function (type, amount) {\n if (amount === void 0) {\n amount = Infinity;\n }\n this._disabled[type] = amount;\n };\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\n EventDispatcher.prototype._removeListener = function (listener) {\n if (this._iterating === 0) {\n var index = this._listeners.indexOf(listener);\n if (index === -1) {\n throw new Error(\"Invalid state: could not remove listener\");\n }\n this._listeners.splice(index, 1);\n } else {\n this._killed.push(listener);\n }\n };\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\n EventDispatcher.prototype._removeExistingListener = function (once, type, callback, context) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n this._eachListener(function (info) {\n if (info.once === once &&\n // TODO is this correct ?\n info.type === type && (callback == null || info.callback === callback) && info.context === context) {\n info.disposer.dispose();\n }\n });\n };\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\n EventDispatcher.prototype.isEnabled = function (type) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n // TODO is this check correct ?\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] == null;\n };\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\n EventDispatcher.prototype.has = function (type, callback, context) {\n var index = $array.findIndex(this._listeners, function (info) {\n return info.once !== true &&\n // Ignoring \"once\" listeners\n info.type === type && (callback == null || info.callback === callback) && info.context === context;\n });\n return index !== -1;\n };\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\n EventDispatcher.prototype._shouldDispatch = function (type) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n var count = this._disabled[type];\n if (!$type.isNumber(count)) {\n return this._enabled;\n } else {\n if (count <= 1) {\n delete this._disabled[type];\n } else {\n --this._disabled[type];\n }\n return false;\n }\n };\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\n EventDispatcher.prototype._eachListener = function (fn) {\n var _this = this;\n ++this._iterating;\n try {\n $array.each(this._listeners, fn);\n } finally {\n --this._iterating;\n // TODO should this be inside or outside the finally ?\n if (this._iterating === 0 && this._killed.length !== 0) {\n // Remove killed listeners\n $array.each(this._killed, function (killed) {\n _this._removeListener(killed);\n });\n this._killed.length = 0;\n }\n }\n };\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\n EventDispatcher.prototype.dispatchImmediately = function (type, event) {\n if (this._shouldDispatch(type)) {\n // TODO check if it's faster to use an object of listeners rather than a single big array\n // TODO if the function throws, maybe it should keep going ?\n this._eachListener(function (listener) {\n if (!listener.killed && (listener.type === null || listener.type === type)) {\n listener.dispatch(type, event);\n }\n });\n }\n };\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\n EventDispatcher.prototype.dispatch = function (type, event) {\n if (this._shouldDispatch(type)) {\n this._eachListener(function (listener) {\n // TODO check if it's faster to use an object of listeners rather than a single big array\n if (!listener.killed && (listener.type === null || listener.type === type)) {\n // TODO if the function throws, maybe it should keep going ?\n // TODO dispatch during the update cycle, rather than using whenIdle\n $async.whenIdle(function () {\n if (!listener.killed) {\n listener.dispatch(type, event);\n }\n });\n }\n });\n }\n };\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\n EventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\n var _this = this;\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n this._removeExistingListener(once, type, callback, context);\n var info = {\n type: type,\n callback: callback,\n context: context,\n shouldClone: shouldClone,\n dispatch: dispatch,\n killed: false,\n once: once,\n disposer: new Disposer(function () {\n info.killed = true;\n _this._removeListener(info);\n })\n };\n this._listeners.push(info);\n return info;\n };\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\n EventDispatcher.prototype.onAll = function (callback, context, shouldClone) {\n if (shouldClone === void 0) {\n shouldClone = true;\n }\n return this._on(false, null, callback, context, shouldClone, function (type, event) {\n return callback.call(context, type, event);\n }).disposer;\n };\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\n EventDispatcher.prototype.on = function (type, callback, context, shouldClone) {\n if (shouldClone === void 0) {\n shouldClone = true;\n }\n return this._on(false, type, callback, context, shouldClone, function (type, event) {\n return callback.call(context, event);\n }).disposer;\n };\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * series.events.on(\"hidden\", (ev) => {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * series.events.on(\"hidden\", function(ev) {\r\n * console.log(\"Series hidden: \" + ev.target.name);\r\n * }, this);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"events\": {\r\n * \t\"hidden\": function(ev) {\r\n * \t console.log(\"Series hidden: \" + ev.target.name);\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n * @todo what if `listen` is called on the same function twice ?\r\n */\n EventDispatcher.prototype.once = function (type, callback, context, shouldClone) {\n if (shouldClone === void 0) {\n shouldClone = true;\n }\n var x = this._on(true, type, callback, context, shouldClone, function (type, event) {\n x.disposer.dispose();\n callback.call(context, event);\n });\n // TODO maybe this should return a different Disposer ?\n return x.disposer;\n };\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\n EventDispatcher.prototype.off = function (type, callback, context) {\n this._removeExistingListener(false, type, callback, context);\n };\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\n EventDispatcher.prototype.copyFrom = function (source) {\n var _this = this;\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n if (source === this) {\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\n }\n $array.each(source._listeners, function (x) {\n // TODO is this correct ?\n if (!x.killed && x.shouldClone) {\n if (x.type === null) {\n _this.onAll(x.callback, x.context);\n } else if (x.once) {\n _this.once(x.type, x.callback, x.context);\n } else {\n _this.on(x.type, x.callback, x.context);\n }\n }\n });\n };\n return EventDispatcher;\n}();\nexport { EventDispatcher };\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @important\r\n */\nvar TargetedEventDispatcher = /** @class */function (_super) {\n __extends(TargetedEventDispatcher, _super);\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\n function TargetedEventDispatcher(target) {\n var _this = _super.call(this) || this;\n _this.target = target;\n return _this;\n }\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n */\n TargetedEventDispatcher.prototype.copyFrom = function (source) {\n var _this = this;\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n if (source === this) {\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\n }\n $array.each(source._listeners, function (x) {\n // TODO very hacky\n if (x.context === source.target) {\n return;\n }\n // TODO is this correct ?\n if (!x.killed && x.shouldClone) {\n if (x.type === null) {\n _this.onAll(x.callback, x.context);\n } else if (x.once) {\n _this.once(x.type, x.callback, x.context);\n } else {\n _this.on(x.type, x.callback, x.context);\n }\n }\n });\n };\n return TargetedEventDispatcher;\n}(EventDispatcher);\nexport { TargetedEventDispatcher };\n//# sourceMappingURL=EventDispatcher.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns an iterator for all entries in object.\r\n *\r\n * Can be used to safely iterate through all properties of the object.\r\n *\r\n * @param object Source object\r\n * @returns Iterator\r\n */\nexport function entries(object) {\n return function (push) {\n // TODO make this more efficient ?\n for (var key in object) {\n if (hasKey(object, key)) {\n if (!push([key, object[key]])) {\n break;\n }\n }\n }\n };\n}\n/**\r\n * Returns an array of object's property names.\r\n *\r\n * @param object Source object\r\n * @returns Object property names\r\n */\nexport function keys(object) {\n var output = [];\n for (var key in object) {\n if (hasKey(object, key)) {\n output.push(key);\n }\n }\n return output;\n}\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\nexport function keysOrdered(object, order) {\n return keys(object).sort(order);\n}\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\nexport function hasKey(object, key) {\n return {}.hasOwnProperty.call(object, key);\n}\n/**\r\n * Returns value of the specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Key value\r\n */\nexport function getKey(object, key) {\n return object[key];\n}\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\nexport function eachContinue(object, fn) {\n for (var key in object) {\n if (hasKey(object, key)) {\n if (!fn(key, object[key])) {\n break;\n }\n }\n }\n}\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\nexport function each(object, fn) {\n eachContinue(object, function (key, value) {\n fn(key, value);\n return true;\n });\n}\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\nexport function eachOrdered(object, fn, ord) {\n $array.each(keysOrdered(object, ord), function (key) {\n fn(key, object[key]);\n });\n}\n/**\r\n * Returns a copy of the object.\r\n *\r\n * @param object Source object\r\n * @returns Copy of the object\r\n */\nexport function copy(object) {\n return Object.assign({}, object);\n}\n/**\r\n * Merges two objects and returns a new object that contains properties from\r\n * both source objects.\r\n *\r\n * @param object1 Source object #1\r\n * @param object2 Source object #2\r\n * @returns Combined object\r\n */\nexport function merge(object1, object2) {\n return Object.assign({}, object1, object2);\n}\n/**\r\n * Returns object clone.\r\n *\r\n * @param object Source object\r\n * @returns Clone\r\n */\nexport function clone(object) {\n return JSON.parse(JSON.stringify(object));\n}\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\nexport function copyProperties(source, target, keys) {\n $array.each(keys, function (key) {\n if ($type.hasValue(source[key])) {\n target[key] = source[key];\n }\n });\n}\n/**\r\n * Copies a list of properties from one object to another only if target does't have value of the property set.\r\n *\r\n * Will not copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\nexport function softCopyProperties(source, target, keys) {\n $array.each(keys, function (key) {\n if ($type.hasValue(source[key]) && !$type.hasValue(target[key])) {\n target[key] = source[key];\n }\n });\n}\n/**\r\n * Copies a list of properties from one object to another.\r\n *\r\n * Will copy empty properties.\r\n *\r\n * @param source Source object\r\n * @param target Target object\r\n * @param keys List of keys to copy\r\n */\nexport function forceCopyProperties(source, target, keys) {\n $array.each(keys, function (key) {\n target[key] = source[key];\n });\n}\n/**\r\n * Copies all properties from one object to another.\r\n *\r\n * @param from Source object\r\n * @param to Target object\r\n */\nexport function copyAllProperties(from, to) {\n copyProperties(from, to, keys(from));\n}\n//# sourceMappingURL=Object.js.map","import * as $array from \"./Array\";\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function fromArray(array) {\n return function (push) {\n var length = array.length;\n for (var i = 0; i < length; ++i) {\n if (!push(array[i])) {\n break;\n }\n }\n };\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function length(iter) {\n var sum = 0;\n iter(function (_) {\n ++sum;\n return true;\n });\n return sum;\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function toArray(iter) {\n var output = [];\n iter(function (value) {\n output.push(value);\n return true;\n });\n return output;\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function eachContinue(iter, fn) {\n iter(fn);\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function each(iter, fn) {\n iter(function (value) {\n fn(value);\n return true;\n });\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function sort(iter, fn) {\n return fromArray(toArray(iter).sort(fn));\n}\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function map(iter, fn) {\n return function (push) {\n return iter(function (value) {\n return push(fn(value));\n });\n };\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function filter(iter, fn) {\n return function (push) {\n return iter(function (value) {\n if (fn(value)) {\n return push(value);\n } else {\n return true;\n }\n });\n };\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (push) {\n var go = true;\n var push2 = function (value) {\n return go = push(value);\n };\n var length = args.length;\n for (var i = 0; i < length; ++i) {\n args[i](push2);\n if (!go) {\n break;\n }\n }\n };\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function flatten(iter) {\n return function (push) {\n var go = true;\n var push2 = function (value) {\n return go = push(value);\n };\n iter(function (value) {\n value(push2);\n return go;\n });\n };\n}\n/**\r\n * [number description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function indexed(iter) {\n return function (push) {\n var index = 0;\n iter(function (value) {\n return push([index++, value]);\n });\n };\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function findIndex(iter, matches) {\n var found = false;\n var i = 0;\n iter(function (value) {\n if (matches(value)) {\n found = true;\n return false;\n } else {\n ++i;\n return true;\n }\n });\n return found ? i : -1;\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function find(iter, matches) {\n var output;\n iter(function (value) {\n if (matches(value)) {\n output = value;\n return false;\n } else {\n return true;\n }\n });\n return output;\n}\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function findMap(iter, matches) {\n var output;\n iter(function (value) {\n var v = matches(value);\n if (v !== null) {\n output = v;\n return false;\n } else {\n return true;\n }\n });\n return output;\n}\n/**\r\n * [iter description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function contains(iter, matches) {\n var output = false;\n iter(function (value) {\n if (matches(value)) {\n output = true;\n return false;\n } else {\n return true;\n }\n });\n return output;\n}\n/**\r\n * [A description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport function foldl(iter, init, fn) {\n iter(function (value) {\n init = fn(init, value);\n return true;\n });\n return init;\n}\n/**\r\n * [min2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\nfunction min2(left, right) {\n if (left == null || right < left) {\n return right;\n } else {\n return left;\n }\n}\n/**\r\n * [min description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\nexport function min(a) {\n return foldl(a, null, min2);\n}\n/**\r\n * [max2 description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param left [description]\r\n * @param right [description]\r\n * @return [description]\r\n */\nfunction max2(left, right) {\n if (left == null || right > left) {\n return right;\n } else {\n return left;\n }\n}\n/**\r\n * [max description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Verify that this works correctly\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\nexport function max(a) {\n return foldl(a, null, max2);\n}\n/**\r\n * [join description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param iter [description]\r\n * @param separator [description]\r\n * @return [description]\r\n */\nexport function join(iter, separator) {\n if (separator === void 0) {\n separator = \"\";\n }\n var first = true;\n var init = \"\";\n iter(function (value) {\n if (first) {\n first = false;\n } else {\n init += separator;\n }\n init += value;\n return true;\n });\n return init;\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar ListIterator = /** @class */function () {\n /**\r\n * Constructor\r\n *\r\n * @param list [description]\r\n * @param create [description]\r\n */\n function ListIterator(list, create) {\n // flag specifies if iterator should create new list item if it is reqested for a nextItem but there is no more left in the list\n this.createNewItems = false;\n this.list = list;\n this._create = create;\n this.reset();\n }\n ListIterator.prototype.reset = function () {\n this._listCopy = toArray(this.list.iterator());\n };\n ListIterator.prototype.clear = function () {\n this._listCopy.length = 0;\n };\n ListIterator.prototype.getFirst = function () {\n return this.returnItem(0);\n };\n ListIterator.prototype.getLast = function () {\n return this.returnItem(this._listCopy.length - 1);\n };\n ListIterator.prototype.find = function (fn) {\n var index = $array.findIndex(this._listCopy, fn);\n if (index !== -1) {\n var item = this._listCopy[index];\n // TODO use removeIndex instead ?\n $array.remove(this._listCopy, item);\n return item;\n } else {\n return this.getLast();\n }\n };\n ListIterator.prototype.removeItem = function (item) {\n return $array.remove(this._listCopy, item);\n };\n ListIterator.prototype.returnItem = function (index) {\n if (index >= 0 && index < this._listCopy.length) {\n var item = this._listCopy[index];\n // TODO use removeIndex instead ?\n $array.remove(this._listCopy, item);\n return item;\n } else if (this.createNewItems) {\n return this._create();\n }\n };\n ListIterator.prototype.iterator = function () {\n return fromArray(this._listCopy);\n };\n return ListIterator;\n}();\nexport { ListIterator };\n//# sourceMappingURL=Iterator.js.map","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Use localeCompare\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return Result\r\n */\nexport function order(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else {\n return 1;\n }\n}\n/**\r\n * ============================================================================\r\n * OTHER FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\nexport function repeat(string, amount) {\n return new Array(amount + 1).join(string);\n}\n/**\r\n * Generates a random string `characters` length.\r\n *\r\n * @param chars Number of characters\r\n * @return Random string\r\n */\nexport function random(chars) {\n var res = \"\";\n var choice = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n for (var i = 0; i < chars; i++) {\n res += choice.charAt(Math.floor(Math.random() * choice.length));\n }\n return res;\n}\n//# sourceMappingURL=String.js.map","import { __extends, __generator, __read } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Disposer } from \"./Disposer\";\nimport { EventDispatcher } from \"./EventDispatcher\";\nimport * as $object from \"./Object\";\nimport * as $iter from \"./Iterator\";\nimport * as $string from \"./String\";\n/**\r\n * A disposable dictionary, which when disposed itself will call `dispose()`\r\n * method on all its items.\r\n */\nvar DictionaryDisposer = /** @class */function (_super) {\n __extends(DictionaryDisposer, _super);\n function DictionaryDisposer(dict) {\n var _this = this;\n var disposer = dict.events.on(\"removed\", function (x) {\n x.oldValue.dispose();\n }, undefined, false);\n _this = _super.call(this, function () {\n disposer.dispose();\n // TODO clear the dictionary ?\n $iter.each(dict.iterator(), function (a) {\n var v = a[1];\n v.dispose();\n });\n }) || this;\n return _this;\n }\n return DictionaryDisposer;\n}(Disposer);\nexport { DictionaryDisposer };\n/**\r\n * A Dictionary is collection where values of some type can be mapped to\r\n * string keys.\r\n *\r\n * You might call it an \"associative list\" or \"associative array\".\r\n */\nvar Dictionary = /** @class */function () {\n /**\r\n * Constructor\r\n */\n function Dictionary() {\n /**\r\n * Event dispatcher.\r\n */\n this.events = new EventDispatcher();\n this._dictionary = {};\n }\n /**\r\n * Returns `true` if key exists in Dictionary.\r\n *\r\n * @param key The key to search for\r\n * @return `true` if key exists, `false` if it doesn't\r\n */\n Dictionary.prototype.hasKey = function (key) {\n return $object.hasKey(this._dictionary, key);\n };\n /**\r\n * Returns the value for a specific key.\r\n *\r\n * @param key The key to search for\r\n * @return Value for the key, or `undefined` if it doesn't exist\r\n */\n Dictionary.prototype.getKey = function (key) {\n return this._dictionary[key];\n };\n /**\r\n * Inserts value at specific key.\r\n *\r\n * Will thrown an exception if the key already exists in the dictionary.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\n Dictionary.prototype.insertKey = function (key, value) {\n if ($object.hasKey(this._dictionary, key)) {\n throw new Error(\"Key \" + key + \" already exists in dictionary\");\n } else {\n this._dictionary[key] = value;\n if (this.events.isEnabled(\"insertKey\")) {\n this.events.dispatchImmediately(\"insertKey\", {\n type: \"insertKey\",\n target: this,\n key: key,\n newValue: value\n });\n }\n }\n };\n /**\r\n * Adds or updates key/value into dictionary.\r\n *\r\n * If the key already exists, the old value will be overwritten.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @param key Key\r\n * @param value Value\r\n */\n Dictionary.prototype.setKey = function (key, value) {\n if ($object.hasKey(this._dictionary, key)) {\n var oldValue = this._dictionary[key];\n if (oldValue !== value) {\n this._dictionary[key] = value;\n if (this.events.isEnabled(\"setKey\")) {\n this.events.dispatchImmediately(\"setKey\", {\n type: \"setKey\",\n target: this,\n key: key,\n oldValue: oldValue,\n newValue: value\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n oldValue: oldValue\n });\n }\n }\n } else {\n this._dictionary[key] = value;\n if (this.events.isEnabled(\"insertKey\")) {\n this.events.dispatchImmediately(\"insertKey\", {\n type: \"insertKey\",\n target: this,\n key: key,\n newValue: value\n });\n }\n }\n };\n /**\r\n * Updates the value at specific `key` using custom function.\r\n *\r\n * Passes in current value into the function, and uses its output as a new\r\n * value.\r\n *\r\n * If the new value is exactly the same as the old value (using ===), it won't do anything.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param fn Function to transform the value\r\n */\n Dictionary.prototype.updateKey = function (key, fn) {\n if ($object.hasKey(this._dictionary, key)) {\n var oldValue = this._dictionary[key];\n var newValue = fn(oldValue);\n if (oldValue !== newValue) {\n this._dictionary[key] = newValue;\n if (this.events.isEnabled(\"setKey\")) {\n this.events.dispatchImmediately(\"setKey\", {\n type: \"setKey\",\n target: this,\n key: key,\n oldValue: oldValue,\n newValue: newValue\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n oldValue: oldValue\n });\n }\n }\n } else {\n throw new Error(\"Key \" + key + \" doesn't exist in dictionary\");\n }\n };\n /**\r\n * Removes value at specific `key` from dictionary.\r\n *\r\n * @param key Key to remove\r\n */\n Dictionary.prototype.removeKey = function (key) {\n if ($object.hasKey(this._dictionary, key)) {\n var oldValue = this._dictionary[key];\n delete this._dictionary[key];\n if (this.events.isEnabled(\"removeKey\")) {\n this.events.dispatchImmediately(\"removeKey\", {\n type: \"removeKey\",\n target: this,\n key: key,\n oldValue: oldValue\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n oldValue: oldValue\n });\n }\n }\n };\n /**\r\n * [insertKeyIfEmpty description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo description\r\n * @param key [description]\r\n * @param ifEmpty [description]\r\n * @return [description]\r\n */\n Dictionary.prototype.insertKeyIfEmpty = function (key, ifEmpty) {\n if (!this.hasKey(key)) {\n this.insertKey(key, ifEmpty());\n }\n return this.getKey(key);\n };\n /**\r\n * Removes all items from the dictionary.\r\n */\n Dictionary.prototype.clear = function () {\n var _this = this;\n // TODO dispatch this after clear\n if (this.events.isEnabled(\"removed\")) {\n $object.each(this._dictionary, function (key, value) {\n _this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: _this,\n oldValue: value\n });\n });\n }\n this._dictionary = {};\n if (this.events.isEnabled(\"cleared\")) {\n this.events.dispatchImmediately(\"cleared\", {\n type: \"cleared\",\n target: this\n });\n }\n };\n /**\r\n * Copies items from another Dictionary.\r\n *\r\n * @param source A Dictionary to copy items from\r\n */\n Dictionary.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source.iterator(), function (a) {\n // TODO fix this type cast\n _this.setKey(a[0], a[1]);\n });\n };\n /**\r\n * Returns an interator that can be used to iterate through all items in\r\n * the dictionary.\r\n *\r\n * @return Iterator\r\n */\n Dictionary.prototype.iterator = function () {\n // @todo fix this type after the Iterator bug is fixed\n // https://github.com/Microsoft/TypeScript/issues/16730\n return $object.entries(this._dictionary);\n };\n /**\r\n * Returns an ES6 iterator for the keys/values of the dictionary.\r\n */\n Dictionary.prototype[Symbol.iterator] = function () {\n var _a, _b, _i, key;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [];\n for (_b in this._dictionary) _a.push(_b);\n _i = 0;\n _c.label = 1;\n case 1:\n if (!(_i < _a.length)) return [3 /*break*/, 4];\n key = _a[_i];\n if (!$object.hasKey(this._dictionary, key)) return [3 /*break*/, 3];\n return [4 /*yield*/, [key, this._dictionary[key]]];\n case 2:\n _c.sent();\n _c.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n return [2 /*return*/];\n }\n });\n };\n /**\r\n * Calls `f` for each key/value in the dictionary.\r\n */\n Dictionary.prototype.each = function (f) {\n $iter.each(this.iterator(), function (_a) {\n var _b = __read(_a, 2),\n key = _b[0],\n value = _b[1];\n return f(key, value);\n });\n };\n /**\r\n * Returns an iterator that can be used to iterate through all items in\r\n * the dictionary, ordered by key.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Iterator\r\n */\n Dictionary.prototype.sortedIterator = function () {\n return $iter.sort(this.iterator(), function (x, y) {\n return $string.order(x[0], y[0]);\n });\n };\n return Dictionary;\n}();\nexport { Dictionary };\n/**\r\n * A version of a [[Dictionary]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\nvar DictionaryTemplate = /** @class */function (_super) {\n __extends(DictionaryTemplate, _super);\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\n function DictionaryTemplate(t) {\n var _this = _super.call(this) || this;\n _this.template = t;\n return _this;\n }\n Object.defineProperty(DictionaryTemplate.prototype, \"template\", {\n /**\r\n * @return Template object\r\n */\n get: function () {\n return this._template;\n },\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\n set: function (v) {\n v.isTemplate = true;\n this._template = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all elements from other dictionary.\r\n *\r\n * @param source Source dictionary\r\n */\n DictionaryTemplate.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source.iterator(), function (a) {\n // TODO fix this type cast\n // TODO why does this need to clone ?\n _this.setKey(a[0], a[1].clone());\n });\n };\n /**\r\n * Instantiates a new object of the specified type, adds it to specified\r\n * `key` in the dictionary, and returns it.\r\n *\r\n * @param make Item type to use. Will use the default type for the dictionary if not specified.\r\n * @return Newly created item\r\n */\n DictionaryTemplate.prototype.create = function (key) {\n var _this = this;\n return this.insertKeyIfEmpty(key, function () {\n return _this.template.clone();\n });\n };\n return DictionaryTemplate;\n}(Dictionary);\nexport { DictionaryTemplate };\n//# sourceMappingURL=Dictionary.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Dictionary } from \"./Dictionary\";\nimport * as $type from \"./Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents object cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better storage\r\n * @todo TTL logging\r\n * @todo Garbage collector\r\n */\nvar Cache = /** @class */function () {\n function Cache() {\n /**\r\n * Storage for cache items.\r\n */\n this._storage = new Dictionary();\n /**\r\n * Default TTL in milliseconds.\r\n */\n this.ttl = 1000;\n }\n /**\r\n * Caches or updates cached value, resets TTL.\r\n *\r\n * If `ttl` is set to zero, item will never expire.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value\r\n * @param ttl TTL of the cache to live in milliseconds\r\n */\n Cache.prototype.set = function (owner, key, value, ttl) {\n // Create if storage does not exist for this owner\n var ownerStorage = this._storage.insertKeyIfEmpty(owner, function () {\n return new Dictionary();\n });\n // Create cache item\n var item = {\n \"touched\": new Date().getTime(),\n \"ttl\": $type.isNumber(ttl) ? ttl : this.ttl,\n \"value\": value\n };\n // Set\n ownerStorage.setKey(key, item);\n };\n /**\r\n * Rerturns cached item, respecting TTL.\r\n *\r\n * @param owner An id of the object that owns this cache\r\n * @param key Index key\r\n * @param value Value to return if cache not available\r\n * @return Value, or `undefined` if not set\r\n */\n Cache.prototype.get = function (owner, key, value) {\n if (value === void 0) {\n value = undefined;\n }\n // \t\t || ypeof this._storage[owner][key] === \"undefined\" || this._storage[owner][key].expired === true) {\n if (this._storage.hasKey(owner)) {\n var ownerStorage = this._storage.getKey(owner);\n if (ownerStorage.hasKey(key)) {\n var cacheItem = ownerStorage.getKey(key);\n if (cacheItem.ttl && cacheItem.touched + cacheItem.ttl < new Date().getTime()) {\n cacheItem.expired = true;\n }\n if (cacheItem.expired) {\n ownerStorage.removeKey(key);\n return value;\n }\n return cacheItem.value;\n } else {\n return value;\n }\n } else {\n return value;\n }\n };\n /**\r\n * Clears cache for specific owner or everything.\r\n *\r\n * @param owner Owner to clear cache for\r\n */\n Cache.prototype.clear = function (owner) {\n if (owner) {\n this._storage.removeKey(owner);\n } else {\n this._storage.clear();\n }\n };\n return Cache;\n}();\nexport { Cache };\n/**\r\n * ============================================================================\r\n * GLOBAL INSTANCE\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A global instance of cache. Use this instance to cache any values.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var cache = new Cache();\n//# sourceMappingURL=Cache.js.map","import { EventDispatcher } from \"./utils/EventDispatcher\";\nimport { Dictionary } from \"./utils/Dictionary\";\nimport { cache } from \"./utils/Cache\";\nimport * as $type from \"./utils/Type\";\nimport * as $string from \"./utils/String\";\nimport * as $array from \"./utils/Array\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Registry is used to store miscellaneous system-wide information, like ids,\r\n * maps, themes, and registered classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar Registry = /** @class */function () {\n function Registry() {\n var _this = this;\n /**\r\n * Event dispacther.\r\n */\n this.events = new EventDispatcher();\n /**\r\n * All currently applied themes. All new chart instances created will\r\n * automatically inherit and retain System's themes.\r\n */\n this.themes = [];\n /**\r\n * List of all loaded available themes.\r\n *\r\n * Whenever a theme loads, it registers itself in System's `loadedThemes`\r\n * collection.\r\n */\n this.loadedThemes = {};\n /**\r\n * An indeternal counter used to generate unique IDs.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this._uidCount = 0;\n /**\r\n * Keeps register of class references so that they can be instnatiated using\r\n * string key.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.registeredClasses = {};\n /**\r\n * Holds all generated placeholders.\r\n */\n this._placeholders = {};\n /**\r\n * A list of invalid(ated) [[Sprite]] objects that need to be re-validated\r\n * during next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidSprites = {};\n /**\r\n * Components are added to this list when their data provider changes to\r\n * a new one or data is added/removed from their data provider.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidDatas = {};\n /**\r\n * Components are added to this list when values of their raw data change.\r\n * Used when we want a smooth animation from one set of values to another.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidRawDatas = [];\n /**\r\n * Components are added to this list when values of their data changes\r\n * (but not data provider itself).\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidDataItems = [];\n /**\r\n * Components are added to this list when their data range (selection) is\r\n * changed, e.g. zoomed.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidDataRange = [];\n /**\r\n * A list of [[Sprite]] objects that have invalid(ated) positions, that need\r\n * to be recalculated.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidPositions = {};\n /**\r\n * A list of [[Container]] objects with invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.invalidLayouts = {};\n /**\r\n * An array holding all active (non-disposed) top level elemens.\r\n *\r\n * When, for example, a new chart is created, its instance will be added to\r\n * this array, and will be removed when the chart is disposed.\r\n */\n this.baseSprites = [];\n /**\r\n * An UID-based map of base sprites (top-level charts).\r\n */\n this.baseSpritesByUid = {};\n /**\r\n * Queued charts (waiting for their turn) to initialize.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Daisy_chaining_multiple_charts} for more information\r\n */\n this.queue = [];\n /**\r\n * An array of deferred charts that haven't been created yet.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n */\n this.deferred = [];\n this.uid = this.getUniqueId();\n this.invalidSprites.noBase = [];\n this.invalidDatas.noBase = [];\n this.invalidLayouts.noBase = [];\n this.invalidPositions.noBase = [];\n // This is needed for Angular Universal SSR\n if (typeof addEventListener !== \"undefined\") {\n // This is needed to prevent charts from being cut off when printing\n addEventListener(\"beforeprint\", function () {\n $array.each(_this.baseSprites, function (sprite) {\n var svg = sprite.paper.svg;\n svg.setAttribute(\"viewBox\", \"0 0 \" + svg.clientWidth + \" \" + svg.clientHeight);\n });\n });\n addEventListener(\"afterprint\", function () {\n $array.each(_this.baseSprites, function (sprite) {\n var svg = sprite.paper.svg;\n svg.removeAttribute(\"viewBox\");\n });\n });\n }\n }\n /**\r\n * Generates a unique chart system-wide ID.\r\n *\r\n * @return Generated ID\r\n */\n Registry.prototype.getUniqueId = function () {\n var uid = this._uidCount;\n this._uidCount += 1;\n return \"id-\" + uid;\n };\n Object.defineProperty(Registry.prototype, \"map\", {\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\n get: function () {\n if (!this._map) {\n this._map = new Dictionary();\n }\n return this._map;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\n Registry.prototype.setCache = function (key, value, ttl) {\n cache.set(this.uid, key, value, ttl);\n };\n /**\r\n * Retrieves cached value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\n Registry.prototype.getCache = function (key, value) {\n if (value === void 0) {\n value = undefined;\n }\n return cache.get(this.uid, key, value);\n };\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\n Registry.prototype.dispatch = function (eventType, data) {\n // @todo Implement proper type check\n if (this.events.isEnabled(eventType)) {\n if (data) {\n data.type = eventType;\n data.target = data.target || this;\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n } else {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n };\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\n Registry.prototype.dispatchImmediately = function (eventType, data) {\n // @todo Implement proper type check\n if (this.events.isEnabled(eventType)) {\n if (data) {\n data.type = eventType;\n data.target = data.target || this;\n this.events.dispatchImmediately(eventType, data);\n } else {\n this.events.dispatchImmediately(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n };\n /**\r\n * Returns a unique placeholder suitable for the key.\r\n *\r\n * @param key Key\r\n * @return Random string to be used as placeholder\r\n */\n Registry.prototype.getPlaceholder = function (key) {\n if ($type.hasValue(this._placeholders[key])) {\n return this._placeholders[key];\n }\n this._placeholders[key] = \"__amcharts_\" + key + \"_\" + $string.random(8) + \"__\";\n return this._placeholders[key];\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.addToInvalidComponents = function (component) {\n if (component.baseId) {\n $array.move(this.invalidDatas[component.baseId], component);\n } else {\n $array.move(this.invalidDatas[\"noBase\"], component);\n }\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.removeFromInvalidComponents = function (component) {\n if (component.baseId) {\n $array.remove(this.invalidDatas[component.baseId], component);\n }\n $array.remove(this.invalidDatas[\"noBase\"], component);\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.addToInvalidSprites = function (sprite) {\n if (sprite.baseId) {\n $array.add(this.invalidSprites[sprite.baseId], sprite);\n } else {\n $array.add(this.invalidSprites[\"noBase\"], sprite);\n }\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.removeFromInvalidSprites = function (sprite) {\n if (sprite.baseId) {\n $array.remove(this.invalidSprites[sprite.baseId], sprite);\n }\n $array.remove(this.invalidSprites[\"noBase\"], sprite);\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.addToInvalidPositions = function (sprite) {\n if (sprite.baseId) {\n $array.add(this.invalidPositions[sprite.baseId], sprite);\n } else {\n $array.add(this.invalidPositions[\"noBase\"], sprite);\n }\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.removeFromInvalidPositions = function (sprite) {\n if (sprite.baseId) {\n $array.remove(this.invalidPositions[sprite.baseId], sprite);\n }\n $array.remove(this.invalidPositions[\"noBase\"], sprite);\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.addToInvalidLayouts = function (sprite) {\n if (sprite.baseId) {\n $array.add(this.invalidLayouts[sprite.baseId], sprite);\n } else {\n $array.add(this.invalidLayouts[\"noBase\"], sprite);\n }\n };\n /**\r\n * @ignore\r\n */\n Registry.prototype.removeFromInvalidLayouts = function (sprite) {\n if (sprite.baseId) {\n $array.remove(this.invalidLayouts[sprite.baseId], sprite);\n }\n $array.remove(this.invalidLayouts[\"noBase\"], sprite);\n };\n return Registry;\n}();\nexport { Registry };\n/**\r\n * A singleton global instance of [[Registry]].\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var registry = new Registry();\n/**\r\n * Returns `true` if object is an instance of the class. It's the same as `instanceof` except it doesn't need to import the class.\r\n *\r\n * @param object Object\r\n * @param name Class name\r\n * @return Is instance of class\r\n */\nexport function is(object, name) {\n var x = registry.registeredClasses[name];\n return x != null && object instanceof x;\n}\n//# sourceMappingURL=Registry.js.map","import { __extends, __generator } from \"tslib\";\nimport { Disposer, MultiDisposer } from \"./Disposer\";\nimport { EventDispatcher } from \"./EventDispatcher\";\nimport * as $array from \"./Array\";\nimport * as $iter from \"./Iterator\";\n/**\r\n * @todo Description\r\n */\nvar IndexedIterable = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param array List items\r\n * @param start Start index\r\n * @param end End index\r\n */\n function IndexedIterable(array, start, end) {\n this._array = array;\n this._start = start;\n this._end = end;\n }\n /**\r\n * Returns a list item iterator.\r\n *\r\n * @return Iterator\r\n */\n IndexedIterable.prototype.iterator = function () {\n var _this = this;\n return function (push) {\n if (_this._start !== _this._end) {\n if (_this._start < _this._end) {\n for (var i = _this._start; i < _this._end; ++i) {\n if (!push(_this._array[i])) {\n break;\n }\n }\n } else {\n for (var i = _this._start - 1; i >= _this._end; --i) {\n if (!push(_this._array[i])) {\n break;\n }\n }\n }\n }\n };\n };\n /**\r\n * Returns an interable list sorted backwards than current list.\r\n *\r\n * @return List\r\n */\n IndexedIterable.prototype.backwards = function () {\n return new IndexedIterable(this._array, this._end, this._start);\n };\n /**\r\n * Returns a new list consisting only of specific range of items between\r\n * `start` and `end` indexes.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return List\r\n */\n IndexedIterable.prototype.range = function (start, end) {\n if (start <= end) {\n if (this._start === this._end) {\n return this;\n } else if (this._start < this._end) {\n var diff = end - start;\n start = Math.max(this._start + start, this._start);\n end = Math.min(start + diff, this._end);\n return new IndexedIterable(this._array, start, end);\n } else {\n var diff = end - start;\n start = Math.max(this._start - start, this._end);\n end = Math.max(start - diff, this._end);\n return new IndexedIterable(this._array, start, end);\n }\n } else {\n throw new Error(\"Start index must be lower than end index\");\n }\n };\n return IndexedIterable;\n}();\nexport { IndexedIterable };\n/**\r\n * ListGrouper organizes [[List]] items into groups.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar ListGrouper = /** @class */function (_super) {\n __extends(ListGrouper, _super);\n /**\r\n * Constructor.\r\n */\n function ListGrouper(list, getKey, sort) {\n var _this = _super.call(this, [list.events.on(\"inserted\", function (x) {\n var value = x.newValue;\n var key = _this._getKey(value);\n var index = 0;\n $iter.eachContinue(list.iterator(), function (x) {\n if (x === value) {\n return false;\n } else if (_this._getKey(x) === key) {\n ++index;\n }\n return true;\n });\n _this._insert(value, key, index);\n }, undefined, false), list.events.on(\"removed\", function (x) {\n _this._remove(x.oldValue);\n }, undefined, false)]) || this;\n /**\r\n * Grouping keys.\r\n */\n _this._keys = [];\n /**\r\n * List item groups.\r\n */\n _this._groups = {};\n _this._getKey = getKey;\n _this._sort = sort;\n $iter.each(list.iterator(), function (x) {\n _this._insert(x, getKey(x));\n });\n return _this;\n }\n /**\r\n * Inserts an item (`x`) to a specific group (`key`) and specific `index`.\r\n *\r\n * @param x Item\r\n * @param key Group name\r\n * @param index Index\r\n */\n ListGrouper.prototype._insert = function (x, key, index) {\n if (this._groups[key] == null) {\n this._groups[key] = [];\n // TODO code duplication with SortedList\n var _a = $array.getSortedIndex(this._keys, this._sort, key),\n found = _a.found,\n index_1 = _a.index;\n if (found) {\n throw new Error(\"Key already exists: \" + key);\n } else {\n $array.insertIndex(this._keys, index_1, key);\n }\n }\n if (index == null) {\n this._groups[key].push(x);\n } else {\n $array.insertIndex(this._groups[key], index, x);\n }\n };\n /**\r\n * Removes an item from the list.\r\n *\r\n * @param x Item to remove\r\n */\n ListGrouper.prototype._remove = function (x) {\n var key = this._getKey(x);\n var values = this._groups[key];\n if (values != null) {\n $array.remove(values, x);\n if (values.length === 0) {\n delete this._groups[key];\n var _a = $array.getSortedIndex(this._keys, this._sort, key),\n found = _a.found,\n index = _a.index;\n if (found) {\n $array.removeIndex(this._keys, index);\n } else {\n throw new Error(\"Key doesn't exist: \" + key);\n }\n }\n }\n };\n /**\r\n * Returns an iterator for the list.\r\n *\r\n * The iterator will iterate through all items in all groups.\r\n *\r\n * @return Iterator\r\n */\n ListGrouper.prototype.iterator = function () {\n var _this = this;\n return $iter.flatten($iter.map($iter.fromArray(this._keys), function (key) {\n return $iter.fromArray(_this._groups[key]);\n }));\n };\n return ListGrouper;\n}(MultiDisposer);\nexport { ListGrouper };\n/**\r\n * A disposable list, which when disposed itself will call `dispose()` method\r\n * on all its items.\r\n */\nvar ListDisposer = /** @class */function (_super) {\n __extends(ListDisposer, _super);\n function ListDisposer(list, disposeOnRemove) {\n if (disposeOnRemove === void 0) {\n disposeOnRemove = true;\n }\n var _this = this;\n if (disposeOnRemove) {\n var disposer_1 = list.events.on(\"removed\", function (x) {\n x.oldValue.dispose();\n }, undefined, false);\n _this = _super.call(this, function () {\n disposer_1.dispose();\n // TODO clear the list ?\n $iter.each(list.iterator(), function (x) {\n x.dispose();\n });\n }) || this;\n } else {\n _this = _super.call(this, function () {\n // TODO clear the list ?\n $iter.each(list.iterator(), function (x) {\n x.dispose();\n });\n }) || this;\n }\n return _this;\n }\n return ListDisposer;\n}(Disposer);\nexport { ListDisposer };\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n */\nfunction checkBounds(index, len) {\n if (!(index >= 0 && index < len)) {\n throw new Error(\"Index out of bounds: \" + index);\n }\n}\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\nvar List = /** @class */function () {\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\n function List(initial) {\n if (initial === void 0) {\n initial = [];\n }\n /**\r\n * Event dispatcher.\r\n */\n this.events = new EventDispatcher();\n this._values = initial;\n }\n Object.defineProperty(List.prototype, \"values\", {\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\n get: function () {\n return this._values;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\n List.prototype.contains = function (value) {\n return this._values.indexOf(value) !== -1;\n };\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\n List.prototype.removeValue = function (value) {\n var i = 0;\n var length = this._values.length;\n while (i < length) {\n // TODO handle NaN\n if (this._values[i] === value) {\n this.removeIndex(i);\n --length;\n } else {\n ++i;\n }\n }\n };\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\n List.prototype.indexOf = function (value) {\n return $array.indexOf(this._values, value);\n };\n Object.defineProperty(List.prototype, \"length\", {\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\n get: function () {\n return this._values.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\n List.prototype.hasIndex = function (index) {\n return index >= 0 && index < this._values.length;\n };\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\n List.prototype.getIndex = function (index) {\n return this._values[index];\n };\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\n List.prototype.setIndex = function (index, value) {\n checkBounds(index, this._values.length);\n var oldValue = this._values[index];\n // Do nothing if the old value and the new value are the same\n if (oldValue !== value) {\n this._values[index] = value;\n if (this.events.isEnabled(\"setIndex\")) {\n this.events.dispatchImmediately(\"setIndex\", {\n type: \"setIndex\",\n target: this,\n index: index,\n oldValue: oldValue,\n newValue: value\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n oldValue: oldValue\n });\n }\n if (this.events.isEnabled(\"inserted\")) {\n this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: this,\n newValue: value\n });\n }\n }\n return oldValue;\n };\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\n List.prototype.insertIndex = function (index, value) {\n checkBounds(index, this._values.length + 1);\n $array.insertIndex(this._values, index, value);\n if (this.events.isEnabled(\"insertIndex\")) {\n this.events.dispatchImmediately(\"insertIndex\", {\n type: \"insertIndex\",\n target: this,\n index: index,\n newValue: value\n });\n }\n if (this.events.isEnabled(\"inserted\")) {\n this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: this,\n newValue: value\n });\n }\n };\n /**\r\n * [_sortQuicksort description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n */\n List.prototype._sortQuicksort = function (low, high, order) {\n if (low < high) {\n var p = this._sortPartition(low, high, order);\n this._sortQuicksort(low, p, order);\n this._sortQuicksort(p + 1, high, order);\n }\n };\n /**\r\n * [_sortPartition description]\r\n *\r\n * @todo Description\r\n * @param low [description]\r\n * @param high [description]\r\n * @param order [description]\r\n * @return [description]\r\n */\n List.prototype._sortPartition = function (low, high, order) {\n var values = this._values;\n var pivot = values[low];\n var i = low - 1;\n var j = high + 1;\n for (;;) {\n do {\n ++i;\n } while (order(values[i], pivot) < 0);\n do {\n --j;\n } while (order(values[j], pivot) > 0);\n if (i >= j) {\n return j;\n } else {\n this.swap(i, j);\n }\n }\n };\n /**\r\n * Reorders list items according to specific ordering function.\r\n *\r\n * @param order Ordering function\r\n */\n List.prototype.sort = function (order) {\n // https://en.wikipedia.org/wiki/Quicksort#Hoare_partition_scheme\n // @todo faster implementation of this\n // @todo test this\n this._sortQuicksort(0, this._values.length - 1, order);\n };\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\n List.prototype.swap = function (a, b) {\n var len = this._values.length;\n checkBounds(a, len);\n checkBounds(b, len);\n if (a !== b) {\n var value_a = this._values[a];\n var value_b = this._values[b];\n this._values[a] = value_b;\n if (this.events.isEnabled(\"setIndex\")) {\n this.events.dispatchImmediately(\"setIndex\", {\n type: \"setIndex\",\n target: this,\n index: a,\n oldValue: value_a,\n newValue: value_b\n });\n }\n this._values[b] = value_a;\n if (this.events.isEnabled(\"setIndex\")) {\n this.events.dispatchImmediately(\"setIndex\", {\n type: \"setIndex\",\n target: this,\n index: b,\n oldValue: value_b,\n newValue: value_a\n });\n }\n }\n };\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\n List.prototype.removeIndex = function (index) {\n checkBounds(index, this._values.length);\n var oldValue = this._values[index];\n $array.removeIndex(this._values, index);\n if (this.events.isEnabled(\"removeIndex\")) {\n this.events.dispatchImmediately(\"removeIndex\", {\n type: \"removeIndex\",\n target: this,\n index: index,\n oldValue: oldValue\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n oldValue: oldValue\n });\n }\n return oldValue;\n };\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\n List.prototype.moveValue = function (value, toIndex) {\n // TODO don't do anything if the desired index is the same as the current index\n var index = this.indexOf(value);\n // TODO remove all old values rather than only the first ?\n if (index !== -1) {\n var oldValue = this._values[index];\n $array.removeIndex(this._values, index);\n if (this.events.isEnabled(\"removeIndex\")) {\n this.events.dispatchImmediately(\"removeIndex\", {\n type: \"removeIndex\",\n target: this,\n index: index,\n oldValue: oldValue\n });\n }\n }\n if (toIndex == null) {\n toIndex = this._values.length;\n this._values.push(value);\n } else {\n $array.insertIndex(this._values, toIndex, value);\n }\n if (this.events.isEnabled(\"insertIndex\")) {\n this.events.dispatchImmediately(\"insertIndex\", {\n type: \"insertIndex\",\n target: this,\n index: toIndex,\n newValue: value\n });\n }\n if (index === -1) {\n if (this.events.isEnabled(\"inserted\")) {\n this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: this,\n newValue: value\n });\n }\n }\n };\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\n List.prototype.push = function (value) {\n var index = this._values.push(value) - 1;\n if (this.events.isEnabled(\"insertIndex\")) {\n this.events.dispatchImmediately(\"insertIndex\", {\n type: \"insertIndex\",\n target: this,\n index: index,\n newValue: value\n });\n }\n if (this.events.isEnabled(\"inserted\")) {\n this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: this,\n newValue: value\n });\n }\n return value;\n };\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\n List.prototype.unshift = function (value) {\n this.insertIndex(0, value);\n };\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\n List.prototype.pushAll = function (values) {\n var _this = this;\n $array.each(values, function (value) {\n _this.push(value);\n });\n };\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\n List.prototype.copyFrom = function (source) {\n this.pushAll(source._values);\n };\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\n List.prototype.pop = function () {\n var index = this._values.length - 1;\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\n };\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\n List.prototype.shift = function () {\n return this._values.length ? this.removeIndex(0) : undefined;\n };\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\n List.prototype.setAll = function (newArray) {\n var _this = this;\n // @tod if a value exists in both the new and old arrays, don't send remove/insert events\n var oldArray = $array.copy(this._values);\n this._values.length = 0;\n $array.each(newArray, function (value) {\n _this._values.push(value);\n });\n if (this.events.isEnabled(\"setAll\")) {\n this.events.dispatchImmediately(\"setAll\", {\n type: \"setAll\",\n target: this,\n oldArray: oldArray,\n newArray: this._values // TODO make a copy ?\n });\n }\n if (this.events.isEnabled(\"removed\")) {\n $array.each(oldArray, function (x) {\n _this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: _this,\n oldValue: x\n });\n });\n }\n if (this.events.isEnabled(\"inserted\")) {\n $array.each(this._values, function (x) {\n _this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: _this,\n newValue: x\n });\n });\n }\n };\n /**\r\n * Removes all items from the list.\r\n */\n List.prototype.clear = function () {\n this.setAll([]);\n };\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\n List.prototype.iterator = function () {\n return $iter.fromArray(this._values);\n };\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\n List.prototype[Symbol.iterator] = function () {\n var length, i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n length = this._values.length;\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < length)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._values[i]];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n ++i;\n return [3 /*break*/, 1];\n case 4:\n return [2 /*return*/];\n }\n });\n };\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\n List.prototype.each = function (f) {\n $array.each(this._values, f);\n };\n /**\r\n * Returns a specific range of list items, which can be iterated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Code duplication with IndexedIterable\r\n * @param start Start index\r\n * @param end End index\r\n * @return Range\r\n */\n List.prototype.range = function (start, end) {\n if (start <= end) {\n var diff = end - start;\n start = Math.max(start, 0);\n end = Math.min(start + diff, this._values.length);\n return new IndexedIterable(this._values, start, end);\n } else {\n throw new Error(\"Start index must be lower than end index\");\n }\n };\n /**\r\n * Returns an iterator that has list items sorted backwards.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List\r\n */\n List.prototype.backwards = function () {\n return new IndexedIterable(this._values, this._values.length, 0);\n };\n return List;\n}();\nexport { List };\n/**\r\n * A version of a [[List]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\nvar ListTemplate = /** @class */function (_super) {\n __extends(ListTemplate, _super);\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\n function ListTemplate(t) {\n var _this = _super.call(this) || this;\n _this.template = t;\n return _this;\n }\n Object.defineProperty(ListTemplate.prototype, \"template\", {\n /**\r\n * @return Template object\r\n */\n get: function () {\n return this._template;\n },\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\n set: function (v) {\n v.isTemplate = true;\n this._template = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\n ListTemplate.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source.iterator(), function (value) {\n _this.push(value.clone());\n });\n };\n ListTemplate.prototype.create = function (make) {\n var clone = make != null ? new make() : this.template.clone();\n this.push(clone);\n return clone;\n };\n /**\r\n * Creates an exact clone of the list, including its items and template.\r\n *\r\n * @return New list\r\n */\n ListTemplate.prototype.clone = function () {\n var out = new ListTemplate(this.template);\n var values = this.values;\n var length = values.length;\n for (var i = 0; i < length; ++i) {\n out.push(values[i].clone());\n }\n return out;\n };\n return ListTemplate;\n}(List);\nexport { ListTemplate };\n//# sourceMappingURL=List.js.map","import { __extends, __generator } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { EventDispatcher } from \"./EventDispatcher\";\nimport * as $array from \"./Array\";\nimport * as $iter from \"./Iterator\";\nimport * as $type from \"./Type\";\n/**\r\n * Ordered list contains values of any type in an indexed array.\r\n */\nvar OrderedList = /** @class */function () {\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\n function OrderedList(initial) {\n /**\r\n * Holds list values.\r\n */\n this._values = [];\n /**\r\n * Event dispatcher.\r\n */\n this.events = new EventDispatcher();\n if (initial != null) {\n this.setAll(initial);\n }\n }\n Object.defineProperty(OrderedList.prototype, \"values\", {\n /**\r\n * All items of the list.\r\n *\r\n * Do not modify the list directly. Rather use `insert()` and `remove()`\r\n * methods.\r\n *\r\n * @return List values\r\n */\n get: function () {\n return this._values;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Inserts a value into list item array.\r\n *\r\n * @param value Value\r\n */\n OrderedList.prototype._insert = function (value) {\n this._values.push(value);\n return this._values.length - 1;\n };\n Object.defineProperty(OrderedList.prototype, \"length\", {\n /**\r\n * Number of items in the list.\r\n *\r\n * @readonly\r\n * @return Length\r\n */\n get: function () {\n return this._values.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns the index of the specific `value`.\r\n *\r\n * -1 if not found.\r\n *\r\n * @param value Value\r\n * @return Index\r\n */\n OrderedList.prototype.indexOf = function (value) {\n return $array.indexOf(this._values, value);\n };\n /**\r\n * Checks if list contains the `value`.\r\n *\r\n * @param value Value\r\n * @return In the list?\r\n */\n OrderedList.prototype.contains = function (value) {\n return this.indexOf(value) !== -1;\n };\n /**\r\n * Returns an item at specific `index`.\r\n *\r\n * @param index Index\r\n * @return Item\r\n */\n OrderedList.prototype.getIndex = function (index) {\n return this._values[index];\n };\n Object.defineProperty(OrderedList.prototype, \"first\", {\n /**\r\n * First item in the list.\r\n *\r\n * @return Item\r\n */\n get: function () {\n return this._values[0];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OrderedList.prototype, \"last\", {\n /**\r\n * Last item in the list.\r\n *\r\n * @return Item\r\n */\n get: function () {\n return this._values[this._values.length - 1];\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Inserts a value into list.\r\n *\r\n * @param value Value\r\n */\n OrderedList.prototype.insert = function (value) {\n var index = this._insert(value);\n if (this.events.isEnabled(\"inserted\")) {\n this.events.dispatchImmediately(\"inserted\", {\n type: \"inserted\",\n target: this,\n index: index,\n newValue: value\n });\n }\n };\n /**\r\n * Removes an item with the `value` from the list.\r\n *\r\n * @param value Value\r\n */\n OrderedList.prototype.remove = function (value) {\n var index = this.indexOf(value);\n if (index !== -1) {\n var oldValue = this._values[index];\n $array.removeIndex(this._values, index);\n if (this.events.isEnabled(\"removed\")) {\n this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: this,\n index: index,\n oldValue: oldValue\n });\n }\n }\n };\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\n OrderedList.prototype.setAll = function (newArray) {\n var _this = this;\n $array.eachReverse(this._values, function (x, i) {\n _this._values.pop();\n if (_this.events.isEnabled(\"removed\")) {\n _this.events.dispatchImmediately(\"removed\", {\n type: \"removed\",\n target: _this,\n index: i,\n oldValue: x\n });\n }\n });\n $array.each(newArray, function (value) {\n _this.insert(value);\n });\n };\n /**\r\n * Removes all items from the list.\r\n */\n OrderedList.prototype.clear = function () {\n this.setAll([]);\n };\n /**\r\n * Returns part of the list between `start` and `end` indexes, as a new\r\n * [[OrderedList]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return Items in range\r\n */\n OrderedList.prototype.slice = function (start, end) {\n var out = new OrderedList();\n out._values = this._values.slice(start, end);\n return out;\n };\n /**\r\n * Finds a closest available index to the `value` in specified direction.\r\n *\r\n * @ignore exclude from docs\r\n * @param value value to search for\r\n * @param fn A callback function that returns value of the item\r\n * @param direction Direciton\r\n * @return Index\r\n */\n OrderedList.prototype.findClosestIndex = function (value, fn, direction) {\n if (direction === void 0) {\n direction = \"any\";\n }\n // Init temporary values\n var closestIndex = -1;\n var closestValue;\n var closestDifference;\n var i = 0;\n $iter.eachContinue(this.iterator(), function (element) {\n var item = fn(element);\n // Calc difference\n if (direction === \"any\") {\n // Exact match?\n if (item === value) {\n // Found exact value - don't bother searching further\n closestIndex = i;\n return false;\n }\n var difference = Math.abs(value - item);\n if (!$type.hasValue(closestDifference) || closestDifference > difference) {\n closestIndex = i;\n closestValue = item;\n closestDifference = difference;\n }\n } else if (direction === \"left\" && item < value) {\n if (!$type.hasValue(closestValue) || closestValue < item) {\n closestIndex = i;\n closestValue = item;\n }\n } else if (direction === \"right\" && item >= value) {\n if (!$type.hasValue(closestValue) || closestValue >= item) {\n closestIndex = i;\n closestValue = item;\n }\n }\n ++i;\n return true;\n });\n // Found nothing?\n if (closestIndex === -1) {\n if (direction === \"left\") {\n // Use First one\n closestIndex = 0;\n } else if (direction === \"right\") {\n // Use last item\n closestIndex = this.length - 1;\n }\n }\n return closestIndex;\n };\n /**\r\n * Returns a list iterator.\r\n *\r\n * @return Iterator\r\n */\n OrderedList.prototype.iterator = function () {\n return $iter.fromArray(this._values);\n };\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\n OrderedList.prototype[Symbol.iterator] = function () {\n var length, i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n length = this._values.length;\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < length)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._values[i]];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n ++i;\n return [3 /*break*/, 1];\n case 4:\n return [2 /*return*/];\n }\n });\n };\n /**\r\n * Calls `f` for each element in the list.\r\n */\n OrderedList.prototype.each = function (f) {\n $array.each(this._values, f);\n };\n return OrderedList;\n}();\nexport { OrderedList };\n/**\r\n * A list where all items are ordered according to specific ordering function,\r\n * which is passed in via constructor parameter, when creating an instance of\r\n * [[SortedList]].\r\n */\nvar SortedList = /** @class */function (_super) {\n __extends(SortedList, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param sort Ordering function\r\n */\n function SortedList(sort) {\n var _this = _super.call(this) || this;\n _this._ordering = sort;\n return _this;\n }\n /**\r\n * Inserts item into the list.\r\n *\r\n * @param value Item\r\n */\n SortedList.prototype._insert = function (value) {\n var index = $array.getSortedIndex(this._values, this._ordering, value).index;\n $array.insertIndex(this._values, index, value);\n return index;\n };\n /**\r\n * Returns index of the item in list if found.\r\n *\r\n * -1 if item is not in the list.\r\n *\r\n * @param value Item to search for\r\n * @return Index\r\n */\n SortedList.prototype.indexOf = function (value) {\n var _a = $array.getSortedIndex(this._values, this._ordering, value),\n found = _a.found,\n index = _a.index;\n if (found) {\n return index;\n } else {\n return -1;\n }\n };\n /**\r\n * [udpate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\n SortedList.prototype.update = function (value) {\n // @todo test this\n var index = $array.indexOf(this._values, value);\n // @todo throw an error if it doesn't exist ?\n if (index !== -1) {\n var last = this._values.length - 1;\n // Check if the current ordering is correct\n if (!((index === 0 || this._ordering(this._values[index - 1], value) < 0) && (index === last || this._ordering(value, this._values[index + 1]) < 0))) {\n // TODO send remove/insert/move events\n $array.removeIndex(this._values, index);\n this._insert(value);\n }\n }\n };\n return SortedList;\n}(OrderedList);\nexport { SortedList };\n/**\r\n * A version of a [[OrderedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\nvar OrderedListTemplate = /** @class */function (_super) {\n __extends(OrderedListTemplate, _super);\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n */\n function OrderedListTemplate(t) {\n var _this = _super.call(this) || this;\n _this.template = t;\n return _this;\n }\n Object.defineProperty(OrderedListTemplate.prototype, \"template\", {\n /**\r\n * @return Template object\r\n */\n get: function () {\n return this._template;\n },\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\n set: function (v) {\n v.isTemplate = true;\n this._template = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\n OrderedListTemplate.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source.iterator(), function (value) {\n _this.insert(value.clone());\n });\n };\n /**\r\n * Returns part of the list, starting at `start` and ending at `end` indexes,\r\n * as a new [[OrderedListTemplate]].\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @return New list\r\n */\n OrderedListTemplate.prototype.slice = function (start, end) {\n var out = new OrderedListTemplate(this.template);\n out._values = this._values.slice(start, end);\n return out;\n };\n OrderedListTemplate.prototype.create = function (make) {\n var clone = make != null ? new make() : this.template.clone();\n this.insert(clone);\n return clone;\n };\n return OrderedListTemplate;\n}(OrderedList);\nexport { OrderedListTemplate };\n/**\r\n * A version of a [[SortedList]] that has a \"template\".\r\n *\r\n * A template is an instance of an object, that can be used to create new\r\n * elements in the list without actually needing to create instances for those.\r\n *\r\n * When new element is created in the list, e.g. by calling its `create()`\r\n * method, an exact copy of the element is created (including properties and\r\n * other attributes), inserted into the list and returned.\r\n */\nvar SortedListTemplate = /** @class */function (_super) {\n __extends(SortedListTemplate, _super);\n /**\r\n * Constructor\r\n *\r\n * @param t Template object\r\n * @param sort Ordering function\r\n */\n function SortedListTemplate(t, sort) {\n var _this = _super.call(this, sort) || this;\n _this.template = t;\n return _this;\n }\n Object.defineProperty(SortedListTemplate.prototype, \"template\", {\n /**\r\n * @return Template object\r\n */\n get: function () {\n return this._template;\n },\n /**\r\n * A \"template\" object to copy all properties from when creating new list\r\n * items.\r\n *\r\n * @param v Template object\r\n */\n set: function (v) {\n v.isTemplate = true;\n this._template = v;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all elements from other list.\r\n *\r\n * @param source Source list\r\n */\n SortedListTemplate.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source.iterator(), function (value) {\n _this.insert(value.clone());\n });\n };\n SortedListTemplate.prototype.create = function (make) {\n var clone = make != null ? new make() : this.template.clone();\n this.insert(clone);\n return clone;\n };\n return SortedListTemplate;\n}(SortedList);\nexport { SortedListTemplate };\n//# sourceMappingURL=SortedList.js.map","/**\r\n * ============================================================================\r\n * COMPARING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Comparing function used for ordering.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Number 1\r\n * @param b Number 2\r\n * @return Result\r\n */\nexport function order(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else {\n return 1;\n }\n}\n//# sourceMappingURL=Number.js.map","/**\r\n * A collection of functions for ordering.\r\n */\n/**\r\n * [reverse description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a [description]\r\n * @return [description]\r\n */\nexport function reverse(a) {\n switch (a) {\n case 0:\n return 0;\n case -1:\n return 1;\n case 1:\n return -1;\n }\n}\n/**\r\n * [or description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param a Item 1\r\n * @param b Item 2\r\n * @return [description]\r\n */\nexport function or(a, b) {\n if (a === 0) {\n return b;\n } else {\n return a;\n }\n}\n//# sourceMappingURL=Order.js.map","/**\r\n * An Adapter can be used to apply chained synchronous transformations to any\r\n * value at runtime.\r\n *\r\n * Each type class using Adapters must have `adapters` property and adapter\r\n * interface defined.\r\n *\r\n * Adapters can be used to allow external code to apply transformations to any\r\n * value at any time.\r\n *\r\n * For example we have a Weather class which has a method `now()` which returns\r\n * current temperature.\r\n *\r\n * ```\r\n * function now() {\r\n * // ... calculate temperature\r\n * let temp = \"Temperature now is \" + degrees + \"F\";\r\n * return temp;\r\n * }\r\n * ```\r\n *\r\n * Now, supposed we want to let other classes to modify the output of the\r\n * `now()`? We just apply an adapter to the `temp` before it is returned:\r\n *\r\n * ```\r\n * temp = this.adapters.apply(\"now\", {\r\n * temp: temp,\r\n * degrees: degrees\r\n * }).temp;\r\n * ```\r\n *\r\n * Some other class might tap onto it by defining an Adapter that calculates\r\n * the temperature in Celsius:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"(\" + farenheitToCelsius(arg.degrees) + \"C)\";\r\n * return arh;\r\n * });\r\n *\r\n * Furthermore some time-related class could add time:\r\n *\r\n * weather.adapters.add(\"now\", (arg) => {\r\n * arg.temp += \"; the time now is \" + (new Date().toLocaleString());\r\n * return arh;\r\n * });\r\n *\r\n * So without adapters we would get output like this:\r\n *\r\n * ```\r\n * Temperature now is 90F\r\n * ```\r\n *\r\n * With adapters applied we now have:\r\n *\r\n * ```\r\n * Temperature now is 90F (32C); the time now is 12/11/2012, 7:00:00 PM\r\n * ```\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { SortedList } from \"./SortedList\";\nimport * as $number from \"./Number\";\nimport * as $order from \"./Order\";\nimport * as $iter from \"../utils/Iterator\";\nimport * as $array from \"../utils/Array\";\nimport * as $type from \"../utils/Type\";\nimport * as $object from \"../utils/Object\";\n/**\r\n * ============================================================================\r\n * GLOBAL ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A global adapter is an adpater that is attached to a class type rather than\r\n * specific object instance.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar GlobalAdapter = /** @class */function () {\n function GlobalAdapter() {\n /**\r\n * Callback id iterator.\r\n */\n this._callbackId = 0;\n /**\r\n * A list of if callbacks (adapters).\r\n */\n this._callbacks = new SortedList(function (left, right) {\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\n });\n }\n /**\r\n * Adds a global callback which is not specific to any particular object.\r\n * Whenever an adapter in any object of the specific class type is invoked\r\n * global adapters will kick in.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param callback Callback function\r\n * @param priority Priority (higher priority meaning adapter will be applied later)\r\n * @param scope Callback function scaope\r\n */\n GlobalAdapter.prototype.addAll = function (type, key, callback, priority, scope) {\n if (priority === void 0) {\n priority = 0;\n }\n this._callbacks.insert({\n id: ++this._callbackId,\n key: key,\n callback: callback,\n priority: priority,\n scope: scope,\n type: type\n });\n };\n /**\r\n * Returns if there are adapters for specific type available.\r\n *\r\n * @param type Adapter type\r\n * @param key Adapter key\r\n * @return {boolean}\r\n */\n GlobalAdapter.prototype.isEnabled = function (type, key) {\n return $array.any(this._callbacks.values, function (x) {\n return x.key === key && type instanceof x.type;\n });\n };\n /**\r\n * Applies global adapters for the object of the specific type.\r\n *\r\n * @param type Class type\r\n * @param key Adapter key\r\n * @param value Value\r\n */\n GlobalAdapter.prototype.applyAll = function (type, key, value) {\n // This is needed to improve the performance and reduce garbage collection\n var callbacks = this._callbacks.values;\n var length = callbacks.length;\n if (length == 0) {\n return value;\n }\n // Cycle through all callbacks and find the ones we need to use\n for (var i = 0; i < length; ++i) {\n var item = callbacks[i];\n if (item.key === key && type instanceof item.type) {\n value = item.callback.call(item.scope, value, type, key);\n }\n }\n return value;\n };\n return GlobalAdapter;\n}();\nexport { GlobalAdapter };\n/**\r\n * A global Adapter for plugins that want to add specific\r\n * functionality for any chart, not just specific instance.\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries, \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * @ignore\r\n */\nexport var globalAdapter = new GlobalAdapter();\n/**\r\n * ============================================================================\r\n * REGULAR ADAPTER\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Adapter allows adding ordered callback functions and associating them with a\r\n * string-based key. An Adapter user can then easily invoke those callbacks to\r\n * apply custom functions on its input, output or intermediate values.\r\n *\r\n * Custom code and plugins can add their own callbacks to modify and enhance\r\n * core functionality.\r\n *\r\n * See the description of `add()` for an example.\r\n *\r\n * Almost any object in amCharts4 has own adapter, accessible with `adapter`\r\n * property.\r\n *\r\n * Any adapters added to it will be applied to that object only.\r\n *\r\n * ### Global Adapters\r\n *\r\n * If you want to add an adapter which applies to all instances of the same\r\n * object type, like, for instance all slices in PieSeries, you can use\r\n * global adapter.\r\n *\r\n * Global adapter is a system-wide instance, accessible via `globalAdapter`.\r\n *\r\n * ```TypeScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * am4core.globalAdapter.addAll(am4charts.PieSeries. \"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n *\r\n * {@link https://www.amcharts.com/docs/v4/reference/adapter_module/#globalAdapter_property More info}.\r\n *\r\n * @important\r\n */\nvar Adapter = /** @class */function () {\n /**\r\n * Constructor, sets the object referece this Adapter should be used for.\r\n *\r\n * @param c Object\r\n */\n function Adapter(c) {\n /**\r\n * Internal counter for callback ids.\r\n */\n this._callbackId = 0;\n /**\r\n * A list of adapter callbacks.\r\n *\r\n * @param $number.order(left.priority, right.priority) [description]\r\n * @param $number.order(left.id, right.id));\t} [description]\r\n */\n this._callbacks = new SortedList(function (left, right) {\n return $order.or($number.order(left.priority, right.priority), $number.order(left.id, right.id));\n });\n this._disabled = {};\n this.object = c;\n // TODO this exposes the internal events\n this.events = this._callbacks.events;\n }\n /**\r\n * Adds a callback for a specific key.\r\n *\r\n * ```TypeScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", (value, target, key) => {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Override fill color value and make all slices green\r\n * chart.series.template.adapter.add(\"fill\", function(value, target, key) {\r\n * return am4core.color(\"#005500\");\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"adapter\": {\r\n * \t// Override fill color value and make all slices green\r\n * \t\"fill\": function(value, target, key) {\r\n * \t return am4core.color(\"#005500\");\r\n * \t}\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will call user-defined function (adapter) whenever `fill` value\r\n * is requested from the Pie series, allowing it to override the default\r\n * using custom code and any fuzzy logic.\r\n *\r\n * There can be any number of adapters set on one property key.\r\n *\r\n * In this case adapters will be applied in daisy-chain fashion. The first\r\n * adapter in queue will make its transformation. The next one will have\r\n * the output of the first adapter as a starting value, etc.\r\n *\r\n * The order of the adapters are determined either by the order they were\r\n * added in, or their `priority` value.\r\n *\r\n * The heigher the `priority`, the later in the game adapter will be applied.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n */\n Adapter.prototype.add = function (key, callback, priority, scope) {\n if (priority === void 0) {\n priority = 0;\n }\n this._callbacks.insert({\n id: ++this._callbackId,\n key: key,\n callback: callback,\n priority: priority,\n scope: scope\n });\n };\n /**\r\n * Checks whether specific adapter is already set.\r\n *\r\n * @param key Key\r\n * @param callback A callback function\r\n * @param priority The higher priority, the more chance the adapter will be applied last\r\n * @param scope Scope for the callback function\r\n * @returns Adapter set?\r\n */\n Adapter.prototype.has = function (key, callback, priority, scope) {\n if (priority === void 0) {\n priority = 0;\n }\n return $iter.contains(this._callbacks.iterator(), function (item) {\n return item.key === key && item.callback === callback && item.priority === priority && item.scope === scope;\n });\n };\n /**\r\n * Removes adapter callbacks for the specific `key`.\r\n *\r\n * If `priority` is specified, only callbacks for that priority are removed.\r\n *\r\n * @param key Key\r\n * @param priority Priority\r\n * @todo Implement\r\n */\n Adapter.prototype.remove = function (key, priority) {\n var _this = this;\n // It has to make a copy because it removes the elements while iterating\n // TODO inefficient\n // TODO should this re-enable the key ?\n $array.each($iter.toArray(this._callbacks.iterator()), function (item) {\n // TODO test this\n if (item.key === key && (!$type.isNumber(priority) || priority === item.priority)) {\n _this._callbacks.remove(item);\n }\n });\n };\n /**\r\n * Enable applying adapters for a certain key, if it was disabled before by\r\n * `disableKey()`.\r\n *\r\n * @param key Key\r\n */\n Adapter.prototype.enableKey = function (key) {\n delete this._disabled[key];\n };\n /**\r\n * Disable applying adapters for a certain key.\r\n *\r\n * Optionally, can set how many applies to skip before automatically\r\n * re-enabling the applying.\r\n *\r\n * @param key Key\r\n * @param amount Number of applies to skip\r\n */\n Adapter.prototype.disableKey = function (key, amount) {\n if (amount === void 0) {\n amount = Infinity;\n }\n this._disabled[key] = amount;\n };\n Adapter.prototype._hasListenersByType = function (key) {\n return $array.any(this._callbacks.values, function (x) {\n return x.key === key;\n });\n };\n /**\r\n * Returns if there are any enabled adapters set for the specific `key`.\r\n *\r\n * @returns Are there any adapters for the key?\r\n */\n Adapter.prototype.isEnabled = function (key) {\n return this._disabled[key] == null && (this._hasListenersByType(key) || globalAdapter.isEnabled(this.object, key));\n };\n Adapter.prototype._shouldDispatch = function (key) {\n var count = this._disabled[key];\n if (!$type.isNumber(count)) {\n return true;\n } else {\n if (count <= 1) {\n delete this._disabled[key];\n } else {\n --this._disabled[key];\n }\n return false;\n }\n };\n /**\r\n * Passes the input value through all the callbacks for the defined `key`.\r\n *\r\n * @param key Key\r\n * @param value Input value\r\n * @param ...rest Rest of the parameters to be passed into callback\r\n * @return Output value\r\n */\n Adapter.prototype.apply = function (key, value) {\n if (this._shouldDispatch(key)) {\n // This is needed to improve the performance and reduce garbage collection\n var callbacks = this._callbacks.values;\n var length_1 = callbacks.length;\n if (length_1 > 0) {\n for (var i = 0; i < length_1; ++i) {\n var item = callbacks[i];\n if (item.key === key) {\n value = item.callback.call(item.scope, value, this.object, key);\n }\n }\n }\n // Apply global adapters\n value = globalAdapter.applyAll(this.object, key, value);\n return value;\n } else {\n return value;\n }\n };\n /**\r\n * Returns all adapter keys which are in this adapter.\r\n *\r\n * @return Adapter keys\r\n */\n Adapter.prototype.keys = function () {\n // TODO inefficient\n return $iter.toArray($iter.map(this._callbacks.iterator(), function (x) {\n return x.key;\n }));\n };\n /**\r\n * Copies all the adapter callbacks from `source`.\r\n *\r\n * @param source An Adapter to copy items from\r\n */\n Adapter.prototype.copyFrom = function (source) {\n var _this = this;\n $iter.each(source._callbacks.iterator(), function (x) {\n _this.add(x.key, x.callback, x.priority, x.scope);\n });\n $object.each(source._disabled, function (key, val) {\n _this._disabled[key] = val;\n });\n };\n /**\r\n * Clears all callbacks from this Adapter.\r\n */\n Adapter.prototype.clear = function () {\n // TODO should this also re-enable all the keys ?\n this._callbacks.clear();\n };\n return Adapter;\n}();\nexport { Adapter };\n//# sourceMappingURL=Adapter.js.map","/**\r\n * A collection of color-related functions\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $math from \"./Math\";\nimport * as $type from \"./Type\";\n/**\r\n * Define named colors for easy resolution to RGB.\r\n */\nvar namedColors = {\n aliceblue: {\n r: 240,\n g: 248,\n b: 255\n },\n antiquewhite: {\n r: 250,\n g: 235,\n b: 215\n },\n aqua: {\n r: 0,\n g: 255,\n b: 255\n },\n aquamarine: {\n r: 127,\n g: 255,\n b: 212\n },\n azure: {\n r: 240,\n g: 255,\n b: 255\n },\n beige: {\n r: 245,\n g: 245,\n b: 220\n },\n bisque: {\n r: 255,\n g: 228,\n b: 196\n },\n black: {\n r: 0,\n g: 0,\n b: 0\n },\n blanchedalmond: {\n r: 255,\n g: 235,\n b: 205\n },\n blue: {\n r: 0,\n g: 0,\n b: 255\n },\n blueviolet: {\n r: 138,\n g: 43,\n b: 226\n },\n brown: {\n r: 165,\n g: 42,\n b: 42\n },\n burlywood: {\n r: 222,\n g: 184,\n b: 135\n },\n cadetblue: {\n r: 95,\n g: 158,\n b: 160\n },\n chartreuse: {\n r: 127,\n g: 255,\n b: 0\n },\n chocolate: {\n r: 210,\n g: 105,\n b: 30\n },\n coral: {\n r: 255,\n g: 127,\n b: 80\n },\n cornflowerblue: {\n r: 100,\n g: 149,\n b: 237\n },\n cornsilk: {\n r: 255,\n g: 248,\n b: 220\n },\n crimson: {\n r: 220,\n g: 20,\n b: 60\n },\n cyan: {\n r: 0,\n g: 255,\n b: 255\n },\n darkblue: {\n r: 0,\n g: 0,\n b: 139\n },\n darkcyan: {\n r: 0,\n g: 139,\n b: 139\n },\n darkgoldenrod: {\n r: 184,\n g: 134,\n b: 11\n },\n darkgray: {\n r: 169,\n g: 169,\n b: 169\n },\n darkgrey: {\n r: 169,\n g: 169,\n b: 169\n },\n darkgreen: {\n r: 0,\n g: 100,\n b: 0\n },\n darkkhaki: {\n r: 189,\n g: 183,\n b: 107\n },\n darkmagenta: {\n r: 139,\n g: 0,\n b: 139\n },\n darkolivegreen: {\n r: 85,\n g: 107,\n b: 47\n },\n darkorange: {\n r: 255,\n g: 140,\n b: 0\n },\n darkorchid: {\n r: 153,\n g: 50,\n b: 204\n },\n darkred: {\n r: 139,\n g: 0,\n b: 0\n },\n darksalmon: {\n r: 233,\n g: 150,\n b: 122\n },\n darkseagreen: {\n r: 143,\n g: 188,\n b: 143\n },\n darkslateblue: {\n r: 72,\n g: 61,\n b: 139\n },\n darkslategray: {\n r: 47,\n g: 79,\n b: 79\n },\n darkslategrey: {\n r: 47,\n g: 79,\n b: 79\n },\n darkturquoise: {\n r: 0,\n g: 206,\n b: 209\n },\n darkviolet: {\n r: 148,\n g: 0,\n b: 211\n },\n deeppink: {\n r: 255,\n g: 20,\n b: 147\n },\n deepskyblue: {\n r: 0,\n g: 191,\n b: 255\n },\n dimgray: {\n r: 105,\n g: 105,\n b: 105\n },\n dimgrey: {\n r: 105,\n g: 105,\n b: 105\n },\n dodgerblue: {\n r: 30,\n g: 144,\n b: 255\n },\n firebrick: {\n r: 178,\n g: 34,\n b: 34\n },\n floralwhite: {\n r: 255,\n g: 250,\n b: 240\n },\n forestgreen: {\n r: 34,\n g: 139,\n b: 34\n },\n fuchsia: {\n r: 255,\n g: 0,\n b: 255\n },\n gainsboro: {\n r: 220,\n g: 220,\n b: 220\n },\n ghostwhite: {\n r: 248,\n g: 248,\n b: 255\n },\n gold: {\n r: 255,\n g: 215,\n b: 0\n },\n goldenrod: {\n r: 218,\n g: 165,\n b: 32\n },\n gray: {\n r: 128,\n g: 128,\n b: 128\n },\n grey: {\n r: 128,\n g: 128,\n b: 128\n },\n green: {\n r: 0,\n g: 128,\n b: 0\n },\n greenyellow: {\n r: 173,\n g: 255,\n b: 47\n },\n honeydew: {\n r: 240,\n g: 255,\n b: 240\n },\n hotpink: {\n r: 255,\n g: 105,\n b: 180\n },\n indianred: {\n r: 205,\n g: 92,\n b: 92\n },\n indigo: {\n r: 75,\n g: 0,\n b: 130\n },\n ivory: {\n r: 255,\n g: 255,\n b: 240\n },\n khaki: {\n r: 240,\n g: 230,\n b: 140\n },\n lavender: {\n r: 230,\n g: 230,\n b: 250\n },\n lavenderblush: {\n r: 255,\n g: 240,\n b: 245\n },\n lawngreen: {\n r: 124,\n g: 252,\n b: 0\n },\n lemonchiffon: {\n r: 255,\n g: 250,\n b: 205\n },\n lightblue: {\n r: 173,\n g: 216,\n b: 230\n },\n lightcoral: {\n r: 240,\n g: 128,\n b: 128\n },\n lightcyan: {\n r: 224,\n g: 255,\n b: 255\n },\n lightgoldenrodyellow: {\n r: 250,\n g: 250,\n b: 210\n },\n lightgray: {\n r: 211,\n g: 211,\n b: 211\n },\n lightgrey: {\n r: 211,\n g: 211,\n b: 211\n },\n lightgreen: {\n r: 144,\n g: 238,\n b: 144\n },\n lightpink: {\n r: 255,\n g: 182,\n b: 193\n },\n lightsalmon: {\n r: 255,\n g: 160,\n b: 122\n },\n lightseagreen: {\n r: 32,\n g: 178,\n b: 170\n },\n lightskyblue: {\n r: 135,\n g: 206,\n b: 250\n },\n lightslategray: {\n r: 119,\n g: 136,\n b: 153\n },\n lightslategrey: {\n r: 119,\n g: 136,\n b: 153\n },\n lightsteelblue: {\n r: 176,\n g: 196,\n b: 222\n },\n lightyellow: {\n r: 255,\n g: 255,\n b: 224\n },\n lime: {\n r: 0,\n g: 255,\n b: 0\n },\n limegreen: {\n r: 50,\n g: 205,\n b: 50\n },\n linen: {\n r: 250,\n g: 240,\n b: 230\n },\n magenta: {\n r: 255,\n g: 0,\n b: 255\n },\n maroon: {\n r: 128,\n g: 0,\n b: 0\n },\n mediumaquamarine: {\n r: 102,\n g: 205,\n b: 170\n },\n mediumblue: {\n r: 0,\n g: 0,\n b: 205\n },\n mediumorchid: {\n r: 186,\n g: 85,\n b: 211\n },\n mediumpurple: {\n r: 147,\n g: 112,\n b: 219\n },\n mediumseagreen: {\n r: 60,\n g: 179,\n b: 113\n },\n mediumslateblue: {\n r: 123,\n g: 104,\n b: 238\n },\n mediumspringgreen: {\n r: 0,\n g: 250,\n b: 154\n },\n mediumturquoise: {\n r: 72,\n g: 209,\n b: 204\n },\n mediumvioletred: {\n r: 199,\n g: 21,\n b: 133\n },\n midnightblue: {\n r: 25,\n g: 25,\n b: 112\n },\n mintcream: {\n r: 245,\n g: 255,\n b: 250\n },\n mistyrose: {\n r: 255,\n g: 228,\n b: 225\n },\n moccasin: {\n r: 255,\n g: 228,\n b: 181\n },\n navajowhite: {\n r: 255,\n g: 222,\n b: 173\n },\n navy: {\n r: 0,\n g: 0,\n b: 128\n },\n oldlace: {\n r: 253,\n g: 245,\n b: 230\n },\n olive: {\n r: 128,\n g: 128,\n b: 0\n },\n olivedrab: {\n r: 107,\n g: 142,\n b: 35\n },\n orange: {\n r: 255,\n g: 165,\n b: 0\n },\n orangered: {\n r: 255,\n g: 69,\n b: 0\n },\n orchid: {\n r: 218,\n g: 112,\n b: 214\n },\n palegoldenrod: {\n r: 238,\n g: 232,\n b: 170\n },\n palegreen: {\n r: 152,\n g: 251,\n b: 152\n },\n paleturquoise: {\n r: 175,\n g: 238,\n b: 238\n },\n palevioletred: {\n r: 219,\n g: 112,\n b: 147\n },\n papayawhip: {\n r: 255,\n g: 239,\n b: 213\n },\n peachpuff: {\n r: 255,\n g: 218,\n b: 185\n },\n peru: {\n r: 205,\n g: 133,\n b: 63\n },\n pink: {\n r: 255,\n g: 192,\n b: 203\n },\n plum: {\n r: 221,\n g: 160,\n b: 221\n },\n powderblue: {\n r: 176,\n g: 224,\n b: 230\n },\n purple: {\n r: 128,\n g: 0,\n b: 128\n },\n rebeccapurple: {\n r: 102,\n g: 51,\n b: 153\n },\n red: {\n r: 255,\n g: 0,\n b: 0\n },\n rosybrown: {\n r: 188,\n g: 143,\n b: 143\n },\n royalblue: {\n r: 65,\n g: 105,\n b: 225\n },\n saddlebrown: {\n r: 139,\n g: 69,\n b: 19\n },\n salmon: {\n r: 250,\n g: 128,\n b: 114\n },\n sandybrown: {\n r: 244,\n g: 164,\n b: 96\n },\n seagreen: {\n r: 46,\n g: 139,\n b: 87\n },\n seashell: {\n r: 255,\n g: 245,\n b: 238\n },\n sienna: {\n r: 160,\n g: 82,\n b: 45\n },\n silver: {\n r: 192,\n g: 192,\n b: 192\n },\n skyblue: {\n r: 135,\n g: 206,\n b: 235\n },\n slateblue: {\n r: 106,\n g: 90,\n b: 205\n },\n slategray: {\n r: 112,\n g: 128,\n b: 144\n },\n slategrey: {\n r: 112,\n g: 128,\n b: 144\n },\n snow: {\n r: 255,\n g: 250,\n b: 250\n },\n springgreen: {\n r: 0,\n g: 255,\n b: 127\n },\n steelblue: {\n r: 70,\n g: 130,\n b: 180\n },\n tan: {\n r: 210,\n g: 180,\n b: 140\n },\n teal: {\n r: 0,\n g: 128,\n b: 128\n },\n thistle: {\n r: 216,\n g: 191,\n b: 216\n },\n tomato: {\n r: 255,\n g: 99,\n b: 71\n },\n turquoise: {\n r: 64,\n g: 224,\n b: 208\n },\n violet: {\n r: 238,\n g: 130,\n b: 238\n },\n wheat: {\n r: 245,\n g: 222,\n b: 179\n },\n white: {\n r: 255,\n g: 255,\n b: 255\n },\n whitesmoke: {\n r: 245,\n g: 245,\n b: 245\n },\n yellow: {\n r: 255,\n g: 255,\n b: 0\n },\n yellowgreen: {\n r: 154,\n g: 205,\n b: 50\n }\n};\n/**\r\n * Tries to resolve a named color into a hex color representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Color name\r\n * @return Color\r\n * @deprecated\r\n * @hidden\r\n */\n/*export function resolveNamedColor(value: string): Color {\r\n return (namedColors)[value] ? (namedColors)[value] : undefined;\r\n}*/\n/**\r\n * Converts a proper color hex code (i.e. \"#FF5500\") or named color (i.e. \"red\")\r\n * into an {iRGB} object. If the code is not correctly formatted, an RGB of\r\n * black is returned.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @param alpha Alpha (0-1)\r\n * @return RGB\r\n */\nexport function rgb(color, alpha) {\n // Init return value\n var rgb;\n // Try resolving color format\n // Named color?\n if (namedColors[color]) {\n rgb = namedColors[color];\n }\n // Hex code?\n else if (color.charAt(0) === \"#\") {\n rgb = hexToRgb(color);\n }\n // rgb() format?\n else if (color.match(/^rgba?\\(/)) {\n rgb = rgbaToRgb(color);\n }\n // Was not able to resolve?\n if (!rgb) {\n rgb = {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n };\n }\n // Set alpha\n if ($type.hasValue(alpha)) {\n rgb.a = alpha;\n }\n return rgb;\n}\n/**\r\n * Converts a hex color code (i.e. \"#FF5500\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\nexport function hexToRgb(hex) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : hexToRgbWithAlpha(hex);\n}\n/**\r\n * Converts a hex color code with alpha (i.e. \"#FF5500128\") to an [[iRGB]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param hex Hex color code\r\n * @return RGB\r\n */\nexport function hexToRgbWithAlpha(hex) {\n // Expand shorthand form (e.g. \"03FA\") to full form (e.g. \"0033FFAA\")\n var shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n hex = hex.replace(shorthandRegex, function (m, r, g, b, a) {\n return r + r + g + g + b + b + a + a;\n });\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n a: parseInt(result[4], 16) / 256\n } : undefined;\n}\n/**\r\n * Converts color strings in format like `rgb()` and `rgba()` to [[iRGB]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Color code\r\n * @return RGB\r\n */\nexport function rgbaToRgb(color) {\n color = color.replace(/[ ]/g, \"\");\n // Init\n var matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\n // Try rgb() format\n if (matches) {\n matches.push(\"1\");\n } else {\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\n if (!matches) {\n return;\n }\n }\n return {\n r: parseInt(matches[1]),\n g: parseInt(matches[2]),\n b: parseInt(matches[3]),\n a: parseFloat(matches[4])\n };\n}\n/**\r\n * Converts an [[iRGB]] object into a hex color code.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return Hex color code\r\n */\nexport function rgbToHex(rgb) {\n return \"#\" + pad2(rgb.r.toString(16)) + pad2(rgb.g.toString(16)) + pad2(rgb.b.toString(16));\n}\n/**\r\n * Converts an [[iRGB]] object into its `rgb()` or `rgba()` representation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rgb RGB\r\n * @return `rgba()` syntax\r\n */\nexport function rgbToRGBA(rgb) {\n if ($type.hasValue(rgb.a) && rgb.a !== 1) {\n return \"rgba(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \",\" + rgb.a + \")\";\n } else {\n return \"rgb(\" + rgb.r + \",\" + rgb.g + \",\" + rgb.b + \")\";\n }\n}\n/**\r\n * Pads a 1-digit string with a zero.\r\n *\r\n * @ignore Exclude from docs\r\n * @param c Input string\r\n * @return Padded string\r\n */\nexport function pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n/**\r\n * Returns an intermediate color between two colors based on the relative\r\n * position. Position needs to be in range between 0 and 1. Zero meaning the\r\n * resulting color will be closest to the first reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color1 First reference color\r\n * @param color2 Second reference color\r\n * @param percent Relative position (0-1)\r\n * @return Interpolated color\r\n */\nexport function interpolate(rgb1, rgb2, percent) {\n percent = $math.fitToRange(percent, 0, 1);\n if (rgb1) {\n if (rgb2) {\n return {\n r: rgb1.r + Math.round((rgb2.r - rgb1.r) * percent),\n g: rgb1.g + Math.round((rgb2.g - rgb1.g) * percent),\n b: rgb1.b + Math.round((rgb2.b - rgb1.b) * percent),\n a: (rgb1.a || 1) + Math.round(((rgb2.a || 1) - (rgb1.a || 1)) * percent)\n };\n } else {\n return rgb1;\n }\n } else if (rgb2) {\n return rgb2;\n } else {\n return rgb1;\n }\n}\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\nexport function lighten(rgb, percent) {\n if (rgb) {\n return {\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\n a: rgb.a\n };\n } else {\n // TODO is this correct ?\n return rgb;\n }\n}\n;\n/**\r\n * Gets lightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\nexport function getLightnessStep(value, percent) {\n var base = percent > 0 ? 255 - value : value;\n return Math.round(base * percent);\n}\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\nexport function brighten(rgb, percent) {\n if (rgb) {\n var base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\n var step = getLightnessStep(base, percent);\n return {\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\n a: rgb.a\n };\n } else {\n // TODO is this correct ?\n return rgb;\n }\n}\n;\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\nexport function getBrightnessStep(value, percent) {\n var base = 255; //percent > 0 ? 255 - value : value;\n return Math.round(base * percent);\n}\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\nexport function saturate(rgb, saturation) {\n if (rgb == null || saturation == 1) {\n return rgb;\n }\n var hsl = rgbToHsl(rgb);\n hsl.s = saturation;\n return hslToRgb(hsl);\n}\n/*\r\n// not used\r\nexport function rgbToMatrix(rgb: iRGB): string {\r\n let r = $type.toText($math.round((rgb.r || 0) / 255, 10));\r\n let g = $type.toText($math.round((rgb.g || 0) / 255, 10));\r\n let b = $type.toText($math.round((rgb.b || 0) / 255, 10));\r\n let a = $type.toText(rgb.a || 1);\r\n return\t r + \" 0 0 0 0\" +\r\n \" 0 \" + g + \" 0 0 0\" +\r\n \" 0 0 \" + b + \" 0 0\" +\r\n \" 0 0 0 \" + a + \" 0\";\r\n}\r\n*/\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\nexport function hslToRgb(color) {\n var r, g, b;\n var h = color.h;\n var s = color.s;\n var l = color.l;\n if (s == 0) {\n r = g = b = l; // achromatic\n } else {\n var hue2rgb = function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n}\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @ignore Exclude from docs\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\nexport function rgbToHsl(color) {\n var r = color.r / 255;\n var g = color.g / 255;\n var b = color.b / 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n/**\r\n * Converts an RGB color value to HSV. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and v in the set [0, 1].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number r The red color value\r\n * @param Number g The green color value\r\n * @param Number b The blue color value\r\n * @return Array The HSV representation\r\n */\nexport function rgbToHsv(color) {\n var r = color.r / 255;\n var g = color.g / 255;\n var b = color.b / 255;\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var v = max;\n var d = max - min;\n s = max == 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n/**\r\n * Converts an HSV color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSV_color_space.\r\n * Assumes h, s, and v are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Number h The hue\r\n * @param Number s The saturation\r\n * @param Number v The value\r\n * @return Array The RGB representation\r\n */\nexport function hsvToRgb(color) {\n var r = 0;\n var g = 0;\n var b = 0;\n var h = color.h;\n var s = color.s;\n var v = color.v;\n var i = Math.floor(h * 6);\n var f = h * 6 - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n}\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @ignore Exclude from docs\r\n * @param color Source color\r\n * @return Light?\r\n */\nexport function isLight(color) {\n return (color.r * 299 + color.g * 587 + color.b * 114) / 1000 >= 128;\n}\n//# sourceMappingURL=Colors.js.map","/**\r\n * This module contains Color object definition\r\n */\nimport { registry } from \"../Registry\";\nimport * as $colors from \"./Colors\";\nimport * as $type from \"./Type\";\n/**\r\n * Represents a color.\r\n *\r\n * `Color` accepts value only in [[iRGB]] object format. To create `Color`\r\n * object by parsing it from any supported string-based formats, use helper\r\n * [[color]] function:\r\n *\r\n * ```TypeScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.color(\"#ff0000\");\r\n * am4core.color(\"#f00\");\r\n * am4core.color(\"rgb(255, 0, 0)\");\r\n * am4core.color(\"rgba(255, 0, 0, 0.5)\");\r\n * am4core.color({ r: 255, g: 0, b: 0 });\r\n * am4core.color(\"red\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\nvar Color = /** @class */function () {\n /**\r\n * Constructor\r\n *\r\n * @param color Source color\r\n */\n function Color(color) {\n this._value = color;\n }\n Object.defineProperty(Color.prototype, \"rgb\", {\n /**\r\n * Returns [[iRGB]] representation of the color.\r\n *\r\n * @return RGB object\r\n */\n get: function () {\n return this._value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Color.prototype, \"hex\", {\n /**\r\n * Returns color hex value string, e.g. \"#FF0000\".\r\n *\r\n * @return Hex color code\r\n */\n get: function () {\n return this._value ? $colors.rgbToHex(this._value) : \"none\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Color.prototype, \"rgba\", {\n /**\r\n * Returns an `rgba()` representation of the color, e.g.:\r\n * `rgba(255, 0, 0, 0.5)`.\r\n *\r\n * @return rgba color string\r\n */\n get: function () {\n return this._value ? $colors.rgbToRGBA(this._value) : \"none\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Color.prototype, \"alpha\", {\n /**\r\n * Returns current transparency.\r\n *\r\n * @return Alpha (0-1)\r\n */\n get: function () {\n if (this._value != null && this._value.a != null) {\n return this._value.a;\n } else {\n return 1;\n }\n },\n /**\r\n * Set alpha (transparency) of the color.\r\n *\r\n * @param value Alpha (0-1)\r\n */\n set: function (value) {\n if (this._value) {\n this._value.a = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Color.prototype, \"lightColor\", {\n /**\r\n * Returns current light color setting.\r\n *\r\n * @return Color\r\n */\n get: function () {\n if (!this._lightColor) {\n this._lightColor = new Color({\n r: 255,\n g: 255,\n b: 255\n });\n }\n return this._lightColor;\n },\n /**\r\n * Sets \"light\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\n set: function (color) {\n this._lightColor = color;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Color.prototype, \"darkColor\", {\n /**\r\n * Returns current dark color setting.\r\n *\r\n * @return Color\r\n */\n get: function () {\n if (!this._darkColor) {\n this._darkColor = new Color({\n r: 0,\n g: 0,\n b: 0\n });\n }\n return this._darkColor;\n },\n /**\r\n * Sets \"dark\" color. Used when determining contrasting color.\r\n *\r\n * @param color Color\r\n */\n set: function (color) {\n this._darkColor = color;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Overrides `toString` method so that [[Color]] object can be used as\r\n * string.\r\n *\r\n * @ignore Exclude from docs\r\n * @return String represantion of color (usable in CSS)\r\n */\n Color.prototype.toString = function () {\n return this.alpha < 1 ? this.rgba : this.hex;\n };\n /**\r\n * Returns a new [[Color]] which is percent lighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease lightness by X\r\n * @return New Color\r\n */\n Color.prototype.lighten = function (percent) {\n return new Color($colors.lighten(this.rgb, percent));\n };\n /**\r\n * Returns a new [[Color]] which is percent brighter (positive value),\r\n * or darker (negative value).\r\n *\r\n * Parameter is in the scale of -1 to 1.\r\n *\r\n * @param percent Increase/decrease brightness by X\r\n * @return New Color\r\n */\n Color.prototype.brighten = function (percent) {\n return new Color($colors.brighten(this.rgb, percent));\n };\n /**\r\n * Returns a new [[Color]] based on current color with specific saturation\r\n * applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param saturation Saturation (0-1)\r\n * @return New (saturated) color\r\n */\n Color.prototype.saturate = function (saturation) {\n return new Color($colors.saturate(this.rgb, saturation));\n };\n Object.defineProperty(Color.prototype, \"alternative\", {\n /**\r\n * Returns a either light or dark color that contrasts specifically with\r\n * this color.\r\n *\r\n * Uses properties `darkColor` (default black) and `lightColor` (default\r\n * white).\r\n *\r\n * Useful when determining which color label should be on a colored\r\n * background, so that it stands out.\r\n *\r\n * @return Contrasting color\r\n */\n get: function () {\n if (this.rgb != null) {\n return $colors.isLight(this.rgb) ? this.darkColor : this.lightColor;\n } else {\n throw new Error(\"Color does not exist\");\n }\n },\n enumerable: true,\n configurable: true\n });\n return Color;\n}();\nexport { Color };\n/**\r\n * Resolves an input variable to a normal [[iRGB]] color and creates [[Color]]\r\n * object for it.\r\n *\r\n * @param value Input value\r\n * @param alpha Alpha (0-1)\r\n * @return Color object\r\n */\nexport function color(value, alpha) {\n if (!$type.hasValue(value)) {\n return new Color(undefined);\n }\n if (typeof value == \"string\") {\n var cacheId = \"_color_\" + value + \"_\" + (alpha || \"1\");\n var cached = registry.getCache(cacheId);\n if (cached) {\n return new Color({\n r: cached.r,\n g: cached.g,\n b: cached.b,\n a: cached.a\n });\n }\n var rgb = $colors.rgb(value, alpha);\n registry.setCache(cacheId, rgb);\n return new Color(rgb);\n }\n // Check if it's already a Color object\n if (value instanceof Color) {\n if ($type.hasValue(alpha)) {\n value.alpha = alpha;\n }\n return value;\n }\n // Not a string or Color instance, it's the iRGB object then\n return new Color(value);\n}\n/**\r\n * Checks if supplied argument is instance of [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Is Color?\r\n */\nexport function isColor(value) {\n return value instanceof Color;\n}\n/**\r\n * Converts any value to [[Color]].\r\n *\r\n * @param value Input value\r\n * @return Color\r\n */\nexport function castColor(value) {\n return color(value);\n}\n/**\r\n * Converts any value into a [[Color]].\r\n *\r\n * @param value Source value\r\n * @return Color object\r\n */\nexport function toColor(value) {\n if ($type.hasValue(value) && !isColor(value)) {\n return castColor(value);\n }\n return value;\n}\n//# sourceMappingURL=Color.js.map","/**\r\n * Base functionality\r\n*/\nimport { __extends } from \"tslib\";\nimport { List, ListTemplate } from \"./utils/List\";\nimport { OrderedListTemplate, SortedListTemplate } from \"./utils/SortedList\";\nimport { Dictionary, DictionaryTemplate } from \"./utils/Dictionary\";\nimport { Disposer } from \"./utils/Disposer\";\nimport { EventDispatcher } from \"./utils/EventDispatcher\";\nimport { Adapter } from \"./utils/Adapter\";\nimport { Color, color } from \"./utils/Color\";\nimport { Percent, percent } from \"./utils/Percent\";\nimport { registry } from \"./Registry\";\nimport { cache } from \"./utils/Cache\";\nimport * as $array from \"./utils/Array\";\nimport * as $object from \"./utils/Object\";\nimport * as $type from \"./utils/Type\";\n//import * as $debug from \"./utils/Debug\";\n/**\r\n * Provides base functionality for all derivative objects, like generating ids,\r\n * handling cache, etc.\r\n */\nvar BaseObject = /** @class */function () {\n //protected _classes: { [index: string]: any } = {};\n /**\r\n * Constructor\r\n * * Sets class name\r\n */\n function BaseObject() {\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\n this._disposed = false;\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n */\n this._disposers = [];\n this.className = \"BaseObject\";\n //this.debug();\n }\n BaseObject.prototype.debug = function () {\n //$debug.debug(this);\n };\n Object.defineProperty(BaseObject.prototype, \"uid\", {\n /**\r\n * Returns object's internal unique ID.\r\n *\r\n * @return Unique ID\r\n */\n get: function () {\n if (!this._uid) {\n this._uid = registry.getUniqueId();\n registry.map.setKey(this._uid, this);\n }\n return this._uid;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BaseObject.prototype, \"id\", {\n /**\r\n * @return Id\r\n */\n get: function () {\n return this._id;\n },\n /**\r\n * Sets the user-defined id of the element.\r\n *\r\n * @param value Id\r\n */\n set: function (value) {\n //registry.map.setKey(value, this); // registry.map only stores by uid\n this._id = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BaseObject.prototype, \"map\", {\n /**\r\n * Returns a universal collection for mapping ids with objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\n get: function () {\n if (!this._map) {\n this._map = new Dictionary();\n }\n return this._map;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BaseObject.prototype, \"delayedMap\", {\n /**\r\n * Returns mapping for objects referenced by id in JSON config that are not yet\r\n * available at processing time.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Map collection\r\n */\n get: function () {\n if (!this._delayedMap) {\n this._delayedMap = new Dictionary();\n }\n return this._delayedMap;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Logs an id and property of the target element that is not yet available\r\n * for later assignment.\r\n *\r\n * @ignore\r\n * @param property Property to set\r\n * @param id ID of the target element\r\n */\n BaseObject.prototype.addDelayedMap = function (property, id) {\n var map = this.delayedMap;\n if (!map.hasKey(id)) {\n map.setKey(id, []);\n }\n var list = map.getKey(id);\n list.push({\n property: property,\n target: this\n });\n };\n /**\r\n * Processes delayed JSON config items.\r\n *\r\n * @ignore\r\n */\n BaseObject.prototype.processDelayedMap = function () {\n var _this = this;\n this.delayedMap.each(function (id, list) {\n if (_this.map.hasKey(id)) {\n var target_1 = _this.map.getKey(id);\n $array.each(list, function (item) {\n item.target[item.property] = target_1;\n });\n _this.delayedMap.removeKey(id);\n }\n });\n };\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n BaseObject.prototype.applyTheme = function () {\n var _this = this;\n // TODO is this needed ?\n if (registry) {\n var themes = this.getCurrentThemes();\n // TODO is this needed ?\n if (themes) {\n $array.each(themes, function (theme, index) {\n theme(_this);\n });\n }\n }\n };\n Object.defineProperty(BaseObject.prototype, \"themes\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return An array of themes\r\n */\n get: function () {\n return this._themes;\n },\n /**\r\n * A list of themes to be used for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value An array of themes\r\n */\n set: function (value) {\n this._themes = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a list of themes that should be applied to this element. It could\r\n * either be a list of themes set explicitly on this element, or system-wide.\r\n *\r\n * @return List of themes\r\n */\n BaseObject.prototype.getCurrentThemes = function () {\n return this.themes || registry.themes;\n };\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\n BaseObject.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n BaseObject.prototype.dispose = function () {\n if (!this._disposed) {\n this._disposed = true;\n var a = this._disposers;\n this._disposers = null;\n while (a.length !== 0) {\n var disposer = a.shift();\n disposer.dispose();\n }\n // Clear cache\n this.clearCache();\n // remove from clones list\n if (this.clonedFrom) {\n this.clonedFrom.clones.removeValue(this);\n }\n var uid = this._uid;\n if (uid != null) {\n registry.map.removeKey(uid);\n }\n }\n };\n /**\r\n * Adds an IDisposer, which will be disposed when this object is disposed.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\n BaseObject.prototype.addDisposer = function (target) {\n this._disposers.push(target);\n };\n /**\r\n * Disposes disposable object and removes it from `_disposers`.\r\n *\r\n * @param target Object to dispose\r\n * @ignore Exclude from docs\r\n */\n BaseObject.prototype.removeDispose = function (target) {\n //if(target){\n if (!this._disposed) {\n var index = $array.indexOf(this._disposers, target);\n if (index > -1) {\n this._disposers.splice(index, 1);\n }\n }\n target.dispose();\n //}\n };\n /**\r\n * Makes a copy of this object and returns the clone. Try to avoid cloning complex objects like chart, create new instances if you need them.\r\n *\r\n * @param cloneId An id to use for clone (if not set a unique id will be generated)\r\n * @returns Clone\r\n */\n BaseObject.prototype.clone = function (cloneId) {\n if (!cloneId) {\n cloneId = \"clone-\" + registry.getUniqueId();\n }\n var newObject = new this.constructor();\n newObject.cloneId = cloneId;\n newObject.copyFrom(this);\n // add to clones list\n // this.clones.push(newObject); // moved this to copyFrom\n return newObject;\n };\n Object.defineProperty(BaseObject.prototype, \"clones\", {\n /**\r\n * Returns a collection of object's clones.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Clones\r\n */\n get: function () {\n if (!this._clones) {\n this._clones = new List();\n }\n return this._clones;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\n BaseObject.prototype.copyFrom = function (object) {\n object.clones.push(this); // do not moveValue, as it is expensive! even if there will be several items in clones list, it's not that bad.\n this.clonedFrom = object;\n };\n Object.defineProperty(BaseObject.prototype, \"className\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Class name\r\n */\n get: function () {\n return this._className;\n },\n /**\r\n * Element's class name. (a class that was used to instantiate the element)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Class name\r\n */\n set: function (value) {\n this._className = value;\n /*if (registry) {\r\n registry.registeredClasses[value] = typeof this;\r\n }*/\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Caches value in object's cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value\r\n * @param ttl TTL in seconds\r\n */\n BaseObject.prototype.setCache = function (key, value, ttl) {\n cache.set(this.uid, key, value, ttl);\n };\n /**\r\n * Retrieves cached value.\r\n *\r\n * If optional second padarameter is specified, it will return that value\r\n * if cache is not available or is expired.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key Key\r\n * @param value Value to return if cache is not available\r\n * @return Value\r\n */\n BaseObject.prototype.getCache = function (key, value) {\n if (value === void 0) {\n value = undefined;\n }\n return cache.get(this.uid, key, value);\n };\n /**\r\n * Clears object's local cache.\r\n *\r\n * @ignore Exclude from docs\r\n */\n BaseObject.prototype.clearCache = function () {\n cache.clear(this.uid);\n };\n /**\r\n * Creates [[Disposer]] for `setTimeout` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\n BaseObject.prototype.setTimeout = function (fn, delay) {\n var _this = this;\n var id = setTimeout(function () {\n _this.removeDispose(disposer);\n fn();\n }, delay);\n var disposer = new Disposer(function () {\n clearTimeout(id);\n });\n this._disposers.push(disposer);\n return disposer;\n };\n /**\r\n * Creates [[Disposer]] for `setInterval` function call. This ensures that all\r\n * timeouts created by the object will be cleared when object itself is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fn Callback function\r\n * @param delay Timeout (ms)\r\n * @return Disposer for timeout\r\n */\n BaseObject.prototype.setInterval = function (fn, delay) {\n var _this = this;\n var id = setInterval(function () {\n _this.removeDispose(disposer);\n fn();\n }, delay);\n var disposer = new Disposer(function () {\n clearTimeout(id);\n });\n this._disposers.push(disposer);\n return disposer;\n };\n Object.defineProperty(BaseObject.prototype, \"config\", {\n /**\r\n * ==========================================================================\r\n * JSON-BASED CONFIG PROCESSING\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Use this property to set JSON-based config. When set, triggers processing\r\n * routine, which will go through all properties, and try to apply values,\r\n * create instances, etc.\r\n *\r\n * Use this with caution, as it is a time-consuming process. It's used for\r\n * initialchart setup only, not routine operations.\r\n *\r\n * @param json JSON config\r\n */\n set: function (config) {\n try {\n this.processConfig(config);\n } catch (e) {\n /*if (this instanceof Sprite) {\r\n this.raiseCriticalError(e);\r\n }*/\n this.raiseCriticalError(e);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes the JSON config.\r\n *\r\n * @param json JSON config\r\n * @ignore Exclude from docs\r\n */\n BaseObject.prototype.processConfig = function (config) {\n var _this = this;\n if (!config) {\n return;\n }\n // Get target\n var target = this;\n // Iterate through all of the items\n $object.eachOrdered(config, function (configKey, value) {\n var configValue = value;\n // Is this a callback?\n if (configKey == \"callback\" && typeof value == \"function\") {\n value.call(target);\n }\n // Check if there's a property in target\n if (_this.hasProperty(configKey)) {\n var item_1;\n // Do we have instructions to create an object?\n // We create a new object if \"type\" key is set, but only if the\n // target object is of different type.\n if ($type.isObject(configValue) && $type.hasValue(configValue[\"type\"]) && (!$type.isObject(target[configKey]) || !$type.hasValue(target[configKey].className) || configValue[\"forceCreate\"] || target[configKey].className != configValue[\"type\"]) && !_this.asIs(configKey)) {\n item_1 = _this.createClassInstance(configValue[\"type\"]);\n // Create new instance\n if (item_1) {\n target[configKey] = item_1;\n } else {\n item_1 = target[configKey];\n }\n } else {\n // Get item from the object\n item_1 = target[configKey];\n }\n /**\r\n * It is...\r\n * --------------------------------------------------------------------\r\n */\n if (item_1 instanceof Adapter) {\n // ... an Adapter, try to add handlers to it\n // ------------------------------------------------------------------\n _this.processAdapters(item_1, configValue);\n } else if (item_1 instanceof EventDispatcher) {\n // ... an EventDispatcher, try to add handlers to it\n // ------------------------------------------------------------------\n _this.processEvents(item_1, configValue);\n } else if (configKey == \"locale\" && $type.isString(configValue)) {\n // ... a locale specified as string, e.g. \"fr_FR\"\n // ------------------------------------------------------------------\n if (window[\"am4lang_\" + configValue]) {\n target[configKey] = window[\"am4lang_\" + configValue];\n }\n } else if (configKey == \"parent\" && $type.isString(configValue)) {\n // ... a parent referred via its it\n // ------------------------------------------------------------------\n var parent_1 = _this.map.getKey(configValue);\n if (parent_1) {\n target[configKey] = parent_1;\n } else {\n _this.addDelayedMap(\"parent\", configValue);\n }\n } else if (_this.asIs(configKey)) {\n // ... a special field, just set it to new value\n // ------------------------------------------------------------------\n // (no need to add each indvidual item)\n target[configKey] = configValue;\n } else if (_this.asFunction(configKey) && $type.isString(configValue)) {\n // ... a field indicating function name to look for in registry\n // ------------------------------------------------------------------\n if ($type.hasValue(registry.registeredClasses[configValue])) {\n target[configKey] = registry.registeredClasses[configValue];\n } else {\n throw Error(\"Invalid easing function: \" + configValue);\n }\n } else if (configValue instanceof BaseObject) {\n // ... a BaseObject object, we just going to use it as it is\n // ------------------------------------------------------------------\n target[configKey] = configValue;\n } else if (item_1 instanceof BaseObject) {\n // ... another child BaseObject\n // ------------------------------------------------------------------\n // Let's just pass in config part in and let itself deal with it\n item_1.config = configValue;\n } else if (item_1 instanceof ListTemplate || item_1 instanceof OrderedListTemplate || item_1 instanceof SortedListTemplate) {\n // ... a list with template\n // ------------------------------------------------------------------\n // Let's see what we can do with it\n if ($type.isArray(configValue)) {\n // It's an array.\n // Create a list item for entry, or try to apply properties to an\n // existing entry if possible and it is present.\n if (item_1 instanceof ListTemplate) {\n _this.processListTemplate(configValue, item_1);\n } else {\n _this.processOrderedTemplate(configValue, item_1);\n }\n } else if ($type.isObject(configValue)) {\n // It's a single oject.\n // Treat it as a template.\n if (configValue instanceof BaseObject) {\n // Item is already a BaseObject, no need to process it further\n item_1.template = configValue;\n } else {\n // Now let's find out if the whole object if a template, or we\n // need to get it from `template` key\n var templateValue = void 0;\n if ($type.hasValue(configValue.template)) {\n templateValue = configValue.template;\n } else {\n templateValue = configValue;\n }\n if (item_1.template instanceof BaseObject) {\n // Template is a BaseObject so we will just let its config\n // deal with the configuration\n item_1.template.config = templateValue;\n } else {\n $object.each(templateValue, function (entryKey, entryValue) {\n var listItem = item_1.template[entryKey];\n if (listItem instanceof Adapter) {\n _this.processAdapters(listItem, entryValue);\n } else if (listItem instanceof EventDispatcher) {\n _this.processEvents(listItem, entryValue);\n } else if (listItem instanceof DictionaryTemplate) {\n _this.processDictionaryTemplate(listItem, entryValue);\n } else if (item_1.template[entryKey] instanceof BaseObject) {\n // Template is a BaseObject. Let it deal with its own config.\n item_1.template[entryKey].config = entryValue;\n } else if ($type.isObject(entryValue) && $type.hasValue(entryValue[\"type\"])) {\n listItem = _this.createClassInstance(entryValue[\"type\"]);\n if (listItem) {\n if (listItem instanceof BaseObject) {\n listItem.config = entryValue;\n }\n item_1.template[entryKey] = listItem;\n } else {\n item_1.template[entryKey] = entryValue;\n }\n } else if (listItem instanceof List) {\n // It's List, process it\n _this.processList(entryValue, listItem);\n } else {\n // Aything else. Just assing and be done with it.\n item_1.template[entryKey] = _this.maybeColorOrPercent(entryValue);\n }\n });\n }\n // Check maybe there are `values` to insert\n if ($type.hasValue(configValue.values)) {\n if (item_1 instanceof ListTemplate) {\n _this.processListTemplate(configValue.values, item_1);\n } else {\n _this.processOrderedTemplate(configValue.values, item_1);\n }\n }\n }\n } else {\n // Something else?\n // Not sure what to do with it on a list - ignore\n }\n } else if (item_1 instanceof List) {\n // ... a list\n // ------------------------------------------------------------------\n if (configKey == \"children\") {\n _this.processList(configValue, item_1, _this);\n } else {\n _this.processList(configValue, item_1);\n }\n } else if (item_1 instanceof DictionaryTemplate) {\n // ... a dictionary with template\n // ------------------------------------------------------------------\n _this.processDictionaryTemplate(item_1, configValue);\n } else if (item_1 instanceof Dictionary) {\n // ... a dictionary\n // ------------------------------------------------------------------\n _this.processDictionary(item_1, configValue);\n } else if (item_1 instanceof Color || item_1 instanceof Percent) {\n // ... it's a Color or Percent\n // ------------------------------------------------------------------\n target[configKey] = _this.maybeColorOrPercent(configValue);\n } else if ($type.isObject(item_1) && $type.isObject(configValue)) {\n // ... a regular object\n // ------------------------------------------------------------------\n $object.copyAllProperties(configValue, item_1);\n } else {\n // ... something else - probably a simple property or object\n // ------------------------------------------------------------------\n // Maybe convert to `Percent` or `Color`?\n configValue = _this.maybeColorOrPercent(configValue);\n // Assign\n target[configKey] = configValue;\n }\n } else if (!_this.isReserved(configKey)) {\n // Doesn't have property set. But we're going to assume JSON config\n // creator knows what he/she is doing and set it anyway.\n target[configKey] = configValue;\n }\n }, this.configOrder);\n // Any errors?\n if (this.processingErrors.length) {\n var errors = this.processingErrors.join(\"\\n\");\n this._processingErrors = [];\n throw Error(errors);\n }\n };\n /**\r\n * Tries to detect if value is color or percent and converts to proper object\r\n * if necessary.\r\n *\r\n * Returns the same source value if no color/percent detected\r\n *\r\n * @param value Source value\r\n * @return Converted value\r\n */\n BaseObject.prototype.maybeColorOrPercent = function (value) {\n if ($type.isString(value)) {\n if (value.match(/^[\\-]?[0-9.]+\\%$/)) {\n return percent($type.toNumber(value));\n } else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\n return color(value);\n }\n }\n return value;\n };\n BaseObject.prototype.processAdapters = function (item, config) {\n var _this = this;\n if ($type.isArray(config)) {\n $array.each(config, function (entry, index) {\n item.add(entry.key, entry.callback, entry.priority || 0, _this);\n });\n } else if ($type.isObject(config)) {\n $object.each(config, function (key, entry) {\n if (!item.has(key, entry)) {\n item.add(key, entry);\n }\n });\n }\n };\n BaseObject.prototype.processEvents = function (item, config) {\n var _this = this;\n if ($type.isArray(config)) {\n $array.each(config, function (entry, index) {\n item.on(entry.type, entry.callback, _this);\n });\n } else if ($type.isObject(config)) {\n $object.each(config, function (key, entry) {\n if (!item.has(key, entry)) {\n item.on(key, entry);\n }\n });\n }\n };\n /**\r\n * Processes JSON config for a [[DictionaryTemplate]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\n BaseObject.prototype.processDictionaryTemplate = function (item, config) {\n // We can only process object\n // Not sure what to do with other types - ignore\n if ($type.isObject(config)) {\n // Create an entry for each item, or override properties for\n // existing one.\n $object.each(config, function (entryKey, entryValue) {\n var listItem;\n // Get existing one, or create a new one\n if (entryKey == \"template\") {\n listItem = item.template;\n } else if (item.hasKey(entryKey)) {\n listItem = item.getKey(entryKey);\n } else {\n listItem = item.create(entryKey);\n }\n // Set data\n if (listItem instanceof BaseObject) {\n listItem.config = entryValue;\n } else if ($type.isObject(listItem) && $type.isObject(entryValue)) {\n $object.copyAllProperties(entryValue, listItem);\n } else {\n listItem.setKey(entryKey, entryValue);\n }\n });\n }\n };\n /**\r\n * Processes JSON config for a [[Dictionary]] item.\r\n *\r\n * @todo Description\r\n * @param item Item\r\n * @param config Config\r\n */\n BaseObject.prototype.processDictionary = function (item, config) {\n // We can only process object\n // Not sure what to do with other types - ignore\n if ($type.isObject(config)) {\n // Create an entry for each item, or override properties for\n // existing one.\n // @todo support for non-basic types\n $object.each(config, function (entryKey, entryValue) {\n item.setKey(entryKey, entryValue);\n });\n }\n };\n /**\r\n * Processes [[ListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\n BaseObject.prototype.processListTemplate = function (configValue, item) {\n var _this = this;\n $array.each(configValue, function (entry, index) {\n var type = _this.getConfigEntryType(entry);\n var listItem;\n if (item.hasIndex(index) && !entry[\"forceCreate\"]) {\n listItem = item.getIndex(index);\n } else if (entry instanceof BaseObject) {\n // Item is already a BaseObject, no need to process it further\n item.push(entry);\n return;\n } else if (type) {\n listItem = item.create(type);\n } else {\n listItem = item.create();\n }\n if (entry === listItem) {\n // It's already the same item, do nothing\n } else {\n if ($type.isObject(entry)) {\n // If the list item is BaseObject, we just need to let it\n // deal if its own config\n if (listItem instanceof BaseObject) {\n listItem.config = entry;\n } else if ($type.isObject(listItem) && $type.isObject(entry)) {\n $object.copyAllProperties(entry, listItem);\n } else {\n item.setIndex(item.indexOf(listItem), entry);\n }\n }\n }\n });\n // Truncate the list if it contains less items than the config\n // array\n while (configValue.length > item.length) {\n item.pop();\n }\n };\n /**\r\n * Processes [[OrdererListTemplate]] or [[SortedListTemplate]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\n BaseObject.prototype.processOrderedTemplate = function (configValue, item) {\n var _this = this;\n $array.each(configValue, function (entry, index) {\n var type = _this.getConfigEntryType(entry);\n var listItem;\n if (type) {\n listItem = item.create(type);\n } else {\n listItem = item.create();\n }\n if ($type.isObject(entry)) {\n // If the list item is BaseObject, we just need to let it\n // deal if its own config\n if (listItem instanceof BaseObject) {\n listItem.config = entry;\n } else if ($type.isObject(listItem) && $type.isObject(entry)) {\n $object.copyAllProperties(entry, listItem);\n } else {\n item.insert(entry);\n }\n }\n });\n };\n /**\r\n * Processes [[List]].\r\n *\r\n * @param configValue Config value\r\n * @param item Item\r\n */\n BaseObject.prototype.processList = function (configValue, item, parent) {\n var _this = this;\n // Convert to array if necessary\n if (!$type.isArray(configValue)) {\n configValue = [configValue];\n }\n // It's an array\n // Create a list item for entry\n var itemCount = item.length;\n var extraCount = 0;\n $array.each(configValue, function (entry, index) {\n if ($type.isObject(entry)) {\n // An object.\n //\n // Let's see if we can instantiate a class out of it, or we need\n // to push it into list as it is.\n //\n // If there are items already at the specified index in the list,\n // apply properties rather than create a new one.\n var listItem = void 0;\n if (index < itemCount && !entry[\"forceCreate\"]) {\n listItem = item.getIndex(index);\n } else if (entry instanceof BaseObject) {\n // Item is already a BaseObject, no need to process it further\n item.push(entry);\n return;\n } else {\n extraCount++;\n listItem = _this.createEntryInstance(entry);\n if (parent) {\n listItem.parent = parent;\n } else {\n item.push(listItem);\n }\n }\n // If the list item is BaseObject, we just need to let it\n // deal if its own config\n if (listItem instanceof BaseObject) {\n listItem.config = entry;\n } else if ($type.isObject(listItem) && $type.isObject(entry)) {\n $object.copyAllProperties(entry, listItem);\n }\n } else {\n // Basic value.\n // Just push it into list, or override existing value\n if (item.hasIndex(index)) {\n item.setIndex(index, entry);\n } else {\n item.push(entry);\n }\n }\n });\n // Truncate the list if it contains less items than the config\n // array\n while (!parent && configValue.length + extraCount < item.length) {\n item.pop();\n }\n };\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\n BaseObject.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // Language must come first, so it's all set up when the rest of the\n // elements are being instantiated\n else if (a == \"language\") {\n return -1;\n } else if (b == \"language\") {\n return 1;\n } else {\n return 0;\n }\n };\n /**\r\n * Checks if field should be just assigned as is, without any checking when\r\n * processing JSON config.\r\n *\r\n * Extending functions can override this function to do their own checks.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\n BaseObject.prototype.asIs = function (field) {\n return $array.indexOf([\"locale\"], field) != -1;\n };\n /**\r\n * Checks if field needs to be converted to function, if it is specified\r\n * as string.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n BaseObject.prototype.asFunction = function (field) {\n return false;\n };\n /**\r\n * Creates a relevant class instance if such class definition exists.\r\n *\r\n * @ignore Exclude from docs\r\n * @param className Class name\r\n * @return Instance\r\n */\n BaseObject.prototype.createClassInstance = function (className) {\n if ($type.hasValue(registry.registeredClasses[className])) {\n return new registry.registeredClasses[className]();\n } else {\n throw Error(\"Invalid type: \\\"\" + className + \"\\\".\");\n }\n };\n /**\r\n * Creates a class instance for a config entry using it's type. (as set in\r\n * `type` property)\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Instance\r\n */\n BaseObject.prototype.createEntryInstance = function (config) {\n var res;\n if ($type.hasValue(config[\"type\"])) {\n res = this.createClassInstance(config[\"type\"]);\n }\n if (!res) {\n return config;\n }\n return res;\n };\n /**\r\n * Determines config object type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config part\r\n * @return Type\r\n */\n BaseObject.prototype.getConfigEntryType = function (config) {\n if ($type.hasValue(config[\"type\"])) {\n if ($type.hasValue(registry.registeredClasses[config[\"type\"]])) {\n return registry.registeredClasses[config[\"type\"]];\n } else {\n throw Error(\"Invalid type: \\\"\" + config[\"type\"] + \"\\\".\");\n }\n }\n return;\n };\n /**\r\n * Checks if this element has a property.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prop Property name\r\n * @return Has property?\r\n */\n BaseObject.prototype.hasProperty = function (prop) {\n return prop in this ? true : false;\n };\n /**\r\n * Checkes whether JSON key is a reserved keyword.\r\n *\r\n * @param key Key\r\n * @return Reserved\r\n */\n BaseObject.prototype.isReserved = function (key) {\n return [\"type\", \"forceCreate\"].indexOf(key) !== -1;\n };\n Object.defineProperty(BaseObject.prototype, \"processingErrors\", {\n /**\r\n * A list of errors that happened during JSON processing.\r\n *\r\n * @return Errors\r\n */\n get: function () {\n if (!this._processingErrors) {\n this._processingErrors = [];\n }\n return this._processingErrors;\n },\n enumerable: true,\n configurable: true\n });\n return BaseObject;\n}();\nexport { BaseObject };\n;\n/**\r\n * A version of [[BaseObject]] with events properties and methods.\r\n * Classes that use [[EventDispatcher]] should extend this instead of\r\n * [[BaseObject]] directly.\r\n */\nvar BaseObjectEvents = /** @class */function (_super) {\n __extends(BaseObjectEvents, _super);\n /**\r\n * Constructor\r\n */\n function BaseObjectEvents() {\n var _this = _super.call(this) || this;\n _this.className = \"BaseObjectEvents\";\n return _this;\n }\n Object.defineProperty(BaseObjectEvents.prototype, \"events\", {\n /**\r\n * An [[EventDispatcher]] instance\r\n */\n get: function () {\n if (!this._eventDispatcher) {\n this._eventDispatcher = new EventDispatcher();\n this._disposers.push(this._eventDispatcher);\n }\n return this._eventDispatcher;\n },\n enumerable: true,\n configurable: true\n });\n //public set events(value:EventDispatcher>){\n //\tthis._eventDispatcher = value;\n //}\n /**\r\n * Dispatches an event using own event dispatcher. Will automatically\r\n * populate event data object with event type and target (this element).\r\n * It also checks if there are any handlers registered for this sepecific\r\n * event.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\n BaseObjectEvents.prototype.dispatch = function (eventType, data) {\n // @todo Implement proper type check\n if (this._eventDispatcher) {\n if (this.events.isEnabled(eventType)) {\n if (data) {\n data.type = eventType;\n data.target = data.target || this;\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n } else {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n }\n };\n /**\r\n * Works like `dispatch`, except event is triggered immediately, without\r\n * waiting for the next frame cycle.\r\n *\r\n * @param eventType Event type (name)\r\n * @param data Data to pass into event handler(s)\r\n */\n BaseObjectEvents.prototype.dispatchImmediately = function (eventType, data) {\n // @todo Implement proper type check\n if (this._eventDispatcher) {\n if (this.events.isEnabled(eventType)) {\n if (data) {\n data.type = eventType;\n data.target = data.target || this;\n this.events.dispatchImmediately(eventType, data);\n } else {\n this.events.dispatchImmediately(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n }\n };\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source object\r\n */\n BaseObjectEvents.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (source._eventDispatcher) {\n this.events.copyFrom(source._eventDispatcher);\n }\n };\n return BaseObjectEvents;\n}(BaseObject);\nexport { BaseObjectEvents };\n//# sourceMappingURL=Base.js.map","/**\r\n * A collection of String-based constants.\r\n * @hidden\r\n * @ignore Exclude from docs\r\n */\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var PX = \"px\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var STRING = \"string\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var NUMBER = \"number\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var DATE = \"date\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var DURATION = \"duration\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var PLACEHOLDER = \"__§§§__\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport var PLACEHOLDER2 = \"__§§§§__\";\n//# sourceMappingURL=Strings.js.map","/**\r\n * A collection of universal utility functions.\r\n */\nimport { Percent } from \"./Percent\";\nimport { isSafari } from \"./Browser\";\nimport * as $math from \"../utils/Math\";\nimport * as $type from \"../utils/Type\";\nimport * as $string from \"./String\";\nimport * as $strings from \"./Strings\";\nimport * as $object from \"./Object\";\nimport * as $array from \"./Array\";\n/**\r\n * ============================================================================\r\n * MISC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Marks a value as being used (e.g. because the value has side effects).\r\n */\nexport function used(value) {}\n/**\r\n * Copies all properties of one object to the other, omitting undefined.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\nexport function copyProperties(source, target) {\n $object.each(source, function (key, value) {\n // only if value is set\n if ($type.hasValue(value)) {\n target[key] = value;\n }\n });\n return target;\n}\n/**\r\n * Removes target from url\r\n */\nexport function stripHash(url) {\n return /^[^#]*/.exec(url)[0];\n}\nexport function getBaseURI() {\n var url = \"#\";\n // Needed until https://bugs.webkit.org/show_bug.cgi?id=189499 is fixed\n if (isSafari()) {\n var baseURI = document.baseURI;\n if (baseURI) {\n baseURI = stripHash(baseURI);\n var loc = stripHash(location.href);\n if (baseURI !== loc) {\n url = loc + url;\n }\n }\n }\n return url;\n}\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\nexport function softCopyProperties(source, target) {\n $object.each(source, function (key, value) {\n // only if value is set\n if ($type.hasValue(value) && !$type.hasValue(target[key])) {\n target[key] = value;\n }\n });\n return target;\n}\n/**\r\n * Copies all properties of one object to the other.\r\n *\r\n * @param source Source object\r\n * @param recipient Target object\r\n * @return Updated target object\r\n */\nexport function copy(source, target) {\n $object.each(source, function (key, value) {\n target[key] = value;\n });\n return target;\n}\n/**\r\n * Checks if value is not empty (undefined or zero-length string).\r\n *\r\n * @param value Value to check\r\n * @return `true` if value is not \"empty\"\r\n */\nexport function isNotEmpty(value) {\n return $type.hasValue(value) && value.toString() !== \"\";\n}\n/**\r\n * [relativeToValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\nexport function relativeToValue(percent, full) {\n if ($type.isNumber(percent)) {\n return percent;\n } else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\n return full * percent.value;\n } else {\n return 0;\n }\n}\n/**\r\n * [relativeRadiusToValue description]\r\n *\r\n * Differs from relativeToValue so that if a value is negative, it subtracts\r\n * it from full value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param percent [description]\r\n * @param full [description]\r\n * @param subtractIfNegative [description]\r\n * @return [description]\r\n */\nexport function relativeRadiusToValue(percent, full, subtractIfNegative) {\n var value;\n if ($type.isNumber(percent)) {\n value = percent;\n if (value < 0) {\n if (subtractIfNegative) {\n value = full + value;\n } else {\n value = full - value;\n }\n }\n } else if (percent != null && $type.isNumber(percent.value)) {\n value = full * percent.value;\n }\n return value;\n}\n/**\r\n * [valueToRelative description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n * @param full [description]\r\n * @return [description]\r\n */\nexport function valueToRelative(value, full) {\n if (value instanceof Percent) {\n return value.value;\n } else {\n return value / full;\n }\n}\n/**\r\n * Returns pixel ratio of the current screen (used on retina displays).\r\n *\r\n * @return Pixel ratio\r\n */\nexport function getPixelRatio() {\n var ratio = window.devicePixelRatio || 1;\n return ratio;\n}\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Converts camelCased text to dashed version:\r\n * (\"thisIsString\" > \"this-is-string\")\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function camelToDashed(str) {\n return str.replace(/\\W+/g, '-').replace(/([a-z\\d])([A-Z])/g, '$1-$2').toLowerCase();\n}\n/**\r\n * Converts tring to uppercase.\r\n *\r\n * @param str String to convert\r\n * @return uppercased string\r\n * @todo Maybe make it better\r\n */\nexport function capitalize(str) {\n var arr = str.split(\"\");\n arr[0] = arr[0].toUpperCase();\n return arr.join(\"\");\n}\n/**\r\n * Converts any value into its string representation.\r\n *\r\n * @param value Value\r\n * @return String represantation of the value\r\n */\nexport function stringify(value) {\n return JSON.stringify(value);\n}\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\nexport function escapeForRgex(value) {\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n/**\r\n * Splits the text into multiple lines, respecting maximum character count.\r\n * Prioretizes splitting on spaces and punctuation. Falls back on splitting\r\n * mid-word if there's no other option.\r\n *\r\n * @param text Text\r\n * @param maxChars Maximum number of characters per line\r\n * @return An array of split text\r\n */\nexport function splitTextByCharCount(text, maxChars, fullWords, rtl, fullWordFallback) {\n // Maybe the text fits?\n if (text.length <= maxChars) {\n return [text];\n }\n // Init result\n var res = [];\n // Split by words or by charts\n if (fullWords) {\n // Split by words first\n // Split by spacing\n var currentIndex = -1;\n //let tmpText = text.replace(/([,;:!?\\\\\\/\\.]+[\\s]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\n var tmpText = text.replace(/([,;:!?\\\\\\/]+|[\\s])/g, $strings.PLACEHOLDER + \"$1\" + $strings.PLACEHOLDER);\n var words = tmpText.split($strings.PLACEHOLDER);\n // Glue end-of-word punctuation to the word itself\n for (var i = 1; i < words.length; i++) {\n var word = words[i];\n if ((word == \".\" || word == \",\") && words[i - 1].match(/[\\w]+$/)) {\n words[i - 1] += word;\n words[i] = \"\";\n }\n }\n // Process each word\n for (var i = 0; i < words.length; i++) {\n // Get word and symbol count\n var word = words[i];\n var wordLength = word.length;\n // Ignore empty words\n if (wordLength === 0) {\n continue;\n }\n // Check word length\n if (wordLength > maxChars && (fullWords !== true || fullWordFallback != false)) {\n //if (wordLength > maxChars) {\n // A single word is longer than allowed symbol count\n // Break it up\n if (rtl) {\n word = reverseString(word);\n }\n var parts = word.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\n // TODO is this correct ?\n if (parts) {\n if (rtl) {\n for (var x = 0; x < parts.length; x++) {\n parts[x] = reverseString(parts[x]);\n }\n //parts.reverse();\n }\n res = res.concat(parts);\n }\n } else {\n // Init current line\n if (currentIndex === -1) {\n res.push(\"\");\n currentIndex = 0;\n }\n // Check if we need to break into another line\n if (res[currentIndex].length + wordLength + 1 > maxChars && res[currentIndex] !== \"\") {\n res.push(\"\");\n currentIndex++;\n }\n // Add word\n res[currentIndex] += word;\n }\n // Update index\n currentIndex = res.length - 1;\n }\n } else {\n // Splitting by anywhere (living la vida facil)\n var parts = text.match(new RegExp(\".{1,\" + maxChars + \"}\", \"g\"));\n if (parts) {\n if (rtl) {\n for (var x = 0; x < parts.length; x++) {\n parts[x] = reverseString(parts[x]);\n }\n }\n res = parts;\n }\n }\n // Do we have only one word that does not fit?\n // Since fullWords is set and we can't split the word, we end up with empty\n // set.\n if (res.length == 1 && fullWords && fullWordFallback && res[0].length > maxChars) {\n res = [];\n }\n return res;\n}\n/**\r\n * Truncates the text to certain character count.\r\n *\r\n * Will add ellipsis if the string is truncated. Optionally, can truncate on\r\n * full words only.\r\n *\r\n * For RTL support, pass in the fifth parameter as `true`.\r\n *\r\n * @param text Input text\r\n * @param maxChars Maximum character count of output\r\n * @param ellipsis Ellipsis string, i.e. \"...\"\r\n * @param fullWords If `true`, will not break mid-word, unless there's a single word and it does not with into `maxChars`\r\n * @param rtl Is this an RTL text?\r\n * @return Truncated text\r\n */\nexport function truncateWithEllipsis(text, maxChars, ellipsis, fullWords, rtl) {\n if (text.length <= maxChars) {\n return text;\n }\n // Calc max chars\n maxChars -= ellipsis.length;\n if (maxChars < 1) {\n maxChars = 1;\n //ellipsis = \"\";\n }\n // Get lines\n var lines = splitTextByCharCount(text, maxChars, fullWords, rtl);\n // Use first line\n return (lines[0] || \"\") + ellipsis;\n}\n/**\r\n * Removes whitespace from beginning and end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function trim(str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n}\n;\n/**\r\n * Removes whitespace from end of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function rtrim(str) {\n return str.replace(/[\\s\\uFEFF\\xA0]+$/g, \"\");\n}\n;\n/**\r\n * Removes whitespace from beginning of the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function ltrim(str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+/g, \"\");\n}\n;\n/**\r\n * Reverses string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function reverseString(str) {\n return str.split(\"\").reverse().join(\"\");\n}\n/**\r\n * Removes quotes from the string.\r\n *\r\n * @param str Input\r\n * @return Output\r\n */\nexport function unquote(str) {\n var res = str.trim();\n res = str.replace(/^'(.*)'$/, \"$1\");\n if (res == str) {\n res = str.replace(/^\"(.*)\"$/, \"$1\");\n }\n return res;\n}\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\nexport function padString(value, len, char) {\n if (len === void 0) {\n len = 0;\n }\n if (char === void 0) {\n char = \"0\";\n }\n if (typeof value !== \"string\") {\n value = value.toString();\n }\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\n}\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\nexport function getFormat(format) {\n // Undefined?\n if (typeof format === \"undefined\") {\n return $strings.STRING;\n }\n // Cleanup and lowercase format\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\n // Remove style tags\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\n // Trim\n format = format.trim();\n // Check for any explicit format hints (i.e. /Date)\n var hints = format.match(/\\/(date|number|duration)$/);\n if (hints) {\n return hints[1];\n }\n // Check for explicit hints\n if (format === $strings.NUMBER) {\n return $strings.NUMBER;\n }\n if (format === $strings.DATE) {\n return $strings.DATE;\n }\n if (format === $strings.DURATION) {\n return $strings.DURATION;\n }\n // Detect number formatting symbols\n if (format.match(/[#0]/)) {\n return $strings.NUMBER;\n }\n // Detect date formatting symbols\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\n return $strings.DATE;\n }\n // Nothing? Let's display as string\n return $strings.STRING;\n}\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\nexport function cleanFormat(format) {\n return format.replace(/\\/(date|number|duration)$/i, \"\");\n}\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\nexport function stripTags(text) {\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\n}\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\nexport function plainText(text) {\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\n}\n/**\r\n * ============================================================================\r\n * TYPE CONVERSION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\nexport function numberToString(value) {\n // TODO handle Infinity and -Infinity\n if ($type.isNaN(value)) {\n return \"NaN\";\n }\n if (value === Infinity) {\n return \"Infinity\";\n }\n if (value === -Infinity) {\n return \"-Infinity\";\n }\n // Negative 0\n if (value === 0 && 1 / value === -Infinity) {\n return \"-0\";\n }\n // Preserve negative and deal with absoute values\n var negative = value < 0;\n value = Math.abs(value);\n // TODO test this\n var parsed = $type.getValue(/^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value));\n var digits = parsed[1];\n var decimals = parsed[2] || \"\";\n var res;\n // Leave the nummber as it is if it does not use exponents\n if (parsed[3] == null) {\n res = decimals === \"\" ? digits : digits + \".\" + decimals;\n } else {\n var exponent = +parsed[3];\n // Deal with decimals\n if (value < 1) {\n var zeros = exponent - 1;\n res = \"0.\" + $string.repeat(\"0\", zeros) + digits + decimals;\n // Deal with integers\n } else {\n var zeros = exponent - decimals.length;\n if (zeros === 0) {\n res = digits + decimals;\n } else if (zeros < 0) {\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\n } else {\n res = digits + decimals + $string.repeat(\"0\", zeros);\n }\n }\n }\n return negative ? \"-\" + res : res;\n}\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\nexport function anyToDate(value) {\n if ($type.isDate(value)) {\n // TODO maybe don't create a new Date ?\n var date = new Date(value);\n // This is needed because IE does not copy over milliseconds\n date.setMilliseconds(value.getMilliseconds());\n return date;\n } else if ($type.isNumber(value)) {\n return new Date(value);\n } else {\n // Try converting to number (assuming timestamp)\n var num = Number(value);\n if (!$type.isNumber(num)) {\n return new Date(value);\n } else {\n return new Date(num);\n }\n }\n}\n/**\r\n * Tries converting any value to a number.\r\n *\r\n * @param value Source value\r\n * @return Number\r\n */\nexport function anyToNumber(value) {\n if ($type.isDate(value)) {\n return value.getTime();\n } else if ($type.isNumber(value)) {\n return value;\n } else if ($type.isString(value)) {\n // Try converting to number (assuming timestamp)\n var num = Number(value);\n if (!$type.isNumber(num)) {\n // Failing\n return undefined;\n } else {\n return num;\n }\n }\n}\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\nexport function getYearDay(date, utc) {\n if (utc === void 0) {\n utc = false;\n }\n var start = new Date(date.getFullYear(), 0, 0);\n var diff = date.getTime() - start.getTime() + (start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000;\n var oneDay = 1000 * 60 * 60 * 24;\n return Math.floor(diff / oneDay);\n}\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\nexport function getWeek(date, utc) {\n if (utc === void 0) {\n utc = false;\n }\n var day = getYearDay(date, utc) - 1;\n var week = Math.floor((day - (date.getDay() || 7) + 10) / 7);\n if (week === 0) {\n week = 53;\n } else if (week === 53) {\n week = 1;\n }\n return week;\n}\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\nexport function getMonthWeek(date, utc) {\n if (utc === void 0) {\n utc = false;\n }\n var firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\n var currentWeek = getWeek(date, utc);\n if (currentWeek == 1) {\n currentWeek = 53;\n }\n return currentWeek - firstWeek + 1;\n}\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\nexport function getDayFromWeek(week, year, weekday, utc) {\n if (weekday === void 0) {\n weekday = 1;\n }\n if (utc === void 0) {\n utc = false;\n }\n var date = new Date(year, 0, 4, 0, 0, 0, 0);\n if (utc) {\n date.setUTCFullYear(year);\n }\n var day = week * 7 + weekday - ((date.getDay() || 7) + 3);\n return day;\n}\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\nexport function get12Hours(hours, base) {\n if (hours > 12) {\n hours -= 12;\n } else if (hours === 0) {\n hours = 12;\n }\n return $type.hasValue(base) ? hours + (base - 1) : hours;\n}\n/**\r\n * Returns a string name of the tome zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\nexport function getTimeZone(date, long, savings, utc) {\n if (long === void 0) {\n long = false;\n }\n if (savings === void 0) {\n savings = false;\n }\n if (utc === void 0) {\n utc = false;\n }\n if (utc) {\n return long ? \"Coordinated Universal Time\" : \"UTC\";\n }\n var wotz = date.toLocaleString(\"UTC\");\n var wtz = date.toLocaleString(\"UTC\", {\n timeZoneName: long ? \"long\" : \"short\"\n }).substr(wotz.length);\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\n if (savings === false) {\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\n }\n return wtz;\n}\n/**\r\n * ============================================================================\r\n * NUMBER-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns a random number between `from` and `to`.\r\n *\r\n * @param from From number\r\n * @param to To number\r\n * @return Random number\r\n */\nexport function random(from, to) {\n return Math.floor(Math.random() * (to - from)) + from;\n}\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\nexport function fitNumber(value, min, max) {\n if (value > max) {\n return max;\n } else if (value < min) {\n return min;\n }\n return value;\n}\n/**\r\n * Fits the number into specific `min` and `max` bounds.\r\n *\r\n * If the value is does not fit withing specified range, it \"wraps\" around the\r\n * values.\r\n *\r\n * For example, if we have input value 10 with min set at 1 and max set at 8,\r\n * the value will not fit. The remainder that does not fit (2) will be added\r\n * to `min`, resulting in 3.\r\n *\r\n * The output of regular `fitNumber()` would return 8 instead.\r\n *\r\n * @param value Input value\r\n * @param min Minimum value\r\n * @param max Maximum value\r\n * @return Possibly adjusted value\r\n */\nexport function fitNumberRelative(value, min, max) {\n var gap = max - min;\n if (value > max) {\n value = min + (value - gap * Math.floor(value / gap));\n } else if (value < min) {\n value = min + (value - gap * Math.floor(value / gap));\n }\n return value;\n}\n/**\r\n * ============================================================================\r\n * SPRITE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Converts SVG element coordinates to coordinates within specific [[Sprite]].\r\n *\r\n * @param point SVG coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\nexport function svgPointToSprite(point, sprite) {\n var x = point.x;\n var y = point.y;\n var sprites = [];\n if (sprite) {\n while ($type.hasValue(sprite.parent)) {\n sprites.push(sprite);\n sprite = sprite.parent;\n }\n sprites.reverse();\n for (var i = 0; i < sprites.length; i++) {\n var sprite_1 = sprites[i];\n var angle = sprite_1.rotation;\n var relativeX = x - sprite_1.pixelX - sprite_1.ex;\n var relativeY = y - sprite_1.pixelY - sprite_1.ey;\n if (sprite_1.dx) {\n x -= sprite_1.dx;\n }\n if (sprite_1.dy) {\n y -= sprite_1.dy;\n }\n var scale = sprite_1.scale;\n // this handles nonscaling\n if (sprite_1.group) {\n scale = sprite_1.group.scale;\n }\n x = ($math.cos(-angle) * relativeX - $math.sin(-angle) * relativeY) / scale - sprite_1.pixelPaddingLeft;\n y = ($math.cos(-angle) * relativeY + $math.sin(-angle) * relativeX) / scale - sprite_1.pixelPaddingTop;\n }\n }\n return {\n x: x,\n y: y\n };\n}\n/**\r\n * Converts coordinates within [[Sprite]] to coordinates relative to the whole\r\n * SVG element.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return SVG coordinates\r\n */\nexport function spritePointToSvg(point, sprite) {\n var x = point.x;\n var y = point.y;\n if (sprite) {\n while ($type.hasValue(sprite.parent)) {\n var angle = sprite.rotation;\n x += sprite.pixelPaddingLeft + sprite.ex;\n y += sprite.pixelPaddingTop + sprite.ey;\n var scale = sprite.scale;\n // this handles nonscaling\n if (sprite.group) {\n scale = sprite.group.scale;\n }\n var relativeX = sprite.pixelX + (x * $math.cos(angle) - y * $math.sin(angle)) * scale;\n var relativeY = sprite.pixelY + (x * $math.sin(angle) + y * $math.cos(angle)) * scale;\n if (sprite.dx) {\n relativeX += sprite.dx;\n }\n if (sprite.dy) {\n relativeY += sprite.dy;\n }\n x = relativeX;\n y = relativeY;\n sprite = sprite.parent;\n }\n }\n return {\n x: x,\n y: y\n };\n}\n/**\r\n * Converts coordinates of one sprite to another.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @param toSprite Sprite\r\n * @return converted coordinates\r\n */\nexport function spritePointToSprite(point, sprite, toSprite) {\n return svgPointToSprite(spritePointToSvg(point, sprite), toSprite);\n}\n/**\r\n * Converts a rectangle expressed in SVG element coordinates to coordinates\r\n * within specific [[Sprite]].\r\n *\r\n * @param rect SVG rectangle\r\n * @param sprite Sprite\r\n * @return Sprite rectangle\r\n */\nexport function svgRectToSprite(rect, sprite) {\n var p1 = svgPointToSprite(rect, sprite);\n var p2 = svgPointToSprite({\n x: rect.x + rect.width,\n y: rect.y + rect.height\n }, sprite);\n return {\n x: p1.x,\n y: p1.y,\n width: p2.x - p1.x,\n height: p2.y - p1.y\n };\n}\n/**\r\n * Converts a rectangle expressed in [[Sprite]] coordinates to SVG coordinates.\r\n *\r\n * @param rect Sprite rectangle\r\n * @param sprite Sprite\r\n * @return SVG rectangle\r\n */\nexport function spriteRectToSvg(rect, sprite) {\n var p1 = spritePointToSvg(rect, sprite);\n var p2 = spritePointToSvg({\n x: rect.x + rect.width,\n y: rect.y + rect.height\n }, sprite);\n return {\n x: p1.x,\n y: p1.y,\n width: p2.x - p1.x,\n height: p2.y - p1.y\n };\n}\n/**\r\n * Converts global document-wide coordinates to coordinates within SVG element.\r\n *\r\n * @param point Global coordinates\r\n * @param svgContainer SVG element\r\n * @return SVG coordinates\r\n */\nexport function documentPointToSvg(point, svgContainer, cssScale) {\n try {\n var bbox = svgContainer.getBoundingClientRect();\n if (!$type.isNumber(cssScale)) {\n cssScale = 1;\n }\n return {\n \"x\": (point.x - bbox.left) / cssScale,\n \"y\": (point.y - bbox.top) / cssScale\n };\n } catch (e) {\n return point;\n }\n}\n/**\r\n * Converts SVG coordinates to global document-wide coordinates.\r\n *\r\n * @param point SVG coordinates\r\n * @param svgContainer SVG element\r\n * @return Global coordinates\r\n */\nexport function svgPointToDocument(point, svgContainer) {\n try {\n var bbox = svgContainer.getBoundingClientRect();\n return {\n \"x\": point.x + bbox.left,\n \"y\": point.y + bbox.top\n };\n } catch (e) {\n return point;\n }\n}\n/**\r\n * Converts document-wide global coordinates to coordinates within specific\r\n * [[Sprite]].\r\n *\r\n * @param point Global coordinates\r\n * @param sprite Sprite\r\n * @return Sprite coordinates\r\n */\nexport function documentPointToSprite(point, sprite) {\n if (sprite && sprite.htmlContainer) {\n var svgPoint = documentPointToSvg(point, $type.getValue(sprite.htmlContainer), sprite.svgContainer.cssScale);\n return svgPointToSprite(svgPoint, sprite);\n } else {\n return point;\n }\n}\n/**\r\n * Converts coordinates within [[Sprite]] to global document coordinates.\r\n *\r\n * @param point Sprite coordinates\r\n * @param sprite Sprite\r\n * @return Global coordinates\r\n */\nexport function spritePointToDocument(point, sprite) {\n if (sprite && sprite.htmlContainer) {\n var svgPoint = spritePointToSvg(point, sprite);\n return svgPointToDocument(svgPoint, $type.getValue(sprite.htmlContainer));\n } else {\n return point;\n }\n}\n/**\r\n * ============================================================================\r\n * DEPRECATED FUNCTIONS\r\n * @todo Review and remove\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns element's width.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Width (px)\r\n * @deprecated Not used anywhere\r\n */\nexport function width(element) {\n var cs = getComputedStyle(element);\n var paddingX = parseFloat(cs.paddingLeft) + parseFloat(cs.paddingRight);\n var borderX = parseFloat(cs.borderLeftWidth) + parseFloat(cs.borderRightWidth);\n return element.clientWidth - paddingX - borderX;\n}\n/**\r\n * Returns element's height.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Height (px)\r\n * @deprecated Not used anywhere\r\n */\nexport function height(element) {\n var cs = getComputedStyle(element);\n var paddingY = parseFloat(cs.paddingTop) + parseFloat(cs.paddingBottom);\n var borderY = parseFloat(cs.borderTopWidth) + parseFloat(cs.borderBottomWidth);\n return element.clientHeight - paddingY - borderY;\n}\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\nexport function decimalPlaces(number) {\n var match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\n}\nvar urlRegexp = /^([a-zA-Z][a-zA-Z0-9\\+\\.\\-]*:)?(?:(\\/\\/)([^\\@]+\\@)?([^\\/\\?\\#\\:]*)(\\:[0-9]+)?)?([^\\?\\#]*)(\\?[^\\#]*)?(\\#.*)?$/;\n/**\r\n * Parses a URL\r\n *\r\n * @ignore Exclude from docs\r\n */\n// TODO test this\nexport function parseUrl(url) {\n var match = urlRegexp.exec(url);\n return {\n protocol: match && match[1] || \"\",\n separator: match && match[2] || \"\",\n authority: match && match[3] || \"\",\n domain: match && match[4] || \"\",\n port: match && match[5] || \"\",\n path: match && match[6] || \"\",\n query: match && match[7] || \"\",\n hash: match && match[8] || \"\"\n };\n}\n/**\r\n * Serializes a Url into a string\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport function serializeUrl(url) {\n return url.protocol + url.separator + url.authority + url.domain + url.port + url.path + url.query + url.hash;\n}\n/**\r\n * Checks whether a Url is relative or not\r\n *\r\n * @ignore Exclude from docs\r\n */\n// TODO is this correct ?\nfunction isRelativeUrl(url) {\n return url.protocol === \"\" && url.separator === \"\" && url.authority === \"\" && url.domain === \"\" && url.port === \"\";\n}\n/**\r\n * Joins together two URLs, resolving relative URLs correctly\r\n *\r\n * @ignore Exclude from docs\r\n */\n// TODO test this\nexport function joinUrl(left, right) {\n var parsedLeft = parseUrl(left);\n var parsedRight = parseUrl(right);\n if (isRelativeUrl(parsedLeft)) {\n throw new Error(\"Left URL is not absolute\");\n }\n if (isRelativeUrl(parsedRight)) {\n // TODO is this correct ?\n if (parsedRight.path !== \"\") {\n if (parsedRight.path[0] === \"/\") {\n parsedLeft.path = parsedRight.path;\n // TODO is this correct ?\n } else {\n var leftPath = parsedLeft.path.split(/\\//);\n var rightPath = parsedRight.path.split(/\\//);\n // TODO is this correct ?\n if (leftPath.length === 0) {\n if (rightPath.length !== 0) {\n leftPath.push(\"\");\n }\n } else if (leftPath.length > 1) {\n leftPath.pop();\n }\n $array.pushAll(leftPath, rightPath);\n parsedLeft.path = leftPath.join(\"/\");\n if (parsedLeft.path !== \"\" && parsedLeft.path[0] !== \"/\") {\n throw new Error(\"URL path must start with /\");\n }\n }\n }\n // TODO is this correct ?\n parsedLeft.query = parsedRight.query;\n parsedLeft.hash = parsedRight.hash;\n return serializeUrl(parsedLeft);\n } else {\n return serializeUrl(parsedRight);\n }\n}\n/**\r\n * Detects MSIE.\r\n *\r\n * @return Is IE?\r\n */\nexport function isIE() {\n return !!window.MSInputMethodContext && !!document.documentMode;\n}\n//# sourceMappingURL=Utils.js.map","// Also detects iOS\nexport function isSafari() {\n return /apple/i.test(navigator.vendor);\n}\nexport function isInternetExplorer() {\n return /MSIE |Trident\\//.test(navigator.userAgent);\n}\n//# sourceMappingURL=Browser.js.map","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $math from \"../utils/Math\";\nimport { registry } from \"../Registry\";\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n * this list of conditions and the following disclaimer in the documentation\r\n * and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from this\r\n * software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\n/**\r\n * ============================================================================\r\n * LINEAR FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Easing function: \"linear\".\r\n */\nexport function linear(t) {\n return +t;\n}\nregistry.registeredClasses[\"ease.linear\"] = linear;\n/**\r\n * Easing function: \"quadIn\".\r\n */\nexport function quadIn(t) {\n return t * t;\n}\nregistry.registeredClasses[\"ease.quadIn\"] = quadIn;\n/**\r\n * Easing function: \"quadOut\".\r\n */\nexport function quadOut(t) {\n return t * (2 - t);\n}\nregistry.registeredClasses[\"ease.quadOut\"] = quadOut;\n/**\r\n * Easing function: \"quadInOut\".\r\n */\nexport function quadInOut(t) {\n t *= 2;\n return (t <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\nregistry.registeredClasses[\"ease.quadInOut\"] = quadInOut;\n/**\r\n * Easing function: \"polyIn\".\r\n */\nexport function polyIn(t, e) {\n return Math.pow(t, e);\n}\nregistry.registeredClasses[\"ease.polyIn\"] = polyIn;\n/**\r\n * Easing function: \"polyOut\".\r\n */\nexport function polyOut(t, e) {\n return 1 - Math.pow(1 - t, e);\n}\nregistry.registeredClasses[\"ease.polyOut\"] = polyOut;\n/**\r\n * Easing function: \"polyInOut\".\r\n */\nexport function polyInOut(t, e) {\n t *= 2;\n return (t <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n}\nregistry.registeredClasses[\"ease.polyInOut\"] = polyInOut;\n/**\r\n * Easing function: \"polyIn3\".\r\n */\nexport function polyIn3(t) {\n return polyIn(t, 3);\n}\nregistry.registeredClasses[\"ease.polyIn3\"] = polyIn3;\n/**\r\n * Easing function: \"polyOut3\".\r\n */\nexport function polyOut3(t) {\n return polyOut(t, 3);\n}\nregistry.registeredClasses[\"ease.polyOut3\"] = polyOut3;\n/**\r\n * Easing function: \"polyInOut3\".\r\n */\nexport function polyInOut3(t) {\n return polyInOut(t, 3);\n}\nregistry.registeredClasses[\"ease.polyInOut3\"] = polyInOut3;\n/**\r\n * ============================================================================\r\n * EXPONENTIAL FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Easing function: \"expIn\".\r\n */\nexport function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\nregistry.registeredClasses[\"ease.expIn\"] = expIn;\n/**\r\n * Easing function: \"expOut\".\r\n */\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\nregistry.registeredClasses[\"ease.expOut\"] = expOut;\n/**\r\n * Easing function: \"expInOut\".\r\n */\nexport function expInOut(t) {\n t *= 2;\n return (t <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\nregistry.registeredClasses[\"ease.expInOut\"] = expInOut;\n/**\r\n * ============================================================================\r\n * SINE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Easing function: \"sinIn\".\r\n */\nexport function sinIn(t) {\n return 1 - Math.cos(t * $math.HALFPI);\n}\nregistry.registeredClasses[\"ease.sinIn\"] = sinIn;\n/**\r\n * Easing function: \"sinOut\".\r\n */\nexport function sinOut(t) {\n return Math.sin(t * $math.HALFPI);\n}\nregistry.registeredClasses[\"ease.sinOut\"] = sinOut;\n/**\r\n * Easing function: \"sinInOut\".\r\n */\nexport function sinInOut(t) {\n return (1 - Math.cos($math.PI * t)) / 2;\n}\nregistry.registeredClasses[\"ease.sinInOut\"] = sinInOut;\n/**\r\n * ============================================================================\r\n * CUBIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Easing function: \"cubicIn\".\r\n */\nexport function cubicIn(t) {\n return t * t * t;\n}\nregistry.registeredClasses[\"ease.cubicIn\"] = cubicIn;\n/**\r\n * Easing function: \"cubicOut\".\r\n */\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\nregistry.registeredClasses[\"ease.cubicOut\"] = cubicOut;\n/**\r\n * Easing function: \"cubicInOut\".\r\n */\nexport function cubicInOut(t) {\n t *= 2;\n return (t <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\nregistry.registeredClasses[\"ease.cubicInOut\"] = cubicInOut;\n/**\r\n * ============================================================================\r\n * CIRCLE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Easing function: \"circleIn\".\r\n */\nexport function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\nregistry.registeredClasses[\"ease.circleIn\"] = circleIn;\n/**\r\n * Easing function: \"circleOut\".\r\n */\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nregistry.registeredClasses[\"ease.circleOut\"] = circleOut;\n/**\r\n * Easing function: \"circleInOut\".\r\n */\nexport function circleInOut(t) {\n t *= 2;\n return (t <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\nregistry.registeredClasses[\"ease.circleInOut\"] = circleInOut;\n/**\r\n * ============================================================================\r\n * BOUNCE FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\nvar 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/**\r\n * Easing function: \"bounceIn\".\r\n */\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\nregistry.registeredClasses[\"ease.bounceIn\"] = bounceIn;\n/**\r\n * Easing function: \"bounceOut\".\r\n */\nexport function bounceOut(t) {\n t = +t;\n return 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}\nregistry.registeredClasses[\"ease.bounceOut\"] = bounceOut;\n/**\r\n * Easing function: \"bounceInOut\".\r\n */\nexport function bounceInOut(t) {\n t *= 2;\n return (t <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\nregistry.registeredClasses[\"ease.bounceInOut\"] = bounceInOut;\n/**\r\n * ============================================================================\r\n * ELASTIC FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\nvar tau = 2 * Math.PI;\nvar amplitude = 1;\nvar period = 0.3 / tau;\nvar s = Math.asin(1 / amplitude) * period;\n/**\r\n * Easing function: \"elasticIn\".\r\n *\r\n * @function elasticIn\r\n * @param a Amplitude\r\n * @param p period\r\n */\nexport function elasticIn(t) {\n return amplitude * Math.pow(2, 10 * --t) * Math.sin((s - t) / period);\n}\nregistry.registeredClasses[\"ease.elasticIn\"] = elasticIn;\n/**\r\n * Easing function: \"elasticOut\".\r\n *\r\n * @function elasticOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\nexport function elasticOut(t) {\n return 1 - amplitude * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / period);\n}\nregistry.registeredClasses[\"ease.elasticOut\"] = elasticOut;\n/**\r\n * Easing function: \"elasticInOut\".\r\n *\r\n * @function elasticInOut\r\n * @param a Amplitude\r\n * @param p period\r\n */\nexport function elasticInOut(t) {\n t = t * 2 - 1;\n return (t < 0 ? amplitude * Math.pow(2, 10 * t) * Math.sin((s - t) / period) : 2 - amplitude * Math.pow(2, -10 * t) * Math.sin((s + t) / period)) / 2;\n}\nregistry.registeredClasses[\"ease.elasticInOut\"] = elasticInOut;\n//# sourceMappingURL=Ease.js.map","/**\r\n * Module contains functionality related to [[Sprite]] states.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"./Base\";\nimport { registry } from \"./Registry\";\nimport { Adapter } from \"./utils/Adapter\";\nimport { List, ListDisposer } from \"./utils/List\";\nimport { toColor } from \"./utils/Color\";\nimport { percent } from \"./utils/Percent\";\nimport * as $utils from \"./utils/Utils\";\nimport * as $ease from \"./utils/Ease\";\nimport * as $object from \"./utils/Object\";\nimport * as $type from \"./utils/Type\";\n/**\r\n * Defines a state for [[Sprite]].\r\n *\r\n * A \"state\" is a special object that has all the same properties as the\r\n * [[Sprite]] of the same type, and which can be used to quickly apply a set\r\n * of property values. (set state)\r\n *\r\n * When [[Sprite]] (or any object that extends Sprite) is created it creates a\r\n * \"default\" state. You can modify the \"default\" state so that when the Sprite\r\n * returns to default state certain properties are added.\r\n *\r\n * Default state can be accessed using Sprite's `defaultState` getter.\r\n *\r\n * ```TypeScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * sprite.defaultState.properties.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"defaultState\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * If Sprite is \"hoverable\", it automatically adds a \"hover\" state, which is\r\n * applied when it has a cursor over it.\r\n *\r\n * ```TypeScript\r\n * let hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JavaScript\r\n * var hoverstate = sprite.states.create(\"hover\");\r\n * hoverstate.properties.fillOpacity = 1;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"states\": {\r\n * \"hover\": {\r\n * \"properties\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * The above will automatically apply \"hover\" state when the Sprite is hovered,\r\n * thus will set its `fillOpacity` property to 1, and will reset it to 0.5 when\r\n * it's no longer hovered.\r\n *\r\n * Every object that inherits from [[Sprite]] can and will add their own\r\n * properties to the available list.\r\n *\r\n * User can create their own states, and apply them as needed:\r\n *\r\n * ```TypeScript\r\n * let myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n * ```JavaScript\r\n * var myCustomState = sprite.states.create(\"mystate\");\r\n * myCustomState.properties.fillOpacity = 0.5;\r\n * myCustomState.properties.strokeOpacity = 0.8;\r\n * sprite.setState(\"mystate\");\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/states/}\r\n * @important\r\n */\nvar SpriteState = /** @class */function (_super) {\n __extends(SpriteState, _super);\n /**\r\n * Constructor\r\n */\n function SpriteState() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Duration of the transition to this state. 0 means instantenous transition.\r\n * Any number means the [[Sprite]] will transit smoothly to this state,\r\n * animating all animatable properties.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.transitionDuration = 0;\n /**\r\n * Easing function to use when transitioning to this state.\r\n *\r\n * @default cubicOut\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.transitionEasing = $ease.cubicOut;\n /**\r\n * Collection of properties and their values that should be applied to [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * The property values set on a [[SpriteState]] will override the ones set\r\n * directly on a [[Sprite]].\r\n */\n _this.properties = {};\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * SpriteState-specific binding will override binding set directly on\r\n * [[Sprite]]. I.e. you can make Sprite use different fill color on hover by\r\n * adding a `fill` binding to a different DataItem key for Sprite's \"hover\"\r\n * state object.\r\n *\r\n * @see {@link Sprite}\r\n */\n _this.propertyFields = {};\n //public propertyFields: Dictionary = new Dictionary();;\n /**\r\n * A list of [[Filter]] elements to be applied to the relative [[Sprite]]\r\n * when switching to this State.\r\n *\r\n * @param {List}\r\n */\n _this.filters = new List();\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\n _this.isTemplate = false;\n _this.className = \"SpriteState\";\n // Make filter list disposable\n _this._disposers.push(new ListDisposer(_this.filters));\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(SpriteState.prototype, \"adapter\", {\n /**\r\n * Holds Adapter.\r\n */\n get: function () {\n var _this = this;\n if (!this._adapterO) {\n this._adapterO = new Adapter(this);\n // Decorate adapter with events so that we can apply its settings whenever\n // it is modified\n this._adapterO.events.on(\"inserted\", function (ev) {\n _this[ev.newValue.key] = _this[ev.newValue.key];\n }, undefined, false);\n this._adapterO.events.on(\"removed\", function (ev) {\n _this[ev.newValue.key] = _this[ev.newValue.key];\n }, undefined, false);\n }\n return this._adapterO;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns [[Sprite]] element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]] and if there are\r\n * any method callbacks set up for the specific property.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\n SpriteState.prototype.getPropertyValue = function (propertyName) {\n var propValue = this.properties[propertyName];\n var sprite = this.sprite;\n if (sprite) {\n var fieldName = this.propertyFields[propertyName];\n if ($type.hasValue(fieldName)) {\n if (sprite.dataItem) {\n propValue = sprite.dataItem.dataContext[fieldName];\n }\n if (propValue == undefined) {\n propValue = \"__unset\";\n }\n }\n // Apply adapters\n // If the value itself is undefined, we're going to pass in Sprite's\n // value to adapters\n // @todo get rid of \n if (!$type.hasValue(propValue)) {\n var spriteValue = sprite.getPropertyValue(propertyName);\n if (this._adapterO) {\n propValue = this._adapterO.apply(propertyName, spriteValue);\n } else {\n propValue = spriteValue;\n }\n if (propValue == spriteValue) {\n propValue = undefined;\n }\n } else {\n if (this._adapterO) {\n propValue = this._adapterO.apply(propertyName, propValue);\n }\n }\n /*let method = this.propertyMethods.getKey(propertyName);\r\n if (method) {\r\n propValue = method(sprite, propertyName);\r\n }*/\n }\n return propValue;\n };\n /**\r\n * Copies all property and style values from another [[SpriteState]] object.\r\n *\r\n * @param source Source [[SpriteState]]\r\n */\n SpriteState.prototype.copyFrom = function (source) {\n if (source && source != this) {\n this.transitionDuration = source.transitionDuration;\n this.transitionEasing = source.transitionEasing;\n $utils.copyProperties(source.properties, this.properties);\n $utils.copyProperties(source.propertyFields, this.propertyFields);\n this.filters.copyFrom(source.filters);\n if (source._adapterO) {\n this.adapter.copyFrom(source._adapterO);\n }\n }\n };\n Object.defineProperty(SpriteState.prototype, \"allValues\", {\n /**\r\n * Returns all values that should be applied by the SpriteState.\r\n *\r\n * It takes adapters into account.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Properties\r\n * @todo Add adapter values\r\n * @todo proper type this[\"_properties\"]\r\n */\n get: function () {\n var _this = this;\n // Init return value\n var res = {};\n // Apply adapters to all values\n $object.each(this.properties, function (prop, value) {\n res[prop] = _this.getPropertyValue(prop);\n });\n // Cycle through all adapters and add values for missing properties\n if (this._adapterO) {\n var keys = this._adapterO.keys();\n $object.each(keys, function (_x, prop) {\n var value = _this.getPropertyValue(prop);\n res[prop] = value;\n });\n }\n // Cycle through all property fileds and add values for missing properties\n var propertyFields = this.propertyFields;\n $object.each(propertyFields, function (prop) {\n var value = _this.getPropertyValue(prop);\n res[prop] = value;\n });\n return res;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Resets the State to initial state - no values or Filters applied.\r\n */\n SpriteState.prototype.reset = function () {\n this.properties = {};\n this.filters.clear();\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n SpriteState.prototype.processConfig = function (config) {\n if ($type.hasValue(config) && $type.hasValue(config[\"properties\"])) {\n $object.each(config[\"properties\"], function (key, value) {\n if ($type.isString(value)) {\n if (value.match(/^[0-9.\\-]+\\%$/)) {\n config[\"properties\"][key] = percent($type.toNumber(value));\n } else if (value.match(/^\\#[0-9abcdef]{3,}$/i)) {\n config[\"properties\"][key] = toColor(value);\n }\n }\n });\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n SpriteState.prototype.asFunction = function (field) {\n return field == \"transitionEasing\" || _super.prototype.asIs.call(this, field);\n };\n return SpriteState;\n}(BaseObject);\nexport { SpriteState };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SpriteState\"] = SpriteState;\n//# sourceMappingURL=SpriteState.js.map","import { __extends } from \"tslib\";\nimport { Dictionary } from \"./utils/Dictionary\";\nimport { TargetedEventDispatcher } from \"./utils/EventDispatcher\";\nimport { MultiDisposer, CounterDisposer } from \"./utils/Disposer\";\nimport * as $utils from \"./utils/Utils\";\nimport * as $object from \"./utils/Object\";\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @important\r\n */\nvar SpriteEventDispatcher = /** @class */function (_super) {\n __extends(SpriteEventDispatcher, _super);\n function SpriteEventDispatcher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * [_interactionEvents description]\r\n *\r\n * @todo Description\r\n */\n _this._interactionEvents = new Dictionary();\n return _this;\n }\n /**\r\n * [_dispatchSpriteEvent description]\r\n *\r\n * @todo Description\r\n */\n SpriteEventDispatcher.prototype._dispatchSpriteEvent = function (ev) {\n if (this.target.disabled || this.target.isTemplate) {\n return;\n }\n // TODO remove this later\n if (this.target.events.isEnabled(ev.type)) {\n var imev = $object.merge(ev, {\n target: this.target\n });\n this.target.events.dispatchImmediately(imev.type, imev);\n }\n };\n /**\r\n * [_dispatchSpritePointEvent description]\r\n *\r\n * @todo Description\r\n */\n SpriteEventDispatcher.prototype._dispatchSpritePointEvent = function (ev) {\n if (this.target.disabled || this.target.isTemplate) {\n return;\n }\n // TODO remove this later\n if (this.target.events.isEnabled(ev.type)) {\n var imev = $object.merge(ev, {\n target: this.target,\n spritePoint: ev.point ? $utils.documentPointToSprite(ev.point, this.target) : undefined,\n svgPoint: this.target.getSvgPoint(ev.point)\n });\n this.target.events.dispatchImmediately(imev.type, imev);\n }\n };\n /**\r\n * [_addInteractionObjectEvent description]\r\n *\r\n * @todo Description\r\n */\n SpriteEventDispatcher.prototype._addInteractionObjectEvent = function (type, callback, context, shouldClone) {\n var _this = this;\n var key = shouldClone + \"-\" + type;\n var counter = this._interactionEvents.insertKeyIfEmpty(key, function () {\n var disposer = _this.target.interactions.events.on(type, callback, context, shouldClone);\n return new CounterDisposer(function () {\n _this._interactionEvents.removeKey(key);\n disposer.dispose();\n });\n });\n return counter.increment();\n };\n /**\r\n * [_on description]\r\n *\r\n * @todo Description\r\n */\n SpriteEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\n var disposers = [info.disposer];\n /**\r\n * Catching Sprite-related events, converting them to [[SpriteEvent]] and\r\n * triggering them on sprite\r\n */\n switch (type) {\n case \"hit\":\n case \"track\":\n case \"doublehit\":\n case \"wheel\":\n case \"wheelup\":\n case \"wheeldown\":\n case \"wheelleft\":\n case \"wheelright\":\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpritePointEvent, this, shouldClone));\n break;\n case \"rightclick\":\n case \"down\":\n //case \"hold\":\n case \"up\":\n case \"drag\":\n case \"dragged\":\n case \"dragstart\":\n case \"dragstop\":\n case \"over\":\n case \"out\":\n case \"swipe\":\n case \"swipeleft\":\n case \"swiperight\":\n case \"resize\":\n //case \"rotate\":\n case \"focus\":\n case \"blur\":\n case \"toggled\":\n disposers.push(this._addInteractionObjectEvent(type, this._dispatchSpriteEvent, this, shouldClone));\n break;\n }\n /**\r\n * Set functional properties based on events. For example if we add a\r\n * \"drag\" event handler, we want to make the Sprite draggable, even if we\r\n * don't explicitly set \"draggable\"\r\n */\n switch (type) {\n case \"hit\":\n case \"doublehit\":\n case \"rightclick\":\n case \"down\":\n case \"up\":\n this.target.clickable = true;\n break;\n case \"toggled\":\n this.target.togglable = true;\n break;\n case \"drag\":\n case \"dragstart\":\n case \"dragstop\":\n this.target.draggable = true;\n break;\n case \"track\":\n this.target.trackable = true;\n break;\n case \"resize\":\n this.target.resizable = true;\n break;\n case \"swipe\":\n case \"swipeleft\":\n case \"swiperight\":\n this.target.swipeable = true;\n break;\n case \"wheel\":\n case \"wheelup\":\n case \"wheeldown\":\n case \"wheelleft\":\n case \"wheelright\":\n this.target.wheelable = true;\n break;\n case \"over\":\n this.target.hoverable = true;\n case \"out\":\n this.target.hoverable = true;\n break;\n case \"focus\":\n case \"blur\":\n this.target.focusable = true;\n break;\n }\n info.disposer = new MultiDisposer(disposers);\n return info;\n };\n return SpriteEventDispatcher;\n}(TargetedEventDispatcher);\nexport { SpriteEventDispatcher };\n//# sourceMappingURL=SpriteEvents.js.map","/**\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { color } from \"../utils/Color\";\n/**\r\n * Defines a class that holds default properties for new SVG elements\r\n */\nvar SVGDefaults = /** @class */function () {\n function SVGDefaults() {}\n SVGDefaults.opacity = 1;\n SVGDefaults.strokeOpacity = 1;\n SVGDefaults.strokeWidth = 1;\n SVGDefaults.fillOpacity = 1;\n SVGDefaults.fill = color(\"#000000\");\n SVGDefaults.stroke = color(\"#000000\");\n SVGDefaults.focusable = undefined;\n SVGDefaults.tabindex = 0;\n return SVGDefaults;\n}();\nexport { SVGDefaults };\n//# sourceMappingURL=SVGDefaults.js.map","/**\r\n * Global options.\r\n */\nexport var options = {\n verbose: true,\n commercialLicense: false,\n classNamePrefix: \"amcharts-\",\n autoSetClassName: false,\n minPolylineStep: 0.5,\n onlyShowOnViewport: false,\n queue: false,\n autoDispose: false,\n licenses: [],\n suppressErrors: false,\n suppressWarnings: false,\n animationsEnabled: true,\n nonce: \"\",\n deferredDelay: 100,\n disableHoverOnTransform: \"never\",\n pixelPerfectPrecision: 0\n};\n//# sourceMappingURL=Options.js.map","/**\r\n * Animation module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"../Base\";\nimport { SVGDefaults } from \"../defs/SVGDefaults\";\nimport { Disposer } from \"../utils/Disposer\";\nimport { Color } from \"../utils/Color\";\nimport { Percent, percent } from \"../utils/Percent\";\nimport * as $async from \"../utils/AsyncPending\";\nimport * as $ease from \"../utils/Ease\";\nimport * as $colors from \"../utils/Colors\";\nimport * as $math from \"../utils/Math\";\nimport * as $array from \"../utils/Array\";\nimport * as $type from \"../utils/Type\";\nimport { system } from \"../System\";\nimport { options } from \"../Options\";\n/**\r\n * Calls a `callback` function for the `duration` of milliseconds.\r\n *\r\n * @todo Needed?\r\n * @deprecated Not used anywhere\r\n * @ignore Exclude from docs\r\n * @param duration Duration (ms)\r\n * @param callback Callback function\r\n * @return Disposer\r\n */\nexport function animate(duration, callback) {\n var disposed = false;\n // TODO use performance.now() ?\n var startTime = Date.now();\n function loop(now) {\n if (!disposed) {\n var diff = now - startTime;\n if (diff >= duration) {\n callback(1);\n } else {\n $async.nextFrame(loop);\n callback(diff / duration);\n }\n }\n }\n $async.nextFrame(loop);\n return new Disposer(function () {\n disposed = true;\n });\n}\n/**\r\n * Returns numeric value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\nfunction getProgressNumber(progress, from, to) {\n return from + (to - from) * progress;\n}\n/**\r\n * Returns [[Percent]] value accoring to progress between start and end\r\n * values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Value according to progress\r\n */\nfunction getProgressPercent(progress, from, to) {\n return new Percent(getProgressNumber(progress, from.percent, to.percent));\n}\n/**\r\n * Returns color value accoring to progress between start and end values.\r\n *\r\n * @param progress Progress (0-1)\r\n * @param from\r\n * @param to\r\n * @return Color according to progress\r\n */\nfunction getProgressColor(progress, from, to) {\n var color = new Color($colors.interpolate(from.rgb, to.rgb, progress));\n if (from.alpha != to.alpha) {\n color.alpha = from.alpha + (to.alpha - from.alpha) * progress;\n }\n return color;\n}\n/**\r\n * [getHybridProperty description]\r\n *\r\n * @todo Description\r\n * @param property [description]\r\n * @param type [description]\r\n * @return [description]\r\n */\nfunction getHybridProperty(property, type) {\n return type + property.charAt(0).toUpperCase() + property.substr(1);\n}\nvar AnimationDisposer = /** @class */function () {\n function AnimationDisposer(array) {\n this._disposer = new Disposer(function () {\n while (array.length !== 0) {\n array[0].dispose();\n }\n });\n }\n AnimationDisposer.prototype.isDisposed = function () {\n return this._disposer.isDisposed();\n };\n AnimationDisposer.prototype.dispose = function () {\n this._disposer.dispose();\n };\n return AnimationDisposer;\n}();\nexport { AnimationDisposer };\n/**\r\n * Animation can be used to transition certain properties on an object that\r\n * implements [[IAnimatable]] interface.\r\n *\r\n * @see {@link IAnimationEvents} for a list of available events\r\n */\nvar Animation = /** @class */function (_super) {\n __extends(Animation, _super);\n /**\r\n * Constructor\r\n *\r\n * @param object An object animation should run on\r\n * @param animationOptions One or several (array) of animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n */\n function Animation(object, animationOptions, duration, easing) {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Duration of the animation in milliseconds.\r\n */\n _this.duration = 0;\n /**\r\n * Easing function to use.\r\n *\r\n * @see {@link Ease}\r\n */\n _this.easing = $ease.linear;\n /**\r\n * Contains progress of the current animation: 0 (start) to 1 (end).\r\n */\n _this.progress = 0;\n /**\r\n * Indicated how many times animation should loop.\r\n */\n _this._loop = 0;\n /**\r\n * Animation is paused.\r\n */\n _this._pause = false;\n /**\r\n * Holds reference to timeout for delayed play.\r\n */\n _this._delayTimeout = null;\n /**\r\n * Elapsed time in currently playing animation.\r\n */\n _this._time = 0;\n _this._isFinished = false;\n _this.className = \"Animation\";\n // Override duration if animations disabled system-wide\n if (options.animationsEnabled === false) {\n duration = 0;\n }\n // Set parameters\n _this.object = object;\n _this.animationOptions = $array.toArray(animationOptions);\n _this.duration = duration;\n if (easing) {\n _this.easing = easing;\n }\n // Run check if there are already animations playing on the same properties\n // and stop them - the last animation takes precedence\n //this.stopSameAnimations();\n /*if ($type.hasValue(callback)) {\r\n // TODO don't use .call\r\n this.events.on(\"animationended\", callback, object);\r\n }*/\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n // TODO verify that this is correct\n Animation.prototype.debug = function () {};\n /**\r\n * Disposes this object, clears up after itself.\r\n */\n Animation.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this.pause();\n };\n /**\r\n * Delays animation start by X milliseconds.\r\n *\r\n * @param delay Delay (ms)\r\n * @return Animation\r\n */\n Animation.prototype.delay = function (delay) {\n var _this = this;\n //@todo Maybe not use `bind()`\n if (delay > 0) {\n this.pause();\n // This is so that it will get disposed if `this.object` is disposed\n // TODO hacky, figure out a better way\n $array.move(this.object.animations, this);\n var id_1 = setTimeout(function () {\n _this._delayTimeout = null;\n _this.start();\n }, delay);\n this._delayTimeout = new Disposer(function () {\n clearTimeout(id_1);\n });\n }\n return this;\n };\n Animation.prototype._start = function () {\n this._isFinished = false;\n // Clear delay timeout if there was one\n if (this._delayTimeout) {\n this.removeDispose(this._delayTimeout);\n this._delayTimeout = null;\n }\n // Run check if there are already animations playing on the same properties\n // and stop them - the last animation takes precedence\n this.stopSameAnimations();\n // Reset counters\n this._pause = false;\n // Register animation\n $array.move(system.animations, this);\n // Register this animation in object's `animations` list\n $array.move(this.object.animations, this);\n system.requestFrame();\n };\n /**\r\n * Starts animation.\r\n *\r\n * @return Animation\r\n */\n Animation.prototype.start = function () {\n this._start();\n this._startTime = Date.now();\n this._time = 0;\n this.staticOptions = [];\n // Process initial property values\n for (var i = this.animationOptions.length - 1; i >= 0; i--) {\n var options_1 = this.animationOptions[i];\n if (!$type.hasValue(options_1.from)) {\n if (options_1.childObject) {\n options_1.from = options_1.childObject[options_1.property];\n } else {\n options_1.from = this.object[options_1.property];\n if (!$type.hasValue(options_1.from)) {\n options_1.from = SVGDefaults[options_1.property];\n }\n }\n /*if (!$type.hasValue(options.from)) {\r\n throw Error(\"Could not get initial transition value.\");\r\n }*/\n }\n if (options_1.from == options_1.to) {\n // || options.to == (this.object)[options.property]){ this is not good, as dataItem.value is set to final at once, and we animate workingValue\n $array.remove(this.animationOptions, options_1);\n } else if (!$type.hasValue(options_1.from) || !(options_1.from instanceof Percent) && options_1.to instanceof Percent || options_1.from instanceof Percent && !(options_1.to instanceof Percent)) {\n // Initial value is undefined, treat it as static\n this.staticOptions.push(options_1);\n $array.remove(this.animationOptions, options_1);\n } else {\n // Use different update methods for different value types\n if ($type.isNumber(options_1.to)) {\n // Numeric value\n options_1.updateMethod = getProgressNumber;\n // Check if initial value is not Percent\n if (options_1.from instanceof Percent) {\n // It is. Let's convert it to pixel value\n // @todo Check if we can do this in a less hacky way\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"pixel\")];\n if (!isNaN(convertedFrom)) {\n options_1.from = convertedFrom;\n } else {\n this.staticOptions.push(options_1);\n $array.remove(this.animationOptions, options_1);\n }\n } else if (isNaN(options_1.from)) {\n // Static value\n this.staticOptions.push(options_1);\n $array.remove(this.animationOptions, options_1);\n }\n } else {\n // Check if maybe we have a color or percent value\n if (options_1.to instanceof Color) {\n // Yup - set resolved named color\n //options.from = $colors.stringToColor(options.from);\n if (options_1.from) {\n options_1.updateMethod = getProgressColor;\n } else {\n // Static value\n this.staticOptions.push(options_1);\n $array.remove(this.animationOptions, options_1);\n }\n } else if (options_1.to instanceof Percent) {\n // Percent\n options_1.updateMethod = getProgressPercent;\n // Check if the initial value is maybe in pixels\n if (!isNaN(options_1.from)) {\n // It is. Let's convert it\n // @todo Check if we can do this in a less hacky way\n var convertedFrom = this.object[getHybridProperty(options_1.property, \"relative\")];\n if (!isNaN(convertedFrom)) {\n options_1.from = percent(convertedFrom * 100);\n }\n }\n } else {\n // Static value\n this.staticOptions.push(options_1);\n $array.remove(this.animationOptions, options_1);\n }\n }\n }\n }\n // Apply static options (just in case they were reset by previous\n // animation loop)\n this.applyStaticOptions();\n if (this.events.isEnabled(\"animationstarted\")) {\n var event_1 = {\n type: \"animationstarted\",\n target: this,\n progress: this.progress\n };\n this.events.dispatchImmediately(\"animationstarted\", event_1);\n }\n this.update();\n // If duration is 0, just end animation\n if (this.duration === 0) {\n this.end();\n }\n return this;\n };\n /**\r\n * Sets loop count for the animation. If parameter is not a valid number the\r\n * animation will keep on looping indefinitely.\r\n *\r\n * @param count Number of times to loop animation\r\n * @return Animation\r\n */\n Animation.prototype.loop = function (count) {\n if (!$type.isNumber(count)) {\n count = Infinity;\n }\n this._loop = count;\n return this;\n };\n /**\r\n * Pauses animation.\r\n *\r\n * @return Animation\r\n */\n Animation.prototype.pause = function () {\n this._pause = true;\n if (this._delayTimeout) {\n this.removeDispose(this._delayTimeout);\n this._delayTimeout = null;\n }\n $array.remove(system.animations, this);\n $array.remove(this.object.animations, this);\n return this;\n };\n /**\r\n * Resumes paused animation.\r\n *\r\n * @return Animation\r\n */\n Animation.prototype.resume = function () {\n this._start();\n this._startTime = Date.now() - this._time;\n return this;\n };\n /**\r\n * Jumps to animation end. If animation is set to loop, this will start\r\n * another round of animation from start.\r\n *\r\n * @return Animation\r\n */\n Animation.prototype.end = function () {\n // Pause and complete the progress\n if (this._loop == 0) {\n this.pause();\n }\n this.setProgress(1);\n // Apply static options\n this.applyStaticOptions();\n if (this.events.isEnabled(\"animationended\")) {\n var event_2 = {\n type: \"animationended\",\n target: this,\n progress: this.progress\n };\n this.events.dispatchImmediately(\"animationended\", event_2);\n }\n // Check if we should loop\n if (this._loop > 0) {\n this._loop--;\n this.start();\n } else {\n this.stop();\n this._isFinished = true;\n }\n return this;\n };\n /**\r\n * Stops animation immediately leaving properties in their current values.\r\n */\n Animation.prototype.kill = function () {\n this.pause();\n this._isFinished = true;\n };\n /**\r\n * Returns indicator if this animation is finished or not\r\n *\r\n * @return Is finished?\r\n */\n Animation.prototype.isFinished = function () {\n return this._isFinished;\n };\n /**\r\n * Applies static options that can't be animated.\r\n */\n Animation.prototype.applyStaticOptions = function () {\n var _this = this;\n $array.each(this.staticOptions, function (options) {\n if (options.childObject) {\n options.childObject[options.property] = _this.progress == 1 ? options.to : options.from;\n } else {\n _this.object[options.property] = _this.progress == 1 ? options.to : options.from;\n }\n });\n };\n /**\r\n * Stops animation.\r\n *\r\n * When animation is stopped, the properties of the target object will remain\r\n * where they were at the moment when `stop()` was called.\r\n *\r\n * @param skipEvent Do not trigger `animationstopped` event\r\n * @return Animation\r\n */\n Animation.prototype.stop = function (skipEvent) {\n this.pause();\n if (!skipEvent) {\n if (this.events.isEnabled(\"animationstopped\")) {\n var event_3 = {\n type: \"animationstopped\",\n target: this,\n progress: this.progress\n };\n this.events.dispatchImmediately(\"animationstopped\", event_3);\n }\n }\n return this;\n };\n /**\r\n * Sets current progress and updates object's numeric and color values.\r\n *\r\n * @param progress Progress (0-1)\r\n */\n Animation.prototype.setProgress = function (progress) {\n var _this = this;\n this._time = this.duration * progress; // just in case we call this from outside\n $array.each(this.animationOptions, function (options) {\n if (options.updateMethod && $type.hasValue(options.from)) {\n var value = options.updateMethod(progress, options.from, options.to);\n if (options.childObject) {\n options.childObject[options.property] = value;\n } else {\n _this.object[options.property] = value;\n }\n }\n });\n this.progress = progress;\n if (this.events.isEnabled(\"animationprogress\")) {\n var event_4 = {\n type: \"animationprogress\",\n target: this,\n progress: this.progress\n };\n this.events.dispatchImmediately(\"animationprogress\", event_4);\n }\n system.requestFrame();\n };\n /**\r\n * Tracks and sets progress according to time or frames.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation\r\n */\n Animation.prototype.update = function () {\n if (!this._pause) {\n var progress = void 0;\n this._time = $math.fitToRange(Date.now() - this._startTime, 0, this.duration);\n var timeProgress = this._time / this.duration;\n progress = this.easing(timeProgress);\n if (this.duration == 0 || !$type.isNumber(progress) || timeProgress >= 1) {\n progress = 1;\n }\n this.setProgress(progress);\n if ($math.round(this._time / this.duration, 6) == 1) {\n this.end();\n }\n }\n return this;\n };\n Object.defineProperty(Animation.prototype, \"delayed\", {\n /**\r\n * Returns `true` if this animation is delayed.\r\n *\r\n * @readonly\r\n * @return [description]\r\n */\n get: function () {\n return this._delayTimeout ? true : false;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks other animations currently running on the same object and removes\r\n * overlapping options from those other animations that are contained in\r\n * this animation.\r\n *\r\n * This is needed to ensure that no two confurent animations step on each\r\n * other's toes by trying to animate the same property.\r\n */\n Animation.prototype.stopSameAnimations = function () {\n var _this = this;\n // stop animation of the same property\n // TODO make this more efficient\n // TODO don't copy the array\n $array.each($array.copy(this.object.animations), function (animation) {\n if (animation !== _this && !animation.delayed) {\n var killed_1 = [];\n $array.each(_this.animationOptions, function (newOptions) {\n $array.each(animation.animationOptions, function (oldOptions) {\n if (newOptions.property == oldOptions.property && newOptions.childObject == oldOptions.childObject) {\n killed_1.push(oldOptions);\n if (animation.animationOptions.length == 0) {\n animation.kill();\n }\n }\n });\n });\n $array.each(killed_1, function (oldOptions) {\n $array.remove(animation.animationOptions, oldOptions);\n });\n }\n });\n };\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n Animation.prototype.asFunction = function (field) {\n return field == \"easing\" || _super.prototype.asIs.call(this, field);\n };\n return Animation;\n}(BaseObjectEvents);\nexport { Animation };\n//# sourceMappingURL=Animation.js.map","/**\r\n * A collection of DOM-related functions.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Disposer } from \"./Disposer\";\nimport { readFrame, writeFrame } from \"./AsyncPending\";\nimport { options } from \"../Options\";\nimport * as $object from \"./Object\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n/**\r\n * SVG namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var SVGNS = \"http://www.w3.org/2000/svg\";\n/**\r\n * XML namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var XMLNS = \"http://www.w3.org/2000/xmlns/\";\n/**\r\n * XLINK namespace.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var XLINK = \"http://www.w3.org/1999/xlink\";\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\nexport function addEventListener(dom, type, listener, options) {\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\n //console.log(type, dom);\n dom.addEventListener(type, listener, options || false);\n return new Disposer(function () {\n dom.removeEventListener(type, listener, options || false);\n });\n}\n/**\r\n * Finds and returns an element reference using following logic:\r\n * * If we pass in an element instance, we just return it back.\r\n * * If we pass in a string, the function looks for an element with such id.\r\n * * If no element with such id is found, we grab the first element with a tag name like this.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element definition (reference, or id, or tag name)\r\n * @return Element reference\r\n * @todo Review this function as it seems pretty fuzzy and hacky\r\n */\nexport function getElement(el) {\n if ($type.isString(el)) {\n var e = document.getElementById(el);\n if (e == null) {\n e = document.getElementsByClassName(el)[0];\n }\n if (e instanceof HTMLElement) {\n return e;\n }\n } else if (el instanceof HTMLElement) {\n return el;\n }\n}\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\nexport function addClass(element, className) {\n if (!element) {\n return;\n }\n if (element.classList) {\n var classes = className.split(\" \");\n $array.each(classes, function (name) {\n element.classList.add(name);\n });\n } else {\n var currentClassName = element.getAttribute(\"class\");\n if (currentClassName) {\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\n return item !== className;\n }).join(\" \") + \" \" + className);\n } else {\n element.setAttribute(\"class\", className);\n }\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\") + \" \" + className;\n }\n}\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\nexport function removeClass(element, className) {\n if (!element) {\n return;\n }\n if (element.classList) {\n element.classList.remove(className);\n } else {\n var currentClassName = element.getAttribute(\"class\");\n if (currentClassName) {\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(function (item) {\n return item !== className;\n }).join(\" \"));\n }\n //element.className = element.className.replace(new RegExp(\"^\" + className + \"| \" + className), \"\");\n }\n}\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Still needed?\r\n */\nexport function setStyle(element, property, value) {\n element.style[property] = value;\n}\n/**\r\n * Gets the computed style value for an element.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport function getComputedStyle(element, property) {\n if (element.currentStyle) {\n return element.currentStyle[property];\n }\n return document.defaultView.getComputedStyle(element, null).getPropertyValue(property);\n}\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport function blur() {\n if (document.activeElement && document.activeElement != document.body) {\n if (document.activeElement.blur) {\n document.activeElement.blur();\n } else {\n var input = document.createElement(\"button\");\n input.style.position = \"fixed\";\n input.style.top = \"0px\";\n input.style.left = \"-10000px\";\n document.body.appendChild(input);\n input.focus();\n input.blur();\n document.body.removeChild(input);\n }\n }\n}\n/**\r\n * Tries to focus the element.\r\n *\r\n * @ignore Exlude from docs\r\n * @param element Element to focus\r\n */\nexport function focus(element) {\n if (element instanceof HTMLElement) {\n element.focus();\n } else {\n var input = document.createElement(\"input\");\n var fo = document.createElementNS(SVGNS, \"foreignObject\");\n fo.appendChild(input);\n element.appendChild(fo);\n input.focus();\n input.disabled = true;\n fo.remove();\n }\n /*if ((element).focus != undefined) {\r\n (element).focus();\r\n }\r\n else if (element instanceof SVGSVGElement) {\r\n // Not implemented\r\n // @todo implement focus fallback\r\n }*/\n}\n/**\r\n * Returns markup for the element including the element tag itself.\r\n * SVG elements do not support `outerHTML` so this functions applies of\r\n * a workaround which creates a new temporary wrapper, clones element and uses\r\n * wrapper's `innerHTML`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element to get full markup for\r\n * @return Markup\r\n * @deprecated Not in use anywhere\r\n */\nexport function outerHTML(element) {\n if (element.outerHTML) {\n return element.outerHTML;\n } else {\n var twrap = document.createElement(\"div\");\n var tnode = element.cloneNode(true);\n twrap.appendChild(tnode);\n var content = twrap.innerHTML;\n return content;\n }\n}\n/**\r\n * Checks if element is a valid DOM node.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Element\r\n * @return `true` if element is a valid DOM node\r\n */\nexport function isElement(el) {\n return el instanceof Object && el && el.nodeType === 1;\n}\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\nexport function contains(a, b) {\n var cursor = b;\n while (true) {\n if (a === cursor) {\n return true;\n } else if (cursor.parentNode == null) {\n // TODO better ShadowRoot detection\n if (cursor.host == null) {\n return false;\n } else {\n cursor = cursor.host;\n }\n } else {\n cursor = cursor.parentNode;\n }\n }\n}\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\nexport function getShadowRoot(a) {\n var cursor = a;\n while (true) {\n if (cursor.parentNode == null) {\n // TODO better ShadowRoot detection\n if (cursor.host != null) {\n return cursor;\n } else {\n return null;\n }\n } else {\n cursor = cursor.parentNode;\n }\n }\n}\n/**\r\n * Returns the root of the element (either the Document or the ShadowRoot)\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\nexport function getRoot(a) {\n // TODO replace with Node.prototype.getRootNode\n var owner = a.ownerDocument;\n var cursor = a;\n while (true) {\n if (cursor.parentNode == null) {\n // If the cursor is the document, or it is a ShadowRoot\n // TODO better ShadowRoot detection\n if (cursor === owner || cursor.host != null) {\n return cursor;\n } else {\n return null;\n }\n } else {\n cursor = cursor.parentNode;\n }\n }\n}\n/**\r\n * Gets the true target of the Event.\r\n *\r\n * This is needed to make events work with the shadow DOM.\r\n *\r\n * @param event Event\r\n * @return EventTarget\r\n */\nexport function eventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n return event.composedPath()[0];\n } else {\n return event.target;\n }\n}\n/**\r\n * Copies attributes from one element to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param source Element to copy attributes from\r\n * @param target Element to copy attributes to\r\n */\nexport function copyAttributes(source, target) {\n $array.each(source.attributes, function (attr) {\n // TODO what if it's null ?\n if (attr.value != null) {\n target.setAttribute(attr.name, attr.value);\n }\n });\n}\n/**\r\n * [fixPixelPerfect description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param el Element\r\n */\nexport function fixPixelPerfect(el) {\n readFrame(function () {\n // sometimes IE doesn't like this\n // TODO figure out a way to remove this\n try {\n var rect = el.getBoundingClientRect();\n var left_1 = rect.left - Math.round(rect.left);\n var top_1 = rect.top - Math.round(rect.top);\n if (left_1 !== 0) {\n writeFrame(function () {\n el.style.left = left_1 + \"px\";\n });\n }\n if (top_1 !== 0) {\n writeFrame(function () {\n el.style.top = top_1 + \"px\";\n });\n }\n } catch (e) {}\n });\n}\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar rootStylesheet;\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\nfunction getStylesheet(element) {\n if (element == null) {\n if (!$type.hasValue(rootStylesheet)) {\n // TODO use createElementNS ?\n var e = document.createElement(\"style\");\n e.type = \"text/css\";\n if (options.nonce != \"\") {\n e.setAttribute(\"nonce\", options.nonce);\n }\n document.head.appendChild(e);\n rootStylesheet = e.sheet;\n }\n return rootStylesheet;\n } else {\n // TODO use createElementNS ?\n var e = document.createElement(\"style\");\n e.type = \"text/css\";\n if (options.nonce != \"\") {\n e.setAttribute(\"nonce\", options.nonce);\n }\n element.appendChild(e);\n return e.sheet;\n }\n}\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\nfunction appendStylesheet(root, selector) {\n var index = root.cssRules.length;\n root.insertRule(selector + \"{}\", index);\n return root.cssRules[index];\n}\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\nvar StyleRule = /** @class */function (_super) {\n __extends(StyleRule, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\n function StyleRule(element, selector, styles) {\n var _this = this;\n var root = getStylesheet(element);\n // TODO test this\n _this = _super.call(this, function () {\n // TODO a bit hacky\n var index = $array.indexOf(root.cssRules, _this._rule);\n if (index === -1) {\n throw new Error(\"Could not dispose StyleRule\");\n } else {\n // TODO if it's empty remove it from the DOM ?\n root.deleteRule(index);\n }\n }) || this;\n _this._rule = appendStylesheet(root, selector);\n $object.each(styles, function (key, value) {\n _this.setStyle(key, value);\n });\n return _this;\n }\n Object.defineProperty(StyleRule.prototype, \"selector\", {\n /**\r\n * @return CSS selector\r\n */\n get: function () {\n return this._rule.selectorText;\n },\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\n set: function (selector) {\n this._rule.selectorText = selector;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\n StyleRule.prototype._setVendorPrefixName = function (name, value) {\n var style = this._rule.style;\n style.setProperty(\"-webkit-\" + name, value, \"\");\n style.setProperty(\"-moz-\" + name, value, \"\");\n style.setProperty(\"-ms-\" + name, value, \"\");\n style.setProperty(\"-o-\" + name, value, \"\");\n style.setProperty(name, value, \"\");\n };\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\n StyleRule.prototype.setStyle = function (name, value) {\n if (name === \"transition\") {\n this._setVendorPrefixName(name, value);\n } else {\n this._rule.style.setProperty(name, value, \"\");\n }\n };\n return StyleRule;\n}(Disposer);\nexport { StyleRule };\n/**\r\n * An internal counter for unique style ids.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar styleId = 0;\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar StyleClass = /** @class */function (_super) {\n __extends(StyleClass, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param styles An object of style attribute - value pairs\r\n * @param name Class name\r\n */\n function StyleClass(element, styles, name) {\n var _this = this;\n var className = !$type.hasValue(name)\n // TODO generate the classname randomly\n ? \"__style_\" + ++styleId + \"__\" : name;\n _this = _super.call(this, element, \".\" + className, styles) || this;\n _this._className = className;\n return _this;\n }\n Object.defineProperty(StyleClass.prototype, \"className\", {\n /**\r\n * @return Class name\r\n */\n get: function () {\n return this._className;\n },\n /**\r\n * Class name.\r\n *\r\n * @param name Class name\r\n */\n set: function (name) {\n this._className = name;\n this.selector = \".\" + name;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts the whole class to\r\n * @ignore Exclude from docs\r\n */\n StyleClass.prototype.toString = function () {\n return this._className;\n };\n return StyleClass;\n}(StyleRule);\nexport { StyleClass };\nexport function ready(f) {\n if (document.readyState !== \"loading\") {\n f();\n } else {\n var listener_1 = function () {\n if (document.readyState !== \"loading\") {\n document.removeEventListener(\"readystatechange\", listener_1);\n f();\n }\n };\n document.addEventListener(\"readystatechange\", listener_1);\n }\n}\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\nexport function findFont(element) {\n // Check if element has styles set\n var font = getComputedStyle(element, \"font-family\");\n if (!font) {\n // Completely transparent. Look for a parent\n var parent_1 = element.parentElement || element.parentNode;\n if (parent_1) {\n return findFont(parent_1);\n } else {\n return undefined;\n }\n } else {\n return font;\n }\n}\n/**\r\n * Returns a font fmaily name for the element (directly set or\r\n * computed/inherited).\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Font family\r\n */\nexport function findFontSize(element) {\n // Check if element has styles set\n var font = getComputedStyle(element, \"font-size\");\n if (!font) {\n // Completely transparent. Look for a parent\n var parent_2 = element.parentElement || element.parentNode;\n if (parent_2) {\n return findFontSize(parent_2);\n } else {\n return undefined;\n }\n } else {\n return font;\n }\n}\n/**\r\n * Checks whether element is not visible, whether directly or via its\r\n * ascendants.\r\n *\r\n * @param element Target element\r\n * @return Hidden?\r\n */\nexport function isHidden(element) {\n return element.offsetParent === null;\n}\n/**\r\n * Checks wthether element is in the current viewport.\r\n *\r\n * @since 2.5.5\r\n * @param el Element\r\n * @return Within viewport?\r\n */\nexport function isElementInViewport(el, viewportTarget) {\n // Get position data of the element\n var rect = el.getBoundingClientRect();\n // Convert to array\n var targets = $type.isArray(viewportTarget) ? viewportTarget : viewportTarget ? [viewportTarget] : [];\n // Should we measure against specific viewport element?\n if (targets.length) {\n for (var i = 0; i < targets.length; i++) {\n var target = targets[i];\n // Check if viewport itself is visible\n if (!isElementInViewport(target)) {\n return false;\n }\n // Check if element is visible within the viewport\n var viewportRect = target.getBoundingClientRect();\n if (rect.top >= 0 && rect.left >= 0 && rect.top <= viewportRect.top + viewportRect.height && rect.left <= viewportRect.left + viewportRect.width) {\n return true;\n }\n }\n return false;\n }\n return rect.top >= 0 && rect.left >= 0 && rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth);\n}\n//# sourceMappingURL=DOM.js.map","/**\r\n * [[AMElement]] represents any SVG element and related functionality.\r\n */\nimport * as $dom from \"../utils/DOM\";\nimport * as $object from \"../utils/Object\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for all SVG elements. Provides low-level DOM functionality.\r\n *\r\n * All visual elements extend this class.\r\n */\nvar AMElement = /** @class */function () {\n /**\r\n * Constructor creates a new element or uses the one that was passed in.\r\n *\r\n * @param element Element reference node type\r\n */\n function AMElement(element) {\n /**\r\n * Indicates if the element was already disposed.\r\n */\n this._isDisposed = false;\n /**\r\n * Current X coordinate.\r\n */\n this._x = 0;\n /**\r\n * Current Y coordinate.\r\n */\n this._y = 0;\n /**\r\n *\r\n */\n this._rotationY = 0;\n /**\r\n *\r\n */\n this._rotationX = 0;\n /**\r\n * Current rotation.\r\n */\n this._rotation = 0;\n /**\r\n * Current scale.\r\n */\n this._scale = 1;\n if (typeof element === \"string\") {\n this.node = document.createElementNS($dom.SVGNS, element);\n } else {\n this.node = element;\n }\n }\n /**\r\n * Removes element's node from DOM.\r\n */\n AMElement.prototype.removeNode = function () {\n if (this.node) {\n if (this.node.parentNode) {\n this.node.parentNode.removeChild(this.node);\n }\n }\n };\n Object.defineProperty(AMElement.prototype, \"transformString\", {\n /**\r\n * Returns `transform` attribute of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Transform attribute value\r\n */\n get: function () {\n if (this.node) {\n return this._transformString;\n /*\r\n const value = this.node.getAttribute(\"transform\");\r\n if (value !== null) {\r\n return value;\r\n }*/\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Appply position, rotation and scale properties via elemen's `transform`\r\n * property\r\n *\r\n * @ignore Exclude from docs\r\n */\n AMElement.prototype.transform = function () {\n var transfromString = \"translate(\" + this._x + \",\" + this._y + \")\";\n if (this._scale != 1) {\n transfromString += (transfromString ? \" \" : \"\") + \"scale(\" + this._scale + \")\";\n }\n if (this._rotation != 0) {\n var rotateString = \"rotate(\" + this._rotation + \")\";\n if (this._rotationX && this._rotationY) {\n rotateString = \"rotate(\" + this._rotation + \" \" + this._rotationX + \" \" + this._rotationY + \")\";\n }\n transfromString += (transfromString ? \" \" : \"\") + rotateString;\n }\n this._transformString = transfromString;\n this.node.setAttribute(\"transform\", transfromString);\n };\n /**\r\n * Returns bounding box of the element.\r\n *\r\n * ATTENTION: Bounding box calculations are extremely costly so should be\r\n * used sparingly and cached whenever possible.\r\n *\r\n * @return Bounding rectangle\r\n */\n AMElement.prototype.getBBox = function () {\n var bbox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n // FF would fail if getBBox() is called without node added to parent\n if (this.node && this.node.parentNode) {\n try {\n // again for ff. TODO: check if this doesn't slow down\n var svgbbox = this.node.getBBox();\n bbox.x = svgbbox.x;\n bbox.y = svgbbox.y;\n bbox.width = svgbbox.width;\n bbox.height = svgbbox.height;\n } catch (err) {}\n }\n return bbox;\n };\n /**\r\n * Moves the element to new coordinates.\r\n *\r\n * @param x Target X\r\n * @param y Target Y\r\n */\n AMElement.prototype.moveTo = function (point) {\n if (point) {\n var x = point.x;\n var y = point.y;\n if (this._x != x || this._y != y) {\n this._x = x;\n this._y = y;\n this.transform();\n }\n }\n };\n Object.defineProperty(AMElement.prototype, \"content\", {\n /**\r\n * Returns element's contents as SVG markup.\r\n *\r\n * @return Contents\r\n */\n get: function () {\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\n return this.node.innerHTML || \"\";\n },\n /**\r\n * Element's SVG contents.\r\n *\r\n * @param value Contents\r\n */\n set: function (value) {\n // @todo Do not use `innerHTML` as this is not reliable and will not work on all browsers\n this.node.innerHTML = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"textContent\", {\n /**\r\n * @return Text contents\r\n */\n get: function () {\n return this.node.textContent || \"\";\n },\n /**\r\n * Text contents of the SVG element.\r\n *\r\n * @param value Text contents\r\n */\n set: function (value) {\n this.node.textContent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"x\", {\n /**\r\n * @return X coordinate (px)\r\n */\n get: function () {\n return this._x;\n },\n /**\r\n * Element's X position in pixels.\r\n *\r\n * @param value X coordinate (px)\r\n */\n set: function (value) {\n if (this._x != value) {\n this._x = value;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"y\", {\n /**\r\n * @return Y coordinate (px)\r\n */\n get: function () {\n return this._y;\n },\n /**\r\n * Element's Y position in pixels.\r\n *\r\n * @param value Y coordinate (px)\r\n */\n set: function (value) {\n if (this._y != value) {\n this._y = value;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"rotation\", {\n /**\r\n * @return Rotation\r\n */\n get: function () {\n return this._rotation;\n },\n /**\r\n * Element's rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\n set: function (angle) {\n if (this._rotation != angle) {\n this._rotation = angle;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"rotationX\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n return this._rotationX;\n },\n /**\r\n * @ignore\r\n */\n set: function (x) {\n if (this._rotationX != x) {\n this._rotationX = x;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"rotationY\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n return this._rotationY;\n },\n /**\r\n * @ignore\r\n */\n set: function (y) {\n if (this._rotationY != y) {\n this._rotationY = y;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AMElement.prototype, \"scale\", {\n /**\r\n * @return Scale\r\n */\n get: function () {\n return this._scale;\n },\n /**\r\n * Element's scale where 1 is original size.\r\n *\r\n * Setting to 0.5 will reduce element's size by 50%, 2 will make element\r\n * twice as large, etc.\r\n *\r\n * @param value Scale\r\n */\n set: function (value) {\n if (this._scale != value) {\n this._scale = value;\n this.transform();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Removes an attribute from element.\r\n *\r\n * @param attribute Attribute to remove\r\n */\n AMElement.prototype.removeAttr = function (attribute) {\n this.node.removeAttribute(attribute);\n };\n /**\r\n * Sets a set of attributes on a element.\r\n *\r\n * @param attributes An object with attribute names (key) and values\r\n * @return The same element\r\n */\n AMElement.prototype.attr = function (attributes) {\n var _this = this;\n $object.each(attributes, function (attributeName, attributeValue) {\n if (!$type.hasValue(attributeValue)) {\n _this.node.removeAttribute(attributeName);\n } else {\n // this is for performance testing\n //if(attributeValue == this.node.getAttribute(attributeName)){\n //\tconsole.log(attributeName, attributeValue)\n //}\n _this.node.setAttribute(attributeName, attributeValue);\n }\n });\n return this;\n };\n /**\r\n * Returns a value of a node attribute.\r\n *\r\n * @param attribute Attribute name\r\n * @return Attribute value\r\n */\n AMElement.prototype.getAttr = function (attribute) {\n return this.node.getAttribute(attribute);\n };\n /**\r\n * Sets a single attribute of the element's node using namesspace.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @param value Value\r\n * @return The same element\r\n */\n AMElement.prototype.attrNS = function (ns, attribute, value) {\n this.node.setAttributeNS(ns, attribute, value);\n return this;\n };\n /**\r\n * Returns a namespaced attribute value from node.\r\n *\r\n * @param ns Namespace\r\n * @param attribute Attribute\r\n * @return Attribute value\r\n */\n AMElement.prototype.getAttrNS = function (ns, attribute) {\n return this.node.getAttributeNS(ns, attribute);\n };\n /**\r\n * Removes `style` attribute from node.\r\n *\r\n * @param attribute Attribute to remove\r\n */\n AMElement.prototype.removeStyle = function (attribute) {\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\n this.node.style[attribute] = null;\n delete this.node.style[attribute];\n };\n /**\r\n * Returns style attribute value.\r\n *\r\n * @param attribute Style attribute value\r\n * @return Attribute value\r\n */\n AMElement.prototype.getStyle = function (attribute) {\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\n return this.node.style[attribute];\n };\n /**\r\n * Adds style attributes to element's node.\r\n *\r\n * @param attributes Object containing attribute: value pairs\r\n * @return The same element\r\n */\n AMElement.prototype.addStyle = function (attributes) {\n var _this = this;\n // @todo Review because it's a bit messy and maybe not needed (pratically not used)\n $object.each(attributes, function (attributeName, attributeValue) {\n if (!$type.hasValue(attributeValue)) {\n _this.removeStyle(attributeName);\n } else {\n _this.node.style[attributeName] = attributeValue;\n }\n });\n return this;\n };\n /**\r\n * Adds a class to element.\r\n *\r\n * @param name Class name\r\n */\n AMElement.prototype.addClass = function (name) {\n $dom.addClass(this.node, name);\n };\n /**\r\n * Removes a class from element.\r\n *\r\n * @param name Class name\r\n */\n AMElement.prototype.removeClass = function (name) {\n $dom.removeClass(this.node, name);\n };\n /**\r\n * Sets a class name on element.\r\n *\r\n * @param name Class name\r\n */\n AMElement.prototype.setClass = function (name) {\n this.node.setAttribute(\"class\", name);\n };\n /**\r\n * Removes all element's child nodes, basically leaving it empty.\r\n */\n AMElement.prototype.removeChildNodes = function () {\n // remove all children\n while (this.node.childNodes.length > 0) {\n this.node.removeChild(this.node.firstChild);\n }\n };\n /**\r\n * Was this element already been disposed?\r\n *\r\n * @return Disposed?\r\n */\n AMElement.prototype.isDisposed = function () {\n return this._isDisposed;\n };\n /**\r\n * Disposes element.\r\n */\n AMElement.prototype.dispose = function () {\n this.removeNode();\n };\n return AMElement;\n}();\nexport { AMElement };\n//# sourceMappingURL=AMElement.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AMElement } from \"./AMElement\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates an SVG `` element.\r\n *\r\n * SVG groups are used for elements that need more elements just one.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g} About `` element\r\n */\nvar Group = /** @class */function (_super) {\n __extends(Group, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param elementName Element type (should be \"g\")\r\n */\n function Group(elementName) {\n return _super.call(this, elementName) || this;\n }\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\n Group.prototype.add = function (element) {\n if (element) {\n this.node.appendChild(element.node);\n }\n };\n /**\r\n * Adds an element to group.\r\n *\r\n * This will manipulate DOM. `element` will be physically moved into group.\r\n *\r\n * @param element Element\r\n */\n Group.prototype.addToBack = function (element) {\n if (element) {\n var first = this.node.childNodes[0];\n if (first) {\n if (first != element.node) {\n this.node.insertBefore(element.node, first);\n }\n } else {\n this.node.appendChild(element.node);\n }\n }\n };\n /**\r\n * Removes the `element` from group.\r\n *\r\n * Please note that this will not dispose the element itself, it will just\r\n * remove it from the group.\r\n *\r\n * @param element Element\r\n */\n Group.prototype.removeElement = function (element) {\n // todo: not sure about the speed, need to investigate, maybe it's faster to check if node is a child\n if (element) {\n try {\n if (element.node && element.node.parentNode == this.node) {\n this.node.removeChild(element.node);\n }\n } catch (err) {}\n }\n };\n /**\r\n * Checks if this group already has the child element added\r\n *\r\n * @param element\r\n * @return {boolean}\r\n */\n Group.prototype.hasChild = function (element) {\n for (var i = 0; i < this.node.childNodes.length; i++) {\n if (this.node.childNodes[i] == element.node) {\n return true;\n }\n }\n return false;\n };\n Object.defineProperty(Group.prototype, \"content\", {\n /**\r\n * @return SVG markup\r\n */\n get: function () {\n return this.node.innerHTML;\n },\n /**\r\n * Content of the group element.\r\n *\r\n * Can be used to add a lot of proprietary SVG markup into group.\r\n *\r\n * @param value SVG markup\r\n */\n set: function (value) {\n this.node.innerHTML = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Removes all children from the group.\r\n */\n Group.prototype.removeChildren = function () {\n if (this.node.childNodes) {\n while (this.node.childNodes.length > 0) {\n var childNode = this.node.firstChild;\n if (childNode && childNode.parentNode) {\n childNode.parentNode.removeChild(childNode);\n }\n }\n }\n };\n return Group;\n}(AMElement);\nexport { Group };\n//# sourceMappingURL=Group.js.map","/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { registry } from \"../Registry\";\nimport { color } from \"./Color\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This module contains a version of ColorSet that can (and should) be used for\r\n * coloring UI elements.\r\n *\r\n * The main difference from the basic [[ColorSet]] is that instead of sequenced\r\n * colors, it uses a concept of named colors.\r\n *\r\n * This way, every element in the UI can extract an exact color theme author\r\n * meant for the specific purpose, like strokes, backgrounds, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\nvar InterfaceColorSet = /** @class */function (_super) {\n __extends(InterfaceColorSet, _super);\n /**\r\n * Constructor\r\n */\n function InterfaceColorSet() {\n var _this = _super.call(this) || this;\n /**\r\n * Maps the list of purposes (like \"stroke\") to an index of color of the\r\n * color set.\r\n */\n _this._purposes = {\n stroke: color(\"#e5e5e5\"),\n fill: color(\"#f3f3f3\"),\n primaryButton: color(\"#6794dc\"),\n primaryButtonHover: color(\"#6771dc\"),\n primaryButtonDown: color(\"#68dc75\"),\n primaryButtonActive: color(\"#68dc75\"),\n primaryButtonText: color(\"#FFFFFF\"),\n primaryButtonStroke: color(\"#FFFFFF\"),\n secondaryButton: color(\"#d9d9d9\"),\n secondaryButtonHover: color(\"#d9d9d9\").brighten(-0.25),\n secondaryButtonDown: color(\"#d9d9d9\").brighten(-0.35),\n secondaryButtonActive: color(\"#d9d9d9\").brighten(0.35),\n secondaryButtonText: color(\"#000000\"),\n secondaryButtonStroke: color(\"#FFFFFF\"),\n grid: color(\"#000000\"),\n background: color(\"#ffffff\"),\n alternativeBackground: color(\"#000000\"),\n text: color(\"#000000\"),\n alternativeText: color(\"#FFFFFF\"),\n disabledBackground: color(\"#999999\"),\n positive: color(\"#67dc75\"),\n negative: color(\"#dc6788\")\n };\n _this.className = \"InterfaceColorSet\";\n _this.applyTheme();\n return _this;\n }\n InterfaceColorSet.prototype.debug = function () {};\n /**\r\n * Returns a color to be used for the specific purpose.\r\n *\r\n * ```TypeScript\r\n * let uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n * ```JavaScript\r\n * var uicolors = new am4core.InterfaceColorSet();\r\n * console.log(uicolors.getFor(\"stroke\"));\r\n * ```\r\n *\r\n * @param purpose Color use purpuse\r\n * @return Color\r\n */\n InterfaceColorSet.prototype.getFor = function (purpose) {\n return this._purposes[purpose];\n };\n /**\r\n * Sets color to be used for the specific purpose.\r\n *\r\n * @param purpose Color use purpose\r\n * @param color Color\r\n */\n InterfaceColorSet.prototype.setFor = function (purpose, color) {\n this._purposes[purpose] = color;\n };\n return InterfaceColorSet;\n}(BaseObject);\nexport { InterfaceColorSet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"InterfaceColorSet\"] = InterfaceColorSet;\n//# sourceMappingURL=InterfaceColorSet.js.map","import { StyleRule } from \"../utils/DOM\";\nimport { Dictionary } from \"../utils/Dictionary\";\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\nvar rules = new Dictionary();\n/**\r\n * Default CSS for Popup.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix for CSS classes\r\n * @return Disposer for the CSS definition\r\n */\nexport default function (element, prefix) {\n if (!prefix) {\n prefix = \"ampopup\";\n }\n var cs = new InterfaceColorSet();\n var fg = cs.getFor(\"text\");\n var bg = cs.getFor(\"background\");\n bg.alpha = 0.8;\n var abg = cs.getFor(\"alternativeBackground\");\n abg.alpha = 0.05;\n var counter = rules.insertKeyIfEmpty(prefix, function () {\n var disposer = new MultiDisposer([new StyleRule(element, \".\" + prefix, {\n //\"width\": \"100%\",\n //\"height\": \"100%\",\n \"overflow\": \"visible\",\n \"position\": \"absolute\",\n \"top\": \"0\",\n \"left\": \"0\",\n \"z-index\": \"2000\"\n }), new StyleRule(element, \".\" + prefix + \"-curtain\", {\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"position\": \"absolute\",\n \"top\": \"0\",\n \"left\": \"0\",\n \"z-index\": \"2001\",\n \"background-color\": bg.hex,\n \"opacity\": \"0.5\"\n }), new StyleRule(element, \".\" + prefix + \"-header\", {\n \"display\": \"block\",\n \"width\": \"100%\",\n \"min-height\": \"1.8em\",\n \"background\": abg.rgba\n }), new StyleRule(element, \".\" + prefix + \"-title\", {\n \"font-weight\": \"bold\",\n \"font-size\": \"110%\",\n \"padding\": \"0.5em 1.2em 0.5em 1em\"\n }), new StyleRule(element, \".\" + prefix + \"-content\", {\n /*\"width\": \"100%\",\r\n \"height\": \"100%\",*/\n // \"padding\": \"2em 1em 1em 1em\",\n \"background\": bg.hex,\n \"background-color\": bg.rgba,\n \"color\": fg.hex,\n \"display\": \"inline-block\",\n \"position\": \"absolute\",\n \"top\": \"0\",\n \"left\": \"0\",\n \"max-width\": \"90%\",\n \"max-height\": \"90%\",\n \"overflow\": \"auto\",\n \"z-index\": \"2002\"\n }), new StyleRule(element, \".\" + prefix + \"-inside\", {\n \"padding\": \"1em\"\n }), new StyleRule(element, \".\" + prefix + \"-close\", {\n \"display\": \"block\",\n \"position\": \"absolute\",\n \"top\": \"0.3em\",\n \"right\": \"0.3em\",\n \"background-color\": \"rgb(100, 100, 100)\",\n \"background\": \"rgba(100, 100, 100, 0.1) url(data:image/svg+xml;charset=utf-8;base64,PHN2ZyBoZWlnaHQ9IjUxMiIgdmVyc2lvbj0iMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHdpZHRoPSI1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQ0NS4yIDEwOS4ybC00Mi40LTQyLjRMMjU2IDIxMy42IDEwOS4yIDY2LjhsLTQyLjQgNDIuNEwyMTMuNiAyNTYgNjYuOCA0MDIuOGw0Mi40IDQyLjRMMjU2IDI5OC40bDE0Ni44IDE0Ni44IDQyLjQtNDIuNEwyOTguNCAyNTYiLz48L3N2Zz4=) no-repeat center\",\n \"background-size\": \"80%\",\n \"width\": \"1.2em\",\n \"height\": \"1.2em\",\n \"cursor\": \"pointer\"\n })]);\n return new CounterDisposer(function () {\n rules.removeKey(prefix);\n disposer.dispose();\n });\n });\n return counter.increment();\n}\n//# sourceMappingURL=PopupCSS.js.map","import { __extends } from \"tslib\";\nimport { TargetedEventDispatcher } from \"../utils/EventDispatcher\";\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\n/**\r\n * Represents an Event Dispatcher for [[InteractionObject]].\r\n *\r\n * Besides regular [[EventDispatcher]] functionality it adds new events with\r\n * direct application to DOM nodes. Primarily used to handle keyboard events,\r\n * but can turn into something else moving forward.\r\n */\nvar InteractionObjectEventDispatcher = /** @class */function (_super) {\n __extends(InteractionObjectEventDispatcher, _super);\n function InteractionObjectEventDispatcher() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Holds a list of Disposers for DOM events added.\r\n */\n _this._domEvents = {};\n return _this;\n }\n /**\r\n * Adds a DOM event and returns Disposer.\r\n *\r\n * @return Disposer\r\n */\n InteractionObjectEventDispatcher.prototype._addDOMEvent = function (type, key, listener, context) {\n var _this = this;\n if (!this._domEvents[type]) {\n var callback_1 = function (e) {\n listener.call(context, key, e);\n };\n this.target.element.addEventListener(type, callback_1, false);\n this._domEvents[type] = new CounterDisposer(function () {\n delete _this._domEvents[type];\n _this.target.element.removeEventListener(type, callback_1, false);\n });\n }\n return this._domEvents[type].increment();\n };\n InteractionObjectEventDispatcher.prototype._dispatchKeyboardEvent = function (key, ev) {\n // TODO use this.dispatchImmediately ?\n if (this.target.events.isEnabled(key)) {\n this.target.events.dispatchImmediately(key, {\n type: key,\n target: this.target,\n event: ev\n });\n }\n };\n InteractionObjectEventDispatcher.prototype._on = function (once, type, callback, context, shouldClone, dispatch) {\n var info = _super.prototype._on.call(this, once, type, callback, context, shouldClone, dispatch);\n var disposers = [info.disposer];\n switch (type) {\n case \"hit\":\n case \"doublehit\":\n case \"rightclick\":\n case \"down\":\n case \"up\":\n this.target.clickable = true;\n break;\n case \"drag\":\n case \"dragstart\":\n case \"dragstop\":\n this.target.draggable = true;\n break;\n case \"track\":\n this.target.trackable = true;\n break;\n case \"resize\":\n this.target.resizable = true;\n break;\n case \"swipe\":\n case \"swipeleft\":\n case \"swiperight\":\n this.target.swipeable = true;\n break;\n case \"wheel\":\n case \"wheelup\":\n case \"wheeldown\":\n case \"wheelleft\":\n case \"wheelright\":\n this.target.wheelable = true;\n break;\n case \"over\":\n case \"out\":\n this.target.hoverable = true;\n break;\n case \"focus\":\n case \"blur\":\n case \"focusin\":\n case \"focusout\":\n this.target.focusable = true;\n break;\n case \"keydown\":\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\n break;\n case \"keyup\":\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\n break;\n case \"keypress\":\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\n break;\n case \"input\":\n disposers.push(this._addDOMEvent(type, type, this._dispatchKeyboardEvent, this));\n break;\n }\n info.disposer = new MultiDisposer(disposers);\n return info;\n };\n return InteractionObjectEventDispatcher;\n}(TargetedEventDispatcher);\nexport { InteractionObjectEventDispatcher };\n//# sourceMappingURL=InteractionObjectEvents.js.map","/**\r\n * Interaction Object module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { InteractionObjectEventDispatcher } from \"./InteractionObjectEvents\";\nimport { BaseObjectEvents } from \"../Base\";\nimport { List } from \"../utils/List\";\nimport { Dictionary, DictionaryDisposer } from \"../utils/Dictionary\";\nimport { getInteraction } from \"./Interaction\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * Re-exports\r\n */\nexport { InteractionObjectEventDispatcher };\n/**\r\n * Interaction object represents an object that is subject for any kind of\r\n * interaction with it with any input devices: mouse, touch or keyboard.\r\n *\r\n * Any DOM element can be wrapped into an Internaction object which in turn\r\n * enables attaching various interaction events to it, such as: hit, drag,\r\n * swipe, etc.\r\n *\r\n * To create an [[InteractionObject]] out of a [[Sprite]], use:\r\n * `interaction.getInteractionFromSprite(sprite: Sprite)`\r\n *\r\n * To create an [[InteractionObject]] out of a a regular element:\r\n * `interaction.getInteraction(element: HTMLElement)`\r\n */\nvar InteractionObject = /** @class */function (_super) {\n __extends(InteractionObject, _super);\n /**\r\n * Constructor\r\n */\n function InteractionObject(element) {\n var _this = _super.call(this) || this;\n /**\r\n * @ignore\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\n _this._eventDispatcher = new InteractionObjectEventDispatcher(_this);\n /**\r\n * Collection of Disposers for various events. (so that those get disposed\r\n * when the whole InteractionObject is disposed)\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.eventDisposers = new Dictionary();\n /**\r\n * A [[Dictionary]] that holds temporarily replaced original style values for\r\n * HTML element, so that they can be restored when the functionality that\r\n * replaced them is done.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.replacedStyles = new Dictionary();\n _this._clickable = false;\n _this._contextMenuDisabled = false;\n _this._hoverable = false;\n _this._trackable = false;\n _this._draggable = false;\n _this._swipeable = false;\n _this._resizable = false;\n _this._wheelable = false;\n _this._inert = false;\n /**\r\n * Is element currently hovered?\r\n */\n _this._isHover = false;\n /**\r\n * Was this element hovered via pointer or is it just \"pretenting\" to be\r\n * hovered.\r\n *\r\n * @ignore\r\n */\n _this.isRealHover = false;\n /**\r\n * Is the element hovered by touch pointer?\r\n */\n _this._isHoverByTouch = false;\n /**\r\n * Has element got any pointers currently pressing down on it?\r\n */\n _this._isDown = false;\n /**\r\n * Does element have focus?\r\n */\n _this._isFocused = false;\n /**\r\n * Is element currently protected from touch interactions?\r\n */\n _this._isTouchProtected = false;\n /**\r\n * Options used for inertia functionality.\r\n */\n _this._inertiaOptions = new Dictionary();\n /**\r\n * A collection of different inertia types, currently playing out.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.inertias = new Dictionary();\n /**\r\n * Click/tap options.\r\n */\n _this._hitOptions = {};\n /**\r\n * Hover options.\r\n */\n _this._hoverOptions = {};\n /**\r\n * Swipe gesture options.\r\n */\n _this._swipeOptions = {};\n /**\r\n * Keyboard options.\r\n */\n _this._keyboardOptions = {};\n /**\r\n * Mouse options.\r\n */\n _this._mouseOptions = {};\n /**\r\n * Cursor options.\r\n */\n _this._cursorOptions = {\n \"defaultStyle\": [{\n \"property\": \"cursor\",\n \"value\": \"default\"\n }]\n };\n _this._disposers.push(_this._eventDispatcher);\n _this._element = element;\n _this.className = \"InteractionObject\";\n _this._disposers.push(new DictionaryDisposer(_this.inertias));\n _this._disposers.push(new DictionaryDisposer(_this.eventDisposers));\n _this.applyTheme();\n return _this;\n }\n ;\n Object.defineProperty(InteractionObject.prototype, \"events\", {\n /**\r\n * An [[EventDispatcher]] instance which holds events for this object\r\n */\n get: function () {\n return this._eventDispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"isHover\", {\n /**\r\n * @return Hovered?\r\n */\n get: function () {\n return this._isHover;\n },\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\n set: function (value) {\n if (this.isHover != value) {\n this._isHover = value;\n if (value) {\n getInteraction().overObjects.moveValue(this);\n } else {\n this.isRealHover = false;\n getInteraction().overObjects.removeValue(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"isHoverByTouch\", {\n /**\r\n * @return Hovered?\r\n */\n get: function () {\n return this._isHoverByTouch;\n },\n /**\r\n * Indicates if this element is currently hovered.\r\n *\r\n * @param value Hovered?\r\n */\n set: function (value) {\n if (this.isHoverByTouch != value) {\n this._isHoverByTouch = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"overPointers\", {\n /**\r\n * A list of pointers currently over the element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List if pointers currently hovering the element\r\n */\n get: function () {\n if (!this._overPointers) {\n this._overPointers = new List();\n }\n return this._overPointers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"isDown\", {\n /**\r\n * @return Has down pointers?\r\n */\n get: function () {\n return this._isDown;\n },\n /**\r\n * Indicates if this element has currently any pointers pressing on it.\r\n *\r\n * @param value Has down pointers?\r\n */\n set: function (value) {\n if (this.isDown != value) {\n this._isDown = value;\n if (value) {\n getInteraction().downObjects.moveValue(this);\n } else {\n getInteraction().downObjects.removeValue(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"downPointers\", {\n /**\r\n * A list of pointers currently pressing down on this element.\r\n *\r\n * @see {@link Pointer}\r\n * @return List of down pointers\r\n */\n get: function () {\n if (!this._downPointers) {\n this._downPointers = new List();\n }\n return this._downPointers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"isFocused\", {\n /**\r\n * @return Focused?\r\n */\n get: function () {\n return this._isFocused;\n },\n /**\r\n * Indicates if this element is currently focused.\r\n *\r\n * @param value Focused?\r\n */\n set: function (value) {\n if (this.isFocused != value) {\n this._isFocused = value;\n if (value) {\n getInteraction().focusedObject = this;\n } else {\n getInteraction().focusedObject = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"isTouchProtected\", {\n /**\r\n * @ignore\r\n * @return Touch protected?\r\n */\n get: function () {\n return this._isTouchProtected;\n },\n /**\r\n * Indicates if this element is currently being protected from touch actions.\r\n *\r\n * @ignore\r\n * @param value Touch protected?\r\n */\n set: function (value) {\n if (this._isTouchProtected != value) {\n this._isTouchProtected = value;\n if (value) {\n getInteraction().unprepElement(this);\n } else if (this.draggable || this.swipeable || this.trackable || this.resizable) {\n getInteraction().prepElement(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"clickable\", {\n /**\r\n * @return Clickable?\r\n */\n get: function () {\n return this._clickable;\n },\n /**\r\n * Is element clickable? Clickable elements will generate \"hit\" events when\r\n * clicked or tapped.\r\n *\r\n * @param value Clickable?\r\n */\n set: function (value) {\n if (this._clickable !== value) {\n this._clickable = value;\n getInteraction().processClickable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"contextMenuDisabled\", {\n /**\r\n * @return Context menu disabled?\r\n */\n get: function () {\n return this._contextMenuDisabled;\n },\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\n set: function (value) {\n if (this._contextMenuDisabled !== value) {\n this._contextMenuDisabled = value;\n getInteraction().processContextMenu(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"hoverable\", {\n /**\r\n * @return Hoverable?\r\n */\n get: function () {\n return this._hoverable;\n },\n /**\r\n * Indicates if element should generate hover events.\r\n *\r\n * @param value Hoverable?\r\n */\n set: function (value) {\n if (this._hoverable !== value) {\n this._hoverable = value;\n getInteraction().processHoverable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"trackable\", {\n /**\r\n * @return Track pointer?\r\n */\n get: function () {\n return this._trackable;\n },\n /**\r\n * Indicates if pointer movement over element should be tracked.\r\n *\r\n * @param value Track pointer?\r\n */\n set: function (value) {\n if (this._trackable !== value) {\n this._trackable = value;\n getInteraction().processTrackable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"draggable\", {\n /**\r\n * @return Draggable?\r\n */\n get: function () {\n return this._draggable;\n },\n /**\r\n * Indicates if element can be dragged. (moved)\r\n *\r\n * @param value Draggable?\r\n */\n set: function (value) {\n if (this._draggable !== value) {\n this._draggable = value;\n getInteraction().processDraggable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"swipeable\", {\n /**\r\n * @return Track swipe?\r\n */\n get: function () {\n return this._swipeable;\n },\n /**\r\n * Indicates whether element should react to swipe gesture.\r\n *\r\n * @param value Track swipe?\r\n */\n set: function (value) {\n if (this._swipeable !== value) {\n this._swipeable = value;\n getInteraction().processSwipeable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"resizable\", {\n /**\r\n * @return Resizeble?\r\n */\n get: function () {\n return this._resizable;\n },\n /**\r\n * Indicates if element can be resized.\r\n *\r\n * @param value Resizeable?\r\n */\n set: function (value) {\n if (this._resizable !== value) {\n this._resizable = value;\n getInteraction().processResizable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"wheelable\", {\n /**\r\n * @return Track wheel?\r\n */\n get: function () {\n return this._wheelable;\n },\n /**\r\n * Indicates whether track moouse wheel rotation over element.\r\n *\r\n * @param value Track wheel?\r\n */\n set: function (value) {\n if (this._wheelable !== value) {\n this._wheelable = value;\n getInteraction().processWheelable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"inert\", {\n /**\r\n * @return Inert?\r\n */\n get: function () {\n return this._inert;\n },\n /**\r\n * Indicates if element is inert, i.e. if it should carry movement momentum\r\n * after it is dragged and released.\r\n *\r\n * @param value Inert?\r\n */\n set: function (value) {\n if (this._inert !== value) {\n this._inert = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"focusable\", {\n /**\r\n * @return Focusable?\r\n */\n get: function () {\n return this._focusable;\n },\n /**\r\n * Indicates if element can gain focus.\r\n *\r\n * @param value Focusable?\r\n */\n set: function (value) {\n if (this._focusable !== value) {\n this._focusable = value;\n if (this._focusable && this.tabindex == -1) {\n this._tabindex = 1;\n }\n getInteraction().processFocusable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"tabindex\", {\n /**\r\n * @return Tab index\r\n */\n get: function () {\n return $type.getValueDefault(this._tabindex, -1);\n },\n /**\r\n * Element's tab index.\r\n *\r\n * @param value Tab index\r\n */\n set: function (value) {\n if (this._tabindex !== value) {\n this._tabindex = value;\n if (value > -1) {\n this.focusable = true;\n }\n getInteraction().processFocusable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"element\", {\n /**\r\n * @return Element\r\n */\n get: function () {\n return this._element;\n },\n /**\r\n * A DOM element associated with this element.\r\n *\r\n * @param element Element\r\n */\n set: function (element) {\n this._element = element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"originalPosition\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Position.\r\n */\n get: function () {\n return this._originalPosition || {\n x: 0,\n y: 0\n };\n },\n /**\r\n * Element's original position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Position\r\n */\n set: function (value) {\n this._originalPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"originalScale\", {\n /**\r\n * @return Scale\r\n */\n get: function () {\n return $type.getValueDefault(this._originalScale, 1);\n },\n /**\r\n * Element's original scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Scale\r\n */\n set: function (value) {\n if (this._originalScale !== value) {\n this._originalScale = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"originalAngle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n return $type.getValueDefault(this._originalAngle, 0);\n },\n /**\r\n * Element's original angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle\r\n */\n set: function (value) {\n if (this._originalAngle !== value) {\n this._originalAngle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"inertiaOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"inertiaOptions\", this._inertiaOptions);\n } else {\n return this._inertiaOptions;\n }\n },\n /**\r\n * Inertia options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._inertiaOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"hitOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"hitOptions\", this._hitOptions);\n } else {\n return this._hitOptions;\n }\n },\n /**\r\n * Hit options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._hitOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"hoverOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"hoverOptions\", this._hoverOptions);\n } else {\n return this._hoverOptions;\n }\n },\n /**\r\n * Hover options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._hoverOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"swipeOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"swipeOptions\", this._swipeOptions);\n } else {\n return this._swipeOptions;\n }\n },\n /**\r\n * Swipe options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._swipeOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"keyboardOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"keyboardOptions\", this._keyboardOptions);\n } else {\n return this._keyboardOptions;\n }\n },\n /**\r\n * Keyboard options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._keyboardOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"mouseOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"mouseOptions\", this._mouseOptions);\n } else {\n return this._mouseOptions;\n }\n },\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.14\r\n * @param value Options\r\n */\n set: function (value) {\n this._mouseOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(InteractionObject.prototype, \"cursorOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n if (this.sprite && this.sprite._adapterO) {\n return this.sprite._adapterO.apply(\"cursorOptions\", this._cursorOptions);\n } else {\n return this._cursorOptions;\n }\n },\n /**\r\n * Cursor options.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._cursorOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all properties and related assets from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\n InteractionObject.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.inertiaOptions = source.inertiaOptions;\n this.hitOptions = source.hitOptions;\n this.hoverOptions = source.hoverOptions;\n this.swipeOptions = source.swipeOptions;\n this.keyboardOptions = source.keyboardOptions;\n this.cursorOptions = source.cursorOptions;\n this.contextMenuDisabled = source.contextMenuDisabled;\n getInteraction().applyCursorOverStyle(this);\n };\n /**\r\n * @ignore Exclude from docs\r\n */\n InteractionObject.prototype.setEventDisposer = function (key, value, f) {\n var disposer = this.eventDisposers.getKey(key);\n if (value) {\n if (disposer == null) {\n this.eventDisposers.setKey(key, f());\n }\n } else {\n if (disposer != null) {\n disposer.dispose();\n this.eventDisposers.removeKey(key);\n }\n }\n };\n /**\r\n * Disposes object.\r\n */\n InteractionObject.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n // Remove from all interaction registries\n var interaction = getInteraction();\n interaction.overObjects.removeValue(this);\n interaction.downObjects.removeValue(this);\n interaction.trackedObjects.removeValue(this);\n interaction.transformedObjects.removeValue(this);\n // Unlock document wheel\n if (this.isHover && this.wheelable) {\n interaction.unlockWheel();\n }\n if (interaction.focusedObject === this) {\n interaction.focusedObject = undefined;\n }\n };\n return InteractionObject;\n}(BaseObjectEvents);\nexport { InteractionObject };\n//# sourceMappingURL=InteractionObject.js.map","/**\r\n * Functionality related simulating of dragging of elements using keyboard.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { getInteraction } from \"./Interaction\";\nimport { system } from \"../System\";\nimport * as $array from \"../utils/Array\";\n/**\r\n * [[InteractionKeyboardObject]] is used to simulate dragging of the `draggable`\r\n * element using keyboard arrows.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar InteractionKeyboardObject = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param io An InteractionObject\r\n */\n function InteractionKeyboardObject(io, ev) {\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\n this._disposed = false;\n /**\r\n * Indicates direction of current horizontal movement.\r\n *\r\n * 0 - not moving horizontally\r\n * 1 - moving right\r\n * -1 - moving left\r\n */\n this.directionX = 0;\n /**\r\n * Indicates direction of current vertical movement.\r\n *\r\n * 0 - not moving vertically\r\n * 1 - moving down\r\n * -1 - moving up\r\n */\n this.directionY = 0;\n this.interaction = io;\n this.keyboardEvent = ev;\n this._startedOn = new Date().getTime();\n getInteraction().processDragStart(io);\n system.animations.push(this);\n this.update();\n }\n /**\r\n * It's an update method which is called by the system if\r\n * [[InteractionObject]] is used as animation.\r\n *\r\n * This will update coordinates of the element based on the movement\r\n * directions.\r\n */\n InteractionKeyboardObject.prototype.update = function () {\n // Init and get settings\n var io = this.interaction;\n var speed = getInteraction().getKeyboardOption(io, \"speed\"),\n accelleration = getInteraction().getKeyboardOption(io, \"accelleration\"),\n accellerationDelay = getInteraction().getKeyboardOption(io, \"accellerationDelay\"),\n shift = {\n x: 0,\n y: 0\n };\n // If SHIFT key is pressed we slash speed by half and disable accelleration\n if (this.keyboardEvent.shiftKey) {\n speed *= 0.5;\n accelleration = 1;\n }\n // If CTRL is pressed we increase speed by x2\n else if (this.keyboardEvent.ctrlKey) {\n speed *= 2;\n }\n // Get elapsed time\n var ms = new Date().getTime() - this._startedOn;\n var accelleratedMs = ms - accellerationDelay;\n // Add accellerated movement\n if (accelleration > 0 && accelleratedMs > 0) {\n var accellerationFactor = ms / accellerationDelay;\n ms = accellerationDelay;\n shift.x += this.directionX * (speed * accelleration * accellerationFactor * accelleratedMs);\n shift.y += this.directionY * (speed * accelleration * accellerationFactor * accelleratedMs);\n }\n // Calculate position\n shift.x += this.directionX * (speed * ms);\n shift.y += this.directionY * (speed * ms);\n // Simulate move on Interaction\n getInteraction().handleTransformMove(io, shift, {\n x: 0,\n y: 0\n }, this.keyboardEvent, true, false);\n };\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\n InteractionKeyboardObject.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Disposes this object. Removes from system animations.\r\n */\n InteractionKeyboardObject.prototype.dispose = function () {\n if (!this._disposed) {\n getInteraction().processDragStop(this.interaction);\n $array.remove(system.animations, this);\n }\n };\n return InteractionKeyboardObject;\n}();\nexport { InteractionKeyboardObject };\n//# sourceMappingURL=InteractionKeyboardObject.js.map","/**\r\n * Functionality related to inertia\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { getInteraction } from \"./Interaction\";\nimport { AnimationDisposer } from \"../utils/Animation\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * A point of inertia is to simulate gradually drecreasing motion even after\r\n * actual interaction by user, that caused it, has already ended.\r\n *\r\n * [[Inertia]] object will continue triggering the same [[Sprite]] handlers\r\n * as if the interaction was still happening, gradually reducing\r\n * shift/angle/scale values until full stop.\r\n *\r\n * Basically, from the target element's point of view, while inertia is\r\n * playing, it is still being interacted with by user, albeit with a\r\n * decreasing speed.\r\n */\nvar Inertia = /** @class */function (_super) {\n __extends(Inertia, _super);\n /**\r\n * Constructor\r\n */\n function Inertia(interaction, type, point, startPoint) {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * List of animations currently playing.\r\n */\n _this.animations = [];\n _this.className = \"Inertia\";\n _this.interaction = interaction;\n _this.type = type;\n _this.point = point;\n _this.startPoint = startPoint;\n // Make animations disposable\n _this._disposers.push(new AnimationDisposer(_this.animations));\n return _this;\n }\n Object.defineProperty(Inertia.prototype, \"x\", {\n /**\r\n * Returns current X coordinate.\r\n *\r\n * @return X\r\n */\n get: function () {\n return this.point.x;\n },\n /**\r\n * Sets current X coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value X\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n this.point.x = value;\n this.handleMove();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Inertia.prototype, \"y\", {\n /**\r\n * Returns current Y coordinate.\r\n *\r\n * @return Y\r\n */\n get: function () {\n return this.point.y;\n },\n /**\r\n * Sets current Y coordinate.\r\n *\r\n * Will trigger \"drag\" event for the target element.\r\n *\r\n * @param value Y\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n this.point.y = value;\n this.handleMove();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Simulates dragging of element.\r\n */\n Inertia.prototype.handleMove = function () {\n // Prepare {InteractionEvent} object\n if (this.interaction.events.isEnabled(\"drag\")) {\n var imev = {\n type: \"drag\",\n target: this.interaction,\n shift: {\n x: this.x - this.startPoint.x,\n y: this.y - this.startPoint.y\n },\n startPoint: this.startPoint,\n point: {\n x: this.x,\n y: this.y\n },\n touch: false\n };\n // Call handler\n this.interaction.events.dispatchImmediately(\"drag\", imev);\n }\n };\n /**\r\n * Finishes up the inertia animation. (removes reference to this animation\r\n * object)\r\n */\n Inertia.prototype.done = function () {\n // Remove inertia animation from the object\n this.interaction.inertias.removeKey(this.type);\n // Move ended\n if (this.type === \"move\") {\n getInteraction().processDragStop(this.interaction);\n }\n // Destroy\n this.dispose();\n };\n return Inertia;\n}(BaseObject);\nexport { Inertia };\n//# sourceMappingURL=Inertia.js.map","/**\r\n * A collection of keyboard-related utilities accessible via `keyboard`\r\n * instance.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $type from \"./Type\";\n/**\r\n * A class that represents collection of keyboard-related utilities.\r\n *\r\n * Do not instantiate this class directly, but rather use `keyboard` variable.\r\n */\nvar Keyboard = /** @class */function () {\n function Keyboard() {}\n /**\r\n * Returns a named key based on information contained in the event or\r\n * \"other\".\r\n *\r\n * @param ev A keyboard event\r\n * @return Keyboard named key\r\n */\n Keyboard.prototype.getEventKey = function (ev) {\n // Get the key code\n var code = ev.keyCode || ev.which,\n key;\n // Map to internal key\n switch (code) {\n case 38:\n key = \"up\";\n break;\n case 40:\n key = \"down\";\n break;\n case 37:\n key = \"left\";\n break;\n case 39:\n key = \"right\";\n break;\n case 13:\n key = \"enter\";\n break;\n case 27:\n key = \"esc\";\n break;\n case 36:\n key = \"home\";\n break;\n case 35:\n key = \"end\";\n break;\n case 9:\n key = \"tab\";\n break;\n case 17:\n key = \"ctrl\";\n break;\n case 18:\n key = \"alt\";\n break;\n case 16:\n key = \"shift\";\n break;\n case 32:\n key = \"space\";\n break;\n case 36:\n key = \"home\";\n break;\n case 35:\n key = \"end\";\n break;\n case 33:\n key = \"pgup\";\n break;\n case 34:\n key = \"pgdn\";\n break;\n case 45:\n key = \"ins\";\n break;\n case 46:\n key = \"del\";\n break;\n case 107:\n key = \"plus\";\n break;\n case 109:\n key = \"minus\";\n break;\n default:\n key = \"other\";\n break;\n }\n return key;\n };\n /**\r\n * Checks if event key is one or more of the selected named keys.\r\n *\r\n * @param ev Keyboard event\r\n * @param key Named key or array of keys\r\n * @return Is event key one of the list?\r\n */\n Keyboard.prototype.isKey = function (ev, key) {\n var eventKey = this.getEventKey(ev);\n if ($type.isString(key)) {\n key = [key];\n }\n return key.indexOf(eventKey) !== -1;\n };\n /**\r\n * Returns `true` if shift key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was shift pressed?\r\n */\n Keyboard.prototype.shiftKey = function (ev) {\n return ev.shiftKey;\n };\n /**\r\n * Returns `true` if ctrl key was presset at the moment of the event.\r\n *\r\n * @param ev Event object\r\n * @return Was ctrl pressed?\r\n */\n Keyboard.prototype.ctrlKey = function (ev) {\n return ev.ctrlKey;\n };\n /**\r\n * Returns `true` if alt key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was alt pressed?\r\n */\n Keyboard.prototype.altKey = function (ev) {\n return ev.altKey;\n };\n /**\r\n * Returns `true` if meta key was presset at the moment of the event\r\n * @param ev Event object\r\n * @return Was meta pressed?\r\n */\n Keyboard.prototype.metaKey = function (ev) {\n return ev.metaKey;\n };\n return Keyboard;\n}();\nexport { Keyboard };\n/**\r\n * A single [[Keyboard]] instance to be reused across all elements so that\r\n * they don't need to instantiate their own.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var keyboard = new Keyboard();\n//# sourceMappingURL=Keyboard.js.map","import * as $type from \"../utils/Type\";\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var timeUnitDurations = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000,\n week: 604800000,\n month: 2592000000,\n year: 31536000000\n};\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\nexport function getNextUnit(unit) {\n switch (unit) {\n case \"year\":\n return;\n case \"month\":\n return \"year\";\n case \"week\":\n return \"month\";\n case \"day\":\n return \"month\";\n // not a mistake\n case \"hour\":\n return \"day\";\n case \"minute\":\n return \"hour\";\n case \"second\":\n return \"minute\";\n case \"millisecond\":\n return \"second\";\n }\n}\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\nexport function getDuration(unit, count) {\n if (!$type.hasValue(count)) {\n count = 1;\n }\n return timeUnitDurations[unit] * count;\n}\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\nexport function now() {\n return new Date();\n}\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\nexport function getTime() {\n return now().getTime();\n}\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @return Copy\r\n */\nexport function copy(date) {\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\n}\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dateOne Date 1\r\n * @param dateTwo Date 2\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\nexport function checkChange(dateOne, dateTwo, unit, utc) {\n dateOne = new Date(dateOne.getTime());\n dateTwo = new Date(dateTwo.getTime());\n var timeZoneOffset1 = 0;\n var timeZoneOffset2 = 0;\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset1 = dateOne.getTimezoneOffset();\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\n }\n var changed = false;\n switch (unit) {\n case \"year\":\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n changed = true;\n }\n break;\n case \"month\":\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n changed = true;\n } else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n changed = true;\n }\n break;\n case \"day\":\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n changed = true;\n } else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\n changed = true;\n }\n break;\n case \"hour\":\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\n changed = true;\n }\n break;\n case \"minute\":\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\n changed = true;\n }\n break;\n case \"second\":\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\n changed = true;\n }\n break;\n case \"millisecond\":\n if (dateOne.getTime() != dateTwo.getTime()) {\n changed = true;\n }\n break;\n }\n if (changed) {\n return true;\n }\n var nextUnit = getNextUnit(unit);\n if (nextUnit) {\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() + timeZoneOffset1);\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() + timeZoneOffset2);\n return checkChange(dateOne, dateTwo, nextUnit, utc);\n } else {\n return false;\n }\n}\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\nexport function add(date, unit, count, utc) {\n var timeZoneOffset = 0;\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset = date.getTimezoneOffset();\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n }\n switch (unit) {\n case \"day\":\n var day = date.getUTCDate();\n date.setUTCDate(day + count);\n break;\n case \"second\":\n var seconds = date.getUTCSeconds();\n date.setUTCSeconds(seconds + count);\n break;\n case \"millisecond\":\n var milliseconds = date.getUTCMilliseconds();\n date.setUTCMilliseconds(milliseconds + count);\n break;\n case \"hour\":\n var hours = date.getUTCHours();\n date.setUTCHours(hours + count);\n break;\n case \"minute\":\n var minutes = date.getUTCMinutes();\n date.setUTCMinutes(minutes + count);\n break;\n case \"year\":\n var year = date.getUTCFullYear();\n date.setUTCFullYear(year + count);\n break;\n case \"month\":\n var month = date.getUTCMonth();\n date.setUTCMonth(month + count);\n break;\n case \"week\":\n var wday = date.getUTCDate();\n date.setUTCDate(wday + count * 7);\n break;\n }\n if (!utc && unit != \"millisecond\") {\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n var newTimeZoneOffset = date.getTimezoneOffset();\n if (newTimeZoneOffset != timeZoneOffset) {\n var diff = newTimeZoneOffset - timeZoneOffset;\n date.setUTCMinutes(date.getUTCMinutes() + diff);\n // solves issues if newe time falls back to old time zone\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\n date.setUTCMinutes(date.getUTCMinutes() - diff);\n }\n }\n }\n }\n return date;\n}\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, roundMinutes, timezone) {\n if (roundMinutes === void 0) {\n roundMinutes = 0;\n }\n if (!$type.isNumber(count)) {\n count = 1;\n }\n var timeZoneOffset = 0;\n if (timezone && [\"day\", \"month\", \"week\", \"year\"].indexOf(unit) != -1) {\n date = setTimezone(date, timezone);\n }\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset = date.getTimezoneOffset();\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n }\n switch (unit) {\n case \"day\":\n var day = date.getUTCDate();\n if (count > 1) {\n //\tday = Math.floor(day / count) * count;\n if (firstDate) {\n firstDate = round(firstDate, \"day\", 1);\n var difference = date.getTime() - firstDate.getTime();\n var unitCount = Math.floor(difference / getDuration(\"day\") / count);\n var duration = getDuration(\"day\", unitCount * count);\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\n }\n } else {\n date.setUTCDate(day);\n }\n date.setUTCHours(0, 0, 0, 0);\n break;\n case \"second\":\n var seconds = date.getUTCSeconds();\n if (count > 1) {\n seconds = Math.floor(seconds / count) * count;\n }\n date.setUTCSeconds(seconds, 0);\n break;\n case \"millisecond\":\n if (count == 1) {\n return date; // much better for perf!\n }\n var milliseconds = date.getUTCMilliseconds();\n milliseconds = Math.floor(milliseconds / count) * count;\n date.setUTCMilliseconds(milliseconds);\n break;\n case \"hour\":\n var hours = date.getUTCHours();\n if (count > 1) {\n hours = Math.floor(hours / count) * count;\n }\n date.setUTCHours(hours, roundMinutes, 0, 0);\n break;\n case \"minute\":\n var minutes = date.getUTCMinutes();\n milliseconds = date.getUTCMilliseconds();\n if (count > 1) {\n minutes = Math.floor(minutes / count) * count;\n }\n date.setUTCMinutes(minutes, 0, 0);\n break;\n case \"month\":\n var month = date.getUTCMonth();\n if (count > 1) {\n month = Math.floor(month / count) * count;\n }\n date.setUTCMonth(month, 1);\n date.setUTCHours(0, roundMinutes, 0, 0);\n break;\n case \"year\":\n var year = date.getUTCFullYear();\n if (count > 1) {\n year = Math.floor(year / count) * count;\n }\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, roundMinutes, 0, 0);\n //let nonUTCDateY = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n //timeZoneOffset = nonUTCDateY.getTimezoneOffset();\n break;\n case \"week\":\n var wday = date.getUTCDate();\n var weekDay = date.getUTCDay();\n if (!$type.isNumber(firstDateOfWeek)) {\n firstDateOfWeek = 1;\n }\n // todo: rounding when count is not 1\n if (weekDay >= firstDateOfWeek) {\n wday = wday - weekDay + firstDateOfWeek;\n } else {\n wday = wday - (7 + weekDay) + firstDateOfWeek;\n }\n date.setUTCDate(wday);\n date.setUTCHours(0, roundMinutes, 0, 0);\n break;\n }\n if (!utc && unit != \"millisecond\") {\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n var newTimeZoneOffset = date.getTimezoneOffset();\n if (newTimeZoneOffset != timeZoneOffset) {\n var diff = newTimeZoneOffset - timeZoneOffset;\n date.setUTCMinutes(date.getUTCMinutes() + diff);\n }\n }\n }\n return date;\n}\n/**\r\n * Returns a new `Date` object which corresponds to the source date in a\r\n * specific timezone.\r\n *\r\n * @since 4.10.1\r\n * @param date Source date\r\n * @param timezone Timezone identifier\r\n * @return Recalculated new Date\r\n */\nexport function setTimezone(date, timezone) {\n var d = new Date(date.toLocaleString(\"en-US\", {\n timeZone: timezone\n }));\n return d;\n}\n/**\r\n * Returns minute fraction of the set timezone.\r\n *\r\n * @since 4.10.12\r\n * @param timezone Timezone identifier\r\n * @return Minutes\r\n */\nexport function getTimezoneMinutes(timezone) {\n var d = new Date();\n d.setHours(0, 0, 0, 0);\n var d2 = setTimezone(d, timezone);\n return d2.getMinutes();\n}\n//# sourceMappingURL=Time.js.map","/**\r\n * Interaction manages all aspects of user interaction - mouse move,\r\n * click, hover, drag events, touch gestures.\r\n *\r\n * [[InteractionObject]] elements that want to use certain events, must attach event\r\n * listeners to Interaction instance.\r\n *\r\n * Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n * those elements to handle interaction information received via event triggers.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"../Base\";\nimport { List } from \"../utils/List\";\nimport { Animation } from \"../utils/Animation\";\nimport { MultiDisposer } from \"../utils/Disposer\";\nimport { InteractionObject } from \"./InteractionObject\";\nimport { InteractionKeyboardObject } from \"./InteractionKeyboardObject\";\nimport { Dictionary } from \"../utils/Dictionary\";\nimport { Inertia } from \"./Inertia\";\nimport { addEventListener } from \"../utils/DOM\";\nimport { keyboard } from \"../utils/Keyboard\";\nimport { system } from \"./../System\";\nimport { options } from \"./../Options\";\nimport * as $ease from \"../utils/Ease\";\nimport * as $math from \"../utils/Math\";\nimport * as $array from \"../utils/Array\";\nimport * as $dom from \"../utils/DOM\";\nimport * as $iter from \"../utils/Iterator\";\nimport * as $type from \"../utils/Type\";\nimport * as $time from \"../utils/Time\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n* Interaction manages all aspects of user interaction - mouse move,\r\n* click, hover, drag events, touch gestures.\r\n*\r\n* [[InteractionObject]] elements that want to use certain events, must attach event\r\n* listeners to Interaction instance.\r\n*\r\n* Interaction itself will not modify [[InteractionObject]] elements, it will be up to\r\n* those elements to handle interaction information received via event triggers.\r\n*\r\n* @see {@link IInteractionEvents} for a list of available events\r\n*/\nvar Interaction = /** @class */function (_super) {\n __extends(Interaction, _super);\n /**\r\n * Constructor. Sets up universal document-wide move events to handle stuff\r\n * outside particular chart container.\r\n */\n function Interaction() {\n var _this =\n // Call super\n _super.call(this) || this;\n /**\r\n * An indicator of global events were already initialized.\r\n */\n _this._globalEventsAdded = false;\n /**\r\n * Holds which mouse event listeners to use.\r\n */\n _this._pointerEvents = {\n \"pointerdown\": \"mousedown\",\n \"pointerup\": \"mouseup\",\n \"pointermove\": \"mousemove\",\n \"pointercancel\": \"mouseup\",\n \"pointerover\": \"mouseover\",\n \"pointerout\": \"mouseout\",\n \"wheel\": \"wheel\"\n };\n /**\r\n * Indicates if Interaction should use only \"pointer\" type events, like\r\n * \"pointermove\", available in all modern browsers, ignoring \"legacy\"\r\n * events, like \"touchmove\".\r\n */\n _this._usePointerEventsOnly = false;\n /**\r\n * Use only touch events (for touch only devices such as tablets and phones)\r\n */\n _this._useTouchEventsOnly = false;\n /**\r\n * Add special hover events. Normally, touch device tap will also simulate\r\n * hover event. On some devices (ahem iOS) we want to prevent that so that\r\n * over/out events are not duplicated.\r\n */\n _this._addHoverEvents = true;\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\n _this._passiveSupported = false;\n /**\r\n * Holds list of delayed events\r\n */\n _this._delayedEvents = {\n out: []\n };\n /**\r\n * List of objects that current have a pointer hovered over them.\r\n */\n _this.overObjects = new List();\n /**\r\n * List of objects that currently has a pressed pointer.\r\n */\n _this.downObjects = new List();\n /**\r\n * List of objects that need mouse position to be reported to them.\r\n */\n _this.trackedObjects = new List();\n /**\r\n * List of objects that are currently being dragged.\r\n */\n _this.transformedObjects = new List();\n /**\r\n * Holds all known pointers.\r\n */\n _this.pointers = new Dictionary();\n /**\r\n * Inertia options that need to be applied to after element drag, if it's\r\n * `inert = true`.\r\n *\r\n * This is just a default, which can and probably will be overridden by\r\n * actual elements.\r\n */\n _this.inertiaOptions = new Dictionary();\n /**\r\n * Default options for click events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\n _this.hitOptions = {\n \"doubleHitTime\": 300,\n //\"delayFirstHit\": false,\n \"hitTolerance\": 10,\n \"noFocus\": true\n };\n /**\r\n * Default options for hover events. These can be overridden in\r\n * [[InteractionObject]].\r\n */\n _this.hoverOptions = {\n \"touchOutBehavior\": \"leave\",\n \"touchOutDelay\": 1000\n };\n /**\r\n * Default options for detecting a swipe gesture. These can be overridden in\r\n * [[InteractionObject]].\r\n */\n _this.swipeOptions = {\n \"time\": 500,\n \"verticalThreshold\": 75,\n \"horizontalThreshold\": 30\n };\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n */\n _this.keyboardOptions = {\n \"speed\": 0.1,\n \"accelleration\": 1.2,\n \"accellerationDelay\": 2000\n };\n /**\r\n * Default options for keyboard operations. These can be overridden in\r\n * [[InteractionObject]].\r\n *\r\n * @since 4.5.14\r\n */\n _this.mouseOptions = {\n \"sensitivity\": 1\n };\n // Set class name\n _this.className = \"Interaction\";\n // Create InteractionObject for \n _this.body = _this.getInteraction(document.body);\n _this._disposers.push(_this.body);\n // Detect browser capabilities and determine what event listeners to use\n if (window.hasOwnProperty(\"PointerEvent\")) {\n // IE10+/Edge without touch controls enabled\n _this._pointerEvents.pointerdown = \"pointerdown\";\n _this._pointerEvents.pointerup = \"pointerup\";\n _this._pointerEvents.pointermove = \"pointermove\";\n _this._pointerEvents.pointercancel = \"pointercancel\";\n _this._pointerEvents.pointerover = \"pointerover\";\n _this._pointerEvents.pointerout = \"pointerout\";\n //this._usePointerEventsOnly = true;\n } else if (window.hasOwnProperty(\"MSPointerEvent\")) {\n // IE9\n _this._pointerEvents.pointerdown = \"MSPointerDown\";\n _this._pointerEvents.pointerup = \"MSPointerUp\";\n _this._pointerEvents.pointermove = \"MSPointerMove\";\n _this._pointerEvents.pointercancel = \"MSPointerUp\";\n _this._pointerEvents.pointerover = \"MSPointerOver\";\n _this._pointerEvents.pointerout = \"MSPointerOut\";\n //this._usePointerEventsOnly = true;\n } else if (typeof matchMedia !== \"undefined\" && matchMedia('(pointer:fine)').matches) {\n // This is only for Safari as it does not support PointerEvent\n // Do nothing and let it use regular `mouse*` events\n // Hi Apple ;)\n // Additionally disable hover events for iOS devices\n if ('ontouchstart' in window) {\n _this._addHoverEvents = false;\n _this._useTouchEventsOnly = true;\n }\n } else if (window.navigator.userAgent.match(/MSIE /)) {\n // Oh looky, an MSIE that does not support PointerEvent. Hi granpa IE9!\n _this._usePointerEventsOnly = true;\n } else if (_this.fullFF()) {\n // Old FF, let's use regular events.\n // (Newer FFs would be detected by the PointerEvent availability check)\n _this._usePointerEventsOnly = true;\n } else {\n // Uses defaults for normal browsers\n // We also assume that this must be a touch device that does not have\n // any pointer events\n _this._useTouchEventsOnly = true;\n }\n // Detect if device has a mouse\n // This is turning out to be not reliable\n // @todo remove\n /*if (!window.navigator.msPointerEnabled && (typeof matchMedia !== \"undefined\") && !matchMedia('(pointer:fine)').matches && !this.fullFF()) {\r\n this._useTouchEventsOnly = true;\r\n }*/\n // Detect proper mouse wheel events\n if (\"onwheel\" in document.createElement(\"div\")) {\n // Modern browsers\n _this._pointerEvents.wheel = \"wheel\";\n } else if ($type.hasValue(document.onmousewheel)) {\n // Webkit and IE support at least \"mousewheel\"\n _this._pointerEvents.wheel = \"mousewheel\";\n }\n // Set up default inertia options\n _this.inertiaOptions.setKey(\"move\", {\n \"time\": 100,\n \"duration\": 500,\n \"factor\": 1,\n \"easing\": $ease.polyOut3\n });\n _this.inertiaOptions.setKey(\"resize\", {\n \"time\": 100,\n \"duration\": 500,\n \"factor\": 1,\n \"easing\": $ease.polyOut3\n });\n // Set the passive mode support\n _this._passiveSupported = Interaction.passiveSupported;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * This is a nasty detection for Firefox. The reason why we have is that\r\n * Firefox ESR version does not support matchMedia correctly.\r\n *\r\n * On iOS, Firefox uses different userAgent, so we don't have to detect iOS.\r\n *\r\n * @return Full Firefox?\r\n */\n Interaction.prototype.fullFF = function () {\n return window.navigator.userAgent.match(/Firefox/) && !window.navigator.userAgent.match(/Android/);\n };\n Interaction.prototype.debug = function () {};\n /**\r\n * ==========================================================================\r\n * Processing\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Sets up global events.\r\n *\r\n * We need this so that we can track drag movement beyond chart's container.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.addGlobalEvents = function () {\n var _this = this;\n if (!this._globalEventsAdded) {\n if (!this._useTouchEventsOnly) {\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerdown, function (ev) {\n _this.handleGlobalPointerDown(ev);\n }));\n this._disposers.push(addEventListener(document, this._pointerEvents.pointermove, function (ev) {\n _this.handleGlobalPointerMove(ev);\n }));\n this._disposers.push(addEventListener(document, this._pointerEvents.pointerup, function (ev) {\n _this.handleGlobalPointerUp(ev);\n }));\n this._disposers.push(addEventListener(document, this._pointerEvents.pointercancel, function (ev) {\n _this.handleGlobalPointerUp(ev, true);\n }));\n this._disposers.push(addEventListener(document, \"mouseenter\", function (ev) {\n if (!$type.hasValue(ev.relatedTarget) && (ev.buttons == 0 || ev.which == 0)) {\n _this.handleDocumentLeave(ev);\n }\n }));\n }\n // No need to duplicate events for hubrid systems that support both\n // pointer events and touch events. Touch events are need only for\n // some touch-only systems, like Mobile Safari.\n if (!this._usePointerEventsOnly) {\n this._disposers.push(addEventListener(document, \"touchstart\", function (ev) {\n _this.handleGlobalTouchStart(ev);\n }));\n this._disposers.push(addEventListener(document, \"touchmove\", function (ev) {\n _this.handleGlobalTouchMove(ev);\n }));\n this._disposers.push(addEventListener(document, \"touchend\", function (ev) {\n _this.handleGlobalTouchEnd(ev);\n }));\n }\n this._disposers.push(addEventListener(document, \"keydown\", function (ev) {\n _this.handleGlobalKeyDown(ev);\n }));\n this._disposers.push(addEventListener(document, \"keyup\", function (ev) {\n _this.handleGlobalKeyUp(ev);\n }));\n this._globalEventsAdded = true;\n }\n };\n /**\r\n * Sets if [[InteractionObject]] is clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\n Interaction.prototype.processClickable = function (io) {\n // Add or remove touch events\n this.processTouchable(io);\n };\n /**\r\n * Sets if [[InteractionObject]] will display context menu when right-clicked.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\n Interaction.prototype.processContextMenu = function (io) {\n if (io.contextMenuDisabled) {\n if (!io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\n io.eventDisposers.setKey(\"contextMenuDisabled\", addEventListener(io.element, \"contextmenu\", function (e) {\n e.preventDefault();\n }));\n }\n } else {\n if (io.eventDisposers.hasKey(\"contextMenuDisabled\")) {\n io.eventDisposers.getKey(\"contextMenuDisabled\").dispose();\n }\n }\n };\n /**\r\n * Sets if [[InteractionObject]] is hoverable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io [[InteractionObject]] instance\r\n */\n Interaction.prototype.processHoverable = function (io) {\n var _this = this;\n if (io.hoverable || io.trackable) {\n // Add global events\n this.addGlobalEvents();\n // Add hover styles\n this.applyCursorOverStyle(io);\n // Add local events\n if (!io.eventDisposers.hasKey(\"hoverable\") && this._addHoverEvents) {\n io.eventDisposers.setKey(\"hoverable\", new MultiDisposer([addEventListener(io.element, this._pointerEvents.pointerout, function (e) {\n return _this.handlePointerOut(io, e);\n }), addEventListener(io.element, this._pointerEvents.pointerover, function (e) {\n return _this.handlePointerOver(io, e);\n })]));\n }\n if (io.trackable) {\n //sprite.addEventListener(\"touchmove\", this.handleTouchMove, false, this);\n }\n } else {\n var disposer = io.eventDisposers.getKey(\"hoverable\");\n if (disposer != null) {\n disposer.dispose();\n io.eventDisposers.removeKey(\"hoverable\");\n }\n }\n // Add or remove touch events\n this.processTouchable(io);\n };\n /**\r\n * Sets up [[InteractionObject]] as movable. Movable can be any\r\n * transformation, e.g. drag, swipe, resize, track.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processMovable = function (io) {\n // Add unified events\n if (io.draggable || io.swipeable || io.trackable || io.resizable) {\n // Prep the element\n if (!this.isGlobalElement(io) && !io.isTouchProtected) {\n this.prepElement(io);\n }\n // Add hover styles\n this.applyCursorOverStyle(io);\n }\n // Add or remove touch events\n this.processTouchable(io);\n };\n /**\r\n * Checks if [[InteractionObject]] is trackable and sets relative events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processTrackable = function (io) {\n this.processHoverable(io);\n this.processMovable(io);\n if (io.trackable) {\n this.trackedObjects.moveValue(io);\n } else {\n this.trackedObjects.removeValue(io);\n }\n };\n /**\r\n * Checks if [[InteractionObject]] is draggable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processDraggable = function (io) {\n this.processMovable(io);\n };\n /**\r\n * Checks if [[InteractionObject]] is swipeable and sets relative events.\r\n *\r\n * A swipe event is triggered when a horizontal drag of 75px or more (and\r\n * less than 30px vertically) occurs within 700 milliseconds. This can be\r\n * overridden in sprites [[swipeOptions]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processSwipeable = function (io) {\n this.processMovable(io);\n };\n /**\r\n * Checks if [[InteractionObject]] is resizable and attaches required events\r\n * to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processResizable = function (io) {\n this.processMovable(io);\n };\n /**\r\n * Checks if [[InteractionObject]] is supposed to capture mouse wheel events\r\n * and prepares it to catch those events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processWheelable = function (io) {\n var _this = this;\n if (io.wheelable) {\n //io.hoverable = true;\n if (!io.eventDisposers.hasKey(\"wheelable\")) {\n io.eventDisposers.setKey(\"wheelable\", new MultiDisposer([addEventListener(io.element, this._pointerEvents.wheel, function (e) {\n return _this.handleMouseWheel(io, e);\n }, this._passiveSupported ? {\n passive: false\n } : false), io.events.on(\"out\", function (e) {\n if (io.wheelable) {\n _this.unlockWheel();\n }\n }), io.events.on(\"over\", function (e) {\n //console.log(\"whelab over\")\n if (io.wheelable) {\n _this.lockWheel();\n }\n })]));\n }\n } else {\n var disposer = io.eventDisposers.getKey(\"wheelable\");\n if (disposer != null) {\n disposer.dispose();\n io.eventDisposers.removeKey(\"wheelable\");\n }\n }\n };\n /**\r\n * Checks if [[InteractionObject]] is focusable. A focusable element is an\r\n * element that will be highlighted when users presses TAB key. If the\r\n * element is focusable, this function will attach relative focus/blur\r\n * events to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processFocusable = function (io) {\n var _this = this;\n if (io.focusable === true && io.tabindex > -1 && !this._useTouchEventsOnly) {\n if (!io.eventDisposers.hasKey(\"focusable\")) {\n io.eventDisposers.setKey(\"focusable\", new MultiDisposer([addEventListener(io.element, \"focus\", function (e) {\n return _this.handleFocus(io, e);\n }), addEventListener(io.element, \"blur\", function (e) {\n return _this.handleBlur(io, e);\n }), addEventListener(io.element, this._pointerEvents.pointerdown, function (e) {\n return _this.handleFocusBlur(io, e);\n }), addEventListener(io.element, \"touchstart\", function (e) {\n return _this.handleFocusBlur(io, e);\n }, this._passiveSupported ? {\n passive: false\n } : false)]));\n }\n } else {\n var disposer = io.eventDisposers.getKey(\"focusable\");\n if (disposer != null) {\n disposer.dispose();\n io.eventDisposers.removeKey(\"focusable\");\n }\n }\n };\n /**\r\n * Checks if [[InteractionObject]] is \"touchable\". It means any interaction\r\n * whatsoever: mouse click, touch screen tap, swipe, drag, resize, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n */\n Interaction.prototype.processTouchable = function (io) {\n var _this = this;\n // Add unified events\n if (io.clickable || io.hoverable || io.trackable || io.draggable || io.swipeable || io.resizable) {\n // Add global events\n this.addGlobalEvents();\n // Add local events\n if (!io.eventDisposers.hasKey(\"touchable\")) {\n if (!this._useTouchEventsOnly && !this._usePointerEventsOnly) {\n io.eventDisposers.setKey(\"touchable\", new MultiDisposer([addEventListener(io.element, this._pointerEvents.pointerdown, function (e) {\n return _this.handlePointerDown(io, e);\n }), addEventListener(io.element, \"touchstart\", function (e) {\n return _this.handleTouchDown(io, e);\n }, this._passiveSupported ? {\n passive: false\n } : false)]));\n } else if (!this._useTouchEventsOnly) {\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, this._pointerEvents.pointerdown, function (e) {\n return _this.handlePointerDown(io, e);\n }));\n } else if (!this._usePointerEventsOnly) {\n io.eventDisposers.setKey(\"touchable\", addEventListener(io.element, \"touchstart\", function (e) {\n return _this.handleTouchDown(io, e);\n }, this._passiveSupported ? {\n passive: false\n } : false));\n }\n }\n } else {\n var disposer = io.eventDisposers.getKey(\"touchable\");\n if (disposer != null) {\n disposer.dispose();\n io.eventDisposers.removeKey(\"touchable\");\n }\n }\n };\n /**\r\n * ==========================================================================\r\n * Non-pointer events\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Dispatches \"focus\" event when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleFocus = function (io, ev) {\n if (!io.focusable) {\n ev.preventDefault();\n return;\n }\n io.isFocused = true;\n if (io.events.isEnabled(\"focus\") && !system.isPaused) {\n var imev = {\n type: \"focus\",\n target: io,\n event: ev\n };\n io.events.dispatchImmediately(\"focus\", imev);\n }\n };\n /**\r\n * Used by regular click events to prevent focus if \"noFocus\" is set.\r\n *\r\n * This should not be called by \"focus\" handlers.\r\n *\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleFocusBlur = function (io, ev) {\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\")) {\n io.events.once(\"focus\", function () {\n io.events.disableType(\"blur\");\n $dom.blur();\n if (io.sprite) {\n io.sprite.handleBlur();\n }\n io.events.enableType(\"blur\");\n });\n }\n };\n /**\r\n * Dispatches \"blur\" event when element loses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleBlur = function (io, ev) {\n if (!io.focusable) {\n ev.preventDefault();\n return;\n }\n io.isFocused = false;\n if (io.events.isEnabled(\"blur\") && !system.isPaused) {\n var imev = {\n type: \"blur\",\n target: io,\n event: ev\n };\n io.events.dispatchImmediately(\"blur\", imev);\n }\n };\n /**\r\n * ==========================================================================\r\n * Global keyboard-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Checks if there is an item that has currently focus and that they key is\r\n * one of the directional keys. If both of the conditions are true, it\r\n * creates an object to simulate movement of dragable element with keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\n Interaction.prototype.handleGlobalKeyDown = function (ev) {\n if (this.focusedObject) {\n if (keyboard.isKey(ev, \"esc\")) {\n // ESC removes focus\n $dom.blur();\n } else if (this.focusedObject.draggable && keyboard.isKey(ev, [\"up\", \"down\", \"left\", \"right\"])) {\n // Prevent scrolling of the document\n ev.preventDefault();\n // Get focused object\n var io = this.focusedObject;\n // Get particular key\n var disposerKey = \"interactionKeyboardObject\";\n // If such disposer already exists we know the event is going on so we\n // just move on\n if (io.eventDisposers.hasKey(disposerKey)) {\n return;\n }\n // Create a keyboard mover\n var ko = new InteractionKeyboardObject(io, ev);\n io.eventDisposers.setKey(disposerKey, ko);\n switch (keyboard.getEventKey(ev)) {\n case \"up\":\n ko.directionY = -1;\n break;\n case \"down\":\n ko.directionY = 1;\n break;\n case \"left\":\n ko.directionX = -1;\n break;\n case \"right\":\n ko.directionX = 1;\n break;\n }\n }\n }\n };\n /**\r\n * Dispatches related events when the keyboard key is realeasd.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An original keyboard event\r\n */\n Interaction.prototype.handleGlobalKeyUp = function (ev) {\n var disposerKey = \"interactionKeyboardObject\";\n if (this.focusedObject) {\n var disposer = this.focusedObject.eventDisposers.getKey(disposerKey);\n if (disposer != null) {\n // Prevent scrolling of the document\n ev.preventDefault();\n // Dispose stuff\n disposer.dispose();\n this.focusedObject.eventDisposers.removeKey(disposerKey);\n }\n // Does focused object have \"hit\" event?\n if (keyboard.isKey(ev, \"enter\") && this.focusedObject.sprite && !this.focusedObject.sprite.events.isEnabled(\"toggled\")) {\n if (this.focusedObject.sprite.events.isEnabled(\"hit\")) {\n this.focusedObject.dispatchImmediately(\"hit\");\n } else if (this.focusedObject.sprite.showTooltipOn == \"hit\") {\n this.focusedObject.dispatchImmediately(\"up\");\n }\n }\n }\n };\n /**\r\n * ==========================================================================\r\n * Global pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Handler for a global \"pointermove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalPointerMove = function (ev) {\n // Get pointer\n var pointer = this.getPointer(ev);\n // Update current point position\n pointer.point = this.getPointerPoint(ev);\n // Prepare and fire global event\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\n var imev = {\n type: \"track\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"track\", imev);\n }\n // Track\n this.addBreadCrumb(pointer, pointer.point);\n // Process further\n this.handleGlobalMove(pointer, ev);\n };\n /**\r\n * Handler for a global \"pointerdown\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalPointerDown = function (ev) {\n // Remove delayed hovers\n this.processDelayed();\n // Get pointer\n var pointer = this.getPointer(ev);\n // Prepare and fire global event\n if (this.events.isEnabled(\"down\") && !system.isPaused) {\n var imev = {\n type: \"down\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"down\", imev);\n }\n };\n /**\r\n * Prevents touch action from firing.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\n Interaction.prototype.preventTouchAction = function (ev) {\n if (!ev.defaultPrevented) {\n ev.preventDefault();\n }\n };\n /**\r\n * Handler for a global \"pointerup\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalPointerUp = function (ev, cancelled) {\n if (cancelled === void 0) {\n cancelled = false;\n }\n // Get pointer\n var pointer = this.getPointer(ev);\n // Prepare and fire global event\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\n var imev = {\n type: \"up\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"up\", imev);\n }\n // Process further\n this.handleGlobalUp(pointer, ev, cancelled);\n };\n /**\r\n * ==========================================================================\r\n * Global touch-related even handlers\r\n * ==========================================================================\r\n */\n /**\r\n * Handler for a global \"touchmove\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalTouchMove = function (ev) {\n // Process each changed touch point\n for (var i = 0; i < ev.changedTouches.length; i++) {\n // Get pointer\n var pointer = this.getPointer(ev.changedTouches[i]);\n // Update current point position\n pointer.point = this.getPointerPoint(ev.changedTouches[i]);\n // Prepare and fire global event\n if (this.events.isEnabled(\"track\") && !system.isPaused) {\n var imev = {\n type: \"track\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"track\", imev);\n }\n // Track\n this.addBreadCrumb(pointer, pointer.point);\n // Process further\n this.handleGlobalMove(pointer, ev);\n }\n };\n /**\r\n * Handler for a global \"touchstart\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalTouchStart = function (ev) {\n // Remove delayed hovers\n this.processDelayed();\n // Process each changed touch point\n for (var i = 0; i < ev.changedTouches.length; i++) {\n // Get pointer\n var pointer = this.getPointer(ev.changedTouches[i]);\n // Prepare and fire global event\n if (!this._usePointerEventsOnly && this.events.isEnabled(\"down\") && !system.isPaused) {\n var imev = {\n type: \"down\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"down\", imev);\n }\n }\n };\n /**\r\n * Handler for a global \"touchend\" event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Interaction.prototype.handleGlobalTouchEnd = function (ev) {\n // Process each changed touch point\n for (var i = 0; i < ev.changedTouches.length; i++) {\n // Get pointer\n var pointer = this.getPointer(ev.changedTouches[i]);\n // Prepare and fire global event\n if (this.events.isEnabled(\"up\") && !system.isPaused) {\n var imev = {\n type: \"up\",\n target: this,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n this.events.dispatchImmediately(\"up\", imev);\n }\n // Handle element-related events\n this.handleGlobalUp(pointer, ev);\n }\n };\n /**\r\n * ==========================================================================\r\n * Element-specific pointer-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Handles event when pointer is over [[InteractionObject]] and button is\r\n * pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handlePointerDown = function (io, ev) {\n // Stop further propagation so we don't get multiple triggers on hybrid\n // devices (both mouse and touch capabilities)\n //ev.preventDefault();\n //ev.stopPropagation();\n //if (ev.defaultPrevented) {\n //}\n // Get pointer\n var pointer = this.getPointer(ev);\n // Ignore if it's anything but mouse's primary button\n if (!pointer.touch && ev.which != 1 && ev.which != 3) {\n return;\n }\n // Set mouse button\n pointer.button = ev.which;\n // Reset pointer\n this.resetPointer(pointer, ev);\n // Process down\n this.handleDown(io, pointer, ev);\n };\n /**\r\n * Handles event when [[InteractionObject]] is hovered by a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handlePointerOver = function (io, ev) {\n // Get pointer\n var pointer = this.getPointer(ev);\n // Process down\n this.handleOver(io, pointer, ev);\n };\n /**\r\n * Handles event when [[InteractionObject]] loses hover from a mouse pointer.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handlePointerOut = function (io, ev) {\n // Get pointer\n var pointer = this.getPointer(ev);\n // Process down\n this.handleOut(io, pointer, ev);\n };\n /**\r\n * Handles event when mouse wheel is crolled over the [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n * @todo Investigate more-cross browser stuff https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\n */\n Interaction.prototype.handleMouseWheel = function (io, ev) {\n // Get pointer\n var pointer = this.getPointer(ev);\n // Update current point position\n pointer.point = this.getPointerPoint(ev);\n // Init delta values\n var deltaX = 0,\n deltaY = 0;\n // Set up modifier\n // This is needed because FireFox reports wheel deltas in \"lines\" instead\n // of pixels so we have to approximate pixel value\n var mod = 1;\n if (ev.deltaMode == 1) {\n mod = 50;\n }\n // Adjust configurable sensitivity\n mod *= this.getMouseOption(io, \"sensitivity\");\n // Calculate deltas\n if (ev instanceof WheelEvent) {\n deltaX = Math.round(-1 * ev.wheelDeltaX || ev.deltaX * mod);\n deltaY = Math.round(-1 * ev.wheelDeltaY || ev.deltaY * mod);\n } else {\n throw new Error(\"Invalid event type\");\n }\n // Handle the event\n this.handleWheel(io, pointer, deltaX, deltaY, ev);\n };\n /**\r\n * ==========================================================================\r\n * Element-specific touch-related even handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Handles an event when an [[InteractionObject]] is touched on a touch\r\n * device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleTouchDown = function (io, ev) {\n // Stop further propagation so we don't get multiple triggers on hybrid\n // devices (both mouse and touch capabilities)\n //this.maybePreventDefault(io, ev);\n //return;\n // Process each changed touch point\n for (var i = 0; i < ev.changedTouches.length; i++) {\n // Get pointer\n var pointer = this.getPointer(ev.changedTouches[i]);\n this.maybePreventDefault(io, ev, pointer);\n // Reset pointer\n this.resetPointer(pointer, ev.changedTouches[i]);\n // Process down\n this.handleDown(io, pointer, ev);\n }\n };\n /**\r\n * ==========================================================================\r\n * Universal handlers\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Handles click/tap. Checks for doublehit.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleHit = function (io, pointer, ev) {\n // Check if this is a double-hit\n var now = $time.getTime();\n if (io.lastHit && io.lastHit >= now - this.getHitOption(io, \"doubleHitTime\")) {\n // Yup - it's a double-hit\n // Cancel the hit\n //clearTimeout(io.lastHitPointer.hitTimeout);\n // If it happened too fast it probably means that hybrid device just\n // generated two events for the same tap\n if (now - io.lastHit < 100) {\n // Ignore\n return;\n }\n // Clear last hit\n io.lastHit = undefined;\n io.lastHitPointer = undefined;\n // Dispatch event\n if (io.events.isEnabled(\"doublehit\") && !system.isPaused) {\n var imev = {\n type: \"doublehit\",\n target: io,\n point: pointer.point,\n event: ev,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"doublehit\", imev);\n }\n } else {\n // Log last hit\n io.lastHit = now;\n io.lastHitPointer = pointer;\n if (pointer.button === 3) {\n // Execute HIT now\n if (io.events.isEnabled(\"rightclick\") && !system.isPaused) {\n var imev = {\n type: \"rightclick\",\n target: io,\n event: ev\n };\n io.events.dispatchImmediately(\"rightclick\", imev);\n }\n } else {\n if (io.events.isEnabled(\"hit\") && !system.isPaused) {\n var imev = {\n type: \"hit\",\n target: io,\n event: ev,\n point: pointer.point,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"hit\", imev);\n }\n }\n }\n };\n /**\r\n * Handles pointer hovering over [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n */\n Interaction.prototype.handleOver = function (io, pointer, ev, soft) {\n if (soft === void 0) {\n soft = false;\n }\n if (!io.hoverable) {\n return;\n }\n var hoversPaused = false;\n if (this.shouldCancelHovers(pointer) && this.areTransformed() && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\n hoversPaused = true;\n this.cancelAllHovers(ev);\n }\n // Remove any delayed outs\n this.processDelayed();\n // Add pointer\n io.overPointers.moveValue(pointer);\n // Check if object is not yet hovered\n if (!io.isRealHover) {\n // Set element as hovered\n if (!hoversPaused) {\n io.isHover = true;\n io.isRealHover = true;\n this.overObjects.moveValue(io);\n }\n // Generate body track event. This is needed so that if element loads\n // under unmoved mouse cursor, we still need all the actions that are\n // required to happen to kick in.\n this.handleTrack(this.body, pointer, ev, true);\n // Event\n if (io.events.isEnabled(\"over\") && !system.isPaused && !hoversPaused) {\n var imev = {\n type: \"over\",\n target: io,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"over\", imev);\n }\n }\n };\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * If `soft = true`, this means that method is being invoked by some other\r\n * code, not hard \"out\" function, like `handleUp` which implies we need to\r\n * run additional checks before unhovering the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param soft Invoked by helper function\r\n * @param force Force imediate out\r\n */\n Interaction.prototype.handleOut = function (io, pointer, ev, soft, force) {\n var _this = this;\n if (soft === void 0) {\n soft = false;\n }\n if (force === void 0) {\n force = false;\n }\n if (!io.hoverable) {\n return;\n }\n // Remove pointer\n io.overPointers.removeValue(pointer);\n // Check if element is still hovered\n if (io.isHover && (!io.hasDelayedOut || force)) {\n // Should we run additional checks?\n if (soft && io.overPointers.length) {\n // There are still pointers hovering - don't do anything else and\n // wait until either no over pointers are there or we get a hard out\n // event.\n return;\n }\n // Should we delay \"out\" if this is happening on a touch device?\n if (pointer && pointer.touch && !force && !this.old(pointer)) {\n // This is a touch pointer, and it hasn't moved, let's pretend\n // the object is still hovered, and act as per \"behavior\" setting\n var behavior = this.getHoverOption(io, \"touchOutBehavior\");\n if (behavior == \"leave\") {\n // Set to \"leave\", so we do not execute any \"out\" event.\n // It will be handled by any other interaction that happens\n // afterwards.\n this._delayedEvents.out.push({\n type: \"out\",\n io: io,\n pointer: pointer,\n event: ev,\n keepUntil: $time.getTime() + 500\n });\n io.hasDelayedOut = true;\n return;\n } else if (behavior == \"delay\" && this.getHoverOption(io, \"touchOutDelay\")) {\n this._delayedEvents.out.push({\n type: \"out\",\n io: io,\n pointer: pointer,\n event: ev,\n keepUntil: $time.getTime() + 500,\n timeout: this.setTimeout(function () {\n _this.handleOut(io, pointer, ev, true);\n }, this.getHoverOption(io, \"touchOutDelay\"))\n });\n return;\n } else {\n // Nothing for \"remove\" - that's how it works \"out-of-the-box\"\n }\n }\n // Set element as not hovered\n io.isHover = false;\n this.overObjects.removeValue(io);\n // Invoke event\n if (!io.isDisposed() && io.events.isEnabled(\"out\") && !system.isPaused) {\n var imev = {\n type: \"out\",\n target: io,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"out\", imev);\n }\n // Reset object from lefover delayed outs, pointers\n io.overPointers.clear();\n io.hasDelayedOut = false;\n // @todo (clean delayed)\n }\n };\n /**\r\n * Processes dalyed events, such as \"out\" event that was initiated for\r\n * elements by touch.\r\n */\n Interaction.prototype.processDelayed = function () {\n var delayedEvent;\n while (true) {\n delayedEvent = this._delayedEvents.out.pop();\n if (!delayedEvent) {\n break;\n }\n if (delayedEvent.timeout) {\n delayedEvent.timeout.dispose();\n }\n this.handleOut(delayedEvent.io, delayedEvent.pointer, delayedEvent.event, false, true);\n }\n };\n /**\r\n * Performs tasks on pointer down.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleDown = function (io, pointer, ev) {\n // Need to prevent default event from happening on transformable objects\n this.maybePreventDefault(io, ev, pointer);\n // Stop inertia animations if they're currently being played out\n if (io.inert) {\n this.stopInertia(io);\n }\n // Trigger hover because some touch devices won't trigger over events\n // on their own\n this.handleOver(io, pointer, ev, true);\n // Add pointer to list\n io.downPointers.moveValue(pointer);\n // Apply styles if necessary\n this.applyCursorDownStyle(io, pointer);\n // Check if object is already down\n if (!io.isDown) {\n // Lose focus if needed\n if (io.focusable !== false && this.getHitOption(io, \"noFocus\") && this.focusedObject) {\n $dom.blur();\n }\n // Set object as hovered\n io.isDown = true;\n this.downObjects.moveValue(io);\n // Prep object for dragging and/or resizing\n if (io.draggable) {\n this.processDragStart(io, pointer, ev);\n }\n if (io.resizable) {\n this.processResizeStart(io, pointer, ev);\n }\n }\n // Dispatch \"down\" event\n if (io.events.isEnabled(\"down\") && !system.isPaused) {\n var imev = {\n type: \"down\",\n target: io,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"down\", imev);\n }\n };\n /**\r\n * Performs tasks on pointer up.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleGlobalUp = function (pointer, ev, cancelled) {\n var _this = this;\n if (cancelled === void 0) {\n cancelled = false;\n }\n var sorted = this.downObjects.values.slice();\n sorted.sort(function (x, y) {\n if (x && y) {\n var pos = x.element.compareDocumentPosition(y.element);\n if (pos & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return 1;\n } else if (pos & Node.DOCUMENT_POSITION_CONTAINS) {\n return -1;\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n });\n // Process all down objects\n $array.each(sorted, function (io) {\n // Check if this particular pointer is pressing down\n // on object\n if (io && io.downPointers.contains(pointer)) {\n _this.handleUp(io, pointer, ev, cancelled);\n }\n });\n };\n /**\r\n * Simulates all pointers being up once mouse leaves document area.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleDocumentLeave = function (ev) {\n var _this = this;\n // Process all down objects\n $iter.each(this.downObjects.backwards().iterator(), function (io) {\n io.downPointers.each(function (pointer) {\n _this.handleUp(io, pointer, ev);\n });\n });\n };\n /**\r\n * Handles when [[InteractionObject]] is no longer hovered.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Interaction object\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleUp = function (io, pointer, ev, cancelled) {\n if (cancelled === void 0) {\n cancelled = false;\n }\n // Restore cursor style\n this.restoreCursorDownStyle(io, pointer);\n // Remove pointer from the list\n io.downPointers.removeValue(pointer);\n // Trigger out because some touch devices won't trigger out events\n // on their own\n if (pointer.touch || this._useTouchEventsOnly) {\n this.handleOut(io, pointer, ev, true);\n }\n // Check if object still down\n if (io.isDown) {\n // Check if there are no other pointers hovering this element\n if (io.downPointers.length == 0) {\n // Set element as no longer down\n io.isDown = false;\n this.downObjects.removeValue(io);\n }\n // Dispatch \"up\" event\n if (io.events.isEnabled(\"up\") && !system.isPaused) {\n var imev = {\n type: \"up\",\n target: io,\n event: ev,\n pointer: pointer,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"up\", imev);\n }\n // Check if this was not a cancelled event.\n // If event was canelled (which might happen if gesture resulted in\n // navigation or page scroll) there's no point in triggering hit and\n // other actions.\n if (!cancelled) {\n // Handle swiping-related stuff\n if (io.swipeable && this.swiped(io, pointer)) {\n // Swiped - nothing else should happen\n this.handleSwipe(io, pointer, ev);\n } else {\n // Check if it maybe a click\n if (io.clickable && !this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\n this.handleHit(io, pointer, ev);\n }\n // Handle inertia\n if (io.inert && this.moved(pointer, this.getHitOption(io, \"hitTolerance\"))) {\n this.handleInertia(io, pointer);\n } else if (io.draggable) {\n this.processDragStop(io, pointer, ev);\n }\n if (io.resizable) {\n this.processResizeStop(io, pointer, ev);\n }\n }\n }\n }\n };\n /**\r\n * Checks if event needs to be prevented on draggable and such items, so that\r\n * touch gestures like navigation and scroll do not kick in.\r\n *\r\n * @param io Object\r\n * @param ev Event\r\n */\n Interaction.prototype.maybePreventDefault = function (io, ev, pointer) {\n if ($type.hasValue(ev) && (io.draggable || io.swipeable || io.trackable || io.resizable) && !this.isGlobalElement(io) && ev.cancelable !== false && (!io.isTouchProtected || !pointer || !pointer.touch)) {\n ev.preventDefault();\n }\n };\n /**\r\n * Cancels all hovers on all currently hovered objects.\r\n *\r\n * @param pointer Pointer\r\n * @param ev Event\r\n */\n Interaction.prototype.cancelAllHovers = function (ev) {\n var _this = this;\n //this.overObjects.each((io) => {\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\n if (io) {\n var pointer = io.overPointers.getIndex(0);\n _this.handleOut(io, pointer, ev, true, true);\n }\n });\n };\n /**\r\n * Checks if hovers should be cancelled on transform as per global options.\r\n * @param pointer Pointer\r\n * @return Cancel?\r\n */\n Interaction.prototype.shouldCancelHovers = function (pointer) {\n return options.disableHoverOnTransform == \"always\" || options.disableHoverOnTransform == \"touch\" && pointer.touch;\n };\n /**\r\n * Handles pointer move.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleGlobalMove = function (pointer, ev) {\n var _this = this;\n // Process hovered elements\n // We check if the element became unhovered without reporting the mouseout\n // event. (it happens in some cases)\n if (!pointer.touch) {\n var target_1 = $dom.eventTarget(pointer.lastEvent);\n $iter.each(this.overObjects.backwards().iterator(), function (io) {\n // Is this pointer relevant to element?\n if (io && io.overPointers.contains(pointer) && io.hoverable) {\n // Check if the element is still hovered\n var reset = false;\n if (io.element && pointer.lastEvent) {\n if (!$dom.contains(io.element, target_1)) {\n reset = true;\n }\n } else {\n reset = true;\n }\n if (reset) {\n _this.handleOut(io, pointer, ev, true);\n }\n }\n });\n }\n // Process down elements\n $iter.each(this.transformedObjects.backwards().iterator(), function (io) {\n // Is this pointer relevant to element?\n if (io.downPointers.contains(pointer) &&\n // Swipe still happening?\n !(io.swipeable && _this.swiping(io, pointer)) && (io.draggable || io.resizable)) {\n _this.handleTransform(io, ev);\n }\n });\n // Process tracked elements\n $iter.each(this.trackedObjects.backwards().iterator(), function (io) {\n // Is this pointer relevant to element?\n if (!io.overPointers.contains(pointer)) {\n _this.handleTrack(io, pointer, ev);\n }\n });\n };\n /**\r\n * Handles reporting of pointer movement.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n * @param skipCheck Sould we skip check if cursor actually moved\r\n */\n Interaction.prototype.handleTrack = function (io, pointer, ev, skipCheck) {\n if (skipCheck === void 0) {\n skipCheck = false;\n }\n // Do nothing if the cursor did not actually move\n if (!skipCheck && !this.moved(pointer, 0)) {\n return;\n }\n // Initiate TRACK event\n if (io.events.isEnabled(\"track\") && !system.isPaused) {\n var imev = {\n type: \"track\",\n target: io,\n event: ev,\n point: pointer.point,\n pointer: pointer,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"track\", imev);\n }\n };\n /**\r\n * Handles swipe action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleSwipe = function (io, pointer, ev) {\n // We pass in InteractionEvent with shift in mouse coordinates\n // between when the drag started and ended\n if (io.events.isEnabled(\"swipe\") && !system.isPaused) {\n var imev = {\n type: \"swipe\",\n target: io,\n event: ev,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"swipe\", imev);\n }\n if (pointer.startPoint.x < pointer.point.x) {\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\n var imev = {\n type: \"swiperight\",\n target: io,\n event: ev,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"swiperight\", imev);\n }\n } else {\n if (io.events.isEnabled(\"swipeleft\") && !system.isPaused) {\n var imev = {\n type: \"swipeleft\",\n target: io,\n event: ev,\n touch: pointer.touch\n };\n io.events.dispatchImmediately(\"swipeleft\", imev);\n }\n }\n };\n /**\r\n * Handles event triggering for wheel rotation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param deltaX Horizontal shift\r\n * @param deltaY Vertical shift\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleWheel = function (io, pointer, deltaX, deltaY, ev) {\n var shift = {\n x: deltaX,\n y: deltaY\n };\n // Trigger generic WHEEL event\n if (io.events.isEnabled(\"wheel\") && !system.isPaused) {\n io.events.dispatchImmediately(\"wheel\", {\n type: \"wheel\",\n target: io,\n event: ev,\n point: pointer.point,\n shift: shift\n });\n }\n // Trigger direction-specific events\n // Horizontal\n if (deltaX < 0) {\n if (io.events.isEnabled(\"wheelleft\") && !system.isPaused) {\n io.events.dispatchImmediately(\"wheelleft\", {\n type: \"wheelleft\",\n target: io,\n event: ev,\n point: pointer.point,\n shift: shift\n });\n }\n } else if (deltaX > 0) {\n if (io.events.isEnabled(\"swiperight\") && !system.isPaused) {\n io.events.dispatchImmediately(\"wheelright\", {\n type: \"wheelright\",\n target: io,\n event: ev,\n point: pointer.point,\n shift: shift\n });\n }\n // Vertical\n } else if (deltaY < 0) {\n if (io.events.isEnabled(\"wheelup\") && !system.isPaused) {\n io.events.dispatchImmediately(\"wheelup\", {\n type: \"wheelup\",\n target: io,\n event: ev,\n point: pointer.point,\n shift: shift\n });\n }\n } else if (deltaY > 0) {\n if (io.events.isEnabled(\"wheeldown\") && !system.isPaused) {\n io.events.dispatchImmediately(\"wheeldown\", {\n type: \"wheeldown\",\n target: io,\n event: ev,\n point: pointer.point,\n shift: shift\n });\n }\n }\n };\n /**\r\n * Initiates inertia checking sub-routines for different movement types:\r\n * drag, resize.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite\r\n * @param pointer\r\n */\n Interaction.prototype.handleInertia = function (io, pointer) {\n if (io.draggable && io.downPointers.length === 0) {\n this.handleMoveInertia(io, pointer);\n }\n if (io.resizable && io.downPointers.length > 1) {\n this.handleResizeInertia(io, pointer);\n }\n };\n /**\r\n * Continues moving the element to simulate the effect of inertia. Happens\r\n * when `inert` and `draggable` object is dragged and then released.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.handleMoveInertia = function (io, pointer) {\n var interaction = io;\n var type = \"move\";\n var point = {\n \"x\": pointer.point.x,\n \"y\": pointer.point.y\n };\n var startPoint = {\n \"x\": pointer.startPoint.x,\n \"y\": pointer.startPoint.y\n };\n // Init inertia object\n var inertia = new Inertia(interaction, type, point, startPoint);\n // Get inertia data\n var ref = this.getTrailPoint(pointer, $time.getTime() - this.getInertiaOption(io, \"move\", \"time\"));\n if (typeof ref === \"undefined\") {\n this.processDragStop(io, pointer, pointer.lastUpEvent);\n return;\n }\n // Init animation options\n var factor = this.getInertiaOption(io, \"move\", \"factor\");\n var animationOptions = [{\n \"to\": pointer.point.x + (pointer.point.x - ref.point.x) * factor,\n \"property\": \"x\"\n }, {\n \"to\": pointer.point.y + (pointer.point.y - ref.point.y) * factor,\n \"property\": \"y\"\n }];\n // Start animation\n var animation = new Animation(inertia, animationOptions, this.getInertiaOption(io, \"move\", \"duration\"), this.getInertiaOption(io, \"move\", \"easing\")).start();\n this._disposers.push(animation.events.on(\"animationended\", function (ev) {\n inertia.done();\n }));\n // Add inertia object\n io.inertias.setKey(\"move\", inertia);\n };\n /**\r\n * Continues resizing of a `resizable` element after it is resized and\r\n * released.\r\n *\r\n * **NOTE:** this is is just a placeholder function. No actual fucntionality\r\n * is implemented, yet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.handleResizeInertia = function (io, pointer) {\n // Some day, folks. Some day...\n };\n /**\r\n * Recalculates element's position and size based on position of\r\n * all its related pointers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param ev Original event\r\n */\n Interaction.prototype.handleTransform = function (io, ev) {\n // Get primary pointer and its respective points\n var pointer1 = io.downPointers.getIndex(0);\n var point1 = null;\n var startPoint1 = null;\n if (pointer1) {\n point1 = pointer1.point;\n startPoint1 = pointer1.startPoint;\n }\n // Init secondary pointer\n var pointer2;\n var point2;\n var startPoint2;\n // Use center of the sprite to simulate \"second\" point of touch\n point2 = {\n \"x\": io.originalPosition.x,\n \"y\": io.originalPosition.y\n };\n startPoint2 = point2;\n // Determine if it's a sinngle pointer or multi\n var singlePoint = true;\n for (var i = 1; i < io.downPointers.length; i++) {\n // Get pointer\n var nextPointer = io.downPointers.getIndex(i);\n // Doublecheck if it's not the same pointer by comparing original position\n if (startPoint1.x != nextPointer.startPoint.x && startPoint1.y != nextPointer.startPoint.y) {\n // Several pointers down\n singlePoint = false;\n // Get second pointer\n pointer2 = nextPointer;\n point2 = pointer2.point;\n startPoint2 = pointer2.startPoint;\n // Stop looking\n break;\n }\n }\n // Primary touch point moved?\n var pointer1Moved = pointer1 && this.moved(pointer1, 0);\n // Report DRAG_START if necessary\n if (io.draggable && pointer1 && pointer1.dragStartEvents && pointer1.dragStartEvents.length && pointer1Moved) {\n if (io.events.isEnabled(\"dragstart\") && !system.isPaused) {\n io.events.dispatchImmediately(\"dragstart\", pointer1.dragStartEvents.shift());\n }\n //delete pointer1.dragStartEvents;\n }\n // Determine what we do in order of superiority\n if (singlePoint && io.draggable) {\n // We have only one pointer and the Sprite is draggable\n // There's nothing else to be done - just move it\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\n if (this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\"))) {\n this.cancelAllHovers(ev);\n }\n } else {\n // Check if second touch point moved\n var pointer2Moved = pointer2 && this.moved(pointer2, 0);\n if (this.shouldCancelHovers(pointer1) && this.moved(pointer1, this.getHitOption(io, \"hitTolerance\")) || this.shouldCancelHovers(pointer2) && this.moved(pointer2, this.getHitOption(io, \"hitTolerance\"))) {\n this.cancelAllHovers(ev);\n }\n if (io.draggable && io.resizable) {\n //this.handleTransformAll(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved);\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved && pointer2Moved, pointer1.touch);\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\n } else {\n if (io.draggable) {\n this.handleTransformMove(io, point1, startPoint1, ev, pointer1Moved, pointer1.touch);\n }\n if (io.resizable && (!singlePoint || ev.ctrlKey)) {\n this.handleTransformResize(io, point1, startPoint1, point2, startPoint2, ev, pointer1Moved && pointer2Moved, pointer1.touch);\n }\n }\n }\n };\n /**\r\n * Handles movement of the dragged element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point Current point of the pointer\r\n * @param startPoint Starting point of the pointer\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\n Interaction.prototype.handleTransformMove = function (io, point, startPoint, ev, pointerMoved, touch) {\n if (pointerMoved) {\n if (io.events.isEnabled(\"drag\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\n var imev = {\n type: \"drag\",\n target: io,\n event: ev,\n shift: {\n \"x\": point.x - startPoint.x,\n \"y\": point.y - startPoint.y\n },\n startPoint: startPoint,\n point: point,\n touch: touch\n };\n io.events.dispatchImmediately(\"drag\", imev);\n }\n }\n };\n /**\r\n * Handles resizing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param point1 Current position of reference point #1\r\n * @param startPoint1 Original position of reference point #1\r\n * @param point2 Current position of reference point #2\r\n * @param startPoint2 Original position of reference point #2\r\n * @param ev Original event\r\n * @param pointerMoved Did pointer move?\r\n */\n Interaction.prototype.handleTransformResize = function (io, point1, startPoint1, point2, startPoint2, ev, pointerMoved, touch) {\n if (io.events.isEnabled(\"resize\") && !system.isPaused && (!io.isTouchProtected || !touch)) {\n var imev = {\n type: \"resize\",\n target: io,\n event: ev,\n scale: $math.getScale(point1, startPoint1, point2, startPoint2),\n startPoint1: startPoint1,\n point1: point1,\n startPoint2: startPoint2,\n point2: point2,\n touch: touch\n };\n io.events.dispatchImmediately(\"resize\", imev);\n }\n };\n /**\r\n * Handles all the preparations of the element when it starts to be dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.processDragStart = function (io, pointer, ev) {\n // Add to draggedObjects\n this.transformedObjects.moveValue(io);\n if (this.shouldCancelHovers(pointer)) {\n this.cancelAllHovers(ev);\n }\n // Report \"dragstart\"\n var imev = {\n type: \"dragstart\",\n target: io,\n event: ev,\n touch: pointer ? pointer.touch : false\n };\n // Log object that we are starting to drag, so we can check against and\n // avoid hovers on other objects that might be in the path of movement.\n if (pointer) {\n pointer.dragTarget = io;\n //pointer.startPoint = pointer.point;\n }\n /**\r\n * If pointer is set we will not fire the event until the pointer has\r\n * actually moved. If it's not set we don't have to wait for anything, so we\r\n * just fire off the event right away.\r\n */\n if (pointer && pointer.dragStartEvents) {\n pointer.dragStartEvents.push(imev);\n } else {\n if (!system.isPaused) {\n io.dispatchImmediately(\"dragstart\", imev);\n }\n }\n };\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.processDragStop = function (io, pointer, ev) {\n // Pointer set?\n if (!pointer) {\n pointer = this.getDragPointer(io);\n }\n // Unset drag object\n if (pointer) {\n pointer.dragTarget = undefined;\n }\n // Removed from transformedObjects\n this.transformedObjects.removeValue(io);\n // Unlock document\n //this.unlockDocument();\n // Report dragstop\n if (!pointer || this.moved(pointer, 0)) {\n if (io.events.isEnabled(\"dragstop\") && !system.isPaused) {\n var imev = {\n type: \"dragstop\",\n target: io,\n touch: pointer ? pointer.touch : false\n };\n io.events.dispatchImmediately(\"dragstop\", imev);\n }\n }\n };\n /**\r\n * Handles all the preparations of the element when it starts to be resized.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.processResizeStart = function (io, pointer, ev) {\n // Add to draggedObjects\n this.transformedObjects.moveValue(io);\n };\n /**\r\n * Finishes up element drag operation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @param ev Original event\r\n */\n Interaction.prototype.processResizeStop = function (io, pointer, ev) {\n // Removed from transformedObjects\n this.transformedObjects.removeValue(io);\n };\n /**\r\n * ==========================================================================\r\n * Controls for InteractionObjects initiating directly\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Manually triggers drag start on the element. Could be useful in cases\r\n * where tracking or dragging one element can also influence dragging another\r\n * element.\r\n *\r\n * Passing in `pointer` reference is advisable. If not passed in it will try\r\n * to determine which pointer to attach to. However, it's better to specify\r\n * it explicitly.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.dragStart = function (io, pointer) {\n if (!pointer) {\n pointer = this.getDragPointer(io);\n }\n if (pointer) {\n this.handleDown(io, pointer, pointer.lastDownEvent);\n }\n };\n /**\r\n * Manually ends drag on the element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.dragStop = function (io, pointer, cancelled) {\n if (!pointer) {\n pointer = this.getDragPointer(io);\n }\n if (pointer && !cancelled) {\n this.handleGlobalUp(pointer, pointer.lastUpEvent, cancelled);\n }\n };\n /**\r\n * This method uses a fuzzy logic to find the pointer to be used for dragging.\r\n * Beware that this is not a rock-solid solution. If there are a few objects\r\n * being dragged at the same time, you may get unexepected results.\r\n *\r\n * @param io InteractionObject to get pointers from\r\n * @return Pointer currently being used for dragging\r\n */\n Interaction.prototype.getDragPointer = function (io) {\n if (io) {\n // InteractionObject is supplied\n // Use it's first down pointer\n return io.downPointers.getIndex(0);\n } else if (this.transformedObjects.length) {\n // Use first dragged object\n return this.getDragPointer(this.transformedObjects.getIndex(0));\n } else {\n return undefined;\n }\n };\n /**\r\n * ==========================================================================\r\n * Utils\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns pointer id for the given event object.\r\n *\r\n * @param ev Event\r\n * @return Pointer ID\r\n */\n Interaction.prototype.getPointerId = function (ev) {\n var id = \"\";\n if ($type.hasValue(ev.identifier)) {\n id = \"\" + ev.identifier;\n } else if ($type.hasValue(ev.pointerId)) {\n id = \"\" + ev.pointerId;\n } else {\n id = \"m\";\n }\n return id.replace(\"-\", \"\");\n };\n /**\r\n * Returns a cursor position of the event.\r\n *\r\n * @param ev Original event\r\n * @return Event point\r\n */\n Interaction.prototype.getPointerPoint = function (ev) {\n return {\n \"x\": ev.clientX,\n \"y\": ev.clientY\n };\n };\n /**\r\n * Returns [[Pointer]] object that is associated with the Event.\r\n *\r\n * If no such [[Pointer]] object exists, it is created.\r\n *\r\n * @param ev Event\r\n * @return Pointer\r\n */\n Interaction.prototype.getPointer = function (ev) {\n // Get pointer id\n var id = this.getPointerId(ev);\n // Get current coordinates\n var point = this.getPointerPoint(ev);\n // Look for the pointer in the Dictionary if it maybe already exists\n var pointer;\n if (this.pointers.hasKey(id)) {\n // We already have such pointer\n pointer = this.pointers.getKey(id);\n // We need this, because Edge reuses pointer ids across touch and mouse\n pointer.touch = this.isPointerTouch(ev);\n // Reset pointer\n //pointer.point = point;\n } else {\n // Init pointer\n pointer = {\n \"id\": id,\n //\"touch\": !(ev instanceof MouseEvent) || ((ev).pointerType && (ev).pointerType != \"pointer\"),\n //\"touch\": !(ev instanceof MouseEvent) || ((ev).pointerType && (ev).pointerType != \"mouse\"),\n \"touch\": this.isPointerTouch(ev),\n \"startPoint\": point,\n \"startTime\": $time.getTime(),\n \"point\": point,\n \"track\": [],\n \"swipeCanceled\": false,\n \"dragStartEvents\": []\n };\n // Add first breadcrumb\n this.addBreadCrumb(pointer, point);\n // Add for re-use later\n this.pointers.setKey(id, pointer);\n }\n // Log last event\n pointer.lastEvent = ev;\n this.lastPointer = pointer;\n return pointer;\n };\n /**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\n Interaction.prototype.isPointerTouch = function (ev) {\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\n return true;\n } else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && $type.hasValue(ev.pointerType)) {\n switch (ev.pointerType) {\n case \"touch\":\n case \"pen\":\n case 2:\n return true;\n case \"mouse\":\n case 4:\n return false;\n default:\n return !(ev instanceof MouseEvent);\n }\n } else if ($type.hasValue(ev.type)) {\n if (ev.type.match(/^mouse/)) {\n return false;\n }\n }\n return true;\n };\n /**\r\n * Resets the poiner to original state, i.e. cleans movement information,\r\n * starting point, etc.\r\n *\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.resetPointer = function (pointer, ev) {\n // Get current coordinates\n var point = this.getPointerPoint(ev);\n ;\n pointer.startTime = $time.getTime();\n pointer.startPoint = {\n x: point.x,\n y: point.y\n };\n pointer.point = {\n x: point.x,\n y: point.y\n };\n pointer.track = [];\n pointer.swipeCanceled = false;\n //clearTimeout(pointer.swipeTimeout);\n //clearTimeout(pointer.holdTimeout);\n };\n /**\r\n * Adds a \"breadcrumb\" point to the [[Pointer]] to log its movement path.\r\n *\r\n * @param pointer Pointer\r\n * @param point Point coordinates\r\n */\n Interaction.prototype.addBreadCrumb = function (pointer, point) {\n pointer.track.push({\n \"timestamp\": $time.getTime(),\n \"point\": point\n });\n };\n /**\r\n * Prepares the document for various touch-related operations.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.lockDocument = function () {\n this.prepElement(this.body);\n };\n /**\r\n * Restores document functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.unlockDocument = function () {\n if (this.transformedObjects.length == 0) {\n this.restoreAllStyles(this.body);\n }\n };\n /**\r\n * Lock element (disable all touch)\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.lockElement = function (io) {\n this.prepElement(io);\n };\n /**\r\n * Restores element's functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.unlockElement = function (io) {\n this.restoreAllStyles(io);\n };\n /**\r\n * Locks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.lockWheel = function () {\n window.addEventListener(this._pointerEvents.wheel, this.wheelLockEvent, this._passiveSupported ? {\n passive: false\n } : false);\n };\n /**\r\n * Unlocks document's wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Interaction.prototype.unlockWheel = function () {\n window.removeEventListener(this._pointerEvents.wheel, this.wheelLockEvent);\n };\n /**\r\n * Checks if top element at pointer's position belongs to the SVG.\r\n *\r\n * @ignore Exlude from docs\r\n * @param pointer Pointer\r\n * @param svg The element\r\n * @param id A unique identifier of the object that is checking for locality\r\n * @return Belongs to SVG\r\n */\n Interaction.prototype.isLocalElement = function (pointer, svg, id) {\n var cached = this.getCache(\"local_pointer_\" + pointer.id);\n if ($type.hasValue(cached)) {\n return cached;\n }\n var doc = $dom.getRoot(svg) || document;\n if (doc.elementFromPoint) {\n var target = doc.elementFromPoint(pointer.point.x, pointer.point.y);\n var local = target && $dom.contains(svg, target);\n this.setCache(\"local_pointer_\" + pointer.id + \"_\" + id, local, 100);\n return local;\n }\n return false;\n };\n /**\r\n * A function that cancels mouse wheel scroll.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @return Returns `false` to cancel\r\n */\n Interaction.prototype.wheelLockEvent = function (ev) {\n ev.preventDefault();\n return false;\n };\n /**\r\n * Applies a set of styles to an element. Stores the original styles so they\r\n * can be restored later.\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\n Interaction.prototype.prepElement = function (io) {\n var el = io.element;\n if (el) {\n // Define possible props\n var props = [\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\", \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\", \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\", \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\", \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\", \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"];\n for (var i = 0; i < props.length; i++) {\n if (props[i] in el.style) {\n this.setTemporaryStyle(io, props[i], \"none\");\n }\n }\n // Remove iOS-specific selection;\n this.setTemporaryStyle(io, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\n //this.setTemporaryStyle(io, \"webkitOverflowScrolling\", \"none\");\n }\n };\n /**\r\n * Restores replaced styles\r\n *\r\n * @ignore\r\n * @param io Element\r\n */\n Interaction.prototype.unprepElement = function (io) {\n var el = io.element;\n if (el) {\n // Define possible props\n var props = [\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\", \"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\", \"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\", \"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\", \"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\", \"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"];\n for (var i = 0; i < props.length; i++) {\n if (props[i] in el.style) {\n this.restoreStyle(io, props[i]);\n }\n }\n // Remove iOS-specific selection;\n this.restoreStyle(io, \"tapHighlightColor\");\n //this.restoreStyle(io, \"webkitOverflowScrolling\");\n }\n };\n /**\r\n * Returns an option associated with hit events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getHitOption = function (io, option) {\n var res = io.hitOptions[option];\n if (typeof res === \"undefined\") {\n res = this.hitOptions[option];\n }\n return res;\n };\n /**\r\n * Returns an option associated with hover events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getHoverOption = function (io, option) {\n var res = io.hoverOptions[option];\n if (typeof res === \"undefined\") {\n res = this.hoverOptions[option];\n }\n return res;\n };\n /**\r\n * Returns an option associated with swipe events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getSwipeOption = function (io, option) {\n var res = io.swipeOptions[option];\n if (typeof res === \"undefined\") {\n res = this.swipeOptions[option];\n }\n return res;\n };\n /**\r\n * Returns an option for keyboard.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getKeyboardOption = function (io, option) {\n var res = io.keyboardOptions[option];\n if (typeof res === \"undefined\") {\n res = this.keyboardOptions[option];\n }\n return res;\n };\n /**\r\n * Returns an option for mouse.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getMouseOption = function (io, option) {\n var res = io.mouseOptions[option];\n if (typeof res === \"undefined\") {\n res = this.mouseOptions[option];\n }\n return res;\n };\n /**\r\n * Returns an option associated with inertia.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param type Inertia type\r\n * @param option Option key\r\n * @return Option value\r\n */\n Interaction.prototype.getInertiaOption = function (io, type, option) {\n var options = io.inertiaOptions.getKey(type);\n var res;\n if (options && $type.hasValue(options[option])) {\n res = options[option];\n } else {\n res = this.inertiaOptions.getKey(type)[option];\n }\n return res;\n };\n /**\r\n * Stops currently going on inertia. Useful if inertia is currently being\r\n * animated and the object is being interacted with.\r\n *\r\n * @param io Element\r\n */\n Interaction.prototype.stopInertia = function (io) {\n var x;\n var inertias = [\"move\", \"resize\"];\n for (var i = 0; i < inertias.length; i++) {\n x = inertias[i];\n if (io.inertias.hasKey(x)) {\n var inertia = io.inertias.getKey(x);\n if (inertia) {\n inertia.dispose();\n //io.inertiaAnimations.removeKey(x);\n //this.processDragStop(io);\n continue;\n }\n }\n }\n };\n /**\r\n * Check if swiping is currently being performed on an object.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer to check\r\n * @return `true` if swiping\r\n */\n Interaction.prototype.swiping = function (io, pointer) {\n var now = $time.getTime();\n if (pointer.swipeCanceled || !io.swipeable) {\n return false;\n } else if (Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\") && pointer.startTime > now - this.getSwipeOption(io, \"time\")) {\n return true;\n } else {\n return false;\n }\n };\n /**\r\n * Returns `true` if a successfull swipe action was performed on an element.\r\n *\r\n * @param io Element\r\n * @param pointer Pointer\r\n * @return Swiped?\r\n */\n Interaction.prototype.swiped = function (io, pointer) {\n var now = $time.getTime();\n if (pointer.swipeCanceled) {\n return false;\n } else if (Math.abs(pointer.startPoint.x - pointer.point.x) > this.getSwipeOption(io, \"horizontalThreshold\") && Math.abs(pointer.startPoint.y - pointer.point.y) < this.getSwipeOption(io, \"verticalThreshold\") && pointer.startTime > now - this.getSwipeOption(io, \"time\")) {\n return true;\n } else {\n return false;\n }\n };\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param Element\r\n */\n Interaction.prototype.applyCursorOverStyle = function (io) {\n // Get sprite's cursor ooptions\n var options = io.cursorOptions;\n if (!$type.hasValue(options.overStyle)) {\n return;\n }\n // Apply cursor down styles\n for (var i = 0; i < options.overStyle.length; i++) {\n $dom.setStyle(io.element, options.overStyle[i].property, options.overStyle[i].value);\n }\n };\n /**\r\n * Applies style to mouse cursor based on its stage in relation to\r\n * [[InteractionObject]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.applyCursorDownStyle = function (io, pointer) {\n // Not applicable for touch pointers since they don't display a cursor\n if (pointer && pointer.touch) {\n return;\n }\n var downStyle = io.cursorOptions.downStyle;\n // Is down?\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\n // Apply cursor down styles\n for (var i = 0; i < downStyle.length; i++) {\n this.setTemporaryStyle(this.body, downStyle[i].property, downStyle[i].value);\n this.setTemporaryStyle(io, downStyle[i].property, downStyle[i].value);\n }\n }\n };\n /**\r\n * Restores original cursor style for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param io Element\r\n * @param pointer Pointer\r\n */\n Interaction.prototype.restoreCursorDownStyle = function (io, pointer) {\n // Not applicable for touch pointers since they don't display a cursor\n if (pointer && pointer.touch) {\n return;\n }\n var downStyle = io.cursorOptions.downStyle;\n // Is down?\n if (io.downPointers.contains(pointer) && $type.hasValue(downStyle)) {\n // Apply cursor down styles\n for (var i = 0; i < downStyle.length; i++) {\n this.restoreStyle(this.body, downStyle[i].property);\n this.restoreStyle(io, downStyle[i].property);\n }\n }\n };\n /**\r\n * Sets style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\n Interaction.prototype.setGlobalStyle = function (style) {\n var body = getInteraction().body;\n var styles = $type.isArray(style) ? style : [style];\n for (var i = 0; i < styles.length; i++) {\n this.setTemporaryStyle(body, styles[i].property, styles[i].value);\n }\n };\n /**\r\n * Restores style on the body of the document.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Style definitions\r\n */\n Interaction.prototype.restoreGlobalStyle = function (style) {\n var body = getInteraction().body;\n var styles = $type.isArray(style) ? style : [style];\n for (var i = 0; i < styles.length; i++) {\n this.restoreStyle(body, styles[i].property);\n }\n };\n /**\r\n * Checks if element is a non-cahrt element.\r\n *\r\n * @param io InteractionObject\r\n * @return Global element?\r\n */\n Interaction.prototype.isGlobalElement = function (io) {\n return document.body === io.element;\n };\n /**\r\n * Checks if pointer has moved since it was created.\r\n *\r\n * @param pointer Pointer\r\n * @param tolerance Tolerance in pixels\r\n * @param minTime Minimum time required for the pointer to be down to be considered moved\r\n * @return `true` if the pointer has moved\r\n */\n Interaction.prototype.moved = function (pointer, tolerance, minTime) {\n /*// If there was more time, we don't care if cursor actually moved\r\n let duration = $time.getTime() - pointer.startTime;\r\n if ($type.hasValue(minTime) && (minTime > duration)) {\r\n return false;\r\n }*/\n if (minTime === void 0) {\n minTime = 300;\n }\n // That was quick measure shift\n var shift = this.getShift(pointer);\n return Math.abs(shift.x) > tolerance || Math.abs(shift.y) > tolerance;\n };\n /**\r\n * Returns if pointer is \"old\", meaning it has been pressing for more than\r\n * X milliseconds.\r\n *\r\n * @ignore\r\n * @param pointer Pointer\r\n * @param minTime Minimum time to consider pointer old\r\n * @return {boolean}\r\n */\n Interaction.prototype.old = function (pointer, minTime) {\n if (minTime === void 0) {\n minTime = 300;\n }\n return $time.getTime() - pointer.startTime > minTime;\n };\n /**\r\n * Returns total a shift in pointers coordinates between its original\r\n * position and now.\r\n *\r\n * @param pointer Pointer\r\n * @return Shift in coordinates (x/y)\r\n */\n Interaction.prototype.getShift = function (pointer) {\n return {\n \"x\": pointer.startPoint.x - pointer.point.x,\n \"y\": pointer.startPoint.y - pointer.point.y\n };\n };\n /**\r\n * Returns a point from [[Pointer]]'s move history at a certain timetamp.\r\n *\r\n * @param pointer Pointer\r\n * @param timestamp Timestamp\r\n * @return Point\r\n */\n Interaction.prototype.getTrailPoint = function (pointer, timestamp) {\n var res;\n for (var i = 0; i < pointer.track.length; i++) {\n if (pointer.track[i].timestamp >= timestamp) {\n res = pointer.track[i];\n break;\n }\n }\n return res;\n };\n /**\r\n * Checks if same pointer already exists in the list.\r\n *\r\n * @param list List to check agains\r\n * @param pointer Pointer\r\n * @return Exists?\r\n */\n Interaction.prototype.pointerExists = function (list, pointer) {\n var exists = false;\n list.each(function (item) {\n if (item == pointer) {\n return;\n }\n exists = item.point.x == pointer.point.x && item.point.y == pointer.point.y;\n });\n return exists;\n };\n /**\r\n * Returns an [[InteractionObject]] representation of a DOM element.\r\n *\r\n * You can use this on any HTML or SVG element, to add interactive features\r\n * to it.\r\n *\r\n * @param element Element\r\n * @return InteractionObject\r\n */\n Interaction.prototype.getInteraction = function (element) {\n return new InteractionObject(element);\n };\n /**\r\n * Sets a style property on an element. Stores original value to be restored\r\n * later with [[restoreStyle]].\r\n *\r\n * @see {@link restoreStyle}\r\n * @param io Element\r\n * @param property Property\r\n * @param value Value\r\n */\n Interaction.prototype.setTemporaryStyle = function (io, property, value) {\n // Get element\n //let el = io.element.tagName == \"g\" ? io.element.parentNode : io.element;\n var el = io.element;\n // Save original property if it is set and hasn't been saved before already\n if ($type.hasValue(el.style[property]) && !io.replacedStyles.hasKey(property)) {\n io.replacedStyles.setKey(property, el.style[property]);\n }\n // Replace with the new one\n $dom.setStyle(el, property, value);\n };\n /**\r\n * Restores specific style on an element.\r\n *\r\n * @param io Element\r\n * @param property Style property\r\n */\n Interaction.prototype.restoreStyle = function (io, property) {\n // Reset style\n if (io.replacedStyles.hasKey(property)) {\n io.element.style[property] = io.replacedStyles.getKey(property);\n io.replacedStyles.removeKey(property);\n } else {\n delete io.element.style[property];\n }\n };\n /**\r\n * Restore temporarily reset styles on an element.\r\n *\r\n * @param io Element\r\n */\n Interaction.prototype.restoreAllStyles = function (io) {\n $iter.each(io.replacedStyles.iterator(), function (a) {\n var key = a[0];\n var value = a[1];\n io.element.style[key] = value;\n io.replacedStyles.removeKey(key);\n });\n };\n /**\r\n * Disposes this object and cleans up after itself.\r\n */\n Interaction.prototype.dispose = function () {\n if (!this.isDisposed()) {\n _super.prototype.dispose.call(this);\n this.restoreAllStyles(this.body);\n this.unlockWheel();\n }\n };\n // @ts-ignore Used for debugging\n Interaction.prototype.log = function (text, ev, io) {\n var show = true;\n if (show) {\n // Touchlist?\n if (ev.changedTouches) {\n for (var i = 0; i < ev.changedTouches.length; i++) {\n this.logTouch(text, ev.type, ev.changedTouches[i]);\n }\n return;\n }\n // Get type\n var type = \"\";\n if (ev.pointerType) {\n switch (ev.pointerType) {\n case 2:\n type = \"touch\";\n break;\n case 4:\n type = \"mouse\";\n break;\n default:\n type = ev.pointerType;\n break;\n }\n } else if (typeof TouchEvent != \"undefined\" && ev instanceof TouchEvent) {\n type = \"touch\";\n } else if (ev.type.match(/^mouse/)) {\n type = \"mouse\";\n } else {\n type = \"???\";\n }\n // Get ID\n var id = \"\";\n if ($type.hasValue(ev.identifier)) {\n id = ev.identifier;\n } else if ($type.hasValue(ev.pointerId)) {\n id = ev.pointerId;\n } else {\n id = \"???\";\n }\n if (io) {\n console.log(text + \" (\" + io.uid + \") \" + ev.type + \" \" + type + \" \" + id);\n } else {\n console.log(text + \" \" + ev.type + \" \" + type + \" \" + id);\n }\n }\n };\n /**\r\n * Checks whether there are currently any objects being transformed (dragged\r\n * or resized).\r\n *\r\n * If `except` is set, that object will be ignored.\r\n *\r\n * @since 4.9.3\r\n * @param except Ignore this object(s)\r\n * @return Objects are being transformed\r\n */\n Interaction.prototype.areTransformed = function (except) {\n var count = this.transformedObjects.length;\n if (except) {\n var ex = $type.isArray(except) ? except : [except];\n for (var i = 0; i < ex.length; i++) {\n if (this.transformedObjects.contains(ex[i])) {\n count--;\n }\n }\n }\n return count > 0;\n };\n /**\r\n * Log.\r\n */\n Interaction.prototype.logTouch = function (text, type, ev) {\n console.log(text + \" \" + type + \" \" + \"touch\" + \" \" + ev.identifier);\n };\n Object.defineProperty(Interaction, \"passiveSupported\", {\n /**\r\n * Indicates if passive mode options is supported by this browser.\r\n */\n get: function () {\n var _this = this;\n if (this._passiveSupported == null) {\n // Check for passive mode support\n try {\n var options_1 = Object.defineProperty({}, \"passive\", {\n get: function () {\n _this._passiveSupported = true;\n }\n });\n window.addEventListener(\"test\", options_1, options_1);\n window.removeEventListener(\"test\", options_1, options_1);\n } catch (err) {\n this._passiveSupported = false;\n }\n }\n return this._passiveSupported;\n },\n enumerable: true,\n configurable: true\n });\n return Interaction;\n}(BaseObjectEvents);\nexport { Interaction };\nvar interaction = null;\n/**\r\n * Returns a single unified global instance of [[Interaction]].\r\n *\r\n * All code should use this function, rather than create their own instances\r\n * of [[Interaction]].\r\n */\nexport function getInteraction() {\n if (interaction == null) {\n interaction = new Interaction();\n }\n return interaction;\n}\n//# sourceMappingURL=Interaction.js.map","/**\r\n * Popup class is used to display information over chart area.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport popupCSS from \"./PopupCSS\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { BaseObjectEvents } from \"../Base\";\nimport { getInteraction } from \"../interaction/Interaction\";\nimport { keyboard } from \"../utils/Keyboard\";\nimport { MultiDisposer } from \"../utils/Disposer\";\nimport { getShadowRoot } from \"../utils/DOM\";\nimport * as $type from \"../utils/Type\";\nimport * as $object from \"../utils/Object\";\n/**\r\n * Shows an HTML popup which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n * @todo Positioning over whole window\r\n */\nvar Popup = /** @class */function (_super) {\n __extends(Popup, _super);\n /**\r\n * Constructor\r\n */\n function Popup() {\n var _this = _super.call(this) || this;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n /**\r\n * Holds references to various HTML elements, Popup consists of.\r\n */\n _this._elements = {};\n /**\r\n * Holdes Interaction objects for various Popup's elements.\r\n */\n _this._IOs = {};\n /**\r\n * Contents of popup window.\r\n */\n _this._content = \"\";\n /**\r\n * Title of the popup window.\r\n */\n _this._title = \"\";\n /**\r\n * Prefix to apply to class names for popup elements.\r\n */\n _this._classPrefix = \"ampopup\";\n /**\r\n * If set to `true` [[Popup]] will use default styles.\r\n */\n _this._defaultStyles = true;\n /**\r\n * If set to `true` [[Popup]] will dim out all chart content behind it by\r\n * showing a semi-transparent fill. (curtain)\r\n */\n _this._showCurtain = false;\n /**\r\n * Indicates whether popup can be dragged.\r\n */\n _this._draggable = true;\n /**\r\n * Horizontal position of the content window.\r\n */\n _this._align = \"center\";\n /**\r\n * Resize popup as images are being loaded.\r\n */\n _this._dynamicResize = true;\n /**\r\n * Vertical position of the content window.\r\n */\n _this._verticalAlign = \"middle\";\n /**\r\n * Shift in position of the element. (used for dragging)\r\n */\n _this._shift = {\n x: 0,\n y: 0\n };\n /**\r\n * Temporary shift in position of the element. (used for dragging)\r\n */\n _this._tempShift = {\n x: 0,\n y: 0\n };\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n */\n _this._readerTitle = \"\";\n /**\r\n * Is popup closable?\r\n */\n _this._closable = true;\n /**\r\n * Was CSS already loaded?\r\n */\n _this._cssLoaded = false;\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore Feature not yet implemented\r\n * @todo Implement\r\n */\n _this._fitTo = \"window\";\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.isTemplate = false;\n /**\r\n * Indicates if the element was already sized and should not be measured for\r\n * size again, saving some precious resources.\r\n */\n _this._sized = false;\n _this.className = \"Popup\";\n return _this;\n }\n /**\r\n * Shows popup window.\r\n */\n Popup.prototype.open = function () {\n if (this.container) {\n if (this._elements.wrapper) {\n this.container.appendChild(this._elements.wrapper);\n }\n if (this._elements.curtain) {\n this.container.appendChild(this._elements.curtain);\n this.showCurtain = this.showCurtain;\n }\n this.positionElement();\n this.dispatchImmediately(\"opened\");\n }\n };\n /**\r\n * Hides popup window.\r\n */\n Popup.prototype.close = function () {\n if (this._elements.wrapper) {\n if (this._elements.wrapper.parentElement) {\n this._elements.wrapper.parentElement.removeChild(this._elements.wrapper);\n }\n }\n if (this._elements.curtain) {\n if (this._elements.curtain.parentElement) {\n this._elements.curtain.parentElement.removeChild(this._elements.curtain);\n }\n }\n this.dispatchImmediately(\"closed\");\n this.releasePointers();\n };\n /**\r\n * Destroy (dispose) popup.\r\n */\n Popup.prototype.dispose = function () {\n this.close();\n _super.prototype.dispose.call(this);\n };\n /**\r\n * Positions content element in the center of popup based on its actual size.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Popup.prototype.positionElement = function (forceResize) {\n var _this = this;\n if (forceResize === void 0) {\n forceResize = true;\n }\n if (!this._elements.wrapper) {\n return;\n }\n setTimeout(function () {\n if (!_this._elements.wrapper) {\n return;\n }\n if (forceResize || !_this._sized) {\n _this._elements.wrapper.style.opacity = \"0.01\";\n _this._elements.wrapper.style.left = \"0\";\n _this._elements.wrapper.style.top = \"0\";\n _this._elements.wrapper.style.margin = \"0 0 0 0\";\n _this._elements.wrapper.style.width = \"\";\n _this._elements.wrapper.style.height = \"\";\n var bbox = _this._elements.wrapper.getBoundingClientRect();\n _this._elements.wrapper.style.width = bbox.width + \"px\";\n _this._elements.wrapper.style.height = bbox.height + \"px\";\n _this._sized = true;\n }\n // Check for any images that are not yet loaded\n if (_this.dynamicResize) {\n var images = _this._elements.wrapper.getElementsByTagName(\"img\");\n for (var i = 0; i < images.length; i++) {\n var image = images[i];\n if (!image.complete) {\n // Resize popup once again when image is loaded\n image.addEventListener(\"load\", function () {\n _this.positionElement(true);\n });\n // Do this for one image only as it will be checked again next time\n // anyway\n break;\n }\n }\n }\n setTimeout(function () {\n if (!_this._elements.wrapper) {\n return;\n }\n var bbox;\n if ((forceResize || !_this._sized) && _this._bbox) {\n bbox = _this._bbox;\n } else {\n bbox = _this._elements.wrapper.getBoundingClientRect();\n _this._elements.wrapper.style.opacity = \"\";\n }\n // Set horizontal positioning\n switch (_this.align) {\n case \"left\":\n _this._elements.wrapper.style.left = \"0\";\n _this._elements.wrapper.style.right = \"auto\";\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\n break;\n case \"center\":\n _this._elements.wrapper.style.left = \"50%\";\n _this._elements.wrapper.style.right = \"auto\";\n _this._elements.wrapper.style.marginLeft = _this.toStyle(Math.round(-bbox.width / 2) + (_this._shift.x + _this._tempShift.x));\n break;\n case \"right\":\n _this._elements.wrapper.style.left = \"auto\";\n _this._elements.wrapper.style.right = \"0\";\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\n break;\n default:\n _this._elements.wrapper.style.left = _this.toStyle(_this.left) || \"auto\";\n _this._elements.wrapper.style.right = _this.toStyle(_this.right) || \"auto\";\n _this._elements.wrapper.style.marginLeft = _this.toStyle(_this._shift.x + _this._tempShift.x);\n break;\n }\n // Set vertical positioning\n switch (_this.verticalAlign) {\n case \"top\":\n _this._elements.wrapper.style.top = \"0\";\n _this._elements.wrapper.style.bottom = \"auto\";\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\n break;\n case \"middle\":\n _this._elements.wrapper.style.top = \"50%\";\n _this._elements.wrapper.style.bottom = \"auto\";\n _this._elements.wrapper.style.marginTop = _this.toStyle(Math.round(-bbox.height / 2) + (_this._shift.y + _this._tempShift.y));\n break;\n case \"bottom\":\n _this._elements.wrapper.style.top = \"auto\";\n _this._elements.wrapper.style.bottom = \"0\";\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\n break;\n default:\n _this._elements.wrapper.style.top = _this.toStyle(_this.top) || \"auto\";\n _this._elements.wrapper.style.bottom = _this.toStyle(_this.bottom) || \"auto\";\n _this._elements.wrapper.style.marginTop = _this.toStyle(_this._shift.y + _this._tempShift.y);\n break;\n }\n }, 1);\n }, 1);\n };\n Popup.prototype.setupDragging = function () {\n var _this = this;\n if (this.draggable) {\n if (!this._IOs.header.events.has(\"drag\")) {\n this._IOs.header.events.on(\"drag\", function (ev) {\n _this._tempShift.x = ev.shift.x;\n _this._tempShift.y = ev.shift.y;\n _this.positionElement(false);\n });\n }\n if (!this._IOs.header.events.has(\"dragstop\")) {\n this._IOs.header.events.on(\"dragstop\", function (ev) {\n _this._shift.x += _this._tempShift.x;\n _this._shift.y += _this._tempShift.y;\n _this._tempShift.x = 0;\n _this._tempShift.y = 0;\n _this.positionElement(false);\n });\n }\n } else {\n if (this._IOs.header) {\n getInteraction().unprepElement(this._IOs.header);\n if (this._IOs.header.events.has(\"drag\")) {\n this._IOs.header.events.off(\"drag\");\n }\n if (this._IOs.header.events.has(\"dragstop\")) {\n this._IOs.header.events.off(\"dragstop\");\n }\n }\n }\n };\n Popup.prototype.toStyle = function (value) {\n if (!$type.hasValue(value)) {\n return null;\n } else if ($type.isNumber(value)) {\n return \"\" + value + \"px\";\n } else {\n return value.toString();\n }\n };\n Object.defineProperty(Popup.prototype, \"classPrefix\", {\n /**\r\n * A prefix that is applied to class names of various popup elements.\r\n *\r\n * @return Class name prefix\r\n */\n get: function () {\n return this.adapter.apply(\"classPrefix\", this._classPrefix);\n },\n /**\r\n * @param value Class name prefix\r\n */\n set: function (value) {\n this._classPrefix = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"classPrefixRaw\", {\n /**\r\n * Returns raw prefix (without adapters applied).\r\n *\r\n * @ignore Exclude from docs\r\n * @return Class name prefix\r\n */\n get: function () {\n return this._classPrefix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"content\", {\n /**\r\n * @return Popup content\r\n */\n get: function () {\n return this.adapter.apply(\"content\", this._content);\n },\n /**\r\n * Popup content.\r\n *\r\n * Popup content can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup content\r\n */\n set: function (value) {\n if (this._content != value) {\n this._content = value;\n if (!this._elements.content) {\n this.createContentElement();\n }\n this._elements.content.innerHTML = value;\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Popup.prototype.getClassNames = function () {\n return this.adapter.apply(\"classNames\", {\n wrapperClass: this.classPrefix + \"\",\n headerClass: this.classPrefix + \"-header\",\n titleClass: this.classPrefix + \"-title\",\n contentClass: this.classPrefix + \"-content\",\n insideClass: this.classPrefix + \"-inside\",\n curtainClass: this.classPrefix + \"-curtain\",\n closeClass: this.classPrefix + \"-close\"\n });\n };\n /**\r\n * Creates content element.\r\n */\n Popup.prototype.createContentElement = function () {\n // Check if it's created already\n if (this._elements.wrapper) {\n return;\n }\n // Get class names for popup elements\n var classNames = this.getClassNames();\n // Create content element\n var wrapper = document.createElement(\"div\");\n wrapper.className = classNames.contentClass;\n wrapper.style.opacity = \"0.01\";\n // Create close button\n var close = document.createElement(\"a\");\n close.className = classNames.closeClass;\n // header title\n var header = document.createElement(\"div\");\n header.className = classNames.headerClass;\n // Content title\n var title = document.createElement(\"div\");\n title.innerHTML = this.title;\n title.className = classNames.titleClass;\n if (!this.title) {\n title.style.display = \"none\";\n }\n // Content div\n var content = document.createElement(\"div\");\n content.className = classNames.insideClass;\n content.innerHTML = this.content;\n // Set up events for content\n this._IOs.wrapper = getInteraction().getInteraction(wrapper);\n this._IOs.header = getInteraction().getInteraction(header);\n this._disposers.push(this._IOs.wrapper);\n // Set hover/out events\n this._IOs.wrapper.events.on(\"over\", this.disablePointers, this);\n this._IOs.wrapper.events.on(\"out\", this.releasePointers, this);\n // Create an InteractionObject for close\n this._IOs.close = getInteraction().getInteraction(close);\n this._disposers.push(this._IOs.close);\n // Hide close for now\n close.style.visibility = \"hidden\";\n // Add accessible stuff\n wrapper.setAttribute(\"role\", \"dialog\");\n // Add to wrapper\n header.appendChild(close);\n header.appendChild(title);\n wrapper.appendChild(header);\n wrapper.appendChild(content);\n this.container.appendChild(wrapper);\n // Save for later access\n this._elements.wrapper = wrapper;\n this._elements.header = header;\n this._elements.content = content;\n this._elements.title = title;\n this._elements.close = close;\n // Load CSS\n if (this.defaultStyles) {\n this.loadDefaultCSS();\n }\n // Create curtain as well\n this.createCurtainElement();\n // Apply events\n this.applyEvents();\n this.applyReaderSettings();\n // Draggable?\n this.setupDragging();\n };\n Object.defineProperty(Popup.prototype, \"title\", {\n /**\r\n * @return Popup title\r\n */\n get: function () {\n return this.adapter.apply(\"title\", this._title);\n },\n /**\r\n * Popup title.\r\n *\r\n * Popup title can be any valid HTML, including CSS.\r\n *\r\n * @param value Popup title\r\n */\n set: function (value) {\n if (this._title != value) {\n this._title = value;\n if (!this._elements.content) {\n this.createContentElement();\n }\n this._elements.title.innerHTML = value;\n this.positionElement();\n this.applyReaderSettings();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"readerTitle\", {\n /**\r\n * @return Popup content\r\n */\n get: function () {\n return this.adapter.apply(\"readerTitle\", this._readerTitle != \"\" ? this._readerTitle : this.title);\n },\n /**\r\n * A title for screen readers. It is very highly recommended to set that title\r\n * so that people using screen reader tools can get an immediate summary of\r\n * the information in the popup.\r\n *\r\n * @param value Reader title\r\n */\n set: function (value) {\n if (this._readerTitle != value) {\n this._readerTitle = value;\n this.applyReaderSettings();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"closable\", {\n /**\r\n * @return Closable?\r\n */\n get: function () {\n return this.adapter.apply(\"closable\", this._closable);\n },\n /**\r\n * Is popup closable?\r\n *\r\n * If it is, it can be closed in a number of ways, e.g. by hitting ESC key,\r\n * clicking curtain, or clicking the close button.\r\n *\r\n * If it is not closable, the only way to close it is via `close()` call.\r\n *\r\n * @param value Closable?\r\n */\n set: function (value) {\n if (value !== this._closable) {\n this._closable = value;\n this.applyEvents();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"fitTo\", {\n /**\r\n * @ignore\r\n * @todo Implement\r\n * @return Fit option\r\n */\n get: function () {\n return this.adapter.apply(\"fitTo\", this._fitTo);\n },\n /**\r\n * If set to other than \"none\" will try to re-adjust the position of the\r\n * popop to fit within chart container or browser window.\r\n *\r\n * @ignore\r\n * @todo Implement\r\n * @default \"window\"\r\n * @param value Fit option\r\n */\n set: function (value) {\n if (value != this._fitTo) {\n this._fitTo = value;\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"defaultStyles\", {\n /**\r\n * @return Use default CSS?\r\n */\n get: function () {\n return this.adapter.apply(\"defaultStyles\", this._defaultStyles);\n },\n /**\r\n * Should popup use default CSS?\r\n *\r\n * If default CSS is disabled, an external CSS should handle the look of the\r\n * popup, since it will look quite out of place otherwise.\r\n *\r\n * @default true\r\n * @param Use default CSS?\r\n */\n set: function (value) {\n if (this._defaultStyles != value) {\n this._defaultStyles = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"showCurtain\", {\n /**\r\n * @return Show curtain?\r\n */\n get: function () {\n return this.adapter.apply(\"showCurtain\", this._showCurtain);\n },\n /**\r\n * Should popup use dim out all content behind it?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\n set: function (value) {\n if (this._showCurtain != value) {\n this._showCurtain = value;\n if (this._elements.curtain) {\n this._elements.curtain.style.display = value ? \"block\" : \"none\";\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates curtain element.\r\n */\n Popup.prototype.createCurtainElement = function () {\n // Get class names for popup elements\n var classNames = this.getClassNames();\n // Create the curtain\n var curtain = document.createElement(\"div\");\n curtain.className = classNames.curtainClass;\n // Append curtain to wrapper\n this.container.appendChild(curtain);\n // Create an InteractionObject for curtain because we might need to\n // set interactions on it\n this._IOs.curtain = getInteraction().getInteraction(curtain);\n // Add Curtain IO to disposers\n this._disposers.push(this._IOs.curtain);\n // Set events to disable underlying interactivity\n this._IOs.curtain.events.on(\"over\", this.disablePointers, this);\n this._IOs.curtain.events.on(\"out\", this.releasePointers, this);\n // Hide it?\n curtain.style.display = this.showCurtain ? \"block\" : \"none\";\n // Save for later\n this._elements.curtain = curtain;\n };\n Object.defineProperty(Popup.prototype, \"draggable\", {\n /**\r\n * @return Show curtain?\r\n */\n get: function () {\n return this.adapter.apply(\"draggable\", this._draggable);\n },\n /**\r\n * Can the popup be dragged with a pointer?\r\n *\r\n * @default false\r\n * @param Show curtain?\r\n */\n set: function (value) {\n if (this._draggable != value) {\n this._draggable = value;\n this.setupDragging();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"dynamicResize\", {\n /**\r\n * @return Resize dynamically?\r\n */\n get: function () {\n return this.adapter.apply(\"dynamicResize\", this._dynamicResize);\n },\n /**\r\n * Resize popup as images are being loaded.\r\n *\r\n * @default true\r\n * @since 4.9.17\r\n * @param Resize dynamically?\r\n */\n set: function (value) {\n if (this._dynamicResize != value) {\n this._dynamicResize = value;\n this.positionElement(true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"align\", {\n /**\r\n * @return Horizontal position\r\n */\n get: function () {\n return this.adapter.apply(\"align\", this._align);\n },\n /**\r\n * Horizontal positioning of the content window.\r\n *\r\n * Available options: \"left\", \"center\" (default), \"right\", and \"none\".\r\n *\r\n * @default \"center\"\r\n * @param Horizontal position\r\n */\n set: function (value) {\n if (this._align != value) {\n this._align = value;\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"verticalAlign\", {\n /**\r\n * @return Vertical position\r\n */\n get: function () {\n return this.adapter.apply(\"verticalAlign\", this._verticalAlign);\n },\n /**\r\n * Vertical positioning of the content window.\r\n *\r\n * Available options: \"top\", \"middle\" (default), \"bottom\", and \"none\".\r\n *\r\n * @default \"middle\"\r\n * @param Vertical position\r\n */\n set: function (value) {\n if (this._verticalAlign != value) {\n this._verticalAlign = value;\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"left\", {\n /**\r\n * @return Left\r\n */\n get: function () {\n return this.adapter.apply(\"left\", this._left);\n },\n /**\r\n * \"left\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Left\r\n */\n set: function (value) {\n if (this.left != value) {\n this._left = value;\n this._align = \"none\";\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"right\", {\n /**\r\n * @return Right\r\n */\n get: function () {\n return this.adapter.apply(\"right\", this._right);\n },\n /**\r\n * \"right\" coordinate of a non-aligned (`align = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `align` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Right\r\n */\n set: function (value) {\n if (this.right != value) {\n this._right = value;\n this._align = \"none\";\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"top\", {\n /**\r\n * @return Top\r\n */\n get: function () {\n return this.adapter.apply(\"top\", this._top);\n },\n /**\r\n * \"top\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Top\r\n */\n set: function (value) {\n if (this.top != value) {\n this._top = value;\n this._verticalAlign = \"none\";\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"bottom\", {\n /**\r\n * @return Bottom\r\n */\n get: function () {\n return this.adapter.apply(\"bottom\", this._bottom);\n },\n /**\r\n * \"bottom\" coordinate of a non-aligned (`verticalAlign = \"none\"`) popup.\r\n *\r\n * Can be either absolute pixel value, or relative (`Percent`).\r\n *\r\n * Setting this property will automatically set `verticalAlign` to \"none\".\r\n *\r\n * NOTE: The position is relative to the chart container.\r\n *\r\n * @param Bottom\r\n */\n set: function (value) {\n if (this.bottom != value) {\n this._bottom = value;\n this._verticalAlign = \"none\";\n this.positionElement();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Popup.prototype, \"elements\", {\n /**\r\n * Returns an object with references to various elements of the Popup.\r\n *\r\n * * `wrapper`\r\n * * `title`\r\n * * `content`\r\n * * `close`\r\n * * `curtain`\r\n */\n get: function () {\n return this._elements;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Loads popup CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Popup.prototype.loadDefaultCSS = function () {\n if (!this._cssLoaded) {\n this._disposers.push(popupCSS(getShadowRoot(this.container), this.classPrefix));\n $object.each(this._elements, function (key, el) {\n el.style.display = \"\";\n });\n this._cssLoaded = true;\n }\n };\n /**\r\n * If popup is closable, this method adds various events to popup elements.\r\n */\n Popup.prototype.applyEvents = function () {\n var _this = this;\n if (this._IOs.close) {\n if (this.closable) {\n this._IOs.close.element.style.visibility = \"visible\";\n var disposers = [getInteraction().body.events.on(\"keyup\", function (ev) {\n if (keyboard.isKey(ev.event, \"esc\") && _this.closable) {\n _this.close();\n }\n }), this._IOs.close.events.on(\"hit\", function (ev) {\n _this.close();\n })];\n disposers.push(this._IOs.curtain.events.on(\"hit\", function (ev) {\n if (_this.showCurtain && _this.closable) {\n _this.close();\n }\n }));\n this._disposers.push(new MultiDisposer(disposers));\n } else {\n this._IOs.close.element.style.visibility = \"hidden\";\n }\n }\n };\n /**\r\n * Disables interactivity on parent chart.\r\n */\n Popup.prototype.disablePointers = function () {\n if (this.sprite) {\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\n this.sprite.interactionsEnabled = false;\n }\n };\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\n Popup.prototype.releasePointers = function () {\n if ($type.hasValue(this._spriteInteractionsEnabled)) {\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\n this._spriteInteractionsEnabled = undefined;\n }\n };\n /**\r\n * Sets screen reader related settings.\r\n */\n Popup.prototype.applyReaderSettings = function () {\n this.elements.wrapper.setAttribute(\"aria-label\", this.readerTitle);\n };\n /**\r\n * Copies all properties and related data from different element.\r\n *\r\n * @param object Source element\r\n */\n Popup.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.container = source.container;\n this.sprite = source.sprite;\n this.classPrefix = source.classPrefixRaw;\n this.content = source.content;\n this.title = source.title;\n this.readerTitle = source.readerTitle;\n this.defaultStyles = source.defaultStyles;\n this.showCurtain = source.showCurtain;\n this.align = source.align;\n this.verticalAlign = source.verticalAlign;\n this.left = source.left;\n this.right = source.right;\n this.top = source.top;\n this.bottom = source.bottom;\n this.adapter.copyFrom(source.adapter);\n };\n return Popup;\n}(BaseObjectEvents);\nexport { Popup };\n//# sourceMappingURL=Popup.js.map","/**\r\n * Modal class is used to display information over chart area.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Popup } from \"./Popup\";\nimport { Adapter } from \"../utils/Adapter\";\n/**\r\n * Shows an HTML modal which covers window or a chart area.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/popups-and-modals/} For examples and docs on Popups and Modals.\r\n */\nvar Modal = /** @class */function (_super) {\n __extends(Modal, _super);\n /**\r\n * Constructor\r\n */\n function Modal() {\n var _this = _super.call(this) || this;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n _this.className = \"Modal\";\n _this.showCurtain = true;\n _this.draggable = false;\n return _this;\n }\n return Modal;\n}(Popup);\nexport { Modal };\n//# sourceMappingURL=Modal.js.map","import { __read, __spread } from \"tslib\";\nimport { options } from \"../Options\";\n/**\r\n * Outputs string to console if `verbose` is `true`.\r\n */\nexport function log() {\n var messages = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n messages[_i] = arguments[_i];\n }\n if (options.verbose) {\n if (console) {\n console.log.apply(console, __spread(messages));\n }\n }\n}\n/**\r\n * Outputs a warning to the console.\r\n */\nexport function warn() {\n var messages = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n messages[_i] = arguments[_i];\n }\n if (!options.suppressWarnings) {\n if (console) {\n console.warn.apply(console, __spread(messages));\n }\n }\n}\n//# sourceMappingURL=Log.js.map","import * as $array from \"./Array\";\nimport * as $log from \"./Log\";\nvar Native = /** @class */function () {\n function Native() {\n var _this = this;\n this._targets = [];\n this._observer = new ResizeObserver(function (entries) {\n $array.each(entries, function (entry) {\n $array.each(_this._targets, function (x) {\n if (x.target === entry.target) {\n x.callback();\n }\n });\n });\n });\n }\n Native.prototype.addTarget = function (target, callback) {\n this._observer.observe(target, {\n box: \"content-box\"\n });\n this._targets.push({\n target: target,\n callback: callback\n });\n };\n Native.prototype.removeTarget = function (target) {\n this._observer.unobserve(target);\n $array.keepIf(this._targets, function (x) {\n return x.target !== target;\n });\n };\n return Native;\n}();\nvar Raf = /** @class */function () {\n function Raf() {\n this._targets = [];\n }\n Raf.prototype.addTarget = function (target, callback) {\n var _this = this;\n if (this._targets.length === 0) {\n var lastTime_1 = null;\n var loop_1 = function () {\n var currentTime = Date.now();\n if (lastTime_1 === null || currentTime > lastTime_1 + Raf.delay) {\n lastTime_1 = currentTime;\n $array.each(_this._targets, function (x) {\n var newSize = x.target.getBoundingClientRect();\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\n x.size = newSize;\n x.callback();\n }\n });\n }\n _this._timer = requestAnimationFrame(loop_1);\n };\n this._timer = requestAnimationFrame(loop_1);\n }\n var size = target.getBoundingClientRect();\n this._targets.push({\n target: target,\n callback: callback,\n size: size\n });\n };\n Raf.prototype.removeTarget = function (target) {\n $array.keepIf(this._targets, function (x) {\n return x.target !== target;\n });\n if (this._targets.length === 0) {\n cancelAnimationFrame(this._timer);\n }\n };\n Raf.delay = 200;\n return Raf;\n}();\nvar observer = null;\nfunction makeSensor() {\n if (observer === null) {\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new Native();\n } else {\n observer = new Raf();\n }\n }\n return observer;\n}\nvar ResizeSensor = /** @class */function () {\n function ResizeSensor(element, callback) {\n this._disposed = false;\n this._sensor = makeSensor();\n this._element = element;\n this._sensor.addTarget(element, callback);\n }\n ResizeSensor.prototype.isDisposed = function () {\n return this._disposed;\n };\n ResizeSensor.prototype.dispose = function () {\n if (!this._disposed) {\n this._disposed = true;\n this._sensor.removeTarget(this._element);\n }\n };\n Object.defineProperty(ResizeSensor.prototype, \"sensor\", {\n get: function () {\n return this._sensor;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Deprecated: do not use.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ResizeSensor.prototype.reset = function () {\n $log.warn(\"resizeSensor.reset() is no longer needed and can be removed\");\n };\n return ResizeSensor;\n}();\nexport { ResizeSensor };\n//# sourceMappingURL=ResizeSensor.js.map","/**\r\n * This functionality is related to the HTML wrapper that houses `` tag.\r\n */\nimport { Popup } from \"../elements/Popup\";\nimport { Modal } from \"../elements/Modal\";\nimport { ListTemplate, ListDisposer } from \"../utils/List\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $dom from \"../utils/DOM\";\nimport * as $array from \"../utils/Array\";\nimport * as $type from \"../utils/Type\";\nimport { ResizeSensor } from \"../utils/ResizeSensor\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A array of all SVG Containers (one SVG container per chart instance).\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport var svgContainers = [];\n/**\r\n * A class used to create an HTML wrapper for the SVG contents.\r\n */\nvar SVGContainer = /** @class */function () {\n /**\r\n * Constructor\r\n *\r\n * * Creates an HTML wrapper for SVG\r\n */\n function SVGContainer(htmlElement, ghost) {\n var _this = this;\n /**\r\n * Indicates if this object has already been deleted. Any\r\n * destruction/disposal code should take this into account when deciding\r\n * wheter to run potentially costly disposal operations if they already have\r\n * been run.\r\n */\n this._disposed = false;\n /**\r\n * If this component is in a separate HTML container, `autoResize` means the\r\n * module will constantly measure container's size and adopt contents to it.\r\n */\n this.autoResize = true;\n /**\r\n * Holds list of references to [[Sprite]] objects that should not be exported\r\n * when exporting chart to an image.\r\n *\r\n * @ignore\r\n */\n this.nonExportableSprites = [];\n /**\r\n * List of objects that need to be disposed when this one is disposed.\r\n */\n this._disposers = [];\n this.cssScale = 1;\n // This is needed so that it won't resize while printing, so that way printing works correctly.\n this._printing = false;\n // Log parent HTML element\n this.htmlElement = htmlElement;\n if (!ghost) {\n this._printing = false;\n this.initSensor();\n this._disposers.push($dom.addEventListener(window, \"beforeprint\", function () {\n _this._printing = true;\n }));\n this._disposers.push($dom.addEventListener(window, \"afterprint\", function () {\n _this._printing = false;\n }));\n }\n // Adds to containers array\n svgContainers.push(this);\n /**\r\n * Create child div for the container - it will have svg node\r\n * It might seem that this container is not necessay, however having it solves\r\n * a problems with mouse position detection and some other.\r\n */\n var svgContainer = document.createElement(\"div\");\n var style = svgContainer.style;\n style.width = \"100%\";\n style.height = \"100%\";\n style.position = \"relative\";\n htmlElement.appendChild(svgContainer);\n this.SVGContainer = svgContainer;\n }\n /**\r\n * (Re)Initializes a resize sensor.\r\n */\n SVGContainer.prototype.initSensor = function () {\n var _this = this;\n if (this.resizeSensor) {\n this.resizeSensor.dispose();\n }\n var callback = function () {\n if (_this.autoResize && !_this._printing) {\n _this.measure();\n }\n };\n this.resizeSensor = new ResizeSensor(this.htmlElement, callback);\n this._disposers.push(this.resizeSensor);\n };\n /**\r\n * Measures size of parent HTML element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SVGContainer.prototype.measure = function () {\n var width = $utils.width(this.htmlElement);\n var height = $utils.height(this.htmlElement);\n var container = this.container;\n if (container) {\n if (this.width != width || this.height != height) {\n this.width = width;\n this.height = height;\n if (width > 0) {\n container.maxWidth = width;\n }\n if (height > 0) {\n container.maxHeight = height;\n }\n $dom.fixPixelPerfect(this.SVGContainer);\n }\n if (!container.maxWidth) {\n container.maxWidth = 0;\n }\n if (!container.maxHeight) {\n container.maxHeight = 0;\n }\n this.cssScale = 1;\n this.checkTransform(this.htmlElement);\n }\n };\n Object.defineProperty(SVGContainer.prototype, \"container\", {\n /**\r\n * @return Container\r\n */\n get: function () {\n return this._container;\n },\n /**\r\n * A [[Container]] element which is placed into container.\r\n *\r\n * @param container Container\r\n */\n set: function (container) {\n this._container = container;\n this.measure();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns if this object has been already been disposed.\r\n *\r\n * @return Is disposed?\r\n */\n SVGContainer.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Removes this container from SVG container list in system, which\r\n * effectively disables size change monitoring for it.\r\n */\n SVGContainer.prototype.dispose = function () {\n if (!this._disposed) {\n $array.remove(svgContainers, this);\n }\n $array.each(this._disposers, function (item) {\n item.dispose();\n });\n };\n Object.defineProperty(SVGContainer.prototype, \"hideOverflow\", {\n /**\r\n * Indicates if chart container should have its style set\r\n * to `overflow: hidden`.\r\n *\r\n * Normally, we don't want that, so that certain elements, such as tooltips,\r\n * would be able to go outside chart area.\r\n *\r\n * There is one issue though. Some browsers ignore SVG masks and would\r\n * display scrollbars if chart elements, that go outside chart area extend\r\n * outside window.\r\n *\r\n * This is especially true for [[MapChart]], which can have its elements\r\n * extend very widely when zoomed in. Even if those parts are not visible\r\n * because of SVG masks, some browsers might still display window scrollbars.\r\n *\r\n * This is why we set this setting to `true` in [[MapChart]].\r\n *\r\n * Other charts use default of `false`.\r\n */\n set: function (value) {\n if (value) {\n this.SVGContainer.style.overflow = \"hidden\";\n } else {\n this.SVGContainer.style.overflow = \"\";\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SVGContainer.prototype, \"modal\", {\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\n get: function () {\n if (!$type.hasValue(this._modal)) {\n // Create new modal\n this._modal = new Modal();\n this._modal.container = this.SVGContainer;\n // Add to disposers\n this._disposers.push(this._modal);\n }\n return this._modal;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\n SVGContainer.prototype.openModal = function (text, title) {\n // Hide previous modal\n this.closeModal();\n // Create modal\n var modal = this.modal;\n modal.content = text;\n modal.readerTitle = title || \"\";\n modal.title = title || \"\";\n modal.open();\n return modal;\n };\n /**\r\n * Hides modal window if there is one currently open.\r\n */\n SVGContainer.prototype.closeModal = function () {\n if (this._modal) {\n this.modal.close();\n }\n };\n Object.defineProperty(SVGContainer.prototype, \"popups\", {\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\n get: function () {\n if (!$type.hasValue(this._popups)) {\n // Create popup template\n var popupTemplate = new Popup();\n popupTemplate.container = this.SVGContainer;\n // Create the list\n this._popups = new ListTemplate(popupTemplate);\n // Add to disposers\n this._disposers.push(new ListDisposer(this._popups));\n this._disposers.push(this._popups.template);\n }\n return this._popups;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\n SVGContainer.prototype.openPopup = function (text, title) {\n var popup = this.popups.create();\n popup.content = text;\n if ($type.hasValue(title)) {\n popup.title = title;\n }\n popup.open();\n return popup;\n };\n /**\r\n * Closes all currently open popup windows\r\n */\n SVGContainer.prototype.closeAllPopups = function () {\n this.popups.each(function (popup) {\n popup.close();\n });\n };\n Object.defineProperty(SVGContainer.prototype, \"readerAlertElement\", {\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * A `
` element used as as placeholder to trigger screen alerts.\r\n *\r\n * @sunce 4.9.2\r\n * @return Element\r\n */\n get: function () {\n if (!$type.hasValue(this._readerAlertElement)) {\n // Create element\n var div = document.createElement(\"div\");\n div.setAttribute(\"role\", \"alert\");\n div.style.zIndex = \"-100000\";\n div.style.opacity = \"0\";\n div.style.position = \"absolute\";\n div.style.top = \"0\";\n this.SVGContainer.appendChild(div);\n this._readerAlertElement = div;\n }\n return this._readerAlertElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @since 4.9.2\r\n * @param text Alert text\r\n */\n SVGContainer.prototype.readerAlert = function (text) {\n this.readerAlertElement.innerHTML = text;\n };\n /**\r\n * ==========================================================================\r\n * OTHER STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n SVGContainer.prototype.checkTransform = function (div) {\n if (window.getComputedStyle) {\n if (div && div.style) {\n var style = window.getComputedStyle(div, null);\n if (style) {\n var matrix = style.getPropertyValue(\"-webkit-transform\") || style.getPropertyValue(\"-moz-transform\") || style.getPropertyValue(\"-ms-transform\") || style.getPropertyValue(\"-o-transform\") || style.getPropertyValue(\"transform\");\n if (matrix && matrix !== \"none\") {\n var values = matrix.split('(')[1].split(')')[0].split(',');\n var a = Number(values[0]);\n var b = Number(values[1]);\n var scale = Math.sqrt(a * a + b * b);\n if (!isNaN(scale)) {\n this.cssScale *= scale;\n }\n }\n }\n }\n if (div.parentNode && div.parentNode instanceof HTMLElement) {\n this.checkTransform(div.parentNode);\n }\n }\n };\n return SVGContainer;\n}();\nexport { SVGContainer };\n//# sourceMappingURL=SVGContainer.js.map","/**\r\n * Paper class just like the white sheet of pressed fiber it draws its name\r\n * inspiration from is used as a starting point to start a drawing.\r\n *\r\n * Before we can start adding elements (drawing) we need to take out a new sheet\r\n * of paper, or in this instance create a blank SVG element.\r\n *\r\n * This class creates such element, as well as implements methods needed to\r\n * start adding elements to it.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AMElement } from \"./AMElement\";\nimport { Group } from \"./Group\";\nimport { SVGContainer } from \"./SVGContainer\";\nimport * as $dom from \"../utils/DOM\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Paper class which when instantiated will create an SVG element as well as\r\n * some of the sub-elements like ``, ``.\r\n *\r\n * Use its methods like `addGroup` and `append` to add elements to the paper.\r\n */\nvar Paper = /** @class */function () {\n /**\r\n * Creates main `` container and related elements.\r\n *\r\n * @param container A reference to HTML element to create `` in\r\n */\n function Paper(container, id) {\n // Store container reference\n this.container = container;\n this.id = id;\n // Create SVG element\n var svg = document.createElementNS($dom.SVGNS, \"svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttributeNS($dom.XMLNS, \"xmlns\", $dom.SVGNS);\n svg.setAttributeNS($dom.XMLNS, \"xmlns:xlink\", $dom.XLINK);\n svg.setAttribute(\"role\", \"group\");\n this.container.appendChild(svg);\n // Add description\n //let desc: SVGElement = document.createElementNS($dom.SVGNS, \"desc\");\n //desc.appendChild(document.createTextNode(\"JavaScript chart by amCharts\"));\n //svg.appendChild(desc);\n // Add defs\n this.defs = document.createElementNS($dom.SVGNS, \"defs\");\n svg.appendChild(this.defs);\n // Set width and height to fit container\n svg.style.width = \"100%\";\n svg.style.height = \"100%\";\n svg.style.overflow = \"visible\";\n // Store variable\n this.svg = svg;\n }\n /**\r\n * Creates and returns a new element. Does not attach it to Paper yet.\r\n *\r\n * @param elementName Element name\r\n * @return New element\r\n */\n Paper.prototype.add = function (elementName) {\n return new AMElement(elementName);\n };\n /**\r\n * Creates and returns a new Group element. Does not attach it to Paper.\r\n *\r\n * @param groupName Element name\r\n * @return New Group\r\n */\n Paper.prototype.addGroup = function (groupName) {\n return new Group(groupName);\n };\n /**\r\n * Appends an element to Paper.\r\n *\r\n * @param element Element to append\r\n */\n Paper.prototype.append = function (element) {\n if (element) {\n this.svg.appendChild(element.node);\n }\n };\n /**\r\n * Appends an element to `` block of the Paper.\r\n *\r\n * @param element Element\r\n */\n Paper.prototype.appendDef = function (element) {\n if (element) {\n this.defs.appendChild(element.node);\n }\n };\n /**\r\n * Creates and returns new `` element. Does not append it to\r\n * Paper.\r\n *\r\n * @return A foreignObject element\r\n */\n Paper.prototype.foreignObject = function () {\n var element = new AMElement(\"foreignObject\");\n //this.append(element);\n return element;\n };\n /**\r\n * Checks if browser supports `` elements.\r\n *\r\n * @return Supports `foreignObject`?\r\n */\n Paper.prototype.supportsForeignObject = function () {\n return document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#Extensibility\", \"1.1\");\n };\n return Paper;\n}();\nexport { Paper };\nvar ghostPaper = null;\n/**\r\n * A [[Paper]] instance to create elements, that are not yet ready to be\r\n * placed in visible DOM.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport function getGhostPaper() {\n if (ghostPaper === null) {\n // ghost is used to draw elements while real paper is not yet created or Sprite doesn't know parent yet\n var ghostDiv = document.createElement(\"div\");\n ghostDiv.hidden = true;\n ghostDiv.style.width = \"1px\";\n ghostDiv.style.height = \"1px\";\n ghostDiv.style.position = \"absolute\";\n ghostDiv.style.zIndex = \"-1000000\";\n document.body.appendChild(ghostDiv);\n var ghostSvgContainer = new SVGContainer(ghostDiv, true);\n ghostPaper = new Paper(ghostSvgContainer.SVGContainer, \"ghost\");\n }\n return ghostPaper;\n}\n//# sourceMappingURL=Paper.js.map","/**\r\n * Pattern module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../../Base\";\nimport { getGhostPaper } from \"../Paper\";\nimport { List, ListDisposer } from \"../../utils/List\";\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\nimport { registry } from \"../../Registry\";\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\nimport * as $iter from \"../../utils/Iterator\";\nimport * as $object from \"../../utils/Object\";\nimport * as $type from \"../../utils/Type\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base class to define patterns.\r\n */\nvar Pattern = /** @class */function (_super) {\n __extends(Pattern, _super);\n //public propertyValues = new Dictionary();\n /**\r\n * Constructor\r\n */\n function Pattern() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * List of elements the pattern consists of.\r\n */\n _this._elements = new List();\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link PatternProperties}\r\n */\n _this.properties = {};\n _this.className = \"Pattern\";\n // Set defaults\n _this.width = 10;\n _this.height = 10;\n _this.x = 0;\n _this.y = 0;\n _this.patternUnits = \"userSpaceOnUse\";\n var interfaceColors = new InterfaceColorSet();\n _this.backgroundFill = interfaceColors.getFor(\"background\");\n _this.backgroundOpacity = 0;\n _this.fillOpacity = 1;\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\n _this.stroke = interfaceColors.getFor(\"alternativeBackground\");\n _this.strokeOpacity = 1;\n _this.strokeWidth = 1;\n _this.shapeRendering = \"crispEdges\";\n _this.rotation = 0;\n // Create main group to store pattern elements inelements\n _this.element = _this.paper.addGroup(\"pattern\");\n _this.id = \"pattern-\" + registry.getUniqueId();\n _this.element.attr({\n \"id\": _this.id\n });\n _this._disposers.push(_this.element);\n // Make elements disposable\n _this._disposers.push(new ListDisposer(_this._elements));\n // Request again to trigger getter/setter code\n _this.patternUnits = _this.patternUnits;\n _this.width = _this.width;\n _this.height = _this.height;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the pattern.\r\n */\n Pattern.prototype.draw = function () {\n var _this = this;\n var patternElement = this.element;\n if (patternElement) {\n patternElement.removeChildNodes();\n var background = this.paper.add(\"rect\");\n background.attr({\n \"width\": this.width,\n \"height\": this.height,\n \"shape-rendering\": \"crispEdges\",\n \"fill\": this.backgroundFill.hex,\n \"fill-opacity\": this.backgroundOpacity,\n \"stroke\": this.backgroundFill.hex,\n \"stroke-opacity\": 0\n });\n patternElement.add(background);\n patternElement.attr({\n \"x\": this.x,\n \"y\": this.y,\n \"width\": this.width,\n \"height\": this.height,\n \"stroke\": this.stroke.hex,\n \"fill\": this.fill.hex,\n \"fill-opacity\": this.fillOpacity,\n \"stroke-opacity\": this.strokeOpacity,\n \"stroke-width\": this.strokeWidth,\n \"shape-rendering\": this.shapeRendering,\n \"patternUnits\": this.patternUnits,\n \"stroke-dasharray\": this.strokeDasharray\n });\n $iter.each(this._elements.iterator(), function (element) {\n element.rotation = _this.rotation;\n element.rotationX = _this.properties[\"rotationX\"];\n element.rotationY = _this.properties[\"rotationY\"];\n _this.element.add(element);\n });\n }\n };\n /**\r\n * Animate pattern properties.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\n Pattern.prototype.animate = function (animationOptions, duration, easing) {\n return new Animation(this, animationOptions, duration, easing).start();\n };\n /**\r\n * Adds an element to the pattern.\r\n *\r\n * @param element Element\r\n */\n Pattern.prototype.addElement = function (element) {\n this._elements.push(element);\n this._disposers.push(element);\n };\n /**\r\n * Remove an element from the pattern.\r\n *\r\n * @param element Element\r\n */\n Pattern.prototype.removeElement = function (element) {\n this._elements.removeValue(element);\n this.removeDispose(element);\n };\n Object.defineProperty(Pattern.prototype, \"elements\", {\n /**\r\n * Returns the list of SVG elements comprising the pattern.\r\n *\r\n * @return Pattern elements\r\n */\n get: function () {\n return this._elements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"fillOpacity\", {\n /**\r\n * @return Opacity (0-1)\r\n */\n get: function () {\n return this.properties[\"fillOpacity\"];\n },\n /**\r\n * Pattern fill opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n this.properties[\"fillOpacity\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"fill\", {\n /**\r\n * @return Fill color\r\n */\n get: function () {\n return this.properties[\"fill\"];\n },\n /**\r\n * Fill color of the pattern.\r\n *\r\n * @param value Fill color\r\n */\n set: function (value) {\n this.properties[\"fill\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"backgroundFill\", {\n /**\r\n * @return Background color\r\n */\n get: function () {\n return this.properties[\"backgroundFill\"];\n },\n /**\r\n * Pattern background fill color.\r\n *\r\n * @param value Background color\r\n */\n set: function (value) {\n this.properties[\"backgroundFill\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"backgroundOpacity\", {\n /**\r\n * @return Background opacity (0-1)\r\n */\n get: function () {\n return this.properties[\"backgroundOpacity\"];\n },\n /**\r\n * Pattern backgorund opacity. (0-1)\r\n *\r\n * @param value Background opacity (0-1)\r\n */\n set: function (value) {\n this.properties[\"backgroundOpacity\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"stroke\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n return this.properties[\"stroke\"];\n },\n /**\r\n * Pattern stroke (border) color.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.properties[\"stroke\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"strokeOpacity\", {\n /**\r\n * @return Opacity (0-1)\r\n */\n get: function () {\n return this.properties[\"strokeOpacity\"];\n },\n /**\r\n * Pattern stroke opacity. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n this.properties[\"strokeOpacity\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"strokeWidth\", {\n /**\r\n * @return Stroke thickness (px)\r\n */\n get: function () {\n return this.properties[\"strokeWidth\"];\n },\n /**\r\n * Pattern stroke thickness in pixels.\r\n *\r\n * @param value Stroke thickness (px)\r\n */\n set: function (value) {\n this.properties[\"strokeWidth\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"shapeRendering\", {\n get: function () {\n return this.properties[\"shapeRendering\"];\n },\n /**\r\n * Shape rendering\r\n * @param value [description]\r\n */\n set: function (value) {\n this.properties[\"shapeRendering\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"rotation\", {\n /**\r\n * @return Rotation\r\n */\n get: function () {\n return this.properties[\"rotation\"];\n },\n /**\r\n * Pattern rotation in degrees.\r\n *\r\n * @param value Rotation\r\n */\n set: function (value) {\n this.properties[\"rotation\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"patternUnits\", {\n /**\r\n * @return Units\r\n */\n get: function () {\n return this.properties[\"patternUnits\"];\n },\n /**\r\n * Pattern measuring units.\r\n *\r\n * Available options: \"userSpaceOnUse\" | \"objectBoundingBox\".\r\n *\r\n * @param value Units\r\n */\n set: function (value) {\n this.properties[\"patternUnits\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"width\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.properties[\"width\"];\n },\n /**\r\n * Pattern width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.properties[\"width\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"height\", {\n /**\r\n * @return Height (px)\r\n */\n get: function () {\n return this.properties[\"height\"];\n },\n /**\r\n * Pattern height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\n set: function (value) {\n this.properties[\"height\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"x\", {\n /**\r\n * @return X (px)\r\n */\n get: function () {\n return this.properties[\"x\"];\n },\n /**\r\n * X position. (pixels)\r\n *\r\n * @param value X (px)\r\n */\n set: function (value) {\n this.properties[\"x\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"y\", {\n /**\r\n * @return Y (px)\r\n */\n get: function () {\n return this.properties[\"y\"];\n },\n /**\r\n * Y position (px).\r\n *\r\n * @param value Y (px)\r\n */\n set: function (value) {\n this.properties[\"y\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"paper\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\n get: function () {\n if (this._paper) {\n return this._paper;\n }\n return getGhostPaper();\n },\n /**\r\n * [[Paper]] instance to draw pattern in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\n set: function (paper) {\n if (this._paper != paper) {\n this._paper = paper;\n this.draw();\n paper.appendDef(this.element);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties from another Pattern instance.\r\n *\r\n * @param source Source pattern\r\n */\n Pattern.prototype.copyFrom = function (source) {\n var _this = this;\n _super.prototype.copyFrom.call(this, source);\n $object.each(source.properties, function (key, value) {\n _this[key] = value;\n });\n };\n Object.defineProperty(Pattern.prototype, \"animations\", {\n /**\r\n * A list of animations currently running on the patter.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Animation list\r\n */\n get: function () {\n if (!this._animations) {\n this._animations = [];\n this._disposers.push(new AnimationDisposer(this._animations));\n }\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pattern.prototype, \"strokeDasharray\", {\n /**\r\n * @return `stroke-dasharray`\r\n */\n get: function () {\n return this.properties[\"strokeDashArray\"];\n },\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\n set: function (value) {\n this.properties[\"strokeDashArray\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Pattern.prototype.processConfig = function (config) {\n if (config) {\n // Set up series\n if ($type.hasValue(config.elements) && $type.isArray(config.elements)) {\n for (var i = 0, len = config.elements.length; i < len; i++) {\n var element = config.elements[i];\n if ($type.hasValue(element[\"type\"])) {\n var sprite = this.createEntryInstance(element);\n if (sprite instanceof BaseObject) {\n sprite.config = element;\n }\n this.addElement($type.hasValue(element[\"typeProperty\"]) ? sprite[element[\"typeProperty\"]] : sprite.element);\n }\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return Pattern;\n}(BaseObject);\nexport { Pattern };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Pattern\"] = Pattern;\n//# sourceMappingURL=Pattern.js.map","/**\r\n * Contains code and logic for generating linear gradients.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../../Base\";\nimport { List } from \"../../utils/List\";\nimport { getGhostPaper } from \"../Paper\";\nimport { registry } from \"../../Registry\";\nimport * as $iter from \"../../utils/Iterator\";\nimport * as $math from \"../../utils/Math\";\nimport * as $type from \"../../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Linear gradient class.\r\n */\nvar LinearGradient = /** @class */function (_super) {\n __extends(LinearGradient, _super);\n /**\r\n * Constructor.\r\n */\n function LinearGradient() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\n _this._stops = new List();\n /**\r\n * Gradient direction.\r\n */\n _this._rotation = 0;\n _this.className = \"LinearGradient\";\n _this._stops.events.on(\"setIndex\", _this.validate, _this);\n _this._stops.events.on(\"inserted\", _this.validate, _this);\n // Create element\n _this.element = _this.paper.addGroup(\"linearGradient\");\n _this.id = \"gradient-\" + registry.getUniqueId();\n _this.element.attr({\n \"id\": _this.id\n });\n _this._disposers.push(_this.element);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\n LinearGradient.prototype.validate = function () {\n var _this = this;\n var rotation = (this._rotation + 90) * $math.RADIANS;\n var x1 = Math.round(50 + Math.sin(rotation + Math.PI) * 50) + '%';\n var y1 = Math.round(50 + Math.cos(rotation) * 50) + '%';\n var x2 = Math.round(50 + Math.sin(rotation) * 50) + '%';\n var y2 = Math.round(50 + Math.cos(rotation + Math.PI) * 50) + '%';\n var gradientElement = this.element;\n gradientElement.removeChildNodes();\n gradientElement.attr({\n \"x1\": x1,\n \"x2\": x2,\n \"y1\": y1,\n \"y2\": y2\n });\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\n var i = a[0];\n var stop = a[1];\n var offset = stop.offset;\n if (!$type.isNumber(offset)) {\n offset = i / (_this._stops.length - 1);\n }\n var gradientStop = _this.paper.add(\"stop\");\n if ($type.hasValue(stop.color)) {\n gradientStop.attr({\n \"stop-color\": stop.color.toString()\n });\n }\n if ($type.isNumber(stop.opacity)) {\n gradientStop.attr({\n \"stop-opacity\": stop.opacity\n });\n }\n if ($type.isNumber(offset)) {\n gradientStop.attr({\n \"offset\": offset\n });\n }\n gradientElement.add(gradientStop);\n });\n };\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\n LinearGradient.prototype.clear = function () {\n this._stops.clear();\n };\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\n LinearGradient.prototype.addColor = function (color, opacity, offset) {\n this._stops.push({\n color: color,\n opacity: opacity,\n offset: offset\n });\n };\n Object.defineProperty(LinearGradient.prototype, \"stops\", {\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\n get: function () {\n return this._stops;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinearGradient.prototype, \"paper\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\n get: function () {\n if (this._paper) {\n return this._paper;\n }\n return getGhostPaper();\n },\n /**\r\n * [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\n set: function (paper) {\n if (this._paper != paper) {\n this._paper = paper;\n this.validate();\n paper.appendDef(this.element);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LinearGradient.prototype, \"rotation\", {\n /**\r\n * @return Rotation\r\n */\n get: function () {\n return this._rotation;\n },\n /**\r\n * Rotation (direction) of the gradient in degrees.\r\n *\r\n * @param value Rotation\r\n */\n set: function (value) {\n //this.element.attr({ \"gradientTransform\": \"rotate(\" + value + \" 10 100)\" });\n this._rotation = value;\n this.validate();\n },\n enumerable: true,\n configurable: true\n });\n LinearGradient.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.stops.copyFrom(source.stops);\n this._rotation = source.rotation;\n };\n Object.defineProperty(LinearGradient.prototype, \"gradientUnits\", {\n /**\r\n * Which units are used when drawing gradient filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying gradient on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\n set: function (value) {\n this.element.attr({\n gradientUnits: value\n });\n },\n enumerable: true,\n configurable: true\n });\n return LinearGradient;\n}(BaseObject);\nexport { LinearGradient };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LinearGradient\"] = LinearGradient;\n//# sourceMappingURL=LinearGradient.js.map","/**\r\n * Contains code and logic for generating radial gradients.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../../Base\";\nimport { List } from \"../../utils/List\";\nimport { getGhostPaper } from \"../Paper\";\nimport { registry } from \"../../Registry\";\nimport * as $iter from \"../../utils/Iterator\";\nimport * as $type from \"../../utils/Type\";\nimport { Percent } from \"../../utils/Percent\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Radial gradient class.\r\n */\nvar RadialGradient = /** @class */function (_super) {\n __extends(RadialGradient, _super);\n /**\r\n * Constructor\r\n */\n function RadialGradient() {\n var _this = _super.call(this) || this;\n /**\r\n * List of colors switch definitions in a gradient.\r\n */\n _this._stops = new List();\n _this.element = _this.paper.addGroup(\"radialGradient\");\n _this.id = \"gradient-\" + registry.getUniqueId();\n _this.element.attr({\n \"id\": _this.id\n });\n _this._disposers.push(_this.element);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws gradient.\r\n */\n RadialGradient.prototype.draw = function () {\n var _this = this;\n var gradientElement = this.element;\n if ($type.isNumber(this.cx)) {\n var value = this.cx;\n if (value instanceof Percent) {\n value = value.percent + \"%\";\n }\n gradientElement.attr({\n \"cx\": value\n });\n }\n if ($type.isNumber(this.cy)) {\n var value = this.cy;\n if (value instanceof Percent) {\n value = value.percent + \"%\";\n }\n gradientElement.attr({\n \"cy\": value\n });\n }\n if (this.fx) {\n var value = this.fx;\n if (value instanceof Percent) {\n value = value.percent + \"%\";\n }\n gradientElement.attr({\n \"fx\": value\n });\n }\n if (this.fy) {\n var value = this.fy;\n if (value instanceof Percent) {\n value = value.percent + \"%\";\n }\n gradientElement.attr({\n \"fy\": value\n });\n }\n gradientElement.removeChildNodes();\n $iter.each($iter.indexed(this._stops.iterator()), function (a) {\n var i = a[0];\n var stop = a[1];\n var offset = stop.offset;\n if (!$type.isNumber(offset)) {\n offset = i / (_this._stops.length - 1);\n }\n var gradientStop = _this.paper.add(\"stop\");\n if ($type.hasValue(stop.color)) {\n gradientStop.attr({\n \"stop-color\": stop.color.toString()\n });\n }\n if ($type.isNumber(stop.opacity)) {\n gradientStop.attr({\n \"stop-opacity\": stop.opacity\n });\n }\n if ($type.isNumber(offset)) {\n gradientStop.attr({\n \"offset\": offset\n });\n }\n gradientElement.add(gradientStop);\n });\n };\n /**\r\n * Adds a color step to the gradient.\r\n *\r\n * @param color Color (hex code or named color)\r\n * @param opacity Opacity (value from 0 to 1; 0 completely transaprent, 1 fully opaque)\r\n * @param offset Position of color in the gradient (value 0 to 1; 0 meaning start of the gradient and 1 end)\r\n */\n RadialGradient.prototype.addColor = function (color, opacity, offset) {\n this._stops.push({\n color: color,\n opacity: opacity,\n offset: offset\n });\n this.draw();\n };\n Object.defineProperty(RadialGradient.prototype, \"paper\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\n get: function () {\n if (this._paper) {\n return this._paper;\n }\n return getGhostPaper();\n },\n /**\r\n * A [[Paper]] instace to use for the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\n set: function (paper) {\n if (this._paper != paper) {\n this._paper = paper;\n this.draw();\n paper.appendDef(this.element);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadialGradient.prototype, \"cx\", {\n get: function () {\n return this._cx;\n },\n /**\r\n * Center x coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\n set: function (value) {\n this._cx = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadialGradient.prototype, \"cy\", {\n get: function () {\n return this._cy;\n },\n /**\r\n * Center y coordinate of the gradient, can be set as number or Percent\r\n *\r\n * @param point Center point\r\n */\n set: function (value) {\n this._cy = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadialGradient.prototype, \"fx\", {\n get: function () {\n return this._fx;\n },\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\n set: function (value) {\n this._fx = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadialGradient.prototype, \"fy\", {\n get: function () {\n return this._fy;\n },\n /**\r\n * y coordinate of the focal point of a gradient, can be set in pixels or as Percent\r\n *\r\n * @param point Center point\r\n */\n set: function (value) {\n this._fy = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n RadialGradient.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.stops.copyFrom(source.stops);\n this.cx = source.cx;\n this.cy = source.cy;\n this.fx = source.fx;\n this.fy = source.fy;\n };\n Object.defineProperty(RadialGradient.prototype, \"stops\", {\n /**\r\n * A list of color stops in the gradient.\r\n *\r\n * @return Stops\r\n */\n get: function () {\n return this._stops;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Clears the gradient.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadialGradient.prototype.clear = function () {\n this._stops.clear();\n };\n return RadialGradient;\n}(BaseObject);\nexport { RadialGradient };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadialGradient\"] = RadialGradient;\n//# sourceMappingURL=RadialGradient.js.map","/**\r\n * Mouse-related functionality\r\n */\n/**\r\n * Defines static methods that hold style list for various mouse cursor styles,\r\n * maintaining browser compatibility.\r\n */\nvar MouseCursorStyle = /** @class */function () {\n function MouseCursorStyle() {}\n /**\r\n * Styles for \"grab\" mouse cursor.\r\n */\n MouseCursorStyle.grab = [{\n \"property\": \"cursor\",\n \"value\": \"move\"\n }, {\n \"property\": \"cursor\",\n \"value\": \"grab\"\n }, {\n \"property\": \"cursor\",\n \"value\": \"-webkit-grab\"\n }];\n /**\r\n * Styles for \"grabbing\" mouse cursor.\r\n */\n MouseCursorStyle.grabbing = [{\n \"property\": \"cursor\",\n \"value\": \"move\"\n }, {\n \"property\": \"cursor\",\n \"value\": \"grabbing\"\n }, {\n \"property\": \"cursor\",\n \"value\": \"-webkit-grabbing\"\n }];\n /**\r\n * Styles for \"pointer\" mouse cursor. (usually used for links)\r\n */\n MouseCursorStyle.pointer = [{\n \"property\": \"cursor\",\n \"value\": \"pointer\"\n }];\n /**\r\n * Styles for default mouse cursor. (browser determines style)\r\n */\n MouseCursorStyle.default = [{\n \"property\": \"cursor\",\n \"value\": \"default\"\n }];\n /**\r\n * Styles for horizontal bi-directional resize mouse cursor.\r\n */\n MouseCursorStyle.horizontalResize = [{\n \"property\": \"cursor\",\n \"value\": \"ew-resize\"\n }];\n /**\r\n * Styles for vertical bi-directional mouse cursor.\r\n */\n MouseCursorStyle.verticalResize = [{\n \"property\": \"cursor\",\n \"value\": \"ns-resize\"\n }];\n /**\r\n * Styles for \"no-allowed\" cursor.\r\n * @since 4.7.15\r\n */\n MouseCursorStyle.notAllowed = [{\n \"property\": \"cursor\",\n \"value\": \"not-allowed\"\n }];\n /**\r\n * Styles for \"text\" cursor.\r\n * @since 4.9.12\r\n */\n MouseCursorStyle.text = [{\n \"property\": \"cursor\",\n \"value\": \"text\"\n }];\n return MouseCursorStyle;\n}();\nexport { MouseCursorStyle };\n//# sourceMappingURL=Mouse.js.map","/**\r\n * amCharts 4 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v4/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\nexport default {\n // Number formatting options.\n // \n // Please check with the local standards which separator is accepted to be\n // used for separating decimals, and which for thousands.\n \"_decimalSeparator\": \".\",\n \"_thousandSeparator\": \",\",\n // Suffixes for numbers\n // When formatting numbers, big or small numers might be reformatted to\n // shorter version, by applying a suffix.\n // \n // For example, 1000000 might become \"1m\".\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\n // \n // This section defines such suffixes for all such cases.\n \"_big_number_suffix_3\": \"k\",\n \"_big_number_suffix_6\": \"M\",\n \"_big_number_suffix_9\": \"G\",\n \"_big_number_suffix_12\": \"T\",\n \"_big_number_suffix_15\": \"P\",\n \"_big_number_suffix_18\": \"E\",\n \"_big_number_suffix_21\": \"Z\",\n \"_big_number_suffix_24\": \"Y\",\n \"_small_number_suffix_3\": \"m\",\n \"_small_number_suffix_6\": \"μ\",\n \"_small_number_suffix_9\": \"n\",\n \"_small_number_suffix_12\": \"p\",\n \"_small_number_suffix_15\": \"f\",\n \"_small_number_suffix_18\": \"a\",\n \"_small_number_suffix_21\": \"z\",\n \"_small_number_suffix_24\": \"y\",\n \"_byte_suffix_B\": \"B\",\n \"_byte_suffix_KB\": \"KB\",\n \"_byte_suffix_MB\": \"MB\",\n \"_byte_suffix_GB\": \"GB\",\n \"_byte_suffix_TB\": \"TB\",\n \"_byte_suffix_PB\": \"PB\",\n // Default date formats for various periods.\n // \n // This should reflect official or de facto formatting universally accepted\n // in the country translation is being made for\n // Available format codes here:\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Format_codes\n // \n // This will be used when formatting date/time for particular granularity,\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\n // \n // \"date\" is used as in default date format when showing standalone dates.\n \"_date\": \"yyyy-MM-dd\",\n \"_date_millisecond\": \"mm:ss SSS\",\n \"_date_second\": \"HH:mm:ss\",\n \"_date_minute\": \"HH:mm\",\n \"_date_hour\": \"HH:mm\",\n \"_date_day\": \"MMM dd\",\n \"_date_week\": \"ww\",\n \"_date_month\": \"MMM\",\n \"_date_year\": \"yyyy\",\n // Default duration formats for various base units.\n // \n // This will be used by DurationFormatter to format numeric values into\n // duration.\n // \n // Notice how each duration unit comes in several versions. This is to ensure\n // that each base unit is shown correctly.\n // \n // For example, if we have baseUnit set to \"second\", meaning our duration is\n // in seconds.\n // \n // If we pass in `50` to formatter, it will know that we have just 50 seconds\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\n // and the formatted result will be in like `\"50\"`.\n // \n // If we pass in `70`, which is more than a minute, the formatter will switch\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\n // text.\n // \n // Available codes here:\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\n \"_duration_millisecond\": \"SSS\",\n \"_duration_millisecond_second\": \"ss.SSS\",\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\n \"_duration_second\": \"ss\",\n \"_duration_second_minute\": \"mm:ss\",\n \"_duration_second_hour\": \"hh:mm:ss\",\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\n \"_duration_minute\": \"mm\",\n \"_duration_minute_hour\": \"hh:mm\",\n \"_duration_minute_day\": \"d'd' hh:mm\",\n \"_duration_minute_week\": \"d'd' hh:mm\",\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\n \"_duration_hour\": \"hh'h'\",\n \"_duration_hour_day\": \"d'd' hh'h'\",\n \"_duration_hour_week\": \"d'd' hh'h'\",\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\n \"_duration_day\": \"d'd'\",\n \"_duration_day_week\": \"d'd'\",\n \"_duration_day_month\": \"M'm' dd'd'\",\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\n \"_duration_week\": \"w'w'\",\n \"_duration_week_month\": \"w'w'\",\n \"_duration_week_year\": \"w'w'\",\n \"_duration_month\": \"M'm'\",\n \"_duration_month_year\": \"y'y' MM'm'\",\n \"_duration_year\": \"y'y'\",\n // Era translations\n \"_era_ad\": \"AD\",\n \"_era_bc\": \"BC\",\n // Day part, used in 12-hour formats, e.g. 5 P.M.\n // Please note that these come in 3 variants:\n // * one letter (e.g. \"A\")\n // * two letters (e.g. \"AM\")\n // * two letters with dots (e.g. \"A.M.\")\n // \n // All three need to to be translated even if they are all the same. Some\n // users might use one, some the other.\n \"A\": \"\",\n \"P\": \"\",\n \"AM\": \"\",\n \"PM\": \"\",\n \"A.M.\": \"\",\n \"P.M.\": \"\",\n // Date-related stuff.\n // \n // When translating months, if there's a difference, use the form which is\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\n // \n // Note that May is listed twice. This is because in English May is the same\n // in both long and short forms, while in other languages it may not be the\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\n // version.\n // \n // Should month names and weekdays be capitalized or not?\n // \n // Rule of thumb is this: if the names should always be capitalized,\n // regardless of name position within date (\"January\", \"21st January 2018\",\n // etc.) use capitalized names. Otherwise enter all lowercase.\n // \n // The date formatter will automatically capitalize names if they are the\n // first (or only) word in resulting date.\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 \"Jan\": \"\",\n \"Feb\": \"\",\n \"Mar\": \"\",\n \"Apr\": \"\",\n \"May(short)\": \"May\",\n \"Jun\": \"\",\n \"Jul\": \"\",\n \"Aug\": \"\",\n \"Sep\": \"\",\n \"Oct\": \"\",\n \"Nov\": \"\",\n \"Dec\": \"\",\n // Weekdays.\n \"Sunday\": \"\",\n \"Monday\": \"\",\n \"Tuesday\": \"\",\n \"Wednesday\": \"\",\n \"Thursday\": \"\",\n \"Friday\": \"\",\n \"Saturday\": \"\",\n \"Sun\": \"\",\n \"Mon\": \"\",\n \"Tue\": \"\",\n \"Wed\": \"\",\n \"Thu\": \"\",\n \"Fri\": \"\",\n \"Sat\": \"\",\n // Date ordinal function.\n // \n // This is used when adding number ordinal when formatting days in dates.\n // \n // E.g. \"January 1st\", \"February 2nd\".\n // \n // The function accepts day number, and returns a string to be added to the\n // day, like in default English translation, if we pass in 2, we will receive\n // \"nd\" back.\n \"_dateOrd\": function (day) {\n var res = \"th\";\n if (day < 11 || day > 13) {\n switch (day % 10) {\n case 1:\n res = \"st\";\n break;\n case 2:\n res = \"nd\";\n break;\n case 3:\n res = \"rd\";\n break;\n }\n }\n return res;\n },\n // Various chart controls.\n // Shown as a tooltip on zoom out button.\n \"Zoom Out\": \"\",\n // Timeline buttons\n \"Play\": \"\",\n \"Stop\": \"\",\n // Chart's Legend screen reader title.\n \"Legend\": \"\",\n // Legend's item screen reader indicator.\n \"Click, tap or press ENTER to toggle\": \"\",\n // Shown when the chart is busy loading something.\n \"Loading\": \"\",\n // Shown as the first button in the breadcrumb navigation, e.g.:\n // Home > First level > ...\n \"Home\": \"\",\n // Chart types.\n // Those are used as default screen reader titles for the main chart element\n // unless developer has set some more descriptive title.\n \"Chart\": \"\",\n \"Serial chart\": \"\",\n \"X/Y chart\": \"\",\n \"Pie chart\": \"\",\n \"Gauge chart\": \"\",\n \"Radar chart\": \"\",\n \"Sankey diagram\": \"\",\n \"Flow diagram\": \"\",\n \"Chord diagram\": \"\",\n \"TreeMap chart\": \"\",\n \"Force directed tree\": \"\",\n \"Sliced chart\": \"\",\n // Series types.\n // Used to name series by type for screen readers if they do not have their\n // name set.\n \"Series\": \"\",\n \"Candlestick Series\": \"\",\n \"OHLC Series\": \"\",\n \"Column Series\": \"\",\n \"Line Series\": \"\",\n \"Pie Slice Series\": \"\",\n \"Funnel Series\": \"\",\n \"Pyramid Series\": \"\",\n \"X/Y Series\": \"\",\n // Map-related stuff.\n \"Map\": \"\",\n \"Press ENTER to zoom in\": \"\",\n \"Press ENTER to zoom out\": \"\",\n \"Use arrow keys to zoom in and out\": \"\",\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\n // Export-related stuff.\n // These prompts are used in Export menu labels.\n // \n // \"Export\" is the top-level menu item.\n // \n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\n // operation.\n // \n // Leave actual format untranslated, unless you absolutely know that they\n // would convey more meaning in some other way.\n \"Export\": \"\",\n \"Image\": \"\",\n \"Data\": \"\",\n \"Print\": \"\",\n \"Press ENTER or use arrow keys to navigate\": \"\",\n \"Click, tap or press ENTER to open\": \"\",\n \"Click, tap or press ENTER to print.\": \"\",\n \"Click, tap or press ENTER to export as %1.\": \"\",\n 'To save the image, right-click this link and choose \"Save picture as...\"': \"\",\n 'To save the image, right-click thumbnail on the left and choose \"Save picture as...\"': \"\",\n \"(Press ESC to close this message)\": \"\",\n \"Image Export Complete\": \"\",\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\n \"Saved from\": \"\",\n \"PNG\": \"\",\n \"JPG\": \"\",\n \"GIF\": \"\",\n \"SVG\": \"\",\n \"PDF\": \"\",\n \"JSON\": \"\",\n \"CSV\": \"\",\n \"XLSX\": \"\",\n // Scrollbar-related stuff.\n // \n // Scrollbar is a control which can zoom and pan the axes on the chart.\n // \n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\n // upper and lower (for vertical one).\n // \n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\n // \n // The final section is used to indicate the current range of selection.\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\n \"Use left and right arrows to move selection\": \"\",\n \"Use left and right arrows to move left selection\": \"\",\n \"Use left and right arrows to move right selection\": \"\",\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\n \"Use up and down arrows to move selection\": \"\",\n \"Use up and down arrows to move lower selection\": \"\",\n \"Use up and down arrows to move upper selection\": \"\",\n \"From %1 to %2\": \"\",\n \"From %1\": \"\",\n \"To %1\": \"\",\n // Data loader-related.\n \"No parser available for file: %1\": \"\",\n \"Error parsing file: %1\": \"\",\n \"Unable to load file: %1\": \"\",\n \"Invalid date\": \"\",\n // Common actions\n \"Close\": \"\",\n \"Minimize\": \"\"\n};\n//# sourceMappingURL=en.js.map","/**\r\n * Language module contains everything related to language-specific operations:\r\n * * Translating prompts\r\n * * Translating functions\r\n * * Date format localizations\r\n */\nimport { __extends, __read, __spread } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"../Base\";\nimport { Adapter } from \"./Adapter\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\nimport en from \"../../../lang/en\";\nimport { options } from \"../Options\";\n;\n;\n/**\r\n * Handles all language-related tasks, like loading and storing translations,\r\n * translating prompts, lists of prompts and even functions.\r\n *\r\n * Almost every object in amCharts4 universe will have a `language` property,\r\n * which can be accessed for prompt translation.\r\n *\r\n * @see {@link ILanguageAdapters} for a list of available Adapters\r\n * @todo Make prompt keys case-insensitive\r\n * @important\r\n */\nvar Language = /** @class */function (_super) {\n __extends(Language, _super);\n /**\r\n * Constructor\r\n */\n function Language() {\n var _this = _super.call(this) || this;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n /**\r\n * Current locale.\r\n */\n _this._locale = en;\n /**\r\n * Default locale. A locale to fall back to if none is specified, or\r\n * if there's no translation for the prompt for the current language.\r\n */\n _this._defaultLocale = en;\n _this.className = \"Language\";\n // Set default language if necessary\n if ($type.hasValue(options.defaultLocale)) {\n _this.locale = options.defaultLocale;\n }\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Returns locale that is currently used.\r\n *\r\n * @param locale Force locale. Will use current language if not set.\r\n * @return Locale\r\n */\n Language.prototype.getLocale = function (locale) {\n if (locale == null) {\n locale = this._locale;\n }\n return this.adapter.apply(\"locale\", {\n locale: locale\n }).locale;\n };\n /**\r\n * Returns the translation of the string.\r\n *\r\n * If the translation is empty, it will return untranslated prompt.\r\n *\r\n * Third parameter and up are strings that can be used to replace \"%X\"\r\n * placeholders in prompt.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n * ```JavaScriptScript\r\n * // Results in \"This is a first translation test\"\r\n * chart.language.translate(\"This is a %1 translation %2\", null, \"first\", \"test\");\r\n * ```\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\n Language.prototype.translate = function (prompt, locale) {\n var rest = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n rest[_i - 2] = arguments[_i];\n }\n // Get langauge\n locale = this.getLocale(locale);\n // Init translation\n var translation = prompt;\n // Get translations for the locale\n var translations = this.getTranslations(locale);\n var value = translations[prompt];\n // Try to look for the translation\n if (value === null) {\n value = \"\";\n } else if ($type.hasValue(value)) {\n // It might be an empty string\n if (value) {\n translation = value;\n }\n } else if (locale !== this._defaultLocale) {\n // Try to look in default language\n return this.translate.apply(this, __spread([prompt, this._defaultLocale], rest));\n }\n // Replace %1, %2, etc params\n if (rest.length) {\n for (var len = rest.length, i = 0; i < len; ++i) {\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\n }\n }\n // Return the translation\n return this.adapter.apply(\"translate\", {\n translation: translation,\n locale: locale\n }).translation;\n };\n /**\r\n * Non-type-checked translation.\r\n *\r\n * Can be used by plugins and other code that may have their own non-standard\r\n * translation prompts.\r\n *\r\n * @since 4.5.5\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param rest Parameters to replace in string\r\n * @return Translation\r\n */\n Language.prototype.translateAny = function (prompt, locale) {\n var rest = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n rest[_i - 2] = arguments[_i];\n }\n return this.translate.apply(this, __spread([prompt, locale], rest));\n };\n /**\r\n * Sets a prompt translation.\r\n *\r\n * @since 4.9.35\r\n * @param prompt Prompt in English\r\n * @param translation Translation\r\n * @param locale Locale\r\n */\n Language.prototype.setTranslationAny = function (prompt, translation, locale) {\n var localeTarget = locale || this.locale;\n localeTarget[prompt] = translation;\n };\n /**\r\n * Translates prompt.\r\n *\r\n * If translation is empty, it will return empty string, which is a different\r\n * behavior than that of regular `translate`.\r\n *\r\n * @param prompt A string to translate\r\n * @param locale Force translation into specific locale, e.g. fr_FR\r\n * @param ...rest Parameters to replace in string\r\n * @return Translation\r\n */\n Language.prototype.translateEmpty = function (prompt, locale) {\n var rest = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n rest[_i - 2] = arguments[_i];\n }\n var translation = this.translate.apply(this, __spread([prompt, locale], rest));\n return translation == prompt ? \"\" : translation;\n };\n /**\r\n * Translates a function.\r\n *\r\n * This method will return a function reference, but will not run it. It's\r\n * up to the caller script to run the function.\r\n *\r\n * @param prompt A function id to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return A language-specific version of the function\r\n * @todo Apply adapter\r\n */\n Language.prototype.translateFunc = function (prompt, locale) {\n // Get langauge\n locale = this.getLocale(locale);\n // Get translations for the locale\n var translations = this.getTranslations(locale);\n var value = translations[prompt];\n // Try to look for the translation\n if (value != null) {\n return value;\n }\n // Try to look in default language\n if (locale !== this._defaultLocale) {\n return this.translateFunc(prompt, this._defaultLocale);\n }\n // Fail - return empty function\n return function () {\n return \"\";\n };\n };\n /**\r\n * Translates a list of prompts in one go.\r\n *\r\n * @param list An array of strings to translate\r\n * @param locale Force translation into specific locale. e.g. fr_FR\r\n * @return An array of translated strings in the same order as source list\r\n */\n Language.prototype.translateAll = function (list, locale) {\n var _this = this;\n // Translate all items in the list\n if (!this.isDefault()) {\n return $array.map(list, function (x) {\n return _this.translate(x, locale);\n });\n } else {\n return list;\n }\n };\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\n Language.prototype.isDefault = function () {\n return this._defaultLocale === this._locale;\n };\n Object.defineProperty(Language.prototype, \"locale\", {\n /**\r\n * @return Locale definition\r\n */\n get: function () {\n return this._locale;\n },\n /**\r\n * Current locale.\r\n *\r\n * @param value Locale definition (translations)\r\n */\n set: function (value) {\n if (this._locale != value) {\n this._locale = value;\n if (this.events.isEnabled(\"localechanged\")) {\n var event_1 = {\n type: \"localechanged\",\n locale: value,\n target: this\n };\n this.events.dispatchImmediately(\"localechanged\", event_1);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns translations for a given locale.\r\n *\r\n * @ignore\r\n * @deprecated\r\n * @param locale Locale\r\n * @return Translations\r\n */\n Language.prototype.getTranslations = function (locale) {\n return this.adapter.apply(\"translations\", {\n translations: locale,\n locale: locale\n }).translations;\n };\n return Language;\n}(BaseObjectEvents);\nexport { Language };\n//# sourceMappingURL=Language.js.map","/**\r\n * Handles formatting of pseudo-markup in text.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { AMElement } from \"../rendering/AMElement\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { registry } from \"../Registry\";\nimport * as $strings from \"../utils/Strings\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * Handles formatting of pseudo-markdown in text.\r\n *\r\n * @todo Encode < > in output\r\n * @todo Add more adapters\r\n * @important\r\n */\nvar TextFormatter = /** @class */function (_super) {\n __extends(TextFormatter, _super);\n /**\r\n * Constructor\r\n */\n function TextFormatter() {\n var _this = _super.call(this) || this;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n _this.className = \"TextFormatter\";\n _this.applyTheme();\n return _this;\n }\n TextFormatter.prototype.debug = function () {};\n /**\r\n * Formats the text according to specifications passed in.\r\n *\r\n * @param text Text to format\r\n * @param output Output format (svg, html)\r\n * @return Formatted text\r\n */\n TextFormatter.prototype.format = function (text, output) {\n // Apply default\n if (!$type.hasValue(output)) {\n output = \"svg\";\n }\n // Init return value\n var formatted = \"\";\n // Replace double (escaped) square spaces with remporary codes\n text = this.escape(text);\n // Divvy up the string by style tags\n var styles = text.match(/\\[([^\\]]*?)\\]/gm);\n if (!styles) {\n // Nothing to do here - no formatting elements\n return this.wrap(text, \"\", output);\n }\n // Get pure text - no style tags\n var texts = text.split(/\\[[^\\[\\]]*\\]/);\n // Go through each of the texts and wrap it in style tags\n for (var i = 0, len = texts.length; i < len; i++) {\n // Get text bit\n var t = texts[i];\n // Check if string is empty\n if (t === \"\") {\n continue;\n }\n // Run through an adapter\n t = this.adapter.apply(\"chunk\", t);\n // Get related style\n var s = \"\";\n if (i > 0) {\n s = styles[i - 1].replace('[', '').replace(']', '');\n }\n // Wrap text in tag\n formatted += this.wrap(t, s, output);\n }\n // Replace placeholders back\n formatted = this.unescape(formatted);\n // Return result\n return this.cleanUp(formatted);\n };\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\n TextFormatter.prototype.escape = function (text) {\n return text.replace(/\\[\\[/g, registry.getPlaceholder(\"1\")).replace(/([^\\/\\]]{1})\\]\\]/g, \"$1\" + registry.getPlaceholder(\"2\")).replace(/\\]\\]/g, registry.getPlaceholder(\"2\")).replace(/\\{\\{/g, registry.getPlaceholder(\"3\")).replace(/\\}\\}/g, registry.getPlaceholder(\"4\")).replace(/\\'\\'/g, registry.getPlaceholder(\"5\"));\n };\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\n TextFormatter.prototype.unescape = function (text) {\n return text.replace(new RegExp(registry.getPlaceholder(\"1\"), \"g\"), \"[[\").replace(new RegExp(registry.getPlaceholder(\"2\"), \"g\"), \"]]\").replace(new RegExp(registry.getPlaceholder(\"3\"), \"g\"), \"{{\").replace(new RegExp(registry.getPlaceholder(\"4\"), \"g\"), \"}}\").replace(new RegExp(registry.getPlaceholder(\"5\"), \"g\"), \"''\");\n };\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\n TextFormatter.prototype.cleanUp = function (text) {\n return text.replace(/\\[\\[/g, \"[\").replace(/\\]\\]/g, \"]\").replace(/\\{\\{/g, \"{\").replace(/\\}\\}/g, \"}\").replace(/\\'\\'/g, \"'\");\n };\n /**\r\n * Wraps text into corresponding tags.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Styles\r\n * @param output Format to output in (svg, html)\r\n * @return Formatted string\r\n */\n TextFormatter.prototype.wrap = function (text, style, output) {\n if (style === \"\" || style === \"/\") {\n //return text;\n style = \"\";\n }\n switch (output) {\n case \"html\":\n return this.wrapHtml(text, this.translateStyleShortcuts(style));\n default:\n return this.wrapSvg(text, this.translateStyleShortcuts(style));\n }\n };\n /**\r\n * Wraps text in styled SVG tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n */\n TextFormatter.prototype.wrapSvg = function (text, style) {\n if (style === \"\") {\n return \"\" + text + \"\";\n } else {\n return \"\" + text + \"\";\n }\n };\n /**\r\n * Returns an SVG `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text\r\n * @param style Style\r\n * @return Element\r\n */\n TextFormatter.prototype.getSvgElement = function (text, style) {\n var element = new AMElement(\"tspan\");\n element.textContent = text;\n if (style) {\n element.node.setAttribute(\"style\", style);\n }\n return element;\n };\n /**\r\n * Wraps text in HTML tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap\r\n * @param style Style property\r\n * @return Formatted tag\r\n * @todo Translate SVG styles into HTML ones\r\n */\n TextFormatter.prototype.wrapHtml = function (text, style) {\n if (style === \"\") {\n return \"\" + text + \"\";\n } else {\n return \"\" + text + \"\";\n }\n };\n /**\r\n * Returns an HTML `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text/HTML\r\n * @param style Style definition\r\n * @return HTML element\r\n */\n TextFormatter.prototype.getHtmlElement = function (text, style) {\n var element = document.createElement(\"span\");\n element.innerHTML = text;\n if (style) {\n element.setAttribute(\"style\", style);\n }\n return element;\n };\n /**\r\n * Trabslates SVG CSS into HTML CSS.\r\n *\r\n * @ignore Exclude from docs\r\n * @param style SVG CSS\r\n * @return HTML CSS\r\n * @todo Implement actual translation\r\n */\n TextFormatter.prototype.styleSvgToHtml = function (style) {\n style = style.replace(/fill:/, \"color:\");\n return style;\n };\n /**\r\n * Translates style shortcuts into full styles, i.e.:\r\n * \"bold\" => \"font-weight: bold\"\r\n * \"#f00\" => \"fill: #f00\"\r\n *\r\n * @ignore Exclude from docs\r\n * @param style Untranslated style\r\n * @return Translated style\r\n * @todo Implement actual translation\r\n */\n TextFormatter.prototype.translateStyleShortcuts = function (style) {\n if (style == \"\" || style == \"[ ]\") {\n return \"\";\n }\n var cached = registry.getCache(\"translateStyleShortcuts_\" + style);\n if (cached) {\n return cached;\n }\n // Pre-process quoted text\n var q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\n if (q) {\n for (var i = 0; i < q.length; i++) {\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\n }\n }\n // Get style parts\n var b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w]+)|(\\/)/gi);\n // Empty?\n if (!b) {\n return style;\n }\n // Check each part\n for (var i = 0; i < b.length; i++) {\n if (b[i].match(/^bold$/i)) {\n // Bold\n b[i] = \"font-weight:\" + b[i];\n } else if (b[i] == \"/\") {\n // Just closing tag\n // Do nothing\n b[i] = \"\";\n } else if (!b[i].match(/:/)) {\n // Color\n b[i] = \"fill:\" + b[i];\n } else {\n b[i] = b[i].replace(/\\+/g, \" \");\n }\n }\n var res = b.join(';');\n registry.setCache(\"translateStyleShortcuts_\" + style, res);\n return res;\n };\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\n TextFormatter.prototype.chunk = function (text, quotedBlocks, noFormatting) {\n if (quotedBlocks === void 0) {\n quotedBlocks = false;\n }\n if (noFormatting === void 0) {\n noFormatting = false;\n }\n // Init result\n var res = [];\n // Replace double (escaped) square spaces and quotes with temporary codes\n text = this.escape(text);\n // Deal with style blocks\n var chunks = quotedBlocks ? text.split(\"'\") : [text];\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n // Empty?\n if (chunk === \"\") {\n continue;\n }\n if (i % 2 === 0) {\n // Text outside quotes\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\n // \"value\"\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $strings.PLACEHOLDER + \"[\");\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\n var chunks2 = chunk.split(/[\\[\\]]+/);\n for (var i2 = 0; i2 < chunks2.length; i2++) {\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\n // Placeholder?\n if (chunk2 === $strings.PLACEHOLDER) {\n continue;\n }\n // Empty?\n if (chunk2 === \"\") {\n continue;\n }\n // Block or value\n if (i2 % 2 === 0) {\n res.push({\n \"type\": \"value\",\n \"text\": this.adapter.apply(\"chunk\", chunk2)\n });\n } else {\n res.push({\n \"type\": noFormatting ? \"value\" : \"format\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n }\n }\n } else {\n // A text within doublequotes\n // All chunks are \"text\"\n var chunks2 = chunk.split(/[\\[\\]]+/);\n for (var i2 = 0; i2 < chunks2.length; i2++) {\n var chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\n // Empty?\n if (chunk2 === \"\") {\n continue;\n }\n // Block or text\n if (i2 % 2 === 0) {\n res.push({\n \"type\": \"text\",\n \"text\": chunk2\n });\n } else if (this.isImage(chunk2)) {\n res.push({\n \"type\": \"image\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n } else {\n res.push({\n \"type\": \"format\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n }\n }\n }\n }\n return res;\n };\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Format\r\n * @return `true` if it is an image\r\n */\n TextFormatter.prototype.isImage = function (text) {\n return text.match(/img[ ]?:/) ? true : false;\n };\n return TextFormatter;\n}(BaseObject);\nexport { TextFormatter };\nvar formatter;\n/**\r\n * Returns the global instance of [[TextFormatter]].\r\n *\r\n * All classes and instances should reuse this universal text formatter,\r\n * rather than create their own instance of it.\r\n */\nexport function getTextFormatter() {\n if (formatter == null) {\n formatter = new TextFormatter();\n }\n return formatter;\n}\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"TextFormatter\"] = TextFormatter;\n//# sourceMappingURL=TextFormatter.js.map","/**\r\n * Number formatting-related functionality.\r\n */\nimport { __extends } from \"tslib\";\nimport { Language } from \"../utils/Language\";\nimport { BaseObject } from \"../Base\";\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\nimport { registry } from \"../Registry\";\nimport * as $strings from \"../utils/Strings\";\nimport * as $object from \"../utils/Object\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * NumberFormatter class. Formats numbers according to specified formats.\r\n *\r\n * @todo Apply translations to suffixes/prefixes\r\n */\nvar NumberFormatter = /** @class */function (_super) {\n __extends(NumberFormatter, _super);\n /**\r\n * Constructor\r\n */\n function NumberFormatter() {\n var _this = _super.call(this) || this;\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\n _this._negativeBase = 0;\n /**\r\n * Holds number format.\r\n *\r\n * @default #,###.#####\r\n */\n _this._numberFormat = \"#,###.#####\";\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\n _this._outputFormat = \"svg\";\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n */\n _this._smallNumberThreshold = 1.00;\n _this._forceLTR = false;\n _this.className = \"NumberFormatter\";\n _this.applyTheme();\n return _this;\n }\n NumberFormatter.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n if (this.language) {\n this.language.dispose();\n }\n };\n Object.defineProperty(NumberFormatter.prototype, \"language\", {\n /**\r\n * @return Language\r\n */\n get: function () {\n if (!this._language) {\n if (this.sprite) {\n this._language = this.sprite.language;\n } else {\n this._language = new Language();\n }\n }\n return this._language;\n },\n /**\r\n * A reference to [[Language]] instance.\r\n *\r\n * Formatter will use language to translate various items, like number\r\n * suffixes, etc.\r\n *\r\n * @param value Language\r\n */\n set: function (value) {\n this._language = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\n NumberFormatter.prototype.format = function (value, format, precision) {\n // no format passed in or \"Number\"\n if (typeof format === \"undefined\" || $type.isString(format) && format.toLowerCase() === \"number\") {\n format = this._numberFormat;\n }\n // Init return value\n var formatted;\n // Cast to number just in case\n // TODO: maybe use better casting\n var source = Number(value);\n // Is it a built-in format or Intl.NumberFormatOptions\n if ($type.isObject(format)) {\n try {\n if (this.intlLocales) {\n return new Intl.NumberFormat(this.intlLocales, format).format(source);\n } else {\n return new Intl.NumberFormat(undefined, format).format(source);\n }\n } catch (e) {\n return \"Invalid\";\n }\n } else {\n // Clean format\n format = $utils.cleanFormat(format);\n // Get format info (it will also deal with parser caching)\n var info = this.parseFormat(format, this.language);\n // format and replace the number\n var details = void 0;\n if (source > this._negativeBase) {\n details = info.positive;\n } else if (source < this._negativeBase) {\n details = info.negative;\n } else {\n details = info.zero;\n }\n // Adjust precision\n if ($type.hasValue(precision) && !details.mod) {\n details = $object.clone(details);\n details.decimals.active = source == 0 ? 0 : precision;\n }\n // Format\n formatted = details.template.split($strings.PLACEHOLDER).join(this.applyFormat(source, details));\n }\n if (this.forceLTR) {\n formatted = \"‎\" + formatted;\n }\n return formatted;\n };\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n */\n NumberFormatter.prototype.parseFormat = function (format, language) {\n var _this = this;\n // Check cache\n var cached = this.getCache(format);\n if ($type.hasValue(cached)) {\n return cached;\n }\n // init format parse info holder\n var info = {\n \"positive\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n },\n \"negative\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n },\n \"zero\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": language.translateEmpty(\"_thousandSeparator\")\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": language.translateEmpty(\"_decimalSeparator\")\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n }\n };\n // Escape double vertical bars (that mean display one vertical bar)\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\n // Split it up and deal with different formats\n var parts = format.split(\"|\");\n info.positive.source = parts[0];\n if (typeof parts[2] === \"undefined\") {\n info.zero = info.positive;\n } else {\n info.zero.source = parts[2];\n }\n if (typeof parts[1] === \"undefined\") {\n info.negative = info.positive;\n } else {\n info.negative.source = parts[1];\n }\n // Parse each\n $object.each(info, function (part, item) {\n // Already parsed\n if (item.parsed) {\n return;\n }\n // Check cached\n if (typeof _this.getCache(item.source) !== \"undefined\") {\n info[part] = _this.getCache(item.source);\n return;\n }\n // Begin parsing\n var partFormat = item.source;\n // Just \"Number\"?\n if (partFormat.toLowerCase() === \"number\") {\n partFormat = $type.isString(_this._numberFormat) ? _this._numberFormat : \"#,###.#####\";\n }\n // Let TextFormatter split into chunks\n var chunks = getTextFormatter().chunk(partFormat, true);\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n // replace back double vertical bar\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\n if (chunk.type === \"value\") {\n // Parse format\n // Look for codes\n var matches = chunk.text.match(/[#0.,]+[ ]?[abesABES%!]?[abesABES‰!]?/);\n if (matches) {\n if (matches === null || matches[0] === \"\") {\n // no codes here - assume string\n // nothing to do here\n item.template += chunk.text;\n } else {\n // look for the format modifiers at the end\n var mods = matches[0].match(/[abesABES%‰!]{2}|[abesABES%‰]{1}$/);\n if (mods) {\n item.mod = mods[0].toLowerCase();\n item.modSpacing = matches[0].match(/[ ]{1}[abesABES%‰!]{1}$/) ? true : false;\n }\n // break the format up\n var a = matches[0].split(\".\");\n // Deal with thousands\n if (a[0] === \"\") {\n // No directives for thousands\n // Leave default settings (no formatting)\n } else {\n // Counts\n item.thousands.active = (a[0].match(/0/g) || []).length;\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\n // Separator interval\n var b = a[0].split(\",\");\n if (b.length === 1) {\n // No thousands separators\n // Do nothing\n } else {\n // Use length fo the last chunk as thousands length\n item.thousands.interval = $type.getValue(b.pop()).length;\n if (item.thousands.interval === 0) {\n item.thousands.interval = -1;\n }\n }\n }\n // Deal with decimals\n if (typeof a[1] === \"undefined\") {\n // No directives for decimals\n // Leave at defaults (no formatting)\n } else {\n // Counts\n item.decimals.active = (a[1].match(/0/g) || []).length;\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\n }\n // Add special code to template\n item.template += chunk.text.split(matches[0]).join($strings.PLACEHOLDER);\n }\n }\n } else {\n // Quoted string - take it as it is\n item.template += chunk.text;\n }\n }\n // Apply style formatting\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\n // Save cache\n _this.setCache(item.source, item);\n // Mark this as parsed\n item.parsed = true;\n });\n // Save cache (the whole thing)\n this.setCache(format, info);\n return info;\n };\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n */\n NumberFormatter.prototype.applyFormat = function (value, details) {\n // Use absolute values\n var negative = value < 0;\n value = Math.abs(value);\n // Recalculate according to modifier\n var prefix = \"\",\n suffix = \"\";\n var mods = details.mod ? details.mod.split(\"\") : [];\n if (mods.indexOf(\"b\") !== -1) {\n var a_1 = this.applyPrefix(value, this.bytePrefixes, mods.indexOf(\"!\") !== -1);\n value = a_1[0];\n prefix = a_1[1];\n suffix = a_1[2];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (mods.indexOf(\"a\") !== -1) {\n var a_2 = this.applyPrefix(value, value < this.smallNumberThreshold ? this.smallNumberPrefixes : this.bigNumberPrefixes, mods.indexOf(\"!\") !== -1);\n value = a_2[0];\n prefix = a_2[1];\n suffix = a_2[2];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (mods.indexOf(\"%\") !== -1) {\n var ol = $math.min(value.toString().length + 2, 21);\n value *= 100;\n value = parseFloat(value.toPrecision(ol));\n suffix = \"%\";\n } else if (mods.indexOf(\"‰\") !== -1) {\n var ol = $math.min(value.toString().length + 3, 21);\n value *= 1000;\n value = parseFloat(value.toPrecision(ol));\n suffix = \"‰\";\n }\n // Round to passive\n if (mods.indexOf(\"e\") !== -1) {\n // convert the value to exponential\n var exp = void 0;\n if (details.decimals.passive >= 0) {\n exp = value.toExponential(details.decimals.passive).split(\"e\");\n } else {\n exp = value.toExponential().split(\"e\");\n }\n value = Number(exp[0]);\n suffix = \"e\" + exp[1];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (details.decimals.passive === 0) {\n value = Math.round(value);\n } else if (details.decimals.passive > 0) {\n var d = Math.pow(10, details.decimals.passive);\n value = Math.round(value * d) / d;\n }\n // Init return value\n var res = \"\";\n // Calc integer and decimal parts\n var a = $utils.numberToString(value).split(\".\");\n // Format integers\n var ints = a[0];\n // Pad integers to active length\n if (ints.length < details.thousands.active) {\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\n }\n // Insert thousands separators\n if (details.thousands.interval > 0) {\n var ip = [];\n var intsr = ints.split(\"\").reverse().join(\"\");\n for (var i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\n var c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\n if (c !== \"\") {\n ip.unshift(c);\n }\n }\n ints = ip.join(details.thousands.separator);\n }\n // Add integers\n res += ints;\n // Add decimals\n if (a.length === 1) {\n a.push(\"\");\n }\n var decs = a[1];\n // Fill zeros?\n if (decs.length < details.decimals.active) {\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\n }\n if (decs !== \"\") {\n res += details.decimals.separator + decs;\n }\n // Can't have empty return value\n if (res === \"\") {\n res = \"0\";\n }\n // Add minus sign back\n if (value !== 0 && negative && mods.indexOf(\"s\") === -1) {\n res = \"-\" + res;\n }\n // Add suffixes/prefixes\n if (prefix) {\n res = prefix + res;\n }\n if (suffix) {\n res += suffix;\n }\n return res;\n };\n /**\r\n * Chooses appropriate prefix and suffix based on the passed in rules.\r\n *\r\n * @param value Value\r\n * @param prefixes Prefix array\r\n * @param force Force application of a first prefix (@sice 4.5.4)\r\n * @return Result\r\n */\n NumberFormatter.prototype.applyPrefix = function (value, prefixes, force) {\n if (force === void 0) {\n force = false;\n }\n var newvalue = value;\n var prefix = \"\";\n var suffix = \"\";\n var applied = false;\n var k = 1;\n for (var i = 0, len = prefixes.length; i < len; i++) {\n if (prefixes[i].number <= value) {\n if (prefixes[i].number === 0) {\n newvalue = 0;\n } else {\n newvalue = value / prefixes[i].number;\n k = prefixes[i].number;\n }\n prefix = prefixes[i].prefix;\n suffix = prefixes[i].suffix;\n applied = true;\n }\n }\n if (!applied && force && prefixes.length && value != 0) {\n // Prefix was not applied. Use the first prefix.\n newvalue = value / prefixes[0].number;\n prefix = prefixes[0].prefix;\n suffix = prefixes[0].suffix;\n applied = true;\n }\n if (applied) {\n newvalue = parseFloat(newvalue.toPrecision($math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\n }\n return [newvalue, prefix, suffix];\n };\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\n NumberFormatter.prototype.invalidateSprite = function () {\n if (this.sprite) {\n this.sprite.invalidate();\n }\n };\n Object.defineProperty(NumberFormatter.prototype, \"numberFormat\", {\n /**\r\n * @return A format to use for number formatting\r\n */\n get: function () {\n return this._numberFormat;\n },\n /**\r\n * Number format.\r\n *\r\n * @default \"#,###.#####\"\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\n set: function (format) {\n this._numberFormat = format;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"intlLocales\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this._intlLocales;\n },\n /**\r\n * Locales if you are using date formats in `Intl.NumberFormatOptions` syntax.\r\n *\r\n * @see (@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat) about using Intl for number formatting\r\n * @param value Locales\r\n */\n set: function (value) {\n this._intlLocales = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"negativeBase\", {\n /**\r\n * @return A format to use for number formatting\r\n */\n get: function () {\n return this._negativeBase;\n },\n /**\r\n * Negative base for negative numbers.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param format A format to use for number formatting\r\n */\n set: function (value) {\n this._negativeBase = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"bigNumberPrefixes\", {\n /**\r\n * @return Prefixes for big numbers\r\n */\n get: function () {\n if (!$type.hasValue(this._bigNumberPrefixes)) {\n this._bigNumberPrefixes = [{\n \"number\": 1e+3,\n \"suffix\": this.language.translate(\"_big_number_suffix_3\")\n }, {\n \"number\": 1e+6,\n \"suffix\": this.language.translate(\"_big_number_suffix_6\")\n }, {\n \"number\": 1e+9,\n \"suffix\": this.language.translate(\"_big_number_suffix_9\")\n }, {\n \"number\": 1e+12,\n \"suffix\": this.language.translate(\"_big_number_suffix_12\")\n }, {\n \"number\": 1e+15,\n \"suffix\": this.language.translate(\"_big_number_suffix_15\")\n }, {\n \"number\": 1e+18,\n \"suffix\": this.language.translate(\"_big_number_suffix_18\")\n }, {\n \"number\": 1e+21,\n \"suffix\": this.language.translate(\"_big_number_suffix_21\")\n }, {\n \"number\": 1e+24,\n \"suffix\": this.language.translate(\"_big_number_suffix_24\")\n }];\n }\n return this._bigNumberPrefixes;\n },\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e+3, \"suffix\": \"K\" },\r\n * { \"number\": 1e+6, \"suffix\": \"M\" },\r\n * { \"number\": 1e+9, \"suffix\": \"G\" },\r\n * { \"number\": 1e+12, \"suffix\": \"T\" },\r\n * { \"number\": 1e+15, \"suffix\": \"P\" },\r\n * { \"number\": 1e+18, \"suffix\": \"E\" },\r\n * { \"number\": 1e+21, \"suffix\": \"Z\" },\r\n * { \"number\": 1e+24, \"suffix\": \"Y\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is bigger than the `number` ir will be converted to the\r\n * appropriate bigger number with prefix.\r\n *\r\n * E.g. as per above `1500` will be converted to `1.5K`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for big numbers\r\n */\n set: function (prefixes) {\n this._bigNumberPrefixes = prefixes;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberPrefixes\", {\n /**\r\n * @return Prefixes for small numbers\r\n */\n get: function () {\n if (!$type.hasValue(this._smallNumberPrefixes)) {\n this._smallNumberPrefixes = [{\n \"number\": 1e-24,\n \"suffix\": this.language.translate(\"_small_number_suffix_24\")\n }, {\n \"number\": 1e-21,\n \"suffix\": this.language.translate(\"_small_number_suffix_21\")\n }, {\n \"number\": 1e-18,\n \"suffix\": this.language.translate(\"_small_number_suffix_18\")\n }, {\n \"number\": 1e-15,\n \"suffix\": this.language.translate(\"_small_number_suffix_15\")\n }, {\n \"number\": 1e-12,\n \"suffix\": this.language.translate(\"_small_number_suffix_12\")\n }, {\n \"number\": 1e-9,\n \"suffix\": this.language.translate(\"_small_number_suffix_9\")\n }, {\n \"number\": 1e-6,\n \"suffix\": this.language.translate(\"_small_number_suffix_6\")\n }, {\n \"number\": 1e-3,\n \"suffix\": this.language.translate(\"_small_number_suffix_3\")\n }];\n }\n return this._smallNumberPrefixes;\n },\n /**\r\n * Prefixes for big numbers.\r\n *\r\n * It's an array of objects of number/prefix pairs.\r\n *\r\n * ```JSON\r\n * [\r\n * { \"number\": 1e-24, \"suffix\": \"y\" },\r\n * { \"number\": 1e-21, \"suffix\": \"z\" },\r\n * { \"number\": 1e-18, \"suffix\": \"a\" },\r\n * { \"number\": 1e-15, \"suffix\": \"f\" },\r\n * { \"number\": 1e-12, \"suffix\": \"p\" },\r\n * { \"number\": 1e-9, \"suffix\": \"n\" },\r\n * { \"number\": 1e-6, \"suffix\": \"μ\" },\r\n * { \"number\": 1e-3, \"suffix\": \"m\" }\r\n * ]\r\n * ```\r\n *\r\n * If the number is smaller than the `number` ir will be converted to the\r\n * appropriate smaller number with prefix.\r\n *\r\n * E.g. as per above `0.0015` will be converted to `1.5m`.\r\n *\r\n * Please note that for this transformation to be enabled, you need to\r\n * enable it specific modifier in your format setting.\r\n *\r\n * The modifier for big/small number modification is \"a\":\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00a\")}\r\n * ```\r\n *\r\n * IMPORTANT: The order of the suffixes is important. The list must start\r\n * from the smallest number and work towards bigger ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for small numbers\r\n */\n set: function (prefixes) {\n this._smallNumberPrefixes = prefixes;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"smallNumberThreshold\", {\n /**\r\n * @return Small number threshold\r\n */\n get: function () {\n return this._smallNumberThreshold;\n },\n /**\r\n * Any number smaller than this will be considered \"small\" number, which will\r\n * trigger special formatting if \"a\" format modifier is used.\r\n *\r\n * @since 4.6.8\r\n * @param value Small number threshold\r\n */\n set: function (value) {\n this._smallNumberThreshold = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"bytePrefixes\", {\n /**\r\n * @return Prefixes for byte-size formatting\r\n */\n get: function () {\n if (!$type.hasValue(this._bytePrefixes)) {\n this._bytePrefixes = [{\n \"number\": 1,\n suffix: this.language.translate(\"_byte_suffix_B\")\n }, {\n \"number\": 1024,\n suffix: this.language.translate(\"_byte_suffix_KB\")\n }, {\n \"number\": 1048576,\n suffix: this.language.translate(\"_byte_suffix_MB\")\n }, {\n \"number\": 1073741824,\n suffix: this.language.translate(\"_byte_suffix_GB\")\n }, {\n \"number\": 1099511627776,\n suffix: this.language.translate(\"_byte_suffix_TB\")\n }, {\n \"number\": 1125899906842624,\n suffix: this.language.translate(\"_byte_suffix_PB\")\n }];\n }\n return this._bytePrefixes;\n },\n /**\r\n * Basically the same as `bigNumberPrefixes`, except base for calculation\r\n * is not thousand but byte (1024).\r\n *\r\n * The modifier is \"b\".\r\n *\r\n * ```Text\r\n * {myfield.formatNumber(\"#,###.00b\")}\r\n * ```\r\n *\r\n * The above `2048` will change to `2K`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-numbers/} Tutorial on number formatting\r\n * @param prefixes Prefixes for byte-size formatting\r\n */\n set: function (prefixes) {\n this._bytePrefixes = prefixes;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"outputFormat\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\n get: function () {\n return this._outputFormat;\n },\n /**\r\n * Ooutput format: \"svg\" or \"html\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\n set: function (outputFormat) {\n this._outputFormat = outputFormat.toLowerCase();\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberFormatter.prototype, \"forceLTR\", {\n get: function () {\n return this._forceLTR;\n },\n set: function (value) {\n this._forceLTR = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\n NumberFormatter.prototype.escape = function (text) {\n return text.replace(\"||\", $strings.PLACEHOLDER2);\n };\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\n NumberFormatter.prototype.unescape = function (text) {\n return text.replace($strings.PLACEHOLDER2, \"|\");\n };\n return NumberFormatter;\n}(BaseObject);\nexport { NumberFormatter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"NumberFormatter\"] = NumberFormatter;\n//# sourceMappingURL=NumberFormatter.js.map","/**\r\n * Handles date and time formatting\r\n */\nimport { __extends } from \"tslib\";\nimport { Language } from \"../utils/Language\";\nimport { BaseObject } from \"../Base\";\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\nimport { registry } from \"../Registry\";\nimport * as $strings from \"../utils/Strings\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\nimport * as $time from \"../utils/Time\";\n/**\r\n * Handles date and time formatting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @todo Better type casting of passed in date?\r\n * @todo Quarter support?\r\n * @todo When parsing named months make the search case-insensitive\r\n * @todo Escape a.m./p.m. properly when used in RegEx\r\n */\nvar DateFormatter = /** @class */function (_super) {\n __extends(DateFormatter, _super);\n /**\r\n * Constructor\r\n */\n function DateFormatter() {\n var _this = _super.call(this) || this;\n /**\r\n * Date format.\r\n */\n _this._dateFormat = \"yyyy-MM-dd\";\n /**\r\n * Input date format.\r\n */\n _this._inputDateFormat = \"yyyy-MM-dd\";\n /**\r\n * Assume UTC time zone.\r\n */\n _this._utc = false;\n /**\r\n * If `timezone` is set, this will hold minute fraction of the timezone.\r\n *\r\n * @readonly\r\n * @ignore\r\n */\n _this.timezoneMinutes = 0;\n /**\r\n * First day of week.\r\n *\r\n * 0 - Sunday\r\n * 1 - Monday\r\n *\r\n * Etc.\r\n */\n _this._firstDayOfWeek = 1;\n /**\r\n * A list of month names.\r\n */\n _this.months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n /**\r\n * A list of short month names.\r\n */\n _this.monthsShort = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n /**\r\n * A list of weekday names.\r\n */\n _this.weekdays = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n /**\r\n * A list of short weekday names.\r\n */\n _this.weekdaysShort = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\n _this._outputFormat = \"svg\";\n /**\r\n * Should the first letter of the formatted date be capitalized?\r\n *\r\n * @default true\r\n */\n _this.capitalize = true;\n _this.className = \"DateFormatter\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(DateFormatter.prototype, \"language\", {\n /**\r\n * @return Language\r\n */\n get: function () {\n return this._language;\n },\n /**\r\n * A reference to [[Language]] object.\r\n *\r\n * @param value Language\r\n */\n set: function (value) {\n this._language = value;\n this.dateFormat = this._language.translate(\"_date\");\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Formats the date value according to specified format.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/} Tutorial on date/time formatting\r\n * @param source Date value\r\n * @param format Format\r\n * @return Formatted date string\r\n */\n DateFormatter.prototype.format = function (source, format, applyTimezone) {\n // No language?\n if (!this.language) {\n if (this.sprite) {\n this.language = this.sprite.language;\n } else {\n this.language = new Language();\n }\n }\n // No format passed in or it's empty\n if (typeof format === \"undefined\" || format === \"\") {\n format = this._dateFormat;\n }\n // Init return value\n var formatted;\n // Do casting if required\n // This will take care of timestamps as well as Date objects\n var date;\n if ($type.isString(source)) {\n // If it's a string, let's try parsing it using our own functionality\n date = this.parse(source);\n } else {\n date = $utils.anyToDate(source);\n }\n // Is it a built-in format or Intl.DateTimeFormat\n if ($type.isObject(format)) {\n try {\n if (this.intlLocales) {\n return new Intl.DateTimeFormat(this.intlLocales, format).format(date);\n } else {\n return new Intl.DateTimeFormat(undefined, format).format(date);\n }\n } catch (e) {\n return \"Invalid\";\n }\n } else {\n // Clean format\n format = $utils.cleanFormat(format);\n // get format info (it will also deal with parser caching)\n var info = this.parseFormat(format);\n // Should we apply custom time zone?\n if ($type.hasValue(this.timezoneOffset)) {\n date.setMinutes(date.getMinutes() + date.getTimezoneOffset() - this.timezoneOffset);\n } else if ($type.hasValue(this.timezone) && applyTimezone !== false) {\n date = $time.setTimezone(date, this.timezone);\n }\n // Check if it's a valid date\n if (!$type.isNumber(date.getTime())) {\n return this.language.translate(\"Invalid date\");\n }\n // Apply format\n formatted = this.applyFormat(date, info, this.language);\n // Capitalize\n if (this.capitalize) {\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\n }\n }\n // We're done\n return formatted;\n };\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\n DateFormatter.prototype.parseFormat = function (format) {\n // Check cache\n var cached = this.getCache(format);\n if ($type.hasValue(cached)) {\n return cached;\n }\n // Init format parse info holder\n var info = {\n \"template\": \"\",\n \"parts\": []\n };\n // Let TextFormatter split into chunks\n var chunks = getTextFormatter().chunk(format, true);\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n if (chunk.type === \"value\") {\n // Just \"Date\"?\n if (chunk.text.match(/^date$/i) && $type.isString(this._dateFormat)) {\n chunk.text = this._dateFormat;\n }\n // Find all possible parts\n var matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\n // Found?\n if (matches) {\n // Populate template\n for (var x = 0; x < matches.length; x++) {\n info.parts.push(matches[x]);\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\n }\n }\n }\n // Apply to template\n info.template += chunk.text;\n }\n // Apply style formatting\n //info.template = getTextFormatter().format(info.template, this.outputFormat);\n // Save cache\n this.setCache(format, info);\n return info;\n };\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @param language Language\r\n * @return Formatted date string\r\n */\n DateFormatter.prototype.applyFormat = function (date, info, language) {\n // Init return value\n var res = info.template;\n // Get values\n var fullYear,\n month,\n weekday,\n day,\n hours,\n minutes,\n seconds,\n milliseconds,\n offset = date.getTimezoneOffset(),\n timestamp = date.getTime();\n if (this.utc) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n weekday = date.getUTCDay();\n day = date.getUTCDate();\n hours = date.getUTCHours();\n minutes = date.getUTCMinutes();\n seconds = date.getUTCSeconds();\n milliseconds = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n weekday = date.getDay();\n day = date.getDate();\n hours = date.getHours();\n minutes = date.getMinutes();\n seconds = date.getSeconds();\n milliseconds = date.getMilliseconds();\n }\n // Go through each part and format/replace it in template\n for (var i = 0, len = info.parts.length; i < len; i++) {\n var value = \"\";\n switch (info.parts[i]) {\n case \"G\":\n value = language.translate(fullYear < 0 ? \"_era_bc\" : \"_era_ad\");\n break;\n case \"yyyy\":\n value = Math.abs(fullYear).toString();\n if (fullYear < 0) {\n value += language.translate(\"_era_bc\");\n }\n break;\n case \"yyy\":\n case \"yy\":\n case \"y\":\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\n if (fullYear < 0) {\n value += language.translate(\"_era_bc\");\n }\n break;\n case \"YYYY\":\n case \"YYY\":\n case \"YY\":\n case \"Y\":\n var week = $utils.getWeek(date);\n var year = fullYear;\n if (week == 1 && weekday > 4) {\n year--;\n }\n if (info.parts[i] == \"YYYY\") {\n value = Math.abs(year).toString();\n } else {\n value = Math.abs(year).toString().substr(-info.parts[i].length);\n }\n if (year < 0) {\n value += language.translate(\"_era_bc\");\n }\n break;\n case \"u\":\n // @todo\n break;\n case \"q\":\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\n break;\n case \"MMMMM\":\n value = language.translate(this.months[month]).substr(0, 1);\n break;\n case \"MMMM\":\n value = language.translate(this.months[month]);\n break;\n case \"MMM\":\n value = language.translate(this.monthsShort[month]);\n break;\n case \"MM\":\n value = $utils.padString(month + 1, 2, \"0\");\n break;\n case \"M\":\n value = (month + 1).toString();\n break;\n case \"ww\":\n value = $utils.padString($utils.getWeek(date, this.utc), 2, \"0\");\n break;\n case \"w\":\n value = $utils.getWeek(date, this.utc).toString();\n break;\n case \"W\":\n value = $utils.getMonthWeek(date, this.utc).toString();\n break;\n case \"dd\":\n value = $utils.padString(day, 2, \"0\");\n break;\n case \"d\":\n value = day.toString();\n break;\n case \"DD\":\n case \"DDD\":\n value = $utils.padString($utils.getYearDay(date, this.utc).toString(), info.parts[i].length, \"0\");\n break;\n case \"D\":\n value = $utils.getYearDay(date, this.utc).toString();\n break;\n case \"F\":\n // @todo\n break;\n case \"g\":\n // @todo\n break;\n case \"t\":\n value = language.translateFunc(\"_dateOrd\").call(this, day);\n break;\n case \"E\":\n value = (weekday || 7).toString();\n break;\n case \"EE\":\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\n break;\n case \"EEE\":\n case \"eee\":\n value = language.translate(this.weekdaysShort[weekday]);\n break;\n case \"EEEE\":\n case \"eeee\":\n value = language.translate(this.weekdays[weekday]);\n break;\n case \"EEEEE\":\n case \"eeeee\":\n value = language.translate(this.weekdays[weekday]).substr(0, 1);\n break;\n case \"e\":\n case \"ee\":\n value = (weekday - this.firstDayOfWeek + 1).toString();\n if (info.parts[i] == \"ee\") {\n value = $utils.padString(value, 2, \"0\");\n }\n break;\n case \"a\":\n if (hours >= 12) {\n value = language.translate(\"PM\");\n } else {\n value = language.translate(\"AM\");\n }\n break;\n case \"aa\":\n if (hours >= 12) {\n value = language.translate(\"P.M.\");\n } else {\n value = language.translate(\"A.M.\");\n }\n break;\n case \"aaa\":\n if (hours >= 12) {\n value = language.translate(\"P\");\n } else {\n value = language.translate(\"A\");\n }\n break;\n case \"h\":\n value = $utils.get12Hours(hours).toString();\n break;\n case \"hh\":\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\n break;\n case \"H\":\n value = hours.toString();\n break;\n case \"HH\":\n value = $utils.padString(hours, 2, \"0\");\n break;\n case \"K\":\n value = $utils.get12Hours(hours, 0).toString();\n break;\n case \"KK\":\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\n break;\n case \"k\":\n value = (hours + 1).toString();\n break;\n case \"kk\":\n value = $utils.padString(hours + 1, 2, \"0\");\n break;\n case \"m\":\n value = minutes.toString();\n break;\n case \"mm\":\n value = $utils.padString(minutes, 2, \"0\");\n break;\n case \"s\":\n value = seconds.toString();\n break;\n case \"ss\":\n value = $utils.padString(seconds, 2, \"0\");\n break;\n case \"S\":\n case \"SS\":\n case \"SSS\":\n value = Math.round(milliseconds / 1000 * Math.pow(10, info.parts[i].length)).toString();\n break;\n case \"x\":\n value = timestamp.toString();\n break;\n case \"n\":\n case \"nn\":\n case \"nnn\":\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\n break;\n case \"z\":\n value = $utils.getTimeZone(date, false, false, this.utc);\n break;\n case \"zz\":\n value = $utils.getTimeZone(date, true, false, this.utc);\n break;\n case \"zzz\":\n value = $utils.getTimeZone(date, false, true, this.utc);\n break;\n case \"zzzz\":\n value = $utils.getTimeZone(date, true, true, this.utc);\n break;\n case \"Z\":\n case \"ZZ\":\n var tz = Math.abs(offset) / 60;\n var tzh = Math.floor(tz);\n var tzm = tz * 60 - tzh * 60;\n if (this.utc) {\n tzh = 0;\n tzm = 0;\n }\n if (info.parts[i] == \"Z\") {\n value = \"GMT\";\n value += offset > 0 ? \"-\" : \"+\";\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\n } else {\n value = offset > 0 ? \"-\" : \"+\";\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\n }\n break;\n case \"i\":\n value = date.toISOString();\n break;\n case \"I\":\n value = date.toUTCString();\n break;\n }\n res = res.replace($strings.PLACEHOLDER, value);\n }\n return res;\n };\n /**\r\n * Parses any input value into Date object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-date-time/#Parsing_Dates} Tutorial on date/time parsing\r\n * @param source Source value\r\n * @param format Source format\r\n * @return Date object\r\n */\n DateFormatter.prototype.parse = function (source, format) {\n // Format set?\n if (!$type.hasValue(format)) {\n format = this.inputDateFormat;\n }\n // Is it already a Date\n if (source instanceof Date) {\n return source;\n }\n // Is it a numeric timestamp\n if (typeof source === \"number\") {\n return new Date(source);\n }\n // No? Let's check if it's string, and try converting to it if nec\n if (typeof source !== \"string\") {\n source = source.toString();\n }\n // no language?\n if (!this.language) {\n if (this.sprite) {\n this.language = this.sprite.language;\n } else {\n this.language = new Language();\n }\n }\n // Init return value\n var res;\n // Init RegEx for parsing\n var reg = \"\";\n // Clean format\n format = $utils.cleanFormat(format);\n // Clip format to length of the source string\n format = format.substr(0, source.length);\n // Parse format\n var info = this.parseFormat(format);\n // Init parsed items holder\n var parsedIndexes = {\n \"year\": -1,\n \"year3\": -1,\n \"year2\": -1,\n \"year1\": -1,\n \"month\": -1,\n \"monthShort\": -1,\n \"monthLong\": -1,\n \"weekdayShort\": -1,\n \"weekdayLong\": -1,\n \"day\": -1,\n \"yearDay\": -1,\n \"week\": -1,\n \"hourBase0\": -1,\n \"hour12Base0\": -1,\n \"hourBase1\": -1,\n \"hour12Base1\": -1,\n \"minute\": -1,\n \"second\": -1,\n \"millisecond\": -1,\n \"millisecondDigits\": -1,\n \"am\": -1,\n \"zone\": -1,\n \"timestamp\": -1,\n \"iso\": -1\n };\n // Init values\n var resValues = {\n \"year\": 1970,\n \"month\": 0,\n \"day\": 1,\n \"hour\": 0,\n \"minute\": 0,\n \"second\": 0,\n \"millisecond\": 0,\n \"timestamp\": null,\n \"offset\": 0,\n \"utc\": this.utc\n };\n // Index adjuster\n var indexAdjust = 0,\n index = 0;\n // Iterate through all of the parts\n for (var i = 0; i < info.parts.length; i++) {\n // Set current match index\n index = i + indexAdjust + 1;\n switch (info.parts[i]) {\n case \"yyyy\":\n case \"YYYY\":\n reg += \"([0-9]{4})\";\n parsedIndexes.year = index;\n break;\n case \"yyy\":\n case \"YYY\":\n reg += \"([0-9]{3})\";\n parsedIndexes.year3 = index;\n break;\n case \"yy\":\n case \"YY\":\n reg += \"([0-9]{2})\";\n parsedIndexes.year2 = index;\n break;\n case \"y\":\n case \"Y\":\n reg += \"([0-9]{1})\";\n parsedIndexes.year1 = index;\n break;\n case \"MMMM\":\n reg += \"(\" + this.getStringList(this.months).join(\"|\") + \")\";\n parsedIndexes.monthLong = index;\n break;\n case \"MMM\":\n reg += \"(\" + this.getStringList(this.monthsShort).join(\"|\") + \")\";\n parsedIndexes.monthShort = index;\n break;\n case \"MM\":\n case \"M\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.month = index;\n break;\n case \"ww\":\n case \"w\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.week = index;\n break;\n case \"dd\":\n case \"d\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.day = index;\n break;\n case \"DDD\":\n case \"DD\":\n case \"D\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.yearDay = index;\n break;\n case \"dddd\":\n reg += \"(\" + this.getStringList(this.weekdays).join(\"|\") + \")\";\n parsedIndexes.weekdayLong = index;\n break;\n case \"ddd\":\n reg += \"(\" + this.getStringList(this.weekdaysShort).join(\"|\") + \")\";\n parsedIndexes.weekdayShort = index;\n break;\n case \"aaa\":\n case \"aa\":\n case \"a\":\n // TODO: fix (escape regex)\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\n parsedIndexes.am = index;\n break;\n case \"hh\":\n case \"h\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hour12Base1 = index;\n break;\n case \"HH\":\n case \"H\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hourBase0 = index;\n break;\n case \"KK\":\n case \"K\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hour12Base0 = index;\n break;\n case \"kk\":\n case \"k\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hourBase1 = index;\n break;\n case \"mm\":\n case \"m\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.minute = index;\n break;\n case \"ss\":\n case \"s\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.second = index;\n break;\n case \"SSS\":\n case \"SS\":\n case \"S\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.millisecond = index;\n parsedIndexes.millisecondDigits = info.parts[i].length;\n break;\n case \"nnn\":\n case \"nn\":\n case \"n\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.millisecond = index;\n break;\n case \"x\":\n reg += \"([0-9]{1,})\";\n parsedIndexes.timestamp = index;\n break;\n case \"Z\":\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\n parsedIndexes.zone = index;\n break;\n case \"ZZ\":\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\n parsedIndexes.zone = index;\n break;\n case \"i\":\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\.?([0-9]{0,3})([zZ]|[+\\-][0-9]{2}:?[0-9]{2}|$)\";\n parsedIndexes.iso = index;\n indexAdjust += 7;\n break;\n case \"G\":\n case \"YYYY\":\n case \"YYY\":\n case \"YY\":\n case \"Y\":\n case \"MMMMM\":\n case \"W\":\n case \"EEEEE\":\n case \"EEEE\":\n case \"EEE\":\n case \"EE\":\n case \"E\":\n case \"eeeee\":\n case \"eeee\":\n case \"eee\":\n case \"ee\":\n case \"e\":\n case \"zzzz\":\n case \"zzz\":\n case \"zz\":\n case \"z\":\n case \"t\":\n // Ignore\n indexAdjust--;\n break;\n }\n reg += \"[^0-9]*\";\n }\n // Try matching\n var regex = new RegExp(reg);\n var matches = source.match(regex);\n if (matches) {\n // Populate the date object\n // Full year\n if (parsedIndexes.year > -1) {\n resValues.year = parseInt(matches[parsedIndexes.year]);\n }\n // 3-digit year\n if (parsedIndexes.year3 > -1) {\n var val = parseInt(matches[parsedIndexes.year3]);\n val += 1000;\n resValues.year = val;\n }\n // 2-digit year\n if (parsedIndexes.year2 > -1) {\n var val = parseInt(matches[parsedIndexes.year2]);\n if (val > 50) {\n val += 1000;\n } else {\n val += 2000;\n }\n resValues.year = val;\n }\n // 1-digit year\n if (parsedIndexes.year1 > -1) {\n var val = parseInt(matches[parsedIndexes.year1]);\n val = Math.floor(new Date().getFullYear() / 10) * 10 + val;\n resValues.year = val;\n }\n // Full month\n if (parsedIndexes.monthLong > -1) {\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\n }\n // Short month\n if (parsedIndexes.monthShort > -1) {\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\n }\n // Numeric month\n if (parsedIndexes.month > -1) {\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\n }\n // Weekday\n // @todo\n // Week\n if (parsedIndexes.week > -1 && parsedIndexes.day === -1) {\n // We parse weeks ONLY if day is not explicitly set\n // TODO: this needs work\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\n resValues.month = 0;\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this.utc);\n }\n // Day\n if (parsedIndexes.day > -1) {\n resValues.day = parseInt(matches[parsedIndexes.day]);\n }\n // Year day\n if (parsedIndexes.yearDay > -1) {\n resValues.month = 0;\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\n }\n // 24 Hour (0-23)\n if (parsedIndexes.hourBase0 > -1) {\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\n }\n // 24 Hour (1-24)\n if (parsedIndexes.hourBase1 > -1) {\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\n }\n // 12 Hour (0-11)\n if (parsedIndexes.hour12Base0 > -1) {\n var val = parseInt(matches[parsedIndexes.hour12Base0]);\n if (val == 11) {\n val = 0;\n }\n if (parsedIndexes.am > -1 && !this.isAm(matches[parsedIndexes.am])) {\n val += 12;\n }\n resValues.hour = val;\n }\n // 12 Hour (1-12)\n if (parsedIndexes.hour12Base1 > -1) {\n var val = parseInt(matches[parsedIndexes.hour12Base1]);\n if (val == 12) {\n val = 0;\n }\n if (parsedIndexes.am > -1 && !this.isAm(matches[parsedIndexes.am])) {\n val += 12;\n }\n resValues.hour = val;\n }\n // Minute\n if (parsedIndexes.minute > -1) {\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\n }\n // Second\n if (parsedIndexes.second > -1) {\n resValues.second = parseInt(matches[parsedIndexes.second]);\n }\n // Millisecond\n if (parsedIndexes.millisecond > -1) {\n var val = parseInt(matches[parsedIndexes.millisecond]);\n if (parsedIndexes.millisecondDigits == 2) {\n val *= 10;\n } else if (parsedIndexes.millisecondDigits == 1) {\n val *= 100;\n }\n resValues.millisecond = val;\n }\n // Timestamp\n if (parsedIndexes.timestamp > -1) {\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\n var ts = new Date(resValues.timestamp);\n resValues.year = ts.getUTCFullYear();\n resValues.month = ts.getUTCMonth();\n resValues.day = ts.getUTCDate();\n resValues.hour = ts.getUTCHours();\n resValues.minute = ts.getUTCMinutes();\n resValues.second = ts.getUTCSeconds();\n resValues.millisecond = ts.getUTCMilliseconds();\n }\n // Adjust time zone\n if (parsedIndexes.zone > -1) {\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\n }\n // ISO\n if (parsedIndexes.iso > -1) {\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\n resValues.utc = true;\n } else if (matches[parsedIndexes.iso + 7] != \"\") {\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\n }\n }\n // Create Date object\n if (resValues.utc) {\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\n } else {\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\n }\n } else {\n // Didn't match anything\n // Let's try dropping it into Date constructor and hope for the best\n res = new Date(source);\n }\n return res;\n };\n DateFormatter.prototype.resolveTimezoneOffset = function (date, zone) {\n var value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\n if (value) {\n var match = $type.getValue(zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/));\n var dir = match[1];\n var hour = match[2];\n var minute = match[3];\n var offset = parseInt(hour) * 60 + parseInt(minute);\n // Adjust offset\n // Making it negative does not seem to make sense, but it's right\n // because of how JavaScript calculates GMT offsets\n if (dir == \"+\") {\n offset *= -1;\n }\n // Check the difference in offset\n var originalOffset = (date || new Date()).getTimezoneOffset();\n var diff = offset - originalOffset;\n return diff;\n }\n return 0;\n };\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\n DateFormatter.prototype.resolveMonth = function (value) {\n // Let's try English first\n var month = this.months.indexOf(value);\n if (month > -1) {\n return month;\n }\n // Try the translation\n if (this.language && !this.language.isDefault()) {\n month = this.language.translateAll(this.months).indexOf(value);\n if (month > -1) {\n return month;\n }\n }\n return 0;\n };\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\n DateFormatter.prototype.resolveShortMonth = function (value) {\n // Let's try English first\n var month = this.monthsShort.indexOf(value);\n if (month > -1) {\n return month;\n }\n // Maybe long month (workaround for May)\n month = this.months.indexOf(value);\n if (month > -1) {\n return month;\n }\n // Try the translation\n if (this.language && !this.language.isDefault()) {\n month = this.language.translateAll(this.monthsShort).indexOf(value);\n if (month > -1) {\n return month;\n }\n }\n return 0;\n };\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\n DateFormatter.prototype.isAm = function (value) {\n var list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\n return list.indexOf(value.toUpperCase()) > -1;\n };\n /**\r\n * Invalidates related [[Sprite]] causing it to redraw.\r\n */\n DateFormatter.prototype.invalidateSprite = function () {\n if (this.sprite) {\n this.sprite.invalidate();\n }\n };\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\n DateFormatter.prototype.getStringList = function (list) {\n var res = [];\n for (var i = 0; i < list.length; i++) {\n // translate?\n if (this.language) {\n res.push($utils.escapeForRgex(this.language.translate(list[i])));\n } else {\n res.push($utils.escapeForRgex(list[i]));\n }\n }\n return res;\n };\n Object.defineProperty(DateFormatter.prototype, \"dateFormat\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this._dateFormat;\n },\n /**\r\n * Date format to use.\r\n *\r\n * If format is not supplied in-line in the string, this setting will be\r\n * used.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\n set: function (value) {\n this._dateFormat = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"inputDateFormat\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this._inputDateFormat;\n },\n /**\r\n * Date format to use when parsing dates.\r\n *\r\n * @default \"yyyy-MM-dd\"\r\n * @param value Date format\r\n */\n set: function (value) {\n this._inputDateFormat = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"intlLocales\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this._intlLocales;\n },\n /**\r\n * Locales if you are using date formats in `Intl.DateTimeFormatOptions` syntax.\r\n *\r\n * @param value Locales\r\n */\n set: function (value) {\n this._intlLocales = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"utc\", {\n /**\r\n * @return Use UTC?\r\n */\n get: function () {\n return this._utc;\n },\n /**\r\n * Should formatter use UTC functions?\r\n *\r\n * If UTC is used, all date/time values will be independent on client's\r\n * time zone.\r\n *\r\n * @param value Use UTC?\r\n */\n set: function (value) {\n this._utc = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"timezoneOffset\", {\n /**\r\n * @return Offset (minutes)\r\n */\n get: function () {\n return this._timezoneOffset;\n },\n /**\r\n * If set, will apply specific offset in minutes before formatting the date\r\n * text.\r\n *\r\n * The value is a number of minutes from target time zone to UTC.\r\n *\r\n * E.g. `300` will recalculate Dates in \"GMT-5\" time zone.\r\n *\r\n * @param value Offset (minutes)\r\n */\n set: function (value) {\n if (this._timezoneOffset != value) {\n this._timezoneOffset = value;\n this.invalidateSprite();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"timezone\", {\n /**\r\n * @return Timezone\r\n */\n get: function () {\n return this._timezone;\n },\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * @since 4.10.1\r\n * @param value Timezone\r\n */\n set: function (value) {\n if (this._timezone != value) {\n this._timezone = value;\n this.timezoneMinutes = $time.getTimezoneMinutes(value);\n this.invalidateSprite();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"firstDayOfWeek\", {\n /**\r\n * @return First day of week\r\n */\n get: function () {\n return this._firstDayOfWeek;\n },\n /**\r\n * First day of the week:\r\n *\r\n * * 0 - Sunday\r\n * * 1 - Monday\r\n * * 2 - Tuesday\r\n *\r\n * Etc.\r\n *\r\n * @param value First day of week\r\n */\n set: function (value) {\n this._firstDayOfWeek = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateFormatter.prototype, \"outputFormat\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Format\r\n */\n get: function () {\n return this._outputFormat;\n },\n /**\r\n * Output format for the formatted date.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Format\r\n */\n set: function (value) {\n this._outputFormat = value.toLowerCase();\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n return DateFormatter;\n}(BaseObject);\nexport { DateFormatter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DateFormatter\"] = DateFormatter;\n//# sourceMappingURL=DateFormatter.js.map","/**\r\n * Duration formatting functionality.\r\n */\nimport { __extends } from \"tslib\";\nimport { Language } from \"../utils/Language\";\nimport { BaseObject } from \"../Base\";\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\nimport { registry } from \"../Registry\";\nimport * as $strings from \"../utils/Strings\";\nimport * as $object from \"../utils/Object\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * DurationFormatter class. Formats numbers as durations.\r\n *\r\n * `1000` as `16:40`\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n */\nvar DurationFormatter = /** @class */function (_super) {\n __extends(DurationFormatter, _super);\n /**\r\n * Constructor\r\n */\n function DurationFormatter() {\n var _this = _super.call(this) || this;\n /**\r\n * A base value for negative numbers. Will treat all numbers below this value\r\n * as negative numbers.\r\n */\n _this._negativeBase = 0;\n /**\r\n * A base unit to consider values are in.\r\n *\r\n * @default \"s\"\r\n */\n _this._baseUnit = \"second\";\n /**\r\n * Output format to produce. If the format calls for applying color to the\r\n * formatted value, this setting will determine what markup to use: SVG or\r\n * HTML.\r\n *\r\n * Available options: svg, html.\r\n *\r\n * @default \"svg\"\r\n */\n _this._outputFormat = \"svg\";\n /**\r\n * How many milliseconds each unit represents.\r\n */\n _this._unitValues = {\n \"millisecond\": 1,\n \"second\": 1000,\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2592000000,\n \"year\": 31536000000\n };\n /**\r\n * Collection of aliases for units.\r\n */\n _this._unitAliases = {\n \"Y\": \"y\",\n \"D\": \"d\",\n \"H\": \"h\",\n \"K\": \"h\",\n \"k\": \"h\",\n \"n\": \"S\"\n };\n _this.className = \"DurationFormatter\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Formats the number according as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Tutorial on duration formatting\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\n DurationFormatter.prototype.format = function (value, format, base) {\n // no language?\n if (!this.language) {\n if (this.sprite) {\n this.language = this.sprite.language;\n } else {\n this.language = new Language();\n }\n }\n // no base unit?\n var baseUnit = base || this._baseUnit;\n // no format passed in or empty\n if (typeof format === \"undefined\" || format === \"\") {\n if ($type.hasValue(this.durationFormat)) {\n format = this.durationFormat;\n } else {\n format = this.getFormat($type.toNumber(value), null, baseUnit);\n }\n }\n // Clean format\n format = $utils.cleanFormat(format);\n // get format info (it will also deal with parser caching)\n var info = this.parseFormat(format, baseUnit);\n // cast to number just in case\n // TODO: maybe use better casting\n var source = Number(value);\n // format and replace the number\n var details;\n if (source > this._negativeBase) {\n details = info.positive;\n } else if (source < this._negativeBase) {\n details = info.negative;\n } else {\n details = info.zero;\n }\n // Format\n var formatted = this.applyFormat(source, details);\n // Apply color?\n if (details.color !== \"\") {\n if (this._outputFormat === \"svg\") {\n formatted = \"\" + formatted + \"\";\n } else if (this._outputFormat === \"html\") {\n formatted = \"\" + formatted + \"\";\n }\n }\n return formatted;\n };\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\n DurationFormatter.prototype.parseFormat = function (format, base) {\n var _this = this;\n // Check cache\n var cached = this.getCache(format);\n if ($type.hasValue(cached)) {\n return cached;\n }\n // no base unit?\n var baseUnit = base || this._baseUnit;\n // Initialize duration parsing info\n var info = {\n \"positive\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n },\n \"negative\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n },\n \"zero\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n }\n };\n // Escape double vertical bars (that mean display one vertical bar)\n format = format.replace(\"||\", $strings.PLACEHOLDER2);\n // Split it up and deal with different formats\n var parts = format.split(\"|\");\n info.positive.source = parts[0];\n if (typeof parts[2] === \"undefined\") {\n info.zero = info.positive;\n } else {\n info.zero.source = parts[2];\n }\n if (typeof parts[1] === \"undefined\") {\n info.negative = info.positive;\n } else {\n info.negative.source = parts[1];\n }\n // Parse each\n $object.each(info, function (part, item) {\n // Already parsed\n if (item.parsed) {\n return;\n }\n // Check cached\n if (typeof _this.getCache(item.source) !== \"undefined\") {\n info[part] = _this.getCache(item.source);\n return;\n }\n // Begin parsing\n var partFormat = item.source;\n // Check for [] directives\n var dirs = [];\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\n if (dirs && dirs.length && dirs[0] !== \"\") {\n partFormat = item.source.substr(dirs[0].length);\n item.color = dirs[1];\n }\n // Let TextFormatter split into chunks\n var chunks = getTextFormatter().chunk(partFormat, true);\n for (var i = 0; i < chunks.length; i++) {\n var chunk = chunks[i];\n // replace back double vertical bar\n chunk.text = chunk.text.replace($strings.PLACEHOLDER2, \"|\");\n if (chunk.type === \"value\") {\n // Just \"Duration\"?\n // if (chunk.text.toLowerCase() === \"duration\") {\n // \tchunk.text = durationFormat;\n // }\n // Check for \"a\" (absolute) modifier\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\n item.absolute = true;\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\n }\n // Find all possible parts\n var matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\n if (matches) {\n // Populate template\n for (var x = 0; x < matches.length; x++) {\n // Is it an alias?\n if (!$type.hasValue(matches[x])) {\n matches[x] = _this._unitAliases[matches[x]];\n }\n item.parts.push(matches[x]);\n chunk.text = chunk.text.replace(matches[x], $strings.PLACEHOLDER);\n }\n }\n }\n // Apply to template\n item.template += chunk.text;\n }\n // Apply style formatting\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\n // Save cache\n _this.setCache(item.source, item);\n // Mark this as parsed\n item.parsed = true;\n });\n // Save cache (the whole thing)\n this.setCache(format, info);\n return info;\n };\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\n DurationFormatter.prototype.applyFormat = function (value, details) {\n // Use absolute values\n var negative = !details.absolute && value < this._negativeBase;\n value = Math.abs(value);\n // Recalculate to milliseconds\n var tstamp = this.toTimeStamp(value, details.baseUnit);\n // Init return value\n var res = details.template;\n // Iterate through duration parts\n for (var i = 0, len = details.parts.length; i < len; i++) {\n // Gather the part\n var part = details.parts[i];\n var unit = this.toTimeUnit(part.substr(0, 1));\n var digits = part.length;\n // Calculate current unit value\n var ints = Math.floor(tstamp / this._unitValues[unit]);\n res = res.replace($strings.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\n // Reduce timestamp\n tstamp -= ints * this._unitValues[unit];\n }\n // Reapply negative sign\n if (negative) {\n res = \"-\" + res;\n }\n return res;\n };\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\n DurationFormatter.prototype.toTimeStamp = function (value, baseUnit) {\n return value * this._unitValues[baseUnit];\n };\n DurationFormatter.prototype.toTimeUnit = function (code) {\n switch (code) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n }\n ;\n };\n /**\r\n * Invalidates the parent [[Sprite]] object.\r\n */\n DurationFormatter.prototype.invalidateSprite = function () {\n if (this.sprite) {\n this.sprite.invalidate();\n }\n };\n Object.defineProperty(DurationFormatter.prototype, \"baseUnit\", {\n /**\r\n * @return Base unit\r\n */\n get: function () {\n return this._baseUnit;\n },\n /**\r\n * Base unit the values are in.\r\n *\r\n * A base unit will be used to recalculate the numeric value to millisecond\r\n * timestamps.\r\n *\r\n * Available options:\r\n *\r\n * * \"millisecond\"\r\n * * \"second\"\r\n * * \"minute\"\r\n * * \"hour\"\r\n * * \"day\"\r\n * * \"week\"\r\n * * \"month\"\r\n * * \"year\"\r\n *\r\n * @default \"s\"\r\n * @param baseUnit A base unit\r\n */\n set: function (baseUnit) {\n this._baseUnit = baseUnit;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DurationFormatter.prototype, \"outputFormat\", {\n /**\r\n * Getter for output format.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Output format\r\n */\n get: function () {\n return this._outputFormat;\n },\n /**\r\n * Setter for output format: \"svg\" or \"html.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Output format\r\n */\n set: function (outputFormat) {\n this._outputFormat = outputFormat.toLowerCase();\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\n DurationFormatter.prototype.getFormat = function (value, maxValue, baseUnit) {\n // Is format override set?\n if ($type.hasValue(this.durationFormat)) {\n return this.durationFormat;\n }\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.baseUnit;\n }\n if ($type.hasValue(maxValue) && value != maxValue) {\n value = Math.abs(value);\n maxValue = Math.abs(maxValue);\n var maxUnit = this.getValueUnit($math.max(value, maxValue), baseUnit);\n //let diffUnit = this.getValueUnit(Math.abs(maxValue - value), baseUnit);\n //console.log(maxUnit, diffUnit);\n return this.durationFormats[baseUnit][maxUnit];\n } else {\n var unit = this.getValueUnit(value, baseUnit);\n return this.durationFormats[baseUnit][unit];\n }\n };\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\n DurationFormatter.prototype.getValueUnit = function (value, baseUnit) {\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.baseUnit;\n }\n // Convert to milliseconds\n var currentUnit;\n var ms = this.getMilliseconds(value, baseUnit);\n $object.eachContinue(this._unitValues, function (key, val) {\n if (key == baseUnit || currentUnit) {\n var num = ms / val;\n if (num <= 1) {\n if (!currentUnit) {\n currentUnit = key;\n }\n return false;\n }\n currentUnit = key;\n }\n return true;\n });\n return currentUnit;\n };\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\n DurationFormatter.prototype.getMilliseconds = function (value, baseUnit) {\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.baseUnit;\n }\n return value * this._unitValues[baseUnit];\n };\n Object.defineProperty(DurationFormatter.prototype, \"durationFormat\", {\n /**\r\n * @return Format\r\n */\n get: function () {\n return this._durationFormat;\n },\n /**\r\n * If set, this format will be used instead of the one determined dynamically\r\n * based on the basedUnit and range of values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} Available fomatting codes\r\n * @param value Format\r\n */\n set: function (value) {\n if (this._durationFormat != value) {\n this._durationFormat = value;\n this.invalidateSprite();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DurationFormatter.prototype, \"durationFormats\", {\n /**\r\n * @return Formats\r\n */\n get: function () {\n if (!this._durationFormats) {\n this._durationFormats = {\n \"millisecond\": {\n \"millisecond\": this.language.translate(\"_duration_millisecond\"),\n \"second\": this.language.translate(\"_duration_millisecond_second\"),\n \"minute\": this.language.translate(\"_duration_millisecond_minute\"),\n \"hour\": this.language.translate(\"_duration_millisecond_hour\"),\n \"day\": this.language.translate(\"_duration_millisecond_day\"),\n \"week\": this.language.translate(\"_duration_millisecond_week\"),\n \"month\": this.language.translate(\"_duration_millisecond_month\"),\n \"year\": this.language.translate(\"_duration_millisecond_year\")\n },\n \"second\": {\n \"second\": this.language.translate(\"_duration_second\"),\n \"minute\": this.language.translate(\"_duration_second_minute\"),\n \"hour\": this.language.translate(\"_duration_second_hour\"),\n \"day\": this.language.translate(\"_duration_second_day\"),\n \"week\": this.language.translate(\"_duration_second_week\"),\n \"month\": this.language.translate(\"_duration_second_month\"),\n \"year\": this.language.translate(\"_duration_second_year\")\n },\n \"minute\": {\n \"minute\": this.language.translate(\"_duration_minute\"),\n \"hour\": this.language.translate(\"_duration_minute_hour\"),\n \"day\": this.language.translate(\"_duration_minute_day\"),\n \"week\": this.language.translate(\"_duration_minute_week\"),\n \"month\": this.language.translate(\"_duration_minute_month\"),\n \"year\": this.language.translate(\"_duration_minute_year\")\n },\n \"hour\": {\n \"hour\": this.language.translate(\"_duration_hour\"),\n \"day\": this.language.translate(\"_duration_hour_day\"),\n \"week\": this.language.translate(\"_duration_hour_week\"),\n \"month\": this.language.translate(\"_duration_hour_month\"),\n \"year\": this.language.translate(\"_duration_hour_year\")\n },\n \"day\": {\n \"day\": this.language.translate(\"_duration_day\"),\n \"week\": this.language.translate(\"_duration_day_week\"),\n \"month\": this.language.translate(\"_duration_day_month\"),\n \"year\": this.language.translate(\"_duration_day_year\")\n },\n \"week\": {\n \"week\": this.language.translate(\"_duration_week\"),\n \"month\": this.language.translate(\"_duration_week_month\"),\n \"year\": this.language.translate(\"_duration_week_year\")\n },\n \"month\": {\n \"month\": this.language.translate(\"_duration_month\"),\n \"year\": this.language.translate(\"_duration_month_year\")\n },\n \"year\": {\n \"year\": this.language.translate(\"_duration_year\")\n }\n };\n }\n return this._durationFormats;\n },\n /**\r\n * Duration formats for various combination of base units.\r\n *\r\n * @param value Formats\r\n */\n set: function (value) {\n this._durationFormats = value;\n this.invalidateSprite();\n },\n enumerable: true,\n configurable: true\n });\n return DurationFormatter;\n}(BaseObject);\nexport { DurationFormatter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DurationFormatter\"] = DurationFormatter;\n//# sourceMappingURL=DurationFormatter.js.map","import { StyleRule } from \"../utils/DOM\";\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\nimport { Dictionary } from \"../utils/Dictionary\";\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\nvar rules = new Dictionary();\n/**\r\n * A dynamically-loadable CSS module for Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix to addtach to class names\r\n * @return A MultiDisposer with style rules\r\n */\nexport default function (element, prefix) {\n var newPrefix = prefix ? prefix : \"amexport\";\n var colorSet = new InterfaceColorSet();\n var counter = rules.insertKeyIfEmpty(newPrefix, function () {\n var disposer = new MultiDisposer([\n /*new StyleRule(`.${newPrefix}-menu`, {\r\n \"opacity\": \"0.3\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n new StyleRule(`div:hover .${newPrefix}-menu, .${newPrefix}-menu.active`, {\r\n \"opacity\": \"0.9\",\r\n }),*/\n new StyleRule(element, \".\" + newPrefix + \"-menu *\", {\n \"box-sizing\": \"border-box\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu-level-0\", {\n \"position\": \"absolute\",\n \"top\": \"5px\",\n \"right\": \"5px\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-left\", {\n \"right\": \"auto\",\n \"left\": \"5px\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-right\", {\n \"right\": \"5px\",\n \"left\": \"auto\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-top\", {\n \"top\": \"5px\",\n \"bottom\": \"auto\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-bottom\", {\n \"top\": \"auto\",\n \"bottom\": \"5px\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0\", {\n \"opacity\": \"0.3\",\n \"width\": \"30px\",\n \"min-height\": \"30px\",\n \"transition\": \"all 100ms ease-in-out\"\n }), new StyleRule(element, \"div:hover > div > .\" + newPrefix + \"-menu .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0, .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0.active\", {\n \"opacity\": \"0.9\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0 > a\", {\n \"padding\": \"0\",\n \"text-align\": \"center\",\n \"overflow\": \"hidden\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0:before\", {\n \"display\": \"block\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item\", {\n \"position\": \"relative\",\n \"display\": \"block\",\n \"opacity\": \"0\",\n \"z-index\": \"1\",\n \"border-radius\": \"3px\",\n \"background-color\": colorSet.getFor(\"secondaryButton\").hex,\n \"padding\": \"0\",\n \"margin\": \"1px 1px 0 0\",\n \"color\": colorSet.getFor(\"secondaryButton\").alternative.hex,\n \"transition\": \"all 100ms ease-in-out, opacity 0.5s ease 0.5s\"\n }), new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item\", {\n \"margin\": \"1px 0 0 1px\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item:hover, .\" + newPrefix + \"-item.active\", {\n \"background\": colorSet.getFor(\"secondaryButtonHover\").hex,\n \"color\": colorSet.getFor(\"secondaryButtonText\").hex\n }), new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"position\": \"absolute\",\n \"top\": \"-1px\",\n \"right\": \"0\",\n \"margin-right\": \"100%\"\n }), new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"left\": \"0\",\n \"right\": \"auto\",\n \"margin-left\": \"100%\",\n \"margin-right\": \"auto\"\n }), new StyleRule(element, \".\" + newPrefix + \"-right .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"left\": \"auto\",\n \"right\": \"0\",\n \"margin-left\": \"auto\",\n \"margin-right\": \"100%\"\n }), new StyleRule(element, \".\" + newPrefix + \"-top .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"top\": \"-1px\",\n \"bottom\": \"auto\"\n }), new StyleRule(element, \".\" + newPrefix + \"-bottom .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"top\": \"auto\",\n \"bottom\": \"0\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\n \"display\": \"none\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu\", {\n \"display\": \"block\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item\", {\n \"opacity\": \"1\"\n }), new StyleRule(element, \".\" + newPrefix + \"-menu\", {\n \"display\": \"block\",\n \"list-style\": \"none\",\n \"margin\": \"0\",\n \"padding\": \"0\"\n }), new StyleRule(element, \".\" + newPrefix + \"-label\", {\n \"display\": \"block\",\n \"cursor\": \"default\",\n \"padding\": \"0.5em 1em\"\n }), new StyleRule(element, \".\" + newPrefix + \"-icon\", {\n \"display\": \"block\",\n \"cursor\": \"default\",\n \"padding\": \"0.2em 0.4em\",\n \"width\": \"1.2em\",\n \"height\": \"1.2em\",\n \"min-width\": \"32px\",\n \"min-height\": \"32px\",\n \"margin\": \"auto auto\",\n \"border-radius\": \"3px\"\n }), new StyleRule(element, \".\" + newPrefix + \"-item-level-0 > .\" + newPrefix + \"-icon\", {\n \"padding\": \"0.1em 0.2em\"\n }), new StyleRule(element, \".\" + newPrefix + \"-clickable\", {\n \"cursor\": \"pointer\"\n })]);\n return new CounterDisposer(function () {\n rules.removeKey(newPrefix);\n disposer.dispose();\n });\n });\n return counter.increment();\n}\n//# sourceMappingURL=ExportCSS.js.map","/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system beats to revalidate themselves.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"../Base\";\nimport { registry } from \"../Registry\";\n/**\r\n * This module defines a [[Validatable]] class which can be used by all\r\n * non-[[Sprite]] classes to use system update cycle to revalidate themselves.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar Validatable = /** @class */function (_super) {\n __extends(Validatable, _super);\n function Validatable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Is invalid and should be revalidated?\r\n */\n _this._validateDisposer = null;\n return _this;\n }\n /**\r\n * Invalidates the element, so that it can re-validate/redraw itself in the\r\n * next cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Validatable.prototype.invalidate = function () {\n if (this._validateDisposer === null) {\n this._validateDisposer = registry.events.on(\"exitframe\", this.validate, this);\n }\n };\n /**\r\n * Validates itself.\r\n *\r\n * Most probably the extending class will have an overriding `validate()`\r\n * method which will do actual work, as well as call this method using\r\n * `super.validate()`.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Validatable.prototype.validate = function () {\n if (this._validateDisposer !== null) {\n this._validateDisposer.dispose();\n this._validateDisposer = null;\n }\n };\n Validatable.prototype.dispose = function () {\n if (this._validateDisposer !== null) {\n this._validateDisposer.dispose();\n this._validateDisposer = null;\n }\n _super.prototype.dispose.call(this);\n };\n return Validatable;\n}(BaseObjectEvents);\nexport { Validatable };\n//# sourceMappingURL=Validatable.js.map","/**\r\n * Export module.\r\n *\r\n * Parts of Export functionality rely on the following third party libraries:\r\n *\r\n * [canvg.js](https://github.com/canvg/canvg)\r\n * Copyright (c) Gabe Lerner\r\n * Licensed under [MIT](https://github.com/canvg/canvg/blob/master/LICENSE)\r\n *\r\n * [pdfmake](http://pdfmake.org/)\r\n * Copyright (c) 2014 bpampuch\r\n * Licensed under [MIT](https://github.com/bpampuch/pdfmake/blob/master/LICENSE)\r\n *\r\n * [SheetJS Community Edition](https://github.com/sheetjs/js-xlsx)\r\n * Licensed under [Apache License 2.0](https://github.com/SheetJS/js-xlsx/blob/master/LICENSE)\r\n *\r\n * [JSZip](http://stuartk.com/jszip)\r\n * Copyright (c) Stuart Knightley\r\n * Dual licenced under the [MIT license or GPLv3](https://raw.githubusercontent.com/Stuk/jszip/master/LICENSE.markdown).\r\n */\nimport { __awaiter, __extends, __generator } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ExportMenu } from \"./ExportMenu\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { Sprite } from \"../Sprite\";\nimport { Modal } from \"../elements/Modal\";\nimport { List } from \"../utils/List\";\nimport { Dictionary } from \"../utils/Dictionary\";\nimport { DateFormatter } from \"../formatters/DateFormatter\";\nimport { DurationFormatter } from \"../formatters/DurationFormatter\";\nimport { NumberFormatter } from \"../formatters/NumberFormatter\";\nimport { Language } from \"../utils/Language\";\nimport { Validatable } from \"../utils/Validatable\";\nimport { color } from \"../utils/Color\";\nimport { registry } from \"../Registry\";\nimport { options } from \"../Options\";\nimport { StyleRule, getComputedStyle } from \"../utils/DOM\";\nimport * as $browser from \"../utils/Browser\";\nimport * as $object from \"../utils/Object\";\nimport * as $net from \"../utils/Net\";\nimport * as $dom from \"../utils/DOM\";\nimport * as $type from \"../utils/Type\";\nimport * as $log from \"../utils/Log\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $array from \"../utils/Array\";\nimport * as $math from \"../utils/Math\";\nimport * as $strings from \"../utils/Strings\";\n// This is used to cache the pdfmake loading\nvar pdfmakePromise;\n/**\r\n * Loads pdfmake dynamic module\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\nfunction _pdfmake() {\n return __awaiter(this, void 0, void 0, function () {\n var a, pdfmake, vfs_fonts, global;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, Promise.all([import( /* webpackChunkName: \"pdfmake\" */\"pdfmake/build/pdfmake.js\"), import( /* webpackChunkName: \"pdfmake\" */\"../../pdfmake/vfs_fonts\")])];\n case 1:\n a = _a.sent();\n pdfmake = a[0];\n vfs_fonts = a[1];\n global = window;\n global.pdfMake = global.pdfMake || {};\n global.pdfMake.vfs = vfs_fonts.default;\n pdfmake.vfs = vfs_fonts.default;\n return [2 /*return*/, pdfmake];\n }\n });\n });\n}\n// TODO better parsing\nvar fontFamilySrcRegexp = /src: ([^;]+);/;\n// TODO better checks\nfunction supportsBlobUri() {\n return window.navigator.msSaveOrOpenBlob != null;\n}\n// TODO move into utils or something ?\nfunction blobToDataUri(blob) {\n return new Promise(function (resolve, reject) {\n // TODO handle abort ?\n var f = new FileReader();\n f.onload = function (e) {\n resolve(f.result);\n };\n f.onerror = function (e) {\n reject(e);\n };\n f.readAsDataURL(blob);\n });\n}\nfunction getCssRules(s) {\n return __awaiter(this, void 0, void 0, function () {\n var sheet, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n sheet = s.sheet;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 2,, 4]);\n return [2 /*return*/, sheet.cssRules];\n case 2:\n e_1 = _a.sent();\n return [4 /*yield*/, new Promise(function (success, error) {\n s.addEventListener(\"load\", function () {\n success(sheet.cssRules);\n }, true);\n s.addEventListener(\"error\", function (e) {\n error(e);\n }, true);\n setTimeout(function () {\n error(new Error(\"Timeout while waiting for \" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\n svg = new Blob([data], {\n type: \"image/svg+xml\"\n });\n url = DOMURL.createObjectURL(svg);\n return [4 /*yield*/, this.loadNewImage(url, width * scale * pixelRatio, height * scale * pixelRatio, \"anonymous\")];\n case 3:\n img = _a.sent();\n // Draw image on canvas\n ctx.drawImage(img, 0, 0);\n return [3 /*break*/, 5];\n case 4:\n if (url !== null) {\n DOMURL.revokeObjectURL(url);\n }\n if (blobs !== null) {\n $array.each(blobs, function (url) {\n DOMURL.revokeObjectURL(url);\n });\n }\n // Restore replaced tainted images in DOM\n this.restoreRemovedObjects();\n return [7 /*endfinally*/];\n case 5:\n return [2 /*return*/, canvas];\n }\n });\n });\n };\n /**\r\n * Returns canvas representation of the [[Sprite]] using canvg.\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\n Export.prototype.getCanvasAdvanced = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n var background, canvg, width, height, font, fontSize, scale, pixelRatio, data, canvas, config;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Options are set?\n if (!$type.hasValue(options)) {\n options = {};\n }\n // Convert external images to data uris\n return [4 /*yield*/, this.imagesToDataURI(this.sprite.dom, options)];\n case 1:\n // Convert external images to data uris\n _a.sent();\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\n return [4 /*yield*/, this.canvg];\n case 2:\n canvg = _a.sent();\n width = this.sprite.pixelWidth;\n height = this.sprite.pixelHeight;\n font = $dom.findFont(this.sprite.dom);\n fontSize = $dom.findFontSize(this.sprite.dom);\n scale = options.scale || 1;\n pixelRatio = this.getPixelRatio(options);\n // Check if scale needs to be updated as per min/max dimensions\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\n data = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize, background);\n canvas = this.getDisposableCanvas();\n // Set canvas width/height\n canvas.style.width = width * pixelRatio * scale + 'px';\n canvas.style.height = height * pixelRatio * scale + 'px';\n canvas.width = width * pixelRatio * scale;\n canvas.height = height * pixelRatio * scale;\n config = {\n //ignoreDimensions: true,\n useCORS: true\n };\n if (pixelRatio != 1) {\n config.ignoreDimensions = true;\n config.scaleWidth = width * pixelRatio * scale;\n config.scaleHeight = height * pixelRatio * scale;\n }\n return [4 /*yield*/, canvg.fromString(canvas.getContext(\"2d\"), data, config).render()];\n case 3:\n _a.sent();\n return [2 /*return*/, canvas];\n }\n });\n });\n };\n /**\r\n * Tries to dynamically load [canvg.js](https://github.com/canvg/canvg) and\r\n * export an image using its functions.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @return Data uri\r\n */\n Export.prototype.getImageAdvanced = function (type, options, includeExtras) {\n return __awaiter(this, void 0, void 0, function () {\n var prehidden, canvas, uri;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n prehidden = this._objectsAlreadyHidden;\n if (!prehidden) {\n this.hideNonExportableSprites();\n }\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(type);\n }\n return [4 /*yield*/, this.getCanvasAdvanced(options)];\n case 1:\n canvas = _a.sent();\n if (!(includeExtras !== false)) return [3 /*break*/, 3];\n return [4 /*yield*/, this.addExtras(canvas, options, true)];\n case 2:\n canvas = _a.sent();\n _a.label = 3;\n case 3:\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\n // Get rid of the canvas\n this.disposeCanvas(canvas);\n if (!prehidden) {\n this.restoreNonExportableSprites();\n }\n return [2 /*return*/, uri];\n }\n });\n });\n };\n /**\r\n * Creates a `` element and returns it.\r\n *\r\n * @return Canvas element\r\n */\n Export.prototype.getDisposableCanvas = function () {\n var canvas = document.createElement(\"canvas\");\n canvas.style.position = \"fixed\";\n canvas.style.top = \"-10000px\";\n document.body.appendChild(canvas);\n return canvas;\n };\n /**\r\n * Removes canvas.\r\n *\r\n * @param canvas Canvas element\r\n */\n Export.prototype.disposeCanvas = function (canvas) {\n document.body.removeChild(canvas);\n };\n /**\r\n * Returns pixel ratio for retina displays.\r\n *\r\n * @return Pixel ratio\r\n */\n Export.prototype.getPixelRatio = function (options) {\n // const scale = options && options.scale ? options.scale : 1;\n // return (this.useRetina ? $utils.getPixelRatio() : 1) * scale;\n return this.useRetina ? $utils.getPixelRatio() : 1;\n };\n /**\r\n * Calculates adjusted scale if image does not fit or is larger than min/max\r\n * settings.\r\n *\r\n * @param width Width of the source image\r\n * @param height Height of the source image\r\n * @param scale Current scale\r\n * @param options Options\r\n * @return Adjusted scale\r\n */\n Export.prototype.getAdjustedScale = function (width, height, scale, options) {\n if (!options) {\n return scale;\n }\n var adjWidth = width * scale;\n var adjHeight = width * scale;\n // Check max restrictions\n var widthScale;\n var heightScale;\n if (options.maxWidth && adjWidth > options.maxWidth) {\n widthScale = options.maxWidth / width;\n }\n if (options.maxHeight && adjHeight > options.maxHeight) {\n heightScale = options.maxHeight / height;\n }\n if (widthScale || heightScale) {\n return $math.min(widthScale, heightScale);\n }\n // Check min restrictions\n if (options.minWidth && adjWidth < options.minWidth) {\n widthScale = options.minWidth / width;\n }\n if (options.minHeight && adjHeight < options.minHeight) {\n heightScale = options.minHeight / height;\n }\n if (widthScale || heightScale) {\n return $math.max(widthScale, heightScale);\n }\n return scale;\n };\n /**\r\n * Converts all `` tags in SVG to use data uris instead of external\r\n * URLs\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\n Export.prototype.imagesToDataURI = function (el, options) {\n return __awaiter(this, void 0, void 0, function () {\n var images, promises, count, i, image, href;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n images = el.querySelectorAll(\"image\");\n if (!images.length) return [3 /*break*/, 2];\n promises = [];\n // There are images, process each of them\n for (count = images.length, i = 0; i < count; i++) {\n image = images[i];\n href = image.getAttributeNS(Export.XLINK, \"href\");\n // no href?\n if (!href) {\n continue;\n }\n if (href.indexOf(\"data:image\") !== -1) {\n // Ignore image if it's already in Data URI format\n } else {\n // SVG or bitmap image?\n if (href.indexOf(\".svg\") !== -1) {\n promises.push(this.svgToDataURI(image, options));\n } else {\n promises.push(this.imageToDataURI(image, options));\n }\n }\n }\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n /**\r\n * `foreignObject` elements cannot be exported. This function hides them\r\n * temprarily. In the future it might try to convert them to SVG to make them\r\n * exportable.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\n Export.prototype.prepForeignObjects = function (el, options) {\n return __awaiter(this, void 0, void 0, function () {\n var objects, count, i;\n return __generator(this, function (_a) {\n objects = el.querySelectorAll(\"foreignObject\");\n if (objects.length) {\n // There are foreign objects, process each of them\n for (count = objects.length, i = 0; i < count; i++) {\n this.temporarilyRemoveObject(objects[i]);\n }\n }\n return [2 /*return*/];\n });\n });\n };\n /**\r\n * Converts an SVG `` to use its data uri for `href` instead of\r\n * external file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG element\r\n * @param options Options\r\n */\n Export.prototype.imageToDataURI = function (el, options) {\n return __awaiter(this, void 0, void 0, function () {\n var img, canvas, uri, e_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n return [4 /*yield*/, this.loadNewImage(el.getAttributeNS(Export.XLINK, \"href\"), null, null, \"anonymous\")];\n case 1:\n // Create image\n img = _a.sent();\n canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n // Draw new image on it via `toDataURL`\n canvas.getContext(\"2d\").drawImage(img, 0, 0);\n // Replace image `href` with data uri\n // If we got to this point it means image has loaded, however we might\n // still get an error with `toDataURL()`\n try {\n uri = canvas.toDataURL();\n el.setAttribute(\"href\", uri);\n return [2 /*return*/, uri];\n } catch (e) {\n // Give up and temporarily remove the element href temporarily\n if (options.keepTainted !== false) {\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\n this.temporarilyRemoveObject(el);\n }\n return [2 /*return*/, undefined];\n }\n return [3 /*break*/, 3];\n case 2:\n e_5 = _a.sent();\n // Give up and temporarily remove the element's href\n if (!options || options.keepTainted !== false) {\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\n this.temporarilyRemoveObject(el);\n }\n return [2 /*return*/, undefined];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n };\n /**\r\n * Converts `` with external SVG source to data uri. Loads external SVG\r\n * file, then converts it to data uri and replaces the `xlink:href` parameter.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el An SVG element\r\n * @param options Options\r\n */\n Export.prototype.svgToDataURI = function (el, options) {\n return __awaiter(this, void 0, void 0, function () {\n var href, data, charset, uri, e_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n href = el.getAttributeNS(Export.XLINK, \"href\");\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4 /*yield*/, $net.load(href)];\n case 2:\n data = _a.sent();\n charset = this.adapter.apply(\"charset\", {\n charset: \"base64\",\n type: \"svg\",\n options: options\n }).charset;\n uri = this.adapter.apply(\"svgToDataURI\", {\n data: \"data:\" + this.getContentType(\"svg\") + \";\" + charset + \",\" + btoa(data.response),\n options: options\n }).data;\n el.setAttributeNS(Export.XLINK, \"href\", uri);\n return [2 /*return*/, uri];\n case 3:\n e_6 = _a.sent();\n // Disable temporarily\n if (!options || options.keepTainted !== false) {\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": href\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\n this.temporarilyRemoveObject(el);\n }\n return [2 /*return*/, undefined];\n case 4:\n return [2 /*return*/];\n }\n });\n });\n };\n /**\r\n * Temporarily removes element from DOM, and replaces it with a dummy\r\n * placeholder, as well as stores it for later restoration.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Node\r\n */\n Export.prototype.temporarilyRemoveObject = function (el, placeholder) {\n // Get parent\n var parent = el.parentElement || el.parentNode;\n // Create a placeholder group element if it has not been passed in\n if (!placeholder) {\n placeholder = this.sprite.paper.add(\"g\").node;\n }\n parent.insertBefore(placeholder, el);\n // Check if we have a textContents we can replace with\n // @todo Perhaps we should explore alternatives to creating text nodes\n // i.e. creating a text version of the HTML-based Text, just for export\n // purposes. Converting HTML into SVG is very complicated\n if (el.textContent) {\n /*let text = this.sprite.paper.add(\"text\").node;\r\n text.textContent = el.textContent;\r\n placeholder.appendChild(text);\r\n // Copy properties from the removing element to the placeholder\r\n $dom.copyAttributes(el, placeholder);*/\n }\n // Remove the old element\n parent.removeChild(el);\n // Log removed item\n this._removedObjects.push({\n \"element\": el,\n \"placeholder\": placeholder\n });\n };\n /**\r\n * Restores all (possibly tainted or unsupported) objects that were\r\n * temporarily removed when exporting.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.restoreRemovedObjects = function () {\n var obj;\n while (true) {\n obj = this._removedObjects.pop();\n if (!obj) {\n break;\n }\n //obj.element.setAttribute(\"href\", obj.originalHref);\n var parent_1 = obj.placeholder.parentElement || obj.placeholder.parentNode;\n parent_1.insertBefore(obj.element, obj.placeholder);\n //parent.removeChild(obj.placeholder);\n }\n };\n /**\r\n * Checkes if simplified export can be used using `createObjectURL` and SVG\r\n * document does not contain any external images.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return `true` if simplified export can be used\r\n */\n Export.prototype.simplifiedImageExport = function () {\n return __awaiter(this, void 0, void 0, function () {\n var cache, canvas, ctx, DOMURL, svg, url, img, e_7, e_8;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.useSimplifiedExport === false) {\n return [2 /*return*/, false];\n }\n cache = registry.getCache(\"simplifiedImageExport\");\n if (cache === false || cache === true) {\n return [2 /*return*/, cache];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 6,, 7]);\n canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n ctx = canvas.getContext(\"2d\");\n DOMURL = this.getDOMURL();\n svg = new Blob([this.normalizeSVG(\"\", {}, 1, 1)], {\n type: \"image/svg+xml\"\n });\n url = DOMURL.createObjectURL(svg);\n img = void 0;\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4,, 5]);\n return [4 /*yield*/, this.loadNewImage(url, 1, 1)];\n case 3:\n img = _a.sent();\n return [3 /*break*/, 5];\n case 4:\n e_7 = _a.sent();\n return [2 /*return*/, false];\n case 5:\n ctx.drawImage(img, 0, 0);\n DOMURL.revokeObjectURL(url);\n try {\n //let uri = canvas.toDataURL(\"image/png\");\n registry.setCache(\"simplifiedImageExport\", true);\n return [2 /*return*/, true];\n } catch (e) {\n registry.setCache(\"simplifiedImageExport\", false);\n return [2 /*return*/, false];\n }\n return [3 /*break*/, 7];\n case 6:\n e_8 = _a.sent();\n registry.setCache(\"simplifiedImageExport\", false);\n return [2 /*return*/, false];\n case 7:\n return [2 /*return*/];\n }\n });\n });\n };\n /**\r\n * Returns a new `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param url URL of the image\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param crossOrigin Cross-Origin setting\r\n * @return Promise\r\n */\n Export.prototype.loadNewImage = function (url, width, height, crossOrigin) {\n return new Promise(function (success, error) {\n // New image\n var image;\n if (width && height) {\n image = new Image(width, height);\n } else {\n image = new Image();\n }\n // Set crossorigin\n if (crossOrigin) {\n image.setAttribute(\"crossOrigin\", crossOrigin);\n }\n // Report success on load\n image.onload = function () {\n success(image);\n };\n function onerror() {\n // Error occurred. Just in case it's the crossOrigin issue, let's try\n // stripping off this attribute and trying again\n if (crossOrigin) {\n // Retain old uri\n var currentHref = image.src;\n // Set up another `onerror` to handle situations where image is not\n // loadable at all (i.e. protected by CORS)\n image.onerror = function () {\n // Nope, no luck\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\n };\n // remove the `crossOrigin` attribute\n image.removeAttribute(\"crossorigin\");\n // retry\n image.src = \"\";\n image.src = currentHref;\n } else {\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\n }\n }\n // Set image error handlers\n image.onabort = onerror;\n image.onerror = onerror;\n // Trigger load\n image.src = url;\n });\n };\n /**\r\n * Returns current DOM URL.\r\n *\r\n * @ignore Exclude from docs\r\n * @return URL\r\n */\n Export.prototype.getDOMURL = function () {\n return self.URL || self.webkitURL || self;\n };\n /**\r\n * Returns an SVG representation of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n */\n Export.prototype.getSVG = function (type, options, encodeURI) {\n if (encodeURI === void 0) {\n encodeURI = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var prehidden, width, height, font, fontSize, scale, pixelRatio, svg, charset, uri;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n prehidden = this._objectsAlreadyHidden;\n if (!prehidden) {\n this.hideNonExportableSprites();\n }\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(\"svg\");\n }\n // Wait for required elements to be ready before proceeding\n return [4 /*yield*/, this.awaitValidSprites()];\n case 1:\n // Wait for required elements to be ready before proceeding\n _a.sent();\n width = this.sprite.pixelWidth;\n height = this.sprite.pixelHeight;\n font = $dom.findFont(this.sprite.dom);\n fontSize = $dom.findFontSize(this.sprite.dom);\n scale = options.scale || 1;\n pixelRatio = this.getPixelRatio(options);\n // Check if scale needs to be updated as per min/max dimensions\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\n svg = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\n charset = this.adapter.apply(\"charset\", {\n charset: \"charset=utf-8\",\n type: \"svg\",\n options: options\n }).charset;\n uri = this.adapter.apply(\"getSVG\", {\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(svg) : svg,\n options: options\n }).data;\n if (!prehidden) {\n this.restoreNonExportableSprites();\n }\n return [2 /*return*/, uri];\n }\n });\n });\n };\n /**\r\n * Checks if SVG is fully formatted. Encloses in `...` if\r\n * necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param svg Input SVG\r\n * @param options Options\r\n * @param width Width of the SVG viewport\r\n * @param height Height of the SVG viewport\r\n * @param font Font family to use as a base\r\n * @param fontSize Font size to use as a base\r\n * @return Output SVG\r\n * @todo Add style params to existing \r\n */\n Export.prototype.normalizeSVG = function (svg, options, width, height, scale, font, fontSize, background) {\n // Construct width/height params\n var dimParams = \"\";\n if (width) {\n dimParams += \"width=\\\"\" + Math.round(width * (scale || 1)) + \"px\\\" \";\n }\n if (height) {\n dimParams += \"height=\\\"\" + Math.round(height * (scale || 1)) + \"px\\\" \";\n }\n // Apply font settings\n var styleParams = \"\";\n if (font) {\n styleParams += \"font-family: \" + font.replace(/\"/g, \"\") + \";\";\n }\n if (fontSize) {\n styleParams += \"font-size: \" + fontSize + \";\";\n }\n // Scale\n if (scale) {\n dimParams += \"viewBox=\\\"0 0 \" + width + \" \" + height + \"\\\" \";\n }\n // Remove foreign objects temporarily\n var fos = [];\n var ms = svg.match(//gi);\n if (ms) {\n for (var i = 0; i < ms.length; i++) {\n svg = svg.replace(ms[i], $strings.PLACEHOLDER);\n fos.push(ms[i]);\n }\n }\n // Add missing enclosure\n if (!svg.match(/\" + svg + \"\";\n } else {\n if (dimParams !== \"\") {\n // Clear current params\n svg = svg.replace(/(]*)width=\"[^\"]*\"/, \"$1\");\n svg = svg.replace(/(]*)height=\"[^\"]*\"/, \"$1\");\n // Add new params\n svg = svg.replace(/(]*)stylewidth=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(]*)height=\"[^\"]*\"/, \"$1\");\r\n // Add new params\r\n svg = svg.replace(/(]*>)/, \"$1\");\n //svg = svg.replace(/<\\/svg>/, \"\");\n }\n if ($browser.isInternetExplorer()) {\n // IE can't handle exporting for some reason\n svg = svg.replace(/]*\\/>/gi, \"\");\n }\n // Remove base uri-related stuff\n var reg = new RegExp(\"url\\\\(\" + $utils.escapeForRgex($utils.getBaseURI()), \"g\");\n svg = svg.replace(reg, \"url(#\");\n // Remove escaped quotes in url() parameters\n svg = svg.replace(/url\\("([^)]*)"\\)/gm, \"url($1)\");\n // Put foreignObjects back in\n if (fos.length) {\n for (var i = 0; i < fos.length; i++) {\n svg = svg.replace($strings.PLACEHOLDER, fos[i]);\n }\n }\n svg = this.adapter.apply(\"normalizeSVG\", {\n data: svg,\n options: options\n }).data;\n return svg;\n };\n /**\r\n * Serializes an element and returns its contents.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element An element to serialize\r\n * @return A serialized XML\r\n */\n Export.prototype.serializeElement = function (element) {\n return new XMLSerializer().serializeToString(element);\n };\n /**\r\n * Returns a PDF containing chart image.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Account for header when calculating vertical fit\r\n */\n Export.prototype.getPDF = function (type, options) {\n return __awaiter(this, void 0, void 0, function () {\n function addFont(font) {\n var paths = {};\n paths.normal = font.normal.path;\n vfs[font.normal.path] = font.normal.bytes;\n if (font.bold) {\n paths.bold = font.bold.path;\n vfs[font.bold.path] = font.bold.bytes;\n } else {\n paths.bold = font.normal.path;\n }\n if (font.italics) {\n paths.italics = font.italics.path;\n vfs[font.italics.path] = font.italics.bytes;\n } else {\n paths.italics = font.normal.path;\n }\n if (font.bolditalics) {\n paths.bolditalics = font.bolditalics.path;\n vfs[font.bolditalics.path] = font.bolditalics.bytes;\n } else {\n paths.bolditalics = font.normal.path;\n }\n fonts[font.name] = paths;\n }\n var image, pdfmake, defaultMargins, doc, title, extraMargin, _a, _b, _c, fonts, vfs;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n return [4 /*yield*/, this.getImage(options.imageFormat || \"png\", options)];\n case 1:\n image = _d.sent();\n return [4 /*yield*/, this.pdfmake];\n case 2:\n pdfmake = _d.sent();\n defaultMargins = [30, 30, 30, 30];\n doc = {\n pageSize: options.pageSize || \"A4\",\n pageOrientation: options.pageOrientation || \"portrait\",\n pageMargins: options.pageMargins || defaultMargins,\n defaultStyle: {\n font: options.font ? options.font.name : undefined\n },\n //header: [],\n content: []\n };\n title = this.adapter.apply(\"title\", {\n title: this.title,\n options: options\n }).title;\n extraMargin = 0;\n if (title) {\n doc.content.push({\n text: title,\n fontSize: options.fontSize || 14,\n bold: true,\n margin: [0, 0, 0, 15]\n });\n // Add some leftover margin for title\n extraMargin += 50;\n }\n // Add page URL?\n if (options.addURL) {\n doc.content.push({\n text: this.language.translate(\"Saved from\") + \": \" + document.location.href,\n fontSize: options.fontSize,\n margin: [0, 0, 0, 15]\n });\n // Add some leftover margin for URL\n extraMargin += 50;\n }\n // Add image\n if (type != \"pdfdata\") {\n doc.content.push({\n image: image,\n alignment: options.align || \"left\",\n fit: this.getPageSizeFit(doc.pageSize, doc.pageMargins, extraMargin)\n });\n }\n if (!(type == \"pdfdata\" || options.addData)) return [3 /*break*/, 4];\n _b = (_a = doc.content).push;\n _c = {};\n return [4 /*yield*/, this.getPDFData(\"pdf\", options)];\n case 3:\n _b.apply(_a, [(_c.table = _d.sent(), _c.fontSize = options.fontSize || 14, _c)]);\n _d.label = 4;\n case 4:\n // Apply adapters\n doc = this.adapter.apply(\"pdfmakeDocument\", {\n doc: doc,\n options: options\n }).doc;\n fonts = null;\n vfs = null;\n if (options.font) {\n fonts = {};\n vfs = {};\n addFont(options.font);\n if (options.extraFonts) {\n $array.each(options.extraFonts, addFont);\n }\n }\n return [4 /*yield*/, new Promise(function (success, error) {\n pdfmake.createPdf(doc, null, fonts, vfs).getDataUrl(function (uri) {\n success(uri);\n });\n })];\n case 5:\n // Create PDF\n return [2 /*return*/, _d.sent()];\n }\n });\n });\n };\n /**\r\n * Returns chart's data formatted suitable for PDF export (pdfmake).\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.getPDFData = function (type, options) {\n return __awaiter(this, void 0, void 0, function () {\n var content, dataFields, data, dataFieldsOrder_1, len, i;\n var _this = this;\n return __generator(this, function (_a) {\n content = {\n \"body\": []\n };\n dataFields = this.adapter.apply(\"formatDataFields\", {\n dataFields: this.dataFields,\n format: \"pdf\"\n }).dataFields;\n data = this.data;\n // Vertical or horizontal (default) layout\n if (options.pivot) {\n dataFieldsOrder_1 = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"pdfdata\"\n }).dataFieldsOrder;\n $object.eachOrdered(dataFields, function (key, val) {\n var dataRow = [];\n if (options.addColumnNames) {\n dataRow.push(val);\n }\n for (var len = data.length, i = 0; i < len; i++) {\n var dataValue = data[i][key];\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\n }\n content.body.push(_this.getPDFDataRow(dataRow, options, undefined, true));\n }, function (a, b) {\n //console.log(a, b)\n var ai = dataFieldsOrder_1.indexOf(a);\n var bi = dataFieldsOrder_1.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n } else {\n // Add column names?\n if (options.addColumnNames) {\n content.body.push(this.getPDFDataRow(dataFields, options, undefined, true));\n content.headerRows = 1;\n }\n for (len = data.length, i = 0; i < len; i++) {\n content.body.push(this.getPDFDataRow(data[i], options, dataFields));\n }\n }\n return [2 /*return*/, this.adapter.apply(\"pdfmakeTable\", {\n table: content,\n options: options\n }).table];\n });\n });\n };\n /**\r\n * Formats a row of data for use in PDF data table (pdfmake).\r\n *\r\n * @ignore Exclude from docs\r\n * @since 4.7.0\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated Data line\r\n */\n Export.prototype.getPDFDataRow = function (row, options, dataFields, asIs) {\n var _this = this;\n if (asIs === void 0) {\n asIs = false;\n }\n // Init\n var items = [];\n // Data fields\n if (!dataFields) {\n dataFields = row;\n }\n // Data fields order\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"pdfdata\"\n }).dataFieldsOrder;\n // Process each row item\n $object.eachOrdered(dataFields, function (key, name) {\n // Get value\n var value = _this.convertEmptyValue(key, row[key], options);\n // Convert dates\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\n item = \"\" + item;\n // Add to item\n items.push(item);\n }, function (a, b) {\n //console.log(a, b)\n var ai = dataFieldsOrder.indexOf(a);\n var bi = dataFieldsOrder.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n return items;\n };\n /**\r\n * Returns fit dimensions for available page sizes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pageSize Page size\r\n * @return `[width, height]` in pixels\r\n */\n Export.prototype.getPageSizeFit = function (pageSize, margins, extraMargin) {\n if (extraMargin === void 0) {\n extraMargin = 0;\n }\n // Check margins\n var newMargins = [0, 0, 0, 0];\n if (typeof margins == \"number\") {\n newMargins = [margins, margins, margins, margins];\n } else if (margins.length == 2) {\n newMargins = [margins[0], margins[1], margins[0], margins[1]];\n } else if (margins.length == 4) {\n newMargins = margins;\n }\n // Define available page sizes\n var sizes = {\n \"4A0\": [4767.87, 6740.79],\n \"2A0\": [3370.39, 4767.87],\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.40, 209.76],\n A9: [104.88, 147.40],\n A10: [73.70, 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.90, 708.66],\n B6: [354.33, 498.90],\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 RA0: [2437.80, 3458.27],\n RA1: [1729.13, 2437.80],\n RA2: [1218.90, 1729.13],\n RA3: [864.57, 1218.90],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.80, 907.09],\n EXECUTIVE: [521.86, 756.00],\n FOLIO: [612.00, 936.00],\n LEGAL: [612.00, 1008.00],\n LETTER: [612.00, 792.00],\n TABLOID: [792.00, 1224.00]\n };\n // Calculate size\n var fitSize = sizes[pageSize];\n fitSize[0] -= newMargins[0] + newMargins[2];\n fitSize[1] -= newMargins[1] + newMargins[3] + extraMargin;\n return fitSize;\n };\n /**\r\n * Returns an Excel file of chart's data.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Handle dates\r\n * @todo Support for multi-sheet\r\n */\n Export.prototype.getExcel = function (type, options) {\n return __awaiter(this, void 0, void 0, function () {\n var XLSX, wbOptions, sheetName, wb, data, dataFields, dataFieldsOrder_2, len, i, uri;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(\"xlsx\");\n }\n return [4 /*yield*/, this.xlsx];\n case 1:\n XLSX = _a.sent();\n wbOptions = this.adapter.apply(\"xlsxWorkbookOptions\", {\n xlsx: XLSX,\n options: {\n bookType: \"xlsx\",\n bookSST: false,\n type: \"base64\"\n }\n }).options;\n sheetName = this.normalizeExcelSheetName(this.adapter.apply(\"xlsxSheetName\", {\n xlsx: XLSX,\n name: this.title || this.language.translate(\"Data\")\n }).name);\n wb = {\n SheetNames: [sheetName],\n Sheets: {}\n };\n data = [];\n dataFields = this.adapter.apply(\"formatDataFields\", {\n dataFields: this.dataFields,\n format: \"xslx\"\n }).dataFields;\n // Vertical or horizontal (default) layout\n if (options.pivot) {\n dataFieldsOrder_2 = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"xlsx\"\n }).dataFieldsOrder;\n $object.eachOrdered(dataFields, function (key, val) {\n var dataRow = [];\n if (options.addColumnNames) {\n dataRow.push(val);\n }\n for (var len = _this.data.length, i = 0; i < len; i++) {\n var dataValue = _this.data[i][key];\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\n }\n data.push(_this.getExcelRow(dataRow, options, undefined, true));\n }, function (a, b) {\n //console.log(a, b)\n var ai = dataFieldsOrder_2.indexOf(a);\n var bi = dataFieldsOrder_2.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n } else {\n // Add column names?\n if (options.addColumnNames) {\n data.push(this.getExcelRow(dataFields, options, undefined, true));\n }\n // Add lines\n for (len = this.data.length, i = 0; i < len; i++) {\n data.push(this.getExcelRow(this.data[i], options, dataFields));\n }\n }\n // Create sheet and add data\n wb.Sheets[sheetName] = XLSX.utils.aoa_to_sheet(data);\n // Apply adapters\n wb = this.adapter.apply(\"xlsxWorkbook\", {\n xlsx: XLSX,\n workbook: wb,\n options: options\n }).workbook;\n uri = this.adapter.apply(\"getExcel\", {\n data: \"data:\" + this.getContentType(type) + \";base64,\" + XLSX.write(wb, wbOptions),\n options: options\n }).data;\n return [2 /*return*/, uri];\n }\n });\n });\n };\n /**\r\n * This is needed to work around Excel limitations.\r\n *\r\n * @param name Source name\r\n * @return Normalized name\r\n */\n Export.prototype.normalizeExcelSheetName = function (name) {\n name = name.replace(/([:\\\\\\/?*\\[\\]]+)/g, \" \");\n return $utils.truncateWithEllipsis(name, 31, \"...\", true);\n };\n /**\r\n * Rertuns an array of values to be used as Excel row.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row Row data\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Array of values\r\n */\n Export.prototype.getExcelRow = function (row, options, dataFields, asIs) {\n var _this = this;\n if (asIs === void 0) {\n asIs = false;\n }\n // Init\n var items = [];\n // Data fields\n if (!dataFields) {\n dataFields = row;\n }\n // Data fields order\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"xlsx\"\n }).dataFieldsOrder;\n // Process each row item\n $object.eachOrdered(dataFields, function (key, name) {\n // Get value\n var value = _this.convertEmptyValue(key, row[key], options);\n // Convert dates\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options, true);\n items.push(item);\n }, function (a, b) {\n //console.log(a, b)\n var ai = dataFieldsOrder.indexOf(a);\n var bi = dataFieldsOrder.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n return items;\n };\n /**\r\n * Returns chart's data formatted as CSV.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.getCSV = function (type, options, encodeURI) {\n if (encodeURI === void 0) {\n encodeURI = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var csv, dataFields, br, data, dataFieldsOrder_3, len, i, row, charset, uri;\n var _this = this;\n return __generator(this, function (_a) {\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(\"csv\");\n }\n csv = \"\";\n dataFields = this.adapter.apply(\"formatDataFields\", {\n dataFields: this.dataFields,\n format: \"csv\"\n }).dataFields;\n br = \"\";\n data = this.data;\n // Vertical or horizontal (default) layout\n if (options.pivot) {\n dataFieldsOrder_3 = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"csv\"\n }).dataFieldsOrder;\n $object.eachOrdered(dataFields, function (key, val) {\n var dataRow = [];\n if (options.addColumnNames) {\n dataRow.push(val);\n }\n for (var len = data.length, i = 0; i < len; i++) {\n var dataValue = data[i][key];\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\n }\n csv += br + _this.getCSVRow(dataRow, options, undefined, true);\n br = \"\\n\";\n }, function (a, b) {\n var ai = dataFieldsOrder_3.indexOf(a);\n var bi = dataFieldsOrder_3.indexOf(b);\n if (ai > bi) {\n return -1;\n } else if (ai < bi) {\n return 1;\n }\n return 0;\n });\n } else {\n for (len = data.length, i = 0; i < len; i++) {\n row = this.getCSVRow(data[i], options, dataFields);\n if (options.reverse) {\n csv = row + br + csv;\n } else {\n csv += br + row;\n }\n br = \"\\n\";\n }\n // Add column names?\n if (options.addColumnNames) {\n csv = this.getCSVRow(dataFields, options, undefined, true) + br + csv;\n }\n }\n charset = this.adapter.apply(\"charset\", {\n charset: \"charset=utf-8\",\n type: type,\n options: options\n }).charset;\n uri = this.adapter.apply(\"getCSV\", {\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(csv) : csv,\n options: options\n }).data;\n return [2 /*return*/, uri];\n });\n });\n };\n /**\r\n * Formats a row of CSV data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated CSV line\r\n */\n Export.prototype.getCSVRow = function (row, options, dataFields, asIs) {\n var _this = this;\n if (asIs === void 0) {\n asIs = false;\n }\n // Init\n var separator = options.separator || \",\";\n var items = [];\n // Data fields\n if (!dataFields) {\n dataFields = row;\n }\n // Data fields order\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"csv\"\n }).dataFieldsOrder;\n // Process each row item\n $object.eachOrdered(dataFields, function (key, name) {\n // Get value\n var value = _this.convertEmptyValue(key, row[key], options);\n // Check if we need to skip\n // This is no longer required because we are iterating via dataFields anyway\n /*if ($type.hasValue(this.dataFields) && !$type.hasValue(this.dataFields[key])) {\r\n return;\r\n }*/\n // Convert dates\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\n // Cast and escape doublequotes\n item = \"\" + item;\n item = item.replace(/\"/g, '\"\"');\n // Enclose into double quotes\n if (options.forceQuotes || item.search(new RegExp(\"\\\"|\\n|\" + separator, \"g\")) >= 0) {\n item = \"\\\"\" + item + \"\\\"\";\n }\n // Add to item\n items.push(item);\n }, function (a, b) {\n //console.log(a, b)\n var ai = dataFieldsOrder.indexOf(a);\n var bi = dataFieldsOrder.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n return items.join(separator);\n };\n /**\r\n * Returns chart's data formatted as HTML table.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.getHTML = function (type, options, encodeURI) {\n if (encodeURI === void 0) {\n encodeURI = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var html, dataFields, data, dataFieldsOrder_4, len, i, charset, uri;\n var _this = this;\n return __generator(this, function (_a) {\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(\"html\");\n }\n html = \"\";\n if (options.tableClass) {\n html = \"
\";\n }\n dataFields = this.adapter.apply(\"formatDataFields\", {\n dataFields: this.dataFields,\n format: \"html\"\n }).dataFields;\n data = this.data;\n // Vertical or horizontal (default) layout\n if (options.pivot) {\n dataFieldsOrder_4 = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"html\"\n }).dataFieldsOrder;\n html += \"\\n\";\n $object.eachOrdered(dataFields, function (key, val) {\n var dataRow = [];\n if (options.addColumnNames) {\n dataRow.push(val);\n }\n for (var len = data.length, i = 0; i < len; i++) {\n var dataValue = data[i][key];\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\n }\n html += \"\\n\" + _this.getHTMLRow(dataRow, options, undefined, true);\n }, function (a, b) {\n var ai = dataFieldsOrder_4.indexOf(a);\n var bi = dataFieldsOrder_4.indexOf(b);\n if (ai > bi) {\n return -1;\n } else if (ai < bi) {\n return 1;\n }\n return 0;\n });\n html += \"\\n\";\n } else {\n // Add column names?\n if (options.addColumnNames) {\n html += \"\\n\\n\" + this.getHTMLRow(dataFields, options, undefined, true, true) + \"\\n\";\n }\n html += \"\\n\";\n for (len = data.length, i = 0; i < len; i++) {\n html += \"\\n\" + this.getHTMLRow(data[i], options, dataFields);\n }\n html += \"\\n\";\n }\n html += \"\\n
\";\n charset = this.adapter.apply(\"charset\", {\n charset: \"charset=utf-8\",\n type: type,\n options: options\n }).charset;\n uri = this.adapter.apply(\"getHTML\", {\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(html) : html,\n options: options\n }).data;\n return [2 /*return*/, uri];\n });\n });\n };\n /**\r\n * Formats a row of HTML data.\r\n *\r\n * @since 4.7.0\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated HTML row\r\n */\n Export.prototype.getHTMLRow = function (row, options, dataFields, asIs, headerRow) {\n var _this = this;\n if (asIs === void 0) {\n asIs = false;\n }\n if (headerRow === void 0) {\n headerRow = false;\n }\n // Init output\n var html = \"\\t\";\n if (options.rowClass) {\n html = \"\\t\";\n }\n // Data fields\n if (!dataFields) {\n dataFields = row;\n }\n // Data fields order\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\n dataFieldsOrder: this.dataFieldsOrder,\n format: \"html\"\n }).dataFieldsOrder;\n // th or dh?\n var tag = headerRow ? \"th\" : \"td\";\n // Process each row item\n var first = true;\n $object.eachOrdered(dataFields, function (key, name) {\n // Get value\n var value = _this.convertEmptyValue(key, row[key], options);\n // Convert dates\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\n // Escape HTML entities\n item = \"\" + item;\n item = item.replace(/[\\u00A0-\\u9999<>\\&]/gim, function (i) {\n return \"&#\" + i.charCodeAt(0) + \";\";\n });\n // Which tag to use\n var useTag = tag;\n if (options.pivot && first) {\n useTag = \"th\";\n }\n // Add cell\n if (options.cellClass) {\n html += \"\\n\\t\\t<\" + useTag + \" class=\\\"\" + options.cellClass + \"\\\">\" + item + \"\";\n } else {\n html += \"\\n\\t\\t<\" + useTag + \">\" + item + \"\";\n }\n first = false;\n }, function (a, b) {\n var ai = dataFieldsOrder.indexOf(a);\n var bi = dataFieldsOrder.indexOf(b);\n if (ai > bi) {\n return 1;\n } else if (ai < bi) {\n return -1;\n }\n return 0;\n });\n html += \"\\n\\t\";\n return html;\n };\n /**\r\n * Returns chart's data in JSON format.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.getJSON = function (type, options, encodeURI) {\n if (encodeURI === void 0) {\n encodeURI = true;\n }\n return __awaiter(this, void 0, void 0, function () {\n var data, dataFields, sourceData, _loop_1, len, i, json, charset, uri;\n var _this = this;\n return __generator(this, function (_a) {\n if (!$type.hasValue(options)) {\n options = this.getFormatOptions(\"json\");\n }\n dataFields = this.adapter.apply(\"formatDataFields\", {\n dataFields: this.dataFields,\n format: \"json\"\n }).dataFields;\n if (!this._dynamicDataFields) {\n data = [];\n sourceData = this.data;\n _loop_1 = function (len, i) {\n var value = sourceData[i];\n if (typeof value == \"object\") {\n var newValue_1 = {};\n $object.each(value, function (field, item) {\n if ($type.hasValue(dataFields[field])) {\n newValue_1[dataFields[field]] = _this.convertToSpecialFormat(field, item, options);\n }\n });\n data.push(newValue_1);\n }\n };\n for (len = sourceData.length, i = 0; i < len; i++) {\n _loop_1(len, i);\n }\n } else {\n data = this.data;\n }\n json = JSON.stringify(data, function (key, value) {\n if (typeof value == \"object\") {\n $object.each(value, function (field, item) {\n value[field] = _this.convertToSpecialFormat(field, item, options);\n });\n }\n return value;\n }, options.indent);\n charset = this.adapter.apply(\"charset\", {\n charset: \"charset=utf-8\",\n type: type,\n options: options\n }).charset;\n uri = this.adapter.apply(\"getJSON\", {\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(json) : json,\n options: options\n }).data;\n return [2 /*return*/, uri];\n });\n });\n };\n /**\r\n * Converts the value to proper date format.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param value Value\r\n * @param options Options\r\n * @param keepOriginal Will ignore formatting and will keep value as it is in data\r\n * @return Formatted date value or unmodified value\r\n */\n Export.prototype.convertToSpecialFormat = function (field, value, options, keepOriginal) {\n // Is this a timestamp or duration?\n if (typeof value == \"number\") {\n if (this.isDateField(field)) {\n value = new Date(value);\n } else if (this.isDurationField(field)) {\n return this.durationFormatter.format(value, this.durationFormat);\n } else if (this.isNumberField(field) && this.numberFormat) {\n return this.numberFormatter.format(value, this.numberFormat);\n }\n }\n if (value instanceof Date) {\n if (options.useTimestamps) {\n value = value.getTime();\n } else if (options.useLocale) {\n if (!keepOriginal) {\n value = value.toLocaleString();\n }\n } else {\n value = this.dateFormatter.format(value, this.dateFormat);\n }\n } else if ($type.isString(value) && this.isDateField(field) && this.dateFormat) {\n value = this.dateFormatter.format(this.dateFormatter.parse(value), this.dateFormat);\n }\n return value;\n };\n /**\r\n * Converts empty value based on `emptyAs` option.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.convertEmptyValue = function (field, value, options) {\n return $type.hasValue(value) ? value : options.emptyAs;\n };\n /**\r\n * Triggers download of the file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param uri Data URI with file content\r\n * @param fileName File name\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.download = function (uri, fileName, addBOM) {\n if (addBOM === void 0) {\n addBOM = false;\n }\n return __awaiter(this, void 0, void 0, function () {\n var parts, contentType, decoded, blob_1, chars, i, charCode, blob, link_1, parts, contentType, decoded, blob_2, url_2, chars, i, charCode, blob, url_3, link, parts, contentType, iframe, idoc;\n return __generator(this, function (_a) {\n if (this.msBlobDownloadSupport()) {\n parts = uri.split(\";\");\n contentType = parts.shift().replace(/data:/, \"\");\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\n // Check if we need to Base64-decode\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\"].indexOf(contentType) == -1) {\n try {\n decoded = atob(uri);\n uri = decoded;\n } catch (e) {\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\n return [2 /*return*/, false];\n }\n } else {\n blob_1 = new Blob([uri], {\n type: contentType\n });\n window.navigator.msSaveBlob(blob_1, fileName);\n return [2 /*return*/, true];\n }\n chars = new Array(uri.length);\n for (i = 0; i < uri.length; ++i) {\n charCode = uri.charCodeAt(i);\n chars[i] = charCode;\n }\n blob = new Blob([new Uint8Array(chars)], {\n type: contentType\n });\n window.navigator.msSaveBlob(blob, fileName);\n } else if (this.blobDownloadSupport()) {\n link_1 = document.createElement(\"a\");\n link_1.download = fileName;\n document.body.appendChild(link_1);\n parts = uri.split(\";\");\n contentType = parts.shift().replace(/data:/, \"\");\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\", \"text/html\"].indexOf(contentType) == -1) {\n try {\n decoded = atob(uri);\n uri = decoded;\n } catch (e) {\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\n return [2 /*return*/, false];\n }\n } else {\n if (addBOM) {\n uri = \"\\ufeff\" + uri;\n }\n blob_2 = new Blob([uri], {\n type: contentType\n });\n url_2 = window.URL.createObjectURL(blob_2);\n link_1.href = url_2;\n link_1.download = fileName;\n link_1.click();\n setTimeout(function () {\n document.body.removeChild(link_1);\n window.URL.revokeObjectURL(url_2);\n }, 100);\n return [2 /*return*/, true];\n }\n chars = new Array(uri.length);\n for (i = 0; i < uri.length; ++i) {\n charCode = uri.charCodeAt(i);\n chars[i] = charCode;\n }\n if (addBOM) {\n chars = [0xEF, 0xBB, 0xBF].concat(chars);\n }\n blob = new Blob([new Uint8Array(chars)], {\n type: contentType\n });\n url_3 = window.URL.createObjectURL(blob);\n link_1.href = url_3;\n link_1.download = fileName;\n document.body.appendChild(link_1);\n link_1.click();\n document.body.removeChild(link_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(url_3);\n }, 100);\n } else if (this.linkDownloadSupport()) {\n link = document.createElement(\"a\");\n link.download = fileName;\n link.href = uri;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else if (this.legacyIE()) {\n parts = uri.match(/^data:(.*);[ ]*([^,]*),(.*)$/);\n if (parts.length === 4) {\n // Base64-encoded or text-based stuff?\n if (parts[2] == \"base64\") {\n // Base64-encoded - probably an image\n if (parts[1].match(/^image\\//)) {\n // Yep, an image. Let's create a temporary image placeholder,\n // so that user can use do Save As.\n this.showModal(\"\" + \"

\" + this.language.translate(\"To save the image, right-click thumbnail on the left and choose \\\"Save picture as...\\\"\") + \"

\" + \"

\" + this.language.translate(\"(Press ESC to close this message)\") + \"

\", this.language.translate(\"Image Export Complete\"));\n }\n } else {\n contentType = void 0;\n if (fileName.match(/\\.svg$/)) {\n contentType = \"image/svg+xml\";\n } else {\n contentType = \"text/plain\";\n fileName += \".txt\";\n }\n iframe = document.createElement(\"iframe\");\n iframe.width = \"1px\";\n iframe.height = \"1px\";\n iframe.style.display = \"none\";\n document.body.appendChild(iframe);\n idoc = iframe.contentDocument;\n idoc.open(contentType, \"replace\");\n // TODO test this with various encodings (e.g. UTF)\n //idoc.charset = parts[2].replace(/charset=/, \"\");\n idoc.write(decodeURIComponent(parts[3]));\n idoc.close();\n idoc.execCommand(\"SaveAs\", true, fileName);\n // Destroy the iframe\n document.body.removeChild(iframe);\n }\n }\n } else {\n /**\r\n * Something else - perhaps a mobile.\r\n * Let's just display it in the same page.\r\n * (hey we don't like it either)\r\n */\n window.location.href = uri;\n }\n return [2 /*return*/, true];\n });\n });\n };\n /**\r\n * Returns `true` if browser has any supported methods to trigger download\r\n * of a binary file.\r\n *\r\n * @return Supports downloads?\r\n */\n Export.prototype.downloadSupport = function () {\n //return !this.legacyIE();\n return this.linkDownloadSupport() || this.msBlobDownloadSupport();\n };\n /**\r\n * Checks if the browser supports \"download\" attribute on links.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\n Export.prototype.linkDownloadSupport = function () {\n // Do we have this cached?\n var cache = registry.getCache(\"linkDownloadSupport\");\n if (cache === false || cache === true) {\n return cache;\n }\n var a = document.createElement(\"a\");\n var res = typeof a.download !== \"undefined\";\n registry.setCache(\"linkDownloadSupport\", res);\n return res;\n };\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\n Export.prototype.blobDownloadSupport = function () {\n return $type.hasValue(window.Blob);\n };\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\n Export.prototype.msBlobDownloadSupport = function () {\n return $type.hasValue(window.navigator.msSaveOrOpenBlob);\n };\n /**\r\n * Checks if this is a legacy version of IE.\r\n *\r\n * @ignore Exclude from docs\r\n * @return IE9 or less?\r\n */\n Export.prototype.legacyIE = function () {\n // Create a temporary
with conditional tags in it an an tag.\n // Count s. If there are some, we have IE9 or late on our hands.\n var div = document.createElement(\"div\");\n div.innerHTML = \"\";\n return div.getElementsByTagName(\"i\").length == 1;\n };\n /**\r\n * Initiates print of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param data Data URI for the image\r\n * @param options Options\r\n * @param title Optional title to use (uses window's title by default)\r\n * @return Promise\r\n * @async\r\n */\n Export.prototype.print = function (data, options, title) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (options.printMethod == \"css\") {\n return [2 /*return*/, this.printViaCSS(data, options, title)];\n } else {\n return [2 /*return*/, this.printViaIframe(data, options, title)];\n }\n return [2 /*return*/];\n });\n });\n };\n Export.prototype.printViaCSS = function (data, options, title) {\n return __awaiter(this, void 0, void 0, function () {\n var scroll, rule, originalTitle, img, isIOS;\n return __generator(this, function (_a) {\n scroll = document.documentElement.scrollTop || document.body.scrollTop;\n rule = new StyleRule($dom.getShadowRoot(this.container), \"body > *\", {\n \"display\": \"none\",\n \"position\": \"fixed\",\n \"visibility\": \"hidden\",\n \"opacity\": \"0\",\n \"clipPath\": \"polygon(0px 0px,0px 0px,0px 0px,0px 0px);\"\n });\n if (title && document && document.title) {\n originalTitle = document.title;\n document.title = title;\n }\n img = new Image();\n img.src = data;\n img.style.maxWidth = \"100%\";\n img.style.display = \"block\";\n img.style.position = \"relative\";\n img.style.visibility = \"visible\";\n img.style.opacity = \"1\";\n img.style.clipPath = \"none\";\n document.body.appendChild(img);\n // Print\n this.setTimeout(function () {\n window.print();\n }, 50);\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n if (isIOS && options.delay < 1000) {\n options.delay = 1000;\n } else if (options.delay < 100) {\n options.delay = 100;\n }\n // Delay function that resets back the document the way ot was before\n this.setTimeout(function () {\n // Remove image\n document.body.removeChild(img);\n // Reset back all elements\n /*for (let len = items.length, i = 0; i < len; i++) {\r\n let item = items[i];\r\n if ($dom.isElement(item)) {\r\n item.style.display = states[i];\r\n }\r\n }*/\n rule.dispose();\n // Restore title\n if (originalTitle) {\n document.title = document.title;\n }\n // Scroll back the document the way it was before\n document.documentElement.scrollTop = document.body.scrollTop = scroll;\n }, options.delay || 500);\n return [2 /*return*/, true];\n });\n });\n };\n Export.prototype.printViaIframe = function (data, options, title) {\n return __awaiter(this, void 0, void 0, function () {\n var iframe, img, isIOS;\n return __generator(this, function (_a) {\n iframe = document.createElement(\"iframe\");\n iframe.style.visibility = \"hidden\";\n document.body.appendChild(iframe);\n // This is needed for FireFox\n iframe.contentWindow.document.open();\n iframe.contentWindow.document.close();\n img = new Image();\n img.src = data;\n img.style.maxWidth = \"100%\";\n img.style.height = \"auto\";\n if (title) {\n iframe.contentWindow.document.title = title;\n }\n iframe.contentWindow.document.body.appendChild(img);\n iframe.load = function () {\n iframe.contentWindow.document.body.appendChild(img);\n };\n // Print\n this.setTimeout(function () {\n try {\n if (!iframe.contentWindow.document.execCommand(\"print\", false, null)) {\n iframe.contentWindow.print();\n }\n } catch (e) {\n iframe.contentWindow.print();\n }\n }, options.delay || 50);\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n if (isIOS && options.delay < 1000) {\n options.delay = 1000;\n } else if (options.delay < 100) {\n options.delay = 100;\n }\n // Delay function that resets back the document the way ot was before\n this.setTimeout(function () {\n // Remove image\n document.body.removeChild(iframe);\n }, options.delay + 50 || 100);\n return [2 /*return*/, true];\n });\n });\n };\n /**\r\n * Finds a background color for the element. If element is transparent it goes\r\n * up the DOM hierarchy to find a parent element that does.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Color code\r\n */\n Export.prototype.findBackgroundColor = function (element) {\n // Check if element has styles set\n var opacity = 1,\n currentColor = getComputedStyle(element, \"background-color\");\n // Check opacity\n if (currentColor.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || currentColor == \"transparent\") {\n opacity = 0;\n }\n if (opacity == 0) {\n var parent_2 = element.parentElement; // || element.parentNode;\n // Completely transparent. Look for a parent\n if (parent_2) {\n return this.findBackgroundColor(parent_2);\n } else {\n return color(\"#fff\");\n }\n } else {\n return color(currentColor, opacity);\n }\n };\n Object.defineProperty(Export.prototype, \"container\", {\n /**\r\n * @return Reference\r\n */\n get: function () {\n return this.adapter.apply(\"container\", {\n container: this._container\n }).container;\n },\n /**\r\n * A reference to a container to be used to place [[ExportMenu]] in.\r\n *\r\n * @param value Reference\r\n */\n set: function (value) {\n this._container = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"sprite\", {\n /**\r\n * @return Sprite\r\n */\n get: function () {\n return this.adapter.apply(\"sprite\", {\n sprite: this._sprite\n }).sprite;\n },\n /**\r\n * A reference to [[Sprite]] to export. Can be any Sprite, including some\r\n * internal elements.\r\n *\r\n * @param value Sprite\r\n */\n set: function (value) {\n this._sprite = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"extraSprites\", {\n /**\r\n * @return Sprite\r\n */\n get: function () {\n return this.adapter.apply(\"extraSprites\", {\n extraSprites: this._extraSprites\n }).extraSprites;\n },\n /**\r\n * An array of extra [[Sprite]] elements to include in export.\r\n *\r\n * It can be used to export any external elements, or even other charts.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n *\r\n * IMPORTANT: This setting is ignored when exporting to SVG format.\r\n *\r\n * @since 4.2.0\r\n * @param value Sprite\r\n */\n set: function (value) {\n this._extraSprites = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"validateSprites\", {\n /**\r\n * @return Sprite\r\n */\n get: function () {\n return this.adapter.apply(\"validateSprites\", {\n validateSprites: this._validateSprites\n }).validateSprites;\n },\n /**\r\n * An array of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n *\r\n * If any of those elements is not completely ready when export is triggered,\r\n * the export will wait until they are (their `validated` event triggers)\r\n * before going through with the export opertaion.\r\n *\r\n * This is useful if you need to modify chart appearance for the export.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Add watermark\r\n * let watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Add watermark\r\n * var watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n *\r\n * @since 4.6.8\r\n * @param value Sprite\r\n */\n set: function (value) {\n this._validateSprites = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"data\", {\n /**\r\n * @return Data\r\n */\n get: function () {\n return this.adapter.apply(\"data\", {\n data: this._data\n }).data;\n },\n /**\r\n * Data to export.\r\n *\r\n * @param value Data\r\n */\n set: function (value) {\n this._data = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"dataFields\", {\n /**\r\n * @return Field names `{ field: fieldName }`\r\n */\n get: function () {\n if (!this._dataFields) {\n this.generateDataFields();\n }\n return this.adapter.apply(\"dataFields\", {\n dataFields: this._dataFields\n }).dataFields;\n },\n /**\r\n * Data fields in `{ field: fieldName }` format. Those are used for\r\n * exporting in data formats to name the columns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/#Changing_order_and_names_of_columns} for examples and details\r\n * @param value Field names\r\n */\n set: function (value) {\n this._dataFields = value;\n this._dynamicDataFields = false;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Called after target chart's data updates.\r\n *\r\n * @ignore\r\n */\n Export.prototype.handleDataUpdated = function () {\n if (this._dynamicDataFields) {\n this._dataFields = undefined;\n }\n var hasData = this.data.length > 0;\n if (this._prevHasData != hasData) {\n this._prevHasData = hasData;\n if (this.menu) {\n this.menu.invalidate();\n }\n }\n };\n Object.defineProperty(Export.prototype, \"dateFormatter\", {\n /**\r\n * @return A DateFormatter instance\r\n */\n get: function () {\n if (!this._dateFormatter) {\n this._dateFormatter = new DateFormatter();\n this._dateFormatter.language = this.language;\n }\n return this.adapter.apply(\"dateFormatter\", {\n dateFormatter: this._dateFormatter\n }).dateFormatter;\n },\n /**\r\n * A [[DateFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @param value DateFormatter instance\r\n */\n set: function (value) {\n this._dateFormatter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"dateFormat\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this.adapter.apply(\"dateFormat\", {\n dateFormat: this._dateFormat\n }).dateFormat;\n },\n /**\r\n * A date format to use for exporting dates. Will use [[DateFormatter]]\r\n * format if not set.\r\n *\r\n * @param value Date format\r\n */\n set: function (value) {\n this._dateFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"dateFields\", {\n /**\r\n * @return Date field list\r\n */\n get: function () {\n if (!this._dateFields) {\n this._dateFields = new List();\n }\n return this.adapter.apply(\"dateFields\", {\n dateFields: this._dateFields\n }).dateFields;\n },\n /**\r\n * A list of fields that hold date values.\r\n *\r\n * @param value Date field list\r\n */\n set: function (value) {\n this._dateFields = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"numberFormatter\", {\n /**\r\n * @return A NumberFormatter instance\r\n */\n get: function () {\n if (!this._numberFormatter) {\n this._numberFormatter = new NumberFormatter();\n this._numberFormatter.language = this.language;\n }\n return this.adapter.apply(\"numberFormatter\", {\n numberFormatter: this._numberFormatter\n }).numberFormatter;\n },\n /**\r\n * A [[NumberFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @since 4.5.15\r\n * @param value NumberFormatter instance\r\n */\n set: function (value) {\n this._numberFormatter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"numberFormat\", {\n /**\r\n * @return Number format\r\n */\n get: function () {\n return this.adapter.apply(\"numberFormat\", {\n numberFormat: this._numberFormat\n }).numberFormat;\n },\n /**\r\n * A number format to use for exporting dates. Will use [[NumberFormatter]]\r\n * format if not set.\r\n *\r\n * @since 4.5.15\r\n * @param value Number format\r\n */\n set: function (value) {\n this._numberFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"numberFields\", {\n /**\r\n * @return Number field list\r\n */\n get: function () {\n if (!this._numberFields) {\n this._numberFields = new List();\n }\n return this.adapter.apply(\"numberFields\", {\n numberFields: this._numberFields\n }).numberFields;\n },\n /**\r\n * A list of fields that hold number values.\r\n *\r\n * @since 4.5.15\r\n * @param value Number field list\r\n */\n set: function (value) {\n this._numberFields = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"durationFormatter\", {\n /**\r\n * @return A DurationFormatter instance\r\n */\n get: function () {\n if (!this._durationFormatter) {\n this._durationFormatter = new DurationFormatter();\n this._durationFormatter.language = this.language;\n }\n return this.adapter.apply(\"durationFormatter\", {\n durationFormatter: this._durationFormatter\n }).durationFormatter;\n },\n /**\r\n * A [[DurationFormatter]] to use when formatting duration values when\r\n * exporting data.\r\n *\r\n * @param value DurationFormatter instance\r\n */\n set: function (value) {\n this._durationFormatter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"durationFormat\", {\n /**\r\n * @return Duration format\r\n */\n get: function () {\n return this.adapter.apply(\"durationFormat\", {\n durationFormat: this._durationFormat\n }).durationFormat;\n },\n /**\r\n * A format to use when formatting values from `durationFields`.\r\n * Will use [[DurationFormatter]] format if not set.\r\n *\r\n * @param value Duration format\r\n */\n set: function (value) {\n this._durationFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"durationFields\", {\n /**\r\n * @return Duration field list\r\n */\n get: function () {\n if (!this._durationFields) {\n this._durationFields = new List();\n }\n return this.adapter.apply(\"durationFields\", {\n durationFields: this._durationFields\n }).durationFields;\n },\n /**\r\n * A list of fields that hold duration values.\r\n *\r\n * @param value Duration field list\r\n */\n set: function (value) {\n this._durationFields = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Generates data fields out of the first row of data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.generateDataFields = function () {\n var _this = this;\n this._dataFields = {};\n if (this.data.length) {\n $array.each(this.data, function (row) {\n $object.each(row, function (key, value) {\n if (!$type.hasValue(_this._dataFields[key])) {\n _this._dataFields[key] = _this.adapter.apply(\"dataFieldName\", {\n name: key,\n field: key\n }).name;\n }\n });\n });\n }\n };\n /**\r\n * Cheks against `dateFields` property to determine if this field holds\r\n * dates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\n Export.prototype.isDateField = function (field) {\n return this.adapter.apply(\"isDateField\", {\n isDateField: this.dateFields.contains(field),\n field: field\n }).isDateField;\n };\n /**\r\n * Cheks against `numberFields` property to determine if this field holds\r\n * numbers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a number field\r\n */\n Export.prototype.isNumberField = function (field) {\n return this.adapter.apply(\"isNumberField\", {\n isNumberField: this.numberFields.contains(field),\n field: field\n }).isNumberField;\n };\n /**\r\n * Cheks against `durationFields` property to determine if this field holds\r\n * durations.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\n Export.prototype.isDurationField = function (field) {\n return this.adapter.apply(\"isDurationField\", {\n isDurationField: this.durationFields.contains(field),\n field: field\n }).isDurationField;\n };\n /**\r\n * Returns proper content type for the export type.\r\n *\r\n * @param type Export format/type\r\n * @return Proper content type, i.e. \"image/jpeg\"\r\n */\n Export.prototype.getContentType = function (type) {\n var contentType = \"\";\n switch (type) {\n case \"png\":\n case \"gif\":\n contentType = \"image/\" + type;\n break;\n case \"jpg\":\n contentType = \"image/jpeg\";\n break;\n case \"svg\":\n contentType = \"image/svg+xml\";\n break;\n case \"csv\":\n contentType = \"text/csv\";\n break;\n case \"json\":\n contentType = \"application/json\";\n break;\n case \"html\":\n contentType = \"text/html\";\n break;\n case \"pdf\":\n case \"pdfdata\":\n contentType = \"application/pdf\";\n break;\n case \"xlsx\":\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n break;\n }\n return this.adapter.apply(\"contentType\", {\n contentType: contentType,\n type: type\n }).contentType;\n };\n Object.defineProperty(Export.prototype, \"filePrefix\", {\n /**\r\n * @return File prefix\r\n */\n get: function () {\n return this.adapter.apply(\"filePrefix\", {\n filePrefix: this._filePrefix\n }).filePrefix;\n },\n /**\r\n * A file prefix to be used for all exported formats.\r\n *\r\n * Export will apply format-related extension to it. E.g. if this is set to\r\n * \"myExport\", the file name of the PNG exported image will be \"myExport.png\".\r\n *\r\n * @param value File prefix\r\n */\n set: function (value) {\n this._filePrefix = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"backgroundColor\", {\n /**\r\n * @return Background color\r\n */\n get: function () {\n return this.adapter.apply(\"backgroundColor\", {\n backgroundColor: this._backgroundColor\n }).backgroundColor;\n },\n /**\r\n * A background color to be used for exported images. If set, this will\r\n * override the automatically acquired background color.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this._backgroundColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"title\", {\n /**\r\n * @return Title\r\n */\n get: function () {\n return this.adapter.apply(\"title\", {\n title: this._title\n }).title;\n },\n /**\r\n * A title to be used when printing.\r\n *\r\n * @param value Title\r\n */\n set: function (value) {\n this._title = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Displays a preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Add ability to change text\r\n */\n Export.prototype.showPreloader = function () {\n var preloader = this.preloader;\n if (preloader) {\n preloader.progress = 0.5;\n preloader.label.text = \"...\";\n }\n };\n /**\r\n * Hides preloader/exporting indicator\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.hidePreloader = function () {\n var preloader = this.preloader;\n if (preloader) {\n preloader.progress = 1;\n }\n };\n Object.defineProperty(Export.prototype, \"preloader\", {\n /**\r\n * Returns a an instance of [[Preloader]] associated with the Sprite being\r\n * exported.\r\n *\r\n * @return Preloader\r\n */\n get: function () {\n return this._sprite && this._sprite.parent && this._sprite.parent.preloader ? this._sprite.parent.preloader : undefined;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Displays a modal saying export is taking longer than expected.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.showTimeout = function () {\n this.showModal(this.adapter.apply(\"timeoutMessage\", {\n message: this.language.translate(\"Export operation took longer than expected. Something might have gone wrong.\")\n }).message);\n };\n /**\r\n * Hides preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.hideTimeout = function () {\n if (this._timeoutTimeout) {\n this.removeDispose(this._timeoutTimeout);\n this._timeoutTimeout = null;\n }\n this.hideModal();\n };\n Object.defineProperty(Export.prototype, \"language\", {\n /**\r\n * @return A [[Language]] instance to be used\r\n */\n get: function () {\n if (!this._language) {\n this._language = new Language();\n }\n return this._language;\n },\n /**\r\n * A [[Language]] instance to be used for translations.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\n set: function (value) {\n this._language = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"modal\", {\n /**\r\n * Returns (and creates) [[Modal]].\r\n *\r\n * @ignore Exclude from docs\r\n * @return Modal instance\r\n */\n get: function () {\n if (!this._modal) {\n this._modal = new Modal();\n // Prefix with Sprite's class name\n this._modal.adapter.add(\"classPrefix\", function (value) {\n value = options.classNamePrefix + value;\n return value;\n });\n }\n return this._modal;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Shows [[Modal]] with specific text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Modal contents\r\n */\n Export.prototype.showModal = function (text, title) {\n // Hide previous modal and preloader\n this.hideModal();\n this.hidePreloader();\n // Create modal\n var modal = this.modal;\n modal.container = this.sprite.svgContainer.SVGContainer;\n modal.content = text;\n modal.readerTitle = title;\n modal.open();\n };\n /**\r\n * Hides modal window if one's currently open.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.prototype.hideModal = function () {\n if (this._modal) {\n this.modal.close();\n }\n };\n /**\r\n * Loads canvg dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n * @async\r\n */\n Export.prototype._canvg = function () {\n return __awaiter(this, void 0, void 0, function () {\n var canvg;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, import( /* webpackChunkName: \"canvg\" */\"../../canvg/index.js\")];\n case 1:\n canvg = _a.sent();\n if (canvg.default != null) {\n return [2 /*return*/, canvg.default];\n } else {\n return [2 /*return*/, canvg];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n Object.defineProperty(Export.prototype, \"canvg\", {\n /**\r\n * Returns canvg instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n */\n get: function () {\n return this._canvg();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Export.prototype, \"pdfmake\", {\n /**\r\n * Returns pdfmake instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\n get: function () {\n if (pdfmakePromise == null) {\n pdfmakePromise = _pdfmake();\n }\n return pdfmakePromise;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Loads xlsx dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\n Export.prototype._xlsx = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, import( /* webpackChunkName: \"xlsx\" */\"xlsx/dist/xlsx.core.min.js\")];\n case 1:\n return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Object.defineProperty(Export.prototype, \"xlsx\", {\n /**\r\n * Returns xlsx instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\n get: function () {\n return this._xlsx();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets options for a format.\r\n */\n Export.prototype.setFormatOptions = function (type, options) {\n this._formatOptions.setKey(type, options);\n };\n /**\r\n * Returns current options for a format.\r\n */\n Export.prototype.getFormatOptions = function (type) {\n return this._formatOptions.getKey(type);\n };\n Object.defineProperty(Export.prototype, \"formatOptions\", {\n /**\r\n * A [[Dictionary]] object containing format-specific options.\r\n *\r\n * May be used to change specific option for the format:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * // ...\r\n * \"formatOptions\": {\r\n * \"csv\": {\r\n * \"disabled\": true\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.9.12\r\n * @return Options\r\n */\n get: function () {\n return this._formatOptions;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Disables interactivity on parent chart.\r\n */\n Export.prototype._disablePointers = function () {\n if (!$type.hasValue(this._spriteInteractionsEnabled)) {\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\n }\n this.sprite.interactionsEnabled = false;\n };\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\n Export.prototype._releasePointers = function () {\n if ($type.hasValue(this._spriteInteractionsEnabled) && !this._exportRunning) {\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\n }\n };\n /**\r\n * Hides all elements that should not be included in the exported image.\r\n */\n Export.prototype.hideNonExportableSprites = function () {\n var _this = this;\n if (this._objectsAlreadyHidden) {\n return;\n }\n var svgContainer = this.sprite.svgContainer;\n if (svgContainer) {\n $array.each(svgContainer.nonExportableSprites, function (item) {\n if (!item.isHidden && !item.isHiding && item.visible) {\n _this._hiddenObjects.push(item);\n }\n item.hide(0);\n });\n }\n this._objectsAlreadyHidden = true;\n };\n /**\r\n * Respores elements that were hidden before export.\r\n */\n Export.prototype.restoreNonExportableSprites = function () {\n if (!this._objectsAlreadyHidden) {\n return;\n }\n $array.each(this._hiddenObjects, function (item) {\n item.show(0);\n });\n this._hiddenObjects = [];\n this._objectsAlreadyHidden = false;\n };\n /**\r\n * Checks if there are elements that absolutely need to be validated before\r\n * export.\r\n *\r\n * If there are invalid elements, it will await for them to be validated.\r\n *\r\n * @return Promise\r\n */\n Export.prototype.awaitValidSprites = function () {\n return __awaiter(this, void 0, void 0, function () {\n var promises;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n promises = [];\n if (this.validateSprites.length) {\n $array.each(this.validateSprites, function (sprite, index) {\n if (sprite.invalid) {\n promises.push(new Promise(function (resolve, reject) {\n sprite.events.once(\"validated\", function (ev) {\n resolve();\n });\n }));\n }\n });\n }\n if (!promises.length) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(promises)];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n return [2 /*return*/];\n }\n });\n });\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Export.prototype.processConfig = function (config) {\n registry.registeredClasses[\"ExportMenu\"] = ExportMenu;\n if (config) {\n // Set up menu\n if ($type.hasValue(config.menu) && !$type.hasValue(config.menu.type)) {\n config.menu.type = \"ExportMenu\";\n }\n if ($type.hasValue(config.dataFields) && $type.isObject(config.dataFields)) {\n this.dataFields = config.dataFields;\n delete config.dataFields;\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * XLINK namespace definition.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Export.XLINK = \"http://www.w3.org/1999/xlink\";\n return Export;\n}(Validatable);\nexport { Export };\n//# sourceMappingURL=Export.js.map","/**\r\n * ExportMenu provides functionality for building Export menu\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport exportCSS from \"./ExportCSS\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { List } from \"../utils/List\";\nimport { getInteraction } from \"../interaction/Interaction\";\nimport { MutableValueDisposer } from \"../utils/Disposer\";\nimport { Language } from \"../utils/Language\";\nimport { Validatable } from \"../utils/Validatable\";\nimport { keyboard } from \"../utils/Keyboard\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $iter from \"../utils/Iterator\";\nimport * as $dom from \"../utils/DOM\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a menu for Export operations.\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n * @important\r\n */\nvar ExportMenu = /** @class */function (_super) {\n __extends(ExportMenu, _super);\n /**\r\n * Constructor\r\n */\n function ExportMenu() {\n var _this = _super.call(this) || this;\n /**\r\n * An [[Adapter]].\r\n */\n _this.adapter = new Adapter(_this);\n /**\r\n * How many milliseconds to hold menu/sub-menu open after it loses focus or\r\n * hover, before auto-closing it.\r\n *\r\n * @default 1000\r\n */\n _this.closeDelay = 1000;\n /**\r\n * Close the menu automatically when some export operation is triggered.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n */\n _this.closeOnClick = true;\n /**\r\n * An instance of [[Language]].\r\n */\n _this._language = new MutableValueDisposer();\n /**\r\n * What HTML tags to use to build menu.\r\n */\n _this._menuTag = \"ul\";\n /**\r\n * Which tag to use to enclose individual menu items.\r\n */\n _this._itemTag = \"li\";\n /**\r\n * Tag to wrap menu item labels in.\r\n */\n _this._labelTag = \"a\";\n /**\r\n * Tag to use for icons\r\n */\n _this._iconTag = \"img\";\n /**\r\n * Prefix for class names applied to menu elements.\r\n */\n _this._classPrefix = \"amexport\";\n /**\r\n * If set to `true` [[ExportMenu]] will load it's own external CSS when\r\n * instantiated.\r\n */\n _this._defaultStyles = true;\n /**\r\n * Horizontal positioning.\r\n */\n _this._align = \"right\";\n /**\r\n * Vertical positioning.\r\n */\n _this._verticalAlign = \"top\";\n /**\r\n * A tabindex to apply to Export Menu.\r\n */\n _this._tabindex = 0;\n /**\r\n * Whether next menu close event should be ignored.\r\n */\n _this._ignoreNextClose = false;\n /**\r\n * Default menu items.\r\n */\n _this._items = [{\n \"label\": \"...\",\n \"menu\": [{\n \"label\": \"Image\",\n \"menu\": [{\n \"type\": \"png\",\n \"label\": \"PNG\"\n }, {\n \"type\": \"jpg\",\n \"label\": \"JPG\"\n }, {\n \"type\": \"svg\",\n \"label\": \"SVG\"\n }, {\n \"type\": \"pdf\",\n \"label\": \"PDF\"\n }]\n }, {\n \"label\": \"Data\",\n \"menu\": [{\n \"type\": \"json\",\n \"label\": \"JSON\"\n }, {\n \"type\": \"csv\",\n \"label\": \"CSV\"\n }, {\n \"type\": \"xlsx\",\n \"label\": \"XLSX\"\n }, {\n \"type\": \"html\",\n \"label\": \"HTML\"\n }, {\n \"type\": \"pdfdata\",\n \"label\": \"PDF\"\n }]\n }, {\n \"label\": \"Print\",\n \"type\": \"print\"\n }]\n }];\n _this.className = \"ExportMenu\";\n _this._disposers.push(_this._language);\n _this.invalidate();\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)draws the Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ExportMenu.prototype.validate = function () {\n this.draw();\n _super.prototype.validate.call(this);\n };\n /**\r\n * Draws the menu based on current items.\r\n *\r\n * Normally, there's no need to call this explicitly. The chart, if it has\r\n * export menu enabled, will automatically draw the menu.\r\n */\n ExportMenu.prototype.draw = function () {\n var _this = this;\n // Create top-level menu item, or clear it\n if (!this._element) {\n this._element = this.createMenuElement(0);\n } else {\n this._element.innerHTML = \"\";\n this._element.className = this.getMenuItemClass(0);\n }\n // See if we're loading external CSS\n // Hide it until CSS is loaded\n if (this.defaultStyles) {\n this._element.style.display = \"none\";\n }\n // Append to container\n $type.getValue(this._container).appendChild(this._element);\n // Apply adapter to menu items before processing\n var items = this.adapter.apply(\"items\", {\n items: this._items\n }).items;\n for (var len = items.length, i = 0; i < len; i++) {\n this.drawBranch(this._element, items[i], 0);\n }\n // Apply adapter to finalized menu element\n this._element = this.adapter.apply(\"menuElement\", {\n menuElement: this._element\n }).menuElement;\n // Set up global \"down\" event\n this._disposers.push(getInteraction().body.events.on(\"down\", function (ev) {\n if (!ev.pointer.touch) {\n _this._ignoreNextClose = false;\n }\n _this.close();\n }));\n // Set up global event on ESC press to close the menu\n this._disposers.push(getInteraction().body.events.on(\"keydown\", function (ev) {\n var key = keyboard.getEventKey(ev.event);\n switch (key) {\n case \"esc\":\n _this.close();\n break;\n case \"up\":\n case \"down\":\n case \"left\":\n case \"right\":\n if (_this._currentSelection) {\n ev.event.preventDefault();\n }\n _this.moveSelection(key);\n break;\n }\n }));\n if (this.defaultStyles) {\n this.loadDefaultCSS();\n }\n };\n /**\r\n * Creates a new branch in export menu. This function is recursive for\r\n * building multi-level menus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Container to put branch elements in\r\n * @param branch Menu item\r\n * @param level Current nesting level\r\n */\n ExportMenu.prototype.drawBranch = function (container, branch, level) {\n var _this = this;\n // Apply adapter\n branch = this.adapter.apply(\"branch\", {\n branch: branch,\n level: level\n }).branch;\n // Unsupported?\n // ExportMenu does not check or know for specific browser/system\n // capabilities. It must happen in some other code and applied via Adapter.\n // Export itself will check compatibility, but there might be other plugins\n // that influence it or even add any specific export functionality.\n if (branch.unsupported === true) {\n return;\n }\n // Init ascendants\n if (!branch.ascendants) {\n branch.ascendants = new List();\n }\n // Get type\n var type = branch.type;\n // Create an item\n var element = this.createItemElement(level, type);\n // Create label\n var label;\n // Create icon\n if (branch.icon) {\n label = this.createIconElement(level, type);\n label.src = branch.icon;\n if (branch.label || branch.title) {\n label.title = branch.title || branch.label;\n }\n } else if (branch.svg) {\n label = this.createSvgElement(level, type, branch.svg);\n if (branch.label || branch.title) {\n label.title = branch.title || branch.label;\n }\n } else {\n label = this.createLabelElement(level, type);\n label.innerHTML = branch.label ? this.language.translate(branch.label) : \"\";\n if (branch.title) {\n label.title = branch.title;\n }\n }\n // Apply reader text to label\n var readerLabel = this.getReaderLabel(branch, label.innerHTML);\n label.setAttribute(\"aria-label\", readerLabel);\n // Add Label\n element.appendChild(label);\n // Create interaction object\n // TODO clean this up when it's disposed\n branch.interactions = getInteraction().getInteraction(element);\n branch.element = element;\n // Create interaction manager we can set event listeners to\n if (this.typeClickable(type)) {\n //branch.interactions.clickable = true;\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"hit\", function (ev) {\n if (_this.events.isEnabled(\"hit\") && !_this.isDisposed()) {\n var event_1 = {\n \"type\": \"hit\",\n \"event\": ev.event,\n \"target\": _this,\n \"branch\": branch\n };\n _this.events.dispatchImmediately(\"hit\", event_1);\n }\n });\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"keyup\", function (ev) {\n if (keyboard.isKey(ev.event, \"enter\")) {\n if (_this.events.isEnabled(\"enter\")) {\n var event_2 = {\n \"type\": \"enter\",\n \"event\": ev.event,\n \"target\": _this,\n \"branch\": branch\n };\n _this.events.dispatchImmediately(\"enter\", event_2);\n }\n }\n });\n }\n {\n var submenu_1 = this.getSubMenu(branch);\n // Add ENTER event to open sub-menus\n if (submenu_1 != null) {\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"keyup\", function (ev) {\n if (keyboard.isKey(ev.event, \"enter\")) {\n // This is item has sub-menu, activate the first child on ENTER\n _this.selectBranch(submenu_1[0]);\n // Attempt to set focus\n _this.setFocus(submenu_1[0]);\n }\n });\n branch.interactions.events.on(\"hit\", function (ev) {\n _this.selectBranch(branch);\n });\n }\n }\n // Add events\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"over\", function (ev) {\n if (ev.pointer.touch) {\n // Cancel pending menu closure\n _this._ignoreNextClose = true;\n }\n _this.selectBranch(branch);\n if (_this.events.isEnabled(\"over\")) {\n var event_3 = {\n \"type\": \"over\",\n \"event\": ev.event,\n \"target\": _this,\n \"branch\": branch\n };\n _this.events.dispatchImmediately(\"over\", event_3);\n }\n });\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"out\", function (ev) {\n if (_this.isDisposed()) {\n return;\n }\n if (!ev.pointer.touch) {\n _this.delayUnselectBranch(branch);\n }\n if (_this.events.isEnabled(\"out\")) {\n var event_4 = {\n \"type\": \"out\",\n \"event\": ev.event,\n \"target\": _this,\n \"branch\": branch\n };\n _this.events.dispatchImmediately(\"out\", event_4);\n }\n });\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"focus\", function (ev) {\n _this.selectBranch(branch);\n });\n // TODO clean this up when it's disposed\n branch.interactions.events.on(\"blur\", function (ev) {\n _this.delayUnselectBranch(branch);\n });\n // Increment level\n var local_level = level + 1;\n // Has sub-menu?\n if (branch.menu) {\n var submenu = this.createMenuElement(local_level);\n branch.submenuElement = submenu;\n for (var len = branch.menu.length, i = 0; i < len; i++) {\n var ascendants = new List();\n branch.menu[i].ascendants = ascendants;\n if (branch.ascendants.length) {\n ascendants.copyFrom(branch.ascendants);\n }\n ascendants.push(branch);\n this.drawBranch(submenu, branch.menu[i], local_level);\n }\n // Sub-menu is empty (all items are not supported)\n // Do not draw this menu item at all\n if (submenu.innerHTML == \"\") {\n return;\n }\n element.appendChild(submenu);\n }\n // Should this item be hidden?\n if (branch.hidden) {\n this.hideBranch(branch);\n }\n // Add id?\n if (branch.id) {\n element.setAttribute(\"id\", branch.id);\n }\n // Background color?\n if (branch.color) {\n element.style.backgroundColor = branch.color.hex;\n }\n // Append to container\n container.appendChild(element);\n };\n /**\r\n * Creates a menu element to hold its elements in. Usually it's an `
    `\r\n * tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return HTML element reference\r\n */\n ExportMenu.prototype.createMenuElement = function (level) {\n var element = document.createElement(this.menuTag);\n element.className = this.getMenuItemClass(level);\n // Accessibility\n if (level === 0) {\n element.setAttribute(\"role\", \"menubar\");\n } else {\n element.setAttribute(\"role\", \"menu\");\n }\n return element;\n };\n /**\r\n * Generates a class name for the menu element based on its nesting level.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return Class name(s)\r\n */\n ExportMenu.prototype.getMenuItemClass = function (level) {\n var className = this.classPrefix + \"-menu \" + this.classPrefix + \"-menu-level-\" + level;\n if (level === 0) {\n className += \" \" + this.classPrefix + \"-menu-root \" + this.classPrefix + \"-\" + this.align + \" \" + this.classPrefix + \"-\" + this.verticalAlign;\n }\n return this.adapter.apply(\"menuClass\", {\n className: className,\n level: level\n }).className;\n };\n /**\r\n * Creates menu item. Usually `
  • ` tag. Its label and sub-elements will go\r\n * into this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return HTML element reference\r\n */\n ExportMenu.prototype.createItemElement = function (level, type) {\n var element = document.createElement(this.itemTag);\n var className = this.classPrefix + \"-item \" + this.classPrefix + \"-item-level-\" + level + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\n element.className = this.adapter.apply(\"itemClass\", {\n className: className,\n level: level,\n type: type\n }).className;\n element.setAttribute(\"role\", \"menuitem\");\n element.setAttribute(\"tabindex\", this.tabindex.toString());\n return element;\n };\n /**\r\n * Creates a \"label\" part of the menu item. It could be text or any HTML\r\n * content.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\n ExportMenu.prototype.createLabelElement = function (level, type) {\n var element = document.createElement(this.labelTag);\n var className = this.classPrefix + \"-label \" + this.classPrefix + \"-label-level-\" + level + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\n if (this.typeClickable(type)) {\n className += \" \" + this.classPrefix + \"-clickable\";\n }\n element.className = this.adapter.apply(\"labelClass\", {\n className: className,\n level: level,\n type: type\n }).className;\n // Accessible navigation\n //element.setAttribute(\"tabindex\", this.tabindex.toString());\n //element.setAttribute(\"role\", \"menuitem\");\n return element;\n };\n /**\r\n * Creates a \"icon\" part of the menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\n ExportMenu.prototype.createIconElement = function (level, type) {\n var element = document.createElement(this.iconTag);\n var className = this.classPrefix + \"-icon \" + this.classPrefix + \"-icon-level-\" + level + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\n if (this.typeClickable(type)) {\n className += \" \" + this.classPrefix + \"-clickable\";\n }\n element.className = this.adapter.apply(\"labelClass\", {\n className: className,\n level: level,\n type: type\n }).className;\n // Accessible navigation\n element.setAttribute(\"tabindex\", this.tabindex.toString());\n element.setAttribute(\"role\", \"menuitem\");\n return element;\n };\n /**\r\n * Creates a a custom element out of raw HTML.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\n ExportMenu.prototype.createSvgElement = function (level, type, svg) {\n var parser = new DOMParser();\n var element = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\n var className = this.classPrefix + \"-icon \" + this.classPrefix + \"-icon-level-\" + level + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\n if (this.typeClickable(type)) {\n className += \" \" + this.classPrefix + \"-clickable\";\n }\n element.setAttribute(\"class\", this.adapter.apply(\"labelClass\", {\n className: className,\n level: level,\n type: type\n }).className);\n // Accessible navigation\n element.setAttribute(\"tabindex\", this.tabindex.toString());\n element.setAttribute(\"role\", \"menuitem\");\n return element;\n };\n /**\r\n * Destroys the menu and all its elements.\r\n */\n ExportMenu.prototype.dispose = function () {\n if (!this._disposed) {\n _super.prototype.dispose.call(this);\n if (this._element && this._element.parentNode) {\n this._element.parentNode.removeChild(this._element);\n }\n }\n };\n /**\r\n * Checks whether menu item type is supposed to be clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Menu item type\r\n * @return Is clickable?\r\n */\n ExportMenu.prototype.typeClickable = function (type) {\n return $type.hasValue(type);\n };\n /**\r\n * Checks whether menu item has any sub-items.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Has sub-items?\r\n */\n ExportMenu.prototype.hasSubMenu = function (branch) {\n return branch.menu && branch.menu.length ? true : false;\n };\n /**\r\n * Returns sub-items (if they exist).\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Submenus\r\n */\n ExportMenu.prototype.getSubMenu = function (branch) {\n if (branch.menu && branch.menu.length) {\n return branch.menu;\n }\n };\n /**\r\n * Generates and returns an applicable label to be used for screen readers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A menu item instance\r\n * @param label Current label\r\n * @return Reader text\r\n */\n ExportMenu.prototype.getReaderLabel = function (branch, label) {\n // Strip any HTML from the label\n label = $utils.stripTags(label);\n // Add textual note if the branch is clickable\n if (branch.ascendants.length == 0) {\n label = label == \"...\" ? this.language.translate(\"Export\") : label;\n label += \" [\" + this.language.translate(\"Press ENTER or use arrow keys to navigate\") + \"]\";\n } else if (this.hasSubMenu(branch)) {\n label += \" [\" + this.language.translate(\"Click, tap or press ENTER to open\") + \"]\";\n } else if (branch.type == \"print\") {\n label = this.language.translate(\"Click, tap or press ENTER to print.\");\n } else if (this.typeClickable(branch.type)) {\n label = this.language.translate(\"Click, tap or press ENTER to export as %1.\", undefined, label);\n }\n return this.adapter.apply(\"rederLabel\", {\n label: label,\n branch: branch\n }).label;\n };\n Object.defineProperty(ExportMenu.prototype, \"container\", {\n /**\r\n * @return Container\r\n */\n get: function () {\n return this._container;\n },\n /**\r\n * Getters and setters\r\n */\n /**\r\n * An HTML container to place the Menu in.\r\n *\r\n * A container must be an HTML element, because menu itself is HTML, and\r\n * cannot be placed into SVG.\r\n *\r\n * @param container Reference to container element\r\n * @todo Check if menu is already build. If it is, just move it to a new container\r\n */\n set: function (container) {\n this._container = container;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"items\", {\n /**\r\n * @return Menu items\r\n */\n get: function () {\n return this._items;\n },\n /**\r\n * A list of menu items. Can be nested.\r\n *\r\n * @param items Menu items\r\n */\n set: function (items) {\n this._items = items;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"tag\", {\n /**\r\n * Sets main menu tag to place menu in.\r\n *\r\n * This also sets up how menu items are built.\r\n *\r\n * If you set this to \"ul\", menu items will be wrapped into `
  • ` tags.\r\n *\r\n * If set to \"div\", menu items will be wrapped in `
    ` tags.\r\n *\r\n * @default \"ul\"\r\n * @param tag Tag to use for menu\r\n */\n set: function (tag) {\n this._menuTag = tag;\n this._itemTag = tag == \"ul\" ? \"li\" : \"div\";\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"menuTag\", {\n /**\r\n * Returns current menu tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Menu tag (item that contains sub-items)\r\n */\n get: function () {\n return this.adapter.apply(\"menuTag\", {\n tag: this._menuTag\n }).tag;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"itemTag\", {\n /**\r\n * Returns tag to wrap items into.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Item tag\r\n */\n get: function () {\n return this.adapter.apply(\"itemTag\", {\n tag: this._itemTag\n }).tag;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"labelTag\", {\n /**\r\n * Returns menu label tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Label tag\r\n */\n get: function () {\n return this.adapter.apply(\"labelTag\", {\n tag: this._labelTag\n }).tag;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"iconTag\", {\n /**\r\n * Returns icon tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Icon tag\r\n */\n get: function () {\n return this.adapter.apply(\"iconTag\", {\n tag: this._iconTag\n }).tag;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"align\", {\n /**\r\n * @return Horizontal alignment\r\n */\n get: function () {\n return this.adapter.apply(\"align\", {\n align: this._align\n }).align;\n },\n /**\r\n * A horizontal alignment for the menu placement.\r\n *\r\n * @param value Horizontal alignment\r\n */\n set: function (value) {\n this._align = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"verticalAlign\", {\n /**\r\n * @return Vertical alignment\r\n */\n get: function () {\n return this.adapter.apply(\"verticalAlign\", {\n verticalAlign: this._verticalAlign\n }).verticalAlign;\n },\n /**\r\n * A vertical alignment for the menu placement.\r\n *\r\n * @param value Vertical alignment\r\n */\n set: function (value) {\n this._verticalAlign = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"classPrefix\", {\n /**\r\n * @return Class name prefix\r\n */\n get: function () {\n return this.adapter.apply(\"classPrefix\", {\n classPrefix: this._classPrefix\n }).classPrefix;\n },\n /**\r\n * Class name prefix.\r\n *\r\n * @default \"amexport\"\r\n * @param value Class name prefix\r\n */\n set: function (value) {\n this._classPrefix = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"defaultStyles\", {\n /**\r\n * @return Should ExportMenu load its own CSS?\r\n */\n get: function () {\n return this.adapter.apply(\"defaultStyles\", {\n defaultStyles: this._defaultStyles\n }).defaultStyles;\n },\n /**\r\n * Indicates whether [[ExportMenu]] should load external CSS to style itself.\r\n *\r\n * If set to `false`, the menu will not be styled, and will rely on some\r\n * external CSS.\r\n *\r\n * @default true\r\n * @param Should ExportMenu load its own CSS?\r\n */\n set: function (value) {\n if (this._defaultStyles != value) {\n this._defaultStyles = value;\n if (value) {\n this.loadDefaultCSS();\n }\n }\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Loads the default CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ExportMenu.prototype.loadDefaultCSS = function () {\n this._disposers.push(exportCSS($dom.getShadowRoot(this.container), this.classPrefix));\n if (this._element) {\n this._element.style.display = \"\";\n }\n };\n Object.defineProperty(ExportMenu.prototype, \"tabindex\", {\n /**\r\n * @return Tab index\r\n */\n get: function () {\n return this.adapter.apply(\"tabindex\", {\n tabindex: this._tabindex\n }).tabindex;\n },\n /**\r\n * A tab index for the menu.\r\n *\r\n * Tab index will influence the order in which elements on the chart and\r\n * the whole page are selected when pressing TAB key.\r\n *\r\n * @param value Tab index\r\n */\n set: function (value) {\n this._tabindex = value;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ExportMenu.prototype, \"language\", {\n /**\r\n * @return A [[Language]] instance to be used\r\n */\n get: function () {\n var _this = this;\n var language = this._language.get();\n if (language == null) {\n language = new Language();\n // TODO code duplication with `set language()`\n this._language.set(language, language.events.on(\"localechanged\", function (ev) {\n _this.invalidate();\n }));\n }\n return language;\n },\n /**\r\n * A [[Language]] instance.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\n set: function (value) {\n var _this = this;\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\n _this.invalidate();\n }));\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Controlling the menu\r\n */\n /**\r\n * Removes all active classes from menu items. Useful on touch devices and\r\n * keyboard navigation where open menu can be closed instantly by clicking or\r\n * tapping outside it.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ExportMenu.prototype.close = function () {\n var _this = this;\n if (this.isDisposed()) {\n return;\n }\n if (this._ignoreNextClose) {\n this._ignoreNextClose = false;\n return;\n }\n if (this.closeOnClick) {\n this._element.style.pointerEvents = \"none\";\n setTimeout(function () {\n _this._element.style.pointerEvents = \"auto\";\n }, 100);\n }\n if (this._currentSelection) {\n this.setBlur(this._currentSelection);\n this._currentSelection = undefined;\n }\n if (this._element) {\n var items = this._element.getElementsByClassName(\"active\");\n for (var len = items.length, i = len - 1; i >= 0; i--) {\n if (items[i]) {\n $dom.removeClass(items[i], \"active\");\n }\n }\n }\n this.events.dispatchImmediately(\"closed\", {\n type: \"closed\",\n target: this\n });\n };\n /**\r\n * Selects a branch in the menu.\r\n *\r\n * Handles closing of currently open branch.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to select\r\n */\n ExportMenu.prototype.selectBranch = function (branch) {\n var _this = this;\n if (this.isDisposed()) {\n return;\n }\n // Cancel previous closure\n if (branch.closeTimeout) {\n this.removeDispose(branch.closeTimeout);\n branch.closeTimeout = undefined;\n }\n // Add active class\n $dom.addClass(branch.element, \"active\");\n // Set expanded\n if (branch.submenuElement) {\n branch.submenuElement.setAttribute(\"aria-expanded\", \"true\");\n }\n // Remove current selection\n if (this._currentSelection && this._currentSelection !== branch && this._currentSelection.ascendants) {\n $iter.each($iter.concat($iter.fromArray([this._currentSelection]), this._currentSelection.ascendants.iterator()), function (ascendant) {\n if (!branch.ascendants.contains(ascendant) && branch !== ascendant) {\n _this.unselectBranch(ascendant, true);\n }\n });\n }\n // Select and/or cancel timeout for current ascendants\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\n if (ascendant.closeTimeout) {\n _this.removeDispose(ascendant.closeTimeout);\n ascendant.closeTimeout = undefined;\n }\n $dom.addClass(ascendant.element, \"active\");\n });\n // Log current selection\n this._currentSelection = branch;\n // Invoke event\n if (this.events.isEnabled(\"branchselected\")) {\n var event_5 = {\n type: \"branchselected\",\n target: this,\n branch: branch\n };\n this.events.dispatchImmediately(\"branchselected\", event_5);\n }\n };\n /**\r\n * Unselects a branch. Also selects a branch one level up if necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\n ExportMenu.prototype.unselectBranch = function (branch, simple) {\n if (this.isDisposed()) {\n return;\n }\n // Remove active class\n $dom.removeClass(branch.element, \"active\");\n // Set expanded\n if (branch.submenuElement) {\n branch.submenuElement.removeAttribute(\"aria-expanded\");\n }\n // Remove current selection\n if (this._currentSelection == branch) {\n this._currentSelection = undefined;\n }\n // Invoke event\n if (this.events.isEnabled(\"branchunselected\")) {\n var event_6 = {\n type: \"branchunselected\",\n target: this,\n branch: branch\n };\n this.events.dispatchImmediately(\"branchunselected\", event_6);\n }\n };\n /**\r\n * Delay unselection of a branch. This can still be cancelled in some other\r\n * place if the branch or its children regain focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\n ExportMenu.prototype.delayUnselectBranch = function (branch, simple) {\n var _this = this;\n if (this.isDisposed()) {\n return;\n }\n // Schedule branch unselection\n if (branch.closeTimeout) {\n this.removeDispose(branch.closeTimeout);\n branch.closeTimeout = undefined;\n }\n branch.closeTimeout = this.setTimeout(function () {\n _this.unselectBranch(branch, simple);\n }, this.closeDelay);\n // Schedule unselection of all ascendants\n // In case focus went away from the export menu altogether, this will ensure\n // that all items will be closed.\n // In case we're jumping to other menu item, those delayed unselections will\n // be cancelled by `selectBranch`\n if (simple !== true && branch.ascendants) {\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\n _this.delayUnselectBranch(ascendant, true);\n });\n }\n };\n /**\r\n * Navigates the menu based on which direction kayboard key was pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key A key that was pressed\r\n */\n ExportMenu.prototype.moveSelection = function (key) {\n if (this.isDisposed()) {\n return;\n }\n // Check if there's a current selection\n if (!this._currentSelection) {\n return;\n }\n var newSelection;\n if (key == \"up\") {\n // Try moving up in current menu list, or to the last item if already\n // at the top\n newSelection = this.getPrevSibling(this._currentSelection);\n } else if (key == \"down\") {\n // Try moving down in current menu list, or to the top item if already\n // at the bottom\n newSelection = this.getNextSibling(this._currentSelection);\n } else if (key == \"left\" && this.align == \"right\" || key == \"right\" && this.align == \"left\") {\n var menu = this.getSubMenu(this._currentSelection);\n // Go one level-deeper\n if (menu != null) {\n newSelection = menu[0];\n }\n } else if (key == \"right\" && this.align == \"right\" || key == \"left\" && this.align == \"left\") {\n // Go one level-deeper\n newSelection = this.getParentItem(this._currentSelection);\n }\n if (newSelection && newSelection !== this._currentSelection) {\n this.selectBranch(newSelection);\n this.setFocus(newSelection);\n this._currentSelection = newSelection;\n }\n };\n /**\r\n * Returns all siblings of a menu item, including this same menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return List of sibling menu items\r\n */\n ExportMenu.prototype.getSiblings = function (branch) {\n var parent = this.getParentItem(branch);\n if (parent && parent.menu) {\n return parent.menu;\n } else {\n return [];\n }\n };\n /**\r\n * Returns menu items parent item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return Parent menu item\r\n */\n ExportMenu.prototype.getParentItem = function (branch) {\n if (branch.ascendants && branch.ascendants.length) {\n return branch.ascendants.getIndex(branch.ascendants.length - 1);\n } else {\n return undefined;\n }\n };\n /**\r\n * Returns next sibling in the same menu branch. If there is no next sibling,\r\n * the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\n ExportMenu.prototype.getNextSibling = function (branch) {\n var siblings = this.getSiblings(branch);\n if (siblings.length > 1) {\n var next = siblings.indexOf(branch) + 1;\n next = siblings.length == next ? 0 : next;\n return siblings[next].unsupported ? this.getNextSibling(siblings[next]) : siblings[next];\n } else {\n return branch;\n }\n };\n /**\r\n * Returns previous sibling in the same menu branch. If there is no next\r\n * sibling, the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\n ExportMenu.prototype.getPrevSibling = function (branch) {\n var siblings = this.getSiblings(branch);\n if (siblings.length > 1) {\n var prev = siblings.indexOf(branch) - 1;\n prev = prev == -1 ? siblings.length - 1 : prev;\n return siblings[prev].unsupported ? this.getPrevSibling(siblings[prev]) : siblings[prev];\n } else {\n return branch;\n }\n };\n /**\r\n * Attempts to set focus on particular menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\n ExportMenu.prototype.setFocus = function (branch) {\n if (branch.interactions) {\n try {\n branch.interactions.element.focus();\n } catch (e) {\n // nothing\n }\n }\n };\n /**\r\n * Attempts to remove focus from the menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\n ExportMenu.prototype.setBlur = function (branch) {\n if (branch.interactions) {\n try {\n branch.interactions.element.blur();\n } catch (e) {\n // nothing\n }\n }\n };\n /**\r\n * Hides the whole branch of menu.\r\n *\r\n * @param branch branch\r\n */\n ExportMenu.prototype.hideBranch = function (branch) {\n branch.element.style.display = \"none\";\n };\n /**\r\n * Show the branch of menu.\r\n *\r\n * @param branch branch\r\n */\n ExportMenu.prototype.showBranch = function (branch) {\n branch.element.style.display = \"\";\n };\n Object.defineProperty(ExportMenu.prototype, \"element\", {\n /**\r\n * The main element o fthe menu - usually `
      `.\r\n *\r\n * @since 4.10.6\r\n * @return Menu element\r\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n return ExportMenu;\n}(Validatable);\nexport { ExportMenu };\n//# sourceMappingURL=ExportMenu.js.map","/**\r\n * A collection of network-related functions\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $type from \"./Type\";\n/**\r\n * Loads an external file via its URL.\r\n *\r\n * Please note that this is an asynchronous function.\r\n *\r\n * It will not return the result, but rather a `Promise`.\r\n *\r\n * You can use the `await` notion, or `then()`.\r\n *\r\n * ```TypeScript\r\n * // Using await\r\n * let response = await Net.load( \"http://www.my.com/data.json\" );\r\n * console.log( response.response );\r\n *\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( ( response ) => {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n * ```JavaScript\r\n * // Using then()\r\n * Net.load( \"http://www.my.com/data.json\" ).then( function( response ) {\r\n * console.log( response.response );\r\n * } );\r\n * ```\r\n *\r\n * @async\r\n * @param url URL for the file to load\r\n * @param target A target element that is requesting the net load\r\n * @param options Request options\r\n * @return Result (Promise)\r\n */\nexport function load(url, target, options) {\n return new Promise(function (success, error) {\n // Is return type Blob?\n var isBlob = $type.hasValue(options) && options.responseType == \"blob\";\n // Create request and set up handlers\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n if (xhr.status === 200) {\n var response = void 0;\n var blob_1;\n if (isBlob) {\n blob_1 = xhr.response;\n readBlob(blob_1).then(function (response) {\n var output = {\n xhr: xhr,\n error: false,\n response: response,\n blob: blob_1,\n type: xhr.getResponseHeader(\"Content-Type\"),\n target: target\n };\n success(output);\n });\n return;\n } else {\n response = xhr.responseText || xhr.response;\n }\n var output = {\n xhr: xhr,\n error: false,\n response: response,\n blob: blob_1,\n type: xhr.getResponseHeader(\"Content-Type\"),\n target: target\n };\n success(output);\n } else {\n error({\n xhr: xhr,\n error: true,\n type: xhr.getResponseHeader(\"Content-Type\"),\n target: target\n });\n }\n };\n xhr.onerror = function () {\n error({\n xhr: xhr,\n error: true,\n type: xhr.getResponseHeader(\"Content-Type\"),\n target: target\n });\n };\n // Open request\n xhr.open(\"GET\", url, true);\n if (options && options.withCredentials) {\n xhr.withCredentials = true;\n }\n // Process options\n if ($type.hasValue(options)) {\n if ($type.hasValue(options.requestHeaders)) {\n for (var i = 0; i < options.requestHeaders.length; i++) {\n var header = options.requestHeaders[i];\n xhr.setRequestHeader(header.key, header.value);\n }\n }\n if ($type.hasValue(options.responseType)) {\n xhr.responseType = options.responseType;\n }\n }\n // Send request\n xhr.send();\n });\n}\n/**\r\n * Returns textual representation of a Blob object.\r\n *\r\n * @param blob Target blob\r\n * @return Text promise\r\n */\nexport function readBlob(blob) {\n return new Promise(function (success, error) {\n var reader = new FileReader();\n reader.onload = function (event) {\n success(reader.result);\n };\n reader.onerror = function (e) {\n error(e);\n };\n reader.readAsText(blob);\n });\n}\n//# sourceMappingURL=Net.js.map","/**\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n */\nimport { __extends, __values } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { SpriteState } from \"./SpriteState\";\nimport { SpriteEventDispatcher } from \"./SpriteEvents\";\nexport { SpriteEventDispatcher };\nimport { BaseObjectEvents } from \"./Base\";\nimport { Adapter, globalAdapter } from \"./utils/Adapter\";\nimport { Dictionary, DictionaryTemplate, DictionaryDisposer } from \"./utils/Dictionary\";\nimport { ListDisposer, List } from \"./utils/List\";\nimport { MultiDisposer, Disposer, MutableValueDisposer } from \"./utils/Disposer\";\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\nimport { getGhostPaper } from \"./rendering/Paper\";\nimport { Container } from \"./Container\";\nimport { Pattern } from \"./rendering/fills/Pattern\";\nimport { LinearGradient } from \"./rendering/fills/LinearGradient\";\nimport { RadialGradient } from \"./rendering/fills/RadialGradient\";\nimport { Color, color, toColor } from \"./utils/Color\";\nimport { getInteraction } from \"./interaction/Interaction\";\nimport { MouseCursorStyle } from \"./interaction/Mouse\";\nimport { options } from \"./Options\";\nimport { registry } from \"./Registry\";\nimport { NumberFormatter } from \"./formatters/NumberFormatter\";\nimport { DateFormatter } from \"./formatters/DateFormatter\";\nimport { DurationFormatter } from \"./formatters/DurationFormatter\";\nimport { getTextFormatter } from \"./formatters/TextFormatter\";\nimport { Language } from \"./utils/Language\";\nimport { Export } from \"./export/Export\";\nimport * as $utils from \"./utils/Utils\";\nimport * as $math from \"./utils/Math\";\nimport * as $strings from \"./utils/Strings\";\nimport * as $array from \"./utils/Array\";\nimport * as $object from \"./utils/Object\";\nimport * as $type from \"./utils/Type\";\nimport * as $iter from \"./utils/Iterator\";\nimport { system } from \"./System\";\nimport { Percent, percent } from \"./utils/Percent\";\n/**\r\n * Defines list ofvisual properties\r\n */\nexport var visualProperties = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeOpacity\", \"strokeWidth\", \"strokeDasharray\", \"strokeDashoffset\", \"strokeLinecap\", \"strokeLinejoin\"]; // do not add opacity here, as it is used for showing/hiding\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Sprite represents any displayable element.\r\n *\r\n * This is the main class that encapsulates every object on the chart.\r\n *\r\n * If it's an element that is to be displayed on the screen at some point, its\r\n * class must extend [[Sprite]] class.\r\n *\r\n * [[Sprite]] class represents the a hierarchical structure. Every object that\r\n * extends [[Sprite]] can have children, that would inherit their properties,\r\n * such as language, formatters, etc.\r\n *\r\n * @see {@link SpriteState}\r\n * @see {@link ISpriteEvents} for a list of available events\r\n * @see {@link ISpriteAdapters} for a list of available Adapters\r\n *\r\n * @todo Review child elements that need to go into `_disposers`\r\n * @important\r\n */\nvar Sprite = /** @class */function (_super) {\n __extends(Sprite, _super);\n /**\r\n * Constructor:\r\n * * Creates initial node\r\n * * Sets default properties\r\n * * Creates required default states\r\n * * Inits accessibility\r\n */\n function Sprite() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Holds values for Sprite's properties.\r\n */\n _this.properties = {};\n /**\r\n * @ignore\r\n */\n _this._eventDispatcher = new SpriteEventDispatcher(_this);\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this._bindings = {};\n /**\r\n * Holds indicator if this Sprite is a \"template\" to be used for creating\r\n * other Sprites from and should not be treated as full-fledged element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._isTemplate = false;\n _this._isPath = false;\n /**\r\n * Holds indicator whether this sprite was already initialized.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._inited = false;\n /**\r\n * Holds indicator whether this sprite was already initialized and ready.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._ready = false;\n /**\r\n * If `sprite.hide()` is called and we have \"hidden\" state and\r\n * `transitionDuration > 0`, we set `isHiding` flag to `true` in order to\r\n * avoid restarting animations in case `hide()` method is called multiple\r\n * times.\r\n */\n _this.isHiding = false;\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\n _this._isHidden = false;\n /**\r\n * This property indicates if Sprite is currently being revealed from hidden\r\n * state. This is used to prevent multiple calls to `sprite.show()` to\r\n * restart reveal animation. (if enabled)\r\n */\n _this.isShowing = false;\n /**\r\n * Indicates if this element is a standalone instance. A \"standalone\r\n * instance\" means this is a autonomous object which maintains its own\r\n * set of controls like Preloader, Export, etc.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.isStandaloneInstance = false;\n /**\r\n * Indicates if togglable Sprite is currently active (toggled on).\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._isActive = false;\n /**\r\n * A Sprite element to use as a mask for this Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._mask = new MutableValueDisposer();\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this._positionPrecision = 3;\n /**\r\n * An instance of [[Language]].\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._language = new MutableValueDisposer();\n /**\r\n * Holds [[Export]] object.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._exporting = new MutableValueDisposer();\n /**\r\n * Should this Sprite be included when exporting?\r\n */\n _this._exportable = true;\n /**\r\n * Defines bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._bbox = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n /**\r\n * Indicates if this element is invalid and should be re-validated (redrawn).\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.invalid = false;\n /**\r\n * Indicates if this elements position is invalid and should be repositioned\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.positionInvalid = false;\n /**\r\n * A collection of key/value pairs that can be used to bind specific Sprite\r\n * properties to [[DataItem]].\r\n *\r\n * For example: `fill` property can be bound to `myCustomColor` field in\r\n * DataItem. The Sprite will automatically get the value for `fill` from its\r\n * DataItem.\r\n *\r\n * Can be set for each [[SpriteState]] individually to override default\r\n * bindings.\r\n *\r\n * @see {@link SpriteState}\r\n */\n _this.propertyFields = {};\n /**\r\n * Specifies if property changes on this object should be propagated to the\r\n * objects cloned from this object.\r\n *\r\n * This setting affects property changes *after* cloning, since at the moment\r\n * of cloning all of properties from source object are copied to the clone\r\n * anyway.\r\n *\r\n * @default false\r\n */\n _this.applyOnClones = false;\n // unrotated unscaled\n _this._measuredWidthSelf = 0;\n _this._measuredHeightSelf = 0;\n // read only, sprite extreme coordinates\n /**\r\n * @ignore\r\n */\n _this.maxLeft = 0;\n /**\r\n * @ignore\r\n */\n _this.maxRight = 0;\n /**\r\n * @ignore\r\n */\n _this.maxTop = 0;\n /**\r\n * @ignore\r\n */\n _this.maxBottom = 0;\n // not rotated and not scaled\n /**\r\n * @ignore\r\n */\n _this.maxLeftSelf = 0;\n /**\r\n * @ignore\r\n */\n _this.maxRightSelf = 0;\n /**\r\n * @ignore\r\n */\n _this.maxTopSelf = 0;\n /**\r\n * @ignore\r\n */\n _this.maxBottomSelf = 0;\n _this._isDragged = false;\n _this._isResized = false;\n /**\r\n * @deprecated Moved to [[SpriteProperties]]\r\n */\n _this._disabled = false;\n _this._internalDisabled = false;\n _this._updateDisabled = false;\n _this._internalDefaultsApplied = false;\n /**\r\n * Time in milliseconds after which rollout event happens when user rolls-out of the sprite. This helps to avoid flickering in some cases.\r\n */\n _this.rollOutDelay = 0;\n /**\r\n * This flag is set to `true` for the initial sprite you create and place\r\n * to the div so that we could clear all additional\r\n * sprites/containers when this sprite is disposed.\r\n *\r\n * @ignore\r\n */\n _this.isBaseSprite = false;\n /**\r\n * Indicates whether this sprite should be cloned when cloning its parent\r\n * container. We set this to `false` in those cases when a sprite is created\r\n * by the class, so that when cloning a duplicate sprite would not appear.\r\n */\n _this.shouldClone = true;\n /**\r\n * A read-only flag which indicates if a sprite has completed its initial\r\n * animation (if `showOnInit = true`).\r\n *\r\n * In case `showOnInit = false`, `appeared` is set to `true` on init.\r\n *\r\n * @readonly\r\n */\n _this.appeared = false;\n /**\r\n * [ex description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\n _this.ex = 0;\n /**\r\n * [ey description]\r\n *\r\n * @todo Description\r\n * @ignore\r\n */\n _this.ey = 0;\n /**\r\n * Indicates if the sprite can be moved around when resizing it with two fingers (will only work if draggable = false)\r\n * @ignore\r\n */\n _this.dragWhileResize = false;\n /**\r\n * @ignore\r\n */\n _this.measureFailed = false;\n /**\r\n * If this flag is set to true, calling show() will not reveal the sprite.\r\n *\r\n * @ignore\r\n */\n _this.preventShow = false;\n /**\r\n * When cloning a sprite, if the template has it's own tooltip assigned, this tooltip is also cloned by default.\r\n * This is not good for cpu and sometimes you might only need one single tooltip for all clones. Set this to false in order not to clone tooltip.\r\n */\n _this.cloneTooltip = true;\n _this.className = \"Sprite\";\n _this._disposers.push(_this._eventDispatcher);\n // Generate a unique ID\n $utils.used(_this.uid);\n // Create SVG group to hold everything in\n _this.group = _this.paper.addGroup(\"g\");\n // Set defaults\n // it is better to set defauls like this in order to save invaliation calls and events\n _this.setPropertyValue(\"scale\", 1);\n _this.setPropertyValue(\"rotation\", 0);\n _this.setPropertyValue(\"align\", \"none\");\n _this.setPropertyValue(\"valign\", \"none\");\n _this.setPropertyValue(\"pixelPerfect\", false);\n _this.setPropertyValue(\"visible\", true);\n _this.setPropertyValue(\"tooltipPosition\", \"fixed\");\n _this.setPropertyValue(\"verticalCenter\", \"none\");\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\n _this.setPropertyValue(\"tooltipX\", percent(50));\n _this.setPropertyValue(\"tooltipX\", percent(50));\n _this.setPropertyValue(\"marginTop\", 0);\n _this.setPropertyValue(\"marginBottom\", 0);\n _this.setPropertyValue(\"marginLeft\", 0);\n _this.setPropertyValue(\"marginRight\", 0);\n _this.setPropertyValue(\"dx\", 0);\n _this.setPropertyValue(\"dy\", 0);\n _this.setPropertyValue(\"paddingTop\", 0);\n _this.setPropertyValue(\"paddingBottom\", 0);\n _this.setPropertyValue(\"paddingRight\", 0);\n _this.setPropertyValue(\"paddingLeft\", 0);\n _this.setPropertyValue(\"togglable\", false);\n _this.setPropertyValue(\"hidden\", false);\n _this.setPropertyValue(\"urlTarget\", \"_self\");\n _this.setPropertyValue(\"alwaysShowTooltip\", false);\n _this.setPropertyValue(\"showTooltipOn\", \"hover\");\n _this._prevMeasuredWidth = 0;\n _this._prevMeasuredHeight = 0;\n _this._measuredWidth = 0;\n _this._measuredHeight = 0;\n _this._isMeasured = true;\n // Invalidate the Sprite so that renderer knows it needs to be drawn\n _this.invalidate();\n //this.states.create(\"default\").properties.opacity = 1;\n // Apply the theme\n _this.applyTheme();\n //this._disposers.push(this._clickable);\n // Decorate adapter with events so that we can apply its settings whenever\n // it is modified\n // @todo Think what to do here. We can't just apply the adapter value to\n // property since not all of those are for properties. Commented out for\n // now.\n /*this.adapter.events.on(\"inserted\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });\r\n this.adapter.events.on(\"removed\", (ev: any) => {\r\n (this)[ev.newValue.key] = (this)[ev.newValue.key];\r\n });*/\n // Add disposable dependencies to `_disposers` so they are automatically\n // disposed of when this object is disposed\n _this._disposers.push(_this.events);\n _this._disposers.push(_this.group);\n _this._disposers.push(_this._mask);\n _this._disposers.push(_this._language);\n _this._disposers.push(_this._exporting);\n //this._disposers.push(this._parent);\n //this._disposers.push(this._modal);\n _this._disposers.push(new Disposer(function () {\n $object.each(_this._bindings, function (key, value) {\n value.dispose();\n });\n }));\n _this.setPropertyValue(\"interactionsEnabled\", true);\n return _this;\n }\n Object.defineProperty(Sprite.prototype, \"events\", {\n /**\r\n * Event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/event-listeners/} for more info about Events\r\n */\n get: function () {\n return this._eventDispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"adapter\", {\n /**\r\n * Holds Adapter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/adapters/} for more info about Adapters\r\n */\n get: function () {\n if (!this._adapterO) {\n this._adapterO = new Adapter(this);\n }\n return this._adapterO;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * ==========================================================================\r\n * ELEMENT VALIDATION, INIT, AND DRAWING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Applies properties from all assigned themes.\r\n *\r\n * We do this here so that we can apply class names as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.applyTheme = function () {\n _super.prototype.applyTheme.call(this);\n if (options.autoSetClassName) {\n this.setClassName();\n }\n };\n /**\r\n * Returns theme(s) used by this object either set explicitly on this\r\n * element, inherited from parent, or inherited from [[System]].\r\n *\r\n * @return An array of theme references\r\n */\n Sprite.prototype.getCurrentThemes = function () {\n var themes = this._themes;\n if (themes) {\n return themes;\n } else {\n var parent_1 = this._parent;\n if (parent_1) {\n return parent_1.getCurrentThemes();\n } else {\n return registry.themes;\n }\n }\n };\n /**\r\n * Called just before element's validation, this function allows setting\r\n * defaults.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.applyInternalDefaults = function () {\n // Nothing here, but extending classes might override this function\n // so that they can set their defaults\n this._internalDefaultsApplied = true;\n };\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\n Sprite.prototype.invalidate = function () {\n if (this.disabled || this._isTemplate || this.__disabled) {\n return;\n }\n // We no longer reset this on each invalidate, so that they are applied\n // only once, and do not overwrite user-defined settings\n //this._internalDefaultsApplied = false;\n if (!this.invalid) {\n this.invalid = true;\n registry.addToInvalidSprites(this);\n system.requestFrame();\n }\n };\n /**\r\n * Validates element:\r\n * * Triggers events\r\n * * Redraws the element\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.validate = function () {\n this.dispatchImmediately(\"beforevalidated\");\n // prevents from drawing if topparent is 0x0\n /*\r\n let topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidate, this));\r\n }\r\n }*/\n // Set internal defaults\n if (!this._internalDefaultsApplied) {\n this.applyInternalDefaults();\n }\n this.beforeDraw();\n this.draw();\n this.invalid = false;\n registry.removeFromInvalidSprites(this);\n this.afterDraw();\n };\n /**\r\n * Invalidates element's position.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.invalidatePosition = function () {\n if (this.disabled || this._isTemplate) {\n return;\n }\n if (!this.positionInvalid) {\n this.positionInvalid = true;\n registry.addToInvalidPositions(this);\n system.requestFrame();\n }\n };\n /**\r\n * Transforms the element.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.validatePosition = function () {\n var pixelX = this.pixelX;\n var pixelY = this.pixelY;\n var dx = this.dx;\n var dy = this.dy;\n var x = pixelX + dx;\n var y = pixelY + dy;\n if (this._updateDisabled) {\n if (this._internalDisabled) {\n this.group.attr({\n \"display\": \"none\"\n });\n } else {\n if (!this.disabled) {\n this.removeSVGAttribute(\"display\");\n }\n }\n this._updateDisabled = false;\n }\n var sizeChanged = this.measure();\n //if (!this.invalid) {\n var prevGroupTransform = this.group.transformString;\n this.group.moveTo({\n x: x,\n y: y\n });\n this.group.rotation = this.rotation;\n if (this.nonScaling) {\n this.group.scale = this.scale / this.globalScale;\n } else {\n this.group.scale = this.scale;\n }\n if (prevGroupTransform != this.group.transformString || sizeChanged) {\n // not yet sure, this is to avoid many transforms=>container layout invalidation on initial buid\n if (prevGroupTransform == null) {\n this.dispatch(\"transformed\");\n } else {\n this.dispatchImmediately(\"transformed\");\n }\n // TODO clear existing positionchanged dispatches ?\n this.dispatch(\"positionchanged\");\n if (this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") {\n this.updateTooltipPosition();\n }\n }\n //}\n // it might happen that x and y changed again, so we only remove if they didn't\n if (pixelX + dx == x && pixelY + dy == y) {\n registry.removeFromInvalidPositions(this);\n this.positionInvalid = false;\n }\n var maskRectangle = this._maskRectangle;\n // todo: verify this\n if (maskRectangle) {\n this._clipElement.moveTo({\n x: maskRectangle.x - pixelX,\n y: maskRectangle.y - pixelY\n });\n }\n };\n /**\r\n * A placeholder method that is called **before** element begins to be drawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.beforeDraw = function () {};\n /**\r\n * A placeholder method that draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.draw = function () {};\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.afterDraw = function () {\n var e_1, _a;\n if (this.isMeasured || this.horizontalCenter !== \"none\" || this.verticalCenter !== \"none\") {\n this.measureElement();\n }\n //this.applyMask();\n if (!this._inited) {\n if (this._adapterO) {\n try {\n // used to be applySVGAttrbutes here, this is more efficient\n for (var _b = __values(this._adapterO.keys()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n switch (key) {\n case \"mask\":\n case \"fill\":\n case \"opacity\":\n case \"fillOpacity\":\n case \"stroke\":\n case \"strokeOpacity\":\n case \"strokeWidth\":\n case \"shapeRendering\":\n case \"strokeDasharray\":\n case \"strokeDashoffset\":\n case \"strokeLinecap\":\n case \"strokeLinejoin\":\n case \"textDecoration\":\n case \"fontSize\":\n case \"fontFamily\":\n case \"fontWeight\":\n //case \"focusable\":\n //case \"tabindex\":\n //case \"role\":\n this[key] = this[key];\n break;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n this.applyFilters();\n this.visible = this.visible;\n this.interactionsEnabled = this.getPropertyValue(\"interactionsEnabled\"); // can't use .interactionsEnabled as it get's parent's\n this._inited = true;\n if (!this.showOnInit) {\n this.appeared = true;\n }\n if (this.hidden) {\n this.hide(0);\n }\n this.applyMask();\n this.dispatch(\"validated\");\n this.dispatch(\"inited\");\n this.dispatchReady();\n } else {\n this.dispatch(\"validated\");\n }\n if (this.showTooltipOn == \"always\") {\n if (this.visible && !this.disabled && !this.__disabled) {\n this.showTooltip();\n } else {\n this.hideTooltip(0);\n }\n }\n };\n /**\r\n * Dispatches `\"ready\"` event. Sprite dispatches it right after `\"inited\"` event.\r\n *\r\n * @ignore\r\n */\n Sprite.prototype.dispatchReady = function () {\n if (!this.isReady()) {\n this._ready = true;\n this.dispatch(\"ready\");\n }\n };\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.reinit = function () {\n this._inited = false;\n this.setState(this.defaultState);\n this.invalidate();\n };\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.handleGlobalScale = function () {\n this.dispatch(\"globalscalechanged\");\n if (this.nonScalingStroke) {\n this.strokeWidth = this.strokeWidth;\n }\n if (this.nonScaling) {\n this.validatePosition();\n }\n this.updateFilterScale();\n };\n /**\r\n * Updates filter properties which might depend on scale\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.updateFilterScale = function () {\n var _this = this;\n $iter.each(this.filters.iterator(), function (filter) {\n filter.scale = _this.globalScale;\n });\n };\n /**\r\n * Removes itself from system's invalid lists.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.removeFromInvalids = function () {\n registry.removeFromInvalidSprites(this);\n registry.removeFromInvalidPositions(this);\n };\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\n Sprite.prototype.copyFrom = function (source) {\n var _this = this;\n _super.prototype.copyFrom.call(this, source);\n this.isMeasured = source.isMeasured;\n this.states.copyFrom(source.states);\n if (source.filters.length > 0) {\n source.filters.each(function (filter) {\n _this.filters.push(filter.clone());\n });\n }\n if (source._adapterO) {\n this.adapter.copyFrom(source._adapterO);\n }\n //helps to avoid calling getter which creates instance\n if (source[\"_interaction\"]) {\n this.interactions.copyFrom(source.interactions);\n }\n if (source[\"_plugins\"]) {\n this.plugins.copyFrom(source.plugins);\n }\n this.configField = source.configField;\n this.applyOnClones = source.applyOnClones;\n // this.numberFormatter = source.numberFormatter; // todo: this creates loose number formatter and copies it to all clones. somehow we need to know if source had numberFormatter explicitly created and not just because a getter was called.\n //this.mask = source.mask; need to think about this, generally this causes a lot of problems\n this.disabled = source.disabled;\n this.virtualParent = source.virtualParent;\n this.exportable = source.exportable;\n //@todo: create tooltip if it's on source but not on this?\n //const tooltip = this._tooltip;\n //if (tooltip) {\n //\ttooltip.copyFrom(source.tooltip);\n //}\n if (source._tooltip) {\n if (this._tooltip) {\n this._tooltip.copyFrom(source.tooltip);\n } else {\n if (source.cloneTooltip) {\n this.tooltip = source.tooltip.clone();\n } else {\n this._tooltip = source.tooltip;\n }\n }\n }\n //if ((source)[\"_tooltip\"] && !this._tooltip) {\n //\tthis._tooltip = (source)[\"_tooltip\"];\n //}\n this._showSystemTooltip = source.showSystemTooltip;\n $utils.copyProperties(source.propertyFields, this.propertyFields);\n $utils.copyProperties(source.properties, this);\n if (source.fillModifier) {\n this.fillModifier = source.fillModifier.clone();\n }\n if (source.strokeModifier) {\n this.strokeModifier = source.strokeModifier.clone();\n }\n if (source.focusFilter) {\n this.focusFilter = source.focusFilter.clone();\n }\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n Sprite.prototype.dispose = function () {\n if (!this.isDisposed()) {\n if (this.showTooltipOn == \"always\" && this.tooltip) {\n this.tooltip.hide();\n }\n this.dispatchImmediately(\"beforedisposed\");\n if (this.isBaseSprite) {\n if (this.htmlContainer) {\n while (this.htmlContainer.childNodes.length > 0) {\n this.htmlContainer.removeChild(this.htmlContainer.firstChild);\n }\n }\n this.isBaseSprite = false;\n }\n _super.prototype.dispose.call(this);\n // Clear adapters\n if (this._adapterO) {\n this._adapterO.clear();\n }\n if (this.applyOnClones) {\n if (this._clones) {\n for (var i = this._clones.length - 1; i >= 0; i--) {\n var clone = this._clones.getIndex(i);\n clone.dispose();\n }\n }\n }\n if (this._svgContainer) {\n this._svgContainer.dispose();\n }\n if (this._interactionDisposer) {\n this._interactionDisposer.dispose();\n this._interactionDisposer = undefined;\n }\n if (this._urlDisposer) {\n this._urlDisposer.dispose();\n }\n this.removeFromInvalids();\n if (this.element) {\n this.element.dispose();\n }\n if (this.group) {\n this.group.dispose();\n }\n if (this._numberFormatter) {\n this._numberFormatter.dispose();\n }\n if (this._focusFilter) {\n this._focusFilter.dispose();\n }\n var stroke = this.stroke;\n if (stroke && !(stroke instanceof Color) && stroke.dispose) {\n if (this.clonedFrom && this.clonedFrom.stroke == stroke) {\n // do nothing\n } else {\n stroke.dispose();\n }\n }\n // TODO a bit hacky\n var fill = this.fill;\n if (fill && !(fill instanceof Color) && fill.dispose) {\n if (this.clonedFrom && this.clonedFrom.fill == fill) {\n // do nothing\n } else {\n fill.dispose();\n }\n }\n // remove from map\n if ($type.hasValue(this.id)) {\n this.map.removeKey(this.id);\n }\n this.parent = undefined;\n if (this._filters) {\n while (this._filters.length > 0) {\n var filter = this._filters.getIndex(0);\n filter.dispose();\n this._filters.removeValue(filter);\n }\n }\n this._alwaysShowDisposers = undefined;\n }\n };\n Object.defineProperty(Sprite.prototype, \"isTemplate\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Is template?\r\n */\n get: function () {\n return this._isTemplate;\n },\n /**\r\n * Indicates if this element is a \"template\".\r\n *\r\n * Template Sprites act only as a holders for config for other \"real\"\r\n * elements to be cloned from.\r\n *\r\n * Templates are treated differently, as they are not validated, redrawn, or\r\n * otherwise are processed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Is template?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this._isTemplate != value) {\n this._isTemplate = value;\n if (this instanceof Container) {\n $iter.each(this.children.iterator(), function (child) {\n child.isTemplate = value;\n });\n }\n if (value) {\n this.parent = this._parent;\n this.removeFromInvalids();\n } else {\n this.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"showSystemTooltip\", {\n /**\r\n * @return Show system tooltip?\r\n */\n get: function () {\n if (!$type.hasValue(this._showSystemTooltip)) {\n if (this.virtualParent) {\n return this.virtualParent.showSystemTooltip;\n } else if (this._parent) {\n return this._parent.showSystemTooltip;\n } else {\n return false;\n }\n }\n return this._showSystemTooltip;\n },\n /**\r\n * Indicates whether the element should attempt to construct itself in a way\r\n * so that system tooltip is shown if its `readerTitle` is set.\r\n *\r\n * @param value Show system tooltip?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this._showSystemTooltip != value) {\n this._showSystemTooltip = value;\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"topParent\", {\n /**\r\n * ==========================================================================\r\n * HIERARCHY AND STRUCTURE RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Sprites's top-level [[Container]].\r\n *\r\n * Please note that in most cases it won't be the chart element.\r\n *\r\n * To access base chart element, use `baseSprite` instead.\r\n *\r\n * @return Top-level ascendant\r\n */\n get: function () {\n if (this._topParent) {\n return this._topParent;\n } else {\n if (this._parent) {\n return this._parent.topParent;\n }\n }\n },\n /**\r\n * @ignore\r\n * @param value {Container} top parent of a sprite\r\n */\n set: function (value) {\n this._topParent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"parent\", {\n /**\r\n * @return Parent container\r\n */\n get: function () {\n return this._parent;\n },\n /**\r\n * Elements' parent [[Container]].\r\n *\r\n * @param parent Parent container\r\n */\n set: function (parent) {\n if (this._isTemplate) {\n return;\n }\n // TODO is this needed ?\n $utils.used(this.paper);\n var oldParent = this._parent;\n if (oldParent != parent) {\n if (oldParent) {\n oldParent.children.removeValue(this);\n }\n this._parent = parent;\n if (parent) {\n this.topParent = parent.topParent;\n if (parent.isTemplate) {\n this.isTemplate = true;\n }\n this.baseId = parent.baseId;\n parent.children.push(this);\n // insert handler at Container invalidates + invalidatesLayout + adds to group\n if (this._tooltip && !this._tooltipContainer) {\n this._tooltip.parent = parent.tooltipContainer;\n }\n if (!this._dataItem) {\n this.dataItem = parent.dataItem;\n }\n this.handleAlwaysShowTooltip();\n if (this.dataItem) {\n // No need to apply accessibility if there's no data item\n // The whole reason of applying it here is to populate data\n // placesholders, and if tehre's no data item, it won't work anyway\n this.applyAccessibility();\n }\n this.dispatchImmediately(\"parentset\");\n } else {\n this.topParent = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n Sprite.prototype.handleAlwaysShow = function () {\n this.showTooltip();\n };\n /**\r\n * @ignore\r\n */\n Sprite.prototype.handleAlwaysShowTooltip = function () {\n var sprite = this;\n var oldDisposers = this._alwaysShowDisposers;\n if (oldDisposers) {\n $array.each(oldDisposers, function (oldDisposer) {\n oldDisposer.dispose();\n });\n }\n this._alwaysShowDisposers = [];\n if (this.showTooltipOn == \"always\") {\n while (sprite != undefined) {\n var disposer = sprite.events.on(\"visibilitychanged\", this.handleAlwaysShow, this, false);\n this.addDisposer(disposer);\n this._alwaysShowDisposers.push(disposer);\n sprite = sprite.parent;\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"virtualParent\", {\n /**\r\n * @return Virtual parent\r\n */\n get: function () {\n return this._virtualParent;\n },\n /**\r\n * Element's \"virtual\" parent.\r\n *\r\n * This is required in ordere to maintain proper inheritance (like\r\n * formatters).\r\n *\r\n * Sometimes an element is a \"logical\" parent, even though it's not a direct\r\n * ascendant.\r\n *\r\n * Example: a bullet is not a child of the axis, but it would make sense\r\n * for it to inherit series' formatters.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Virtual parent\r\n */\n set: function (value) {\n this._virtualParent = value;\n if (this.dataItem) {\n // No need to apply accessibility if there's no data item\n // The whole reason of applying it here is to populate data\n // placesholders, and if tehre's no data item, it won't work anyway\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Moves `` to correct place in DOM.\r\n *\r\n * Some elements are initially created in \"ghost\" container. When moving\r\n * those into proper place in DOM, their respective `` need to be moved\r\n * as well.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.appendDefs = function () {\n if (this.filterElement) {\n this.paper.appendDef(this.filterElement);\n }\n var fill = this.fill;\n if (fill && fill.element) {\n this.paper.appendDef(fill.element);\n }\n var stroke = this.stroke;\n if (stroke && stroke.element) {\n this.paper.appendDef(stroke.element);\n }\n if (this.fillModifier && this.fill instanceof Color) {\n var fill_1 = this.fillModifier.modify(this.fill);\n if (fill_1 && fill_1.element) {\n this.paper.appendDef(fill_1.element);\n }\n }\n if (this.strokeModifier && this.stroke instanceof Color) {\n var stroke_1 = this.strokeModifier.modify(this.stroke);\n if (stroke_1 && stroke_1.element) {\n this.paper.appendDef(stroke_1.element);\n }\n }\n if (this._clipPath) {\n this.paper.appendDef(this._clipPath);\n }\n if (this._exportable === false) {\n this.exportable = false;\n }\n };\n Object.defineProperty(Sprite.prototype, \"map\", {\n /**\r\n * Returns a [[Dictionary]] which maps object ids with their respective\r\n * objects.\r\n *\r\n * Can be used to retrieve any object by id, e.g.:\r\n *\r\n * ```TypeScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n * ```JavaScript\r\n * console.log(mySprite.map.getKey(\"myid\"));\r\n * ```\r\n *\r\n * @return Map collection\r\n */\n get: function () {\n var top = this.topParent;\n if (top) {\n return top.map;\n } else if (!this._map) {\n this._map = new Dictionary();\n }\n return this._map;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"delayedMap\", {\n /**\r\n * @ignore\r\n * @return Map collection\r\n */\n get: function () {\n var top = this.topParent;\n if (top) {\n return top.delayedMap;\n } else if (!this._delayedMap) {\n this._delayedMap = new Dictionary();\n }\n return this._delayedMap;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"id\", {\n /**\r\n * @return ID\r\n */\n get: function () {\n return this._id;\n },\n /**\r\n * Element's user-defined ID.\r\n *\r\n * Will throw an Error if there already is an object with the same ID.\r\n *\r\n * Please note that above check will be performed withing the scope of the\r\n * current chart instance. It will not do checks across other chart instances\r\n * or in globally in DOM.\r\n *\r\n * Make sure the IDs are unique.\r\n *\r\n * @param value ID\r\n */\n set: function (value) {\n if (this._id != value) {\n this._id = value;\n if (this.map.hasKey(value)) {\n throw Error(\"Duplicate id (\" + value + \") used on multiple objects.\");\n } else {\n this.map.setKey(value, this);\n }\n if (options.autoSetClassName) {\n this.setClassName();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"dom\", {\n /**\r\n * ==========================================================================\r\n * ELEMENT AND DOM TREE MANIPULATION AND MEASURING\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns DOM element reference associated with this element.\r\n *\r\n * @readonly\r\n * @return DOM element\r\n */\n get: function () {\n return this.group.node;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"paper\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Paper\r\n */\n get: function () {\n if (this._paper) {\n return this._paper;\n } else {\n var parent_2 = this._parent;\n if (parent_2) {\n return parent_2.paper;\n }\n }\n return getGhostPaper();\n },\n /**\r\n * A [[Paper]] instance to place elements on.\r\n *\r\n * If there's no Paper set for this element, it goes up the ascendant tree\r\n * until it finds one.\r\n *\r\n * This method is used by important `addChild()` method, so it's essential\r\n * to have a [[Paper]] instance.\r\n *\r\n * If this element has a separate `htmlContainer` set, it will have a\r\n * [[Paper]] instance itself.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\n set: function (paper) {\n this.setPaper(paper);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\n Sprite.prototype.setPaper = function (paper) {\n var oldPaper = this._paper;\n if (oldPaper != paper) {\n this._paper = paper;\n this.appendDefs();\n return true;\n }\n return false;\n };\n Object.defineProperty(Sprite.prototype, \"htmlContainer\", {\n /**\r\n * @return HTML element\r\n */\n get: function () {\n if (this._htmlContainer) {\n return this._htmlContainer;\n } else {\n var parent_3 = this._parent;\n if (parent_3) {\n return parent_3.htmlContainer;\n }\n }\n },\n /**\r\n * An HTML element to be used when placing wrapper element (`
      `)\r\n * for the whole chart.\r\n *\r\n * This is the same for **all** elements within the same chart.\r\n *\r\n * @param htmlContainer HTML element\r\n */\n set: function (htmlContainer) {\n this._htmlContainer = htmlContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"titleElement\", {\n /**\r\n * Creates (if not yet created) and returns element's `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Title element\r\n */\n get: function () {\n if (!this._titleElement) {\n this._titleElement = this.paper.add(\"title\");\n this.group.add(this._titleElement);\n }\n return this._titleElement;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"descriptionElement\", {\n /**\r\n * Creates (if not yet created) and returns element's `<desc>` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Desc element\r\n */\n get: function () {\n if (!this._descriptionElement) {\n this._descriptionElement = this.paper.add(\"desc\");\n this.group.add(this._descriptionElement);\n }\n return this._descriptionElement;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"filters\", {\n /**\r\n * Returns list of SVG filters (effects) applied to element. If the filter\r\n * list is not yet initilized, creates and returns an empty one.\r\n * Note, not all filters combine well with one another. We recommend using one filter per sprite.\r\n *\r\n * @return List of filters\r\n */\n get: function () {\n if (!this._filters) {\n this._filters = new List();\n // TODO only add certain events ?\n this._disposers.push(this._filters.events.onAll(this.applyFilters, this));\n this._disposers.push(new ListDisposer(this._filters));\n }\n return this._filters;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets required SVG attributes. Must be called every time an element is\r\n * redrawn so that attributes are (re)applied.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.setSVGAttributes = function () {\n this.fill = this.fill;\n this.opacity = this.opacity;\n this.fillOpacity = this.fillOpacity;\n this.stroke = this.stroke;\n this.strokeOpacity = this.strokeOpacity;\n this.shapeRendering = this.shapeRendering;\n this.strokeDasharray = this.strokeDasharray;\n this.strokeDashoffset = this.strokeDashoffset;\n this.strokeLinecap = this.strokeLinecap;\n this.strokeLinejoin = this.strokeLinejoin;\n this.focusable = this.focusable;\n this.tabindex = this.tabindex;\n this.role = this.role;\n };\n /**\r\n * Sets an attribute directly on an SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param attribute Attribute object\r\n */\n Sprite.prototype.setSVGAttribute = function (attribute) {\n this.group.attr(attribute);\n };\n /**\r\n * Removes an attribute directly from SVG element.\r\n *\r\n * @param attribute Attribute key to remove\r\n */\n Sprite.prototype.removeSVGAttribute = function (attribute) {\n this.group.removeAttr(attribute);\n };\n /**\r\n * Sets `class` attribute of the elements SVG node.\r\n *\r\n * Uses `am4core.options.classNamePrefix`.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.setClassName = function () {\n var className = this.className;\n var classNamePrefix = options.classNamePrefix;\n if (this.element) {\n this.element.addClass(classNamePrefix + className);\n }\n this.group.addClass(classNamePrefix + className + \"-group\");\n if ($type.hasValue(this.id)) {\n this.group.addClass(classNamePrefix + this.id);\n }\n if (this.userClassName) {\n this.group.addClass(this.userClassName);\n }\n };\n /**\r\n * Adds an `id` attribute the the element and returns the id.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element's ID\r\n */\n Sprite.prototype.uidAttr = function () {\n this.setSVGAttribute({\n \"id\": this.uid\n });\n return this.uid;\n };\n /**\r\n * [updateClipPath description]\r\n *\r\n * @todo Description\r\n */\n Sprite.prototype.updateClipPath = function () {\n var element = this._clipElement;\n if (element) {\n element.moveTo({\n x: this.mask.pixelX,\n y: this.mask.pixelY\n });\n }\n };\n /**\r\n * @ignore\r\n */\n Sprite.prototype.createClipPath = function () {\n if (!this._clipPath) {\n this._clipPath = this.paper.addGroup(\"clipPath\");\n this.paper.appendDef(this._clipPath);\n this._disposers.push(this._clipPath);\n var id = registry.getUniqueId();\n this._clipPath.attr({\n \"id\": id\n });\n this.group.attr({\n \"clip-path\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\"\n });\n }\n };\n /**\r\n * Applies the mask Sprite.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.applyMask = function () {\n var mask = this.mask;\n if (this._clipPath && mask) {\n // Container\n if (mask instanceof Container) {\n this._clipElement.attr({\n \"width\": $math.max(0, mask.pixelWidth),\n \"height\": $math.max(0, mask.pixelHeight)\n });\n var point = $utils.spritePointToSprite({\n x: mask.pixelX,\n y: mask.pixelY\n }, mask.parent, this);\n this._clipPath.x = point.x;\n this._clipPath.y = point.y;\n }\n // Sprite\n else {\n if (mask.element && mask.element != this._clipElement) {\n this._clipElement = mask.element;\n this._clipPath.add(this._clipElement);\n }\n this._clipPath.scale = mask.scale;\n this._clipPath.x = mask.pixelX;\n this._clipPath.y = mask.pixelY;\n this._clipPath.rotation = mask.rotation;\n }\n }\n };\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.applyFilters = function () {\n var _this = this;\n // we create a separate filter for each sprite as otherwise it would be impossible to animate filter.\n // svg doesn't support multiple filters applied to one element, so we put all the primitives to one filterElement of a sprite.\n if (this._filters && this._filters.length > 0) {\n var width_1 = 100;\n var height_1 = 100;\n if (!this.filterElement) {\n this.filterElement = this.paper.addGroup(\"filter\");\n this._disposers.push(this.filterElement);\n } else {\n this.filterElement.removeChildNodes();\n }\n this.paper.appendDef(this.filterElement);\n var id = \"filter-\" + this.uid;\n this.filterElement.attr({\n \"id\": id\n });\n $iter.each(this.filters.iterator(), function (filter) {\n filter.sprite = _this;\n filter.paper = _this.paper;\n _this.filterElement.attr({\n filterUnits: filter.filterUnits\n });\n filter.appendPrimitives(_this.filterElement);\n if (filter.width > width_1) {\n width_1 = filter.width;\n }\n if (filter.height > height_1) {\n height_1 = filter.height;\n }\n filter.scale = _this.globalScale;\n });\n var w = width_1 + \"%\";\n var h = height_1 + \"%\";\n /* temporarily removed as it is breaking tooltips on Safari @todo come back to this\r\n if (this._measuredHeight <= 1) {\r\n h = height + \"\";\r\n }\r\n if (this._measuredWidth <= 1) {\r\n h = width + \"\";\r\n }*/\n this.filterElement.attr({\n \"width\": w,\n \"height\": h,\n \"x\": -(width_1 - 100) / 2 + \"%\",\n \"y\": -(height_1 - 100) / 2 + \"%\"\n });\n this.group.attr({\n \"filter\": \"url(\\\"\" + $utils.getBaseURI() + id + \"\\\")\"\n });\n } else if (this.filterElement) {\n this.group.removeAttr(\"filter\");\n this.filterElement.removeChildNodes();\n }\n };\n /**\r\n * [removeClipPath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Sprite.prototype.removeClipPath = function () {\n if (this._clipPath) {\n //this._clipPath.dispose();\n this.removeDispose(this._clipPath);\n this._clipPath = undefined;\n }\n };\n /**\r\n * [setElement description]\r\n *\r\n * @ignore\r\n * @todo Description\r\n * @param element [description]\r\n */\n Sprite.prototype.setElement = function (element) {\n this.element = element;\n this.setSVGAttributes();\n this.applyAccessibility();\n };\n Object.defineProperty(Sprite.prototype, \"element\", {\n /**\r\n * @return Element\r\n */\n get: function () {\n return this._element;\n },\n /**\r\n * The main element for this Sprite, usually an SVG `<g>`.\r\n *\r\n * All other sub-elements are created in it.\r\n *\r\n * @param element Element\r\n */\n set: function (element) {\n // Destroy previous element if there was one before\n this.removeElement();\n // Set new element\n this._element = element;\n // Add element to group\n // Since we are adding Element to group, which is already in the\n // `.disposers` it will be removed automatically when Sprite is disposed\n // of\n this.group.add(element);\n if (element.node instanceof SVGPathElement) {\n this._isPath = true;\n }\n // This is needed if someone is setting element not in draw method but\n // from outside\n if (!this.invalid) {\n this.validate();\n }\n if (options.autoSetClassName) {\n this.setClassName();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"svgContainer\", {\n /**\r\n * HTML container (`<div>`) which is used to place chart's `<svg>` element\r\n * in.\r\n *\r\n * @return Container for chart elements\r\n */\n get: function () {\n if (this._svgContainer) {\n return this._svgContainer;\n } else if (this._parent) {\n return this._parent.svgContainer;\n }\n },\n /**\r\n * Sets HTML container to add SVG and other chart elements to.\r\n *\r\n * @param svgContainer Container for chart elements\r\n */\n set: function (svgContainer) {\n this._svgContainer = svgContainer;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Measures main element.\r\n *\r\n * Saves measurements into private `_bbox` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.measureElement = function () {\n if (this.element) {\n if (this.definedBBox) {\n this._bbox = this.definedBBox;\n } else {\n var svgBBox = this.element.getBBox();\n this._bbox = {\n x: svgBBox.x,\n y: svgBBox.y,\n width: svgBBox.width,\n height: svgBBox.height\n };\n }\n }\n };\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.updateCenter = function () {\n if (this.element) {\n var prevElementTransform = this.element.transformString;\n var bbox = this.bbox;\n var ex = 0;\n var ey = 0;\n var elementX = bbox.x;\n var elementY = bbox.y;\n var elementWidth = bbox.width;\n var elementHeigth = bbox.height;\n var pixelPaddingLeft = this.pixelPaddingLeft;\n var pixelPaddingRight = this.pixelPaddingRight;\n var pixelPaddingTop = this.pixelPaddingTop;\n var pixelPaddingBottom = this.pixelPaddingBottom;\n // add padding to the measured size\n var measuredWidth = $math.max(elementWidth + pixelPaddingLeft + pixelPaddingRight, this.pixelWidth);\n var measuredHeight = $math.max(elementHeigth + pixelPaddingTop + pixelPaddingBottom, this.pixelHeight);\n // extremes\n var left = bbox.x;\n var right = bbox.x + measuredWidth;\n var top_1 = bbox.y;\n var bottom = bbox.y + measuredHeight;\n var horizontalCenter = this.horizontalCenter;\n var verticalCenter = this.verticalCenter;\n switch (horizontalCenter) {\n case \"none\":\n ex = elementX + pixelPaddingLeft;\n break;\n case \"left\":\n ex = pixelPaddingLeft;\n break;\n case \"middle\":\n ex = pixelPaddingLeft - (elementWidth + pixelPaddingRight + pixelPaddingLeft) / 2;\n break;\n case \"right\":\n ex = -pixelPaddingRight - elementWidth;\n break;\n }\n switch (verticalCenter) {\n case \"none\":\n ey = elementY + pixelPaddingTop;\n break;\n case \"top\":\n ey = pixelPaddingTop;\n break;\n case \"middle\":\n ey = pixelPaddingTop - (elementHeigth + pixelPaddingBottom + pixelPaddingTop) / 2;\n break;\n case \"bottom\":\n ey = -pixelPaddingBottom - elementHeigth;\n break;\n }\n this._measuredHeight = measuredHeight;\n this._measuredWidth = measuredWidth;\n var x = $math.round(ex - elementX, this._positionPrecision, true);\n var y = $math.round(ey - elementY, this._positionPrecision, true);\n this.ex = x - pixelPaddingLeft;\n this.ey = y - pixelPaddingTop;\n this.maxLeft = left + x - pixelPaddingLeft;\n this.maxRight = right + x - pixelPaddingLeft;\n this.maxTop = top_1 + y - pixelPaddingTop;\n this.maxBottom = bottom + y - pixelPaddingTop;\n if (this.pixelPerfect && options.pixelPerfectPrecision == 0) {\n x -= 0.5;\n y -= 0.5;\n }\n this.element.moveTo({\n x: x,\n y: y\n });\n if (prevElementTransform != this.element.transformString) {\n this.dispatchImmediately(\"transformed\");\n }\n }\n };\n /**\r\n * Measures the whole element.\r\n *\r\n * Returns `true` if the size has changed from the last measurement.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Did the size changed from the last measurement?\r\n */\n Sprite.prototype.measure = function () {\n this.updateCenter();\n var measuredWidth = this._measuredWidth;\n var measuredHeight = this._measuredHeight;\n // extremes\n var left = this.maxLeft;\n var right = this.maxRight;\n var top = this.maxTop;\n var bottom = this.maxBottom;\n // non-parent wise size\n this._measuredWidthSelf = measuredWidth;\n this._measuredHeightSelf = measuredHeight;\n var positionPrecision = this._positionPrecision;\n this.maxLeftSelf = this.maxLeft;\n this.maxRightSelf = this.maxRight;\n this.maxTopSelf = this.maxTop;\n this.maxBottomSelf = this.maxBottom;\n // if a sprite is rotated or scaled, calculate measured size after transformations\n if (this.rotation !== 0 || this.scale !== 1 || this.nonScaling) {\n // not good to handleGlobalScale here.\n if (this.nonScalingStroke) {\n this.strokeWidth = this.strokeWidth;\n }\n var svg = this.paper.svg;\n var matrix = svg.createSVGMatrix();\n var rotation = this.rotation;\n var scale = this.scale;\n if (this.nonScaling) {\n scale = this.scale / this.globalScale;\n }\n matrix.a = $math.cos(rotation) * scale;\n matrix.c = -$math.sin(rotation) * scale;\n matrix.e = 0;\n matrix.b = $math.sin(rotation) * scale;\n matrix.d = $math.cos(rotation) * scale;\n matrix.f = 0;\n var p1 = svg.createSVGPoint();\n p1.x = left;\n p1.y = top;\n var p2 = svg.createSVGPoint();\n p2.x = right;\n p2.y = top;\n var p3 = svg.createSVGPoint();\n p3.x = right;\n p3.y = bottom;\n var p4 = svg.createSVGPoint();\n p4.x = left;\n p4.y = bottom;\n var pt1 = p1.matrixTransform(matrix);\n var pt2 = p2.matrixTransform(matrix);\n var pt3 = p3.matrixTransform(matrix);\n var pt4 = p4.matrixTransform(matrix);\n left = Math.min(pt1.x, pt2.x, pt3.x, pt4.x);\n right = Math.max(pt1.x, pt2.x, pt3.x, pt4.x);\n top = Math.min(pt1.y, pt2.y, pt3.y, pt4.y);\n bottom = Math.max(pt1.y, pt2.y, pt3.y, pt4.y);\n measuredWidth = right - left;\n measuredHeight = bottom - top;\n this.maxLeft = $math.round(left, positionPrecision, true);\n this.maxRight = $math.round(right, positionPrecision, true);\n this.maxTop = $math.round(top, positionPrecision, true);\n this.maxBottom = $math.round(bottom, positionPrecision, true);\n }\n this._measuredWidth = $math.round(measuredWidth, positionPrecision, true);\n this._measuredHeight = $math.round(measuredHeight, positionPrecision, true);\n // dispatch event\n if (this._measuredWidth != this._prevMeasuredWidth || this._measuredHeight != this._prevMeasuredHeight) {\n this._prevMeasuredHeight = this._measuredHeight;\n this._prevMeasuredWidth = this._measuredWidth;\n // TODO clear existing sizechanged dispatches ?\n this.dispatch(\"sizechanged\");\n if ((this.isHover || this.showTooltipOn == \"hit\" || this.showTooltipOn == \"always\") && this.tooltip && this.tooltip.visible && ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML))) {\n this.updateTooltipPosition();\n }\n return true;\n }\n return false;\n };\n /**\r\n * Insert this element before sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\n Sprite.prototype.insertBefore = function (sprite) {\n var parent = this._parent;\n if (parent) {\n var index = parent.children.indexOf(sprite);\n if (index !== -1) {\n parent.children.moveValue(this, index);\n parent.sortChildren();\n }\n }\n return this;\n };\n /**\r\n * Insert this element after sibling element.\r\n *\r\n * @param sprite Target element\r\n * @return This element\r\n */\n Sprite.prototype.insertAfter = function (sprite) {\n var parent = this._parent;\n if (parent) {\n var index = parent.children.indexOf(sprite);\n if (index !== -1) {\n parent.children.moveValue(this, index + 1);\n parent.sortChildren();\n }\n }\n return this;\n };\n /**\r\n * Removes the main SVG element.\r\n *\r\n * This does not destroy the whole Sprite element. To do that use\r\n * `dispose()` instead.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.removeElement = function () {\n // remove visual element\n if (this._element) {\n this.removeDispose(this._element);\n this._element = undefined;\n }\n };\n /**\r\n * Returns relative (percent) value of the X coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return Relative value\r\n */\n Sprite.prototype.getRelativeX = function (value) {\n if (value instanceof Percent) {\n return value.value;\n } else if (this._parent) {\n return value / this._parent.innerWidth;\n }\n return 0;\n };\n /**\r\n * Returns relative (percent) value of the Y coordindate within this element.\r\n *\r\n * A relative value is a hundredth of a percent. So 100% would result in a 1\r\n * as relative value.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Relative value\r\n */\n Sprite.prototype.getRelativeY = function (value) {\n if (value instanceof Percent) {\n return value.value;\n } else if (this._parent) {\n return value / this._parent.innerHeight;\n }\n return 0;\n };\n /**\r\n * Returns an X coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative X coordinate\r\n * @return X coordinate in pixels\r\n */\n Sprite.prototype.getPixelX = function (value) {\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\n // all the time and this would result chain of the same actions and will slow down the system a lot\n var pixel = 0;\n if ($type.isNumber(value)) {\n pixel = value;\n } else if (value instanceof Percent) {\n var relative = value.value;\n if (this._parent) {\n pixel = $math.round(this._parent.innerWidth * relative, this._positionPrecision, true);\n }\n }\n return pixel;\n };\n /**\r\n * Returns an Y coordinate in pixel within the element.\r\n *\r\n * If number is passed in as parameter, the same number will be returned\r\n * back.\r\n *\r\n * If [[Percent]] is passed in, it will be recalculated to pixels.\r\n *\r\n * @param value Absolute or relative Y coordinate\r\n * @return Y coordinate in pixels\r\n */\n Sprite.prototype.getPixelY = function (value) {\n // we don't use $utils.valueToRelative as this would mean that we should access parent.innerWidth\n // all the time and this would result chain of the same actions and will slow down the system a lot\n var pixel = 0;\n if ($type.isNumber(value)) {\n pixel = value;\n } else if (value instanceof Percent) {\n var relative = value.value;\n if (this._parent) {\n pixel = $math.round(this._parent.innerHeight * relative, this._positionPrecision, true);\n }\n }\n return pixel;\n };\n /**\r\n * Moves the element to a specified coordinates.\r\n *\r\n * Using this method is preferred method of moving element, as it saves some\r\n * CPU processing power over setting `x` and `y` properties separately.\r\n *\r\n * The method respects element's center settings. The element will be\r\n * positioned so that `point` coordinates come in whatever \"center\" of the\r\n * element is, as set in `horizontalCenter` and `verticalCenter`.\r\n *\r\n * Besides moving the element, you can also at the same time scale and\r\n * rotate the element.\r\n *\r\n * @param point New coordinates\r\n * @param rotation New rotation\r\n * @param scale New Scale\r\n */\n Sprite.prototype.moveTo = function (point, rotation, scale, isDragged) {\n if (this.isDragged && !isDragged) {\n return;\n }\n if (point) {\n if ($type.isNumber(point.x)) {\n this.setPropertyValue(\"x\", $math.round(point.x, this._positionPrecision, true));\n }\n if ($type.isNumber(point.y)) {\n this.setPropertyValue(\"y\", $math.round(point.y, this._positionPrecision, true));\n }\n }\n if ($type.isNumber(rotation)) {\n this.rotation = rotation;\n }\n if ($type.isNumber(scale)) {\n this.scale = scale;\n }\n // must leave this\n this.invalidatePosition();\n };\n Object.defineProperty(Sprite.prototype, \"mask\", {\n /**\r\n * Returns [[Sprite]] element currently used as mask for this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return A [[Sprite]] to use as mask\r\n */\n get: function () {\n if (!this._adapterO) {\n return this._mask.get();\n } else {\n return this._adapterO.apply(\"mask\", this._mask.get());\n }\n },\n /**\r\n * Sets another [[Sprite]] element as this elements mask.\r\n *\r\n * @ignore Exclude from docs\r\n * @param mask A [[Sprite]] to use as mask\r\n */\n set: function (mask) {\n var _this = this;\n if (this._mask.get() !== mask) {\n // this is good\n if (mask) {\n this.createClipPath();\n if (!(mask instanceof Container)) {\n mask.isMeasured = false;\n if (mask.element) {\n this._clipElement = mask.element;\n }\n } else {\n this._clipElement = this.paper.add(\"rect\");\n }\n if (this._clipElement) {\n this._clipPath.add(this._clipElement);\n }\n this._mask.set(mask, new MultiDisposer([\n //mask.addEventListener(SpriteEvent.TRANSFORMED, this.applyMask, false, this);\n mask.events.on(\"maxsizechanged\", function () {\n if (_this.inited) {\n _this.applyMask();\n }\n }, undefined, false), mask.events.on(\"validated\", this.applyMask, this, false), mask.events.on(\"positionchanged\", this.applyMask, this, false)]));\n this.applyMask();\n } else {\n this._mask.reset();\n this.group.removeAttr(\"clip-path\");\n this.removeClipPath();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"maskRectangle\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Mask Rectangle\r\n */\n get: function () {\n return this._maskRectangle;\n },\n // you can set IRectangle as a mask instead o a sprite. Note, the changes of the object won't be monitored\n /**\r\n * Instead of creating a [[Sprite]] for mask, you can just use a\r\n * [[Rectangle]] by setting this accessor.\r\n *\r\n * Please note that the element will not monitor any changes to the mask\r\n * rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Mask Rectangle\r\n */\n set: function (rect) {\n if (rect) {\n this.createClipPath();\n if (!this._clipElement) {\n this._clipElement = this.paper.add(\"rect\");\n this._clipPath.add(this._clipElement);\n }\n this._clipElement.attr({\n \"width\": rect.width,\n \"height\": rect.height\n });\n } else {\n this.removeClipPath();\n this._clipElement = undefined;\n }\n this._maskRectangle = rect;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isMeasured\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Was element already measured?\r\n */\n get: function () {\n return this._isMeasured;\n },\n /**\r\n * Indicates if this element was already measured.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Was element already measured?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (!value) {\n this._measuredWidth = 0;\n this._measuredHeight = 0;\n //this._pixelHeight = 0;\n //this._pixelWidth = 0;\n }\n if (this._isMeasured != value) {\n this._isMeasured = value;\n this.invalidatePosition();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if the this element has any of its parts overlapping with another\r\n * element.\r\n *\r\n * @todo Description (review)\r\n * @param sprite Second element to test again\r\n * @return Overlapping?\r\n */\n Sprite.prototype.hitTest = function (sprite) {\n // validate, otherwise we will not know measuredWidth and measuredHeight\n if (this.invalid) {\n this.validate();\n }\n if (sprite.invalid) {\n sprite.validate();\n }\n var ax1 = this.pixelX + this.maxLeft;\n var ay1 = this.pixelY + this.maxTop;\n var ax2 = ax1 + this.maxRight;\n var ay2 = ay1 + this.maxBottom;\n var bx1 = sprite.pixelX + sprite.maxLeft;\n var by1 = sprite.pixelY + sprite.maxTop;\n var bx2 = bx1 + sprite.maxRight;\n var by2 = by1 + sprite.maxBottom;\n return !(bx1 > ax2 || bx2 < ax1 || by1 > ay2 || by2 < ay1);\n };\n Object.defineProperty(Sprite.prototype, \"inited\", {\n /**\r\n * ==========================================================================\r\n * STATE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns `true` if Sprite has already finished initializing.\r\n *\r\n * @return Initialized?\r\n */\n get: function () {\n return this._inited;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns `true` if Sprite has already finished initializing and is ready.\r\n *\r\n * If this object is a [[Container]] it will wait for all of its children\r\n * are ready before becoming ready itself and firing a `\"ready\"` event.\r\n *\r\n * @return is ready?\r\n */\n Sprite.prototype.isReady = function () {\n return this._ready;\n };\n Object.defineProperty(Sprite.prototype, \"states\", {\n /**\r\n * Returns a collection of element's available [[SpriteState]] entries.\r\n *\r\n * @see {@link SpriteState}\r\n * @return States\r\n */\n get: function () {\n if (!this._states) {\n var state = new SpriteState();\n // works\n this._states = new DictionaryTemplate(state);\n // TODO what about removeKey ?\n this._disposers.push(this._states.events.on(\"insertKey\", this.processState, this, false));\n this._disposers.push(this._states.events.on(\"setKey\", this.processState, this, false));\n this._disposers.push(new DictionaryDisposer(this._states));\n this._disposers.push(state);\n }\n return this._states;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"hiddenState\", {\n /**\r\n * Returns a [[SpriteState]] object for \"hidden\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"hidden\")`.\r\n *\r\n * @return Hidden state\r\n */\n get: function () {\n if (!this.states.getKey(\"hidden\")) {\n var hiddenState = this.states.create(\"hidden\");\n hiddenState.properties.opacity = 0;\n hiddenState.properties.visible = false;\n }\n return this.states.getKey(\"hidden\");\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"defaultState\", {\n /**\r\n * Returns a [[SpriteState]] object for \"default\" state.\r\n *\r\n * This is a shortcut to `this.states.getKey(\"default\")`.\r\n *\r\n * @return Hidden state\r\n */\n get: function () {\n if (!this.states.getKey(\"default\")) {\n var defaultState = this.states.create(\"default\");\n defaultState.properties.opacity = 1;\n }\n return this.states.getKey(\"default\");\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if some key states are defined and updates Sprite properties\r\n * accordingly.\r\n *\r\n * For example if there's a state \"down\" defined for Sprite, we automatically\r\n * make it \"clickable\".\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event which caused state list update\r\n */\n Sprite.prototype.processState = function (event) {\n var state = event.newValue;\n state.sprite = this;\n state.name = event.key;\n if (this.states.hasKey(\"hover\") || this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText))) {\n this.hoverable = true;\n }\n if (this.states.hasKey(\"down\") || this.showTooltipOn == \"hover\" && ($type.hasValue(this.tooltipHTML) || $type.hasValue(this.tooltipText))) {\n this.clickable = true;\n }\n if (this.states.hasKey(\"focus\")) {\n this.focusable = true;\n }\n // Propagate the new state to clones\n if (this.applyOnClones) {\n var clones = this.clones.values;\n var length_1 = clones.length;\n for (var i = 0; i < length_1; ++i) {\n var clone = clones[i];\n if (!clone.isDisposed()) {\n clone.states.setKey(state.name, state);\n }\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"animations\", {\n /**\r\n * Returns a list elements's animations currently being played.\r\n *\r\n * If the list has not been initialized it is created.\r\n *\r\n * @return List of animations\r\n */\n get: function () {\n if (!this._animations) {\n this._animations = [];\n this._disposers.push(new AnimationDisposer(this._animations));\n }\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts element's local coordinates to the coordinates within the main\r\n * chart container.\r\n *\r\n * @param point Local point\r\n * @return Global point\r\n */\n Sprite.prototype.getSvgPoint = function (point) {\n try {\n // Calculate SVG point\n var bbox = this.htmlContainer.getBoundingClientRect();\n return {\n \"x\": point.x - bbox.left,\n \"y\": point.y - bbox.top\n };\n } catch (e) {\n return point;\n }\n };\n /**\r\n * Creates and starts an [[Animation]] with given `animationOptions`.\r\n *\r\n * @see {@link Animation} for additional information about available options\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\n Sprite.prototype.animate = function (animationOptions, duration, easing) {\n return new Animation(this, animationOptions, duration, easing).start();\n };\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, i.e. are in the `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\n Sprite.prototype.setState = function (value, transitionDuration, easing) {\n var state;\n if (value instanceof SpriteState) {\n this.states.setKey(value.name, value);\n state = value;\n } else {\n state = this.states.getKey(value);\n if (!state) {\n return;\n }\n }\n // stop previous transition\n // not good - foe expample, we are animating to some \"active\" state and in them middle \"hover\" state happens. then \"active\" stat won't be applied\n //if (this._transition) {\n //this._transition.stop();\n //}\n if (state.name == \"hover\") {\n if (this.isHidden) {\n return;\n }\n this.isHover = true;\n }\n if (state.name == \"hidden\") {\n this.isHiding = true;\n } else {\n if (!this.visible) {\n this.setVisibility(state.properties.visible || this.defaultState.properties.visible);\n }\n }\n if (state.name == \"active\") {\n this.isActive = true;\n }\n // we do not set isActive = false here if it's not active, but container does that if setStateOnChildren = true\n if (!$type.isNumber(transitionDuration)) {\n transitionDuration = state.transitionDuration;\n }\n if (!$type.hasValue(easing)) {\n easing = state.transitionEasing;\n }\n return this.transitTo(state, transitionDuration, easing);\n };\n /**\r\n * Applies proper state based on the condition of the element. A condition is\r\n * deducted in this order:\r\n * * \"hover\" if Sprite has currently any pointers over it\r\n * * \"down\" if Sprite has any pointers (touch or mouse) currently pressed over it\r\n * * \"focus\" if Sprite has currently got focus (accessibility)\r\n * * \"hidden\" if Sprite is currently hidden\r\n *\r\n * Returns an [[Animation]] object, which is handling gradual transition from\r\n * current values of properties, to the new target state(s).\r\n *\r\n * @param duration Duration for the animation (ms)\r\n * @return [[Animation]] object which is handling the transition\r\n */\n Sprite.prototype.applyCurrentState = function (duration) {\n //if (!this.isHidden) { // this was done for hover state not to take effect if \"hidden\" is actually visible, need to think about it.\n var animation = this.setState(this.defaultState, duration);\n if (this.isHover) {\n animation = this.setState(\"hover\", duration);\n }\n if (this.isDown && this.interactions.downPointers.length) {\n animation = this.setState(\"down\", duration);\n }\n this.isFocused = this.isFocused;\n if (this.isActive) {\n animation = this.setState(\"active\", duration);\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\n animation = this.setState(\"hoverActive\", duration);\n }\n }\n return animation;\n //}\n };\n /**\r\n * Starts an [[Animation]] of the properties to specific values as they are\r\n * set in `state`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param state Target State\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Transition Animation\r\n */\n Sprite.prototype.transitTo = function (state, duration, easing) {\n var _this = this;\n // Init\n var options = [],\n propValues = state.allValues,\n transition;\n // todo: do this for numeric/color properties only?\n // @todo use state.getPropertyValue instead\n $object.each(propValues, function (propertyName, finalValue) {\n var currentValue = _this[propertyName];\n // save current value to default state. this solves a big problem where values must be set both on sprite and default state\n if (finalValue != currentValue && _this.defaultState.properties[propertyName] == undefined) {\n _this.defaultState.properties[propertyName] = currentValue;\n }\n //if (finalValue != currentValue && $type.hasValue(finalValue)) {\n if (finalValue != \"__unset\") {\n var option = {\n from: currentValue,\n to: finalValue,\n property: propertyName\n };\n options.push(option);\n }\n });\n if (options.length > 0) {\n transition = this.animate(options, duration, easing);\n if (transition && !transition.isFinished()) {\n // TODO should this use events.once ?\n // TODO push onto _disposers array ?\n this._disposers.push(transition.events.on(\"animationended\", function () {\n _this.dispatchImmediately(\"transitionended\");\n }));\n } else {\n this.dispatchImmediately(\"transitionended\");\n }\n }\n // apply filters if set\n if (state.filters.length > 0) {\n var newFilters_1 = [];\n // check for the same filters\n $iter.each(state.filters.iterator(), function (stateFilter) {\n var newFilter = stateFilter.clone();\n newFilters_1.push(newFilter);\n var animationOptions = [];\n $iter.each(_this.filters.iterator(), function (currentFilter) {\n // if we have the same filters\n if (currentFilter.className == newFilter.className) {\n if (!$iter.contains(_this.defaultState.filters.iterator(), function (x) {\n return x.className === newFilter.className;\n })) {\n _this.defaultState.filters.push(currentFilter);\n }\n $object.each(newFilter.properties, function (propertyName, newValue) {\n var currentValue = currentFilter.properties[propertyName];\n // if values are not the same, push to animation options array\n if (currentValue != newValue) {\n animationOptions.push({\n property: propertyName,\n from: currentValue,\n to: newValue\n });\n }\n });\n }\n });\n // animate to new value\n newFilter.animate(animationOptions, duration, easing);\n });\n this.filters.clear();\n this.filters.pushAll(newFilters_1);\n }\n return transition;\n };\n /**\r\n * Returns `true` if Sprite is currently transiting from one state/value to\r\n * another.\r\n *\r\n * @return Is in transition?\r\n */\n Sprite.prototype.isInTransition = function () {\n return this.animations.length > 0;\n };\n Object.defineProperty(Sprite.prototype, \"isHover\", {\n /**\r\n * @return Is hovered?\r\n */\n get: function () {\n if (this.isInteractive()) {\n return this.interactions.isHover;\n }\n return false;\n },\n /**\r\n * Indicates if this element has a mouse pointer currently hovering\r\n * over it, or if it has any touch pointers pressed on it.\r\n *\r\n * You can force element to be \"hovered\" manually, by setting this property\r\n * to `true`.\r\n *\r\n * @param value Is hovered?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (value !== this.isHover) {\n if (this.isInteractive()) {\n this.interactions.isHover = value;\n if (value) {\n this.handleOver();\n } else {\n this.interactions.isRealHover = false;\n this.handleOut();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isDragged\", {\n /**\r\n * Returns indicator if this element is being dragged at the moment.\r\n *\r\n * @return Is dragged?\r\n */\n get: function () {\n return this._isDragged;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isResized\", {\n /**\r\n * Returns indicator if this element is being resized at the moment.\r\n *\r\n * @return Is resized?\r\n */\n get: function () {\n return this._isResized;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isDown\", {\n /**\r\n * @return Is down?\r\n */\n get: function () {\n if (this.isInteractive()) {\n return this.interactions.isDown;\n }\n return false;\n },\n /**\r\n * Indicates if this element has any pointers (mouse or touch) pressing down\r\n * on it.\r\n *\r\n * @param value Is down?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.isInteractive() && this.isDown != value) {\n this.interactions.isDown = value;\n if (value) {\n this.handleDown();\n } else {\n this.handleUp();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isFocused\", {\n /**\r\n * @return Is focused?\r\n */\n get: function () {\n if (this.isInteractive()) {\n return this.interactions.isFocused;\n }\n return false;\n },\n /**\r\n * Indicates if this element is focused (possibly by tab navigation).\r\n *\r\n * @param value Is focused?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.focusable && this.isFocused != value) {\n if (this.isInteractive()) {\n this.interactions.isFocused = value;\n if (value === true) {\n this.handleFocus();\n } else {\n this.handleBlur();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"isActive\", {\n /**\r\n * @return Is active?\r\n */\n get: function () {\n return this._isActive;\n },\n /**\r\n * Indicates if this element is currently active (toggled on) or not\r\n * (toggled off).\r\n *\r\n * @param value Is active?\r\n */\n set: function (value) {\n this.setActive(value);\n },\n enumerable: true,\n configurable: true\n });\n Sprite.prototype.setActive = function (value) {\n value = $type.toBoolean(value);\n if (this._isActive !== value) {\n this._isActive = value;\n if (value && this.states.hasKey(\"active\")) {\n this.setState(\"active\");\n if (this.isHover && this.states.hasKey(\"hoverActive\")) {\n this.setState(\"hoverActive\");\n }\n } else {\n this.applyCurrentState();\n }\n this.dispatchImmediately(\"toggled\");\n }\n };\n Object.defineProperty(Sprite.prototype, \"disabled\", {\n /**\r\n * @return Disabled?\r\n */\n get: function () {\n //if(this._internalDisabled){\n //\treturn true;\n //}\n var current = this.getPropertyValue(\"disabled\");\n if ($type.hasValue(current)) {\n return current;\n } else {\n if (this.virtualParent) {\n return this.virtualParent.disabled;\n }\n if (this._parent) {\n return this._parent.disabled;\n }\n }\n return false;\n },\n /**\r\n * Controls if element is disabled.\r\n *\r\n * A disabled element is hidden, and is removed from any processing, layout\r\n * calculations, and generally treated as if it does not exist.\r\n *\r\n * The element itself is not destroyed, though. Setting this back to `false`,\r\n * will \"resurrect\" the element.\r\n *\r\n * @param value Disabled?\r\n */\n set: function (value) {\n this.setDisabled(value);\n },\n enumerable: true,\n configurable: true\n });\n Sprite.prototype.setDisabled = function (value) {\n value = $type.toBoolean(value);\n var current = this.getPropertyValue(\"disabled\");\n if (current != value) {\n this.setPropertyValue(\"disabled\", value, true);\n if (value) {\n this.parent = this._parent;\n this.removeFromInvalids();\n this.group.attr({\n \"display\": \"none\"\n });\n this.dispatch(\"disabled\");\n } else {\n if (this._parent) {\n var group = this._parent.element;\n if (!group.hasChild(this.group)) {\n group.add(this.group);\n }\n }\n if (this instanceof Container) {\n this.deepInvalidate();\n if (this._background) {\n this._background.invalidate();\n }\n } else {\n this.invalidate();\n }\n if (!this.__disabled) {\n this.removeSVGAttribute(\"display\");\n }\n this.dispatch(\"enabled\");\n }\n this.dispatch(\"transformed\");\n system.requestFrame();\n return true;\n }\n return false;\n };\n Object.defineProperty(Sprite.prototype, \"__disabled\", {\n /**\r\n * @ignore\r\n * @return Disabled?\r\n */\n get: function () {\n return this._internalDisabled;\n },\n /**\r\n * Internal disable method.\r\n *\r\n * Do not use it for disabling elements. Use `disabled` accessor instead.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Disabled?\r\n */\n set: function (value) {\n if (this._internalDisabled != value) {\n this._internalDisabled = value;\n this._updateDisabled = true;\n this.invalidatePosition(); // better use this instead of invalidate()\n if (!value) {\n this.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"numberFormatter\", {\n /**\r\n * @return A [[NumberFormatter]] instance to be used\r\n */\n get: function () {\n if (this._numberFormatter) {\n return this._numberFormatter;\n } else if (this.virtualParent) {\n return this.virtualParent.numberFormatter;\n } else if (this._parent) {\n return this._parent.numberFormatter;\n }\n this._numberFormatter = new NumberFormatter();\n this._numberFormatter.language = this.language;\n return this.numberFormatter;\n },\n /**\r\n * ==========================================================================\r\n * FORMATTERS AND OTHER EXTERNAL HELPERS\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * A [[NumberFormatter]] instance.\r\n *\r\n * This is used to format numbers.\r\n *\r\n * ```TypeScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JavaScript\r\n * chart.numberFormatter.numberFormat = \"#,###.#####\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"numberFormatter\": {\r\n * \"numberFormat\": \"#,###.#####\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n *\r\n * @see {@link NumberFormatter} for more info on formatting numbers\r\n * @param value An instance of NumberFormatter\r\n */\n set: function (value) {\n this._numberFormatter = value;\n this._numberFormatter.language = this.language;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"dateFormatter\", {\n /**\r\n * @return An instance of DateFormatter\r\n */\n get: function () {\n if (this._dateFormatter) {\n return this._dateFormatter;\n } else if (this.virtualParent) {\n return this.virtualParent.dateFormatter;\n } else if (this._parent) {\n return this._parent.dateFormatter;\n }\n this._dateFormatter = new DateFormatter();\n this._dateFormatter.language = this.language;\n return this.dateFormatter;\n },\n /**\r\n * A [[DateFormatter]] instance.\r\n *\r\n * This is used to format dates, e.g. on a date axes, balloons, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JavaScript\r\n * chart.dateFormatter.dateFormat = \"yyyy-MM-dd\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dateFormatter\": {\r\n * \"dateFormat\": \"yyyy-MM-dd\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DateFormatter} for more info on dates formatting\r\n * @param value An instance of DateFormatter\r\n */\n set: function (value) {\n this._dateFormatter = value;\n this._dateFormatter.language = this.language;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"durationFormatter\", {\n /**\r\n * @return An instance of DurationFormatter\r\n */\n get: function () {\n if (this._durationFormatter) {\n return this._durationFormatter;\n } else if (this.virtualParent) {\n return this.virtualParent.durationFormatter;\n } else if (this._parent) {\n return this._parent.durationFormatter;\n }\n this._durationFormatter = new DurationFormatter();\n this._durationFormatter.language = this.language;\n return this.durationFormatter;\n },\n /**\r\n * A [[DurationFormatter]] instance.\r\n *\r\n * This is used to format numbers as durations, e.g. on a value axes.\r\n *\r\n * You can set a separate instance of formatter for each\r\n * individual element. However that would be unnecessary overhead as\r\n * all elements would automatically inherit formatter from their parents,\r\n * all the way up to the chart itself.\r\n *\r\n * @see {@link DurationFormatter} for more info on durations\r\n * @param value An instance of DurationFormatter\r\n */\n set: function (value) {\n this._durationFormatter = value;\n this._durationFormatter.language = this.language;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"language\", {\n /**\r\n * @return An instance of Language\r\n */\n get: function () {\n var language = this._language.get();\n if (language) {\n return language;\n } else if (this.virtualParent) {\n return this.virtualParent.language;\n } else if (this._parent) {\n return this._parent.language;\n }\n language = new Language();\n this.language = language;\n return language;\n },\n /**\r\n * A [[Language]] instance to use for translations.\r\n *\r\n * Normally it is enough to set language for the top-most element - chart.\r\n *\r\n * All other element child elements will automatically re-use that language\r\n * object.\r\n *\r\n * @param value An instance of Language\r\n */\n set: function (value) {\n var _this = this;\n if (this._language.get() !== value) {\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\n if (_this._numberFormatter) {\n _this._numberFormatter.language = _this.language;\n }\n if (_this._dateFormatter) {\n _this._dateFormatter.language = _this.language;\n }\n if (_this._durationFormatter) {\n _this._durationFormatter.language = _this.language;\n }\n if (_this._exporting.get()) {\n var exporting = _this._exporting.get();\n exporting.numberFormatter.language = _this.language;\n exporting.dateFormatter.language = _this.language;\n exporting.durationFormatter.language = _this.language;\n exporting.language = _this.language;\n }\n if (_this instanceof Container) {\n _this.deepInvalidate();\n }\n }));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * ==========================================================================\r\n * DATA-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Parses the string for meta tags `{tag}` and replaces them with a real\r\n * value. Supports straight up tags referring to the field in data, i.e.\r\n * `{value}` or tags with additional formatting info. E.g.:\r\n *\r\n * ```Text\r\n * {myfield.formatDate(\"yyyy-MM-dd\")}\r\n * {myfield.formatDate()}\r\n * {myfield.formatNumber(\"#,####.00\")}\r\n * {myfield.formatNumber()}\r\n * {myField.formatDuration(\"mm:ss\")}\r\n * ```\r\n *\r\n * Etc.\r\n *\r\n * This method Will automatically detect and use proper formatter for the\r\n * value.\r\n *\r\n * The source value will be looked up in various places: (in order)\r\n * * Sprite's own `dataItem`\r\n * * Sprite's properties\r\n * * Parent's `dataItem`\r\n * * Parent's properties\r\n *\r\n * @ignore Exclude from docs\r\n * @param string A string to format\r\n * @param dataItem DataItem\r\n * @return Formatted string\r\n */\n Sprite.prototype.populateString = function (string, dataItem) {\n if ($type.hasValue(string)) {\n string = $type.castString(string);\n string = getTextFormatter().escape(string);\n var tags = string.match(/\\{([^}]+)\\}/g);\n var i = void 0;\n if (tags) {\n for (i = 0; i < tags.length; i++) {\n var tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\n var value = this.getTagValue(tag, \"\", dataItem);\n if (!$type.hasValue(value)) {\n value = \"\";\n }\n string = string.split(tags[i]).join(value);\n }\n }\n string = getTextFormatter().unescape(string);\n } else {\n string = \"\";\n }\n if (!this._adapterO) {\n return string;\n } else {\n return this._adapterO.apply(\"populateString\", string);\n }\n };\n /**\r\n * Gets the value from data item and formats it according to specified format.\r\n *\r\n * If `format` is specified, it will use its contents to choose formatter for\r\n * the value. Otherwise it will select formatter accordingly to actual value\r\n * type.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Ability to force certain formatter on known numeric and date values\r\n * @see {@link NumberFormatter}\r\n * @see {@link DateFormatter}\r\n * @see {@link DurationFormatter}\r\n * @param tagName Tag name to replace\r\n * @param format Format to use\r\n * @param dataItem DataItem\r\n * @return Formatted value\r\n */\n Sprite.prototype.getTagValue = function (tagName, format, dataItem) {\n var value;\n if (!$type.hasValue(dataItem)) {\n dataItem = this.dataItem;\n }\n // Parse parts\n var parts = [];\n var reg = /([^.]+)\\(([^)]*)\\)|([^.]+)/g;\n ;\n var matches;\n while (true) {\n matches = reg.exec(tagName);\n if (matches === null) {\n break;\n }\n if (matches[3]) {\n // Simple property\n parts.push({\n prop: matches[3]\n });\n } else {\n // Method\n // Parse parameters\n var params = [];\n if ($utils.trim(matches[2]) != \"\") {\n var reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\n var matches2 = void 0;\n while (true) {\n matches2 = reg2.exec(matches[2]);\n if (matches2 === null) {\n break;\n }\n params.push(matches2[1] || matches2[2] || matches2[3]);\n }\n }\n parts.push({\n method: matches[1],\n params: params\n });\n }\n }\n // Check if we can retrieve the value from data item\n if (dataItem) {\n // Check values\n value = this.getTagValueFromObject(parts, dataItem.values);\n // Check properties\n if (!$type.hasValue(value) || $type.isObject(value)) {\n // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\n value = this.getTagValueFromObject(parts, dataItem);\n }\n // Check data context\n var dataContext = dataItem.dataContext;\n if (!$type.hasValue(value) && dataContext) {\n value = this.getTagValueFromObject(parts, dataItem.dataContext);\n // Maybe it's a literal dot-separated name of the key in dataContext?\n if (!$type.hasValue(value)) {\n value = this.getTagValueFromObject([{\n prop: tagName\n }], dataContext);\n }\n // scond data context level sometimes exist (tree map)\n if (!$type.hasValue(value) && dataContext.dataContext) {\n value = this.getTagValueFromObject(parts, dataContext.dataContext);\n }\n }\n // Check component's data item\n if (!$type.hasValue(value) && dataItem.component && dataItem.component.dataItem !== dataItem) {\n value = dataItem.component.getTagValue(tagName, format);\n }\n }\n // Check sprite's properties\n if (!$type.hasValue(value)) {\n value = this.getTagValueFromObject(parts, this.populateStringFrom || this);\n }\n // Finally, check the parent\n if (!$type.hasValue(value) && this._parent) {\n value = this._parent.getTagValue(tagName, format);\n }\n return value;\n };\n /**\r\n * Tries to retrieve values from properties of any object, then applies\r\n * proper formatting to it.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (improve)\r\n * @param parts Properties ant methods to access\r\n * @param object Source object\r\n * @param format A specific format to apply\r\n * @return Formatted value\r\n */\n Sprite.prototype.getTagValueFromObject = function (parts, object, format) {\n var current = object;\n var formatApplied = false;\n for (var i = 0, len = parts.length; i < len; i++) {\n var part = parts[i];\n if (part.prop) {\n // Regular property\n current = current[part.prop];\n if (!$type.hasValue(current)) {\n // Not set, return undefined\n return;\n }\n } else {\n // Method\n switch (part.method) {\n case \"formatNumber\":\n var numberValue = $utils.anyToNumber(current);\n if ($type.hasValue(numberValue)) {\n current = this.numberFormatter.format(numberValue, format || part.params[0] || undefined);\n formatApplied = true;\n }\n break;\n case \"formatDate\":\n var dateValue = void 0;\n if ($type.isString(current)) {\n dateValue = this.dateFormatter.parse(current);\n } else {\n dateValue = $utils.anyToDate(current);\n }\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\n // Was not able to get date out of value, quitting and letting\n // calling method try another value\n return;\n }\n if ($type.hasValue(dateValue)) {\n current = this.dateFormatter.format(dateValue, format || part.params[0] || undefined);\n formatApplied = true;\n }\n break;\n case \"formatDuration\":\n var durationValue = $utils.anyToNumber(current);\n if ($type.hasValue(durationValue)) {\n current = this.durationFormatter.format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\n formatApplied = true;\n }\n break;\n case \"urlEncode\":\n case \"encodeURIComponent\":\n current = encodeURIComponent(current);\n break;\n default:\n if (current[part.method]) {\n current[part.method].apply(this, part.params);\n }\n break;\n }\n }\n }\n // Apply default format if it wasn't applied explicitly\n if (!formatApplied) {\n var formatParts = [{\n method: \"\",\n params: format\n }];\n if (!$type.hasValue(format)) {\n // Format is not set\n // Determine from the type of the value\n if ($type.isNumber(current)) {\n formatParts[0].method = \"formatNumber\";\n formatParts[0].params = \"\";\n } else if ($type.isDate(current)) {\n formatParts[0].method = \"formatDate\";\n formatParts[0].params = \"\";\n }\n } else {\n // Format set\n // Try to determine formatter based on the format\n var formatterType = $utils.getFormat(format);\n // format\n if (formatterType === $strings.NUMBER) {\n formatParts[0].method = \"formatNumber\";\n } else if (formatterType === $strings.DATE) {\n formatParts[0].method = \"formatDate\";\n } else if (formatterType === $strings.DURATION) {\n formatParts[0].method = \"formatDuration\";\n }\n }\n // Apply format\n if (formatParts[0].method) {\n current = this.getTagValueFromObject(formatParts, current);\n }\n }\n return current;\n };\n Object.defineProperty(Sprite.prototype, \"dataItem\", {\n /**\r\n * @return [[DataItem]]\r\n */\n get: function () {\n if (!this._dataItem) {\n if (this.virtualParent) {\n return this.virtualParent.dataItem;\n }\n if (this._parent) {\n return this._parent.dataItem;\n }\n }\n return this._dataItem;\n },\n /**\r\n * A [[DataItem]] to use as element's data source.\r\n *\r\n * @todo Review type\r\n * @param dataItem DataItem\r\n */\n set: function (dataItem) {\n //an not use this[\"_dataItem\"] here, as we return parent data item if this sprite doesn't have one.\n // @todo:think about it\n this.setDataItem(dataItem);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets currently used [[DataItem]].\r\n *\r\n * If the element has also `configField` set, it will also look for any\r\n * config in DataItem's data context to apply to this element.\r\n *\r\n * @param dataItem DataItem\r\n */\n Sprite.prototype.setDataItem = function (dataItem) {\n var _this = this;\n if (this._dataItem != dataItem) {\n this._dataItem = dataItem;\n if (dataItem) {\n if (this.configField) {\n var dataContext_1 = dataItem.dataContext;\n if (dataContext_1) {\n this.config = dataContext_1[this.configField];\n if (!this.config && dataContext_1.dataContext) {\n this.config = dataContext_1.dataContext[this.configField];\n }\n }\n }\n var dataContext_2 = dataItem.dataContext;\n if (dataContext_2) {\n var dataContext2_1 = dataContext_2.dataContext;\n $object.each(this.propertyFields, function (propertyName, fieldValue) {\n if ($type.hasValue(dataContext_2[fieldValue])) {\n var anyThis = _this;\n anyThis[propertyName] = dataContext_2[fieldValue];\n } else {\n if (dataContext2_1) {\n var value = dataContext2_1[fieldValue];\n if ($type.hasValue(value)) {\n var anyThis = _this;\n anyThis[propertyName] = value;\n }\n }\n }\n });\n }\n }\n this.invalidate();\n }\n };\n /**\r\n * ==========================================================================\r\n * PROPERTY UTILITIES\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns element's property value.\r\n *\r\n * Will check if there are any bindings with [[DataItem]].\r\n *\r\n * Will also apply any adapters bound to `propertyName`.\r\n *\r\n * @param propertyName Property name\r\n * @return Property value\r\n */\n Sprite.prototype.getPropertyValue = function (propertyName) {\n var propValue = this.properties[propertyName];\n // Apply adapter\n if (!this._isTemplate) {\n if (this._adapterO) {\n propValue = this._adapterO.apply(propertyName, propValue);\n }\n propValue = globalAdapter.applyAll(this, propertyName, propValue);\n }\n return propValue;\n };\n Sprite.prototype.setColorProperty = function (property, value, invalidate) {\n var currentValue = this.properties[property];\n if (value instanceof Color && currentValue instanceof Color && value.toString() == currentValue.toString()) {\n return false;\n } else {\n return this.setPropertyValue(property, value, invalidate);\n }\n };\n Sprite.prototype.setPercentProperty = function (property, value, invalidate, transform, precision, floor) {\n value = $type.toNumberOrPercent(value);\n if ($type.isNumber(value)) {\n if ($type.isNumber(precision)) {\n value = $math.round(value, precision, floor);\n }\n return this.setPropertyValue(property, value, invalidate, transform);\n } else {\n var currentValue = this.properties[property];\n if (value instanceof Percent && currentValue instanceof Percent && value.value == currentValue.value) {\n return false;\n } else {\n return this.setPropertyValue(property, value, invalidate, transform);\n }\n }\n };\n /**\r\n * Sets elements's property value. Will also propagate the same property value\r\n * on all element's clones.\r\n *\r\n * @param property Property\r\n * @param value Value\r\n * @param invalidate Should the sprite be invalidated, cause it's re-rendering\r\n * @param transform Re-apply positioning of the element\r\n * @return Did the value change? It will return `true` if the new value and the old value of the property are not the same\r\n * @todo Review propagation to clones. Right now we simply check if clone is disposed before setting the same property on it. It's better to remove from clone list altogether.\r\n */\n Sprite.prototype.setPropertyValue = function (property, value, invalidate, transform) {\n if (this.properties[property] !== value && !this.isDisposed()) {\n this.properties[property] = value;\n if (this.events.isEnabled(\"propertychanged\")) {\n var event_1 = {\n type: \"propertychanged\",\n target: this,\n property: property\n };\n this.events.dispatchImmediately(\"propertychanged\", event_1);\n }\n if (invalidate) {\n this.invalidate();\n }\n if (transform) {\n this.invalidatePosition();\n }\n if (this.applyOnClones) {\n var clones = this.clones.values;\n var length_2 = clones.length;\n for (var i = 0; i < length_2; ++i) {\n var clone = clones[i];\n if (!clone.isDisposed()) {\n //(<Sprite>clone).setPropertyValue(<any>property, value, invalidate, transform);\n clone[property] = value;\n }\n }\n }\n return true;\n }\n return false;\n };\n Sprite.prototype.bind = function (property, source, bindToProperty, modifier) {\n var _this = this;\n if (bindToProperty === void 0) {\n bindToProperty = property;\n }\n if ($type.hasValue(this._bindings[property])) {\n this._bindings[property].dispose();\n }\n // set current value\n this[property] = source[bindToProperty];\n //source.addEventListener(AMEvent.PROPERTY_CHANGED, this.handleBindings, false, this);\n this._bindings[property] = source.events.on(\"propertychanged\", function (event) {\n if (event.property === bindToProperty) {\n var value = source[bindToProperty];\n if (modifier) {\n value = modifier(value);\n }\n // TODO clonesById\n _this[property] = value;\n }\n });\n };\n /**\r\n * Sets up and obeserver function to monitor changes in particular property\r\n * or properties.\r\n *\r\n * @ignore Exclude from docs\r\n * @param property Element's property name\r\n * @param listener Handler function\r\n * @param context Context for handler function\r\n * @returns Event Disposer\r\n */\n Sprite.prototype.observe = function (property, listener, context, shouldClone) {\n var _this = this;\n return new MultiDisposer($array.map($array.toArray(property), function (prop) {\n return _this.events.on(\"propertychanged\", function (e) {\n if (e.property === prop) {\n listener.call(context, e);\n }\n }, context, shouldClone);\n }));\n };\n /**\r\n * ==========================================================================\r\n * ACCESSIBILITY-RELATED PROPERTIES\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Applies accessibility to the SVG element.\r\n *\r\n * Adds `<title>` and `<description>` elements as well as `aria-labelledby`\r\n * and `role` properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.applyAccessibility = function () {\n // Check if we need to add label and description\n var title = this.readerTitle,\n description = this.readerDescription,\n role = this.role,\n hidden = this.readerHidden,\n checked = this.readerChecked,\n controls = this.readerControls,\n live = this.readerLive,\n orientation = this.readerOrientation,\n valueNow = this.readerValueNow,\n valueText = this.readerValueText;\n // Init label/describe ids\n var labelledByIds = [];\n var describedByIds = [];\n var labelledBy = this.readerLabelledBy;\n if (labelledBy) {\n labelledByIds.push(labelledBy);\n }\n var describedBy = this.readerDescribedBy;\n if (describedBy) {\n describedByIds.push(describedBy);\n }\n // Add arial-label attribute if present\n // If not readerTitle and labelledBy is set we will use <title> element\n // instead of aria-label\n // TODO: should we check agains this.showSystemTooltip?\n if (title) {\n if (labelledByIds.length || this.showSystemTooltip) {\n var titleElement = this.titleElement;\n var titleId = this.uid + \"-title\";\n if (titleElement.node.textContent != title) {\n titleElement.node.textContent = title;\n titleElement.attr({\n id: titleId\n });\n }\n labelledByIds.push(titleId);\n } else {\n if (this._titleElement) {\n this.group.removeElement(this._titleElement);\n this._titleElement = undefined;\n }\n this.setSVGAttribute({\n \"aria-label\": title\n });\n }\n } else {\n this.removeSVGAttribute(\"aria-label\");\n if (this._titleElement) {\n this.group.removeElement(this._titleElement);\n this._titleElement = undefined;\n }\n }\n // Add description\n if (description) {\n var descriptionElement = this.descriptionElement;\n var descriptionId = this.uid + \"-description\";\n if (descriptionElement.node.textContent != description) {\n descriptionElement.node.textContent = description;\n descriptionElement.attr({\n id: descriptionId\n });\n }\n describedByIds.push(descriptionId);\n } else if (this._descriptionElement) {\n this.group.removeElement(this._descriptionElement);\n this._descriptionElement = undefined;\n }\n // Add label and described properties\n if (labelledByIds.length) {\n this.setSVGAttribute({\n \"aria-labelledby\": labelledByIds.join(\" \")\n });\n } else {\n this.removeSVGAttribute(\"aria-labelledby\");\n }\n if (describedByIds.length) {\n this.setSVGAttribute({\n \"aria-describedby\": describedByIds.join(\" \")\n });\n } else {\n this.removeSVGAttribute(\"aria-describedby\");\n }\n // Apply role\n if (role) {\n this.setSVGAttribute({\n \"role\": role\n });\n } else {\n this.removeSVGAttribute(\"role\");\n }\n // Apply aria-hidden\n if (hidden) {\n this.setSVGAttribute({\n \"aria-hidden\": \"true\"\n });\n } else {\n this.removeSVGAttribute(\"aria-hidden\");\n }\n // Apply aria-checked\n if (checked) {\n this.setSVGAttribute({\n \"aria-checked\": \"true\"\n });\n } else if (checked === false) {\n this.setSVGAttribute({\n \"aria-checked\": \"false\"\n });\n } else {\n this.removeSVGAttribute(\"aria-checked\");\n }\n // Apply aria-controls\n if (controls) {\n this.setSVGAttribute({\n \"aria-controls\": controls\n });\n } else {\n this.removeSVGAttribute(\"aria-controls\");\n }\n // Apply aria-live\n if (live) {\n this.setSVGAttribute({\n \"aria-live\": live\n });\n } else {\n this.removeSVGAttribute(\"aria-live\");\n }\n // Apply aria-orientation\n if (orientation) {\n this.setSVGAttribute({\n \"aria-orientation\": orientation\n });\n } else {\n this.removeSVGAttribute(\"aria-orientation\");\n }\n // Apply aria-valuenow\n if (valueNow) {\n this.setSVGAttribute({\n \"aria-valuenow\": valueNow\n });\n } else {\n this.removeSVGAttribute(\"aria-valuenow\");\n }\n // Apply aria-valuetext\n if (valueText) {\n this.setSVGAttribute({\n \"aria-valuetext\": valueText\n });\n } else {\n this.removeSVGAttribute(\"aria-valuetext\");\n }\n };\n Object.defineProperty(Sprite.prototype, \"readerTitle\", {\n /**\r\n * @return Title\r\n */\n get: function () {\n var title = this.getPropertyValue(\"readerTitle\");\n if ($type.hasValue(title) && this.dataItem) {\n return this.populateString(title);\n }\n return title;\n },\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerTitle\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerDescription\", {\n /**\r\n * @return Description\r\n */\n get: function () {\n var description = this.getPropertyValue(\"readerDescription\");\n if ($type.hasValue(description) && this.dataItem) {\n return this.populateString(description);\n }\n return this.getPropertyValue(\"readerDescription\");\n },\n /**\r\n * Screen reader description of the element.\r\n *\r\n * @param value Description\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerDescription\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"role\", {\n /**\r\n * @return Role\r\n */\n get: function () {\n return this.getPropertyValue(\"role\");\n },\n /**\r\n * A WAI-ARIA role for the element.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#role_definitions} for more information on WAI-ARIA roles\r\n * @param value Role\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"role\", value)) {\n this.applyAccessibility();\n if (value == \"slider\") {\n this.setSVGAttribute({\n \"aria-valuemin\": \"0\"\n });\n this.setSVGAttribute({\n \"aria-valuemax\": \"100\"\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerHidden\", {\n /**\r\n * @return Hidden?\r\n */\n get: function () {\n return this.getPropertyValue(\"readerHidden\");\n },\n /**\r\n * Controls if element should be hidden from screen readers.\r\n *\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-hidden} for more information\r\n * @param value Hidden?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"readerHidden\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerChecked\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Checked?\r\n */\n get: function () {\n return this.getPropertyValue(\"readerChecked\");\n },\n /**\r\n * Controls if element is currently marked as \"checked\".\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-checked} for more information\r\n * @param value Checked?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"readerChecked\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerControls\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\n get: function () {\n return this.getPropertyValue(\"readerControls\");\n },\n /**\r\n * A `uid` of an element this element controls.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-controls} for more information\r\n * @param value Setting value\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerControls\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerLive\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Setting value\r\n */\n get: function () {\n return this.getPropertyValue(\"readerLive\");\n },\n /**\r\n * Controls accessibility setting \"aria-live\" for the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions} for more information\r\n * @param value Setting value\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerLive\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerLabelledBy\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\n get: function () {\n return this.getPropertyValue(\"readerLabelledBy\");\n },\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby} for more information\r\n * @param value Target element\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerLabelledBy\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerDescribedBy\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Target element\r\n */\n get: function () {\n return this.getPropertyValue(\"readerDescribedBy\");\n },\n /**\r\n * A `uid` of an element that describes this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#aria-describedby} for more information\r\n * @param value Target element\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerDescribedBy\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerOrientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"readerOrientation\");\n },\n /**\r\n * Orientation of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Orientation\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerOrientation\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerValueNow\", {\n /**\r\n * @return Current value\r\n */\n get: function () {\n return this.getPropertyValue(\"readerValueNow\");\n },\n /**\r\n * Current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerValueNow\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"readerValueText\", {\n /**\r\n * @return Current value (text)\r\n */\n get: function () {\n return this.getPropertyValue(\"readerValueText\");\n },\n /**\r\n * Text representation of the current value of the element.\r\n *\r\n * @since 4.7.16\r\n * @param value Current value (text)\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerValueText\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"keyboardOptions\", {\n /**\r\n * ==========================================================================\r\n * USER INTERACTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns elements keyboard options.\r\n *\r\n * @return Keyboard options\r\n */\n get: function () {\n if (!this.interactions.keyboardOptions) {\n if (this.virtualParent) {\n return this.virtualParent.keyboardOptions;\n }\n if (this._parent) {\n return this._parent.keyboardOptions;\n }\n }\n return this.interactions.keyboardOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"mouseOptions\", {\n /**\r\n * Mouse options.\r\n *\r\n * Enables controlling options related to the mouse, for example sensitivity\r\n * of its mouse wheel.\r\n *\r\n * E.g. the below will reduce chart's wheel-zoom speed to half its default\r\n * speed:\r\n *\r\n * ```TypeScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * chart.plotContainer.mouseOptions.sensitivity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"plotContainer\": {\r\n * \"mouseOptions\": {\r\n * \"sensitivity\": 0.5\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @return Mouse options\r\n */\n get: function () {\n if (!this.interactions.mouseOptions) {\n if (this.virtualParent) {\n return this.virtualParent.mouseOptions;\n }\n if (this._parent) {\n return this._parent.mouseOptions;\n }\n }\n return this.interactions.mouseOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"interactions\", {\n /**\r\n * Returns (creates if necessary) an [[InteractionObject]] associated with\r\n * this element.\r\n *\r\n * [[InteractionObject]] is used to attach all kinds of user-interactions to\r\n * the element, e.g. click/touch, dragging, hovering, and similar events.\r\n *\r\n * @return Interaction object\r\n */\n get: function () {\n if (!this._interaction) {\n var interaction = getInteraction().getInteraction(this.dom);\n this._interaction = interaction;\n this._interaction.clickable = this.clickable;\n this._interaction.hoverable = this.hoverable;\n this._interaction.trackable = this.trackable;\n this._interaction.draggable = this.draggable;\n this._interaction.swipeable = this.swipeable;\n this._interaction.resizable = this.resizable;\n this._interaction.wheelable = this.wheelable;\n this._interaction.contextMenuDisabled = this.contextMenuDisabled;\n this._interaction.inert = this.inert;\n this._interaction.sprite = this;\n this._disposers.push(this._interaction);\n }\n return this._interaction;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns true if interactions object was created. Mostly used just to avoid creating interactions object if not needed.\r\n * @return Is Sprite interactive?\r\n */\n Sprite.prototype.isInteractive = function () {\n if (this._interaction) {\n return true;\n } else {\n return false;\n }\n };\n Object.defineProperty(Sprite.prototype, \"focusable\", {\n /**\r\n * @return Can element be focused?\r\n */\n get: function () {\n return this.getPropertyValue(\"focusable\");\n },\n /**\r\n * ==========================================================================\r\n * ELEMENT FOCUS-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Controls if the element can gain focus.\r\n *\r\n * Focusable element will be selectable via TAB key.\r\n *\r\n * Please note, clicking it with a mouse or touching will not add focus to\r\n * it.\r\n *\r\n * Focused element will show a system-specific highlight, which might ruin\r\n * the overal look. This is why we don't focus element on click/touch.\r\n *\r\n * A default setting varies for different elements. By default all elements\r\n * are not focusable, except certain items like buttons, legend items, etc.\r\n *\r\n * @default undefined (auto)\r\n * @param value Can element be focused?\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"focusable\", value)) {\n if (!value && !this.isInteractive()) {} else {\n this.interactions.focusable = value;\n if (value) {\n this.setSVGAttribute({\n \"focusable\": value\n });\n if (!$type.hasValue(this._tabindex)) {\n this.tabindex = 0;\n }\n } else {\n this.removeSVGAttribute(\"focusable\");\n this.tabindex = undefined;\n }\n // Set focus events that would apply \"focus\" state\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-focusable\", value, function () {\n return new MultiDisposer([_this.events.on(\"blur\", _this.handleBlur, _this, false), _this.events.on(\"focus\", _this.handleFocus, _this, false)]);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Applies filters (if set) when element gains focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\n Sprite.prototype.handleFocus = function (ev) {\n if (this.focusable) {\n if (this.topParent) {\n this.topParent.hasFocused = true;\n this.topParent.focusedElement = this;\n }\n if (this.focusFilter) {\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\n // need to call it here\n this.filters.push(this.focusFilter);\n }\n if (this.hoverOnFocus) {\n // Trigger a hover event as well\n this.isHover = true;\n this.handleOver();\n }\n }\n };\n /**\r\n * Removes focus filter (if set) when elementloses focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Original event\r\n */\n Sprite.prototype.handleBlur = function (ev) {\n if (this.focusable) {\n if (this.topParent) {\n this.topParent.hasFocused = false;\n this.topParent.focusedElement = undefined;\n }\n if (this.focusFilter) {\n // Any `filters` manipulation will trigger `applyFilters()` so we don't\n // need to call it here\n this.filters.removeValue(this.focusFilter);\n }\n if (this.hoverOnFocus) {\n // Trigger a out event as well\n this.isHover = false;\n this.handleOut();\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"focusFilter\", {\n /**\r\n * A reference to a [[Filter]] to apply to element when it gains focus.\r\n *\r\n * Normally, browsers will draw a default ugly square around focused element,\r\n * which totally makes sense because its purpose is to help identify active\r\n * element for visually impaired people.\r\n *\r\n * However, if you would rather apply a filter, so you can modify how focused\r\n * element looks like, use `focusFilter`.\r\n *\r\n * Simply set it to an anstance of [[FocusFilter]], or any other filter\r\n * object.\r\n *\r\n * ```TypeScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JavaScript\r\n * chart.focusFilter = new am4core.FocusFilter();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"focusFilter\": {\r\n * \"type\": \"FocusFilter\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link Filter}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n * @ignore Exclude from docs\r\n * @return Focused element filter\r\n */\n get: function () {\n /*if (!this._focusFilter) {\r\n this._focusFilter = new FocusFilter();\r\n this._disposers.push(this._focusFilter);\r\n }*/\n //return this._focusFilter;\n var focusFilter = this._focusFilter;\n if (focusFilter) {\n return focusFilter;\n }\n if (this.virtualParent) {\n return this.virtualParent.focusFilter;\n } else if (this._parent) {\n return this._parent.focusFilter;\n }\n //this._focusFilter = new FocusFilter();\n //this._disposers.push(this._focusFilter);\n },\n /**\r\n * @see {@link Filter}\r\n * @ignore Exclude from docs\r\n * @todo This is still experimental, don't use it\r\n */\n set: function (value) {\n this._focusFilter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"hoverOnFocus\", {\n /**\r\n * @return Trigger hover on focus?\r\n */\n get: function () {\n return this.getPropertyValue(\"hoverOnFocus\");\n },\n /**\r\n * If set to `true`, this element will also trigger `\"over\"` event with all\r\n * the related consequences, like \"hover\" state being applied and tooltip\r\n * being shown.\r\n *\r\n * Useful as an accessibility feature to display rollover tooltips on items\r\n * selected via keyboard.\r\n *\r\n * @param value Trigger hover on focus?\r\n * @default false\r\n */\n set: function (value) {\n if (value !== this.hoverOnFocus) {\n this.setPropertyValue(\"hoverOnFocus\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tabindex\", {\n /**\r\n * @return TAB index\r\n */\n get: function () {\n var index = this._tabindex;\n if (index != null) {\n return index;\n } else if (this.virtualParent) {\n return this.virtualParent.tabindex;\n } else if (this._parent) {\n return this._parent.tabindex;\n }\n },\n /**\r\n * Sets or returns TAB index.\r\n *\r\n * Tab index maintains the order in which focusable elements gain focus when\r\n * TAB key is pressed.\r\n *\r\n * Please note, tab index is not local to the chart. It affects the whole\r\n * of the page, including non-SVG elements. Maintain extreme causion when\r\n * setting tab indexes, as it affects the user experience for the whole\r\n * web page.\r\n *\r\n * @param value TAB index\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n if (this.setPropertyValue(\"tabindex\", value) && $type.isNumber(value)) {\n this.interactions.tabindex = value;\n this.setSVGAttribute({\n \"tabindex\": value\n });\n this._tabindex = value;\n this.focusable = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"inertiaOptions\", {\n /**\r\n * ==========================================================================\r\n * DRAGGING AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns element's options to be used for inertia. This setting is\r\n * inheritable, meaning that if not set directly, it will search in all its\r\n * ascendants until very top.\r\n *\r\n * Inertia is used only if element's `inert` is set to `true`.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * Check [[IInertiaOptions]] for how you tweak inertia animations.\r\n *\r\n * @return Inertia options\r\n */\n get: function () {\n if (!this.interactions.inertiaOptions) {\n if (this._parent) {\n return this._parent.inertiaOptions;\n }\n }\n return this.interactions.inertiaOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"draggable\", {\n /**\r\n * @return `true` if element can be dragged\r\n */\n get: function () {\n return this.getPropertyValue(\"draggable\");\n },\n /**\r\n * Controls if the element is draggable.\r\n *\r\n * @param value `true` if element can be dragged\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"draggable\", value)) {\n if (!value && !this.isInteractive()) {} else {\n this.applyCursorStyle();\n this.interactions.draggable = value;\n //interaction.processDraggable(this);\n // Add events\n // @todo Maybe attach to InteractionObject's multidisposer so that\n // sprites events get disposed together with them?\n // this.interactions.disposers.getItem(\"movable\")\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-draggable\", value, function () {\n return new MultiDisposer([_this.events.on(\"down\", _this.handleDown, _this, false), _this.events.on(\"dragstart\", _this.handleDragStart, _this, false), _this.events.on(\"drag\", _this.handleDragMove, _this, false), _this.events.on(\"dragstop\", _this.handleDragStop, _this, false)]);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Executes when dragged element is being started to drag.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.handleDragStart = function (ev) {\n if (!this.interactions.isTouchProtected || !ev.touch) {\n this.interactions.originalPosition = {\n x: this.pixelX,\n y: this.pixelY\n };\n this._isDragged = true;\n this.hideTooltip(0);\n }\n };\n /**\r\n * Tell this element to start being dragged. This is useful if you want to\r\n * drag items by interactions performed not directly on the target element.\r\n *\r\n * Parameter `pointer` is highly recommended. By passing in the Pointer you\r\n * will ensure that movement is tracked for the pointer that you want. If not\r\n * supplied, the system will try to determine the most logical pointer.\r\n *\r\n * However this may fail if you have more than one pointer active, which\r\n * might happen if you have several objects being dragged on a touch device.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use for movement\r\n */\n Sprite.prototype.dragStart = function (pointer) {\n //this.dragStop(pointer);\n //this.draggable = true;\n this._isDragged = true;\n getInteraction().dragStart(this.interactions, pointer);\n };\n /**\r\n * Executes when dragged element is being dropped.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype.handleDragStop = function (ev) {\n if (!this.interactions.isTouchProtected || !ev.touch) {\n this._isDragged = false;\n this.showTooltip();\n this.interactions.originalPosition = undefined;\n }\n };\n /**\r\n * Stops manually initiated dragging of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointer Pointer to use as a reference\r\n */\n Sprite.prototype.dragStop = function (pointer, cancelled) {\n //this.draggable = false;\n this._isDragged = false;\n getInteraction().dragStop(this.interactions, pointer, cancelled);\n //this.handleDragStop();\n };\n /**\r\n * Executes when {Sprite} is being dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n * @todo Implement parent position offset calculation\r\n */\n Sprite.prototype.handleDragMove = function (ev) {\n if (!this.interactions.isTouchProtected || !ev.touch) {\n var point = this.interactions.originalPosition;\n if (point && this._isDragged) {\n var globalScale = this._parent.globalScale * this.svgContainer.cssScale;\n this.moveTo({\n x: point.x + ev.shift.x / globalScale,\n y: point.y + ev.shift.y / globalScale\n }, undefined, undefined, true);\n }\n this.dispatchImmediately(\"dragged\", ev);\n }\n };\n Object.defineProperty(Sprite.prototype, \"inert\", {\n /**\r\n * @return `true` if element should use inertia when animated\r\n */\n get: function () {\n return this.getPropertyValue(\"inert\");\n },\n /**\r\n * Controls if the element should use inertia when interacted with.\r\n *\r\n * \"Inert\" element, when dragged and released, will carry the momentum of the\r\n * movement, and will continue moving in the same drag direction, gradually\r\n * reducing in speed until finally stops.\r\n *\r\n * @default false\r\n * @param value `true` if element should use inertia when animated\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"inert\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.interactions.inert = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"hoverOptions\", {\n /**\r\n * ==========================================================================\r\n * HOVERING\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns Sprite's hover options.\r\n *\r\n * @see {@link IHoverOptions} for available options.\r\n * @return Options\r\n */\n get: function () {\n if (!this.interactions.hoverOptions) {\n if (this.virtualParent) {\n return this.virtualParent.hoverOptions;\n }\n if (this._parent) {\n return this._parent.hoverOptions;\n }\n }\n return this.interactions.hoverOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"hoverable\", {\n /**\r\n * @return `true` if element is hoverable\r\n */\n get: function () {\n return this.getPropertyValue(\"hoverable\");\n },\n /**\r\n * Controls if the element is hoverable (hover events are registered).\r\n *\r\n * Use `over` and `out` events, to watch for those respective actions.\r\n *\r\n * @default false\r\n * @param value `true` if element can be hovered\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"hoverable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.applyCursorStyle();\n this.interactions.hoverable = value;\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-hoverable\", value, function () {\n return new MultiDisposer([_this.events.on(\"over\", _this.handleOver, _this, false), _this.events.on(\"out\", _this.handleOut, _this, false)]);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles tasks when element becomes hovered:\r\n * * Shows [[Tooltip]] if applicable\r\n * * Applies \"hover\" state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Sprite.prototype.handleOver = function (ev) {\n if (this._outTimeout) {\n this._outTimeout.dispose();\n }\n if (this.isHover) {\n if (this.states.hasKey(\"hover\")) {\n //this.setState(\"hover\");\n // This will check `isHover` and will set \"hover\" state\n if (!this.isHidden) {\n this.applyCurrentState();\n }\n }\n var point = void 0;\n if (ev && ev.pointer) {\n point = $utils.documentPointToSvg(ev.pointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\n }\n if (this.showTooltipOn == \"hover\") {\n this.showTooltip(point);\n }\n } else {\n if (this.showTooltipOn == \"hover\") {\n this.hideTooltip();\n }\n if (!this.isHidden && this.states.hasKey(\"hover\")) {\n this.applyCurrentState();\n }\n }\n };\n /**\r\n * Handles tasks when element loses hover:\r\n *\r\n * * Hides [[Tooltip]]\r\n * * Applies default state\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev [description]\r\n */\n Sprite.prototype.handleOut = function (ev) {\n var _this = this;\n if (this.tooltip && this.tooltip.targetSprite == this && this.tooltip.keepTargetHover) {\n this._outTimeout = this.setTimeout(function () {\n if (!_this.tooltip.isHover) {\n if (_this.tooltip.targetSprite == _this) {\n _this.hideTooltip();\n }\n _this._outTimeout = _this.setTimeout(_this.handleOutReal.bind(_this), _this.rollOutDelay);\n }\n }, 10);\n return;\n }\n if (this.showTooltipOn == \"hover\") {\n this.hideTooltip();\n }\n this._outTimeout = this.setTimeout(this.handleOutReal.bind(this), this.rollOutDelay);\n };\n /**\r\n * [handleOutReal description]\r\n *\r\n * @ignore\r\n * @todo description\r\n */\n Sprite.prototype.handleOutReal = function () {\n if (!this.isHidden && !this.isHiding && this.states.hasKey(\"hover\")) {\n this.applyCurrentState();\n }\n };\n Object.defineProperty(Sprite.prototype, \"hitOptions\", {\n /**\r\n * ==========================================================================\r\n * CLICKING/TAPPING AND TOGGLING STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns Sprite's click (hit) options.\r\n *\r\n * Click (hit) options control things like double-click, timeouts, etc.\r\n *\r\n * @see {@link IHitOptions} for available options.\r\n * @return Options\r\n */\n get: function () {\n if (!this.interactions.hitOptions) {\n if (this.virtualParent) {\n return this.virtualParent.hitOptions;\n }\n if (this._parent) {\n return this._parent.hitOptions;\n }\n }\n return this.interactions.hitOptions;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Prepares element's after `down` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\n Sprite.prototype.handleDown = function (ev) {\n if (this.interactions.downPointers.length === 1) {\n this.interactions.originalPosition = {\n x: this.pixelX,\n y: this.pixelY\n };\n this.interactions.originalAngle = this.rotation;\n this.interactions.originalScale = this.scale;\n if (this.states.hasKey(\"down\")) {\n this.setState(\"down\");\n }\n }\n };\n /**\r\n * Prepares element's after `up` event.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\n Sprite.prototype.handleUp = function (ev) {\n var _this = this;\n /*if (!this.isDown) {\r\n this.interactions.originalPosition = null;\r\n this.interactions.originalAngle = null;\r\n this.interactions.originalScale = null;\r\n }*/\n this._isResized = false;\n if (this.states.hasKey(\"down\")) {\n this.applyCurrentState();\n }\n if (this.showTooltipOn == \"hit\") {\n this.updateTooltipPosition(ev.pointer ? ev.pointer.point : undefined);\n this._disposers.push(registry.events.once(\"exitframe\", function () {\n _this.showTooltip();\n }));\n this._disposers.push(getInteraction().body.events.once(\"down\", function (ev) {\n _this.hideTooltip();\n }));\n }\n };\n Object.defineProperty(Sprite.prototype, \"clickable\", {\n /**\r\n * @return {boolean}\r\n */\n get: function () {\n return this.getPropertyValue(\"clickable\");\n },\n /**\r\n * Indicates if the element is clickable.\r\n *\r\n * Some type of the elements, like buttons are clickable by default.\r\n *\r\n * Most of the elements are not clickable by default.\r\n *\r\n * Use `hit`, `doublehit`, `up`, `down`, `toggled` events to watch for\r\n * respective click/touch actions.\r\n *\r\n * @param value `true` if element can be clicked\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"clickable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.applyCursorStyle();\n this.interactions.clickable = value;\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-clickable\", value, function () {\n return new MultiDisposer([_this.events.on(\"down\", _this.handleDown, _this, false), _this.events.on(\"up\", _this.handleUp, _this, false)]);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"togglable\", {\n /**\r\n * @return Is togglable?\r\n */\n get: function () {\n return this.getPropertyValue(\"togglable\");\n },\n /**\r\n * Indicates if element can be toggled on and off by subsequent clicks/taps.\r\n *\r\n * Togglable element will alternate its `isActive` property between `true`\r\n * and `false` with each click.\r\n *\r\n * @param value Is togglable?\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"togglable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-togglable\", value, function () {\n return _this.events.on(\"hit\", _this.handleToggle, _this, false);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles toggling of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event\r\n */\n Sprite.prototype.handleToggle = function (ev) {\n this.isActive = !this.isActive;\n };\n Object.defineProperty(Sprite.prototype, \"contextMenuDisabled\", {\n /**\r\n * @return Context menu disabled?\r\n */\n get: function () {\n return this.getPropertyValue(\"contextMenuDisabled\");\n },\n /**\r\n * Should element prevent context menu to be displayed, e.g. when\r\n * right-clicked?\r\n *\r\n * @default false\r\n * @param value Context menu disabled?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"contextMenuDisabled\", value)) {\n this.interactions.contextMenuDisabled = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"url\", {\n /**\r\n * @return URL\r\n */\n get: function () {\n return this.getPropertyValue(\"url\");\n },\n /**\r\n * Click-through URL for this element.\r\n *\r\n * If set, clicking/tapping this element will open the new URL in a target\r\n * window/tab as set by `urlTarget`.\r\n *\r\n * Please note that URL will be parsed by data placeholders in curly\r\n * brackets, to be populated from data. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.url = \"https://www.google.com/search?q={category.urlEncode()}\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"url\": \"https://www.google.com/search?q={category.urlEncode()}\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @param value URL\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"url\", value)) {\n if (this._urlDisposer) {\n this._urlDisposer.dispose();\n }\n // If URL is not empty, set up events\n if ($utils.isNotEmpty(value)) {\n this._urlDisposer = this.events.on(\"hit\", this.urlHandler, this, false);\n // Set other required parameters\n this.clickable = true;\n this.cursorOverStyle = MouseCursorStyle.pointer;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"baseId\", {\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @return [description]\r\n */\n get: function () {\n if (!this._baseId && this._parent) {\n this.baseId = this._parent.baseId;\n }\n return this._baseId;\n },\n /**\r\n * [baseId description]\r\n *\r\n * @ignore\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setBaseId(value);\n },\n enumerable: true,\n configurable: true\n });\n Sprite.prototype.setBaseId = function (value) {\n if (value != this._baseId) {\n if (this.invalid) {\n this.invalid = false;\n registry.removeFromInvalidSprites(this);\n this.invalidate();\n }\n this._baseId = value;\n }\n };\n Object.defineProperty(Sprite.prototype, \"baseSprite\", {\n /**\r\n * Returns the mail chart object that this element belongs to.\r\n *\r\n * In most cases it will mean the chart object.\r\n *\r\n * Can be used to retrieve chart object in various events and adapters.\r\n *\r\n * ```TypeScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * chart.seriesContainer.events.on(\"hit\", function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * });\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"seriesContainer\": {\r\n * \"events\": {\r\n * \"hit\": function(ev) {\r\n * console.log(ev.target.baseSprite);\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @readonly\r\n * @return Base chart object\r\n */\n get: function () {\n if (this.isBaseSprite) {\n return this;\n } else if (this._parent) {\n return this._parent.baseSprite;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"urlTarget\", {\n /**\r\n * @return URL target\r\n */\n get: function () {\n return this.getPropertyValue(\"urlTarget\");\n },\n /**\r\n * Target to use for URL clicks:\r\n *\r\n * * _blank\r\n * * _self (default)\r\n * * _parent\r\n * * _top\r\n * * Name of the window/frame\r\n *\r\n * Ignored if `url` is not set.\r\n *\r\n * @param value URL target\r\n */\n set: function (value) {\n this.setPropertyValue(\"urlTarget\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles URL transition on element click.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev An event object\r\n */\n Sprite.prototype.urlHandler = function (ev) {\n // Is URL set?\n if ($utils.isNotEmpty(this.url)) {\n // Proceed to the URL\n var url = this.populateString(this.url);\n if (this.urlTarget === \"_self\") {\n window.location.href = url;\n } else {\n window.open(url, this.urlTarget);\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"swipeOptions\", {\n /**\r\n * ==========================================================================\r\n * SWIPING GESTURE TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns element's swipe gesture options.\r\n *\r\n * @return Swipe gesture options\r\n */\n get: function () {\n if (!this.interactions.swipeOptions) {\n if (this.virtualParent) {\n return this.virtualParent.swipeOptions;\n }\n if (this._parent) {\n return this._parent.swipeOptions;\n }\n }\n return this.interactions.swipeOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"swipeable\", {\n /**\r\n * @return Element swipable?\r\n */\n get: function () {\n return this.getPropertyValue(\"swipeable\");\n },\n /**\r\n * Controls if element is swipeable.\r\n *\r\n * Swipable element will invoke `swipe`, `swipeleft` and `swiperight` events,\r\n * when quick horizontal drag action is performed with either mouse or touch.\r\n *\r\n * Please note that combining swipe and drag is possible, however will incur\r\n * a slight but noticeable delay in drag start.\r\n *\r\n * @param value Element swipable?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"swipeable\", value)) {\n this.applyCursorStyle();\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.interactions.swipeable = value;\n }\n //interaction.processSwipeable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"trackable\", {\n /**\r\n * @return Track cursor movement over element?\r\n */\n get: function () {\n return this.getPropertyValue(\"trackable\");\n },\n /**\r\n * ==========================================================================\r\n * POINTER TRACKING\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Indicates if the element is trackable (mouse position over it is reported to\r\n * event listeners).\r\n *\r\n * Will invoke `track` events whenever pointer (cursor) changes position\r\n * while over element.\r\n *\r\n * Please note, touch devices will also invoke `track` events when touch\r\n * point is moved while holding down on a trackable element.\r\n *\r\n * @param value Track cursor movement over element?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"trackable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.applyCursorStyle();\n this.interactions.trackable = value;\n }\n //interaction.processTrackable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"wheelable\", {\n /**\r\n * @return Mouse wheel events enabled?\r\n */\n get: function () {\n return this.getPropertyValue(\"wheelable\");\n },\n /**\r\n * ==========================================================================\r\n * MOUSE-WHEEL RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Indicates if the element can be interacted with mouse wheel.\r\n *\r\n * Will invoke `wheel`, `wheelup`, `wheeldown`, `wheelleft`, and `wheelright`\r\n * events when using mouse wheel over the element.\r\n *\r\n * @param value Mouse wheel events enabled?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"wheelable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.applyCursorStyle();\n this.interactions.wheelable = value;\n }\n //interaction.processWheelable(this);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"resizable\", {\n /**\r\n * @return Element resizable?\r\n */\n get: function () {\n return this.getPropertyValue(\"resizable\");\n },\n /**\r\n * ==========================================================================\r\n * RESIZE\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Indicates if this element is resizable.\r\n *\r\n * Enabling resize will turn on various interactions on the element. Their\r\n * actual functionality will depend on other properties.\r\n *\r\n * If the element also `draggable`, resize will only happen with two points\r\n * of contact on a touch device.\r\n *\r\n * If the element is not draggable, resize can be performed with just one\r\n * point of contact, touch or mouse.\r\n *\r\n * Will invoke `resize` event every time the size of the element changes.\r\n *\r\n * @param value Element resizable?\r\n */\n set: function (value) {\n var _this = this;\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"resizable\", value)) {\n if (!value && !this.isInteractive()) {\n // void\n } else {\n this.applyCursorStyle();\n this.interactions.resizable = value;\n // setEventDisposer will also remove listeners if value == false\n this.interactions.setEventDisposer(\"sprite-resizable\", value, function () {\n return new MultiDisposer([_this.events.on(\"down\", _this.handleDown, _this, false), _this.events.on(\"resize\", _this.handleResize, _this, false)]);\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles resize intermediate step.\r\n *\r\n * By default this method resizes actual element. Each element, can override\r\n * this method to implement their own resize logic.\r\n *\r\n * @ignore Exclude from docs\r\n * @param ev Event object\r\n */\n Sprite.prototype.handleResize = function (ev) {\n if (!this.interactions.isTouchProtected || !ev.touch) {\n this._isResized = true;\n this.scale = this.interactions.originalScale * ev.scale;\n this.validatePosition();\n /*center: (io.draggable\r\n ? $math.getMidPoint(point1, point2)\r\n : {\r\n \"x\": io.originalPosition.x,\r\n \"y\": io.originalPosition.y\r\n })*/\n //this.moveTo(this.originalPosition.x + ev.shift.x, this.originalPosition.y + ev.shift.y);\n if (this.draggable || this.dragWhileResize) {\n this._isDragged = false;\n var svgPoint1 = $utils.documentPointToSvg(ev.point1, this.htmlContainer, this.svgContainer.cssScale);\n var svgPoint2 = $utils.documentPointToSvg(ev.point2, this.htmlContainer, this.svgContainer.cssScale);\n var svgMidPoint = $math.getMidPoint(svgPoint1, svgPoint2);\n var parentPoint1 = $utils.documentPointToSprite(ev.startPoint1, this._parent);\n var parentPoint2 = $utils.documentPointToSprite(ev.startPoint2, this._parent);\n var originalPosition = this.interactions.originalPosition;\n var originalScale = this.interactions.originalScale;\n if (originalPosition) {\n var spritePoint1 = {\n x: (parentPoint1.x - originalPosition.x) / originalScale,\n y: (parentPoint1.y - originalPosition.y) / originalScale\n };\n var spritePoint2 = {\n x: (parentPoint2.x - originalPosition.x) / originalScale,\n y: (parentPoint2.y - originalPosition.y) / originalScale\n };\n var spriteMidPoint = $math.getMidPoint(spritePoint1, spritePoint2);\n var parentPoint = $utils.svgPointToSprite(svgMidPoint, this._parent);\n this.moveTo({\n x: parentPoint.x - spriteMidPoint.x * this.scale,\n y: parentPoint.y - spriteMidPoint.y * this.scale\n }, undefined, undefined, true);\n }\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"cursorOptions\", {\n /**\r\n * ==========================================================================\r\n * MOUSE-RELATED\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Returns element's cursor options.\r\n *\r\n * Cursor options usually define cursor style for various states of the\r\n * hovered element.\r\n *\r\n * Elements inherit `cursorOptions` from their parents if they don't have\r\n * them set explicitly.\r\n *\r\n * @see {@link ICursorOptions} for a list of available options\r\n * @return Cursor options\r\n */\n get: function () {\n if (!this.interactions.cursorOptions) {\n if (this.virtualParent) {\n return this.virtualParent.cursorOptions;\n }\n if (this._parent) {\n return this._parent.cursorOptions;\n }\n }\n return this.interactions.cursorOptions;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"cursorOverStyle\", {\n /**\r\n * A shortcut to setting mouse cursor on hover.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorOverStyle = am4core.MouseCursorStyle.pointer;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorOverStyle\": \"pointer\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\n set: function (style) {\n if (!this.cursorOptions.overStyle) {\n this.interactions.cursorOptions = {\n defaultStyle: this.cursorOptions.defaultStyle\n };\n }\n this.cursorOptions.overStyle = style;\n getInteraction().applyCursorOverStyle(this.interactions);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"cursorDownStyle\", {\n /**\r\n * A shortcut to setting mouse cursor when button is pressed down.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.cursorDownStyle = am4core.MouseCursorStyle.grabbing;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": {\r\n * // ...\r\n * \"slices\": {\r\n * \"cursorDownStyle\": \"grabbing\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param style An array of styles to apply onhover\r\n */\n set: function (style) {\n this.cursorOptions.downStyle = style;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Applies default cursor styles for interactable elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Determine if this is necessary. Maybe let's not apply any cursor styles by default\r\n */\n Sprite.prototype.applyCursorStyle = function () {\n // Draggable styles\n /*if (this.draggable) {\r\n if (!$type.hasValue(this.cursorOptions.overStyle)) {\r\n this.cursorOptions.overStyle = MouseCursorStyle.grab;\r\n }\r\n if (!$type.hasValue(this.cursorOptions.downStyle)) {\r\n this.cursorOptions.downStyle = MouseCursorStyle.grabbing;\r\n }\r\n }*/\n };\n Object.defineProperty(Sprite.prototype, \"interactionsEnabled\", {\n /**\r\n * @return Is interaction enabled for this element?\r\n */\n get: function () {\n var value = this.getPropertyValue(\"interactionsEnabled\");\n if (value === false) {\n return false;\n }\n if (this.virtualParent) {\n return this.virtualParent.interactionsEnabled;\n }\n if (this._parent) {\n return this._parent.interactionsEnabled;\n }\n return true;\n },\n /**\r\n * Setting this to `false` will effectively disable all interactivity on the\r\n * element.\r\n *\r\n * @param value Is interaction enabled for this element?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"interactionsEnabled\", value)) {\n var pointerEvents = null; // must be null, not \"null\"!\n if (!value) {\n pointerEvents = \"none\";\n } else {\n // this is for IE\n this.group.node.style.pointerEvents = \"\";\n }\n this.group.node.style.pointerEvents = pointerEvents;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"exporting\", {\n /**\r\n * @return Export instance\r\n */\n get: function () {\n return this.getExporting();\n },\n /**\r\n * ==========================================================================\r\n * EXPORT-RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * An [[Export]] instance.\r\n *\r\n * Used to access API of the chart export functionality.\r\n *\r\n * If `exporting` is not set, the element inherits [[Export]] instance from\r\n * its parents.\r\n *\r\n * Upon request, if no parent has such instance, a new one is created, using\r\n * default settings, what in most cases is just enough.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/} for more info about exporting\r\n * @param exp Export\r\n */\n set: function (exp) {\n this._exporting.set(exp, exp);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * This is here as a method so that inheriting classes could override it.\r\n *\r\n * @return Export instance\r\n */\n Sprite.prototype.getExporting = function () {\n var _export = this._exporting.get();\n if (_export) {\n return _export;\n } else {\n if (this.isStandaloneInstance || !this._parent) {\n _export = new Export(this.svgContainer.SVGContainer);\n _export.sprite = this;\n _export.language = this.language;\n _export.numberFormatter = this.numberFormatter;\n _export.dateFormatter = this.dateFormatter;\n _export.durationFormatter = this.durationFormatter;\n this._exporting.set(_export, _export);\n } else {\n return this._parent.exporting;\n }\n }\n return _export;\n };\n Object.defineProperty(Sprite.prototype, \"exportable\", {\n /**\r\n * @return Export?\r\n */\n get: function () {\n return this._exportable;\n /*const svgContainer = this.svgContainer;\r\n return !svgContainer || $array.indexOf(svgContainer.nonExportableSprites, this) == -1;*/\n },\n /**\r\n * If set to `false` this element will be omitted when exporting the chart\r\n * to an image.\r\n *\r\n * @default true\r\n * @param value Export?\r\n */\n set: function (value) {\n var svgContainer = this.svgContainer;\n this._exportable = value;\n if (svgContainer) {\n if (value) {\n $array.remove(svgContainer.nonExportableSprites, this);\n } else if ($array.indexOf(svgContainer.nonExportableSprites, this) == -1) {\n svgContainer.nonExportableSprites.push(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * ==========================================================================\r\n * MODAL/POPUP RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Private method to be used for \"classPrefix\" adapter for modals/popups.\r\n *\r\n * @param value Prefix\r\n */\n Sprite.prototype.modalPrefix = function (value) {\n value = options.classNamePrefix + value;\n return value;\n };\n Object.defineProperty(Sprite.prototype, \"modal\", {\n /**\r\n * Returns a [[Modal]] instance, associated with this chart.\r\n * (elements top parent)\r\n *\r\n * Accessing modal does not make it appear. To make a modal appear, use\r\n * `showModal()` method.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @return Modal instance\r\n */\n get: function () {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n var modal = svgContainer.modal;\n if (!modal.adapter.has(\"classPrefix\", this.modalPrefix)) {\n modal.adapter.add(\"classPrefix\", this.modalPrefix);\n }\n return modal;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Opens a modal window with specific content (`text` parameter) and,\r\n * optionally, `title`.\r\n *\r\n * The `text` parameter can contain HTML content.\r\n *\r\n * @see {@link Modal} for more information about using Modal windows\r\n * @param text Modal contents\r\n * @param title Title for the modal window\r\n */\n Sprite.prototype.openModal = function (text, title) {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n return svgContainer.openModal(text, title);\n }\n };\n /**\r\n * Hides modal window if there is one currently open.\r\n */\n Sprite.prototype.closeModal = function () {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n svgContainer.closeModal();\n }\n };\n Object.defineProperty(Sprite.prototype, \"popups\", {\n /**\r\n * A list of popups for this chart.\r\n *\r\n * @return Popups\r\n */\n get: function () {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n var popups = svgContainer.popups;\n popups.template.sprite = this;\n if (!popups.template.adapter.has(\"classPrefix\", this.modalPrefix)) {\n popups.template.adapter.add(\"classPrefix\", this.modalPrefix);\n }\n return popups;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates, opens, and returns a new [[Popup]] window.\r\n *\r\n * `text` can be any valid HTML.\r\n *\r\n * `title` is currently not supported.\r\n *\r\n * @param text Popup contents\r\n * @param title Popup title\r\n * @return Popup instance\r\n */\n Sprite.prototype.openPopup = function (text, title) {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n return svgContainer.openPopup(text, title);\n }\n };\n /**\r\n * Closes all currently open popup windows\r\n */\n Sprite.prototype.closeAllPopups = function () {\n var svgContainer = this.svgContainer;\n if (svgContainer) {\n svgContainer.closeAllPopups();\n }\n };\n Object.defineProperty(Sprite.prototype, \"x\", {\n /**\r\n * @return X coordinate\r\n */\n get: function () {\n return this.getPropertyValue(\"x\");\n },\n /**\r\n * ==========================================================================\r\n * POSITIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Element's absolute or relative X coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value X coordinate\r\n */\n set: function (value) {\n if (!this.isDragged) {\n this.setPercentProperty(\"x\", value, false, true, this._positionPrecision, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelX\", {\n /**\r\n * Returns element's current absolute X coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return X coordinate (px)\r\n */\n get: function () {\n var value = $math.fitToRange(this.getPixelX(this.x), this.minX, this.maxX);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelX\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeX\", {\n /**\r\n * Returns element's current relative X coordinate in [[Percent]].\r\n *\r\n * @return X coordinate ([[Percent]])\r\n */\n get: function () {\n if (!this._adapterO) {\n return this.getRelativeX(this.x);\n } else {\n return this._adapterO.apply(\"relativeX\", this.getRelativeX(this.x));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"minX\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Min X (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minX\");\n },\n /**\r\n * The smallest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min X (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"minX\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"maxX\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Max X (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"maxX\");\n },\n /**\r\n * The biggest allowable absolute X coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max X (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"maxX\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"y\", {\n /**\r\n * @return Y coordinate\r\n */\n get: function () {\n return this.getPropertyValue(\"y\");\n },\n /**\r\n * Element's absolute or relative Y coordinate.\r\n *\r\n * If setting both X and Y, please consider using `moveTo()` method instead,\r\n * as it will be faster to set both coordinates at once.\r\n *\r\n * @param value Y coordinate\r\n */\n set: function (value) {\n if (!this.isDragged) {\n this.setPercentProperty(\"y\", value, false, true, this._positionPrecision, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelY\", {\n /**\r\n * Returns element's current absolute Y coordinate in pixels.\r\n *\r\n * @readonly\r\n * @return Y coordinate (px)\r\n */\n get: function () {\n var value = $math.fitToRange(this.getPixelY(this.y), this.minY, this.maxY);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelY\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeY\", {\n /**\r\n * Returns element's current relative Y coordinate in [[Percent]].\r\n *\r\n * @readonly\r\n * @return Y coordinate ([[Percent]])\r\n */\n get: function () {\n if (!this._adapterO) {\n return this.getRelativeX(this.y);\n } else {\n return this._adapterO.apply(\"relativeY\", this.getRelativeX(this.y));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"minY\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Min Y (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minY\");\n },\n /**\r\n * The smallest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Min Y (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"minY\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"maxY\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Max Y (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"maxY\");\n },\n /**\r\n * The biggest allowable absolute Y coordinate for this element.\r\n *\r\n * This is used to contain element movement within certain boundaries.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Max Y (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"maxY\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"dx\", {\n /**\r\n * @return Horizontal offset (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"dx\");\n },\n /**\r\n * A horizontal offset for the element in pixels.\r\n *\r\n * Can be negative value for offset to the left.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"dx\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"dy\", {\n /**\r\n * @return Vertical offset (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"dy\");\n },\n /**\r\n * A vertical offset for the element in pixels.\r\n *\r\n * Can be negative value for offset upwards.\r\n *\r\n * @param value Vertical offset (px)\r\n */\n set: function (value) {\n if ($type.isNumber(value)) {\n value = $math.round(value, this._positionPrecision, true);\n this.setPropertyValue(\"dy\", value, false, true);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"rotation\", {\n /**\r\n * @return Rotation (0-360)\r\n */\n get: function () {\n return this.getPropertyValue(\"rotation\");\n },\n /**\r\n * Rotation of the element in degrees. (0-360)\r\n *\r\n * Note: For convenience purposes, negative values (for counter-clockwise\r\n * rotation) and values exceeding 360 can also be used.\r\n *\r\n * @param value Rotation (0-360)\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n if (!$type.isNumber(value)) {\n value = 0;\n }\n this.setPropertyValue(\"rotation\", value, false, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"align\", {\n /**\r\n * @return Horizontal align\r\n */\n get: function () {\n return this.getPropertyValue(\"align\");\n },\n /**\r\n * Controls horizontal alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Horizontal align\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"align\", value)) {\n if (this._parent) {\n this._parent.invalidateLayout();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"valign\", {\n /**\r\n * @return Vertical align\r\n */\n get: function () {\n return this.getPropertyValue(\"valign\");\n },\n /**\r\n * Controls vertical alignment of the element.\r\n *\r\n * This is used by parent [[Container]] when layouting its children.\r\n *\r\n * @param value Vertical align\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"valign\", value)) {\n if (this._parent) {\n this._parent.invalidateLayout();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"horizontalCenter\", {\n /**\r\n * @return Horizontal center\r\n */\n get: function () {\n return this.getPropertyValue(\"horizontalCenter\");\n },\n /**\r\n * Controls which part of the element to treat as a horizontal center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Horizontal center\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"horizontalCenter\", value)) {\n this.updateCenter();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"verticalCenter\", {\n /**\r\n * @return Vertical center\r\n */\n get: function () {\n return this.getPropertyValue(\"verticalCenter\");\n },\n /**\r\n * Controls which part of the element to treat as a vertical center.\r\n *\r\n * The setting will be used when positioning, resizing and rotating the\r\n * element.\r\n *\r\n * @param value Vertical center\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"verticalCenter\", value)) {\n this.updateCenter();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"maxWidth\", {\n /**\r\n * @return Maximum width (px)\r\n */\n get: function () {\n var maxWidth = this.getPropertyValue(\"maxWidth\");\n if (!$type.isNumber(maxWidth)) {\n if (this._parent) {\n var parentWidth = this._parent.maxWidth;\n if (this._parent.layout != \"absolute\" && this.align != \"none\" && this.align != undefined) {\n parentWidth = parentWidth - this.pixelMarginLeft - this.pixelMarginRight;\n }\n return parentWidth;\n }\n }\n return maxWidth;\n },\n /**\r\n * ==========================================================================\r\n * DIMENSIONAL PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Maximum allowed width for the element in pixels.\r\n *\r\n * @param value Maximum width (px)\r\n */\n set: function (value) {\n this.setMaxWidth(value);\n },\n enumerable: true,\n configurable: true\n });\n Sprite.prototype.setMaxWidth = function (value) {\n var prevWidth = this.maxWidth;\n var prevHeight = this.maxHeight;\n if (this.setPropertyValue(\"maxWidth\", value)) {\n if ($type.isNumber(this.relativeWidth)) {\n this.invalidate();\n }\n var event_2 = {\n type: \"maxsizechanged\",\n target: this,\n previousWidth: prevWidth,\n previousHeight: prevHeight\n };\n this.dispatchImmediately(\"maxsizechanged\", event_2);\n }\n };\n Object.defineProperty(Sprite.prototype, \"maxHeight\", {\n /**\r\n * @return Maximum height (px)\r\n */\n get: function () {\n var maxHeight = this.getPropertyValue(\"maxHeight\");\n if (!$type.isNumber(maxHeight)) {\n if (this._parent) {\n var parentHeight = this._parent.maxHeight;\n if (this._parent.layout != \"absolute\" && this.valign != \"none\" && this.valign != undefined) {\n parentHeight = parentHeight - this.pixelMarginTop - this.pixelMarginBottom;\n }\n return parentHeight;\n }\n }\n return maxHeight;\n },\n /**\r\n * Maximum allowed height for the element in pixels.\r\n *\r\n * @param value Maximum height (px)\r\n */\n set: function (value) {\n this.setMaxHeight(value);\n },\n enumerable: true,\n configurable: true\n });\n Sprite.prototype.setMaxHeight = function (value) {\n var prevWidth = this.maxWidth;\n var prevHeight = this.maxHeight;\n if (this.setPropertyValue(\"maxHeight\", value)) {\n if ($type.isNumber(this.relativeHeight)) {\n this.invalidate();\n }\n var event_3 = {\n type: \"maxsizechanged\",\n target: this,\n previousWidth: prevWidth,\n previousHeight: prevHeight\n };\n this.dispatchImmediately(\"maxsizechanged\", event_3);\n }\n };\n Object.defineProperty(Sprite.prototype, \"minWidth\", {\n /**\r\n * @return Minimum width (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minWidth\");\n },\n /**\r\n * Minimum width of the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum width (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"minWidth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"minHeight\", {\n /**\r\n * @return Minimum height (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minHeight\");\n },\n /**\r\n * Minimum height for the element in pixels.\r\n *\r\n * Set to `undefined` to remove the limit.\r\n *\r\n * @param value Minimum height (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"minHeight\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"width\", {\n /**\r\n * @return Width (absolute or relative)\r\n */\n get: function () {\n return this.getPropertyValue(\"width\");\n },\n /**\r\n * Element's absolute or relative width.\r\n *\r\n * The width can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative width will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `width` is an accessor, which allows setting width in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelWidth` or `percentWidth`, so if\r\n * you need to add an adapter for width add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Width (numeric in pixels or relative)\r\n */\n set: function (value) {\n var changed = this.setPercentProperty(\"width\", value, true, false, this._positionPrecision, true);\n if (changed) {\n this.percentWidth = undefined;\n this.relativeWidth = undefined;\n if (value instanceof Percent) {\n this.percentWidth = value.percent;\n if ($type.isNumber(this._pixelWidth)) {\n this.maxWidth = undefined;\n }\n this._pixelWidth = undefined;\n } else {\n this._pixelWidth = Number(value);\n //this._measuredWidth = this._pixelWidth;\n this.maxWidth = this._pixelWidth;\n }\n this.invalidatePosition();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"height\", {\n /**\r\n * @return height (absolute or relative)\r\n */\n get: function () {\n return this.getPropertyValue(\"height\");\n },\n /**\r\n * Element's absolute or relative height.\r\n *\r\n * The height can either be absolute, set in numeric pixels, or relative, set\r\n * in [[Percent]].\r\n *\r\n * Relative height will be calculated using closest measured ancestor\r\n * [[Container]].\r\n *\r\n * NOTE: `height` is an accessor, which allows setting height in pixels or\r\n * percent. It is a sort of a \"shortcut\" for the users. Actual renderer does\r\n * not ever use it. It uses either `pixelHeight` or `percentHeight`, so if\r\n * you need to add an adapter for height add it for either of the two\r\n * properties - whichever suits your requirements.\r\n *\r\n * @param value Height (numeric in pixels or relative)\r\n */\n set: function (value) {\n var changed = this.setPercentProperty(\"height\", value, true, false, this._positionPrecision, true);\n if (changed) {\n this.percentHeight = undefined;\n this._relativeHeight = undefined;\n if (value instanceof Percent) {\n this.percentHeight = value.percent;\n if ($type.isNumber(this._pixelHeight)) {\n this.maxHeight = undefined;\n }\n this._pixelHeight = undefined;\n } else {\n this._pixelHeight = Number(value);\n //this._measuredHeight = this._pixelHeight;\n this.maxHeight = this._pixelHeight; // yes, we reset maxWidth\n }\n this.invalidatePosition();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelWidth\", {\n /**\r\n * Returns element's width in pixels, if width was set. For actual width use measuredWidth property.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\n get: function () {\n var width;\n if ($type.isNumber(this.percentWidth)) {\n width = this.maxWidth;\n } else if ($type.isNumber(this._pixelWidth)) {\n width = this._pixelWidth;\n } else {\n width = 0;\n }\n var minWidth = this.minWidth;\n if (minWidth != null && width < minWidth) {\n width = minWidth;\n }\n var value = $math.round(width, this._positionPrecision, true);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelWidth\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelHeight\", {\n /**\r\n * Returns element's height in pixels. For actual height use measuredHeight property.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\n get: function () {\n var height;\n if ($type.isNumber(this.percentHeight)) {\n height = this.maxHeight;\n } else if ($type.isNumber(this._pixelHeight)) {\n height = this._pixelHeight;\n } else {\n height = 0; //this._measuredHeightSelf;\n }\n var minHeight = this.minHeight;\n if (minHeight != null && height < minHeight) {\n height = minHeight;\n }\n var value = $math.round(height, this._positionPrecision, true);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelHeight\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeWidth\", {\n /**\r\n * @return Relative width\r\n * @ignore\r\n */\n get: function () {\n var relativeWidth = this._relativeWidth;\n if ($type.isNumber(relativeWidth)) {\n if (!this._adapterO) {\n return relativeWidth;\n } else {\n return this._adapterO.apply(\"relativeWidth\", relativeWidth);\n }\n }\n },\n /**\r\n * Element's relative width in [[Percent]].\r\n * @ignore\r\n *\r\n * @param value Relative width\r\n */\n set: function (value) {\n if (this._relativeWidth != value) {\n this._relativeWidth = value;\n //\t\t\tthis.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeHeight\", {\n /**\r\n * @return Relative height\r\n * @ignore\r\n */\n get: function () {\n var relativeHeight = this._relativeHeight;\n if ($type.isNumber(relativeHeight)) {\n if (!this._adapterO) {\n return relativeHeight;\n } else {\n return this._adapterO.apply(\"relativeHeight\", relativeHeight);\n }\n }\n },\n /**\r\n * Element's relative height in [[Percent]].\r\n *\r\n * @param value Relative height\r\n * @ignore\r\n */\n set: function (value) {\n if (this._relativeHeight != value) {\n this._relativeHeight = value;\n //\t\t\tthis.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"measuredWidth\", {\n /**\r\n * Returns element's measured width in pixels.\r\n *\r\n * A measured width is actual width of contents plus `paddingRight` and* `paddingLeft`, relative to sprite parent, meaning that\r\n * rotation and scale is taken into account.\r\n *\r\n * @readonly\r\n * @return Width (px)\r\n */\n get: function () {\n if (this.disabled || this.__disabled) {\n return 0;\n }\n if (!this._adapterO) {\n return this._measuredWidth;\n } else {\n return this._adapterO.apply(\"measuredWidth\", this._measuredWidth);\n }\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\n //return this.adapter.apply(\"measuredWidth\", $math.fitToRange(this._measuredWidth, this.minWidth, this.maxWidth));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"measuredHeight\", {\n /**\r\n * Returns elements's measured height in pixels.\r\n *\r\n * A measured height is actual height of contents plus `paddingTop` and `paddingBottom`, relative to sprite parent, meaning that\r\n * rotation and scale taken into account.\r\n *\r\n * @readonly\r\n * @return Height (px)\r\n */\n get: function () {\n if (this.disabled || this.__disabled) {\n return 0;\n }\n // it's not good to fit to min/max range as then rotations and scale won't be taken into account\n //return this.adapter.apply(\"measuredHeight\", $math.fitToRange(this._measuredHeight, this.minHeight, this.maxHeight));\n if (!this._adapterO) {\n return this._measuredHeight;\n } else {\n return this._adapterO.apply(\"measuredHeight\", this._measuredHeight);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"outerWidth\", {\n /**\r\n * Returns element's measured width plus its left and right margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer width (px)\r\n */\n get: function () {\n var value = this.pixelWidth + this.pixelMarginRight + this.pixelMarginLeft;\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"outerWidth\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"outerHeight\", {\n /**\r\n * Returns element's measured height plus its top and bottom margins in\r\n * pixels.\r\n *\r\n * @readonly\r\n * @return Outer height (px)\r\n */\n get: function () {\n var value = this.pixelHeight + this.pixelMarginTop + this.pixelMarginBottom;\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"outerHeight\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"innerWidth\", {\n /**\r\n * Returns element's measured inner width in pixels.\r\n *\r\n * Inner width is actual available space for content, e.g. element's width\r\n * minus horizontal padding.\r\n *\r\n * @readonly\r\n * @return Inner width (px)\r\n */\n get: function () {\n var value = Math.max(0, this.pixelWidth - this.pixelPaddingRight - this.pixelPaddingLeft);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"innerWidth\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"innerHeight\", {\n /**\r\n * Returns element's measured inner height in pixels.\r\n *\r\n * Inner height is actual available space for content, e.g. element's height\r\n * minus vertical padding.\r\n *\r\n * @readonly\r\n * @return Inner height (px)\r\n */\n get: function () {\n var value = Math.max(0, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"innerHeight\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"globalScale\", {\n /**\r\n * Returns element's current \"global\" scale.\r\n *\r\n * Scale values accumulate over hierarchy of elements.\r\n *\r\n * E.g. if a [[Container]] has `scale = 2` and it's child has a `scale = 2`,\r\n * the child's `globalScale` will be 4. (a multitude of `2 x 2`)\r\n *\r\n * @readonly\r\n * @return Global scale\r\n */\n get: function () {\n var scale = this.scale;\n if (this._parent) {\n scale = scale * this._parent.globalScale;\n }\n if (!this._adapterO) {\n return scale;\n } else {\n return this._adapterO.apply(\"globalScale\", scale);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"scale\", {\n /**\r\n * @return Scale (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"scale\");\n },\n /**\r\n * Scale of the element.\r\n *\r\n * The scale is set from 0 (element reduced to nothing) to 1 (default size).\r\n * * 2 will mean element is increased twice.\r\n * * 0.5 - reduced by 50%.\r\n *\r\n * Etc.\r\n *\r\n * @param value Scale (0-1)\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n if (value < 0) {\n value = 0;\n }\n if (value != this.getPropertyValue(\"scale\")) {\n this.setPropertyValue(\"scale\", value, false, true);\n this.handleGlobalScale();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets all four margins for the element at once.\r\n *\r\n * Margins are set in pixels.\r\n *\r\n * @param top Top margin\r\n * @param right Right margin\r\n * @param bottom Bottom margin\r\n * @param left Left margin\r\n * @return Current element\r\n */\n Sprite.prototype.margin = function (top, right, bottom, left) {\n this.marginTop = top;\n this.marginRight = right;\n this.marginBottom = bottom;\n this.marginLeft = left;\n return this;\n };\n Object.defineProperty(Sprite.prototype, \"marginLeft\", {\n /**\r\n * @return Margin value\r\n */\n get: function () {\n return this.getPropertyValue(\"marginLeft\");\n },\n /**\r\n * Left margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\n set: function (value) {\n this.setPercentProperty(\"marginLeft\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"marginRight\", {\n /**\r\n * @return Margin value\r\n */\n get: function () {\n return this.getPropertyValue(\"marginRight\");\n },\n /**\r\n * Right margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\n set: function (value) {\n this.setPercentProperty(\"marginRight\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"marginTop\", {\n /**\r\n * @return Margin value\r\n */\n get: function () {\n return this.getPropertyValue(\"marginTop\");\n },\n /**\r\n * Top margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\n set: function (value) {\n this.setPercentProperty(\"marginTop\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"marginBottom\", {\n /**\r\n * @return Margin value\r\n */\n get: function () {\n return this.getPropertyValue(\"marginBottom\");\n },\n /**\r\n * Bottom margin - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Margin value\r\n */\n set: function (value) {\n this.setPercentProperty(\"marginBottom\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelMarginRight\", {\n /**\r\n * Returns current right margin in pixels.\r\n *\r\n * @readonly\r\n * @return Right margin (px)\r\n */\n get: function () {\n var value = this.getPixelX(this.marginRight);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelMarginRight\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeMarginRight\", {\n /**\r\n * Returns current relative right margin.\r\n *\r\n * @readonly\r\n * @return Relative right margin\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n var value = this.getRelativeX(this.marginRight);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"relativeMarginRight\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelMarginLeft\", {\n /**\r\n * Returns current left margin in pixels.\r\n *\r\n * @readonly\r\n * @return Left margin (px)\r\n */\n get: function () {\n var value = this.getPixelX(this.marginLeft);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelMarginLeft\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeMarginLeft\", {\n /**\r\n * Returns current relative left margin.\r\n *\r\n * @readonly\r\n * @return Relative left margin\r\n */\n get: function () {\n //@todo Maybe use [[Percent]]?\n var value = this.getRelativeX(this.marginLeft);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"relativeMarginLeft\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelMarginTop\", {\n /**\r\n * Returns current top margin in pixels.\r\n *\r\n * @readonly\r\n * @return Top margin (px)\r\n */\n get: function () {\n var value = this.getPixelY(this.marginTop);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelMarginTop\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeMarginTop\", {\n /**\r\n * Returns current relative top margin.\r\n *\r\n * @readonly\r\n * @return Relative top margin\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n var value = this.getRelativeY(this.marginTop);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"relativeMarginTop\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelMarginBottom\", {\n /**\r\n * Returns current bottom margin in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom margin (px)\r\n */\n get: function () {\n var value = this.getPixelY(this.marginBottom);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"pixelMarginBottom\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativeMarginBottom\", {\n /**\r\n * Returns current relative bottom margin.\r\n *\r\n * @readonly\r\n * @return Relative bottom margin\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n var value = this.getRelativeY(this.marginBottom);\n if (!this._adapterO) {\n return value;\n } else {\n return this._adapterO.apply(\"relativeMarginBottom\", value);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets padding for the element in pixels.\r\n *\r\n * @param top Top padding (px)\r\n * @param right Right padding (px)\r\n * @param bottom Bottom padding (px)\r\n * @param left Left padding (px)\r\n * @return Element\r\n */\n Sprite.prototype.padding = function (top, right, bottom, left) {\n this.paddingTop = top;\n this.paddingRight = right;\n this.paddingBottom = bottom;\n this.paddingLeft = left;\n return this;\n };\n Object.defineProperty(Sprite.prototype, \"paddingLeft\", {\n /**\r\n * @return Padding value\r\n */\n get: function () {\n return this.getPropertyValue(\"paddingLeft\");\n },\n /**\r\n * Left padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\n set: function (value) {\n this.setPercentProperty(\"paddingLeft\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"paddingRight\", {\n /**\r\n * @return Padding value\r\n */\n get: function () {\n return this.getPropertyValue(\"paddingRight\");\n },\n /**\r\n * Right padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\n set: function (value) {\n this.setPercentProperty(\"paddingRight\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"paddingTop\", {\n /**\r\n * @return Padding value\r\n */\n get: function () {\n return this.getPropertyValue(\"paddingTop\");\n },\n /**\r\n * Top padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\n set: function (value) {\n this.setPercentProperty(\"paddingTop\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"paddingBottom\", {\n /**\r\n * @return Padding value\r\n */\n get: function () {\n return this.getPropertyValue(\"paddingBottom\");\n },\n /**\r\n * Bottom padding - absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Padding value\r\n */\n set: function (value) {\n this.setPercentProperty(\"paddingBottom\", value, true, true, this._positionPrecision, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelPaddingRight\", {\n /**\r\n * Returns current right padding in pixels.\r\n *\r\n * @readonly\r\n * @return Right padding (px)\r\n */\n get: function () {\n return this.getPixelX(this.paddingRight);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativePaddingRight\", {\n /**\r\n * Returns current relative right padding.\r\n *\r\n * @readonly\r\n * @return Relative right padding\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n return this.getRelativeX(this.paddingRight);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelPaddingLeft\", {\n /**\r\n * Returns current left padding in pixels.\r\n *\r\n * @readonly\r\n * @return Left padding (px)\r\n */\n get: function () {\n return this.getPixelX(this.paddingLeft);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativePaddingLeft\", {\n /**\r\n * Returns current relative left padding.\r\n *\r\n * @readonly\r\n * @return Relative left padding\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n return this.getRelativeX(this.paddingLeft);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelPaddingTop\", {\n /**\r\n * Returns current top padding in pixels.\r\n *\r\n * @readonly\r\n * @return Top padding (px)\r\n */\n get: function () {\n return this.getPixelY(this.paddingTop);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativePaddingTop\", {\n /**\r\n * Returns current relative top padding.\r\n *\r\n * @readonly\r\n * @return Relative top padding\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n return this.getRelativeY(this.paddingTop);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelPaddingBottom\", {\n /**\r\n * Returns current bottom padding in pixels.\r\n *\r\n * @readonly\r\n * @return Bottom padding (px)\r\n */\n get: function () {\n return this.getPixelY(this.paddingBottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"relativePaddingBottom\", {\n /**\r\n * Returns current relative bottom padding.\r\n *\r\n * @readonly\r\n * @return Relative bottom padding\r\n */\n get: function () {\n // @todo Maybe use [[Percent]]?\n return this.getRelativeY(this.paddingBottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"path\", {\n /**\r\n * @return Path of a Sprite element\r\n */\n get: function () {\n return this.getPropertyValue(\"path\");\n },\n /**\r\n * ==========================================================================\r\n * APPEARANCE-RELATED PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Path of Sprite element\r\n */\n set: function (value) {\n this.setPath(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n Sprite.prototype.setPath = function (value) {\n if (this.setPropertyValue(\"path\", value)) {\n if (this._adapterO) {\n value = this._adapterO.apply(\"path\", value);\n }\n if (!this._isPath) {\n if (!this.element || this.element.node && !(this.element.node instanceof SVGPathElement)) {\n this.element = this.paper.add(\"path\");\n }\n this._isPath = true;\n }\n if ($type.hasValue(value)) {\n this.element.attr({\n \"d\": value\n });\n } else {\n this.element.removeAttr(\"d\");\n }\n this.invalidatePosition();\n // otherwise is 0x0\n if (!this.inited) {\n this.events.once(\"inited\", this.validatePosition, this, false);\n }\n return true;\n }\n return false;\n };\n Object.defineProperty(Sprite.prototype, \"fillModifier\", {\n /**\r\n * @return Fill color modifier\r\n */\n get: function () {\n return this.getPropertyValue(\"fillModifier\");\n },\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's fill, e.g. create gradients.\r\n *\r\n * @param value Fill color modifiier\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"fillModifier\", value)) {\n this.setFill(this.fill);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeModifier\", {\n /**\r\n * @return Stroke color modifier\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeModifier\");\n },\n /**\r\n * [[ColorModifier]] that can be used to modify color and pattern of the\r\n * element's stroke (outline), e.g. create gradients.\r\n *\r\n * @param value Stroke color modifier\r\n */\n set: function (value) {\n this.setPropertyValue(\"strokeModifier\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"fillOpacity\", {\n /**\r\n * @return Opacity (0-9)\r\n */\n get: function () {\n return this.getPropertyValue(\"fillOpacity\");\n },\n /**\r\n * Element's fill opacity.\r\n *\r\n * Opacity ranges from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n value = $math.toNumberRange(value, 0, 1);\n if (this.setPropertyValue(\"fillOpacity\", value)) {\n this.setSVGAttribute({\n \"fill-opacity\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"fill\", {\n /**\r\n * @return Fill\r\n */\n get: function () {\n return this.getPropertyValue(\"fill\");\n },\n /**\r\n * Element's fill color or pattern.\r\n *\r\n * @param value Fill\r\n */\n set: function (value) {\n this.setFill(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\n Sprite.prototype.setFill = function (value) {\n if (!$type.isObject(value) || \"r\" in value) {\n value = toColor(value);\n }\n if (this.setColorProperty(\"fill\", value) || this.fillModifier) {\n // this can not go into next if, as value is turned to Gradient\n if (value instanceof Color) {\n if (this.fillModifier) {\n value = this.fillModifier.modify(value);\n }\n }\n this.realFill = value;\n // todo: review this place when some Color type will be added\n if (value instanceof Color) {\n this.setSVGAttribute({\n \"fill\": value.toString()\n });\n } else if (!$type.hasValue(value)) {\n this.removeSVGAttribute(\"fill\");\n } else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\n var fill = value;\n fill.paper = this.paper;\n this.setSVGAttribute({\n \"fill\": \"url(\\\"\" + $utils.getBaseURI() + fill.id + \"\\\")\"\n });\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"opacity\", {\n /**\r\n * @return Opacity (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"opacity\");\n },\n /**\r\n * Element's opacity.\r\n *\r\n * Opacity setting can range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * ATTENTION: It is highly not recommended to use `opacity` directly on the\r\n * element. The charts use `opacity` to hide/show elements, so your setting\r\n * might be lost if element is hidden and then later shown.\r\n *\r\n * Instead use methods `hide()` and `show()` to completely toggle off and on\r\n * the element.\r\n *\r\n * Or, use properties `fillOpacity` and `strokeOpacity`, if you need to make\r\n * the element semi-transparent.\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n value = $math.toNumberRange(value, 0, 1);\n if (this.setPropertyValue(\"opacity\", value)) {\n this.setSVGAttribute({\n \"opacity\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"stroke\", {\n /**\r\n * @return Stroke setting\r\n */\n get: function () {\n return this.getPropertyValue(\"stroke\");\n },\n /**\r\n * Element's stroke (outline) color or pattern.\r\n *\r\n * @param value Stroke setting\r\n */\n set: function (value) {\n this.setStroke(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets actual `stroke` property on the SVG element, including applicable\r\n * color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Stroke setting\r\n */\n Sprite.prototype.setStroke = function (value) {\n if (!$type.isObject(value) || \"r\" in value) {\n value = toColor(value);\n }\n if (this.setColorProperty(\"stroke\", value) || this.strokeModifier) {\n // this can not go into next if, as value is turned to Gradient\n if (value instanceof Color) {\n if (this.strokeModifier) {\n value = this.strokeModifier.modify(value);\n }\n }\n this.realStroke = value;\n if (value instanceof Color) {\n if (value.hex == \"none\") {\n this.removeSVGAttribute(\"stroke\");\n } else {\n this.setSVGAttribute({\n \"stroke\": value.toString()\n });\n }\n } else if (!$type.hasValue(value)) {\n this.removeSVGAttribute(\"stroke\");\n } else if (value instanceof Pattern || value instanceof LinearGradient || value instanceof RadialGradient) {\n var stroke = value;\n stroke.paper = this.paper;\n this.setSVGAttribute({\n \"stroke\": \"url(\\\"\" + $utils.getBaseURI() + stroke.id + \"\\\")\"\n });\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"strokeOpacity\", {\n /**\r\n * @return Opacity (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeOpacity\");\n },\n /**\r\n * Stroke (outline) opacity.\r\n *\r\n * The values may range from 0 (fully transparent) to 1 (fully opaque).\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n value = $math.toNumberRange(value, 0, 1);\n if (this.setPropertyValue(\"strokeOpacity\", value)) {\n this.setSVGAttribute({\n \"stroke-opacity\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"nonScalingStroke\", {\n /**\r\n * @return Do not scale stroke (outline)\r\n */\n get: function () {\n return this.getPropertyValue(\"nonScalingStroke\");\n },\n /**\r\n * Controls if the element's stroke (outline) should remain keep constant\r\n * thicnkess and do not scale when the whole element is resized.\r\n *\r\n * @param value Do not scale stroke (outline)\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.setPropertyValue(\"nonScalingStroke\", value)) {\n this.strokeWidth = this.strokeWidth;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"nonScaling\", {\n /**\r\n * @return Is element scaleable?\r\n */\n get: function () {\n return this.getPropertyValue(\"nonScaling\");\n },\n /**\r\n * Controls if element should keep constant size and not scale even if there is\r\n * space available, or it does not fit.\r\n *\r\n * @param value Is element scaleable?\r\n */\n set: function (value) {\n // @todo Description (review)\n value = $type.toBoolean(value);\n this.setPropertyValue(\"nonScaling\", value, false, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeWidth\", {\n /**\r\n * @return Thickness (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeWidth\");\n },\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Thickness (px)\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n this.setPropertyValue(\"strokeWidth\", value, true);\n if (this.nonScalingStroke) {\n if (!$type.isNumber(value)) {\n value = 1;\n }\n value = value / this.globalScale;\n }\n this.setSVGAttribute({\n \"stroke-width\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeDasharray\", {\n /**\r\n * @return `stroke-dasharray`\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeDasharray\");\n },\n /**\r\n * A `stroke-dasharray` for the stroke (outline).\r\n *\r\n * \"Dasharray\" allows setting rules to make lines dashed, dotted, etc.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray} for more info on `stroke-dasharray`\r\n * @param value `stroke-dasharray`\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"strokeDasharray\", value)) {\n this.setSVGAttribute({\n \"stroke-dasharray\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeDashoffset\", {\n /**\r\n * @return `stroke-dashoffset`\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeDashoffset\");\n },\n /**\r\n * A `stroke-dashoffset` for the stroke (outline).\r\n *\r\n * \"Dashoffset\" allows setting the start position of the dashes if\r\n * `strokeDasharray` is used.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dashoffset} for more info on `stroke-dashoffset`\r\n * @param value `stroke-dashoffset`\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n if (this.setPropertyValue(\"strokeDashoffset\", value)) {\n this.setSVGAttribute({\n \"stroke-dashoffset\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeLinecap\", {\n /**\r\n * @return `stroke-linecap`\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeLinecap\");\n },\n /**\r\n * A `stroke-linecap` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linecap`\r\n * @param value `stroke-linecap`\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"strokeLinecap\", value)) {\n this.setSVGAttribute({\n \"stroke-linecap\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"strokeLinejoin\", {\n /**\r\n * @return `stroke-linejoin`\r\n */\n get: function () {\n return this.getPropertyValue(\"strokeLinejoin\");\n },\n /**\r\n * A `stroke-linejoin` to indicate how line ends are drawn.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Fills_and_Strokes#Stroke} for more info on `stroke-linejoin`\r\n * @param value `stroke-linejoin`\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"strokeLinejoin\", value)) {\n this.setSVGAttribute({\n \"stroke-linejoin\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"shapeRendering\", {\n /**\r\n * @return 'shape-rendering' value\r\n */\n get: function () {\n return this.getPropertyValue(\"shapeRendering\");\n },\n /**\r\n * An SVG-specific `shape-rendering` value.\r\n *\r\n * `shape-rendering` controls how vector graphics are drawn and rendered.\r\n *\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering} for more information about `shape-rendering`\r\n * @default \"auto\"\r\n * @param value 'shape-rendering' value\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"shapeRendering\", value)) {\n this.setSVGAttribute({\n \"shape-rendering\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"pixelPerfect\", {\n /**\r\n * @return Use pixel perfect?\r\n */\n get: function () {\n return this.getPropertyValue(\"pixelPerfect\");\n },\n /**\r\n * Controls if SVG vectors should be drawn with \"pixel\" precision, producing\r\n * perfectly crisp lines on retina displays.\r\n *\r\n * Setting this to `true` might improve visual quality, but may have a\r\n * negative effect on performance.\r\n *\r\n * Different elements use different default setting for `pixelPerfect`.\r\n *\r\n * We recommend leaving this at their default settings, unless there's a\r\n * specific need.\r\n *\r\n * @param value Use pixel perfect?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (value) {\n this._positionPrecision = options.pixelPerfectPrecision;\n } else {\n this._positionPrecision = 3;\n }\n this.setPropertyValue(\"pixelPerfect\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"rtl\", {\n /**\r\n * @return RTL?\r\n */\n get: function () {\n if ($type.hasValue(this._rtl)) {\n return this._rtl;\n } else if (this._topParent) {\n return this._topParent.rtl;\n }\n //this.rtl = false;\n return false;\n },\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (this.isBaseSprite) {\n this.topParent.rtl = value;\n }\n this._rtl = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * ==========================================================================\r\n * VISIBILITY AND ORDER PROPERTIES AND RELATED STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Reveals hidden element.\r\n *\r\n * Has no effect if element is already visible.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * @param duration Fade in duration (ms)\r\n * @return Animation object if such object was created\r\n */\n Sprite.prototype.show = function (duration) {\n return this.showReal(duration);\n };\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\n Sprite.prototype.showReal = function (duration) {\n var _this = this;\n if (this.preventShow) {\n return;\n }\n var transition;\n var properties = this.defaultState.properties;\n if (!this.disabled && (this.isHidden || !this.visible || this.isHiding || properties.opacity != null && this.opacity < properties.opacity && !this.isShowing) && !this.isDisposed()) {\n // helps to avoid flicker, as show might change opacity or visibility but item might be at invalid state/position\n if (this.invalid) {\n this.validate();\n }\n if (this.positionInvalid) {\n this.validatePosition();\n }\n if (!$type.isNumber(duration)) {\n duration = this.defaultState.transitionDuration;\n }\n if (this._hideAnimation) {\n this._hideAnimation.kill();\n this._hideAnimation = undefined;\n }\n // Cancel hide handler just in case it was there\n if (this._showHideDisposer) {\n this.removeDispose(this._showHideDisposer);\n }\n this._isHidden = false;\n this.isHiding = false;\n this.isShowing = true;\n // Apply current state\n transition = this.applyCurrentState(duration);\n if (transition && !transition.isFinished()) {\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\n _this.isShowing = false;\n });\n this._disposers.push(this._showHideDisposer);\n } else {\n this.isShowing = false;\n }\n // Make it visible\n var visible = this.defaultState.properties.visible;\n if (!$type.hasValue(visible)) {\n visible = true;\n }\n this.visible = visible;\n // Unhide from screen readers\n this.readerHidden = false;\n // Dispatch \"show\" event\n this.dispatchImmediately(\"shown\");\n }\n return transition;\n };\n /**\r\n * Initiates hiding of Sprite.\r\n * When called it will fade out the the Sprite to transparency, then make it\r\n * invisible.\r\n * @param duration Duration in millisecons\r\n */\n /**\r\n * Hides the element, by applying `hidden` state.\r\n *\r\n * Has no effect if element is already hidden.\r\n *\r\n * If `duration` is not specified, it will use default.\r\n *\r\n * While element is fading out, its `isHiding` property will resolve to\r\n * `true`.\r\n *\r\n * When element is hidden, its `visible` property will resolve to `false`.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return hide Animation object if such object was created\r\n */\n Sprite.prototype.hide = function (duration) {\n return this.hideReal(duration);\n };\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\n Sprite.prototype.hideReal = function (duration) {\n var _this = this;\n var transition;\n if (!this.isHiding && this.visible && !this.isDisposed()) {\n // added to solve 51375\n if (this.tooltip && this.tooltip.currentSprite == this) {\n this.hideTooltip(0);\n }\n if (this._hideAnimation) {\n this._hideAnimation.kill();\n this._hideAnimation = undefined;\n }\n this.isShowing = false;\n // Cancel hide handler just in case it was there\n if (this._showHideDisposer) {\n this.removeDispose(this._showHideDisposer);\n }\n // Get state\n var hiddenState_1 = this.hiddenState;\n // Transition to \"hidden\" state, provided Sprite has one set\n if (hiddenState_1) {\n // Yes, we have a \"hidden\" state\n // `setState` will return an `Animation` object which we can set\n // events on\n transition = this.setState(hiddenState_1, duration, undefined);\n if (transition && !transition.isFinished()) {\n this._hideAnimation = transition;\n this._showHideDisposer = transition.events.on(\"animationended\", function () {\n _this.isHiding = false;\n _this._isHidden = true;\n if (hiddenState_1.properties.visible == false) {\n _this.visible = false;\n }\n }, this);\n this._disposers.push(this._showHideDisposer);\n // Thrown everything into `_disposers` just in case Sprite gets\n // destroyed in the meantime\n this._disposers.push(transition);\n } else {\n this.isHiding = false;\n this._isHidden = true;\n }\n } else {\n // No hidden state, let's just set `visible` and call it a day\n this.visible = false;\n this.isHiding = false;\n this._isHidden = true;\n }\n // Hide from screen readers\n this.readerHidden = true;\n // Dispach \"hidden\" event\n this.dispatchImmediately(\"hidden\");\n this.invalidate(); // hide it at once to avoid flickers // validate() causes SO\n }\n if (!$type.isNumber(duration)) {\n duration = this.hiddenState.transitionDuration;\n }\n return transition;\n };\n Object.defineProperty(Sprite.prototype, \"visible\", {\n /**\r\n * @return Visible?\r\n */\n get: function () {\n return this.getVisibility();\n },\n /**\r\n * Indicates if element is current visible (`true`) or hidden (`false`).\r\n *\r\n * @param value Visible?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n this.setVisibility(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\n Sprite.prototype.getVisibility = function () {\n var value = this.getPropertyValue(\"visible\");\n if (!$type.hasValue(value)) {\n value = true;\n }\n return value;\n };\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\n Sprite.prototype.setVisibility = function (value) {\n if (this.setPropertyValue(\"visible\", value)) {\n if (value) {\n this.group.removeAttr(\"visibility\");\n } else {\n this.group.attr({\n \"visibility\": \"hidden\"\n });\n }\n //this.invalidatePosition();\n if (this.events.isEnabled(\"visibilitychanged\")) {\n var event_4 = {\n type: \"visibilitychanged\",\n target: this,\n visible: value\n };\n this.events.dispatchImmediately(\"visibilitychanged\", event_4);\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"zIndex\", {\n /**\r\n * @return zIndex\r\n */\n get: function () {\n return this.getPropertyValue(\"zIndex\");\n },\n /**\r\n * A \"zIndex\" of the element.\r\n *\r\n * \"zIndex\" determines the order of how elements are placed over each other.\r\n *\r\n * Higher \"zIndex\" will mean the element will be draw on top of elements\r\n * with lower \"zIndexes\".\r\n *\r\n * @param value zIndex\r\n */\n set: function (value) {\n value = $type.toNumber(value);\n if (this.setPropertyValue(\"zIndex\", value)) {\n this.dispatch(\"zIndexChanged\");\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Moves the element to the very top in element order, so that it appears\r\n * in front of other elements.\r\n */\n Sprite.prototype.toFront = function () {\n var parent = this._parent;\n if (parent && parent.children.indexOf(this) != parent.children.length - 1) {\n parent.children.moveValue(this, parent.children.length - 1);\n this.dispatch(\"zIndexChanged\");\n }\n };\n /**\r\n * Moves the element to the very bottom in the element order, so that it\r\n * appears behind other elements.\r\n */\n Sprite.prototype.toBack = function () {\n var parent = this._parent;\n if (parent && parent.children.indexOf(this) != 0) {\n parent.children.moveValue(this, 0);\n this.dispatch(\"zIndexChanged\");\n }\n };\n Object.defineProperty(Sprite.prototype, \"userClassName\", {\n /**\r\n * @return Class name\r\n */\n get: function () {\n return this.getPropertyValue(\"userClassName\");\n },\n /**\r\n * A custom class name to set on the element.\r\n *\r\n * If set, the value will be added to element's `class` attribute.\r\n *\r\n * @since 4.9.11\r\n * @param value Class name\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"userClassName\", value)) {\n if (!value && this.userClassName) {\n this.group.removeClass(this.userClassName);\n }\n this.setClassName();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltip\", {\n /**\r\n * @return Tooltip\r\n */\n get: function () {\n if (this._tooltip) {\n return this._tooltip;\n } else if (this.virtualParent) {\n return this.virtualParent.tooltip;\n } else if (this._parent) {\n return this._parent.tooltip;\n }\n },\n /**\r\n * ==========================================================================\r\n * TOOLTIP-RELATED PROPERTIES STUFF\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * A [[Tooltip]] object to be used when displayed rollover information for\r\n * the element.\r\n *\r\n * @param tooltip Tooltip\r\n */\n set: function (tooltip) {\n if (this._tooltip) {\n //this._tooltip.dispose();\n this.removeDispose(this._tooltip);\n }\n this._tooltip = tooltip;\n if (tooltip) {\n tooltip.parent = this.tooltipContainer;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipDataItem\", {\n /**\r\n * @return Tooltip data item\r\n */\n get: function () {\n var tooltipDataItem = this._tooltipDataItem;\n if (tooltipDataItem) {\n return tooltipDataItem;\n } else {\n return this.dataItem;\n }\n },\n /**\r\n * A [[DataItem]] to use when populating content for the element's\r\n * [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link DataItem}\r\n * @param value Tooltip data item\r\n */\n set: function (value) {\n // important: do not dispose tooltip dataItem, as it is some actual data item from data!\n this._tooltipDataItem = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipColorSource\", {\n /**\r\n * @return Tooltip color source\r\n */\n get: function () {\n return this._tooltipColorSource;\n },\n /**\r\n * A [[Sprite]] or sprite template to use when getting colors for tooltip. If a template is set,\r\n * tooltip will look for a clone in tooltipDataItem.sprites. If no clone is found, then template colors will be used.\r\n *\r\n * @see {@link Tooltip}\r\n * @see {@link Sprite}\r\n * @param sprite Sprite\r\n */\n set: function (sprite) {\n this._tooltipColorSource = sprite;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Shows the element's [[Tooltip]].\r\n *\r\n * A tooltip will be populated using text templates in either `tooltipHTML` or\r\n * `tooltipText` as well as data in `tooltipDataItem`.\r\n *\r\n * @see {@link Tooltip}\r\n * @param optional point (sprite-related) to which tooltip must point.\r\n * @return returns true if the tooltip was shown and false if it wasn't (no text was found)\r\n */\n Sprite.prototype.showTooltip = function (point) {\n if (this.showTooltipOn == \"always\" && !this._tooltip && this.tooltip) {\n this._tooltip = this.tooltip.clone();\n }\n if (!point && this.tooltipPosition == \"pointer\" && this.isHover) {\n point = $utils.documentPointToSvg(getInteraction().lastPointer.point, this.svgContainer.SVGContainer, this.svgContainer.cssScale);\n }\n // do not show if hidden\n var sprite = this;\n while (sprite != undefined) {\n if (!sprite.visible || sprite.disabled || sprite.__disabled) {\n if (this._tooltip && this._tooltip.visible) {\n this._tooltip.hide(0);\n }\n return;\n }\n sprite = sprite.parent;\n }\n if ($type.hasValue(this.tooltipText) || $type.hasValue(this.tooltipHTML)) {\n var tooltip = this.tooltip;\n var tooltipDataItem = this.tooltipDataItem;\n if (tooltip) {\n tooltip.targetSprite = this;\n var colorSource_1 = this;\n var tooltipColorSource_1 = this.tooltipColorSource;\n if ((tooltip.getStrokeFromObject || tooltip.getFillFromObject) && tooltipColorSource_1) {\n if (tooltipColorSource_1.isTemplate) {\n if (tooltipDataItem) {\n $array.eachContinue(tooltipDataItem.sprites, function (sprite) {\n if (sprite.clonedFrom == tooltipColorSource_1) {\n colorSource_1 = sprite;\n return false;\n }\n return true;\n });\n }\n } else {\n colorSource_1 = tooltipColorSource_1;\n }\n }\n if (tooltip.getStrokeFromObject) {\n var stroke = this.stroke;\n var source = colorSource_1;\n while (source.parent != undefined) {\n stroke = source.stroke;\n if (stroke == undefined) {\n source = source.parent;\n }\n if (stroke != undefined) {\n break;\n }\n }\n if (stroke instanceof Color) {\n tooltip.background.animate({\n property: \"stroke\",\n to: stroke\n }, tooltip.animationDuration);\n } else {\n tooltip.background.stroke = stroke;\n }\n }\n // Set data item\n tooltip.dataItem = tooltipDataItem;\n tooltip.label.populateStringFrom = this;\n if (tooltip.getFillFromObject) {\n var fill = this.fill;\n var source = colorSource_1;\n while (source.parent != undefined) {\n fill = source.fill;\n if (fill == undefined || fill instanceof Color && fill.rgb == undefined) {\n source = source.parent;\n } else if (fill != undefined) {\n break;\n }\n }\n if (fill == undefined) {\n fill = color(\"#000000\");\n }\n if (fill instanceof Color) {\n if (!tooltip.visible) {\n tooltip.background.fill = fill;\n } else {\n tooltip.background.animate({\n property: \"fill\",\n to: fill\n }, tooltip.animationDuration);\n }\n } else {\n tooltip.background.fill = fill;\n }\n if (tooltip.autoTextColor && fill instanceof Color) {\n tooltip.label.fill = fill.alternative;\n }\n }\n // Apply tooltip text\n var text = \"\";\n if (this.tooltipHTML) {\n tooltip.html = this.tooltipHTML;\n text = this.tooltipHTML;\n }\n if (this.tooltipText) {\n tooltip.text = this.tooltipText;\n text = this.tooltipText;\n }\n if (this.updateTooltipPosition(point)) {\n // Set accessibility option\n tooltip.readerDescribedBy = this.uidAttr();\n // make label to render to be able to check currentText\n if (tooltip.label.invalid) {\n tooltip.label.validate();\n }\n if (text != undefined && text != \"\" && tooltip.label.currentText != \"\") {\n //@todo: think of how to solve this better\n if (tooltip && !tooltip.parent) {\n tooltip.parent = this.tooltipContainer;\n }\n // Reveal tooltip\n // showing it in 1 ms helps to avoid strange flickering in IE\n var duration = tooltip.defaultState.transitionDuration;\n if (duration <= 0) {\n duration = 1;\n }\n tooltip.show(duration);\n tooltip.currentSprite = this;\n return true;\n } else {\n this.hideTooltip(0);\n }\n } else {\n this.hideTooltip(0);\n }\n }\n }\n return false;\n };\n /**\r\n * @ignore\r\n */\n Sprite.prototype.updateTooltipPosition = function (point) {\n var _this = this;\n if (this.tooltipPosition == \"pointer\") {\n if (this._interactionDisposer) {\n this._interactionDisposer.dispose();\n }\n this._interactionDisposer = getInteraction().body.events.on(\"track\", function (ev) {\n return _this.pointTooltipTo($utils.documentPointToSvg(ev.point, _this.svgContainer.SVGContainer, _this.svgContainer.cssScale), true);\n });\n if (point) {\n return this.pointTooltipTo(point, true);\n }\n } else {\n // Point to the X/Y of this Sprite\n var globalPoint = $utils.spritePointToSvg({\n \"x\": this.getTooltipX(),\n \"y\": this.getTooltipY()\n }, this);\n return this.pointTooltipTo(globalPoint);\n }\n };\n /**\r\n * Sets the point the [[Tooltip]] should point to.\r\n *\r\n * @param point Coordinates to point to\r\n * @param instantly Move instantly without animation\r\n */\n Sprite.prototype.pointTooltipTo = function (point, instantly) {\n var tooltip = this.tooltip;\n if (tooltip && this.topParent) {\n if (tooltip.showInViewport) {\n tooltip.pointTo(point, instantly);\n return true;\n }\n if ($math.isInRectangle(point, {\n x: 0,\n y: 0,\n width: this.topParent.maxWidth,\n height: this.topParent.maxHeight\n })) {\n tooltip.pointTo(point, instantly);\n return true;\n }\n }\n return false;\n };\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\n Sprite.prototype.hideTooltip = function (duration) {\n if (this.showTooltipOn == \"always\") {\n return;\n }\n var tooltip = this.tooltip;\n if (tooltip) {\n if (tooltip.targetSprite == this) {\n tooltip.targetSprite = undefined;\n }\n tooltip.hide(duration);\n if (this._interactionDisposer) {\n this._interactionDisposer.dispose();\n this._interactionDisposer = undefined;\n }\n }\n };\n Object.defineProperty(Sprite.prototype, \"tooltipHTML\", {\n /**\r\n * @return Tooltip HTML content template\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipHTML\");\n },\n /**\r\n * An HTML template to be used to populate [[Tooltip]] contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * @param value Tooltip HTML content template\r\n */\n set: function (value) {\n value = $type.toText(value);\n this.hoverable = true;\n if (this.setPropertyValue(\"tooltipHTML\", value)) {\n if (this.tooltip) {\n if (this.tooltip.visible) {\n this.showTooltip();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipText\", {\n /**\r\n * @return Tooltip content template\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipText\");\n },\n /**\r\n * A text template to be used to populate Tooltip's contents.\r\n *\r\n * If element has `tooltipDataItem` or `dataItem` set, this will be parsed\r\n * for any data values to be replaced with the values from respective data\r\n * items.\r\n *\r\n * This template will also be parsed for any special formatting tags.\r\n *\r\n * @param value Tooltip content template\r\n * @see {@link TextFormatter}\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (value) {\n this.hoverable = true;\n }\n if (this.setPropertyValue(\"tooltipText\", value)) {\n if (this.tooltip) {\n if (this.tooltip.visible) {\n this.showTooltip();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipContainer\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Container\r\n */\n get: function () {\n if (this._tooltipContainer) {\n return this._tooltipContainer;\n } else if (this._parent) {\n return this._parent.tooltipContainer;\n }\n },\n /**\r\n * A container reference that should be used to place element's\r\n * [[Tooltip]] in.\r\n *\r\n * Will use parent's container if does not have one set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Container\r\n * @todo Dispose of the old _tooltipContainer ?\r\n */\n set: function (value) {\n this._tooltipContainer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipX\", {\n /**\r\n * @return Tooltip X (px)\r\n */\n get: function () {\n return this.getTooltipX();\n },\n /**\r\n * X coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip X (px)\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"tooltipX\", value) && this.tooltip) {\n this.tooltip.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"alwaysShowTooltip\", {\n /**\r\n * @return Always show tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"showTooltipOn\") == \"always\";\n },\n /**\r\n * DEPRECATION NOTICE: This setting is deprecated in favor of a more flexible\r\n * setting: `showTooltipOn`. Please use `showTooltipOn = \"always\"` instead.\r\n *\r\n * Indicates if this element should display a tooltip permanently.\r\n *\r\n * Useful, if you want to show permanent tooltips on some items.\r\n *\r\n * @default false\r\n * @since 4.5.4\r\n * @deprecated Use `showTooltipOn = \"always\"` instead\r\n * @param value Always show tooltip?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n if (value) {\n this.showTooltipOn = \"always\";\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"showTooltipOn\", {\n /**\r\n * @return When to show tooltip\r\n */\n get: function () {\n return this.getPropertyValue(\"showTooltipOn\");\n },\n /**\r\n * Indicates when tooltip needs to be shown on this element:\r\n *\r\n * * `\"hover\"` (default) - Tooltip will be shown when element is hovered on.\r\n * * `\"hit\"` - Tooltip will be shown when element is clicked/tapped. Tooltip will be hidden when clicked/tapped anywhere else.\r\n * * `\"always\"` - Tooltip will be shown on the element permanently.\r\n *\r\n * For example, if you would like to show tooltips on all of the columns of\r\n * a [[ColumnSeries]]:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.showTooltipOn = \"always\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"showTooltipOn\": \"always\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * It can even be set to display on a selected columns via `propertyFields`:\r\n *\r\n * ```TypeScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JavaScript\r\n * series.columns.template.propertyFields.showTooltipOn = \"tooltip\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"columns\": {\r\n * \"propertyFields\": {\r\n * \"showTooltipOn\": \"tooltip\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default \"hover\"\r\n * @since 4.7.9\r\n * @param value When to show tooltip\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"showTooltipOn\", value)) {\n if (value == \"hit\") {\n this.clickable = true;\n }\n if (this.tooltip) {\n if (value == \"always\") {\n this.showTooltip();\n } else {\n this.handleAlwaysShowTooltip();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipPosition\", {\n /**\r\n * Position\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipPosition\");\n },\n /**\r\n * Specifies if [[Tooltip]] should follow the mouse or touch pointer or stay\r\n * at the fixed position.\r\n *\r\n * @param value Position\r\n */\n set: function (value) {\n this.setPropertyValue(\"tooltipPosition\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"tooltipY\", {\n /**\r\n * @return Tooltip Y (px)\r\n */\n get: function () {\n return this.getTooltipY();\n },\n /**\r\n * Y coordinate the [[Tooltip]] should be shown at.\r\n *\r\n * @param value Tooltip Y (px)\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"tooltipY\", value) && this.tooltip) {\n this.tooltip.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns Tooltip X coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return X (px)\r\n */\n Sprite.prototype.getTooltipX = function () {\n var x = this.getPropertyValue(\"tooltipX\");\n if (!$type.hasValue(x)) {\n x = percent(50);\n }\n var value;\n if ($type.isNumber(x)) {\n value = x;\n }\n if (x instanceof Percent) {\n value = this.maxLeftSelf + this._measuredWidthSelf * x.value - this.pixelPaddingLeft - this.ex; // overflow is know only for measured items, so this is not always good\n }\n if (!$type.isNumber(value)) {\n value = 0;\n }\n return value;\n };\n /**\r\n * Returns Tooltip Y coordinate if it's set, or middle of the element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Y (px)\r\n */\n Sprite.prototype.getTooltipY = function () {\n var y = this.getPropertyValue(\"tooltipY\");\n if (!$type.hasValue(y)) {\n y = percent(50);\n }\n var value;\n if ($type.isNumber(y)) {\n value = y;\n }\n if (y instanceof Percent) {\n value = this.maxTopSelf + this._measuredHeightSelf * y.value - this.pixelPaddingTop - this.ey; // overflow is know only for measured items, so this is not always good\n }\n if (!$type.isNumber(value)) {\n value = 0;\n }\n return value;\n };\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param e Error\r\n * @todo Implement from applying further actions to this item\r\n */\n Sprite.prototype.raiseCriticalError = function (e, closable) {\n if (this.svgContainer) {\n if (!this._adapterO) {\n this.modal.content = e.message;\n } else {\n this.modal.content = this._adapterO.apply(\"criticalError\", e).message;\n }\n if (!closable) {\n this.disabled = true;\n } else {\n this.modal.closable = true;\n }\n if (!options.suppressErrors) {\n this.modal.open();\n }\n }\n if (options.verbose) {\n console.log(e);\n }\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Sprite.prototype.processConfig = function (config) {\n if (config) {\n // Tooltip color source\n if ($type.hasValue(config.tooltipColorSource) && $type.isString(config.tooltipColorSource) && this.map.hasKey(config.tooltipColorSource)) {\n config.tooltipColorSource = this.map.getKey(config.tooltipColorSource);\n }\n // Cursor styles\n if ($type.hasValue(config.cursorOverStyle) && $type.isString(config.cursorOverStyle)) {\n config.cursorOverStyle = this.getCursorStyle(config.cursorOverStyle);\n }\n if ($type.hasValue(config.cursorDowntyle) && $type.isString(config.cursorDowntyle)) {\n config.cursorDowntyle = this.getCursorStyle(config.cursorDowntyle);\n }\n if ($type.hasValue(config.cursorOptions)) {\n if ($type.hasValue(config.cursorOptions.overStyle) && $type.isString(config.cursorOptions.overStyle)) {\n config.cursorOptions.overStyle = this.getCursorStyle(config.cursorOptions.overStyle);\n }\n if ($type.hasValue(config.cursorOptions.downStyle) && $type.isString(config.cursorOptions.downStyle)) {\n config.cursorOptions.downStyle = this.getCursorStyle(config.cursorOptions.downStyle);\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n this.processDelayedMap();\n };\n /**\r\n * Converts string name of the cursor into actual [[MouseCursorStyle]].\r\n *\r\n * @param style Cursor type\r\n * @return Cursor definition\r\n */\n Sprite.prototype.getCursorStyle = function (style) {\n switch (style) {\n case \"grab\":\n return MouseCursorStyle.grab;\n case \"grabbing\":\n return MouseCursorStyle.grabbing;\n case \"pointer\":\n return MouseCursorStyle.pointer;\n case \"horizontalResize\":\n return MouseCursorStyle.horizontalResize;\n case \"verticalResize\":\n return MouseCursorStyle.verticalResize;\n default:\n return MouseCursorStyle.default;\n }\n };\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\n Sprite.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // Must come last\n else if (a == \"tooltipColorSource\") {\n return 1;\n } else if (b == \"tooltipColorSource\") {\n return -1;\n } else {\n return _super.prototype.configOrder.call(this, a, b);\n }\n };\n Object.defineProperty(Sprite.prototype, \"isHidden\", {\n /**\r\n * If `sprite.hide()` is called, we set isHidden to true when sprite is hidden.\r\n * This was added becaus hidden state might have visibility set to true and so\r\n * there would not be possible to find out if a sprite is technically hidden or not.\r\n */\n get: function () {\n if (this._isHidden) {\n return this._isHidden;\n } else if (this._parent) {\n return this._parent.isHidden;\n }\n return false;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"showOnInit\", {\n /**\r\n * @return Show on init?\r\n */\n get: function () {\n return this.getPropertyValue(\"showOnInit\");\n },\n /**\r\n * If this is set to `true`, Sprite, when inited will be instantly hidden\r\n * (\"hidden\" state applied) and then shown (\"default\" state applied).\r\n *\r\n * If your \"default\" state's `transitionDuration > 0` this will result in\r\n * initial animation from \"hidden\" state to \"default\" state.\r\n *\r\n * If you need a Sprite which has `showOnInit = true` not to be shown\r\n * initially, set `sprite.hidden = true`. Setting `sprite.visible = false`\r\n * will not prevent the animation and the sprite will be shown.\r\n *\r\n * @param value show on init?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n this.setShowOnInit(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n Sprite.prototype.setShowOnInit = function (value) {\n if (this.setPropertyValue(\"showOnInit\", value)) {\n if (!this.isTemplate) {\n if (value && !this.inited && !this.hidden) {\n this._showOnInitDisposer = new MultiDisposer([registry.events.once(\"enterframe\", this.hideInitially, this), this.events.once(\"beforevalidated\", this.hideInitially, this, false), this.events.on(\"inited\", this.appear, this, false)]);\n this._disposers.push(this._showOnInitDisposer);\n } else {\n if (this._showOnInitDisposer) {\n this._showOnInitDisposer.dispose();\n }\n }\n }\n }\n };\n /**\r\n * @ignore\r\n */\n Sprite.prototype.hideInitially = function () {\n if (!this.isDisposed()) {\n this.appeared = false;\n //if (!this.hidden && !this._isHidden) { // not good for series, as on enterframe it doesn't have data items yet.\n if (!this.inited) {\n this.hide(0);\n }\n }\n };\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\n Sprite.prototype.appear = function () {\n var _this = this;\n this.appeared = false;\n if (!this.hidden && !this.isHidden) {\n this.hide(0);\n }\n if (!this.hidden) {\n var animation = this.show();\n if (animation && !animation.isFinished()) {\n this.addDisposer(animation.events.on(\"animationended\", function () {\n _this.appeared = true;\n _this.dispatch(\"appeared\");\n }));\n } else {\n this.appeared = true;\n this.dispatch(\"appeared\");\n }\n } else {\n this.appeared = true;\n this.dispatch(\"appeared\");\n }\n };\n Object.defineProperty(Sprite.prototype, \"hidden\", {\n /**\r\n * @return Is initially hidden?\r\n */\n get: function () {\n return this.getPropertyValue(\"hidden\");\n },\n /**\r\n * If a sprite has `showOnInit = true`, it will animate from \"hidden\" to\r\n * \"default\" state when initialized. To prevent this but keep\r\n * `showOnInit = true`, you can set `sprite.hidden = true`.\r\n *\r\n * @param value initially hidden?\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n this.setPropertyValue(\"hidden\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n return this._bbox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sprite.prototype, \"plugins\", {\n /**\r\n * A list of plugins (objects that implement [[IPlugin]] interface) attached\r\n * to this object.\r\n *\r\n * @since 4.2.2\r\n * @return List of plugins\r\n */\n get: function () {\n var _this = this;\n if (!this._plugins) {\n this._plugins = new List();\n this._disposers.push(this._plugins.events.on(\"inserted\", function (ev) {\n ev.newValue.target = _this;\n ev.newValue.init();\n }));\n this._disposers.push(new ListDisposer(this._plugins));\n }\n return this._plugins;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype._systemUpdate = function (skippedSprites) {\n this.validate();\n };\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype._systemCheckIfValidate = function () {\n return true;\n };\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype._systemValidatePositions = function () {\n this.validatePosition();\n };\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Sprite.prototype._systemValidateLayouts = function () {};\n return Sprite;\n}(BaseObjectEvents);\nexport { Sprite };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Sprite\"] = Sprite;\n//# sourceMappingURL=Sprite.js.map","/**\r\n * Functionality for drawing rectangles.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw a rectangle.\r\n *\r\n * @see {@link IRectangleEvents} for a list of available events\r\n * @see {@link IRectangleAdapters} for a list of available Adapters\r\n */\nvar Rectangle = /** @class */function (_super) {\n __extends(Rectangle, _super);\n /**\r\n * Constructor\r\n * * Creates a `<rect>` element\r\n * * Creates default state\r\n */\n function Rectangle() {\n var _this = _super.call(this) || this;\n _this.className = \"Rectangle\";\n _this.element = _this.paper.add(\"rect\");\n //this.pixelPerfect = false;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Rectangle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var precision = this._positionPrecision;\n if (this.pixelPerfect) {\n precision = 0;\n }\n var w = $math.round(this.innerWidth, precision);\n var h = $math.round(this.innerHeight, precision);\n this.element.attr({\n \"width\": w,\n \"height\": h\n });\n };\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Rectangle.prototype.measureElement = function () {};\n Object.defineProperty(Rectangle.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n if (this.isMeasured) {\n return {\n x: 0,\n y: 0,\n width: this.innerWidth,\n height: this.innerHeight\n };\n } else {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n },\n enumerable: true,\n configurable: true\n });\n return Rectangle;\n}(Sprite);\nexport { Rectangle };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Rectangle\"] = Rectangle;\n//# sourceMappingURL=Rectangle.js.map","/**\r\n * Container module\r\n * @todo Needs description\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"./Sprite\";\nimport { SpriteState } from \"./SpriteState\";\nimport { List } from \"./utils/List\";\nimport { MultiDisposer } from \"./utils/Disposer\";\nimport { Dictionary, DictionaryDisposer } from \"./utils/Dictionary\";\nimport { getInteraction } from \"./interaction/Interaction\";\nimport { Rectangle } from \"./elements/Rectangle\";\nimport { Percent } from \"./utils/Percent\";\nimport { registry } from \"./Registry\";\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\nimport * as $iter from \"./utils/Iterator\";\nimport * as $array from \"./utils/Array\";\nimport * as $math from \"./utils/Math\";\nimport * as $type from \"./utils/Type\";\nimport * as $dom from \"./utils/DOM\";\nimport { system } from \"./System\";\nimport { options } from \"./Options\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Container can contain multiple sprites and arrange them in various layouts.\r\n *\r\n * @see {@link IContainerEvents} for a list of available events\r\n * @see {@link IContainerAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar Container = /** @class */function (_super) {\n __extends(Container, _super);\n /**\r\n * Constructor\r\n */\n function Container() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Container children. (sorted by layout)\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._childrenByLayout = [];\n /**\r\n * Container's disposers for its child elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._childrenDisposers = new Dictionary();\n /**\r\n * Indicates if this container contains any focused elements, including\r\n * itself.\r\n */\n _this.hasFocused = false;\n /**\r\n * An array of references to elements the state should be set, when it is set\r\n * on this element.\r\n */\n _this.setStateOnSprites = [];\n /*\r\n * @ignore\r\n */\n _this.layoutInvalid = false;\n _this._absoluteWidth = 0;\n _this._absoluteHeight = 0;\n /**\r\n * An array of child Sprites that should be ready before this object can\r\n * fire a \"ready\" event.\r\n */\n _this._shouldBeReady = [];\n /**\r\n * Enables touch tap protection.\r\n */\n _this._tapToActivate = false;\n /**\r\n * If `tapToActivate` is used, this setting will determine how long the chart\r\n * will stay in \"active\" mode.\r\n *\r\n * @default 3000\r\n * @since 4.4.0\r\n */\n _this.tapTimeout = 3000;\n _this.className = \"Container\";\n _this._element = _this.paper.addGroup(\"g\");\n _this.group.add(_this.element);\n _this.setPropertyValue(\"pixelPerfect\", false);\n _this.setPropertyValue(\"layout\", \"absolute\");\n _this.setPropertyValue(\"fixedWidthGrid\", false);\n _this.setPropertyValue(\"verticalCenter\", \"none\");\n _this.setPropertyValue(\"horizontalCenter\", \"none\");\n _this._positionPrecision = 4;\n _this._disposers.push(new DictionaryDisposer(_this._childrenDisposers));\n _this.children.events.on(\"inserted\", _this.handleChildAdded, _this);\n _this.children.events.on(\"removed\", _this.handleChildRemoved, _this);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Handles adding of a new child into `children`. Adding new children might\r\n * affect the whole layout so it needs to be revalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n * @todo Throw an exception on adding a disposed object. Of course it's better NOT TO add disposed objects, so that what we should focus on.\r\n */\n Container.prototype.handleChildAdded = function (event) {\n this.processChild(event.newValue);\n };\n /**\r\n * @ignore\r\n */\n Container.prototype.processChild = function (child) {\n // try solves the problem when somedy adds child directly to children\n try {\n this._childrenDisposers.insertKey(child.uid, new MultiDisposer([\n // it's not enough to listen to POSITION_CHANGED only, as some extra redrawals will happen.\n child.events.on(\"transformed\", this.handleChildTransform, this), child.events.on(\"zIndexChanged\", this.sortAndAdd, this)]));\n } catch (err) {\n // void\n }\n if (this.element) {\n var group = this.element;\n group.add(child.group);\n }\n child.parent = this;\n child.paper = this.paper;\n this.dispatchImmediately(\"childadded\", {\n type: \"childadded\",\n newValue: child\n });\n this.invalidate();\n };\n /**\r\n * @ignore\r\n */\n Container.prototype.sortAndAdd = function () {\n this.sortChildren();\n this.addChildren();\n };\n /**\r\n * Handles child removal. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\n Container.prototype.handleChildRemoved = function (event) {\n var child = event.oldValue;\n // TODO figure out why the key sometimes doesn't exist\n this._childrenDisposers.removeKey(child.uid);\n if (this.element) {\n var group = this.element;\n group.removeElement(child.group);\n }\n if (child.isMeasured) {\n this.invalidateLayout();\n }\n this.dispatchImmediately(\"childremoved\", {\n type: \"childremoved\",\n oldValue: child\n });\n };\n /**\r\n * Handles child transformation. Changing size of the child may change the\r\n * whole layout of the Container, hence layout needs to be invalidated.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\n Container.prototype.handleChildTransform = function (event) {\n var child = event.target;\n if (child.isMeasured) {\n // && this.layout != \"none\" && this.layout != \"absolute\") {\n this.invalidateLayout();\n }\n };\n /**\r\n * Invalidates Container's layout, causing it to be re-evaluated again.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.invalidateLayout = function () {\n if (this.layoutInvalid || this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\n return;\n }\n this.layoutInvalid = true;\n registry.addToInvalidLayouts(this);\n system.requestFrame();\n };\n /**\r\n * Invalidates element.\r\n *\r\n * Object will be redrawn during the next update cycle.\r\n *\r\n * Please note that in most cases elements will auto-invalidate when needed. If\r\n * everything works, DO NOT use this method. Use it only if some changes do\r\n * not take otherwise.\r\n */\n Container.prototype.invalidate = function () {\n _super.prototype.invalidate.call(this);\n this.invalidateLayout();\n };\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n *\r\n * As this will essentially force all elements to redraw, use only if\r\n * absolutely necessary.\r\n */\n Container.prototype.deepInvalidate = function () {\n _super.prototype.invalidate.call(this);\n //this.sortChildren();\n $array.each(this._childrenByLayout, function (child) {\n if (child instanceof Container) {\n child.deepInvalidate();\n } else {\n child.invalidate();\n }\n });\n this.invalidateLayout();\n };\n Object.defineProperty(Container.prototype, \"children\", {\n /**\r\n * Returns a list of the child [[Sprite]] elements contained in this\r\n * Container.\r\n *\r\n * @return List of child elements (Sprites)\r\n */\n get: function () {\n // @todo Review if we can add all children to disposers\n if (!this._children) {\n this._children = new List();\n //this._disposers.push(new ListDisposer(this._children));\n }\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"minWidth\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minWidth\");\n },\n /**\r\n * Minimum width (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Width (px)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"minWidth\", value)) {\n this.invalidateLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"minHeight\", {\n /**\r\n * @return Height (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minHeight\");\n },\n /**\r\n * Minimum height (px) for the Container. A container will not\r\n * auto-shrink beyond this value, even if child elements are smaller.\r\n *\r\n * @param value Height (px)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"minHeight\", value)) {\n this.invalidateLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Overrides the original `removeElement` so that Container's actual element\r\n * is not removed. We do not need to remove element of a Container.\r\n *\r\n * We do this because remove element each time will fail the `getBBox`.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.removeElement = function () {};\n /**\r\n * Sorts Container's children: the ones with variable width and height are\r\n * put at the end of the list (depending on layout type), so that fixed-width\r\n * ones can be drawn first.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.sortChildren = function () {\n var _this = this;\n this._childrenByLayout = [];\n if (this.layout == \"none\" || this.layout == \"absolute\" || !this.layout) {\n //$iter.each(this.children.iterator(), (child) => {\n //\tthis._childrenByLayout.push(child);\n //});\n this._childrenByLayout = this.children.values;\n } else {\n // Assemble fixed-size and relative lists\n var fixed_1 = [];\n var relative_1 = [];\n $iter.each(this.children.iterator(), function (child) {\n if (_this.layout == \"horizontal\" || _this.layout == \"grid\") {\n if (!$type.isNumber(child.percentWidth)) {\n fixed_1.push(child);\n } else {\n relative_1.push(child);\n }\n } else if (_this.layout == \"vertical\") {\n if (!$type.isNumber(child.percentHeight)) {\n fixed_1.push(child);\n } else {\n relative_1.push(child);\n }\n } else {\n fixed_1.push(child);\n }\n });\n // Concat everything into list\n this._childrenByLayout = fixed_1.concat(relative_1);\n }\n this.calculateRelativeSize();\n };\n /**\r\n * Calculates relative sizes for all Container's children.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\n Container.prototype.calculateRelativeSize = function () {\n var _this = this;\n var totalRelativeWidth = 0;\n var totalRelativeHeight = 0;\n $array.each(this._childrenByLayout, function (child) {\n // if child is not measured, we do not care about it at all.\n if (child.isMeasured) {\n if ($type.isNumber(child.percentWidth)) {\n totalRelativeWidth += child.percentWidth;\n }\n if ($type.isNumber(child.percentHeight)) {\n totalRelativeHeight += child.percentHeight;\n }\n }\n });\n $array.each(this._childrenByLayout, function (child) {\n if (child.isMeasured) {\n if (_this.layout == \"horizontal\") {\n if ($type.isNumber(child.percentWidth)) {\n child.relativeWidth = child.percentWidth / totalRelativeWidth;\n }\n if ($type.isNumber(child.percentHeight)) {\n child.relativeHeight = child.percentHeight / 100;\n }\n }\n if (_this.layout == \"vertical\") {\n if ($type.isNumber(child.percentHeight)) {\n child.relativeHeight = child.percentHeight / totalRelativeHeight;\n }\n if ($type.isNumber(child.percentWidth)) {\n child.relativeWidth = child.percentWidth / 100;\n }\n }\n if (_this.layout == \"grid\") {\n if ($type.isNumber(child.percentHeight)) {\n child.relativeHeight = child.percentHeight / 100;\n }\n if ($type.isNumber(child.percentWidth)) {\n child.relativeWidth = child.percentWidth / 100;\n }\n }\n }\n if (_this.layout == \"absolute\" || !child.isMeasured) {\n if ($type.isNumber(child.percentWidth)) {\n child.relativeWidth = child.percentWidth / 100;\n }\n if ($type.isNumber(child.percentHeight)) {\n child.relativeHeight = child.percentHeight / 100;\n }\n }\n });\n };\n /**\r\n * Adds all children to Container's SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.addChildren = function () {\n /*\r\n Need this check because a child might be assigned to parent even before element is created, for example a theme\r\n access scrollbar.thumb\r\n */\n if (this.element) {\n var zindexed = $array.copy(this.children.values); // not children by layout!\n var sortArray = zindexed.map(function (data, idx) {\n return {\n idx: idx,\n data: data\n };\n });\n sortArray.sort(function (a, b) {\n var ai = a.data.zIndex || 0;\n var bi = b.data.zIndex || 0;\n if (ai < bi) {\n return -1;\n }\n if (ai > bi) {\n return 1;\n }\n return a.idx - b.idx;\n });\n zindexed = sortArray.map(function (val) {\n return val.data;\n });\n var group_1 = this.element;\n // check, maybe the order is good already\n var isCorrect = true;\n if (group_1.node && group_1.node.childNodes) {\n for (var i = 0, len = group_1.node.childNodes.length; i < len; i++) {\n if (group_1.node.childNodes[i] != zindexed[i].group.node) {\n isCorrect = false;\n break;\n }\n }\n }\n if (!isCorrect) {\n $array.each(zindexed, function (child) {\n if (child.group) {\n group_1.add(child.group);\n }\n });\n if (this._background) {\n this.group.addToBack(this._background.group);\n }\n this.invalidateLayout();\n }\n }\n };\n /**\r\n * Creates a new element of specific type and assigns as a child to the\r\n * Container.\r\n *\r\n * @param Class type for the new element\r\n * @return New element\r\n */\n Container.prototype.createChild = function (classType) {\n var sprite = new classType();\n sprite.parent = this;\n return sprite;\n };\n /**\r\n * Removes all Container's children without actually destroying them.\r\n *\r\n * To destroy children use `disposeChildren()` instead.\r\n */\n Container.prototype.removeChildren = function () {\n // remove all children\n // TODO use iteration instead\n while (this.children.length > 0) {\n var child = this.children.getIndex(0);\n child.parent = undefined;\n this.children.removeValue(child);\n }\n };\n /**\r\n * Removes and destroys all Container's children.\r\n *\r\n * To remove children from Container without destroying them, use\r\n * `removeChildren()`.\r\n */\n Container.prototype.disposeChildren = function () {\n // TODO use iteration instead\n while (this.children.length > 0) {\n var child = this.children.getIndex(0);\n child.dispose();\n this.children.removeValue(child);\n }\n };\n Object.defineProperty(Container.prototype, \"background\", {\n /**\r\n * @return Background element\r\n */\n get: function () {\n if (!this._background) {\n this._background = this.createBackground();\n this.processBackground();\n }\n return this._background;\n },\n /**\r\n * An element to use as container background.\r\n *\r\n * @param background Background element\r\n */\n set: function (background) {\n if (this._background && this.background != background) {\n this.removeDispose(this._background);\n }\n if (background) {\n this._background = background;\n this._disposers.push(background);\n this.processBackground();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles the situation where parent element is resized.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.handleGlobalScale = function () {\n _super.prototype.handleGlobalScale.call(this);\n this.children.each(function (child) {\n child.handleGlobalScale();\n });\n };\n /**\r\n * Creates and returns a [[Rectangle]] to use as a background for Container.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background Rectangle element\r\n */\n Container.prototype.createBackground = function () {\n return new Rectangle();\n };\n /**\r\n * Decorates background element with required properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.processBackground = function () {\n var background = this._background;\n if (background) {\n background.isMeasured = false;\n this._background.fill = new InterfaceColorSet().getFor(\"background\");\n background.parent = this;\n background.isMeasured = false;\n this.children.removeValue(background);\n this._disposers.push(background);\n this.group.addToBack(this._background.group);\n }\n };\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.validateLayout = function () {\n var _this = this;\n registry.removeFromInvalidLayouts(this);\n this.layoutInvalid = false;\n // prevents from drawing if topparent is 0x0\n /*\r\n let topParent = this.topParent;\r\n if (topParent) {\r\n if (!topParent.maxWidth || !topParent.maxHeight) {\r\n this._disposers.push(topParent.events.once(\"maxsizechanged\", this.invalidateLayout, this));\r\n }\r\n }*/\n this._availableWidth = this.innerWidth;\n this._availableHeight = this.innerHeight;\n var measuredWidth = 0;\n var measuredHeight = 0;\n var allValid = true;\n if (this.children) {\n this.sortChildren();\n // we itterate through list of children, sorted by layout priority. sprites which width non-relative width/height will go first, so we will reduce available width before proceeding to sprites with relative width/height\n $array.each(this._childrenByLayout, function (child) {\n var maxWidth;\n var maxHeight;\n if ($type.isNumber(child.relativeWidth)) {\n maxWidth = $math.round(_this._availableWidth * child.relativeWidth, 2);\n if (_this.layout == \"horizontal\") {\n // || this.layout == \"absolute\") {\n maxWidth -= child.pixelMarginRight + child.pixelMarginLeft;\n }\n } else {\n if (_this.layout == \"horizontal\") {\n if (child.invalid) {\n child.validate();\n }\n }\n }\n if ($type.isNumber(child.relativeHeight)) {\n maxHeight = $math.round(_this._availableHeight * child.relativeHeight, 2);\n if (_this.layout == \"vertical\") {\n // || this.layout == \"absolute\") {\n maxHeight -= child.pixelMarginTop + child.pixelMarginBottom;\n }\n } else {\n if (_this.layout == \"vertical\") {\n if (child.invalid) {\n child.validate();\n }\n }\n }\n // if child is valid\n if (child.invalid == false) {\n if ($type.isNumber(child.relativeWidth)) {\n child.maxWidth = maxWidth;\n }\n if ($type.isNumber(child.relativeHeight)) {\n child.maxHeight = maxHeight;\n }\n if (child.isMeasured) {\n // reduce available width if this is horizontal layout\n if (_this.layout == \"horizontal\") {\n if (!$type.isNumber(child.percentWidth)) {\n if (child.measuredWidth > 0) {\n _this._availableWidth -= child.measuredWidth + child.pixelMarginLeft + child.pixelMarginRight;\n }\n }\n }\n // reduce available height if this is vertical layout\n if (_this.layout == \"vertical\") {\n if (!$type.isNumber(child.percentHeight)) {\n if (child.measuredHeight > 0) {\n _this._availableHeight -= child.measuredHeight + child.pixelMarginTop + child.pixelMarginBottom;\n }\n }\n }\n var childMeasuredWidth = child.measuredWidth;\n var childMeasuredHeight = child.measuredHeight;\n if (child.align != \"none\") {\n childMeasuredWidth += child.pixelMarginLeft + child.pixelMarginRight;\n }\n if (child.valign != \"none\") {\n childMeasuredHeight += child.pixelMarginTop + child.pixelMarginBottom;\n }\n measuredWidth = Math.max(measuredWidth, childMeasuredWidth);\n measuredHeight = Math.max(measuredHeight, childMeasuredHeight);\n }\n }\n // if child is not valid\n else {\n // tell child what maximum width/ height it can occupy\n if (child.isMeasured) {\n if ($type.isNumber(child.relativeWidth)) {\n if (child.maxWidth != maxWidth) {\n // need to check this because of allValid\n child.maxWidth = maxWidth;\n allValid = false;\n }\n }\n if ($type.isNumber(child.relativeHeight)) {\n if (child.maxHeight != maxHeight) {\n // need to check this because of allValid\n child.maxHeight = maxHeight;\n allValid = false;\n }\n }\n }\n }\n });\n }\n this._absoluteWidth = measuredWidth;\n this._absoluteHeight = measuredHeight;\n // arrange after measuring, only if all children are valid already\n if (allValid) {\n this.arrange();\n }\n };\n /**\r\n * Arranges children according to layout specs and available space / child\r\n * sizes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.arrange = function () {\n var _this = this;\n var children = this.children;\n /*\r\n in this method we not only arrange children but also find out the size of the container\r\n it might seem it would be easier to get container size using sprite's measure method,\r\n however it would return only actual size of the bbox. However as each child meight have\r\n margins set, we need to check each child - we do it here.\r\n This method doesn't do anything with DOM, so it's not expensive\r\n */\n var measuredWidth = 0;\n var measuredHeight = 0;\n //let innerWidth: number = this.innerWidth; //$math.max(this.innerWidth, this._measuredWidth - paddingLeft - paddingRight);\n //let innerHeight: number = this.innerHeight; //$math.max(this.innerHeight, this._measuredHeight - paddingTop - paddingBottom);\n // above is wrong, as if a w/h is not specified, it is 0 and alignment doesn't work at all.\n var innerWidth = $math.max(this.innerWidth, this._absoluteWidth);\n var innerHeight = $math.max(this.innerHeight, this._absoluteHeight);\n var left; // = 0;\n var right; // = innerWidth;\n var top; // = 0;\n var bottom; // = innerHeight;\n var paddingLeft = this.pixelPaddingLeft;\n var paddingRight = this.pixelPaddingRight;\n var paddingTop = this.pixelPaddingTop;\n var paddingBottom = this.pixelPaddingBottom;\n var nextX = 0;\n var nextY = 0;\n var row = 0;\n var column = 0;\n var columnWidth = [];\n var rowHeight = [];\n var maxCellWidth;\n var minCellWidth;\n var columnCount;\n var maxWidth = this.maxWidth;\n var maxHeight = this.maxHeight;\n var minWidth = this.minWidth;\n var minHeight = this.minHeight;\n var childrenCopy = $array.copy(children.values);\n if (this.reverseOrder) {\n childrenCopy.reverse();\n }\n // GRID PRECALCULATIONS\n if (this.layout == \"grid\") {\n minCellWidth = maxWidth;\n maxCellWidth = 1;\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\n var child = childrenCopy[i];\n if (child.isMeasured && !child.disabled && !child.__disabled) {\n var childMeasuredWidth = child.measuredWidth;\n if (childMeasuredWidth < minCellWidth) {\n minCellWidth = childMeasuredWidth;\n }\n if (childMeasuredWidth > maxCellWidth) {\n maxCellWidth = childMeasuredWidth;\n }\n }\n }\n minCellWidth = $math.fitToRange(minCellWidth, 1, maxWidth);\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, maxWidth);\n if (this.fixedWidthGrid) {\n columnCount = maxWidth / maxCellWidth;\n } else {\n columnCount = maxWidth / minCellWidth; // predicted number of columns, yes it is usually much more than real number, but we fix that later\n }\n columnCount = $math.max(1, Math.floor(columnCount));\n columnCount = $math.min(this.maxColumns, columnCount);\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\n }\n var contentLeft;\n var contentRight;\n var contentTop;\n var contentBottom;\n // we itterate through array of children\n // TODO use iterator instead\n for (var i = 0, len = childrenCopy.length; i < len; i++) {\n var child = childrenCopy[i];\n if (child.isMeasured && !child.disabled && !child.__disabled) {\n var x = undefined; //child.pixelX; // must reset\n var y = undefined; //child.pixelY; // must reset\n var childMarginLeft = child.pixelMarginLeft;\n var childMarginRight = child.pixelMarginRight;\n var childMarginTop = child.pixelMarginTop;\n var childMarginBottom = child.pixelMarginBottom;\n var childWidth = child.measuredWidth;\n var childHeight = child.measuredHeight;\n var childLeft = void 0;\n var childRight = void 0;\n var childTop = void 0;\n var childBottom = void 0;\n switch (this.layout) {\n case \"none\":\n break;\n // absolute layout\n case \"absolute\":\n // horizontal alignment\n switch (child.align) {\n case \"left\":\n x = childMarginLeft - child.maxLeft;\n break;\n case \"center\":\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\n break;\n case \"right\":\n x = innerWidth - childMarginRight - child.maxRight;\n break;\n default:\n if (!(child.x instanceof Percent)) {\n x = child.pixelX;\n }\n break;\n }\n // vertical alignment\n switch (child.valign) {\n case \"top\":\n y = childMarginTop - child.maxTop;\n break;\n case \"middle\":\n y = (innerHeight - childHeight) / 2 - child.maxTop;\n break;\n case \"bottom\":\n y = innerHeight - childMarginBottom - child.maxBottom;\n break;\n default:\n if (!(child.y instanceof Percent)) {\n y = child.pixelY;\n }\n break;\n }\n break;\n // vertical layout\n case \"vertical\":\n //if ($type.isNumber(child.relativeHeight)) {\n //\tchildHeight = child.maxHeight;\n //}\n switch (child.align) {\n case \"left\":\n x = childMarginLeft - child.maxLeft;\n break;\n case \"center\":\n x = (innerWidth - childWidth) / 2 - child.maxLeft;\n break;\n case \"right\":\n x = innerWidth - childMarginRight - child.maxRight;\n break;\n default:\n x = child.pixelX;\n break;\n }\n y = nextY + childMarginTop - child.maxTop;\n nextY = y + child.maxBottom + childMarginBottom;\n break;\n // horizontal layout\n case \"horizontal\":\n //if ($type.isNumber(child.relativeHeight)) {\n //\tchildHeight = child.maxHeight;\n //}\n switch (child.valign) {\n case \"top\":\n y = childMarginTop - child.maxTop;\n break;\n case \"middle\":\n y = (innerHeight - childHeight) / 2 - child.maxTop;\n break;\n case \"bottom\":\n y = innerHeight - childMarginBottom - child.maxBottom;\n break;\n default:\n y = child.pixelY;\n break;\n }\n x = nextX + childMarginLeft - child.maxLeft;\n nextX = x + child.maxRight + childMarginRight;\n break;\n case \"grid\":\n x = nextX + childMarginLeft - child.maxLeft;\n switch (child.valign) {\n case \"top\":\n y = nextY + childMarginTop - child.maxTop;\n break;\n case \"middle\":\n y = nextY + (innerHeight - childHeight) / 2 - child.maxTop;\n break;\n case \"bottom\":\n y = nextY + innerHeight - childMarginBottom - child.maxBottom;\n break;\n default:\n y = nextY - child.maxTop;\n break;\n }\n nextX += columnWidth[column];\n rowHeight[row] = $math.max(rowHeight[row], childHeight);\n column++;\n var nextColumnWidth = columnWidth[column];\n if (!$type.isNumber(nextColumnWidth)) {\n nextColumnWidth = maxCellWidth;\n }\n if (nextX > $math.min(this.innerWidth, maxWidth) - nextColumnWidth + 1 && column < columnCount) {\n columnCount = column;\n nextX = 0;\n nextY = 0;\n row = 0;\n column = 0;\n columnWidth = this.getColumnWidth(childrenCopy, columnCount, maxCellWidth);\n rowHeight = [];\n i = -1;\n continue;\n }\n if (column >= columnCount) {\n column = 0;\n nextY += rowHeight[row];\n row++;\n nextX = 0;\n }\n break;\n }\n if (this.layout !== \"none\") {\n child.moveTo({\n x: x,\n y: y\n }); // must use moveTo, otherwise x/y set in percent won't work\n childLeft = x + child.maxLeft - childMarginLeft;\n childRight = x + child.maxRight + childMarginRight;\n childTop = y + child.maxTop - childMarginTop;\n childBottom = y + child.maxBottom + childMarginBottom;\n if (childRight > right || !$type.isNumber(right)) {\n right = childRight;\n }\n if (childLeft < left || !$type.isNumber(left)) {\n left = childLeft;\n }\n if (childTop < top || !$type.isNumber(top)) {\n top = childTop;\n }\n if (childBottom > bottom || !$type.isNumber(bottom)) {\n bottom = childBottom;\n }\n if (childRight > contentRight || !$type.isNumber(contentRight)) {\n contentRight = childRight;\n }\n if (childLeft < contentLeft || !$type.isNumber(contentLeft)) {\n contentLeft = childLeft;\n }\n if (childTop < contentTop || !$type.isNumber(contentTop)) {\n contentTop = childTop;\n }\n if (childBottom > contentBottom || !$type.isNumber(contentBottom)) {\n contentBottom = contentBottom;\n }\n }\n } else {\n child.validatePosition();\n }\n }\n if (this.layout == \"none\") {\n var noneBBox = this.bbox;\n left = noneBBox.x;\n right = noneBBox.x + noneBBox.width;\n top = noneBBox.y;\n bottom = noneBBox.y + noneBBox.height;\n }\n if (!$type.isNumber(left)) {\n left = 0;\n contentLeft = 0;\n }\n if (!$type.isNumber(right)) {\n right = this._availableWidth;\n contentRight = right;\n }\n if (!$type.isNumber(top)) {\n top = 0;\n contentTop = 0;\n }\n if (!$type.isNumber(bottom)) {\n bottom = this._availableHeight;\n contentBottom = bottom;\n }\n if (!$type.isNumber(contentTop)) {\n contentTop = 0;\n }\n if (!$type.isNumber(contentBottom)) {\n contentBottom = contentTop;\n }\n if (!$type.isNumber(contentLeft)) {\n contentLeft = 0;\n }\n if (!$type.isNumber(contentRight)) {\n contentRight = contentLeft;\n }\n measuredWidth = right - left;\n measuredHeight = bottom - top;\n if ($type.isNumber(this.relativeWidth)) {\n measuredWidth = maxWidth - paddingLeft - paddingRight;\n left = 0;\n right = measuredWidth;\n }\n if ($type.isNumber(this.relativeHeight)) {\n measuredHeight = maxHeight - paddingTop - paddingBottom;\n top = 0;\n bottom = measuredHeight;\n }\n if ($type.isNumber(this._pixelWidth)) {\n left = 0;\n measuredWidth = this._pixelWidth - paddingLeft - paddingRight;\n }\n if ($type.isNumber(minWidth) && measuredWidth < minWidth) {\n left = 0;\n measuredWidth = this.minWidth - paddingLeft - paddingRight;\n }\n if ($type.isNumber(this._pixelHeight)) {\n top = 0;\n measuredHeight = this._pixelHeight - paddingTop - paddingBottom;\n }\n if ($type.isNumber(minHeight) && measuredHeight < minHeight) {\n top = 0;\n measuredHeight = minHeight - paddingTop - paddingBottom;\n }\n var measuredContentWidth = contentRight - contentLeft;\n var measuredContentHeight = contentBottom - contentTop;\n /// handle content alignment\n if (this.layout != \"none\" && (this.contentAlign || this.contentValign) && children.length > 0) {\n var dx_1;\n var dy_1;\n var mwa = measuredWidth;\n var mha = measuredHeight;\n if (mwa < measuredContentWidth) {\n mwa = measuredContentWidth;\n }\n if (mha < measuredContentHeight) {\n mha = measuredContentHeight;\n }\n if (this.contentAlign == \"center\") {\n dx_1 = (mwa - measuredContentWidth) / 2;\n }\n if (this.contentAlign == \"right\") {\n dx_1 = mwa - measuredContentWidth;\n }\n if (this.contentValign == \"middle\") {\n dy_1 = (mha - measuredContentHeight) / 2;\n }\n if (this.contentValign == \"bottom\") {\n dy_1 = mha - measuredContentHeight;\n }\n if ($type.isNumber(dx_1)) {\n $iter.each(children.iterator(), function (child) {\n var childLeft = child.maxLeft;\n var ddx = dx_1;\n if (_this.layout == \"horizontal\") {\n child.x = child.pixelX + ddx;\n }\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\n if (_this.layout == \"grid\") {\n child.x = child.pixelX + ddx;\n }\n if (_this.layout == \"vertical\") {\n ddx += child.pixelMarginLeft;\n if (child.align == \"none\") {\n child.x = ddx - childLeft;\n }\n }\n if (_this.layout == \"absolute\") {\n ddx += child.pixelMarginLeft;\n if (child.align == \"none\") {\n child.x = ddx - childLeft;\n }\n }\n });\n }\n if ($type.isNumber(dy_1)) {\n $iter.each(children.iterator(), function (child) {\n var childTop = child.maxTop;\n var ddy = dy_1;\n if (_this.layout == \"horizontal\") {\n ddy += child.pixelMarginTop;\n if (child.valign == \"none\") {\n child.y = ddy - childTop;\n }\n }\n // individual grid elements can not be aligned vertically, that's why it's different from horizontal\n if (_this.layout == \"grid\") {\n ddy += child.pixelMarginTop;\n child.y = ddy - childTop;\n }\n if (_this.layout == \"vertical\") {\n child.y = child.pixelY + ddy;\n }\n if (_this.layout == \"absolute\") {\n ddy += child.pixelMarginTop;\n if (child.valign == \"none\") {\n child.y = ddy - childTop;\n }\n }\n });\n }\n }\n var oldBBox = this.bbox;\n // this will mess up maxw/maxh set by container layout, we need a separate min/maxwidth for users\n // this prevents invalidating layout in such cases as scrolling category axis, when labels go outside bounds and results transformed event\n // todo: need to check if this doesn't cause other problems.\n //if (this.maxWidth > 0) {\n //measuredWidth = $math.min(measuredWidth, this.maxWidth);\n //measuredWidth = $math.max(measuredWidth, this.minWidth);\n //}\n //if (this.maxHeight > 0) {\n //measuredHeight = $math.min(measuredHeight, this.maxHeight);\n //measuredHeight = $math.max(measuredHeight, this.minHeight);\n //}\n measuredWidth = $math.max(measuredWidth, minWidth);\n measuredHeight = $math.max(measuredHeight, minHeight);\n this.contentWidth = measuredWidth;\n this.contentHeight = measuredHeight;\n // new\n measuredWidth = $math.min(measuredWidth, maxWidth);\n measuredHeight = $math.min(measuredHeight, maxHeight);\n this._bbox = {\n x: left,\n y: top,\n width: measuredWidth,\n height: measuredHeight\n };\n var prevLeft = this.maxLeft;\n var prevTop = this.maxTop;\n var prevBotttom = this.maxBottom;\n var prevRight = this.maxRight;\n this.measure();\n if (prevLeft != this.maxLeft || prevRight != this.maxRight || prevTop != this.maxTop || prevBotttom != this.maxBottom) {\n if (this.events.isEnabled(\"transformed\")) {\n var event_1 = {\n type: \"transformed\",\n target: this\n };\n if (oldBBox) {\n event_1.dummyData = oldBBox.width + \" \" + measuredWidth + \" \" + oldBBox.height + \" \" + measuredHeight;\n }\n this.events.dispatchImmediately(\"transformed\", event_1);\n }\n }\n this.dispatchImmediately(\"layoutvalidated\");\n };\n /**\r\n * Positions element according its center settings.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.updateCenter = function () {\n _super.prototype.updateCenter.call(this);\n this.updateBackground();\n };\n /**\r\n * Update the background to fit into specific dimensions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make it protected?\r\n */\n Container.prototype.updateBackground = function () {\n var background = this._background; // accessing protected, as getter creates instance if it doesn't exist\n if (background) {\n background.x = this.maxLeft;\n background.y = this.maxTop;\n background.width = this.maxRight - this.maxLeft;\n background.height = this.maxBottom - this.maxTop;\n }\n };\n /**\r\n * Returns widths of all columns in a horizontal Container layout.\r\n *\r\n * @ignore Exclude from docs\r\n * @param columnCount Number of columns\r\n * @param maxCellWidth Maximum width of one grid cell\r\n * @return An array of column widths\r\n */\n Container.prototype.getColumnWidth = function (children, columnCount, maxCellWidth) {\n var _this = this;\n var columnWidth = [];\n var column = 0;\n $array.each(children, function (child) {\n if (child.isMeasured && !child.disabled && !child.__disabled) {\n if (_this.fixedWidthGrid) {\n columnWidth[column] = maxCellWidth;\n } else {\n columnWidth[column] = $math.max(columnWidth[column], child.measuredWidth + child.pixelMarginRight + child.pixelMarginLeft);\n }\n column++;\n if (column == columnCount) {\n column = 0;\n }\n }\n });\n return columnWidth;\n };\n Object.defineProperty(Container.prototype, \"layout\", {\n /**\r\n * @return Layout\r\n */\n get: function () {\n return this.getPropertyValue(\"layout\");\n },\n /**\r\n * Container layout.\r\n *\r\n * Options: \"absolute\" (default), \"vertical\", \"horizontal\", \"grid\", \"none\". \"none\" is quite the same as \"absolute\" - the objects will\r\n * be positioned at their x, y coordinates, the difference is that with \"absolute\" you can still use align/valign for children and with \"none\" you can not.\r\n * Use \"none\" as much as you can as it's most cpu-saving layout.\r\n *\r\n * @default \"absolute\"\r\n * @param value Layout\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"layout\", value)) {\n this.invalidateLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"contentValign\", {\n /**\r\n * @return Vertical alignment\r\n */\n get: function () {\n return this.getPropertyValue(\"contentValign\");\n },\n /**\r\n * Vertical alignment of the elements for the vertical Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value vertical alignment\r\n */\n set: function (value) {\n this.setPropertyValue(\"contentValign\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"contentAlign\", {\n /**\r\n * @return Horizontal alignment\r\n */\n get: function () {\n return this.getPropertyValue(\"contentAlign\");\n },\n /**\r\n * Horizontal alignment of the elements for the horizontal Container.\r\n *\r\n * This is used when Container is larger than the height of all its children.\r\n *\r\n * @param value Horizontal alignment\r\n */\n set: function (value) {\n this.setPropertyValue(\"contentAlign\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"fixedWidthGrid\", {\n /**\r\n * @return Should use fixed width grid?\r\n */\n get: function () {\n return this.getPropertyValue(\"fixedWidthGrid\");\n },\n /**\r\n * Controls if the grid of the Container should use fixed width. Fixed width\r\n * grid will divide available space to all its columns/rows equally, without\r\n * adapting to actual child sizes or size requirements.\r\n *\r\n * @default false\r\n * @param value Should use fixed width grid?\r\n */\n set: function (value) {\n this.setPropertyValue(\"fixedWidthGrid\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"maxColumns\", {\n /**\r\n * @return Should use fixed width grid?\r\n */\n get: function () {\n return this.getPropertyValue(\"maxColumns\");\n },\n /**\r\n * Maximum number of columns (when using `\"grid\"` layout).\r\n *\r\n * @param value Should use fixed width grid?\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxColumns\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"reverseOrder\", {\n /**\r\n * @return Reverse children?\r\n */\n get: function () {\n return this.getPropertyValue(\"reverseOrder\");\n },\n /**\r\n * If set to `true`, the children of the container will be drawn in reverse\r\n * order.\r\n *\r\n * @default false\r\n * @param value Reverse children?\r\n */\n set: function (value) {\n this.setPropertyValue(\"reverseOrder\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"setStateOnChildren\", {\n /**\r\n * @return Set state on children\r\n */\n get: function () {\n return this.getPropertyValue(\"setStateOnChildren\");\n },\n /**\r\n * Specifies if, when state is applied on this container, the same state\r\n * should be applied to container's children as well as `background`.\r\n *\r\n * @default false\r\n * @param value Set state on children\r\n */\n set: function (value) {\n this.setPropertyValue(\"setStateOnChildren\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @param point A coordinate to check\r\n * @return `true` if it fits within container\r\n */\n Container.prototype.fitsToBounds = function (point) {\n var x = point.x;\n var y = point.y;\n var deviation = 0.5; // sometimes coordinates are rounded to numbers like .999 so we add deviation here\n if (x >= -deviation && x <= this.pixelWidth + deviation && y >= -deviation && y <= this.pixelHeight + deviation) {\n return true;\n } else {\n return false;\n }\n };\n /**\r\n * Copies all properties from different Container, including background\r\n * clone.\r\n *\r\n * @param source Source Container to copy from\r\n */\n Container.prototype.copyFrom = function (source) {\n var _this = this;\n _super.prototype.copyFrom.call(this, source);\n this.layout = source.layout;\n this.setStateOnChildren = source.setStateOnChildren;\n if (source._background) {\n this.background = source._background.clone();\n this.background.copyFrom(source._background); // won't work without this\n }\n $iter.each(source.children.iterator(), function (child) {\n if (child.shouldClone) {\n var clonedChild = child.clone();\n clonedChild.parent = _this;\n }\n });\n };\n Object.defineProperty(Container.prototype, \"preloader\", {\n /**\r\n * @return Preloader instance\r\n */\n get: function () {\n var preloader = this._preloader;\n if (preloader) {\n return preloader;\n } else if (this.parent) {\n return this.parent.preloader;\n }\n },\n /**\r\n * A [[Preloader]] instance to be used when Container is busy.\r\n *\r\n * @param preloader Preloader instance\r\n */\n set: function (preloader) {\n if (this._preloader) {\n this.removeDispose(this._preloader);\n }\n this._preloader = preloader;\n if (preloader) {\n preloader.parent = this.tooltipContainer;\n this._disposers.push(preloader);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\n Container.prototype.setPaper = function (paper) {\n var _this = this;\n var changed = _super.prototype.setPaper.call(this, paper);\n if (changed) {\n if (this._background) {\n this._background.paper = paper;\n this._background.topParent = this.topParent;\n }\n this.children.each(function (child) {\n child.setPaper(paper);\n child.topParent = _this.topParent;\n });\n }\n return changed;\n };\n /**\r\n * Removes Container from the system-wide list of invalid Containers.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.removeFromInvalids = function () {\n _super.prototype.removeFromInvalids.call(this);\n registry.removeFromInvalidLayouts(this);\n };\n /**\r\n * Sets a [[DataItem]] to be used as data for the Container.\r\n *\r\n * @todo Description\r\n * @param dataItem DataItem\r\n */\n Container.prototype.setDataItem = function (dataItem) {\n // this place is potentially dangerous, as if we set datItem for some dummy container, all children dataItems will be overriden\n // the main reason for doing this is that we need a setDataItem code to be called for each sprite, otherwise property fields won't be\n // applied. Also, getting dataItem from parent all the time is more expensive than saving value.\n if (this._dataItem != dataItem) {\n $iter.each(this.children.iterator(), function (child) {\n child.dataItem = dataItem;\n });\n if (this._background) {\n this._background.dataItem = dataItem;\n }\n }\n _super.prototype.setDataItem.call(this, dataItem);\n };\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype.measureElement = function () {\n if (this.disabled || this.isTemplate || this.layout == \"none\" || this.__disabled) {\n // void\n } else {\n this.validateLayout();\n }\n };\n Object.defineProperty(Container.prototype, \"fontFamily\", {\n /**\r\n * @return Font family\r\n */\n get: function () {\n return this.getPropertyValue(\"fontFamily\");\n },\n /**\r\n * Font family to be used for the text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font family value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"fontFamily\", value, true)) {\n this.setSVGAttribute({\n \"font-family\": value\n });\n this.invalidateLabels();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"fontSize\", {\n /**\r\n * @return Font size\r\n */\n get: function () {\n return this.getPropertyValue(\"fontSize\");\n },\n /**\r\n * Font size to be used for the text. The size can either be numeric, in\r\n * pixels, or other measurements.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font size value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"fontSize\", value, true)) {\n this.setSVGAttribute({\n \"font-size\": value\n });\n this.invalidateLabels();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\n Container.prototype.invalidateLabels = function () {\n this.children.each(function (child) {\n // can't import Label because of Circular dependencies\n if (child[\"hardInvalidate\"]) {\n child[\"hardInvalidate\"]();\n // this fixes firefox and viewport issue\n child.events.once(\"validated\", child.handleValidate, child, false);\n } else if (child instanceof Container) {\n child.invalidateLabels();\n }\n });\n };\n Object.defineProperty(Container.prototype, \"fontWeight\", {\n /**\r\n * @return Font weight\r\n */\n get: function () {\n return this.getPropertyValue(\"fontWeight\");\n },\n /**\r\n * Font weight to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Font weight\r\n */\n set: function (value) {\n this.setPropertyValue(\"fontWeight\", value);\n this.setSVGAttribute({\n \"font-weight\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Container.prototype, \"textDecoration\", {\n /**\r\n * @return Decoration\r\n */\n get: function () {\n return this.getPropertyValue(\"textDecoration\");\n },\n /**\r\n * A text decoration to use for text.\r\n *\r\n * Parts of the text may override this setting using in-line formatting.\r\n *\r\n * @param value Decoration\r\n */\n set: function (value) {\n this.setPropertyValue(\"textDecoration\", value);\n this.setSVGAttribute({\n \"text-decoration\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Disposes (destroys) the element and all its children.\r\n */\n Container.prototype.dispose = function () {\n if (this._background) {\n this._background.dispose();\n }\n this._shouldBeReady = [];\n this.disposeChildren();\n _super.prototype.dispose.call(this);\n };\n /**\r\n * Applies a [[SpriteState]] on this element.\r\n *\r\n * The first parameter can either be a name of the state or a [[SpriteState]]\r\n * instance.\r\n *\r\n * When run, this method will apply SVG properties defined in a\r\n * [[SpriteState]], but only those that are relevant to this particular\r\n * element, that is are listed in its respective `properties` array.\r\n *\r\n * @see {@link SpriteState}\r\n * @param value A state - name key or instance\r\n * @param transitionDuration Duration of the transition between current and new state\r\n * @param easing An easing function\r\n */\n Container.prototype.setState = function (value, transitionDuration, easing) {\n var stateName = value;\n if (value instanceof SpriteState) {\n stateName = value.name;\n }\n if (this.setStateOnChildren) {\n $iter.each(this.children.iterator(), function (child) {\n child.setState(stateName, transitionDuration, easing);\n // not good to set it in child setState\n if (stateName != \"active\") {\n child.isActive = false;\n }\n });\n }\n if (this._background) {\n this._background.setState(stateName);\n }\n if (this.setStateOnSprites.length) {\n $array.each(this.setStateOnSprites, function (item) {\n item.setState(stateName, transitionDuration, easing);\n });\n }\n return _super.prototype.setState.call(this, value, transitionDuration, easing);\n };\n // otherwise isActive won't work properly with background\n Container.prototype.setActive = function (value) {\n _super.prototype.setActive.call(this, value);\n if (this._background) {\n this._background.isActive = value;\n }\n };\n /**\r\n * Dispatches ready event. Dispatches when all children are ready.\r\n */\n Container.prototype.dispatchReady = function () {\n var _this = this;\n if (!this.isReady() && !this.isDisposed()) {\n var allReady_1 = true;\n $iter.eachContinue(this.children.iterator(), function (sprite) {\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\n allReady_1 = false;\n return false;\n } else {\n return true;\n }\n });\n $array.eachContinue(this._shouldBeReady, function (sprite) {\n if (!sprite.__disabled && !sprite.disabled && !sprite.isReady()) {\n allReady_1 = false;\n return false;\n } else {\n return true;\n }\n });\n if (allReady_1) {\n _super.prototype.dispatchReady.call(this);\n } else {\n registry.events.once(\"exitframe\", function () {\n _this.dispatchReady();\n system.requestFrame();\n }, undefined, false);\n }\n }\n };\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype._systemUpdate = function (skippedSprites) {\n this.children.each(function (child) {\n if (child.invalid) {\n if (!child._systemCheckIfValidate()) {\n skippedSprites.push(child);\n } else if (child.dataItem && child.dataItem.component && child.dataItem.component.dataInvalid) {\n skippedSprites.push(child);\n } else {\n child.validate();\n }\n }\n });\n _super.prototype._systemUpdate.call(this, skippedSprites);\n };\n /**\r\n * Called during the System.validatePositions method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype._systemValidatePositions = function () {\n this.children.each(function (sprite) {\n if (sprite.positionInvalid) {\n sprite.validatePosition();\n }\n });\n _super.prototype._systemValidatePositions.call(this);\n };\n /**\r\n * Called during the System.validateLayouts method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Container.prototype._systemValidateLayouts = function () {\n if (this.layoutInvalid && !this.isDisposed()) {\n this.validateLayout();\n }\n };\n Object.defineProperty(Container.prototype, \"tapToActivate\", {\n /**\r\n * @return Enable touch protection?\r\n */\n get: function () {\n return this._tapToActivate;\n },\n /**\r\n * If set to `true` the chart's regular touch functionality will be suspended\r\n * so that the whole page it is located in remains scrollable, even when\r\n * swiping over the chart's body.\r\n *\r\n * User will need to tap the chart in order to activate its regular touch\r\n * functionality.\r\n *\r\n * The chart will remain \"active\" as long as user keeps interacting with the\r\n * chart. After `tapTimeout` milliseconds the chart will return to its\r\n * \"protected\" mode.\r\n *\r\n * @default false\r\n * @since 4.4.0\r\n * @param value Enable touch protection?\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n */\n set: function (value) {\n if (this._tapToActivate != value) {\n this.setTapToActivate(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Container.prototype.setTapToActivate = function (value) {\n var _this = this;\n this._tapToActivate = value;\n this.interactions.isTouchProtected = value;\n // setEventDisposer will also remove listeners if value == false\n if (value) {\n this.interactions.setEventDisposer(\"container-tapToActivate\", value, function () {\n return new MultiDisposer([_this.events.on(\"hit\", _this.handleTapToActivate, _this, false), _this.events.on(\"down\", _this.initTapTimeout, _this, false), _this.events.on(\"track\", _this.initTapTimeout, _this, false),\n //this.events.on(\"drag\", this.initTapTimeout, this, false),\n getInteraction().body.events.on(\"down\", function (ev) {\n if (!getInteraction().isLocalElement(ev.pointer, _this.paper.svg, _this.uid)) {\n _this.handleTapToActivateDeactivation();\n }\n }, _this, false)]);\n });\n }\n getInteraction();\n };\n /**\r\n * @todo Ignore on non-touch events\r\n */\n Container.prototype.handleTapToActivate = function () {\n this.interactions.isTouchProtected = false;\n this.initTapTimeout();\n };\n Container.prototype.handleTapToActivateDeactivation = function () {\n this.interactions.isTouchProtected = true;\n };\n Container.prototype.initTapTimeout = function () {\n var _this = this;\n if (this._tapToActivateTimeout) {\n this._tapToActivateTimeout.dispose();\n }\n if (this.tapToActivate && !this.interactions.isTouchProtected && this.tapTimeout) {\n this._tapToActivateTimeout = this.setTimeout(function () {\n _this.handleTapToActivateDeactivation();\n }, this.tapTimeout);\n }\n };\n /**\r\n * Moves the whole chart to other HTML container.\r\n *\r\n * `htmlElement` can either be a reference to a DOM element, or an id of\r\n * such element.\r\n *\r\n * @since 4.9.24\r\n * @param htmlElement Target element\r\n */\n Container.prototype.moveHtmlContainer = function (htmlElement) {\n var newContainer = $dom.getElement(htmlElement);\n if (newContainer) {\n this.htmlContainer = newContainer;\n var svgDiv = this.svgContainer;\n svgDiv.htmlElement = newContainer;\n svgDiv.htmlElement.appendChild(svgDiv.SVGContainer);\n svgDiv.initSensor();\n svgDiv.measure();\n } else if ($type.isString(htmlElement) && htmlElement != \"\") {\n system.log(\"html container '\" + htmlElement + \"' not found\");\n //throw new Error(\"html container not found\");\n }\n };\n /**\r\n * @ignore\r\n * @return Has license?\r\n */\n Container.prototype.hasLicense = function () {\n if (options.commercialLicense) {\n return true;\n }\n for (var i = 0; i < options.licenses.length; i++) {\n if (options.licenses[i].match(/^CH.{5,}/i)) {\n return true;\n }\n }\n return false;\n };\n return Container;\n}(Sprite);\nexport { Container };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Container\"] = Container;\n//# sourceMappingURL=Container.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { registry, is } from \"./Registry\";\nimport { Container } from \"./Container\";\nimport { raf } from \"./utils/AsyncPending\";\nimport { triggerIdle } from \"./utils/AsyncPending\";\nimport * as $array from \"./utils/Array\";\nimport * as $object from \"./utils/Object\";\nimport * as $log from \"./utils/Log\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * The main class that handles system-wide tasks, like caching, heartbeats, etc.\r\n * @important\r\n */\nvar System = /** @class */function () {\n /**\r\n * Performs initialization of the System object.\r\n *\r\n * Called when the first [[Sprite]] object is created.\r\n *\r\n * @ignore Exclude from docs\r\n */\n function System() {\n /**\r\n * A flag indicating if the system is on pause.\r\n */\n this._isPaused = false;\n /**\r\n * Holds the list of currently playing animations.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this.animations = [];\n /**\r\n * Unique ID of the object.\r\n */\n this.uid = registry.getUniqueId();\n /**\r\n * @todo Description\r\n * @todo Needed?\r\n * @ignore Exclude from docs\r\n */\n this.dummyCounter = 0;\n this._frameRequested = false;\n this.updateStepDuration = 45;\n this.time = Date.now();\n }\n /**\r\n * Reports time elapsed since timer was reset.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Needed?\r\n * @param msg Message to report in console\r\n * @param reset Reset time counter\r\n */\n System.prototype.reportTime = function (msg, reset) {\n if (this.dummyCounter < 6) {\n //console.log(Date.now() - this.time, msg, this.dummyCounter2);\n }\n if (reset) {\n this.time = Date.now();\n }\n };\n /**\r\n * Performs \"heartbeat\" operations `frameRate` number of times per second.\r\n *\r\n * When the chart element is invalidated, it is not immediately redrawn.\r\n *\r\n * Instead it waits for the next `update()` cycle to be re-validated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\n System.prototype.update = function () {\n var _this = this;\n if (this._isPaused) {\n return;\n }\n this._frameRequested = false;\n var time = Date.now();\n registry.dispatchImmediately(\"enterframe\");\n //this.validateLayouts();\n //this.validatePositions();\n /*\r\n for (let key in registry.invalidLayouts) {\r\n this.validateLayouts(key);\r\n }\r\n for (let key in registry.invalidPositions) {\r\n this.validatePositions(key);\r\n }\r\n */\n var skippedComponents = [];\n // data objects first - do all calculations\n // only data is parsed in chunks, thats why we do for loop instead of a while like with other invalid items.\n // important to go backwards, as items are removed!\n // TODO use iterator instead\n for (var key in registry.invalidDatas) {\n if ($object.hasKey(registry.invalidDatas, key)) {\n var invalidData = registry.invalidDatas[key];\n while (invalidData.length > 0) {\n var component = invalidData[0];\n var dataProvider = component.dataProvider;\n if (!component.isDisposed()) {\n if (dataProvider && dataProvider.dataInvalid) {\n try {\n dataProvider.validateData();\n if (dataProvider.dataValidationProgress < 1) {\n break;\n }\n } catch (e) {\n $array.remove(invalidData, dataProvider);\n dataProvider.raiseCriticalError(e);\n }\n } else {\n try {\n component.validateData();\n if (component.dataValidationProgress < 1) {\n break;\n }\n } catch (e) {\n $array.remove(invalidData, component);\n component.raiseCriticalError(e);\n }\n }\n } else {\n $array.remove(invalidData, component);\n }\n }\n if (Date.now() - time > this.updateStepDuration) {\n break;\n }\n }\n }\n while (registry.invalidRawDatas.length > 0) {\n var component = registry.invalidRawDatas[0];\n if (!component.isDisposed()) {\n try {\n component.validateRawData();\n } catch (e) {\n $array.remove(registry.invalidRawDatas, component);\n component.raiseCriticalError(e);\n }\n } else {\n $array.remove(registry.invalidRawDatas, component);\n }\n }\n // TODO use iterator instead\n while (registry.invalidDataItems.length > 0) {\n var component = registry.invalidDataItems[0];\n var dataProvider = component.dataProvider;\n // this is needed to avoid partial value validation when data is parsed in chunks\n if (component.isDisposed() || component.dataInvalid || dataProvider && dataProvider.dataInvalid) {\n // void\n } else {\n try {\n component.validateDataItems();\n } catch (e) {\n $array.remove(registry.invalidDataItems, component);\n component.raiseCriticalError(e);\n }\n }\n // this might seem too much, as validateValues removes from invalidDataItems aswell, but just to be sure (in case validateData is overriden and no super is called)\n $array.remove(registry.invalidDataItems, component);\n }\n // TODO use iterator instead\n while (registry.invalidDataRange.length > 0) {\n var component = registry.invalidDataRange[0];\n var dataProvider = component.dataProvider;\n if (component.isDisposed() || component.dataInvalid || dataProvider && dataProvider.dataInvalid) {\n // void\n } else {\n try {\n component.validateDataRange();\n if (!component.skipRangeEvent) {\n component.dispatchImmediately(\"datarangechanged\");\n }\n component.skipRangeEvent = false;\n } catch (e) {\n $array.remove(registry.invalidDataRange, component);\n component.raiseCriticalError(e);\n }\n }\n // this might seem too much, as validateDataRange removes from invalidDataRange aswell, but just to be sure (in case validateData is overriden and no super is called)\n $array.remove(registry.invalidDataRange, component);\n }\n var skippedSprites = [];\n // display objects later\n // TODO use iterator instead\n $object.each(registry.invalidLayouts, function (key) {\n _this.validateLayouts(key);\n });\n $object.each(registry.invalidPositions, function (key) {\n _this.validatePositions(key);\n });\n var hasSkipped = false;\n time = Date.now();\n $object.each(registry.invalidSprites, function (key, invalidSprites) {\n var count = 0;\n while (invalidSprites.length > 0) {\n _this.validateLayouts(key);\n _this.validatePositions(key);\n count++;\n if (count == 5) {\n if (Date.now() - time > _this.updateStepDuration) {\n break;\n }\n count = 0;\n }\n var sprite = invalidSprites[invalidSprites.length - 1];\n // we need to check this, as validateLayout might validate sprite\n if (sprite && !sprite.isDisposed()) {\n if (!sprite._systemCheckIfValidate()) {\n // void\n skippedSprites.push(sprite);\n } else {\n if (!_this.checkIfValidate2(sprite)) {\n // void\n skippedSprites.push(sprite);\n } else {\n try {\n sprite._systemUpdate(skippedSprites);\n } catch (e) {\n sprite.invalid = false;\n $array.remove(invalidSprites, sprite);\n sprite.raiseCriticalError(e);\n }\n }\n }\n // this might seem too much, but it's ok\n sprite.invalid = false;\n }\n $array.remove(invalidSprites, sprite);\n }\n registry.invalidSprites[key] = registry.invalidSprites[key].concat(skippedSprites);\n });\n $object.each(registry.invalidSprites, function (key, value) {\n if (value.length > 0) {\n hasSkipped = true;\n }\n });\n $object.each(registry.invalidDatas, function (key, value) {\n if (value.length > 0) {\n hasSkipped = true;\n }\n });\n // TODO make this more efficient\n // TODO don't copy the array\n $array.each($array.copy(this.animations), function (x) {\n x.update();\n });\n //if(!hasSkipped){\n $object.each(registry.invalidLayouts, function (key) {\n _this.validateLayouts(key);\n });\n $object.each(registry.invalidPositions, function (key) {\n _this.validatePositions(key);\n });\n //}\n triggerIdle();\n $object.each(registry.invalidLayouts, function (key) {\n _this.validateLayouts(key);\n });\n $object.each(registry.invalidPositions, function (key) {\n _this.validatePositions(key);\n });\n registry.dispatchImmediately(\"exitframe\");\n if (hasSkipped || this.animations.length > 0 || skippedComponents.length > 0) {\n this.requestFrame();\n }\n if (this.updateStepDuration < 200) {\n var all0_1 = true;\n $object.each(registry.invalidDatas, function (key, value) {\n if (value.length > 0) {\n all0_1 = false;\n }\n });\n $object.each(registry.invalidSprites, function (key, value) {\n if (value.length > 0) {\n all0_1 = false;\n }\n });\n if (all0_1) {\n this.updateStepDuration = 200;\n }\n }\n };\n System.prototype.checkIfValidate2 = function (sprite) {\n if (sprite.dataItem && sprite.dataItem.component && sprite.dataItem.component.dataInvalid && !sprite.dataItem.component.isTemplate) {\n return false;\n } else {\n return true;\n }\n };\n /**\r\n * Requests new animation frame\r\n */\n System.prototype.requestFrame = function () {\n var _this = this;\n if (!this._frameRequested) {\n raf(function () {\n _this.update();\n });\n this._frameRequested = true;\n }\n };\n /**\r\n * Call this method if you update data or config of a chart that is in\r\n * hidden container, after revealing the container, so that labels and\r\n * possibly other elements can correctly arrange themselves.\r\n *\r\n * @since 4.7.10\r\n * @param container Target container\r\n */\n System.prototype.softInvalidate = function (container) {\n var _this = this;\n container.children.each(function (child) {\n if (child instanceof Container) {\n _this.softInvalidate(child);\n }\n if (child.measureFailed) {\n if (is(child, \"Label\")) {\n child.hardInvalidate();\n } else {\n child.invalidate();\n }\n child.measureFailed = false;\n }\n });\n };\n /**\r\n * Triggers position re-validation on all [[Sprite]] elements that have\r\n * invalid(ated) positions.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\n System.prototype.validatePositions = function (id) {\n // invalid positions\n // TODO use iterator instead\n var invalidPositions = registry.invalidPositions[id];\n while (invalidPositions.length > 0) {\n var sprite = invalidPositions[invalidPositions.length - 1];\n if (!sprite.isDisposed()) {\n try {\n sprite._systemValidatePositions();\n } catch (e) {\n sprite.positionInvalid = false;\n $array.remove(invalidPositions, sprite);\n sprite.raiseCriticalError(e);\n }\n } else {\n $array.remove(invalidPositions, sprite);\n }\n }\n };\n /**\r\n * Triggers position re-validation on all [[Container]] elements that have\r\n * invalid(ated) layouts.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Maybe should be private?\r\n */\n System.prototype.validateLayouts = function (id) {\n // invalid positions\n // TODO use iterator instead\n var invalidLayouts = registry.invalidLayouts[id];\n while (invalidLayouts.length > 0) {\n var container = invalidLayouts[invalidLayouts.length - 1];\n if (!container.isDisposed()) {\n try {\n container.children.each(function (sprite) {\n sprite._systemValidateLayouts();\n });\n container.validateLayout();\n } catch (e) {\n container.layoutInvalid = false;\n $array.remove(invalidLayouts, container);\n container.raiseCriticalError(e);\n }\n } else {\n $array.remove(invalidLayouts, container);\n }\n }\n };\n /**\r\n * Outputs string to console if `verbose` is `true`.\r\n *\r\n * @param value Message to output to console\r\n */\n System.prototype.log = function (value) {\n $log.log(value);\n };\n Object.defineProperty(System.prototype, \"isPaused\", {\n /**\r\n * @return Is system on pause?\r\n */\n get: function () {\n return this._isPaused;\n },\n /**\r\n * Pauses all the processes of all the amCharts objects on the page\r\n *\r\n * @return is paused?\r\n */\n set: function (value) {\n this._isPaused = value;\n if (!value) {\n this._frameRequested = false;\n this.requestFrame();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * amCharts Version.\r\n *\r\n * This follows npm's semver specification.\r\n *\r\n * @see {@link https://docs.npmjs.com/misc/semver}\r\n */\n System.VERSION = \"4.10.25\";\n return System;\n}();\nexport { System };\n/**\r\n * A singleton global instance of [[System]].\r\n *\r\n * All code should use this, rather than instantiating their\r\n * own System objects.\r\n */\nexport var system = new System();\n//# sourceMappingURL=System.js.map","/**\r\n * Data parser module.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { DateFormatter } from \"../formatters/DateFormatter\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base class for the data parsers.\r\n */\nvar DataParser = /** @class */function () {\n function DataParser() {}\n /**\r\n * A \"placeholder\" function for real parsers to override.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Source data\r\n * @return Parsed data (empty)\r\n */\n DataParser.prototype.parse = function (data) {\n return [];\n };\n ;\n Object.defineProperty(DataParser.prototype, \"parsableNumbers\", {\n /**\r\n * Checks if there are any numeric fields that need to be converted to\r\n * numbers.\r\n *\r\n * @return Numeric fields?\r\n */\n get: function () {\n return this.options.numberFields && this.options.numberFields.length > 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts a value to 'number' if it is in `numberFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\n DataParser.prototype.maybeToNumber = function (field, value) {\n if (this.options.numberFields.indexOf(field) !== -1) {\n return $utils.anyToNumber(value);\n }\n return value;\n };\n Object.defineProperty(DataParser.prototype, \"parsableDates\", {\n /**\r\n * Checks if there are any date fields that need to be converted to `Date`\r\n * objects.\r\n *\r\n * @return Date fields?\r\n */\n get: function () {\n return this.options.dateFields && this.options.dateFields.length > 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts a value to `Date` if it is in `dateFields`.\r\n *\r\n * @param field Field name\r\n * @param value Value\r\n * @return Parsed or original value\r\n */\n DataParser.prototype.maybeToDate = function (field, value) {\n if (this.options.dateFields.indexOf(field) !== -1) {\n return this.options.dateFormatter.parse(value, this.dateFormat);\n }\n return value;\n };\n /**\r\n * Replaces empty value with something else.\r\n *\r\n * @param value Source value\r\n * @return Source value or replacement\r\n */\n DataParser.prototype.maybeToEmpty = function (value) {\n if ((!$type.hasValue(value) || value == \"\") && $type.hasValue(this.options.emptyAs)) {\n return this.options.emptyAs;\n }\n return value;\n };\n Object.defineProperty(DataParser.prototype, \"dateFormatter\", {\n /**\r\n * [[DateFormatter]] object for date parsing.\r\n *\r\n * If there was not [[DateFormatter]] supplied in parser options, a new one\r\n * is created.\r\n *\r\n * @return Date formatter\r\n * @see {@link DateFormatter}\r\n */\n get: function () {\n if (!this.options.dateFormatter) {\n this.options.dateFormatter = new DateFormatter();\n if (this.options.dateFormat) {\n this.options.dateFormat = this.options.dateFormat;\n }\n }\n return this.options.dateFormatter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataParser.prototype, \"dateFormat\", {\n /**\r\n * A date format to use when parsing dates.\r\n *\r\n * @return Date format\r\n * @see {@link DateFormatter}\r\n */\n get: function () {\n return this.options.dateFormat || this.dateFormatter.inputDateFormat;\n },\n enumerable: true,\n configurable: true\n });\n return DataParser;\n}();\nexport { DataParser };\n//# sourceMappingURL=DataParser.js.map","/**\r\n * CSV parser.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { DataParser } from \"./DataParser\";\nimport * as $type from \"../utils/Type\";\nimport * as $array from \"../utils/Array\";\n/**\r\n * Define possible separators.\r\n */\nvar separators = [\",\", \";\", \"\\t\"];\n/**\r\n * A parser for CSV format.\r\n *\r\n * @important\r\n */\nvar CSVParser = /** @class */function (_super) {\n __extends(CSVParser, _super);\n function CSVParser() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Content-type suitable for CSV format.\r\n */\n _this.contentType = \"text/csv\";\n /**\r\n * Parser options.\r\n *\r\n * @see {@link ICSVOptions} for description of each option\r\n */\n _this.options = {\n delimiter: \"\",\n reverse: false,\n skipRows: 0,\n skipEmpty: true,\n useColumnNames: false\n };\n return _this;\n }\n /**\r\n * Tests if the format is CSV.\r\n *\r\n * @param data Source data\r\n * @return Is it CSV?\r\n */\n CSVParser.isCSV = function (data) {\n return CSVParser.getDelimiterFromData(data) ? true : false;\n };\n /**\r\n * Tries to determine a column separator.\r\n *\r\n * @param data Source data\r\n * @return Separator\r\n */\n CSVParser.getDelimiterFromData = function (data) {\n // We're going to take first few lines of the CSV with different\n // possible separators and check if it results in same number of columns.\n // If it does, we're going to assume it's a CSV\n var lines = data.split(\"\\n\");\n var len = lines.length;\n var separator;\n $array.each(separators, function (sep) {\n var columns = 0,\n lineColums = 0;\n // TODO replace with iterators\n for (var i = 0; i < len; ++i) {\n // Get number of columns in a line\n columns = lines[i].split(sep).length;\n if (columns > 1) {\n // More than one column - possible candidate\n if (lineColums === 0) {\n // First line\n lineColums = columns;\n } else if (columns != lineColums) {\n // Incorrect number of columns, give up on this separator\n lineColums = 0;\n break;\n }\n } else {\n // Not this separator\n // Not point in continuing\n lineColums = 0;\n break;\n }\n }\n // Check if we have a winner\n if (lineColums) {\n separator = sep;\n }\n });\n return separator;\n };\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\n CSVParser.prototype.parse = function (csv) {\n // Check if we have delimiter set\n if (!this.options.delimiter) {\n this.options.delimiter = CSVParser.getDelimiterFromData(csv);\n }\n // Get CSV data as array\n var data = this.CSVToArray(csv, this.options.delimiter);\n // Do we need to cast some fields to numbers?\n var empty = $type.hasValue(this.options.emptyAs);\n var numbers = this.parsableNumbers;\n var dates = this.parsableDates;\n // Init resuling array\n var res = [],\n cols = [],\n col,\n i;\n // Skip rows\n for (i = 0; i < this.options.skipRows; i++) {\n data.shift();\n }\n // First row holds column names?\n if (this.options.useColumnNames) {\n cols = data.shift();\n // Normalize column names\n for (var x = 0; x < cols.length; x++) {\n // trim\n col = $type.hasValue(cols[x]) ? cols[x].replace(/^\\s+|\\s+$/gm, \"\") : \"\";\n // Check for empty\n if (\"\" === col) {\n col = \"col\" + x;\n }\n cols[x] = col;\n }\n }\n // Iterate through the result set\n var row;\n while (true) {\n row = this.options.reverse ? data.pop() : data.shift();\n if (!row) {\n break;\n }\n if (this.options.skipEmpty && row.length === 1 && row[0] === \"\") {\n continue;\n }\n var dataPoint = {};\n for (i = 0; i < row.length; i++) {\n col = undefined === cols[i] ? \"col\" + i : cols[i];\n dataPoint[col] = row[i] === \"\" ? this.options.emptyAs : row[i];\n // Convert\n if (empty) {\n dataPoint[col] = this.maybeToEmpty(dataPoint[col]);\n }\n if (numbers) {\n dataPoint[col] = this.maybeToNumber(col, dataPoint[col]);\n }\n if (dates) {\n dataPoint[col] = this.maybeToDate(col, dataPoint[col]);\n }\n }\n res.push(dataPoint);\n }\n return res;\n };\n /**\r\n * Converts CSV into array.\r\n *\r\n * The functionality of this function is taken from here:\r\n * http://www.bennadel.com/blog/1504-ask-ben-parsing-csv-strings-with-javascript-exec-regular-expression-command.htm\r\n *\r\n * @param data Source data\r\n * @param delimiter Column delimiter\r\n * @return Parsed array\r\n */\n CSVParser.prototype.CSVToArray = function (data, delimiter) {\n // Check to see if the delimiter is defined. If not,\n // then default to comma.\n delimiter = delimiter || ',';\n // Create a regular expression to parse the CSV values.\n var objPattern = new RegExp(\n // Delimiters.\n \"(\\\\\" + delimiter + \"|\\\\r?\\\\n|\\\\r|^)\" +\n // Quoted fields.\n \"(?:\\\"([^\\\"]*(?:\\\"\\\"[^\\\"]*)*)\\\"|\" +\n // Standard fields.\n \"([^\\\"\\\\\" + delimiter + \"\\\\r\\\\n]*))\", \"gi\");\n // Create an array to hold our data. Give the array\n // a default empty first row.\n var arrData = [[]];\n // Create an array to hold our individual pattern\n // matching groups.\n var arrMatches = null;\n // Keep looping over the regular expression matches\n // until we can no longer find a match.\n while (true) {\n arrMatches = objPattern.exec(data);\n if (!arrMatches) {\n break;\n }\n // Get the delimiter that was found.\n var strMatchedDelimiter = arrMatches[1];\n // Check to see if the given delimiter has a length\n // (is not the start of string) and if it matches\n // field delimiter. If id does not, then we know\n // that this delimiter is a row delimiter.\n if (strMatchedDelimiter.length && strMatchedDelimiter !== delimiter) {\n // Since we have reached a new row of data,\n // add an empty row to our data array.\n arrData.push([]);\n }\n // Now that we have our delimiter out of the way,\n // let's check to see which kind of value we\n // captured (quoted or unquoted).\n var strMatchedValue = void 0;\n if (arrMatches[2]) {\n // We found a quoted value. When we capture\n // this value, unescape any double quotes.\n strMatchedValue = arrMatches[2].replace(new RegExp(\"\\\"\\\"\", \"g\"), \"\\\"\");\n } else {\n // We found a non-quoted value.\n strMatchedValue = arrMatches[3];\n }\n // Now that we have our value string, let's add\n // it to the data array.\n arrData[arrData.length - 1].push(strMatchedValue);\n }\n // Return the parsed data.\n return arrData;\n };\n return CSVParser;\n}(DataParser);\nexport { CSVParser };\n//# sourceMappingURL=CSVParser.js.map","/**\r\n * JSON parser.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { DataParser } from \"./DataParser\";\nimport * as $object from \"../utils/Object\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * A parser for JSON.\r\n *\r\n * @important\r\n */\nvar JSONParser = /** @class */function (_super) {\n __extends(JSONParser, _super);\n function JSONParser() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\r\n * Content-type suitable for JSON format.\r\n */\n _this.contentType = \"application/json\";\n /**\r\n * Parser options.\r\n *\r\n * @see {@link IJSONOptions} for description of each option\r\n */\n _this.options = {};\n return _this;\n }\n /**\r\n * Tests if the data is valid JSON.\r\n *\r\n * @param data Source data\r\n * @return Is it JSON?\r\n */\n JSONParser.isJSON = function (data) {\n try {\n // Try parsing JSON\n JSON.parse(data);\n // If we got to this point it means it's a valid JSON\n return true;\n } catch (e) {\n return false;\n }\n };\n /**\r\n * Parses and returns data.\r\n *\r\n * @param data Unparsed data\r\n * @return Parsed data\r\n */\n JSONParser.prototype.parse = function (data) {\n var _this = this;\n // Init return\n var res;\n // Try parsing\n try {\n if ($type.hasValue(JSON)) {\n res = JSON.parse(data);\n }\n } catch (e) {\n return undefined;\n }\n // Do we need to cast some fields to numbers or dates?\n var empty = $type.hasValue(this.options.emptyAs);\n var numbers = this.parsableNumbers;\n var dates = this.parsableDates;\n if (Array.isArray(res) && (numbers || dates || empty)) {\n var _loop_1 = function (i, len) {\n var row = res[i];\n $object.each(row, function (key, value) {\n if (empty) {\n row[key] = _this.maybeToEmpty(row[key]);\n }\n if (numbers) {\n row[key] = _this.maybeToNumber(key, row[key]);\n }\n if (dates) {\n row[key] = _this.maybeToDate(key, row[key]);\n }\n });\n };\n // Iterate through the data and check if it needs to be converted\n for (var i = 0, len = res.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n // Convert to array\n //return Array.isArray(res) ? res : [res];\n return res;\n };\n return JSONParser;\n}(DataParser);\nexport { JSONParser };\n//# sourceMappingURL=JSONParser.js.map","/**\r\n * Data Loader is responsible for loading and parsing external data\r\n */\nimport { CSVParser } from \"./CSVParser\";\nimport { JSONParser } from \"./JSONParser\";\nimport { Adapter } from \"../utils/Adapter\";\nimport * as $net from \"../utils/Net\";\nimport * as $array from \"../utils/Array\";\n;\n/**\r\n * Data Loader is responsible for loading and parsing external data.\r\n *\r\n * There is just one instance of DataLoader per system. Unless you have a\r\n * speicific reason, do not instantiate additional instances.\r\n *\r\n * The global instance of Data Loader is accessible via:\r\n *\r\n * ```TypeScript\r\n * am4core.dataLoader;\r\n * ```\r\n * ```JavaScript\r\n * am4core.dataLoader;\r\n * ```\r\n *\r\n * A loading of specific data source is done via [[DataSource]].\r\n *\r\n Please refer to [[DataSource]] for information how to use it.\r\n *\r\n * @see {@link IDataLoaderAdapters} for a list of available Adapters\r\n */\nvar DataLoader = /** @class */function () {\n function DataLoader() {\n /**\r\n * Adapter.\r\n */\n this.adapter = new Adapter(this);\n }\n /**\r\n * Loads a supplied [[DataSource]] or an array of data sources, then calls\r\n * their respective `parse` methods.\r\n *\r\n * @param source A single data source or an array of multiple of data sources\r\n */\n DataLoader.prototype.load = function (source) {\n var sources = Array.isArray(source) ? source : [source];\n // Add each Source to the list to be loaded simultaneously\n var promises = $array.map(sources, function (x) {\n // Dispatch events\n x.dispatchImmediately(\"started\");\n x.dispatchImmediately(\"loadstarted\");\n return $net.load(x.url, x, x.requestOptions);\n });\n // Run all promises in parallel\n Promise.all(promises).then(function (res) {\n // Process each loaded source\n $array.each(res, function (result) {\n // Get Source\n var source = result.target;\n // Dispatch events\n source.dispatchImmediately(\"loadended\");\n if (result.error) {\n if (source.events.isEnabled(\"error\")) {\n source.events.dispatchImmediately(\"error\", {\n type: \"error\",\n code: result.xhr.status,\n message: source.language.translate(\"Unable to load file: %1\", null, source.url),\n target: source\n });\n }\n } else {\n // Initiate parsing of the loaded data\n source.processData(result.response, result.type);\n }\n source.dispatchImmediately(\"ended\");\n });\n }).catch(function (res) {\n if (res.target) {\n res.target.dispatchImmediately(\"loadended\");\n if (res.target.events.isEnabled(\"error\")) {\n res.target.events.dispatchImmediately(\"error\", {\n type: \"error\",\n code: res.xhr.status,\n message: res.target.language.translate(\"Unable to load file: %1\", null, res.target.url),\n target: res.target\n });\n }\n res.target.dispatchImmediately(\"ended\");\n }\n });\n };\n /**\r\n * Instantiates a [[DataParser]] object based on the data type.\r\n * Built-in parser types are as follows:\r\n *\r\n * * \"csv\" or \"text/csv\"\r\n * * \"json\" or \"application/json\"\r\n *\r\n * @param contentType A format type\r\n * @return A parser object\r\n */\n DataLoader.prototype.getParserByType = function (contentType) {\n // Let some plugin decide\n var parser = this.adapter.apply(\"getParserByType\", {\n parser: null,\n type: contentType\n }).parser;\n if (parser) {\n return parser;\n }\n if (contentType == \"csv\" || contentType == \"text/csv\" || contentType == \"application/vnd.ms-excel\") {\n return new CSVParser();\n }\n if (contentType == \"json\" || contentType == \"application/json\") {\n return new JSONParser();\n }\n return;\n };\n /**\r\n * Tries to determine a parser out of content type and/or actual data.\r\n *\r\n * @param data Data\r\n * @param contentType Content-type\r\n * @return Parser instance\r\n */\n DataLoader.prototype.getParserByData = function (data, contentType) {\n // Let some plugin decide\n var parser = this.adapter.apply(\"getParserByData\", {\n parser: null,\n data: data,\n type: contentType\n }).parser;\n // Check if we have parser from outside code\n if (!parser) {\n // No, let's try to figure it out\n parser = this.getParserByType(contentType);\n if (parser) {\n // We're able to figure out parser by content-type\n return parser;\n } else if (JSONParser.isJSON(data)) {\n return this.getParserByType(\"json\");\n } else if (CSVParser.isCSV(data)) {\n return this.getParserByType(\"csv\");\n }\n }\n return parser;\n };\n return DataLoader;\n}();\nexport { DataLoader };\n/**\r\n * Create instance of Data Loader\r\n */\nexport var dataLoader = new DataLoader();\n//# sourceMappingURL=DataLoader.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { dataLoader } from \"./DataLoader\";\nimport { JSONParser } from \"./JSONParser\";\nimport { CSVParser } from \"./CSVParser\";\nimport { BaseObjectEvents } from \"../Base\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { Language } from \"../utils/Language\";\nimport { DateFormatter } from \"../formatters/DateFormatter\";\nimport { registry } from \"../Registry\";\nimport * as $type from \"../utils/Type\";\nimport * as $object from \"../utils/Object\";\n;\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a single data source - external file with all of its settings,\r\n * such as format, data parsing, etc.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": \"JSONParser\"\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link IDataSourceEvents} for a list of available events\r\n * @see {@link IDataSourceAdapters} for a list of available Adapters\r\n */\nvar DataSource = /** @class */function (_super) {\n __extends(DataSource, _super);\n /**\r\n * Constructor\r\n */\n function DataSource(url, parser) {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n /**\r\n * Custom options for HTTP(S) request.\r\n */\n _this._requestOptions = {};\n /**\r\n * If set to `true`, any subsequent data loads will be considered incremental\r\n * (containing only new data points that are supposed to be added to existing\r\n * data).\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n */\n _this._incremental = false;\n /**\r\n * A collection of key/value pairs to attach to a data source URL when making\r\n * an incremental request.\r\n */\n _this._incrementalParams = {};\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n */\n _this._keepCount = false;\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * @default false\r\n * @since 4.5.5\r\n */\n _this._updateCurrentData = false;\n /**\r\n * Will show loading indicator when loading files.\r\n */\n _this.showPreloader = true;\n _this.className = \"DataSource\";\n // Set defaults\n if (url) {\n _this.url = url;\n }\n // Set parser\n if (parser) {\n if (typeof parser == \"string\") {\n _this.parser = dataLoader.getParserByType(parser);\n } else {\n _this.parser = parser;\n }\n }\n return _this;\n }\n /**\r\n * Processes the loaded data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param data Raw (unparsed) data\r\n * @param contentType Content type of the loaded data (optional)\r\n */\n DataSource.prototype.processData = function (data, contentType) {\n // Parsing started\n this.dispatchImmediately(\"parsestarted\");\n // Check if parser is set\n if (!this.parser) {\n // Try to resolve from data\n this.parser = dataLoader.getParserByData(data, contentType);\n if (!this.parser) {\n // We have a problem - nobody knows what to do with the data\n // Raise error\n if (this.events.isEnabled(\"parseerror\")) {\n var event_1 = {\n type: \"parseerror\",\n message: this.language.translate(\"No parser available for file: %1\", null, this.url),\n target: this\n };\n this.events.dispatchImmediately(\"parseerror\", event_1);\n }\n this.dispatchImmediately(\"parseended\");\n return;\n }\n }\n // Apply options adapters\n this.parser.options = this.adapter.apply(\"parserOptions\", this.parser.options);\n this.parser.options.dateFields = this.adapter.apply(\"dateFields\", this.parser.options.dateFields || []);\n this.parser.options.numberFields = this.adapter.apply(\"numberFields\", this.parser.options.numberFields || []);\n // Check if we need to pass in date formatter\n if (this.parser.options.dateFields && !this.parser.options.dateFormatter) {\n this.parser.options.dateFormatter = this.dateFormatter;\n }\n // Parse\n this.data = this.adapter.apply(\"parsedData\", this.parser.parse(this.adapter.apply(\"unparsedData\", data)));\n // Check for parsing errors\n if (!$type.hasValue(this.data) && this.events.isEnabled(\"parseerror\")) {\n var event_2 = {\n type: \"parseerror\",\n message: this.language.translate(\"Error parsing file: %1\", null, this.url),\n target: this\n };\n this.events.dispatchImmediately(\"parseerror\", event_2);\n }\n // Wrap up\n this.dispatchImmediately(\"parseended\");\n if ($type.hasValue(this.data)) {\n this.dispatchImmediately(\"done\", {\n \"data\": this.data\n });\n }\n // The component is responsible for updating its own data vtriggered via\n // events.\n // Update last data load\n this.lastLoad = new Date();\n };\n Object.defineProperty(DataSource.prototype, \"url\", {\n /**\r\n * @return URL\r\n */\n get: function () {\n // Get URL\n var url = this.disableCache ? this.timestampUrl(this._url) : this._url;\n // Add incremental params\n if (this.incremental && this.component.data.length) {\n url = this.addUrlParams(url, this.incrementalParams);\n }\n return this.adapter.apply(\"url\", url);\n },\n /**\r\n * URL of the data source.\r\n *\r\n * @param value URL\r\n */\n set: function (value) {\n this._url = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"requestOptions\", {\n /**\r\n * @return Options\r\n */\n get: function () {\n return this.adapter.apply(\"requestOptions\", this._requestOptions);\n },\n /**\r\n * Custom options for HTTP(S) request.\r\n *\r\n * At this moment the only option supported is: `requestHeaders`, which holds\r\n * an array of objects for custom request headers, e.g.:\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ``````JavaScript\r\n * chart.dataSource.requestOptions.requestHeaders = [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }];\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * // ...\r\n * \"requestOptions\": {\r\n * \"requestHeaders\": [{\r\n * \"key\": \"x-access-token\",\r\n * \"value\": \"123456789\"\r\n * }]\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * NOTE: setting this options on an-already loaded DataSource will not\r\n * trigger a reload.\r\n *\r\n * @param value Options\r\n */\n set: function (value) {\n this._requestOptions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"parser\", {\n /**\r\n * @return Data parser\r\n */\n get: function () {\n if (!this._parser) {\n this._parser = new JSONParser();\n }\n return this.adapter.apply(\"parser\", this._parser);\n },\n /**\r\n * A parser to be used to parse data.\r\n *\r\n * ```TypeScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JavaScript\r\n * chart.dataSource.url = \"http://www.myweb.com/data.json\";\r\n * chart.dataSource.parser = am4core.JSONParser;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"dataSource\": {\r\n * \"url\": \"http://www.myweb.com/data.json\",\r\n * \"parser\": {\r\n * \"type\": \"JSONParser\"\r\n * }\r\n * },\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @default JSONParser\r\n * @param value Data parser\r\n */\n set: function (value) {\n this._parser = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"reloadFrequency\", {\n /**\r\n * @return Reload frequency (ms)\r\n */\n get: function () {\n return this.adapter.apply(\"reloadTimeout\", this._reloadFrequency);\n },\n /**\r\n * Data source reload frequency.\r\n *\r\n * If set, it will reload the same URL every X milliseconds.\r\n *\r\n * @param value Reload frequency (ms)\r\n */\n set: function (value) {\n var _this = this;\n if (this._reloadFrequency != value) {\n this._reloadFrequency = value;\n // Should we schedule a reload?\n if (value) {\n if (!$type.hasValue(this._reloadDisposer)) {\n this._reloadDisposer = this.events.on(\"ended\", function (ev) {\n _this._reloadTimeout = setTimeout(function () {\n _this.load();\n }, _this.reloadFrequency);\n });\n }\n } else if ($type.hasValue(this._reloadDisposer)) {\n this._reloadDisposer.dispose();\n this._reloadDisposer = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"incremental\", {\n /**\r\n * @return Incremental load?\r\n */\n get: function () {\n return this.adapter.apply(\"incremental\", this._incremental);\n },\n /**\r\n * Should subsequent reloads be treated as incremental?\r\n *\r\n * Incremental loads will assume that they contain only new data items\r\n * since the last load.\r\n *\r\n * If `incremental = false` the loader will replace all of the target's\r\n * data with each load.\r\n *\r\n * This setting does not have any effect trhe first time data is loaded.\r\n *\r\n * NOTE: this setting works only with element's `data` property. It won't\r\n * work with any other externally-loadable data property.\r\n *\r\n * @default false\r\n * @param Incremental load?\r\n */\n set: function (value) {\n this._incremental = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"incrementalParams\", {\n /**\r\n * @return Incremental request parameters\r\n */\n get: function () {\n return this.adapter.apply(\"incrementalParams\", this._incrementalParams);\n },\n /**\r\n * An object consisting of key/value pairs to apply to an URL when data\r\n * source is making an incremental request.\r\n *\r\n * @param value Incremental request parameters\r\n */\n set: function (value) {\n this._incrementalParams = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"keepCount\", {\n /**\r\n * @return keepCount load?\r\n */\n get: function () {\n return this.adapter.apply(\"keepCount\", this._keepCount);\n },\n /**\r\n * This setting is used only when `incremental = true`. If set to `true`,\r\n * it will try to retain the same number of data items across each load.\r\n *\r\n * E.g. if incremental load yeilded 5 new records, then 5 items from the\r\n * beginning of data will be removed so that we end up with the same number\r\n * of data items.\r\n *\r\n * @default false\r\n * @param Keep record count?\r\n */\n set: function (value) {\n this._keepCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"updateCurrentData\", {\n /**\r\n * @return Update current data?\r\n */\n get: function () {\n return this.adapter.apply(\"updateCurrentData\", this._updateCurrentData);\n },\n /**\r\n * If set to `true`, each subsequent load will be treated as an update to\r\n * currently loaded data, meaning that it will try to update values on\r\n * existing data items, not overwrite the whole data.\r\n *\r\n * This will work faster than complete update, and also will animate the\r\n * values to their new positions.\r\n *\r\n * Data sources across loads must contain the same number of data items.\r\n *\r\n * Loader will not truncate the data set if loaded data has fewer data items,\r\n * and if it is longer, the excess data items will be ignored.\r\n *\r\n * NOTE: this setting is ignored if `incremental = true`.\r\n *\r\n * @default false\r\n * @since 2.5.5\r\n * @param Update current data?\r\n */\n set: function (value) {\n this._updateCurrentData = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"language\", {\n /**\r\n * @return A [[Language]] instance to be used\r\n */\n get: function () {\n if (this._language) {\n return this._language;\n } else if (this.component) {\n this._language = this.component.language;\n return this._language;\n }\n this.language = new Language();\n return this.language;\n },\n /**\r\n * Language instance to use.\r\n *\r\n * Will inherit and use chart's language, if not set.\r\n *\r\n * @param value An instance of Language\r\n */\n set: function (value) {\n this._language = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataSource.prototype, \"dateFormatter\", {\n /**\r\n * @return A [[DateFormatter]] instance to be used\r\n */\n get: function () {\n if (this._dateFormatter) {\n return this._dateFormatter;\n } else if (this.component) {\n this._dateFormatter = this.component.dateFormatter;\n return this._dateFormatter;\n }\n this.dateFormatter = new DateFormatter();\n return this.dateFormatter;\n },\n /**\r\n * A [[DateFormatter]] to use when parsing dates from string formats.\r\n *\r\n * Will inherit and use chart's DateFormatter if not ser.\r\n *\r\n * @param value An instance of [[DateFormatter]]\r\n */\n set: function (value) {\n this._dateFormatter = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adds current timestamp to the URL.\r\n *\r\n * @param url Source URL\r\n * @return Timestamped URL\r\n */\n DataSource.prototype.timestampUrl = function (url) {\n var tstamp = new Date().getTime().toString();\n var params = {};\n params[tstamp] = \"\";\n return this.addUrlParams(url, params);\n };\n /**\r\n * Disposes of this object.\r\n */\n DataSource.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n if (this._reloadTimeout) {\n clearTimeout(this._reloadTimeout);\n }\n if ($type.hasValue(this._reloadDisposer)) {\n this._reloadDisposer.dispose();\n this._reloadDisposer = undefined;\n }\n };\n /**\r\n * Initiate the load.\r\n *\r\n * All loading in JavaScript is asynchronous. This function will trigger the\r\n * load and will exit immediately.\r\n *\r\n * Use DataSource's events to watch for loaded data and errors.\r\n */\n DataSource.prototype.load = function () {\n if (this.url) {\n if (this._reloadTimeout) {\n clearTimeout(this._reloadTimeout);\n }\n dataLoader.load(this);\n }\n };\n /**\r\n * Adds parameters to `url` as query strings. Will take care of proper\r\n * separators.\r\n *\r\n * @param url Source URL\r\n * @param params Parameters\r\n * @return New URL\r\n */\n DataSource.prototype.addUrlParams = function (url, params) {\n var join = url.match(/\\?/) ? \"&\" : \"?\";\n var add = [];\n $object.each(params, function (key, value) {\n if (value != \"\") {\n add.push(key + \"=\" + encodeURIComponent(value));\n } else {\n add.push(key);\n }\n });\n if (add.length) {\n return url + join + add.join(\"&\");\n }\n return url;\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n DataSource.prototype.processConfig = function (config) {\n registry.registeredClasses[\"json\"] = JSONParser;\n registry.registeredClasses[\"JSONParser\"] = JSONParser;\n registry.registeredClasses[\"csv\"] = CSVParser;\n registry.registeredClasses[\"CSVParser\"] = CSVParser;\n _super.prototype.processConfig.call(this, config);\n };\n return DataSource;\n}(BaseObjectEvents);\nexport { DataSource };\n//# sourceMappingURL=DataSource.js.map","/**\r\n * Responsive functionality module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"../Base\";\nimport { List } from \"../utils/List\";\nimport { Adapter } from \"../utils/Adapter\";\nimport { registry } from \"../Registry\";\nimport * as $iter from \"../utils/Iterator\";\nimport * as $array from \"../utils/Array\";\nimport * as $type from \"../utils/Type\";\nimport * as $object from \"../utils/Object\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Responsive is responsible for overriding certain properties when conditions\r\n * are met.\r\n *\r\n * This class is used to dynamically apply and change certain chart properties\r\n * based on the current values of properties.\r\n *\r\n * Mainly, this is used with [[Sprite]]'s dimensional properties, like\r\n * `pixelWidth` and `pixelHeight`. However, it can be used to dynamically\r\n * change any property, based on any other property's value.\r\n *\r\n * A default responsive rules are disabled.\r\n *\r\n * To enable, set `enabled = false`. E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.responsive.enabled = true;\r\n * ```\r\n *\r\n * @see {@link IResponsiveEvents} for a list of available events\r\n * @see {@link IResponsiveAdapters} for a list of available Adapters\r\n * @todo Add default rules\r\n * @todo Watch for rule modification\r\n * @important\r\n */\nvar Responsive = /** @class */function (_super) {\n __extends(Responsive, _super);\n /**\r\n * Constructor\r\n */\n function Responsive() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Holds a list of responsive rules organized by object type.\r\n */\n _this._rules = new List();\n /**\r\n * Holds the list of the default responsive rules.\r\n * @deprecated\r\n */\n //protected _defaultRules = new List<IResponsiveRule>();\n /**\r\n * Holds the list of currently applied rules.\r\n */\n _this._appliedRules = {};\n /**\r\n * Used to keep track of objects that have rules applied at the moment.\r\n */\n _this._appliedTargets = [];\n /**\r\n * Use default rules in addition to the user-defined ones?\r\n */\n _this._useDefault = true;\n /**\r\n * Adapter.\r\n */\n _this.adapter = new Adapter(_this);\n /**\r\n * Indicates of responsive rules application is enabled.\r\n */\n _this._enabled = false;\n /**\r\n * Holds disposers for all events added by this class.\r\n */\n _this._responsiveDisposers = [];\n /**\r\n * Collection of objects and state ids that do not have any properties set.\r\n */\n _this._noStates = [];\n _this.className = \"Responsive\";\n // Set up rules list events\n _this.rules.events.on(\"inserted\", function () {\n _this.checkRules();\n }, true);\n _this.rules.events.on(\"removed\", function () {\n _this.checkRules();\n }, true);\n _this._disposers.push(_this.rules.events);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Responsive.prototype, \"component\", {\n /**\r\n * @return Target object\r\n */\n get: function () {\n return this._component;\n },\n /**\r\n * A target object that responsive rules will need to be applied to.\r\n *\r\n * @param value Target object\r\n */\n set: function (value) {\n var _this = this;\n // Check if it's the same\n if (value == this._component) {\n return;\n }\n // Check if we already have a set up component and remove its events\n this.disposeResponsiveHandlers();\n // Set\n this._component = value;\n // Set up resize monitoring events\n this._responsiveDisposers.push($type.getValue(this.component).events.on(\"sizechanged\", function () {\n _this.checkRules();\n }, this));\n this._responsiveDisposers.push($type.getValue(this.component).events.on(\"datavalidated\", function () {\n if (_this._component.isReady()) {\n _this.checkRules(true);\n }\n }, this));\n // Enable resoponsive\n this.enabled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Responsive.prototype, \"enabled\", {\n /**\r\n * @return Apply responsive rules?\r\n */\n get: function () {\n return this.adapter.apply(\"enabled\", this._enabled);\n },\n /**\r\n * Should responsive rules be checked against and applied?\r\n *\r\n * @default false\r\n * @param value Apply responsive rules?\r\n */\n set: function (value) {\n if (this._enabled != value) {\n this._enabled = value;\n // Run `applyRules` so that any currently applied rules can be reset\n this.applyRules();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Responsive.prototype, \"useDefault\", {\n /**\r\n * @return Use default rules?\r\n */\n get: function () {\n return this.adapter.apply(\"useDefault\", this._useDefault);\n },\n /**\r\n * Should default responsive rules be applied in addition to user-defined\r\n * ones.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * @default true\r\n * @param value Use default rules?\r\n */\n set: function (value) {\n if (this._useDefault != value) {\n this._useDefault = value;\n // Run `applyRules` so that any currently applied rules can be reset\n this.applyRules();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Responsive.prototype, \"rules\", {\n /**\r\n * @return User-defined rules\r\n */\n get: function () {\n return this.adapter.apply(\"rules\", this._rules);\n },\n /**\r\n * User-defined responsive rules.\r\n *\r\n * User-defined rules will take precedence over default rules whenever they\r\n * produce conflicting settings.\r\n *\r\n * Use `allRules` to get all applicable rules including default and\r\n * user-defined ones.\r\n *\r\n * @param value User-defined rules\r\n */\n set: function (value) {\n this._rules = value;\n this._enabled = true;\n this.applyRules();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Responsive.prototype, \"defaultRules\", {\n /**\r\n * Default responsive rules.\r\n *\r\n * @readonly\r\n * @return List of responsive rules\r\n */\n get: function () {\n return this.adapter.apply(\"defaultRules\", defaultRules);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Responsive.prototype, \"allRules\", {\n /**\r\n * Returns all rules: default rules (if not disabled) combined with\r\n * user-defined ones.\r\n *\r\n * @readonly\r\n * @return List of all applicable rules\r\n */\n get: function () {\n // Create empty list\n var rules = new List();\n // Add default rules if not disabled\n // A code, requesting `allRules` must ensure loading of default rules\n // by calling `loadDefaultRules()`\n if (this.useDefault) {\n rules.copyFrom(this.defaultRules);\n }\n // Add user-defined ones\n rules.copyFrom(this.rules);\n return this.adapter.apply(\"allRules\", rules);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Checks if rule by the particular id currently applied.\r\n *\r\n * @param ruleId Rule ID\r\n * @return Is currently applied?\r\n */\n Responsive.prototype.isApplied = function (ruleId) {\n var rule = this._appliedRules[ruleId];\n return $type.hasValue(rule) ? rule : false;\n };\n /**\r\n * Checks which responsive rules currently satisfy their conditions and\r\n * should be applied, or unapplied.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Responsive.prototype.checkRules = function (force) {\n var _this = this;\n if (force === void 0) {\n force = false;\n }\n // Check if there are any rules\n var rules = this.allRules;\n if (!rules || rules.length == 0) {\n return;\n }\n // Init a list of rules to be applied\n var rulesChanged = false;\n var component = $type.getValue(this.component);\n // Check which rules match\n $iter.each(rules.iterator(), function (rule) {\n // Check if rule has an id\n if (!rule.id) {\n rule.id = registry.getUniqueId();\n }\n // Init indicator if this rule should be applied\n var apply = rule.relevant(component);\n // Let's check if this rule needs to be applied\n if (apply && !_this.isApplied(rule.id) || !apply && _this.isApplied(rule.id)) {\n rulesChanged = true;\n }\n _this._appliedRules[rule.id] = apply;\n });\n if (force) {\n rulesChanged = true;\n }\n // Check if we need to re-apply the rules\n if (rulesChanged) {\n if (!this.component.isReady()) {\n // The chart is not yet ready (built)\n // We will hide the chart and delay application of rules\n // until \"ready\" event kicks in\n //component.hide(0);\n component.hidden = true;\n component.events.once(\"ready\", function (ev) {\n ev.target.show(0);\n _this.applyRules();\n });\n return;\n }\n this.dispatchImmediately(\"ruleschanged\");\n this.applyRules();\n }\n };\n /**\r\n * Applies current rules to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @todo Better type check\r\n */\n Responsive.prototype.applyRules = function (target) {\n var _this = this;\n // If no target supplied, we assume the top-level element\n var newTarget = $type.hasValue(target) ? target : $type.getValue(this.component);\n // Check each rule\n var defaultStateApplied = false;\n if (this.enabled) {\n var isApplied_1 = false;\n $iter.each(this.allRules.iterator(), function (rule) {\n // Get relevant state\n var state = _this.getState(rule, newTarget);\n // If there's a state, it means it needs to be applied\n if (state) {\n // Check if default state was already applied to this element.\n // We don't want to go resetting default states to ALL element,\n // if they don't have responsive states.\n if (!defaultStateApplied) {\n // Nope, reset states (instantly).\n if ($array.indexOf(_this._appliedTargets, newTarget.uid) !== -1) {\n // But only if this element has any rules applied, otherwise no\n // point in setting current state\n newTarget.setState(_this.getDefaultState(newTarget), 0);\n }\n defaultStateApplied = true;\n }\n // Is this rule currently applied?\n if (_this.isApplied($type.getValue(rule.id))) {\n // Yes. Apply the responsive state\n state.transitionDuration = 0;\n _this.setTargetState(newTarget, state);\n _this.dispatchImmediately(\"ruleapplied\", {\n rule: rule\n });\n isApplied_1 = true;\n }\n }\n });\n if (isApplied_1) {\n $array.replace(this._appliedTargets, newTarget.uid);\n } else {\n $array.remove(this._appliedTargets, newTarget.uid);\n }\n }\n // Apply rules to the children\n if (newTarget.children) {\n $iter.each(newTarget.children.iterator(), function (child) {\n _this.applyRules(child);\n });\n }\n };\n /**\r\n * Returns a relative state for the rule/target, or `undefined` if no state is\r\n * needed.\r\n *\r\n * @param rule [description]\r\n * @param target [description]\r\n * @return [description]\r\n */\n Responsive.prototype.getState = function (rule, target) {\n var stateId = \"responsive-\" + rule.id;\n var tmpId = target.uid + \"_\" + stateId;\n if ($array.indexOf(this._noStates, tmpId) !== -1) {\n return;\n } else if (!target.states.hasKey(stateId)) {\n var state = rule.state(target, stateId);\n if (!state) {\n this._noStates.push(tmpId);\n }\n return state;\n } else {\n return target.states.getKey(stateId);\n }\n };\n /**\r\n * Creates and returns default responsive rule for the target.\r\n *\r\n * This rule will be used to \"reset\" to non-responsive values.\r\n * @param target Target Sprite\r\n * @return State\r\n */\n Responsive.prototype.getDefaultState = function (target) {\n if (target.states.hasKey(\"responsive-default\")) {\n return target.states.getKey(\"responsive-default\");\n }\n return target.states.create(\"responsive-default\");\n };\n /**\r\n * Sets state on the target element and updates default state with the\r\n * overwritten values if needed.\r\n *\r\n * @param target Target\r\n * @param state State\r\n */\n Responsive.prototype.setTargetState = function (target, state) {\n var _this = this;\n // Update default state\n var defaultState = this.getDefaultState(target);\n $object.each(state.properties, function (key, val) {\n if (!$type.hasValue(defaultState.properties[key])) {\n defaultState.properties[key] = _this.getValue(target, key);\n }\n });\n target.setState(state);\n };\n /**\r\n * Gets a value from an element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param target Target object\r\n * @param property Property\r\n * @return Property value\r\n */\n Responsive.prototype.getValue = function (target, property) {\n // This is a bit hacky, first we check if the property exist.\n // If it doesn't we try accessing target's property directly\n var value = target.getPropertyValue(property);\n if (!$type.hasValue(value) && $type.hasValue(target[property])) {\n value = target[property];\n }\n return value;\n };\n /**\r\n * Disposes the object.\r\n */\n Responsive.prototype.dispose = function () {\n this.disposeResponsiveHandlers();\n _super.prototype.dispose.call(this);\n };\n /**\r\n * Disposes all event handlers.\r\n */\n Responsive.prototype.disposeResponsiveHandlers = function () {\n var disposer = this._responsiveDisposers.pop();\n while (disposer) {\n disposer.dispose();\n disposer = this._responsiveDisposers.pop();\n }\n };\n return Responsive;\n}(BaseObjectEvents);\nexport { Responsive };\n/**\r\n * [defaultRules description]\r\n *\r\n * @todo description\r\n */\nexport var defaultRules = new List();\ndefaultRules.events.on(\"inserted\", function (ev) {\n ev.newValue.id = registry.getUniqueId();\n});\n/**\r\n *\r\n * @todo description\r\n */\nvar ResponsiveBreakpoints = /** @class */function () {\n function ResponsiveBreakpoints() {}\n // Breakpoint functions (for use in `relevant` clause of the responsive rules)\n ResponsiveBreakpoints.widthXXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXS;\n };\n ResponsiveBreakpoints.widthXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XS;\n };\n ResponsiveBreakpoints.widthS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.S;\n };\n ResponsiveBreakpoints.widthM = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.M;\n };\n ResponsiveBreakpoints.widthL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.L;\n };\n ResponsiveBreakpoints.widthXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XL;\n };\n ResponsiveBreakpoints.widthXXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXL;\n };\n ResponsiveBreakpoints.heightXXS = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.XXS;\n };\n ResponsiveBreakpoints.heightXS = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.XS;\n };\n ResponsiveBreakpoints.heightS = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.S;\n };\n ResponsiveBreakpoints.heightM = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.M;\n };\n ResponsiveBreakpoints.heightL = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.L;\n };\n ResponsiveBreakpoints.heightXL = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.XL;\n };\n ResponsiveBreakpoints.heightXXL = function (container) {\n return container.pixelHeight <= ResponsiveBreakpoints.XXL;\n };\n ResponsiveBreakpoints.isXXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXS && container.pixelHeight <= ResponsiveBreakpoints.XXS;\n };\n ResponsiveBreakpoints.isXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XS && container.pixelHeight <= ResponsiveBreakpoints.XS;\n };\n ResponsiveBreakpoints.isS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.S && container.pixelHeight <= ResponsiveBreakpoints.S;\n };\n ResponsiveBreakpoints.isM = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.M && container.pixelHeight <= ResponsiveBreakpoints.M;\n };\n ResponsiveBreakpoints.isL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.L && container.pixelHeight <= ResponsiveBreakpoints.L;\n };\n ResponsiveBreakpoints.isXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XL && container.pixelHeight <= ResponsiveBreakpoints.XL;\n };\n ResponsiveBreakpoints.isXXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXL && container.pixelHeight <= ResponsiveBreakpoints.XXL;\n };\n ResponsiveBreakpoints.maybeXXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXS || container.pixelHeight <= ResponsiveBreakpoints.XXS;\n };\n ResponsiveBreakpoints.maybeXS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XS || container.pixelHeight <= ResponsiveBreakpoints.XS;\n };\n ResponsiveBreakpoints.maybeS = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.S || container.pixelHeight <= ResponsiveBreakpoints.S;\n };\n ResponsiveBreakpoints.maybeM = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.M || container.pixelHeight <= ResponsiveBreakpoints.M;\n };\n ResponsiveBreakpoints.maybeL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.L || container.pixelHeight <= ResponsiveBreakpoints.L;\n };\n ResponsiveBreakpoints.maybeXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XL || container.pixelHeight <= ResponsiveBreakpoints.XL;\n };\n ResponsiveBreakpoints.maybeXXL = function (container) {\n return container.pixelWidth <= ResponsiveBreakpoints.XXL || container.pixelHeight <= ResponsiveBreakpoints.XXL;\n };\n // Named pixel breakpoints\n ResponsiveBreakpoints.XXS = 100;\n ResponsiveBreakpoints.XS = 200;\n ResponsiveBreakpoints.S = 300;\n ResponsiveBreakpoints.M = 400;\n ResponsiveBreakpoints.L = 600;\n ResponsiveBreakpoints.XL = 800;\n ResponsiveBreakpoints.XXL = 1000;\n return ResponsiveBreakpoints;\n}();\nexport { ResponsiveBreakpoints };\n//# sourceMappingURL=Responsive.js.map","/**\r\n * Defines functionality for \"Data Item\"\r\n *\r\n * A Data Item can be any object that can hold data. For example [[LineSeries]]\r\n * holds a number of values, that comprise a line graph. Each of those values\r\n * (data points) is a {DataItem}.\r\n *\r\n * Furthermore the [[LineSeries]] itself can be represented as a entry in the\r\n * legend. Since legend needs access to Line Series' value, a DataItem is\r\n * created for the series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObjectEvents } from \"./Base\";\nimport { Adapter } from \"./utils/Adapter\";\nimport { Animation, AnimationDisposer } from \"./utils/Animation\";\nimport * as $utils from \"./utils/Utils\";\nimport * as $array from \"./utils/Array\";\n//import * as $object from \"./utils/Object\";\nimport * as $type from \"./utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * DataItem represents single element in data, for example a data point in a\r\n * Serial Chart Series, e.g. a column.\r\n *\r\n * DataItem defines relationship between structured data, required for specific\r\n * chart type or task, and raw source data.\r\n *\r\n * It also implements required calculations, updates related visual elements,\r\n * etc.\r\n *\r\n * @todo Description\r\n * @important\r\n */\nvar DataItem = /** @class */function (_super) {\n __extends(DataItem, _super);\n /**\r\n * Constructor\r\n * @todo Adding events to disposers produces errors in some cases, which means that chart is using disposed Data Items which is not right\r\n */\n function DataItem() {\n var _this = _super.call(this) || this;\n /**\r\n * This Data Item is currently disabled.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._disabled = false;\n /**\r\n * Indicates whether Data Item has any properties set.\r\n *\r\n * If it does not have any, the code can use this property to check whether\r\n * they need to apply costly operation of re-applying properties, whenever\r\n * Data Item-related element is redrawn, e.g. series.\r\n */\n _this.hasProperties = false;\n /**\r\n * An object containing calculated values.\r\n */\n _this.values = {};\n /**\r\n * An object container current working values.\r\n */\n //public readonly workingValues: { [index: string]: { [index: string]: number } } = {};\n /**\r\n * An object containing categories.\r\n */\n _this.categories = {};\n /**\r\n * An object containing dates.\r\n */\n _this.dates = {};\n /**\r\n * An object containing locations for the Data Item.\r\n *\r\n * A location is a position within date or category, or, in some other cases,\r\n * where there is no single point but rather some period.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Data_item_locations} for info how data item locations work\r\n */\n _this.locations = {};\n /**\r\n * Current working locations.\r\n */\n _this.workingLocations = {};\n /**\r\n * An object containing Data Item specific appearance properties in key-value\r\n * pairs.\r\n *\r\n * Sometimes a single Data Item needs to apply different properties than the\r\n * rest of the data [[Series]] it is part of. E.g. a single column,\r\n * represented by a Data Item needs to be filled with a different color than\r\n * the reset of the [[ColumnSeries]] it belongs to.\r\n *\r\n * That's where Data Item's `properties` come into play.\r\n *\r\n * Please note that you should set Data Item-specific properties using\r\n * `setProperty()` method, rather than access `properties` object directly.\r\n */\n _this.properties = {};\n /**\r\n * A list of [[Sprite]] elements that are associated with this Data Item.\r\n *\r\n * E.g. an [[Axis]] Data Item has several separate elements associated with\r\n * it, like [[AxisTick]], [[AxisLabel]], and [[Grid]].\r\n *\r\n * Data Item keeps track of all of them, so it can toggle all related visual\r\n * elements when it itself is toggled.\r\n */\n _this.sprites = [];\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\n _this.isTemplate = false;\n /**\r\n * The current index within the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._index = null;\n /**\r\n * Is Data Item currently visible?\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._visible = true;\n /**\r\n * Is Data Item currently hidden?\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._hidden = false;\n /**\r\n * Should this Data Item be used when calculating data ranges and scales?\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._ignoreMinMax = false;\n /**\r\n * Some of the Data Item's data fields may contain an array of children. This\r\n * property contains an object indicating which fields hold an array, so that\r\n * they can be processed properly.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.hasChildren = {};\n /**\r\n * Indicates whether Data Item is currently animiting from visible to hidden\r\n * state.\r\n */\n _this.isHiding = false;\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._valueAnimations = {};\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._locationAnimations = {};\n _this.className = \"DataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(DataItem.prototype, \"adapter\", {\n /**\r\n * Holds Adapter.\r\n */\n get: function () {\n if (!this._adapterO) {\n this._adapterO = new Adapter(this);\n }\n return this._adapterO;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"index\", {\n /**\r\n * Data Item's position index in Component's data.\r\n *\r\n * @return Index\r\n */\n get: function () {\n if (this.component) {\n if (this._index != null) {\n return this._index;\n } else {\n return -1;\n }\n } else {\n return -1;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"animations\", {\n /**\r\n * A list of [[Animations]] objects currently mutating Data Item's values.\r\n *\r\n * @return [description]\r\n */\n get: function () {\n if (!this._animations) {\n this._animations = [];\n this._disposers.push(new AnimationDisposer(this._animations));\n }\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"visible\", {\n /**\r\n * Returns `true` if this Data Item is currently visible.\r\n *\r\n * @return Visible?\r\n */\n get: function () {\n if (this._hidden) {\n return false;\n }\n return this._visible;\n },\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Visible?\r\n */\n set: function (value) {\n if (value) {\n this.hidden = false;\n }\n if (this._visible != value) {\n this.setVisibility(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"hidden\", {\n /**\r\n * Returns `true` if this Data Item is currently hidden.\r\n *\r\n * @return Hidden?\r\n */\n get: function () {\n return this._hidden;\n },\n /**\r\n * Sets hidden flag for data item. Mostly used to initially hide data item.\r\n *\r\n * @param value Hidden?\r\n */\n set: function (value) {\n if (this._hidden != value) {\n this._hidden = value;\n if (value) {\n this.setVisibility(false);\n } else {\n this.setVisibility(true, true);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"__disabled\", {\n /**\r\n * Is this Data Item currently disabled?\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\n get: function () {\n return this._disabled;\n },\n /**\r\n * Disables all Sprites associated with this Data Item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param {boolean}\r\n */\n set: function (value) {\n //\tif (this._disabled != value) { // not good\n this._disabled = value;\n $array.each(this.sprites, function (sprite) {\n sprite.__disabled = value;\n });\n //\t}\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\n DataItem.prototype.setVisibility = function (value, noChangeValues) {\n $array.each(this.sprites, function (sprite) {\n if (value) {\n sprite.visible = sprite.defaultState.properties.visible;\n } else {\n if (sprite.hiddenState) {\n sprite.visible = sprite.hiddenState.properties.visible;\n } else {\n sprite.visible = false;\n }\n }\n });\n this._visible = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"visibilitychanged\")) {\n var event_1 = {\n type: \"visibilitychanged\",\n target: this,\n visible: value\n };\n this.events.dispatchImmediately(\"visibilitychanged\", event_1);\n }\n }\n };\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\n DataItem.prototype.show = function (duration, delay, fields) {\n var _this = this;\n if (!this.hidden) {\n this.setVisibility(true, true);\n this.isHiding = false;\n if (this._hideDisposer) {\n this.removeDispose(this._hideDisposer);\n }\n var animation_1;\n if (fields) {\n $array.each(fields, function (field) {\n animation_1 = _this.setWorkingValue(field, _this.values[field].value, duration, delay);\n });\n }\n $array.each(this.sprites, function (sprite) {\n var animation = sprite.show(duration);\n if (animation != null && !animation.isFinished()) {\n _this._disposers.push(animation);\n if (delay != null && delay > 0) {\n animation.delay(delay);\n }\n }\n });\n return animation_1;\n }\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n DataItem.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n $array.each(this.sprites, function (sprite) {\n sprite.dispose();\n });\n this.sprites = [];\n };\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\n DataItem.prototype.hide = function (duration, delay, toValue, fields) {\n var _this = this;\n this.isHiding = true;\n $array.each(this.sprites, function (sprite) {\n var animation = sprite.hide(duration);\n if (animation != null && !animation.isFinished()) {\n _this._disposers.push(animation);\n if (delay != null && delay > 0) {\n animation.delay(delay);\n }\n }\n });\n if ($type.isNumber(toValue) && fields) {\n var animation_2;\n $array.each(fields, function (field) {\n var anim = _this.setWorkingValue(field, toValue, duration, delay);\n if (anim) {\n animation_2 = anim;\n }\n });\n if (animation_2 && !animation_2.isFinished()) {\n this._hideDisposer = animation_2.events.on(\"animationended\", function () {\n _this.setVisibility(false, true);\n _this.isHiding = false;\n });\n this._disposers.push(this._hideDisposer);\n return animation_2;\n } else {\n this.isHiding = false;\n this.setVisibility(false, true);\n }\n } else {\n this.isHiding = false;\n this.setVisibility(false);\n }\n };\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\n DataItem.prototype.getDuration = function (duration) {\n if (!$type.isNumber(duration)) {\n var component = this.component;\n if (component) {\n duration = component.interpolationDuration;\n }\n }\n if (duration != null) {\n if (!this._adapterO) {\n return duration;\n } else {\n return this._adapterO.apply(\"duration\", duration);\n }\n }\n };\n /**\r\n * Returns a numeric value for specific data field.\r\n *\r\n * If `calculated` is not set, it will return a raw value, as it is in\r\n * source data.\r\n *\r\n * If `calculated` is set, it will return a pre-calculated specific value.\r\n *\r\n * @param name Data field name\r\n * @param calculated A calculated value name\r\n * @return Value\r\n */\n DataItem.prototype.getValue = function (name, calculated) {\n if (name && this.component) {\n if (!calculated) {\n calculated = this.component.dataFields[name + \"Show\"];\n if (!calculated) {\n calculated = \"value\";\n }\n }\n var value = this.values[name][calculated];\n if (this._adapterO && this._adapterO.isEnabled(\"value\")) {\n return this._adapterO.apply(\"value\", {\n value: value,\n field: name\n }).value;\n } else {\n return value;\n }\n }\n };\n /**\r\n * Returns a current working value for a specific data field.\r\n *\r\n * The actual value may differ from the one returned by `getValue()`. The\r\n * latter returns static values from the data source.\r\n *\r\n * `getWorkingValue()` returns current value, which is usually different if\r\n * Data Item is animating from one state to another.\r\n *\r\n * @param name Data field name\r\n * @return Value\r\n */\n DataItem.prototype.getWorkingValue = function (name) {\n if (name && this.component) {\n var realName = this.component.dataFields[name + \"Show\"];\n if (!realName) {\n realName = \"workingValue\";\n }\n if (this._adapterO) {\n return this._adapterO.apply(\"workingValue\", {\n workingValue: this.values[name][realName],\n field: name\n }).workingValue;\n } else {\n return this.values[name][realName];\n }\n }\n };\n /**\r\n * @ignore\r\n * @return Value\r\n */\n DataItem.prototype.getActualWorkingValue = function (name) {\n return this.values[name].workingValue;\n };\n /**\r\n * Sets a numeric value for specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\n DataItem.prototype.setValue = function (name, value, duration, delay) {\n var currentValue = this.values[name].value;\n var newDuration = this.getDuration(duration);\n value = $type.toNumber(value);\n if (currentValue !== value) {\n this.values[name].value = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"valuechanged\")) {\n var event_2 = {\n type: \"valuechanged\",\n target: this,\n property: name\n };\n this.events.dispatchImmediately(\"valuechanged\", event_2);\n }\n }\n if (this.component) {\n this.component.handleDataItemValueChange(this, name);\n }\n }\n this.setWorkingValue(name, value, newDuration, delay);\n };\n DataItem.prototype.setCalculatedValue = function (name, value, calculated) {\n var currentValue = this.values[name][calculated];\n if (currentValue !== value && $type.isNumber(value)) {\n this.values[name][calculated] = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"calculatedvaluechanged\")) {\n var event_3 = {\n type: \"calculatedvaluechanged\",\n target: this,\n property: name\n };\n this.events.dispatchImmediately(\"calculatedvaluechanged\", event_3);\n }\n }\n if (this.component) {\n this.component.handleDataItemCalculatedValueChange(this, name);\n }\n }\n };\n /**\r\n * Set current working numeric value for a specific data field.\r\n *\r\n * @param name Data field name\r\n * @param value Value\r\n * @param calculated Calculated data field name\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n * @return An [[Animation]] object used for transition to new values\r\n */\n DataItem.prototype.setWorkingValue = function (name, value, duration, delay) {\n if ($type.isNumber(this.values[name].value)) {\n var newDuration = this.getDuration(duration);\n var workingValue = this.values[name].workingValue;\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingValue) && this.component) {\n // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\n if (workingValue != value) {\n var animation = this.animate({\n childObject: this.values[name],\n property: \"workingValue\",\n from: workingValue,\n to: value,\n dummyData: name\n }, newDuration, this.component.interpolationEasing);\n if (delay != null) {\n animation.delay(delay);\n }\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\n this._valueAnimations[name] = animation;\n return animation;\n } else {\n var valueAnimation = this._valueAnimations[name];\n if (valueAnimation) {\n valueAnimation.stop();\n }\n this.values[name].workingValue = value;\n }\n } else {\n var valueAnimation = this._valueAnimations[name];\n if (valueAnimation) {\n valueAnimation.stop();\n }\n this.values[name].workingValue = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"workingvaluechanged\")) {\n var event_4 = {\n type: \"workingvaluechanged\",\n target: this,\n property: name\n };\n this.events.dispatchImmediately(\"workingvaluechanged\", event_4);\n }\n }\n if (this.component) {\n this.component.handleDataItemWorkingValueChange(this, name);\n }\n }\n }\n };\n /**\r\n * Sets a relative location for a data field.\r\n *\r\n * A location is always relative on a 0 to 1 scale, with 0 being beginning,\r\n * 0.5 middle and 1 end.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\n DataItem.prototype.setLocation = function (name, value, duration, delay) {\n var currentLocation = this.locations[name];\n if (currentLocation !== value) {\n this.locations[name] = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"locationchanged\")) {\n var event_5 = {\n type: \"locationchanged\",\n target: this,\n property: name\n };\n this.events.dispatchImmediately(\"locationchanged\", event_5);\n }\n }\n if (this.component) {\n this.component.handleDataItemValueChange(this, name); // correct\n }\n this.setWorkingLocation(name, value, duration, delay);\n }\n };\n /**\r\n * Sets a current working location for a data field.\r\n *\r\n * @todo Rewiew description\r\n * @param name Data field name\r\n * @param value Location (0-1)\r\n * @param duration Duration (ms) to animate to new value to\r\n * @param delay Delay animation (ms)\r\n */\n DataItem.prototype.setWorkingLocation = function (name, value, duration, delay) {\n var newDuration = this.getDuration(duration);\n var workingLocation = this.workingLocations[name];\n if (newDuration != null && newDuration > 0 && $type.isNumber(workingLocation) && this.component) {\n // sometimes NaN is passed, so only change this to != null if all cases of NaN are handled, otherwise animation won't stop\n if (workingLocation != value) {\n var animation = this.animate({\n childObject: this.workingLocations,\n property: name,\n from: workingLocation,\n to: value,\n dummyData: name\n }, newDuration, this.component.interpolationEasing);\n if (delay != null) {\n animation.delay(delay);\n }\n animation.events.on(\"animationstarted\", this.handleInterpolationProgress, this);\n animation.events.on(\"animationprogress\", this.handleInterpolationProgress, this);\n animation.events.on(\"animationended\", this.handleInterpolationProgress, this);\n this._locationAnimations[name] = animation;\n return animation;\n } else {\n var locationAnimation = this._locationAnimations[name];\n if (locationAnimation) {\n locationAnimation.stop();\n }\n this.workingLocations[name] = value;\n }\n } else {\n var locationAnimation = this._locationAnimations[name];\n if (locationAnimation) {\n locationAnimation.stop();\n }\n this.workingLocations[name] = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"workinglocationchanged\")) {\n var event_6 = {\n type: \"workinglocationchanged\",\n target: this,\n property: name\n };\n this.events.dispatchImmediately(\"workinglocationchanged\", event_6);\n }\n }\n if (this.component) {\n this.component.handleDataItemWorkingLocationChange(this, name);\n }\n }\n };\n /**\r\n * Sets Date value to a data field.\r\n *\r\n * @param name Data field name\r\n * @param date Date object\r\n * @param duration Duration (ms) to animate to new value to\r\n */\n DataItem.prototype.setDate = function (name, date, duration) {\n if (!$type.isDate(date) && this.component) {\n date = this.component.dateFormatter.parse(date);\n }\n var currentDate = this.dates[name];\n if (currentDate !== date) {\n this.dates[name] = date;\n this.setValue(name, date.getTime(), duration);\n }\n };\n /**\r\n * Returns a Date value of the data field.\r\n *\r\n * @param name Data field name\r\n * @return Date object\r\n */\n DataItem.prototype.getDate = function (name) {\n if (this._adapterO) {\n return this._adapterO.apply(\"date\", {\n date: this.dates[name],\n field: name\n }).date;\n } else {\n return this.dates[name];\n }\n };\n /**\r\n * Sets a Data Item-specific visual properties to apply to related elements.\r\n *\r\n * @param name Property name\r\n * @param value Property value\r\n */\n DataItem.prototype.setProperty = function (name, value) {\n if (this.properties[name] !== value) {\n this.hasProperties = true;\n this.properties[name] = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"propertychanged\")) {\n var event_7 = {\n type: \"propertychanged\",\n target: this,\n property: name,\n value: value\n };\n this.events.dispatchImmediately(\"propertychanged\", event_7);\n }\n }\n if (this.component) {\n this.component.handleDataItemPropertyChange(this, name);\n }\n }\n };\n /**\r\n * Sets a related category for this Data Item.\r\n *\r\n * @todo Review description\r\n * @param name Data field name\r\n * @param value Category\r\n */\n DataItem.prototype.setCategory = function (name, value) {\n if (!$type.isString(value)) {\n value = $type.castString(value);\n }\n if (this.categories[name] !== value) {\n this.categories[name] = value;\n }\n };\n /**\r\n * Clones the Data Item, including all related data.\r\n *\r\n * @return New Data Item clone\r\n */\n //public clone(cloneId?: string): this {\n //\tlet dataItem: this = super.clone(cloneId);\n //\tdataItem.copyFrom(this);\n //\treturn dataItem;\n //}\n /**\r\n * Copies all properties and related data from different data item.\r\n *\r\n * @param object Source data item\r\n */\n DataItem.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (source.dataContext) {\n this.dataContext = $utils.copy(source.dataContext, {});\n }\n $utils.copyProperties(source.locations, this.locations);\n /*\r\n $utils.copyProperties(source.properties, this.properties);\r\n $utils.copyProperties(source.categories, this.categories);\r\n $utils.copyProperties(source.values, this.values);\r\n $utils.copyProperties(source.dates, this.dates);\r\n $object.each(source.values, (name, value) => {\r\n this.values[name] = $object.copy(value);\r\n });*/\n if (source._adapterO) {\n this.adapter.copyFrom(source._adapterO);\n }\n //this.events.copyFrom(source.events); // because copied in Base\n this.component = source.component;\n };\n Object.defineProperty(DataItem.prototype, \"opacity\", {\n /**\r\n * Sets opacity for all Data Item's related elements (Sprites).\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n $array.each(this.sprites, function (sprite) {\n sprite.opacity = value;\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"ignoreMinMax\", {\n /**\r\n * Exclude from min/max calculations?\r\n * @return Exclude from min/max calculations?\r\n */\n get: function () {\n return this._ignoreMinMax;\n },\n /**\r\n * Sets whether this data point should not be included in the scale and\r\n * minimum/maximum calculations.\r\n *\r\n * E.g. some we may want to exclude a particular data point from influencing\r\n * [[ValueAxis]] scale.\r\n *\r\n * @param value Exclude from min/max calculations?\r\n */\n set: function (value) {\n this._ignoreMinMax = value;\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"propertychanged\")) {\n var event_8 = {\n type: \"propertychanged\",\n target: this,\n property: \"ignoreMinMax\",\n value: value\n };\n this.events.dispatchImmediately(\"propertychanged\", event_8);\n }\n }\n if (this.component) {\n this.component.handleDataItemPropertyChange(this, \"ignoreMinMax\");\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates and starts an [[Animation]] to interpolate (morph) Data Item's\r\n * properties and/or values.\r\n *\r\n * @see {@link Animation}\r\n * @param animationOptions Animation options\r\n * @param duration Animation duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\n DataItem.prototype.animate = function (animationOptions, duration, easing) {\n return new Animation(this, animationOptions, duration, easing).start();\n };\n /**\r\n * Handles intermediate steps when Data Item is interpolating (morphing) from\r\n * one value to another.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event object\r\n */\n DataItem.prototype.handleInterpolationProgress = function (event) {\n var animation = event.target;\n // it's always only one options, no need cycle\n var animationOptions = animation.animationOptions[0];\n if (animationOptions) {\n if (this._eventDispatcher && !this.__disabled) {\n if (this.events.isEnabled(\"workingvaluechanged\")) {\n var event_9 = {\n type: \"workingvaluechanged\",\n target: this,\n property: animationOptions.dummyData\n };\n this.events.dispatchImmediately(\"workingvaluechanged\", event_9);\n }\n }\n if (this.component) {\n this.component.handleDataItemWorkingValueChange(this, animationOptions.dummyData);\n }\n }\n };\n /**\r\n * Checks whether Data Item has values set for all of the data fields,\r\n * supplied via argument.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Field list to check\r\n * @return Has values for all fields?\r\n */\n DataItem.prototype.hasValue = function (fields) {\n // todo: what about categories?\n for (var i = 0, len = fields.length; i < len; i++) {\n var values = this.values[fields[i]];\n if (!values || !$type.hasValue(values.value)) {\n return false;\n }\n }\n return true;\n };\n Object.defineProperty(DataItem.prototype, \"depth\", {\n /**\r\n * Depth of the Data Item.\r\n *\r\n * In nested data structures, like TreeMap, this indicates the level this\r\n * data point is at, in relation to the parent Data Item.\r\n *\r\n * @return Depth\r\n */\n get: function () {\n if (!this.parent) {\n return 0;\n } else {\n return this.parent.depth + 1;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataItem.prototype, \"dataContext\", {\n /**\r\n * Sets to a reference to an original object from Component's data.\r\n *\r\n * @return [description]\r\n */\n get: function () {\n return this._dataContext;\n },\n /**\r\n * A reference to an original object in Component's data, that this Data Item\r\n * is derived from.\r\n *\r\n * @param value Original data object\r\n */\n set: function (value) {\n this._dataContext = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * adds a sprite to dataItem.sprites array\r\n * @ignore\r\n */\n DataItem.prototype.addSprite = function (sprite) {\n if (sprite.dataItem && sprite.dataItem != this) {\n $array.remove(sprite.dataItem.sprites, sprite);\n }\n if (!this.visible) {\n sprite.hide(0);\n }\n if (this.isHiding) {\n sprite.hide();\n }\n this.sprites.push(sprite);\n sprite.dataItem = this;\n };\n return DataItem;\n}(BaseObjectEvents);\nexport { DataItem };\n//# sourceMappingURL=DataItem.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"./Container\";\nimport { List, ListDisposer } from \"./utils/List\";\nimport { OrderedListTemplate } from \"./utils/SortedList\";\nimport { Dictionary } from \"./utils/Dictionary\";\nimport { Disposer, MultiDisposer } from \"./utils/Disposer\";\nimport { DataSource } from \"./data/DataSource\";\nimport { Responsive } from \"./utils/Responsive\";\nimport { system } from \"./System\";\nimport { DataItem } from \"./DataItem\";\nimport { registry } from \"./Registry\";\nimport * as $math from \"./utils/Math\";\nimport * as $array from \"./utils/Array\";\nimport * as $ease from \"./utils/Ease\";\nimport * as $utils from \"./utils/Utils\";\nimport * as $iter from \"./utils/Iterator\";\nimport * as $object from \"./utils/Object\";\nimport * as $type from \"./utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A Component represents an independent functional element or control, that\r\n * can have it's own behavior, children, data, etc.\r\n *\r\n * A few examples of a Component: [[Legend]], [[Series]], [[Scrollbar]].\r\n *\r\n * @see {@link IComponentEvents} for a list of available events\r\n * @see {@link IComponentAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar Component = /** @class */function (_super) {\n __extends(Component, _super);\n /**\r\n * Constructor\r\n */\n function Component() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Holds data field names.\r\n *\r\n * Data fields define connection beween [[DataItem]] and actual properties\r\n * in raw data.\r\n */\n _this.dataFields = {};\n /**\r\n * A list of [[DataSource]] definitions of external data source.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._dataSources = {};\n /**\r\n * This is used when only new data is invalidated (if added using `addData`\r\n * method).\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._parseDataFrom = 0;\n /**\r\n * Holds the disposers for the dataItems and dataUsers\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._dataDisposers = [];\n /**\r\n * Currently selected \"data set\".\r\n *\r\n * If it's set to `\"\"`, main data set (unaggregated data) is used.\r\n */\n _this._currentDataSetId = \"\";\n /**\r\n * [_start description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._start = 0;\n /**\r\n * [_end description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this._end = 1;\n /**\r\n * If set to `true`, changing data range in element will not trigger\r\n * `daterangechanged` event.\r\n */\n _this.skipRangeEvent = false;\n /**\r\n * Whenever selected scope changes (chart is zoomed or panned), for example\r\n * by interaction from a Scrollbar, or API, a chart needs to reposition\r\n * its contents.\r\n *\r\n * `rangeChangeDuration` influences how this is performed.\r\n *\r\n * If set to zero (0), the change will happen instantenously.\r\n *\r\n * If set to non-zero value, the chart will gradually animate into new\r\n * position for the set amount of milliseconds.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.rangeChangeDuration = 0;\n /**\r\n * An easing function to use for range change animation.\r\n *\r\n * @see {@link Ease}\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.rangeChangeEasing = $ease.cubicOut;\n /**\r\n * A duration (ms) of each data parsing step. A Component parses its data in\r\n * chunks in order to avoid completely freezing the machine when large data\r\n * sets are used. This setting will control how many milliseconds should pass\r\n * when parsing data until parser stops for a brief moment to let other\r\n * processes catch up.\r\n */\n _this.parsingStepDuration = 50;\n /**\r\n * [dataInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.dataInvalid = false;\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.rawDataInvalid = false;\n /**\r\n * [dataRangeInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.dataRangeInvalid = false;\n /**\r\n * [dataItemsInvalid description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.dataItemsInvalid = false;\n /**\r\n * If set to a non-zero number the element will \"animate\" data values of its\r\n * children.\r\n *\r\n * This will happen on first load and whenever data values change.\r\n *\r\n * Enabling interpolation will mean that elements will transit smoothly into\r\n * new values rather than updating instantly.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.interpolationDuration = 0;\n /**\r\n * An easing function to use for interpolating values when transiting from\r\n * one source value to another.\r\n *\r\n * @default cubicOut\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n * @see {@link Ease}\r\n */\n _this.interpolationEasing = $ease.cubicOut;\n /**\r\n * Indicates whether transition between data item's values should start and\r\n * play out all at once, or with a small delay (as defined by\r\n * `sequencedInterpolationDelay`) for each subsequent data item.\r\n *\r\n * @default true\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.sequencedInterpolation = true;\n /**\r\n * A delay (ms) to wait between animating each subsequent data item's\r\n * interpolation animation.\r\n *\r\n * Relative only if `sequencedInterpolation = true`.\r\n *\r\n * @default 0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/animations/} for more info about animations\r\n */\n _this.sequencedInterpolationDelay = 0;\n /**\r\n * A progress (0-1) for the data validation process.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.dataValidationProgress = 0;\n _this._addAllDataItems = true;\n _this._usesData = true;\n _this.className = \"Component\";\n _this.minZoomCount = 1;\n _this.maxZoomCount = 0;\n _this._dataItems = new OrderedListTemplate(_this.createDataItem());\n _this._dataItems.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\n _this._dataItems.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\n _this._disposers.push(new ListDisposer(_this._dataItems));\n _this._disposers.push(_this._dataItems.template);\n _this.invalidateData();\n // TODO what about remove ?\n _this.dataUsers.events.on(\"inserted\", _this.handleDataUserAdded, _this, false);\n // Set up disposers\n _this._disposers.push(new MultiDisposer(_this._dataDisposers));\n _this._start = 0;\n _this._end = 1;\n _this.maxZoomDeclination = 1;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n Component.prototype.createDataItem = function () {\n return new DataItem();\n };\n /**\r\n * [handleDataUserAdded description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param event Event object\r\n */\n Component.prototype.handleDataUserAdded = function (event) {\n var dataUser = event.newValue;\n dataUser.dataProvider = this;\n };\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Component.prototype.handleDataItemValueChange = function (dataItem, name) {\n if (!this.dataItemsInvalid) {\n this.invalidateDataItems();\n }\n };\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {};\n /**\r\n * [handleDataItemWorkingLocationChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.handleDataItemWorkingLocationChange = function (dataItem, name) {};\n /**\r\n * [handleDataItemCalculatedValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.handleDataItemCalculatedValueChange = function (dataItem, name) {};\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.handleDataItemPropertyChange = function (dataItem, name) {};\n /**\r\n * Populates a [[DataItem]] width data from data source.\r\n *\r\n * Loops through all the fields and if such a field is found in raw data\r\n * object, a corresponding value on passed in `dataItem` is set.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\n Component.prototype.processDataItem = function (dataItem, dataContext) {\n var _this = this;\n if (dataItem) {\n if (!dataContext) {\n dataContext = {};\n }\n // store reference to original data item\n dataItem.dataContext = dataContext;\n var hasSomeValues_1 = false;\n $object.each(this.dataFields, function (key, fieldValue) {\n var fieldName = key;\n var value = dataContext[fieldValue];\n // Apply adapters to a retrieved value\n if (_this._adapterO) {\n if (_this._adapterO.isEnabled(\"dataContextValue\")) {\n value = _this._adapterO.apply(\"dataContextValue\", {\n field: fieldName,\n value: value,\n dataItem: dataItem\n }).value;\n }\n }\n if ($type.hasValue(value)) {\n hasSomeValues_1 = true;\n if (dataItem.hasChildren[fieldName]) {\n var template = _this.createDataItem();\n template.copyFrom(_this.mainDataSet.template);\n var children = new OrderedListTemplate(template);\n children.events.on(\"inserted\", _this.handleDataItemAdded, _this, false);\n children.events.on(\"removed\", _this.handleDataItemRemoved, _this, false);\n _this._dataDisposers.push(new ListDisposer(children));\n var count = value.length;\n for (var i = 0; i < count; i++) {\n var rawDataItem = value[i];\n var childDataItem = children.create();\n childDataItem.parent = dataItem;\n _this.processDataItem(childDataItem, rawDataItem);\n }\n var anyDataItem = dataItem;\n anyDataItem[fieldName] = children;\n } else {\n // data is converted to numbers/dates in each dataItem\n dataItem[fieldName] = value;\n }\n }\n });\n $object.each(this.propertyFields, function (key, fieldValue) {\n var f = key;\n var value = dataContext[fieldValue];\n if ($type.hasValue(value)) {\n hasSomeValues_1 = true;\n dataItem.setProperty(f, value);\n }\n });\n // @todo we might need some flag which would tell whether we should create empty data items or not.\n if (!this._addAllDataItems && !hasSomeValues_1) {\n this.mainDataSet.remove(dataItem);\n }\n }\n };\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\n Component.prototype.updateDataItem = function (dataItem) {\n var _this = this;\n if (dataItem) {\n var dataContext_1 = dataItem.dataContext;\n $object.each(this.dataFields, function (key, fieldValue) {\n var fieldName = key;\n var value = dataContext_1[fieldValue];\n // Apply adapters to a retrieved value\n if (_this._adapterO) {\n value = _this._adapterO.apply(\"dataContextValue\", {\n field: fieldName,\n value: value,\n dataItem: dataItem\n }).value;\n }\n if ($type.hasValue(value)) {\n if (dataItem.hasChildren[fieldName]) {\n var anyDataItem = dataItem;\n var children = anyDataItem[fieldName];\n children.each(function (child) {\n _this.updateDataItem(child);\n });\n } else {\n // data is converted to numbers/dates in each dataItem\t\t\t\t\t\n dataItem[fieldName] = value;\n }\n }\n });\n $object.each(this.propertyFields, function (key, fieldValue) {\n var f = key;\n var value = dataContext_1[fieldValue];\n if ($type.hasValue(value)) {\n dataItem.setProperty(f, value);\n }\n });\n }\n };\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Component.prototype.validateDataElements = function () {\n var count = this.endIndex;\n for (var i = this.startIndex; i < count; i++) {\n var dataItem = this.dataItems.getIndex(i);\n // TODO is this correct\n if (dataItem) {\n this.validateDataElement(dataItem);\n }\n }\n };\n /**\r\n * Validates this element and its related elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.validate = function () {\n this.validateDataElements();\n _super.prototype.validate.call(this);\n };\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem [description]\r\n */\n Component.prototype.validateDataElement = function (dataItem) {};\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\n Component.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\n var _this = this;\n // need to check if data is invalid, as addData might be called multiple times\n if (!this.dataInvalid && this.inited) {\n this._parseDataFrom = this.data.length; // save length of parsed data\n }\n if (!skipRaw) {\n if (rawDataItem instanceof Array) {\n // can't use concat because new array is returned\n $array.each(rawDataItem, function (dataItem) {\n _this.data.push(dataItem);\n });\n } else {\n this.data.push(rawDataItem); // add to raw data array\n }\n }\n if (this.inited) {\n this.removeData(removeCount, skipRaw);\n } else {\n if ($type.isNumber(removeCount)) {\n while (removeCount > 0) {\n this.data.shift();\n removeCount--;\n }\n }\n }\n this.invalidateData();\n };\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\n Component.prototype.removeData = function (count, skipRaw) {\n if ($type.isNumber(count) && count > 0) {\n while (count > 0) {\n var dataItem = this.mainDataSet.getIndex(0);\n if (dataItem) {\n this.mainDataSet.remove(dataItem);\n }\n this.dataUsers.each(function (dataUser) {\n if (!dataUser.data || dataUser.data.length == 0) {\n var dataItem_1 = dataUser.mainDataSet.getIndex(0);\n if (dataItem_1) {\n dataUser.mainDataSet.remove(dataItem_1);\n }\n }\n });\n if (!skipRaw) {\n this.data.shift();\n }\n if (this._parseDataFrom > 0) {\n this._parseDataFrom--;\n }\n count--;\n }\n // changed from invalidateData since 4.7.19 to solve #51551\n this.invalidateDataItems();\n }\n };\n /**\r\n * Triggers a data (re)parsing.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.invalidateData = function () {\n if (this.disabled || this.isTemplate) {\n return;\n }\n //if(!this.dataInvalid){\n registry.addToInvalidComponents(this);\n system.requestFrame();\n this.dataInvalid = true;\n $iter.each(this.dataUsers.iterator(), function (x) {\n x.invalidateDataItems();\n });\n //}\n };\n /**\r\n * [invalidateDataUsers description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Component.prototype.invalidateDataUsers = function () {\n $iter.each(this.dataUsers.iterator(), function (x) {\n x.invalidate();\n });\n };\n /**\r\n * Invalidates data values. When data array is not changed, but values within\r\n * it changes, we invalidate data so that component would process changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.invalidateDataItems = function () {\n if (this.disabled || this.isTemplate) {\n return;\n }\n //if(!this.dataItemsInvalid){\n $array.move(registry.invalidDataItems, this);\n system.requestFrame();\n this.dataItemsInvalid = true;\n $iter.each(this.dataUsers.iterator(), function (x) {\n x.invalidateDataItems();\n });\n //}\n };\n /**\r\n * Invalidates data range. This is done when data which must be shown\r\n * changes (chart is zoomed for example).\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.invalidateDataRange = function () {\n if (this.disabled || this.isTemplate) {\n return;\n }\n //if(!this.dataRangeInvalid){\n this.dataRangeInvalid = true;\n $array.move(registry.invalidDataRange, this);\n system.requestFrame();\n //}\n };\n /**\r\n * Processes data range.\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.validateDataRange = function () {\n $array.remove(registry.invalidDataRange, this);\n this.dataRangeInvalid = false;\n if (this.startIndex != this._prevStartIndex || this.endIndex != this._prevEndIndex) {\n this.rangeChangeUpdate();\n this.appendDataItems();\n this.invalidate();\n this.dispatchImmediately(\"datarangechanged\");\n }\n };\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.sliceData = function () {\n this._workingStartIndex = this.startIndex;\n this._workingEndIndex = this.endIndex;\n };\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.rangeChangeUpdate = function () {\n this.sliceData();\n this._prevStartIndex = this.startIndex;\n this._prevEndIndex = this.endIndex;\n };\n /**\r\n * [appendDataItems description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.appendDataItems = function () {\n // TODO use an iterator instead\n var count = this.endIndex;\n for (var i = this.startIndex; i < count; i++) {\n // data item\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem) {\n dataItem.__disabled = false;\n }\n }\n for (var i = 0; i < this.startIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem) {\n dataItem.__disabled = true;\n }\n }\n for (var i = this.endIndex; i < this.dataItems.length; i++) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem) {\n dataItem.__disabled = true;\n }\n }\n };\n /**\r\n * If you want to have a smooth transition from one data values to another, you change your raw data and then you must call this method.\r\n * then instead of redrawing everything, the chart will check raw data and smoothly transit from previous to new data\r\n */\n Component.prototype.invalidateRawData = function () {\n if (this.disabled || this.isTemplate) {\n return;\n }\n //if(!this.rawDataInvalid){\n $array.move(registry.invalidRawDatas, this);\n system.requestFrame();\n this.rawDataInvalid = true;\n $iter.each(this.dataUsers.iterator(), function (x) {\n x.invalidateRawData();\n });\n //}\n };\n /**\r\n * @ignore\r\n */\n Component.prototype.validateRawData = function () {\n var _this = this;\n $array.remove(registry.invalidRawDatas, this);\n $iter.each(this.mainDataSet.iterator(), function (dataItem) {\n if (dataItem) {\n _this.updateDataItem(dataItem);\n }\n });\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n Component.prototype.dispose = function () {\n var _this = this;\n this.mainDataSet.template.clones.clear();\n $object.each(this._dataSources, function (key, source) {\n _this.removeDispose(source);\n });\n this.disposeData();\n _super.prototype.dispose.call(this);\n };\n /**\r\n * @ignore\r\n */\n Component.prototype.disposeData = function () {\n this.mainDataSet.template.clones.clear();\n $array.each(this._dataDisposers, function (x) {\n x.dispose();\n });\n // and for all components\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\n dataUser.disposeData();\n });\n this._dataDisposers.length = 0;\n this._startIndex = undefined;\n this._endIndex = undefined;\n // dispose old\n this.mainDataSet.clear();\n this.mainDataSet.template.clones.clear();\n if (this._dataSets) {\n this._dataSets.clear();\n }\n };\n Component.prototype.getDataItem = function (dataContext) {\n return this.mainDataSet.create();\n };\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.validateData = function () {\n this.dispatchImmediately(\"beforedatavalidated\");\n this.dataInvalid = false;\n registry.removeFromInvalidComponents(this);\n if (this.__disabled) {\n return;\n }\n this.dataValidationProgress = 0;\n // need this to slice new data\n this._prevStartIndex = undefined;\n this._prevEndIndex = undefined;\n // todo: this needs some overthinking, maybe some extra settings like zoomOotonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\n this._startIndex = undefined;\n this._endIndex = undefined;\n if (this.dataFields.data && this.dataItem) {\n var dataContext = this.dataItem.dataContext;\n this._data = dataContext[this.dataFields.data];\n }\n // data items array is reset only if all data is validated, if _parseDataFrom is not 0, we append new data only\n // check heatmap demo if uncommented\n // fixed both issues by adding && this.data.length > 0\n // check adding series example if changed\n if (this._parseDataFrom === 0 && this.data.length > 0) {\n this.disposeData();\n }\n if (this.data.length > 0) {\n var preloader = this.preloader;\n // and for all components\n $iter.each(this.dataUsers.iterator(), function (dataUser) {\n // todo: this needs some overthinking, maybe some extra settings like zoomOUtonDataupdate like in v3 or so. some charts like pie chart probably should act like this always\n dataUser._startIndex = undefined;\n dataUser._endIndex = undefined;\n });\n var counter = 0;\n var startTime = Date.now();\n // parse data\n var i = this._parseDataFrom;\n var n = this.data.length;\n var _loop_1 = function () {\n var rawDataItem = this_1.data[i];\n if (this_1._usesData) {\n var dataItem = this_1.getDataItem(rawDataItem);\n this_1.processDataItem(dataItem, rawDataItem);\n }\n this_1.dataUsers.each(function (dataUser) {\n if (dataUser.data.length == 0) {\n // checking if data is not set directly\n var dataUserDataItem = dataUser.getDataItem(rawDataItem);\n dataUser.processDataItem(dataUserDataItem, rawDataItem);\n }\n });\n counter++;\n // show preloader if this takes too many time\n if (counter == 100) {\n // no need to check it on each data item\n counter = 0;\n var elapsed = Date.now() - startTime;\n if (elapsed > this_1.parsingStepDuration) {\n if (i < this_1.data.length - 10) {\n this_1._parseDataFrom = i + 1;\n // update preloader\n if (preloader) {\n if (i / this_1.data.length > 0.5 && !preloader.visible) {\n // do not start showing\n } else {\n preloader.progress = i / this_1.data.length;\n }\n }\n this_1.dataValidationProgress = i / this_1.data.length;\n i = this_1.data.length; // stops cycle\n this_1.invalidateData();\n return {\n value: void 0\n };\n }\n }\n }\n };\n var this_1 = this;\n for (i; i < n; i++) {\n var state_1 = _loop_1();\n if (typeof state_1 === \"object\") return state_1.value;\n }\n if (preloader) {\n preloader.progress = 1;\n }\n this.dataUsers.each(function (dataUser) {\n if (dataUser.hidden) {\n dataUser.hide(0);\n }\n });\n }\n this.dataValidationProgress = 1;\n this._parseDataFrom = 0; // reset this index, it is set to dataItems.length if addData() method was used.\n this.invalidateDataItems();\n if (!this._internalDefaultsApplied) {\n this.applyInternalDefaults();\n }\n this.dispatch(\"datavalidated\"); // can't zoom chart if dispatched immediately\n };\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.validateDataItems = function () {\n $array.remove(registry.invalidDataItems, this);\n this.dataItemsInvalid = false;\n this.invalidateDataRange();\n this.invalidate();\n this.dispatch(\"dataitemsvalidated\");\n };\n Object.defineProperty(Component.prototype, \"data\", {\n /**\r\n * Returns element's source (raw) data.\r\n *\r\n * @return Data\r\n */\n get: function () {\n if (!this._data) {\n this._data = [];\n }\n if (!this._adapterO) {\n return this._data;\n } else {\n return this._adapterO.apply(\"data\", this._data);\n }\n },\n /**\r\n * Sets source (raw) data for the element. The \"data\" is always an `Array`\r\n * of objects.\r\n *\r\n * IMPORTANT: The order of data items in `data` array is important as it\r\n * might affect chart look and behavior. [More details](https://www.amcharts.com/docs/v4/concepts/data/#Order_of_data_items).\r\n *\r\n * @param value Data\r\n */\n set: function (value) {\n this.setData(value);\n },\n enumerable: true,\n configurable: true\n });\n Component.prototype.setData = function (value) {\n // array might be the same, but there might be items added\n // todo: check if array changed, toString maybe?\n if (!this.isDisposed()) {\n this._parseDataFrom = 0;\n this.disposeData();\n this._data = value;\n if (value && value.length > 0) {\n this.invalidateData();\n } else {\n this.dispatchImmediately(\"beforedatavalidated\");\n this.dispatch(\"datavalidated\");\n }\n }\n };\n /**\r\n * Returns (creates if necessary) a [[DataSource]] bound to any specific\r\n * property.\r\n *\r\n * For example if I want to bind `data` to an external JSON file, I'd create\r\n * a DataSource for it.\r\n *\r\n * @param property Property to bind external data to\r\n * @return A DataSource for property\r\n */\n Component.prototype.getDataSource = function (property) {\n var _this = this;\n if (!$type.hasValue(this._dataSources[property])) {\n this._dataSources[property] = new DataSource();\n this._dataSources[property].component = this;\n this.setDataSourceEvents(this._dataSources[property], property);\n this._dataSources[property].adapter.add(\"dateFields\", function (val) {\n return _this.dataSourceDateFields(val);\n });\n this._dataSources[property].adapter.add(\"numberFields\", function (val) {\n return _this.dataSourceNumberFields(val);\n });\n this.events.on(\"inited\", function () {\n _this.loadData(property);\n }, this, false);\n }\n return this._dataSources[property];\n };\n Object.defineProperty(Component.prototype, \"dataSource\", {\n /**\r\n * @return Data source\r\n */\n get: function () {\n if (!this._dataSources[\"data\"]) {\n this.getDataSource(\"data\");\n }\n return this._dataSources[\"data\"];\n },\n /**\r\n *A [[DataSource]] to be used for loading Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/loading-external-data/} for more on loading external data\r\n * @param value Data source\r\n */\n set: function (value) {\n var _this = this;\n if (this._dataSources[\"data\"]) {\n this.removeDispose(this._dataSources[\"data\"]);\n }\n this._dataSources[\"data\"] = value;\n this._dataSources[\"data\"].component = this;\n this.events.on(\"inited\", function () {\n _this.loadData(\"data\");\n }, this, false);\n this.setDataSourceEvents(value, \"data\");\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Initiates loading of the external data via [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.loadData = function (property) {\n this._dataSources[property].load();\n };\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\n Component.prototype.dataSourceDateFields = function (value) {\n return value;\n };\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\n Component.prototype.dataSourceNumberFields = function (value) {\n return value;\n };\n /**\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param list [description]\r\n * @param dataFields [description]\r\n * @param targetList [description]\r\n * @return [description]\r\n */\n Component.prototype.populateDataSourceFields = function (list, dataFields, targetList) {\n $array.each(targetList, function (value) {\n if (dataFields[value] && $array.indexOf(list, dataFields[value]) === -1) {\n list.push(dataFields[value]);\n }\n });\n return list;\n };\n /**\r\n * Sets events on a [[DataSource]].\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.setDataSourceEvents = function (ds, property) {\n var _this = this;\n ds.events.on(\"started\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 0;\n //preloader.label.text = this.language.translate(\"Loading\");\n }\n }, undefined, false);\n ds.events.on(\"loadstarted\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 0.25;\n }\n }, undefined, false);\n ds.events.on(\"loadended\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 0.5;\n }\n }, undefined, false);\n ds.events.on(\"parseended\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 0.75;\n }\n }, undefined, false);\n ds.events.on(\"ended\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 1;\n }\n }, undefined, false);\n ds.events.on(\"error\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 1;\n }\n _this.openModal(ev.message);\n }, undefined, false);\n if (property) {\n ds.events.on(\"done\", function (ev) {\n var preloader = _this.preloader;\n if (preloader) {\n preloader.progress = 1;\n }\n if (property == \"data\" && !$type.isArray(ev.data)) {\n ev.data = [ev.data];\n }\n if (ds.incremental && property == \"data\" && _this.data.length) {\n _this.addData(ev.data, ds.keepCount ? ev.data.length : 0);\n } else if (ds.updateCurrentData && property == \"data\" && _this.data.length) {\n // cycle through existing data items\n $array.each(_this.data, function (item, index) {\n if ($type.hasValue(ev.data[index])) {\n $object.each(item, function (key, val) {\n if ($type.hasValue(ev.data[index][key])) {\n item[key] = ev.data[index][key];\n }\n });\n }\n });\n _this.invalidateRawData();\n } else {\n _this[property] = ev.data;\n }\n });\n }\n };\n Object.defineProperty(Component.prototype, \"responsive\", {\n /**\r\n * @return Responsive rules handler\r\n */\n get: function () {\n if (!this._responsive) {\n this._responsive = new Responsive();\n this._responsive.component = this;\n }\n return this._responsive;\n },\n /**\r\n * A [[Responsive]] instance to be used when applying conditional\r\n * property values.\r\n *\r\n * NOTE: Responsive features are currently in development and may not work\r\n * as expected, if at all.\r\n *\r\n * @param value Responsive rules handler\r\n */\n set: function (value) {\n this._responsive = value;\n this._responsive.component = this;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets current zoom.\r\n *\r\n * The range uses relative values from 0 to 1, with 0 marking beginning and 1\r\n * marking end of the available data range.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"range\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param range Range\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n * @return Actual modidied range (taking `maxZoomFactor` into account)\r\n */\n Component.prototype.zoom = function (range, skipRangeEvent, instantly, declination) {\n var _this = this;\n if (skipRangeEvent === void 0) {\n skipRangeEvent = false;\n }\n if (instantly === void 0) {\n instantly = false;\n }\n var start = range.start;\n var end = range.end;\n var priority = range.priority;\n if (range.start == range.end) {\n range.start = range.start - 0.5 / this.maxZoomFactor;\n range.end = range.end + 0.5 / this.maxZoomFactor;\n }\n if (priority == \"end\" && end == 1 && start != 0) {\n if (start < this.start) {\n priority = \"start\";\n }\n }\n if (priority == \"start\" && start == 0) {\n if (end > this.end) {\n priority = \"end\";\n }\n }\n if (!$type.isNumber(declination)) {\n declination = this.maxZoomDeclination;\n }\n if (!$type.isNumber(start) || !$type.isNumber(end)) {\n return {\n start: this.start,\n end: this.end\n };\n }\n if (this._finalStart != start || this._finalEnd != end) {\n var maxZoomFactor = this.maxZoomFactor / this.minZoomCount;\n var minZoomFactor = this.maxZoomFactor / this.maxZoomCount;\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\n if (priority == \"start\") {\n if (this.maxZoomCount > 0) {\n // add to the end\n if (1 / (end - start) < minZoomFactor) {\n end = start + 1 / minZoomFactor;\n }\n }\n // add to the end\n if (1 / (end - start) > maxZoomFactor) {\n end = start + 1 / maxZoomFactor;\n }\n //unless end is > 0\n if (end > 1 && end - start < 1 / maxZoomFactor) {\n //end = 1;\n start = end - 1 / maxZoomFactor;\n }\n }\n // most likely we are dragging right, so we modify left\n else {\n if (this.maxZoomCount > 0) {\n // add to the end\n if (1 / (end - start) < minZoomFactor) {\n start = end - 1 / minZoomFactor;\n }\n }\n // remove from start\n if (1 / (end - start) > maxZoomFactor) {\n start = end - 1 / maxZoomFactor;\n }\n if (start < 0 && end - start < 1 / maxZoomFactor) {\n //start = 0;\n end = start + 1 / maxZoomFactor;\n }\n }\n if (start < -declination) {\n start = -declination;\n }\n if (1 / (end - start) > maxZoomFactor) {\n end = start + 1 / maxZoomFactor;\n }\n if (end > 1 + declination) {\n end = 1 + declination;\n }\n if (1 / (end - start) > maxZoomFactor) {\n start = end - 1 / maxZoomFactor;\n }\n this._finalEnd = end;\n this._finalStart = start;\n this.skipRangeEvent = skipRangeEvent;\n this.dispatchImmediately(\"rangechangestarted\");\n if (this.rangeChangeDuration > 0 && !instantly) {\n // todo: maybe move this to Animation\n var rangeChangeAnimation = this.rangeChangeAnimation;\n if (rangeChangeAnimation && rangeChangeAnimation.progress < 1) {\n var options = rangeChangeAnimation.animationOptions;\n if (options.length > 1) {\n if (options[0].to == start && options[1].to == end) {\n return {\n start: start,\n end: end\n };\n } else {\n if (!rangeChangeAnimation.isDisposed()) {\n rangeChangeAnimation.stop();\n }\n }\n }\n }\n if (this.rangeChangeAnimation) {\n this.rangeChangeAnimation.kill();\n }\n rangeChangeAnimation = this.animate([{\n property: \"start\",\n to: start\n }, {\n property: \"end\",\n to: end\n }], this.rangeChangeDuration, this.rangeChangeEasing);\n this.rangeChangeAnimation = rangeChangeAnimation;\n if (rangeChangeAnimation && !rangeChangeAnimation.isFinished()) {\n rangeChangeAnimation.events.on(\"animationended\", function () {\n _this.dispatchImmediately(\"rangechangeended\");\n });\n } else {\n this.dispatchImmediately(\"rangechangeended\");\n }\n } else {\n this.start = start;\n this.end = end;\n this.dispatch(\"rangechangeended\");\n }\n }\n return {\n start: start,\n end: end\n };\n };\n /**\r\n * Zooms to specific data items using their index in data.\r\n *\r\n * This method will not have any effect when called on a chart object.\r\n * Since the chart can have a number of axes and series, each with its own\r\n * data, the meaning of \"index\" is very ambiguous.\r\n *\r\n * To zoom the chart use `zoom*` methods on its respective axes.\r\n *\r\n * @param startIndex Index of the starting data item\r\n * @param endIndex Index of the ending data item\r\n * @param skipRangeEvent Should rangechanged event not be triggered?\r\n * @param instantly Do not animate?\r\n */\n Component.prototype.zoomToIndexes = function (startIndex, endIndex, skipRangeEvent, instantly) {\n if (!$type.isNumber(startIndex) || !$type.isNumber(endIndex)) {\n return;\n }\n var start = startIndex / this.dataItems.length;\n var end = endIndex / this.dataItems.length;\n this.zoom({\n start: start,\n end: end\n }, skipRangeEvent, instantly);\n };\n Object.defineProperty(Component.prototype, \"zoomFactor\", {\n /**\r\n * A current zoom factor (0-1). 1 meaning fully zoomed out. (showing all of\r\n * the available data)\r\n *\r\n * @return Zoom factor\r\n */\n get: function () {\n return $math.fitToRange(1 / (this.end - this.start), 1, this.maxZoomFactor);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"maxZoomFactor\", {\n /**\r\n * @return Maximum zoomFactor\r\n */\n get: function () {\n return this.getPropertyValue(\"maxZoomFactor\");\n },\n /**\r\n * Max available `zoomFactor`.\r\n *\r\n * The element will not allow zoom to occur beyond this factor.\r\n *\r\n * [[DateAxis]] and [[CategoryAxis]] calculate this atutomatically so that\r\n * category axis could be zoomed to one category and date axis allows to be\r\n * zoomed up to one base interval.\r\n *\r\n * In case you want to restrict category or date axis to be zoomed to more\r\n * than one category or more than one base interval, use `minZoomCount`\r\n * property (set it to `> 1`).\r\n *\r\n * Default value of [[ValueAxis]]'s `maxZoomFactor` is `1000`.\r\n *\r\n * Feel free to modify it to allow bigger zoom or to restrict zooming.\r\n *\r\n * @param value Maximum zoomFactor\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"maxZoomFactor\", value)) {\n if (value == 1) {\n this.maxZoomDeclination = 0;\n }\n this.invalidateDataRange();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"maxZoomDeclination\", {\n /**\r\n * @ignore\r\n * @return Maximum zoom declination\r\n */\n get: function () {\n return this.getPropertyValue(\"maxZoomDeclination\");\n },\n /**\r\n * Max zoom declination.\r\n *\r\n * @ignore\r\n * @default 1\r\n * @param value Maximum zoom declination\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"maxZoomDeclination\", value)) {\n this.invalidateDataRange();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"startIndex\", {\n /**\r\n * Current starting index.\r\n *\r\n * @return Start index\r\n */\n get: function () {\n if (!$type.isNumber(this._startIndex)) {\n this._startIndex = 0;\n }\n return this._startIndex;\n },\n /**\r\n * Sets current starting index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Start index\r\n */\n set: function (value) {\n this._startIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\n //this._workingStartIndex = this._startIndex; // not good, breaks adjusted working start index of line series\n this.start = this.indexToPosition(this._startIndex);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n * @todo:review description\r\n * returns item's relative position by the index of the item\r\n * @param index\r\n */\n Component.prototype.indexToPosition = function (index) {\n return index / this.dataItems.length;\n };\n Object.defineProperty(Component.prototype, \"endIndex\", {\n /**\r\n * Current ending index.\r\n *\r\n * @return End index\r\n */\n get: function () {\n var count = this.dataItems.length;\n if (!$type.isNumber(this._endIndex) || this._endIndex > count) {\n this._endIndex = count;\n }\n return this._endIndex;\n },\n /**\r\n * Sets current ending index.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value End index\r\n */\n set: function (value) {\n this._endIndex = $math.fitToRange(Math.round(value), 0, this.dataItems.length);\n //this._workingEndIndex = this._endIndex; // not good, breaks adjusted workingend index of line series\n this.end = this.indexToPosition(this._endIndex);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"start\", {\n /**\r\n * @return Start (0-1)\r\n */\n get: function () {\n if (!this._adapterO) {\n return this._start;\n } else {\n return this._adapterO.apply(\"start\", this._start);\n }\n },\n /**\r\n * Start of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value Start (0-1)\r\n */\n set: function (value) {\n // value = $math.round(value, 10); not good\n //if (1 / (this.end - value) > this.maxZoomFactor) {\n //\tvalue = this.end - 1 / this.maxZoomFactor;\n //}\n if (this._start != value) {\n this._start = value;\n var startIndex = Math.max(0, Math.floor(this.dataItems.length * value) || 0);\n this._startIndex = Math.min(startIndex, this.dataItems.length);\n this.invalidateDataRange();\n this.invalidate();\n this.dispatchImmediately(\"startchanged\");\n this.dispatch(\"startendchanged\");\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"end\", {\n /**\r\n * @return End (0-1)\r\n */\n get: function () {\n if (!this._adapterO) {\n return this._end;\n } else {\n return this._adapterO.apply(\"end\", this._end);\n }\n },\n /**\r\n * End of the current data range (zoom).\r\n *\r\n * These are relative values from 0 (beginning) to 1 (end).\r\n *\r\n * @param value End (0-1)\r\n */\n set: function (value) {\n // value = $math.round(value, 10); // not good\n //if (1 / (value - this.start) > this.maxZoomFactor) {\n //\tvalue = 1 / this.maxZoomFactor + this.start;\n //}\n if (this._end != value) {\n this._end = value;\n this._endIndex = Math.min(this.dataItems.length, Math.ceil(this.dataItems.length * value) || 0);\n this.invalidateDataRange();\n this.invalidate();\n this.dispatchImmediately(\"endchanged\");\n this.dispatch(\"startendchanged\");\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [removeFromInvalids description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Component.prototype.removeFromInvalids = function () {\n _super.prototype.removeFromInvalids.call(this);\n registry.removeFromInvalidComponents(this);\n $array.remove(registry.invalidDataItems, this);\n $array.remove(registry.invalidDataRange, this);\n $array.remove(registry.invalidRawDatas, this);\n };\n Object.defineProperty(Component.prototype, \"dataItems\", {\n /**\r\n * Returns a list of source [[DataItem]] objects currently used in the chart.\r\n *\r\n * @return List of data items\r\n */\n get: function () {\n if (this._currentDataSetId != \"\") {\n var dataItems = this.dataSets.getKey(this._currentDataSetId);\n if (dataItems) {\n return dataItems;\n }\n }\n return this._dataItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"dataSets\", {\n /**\r\n * Holds data items for data sets (usually aggregated data).\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @return Data sets\r\n */\n get: function () {\n if (!this._dataSets) {\n this._dataSets = new Dictionary();\n }\n return this._dataSets;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\n Component.prototype.setDataSet = function (id) {\n if (this._currentDataSetId != id) {\n var dataSet = this.dataSets.getKey(id);\n if (!dataSet) {\n if (this._currentDataSetId != \"\") {\n this.dataItems.each(function (dataItem) {\n dataItem.__disabled = true;\n });\n this._currentDataSetId = \"\";\n this.invalidateDataRange();\n this._prevStartIndex = undefined;\n this.dataItems.each(function (dataItem) {\n dataItem.__disabled = false;\n });\n return true;\n }\n } else {\n this.dataItems.each(function (dataItem) {\n dataItem.__disabled = true;\n });\n this._currentDataSetId = id;\n this.invalidateDataRange();\n this._prevStartIndex = undefined;\n this.dataItems.each(function (dataItem) {\n dataItem.__disabled = false;\n });\n return true;\n }\n }\n return false;\n };\n Object.defineProperty(Component.prototype, \"currentDataSetId\", {\n /**\r\n * Returns id of the currently used data set, or `undefined` if main data set\r\n * is in use.\r\n *\r\n * @since 4.7.0\r\n * @return Current data set id\r\n */\n get: function () {\n return this._currentDataSetId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"mainDataSet\", {\n /**\r\n * Returns reference to \"main\" data set (unaggregated data as it was supplied\r\n * in `data`).\r\n *\r\n * @since 4.7.0\r\n * @return Main data set\r\n */\n get: function () {\n return this._dataItems;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates the indexes for the dataItems\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype._updateDataItemIndexes = function (startIndex) {\n var dataItems = this.mainDataSet.values;\n var length = dataItems.length;\n for (var i = startIndex; i < length; ++i) {\n dataItems[i]._index = i;\n }\n };\n /**\r\n * Processes newly added [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\n Component.prototype.handleDataItemAdded = function (event) {\n event.newValue.component = this;\n this._updateDataItemIndexes(event.index);\n if (!this.dataItemsInvalid) {\n this.invalidateDataItems();\n }\n };\n /**\r\n * removes [[DataItem]] as well as triggers data re-validation.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event [description]\r\n */\n Component.prototype.handleDataItemRemoved = function (event) {\n //\t\tevent.oldValue.component = undefined; // not good, as some items might be not removed from component lists\n this._updateDataItemIndexes(event.index);\n if (!this.dataItemsInvalid) {\n this.invalidateDataItems();\n }\n };\n /**\r\n * Binds a data element's field to a specific field in raw data.\r\n * For example, for the very basic column chart you'd want to bind a `value`\r\n * field to a field in data, such as `price`.\r\n *\r\n * Some more advanced Components, like [[CandlestickSeries]] need several\r\n * data fields bound to data, such as ones for open, high, low and close\r\n * values.\r\n *\r\n * @todo Example\r\n * @param field Field name\r\n * @param value Field name in data\r\n */\n Component.prototype.bindDataField = function (field, value) {\n this.dataFields[field] = value;\n this.invalidateDataRange();\n };\n /**\r\n * Invalidates processed data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype.invalidateProcessedData = function () {\n this.resetProcessedRange();\n this.invalidateDataRange();\n };\n /**\r\n * [resetProcessedRange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Component.prototype.resetProcessedRange = function () {\n this._prevEndIndex = null;\n this._prevStartIndex = null;\n };\n Object.defineProperty(Component.prototype, \"dataUsers\", {\n /**\r\n * Returns all other [[Component]] objects that are using this element's\r\n * data.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @return [description]\r\n */\n get: function () {\n var _this = this;\n if (!this._dataUsers) {\n this._dataUsers = new List();\n //this._disposers.push(new ListDisposer(this._dataUsers));\n // TODO better way of handling this? e.g. move into another module ?\n this._disposers.push(new Disposer(function () {\n // TODO clear the list ?\n $iter.each(_this._dataUsers.iterator(), function (x) {\n x.dispose();\n });\n }));\n }\n return this._dataUsers;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a clone of this element.\r\n *\r\n * @return Clone\r\n */\n Component.prototype.clone = function () {\n var component = _super.prototype.clone.call(this);\n component.dataFields = $utils.copyProperties(this.dataFields, {});\n return component;\n };\n /**\r\n * Copies all parameters from another [[Component]].\r\n *\r\n * @param source Source Component\r\n */\n Component.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.data = source.data;\n this.sequencedInterpolation = source.sequencedInterpolation;\n this.sequencedInterpolationDelay = source.sequencedInterpolationDelay;\n this.interpolationDuration = source.interpolationDuration;\n this.interpolationEasing = source.interpolationEasing;\n };\n /**\r\n * Invalidates the whole element, including all its children, causing\r\n * complete re-parsing of data and redraw.\r\n *\r\n * Use sparingly!\r\n */\n Component.prototype.reinit = function () {\n this._inited = false;\n this.deepInvalidate();\n };\n /**\r\n * Add an adapter for data.\r\n *\r\n * @return Exporting\r\n */\n Component.prototype.getExporting = function () {\n var _export = _super.prototype.getExporting.call(this);\n if (!_export.adapter.has(\"data\", this._exportData, -1, this)) {\n _export.adapter.add(\"data\", this._exportData, -1, this);\n this.events.on(\"datavalidated\", function (ev) {\n _export.handleDataUpdated();\n });\n }\n return _export;\n };\n Component.prototype._exportData = function (arg) {\n arg.data = this.data;\n return arg;\n };\n Component.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (changed) {\n this.invalidateData();\n }\n return changed;\n };\n /**\r\n * @ignore\r\n */\n Component.prototype.setShowOnInit = function (value) {\n if (value != this.getPropertyValue(\"showOnInit\")) {\n if (value && !this.inited && !this.hidden) {\n this._showOnInitDisposer2 = this.events.once(\"dataitemsvalidated\", this.hideInitially, this, false);\n this._disposers.push(this._showOnInitDisposer2);\n } else {\n if (this._showOnInitDisposer2) {\n this.removeDispose(this._showOnInitDisposer2);\n }\n }\n }\n // important order here\n _super.prototype.setShowOnInit.call(this, value);\n };\n Component.prototype.setBaseId = function (value) {\n if (value != this._baseId) {\n if (this.dataInvalid) {\n this.dataInvalid = false;\n registry.removeFromInvalidComponents(this);\n this._baseId = value;\n this.invalidateData();\n }\n }\n _super.prototype.setBaseId.call(this, value);\n };\n Object.defineProperty(Component.prototype, \"minZoomCount\", {\n /**\r\n * @return Min zoom count\r\n */\n get: function () {\n return this.getPropertyValue(\"minZoomCount\");\n },\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Allows restricting zoom in beyond certain number of categories or base\r\n * intervals.\r\n *\r\n * @default 1\r\n * @param value Min zoom count\r\n */\n set: function (value) {\n this.setPropertyValue(\"minZoomCount\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"maxZoomCount\", {\n /**\r\n * @return Max zoom count\r\n */\n get: function () {\n return this.getPropertyValue(\"maxZoomCount\");\n },\n /**\r\n * Use this for [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * Limits how many categories or base intervals can be shown at the same\r\n * time.\r\n *\r\n * If there are more items in the chart, the chart will auto-zoom.\r\n *\r\n * @default 0 (no limit)\r\n * @since 4.6.2\r\n * @param value Max zoom count\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxZoomCount\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Called during the System.update method\r\n *\r\n * @ignore Exclude from docs\r\n */\n Component.prototype._systemCheckIfValidate = function () {\n if (this.dataInvalid || this.dataProvider && this.dataProvider.dataInvalid) {\n return false;\n } else {\n return true;\n }\n };\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n Component.prototype.asFunction = function (field) {\n return field == \"interpolationEasing\" || field == \"rangeChangeEasing\" || _super.prototype.asIs.call(this, field);\n };\n return Component;\n}(Container);\nexport { Component };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Component\"] = Component;\n//# sourceMappingURL=Component.js.map","/**\r\n * Text class deals with all text placed on chart.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { registry } from \"../Registry\";\nimport { getTextFormatter } from \"../formatters/TextFormatter\";\nimport { MultiDisposer } from \"../utils/Disposer\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $math from \"../utils/Math\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\nimport * as $dom from \"../utils/DOM\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../utils/Responsive\";\nimport { options } from \"../Options\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Text is used to display highly configurable, data-enabled textual elements.\r\n *\r\n * ## Data Binding\r\n *\r\n * A Text element can dynamically parse and populate its contents with values\r\n * from a [[DataItem]].\r\n *\r\n * To activate such binding, set element's `dataItem` property.\r\n *\r\n * When activated, text contents will be parsed for special tags, e.g.:\r\n *\r\n * ```TypeScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n * ```JavaScript\r\n * label.dataItem = myDataItem;\r\n * label.text = \"The title is: {title}\";\r\n * ```\r\n *\r\n * The above will automatically replace \"{title}\" in the string with the\r\n * actual data value from `myDataItem`.\r\n *\r\n * Note, that most often dataItem is set by the Component.\r\n *\r\n *\r\n * @see {@link ILabelEvents} for a list of available events\r\n * @see {@link ILabelAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/} for info on string formatting and data binding\r\n * @todo Vertical align\r\n * @important\r\n */\nvar Label = /** @class */function (_super) {\n __extends(Label, _super);\n /**\r\n * Constructor\r\n */\n function Label() {\n var _this =\n // Execute super's constructor\n _super.call(this) || this;\n /**\r\n * Indicates if the whole text does not fit into max dimenstions set for it.\r\n */\n _this.isOversized = false;\n // Set this class name\n _this.className = \"Label\";\n _this.fill = new InterfaceColorSet().getFor(\"text\");\n // not good to set this, as then these will appear on each label and values set on container won't be applied.\n //this.textDecoration = \"none\";\n //this.fontWeight = \"normal\";\n // Set defaults\n _this.wrap = false;\n _this.truncate = false;\n _this.fullWords = true;\n _this.ellipsis = \"…\";\n _this.textAlign = \"start\";\n _this.textValign = \"top\";\n _this.layout = \"absolute\";\n _this.baseLineRatio = -0.27;\n //this.pixelPerfect = true;\n _this._positionPrecision = 1;\n // Add events to watch for maxWidth/maxHeight changes so that we can\n // invalidate this\n _this.events.on(\"maxsizechanged\", function () {\n if (_this.inited) {\n _this.handleMaxSize();\n }\n }, _this, false);\n // this solves strange bug when text just added to svg is 0x0\n _this.events.once(\"validated\", _this.handleValidate, _this, false);\n // Aply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * A placeholder method that is called **after** element finishes drawing\r\n * itself.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Label.prototype.afterDraw = function () {\n // since we removed validatePosition from sprite, we still need it here to handle rotated text\n _super.prototype.afterDraw.call(this);\n this.validatePosition();\n };\n /**\r\n * Sets [[Paper]] instance to use to draw elements.\r\n * @ignore\r\n * @param paper Paper\r\n * @return true if paper was changed, false, if it's the same\r\n */\n Label.prototype.setPaper = function (paper) {\n var changed = _super.prototype.setPaper.call(this, paper);\n if (changed) {\n this.hardInvalidate();\n }\n return changed;\n };\n /**\r\n * @ignore\r\n */\n Label.prototype.handleValidate = function () {\n if ((this.currentText || this.text) && (this.bbox.width == 0 || this.bbox.height == 0)) {\n registry.events.once(\"exitframe\", this.hardInvalidate, this);\n }\n };\n /**\r\n * @ignore\r\n */\n Label.prototype.handleMaxSize = function () {\n if (this.bbox.width > this.availableWidth || this.bbox.width < this.availableWidth && (this.isOversized || this.truncate) || this.bbox.height > this.availableHeight || this.bbox.height < this.availableHeight && this.isOversized) {\n this.invalidate();\n } else {\n //this.alignSVGText();\n }\n };\n /**\r\n * [arrange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Label.prototype.arrange = function () {};\n /**\r\n * Updates current text according to data item and supported features.\r\n * Returns `true` if current text has changed.\r\n *\r\n * @return Text changed?\r\n */\n Label.prototype.updateCurrentText = function () {\n // Determine output format\n var output, text;\n if ($utils.isNotEmpty(this.html) && this.paper.supportsForeignObject()) {\n // We favor HTML text if it's set and browser supports `foreignObject`\n output = \"html\";\n text = this.html;\n } else {\n output = \"svg\";\n text = this.text;\n }\n // Need to toString source?\n if ($type.isObject(text)) {\n text = text.toString();\n }\n // Need to format text all the time\n if ($type.hasValue(text) && text !== \"\") {\n text = this.populateString(text, this.dataItem);\n }\n if (output == \"html\") {\n if (this._adapterO) {\n text = this._adapterO.apply(\"htmlOutput\", text);\n }\n } else {\n if (this._adapterO) {\n text = this._adapterO.apply(\"textOutput\", text);\n }\n }\n // Update the text\n var changed = text != this.currentText || output != this._currentFormat;\n this.currentText = text;\n this._currentFormat = output;\n return changed;\n };\n /**\r\n * Hard invalidate means the text will be redrawn even if it hasn't changed.\r\n * This is used when we change `fontSize`, `fontFamily`, or for some other\r\n * reasons.\r\n */\n Label.prototype.hardInvalidate = function () {\n this._prevStatus = \"\";\n this.invalidate();\n };\n /**\r\n * Gets line bbox, uses caching to save cpu\r\n * @ignore\r\n */\n Label.prototype.getLineBBox = function (lineInfo) {\n //let cacheKey = lineInfo.text + lineInfo.style;\n //let lineBBox = this.getCache(cacheKey);\n //if (!lineBBox) {\n //lineBBox = lineInfo.element.getBBox();\n //if (lineBBox.width != 0 && lineBBox.height != 0) {\n //\tthis.setCache(cacheKey, lineBBox, 5000);\n //}\n //}\n var element = lineInfo && lineInfo.element;\n var node = element && element.node;\n // Check for the parent Node to avoid FF from throwing errors\n if (node && node.parentNode) {\n lineInfo.bbox = element.getBBox();\n }\n };\n /**\r\n * Draws the textual label.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Label.prototype.draw = function () {\n // Draw super\n _super.prototype.draw.call(this);\n var oldW = this.bbox.width;\n var oldH = this.bbox.height;\n var topParent = this.topParent;\n if (topParent) {\n if (!topParent.maxWidth || !topParent.maxHeight) {\n topParent.events.once(\"maxsizechanged\", this.hardInvalidate, this, false);\n return;\n }\n }\n // Calculate max width and height\n var maxWidth = $math.max(this.availableWidth - this.pixelPaddingLeft - this.pixelPaddingRight, 0);\n var maxHeight = $math.max(this.availableHeight - this.pixelPaddingTop - this.pixelPaddingBottom, 0);\n // save\n var status = maxHeight + \",\" + maxWidth + this.wrap + this.truncate + this.fullWords + this.rtl + this.ellipsis;\n // Update text\n if (!this.updateCurrentText() && this.inited && this._prevStatus == status) {\n return;\n }\n this._measuredWidth = 0;\n this._measuredHeight = 0;\n // Reset\n this.isOversized = false;\n // Determine output format\n var output = this._currentFormat;\n var text = this.currentText;\n // Empty string\n if (!$type.hasValue(text) || text == \"\") {\n this.element.attr({\n display: \"none\"\n });\n return;\n }\n // Chop up text into lines\n // We're still processing SVG and HTML in the same way for now\n var lines = text.split(\"\\n\");\n // Do we need to go through the trouble of measuring lines\n //let measure: boolean = true;// (lines.length > 1) || this.wrap;\n this._prevStatus = status;\n this.textAlign = this.textAlign;\n // need this to measure\n var display = this.group.getAttr(\"display\");\n if (display == \"none\") {\n this.group.removeAttr(\"display\");\n }\n if (this.textPathElement) {\n this.textPathElement.removeChildren();\n }\n // SVG or HTML?\n if (output === \"svg\") {\n /**\r\n * SVG\r\n */\n this.element.removeAttr(\"display\");\n // Clear the element\n var group = this.element;\n this.resetBBox();\n // Init state variables\n var currentHeight = 0;\n var currentFormat = \"\";\n // Process each line\n for (var i = 0; i < lines.length; i++) {\n // Get line\n var line = lines[i];\n // Check if line is empty\n if (line == \"\") {\n // It is, let's just update currentHeight and go to the next one\n // If it's the first line, we'll have to use arbirary line height,\n // since there's nothing to measure. For subsequent lines we can take\n // previous line's height\n var tempElement = this.getSVGLineElement(\"\", 0);\n tempElement.add(this.getSvgElement(\".\", getTextFormatter().translateStyleShortcuts(currentFormat)));\n group.add(tempElement);\n var offset = Math.ceil(tempElement.getBBox().height);\n if (offset > 0) {\n currentHeight += offset;\n }\n group.removeElement(tempElement);\n // Clear cache if necessary\n var lineInfo_1 = this.getLineInfo(i);\n if (lineInfo_1) {\n lineInfo_1.text = \"\";\n lineInfo_1.element.textContent = \"\";\n }\n continue;\n }\n // Chunk up the line and process each chunk\n var chunks = getTextFormatter().chunk(line, null, this.ignoreFormatting);\n var currentLineHeight = 0;\n var firstChunk = true;\n var skipTextChunks = false;\n // Create line element or grab it from cache\n var lineInfo = this.getLineInfo(i);\n if (lineInfo) {\n // Empty line\n lineInfo.text = \"\";\n lineInfo.element.textContent = \"\";\n } else {\n // Init new line info\n lineInfo = {\n \"text\": \"\",\n \"element\": this.getSVGLineElement(\"\", 0),\n \"complex\": false\n };\n // Create the line element\n //lineInfo.element = this.getSVGLineElement(\"\", 0);\n //lineElement = this.getSVGLineElement(\"\", 0);\n group.add(lineInfo.element);\n }\n lineInfo.element.removeAttr(\"display\");\n lineInfo.element.removeChildren(); // memory leak without this\n if (this.textPathElement) {\n lineInfo.element.add(this.textPathElement);\n }\n /*// @todo not needed anymore\r\n if (this.rtl) {\r\n chunks.reverse();\r\n }*/\n // Process each chunk\n for (var x = 0; x < chunks.length; x++) {\n // If there's more than one chunk, means the line is \"complex\"\n if (x) {\n lineInfo.complex = true;\n }\n // Get chunk\n var chunk = chunks[x];\n // Is this chunk format or text?\n if (chunk.type === \"format\") {\n // Log current format, so that we can apply it to multiple lines if\n // necessary\n currentFormat = chunk.text;\n } else {\n // It's text block\n // Need to skip?\n // We do this when truncating. We can't just simply go ahead and\n // abandon chunk processing as they might have formatting\n // instructions in them that are relevant for subsequent lines\n if (skipTextChunks) {\n continue;\n }\n // Add chunk to the current element\n //lineInfo.element.content += $utils.trim(getTextFormatter().format(currentFormat + chunk.text, output));\n lineInfo.text = chunk.text;\n lineInfo.style = getTextFormatter().translateStyleShortcuts(currentFormat);\n if (this.textPathElement) {\n this.getSvgElement(lineInfo.text, lineInfo.style, this.textPathElement);\n } else {\n this.getSvgElement(lineInfo.text, lineInfo.style, lineInfo.element);\n }\n this.getLineBBox(lineInfo);\n lineInfo.bbox.width = Math.ceil(lineInfo.bbox.width);\n // Updated current line height\n if (currentLineHeight < lineInfo.bbox.height) {\n currentLineHeight = lineInfo.bbox.height;\n }\n // Wrapping?\n if ((this.wrap || this.truncate) && lineInfo.bbox.width > maxWidth) {\n // Set oversized\n this.isOversized = true;\n // Take temporary measurements\n var lineText = lineInfo.element.textContent;\n var avgCharWidth = lineInfo.bbox.width / lineText.length; // * .9;\n // Calculate average number of symbols / width\n var excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\n // Are we truncating or auto-wrapping text?\n if (this.truncate) {\n /**\r\n * Processing line truncation\r\n * With the addition of each text chunk we measure if current\r\n * line does not exceed maxWidth. If it does, we will stop\r\n * addition of further chunks as well as try to truncate\r\n * current or any number of previous chunks with an added\r\n * ellipsis\r\n */\n // Indicator whether we need to add ellipsis to the current\n // element, even if it fits. This is needed to indicate\n // whether we have already removed some subsequent chunks in\n // which case we need to add ellipsis.\n var addEllipsis = false;\n // Process each child in the temporary line, until the whole\n // line fits, preferably with an ellipsis\n // TODO use iterator instead\n var node_1 = lineInfo.element.node;\n if (node_1 && node_1.childNodes) {\n for (var e = lineInfo.element.node.childNodes.length - 1; e >= 0; e--) {\n // Get current element\n var node_2 = lineInfo.element.node.childNodes[e];\n // Add ellipsis only if previous chunk was removed in full\n // and this chunk already fits\n //if (addEllipsis && (bbox.width <= maxWidth)) {\n if (addEllipsis && lineInfo.bbox.width <= maxWidth) {\n // Add ellipsis\n node_2.textContent += \" \" + this.ellipsis;\n // Measure again (we need to make sure ellipsis fits)\n lineInfo.bbox = lineInfo.element.getBBox();\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\n // If it fits, we're done here\n // If it doesn't we continue rolling\n if (lineInfo.bbox.width <= maxWidth) {\n break;\n }\n }\n addEllipsis = false;\n // Get element text\n var elementText = node_2.textContent;\n // Calculate average number of symbols / width\n lineText = lineInfo.element.textContent;\n excessChars = $math.min(Math.ceil((lineInfo.bbox.width - maxWidth) / avgCharWidth), lineText.length);\n // Do this until we fit\n while (lineInfo.bbox.width > maxWidth && excessChars <= lineText.length && excessChars > 0) {\n // Calculate max available chars\n var maxChars = $math.max(lineText.length - excessChars - this.ellipsis.length, 1);\n // Is there anything left?\n if (maxChars <= 1) {\n // Nope, let's jump to the previous item\n // Set excess characters to zero so that this loop does\n // not repeat when it over\n excessChars = 0;\n // Add ellipsis to previous item\n // Subsequent iterations will check if the ellipsis fits\n if (e > 0) {\n // Indicating to add ellipsis to previous item\n addEllipsis = true;\n // Removing this node\n lineInfo.element.node.removeChild(node_2);\n }\n }\n // Truncate the text\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, this.fullWords, this.rtl);\n if (elementText.length > maxChars && this.fullWords) {\n // Still too long?\n // Let's try truncating breaking words anyway\n elementText = $utils.truncateWithEllipsis(elementText, maxChars, this.ellipsis, false, this.rtl);\n }\n // Set truncated text\n node_2.textContent = elementText;\n // Measure again\n lineInfo.bbox = lineInfo.element.getBBox();\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\n // Increase excess characters count, just in case it still\n // doesn't fit and we have to go at it again\n excessChars = Math.ceil(excessChars * 1.1);\n }\n // Do not process further chunks\n skipTextChunks = true;\n }\n }\n } else {\n /**\r\n * Processign auto-wrap\r\n * In this case we're going to be adding text chunks until\r\n * they don't fit into current line. Once that happens we will\r\n * inject the rest of the chunks to the next line\r\n */\n // Get last node added and measure it\n var node_3 = lineInfo.element.node;\n if (node_3) {\n var lastNode = lineInfo.element.node.lastChild;\n // Init split lines\n var splitLines = void 0;\n while (lineInfo.bbox.width > maxWidth && excessChars <= lineText.length && excessChars > 0) {\n // Calculate max available chars\n var maxChars = $math.max(chunk.text.length - excessChars, 1);\n // Don't split the words mid-word if it's not the first chunk\n // in the line\n if (firstChunk) {\n // Split mid-word if necessary\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl);\n } else {\n // Don't split mid-word\n splitLines = $utils.splitTextByCharCount(chunk.text, maxChars, true, this.rtl, false);\n // Check if the first word is too long\n if (splitLines[0].length > maxChars || maxChars === 1) {\n // Yes - move the whole chunk to the next line\n // Remove the element we just added\n lineInfo.element.node.removeChild(lastNode);\n // Break out of the while on next cycle\n excessChars = 0;\n }\n }\n // Use the first line to update last item\n if (excessChars > 0) {\n var lineText_1 = splitLines.shift();\n if (firstChunk) {\n lineText_1 = $utils.trim(lineText_1);\n }\n lastNode.textContent = getTextFormatter().cleanUp(lineText_1);\n }\n // Measure again, just in case\n lineInfo.bbox = lineInfo.element.getBBox();\n lineInfo.bbox.width = Math.floor(lineInfo.bbox.width);\n // Increase excess characters count, just in case it still\n // doesn't fit and we have to go at it again\n //excessChars = Math.ceil(excessChars * 1.05);\n excessChars++;\n }\n // Construct the rest of the line\n if (splitLines.length > 0) {\n var restOfLine = \"\";\n // Add leftovers from splitting the current chunk\n if ($type.hasValue(splitLines)) {\n if (this.rtl) {\n restOfLine += splitLines.join(\"\") + currentFormat;\n } else {\n restOfLine += currentFormat + splitLines.join(\"\").replace(/([\\[\\]]{1})/g, \"$1$1\");\n }\n }\n // Add the rest of the chunks\n for (var c = x + 1; c < chunks.length; c++) {\n if (chunks[c].type == \"value\") {\n // We're escaping single square brackets that were\n // cleaned up by chunk() back to double square brackets\n // so that they are not being treated as format on\n // next pass.\n restOfLine += chunks[c].text.replace(/([\\[\\]]{1})/g, \"$1$1\");\n } else {\n restOfLine += chunks[c].text;\n }\n }\n // Inject the rest of the lines as chunks for subsequent\n lines.splice(i + 1, 0, restOfLine);\n }\n // Skip processing the rest of the chunks\n skipTextChunks = true;\n }\n }\n }\n // Let's update the text's bbox with the line's one\n if (this.bbox.width < lineInfo.bbox.width) {\n this.bbox.width = lineInfo.bbox.width;\n }\n // commented to avoid bug (seen on sankey link) where text is incorrectly aligned\n //if (this.bbox.x > lineInfo.bbox.x) {\n //this.bbox.x = lineInfo.bbox.x;\n //}\n this.bbox.height = currentHeight + currentLineHeight;\n // Position current line\n if (!this.textPathElement) {\n lineInfo.element.attr({\n \"x\": \"0\",\n \"y\": currentHeight + currentLineHeight,\n \"dy\": $math.round(this.baseLineRatio * currentLineHeight, 3).toString()\n });\n } else {\n lineInfo.element.attr({\n \"dy\": -this.paddingBottom.toString()\n });\n }\n firstChunk = false;\n }\n }\n // Trim the last item\n var node = lineInfo.element.node;\n if (node) {\n var lastNode = node.lastChild;\n if (lastNode) {\n lastNode.textContent = this.rtl ? $utils.ltrim(lastNode.textContent) : $utils.rtrim(lastNode.textContent);\n }\n }\n // Increment collective height\n currentHeight += currentLineHeight;\n // Save line cache\n this.addLineInfo(lineInfo, i);\n }\n // Check if maybe we need to hide the whole label if it doesn't fit\n this.maybeHideOversized();\n this.measureFailed = false;\n if (this.bbox.width == 0 || this.bbox.height == 0) {\n this.measureFailed = true;\n }\n // Updated measured dims\n this._measuredWidth = $math.round($math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight));\n this._measuredHeight = $math.round($math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom));\n // Align the lines\n this.alignSVGText();\n this.bbox.width = this._measuredWidth;\n this.bbox.height = this._measuredHeight;\n if (oldH != this._measuredHeight || oldW != this._measuredWidth) {\n this.dispatch(\"transformed\");\n }\n this.hideUnused(lines.length);\n } else {\n /**\r\n * HTML\r\n */\n this.element.removeAttr(\"display\");\n this.resetBBox();\n // Clear the element\n var group = this.element;\n group.removeChildren();\n // Create a ForeignObject to use as HTML container\n var fo = this.paper.foreignObject();\n group.add(fo);\n // Set widths on foreignObject so that autosizing measurements work\n // This will bet reset to actual content width/height\n if (this.maxWidth) {\n fo.attr({\n width: this.maxWidth - this.pixelPaddingLeft - this.pixelPaddingRight\n });\n }\n if (this.maxHeight) {\n fo.attr({\n height: this.maxHeight - this.pixelPaddingTop - this.pixelPaddingBottom\n });\n }\n // Create line element\n //let lineElement: HTMLElement = this.getHTMLLineElement(getTextFormatter().format(this.html, output));\n var lineElement = this.getHTMLLineElement(text);\n fo.node.appendChild(lineElement);\n // Temporarily set to inline-block so we can measure real width and height\n lineElement.style.display = \"inline-block\";\n var clientWidth = lineElement.clientWidth;\n var clientHeight = lineElement.clientHeight;\n lineElement.style.display = \"block\";\n this._bbox = {\n x: 0,\n y: 0,\n width: clientWidth,\n height: clientHeight\n };\n // Set exact dimensions of foreignObject so it is sized exactly as\n // the content within (add one pixel to width so it does not wrap)\n fo.attr({\n width: clientWidth + 1,\n height: clientHeight\n });\n // Check if maybe we need to hide the whole label if it doesn't fit\n this.maybeHideOversized();\n // Set measurements and update bbox\n this._measuredWidth = $math.max(this.bbox.width, this.pixelWidth - this.pixelPaddingLeft - this.pixelPaddingRight);\n this._measuredHeight = $math.max(this.bbox.height, this.pixelHeight - this.pixelPaddingTop - this.pixelPaddingBottom);\n this.bbox.width = this._measuredWidth;\n this.bbox.height = this._measuredHeight;\n // Don't let labels bleed out of the alotted area\n if (this.truncate) {\n lineElement.style.overflow = \"hidden\";\n }\n if (clientWidth > maxWidth || clientHeight > maxHeight) {\n this.isOversized = true;\n }\n }\n // Set applicable styles\n this.setStyles();\n this.updateCenter();\n this.updateBackground();\n if (display == \"none\") {\n this.group.attr({\n display: \"none\"\n });\n }\n if (this.pathElement) {\n this.paper.appendDef(this.pathElement);\n }\n };\n /**\r\n * Hides element if it does not fit into available space\r\n */\n Label.prototype.maybeHideOversized = function () {\n if (this.hideOversized) {\n if (this.availableWidth < this.bbox.width || this.availableHeight < this.bbox.height) {\n this.element.attr({\n display: \"none\"\n });\n this.isOversized = true;\n } else {\n this.element.removeAttr(\"display\");\n this.isOversized = false;\n }\n }\n };\n /**\r\n * Aligns the lines horizontally and vertically, based on properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Label.prototype.alignSVGText = function () {\n // Get Group\n var group = this.element;\n var children = group.node.children || group.node.childNodes;\n // Is there anything to align?\n if (!children || children && children.length == 0) {\n return;\n }\n var width = this._measuredWidth;\n var height = this._measuredHeight;\n // TODO maybe these aren't needed ?\n $utils.used(this.pixelPaddingLeft);\n $utils.used(this.pixelPaddingRight);\n $utils.used(this.pixelPaddingTop);\n $utils.used(this.pixelPaddingBottom);\n if (this.rtl) {\n group.attr({\n \"direction\": \"rtl\"\n });\n } else {\n group.removeAttr(\"direction\");\n }\n // Process each line\n //$iter.each(group.children.backwards().iterator(), (element) => {\n for (var i = children.length - 1; i >= 0; i--) {\n // Align horizontally\n // Since we are using `text-anchor` for horizontal alignment, all we need\n // to do here is move the `x` position\n var node = children[i];\n node.setAttribute(\"text-anchor\", this.textAlign);\n if (this.textPathElement) {\n node.removeAttribute(\"x\");\n node.removeAttribute(\"y\");\n } else {\n switch (this.textAlign) {\n case \"middle\":\n node.setAttribute(\"x\", (width / 2).toString() + \"px\");\n break;\n case \"end\":\n if (this.rtl) {} else {\n node.setAttribute(\"x\", width.toString());\n }\n break;\n default:\n if (this.rtl) {\n node.setAttribute(\"x\", width.toString());\n } else {\n node.removeAttribute(\"text-anchor\");\n }\n break;\n }\n var y = $type.toNumber(node.getAttribute(\"y\"));\n switch (this.textValign) {\n case \"middle\":\n node.setAttribute(\"y\", ((y || 0) + (height - this.bbox.height) / 2).toString());\n break;\n case \"bottom\":\n node.setAttribute(\"y\", ((y || 0) + height - this.bbox.height).toString());\n break;\n default:\n node.setAttribute(\"y\", (y || 0).toString());\n break;\n }\n }\n }\n };\n /**\r\n * Produces an SVG line element with formatted text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to wrap into line\r\n * @param y Current line vertical position\r\n * @return A DOM element\r\n * @todo Implement HTML support\r\n */\n Label.prototype.getSVGLineElement = function (text, y) {\n // Create a <text> node and set text\n var element = this.paper.addGroup(\"text\");\n element.textContent = text;\n // Set parameters\n element.attr({\n \"x\": \"0\"\n //\"alignment-baseline\": \"hanging\",\n //\"baseline-shift\": \"-20%\",\n //\"text-anchor\": \"center\"\n });\n // Set `y` position\n if ($type.hasValue(y)) {\n element.attr({\n \"y\": y.toString()\n });\n }\n // Don't let labels blled out of the alotted area\n if (this.truncate || this.wrap) {\n element.attr({\n \"overflow\": \"hidden\"\n });\n }\n // Add RTL?\n // This has now been moved to this.alignSVGText()\n // if (this.rtl) {\n // \telement.attr({\n // \t\t\"direction\": \"rtl\",\n // \t\t//\"unicode-bidi\": \"bidi-override\"\n // \t});\n // }\n return element;\n };\n Object.defineProperty(Label.prototype, \"rtl\", {\n /**\r\n * @return RTL?\r\n */\n get: function () {\n if ($type.hasValue(this._rtl)) {\n return this._rtl;\n } else if (this._topParent) {\n return this._topParent.rtl;\n }\n return false;\n },\n /**\r\n * An RTL (right-to-left) setting.\r\n *\r\n * RTL may affect alignment, text, and other visual properties.\r\n *\r\n * If you set this on a top-level chart object, it will be used for all\r\n * child elements, e.g. labels, unless they have their own `rtl` setting\r\n * set directly on them.\r\n *\r\n * @param value `true` for to use RTL\r\n */\n set: function (value) {\n value = $type.toBoolean(value);\n this._rtl = value;\n if (this.element) {\n this.alignSVGText();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Resets cached BBox.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Label.prototype.resetBBox = function () {\n this._bbox = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n };\n /**\r\n * Creates and returns an HTML line element (`<div>`).\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to add\r\n * @return `<div>` element reference\r\n */\n Label.prototype.getHTMLLineElement = function (text) {\n // Create the <div> element\n var div = document.createElement(\"div\");\n div.innerHTML = text;\n // Set text alignment\n switch (this.textAlign) {\n case \"middle\":\n div.style.textAlign = \"center\";\n break;\n case \"end\":\n div.style.textAlign = \"right\";\n break;\n }\n // Disable or enable wrapping\n if (this.wrap) {\n div.style.wordWrap = \"break-word\";\n } else {\n div.style.whiteSpace = \"nowrap\";\n }\n // Don't let labels bleed out of the alotted area\n // Moved to `draw()` because setting \"hidden\" kills all measuring\n /*if (this.truncate) {\r\n div.style.overflow = \"hidden\";\r\n }*/\n // Set RTL-related styles\n if (this.rtl) {\n div.style.direction = \"rtl\";\n //div.style.unicodeBidi = \"bidi-override\";\n }\n // Translate some of the SVG styles into CSS\n if ($type.hasValue(this.fill)) {\n div.style.color = this.fill.toString();\n }\n return div;\n };\n /**\r\n * Applies specific styles to text to make it not selectable, unless it is\r\n * explicitly set as `selectable`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Set styles via AMElement\r\n */\n Label.prototype.setStyles = function () {\n var group = this.element;\n if (!this.selectable || this.draggable || this.resizable || this.swipeable) {\n group.addStyle({\n \"webkitUserSelect\": \"none\",\n \"msUserSelect\": \"none\"\n });\n } else if (this.selectable) {\n group.removeStyle(\"webkitUserSelect\");\n group.removeStyle(\"msUserSelect\");\n }\n };\n /**\r\n * Hides unused lines\r\n */\n Label.prototype.hideUnused = function (index) {\n this.initLineCache();\n var lines = this.getCache(\"lineInfo\");\n if (lines.length >= index) {\n for (var i = index; i < lines.length; i++) {\n var line = lines[i];\n if (line && line.element) {\n line.element.attr({\n \"display\": \"none\"\n });\n }\n }\n }\n };\n Object.defineProperty(Label.prototype, \"text\", {\n /**\r\n * @return SVG text\r\n */\n get: function () {\n return this.getPropertyValue(\"text\");\n },\n /**\r\n * An SVG text.\r\n *\r\n * Please note that setting `html` will override this setting if browser\r\n * supports `foreignObject` in SGV, such as most modern browsers excluding\r\n * IEs.\r\n *\r\n * @param value SVG Text\r\n */\n set: function (value) {\n //this.setPropertyValue(\"html\", undefined);\n this.setPropertyValue(\"text\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"path\", {\n /**\r\n * @return Path\r\n */\n get: function () {\n return this.getPropertyValue(\"path\");\n },\n /**\r\n * An SVG path string to position text along. If set, the text will follow\r\n * the curvature of the path.\r\n *\r\n * Location along the path can be set using `locationOnPath`.\r\n *\r\n * IMPORTANT: Only SVG text can be put on path. If you are using HTML text\r\n * this setting will be ignored.\r\n *\r\n * @since 4.1.2\r\n * @param value Path\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"path\", value, true)) {\n if (this.pathElement) {\n this.pathElement.dispose();\n }\n if (this.textPathElement) {\n this.textPathElement.dispose();\n }\n this.pathElement = this.paper.add(\"path\");\n this.pathElement.attr({\n \"d\": value\n });\n this.pathElement.attr({\n \"id\": \"text-path-\" + this.uid\n });\n this._disposers.push(this.pathElement);\n this.textPathElement = this.paper.addGroup(\"textPath\");\n this.textPathElement.attrNS($dom.XLINK, \"xlink:href\", \"#text-path-\" + this.uid);\n // TODO remove after https://bugzilla.mozilla.org/show_bug.cgi?id=455986 is fixed\n this.textPathElement.attr({\n \"path\": value\n });\n this._disposers.push(this.textPathElement);\n this.hardInvalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"locationOnPath\", {\n /**\r\n * @return Relatvie location on path\r\n */\n get: function () {\n return this.getPropertyValue(\"locationOnPath\");\n },\n /**\r\n * Relative label location on `path`. Value range is from 0 (beginning)\r\n * to 1 (end).\r\n *\r\n * Works only if you set `path` setting to an SVG path.\r\n *\r\n * @since 4.1.2\r\n * @default 0\r\n * @param value Relatvie location on path\r\n */\n set: function (value) {\n this.setPropertyValue(\"locationOnPath\", value);\n if (this.textPathElement) {\n this.textPathElement.attr({\n \"startOffset\": value * 100 + \"%\"\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"baseLineRatio\", {\n /**\r\n * @return Base line ratio\r\n */\n get: function () {\n return this.getPropertyValue(\"baseLineRatio\");\n },\n /**\r\n * A ratio to calculate text baseline. Ralative distance from the bottom of\r\n * the label.\r\n *\r\n * @since 4.4.2\r\n * @default -0.27\r\n * @param value Base line ratio\r\n */\n set: function (value) {\n this.setPropertyValue(\"baseLineRatio\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"wrap\", {\n /**\r\n * @return Auto-wrap enabled or not\r\n */\n get: function () {\n return this.getPropertyValue(\"wrap\");\n },\n /**\r\n * Enables or disables autowrapping of text.\r\n *\r\n * @param value Auto-wrapping enabled\r\n */\n set: function (value) {\n this.resetBBox();\n this.setPropertyValue(\"wrap\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"truncate\", {\n /**\r\n * @return Truncate text?\r\n */\n get: function () {\n return this.getPropertyValue(\"truncate\");\n },\n /**\r\n * Indicates if text lines need to be truncated if they do not fit, using\r\n * configurable `ellipsis` string.\r\n *\r\n * `truncate` overrides `wrap` if both are set to `true`.\r\n *\r\n * NOTE: For HTML text, this setting **won't** trigger a parser and actual\r\n * line truncation with ellipsis. It will just hide everything that goes\r\n * outside the label.\r\n *\r\n * @param value trincate text?\r\n */\n set: function (value) {\n this.resetBBox();\n this.setPropertyValue(\"truncate\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"fullWords\", {\n /**\r\n * @return Truncate on full words?\r\n */\n get: function () {\n return this.getPropertyValue(\"fullWords\");\n },\n /**\r\n * If `truncate` is enabled, should Label try to break only on full words\r\n * (`true`), or whenever needed, including middle of the word. (`false`)\r\n *\r\n * @default true\r\n * @param value Truncate on full words?\r\n */\n set: function (value) {\n this.setPropertyValue(\"fullWords\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"ellipsis\", {\n /**\r\n * @return Ellipsis string\r\n */\n get: function () {\n return this.getPropertyValue(\"ellipsis\");\n },\n /**\r\n * Ellipsis character to use if `truncate` is enabled.\r\n *\r\n * @param value Ellipsis string\r\n * @default \"...\"\r\n */\n set: function (value) {\n this.setPropertyValue(\"ellipsis\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"selectable\", {\n /**\r\n * @return Text selectable?\r\n */\n get: function () {\n return this.getPropertyValue(\"selectable\");\n },\n /**\r\n * Forces the text to be selectable. This setting will be ignored if the\r\n * object has some kind of interaction attached to it, such as it is\r\n * `draggable`, `swipeable`, `resizable`.\r\n *\r\n * @param value Text selectable?\r\n * @default false\r\n */\n set: function (value) {\n this.setPropertyValue(\"selectable\", value, true);\n this.setStyles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"textAlign\", {\n /**\r\n * @return Alignment\r\n */\n get: function () {\n return this.getPropertyValue(\"textAlign\");\n },\n /**\r\n * Horizontal text alignment.\r\n *\r\n * Available choices:\r\n * * \"start\"\r\n * * \"middle\"\r\n * * \"end\"\r\n *\r\n * @param value Alignment\r\n */\n set: function (value) {\n this.setPropertyValue(\"textAlign\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"textValign\", {\n /**\r\n * @ignore Exclude from docs (not used)\r\n * @return Alignment\r\n * @deprecated\r\n */\n get: function () {\n return this.getPropertyValue(\"textValign\");\n },\n /**\r\n * Vertical text alignment.\r\n *\r\n * @ignore Exclude from docs (not used)\r\n * @param value Alignment\r\n * @deprecated\r\n */\n set: function (value) {\n this.setPropertyValue(\"textValign\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"html\", {\n /**\r\n * @return HTML content\r\n */\n get: function () {\n return this.getPropertyValue(\"html\");\n },\n /**\r\n * Raw HTML to be used as text.\r\n *\r\n * NOTE: HTML text is subject to browser support. It relies on browsers\r\n * supporting SVG `foreignObject` nodes. Some browsers (read IEs) do not\r\n * support it. On those browsers, the text will fall back to basic SVG text,\r\n * striping out all HTML markup and styling that goes with it.\r\n *\r\n * For more information about `foreignObject` and its browser compatibility\r\n * refer to [this page](https://developer.mozilla.org/en/docs/Web/SVG/Element/foreignObject#Browser_compatibility).\r\n *\r\n * @param value HTML text\r\n */\n set: function (value) {\n this.setPropertyValue(\"html\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"hideOversized\", {\n /**\r\n * @return Hide if text does not fit?\r\n */\n get: function () {\n return this.getPropertyValue(\"hideOversized\");\n },\n /**\r\n * Indicates whether the whole text should be hidden if it does not fit into\r\n * its allotted space.\r\n *\r\n * @param value Hide if text does not fit?\r\n */\n set: function (value) {\n this.setPropertyValue(\"hideOversized\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"ignoreFormatting\", {\n /**\r\n * @return Ignore formatting?\r\n */\n get: function () {\n return this.getPropertyValue(\"ignoreFormatting\");\n },\n /**\r\n * If set to `true` square-bracket formatting blocks will be treated as\r\n * regular text.\r\n *\r\n * @default false\r\n * @param value Ignore formatting?\r\n */\n set: function (value) {\n this.setPropertyValue(\"ignoreFormatting\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Override `mesaureElement` so it does not get measure again, because\r\n * internal `_bbox` is being updated by measuring routines in Text itself.\r\n */\n Label.prototype.measureElement = function () {};\n /**\r\n * Returns information about a line element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param index Line index\r\n * @return Line info object\r\n */\n Label.prototype.getLineInfo = function (index) {\n this.initLineCache();\n var lines = this.getCache(\"lineInfo\");\n return lines.length > index ? lines[index] : undefined;\n };\n /**\r\n * Adds a line to line info cache.\r\n *\r\n * @ignore Exclude from docs\r\n * @param line Line info object\r\n * @param index Insert at specified index\r\n */\n Label.prototype.addLineInfo = function (line, index) {\n this.initLineCache();\n this.getCache(\"lineInfo\")[index] = line;\n };\n /**\r\n * Checks if line cache is initialized and initializes it.\r\n */\n Label.prototype.initLineCache = function () {\n if (!$type.hasValue(this.getCache(\"lineInfo\"))) {\n this.setCache(\"lineInfo\", [], 0);\n }\n };\n /**\r\n * Sets a [[DataItem]] to use for populating dynamic sections of the text.\r\n *\r\n * Check the description for [[Text]] class, for data binding.\r\n *\r\n * @param dataItem Data item\r\n */\n Label.prototype.setDataItem = function (dataItem) {\n if (this._sourceDataItemEvents) {\n this._sourceDataItemEvents.dispose();\n }\n if (dataItem) {\n this._sourceDataItemEvents = new MultiDisposer([dataItem.events.on(\"valuechanged\", this.invalidate, this, false), dataItem.events.on(\"workingvaluechanged\", this.invalidate, this, false), dataItem.events.on(\"calculatedvaluechanged\", this.invalidate, this, false), dataItem.events.on(\"propertychanged\", this.invalidate, this, false)]);\n }\n _super.prototype.setDataItem.call(this, dataItem);\n };\n Object.defineProperty(Label.prototype, \"availableWidth\", {\n /**\r\n * Returns available horizontal space.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Available width (px)\r\n */\n get: function () {\n return $type.hasValue(this.maxWidth) ? this.maxWidth : this.pixelWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Label.prototype, \"availableHeight\", {\n /**\r\n * Returns available vertical space.\r\n *\r\n * @return Available height (px)\r\n */\n get: function () {\n return $type.hasValue(this.maxHeight) ? this.maxHeight : this.pixelHeight;\n },\n enumerable: true,\n configurable: true\n });\n // temp, replacing textFormatter method\n Label.prototype.getSvgElement = function (text, style, parent) {\n var element = this.paper.add(\"tspan\");\n element.textContent = text;\n if (style) {\n if (options.nonce && parent) {\n //element.node.setAttribute(\"nonce\", \"test123\");\n var classid = \"amcharts_element_style_\" + btoa(style).replace(/[^\\w]*/g, \"\");\n element.node.setAttribute(\"class\", classid);\n var defs = document.createElementNS($dom.SVGNS, \"defs\");\n parent.node.appendChild(defs);\n var e = document.createElement(\"style\");\n e.type = \"text/css\";\n e.innerHTML = \".\" + classid + \" { \" + style + \"}\";\n e.setAttribute(\"nonce\", options.nonce);\n defs.appendChild(e);\n } else {\n element.node.setAttribute(\"style\", style);\n }\n }\n if (parent) {\n parent.add(element);\n }\n return element;\n };\n /**\r\n * Invalidates the whole element, including layout AND all its child\r\n * elements.\r\n */\n Label.prototype.deepInvalidate = function () {\n _super.prototype.deepInvalidate.call(this);\n this.hardInvalidate();\n };\n Object.defineProperty(Label.prototype, \"readerTitle\", {\n /**\r\n * @return Title\r\n */\n get: function () {\n var title = this.getPropertyValue(\"readerTitle\");\n if (!title) {\n title = this.populateString($utils.plainText($utils.isNotEmpty(this.html) ? this.html : this.text));\n } else if (this.dataItem) {\n title = this.populateString(title);\n }\n return title;\n },\n /**\r\n * Screen reader title of the element.\r\n *\r\n * @param value Title\r\n */\n set: function (value) {\n value = $type.toText(value);\n if (this.setPropertyValue(\"readerTitle\", value)) {\n this.applyAccessibility();\n }\n },\n enumerable: true,\n configurable: true\n });\n return Label;\n}(Container);\nexport { Label };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Label\"] = Label;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Hide labels added directly to chart, like titles if chart is short.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXS,\n state: function (target, stateId) {\n if (target instanceof Label && target.parent && target.parent.isBaseSprite) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Label.js.map","/**\r\n * Rounded rectangle module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport * as $math from \"../utils/Math\";\nimport * as $type from \"../utils/Type\";\nimport * as $utils from \"../utils/Utils\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link IRoundedRectangleEvents} for a list of available events\r\n * @see {@link IRoundedRectangleAdapters} for a list of available Adapters\r\n */\nvar RoundedRectangle = /** @class */function (_super) {\n __extends(RoundedRectangle, _super);\n /**\r\n * Constructor\r\n */\n function RoundedRectangle() {\n var _this = _super.call(this) || this;\n _this.className = \"RoundedRectangle\";\n _this.element = _this.paper.add(\"path\");\n _this.cornerRadius(3, 3, 3, 3);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RoundedRectangle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.innerWidth;\n var h = this.innerHeight;\n if ($type.isNumber(w) && $type.isNumber(h)) {\n var minSide = $math.min(w, h) / 2;\n var cornerRadiusTopLeft = $utils.relativeToValue(this.cornerRadiusTopLeft, minSide);\n var cornerRadiusTopRight = $utils.relativeToValue(this.cornerRadiusTopRight, minSide);\n var cornerRadiusBottomRight = $utils.relativeToValue(this.cornerRadiusBottomRight, minSide);\n var cornerRadiusBottomLeft = $utils.relativeToValue(this.cornerRadiusBottomLeft, minSide);\n var maxcr = $math.min(Math.abs(w / 2), Math.abs(h / 2));\n var crtl = $math.fitToRange(cornerRadiusTopLeft, 0, maxcr);\n var crtr = $math.fitToRange(cornerRadiusTopRight, 0, maxcr);\n var crbr = $math.fitToRange(cornerRadiusBottomRight, 0, maxcr);\n var crbl = $math.fitToRange(cornerRadiusBottomLeft, 0, maxcr);\n var lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\n var lineB = \" L\" + crbl + \",\" + h;\n var lineL = \" L0,\" + crtl;\n var lineR = \" L\" + w + \",\" + (h - crbr);\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\n var path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL + \" Z\";\n this.path = path;\n }\n };\n /**\r\n * Sets radius for all four corners at ones.\r\n *\r\n * All numbers are in pixels.\r\n *\r\n * @param tl Top-left corner\r\n * @param tr Top-right corner\r\n * @param bl Bottom-left corner\r\n * @param br Bottom-right corner\r\n */\n RoundedRectangle.prototype.cornerRadius = function (tl, tr, bl, br) {\n this.cornerRadiusTopLeft = tl;\n this.cornerRadiusTopRight = tr;\n this.cornerRadiusBottomLeft = bl;\n this.cornerRadiusBottomRight = br;\n };\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopLeft\", {\n /**\r\n * @return Radius (px or Percent)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadiusTopLeft\");\n },\n /**\r\n * Radius of the top-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\n set: function (value) {\n this.setPercentProperty(\"cornerRadiusTopLeft\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusTopRight\", {\n /**\r\n * @return Radius (px or Percent)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadiusTopRight\");\n },\n /**\r\n * Radius of the top-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\n set: function (value) {\n this.setPercentProperty(\"cornerRadiusTopRight\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomRight\", {\n /**\r\n * @return Radius (px or Percent)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadiusBottomRight\");\n },\n /**\r\n * Radius of the bottom-right corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\n set: function (value) {\n this.setPercentProperty(\"cornerRadiusBottomRight\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RoundedRectangle.prototype, \"cornerRadiusBottomLeft\", {\n /**\r\n * @return Radius (px or Percent)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadiusBottomLeft\");\n },\n /**\r\n * Radius of the bottom-left corner in pixels.\r\n *\r\n * @default 3\r\n * @param value Radius (px or Percent)\r\n */\n set: function (value) {\n this.setPercentProperty(\"cornerRadiusBottomLeft\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Measures the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RoundedRectangle.prototype.measureElement = function () {};\n Object.defineProperty(RoundedRectangle.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n if (this.isMeasured) {\n return {\n x: 0,\n y: 0,\n width: this.innerWidth,\n height: this.innerHeight\n };\n } else {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n },\n enumerable: true,\n configurable: true\n });\n return RoundedRectangle;\n}(Sprite);\nexport { RoundedRectangle };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RoundedRectangle\"] = RoundedRectangle;\n//# sourceMappingURL=RoundedRectangle.js.map","/**\r\n * Functionality for drawing simple buttons.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { Label } from \"./Label\";\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Button class is capable of drawing a simple rectangular button with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link IButtonEvents} for a list of available events\r\n * @see {@link IButtonAdapters} for a list of available Adapters\r\n */\nvar Button = /** @class */function (_super) {\n __extends(Button, _super);\n /**\r\n * Constructor\r\n */\n function Button() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"Button\";\n _this.tooltipY = 0;\n // Set defaults\n _this.iconPosition = \"left\";\n _this.layout = \"horizontal\";\n _this.contentAlign = \"center\";\n _this.contentValign = \"middle\";\n _this.padding(8, 16, 8, 16);\n _this.setStateOnChildren = true;\n var interfaceColors = new InterfaceColorSet();\n // Create background\n var background = _this.background;\n background.fill = interfaceColors.getFor(\"secondaryButton\");\n background.stroke = interfaceColors.getFor(\"secondaryButtonStroke\");\n background.fillOpacity = 1;\n background.strokeOpacity = 1;\n background.cornerRadius(3, 3, 3, 3);\n // Create the label element\n _this.label = new Label();\n _this.label.fill = interfaceColors.getFor(\"secondaryButtonText\");\n ;\n _this.label.shouldClone = false;\n // Create default states\n var hoverState = background.states.create(\"hover\");\n hoverState.properties.fillOpacity = 1;\n hoverState.properties.fill = interfaceColors.getFor(\"secondaryButtonHover\");\n var downState = background.states.create(\"down\");\n downState.transitionDuration = 100;\n downState.properties.fill = interfaceColors.getFor(\"secondaryButtonDown\");\n downState.properties.fillOpacity = 1;\n // Set up accessibility\n // A button should be always focusable\n _this.role = \"button\";\n _this.focusable = true;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Button.prototype, \"icon\", {\n /**\r\n * @return Icon Sprite\r\n */\n get: function () {\n return this._icon;\n },\n /**\r\n * A [[Sprite]] to be used as an icon on button.\r\n *\r\n * @param icon Icon Sprite\r\n */\n set: function (icon) {\n var currentIcon = this._icon;\n if (currentIcon) {\n //this._icon.dispose();\n //this.removeDispose(currentIcon);\n currentIcon.parent = undefined;\n }\n if (icon) {\n this._icon = icon;\n icon.parent = this;\n icon.interactionsEnabled = false;\n icon.shouldClone = false;\n this.iconPosition = this.iconPosition;\n this._disposers.push(icon);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"iconPosition\", {\n /**\r\n * @return Icon position\r\n */\n get: function () {\n return this.getPropertyValue(\"iconPosition\");\n },\n /**\r\n * Icon position: \"left\" or \"right\".\r\n *\r\n * @default \"left\"\r\n * @param position Icon position\r\n */\n set: function (position) {\n this.setPropertyValue(\"iconPosition\", position);\n if (this.icon) {\n if (position == \"left\") {\n this.icon.toBack();\n } else {\n this.icon.toFront();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"label\", {\n /**\r\n * @return Label element\r\n */\n get: function () {\n return this._label;\n },\n /**\r\n * [[Label]] element to be used for text.\r\n *\r\n * @param label element\r\n */\n set: function (label) {\n if (this._label) {\n //this._label.dispose();\n this.removeDispose(this._label);\n }\n this._label = label;\n if (label) {\n label.parent = this;\n label.interactionsEnabled = false;\n this._disposers.push(this._label);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates a background element for the button.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background element\r\n */\n Button.prototype.createBackground = function () {\n return new RoundedRectangle();\n };\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\n Button.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (source.label) {\n this.label.copyFrom(source.label);\n }\n if (source.icon) {\n this.icon = source.icon.clone();\n }\n };\n return Button;\n}(Container);\nexport { Button };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Button\"] = Button;\n//# sourceMappingURL=Button.js.map","/**\r\n * Functionality for drawing circles.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { percent } from \"../utils/Percent\";\nimport { registry } from \"../Registry\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to create a circle\r\n * @see {@link ICircleEvents} for a list of available events\r\n * @see {@link ICircleAdapters} for a list of available Adapters\r\n */\nvar Circle = /** @class */function (_super) {\n __extends(Circle, _super);\n /**\r\n * Constructor\r\n */\n function Circle() {\n var _this = _super.call(this) || this;\n _this.className = \"Circle\";\n _this.element = _this.paper.add(\"circle\");\n _this.setPercentProperty(\"radius\", percent(100));\n _this.setPropertyValue(\"horizontalCenter\", \"middle\");\n _this.setPropertyValue(\"verticalCenter\", \"middle\");\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the circle.\r\n */\n Circle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n this.element.attr({\n \"r\": this.pixelRadius\n });\n };\n Object.defineProperty(Circle.prototype, \"radius\", {\n /**\r\n * @return Radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Radius of the circle.\r\n *\r\n * Can be either absolute (pixels) or relative ([Percent]).\r\n *\r\n * @param value Radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Circle.prototype, \"pixelRadius\", {\n /**\r\n * Radius of the circle in pixels.\r\n *\r\n * This is a read-only property. To set radius in pixels, use `radius`\r\n * property.\r\n *\r\n * @readonly\r\n * @return Radius (px)\r\n */\n get: function () {\n return $utils.relativeToValue(this.radius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates bounding box.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Circle.prototype.measureElement = function () {\n var pixelRadius = this.pixelRadius;\n this._bbox = {\n x: -pixelRadius,\n y: -pixelRadius,\n width: pixelRadius * 2,\n height: pixelRadius * 2\n };\n };\n return Circle;\n}(Sprite);\nexport { Circle };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Circle\"] = Circle;\n//# sourceMappingURL=Circle.js.map","/**\r\n * Ellipse module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Circle } from \"./Circle\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws an ellipse\r\n * @see {@link IEllipseEvents} for a list of available events\r\n * @see {@link IEllipseAdapters} for a list of available Adapters\r\n */\nvar Ellipse = /** @class */function (_super) {\n __extends(Ellipse, _super);\n /**\r\n * Constructor\r\n */\n function Ellipse() {\n var _this = _super.call(this) || this;\n _this.className = \"Ellipse\";\n _this.element = _this.paper.add(\"ellipse\");\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the ellipsis.\r\n */\n Ellipse.prototype.draw = function () {\n _super.prototype.draw.call(this);\n this.element.attr({\n \"rx\": this.radius\n });\n this.element.attr({\n \"ry\": this.radiusY\n });\n };\n Object.defineProperty(Ellipse.prototype, \"radiusY\", {\n /**\r\n * @return Vertical radius\r\n */\n get: function () {\n return this.innerHeight / 2;\n },\n /**\r\n * Vertical radius.\r\n *\r\n * It's a relative size to the `radius`.\r\n *\r\n * E.g. 0.8 will mean the height of the ellipsis will be 80% of it's\r\n * horizontal radius.\r\n *\r\n * @param value Vertical radius\r\n */\n set: function (value) {\n this.height = value * 2;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Ellipse.prototype, \"radius\", {\n /**\r\n * @return Horizontal radius\r\n */\n get: function () {\n return this.innerWidth / 2;\n },\n /**\r\n * Horizontal radius.\r\n *\r\n * @param value Horizontal radius\r\n */\n set: function (value) {\n this.width = value * 2;\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return Ellipse;\n}(Circle);\nexport { Ellipse };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Ellipse\"] = Ellipse;\n//# sourceMappingURL=Ellipse.js.map","/**\r\n * Functionality for adding images in SVG tree.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport * as $dom from \"../utils/DOM\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to add `<image>` elements to SVG.\r\n *\r\n * @see {@link IImageEvents} for a list of available events\r\n * @see {@link IImageAdapters} for a list of available Adapters\r\n */\nvar Image = /** @class */function (_super) {\n __extends(Image, _super);\n /**\r\n * Constructor\r\n */\n function Image() {\n var _this = _super.call(this) || this;\n _this.className = \"Image\";\n _this.element = _this.paper.add(\"image\");\n _this.applyTheme();\n _this.width = 50;\n _this.height = 50;\n return _this;\n }\n /**\r\n * Draws an `<image>` element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Image.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this.href) {\n var width = this.innerWidth;\n var height = this.innerHeight;\n if ($type.isNumber(this.widthRatio)) {\n width = height * this.widthRatio;\n this.width = width;\n }\n if ($type.isNumber(this.heightRatio)) {\n height = width * this.heightRatio;\n this.height = height;\n }\n this.element.attr({\n \"width\": width,\n \"height\": height\n });\n this.element.attrNS($dom.XLINK, \"xlink:href\", this.href);\n }\n };\n Object.defineProperty(Image.prototype, \"href\", {\n /**\r\n * @return Image URI\r\n */\n get: function () {\n return this.getPropertyValue(\"href\");\n },\n /**\r\n * An image URI.\r\n *\r\n * @param value Image URI\r\n */\n set: function (value) {\n this.setPropertyValue(\"href\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Image.prototype, \"widthRatio\", {\n /**\r\n * @return Ratio\r\n */\n get: function () {\n return this.getPropertyValue(\"widthRatio\");\n },\n /**\r\n * Sets image `width` relatively to its `height`.\r\n *\r\n * If image's `height = 100` and `widthRatio = 0.5` the actual width will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\n set: function (value) {\n this.setPropertyValue(\"widthRatio\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Image.prototype, \"heightRatio\", {\n /**\r\n * @return Ratio\r\n */\n get: function () {\n return this.getPropertyValue(\"heightRatio\");\n },\n /**\r\n * Sets image `height` relatively to its `width`.\r\n *\r\n * If image's `width = 100` and `heightRatio = 0.5` the actual height will be\r\n * `50`.\r\n *\r\n * @param value Ratio\r\n */\n set: function (value) {\n this.setPropertyValue(\"heightRatio\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Image.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n return {\n x: 0,\n y: 0,\n width: this.pixelWidth,\n height: this.pixelHeight\n };\n },\n enumerable: true,\n configurable: true\n });\n return Image;\n}(Sprite);\nexport { Image };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Image\"] = Image;\n//# sourceMappingURL=Image.js.map","/**\r\n * Line drawing functionality.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { color } from \"../utils/Color\";\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\nimport { registry } from \"../Registry\";\nimport * as $type from \"../utils/Type\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link ILineEvents} for a list of available events\r\n * @see {@link ILineAdapters} for a list of available Adapters\r\n */\nvar Line = /** @class */function (_super) {\n __extends(Line, _super);\n /**\r\n * Constructor\r\n */\n function Line() {\n var _this = _super.call(this) || this;\n _this.className = \"Line\";\n _this.element = _this.paper.add(\"line\");\n _this.fill = color(); //\"none\";\n _this.x1 = 0;\n _this.y1 = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the line.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Line.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this.x1 == this.x2 || this.y1 == this.y2) {\n this.pixelPerfect = true;\n } else {\n this.pixelPerfect = false;\n }\n this.x1 = this.x1;\n this.x2 = this.x2;\n this.y1 = this.y1;\n this.y2 = this.y2;\n };\n Object.defineProperty(Line.prototype, \"x1\", {\n /**\r\n * @return X\r\n */\n get: function () {\n return this.getPropertyValue(\"x1\");\n },\n /**\r\n * X coordinate of first end.\r\n *\r\n * @param value X\r\n */\n set: function (value) {\n if (!$type.isNumber(value)) {\n value = 0;\n }\n var delta = 0;\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\n delta = 0.00001;\n }\n this.setPropertyValue(\"x1\", value, true);\n this.element.attr({\n \"x1\": value + delta\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"x2\", {\n /**\r\n * @return X\r\n */\n get: function () {\n var value = this.getPropertyValue(\"x2\");\n if (!$type.isNumber(value)) {\n value = this.pixelWidth;\n }\n return value;\n },\n /**\r\n * X coordinate of second end.\r\n *\r\n * @param value X\r\n */\n set: function (value) {\n if (!$type.isNumber(value)) {\n value = 0;\n }\n this.setPropertyValue(\"x2\", value, true);\n this.element.attr({\n \"x2\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y1\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n return this.getPropertyValue(\"y1\");\n },\n /**\r\n * Y coordinate of first end.\r\n *\r\n * @param value Y\r\n */\n set: function (value) {\n if (!$type.isNumber(value)) {\n value = 0;\n }\n var delta = 0;\n if (this.pixelPerfect && this.stroke instanceof LinearGradient) {\n delta = 0.00001;\n }\n this.setPropertyValue(\"y1\", value, true);\n this.element.attr({\n \"y1\": value + delta\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y2\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n var value = this.getPropertyValue(\"y2\");\n if (!$type.isNumber(value)) {\n value = this.pixelHeight;\n }\n return value;\n },\n /**\r\n * Y coordinate of second end.\r\n *\r\n * @param value Y\r\n */\n set: function (value) {\n if (!$type.isNumber(value)) {\n value = 0;\n }\n this.setPropertyValue(\"y2\", value, true);\n this.element.attr({\n \"y2\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\n Line.prototype.positionToPoint = function (position) {\n var point1 = {\n x: this.x1,\n y: this.y1\n };\n var point2 = {\n x: this.x2,\n y: this.y2\n };\n var point = $math.getMidPoint(point1, point2, position);\n var angle = $math.getAngle(point1, point2);\n return {\n x: point.x,\n y: point.y,\n angle: angle\n };\n };\n return Line;\n}(Sprite);\nexport { Line };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Line\"] = Line;\n//# sourceMappingURL=Line.js.map","/**\r\n * Pointed shape module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a shape with a pointer.\r\n *\r\n * @see {@link IPointedShapeEvents} for a list of available events\r\n * @see {@link IPointedShapeAdapters} for a list of available Adapters\r\n */\nvar PointedShape = /** @class */function (_super) {\n __extends(PointedShape, _super);\n /**\r\n * Constructor\r\n */\n function PointedShape() {\n var _this = _super.call(this) || this;\n _this.className = \"PointedShape\";\n _this.pointerBaseWidth = 15;\n _this.pointerLength = 10;\n _this.pointerY = 0;\n _this.pointerX = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PointedShape.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (!$type.isNumber(this.pointerX)) {\n this.pointerX = this.pixelWidth / 2;\n }\n if (!$type.isNumber(this.pointerY)) {\n this.pointerY = this.pixelHeight + 10;\n }\n };\n Object.defineProperty(PointedShape.prototype, \"pointerBaseWidth\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"pointerBaseWidth\");\n },\n /**\r\n * A width of the pinter's (stem's) thick end (base) in pixels.\r\n *\r\n * @default 15\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"pointerBaseWidth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PointedShape.prototype, \"pointerLength\", {\n /**\r\n * @return Length (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"pointerLength\");\n },\n /**\r\n * A length of the pinter (stem) in pixels.\r\n *\r\n * @default 10\r\n * @param value Length (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"pointerLength\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PointedShape.prototype, \"pointerX\", {\n /**\r\n * @return X\r\n */\n get: function () {\n return this.getPropertyValue(\"pointerX\");\n },\n /**\r\n * X coordinate the shape is pointing to.\r\n *\r\n * @param value X\r\n */\n set: function (value) {\n this.setPropertyValue(\"pointerX\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PointedShape.prototype, \"pointerY\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n return this.getPropertyValue(\"pointerY\");\n },\n /**\r\n * Y coordinate the shape is pointing to.\r\n *\r\n * @param value Y\r\n */\n set: function (value) {\n this.setPropertyValue(\"pointerY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return PointedShape;\n}(Sprite);\nexport { PointedShape };\n//# sourceMappingURL=PointedShape.js.map","/**\r\n * Pointed rectangle module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PointedShape } from \"./PointedShape\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link IPointedRectangleEvents} for a list of available events\r\n * @see {@link IPointedRectangleAdapters} for a list of available Adapters\r\n */\nvar PointedRectangle = /** @class */function (_super) {\n __extends(PointedRectangle, _super);\n /**\r\n * Constructor\r\n */\n function PointedRectangle() {\n var _this = _super.call(this) || this;\n _this.className = \"PointedRectangle\";\n _this.element = _this.paper.add(\"path\");\n _this.cornerRadius = 6;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PointedRectangle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var cr = this.cornerRadius;\n var w = this.innerWidth;\n var h = this.innerHeight;\n if (w > 0 && h > 0) {\n var x = this.pointerX;\n var y = this.pointerY;\n var bwh = this.pointerBaseWidth / 2;\n var maxcr = $math.min(w / 2, h / 2);\n var crtl = $math.fitToRange(cr, 0, maxcr);\n var crtr = $math.fitToRange(cr, 0, maxcr);\n var crbr = $math.fitToRange(cr, 0, maxcr);\n var crbl = $math.fitToRange(cr, 0, maxcr);\n // corner coordinates\n // top left\n var xtl = 0;\n var ytl = 0;\n // top right\n var xtr = w;\n var ytr = 0;\n // bottom right\n var xbr = w;\n var ybr = h;\n // bottom left\n var xbl = 0;\n var ybl = h;\n var lineT = void 0;\n var lineR = void 0;\n var lineB = void 0;\n var lineL = void 0;\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\n var d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\n var d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\n // top\n if (d1 > 0 && d2 > 0) {\n var stemX = $math.fitToRange(x, crtl + bwh, w - bwh - crtr);\n y = $math.fitToRange(y, -Infinity, 0);\n lineT = \"M\" + crtl + \",0 L\" + (stemX - bwh) + \",0 L\" + x + \",\" + y + \" L\" + (stemX + bwh) + \",0 L\" + (w - crtr) + \",0\";\n } else {\n lineT = \"M\" + crtl + \",0 L\" + (w - crtr) + \",0\";\n }\n // bottom\n if (d1 < 0 && d2 < 0) {\n var stemX = $math.fitToRange(x, crbl + bwh, w - bwh - crbr);\n y = $math.fitToRange(y, h, Infinity);\n lineB = \" L\" + (w - crbr) + \",\" + h + \" L\" + (stemX + bwh) + \",\" + h + \" L\" + x + \",\" + y + \" L\" + (stemX - bwh) + \",\" + h + \" L\" + crbl + \",\" + h;\n } else {\n lineB = \" L\" + crbl + \",\" + h;\n }\n // left\n if (d1 < 0 && d2 > 0) {\n var stemY = $math.fitToRange(y, crtl + bwh, h - crbl - bwh);\n x = $math.fitToRange(x, -Infinity, 0);\n lineL = \" L0,\" + (h - crbl) + \" L0,\" + (stemY + bwh) + \" L\" + x + \",\" + y + \" L0,\" + (stemY - bwh) + \" L0,\" + crtl;\n } else {\n lineL = \" L0,\" + crtl;\n }\n // right\n if (d1 > 0 && d2 < 0) {\n var stemY = $math.fitToRange(y, crtr + bwh, h - bwh - crbr);\n x = $math.fitToRange(x, w, Infinity);\n lineR = \" L\" + w + \",\" + crtr + \" L\" + w + \",\" + (stemY - bwh) + \" L\" + x + \",\" + y + \" L\" + w + \",\" + (stemY + bwh) + \" L\" + w + \",\" + (h - crbr);\n } else {\n lineR = \" L\" + w + \",\" + (h - crbr);\n }\n var arcTR = \" a\" + crtr + \",\" + crtr + \" 0 0 1 \" + crtr + \",\" + crtr;\n var arcBR = \" a\" + crbr + \",\" + crbr + \" 0 0 1 -\" + crbr + \",\" + crbr;\n var arcBL = \" a\" + crbl + \",\" + crbl + \" 0 0 1 -\" + crbl + \",-\" + crbl;\n var arcTL = \" a\" + crtl + \",\" + crtl + \" 0 0 1 \" + crtl + \",-\" + crtl;\n this.path = lineT + arcTR + lineR + arcBR + lineB + arcBL + lineL + arcTL;\n }\n };\n Object.defineProperty(PointedRectangle.prototype, \"cornerRadius\", {\n /**\r\n * @return Corner radius (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadius\");\n },\n /**\r\n * Radius of rectangle's border in pixels.\r\n *\r\n * @default 0\r\n * @param value Corner radius (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"cornerRadius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return PointedRectangle;\n}(PointedShape);\nexport { PointedRectangle };\n//# sourceMappingURL=PointedRectangle.js.map","/**\r\n * A collection of functions that deals with path calculations.\r\n */\nimport * as $math from \"../utils/Math\";\nimport * as $type from \"../utils/Type\";\nimport { getGhostPaper } from \"../rendering/Paper\";\nimport { options } from \"../Options\";\n/**\r\n * ============================================================================\r\n * PATH FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns an SVG path from a number of points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points An array of line elbow points\r\n * @return SVG path\r\n */\nexport function polyline(points) {\n var path = lineTo(points[0]);\n var prevPoint = {\n x: 0,\n y: 0\n };\n var minStep = options.minPolylineStep;\n if (!$type.isNumber(minStep)) {\n minStep = 0.5;\n }\n for (var i = 0, len = points.length; i < len; i++) {\n var point = points[i];\n if ($math.getDistance(point, prevPoint) > minStep) {\n path += lineTo(point);\n prevPoint = point;\n }\n }\n return path;\n}\n/**\r\n * Returns a starting point of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Starting point\r\n * @return SVG path\r\n */\nexport function moveTo(point) {\n return \" M\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\n}\n/**\r\n * Returns a line part of SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point SVG path\r\n * @return SVG path\r\n */\nexport function lineTo(point) {\n return \" L\" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4) + \" \";\n}\n/**\r\n * Returns a quadratic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPoint Control point\r\n * @return SVG path\r\n */\nexport function quadraticCurveTo(point, controlPoint) {\n return \" Q\" + $math.round(controlPoint.x, 4) + \",\" + $math.round(controlPoint.y, 4) + \" \" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4);\n}\n/**\r\n * Returns a cubic curve part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point End point of the curve\r\n * @param controlPointA Control point A\r\n * @param controlPointB Control point B\r\n * @return SVG path\r\n */\nexport function cubicCurveTo(point, controlPointA, controlPointB) {\n return \" C\" + $math.round(controlPointA.x, 4) + \",\" + $math.round(controlPointA.y, 4) + \" \" + $math.round(controlPointB.x, 4) + \",\" + $math.round(controlPointB.y, 4) + \" \" + $math.round(point.x, 4) + \",\" + $math.round(point.y, 4);\n}\n/**\r\n * Returns a terminator for an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @return SVG path\r\n */\nexport function closePath() {\n return \" Z\";\n}\n/**\r\n * Returns an arc part of an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Better parameter descriptions\r\n * @param startAngle Starting angle\r\n * @param arc Arc\r\n * @param radius Radius\r\n * @param radiusY Vertical radius\r\n * @return SVG path\r\n */\nexport function arcTo(startAngle, arc, radius, radiusY) {\n if (arc == 0) {\n return \"\";\n }\n if (!$type.isNumber(radiusY)) {\n radiusY = radius;\n }\n var path = \"\";\n var c = \",\";\n var segments = Math.ceil(Math.abs(arc) / 180);\n var l = 1;\n if (arc < 0) {\n l = 0;\n }\n // previous, as we use a not A\n var pax = 0;\n var pay = 0;\n // center\n var cx = -$math.cos(startAngle) * radius;\n var cy = -$math.sin(startAngle) * radiusY;\n // foir very short angles and big radius, solves artefacts\n if (arc < 0.5 && radius > 3000) {\n var endAngle = startAngle + arc;\n var ax = $math.round($math.cos(endAngle) * radius, 4);\n var ay = $math.round($math.sin(endAngle) * radiusY, 4);\n return lineTo({\n x: ax,\n y: ay\n });\n }\n for (var i = 0; i < segments; i++) {\n var endAngle = startAngle + arc / segments * (i + 1);\n var ax = $math.round($math.cos(endAngle) * radius + cx - pax, 4);\n var ay = $math.round($math.sin(endAngle) * radiusY + cy - pay, 4);\n path += \" a\" + radius + c + radiusY + c + 0 + c + 0 + c + l + c + ax + c + ay;\n pax = ax;\n pay = ay;\n }\n return path;\n}\n/**\r\n * Creates an arc path.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startAngle [description]\r\n * @param arc [description]\r\n * @param radius [description]\r\n * @param innerRadius [description]\r\n * @param radiusY [description]\r\n * @param cornerRadius [description]\r\n * @param innerCornerRadius [description]\r\n * @return SVG path\r\n */\nexport function arc(startAngle, arc, radius, innerRadius, radiusY, cornerRadius, innerCornerRadius) {\n if (arc == 0) {\n return \"\";\n }\n if (!$type.isNumber(innerRadius)) {\n innerRadius = 0;\n }\n if (radius == 0 && innerRadius <= 0) {\n return \"\";\n }\n if (radius < innerRadius) {\n var temp = radius;\n radius = innerRadius;\n innerRadius = temp;\n if ($type.isNumber(radiusY)) {\n radiusY = radiusY / innerRadius * radius;\n }\n }\n arc = $math.min(arc, 360);\n if (arc == 360) {\n cornerRadius = 0;\n innerCornerRadius = 0;\n }\n var endAngle = startAngle + arc;\n var crSin = $math.sin($math.min(arc, 45) / 2);\n radiusY = $type.isNumber(radiusY) ? radiusY : radius;\n cornerRadius = cornerRadius || 0;\n innerCornerRadius = $type.isNumber(innerCornerRadius) ? innerCornerRadius : cornerRadius;\n var innerRadiusY = radiusY / radius * innerRadius;\n var cornerRadiusY = radiusY / radius * cornerRadius;\n var innerCornerRadiusY = radiusY / radius * innerCornerRadius;\n cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\n cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\n innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\n innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\n cornerRadius = $math.round($math.fitToRange(cornerRadius, 0, radius * crSin), 4);\n cornerRadiusY = $math.round($math.fitToRange(cornerRadiusY, 0, radiusY * crSin), 4);\n innerCornerRadius = $math.round($math.fitToRange(innerCornerRadius, 0, innerRadius * crSin), 4);\n innerCornerRadiusY = $math.round($math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin), 4);\n var crAngle = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\n var crAngleY = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\n if (innerRadius < innerCornerRadius) {\n innerRadius = innerCornerRadius;\n }\n if (innerRadiusY < innerCornerRadiusY) {\n innerRadiusY = innerCornerRadiusY;\n }\n var crInnerAngle = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\n var crInnerAngleY = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\n if (!$type.isNumber(crInnerAngle)) {\n crInnerAngle = 0;\n }\n if (!$type.isNumber(crInnerAngleY)) {\n crInnerAngleY = 0;\n }\n var middleAngle = startAngle + arc / 2;\n var mPoint = {\n x: $math.round($math.cos(middleAngle) * innerRadius, 4),\n y: $math.sin(middleAngle) * innerRadiusY\n };\n var a0 = {\n x: $math.cos(startAngle) * (innerRadius + innerCornerRadius),\n y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY)\n };\n var b0 = {\n x: $math.cos(startAngle) * (radius - cornerRadius),\n y: $math.sin(startAngle) * (radiusY - cornerRadiusY)\n };\n var c0 = {\n x: $math.cos(endAngle) * (radius - cornerRadius),\n y: $math.sin(endAngle) * (radiusY - cornerRadiusY)\n };\n var d0 = {\n x: $math.cos(endAngle) * (innerRadius + innerCornerRadius),\n y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY)\n };\n var b1 = {\n x: $math.cos(startAngle + crAngle) * radius,\n y: $math.sin(startAngle + crAngleY) * radiusY\n };\n var d1 = {\n x: $math.cos(endAngle - crInnerAngle) * innerRadius,\n y: $math.sin(endAngle - crInnerAngleY) * innerRadiusY\n };\n // some magic math\n innerCornerRadius += innerCornerRadius * $math.sin(crInnerAngle / 2);\n innerCornerRadiusY += innerCornerRadiusY * $math.sin(crInnerAngleY / 2);\n if (crInnerAngle > (endAngle - startAngle) / 2) {\n d1 = mPoint;\n }\n var path = \"\";\n // start from b if this is full circle\n if (arc == 360) {\n path = moveTo(b0);\n }\n // otherwise start from a\n else {\n path = moveTo(a0);\n path += lineTo(b0);\n path += arcToPoint(b1, cornerRadius, cornerRadiusY, true);\n }\n // draw arc\n path += arcTo(startAngle + crAngle, arc - 2 * crAngle, radius, radiusY);\n // draw inner arc\n if ($type.isNumber(innerRadius) && innerRadius != 0) {\n // move to B if this is full circle\n if (arc == 360 && cornerRadius == 0) {\n path += moveTo(d0);\n }\n // draw line otherwise\n else {\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\n path += lineTo(d0);\n path += arcToPoint(d1, innerCornerRadius, innerCornerRadiusY, true);\n }\n path += arcTo(endAngle - crInnerAngle, -(arc - 2 * crInnerAngle), innerRadius, innerRadiusY);\n if (arc < 360 || cornerRadius > 0) {\n path += arcToPoint(a0, innerCornerRadius, innerCornerRadiusY, true);\n }\n path += lineTo(a0);\n } else {\n path += arcToPoint(c0, cornerRadius, cornerRadiusY, true);\n if (arc < 360) {\n path += lineTo(a0);\n }\n }\n return path;\n}\n/**\r\n * Creates a path for an arc to specific coordinate.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Reference point\r\n * @param radius Radius\r\n * @param radiusY Vertical radius (for skewed arcs)\r\n * @param sweepFlag [description]\r\n * @param largeArcFlag [description]\r\n * @param xAxisRotation [description]\r\n * @return Arc path\r\n */\nexport function arcToPoint(point, radius, radiusY, sweepFlag, largeArcFlag, xAxisRotation) {\n if (radius == 0) {\n return \"\";\n }\n xAxisRotation = xAxisRotation || 0;\n largeArcFlag = Boolean(largeArcFlag);\n sweepFlag = Boolean(sweepFlag);\n var c = \",\";\n var sweepFlagValue = +sweepFlag; // converts to 1 or 0\n var largeArcFlagValue = +largeArcFlag; // converts to 1 or 0\n return \" A\" + radius + c + radiusY + c + xAxisRotation + c + largeArcFlagValue + c + sweepFlagValue + c + $math.round(point.x, 4) + c + $math.round(point.y, 4);\n}\n/**\r\n * Creates a new rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param x X position\r\n * @param y Y position\r\n * @return Rectangle\r\n */\nexport function rectangle(width, height, x, y) {\n if (!$type.isNumber(x)) {\n x = 0;\n }\n if (!$type.isNumber(y)) {\n y = 0;\n }\n return moveTo({\n x: x,\n y: y\n }) + lineTo({\n x: x + width,\n y: y\n }) + lineTo({\n x: x + width,\n y: y + height\n }) + lineTo({\n x: x,\n y: y + height\n }) + closePath();\n}\n/**\r\n * Converts a rectangle to an SVG path.\r\n *\r\n * @ignore Exclude from docs\r\n * @param rect Rectangle\r\n * @param ccw Counter-clockwise?\r\n * @return SVG path\r\n */\nexport function rectToPath(rect, ccw) {\n var c = \",\";\n var L = \" L\";\n if (ccw) {\n return \"M\" + rect.x + c + rect.y + L + rect.x + c + (rect.y + rect.height) + L + (rect.x + rect.width) + c + (rect.y + rect.height) + L + (rect.x + rect.width) + c + rect.y + L + rect.x + c + rect.y;\n } else {\n return \"M\" + rect.x + c + rect.y + L + (rect.x + rect.width) + c + rect.y + L + (rect.x + rect.width) + c + (rect.y + rect.height) + L + rect.x + c + (rect.y + rect.height) + L + rect.x + c + rect.y;\n }\n}\n/**\r\n * Converts SVG path to array of points.\r\n *\r\n * Note, this is experimental feature based on method which is deprecated\r\n * on some browsers and some browsers do not support it at all.\r\n *\r\n * You can save the output of this function, but not rely on it completely.\r\n */\nexport function pathToPoints(path, pointCount) {\n var paper = getGhostPaper();\n var svgPath = paper.add(\"path\").node;\n svgPath.setAttribute(\"d\", path);\n if (svgPath.getPointAtLength && svgPath.getTotalLength) {\n var length_1 = svgPath.getTotalLength();\n var toPoints = [];\n for (var i = 0; i < pointCount; i++) {\n var point = svgPath.getPointAtLength(i / pointCount * length_1);\n toPoints.push({\n x: point.x,\n y: point.y\n });\n }\n return toPoints;\n }\n svgPath.remove();\n}\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\n if (!$type.isNumber(startAngle)) {\n startAngle = 0;\n }\n if (!$type.isNumber(startAngle)) {\n endAngle = startAngle;\n }\n var r = innerRadius + 0.01;\n var angle = startAngle * $math.RADIANS;\n var points = [];\n while (r < radius + radiusStep) {\n var stepSize = step;\n if (stepSize / 2 > r) {\n stepSize = 2 * r;\n }\n angle += 2 * Math.asin(stepSize / 2 / r);\n if (angle * $math.DEGREES > endAngle + (radius - innerRadius) / radiusStep * 360) {\n break;\n }\n var degrees = angle * $math.DEGREES;\n var point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * radiusY / radius * Math.sin(angle)\n };\n points.push(point);\n r = innerRadius + degrees / 360 * radiusStep;\n }\n points.shift();\n return points;\n}\nexport function pointsToPath(points) {\n if (!points || points.length == 0) {\n return \"\";\n }\n var path = moveTo(points[0]);\n if (points && points.length > 0) {\n for (var i = 1; i < points.length; i++) {\n path += lineTo(points[i]);\n }\n }\n return path;\n}\n//# sourceMappingURL=Path.js.map","/**\r\n * Polyline module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { color } from \"../utils/Color\";\nimport { registry } from \"../Registry\";\nimport * as $path from \"../rendering/Path\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a polyline.\r\n *\r\n * @see {@link IPolylineEvents} for a list of available events\r\n * @see {@link IPolylineAdapters} for a list of available Adapters\r\n */\nvar Polyline = /** @class */function (_super) {\n __extends(Polyline, _super);\n /**\r\n * Constructor\r\n */\n function Polyline() {\n var _this = _super.call(this) || this;\n /**\r\n * [_distance description]\r\n *\r\n * @todo Description\r\n */\n _this._distance = 0;\n _this.className = \"Polyline\";\n _this.element = _this.paper.add(\"path\");\n _this.shapeRendering = \"auto\";\n _this.fill = color();\n _this.strokeOpacity = 1;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Polyline.prototype.makePath = function () {\n this._distance = 0;\n var segments = this.segments;\n if (segments && segments.length > 0) {\n var path = \"\";\n for (var i = 0, len = segments.length; i < len; i++) {\n var points = segments[i];\n if (points.length > 0) {\n path += $path.moveTo(points[0]);\n for (var p = 1; p < points.length; p++) {\n var point = points[p];\n path += $path.lineTo(point);\n this._distance += $math.getDistance(points[p - 1], point);\n }\n }\n }\n this.path = path;\n }\n this._realSegments = segments;\n };\n Object.defineProperty(Polyline.prototype, \"segments\", {\n /**\r\n * @return Segments\r\n */\n get: function () {\n return this.getPropertyValue(\"segments\");\n },\n /**\r\n * A list of segment coordinates for the multi-part line.\r\n *\r\n * @todo Example\r\n * @param segments Segments\r\n */\n set: function (segments) {\n this.setPropertyValue(\"segments\", segments);\n this.makePath();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Polyline.prototype, \"distance\", {\n /**\r\n * [distance description]\r\n *\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return this._distance;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\n Polyline.prototype.positionToPoint = function (position) {\n var deltaAngle = 0;\n if (position < 0) {\n position = Math.abs(position);\n deltaAngle = 180;\n }\n var segments = this._realSegments;\n if (segments) {\n var totalDistance = this.distance;\n var currentDistance = 0;\n var distanceAB = void 0;\n var positionA = 0;\n var positionB = 0;\n var pointA = void 0;\n var pointB = void 0;\n for (var s = 0; s < segments.length; s++) {\n var points = segments[s];\n if (points.length > 1) {\n for (var p = 1; p < points.length; p++) {\n pointA = points[p - 1];\n pointB = points[p];\n positionA = currentDistance / totalDistance;\n distanceAB = $math.getDistance(pointA, pointB);\n currentDistance += distanceAB;\n positionB = currentDistance / totalDistance;\n if (positionA <= position && positionB > position) {\n s = segments.length;\n break;\n }\n }\n } else if (points.length == 1) {\n pointA = points[0];\n pointB = points[0];\n positionA = 0;\n positionB = 1;\n }\n }\n if (pointA && pointB) {\n var positionAB = (position - positionA) / (positionB - positionA);\n var midPoint = $math.getMidPoint(pointA, pointB, positionAB);\n return {\n x: midPoint.x,\n y: midPoint.y,\n angle: deltaAngle + $math.getAngle(pointA, pointB)\n };\n }\n }\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n };\n Object.defineProperty(Polyline.prototype, \"realSegments\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n return this._realSegments;\n },\n enumerable: true,\n configurable: true\n });\n return Polyline;\n}(Sprite);\nexport { Polyline };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Polyline\"] = Polyline;\n//# sourceMappingURL=Polyline.js.map","/**\r\n * Module for a multi-part arched line.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Polyline } from \"./Polyline\";\nimport { registry } from \"../Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a multi-part arched line.\r\n *\r\n * @see {@link IPolyarcEvents} for a list of available events\r\n * @see {@link IPolyarcAdapters} for a list of available Adapters\r\n */\nvar Polyarc = /** @class */function (_super) {\n __extends(Polyarc, _super);\n /**\r\n * Constructor\r\n */\n function Polyarc() {\n var _this = _super.call(this) || this;\n _this.className = \"Polyarc\";\n _this.controlPointDistance = 0.5;\n _this.controlPointPosition = 0.5;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Polyarc.prototype.makePath = function () {\n this._distance = 0;\n var segments = this.segments;\n if (segments && segments.length > 0) {\n var path = \"\";\n this._realSegments = [];\n for (var i = 0, len = segments.length; i < len; i++) {\n var points = segments[i];\n var realPoints = [];\n this._realSegments.push(realPoints);\n if (points.length > 0) {\n path += $path.moveTo(points[0]);\n for (var p = 1; p < points.length; p++) {\n var pointA = points[p - 1];\n var pointB = points[p];\n var distanceAB = $math.getDistance(pointB, pointA);\n var cpDistance = distanceAB * this.controlPointDistance;\n var controlPointPosition = this.controlPointPosition;\n var angle = -$math.getAngle(pointA, pointB);\n var cpx = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 0.5 - cpDistance * $math.sin(angle);\n var cpy = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 0.5 - cpDistance * $math.cos(angle);\n var controlPoint1 = {\n x: cpx,\n y: cpy\n };\n var cpx2 = pointA.x + (pointB.x - pointA.x) * controlPointPosition * 1.5 - cpDistance * $math.sin(angle);\n var cpy2 = pointA.y + (pointB.y - pointA.y) * controlPointPosition * 1.5 - cpDistance * $math.cos(angle);\n var controlPoint2 = {\n x: cpx2,\n y: cpy2\n };\n path += $path.cubicCurveTo(pointB, controlPoint1, controlPoint2);\n // we add a lot of points in order to get the position/angle later\n var stepCount = Math.ceil(distanceAB);\n var prevPoint = pointA;\n if (stepCount > 0) {\n for (var i_1 = 0; i_1 <= stepCount; i_1++) {\n var point = $math.getPointOnCubicCurve(pointA, pointB, controlPoint1, controlPoint2, i_1 / stepCount);\n realPoints.push(point);\n this._distance += $math.getDistance(prevPoint, point);\n prevPoint = point;\n }\n } else {\n realPoints.push(pointA);\n }\n }\n }\n }\n this.path = path;\n }\n };\n Object.defineProperty(Polyarc.prototype, \"controlPointPosition\", {\n /**\r\n * @return Position (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"controlPointPosition\");\n },\n /**\r\n * Relative position along the line the control point is. (0-1)\r\n *\r\n * @default 0.5\r\n * @param value Position (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"controlPointPosition\", value);\n this.makePath();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Polyarc.prototype, \"controlPointDistance\", {\n /**\r\n * @return Distance (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"controlPointDistance\");\n },\n /**\r\n * Relative distance of the control point. (0-1)\r\n *\r\n * Default is half the length of the line. (0.5)\r\n *\r\n * @default 0.5\r\n * @param value Distance (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"controlPointDistance\", value);\n this.makePath();\n },\n enumerable: true,\n configurable: true\n });\n return Polyarc;\n}(Polyline);\nexport { Polyarc };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Polyarc\"] = Polyarc;\n//# sourceMappingURL=Polyarc.js.map","/**\r\n * Morpher module contains functionality that allows morphing one polygon to\r\n * another.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { Animation, AnimationDisposer } from \"../utils/Animation\";\nimport * as $math from \"../utils/Math\";\nimport * as $ease from \"../utils/Ease\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * Morpher can be used to morph one polygon to some other polygon.\r\n */\nvar Morpher = /** @class */function (_super) {\n __extends(Morpher, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param morphable An object to morph\r\n */\n function Morpher(morphable) {\n var _this = _super.call(this) || this;\n /**\r\n * A storage for measurements.\r\n */\n _this._bboxes = [];\n /**\r\n * Duration of the morphing animation in milliseconds.\r\n */\n _this.morphDuration = 800;\n /**\r\n * An easing function to use for morphing animation.\r\n *\r\n * @see {@link Ease}\r\n */\n _this.morphEasing = $ease.cubicOut;\n /**\r\n * If set to `true`, all separate parts of the multi-part polygon will\r\n * morph into a single circle or polygon when using built-in methods\r\n * `morphToCircle()` or `morphToPolygon()`.\r\n *\r\n * Otherwise each separate part of polygon will morph to individual target\r\n * circle or polgyon.\r\n */\n _this.morphToSingle = true;\n /**\r\n * A ratio to scale morphed object in relation to the source object.\r\n */\n _this.scaleRatio = 1;\n _this.className = \"Morpher\";\n _this.morphable = morphable;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Morphs a polygon to another polygon.\r\n *\r\n * @param toPoints Corner points of the target shape\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation\r\n */\n Morpher.prototype.morphToPolygon = function (toPoints, duration, easing) {\n var points = this.morphable.currentPoints;\n if (points && toPoints) {\n this.sortPoints(points);\n this.sortPoints(toPoints);\n this._morphFromPointsReal = [];\n this._morphToPointsReal = [];\n if (!$type.hasValue(duration)) {\n duration = this.morphDuration;\n }\n if (!$type.hasValue(easing)) {\n easing = this.morphEasing;\n }\n this._morphFromPointsReal = this.normalizePoints(toPoints, points);\n this._morphToPointsReal = this.normalizePoints(points, toPoints);\n this.morphable.currentPoints = this._morphFromPointsReal;\n var animation = new Animation(this, {\n property: \"morphProgress\",\n from: 0,\n to: 1\n }, duration, easing);\n this._disposers.push(animation);\n animation.start();\n return animation;\n }\n };\n /**\r\n * [normalizePoints description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointsA Point A\r\n * @param pointsB Point B\r\n * @return Normalized points\r\n */\n Morpher.prototype.normalizePoints = function (pointsA, pointsB) {\n for (var i = 0, len = pointsA.length; i < len; i++) {\n var surfaceA = pointsA[i][0];\n var holeA = pointsA[i][1];\n var bboxA = $type.getValue($math.getBBox(surfaceA));\n var middleX = bboxA.x + bboxA.width;\n var middleY = bboxA.y + bboxA.height;\n // check if we have the same in PointsB\n if (!pointsB[i]) {\n pointsB[i] = [];\n }\n // check if we have surface in pointsB\n if (surfaceA && !pointsB[i][0]) {\n pointsB[i][0] = [{\n x: middleX,\n y: middleY\n }, {\n x: middleX,\n y: middleY\n }];\n }\n if (pointsB[i][0]) {\n pointsB[i][0] = this.addPoints(pointsB[i][0], surfaceA.length);\n var distance = Infinity;\n var splitAt = 0;\n for (var a = 0; a < pointsB[i][0].length; a++) {\n var newDistance = $math.getDistance(pointsB[i][0][a], surfaceA[0]);\n if (newDistance < distance) {\n splitAt = a;\n distance = newDistance;\n }\n }\n var partA = pointsB[i][0].slice(0, splitAt);\n var partB = pointsB[i][0].slice(splitAt);\n pointsB[i][0] = partB.concat(partA);\n }\n if (holeA) {\n if (!pointsB[i][1]) {\n pointsB[i][1] = [{\n x: middleX,\n y: middleY\n }, {\n x: middleX,\n y: middleY\n }];\n }\n pointsB[i][1] = this.addPoints(pointsB[i][1], holeA.length);\n }\n }\n return pointsB;\n };\n /**\r\n * [sortPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @return common bbox of points\r\n */\n Morpher.prototype.sortPoints = function (points) {\n points.sort(function (a, b) {\n var bbox1 = $type.getValue($math.getBBox(a[0]));\n var bbox2 = $type.getValue($math.getBBox(b[0]));\n if (bbox1.width * bbox1.height > bbox2.width * bbox2.height) {\n return -1;\n } else {\n return 1;\n }\n });\n var bboxes = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var surface = points[i][0];\n if (surface) {\n bboxes.push($type.getValue($math.getBBox(surface)));\n }\n }\n return $math.getCommonRectangle(bboxes);\n };\n /**\r\n * Morphs polygon to a circle (it is actually a polygon which makes a circle).\r\n *\r\n * @param radius Target circle radius (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\n Morpher.prototype.morphToCircle = function (radius, duration, easing) {\n var points = this.morphable.points;\n var commonBBox = this.sortPoints(points);\n this._morphFromPointsReal = [];\n this._morphToPointsReal = [];\n if (!$type.hasValue(duration)) {\n duration = this.morphDuration;\n }\n if (!$type.hasValue(easing)) {\n easing = this.morphEasing;\n }\n // surface\n for (var i = 0, len = points.length; i < len; i++) {\n var surface = points[i][0];\n var hole = points[i][1];\n this._morphFromPointsReal[i] = [];\n this._morphToPointsReal[i] = [];\n if (surface) {\n var toPoints = surface;\n var fromPoints = surface;\n var bbox = $type.getValue($math.getBBox(fromPoints)); // this._bboxes[i];\n if (this.morphToSingle) {\n bbox = $type.getValue(commonBBox);\n }\n var middleX = bbox.x + bbox.width / 2;\n var middleY = bbox.y + bbox.height / 2;\n var realRadius = radius;\n if (!$type.isNumber(realRadius)) {\n realRadius = Math.min(bbox.width / 2, bbox.height / 2);\n }\n toPoints = [];\n // find angle for the first point\n var startAngle = $math.getAngle({\n x: middleX,\n y: middleY\n }, surface[0]);\n var count = 100;\n if (surface.length > count) {\n count = surface.length;\n }\n fromPoints = this.addPoints(surface, count);\n count = fromPoints.length; // add Points might increase number a bit\n var angle = 360 / (count - 1);\n for (var a = 0; a < count; a++) {\n var realAngle = angle * a + startAngle;\n var pointOnCircle = {\n x: middleX + realRadius * $math.cos(realAngle),\n y: middleY + realRadius * $math.sin(realAngle)\n };\n toPoints[a] = pointOnCircle;\n }\n if (hole && hole.length > 0) {\n for (var i_1 = 0, hlen = hole.length; i_1 < hlen; i_1++) {\n toPoints.push({\n x: middleX,\n y: middleY\n });\n }\n }\n this._morphFromPointsReal[i][0] = fromPoints;\n this._morphToPointsReal[i][0] = toPoints;\n }\n }\n this.morphable.currentPoints = this._morphFromPointsReal;\n var animation = new Animation(this, {\n property: \"morphProgress\",\n from: 0,\n to: 1\n }, duration, easing);\n this._disposers.push(animation);\n animation.start();\n return animation;\n };\n /**\r\n * [addPoints description]\r\n *\r\n * @ignore Exclude from doc\r\n * @todo Description\r\n * @param points [description]\r\n * @param mustHaveCount [description]\r\n * @return [description]\r\n */\n Morpher.prototype.addPoints = function (points, mustHaveCount) {\n var addToSegmentCount = Math.round(mustHaveCount / points.length);\n var newPoints = [];\n for (var i = 0, len = points.length; i < len; i++) {\n var point0 = points[i];\n var point1 = void 0;\n if (i == points.length - 1) {\n point1 = points[0];\n } else {\n point1 = points[i + 1];\n }\n newPoints.push(point0);\n for (var p = 1; p < addToSegmentCount; p++) {\n var percent = p / addToSegmentCount;\n var extraPoint = {\n x: point0.x + (point1.x - point0.x) * percent,\n y: point0.y + (point1.y - point0.y) * percent\n };\n newPoints.push(extraPoint);\n }\n // stop adding in case we already added more than left in original\n if (newPoints.length + points.length - i == mustHaveCount) {\n addToSegmentCount = 0;\n }\n }\n if (newPoints.length < mustHaveCount && points.length > 0) {\n var lastPoint = points[points.length - 1];\n for (var p = newPoints.length; p < mustHaveCount; p++) {\n // add same as last\n newPoints.push({\n x: lastPoint.x,\n y: lastPoint.y\n });\n }\n }\n return newPoints;\n };\n /**\r\n * Morphs polygon into a rectangular polygon.\r\n *\r\n * @param width Width of the target rectangle (px)\r\n * @param height Height of the target rectangle (px)\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\n Morpher.prototype.morphToRectangle = function (width, height, duration, easing) {\n var points = this.morphable.points;\n this.sortPoints(points);\n this._morphFromPointsReal = [];\n this._morphToPointsReal = [];\n if (!$type.hasValue(duration)) {\n duration = this.morphDuration;\n }\n if (!$type.hasValue(easing)) {\n easing = this.morphEasing;\n }\n //\t\tlet biggestBBox: IRectangle = this._bboxes[this._biggestIndex];\n // surface\n for (var i = 0, len = points.length; i < len; i++) {\n var surface = points[i][0];\n var hole = points[i][1];\n this._morphFromPointsReal[i] = [];\n this._morphToPointsReal[i] = [];\n if (surface) {\n var toPoints = surface;\n var fromPoints = surface;\n var bbox = this._bboxes[i];\n // we only work with first area. TODO: maybe we should find the biggest one?\n if (this.morphToSingle) {\n //if (i != this._biggestIndex) {\n //\tbbox = { x: biggestBBox.x + biggestBBox.width / 2, y: biggestBBox.y + biggestBBox.height / 2, width: 0, height: 0 };\n //}\n }\n var x = bbox.x;\n var y = bbox.y;\n var realWidth = width;\n var realHeight = height;\n if (!$type.isNumber(realWidth)) {\n realWidth = bbox.width;\n }\n if (!$type.isNumber(realHeight)) {\n realHeight = bbox.height;\n }\n toPoints = [{\n x: x,\n y: y\n }, {\n x: x + realWidth,\n y: y\n }, {\n x: x + realWidth,\n y: y + realHeight\n }, {\n x: x,\n y: y + realHeight\n }];\n toPoints = this.addPoints(toPoints, surface.length);\n // if polygon has less points then count, add\n if (surface.length < 4) {\n for (var i_2 = surface.length; i_2 < 4; i_2++) {\n toPoints.push({\n x: surface[i_2].x,\n y: surface[i_2].y\n });\n }\n }\n if (hole && hole.length > 0) {\n var middleX = bbox.x + bbox.width / 2;\n var middleY = bbox.y + bbox.height / 2;\n for (var i_3 = 0, hlen = hole.length; i_3 < hlen; i_3++) {\n toPoints.push({\n x: middleX,\n y: middleY\n });\n }\n }\n this._morphFromPointsReal[i][0] = fromPoints;\n this._morphToPointsReal[i][0] = toPoints;\n }\n }\n this.morphable.currentPoints = this._morphFromPointsReal;\n var animation = new Animation(this, {\n property: \"morphProgress\",\n from: 0,\n to: 1\n }, duration, easing);\n this._disposers.push(animation);\n animation.start();\n return animation;\n };\n Object.defineProperty(Morpher.prototype, \"morphProgress\", {\n /**\r\n * Returns the progress of morph transition.\r\n *\r\n * @return Progress (0-1)\r\n */\n get: function () {\n return this._morphProgress;\n },\n /**\r\n * Progress of the morph transition.\r\n *\r\n * Setting this will also trigger actual transformation.\r\n *\r\n * @param value Progress (0-1)\r\n */\n set: function (value) {\n this._morphProgress = value;\n var currentPoints = [];\n if (value != null) {\n var fromPoints = this._morphFromPointsReal;\n var toPoints = this._morphToPointsReal;\n if (fromPoints != null && toPoints != null) {\n for (var i = 0, len = fromPoints.length; i < len; i++) {\n var currentArea = [];\n currentPoints.push(currentArea);\n var surfaceFrom = fromPoints[i][0];\n var holeFrom = fromPoints[i][1];\n var surfaceTo = toPoints[i][0];\n var holeTo = toPoints[i][1];\n if (surfaceFrom && surfaceFrom.length > 0 && surfaceTo && surfaceTo.length > 0) {\n var currentSurface = [];\n for (var i_4 = 0, slen = surfaceFrom.length; i_4 < slen; i_4++) {\n var point0 = surfaceFrom[i_4];\n var point1 = surfaceTo[i_4];\n var currentPoint = {\n x: point0.x + (point1.x * this.scaleRatio - point0.x) * value,\n y: point0.y + (point1.y * this.scaleRatio - point0.y) * value\n };\n currentSurface.push(currentPoint);\n }\n currentArea[0] = currentSurface;\n }\n if (holeFrom && holeFrom.length > 0 && holeTo && holeTo.length > 0) {\n var currentHole = [];\n for (var i_5 = 0, hlen = holeFrom.length; i_5 < hlen; i_5++) {\n var point0 = holeFrom[i_5];\n var point1 = holeTo[i_5];\n var currentPoint = {\n x: point0.x + (point1.x * this.scaleRatio - point0.x) * value,\n y: point0.y + (point1.y * this.scaleRatio - point0.y) * value\n };\n currentHole.push(currentPoint);\n }\n currentArea[1] = currentHole;\n }\n }\n }\n }\n this.morphable.currentPoints = currentPoints;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Restores the polygon to its original appearance.\r\n *\r\n * @param duration Duration (ms)\r\n * @param easing Easing function\r\n * @return Animation\r\n */\n Morpher.prototype.morphBack = function (duration, easing) {\n this._morphToPointsReal = this._morphFromPointsReal;\n this._morphFromPointsReal = this.morphable.currentPoints;\n if (!$type.hasValue(duration)) {\n duration = this.morphDuration;\n }\n if (!$type.hasValue(easing)) {\n easing = this.morphEasing;\n }\n var animation = new Animation(this, {\n property: \"morphProgress\",\n from: 0,\n to: 1\n }, duration, easing);\n this._disposers.push(animation);\n animation.start();\n return animation;\n };\n Object.defineProperty(Morpher.prototype, \"animations\", {\n /**\r\n * Returns a list of morph animations currently being played.\r\n *\r\n * @return List of animations\r\n */\n get: function () {\n if (!this._animations) {\n this._animations = [];\n this._disposers.push(new AnimationDisposer(this._animations));\n }\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n return Morpher;\n}(BaseObject);\nexport { Morpher };\n//# sourceMappingURL=Morpher.js.map","/**\r\n * Polygon module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { Morpher } from \"../utils/Morpher\";\nimport { registry } from \"../Registry\";\nimport * as $path from \"../rendering/Path\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a polygon.\r\n *\r\n * @see {@link IPolygonEvents} for a list of available events\r\n * @see {@link IPolygonAdapters} for a list of available Adapters\r\n */\nvar Polygon = /** @class */function (_super) {\n __extends(Polygon, _super);\n /**\r\n * Constructor\r\n */\n function Polygon() {\n var _this = _super.call(this) || this;\n _this.className = \"Polygon\";\n _this.element = _this.paper.add(\"path\");\n _this.shapeRendering = \"auto\";\n _this._currentPoints = [];\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Polygon.prototype, \"points\", {\n /**\r\n * @return Polygon points\r\n */\n get: function () {\n var points = this.getPropertyValue(\"points\");\n var path = this.path;\n if (path && (!points || points.length == 0)) {\n var valueStr = path.slice(1, path.length - 1);\n var segments = valueStr.split(\"ZM\");\n for (var s = 0; s < segments.length; s++) {\n var segment = segments[s];\n if (segment.length > 0) {\n var areaHole = segment.split(\"M\");\n var areaArr = areaHole[0];\n var holeArr = areaHole[1];\n if (areaArr && areaArr.length > 0) {\n var pointsArr = areaArr.split(\"L\");\n if (pointsArr.length > 0) {\n var area = [];\n var areaAndHole = [area];\n points.push(areaAndHole);\n for (var p = 0; p < pointsArr.length; p++) {\n var coords = pointsArr[p].split(\",\");\n area.push({\n x: +coords[0],\n y: +coords[1]\n });\n }\n if (holeArr && holeArr.length > 0) {\n var pointsArr_1 = holeArr.split(\"L\");\n if (pointsArr_1.length > 0) {\n var hole = [];\n areaAndHole.push(hole);\n for (var p = pointsArr_1.length - 1; p >= 0; p--) {\n var coords = pointsArr_1[p].split(\",\");\n hole.push({\n x: +coords[0],\n y: +coords[1]\n });\n }\n }\n }\n }\n }\n }\n }\n this.setPropertyValue(\"points\", points);\n this._currentPoints = points;\n }\n return points;\n },\n /**\r\n * An array of X/Y coordinates for each elbow of the polygon.\r\n *\r\n * @todo Example\r\n * @param points Polygon points\r\n */\n set: function (points) {\n this.setPropertyValue(\"points\", points, true);\n this._currentPoints = points;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Polygon.prototype, \"currentPoints\", {\n /**\r\n * @return Polygon points\r\n */\n get: function () {\n if ((!this._currentPoints || this._currentPoints.length == 0) && this.path) {\n this._currentPoints = this.points;\n }\n return this._currentPoints;\n },\n /**\r\n * Current points. Used when morphing the element, so that original `points`\r\n * are not overwritten.\r\n *\r\n * @param points Polygon points\r\n */\n set: function (points) {\n if (this._currentPoints != points) {\n this._currentPoints = points;\n this.draw();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Polygon.prototype.draw = function () {\n var path = \"\";\n var points = this._currentPoints;\n var left;\n var right;\n var top;\n var bottom;\n if (points.length > 0) {\n // separate areas\n for (var i = 0, len = points.length; i < len; i++) {\n // surface\n var surface = points[i][0];\n var hole = points[i][1];\n if (surface && surface.length > 0) {\n var point = surface[0];\n path += $path.moveTo(point);\n for (var s = 0; s < surface.length; s++) {\n point = surface[s];\n path += $path.lineTo(point);\n if (!$type.isNumber(right) || right < point.x) {\n right = point.x;\n }\n if (!$type.isNumber(left) || left > point.x) {\n left = point.x;\n }\n if (!$type.isNumber(top) || top > point.y) {\n top = point.y;\n }\n if (!$type.isNumber(bottom) || bottom < point.y) {\n bottom = point.y;\n }\n }\n }\n // hole\n if (hole && hole.length > 0) {\n var point = hole[0];\n path += $path.moveTo(point);\n for (var h = 0, hlen = hole.length; h < hlen; h++) {\n point = hole[h];\n path += $path.lineTo(point);\n }\n }\n }\n if (path) {\n path += $path.closePath();\n }\n this.bbox.x = left;\n this.bbox.y = top;\n this.bbox.width = right - left;\n this.bbox.height = bottom - top;\n _super.prototype.setPath.call(this, path);\n }\n };\n /**\r\n * @ignore\r\n */\n Polygon.prototype.setPath = function (value) {\n if (_super.prototype.setPath.call(this, value)) {\n this.points = [];\n this._bbox = this.group.getBBox();\n return true;\n }\n return false;\n };\n /**\r\n * Measures element\r\n */\n Polygon.prototype.measureElement = function () {\n // Overriding to avoid extra measurement.\n };\n Object.defineProperty(Polygon.prototype, \"centerPoint\", {\n /**\r\n * A calculated center point for the shape.\r\n *\r\n * @readonly\r\n * @return Center\r\n */\n get: function () {\n return {\n x: this.bbox.x + this.bbox.width / 2,\n y: this.bbox.y + this.bbox.height / 2\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Polygon.prototype, \"morpher\", {\n /**\r\n * A [[Morpher]] instance that is used to morph polygon into some other\r\n * shape.\r\n *\r\n * @readonly\r\n * @return Morpher instance\r\n */\n get: function () {\n if (!this._morpher) {\n this._morpher = new Morpher(this);\n this._disposers.push(this._morpher);\n }\n return this._morpher;\n },\n enumerable: true,\n configurable: true\n });\n return Polygon;\n}(Sprite);\nexport { Polygon };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Polygon\"] = Polygon;\n//# sourceMappingURL=Polygon.js.map","/**\r\n * Polyspline (smoothed line) module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Polyline } from \"./Polyline\";\nimport { registry } from \"../Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a polysline. (smoothed multi-sigment line)\r\n *\r\n * @see {@link IPolysplineEvents} for a list of available events\r\n * @see {@link IPolysplineAdapters} for a list of available Adapters\r\n */\nvar Polyspline = /** @class */function (_super) {\n __extends(Polyspline, _super);\n /**\r\n * Constructor\r\n */\n function Polyspline() {\n var _this = _super.call(this) || this;\n _this.className = \"Polyspline\";\n _this.tensionX = 0.5;\n _this.tensionY = 0.5;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creats and adds an SVG path for the arc.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Polyspline.prototype.makePath = function () {\n this._distance = 0;\n var segments = this.segments;\n var tensionX = this.tensionX;\n var tensionY = this.tensionY;\n this.allPoints = [];\n if (segments && segments.length > 0) {\n var path = \"\";\n this._realSegments = [];\n for (var i = 0, len = segments.length; i < len; i++) {\n var points = segments[i];\n var realPoints = [];\n this._realSegments.push(realPoints);\n if (points.length > 0) {\n var first = points[0];\n var last = points[points.length - 1];\n var closed_1 = false;\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\n closed_1 = true;\n }\n path += $path.moveTo(points[0]);\n for (var p = 0; p < points.length - 1; p++) {\n var p0 = points[p - 1];\n var p1 = points[p];\n var p2 = points[p + 1];\n var p3 = points[p + 2];\n if (p === 0) {\n p0 = points[p];\n } else if (p == points.length - 2) {\n p3 = points[p + 1];\n }\n if (!p3) {\n p3 = p2;\n }\n if (p === 0) {\n if (closed_1) {\n p0 = points[points.length - 2];\n } else {\n p0 = points[i];\n }\n } else if (p == points.length - 2) {\n if (closed_1) {\n p3 = points[1];\n } else {\n p3 = points[p + 1];\n }\n }\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\n // now split to small segments so that we could have positionToPoint later\n var stepCount = Math.ceil($math.getCubicCurveDistance(p1, p2, controlPointA, controlPointB, 20)) * 1.2;\n var prevPoint = p1;\n if (stepCount > 0) {\n // not good for curved charts\n //this.allPoints[0] = { x: points[0].x, y: points[0].y, angle: $math.getAngle(points[0], points[1]) };\n //realPoints.push(this.allPoints[0]);\n for (var s = 0; s <= stepCount; s++) {\n var point = $math.getPointOnCubicCurve(p1, p2, controlPointA, controlPointB, s / stepCount);\n if (point.x == prevPoint.x && point.y == prevPoint.y) {\n continue;\n }\n realPoints.push(point);\n var angle = $math.round($math.getAngle(prevPoint, point), 5);\n //this.allPoints.push({ x: point.x, y: point.y, angle: angle });\n this._distance += $math.getDistance(prevPoint, point);\n this.allPoints[Math.floor(this._distance)] = {\n x: point.x,\n y: point.y,\n angle: angle\n };\n prevPoint = point;\n }\n } else {\n realPoints.push(p0);\n }\n }\n }\n var allPoints = this.allPoints;\n if (allPoints.length > 1) {\n for (var i_1 = 0; i_1 < allPoints.length; i_1++) {\n if (!allPoints[i_1]) {\n if (i_1 > 1) {\n allPoints[i_1] = allPoints[i_1 - 1];\n } else {\n for (var k = 1; k < allPoints.length; k++) {\n if (allPoints[k]) {\n allPoints[i_1] = allPoints[k];\n break;\n }\n }\n }\n }\n }\n }\n }\n this.path = path;\n }\n };\n /**\r\n * Returns an index of the point that is closest to specified coordinates.\r\n *\r\n * @param point Reference point\r\n * @return Index\r\n */\n Polyspline.prototype.getClosestPointIndex = function (point) {\n var points = this.allPoints;\n var index;\n var closest = Infinity;\n if (points.length > 1) {\n for (var p = 1; p < points.length; p++) {\n var distance = $math.getDistance(point, points[p]);\n if (distance < closest) {\n index = p;\n closest = distance;\n }\n }\n }\n return index;\n };\n Object.defineProperty(Polyspline.prototype, \"tensionX\", {\n /**\r\n * @return Tension\r\n */\n get: function () {\n return this.getPropertyValue(\"tensionX\");\n },\n /**\r\n * Horizontal tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tension\r\n */\n set: function (value) {\n this.setPropertyValue(\"tensionX\", value);\n this.makePath();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Polyspline.prototype, \"tensionY\", {\n /**\r\n * @return Tension\r\n */\n get: function () {\n return this.getPropertyValue(\"tensionY\");\n },\n /**\r\n * Vertical tension for the spline.\r\n *\r\n * Used by the line smoothing algorithm.\r\n *\r\n * @default 0.5\r\n * @param value Tensions\r\n */\n set: function (value) {\n this.setPropertyValue(\"tensionY\", value, true);\n this.makePath();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\n Polyspline.prototype.positionToPoint = function (position, extend) {\n var deltaAngle = 0;\n var allPoints = this.allPoints;\n var len = allPoints.length;\n if (!$type.isNumber(position)) {\n position = 0;\n }\n if (len > 1) {\n if (extend && len > 3) {\n if (position < 0) {\n if (position < -0.01) {\n position = -0.01;\n }\n var f0 = allPoints[0];\n var f1 = allPoints[1];\n var x = f0.x - (f0.x - f1.x) * len * position;\n var y = f0.y - (f0.y - f1.y) * len * position;\n return {\n x: x,\n y: y,\n angle: $math.getAngle(f0, f1)\n };\n } else if (position > 1) {\n if (position > 1.01) {\n position = 1.01;\n }\n var f0 = allPoints[allPoints.length - 2];\n var f1 = allPoints[allPoints.length - 3];\n var x = f0.x + (f0.x - f1.x) * len * (position - 1);\n var y = f0.y + (f0.y - f1.y) * len * (position - 1);\n return {\n x: x,\n y: y,\n angle: $math.getAngle(f0, {\n x: x,\n y: y\n })\n };\n } else if (position == 1) {\n var point_1 = allPoints[allPoints.length - 1];\n return {\n x: point_1.x,\n y: point_1.y,\n angle: point_1.angle\n };\n }\n } else {\n if (position < 0) {\n position = Math.abs(position);\n deltaAngle = 180;\n }\n if (position >= 1) {\n position = 0.9999999999999;\n }\n }\n var point = allPoints[Math.floor(position * len)];\n return {\n x: point.x,\n y: point.y,\n angle: point.angle + deltaAngle\n };\n } else if (len == 1) {\n var point = allPoints[0];\n return {\n x: point.x,\n y: point.y,\n angle: point.angle\n };\n } else {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n }\n };\n return Polyspline;\n}(Polyline);\nexport { Polyspline };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Polyspline\"] = Polyspline;\n//# sourceMappingURL=Polyspline.js.map","/**\r\n * Slice module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport * as $math from \"../utils/Math\";\nimport * as $path from \"../rendering/Path\";\nimport * as $type from \"../utils/Type\";\nimport * as $utils from \"../utils/Utils\";\nimport { Percent } from \"../utils/Percent\";\nimport { RadialGradient } from \"../rendering/fills/RadialGradient\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a wedged semi-circle - slice. Usually used for Pie/Donut charts.\r\n *\r\n * @see {@link ISliceEvents} for a list of available events\r\n * @see {@link ISliceAdapters} for a list of available Adapters\r\n */\nvar Slice = /** @class */function (_super) {\n __extends(Slice, _super);\n /**\r\n * Constructor\r\n */\n function Slice() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"Slice\";\n // Set defaults\n _this.setPropertyValue(\"cornerRadius\", 0);\n _this.setPropertyValue(\"startAngle\", 0);\n _this.setPercentProperty(\"innerRadius\", 0);\n _this.setPercentProperty(\"radius\", 0);\n _this.setPropertyValue(\"arc\", 0);\n _this.setPropertyValue(\"shiftRadius\", 0);\n _this.strokeOpacity = 1;\n _this.setPropertyValue(\"layout\", \"none\");\n // Create a slice wedge element\n _this.slice = _this.createChild(Sprite);\n _this.slice.isMeasured = false;\n _this._disposers.push(_this.slice);\n //this.element.attr({ \"stroke-linejoin\": \"round\" });\n //this.element.attr({ \"stroke-linecap\": \"round\" });\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Slice.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var radiusY = this.radiusY;\n if (this.radius > 0 && radiusY == 0) {\n radiusY = 0.01;\n }\n this.slice.path = $path.arc(this.startAngle, this.arc, this.radius, this.pixelInnerRadius, radiusY, this.cornerRadius, this.innerCornerRadius);\n this.slice.invalidate();\n this.shiftRadius = this.shiftRadius;\n if (this.realFill instanceof RadialGradient) {\n this.updateGradient(this.realFill);\n }\n if (this.realStroke instanceof RadialGradient) {\n this.updateGradient(this.realStroke);\n }\n };\n Slice.prototype.updateGradient = function (gradient) {\n gradient.element.attr({\n \"gradientUnits\": \"userSpaceOnUse\"\n });\n gradient.element.attr({\n \"r\": this.radius\n });\n gradient.cx = 0;\n gradient.cy = 0;\n gradient.element.attr({\n radius: this.radius\n });\n };\n Object.defineProperty(Slice.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n if (this.isMeasured) {\n var innerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.pixelInnerRadius);\n var outerRect = $math.getArcRect(this.startAngle, this.startAngle + this.arc, this.radius);\n return $math.getCommonRectangle([innerRect, outerRect]);\n } else {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"startAngle\", {\n /**\r\n * @return Angle (0-360)\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * The angle at which left edge of the slice is drawn. (0-360)\r\n *\r\n * 0 is to the right of the center.\r\n *\r\n * @param value Angle (0-360)\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"arc\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this.getPropertyValue(\"arc\");\n },\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n if (!$type.isNumber(value)) {\n value = 0;\n }\n this.setPropertyValue(\"arc\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"radius\", {\n /**\r\n * @return Radius (px)\r\n */\n get: function () {\n var radius = this.getPropertyValue(\"radius\");\n if (!$type.isNumber(radius)) {\n radius = 0;\n }\n return radius;\n },\n /**\r\n * Radius of the slice in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"radius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"radiusY\", {\n /**\r\n * @return Vertical radius (0-1)\r\n */\n get: function () {\n var value = this.getPropertyValue(\"radiusY\");\n if (!$type.isNumber(value)) {\n value = this.radius;\n }\n return value;\n },\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"radiusY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"innerRadius\", {\n /**\r\n * @return Radius (px or %)\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the slice for creating cut out (donut) slices.\r\n *\r\n * @default 0\r\n * @param value Radius (px or %)\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"pixelInnerRadius\", {\n /**\r\n * @return Radius px\r\n */\n get: function () {\n return $utils.relativeToValue(this.innerRadius, this.radius);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"cornerRadius\", {\n /**\r\n * @return Radius (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadius\");\n },\n /**\r\n * Radius of slice's outer corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"cornerRadius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"innerCornerRadius\", {\n /**\r\n * @return Radius (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"innerCornerRadius\");\n },\n /**\r\n * Radius of slice's inner corners in pixels.\r\n *\r\n * @default 0\r\n * @param value Radius (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"innerCornerRadius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"shiftRadius\", {\n /**\r\n * @return Radius shift\r\n */\n get: function () {\n return this.getPropertyValue(\"shiftRadius\");\n },\n /**\r\n * Indicates how far (relatively to center) a slice should be moved.\r\n *\r\n * The value is relative to the radius of the slice. Meaning 0 no shift,\r\n * 1 - slice shifted outside by whole of its radius.\r\n *\r\n * @param value Radius shift\r\n */\n set: function (value) {\n this.setPropertyValue(\"shiftRadius\", value);\n value = this.getPropertyValue(\"shiftRadius\");\n this.dx = value * this.radius * this.ix;\n this.dy = value * this.radiusY * this.iy;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"ix\", {\n /**\r\n * [ix description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return $math.cos(this.middleAngle);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"iy\", {\n /**\r\n * [iy description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return $math.sin(this.middleAngle);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice.prototype, \"middleAngle\", {\n /**\r\n * An angle of the slice's middle.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Angle\r\n */\n get: function () {\n return this.startAngle + this.arc / 2;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n */\n Slice.prototype.getTooltipX = function () {\n var value = this.getPropertyValue(\"tooltipX\");\n if ($type.isNumber(value)) {\n return value;\n }\n var p = 0.5;\n if (value instanceof Percent) {\n p = value.value;\n }\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\n return this.ix * (innerRadius + (this.radius - innerRadius) * p);\n };\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n */\n Slice.prototype.getTooltipY = function () {\n var value = this.getPropertyValue(\"tooltipY\");\n if ($type.isNumber(value)) {\n return value;\n }\n var p = 0.5;\n if (value instanceof Percent) {\n p = value.value;\n }\n var innerRadius = $utils.relativeToValue(this.innerRadius, this.radius);\n return this.iy * (innerRadius + (this.radius - innerRadius) * p) + this.slice.dy;\n };\n return Slice;\n}(Container);\nexport { Slice };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Slice\"] = Slice;\n//# sourceMappingURL=Slice.js.map","/**\r\n * Preloader module.\r\n *\r\n * Preloader is a progress indicator.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { Slice } from \"./Slice\";\nimport { Label } from \"./Label\";\nimport { registry } from \"../Registry\";\nimport { percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IPreloaderEvents} for a list of available events\r\n * @see {@link IPreloaderAdapters} for a list of available Adapters\r\n */\nvar Preloader = /** @class */function (_super) {\n __extends(Preloader, _super);\n /**\r\n * Constructor\r\n */\n function Preloader() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"Preloader\";\n // Set dimensions\n _this.width = percent(100);\n _this.height = percent(100);\n var interfaceColors = new InterfaceColorSet();\n // Create main container\n var sliceContainer = _this.createChild(Container);\n sliceContainer.shouldClone = false;\n // Add background (100%) slice\n var backgroundSlice = sliceContainer.createChild(Slice);\n backgroundSlice.shouldClone = false;\n backgroundSlice.radius = 53;\n backgroundSlice.arc = 360;\n backgroundSlice.fill = interfaceColors.getFor(\"fill\");\n backgroundSlice.fillOpacity = 0.8;\n backgroundSlice.innerRadius = 42;\n backgroundSlice.isMeasured = false;\n _this.backgroundSlice = backgroundSlice;\n // Add progress slice\n var progressSlice = sliceContainer.createChild(Slice);\n progressSlice.shouldClone = false;\n progressSlice.radius = 50;\n progressSlice.innerRadius = 45;\n progressSlice.fill = interfaceColors.getFor(\"alternativeBackground\");\n progressSlice.fillOpacity = 0.2;\n progressSlice.isMeasured = false;\n _this.progressSlice = progressSlice;\n // Add text label element\n var label = sliceContainer.createChild(Label);\n label.shouldClone = false;\n label.horizontalCenter = \"middle\";\n label.verticalCenter = \"middle\";\n label.isMeasured = false;\n label.fill = interfaceColors.getFor(\"text\");\n label.align = \"center\";\n label.valign = \"middle\";\n label.textAlign = \"middle\";\n label.fillOpacity = 0.4;\n _this.label = label;\n // Set defaults\n _this.background.opacity = 1;\n _this.background.fill = interfaceColors.getFor(\"background\");\n _this.contentAlign = \"center\";\n _this.contentValign = \"middle\";\n _this.delay = 300;\n // Create hidden state\n var hiddenState = _this.states.create(\"hidden\");\n hiddenState.properties.opacity = 0;\n // Hide by default\n _this.visible = false;\n _this.hide(0);\n _this.__disabled = true;\n // Make it disposable\n // @todo Maybe it's enough to just dispose `sliceContainer`?\n _this._disposers.push(_this.backgroundSlice);\n _this._disposers.push(_this.progressSlice);\n _this._disposers.push(_this.label);\n _this._disposers.push(sliceContainer);\n return _this;\n }\n Object.defineProperty(Preloader.prototype, \"progress\", {\n /**\r\n * @return Progress (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"progress\");\n },\n /**\r\n * Current preload progress. (0-1)\r\n *\r\n * * 0 - 0%\r\n * * 0.5 - 50%\r\n * * 1 - 100%\r\n *\r\n * Setting this to a value less than 1, will automatically reveal the\r\n * preloader, while setting it to 1 (100%) will hide it.\r\n *\r\n * @param value Progress (0-1)\r\n */\n set: function (value) {\n var _this = this;\n this.__disabled = false;\n this.validateLayout(); // show not in center without this\n this.setPropertyValue(\"progress\", value);\n /*if (!this.visible && value == 1) {\r\n return;\r\n }*/\n this.progressSlice.arc = 360 * value;\n if (this.label) {\n this.label.text = Math.round(value * 100) + \"%\";\n }\n if (value >= 1) {\n // Cancel the timeout\n if (this._started) {\n this._started = undefined;\n }\n // TODO remove closure ?\n registry.events.once(\"enterframe\", function () {\n var animation = _this.hide();\n if (animation && !animation.isFinished()) {\n animation.events.once(\"animationended\", function () {\n _this.__disabled = true;\n });\n } else {\n _this.__disabled = true;\n }\n });\n this.interactionsEnabled = false;\n this.setPropertyValue(\"progress\", 0);\n } else if (value > 0) {\n if (this.delay) {\n if (!this._started) {\n this._started = new Date().getTime();\n } else if (this._started + this.delay <= new Date().getTime()) {\n this.__disabled = false;\n this.show();\n this.interactionsEnabled = true;\n }\n } else {\n this.__disabled = false;\n this.show();\n this.interactionsEnabled = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Preloader.prototype, \"delay\", {\n /**\r\n * @return Delay (ms)\r\n */\n get: function () {\n return this.getPropertyValue(\"delay\");\n },\n /**\r\n * Delay display of preloader by X milliseconds.\r\n *\r\n * When loading starts (`progress` is set to <1) and finishes (`progress` is\r\n * set to 1) before `delay` ms, the loader is never shown.\r\n *\r\n * This is used to avoid brief flashing of the preload for very quick loads.\r\n *\r\n * @default 1000\r\n * @param value Delay (ms)\r\n */\n set: function (value) {\n this.setPropertyValue(\"delay\", value);\n },\n enumerable: true,\n configurable: true\n });\n return Preloader;\n}(Container);\nexport { Preloader };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Preloader\"] = Preloader;\n//# sourceMappingURL=Preloader.js.map","/**\r\n * Resize button module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Button } from \"./Button\";\nimport { Sprite } from \"../Sprite\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { registry } from \"../Registry\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a draggable resize/grip button.\r\n *\r\n * @see {@link IResizeButtonEvents} for a list of available events\r\n * @see {@link IResizeButtonAdapters} for a list of available Adapters\r\n */\nvar ResizeButton = /** @class */function (_super) {\n __extends(ResizeButton, _super);\n /**\r\n * Constructor\r\n */\n function ResizeButton() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"ResizeButton\";\n // Set defaults\n _this.orientation = \"horizontal\";\n _this.layout = \"absolute\";\n _this.horizontalCenter = \"middle\";\n _this.verticalCenter = \"middle\";\n _this.draggable = true;\n _this.padding(8, 8, 8, 8);\n _this.background.cornerRadius(20, 20, 20, 20);\n // Create an icon\n var icon = new Sprite();\n icon.element = _this.paper.add(\"path\");\n var path = $path.moveTo({\n x: -2,\n y: -6\n });\n path += $path.lineTo({\n x: -2,\n y: 6\n });\n path += $path.moveTo({\n x: 2,\n y: -6\n });\n path += $path.lineTo({\n x: 2,\n y: 6\n });\n icon.path = path;\n icon.pixelPerfect = true;\n icon.padding(0, 4, 0, 4);\n icon.stroke = new InterfaceColorSet().getFor(\"alternativeText\");\n icon.strokeOpacity = 0.7;\n //icon.align = \"center\";\n //icon.valign = \"middle\";\n _this.icon = icon;\n _this.label.dispose();\n _this.label = undefined;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ResizeButton.prototype, \"orientation\", {\n /**\r\n * Use for setting of direction (orientation) of the resize button.\r\n *\r\n * Available options: \"horizontal\", \"vertical\".\r\n *\r\n * @param value Orientation\r\n */\n set: function (value) {\n var icon = this.icon;\n if (icon) {\n if (value == \"horizontal\") {\n icon.rotation = 0;\n } else {\n icon.rotation = -90;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return ResizeButton;\n}(Button);\nexport { ResizeButton };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ResizeButton\"] = ResizeButton;\n//# sourceMappingURL=ResizeButton.js.map","/**\r\n * Zoom out button functionality.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Button } from \"./Button\";\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $path from \"../rendering/Path\";\nimport * as $type from \"../../core/utils/Type\";\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link ICloseButtonEvents} for a list of available events\r\n * @see {@link ICloseButtonAdapters} for a list of available Adapters\r\n */\nvar CloseButton = /** @class */function (_super) {\n __extends(CloseButton, _super);\n /**\r\n * Constructor\r\n */\n function CloseButton() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"CloseButton\";\n _this.padding(8, 8, 8, 8);\n _this.showSystemTooltip = true;\n _this.width = 30;\n _this.height = 30;\n var interfaceColors = new InterfaceColorSet();\n _this.cursorOverStyle = MouseCursorStyle.pointer;\n var background = _this.background;\n background.cornerRadius(20, 20, 20, 20);\n var bgc = interfaceColors.getFor(\"background\");\n background.fill = bgc;\n background.stroke = interfaceColors.getFor(\"primaryButton\");\n background.strokeOpacity = 1;\n background.strokeWidth = 1;\n var downColor = interfaceColors.getFor(\"primaryButtonActive\");\n var bhs = background.states.getKey(\"hover\");\n bhs.properties.strokeWidth = 3;\n bhs.properties.fill = bgc;\n var bds = background.states.getKey(\"down\");\n bds.properties.stroke = downColor;\n bds.properties.fill = bgc;\n // Create an icon\n var icon = new Sprite();\n icon.element = _this.paper.add(\"path\");\n icon.stroke = background.stroke;\n _this.icon = icon;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n CloseButton.prototype.validate = function () {\n _super.prototype.validate.call(this);\n var w = this.pixelWidth / 3;\n var h = this.pixelHeight / 3;\n var path = $path.moveTo({\n x: -w / 2,\n y: -h / 2\n });\n path += $path.lineTo({\n x: w / 2,\n y: h / 2\n });\n path += $path.moveTo({\n x: w / 2,\n y: -h / 2\n });\n path += $path.lineTo({\n x: -w / 2,\n y: h / 2\n });\n this.icon.path = path;\n this.invalidateLayout();\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n CloseButton.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Close\");\n }\n };\n return CloseButton;\n}(Button);\nexport { CloseButton };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CloseButton\"] = CloseButton;\n//# sourceMappingURL=CloseButton.js.map","/**\r\n * Functionality for drawing simple SwitchButtons.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { Label } from \"./Label\";\nimport { Button } from \"../elements/Button\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { Circle } from \"../../core/elements/Circle\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * SwitchButton class is capable of drawing a simple rectangular SwitchButton with\r\n * optionally rounded corners and an icon in it.\r\n *\r\n * @see {@link ISwitchButtonEvents} for a list of available events\r\n * @see {@link ISwitchButtonAdapters} for a list of available Adapters\r\n */\nvar SwitchButton = /** @class */function (_super) {\n __extends(SwitchButton, _super);\n /**\r\n * Constructor\r\n */\n function SwitchButton() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"SwitchButton\";\n _this.tooltipY = 0;\n // Set defaults\n _this.layout = \"horizontal\";\n _this.contentAlign = \"center\";\n _this.contentValign = \"middle\";\n _this.padding(8, 16, 8, 16);\n _this.setStateOnChildren = true;\n _this.states.create(\"active\");\n var interfaceColors = new InterfaceColorSet();\n // Create the label element\n var leftLabel = new Label();\n leftLabel.fillOpacity = 0.3;\n var llas = leftLabel.states.create(\"active\");\n llas.properties.fillOpacity = 1;\n leftLabel.isActive = true;\n _this.leftLabel = leftLabel;\n var button = new Button();\n var circle = new Circle();\n button.contentValign = \"none\";\n button.padding(0, 0, 0, 0);\n circle.radius = 10;\n button.icon = circle;\n button.icon.valign = \"middle\";\n button.label = undefined;\n var p100 = percent(100);\n button.background.cornerRadius(p100, p100, p100, p100);\n button.width = circle.radius * 3.5;\n button.height = circle.radius * 2.1;\n button.marginLeft = 8;\n button.marginRight = 8;\n button.togglable = true;\n circle.dx = -circle.radius * 0.7;\n circle.fill = interfaceColors.getFor(\"primaryButton\");\n var hs = circle.states.create(\"hover\");\n hs.properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\n var as = circle.states.create(\"active\");\n as.properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\n as.properties.dx = circle.radius * 0.7;\n _this.switchButton = button;\n _this.events.on(\"toggled\", function () {\n _this.leftLabel.isActive = !_this.isActive;\n _this.rightLabel.isActive = _this.isActive;\n });\n // Create the label element\n var rightLabel = new Label();\n rightLabel.fillOpacity = 0.3;\n var rlas = rightLabel.states.create(\"active\");\n rlas.properties.fillOpacity = 1;\n _this.rightLabel = rightLabel;\n // Set up accessibility\n // A Button should be always focusable\n _this.role = \"button\";\n _this.focusable = true;\n rightLabel.valign = \"middle\";\n leftLabel.valign = \"middle\";\n button.valign = \"middle\";\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(SwitchButton.prototype, \"leftLabel\", {\n /**\r\n * @return Left label element\r\n */\n get: function () {\n return this._leftLabel;\n },\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param left label element\r\n */\n set: function (label) {\n if (this._leftLabel) {\n this.removeDispose(this._leftLabel);\n }\n this._leftLabel = label;\n if (label) {\n label.parent = this;\n label.interactionsEnabled = false;\n label.shouldClone = false;\n this._disposers.push(this._leftLabel);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SwitchButton.prototype, \"rightLabel\", {\n /**\r\n * @return Rigth label element\r\n */\n get: function () {\n return this._rightLabel;\n },\n /**\r\n * [[Label]] element to be used for left text.\r\n *\r\n * @param rigth label element\r\n */\n set: function (label) {\n if (this._rightLabel) {\n this.removeDispose(this._rightLabel);\n }\n this._rightLabel = label;\n if (label) {\n label.parent = this;\n label.interactionsEnabled = false;\n label.shouldClone = false;\n this._disposers.push(this._rightLabel);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SwitchButton.prototype, \"switch\", {\n /**\r\n * @ignore\r\n * @deprecated Use `switchButton` instead\r\n */\n get: function () {\n return this._switchButton;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SwitchButton.prototype, \"switchButton\", {\n /**\r\n * @return Button\r\n */\n get: function () {\n return this._switchButton;\n },\n /**\r\n * A [[Button]] element for switch.\r\n *\r\n * @param Button\r\n */\n set: function (button) {\n if (this._switchButton) {\n this.removeDispose(this._switchButton);\n }\n this._switchButton = button;\n if (button) {\n button.parent = this;\n button.shouldClone = false;\n this._disposers.push(this._switchButton);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\n SwitchButton.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (source.leftLabel) {\n this.leftLabel.copyFrom(source.leftLabel);\n }\n if (source.rightLabel) {\n this.rightLabel.copyFrom(source.rightLabel);\n }\n if (source.switchButton) {\n this.switchButton.copyFrom(source.switchButton);\n }\n };\n return SwitchButton;\n}(Container);\nexport { SwitchButton };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SwitchButton\"] = SwitchButton;\n//# sourceMappingURL=SwitchButton.js.map","/**\r\n * Provides functionality used to build scrollbars.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { ResizeButton } from \"../elements/ResizeButton\";\nimport { Button } from \"../elements/Button\";\nimport { getInteraction } from \"../interaction/Interaction\";\nimport { MouseCursorStyle } from \"../interaction/Mouse\";\nimport { RoundedRectangle } from \"../elements/RoundedRectangle\";\nimport { registry } from \"../Registry\";\nimport { keyboard } from \"../utils/Keyboard\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { percent, Percent } from \"../utils/Percent\";\nimport * as $math from \"../utils/Math\";\nimport * as $ease from \"../utils/Ease\";\nimport * as $type from \"../utils/Type\";\nimport * as $utils from \"../utils/Utils\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Scrollbar is a generic control allowing to select a range of values or pan\r\n * the selection.\r\n *\r\n * @see {@link IScrollbarEvents} for a list of available events\r\n * @see {@link IScrollbarAdapters} for a list of available Adapters\r\n */\nvar Scrollbar = /** @class */function (_super) {\n __extends(Scrollbar, _super);\n /**\r\n * Construtor\r\n */\n function Scrollbar() {\n var _this = _super.call(this) || this;\n /**\r\n * Previously selected lower (start) value.\r\n */\n _this._previousStart = 0;\n /**\r\n * Previously selected upper (end) value.\r\n */\n _this._previousEnd = 1;\n /**\r\n * A value of previously selected lower value, used for doubleclick function.\r\n */\n _this._prevStart = 0;\n /**\r\n * A value of previously selected upper value, used for doubleclick function.\r\n */\n _this._prevEnd = 1;\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n */\n _this._isBusy = false;\n /**\r\n * [_skipRangeEvents description]\r\n *\r\n * @todo Description\r\n */\n _this._skipRangeEvents = false;\n /**\r\n * Update the selection when dragging the grips.\r\n *\r\n * If set to `false` selection will be updated only when the grip is\r\n * released.\r\n *\r\n * @default true\r\n */\n _this.updateWhileMoving = true;\n _this.className = \"Scrollbar\";\n _this.minHeight = 12;\n _this.minWidth = 12;\n _this.animationDuration = 0;\n _this.animationEasing = $ease.cubicOut;\n _this.margin(10, 10, 10, 10);\n var interfaceColors = new InterfaceColorSet();\n // background is also container as it might contain graphs, grid, etc\n var background = _this.background;\n background.cornerRadius(10, 10, 10, 10);\n background.fill = interfaceColors.getFor(\"fill\");\n background.fillOpacity = 0.5;\n // Make system tooltips appear by default\n _this.showSystemTooltip = true;\n _this.startGrip = new ResizeButton();\n _this.endGrip = new ResizeButton();\n // Default orientation...\n // ... is set in `applyInternalDefaults()` because it accesses `language`\n // and should only be started to access when parent is set\n // Set events\n _this.events.on(\"transformed\", function () {\n _this.updateThumb();\n }, _this, false);\n // Initial positions\n _this.start = 0;\n _this.end = 1;\n // Set roles\n _this.role = \"scrollbar\";\n _this.thumb.role = \"slider\";\n _this.thumb.readerLive = \"polite\";\n _this.startGrip.role = \"slider\";\n _this.endGrip.role = \"slider\";\n // otherwise range changed won't be registered\n _this.events.once(\"inited\", function () {\n _this._previousStart = undefined;\n _this.dispatchRangeChange();\n }, undefined, false);\n _this.hideGrips = false;\n _this.orientation = \"horizontal\";\n // Min/max values for accessibility\n _this.setSVGAttribute({\n \"aria-valuemin\": \"0\"\n });\n _this.setSVGAttribute({\n \"aria-valuemax\": \"100\"\n });\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n Scrollbar.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Set screen reader tetxt accordingly\n if (this.orientation === \"horizontal\") {\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\n }\n if (!$type.hasValue(this.thumb.readerDescription)) {\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\n }\n if (!$type.hasValue(this.startGrip.readerDescription)) {\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\n }\n if (!$type.hasValue(this.endGrip.readerDescription)) {\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");\n }\n this.readerOrientation = \"horizontal\";\n } else {\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\n }\n if (!$type.hasValue(this.thumb.readerDescription)) {\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\n }\n if (!$type.hasValue(this.startGrip.readerDescription)) {\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\n }\n if (!$type.hasValue(this.endGrip.readerDescription)) {\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");\n }\n this.readerOrientation = \"vertical\";\n }\n this.readerControls = this.baseSprite.uidAttr();\n };\n /**\r\n * Validates the layout of the scrollbar's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.validateLayout = function () {\n this.updateSize();\n _super.prototype.validateLayout.call(this);\n // when size changes, need to update extremes\n this.updateExtremes();\n };\n /**\r\n * Update background for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.processBackground = function () {\n _super.prototype.processBackground.call(this);\n var background = this.background;\n background.clickable = true;\n background.events.on(\"hit\", this.handleBgHit, this, undefined);\n };\n /**\r\n * Zooms to the particular place when clicked/tapped on the scrollbar\r\n * background.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n Scrollbar.prototype.handleBgHit = function (event) {\n this.makeBusy();\n var point = event.spritePoint;\n point = $utils.spritePointToSprite(point, this.background, this);\n var thumb = this.thumb;\n if (this.orientation == \"horizontal\") {\n var thumbX = point.x - thumb.pixelWidth / 2;\n thumbX = $math.fitToRange(thumbX, 0, this.innerWidth - thumb.pixelWidth);\n this._thumbAnimation = thumb.animate({\n property: \"x\",\n to: thumbX\n }, this.animationDuration, this.animationEasing);\n } else {\n var thumbY = point.y - thumb.pixelHeight / 2;\n thumbY = $math.fitToRange(thumbY, 0, this.innerHeight - thumb.pixelHeight);\n this._thumbAnimation = thumb.animate({\n property: \"y\",\n to: thumbY\n }, this.animationDuration, this.animationEasing);\n }\n if (this.animationDuration > 0) {\n this._thumbAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\n } else {\n this._thumb.validate();\n this.makeUnbusy();\n }\n };\n /**\r\n * Set scrollbar as busy. (currently zooming)\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.makeBusy = function () {\n this._isBusy = true;\n this._skipRangeEvents = false;\n if (this._unbusyTimeout) {\n this.removeDispose(this._unbusyTimeout);\n }\n this._unbusyTimeout = undefined;\n this.stopAnimations();\n };\n /**\r\n * Stops all animations, currently playing for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.stopAnimations = function () {\n if (this._thumbAnimation) {\n this._thumbAnimation.stop(true);\n }\n if (this._zoomAnimation) {\n this._zoomAnimation.stop(true);\n }\n };\n /**\r\n * Cancels \"busy\" status of the Scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.makeUnbusy = function () {\n /**\r\n * We cannot make Scrollbar not busy right after release, because then axes\r\n * will take over controll and Scrollbar will start to animate.\r\n * Theorethically, it's not right to set timeout by `animationDuration`,\r\n * however we can not know all the durations of elements we scroll, so we\r\n * assume that animation duration will be the same as\r\n * `interpolationDuration` or `rangeChange` duration.\r\n */\n this._unbusyTimeout = this.setTimeout(this.makeUnbusyReal.bind(this), this.animationDuration * 1.1);\n };\n /**\r\n * [makeUnbusyReal description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.makeUnbusyReal = function () {\n this._usingGrip = undefined;\n this._isBusy = false;\n if (!this.updateWhileMoving) {\n this.dispatchRangeChange();\n }\n };\n /**\r\n * Disptatches rangechanged event if it really changed\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.dispatchRangeChange = function () {\n if (this._previousEnd != this.end || this._previousStart != this.start) {\n this._previousStart = this.start;\n this._previousEnd = this.end;\n this.dispatch(\"rangechanged\");\n }\n };\n /**\r\n * Updates the \"thumb\" element. A draggable element between the grips.\r\n * @ignore\r\n */\n Scrollbar.prototype.updateThumb = function (dispatchEvents) {\n if (dispatchEvents === void 0) {\n dispatchEvents = true;\n }\n if (!this.parent) {\n return;\n }\n var thumb = this.thumb;\n var start = this.start;\n var end = this.end;\n var startGrip = this.startGrip;\n var endGrip = this.endGrip;\n if (this.orientation == \"horizontal\") {\n var innerWidth_1 = this.innerWidth;\n thumb.width = innerWidth_1 * (end - start);\n thumb.maxX = innerWidth_1 - thumb.pixelWidth;\n thumb.x = start * innerWidth_1;\n startGrip.moveTo({\n x: thumb.pixelX,\n y: 0\n }, undefined, undefined, true); // overrides dragging\n endGrip.moveTo({\n x: thumb.pixelX + thumb.pixelWidth,\n y: 0\n }, undefined, undefined, true);\n startGrip.readerTitle = this.language.translate(\"From %1\", undefined, this.adapter.apply(\"positionValue\", {\n value: Math.round(start * 100) + \"%\",\n position: start\n }).value);\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\n startGrip.readerValueText = startGrip.readerTitle;\n endGrip.readerTitle = this.language.translate(\"To %1\", undefined, this.adapter.apply(\"positionValue\", {\n value: Math.round(end * 100) + \"%\",\n position: end\n }).value);\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\n endGrip.readerValueText = endGrip.readerTitle;\n } else {\n var innerHeight_1 = this.innerHeight;\n thumb.height = innerHeight_1 * (end - start);\n thumb.maxY = innerHeight_1 - thumb.pixelHeight;\n thumb.y = (1 - end) * innerHeight_1;\n startGrip.moveTo({\n x: 0,\n y: thumb.pixelY + thumb.pixelHeight\n }, undefined, undefined, true);\n endGrip.moveTo({\n x: 0,\n y: thumb.pixelY\n }, undefined, undefined, true);\n startGrip.readerTitle = this.language.translate(\"To %1\", undefined, this.adapter.apply(\"positionValue\", {\n value: Math.round((1 - start) * 100) + \"%\",\n position: 1 - start\n }).value);\n startGrip.readerValueNow = \"\" + Math.round(start * 100);\n startGrip.readerValueText = startGrip.readerTitle;\n endGrip.readerTitle = this.language.translate(\"From %1\", undefined, this.adapter.apply(\"positionValue\", {\n value: Math.round((1 - end) * 100) + \"%\",\n position: 1 - end\n }).value);\n endGrip.readerValueNow = \"\" + Math.round(end * 100);\n endGrip.readerValueText = endGrip.readerTitle;\n }\n // Add accessibility\n thumb.readerTitle = this.language.translate(\"From %1 to %2\", undefined, this.adapter.apply(\"positionValue\", {\n value: Math.round(start * 100) + \"%\",\n position: start\n }).value, this.adapter.apply(\"positionValue\", {\n value: Math.round(end * 100) + \"%\",\n position: end\n }).value);\n thumb.readerValueNow = \"\" + Math.round(start * 100);\n thumb.readerValueText = thumb.readerTitle;\n this.readerValueNow = \"\" + Math.round(start * 100);\n this.readerValueText = thumb.readerTitle;\n if (!this._skipRangeEvents && this.updateWhileMoving && dispatchEvents) {\n this.dispatchRangeChange();\n }\n };\n /**\r\n * Updates extremes of the scrollbar.\r\n */\n Scrollbar.prototype.updateExtremes = function () {\n var orientation = this.orientation;\n var minX = 0;\n var minY = 0;\n var maxX = 0;\n var maxY = 0;\n if (orientation == \"horizontal\") {\n maxX = this.innerWidth;\n minY = maxY = this.innerHeight / 2;\n } else {\n maxY = this.innerHeight;\n minX = maxX = this.innerWidth / 2;\n }\n var startGrip = this.startGrip;\n startGrip.minX = minX;\n startGrip.maxX = maxX;\n startGrip.minY = minY;\n startGrip.maxY = maxY;\n var endGrip = this.endGrip;\n endGrip.minX = minX;\n endGrip.maxX = maxX;\n endGrip.minY = minY;\n endGrip.maxY = maxY;\n var thumb = this.thumb;\n thumb.minX = minX;\n thumb.maxX = maxX;\n thumb.minY = minY;\n thumb.maxY = maxY;\n };\n /**\r\n * Updates size of the scrollbar.\r\n */\n Scrollbar.prototype.updateSize = function () {\n var orientation = this.orientation;\n var startGrip = this.startGrip;\n if (startGrip) {\n startGrip.orientation = orientation;\n }\n if (this.endGrip) {\n this.endGrip.orientation = orientation;\n }\n var thumb = this.thumb;\n if (thumb) {\n if (orientation == \"horizontal\") {\n if (!$type.isNumber(this._pixelWidth)) {\n if (!(this.width instanceof Percent)) {\n this.width = percent(100);\n }\n }\n // this teorethically might be wrong, if user indeed sets height of a horizontal scrollbar in percent\n // however without this height might be equal to 100% if previous orientation was set to horizontal\n // so this is ok solution, in case user really wants to have scrollbar height set in percent,\n // he should do this after orientation.\n if ($type.hasValue(this.percentHeight)) {\n this.height = this.minHeight;\n }\n thumb.height = this.innerHeight;\n thumb.verticalCenter = \"middle\";\n thumb.horizontalCenter = \"left\";\n } else {\n if (!$type.isNumber(this._pixelHeight)) {\n if (!(this.height instanceof Percent)) {\n this.height = percent(100);\n }\n }\n // same as above with percentHeight\n if ($type.hasValue(this.percentWidth)) {\n this.width = this.minWidth;\n }\n thumb.width = this.innerWidth;\n thumb.verticalCenter = \"top\";\n thumb.horizontalCenter = \"middle\";\n }\n }\n };\n Object.defineProperty(Scrollbar.prototype, \"isBusy\", {\n /**\r\n * Indicates if the Scrollbar is currently \"busy\" (animating and or\r\n * performing zoom by user interaction).\r\n * @return boolean\r\n */\n get: function () {\n return this._isBusy;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"start\", {\n /**\r\n * @return Position (0-1)\r\n */\n get: function () {\n return Math.min(this.getPosition(this._start), this.getPosition(this._end));\n },\n /**\r\n * ==========================================================================\r\n * POSITIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\n set: function (position) {\n if (!this._isBusy) {\n this.__start = position;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"__start\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this._start;\n },\n /**\r\n * [__start description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\n set: function (position) {\n this._start = this.getPosition(position);\n this.updateThumb();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"end\", {\n /**\r\n * @return Position (0-1)\r\n */\n get: function () {\n return Math.max(this.getPosition(this._start), this.getPosition(this._end));\n },\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\n set: function (position) {\n if (!this._isBusy) {\n this.__end = position;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"__end\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this._end;\n },\n /**\r\n * [__end description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n */\n set: function (position) {\n this._end = this.getPosition(position);\n this.updateThumb();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"range\", {\n /**\r\n * Current selection range.\r\n *\r\n * @readonly\r\n * @return Range\r\n */\n get: function () {\n return {\n start: this.start,\n end: this.end,\n priority: this._usingGrip\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Disables range change events.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.skipRangeEvents = function () {\n if (!this._isBusy) {\n this._skipRangeEvents = true;\n }\n };\n /**\r\n * [fixRange description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n * @param range Range\r\n */\n Scrollbar.prototype.fixRange = function (range) {\n if (range.start != $math.round(this._start, 2) || range.end != $math.round(this._end, 2)) {\n this._start = range.start;\n this._end = range.end;\n this._skipRangeEvents = true;\n this.updateThumb();\n this._skipRangeEvents = false;\n this.thumb.validate();\n this.thumb.background.validate();\n }\n };\n /**\r\n * [getPosition description]\r\n *\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\n Scrollbar.prototype.getPosition = function (position) {\n return $math.fitToRange($math.round(position, 4), 0, 1);\n };\n Object.defineProperty(Scrollbar.prototype, \"orientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * ==========================================================================\r\n * MISC\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Orientation of the scrollbar.\r\n *\r\n * Available options: \"horizontal\" (default) and \"vertical\".\r\n *\r\n * @default \"horizontal\"\r\n * @param value Orientation\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"orientation\", value)) {\n // Set mouse cursors and screen reader tetxt accordingly\n if (value === \"horizontal\") {\n // Mouse styles\n this.startGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\n this.endGrip.cursorOverStyle = MouseCursorStyle.horizontalResize;\n // Reader text\n /*this.readerTitle = this.language.translate(\"Use TAB to select grip buttons or left and right arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use left and right arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use left and right arrows to move left selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use left and right arrows to move right selection\");*/\n } else {\n // Mouse styles\n this.startGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\n this.endGrip.cursorOverStyle = MouseCursorStyle.verticalResize;\n // Reader text\n /*this.readerTitle = this.language.translate(\"Use TAB select grip buttons or up and down arrows to change selection\");\r\n this.thumb.readerDescription = this.language.translate(\"Use up and down arrows to move selection\");\r\n this.startGrip.readerDescription = this.language.translate(\"Use up and down arrows to move upper selection\");\r\n this.endGrip.readerDescription = this.language.translate(\"Use up and down arrows to move lower selection\");*/\n }\n this.updateByOrientation();\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n Scrollbar.prototype.updateByOrientation = function () {};\n Object.defineProperty(Scrollbar.prototype, \"startGrip\", {\n /**\r\n * @return Grip element\r\n */\n get: function () {\n return this._startGrip;\n },\n /**\r\n * ==========================================================================\r\n * GRIPS\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * Start grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\n set: function (button) {\n if (this._startGrip) {\n this.removeDispose(this._startGrip);\n }\n this._startGrip = button;\n this.processGrip(button);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"endGrip\", {\n /**\r\n * @return Grip element\r\n */\n get: function () {\n return this._endGrip;\n },\n /**\r\n * End grip element. (button)\r\n *\r\n * @param button Grip element\r\n */\n set: function (button) {\n if (this._endGrip) {\n this.removeDispose(this._endGrip);\n }\n this._endGrip = button;\n this.processGrip(button);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Decorates the grip button with properties and events.\r\n *\r\n * @ignore Exclude from docs\r\n * @param button Grip button\r\n */\n Scrollbar.prototype.processGrip = function (button) {\n button.parent = this;\n button.isMeasured = false;\n button.focusable = true;\n button.shouldClone = false;\n // Set button defaults\n //button.showSystemTooltip = true; // setting this here is not right because we break inheritance\n button.zIndex = 100;\n button.events.on(\"drag\", this.handleGripDrag, this, false);\n button.events.on(\"dragstop\", this.makeUnbusy, this, false);\n button.events.on(\"down\", this.makeBusy, this, false);\n button.events.on(\"up\", this.makeUnbusy, this, false);\n this._disposers.push(button);\n };\n /**\r\n * Updates positions of related elements after grip element is dragged.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n Scrollbar.prototype.handleGripDrag = function (event) {\n this.makeBusy();\n if (event.target === this._startGrip) {\n this._usingGrip = \"start\";\n } else {\n this._usingGrip = \"end\";\n }\n if (this.orientation == \"horizontal\") {\n this._start = this.startGrip.pixelX / this.innerWidth;\n this._end = this.endGrip.pixelX / this.innerWidth;\n } else {\n this._start = 1 - this.startGrip.pixelY / this.innerHeight;\n this._end = 1 - this.endGrip.pixelY / this.innerHeight;\n }\n this.updateThumb();\n };\n Object.defineProperty(Scrollbar.prototype, \"thumb\", {\n /**\r\n * @return Thumb element\r\n */\n get: function () {\n if (!this._thumb) {\n // Create scrollbar controls (setters will handle adding disposers)\n var thumb = new Button();\n thumb.background.cornerRadius(10, 10, 10, 10);\n thumb.padding(0, 0, 0, 0);\n this.thumb = thumb;\n }\n return this._thumb;\n },\n /**\r\n * A \"thumb\" element.\r\n *\r\n * It's a draggable square space between the grips, that can be used to\r\n * pan the selection.\r\n *\r\n * @param thumb Thumb element\r\n */\n set: function (thumb) {\n var _this = this;\n if (thumb) {\n if (this._thumb) {\n this.removeDispose(this._thumb);\n }\n this._thumb = thumb;\n thumb.parent = this;\n thumb.isMeasured = false;\n thumb.inert = true;\n thumb.draggable = true;\n thumb.clickable = true;\n thumb.hoverable = true;\n thumb.focusable = true;\n thumb.shouldClone = false;\n thumb.zIndex = 0;\n // TODO remove closures ?\n // Add events\n // Add cursor styles to thumb\n thumb.cursorOverStyle = MouseCursorStyle.grab;\n thumb.cursorDownStyle = MouseCursorStyle.grabbing;\n thumb.events.on(\"dragstart\", this.makeBusy, this, false);\n thumb.events.on(\"dragstop\", this.makeUnbusy, this, false);\n thumb.events.on(\"positionchanged\", this.handleThumbPosition, this, false);\n thumb.events.on(\"sizechanged\", this.handleThumbPosition, this, false);\n thumb.events.on(\"doublehit\", this.handleDoubleClick, this, false);\n // Add event for space and ENTER to toggle full zoom out and back\n // (same as doubleclick)\n this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\n if (keyboard.isKey(ev.event, [\"space\", \"enter\"]) && _this.thumb.isFocused) {\n ev.event.preventDefault();\n _this.handleDoubleClick();\n }\n }));\n this._disposers.push(this._thumb);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Zooms-in and out the selection on double-click of the thumb.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.handleDoubleClick = function () {\n this.makeBusy();\n var newStart = 0;\n var newEnd = 1;\n if (this.start != 0 || this.end != 1) {\n this._prevStart = this.start;\n this._prevEnd = this.end;\n } else {\n newStart = this._prevStart;\n newEnd = this._prevEnd;\n }\n var zoomAnimation = this.animate([{\n property: \"__start\",\n to: newStart\n }, {\n property: \"__end\",\n to: newEnd\n }], this.animationDuration, this.animationEasing);\n if (zoomAnimation && !zoomAnimation.isFinished()) {\n zoomAnimation.events.on(\"animationended\", this.makeUnbusy, this, false);\n this._zoomAnimation = zoomAnimation;\n } else {\n this.makeUnbusy();\n }\n };\n /**\r\n * Updates positions of other elements when thumb is moved.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Scrollbar.prototype.handleThumbPosition = function () {\n var thumb = this.thumb;\n if (this.orientation == \"horizontal\") {\n var innerWidth_2 = this.innerWidth;\n var w = thumb.innerWidth;\n var x = thumb.pixelX;\n this._start = x / innerWidth_2;\n this._end = (x + w) / innerWidth_2;\n this.updateThumb();\n } else {\n var innerHeight_2 = this.innerHeight;\n var h = thumb.innerHeight;\n var y = thumb.pixelY;\n this._start = 1 - (y + h) / innerHeight_2;\n this._end = 1 - y / innerHeight_2;\n this.updateThumb();\n }\n };\n /**\r\n * Creates a background element for the scrollbar.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\n Scrollbar.prototype.createBackground = function () {\n return new RoundedRectangle();\n };\n Object.defineProperty(Scrollbar.prototype, \"hideGrips\", {\n /**\r\n * @return Show only on hover?\r\n */\n get: function () {\n return this._hideGrips;\n },\n /**\r\n * Use this property to set whether grips should be always visible (`false`),\r\n * or they should just appear on scrollbar hover (`true`).\r\n *\r\n * @param value Show only on hover?\r\n */\n set: function (value) {\n var _this = this;\n this._hideGrips = value;\n if (this._overDisposer) {\n this.removeDispose(this._overDisposer);\n }\n if (this._outDisposer) {\n this.removeDispose(this._outDisposer);\n }\n if (value) {\n this._overDisposer = this.events.on(\"over\", function () {\n _this.startGrip.show();\n _this.endGrip.show();\n }, undefined, false);\n this._outDisposer = this.events.on(\"out\", function () {\n _this.startGrip.hide();\n _this.endGrip.hide();\n }, undefined, false);\n this.startGrip.hide();\n this.endGrip.hide();\n } else {\n this.startGrip.show();\n this.endGrip.show();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"animationDuration\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"animationDuration\");\n },\n /**\r\n * Duration in milliseconds of scrollbar animation (happens when user clicks on a background of a scrollbar)\r\n * @default 0\r\n * @param value number\r\n */\n set: function (value) {\n this.setPropertyValue(\"animationDuration\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scrollbar.prototype, \"animationEasing\", {\n /**\r\n * @return {Function}\r\n */\n get: function () {\n return this.getPropertyValue(\"animationEasing\");\n },\n /**\r\n * Animation easing function.\r\n * @todo: review description and default\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\n set: function (value) {\n this.setPropertyValue(\"animationEasing\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n Scrollbar.prototype.asFunction = function (field) {\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\n };\n return Scrollbar;\n}(Container);\nexport { Scrollbar };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Scrollbar\"] = Scrollbar;\n//# sourceMappingURL=Scrollbar.js.map","/**\r\n * Slider is a scrollbar with just one selection grip.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a slider - a version of scrollbar with just one grip.\r\n *\r\n * @see {@link ISliderEvents} for a list of available events\r\n * @see {@link ISliderAdapters} for a list of available Adapters\r\n */\nvar Slider = /** @class */function (_super) {\n __extends(Slider, _super);\n /**\r\n * Constructor\r\n */\n function Slider() {\n var _this = _super.call(this) || this;\n _this.className = \"Slider\";\n _this.thumb.opacity = 0;\n _this.thumb.interactionsEnabled = false;\n _this.endGrip.opacity = 0;\n _this.endGrip.interactionsEnabled = false;\n _this.startGrip.events.on(\"drag\", function () {\n _this.endGrip.x = _this.startGrip.x;\n _this.endGrip.y = _this.startGrip.y;\n });\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Slider.prototype, \"__end\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this._start;\n },\n set: function (value) {},\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slider.prototype, \"end\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this._start;\n },\n /**\r\n * Relative position (0-1) of the end grip.\r\n *\r\n * @param position Position (0-1)\r\n */\n set: function (position) {},\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slider.prototype, \"start\", {\n /**\r\n * @return Position (0-1)\r\n */\n get: function () {\n return this._start;\n },\n /**\r\n * Relative position (0-1) of the start grip.\r\n *\r\n * @param position Position (0-1)\r\n */\n set: function (position) {\n if (!this._isBusy) {\n this.__start = position;\n }\n },\n enumerable: true,\n configurable: true\n });\n return Slider;\n}(Scrollbar);\nexport { Slider };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Slider\"] = Slider;\n//# sourceMappingURL=Slider.js.map","/**\r\n * A module that defines Text element used to indicate links.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Label } from \"../../core/elements/Label\";\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a text element with a link.\r\n *\r\n * @see {@link ITextLinkEvents} for a list of available events\r\n * @see {@link ITextLinkAdapters} for a list of available Adapters\r\n */\nvar TextLink = /** @class */function (_super) {\n __extends(TextLink, _super);\n /**\r\n * Constructor\r\n */\n function TextLink() {\n var _this = _super.call(this) || this;\n _this.className = \"TextLink\";\n _this.selectable = true;\n var interfaceColors = new InterfaceColorSet();\n _this.fill = interfaceColors.getFor(\"primaryButton\").brighten(0.3);\n var hoverState = _this.states.create(\"hover\");\n hoverState.properties.fill = interfaceColors.getFor(\"primaryButtonHover\").brighten(0.3);\n var downState = _this.states.create(\"down\");\n downState.properties.fill = interfaceColors.getFor(\"primaryButtonDown\").brighten(0.3);\n _this.cursorOverStyle = MouseCursorStyle.pointer;\n _this.applyTheme();\n return _this;\n }\n return TextLink;\n}(Label);\nexport { TextLink };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"TextLink\"] = TextLink;\n//# sourceMappingURL=TextLink.js.map","/**\r\n * This module contains a base class for an SVG filter.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../../Base\";\nimport { getGhostPaper } from \"../Paper\";\nimport { Animation, AnimationDisposer } from \"../../utils/Animation\";\nimport { List } from \"../../utils/List\";\nimport * as $object from \"../../utils/Object\";\nimport * as $iter from \"../../utils/Iterator\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base filter class.\r\n *\r\n * This class while can be instantiated will not do anything. It is just a base\r\n * functionality for any other \"real\" filters to extend.\r\n *\r\n * Filters can be used to decorate, change and transform just about any DOM\r\n * element.\r\n *\r\n * A Filter works by applying one or more effects (primitives) to SVG element.\r\n *\r\n * For more information on how SVG filters work, refer to\r\n * [this MDN tutorial](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/SVG_Filters_Tutorial).\r\n *\r\n * @todo Example\r\n */\nvar Filter = /** @class */function (_super) {\n __extends(Filter, _super);\n /**\r\n * Constructor\r\n */\n function Filter() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A storage for Filter property/value pairs.\r\n *\r\n * @ignore Exclude from docs\r\n * @see {@link FilterProperties}\r\n */\n _this.properties = {};\n /**\r\n * Identifies if this object is a \"template\" and should not be treated as\r\n * real object that is drawn or actually used in the chart.\r\n */\n _this.isTemplate = false;\n /**\r\n * [_scale description]\r\n *\r\n * @todo Description\r\n */\n _this._scale = 1;\n /**\r\n * [_nonScaling description]\r\n *\r\n * @todo Description\r\n */\n _this._nonScaling = true;\n _this.className = \"Filter\";\n // Create a list to hold primitives (effect elements)\n _this.filterPrimitives = new List();\n _this.properties.filterUnits = \"objectBoundingBox\";\n // Automatically add added primitives to `_disposers` so they are discarded\n // when Filter object is destroyed (disposed)\n _this.filterPrimitives.events.on(\"inserted\", function (ev) {\n _this._disposers.push(ev.newValue);\n });\n // Set default dimensions\n _this.width = 120;\n _this.height = 120;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Appends actual filter elements to the filter group.\r\n *\r\n * @ignore Exclude from docs\r\n * @param filterElement An SVG `<group>` element to add filter element to\r\n */\n Filter.prototype.appendPrimitives = function (filterElement) {\n $iter.each(this.filterPrimitives.iterator(), function (filterPrimitive) {\n filterElement.add(filterPrimitive);\n });\n };\n /**\r\n * Uses Transitions filter's values from current to target. This is used to\r\n * smoothly appear filter, rather than it pop into effect.\r\n *\r\n * @ignore Exclude from docs\r\n * @param animationOptions Animation options\r\n * @param duration Duration in milliseconds\r\n * @param easing Easing function\r\n * @return Animation instance\r\n */\n Filter.prototype.animate = function (animationOptions, duration, easing) {\n var animation = new Animation(this, animationOptions, duration, easing).start();\n return animation;\n };\n Object.defineProperty(Filter.prototype, \"width\", {\n /**\r\n * @return Width (%)\r\n */\n get: function () {\n return this.properties[\"width\"];\n },\n /**\r\n * Width of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.properties[\"width\"] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter.prototype, \"height\", {\n /**\r\n * @return Height\r\n */\n get: function () {\n return this.properties[\"height\"];\n },\n /**\r\n * Height of the filter element in percent.\r\n *\r\n * If the filter is designed to \"bleed out\" of the original target element,\r\n * like for example a shadow, you need this bigger than 100, or the\r\n * non-fitting parts will be clipped.\r\n *\r\n * @default 120\r\n * @param value Height (%)\r\n */\n set: function (value) {\n this.properties[\"height\"] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties from another [[Filter]] object.\r\n *\r\n * @param filter Source [[Filter]] object\r\n */\n Filter.prototype.copyFrom = function (filter) {\n var _this = this;\n _super.prototype.copyFrom.call(this, filter);\n $object.each(filter.properties, function (key, value) {\n _this[key] = value;\n });\n };\n Object.defineProperty(Filter.prototype, \"paper\", {\n /**\r\n * @return Paper\r\n */\n get: function () {\n if (this._paper) {\n return this._paper;\n }\n return getGhostPaper();\n },\n /**\r\n * Sets [[Paper]] instance to create filter's elements in.\r\n *\r\n * @ignore Exclude from docs\r\n * @param paper Paper\r\n */\n set: function (paper) {\n if (this._paper != paper) {\n this._paper = paper;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter.prototype, \"animations\", {\n /**\r\n * All animations currently in play.\r\n *\r\n * @ignore Exclude from docs\r\n * @return List of animations\r\n */\n get: function () {\n if (!this._animations) {\n this._animations = [];\n this._disposers.push(new AnimationDisposer(this._animations));\n }\n return this._animations;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter.prototype, \"scale\", {\n /**\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n return this._scale;\n },\n /**\r\n * [[Sprite]] uses this method to inform filter about it's scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\n set: function (value) {\n this._scale = value;\n this.updateScale();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates filter properties which depend on scale.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Filter.prototype.updateScale = function () {\n // Dummy method for extending classes to override.\n };\n Object.defineProperty(Filter.prototype, \"filterUnits\", {\n /**\r\n * @return Filter units\r\n */\n get: function () {\n return this.properties.filterUnits;\n },\n /**\r\n * Which units are used when drawing filter.\r\n *\r\n * Use `\"userSpaceOnUse\"` when applying filters on a perfectly straight line.\r\n *\r\n * @since 4.9.17\r\n * @default objectBoundingBox\r\n * @param value Filter units\r\n */\n set: function (value) {\n this.properties.filterUnits = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter.prototype, \"nonScaling\", {\n /**\r\n * @return Non scaling?\r\n */\n get: function () {\n return this._nonScaling;\n },\n /**\r\n * If a filter is non scaling, it will look the same even if the sprite is\r\n * scaled, otherwise filter will scale together with a [[Sprite]].\r\n *\r\n * @default false\r\n * @param value Non scaling?\r\n */\n set: function (value) {\n this._nonScaling = value;\n if (!value) {\n this._scale = 1;\n }\n this.updateScale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Filter.prototype, \"sprite\", {\n /**\r\n * A target element this filter is currently attached to.\r\n *\r\n * We need to keep track of it because one filter can be used for just one\r\n * element, so we have to remove it from the old \"parent\" when attaching to\r\n * the new one.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Target element\r\n */\n set: function (value) {\n this.setSprite(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets filter's target element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\n Filter.prototype.setSprite = function (value) {\n if (this._sprite && this._sprite != value) {\n this._sprite.filters.removeValue(this);\n }\n this._sprite = value;\n };\n return Filter;\n}(BaseObject);\nexport { Filter };\n//# sourceMappingURL=Filter.js.map","/**\r\n * Module for \"Drop Shadow\" filter.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Filter } from \"./Filter\";\nimport { color } from \"../../utils/Color\";\nimport { registry } from \"../../Registry\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creats a \"Drop Shadow\" filter.\r\n */\nvar DropShadowFilter = /** @class */function (_super) {\n __extends(DropShadowFilter, _super);\n /**\r\n * Constructor\r\n */\n function DropShadowFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"DropShadowFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.color = color(\"#000\");\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\n _this.feGaussianBlur.attr({\n \"result\": \"blurOut\",\n \"in\": \"SourceGraphic\"\n });\n _this.filterPrimitives.push(_this.feGaussianBlur);\n _this.feOffset = _this.paper.add(\"feOffset\");\n _this.feOffset.attr({\n \"result\": \"offsetBlur\"\n });\n _this.filterPrimitives.push(_this.feOffset);\n _this.feFlood = _this.paper.add(\"feFlood\");\n _this.feFlood.attr({\n \"flood-color\": _this.color\n });\n _this.filterPrimitives.push(_this.feFlood);\n _this.feComposite = _this.paper.add(\"feComposite\");\n _this.feComposite.attr({\n \"in2\": \"offsetBlur\",\n operator: \"in\"\n });\n _this.filterPrimitives.push(_this.feComposite);\n _this.feMerge = _this.paper.addGroup(\"feMerge\");\n _this.feMerge.add(_this.paper.add(\"feMergeNode\"));\n _this.feMerge.add(_this.paper.add(\"feMergeNode\").attr({\n \"in\": \"SourceGraphic\"\n }));\n _this.filterPrimitives.push(_this.feMerge);\n // Set default properties\n _this.width = 200;\n _this.height = 200;\n _this.blur = 1.5;\n _this.dx = 3;\n _this.dy = 3;\n _this.opacity = 0.5;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(DropShadowFilter.prototype, \"color\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n return this.properties.color;\n },\n /**\r\n * Shadow color.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.properties.color = value;\n if (this.feFlood) {\n this.feFlood.attr({\n \"flood-color\": value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadowFilter.prototype, \"opacity\", {\n /**\r\n * @return Opacity (0-1)\r\n */\n get: function () {\n return this.properties.opacity;\n },\n /**\r\n * Opacity of the shadow. (0-1)\r\n *\r\n * @param value Opacity (0-1)\r\n */\n set: function (value) {\n this.properties.opacity = value;\n this.feFlood.attr({\n \"flood-opacity\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadowFilter.prototype, \"dx\", {\n /**\r\n * @return Horizontal offset (px)\r\n */\n get: function () {\n return this.properties.dx;\n },\n /**\r\n * Horizontal offset in pixels.\r\n *\r\n * @param value Horizontal offset (px)\r\n */\n set: function (value) {\n this.properties.dx = value;\n this.feOffset.attr({\n \"dx\": value / this.scale\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadowFilter.prototype, \"dy\", {\n /**\r\n * @return Vertical offset (px)\r\n */\n get: function () {\n return this.properties.dy;\n },\n /**\r\n * Vertical offset in pixels.\r\n *\r\n * @param value Vertical offset (px)\r\n */\n set: function (value) {\n this.properties.dy = value;\n this.feOffset.attr({\n \"dy\": value / this.scale\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropShadowFilter.prototype, \"blur\", {\n /**\r\n * @return Blur\r\n */\n get: function () {\n return this.properties.blur;\n },\n /**\r\n * Blur.\r\n *\r\n * @param value Blur\r\n */\n set: function (value) {\n this.properties.blur = value;\n this.feGaussianBlur.attr({\n \"stdDeviation\": value / this.scale\n });\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [updateScale description]\r\n *\r\n * @todo Description\r\n */\n DropShadowFilter.prototype.updateScale = function () {\n this.dx = this.dx;\n this.dy = this.dy;\n this.blur = this.blur;\n };\n return DropShadowFilter;\n}(Filter);\nexport { DropShadowFilter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DropShadowFilter\"] = DropShadowFilter;\n//# sourceMappingURL=DropShadowFilter.js.map","/**\r\n * Provides functionality used to creating and showing tooltips (balloons).\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { registry } from \"../../core/Registry\";\nimport { PointedRectangle } from \"./PointedRectangle\";\nimport { Label } from \"../elements/Label\";\nimport { Animation } from \"../utils/Animation\";\nimport { color } from \"../utils/Color\";\nimport { DropShadowFilter } from \"../rendering/filters/DropShadowFilter\";\nimport * as $math from \"../utils/Math\";\nimport * as $ease from \"../utils/Ease\";\nimport * as $utils from \"../utils/Utils\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Tooltip displays text and/or multimedia information in a balloon over chart\r\n * area.\r\n * @see {@link ITooltipEvents} for a list of available events\r\n * @see {@link ITooltipAdapters} for a list of available Adapters\r\n */\nvar Tooltip = /** @class */function (_super) {\n __extends(Tooltip, _super);\n /**\r\n * Constructor\r\n */\n function Tooltip() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Holds numeric boundary values. Calculated from the `boundingContainer`.\r\n * @ignore\r\n */\n _this._boundingRect = {\n x: -40000,\n y: -40000,\n width: 80000,\n height: 80000\n };\n /**\r\n * Coordinates tooltip's pointer (stem) should point to.\r\n */\n _this._pointTo = {\n x: 0,\n y: 0\n };\n /**\r\n * If set to `true` the pointer/stem of the Tooltip will not go outside\r\n * Tooltip's width or height depending on pointer's orientation.\r\n *\r\n * @default false\r\n */\n _this.fitPointerToBounds = false;\n /**\r\n * If `tooltipOrientation` is vertical, it can be drawn below or above point\r\n * We need to know this when solving overlapping.\r\n */\n _this._verticalOrientation = \"up\";\n /**\r\n * @ignore\r\n */\n _this.fixDoc = true;\n _this.className = \"Tooltip\";\n _this.isMeasured = false;\n _this.getFillFromObject = true;\n _this.margin(5, 5, 5, 5);\n _this.defaultState.transitionDuration = 1;\n _this.hiddenState.transitionDuration = 1;\n // Create chrome/background\n var background = _this.background;\n background.interactionsEnabled = false;\n background.fillOpacity = 0.9;\n background.strokeWidth = 1;\n background.strokeOpacity = 1;\n background.stroke = color(\"#ffffff\");\n background.cornerRadius = 3;\n background.pointerLength = 6;\n background.pointerBaseWidth = 10;\n var dropShadow = new DropShadowFilter();\n dropShadow.dy = 1;\n dropShadow.dx = 1;\n dropShadow.opacity = 0.5;\n background.filters.push(dropShadow);\n _this.autoTextColor = true;\n // Create text element\n var label = _this.createChild(Label);\n label.shouldClone = false;\n _this.label = label;\n label.padding(7, 12, 4, 12);\n label.interactionsEnabled = false;\n label.horizontalCenter = \"middle\";\n label.fill = color(\"#ffffff\");\n _this._disposers.push(label);\n _this.label.events.on(\"sizechanged\", _this.drawBackground, _this);\n _this.label.zIndex = 1; // @todo remove this line when bg sorting is solved\n // Set defaults\n _this.pointerOrientation = \"vertical\";\n _this.animationDuration = 0;\n _this.animationEasing = $ease.cubicOut;\n _this.setPropertyValue(\"showInViewport\", false);\n // Set accessibility options\n _this.role = \"tooltip\";\n _this.visible = false;\n _this.opacity = 0;\n _this.x = 0;\n _this.y = 0;\n _this.events.on(\"visibilitychanged\", _this.handleVisibility, _this);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Tooltip.prototype.handleVisibility = function () {\n if (this.visible) {\n this.label.invalidate();\n }\n };\n Object.defineProperty(Tooltip.prototype, \"getStrokeFromObject\", {\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default false\r\n */\n get: function () {\n return this.getPropertyValue(\"getStrokeFromObject\");\n },\n /**\r\n * Specifies if tooltip background should get stroke color from the sprite it is pointing to.\r\n *\r\n * @param value boolean\r\n */\n set: function (value) {\n this.setPropertyValue(\"getStrokeFromObject\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"autoTextColor\", {\n /**\r\n * @return {boolean}\r\n */\n get: function () {\n return this.getPropertyValue(\"autoTextColor\");\n },\n /**\r\n * Specifies if text color should be chosen automatically for a better\r\n * readability.\r\n *\r\n * IMPORTANT: this feature is generally ignored, if `getFillFromObject = false`.\r\n *\r\n * If inheriting of `fill` color from object tooltip is displayed for is\r\n * disabled, this feature will not work. If you are explicitly setting a\r\n * color for tooltip background, you may set a color for its label as well\r\n * using `tooltip.label.fill` property.\r\n *\r\n *\r\n * @param value boolean\r\n */\n set: function (value) {\n this.setPropertyValue(\"autoTextColor\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"keepTargetHover\", {\n /**\r\n * @return Keep target hovered?\r\n */\n get: function () {\n return this.getPropertyValue(\"keepTargetHover\");\n },\n /**\r\n * If this tooltip is displayed on hover on some other object, keep that\r\n * element hovered if hovering on the tooltip.\r\n *\r\n * @default false\r\n * @since 4.1.13\r\n * @param value Keep target hovered?\r\n */\n set: function (value) {\n var _this = this;\n if (this.setPropertyValue(\"keepTargetHover\", value, true)) {\n if (value) {\n this.hoverable = true;\n this.background.interactionsEnabled = true;\n this._disposers.push(this.events.on(\"over\", function (ev) {\n if (_this.targetSprite && _this.targetSprite.hoverable) {\n _this.targetSprite.isHover = true;\n }\n }));\n this._disposers.push(this.events.on(\"out\", function (ev) {\n if (_this.targetSprite && _this.targetSprite.hoverable) {\n //this.hideTooltip();\n //this.targetSprite.handleOut();\n _this.targetSprite.isHover = false;\n }\n }));\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"showInViewport\", {\n /**\r\n * @return Force showing tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"showInViewport\");\n },\n /**\r\n * Normally, a tooltip will hide itself if it is pointing to a coordinate\r\n * that is outside viewport.\r\n *\r\n * Setting this setting to `true` will override that and make tooltip\r\n * appear next to the viewport edge closest to the target point.\r\n *\r\n * @default false\r\n * @since 4.5.7\r\n * @param value Force showing tooltip?\r\n */\n set: function (value) {\n this.setPropertyValue(\"showInViewport\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"getFillFromObject\", {\n /**\r\n * Specifies if tooltip background should get fill color from the sprite it is pointing to.\r\n *\r\n * @return {boolean}\r\n * @default true\r\n */\n get: function () {\n return this.getPropertyValue(\"getFillFromObject\");\n },\n /**\r\n * @param value boolean\r\n */\n set: function (value) {\n this.setPropertyValue(\"getFillFromObject\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates and returns a background element.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Background\r\n */\n Tooltip.prototype.createBackground = function () {\n return new PointedRectangle();\n };\n Object.defineProperty(Tooltip.prototype, \"pointerOrientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"pointerOrientation\");\n },\n /**\r\n * Pointer orientation: `\"horizontal\"`, `\"vertical\"`, `\"up\"`, `\"down\"`,\r\n * `\"right\"`, or `\"left\"`.\r\n *\r\n * Options`\"horizontal\"` or `\"vertical\"` are location-aware, meaning they\r\n * will change position of the Tooltip based on the target point's position\r\n * in relation to chart center.\r\n *\r\n * Options `\"up\"`, `\"down\"`, `\"right\"`, `\"left\"` are static and will point\r\n * in the specified direction regardless of the position, even if that means\r\n * going out of chart/screen bounds.\r\n *\r\n * IMPORTANT: in some situations, like having multiple tooltips stacked for\r\n * multiple series, the `\"up\"` and `\"down\"` values might be ignored in order\r\n * to make tooltip overlap algorithm work.\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\n set: function (value) {\n this.setPropertyValue(\"pointerOrientation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"animationDuration\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"animationDuration\");\n },\n /**\r\n * Duration in milliseconds for the animation to take place when the tooltip\r\n * is moving from one place to another.\r\n *\r\n * @default 0\r\n * @param value number\r\n */\n set: function (value) {\n this.setPropertyValue(\"animationDuration\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"animationEasing\", {\n /**\r\n * @return {Function}\r\n */\n get: function () {\n return this.getPropertyValue(\"animationEasing\");\n },\n /**\r\n * Tooltip animation (moving from one place to another) easing function.\r\n *\r\n * @default $ease.cubicOut\r\n * @param value (value: number) => number\r\n */\n set: function (value) {\n this.setPropertyValue(\"animationEasing\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"html\", {\n /**\r\n * @return HTML content\r\n */\n get: function () {\n return this.label.html;\n },\n /**\r\n * HTML content for the Tooltip.\r\n *\r\n * Provided value will be used as is, without applying any further\r\n * formatting to it.\r\n *\r\n * @param value HTML content\r\n */\n set: function (value) {\n if (this.label.html != value) {\n this.label.html = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"text\", {\n /**\r\n * @return SVG text\r\n */\n get: function () {\n return this.label.text;\n },\n /**\r\n * SVG text content for the Tooltip.\r\n *\r\n * Text can have a number of formatting options supported by\r\n * [[TextFormatter]].\r\n *\r\n * @param value SVG text\r\n */\n set: function (value) {\n if (this.label.text != value) {\n this.label.text = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Tooltip.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var label = this.label;\n if (label.invalid) {\n label.validate();\n }\n var x = this._pointTo.x;\n var y = this._pointTo.y;\n var boundingRect = this._boundingRect;\n var textW = label.measuredWidth;\n var textH = label.measuredHeight;\n var pointerLength = this.background.pointerLength;\n var textX;\n var textY;\n if (this.ignoreBounds) {\n boundingRect = undefined;\n }\n // try to handle if text is wider than br\n if (boundingRect && this.fixDoc && textW > boundingRect.width) {\n // TODO maybe this isn't needed ?\n $utils.spritePointToDocument({\n x: boundingRect.x,\n y: boundingRect.y\n }, this.parent);\n var p1 = $utils.spritePointToDocument({\n x: boundingRect.x + boundingRect.width,\n y: boundingRect.y + boundingRect.height\n }, this.parent);\n var documentWidth = document.body.offsetWidth;\n // TODO maybe this isn't needed ?\n $utils.used(document.body.offsetHeight);\n if (p1.x > documentWidth / 2) {\n boundingRect.x = boundingRect.width - textW;\n } else {\n boundingRect.width = boundingRect.x + textW;\n }\n }\n var pointerOrientation = this.pointerOrientation;\n // horizontal\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\n textY = -textH / 2;\n if (pointerOrientation == \"horizontal\") {\n if (boundingRect && x > boundingRect.x + boundingRect.width / 2) {\n textX = -textW / 2 - pointerLength;\n } else {\n textX = textW / 2 + pointerLength;\n }\n } else if (pointerOrientation == \"left\") {\n textX = textW / 2 + pointerLength;\n } else {\n textX = -textW / 2 - pointerLength;\n }\n }\n // vertical pointer\n else {\n if (boundingRect) {\n textX = $math.fitToRange(0, boundingRect.x - x + textW / 2, boundingRect.x - x + boundingRect.width - textW / 2);\n }\n if (pointerOrientation == \"vertical\") {\n if (boundingRect && y > boundingRect.y + textH + pointerLength) {\n textY = -textH - pointerLength;\n this._verticalOrientation = \"up\";\n } else {\n textY = pointerLength;\n this._verticalOrientation = \"down\";\n }\n } else if (pointerOrientation == \"down\") {\n textY = -textH - pointerLength;\n this._verticalOrientation = \"up\";\n } else {\n textY = pointerLength;\n this._verticalOrientation = \"down\";\n }\n }\n if (boundingRect) {\n textY = $math.fitToRange(textY, boundingRect.y - y, boundingRect.y + boundingRect.height - textH - y);\n }\n label.x = textX;\n label.y = textY;\n this.drawBackground();\n };\n /**\r\n * Overrides functionality from the superclass.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Tooltip.prototype.updateBackground = function () {\n this.group.addToBack(this.background.group);\n };\n /**\r\n * Draws Tooltip background (chrome, background and pointer/stem).\r\n *\r\n * @ignore Exclude from docs\r\n */\n Tooltip.prototype.drawBackground = function () {\n var label = this.label;\n var background = this.background;\n var textWidth = label.measuredWidth;\n var textHeight = label.measuredHeight;\n var boundingRect = this._boundingRect;\n var bgWidth = textWidth;\n var bgX = label.pixelX - textWidth / 2;\n var bgHeight = textHeight;\n var bgY = label.pixelY;\n var x = this._pointTo.x;\n var y = this._pointTo.y;\n var boundX1 = boundingRect.x - x;\n var boundX2 = boundX1 + boundingRect.width;\n var boundY1 = boundingRect.y - y;\n var boundY2 = boundY1 + boundingRect.height;\n background.x = bgX;\n background.y = bgY;\n background.width = bgWidth;\n background.height = bgHeight;\n if (this.fitPointerToBounds) {\n background.pointerX = $math.fitToRange(-background.x, boundX1 - background.x, boundX2 - background.x);\n background.pointerY = $math.fitToRange(-background.y, boundY1 - background.y, boundY2 - background.y);\n } else {\n background.pointerX = -background.x;\n background.pointerY = -background.y;\n }\n background.validate();\n };\n /**\r\n *\r\n */\n Tooltip.prototype.delayedPointTo = function (point, instantly) {\n var _this = this;\n if (this._pointToDisposer) {\n this._pointToDisposer.dispose();\n }\n this._pointToDisposer = registry.events.once(\"exitframe\", function () {\n _this.pointTo(point, instantly);\n });\n this.addDisposer(this._pointToDisposer);\n };\n /**\r\n * Set nes tooltip's anchor point and moves whole tooltip.\r\n *\r\n * @param x X coordinate\r\n * @param y Y coordinate\r\n */\n Tooltip.prototype.pointTo = function (point, instantly) {\n if (this._pointTo.x != point.x || this._pointTo.y != point.y) {\n this._pointTo = point;\n this.invalidate();\n // this helps to avoid strange animation from nowhere on initial show or when balloon was hidden already\n if (!this.visible || instantly) {\n this.moveTo(this._pointTo);\n if (this._animation) {\n this._animation.kill();\n }\n } else {\n // helps to avoid flicker on top/left corner\n if (this.pixelX == 0 && this.pixelY == 0) {\n this.moveTo(this._pointTo);\n } else {\n if (this._animation) {\n this._animation.kill();\n }\n this._animation = new Animation(this, [{\n property: \"x\",\n to: point.x,\n from: this.pixelX\n }, {\n property: \"y\",\n to: point.y,\n from: this.pixelY\n }], this.animationDuration, this.animationEasing).start();\n }\n }\n }\n };\n /**\r\n * Sets numeric boundaries Tooltip needs to obey (so it does not go outside\r\n * specific area).\r\n *\r\n * @ignore Exclude from docs\r\n * @param rectangle Boundary rectangle\r\n */\n Tooltip.prototype.setBounds = function (rectangle) {\n var oldRect = this._boundingRect;\n if (oldRect.x != rectangle.x || oldRect.y != rectangle.y || oldRect.width != rectangle.width || oldRect.height != rectangle.height) {\n this._boundingRect = rectangle;\n this.invalidate();\n }\n };\n Object.defineProperty(Tooltip.prototype, \"boundingContainer\", {\n /**\r\n * Sets a [[Container]] instance to be used when calculating numeric\r\n * boundaries for the Tooltip.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Boundary container\r\n */\n set: function (container) {\n this._boundingContainer = container;\n // TODO remove closures ?\n container.events.on(\"sizechanged\", this.updateBounds, this);\n container.events.on(\"positionchanged\", this.updateBounds, this);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates numeric boundaries for the Tooltip, based on the\r\n * `boundingCountrainer`.\r\n */\n Tooltip.prototype.updateBounds = function () {\n var boundingContainer = this._boundingContainer;\n // to global\n var rect = $utils.spriteRectToSvg({\n x: boundingContainer.pixelX,\n y: boundingContainer.pixelY,\n width: boundingContainer.maxWidth,\n height: boundingContainer.maxHeight\n }, boundingContainer);\n this.setBounds(rect);\n };\n Object.defineProperty(Tooltip.prototype, \"ignoreBounds\", {\n /**\r\n * @return Ignore chart bounds?\r\n */\n get: function () {\n return this.getPropertyValue(\"ignoreBounds\");\n },\n /**\r\n * Normally, a tooltip's position will be adjusted so it always fits into\r\n * chart's coundaries.\r\n *\r\n * Setting this to `false` will disable such checks and will allow tooltip\r\n * to \"bleed over\" the edge of the chart.\r\n *\r\n * @default false\r\n * @since 4.10.8\r\n * @param value Ignore chart bounds?\r\n */\n set: function (value) {\n this.setPropertyValue(\"ignoreBounds\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"verticalOrientation\", {\n /**\r\n * If tooltipOrientation is vertical, it can be drawn below or above point.\r\n * We need to know this when solving overlapping.\r\n *\r\n * @ignore Exclude from docs\r\n * @return \"up\" | \"down\"\r\n */\n get: function () {\n return this._verticalOrientation;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Tooltip.prototype, \"tooltip\", {\n /**\r\n * To avoid stackoverflow\r\n * @ignore\r\n */\n get: function () {\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties and other attributes.\r\n *\r\n * @param source Source\r\n */\n Tooltip.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.label.copyFrom(source.label);\n if (source._boundingRect) {\n this._boundingRect = source._boundingRect;\n }\n };\n /**\r\n * Adds easing functions to \"function\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as function?\r\n */\n Tooltip.prototype.asFunction = function (field) {\n return field == \"animationEasing\" || _super.prototype.asIs.call(this, field);\n };\n return Tooltip;\n}(Container);\nexport { Tooltip };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Tooltip\"] = Tooltip;\n//# sourceMappingURL=Tooltip.js.map","/**\r\n * Functionality for drawing a trapezoid.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../Registry\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $type from \"../utils/Type\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw a Trapezoid.\r\n *\r\n * @see {@link ITrapezoidEvents} for a list of available events\r\n * @see {@link ITrapezoidAdapters} for a list of available Adapters\r\n */\nvar Trapezoid = /** @class */function (_super) {\n __extends(Trapezoid, _super);\n /**\r\n * Constructor\r\n */\n function Trapezoid() {\n var _this = _super.call(this) || this;\n _this.className = \"Trapezoid\";\n _this.element = _this.paper.add(\"path\");\n _this.topSide = percent(100);\n _this.bottomSide = percent(100);\n _this.leftSide = percent(100);\n _this.rightSide = percent(100);\n _this.isMeasured = false; // todo: add measureElement\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Trapezoid.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.pixelWidth;\n var h = this.pixelHeight;\n var ts = $utils.relativeToValue(this.topSide, w);\n var bs = $utils.relativeToValue(this.bottomSide, w);\n var ls = $utils.relativeToValue(this.leftSide, h);\n var rs = $utils.relativeToValue(this.rightSide, h);\n // 1----2\n // | |\n // 4----3\n var x0 = (w - ts) / 2;\n var y0 = (h - ls) / 2;\n var x1 = w - (w - ts) / 2;\n var y1 = (h - rs) / 2;\n var x2 = w - (w - bs) / 2;\n var y2 = h - (h - rs) / 2;\n var x3 = (w - bs) / 2;\n var y3 = h - (h - ls) / 2;\n var mt = \"\";\n var mr = \"\";\n var mb = \"\";\n var ml = \"\";\n if ($type.hasValue(this.horizontalNeck)) {\n var hn = this.horizontalNeck.value;\n mt = $path.lineTo({\n x: w * hn,\n y: Math.max(y0, y1)\n });\n mb = $path.lineTo({\n x: w * hn,\n y: Math.min(y2, y3)\n });\n }\n if ($type.hasValue(this.verticalNeck)) {\n var vn = this.verticalNeck.value;\n mr = $path.lineTo({\n x: Math.min(x1, x2),\n y: h * vn\n });\n ml = $path.lineTo({\n x: Math.max(x0, x3),\n y: h * vn\n });\n }\n var path = $path.moveTo({\n x: x0,\n y: y0\n }) + mt + $path.lineTo({\n x: x1,\n y: y1\n }) + mr + $path.lineTo({\n x: x2,\n y: y2\n }) + mb + $path.lineTo({\n x: x3,\n y: y3\n }) + ml;\n this.path = path;\n };\n Object.defineProperty(Trapezoid.prototype, \"topSide\", {\n /**\r\n * @return Width\r\n */\n get: function () {\n return this.getPropertyValue(\"topSide\");\n },\n /**\r\n * Wdith of the top side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\n set: function (value) {\n this.setPercentProperty(\"topSide\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Trapezoid.prototype, \"bottomSide\", {\n /**\r\n * @return Width\r\n */\n get: function () {\n return this.getPropertyValue(\"bottomSide\");\n },\n /**\r\n * Wdith of the bottom side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Width\r\n */\n set: function (value) {\n this.setPercentProperty(\"bottomSide\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Trapezoid.prototype, \"leftSide\", {\n /**\r\n * @return Height\r\n */\n get: function () {\n return this.getPropertyValue(\"leftSide\");\n },\n /**\r\n * Height of the left side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\n set: function (value) {\n this.setPercentProperty(\"leftSide\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Trapezoid.prototype, \"rightSide\", {\n /**\r\n * @return Height\r\n */\n get: function () {\n return this.getPropertyValue(\"rightSide\");\n },\n /**\r\n * Height of the right side. Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(100)\r\n * @param value Height\r\n */\n set: function (value) {\n this.setPercentProperty(\"rightSide\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Trapezoid.prototype, \"horizontalNeck\", {\n /**\r\n * @return Horizontal neck position\r\n */\n get: function () {\n return this.getPropertyValue(\"horizontalNeck\");\n },\n /**\r\n * A relative vertical position of the \"neck\". If the top and bottom sides\r\n * are of different width, and `horizontalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Horizontal neck position\r\n */\n set: function (value) {\n this.setPropertyValue(\"horizontalNeck\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Trapezoid.prototype, \"verticalNeck\", {\n /**\r\n * @return Vertical neck position\r\n */\n get: function () {\n return this.getPropertyValue(\"verticalNeck\");\n },\n /**\r\n * A relative horizontal position of the \"neck\". If the left and right sides\r\n * are of different height, and `verticalNeck` is set, a choke point\r\n * will be created at that position, creating a funnel shape.\r\n *\r\n * @param value Vertical neck position\r\n */\n set: function (value) {\n this.setPropertyValue(\"verticalNeck\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return Trapezoid;\n}(Sprite);\nexport { Trapezoid };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Trapezoid\"] = Trapezoid;\n//# sourceMappingURL=Trapezoid.js.map","/**\r\n * Functionality for drawing triangles.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw a triangle.\r\n *\r\n * @see {@link ITriangleEvents} for a list of available events\r\n * @see {@link ITriangleAdapters} for a list of available Adapters\r\n */\nvar Triangle = /** @class */function (_super) {\n __extends(Triangle, _super);\n /**\r\n * Constructor\r\n */\n function Triangle() {\n var _this = _super.call(this) || this;\n _this.className = \"Triangle\";\n _this.element = _this.paper.add(\"path\");\n _this.direction = \"top\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Triangle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.pixelWidth;\n var h = this.pixelHeight;\n var path;\n switch (this.direction) {\n case \"right\":\n path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: h / 2\n }) + $path.lineTo({\n x: 0,\n y: h\n }) + $path.closePath();\n break;\n case \"left\":\n path = $path.moveTo({\n x: w,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: h / 2\n }) + $path.lineTo({\n x: w,\n y: h\n }) + $path.closePath();\n break;\n case \"bottom\":\n path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: 0\n }) + $path.lineTo({\n x: w / 2,\n y: h\n }) + $path.closePath();\n break;\n case \"top\":\n path = $path.moveTo({\n x: w / 2,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: h\n }) + $path.lineTo({\n x: 0,\n y: h\n }) + $path.closePath();\n break;\n }\n this.path = path;\n };\n Object.defineProperty(Triangle.prototype, \"direction\", {\n /**\r\n * Returns direction of a triangle\r\n *\r\n * @return value\r\n */\n get: function () {\n return this.getPropertyValue(\"direction\");\n },\n /**\r\n * Sets direction of a triangle\r\n *\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"direction\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return Triangle;\n}(Sprite);\nexport { Triangle };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Triangle\"] = Triangle;\n//# sourceMappingURL=Triangle.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { registry } from \"../Registry\";\nimport * as $path from \"./Path\";\nimport * as $array from \"../utils/Array\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $math from \"../utils/Math\";\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar Tension = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n */\n function Tension(tensionX, tensionY) {\n this._tensionX = tensionX;\n this._tensionY = tensionY;\n }\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\n Tension.prototype.smooth = function (points) {\n for (var i = points.length - 1; i > 0; i--) {\n var p0 = points[i];\n var p1 = points[i - 1];\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\n points.splice(i - 1, 1);\n }\n }\n var tensionX = this._tensionX;\n var tensionY = this._tensionY;\n if (points.length < 3 || tensionX >= 1 && tensionY >= 1) {\n return $path.polyline(points);\n }\n var first = points[0];\n var last = points[points.length - 1];\n var closed = false;\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\n closed = true;\n }\n // Can't moveTo here, as it wont be possible to have fill then.\n var path = \"\";\n for (var i = 0, len = points.length - 1; i < len; i++) {\n var p0 = points[i - 1];\n var p1 = points[i];\n var p2 = points[i + 1];\n var p3 = points[i + 2];\n if (i === 0) {\n if (closed) {\n p0 = points[points.length - 2];\n } else {\n p0 = points[i];\n }\n } else if (i == points.length - 2) {\n if (closed) {\n p3 = points[1];\n } else {\n p3 = points[i + 1];\n }\n }\n var controlPointA = $math.getCubicControlPointA(p0, p1, p2, p3, tensionX, tensionY);\n var controlPointB = $math.getCubicControlPointB(p0, p1, p2, p3, tensionX, tensionY);\n path += $path.cubicCurveTo(p2, controlPointA, controlPointB);\n }\n return path;\n };\n return Tension;\n}();\nexport { Tension };\n/**\r\n * Returns a waved line SVG path between two points.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point1 Starting point\r\n * @param point2 Ending point\r\n * @param waveLength Wave length\r\n * @param waveHeight Wave height\r\n * @param adjustWaveLength Adjust wave length based on the actual line length\r\n * @return SVG path\r\n */\nexport function wavedLine(point1, point2, waveLength, waveHeight, tension, adjustWaveLength) {\n var x1 = point1.x;\n var y1 = point1.y;\n var x2 = point2.x;\n var y2 = point2.y;\n var distance = $math.getDistance(point1, point2);\n if (adjustWaveLength) {\n waveLength = distance / Math.round(distance / waveLength);\n }\n var d = registry.getCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]));\n if (!d) {\n if (distance > 0) {\n var angle = Math.atan2(y2 - y1, x2 - x1);\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var waveLengthX = waveLength * cos;\n var waveLengthY = waveLength * sin;\n if (waveLength <= 1 || waveHeight <= 1) {\n d = $path.lineTo(point2);\n } else {\n var halfWaveCount = Math.round(2 * distance / waveLength);\n var points = [];\n var sign_1 = 1;\n if (x2 < x1) {\n sign_1 *= -1;\n }\n if (y2 < y1) {\n sign_1 *= -1;\n }\n for (var i = 0; i <= halfWaveCount; i++) {\n sign_1 *= -1;\n var x = x1 + i * waveLengthX / 2 + sign_1 * waveHeight / 2 * sin;\n var y = y1 + i * waveLengthY / 2 - sign_1 * waveHeight / 2 * cos;\n points.push({\n x: x,\n y: y\n });\n }\n d = new Tension(tension, tension).smooth(points);\n }\n } else {\n d = \"\";\n }\n registry.setCache($utils.stringify([\"wavedLine\", point1.x, point2.x, point1.y, point2.y, waveLength, waveHeight]), d);\n }\n return d;\n}\nvar Monotone = /** @class */function () {\n function Monotone(reversed, info) {\n this._reversed = reversed;\n this._closed = info.closed;\n }\n // According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n // \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n // with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\n Monotone.prototype._curve = function (x0, x1, y0, y1, t0, t1) {\n var dx = (x1 - x0) / 3;\n if (this._reversed) {\n return $path.cubicCurveTo({\n x: y1,\n y: x1\n }, {\n x: y0 + dx * t0,\n y: x0 + dx\n }, {\n x: y1 - dx * t1,\n y: x1 - dx\n });\n } else {\n return $path.cubicCurveTo({\n x: x1,\n y: y1\n }, {\n x: x0 + dx,\n y: y0 + dx * t0\n }, {\n x: x1 - dx,\n y: y1 - dx * t1\n });\n }\n };\n Monotone.prototype.smooth = function (points) {\n var _this = this;\n var x0 = NaN;\n var x1 = NaN;\n var y0 = NaN;\n var y1 = NaN;\n var t0 = NaN;\n var point = 0;\n var output = \"\";\n $array.each(points, function (_a) {\n var x = _a.x,\n y = _a.y;\n if (_this._reversed) {\n var temp = x;\n x = y;\n y = temp;\n }\n var t1 = NaN;\n if (!(x === x1 && y === y1)) {\n switch (point) {\n case 0:\n point = 1;\n if (_this._reversed) {\n output += $path.lineTo({\n x: y,\n y: x\n });\n } else {\n output += $path.lineTo({\n x: x,\n y: y\n });\n }\n break;\n case 1:\n point = 2;\n break;\n case 2:\n point = 3;\n output += _this._curve(x0, x1, y0, y1, slope2(x0, x1, y0, y1, t1 = slope3(x0, x1, y0, y1, x, y)), t1);\n break;\n default:\n output += _this._curve(x0, x1, y0, y1, t0, t1 = slope3(x0, x1, y0, y1, x, y));\n break;\n }\n x0 = x1;\n x1 = x;\n y0 = y1;\n y1 = y;\n t0 = t1;\n }\n });\n switch (point) {\n case 2:\n if (this._reversed) {\n output += $path.lineTo({\n x: y1,\n y: x1\n });\n } else {\n output += $path.lineTo({\n x: x1,\n y: y1\n });\n }\n break;\n case 3:\n output += this._curve(x0, x1, y0, y1, t0, slope2(x0, x1, y0, y1, t0));\n break;\n }\n if (this._closed) {\n output += $path.closePath();\n }\n return output;\n };\n return Monotone;\n}();\nexport { Monotone };\n// TODO move this someplace else\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\nfunction slope2(x0, x1, y0, y1, t) {\n var h = x1 - x0;\n return h ? (3 * (y1 - y0) / h - t) / 2 : t;\n}\nfunction slope3(x0, x1, y0, y1, x2, y2) {\n var h0 = x1 - x0;\n var h1 = x2 - x1;\n var s0 = (y1 - y0) / (h0 || h1 < 0 && -0);\n var s1 = (y2 - y1) / (h1 || h0 < 0 && -0);\n var p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\nvar MonotoneX = /** @class */function (_super) {\n __extends(MonotoneX, _super);\n function MonotoneX(info) {\n return _super.call(this, false, info) || this;\n }\n return MonotoneX;\n}(Monotone);\nexport { MonotoneX };\nvar MonotoneY = /** @class */function (_super) {\n __extends(MonotoneY, _super);\n function MonotoneY(info) {\n return _super.call(this, true, info) || this;\n }\n return MonotoneY;\n}(Monotone);\nexport { MonotoneY };\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nvar Basis = /** @class */function () {\n /**\r\n * Constructor.\r\n *\r\n * @param info [description]\r\n */\n function Basis(info) {\n this._closed = info.closed;\n }\n /**\r\n * [smooth description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param points [description]\r\n * @return [description]\r\n */\n Basis.prototype.smooth = function (points) {\n var _this = this;\n var x0 = NaN;\n var x1 = NaN;\n var x2 = NaN;\n var x3 = NaN;\n var x4 = NaN;\n var y0 = NaN;\n var y1 = NaN;\n var y2 = NaN;\n var y3 = NaN;\n var y4 = NaN;\n var point = 0;\n var output = \"\";\n var pushCurve = function (x, y) {\n output += $path.cubicCurveTo({\n x: (x0 + 4 * x1 + x) / 6,\n y: (y0 + 4 * y1 + y) / 6\n }, {\n x: (2 * x0 + x1) / 3,\n y: (2 * y0 + y1) / 3\n }, {\n x: (x0 + 2 * x1) / 3,\n y: (y0 + 2 * y1) / 3\n });\n };\n var pushPoint = function (_a) {\n var x = _a.x,\n y = _a.y;\n switch (point) {\n case 0:\n point = 1;\n if (_this._closed) {\n x2 = x;\n y2 = y;\n } else {\n output += $path.lineTo({\n x: x,\n y: y\n });\n }\n break;\n case 1:\n point = 2;\n if (_this._closed) {\n x3 = x;\n y3 = y;\n }\n break;\n case 2:\n point = 3;\n if (_this._closed) {\n x4 = x;\n y4 = y;\n output += $path.moveTo({\n x: (x0 + 4 * x1 + x) / 6,\n y: (y0 + 4 * y1 + y) / 6\n });\n break;\n } else {\n output += $path.lineTo({\n x: (5 * x0 + x1) / 6,\n y: (5 * y0 + y1) / 6\n });\n // fall-through\n }\n default:\n pushCurve(x, y);\n break;\n }\n x0 = x1;\n x1 = x;\n y0 = y1;\n y1 = y;\n };\n $array.each(points, pushPoint);\n if (this._closed) {\n switch (point) {\n case 1:\n output += $path.moveTo({\n x: x2,\n y: y2\n });\n output += $path.closePath();\n break;\n case 2:\n output += $path.moveTo({\n x: (x2 + 2 * x3) / 3,\n y: (y2 + 2 * y3) / 3\n });\n output += $path.lineTo({\n x: (x3 + 2 * x2) / 3,\n y: (y3 + 2 * y2) / 3\n });\n output += $path.closePath();\n break;\n case 3:\n pushPoint({\n x: x2,\n y: y2\n });\n pushPoint({\n x: x3,\n y: y3\n });\n pushPoint({\n x: x4,\n y: y4\n });\n break;\n }\n } else {\n switch (point) {\n case 3:\n pushCurve(x1, y1);\n // fall-through\n case 2:\n output += $path.lineTo({\n x: x1,\n y: y1\n });\n break;\n }\n output += $path.closePath();\n }\n return output;\n };\n return Basis;\n}();\nexport { Basis };\n//# sourceMappingURL=Smoothing.js.map","/**\r\n * Functionality for drawing waved circles.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Circle } from \"./Circle\";\nimport { registry } from \"../Registry\";\nimport * as $path from \"../rendering/Path\";\nimport * as $math from \"../utils/Math\";\nimport * as $utils from \"../utils/Utils\";\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a waved circle.\r\n *\r\n * @see {@link IWavedCircleEvents} for a list of available events\r\n * @see {@link IWavedCircleAdapters} for a list of available Adapters\r\n */\nvar WavedCircle = /** @class */function (_super) {\n __extends(WavedCircle, _super);\n /**\r\n * Constructor\r\n */\n function WavedCircle() {\n var _this = _super.call(this) || this;\n _this.className = \"WavedCircle\";\n _this.element = _this.paper.add(\"path\");\n _this.waveLength = 16;\n _this.waveHeight = 4;\n _this.fill = undefined;\n _this.fillOpacity = 0;\n _this.tension = 0.8;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\n WavedCircle.prototype.draw = function () {\n var path = \"\";\n var radius = this.pixelRadius;\n if (radius > 0) {\n var points = this.getPoints(radius);\n path = $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\n }\n var innerRadius = this.pixelInnerRadius;\n if (innerRadius > 0) {\n var points = this.getPoints(innerRadius);\n points.reverse();\n path += $path.moveTo(points[0]) + new $smoothing.Tension(this.tension, this.tension).smooth(points);\n }\n this.path = path;\n };\n /**\r\n * Returns points that circle consists of.\r\n *\r\n * @param radius Radius (px)\r\n * @return Points\r\n */\n WavedCircle.prototype.getPoints = function (radius) {\n var circleLength = radius * Math.PI * 2;\n var halfWaveHeight = this.waveHeight / 2;\n var waveLength = circleLength / Math.round(circleLength / this.waveLength);\n var halfWaveLength = waveLength / 2;\n var points = [];\n var count = circleLength / waveLength;\n for (var i = 0; i <= count; i++) {\n var angle1 = i * waveLength / circleLength * 360;\n var angle2 = (i * waveLength + halfWaveLength) / circleLength * 360;\n points.push({\n x: (radius - halfWaveHeight) * $math.cos(angle1),\n y: (radius - halfWaveHeight) * $math.sin(angle1)\n });\n points.push({\n x: (radius + halfWaveHeight) * $math.cos(angle2),\n y: (radius + halfWaveHeight) * $math.sin(angle2)\n });\n }\n points.pop();\n return points;\n };\n Object.defineProperty(WavedCircle.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the circle in pixels (absolute) or [[Percent]] (relative).\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedCircle.prototype, \"pixelInnerRadius\", {\n /**\r\n * Calculated inner radius of the circle in pixels.\r\n *\r\n * @readonly\r\n * @return Inner radius (px)\r\n */\n get: function () {\n return $utils.relativeToValue(this.innerRadius, $math.min(this.innerWidth / 2, this.innerHeight / 2));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedCircle.prototype, \"waveLength\", {\n /**\r\n * @return Wave length (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveLength\");\n },\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveLength\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedCircle.prototype, \"waveHeight\", {\n /**\r\n * @return Wave height (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveHeight\");\n },\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveHeight\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedCircle.prototype, \"tension\", {\n /**\r\n * @return Tension\r\n */\n get: function () {\n return this.getPropertyValue(\"tension\");\n },\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\n set: function (value) {\n this.setPropertyValue(\"tension\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return WavedCircle;\n}(Circle);\nexport { WavedCircle };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"WavedCircle\"] = WavedCircle;\n//# sourceMappingURL=WavedCircle.js.map","/**\r\n * Functionality for drawing waved lines.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Line } from \"./Line\";\nimport { color } from \"../utils/Color\";\nimport { wavedLine } from \"../rendering/Smoothing\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IWavedLineEvents} for a list of available events\r\n * @see {@link IWavedLineAdapters} for a list of available Adapters\r\n */\nvar WavedLine = /** @class */function (_super) {\n __extends(WavedLine, _super);\n /**\r\n * Constructor\r\n */\n function WavedLine() {\n var _this = _super.call(this) || this;\n _this.className = \"WavedLine\";\n _this.element = _this.paper.add(\"path\");\n _this.waveLength = 16;\n _this.waveHeight = 4;\n _this.tension = 0.8;\n _this.pixelPerfect = false;\n _this.fill = color();\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\n WavedLine.prototype.draw = function () {\n //super.draw();\n var p1 = {\n x: this.x1,\n y: this.y1\n };\n var p2 = {\n x: this.x2,\n y: this.y2\n };\n this.path = $path.moveTo(p1) + wavedLine(p1, p2, this.waveLength, this.waveHeight, this.tension, true);\n };\n Object.defineProperty(WavedLine.prototype, \"waveLength\", {\n /**\r\n * @return Wave length (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveLength\");\n },\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveLength\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedLine.prototype, \"waveHeight\", {\n /**\r\n * @return Wave height (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveHeight\");\n },\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveHeight\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedLine.prototype, \"tension\", {\n /**\r\n * @return Tension\r\n */\n get: function () {\n return this.getPropertyValue(\"tension\");\n },\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\n set: function (value) {\n this.setPropertyValue(\"tension\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n return WavedLine;\n}(Line);\nexport { WavedLine };\n//# sourceMappingURL=WavedLine.js.map","/**\r\n * Functionality for drawing rectangles with waved edges.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Rectangle } from \"./Rectangle\";\nimport { wavedLine } from \"../rendering/Smoothing\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a rectangle with waved edges.\r\n *\r\n * @see {@link IWavedRectangleEvents} for a list of available events\r\n * @see {@link IWavedRectangleAdapters} for a list of available Adapters\r\n */\nvar WavedRectangle = /** @class */function (_super) {\n __extends(WavedRectangle, _super);\n /**\r\n * Constructor\r\n */\n function WavedRectangle() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"WavedRectangle\";\n // Add path element\n _this.element = _this.paper.add(\"path\");\n // Set defaults\n _this.waveLength = 16;\n _this.waveHeight = 4;\n _this.tension = 0.8;\n _this.setPropertyValue(\"wavedLeft\", true);\n _this.setPropertyValue(\"wavedRight\", true);\n _this.setPropertyValue(\"wavedTop\", true);\n _this.setPropertyValue(\"wavedBottom\", true);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the waved rectangle.\r\n *\r\n * @ignore Exclude from docs\r\n */\n WavedRectangle.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.pixelWidth;\n var h = this.pixelHeight;\n if (w > 0 && h > 0) {\n var p1 = {\n x: 0,\n y: 0\n };\n var p2 = {\n x: w,\n y: 0\n };\n var p3 = {\n x: w,\n y: h\n };\n var p4 = {\n x: 0,\n y: h\n };\n var waveLengthH = Math.min(w, this.waveLength);\n var waveHeightH = Math.min(h, this.waveHeight);\n var waveLengthV = Math.min(h, this.waveLength);\n var waveHeightV = Math.min(w, this.waveHeight);\n var td = \"\";\n var rd = \"\";\n var bd = \"\";\n var ld = \"\";\n if (this.wavedTop) {\n td = wavedLine(p1, p2, waveLengthH, waveHeightH, this.tension, true);\n }\n if (this.wavedRight) {\n rd = wavedLine(p2, p3, waveLengthV, waveHeightV, this.tension, true);\n }\n if (this.wavedBottom) {\n bd = wavedLine(p3, p4, waveLengthH, waveHeightH, this.tension, true);\n }\n if (this.wavedLeft) {\n ld = wavedLine(p4, p1, waveLengthV, waveHeightV, this.tension, true);\n }\n this.path = $path.moveTo(p1) + td + $path.lineTo(p2) + rd + $path.lineTo(p3) + bd + $path.lineTo(p4) + ld + \"z\";\n }\n };\n Object.defineProperty(WavedRectangle.prototype, \"waveLength\", {\n /**\r\n * @return Wave length (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveLength\");\n },\n /**\r\n * Wave length in pixels.\r\n *\r\n * @default 16\r\n * @param value Wave length (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveLength\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedRectangle.prototype, \"waveHeight\", {\n /**\r\n * @return Wave height (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"waveHeight\");\n },\n /**\r\n * Wave height in pixels.\r\n *\r\n * @default 4\r\n * @param value Wave height (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"waveHeight\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets which side should be waved or not. If particular side is set to\r\n * `false`, a straight line will be drawn on that side.\r\n *\r\n * @param top Top waved?\r\n * @param right Right side waved?\r\n * @param bottom Bottom Waved?\r\n * @param left Left side waved?\r\n */\n WavedRectangle.prototype.setWavedSides = function (top, right, bottom, left) {\n this.wavedTop = top;\n this.wavedRight = right;\n this.wavedBottom = bottom;\n this.wavedLeft = left;\n };\n Object.defineProperty(WavedRectangle.prototype, \"tension\", {\n /**\r\n * @return Tension\r\n */\n get: function () {\n return this.getPropertyValue(\"tension\");\n },\n /**\r\n * Tension of the wave.\r\n *\r\n * @default 0.8\r\n * @param value Tension\r\n */\n set: function (value) {\n this.setPropertyValue(\"tension\", value);\n this.invalidate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedRectangle.prototype, \"wavedRight\", {\n /**\r\n * @return Wave right side?\r\n */\n get: function () {\n return this.getPropertyValue(\"wavedRight\");\n },\n /**\r\n * Specifies if right side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\n set: function (value) {\n this.setPropertyValue(\"wavedRight\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedRectangle.prototype, \"wavedLeft\", {\n /**\r\n * @return Wave left side?\r\n */\n get: function () {\n return this.getPropertyValue(\"wavedLeft\");\n },\n /**\r\n * Specifies if left side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\n set: function (value) {\n this.setPropertyValue(\"wavedLeft\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedRectangle.prototype, \"wavedTop\", {\n /**\r\n * @return Wave top side?\r\n */\n get: function () {\n return this.getPropertyValue(\"wavedTop\");\n },\n /**\r\n * Specifies if top side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\n set: function (value) {\n this.setPropertyValue(\"wavedTop\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(WavedRectangle.prototype, \"wavedBottom\", {\n /**\r\n * @return Wave bottom side?\r\n */\n get: function () {\n return this.getPropertyValue(\"wavedBottom\");\n },\n /**\r\n * Specifies if bottom side should be waved.\r\n *\r\n * @default true\r\n * @param value Waved?\r\n */\n set: function (value) {\n this.setPropertyValue(\"wavedBottom\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return WavedRectangle;\n}(Rectangle);\nexport { WavedRectangle };\n//# sourceMappingURL=WavedRectangle.js.map","/**\r\n * Zoom out button functionality.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Button } from \"./Button\";\nimport { Sprite } from \"../Sprite\";\nimport { registry } from \"../Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $path from \"../rendering/Path\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IZoomOutButtonEvents} for a list of available events\r\n * @see {@link IZoomOutButtonAdapters} for a list of available Adapters\r\n */\nvar ZoomOutButton = /** @class */function (_super) {\n __extends(ZoomOutButton, _super);\n /**\r\n * Constructor\r\n */\n function ZoomOutButton() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"ZoomOutButton\";\n _this.padding(9, 9, 9, 9);\n //this.dx = - 5;\n //this.dy = 5;\n _this.showSystemTooltip = true;\n var interfaceColors = new InterfaceColorSet();\n var background = _this.background;\n background.cornerRadius(20, 20, 20, 20);\n background.fill = interfaceColors.getFor(\"primaryButton\");\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\n background.strokeOpacity = 0;\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\n // Create an icon\n var icon = new Sprite();\n icon.element = _this.paper.add(\"path\");\n var path = $path.moveTo({\n x: 0,\n y: 0\n });\n path += $path.lineTo({\n x: 11,\n y: 0\n });\n icon.path = path;\n icon.pixelPerfect = true;\n icon.padding(8, 3, 8, 3);\n icon.stroke = interfaceColors.getFor(\"primaryButtonText\");\n _this.icon = icon;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n ZoomOutButton.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Zoom Out\");\n }\n };\n return ZoomOutButton;\n}(Button);\nexport { ZoomOutButton };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ZoomOutButton\"] = ZoomOutButton;\n//# sourceMappingURL=ZoomOutButton.js.map","/**\r\n * Play button functionality.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Button } from \"./Button\";\nimport { RoundedRectangle } from \"./RoundedRectangle\";\nimport { registry } from \"../Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { Triangle } from \"./Triangle\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a zoom out button.\r\n *\r\n * @see {@link IPlayButtonEvents} for a list of available events\r\n * @see {@link IPlayButtonAdapters} for a list of available Adapters\r\n */\nvar PlayButton = /** @class */function (_super) {\n __extends(PlayButton, _super);\n /**\r\n * Constructor\r\n */\n function PlayButton() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"PlayButton\";\n _this.padding(12, 12, 12, 12);\n _this.showSystemTooltip = true;\n var interfaceColors = new InterfaceColorSet();\n var background = _this.background;\n background.cornerRadius(25, 25, 25, 25);\n background.fill = interfaceColors.getFor(\"primaryButton\");\n background.stroke = interfaceColors.getFor(\"primaryButtonStroke\");\n background.strokeOpacity = 0;\n background.states.getKey(\"hover\").properties.fill = interfaceColors.getFor(\"primaryButtonHover\");\n background.states.getKey(\"down\").properties.fill = interfaceColors.getFor(\"primaryButtonActive\");\n // Create a play icon\n var playIcon = new Triangle();\n playIcon.direction = \"right\";\n playIcon.width = 9;\n playIcon.height = 11;\n playIcon.marginLeft = 1;\n playIcon.marginRight = 1;\n playIcon.horizontalCenter = \"middle\";\n playIcon.verticalCenter = \"middle\";\n playIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\n playIcon.fill = playIcon.stroke;\n _this.icon = playIcon;\n // Create a play icon\n var stopIcon = new RoundedRectangle();\n stopIcon.width = 11;\n stopIcon.height = 11;\n stopIcon.horizontalCenter = \"middle\";\n stopIcon.verticalCenter = \"middle\";\n stopIcon.cornerRadius(0, 0, 0, 0);\n stopIcon.stroke = interfaceColors.getFor(\"primaryButtonText\");\n stopIcon.fill = playIcon.stroke;\n _this.togglable = true;\n var activeState = _this.states.create(\"active\");\n activeState.transitionDuration = 0;\n activeState.properties.icon = stopIcon;\n _this.defaultState.transitionDuration = 0;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n PlayButton.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Play\");\n }\n };\n return PlayButton;\n}(Button);\nexport { PlayButton };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PlayButton\"] = PlayButton;\n//# sourceMappingURL=PlayButton.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../../Base\";\nimport { registry } from \"../../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for color modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n */\nvar ColorModifier = /** @class */function (_super) {\n __extends(ColorModifier, _super);\n /**\r\n * Constructor\r\n */\n function ColorModifier() {\n var _this = _super.call(this) || this;\n _this.className = \"ColorModifier\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Modifies color value.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Original color\r\n * @return Modified\r\n */\n ColorModifier.prototype.modify = function (value) {\n return value;\n };\n return ColorModifier;\n}(BaseObject);\nexport { ColorModifier };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ColorModifier\"] = ColorModifier;\n//# sourceMappingURL=ColorModifier.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColorModifier } from \"./ColorModifier\";\nimport { registry } from \"../../Registry\";\nimport * as $math from \"../../utils/Math\";\nimport * as $type from \"../../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.GradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"GradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\nvar GradientModifier = /** @class */function (_super) {\n __extends(GradientModifier, _super);\n /**\r\n * Constructor.\r\n */\n function GradientModifier() {\n var _this = _super.call(this) || this;\n _this.lightnesses = [];\n _this.brightnesses = [];\n _this.opacities = [];\n _this.offsets = [];\n _this.className = \"GradientModifier\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(GradientModifier.prototype, \"lightnesses\", {\n /**\r\n * @return Lightness values\r\n */\n get: function () {\n return this._lightnesses;\n },\n /**\r\n * An array of lightness values for each step.\r\n *\r\n * @param value Lightness values\r\n */\n set: function (value) {\n this._lightnesses = value;\n this._brightnesses = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GradientModifier.prototype, \"brightnesses\", {\n /**\r\n * @return Brightness values\r\n */\n get: function () {\n return this._brightnesses;\n },\n /**\r\n * An array of brightness values for each step.\r\n *\r\n * @param value Brightness values\r\n */\n set: function (value) {\n this._brightnesses = value;\n this._lightnesses = [];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GradientModifier.prototype, \"opacities\", {\n /**\r\n * @return Opacity values\r\n */\n get: function () {\n return this._opacities;\n },\n /**\r\n * An array of opacity values for each step.\r\n *\r\n * @param value Opacity values\r\n */\n set: function (value) {\n this._opacities = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GradientModifier.prototype, \"offsets\", {\n /**\r\n * @return Offsets\r\n */\n get: function () {\n return this._offsets;\n },\n /**\r\n * An array of relative position (0-1) for each step.\r\n *\r\n * If not set, all steps will be of equal relative length.\r\n *\r\n * @param value Offsets\r\n */\n set: function (value) {\n this._offsets = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Modifies the color based on step setting.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Source color\r\n * @return A gradient that matches set modification rules\r\n */\n GradientModifier.prototype.modify = function (value) {\n // Clear current gradient\n this.gradient.clear();\n // Get step count\n var count = 0;\n if (this.opacities) {\n count = $math.max(count, this.opacities.length);\n }\n if (this.lightnesses) {\n count = $math.max(count, this.lightnesses.length);\n }\n if (this.brightnesses) {\n count = $math.max(count, this.brightnesses.length);\n }\n // Init step values\n var opacity = 1,\n lightness,\n brightness;\n // Apply steps\n for (var i = 0; i < count; i++) {\n // Take base color\n var color = value;\n // Check if there are any parameters for this step\n if (this.opacities && $type.isNumber(this.opacities[i])) {\n opacity = this.opacities[i];\n }\n if (this.lightnesses && $type.isNumber(this.lightnesses[i])) {\n lightness = this.lightnesses[i];\n brightness = undefined;\n }\n if (this.brightnesses && $type.isNumber(this.brightnesses[i])) {\n brightness = this.brightnesses[i];\n lightness = undefined;\n }\n // Check if we need to brighten/lighten color\n if ($type.isNumber(brightness)) {\n color = value.brighten(this.brightnesses[i]);\n } else if ($type.isNumber(lightness)) {\n color = value.lighten(this.lightnesses[i]);\n }\n // Get offset (it's OK if it's undefined)\n var offset = this.offsets[i];\n // Apply step\n this.gradient.addColor(color, opacity, offset);\n }\n return this.gradient;\n };\n GradientModifier.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this._offsets = source.offsets;\n this._brightnesses = source.brightnesses;\n this._lightnesses = source.lightnesses;\n this._opacities = source.opacities;\n };\n return GradientModifier;\n}(ColorModifier);\nexport { GradientModifier };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"GradientModifier\"] = GradientModifier;\n//# sourceMappingURL=GradientModifier.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { LinearGradient } from \"./LinearGradient\";\nimport { GradientModifier } from \"./GradientModifier\";\nimport { registry } from \"../../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class can be used to modify linear gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\nvar LinearGradientModifier = /** @class */function (_super) {\n __extends(LinearGradientModifier, _super);\n /**\r\n * Constructor.\r\n */\n function LinearGradientModifier() {\n var _this = _super.call(this) || this;\n _this.className = \"LinearGradientModifier\";\n _this.gradient = new LinearGradient();\n _this.applyTheme();\n return _this;\n }\n LinearGradientModifier.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.gradient = source.gradient.clone();\n };\n return LinearGradientModifier;\n}(GradientModifier);\nexport { LinearGradientModifier };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LinearGradientModifier\"] = LinearGradientModifier;\n//# sourceMappingURL=LinearGradientModifier.js.map","/**\r\n * Cone module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../Container\";\nimport { Sprite, visualProperties } from \"../../Sprite\";\nimport { Ellipse } from \"../../elements/Ellipse\";\nimport { LinearGradientModifier } from \"../../rendering/fills/LinearGradientModifier\";\nimport { percent } from \"../../utils/Percent\";\nimport * as $object from \"../../utils/Object\";\nimport * as $path from \"../../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Builds a round cone/cylinder.\r\n *\r\n * @see {@link IConeEvents} for a list of available events\r\n * @see {@link IConeAdapters} for a list of available Adapters\r\n */\nvar Cone = /** @class */function (_super) {\n __extends(Cone, _super);\n /**\r\n * Constructor\r\n */\n function Cone() {\n var _this = _super.call(this) || this;\n _this.className = \"Cone\";\n _this.angle = 30;\n _this.radius = percent(100);\n _this.topRadius = percent(100);\n _this.top = _this.createChild(Ellipse);\n _this.top.shouldClone = false;\n _this.bottom = _this.createChild(Ellipse);\n _this.bottom.shouldClone = false;\n _this.body = _this.createChild(Sprite);\n _this.body.shouldClone = false;\n _this.body.setElement(_this.paper.add(\"path\"));\n _this.layout = \"none\";\n _this.bodyFillModifier = new LinearGradientModifier();\n _this.bodyFillModifier.lightnesses = [0, -0.25, 0];\n _this.body.fillModifier = _this.bodyFillModifier;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Cone.prototype.draw = function () {\n _super.prototype.draw.call(this);\n $object.copyProperties(this, this.top, visualProperties);\n $object.copyProperties(this, this.bottom, visualProperties);\n $object.copyProperties(this, this.body, visualProperties);\n var w = this.innerWidth;\n var h = this.innerHeight;\n var bottom = this.bottom;\n var top = this.top;\n var angle = this.angle;\n var radiusBase;\n var dx;\n var dy;\n if (this.orientation == \"horizontal\") {\n radiusBase = h / 2;\n bottom.y = h / 2;\n top.y = h / 2;\n top.x = w;\n dx = (90 - angle) / 90;\n dy = 0;\n this.bodyFillModifier.gradient.rotation = 90;\n } else {\n dx = 0;\n dy = (90 - angle) / 90;\n radiusBase = w / 2;\n bottom.y = h;\n bottom.x = w / 2;\n top.x = w / 2;\n this.bodyFillModifier.gradient.rotation = 0;\n }\n var radius = this.radius.value * radiusBase;\n var topRadius = this.topRadius.value * radiusBase;\n bottom.radius = radius - radius * dx;\n bottom.radiusY = radius - radius * dy;\n top.radius = topRadius - topRadius * dx;\n top.radiusY = topRadius - topRadius * dy;\n var path;\n if (this.orientation == \"horizontal\") {\n path = $path.moveTo({\n x: 0,\n y: h / 2 - bottom.radiusY\n }) + $path.arcTo(-90, -180, bottom.radius, bottom.radiusY) + $path.lineTo({\n x: w,\n y: h / 2 + top.radiusY\n }) + $path.arcTo(90, 180, top.radius, top.radiusY) + $path.closePath();\n } else {\n path = $path.moveTo({\n x: w / 2 - top.radius,\n y: 0\n }) + $path.arcTo(180, -180, top.radius, top.radiusY) + $path.lineTo({\n x: w / 2 + bottom.radius,\n y: h\n }) + $path.arcTo(0, 180, bottom.radius, bottom.radiusY) + $path.closePath();\n }\n this.body.path = path;\n };\n Object.defineProperty(Cone.prototype, \"angle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Cone.prototype, \"radius\", {\n /**\r\n * @return Bottom radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * A relative radius of the cone's bottom (base).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(100)\r\n * @param value Bottom radius\r\n */\n set: function (value) {\n this.setPropertyValue(\"radius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Cone.prototype, \"topRadius\", {\n /**\r\n * @return Top radius\r\n */\n get: function () {\n return this.getPropertyValue(\"topRadius\");\n },\n /**\r\n * A relative radius of the cone's top (tip).\r\n *\r\n * It is relevant to the inner width or height of the element.\r\n *\r\n * @default Percent(0)\r\n * @param value Top radius\r\n */\n set: function (value) {\n this.setPropertyValue(\"topRadius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Cone.prototype, \"orientation\", {\n /**\r\n * Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Orientation of the cone\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\n set: function (value) {\n this.setPropertyValue(\"orientation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return Cone;\n}(Container);\nexport { Cone };\n//# sourceMappingURL=Cone.js.map","/**\r\n * Module for \"Lighten\" filter.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Filter } from \"./Filter\";\nimport { registry } from \"../../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a \"Lighten\" filter.\r\n */\nvar LightenFilter = /** @class */function (_super) {\n __extends(LightenFilter, _super);\n /**\r\n * Constructor\r\n */\n function LightenFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"LightenFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\n _this.feColorMatrix.attr({\n \"type\": \"matrix\"\n });\n _this.filterPrimitives.push(_this.feColorMatrix);\n // Set default properties\n _this.lightness = 0;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(LightenFilter.prototype, \"lightness\", {\n /**\r\n * @return Lightness\r\n */\n get: function () {\n return this.properties[\"lightness\"];\n },\n /**\r\n * Lightness of the target colors.\r\n *\r\n * If `lightness` is a positive number, the filter will make all colors\r\n * lighter.\r\n *\r\n * If `lightness` is negative, colors will be darkened.\r\n *\r\n * @param value Lightness\r\n */\n set: function (value) {\n this.properties[\"lightness\"] = value;\n var v = value + 1;\n this.feColorMatrix.attr({\n \"values\": v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 \" + v + \" 0 0 0 0 0 1 0\"\n });\n },\n enumerable: true,\n configurable: true\n });\n return LightenFilter;\n}(Filter);\nexport { LightenFilter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LightenFilter\"] = LightenFilter;\n//# sourceMappingURL=LightenFilter.js.map","/**\r\n * Creates a 3D rectangle.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../Container\";\nimport { Sprite } from \"../../Sprite\";\nimport * as $math from \"../../utils/Math\";\nimport * as $path from \"../../rendering/Path\";\nimport { Color, color, toColor } from \"../../utils/Color\";\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\nimport * as $type from \"../../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Builds a 3D rectangle\r\n * @see {@link IRectangle3DEvents} for a list of available events\r\n * @see {@link IRectangle3DAdapters} for a list of available Adapters\r\n */\nvar Rectangle3D = /** @class */function (_super) {\n __extends(Rectangle3D, _super);\n /**\r\n * Constructor\r\n */\n function Rectangle3D() {\n var _this = _super.call(this) || this;\n _this.angle = 30;\n _this.depth = 30;\n _this.className = \"Rectangle3D\";\n _this.layout = \"none\";\n var sideBack = _this.createChild(Sprite);\n sideBack.shouldClone = false;\n sideBack.setElement(_this.paper.add(\"path\"));\n sideBack.isMeasured = false;\n _this.sideBack = sideBack;\n _this._disposers.push(_this.sideBack);\n var sideBottom = _this.createChild(Sprite);\n sideBottom.shouldClone = false;\n sideBottom.setElement(_this.paper.add(\"path\"));\n sideBottom.isMeasured = false;\n _this.sideBottom = sideBottom;\n _this._disposers.push(_this.sideBottom);\n var sideLeft = _this.createChild(Sprite);\n sideLeft.shouldClone = false;\n sideLeft.setElement(_this.paper.add(\"path\"));\n sideLeft.isMeasured = false;\n _this.sideLeft = sideLeft;\n _this._disposers.push(_this.sideLeft);\n var sideRight = _this.createChild(Sprite);\n sideRight.shouldClone = false;\n sideRight.setElement(_this.paper.add(\"path\"));\n sideRight.isMeasured = false;\n _this.sideRight = sideRight;\n _this._disposers.push(_this.sideRight);\n var sideTop = _this.createChild(Sprite);\n sideTop.shouldClone = false;\n sideTop.setElement(_this.paper.add(\"path\"));\n sideTop.isMeasured = false;\n _this.sideTop = sideTop;\n _this._disposers.push(_this.sideTop);\n var sideFront = _this.createChild(Sprite);\n sideFront.shouldClone = false;\n sideFront.setElement(_this.paper.add(\"path\"));\n sideFront.isMeasured = false;\n _this.sideFront = sideFront;\n _this._disposers.push(_this.sideFront);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Rectangle3D.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.innerWidth;\n var h = this.innerHeight;\n var depth = this.depth;\n var angle = this.angle;\n var sin = $math.sin(angle);\n var cos = $math.cos(angle);\n var a = {\n x: 0,\n y: 0\n };\n var b = {\n x: w,\n y: 0\n };\n var c = {\n x: w,\n y: h\n };\n var d = {\n x: 0,\n y: h\n };\n var ah = {\n x: depth * cos,\n y: -depth * sin\n };\n var bh = {\n x: depth * cos + w,\n y: -depth * sin\n };\n var ch = {\n x: depth * cos + w,\n y: -depth * sin + h\n };\n var dh = {\n x: depth * cos,\n y: -depth * sin + h\n };\n this.sideFront.path = $path.moveTo(a) + $path.lineTo(b) + $path.lineTo(c) + $path.lineTo(d) + $path.closePath();\n this.sideBack.path = $path.moveTo(ah) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(dh) + $path.closePath();\n this.sideLeft.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(dh) + $path.lineTo(d) + $path.closePath();\n this.sideRight.path = $path.moveTo(b) + $path.lineTo(bh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\n this.sideBottom.path = $path.moveTo(d) + $path.lineTo(dh) + $path.lineTo(ch) + $path.lineTo(c) + $path.closePath();\n this.sideTop.path = $path.moveTo(a) + $path.lineTo(ah) + $path.lineTo(bh) + $path.lineTo(b) + $path.closePath();\n };\n Object.defineProperty(Rectangle3D.prototype, \"depth\", {\n /**\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth (Z dimension) of the 3D rectangle in pixels.\r\n *\r\n * @default 30\r\n * @param value Depth (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"depth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle3D.prototype, \"angle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\n Rectangle3D.prototype.setFill = function (value) {\n _super.prototype.setFill.call(this, value);\n if (!$type.isObject(value) || \"r\" in value) {\n value = toColor(value);\n }\n var colorStr;\n if (value instanceof Color) {\n colorStr = value.hex;\n } else if (value instanceof LinearGradient || value instanceof RadialGradient) {\n colorStr = value.stops.getIndex(0).color.hex;\n } else {\n var filter = new LightenFilter();\n filter.lightness = -0.2;\n this.sideBack.filters.push(filter);\n var filter2 = filter.clone();\n filter2.lightness = -0.4;\n this.sideLeft.filters.push(filter2);\n var filter3 = filter.clone();\n filter3.lightness = -0.2;\n this.sideRight.filters.push(filter3);\n var filter4 = filter.clone();\n filter4.lightness = -0.1;\n this.sideTop.filters.push(filter4);\n var filter5 = filter.clone();\n filter5.lightness = -0.5;\n this.sideBottom.filters.push(filter5);\n }\n if (colorStr) {\n this.sideBack.fill = color(colorStr).lighten(-0.2);\n this.sideLeft.fill = color(colorStr).lighten(-0.4);\n this.sideRight.fill = color(colorStr).lighten(-0.2);\n this.sideTop.fill = color(colorStr).lighten(-0.1);\n this.sideBottom.fill = color(colorStr).lighten(-0.5);\n }\n };\n /**\r\n * Copies all properties and related data from a different instance of Rectangle3D.\r\n *\r\n * @param source Source Rectangle3D\r\n */\n Rectangle3D.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.sideBack.copyFrom(source.sideBack);\n this.sideLeft.copyFrom(source.sideLeft);\n this.sideRight.copyFrom(source.sideRight);\n this.sideTop.copyFrom(source.sideTop);\n this.sideBottom.copyFrom(source.sideBottom);\n };\n return Rectangle3D;\n}(Container);\nexport { Rectangle3D };\n//# sourceMappingURL=Rectangle3D.js.map","/**\r\n * 3D slice module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Slice } from \"../Slice\";\nimport { Sprite } from \"../../Sprite\";\nimport * as $math from \"../../utils/Math\";\nimport * as $path from \"../../rendering/Path\";\nimport * as $type from \"../../utils/Type\";\nimport { Color, color } from \"../../utils/Color\";\nimport { RadialGradient } from \"../../rendering/fills/RadialGradient\";\nimport { LinearGradient } from \"../../rendering/fills/LinearGradient\";\nimport { LightenFilter } from \"../../rendering/filters/LightenFilter\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw a 3D slice of a Pie chart.\r\n *\r\n * @see {@link ISlice3DEvents} for a list of available events\r\n * @see {@link ISlice3DAdapters} for a list of available Adapters\r\n */\nvar Slice3D = /** @class */function (_super) {\n __extends(Slice3D, _super);\n /**\r\n * Constructor\r\n */\n function Slice3D() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"Slice3D\";\n _this.layout = \"none\";\n // Create edge container\n var edge = _this.createChild(Sprite);\n _this.edge = edge;\n edge.shouldClone = false;\n edge.isMeasured = false;\n edge.toBack();\n // Set defaults\n _this.angle = 30;\n _this.depth = 20;\n // Create side A element\n var sideA = _this.createChild(Sprite);\n _this.sideA = sideA;\n sideA.shouldClone = false;\n sideA.isMeasured = false;\n //sideA.setElement(this.paper.add(\"path\"));\n //sideA.strokeOpacity = 0;\n // Crate side B element\n var sideB = _this.createChild(Sprite);\n _this.sideB = sideB;\n sideB.shouldClone = false;\n sideB.isMeasured = false;\n //sideB.setElement(this.paper.add(\"path\"));\n //sideB.strokeOpacity = 0;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\n Slice3D.prototype.setFill = function (value) {\n _super.prototype.setFill.call(this, value);\n var colorStr;\n if (value instanceof Color) {\n colorStr = value.hex;\n } else if (value instanceof LinearGradient || value instanceof RadialGradient) {\n colorStr = value.stops.getIndex(0).color.hex;\n } else {\n var filter = new LightenFilter();\n filter.lightness = -0.25;\n this.edge.filters.push(filter);\n this.sideA.filters.push(filter.clone());\n this.sideB.filters.push(filter.clone());\n }\n if (colorStr) {\n var edgeFill = color(colorStr).lighten(-0.25);\n this.edge.fill = edgeFill;\n this.sideA.fill = edgeFill;\n this.sideB.fill = edgeFill;\n this.edge.stroke = edgeFill;\n this.sideA.stroke = edgeFill;\n this.sideB.stroke = edgeFill;\n }\n };\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Slice3D.prototype.draw = function () {\n this.cornerRadius = 0;\n this.innerCornerRadius = 0;\n _super.prototype.draw.call(this);\n if (this.arc !== 0 && this.radius > 0 && this.depth > 0) {\n this.sideB.show(0);\n this.sideA.show(0);\n this.edge.show(0);\n var startAngle = this.startAngle;\n var arc = this.arc;\n var innerRadius = this.pixelInnerRadius || 0;\n var radiusY = this.radiusY || 0;\n //let cornerRadius = this.cornerRadius || 0;\n //let innerCornerRadius = this.innerCornerRadius;\n var radius = this.radius;\n // this is code duplicate with $path.arc. @todo to think how to avoid it\n var endAngle = startAngle + arc;\n //let crSin = $math.sin($math.min(arc, 45) / 2);\n //innerCornerRadius = innerCornerRadius || cornerRadius;\n var innerRadiusY = radiusY / radius * innerRadius;\n //let cornerRadiusY = (radiusY / radius) * cornerRadius;\n //let innerCornerRadiusY = (radiusY / radius) * innerCornerRadius;\n //cornerRadius = $math.fitToRange(cornerRadius, 0, (radius - innerRadius) / 2);\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, (radius - innerRadius) / 2);\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, (radiusY - innerRadiusY) / 2);\n //cornerRadius = $math.fitToRange(cornerRadius, 0, radius * crSin);\n //cornerRadiusY = $math.fitToRange(cornerRadiusY, 0, radiusY * crSin);\n //innerCornerRadius = $math.fitToRange(innerCornerRadius, 0, innerRadius * crSin);\n //innerCornerRadiusY = $math.fitToRange(innerCornerRadiusY, 0, innerRadiusY * crSin);\n //let crAngle: number = Math.asin(cornerRadius / radius / 2) * $math.DEGREES * 2;\n //let crAngleY: number = Math.asin(cornerRadiusY / radiusY / 2) * $math.DEGREES * 2;\n //if (innerRadius < innerCornerRadius) {\n //\tinnerRadius = innerCornerRadius;\n //}\n //if (innerRadiusY < innerCornerRadiusY) {\n //\tinnerRadiusY = innerCornerRadiusY;\n //}\n //let crInnerAngle: number = Math.asin(innerCornerRadius / innerRadius / 2) * $math.DEGREES * 2;\n //let crInnerAngleY: number = Math.asin(innerCornerRadiusY / innerRadiusY / 2) * $math.DEGREES * 2;\n //if (!$type.isNumber(crInnerAngle)) {\n //\tcrInnerAngle = 0;\n //}\n //if (!$type.isNumber(crInnerAngleY)) {\n //\tcrInnerAngleY = 0;\n //}\n //let middleAngle = startAngle + arc / 2;\n //let mPoint = { x: $math.round($math.cos(middleAngle) * innerRadius, 4), y: $math.round($math.sin(middleAngle) * innerRadiusY, 4) };\n var a0 = {\n x: $math.cos(startAngle) * innerRadius,\n y: $math.sin(startAngle) * innerRadiusY\n };\n var b0 = {\n x: $math.cos(startAngle) * radius,\n y: $math.sin(startAngle) * radiusY\n };\n var c0 = {\n x: $math.cos(endAngle) * radius,\n y: $math.sin(endAngle) * radiusY\n };\n var d0 = {\n x: $math.cos(endAngle) * innerRadius,\n y: $math.sin(endAngle) * innerRadiusY\n };\n // end of duplicate\n var h = this.depth;\n var ah = {\n x: a0.x,\n y: a0.y - h\n };\n var bh = {\n x: b0.x,\n y: b0.y - h\n };\n var ch = {\n x: c0.x,\n y: c0.y - h\n };\n var dh = {\n x: d0.x,\n y: d0.y - h\n };\n var edgePath = \"\";\n var count = Math.ceil(arc / 5);\n var step = arc / count;\n var mangle = startAngle;\n var prevPoint = bh;\n for (var i = 0; i < count; i++) {\n mangle += step;\n if (mangle > 0 && mangle < 180) {\n edgePath += $path.moveTo(prevPoint);\n var pp = {\n x: $math.cos(mangle) * radius,\n y: $math.sin(mangle) * radiusY - h\n };\n edgePath += $path.lineTo({\n x: prevPoint.x,\n y: prevPoint.y + h\n });\n edgePath += $path.arcToPoint({\n x: pp.x,\n y: pp.y + h\n }, radius, radiusY, true);\n edgePath += $path.lineTo(pp);\n edgePath += $path.arcToPoint(prevPoint, radius, radiusY);\n edgePath += \"z\";\n prevPoint = pp;\n } else {\n edgePath += $path.moveTo(prevPoint);\n var pp = {\n x: $math.cos(mangle) * radius,\n y: $math.sin(mangle) * radiusY - h\n };\n edgePath += $path.arcToPoint(pp, radius, radiusY, true);\n edgePath += $path.lineTo({\n x: pp.x,\n y: pp.y + h\n });\n edgePath += $path.arcToPoint({\n x: prevPoint.x,\n y: prevPoint.y + h\n }, radius, radiusY);\n edgePath += $path.lineTo(prevPoint);\n edgePath += \"z\";\n prevPoint = pp;\n }\n }\n prevPoint = ah;\n mangle = startAngle;\n for (var i = 0; i < count; i++) {\n mangle += step;\n if (mangle > 0 && mangle < 180) {\n edgePath += $path.moveTo(prevPoint);\n var pp = {\n x: $math.cos(mangle) * innerRadius,\n y: $math.sin(mangle) * innerRadiusY - h\n };\n edgePath += $path.lineTo({\n x: prevPoint.x,\n y: prevPoint.y + h\n });\n edgePath += $path.arcToPoint({\n x: pp.x,\n y: pp.y + h\n }, innerRadius, innerRadiusY, true);\n edgePath += $path.lineTo(pp);\n edgePath += $path.arcToPoint(prevPoint, innerRadius, innerRadiusY);\n edgePath += \"z\";\n prevPoint = pp;\n } else {\n edgePath += $path.moveTo(prevPoint);\n var pp = {\n x: $math.cos(mangle) * innerRadius,\n y: $math.sin(mangle) * innerRadiusY - h\n };\n edgePath += $path.arcToPoint(pp, innerRadius, innerRadiusY, true);\n edgePath += $path.lineTo({\n x: pp.x,\n y: pp.y + h\n });\n edgePath += $path.arcToPoint({\n x: prevPoint.x,\n y: prevPoint.y + h\n }, innerRadius, innerRadiusY);\n edgePath += $path.lineTo(prevPoint);\n edgePath += \"z\";\n prevPoint = pp;\n }\n }\n this.edge.path = edgePath;\n /*\r\n a0 = { x: $math.cos(startAngle) * (innerRadius + innerCornerRadius), y: $math.sin(startAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n b0 = { x: $math.cos(startAngle) * (radius - cornerRadius), y: $math.sin(startAngle) * (radiusY - cornerRadiusY) };\r\n c0 = { x: $math.cos(endAngle) * (radius - cornerRadius), y: $math.sin(endAngle) * (radiusY - cornerRadiusY) };\r\n d0 = { x: $math.cos(endAngle) * (innerRadius + innerCornerRadius), y: $math.sin(endAngle) * (innerRadiusY + innerCornerRadiusY) };\r\n // end of duplicate\r\n \r\n ah = { x: a0.x, y: a0.y - h };\r\n bh = { x: b0.x, y: b0.y - h };\r\n ch = { x: c0.x, y: c0.y - h };\r\n dh = { x: d0.x, y: d0.y - h };\r\n */\n this.sideA.path = $path.moveTo(a0) + $path.lineTo(b0) + $path.lineTo(bh) + $path.lineTo(ah) + $path.closePath();\n this.sideB.path = $path.moveTo(c0) + $path.lineTo(d0) + $path.lineTo(dh) + $path.lineTo(ch) + $path.closePath();\n if (this.startAngle < 90) {\n this.sideA.toBack();\n } else {\n this.sideA.toFront();\n }\n if (this.startAngle + this.arc > 90) {\n this.sideB.toBack();\n } else {\n this.sideB.toFront();\n }\n this.slice.dy = -h;\n } else {\n this.sideA.hide(0);\n this.sideB.hide(0);\n this.edge.hide(0);\n }\n };\n Object.defineProperty(Slice3D.prototype, \"depth\", {\n /**\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth (height) of the 3D slice in pixels.\r\n *\r\n * @default 20\r\n * @param depth Depth (px)\r\n */\n set: function (depth) {\n this.setPropertyValue(\"depth\", depth, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice3D.prototype, \"angle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n var angle = this.getPropertyValue(\"angle\");\n if (!$type.isNumber(angle)) {\n angle = 0;\n }\n return angle;\n },\n /**\r\n * Angle of the point of view to the 3D element. (0-360)\r\n *\r\n * @default 30\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Slice3D.prototype, \"radiusY\", {\n /**\r\n * @return Vertical radius (0-1)\r\n */\n get: function () {\n var radiusY = this.getPropertyValue(\"radiusY\");\n if (!$type.isNumber(radiusY)) {\n radiusY = this.radius - this.radius * this.angle / 90;\n }\n return radiusY;\n },\n /**\r\n * Vertical radius for creating skewed slices.\r\n *\r\n * This is relevant to `radius`, e.g. 0.5 will set vertical radius to half\r\n * the `radius`.\r\n *\r\n * @param value Vertical radius (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"radiusY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\n Slice3D.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.edge.copyFrom(source.edge);\n this.sideA.copyFrom(source.sideA);\n this.sideB.copyFrom(source.sideB);\n };\n return Slice3D;\n}(Slice);\nexport { Slice3D };\n//# sourceMappingURL=Slice3D.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { RadialGradient } from \"./RadialGradient\";\nimport { GradientModifier } from \"./GradientModifier\";\nimport { registry } from \"../../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class can be used to modify radial gradient steps, changing visual\r\n * properties like lightness, brightness, opacity of each set.\r\n *\r\n * It can also set offsets for each gradient step.\r\n *\r\n * E.g. if I want to fill a columns in a column series to be a solid fill from\r\n * top to 80% of height, then gradually fades out, I can use the following\r\n * gradient modifier as a `fillModifier`:\r\n *\r\n * ```TypeScript\r\n * let fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JavaScript\r\n * var fillModifier = new am4core.LinearGradientModifier();\r\n * fillModifier.opacities = [1, 1, 0];\r\n * fillModifier.offsets = [0, 0.8, 1];\r\n * columnSeries.columns.template.fillModifier = fillModifier;\r\n * ```\r\n * ```JSON\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"columns\": {\r\n * \"fillModifier\": {\r\n * \"type\": \"LinearGradientModifier\",\r\n * \"opacities\": [1, 1, 0],\r\n * \"offsets\": [0, 0.8, 1]\r\n * }\r\n * }\r\n * }]\r\n * ```\r\n */\nvar RadialGradientModifier = /** @class */function (_super) {\n __extends(RadialGradientModifier, _super);\n /**\r\n * Constructor.\r\n */\n function RadialGradientModifier() {\n var _this = _super.call(this) || this;\n _this.className = \"RadialGradientModifier\";\n _this.gradient = new RadialGradient();\n _this.applyTheme();\n return _this;\n }\n RadialGradientModifier.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.gradient = source.gradient.clone();\n };\n return RadialGradientModifier;\n}(GradientModifier);\nexport { RadialGradientModifier };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadialGradientModifier\"] = RadialGradientModifier;\n//# sourceMappingURL=RadialGradientModifier.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Pattern } from \"./Pattern\";\nimport { registry } from \"../../Registry\";\nimport * as $path from \"../../rendering/Path\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Line pattern.\r\n */\nvar LinePattern = /** @class */function (_super) {\n __extends(LinePattern, _super);\n /**\r\n * Constructor\r\n */\n function LinePattern() {\n var _this = _super.call(this) || this;\n _this.properties[\"gap\"] = 0;\n _this._line = _this.paper.add(\"path\");\n _this.addElement(_this._line);\n return _this;\n }\n /**\r\n * Draws the pattern.\r\n */\n LinePattern.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\n this.properties[\"shapeRendering\"] = \"auto\";\n }\n if (this._line) {\n var w = this.width;\n var h = this.height;\n var path = \"\";\n if (!this.gap) {\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\n path = $path.moveTo({\n x: -w,\n y: h / 2\n }) + $path.lineTo({\n x: w * 2,\n y: h / 2\n });\n this.properties[\"rotationX\"] = this.width / 2;\n this.properties[\"rotationY\"] = this.height / 2;\n } else {\n path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: 0\n });\n }\n } else {\n var step = this.gap + this.strokeWidth;\n var count = this.height / step;\n for (var i = -count / 2; i < count * 1.5; i++) {\n if (Math.round(this.rotation / 90) != this.rotation / 90) {\n path += $path.moveTo({\n x: -w,\n y: (i + 0.5) * step\n }) + $path.lineTo({\n x: w * 2,\n y: (i + 0.5) * step\n });\n this.properties[\"rotationX\"] = this.width / 2;\n this.properties[\"rotationY\"] = this.height / 2;\n } else {\n path += $path.moveTo({\n x: -w,\n y: i * step\n }) + $path.lineTo({\n x: w * 2,\n y: i * step\n });\n }\n }\n }\n this._line.attr({\n \"d\": path\n });\n }\n };\n Object.defineProperty(LinePattern.prototype, \"gap\", {\n /**\r\n * @return gap\r\n */\n get: function () {\n return this.properties[\"gap\"];\n },\n /**\r\n * Number of pixels between pattern lines.\r\n *\r\n * The pattern will automatically draw required number of lines to fill\r\n * pattern area maintaining `gap` distance between them.\r\n *\r\n * 0 (zero) means only single line will be drawn.\r\n *\r\n * @default 0\r\n * @since 4.7.7\r\n */\n set: function (value) {\n this.properties[\"gap\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n return LinePattern;\n}(Pattern);\nexport { LinePattern };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LinePattern\"] = LinePattern;\n//# sourceMappingURL=LinePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Pattern } from \"./Pattern\";\nimport { registry } from \"../../Registry\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Circular pattern\r\n */\nvar CirclePattern = /** @class */function (_super) {\n __extends(CirclePattern, _super);\n /**\r\n * Constructor\r\n */\n function CirclePattern() {\n var _this = _super.call(this) || this;\n _this.properties[\"radius\"] = 2;\n _this._circle = _this.paper.add(\"circle\");\n _this.addElement(_this._circle);\n _this.shapeRendering = \"auto\";\n return _this;\n }\n /**\r\n * Draws the circle element.\r\n */\n CirclePattern.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this._circle) {\n this._circle.attr({\n \"r\": this.radius,\n \"cx\": this.width / 2,\n \"cy\": this.height / 2\n });\n }\n };\n Object.defineProperty(CirclePattern.prototype, \"radius\", {\n /**\r\n * @return Radius (px)\r\n */\n get: function () {\n return this.properties[\"radius\"];\n },\n /**\r\n * Circle radius in pixels.\r\n *\r\n * @param value Radius (px)\r\n */\n set: function (value) {\n this.properties[\"radius\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n return CirclePattern;\n}(Pattern);\nexport { CirclePattern };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CirclePattern\"] = CirclePattern;\n//# sourceMappingURL=CirclePattern.js.map","/**\r\n * Rectangular pattern module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Pattern } from \"./Pattern\";\nimport { registry } from \"../../Registry\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Rectangular pattern\r\n */\nvar RectPattern = /** @class */function (_super) {\n __extends(RectPattern, _super);\n /**\r\n * Constructor\r\n */\n function RectPattern() {\n var _this = _super.call(this) || this;\n _this.rectHeight = 1;\n _this.rectWidth = 1;\n _this._rect = _this.paper.add(\"rect\");\n _this.addElement(_this._rect);\n return _this;\n }\n /**\r\n * Draws the rectangular element.\r\n */\n RectPattern.prototype.draw = function () {\n _super.prototype.draw.call(this);\n this.properties[\"rotationX\"] = this.width / 2;\n this.properties[\"rotationY\"] = this.height / 2;\n if (this._rect) {\n this._rect.attr({\n \"width\": this.rectWidth,\n \"height\": this.rectHeight,\n \"x\": (this.width - this.rectWidth) / 2,\n \"y\": (this.height - this.rectHeight) / 2\n });\n }\n };\n Object.defineProperty(RectPattern.prototype, \"rectWidth\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.properties[\"rectWidth\"];\n },\n /**\r\n * Rectangle width in pixels.\r\n *\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.properties[\"rectWidth\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RectPattern.prototype, \"rectHeight\", {\n /**\r\n * @return Height (px)\r\n */\n get: function () {\n return this.properties[\"rectHeight\"];\n },\n /**\r\n * Rectangle height in pixels.\r\n *\r\n * @param value Height (px)\r\n */\n set: function (value) {\n this.properties[\"rectHeight\"] = value;\n this.draw();\n },\n enumerable: true,\n configurable: true\n });\n return RectPattern;\n}(Pattern);\nexport { RectPattern };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RectPattern\"] = RectPattern;\n//# sourceMappingURL=RectPattern.js.map","/**\r\n * Module for \"Colorize\" filter.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Filter } from \"./Filter\";\nimport { registry } from \"../../Registry\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a \"Colorize\" filter.\r\n */\nvar ColorizeFilter = /** @class */function (_super) {\n __extends(ColorizeFilter, _super);\n /**\r\n * Constructor\r\n */\n function ColorizeFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"ColorizeFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\n _this.feColorMatrix.attr({\n \"type\": \"matrix\"\n });\n //this.feColorMatrix.setAttribute(\"in\", \"SourceAlpha\");\n _this.filterPrimitives.push(_this.feColorMatrix);\n // Set default properties\n _this.intensity = 1;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)applies colors to the already existing filter by modifying filyer's\r\n * color matrix element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ColorizeFilter.prototype.applyFilter = function () {\n var i = this.intensity;\n var ii = 1 - i;\n var r;\n var g;\n var b;\n var color = this.color;\n if (color && color.rgb) {\n r = color.rgb.r / 255 * i;\n g = color.rgb.g / 255 * i;\n b = color.rgb.b / 255 * i;\n } else {\n r = 0;\n g = 0;\n b = 0;\n }\n this.feColorMatrix.attr({\n \"values\": ii + \" 0 0 0 \" + r + \" 0 \" + ii + \" 0 0 \" + g + \" 0 0 \" + ii + \" 0 \" + b + \" 0 0 0 1 0\"\n });\n };\n Object.defineProperty(ColorizeFilter.prototype, \"color\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n return this.properties[\"color\"];\n },\n /**\r\n * Target color to apply to the element.\r\n *\r\n * Depending on the `intensity`, all colors of the target element will steer\r\n * towards this color.\r\n *\r\n * E.g. setting to `am4core.color(\"greener\")` will make all colors greener.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.properties[\"color\"] = value;\n this.applyFilter();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColorizeFilter.prototype, \"intensity\", {\n /**\r\n * @return Intensity (0-1)\r\n */\n get: function () {\n return this.properties.intensity;\n },\n /**\r\n * Intensity of the color (0-1).\r\n *\r\n * The bigger the number the more of a `color` target's colors will become.\r\n *\r\n * 0 means the colors will remain as they are.\r\n * 1 means all colors will become the target `color`.\r\n *\r\n * @default 1\r\n * @param value Intensity (0-1)\r\n */\n set: function (value) {\n this.properties.intensity = value;\n this.applyFilter();\n },\n enumerable: true,\n configurable: true\n });\n return ColorizeFilter;\n}(Filter);\nexport { ColorizeFilter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ColorizeFilter\"] = ColorizeFilter;\n//# sourceMappingURL=ColorizeFilter.js.map","/**\r\n * Module for \"Desaturate\" filter.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Filter } from \"./Filter\";\nimport { registry } from \"../../Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creats a \"Desaturate\" filter\r\n */\nvar DesaturateFilter = /** @class */function (_super) {\n __extends(DesaturateFilter, _super);\n /**\r\n * Constructor\r\n */\n function DesaturateFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"DesaturateFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\n _this.feColorMatrix.attr({\n \"type\": \"saturate\"\n });\n _this.filterPrimitives.push(_this.feColorMatrix);\n // Set default properties\n _this.width = 120;\n _this.height = 120;\n _this.saturation = 0;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(DesaturateFilter.prototype, \"saturation\", {\n /**\r\n * @return Saturation (0-1)\r\n */\n get: function () {\n return this.properties[\"saturation\"];\n },\n /**\r\n * Saturation.\r\n *\r\n * 0 - completely desaturated.\r\n * 1 - fully saturated (gray).\r\n *\r\n * @param value Saturation (0-1)\r\n */\n set: function (value) {\n this.properties[\"saturation\"] = value;\n this.feColorMatrix.attr({\n \"values\": value.toString()\n });\n },\n enumerable: true,\n configurable: true\n });\n return DesaturateFilter;\n}(Filter);\nexport { DesaturateFilter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DesaturateFilter\"] = DesaturateFilter;\n//# sourceMappingURL=DesaturateFilter.js.map","/**\r\n * Module for \"Blur\" filter.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Filter } from \"./Filter\";\nimport { registry } from \"../../Registry\";\n;\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a \"Blur\" filter.\r\n */\nvar BlurFilter = /** @class */function (_super) {\n __extends(BlurFilter, _super);\n /**\r\n * Constructor\r\n */\n function BlurFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"BlurFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.feGaussianBlur = _this.paper.add(\"feGaussianBlur\");\n _this.feGaussianBlur.attr({\n \"result\": \"blurOut\",\n \"in\": \"SourceGraphic\"\n });\n _this.filterPrimitives.push(_this.feGaussianBlur);\n // Set default properties\n _this.width = 200;\n _this.height = 200;\n _this.blur = 1.5;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(BlurFilter.prototype, \"blur\", {\n /**\r\n * @return Blur\r\n */\n get: function () {\n return this.properties.blur;\n },\n /**\r\n * Blur value.\r\n *\r\n * The bigger the value, the blurrier the target element will become.\r\n *\r\n * @default 1.5\r\n * @param value Blur\r\n */\n set: function (value) {\n this.properties.blur = value;\n this.feGaussianBlur.attr({\n \"stdDeviation\": value / this.scale\n });\n },\n enumerable: true,\n configurable: true\n });\n return BlurFilter;\n}(Filter);\nexport { BlurFilter };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"BlurFilter\"] = BlurFilter;\n//# sourceMappingURL=BlurFilter.js.map","/**\r\n * Module for \"Focus\" filter.\r\n */\nimport { __extends } from \"tslib\";\nimport { Filter } from \"./Filter\";\nimport { InterfaceColorSet } from \"../../utils/InterfaceColorSet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a \"Focus\" filter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/accessibility/} more about accessibility\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/changing-appearance-of-focused-items/} cusomizing focus appearance\r\n */\nvar FocusFilter = /** @class */function (_super) {\n __extends(FocusFilter, _super);\n /**\r\n * Constructor\r\n */\n function FocusFilter() {\n var _this = _super.call(this) || this;\n _this.className = \"FocusFilter\";\n // Create elements\n // NOTE: we do not need to add each individual element to `_disposers`\n // because `filterPrimitives` has an event handler which automatically adds\n // anything added to it to `_disposers`\n _this.feFlood = _this.paper.add(\"feFlood\");\n _this.feFlood.attr({\n \"flood-color\": new InterfaceColorSet().getFor(\"primaryButtonHover\"),\n \"result\": \"base\"\n });\n _this.filterPrimitives.push(_this.feFlood);\n _this.feMorphology = _this.paper.add(\"feMorphology\");\n _this.feMorphology.attr({\n \"result\": \"bigger\",\n \"in\": \"SourceGraphic\",\n \"operator\": \"dilate\",\n \"radius\": \"2\"\n });\n _this.filterPrimitives.push(_this.feMorphology);\n _this.feColorMatrix = _this.paper.add(\"feColorMatrix\");\n _this.feColorMatrix.attr({\n \"result\": \"mask\",\n \"in\": \"bigger\",\n \"type\": \"matrix\",\n \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0\"\n });\n _this.filterPrimitives.push(_this.feColorMatrix);\n _this.feComposite = _this.paper.add(\"feComposite\");\n _this.feComposite.attr({\n \"result\": \"drop\",\n \"in\": \"base\",\n \"in2\": \"mask\",\n \"operator\": \"in\"\n });\n _this.filterPrimitives.push(_this.feComposite);\n _this.feBlend = _this.paper.add(\"feBlend\");\n _this.feBlend.attr({\n \"in\": \"SourceGraphic\",\n \"in2\": \"drop\",\n \"mode\": \"normal\"\n });\n _this.filterPrimitives.push(_this.feBlend);\n // Set default properties\n _this.width = 130;\n _this.height = 130;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(FocusFilter.prototype, \"stroke\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n return this.properties[\"stroke\"];\n },\n /**\r\n * Stroke (outline) color.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.properties[\"stroke\"] = value;\n this.feFlood.attr({\n \"flood-color\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusFilter.prototype, \"strokeWidth\", {\n /**\r\n * @return Outline thickness (px)\r\n */\n get: function () {\n return this.properties[\"strokeWidth\"];\n },\n /**\r\n * Stroke (outline) thickness in pixels.\r\n *\r\n * @param value Outline thickness (px)\r\n */\n set: function (value) {\n this.properties[\"strokeWidth\"] = value;\n this.feMorphology.attr({\n \"radius\": value\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FocusFilter.prototype, \"opacity\", {\n /**\r\n * @return Outline opacity (0-1)\r\n */\n get: function () {\n return this.properties[\"opacity\"];\n },\n /**\r\n * Opacity of the outline. (0-1)\r\n *\r\n * @param value Outline opacity (0-1)\r\n */\n set: function (value) {\n this.properties[\"opacity\"] = value;\n this.feColorMatrix.attr({\n \"values\": \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \" + value + \" 0\"\n });\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets filter's target element.\r\n *\r\n * In addition it also disables built-in focus outline on element this\r\n * filter is applied to.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Element filter is being attached to\r\n */\n FocusFilter.prototype.setSprite = function (value) {\n if (this._sprite && this._sprite != value) {\n this._sprite.group.removeStyle(\"outline\");\n }\n value.group.addStyle({\n \"outline\": \"none\"\n });\n _super.prototype.setSprite.call(this, value);\n };\n return FocusFilter;\n}(Filter);\nexport { FocusFilter };\n//# sourceMappingURL=FocusFilter.js.map","/**\r\n * This module contains ColorSet object definition\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { Color, color } from \"./Color\";\nimport { registry } from \"../Registry\";\nimport * as $colors from \"./Colors\";\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\nimport * as $math from \"./Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a set of colors. Can also generate colors according to set rules.\r\n *\r\n * @important\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\nvar ColorSet = /** @class */function (_super) {\n __extends(ColorSet, _super);\n /**\r\n * Constructor\r\n */\n function ColorSet() {\n var _this = _super.call(this) || this;\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\n _this._list = [];\n /**\r\n * Current step in a color generator's cycle.\r\n */\n _this._currentStep = 0;\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n */\n _this._startIndex = 0;\n /**\r\n * Current pass in the color generator's cycle. Normally a generator would\r\n * cycle through all available hue range, then repeat it, alternating other\r\n * color properties, to generate distinctive colors.\r\n */\n _this._currentPass = 0;\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\n _this.baseColor = new Color({\n r: 103,\n g: 183,\n b: 220\n });\n /**\r\n * Modifications to apply with each new generated color.\r\n */\n _this.stepOptions = {};\n /**\r\n * Modifications to apply on top of `stepOptions` for each \"pass\" of the\r\n * color generation.\r\n *\r\n * A \"pass\" is when ColorSet generates `minColors` number of colors.\r\n */\n _this.passOptions = {\n brighten: -0.2\n };\n /**\r\n * An index increment to use when iterating through color list.\r\n *\r\n * Default is 1, which means returning each and every color.\r\n *\r\n * Setting it to a bigger number will make ColorSet `next()` iterator skip\r\n * some colors.\r\n *\r\n * E.g. setting to 2, will return every second color in the list.\r\n *\r\n * This is useful, when the color list has colors that are too close each\r\n * other for contrast.\r\n *\r\n * However, having bigger number will mean that `next()` iterator will go\r\n * through the list quicker, and the generator will kick sooner.\r\n */\n _this.step = 1;\n /**\r\n * A number of colors to generate in one \"pass\".\r\n *\r\n * This setting can be automatically overridden, if ColorSet has a list of\r\n * pre-set colors. In such case ColorSet will generate exactly the same\r\n * number of colors with each pass as there were colors in original set.\r\n */\n _this.minColors = 20;\n /**\r\n * Do not let the \"lightness\" of generated color to fall below this\r\n * threshold.\r\n */\n _this.minLightness = 0.2;\n /**\r\n * Do not let the \"lightness\" of generated color to get above this threshold.\r\n */\n _this.maxLightness = 0.9;\n /**\r\n * Randomly shuffle generated colors.\r\n */\n _this.shuffle = false;\n /**\r\n * When colors are generated, based on `stepOptions`, each generated color\r\n * gets either lighter or darker.\r\n *\r\n * If this is set to `true`, color generator will switch to opposing spectrum\r\n * when reaching `minLightness` or `maxLightness`.\r\n *\r\n * E.g. if we start off with a red color, then gradually generate lighter\r\n * colors through rose shades, then switch back to dark red and gradually\r\n * increase the lightness of it until it reaches the starting red.\r\n *\r\n * If set to `false` it will stop there and cap lightness at whatever level\r\n * we hit `minLightness` or `maxLightness`, which may result in a number of\r\n * the same colors.\r\n */\n _this.wrap = true;\n /**\r\n * Re-use same colors in the pre-set list, when ColorSet runs out of colors,\r\n * rather than start generating new ones.\r\n */\n _this.reuse = false;\n /**\r\n * Saturation of colors. This will change saturation of all colors of color\r\n * set.\r\n *\r\n * It is recommended to set this in theme, as changing it at run time won't\r\n * make the items to redraw and change color.\r\n */\n _this.saturation = 1;\n _this.className = \"ColorSet\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ColorSet.prototype, \"list\", {\n /**\r\n * Returns current list of colors.\r\n *\r\n * If there are none, a new list of colors is generated, based on various\r\n * ColorSet settings.\r\n *\r\n * @return Color list\r\n */\n get: function () {\n if (!this._list) {\n this.generate(this.minColors);\n }\n return this._list;\n },\n /**\r\n * Sets a list of pre-defined colors to use for the iterator.\r\n *\r\n * @param value Color list\r\n */\n set: function (value) {\n this._list = value;\n this.reset();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Gets reusable color.\r\n *\r\n * @param index Index of color\r\n * @return Color\r\n */\n ColorSet.prototype.getReusableColor = function (index) {\n if (this._list.length == 0) {\n this.generate(1);\n return this.list[0];\n } else {\n var tmpstep = index - Math.floor(index / this._list.length) * this.list.length;\n return this.list[tmpstep];\n }\n };\n /**\r\n * Returns next color in the list using internal iterator counter.\r\n *\r\n * If `step` is set to something other than 1, it may return other color than\r\n * exact next one in the list.\r\n *\r\n * @return Color\r\n */\n ColorSet.prototype.next = function () {\n var color;\n if (this.list.length <= this._currentStep) {\n if (this.reuse) {\n color = this.getReusableColor(this._currentStep);\n } else {\n this.generate($math.max(this.minColors, this._currentStep + 1));\n color = this.list[this._currentStep];\n }\n } else {\n color = this.list[this._currentStep];\n }\n this._currentStep += this.step;\n return color.saturate(this.saturation);\n };\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Color\r\n */\n ColorSet.prototype.getIndex = function (i) {\n var color;\n if (this.list.length <= i) {\n if (this.reuse) {\n color = this.getReusableColor(i);\n } else {\n this.generate(this.minColors);\n color = this.getIndex(i);\n }\n } else {\n color = this.list[i];\n }\n return color.saturate(this.saturation);\n };\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\n ColorSet.prototype.reset = function () {\n this._currentStep = this._startIndex;\n };\n Object.defineProperty(ColorSet.prototype, \"currentStep\", {\n /**\r\n * @return Step\r\n */\n get: function () {\n return this._currentStep;\n },\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\n set: function (value) {\n this._currentStep = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColorSet.prototype, \"startIndex\", {\n /**\r\n * @return Index\r\n */\n get: function () {\n return this._startIndex;\n },\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @since 4.4.9\r\n * @param value Index\r\n */\n set: function (value) {\n this._startIndex = value;\n this.reset();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Generates colors based on the various ColorSet settings.\r\n *\r\n * @param count Number of colors to generate\r\n */\n ColorSet.prototype.generate = function (count) {\n // Init\n var curColor = this.currentColor;\n var hsl = $colors.rgbToHsl($type.getValue(curColor.rgb));\n var hueStep = $type.hasValue(this.stepOptions.hue) ? this.stepOptions.hue : 1 / count;\n var mods = {\n brighten: 0,\n lighten: 0,\n hue: hsl.h,\n lightness: hsl.l,\n saturation: hsl.s\n };\n // Generate list of hues, and shuffle them\n var hues = [];\n var startIndex = this.list.length == 0 ? 0 : 1;\n if (this.reuse) {\n for (var i = startIndex; i <= count; i++) {\n hues.push($colors.rgbToHsl($type.getValue(this._list[i].rgb)).h);\n }\n } else {\n for (var i = startIndex; i <= count; i++) {\n var h = hsl.h + hueStep * i;\n if (this.wrap && h > 1) {\n h -= 1;\n }\n hues.push(h);\n }\n }\n // Shuffle colors randomly\n if (this.shuffle) {\n hues.sort(function (a, b) {\n return Math.random() - 0.5;\n });\n }\n // Generate colors by rotating hue\n for (var i = 0; i < count; i++) {\n // Update hue\n if (this.reuse) {\n hsl = $colors.rgbToHsl($type.getValue(this._list[i].rgb));\n } else {\n hsl.h = hues.shift();\n }\n // Apply HSL mods\n this.applyStepOptions(hsl, mods, i, this._currentPass);\n // Convert back to Color\n var c = color($colors.hslToRgb(hsl));\n // Apply regular color mods\n var brighten = (this.stepOptions.brighten || 0) * i + (this.passOptions.brighten || 0) * this._currentPass;\n if (brighten != 0) {\n if (this.wrap) {\n brighten = $utils.fitNumberRelative(brighten, this.minLightness, this.maxLightness);\n } else {\n brighten = $utils.fitNumber(brighten, this.minLightness, this.maxLightness);\n }\n c = c.brighten(brighten);\n }\n var lighten = (this.stepOptions.lighten || 0) * i + (this.passOptions.lighten || 0) * this._currentPass;\n if (lighten != 0) {\n if (this.wrap) {\n lighten = $utils.fitNumberRelative(lighten, this.minLightness, this.maxLightness);\n } else {\n lighten = $utils.fitNumber(lighten, this.minLightness, this.maxLightness);\n }\n c = c.lighten(lighten);\n }\n this._list.push(c);\n }\n this._currentPass++;\n };\n Object.defineProperty(ColorSet.prototype, \"currentColor\", {\n /**\r\n * Returns current last color. It's either the last color in the list of\r\n * colors, or `baseColor` if list is empty.\r\n *\r\n * @return Color\r\n */\n get: function () {\n if (this._list.length == 0) {\n return this.baseColor.saturate(this.saturation);\n } else {\n return this._list[this._list.length - 1].saturate(this.saturation);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Generates modifiers for color, based on what step and pass.\r\n *\r\n * @param hsl Curren HSL value of the color to modify\r\n * @param base The modifiers that were before modification to use as a base\r\n * @param step Current step\r\n * @param pass Current pass\r\n */\n ColorSet.prototype.applyStepOptions = function (hsl, base, step, pass) {\n // Process lightness\n hsl.l = base.lightness + (this.stepOptions.lightness || 0) * step + (this.passOptions.lightness || 0) * pass;\n if (this.wrap) {\n if (hsl.l > 1) {\n hsl.l = hsl.l - Math.floor(hsl.l);\n } else if (hsl.l < 0) {\n hsl.l = -(hsl.l - Math.floor(hsl.l));\n }\n hsl.l = $utils.fitNumberRelative(hsl.l, this.minLightness, this.maxLightness);\n } else {\n if (hsl.l > 1) {\n hsl.l = 1;\n } else if (hsl.l < 0) {\n hsl.l = 0;\n }\n hsl.l = $utils.fitNumber(hsl.l, this.minLightness, this.maxLightness);\n }\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n ColorSet.prototype.processConfig = function (config) {\n if (config) {\n // Cast colors\n if ($type.hasValue(config.list) && $type.isArray(config.list)) {\n for (var i = 0, len = config.list.length; i < len; i++) {\n if (!(config.list[i] instanceof Color)) {\n config.list[i] = color(config.list[i]);\n }\n }\n }\n if ($type.hasValue(config.baseColor) && !(config.baseColor instanceof Color)) {\n config.baseColor = color(config.baseColor);\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return ColorSet;\n}(BaseObject);\nexport { ColorSet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ColorSet\"] = ColorSet;\n//# sourceMappingURL=ColorSet.js.map","/**\r\n * This module contains PatternSet object definition\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { BaseObject } from \"../Base\";\nimport { Color } from \"./Color\";\nimport { InterfaceColorSet } from \"./InterfaceColorSet\";\nimport { LinePattern } from \"../rendering/fills/LinePattern\";\nimport { RectPattern } from \"../rendering/fills/RectPattern\";\nimport { CirclePattern } from \"../rendering/fills/CirclePattern\";\nimport { registry } from \"../Registry\";\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines an interable list of distinctive patterns that can be used in\r\n * conjunction to colors to generate various fill patterns.\r\n *\r\n * @important\r\n * @since 4.7.5\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/colors/} for color-related info\r\n */\nvar PatternSet = /** @class */function (_super) {\n __extends(PatternSet, _super);\n /**\r\n * Constructor\r\n */\n function PatternSet() {\n var _this = _super.call(this) || this;\n /**\r\n * Holds the list of the colors in this set. (preset or auto-generated)\r\n */\n _this._list = [];\n /**\r\n * Current step.\r\n */\n _this._currentStep = 0;\n /**\r\n * If set to non-zero value, the PatternSet will start iterating patterns from\r\n * that particular index, not the first pattern in the list.\r\n */\n _this._startIndex = 0;\n /**\r\n * Current pass in cycle. Once all patterns in the list are iterated,\r\n * iteration restarts from beginning and currentPass is incremented.\r\n */\n _this._currentPass = 0;\n /**\r\n * A base color. If there are no colors pre-set in the color list, ColorSet\r\n * will use this color as a base when generating new ones, applying\r\n * `stepOptions` and `passOptions` to this base color.\r\n */\n _this.baseColor = new Color({\n r: 103,\n g: 183,\n b: 220\n });\n _this.className = \"PatternSet\";\n // Set base color to be used for pattern elements\n var interfaceColors = new InterfaceColorSet();\n // Set default patterns\n _this.list = [_this.getLinePattern(1000, 45, 1, 6), _this.getRectPattern(10, 0, 4), _this.getLinePattern(1000, -45, 1, 6), _this.getCirclePattern(11, 2, true), _this.getLinePattern(6, 90, 1), _this.getRectPattern(12, 45, 6, true), _this.getLinePattern(6, 0, 1), _this.getRectPattern(7, 0, 4), _this.getLinePattern(1000, 45, 2, 3, \"4,2\"), _this.getCirclePattern(9, 3, false), _this.getLinePattern(1000, -45, 2, 3, \"4,2\"), _this.getRectPattern(10, 45, Math.sqrt(50)), _this.getLinePattern(1000, -45, 2, 1), _this.getRectPattern(10, 0, 9), _this.getLinePattern(1000, 45, 2, 1), _this.getLinePattern(1000, 0, 3, 1), _this.getRectPattern(10, 45, 10), _this.getLinePattern(1000, 90, 3, 1)];\n _this.baseColor = interfaceColors.getFor(\"stroke\");\n _this.applyTheme();\n return _this;\n }\n PatternSet.prototype.getLinePattern = function (size, rotation, thickness, gap, strokeDashArray) {\n var pattern = new LinePattern();\n pattern.width = size;\n pattern.height = size;\n pattern.stroke = this.baseColor;\n pattern.gap = gap;\n pattern.strokeDasharray = strokeDashArray;\n pattern.strokeWidth = thickness;\n pattern.rotation = rotation;\n return pattern;\n };\n PatternSet.prototype.getRectPattern = function (size, rotation, thickness, outline) {\n var pattern = new RectPattern();\n pattern.width = size;\n pattern.height = size;\n pattern.rectWidth = thickness;\n pattern.rectHeight = thickness;\n if (outline) {\n pattern.stroke = this.baseColor;\n pattern.strokeWidth = 1;\n pattern.fillOpacity = 0;\n } else {\n pattern.fill = this.baseColor;\n pattern.strokeWidth = 0;\n }\n if (rotation != 0) {\n pattern.shapeRendering = \"auto\";\n }\n pattern.rotation = rotation;\n return pattern;\n };\n PatternSet.prototype.getCirclePattern = function (size, radius, outline) {\n var pattern = new CirclePattern();\n pattern.width = size;\n pattern.height = size;\n pattern.shapeRendering = \"auto\";\n pattern.radius = radius;\n if (outline) {\n pattern.stroke = this.baseColor;\n pattern.strokeWidth = 1;\n pattern.fillOpacity = 0;\n } else {\n pattern.fill = this.baseColor;\n pattern.strokeWidth = 0;\n }\n return pattern;\n };\n Object.defineProperty(PatternSet.prototype, \"list\", {\n /**\r\n * @return Pattern list\r\n */\n get: function () {\n return this._list;\n },\n /**\r\n * List of pre-defined patterns to be used in set.\r\n *\r\n * @param value Pattern list\r\n */\n set: function (value) {\n this._list = value;\n this.reset();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns the next pattern in list.\r\n *\r\n * @return Pattern\r\n */\n PatternSet.prototype.next = function () {\n var pattern = this.getIndex(this.currentStep);\n this._currentStep++;\n return pattern;\n };\n /**\r\n * Returns a color at specific index in the list.\r\n *\r\n * @param i Index\r\n * @return Pattern\r\n */\n PatternSet.prototype.getIndex = function (i) {\n var pattern;\n while (this.list.length <= i) {\n this.generatePatterns();\n }\n pattern = this.list[i];\n return pattern.clone();\n };\n /**\r\n * Generates a new set of patterns.\r\n */\n PatternSet.prototype.generatePatterns = function () {\n var count = this.list.length / (this._currentPass + 1);\n this._currentPass++;\n for (var i = 0; i < count; i++) {\n this.list.push(this.list[i].clone());\n }\n };\n /**\r\n * Resets internal iterator.\r\n *\r\n * Calling `next()` after this will return the very first color in the color\r\n * list, even if it was already returned before.\r\n */\n PatternSet.prototype.reset = function () {\n this._currentStep = this._startIndex;\n };\n Object.defineProperty(PatternSet.prototype, \"currentStep\", {\n /**\r\n * @return Step\r\n */\n get: function () {\n return this._currentStep;\n },\n /**\r\n * Sets current color iteration. You can use this property to skip some\r\n * colors from iteration. E.g. setting it to `10` will skip first ten\r\n * colors.\r\n *\r\n * Please note that the number is zero-based.\r\n *\r\n * @param value Step\r\n */\n set: function (value) {\n this._currentStep = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PatternSet.prototype, \"startIndex\", {\n /**\r\n * @return Index\r\n */\n get: function () {\n return this._startIndex;\n },\n /**\r\n * If set to non-zero value, the ColorSet will start iterating colors from\r\n * that particular index, not the first color in the list.\r\n *\r\n * @default 0\r\n * @param value Index\r\n */\n set: function (value) {\n this._startIndex = value;\n this.reset();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n PatternSet.prototype.processConfig = function (config) {\n // if (config) {\n // \t// Set up axis ranges\n // \tif ($type.hasValue(config.list) && $type.isArray(config.list)) {\n // \t\tfor (let i = 0, len = config.list.length; i < len; i++) {\n // \t\t\tif (!(config.list[i] instanceof Color)) {\n // \t\t\t\tconfig.list[i] = color(config.list[i]);\n // \t\t\t}\n // \t\t}\n // \t}\n // }\n _super.prototype.processConfig.call(this, config);\n };\n return PatternSet;\n}(BaseObject);\nexport { PatternSet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PatternSet\"] = PatternSet;\n//# sourceMappingURL=PatternSet.js.map","/**\r\n * A plugin base class.\r\n */\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This is a base class that provides core functionality for plugins.\r\n *\r\n * The easiest way to start off with a new plugin is to extend this class.\r\n *\r\n * It will provide all the mandatory functionality, such as disposers.\r\n *\r\n * @since 4.2.2\r\n */\nvar Plugin = /** @class */function () {\n /**\r\n * Constructor\r\n */\n function Plugin() {\n /**\r\n * Is this object disposed?\r\n */\n this._disposed = false;\n /**\r\n * List of IDisposer which will be disposed when the BaseObject is disposed.\r\n *\r\n * @ignore Exclude from docs\r\n */\n this._disposers = [];\n // Nothing to do here\n }\n /**\r\n * Decorates series with required events and adapters used to hijack its\r\n * data.\r\n */\n Plugin.prototype.init = function () {\n // Does nothing\n // Override it\n };\n /**\r\n * Returns if this element is already disposed.\r\n *\r\n * @return Is disposed?\r\n */\n Plugin.prototype.isDisposed = function () {\n return this._disposed;\n };\n /**\r\n * Disposes this object and related stuff.\r\n */\n Plugin.prototype.dispose = function () {\n if (!this._disposed) {\n this._disposed = true;\n var a = this._disposers;\n this._disposers = null;\n while (a.length !== 0) {\n var disposer = a.shift();\n disposer.dispose();\n }\n }\n };\n return Plugin;\n}();\nexport { Plugin };\n//# sourceMappingURL=Plugin.js.map","/**\r\n * AmChartsLogo module.\r\n *\r\n * AmChartsLogo shows amCharts logo for non-commercial users of a library.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../Container\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { Polyspline } from \"./Polyspline\";\nimport { color } from \"../utils/Color\";\nimport { LinearGradient } from \"../rendering/fills/LinearGradient\";\nimport { DesaturateFilter } from \"../rendering/filters/DesaturateFilter\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A class used to draw and display progress indicator.\r\n *\r\n * @see {@link IAmChartsLogoEvents} for a list of available events\r\n * @see {@link IAmChartsLogoAdapters} for a list of available Adapters\r\n * @ignore Exclude from docs\r\n */\nvar AmChartsLogo = /** @class */function (_super) {\n __extends(AmChartsLogo, _super);\n /**\r\n * Constructor\r\n */\n function AmChartsLogo() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"AmChartsLogo\";\n _this.valign = \"bottom\";\n var d = 0.3;\n _this.opacity = 0.3;\n _this.defaultState.properties.opacity = 0.4;\n _this.url = \"https://www.amcharts.com/\";\n _this.urlTarget = \"_blank\";\n _this.showSystemTooltip = true;\n _this.readerTitle = \"Chart created using amCharts library\";\n _this.width = 220 * d;\n _this.height = 70 * d;\n _this.background.opacity = 0;\n var aColor = color(\"#474758\");\n if (new InterfaceColorSet().getFor(\"background\").alternative.hex == \"#ffffff\") {\n aColor = color(\"#ffffff\");\n }\n var aGradient = new LinearGradient();\n aGradient.addColor(aColor);\n aGradient.addColor(aColor, 1, 0.75);\n aGradient.addColor(color(\"#3cabff\"), 1, 0.755);\n aGradient.rotation = -10;\n var aStroke = aGradient;\n var m = _this.createChild(Polyspline);\n m.shouldClone = false;\n m.isMeasured = false;\n m.segments = [[{\n x: 50 * d,\n y: 50 * d\n }, {\n x: 90 * d,\n y: 50 * d\n }, {\n x: 120 * d,\n y: 20 * d\n }, {\n x: 135 * d,\n y: 35 * d\n }, {\n x: 150 * d,\n y: 20 * d\n }, {\n x: 180 * d,\n y: 50 * d\n }, {\n x: 200 * d,\n y: 50 * d\n }]];\n m.strokeWidth = 6 * d;\n m.tensionX = 0.8;\n m.tensionY = 1;\n m.stroke = color(\"#3cabff\");\n var a = _this.createChild(Polyspline);\n a.shouldClone = false;\n a.isMeasured = false;\n a.segments = [[{\n x: 20 * d,\n y: 50 * d\n }, {\n x: 50 * d,\n y: 50 * d\n }, {\n x: 90 * d,\n y: 12 * d\n }, {\n x: 133 * d,\n y: 50 * d\n }, {\n x: 170 * d,\n y: 50 * d\n }, {\n x: 200 * d,\n y: 50 * d\n }]];\n a.strokeWidth = 6 * d;\n a.tensionX = 0.75;\n a.tensionY = 1;\n a.stroke = aStroke;\n _this._disposers.push(a);\n var desaturateFilter = new DesaturateFilter();\n _this.filters.push(desaturateFilter);\n var desaturateFilterHover = new DesaturateFilter();\n desaturateFilterHover.saturation = 1;\n var hoverState = _this.states.create(\"hover\");\n hoverState.properties.opacity = 1;\n hoverState.filters.push(desaturateFilterHover);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n return AmChartsLogo;\n}(Container);\nexport { AmChartsLogo };\n//# sourceMappingURL=AmChartsLogo.js.map","import { __read, __spread } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { system } from \"../System\";\nimport { registry } from \"../Registry\";\nimport { Container } from \"../Container\";\nimport { Component } from \"../Component\";\nimport { Paper } from \"../rendering/Paper\";\nimport { SVGContainer, svgContainers } from \"../rendering/SVGContainer\";\nimport { FocusFilter } from \"../rendering/filters/FocusFilter\";\nimport { Preloader } from \"../elements/Preloader\";\nimport { AmChartsLogo } from \"../elements/AmChartsLogo\";\nimport { Tooltip } from \"../elements/Tooltip\";\nimport { Disposer, MultiDisposer } from \"../utils/Disposer\";\nimport { percent } from \"./Percent\";\nimport { options } from \"../Options\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\nimport * as $dom from \"./DOM\";\nimport * as $utils from \"./Utils\";\nimport * as $log from \"./Log\";\n/**\r\n * ============================================================================\r\n * INSTANTIATION FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates all HTML and SVG containers needed for the chart instance, as well\r\n * as the new [[Sprite]] (as specified in `classType` parameter).\r\n *\r\n * @param htmlElement A container to creat elements in\r\n * @param classType A class definition of the new element to create\r\n * @return Newly-created Sprite object\r\n */\nfunction createChild(htmlElement, classType) {\n var htmlContainer = $dom.getElement(htmlElement);\n // If there's no container available yet, we create a fake one\n var tmpContainer = false;\n if (!htmlContainer) {\n htmlContainer = document.createElement(\"div\");\n htmlContainer.style.width = \"200px\";\n htmlContainer.style.height = \"200px\";\n htmlContainer.style.top = \"0\";\n htmlContainer.style.left = \"0\";\n htmlContainer.style.visibility = \"hidden\";\n htmlContainer.style.position = \"absolute\";\n document.body.appendChild(htmlContainer);\n tmpContainer = true;\n }\n if (htmlContainer) {\n htmlContainer.innerHTML = \"\";\n //htmlContainer.style.overflow = \"hidden\";\n var svgDiv_1 = new SVGContainer(htmlContainer);\n var paper = new Paper(svgDiv_1.SVGContainer, \"svg-\" + (svgContainers.length - 1));\n // the approach with masks is chosen because overflow:visible is set on SVG element in order tooltips could go outside\n // svg area - this is often needed when working with small charts.\n // main container which holds content container and tooltips container\n var container_1 = new Container();\n container_1.htmlContainer = htmlContainer;\n container_1.svgContainer = svgDiv_1;\n container_1.width = percent(100);\n container_1.height = percent(100);\n container_1.background.fillOpacity = 0;\n container_1.paper = paper;\n paper.append(container_1.group);\n // Set up moving to proper element container if it's not yet ready at call time\n if (tmpContainer) {\n $dom.ready(function () {\n container_1.moveHtmlContainer(htmlElement);\n });\n }\n // this is set from parent container, but this one doesn't have, so do it manually.\n container_1.relativeWidth = 1;\n container_1.relativeHeight = 1;\n svgDiv_1.container = container_1;\n // creating classType instance\n var sprite_1 = container_1.createChild(classType);\n sprite_1.topParent = container_1;\n var uid = sprite_1.uid;\n registry.invalidSprites[uid] = [];\n registry.invalidDatas[uid] = [];\n registry.invalidPositions[uid] = [];\n registry.invalidLayouts[uid] = [];\n container_1.baseId = uid;\n sprite_1.isBaseSprite = true;\n sprite_1.focusFilter = new FocusFilter();\n registry.baseSprites.push(sprite_1);\n registry.baseSpritesByUid[uid] = sprite_1;\n sprite_1.maskRectangle = {\n x: 0,\n y: 0,\n width: Math.max(svgDiv_1.width || 0, 0),\n height: Math.max(svgDiv_1.height || 0, 0)\n };\n // this solves issues with display:none, as all children are measured as 0x0\n container_1.events.on(\"maxsizechanged\", function (event) {\n if (event.previousWidth == 0 || event.previousHeight == 0) {\n container_1.deepInvalidate();\n }\n if (sprite_1.maskRectangle) {\n sprite_1.maskRectangle = {\n x: 0,\n y: 0,\n width: Math.max(svgDiv_1.width || 0, 0),\n height: Math.max(svgDiv_1.height || 0, 0)\n };\n }\n });\n var loopTimer_1 = null;\n // Checks to see whether the chart was properly disposed or not\n var loop_1 = function () {\n if (!sprite_1.isDisposed()) {\n if ($dom.getRoot(sprite_1.dom) == null) {\n if (options.autoDispose) {\n container_1.htmlContainer = undefined;\n svgDiv_1.htmlElement = undefined;\n sprite_1.dispose();\n } else {\n $log.warn(\"Chart was not disposed\", sprite_1.uid);\n }\n loopTimer_1 = null;\n } else {\n loopTimer_1 = window.setTimeout(loop_1, 1000);\n }\n } else {\n loopTimer_1 = null;\n }\n };\n loop_1();\n sprite_1.addDisposer(new Disposer(function () {\n if (loopTimer_1 !== null) {\n clearTimeout(loopTimer_1);\n }\n $array.remove(registry.baseSprites, sprite_1);\n registry.baseSpritesByUid[sprite_1.uid] = undefined;\n }));\n // TODO figure out a better way of doing this\n sprite_1.addDisposer(container_1);\n // tooltip container\n var tooltipContainer_1 = container_1.createChild(Container);\n tooltipContainer_1.topParent = container_1;\n tooltipContainer_1.width = percent(100);\n tooltipContainer_1.height = percent(100);\n tooltipContainer_1.isMeasured = false;\n container_1.tooltipContainer = tooltipContainer_1;\n sprite_1.tooltip = new Tooltip();\n sprite_1.tooltip.hide(0);\n sprite_1.tooltip.setBounds({\n x: 0,\n y: 0,\n width: tooltipContainer_1.maxWidth,\n height: tooltipContainer_1.maxHeight\n });\n tooltipContainer_1.events.on(\"maxsizechanged\", function () {\n $type.getValue(sprite_1.tooltip).setBounds({\n x: 0,\n y: 0,\n width: tooltipContainer_1.maxWidth,\n height: tooltipContainer_1.maxHeight\n });\n }, undefined, false);\n //@todo: maybe we don't need to create one by default but only on request?\n var preloader_1 = new Preloader();\n preloader_1.events.on(\"inited\", function () {\n preloader_1.__disabled = true;\n }, undefined, false);\n container_1.preloader = preloader_1;\n //if (!options.commercialLicense) {\n if (sprite_1 instanceof Container && !sprite_1.hasLicense()) {\n var logo_1 = tooltipContainer_1.createChild(AmChartsLogo);\n tooltipContainer_1.events.on(\"maxsizechanged\", function (ev) {\n if (tooltipContainer_1.maxWidth <= 100 || tooltipContainer_1.maxHeight <= 50) {\n logo_1.hide();\n } else if (logo_1.isHidden || logo_1.isHiding) {\n logo_1.show();\n }\n }, undefined, false);\n sprite_1.logo = logo_1;\n logo_1.align = \"left\";\n logo_1.valign = \"bottom\";\n }\n $utils.used(sprite_1.numberFormatter); // need to create one.\n // Set this as an autonomouse instance\n // Controls like Preloader, Export will use this.\n container_1.isStandaloneInstance = true;\n if (options.onlyShowOnViewport) {\n if (!$dom.isElementInViewport(htmlContainer, options.viewportTarget)) {\n sprite_1.__disabled = true;\n sprite_1.tooltipContainer.__disabled = true;\n var disposers = [$dom.addEventListener(window, \"DOMContentLoaded\", function () {\n viewPortHandler(sprite_1);\n }), $dom.addEventListener(window, \"load\", function () {\n viewPortHandler(sprite_1);\n }), $dom.addEventListener(window, \"resize\", function () {\n viewPortHandler(sprite_1);\n }), $dom.addEventListener(window, \"scroll\", function () {\n viewPortHandler(sprite_1);\n })];\n if (options.viewportTarget) {\n var targets = $type.isArray(options.viewportTarget) ? options.viewportTarget : options.viewportTarget ? [options.viewportTarget] : [];\n for (var i = 0; i < targets.length; i++) {\n var target = targets[i];\n disposers.push($dom.addEventListener(target, \"resize\", function () {\n viewPortHandler(sprite_1);\n }));\n disposers.push($dom.addEventListener(target, \"scroll\", function () {\n viewPortHandler(sprite_1);\n }));\n }\n }\n var disposer = new MultiDisposer(disposers);\n sprite_1.addDisposer(disposer);\n sprite_1.vpDisposer = disposer;\n } else if (options.queue) {\n addToQueue(sprite_1);\n }\n } else if (options.queue) {\n addToQueue(sprite_1);\n }\n return sprite_1;\n } else {\n system.log(\"html container not found\");\n throw new Error(\"html container not found\");\n }\n}\n/**\r\n * Disposes all of the currently active charts.\r\n */\nexport function disposeAllCharts() {\n while (registry.baseSprites.length !== 0) {\n registry.baseSprites.pop().dispose();\n }\n}\nexport function addToQueue(sprite) {\n if (registry.queue.indexOf(sprite) == -1) {\n sprite.__disabled = true;\n sprite.tooltipContainer.__disabled = true;\n sprite.events.disableType(\"appeared\");\n if (registry.queue.length == 0) {\n registry.events.once(\"exitframe\", function () {\n queueHandler(sprite);\n });\n system.requestFrame();\n }\n sprite.addDisposer(new Disposer(function () {\n removeFromQueue(sprite);\n }));\n registry.queue.push(sprite);\n }\n}\nexport function removeFromQueue(sprite) {\n var index = registry.queue.indexOf(sprite);\n if (index >= 0) {\n registry.queue.splice(registry.queue.indexOf(sprite), 1);\n var nextSprite = registry.queue[index];\n if (nextSprite) {\n queueHandler(nextSprite);\n }\n }\n}\n/**\r\n * Checks whether the chart was not initialized fully due to setting\r\n * of `onlyShowOnViewport`. If it hasn't and is now in the viewport\r\n * the chart will be initialized.\r\n *\r\n * @since 4.9.12\r\n * @param sprite Top-level chart object\r\n */\nexport function viewPortHandler(sprite) {\n if (sprite.__disabled && $dom.isElementInViewport(sprite.htmlContainer, options.viewportTarget)) {\n if (sprite.vpDisposer) {\n sprite.vpDisposer.dispose();\n }\n addToQueue(sprite);\n }\n}\nexport function queueHandler(sprite) {\n if (sprite && sprite.tooltipContainer) {\n sprite.__disabled = false;\n sprite.tooltipContainer.__disabled = false;\n sprite.events.enableType(\"appeared\");\n sprite.dispatch(\"removedfromqueue\");\n if (sprite.showOnInit) {\n sprite.events.on(\"appeared\", function () {\n removeFromQueue(sprite);\n });\n }\n if (sprite.vpDisposer) {\n sprite.vpDisposer.dispose();\n }\n if (sprite instanceof Container) {\n sprite.invalidateLabels();\n }\n if (sprite.tooltipContainer) {\n sprite.tooltipContainer.invalidateLayout();\n }\n if (sprite instanceof Component) {\n sprite.invalidateData();\n sprite.reinit();\n sprite.events.once(\"datavalidated\", function () {\n if (sprite.showOnInit) {\n sprite.appear();\n } else {\n removeFromQueue(sprite);\n }\n });\n } else {\n sprite.reinit();\n sprite.events.once(\"inited\", function () {\n removeFromQueue(sprite);\n });\n if (sprite.showOnInit) {\n sprite.appear();\n }\n }\n }\n}\n/**\r\n * A shortcut to creating a chart instance.\r\n *\r\n * The first argument is either a reference to or an id of a DOM element to be\r\n * used as a container for the chart.\r\n *\r\n * The second argument is the type reference of the chart type. (for plain\r\n * JavaScript users this can also be a string indicating chart type)\r\n *\r\n * ```TypeScript\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n * ```\r\n * ```JavaScript\r\n * // Can pass in chart type reference like this:\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // ... or chart class type as a string:\r\n * var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @param htmlElement Reference or id of the target container element\r\n * @param classType Class type of the target chart type\r\n * @return Chart instance\r\n */\nexport function create(htmlElement, classType) {\n // This is a nasty hack for the benefit of vanilla JS users, who do not\n // enjoy benefits of type-check anyway.\n // We're allowing passing in a name of the class rather than type reference\n // itself.\n var classError;\n if ($type.isString(classType)) {\n if ($type.hasValue(registry.registeredClasses[classType])) {\n classType = registry.registeredClasses[classType];\n } else {\n classType = registry.registeredClasses[\"Container\"];\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\n }\n }\n // Create the chart\n var chart = createChild(htmlElement, classType);\n // Error?\n if (classError) {\n chart.raiseCriticalError(classError);\n }\n return chart;\n}\n/**\r\n * A shortcut to creating a chart from a config object.\r\n *\r\n * Example:\r\n *\r\n * ```TypeScript\r\n * let chart am4core.createFromConfig({ ... }, \"chartdiv\", am4charts.XYChart );\r\n * ```\r\n * ```JavaScript\r\n * var chart am4core.createFromConfig({ ... }, \"chartdiv\", \"XYChart\" );\r\n * ```\r\n *\r\n * If `chartType` parameter is not supplied it must be set in a config object,\r\n * via reference to chart type, e.g.:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": am4charts.XYChart,\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * Or via string: (if you are using JavaScript)\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * A `container` can either be a reference to an HTML container to put chart\r\n * in, or it's unique id.\r\n *\r\n * If `container` is not specified, it must be included in the config object:\r\n *\r\n * ```TypeScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * {\r\n * \"type\": \"XYChart\",\r\n * \"container\": \"chartdiv\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @param config Config object in property/value pairs\r\n * @param htmlElement Container reference or ID\r\n * @param objectType Chart type\r\n * @return A newly created chart instance\r\n * @todo Throw exception if type is not correct\r\n */\nexport function createFromConfig(config, htmlElement, classType) {\n // Extract chart type from config if necessary\n if (!$type.hasValue(classType)) {\n classType = config.type;\n delete config.type;\n }\n // Extract element from config if necessary\n if (!$type.hasValue(htmlElement)) {\n htmlElement = config.container;\n delete config.container;\n }\n // Check if we need to extract actual type reference\n var finalType;\n var classError;\n if ($type.isString(classType) && $type.hasValue(registry.registeredClasses[classType])) {\n finalType = registry.registeredClasses[classType];\n } else if (typeof classType !== \"function\") {\n finalType = Container;\n classError = new Error(\"Class [\" + classType + \"] is not loaded.\");\n } else {\n finalType = classType;\n }\n // Create the chart\n var chart = createChild(htmlElement, finalType);\n // Set config\n if (classError) {\n chart.raiseCriticalError(classError);\n } else {\n chart.config = config;\n }\n return chart;\n}\n/**\r\n * Useful in creating real queues form mult-chart creation.\r\n *\r\n * Accepts a reference to a function which crates and returns actual chart\r\n * object.\r\n *\r\n * It returns a `Promise` which you can use to catch chart instance once it's\r\n * created.\r\n *\r\n * ```TypeScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * let chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * let chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n * ```JavaScript\r\n * am4core.createDeferred(function(div) {\r\n * // Create first chart\r\n * var chart = am4core.create(div, am4charts.XYChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv1\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n *\r\n * am4core.createDeferred(function(div) {\r\n * // Create second chart\r\n * var chart = am4core.create(div, am4charts.PieChart);\r\n * // ...\r\n * return chart;\r\n * }, \"chartdiv2\").then(chart) {\r\n * // `chart` variable holds an instance of the chart\r\n * console.log(\"Chart ready\", chart);\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n * @since 4.10.0\r\n * @param callback Callback function that creates chart\r\n * @param scope Scope to call callback in\r\n * @param ...rest Parameters to pass into callback\r\n * @return Promise with chart instance\r\n */\nexport function createDeferred(callback, scope) {\n var rest = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n rest[_i - 2] = arguments[_i];\n }\n return new Promise(function (resolve, reject) {\n registry.deferred.push({\n scope: scope,\n callback: callback,\n args: rest,\n resolve: resolve\n });\n if (registry.deferred.length == 1) {\n processNextDeferred();\n }\n });\n}\nfunction processNextDeferred() {\n var _a;\n var next = registry.deferred[0];\n if (next) {\n var sprite_2 = (_a = next.callback).call.apply(_a, __spread([next.scope], next.args));\n sprite_2.events.on(\"ready\", function () {\n next.resolve(sprite_2);\n registry.deferred.shift();\n if (options.deferredDelay) {\n setTimeout(processNextDeferred, options.deferredDelay);\n } else {\n processNextDeferred();\n }\n });\n }\n}\n/**\r\n * Applies a theme to System, and subsequently all chart instances created\r\n * from that point forward.\r\n *\r\n * amCharts supports multiple themes. Calling `useTheme` multiple times will\r\n * make the System apply multiple themes, rather than overwrite previously\r\n * set one.\r\n *\r\n * This enables combining features from multiple themes on the same chart.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n * ```JavaScript\r\n * am4core.useTheme(am4themes.material);\r\n * am4core.useTheme(am4themes.animated);\r\n * ```\r\n *\r\n * The above will apply both the Material color and animation options to all\r\n * charts created.\r\n *\r\n * @param value A reference to a theme\r\n */\nexport function useTheme(value) {\n if (registry.themes.indexOf(value) === -1) {\n registry.themes.push(value);\n }\n}\n/**\r\n * Removes a theme from \"active themes\" list, so it won't get applied to any\r\n * charts created subsequently.\r\n *\r\n * @param value A reference to a theme\r\n */\nexport function unuseTheme(value) {\n $array.remove(registry.themes, value);\n}\n/**\r\n * Removes all \"active\" themes. Any charts created subsequently will not have\r\n * any theme applied to them.\r\n */\nexport function unuseAllThemes() {\n registry.themes = [];\n}\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am4core.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @since 4.5.16\r\n * @param license License key\r\n */\nexport function addLicense(license) {\n options.licenses.push(license);\n}\n//# sourceMappingURL=Instance.js.map","/**\r\n * Grip module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Button } from \"./Button\";\nimport { Sprite } from \"../Sprite\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { registry } from \"../Registry\";\nimport { percent } from \"../utils/Percent\";\nimport * as $path from \"../rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a grip element that can be used for scrolling or other things.\r\n *\r\n * @see {@link IGripEvents} for a list of available events\r\n * @see {@link IGripAdapters} for a list of available Adapters\r\n * @since 4.4.0\r\n */\nvar Grip = /** @class */function (_super) {\n __extends(Grip, _super);\n /**\r\n * Constructor\r\n */\n function Grip() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"Grip\";\n var cs = new InterfaceColorSet();\n // Set defaults\n _this.layout = \"absolute\";\n _this.padding(10, 10, 10, 10);\n _this.margin(3, 3, 3, 3);\n _this.background.fillOpacity = 0.3;\n _this.background.cornerRadius(10, 10, 10, 10);\n // Create an icon\n var icon = new Sprite();\n icon.element = _this.paper.add(\"path\");\n var path = $path.moveTo({\n x: -6,\n y: 0\n });\n path += $path.lineTo({\n x: 6,\n y: 0\n });\n path += $path.moveTo({\n x: -8,\n y: -6\n });\n path += $path.lineTo({\n x: 0,\n y: -12\n });\n path += $path.lineTo({\n x: 8,\n y: -6\n });\n path += $path.moveTo({\n x: -8,\n y: 6\n });\n path += $path.lineTo({\n x: 0,\n y: 12\n });\n path += $path.lineTo({\n x: 8,\n y: 6\n });\n icon.path = path;\n icon.strokeWidth = 2;\n icon.fillOpacity = 0;\n icon.pixelPerfect = true;\n icon.padding(0, 4, 0, 4);\n icon.stroke = cs.getFor(\"text\");\n icon.strokeOpacity = 0.7;\n icon.align = \"center\";\n icon.valign = \"middle\";\n _this.icon = icon;\n _this.label.dispose();\n _this.label = undefined;\n // Set default position\n _this.position = \"right\";\n // Set up autohide\n _this.autoHideDelay = 3000;\n _this.events.on(\"shown\", function (ev) {\n if (_this._autoHideTimeout) {\n _this._autoHideTimeout.dispose();\n }\n if (_this.autoHideDelay) {\n _this._autoHideTimeout = _this.setTimeout(function () {\n _this.hide();\n }, _this.autoHideDelay);\n }\n });\n _this.events.on(\"down\", function (ev) {\n if (_this._autoHideTimeout) {\n _this._autoHideTimeout.dispose();\n }\n });\n _this.events.on(\"out\", function (ev) {\n if (_this.autoHideDelay) {\n _this._autoHideTimeout = _this.setTimeout(function () {\n _this.hide();\n }, _this.autoHideDelay);\n }\n });\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Grip.prototype, \"position\", {\n /**\r\n * @return Position\r\n */\n get: function () {\n return this.getPropertyValue(\"position\");\n },\n /**\r\n * Sets position of the grip.\r\n *\r\n * Available options: \"left\", \"right\" (default), \"top\", \"bottom\".\r\n *\r\n * @param value Position\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"position\", value)) {\n switch (value) {\n case \"left\":\n this.align = \"left\";\n this.valign = \"middle\";\n this.horizontalCenter = \"left\";\n this.verticalCenter = \"middle\";\n this.icon.rotation = 0;\n this.width = undefined;\n this.height = percent(30);\n break;\n case \"right\":\n this.align = \"right\";\n this.valign = \"middle\";\n this.horizontalCenter = \"right\";\n this.verticalCenter = \"middle\";\n this.icon.rotation = 0;\n this.width = undefined;\n this.height = percent(30);\n break;\n case \"top\":\n this.align = \"center\";\n this.valign = \"top\";\n this.horizontalCenter = \"middle\";\n this.verticalCenter = \"top\";\n this.icon.rotation = 90;\n this.width = percent(30);\n this.height = undefined;\n break;\n case \"bottom\":\n this.align = \"center\";\n this.valign = \"bottom\";\n this.horizontalCenter = \"middle\";\n this.verticalCenter = \"bottom\";\n this.icon.rotation = 90;\n this.width = percent(30);\n this.height = undefined;\n break;\n default:\n this.align = \"center\";\n this.valign = \"middle\";\n this.horizontalCenter = \"middle\";\n this.verticalCenter = \"middle\";\n this.icon.rotation = 90;\n this.width = percent(30);\n this.height = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Grip.prototype, \"autoHideDelay\", {\n /**\r\n * @return Delay\r\n */\n get: function () {\n return this.getPropertyValue(\"autoHideDelay\");\n },\n /**\r\n * Number of milliseconds to show grip until it is hidden automatically.\r\n *\r\n * @default 3000\r\n * @param value Delay\r\n */\n set: function (value) {\n this.setPropertyValue(\"autoHideDelay\", value);\n },\n enumerable: true,\n configurable: true\n });\n return Grip;\n}(Button);\nexport { Grip };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Grip\"] = Grip;\n//# sourceMappingURL=Grip.js.map","/**\r\n * [[Chart]] class provides base functionality for all chart types to inherit.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { registry } from \"../core/Registry\";\nimport { Component } from \"../core/Component\";\nimport { MutableValueDisposer, Disposer } from \"../core/utils/Disposer\";\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\nimport { Container } from \"../core/Container\";\nimport { Label } from \"../core/elements/Label\";\nimport { Grip } from \"../core/elements/Grip\";\nimport { DataItem } from \"../core/DataItem\";\nimport { percent } from \"../core/utils/Percent\";\nimport * as $iter from \"../core/utils/Iterator\";\nimport * as $type from \"../core/utils/Type\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[Chart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar ChartDataItem = /** @class */function (_super) {\n __extends(ChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return ChartDataItem;\n}(DataItem);\nexport { ChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for all Charts.\r\n *\r\n * @see {@link IChartEvents} for a list of available Events\r\n * @see {@link IChartAdapters} for a list of available Adapters\r\n */\nvar Chart = /** @class */function (_super) {\n __extends(Chart, _super);\n /**\r\n * Constructor\r\n */\n function Chart() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A reference to chart's [[Legend]].\r\n * @ignore\r\n */\n _this._legend = new MutableValueDisposer();\n if (_this.constructor === Chart) {\n throw new Error(\"'Chart' cannot be instantiated directly. Please use a specific chart type.\");\n }\n _this.className = \"Chart\";\n // Create a list of titles\n var template = new Label();\n _this.titles = new ListTemplate(template);\n _this._disposers.push(new ListDisposer(_this.titles));\n _this._disposers.push(template);\n // Chart component is also a container. it holds _chartAndLegendCont and titles\n _this.width = percent(100);\n _this.height = percent(100);\n _this.layout = \"vertical\";\n // Chart and legend\n var chartAndLegendContainer = _this.createChild(Container);\n chartAndLegendContainer.shouldClone = false;\n chartAndLegendContainer.layout = \"vertical\";\n chartAndLegendContainer.width = percent(100);\n chartAndLegendContainer.height = percent(100);\n _this.chartAndLegendContainer = chartAndLegendContainer;\n // Chart container holds all the elements of a chart, extept titles and legend\n var chartContainer = chartAndLegendContainer.createChild(Container);\n chartContainer.shouldClone = false;\n chartContainer.width = percent(100);\n chartContainer.height = percent(100);\n _this.chartContainer = chartContainer;\n _this.showOnInit = true;\n _this._disposers.push(_this._legend);\n // Add title list events to apply certain formatting options and to make\n // the chart reference them as accessible screen reader labels\n _this.titles.events.on(\"inserted\", function (label) {\n _this.processTitle(label);\n _this.updateReaderTitleReferences();\n }, _this, false);\n _this.titles.events.on(\"removed\", function (label) {\n _this.updateReaderTitleReferences();\n }, _this, false);\n // Accessibility\n // It seems we can't set focusable on the whole chart because it seems to\n // mess up the whole focus event system - getting a focus on an inside\n // object also trigger focus on parent\n //this.focusable = true;\n _this.role = \"region\";\n _this.defaultState.transitionDuration = 1;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n Chart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Chart\");\n }\n };\n /**\r\n * Initiates drawing of the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Chart.prototype.draw = function () {\n this.fixLayout();\n _super.prototype.draw.call(this);\n };\n /**\r\n * Updates legend's hierarchy based on the position.\r\n */\n Chart.prototype.fixLayout = function () {\n var legend = this.legend;\n if (legend) {\n var chartAndLegendContainer = this.chartAndLegendContainer;\n var chartContainer = this.chartContainer;\n chartContainer.x = undefined;\n chartContainer.y = undefined;\n if (legend.position != \"absolute\") {\n legend.x = undefined;\n legend.y = undefined;\n }\n switch (legend.position) {\n case \"left\":\n chartAndLegendContainer.layout = \"horizontal\";\n legend.toBack();\n break;\n case \"right\":\n chartAndLegendContainer.layout = \"horizontal\";\n legend.toFront();\n break;\n case \"top\":\n chartAndLegendContainer.layout = \"vertical\";\n legend.toBack();\n break;\n case \"bottom\":\n chartAndLegendContainer.layout = \"vertical\";\n legend.toFront();\n break;\n case \"absolute\":\n legend.isMeasured = false;\n break;\n }\n }\n };\n /**\r\n * Setups the legend to use the chart's data.\r\n */\n Chart.prototype.feedLegend = function () {\n // Nothing here. This method is provided only as a \"placeholder\" for\n // extending classes to override\n };\n /**\r\n * Adds a new title to the chart when it is inserted into chart's titles\r\n * list.\r\n * @param event An event object which is triggered when inserting into titles list\r\n * @return Label object\r\n */\n Chart.prototype.processTitle = function (event) {\n var title = event.newValue;\n title.parent = this;\n title.toBack();\n title.shouldClone = false;\n title.align = \"center\";\n // Need to explicitly apply the `id` attribute so it can be referenced by\n // `aria-labelledby`\n title.uidAttr();\n return title;\n };\n /**\r\n * Checks if chart has any title elements. If it does, we will use them in an\r\n * `aria-labelledby` attribute so that screen readers can use them to properly\r\n * describe the chart when it is focused or hovered.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Chart.prototype.updateReaderTitleReferences = function () {\n if (this.titles.length) {\n var titleIds_1 = [];\n $iter.each(this.titles.iterator(), function (title) {\n titleIds_1.push(title.uid);\n });\n this.setSVGAttribute({\n \"aria-labelledby\": titleIds_1.join(\" \")\n });\n } else {\n this.removeSVGAttribute(\"aria-labelledby\");\n }\n };\n Object.defineProperty(Chart.prototype, \"legend\", {\n /**\r\n * @return Legend\r\n */\n get: function () {\n return this._legend.get();\n },\n /**\r\n * Holds the instance of chart's [[Leged]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for more information about legends\r\n * @param Legend\r\n */\n set: function (legend) {\n this.setLegend(legend);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Prepares the legend instance for use in this chart.\r\n *\r\n * @param legend Legend\r\n */\n Chart.prototype.setLegend = function (legend) {\n var _this = this;\n if (this._legend.get() !== legend) {\n if (legend) {\n // Set legend options\n legend.parent = this.chartAndLegendContainer;\n this._legend.set(legend, legend.events.on(\"propertychanged\", function (event) {\n if (event.property == \"position\") {\n _this.fixLayout();\n }\n }, undefined, false));\n legend.addDisposer(new Disposer(function () {\n _this.legend = undefined;\n }));\n } else {\n this._legend.reset();\n }\n this.feedLegend();\n }\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n Chart.prototype.dispose = function () {\n // otherwise there might be some errors when disposing chart which was just inited\n if (this.legend) {\n this.legend.dispose();\n }\n _super.prototype.dispose.call(this);\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Chart.prototype.processConfig = function (config) {\n if (config) {\n // Set up legend\n if ($type.hasValue(config.legend) && !$type.hasValue(config.legend.type)) {\n config.legend.type = \"Legend\";\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\n Chart.prototype.copyFrom = function (source) {\n this.titles.copyFrom(source.titles);\n this.chartContainer.copyFrom(source.chartContainer);\n if (source.legend) {\n this.legend = source.legend.clone();\n this.legend.removeChildren();\n }\n _super.prototype.copyFrom.call(this, source);\n };\n Object.defineProperty(Chart.prototype, \"dragGrip\", {\n /**\r\n * @return Grip\r\n */\n get: function () {\n var _this = this;\n if (!this._dragGrip) {\n var grip_1 = this.tooltipContainer.createChild(Grip);\n grip_1.align = \"right\";\n grip_1.valign = \"middle\";\n grip_1.hide(0);\n grip_1.events.on(\"down\", function (ev) {\n if (ev.touch) {\n _this.interactionsEnabled = false;\n }\n });\n grip_1.events.on(\"up\", function (ev) {\n _this.interactionsEnabled = true;\n });\n this.events.on(\"down\", function (ev) {\n if (ev.touch) {\n grip_1.show();\n }\n });\n this._dragGrip = grip_1;\n }\n return this._dragGrip;\n },\n /**\r\n * An instance of [[Grip]] which serves as a grip point which appears on\r\n * touch and allows scrolling whole page even if chart is occupying the\r\n * whole of the screen and would otherwise prevent scrolling.\r\n *\r\n * @since 4.4.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/touch/} For more information.\r\n * @param value Grip\r\n */\n set: function (value) {\n this._dragGrip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"focusable\", {\n get: function () {\n return this.parent.focusable;\n },\n set: function (value) {\n this.parent.focusable = value;\n },\n enumerable: true,\n configurable: true\n });\n return Chart;\n}(Component);\nexport { Chart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Chart\"] = Chart;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Reduce horizontal margins\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.widthXS,\n state: function (target, stateId) {\n if (target instanceof Chart) {\n var state = target.states.create(stateId);\n if (target.pixelPaddingLeft > 10) {\n state.properties.paddingLeft = 10;\n }\n if (target.pixelPaddingRight > 10) {\n state.properties.paddingRight = 10;\n }\n return state;\n }\n return null;\n }\n});\n/**\r\n * Reduce vertical margins\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXS,\n state: function (target, stateId) {\n if (target instanceof Chart) {\n var state = target.states.create(stateId);\n if (target.pixelPaddingTop > 10) {\n state.properties.paddingTop = 10;\n }\n if (target.pixelPaddingBottom > 10) {\n state.properties.paddingBottom = 10;\n }\n return state;\n }\n return null;\n }\n});\n/**\r\n * Remove horizontal padding\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.widthXXS,\n state: function (target, stateId) {\n if (target instanceof Chart) {\n var state = target.states.create(stateId);\n state.properties.paddingLeft = 0;\n state.properties.paddingRight = 0;\n return state;\n }\n return null;\n }\n});\n/**\r\n * Remove vertical padding\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXXS,\n state: function (target, stateId) {\n if (target instanceof Chart) {\n var state = target.states.create(stateId);\n state.properties.paddingTop = 0;\n state.properties.paddingBottom = 0;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Chart.js.map","/**\r\n * Module that defines everything related to building bullets.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { registry } from \"../../core/Registry\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates bullets.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar Bullet = /** @class */function (_super) {\n __extends(Bullet, _super);\n /**\r\n * Constructor\r\n */\n function Bullet() {\n var _this = _super.call(this) || this;\n _this.className = \"Bullet\";\n _this.isMeasured = false;\n _this.tooltipX = 0;\n _this.tooltipY = 0;\n _this.layout = \"none\";\n _this.applyOnClones = true;\n _this.copyToLegendMarker = true;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Bullet.prototype, \"locationX\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"locationX\");\n },\n /**\r\n * Relative horizontal location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"locationX\", value)) {\n var dataItem = this.dataItem;\n if (dataItem && dataItem.component) {\n dataItem.component.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Bullet.prototype, \"locationY\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"locationY\");\n },\n /**\r\n * Relative vertical location within cell. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"locationY\", value)) {\n var dataItem = this.dataItem;\n if (dataItem && dataItem.component) {\n dataItem.component.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Bullet.prototype, \"xField\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this.getPropertyValue(\"xField\");\n },\n /**\r\n * [xField description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setPropertyValue(\"xField\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Bullet.prototype, \"yField\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this.getPropertyValue(\"yField\");\n },\n /**\r\n * [yField description]\r\n *\r\n * Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setPropertyValue(\"yField\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Bullet.prototype, \"isDynamic\", {\n /**\r\n * @return Redraw on data change?\r\n */\n get: function () {\n return this.getPropertyValue(\"isDynamic\");\n },\n /**\r\n * Indicates if the bullet is \"dynamic\".\r\n *\r\n * In most cases the bullets remain the same, even if the underlying data\r\n * changes.\r\n *\r\n * However, in cases where bullet also displays a label, or its size depends\r\n * on data, it also needs to be redrawn when the underlying data changes.\r\n *\r\n * Only those bullets that have set `isDynamic = true` will be redrawn each\r\n * time data changes. Regular bullets will be reused as they are.\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\n set: function (value) {\n this.setPropertyValue(\"isDynamic\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Bullet.prototype, \"copyToLegendMarker\", {\n /**\r\n * @return Redraw on data change?\r\n */\n get: function () {\n return this.getPropertyValue(\"copyToLegendMarker\");\n },\n /**\r\n * Indicates if the bullet should be copied to legend marker\r\n *\r\n * @default false\r\n * @param value Redraw on data change?\r\n */\n set: function (value) {\n this.setPropertyValue(\"copyToLegendMarker\", value);\n },\n enumerable: true,\n configurable: true\n });\n return Bullet;\n}(Container);\nexport { Bullet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Bullet\"] = Bullet;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Hide bullets\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.isXS,\n state: function (target, stateId) {\n if (target instanceof Bullet) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Bullet.js.map","/**\r\n * Legend-related functionality.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Component } from \"../core/Component\";\nimport { DataItem } from \"../core/DataItem\";\nimport { ListTemplate, ListDisposer } from \"../core/utils/List\";\nimport { RoundedRectangle } from \"../core/elements/RoundedRectangle\";\nimport { Container } from \"../core/Container\";\nimport { Label } from \"../core/elements/Label\";\nimport { keyboard } from \"../core/utils/Keyboard\";\nimport { registry } from \"../core/Registry\";\nimport { getInteraction } from \"../core/interaction/Interaction\";\nimport { percent, Percent } from \"../core/utils/Percent\";\nimport { InterfaceColorSet } from \"../core/utils/InterfaceColorSet\";\nimport * as $utils from \"../core/utils/Utils\";\nimport * as $type from \"../core/utils/Type\";\nimport * as $math from \"../core/utils/Math\";\nimport { Sprite } from \"../core/Sprite\";\nimport { Disposer } from \"../core/utils/Disposer\";\nimport { MouseCursorStyle } from \"../core/interaction/Mouse\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../core/utils/Responsive\";\nimport { Scrollbar } from \"../core/elements/Scrollbar\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[Legend]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar LegendDataItem = /** @class */function (_super) {\n __extends(LegendDataItem, _super);\n /**\r\n * Constructor\r\n */\n function LegendDataItem() {\n var _this = _super.call(this) || this;\n /**\r\n * @ignore\r\n */\n _this.childrenCreated = false;\n _this.className = \"LegendDataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(LegendDataItem.prototype, \"label\", {\n /**\r\n * A legend item's [[Label]] element.\r\n *\r\n * @return Label\r\n */\n get: function () {\n var _this = this;\n if (!this._label) {\n var label_1 = this.component.labels.create();\n this._label = label_1;\n this.addSprite(label_1);\n this._disposers.push(label_1);\n label_1.parent = this.itemContainer;\n this._disposers.push(new Disposer(function () {\n if ($type.hasValue(_this.component)) {\n _this.component.labels.removeValue(label_1);\n }\n }));\n }\n return this._label;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LegendDataItem.prototype, \"color\", {\n /**\r\n * @return Main color\r\n */\n get: function () {\n return this.properties.color;\n },\n /**\r\n * Main color of legend data item.\r\n *\r\n * This is set by the target element this legend item represents, like\r\n * a Series or a Slice.\r\n *\r\n * It can be used to derive a color in legend's sub-items, like label:\r\n *\r\n * ```TypeScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JavaScript\r\n * chart.legend.labels.template.text = \"[{color}]{name}[/]\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"legend\": {\r\n * // ...\r\n * \"labels\": {\r\n * \"text\": \"[{color}]{name}[/]\"\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/#Legend_labels} For more information about configuring legend labels.\r\n * @param value Main color\r\n */\n set: function (value) {\n this.setProperty(\"color\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LegendDataItem.prototype, \"valueLabel\", {\n /**\r\n * A legend item's [[Label]] element for \"value label\".\r\n *\r\n * @return Label\r\n */\n get: function () {\n var _this = this;\n if (!this._valueLabel) {\n var valueLabel_1 = this.component.valueLabels.create();\n this._valueLabel = valueLabel_1;\n this.addSprite(valueLabel_1);\n this._disposers.push(valueLabel_1);\n valueLabel_1.parent = this.itemContainer;\n this._disposers.push(new Disposer(function () {\n if ($type.hasValue(_this.component)) {\n _this.component.valueLabels.removeValue(valueLabel_1);\n }\n }));\n }\n return this._valueLabel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LegendDataItem.prototype, \"itemContainer\", {\n /**\r\n * A reference to the main [[Container]] that holds legend item's elements:\r\n * marker and labels.\r\n *\r\n * @return Item container\r\n */\n get: function () {\n var _this = this;\n if (!this._itemContainer) {\n var component_1 = this.component;\n var itemContainer_1 = component_1.itemContainers.create();\n itemContainer_1.parent = component_1;\n this._itemContainer = itemContainer_1;\n this.addSprite(itemContainer_1);\n this._disposers.push(itemContainer_1);\n // Add click/tap event to toggle item\n if (itemContainer_1.togglable) {\n itemContainer_1.events.on(\"toggled\", function (ev) {\n component_1.toggleDataItem(ev.target.dataItem);\n }, undefined, false);\n }\n // Add focus event so that we can track which object is currently in focus\n // for keyboard toggling\n if (itemContainer_1.focusable) {\n itemContainer_1.events.on(\"hit\", function (ev) {\n // We need this here in order to reset focused item when it is clicked\n // normally so that it is not toggled by ENTER afterwards\n component_1.focusedItem = undefined;\n }, undefined, false);\n itemContainer_1.events.on(\"focus\", function (ev) {\n component_1.focusedItem = ev.target.dataItem;\n }, undefined, false);\n itemContainer_1.events.on(\"blur\", function (ev) {\n component_1.focusedItem = undefined;\n }, undefined, false);\n }\n this._disposers.push(new Disposer(function () {\n if ($type.hasValue(_this.component)) {\n _this.component.itemContainers.removeValue(itemContainer_1);\n }\n }));\n if (this.dataContext.uidAttr) {\n itemContainer_1.readerControls = this.dataContext.uidAttr();\n itemContainer_1.readerLabelledBy = this.dataContext.uidAttr();\n }\n var sprite = this.dataContext;\n if ((sprite instanceof DataItem || sprite instanceof Sprite) && !sprite.isDisposed()) {\n var visibilitychanged = function (ev) {\n itemContainer_1.readerChecked = ev.visible;\n itemContainer_1.events.disableType(\"toggled\");\n itemContainer_1.isActive = !ev.visible;\n itemContainer_1.events.enableType(\"toggled\");\n };\n sprite.addDisposer(new Disposer(function () {\n if (_this.component) {\n _this.component.dataItems.remove(_this);\n }\n }));\n if (sprite instanceof Sprite) {\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\n itemContainer_1.addDisposer(sprite.events.on(\"hidden\", function (ev) {\n itemContainer_1.readerChecked = false;\n itemContainer_1.events.disableType(\"toggled\");\n itemContainer_1.isActive = true;\n itemContainer_1.events.enableType(\"toggled\");\n }, undefined, false));\n itemContainer_1.addDisposer(sprite.events.on(\"shown\", function (ev) {\n itemContainer_1.readerChecked = true;\n itemContainer_1.events.disableType(\"toggled\");\n itemContainer_1.isActive = false;\n itemContainer_1.events.enableType(\"toggled\");\n }, undefined, false));\n } else {\n itemContainer_1.addDisposer(sprite.events.on(\"visibilitychanged\", visibilitychanged, undefined, false));\n }\n }\n }\n return this._itemContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LegendDataItem.prototype, \"marker\", {\n /**\r\n * A [[Container]] that holds legend item's marker element.\r\n *\r\n * @return Marker\r\n */\n get: function () {\n var _this = this;\n if (!this._marker) {\n var marker_1 = this.component.markers.create();\n this._marker = marker_1;\n marker_1.parent = this.itemContainer;\n this.addSprite(marker_1);\n this._disposers.push(marker_1);\n this._disposers.push(new Disposer(function () {\n if ($type.hasValue(_this.component)) {\n _this.component.markers.removeValue(marker_1);\n }\n }));\n }\n return this._marker;\n },\n enumerable: true,\n configurable: true\n });\n return LegendDataItem;\n}(DataItem);\nexport { LegendDataItem };\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a class that carries legend settings.\r\n *\r\n * A legend might change its settings dynamically. Legend can also be shared\r\n * by several elements, requiring different settings.\r\n *\r\n * Having legend's settings in a separate object is a good way to \"hot swap\"\r\n * a set of settings for the legend.\r\n */\nvar LegendSettings = /** @class */function () {\n function LegendSettings() {\n /**\r\n * Should marker be created for each legend item.\r\n */\n this.createMarker = true;\n }\n return LegendSettings;\n}();\nexport { LegendSettings };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * [[Legend]] class is used to create legend for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/legend/} for Legend documentation\r\n * @see {@link ILegendEvents} for a list of available events\r\n * @see {@link ILegendAdapters} for a list of available Adapters\r\n */\nvar Legend = /** @class */function (_super) {\n __extends(Legend, _super);\n /**\r\n * Constructor\r\n */\n function Legend() {\n var _this = _super.call(this) || this;\n _this.className = \"Legend\";\n // Set defaults\n _this.layout = \"grid\";\n _this.setPropertyValue(\"useDefaultMarker\", false);\n _this.setPropertyValue(\"scrollable\", false);\n _this.setPropertyValue(\"contentAlign\", \"center\");\n // Create a template container and list for legend items\n var itemContainer = new Container();\n itemContainer.applyOnClones = true;\n itemContainer.padding(8, 0, 8, 0);\n itemContainer.margin(0, 10, 0, 10);\n itemContainer.layout = \"horizontal\";\n itemContainer.clickable = true;\n itemContainer.focusable = true;\n itemContainer.role = \"switch\";\n itemContainer.togglable = true;\n itemContainer.cursorOverStyle = MouseCursorStyle.pointer;\n itemContainer.background.fillOpacity = 0; // creates hit area\n // Create container list using item template we just created\n _this.itemContainers = new ListTemplate(itemContainer);\n _this._disposers.push(new ListDisposer(_this.itemContainers));\n _this._disposers.push(_this.itemContainers.template);\n // Set up global keyboard events for toggling elements\n _this._disposers.push(getInteraction().body.events.on(\"keyup\", function (ev) {\n if (keyboard.isKey(ev.event, \"enter\") && _this.focusedItem) {\n var focusedItem = _this.focusedItem;\n var target = focusedItem.itemContainer;\n if (target.togglable) {\n _this.toggleDataItem(focusedItem);\n } else if (target.clickable && target.events.isEnabled(\"hit\")) {\n target.dispatchImmediately(\"hit\", {\n event: ev\n });\n // We need this here because \"hit\" event resets `this.focusedItem`\n // And we need it here\n _this.focusedItem = focusedItem;\n }\n }\n }, _this));\n var interfaceColors = new InterfaceColorSet();\n // Create a template container and list for the a marker\n var marker = new Container();\n marker.width = 23;\n marker.height = 23;\n marker.interactionsEnabled = false;\n marker.applyOnClones = true;\n marker.setStateOnChildren = true;\n marker.background.fillOpacity = 0;\n marker.background.strokeOpacity = 0;\n marker.propertyFields.fill = \"fill\";\n marker.valign = \"middle\";\n var disabledColor = interfaceColors.getFor(\"disabledBackground\");\n marker.events.on(\"childadded\", function (event) {\n var child = event.newValue;\n var activeState = child.states.create(\"active\");\n activeState.properties.stroke = disabledColor;\n activeState.properties.fill = disabledColor;\n });\n _this.markers = new ListTemplate(marker);\n _this._disposers.push(new ListDisposer(_this.markers));\n _this._disposers.push(_this.markers.template);\n // Create a legend background element\n var rectangle = marker.createChild(RoundedRectangle);\n rectangle.width = percent(100);\n rectangle.height = percent(100);\n rectangle.applyOnClones = true;\n rectangle.propertyFields.fill = \"fill\"; //othrwise old edge doesn't like as the same pattern is set both on parent and child https://codepen.io/team/amcharts/pen/72d7a98f3fb811d3118795220ff63182\n rectangle.strokeOpacity = 0;\n // Create a template container and list for item labels\n var label = new Label();\n label.text = \"{name}\";\n label.margin(0, 5, 0, 5);\n label.valign = \"middle\";\n label.applyOnClones = true;\n label.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\n _this.labels = new ListTemplate(label);\n _this._disposers.push(new ListDisposer(_this.labels));\n _this._disposers.push(_this.labels.template);\n label.interactionsEnabled = false;\n label.truncate = true;\n label.fullWords = false;\n // Create a template container and list for item value labels\n var valueLabel = new Label();\n valueLabel.margin(0, 5, 0, 0);\n valueLabel.valign = \"middle\";\n valueLabel.width = 50; // to avoid rearranging legend entries when value changes.\n valueLabel.align = \"right\";\n valueLabel.textAlign = \"end\";\n valueLabel.applyOnClones = true;\n valueLabel.states.create(\"active\").properties.fill = interfaceColors.getFor(\"disabledBackground\");\n valueLabel.interactionsEnabled = false;\n _this.valueLabels = new ListTemplate(valueLabel);\n _this._disposers.push(new ListDisposer(_this.valueLabels));\n _this._disposers.push(_this.valueLabels.template);\n _this.position = \"bottom\"; // don't use setPropertyValue here!\n // Create a state for disabled legend items\n itemContainer.states.create(\"active\");\n itemContainer.setStateOnChildren = true;\n // Apply accessibility settings\n _this.role = \"group\";\n _this.events.on(\"layoutvalidated\", _this.handleScrollbar, _this, false);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n Legend.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Legend\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n Legend.prototype.createDataItem = function () {\n return new LegendDataItem();\n };\n /**\r\n * [validateDataElements description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Legend.prototype.validateDataElements = function () {\n if (this.scrollbar) {\n this.scrollbar.start = 0;\n this.scrollbar.end = 1;\n }\n _super.prototype.validateDataElements.call(this);\n };\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @todo Description\r\n * @todo Figure out how to update appearance of legend item without losing focus\r\n * @todo Update legend marker appearance as apperance of related series changes\r\n */\n Legend.prototype.validateDataElement = function (dataItem) {\n _super.prototype.validateDataElement.call(this, dataItem);\n // Get data item (legend item's) container\n var container = dataItem.itemContainer;\n var marker = dataItem.marker;\n $utils.used(dataItem.label);\n var valueLabel = dataItem.valueLabel;\n // Set parent and update current state\n container.readerChecked = dataItem.dataContext.visible;\n // Tell series its legend data item\n dataItem.dataContext.legendDataItem = dataItem;\n var tempMaxWidth = dataItem.label.maxWidth;\n if (!(dataItem.label.width instanceof Percent)) {\n dataItem.label.width = undefined;\n }\n if (tempMaxWidth > 0) {\n dataItem.label.maxWidth = tempMaxWidth;\n }\n if (valueLabel.align == \"right\") {\n valueLabel.width = undefined;\n }\n var legendSettings = dataItem.dataContext.legendSettings;\n // If we are not using default markers, create a unique legend marker based\n // on the data item type\n var dataContext = dataItem.dataContext;\n if (dataContext.createLegendMarker && (!this.useDefaultMarker || !(dataContext instanceof Sprite))) {\n if (!dataItem.childrenCreated) {\n dataContext.createLegendMarker(marker);\n dataItem.childrenCreated = true;\n }\n } else {\n this.markers.template.propertyFields.fill = undefined;\n }\n if (dataContext.updateLegendValue) {\n dataContext.updateLegendValue(); // this solves issue with external legend, as legend is created after chart updates legend values\n }\n if (dataContext.component && dataContext.component.updateLegendValue) {\n dataContext.component.updateLegendValue(dataContext);\n }\n if (valueLabel.invalid) {\n valueLabel.validate();\n }\n if (valueLabel.text == \"\" || valueLabel.text == undefined) {\n valueLabel.__disabled = true;\n } else {\n valueLabel.__disabled = false;\n }\n if (legendSettings && (legendSettings.itemValueText != undefined || legendSettings.valueText != undefined)) {\n valueLabel.__disabled = false;\n }\n var visible = dataItem.dataContext.visible;\n if (visible === undefined) {\n visible = true;\n }\n visible = $type.toBoolean(visible);\n dataItem.dataContext.visible = visible;\n container.events.disableType(\"toggled\");\n container.isActive = !visible;\n if (container.isActive) {\n container.setState(\"active\", 0);\n } else {\n container.setState(\"default\", 0);\n }\n container.events.enableType(\"toggled\");\n };\n Legend.prototype.afterDraw = function () {\n var _this = this;\n var maxWidth = this.getPropertyValue(\"maxWidth\");\n var maxLabelWidth = 0;\n this.labels.each(function (label) {\n if (label.invalid) {\n label.maxWidth = undefined;\n label.validate();\n }\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxLabelWidth) {\n maxLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\n }\n });\n var maxValueLabelWidth = 0;\n this.valueLabels.each(function (label) {\n if (label.invalid) {\n label.validate();\n }\n if (label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight > maxValueLabelWidth) {\n maxValueLabelWidth = label.measuredWidth + label.pixelMarginLeft + label.pixelMarginRight;\n }\n });\n var maxMarkerWidth = 0;\n this.markers.each(function (marker) {\n if (marker.invalid) {\n marker.validate();\n }\n if (marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight > maxMarkerWidth) {\n maxMarkerWidth = marker.measuredWidth + marker.pixelMarginLeft + marker.pixelMarginRight;\n }\n });\n var itemContainer = this.itemContainers.template;\n var margin = itemContainer.pixelMarginRight + itemContainer.pixelMarginLeft;\n var maxAdjustedLabelWidth;\n var trueMaxWidth = maxLabelWidth + maxValueLabelWidth + maxMarkerWidth;\n if (!$type.isNumber(maxWidth)) {\n maxAdjustedLabelWidth = maxLabelWidth;\n } else {\n maxWidth = maxWidth - margin;\n if (maxWidth > trueMaxWidth) {\n maxWidth = trueMaxWidth;\n }\n maxAdjustedLabelWidth = maxWidth - maxMarkerWidth - maxValueLabelWidth;\n }\n this.labels.each(function (label) {\n if (_this.valueLabels.template.align == \"right\" || label.measuredWidth > maxAdjustedLabelWidth) {\n if (!(label.width instanceof Percent)) {\n label.width = Math.min(label.maxWidth, maxAdjustedLabelWidth - label.pixelMarginLeft - label.pixelMarginRight);\n label.maxWidth = label.width;\n }\n }\n });\n if (this.valueLabels.template.align == \"right\") {\n this.valueLabels.each(function (valueLabel) {\n valueLabel.width = maxValueLabelWidth - valueLabel.pixelMarginRight - valueLabel.pixelMarginLeft;\n });\n }\n _super.prototype.afterDraw.call(this);\n };\n Legend.prototype.handleScrollbar = function () {\n var scrollbar = this.scrollbar;\n if (this.scrollable && scrollbar) {\n scrollbar.height = this.measuredHeight;\n scrollbar.x = this.measuredWidth - scrollbar.pixelWidth - scrollbar.pixelMarginLeft;\n if (this.contentHeight > this.measuredHeight) {\n scrollbar.visible = true;\n scrollbar.thumb.height = scrollbar.height * this.measuredHeight / this.contentHeight;\n this.paddingRight = scrollbar.pixelWidth + scrollbar.pixelMarginLeft + +scrollbar.pixelMarginRight;\n } else {\n scrollbar.visible = false;\n }\n this.updateMasks();\n }\n };\n Object.defineProperty(Legend.prototype, \"position\", {\n /**\r\n * @return Position\r\n */\n get: function () {\n return this.getPropertyValue(\"position\");\n },\n /**\r\n * Position of the legend.\r\n *\r\n * Options: \"left\", \"right\", \"top\", \"bottom\" (default), or \"absolute\".\r\n *\r\n * IMPORTANT: [[MapChart]] will ignore this setting, as it is using different\r\n * layout structure than other charts.\r\n *\r\n * To position legend in [[MapChart]] set legend's `align` (`\"left\"` or\r\n * `\"right\"`) and `valign` (`\"top\"` or `\"bottom\"`) properties instead.\r\n *\r\n * @default \"bottom\"\r\n * @param value Position\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"position\", value)) {\n if (value == \"left\" || value == \"right\") {\n this.margin(10, 5, 10, 10);\n this.valign = \"middle\";\n this.contentAlign = \"none\";\n this.valueLabels.template.align = \"right\";\n if (!$type.isNumber(this.maxColumns)) {\n this.maxColumns = 1;\n }\n this.width = undefined;\n this.maxWidth = 220;\n } else {\n this.maxColumns = undefined;\n this.width = percent(100);\n this.valueLabels.template.align = \"left\";\n }\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"useDefaultMarker\", {\n /**\r\n * @return Use default marker?\r\n */\n get: function () {\n return this.getPropertyValue(\"useDefaultMarker\");\n },\n /**\r\n * Should legend try to mirror the look of the related item when building\r\n * the marker for legend item?\r\n *\r\n * If set to `false` it will try to make the marker look like its related\r\n * item.\r\n *\r\n * E.g. if an item is for a Line Series, it will display a line of the\r\n * same thickness, color, and will use the same bullets if series have them.\r\n *\r\n * If set to `true`, all markers will be shown as squares, regardless of te\r\n * series type.\r\n *\r\n * @default false\r\n * @param value Use default marker?\r\n */\n set: function (value) {\n this.setPropertyValue(\"useDefaultMarker\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Legend.prototype, \"scrollable\", {\n /**\r\n * @return Legend Scrollable?\r\n */\n get: function () {\n return this.getPropertyValue(\"scrollable\");\n },\n /**\r\n * If set to `true` the Legend will display a scrollbar if its contents do\r\n * not fit into its `maxHeight`.\r\n *\r\n * Please note that `maxHeight` is automatically set for Legend when its\r\n * `position` is set to `\"left\"` or `\"right\"`.\r\n *\r\n * @default false\r\n * @since 4.8.0\r\n * @param value Legend Scrollable?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"scrollable\", value, true)) {\n if (value) {\n var scrollbar = this.createChild(Scrollbar);\n this.scrollbar = scrollbar;\n scrollbar.isMeasured = false;\n scrollbar.orientation = \"vertical\";\n scrollbar.endGrip.__disabled = true;\n scrollbar.startGrip.__disabled = true;\n scrollbar.visible = false;\n scrollbar.marginLeft = 5;\n this._mouseWheelDisposer = this.events.on(\"wheel\", this.handleWheel, this, false);\n this._disposers.push(this._mouseWheelDisposer);\n this._disposers.push(scrollbar.events.on(\"rangechanged\", this.updateMasks, this, false));\n } else {\n if (this._mouseWheelDisposer) {\n this._mouseWheelDisposer.dispose();\n if (this.scrollbar) {\n this.scrollbar.dispose();\n this.scrollbar = undefined;\n }\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles mouse wheel scrolling of legend.\r\n *\r\n * @param event Event\r\n */\n Legend.prototype.handleWheel = function (event) {\n var shift = event.shift.y;\n var scrollbar = this.scrollbar;\n if (scrollbar) {\n var ds = shift / 1000 * this.measuredHeight / this.contentHeight;\n var delta = scrollbar.end - scrollbar.start;\n if (shift > 0) {\n scrollbar.start = $math.max(0, scrollbar.start - ds);\n scrollbar.end = scrollbar.start + delta;\n } else {\n scrollbar.end = $math.min(1, scrollbar.end - ds);\n scrollbar.start = scrollbar.end - delta;\n }\n }\n };\n /**\r\n * @ignore\r\n */\n Legend.prototype.updateMasks = function () {\n var _this = this;\n if (this.scrollbar) {\n this.itemContainers.each(function (itemContainer) {\n itemContainer.dy = -_this.scrollbar.thumb.pixelY * _this.contentHeight / _this.measuredHeight;\n itemContainer.maskRectangle = {\n x: 0,\n y: -itemContainer.dy,\n width: _this.measuredWidth,\n height: _this.measuredHeight\n };\n });\n }\n };\n /**\r\n * Toggles a legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item Legend item\r\n * @todo Maybe do it with togglable instead\r\n */\n Legend.prototype.toggleDataItem = function (item) {\n var dataContext = item.dataContext;\n if (!dataContext.visible || dataContext.isHiding || dataContext instanceof Sprite && dataContext.isHidden) {\n item.color = item.colorOrig;\n dataContext.appeared = true;\n item.itemContainer.isActive = false;\n if (dataContext.hidden === true) {\n dataContext.hidden = false;\n }\n if (dataContext.show) {\n dataContext.show();\n } else {\n dataContext.visible = true;\n }\n this.svgContainer.readerAlert(this.language.translate(\"%1 shown\", this.language.locale, item.label.readerTitle));\n } else {\n item.itemContainer.isActive = true;\n dataContext.appeared = true;\n if (dataContext.hide) {\n dataContext.hide();\n } else {\n dataContext.visible = false;\n }\n this.svgContainer.readerAlert(this.language.translate(\"%1 hidden\", this.language.locale, item.label.readerTitle));\n item.color = new InterfaceColorSet().getFor(\"disabledBackground\");\n }\n };\n Object.defineProperty(Legend.prototype, \"preloader\", {\n /**\r\n * Override preloader method so that legend does not accidentally show its\r\n * own preloader.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Always `undefined`\r\n */\n get: function () {\n return;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [handleDataItemPropertyChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Legend.prototype.handleDataItemPropertyChange = function (dataItem, name) {\n dataItem.valueLabel.invalidate();\n dataItem.label.invalidate();\n };\n return Legend;\n}(Component);\nexport { Legend };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Legend\"] = Legend;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Move legend to below the chart if chart is narrow\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.widthXS,\n state: function (target, stateId) {\n if (target instanceof Legend && (target.position == \"left\" || target.position == \"right\")) {\n var state = target.states.create(stateId);\n state.properties.position = \"bottom\";\n return state;\n }\n return null;\n }\n});\n/**\r\n * Move legend to the right if chart is very short\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXS,\n state: function (target, stateId) {\n if (target instanceof Legend && (target.position == \"top\" || target.position == \"bottom\")) {\n var state = target.states.create(stateId);\n state.properties.position = \"right\";\n return state;\n }\n return null;\n }\n});\n/**\r\n * Disable legend altogether on small charts\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.isXS,\n state: function (target, stateId) {\n if (target instanceof Legend) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Legend.js.map","/**\r\n * Functionality for any series-based elements, like Line Series (graphs),\r\n * Pie slice lists, etc.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Component } from \"../../core/Component\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Dictionary, DictionaryDisposer } from \"../../core/utils/Dictionary\";\nimport { DataItem } from \"../../core/DataItem\";\nimport { Container } from \"../../core/Container\";\nimport { Tooltip } from \"../../core/elements/Tooltip\";\nimport { Bullet } from \"../elements/Bullet\";\nimport { LegendSettings } from \"../Legend\";\nimport { options } from \"../../core/Options\";\nimport { Color } from \"../../core/utils/Color\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $ease from \"../../core/utils/Ease\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $colors from \"../../core/utils/Colors\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[Series]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar SeriesDataItem = /** @class */function (_super) {\n __extends(SeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function SeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"SeriesDataItem\";\n //@todo Should we make `bullets` list disposable?\n //this._disposers.push(new DictionaryDisposer(this.bullets));\n _this.values.value = {};\n _this.values.value = {};\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(SeriesDataItem.prototype, \"bullets\", {\n /**\r\n * A dictionary of data items bullets, where key is uid of a bullet template.\r\n */\n get: function () {\n if (!this._bullets) {\n this._bullets = new Dictionary();\n this._disposers.push(new DictionaryDisposer(this._bullets));\n }\n return this._bullets;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Destroys this object and all related data.\r\n */\n SeriesDataItem.prototype.dispose = function () {\n this.bullets.clear();\n _super.prototype.dispose.call(this);\n };\n Object.defineProperty(SeriesDataItem.prototype, \"value\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.value.value;\n },\n /**\r\n * data items's numeric value.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"value\", value);\n },\n enumerable: true,\n configurable: true\n });\n return SeriesDataItem;\n}(DataItem);\nexport { SeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines base class for any kind of serial data.\r\n *\r\n * @see {@link ISeriesEvents} for a list of available Events\r\n * @see {@link ISeriesAdapters} for a list of available Adapters\r\n * @todo Separate axis-related stuff to some other class so that MapSeries would not have unrelated stuff\r\n */\nvar Series = /** @class */function (_super) {\n __extends(Series, _super);\n /**\r\n * Constructor\r\n */\n function Series() {\n var _this = _super.call(this) || this;\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n */\n _this._ignoreMinMax = false;\n /**\r\n * Should series' bullets?\r\n *\r\n * @default true\r\n */\n _this._showBullets = true;\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\n _this.legendSettings = new LegendSettings();\n /**\r\n * Lowest overal values by type.\r\n */\n _this._tmin = new Dictionary();\n /**\r\n * Highest overal values by type.\r\n */\n _this._tmax = new Dictionary();\n /**\r\n * Lowest values in current selection by type.\r\n */\n _this._smin = new Dictionary();\n /**\r\n * Highest values in current selection by type.\r\n */\n _this._smax = new Dictionary();\n /**\r\n * [dataItemsByAxis description]\r\n *\r\n * Both by category and date.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.dataItemsByAxis = new Dictionary();\n /**\r\n * Normally series items are focusable using keyboard, so that people can\r\n * select them with a TAB key. However, if there are a lot of data points on\r\n * screen it might be long and useless to tab through all o fthem.\r\n *\r\n * This is where `skipFocusThreshold` comes in. If there are more items than\r\n * the value set here, we will not make those focusable and rather let screen\r\n * reader software rely on the series summary, or authors provide alternative\r\n * detailed information display, such as HTML table.\r\n *\r\n * Different series might have different threshold defaults.\r\n */\n _this.skipFocusThreshold = 20;\n /**\r\n * Used to indicate if `itemReaderText` was changed \"from the outside\".\r\n */\n _this._itemReaderTextChanged = false;\n /**\r\n * Most of the series use absolute values. However sometimes various\r\n * calculated percent values are need, e.g. item's percent representation\r\n * across all values in series, etc.\r\n *\r\n * It's a resource-intensive operation, so it is disabled by default.\r\n *\r\n * If you need percents to be calculated, e.g. for showing them in tooltips,\r\n * or creating 100% stacks, this setting needs to be set to `true`.\r\n *\r\n * NOTE: `PieChart`, which relies on slice percentages, has this\r\n * automatically set to `true`.\r\n *\r\n * @default false\r\n */\n _this.calculatePercent = false;\n /**\r\n * When `calculatePercent` is enabled and data item's percent value is\r\n * calculated, last item's real value is used instead of its working value.\r\n *\r\n * This is done for the animations when last item in series (e.g. slice in\r\n * a `PieSeries`) is hidden or shown. (if we would use real value, the\r\n * calculated percent would always be 100%).\r\n *\r\n * Sometimes there is a need (e.g. for drill-down Sunburst) to disable this\r\n * hack by setting `usePercentHack` to `false`.\r\n *\r\n * @since 4.9.13\r\n * @default true\r\n */\n _this.usePercentHack = true;\n /**\r\n * Specifies if series should be automatically disposed when removing from\r\n * chart's `series` list.\r\n *\r\n * @default true\r\n */\n _this.autoDispose = true;\n /**\r\n * When chart/series' data is processed, all kinds of derivative values are\r\n * calculated. E.g. sum, min, max, change, etc. This is a potentially\r\n * time-consuming operation, especially prominent in data-heavy charts.\r\n *\r\n * If your chart does not need those values, and you have a lot of data,\r\n * setting this to `true` might give a dramatic increase in initial chart\r\n * load speed.\r\n *\r\n * Please note, regular column and line series usage scenarios do not\r\n * require derivative values. Those come into play only when you do advanced\r\n * functionality like coloring segments of charts in different colors\r\n * depending on change between open and close values, have stacked series, or\r\n * display any of the derived values, like percent, in tooltips or bullets.\r\n *\r\n * @default false\r\n */\n _this.simplifiedProcessing = false;\n if (_this.constructor === Series) {\n throw new Error(\"'Series' cannot be instantiated directly. Please use a specific series type.\");\n }\n _this.className = \"Series\";\n _this.isMeasured = false;\n _this.layout = \"none\";\n _this.shouldClone = false;\n _this.setPropertyValue(\"hidden\", false);\n _this.axisRanges = new List();\n _this.axisRanges.events.on(\"inserted\", _this.processAxisRange, _this, false);\n _this.minBulletDistance = 0; // otherwise we'll have a lot of cases when people won't see bullets and think it's a bug\n _this.mainContainer = _this.createChild(Container);\n _this.mainContainer.shouldClone = false;\n _this.mainContainer.mask = _this.createChild(Sprite);\n _this._disposers.push(_this.mainContainer);\n // all bullets should go on top of lines/fills. So we add a separate container for bullets and later set it's parent to chart.bulletsContainer\n var bulletsContainer = _this.mainContainer.createChild(Container);\n _this._shouldBeReady.push(bulletsContainer);\n bulletsContainer.shouldClone = false;\n bulletsContainer.layout = \"none\";\n bulletsContainer.virtualParent = _this;\n _this._disposers.push(bulletsContainer);\n _this.bulletsContainer = bulletsContainer;\n _this.tooltip = new Tooltip();\n _this.tooltip.virtualParent = _this;\n _this._disposers.push(_this.tooltip);\n _this.hiddenState.transitionEasing = $ease.cubicIn;\n // this data item holds sums, averages, etc\n _this.dataItem = _this.createDataItem();\n _this._disposers.push(_this.dataItem);\n _this.dataItem.component = _this;\n // Apply accessibility\n _this.role = \"group\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * We need this here so that class names can be applied to bullets container.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.applyTheme = function () {\n _super.prototype.applyTheme.call(this);\n if (options.autoSetClassName && this.bulletsContainer) {\n this.bulletsContainer.className = this.className + \"-bullets\";\n this.bulletsContainer.setClassName();\n }\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n Series.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n Series.prototype.createDataItem = function () {\n return new SeriesDataItem();\n };\n Object.defineProperty(Series.prototype, \"chart\", {\n /**\r\n * @return Chart\r\n */\n get: function () {\n return this._chart;\n },\n /**\r\n * Chart series is used on.\r\n *\r\n * @param value Chart\r\n */\n set: function (value) {\n this._chart = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Positions bullet.\r\n *\r\n * @param bullet Sprite\r\n */\n Series.prototype.positionBullet = function (bullet) {\n // Placeholder method for extending classes to override.\n };\n /**\r\n * Decorates newly created bullet after it has been instert into the list.\r\n *\r\n * @param event List event\r\n * @todo investigate why itemReaderText is undefined\r\n */\n Series.prototype.processBullet = function (event) {\n var _this = this;\n var bullet = event.newValue;\n bullet.isTemplate = true;\n // Add accessibility options to bullet\n // If there are relatively few bullets, make them focusable\n this.events.once(\"datavalidated\", function (ev) {\n if (_this.itemsFocusable()) {\n bullet.focusable = true;\n }\n });\n this.invalidate();\n };\n /**\r\n * removes bullets\r\n *\r\n * @param event List event\r\n */\n Series.prototype.removeBullet = function (event) {\n var bullet = event.oldValue;\n this.dataItems.each(function (dataItem) {\n var eachBullet = dataItem.bullets.getKey(bullet.uid);\n if (eachBullet) {\n eachBullet.dispose();\n }\n });\n this.invalidate();\n };\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.validateDataItems = function () {\n _super.prototype.validateDataItems.call(this);\n this.processValues(false);\n };\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\n Series.prototype.getFirstValue = function (key, startIndex) {\n // find first\n /*\r\n return $iter.findMap(this.dataItems.iterator(), (dataItem) => {\r\n for (let key in dataItem.values) {\r\n if ($object.hasKey(dataItem.values, key)) {\r\n let value: number = dataItem.values[key].workingValue;\r\n if ($type.isNumber(value)) {\r\n return value;\r\n }\r\n }\r\n }\r\n return null;\r\n });*/\n //if (startIndex > 0 && startIndex < this.dataItems.length - 1) {\n //startIndex++;\n //}\n for (var i = startIndex; i >= 0; i--) {\n var dataItem = this.dataItems.getIndex(i);\n var value = dataItem.getActualWorkingValue(key);\n if ($type.isNumber(value)) {\n return value;\n }\n }\n return null;\n };\n /**\r\n * Returns first value for the specific key in the series.\r\n *\r\n * @param key Key\r\n * @return Value\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n */\n Series.prototype.getAbsoluteFirstValue = function (key) {\n for (var i = 0; i < this.dataItems.length; i++) {\n var dataItem = this.dataItems.getIndex(i);\n var value = dataItem.values[key].value;\n if ($type.isNumber(value)) {\n return value;\n }\n }\n return null;\n };\n /**\r\n * [rangeChangeUpdate description]\r\n *\r\n * @todo Description\r\n */\n Series.prototype.rangeChangeUpdate = function () {\n _super.prototype.rangeChangeUpdate.call(this);\n this.processValues(true);\n };\n /**\r\n * [processValues description]\r\n *\r\n * @todo Description\r\n * @todo Convert to propert object property iterator\r\n * @param dataItems [description]\r\n */\n Series.prototype.processValues = function (working) {\n var _this = this;\n if (!this.simplifiedProcessing) {\n var dataItems = this.dataItems;\n var count_1 = {};\n var sum_1 = {};\n var absoluteSum_1 = {};\n var low_1 = {};\n var high_1 = {};\n var open_1 = {};\n var close_1 = {};\n var previous_1 = {};\n var first_1 = {};\n var absoluteFirst_1 = {};\n //let duration: number = 0; // todo: check if series uses selection.change or selection.change.percent and set duration to interpolationduration\n var startIndex_1 = $math.max(0, this.startIndex);\n startIndex_1 = $math.min(startIndex_1, this.dataItems.length);\n var endIndex = $math.min(this.endIndex, this.dataItems.length);\n if (!$type.isNumber(startIndex_1)) {\n startIndex_1 = 0;\n }\n if (!$type.isNumber(endIndex)) {\n endIndex = this.dataItems.length;\n }\n if (startIndex_1 > 0) {\n var dataItem_1 = dataItems.getIndex(startIndex_1 - 1);\n $object.each(dataItem_1.values, function (key, values) {\n var value = dataItem_1.getActualWorkingValue(key);\n if ($type.isNumber(value)) {\n // save previous\n previous_1[key] = value;\n }\n });\n }\n var _loop_1 = function (i) {\n var dataItem_2 = dataItems.getIndex(i);\n $object.each(dataItem_2.values, function (key, values) {\n var value = dataItem_2.getActualWorkingValue(key);\n //if (i >= startIndex && i <= endIndex) { // do not add to count, sum etc if it is not within start/end index\n if ($type.isNumber(value)) {\n // count values\n if (!$type.isNumber(count_1[key])) {\n count_1[key] = 0;\n }\n count_1[key]++;\n // sum values\n if (!$type.isNumber(sum_1[key])) {\n sum_1[key] = 0;\n }\n sum_1[key] += value;\n // absolute sum values\n if (!$type.isNumber(absoluteSum_1[key])) {\n absoluteSum_1[key] = 0;\n }\n absoluteSum_1[key] += Math.abs(value);\n // open\n if (!$type.isNumber(open_1[key])) {\n open_1[key] = value;\n }\n // close\n close_1[key] = value;\n // low\n if (!$type.isNumber(low_1[key])) {\n low_1[key] = value;\n } else {\n if (low_1[key] > value) {\n low_1[key] = value;\n }\n }\n // high\n if (!$type.isNumber(high_1[key])) {\n high_1[key] = value;\n } else {\n if (high_1[key] < value) {\n high_1[key] = value;\n }\n }\n if (!$type.isNumber(first_1[key])) {\n first_1[key] = _this.getFirstValue(key, startIndex_1);\n }\n if (!$type.isNumber(absoluteFirst_1[key])) {\n absoluteFirst_1[key] = _this.getAbsoluteFirstValue(key);\n }\n // change\n dataItem_2.setCalculatedValue(key, value - first_1[key], \"change\");\n // change from start percent\n // will fail if first value is 0\n dataItem_2.setCalculatedValue(key, (value - first_1[key]) / first_1[key] * 100, \"changePercent\");\n dataItem_2.setCalculatedValue(key, value - absoluteFirst_1[key], \"startChange\");\n dataItem_2.setCalculatedValue(key, (value - absoluteFirst_1[key]) / absoluteFirst_1[key] * 100, \"startChangePercent\");\n // previous change\n var prevValue = previous_1[key];\n if (!$type.isNumber(prevValue)) {\n prevValue = value;\n }\n dataItem_2.setCalculatedValue(key, value - prevValue, \"previousChange\");\n // previous change percent\n dataItem_2.setCalculatedValue(key, (value - prevValue) / prevValue * 100, \"previousChangePercent\");\n // save previous\n previous_1[key] = value;\n }\n });\n };\n for (var i = startIndex_1; i < endIndex; i++) {\n _loop_1(i);\n }\n if (this.calculatePercent) {\n var _loop_2 = function (i) {\n var dataItem_3 = dataItems.getIndex(i);\n $object.each(dataItem_3.values, function (key) {\n var ksum = absoluteSum_1[key];\n var value = dataItem_3.getActualWorkingValue(key);\n if ($type.isNumber(value)) {\n if (ksum > 0) {\n if (_this.usePercentHack) {\n // this hack is made in order to make it possible to animate single slice to 0\n // if there is only one slice left, percent value is always 100%, so it won't animate\n // so we use real value of a slice instead of current value\n if (value == ksum) {\n ksum = dataItem_3.values[key].value;\n }\n }\n var percent = value / ksum * 100;\n dataItem_3.setCalculatedValue(key, percent, \"percent\");\n } else {\n dataItem_3.setCalculatedValue(key, 0, \"percent\");\n }\n }\n });\n };\n for (var i = startIndex_1; i < endIndex; i++) {\n _loop_2(i);\n }\n }\n // calculate one before first (cant do that in cycle, as we don't know open yet\n // when drawing line chart we should draw line to the invisible data point to the left, otherwise the line will always look like it starts from the selected point\n // so we do startIndex - 1\n if (startIndex_1 > 0) {\n var zeroItem_1 = dataItems.getIndex(startIndex_1 - 1);\n $object.each(zeroItem_1.values, function (key) {\n var value = zeroItem_1.values[key].value;\n // change\n zeroItem_1.setCalculatedValue(key, value - open_1[key], \"change\");\n // change percent\n zeroItem_1.setCalculatedValue(key, (value - open_1[key]) / open_1[key] * 100, \"changePercent\");\n });\n }\n // we save various data like sum, average to dataPoint of the series\n var dataItem_4 = this.dataItem;\n $object.each(dataItem_4.values, function (key) {\n dataItem_4.setCalculatedValue(key, sum_1[key], \"sum\");\n dataItem_4.setCalculatedValue(key, absoluteSum_1[key], \"absoluteSum\");\n dataItem_4.setCalculatedValue(key, sum_1[key] / count_1[key], \"average\");\n dataItem_4.setCalculatedValue(key, open_1[key], \"open\");\n dataItem_4.setCalculatedValue(key, close_1[key], \"close\");\n dataItem_4.setCalculatedValue(key, low_1[key], \"low\");\n dataItem_4.setCalculatedValue(key, high_1[key], \"high\");\n dataItem_4.setCalculatedValue(key, count_1[key], \"count\");\n });\n }\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.validate = function () {\n if ($utils.isIE()) {\n this.filters.clear();\n }\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n //axisRange.contents.disposeChildren(); // not good for columns, as they are reused\n //\t\t\taxisRange.appendChildren();\n axisRange.validate();\n });\n _super.prototype.validate.call(this);\n var bulletsContainer = this.bulletsContainer;\n bulletsContainer.fill = this.fill;\n bulletsContainer.stroke = this.stroke;\n bulletsContainer.x = this.pixelX;\n bulletsContainer.y = this.pixelY;\n if (this.bulletsContainer.children.length > 0) {\n if (this._showBullets) {\n for (var i = 0; i < this.startIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem) {\n dataItem.bullets.each(function (key, bullet) {\n bullet.__disabled = true;\n });\n }\n }\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem) {\n dataItem.bullets.each(function (key, bullet) {\n bullet.__disabled = true;\n });\n }\n }\n } else {\n this.bulletsContainer.children.each(function (bullet) {\n bullet.__disabled = true;\n });\n }\n }\n this.updateTooltipBounds();\n };\n /**\r\n * @ignore\r\n */\n Series.prototype.updateTooltipBounds = function () {\n if (this.topParent) {\n var x = 0;\n var y = 0;\n var w = this.topParent.maxWidth;\n var h = this.topParent.maxHeight;\n var rect = {\n x: x,\n y: y,\n width: w,\n height: h\n };\n this.tooltip.setBounds(rect);\n }\n };\n Series.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\n return true;\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n Series.prototype.validateDataElement = function (dataItem) {\n var _this = this;\n _super.prototype.validateDataElement.call(this, dataItem);\n if (this._showBullets) {\n if (!this.isHidden) {\n this.bulletsContainer.visible = true;\n }\n this.bullets.each(function (bulletTemplate) {\n // always better to use the same, this helps to avoid redrawing\n var bullet = dataItem.bullets.getKey(bulletTemplate.uid);\n if (_this.shouldCreateBullet(dataItem, bulletTemplate)) {\n if (!bullet) {\n var disabledField = bulletTemplate.propertyFields.disabled;\n var dataContext = dataItem.dataContext;\n if (disabledField && dataContext && dataContext[disabledField] === false) {\n bulletTemplate.applyOnClones = false;\n bulletTemplate.disabled = false;\n bullet = bulletTemplate.clone();\n bulletTemplate.disabled = true;\n bulletTemplate.applyOnClones = true;\n } else {\n bullet = bulletTemplate.clone();\n }\n bullet.shouldClone = false;\n dataItem.addSprite(bullet);\n if (!_this.visible || _this.isHiding) {\n bullet.hide(0);\n }\n }\n var currentDataItem = bullet.dataItem;\n if (currentDataItem != dataItem) {\n // set to undefined in order not to reuse\n if (currentDataItem) {\n currentDataItem.bullets.setKey(bulletTemplate.uid, undefined);\n }\n var readerText_1 = _this.itemReaderText;\n if (bullet instanceof Bullet) {\n if (!readerText_1) {\n readerText_1 = \"{\" + bullet.xField + \"}: {\" + bullet.yField + \"}\";\n }\n if (bullet.isDynamic) {\n dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\n //dataItem.events.on(\"calculatedvaluechanged\", bullet.deepInvalidate, bullet, false);\n _this.dataItem.events.on(\"workingvaluechanged\", bullet.deepInvalidate, bullet, false);\n }\n bullet.deepInvalidate();\n }\n // Add accessibility to bullet\n if (bullet.focusable) {\n bullet.events.on(\"focus\", function (ev) {\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\n }, undefined, false);\n bullet.events.on(\"blur\", function (ev) {\n bullet.readerTitle = \"\";\n }, undefined, false);\n }\n if (bullet.hoverable) {\n bullet.events.on(\"over\", function (ev) {\n bullet.readerTitle = _this.populateString(readerText_1, bullet.dataItem);\n }, undefined, false);\n bullet.events.on(\"out\", function (ev) {\n bullet.readerTitle = \"\";\n }, undefined, false);\n }\n }\n bullet.parent = _this.bulletsContainer;\n dataItem.bullets.setKey(bulletTemplate.uid, bullet);\n // pass max w/h so we'd know if we should show/hide somethings\n bullet.maxWidth = dataItem.itemWidth;\n bullet.maxHeight = dataItem.itemHeight;\n bullet.__disabled = false;\n _this.positionBullet(bullet);\n } else {\n if (bullet) {\n bullet.__disabled = true;\n }\n }\n });\n } else {\n this.bulletsContainer.visible = false;\n }\n };\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\n if (!this.dataRangeInvalid) {\n this.invalidateProcessedData();\n }\n };\n Object.defineProperty(Series.prototype, \"ignoreMinMax\", {\n /**\r\n * @return Exclude from calculations?\r\n */\n get: function () {\n return this._ignoreMinMax;\n },\n /**\r\n * Should this series excluded from the axis scale calculations?\r\n *\r\n * @default false\r\n * @param value Exclude from calculations?\r\n */\n set: function (value) {\n this._ignoreMinMax = value;\n this.invalidateDataItems();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.createMask = function () {\n // A placeholder method for extending classes to override.\n };\n /**\r\n * Process axis range after it has been added to the list.\r\n *\r\n * @param event Event\r\n */\n Series.prototype.processAxisRange = function (event) {\n // create container if not existing\n if (!this.rangesContainer) {\n this.rangesContainer = this.createChild(Container);\n this.rangesContainer.shouldClone = false;\n this.rangesContainer.isMeasured = false;\n }\n var axisRange = event.newValue;\n if (axisRange) {\n axisRange.contents.parent = this.rangesContainer;\n axisRange.isRange = true;\n axisRange.events.on(\"valuechanged\", this.invalidateDataItems, this, false);\n }\n };\n /**\r\n * [getAxisField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axis [description]\r\n * @return [description]\r\n */\n Series.prototype.getAxisField = function (axis) {\n return;\n };\n /**\r\n * Shows the tooltip at specific position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\n Series.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\n // Placeholder method for extending classes to override.\n };\n Object.defineProperty(Series.prototype, \"minBulletDistance\", {\n /**\r\n * @return Distance (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minBulletDistance\");\n },\n /**\r\n * Minimal distance between data points in pixels.\r\n *\r\n * If distance gets smaller than this, bullets are turned off to avoid\r\n * overlapping.\r\n *\r\n * `0` (zero) disables this behavior.\r\n *\r\n * IMPORTANT: This setting will work only when Series' base axis\r\n * is [[CategoryAxis]] or [[DateAxis]]. If base axis is [[ValueAxis]] the\r\n * setting will be ignored, because it would be a huge overhead to measure\r\n * distance between each and every bullet.\r\n *\r\n * @default 0\r\n * @param value Distance (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"minBulletDistance\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"bullets\", {\n /**\r\n * A list of bullets that will be added to each and every items in the\r\n * series.\r\n *\r\n * You can push any object that is a descendant of a [[Sprite]] here. All\r\n * items added to this list will be copied and used as a bullet on all data\r\n * items, including their properties, events, etc.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/bullets/} for more info about the concept of Bullets\r\n * @return List of bullets.\r\n */\n get: function () {\n if (!this._bullets) {\n this._bullets = new ListTemplate(new Bullet());\n this._bullets.template.virtualParent = this;\n this._bullets.events.on(\"inserted\", this.processBullet, this, false);\n this._bullets.events.on(\"removed\", this.removeBullet, this, false);\n this._disposers.push(new ListDisposer(this._bullets));\n this._disposers.push(this._bullets.template);\n }\n return this._bullets;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n Series.prototype.createLegendMarker = function (marker) {\n // This is a placeholder method for extending classes to override.\n };\n Object.defineProperty(Series.prototype, \"hiddenInLegend\", {\n /**\r\n * @return Hidden in legend?\r\n */\n get: function () {\n return this.getPropertyValue(\"hiddenInLegend\");\n },\n /**\r\n * Should the series be hidden in legend?\r\n *\r\n * @param value Hidden in legend?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"hiddenInLegend\", value)) {\n if (this.chart) {\n this.chart.feedLegend();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"name\", {\n /**\r\n * @return Name\r\n */\n get: function () {\n return this.getPropertyValue(\"name\");\n },\n /**\r\n * Series' name.\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setPropertyValue(\"name\", value);\n var legendDataItem = this.legendDataItem;\n if (legendDataItem) {\n legendDataItem.component.invalidate();\n legendDataItem.component.invalidateRawData();\n }\n this.readerTitle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"itemReaderText\", {\n /**\r\n * @return Screen reader text template\r\n */\n get: function () {\n // Get explicitly set reader text\n var readerText = this._itemReaderText;\n // Not set? Let's try something else\n if (!readerText) {\n // Tooltip text?\n if (this.tooltipText) {\n readerText = $utils.plainText(this.tooltipText);\n } else if (this.tooltipHTML) {\n readerText = $utils.plainText(this.tooltipHTML);\n }\n }\n if (!this._adapterO) {\n return readerText;\n } else {\n return this._adapterO.apply(\"itemReaderText\", readerText);\n }\n },\n /**\r\n * Screen reader text to be applied to each individual data item, such\r\n * as bullets, columns or slices.\r\n *\r\n * The template can contain field reference meta codes, i.e. `{dateX}`,\r\n * `{valueY}`, etc.\r\n *\r\n * Any text formatting options, e.g. `[bold]` will be ignored.\r\n *\r\n * @param value Screen reader text template\r\n */\n set: function (value) {\n this._itemReaderText = value;\n this._itemReaderTextChanged = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns if number of data items in the series are beyond non-focusable\r\n * count and should not be available for TAB-through.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Items focusable?\r\n */\n Series.prototype.itemsFocusable = function () {\n return this.dataItems.length >= this.skipFocusThreshold ? false : true;\n };\n Object.defineProperty(Series.prototype, \"legendDataItem\", {\n /**\r\n * @return Data item\r\n */\n get: function () {\n return this._legendDataItem;\n },\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\n set: function (value) {\n this._legendDataItem = value;\n this._legendDataItem.itemContainer.deepInvalidate();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n Series.prototype.updateLegendValue = function (dataItem, notRange) {\n // if this series has legend item\n if (this.legendDataItem) {\n var legendSettings = this.legendSettings;\n var legendDataItem = this.legendDataItem;\n var label = legendDataItem.label;\n var valueLabel = legendDataItem.valueLabel;\n // update legend\n if (dataItem && !dataItem.isDisposed() || notRange) {\n if (valueLabel) {\n if (legendSettings.itemValueText) {\n valueLabel.text = legendSettings.itemValueText;\n }\n valueLabel.dataItem = dataItem;\n }\n if (label) {\n if (legendSettings.itemLabelText) {\n label.text = legendSettings.itemLabelText;\n }\n label.dataItem = dataItem;\n }\n } else {\n if (label) {\n // if itemLabelText is set, means we have to reset label even if labelText is not set\n if (legendSettings.labelText || legendSettings.itemLabelText != undefined) {\n label.text = legendSettings.labelText;\n }\n label.dataItem = this.dataItem;\n }\n if (valueLabel) {\n if (legendSettings.valueText || legendSettings.itemValueText != undefined) {\n valueLabel.text = legendSettings.valueText;\n }\n valueLabel.dataItem = this.dataItem;\n }\n }\n }\n };\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\n Series.prototype.copyFrom = function (source) {\n this.bullets.copyFrom(source.bullets);\n this.bulletsContainer.copyFrom(source.bulletsContainer);\n this.calculatePercent = source.calculatePercent;\n this.usePercentHack = source.usePercentHack;\n this.simplifiedProcessing = source.simplifiedProcessing;\n _super.prototype.copyFrom.call(this, source);\n };\n /**\r\n * Displays a modal or console message with error, and halts any further\r\n * processing of this element.\r\n *\r\n * @param e Error\r\n */\n Series.prototype.raiseCriticalError = function (e) {\n if (this._chart && this._chart.modal) {\n this._chart.modal.content = this._chart.adapter.apply(\"criticalError\", e).message;\n this._chart.modal.closable = false;\n if (!options.suppressErrors) {\n this._chart.modal.open();\n }\n this._chart.disabled = true;\n }\n if (options.verbose) {\n console.log(e);\n }\n };\n /**\r\n * Applies filters to the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Series.prototype.applyFilters = function () {\n var _this = this;\n _super.prototype.applyFilters.call(this);\n this.bulletsContainer.filters.clear();\n // copyFrom of a list copies, does not clone\n $iter.each(this.filters.iterator(), function (filter) {\n _this.bulletsContainer.filters.push(filter.clone());\n });\n };\n Object.defineProperty(Series.prototype, \"heatRules\", {\n /**\r\n * A list of heat rules to apply to series' elements based on the value\r\n * of the data item.\r\n *\r\n * Heat rules can be any \"numeric\" (including `Color`) property, and can also\r\n * be applied to child objects of series, like columns, bullets, etc.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n * ```Javacript\r\n * series.heatRules.push({\r\n * \"target\": series.columns.template,\r\n * \"property\": \"fill\",\r\n * \"min\": am4core.color(\"#F5DBCB\"),\r\n * \"max\": am4core.color(\"#ED7B84\"),\r\n * \"dataField\": \"valueY\"\r\n *});\r\n *```\r\n *```JSON\r\n *{\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"ColumnSeries\",\r\n * \"heatRules\": [{\r\n * \"target\": \"columns.template\",\r\n * \"property\": \"fill\",\r\n * \"min\": \"#F5DBCB\",\r\n * \"max\": \"#ED7B84\",\r\n * \"dataField\": \"valueY\"\r\n * }]\r\n * }]\r\n *}\r\n *```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/series/#Heat_maps} for more about heat rules\r\n * @return Heat rules\r\n */\n get: function () {\n var _this = this;\n if (!this._heatRules) {\n this._heatRules = new List();\n this._heatRules.events.on(\"inserted\", function (event) {\n var heatRule = event.newValue;\n var target = heatRule.target;\n if (target) {\n var dataField_1 = heatRule.dataField;\n if (!$type.hasValue(dataField_1)) {\n dataField_1 = \"value\";\n }\n var seriesDataItem_1 = _this.dataItem;\n var property_1 = heatRule.property;\n var minValue = $type.toNumber(heatRule.minValue);\n var maxValue = $type.toNumber(heatRule.maxValue);\n if (!$type.isNumber(minValue) && !$type.isNumber(maxValue)) {\n _this.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\n if (event.property == dataField_1) {\n $iter.each(_this.dataItems.iterator(), function (dataItem) {\n var foundSprite = false;\n $array.each(dataItem.sprites, function (sprite) {\n if (sprite.clonedFrom == target) {\n var anySprite = sprite;\n anySprite[property_1] = anySprite[property_1];\n foundSprite = true;\n }\n });\n if (!foundSprite) {\n $array.each(dataItem.sprites, function (sprite) {\n if (sprite instanceof Container) {\n $iter.each(sprite.children.iterator(), function (child) {\n if (child.className == target.className) {\n var anyChild = child;\n anyChild[property_1] = anyChild[property_1];\n }\n // giveup here\n else if (child instanceof Container) {\n child.deepInvalidate();\n }\n });\n }\n });\n }\n });\n }\n });\n }\n _this.dataItems.template.events.on(\"workingvaluechanged\", function (event) {\n if (event.property == dataField_1) {\n var dataItem = event.target;\n var foundSprite_1 = false;\n $array.each(dataItem.sprites, function (sprite) {\n if (sprite.clonedFrom == target) {\n var anySprite = sprite;\n anySprite[property_1] = anySprite[property_1];\n foundSprite_1 = true;\n }\n });\n if (!foundSprite_1) {\n $array.each(dataItem.sprites, function (sprite) {\n if (sprite instanceof Container) {\n $iter.each(sprite.children.iterator(), function (child) {\n if (child.className == target.className) {\n var anyChild = child;\n anyChild[property_1] = anyChild[property_1];\n }\n // givup here\n else if (child instanceof Container) {\n child.deepInvalidate();\n }\n });\n }\n });\n }\n }\n });\n target.adapter.add(property_1, function (value, ruleTarget, property) {\n var minValue = $type.toNumber(heatRule.minValue);\n var maxValue = $type.toNumber(heatRule.maxValue);\n var min = heatRule.min;\n var max = heatRule.max;\n if (ruleTarget instanceof Sprite) {\n var anySprite = ruleTarget;\n var propertyField = anySprite.propertyFields[property];\n if (propertyField && ruleTarget.dataItem) {\n var dataContext = ruleTarget.dataItem.dataContext;\n if (dataContext && $type.hasValue(dataContext[propertyField])) {\n return value;\n }\n }\n }\n var dataItem = ruleTarget.dataItem;\n if (!$type.isNumber(minValue)) {\n minValue = seriesDataItem_1.values[dataField_1].low;\n }\n if (!$type.isNumber(maxValue)) {\n maxValue = seriesDataItem_1.values[dataField_1].high;\n }\n if (dataItem) {\n var fieldValues = dataItem.values[dataField_1];\n if (fieldValues) {\n var workingValue = dataItem.getActualWorkingValue(dataField_1);\n if ($type.hasValue(min) && $type.hasValue(max) && $type.isNumber(minValue) && $type.isNumber(maxValue) && $type.isNumber(workingValue)) {\n var percent = void 0;\n if (heatRule.logarithmic) {\n percent = (Math.log(workingValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / (Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E);\n } else {\n percent = (workingValue - minValue) / (maxValue - minValue);\n }\n if ($type.isNumber(workingValue) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\n percent = 0.5;\n }\n // fixes problems if all values are the same\n if ($type.isNumber(min)) {\n return min + (max - min) * percent;\n } else if (min instanceof Color) {\n return new Color($colors.interpolate(min.rgb, max.rgb, percent));\n }\n }\n }\n }\n return value;\n });\n }\n });\n }\n return this._heatRules;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Series.prototype.processConfig = function (config) {\n var heatRules;\n if (config) {\n // Set up bullets\n if ($type.hasValue(config.bullets) && $type.isArray(config.bullets)) {\n for (var i = 0, len = config.bullets.length; i < len; i++) {\n var bullets = config.bullets[i];\n if (!$type.hasValue(bullets.type)) {\n bullets.type = \"Bullet\";\n }\n }\n }\n // Let's take heatRules out of the config, so that we can process\n // them later, when bullets are already there\n if ($type.hasValue(config.heatRules) && $type.isArray(config.heatRules)) {\n heatRules = config.heatRules;\n delete config.heatRules;\n }\n }\n _super.prototype.processConfig.call(this, config);\n // Process heat rules again, when all other elements are ready\n if (heatRules) {\n for (var i = 0, len = heatRules.length; i < len; i++) {\n var rule = heatRules[i];\n // Resolve target\n var target = this;\n if ($type.hasValue(rule.target) && $type.isString(rule.target)) {\n // Check if we can find this element by id\n if (this.map.hasKey(rule.target)) {\n target = this.map.getKey(rule.target);\n } else {\n var parts = rule.target.split(\".\");\n for (var x = 0; x < parts.length; x++) {\n if (target instanceof List) {\n var listitem = target.getIndex($type.toNumber(parts[x]));\n if (!listitem) {\n target = target[parts[x]];\n } else {\n target = listitem;\n }\n } else {\n var maybeIndex = parts[x].match(/^(.*)\\[([0-9]+)\\]/);\n if (maybeIndex) {\n if (target[maybeIndex[1]] instanceof List) {\n target = target[maybeIndex[1]].getIndex($type.toNumber(maybeIndex[2]));\n } else {\n target = target[maybeIndex[1]][$type.toNumber(maybeIndex[2])];\n }\n } else {\n target = target[parts[x]];\n }\n }\n }\n }\n }\n rule.target = target;\n // Resolve colors and percents\n if ($type.hasValue(rule.min)) {\n rule.min = this.maybeColorOrPercent(rule.min);\n }\n if ($type.hasValue(rule.max)) {\n rule.max = this.maybeColorOrPercent(rule.max);\n }\n }\n _super.prototype.processConfig.call(this, {\n heatRules: heatRules\n });\n }\n };\n /**\r\n * Returns visibility value\r\n * @ignore\r\n */\n /*\r\n protected getVisibility(): boolean {\r\n let hidden = this.getPropertyValue(\"hidden\");\r\n if (hidden) {\r\n return false;\r\n }\r\n else {\r\n return super.getVisibility();\r\n }\r\n }*/\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\n Series.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // Must come last\n else if (a == \"heatRules\") {\n return 1;\n } else if (b == \"heatRules\") {\n return -1;\n } else {\n return _super.prototype.configOrder.call(this, a, b);\n }\n };\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\n Series.prototype.setVisibility = function (value) {\n _super.prototype.setVisibility.call(this, value);\n this.bulletsContainer.visible = value;\n };\n return Series;\n}(Component);\nexport { Series };\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Series\"] = Series;\nregistry.registeredClasses[\"SeriesDataItem\"] = SeriesDataItem;\n//# sourceMappingURL=Series.js.map","/**\r\n * Serial chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Chart, ChartDataItem } from \"../Chart\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Container } from \"../../core/Container\";\nimport { Series } from \"../series/Series\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { ColorSet } from \"../../core/utils/ColorSet\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\nimport { Disposer } from \"../../core/utils/Disposer\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[SerialChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar SerialChartDataItem = /** @class */function (_super) {\n __extends(SerialChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function SerialChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"SerialChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return SerialChartDataItem;\n}(ChartDataItem);\nexport { SerialChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for all series-based charts, like XY, Pie, etc.\r\n *\r\n * Is not useful on its own.\r\n *\r\n * @see {@link ISerialChartEvents} for a list of available Events\r\n * @see {@link ISerialChartAdapters} for a list of available Adapters\r\n */\nvar SerialChart = /** @class */function (_super) {\n __extends(SerialChart, _super);\n /**\r\n * Constructor\r\n */\n function SerialChart() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"SerialChart\";\n _this.colors = new ColorSet();\n _this._usesData = false;\n // Create a container for series\n var seriesContainer = _this.chartContainer.createChild(Container);\n seriesContainer.shouldClone = false;\n seriesContainer.width = percent(100);\n seriesContainer.height = percent(100);\n seriesContainer.isMeasured = false;\n seriesContainer.layout = \"none\";\n seriesContainer.zIndex = 2;\n _this.seriesContainer = seriesContainer;\n // Create a container for bullets\n var bulletsContainer = _this.chartContainer.createChild(Container);\n bulletsContainer.shouldClone = false;\n bulletsContainer.width = percent(100);\n bulletsContainer.height = percent(100);\n bulletsContainer.isMeasured = false;\n bulletsContainer.zIndex = 3;\n bulletsContainer.layout = \"none\";\n _this.bulletsContainer = bulletsContainer;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n SerialChart.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n if (this.colors) {\n this.colors.dispose();\n }\n if (this.patterns) {\n this.patterns.dispose();\n }\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor\r\n */\n SerialChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Serial chart\");\n }\n };\n Object.defineProperty(SerialChart.prototype, \"series\", {\n /**\r\n * A list of chart's series.\r\n *\r\n * @return Chart's series\r\n */\n get: function () {\n if (!this._series) {\n this._series = new ListTemplate(this.createSeries());\n this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false);\n this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false);\n this._disposers.push(new ListDisposer(this._series, false));\n this._disposers.push(this._series.template);\n }\n return this._series;\n },\n enumerable: true,\n configurable: true\n });\n SerialChart.prototype.handleSeriesRemoved = function (event) {\n var series = event.oldValue;\n this.dataUsers.removeValue(series);\n this.dataUsers.each(function (dataUser) {\n dataUser.invalidateDataItems();\n });\n if (series.autoDispose) {\n series.dispose();\n } else {\n series.parent = undefined;\n series.bulletsContainer.parent = undefined;\n }\n //this.feedLegend();\n var legend = this.legend;\n if (legend) {\n var dataItems = this.legend.dataItems;\n for (var i = dataItems.length - 1; i >= 0; i--) {\n var dataItem = dataItems.getIndex(i);\n if (dataItem && dataItem.dataContext == series) {\n legend.dataItems.remove(dataItem);\n }\n }\n for (var i = legend.data.length - 1; i >= 0; i--) {\n var di = legend.data[i];\n if (di && di == series) {\n $array.remove(legend.data, di);\n }\n }\n }\n };\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n SerialChart.prototype.handleSeriesAdded = function (event) {\n var _this = this;\n var series = event.newValue;\n if (series.isDisposed()) {\n return;\n }\n series.chart = this;\n series.parent = this.seriesContainer;\n series.bulletsContainer.parent = this.bulletsContainer;\n this._dataUsers.moveValue(series);\n series.addDisposer(new Disposer(function () {\n _this.dataUsers.removeValue(series);\n }));\n this.handleSeriesAdded2(series);\n this.handleLegendSeriesAdded(series);\n };\n SerialChart.prototype.handleLegendSeriesAdded = function (series) {\n if (!series.hiddenInLegend) {\n if (this.legend) {\n this.legend.addData(series);\n }\n }\n };\n SerialChart.prototype.handleSeriesAdded2 = function (series) {\n var _this = this;\n if (!this.dataInvalid) {\n this._disposers.push(\n // on exit only as data is usually passed after push\n registry.events.once(\"exitframe\", function () {\n if (!series.data || series.data.length == 0) {\n series.data = _this.data;\n if (series.showOnInit) {\n series.reinit();\n series.setPropertyValue(\"showOnInit\", false);\n series.showOnInit = true;\n }\n if (!series.isDisposed()) {\n series.events.once(\"datavalidated\", function () {\n if (series.data == _this.data) {\n series._data = [];\n }\n });\n }\n }\n }));\n }\n };\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\n SerialChart.prototype.feedLegend = function () {\n var legend = this.legend;\n if (legend) {\n var legendData_1 = [];\n $iter.each(this.series.iterator(), function (series) {\n if (!series.hiddenInLegend) {\n legendData_1.push(series);\n }\n });\n legend.dataFields.name = \"name\";\n legend.data = legendData_1;\n }\n };\n /**\r\n * Creates and returns a new Series, suitable for this chart type.\r\n *\r\n * @return New series\r\n */\n SerialChart.prototype.createSeries = function () {\n return new Series();\n };\n Object.defineProperty(SerialChart.prototype, \"colors\", {\n /**\r\n * @return Color list\r\n */\n get: function () {\n return this.getPropertyValue(\"colors\");\n },\n /**\r\n * Chart's color list.\r\n *\r\n * This list can be used by a number of serial items, like applying a new\r\n * color for each Series added. Or, applying a new color for each slice\r\n * of a Pie chart.\r\n *\r\n * Please see [[ColorSet]] for information on how you can set up to generate\r\n * unique colors.\r\n *\r\n * A theme you are using may override default pre-defined colors.\r\n *\r\n * @param value Color list\r\n */\n set: function (value) {\n this.setPropertyValue(\"colors\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SerialChart.prototype, \"patterns\", {\n /**\r\n * @return Pattern set\r\n */\n get: function () {\n return this.getPropertyValue(\"patterns\");\n },\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\n set: function (value) {\n this.setPropertyValue(\"patterns\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all parameters from another [[SerialChart]].\r\n *\r\n * @param source Source SerialChart\r\n */\n SerialChart.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.series.copyFrom(source.series);\n };\n /**\r\n * Hides the chart instantly and then shows it. If defaultState.transitionDuration > 0, this will result an animation in which properties of hidden state will animate to properties of visible state.\r\n */\n SerialChart.prototype.appear = function () {\n _super.prototype.appear.call(this);\n this.series.each(function (series) {\n if (series.showOnInit && series.inited) {\n series.appear();\n }\n });\n };\n return SerialChart;\n}(Chart);\nexport { SerialChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SerialChart\"] = SerialChart;\n//# sourceMappingURL=SerialChart.js.map","/**\r\n * Axis break module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { WavedLine } from \"../../core/elements/WavedLine\";\nimport { List } from \"../../core/utils/List\";\nimport { registry } from \"../../core/Registry\";\nimport { color } from \"../../core/utils/Color\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base class to define \"breaks\" on axes.\r\n *\r\n * @see {@link IAxisBreakEvents} for a list of available events\r\n * @see {@link IAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar AxisBreak = /** @class */function (_super) {\n __extends(AxisBreak, _super);\n /**\r\n * Constructor\r\n */\n function AxisBreak() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Reference to parent Axis.\r\n */\n _this._axis = new MutableValueDisposer();\n /**\r\n * A list of axis data items which fall within this break.\r\n */\n _this.dataItems = new List();\n _this.className = \"AxisBreak\";\n // Set defaults\n _this.breakSize = 0.01;\n _this.marginLeft = -5;\n _this.marginRight = -5;\n _this.marginTop = -5;\n _this.marginBottom = -5;\n var interfaceColors = new InterfaceColorSet();\n // Create elements\n // (these won't be used actually, just for setting properties)\n var fillShape = new WavedLine();\n fillShape.fill = interfaceColors.getFor(\"background\");\n fillShape.stroke = color();\n fillShape.fillOpacity = 0.9;\n fillShape.zIndex = 0;\n _this._fillShape = fillShape;\n var startLine = new WavedLine();\n startLine.fill = color();\n startLine.stroke = interfaceColors.getFor(\"grid\");\n startLine.strokeOpacity = 0.3;\n startLine.zIndex = 1;\n _this._startLine = startLine;\n var endLine = new WavedLine();\n endLine.fill = color();\n endLine.stroke = color(\"#000000\"); // interfaceColors.getFor(\"grid\");\n endLine.strokeOpacity = 0.3;\n endLine.zIndex = 2;\n _this._endLine = endLine;\n _this._disposers.push(_this._axis);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n AxisBreak.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n if (this._fillShape) {\n this._fillShape.dispose();\n }\n if (this._startLine) {\n this._startLine.dispose();\n }\n if (this._endLine) {\n this._endLine.dispose();\n }\n };\n Object.defineProperty(AxisBreak.prototype, \"startLine\", {\n /**\r\n * @return Element\r\n */\n get: function () {\n return this._startLine;\n },\n /**\r\n * An element used for the starting line of the break.\r\n *\r\n * @param sprite Element\r\n */\n set: function (sprite) {\n if (this._startLine) {\n this._startLine.dispose();\n }\n this._startLine = sprite;\n this.addBreakSprite(sprite);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"endLine\", {\n /**\r\n * @return Element\r\n */\n get: function () {\n return this._endLine;\n },\n /**\r\n * An element used for the end line of the break.\r\n *\r\n * @param sprite Element\r\n */\n set: function (sprite) {\n if (this._endLine) {\n this._endLine.dispose();\n }\n this._endLine = sprite;\n this.addBreakSprite(sprite);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"fillShape\", {\n /**\r\n * @return Element\r\n */\n get: function () {\n return this._fillShape;\n },\n /**\r\n * An element used for fill of the break.\r\n *\r\n * @param sprite Element\r\n */\n set: function (sprite) {\n if (this._fillShape) {\n this._fillShape.dispose();\n }\n this._fillShape = sprite;\n this.addBreakSprite(sprite);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adds a break element (e.g. lines, fill) to the break, which is\r\n * [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite Element to add\r\n */\n AxisBreak.prototype.addBreakSprite = function (sprite) {\n sprite.parent = this;\n sprite.isMeasured = false;\n this._disposers.push(sprite);\n };\n Object.defineProperty(AxisBreak.prototype, \"axis\", {\n /**\r\n * @return Axis\r\n */\n get: function () {\n return this._axis.get();\n },\n /**\r\n * An Axis this Break is associated with.\r\n *\r\n * @param axis Axis\r\n */\n set: function (axis) {\n if (this._axis.get() !== axis) {\n this._axis.set(axis, axis.renderer.gridContainer.events.on(\"transformed\", this.invalidate, this, false));\n axis.renderer.createBreakSprites(this);\n // this can't go to copyFrom, as axis is set later\n var breakTemplate = axis.axisBreaks.template;\n this.startLine.copyFrom(breakTemplate.startLine);\n this.endLine.copyFrom(breakTemplate.endLine);\n this.fillShape.copyFrom(breakTemplate.fillShape);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"breakSize\", {\n /**\r\n * @return Relative axis break\r\n */\n get: function () {\n return this.getPropertyValue(\"breakSize\");\n },\n /**\r\n * A size of the break relative to the actual size of the scope break spans.\r\n *\r\n * For example, if `breakSize = 0.1` and unbroken scope of values it spans\r\n * would be 100 pixels, the break would be 10 pixels wide.\r\n *\r\n * 0 means the break will completely collapse and hide the values.\r\n * 1 means break would be not collapse at all, which would make it\r\n * effectively useless.\r\n *\r\n * @default 0.01\r\n * @param value Relative axis break\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"breakSize\", value)) {\n if (this.axis) {\n this.axis.invalidate();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"startPoint\", {\n /**\r\n * Returns pixel coordinates of axis break's start.\r\n *\r\n * @return Start point\r\n */\n get: function () {\n var renderer = this.axis.renderer;\n if (renderer) {\n return renderer.positionToPoint(this.startPosition);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"endPoint\", {\n /**\r\n * Returns pixel coordinates of axis break's end.\r\n *\r\n * @return End point\r\n */\n get: function () {\n var renderer = this.axis.renderer;\n if (renderer) {\n return renderer.positionToPoint(this.endPosition);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"startPosition\", {\n /**\r\n * Returns a relative position at which axis break starts.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return Start position\r\n */\n get: function () {\n return;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"endPosition\", {\n /**\r\n * Returns a relative position at which axis break ends.\r\n *\r\n * This is a calculated position, meaning it shows relative position of the\r\n * break after break is applied.\r\n *\r\n * @return End position\r\n */\n get: function () {\n return;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Draws the axis break.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisBreak.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this.axis) {\n var renderer = this.axis.renderer;\n renderer.updateBreakElement(this);\n }\n };\n Object.defineProperty(AxisBreak.prototype, \"startValue\", {\n /**\r\n * @return Starting value\r\n */\n get: function () {\n return this.getPropertyValue(\"startValue\");\n },\n /**\r\n * A starting value for the break.\r\n *\r\n * @param value Starting value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startValue\", value)) {\n if (this.axis) {\n this.axis.invalidate();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisBreak.prototype, \"endValue\", {\n /**\r\n * @return End value\r\n */\n get: function () {\n return this.getPropertyValue(\"endValue\");\n },\n /**\r\n * An end value for the break.\r\n *\r\n * @param value End value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endValue\", value)) {\n if (this.axis) {\n this.axis.invalidate();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return AxisBreak;\n}(Container);\nexport { AxisBreak };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisBreak\"] = AxisBreak;\n//# sourceMappingURL=AxisBreak.js.map","/**\r\n * Base class for all Axis\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Component } from \"../../core/Component\";\nimport { Container } from \"../../core/Container\";\nimport { DataItem } from \"../../core/DataItem\";\nimport { AxisBreak } from \"./AxisBreak\";\nimport { Label } from \"../../core/elements/Label\";\nimport { Tooltip } from \"../../core/elements/Tooltip\";\nimport { SortedListTemplate } from \"../../core/utils/SortedList\";\nimport { List, ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Disposer, MultiDisposer } from \"../../core/utils/Disposer\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $number from \"../../core/utils/Number\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $type from \"../../core/utils/Type\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[Axis]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar AxisDataItem = /** @class */function (_super) {\n __extends(AxisDataItem, _super);\n /**\r\n * Constructor\r\n */\n function AxisDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisDataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisDataItem.prototype, \"grid\", {\n /**\r\n * @return Grid element\r\n */\n get: function () {\n if (!this._grid) {\n var component_1 = this.component;\n if (component_1) {\n var template = void 0;\n var grid_1;\n if (this.isRange) {\n template = component_1.axisRanges.template.grid;\n if (template.disabled) {\n return;\n } else {\n grid_1 = template.clone();\n }\n } else {\n template = component_1.renderer.grid.template;\n if (template.disabled) {\n return;\n } else {\n grid_1 = component_1.renderer.grid.create();\n this._disposers.push(new Disposer(function () {\n component_1.renderer.grid.removeValue(grid_1);\n }));\n }\n }\n this.grid = grid_1;\n grid_1.shouldClone = false;\n this._disposers.push(grid_1);\n grid_1.axis = this.component;\n }\n }\n return this._grid;\n },\n /**\r\n * A [[Grid]] element associated with this data item.\r\n *\r\n * If there is no grid element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param grid Grid element\r\n */\n set: function (grid) {\n if (this._grid && this._grid != grid) {\n $array.remove(this.sprites, this._grid);\n this._grid.dataItem = undefined;\n }\n if (grid) {\n if (grid.dataItem && grid.dataItem != this) {\n $array.remove(grid.dataItem.sprites, grid);\n grid.dataItem.grid = undefined;\n }\n this.addSprite(grid);\n }\n this._grid = grid;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"tick\", {\n /**\r\n * @return Tick element\r\n */\n get: function () {\n if (!this._tick) {\n var component_2 = this.component;\n if (component_2) {\n var template = void 0;\n var tick_1;\n if (this.isRange) {\n template = component_2.axisRanges.template.tick;\n if (template.disabled) {\n return;\n } else {\n tick_1 = template.clone();\n }\n } else {\n template = component_2.renderer.ticks.template;\n if (template.disabled) {\n return;\n } else {\n tick_1 = component_2.renderer.ticks.create();\n this._disposers.push(new Disposer(function () {\n component_2.renderer.ticks.removeValue(tick_1);\n }));\n }\n }\n this.tick = tick_1;\n tick_1.axis = this.component;\n tick_1.shouldClone = false;\n this._disposers.push(tick_1);\n }\n }\n return this._tick;\n },\n /**\r\n * An [[AxisTick]] element associated with this data item.\r\n *\r\n * If there is no tick element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param tick Tick element\r\n */\n set: function (tick) {\n if (this._tick && this._tick != tick) {\n $array.remove(this.sprites, this._tick);\n this._tick.dataItem = undefined;\n }\n if (tick) {\n if (tick.dataItem && tick.dataItem != this) {\n $array.remove(tick.dataItem.sprites, tick);\n tick.dataItem.tick = undefined;\n }\n this.addSprite(tick);\n }\n this._tick = tick;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"label\", {\n /**\r\n * @return Label element\r\n */\n get: function () {\n if (!this._label) {\n var component_3 = this.component;\n if (component_3) {\n var template = void 0;\n var label_1;\n if (this.isRange) {\n template = component_3.axisRanges.template.label;\n if (template.disabled) {\n return;\n } else {\n label_1 = template.clone();\n }\n } else {\n template = component_3.renderer.labels.template;\n if (template.disabled) {\n return;\n } else {\n label_1 = component_3.renderer.labels.create();\n this._disposers.push(new Disposer(function () {\n component_3.renderer.labels.removeValue(label_1);\n }));\n }\n }\n this._disposers.push(label_1);\n this.label = label_1;\n label_1.shouldClone = false;\n label_1.axis = this.component;\n label_1.virtualParent = component_3;\n }\n }\n return this._label;\n },\n /**\r\n * An [[AxisLabel]] element associated with this data item.\r\n *\r\n * If there is no label element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\n set: function (label) {\n if (this._label && this._label != label) {\n $array.remove(this.sprites, this._label);\n this._label.dataItem = undefined;\n }\n if (label) {\n if (label.dataItem && label.dataItem != this) {\n $array.remove(label.dataItem.sprites, label);\n label.dataItem.label = undefined;\n }\n this.addSprite(label);\n }\n this._label = label;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"axisFill\", {\n /**\r\n * @return Label element\r\n */\n get: function () {\n if (!this._axisFill) {\n var component_4 = this.component;\n if (component_4) {\n var template = void 0;\n var axisFill_1;\n if (this.isRange) {\n template = component_4.axisRanges.template.axisFill;\n if (!this.isTemplate && template.disabled) {\n return;\n } else {\n axisFill_1 = template.clone();\n }\n } else {\n template = component_4.renderer.axisFills.template;\n if (template.disabled) {\n return;\n } else {\n axisFill_1 = component_4.renderer.axisFills.create();\n this._disposers.push(new Disposer(function () {\n component_4.renderer.axisFills.removeValue(axisFill_1);\n }));\n }\n }\n this.axisFill = axisFill_1;\n axisFill_1.shouldClone = false;\n this._disposers.push(axisFill_1);\n }\n }\n return this._axisFill;\n },\n /**\r\n * An [[AxisFill]] associated element with this data item.\r\n *\r\n * If there is no fill element associated with data item, a new one is\r\n * created and returned.\r\n *\r\n * @param label Label element\r\n */\n set: function (axisFill) {\n if (this._axisFill && this._axisFill != axisFill) {\n $array.remove(this.sprites, this._axisFill);\n this._axisFill.dataItem = undefined;\n }\n if (axisFill) {\n if (axisFill.dataItem && axisFill.dataItem != this) {\n $array.remove(axisFill.dataItem.sprites, axisFill);\n axisFill.dataItem.axisFill = undefined;\n }\n axisFill.axis = this.component;\n this.addSprite(axisFill);\n }\n this._axisFill = axisFill;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"text\", {\n /**\r\n * @return Text label\r\n */\n get: function () {\n return this._text;\n },\n /**\r\n * Text to be used as data item's label.\r\n *\r\n * @param text Text label\r\n */\n set: function (text) {\n this._text = text;\n if (this._label) {\n // do not use getter, it will create unwanted instances!\n this._label.text = text;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"mask\", {\n /**\r\n * Data item's mask.\r\n *\r\n * @return Mask\r\n */\n get: function () {\n return this._mask;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"contents\", {\n /**\r\n * Returns a [[Container]] to place all visual elements, related to data item\r\n * in.\r\n *\r\n * If there is no Container, a new one is created.\r\n *\r\n * @return Contents container\r\n */\n get: function () {\n if (!this._contents) {\n var contents = new Container();\n this.addSprite(contents);\n contents.isMeasured = false;\n this._contents = contents;\n var component = this.component;\n if (component) {\n var mask = component.renderer.createFill(this.component);\n mask.disabled = false;\n mask.axis = component;\n this.addSprite(mask);\n this._mask = mask;\n contents.mask = mask;\n }\n }\n return this._contents;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisDataItem.prototype, \"axisBreak\", {\n /**\r\n * @return Axis break\r\n */\n get: function () {\n return this._axisBreak;\n },\n /**\r\n * An [[AxisBreak]] this data item falls within.\r\n *\r\n * @param axisBreak Axis break\r\n */\n set: function (axisBreak) {\n if (this._axisBreak) {\n this._axisBreak.dataItems.removeValue(this);\n }\n if (axisBreak) {\n axisBreak.dataItems.push(this);\n }\n this._axisBreak = axisBreak;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Re-draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisDataItem.prototype.validate = function () {\n if (this.component) {\n this.component.validateDataElement(this);\n }\n };\n /**\r\n * Appends data item's elements to the parent [[Container]].\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisDataItem.prototype.appendChildren = function () {\n if (this.component) {\n this.component.appendDataItem(this);\n }\n };\n /**\r\n * Checks if data item has particular property set.\r\n *\r\n * @param prop Property name\r\n * @return Property set?\r\n */\n AxisDataItem.prototype.hasProperty = function (prop) {\n return prop == \"component\" ? true : _super.prototype.hasProperty.call(this, prop);\n };\n /**\r\n * Copies all parameters from another [[AxisDataItem]].\r\n *\r\n * @param source Source AxisDataItem\r\n */\n AxisDataItem.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.text = source.text;\n if (source.bullet) {\n this.bullet = source.bullet.clone();\n }\n this.minPosition = source.minPosition;\n this.maxPosition = source.maxPosition;\n };\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\n AxisDataItem.prototype.setVisibility = function (value, noChangeValues) {\n _super.prototype.setVisibility.call(this, value, noChangeValues);\n if (this._contents) {\n this._contents.visible = value;\n }\n };\n Object.defineProperty(AxisDataItem.prototype, \"bullet\", {\n /**\r\n * @return Bullet\r\n */\n get: function () {\n return this._bullet;\n },\n /**\r\n * Set it to an instance of any [[Sprite]]. It will be displayed as an axis\r\n * bullet in the middle of the cell, or specific value.\r\n *\r\n * If you need position bullet relatively to the cell, use [[AxisBullet]]\r\n * instead. It has a `location` property which can be used to indicate\r\n * precise relative location within cell/range.\r\n *\r\n * Also, [[AxisBullet]] is a [[Container]] so you can push any other element\r\n * into it.\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @param value Bullet\r\n */\n set: function (value) {\n if (this._bullet && this._bullet != value) {\n $array.remove(this.sprites, this._bullet);\n this._bullet.dataItem = undefined;\n }\n this._bullet = value;\n if (value) {\n this.addSprite(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n return AxisDataItem;\n}(DataItem);\nexport { AxisDataItem };\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines named positions for data item's location within [[Axis]].\r\n */\nexport var AxisItemLocation;\n(function (AxisItemLocation) {\n AxisItemLocation[AxisItemLocation[\"Start\"] = 0] = \"Start\";\n AxisItemLocation[AxisItemLocation[\"Middle\"] = 0.5] = \"Middle\";\n AxisItemLocation[AxisItemLocation[\"End\"] = 1] = \"End\";\n})(AxisItemLocation || (AxisItemLocation = {}));\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for all Axis elements.\r\n *\r\n * @see {@link IAxisEvents} for a list of available Events\r\n * @see {@link IAxisAdapters} for a list of available Adapters\r\n */\nvar Axis = /** @class */function (_super) {\n __extends(Axis, _super);\n /**\r\n * Constructor\r\n */\n function Axis() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Number of Grid elements on the axis.\r\n */\n _this._gridCount = 10;\n /**\r\n * A list of [[XYSeries]] that are using this Axis.\r\n */\n _this._series = new List();\n /**\r\n * Specifies if axis should be automatically disposed when removing from\r\n * chart's axis list.\r\n *\r\n * @default true\r\n */\n _this.autoDispose = true;\n /**\r\n * @ignore\r\n */\n _this._axisItemCount = 0;\n if (_this.constructor === Axis) {\n throw new Error(\"'Axis' cannot be instantiated directly. Please use a specific axis type.\");\n }\n _this.hideTooltipWhileZooming = true;\n _this.minWidth = 0.0001;\n _this.minHeight = 0.0001;\n _this.className = \"Axis\";\n _this.shouldClone = false;\n _this.setPropertyValue(\"cursorTooltipEnabled\", true);\n _this.toggleZoomOutButton = true;\n _this.zoomable = true;\n var interfaceColors = new InterfaceColorSet();\n // Create title\n _this.title = new Label();\n _this.title.shouldClone = false;\n _this._disposers.push(_this.title);\n _this.setPropertyValue(\"startLocation\", 0);\n _this.setPropertyValue(\"endLocation\", 1);\n // Data item iterator\n _this._dataItemsIterator = new $iter.ListIterator(_this.dataItems, function () {\n return _this.dataItems.create();\n });\n _this._dataItemsIterator.createNewItems = true;\n // Create tooltip\n var tooltip = new Tooltip();\n _this._disposers.push(tooltip);\n tooltip.label.padding(5, 10, 5, 10);\n tooltip.background.pointerLength = 5;\n tooltip.fitPointerToBounds = true;\n tooltip.background.filters.clear();\n // Set virtual parentfor the tooltip so that it can properly inheirt\n // formatters from the axis.\n tooltip.virtualParent = _this;\n // Create background element for the tooltip\n var background = tooltip.background;\n background.cornerRadius = 0;\n background.fill = interfaceColors.getFor(\"alternativeBackground\");\n background.stroke = background.fill;\n background.strokeWidth = 1;\n background.fillOpacity = 1;\n tooltip.label.fill = interfaceColors.getFor(\"alternativeText\");\n _this.tooltip = tooltip;\n // Accessibility\n _this.readerHidden = true;\n _this.events.on(\"rangechangestarted\", function () {\n _this.series.each(function (series) {\n if (series.hideTooltipWhileZooming) {\n series.tooltip.hide();\n series.tooltip.preventShow = true;\n }\n });\n if (_this.hideTooltipWhileZooming) {\n _this.tooltip.hide();\n _this.tooltip.preventShow = true;\n }\n }, undefined, false);\n _this.events.on(\"rangechangeended\", function () {\n _this.series.each(function (series) {\n if (series.hideTooltipWhileZooming) {\n series.tooltip.hide();\n series.tooltip.preventShow = false;\n }\n });\n if (_this.hideTooltipWhileZooming) {\n _this.tooltip.hide();\n _this.tooltip.preventShow = false;\n }\n }, undefined, false);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Holds reference to a function that accepts a DataItem and its index as\r\n * parameters.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n *\r\n * For example, you can set it up to highlight only weekends on a\r\n * [[DateAxis]].\r\n */\n Axis.prototype.fillRule = function (dataItem, index) {\n if (!$type.isNumber(index)) {\n index = dataItem.index;\n }\n if (index / 2 == Math.round(index / 2)) {\n dataItem.axisFill.__disabled = true;\n dataItem.axisFill.opacity = 0;\n } else {\n dataItem.axisFill.opacity = 1;\n dataItem.axisFill.__disabled = false;\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n Axis.prototype.createDataItem = function () {\n return new AxisDataItem();\n };\n /**\r\n * Invalidates layout.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.invalidateLayout = function () {\n _super.prototype.invalidateLayout.call(this);\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\n $iter.each(this.series.iterator(), function (series) {\n series.invalidateLayout();\n });\n };\n /**\r\n * Invalidates series of this axis.\r\n */\n Axis.prototype.invalidateSeries = function () {\n // this puts series after axis in invalidation order also makes series update it's data items in case widht/height of a series is not 100%\n $iter.each(this.series.iterator(), function (series) {\n series.invalidate();\n });\n };\n /**\r\n * Override to cancel super call for data element validation.\r\n * @ignore\r\n */\n Axis.prototype.validateDataElements = function () {\n this._axisItemCount = 0;\n if (this.ghostLabel) {\n this.renderer.updateLabelElement(this.ghostLabel, this.start, this.end);\n this.ghostLabel.validate();\n }\n };\n /**\r\n * Recalculates the number of grid items on the axis.\r\n */\n Axis.prototype.updateGridCount = function () {\n if (this.renderer) {\n var gridCount = this.axisLength / this.renderer.minGridDistance;\n if (gridCount != this._gridCount) {\n this._gridCount = gridCount;\n this.clearCache();\n }\n }\n };\n /**\r\n * Redraws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.validateLayout = function () {\n this.axisFullLength = this.axisLength / (this.end - this.start);\n _super.prototype.validateLayout.call(this);\n this.updateGridCount();\n var renderer = this.renderer;\n if (renderer) {\n renderer.updateAxisLine();\n renderer.updateTooltip();\n renderer.updateBaseGridElement();\n }\n if (this._prevLength != this.axisLength) {\n this.dispatchImmediately(\"lengthchanged\");\n this._prevLength = this.axisLength;\n }\n };\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.initRenderer = function () {};\n /**\r\n * Adds a data item to the Axis.\r\n *\r\n * @param dataItem Data item\r\n */\n Axis.prototype.appendDataItem = function (dataItem) {\n var renderer = this.renderer;\n var tick = dataItem.tick;\n if (tick) {\n if (tick.above) {\n tick.parent = renderer.bulletsContainer;\n } else {\n tick.parent = renderer.gridContainer;\n }\n }\n if (dataItem.label) {\n dataItem.label.parent = renderer;\n }\n var axisFill = dataItem.axisFill;\n if (axisFill) {\n if (axisFill.above) {\n axisFill.parent = renderer.bulletsContainer;\n } else {\n axisFill.parent = renderer.gridContainer;\n }\n }\n var grid = dataItem.grid;\n if (grid) {\n if (grid.above) {\n grid.parent = renderer.bulletsContainer;\n } else {\n grid.parent = renderer.gridContainer;\n }\n }\n if (dataItem.bullet) {\n dataItem.bullet.parent = renderer.bulletsContainer;\n }\n };\n /**\r\n * Redraws Axis' related items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.validate = function () {\n _super.prototype.validate.call(this);\n this.validateLayout();\n this.renderer.updateGridContainer();\n };\n /**\r\n * Redars Axis ranges.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.validateAxisRanges = function () {\n var _this = this;\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n _this.appendDataItem(axisRange);\n _this.validateDataElement(axisRange);\n if (axisRange.grid) {\n axisRange.grid.validate();\n }\n if (axisRange.tick) {\n axisRange.tick.validate();\n }\n if (axisRange.axisFill) {\n axisRange.axisFill.validate();\n }\n if (axisRange.label) {\n axisRange.label.validate();\n }\n });\n };\n /**\r\n * Invalidates all axis breaks, so they are redrawn.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.validateBreaks = function () {\n if (this._axisBreaks) {\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\n axisBreak.invalidate();\n });\n }\n };\n /**\r\n * Associates an Axis break with this Axis, after it is inserted into\r\n * `axisBreaks`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n Axis.prototype.processBreak = function (event) {\n var axisBreak = event.newValue;\n axisBreak.parent = this.renderer.breakContainer;\n axisBreak.axis = this;\n };\n /**\r\n * Registers a [[XYSeries]] element with this Axis.\r\n *\r\n * Returns a [[Disposer]] for all events, added to Series for watching\r\n * changes in Axis, and vice versa.\r\n * @ignore\r\n * @param series Series\r\n * @return Event disposer\r\n */\n Axis.prototype.registerSeries = function (series) {\n var _this = this;\n this.series.moveValue(series);\n return new MultiDisposer([new Disposer(function () {\n _this.series.removeValue(series);\n }), this.events.on(\"lengthchanged\", series.invalidate, series, false), this.events.on(\"lengthchanged\", series.createMask, series, false), this.events.on(\"startchanged\", series.invalidate, series, false), this.events.on(\"endchanged\", series.invalidate, series, false)]);\n };\n Object.defineProperty(Axis.prototype, \"renderer\", {\n /**\r\n * @return Renderer\r\n */\n get: function () {\n return this._renderer;\n },\n /**\r\n * An [[AxisRenderer]] to be used to render this Axis.\r\n *\r\n * Please note that most of the settings, related to Axis' appearance are set\r\n * via its renderer. Not directly on the Axis.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n * ```JavaScript\r\n * axis.renderer.inside = true;\r\n * axis.renderer.minLabelPosition = 0.1;\r\n * axis.renderer.maxLabelPosition = 0.9;\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/} for more info\r\n * @param renderer Renderer\r\n */\n set: function (renderer) {\n if (renderer != this._renderer) {\n this._renderer = renderer;\n renderer.chart = this.chart;\n renderer.axis = this;\n renderer.parent = this;\n this.title.parent = this; // we add title to axis and set layout in renderer to avoid one extra container, as otherwise axis container would be used for holding renderer only\n this.initRenderer();\n this._disposers.push(renderer.gridContainer.events.on(\"maxsizechanged\", this.invalidate, this, false));\n var ghostLabel_1 = this.renderer.labels.create();\n this._disposers.push(ghostLabel_1);\n ghostLabel_1.dataItem = this.dataItems.template.clone(); // just for the adapters not to fail\n ghostLabel_1.text = \"L\";\n ghostLabel_1.parent = this.renderer;\n ghostLabel_1.shouldClone = false;\n ghostLabel_1.fillOpacity = 0;\n ghostLabel_1.opacity = 0;\n ghostLabel_1.strokeOpacity = 0;\n ghostLabel_1.interactionsEnabled = false;\n ghostLabel_1.validate();\n this.ghostLabel = ghostLabel_1;\n this.events.on(\"beforedatavalidated\", function () {\n ghostLabel_1.text = \"L\";\n }, undefined, false);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts a relative position to angle. (for circular axes)\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\n Axis.prototype.positionToAngle = function (position) {\n return this.renderer.positionToAngle(position);\n };\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\n Axis.prototype.pointToPosition = function (point) {\n return this.renderer.pointToPosition(point);\n };\n /**\r\n * Converts relative position to coordinate.\r\n *\r\n * @since 4.7.15\r\n * @param position (0-1)\r\n * @return coordinate (px)\r\n */\n Axis.prototype.positionToCoordinate = function (position) {\n return this.renderer.positionToCoordinate(position);\n };\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @return [description]\r\n */\n Axis.prototype.getAnyRangePath = function (start, end) {\n return this.renderer.getPositionRangePath(start, end);\n };\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Position (0-1)\r\n */\n Axis.prototype.anyToPosition = function (value) {\n return 0;\n };\n /**\r\n * Converts any positional parameter to a relative position on axis.\r\n *\r\n * @todo Description (review)\r\n * @param value Pisition\r\n * @return Orientation point\r\n */\n Axis.prototype.anyToPoint = function (value) {\n return {\n x: 0,\n y: 0,\n angle: 0\n };\n };\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition [description]\r\n * @param endPosition [description]\r\n * @return [description]\r\n */\n Axis.prototype.getPositionRangePath = function (startPosition, endPosition) {\n if (this.renderer) {\n return this.renderer.getPositionRangePath(startPosition, endPosition);\n }\n return \"\";\n };\n Object.defineProperty(Axis.prototype, \"axisLength\", {\n /**\r\n * Actual axis length in pixels.\r\n *\r\n * @return Axis length (px)\r\n */\n get: function () {\n if (this.renderer) {\n return this.renderer.axisLength;\n }\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"cursorTooltipEnabled\", {\n /**\r\n * @return Display tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"cursorTooltipEnabled\");\n },\n /**\r\n * Indicates if axis should display a tooltip for chart's cursor.\r\n *\r\n * @param value Display tooltip?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"cursorTooltipEnabled\", value)) {\n if (value && this.renderer) {\n this.renderer.updateTooltip();\n } else if (this.tooltip) {\n this.tooltip.hide(0);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"toggleZoomOutButton\", {\n /**\r\n * @return Toggle zoom out button?\r\n */\n get: function () {\n return this.getPropertyValue(\"toggleZoomOutButton\");\n },\n /**\r\n * Normally, when axis is zoomed in, a zoom out button is shown by a chart,\r\n * and vice versa: when axis is zoomed out completely, zoom out button is\r\n * hidden.\r\n *\r\n * Setting this to `false` will disable this behavior. Zooming in our out\r\n * this axis will not reveal or hide zoom out button.\r\n *\r\n * @default true\r\n * @since 4.6.2\r\n * @param value Toggle zoom out button?\r\n */\n set: function (value) {\n this.setPropertyValue(\"toggleZoomOutButton\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\n Axis.prototype.hideTooltip = function (duration) {\n _super.prototype.hideTooltip.call(this, duration);\n this._tooltipPosition = undefined;\n };\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\n Axis.prototype.showTooltipAtPosition = function (position, local) {\n var tooltip = this._tooltip;\n if (!tooltip || this.dataItems.length <= 0) {\n this._tooltipPosition = undefined;\n } else {\n if (!local) {\n position = this.toAxisPosition(position);\n }\n if (!$type.isNumber(position) || position < this.start || position > this.end) {\n tooltip.hide(0);\n this._tooltipPosition = undefined;\n return;\n }\n var renderer = this.renderer;\n //@todo: think of how to solve this better\n if (!tooltip.parent) {\n tooltip.parent = this.tooltipContainer;\n }\n var tooltipLocation = renderer.tooltipLocation;\n var startPosition = this.getCellStartPosition(position);\n var endPosition = this.getCellEndPosition(position);\n if (this.tooltipPosition == \"fixed\") {\n position = startPosition + (endPosition - startPosition) * tooltipLocation;\n }\n position = $math.fitToRange(position, this.start, this.end);\n if (this._tooltipPosition != position) {\n this._tooltipPosition = position;\n var tooltipLocation2 = renderer.tooltipLocation2;\n var startPoint = renderer.positionToPoint(startPosition, tooltipLocation2);\n var endPoint = renderer.positionToPoint(endPosition, tooltipLocation2);\n // save values so cursor could use them\n this.currentItemStartPoint = startPoint;\n this.currentItemEndPoint = endPoint;\n if (renderer.fullWidthTooltip) {\n tooltip.width = endPoint.x - startPoint.x;\n tooltip.height = endPoint.y - startPoint.y;\n }\n var point = renderer.positionToPoint(position, tooltipLocation2);\n var globalPoint = $utils.spritePointToSvg(point, this.renderer.line);\n tooltip.text = this.getTooltipText(position);\n if (tooltip.text) {\n tooltip.delayedPointTo(globalPoint);\n tooltip.show();\n }\n }\n if (!this.cursorTooltipEnabled || this.tooltip.disabled) {\n tooltip.hide(0);\n }\n }\n };\n /**\r\n * Converts relative position (0-1) to Axis position with zoom level and\r\n * inversed taken into account.\r\n *\r\n * @param position Global position (0-1)\r\n * @return Position within Axis (0-1)\r\n */\n Axis.prototype.toAxisPosition = function (position) {\n position = this.renderer.toAxisPosition(position);\n if (position == undefined) {\n return;\n }\n position = position * (this.end - this.start);\n if (this.renderer.inversed) {\n position = this.end - position;\n } else {\n position = this.start + position;\n }\n return position;\n };\n /**\r\n * Converts position on the axis with zoom level and\r\n * inversed taken into account to global position.\r\n *\r\n * @param position Axis position (0-1)\r\n * @return Global position (0-1)\r\n */\n Axis.prototype.toGlobalPosition = function (position) {\n if (this.renderer.inversed) {\n position = this.end - position;\n } else {\n position = position - this.start;\n }\n return position / (this.end - this.start);\n };\n /**\r\n * Returns text to be used for cursor's Axis tooltip.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position coordinate (px)\r\n * @return Label text\r\n */\n Axis.prototype.getTooltipText = function (position) {\n return;\n };\n /**\r\n * Updates Axis' tooltip's position and possibly size, and pointer (stem)\r\n * place.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pointerOrientation Pointer (stem) orientation\r\n * @param boundingRectangle A rectangle for tooltip to fit within\r\n */\n Axis.prototype.updateTooltip = function (pointerOrientation, boundingRectangle) {\n var tooltip = this._tooltip;\n if (tooltip) {\n tooltip.fixDoc = false;\n tooltip.pointerOrientation = pointerOrientation;\n tooltip.setBounds($utils.spriteRectToSvg(boundingRectangle, this.renderer.line));\n }\n };\n /**\r\n * [roundPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position Relative position\r\n * @param location Location on axis\r\n * @return Rounded position\r\n */\n Axis.prototype.roundPosition = function (position, location, axisLocation) {\n return position;\n };\n /**\r\n * [getCellStartPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\n Axis.prototype.getCellStartPosition = function (position) {\n return position;\n };\n /**\r\n * [getCellEndPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param position [description]\r\n * @return [description]\r\n */\n Axis.prototype.getCellEndPosition = function (position) {\n return position;\n };\n Object.defineProperty(Axis.prototype, \"axisRanges\", {\n /**\r\n * A list of axis ranges for this Axis.\r\n *\r\n * @return Axis ranges\r\n */\n get: function () {\n if (!this._axisRanges) {\n var dataItem = this.createDataItem();\n dataItem.isRange = true;\n dataItem.axisFill = this.renderer.axisFills.template.clone();\n dataItem.grid = this.renderer.grid.template.clone();\n dataItem.tick = this.renderer.ticks.template.clone();\n dataItem.label = this.renderer.labels.template.clone();\n dataItem.isTemplate = true;\n dataItem.component = this;\n dataItem.axisFill.disabled = false;\n dataItem.tick.disabled = false;\n dataItem.grid.disabled = false;\n dataItem.label.disabled = false;\n this._axisRanges = new ListTemplate(dataItem);\n this._axisRanges.events.on(\"inserted\", this.processAxisRange, this, false);\n this._disposers.push(new ListDisposer(this._axisRanges));\n this._disposers.push(this._axisRanges.template);\n }\n return this._axisRanges;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Decorates an axis range after it has been added to the axis range list.\r\n *\r\n * @param event Event\r\n */\n Axis.prototype.processAxisRange = function (event) {\n var axisRange = event.newValue;\n axisRange.component = this;\n axisRange.isRange = true;\n };\n Object.defineProperty(Axis.prototype, \"axisBreaks\", {\n /**\r\n * A list of axis breaks on this Axis.\r\n *\r\n * @return Axis breaks.\r\n */\n get: function () {\n if (!this._axisBreaks) {\n this._axisBreaks = new SortedListTemplate(this.createAxisBreak(), function (a, b) {\n return $number.order(a.adjustedStartValue, b.adjustedStartValue);\n });\n this._axisBreaks.events.on(\"inserted\", this.processBreak, this, false);\n this._disposers.push(new ListDisposer(this._axisBreaks));\n this._disposers.push(this._axisBreaks.template);\n }\n return this._axisBreaks;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates a new axis break.\r\n *\r\n * @return Axis break\r\n */\n Axis.prototype.createAxisBreak = function () {\n return new AxisBreak();\n };\n Object.defineProperty(Axis.prototype, \"series\", {\n /**\r\n * A list of Series currently associated with this Axis.\r\n *\r\n * @return Series\r\n */\n get: function () {\n if (!this._series) {\n this._series = new List();\n }\n return this._series;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes Series' data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.processSeriesDataItems = function () {};\n /**\r\n * Processes Series' single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n Axis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {};\n /**\r\n * Post-processes Serie's data items.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.postProcessSeriesDataItems = function (series) {};\n /**\r\n * Post-processes Serie's single data item.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n Axis.prototype.postProcessSeriesDataItem = function (dataItem) {};\n //\n /**\r\n * Updates Axis based on all Series that might influence it.\r\n *\r\n * Called by Series after Series data is validated.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.updateAxisBySeries = function () {};\n /**\r\n * Hides unused data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Axis.prototype.hideUnusedDataItems = function () {\n var _this = this;\n // hide all unused\n var dataItemsIterator = this._dataItemsIterator;\n dataItemsIterator.createNewItems = false;\n $iter.each(dataItemsIterator.iterator(), function (dataItem) {\n _this.validateDataElement(dataItem); // solves shrinking\n dataItem.__disabled = true;\n });\n dataItemsIterator.clear();\n dataItemsIterator.createNewItems = true;\n };\n /**\r\n * Returns a Series' data item that corresponds to specific position on Axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @param position Position (0-1)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\n Axis.prototype.getSeriesDataItem = function (series, position, findNearest) {\n return;\n };\n /**\r\n * Returns an angle that corresponds to specific position on axis.\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key ???\r\n * @param location Location\r\n * @param stackKey ???\r\n * @return Angle\r\n */\n Axis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\n return;\n };\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\n Axis.prototype.getX = function (dataItem, key, location, stackKey, range) {\n return;\n };\n /**\r\n * [getX description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\n Axis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\n return;\n };\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\n Axis.prototype.getY = function (dataItem, key, location, stackKey, range) {\n return;\n };\n /**\r\n * [getY description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @param stackKey [description]\r\n * @return [description]\r\n */\n Axis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\n return;\n };\n Object.defineProperty(Axis.prototype, \"basePoint\", {\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point coordinates\r\n */\n get: function () {\n return {\n x: 0,\n y: 0\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Axis.prototype.dataChangeUpdate = function () {};\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Axis.prototype.seriesDataChangeUpdate = function (series) {};\n /**\r\n * Removes axis breaks that fall between `min` and `max` (???)\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param min Start value\r\n * @param max End value\r\n * @return Spread o\r\n */\n Axis.prototype.adjustDifference = function (min, max) {\n var difference = max - min;\n if ($type.isNumber(difference)) {\n if (this._axisBreaks) {\n $iter.eachContinue(this._axisBreaks.iterator(), function (axisBreak) {\n var startValue = axisBreak.adjustedStartValue;\n var endValue = axisBreak.adjustedEndValue;\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\n // breaks are sorted, we don't need go further anymore\n if (startValue > max) {\n return false;\n }\n if (endValue >= min) {\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\n var breakSize = axisBreak.breakSize;\n var intersection = $math.intersection({\n start: startValue,\n end: endValue\n }, {\n start: min,\n end: max\n });\n if (intersection) {\n difference -= (intersection.end - intersection.start) * (1 - breakSize);\n }\n }\n }\n return true;\n }\n });\n }\n return difference;\n }\n };\n /**\r\n * Checks if specific value falls within a break.\r\n *\r\n * Returns [[AxisBreak]] the value falls into.\r\n *\r\n * @param value Value to check\r\n * @return Axis break\r\n */\n Axis.prototype.isInBreak = function (value) {\n if (this._axisBreaks) {\n return $iter.find(this._axisBreaks.iterator(), function (axisBreak) {\n return value >= axisBreak.adjustedStartValue && value <= axisBreak.adjustedEndValue;\n });\n }\n };\n /**\r\n * [fixAxisBreaks description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n Axis.prototype.fixAxisBreaks = function () {\n var _this = this;\n if (this._axisBreaks) {\n var axisBreaks = this._axisBreaks;\n if (axisBreaks.length > 0) {\n // first make sure that startValue is <= end value\n // This needs to make a copy of axisBreaks because it mutates the list while traversing\n // TODO very inefficient\n $array.each($iter.toArray(axisBreaks.iterator()), function (axisBreak) {\n var startValue = $math.min(axisBreak.startValue, axisBreak.endValue);\n var endValue = $math.max(axisBreak.startValue, axisBreak.endValue);\n axisBreak.adjustedStartValue = startValue;\n axisBreak.adjustedEndValue = endValue;\n _this._axisBreaks.update(axisBreak);\n });\n var firstAxisBreak = axisBreaks.first;\n var previousEndValue_1 = Math.min(firstAxisBreak.startValue, firstAxisBreak.endValue);\n // process breaks\n // TODO does this need to call axisBreaks.update ?\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\n var startValue = axisBreak.adjustedStartValue;\n var endValue = axisBreak.adjustedEndValue;\n // breaks can't overlap\n // if break starts before previous break ends\n if (startValue < previousEndValue_1) {\n startValue = previousEndValue_1;\n if (endValue < previousEndValue_1) {\n endValue = previousEndValue_1;\n }\n }\n axisBreak.adjustedStartValue = startValue;\n axisBreak.adjustedEndValue = endValue;\n });\n }\n }\n };\n Object.defineProperty(Axis.prototype, \"startIndex\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\n get: function () {\n return 0;\n },\n /**\r\n * We need start/end indexes of axes to be 0 - `dataItems.length`.\r\n *\r\n * Yes, also for category axis, this helps to avoid jumping of categories\r\n * while scrolling and does not do a lot of extra work as we use\r\n * protected `_startIndex` and `_endIndex` when working with items.\r\n *\r\n * @hidden\r\n */\n /**\r\n * [startIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {},\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"endIndex\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return [description]\r\n */\n get: function () {\n return this.dataItems.length;\n },\n /**\r\n * [endIndex description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {},\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a formatted label based on position.\r\n *\r\n * Individual axis types should override this method to generate a label\r\n * that is relevant to axis type.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\n Axis.prototype.getPositionLabel = function (position) {\n return Math.round(position * 100) + \"%x\";\n };\n Object.defineProperty(Axis.prototype, \"chart\", {\n /**\r\n * @return Chart\r\n */\n get: function () {\n return this._chart;\n },\n /**\r\n * A Chart this Axis belongs to.\r\n *\r\n * @param value Chart\r\n */\n set: function (value) {\n this._chart = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates a data item for a Series range.\r\n *\r\n * @param series Target Series\r\n * @return Range data item\r\n */\n Axis.prototype.createSeriesRange = function (series) {\n var range = this.axisRanges.create();\n range.component = this;\n range.axisFill = this.renderer.axisFills.template.clone();\n range.axisFill.disabled = false;\n range.axisFill.fillOpacity = 0;\n range.grid = this.renderer.grid.template.clone();\n range.grid.disabled = true;\n range.tick = this.renderer.ticks.template.clone();\n range.tick.disabled = true;\n range.label = this.renderer.labels.template.clone();\n range.label.disabled = true;\n range.addDisposer(new Disposer(function () {\n series.axisRanges.removeValue(range);\n }));\n series.axisRanges.push(range);\n return range;\n };\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\n Axis.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.renderer) {\n this.renderer.copyFrom(source.renderer);\n } else {\n if (source.renderer) {\n this.renderer = source.renderer.clone();\n this._disposers.push(this.renderer);\n }\n }\n if (source.title) {\n if (!this.title) {\n this.title = source.title.clone();\n this.title.parent = this;\n } else {\n this.title.copyFrom(source.title);\n }\n this._disposers.push(this.title);\n }\n };\n /**\r\n * Resets internal iterator.\r\n */\n Axis.prototype.resetIterators = function () {\n this._dataItemsIterator.reset();\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n Axis.prototype.processConfig = function (config) {\n if (config) {\n // Set up axis ranges\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\n var range = config.axisRanges[i];\n // If `series` is set, we know it's a series range\n if ($type.hasValue(range[\"series\"])) {\n if ($type.isString(range[\"series\"])) {\n if (this.map.hasKey(range[\"series\"])) {\n //range[\"series\"] = this.map.getKey(range[\"series\"]);\n config.axisRanges[i] = this.createSeriesRange(this.map.getKey(range[\"series\"]));\n delete range[\"series\"];\n config.axisRanges[i].config = range;\n }\n }\n }\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Ordering function used in JSON setup.\r\n *\r\n * @param a Item A\r\n * @param b Item B\r\n * @return Order\r\n */\n Axis.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // last\n else if (a == \"title\") {\n return 1;\n } else if (b == \"title\") {\n return -1;\n }\n // first\n else if (a == \"component\") {\n return -1;\n } else if (b == \"component\") {\n return 1;\n } else {\n return _super.prototype.configOrder.call(this, a, b);\n }\n };\n Object.defineProperty(Axis.prototype, \"startLocation\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"startLocation\");\n },\n /**\r\n * Axis start location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - Full first cell is shown.\r\n * * 0.5 - Half of first cell is shown.\r\n * * 1 - None of the first cell is visible. (you probably don't want that)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"startLocation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"endLocation\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"endLocation\");\n },\n /**\r\n * Axis end location. Works on Date/Category axis, doesn't work on Value axis.\r\n *\r\n * * 0 - None of the last cell is shown. (don't do that)\r\n * * 0.5 - Half of the last cell is shown.\r\n * * 1 - Full last cell is shown.\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"endLocation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Axis.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.renderer) {\n this.renderer.gridContainer.disabled = value;\n }\n return changed;\n };\n Object.defineProperty(Axis.prototype, \"title\", {\n /**\r\n * @return Title label\r\n */\n get: function () {\n return this._title;\n },\n /**\r\n * A reference to a [[Label]] element which serves as a title to the axis.\r\n *\r\n * When axis is created it aleready has an element, so you can just modify\r\n * it.\r\n *\r\n * Or you can replace it with your own instance of `Label`.\r\n *\r\n * @param value Title label\r\n */\n set: function (value) {\n if (this._title && this._title != value) {\n this._title.dispose();\n }\n if (value) {\n this._title = value;\n value.parent = this;\n value.shouldClone = false;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"hideTooltipWhileZooming\", {\n /**\r\n * @return Hide tooltip while zooming?\r\n */\n get: function () {\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\n },\n /**\r\n * Indicates if axis' tooltip should be hidden while axis range is animating\r\n * (zooming)\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\n set: function (value) {\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"zoomable\", {\n /**\r\n * @return Zoomable?\r\n */\n get: function () {\n return this.getPropertyValue(\"zoomable\");\n },\n /**\r\n * Should the axis be zoomed with scrollbar/cursor?\r\n *\r\n * @default true\r\n * @since 4.9.28\r\n * @param value Zoomable?\r\n */\n set: function (value) {\n this.setPropertyValue(\"zoomable\", value);\n },\n enumerable: true,\n configurable: true\n });\n return Axis;\n}(Component);\nexport { Axis };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Axis\"] = Axis;\nregistry.registeredClasses[\"AxisDataItem\"] = AxisDataItem;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Disable axis tooltips.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.maybeXS,\n state: function (target, stateId) {\n if (target instanceof Axis && target.tooltip) {\n var state = target.states.create(stateId);\n state.properties.cursorTooltipEnabled = false;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Axis.js.map","/**\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { color } from \"../../core/utils/Color\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw Axis line.\r\n *\r\n * @see {@link IAxisLineEvents} for a list of available events\r\n * @see {@link IAxisLineAdapters} for a list of available Adapters\r\n */\nvar AxisLine = /** @class */function (_super) {\n __extends(AxisLine, _super);\n /**\r\n * Constructor\r\n */\n function AxisLine() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisLine\";\n _this.element = _this.paper.add(\"path\");\n var interfaceColors = new InterfaceColorSet();\n _this.stroke = interfaceColors.getFor(\"grid\");\n _this.strokeOpacity = 0.15;\n _this.pixelPerfect = true;\n _this.fill = color();\n _this.applyTheme();\n _this.interactionsEnabled = false;\n return _this;\n //this.element.moveTo({ x: 0, y: 0 });\n }\n return AxisLine;\n}(Sprite);\nexport { AxisLine };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisLine\"] = AxisLine;\n//# sourceMappingURL=AxisLine.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * AxisFill is a base class used to defines fill shapes for various\r\n * type-specific Axes.\r\n *\r\n * Axis fills are used to add fills to specific ranges of those axes.\r\n *\r\n * @see {@link IAxisFillEvents} for a list of available events\r\n * @see {@link IAxisFillAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar AxisFill = /** @class */function (_super) {\n __extends(AxisFill, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\n function AxisFill(axis) {\n var _this = _super.call(this) || this;\n _this.axis = axis;\n _this.element = _this.paper.add(\"path\");\n _this.className = \"AxisFill\";\n _this.isMeasured = false;\n _this.location = 0;\n _this.above = false;\n var interfaceColors = new InterfaceColorSet();\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\n _this.fillOpacity = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * @ignore\r\n */\n AxisFill.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n return changed;\n };\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisFill.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this.__disabled || this.disabled) {\n return;\n }\n if (this.axis && $type.isNumber(this.startPosition) && $type.isNumber(this.endPosition)) {\n this.fillPath = this.axis.getPositionRangePath(this.startPosition, this.endPosition);\n this.path = this.fillPath;\n if (this.isMeasured) {\n this.measure();\n }\n }\n };\n Object.defineProperty(AxisFill.prototype, \"startPosition\", {\n /**\r\n * @return Start position\r\n */\n get: function () {\n return this.getPropertyValue(\"startPosition\");\n },\n /**\r\n * An actual starting position of the fill.\r\n *\r\n * @param value Starting position\r\n */\n set: function (value) {\n this.setPropertyValue(\"startPosition\", value);\n this.invalidate(); // this is needed as relative position might not change when zooming\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisFill.prototype, \"endPosition\", {\n /**\r\n * @return End position\r\n */\n get: function () {\n return this.getPropertyValue(\"endPosition\");\n },\n /**\r\n * An actual end position of the fill.\r\n *\r\n * @param value End position\r\n */\n set: function (value) {\n this.setPropertyValue(\"endPosition\", value);\n this.invalidate(); // this is needed as relative position might not change when zooming\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisFill.prototype, \"location\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"location\");\n },\n /**\r\n * Relative location of the fill. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"location\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n AxisFill.prototype.setPath = function (value) {\n if (this.setPropertyValue(\"path\", value)) {\n this.element.attr({\n \"d\": value\n });\n return true;\n }\n return false;\n };\n Object.defineProperty(AxisFill.prototype, \"above\", {\n /**\r\n * @return Draw above series?\r\n */\n get: function () {\n return this.getPropertyValue(\"above\");\n },\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\n set: function (value) {\n this.setPropertyValue(\"above\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return AxisFill;\n}(Sprite);\nexport { AxisFill };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisFill\"] = AxisFill;\n//# sourceMappingURL=AxisFill.js.map","/**\r\n * A module defining functionality for axis grid elements.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { color } from \"../../core/utils/Color\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Displays an axis grid line.\r\n *\r\n * @see {@link IGridEvents} for a list of available events\r\n * @see {@link IGridAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the grid, also with 3d charts we might need some additional elements\r\n * @important\r\n */\nvar Grid = /** @class */function (_super) {\n __extends(Grid, _super);\n /**\r\n * Constructor\r\n */\n function Grid() {\n var _this = _super.call(this) || this;\n _this.className = \"Grid\";\n _this.element = _this.paper.add(\"path\");\n _this.location = 0.5;\n _this.isMeasured = false;\n _this.above = false;\n var interfaceColors = new InterfaceColorSet();\n _this.stroke = interfaceColors.getFor(\"grid\");\n _this.pixelPerfect = true;\n _this.strokeOpacity = 0.15;\n _this.fill = color(); // \"none\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Grid.prototype, \"location\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"location\");\n },\n /**\r\n * Location within axis cell to place grid line on.\r\n *\r\n * * 0 - start\r\n * * 0.5 - middle\r\n * * 1 - end\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"location\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"above\", {\n /**\r\n * @return Draw above series?\r\n */\n get: function () {\n return this.getPropertyValue(\"above\");\n },\n /**\r\n * Normally fill goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\n set: function (value) {\n this.setPropertyValue(\"above\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n Grid.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n return changed;\n };\n return Grid;\n}(Sprite);\nexport { Grid };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Grid\"] = Grid;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Disable grid on smaller charts\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.maybeXS,\n state: function (target, stateId) {\n if (target instanceof Grid) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=Grid.js.map","/**\r\n * Axis Label module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Label } from \"../../core/elements/Label\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Use to create labels on Axis.\r\n *\r\n * @see {@link IAxisLabelEvents} for a list of available events\r\n * @see {@link IAxisLabelAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar AxisLabel = /** @class */function (_super) {\n __extends(AxisLabel, _super);\n /**\r\n * Constructor\r\n */\n function AxisLabel() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisLabel\";\n _this.isMeasured = false;\n _this.padding(10, 10, 10, 10);\n _this.location = 0.5;\n //this.nonScaling = true; // not good for perf\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisLabel.prototype, \"location\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"location\");\n },\n /**\r\n * Relative location of the label. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"location\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisLabel.prototype, \"inside\", {\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\n get: function () {\n return this.getPropertyValue(\"inside\");\n },\n /**\r\n * Sets if label should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\n set: function (value) {\n this.setPropertyValue(\"inside\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n AxisLabel.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n return changed;\n };\n return AxisLabel;\n}(Label);\nexport { AxisLabel };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisLabel\"] = AxisLabel;\n//# sourceMappingURL=AxisLabel.js.map","/**\r\n * Tick module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A basic Tick class.\r\n *\r\n * A tick is a short dash, mainly connecting an object like axis or slice to\r\n * it's textual label.\r\n *\r\n * @see {@link ITickEvents} for a list of available events\r\n * @see {@link ITickAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar Tick = /** @class */function (_super) {\n __extends(Tick, _super);\n /**\r\n * Constructor\r\n */\n function Tick() {\n var _this = _super.call(this) || this;\n _this.className = \"Tick\";\n var interfaceColors = new InterfaceColorSet();\n _this.fillOpacity = 0;\n _this.length = 6;\n _this.strokeOpacity = 0.2;\n _this.stroke = interfaceColors.getFor(\"grid\");\n _this.isMeasured = false;\n _this.nonScalingStroke = true;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(Tick.prototype, \"length\", {\n /**\r\n * @return Length (px)\r\n */\n get: function () {\n if (this.disabled) {\n return 0;\n }\n return this.getPropertyValue(\"length\");\n },\n /**\r\n * Length of the tick in pixels.\r\n *\r\n * @param value Length (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"length\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return Tick;\n}(Sprite);\nexport { Tick };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Tick\"] = Tick;\n//# sourceMappingURL=Tick.js.map","/**\r\n * Axis Tick module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Tick } from \"../elements/Tick\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws an axis tick\r\n * @see {@link IAxisTickEvents} for a list of available events\r\n * @see {@link IAxisTickAdapters} for a list of available Adapters\r\n */\nvar AxisTick = /** @class */function (_super) {\n __extends(AxisTick, _super);\n function AxisTick() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisTick\";\n _this.element = _this.paper.add(\"path\");\n _this.location = 0.5;\n _this.above = false;\n _this.isMeasured = false;\n _this.pixelPerfect = true;\n _this.strokeOpacity = 0;\n _this.length = 5;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisTick.prototype, \"location\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"location\");\n },\n /**\r\n * Relative location of the tick. (0-1)\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"location\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisTick.prototype, \"inside\", {\n /**\r\n * Returns if label is set to be drawn inside axis.\r\n *\r\n * @return Inside?\r\n */\n get: function () {\n return this.getPropertyValue(\"inside\");\n },\n /**\r\n * Sets if tick should be drawn inside axis.\r\n *\r\n * @param value Inside?\r\n */\n set: function (value) {\n this.setPropertyValue(\"inside\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisTick.prototype, \"above\", {\n /**\r\n * @return Draw above series?\r\n */\n get: function () {\n return this.getPropertyValue(\"above\");\n },\n /**\r\n * Normally tick goes below series. Set this to `true` to go above.\r\n *\r\n * @default false\r\n * @since 4.5.9\r\n * @param value Draw above series?\r\n */\n set: function (value) {\n this.setPropertyValue(\"above\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n AxisTick.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n return changed;\n };\n return AxisTick;\n}(Tick);\nexport { AxisTick };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisTick\"] = AxisTick;\n//# sourceMappingURL=AxisTick.js.map","/**\r\n * Module, defining base Axis Renderer.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { AxisDataItem } from \"./Axis\";\nimport { AxisLine } from \"./AxisLine\";\nimport { AxisFill } from \"./AxisFill\";\nimport { Grid } from \"./Grid\";\nimport { AxisLabel } from \"./AxisLabel\";\nimport { AxisTick } from \"./AxisTick\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { registry } from \"../../core/Registry\";\nimport { percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A base class for all axis renderers.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\nvar AxisRenderer = /** @class */function (_super) {\n __extends(AxisRenderer, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRenderer() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A related chart.\r\n */\n _this._chart = new MutableValueDisposer();\n _this.className = \"AxisRenderer\";\n // Set defaults\n _this.minGridDistance = 50;\n _this.inside = false;\n _this.inversed = false;\n _this.tooltipLocation = 0.5;\n _this.fullWidthTooltip = false;\n _this.cellStartLocation = 0;\n _this.cellEndLocation = 1;\n _this.minLabelPosition = 0;\n _this.maxLabelPosition = 1;\n _this.shouldClone = false;\n var gridContainer = _this.createChild(Container);\n gridContainer.shouldClone = false;\n gridContainer.layout = \"none\";\n //\tgridContainer.isMeasured = false;\n gridContainer.virtualParent = _this;\n gridContainer.width = percent(100);\n gridContainer.height = percent(100);\n _this.gridContainer = gridContainer;\n // not good without this\n gridContainer.events.on(\"maxsizechanged\", function () {\n if (_this.inited) {\n _this.invalidateAxisItems();\n }\n }, _this, false);\n var breakContainer = _this.createChild(Container);\n breakContainer.shouldClone = false;\n breakContainer.isMeasured = false;\n breakContainer.layout = \"none\";\n breakContainer.width = percent(100);\n breakContainer.height = percent(100);\n _this.breakContainer = breakContainer;\n var bulletsContainer = _this.createChild(Container);\n bulletsContainer.shouldClone = false;\n bulletsContainer.isMeasured = false;\n bulletsContainer.layout = \"none\";\n bulletsContainer.width = percent(100);\n bulletsContainer.height = percent(100);\n _this.bulletsContainer = bulletsContainer;\n _this.line = _this.createChild(AxisLine);\n _this.line.shouldClone = false;\n _this.line.strokeOpacity = 0;\n var baseGrid = _this.createChild(Grid);\n baseGrid.shouldClone = false;\n _this.baseGrid = baseGrid;\n // Make elements disposable\n var disposers = _this._disposers;\n disposers.push(baseGrid);\n disposers.push(_this.line);\n disposers.push(gridContainer);\n disposers.push(breakContainer);\n disposers.push(bulletsContainer);\n disposers.push(_this._chart);\n _this.ticks.template.disabled = true;\n _this.axisFills.template.disabled = true;\n _this.axisFills.template.interactionsEnabled = false;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisRenderer.prototype, \"axis\", {\n /**\r\n * Axis of a renderer\r\n * @return axis Axis\r\n */\n get: function () {\n return this._axis;\n },\n /**\r\n * Axis of a renderer\r\n * @param axis Axis\r\n */\n set: function (axis) {\n this.setAxis(axis);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n AxisRenderer.prototype.setAxis = function (axis) {\n this._axis = axis;\n this.baseGrid.parent = axis;\n this.line.parent = axis;\n this.gridContainer.bind(\"opacity\", axis);\n };\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRenderer.prototype.processRenderer = function () {\n this.events.on(\"sizechanged\", this.updateTooltip, this, false);\n this.events.on(\"positionchanged\", this.updateTooltip, this, false);\n this.labels.template.inside = this.inside;\n this.ticks.template.inside = this.inside;\n };\n /**\r\n * Updates Axis' tooltip.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRenderer.prototype.updateTooltip = function () {\n // This is a placeholder method for extending classes to override.\n };\n Object.defineProperty(AxisRenderer.prototype, \"axisLength\", {\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\n get: function () {\n // This is a placeholder method for extending classes to override.\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Re-positions an element to new coordinates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A target element\r\n * @param point New coordinates\r\n */\n AxisRenderer.prototype.positionItem = function (item, point) {\n if (item) {\n item.moveTo(point);\n }\n };\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Point\r\n */\n AxisRenderer.prototype.positionToPoint = function (position, position2) {\n // This is a placeholder method for extending classes to override.\n return {\n x: 0,\n y: 0\n };\n };\n /**\r\n * Converts relative position on axis to angle.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review / units)\r\n * @param position Position (0-1)\r\n * @return Angle\r\n */\n AxisRenderer.prototype.positionToAngle = function (position) {\n // This is a placeholder method for extending classes to override.\n return 0;\n };\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\n AxisRenderer.prototype.positionToCoordinate = function (position) {\n var coordinate;\n var axis = this.axis;\n var axisFullLength = axis.axisFullLength;\n if (axis.renderer.inversed) {\n coordinate = (axis.end - position) * axisFullLength;\n } else {\n coordinate = (position - axis.start) * axisFullLength;\n }\n return coordinate;\n };\n AxisRenderer.prototype.updateGridContainer = function () {};\n AxisRenderer.prototype.getHeight = function () {\n var gridContainer = this.gridContainer;\n if (gridContainer.parent) {\n return gridContainer.parent.pixelHeight;\n }\n return this.gridContainer.pixelHeight || 0;\n };\n AxisRenderer.prototype.getWidth = function () {\n var gridContainer = this.gridContainer;\n if (gridContainer.parent) {\n return gridContainer.parent.pixelWidth;\n }\n return this.gridContainer.pixelWidth || 0;\n };\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\n AxisRenderer.prototype.coordinateToPosition = function (coordinate, coordinate2) {\n var position;\n var axis = this.axis;\n var axisFullLength = axis.axisFullLength;\n if (axis.renderer.inversed) {\n position = axis.end - coordinate / axisFullLength;\n } else {\n position = coordinate / axisFullLength + axis.start;\n }\n return $math.round(position, 5);\n };\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\n AxisRenderer.prototype.pointToPosition = function (point) {\n // This is a placeholder method for extending classes to override.\n return 0;\n };\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\n AxisRenderer.prototype.getPositionRangePath = function (startPosition, endPosition) {\n return \"\";\n };\n /**\r\n * Invalidates all axis data items, effectively causing them re-evaluated.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\n AxisRenderer.prototype.invalidateAxisItems = function () {\n var axis = this.axis;\n if (axis) {\n axis.invalidateDataItems();\n }\n };\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRenderer.prototype.updateGridElement = function (grid, position, endPosition) {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRenderer.prototype.updateTickElement = function (tick, position, endPosition) {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRenderer.prototype.updateBullet = function (bullet, position, endPosition) {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRenderer.prototype.updateLabelElement = function (label, position, endPosition, location) {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions the axis fill element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fill Fill element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRenderer.prototype.updateFillElement = function (fill, position, endPosition) {\n fill.startPosition = position;\n fill.endPosition = endPosition;\n };\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRenderer.prototype.updateAxisLine = function () {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRenderer.prototype.updateBaseGridElement = function () {\n // This is a placeholder method for extending classes to override.\n };\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\n AxisRenderer.prototype.updateBreakElement = function (axisBreak) {\n this.positionItem(axisBreak.startLine, axisBreak.startPoint);\n this.toggleVisibility(axisBreak.startLine, axisBreak.startPosition, 0, 1);\n this.positionItem(axisBreak.endLine, axisBreak.endPoint);\n this.toggleVisibility(axisBreak.endLine, axisBreak.endPosition, 0, 1);\n };\n Object.defineProperty(AxisRenderer.prototype, \"minGridDistance\", {\n /**\r\n * @return Min distance (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"minGridDistance\");\n },\n /**\r\n * Minimum distance in pixels between grid elements.\r\n *\r\n * Use it to control density of the grid/labels on the axis.element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} for more info\r\n * @param value Min distance (px)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"minGridDistance\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"chart\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\n get: function () {\n return this._chart.get();\n },\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\n set: function (value) {\n this._chart.set(value, null);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Toggles visibility of an element, based on its current position and\r\n * min/max position settings.\r\n *\r\n * E.g. labels based on `minLabelPosition` and `maxLabelPosition`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprite An element to toggle\r\n * @param position Elements current position\r\n * @param minPosition Min position setting\r\n * @param maxPosition Max position setting\r\n */\n AxisRenderer.prototype.toggleVisibility = function (sprite, position, minPosition, maxPosition) {\n var axis = this.axis;\n var dataItem = sprite.dataItem;\n if (dataItem && dataItem instanceof AxisDataItem) {\n if ($type.isNumber(dataItem.minPosition)) {\n minPosition = dataItem.minPosition;\n }\n if ($type.isNumber(dataItem.maxPosition)) {\n maxPosition = dataItem.maxPosition;\n }\n }\n var updatedStart = axis.start + (axis.end - axis.start) * (minPosition - 0.0001);\n var updatedEnd = axis.start + (axis.end - axis.start) * (maxPosition + 0.0001);\n if (!sprite.disabled) {\n if (position < updatedStart || position > updatedEnd) {\n sprite.__disabled = true;\n } else {\n sprite.__disabled = false;\n }\n }\n };\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\n AxisRenderer.prototype.createBreakSprites = function (axisBreak) {\n // This is a placeholder method for extending classes to override.\n };\n Object.defineProperty(AxisRenderer.prototype, \"axisFills\", {\n /**\r\n * A list of Axis' Fill elements.\r\n *\r\n * Those are fill elements that cover the space between every second set\r\n * of grid lines, and can be configured to create striped charts.\r\n *\r\n * Please note that these are disabled by default. To enable them, set\r\n * template to true.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.axisFills.template.disabled = false;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"axisFills\": {\r\n * \"disabled\": false\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/alternated-axis-fills/} this tutorial for more info.\r\n * @return Fill elements\r\n */\n get: function () {\n if (!this._axisFills) {\n var fill = this.createFill(this.axis);\n this._axisFills = new ListTemplate(fill);\n fill.applyOnClones = true;\n fill.events.on(\"enabled\", this.invalidateAxisItems, this, false);\n this._disposers.push(new ListDisposer(this._axisFills));\n this._disposers.push(this._axisFills.template);\n }\n return this._axisFills;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\n AxisRenderer.prototype.createFill = function (axis) {\n return new AxisFill(axis);\n };\n Object.defineProperty(AxisRenderer.prototype, \"grid\", {\n /**\r\n * A list of Axis' Grid elements.\r\n *\r\n * @return Grid elements\r\n */\n get: function () {\n if (!this._grid) {\n var grid = this.createGrid();\n this._grid = new ListTemplate(grid);\n grid.applyOnClones = true;\n grid.events.on(\"enabled\", this.invalidateAxisItems, this, false);\n this._disposers.push(new ListDisposer(this._grid));\n this._disposers.push(this._grid.template);\n }\n return this._grid;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\n AxisRenderer.prototype.createGrid = function () {\n return new Grid();\n };\n Object.defineProperty(AxisRenderer.prototype, \"ticks\", {\n /**\r\n * A list of Axis' Tick elements.\r\n *\r\n * Please note that these are disabled by default. To enable ticks, you'll\r\n * need to set `disabled` and `strokeOpacity` properties of the tick template.\r\n *\r\n * ```TypeScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.renderer.ticks.template.disabled = false;\r\n * categoryAxis.renderer.ticks.template.strokeOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"renderer\": {\r\n * \"ticks\": {\r\n * \"disabled\": false,\r\n * \"strokeOpacity\": 0.5\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Tick elements\r\n */\n get: function () {\n if (!this._ticks) {\n var tick = this.createTick();\n tick.applyOnClones = true;\n tick.isMeasured = false;\n tick.events.on(\"enabled\", this.invalidateAxisItems, this, false);\n this._ticks = new ListTemplate(tick);\n this._disposers.push(new ListDisposer(this._ticks));\n this._disposers.push(this._ticks.template);\n }\n return this._ticks;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a new tick element, suitable for this Axis Renderer type.\r\n *\r\n * @return Tick element\r\n */\n AxisRenderer.prototype.createTick = function () {\n return new AxisTick();\n };\n Object.defineProperty(AxisRenderer.prototype, \"labels\", {\n /**\r\n * A list of Axis' Label elements.\r\n *\r\n * @return Label elements\r\n */\n get: function () {\n if (!this._labels) {\n var label = this.createLabel();\n this._labels = new ListTemplate(label);\n label.applyOnClones = true;\n label.events.on(\"enabled\", this.invalidateAxisItems, this, false);\n this._disposers.push(new ListDisposer(this._labels));\n this._disposers.push(this._labels.template);\n }\n return this._labels;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\n AxisRenderer.prototype.createLabel = function () {\n return new AxisLabel();\n };\n Object.defineProperty(AxisRenderer.prototype, \"inside\", {\n /**\r\n * @return Labels inside?\r\n */\n get: function () {\n return this.getPropertyValue(\"inside\");\n },\n /**\r\n * Indicates whether Axis' labels and ticks should be drawn inside Plot area.\r\n *\r\n * Does not work with all renderers, like AxisRendererRadial.\r\n *\r\n * @param value Labels inside?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"inside\", value)) {\n if (this.axis) {\n this.axis.invalidate();\n }\n }\n if (value) {\n this.width = 0;\n this.height = 0;\n } else {\n this.width = undefined;\n this.height = undefined;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"opposite\", {\n /**\r\n * @return Draw axis on opposite side?\r\n */\n get: function () {\n return this.getPropertyValue(\"opposite\");\n },\n /**\r\n * Indicates whether Axis should be drawn on the opposite side of the plot\r\n * area than it would normally be drawn based on chart's settings.\r\n *\r\n * Does not work with all renderers, like [[AxisRendererRadial]] and\r\n * [[AxisRenderer Circular].\r\n *\r\n * @param value Draw axis on opposite side?\r\n */\n set: function (value) {\n this.setPropertyValue(\"opposite\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"fullWidthTooltip\", {\n /**\r\n * @return Full width tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"fullWidthTooltip\");\n },\n /**\r\n * Indicates if Axis tooltip should take the whole width of the axis cell.\r\n * (between two grid lines)\r\n *\r\n * NOTE: this setting is ignored on circular axis types.\r\n *\r\n * @param value Full width tooltip?\r\n */\n set: function (value) {\n this.setPropertyValue(\"fullWidthTooltip\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation\", {\n /**\r\n * @return Tooltip location\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipLocation\");\n },\n /**\r\n * Location within axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\n set: function (value) {\n this.setPropertyValue(\"tooltipLocation\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"tooltipLocation2\", {\n /**\r\n * @return Tooltip location\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipLocation2\");\n },\n /**\r\n * Location within secondary axis cell to show tooltip on. (0-1)\r\n *\r\n * 0 - show at the start\r\n * 0.5 - show right in the middle\r\n * 1 - show at the end\r\n *\r\n * @param value Tooltip location\r\n */\n set: function (value) {\n this.setPropertyValue(\"tooltipLocation2\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"cellStartLocation\", {\n /**\r\n * @return Cell start (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"cellStartLocation\");\n },\n /**\r\n * Location for the cell start.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellStartLocation` identifies where, within available space, the actual\r\n * cell starts.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell start (0-1)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"cellStartLocation\", value)) {\n if (this.axis) {\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"cellEndLocation\", {\n /**\r\n * @return Cell end (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"cellEndLocation\");\n },\n /**\r\n * Location for the cell end.\r\n *\r\n * Normally a \"cell\" is the whole available width in a category.\r\n *\r\n * If there are several clustered column-like series available, the whole\r\n * space is divided between each clustered column, or column stacks.\r\n *\r\n * `cellEndLocation` identifies where, within available space, the actual\r\n * cell ends.\r\n *\r\n * This, together with column series' `width` will affect actual width of\r\n * columns, and thus gaps between them.\r\n *\r\n * This will affect category-like axes only, like [[DateAxis]], or\r\n * [[CategoryAxis]].\r\n *\r\n * This is used to limit a space occupied by series like column.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Cell end (0-1)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"cellEndLocation\", value)) {\n if (this.axis) {\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"inversed\", {\n /**\r\n * @return Flip axis?\r\n */\n get: function () {\n return this.getPropertyValue(\"inversed\");\n },\n /**\r\n * Indicates if the scale of the axis should be flipped.\r\n *\r\n * @param value Flip axis?\r\n */\n set: function (value) {\n this.setPropertyValue(\"inversed\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"minLabelPosition\", {\n /**\r\n * @return Min label position (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"minLabelPosition\");\n },\n /**\r\n * Minimum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the start of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.05 (5% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near start of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Min label position (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"minLabelPosition\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRenderer.prototype, \"maxLabelPosition\", {\n /**\r\n * @return Max label position (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"maxLabelPosition\");\n },\n /**\r\n * Maximum position along the Axis, for labels.\r\n *\r\n * Labels, which have their position closer to the and of the Axis, will be\r\n * automatically hidden.\r\n *\r\n * E.g., setting this to 0.95 (95% of total axis length) would hide labels,\r\n * that would otherwise be drawn very near end of the Axis.\r\n *\r\n * This is especially usefull with `inside = true`, or if the chart hasn't\r\n * got any extra margins.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/} for more info.\r\n * @param value Max label position (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxLabelPosition\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all settings and related items from another object of the same\r\n * type.\r\n *\r\n * @param source Source object\r\n */\n AxisRenderer.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.grid.template.copyFrom(source.grid.template);\n this.ticks.template.copyFrom(source.ticks.template);\n this.labels.template.copyFrom(source.labels.template);\n this.axisFills.template.copyFrom(source.axisFills.template);\n this.line.copyFrom(source.line);\n this.baseGrid.copyFrom(source.baseGrid);\n };\n /**\r\n * @ignore\r\n */\n AxisRenderer.prototype.toAxisPosition = function (value) {\n return value;\n };\n /**\r\n * Sets `visibility` property:\r\n *\r\n * * `true` - visible\r\n * * `false` - hidden\r\n *\r\n * @param value true - visible, false - hidden\r\n * @return Current visibility\r\n */\n AxisRenderer.prototype.setVisibility = function (value) {\n _super.prototype.setVisibility.call(this, value);\n this.bulletsContainer.visible = value;\n };\n return AxisRenderer;\n}(Container);\nexport { AxisRenderer };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRenderer\"] = AxisRenderer;\n//# sourceMappingURL=AxisRenderer.js.map","/**\r\n * Axis Bullet module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to draw a positioned bullet (element) on an Axis.\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * let flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n *\r\n * var flag = new am4plugins_bullets.FlagBullet();\r\n * flag.label.text = \"Hello\";\r\n *\r\n * range.bullet = flag;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"bullet: {\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.5.9\r\n * @see {@link IAxisBulletEvents} for a list of available events\r\n * @see {@link IAxisBulletAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar AxisBullet = /** @class */function (_super) {\n __extends(AxisBullet, _super);\n function AxisBullet() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisBullet\";\n _this.location = 0.5;\n _this.isMeasured = false;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisBullet.prototype, \"location\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"location\");\n },\n /**\r\n * Relative position within cell/range.\r\n *\r\n * Value range is from from `0` (beginning) to `1` (end).\r\n *\r\n * NOTE: `location` is relative to the parent axis range's scope, i.e.\r\n * between its `date` and `endDate` for [[DateAxis]], or `value`/`endValue`\r\n * ([[ValueAxis]]), or `category`/`endCategory` ([[categoryAxis]]).\r\n *\r\n * ```TypeScript\r\n * let range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * let bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * let flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JavaScript\r\n * var range = dateAxis.axisRanges.create();\r\n * range.date = new Date(2018, 0, 5);\r\n * range.endDate = new Date(2018, 0, 6);\r\n *\r\n * var bullet = new am4charts.AxisBullet();\r\n * bullet.location = 1;\r\n *\r\n * var flag = bullet.createChild(am4plugins_bullets.FlagBullet);\r\n * flag.label.text = \"Hello\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * // ...\r\n * \"axisRanges\": [{\r\n * \"date\": new Date(2018, 0, 5),\r\n * \"endDate\": new Date(2018, 0, 6),\r\n * \"bullet: {\r\n * \"type\": \"AxisBullet\",\r\n * \"location\": 1,\r\n * \"children\": [{\r\n * \"type\": \"FlagBullet\",\r\n * \"label\": {\r\n * \"text\": \"Hello\"\r\n * }\r\n * }]\r\n * }\r\n * }]\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0.5\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"location\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n AxisBullet.prototype.setDisabled = function (value) {\n var changed = _super.prototype.setDisabled.call(this, value);\n if (this.axis) {\n this.axis.invalidateDataItems();\n }\n return changed;\n };\n return AxisBullet;\n}(Container);\nexport { AxisBullet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisBullet\"] = AxisBullet;\n//# sourceMappingURL=AxisBullet.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRenderer } from \"./AxisRenderer\";\nimport { WavedLine } from \"../../core/elements/WavedLine\";\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\nimport { registry } from \"../../core/Registry\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\nimport { AxisBullet } from \"./AxisBullet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A renderer for vertical axis.\r\n *\r\n * @see {@link IAxisRendererYEvents} for a list of available events\r\n * @see {@link IAxisRendererYAdapters} for a list of available Adapters\r\n */\nvar AxisRendererY = /** @class */function (_super) {\n __extends(AxisRendererY, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererY() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisRendererY\";\n _this.minGridDistance = 40;\n _this.opposite = false;\n _this.height = percent(100);\n _this.labels.template.verticalCenter = \"middle\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * @ignore\r\n */\n AxisRendererY.prototype.setAxis = function (axis) {\n _super.prototype.setAxis.call(this, axis);\n axis.layout = \"horizontal\";\n };\n /**\r\n * @ignore\r\n */\n AxisRendererY.prototype.updateGridContainer = function () {\n var axis = this.axis;\n if (axis) {\n var gridContainer = this.gridContainer;\n gridContainer.y = axis.pixelY;\n gridContainer.height = axis.axisLength;\n }\n };\n /**\r\n * @ignore\r\n */\n AxisRendererY.prototype.toAxisPosition = function (value) {\n var axis = this.axis;\n if (axis) {\n var inversedPosition = 1 - value;\n var relativePositionSprite = axis.relativePositionSprite;\n var y = axis.pixelY;\n if (relativePositionSprite) {\n y = $utils.spritePointToSprite({\n x: 0,\n y: this.pixelY\n }, this.parent, relativePositionSprite).y;\n } else {\n relativePositionSprite = axis.parent;\n }\n if (relativePositionSprite) {\n var relativeY = y / relativePositionSprite.innerHeight;\n var relativeHeight = axis.axisLength / relativePositionSprite.innerHeight;\n return 1 - (inversedPosition - relativeY) / relativeHeight;\n }\n }\n return value;\n };\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRendererY.prototype.processRenderer = function () {\n _super.prototype.processRenderer.call(this);\n var axis = this.axis;\n if (axis) {\n var title = axis.title;\n title.valign = \"middle\";\n if (!(axis.height instanceof Percent)) {\n axis.height = percent(100);\n }\n if (this.opposite) {\n title.rotation = 90;\n this.line.toBack();\n title.toFront();\n } else {\n title.rotation = -90;\n title.toBack();\n this.line.toFront();\n }\n }\n };\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRendererY.prototype.updateTooltip = function () {\n var axis = this.axis;\n if (axis) {\n var bigNum = 2000;\n var bbx = 0;\n var bby = 0;\n var bbw = bigNum;\n var bbh = this.axisLength;\n // right\n if (this.opposite) {\n if (this.inside) {\n bbx = -bigNum;\n bbw = bigNum;\n }\n }\n // left\n else {\n if (!this.inside) {\n bbx = -bigNum;\n bbw = bigNum;\n }\n }\n this.axis.updateTooltip(\"horizontal\", {\n x: bbx,\n y: bby,\n width: bbw,\n height: bbh\n });\n }\n };\n Object.defineProperty(AxisRendererY.prototype, \"axisLength\", {\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\n get: function () {\n var axis = this.axis;\n return axis.measuredHeight - axis.pixelPaddingTop - axis.pixelPaddingBottom || 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\n AxisRendererY.prototype.positionToPoint = function (position, position2) {\n return {\n x: 0,\n y: this.positionToCoordinate(position)\n };\n };\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\n AxisRendererY.prototype.pointToPosition = function (point) {\n return this.coordinateToPosition(point.y, point.x);\n };\n /**\r\n * Converts a coordinate in pixels to a relative position. (0-1)\r\n *\r\n * @param coordinate Coordinate (px)\r\n * @param coordinate2 Coordinate of a second axis, only needed for complex axes systems, like timeline (px)\r\n * @return Position (0-1)\r\n */\n AxisRendererY.prototype.coordinateToPosition = function (coordinate, coordinate2) {\n var position;\n var axis = this.axis;\n var axisFullLength = axis.axisFullLength;\n if (axis.renderer.inversed) {\n position = 1 - axis.start - coordinate / axisFullLength;\n } else {\n position = coordinate / axisFullLength + (1 - axis.end);\n }\n return $math.round(position, 5);\n };\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\n AxisRendererY.prototype.getPositionRangePath = function (startPosition, endPosition) {\n var y1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\n var y2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\n var h = Math.abs(y2 - y1);\n var w = this.getWidth();\n var y = Math.min(y1, y2);\n var x = 0;\n return $path.rectToPath({\n x: x,\n y: y,\n width: w,\n height: h\n }, true);\n };\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererY.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n //\tpoint.y = $utils.spritePointToSprite({ x: 0, y: point.y }, this, this.gridContainer).y;\n grid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: this.getWidth(),\n y: 0\n });\n this.positionItem(grid, point);\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererY.prototype.updateTickElement = function (tick, position, endPosition) {\n position = position + (endPosition - position) * tick.location;\n var point = this.positionToPoint(position);\n var tickLength = tick.length;\n try {\n $utils.used(this.axis.title.measuredWidth);\n } catch (_a) {\n // void\n }\n point.x = $utils.spritePointToSprite({\n x: this.line.pixelX,\n y: 0\n }, this.line.parent, this.gridContainer).x;\n if (!this.opposite) {\n tickLength *= tick.inside ? 1 : -1;\n } else {\n tickLength *= tick.inside ? -1 : 1;\n }\n tick.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: tickLength,\n y: 0\n });\n this.positionItem(tick, point);\n this.toggleVisibility(tick, position, 0, 1);\n };\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererY.prototype.updateAxisLine = function () {\n this.line.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: this.axisLength\n });\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererY.prototype.updateBaseGridElement = function () {\n _super.prototype.updateBaseGridElement.call(this);\n var axis = this.axis;\n var w = this.getWidth();\n var h = this.axisLength;\n var y = axis.basePoint.y;\n var baseGrid = this.baseGrid;\n if (y < -0.2 || y > h + 0.2) {\n baseGrid.hide(0);\n } else {\n var x = $utils.spritePointToSprite({\n x: 0,\n y: 0\n }, this.gridContainer, baseGrid.parent).x;\n baseGrid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: 0\n });\n baseGrid.moveTo({\n x: x,\n y: y\n });\n baseGrid.show(0);\n }\n };\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRendererY.prototype.updateLabelElement = function (label, position, endPosition, location) {\n if (!$type.hasValue(location)) {\n location = label.location;\n }\n position = position + (endPosition - position) * location;\n label.isMeasured = !label.inside;\n var point = this.positionToPoint(position);\n var horizontalCenter;\n var deltaX = 0;\n var maxWidth = this.gridContainer.maxWidth;\n if (this.opposite) {\n if (label.inside) {\n horizontalCenter = \"right\";\n if (label.align == \"left\") {\n deltaX = -maxWidth;\n horizontalCenter = \"left\";\n }\n if (label.align == \"center\") {\n deltaX = -maxWidth / 2;\n horizontalCenter = \"middle\";\n }\n } else {\n horizontalCenter = \"left\";\n }\n point.x = 0 + deltaX;\n } else {\n if (label.inside) {\n horizontalCenter = \"left\";\n if (label.align == \"right\") {\n deltaX = maxWidth;\n horizontalCenter = \"right\";\n }\n if (label.align == \"center\") {\n deltaX = maxWidth / 2;\n horizontalCenter = \"middle\";\n }\n } else {\n horizontalCenter = \"right\";\n }\n point.x = this.measuredWidth + deltaX;\n }\n if (label.rotation == 0) {\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\n label.horizontalCenter = horizontalCenter;\n }\n this.positionItem(label, point);\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\n };\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\n AxisRendererY.prototype.updateBreakElement = function (axisBreak) {\n _super.prototype.updateBreakElement.call(this, axisBreak);\n var startLine = axisBreak.startLine;\n var endLine = axisBreak.endLine;\n var fillShape = axisBreak.fillShape;\n var startPoint = axisBreak.startPoint;\n var endPoint = axisBreak.endPoint;\n var x1 = axisBreak.pixelMarginLeft;\n var x2 = this.getWidth() - axisBreak.pixelMarginLeft - axisBreak.pixelMarginRight;\n startPoint.y = $math.fitToRange(startPoint.y, -1, this.axisLength + 1);\n endPoint.y = $math.fitToRange(endPoint.y, -1, this.axisLength + 1);\n if (startPoint.y == endPoint.y && (startPoint.y < 0 || startPoint.y > this.axisLength)) {\n axisBreak.fillShape.__disabled = true;\n } else {\n axisBreak.fillShape.__disabled = false;\n }\n var w = Math.abs(x2 - x1);\n startLine.x = x1;\n startLine.height = 0;\n startLine.width = w;\n endLine.x = x1;\n endLine.height = 0;\n endLine.width = w;\n fillShape.width = w;\n fillShape.height = Math.abs(endPoint.y - startPoint.y);\n fillShape.x = x1;\n fillShape.y = endPoint.y;\n };\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\n AxisRendererY.prototype.createBreakSprites = function (axisBreak) {\n axisBreak.startLine = new WavedLine();\n axisBreak.endLine = new WavedLine();\n var wavedRectangle = new WavedRectangle();\n wavedRectangle.setWavedSides(true, false, true, false);\n axisBreak.fillShape = wavedRectangle;\n };\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\n AxisRendererY.prototype.positionToCoordinate = function (position) {\n var coordinate;\n var axis = this.axis;\n var axisFullLength = axis.axisFullLength;\n if (!axis.renderer.inversed) {\n coordinate = (axis.end - position) * axisFullLength;\n } else {\n coordinate = (position - axis.start) * axisFullLength;\n }\n return coordinate;\n };\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererY.prototype.updateBullet = function (bullet, position, endPosition) {\n var location = 0.5;\n if (bullet instanceof AxisBullet) {\n location = bullet.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n point.x = $utils.spritePointToSprite({\n x: this.line.pixelX,\n y: 0\n }, this.line.parent, this.gridContainer).x;\n this.positionItem(bullet, point);\n this.toggleVisibility(bullet, position, 0, 1);\n };\n return AxisRendererY;\n}(AxisRenderer);\nexport { AxisRendererY };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRendererY\"] = AxisRendererY;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.widthS,\n state: function (target, stateId) {\n if (target instanceof AxisRendererY) {\n var state = target.states.create(stateId);\n state.properties.inside = true;\n state.properties.maxLabelPosition = 0.9;\n state.properties.minLabelPosition = 0.1;\n return state;\n }\n return null;\n }\n});\n/**\r\n * Disable labels altogather on very small charts\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.widthXS,\n state: function (target, stateId) {\n if (target instanceof AxisRendererY) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=AxisRendererY.js.map","/**\r\n * A module which defines functionality related to Value Axis Break.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisBreak } from \"./AxisBreak\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base class to define \"breaks\" on value axis.\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * when comparing columns with relatively similar values, it would make sense\r\n * to cut out their mid section, so that their tip differences are more\r\n * prominent.\r\n *\r\n * @see {@link IValueAxisBreakEvents} for a list of available events\r\n * @see {@link IValueAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar ValueAxisBreak = /** @class */function (_super) {\n __extends(ValueAxisBreak, _super);\n /**\r\n * Constructor\r\n */\n function ValueAxisBreak() {\n var _this = _super.call(this) || this;\n _this.className = \"ValueAxisBreak\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ValueAxisBreak.prototype, \"startPosition\", {\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\n get: function () {\n if (this.axis) {\n return this.axis.valueToPosition(this.adjustedStartValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxisBreak.prototype, \"endPosition\", {\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\n get: function () {\n if (this.axis) {\n return this.axis.valueToPosition(this.adjustedEndValue);\n }\n },\n enumerable: true,\n configurable: true\n });\n return ValueAxisBreak;\n}(AxisBreak);\nexport { ValueAxisBreak };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ValueAxisBreak\"] = ValueAxisBreak;\n//# sourceMappingURL=ValueAxisBreak.js.map","/**\r\n * Value Axis module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Axis, AxisDataItem } from \"./Axis\";\nimport { AxisRendererY } from \"./AxisRendererY\";\nimport { MultiDisposer } from \"../../core/utils/Disposer\";\nimport { registry } from \"../../core/Registry\";\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $utils from \"../../core/utils/Utils\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[ValueAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar ValueAxisDataItem = /** @class */function (_super) {\n __extends(ValueAxisDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ValueAxisDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ValueAxisDataItem\";\n _this.values.value = {};\n _this.values.endValue = {};\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ValueAxisDataItem.prototype, \"value\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values[\"value\"].value;\n },\n /**\r\n * A data point's numeric value.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"value\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxisDataItem.prototype, \"endValue\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values[\"endValue\"].value;\n },\n /**\r\n * Data point's numeric end value.\r\n *\r\n * @param value End value\r\n */\n set: function (value) {\n this.setValue(\"endValue\", value);\n },\n enumerable: true,\n configurable: true\n });\n return ValueAxisDataItem;\n}(AxisDataItem);\nexport { ValueAxisDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to create a value axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Monthly Sales\";\r\n * ```\r\n * ```JSON\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\",\r\n * \"title\": {\r\n * \"text\": \"Monthly Sales\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IValueAxisEvents} for a list of available Events\r\n * @see {@link IValueAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar ValueAxis = /** @class */function (_super) {\n __extends(ValueAxis, _super);\n /**\r\n * Constructor\r\n */\n function ValueAxis() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * [_stepDecimalPlaces description]\r\n *\r\n * @todo Description\r\n */\n _this._stepDecimalPlaces = 0;\n _this._prevStepDecimalPlaces = 0;\n _this._adjustLabelPrecision = true;\n /**\r\n * Base value for the axis.\r\n */\n _this._baseValue = 0;\n /**\r\n * Adjusted start in case we have breaks.\r\n *\r\n * @todo Description\r\n */\n _this._adjustedStart = 0;\n /**\r\n * Adjusted end in case we have breaks.\r\n *\r\n * @todo Description\r\n */\n _this._adjustedEnd = 1;\n _this._extremesChanged = false;\n _this._deltaMinMax = 1;\n _this._dsc = false;\n /**\r\n * As calculating totals is expensive operation and not often needed, we\r\n * don't do it by default.\r\n *\r\n * In case you use `totalPercent` or `total` in your charts, this must be set\r\n * to `true`.\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#100_stacks} For using `calculateTotals` for 100% stacked series.\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-strings/#Placeholders_for_numeric_values} For using `calculateTotals` in labels.\r\n */\n _this.calculateTotals = false;\n _this.className = \"ValueAxis\";\n // Set field name\n _this.axisFieldName = \"value\";\n // Set defaults\n _this.setPropertyValue(\"maxZoomFactor\", 1000);\n _this.setPropertyValue(\"extraMin\", 0);\n _this.setPropertyValue(\"extraMax\", 0);\n _this.setPropertyValue(\"strictMinMax\", false);\n _this.setPropertyValue(\"maxPrecision\", Number.MAX_VALUE);\n _this.setPropertyValue(\"adjustLabelPrecision\", true);\n _this.setPropertyValue(\"extraTooltipPrecision\", 0);\n _this.keepSelection = false;\n _this.includeRangesInMinMax = false;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Holds reference to a function that accepts a DataItem as parameter.\r\n *\r\n * It can either return a fill opacity for a fill, or manipulate data item\r\n * directly, to create various highlighting scenarios.\r\n */\n ValueAxis.prototype.fillRule = function (dataItem) {\n var value = dataItem.value;\n var axis = dataItem.component;\n if (!dataItem.axisFill.disabled) {\n // rounding in left to solve floating point number\n if ($math.round(value / axis.step / 2, 5) == Math.round(value / axis.step / 2)) {\n dataItem.axisFill.__disabled = true;\n } else {\n dataItem.axisFill.__disabled = false;\n }\n }\n };\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n ValueAxis.prototype.createDataItem = function () {\n return new ValueAxisDataItem();\n };\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\n ValueAxis.prototype.createAxisBreak = function () {\n return new ValueAxisBreak();\n };\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n * This is a placeholder to override for extending classes.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n ValueAxis.prototype.dataChangeUpdate = function () {\n this.clearCache();\n if (!this.keepSelection) {\n if (this._start != 0 || this._end != 1) {\n this._start = 0;\n this._end = 1;\n this.dispatchImmediately(\"startendchanged\");\n }\n } else {\n if (this._start != 0) {\n this.dispatchImmediately(\"startchanged\");\n }\n if (this._end != 1) {\n this.dispatchImmediately(\"endchanged\");\n }\n if (this._start != 0 || this._end != 1) {\n this.dispatchImmediately(\"startendchanged\");\n }\n }\n this._maxZoomed = this._maxDefined;\n this._minZoomed = this._minDefined;\n this._maxAdjusted = this._maxDefined;\n this._minAdjusted = this._minDefined;\n };\n /**\r\n * Processes data items of the related Series.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ValueAxis.prototype.processSeriesDataItems = function () {\n // @todo: add some boolean (maybe autodedect) if we need these calculations or not. this place uses a lot of cpu\n if (this.calculateTotals) {\n var series = this.series.getIndex(0);\n var startIndex = series.startIndex;\n if (series.dataItems.length > 0) {\n if (startIndex > 0) {\n startIndex--;\n }\n var endIndex = series.endIndex;\n if (endIndex < series.dataItems.length) {\n endIndex++;\n }\n var _loop_1 = function (i) {\n // This has to be `var` in order to avoid garbage collection\n var total = {};\n var sum = {};\n this_1.series.each(function (series) {\n if (!series.excludeFromTotal) {\n var dataItem_1 = series.dataItems.getIndex(i);\n if (dataItem_1) {\n $object.each(dataItem_1.values, function (key) {\n var value = dataItem_1.values[key].workingValue; // can not use getWorkingValue here!\n if ($type.isNumber(value)) {\n if (!$type.isNumber(total[key])) {\n total[key] = Math.abs(value);\n } else {\n total[key] += Math.abs(value);\n }\n if (!$type.isNumber(sum[key])) {\n sum[key] = value;\n } else {\n sum[key] += value;\n }\n }\n });\n }\n }\n });\n this_1.series.each(function (series) {\n if (!series.excludeFromTotal) {\n var dataItem_2 = series.dataItems.getIndex(i);\n if (dataItem_2) {\n $object.each(dataItem_2.values, function (key) {\n var value = dataItem_2.values[key].workingValue; // can not use getWorkingValue here!\n if ($type.isNumber(value)) {\n dataItem_2.setCalculatedValue(key, total[key], \"total\");\n dataItem_2.setCalculatedValue(key, 100 * value / total[key], \"totalPercent\");\n dataItem_2.setCalculatedValue(key, sum[key], \"sum\");\n }\n });\n }\n }\n });\n };\n var this_1 = this;\n // This has to be `var` in order to avoid garbage collection\n for (var i = startIndex; i < endIndex; ++i) {\n _loop_1(i);\n }\n }\n }\n };\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\n ValueAxis.prototype.validate = function () {\n if (this.axisLength <= 0) {\n return;\n }\n _super.prototype.validate.call(this);\n this.getMinMax();\n if (!$type.isNumber(this._minAdjusted)) {\n this.dataItems.each(function (dataItem) {\n dataItem.value = null;\n });\n }\n this.fixAxisBreaks();\n this.calculateZoom();\n this.validateAxisElements();\n this.validateAxisRanges();\n this.validateBreaks();\n this.hideUnusedDataItems();\n this.renderer.invalidateLayout();\n // hide too close\n //this.hideTooCloseDataItems();\n };\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ValueAxis.prototype.calculateZoom = function () {\n if ($type.isNumber(this.min) && $type.isNumber(this.max)) {\n var min = this.positionToValue(this.start);\n var max = this.positionToValue(this.end);\n var differece = this.adjustDifference(min, max);\n var minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\n var stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\n this._stepDecimalPlaces = stepDecimalPlaces;\n min = $math.round(min, stepDecimalPlaces);\n max = $math.round(max, stepDecimalPlaces);\n minMaxStep = this.adjustMinMax(min, max, differece, this._gridCount, true);\n var step = minMaxStep.step;\n if (this.syncWithAxis) {\n var calculated = this.getCache(min + \"-\" + max);\n if ($type.isNumber(calculated)) {\n step = calculated;\n }\n } else {\n min = minMaxStep.min;\n max = minMaxStep.max;\n }\n if (this._minZoomed != min || this._maxZoomed != max || this._step != step || this._dsc) {\n this._dsc = false;\n this._minZoomed = min;\n this._maxZoomed = max;\n this._step = step;\n this.dispatchImmediately(\"selectionextremeschanged\");\n }\n }\n };\n ValueAxis.prototype.fixSmallStep = function (step) {\n if (1 + step == 1) {\n step *= 2;\n return this.fixSmallStep(step);\n }\n return step;\n };\n /**\r\n * Validates Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n ValueAxis.prototype.validateAxisElements = function () {\n var _this = this;\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\n // first regular items\n var value_1 = this.minZoomed - this._step * 2;\n if (!this.logarithmic) {\n value_1 = Math.floor(value_1 / this._step) * this._step;\n } else {\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\n if (differencePower > 1) {\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E);\n } else {\n value_1 = Math.floor(this.minZoomed / this._step) * this._step;\n if (value_1 == 0) {\n value_1 = this.minZoomed;\n }\n }\n }\n var maxZoomed = this._maxZoomed + this._step;\n this.resetIterators();\n var dataItemsIterator_1 = this._dataItemsIterator;\n if (this._step == 0) {\n return;\n }\n this._step = this.fixSmallStep(this._step);\n var i = 0;\n var precisionChanged = this._prevStepDecimalPlaces != this._stepDecimalPlaces;\n this._prevStepDecimalPlaces = this._stepDecimalPlaces;\n while (value_1 <= maxZoomed) {\n var axisBreak = this.isInBreak(value_1);\n if (!axisBreak) {\n var dataItem = dataItemsIterator_1.find(function (x) {\n return x.value === value_1;\n });\n if (dataItem.__disabled) {\n dataItem.__disabled = false;\n }\n //this.processDataItem(dataItem);\n this.appendDataItem(dataItem);\n dataItem.axisBreak = undefined;\n if (dataItem.value != value_1 || precisionChanged) {\n dataItem.value = value_1;\n dataItem.text = this.formatLabel(value_1);\n if (dataItem.label && dataItem.label.invalid) {\n dataItem.label.validate();\n }\n if (dataItem.value >= this.min && dataItem.value <= this.max) {\n if (dataItem.label) {\n if (this.axisLetter == \"Y\" && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth || this.axisLetter == \"X\" && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight) {\n this.ghostLabel.text = dataItem.label.currentText;\n this.ghostLabel.validate();\n }\n }\n }\n }\n this.validateDataElement(dataItem);\n }\n i++;\n var oldValue = value_1;\n if (!this.logarithmic) {\n value_1 += this._step;\n } else {\n var differencePower = Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E;\n if (differencePower > 1) {\n value_1 = Math.pow(10, Math.log(this.min) * Math.LOG10E + i);\n } else {\n value_1 += this._step;\n }\n }\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(this._step)) * Math.LOG10E));\n if (stepPower < 1) {\n // exponent is less then 1 too. Count decimals of exponent\n var decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\n decCount = Math.min(13, decCount);\n // round value to avoid floating point issues\n value_1 = $math.round(value_1, decCount);\n // ceil causes problems: https://codepen.io/team/amcharts/pen/XWMjZwy?editors=1010\n if (oldValue == value_1) {\n value_1 = maxZoomed;\n break;\n }\n }\n }\n var axisBreaks = this._axisBreaks;\n if (axisBreaks) {\n // breaks later\n var renderer_1 = this.renderer;\n $iter.each(axisBreaks.iterator(), function (axisBreak) {\n if (axisBreak.breakSize > 0) {\n // only add grid if gap is bigger then minGridDistance\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance) {\n var breakValue_1 = axisBreak.adjustedMin;\n while (breakValue_1 <= axisBreak.adjustedMax) {\n if (breakValue_1 >= axisBreak.adjustedStartValue && breakValue_1 <= axisBreak.adjustedEndValue) {\n var dataItem = dataItemsIterator_1.find(function (x) {\n return x.value === breakValue_1;\n });\n if (dataItem.__disabled) {\n dataItem.__disabled = false;\n }\n //this.processDataItem(dataItem);\n _this.appendDataItem(dataItem);\n dataItem.axisBreak = axisBreak;\n if (dataItem.value != breakValue_1) {\n dataItem.value = breakValue_1;\n dataItem.text = _this.formatLabel(breakValue_1);\n if (dataItem.label && dataItem.label.invalid) {\n dataItem.label.validate();\n }\n }\n _this.validateDataElement(dataItem);\n }\n breakValue_1 += axisBreak.adjustedStep;\n }\n }\n }\n });\n }\n }\n };\n /**\r\n * Validates axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\n ValueAxis.prototype.validateDataElement = function (dataItem) {\n _super.prototype.validateDataElement.call(this, dataItem);\n //dataItem.__disabled = false;\n dataItem.itemIndex = this._axisItemCount;\n this._axisItemCount++;\n var renderer = this.renderer;\n var value = dataItem.value;\n var endValue = dataItem.endValue;\n var position = this.valueToPosition(value);\n dataItem.position = position;\n var endPosition = position;\n var fillEndPosition = this.valueToPosition(value + this._step);\n if ($type.isNumber(endValue)) {\n endPosition = this.valueToPosition(endValue);\n fillEndPosition = endPosition;\n }\n // this point is needed to calculate distance to satisfy minGridDistance\n dataItem.point = renderer.positionToPoint(position);\n var tick = dataItem.tick;\n if (tick && !tick.disabled) {\n renderer.updateTickElement(tick, position, endPosition);\n }\n var grid = dataItem.grid;\n if (grid && !grid.disabled) {\n renderer.updateGridElement(grid, position, endPosition);\n }\n var label = dataItem.label;\n if (label && !label.disabled) {\n renderer.updateLabelElement(label, position, endPosition);\n }\n var fill = dataItem.axisFill;\n if (fill && !fill.disabled) {\n renderer.updateFillElement(fill, position, fillEndPosition);\n if (!dataItem.isRange) {\n this.fillRule(dataItem);\n }\n }\n if (dataItem.bullet) {\n renderer.updateBullet(dataItem.bullet, position, endPosition);\n }\n var mask = dataItem.mask;\n if (mask) {\n renderer.updateFillElement(mask, position, fillEndPosition);\n }\n };\n /**\r\n * Formats the value according to axis' own [[NumberFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\n ValueAxis.prototype.formatLabel = function (value) {\n if (this.adjustLabelPrecision && value != 0) {\n return this.numberFormatter.format(value, undefined, this._stepDecimalPlaces);\n } else {\n return this.numberFormatter.format(value);\n }\n };\n Object.defineProperty(ValueAxis.prototype, \"basePoint\", {\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\n get: function () {\n var baseValue = this.baseValue;\n var position = this.valueToPosition(baseValue);\n var basePoint = this.renderer.positionToPoint(position);\n return basePoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"baseValue\", {\n /**\r\n * @return base value\r\n */\n get: function () {\n var baseValue = this._baseValue;\n if (this.logarithmic) {\n baseValue = this.min;\n }\n if (!this._adapterO) {\n return baseValue;\n } else {\n return this._adapterO.apply(\"baseValue\", baseValue);\n }\n },\n /**\r\n * A base value.\r\n *\r\n * This is a threshold value that will divide \"positive\" and \"negative\"\r\n * value ranges.\r\n *\r\n * Other scale-related functionality also depend on base value. E.g. stacks,\r\n * value-dependent coloring, etc.\r\n *\r\n * @param value Base value\r\n */\n set: function (value) {\n this._baseValue = value;\n this.invalidateLayout();\n this.invalidateSeries();\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts a numeric value to relative position on axis\r\n *\r\n * An alias to `valueToPosition()`.\r\n *\r\n * @param value Value\r\n * @return Position\r\n */\n ValueAxis.prototype.anyToPosition = function (value) {\n return this.valueToPosition(value);\n };\n /**\r\n * Converts a numeric value to orientation point (x, y, angle) on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\n ValueAxis.prototype.valueToPoint = function (value) {\n var position = this.valueToPosition(value);\n var point = this.renderer.positionToPoint(position);\n var angle = this.renderer.positionToAngle(position);\n return {\n x: point.x,\n y: point.y,\n angle: angle\n };\n };\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\n ValueAxis.prototype.anyToPoint = function (value) {\n return this.valueToPoint(value);\n };\n /**\r\n * Converts a numeric value to relative position on axis.\r\n *\r\n * @param value Value\r\n * @return relative position\r\n */\n ValueAxis.prototype.valueToPosition = function (value) {\n if ($type.isNumber(value)) {\n // todo: think if possible to take previous value and do not go through all previous breaks\n var min_1 = this.min;\n var max_1 = this.max;\n if ($type.isNumber(min_1) && $type.isNumber(max_1)) {\n var difference = this._difference;\n var axisBreaks = this._axisBreaks;\n if (axisBreaks && axisBreaks.length > 0) {\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\n var startValue = axisBreak.adjustedStartValue;\n var endValue = axisBreak.adjustedEndValue;\n if ($type.isNumber(startValue) && $type.isNumber(endValue)) {\n if (value < startValue) {\n return false;\n }\n if ($math.intersect({\n start: startValue,\n end: endValue\n }, {\n start: min_1,\n end: max_1\n })) {\n // todo: check this once and set some flag in axisBreak\n startValue = Math.max(startValue, min_1);\n endValue = Math.min(endValue, max_1);\n var breakSize = axisBreak.breakSize;\n // value to the right of break end\n if (value > endValue) {\n min_1 += (endValue - startValue) * (1 - breakSize); // todo: maybe this can be done differently?\n }\n // value to the left of break start\n else if (value < startValue) {}\n // value within break\n else {\n value = startValue + (value - startValue) * breakSize;\n }\n }\n }\n return true;\n });\n }\n var position = void 0;\n if (!this.logarithmic) {\n position = (value - min_1) / difference;\n } else {\n var treatZeroAs = this.treatZeroAs;\n if ($type.isNumber(treatZeroAs)) {\n if (value <= treatZeroAs) {\n value = treatZeroAs;\n }\n }\n position = (Math.log(value) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) / (Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E);\n }\n //position = $math.round(position, 10);\n return position;\n }\n }\n return 0;\n };\n /**\r\n * When fontSize of fontFamily changes we need to hard-invalidate all Labels of this container to position them properly.\r\n */\n ValueAxis.prototype.invalidateLabels = function () {\n _super.prototype.invalidateLabels.call(this);\n if (this.dataItems) {\n this.dataItems.each(function (dataItem) {\n dataItem.value = undefined;\n });\n this.invalidate();\n }\n };\n /**\r\n * Converts an relative position to a corresponding value within\r\n * axis' scale.\r\n *\r\n * @param position Position (px)\r\n * @return Value\r\n */\n ValueAxis.prototype.positionToValue = function (position) {\n var min = this.min;\n var max = this.max;\n if ($type.isNumber(min) && $type.isNumber(max)) {\n var difference_1 = max - min; //no need to adjust!\n var value_2 = null;\n var axisBreaks = this._axisBreaks;\n if (axisBreaks) {\n // in case we have some axis breaks\n if (axisBreaks.length > 0) {\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\n var breakStartPosition = axisBreak.startPosition;\n var breakEndPosition = axisBreak.endPosition;\n var breakStartValue = axisBreak.adjustedStartValue;\n var breakEndValue = axisBreak.adjustedEndValue;\n if ($type.isNumber(breakStartValue) && $type.isNumber(breakEndValue)) {\n if (breakStartValue > max) {\n return false;\n }\n if ($math.intersect({\n start: breakStartValue,\n end: breakEndValue\n }, {\n start: min,\n end: max\n })) {\n breakStartValue = $math.max(breakStartValue, min);\n breakEndValue = $math.min(breakEndValue, max);\n var breakSize = axisBreak.breakSize;\n difference_1 -= (breakEndValue - breakStartValue) * (1 - breakSize);\n // position to the right of break end\n if (position > breakEndPosition) {\n min += (breakEndValue - breakStartValue) * (1 - breakSize);\n }\n // position to the left of break start\n else if (position < breakStartPosition) {}\n // value within break\n else {\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\n value_2 = breakStartValue + breakPosition * (breakEndValue - breakStartValue);\n return false;\n }\n }\n return true;\n }\n });\n }\n }\n if (!$type.isNumber(value_2)) {\n if (this.logarithmic) {\n value_2 = Math.pow(Math.E, (position * (Math.log(this.max) * Math.LOG10E - Math.log(this.min) * Math.LOG10E) + Math.log(this.min) * Math.LOG10E) / Math.LOG10E);\n } else {\n value_2 = position * difference_1 + min;\n }\n }\n return value_2;\n }\n //}\n };\n /**\r\n * Converts an X coordinate to a relative value in axis' scale.\r\n *\r\n * @param x X (px)\r\n * @return Value\r\n */\n ValueAxis.prototype.xToValue = function (x) {\n return this.positionToValue(this.pointToPosition({\n x: x,\n y: 0\n }));\n };\n /**\r\n * Converts an Y coordinate to a relative value in axis' scale.\r\n *\r\n * @param y Y (px)\r\n * @return Value\r\n */\n ValueAxis.prototype.yToValue = function (y) {\n return this.positionToValue(this.pointToPosition({\n x: 0,\n y: y\n }));\n };\n /**\r\n * Converts pixel coordinates to a relative position. (0-1)\r\n *\r\n * @param point Coorinates (px)\r\n * @return Position (0-1)\r\n */\n ValueAxis.prototype.pointToPosition = function (point) {\n if (this.renderer instanceof AxisRendererY) {\n return 1 - this.renderer.pointToPosition(point);\n } else {\n return this.renderer.pointToPosition(point);\n }\n };\n /**\r\n * @ignore\r\n */\n ValueAxis.prototype.animateMinMax = function (min, max) {\n return this.animate([{\n property: \"_minAdjusted\",\n from: this._minAdjusted,\n to: min\n }, {\n property: \"_maxAdjusted\",\n from: this._maxAdjusted,\n to: max\n }], this.rangeChangeDuration, this.rangeChangeEasing);\n };\n /**\r\n * Calculates smallest and biggest value for the axis scale.\r\n * @ignore\r\n * @todo Description (review)\r\n */\n ValueAxis.prototype.getMinMax = function () {\n var _this = this;\n this.updateGridCount();\n var min = Number.POSITIVE_INFINITY;\n var max = Number.NEGATIVE_INFINITY;\n // only if min and max are not set from outside, we go through min and max influencers\n if (!$type.isNumber(this._minDefined) || !$type.isNumber(this._maxDefined)) {\n this.series.each(function (series) {\n if (!series.ignoreMinMax) {\n // check min\n var seriesMin = series.min(_this);\n if ($type.isNumber(seriesMin) && seriesMin < min) {\n min = seriesMin;\n }\n // check max\n var seriesMax = series.max(_this);\n if ($type.isNumber(seriesMax) && seriesMax > max) {\n max = seriesMax;\n }\n }\n });\n if (this.includeRangesInMinMax) {\n this.axisRanges.each(function (range) {\n if (!range.ignoreMinMax) {\n var minValue = $math.min(range.value, range.endValue);\n var maxValue = $math.max(range.value, range.endValue);\n if (minValue < min || !$type.isNumber(min)) {\n min = minValue;\n }\n if (maxValue > max || !$type.isNumber(max)) {\n max = maxValue;\n }\n }\n });\n }\n }\n if (this.logarithmic) {\n var treatZeroAs = this.treatZeroAs;\n if ($type.isNumber(treatZeroAs)) {\n if (min <= 0) {\n min = treatZeroAs;\n }\n }\n if (min <= 0) {\n this.raiseCriticalError(new Error(\"Logarithmic value axis can not have values <= 0.\"), true);\n }\n }\n if (min == 0 && max == 0) {\n max = 0.9;\n min = -0.9;\n }\n // if defined from outside\n if ($type.isNumber(this._minDefined)) {\n min = this._minDefined;\n }\n if ($type.isNumber(this._maxDefined)) {\n max = this._maxDefined;\n }\n if (this._adapterO) {\n min = this._adapterO.apply(\"min\", min);\n }\n if (this._adapterO) {\n max = this._adapterO.apply(\"max\", max);\n }\n if (!$type.isNumber(min) || !$type.isNumber(max)) {\n return;\n }\n this._minReal = min;\n this._maxReal = max;\n if (min == Number.POSITIVE_INFINITY) {\n min = undefined;\n }\n if (max == Number.NEGATIVE_INFINITY) {\n max = undefined;\n }\n var dif = this.adjustDifference(min, max); // previously it was max-min, but not worked well\n min = this.fixMin(min);\n max = this.fixMax(max);\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\n if (max - min <= 1 / Math.pow(10, 15)) {\n if (max - min != 0) {\n this._deltaMinMax = (max - min) / 2;\n } else {\n // the number by which we need to raise 10 to get difference\n var exponent = Math.log(Math.abs(max)) * Math.LOG10E;\n // here we find a number which is power of 10 and has the same count of numbers as difference has\n var power = Math.pow(10, Math.floor(exponent));\n // reduce this number by 10 times\n power = power / 10;\n this._deltaMinMax = power;\n }\n min -= this._deltaMinMax;\n max += this._deltaMinMax;\n }\n min -= (max - min) * this.extraMin;\n max += (max - min) * this.extraMax;\n var strict = this.strictMinMax;\n if ($type.isNumber(this._maxDefined)) {\n strict = true;\n }\n var minMaxStep = this.adjustMinMax(min, max, dif, this._gridCount, strict);\n min = minMaxStep.min;\n max = minMaxStep.max;\n dif = max - min; //new\n // do it for the second time (importat!)\n minMaxStep = this.adjustMinMax(min, max, max - min, this._gridCount, true);\n min = minMaxStep.min;\n max = minMaxStep.max;\n // return min max if strict\n if (this.strictMinMax) {\n if ($type.isNumber(this._minDefined)) {\n min = this._minDefined;\n } else {\n min = this._minReal;\n }\n if ($type.isNumber(this._maxDefined)) {\n max = this._maxDefined;\n } else {\n max = this._maxReal;\n }\n if (max - min <= 0.00000001) {\n min -= this._deltaMinMax;\n max += this._deltaMinMax;\n }\n min -= (max - min) * this.extraMin;\n max += (max - min) * this.extraMax;\n }\n if (this._adapterO) {\n min = this._adapterO.apply(\"min\", min);\n }\n if (this._adapterO) {\n max = this._adapterO.apply(\"max\", max);\n }\n this._step = minMaxStep.step;\n if (!$type.isNumber(min) && !$type.isNumber(max)) {\n this.start = 0;\n this.end = 1;\n this.renderer.labels.each(function (label) {\n label.dataItem.text = \"\";\n });\n }\n // checking isNumber is good when all series are hidden\n if ((this._minAdjusted != min || this._maxAdjusted != max) && $type.isNumber(min) && $type.isNumber(max)) {\n var animation = this._minMaxAnimation;\n if (this._extremesChanged && $type.isNumber(this._minAdjusted) && $type.isNumber(this._maxAdjusted) && this.inited) {\n if (animation && !animation.isFinished() && this._finalMax == max && this._finalMin == min) {\n return;\n } else {\n this._finalMin = min;\n this._finalMax = max;\n animation = this.animateMinMax(min, max);\n if (animation && !animation.isFinished()) {\n animation.events.on(\"animationprogress\", this.validateDataItems, this);\n animation.events.on(\"animationended\", function () {\n //this.validateDataItems();\n _this.series.each(function (series) {\n series.validate();\n });\n _this.validateDataItems();\n _this.handleSelectionExtremesChange();\n });\n this._minMaxAnimation = animation;\n } else {\n this.series.each(function (series) {\n series.invalidate();\n });\n }\n this.validateDataItems();\n this.dispatchImmediately(\"extremeschanged\");\n this.handleSelectionExtremesChange();\n }\n } else {\n if (animation && !animation.isFinished() && this._finalMax == max && this._finalMin == min) {\n return;\n } else {\n this._minAdjusted = min;\n this._maxAdjusted = max;\n this._finalMin = min;\n this._finalMax = max;\n this.invalidateDataItems();\n this.dispatchImmediately(\"extremeschanged\");\n }\n }\n }\n this._extremesChanged = false;\n this._difference = this.adjustDifference(min, max);\n };\n /**\r\n * Adjusts the minimum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\n ValueAxis.prototype.fixMin = function (value) {\n return value;\n };\n /**\r\n * Adjusts the maximum value.\r\n *\r\n * This is a placeholder method for extending classes to override.\r\n *\r\n * For numeric values this does nothing, however for more complex types, like\r\n * dates, it may be necessary to adjust.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\n ValueAxis.prototype.fixMax = function (value) {\n return value;\n };\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\n ValueAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\n // will fail if 0\n if (gridCount <= 1) {\n gridCount = 1;\n }\n gridCount = Math.round(gridCount);\n var initialMin = min;\n var initialMax = max;\n // in case min and max is the same, use max\n if (difference === 0) {\n difference = Math.abs(max);\n }\n // the number by which we need to raise 10 to get difference\n var exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\n // here we find a number which is power of 10 and has the same count of numbers as difference has\n var power = Math.pow(10, Math.floor(exponent));\n // reduce this number by 10 times\n power = power / 10;\n var extra = power;\n if (strictMode) {\n extra = 0;\n }\n if (!this.logarithmic) {\n // round down min\n if (strictMode) {\n min = Math.floor(min / power) * power;\n // round up max\n max = Math.ceil(max / power) * power;\n } else {\n min = Math.ceil(min / power) * power - extra;\n // round up max\n max = Math.floor(max / power) * power + extra;\n }\n // don't let min go below 0 if real min is >= 0\n if (min < 0 && initialMin >= 0) {\n min = 0;\n }\n // don't let max go above 0 if real max is <= 0\n if (max > 0 && initialMax <= 0) {\n max = 0;\n }\n } else {\n if (min <= 0) {\n //throw Error(\"Logarithmic value axis can not have values <= 0.\");\n min = this.baseValue;\n }\n // @todo: think of a better way or to restrict zooming when no series are selected\n if (min == Infinity) {\n min = 1;\n }\n if (max == -Infinity) {\n max = 10;\n }\n if (this.strictMinMax) {\n if (this._minDefined > 0) {\n min = this._minDefined;\n } else {\n min = min;\n }\n if (this._maxDefined > 0) {\n max = max;\n }\n } else {\n min = Math.pow(10, Math.floor(Math.log(Math.abs(min)) * Math.LOG10E));\n max = Math.pow(10, Math.ceil(Math.log(Math.abs(max)) * Math.LOG10E));\n }\n }\n // repeat diff, exponent and power again with rounded values\n //difference = this.adjustDifference(min, max);\n /*\r\n if(min > initialMin){\r\n min = initialMin;\r\n }\r\n if(max < initialMax){\r\n max = initialMax;\r\n }\r\n */\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\n power = Math.pow(10, Math.floor(exponent));\n power = power / 10;\n // approximate difference between two grid lines\n var step = Math.ceil(difference / gridCount / power) * power;\n var stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\n // TODO: in v3 I had fixStepE here, ommiting it for a while, need to think about other solution\n // the step should divide by 2, 5, and 10.\n var stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\n if (stepDivisor > 5) {\n stepDivisor = 10;\n } else if (stepDivisor <= 5 && stepDivisor > 2) {\n stepDivisor = 5;\n }\n // now get real step\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\n if (this.maxPrecision < Number.MAX_VALUE && step != $math.ceil(step, this.maxPrecision)) {\n step = $math.ceil(step, this.maxPrecision);\n }\n var decCount = 0;\n // in case numbers are smaller than 1\n if (stepPower < 1) {\n // exponent is less then 1 too. Count decimals of exponent\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\n // round step\n step = $math.round(step, decCount);\n }\n if (!this.logarithmic) {\n // final min and max\n var minCount = Math.floor(min / step);\n min = $math.round(step * minCount, decCount);\n var maxCount = void 0;\n if (!strictMode) {\n maxCount = Math.ceil(max / step);\n } else {\n maxCount = Math.floor(max / step);\n }\n if (maxCount == minCount) {\n maxCount++;\n }\n max = $math.round(step * maxCount, decCount);\n if (max < initialMax) {\n max = max + step;\n }\n if (min > initialMin) {\n min = min - step;\n }\n }\n return {\n min: min,\n max: max,\n step: step\n };\n };\n Object.defineProperty(ValueAxis.prototype, \"min\", {\n /**\r\n * @return Min value\r\n */\n get: function () {\n var min = this._minAdjusted;\n if (!$type.isNumber(min)) {\n min = this._minDefined;\n }\n return min;\n },\n /**\r\n * A minimum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Min value\r\n */\n set: function (value) {\n if (this._minDefined != value) {\n this._minDefined = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"minDefined\", {\n /**\r\n * Min value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Min value\r\n */\n get: function () {\n return this._minDefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"maxDefined\", {\n /**\r\n * Max value as defined by user's code, not auto-calculated.\r\n *\r\n * @readonly\r\n * @return Man value\r\n */\n get: function () {\n return this._maxDefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"extraMin\", {\n /**\r\n * @return {number}\r\n */\n get: function () {\n return this.getPropertyValue(\"extraMin\");\n },\n /**\r\n * Allows relatively adjusting minimum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 50 to 200 because\r\n * we asked to expand minimum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"extraMin\", value)) {\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"extraMax\", {\n /**\r\n * @return Min multiplier\r\n */\n get: function () {\n return this.getPropertyValue(\"extraMax\");\n },\n /**\r\n * Allows relatively adjusting maximum value of the axis' scale.\r\n *\r\n * The value is relative to the actual range of values currently displayed\r\n * on the axis.\r\n *\r\n * E.g.: 0.5 will mean half of the current range. If we have axis displaying\r\n * from 100 to 200, we will now have axis displaying from 100 to 250 because\r\n * we asked to expand maximum value by 50% (0.5).\r\n *\r\n * NOTE: this setting is not compatible with `strictMinMax`.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"extraMax\", value)) {\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"step\", {\n /**\r\n * Current calculated delta in values between two adjacent grid lines (step).\r\n *\r\n * This is a read-only value and cannot be used to set actual step.\r\n *\r\n * @readonly\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/positioning-axis-elements/#Setting_the_density_of_the_the_grid_labels} For more information about modifying density of labels\r\n * @return [description]\r\n */\n get: function () {\n return this._step;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"max\", {\n /**\r\n * @return Max value\r\n */\n get: function () {\n var max = this._maxAdjusted;\n if (!$type.isNumber(max)) {\n max = this._maxDefined;\n }\n return max;\n },\n /**\r\n * A maximum value for the axis scale.\r\n *\r\n * This value might be auto-adjusted by the Axis in order to accomodate the\r\n * grid nicely, i.e. plot area is divided by grid in nice equal cells.\r\n *\r\n * The above might be overridden by `strictMinMax` which will force exact\r\n * user-defined min and max values to be used for scale.\r\n *\r\n * @param value Max value\r\n */\n set: function (value) {\n if (this._maxDefined != value) {\n this._maxDefined = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"adjustLabelPrecision\", {\n /**\r\n * @return Adjust precision\r\n */\n get: function () {\n return this.getPropertyValue(\"adjustLabelPrecision\");\n },\n /**\r\n * By default the axis will adjust precision of all numbers to match number\r\n * of decimals in all its labels, e.g.: `1.0`, `1.5`, `2.0`.\r\n *\r\n * To disable set `adjustLabelPrecision` to `false`, to use whatever other\r\n * precision or number format settings are set.\r\n *\r\n * IMPORTANT: This setting will be ignored if your number format uses\r\n * modifiers, e.g. `\"#a\"`.\r\n *\r\n * @default true\r\n * @since 4.9.14\r\n * @param value Adjust precision\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"adjustLabelPrecision\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Used for the Series to register itself as the user of this Axis.\r\n *\r\n * This will also decorate both the Series and Axis with event handlers, used\r\n * to redraw on Axis position/zoom change.\r\n *\r\n * A disposer for those events is returned, so that they can be disposed\r\n * together with Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param series Series\r\n * @return Disposer for events\r\n */\n ValueAxis.prototype.registerSeries = function (series) {\n return new MultiDisposer([_super.prototype.registerSeries.call(this, series), series.events.on(\"extremeschanged\", this.handleExtremesChange, this, false), series.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false), this.events.on(\"extremeschanged\", series.invalidate, series, false)]);\n };\n /**\r\n * Perform tasks after Axis zoom.\r\n */\n ValueAxis.prototype.handleSelectionExtremesChange = function () {\n var _this = this;\n var selectionMin;\n var selectionMax;\n var allHidden = true;\n $iter.each(this.series.iterator(), function (series) {\n if (!series.ignoreMinMax && !series.isHidden && !series.outOfRange) {\n if (series.visible && !series.isHiding) {\n allHidden = false;\n }\n var seriesSelectionMin = series.selectionMin(_this);\n var seriesSelectionMax = series.selectionMax(_this);\n if ($type.isNumber(seriesSelectionMin)) {\n if (!$type.isNumber(selectionMin) || seriesSelectionMin < selectionMin) {\n selectionMin = seriesSelectionMin;\n }\n }\n // check max\n if ($type.isNumber(seriesSelectionMax)) {\n if (!$type.isNumber(selectionMax) || seriesSelectionMax > selectionMax) {\n selectionMax = seriesSelectionMax;\n }\n }\n }\n });\n if (this.includeRangesInMinMax) {\n this.axisRanges.each(function (range) {\n if (!range.ignoreMinMax) {\n var minValue = $math.min(range.value, range.endValue);\n var maxValue = $math.max(range.value, range.endValue);\n if (minValue < selectionMin) {\n selectionMin = minValue;\n }\n if (maxValue > selectionMax) {\n selectionMax = maxValue;\n }\n }\n });\n }\n // this is not good, as if date axis is initially zoomed, selection of y axis is reset to 0, 1 at the end of this method\n //$iter.each(this.series.iterator(), (series) => {\n //\tif (!series.appeared) {\n //\t\tallHidden = true;\n //\t}\n //})\n if ($type.isNumber(this._minDefined)) {\n if (this.strictMinMax) {\n selectionMin = this._minDefined;\n } else {\n selectionMin = this.min;\n }\n } else if (this.strictMinMax) {\n selectionMin = this._minReal;\n }\n if ($type.isNumber(this._maxDefined)) {\n if (this.strictMinMax) {\n selectionMax = this._maxDefined;\n } else {\n selectionMax = this.max;\n }\n } else if (this.strictMinMax) {\n selectionMax = this._maxReal;\n }\n if (selectionMin == selectionMax) {\n selectionMin -= this._deltaMinMax;\n selectionMax += this._deltaMinMax;\n var minMaxStep2 = this.adjustMinMax(selectionMin, selectionMax, 0, this._gridCount, this.strictMinMax);\n selectionMin = minMaxStep2.min;\n selectionMax = minMaxStep2.max;\n }\n var dif = this.adjustDifference(selectionMin, selectionMax);\n var minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount);\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n selectionMin -= (selectionMax - selectionMin) * this.extraMin;\n selectionMax += (selectionMax - selectionMin) * this.extraMax;\n selectionMin = $math.fitToRange(selectionMin, this.min, this.max);\n selectionMax = $math.fitToRange(selectionMax, this.min, this.max);\n // do it for the second time !important\n dif = this.adjustDifference(selectionMin, selectionMax);\n minMaxStep = this.adjustMinMax(selectionMin, selectionMax, dif, this._gridCount, true);\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n if (this.strictMinMax) {\n selectionMin = $math.max(selectionMin, this._minDefined);\n selectionMax = $math.min(selectionMax, this._maxDefined);\n }\n var step = minMaxStep.step;\n if (this.syncWithAxis) {\n minMaxStep = this.syncAxes(selectionMin, selectionMax, step);\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n this.invalidate();\n }\n step = minMaxStep.step;\n // needed because of grouping\n this._difference = this.adjustDifference(this.min, this.max);\n var start = this.valueToPosition(selectionMin);\n var end = this.valueToPosition(selectionMax);\n // in case all series are hidden or hiding, full zoomout\n if (allHidden && !this.syncWithAxis) {\n start = 0;\n end = 1;\n }\n var declination = 0;\n if (this.syncWithAxis) {\n declination = 5;\n this.setCache(selectionMin + \"-\" + selectionMax, step);\n } else {\n if (this._step != step || this._minZoomed != selectionMin || this._maxZoomed != selectionMax) {\n this._dsc = true;\n }\n this._step = step;\n this._minZoomed = selectionMin;\n this._maxZoomed = selectionMax;\n }\n if (!this.keepSelection) {\n this.zoom({\n start: start,\n end: end\n }, false, false, declination);\n }\n };\n Object.defineProperty(ValueAxis.prototype, \"strictMinMax\", {\n /**\r\n * @return Use exact values?\r\n */\n get: function () {\n return this.getPropertyValue(\"strictMinMax\");\n },\n /**\r\n * Indicates whether to blindly use exact `min` and `max` values set by user\r\n * when generating Axis scale.\r\n *\r\n * If not set, the Axis might slightly adjust those values to accomodate a\r\n * better looking grid.\r\n *\r\n * NOTE: if `min` and `max` are not set, setting `strictMinMax` to `true`\r\n * will result in fixing the scale of the axis to actual lowest and highest\r\n * values in the series within currently selected scope.\r\n *\r\n * @default false\r\n * @param value Use exact values?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"strictMinMax\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"logarithmic\", {\n /**\r\n * @return Logarithmic scale?\r\n */\n get: function () {\n return this.getPropertyValue(\"logarithmic\");\n },\n /**\r\n * Indicates if this axis should use a logarithmic scale.\r\n *\r\n * Please note that logarithmic axis can **only** accommodate values bigger\r\n * than zero.\r\n *\r\n * Having zero or negative values will result in error and failure of the\r\n * whole chart.\r\n *\r\n * @param value Logarithmic scale?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"logarithmic\", value)) {\n this.invalidate();\n this.series.each(function (series) {\n series.invalidateDataItems();\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"keepSelection\", {\n /**\r\n * @return Preseve zoom after data update?\r\n */\n get: function () {\n return this.getPropertyValue(\"keepSelection\");\n },\n /**\r\n * Indicates if a current selection (zoom) should be kept across data updates.\r\n *\r\n * If your axis is zoomed while chart's data is updated, the axis will try\r\n * to retain the same start and end values.\r\n *\r\n * You can also use this to initially pre-zoom axis:\r\n *\r\n * ```TypeScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JavaScript\r\n * axis.keepSelection = true;\r\n * axis.start = 0.5;\r\n * axis.end = 0.7;\r\n * ```\r\n * ```JSON\r\n * {\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"keepSelection\": true,\r\n * \"start\": 0.5,\r\n * \"end\": 0.7\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above will start the chart zoomed from the middle of the actual scope\r\n * to 70%.\r\n *\r\n * @since 4.1.1\r\n * @default false\r\n * @param value Preseve zoom after data update?\r\n */\n set: function (value) {\n this.setPropertyValue(\"keepSelection\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"includeRangesInMinMax\", {\n /**\r\n * @return Include ranges?\r\n */\n get: function () {\n return this.getPropertyValue(\"includeRangesInMinMax\");\n },\n /**\r\n * If set to `true`, values of axis ranges will be included when calculating\r\n * range of values / scale of the [[ValueAxis]].\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Include ranges?\r\n */\n set: function (value) {\n this.setPropertyValue(\"includeRangesInMinMax\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"maxPrecision\", {\n /**\r\n * @return max precision\r\n */\n get: function () {\n return this.getPropertyValue(\"maxPrecision\");\n },\n /**\r\n * Maximum number of decimals to allow when placing grid lines and labels\r\n * on axis.\r\n *\r\n * Set it to `0` (zero) to force integer-only axis labels.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"maxPrecision\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"extraTooltipPrecision\", {\n /**\r\n * @return Extra decimals\r\n */\n get: function () {\n return this.getPropertyValue(\"extraTooltipPrecision\");\n },\n /**\r\n * This setting allows using bigger precision for numbers displayed in axis\r\n * tooltip.\r\n *\r\n * Please note that this setting indicates additional decimal places to\r\n * automatically-calculated axis number precision.\r\n *\r\n * So if your axis displays numbers like 0.1, 0.2, etc. (one decimal place),\r\n * and you set `extraTooltipPrecision = 1`, tooltips will display numbers\r\n * like 0.12, 0.25, etc. (two decimal places).\r\n *\r\n * @default 0\r\n * @since 4.8.3\r\n * @param value Extra decimals\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"extraTooltipPrecision\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\n ValueAxis.prototype.handleExtremesChange = function () {\n var _this = this;\n this._extremesChanged = true;\n this.getMinMax();\n if (this.ghostLabel) {\n var mw_1 = 0;\n this.dataItems.each(function (dataItem) {\n if (dataItem.label && dataItem.label.pixelWidth > mw_1) {\n _this.ghostLabel.text = dataItem.label.currentText;\n }\n });\n }\n };\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return X coordinate (px)\r\n */\n ValueAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\n return this.renderer.positionToPoint(this.getPositionX(dataItem, key, location, stackKey, range)).x;\n };\n /**\r\n * Returns the X coordinate for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey ?\r\n * @return Relative position\r\n */\n ValueAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\n var value = dataItem.getWorkingValue(key);\n if (!$type.hasValue(stackKey)) {\n stackKey = \"valueX\";\n }\n var stack = dataItem.getValue(stackKey, \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n if (this.logarithmic) {\n if (stack > 0) {\n value = 0;\n }\n }\n }\n var position = this.valueToPosition(value + stack);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns the Y coordinate for series' data item's value.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Y coordinate (px)\r\n */\n ValueAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\n return this.renderer.positionToPoint(this.getPositionY(dataItem, key, location, stackKey, range)).y;\n };\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @return Relative position\r\n */\n ValueAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\n var value = dataItem.getWorkingValue(key);\n if (!$type.hasValue(stackKey)) {\n stackKey = \"valueY\";\n }\n var stack = dataItem.getValue(stackKey, \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n if (this.logarithmic) {\n if (stack > 0) {\n value = 0;\n }\n }\n }\n var position = this.valueToPosition(value + stack);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\n ValueAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\n var value = dataItem.getWorkingValue(key);\n var stack = dataItem.getValue(stackKey, \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n }\n var position = this.valueToPosition(value + stack);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return this.positionToAngle(position);\n };\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\n ValueAxis.prototype.getAnyRangePath = function (start, end, location) {\n var startPosition = this.valueToPosition(start);\n var endPosition = this.valueToPosition(end);\n return this.getPositionRangePath(startPosition, endPosition); // Base class (Axis) gets range shape from AxisRenderer\n };\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\n ValueAxis.prototype.getTooltipText = function (position) {\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces + this.extraTooltipPrecision);\n var valueStr = this.tooltip.numberFormatter.format(value);\n if (!this._adapterO) {\n return valueStr;\n } else {\n return this._adapterO.apply(\"getTooltipText\", valueStr);\n }\n };\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\n ValueAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly) {\n var start = (startValue - this.min) / (this.max - this.min);\n var end = (endValue - this.min) / (this.max - this.min);\n this.zoom({\n start: start,\n end: end\n }, skipRangeEvent, instantly);\n };\n Object.defineProperty(ValueAxis.prototype, \"minZoomed\", {\n /**\r\n * A smallest value in axis scale within current zoom.\r\n *\r\n * @return Min zoom value\r\n */\n get: function () {\n if (!this.syncWithAxis) {\n return $math.max(this.min, this._minZoomed);\n } else {\n return this._minZoomed;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"maxZoomed\", {\n /**\r\n * A biggest value in axis scale within current zoom.\r\n * @return [description]\r\n */\n get: function () {\n if (!this.syncWithAxis) {\n return $math.min(this.max, this._maxZoomed);\n } else {\n return this._maxZoomed;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ValueAxis.prototype.fixAxisBreaks = function () {\n var _this = this;\n _super.prototype.fixAxisBreaks.call(this);\n var axisBreaks = this._axisBreaks;\n if (axisBreaks && axisBreaks.length > 0) {\n // process breaks\n axisBreaks.each(function (axisBreak) {\n var startValue = axisBreak.adjustedStartValue;\n var endValue = axisBreak.adjustedEndValue;\n // break difference\n var axisBreakDif = endValue - startValue;\n var axisBreakGridCount = Math.ceil(axisBreakDif * axisBreak.breakSize) * _this._gridCount / (_this.max - _this.min);\n // calculate min, max and step for axis break\n var breakMinMaxStep = _this.adjustMinMax(startValue, endValue, axisBreakDif, axisBreakGridCount, true);\n axisBreak.adjustedStep = breakMinMaxStep.step;\n axisBreak.adjustedMin = breakMinMaxStep.min;\n axisBreak.adjustedMax = breakMinMaxStep.max;\n });\n }\n this._difference = this.adjustDifference(this.min, this.max);\n };\n /**\r\n * Returns value based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\n ValueAxis.prototype.getPositionLabel = function (position) {\n var value = this.positionToValue(position);\n return this.numberFormatter.format(value);\n };\n /**\r\n * Shows Axis tooltip at specific value\r\n *\r\n * @param value Value\r\n */\n ValueAxis.prototype.showTooltipAt = function (value) {\n this.showTooltipAtPosition(this.valueToPosition(value));\n };\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\n ValueAxis.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.min = source.min;\n this.max = source.max;\n this.calculateTotals = source.calculateTotals;\n this._baseValue = source.baseValue;\n };\n Object.defineProperty(ValueAxis.prototype, \"syncWithAxis\", {\n /**\r\n * @return Target axis\r\n */\n get: function () {\n return this.getPropertyValue(\"syncWithAxis\");\n },\n /**\r\n * Enables syncing of grid with another axis.\r\n *\r\n * To enable, set to a reference of the other `ValueAxis`. This axis will try\r\n * to maintain its scale in such way that its grid matches target axis grid.\r\n *\r\n * IMPORTANT #1: At this stage it's an experimental feature. Use it at your\r\n * own risk, as it may not work in 100% of the scenarios.\r\n *\r\n * IMPORTANT #2: `syncWithAxis` is not compatible with `strictMinMax` and\r\n * `sequencedInterpolation` settings.\r\n *\r\n * IMPORTANT #3: `syncWithAxis` is not compatible with scrollbars. Make sure\r\n * you do not add a scrollbar in the same direction as synced axes. For\r\n * example, if you have vertical synced axes, do not add `scrollbarY` on\r\n * your chart. It will create anomalies when used.\r\n *\r\n * IMPORTANT #4: `syncWithAxis` is not compatible with `XYCursor` if it has\r\n * its `behavior` set to either `zoomY` or `zoomXY`.\r\n *\r\n * @since 4.8.1\r\n * @param axis Target axis\r\n */\n set: function (axis) {\n var _this = this;\n if (this.setPropertyValue(\"syncWithAxis\", axis, true)) {\n if (axis) {\n this._disposers.push(axis.events.on(\"extremeschanged\", this.handleSelectionExtremesChange, this, false));\n this._disposers.push(axis.events.on(\"selectionextremeschanged\", this.handleSelectionExtremesChange, this, false));\n this._disposers.push(axis.events.on(\"startendchanged\", this.handleSelectionExtremesChange, this, false));\n this.events.on(\"shown\", this.handleSelectionExtremesChange, this, false);\n this.events.on(\"maxsizechanged\", function () {\n _this.clearCache();\n _this._disposers.push(registry.events.once(\"exitframe\", function () {\n _this.handleSelectionExtremesChange();\n }));\n }, this, false);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueAxis.prototype, \"treatZeroAs\", {\n /**\r\n * @return Zero replacement value\r\n */\n get: function () {\n return this.getPropertyValue(\"treatZeroAs\");\n },\n /**\r\n * If set, zero values will be treated as this value.\r\n *\r\n * It is useful if you need to use data with zero-values on a logarithmic\r\n * axis scale.\r\n *\r\n * @since 4.9.34\r\n * @param value Zero replacement value\r\n */\n set: function (value) {\n this.setPropertyValue(\"treatZeroAs\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\n ValueAxis.prototype.syncAxes = function (min, max, step) {\n var axis = this.syncWithAxis;\n if (axis) {\n if (!$type.isNumber(min)) {\n min = this.min;\n }\n if (!$type.isNumber(max)) {\n max = this.max;\n }\n if (!$type.isNumber(step)) {\n step = this._step;\n }\n var count = Math.round((axis.maxZoomed - axis.minZoomed) / axis.step);\n var currentCount = Math.round((max - min) / step);\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\n var synced = false;\n var c = 0;\n var diff = (max - min) * 0.01;\n var omin = min;\n var omax = max;\n var ostep = step;\n while (synced != true) {\n synced = this.checkSync(omin, omax, ostep, count);\n c++;\n if (c > 1000) {\n synced = true;\n }\n if (!synced) {\n //omin = min - diff * c;\n if (c / 3 == Math.round(c / 3)) {\n omin = min - diff * c;\n if (min >= 0 && omin < 0) {\n omin = 0;\n }\n } else {\n omax = max + diff * c;\n if (omax <= 0 && omax > 0) {\n omax = 0;\n }\n }\n var minMaxStep = this.adjustMinMax(omin, omax, omax - omin, this._gridCount, true);\n omin = minMaxStep.min;\n omax = minMaxStep.max;\n ostep = minMaxStep.step;\n } else {\n min = omin;\n max = omax;\n step = ostep;\n }\n }\n }\n }\n return {\n min: min,\n max: max,\n step: step\n };\n };\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\n ValueAxis.prototype.checkSync = function (min, max, step, count) {\n var currentCount = (max - min) / step;\n for (var i = 1; i < count; i++) {\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\n return true;\n }\n }\n return false;\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n ValueAxis.prototype.processConfig = function (config) {\n if (config) {\n // Set up axes\n if ($type.hasValue(config.syncWithAxis) && $type.isString(config.syncWithAxis)) {\n if (this.map.hasKey(config.syncWithAxis)) {\n config.syncWithAxis = this.map.getKey(config.syncWithAxis);\n } else {\n this.processingErrors.push(\"[ValueAxis] No axis with id \\\"\" + config.syncWithAxis + \"\\\" found for `syncWithAxis`\");\n delete config.xAxis;\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return ValueAxis;\n}(Axis);\nexport { ValueAxis };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ValueAxis\"] = ValueAxis;\nregistry.registeredClasses[\"ValueAxisDataItem\"] = ValueAxisDataItem;\n//# sourceMappingURL=ValueAxis.js.map","/**\r\n * DateAxisBreak includes functionality to add breaks on a [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ValueAxisBreak } from \"./ValueAxisBreak\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to define breaks for [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n *\r\n * @see {@link IDateAxisBreakEvents} for a list of available events\r\n * @see {@link IDateAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar DateAxisBreak = /** @class */function (_super) {\n __extends(DateAxisBreak, _super);\n /**\r\n * Constructor\r\n */\n function DateAxisBreak() {\n var _this = _super.call(this) || this;\n _this.className = \"DateAxisBreak\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(DateAxisBreak.prototype, \"startDate\", {\n /**\r\n * @return Start date\r\n */\n get: function () {\n return this.getPropertyValue(\"startDate\");\n },\n /**\r\n * Starting date for the break.\r\n *\r\n * @param value Start date\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startDate\", value)) {\n this.startValue = value.getTime();\n if (this.axis) {\n this.axis.invalidate();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxisBreak.prototype, \"endDate\", {\n /**\r\n * @return End date\r\n */\n get: function () {\n return this.getPropertyValue(\"endDate\");\n },\n /**\r\n * Ending date for the break.\r\n *\r\n * @param value End date\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endDate\", value)) {\n this.endValue = value.getTime();\n if (this.axis) {\n this.axis.invalidate();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return DateAxisBreak;\n}(ValueAxisBreak);\nexport { DateAxisBreak };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DateAxisBreak\"] = DateAxisBreak;\n//# sourceMappingURL=DateAxisBreak.js.map","/**\r\n * DateAxis module\r\n */\nimport { __assign, __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\nimport { List } from \"../../core/utils/List\";\nimport { Dictionary } from \"../../core/utils/Dictionary\";\nimport { DateAxisBreak } from \"./DateAxisBreak\";\nimport { registry } from \"../../core/Registry\";\nimport * as $time from \"../../core/utils/Time\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport { OrderedListTemplate } from \"../../core/utils/SortedList\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines data item for [[DateAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar DateAxisDataItem = /** @class */function (_super) {\n __extends(DateAxisDataItem, _super);\n /**\r\n * Constructor\r\n */\n function DateAxisDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"DateAxisDataItem\";\n _this.applyTheme();\n _this.values.date = {};\n _this.values.endDate = {};\n return _this;\n }\n Object.defineProperty(DateAxisDataItem.prototype, \"date\", {\n /**\r\n * @return Date\r\n */\n get: function () {\n return this.dates[\"date\"];\n },\n /**\r\n * Date position of the data item.\r\n *\r\n * @param date Date\r\n */\n set: function (date) {\n this.setDate(\"date\", date);\n this.value = date.getTime();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxisDataItem.prototype, \"endDate\", {\n /**\r\n * @return End date\r\n */\n get: function () {\n return this.dates[\"endDate\"];\n },\n /**\r\n * End date for data item.\r\n *\r\n * @param date End date\r\n */\n set: function (date) {\n this.setDate(\"endDate\", date);\n this.endValue = date.getTime();\n },\n enumerable: true,\n configurable: true\n });\n return DateAxisDataItem;\n}(ValueAxisDataItem);\nexport { DateAxisDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to create a date/time-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IDateAxisEvents} for a list of available Events\r\n * @see {@link IDateAxisAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/} got `DateAxis` documention\r\n * @important\r\n */\nvar DateAxis = /** @class */function (_super) {\n __extends(DateAxis, _super);\n /**\r\n * Constructor\r\n */\n function DateAxis() {\n var _this =\n // Init\n _super.call(this) || this;\n _this._gapBreaks = false;\n /**\r\n * A list of date/time intervals for Date axis.\r\n *\r\n * This define various granularities available for the axis. For example\r\n * if you have an axis spanning an hour, and space for 6 grid lines / labels\r\n * the axis will choose the granularity of 10 minutes, displaying a label\r\n * every 10 minutes.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1 },\r\n * { timeUnit: \"millisecond\", count: 5 },\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 50 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"millisecond\", count: 500 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 5 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"second\", count: 30 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 5 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"minute\", count: 30 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"hour\", count: 3 },\r\n * { timeUnit: \"hour\", count: 6 },\r\n * { timeUnit: \"hour\", count: 12 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"day\", count: 2 },\r\n * { timeUnit: \"day\", count: 3 },\r\n * { timeUnit: \"day\", count: 4 },\r\n * { timeUnit: \"day\", count: 5 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"month\", count: 2 },\r\n * { timeUnit: \"month\", count: 3 },\r\n * { timeUnit: \"month\", count: 6 },\r\n * { timeUnit: \"year\", count: 1 },\r\n * { timeUnit: \"year\", count: 2 },\r\n * { timeUnit: \"year\", count: 5 },\r\n * { timeUnit: \"year\", count: 10 },\r\n * { timeUnit: \"year\", count: 50 },\r\n * { timeUnit: \"year\", count: 100 }\r\n * ]\r\n * ```\r\n */\n _this.gridIntervals = new List();\n /**\r\n * If data aggregation is enabled by setting Axis' `groupData = true`, the\r\n * chart will try to aggregate data items into grouped data items.\r\n *\r\n * If there are more data items in selected period than `groupCount`, it will\r\n * group data items into bigger period.\r\n *\r\n * For example seconds might be grouped into 10-second aggregate data items.\r\n *\r\n * This setting indicates what group intervals can the chart group to.\r\n *\r\n * Default intervals:\r\n *\r\n * ```JSON\r\n * [\r\n * { timeUnit: \"millisecond\", count: 1},\r\n * { timeUnit: \"millisecond\", count: 10 },\r\n * { timeUnit: \"millisecond\", count: 100 },\r\n * { timeUnit: \"second\", count: 1 },\r\n * { timeUnit: \"second\", count: 10 },\r\n * { timeUnit: \"minute\", count: 1 },\r\n * { timeUnit: \"minute\", count: 10 },\r\n * { timeUnit: \"hour\", count: 1 },\r\n * { timeUnit: \"day\", count: 1 },\r\n * { timeUnit: \"week\", count: 1 },\r\n * { timeUnit: \"month\", count: 1 },\r\n * { timeUnit: \"year\", count: 1 }\r\n * ]\r\n * ```\r\n * `groupData = true` does not work in combination with `skipEmptyPeriods = true`.\r\n *\r\n * @since 4.7.0\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n */\n _this.groupIntervals = new List();\n /**\r\n * A collection of date formats to use when formatting different time units\r\n * on Date/time axis.\r\n *\r\n * Actual defaults will depend on the language locale set for the chart.\r\n *\r\n * To override format for a specific time unit, say days, you need to set\r\n * the appropriate key to a format string. E.g.:\r\n *\r\n * ```TypeScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JavaScript\r\n * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"dateFormats\": {\r\n * \"day\": \"MMMM d, yyyy\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link DateFormatter}\r\n */\n _this.dateFormats = new Dictionary();\n /**\r\n * These formats are applied to labels that are first in a larger unit.\r\n *\r\n * For example, if we have a DateAxis with days on it, the first day of month\r\n * indicates a break in month - a start of the bigger period.\r\n *\r\n * For those labels, `periodChangeDateFormats` are applied instead of\r\n * `dateFormats`.\r\n *\r\n * This allows us implement convenient structures, like instead of:\r\n *\r\n * `Jan 1 - Jan 2 - Jan 3 - ...`\r\n *\r\n * We can have:\r\n *\r\n * `Jan - 1 - 2 - 3 - ...`\r\n *\r\n * This can be disabled by setting `markUnitChange = false`.\r\n */\n _this.periodChangeDateFormats = new Dictionary();\n /**\r\n * Actual interval (granularity) derived from the actual data.\r\n */\n _this._baseIntervalReal = {\n timeUnit: \"day\",\n count: 1\n };\n /**\r\n */\n _this._prevSeriesTime = {};\n /**\r\n * [_minDifference description]\r\n *\r\n * @todo Description\r\n */\n _this._minDifference = {};\n /**\r\n * @ignore\r\n */\n _this._firstWeekDay = 1;\n /**\r\n * A collection of start timestamps to use as axis' min timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\n _this.groupMin = {};\n /**\r\n * A collection of start timestamps to use as axis' max timestamp for\r\n * particular data item item periods.\r\n *\r\n * @since 4.7.0\r\n * @readonly\r\n */\n _this.groupMax = {};\n _this.className = \"DateAxis\";\n _this.setPropertyValue(\"markUnitChange\", true);\n _this.snapTooltip = true;\n _this.tooltipPosition = \"pointer\";\n _this.setPropertyValue(\"groupData\", false);\n _this.groupCount = 200;\n _this.events.on(\"parentset\", _this.getDFFormatter, _this, false);\n // Translatable defaults are applied in `applyInternalDefaults()`\n // ...\n // Define default intervals\n _this.gridIntervals.pushAll([{\n timeUnit: \"millisecond\",\n count: 1\n }, {\n timeUnit: \"millisecond\",\n count: 5\n }, {\n timeUnit: \"millisecond\",\n count: 10\n }, {\n timeUnit: \"millisecond\",\n count: 50\n }, {\n timeUnit: \"millisecond\",\n count: 100\n }, {\n timeUnit: \"millisecond\",\n count: 500\n }, {\n timeUnit: \"second\",\n count: 1\n }, {\n timeUnit: \"second\",\n count: 5\n }, {\n timeUnit: \"second\",\n count: 10\n }, {\n timeUnit: \"second\",\n count: 30\n }, {\n timeUnit: \"minute\",\n count: 1\n }, {\n timeUnit: \"minute\",\n count: 5\n }, {\n timeUnit: \"minute\",\n count: 10\n }, {\n timeUnit: \"minute\",\n count: 15\n }, {\n timeUnit: \"minute\",\n count: 30\n }, {\n timeUnit: \"hour\",\n count: 1\n }, {\n timeUnit: \"hour\",\n count: 3\n }, {\n timeUnit: \"hour\",\n count: 6\n }, {\n timeUnit: \"hour\",\n count: 12\n }, {\n timeUnit: \"day\",\n count: 1\n }, {\n timeUnit: \"day\",\n count: 2\n }, {\n timeUnit: \"day\",\n count: 3\n }, {\n timeUnit: \"day\",\n count: 4\n }, {\n timeUnit: \"day\",\n count: 5\n }, {\n timeUnit: \"week\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 2\n }, {\n timeUnit: \"month\",\n count: 3\n }, {\n timeUnit: \"month\",\n count: 6\n }, {\n timeUnit: \"year\",\n count: 1\n }, {\n timeUnit: \"year\",\n count: 2\n }, {\n timeUnit: \"year\",\n count: 5\n }, {\n timeUnit: \"year\",\n count: 10\n }, {\n timeUnit: \"year\",\n count: 50\n }, {\n timeUnit: \"year\",\n count: 100\n }, {\n timeUnit: \"year\",\n count: 200\n }, {\n timeUnit: \"year\",\n count: 500\n }, {\n timeUnit: \"year\",\n count: 1000\n }, {\n timeUnit: \"year\",\n count: 2000\n }, {\n timeUnit: \"year\",\n count: 5000\n }, {\n timeUnit: \"year\",\n count: 10000\n }, {\n timeUnit: \"year\",\n count: 100000\n }]);\n _this.groupIntervals.pushAll([{\n timeUnit: \"millisecond\",\n count: 1\n }, {\n timeUnit: \"millisecond\",\n count: 10\n }, {\n timeUnit: \"millisecond\",\n count: 100\n }, {\n timeUnit: \"second\",\n count: 1\n }, {\n timeUnit: \"second\",\n count: 10\n }, {\n timeUnit: \"minute\",\n count: 1\n }, {\n timeUnit: \"minute\",\n count: 10\n }, {\n timeUnit: \"hour\",\n count: 1\n }, {\n timeUnit: \"day\",\n count: 1\n }, {\n timeUnit: \"week\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 1\n }, {\n timeUnit: \"year\",\n count: 1\n }]);\n // Set field name\n _this.axisFieldName = \"date\";\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * A function which applies fills to axis cells.\r\n *\r\n * Default function fills every second fill. You can set this to a function\r\n * that follows some other logic.\r\n *\r\n * Function should accept a [[DateAxisDataItem]] and modify its `axisFill`\r\n * property accordingly.\r\n */\n DateAxis.prototype.fillRule = function (dataItem) {\n var value = dataItem.value;\n var axis = dataItem.component;\n var gridInterval = axis._gridInterval;\n var gridDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\n if (Math.round((value - axis.min) / gridDuration) / 2 == Math.round(Math.round((value - axis.min) / gridDuration) / 2)) {\n dataItem.axisFill.__disabled = true;\n } else {\n dataItem.axisFill.__disabled = false;\n }\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n DateAxis.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Set default date formats\n if (!this.dateFormats.hasKey(\"millisecond\")) {\n this.dateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\n }\n if (!this.dateFormats.hasKey(\"second\")) {\n this.dateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\n }\n if (!this.dateFormats.hasKey(\"minute\")) {\n this.dateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\n }\n if (!this.dateFormats.hasKey(\"hour\")) {\n this.dateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\n }\n if (!this.dateFormats.hasKey(\"day\")) {\n this.dateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\n }\n if (!this.dateFormats.hasKey(\"week\")) {\n this.dateFormats.setKey(\"week\", this.language.translate(\"_date_day\")); // not a mistake\n }\n if (!this.dateFormats.hasKey(\"month\")) {\n this.dateFormats.setKey(\"month\", this.language.translate(\"_date_month\"));\n }\n if (!this.dateFormats.hasKey(\"year\")) {\n this.dateFormats.setKey(\"year\", this.language.translate(\"_date_year\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"millisecond\")) {\n this.periodChangeDateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"second\")) {\n this.periodChangeDateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"minute\")) {\n this.periodChangeDateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"hour\")) {\n this.periodChangeDateFormats.setKey(\"hour\", this.language.translate(\"_date_day\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"day\")) {\n this.periodChangeDateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"week\")) {\n this.periodChangeDateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\n }\n if (!this.periodChangeDateFormats.hasKey(\"month\")) {\n this.periodChangeDateFormats.setKey(\"month\", this.language.translate(\"_date_month\") + \" \" + this.language.translate(\"_date_year\"));\n }\n };\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n DateAxis.prototype.createDataItem = function () {\n return new DateAxisDataItem();\n };\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\n DateAxis.prototype.createAxisBreak = function () {\n return new DateAxisBreak();\n };\n /**\r\n * Validates Axis' data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.validateDataItems = function () {\n // allows to keep selection of the same size\n var start = this.start;\n var end = this.end;\n var baseDuration = this.baseDuration;\n var periodCount = (this.max - this.min) / baseDuration;\n this._firstWeekDay = this.getFirstWeekDay();\n this.getDFFormatter();\n _super.prototype.validateDataItems.call(this);\n var mainBaseDuration = $time.getDuration(this.mainBaseInterval.timeUnit, this.mainBaseInterval.count);\n this.maxZoomFactor = Math.max(1, (this.max - this.min) / mainBaseDuration);\n this._deltaMinMax = this.baseDuration / 2;\n // allows to keep selection of the same size\n var newPeriodCount = (this.max - this.min) / baseDuration;\n start = start + (end - start) * (1 - periodCount / newPeriodCount);\n this.zoom({\n start: start,\n end: end\n }, false, true); // added instantlyto solve zoomout problem when we have axes gaps. @todo: check how this affects maxZoomFactor\n };\n /**\r\n * Handles process after zoom.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Does nothing?\r\n */\n DateAxis.prototype.handleSelectionExtremesChange = function () {};\n /**\r\n * Calculates all positions, related to axis as per current zoom.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.calculateZoom = function () {\n var _this = this;\n _super.prototype.calculateZoom.call(this);\n var difference = this.adjustDifference(this._minZoomed, this._maxZoomed);\n var dataSetChanged = false;\n // if data has to be grouped, choose interval and set dataset\n if (this.groupData && $type.hasValue(difference)) {\n var mainBaseInterval = this.mainBaseInterval;\n var modifiedDifference = difference + (this.startLocation + (1 - this.endLocation)) * this.baseDuration;\n var groupInterval = void 0;\n if (this.groupInterval) {\n groupInterval = __assign({}, this.groupInterval);\n } else {\n groupInterval = this.chooseInterval(0, modifiedDifference, this.groupCount, this.groupIntervals);\n if ($time.getDuration(groupInterval.timeUnit, groupInterval.count) < $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count)) {\n groupInterval = __assign({}, mainBaseInterval);\n }\n }\n this._groupInterval = groupInterval;\n var newId = groupInterval.timeUnit + groupInterval.count;\n if (this._currentDataSetId != newId) {\n this._currentDataSetId = newId;\n this.dispatch(\"groupperiodchanged\");\n }\n this.series.each(function (series) {\n if (series.baseAxis == _this) {\n if (series.setDataSet(_this._currentDataSetId)) {\n dataSetChanged = true;\n }\n }\n });\n }\n var gridInterval = this.chooseInterval(0, difference, this._gridCount);\n if ($time.getDuration(gridInterval.timeUnit, gridInterval.count) < this.baseDuration) {\n gridInterval = __assign({}, this.baseInterval);\n }\n this._gridInterval = gridInterval;\n this._nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\n // the following is needed to avoid grid flickering while scrolling\n this._intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\n this._gridDate = $time.round(new Date(this.minZoomed - $time.getDuration(gridInterval.timeUnit, gridInterval.count)), gridInterval.timeUnit, gridInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\n // tell series start/end\n $iter.each(this.series.iterator(), function (series) {\n if (series.baseAxis == _this) {\n var field_1 = series.getAxisField(_this);\n var minZoomed = $time.round(new Date(_this._minZoomed + _this.baseDuration * 0.05), _this.baseInterval.timeUnit, _this.baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\n var minZoomedStr = minZoomed.toString();\n var startDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(minZoomedStr + series.currentDataSetId);\n var startIndex = 0;\n if (_this.start != 0) {\n if (startDataItem) {\n startDataItem = _this.findFirst(startDataItem, minZoomed, field_1);\n startIndex = startDataItem.index;\n } else {\n startIndex = series.dataItems.findClosestIndex(_this._minZoomed, function (x) {\n return x[field_1];\n }, \"left\");\n }\n }\n // 1 millisecond is removed so that if only first item is selected, it would not count in the second.\n var baseInterval = _this.baseInterval;\n var maxZoomed = $time.add($time.round(new Date(_this._maxZoomed), baseInterval.timeUnit, baseInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone), baseInterval.timeUnit, baseInterval.count, _this._df.utc).getTime();\n var maxZoomedStr = maxZoomed.toString();\n var endDataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(maxZoomedStr + series.currentDataSetId);\n var endIndex = series.dataItems.length;\n if (_this.end != 1) {\n if (endDataItem) {\n endIndex = endDataItem.index;\n } else {\n maxZoomed -= 1;\n endIndex = series.dataItems.findClosestIndex(maxZoomed, function (x) {\n return x[field_1];\n }, \"right\");\n // not good - if end is in the gap, indexes go like 5,4,3,4,2,1\n //if (endIndex < series.dataItems.length) {\n endIndex++;\n //}\n }\n }\n if (series.max(_this) < minZoomed) {\n series.startIndex = series.dataItems.length;\n series.endIndex = series.dataItems.length;\n series.outOfRange = true;\n } else if (series.min(_this) > maxZoomed) {\n series.startIndex = 0;\n series.endIndex = 0;\n series.outOfRange = true;\n } else {\n series.outOfRange = false;\n series.startIndex = startIndex;\n series.endIndex = endIndex;\n }\n //\tconsole.log(series.name, startIndex, endIndex);\n if (!dataSetChanged && series.dataRangeInvalid) {\n series.validateDataRange();\n }\n }\n });\n };\n DateAxis.prototype.findFirst = function (dataItem, time, key) {\n var index = dataItem.index;\n if (index > 0) {\n var series = dataItem.component;\n var previousDataItem = series.dataItems.getIndex(index - 1);\n var previousDate = previousDataItem[key];\n if (!previousDate || previousDate.getTime() < time) {\n return dataItem;\n } else {\n return this.findFirst(previousDataItem, time, key);\n }\n } else {\n return dataItem;\n }\n };\n /**\r\n * (Re)validates data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.validateData = function () {\n _super.prototype.validateData.call(this);\n if (!$type.isNumber(this.baseInterval.count)) {\n this.baseInterval.count = 1;\n }\n };\n Object.defineProperty(DateAxis.prototype, \"minDifference\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n var _this = this;\n var minDifference = Number.MAX_VALUE;\n this.series.each(function (series) {\n if (minDifference > _this._minDifference[series.uid]) {\n minDifference = _this._minDifference[series.uid];\n }\n });\n if (minDifference == Number.MAX_VALUE || minDifference == 0) {\n minDifference = $time.getDuration(\"day\");\n }\n return minDifference;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [dataChangeUpdate description]\r\n *\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n DateAxis.prototype.seriesDataChangeUpdate = function (series) {\n this._minDifference[series.uid] = Number.MAX_VALUE;\n };\n /**\r\n * [postProcessSeriesDataItems description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n DateAxis.prototype.postProcessSeriesDataItems = function (series) {\n var _this = this;\n this._firstWeekDay = this.getFirstWeekDay();\n if (series) {\n this.seriesGroupUpdate(series);\n } else {\n this.series.each(function (series) {\n _this.seriesGroupUpdate(series);\n });\n }\n this.addEmptyUnitsBreaks();\n };\n DateAxis.prototype.seriesGroupUpdate = function (series) {\n var _this = this;\n if (JSON.stringify(series._baseInterval[this.uid]) != JSON.stringify(this.mainBaseInterval)) {\n series._baseInterval[this.uid] = this.mainBaseInterval;\n series.mainDataSet.each(function (dataItem) {\n _this.postProcessSeriesDataItem(dataItem);\n });\n if (this.groupData) {\n this.groupSeriesData(series);\n }\n }\n };\n /**\r\n * Calculates series group data.\r\n *\r\n * @param series Series\r\n * @ignore\r\n */\n DateAxis.prototype.groupSeriesData = function (series) {\n var _this = this;\n if (series.baseAxis == this && series.dataItems.length > 0 && !series.dataGrouped) {\n series.bulletsContainer.removeChildren();\n // make array of intervals which will be used;\n var intervals_1 = [];\n var mainBaseInterval = this.mainBaseInterval;\n var mainIntervalDuration_1 = $time.getDuration(mainBaseInterval.timeUnit, mainBaseInterval.count);\n this.groupIntervals.each(function (interval) {\n var intervalDuration = $time.getDuration(interval.timeUnit, interval.count);\n if (intervalDuration > mainIntervalDuration_1 && intervalDuration < _this.max - _this.min || _this.groupInterval) {\n intervals_1.push(interval);\n }\n });\n if (series._dataSets) {\n series._dataSets.each(function (key, dataItems) {\n dataItems.each(function (dataItem) {\n dataItem.dispose();\n });\n dataItems.clear();\n });\n series._dataSets.clear();\n }\n series.dataGrouped = true;\n $array.each(intervals_1, function (interval) {\n //let mainBaseInterval = this._mainBaseInterval;\n var key = \"date\" + _this.axisLetter;\n // create data set\n var dataSetId = interval.timeUnit + interval.count;\n // todo: check where this clone goes\n var dataSet = new OrderedListTemplate(series.mainDataSet.template.clone());\n series.dataSets.setKey(dataSetId, dataSet);\n var dataItems = series.mainDataSet;\n var previousTime = Number.NEGATIVE_INFINITY;\n var i = 0;\n var newDataItem;\n var dataFields = [];\n $object.each(series.dataFields, function (dfkey, df) {\n var dfk = dfkey;\n if (dfk != key && dfk.indexOf(\"Show\") == -1) {\n dataFields.push(dfk);\n }\n });\n var roundedDate;\n dataItems.each(function (dataItem) {\n var date = dataItem.getDate(key);\n if (date) {\n var time = date.getTime();\n roundedDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\n var currentTime = roundedDate.getTime();\n // changed period\t\t\t\t\t\t\t\t\n if (previousTime < currentTime) {\n if (newDataItem && series._adapterO) {\n $array.each(dataFields, function (vkey) {\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\n dataItem: newDataItem,\n interval: interval,\n dataField: vkey,\n date: roundedDate,\n value: newDataItem.values[vkey].value\n }).value;\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\n });\n }\n newDataItem = dataSet.create();\n newDataItem.dataContext = {};\n newDataItem.setWorkingLocation(\"dateX\", series.dataItems.template.locations.dateX, 0);\n newDataItem.setWorkingLocation(\"openDateX\", series.dataItems.template.locations.openDateX, 0);\n newDataItem.setWorkingLocation(\"dateY\", series.dataItems.template.locations.dateY, 0);\n newDataItem.setWorkingLocation(\"openDateY\", series.dataItems.template.locations.openDateY, 0);\n newDataItem.component = series;\n // other Dates?\n newDataItem.setDate(key, roundedDate);\n newDataItem._index = i;\n i++;\n $array.each(dataFields, function (vkey) {\n //let groupFieldName = vkey + \"Group\";\n var dvalues = dataItem.values[vkey];\n if (dvalues) {\n var value = dvalues.value;\n if (series._adapterO) {\n value = series._adapterO.apply(\"groupValue\", {\n dataItem: dataItem,\n interval: interval,\n dataField: vkey,\n date: roundedDate,\n value: value\n }).value;\n }\n var values = newDataItem.values[vkey];\n if ($type.isNumber(value)) {\n values.value = value;\n values.workingValue = value;\n values.open = value;\n values.close = value;\n values.low = value;\n values.high = value;\n values.sum = value;\n values.average = value;\n values.count = 1;\n } else {\n values.count = 0;\n }\n }\n });\n _this.postProcessSeriesDataItem(newDataItem, interval);\n $object.each(series.propertyFields, function (key, fieldValue) {\n var f = key;\n var value = dataItem.properties[key];\n if ($type.hasValue(value)) {\n newDataItem.hasProperties = true;\n newDataItem.setProperty(f, value);\n }\n });\n newDataItem.groupDataItems = [dataItem];\n previousTime = currentTime;\n } else {\n if (newDataItem) {\n $array.each(dataFields, function (vkey) {\n var groupFieldName = series.groupFields[vkey];\n var dvalues = dataItem.values[vkey];\n if (dvalues) {\n var value = dvalues.value;\n if (series._adapterO) {\n value = series._adapterO.apply(\"groupValue\", {\n dataItem: dataItem,\n interval: interval,\n dataField: vkey,\n date: roundedDate,\n value: value\n }).value;\n }\n if ($type.isNumber(value)) {\n var values = newDataItem.values[vkey];\n if (!$type.isNumber(values.open)) {\n values.open = value;\n }\n values.close = value;\n if (values.low > value || !$type.isNumber(values.low)) {\n values.low = value;\n }\n if (values.high < value || !$type.isNumber(values.high)) {\n values.high = value;\n }\n if ($type.isNumber(values.sum)) {\n values.sum += value;\n } else {\n values.sum = value;\n }\n values.count++;\n values.average = values.sum / values.count;\n if ($type.isNumber(values[groupFieldName])) {\n values.value = values[groupFieldName];\n values.workingValue = values.value;\n }\n }\n }\n });\n $utils.copyProperties(dataItem.properties, newDataItem.properties);\n $object.each(series.propertyFields, function (key, fieldValue) {\n var f = key;\n var value = dataItem.properties[key];\n if ($type.hasValue(value)) {\n newDataItem.hasProperties = true;\n newDataItem.setProperty(f, value);\n }\n });\n newDataItem.groupDataItems.push(dataItem);\n }\n }\n }\n if (newDataItem) {\n $utils.copyProperties(dataItem.dataContext, newDataItem.dataContext);\n }\n });\n if (newDataItem && series._adapterO) {\n $array.each(dataFields, function (vkey) {\n newDataItem.values[vkey].value = series._adapterO.apply(\"groupDataItem\", {\n dataItem: newDataItem,\n interval: interval,\n dataField: vkey,\n date: roundedDate,\n value: newDataItem.values[vkey].value\n }).value;\n newDataItem.values[vkey].workingValue = newDataItem.values[vkey].value;\n });\n }\n });\n this.calculateZoom();\n }\n };\n /**\r\n * @ignore\r\n */\n DateAxis.prototype.getDFFormatter = function () {\n this._df = this.dateFormatter;\n };\n /**\r\n * [postProcessSeriesDataItem description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\n DateAxis.prototype.postProcessSeriesDataItem = function (dataItem, interval) {\n var _this = this;\n // we need to do this for all series data items not only added recently, as baseInterval might change\n var intervalID = \"\";\n if (interval) {\n intervalID = interval.timeUnit + interval.count;\n } else {\n interval = this.mainBaseInterval;\n }\n var series = dataItem.component;\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\n $object.each(dataItem.dates, function (key) {\n var date = dataItem.getDate(key);\n var time = date.getTime();\n var startDate = $time.round(new Date(time), interval.timeUnit, interval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\n var startTime = startDate.getTime();\n var endDate = $time.add(new Date(startTime), interval.timeUnit, interval.count, _this._df.utc);\n dataItem.setCalculatedValue(key, startTime, \"open\");\n dataItem.setCalculatedValue(key, endDate.getTime(), \"close\");\n dataItemsByAxis.setKey(startTime + intervalID, dataItem);\n });\n };\n /**\r\n * Collapses empty stretches of date/time scale by creating [[AxisBreak]]\r\n * elements for them.\r\n *\r\n * Can be used to automatically remove strethes without data, like weekends.\r\n *\r\n * No, need to call this manually. It will automatically be done if\r\n * `skipEmptyPeriods = true`.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.addEmptyUnitsBreaks = function () {\n var _this = this;\n if (this.skipEmptyPeriods && $type.isNumber(this.min) && $type.isNumber(this.max)) {\n var timeUnit = this.baseInterval.timeUnit;\n var count = this.baseInterval.count;\n if (this._axisBreaks) {\n this._axisBreaks.clear(); // TODO: what about breaks added by user?\n }\n var date = $time.round(new Date(this.min), timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n var axisBreak = void 0;\n var _loop_1 = function () {\n $time.add(date, timeUnit, count, this_1._df.utc);\n var startTime = date.getTime();\n var startTimeStr = startTime.toString();\n var hasData = $iter.contains(this_1.series.iterator(), function (series) {\n return !!series.dataItemsByAxis.getKey(_this.uid).getKey(startTimeStr + series.currentDataSetId);\n });\n // open break if not yet opened\n if (!hasData) {\n if (!axisBreak) {\n axisBreak = this_1.axisBreaks.create();\n axisBreak.startDate = new Date(startTime);\n this_1._gapBreaks = true;\n }\n } else {\n // close if already opened\n if (axisBreak) {\n // close at end time minus one millisecond\n axisBreak.endDate = new Date(startTime - 1);\n axisBreak = undefined;\n }\n }\n };\n var this_1 = this;\n while (date.getTime() < this.max - this.baseDuration) {\n _loop_1();\n }\n }\n };\n /**\r\n * Updates positioning of Axis breaks after something changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.fixAxisBreaks = function () {\n var _this = this;\n _super.prototype.fixAxisBreaks.call(this);\n var axisBreaks = this._axisBreaks;\n if (axisBreaks) {\n if (axisBreaks.length > 0) {\n // process breaks\n axisBreaks.each(function (axisBreak) {\n var breakGridCount = Math.ceil(_this._gridCount * (Math.min(_this.end, axisBreak.endPosition) - Math.max(_this.start, axisBreak.startPosition)) / (_this.end - _this.start));\n axisBreak.gridInterval = _this.chooseInterval(0, axisBreak.adjustedEndValue - axisBreak.adjustedStartValue, breakGridCount);\n var gridDate = $time.round(new Date(axisBreak.adjustedStartValue), axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._firstWeekDay, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone);\n if (gridDate.getTime() > axisBreak.startDate.getTime()) {\n $time.add(gridDate, axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, _this._df.utc);\n }\n axisBreak.gridDate = gridDate;\n });\n }\n }\n };\n /**\r\n * @ignore\r\n */\n DateAxis.prototype.getFirstWeekDay = function () {\n if (this._df) {\n return this._df.firstDayOfWeek;\n }\n return 1;\n };\n /**\r\n * [getGridDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param date [description]\r\n * @param intervalCount [description]\r\n * @return [description]\r\n */\n DateAxis.prototype.getGridDate = function (date, intervalCount) {\n var timeUnit = this._gridInterval.timeUnit;\n var realIntervalCount = this._gridInterval.count;\n // round date\n $time.round(date, timeUnit, 1, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n var prevTimestamp = date.getTime();\n var newDate = $time.copy(date);\n // modify date by adding intervalcount\n var timestamp = $time.add(newDate, timeUnit, intervalCount, this._df.utc).getTime();\n // if it's axis break, get first rounded date which is not in a break\n var axisBreak = this.isInBreak(timestamp);\n if (axisBreak && axisBreak.endDate) {\n newDate = new Date(axisBreak.endDate.getTime());\n $time.round(newDate, timeUnit, realIntervalCount, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n if (newDate.getTime() < axisBreak.endDate.getTime()) {\n $time.add(newDate, timeUnit, realIntervalCount, this._df.utc);\n }\n timestamp = newDate.getTime();\n }\n // get duration between grid lines with break duration removed\n var durationBreaksRemoved = this.adjustDifference(prevTimestamp, timestamp);\n // calculate how many time units fit to this duration\n var countBreaksRemoved = Math.round(durationBreaksRemoved / $time.getDuration(timeUnit));\n // if less units fit, add one and repeat\n if (countBreaksRemoved < realIntervalCount) {\n return this.getGridDate(date, intervalCount + realIntervalCount);\n }\n return newDate;\n };\n /**\r\n * [getBreaklessDate description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param axisBreak [description]\r\n * @param timeUnit [description]\r\n * @param count [description]\r\n * @return [description]\r\n */\n DateAxis.prototype.getBreaklessDate = function (axisBreak, timeUnit, count) {\n var date = new Date(axisBreak.endValue);\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n $time.add(date, timeUnit, count, this._df.utc);\n var timestamp = date.getTime();\n axisBreak = this.isInBreak(timestamp);\n if (axisBreak) {\n return this.getBreaklessDate(axisBreak, timeUnit, count);\n }\n return date;\n };\n /**\r\n * (Re)validates all Axis elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\n DateAxis.prototype.validateAxisElements = function () {\n var _this = this;\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\n this.calculateZoom();\n // first regular items\n var timestamp = this._gridDate.getTime();\n var timeUnit = this._gridInterval.timeUnit;\n var intervalCount = this._gridInterval.count;\n var prevGridDate = $time.copy(this._gridDate);\n var dataItemsIterator_1 = this._dataItemsIterator;\n this.resetIterators();\n var _loop_2 = function () {\n var date = this_2.getGridDate($time.copy(prevGridDate), intervalCount);\n timestamp = date.getTime();\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\n endDate = $time.add(endDate, timeUnit, intervalCount, this_2._df.utc);\n var format = this_2.dateFormats.getKey(timeUnit);\n if (this_2.markUnitChange && prevGridDate) {\n if ($time.checkChange(date, prevGridDate, this_2._nextGridUnit, this_2._df.utc)) {\n if (timeUnit !== \"year\") {\n format = this_2.periodChangeDateFormats.getKey(timeUnit);\n }\n }\n }\n var text = this_2._df.format(date, format);\n var dataItem = dataItemsIterator_1.find(function (x) {\n return x.text === text;\n });\n if (dataItem.__disabled) {\n dataItem.__disabled = false;\n }\n this_2.appendDataItem(dataItem);\n dataItem.axisBreak = undefined;\n dataItem.date = date;\n dataItem.endDate = endDate;\n dataItem.text = text;\n this_2.validateDataElement(dataItem);\n prevGridDate = date;\n };\n var this_2 = this;\n while (timestamp <= this._maxZoomed) {\n _loop_2();\n }\n // breaks later\n var renderer_1 = this.renderer;\n if (this._axisBreaks) {\n $iter.each(this._axisBreaks.iterator(), function (axisBreak) {\n if (axisBreak.breakSize > 0) {\n var timeUnit_1 = axisBreak.gridInterval.timeUnit;\n var intervalCount_1 = axisBreak.gridInterval.count;\n // only add grid if gap is bigger then minGridDistance\n if ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer_1.minGridDistance * 4) {\n var timestamp_1 = axisBreak.gridDate.getTime();\n var prevGridDate_1;\n var count = 0;\n var _loop_3 = function () {\n var date = $time.copy(axisBreak.gridDate);\n timestamp_1 = $time.add(date, timeUnit_1, intervalCount_1 * count, _this._df.utc).getTime();\n count++;\n if (timestamp_1 > axisBreak.adjustedStartValue && timestamp_1 < axisBreak.adjustedEndValue) {\n var endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\n endDate = $time.add(endDate, timeUnit_1, intervalCount_1, _this._df.utc);\n var format = _this.dateFormats.getKey(timeUnit_1);\n if (_this.markUnitChange && prevGridDate_1) {\n if ($time.checkChange(date, prevGridDate_1, _this._nextGridUnit, _this._df.utc)) {\n if (timeUnit_1 !== \"year\") {\n format = _this.periodChangeDateFormats.getKey(timeUnit_1);\n }\n }\n }\n var text_1 = _this._df.format(date, format);\n var dataItem = dataItemsIterator_1.find(function (x) {\n return x.text === text_1;\n });\n if (dataItem.__disabled) {\n dataItem.__disabled = false;\n }\n //this.processDataItem(dataItem);\n _this.appendDataItem(dataItem);\n dataItem.axisBreak = axisBreak;\n axisBreak.dataItems.moveValue(dataItem);\n dataItem.date = date;\n dataItem.endDate = endDate;\n dataItem.text = text_1;\n prevGridDate_1 = date;\n _this.validateDataElement(dataItem);\n }\n };\n while (timestamp_1 <= axisBreak.adjustedMax) {\n _loop_3();\n }\n }\n }\n });\n }\n }\n };\n /**\r\n * Validates Axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n DateAxis.prototype.validateDataElement = function (dataItem) {\n dataItem.itemIndex = this._axisItemCount;\n this._axisItemCount++;\n if ($type.isNumber(this.max) && $type.isNumber(this.min)) {\n var renderer = this.renderer;\n var timestamp = dataItem.value;\n var endTimestamp = dataItem.endValue;\n if (!$type.isNumber(endTimestamp)) {\n endTimestamp = timestamp;\n }\n var position = this.valueToPosition(timestamp);\n var endPosition = this.valueToPosition(endTimestamp);\n var fillEndPosition = endPosition;\n if (!dataItem.isRange && this._gridInterval.count > this.baseInterval.count) {\n endPosition = position + (endPosition - position) / (this._gridInterval.count / this.baseInterval.count);\n }\n dataItem.position = position;\n var tick = dataItem.tick;\n if (tick && !tick.disabled) {\n renderer.updateTickElement(tick, position, endPosition);\n }\n var grid = dataItem.grid;\n if (grid && !grid.disabled) {\n renderer.updateGridElement(grid, position, endPosition);\n }\n var fill = dataItem.axisFill;\n if (fill && !fill.disabled) {\n renderer.updateFillElement(fill, position, fillEndPosition);\n if (!dataItem.isRange) {\n this.fillRule(dataItem);\n }\n }\n var mask = dataItem.mask;\n if (mask) {\n renderer.updateFillElement(mask, position, endPosition);\n }\n if (dataItem.bullet) {\n renderer.updateBullet(dataItem.bullet, position, endPosition);\n }\n var label = dataItem.label;\n if (label && !label.disabled) {\n var location_1 = label.location;\n if (location_1 == 0) {\n if (this._gridInterval.count == 1 && this._gridInterval.timeUnit != \"week\" && !dataItem.isRange) {\n location_1 = 0.5;\n } else {\n location_1 = 0;\n }\n }\n renderer.updateLabelElement(label, position, endPosition, location_1);\n }\n }\n };\n Object.defineProperty(DateAxis.prototype, \"baseDuration\", {\n /**\r\n * A duration in milliseconds of the `baseInterval`.\r\n *\r\n * @return Duration (ms)\r\n */\n get: function () {\n return $time.getDuration(this.baseInterval.timeUnit, this.baseInterval.count);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adjusts min/max values.\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description (review)\r\n * @param min Min timestamp\r\n * @param max Max timestamp\r\n * @return Adjusted min/max step\r\n */\n DateAxis.prototype.adjustMinMax = function (min, max) {\n return {\n min: min,\n max: max,\n step: this.baseDuration\n };\n };\n /**\r\n * Adjusts the minimum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\n DateAxis.prototype.fixMin = function (value) {\n // like this because months are not equal\n var interval = this.baseInterval;\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\n return startTime + (endTime - startTime) * this.startLocation;\n };\n /**\r\n * Adjusts the maximum timestamp as per cell start location.\r\n *\r\n * @param value Value\r\n * @return Adjusted value\r\n */\n DateAxis.prototype.fixMax = function (value) {\n // like this because months are not equal\n var interval = this.baseInterval;\n var startTime = $time.round(new Date(value), interval.timeUnit, interval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone).getTime();\n var endTime = $time.add(new Date(startTime), interval.timeUnit, interval.count, this._df.utc).getTime();\n return startTime + (endTime - startTime) * this.endLocation;\n };\n /**\r\n * [chooseInterval description]\r\n *\r\n * @ignore Exclude from docs.\r\n * @todo Description\r\n * @param index [description]\r\n * @param duration [description]\r\n * @param gridCount [description]\r\n * @return [description]\r\n */\n DateAxis.prototype.chooseInterval = function (index, duration, gridCount, intervals) {\n if (!intervals) {\n intervals = this.gridIntervals;\n }\n var gridInterval = intervals.getIndex(index);\n var intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\n var lastIndex = intervals.length - 1;\n if (index >= lastIndex) {\n return __assign({}, intervals.getIndex(lastIndex));\n }\n var count = Math.ceil(duration / intervalDuration);\n if (duration < intervalDuration && index > 0) {\n return __assign({}, intervals.getIndex(index - 1));\n }\n if (count <= gridCount) {\n return __assign({}, intervals.getIndex(index));\n } else {\n if (index + 1 < intervals.length) {\n return this.chooseInterval(index + 1, duration, gridCount, intervals);\n } else {\n return __assign({}, intervals.getIndex(index));\n }\n }\n };\n /**\r\n * Formats the value according to axis' own [[DateFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\n DateAxis.prototype.formatLabel = function (value) {\n return this._df.format(value);\n };\n /**\r\n * Converts a Date to an asbolute pixel position within Axis.\r\n *\r\n * @param date Date\r\n * @return Position (px)\r\n */\n DateAxis.prototype.dateToPosition = function (date) {\n return this.valueToPosition(date.getTime());\n };\n /**\r\n * Converts a numeric timestamp or a `Date` to a relative position on axis.\r\n *\r\n * @param date Date or a timestamp\r\n * @return Relative position\r\n */\n DateAxis.prototype.anyToPosition = function (date) {\n if (date instanceof Date) {\n return this.dateToPosition(date);\n } else {\n return this.valueToPosition(date);\n }\n };\n /**\r\n * Converts date to orientation point (x, y, angle) on axis\r\n *\r\n * @param date Date\r\n * @return IOrientationPoint\r\n */\n DateAxis.prototype.dateToPoint = function (date) {\n var position = this.dateToPosition(date);\n var point = this.renderer.positionToPoint(position);\n var angle = this.renderer.positionToAngle(position);\n return {\n x: point.x,\n y: point.y,\n angle: angle\n };\n };\n /**\r\n * Converts a numeric value to orientation (x, y, angle) point on axis\r\n *\r\n * @param value Value\r\n * @return Orientation point\r\n */\n DateAxis.prototype.anyToPoint = function (date) {\n if (date instanceof Date) {\n return this.dateToPoint(date);\n } else {\n return this.valueToPoint(date);\n }\n };\n /**\r\n * Converts pixel position within Axis to a corresponding Date.\r\n *\r\n * @param position Position (px)\r\n * @return Date\r\n */\n DateAxis.prototype.positionToDate = function (position) {\n return new Date(this.positionToValue(position));\n };\n /**\r\n * Returns the relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\n DateAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\n var value = this.getTimeByLocation(dataItem, key, location);\n //let stack: number = dataItem.getValue(\"valueX\", \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n }\n var position = this.valueToPosition(value);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns relative position on axis for series' data item's value.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\n DateAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\n var value = this.getTimeByLocation(dataItem, key, location);\n var stack = dataItem.getValue(\"valueX\", \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n }\n var position = this.valueToPosition(value + stack);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Data field to get value from\r\n * @param location Location (0-1)\r\n * @param stackKey Stack ID\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\n DateAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\n var value = this.getTimeByLocation(dataItem, key, location);\n var stack = dataItem.getValue(stackKey, \"stack\");\n if (!$type.isNumber(value)) {\n value = this.baseValue;\n }\n var position = this.valueToPosition(value + stack);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return this.positionToAngle(position);\n };\n /**\r\n * [getTimeByLocation description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param key [description]\r\n * @param location [description]\r\n * @return [description]\r\n */\n DateAxis.prototype.getTimeByLocation = function (dataItem, key, location) {\n if (!$type.hasValue(key)) {\n return;\n }\n if (!$type.isNumber(location)) {\n location = dataItem.workingLocations[key];\n if (!$type.isNumber(location)) {\n location = 0;\n }\n }\n var startTime = dataItem.values[key][\"open\"];\n var endTime = dataItem.values[key][\"close\"];\n var workingValue = dataItem.values[key].workingValue;\n var value = dataItem.values[key].value;\n var difference = value - workingValue;\n startTime -= difference;\n endTime -= difference;\n if ($type.isNumber(startTime) && $type.isNumber(endTime)) {\n return startTime + (endTime - startTime) * location;\n }\n };\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\n DateAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\n var series = dataItem.component;\n var time;\n var date = dataItem[\"date\" + axisLetter];\n if ($type.isNumber(this.timezoneOffset)) {\n date.setTime(date.getTime() + (date.getTimezoneOffset() - this.timezoneOffset) * 60000);\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\n } else if ($type.hasValue(this.timezone)) {\n date = $time.setTimezone(date, this.timezone);\n dataItem.setValue(\"date\" + axisLetter, date.getTime(), 0);\n dataItem[\"date\" + axisLetter] = date;\n }\n if (date) {\n time = date.getTime();\n } else {\n return;\n }\n var openDate = dataItem[\"openDate\" + axisLetter];\n var prevSeriesTime = this._prevSeriesTime[series.uid];\n var openTime;\n if (openDate) {\n openTime = openDate.getTime();\n }\n if ($type.isNumber(openTime)) {\n var difference = Math.abs(time - openTime);\n if (this._minDifference[series.uid] > difference) {\n this._minDifference[series.uid] = difference;\n }\n }\n var differece = time - prevSeriesTime;\n if (differece > 0) {\n if (this._minDifference[series.uid] > differece) {\n this._minDifference[series.uid] = differece;\n }\n }\n this._prevSeriesTime[series.uid] = time;\n if (series._baseInterval[this.uid]) {\n this.postProcessSeriesDataItem(dataItem);\n }\n };\n /**\r\n * [updateAxisBySeries description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n DateAxis.prototype.updateAxisBySeries = function () {\n _super.prototype.updateAxisBySeries.call(this);\n var baseInterval = this.chooseInterval(0, this.minDifference, 1);\n // handle short months\n if (this.minDifference >= $time.getDuration(\"day\", 27) && baseInterval.timeUnit == \"week\") {\n baseInterval.timeUnit = \"month\";\n baseInterval.count = 1;\n }\n if (baseInterval.timeUnit == \"month\") {\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 2) && baseInterval.count == 1) {\n baseInterval.count = 2;\n }\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 3) && baseInterval.count == 2) {\n baseInterval.count = 3;\n }\n if (this.minDifference >= $time.getDuration(\"day\", 29 * 6) && baseInterval.count == 5) {\n baseInterval.count = 6;\n }\n }\n // handle daylight saving\n if (this.minDifference >= $time.getDuration(\"hour\", 23) && baseInterval.timeUnit == \"hour\") {\n baseInterval.timeUnit = \"day\";\n baseInterval.count = 1;\n }\n if (this.minDifference >= $time.getDuration(\"week\", 1) - $time.getDuration(\"hour\", 1) && baseInterval.timeUnit == \"day\") {\n baseInterval.timeUnit = \"week\";\n baseInterval.count = 1;\n }\n if (this.minDifference >= $time.getDuration(\"year\", 1) - $time.getDuration(\"day\", 1.01) && baseInterval.timeUnit == \"month\") {\n baseInterval.timeUnit = \"year\";\n baseInterval.count = 1;\n }\n this._baseIntervalReal = baseInterval;\n this._mainBaseInterval = baseInterval;\n // no need to invalidate\n };\n Object.defineProperty(DateAxis.prototype, \"baseInterval\", {\n /**\r\n * @return Base interval\r\n */\n get: function () {\n if (this._groupInterval) {\n return this._groupInterval;\n } else if (this._baseInterval) {\n return this._baseInterval;\n } else {\n return this._baseIntervalReal;\n }\n },\n /**\r\n * A base interval (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * For example, if you have a data set that has a data point every 5 minutes,\r\n * you may want to set this to `{ timeUnit: \"minute\", count: 5 }`.\r\n *\r\n * If not set, the Axis will try to determine the setting by its own, looking\r\n * at actual data.\r\n *\r\n * For best results, try to follow these values for `count`:\r\n *\r\n * When unit is \"month\", use 12 / count = round number\r\n * When unit is \"hour\", use 24 / count = round number\r\n * When unit is \"second\" and \"minute\", use 60 / count = round number\r\n *\r\n * @param timeInterval base interval\r\n */\n set: function (timeInterval) {\n if (JSON.stringify(this._baseInterval) != JSON.stringify(timeInterval)) {\n this._baseInterval = timeInterval;\n this._mainBaseInterval = timeInterval;\n if (!$type.isNumber(timeInterval.count)) {\n timeInterval.count = 1;\n }\n this.invalidate();\n this.postProcessSeriesDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"mainBaseInterval\", {\n /**\r\n * Indicates granularity of the data of source (unaggregated) data.\r\n *\r\n * @since 4.7.0\r\n * @return Granularity of the main data set\r\n */\n get: function () {\n if (this._baseInterval) {\n return this._baseInterval;\n } else if (this._mainBaseInterval) {\n return this._mainBaseInterval;\n } else {\n return this._baseIntervalReal;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"skipEmptyPeriods\", {\n /**\r\n * @return Remove empty stretches of time?\r\n */\n get: function () {\n return this.getPropertyValue(\"skipEmptyPeriods\");\n },\n /**\r\n * If enabled, axis will automatically collapse empty (without data points)\r\n * periods of time, i.e. weekends.\r\n *\r\n * An \"empty\" period is considered a stretch of time in the length of current\r\n * `baseInterval` without a single data point in it.\r\n *\r\n * For each such empty period, axis will automatically create an\r\n * [[AxisBreak]]. By default they will be invisible. You can still configure\r\n * them by accessing `axis.breaks.template`.\r\n *\r\n * [More info about breaks](https://www.amcharts.com/docs/v4/concepts/axes/#Breaks).\r\n *\r\n * Important notes:\r\n * * If you set this property to `true`, you can not add your custom axis breaks to this axis anymore.\r\n * * Using this feature affects performance. Use only if you need it.\r\n * * Setting this to `true` will reset appearance of breaks. If you want to modify appearance, do it *after* you set `skipEmptyPeriods`.\r\n * * Some axis label overlapping might happen.\r\n * * This setting is not compatible with `groupData = true`.\r\n *\r\n * @default false\r\n * @param value Remove empty stretches of time?\r\n */\n set: function (value) {\n if (value) {\n var breakTemplate = this.axisBreaks.template;\n breakTemplate.startLine.disabled = true;\n breakTemplate.endLine.disabled = true;\n breakTemplate.fillShape.disabled = true;\n breakTemplate.breakSize = 0;\n } else {\n if (this._gapBreaks) {\n this.axisBreaks.clear();\n this._gapBreaks = false;\n }\n }\n if (this.setPropertyValue(\"skipEmptyPeriods\", value)) {\n this.invalidate();\n this.postProcessSeriesDataItems();\n this.invalidateSeries();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"tooltipDateFormat\", {\n /**\r\n * @return Date format\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipDateFormat\");\n },\n /**\r\n * A special date format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @param value Date format\r\n */\n set: function (value) {\n this.setPropertyValue(\"tooltipDateFormat\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"markUnitChange\", {\n /**\r\n * @return Use different format for period beginning?\r\n */\n get: function () {\n return this.getPropertyValue(\"markUnitChange\");\n },\n /**\r\n * Use `periodChangeDateFormats` to apply different formats to the first\r\n * label in bigger time unit.\r\n *\r\n * @default true\r\n * @param value Use different format for period beginning?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"markUnitChange\", value)) {\n this.invalidateData();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns text to show in a tooltip, based on specific relative position\r\n * within axis.\r\n *\r\n * The label will be formatted as per [[DateFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position\r\n * @return Label (formatted date)\r\n */\n DateAxis.prototype.getTooltipText = function (position) {\n var text;\n var date = this.positionToDate(position);\n date = $time.round(date, this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, new Date(this.min), this._df.timezoneMinutes, this._df.timezone);\n this.tooltipDate = date;\n if ($type.hasValue(this.tooltipDateFormat)) {\n text = this._df.format(date, this.tooltipDateFormat, [\"day\", \"month\", \"week\", \"year\"].indexOf(this.baseInterval.timeUnit) == -1);\n } else {\n var dateFormat = this.dateFormats.getKey(this.baseInterval.timeUnit);\n if (dateFormat) {\n text = this._df.format(date, dateFormat);\n } else {\n text = this.getPositionLabel(position);\n }\n }\n if (!this._adapterO) {\n return text;\n } else {\n return this._adapterO.apply(\"getTooltipText\", text);\n }\n };\n /**\r\n * Takes an absolute position within axis and adjust it to a specific position within base interval. (cell)\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Source position\r\n * @param location Location in the cell\r\n * @return Adjusted position\r\n */\n DateAxis.prototype.roundPosition = function (position, location, axisLocation) {\n var baseInterval = this.baseInterval;\n var timeUnit = baseInterval.timeUnit;\n var count = baseInterval.count;\n var date = this.positionToDate(position);\n $time.round(date, timeUnit, count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n if (location > 0) {\n $time.add(date, timeUnit, location * count, this._df.utc);\n }\n if (axisLocation > 0 && axisLocation < 1) {\n date.setTime(date.getTime() + this.baseDuration * axisLocation);\n }\n if (this.isInBreak(date.getTime())) {\n while (date.getTime() < this.max) {\n $time.add(date, timeUnit, count, this._df.utc);\n if (!this.isInBreak(date.getTime())) {\n break;\n }\n }\n }\n return this.dateToPosition(date);\n };\n /**\r\n * Returns an relative position of the start of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell start relative position\r\n */\n DateAxis.prototype.getCellStartPosition = function (position) {\n return this.roundPosition(position, 0);\n };\n /**\r\n * Returns an relative position of the end of the cell (period), that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Relative position\r\n * @return Cell end relative position\r\n */\n DateAxis.prototype.getCellEndPosition = function (position) {\n return this.roundPosition(position, 1);\n //return this.dateToPosition($time.add(this.positionToDate(this.roundPosition(position, 1)), this.baseInterval.timeUnit, this.baseInterval.count));\n };\n /**\r\n * Returns a Series data item that corresponds to the specific pixel position\r\n * of the Axis.\r\n *\r\n * If `findNearest` (third parameter) is set to `true`, the method will try\r\n * to locate nearest available data item if none is found directly under\r\n * `position`.\r\n *\r\n * @param series Series\r\n * @param position Position (px)\r\n * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n * @return Data item\r\n */\n DateAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\n var value = this.positionToValue(position);\n var location = 0.5;\n if (this.axisLetter == \"Y\") {\n location = series.dataItems.template.locations.dateY;\n } else {\n location = series.dataItems.template.locations.dateX;\n }\n var deltaValue = value - location * this.baseDuration;\n var date = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n var nextDate = $time.round(new Date(value + this.baseDuration), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n if (nextDate.getTime() > date.getTime()) {\n if (Math.abs(nextDate.getTime() - deltaValue) < Math.abs(deltaValue - date.getTime())) {\n date = nextDate;\n }\n }\n var dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\n var dataItem = dataItemsByAxis.getKey(date.getTime() + series.currentDataSetId);\n // todo: alternatively we can find closiest here\n if (!dataItem && findNearest) {\n var key_1;\n if (this.axisLetter == \"Y\") {\n key_1 = \"dateY\";\n } else {\n key_1 = \"dateX\";\n }\n dataItem = series.dataItems.getIndex(series.dataItems.findClosestIndex(date.getTime(), function (x) {\n if (x[key_1]) {\n return x[key_1].getTime();\n } else {\n return -Infinity;\n }\n }, \"any\"));\n }\n return dataItem;\n };\n /**\r\n * Returns a formatted date based on position in axis scale.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\n DateAxis.prototype.getPositionLabel = function (position) {\n // @todo Better format recognition\n var date = this.positionToDate(position);\n return this._df.format(date, this.getCurrentLabelFormat());\n };\n /**\r\n * Returns label date format based on currently used time units\r\n *\r\n * @return Format\r\n */\n DateAxis.prototype.getCurrentLabelFormat = function () {\n return this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : \"day\");\n };\n /**\r\n * Initializes an Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\n DateAxis.prototype.initRenderer = function () {\n _super.prototype.initRenderer.call(this);\n var renderer = this.renderer;\n if (renderer) {\n // Set defaults\n renderer.ticks.template.location = 0;\n renderer.grid.template.location = 0;\n renderer.labels.template.location = 0;\n renderer.baseGrid.disabled = true;\n }\n };\n Object.defineProperty(DateAxis.prototype, \"basePoint\", {\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\n get: function () {\n return {\n x: 0,\n y: 0\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n DateAxis.prototype.animateMinMax = function (min, max) {\n var _this = this;\n var animation = this.animate([{\n property: \"_minAdjusted\",\n from: this._minAdjusted,\n to: min\n }, {\n property: \"_maxAdjusted\",\n from: this._maxAdjusted,\n to: max\n }], this.rangeChangeDuration, this.rangeChangeEasing);\n animation.events.on(\"animationprogress\", function () {\n _this.dispatch(\"extremeschanged\");\n });\n return animation;\n };\n /**\r\n * Invalidates axis data items when series extremes change\r\n */\n DateAxis.prototype.handleExtremesChange = function () {\n _super.prototype.handleExtremesChange.call(this);\n if (this.groupData) {\n var id = this.baseInterval.timeUnit + this.baseInterval.count;\n this.groupMin[id] = this._finalMin;\n this.groupMax[id] = this._finalMax;\n }\n };\n /**\r\n * Zooms axis to specific Dates.\r\n *\r\n * @param startDate Start date\r\n * @param endValue End date\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\n DateAxis.prototype.zoomToDates = function (startDate, endDate, skipRangeEvent, instantly, adjust) {\n startDate = this._df.parse(startDate);\n endDate = this._df.parse(endDate);\n this.zoomToValues(startDate.getTime(), endDate.getTime(), skipRangeEvent, instantly, adjust);\n };\n /**\r\n * Zooms axis to specific values.\r\n *\r\n * @param startValue Start value\r\n * @param endValue End value\r\n * @param skipRangeEvent Do not invoke events\r\n * @param instantly Do not play zoom animations\r\n */\n DateAxis.prototype.zoomToValues = function (startValue, endValue, skipRangeEvent, instantly, adjust) {\n var _this = this;\n if (!this.groupData) {\n //let start: number = (startValue - this.min) / (this.max - this.min);\n //let end: number = (endValue - this.min) / (this.max - this.min);\n var start = this.valueToPosition(startValue);\n var end = this.valueToPosition(endValue);\n this.zoom({\n start: start,\n end: end\n }, skipRangeEvent, instantly);\n } else {\n var difference = this.adjustDifference(startValue, endValue);\n var isEnd = false;\n if (endValue == this.max) {\n isEnd = true;\n }\n var isStart = false;\n if (startValue == this.min) {\n isStart = true;\n }\n if ($type.hasValue(difference)) {\n var mainBaseInterval = this.mainBaseInterval;\n var groupInterval_1 = this.chooseInterval(0, difference, this.groupCount, this.groupIntervals);\n if (groupInterval_1.timeUnit == mainBaseInterval.timeUnit && groupInterval_1.count < mainBaseInterval.count || $time.getDuration(groupInterval_1.timeUnit, 1) < $time.getDuration(mainBaseInterval.timeUnit, 1)) {\n groupInterval_1 = __assign({}, mainBaseInterval);\n }\n var id = groupInterval_1.timeUnit + groupInterval_1.count;\n var min_1 = this.groupMin[id];\n var max_1 = this.groupMax[id];\n if (!$type.isNumber(min_1) || !$type.isNumber(max_1)) {\n min_1 = Number.POSITIVE_INFINITY;\n max_1 = Number.NEGATIVE_INFINITY;\n this.series.each(function (series) {\n var seriesMin = series.min(_this);\n var seriesMax = series.max(_this);\n if (series._dataSets) {\n var ds = series._dataSets.getKey(groupInterval_1.timeUnit + groupInterval_1.count);\n if (ds) {\n var mindi = ds.getIndex(0);\n var maxdi = ds.getIndex(ds.length - 1);\n if (mindi) {\n if (series.xAxis == _this) {\n seriesMin = mindi.dateX.getTime();\n } else if (series.yAxis == _this) {\n seriesMin = mindi.dateY.getTime();\n }\n }\n if (maxdi) {\n if (series.xAxis == _this) {\n seriesMax = maxdi.dateX.getTime();\n } else if (series.yAxis == _this) {\n seriesMax = maxdi.dateY.getTime();\n }\n }\n }\n }\n seriesMax = $time.round($time.add(new Date(seriesMax), groupInterval_1.timeUnit, 1, _this._df.utc), groupInterval_1.timeUnit, 1, _this._df.firstDayOfWeek, _this._df.utc, undefined, _this._df.timezoneMinutes, _this._df.timezone).getTime();\n if (seriesMin < min_1) {\n min_1 = seriesMin;\n }\n if (seriesMax > max_1) {\n max_1 = seriesMax;\n }\n });\n this.groupMin[id] = min_1;\n this.groupMax[id] = max_1;\n }\n startValue = $math.fitToRange(startValue, min_1, max_1);\n endValue = $math.fitToRange(endValue, min_1, max_1);\n if (adjust) {\n if (isEnd) {\n startValue = endValue - difference;\n startValue = $math.fitToRange(startValue, min_1, max_1);\n }\n if (isStart) {\n endValue = startValue + difference;\n endValue = $math.fitToRange(endValue, min_1, max_1);\n }\n }\n var start = (startValue - min_1) / (max_1 - min_1);\n var end = (endValue - min_1) / (max_1 - min_1);\n this.zoom({\n start: start,\n end: end\n }, skipRangeEvent, instantly);\n }\n }\n };\n /**\r\n * Adds `baseInterval` to \"as is\" fields.\r\n *\r\n * @param field Field name\r\n * @return Assign as is?\r\n */\n DateAxis.prototype.asIs = function (field) {\n return field == \"baseInterval\" || _super.prototype.asIs.call(this, field);\n };\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\n DateAxis.prototype.copyFrom = function (source) {\n var _this = this;\n _super.prototype.copyFrom.call(this, source);\n this.dateFormats = source.dateFormats;\n this.periodChangeDateFormats = source.periodChangeDateFormats;\n this.groupIntervals.clear();\n source.groupIntervals.each(function (interval) {\n _this.groupIntervals.push(__assign({}, interval));\n });\n this.gridIntervals.clear();\n source.gridIntervals.each(function (interval) {\n _this.gridIntervals.push(__assign({}, interval));\n });\n if (source._baseInterval) {\n this.baseInterval = source._baseInterval;\n }\n };\n /**\r\n * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n *\r\n * @param position Position (0-1)\r\n * @param local or global position\r\n */\n DateAxis.prototype.showTooltipAtPosition = function (position, local) {\n var _this = this;\n if (!local) {\n position = this.toAxisPosition(position);\n }\n if (this.snapTooltip) {\n // rounding is not good, pen/aac4e7f66f019d36b2447f050c600c13 (no last tootltip shown)\n var actualDate = this.positionToDate(position); //$time.round(this.positionToDate(position), this.baseInterval.timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n var actualTime_1 = actualDate.getTime();\n var closestDate_1;\n this.series.each(function (series) {\n if (series.baseAxis == _this) {\n var dataItem = _this.getSeriesDataItem(series, position, true);\n if (dataItem) {\n var date = void 0;\n if (series.xAxis == _this) {\n date = dataItem.dateX;\n }\n if (series.yAxis == _this) {\n date = dataItem.dateY;\n }\n if (!closestDate_1) {\n closestDate_1 = date;\n } else {\n if (Math.abs(closestDate_1.getTime() - actualTime_1) > Math.abs(date.getTime() - actualTime_1)) {\n closestDate_1 = date;\n }\n }\n }\n }\n });\n if (closestDate_1) {\n var closestTime_1 = closestDate_1.getTime();\n closestDate_1 = $time.round(new Date(closestTime_1), this.baseInterval.timeUnit, this.baseInterval.count, this._firstWeekDay, this._df.utc, undefined, this._df.timezoneMinutes, this._df.timezone);\n closestTime_1 = closestDate_1.getTime();\n var tooltipLocation = this.renderer.tooltipLocation;\n if (tooltipLocation == 0) {\n tooltipLocation = 0.0001;\n }\n closestDate_1 = new Date(closestDate_1.getTime() + this.baseDuration * tooltipLocation);\n position = this.dateToPosition(closestDate_1);\n if (this.chart.cursor && this.chart.cursor.snapToSeries) {\n //void\n } else {\n this.series.each(function (series) {\n var dataItem = series.dataItemsByAxis.getKey(_this.uid).getKey(closestTime_1 + series.currentDataSetId);\n var point = series.showTooltipAtDataItem(dataItem);\n if (point) {\n _this.chart._seriesPoints.push({\n series: series,\n point: point\n });\n } else {\n // check, otherwise column tooltip will be hidden\n if (series.tooltipText || series.tooltipHTML) {\n series.hideTooltip();\n }\n }\n });\n }\n //this.chart.sortSeriesTooltips(seriesPoints);\n }\n }\n _super.prototype.showTooltipAtPosition.call(this, position, true);\n };\n Object.defineProperty(DateAxis.prototype, \"snapTooltip\", {\n /**\r\n * @return Should snap?\r\n */\n get: function () {\n return this.getPropertyValue(\"snapTooltip\");\n },\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position.\r\n *\r\n * @default true\r\n * @param value Should snap?\r\n */\n set: function (value) {\n this.setPropertyValue(\"snapTooltip\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"groupData\", {\n /**\r\n * @return Group data points?\r\n */\n get: function () {\n return this.getPropertyValue(\"groupData\");\n },\n /**\r\n * Indicates if data should be aggregated to composide data items if there\r\n * are more data items in selected range than `groupCount`.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * NOTE: This works only if [[DateAxis]] is base axis of an [[XYSeries]].\r\n *\r\n * The related [[XYSeries]] also needs to be set up to take advantage of, by\r\n * setting its [`groupFields`](https://www.amcharts.com/docs/v4/reference/xyseries/#groupFields_property).\r\n *\r\n * The group intervals to aggregate data to is defined by `groupIntervals`\r\n * property.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default false\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n * @param value Group data points?\r\n */\n set: function (value) {\n var _this = this;\n if (this.setPropertyValue(\"groupData\", value)) {\n this.series.each(function (series) {\n series.setDataSet(\"\");\n if (value && !series.dataGrouped && series.inited) {\n series._baseInterval[_this.uid] = _this.mainBaseInterval;\n _this.groupSeriesData(series);\n }\n });\n this._currentDataSetId = \"\";\n this._groupInterval = undefined;\n this.invalidate();\n this.invalidateSeries();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"groupInterval\", {\n /**\r\n * @return Interval\r\n */\n get: function () {\n return this.getPropertyValue(\"groupInterval\");\n },\n /**\r\n * Disables automatic selection of data grouping intervals and always uses\r\n * `groupInterval` if set. Works only if `groupData = true`.\r\n *\r\n * @since 4.9.24\r\n * @param value Interval\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"groupInterval\", value)) {\n this.invalidate();\n this.invalidateSeries();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"groupCount\", {\n /**\r\n * @return Number of data items\r\n */\n get: function () {\n return this.getPropertyValue(\"groupCount\");\n },\n /**\r\n * Indicates threshold of data items in selected range at which to start\r\n * aggregating data items if `groupData = true`.\r\n *\r\n * @default 200\r\n * @since 4.7.0\r\n * @param value Number of data items\r\n */\n set: function (value) {\n this.setPropertyValue(\"groupCount\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"timezoneOffset\", {\n /**\r\n * @todo Timezone offset in minutes\r\n */\n get: function () {\n return this.getPropertyValue(\"timezoneOffset\");\n },\n /**\r\n * If set will recalculate all timestamps in data by applying specific offset\r\n * in minutes.\r\n *\r\n * IMPORTANT: do not set `timezoneOffset` on both `DateAxis` and `dateFormatter`. It\r\n * will skew your results by applying offset twice.\r\n *\r\n * @since 4.8.5\r\n * @param value Time zone offset in minutes\r\n */\n set: function (value) {\n this.setPropertyValue(\"timezoneOffset\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"timezone\", {\n /**\r\n * @return Timezone\r\n */\n get: function () {\n return this.getPropertyValue(\"timezone\");\n },\n /**\r\n * If set will recalculate all timestamps in data to specific named timezone,\r\n * e.g. `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`, etc.\r\n *\r\n * IMPORTANT: it is no longer recommended to use this setting. Please\r\n * set`timezone` on `dateFormatter`.\r\n *\r\n * @deprecated\r\n * @since 4.10.1\r\n * @param value Time zone\r\n */\n set: function (value) {\n this.setPropertyValue(\"timezone\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateAxis.prototype, \"gridInterval\", {\n /**\r\n * Current grid interval.\r\n *\r\n * @return Grid interval\r\n */\n get: function () {\n return this._gridInterval;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n DateAxis.prototype.makeGap = function (dataItem, previous) {\n var series = dataItem.component;\n if (dataItem && previous) {\n if (!series.connect && $type.isNumber(series.autoGapCount)) {\n if (series.baseAxis == this) {\n var date = dataItem.dates[\"date\" + this.axisLetter];\n var prevDate = previous.dates[\"date\" + this.axisLetter];\n if (date && prevDate) {\n var time = date.getTime();\n var prevTime = prevDate.getTime();\n if (time - prevTime > series.autoGapCount * this.baseDuration) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n Object.defineProperty(DateAxis.prototype, \"baseValue\", {\n /**\r\n * @return base value\r\n */\n get: function () {\n return this.min;\n },\n enumerable: true,\n configurable: true\n });\n return DateAxis;\n}(ValueAxis);\nexport { DateAxis };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DateAxis\"] = DateAxis;\nregistry.registeredClasses[\"DateAxisDataItem\"] = DateAxisDataItem;\n//# sourceMappingURL=DateAxis.js.map","/**\r\n * Module, defining Axis Renderer for vertical axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRenderer } from \"./AxisRenderer\";\nimport { AxisBullet } from \"./AxisBullet\";\nimport { WavedLine } from \"../../core/elements/WavedLine\";\nimport { WavedRectangle } from \"../../core/elements/WavedRectangle\";\nimport { registry } from \"../../core/Registry\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A renderer for horizontal axis.\r\n *\r\n * @see {@link IAxisRendererEvents} for a list of available events\r\n * @see {@link IAxisRendererAdapters} for a list of available Adapters\r\n */\nvar AxisRendererX = /** @class */function (_super) {\n __extends(AxisRendererX, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererX() {\n var _this = _super.call(this) || this;\n _this.className = \"AxisRendererX\";\n _this.minGridDistance = 120;\n _this.opposite = false;\n _this.rotation = 0;\n _this.width = percent(100);\n _this.labels.template.horizontalCenter = \"middle\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * @ignore\r\n */\n AxisRendererX.prototype.setAxis = function (axis) {\n _super.prototype.setAxis.call(this, axis);\n axis.layout = \"vertical\";\n };\n /**\r\n * @ignore\r\n */\n AxisRendererX.prototype.updateGridContainer = function () {\n var axis = this.axis;\n if (axis) {\n var gridContainer = this.gridContainer;\n gridContainer.x = axis.pixelX;\n gridContainer.width = axis.axisLength;\n }\n };\n /**\r\n * Called when rendered is attached to an Axis, as well as a property of\r\n * Axis that might affect the appearance is updated.\r\n *\r\n * E.g. `axis.opposite`, `axis.inside`, etc.\r\n *\r\n * This method is called **before** draw, so that any related setting\r\n * changed in this method can be changed.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRendererX.prototype.processRenderer = function () {\n _super.prototype.processRenderer.call(this);\n // can not do this in init, as axis is set later\n var axis = this.axis;\n if (axis) {\n if (!(axis.width instanceof Percent)) {\n axis.width = percent(100);\n }\n // @todo Is thi sneeded?\n $utils.used(this.line);\n var title = axis.title;\n title.rotation = 0;\n title.align = \"center\";\n if (this.opposite) {\n this.line.toFront();\n title.toBack();\n } else {\n title.toFront();\n this.toBack();\n this.line.toBack();\n }\n }\n };\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRendererX.prototype.updateTooltip = function () {\n var axis = this.axis;\n if (axis) {\n var bigNum = 1000;\n var bbx = this.line.pixelX;\n var bby = this.line.pixelY;\n var bbw = this.axisLength;\n var bbh = bigNum;\n // top\n if (this.opposite) {\n if (!this.inside) {\n bby = -bigNum;\n bbh = bigNum;\n }\n }\n // bottom\n else {\n if (this.inside) {\n bby = -bigNum;\n bbh = bigNum;\n }\n }\n this.axis.updateTooltip(\"vertical\", {\n x: bbx,\n y: bby,\n width: bbw,\n height: bbh\n });\n }\n };\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRendererX.prototype.updateLabelElement = function (label, position, endPosition, location) {\n if (!$type.hasValue(location)) {\n location = label.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n label.isMeasured = !label.inside;\n var deltaY = 0;\n var verticalCenter;\n var maxHeight = this.gridContainer.maxHeight;\n if (this.opposite) {\n if (label.inside) {\n verticalCenter = \"top\";\n if (label.valign == \"bottom\") {\n deltaY = maxHeight;\n verticalCenter = \"bottom\";\n }\n if (label.valign == \"middle\") {\n deltaY = maxHeight / 2;\n verticalCenter = \"middle\";\n }\n } else {\n verticalCenter = \"bottom\";\n }\n point.y = deltaY;\n } else {\n if (label.inside) {\n verticalCenter = \"bottom\";\n if (label.valign == \"top\") {\n deltaY = -maxHeight;\n verticalCenter = \"top\";\n }\n if (label.valign == \"middle\") {\n deltaY = -maxHeight / 2;\n verticalCenter = \"middle\";\n }\n } else {\n verticalCenter = \"top\";\n }\n point.y += deltaY;\n }\n if (label.rotation == 0) {\n // Apply fuzzy logic to verticalCenter only if labels are not rotated\n label.verticalCenter = verticalCenter;\n }\n this.positionItem(label, point);\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\n };\n Object.defineProperty(AxisRendererX.prototype, \"axisLength\", {\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\n get: function () {\n var axis = this.axis;\n return axis.measuredWidth - axis.pixelPaddingRight - axis.pixelPaddingLeft || 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\n AxisRendererX.prototype.positionToPoint = function (position, position2) {\n return {\n x: this.positionToCoordinate(position),\n y: 0\n };\n };\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\n AxisRendererX.prototype.pointToPosition = function (point) {\n return this.coordinateToPosition(point.x, point.y);\n };\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\n AxisRendererX.prototype.getPositionRangePath = function (startPosition, endPosition) {\n var x1 = $math.fitToRange(this.positionToCoordinate(startPosition), 0, this.axisLength);\n var x2 = $math.fitToRange(this.positionToCoordinate(endPosition), 0, this.axisLength);\n var w = Math.abs(x2 - x1);\n var h = this.getHeight();\n var x = Math.min(x1, x2);\n var y = 0;\n return $path.rectToPath({\n x: x,\n y: y,\n width: w,\n height: h\n }, true);\n };\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\n AxisRendererX.prototype.updateBreakElement = function (axisBreak) {\n _super.prototype.updateBreakElement.call(this, axisBreak);\n var startLine = axisBreak.startLine;\n var endLine = axisBreak.endLine;\n var fillShape = axisBreak.fillShape;\n var startPoint = axisBreak.startPoint;\n var endPoint = axisBreak.endPoint;\n var y1 = axisBreak.pixelMarginLeft;\n var y2 = this.getHeight() - axisBreak.pixelMarginTop - axisBreak.pixelMarginBottom;\n startPoint.x = $math.fitToRange(startPoint.x, -1, this.axisLength + 1);\n endPoint.x = $math.fitToRange(endPoint.x, -1, this.axisLength + 1);\n if (startPoint.x == endPoint.x && (startPoint.x < 0 || startPoint.x > this.axisLength)) {\n axisBreak.fillShape.__disabled = true;\n } else {\n axisBreak.fillShape.__disabled = false;\n }\n startLine.y = y1;\n startLine.width = 0;\n startLine.height = y2;\n endLine.y = y1;\n endLine.width = 0;\n endLine.height = y2;\n fillShape.height = y2;\n fillShape.width = Math.abs(endPoint.x - startPoint.x);\n fillShape.y = y1;\n fillShape.x = startPoint.x;\n };\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererX.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n //point.x = $utils.spritePointToSprite({x:point.x, y:0}, this, this.gridContainer).x;\n grid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: this.getHeight()\n });\n this.positionItem(grid, point);\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererX.prototype.updateTickElement = function (tick, position, endPosition) {\n position = position + (endPosition - position) * tick.location;\n var point = this.positionToPoint(position);\n var tickLength = tick.length;\n point.y = $utils.spritePointToSprite({\n x: 0,\n y: this.line.pixelY\n }, this.line.parent, this.gridContainer).y;\n if (this.opposite) {\n tickLength *= tick.inside ? 1 : -1;\n } else {\n tickLength *= tick.inside ? -1 : 1;\n }\n tick.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: tickLength\n });\n this.positionItem(tick, point);\n this.toggleVisibility(tick, position, 0, 1);\n };\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererX.prototype.updateAxisLine = function () {\n this.line.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: this.axisLength,\n y: 0\n });\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererX.prototype.updateBaseGridElement = function () {\n _super.prototype.updateBaseGridElement.call(this);\n var axis = this.axis;\n var h = this.getHeight();\n var w = this.axisLength;\n var baseGrid = this.baseGrid;\n var x = axis.basePoint.x;\n if (x < -0.2 || x > w + 0.2) {\n baseGrid.hide(0);\n } else {\n var y = $utils.spritePointToSprite({\n x: 0,\n y: 0\n }, this.gridContainer, baseGrid.parent).y;\n baseGrid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: h\n });\n baseGrid.moveTo({\n x: x,\n y: y\n });\n baseGrid.show(0);\n }\n };\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\n AxisRendererX.prototype.createBreakSprites = function (axisBreak) {\n axisBreak.startLine = new WavedLine();\n axisBreak.endLine = new WavedLine();\n var wavedRectangle = new WavedRectangle();\n wavedRectangle.setWavedSides(false, true, false, true);\n axisBreak.fillShape = wavedRectangle;\n };\n /**\r\n * @ignore\r\n */\n AxisRendererX.prototype.toAxisPosition = function (value) {\n var inversedPosition = value;\n var axis = this.axis;\n if (axis) {\n var relativePositionSprite = axis.relativePositionSprite;\n var x = axis.pixelX;\n if (relativePositionSprite) {\n x = $utils.spritePointToSprite({\n x: this.pixelX,\n y: 0\n }, this.parent, relativePositionSprite).x;\n } else {\n relativePositionSprite = axis.parent;\n }\n if (relativePositionSprite) {\n var relativeX = x / relativePositionSprite.innerWidth;\n var relativeWidth = axis.axisLength / relativePositionSprite.innerWidth;\n return (inversedPosition - relativeX) / relativeWidth;\n }\n }\n return value;\n };\n /**\r\n * Updates and positions axis bullets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererX.prototype.updateBullet = function (bullet, position, endPosition) {\n var location = 0.5;\n if (bullet instanceof AxisBullet) {\n location = bullet.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n point.y = $utils.spritePointToSprite({\n x: 0,\n y: this.line.pixelY\n }, this.line.parent, this.gridContainer).y;\n this.positionItem(bullet, point);\n this.toggleVisibility(bullet, position, 0, 1);\n };\n return AxisRendererX;\n}(AxisRenderer);\nexport { AxisRendererX };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRendererX\"] = AxisRendererX;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Put labels inside plot area.\r\n * Disable first and last labels.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXS,\n state: function (target, stateId) {\n if (target instanceof AxisRendererX) {\n var state = target.states.create(stateId);\n state.properties.inside = true;\n state.properties.maxLabelPosition = 0.9;\n state.properties.minLabelPosition = 0.1;\n return state;\n }\n return null;\n }\n});\n/**\r\n * Disable labels altogather on very small charts\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.heightXXS,\n state: function (target, stateId) {\n if (target instanceof AxisRendererX) {\n var state = target.states.create(stateId);\n state.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=AxisRendererX.js.map","/**\r\n * A module which defines functionality related to Category Axis Break.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisBreak } from \"./AxisBreak\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Base class to define \"breaks\" in axes\r\n * @see {@link ICategoryAxisBreakEvents} for a list of available events\r\n * @see {@link ICategoryAxisBreakAdapters} for a list of available Adapters\r\n */\nvar CategoryAxisBreak = /** @class */function (_super) {\n __extends(CategoryAxisBreak, _super);\n /**\r\n * Constructor\r\n */\n function CategoryAxisBreak() {\n var _this = _super.call(this) || this;\n _this.className = \"CategoryAxisBreak\";\n _this.properties.startLocation = 0.5;\n _this.properties.endLocation = 0.5;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(CategoryAxisBreak.prototype, \"startPosition\", {\n /**\r\n * Pixel position of the break's start.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\n get: function () {\n if (this.axis) {\n return this.axis.indexToPosition(this.adjustedStartValue, this.startLocation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"endPosition\", {\n /**\r\n * Pixel position of the break's end.\r\n *\r\n * @return Position (px)\r\n * @readonly\r\n */\n get: function () {\n if (this.axis) {\n return this.axis.indexToPosition(this.adjustedEndValue, this.endLocation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"startCategory\", {\n /**\r\n * @return Start category\r\n */\n get: function () {\n return this.getPropertyValue(\"startCategory\");\n },\n /**\r\n * A category break starts on.\r\n *\r\n * @param value Start category\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startCategory\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"endCategory\", {\n /**\r\n * @return End category\r\n */\n get: function () {\n return this.getPropertyValue(\"endCategory\");\n },\n /**\r\n * A category break ends on.\r\n *\r\n * @param value End category\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endCategory\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"startValue\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n var category = this.getPropertyValue(\"startCategory\");\n if (category) {\n return this.axis.categoryToIndex(category);\n } else {\n return this.getPropertyValue(\"startValue\");\n }\n },\n /**\r\n * An index of start category.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startValue\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"endValue\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n var category = this.getPropertyValue(\"endCategory\");\n if (category) {\n return this.axis.categoryToIndex(category);\n } else {\n return this.getPropertyValue(\"endValue\");\n }\n },\n /**\r\n * An index of end category or a end value.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endValue\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"startLocation\", {\n /**\r\n * @return Break start location\r\n */\n get: function () {\n return this.getPropertyValue(\"startLocation\");\n },\n /**\r\n * Indicates where within starting category break should begin.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break start location\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startLocation\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisBreak.prototype, \"endLocation\", {\n /**\r\n * @return Break end location\r\n */\n get: function () {\n return this.getPropertyValue(\"endLocation\");\n },\n /**\r\n * Indicates where within ending category break should end.\r\n *\r\n * Values range from `0` (start) to `1` (end), with default being `0.5` (middle).\r\n *\r\n * E.g. if you want to a break to fully encompass start and end categories,\r\n * you should set `startLocation = 0` and `endLocation = 1`.\r\n *\r\n * @since 4.9.17\r\n * @default 0.5\r\n * @param value Break end location\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endLocation\", value)) {\n if (this.axis) {\n this.axis.invalidateDataItems();\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return CategoryAxisBreak;\n}(AxisBreak);\nexport { CategoryAxisBreak };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CategoryAxisBreak\"] = CategoryAxisBreak;\n//# sourceMappingURL=CategoryAxisBreak.js.map","/**\r\n * Category axis module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Axis, AxisDataItem } from \"./Axis\";\nimport { AxisRendererX } from \"./AxisRendererX\";\nimport { AxisRendererY } from \"./AxisRendererY\";\nimport { registry } from \"../../core/Registry\";\nimport { Dictionary } from \"../../core/utils/Dictionary\";\nimport { CategoryAxisBreak } from \"./CategoryAxisBreak\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $iter from \"../../core/utils/Iterator\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[CategoryAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar CategoryAxisDataItem = /** @class */function (_super) {\n __extends(CategoryAxisDataItem, _super);\n /**\r\n * Constructor\r\n */\n function CategoryAxisDataItem() {\n var _this = _super.call(this) || this;\n _this.seriesDataItems = {};\n _this.className = \"CategoryAxisDataItem\";\n _this.text = \"{category}\";\n _this.locations.category = 0;\n _this.locations.endCategory = 1;\n _this.deltaPosition = 0;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(CategoryAxisDataItem.prototype, \"category\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n if (this._adapterO) {\n if (this._adapterO.isEnabled(\"category\")) {\n return this._adapterO.apply(\"category\", this.properties.category);\n }\n }\n return this.properties.category;\n },\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\n set: function (value) {\n var oldCategory = this.properties.category;\n this.setProperty(\"category\", value);\n if ($type.hasValue(oldCategory) && oldCategory != value) {\n if (this.component) {\n this.component.validateDataElement(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisDataItem.prototype, \"endCategory\", {\n /**\r\n * @return End category\r\n */\n get: function () {\n return this.properties.endCategory;\n },\n /**\r\n * End category.\r\n *\r\n * Used for items that span several categories, like [[CategoryAxisBreak]].\r\n *\r\n * @param value End category\r\n */\n set: function (value) {\n this.setProperty(\"endCategory\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxisDataItem.prototype, \"deltaPosition\", {\n get: function () {\n return this.properties.deltaCoordinate;\n },\n set: function (value) {\n if (value != this.properties.deltaCoordinate) {\n this.setProperty(\"deltaCoordinate\", value);\n if (this.component) {\n this.component.invalidateDataItems();\n this.component.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return CategoryAxisDataItem;\n}(AxisDataItem);\nexport { CategoryAxisDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to create a category-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"CategoryAxis\",\r\n * \"title\": {\r\n * \"text\": \"Clients\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link ICategoryAxisEvents} for a list of available Events\r\n * @see {@link ICategoryAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar CategoryAxis = /** @class */function (_super) {\n __extends(CategoryAxis, _super);\n /**\r\n * Constructor\r\n */\n function CategoryAxis() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A collection that holds Axis' data items sorted by each category.\r\n */\n _this.dataItemsByCategory = new Dictionary();\n _this.className = \"CategoryAxis\";\n // Set field name\n _this.axisFieldName = \"category\";\n _this._lastDataItem = _this.createDataItem();\n _this._lastDataItem.component = _this;\n _this._disposers.push(_this._lastDataItem);\n // Apply theme\n _this.applyTheme();\n var dataItemsByCategory = _this.dataItemsByCategory;\n _this.addDisposer(_this.mainDataSet.events.on(\"removed\", function (event) {\n dataItemsByCategory.removeKey(event.oldValue.category);\n }));\n return _this;\n }\n /**\r\n * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n CategoryAxis.prototype.createDataItem = function () {\n return new CategoryAxisDataItem();\n };\n /**\r\n * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n *\r\n * @return Axis break\r\n */\n CategoryAxis.prototype.createAxisBreak = function () {\n return new CategoryAxisBreak();\n };\n /**\r\n * Processes a related series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\n CategoryAxis.prototype.processSeriesDataItem = function (dataItem, axisLetter) {\n _super.prototype.processSeriesDataItem.call(this, dataItem, axisLetter);\n var category = dataItem[\"category\" + this.axisLetter];\n if ($type.hasValue(category)) {\n var categoryAxisDataItem = this.dataItemsByCategory.getKey(category);\n if (categoryAxisDataItem) {\n var seriesId = dataItem.component.uid;\n var seriesDataItems = categoryAxisDataItem.seriesDataItems[seriesId];\n if (!seriesDataItems) {\n seriesDataItems = [];\n categoryAxisDataItem.seriesDataItems[seriesId] = seriesDataItems;\n }\n seriesDataItems.push(dataItem);\n }\n } else {\n dataItem.component.dataItems.remove(dataItem);\n }\n };\n /**\r\n * Validates the data range.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\n CategoryAxis.prototype.validateDataRange = function () {\n var _this = this;\n _super.prototype.validateDataRange.call(this);\n $iter.each(this._series.iterator(), function (series) {\n if (series.xAxis instanceof CategoryAxis && series.yAxis instanceof CategoryAxis) {\n series.invalidateDataRange();\n } else {\n var startIndex = _this.positionToIndex(_this.start);\n var endIndex = _this.positionToIndex(_this.end);\n if (endIndex >= _this.dataItems.length) {\n endIndex--;\n }\n var seriesId = series.uid;\n var minIndex = void 0;\n var maxIndex = void 0;\n for (var i = startIndex; i <= endIndex; i++) {\n var axisDataItem = _this.dataItems.getIndex(i);\n if (axisDataItem) {\n var seriesDataItems = axisDataItem.seriesDataItems[seriesId];\n if (seriesDataItems) {\n for (var i_1 = 0; i_1 < seriesDataItems.length; i_1++) {\n var seriesDataItem = seriesDataItems[i_1];\n if (seriesDataItem) {\n var index = seriesDataItem.index;\n if (!$type.isNumber(minIndex) || index < minIndex) {\n minIndex = index;\n }\n if (!$type.isNumber(maxIndex) || index > maxIndex) {\n maxIndex = index;\n }\n }\n }\n }\n }\n }\n if ($type.isNumber(minIndex)) {\n series.startIndex = minIndex;\n } else {\n series.start = _this.start;\n }\n if ($type.isNumber(maxIndex)) {\n series.endIndex = maxIndex + 1;\n } else {\n series.end = _this.end;\n }\n // range might not change, but axis breaks might.\n if (_this._axisBreaks && _this._axisBreaks.length > 0) {\n series.invalidateDataRange();\n }\n }\n });\n };\n /**\r\n * Validates the whole axis. Causes it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n */\n CategoryAxis.prototype.validate = function () {\n var _this = this;\n _super.prototype.validate.call(this);\n var dataCount = this.dataItems.length;\n var startIndex = $math.fitToRange(Math.floor(this.start * dataCount - 1), 0, dataCount);\n var endIndex = $math.fitToRange(Math.ceil(this.end * dataCount), 0, dataCount);\n if (this.renderer.invalid) {\n this.renderer.validate();\n }\n // find frequency at which we'll show items\n var maxCount = this.renderer.axisLength / Math.max(this.renderer.minGridDistance, 1 / Number.MAX_SAFE_INTEGER);\n var frequency = Math.min(this.dataItems.length, Math.ceil((endIndex - startIndex) / maxCount));\n this._startIndex = Math.floor(startIndex / frequency) * frequency;\n this._endIndex = Math.ceil(this.end * dataCount);\n this.fixAxisBreaks();\n if (this._startIndex == this._endIndex) {\n this._endIndex++;\n }\n this._frequency = frequency;\n if (this.axisLength <= 0) {\n return;\n }\n this.maxZoomFactor = this.dataItems.length;\n if (this.dataItems.length <= 0) {\n this.maxZoomFactor = 1;\n }\n this.resetIterators();\n // it's important to use protected variables here, as getters will return 0 - length\n // TODO use iterator instead\n // @ todo: not solved cat axis item fading\n startIndex = $math.max(0, this._startIndex - this._frequency);\n endIndex = $math.min(this.dataItems.length, this._endIndex + this._frequency);\n var itemIndex = 0;\n for (var i = 0; i < startIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n dataItem.__disabled = true;\n }\n for (var i = endIndex, len = this.dataItems.length; i < len; i++) {\n var dataItem = this.dataItems.getIndex(i);\n dataItem.__disabled = true;\n }\n for (var i = startIndex; i < endIndex; i++) {\n if (i < this.dataItems.length) {\n var dataItem = this.dataItems.getIndex(i);\n if (i / this._frequency == Math.round(i / this._frequency)) {\n var axisBreak = this.isInBreak(i);\n if (!axisBreak) {\n this.appendDataItem(dataItem);\n this.validateDataElement(dataItem, itemIndex);\n }\n itemIndex++;\n } else {\n //previously we disabled all before, but this is better for cpu\n //this.validateDataElement(dataItem, itemIndex); // helps to solve shrinking // not good - creates all items\n dataItem.__disabled = true;\n }\n }\n }\n this.appendDataItem(this._lastDataItem);\n this.validateDataElement(this._lastDataItem, itemIndex + 1, this.dataItems.length);\n if (this._axisBreaks) {\n var axisBreaks = this._axisBreaks;\n axisBreaks.each(function (axisBreak) {\n var adjustedStartValue = axisBreak.adjustedStartValue;\n var adjustedEndValue = axisBreak.adjustedEndValue;\n if ($math.intersect({\n start: adjustedStartValue,\n end: adjustedEndValue\n }, {\n start: _this._startIndex,\n end: _this._endIndex\n })) {\n for (var b = adjustedStartValue; b <= adjustedEndValue; b++) {\n var dataItem = _this.dataItems.getIndex(b);\n dataItem.__disabled = true;\n }\n var frequency_1 = $math.fitToRange(Math.ceil(_this._frequency / axisBreak.breakSize), 1, adjustedEndValue - adjustedStartValue);\n var itemIndex_1 = 0;\n if (axisBreak.breakSize > 0) {\n // TODO use iterator instead\n for (var b = adjustedStartValue; b <= adjustedEndValue; b = b + frequency_1) {\n var dataItem = _this.dataItems.getIndex(b);\n dataItem.__disabled = false;\n _this.appendDataItem(dataItem);\n _this.validateDataElement(dataItem, itemIndex_1);\n itemIndex_1++;\n }\n }\n }\n });\n }\n this.validateBreaks();\n this.validateAxisRanges();\n this.ghostLabel.invalidate(); // solves font issue\n this.renderer.invalidateLayout();\n };\n /**\r\n * [validateDataElement description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @param itemIndex [description]\r\n */\n CategoryAxis.prototype.validateDataElement = function (dataItem, itemIndex, index) {\n _super.prototype.validateDataElement.call(this, dataItem);\n dataItem.itemIndex = this._axisItemCount;\n this._axisItemCount++;\n //dataItem.__disabled = false;\n var renderer = this.renderer;\n if (!$type.isNumber(index)) {\n index = this.categoryToIndex(dataItem.category);\n }\n var endIndex = this.categoryToIndex(dataItem.endCategory);\n if (!$type.isNumber(endIndex)) {\n endIndex = index;\n }\n var position = this.indexToPosition(index, dataItem.locations.category);\n var endPosition = this.indexToPosition(endIndex, dataItem.locations.endCategory);\n dataItem.position = position;\n var fillEndIndex;\n var fillPosition;\n var fillEndPosition;\n if (dataItem.isRange) {\n fillEndIndex = endIndex;\n fillPosition = this.indexToPosition(index, dataItem.locations.category);\n fillEndPosition = this.indexToPosition(fillEndIndex, dataItem.locations.endCategory);\n }\n dataItem.point = renderer.positionToPoint(position);\n var tick = dataItem.tick;\n if (tick && !tick.disabled) {\n renderer.updateTickElement(tick, position, endPosition);\n }\n var grid = dataItem.grid;\n if (grid && !grid.disabled) {\n renderer.updateGridElement(grid, position, endPosition);\n }\n var label = dataItem.label;\n if (label && !label.disabled) {\n // theorethically this might result problems if category text changes, the range text won't change. But otherwise range.label.text = \"custom text\" won't work, which is not intuitive.\n if (!dataItem.isRange || label.text == undefined) {\n dataItem.text = dataItem.text;\n }\n renderer.updateLabelElement(label, position, endPosition);\n if (renderer instanceof AxisRendererY && dataItem.label.measuredWidth > this.ghostLabel.measuredWidth || renderer instanceof AxisRendererX && dataItem.label.measuredHeight > this.ghostLabel.measuredHeight) {\n if (dataItem.label.html) {\n this.ghostLabel.html = dataItem.label.currentText;\n } else {\n this.ghostLabel.text = dataItem.label.currentText;\n }\n }\n }\n var fill = dataItem.axisFill;\n if (fill && !fill.disabled) {\n if (!dataItem.isRange) {\n fillEndIndex = index + this._frequency;\n fillPosition = this.indexToPosition(index, fill.location);\n fillEndPosition = this.indexToPosition(fillEndIndex, fill.location);\n }\n renderer.updateFillElement(fill, fillPosition, fillEndPosition);\n if (!dataItem.isRange) {\n this.fillRule(dataItem, itemIndex);\n }\n }\n if (dataItem.bullet) {\n renderer.updateBullet(dataItem.bullet, position, endPosition);\n }\n var mask = dataItem.mask;\n if (mask) {\n renderer.updateFillElement(mask, fillPosition, fillEndPosition);\n }\n };\n /**\r\n * @ignore\r\n */\n CategoryAxis.prototype.disposeData = function () {\n this.dataItemsByCategory.clear();\n _super.prototype.disposeData.call(this);\n };\n /**\r\n * Processes the axis data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n * @param dataContext The raw data that corresponds to this data item\r\n */\n CategoryAxis.prototype.processDataItem = function (dataItem, dataContext) {\n if (dataItem) {\n // creat a collection for fast access\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\n // check if such category already exists\n //let existingDataItem: CategoryAxisDataItem = this.dataItemsByCategory.getKey(dataItem.category);\n //if (existingDataItem && existingDataItem != dataItem) {\n //\tthis.dataItems.remove(existingDataItem);\n //}\n if ($type.hasValue(dataItem.category)) {\n this.dataItemsByCategory.setKey(dataItem.category, dataItem);\n }\n }\n };\n CategoryAxis.prototype.getDataItem = function (dataContext) {\n var category = dataContext[this.dataFields.category];\n if ($type.hasValue(category)) {\n var dataItem = this.dataItemsByCategory.getKey(category);\n if (dataItem) {\n return dataItem;\n } else {\n return this.dataItems.create();\n }\n }\n };\n /**\r\n * Converts a category index to an actual screen coordinate on the axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param index Index\r\n * @param location Location (0-1)\r\n * @return Position (px)\r\n */\n CategoryAxis.prototype.indexToPosition = function (index, location) {\n if (!$type.isNumber(location)) {\n location = 0.5;\n }\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var difference = this.adjustDifference(startIndex, endIndex);\n var startLocation = this.startLocation;\n var endLocation = this.endLocation;\n difference -= startLocation;\n difference -= 1 - endLocation;\n if (this._axisBreaks) {\n var axisBreaks = this._axisBreaks;\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\n var breakStartIndex = axisBreak.adjustedStartValue;\n var breakEndIndex = axisBreak.adjustedEndValue;\n if (index < startIndex || !$type.isNumber(breakStartIndex) || !$type.isNumber(breakEndIndex)) {\n return false;\n }\n if ($math.intersect({\n start: breakStartIndex,\n end: breakEndIndex\n }, {\n start: startIndex,\n end: endIndex\n })) {\n breakStartIndex = Math.max(startIndex, breakStartIndex);\n breakEndIndex = Math.min(endIndex, breakEndIndex);\n var breakSize = axisBreak.breakSize;\n // value to the right of break end\n if (index > breakEndIndex) {\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\n }\n // value to the left of break start\n else if (index < breakStartIndex) {}\n // value within break\n else {\n index = breakStartIndex + (index - breakStartIndex) * breakSize;\n }\n }\n return true;\n });\n }\n var deltaPosition = 0;\n var dataItem = this.dataItems.getIndex(index);\n if (dataItem) {\n deltaPosition = dataItem.deltaPosition;\n }\n return $math.round(deltaPosition + (index + location - startLocation - startIndex) / difference, 5);\n };\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Position\r\n */\n CategoryAxis.prototype.categoryToPosition = function (category, location) {\n var index = this.categoryToIndex(category);\n return this.indexToPosition(index, location);\n };\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\n CategoryAxis.prototype.categoryToPoint = function (category, location) {\n var position = this.categoryToPosition(category, location);\n var point = this.renderer.positionToPoint(position);\n var angle = this.renderer.positionToAngle(position);\n return {\n x: point.x,\n y: point.y,\n angle: angle\n };\n };\n /**\r\n * Converts a string category name to a orientation point (x, y, angle) on axis\r\n *\r\n * `location` identifies relative location within category. 0 - beginning,\r\n * 0.5 - middle, 1 - end, and anything inbetween.\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Orientation point\r\n */\n CategoryAxis.prototype.anyToPoint = function (category, location) {\n return this.categoryToPoint(category, location);\n };\n /**\r\n * Converts a string category name to relative position on axis.\r\n *\r\n * An alias to `categoryToPosition()`.\r\n *\r\n * @param category Category name\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\n CategoryAxis.prototype.anyToPosition = function (category, location) {\n return this.categoryToPosition(category, location);\n };\n /**\r\n * Converts named category to an index of data item it corresponds to.\r\n *\r\n * @param category Category\r\n * @return Data item index\r\n */\n CategoryAxis.prototype.categoryToIndex = function (category) {\n if ($type.hasValue(category)) {\n var dataItem = this.dataItemsByCategory.getKey(category);\n if (dataItem) {\n return dataItem.index;\n }\n }\n };\n /**\r\n * Zooms the axis to specific named ctaegories.\r\n *\r\n * @param startCategory Start category\r\n * @param endCategory End category\r\n */\n CategoryAxis.prototype.zoomToCategories = function (startCategory, endCategory) {\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1);\n };\n /**\r\n * [getAnyRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param start [description]\r\n * @param end [description]\r\n * @param startLocation [description]\r\n * @param endLocation [description]\r\n * @return [description]\r\n */\n CategoryAxis.prototype.getAnyRangePath = function (start, end, startLocation, endLocation) {\n var startPos = this.categoryToPosition(start, startLocation);\n var endPos = this.categoryToPosition(end, endLocation);\n return this.getPositionRangePath(startPos, endPos); // Base class (Axis) gets range shape from AxisRenderer\n };\n /**\r\n * Takes an absolute position (px) within axis and adjust it to a specific\r\n * `location` within category it corresponds to.\r\n *\r\n * @param position Source position (px)\r\n * @param location Location within category (0-1)\r\n * @return Adjusted position (px)\r\n */\n CategoryAxis.prototype.roundPosition = function (position, location) {\n var index = this.positionToIndex(position);\n return this.indexToPosition(index, location);\n };\n /**\r\n * Finds and returns first series data item with specific category\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\n CategoryAxis.prototype.getFirstSeriesDataItem = function (series, category) {\n for (var i = 0; i < series.dataItems.length; i++) {\n var dataItem = series.dataItems.getIndex(i);\n if (series.xAxis == this) {\n if (dataItem.categoryX == category) {\n return dataItem;\n }\n }\n if (series.yAxis == this) {\n if (dataItem.categoryY == category) {\n return dataItem;\n }\n }\n }\n };\n /**\r\n * Finds and returns last series data item with specific category.\r\n * @param series Target series\r\n * @param category Category\r\n * @return XYSeriesDataItem data item\r\n */\n CategoryAxis.prototype.getLastSeriesDataItem = function (series, category) {\n for (var i = series.dataItems.length - 1; i >= 0; i--) {\n var dataItem = series.dataItems.getIndex(i);\n if (series.xAxis == this) {\n if (dataItem.categoryX == category) {\n return dataItem;\n }\n }\n if (series.yAxis == this) {\n if (dataItem.categoryY == category) {\n return dataItem;\n }\n }\n }\n };\n // todo: optimize\n CategoryAxis.prototype.getSeriesDataItemByCategory = function (category, series) {\n var _this = this;\n var seriesDataItem;\n series.dataItems.each(function (dataItem) {\n if (series.xAxis == _this) {\n if (dataItem.categoryX == category) {\n seriesDataItem = dataItem;\n }\n } else if (series.yAxis == _this) {\n if (dataItem.categoryY == category) {\n seriesDataItem = dataItem;\n }\n }\n });\n return seriesDataItem;\n };\n /**\r\n * Returns a data item from Series that corresponds to a specific absolute\r\n * position on the Axis.\r\n *\r\n * @param series Target series\r\n * @param position Position (px)\r\n * @return XYSeriesDataItem data item\r\n */\n CategoryAxis.prototype.getSeriesDataItem = function (series, position, findNearest) {\n var _this = this;\n if ($type.isNumber(position)) {\n var index_1 = this.positionToIndex(position);\n if (index_1 >= this.dataItems.length) {\n index_1--;\n }\n var dataItem = this.dataItems.getIndex(index_1);\n if (dataItem) {\n var category_1 = dataItem.category;\n var sdi_1;\n var seriesDataItem = series.dataItems.getIndex(index_1);\n if (seriesDataItem) {\n if (series.xAxis == this) {\n if (seriesDataItem.categoryX == category_1) {\n return seriesDataItem;\n }\n }\n if (series.yAxis == this) {\n if (seriesDataItem.categoryY == category_1) {\n return seriesDataItem;\n }\n }\n }\n series.dataItems.each(function (dataItem) {\n if (series.xAxis == _this) {\n if (dataItem.categoryX == category_1) {\n if (!sdi_1) {\n sdi_1 = dataItem;\n }\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\n sdi_1 = dataItem;\n }\n }\n }\n if (series.yAxis == _this) {\n if (dataItem.categoryY == category_1) {\n if (!sdi_1) {\n sdi_1 = dataItem;\n }\n if (Math.abs(index_1 - sdi_1.index) > Math.abs(index_1 - dataItem.index)) {\n sdi_1 = dataItem;\n }\n }\n }\n });\n //@todo\n if (findNearest) {}\n return sdi_1;\n }\n }\n };\n /**\r\n * Returns the X coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return X coordinate (px)\r\n */\n CategoryAxis.prototype.getX = function (dataItem, key, location, stackKey, range) {\n var position = this.getPositionX(dataItem, key, location, stackKey, range);\n if ($type.isNaN(position)) {\n return this.basePoint.x;\n } else {\n return this.renderer.positionToPoint(position).x;\n }\n };\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\n CategoryAxis.prototype.getPositionX = function (dataItem, key, location, stackKey, range) {\n var position;\n if ($type.hasValue(key)) {\n position = this.categoryToPosition(dataItem.categories[key], location);\n }\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns the Y coordinate for series' data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Y coordinate (px)\r\n */\n CategoryAxis.prototype.getY = function (dataItem, key, location, stackKey, range) {\n var position = this.getPositionY(dataItem, key, location, stackKey, range);\n if ($type.isNaN(position)) {\n return this.basePoint.y;\n } else {\n return this.renderer.positionToPoint(position).y;\n }\n };\n /**\r\n * Returns relative position on axis for series' data item.\r\n *\r\n * @since 4.5.14\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @return Relative position\r\n */\n CategoryAxis.prototype.getPositionY = function (dataItem, key, location, stackKey, range) {\n var position;\n if ($type.hasValue(key)) {\n position = this.categoryToPosition(dataItem.categories[key], location);\n }\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return position;\n };\n /**\r\n * Returns an angle for series data item.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param dataItem Data item\r\n * @param key Category\r\n * @param location Location (0-1)\r\n * @param stackKey Stack key (?)\r\n * @param range Range to fit in\r\n * @return Angle\r\n */\n CategoryAxis.prototype.getAngle = function (dataItem, key, location, stackKey, range) {\n var position = this.categoryToPosition(dataItem.categories[key], location);\n if (range) {\n position = $math.fitToRange(position, range.start, range.end);\n }\n return this.positionToAngle(position);\n };\n /**\r\n * Returns an absolute pixel coordinate of the start of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell start position (px)\r\n */\n CategoryAxis.prototype.getCellStartPosition = function (position) {\n return this.roundPosition(position, 0);\n };\n /**\r\n * Returns an absolute pixel coordinate of the end of the cell (category),\r\n * that specific position value falls into.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param position Position (px)\r\n * @return Cell end position (px)\r\n */\n CategoryAxis.prototype.getCellEndPosition = function (position) {\n return this.roundPosition(position, 1);\n };\n /**\r\n * Returns text to show in a category tooltip, based on specific position\r\n * within axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (category)\r\n */\n CategoryAxis.prototype.getTooltipText = function (position) {\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\n if (dataItem) {\n this.tooltipDataItem = dataItem;\n this.tooltip.dataItem = dataItem;\n if (this.tooltipText) {\n return this.tooltipText;\n }\n if (!this._adapterO) {\n return dataItem.category;\n } else {\n return this._adapterO.apply(\"getTooltipText\", dataItem.category);\n }\n }\n };\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\n CategoryAxis.prototype.positionToIndex = function (position) {\n position = $math.round(position, 10);\n if (position < 0) {\n position = 0;\n }\n if (position > 1) {\n position = 1;\n }\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var difference = endIndex - startIndex - this.startLocation - (1 - this.endLocation);\n position += 1 / difference * this.startLocation;\n var index = null;\n if (this._axisBreaks) {\n var axisBreaks = this._axisBreaks;\n // in case we have some axis breaks\n $iter.eachContinue(axisBreaks.iterator(), function (axisBreak) {\n var breakStartPosition = axisBreak.startPosition;\n var breakEndPosition = axisBreak.endPosition;\n var breakStartIndex = axisBreak.adjustedStartValue;\n var breakEndIndex = axisBreak.adjustedEndValue;\n breakStartIndex = $math.max(breakStartIndex, startIndex);\n breakEndIndex = $math.min(breakEndIndex, endIndex);\n var breakSize = axisBreak.breakSize;\n difference -= (breakEndIndex - breakStartIndex) * (1 - breakSize);\n // position to the right of break end\n if (position > breakEndPosition) {\n startIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\n }\n // position to the left of break start\n else if (position < breakStartPosition) {}\n // value within break\n else {\n var breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\n index = breakStartIndex + Math.round(breakPosition * (breakEndIndex - breakStartIndex));\n return false;\n }\n return true;\n });\n }\n if (!$type.isNumber(index)) {\n index = Math.floor(position * difference + startIndex);\n }\n if (index >= this.dataItems.length) {\n index = this.dataItems.length - 1;\n }\n // not good, when panning out of bounds, each time one less item gets selected\n //if (index >= endIndex) {\n //\tindex--;\n //}\n return index;\n };\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * This is a synonim of `getPositionLabel()` implemented here for consistentcy.\r\n *\r\n * @since 4.3.8\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\n CategoryAxis.prototype.positionToCategory = function (position) {\n return this.getPositionLabel(position);\n };\n /**\r\n * Returns category based on position.\r\n *\r\n * Please note that `position` represents position within axis which may be\r\n * zoomed and not correspond to Cursor's `position`.\r\n *\r\n * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n * @param position Relative position on axis (0-1)\r\n * @return Position label\r\n */\n CategoryAxis.prototype.getPositionLabel = function (position) {\n var dataItem = this.dataItems.getIndex(this.positionToIndex(position));\n if (dataItem) {\n return dataItem.category;\n }\n };\n Object.defineProperty(CategoryAxis.prototype, \"basePoint\", {\n /**\r\n * Coordinates of the actual axis start.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Base point\r\n */\n get: function () {\n // This makes base grid to be drawn at the end of the axis and adds extra\n // grid which we need to nicely close the chart.\n return this.renderer.positionToPoint(1);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Initializes Axis' renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\n CategoryAxis.prototype.initRenderer = function () {\n _super.prototype.initRenderer.call(this);\n var renderer = this.renderer;\n renderer.baseGrid.disabled = true;\n };\n Object.defineProperty(CategoryAxis.prototype, \"frequency\", {\n /**\r\n * Current frequency of labels of the axis.\r\n *\r\n * Normally it would be 1, but when labels start to be hidden due\r\n * to `minGridDistance` this read-only property will increase.\r\n *\r\n * @readonly\r\n * @since 4.2.0\r\n * @return Label frequency\r\n */\n get: function () {\n return this._frequency;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxis.prototype, \"sortBySeries\", {\n /**\r\n * @return Sort categories?\r\n */\n get: function () {\n return this.getPropertyValue(\"sortBySeries\");\n },\n /**\r\n * If set to a reference of [[ColumnSeries]] the categories will be sorted\r\n * by actual values.\r\n *\r\n * The categories are ordered in descending order (from highest values to\r\n * lowest). To reverse the order, use axis renderer's `inversed` setting.\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JavaScript\r\n * categoryAxis.sortBySeries = series;\r\n * categoryAxis.renderer.inversed = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * // ...\r\n * \"sortBySeries\": \"s1\",\r\n * \"renderer\": {\r\n * // ...\r\n * \"inversed\": true\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @since 4.8.7\r\n * @param value Sort categories?\r\n */\n set: function (value) {\n this.setPropertyValue(\"sortBySeries\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n CategoryAxis.prototype.processConfig = function (config) {\n if (config) {\n if ($type.hasValue(config.sortBySeries) && $type.isString(config.sortBySeries)) {\n if (this.map.hasKey(config.sortBySeries)) {\n config.sortBySeries = this.map.getKey(config.sortBySeries);\n } else {\n this.addDelayedMap(\"sortBySeries\", config.sortBySeries);\n delete config.sortBySeries;\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return CategoryAxis;\n}(Axis);\nexport { CategoryAxis };\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CategoryAxis\"] = CategoryAxis;\nregistry.registeredClasses[\"CategoryAxisDataItem\"] = CategoryAxisDataItem;\n//# sourceMappingURL=CategoryAxis.js.map","/**\r\n * XY series module.\r\n */\nimport { __extends, __values } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Series, SeriesDataItem } from \"./Series\";\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { Dictionary } from \"../../core/utils/Dictionary\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { XYChart } from \"../types/XYChart\";\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\nimport { DateAxis } from \"../axes/DateAxis\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $time from \"../../core/utils/Time\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $path from \"../../core/rendering/Path\";\nimport { options } from \"../../core/Options\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[XYSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar XYSeriesDataItem = /** @class */function (_super) {\n __extends(XYSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function XYSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"XYSeriesDataItem\";\n _this.values.customValue = {};\n _this.values.valueX = {\n stack: 0\n };\n _this.values.valueY = {\n stack: 0\n };\n _this.values.openValueX = {};\n _this.values.openValueY = {};\n _this.values.dateX = {};\n _this.values.dateY = {};\n _this.values.openDateX = {};\n _this.values.openDateY = {};\n _this.setLocation(\"dateX\", 0.5, 0);\n _this.setLocation(\"dateY\", 0.5, 0);\n _this.setLocation(\"categoryX\", 0.5, 0);\n _this.setLocation(\"categoryY\", 0.5, 0);\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueX\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.valueX.value;\n },\n /**\r\n * Item's numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"valueX\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"customValue\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.customValue.value;\n },\n /**\r\n * Item's custom numeric value.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"customValue\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"valueY\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.valueY.value;\n },\n /**\r\n * Item's numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"valueY\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateX\", {\n /**\r\n * @return Date\r\n */\n get: function () {\n return this.getDate(\"dateX\");\n },\n /**\r\n * Item's date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\n set: function (date) {\n this.setDate(\"dateX\", date);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"dateY\", {\n /**\r\n * @return Date\r\n */\n get: function () {\n return this.getDate(\"dateY\");\n },\n /**\r\n * Item's date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\n set: function (date) {\n this.setDate(\"dateY\", date);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryX\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n return this.categories.categoryX;\n },\n /**\r\n * Item's category on X category axis.\r\n *\r\n * @param category Category\r\n */\n set: function (category) {\n this.setCategory(\"categoryX\", category);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"categoryY\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n return this.categories.categoryY;\n },\n /**\r\n * Item's category on Y category axis.\r\n *\r\n * @param category Category\r\n */\n set: function (category) {\n this.setCategory(\"categoryY\", category);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueX\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.openValueX.value;\n },\n /**\r\n * Item's open numeric value on X value axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"openValueX\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openValueY\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.openValueY.value;\n },\n /**\r\n * Item's open numeric value on Y value axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"openValueY\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateX\", {\n /**\r\n * @return Date\r\n */\n get: function () {\n return this.getDate(\"openDateX\");\n },\n /**\r\n * Item's open date value on X date-based axis.\r\n *\r\n * @param date Date\r\n */\n set: function (date) {\n this.setDate(\"openDateX\", date);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openDateY\", {\n /**\r\n * @return Date\r\n */\n get: function () {\n return this.getDate(\"openDateY\");\n },\n /**\r\n * Item's open date value on Y date-based axis.\r\n *\r\n * @param date Date\r\n */\n set: function (date) {\n this.setDate(\"openDateY\", date);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryX\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n return this.categories.openCategoryX;\n },\n /**\r\n * Item's open category on X category axis.\r\n *\r\n * @param category Category\r\n */\n set: function (category) {\n this.setCategory(\"openCategoryX\", category);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeriesDataItem.prototype, \"openCategoryY\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n return this.categories.openCategoryY;\n },\n /**\r\n * Item's open category on Y category axis.\r\n *\r\n * @param category Category\r\n */\n set: function (category) {\n this.setCategory(\"openCategoryY\", category);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Return smallest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\n XYSeriesDataItem.prototype.getMin = function (fields, working, stackValue) {\n var _this = this;\n //if (this.visible) { // dumped because of non smooth zooming\n var min;\n if (!$type.isNumber(stackValue)) {\n stackValue = 0;\n }\n $array.each(fields, function (field) {\n var value;\n if (working) {\n value = _this.getWorkingValue(field);\n } else {\n value = _this.getValue(field);\n }\n value += stackValue;\n if (value < min || !$type.isNumber(min)) {\n min = value;\n }\n });\n return min;\n //}\n };\n /**\r\n * Return biggest value out of all item's value fields.\r\n *\r\n * @ignore Exclude from docs\r\n * @param fields Fields to check in\r\n * @param working Include working (temporary) values\r\n * @param stackValue If item is in a stack, the value item starts as\r\n * @return Value\r\n */\n XYSeriesDataItem.prototype.getMax = function (fields, working, stackValue) {\n var _this = this;\n //if (this.visible) { // dumped because of non smooth zooming\n var max;\n if (!$type.isNumber(stackValue)) {\n stackValue = 0;\n }\n $array.each(fields, function (field) {\n var value;\n if (working) {\n value = _this.getWorkingValue(field);\n } else {\n value = _this.getValue(field);\n }\n value += stackValue;\n if (value > max || !$type.isNumber(max)) {\n max = value;\n }\n });\n return max;\n //}\n };\n return XYSeriesDataItem;\n}(SeriesDataItem);\nexport { XYSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines Series for [[XYChart]].\r\n *\r\n * @see {@link IXYSeriesEvents} for a list of available Events\r\n * @see {@link IXYSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar XYSeries = /** @class */function (_super) {\n __extends(XYSeries, _super);\n /**\r\n * Constructor\r\n */\n function XYSeries() {\n var _this = _super.call(this) || this;\n /**\r\n * Indicates which of the series' `dataFields` to calculate aggregate values\r\n * for.\r\n *\r\n * Available data fields for all [[XYSeries]] are:\r\n * `valueX`, `valueY`, `openValueX`, and `openValueY`.\r\n *\r\n * [[CandlestickSeries]] adds:\r\n * `lowValueX`, `lowValueY`, `highValueX`, and `highValueY`.\r\n *\r\n * Available options:\r\n * `\"open\"`, `\"close\"`, `\"low\"`, `\"high\"`, `\"average\"`, `\"sum\"`.\r\n *\r\n * Defaults are as follows:\r\n * * `valueX`: `\"close\"`\r\n * * `valueY`: `\"close\"`\r\n * * `openValueX`: `\"open\"`\r\n * * `openValueY`: `\"open\"`\r\n * * `lowValueX`: `\"low\"`\r\n * * `lowValueY`: `\"low\"`\r\n * * `highValueX`: `\"high\"`\r\n * * `highValueY`: `\"high\"`\r\n *\r\n * Is required only if data being plotted on a `DateAxis` and\r\n * its `groupData` is set to `true`.\r\n *\r\n * ```TypeScript\r\n * let dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * let valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * let series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JavaScript\r\n * var dateAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n * dateAxis.groupData = true;\r\n *\r\n * var valueAxis = chart.xAxes.push(new am4charts.valueAxis());\r\n *\r\n * var series = chart.series.push(new am4charts.LineSeries());\r\n * series.dataFields.dateX = \"date\";\r\n * series.dataFields.valueY = \"value\";\r\n * series.groupFields.valueY = \"average\";\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"groupData\": true\r\n * }],\r\n * \"yAxes\": [{\r\n * \"type\": \"ValueAxis\"\r\n * }],\r\n * \"series\": [{\r\n * \"type\": \"LineSeries\",\r\n * \"dataFields\": {\r\n * \"dateX\": \"date\",\r\n * \"valueY\": \"value\"\r\n * },\r\n * \"groupFields\": {\r\n * \"valueY\": \"average\"\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * The above setup will ensure, that if there are many data items within\r\n * selected range, they will be grouped into aggregated data points, using\r\n * average value of all the values.\r\n *\r\n * For example if we have 2 years worth of daily data (~700 data items), when\r\n * fully zoomed out, the chart would show ~100 data items instead: one for\r\n * each week in those two years.\r\n *\r\n * Grouping will occur automatically, based on current selection range, and\r\n * will change dynamically when user zooms in/out the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/axes/date-axis/#Dynamic_data_item_grouping} for more information about dynamic data item grouping.\r\n * @since 4.7.0\r\n */\n _this.groupFields = {};\n /**\r\n * X axis the series is attached to.\r\n */\n _this._xAxis = new MutableValueDisposer();\n /**\r\n * Y axis the series is attached to.\r\n */\n _this._yAxis = new MutableValueDisposer();\n /**\r\n * [_xValueFields description]\r\n *\r\n * @todo Description\r\n */\n _this._xValueFields = [];\n /**\r\n * [_yValueFields description]\r\n *\r\n * @todo Description\r\n */\n _this._yValueFields = [];\n /**\r\n * @ignore\r\n */\n _this._baseInterval = {};\n /**\r\n * @ignore\r\n */\n _this.dataGrouped = false;\n /**\r\n * @ignore\r\n */\n _this.usesShowFields = false;\n /**\r\n * @ignore\r\n */\n _this._dataSetChanged = false;\n _this._maxxX = 100000;\n _this._maxxY = 100000;\n _this._propertiesChanged = false;\n /**\r\n * @ignore\r\n */\n _this.outOfRange = false;\n _this.className = \"XYSeries\";\n _this.isMeasured = false;\n _this.groupFields.valueX = \"close\";\n _this.groupFields.valueY = \"close\";\n _this.groupFields.customValue = \"close\";\n _this.groupFields.openValueX = \"open\";\n _this.groupFields.openValueY = \"open\";\n _this.cursorTooltipEnabled = true;\n _this.cursorHoverEnabled = true;\n _this.excludeFromTotal = false;\n _this.mainContainer.mask = new Sprite();\n _this.mainContainer.mask.setElement(_this.paper.add(\"path\"));\n _this.stacked = false;\n _this.snapTooltip = false;\n _this._showBullets = false;\n _this.tooltip.pointerOrientation = \"horizontal\";\n _this.properties.stackToNegative = true;\n _this.hideTooltipWhileZooming = true;\n _this.setPropertyValue(\"maskBullets\", true);\n _this.tooltip.events.on(\"hidden\", function () {\n _this.returnBulletDefaultState();\n }, undefined, false);\n _this._disposers.push(_this._xAxis);\n _this._disposers.push(_this._yAxis);\n _this.observe(visualProperties, function () {\n if (_this.inited) {\n _this._propertiesChanged = true;\n if (_this.legendDataItem) {\n _this.legendDataItem.childrenCreated = false;\n }\n if (_this.chart && _this.chart.legend) {\n _this.chart.legend.invalidateDataItems();\n }\n _this.invalidate();\n }\n }, undefined, false);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n XYSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"X/Y Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n XYSeries.prototype.createDataItem = function () {\n return new XYSeriesDataItem();\n };\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.resetExtremes = function () {\n this._tmin.clear();\n this._tmax.clear();\n this._smin.clear();\n this._smax.clear();\n };\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.dataChangeUpdate = function () {\n this.dataGrouped = false;\n this._baseInterval = {};\n this._currentDataSetId = \"\";\n this.resetExtremes();\n if (this.xAxis) {\n this.xAxis.seriesDataChangeUpdate(this);\n }\n if (this.yAxis) {\n this.yAxis.seriesDataChangeUpdate(this);\n }\n };\n /**\r\n * (Re)validates the series' data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.validateData = function () {\n this._baseInterval = {};\n var dataFields = this.dataFields;\n if (dataFields.valueYShow || dataFields.openValueXShow || dataFields.openValueXShow || dataFields.openValueYShow) {\n this.usesShowFields = true;\n } else {\n this.usesShowFields = false;\n }\n this.defineFields();\n if (this.data.length > 0) {\n this.dataChangeUpdate();\n }\n _super.prototype.validateData.call(this);\n this.updateItemReaderText();\n if (this.chart) {\n if (!$type.hasValue(this.dataFields[this._xField]) || !$type.hasValue(this.dataFields[this._yField])) {\n throw Error(\"Data fields for series \\\"\" + (this.name ? this.name : this.uid) + \"\\\" are not properly defined.\");\n }\n }\n // 4.7.21 solves 51540\n if (this.inited && this.isHidden) {\n this.hide(0);\n }\n this.dataGrouped = false;\n };\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\n XYSeries.prototype.processDataItem = function (dataItem, dataContext) {\n try {\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\n this.setInitialWorkingValues(dataItem);\n } catch (e) {\n if (this._chart) {\n this._chart.raiseCriticalError(e);\n }\n }\n };\n /**\r\n *\r\n * When validating raw data, instead of processing data item, we update it\r\n *\r\n * @ignore Exclude from docs\r\n * @param item\r\n */\n XYSeries.prototype.updateDataItem = function (dataItem) {\n _super.prototype.updateDataItem.call(this, dataItem);\n //dataItem.events.disable();\n this.xAxis.processSeriesDataItem(dataItem, \"X\");\n this.yAxis.processSeriesDataItem(dataItem, \"Y\");\n //dataItem.events.enable();\t\t\n };\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\n XYSeries.prototype.setInitialWorkingValues = function (dataItem) {};\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis) {\n var dataItemsX = this.dataItemsByAxis.getKey(xAxis.uid);\n if (dataItemsX) {\n dataItemsX.clear();\n }\n if (xAxis instanceof CategoryAxis) {\n this.clearCatAxis(xAxis);\n }\n }\n if (yAxis) {\n var dataItemsY = this.dataItemsByAxis.getKey(yAxis.uid);\n if (dataItemsY) {\n dataItemsY.clear();\n }\n if (yAxis instanceof CategoryAxis) {\n this.clearCatAxis(yAxis);\n }\n }\n };\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.clearCatAxis = function (axis) {\n var uid = this.uid;\n axis.dataItems.each(function (dataItem) {\n if (dataItem.seriesDataItems[uid]) {\n dataItem.seriesDataItems[uid] = [];\n }\n });\n };\n /**\r\n * Sets up which data fields to use for data access.\r\n */\n XYSeries.prototype.defineFields = function () {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis && yAxis) {\n var xAxisFieldName = xAxis.axisFieldName;\n var xField = xAxisFieldName + \"X\";\n var xOpenField = \"open\" + $utils.capitalize(xAxisFieldName) + \"X\";\n var yAxisFieldName = yAxis.axisFieldName;\n var yField = yAxisFieldName + \"Y\";\n var yOpenField = \"open\" + $utils.capitalize(yAxisFieldName) + \"Y\";\n this._xField = xField;\n this._yField = yField;\n if (this.dataFields[xOpenField]) {\n this._xOpenField = xOpenField;\n }\n if (this.dataFields[yOpenField]) {\n this._yOpenField = yOpenField;\n }\n if (!this.dataFields[yOpenField] && this.baseAxis == yAxis) {\n this._yOpenField = yField;\n }\n if (!this.dataFields[xOpenField] && this.baseAxis == xAxis) {\n this._xOpenField = xField;\n }\n if (this.stacked && this.baseAxis == xAxis) {\n this._xOpenField = xField;\n }\n if (this.stacked && this.baseAxis == yAxis) {\n this._yOpenField = yField;\n }\n if (xAxis instanceof CategoryAxis && yAxis instanceof CategoryAxis) {\n if (!this._yOpenField) {\n this._yOpenField = yField;\n }\n }\n this._xValueFields = [];\n this._yValueFields = [];\n this.addValueField(xAxis, this._xValueFields, this._xField);\n this.addValueField(xAxis, this._xValueFields, this._xOpenField);\n this.addValueField(yAxis, this._yValueFields, this._yField);\n this.addValueField(yAxis, this._yValueFields, this._yOpenField);\n }\n };\n /**\r\n * [axis description]\r\n *\r\n * @todo Description\r\n * @param axis Axis\r\n * @param fields Fields (?)\r\n * @param field Field\r\n */\n XYSeries.prototype.addValueField = function (axis, fields, field) {\n if (axis instanceof ValueAxis) {\n if ($type.hasValue(this.dataFields[field]) && fields.indexOf(field) == -1) {\n fields.push(field);\n }\n }\n };\n /**\r\n * Sets category field from the category axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\n XYSeries.prototype.setCategoryAxisField = function (field, axis) {\n if (!$type.hasValue(this.dataFields[field])) {\n this.dataFields[field] = axis.dataFields.category;\n }\n };\n /**\r\n * Sets date field from the date axis.\r\n *\r\n * User might set field for category axis only, but not for series. In such\r\n * case, we take field value from axis and set it for series.\r\n *\r\n * @param field Field\r\n * @param axis Axis\r\n */\n XYSeries.prototype.setDateAxisField = function (field, axis) {\n if (!$type.hasValue(this.dataFields[field])) {\n this.dataFields[field] = axis.dataFields.date;\n }\n };\n /**\r\n * Performs after-draw tasks, e.g. creates masks.\r\n */\n XYSeries.prototype.afterDraw = function () {\n _super.prototype.afterDraw.call(this);\n this.createMask();\n };\n /**\r\n * Create a mask for the series.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.createMask = function () {\n // this mask from which we cut out ranges. does not work well if ranges overlap.\n if (this.mainContainer.mask) {\n var path_1 = this.getMaskPath();\n // @todo: this approach won't work well on circluar or other non x/y axes\n $iter.each(this.axisRanges.iterator(), function (range) {\n if (range.axisFill.fillPath) {\n range.axisFill.validate();\n path_1 += range.axisFill.fillPath;\n }\n });\n this.mainContainer.mask.path = path_1;\n }\n };\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\n XYSeries.prototype.getMaskPath = function () {\n if (this.xAxis && this.yAxis) {\n return $path.rectToPath({\n x: 0,\n y: 0,\n width: this.xAxis.axisLength,\n height: this.yAxis.axisLength\n });\n }\n return \"\";\n };\n /**\r\n * Returns axis data field to use.\r\n *\r\n * @param axis Axis\r\n * @return Field name\r\n */\n XYSeries.prototype.getAxisField = function (axis) {\n if (axis == this.xAxis) {\n return this.xField;\n }\n if (axis == this.yAxis) {\n return this.yField;\n }\n };\n /**\r\n * Validates data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.validateDataItems = function () {\n var chart = this.chart;\n if (chart) {\n this._maxxX = $math.max(100000, chart.plotContainer.maxWidth * 2);\n this._maxxY = $math.max(100000, chart.plotContainer.maxHeight * 2);\n }\n // this helps date axis to check which baseInterval we should use\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis && yAxis) {\n xAxis.updateAxisBySeries();\n yAxis.updateAxisBySeries();\n }\n _super.prototype.validateDataItems.call(this);\n if (xAxis && yAxis) {\n xAxis.postProcessSeriesDataItems(this);\n yAxis.postProcessSeriesDataItems(this);\n }\n };\n /**\r\n * Validates data range.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.validateDataRange = function () {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis && yAxis) {\n if (xAxis.dataRangeInvalid) {\n xAxis.validateDataRange();\n }\n if (yAxis.dataRangeInvalid) {\n yAxis.validateDataRange();\n }\n }\n _super.prototype.validateDataRange.call(this);\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.validate = function () {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis && yAxis) {\n if (xAxis.invalid) {\n xAxis.validate();\n }\n if (yAxis.invalid) {\n yAxis.validate();\n }\n this.y = yAxis.pixelY;\n this.x = xAxis.pixelX;\n this._showBullets = true;\n var minBulletDistance = this.minBulletDistance;\n if ($type.isNumber(minBulletDistance)) {\n if (this.baseAxis.axisLength / (this.endIndex - this.startIndex) < minBulletDistance) {\n this._showBullets = false;\n }\n }\n }\n this.updateTooltip();\n if (xAxis instanceof DateAxis && xAxis.groupData && !this.dataGrouped || yAxis instanceof DateAxis && yAxis.groupData && !this.dataGrouped) {\n return;\n }\n _super.prototype.validate.call(this);\n var chart = this.chart;\n var maskBullets = this.maskBullets;\n if (chart && maskBullets) {\n if (chart.className == \"XYChart\") {\n if (chart.leftAxesContainer.layout == \"vertical\" || chart.rightAxesContainer.layout == \"vertical\") {\n if (this.yAxis) {\n this.bulletsContainer.mask = this.yAxis.renderer.gridContainer;\n } else {\n this.bulletsContainer.mask = undefined;\n }\n }\n if (chart.topAxesContainer.layout == \"horizontal\" || chart.bottomAxesContainer.layout == \"horizontal\") {\n if (this.xAxis) {\n this.bulletsContainer.mask = this.xAxis.renderer.gridContainer;\n } else {\n this.bulletsContainer.mask = undefined;\n }\n }\n }\n }\n };\n Object.defineProperty(XYSeries.prototype, \"xAxis\", {\n /**\r\n * @return Axis\r\n */\n get: function () {\n if (this.chart) {\n if (!this._xAxis.get()) {\n var axis = this.chart.xAxes.getIndex(0);\n if (!axis) {\n throw Error(\"There are no X axes on chart.\");\n }\n this.xAxis = axis;\n }\n return this._xAxis.get();\n }\n },\n /**\r\n * X axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\n set: function (axis) {\n this.setXAxis(axis);\n },\n enumerable: true,\n configurable: true\n });\n XYSeries.prototype.setXAxis = function (axis) {\n var oldAxis = this._xAxis.get();\n if (oldAxis != axis) {\n if (oldAxis) {\n this.dataItemsByAxis.removeKey(oldAxis.uid);\n // TODO why is this here ?\n this._xAxis.dispose();\n // temp @todo: why it is not disposed?\n oldAxis.series.removeValue(this);\n }\n this._xAxis.set(axis, axis.registerSeries(this));\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\n this.invalidateData();\n }\n };\n Object.defineProperty(XYSeries.prototype, \"yAxis\", {\n /**\r\n * @return Axis\r\n */\n get: function () {\n if (this.chart) {\n if (!this._yAxis.get()) {\n var axis = this.chart.yAxes.getIndex(0);\n if (!axis) {\n throw Error(\"There are no Y axes on chart.\");\n }\n this.yAxis = axis;\n }\n return this._yAxis.get();\n }\n },\n /**\r\n * Y axis the series is attached to.\r\n *\r\n * @param axis Axis\r\n */\n set: function (axis) {\n this.setYAxis(axis);\n },\n enumerable: true,\n configurable: true\n });\n XYSeries.prototype.setYAxis = function (axis) {\n var oldAxis = this._yAxis.get();\n if (oldAxis != axis) {\n if (oldAxis) {\n this.dataItemsByAxis.removeKey(oldAxis.uid);\n // TODO why is this here ?\n this._yAxis.dispose();\n // temp @todo: why it is not disposed?\n oldAxis.series.removeValue(this);\n }\n this._yAxis.set(axis, axis.registerSeries(this));\n if (axis.chart instanceof XYChart) {\n axis.chart.handleYAxisSet(this);\n }\n this.dataItemsByAxis.setKey(axis.uid, new Dictionary());\n this.invalidateData();\n }\n };\n Object.defineProperty(XYSeries.prototype, \"baseAxis\", {\n /**\r\n * @return Axis\r\n */\n get: function () {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (!this._baseAxis && xAxis && yAxis) {\n if (yAxis instanceof DateAxis) {\n this._baseAxis = yAxis;\n }\n if (xAxis instanceof DateAxis) {\n this._baseAxis = xAxis;\n }\n if (yAxis instanceof CategoryAxis) {\n this._baseAxis = yAxis;\n }\n if (xAxis instanceof CategoryAxis) {\n this._baseAxis = xAxis;\n }\n if (!this._baseAxis) {\n this._baseAxis = xAxis;\n }\n }\n return this._baseAxis;\n },\n /**\r\n * The main (base) axis.\r\n *\r\n * This is the axis that series fills will go to, or grow animations will\r\n * happen from.\r\n *\r\n * @param value Axis\r\n */\n set: function (value) {\n if (this._baseAxis != value) {\n this._baseAxis = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\n XYSeries.prototype.addData = function (rawDataItem, removeCount, skipRaw) {\n _super.prototype.addData.call(this, rawDataItem, removeCount, skipRaw);\n var scrollbarSeries = this.scrollbarSeries;\n if (scrollbarSeries) {\n this.scrollbarSeries.addData(rawDataItem, removeCount, true);\n this.scrollbarSeries._parseDataFrom = this._parseDataFrom;\n }\n };\n XYSeries.prototype.setData = function (value) {\n _super.prototype.setData.call(this, value);\n if (this.scrollbarSeries) {\n this.scrollbarSeries.setData(value);\n }\n };\n /**\r\n * Makes the chart use particular data set.\r\n *\r\n * If `id` is not provided or there is no such data set, main data will be\r\n * used.\r\n *\r\n * @ignore\r\n * @since 4.7.0\r\n * @param id Data set id\r\n */\n XYSeries.prototype.setDataSet = function (id) {\n var changed = _super.prototype.setDataSet.call(this, id);\n if (changed) {\n this._dataSetChanged = true;\n var dataItems = this.dataItems;\n this.resetExtremes();\n if (dataItems && dataItems.length > 0) {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n this._prevStartIndex = undefined;\n this._prevEndIndex = undefined;\n this._startIndex = undefined;\n this._endIndex = undefined;\n if (!this.appeared) {\n this.processValues(false); // this will slow down!\n }\n if (xAxis instanceof DateAxis && xAxis == this.baseAxis) {\n this._tmin.setKey(xAxis.uid, dataItems.getIndex(0).dateX.getTime());\n this._tmax.setKey(xAxis.uid, dataItems.getIndex(dataItems.length - 1).dateX.getTime());\n this.dispatch(\"extremeschanged\");\n }\n if (yAxis instanceof DateAxis && yAxis == this.baseAxis) {\n this._tmin.setKey(yAxis.uid, dataItems.getIndex(0).dateY.getTime());\n this._tmax.setKey(yAxis.uid, dataItems.getIndex(dataItems.length - 1).dateY.getTime());\n this.dispatch(\"extremeschanged\");\n }\n }\n }\n return changed;\n };\n /**\r\n * Processes values after data items' were added.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\n XYSeries.prototype.processValues = function (working) {\n _super.prototype.processValues.call(this, working);\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (!xAxis || !yAxis) {\n return;\n }\n var dataItems = this.dataItems;\n var minX = Infinity;\n var maxX = -Infinity;\n var minY = Infinity;\n var maxY = -Infinity;\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var workingStartIndex = startIndex;\n var workingEndIndex = endIndex;\n if (!working) {\n startIndex = 0;\n endIndex = this.dataItems.length;\n }\n for (var i = startIndex; i < endIndex; i++) {\n var dataItem = dataItems.getIndex(i);\n this.getStackValue(dataItem, working);\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\n // if it's stacked, pay attention to stack value\n if (this.stacked) {\n if (this.baseAxis == xAxis) {\n if (stackY < minY) {\n minY = stackY;\n }\n if (stackY > maxY) {\n maxY = stackY;\n }\n }\n if (this.baseAxis == yAxis) {\n if (stackX < minX) {\n minX = stackX;\n }\n if (stackX > maxX) {\n maxX = stackX;\n }\n }\n }\n }\n // this is mainly for value axis to calculate total and perecent.total of each series category\n xAxis.processSeriesDataItems();\n yAxis.processSeriesDataItems();\n var xAxisId = xAxis.uid;\n var yAxisId = yAxis.uid;\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\n this._smin.setKey(xAxisId, undefined);\n this._smax.setKey(xAxisId, undefined);\n this.dispatchImmediately(\"selectionextremeschanged\");\n return;\n }\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\n this._smin.setKey(yAxisId, undefined);\n this._smax.setKey(yAxisId, undefined);\n this.dispatchImmediately(\"selectionextremeschanged\");\n return;\n }\n if (!working) {\n if (this._tmin.getKey(xAxisId) != minX || this._tmax.getKey(xAxisId) != maxX || this._tmin.getKey(yAxisId) != minY || this._tmax.getKey(yAxisId) != maxY) {\n this._tmin.setKey(xAxisId, minX);\n this._tmax.setKey(xAxisId, maxX);\n this._tmin.setKey(yAxisId, minY);\n this._tmax.setKey(yAxisId, maxY);\n var stackedSeries = this.stackedSeries;\n if (stackedSeries) {\n if (stackedSeries.isDisposed()) {\n this.stackedSeries = undefined;\n } else {\n stackedSeries.processValues(false);\n }\n }\n this.dispatchImmediately(\"extremeschanged\");\n }\n }\n if (startIndex != workingStartIndex || endIndex != workingEndIndex) {\n minX = Infinity;\n maxX = -Infinity;\n minY = Infinity;\n maxY = -Infinity;\n for (var i = workingStartIndex; i < workingEndIndex; i++) {\n var dataItem = dataItems.getIndex(i);\n this.getStackValue(dataItem, working);\n var stackX = dataItem.getValue(\"valueX\", \"stack\");\n var stackY = dataItem.getValue(\"valueY\", \"stack\");\n minX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\n minY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\n maxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\n maxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\n // if it's stacked, pay attention to stack value\n if (this.stacked) {\n if (this.baseAxis == xAxis) {\n if (stackY < minY) {\n minY = stackY;\n }\n if (stackY > maxY) {\n maxY = stackY;\n }\n }\n if (this.baseAxis == yAxis) {\n if (stackX < minX) {\n minX = stackX;\n }\n if (stackX > maxX) {\n maxX = stackX;\n }\n }\n }\n }\n }\n if (this.xAxis instanceof ValueAxis && (minX == Infinity || maxX == -Infinity)) {\n this._smin.setKey(xAxisId, undefined);\n this._smax.setKey(xAxisId, undefined);\n this.dispatchImmediately(\"selectionextremeschanged\");\n return;\n }\n if (this.yAxis instanceof ValueAxis && (minY == Infinity || maxY == -Infinity)) {\n this._smin.setKey(yAxisId, undefined);\n this._smax.setKey(yAxisId, undefined);\n this.dispatchImmediately(\"selectionextremeschanged\");\n return;\n }\n if (this._smin.getKey(xAxisId) != minX || this._smax.getKey(xAxisId) != maxX || this._smin.getKey(yAxisId) != minY || this._smax.getKey(yAxisId) != maxY) {\n this._smin.setKey(xAxisId, minX);\n this._smax.setKey(xAxisId, maxX);\n this._smin.setKey(yAxisId, minY);\n this._smax.setKey(yAxisId, maxY);\n if (this.appeared || this.start != 0 || this.end != 1 || this.dataItems != this.mainDataSet) {\n /// new, helps to handle issues with change percent\n var changed = false;\n if (yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\n var tmin = this._tmin.getKey(yAxisId);\n if (!$type.isNumber(tmin) || (this.usesShowFields || this._dataSetChanged || xAxis instanceof DateAxis && xAxis.groupData && this.isShowing) && minY < tmin || this.stackedSeries && !this.isHidden) {\n this._tmin.setKey(yAxisId, minY);\n changed = true;\n }\n var tmax = this._tmax.getKey(yAxisId);\n if (!$type.isNumber(tmax) || (this.usesShowFields || this._dataSetChanged || xAxis instanceof DateAxis && xAxis.groupData && this.isShowing) && maxY > tmax || this.stackedSeries && !this.isHidden) {\n this._tmax.setKey(yAxisId, maxY);\n changed = true;\n }\n }\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis)) {\n var tmin = this._tmin.getKey(xAxisId);\n if (!$type.isNumber(tmin) || (this.usesShowFields || this._dataSetChanged || yAxis instanceof DateAxis && yAxis.groupData && this.isShowing) && minX < tmin || this.stackedSeries && !this.isHidden) {\n this._tmin.setKey(xAxisId, minX);\n changed = true;\n }\n var tmax = this._tmax.getKey(xAxisId);\n if (!$type.isNumber(tmax) || (this.usesShowFields || this._dataSetChanged || yAxis instanceof DateAxis && yAxis.groupData && this.isShowing) && maxX > tmax || this.stackedSeries && !this.isHidden) {\n this._tmax.setKey(xAxisId, maxX);\n changed = true;\n }\n }\n if (changed) {\n this.dispatchImmediately(\"extremeschanged\");\n }\n if (this.start == 0 && this.end == 1) {\n // yes, its ok. otherwise min/max won't be updated when zooming out\n this._dataSetChanged = false;\n }\n this.dispatchImmediately(\"selectionextremeschanged\");\n }\n }\n if (!working && this.stacked) {\n this.processValues(true);\n }\n };\n /**\r\n * Hides element's [[Tooltip]].\r\n *\r\n * @see {@link Tooltip}\r\n */\n XYSeries.prototype.hideTooltip = function (duration) {\n _super.prototype.hideTooltip.call(this, duration);\n this.returnBulletDefaultState();\n this._prevTooltipDataItem = undefined;\n };\n /**\r\n * Shows series tooltip at specific position.\r\n *\r\n * @param xPosition X\r\n * @param yPosition Y\r\n */\n XYSeries.prototype.showTooltipAtPosition = function (xPosition, yPosition) {\n var dataItem;\n if (this.visible && !this.isHiding && !this.isShowing) {\n var xAxis = this._xAxis.get();\n var yAxis = this._yAxis.get();\n if (xAxis == this.baseAxis) {\n dataItem = xAxis.getSeriesDataItem(this, xAxis.toAxisPosition(xPosition), this.snapTooltip);\n }\n if (yAxis == this.baseAxis) {\n dataItem = yAxis.getSeriesDataItem(this, yAxis.toAxisPosition(yPosition), this.snapTooltip);\n }\n var point = this.showTooltipAtDataItem(dataItem);\n if (point) {\n return point;\n }\n // so that if tooltip is shown on columns or bullets for it not to be hidden\n if (!this.tooltipText && !this.tooltipHTML) {\n return;\n }\n }\n this.hideTooltip();\n };\n XYSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\n return dataItem.locations[field];\n };\n XYSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\n return dataItem.locations[field];\n };\n /**\r\n * Shows series tooltip at specific dataItem.\r\n *\r\n * @param dataItem\r\n */\n XYSeries.prototype.showTooltipAtDataItem = function (dataItem) {\n var e_1, _a;\n var cursor = this.chart.cursor;\n if (cursor && cursor.hideSeriesTooltipsOnSelection && cursor.selection.visible && cursor.downPoint) {\n this.hideTooltip();\n return;\n }\n this.returnBulletDefaultState(dataItem);\n if (dataItem && dataItem.visible) {\n this.updateLegendValue(dataItem);\n if (this.cursorTooltipEnabled) {\n this.tooltipDataItem = dataItem;\n // todo: add tooltipXField and tooltipYField.\n var tooltipXField = this.tooltipXField;\n var tooltipYField = this.tooltipYField;\n if ($type.hasValue(dataItem[tooltipXField]) && $type.hasValue(dataItem[tooltipYField])) {\n var tooltipPoint = this.getPoint(dataItem, tooltipXField, tooltipYField, this.getAdjustedXLocation(dataItem, tooltipXField), this.getAdjustedYLocation(dataItem, tooltipYField));\n if (tooltipPoint) {\n if (this.chart.className == \"XYChart\" && (tooltipPoint.y < -1 || tooltipPoint.y > this.yAxis.pixelHeight + 1 || tooltipPoint.x < -1 || tooltipPoint.x > this.xAxis.pixelWidth + 1)) {\n // void\n } else {\n this.tooltipX = tooltipPoint.x;\n this.tooltipY = tooltipPoint.y;\n if (this._prevTooltipDataItem != dataItem) {\n this.dispatchImmediately(\"tooltipshownat\", {\n type: \"tooltipshownat\",\n target: this,\n dataItem: dataItem\n });\n this._prevTooltipDataItem = dataItem;\n }\n if (this.cursorHoverEnabled) {\n try {\n for (var _b = __values(dataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\n var sprite = _c.value;\n if (!sprite.parent.visible || sprite.isHidden || sprite.__disabled || sprite.disabled || sprite.isHiding) {} else {\n if (!sprite.interactions.isRealHover) {\n sprite.dispatchImmediately(\"over\");\n sprite.interactions.isRealHover = true;\n }\n sprite.isHover = true;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n }\n if (this.showTooltip()) {\n return $utils.spritePointToSvg({\n x: tooltipPoint.x,\n y: tooltipPoint.y\n }, this);\n }\n return;\n }\n }\n }\n }\n } else {\n this.updateLegendValue(dataItem, true);\n }\n };\n /**\r\n * Returns default state to bullets when tooltip is shown at some other data\r\n * item or hidden\r\n */\n XYSeries.prototype.returnBulletDefaultState = function (dataItem) {\n var e_2, _a;\n if (this._prevTooltipDataItem && this._prevTooltipDataItem != dataItem) {\n try {\n for (var _b = __values(this._prevTooltipDataItem.sprites), _c = _b.next(); !_c.done; _c = _b.next()) {\n var sprite = _c.value;\n if (!sprite.isDisposed()) {\n var fireEvent = sprite.interactions.isRealHover;\n sprite.isHover = false;\n if (fireEvent) {\n sprite.dispatchImmediately(\"out\");\n }\n } else {\n this._prevTooltipDataItem = undefined;\n }\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n };\n XYSeries.prototype.shouldCreateBullet = function (dataItem, bulletTemplate) {\n // use series xField/yField if bullet doesn't have fields set\n var xField = bulletTemplate.xField;\n if (!$type.hasValue(xField)) {\n xField = this.xField;\n }\n var yField = bulletTemplate.yField;\n if (!$type.hasValue(yField)) {\n yField = this.yField;\n }\n if (this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField]) || this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField])) {\n return false;\n }\n if (bulletTemplate.disabled) {\n var disabledField = bulletTemplate.propertyFields.disabled;\n var dataContext = dataItem.dataContext;\n if (dataContext && dataContext[disabledField] === false) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n };\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.updateTooltip = function () {\n if (!this.hideTooltipWhileZooming && this.tooltip && !this.tooltip.isHidden && !this.isHiding && !this.isHidden && this.tooltipDataItem) {\n this.showTooltipAtDataItem(this.tooltipDataItem);\n }\n };\n /**\r\n * @ignore\r\n */\n XYSeries.prototype.positionBullet = function (bullet) {\n _super.prototype.positionBullet.call(this, bullet);\n var dataItem = bullet.dataItem;\n // use series xField/yField if bullet doesn't have fields set\n var xField = bullet.xField;\n if (!$type.hasValue(xField)) {\n xField = this.xField;\n }\n var yField = bullet.yField;\n if (!$type.hasValue(yField)) {\n yField = this.yField;\n }\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis instanceof ValueAxis && !dataItem.hasValue([xField]) || yAxis instanceof ValueAxis && !dataItem.hasValue([yField])) {\n bullet.visible = false;\n } else {\n var bulletLocationX = this.getBulletLocationX(bullet, xField);\n var bulletLocationY = this.getBulletLocationY(bullet, yField);\n var point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\n if (point) {\n var xOpenField = this.xOpenField;\n var yOpenField = this.yOpenField;\n var positionX = void 0;\n var positionY = void 0;\n if (xAxis instanceof DateAxis) {\n if (!$type.isNumber(bulletLocationX)) {\n bulletLocationX = 0;\n }\n var openValue = void 0;\n var closeValue = dataItem.getWorkingValue(xField);\n if (!xOpenField) {\n if (xAxis == this.baseAxis) {\n openValue = xAxis.baseValue;\n }\n } else {\n openValue = dataItem.getWorkingValue(xOpenField);\n }\n if (!$type.isNumber(openValue)) {\n openValue = closeValue;\n }\n var stack = dataItem.getValue(\"valueX\", \"stack\");\n openValue += stack;\n closeValue += stack;\n if (openValue == closeValue) {\n var baseInterval = xAxis.baseInterval;\n var dateFormatter = xAxis.dateFormatter;\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\n }\n var middleValue = void 0;\n if (xAxis == this.baseAxis) {\n middleValue = openValue + (closeValue - openValue) * bulletLocationX;\n } else {\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\n }\n positionX = xAxis.valueToPosition(middleValue);\n } else if (xAxis instanceof ValueAxis) {\n if (!$type.isNumber(bulletLocationX)) {\n bulletLocationX = 0;\n }\n var openValue = void 0;\n var closeValue = dataItem.getWorkingValue(xField);\n if (!xOpenField) {\n openValue = xAxis.baseValue;\n } else {\n openValue = dataItem.getWorkingValue(xOpenField);\n }\n var stack = dataItem.getValue(\"valueX\", \"stack\");\n openValue += stack;\n closeValue += stack;\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\n positionX = xAxis.valueToPosition(middleValue);\n } else if (xAxis instanceof CategoryAxis) {\n var rightLocation = this.getAdjustedXLocation(dataItem, xField, bullet.locationX);\n var leftLocation = this.getAdjustedXLocation(dataItem, xOpenField, bullet.locationX);\n positionX = xAxis.categoryToPosition(dataItem[xField], rightLocation);\n var openPositionX = void 0;\n if (xOpenField) {\n openPositionX = xAxis.categoryToPosition(dataItem[xOpenField], leftLocation);\n }\n if (!$type.isNumber(openPositionX)) {\n openPositionX = 1;\n }\n positionX = openPositionX + (positionX - openPositionX) * bulletLocationX;\n }\n if (yAxis instanceof DateAxis) {\n if (!$type.isNumber(bulletLocationY)) {\n bulletLocationY = 0;\n }\n var openValue = void 0;\n var closeValue = dataItem.getWorkingValue(yField);\n if (!yOpenField) {\n if (yAxis == this.baseAxis) {\n openValue = yAxis.baseValue;\n }\n } else {\n openValue = dataItem.getWorkingValue(yOpenField);\n }\n if (!$type.isNumber(openValue)) {\n openValue = closeValue;\n }\n var stack = dataItem.getValue(\"valueY\", \"stack\");\n openValue += stack;\n closeValue += stack;\n if (openValue == closeValue) {\n var baseInterval = yAxis.baseInterval;\n var dateFormatter = yAxis.dateFormatter;\n openValue = $time.round(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.firstDayOfWeek, dateFormatter.utc, undefined, dateFormatter.timezoneMinutes, dateFormatter.timezone).getTime();\n closeValue = $time.add(new Date(openValue), baseInterval.timeUnit, baseInterval.count, dateFormatter.utc).getTime();\n }\n var middleValue = void 0;\n if (yAxis == this.baseAxis) {\n middleValue = openValue + (closeValue - openValue) * bulletLocationY;\n } else {\n middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\n }\n positionY = yAxis.valueToPosition(middleValue);\n } else if (yAxis instanceof ValueAxis) {\n if (!$type.isNumber(bulletLocationY)) {\n bulletLocationY = 0;\n }\n var openValue = void 0;\n var closeValue = dataItem.getWorkingValue(yField);\n if (!yOpenField) {\n openValue = yAxis.baseValue;\n } else {\n openValue = dataItem.getWorkingValue(yOpenField);\n }\n var stack = dataItem.getValue(\"valueY\", \"stack\");\n openValue += stack;\n closeValue += stack;\n var middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\n positionY = yAxis.valueToPosition(middleValue);\n } else if (yAxis instanceof CategoryAxis) {\n positionY = yAxis.categoryToPosition(dataItem[yField], bulletLocationY);\n var topLocation = this.getAdjustedYLocation(dataItem, yField, bullet.locationY);\n var bottomLocation = this.getAdjustedYLocation(dataItem, yOpenField, bullet.locationY);\n positionY = yAxis.categoryToPosition(dataItem[yField], topLocation);\n var openPositionY = void 0;\n if (yOpenField) {\n openPositionY = yAxis.categoryToPosition(dataItem[yOpenField], bottomLocation);\n }\n if (!$type.isNumber(openPositionY)) {\n openPositionY = 1;\n }\n positionY = openPositionY + (positionY - openPositionY) * bulletLocationY;\n }\n bullet.visible = true;\n this.positionBulletReal(bullet, positionX, positionY);\n } else {\n bullet.visible = false;\n }\n }\n };\n XYSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\n bullet.x = this.xAxis.renderer.positionToPoint(positionX, positionY).x;\n bullet.y = this.yAxis.renderer.positionToPoint(positionY, positionX).y;\n };\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\n XYSeries.prototype.getBulletLocationX = function (bullet, field) {\n var bulletLocation = bullet.locationX;\n var dataItem = bullet.dataItem;\n if (!$type.isNumber(bulletLocation)) {\n bulletLocation = dataItem.workingLocations[field];\n }\n return bulletLocation;\n };\n /**\r\n * Returns bullet x location\r\n * @ignore\r\n */\n XYSeries.prototype.getBulletLocationY = function (bullet, field) {\n var bulletLocation = bullet.locationY;\n var dataItem = bullet.dataItem;\n if (!$type.isNumber(bulletLocation)) {\n bulletLocation = dataItem.workingLocations[field];\n }\n return bulletLocation;\n };\n /**\r\n * This method must be called if you update Series' data fields that might\r\n * affect stacking of the series.\r\n *\r\n * Since individual `dataField` changes are not being monitored, you need\r\n * todo it manually for changes to take affect.\r\n *\r\n * @since 4.7.21\r\n */\n XYSeries.prototype.updateStacking = function () {\n var _this = this;\n this.invalidateDataItems();\n if (this.chart) {\n this.chart.series.each(function (series) {\n if (series.baseAxis == _this.baseAxis) {\n series.stackedSeries = undefined;\n series.invalidateDataItems();\n series.invalidateProcessedData();\n }\n });\n }\n };\n Object.defineProperty(XYSeries.prototype, \"stacked\", {\n /**\r\n * @return Can be stacked?\r\n */\n get: function () {\n return this.getPropertyValue(\"stacked\");\n },\n /**\r\n * Can items from this series be included into stacks?\r\n *\r\n * Note: proper stacking is only possible if series have the same number\r\n * of data items. To ensure this, don't set data directly on series\r\n * but do this on chart instead.\r\n *\r\n * @default false\r\n * @param stacked Can be stacked?\r\n */\n set: function (stacked) {\n if (this.setPropertyValue(\"stacked\", stacked, true)) {\n this.updateStacking();\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (!stacked) {\n var field_1;\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\n field_1 = this.xField;\n }\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\n field_1 = this.yField;\n }\n if (field_1) {\n this.dataItems.each(function (dataItem) {\n dataItem.setCalculatedValue(field_1, 0, \"stack\");\n });\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"snapTooltip\", {\n /**\r\n * @return Should snap?\r\n */\n get: function () {\n return this.getPropertyValue(\"snapTooltip\");\n },\n /**\r\n * Should the nearest tooltip be shown if no data item is found on the\r\n * current cursor position? In order this to work, you should set snapTooltip = false on the series baseAxis.\r\n *\r\n * @default false\r\n * @param value Should snap?\r\n */\n set: function (value) {\n this.setPropertyValue(\"snapTooltip\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\n XYSeries.prototype.show = function (duration) {\n var _this = this;\n if (this.isHidden) {\n if (this.appeared && this.xAxis instanceof DateAxis && this.xAxis.groupData) {\n this._tmin.setKey(this.yAxis.uid, undefined);\n this._tmax.setKey(this.yAxis.uid, undefined);\n }\n if (this.appeared && this.yAxis instanceof DateAxis && this.yAxis.groupData) {\n this._tmin.setKey(this.xAxis.uid, undefined);\n this._tmax.setKey(this.xAxis.uid, undefined);\n }\n }\n var fields;\n if (this.xAxis instanceof ValueAxis && this.xAxis != this.baseAxis) {\n fields = this._xValueFields;\n }\n if (this.yAxis instanceof ValueAxis && this.yAxis != this.baseAxis) {\n fields = this._yValueFields;\n }\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var delay = 0;\n var interpolationDuration = this.defaultState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n if (!options.animationsEnabled) {\n interpolationDuration = 0;\n }\n var anim;\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\n var i = a[0];\n var dataItem = a[1];\n var realDuration = interpolationDuration;\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\n realDuration = 0;\n delay = 0;\n }\n if (_this.sequencedInterpolation && realDuration > 0) {\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\n }\n anim = dataItem.show(realDuration, delay, fields);\n });\n // other data sets\n this.dataSets.each(function (key, dataSet) {\n if (dataSet != _this.dataItems) {\n dataSet.each(function (dataItem) {\n dataItem.events.disable();\n dataItem.show(0, 0, fields);\n dataItem.events.enable();\n });\n }\n });\n if (this.mainDataSet != this.dataItems) {\n this.mainDataSet.each(function (dataItem) {\n dataItem.events.disable();\n dataItem.show(0, 0, fields);\n dataItem.events.enable();\n });\n }\n var animation = _super.prototype.show.call(this, duration);\n if (anim && !anim.isFinished()) {\n animation = anim;\n }\n if (this.hidden) {\n this.dispatchImmediately(\"selectionextremeschanged\");\n this.hidden = false;\n }\n return animation;\n };\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\n XYSeries.prototype.hide = function (duration) {\n var _this = this;\n var fields;\n var value;\n var xAxis = this.xAxis;\n if (xAxis instanceof ValueAxis && xAxis != this.baseAxis) {\n fields = this._xValueFields;\n // animate to zero if 0 is within zoomMin/zoomMax\n if (this.stacked || xAxis.minZoomed < xAxis.baseValue && xAxis.maxZoomed > xAxis.baseValue || this.stackedSeries) {\n value = xAxis.baseValue;\n } else {\n value = xAxis.min;\n }\n }\n var yAxis = this.yAxis;\n if (yAxis instanceof ValueAxis && yAxis != this.baseAxis) {\n fields = this._yValueFields;\n // animate to zero if 0 is within zoomMin/zoomMax\n if (this.stacked || yAxis.minZoomed < yAxis.baseValue && yAxis.maxZoomed > yAxis.baseValue || this.stackedSeries) {\n value = yAxis.baseValue;\n } else {\n value = yAxis.min;\n }\n }\n //if ($type.hasValue(fields)) {\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var interpolationDuration = this.hiddenState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n if (!options.animationsEnabled) {\n interpolationDuration = 0;\n }\n var delay = 0;\n var anim;\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\n var i = a[0];\n var dataItem = a[1];\n var realDuration = interpolationDuration;\n if (i < _this.startIndex - 10 || i > _this.endIndex + 10) {\n realDuration = 0;\n }\n if (realDuration == 0) {\n dataItem.hide(0, 0, value, fields);\n } else {\n if (_this.sequencedInterpolation && realDuration > 0) {\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\n }\n anim = dataItem.hide(realDuration, delay, value, fields);\n }\n });\n // other data sets\n this.dataSets.each(function (key, dataSet) {\n if (dataSet != _this.dataItems) {\n dataSet.each(function (dataItem) {\n dataItem.events.disable();\n dataItem.hide(0, 0, value, fields);\n dataItem.events.enable();\n });\n }\n });\n if (this.mainDataSet != this.dataItems) {\n this.mainDataSet.each(function (dataItem) {\n dataItem.events.disable();\n dataItem.hide(0, 0, value, fields);\n dataItem.events.enable();\n });\n }\n var animation = _super.prototype.hide.call(this, interpolationDuration);\n if (animation && !animation.isFinished()) {\n animation.delay(delay);\n }\n if (anim && !anim.isFinished()) {\n animation = anim;\n }\n // helps to avoid flicker. otherwise columns will show up at full size and only on next frame will animate from 0\n this.validateDataElements();\n //}\n return animation;\n };\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYSeries.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\n _super.prototype.handleDataItemWorkingValueChange.call(this, dataItem, name);\n // to calculate stack values\n var axisSeries = this.baseAxis.series;\n $iter.each(axisSeries.iterator(), function (series) {\n if (series.stacked || series.stackedSeries) {\n series.invalidateProcessedData();\n }\n });\n };\n /**\r\n * [getStackValue description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param dataItem Data item\r\n */\n XYSeries.prototype.getStackValue = function (dataItem, working) {\n // todo: here wer stack x and y values only. question is - what should we do with other values, like openX, openY?\n // if this series is not stacked or new stack begins, return.\n var _this = this;\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (!this.stacked || !xAxis || !yAxis) {\n return;\n } else {\n // it might seem that it's better to go through base axis series, but we do not maintain the same order as in chart.series there.\n var chart = this.chart;\n var index = chart.series.indexOf(this);\n var field_2;\n if (xAxis != this.baseAxis && xAxis instanceof ValueAxis) {\n field_2 = this.xField;\n }\n if (yAxis != this.baseAxis && yAxis instanceof ValueAxis) {\n field_2 = this.yField;\n }\n if (!field_2) {\n return;\n }\n //this is good for removing series, otherwise stack values will remain the same and chart won't pay atention when adding/removing series\t\t\t\n dataItem.setCalculatedValue(field_2, 0, \"stack\");\n $iter.eachContinue(chart.series.range(0, index).backwards().iterator(), function (prevSeries) {\n // stacking is only possible if both axes are the same\n if (prevSeries.xAxis == xAxis && prevSeries.yAxis == yAxis && prevSeries.className == _this.className) {\n // saving value\n prevSeries.stackedSeries = _this;\n var prevDataItem = prevSeries.dataItems.getIndex(dataItem.index); // indexes should match\n if (prevDataItem && prevDataItem.hasValue(_this._xValueFields) && prevDataItem.hasValue(_this._yValueFields)) {\n var value = dataItem.getValue(field_2);\n var prevValue = void 0;\n var prevRealValue = prevDataItem.getValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\n if (working) {\n prevValue = prevDataItem.getWorkingValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\n } else {\n prevValue = prevDataItem.getValue(field_2) + prevDataItem.getValue(field_2, \"stack\");\n }\n if (_this.stackToNegative) {\n if (value >= 0 && prevRealValue >= 0 || value < 0 && prevRealValue < 0) {\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\n return false;\n } else if (!prevSeries.stacked) {\n return false;\n }\n } else {\n dataItem.setCalculatedValue(field_2, prevValue, \"stack\");\n return false;\n }\n } else if (!prevSeries.stacked) {\n return false;\n }\n }\n return true;\n });\n }\n };\n Object.defineProperty(XYSeries.prototype, \"stackToNegative\", {\n /**\r\n * @return Stack to base line\r\n */\n get: function () {\n return this.getPropertyValue(\"stackToNegative\");\n },\n /**\r\n * This setting indicates how negative values are treated in stacked stacked\r\n * series.\r\n *\r\n * If set to `true` (default), negative values will stack on the base line.\r\n *\r\n * If set to `false`, negative value will stack in relation to the previous\r\n * value in the stack.\r\n *\r\n * @since 4.9.34\r\n * @param value Stack to base line\r\n */\n set: function (value) {\n this.setPropertyValue(\"stackToNegative\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"xField\", {\n /**\r\n * [xField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return this._xField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"yField\", {\n /**\r\n * [yField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return this._yField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"xOpenField\", {\n /**\r\n * [xOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return this._xOpenField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"yOpenField\", {\n /**\r\n * [yOpenField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n return this._yOpenField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"tooltipXField\", {\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n if (this._tooltipXField) {\n return this._tooltipXField;\n }\n return this._xField;\n },\n /**\r\n * [tooltipXField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this._tooltipXField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"tooltipYField\", {\n /**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\n get: function () {\n if (this._tooltipYField) {\n return this._tooltipYField;\n }\n return this._yField;\n },\n /**\r\n * [tooltipYField description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this._tooltipYField = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns lowest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\n XYSeries.prototype.min = function (axis) {\n return this._tmin.getKey(axis.uid);\n };\n /**\r\n * Returns highest value in the series for the specific axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\n XYSeries.prototype.max = function (axis) {\n return this._tmax.getKey(axis.uid);\n };\n /**\r\n * Returns lowest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\n XYSeries.prototype.selectionMin = function (axis) {\n var value = this._smin.getKey(axis.uid);\n // not good, because bad if there are no items with values in selection\n //if (!$type.isNumber(value)) {\n //value = this.min(axis);\n //}\t\t\n return value;\n };\n /**\r\n * Returns highest value in the series for the specific axis within current\r\n * selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n * @return value\r\n */\n XYSeries.prototype.selectionMax = function (axis) {\n var value = this._smax.getKey(axis.uid);\n // not good, because bad if there are no items with values in selection\n //if (!$type.isNumber(value)) {\n //value = this.max(axis);\n //}\n return value;\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n XYSeries.prototype.processConfig = function (config) {\n if (config) {\n // Set up base axes\n if ($type.hasValue(config.baseAxis) && $type.isString(config.baseAxis)) {\n if (this.map.hasKey(config.baseAxis)) {\n config.baseAxis = this.map.getKey(config.baseAxis);\n } else {\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.baseAxis + \"\\\" found for `baseAxis`.\");\n delete config.baseAxis;\n }\n }\n // Set up axes\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\n if (this.map.hasKey(config.xAxis)) {\n config.xAxis = this.map.getKey(config.xAxis);\n } else {\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`.\");\n delete config.xAxis;\n }\n }\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\n if (this.map.hasKey(config.yAxis)) {\n config.yAxis = this.map.getKey(config.yAxis);\n } else {\n this.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`.\");\n delete config.yAxis;\n }\n }\n // Set up axis ranges\n if ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\n for (var i = 0, len = config.axisRanges.length; i < len; i++) {\n var range = config.axisRanges[i];\n if (!$type.hasValue(range.type)) {\n range.type = \"AxisDataItem\";\n }\n if ($type.hasValue(range.axis) && $type.isString(range.axis) && this.map.hasKey(range.axis)) {\n range.component = this.map.getKey(range.axis);\n } else if ($type.hasValue(range.component) && $type.isString(range.component) && this.map.hasKey(range.component)) {\n range.component = this.map.getKey(range.component);\n }\n }\n }\n // Parse date fields based on the series fields\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\n this.processingErrors.push(\"`dataFields` is not set for series [\" + (this.name || \"unnamed\") + \"]\");\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\n XYSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\n if (this.xAxis && this.yAxis) {\n var x = this.xAxis.getX(dataItem, xKey, locationX);\n var y = this.yAxis.getY(dataItem, yKey, locationY);\n x = $math.fitToRange(x, -this._maxxX, this._maxxX); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n y = $math.fitToRange(y, -this._maxxY, this._maxxY); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n return {\n x: x,\n y: y\n };\n }\n };\n /**\r\n * Updates item reader text based on the type and set up of axis.\r\n */\n XYSeries.prototype.updateItemReaderText = function () {\n // We do not want to overwrite this if `itemReaderText` was changed by\n // user code.\n if (this._itemReaderTextChanged) {\n return;\n }\n var text = \"\";\n $object.each(this.dataFields, function (key, val) {\n text += \"{\" + key + \"} \";\n });\n this.itemReaderText = text;\n this._itemReaderTextChanged = false;\n };\n Object.defineProperty(XYSeries.prototype, \"cursorTooltipEnabled\", {\n /**\r\n * @return Display tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"cursorTooltipEnabled\");\n },\n /**\r\n * Indicates if series should display a tooltip for chart's cursor.\r\n *\r\n * If set to `true` (default), the tooltips set for all series item's\r\n * elements like columns and bullets will be automatically shown\r\n * when [[XYCursor]] passes over category/date, even if its not hovered\r\n * directly over the item.\r\n *\r\n * Set this to `false` to disable such behavior and display item-specific\r\n * tooltips only when hovered directly over them\r\n *\r\n * @default true\r\n * @param value Display tooltip?\r\n */\n set: function (value) {\n this.setPropertyValue(\"cursorTooltipEnabled\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"cursorHoverEnabled\", {\n /**\r\n * @return Hover enabled?\r\n */\n get: function () {\n return this.getPropertyValue(\"cursorHoverEnabled\");\n },\n /**\r\n * Indicates if series should apply hover state on bullets/columns/etc when\r\n * cursor is over the data item.\r\n *\r\n * If set to `true` (default) and chart cursor is enabled on th chart,\r\n * hovering over date/category will trigger hover states on related Series\r\n * items like bullets and columns.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n * @param value Hover enabled?\r\n */\n set: function (value) {\n this.setPropertyValue(\"cursorHoverEnabled\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"excludeFromTotal\", {\n /**\r\n * @return Exclude from totals?\r\n */\n get: function () {\n return this.getPropertyValue(\"excludeFromTotal\");\n },\n /**\r\n * Indicates if series' values should be excluded when calculating totals.\r\n *\r\n * @default false\r\n * @since 4.4.9\r\n * @param value Exclude from totals?\r\n */\n set: function (value) {\n this.setPropertyValue(\"excludeFromTotal\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"hideTooltipWhileZooming\", {\n /**\r\n * @return Hide tooltip while zooming?\r\n */\n get: function () {\n return this.getPropertyValue(\"hideTooltipWhileZooming\");\n },\n /**\r\n * Indicates if series' tooltip should be hidden while series axis range is\r\n * animating (zooming).\r\n *\r\n * @default true\r\n * @since 4.7.16\r\n * @param value Hide tooltip while zooming?\r\n */\n set: function (value) {\n this.setPropertyValue(\"hideTooltipWhileZooming\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYSeries.prototype, \"maskBullets\", {\n /**\r\n * @return Mask bullets?\r\n */\n get: function () {\n return this.getPropertyValue(\"maskBullets\");\n },\n /**\r\n * Indicates if series' bullets should be masked.\r\n *\r\n * @default true\r\n * @since 4.7.17\r\n * @param value Mask bullets?\r\n */\n set: function (value) {\n this.setPropertyValue(\"maskBullets\", value);\n var chart = this.chart;\n if (chart) {\n if (value) {\n this.bulletsContainer.parent = chart.bulletsContainer;\n } else {\n this.bulletsContainer.parent = chart.axisBulletsContainer;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all properties from another instance of [[Series]].\r\n *\r\n * @param source Source series\r\n */\n XYSeries.prototype.copyFrom = function (source) {\n this.groupFields = $utils.copyProperties(source.groupFields, {});\n _super.prototype.copyFrom.call(this, source);\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n XYSeries.prototype.dispose = function () {\n if (this.scrollbarSeries) {\n this.scrollbarSeries.dispose();\n }\n _super.prototype.dispose.call(this);\n };\n return XYSeries;\n}(Series);\nexport { XYSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"XYSeries\"] = XYSeries;\nregistry.registeredClasses[\"XYSeriesDataItem\"] = XYSeriesDataItem;\n//# sourceMappingURL=XYSeries.js.map","/**\r\n * A module with functionality for buildin a scrollbar with an XY graph in it.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Scrollbar } from \"../../core/elements/Scrollbar\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { List } from \"../../core/utils/List\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { XYChart } from \"../types/XYChart\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { DateAxis } from \"../axes/DateAxis\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { DesaturateFilter } from \"../../core/rendering/filters/DesaturateFilter\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { color } from \"../../core/utils/Color\";\nimport { options } from \"../../core/Options\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A special version of the Scrollbar that has an XY chart in it.\r\n *\r\n * Used mainly as an advanced scrollbar with a preview for other XY charts.\r\n *\r\n * However, can be used as standalone element.\r\n *\r\n * @see {@link IXYChartScrollbarEvents} for a list of available events\r\n * @see {@link IXYChartScrollbarAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar XYChartScrollbar = /** @class */function (_super) {\n __extends(XYChartScrollbar, _super);\n /**\r\n * Constructor\r\n */\n function XYChartScrollbar() {\n var _this = _super.call(this) || this;\n /**\r\n * A chart element Scrollbar is for.\r\n */\n _this._chart = new MutableValueDisposer();\n _this.className = \"XYChartScrollbar\";\n var interfaceColors = new InterfaceColorSet();\n _this.padding(0, 0, 0, 0);\n var scrollbarChart = _this.createChild(XYChart);\n scrollbarChart.shouldClone = false;\n scrollbarChart.margin(0, 0, 0, 0);\n scrollbarChart.padding(0, 0, 0, 0);\n scrollbarChart.interactionsEnabled = false;\n _this._scrollbarChart = scrollbarChart;\n if (!$utils.isIE()) {\n var filter = new DesaturateFilter();\n filter.filterUnits = \"userSpaceOnUse\";\n scrollbarChart.plotContainer.filters.push(filter);\n }\n _this._disposers.push(_this._scrollbarChart);\n _this.minHeight = 60;\n _this.minWidth = 60;\n var unselectedOverlay = _this.createChild(Sprite);\n unselectedOverlay.shouldClone = false;\n unselectedOverlay.setElement(_this.paper.add(\"path\"));\n unselectedOverlay.fill = interfaceColors.getFor(\"background\");\n unselectedOverlay.fillOpacity = 0.8;\n unselectedOverlay.interactionsEnabled = false;\n unselectedOverlay.isMeasured = false;\n unselectedOverlay.toBack();\n _this._unselectedOverlay = unselectedOverlay;\n _this._disposers.push(_this._unselectedOverlay);\n scrollbarChart.toBack();\n _this.background.cornerRadius(0, 0, 0, 0);\n var thumbBackground = _this.thumb.background;\n thumbBackground.cornerRadius(0, 0, 0, 0);\n thumbBackground.fillOpacity = 0;\n thumbBackground.fill = interfaceColors.getFor(\"background\");\n var hoverState = thumbBackground.states.getKey(\"hover\");\n if (hoverState) {\n hoverState.properties.fillOpacity = 0.2;\n }\n var downState = thumbBackground.states.getKey(\"down\");\n if (downState) {\n downState.properties.fillOpacity = 0.4;\n }\n _this._disposers.push(_this._chart);\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(XYChartScrollbar.prototype, \"series\", {\n /**\r\n * A list of series that are used to draw graph(s) on the scrollbar.\r\n *\r\n * @readonly\r\n * @return Series\r\n */\n get: function () {\n if (!this._series) {\n this._series = new List();\n this._disposers.push(this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false));\n this._disposers.push(this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false));\n }\n return this._series;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Decorates a new series when they are pushed into a `series` list.\r\n *\r\n * @param event Event\r\n */\n XYChartScrollbar.prototype.handleSeriesAdded = function (event) {\n var _this = this;\n var sourceSeries = event.newValue;\n if (!sourceSeries.xAxis || !sourceSeries.yAxis) {\n return;\n }\n var scrollbarChart = this.scrollbarChart;\n scrollbarChart.zoomOutButton.disabled = true;\n this.chart = sourceSeries.chart;\n scrollbarChart.dateFormatter.inputDateFormat = this.chart.dateFormatter.inputDateFormat;\n // Ensure that scrollbar chart shares the same locale as parent chart\n scrollbarChart.language.locale = this.chart.language.locale;\n var addXAxis = true;\n var addYAxis = true;\n // check if we haven't added clone of x or y axis before\n $iter.each(this.series.iterator(), function (series) {\n if (series != sourceSeries) {\n if (series.xAxis == sourceSeries.xAxis && _this.scrollbarChart.xAxes.length > 0) {\n addXAxis = false;\n }\n if (series.yAxis == sourceSeries.yAxis && _this.scrollbarChart.yAxes.length > 0) {\n addYAxis = false;\n }\n }\n });\n sourceSeries.events.on(\"beforedisposed\", function () {\n _this.series.removeValue(sourceSeries);\n });\n var interfaceColors = new InterfaceColorSet();\n var series = sourceSeries.clone();\n if (options.onlyShowOnViewport || options.queue) {\n this.addDisposer(this.chart.events.on(\"removedfromqueue\", function () {\n scrollbarChart.invalidateData();\n }));\n }\n if ($utils.isIE()) {\n series.stroke = color(\"#aaaaaa\");\n series.fill = series.stroke;\n series.propertyFields.fill = undefined;\n series.propertyFields.stroke = undefined;\n }\n sourceSeries.scrollbarSeries = series;\n if (addXAxis) {\n var xAxis = sourceSeries.xAxis.clone();\n scrollbarChart.xAxes.moveValue(xAxis);\n xAxis.title.disabled = true;\n xAxis.rangeChangeDuration = 0;\n //xAxis.id = sourceSeries.uid;\n var renderer = xAxis.renderer;\n renderer.ticks.template.disabled = true;\n renderer.inside = true;\n renderer.labels.template.inside = true;\n renderer.line.strokeOpacity = 0;\n renderer.minLabelPosition = 0.02;\n renderer.maxLabelPosition = 0.98;\n renderer.line.disabled = true;\n renderer.axisFills.template.disabled = true;\n renderer.baseGrid.disabled = true;\n renderer.grid.template.strokeOpacity = 0.05;\n renderer.minWidth = undefined;\n renderer.minHeight = undefined;\n renderer.padding(0, 0, 0, 0);\n renderer.chart = scrollbarChart;\n renderer.margin(0, 0, 0, 0);\n xAxis.width = percent(100);\n var labelsTemplate = renderer.labels.template;\n labelsTemplate.fillOpacity = 0.5;\n xAxis.maxZoomCount = undefined;\n xAxis.minZoomCount = undefined;\n if (xAxis instanceof DateAxis) {\n var vAxis_1 = xAxis;\n var sourceAxis = sourceSeries.xAxis;\n vAxis_1.groupCount = sourceAxis.groupCount * 5;\n vAxis_1.min = undefined;\n vAxis_1.max = undefined;\n this._disposers.push(vAxis_1.clonedFrom.events.on(\"extremeschanged\", function () {\n if ($type.isNumber(vAxis_1.clonedFrom.minDefined)) {\n vAxis_1.min = vAxis_1.clonedFrom.minDefined;\n }\n if ($type.isNumber(vAxis_1.clonedFrom.maxDefined)) {\n vAxis_1.max = vAxis_1.clonedFrom.maxDefined;\n }\n }, undefined, false));\n } else if (xAxis instanceof ValueAxis) {\n var vAxis_2 = xAxis;\n vAxis_2.min = undefined;\n vAxis_2.max = undefined;\n if (!$type.isNumber(vAxis_2.clonedFrom.minDefined)) {\n vAxis_2.min = undefined;\n }\n if (!$type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\n vAxis_2.max = undefined;\n }\n this._disposers.push(vAxis_2.clonedFrom.events.on(\"extremeschanged\", function () {\n if ($type.isNumber(vAxis_2.clonedFrom.minDefined)) {\n vAxis_2.min = vAxis_2.clonedFrom.min;\n }\n if ($type.isNumber(vAxis_2.clonedFrom.maxDefined)) {\n vAxis_2.max = vAxis_2.clonedFrom.max;\n }\n }, undefined, false));\n }\n series.xAxis = xAxis;\n } else {\n this.scrollbarChart.xAxes.each(function (xAxis) {\n if (xAxis.clonedFrom == sourceSeries.xAxis) {\n series.xAxis = xAxis;\n }\n });\n }\n if (addYAxis) {\n var yAxis = sourceSeries.yAxis.clone();\n scrollbarChart.yAxes.moveValue(yAxis);\n yAxis.title.disabled = true;\n yAxis.rangeChangeDuration = 0;\n var renderer = yAxis.renderer;\n renderer.ticks.template.disabled = true;\n renderer.inside = true;\n renderer.labels.template.inside = true;\n renderer.line.strokeOpacity = 0;\n renderer.minLabelPosition = 0.02;\n renderer.maxLabelPosition = 0.98;\n renderer.line.disabled = true;\n renderer.axisFills.template.disabled = true;\n renderer.grid.template.stroke = interfaceColors.getFor(\"background\");\n renderer.baseGrid.disabled = true;\n renderer.grid.template.strokeOpacity = 0.05;\n renderer.minWidth = undefined;\n renderer.minHeight = undefined;\n renderer.chart = scrollbarChart;\n renderer.padding(0, 0, 0, 0);\n renderer.margin(0, 0, 0, 0);\n yAxis.height = percent(100);\n var labelsTemplate = renderer.labels.template;\n labelsTemplate.fillOpacity = 0.5;\n series.yAxis = yAxis;\n yAxis.maxZoomCount = undefined;\n yAxis.minZoomCount = undefined;\n if (yAxis instanceof DateAxis) {\n var vAxis_3 = yAxis;\n vAxis_3.min = undefined;\n vAxis_3.max = undefined;\n var sourceAxis = sourceSeries.yAxis;\n yAxis.groupCount = sourceAxis.groupCount * 5;\n this._disposers.push(vAxis_3.clonedFrom.events.on(\"extremeschanged\", function () {\n if ($type.isNumber(vAxis_3.clonedFrom.minDefined)) {\n vAxis_3.min = vAxis_3.clonedFrom.minDefined;\n }\n if ($type.isNumber(vAxis_3.clonedFrom.maxDefined)) {\n vAxis_3.max = vAxis_3.clonedFrom.maxDefined;\n }\n }));\n } else if (yAxis instanceof ValueAxis) {\n var vAxis_4 = yAxis;\n vAxis_4.min = undefined;\n vAxis_4.max = undefined;\n if (!$type.isNumber(vAxis_4.clonedFrom.minDefined)) {\n vAxis_4.min = undefined;\n }\n if (!$type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\n vAxis_4.max = undefined;\n }\n this._disposers.push(vAxis_4.clonedFrom.events.on(\"extremeschanged\", function () {\n if ($type.isNumber(vAxis_4.clonedFrom.minDefined)) {\n vAxis_4.min = vAxis_4.clonedFrom.minDefined;\n }\n if ($type.isNumber(vAxis_4.clonedFrom.maxDefined)) {\n vAxis_4.max = vAxis_4.clonedFrom.maxDefined;\n }\n }));\n }\n } else {\n this.scrollbarChart.yAxes.each(function (yAxis) {\n if (yAxis.clonedFrom == sourceSeries.yAxis) {\n series.yAxis = yAxis;\n }\n });\n }\n series.rangeChangeDuration = 0;\n series.interpolationDuration = 0;\n series.defaultState.transitionDuration = 0;\n series.showOnInit = false;\n this._disposers.push(series.events.on(\"validated\", this.zoomOutAxes, this, false));\n // data might be set drectly on series\n this._disposers.push(sourceSeries.events.on(\"datavalidated\", function () {\n if (series.data != sourceSeries.data) {\n // data setter doesn't check this\n series.data = sourceSeries.data;\n }\n }, undefined, false));\n series.defaultState.properties.visible = true;\n scrollbarChart.series.push(series);\n this.updateByOrientation();\n };\n /**\r\n * @ignore\r\n */\n XYChartScrollbar.prototype.updateByOrientation = function () {\n var _this = this;\n if (this._scrollbarChart) {\n $iter.each(this._scrollbarChart.xAxes.iterator(), function (xAxis) {\n var renderer = xAxis.renderer;\n if (_this.orientation == \"vertical\") {\n renderer.grid.template.disabled = true;\n renderer.labels.template.disabled = true;\n renderer.minGridDistance = 10;\n } else {\n renderer.grid.template.disabled = false;\n renderer.labels.template.disabled = false;\n renderer.minGridDistance = xAxis.clonedFrom.renderer.minGridDistance;\n }\n });\n $iter.each(this._scrollbarChart.yAxes.iterator(), function (yAxis) {\n var renderer = yAxis.renderer;\n if (_this.orientation == \"horizontal\") {\n renderer.grid.template.disabled = true;\n renderer.labels.template.disabled = true;\n renderer.minGridDistance = 10;\n } else {\n renderer.grid.template.disabled = false;\n renderer.labels.template.disabled = false;\n renderer.minGridDistance = yAxis.clonedFrom.renderer.minGridDistance;\n }\n });\n }\n };\n /**\r\n * Cleans up after series are removed from Scrollbar.\r\n *\r\n * @param event Event\r\n */\n XYChartScrollbar.prototype.handleSeriesRemoved = function (event) {\n var sourceSeries = event.oldValue;\n var scrollbarChart = this.scrollbarChart;\n scrollbarChart.series.each(function (series) {\n if (series && series.clonedFrom == sourceSeries) {\n scrollbarChart.series.removeValue(series);\n }\n });\n if (scrollbarChart.series.length == 0) {\n scrollbarChart.xAxes.clear();\n scrollbarChart.yAxes.clear();\n }\n try {\n sourceSeries.events.off(\"validated\", this.zoomOutAxes, this);\n } catch (err) {}\n };\n Object.defineProperty(XYChartScrollbar.prototype, \"scrollbarChart\", {\n /**\r\n * A chart element that is used to display graphs in the Scrollbar.\r\n *\r\n * This is not the same as `chart`. It's a totally independent instance of\r\n * [[XYChart]] with separate config, series, etc.\r\n *\r\n * It can be configured just like any other [[XYChart]].\r\n *\r\n * @readonly\r\n * @return Scrollbar's internal chart\r\n */\n get: function () {\n return this._scrollbarChart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChartScrollbar.prototype, \"chart\", {\n /**\r\n * @return Chart\r\n */\n get: function () {\n return this._chart.get();\n },\n /**\r\n * A chart that Scrollbar belongs to.\r\n *\r\n * @param chart Chart\r\n */\n set: function (chart) {\n if (this._chart.get() !== chart) {\n this._chart.set(chart, chart.events.on(\"datavalidated\", this.handleDataChanged, this, false));\n this.handleDataChanged();\n this._scrollbarChart.dataProvider = chart; // this makes scrollbar chart do not validate data untill charts' data is validated\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChartScrollbar.prototype, \"unselectedOverlay\", {\n /**\r\n * A [[Sprite]] object representing overlay that is used to dim area of the\r\n * scrollbar that is currently not selected.\r\n *\r\n * Use its `fillOpacity` to set opacity of the fill, with `0` (zero)\r\n * completely disabling the dimming, and `1` making unselected area completely\r\n * blank.\r\n *\r\n * @since 4.6.1\r\n * @readonly\r\n * @return Unselected area curtain element\r\n */\n get: function () {\n return this._unselectedOverlay;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates Scrollbar's internal chart's data when the main chart's data\r\n * changes.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChartScrollbar.prototype.handleDataChanged = function () {\n if (this.chart.data != this.scrollbarChart.data) {\n this.scrollbarChart.data = this.chart.data;\n } else {\n // add data is handled in XYChart\n // invalidating all data caused the problem: https://github.com/amcharts/amcharts4/issues/2096\n this.scrollbarChart.invalidateRawData();\n }\n };\n /**\r\n * Zooms out all axes on the internal chart.\r\n */\n XYChartScrollbar.prototype.zoomOutAxes = function () {\n var scrollbarChart = this.scrollbarChart;\n $iter.each(scrollbarChart.xAxes.iterator(), function (x) {\n x.zoom({\n start: 0,\n end: 1\n }, true, true);\n });\n $iter.each(scrollbarChart.yAxes.iterator(), function (y) {\n y.zoom({\n start: 0,\n end: 1\n }, true, true);\n });\n };\n /**\r\n * Updates scrollbar thumb.\r\n *\r\n * @ignore\r\n */\n XYChartScrollbar.prototype.updateThumb = function (dispatchEvents) {\n if (dispatchEvents === void 0) {\n dispatchEvents = true;\n }\n _super.prototype.updateThumb.call(this, dispatchEvents);\n if (this._unselectedOverlay) {\n var thumb = this.thumb;\n var x = thumb.pixelX || 0;\n var y = thumb.pixelY || 0;\n var w = thumb.pixelWidth || 0;\n var h = thumb.pixelHeight || 0;\n var path = \"\";\n if (this.orientation == \"horizontal\") {\n path = $path.rectToPath({\n x: -1,\n y: 0,\n width: x,\n height: h\n });\n path += $path.rectToPath({\n x: x + w,\n y: 0,\n width: (this.pixelWidth || 0) - x - w,\n height: h\n });\n } else {\n path = $path.rectToPath({\n x: 0,\n y: 0,\n width: w,\n height: y\n });\n path += $path.rectToPath({\n x: 0,\n y: y + h,\n width: w,\n height: (this.pixelHeight || 0) - y - h\n });\n }\n this._unselectedOverlay.path = path;\n }\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n XYChartScrollbar.prototype.processConfig = function (config) {\n if (config) {\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\n for (var i = 0, len = config.series.length; i < len; i++) {\n var series = config.series[i];\n if ($type.hasValue(series) && $type.isString(series)) {\n if (this.map.hasKey(series)) {\n config.series[i] = this.map.getKey(series);\n } else {\n throw Error(\"XYChartScrollbar error: Series with id `\" + series + \"` does not exist.\");\n }\n }\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return XYChartScrollbar;\n}(Scrollbar);\nexport { XYChartScrollbar };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"XYChartScrollbar\"] = XYChartScrollbar;\n//# sourceMappingURL=XYChartScrollbar.js.map","/**\r\n * XY Chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\nimport { Container } from \"../../core/Container\";\nimport { List, ListDisposer } from \"../../core/utils/List\";\nimport { Color } from \"../../core/utils/Color\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { DateAxis } from \"../axes/DateAxis\";\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\nimport { XYSeries } from \"../series/XYSeries\";\nimport { Disposer } from \"../../core/utils/Disposer\";\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $number from \"../../core/utils/Number\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar XYChartDataItem = /** @class */function (_super) {\n __extends(XYChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function XYChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"XYChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return XYChartDataItem;\n}(SerialChartDataItem);\nexport { XYChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\nvar XYChart = /** @class */function (_super) {\n __extends(XYChart, _super);\n /**\r\n * Constructor\r\n */\n function XYChart() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Defines the type of horizontal axis rederer.\r\n */\n _this._axisRendererX = AxisRendererX;\n /**\r\n * Defines the type of vertical axis rederer.\r\n */\n _this._axisRendererY = AxisRendererY;\n /**\r\n * @ignore\r\n */\n _this._seriesPoints = [];\n _this.className = \"XYChart\";\n // Set defaults\n //this.margin(10, 10, 10, 10);\n _this.maskBullets = true;\n _this.arrangeTooltips = true;\n // Create main chart container\n var chartContainer = _this.chartContainer;\n chartContainer.layout = \"vertical\";\n _this.padding(15, 15, 15, 15);\n // Create top axes container\n var topAxesCont = chartContainer.createChild(Container);\n topAxesCont.shouldClone = false;\n topAxesCont.layout = \"vertical\";\n topAxesCont.width = percent(100);\n topAxesCont.zIndex = 1;\n _this.topAxesContainer = topAxesCont;\n // Create vertical axes and plot area container\n // Plot area and vertical axes share the whole width of the chart,\n // so we need to put then into a separate container so that layouting\n // engine takes care of the positioning\n var yAxesAndPlotCont = chartContainer.createChild(Container);\n yAxesAndPlotCont.shouldClone = false;\n yAxesAndPlotCont.layout = \"horizontal\";\n yAxesAndPlotCont.width = percent(100);\n yAxesAndPlotCont.height = percent(100);\n yAxesAndPlotCont.zIndex = 0;\n _this.yAxesAndPlotContainer = yAxesAndPlotCont;\n // Create a container for bottom axes\n var bottomAxesCont = chartContainer.createChild(Container);\n bottomAxesCont.shouldClone = false;\n bottomAxesCont.width = percent(100);\n bottomAxesCont.layout = \"vertical\";\n bottomAxesCont.zIndex = 1;\n _this.bottomAxesContainer = bottomAxesCont;\n // Create a container for left-side axes\n var leftAxesCont = yAxesAndPlotCont.createChild(Container);\n leftAxesCont.shouldClone = false;\n leftAxesCont.layout = \"horizontal\";\n leftAxesCont.height = percent(100);\n leftAxesCont.contentAlign = \"right\";\n leftAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\n leftAxesCont.zIndex = 1;\n _this.leftAxesContainer = leftAxesCont;\n // Create a container for plot area\n var plotCont = yAxesAndPlotCont.createChild(Container);\n plotCont.shouldClone = false;\n plotCont.height = percent(100);\n plotCont.width = percent(100);\n // Create transparend background for plot container so that hover works\n // on all of it\n plotCont.background.fillOpacity = 0;\n _this.plotContainer = plotCont;\n // must go below plot container\n _this.mouseWheelBehavior = \"none\";\n _this._cursorContainer = plotCont;\n // Create a container for right-side axes\n var rightAxesCont = yAxesAndPlotCont.createChild(Container);\n rightAxesCont.shouldClone = false;\n rightAxesCont.layout = \"horizontal\";\n rightAxesCont.height = percent(100);\n rightAxesCont.zIndex = 1;\n rightAxesCont.events.on(\"transformed\", _this.updateXAxesMargins, _this, false);\n _this.rightAxesContainer = rightAxesCont;\n _this.seriesContainer.parent = plotCont;\n _this.bulletsContainer.parent = plotCont;\n var zoomOutButton = plotCont.createChild(ZoomOutButton);\n zoomOutButton.shouldClone = false;\n zoomOutButton.align = \"right\";\n zoomOutButton.valign = \"top\";\n zoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\n zoomOutButton.marginTop = 5;\n zoomOutButton.marginRight = 5;\n zoomOutButton.hide(0);\n _this.zoomOutButton = zoomOutButton;\n // Create a container for bullets\n var axisBulletsContainer = _this.plotContainer.createChild(Container);\n axisBulletsContainer.shouldClone = false;\n axisBulletsContainer.width = percent(100);\n axisBulletsContainer.height = percent(100);\n axisBulletsContainer.isMeasured = false;\n axisBulletsContainer.zIndex = 4;\n axisBulletsContainer.layout = \"none\";\n _this.axisBulletsContainer = axisBulletsContainer;\n _this._bulletMask = _this.plotContainer;\n _this.events.on(\"beforedatavalidated\", function () {\n _this.series.each(function (series) {\n series.dataGrouped = false;\n series._baseInterval = {};\n });\n }, _this, false);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n XYChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n this.zoomOutButton.exportable = false;\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"X/Y chart\");\n }\n };\n /**\r\n * Draws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.draw = function () {\n _super.prototype.draw.call(this);\n this.seriesContainer.toFront();\n this.bulletsContainer.toFront();\n if (this.maskBullets) {\n this.bulletsContainer.mask = this._bulletMask;\n }\n this.updateSeriesLegend();\n };\n /**\r\n * Triggers a redrawing of all chart's series.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.updatePlotElements = function () {\n $iter.each(this.series.iterator(), function (series) {\n series.invalidate();\n });\n };\n /**\r\n * Triggers data (re)validation which in turn can cause a redraw of the\r\n * whole chart or just aprticular series / elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.validateData = function () {\n // tell axes that data changed\n if (this._parseDataFrom == 0) {\n $iter.each(this.xAxes.iterator(), function (axis) {\n axis.dataChangeUpdate();\n });\n $iter.each(this.yAxes.iterator(), function (axis) {\n axis.dataChangeUpdate();\n });\n $iter.each(this.series.iterator(), function (series) {\n series.dataChangeUpdate();\n });\n }\n _super.prototype.validateData.call(this);\n };\n /**\r\n * Updates margins for horizontal axes based on settings and available space.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.updateXAxesMargins = function () {\n var leftAxesWidth = this.leftAxesContainer.measuredWidth;\n var rightAxesWidth = this.rightAxesContainer.measuredWidth;\n var bottomAxesCont = this.bottomAxesContainer;\n if (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\n bottomAxesCont.paddingLeft = leftAxesWidth;\n bottomAxesCont.paddingRight = rightAxesWidth;\n }\n var topAxesCont = this.topAxesContainer;\n if (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\n topAxesCont.paddingLeft = leftAxesWidth;\n topAxesCont.paddingRight = rightAxesWidth;\n }\n };\n /**\r\n * Triggers a re-initialization of this element.\r\n *\r\n * Will result in complete redrawing of the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.reinit = function () {\n _super.prototype.reinit.call(this);\n this.series.each(function (series) {\n series.appeared = false;\n });\n };\n /**\r\n * Triggers an update on the horizontal axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\n XYChart.prototype.handleXAxisChange = function (event) {\n this.updateXAxis(event.target);\n };\n /**\r\n * Triggers an update on the vertical axis when one of its properties\r\n * change.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event An event object\r\n */\n XYChart.prototype.handleYAxisChange = function (event) {\n this.updateYAxis(event.target);\n };\n /**\r\n * Sets up a new horizontal (X) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\n XYChart.prototype.processXAxis = function (event) {\n var axis = event.newValue;\n axis.chart = this;\n if (!axis.renderer) {\n axis.renderer = new this._axisRendererX();\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\n }\n axis.axisLetter = \"X\";\n axis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\n //axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\n // Although axis does not use data directly, we set dataProvider here\n // (but not add to chart data users) to hold up rendering before data\n // is parsed (system handles this)\n axis.dataProvider = this;\n this.updateXAxis(axis.renderer);\n this.processAxis(axis);\n };\n /**\r\n * Sets up a new vertical (Y) axis when it is added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Axis insert event\r\n */\n XYChart.prototype.processYAxis = function (event) {\n var axis = event.newValue;\n axis.chart = this;\n if (!axis.renderer) {\n axis.renderer = new this._axisRendererY();\n axis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\n }\n axis.axisLetter = \"Y\";\n axis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\n //axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\n // Although axis does not use data directly, we set dataProvider here\n // (but not add to chart data users) to hold up rendering before data\n // is parsed (system handles this)\n axis.dataProvider = this;\n this.updateYAxis(axis.renderer);\n this.processAxis(axis);\n };\n /**\r\n * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\n XYChart.prototype.handleXAxisRangeChange = function () {\n var range = this.getCommonAxisRange(this.xAxes);\n if (this.scrollbarX) {\n this.zoomAxes(this.xAxes, range, true);\n }\n this.toggleZoomOutButton();\n this.updateScrollbar(this.scrollbarX, range);\n };\n /**\r\n * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n * zoomed out or not.\r\n */\n XYChart.prototype.toggleZoomOutButton = function () {\n if (this.zoomOutButton) {\n var show_1 = false;\n $iter.eachContinue(this.xAxes.iterator(), function (axis) {\n if (axis.toggleZoomOutButton) {\n if (axis.maxZoomCount > 0) {\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\n show_1 = true;\n return false;\n }\n } else {\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\n show_1 = true;\n return false;\n }\n }\n }\n return true;\n });\n $iter.eachContinue(this.yAxes.iterator(), function (axis) {\n if (axis.toggleZoomOutButton) {\n if (axis.maxZoomCount > 0) {\n var minZoomFactor = axis.maxZoomFactor / axis.maxZoomCount;\n if ($math.round(axis.end - axis.start, 3) < 1 / minZoomFactor) {\n show_1 = true;\n return false;\n }\n } else {\n if ($math.round(axis.start, 3) > 0 || $math.round(axis.end, 3) < 1) {\n show_1 = true;\n return false;\n }\n }\n return true;\n }\n });\n if (!this.seriesAppeared) {\n show_1 = false;\n }\n if (show_1) {\n this.zoomOutButton.show();\n } else {\n this.zoomOutButton.hide();\n }\n }\n };\n /**\r\n * @ignore\r\n * moved this check to a separate method so that we could override it in TreeMapSeries\r\n */\n XYChart.prototype.seriesAppeared = function () {\n var appeared = false;\n $iter.each(this.series.iterator(), function (series) {\n if (!series.appeared) {\n appeared = false;\n return false;\n }\n });\n return appeared;\n };\n /**\r\n * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n * value range changes.\r\n */\n XYChart.prototype.handleYAxisRangeChange = function () {\n var range = this.getCommonAxisRange(this.yAxes);\n if (this.scrollbarY) {\n this.zoomAxes(this.yAxes, range, true);\n }\n this.toggleZoomOutButton();\n this.updateScrollbar(this.scrollbarY, range);\n };\n /**\r\n * Updates a relative scrollbar whenever data range of the axis changes.\r\n *\r\n * @param scrollbar Scrollbar instance\r\n * @param range New data (values) range of the axis\r\n */\n XYChart.prototype.updateScrollbar = function (scrollbar, range) {\n if (scrollbar) {\n scrollbar.skipRangeEvents();\n scrollbar.start = range.start;\n scrollbar.end = range.end;\n }\n };\n /**\r\n * Returns a common range of values between a list of axes.\r\n *\r\n * This is used to synchronize the zoom between multiple axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes A list of axes\r\n * @return Common value range\r\n */\n XYChart.prototype.getCommonAxisRange = function (axes) {\n var start;\n var end;\n axes.each(function (axis) {\n if (!axis.zoomable || axis instanceof ValueAxis && axis.syncWithAxis) {} else {\n var axisStart = axis.start;\n var axisEnd = axis.end;\n if (axis.renderer.inversed) {\n axisStart = 1 - axis.end;\n axisEnd = 1 - axis.start;\n }\n if (!$type.isNumber(start) || axisStart < start) {\n start = axisStart;\n }\n if (!$type.isNumber(end) || axisEnd > end) {\n end = axisEnd;\n }\n }\n });\n return {\n start: start,\n end: end\n };\n };\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\n XYChart.prototype.updateXAxis = function (renderer) {\n var axis = renderer.axis;\n if (renderer.opposite) {\n axis.parent = this.topAxesContainer;\n axis.toFront();\n } else {\n axis.parent = this.bottomAxesContainer;\n axis.toBack();\n }\n if (axis.renderer) {\n axis.renderer.processRenderer();\n }\n };\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\n XYChart.prototype.updateYAxis = function (renderer) {\n var axis = renderer.axis;\n if (renderer.opposite) {\n axis.parent = this.rightAxesContainer;\n axis.toBack();\n } else {\n axis.parent = this.leftAxesContainer;\n axis.toFront();\n }\n if (axis.renderer) {\n axis.renderer.processRenderer();\n }\n };\n /**\r\n * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n * and containers for placement.\r\n *\r\n * @param axis Axis\r\n */\n XYChart.prototype.processAxis = function (axis) {\n var _this = this;\n // Value axis does not use data directly, only category axis does\n if (axis instanceof CategoryAxis) {\n this._dataUsers.moveValue(axis);\n }\n var renderer = axis.renderer;\n renderer.gridContainer.parent = this.plotContainer;\n renderer.gridContainer.toBack();\n renderer.breakContainer.parent = this.plotContainer;\n renderer.breakContainer.toFront();\n renderer.breakContainer.zIndex = 10;\n axis.addDisposer(new Disposer(function () {\n _this.dataUsers.removeValue(axis);\n }));\n renderer.bulletsContainer.parent = this.axisBulletsContainer;\n this._disposers.push(axis.events.on(\"positionchanged\", function () {\n var point = $utils.spritePointToSprite({\n x: 0,\n y: 0\n }, axis, _this.axisBulletsContainer);\n if (axis.renderer instanceof AxisRendererY) {\n renderer.bulletsContainer.y = point.y;\n }\n if (axis.renderer instanceof AxisRendererX) {\n renderer.bulletsContainer.x = point.x;\n }\n }, undefined, false));\n this.plotContainer.events.on(\"maxsizechanged\", function () {\n if (_this.inited) {\n axis.invalidateDataItems();\n _this.updateSeriesMasks();\n }\n }, axis, false);\n };\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\n XYChart.prototype.updateSeriesMasks = function () {\n if ($utils.isIE()) {\n this.series.each(function (series) {\n var mask = series.mainContainer.mask;\n series.mainContainer.mask = undefined;\n series.mainContainer.mask = mask;\n });\n }\n };\n XYChart.prototype.handleSeriesRemoved = function (event) {\n var series = event.oldValue;\n if (series) {\n if (series.xAxis) {\n series.xAxis.series.removeValue(series);\n series.xAxis.invalidateProcessedData();\n }\n if (series.yAxis) {\n series.yAxis.series.removeValue(series);\n series.yAxis.invalidateProcessedData();\n }\n // otherwise extremes won't change\n this.series.each(function (series) {\n series.resetExtremes();\n });\n }\n _super.prototype.handleSeriesRemoved.call(this, event);\n };\n Object.defineProperty(XYChart.prototype, \"xAxes\", {\n /**\r\n * A list of horizontal (X) axes.\r\n *\r\n * @return List of axes\r\n */\n get: function () {\n if (!this._xAxes) {\n this._xAxes = new List();\n this._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\n this._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\n this._disposers.push(new ListDisposer(this._xAxes, false));\n }\n return this._xAxes;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n XYChart.prototype.handleAxisRemoval = function (event) {\n var axis = event.oldValue;\n this.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\n if (axis.autoDispose) {\n axis.dispose();\n }\n };\n Object.defineProperty(XYChart.prototype, \"yAxes\", {\n /**\r\n * A list of vertical (Y) axes.\r\n *\r\n * @return List of axes\r\n */\n get: function () {\n if (!this._yAxes) {\n this._yAxes = new List();\n this._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\n this._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\n this._disposers.push(new ListDisposer(this._yAxes, false));\n }\n return this._yAxes;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Decorates a new [[XYSeries]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n XYChart.prototype.handleSeriesAdded = function (event) {\n try {\n _super.prototype.handleSeriesAdded.call(this, event);\n var series = event.newValue;\n if (this.xAxes.length == 0 || this.yAxes.length == 0) {\n registry.removeFromInvalidComponents(series);\n series.dataInvalid = false;\n }\n $utils.used(series.xAxis); // this is enough to get axis, handled in getter\n $utils.used(series.yAxis); // this is enough to get axis, handled in getter\n series.maskBullets = series.maskBullets;\n if (series.fill == undefined) {\n if (this.patterns) {\n if (!$type.hasValue(series.stroke)) {\n series.stroke = this.colors.next();\n }\n series.fill = this.patterns.next();\n if ($type.hasValue(series.fillOpacity)) {\n series.fill.backgroundOpacity = series.fillOpacity;\n }\n if (series.stroke instanceof Color) {\n series.fill.stroke = series.stroke;\n series.fill.fill = series.stroke;\n }\n } else {\n series.fill = this.colors.next();\n }\n }\n if (!$type.hasValue(series.stroke)) {\n series.stroke = series.fill;\n }\n } catch (e) {\n this.raiseCriticalError(e);\n }\n };\n Object.defineProperty(XYChart.prototype, \"cursor\", {\n /**\r\n * @return Cursor\r\n */\n get: function () {\n return this._cursor;\n },\n /**\r\n * Chart's [[Cursor]].\r\n *\r\n * @param cursor Cursor\r\n */\n set: function (cursor) {\n if (this._cursor != cursor) {\n if (this._cursor) {\n this.removeDispose(this._cursor);\n }\n this._cursor = cursor;\n if (cursor) {\n // TODO this is wrong, fix it\n this._disposers.push(cursor);\n cursor.chart = this;\n cursor.shouldClone = false;\n cursor.parent = this._cursorContainer;\n cursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\n cursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\n cursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\n cursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\n cursor.events.on(\"panning\", this.handleCursorPanning, this, false);\n cursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\n cursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\n cursor.events.on(\"hidden\", this.handleHideCursor, this, false);\n cursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\n if (this.tapToActivate) {\n // We need this in order to setup cursor properly\n this.setTapToActivate(this.tapToActivate);\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Performs tasks when the cursor's position changes, e.g. shows proper\r\n * tooltips on axes and series.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.handleCursorPositionChange = function () {\n var cursor = this.cursor;\n if (cursor.visible && !cursor.isHiding) {\n var xPosition_1 = this.cursor.xPosition;\n var yPosition_1 = this.cursor.yPosition;\n this.showSeriesTooltip({\n x: xPosition_1,\n y: yPosition_1\n });\n var exceptAxes_1 = [];\n var snapToSeries = cursor.snapToSeries;\n if (snapToSeries && !cursor.downPoint) {\n if (snapToSeries instanceof XYSeries) {\n snapToSeries = [snapToSeries];\n }\n var dataItems_1 = [];\n $array.each(snapToSeries, function (snpSeries) {\n if (!snpSeries.isHidden && !snpSeries.isHiding) {\n var xAxis = snpSeries.xAxis;\n var yAxis = snpSeries.yAxis;\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\n snpSeries.dataItems.each(function (dataItem) {\n dataItems_1.push(dataItem);\n });\n $array.move(exceptAxes_1, snpSeries.yAxis);\n $array.move(exceptAxes_1, snpSeries.xAxis);\n } else {\n if (snpSeries.baseAxis == snpSeries.xAxis) {\n $array.move(exceptAxes_1, snpSeries.yAxis);\n dataItems_1.push(xAxis.getSeriesDataItem(snpSeries, xAxis.toAxisPosition(xPosition_1), true));\n }\n if (snpSeries.baseAxis == snpSeries.yAxis) {\n $array.move(exceptAxes_1, snpSeries.xAxis);\n dataItems_1.push(yAxis.getSeriesDataItem(snpSeries, yAxis.toAxisPosition(yPosition_1), true));\n }\n }\n }\n });\n var closestDataItem_1 = this.getClosest(dataItems_1, xPosition_1, yPosition_1);\n if (closestDataItem_1) {\n this.series.each(function (series) {\n var closestSeries = closestDataItem_1.component;\n if (series != closestSeries) {\n series.hideTooltip();\n if (series.xAxis != closestSeries.xAxis) {\n series.xAxis.hideTooltip();\n exceptAxes_1.push(series.xAxis);\n }\n if (series.yAxis != closestSeries.yAxis) {\n series.yAxis.hideTooltip();\n exceptAxes_1.push(series.yAxis);\n }\n }\n });\n closestDataItem_1.component.showTooltipAtDataItem(closestDataItem_1);\n cursor.handleSnap(closestDataItem_1.component);\n }\n }\n //}\n this._seriesPoints = [];\n if (this._cursorXPosition != xPosition_1) {\n this.showAxisTooltip(this.xAxes, xPosition_1, exceptAxes_1);\n }\n if (this._cursorYPosition != yPosition_1) {\n this.showAxisTooltip(this.yAxes, yPosition_1, exceptAxes_1);\n }\n if (this.arrangeTooltips) {\n this.sortSeriesTooltips(this._seriesPoints);\n }\n if (this.legend) {\n this.legend.afterDraw();\n }\n }\n };\n /**\r\n * Finds closest data item to position out of the array of items.\r\n *\r\n * @since 4.9.29\r\n * @param dataItems Array of items\r\n * @param xPosition X position\r\n * @param yPosition Y position\r\n * @return Data item\r\n */\n XYChart.prototype.getClosest = function (dataItems, xPosition, yPosition) {\n var minDistance = Infinity;\n var closestDataItem;\n $array.eachContinue(dataItems, function (dataItem) {\n if (dataItem) {\n var xAxis = dataItem.component.xAxis;\n var yAxis = dataItem.component.yAxis;\n var xPos = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.toAxisPosition(xPosition)));\n var yPos = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.toAxisPosition(yPosition)));\n var xField = dataItem.component.xField;\n var yField = dataItem.component.yField;\n if (xAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(xField))) {\n return true;\n }\n if (yAxis instanceof ValueAxis && !$type.isNumber(dataItem.getValue(yField))) {\n return true;\n }\n var dxPosition = xAxis.positionToCoordinate(xAxis.toGlobalPosition(xAxis.getPositionX(dataItem, xField, dataItem.locations[xField], \"valueX\")));\n var dyPosition = yAxis.positionToCoordinate(yAxis.toGlobalPosition(yAxis.getPositionY(dataItem, yField, dataItem.locations[yField], \"valueY\")));\n var distance = Math.sqrt(Math.pow(xPos - dxPosition, 2) + Math.pow(yPos - dyPosition, 2));\n if (distance < minDistance) {\n minDistance = distance;\n closestDataItem = dataItem;\n }\n return true;\n }\n });\n return closestDataItem;\n };\n /**\r\n * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.handleHideCursor = function () {\n this.hideObjectTooltip(this.xAxes);\n this.hideObjectTooltip(this.yAxes);\n this.hideObjectTooltip(this.series);\n this._cursorXPosition = undefined;\n this._cursorYPosition = undefined;\n this.updateSeriesLegend();\n };\n /**\r\n * Updates values for each series' legend item.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart.prototype.updateSeriesLegend = function () {\n $iter.each(this.series.iterator(), function (series) {\n series.updateLegendValue();\n });\n };\n /**\r\n * Hides a tooltip for a list of objects.\r\n *\r\n * @ignore Exclude from docs\r\n * @param sprites A list of sprites to hide tooltip for\r\n */\n XYChart.prototype.hideObjectTooltip = function (sprites) {\n $iter.each(sprites.iterator(), function (sprite) {\n if (sprite.cursorTooltipEnabled) {\n sprite.hideTooltip(0);\n }\n });\n };\n /**\r\n * Shows a tooltip for all chart's series, using specific coordinates as a\r\n * reference point.\r\n *\r\n * The tooltip might be shown at different coordinates depending on the\r\n * actual data point's position, overlapping with other tooltips, etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Reference point\r\n */\n XYChart.prototype.showSeriesTooltip = function (position) {\n var _this = this;\n if (!position) {\n this.series.each(function (series) {\n series.hideTooltip();\n });\n return;\n }\n var seriesPoints = [];\n this.series.each(function (series) {\n //if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\n if (series.xAxis instanceof DateAxis && series.xAxis.snapTooltip || series.yAxis instanceof DateAxis && series.yAxis.snapTooltip) {\n // void\n } else {\n var point = series.showTooltipAtPosition(position.x, position.y);\n if (point) {\n series.tooltip.setBounds($utils.spriteRectToSvg({\n x: 0,\n y: 0,\n width: _this.pixelWidth,\n height: _this.pixelHeight\n }, _this));\n seriesPoints.push({\n series: series,\n point: point\n });\n }\n }\n //}\n });\n if (this.arrangeTooltips) {\n this.sortSeriesTooltips(seriesPoints);\n }\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.sortSeriesTooltips = function (seriesPoints) {\n if (seriesPoints.length > 0) {\n var cursor_1 = this.cursor;\n if (cursor_1 && $type.isNumber(cursor_1.maxTooltipDistance)) {\n var cursorPoint_1 = $utils.spritePointToSvg({\n x: cursor_1.point.x,\n y: cursor_1.point.y\n }, cursor_1);\n var nearestSeries_1;\n var nearestPoint_1;\n var smallestDistance_1 = Infinity;\n $array.each(seriesPoints, function (seriesPoint) {\n var series = seriesPoint.series;\n var fixedPoint = seriesPoint.point;\n if (fixedPoint) {\n var point = {\n x: fixedPoint.x,\n y: fixedPoint.y\n };\n var distance = Math.abs($math.getDistance(point, cursorPoint_1));\n if (distance < smallestDistance_1) {\n nearestPoint_1 = point;\n smallestDistance_1 = distance;\n nearestSeries_1 = series;\n }\n }\n });\n var newSeriesPoints_1 = [];\n if (nearestSeries_1) {\n $array.each(seriesPoints, function (seriesPoint) {\n if (Math.abs($math.getDistance(seriesPoint.point, nearestPoint_1)) <= Math.abs(cursor_1.maxTooltipDistance)) {\n newSeriesPoints_1.push({\n series: seriesPoint.series,\n point: seriesPoint.point\n });\n } else {\n var tooltipDataItem = seriesPoint.series.tooltipDataItem;\n if (tooltipDataItem) {\n $array.each(tooltipDataItem.sprites, function (sprite) {\n sprite.isHover = false;\n sprite.handleOutReal(); // to avoid flicker\n });\n }\n seriesPoint.series.hideTooltip(0);\n }\n });\n if (cursor_1.maxTooltipDistance < 0) {\n if (newSeriesPoints_1.length > 0) {\n $array.each(newSeriesPoints_1, function (np) {\n if (nearestSeries_1 != np.series) {\n np.series.hideTooltip(0);\n }\n });\n }\n newSeriesPoints_1 = [{\n series: nearestSeries_1,\n point: nearestPoint_1\n }];\n }\n }\n seriesPoints = newSeriesPoints_1;\n }\n var topLeft_1 = $utils.spritePointToSvg({\n x: -0.5,\n y: -0.5\n }, this.plotContainer);\n var bottomRight_1 = $utils.spritePointToSvg({\n x: this.plotContainer.pixelWidth + 0.5,\n y: this.plotContainer.pixelHeight + 0.5\n }, this.plotContainer);\n var sum_1 = 0;\n var filteredSeriesPoints_1 = [];\n $array.each(seriesPoints, function (seriesPoint) {\n var point = seriesPoint.point;\n if (point && $math.isInRectangle(point, {\n x: topLeft_1.x,\n y: topLeft_1.y,\n width: bottomRight_1.x - topLeft_1.x,\n height: bottomRight_1.y - topLeft_1.y\n })) {\n filteredSeriesPoints_1.push({\n point: point,\n series: seriesPoint.series\n });\n sum_1 += point.y;\n }\n });\n seriesPoints = filteredSeriesPoints_1;\n var firstSeries = this.series.getIndex(0);\n var inversed = false;\n if (firstSeries && firstSeries.yAxis && firstSeries.yAxis.renderer.inversed) {\n inversed = true;\n }\n if (inversed) {\n seriesPoints.sort(function (a, b) {\n return $number.order(a.point.y, b.point.y);\n });\n } else {\n seriesPoints.sort(function (a, b) {\n return $number.order(b.point.y, a.point.y);\n });\n seriesPoints.reverse();\n }\n var averageY = sum_1 / seriesPoints.length;\n var maxY = $utils.svgPointToDocument({\n x: 0,\n y: 0\n }, this.svgContainer.SVGContainer).y;\n if (seriesPoints.length > 0) {\n var top_1 = topLeft_1.y;\n var bottom = bottomRight_1.y;\n // TODO is this needed ?\n $utils.spritePointToDocument({\n x: 0,\n y: top_1\n }, this);\n var dropped = false;\n if (averageY > top_1 + (bottom - top_1) / 2) {\n var nextHeight = bottom;\n for (var i = seriesPoints.length - 1; i >= 0; i--) {\n var series = seriesPoints[i].series;\n var tooltip = series.tooltip;\n var pointY = seriesPoints[i].point.y;\n tooltip.setBounds({\n x: 0,\n y: -maxY,\n width: this.pixelWidth,\n height: nextHeight + maxY\n });\n if (tooltip.invalid) {\n tooltip.validate();\n }\n tooltip.toBack();\n nextHeight = $utils.spritePointToSvg({\n x: 0,\n y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop\n }, tooltip).y;\n if (nextHeight < -maxY) {\n dropped = true;\n break;\n }\n }\n }\n if (averageY <= top_1 + (bottom - top_1) / 2 || dropped) {\n var nextY = top_1;\n for (var i = 0, len = seriesPoints.length; i < len; i++) {\n var series = seriesPoints[i].series;\n var pointY = seriesPoints[i].point.y;\n var tooltip = series.tooltip;\n tooltip.setBounds({\n x: 0,\n y: nextY,\n width: this.pixelWidth,\n height: bottom\n });\n if (tooltip.invalid) {\n tooltip.validate();\n }\n tooltip.toBack();\n nextY = $utils.spritePointToSvg({\n x: 0,\n y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom\n }, tooltip).y;\n }\n }\n }\n }\n };\n /**\r\n * Shows tooltips for a list of axes at specific position.\r\n *\r\n * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n * vertical axes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axes List of axes to show tooltip on\r\n * @param position Position (px)\r\n */\n XYChart.prototype.showAxisTooltip = function (axes, position, except) {\n var _this = this;\n $iter.each(axes.iterator(), function (axis) {\n if (!except || except.indexOf(axis) == -1) {\n if (_this.dataItems.length > 0 || axis.dataItems.length > 0) {\n axis.showTooltipAtPosition(position);\n }\n }\n });\n };\n /**\r\n * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n *\r\n * @param axis Axis\r\n * @param range Range\r\n * @return Modified range\r\n */\n XYChart.prototype.getUpdatedRange = function (axis, range) {\n if (!axis) {\n return;\n }\n var start;\n var end;\n var inversed = axis.renderer.inversed;\n if (inversed) {\n $math.invertRange(range);\n start = 1 - axis.end;\n end = 1 - axis.start;\n } else {\n start = axis.start;\n end = axis.end;\n }\n var difference = end - start;\n return {\n start: start + range.start * difference,\n end: start + range.end * difference\n };\n };\n /**\r\n * Performs zoom and other operations when user finishes zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\n XYChart.prototype.handleCursorZoomEnd = function (event) {\n var cursor = this.cursor;\n var behavior = cursor.behavior;\n if (behavior == \"zoomX\" || behavior == \"zoomXY\") {\n var xRange = cursor.xRange;\n if (xRange && this.xAxes.length > 0) {\n xRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\n xRange.priority = \"start\";\n this.zoomAxes(this.xAxes, xRange);\n }\n }\n if (behavior == \"zoomY\" || behavior == \"zoomXY\") {\n var yRange = cursor.yRange;\n if (yRange && this.yAxes.length > 0) {\n yRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\n yRange.priority = \"start\";\n this.zoomAxes(this.yAxes, yRange);\n }\n }\n this.handleHideCursor();\n };\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\n XYChart.prototype.handleCursorPanStart = function (event) {\n var xAxis = this.xAxes.getIndex(0);\n if (xAxis) {\n this._panStartXRange = {\n start: xAxis.start,\n end: xAxis.end\n };\n if (xAxis.renderer.inversed) {\n this._panStartXRange = $math.invertRange(this._panStartXRange);\n }\n }\n var yAxis = this.yAxes.getIndex(0);\n if (yAxis) {\n this._panStartYRange = {\n start: yAxis.start,\n end: yAxis.end\n };\n if (yAxis.renderer.inversed) {\n this._panStartYRange = $math.invertRange(this._panStartYRange);\n }\n }\n };\n /**\r\n * Performs zoom and other operations when user ends panning\r\n *\r\n * @param event Cursor's event\r\n */\n XYChart.prototype.handleCursorPanEnd = function (event) {\n var cursor = this.cursor;\n var behavior = cursor.behavior;\n if (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\n var panEndRange = this._panEndXRange;\n var panStartRange = this._panStartXRange;\n var delta = 0;\n if (panEndRange.start < 0) {\n delta = panEndRange.start;\n }\n if (panStartRange.end > 1) {\n if (panEndRange.end > panStartRange.end) {\n delta = panEndRange.end - panStartRange.end;\n }\n } else if (panEndRange.end > 1) {\n delta = panEndRange.end - 1;\n }\n this.zoomAxes(this.xAxes, {\n start: panEndRange.start - delta,\n end: panEndRange.end - delta\n }, false, cursor.snapOnPan);\n this._panEndXRange = undefined;\n this._panStartXRange = undefined;\n }\n if (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\n var panEndRange = this._panEndYRange;\n var delta = 0;\n if (panEndRange.start < 0) {\n delta = panEndRange.start;\n }\n if (panEndRange.end > 1) {\n delta = panEndRange.end - 1;\n }\n this.zoomAxes(this.yAxes, {\n start: panEndRange.start - delta,\n end: panEndRange.end - delta\n }, false, cursor.snapOnPan);\n this._panEndYRange = undefined;\n this._panStartYRange = undefined;\n }\n };\n XYChart.prototype.handleCursorCanceled = function () {\n this._panEndXRange = undefined;\n this._panStartXRange = undefined;\n };\n /**\r\n * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n *\r\n * @param event Cursor's event\r\n */\n XYChart.prototype.handleCursorPanning = function (event) {\n var cursor = this.cursor;\n var behavior = cursor.behavior;\n var maxPanOut = cursor.maxPanOut;\n if (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\n var panStartRange = this._panStartXRange;\n var range = cursor.xRange;\n var axisRange = this.getCommonAxisRange(this.xAxes);\n var difference = panStartRange.end - panStartRange.start;\n var delta = range.start * (axisRange.end - axisRange.start);\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\n if (newStart <= 0) {\n newEnd = newStart + difference;\n }\n if (newEnd >= 1) {\n newStart = newEnd - difference;\n }\n var newRange = {\n start: newStart,\n end: newEnd\n };\n this._panEndXRange = newRange;\n this.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\n }\n if (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\n var panStartRange = this._panStartYRange;\n var range = cursor.yRange;\n var axisRange = this.getCommonAxisRange(this.yAxes);\n var difference = panStartRange.end - panStartRange.start;\n var delta = range.start * (axisRange.end - axisRange.start);\n var newStart = Math.max(-maxPanOut, delta + panStartRange.start);\n var newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\n if (newStart <= 0) {\n newEnd = newStart + difference;\n }\n if (newEnd >= 1) {\n newStart = newEnd - difference;\n }\n var newRange = {\n start: newStart,\n end: newEnd\n };\n this._panEndYRange = newRange;\n this.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\n }\n this.handleHideCursor();\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.handleYAxisSet = function (series) {};\n /**\r\n * Performs zoom and other operations when user starts zooming using chart\r\n * cursor, e.g. zooms axes.\r\n *\r\n * @param event Cursor's event\r\n */\n XYChart.prototype.handleCursorZoomStart = function (event) {\n // Nothing here\n // This method is here only as a \"placeholder\" for extending classes to\n // override if necessary\n };\n Object.defineProperty(XYChart.prototype, \"scrollbarX\", {\n /**\r\n * @return Scrollbar\r\n */\n get: function () {\n return this._scrollbarX;\n },\n /**\r\n * Horizontal (X) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\n set: function (scrollbar) {\n var _this = this;\n if (this._scrollbarX) {\n this.removeDispose(this._scrollbarX);\n }\n this._scrollbarX = scrollbar;\n if (scrollbar) {\n this._disposers.push(scrollbar);\n scrollbar.parent = this.topAxesContainer;\n scrollbar.shouldClone = false;\n scrollbar.startGrip.exportable = false;\n scrollbar.endGrip.exportable = false;\n scrollbar.toBack();\n scrollbar.orientation = \"horizontal\";\n scrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\n this.events.on(\"datavalidated\", function () {\n return scrollbar.updateThumb(false);\n }, this, false);\n // accessibility related\n scrollbar.adapter.add(\"positionValue\", function (arg) {\n var xAxis = _this.xAxes.getIndex(0);\n if (xAxis) {\n arg.value = xAxis.getPositionLabel(xAxis.renderer.inversed ? 1 - arg.position : arg.position);\n }\n return arg;\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart.prototype, \"scrollbarY\", {\n /**\r\n * @return Scrollbar\r\n */\n get: function () {\n return this._scrollbarY;\n },\n /**\r\n * Vertical (Y) scrollbar.\r\n *\r\n * @param scrollbar Scrollbar\r\n */\n set: function (scrollbar) {\n var _this = this;\n if (this._scrollbarY) {\n this.removeDispose(this._scrollbarY);\n }\n this._scrollbarY = scrollbar;\n if (scrollbar) {\n this._disposers.push(scrollbar);\n scrollbar.parent = this.rightAxesContainer;\n scrollbar.startGrip.exportable = false;\n scrollbar.shouldClone = false;\n scrollbar.endGrip.exportable = false;\n scrollbar.toFront();\n scrollbar.orientation = \"vertical\";\n scrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\n this.events.on(\"datavalidated\", function () {\n return scrollbar.updateThumb(false);\n }, this, false);\n // accessibility related\n scrollbar.adapter.add(\"positionValue\", function (arg) {\n var yAxis = _this.yAxes.getIndex(0);\n if (yAxis) {\n arg.value = yAxis.getPositionLabel(arg.position);\n }\n return arg;\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\n XYChart.prototype.handleXScrollbarChange = function (event) {\n if (this.inited) {\n var scrollbar = event.target;\n var range = scrollbar.range;\n if (range.start == 0) {\n range.priority = \"start\";\n }\n if (range.end == 1) {\n range.priority = \"end\";\n }\n range = this.zoomAxes(this.xAxes, range);\n scrollbar.fixRange(range);\n }\n };\n /**\r\n * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n * on it changes.\r\n *\r\n * @param event Scrollbar range change event\r\n */\n XYChart.prototype.handleYScrollbarChange = function (event) {\n if (this.inited) {\n var scrollbar = event.target;\n var range = scrollbar.range;\n if (range.end == 1) {\n range.priority = \"end\";\n }\n if (range.start == 0) {\n range.priority = \"start\";\n }\n range = this.zoomAxes(this.yAxes, range);\n scrollbar.fixRange(range);\n }\n };\n /**\r\n * Zooms axes that are affected by to specific relative range.\r\n *\r\n * @param axes List of axes to zoom\r\n * @param range Range of values to zoom to (0-1)\r\n * @param instantly If set to `true` will skip zooming animation\r\n * @return Recalculated range that is common to all involved axes\r\n */\n XYChart.prototype.zoomAxes = function (axes, range, instantly, round, declination, stop) {\n var realRange = {\n start: 0,\n end: 1\n };\n this.showSeriesTooltip(); // hides\n var originalRange = range;\n if (!this.dataInvalid) {\n $iter.each(axes.iterator(), function (axis) {\n var maxZoomFactor = axis.maxZoomFactor;\n if ($type.isNumber(axis.minZoomCount)) {\n maxZoomFactor = maxZoomFactor / axis.minZoomCount;\n }\n if (stop && 1 / (range.end - range.start) >= maxZoomFactor) {\n // void\n } else {\n if (axis.zoomable) {\n if (axis.renderer.inversed) {\n range = $math.invertRange(originalRange);\n } else {\n range = originalRange;\n }\n axis.hideTooltip(0);\n if (round) {\n //let diff = range.end - range.start;\n if (axis instanceof CategoryAxis) {\n var cellWidth = axis.getCellEndPosition(0) - axis.getCellStartPosition(0);\n range.start = axis.roundPosition(range.start + cellWidth / 2 - axis.startLocation * cellWidth, axis.startLocation);\n range.end = axis.roundPosition(range.end - cellWidth / 2 + (1 - axis.endLocation) * cellWidth, axis.endLocation);\n } else {\n range.start = axis.roundPosition(range.start + 0.0001, 0, axis.startLocation);\n range.end = axis.roundPosition(range.end + 0.0001, 0, axis.endLocation);\n }\n }\n var axisRange = axis.zoom(range, instantly, instantly, declination);\n if (axis.renderer.inversed) {\n axisRange = $math.invertRange(axisRange);\n }\n realRange = axisRange;\n }\n }\n });\n }\n return realRange;\n };\n Object.defineProperty(XYChart.prototype, \"maskBullets\", {\n /**\r\n * @return Mask bullet container?\r\n */\n get: function () {\n return this.getPropertyValue(\"maskBullets\");\n },\n /**\r\n * Indicates if bullet container is masked.\r\n *\r\n * If it is set to `true`, any bullets that do not fit into bullet container\r\n * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n * of the plot area so they are not cut off.\r\n *\r\n * @param value Mask bullet container?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"maskBullets\", value, true) && this.bulletsContainer) {\n if (value) {\n this.bulletsContainer.mask = this._bulletMask;\n } else {\n this.bulletsContainer.mask = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart.prototype, \"arrangeTooltips\", {\n /**\r\n * @return Arrange tooltips?\r\n */\n get: function () {\n return this.getPropertyValue(\"arrangeTooltips\");\n },\n /**\r\n * Indicates if chart should arrange series tooltips so that they would not\r\n * overlap.\r\n *\r\n * If set to `true` (default), the chart will adjust vertical positions of\r\n * all simultaneously shown tooltips to avoid overlapping.\r\n *\r\n * However, if you have a vertically-arranged chart, it might not make sense,\r\n * because tooltips would most probably not be aligned horizontally. In this\r\n * case it would probably be a good idea to set this setting to `false`.\r\n *\r\n * @default true\r\n * @param value Arrange tooltips?\r\n */\n set: function (value) {\n this.setPropertyValue(\"arrangeTooltips\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\n XYChart.prototype.handleWheel = function (event) {\n var plotContainer = this.plotContainer;\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\n var shift = event.shift.y;\n this.handleWheelReal(shift, this.mouseWheelBehavior, plotPoint);\n };\n /**\r\n * Handles mouse wheel event.\r\n *\r\n * @param event Original event\r\n */\n XYChart.prototype.handleHorizontalWheel = function (event) {\n var plotContainer = this.plotContainer;\n var svgPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\n var plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\n this.handleWheelReal(event.shift.x, this.horizontalMouseWheelBehavior, plotPoint);\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.handleWheelReal = function (shift, mouseWheelBehavior, plotPoint) {\n if (shift != 0) {\n var plotContainer = this.plotContainer;\n var rangeX = this.getCommonAxisRange(this.xAxes);\n var rangeY = this.getCommonAxisRange(this.yAxes);\n var shiftStep = 0.1;\n var maxPanOut = 0;\n if (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\n var differenceX = rangeX.end - rangeX.start;\n var newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100 * (rangeX.end - rangeX.start));\n var newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (rangeX.end - rangeX.start), 1 + maxPanOut);\n if (newStartX <= 0) {\n newEndX = newStartX + differenceX;\n }\n if (newEndX >= 1) {\n newStartX = newEndX - differenceX;\n }\n this.zoomAxes(this.xAxes, {\n start: newStartX,\n end: newEndX\n });\n }\n if (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\n shift *= -1;\n var differenceY = rangeY.end - rangeY.start;\n var newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100 * (rangeY.end - rangeY.start));\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * (rangeY.end - rangeY.start), 1 + maxPanOut);\n if (newStartY <= 0) {\n newEndY = newStartY + differenceY;\n }\n if (newEndY >= 1) {\n newStartY = newEndY - differenceY;\n }\n this.zoomAxes(this.yAxes, {\n start: newStartY,\n end: newEndY\n });\n }\n if (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\n var locationX = plotPoint.x / plotContainer.maxWidth;\n var location2X = this.xAxes.getIndex(0).toAxisPosition(locationX);\n var newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * (rangeX.end - rangeX.start) * shift / 100 * locationX);\n newStartX = Math.min(newStartX, location2X);\n var newEndX = Math.min(rangeX.end + shiftStep * (rangeX.end - rangeX.start) * shift / 100 * (1 - locationX), 1 + maxPanOut);\n newEndX = Math.max(newEndX, location2X);\n this.zoomAxes(this.xAxes, {\n start: newStartX,\n end: newEndX\n }, undefined, undefined, undefined, true);\n }\n if (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\n var locationY = plotPoint.y / plotContainer.maxHeight;\n var location2Y = this.yAxes.getIndex(0).toAxisPosition(locationY);\n var newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * (rangeY.end - rangeY.start) * shift / 100 * (1 - locationY));\n newStartY = Math.min(newStartY, location2Y);\n var newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY * (rangeY.end - rangeY.start), 1 + maxPanOut);\n newEndY = Math.max(newEndY, location2Y);\n this.zoomAxes(this.yAxes, {\n start: newStartY,\n end: newEndY\n }, undefined, undefined, undefined, true);\n }\n }\n };\n Object.defineProperty(XYChart.prototype, \"mouseWheelBehavior\", {\n /**\r\n * @return Mouse wheel behavior\r\n */\n get: function () {\n return this.getPropertyValue(\"mouseWheelBehavior\");\n },\n /**\r\n * Specifies action for when mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`,`\"panXY\"`, `\"none\"` (default).\r\n *\r\n * You can control sensitivity of wheel zooming via `mouseOptions`.\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\n if (value != \"none\") {\n this._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\n this._disposers.push(this._mouseWheelDisposer);\n } else {\n if (this._mouseWheelDisposer) {\n this.plotContainer.wheelable = false;\n this.plotContainer.hoverable = false;\n this._mouseWheelDisposer.dispose();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart.prototype, \"horizontalMouseWheelBehavior\", {\n /**\r\n * @return Horizontal mouse wheel behavior\r\n */\n get: function () {\n return this.getPropertyValue(\"horizontalMouseWheelBehavior\");\n },\n /**\r\n * Specifies action for when horizontal mouse wheel is used when over the chart.\r\n *\r\n * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n *\r\n * @default \"none\"\r\n * @see {@link https://www.amcharts.com/docs/v4/reference/sprite/#mouseOptions_property} More information about `mouseOptions`\r\n * @param mouse wheel behavior\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"horizontalMouseWheelBehavior\", value)) {\n if (value != \"none\") {\n this._mouseWheelDisposer2 = this.plotContainer.events.on(\"wheel\", this.handleHorizontalWheel, this, false);\n this._disposers.push(this._mouseWheelDisposer2);\n } else {\n if (this._mouseWheelDisposer2) {\n this.plotContainer.wheelable = false;\n this.plotContainer.hoverable = false;\n this._mouseWheelDisposer2.dispose();\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param fields Array of date fields\r\n * @return Array of date fields populated with chart's date fields\r\n */\n XYChart.prototype.dataSourceDateFields = function (fields) {\n var _this = this;\n // Process parent\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\n // Check if we have any series with date-fields\n $iter.each(this.series.iterator(), function (series) {\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]);\n });\n return fields;\n };\n /**\r\n * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n * so that particular chart types can popuplate this setting with their\r\n * own type-specific data fields so they are parsed properly.\r\n *\r\n * @param value Array of number fields\r\n * @return Array of number fields populated with chart's number fields\r\n */\n XYChart.prototype.dataSourceNumberFields = function (fields) {\n var _this = this;\n fields = _super.prototype.dataSourceDateFields.call(this, fields);\n // Check if we have any series with date-fields\n $iter.each(this.series.iterator(), function (series) {\n fields = _this.populateDataSourceFields(fields, series.dataFields, [\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]);\n });\n return fields;\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n XYChart.prototype.processConfig = function (config) {\n if (config) {\n // Save axis ranges for later processing\n var xAxes = [];\n var yAxes = [];\n // Set up axes\n if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\n for (var i = 0, len = config.xAxes.length; i < len; i++) {\n if (!config.xAxes[i].type) {\n throw Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\n } else if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\n // Maybe convert string dates?\n for (var x = 0, len_1 = config.xAxes[i][\"axisRanges\"].length; x < len_1; x++) {\n var range = config.xAxes[i][\"axisRanges\"][x];\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\n range.date = this.dateFormatter.parse(range.date);\n }\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\n range.endDate = this.dateFormatter.parse(range.endDate);\n }\n }\n xAxes.push({\n axisRanges: config.xAxes[i][\"axisRanges\"],\n index: i\n });\n delete config.xAxes[i][\"axisRanges\"];\n }\n }\n }\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\n for (var i = 0, len = config.yAxes.length; i < len; i++) {\n if (!config.yAxes[i].type) {\n throw Error(\"[XYChart error] No type set for yAxes[\" + i + \"].\");\n } else if ($type.hasValue(config.yAxes[i][\"axisRanges\"])) {\n // Maybe convert string dates?\n for (var x = 0, len_2 = config.yAxes[i][\"axisRanges\"].length; x < len_2; x++) {\n var range = config.yAxes[i][\"axisRanges\"][x];\n if ($type.hasValue(range.date) && $type.isString(range.date)) {\n range.date = this.dateFormatter.parse(range.date);\n }\n if ($type.hasValue(range.endDate) && $type.isString(range.endDate)) {\n range.endDate = this.dateFormatter.parse(range.endDate);\n }\n }\n yAxes.push({\n axisRanges: config.yAxes[i][\"axisRanges\"],\n index: i\n });\n delete config.yAxes[i][\"axisRanges\"];\n }\n }\n }\n // Set up series\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\n for (var i = 0, len = config.series.length; i < len; i++) {\n config.series[i].type = config.series[i].type || \"LineSeries\";\n }\n }\n // Set up cursor\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\n config.cursor.type = \"XYCursor\";\n }\n // Set up scrollbars\n if ($type.hasValue(config.scrollbarX) && !$type.hasValue(config.scrollbarX.type)) {\n config.scrollbarX.type = \"Scrollbar\";\n }\n if ($type.hasValue(config.scrollbarY) && !$type.hasValue(config.scrollbarY.type)) {\n config.scrollbarY.type = \"Scrollbar\";\n }\n _super.prototype.processConfig.call(this, config);\n // Finish up with ranges.\n // We need to do this here because series are processed last in JSON\n // config. Therefore their respective objects are not yet are available\n // when axis (and respectively their ranges) are being processed.\n if (yAxes.length) {\n for (var i = 0, len = yAxes.length; i < len; i++) {\n this.yAxes.getIndex(yAxes[i].index).config = {\n axisRanges: yAxes[i].axisRanges\n };\n }\n }\n if (xAxes.length) {\n for (var i = 0, len = xAxes.length; i < len; i++) {\n this.xAxes.getIndex(xAxes[i].index).config = {\n axisRanges: xAxes[i].axisRanges\n };\n }\n }\n }\n };\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\n XYChart.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // Must come last\n else if (a == \"scrollbarX\") {\n return 1;\n } else if (b == \"scrollbarX\") {\n return -1;\n } else if (a == \"scrollbarY\") {\n return 1;\n } else if (b == \"scrollbarY\") {\n return -1;\n } else if (a == \"cursor\") {\n return 1;\n } else if (b == \"cursor\") {\n return -1;\n } else if (a == \"series\") {\n return 1;\n } else if (b == \"series\") {\n return -1;\n } else {\n return _super.prototype.configOrder.call(this, a, b);\n }\n };\n /**\r\n * Creates a new Series of type suitable for this chart.\r\n *\r\n * @return New series\r\n */\n XYChart.prototype.createSeries = function () {\n return new XYSeries();\n };\n Object.defineProperty(XYChart.prototype, \"zoomOutButton\", {\n /**\r\n * @return Zoom out button\r\n */\n get: function () {\n return this._zoomOutButton;\n },\n /**\r\n * A [[Button]] element that is used for zooming out the chart.\r\n *\r\n * This button appears only when chart is zoomed in, and disappears\r\n * autoamatically when it is zoome dout.\r\n *\r\n * @param button Zoom out button\r\n */\n set: function (button) {\n var _this = this;\n this._zoomOutButton = button;\n if (button) {\n button.events.on(\"hit\", function () {\n _this.zoomAxes(_this.xAxes, {\n start: 0,\n end: 1\n });\n _this.zoomAxes(_this.yAxes, {\n start: 0,\n end: 1\n });\n }, undefined, false);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all parameters from another [[XYChart]].\r\n *\r\n * @param source Source XYChart\r\n */\n XYChart.prototype.copyFrom = function (source) {\n var _this = this;\n source.xAxes.each(function (axis) {\n var a = _this.xAxes.push(axis.clone());\n a.chart = _this;\n a.renderer.chart = _this;\n });\n source.yAxes.each(function (axis) {\n var a = _this.yAxes.push(axis.clone());\n a.renderer.chart = _this;\n a.chart = _this;\n });\n //this.xAxes.copyFrom(source.xAxes);\n //this.yAxes.copyFrom(source.yAxes);\n _super.prototype.copyFrom.call(this, source);\n //this.zoomOutButton.copyFrom(source.zoomOutButton);\n if (source.cursor) {\n this.cursor = source.cursor.clone();\n }\n if (source.scrollbarX) {\n this.scrollbarX = source.scrollbarX.clone();\n }\n if (source.scrollbarY) {\n this.scrollbarY = source.scrollbarY.clone();\n }\n //@todo copy all container properties\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n var scrollbarX = this.scrollbarX;\n if (scrollbarX && scrollbarX instanceof XYChartScrollbar) {\n scrollbarX.scrollbarChart.disposeData();\n }\n var scrollbarY = this.scrollbarY;\n if (scrollbarY && scrollbarY instanceof XYChartScrollbar) {\n scrollbarY.scrollbarChart.disposeData();\n }\n this.xAxes.each(function (axis) {\n if (axis instanceof CategoryAxis) {\n axis.disposeData();\n }\n });\n this.yAxes.each(function (axis) {\n if (axis instanceof CategoryAxis) {\n axis.disposeData();\n }\n });\n };\n /**\r\n * Adds one or several (array) of data items to the existing data.\r\n *\r\n * @param rawDataItem One or many raw data item objects\r\n */\n XYChart.prototype.addData = function (rawDataItem, removeCount) {\n if (this.scrollbarX instanceof XYChartScrollbar) {\n this.addScrollbarData(this.scrollbarX, removeCount);\n }\n if (this.scrollbarY instanceof XYChartScrollbar) {\n this.addScrollbarData(this.scrollbarY, removeCount);\n }\n _super.prototype.addData.call(this, rawDataItem, removeCount);\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.addScrollbarData = function (scrollbar, removeCount) {\n var chart = scrollbar.scrollbarChart;\n chart._parseDataFrom = chart.data.length;\n chart.invalidateData();\n };\n /**\r\n * @ignore\r\n */\n XYChart.prototype.removeScrollbarData = function (scrollbar, removeCount) {\n var chart = scrollbar.scrollbarChart;\n if ($type.isNumber(removeCount)) {\n while (removeCount > 0) {\n var dataItem = this.dataItems.getIndex(0);\n if (dataItem) {\n chart.dataItems.remove(dataItem);\n }\n chart.dataUsers.each(function (dataUser) {\n var dataItem = dataUser.dataItems.getIndex(0);\n if (dataItem) {\n dataUser.dataItems.remove(dataItem);\n }\n });\n chart._parseDataFrom--;\n removeCount--;\n }\n chart.invalidateData();\n }\n };\n /**\r\n * Removes elements from the beginning of data\r\n *\r\n * @param count number of elements to remove\r\n */\n XYChart.prototype.removeData = function (count) {\n if (this.scrollbarX instanceof XYChartScrollbar) {\n this.removeScrollbarData(this.scrollbarX, count);\n }\n if (this.scrollbarY instanceof XYChartScrollbar) {\n this.removeScrollbarData(this.scrollbarY, count);\n }\n _super.prototype.removeData.call(this, count);\n };\n /**\r\n * @param value Tap to activate?\r\n */\n XYChart.prototype.setTapToActivate = function (value) {\n _super.prototype.setTapToActivate.call(this, value);\n if (this.cursor) {\n this.cursor.interactions.isTouchProtected = value;\n this.plotContainer.interactions.isTouchProtected = value;\n }\n };\n XYChart.prototype.handleTapToActivate = function () {\n _super.prototype.handleTapToActivate.call(this);\n if (this.cursor) {\n this.cursor.interactions.isTouchProtected = false;\n this.plotContainer.interactions.isTouchProtected = false;\n }\n };\n XYChart.prototype.handleTapToActivateDeactivation = function () {\n _super.prototype.handleTapToActivateDeactivation.call(this);\n if (this.cursor) {\n this.cursor.interactions.isTouchProtected = true;\n this.plotContainer.interactions.isTouchProtected = true;\n }\n };\n return XYChart;\n}(SerialChart);\nexport { XYChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"XYChart\"] = XYChart;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Remove horizontal scrollbar on narrow charts.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.maybeXS,\n state: function (target, stateId) {\n if (target instanceof XYChart && target.scrollbarX) {\n var state = target.states.create(stateId);\n var sbstate = target.scrollbarX.states.create(stateId);\n sbstate.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n/**\r\n * Remove vertical scrollbar on short charts.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.maybeXS,\n state: function (target, stateId) {\n if (target instanceof XYChart && target.scrollbarY) {\n var state = target.states.create(stateId);\n var sbstate = target.scrollbarY.states.create(stateId);\n sbstate.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=XYChart.js.map","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $type from \"../../core/utils/Type\";\nimport { color } from \"../../core/utils/Color\";\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link ILineSeriesSegmentEvents} for a list of available events\r\n * @see {@link ILineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\nvar LineSeriesSegment = /** @class */function (_super) {\n __extends(LineSeriesSegment, _super);\n /**\r\n * Constructor\r\n */\n function LineSeriesSegment() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"LineSeriesSegment\";\n // Set defaults\n _this.isMeasured = false;\n _this.interactionsEnabled = false;\n _this.layout = \"none\";\n // Create fill element\n var fillSprite = _this.createChild(Sprite);\n _this.fillSprite = fillSprite;\n fillSprite.shouldClone = false;\n fillSprite.setElement(_this.paper.add(\"path\"));\n fillSprite.isMeasured = false;\n _this._disposers.push(fillSprite);\n // Create line element\n var strokeSprite = _this.createChild(Sprite);\n _this.strokeSprite = strokeSprite;\n strokeSprite.shouldClone = false;\n strokeSprite.fill = color();\n strokeSprite.setElement(_this.paper.add(\"path\"));\n strokeSprite.isMeasured = false;\n _this._disposers.push(strokeSprite);\n return _this;\n }\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\n LineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY) {\n if (!this.disabled) {\n if (points.length > 0 && closePoints.length > 0 && $type.isNumber(points[0].x) && $type.isNumber(points[0].y)) {\n // first moveTo helps to avoid Chrome straight line in the mask bug.\n var path = $path.moveTo({\n x: points[0].x - 0.2,\n y: points[0].y - 0.2\n }) + $path.moveTo(points[0]);\n var series = this.series;\n if (series.smoothing == \"bezier\") {\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(points);\n } else if (series.smoothing == \"monotoneX\") {\n path += new $smoothing.MonotoneX({\n closed: false\n }).smooth(points);\n } else if (series.smoothing == \"monotoneY\") {\n path += new $smoothing.MonotoneY({\n closed: false\n }).smooth(points);\n }\n if (this.strokeOpacity == 0 || this.strokeSprite.strokeOpacity == 0) {\n // like this and not if != 0, otherwise ranges stroke won't be drawn.\n } else {\n this.strokeSprite.path = path;\n }\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) {\n // helps to avoid drawing fill object if fill is not visible\n if ($type.isNumber(closePoints[0].x) && $type.isNumber(closePoints[0].y)) {\n path += $path.lineTo(closePoints[0]);\n if (series.smoothing == \"bezier\") {\n path += new $smoothing.Tension(smoothnessX, smoothnessY).smooth(closePoints);\n } else if (series.smoothing == \"monotoneX\") {\n path += new $smoothing.MonotoneX({\n closed: false\n }).smooth(closePoints);\n } else if (series.smoothing == \"monotoneY\") {\n path += new $smoothing.MonotoneY({\n closed: false\n }).smooth(closePoints);\n }\n path += $path.lineTo(points[0]);\n path += $path.closePath();\n this.fillSprite.path = path;\n }\n }\n } else {\n this.fillSprite.path = \"\";\n this.strokeSprite.path = \"\";\n }\n }\n };\n /**\r\n * Copies properties from a [[Sprite]] to both line and fill elements.\r\n *\r\n * @param source Source [[Sprite]] to copy properties from\r\n */\n LineSeriesSegment.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n var lineElement = this.strokeSprite;\n $object.copyProperties(source, lineElement.properties, visualProperties);\n lineElement.events.copyFrom(source.strokeSprite.events);\n lineElement.fillOpacity = 0;\n var fillElement = this.fillSprite;\n $object.copyProperties(source, fillElement.properties, visualProperties);\n fillElement.events.copyFrom(source.fillSprite.events);\n fillElement.strokeOpacity = 0;\n };\n return LineSeriesSegment;\n}(Container);\nexport { LineSeriesSegment };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LineSeriesSegment\"] = LineSeriesSegment;\n//# sourceMappingURL=LineSeriesSegment.js.map","/**\r\n * DurationAxis module\r\n */\nimport { __extends, __values } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ValueAxis, ValueAxisDataItem } from \"./ValueAxis\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines data item for [[DurationAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar DurationAxisDataItem = /** @class */function (_super) {\n __extends(DurationAxisDataItem, _super);\n /**\r\n * Constructor\r\n */\n function DurationAxisDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"DurationAxisDataItem\";\n _this.applyTheme();\n return _this;\n }\n return DurationAxisDataItem;\n}(ValueAxisDataItem);\nexport { DurationAxisDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Used to create an axis that shows time durations.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DurationAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DurationAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information about duration formatters.\r\n * @see {@link IDurationAxisEvents} for a list of available Events\r\n * @see {@link IDurationAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar DurationAxis = /** @class */function (_super) {\n __extends(DurationAxis, _super);\n /**\r\n * Constructor\r\n */\n function DurationAxis() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n */\n _this._baseUnit = \"second\";\n _this.className = \"DurationAxis\";\n _this.setPropertyValue(\"maxZoomFactor\", 1000000);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Formats the value according to axis' own [[DurationFormatter]].\r\n *\r\n * @param value Source value\r\n * @return Formatted value\r\n */\n DurationAxis.prototype.formatLabel = function (value, format) {\n return this.durationFormatter.format(value, format || this.axisDurationFormat);\n };\n /**\r\n * Adjusts actual min and max scale values so that the axis starts and ends\r\n * at \"nice\" values, unless `strictMinMax` is set.\r\n *\r\n * The `difference` can be something else than `max - min`, because of the\r\n * axis breaks.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param min [description]\r\n * @param max [description]\r\n * @param difference [description]\r\n * @param gridCount [description]\r\n * @param strictMode [description]\r\n * @return [description]\r\n */\n DurationAxis.prototype.adjustMinMax = function (min, max, difference, gridCount, strictMode) {\n var e_1, _a;\n var minMaxStep;\n var timeUnit = this.baseUnit;\n // we don't allow to go to smaller units, setting so to avoid invalidation\n this.setPropertyValue(\"maxPrecision\", 0);\n if (timeUnit == \"millisecond\" || timeUnit == \"second\" || timeUnit == \"minute\" || timeUnit == \"hour\") {\n // will fail if 0\n if (gridCount <= 1) {\n gridCount = 1;\n }\n gridCount = Math.round(gridCount);\n var initialMin = min;\n var initialMax = max;\n // in case min and max is the same, use max\n if (difference === 0) {\n difference = Math.abs(max);\n }\n var step = difference / gridCount;\n var divisors = [60, 30, 20, 15, 10, 2, 1];\n var realDivisor = 1;\n if (timeUnit == \"hour\") {\n divisors = [24, 12, 6, 4, 2, 1];\n }\n try {\n for (var divisors_1 = __values(divisors), divisors_1_1 = divisors_1.next(); !divisors_1_1.done; divisors_1_1 = divisors_1.next()) {\n var divisor = divisors_1_1.value;\n if (difference / divisor > gridCount) {\n realDivisor = divisor;\n break;\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (divisors_1_1 && !divisors_1_1.done && (_a = divisors_1.return)) _a.call(divisors_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n var count = Math.ceil((max - min) / realDivisor / gridCount);\n var exponent = Math.log(Math.abs(count)) * Math.LOG10E;\n var power = Math.pow(10, Math.floor(exponent)) / 10;\n var reducedCount = count / power;\n // find closest to divisor\n var closest = $math.closest(divisors, reducedCount);\n count = closest * power;\n step = realDivisor * count;\n // TODO can this be removed ?\n this.durationFormatter.getValueUnit(step, this.baseUnit);\n min = Math.floor(min / step) * step;\n max = Math.ceil(max / step) * step;\n if (strictMode) {\n min -= step;\n if (min < 0 && initialMin >= 0) {\n min = 0;\n }\n max += step;\n if (max > 0 && initialMax <= 0) {\n max = 0;\n }\n }\n minMaxStep = {\n min: min,\n max: max,\n step: step\n };\n } else {\n minMaxStep = _super.prototype.adjustMinMax.call(this, min, max, difference, gridCount, strictMode);\n }\n // choose duration formatter based on step\n this.axisDurationFormat = this.durationFormatter.getFormat(minMaxStep.step, minMaxStep.max, this.baseUnit);\n return minMaxStep;\n };\n Object.defineProperty(DurationAxis.prototype, \"tooltipDurationFormat\", {\n /**\r\n * @return Duration format for axis labels\r\n */\n get: function () {\n return this._tooltipDurationFormat;\n },\n /**\r\n * A special duration format to apply axis tooltips.\r\n *\r\n * Will use same format as for labels, if not set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/} for mor information.\r\n * @param value Duration format for axis labels\r\n */\n set: function (value) {\n this._tooltipDurationFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns text to show in a axis tooltip, based on specific position within\r\n * axis.\r\n *\r\n * The label will be formatted as per [[NumberFormatter]] set for the whole\r\n * chart, or explicitly for this Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (px)\r\n * @return Label (numeric value)\r\n */\n DurationAxis.prototype.getTooltipText = function (position) {\n var value = $math.round(this.positionToValue(position), this._stepDecimalPlaces);\n var valueStr = this.formatLabel(value, this.tooltipDurationFormat);\n if (!this._adapterO) {\n return valueStr;\n } else {\n return this._adapterO.apply(\"getTooltipText\", valueStr);\n }\n };\n Object.defineProperty(DurationAxis.prototype, \"baseUnit\", {\n /**\r\n * @return Base unit\r\n */\n get: function () {\n return this._baseUnit;\n },\n /**\r\n * A base unit (granularity) of data.\r\n *\r\n * Used to indicate what are the base units of your data.\r\n *\r\n * Available options: \"millisecond\", \"second\" (default), \"minute\", \"hour\",\r\n * \"day\", \"week\", \"month\", \"year\".\r\n *\r\n * @default \"second\"\r\n * @param timeUnit\r\n */\n set: function (timeUnit) {\n if (this._baseUnit != timeUnit) {\n this._baseUnit = timeUnit;\n this.durationFormatter.baseUnit = timeUnit;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all properties and related data from a different instance of Axis.\r\n *\r\n * @param source Source Axis\r\n */\n DurationAxis.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.baseUnit = source.baseUnit;\n };\n return DurationAxis;\n}(ValueAxis);\nexport { DurationAxis };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"DurationAxis\"] = DurationAxis;\nregistry.registeredClasses[\"DurationAxisDataItem\"] = DurationAxisDataItem;\n//# sourceMappingURL=DurationAxis.js.map","/**\r\n * Line series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { Container } from \"../../core/Container\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { DateAxis } from \"../axes/DateAxis\";\nimport { DurationAxis } from \"../axes/DurationAxis\";\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\nimport { registry } from \"../../core/Registry\";\nimport { Line } from \"../../core/elements/Line\";\nimport { Label } from \"../../core/elements/Label\";\nimport { Rectangle } from \"../../core/elements/Rectangle\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\nimport { Bullet } from \"../elements/Bullet\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[LineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar LineSeriesDataItem = /** @class */function (_super) {\n __extends(LineSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function LineSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"LineSeriesDataItem\";\n return _this;\n }\n return LineSeriesDataItem;\n}(XYSeriesDataItem);\nexport { LineSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a line graph.\r\n *\r\n * @see {@link ILineSeriesEvents} for a list of available Events\r\n * @see {@link ILineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar LineSeries = /** @class */function (_super) {\n __extends(LineSeries, _super);\n /**\r\n * Constructor\r\n */\n function LineSeries() {\n var _this = _super.call(this) || this;\n /**\r\n * Minimum distance in pixels between two adjacent points.\r\n *\r\n * If the distance is less than this setting, a point is skipped.\r\n *\r\n * This allows acceptable performance with huge amounts of data points.\r\n *\r\n * @default 0.5\r\n */\n _this.minDistance = 0.5;\n _this.segments = new ListTemplate(_this.createSegment());\n _this.segments.template.applyOnClones = true;\n _this._disposers.push(new ListDisposer(_this.segments));\n _this._disposers.push(_this.segments.template);\n _this._segmentsIterator = new $iter.ListIterator(_this.segments, function () {\n return _this.segments.create();\n });\n _this._segmentsIterator.createNewItems = true;\n _this.className = \"LineSeries\";\n _this.strokeOpacity = 1;\n _this.fillOpacity = 0;\n _this.connect = true;\n _this.tensionX = 1;\n _this.tensionY = 1;\n _this.autoGapCount = 1.1;\n _this.smoothing = \"bezier\";\n _this.segmentsContainer = _this.mainContainer.createChild(Container);\n _this.segmentsContainer.isMeasured = false;\n // line series might have multiple segments and it has a separate sprite for fill and stroke for each segment. So we need to observe all the changes on series and set them on the segments\n // todo: we need list here, otherwise everything will be redrawn event on change of properties like tooltipX or similar.\n // this.addEventListener(SpriteEvent.PROPERTY_CHANGED, this.validateDataElements, false, this);\n _this.bulletsContainer.toFront();\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n LineSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Line Series\");\n }\n };\n /**\r\n * @ignore\r\n */\n LineSeries.prototype.createSegment = function () {\n return new LineSeriesSegment();\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n LineSeries.prototype.createDataItem = function () {\n return new LineSeriesDataItem();\n };\n /**\r\n * Inits data item's working values.\r\n *\r\n * @param dataItem Data item\r\n * @param index Data item's index\r\n */\n LineSeries.prototype.setInitialWorkingValues = function (dataItem) {\n // this makes data items animate when added\n var yAxis = this._yAxis.get();\n var xAxis = this._xAxis.get();\n if (this.appeared && this.visible) {\n var previousDataItem = this.dataItems.getIndex(dataItem.index - 1);\n dataItem.component = this; // as these values are set before, we don't know component yet\n if (this.baseAxis == xAxis) {\n if (yAxis instanceof ValueAxis) {\n var initialY = yAxis.minZoomed;\n if (previousDataItem) {\n initialY = previousDataItem.values[\"valueY\"].workingValue;\n }\n // this makes line animate from previous point to newly added point\n dataItem.setWorkingValue(\"valueY\", initialY, 0);\n dataItem.setWorkingValue(\"valueY\", dataItem.values.valueY.value);\n if (xAxis instanceof DateAxis) {\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX); // animate to it's location\n } else if (xAxis instanceof DurationAxis) {\n if (previousDataItem) {\n var value = dataItem.valueX;\n dataItem.setWorkingValue(\"valueX\", previousDataItem.valueX, 0); // instantly move it to previous\n dataItem.setWorkingValue(\"valueX\", value); // animate to new value\n }\n }\n }\n }\n if (this.baseAxis == yAxis) {\n if (xAxis instanceof ValueAxis) {\n var initialX = xAxis.minZoomed;\n if (previousDataItem) {\n initialX = previousDataItem.values[\"valueX\"].workingValue;\n }\n dataItem.setWorkingValue(\"valueX\", initialX, 0);\n dataItem.setWorkingValue(\"valueX\", dataItem.values.valueX.value);\n if (yAxis instanceof DateAxis) {\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY); // animate to it's location\n } else if (yAxis instanceof DurationAxis) {\n if (previousDataItem) {\n var value = dataItem.valueY;\n dataItem.setWorkingValue(\"valueY\", previousDataItem.valueY, 0); // instantly move it to previous\n dataItem.setWorkingValue(\"valueY\", value); // animate to new value\n }\n }\n }\n }\n } else {\n if (this.baseAxis == xAxis) {\n if (yAxis instanceof ValueAxis) {\n if (xAxis instanceof DateAxis) {\n dataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX);\n }\n if (xAxis instanceof CategoryAxis) {\n dataItem.setWorkingLocation(\"categoryX\", dataItem.locations.categoryX);\n }\n }\n }\n if (this.baseAxis == yAxis) {\n if (xAxis instanceof ValueAxis) {\n if (yAxis instanceof DateAxis) {\n dataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY);\n }\n if (yAxis instanceof CategoryAxis) {\n dataItem.setWorkingLocation(\"categoryY\", dataItem.locations.categoryY);\n }\n }\n }\n }\n };\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n LineSeries.prototype.updateLegendValue = function (dataItem, notRange) {\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\n //This is hack to save some methos, used to set tooltip color source only\n if (dataItem && dataItem.segment) {\n this.tooltipColorSource = dataItem.segment;\n }\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n LineSeries.prototype.validate = function () {\n var _this = this;\n _super.prototype.validate.call(this);\n if (this.xAxis && this.yAxis) {\n this._segmentsIterator.reset();\n this.openSegmentWrapper(this._adjustedStartIndex);\n $iter.each(this.axisRanges.iterator(), function (range) {\n _this.openSegmentWrapper(_this._adjustedStartIndex, range);\n });\n $iter.each(this._segmentsIterator.iterator(), function (segment) {\n segment.__disabled = true;\n });\n }\n };\n /**\r\n * [sliceData description]\r\n *\r\n * @todo Description\r\n */\n LineSeries.prototype.sliceData = function () {\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n // we need extra one item to both sides with values for line series, otherwise the line will not continue out of bounds of the chart while scrolling\n // find first to the left\n // TODO use iterator instead\n for (var i = this.startIndex - 1; i >= 0; i--) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\n startIndex = i;\n break;\n }\n }\n this._adjustedStartIndex = this.findAdjustedIndex(startIndex, [\"stroke\", \"strokeWidth\", \"strokeDasharray\", \"strokeOpacity\", \"fill\", \"fillOpacity\", \"opacity\"]);\n // find first to the right\n // TODO use iterator instead\n for (var i = this.endIndex, len = this.dataItems.length; i < len; i++) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\n endIndex = i + 1;\n break;\n }\n }\n this._workingStartIndex = startIndex;\n this._workingEndIndex = endIndex;\n };\n /**\r\n * @ignore\r\n */\n LineSeries.prototype.findAdjustedIndex = function (adjustedIndex, properties) {\n var _this = this;\n var propertyFields = this.propertyFields;\n var startIndex = adjustedIndex;\n $array.each(properties, function (property) {\n if ($type.hasValue(propertyFields[property])) {\n for (var i = startIndex; i >= 0; i--) {\n var dataItem = _this.dataItems.getIndex(i);\n if (dataItem) {\n if ($type.hasValue(dataItem.properties[property])) {\n if (adjustedIndex > i) {\n adjustedIndex = i;\n }\n break;\n }\n }\n }\n }\n });\n return adjustedIndex;\n };\n /**\r\n * Wraps openSegment call with iterative solution to prevent stack overflow\r\n *\r\n * @param openIndex Index\r\n * @param axisRange Range\r\n */\n LineSeries.prototype.openSegmentWrapper = function (openIndex, axisRange) {\n var params = {\n \"index\": openIndex,\n \"axisRange\": axisRange\n };\n do {\n params = this.openSegment(params.index, params.axisRange);\n } while (params);\n };\n LineSeries.prototype.getSegment = function () {\n var segment = this._segmentsIterator.getFirst();\n segment.series = this;\n if (segment.isDisposed()) {\n this.segments.removeValue(segment);\n return this.getSegment();\n }\n return segment;\n };\n /**\r\n * [openSegment description]\r\n *\r\n * @todo Description\r\n * @param openIndex [description]\r\n * @param axisRange [description]\r\n */\n LineSeries.prototype.openSegment = function (openIndex, axisRange) {\n var addToClose = false;\n var points = [];\n openIndex = Math.min(openIndex, this.dataItems.length);\n var endIndex = Math.min(this._workingEndIndex, this.dataItems.length);\n this._workingEndIndex = Math.min(this._workingEndIndex, this.dataItems.length);\n var closeIndex;\n var propertiesChanged = false;\n var segment = this.getSegment();\n segment.strokeDasharray = undefined;\n segment.__disabled = false;\n if (axisRange) {\n segment.parent = axisRange.contents;\n $object.copyProperties(axisRange.contents, segment, visualProperties);\n } else {\n $object.copyProperties(this, segment, visualProperties);\n segment.filters.clear();\n segment.parent = this.segmentsContainer;\n }\n this.group.node.removeAttribute(\"fill\");\n var connect = this.connect;\n var valuesFound = false; // some flag to avoid multiple closes if no values found\n for (var i = openIndex; i < endIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n dataItem.segment = segment;\n if (dataItem.hasProperties) {\n // if this is first item of segment\n if (i == openIndex) {\n this.updateSegmentProperties(dataItem.properties, segment);\n } else {\n // this time we only need to know if properties changed, so we don't pass segment\n propertiesChanged = this.updateSegmentProperties(dataItem.properties, segment, true);\n }\n }\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\n this.addPoints(points, dataItem, this.xField, this.yField);\n valuesFound = true;\n } else {\n // if no values in first data item, go to next\n if (i == openIndex) {\n continue;\n } else {\n // stop cycle\n if (!connect && valuesFound) {\n closeIndex = i;\n break;\n }\n }\n }\n closeIndex = i;\n if (this.baseAxis instanceof DateAxis) {\n var next = this.dataItems.getIndex(i + 1);\n if (next && this.baseAxis.makeGap(next, dataItem)) {\n addToClose = true;\n break;\n }\n }\n if (propertiesChanged) {\n break;\n }\n }\n return this.closeSegment(segment, points, openIndex, closeIndex, axisRange, addToClose);\n };\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\n LineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\n var point = this.getPoint(dataItem, xField, yField, dataItem.workingLocations[xField], dataItem.workingLocations[yField]);\n if (!backwards) {\n dataItem.point = point;\n }\n points.push(point);\n };\n /**\r\n * [closeSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param openIndex [description]\r\n * @param closeIndex [description]\r\n * @param axisRange [description]\r\n */\n LineSeries.prototype.closeSegment = function (segment, points, openIndex, closeIndex, axisRange, add) {\n var closePoints = [];\n if (this.dataFields[this._xOpenField] || this.dataFields[this._yOpenField] || this.stacked) {\n for (var i = closeIndex; i >= openIndex; i--) {\n var dataItem = this.dataItems.getIndex(i);\n if (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\n // not sure, this means that open point will only be added if value is also set for this point, but maybe it's ok.\n this.addPoints(closePoints, dataItem, this.xOpenField, this.yOpenField, true);\n }\n }\n } else {\n var baseAxis = this.baseAxis;\n var count = points.length;\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (count > 0) {\n if (baseAxis == xAxis) {\n closePoints.push({\n x: points[count - 1].x,\n y: yAxis.basePoint.y\n }); // last x\n closePoints.push({\n x: points[0].x,\n y: yAxis.basePoint.y\n }); // first x\n } else {\n closePoints.push({\n x: xAxis.basePoint.x,\n y: points[count - 1].y\n }); // last y\n closePoints.push({\n x: xAxis.basePoint.x,\n y: points[0].y\n }); // first y\n }\n }\n }\n this.drawSegment(segment, points, closePoints);\n if (add) {\n closeIndex++;\n }\n if (closeIndex < this._workingEndIndex - 1) {\n return {\n \"index\": closeIndex,\n \"axisRange\": axisRange\n };\n } else {\n return null;\n }\n };\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\n LineSeries.prototype.drawSegment = function (segment, points, closePoints) {\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY);\n };\n /**\r\n * Segement will get its colors from `this.dataItem`, as thats how\r\n * `getPropertyValue()` method works.\r\n *\r\n * We pass `lineSeriesDataItem.properties` as item here each time when a flag\r\n * `hasProperties` is set to `true` on data item (this means it can contain\r\n * some properties set).\r\n *\r\n * @param itemProperties Item properties\r\n * @param segment Segment\r\n * @return Properties changed?\r\n */\n LineSeries.prototype.updateSegmentProperties = function (itemProperties, segment, checkOnly) {\n var changed = false;\n $object.each(itemProperties, function (propertyName, value) {\n // some value must be defined\n if ($type.hasValue(value)) {\n var currentValue = segment[propertyName];\n var currentValueStr = void 0;\n // current value can be Color, number, anything. So we check if it has toString, otherwise just do String().\n // toString() will return hex if it's color. The only problem is that it will return lowercased hex and if we have uppercase in data, it will think that it changed\n if (currentValue) {\n if (currentValue.toString) {\n currentValueStr = currentValue.toString();\n } else {\n currentValueStr = currentValue; // not doing String(currentValue) as this will make all Objects the same\n }\n }\n var valueStr = void 0;\n if (value) {\n if (value.toString) {\n valueStr = value.toString();\n } else {\n valueStr = value; // not doing String(currentValue) as this will make all Objects the same\n }\n }\n if (currentValue == value || currentValueStr != undefined && valueStr != undefined && currentValueStr == valueStr) {\n // void\n } else {\n if (!checkOnly) {\n segment[propertyName] = value;\n }\n changed = true;\n }\n }\n });\n return changed;\n };\n Object.defineProperty(LineSeries.prototype, \"connect\", {\n /**\r\n * @return Connect?\r\n */\n get: function () {\n return this.getPropertyValue(\"connect\");\n },\n /**\r\n * Connect the lines over empty data points?\r\n *\r\n * If set to `true` the line will connect two adjacent data points by a\r\n * straight line. Even if there are data points with missing values\r\n * in-between.\r\n *\r\n * If you set this to `false`, the line will break when there are missing\r\n * values.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Line_series_with_gaps} for more information about this feature\r\n * @default true\r\n * @param value Connect?\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"connect\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"tensionX\", {\n /**\r\n * @return Horizontal tension (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"tensionX\");\n },\n /**\r\n * Horizontal tension setting of the line (0-1).\r\n *\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for horizontal tension, meaning the curve will bend in\r\n * such way that it never goes below or above connecting points. To enable\r\n * vertical bending as well, use `tensionY`.\r\n *\r\n * IMPORTANT: line smoothing works best when data items are placed at regular\r\n * intervals. For setups where data items are spaced erratically, enabling\r\n * smoothing might result in awkwardly looking lines.\r\n *\r\n * @default 1\r\n * @param value Horizontal tension (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"tensionX\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"tensionY\", {\n /**\r\n * @return Vertical tension (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"tensionY\");\n },\n /**\r\n * Can be used to create smoothed lines. It works like this:\r\n *\r\n * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n * will mean that the \"tension\" is very high, so the line is maximally\r\n * attracted to the points it connects, hence the straight line.\r\n *\r\n * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n *\r\n * The smaller the tension setting, the more relaxed the line and the more\r\n * wide the curve.\r\n *\r\n * This setting is for vertical tension, meaning the curve might bend in\r\n * such way that it will go below or above connected points.\r\n *\r\n * Combine this setting with `tensionX` to create beautifully looking\r\n * smoothed line series.\r\n *\r\n * @default 1\r\n * @param value Vertical tension (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"tensionY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n LineSeries.prototype.createLegendMarker = function (marker) {\n var _this = this;\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.disposeChildren();\n var line = marker.createChild(Line);\n line.shouldClone = false;\n //line.copyFrom(<any>this); coppies events which is not good\n $object.copyProperties(this, line, visualProperties);\n line.x2 = w;\n line.y = h / 2;\n line.y2 = 0.00001;\n line.visible = true;\n if (this.fillOpacity > 0) {\n var fill = marker.createChild(Rectangle);\n //fill.copyFrom(<any>this); coppies events which is not good\n $object.copyProperties(this, fill, visualProperties);\n fill.width = w;\n fill.height = h;\n fill.y = 0;\n fill.strokeOpacity = 0;\n fill.visible = true;\n line.y = 0;\n }\n var legendDataItem = marker.dataItem;\n legendDataItem.color = this.stroke;\n legendDataItem.colorOrig = this.fill;\n $iter.eachContinue(this.bullets.iterator(), function (bullet) {\n if (bullet instanceof Bullet && !bullet.copyToLegendMarker) {\n return false;\n }\n var hasLabels = false;\n if (bullet instanceof Container) {\n // do not copy bullets with labels\n $iter.each(bullet.children.iterator(), function (child) {\n if (child instanceof Label) {\n hasLabels = true;\n return true;\n }\n });\n }\n if (!hasLabels) {\n var clone = bullet.clone();\n clone.parent = marker;\n clone.isMeasured = true;\n clone.tooltipText = undefined;\n clone.x = w / 2;\n if (_this.fillOpacity > 0) {\n clone.y = 0;\n } else {\n clone.y = h / 2;\n }\n clone.visible = true;\n // otherwise will not transit to color after hiding\n if (!$type.hasValue(clone.fill)) {\n clone.fill = _this.fill;\n }\n if (!$type.hasValue(clone.stroke)) {\n clone.stroke = _this.stroke;\n }\n return false;\n }\n });\n };\n /**\r\n * @ignore\r\n */\n LineSeries.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n this.segments.clear();\n };\n Object.defineProperty(LineSeries.prototype, \"autoGapCount\", {\n /**\r\n * @return Gap count\r\n */\n get: function () {\n return this.getPropertyValue(\"autoGapCount\");\n },\n /**\r\n * If `connect = false` and distance between two data points is bigger\r\n * than `baseInterval * autoGapCount`, a line will break automatically.\r\n *\r\n * @since 4.2.4\r\n * @param value Gap count\r\n */\n set: function (value) {\n this.setPropertyValue(\"autoGapCount\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"smoothing\", {\n /**\r\n * @return Smoothing algorithm\r\n */\n get: function () {\n return this.getPropertyValue(\"smoothing\");\n },\n /**\r\n * Smoothing algorithm to be used for lines.\r\n *\r\n * Available options: `\"bezier\"` (default), `\"monotoneX\"`, and `\"monotoneY\"`.\r\n *\r\n * Monotone options are best suited for data with irregular intervals. Use `\"monotoneX\"` for\r\n * horizontal lines, and `\"monotoneY\"` vertical ones.\r\n *\r\n * NOTE: Both \"monotone\" algorithms will ignore `tensionX` and `tensionY` settings.\r\n *\r\n * @since 4.10.0\r\n * @param value Smoothing algorithm\r\n */\n set: function (value) {\n this.setPropertyValue(\"smoothing\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return LineSeries;\n}(XYSeries);\nexport { LineSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LineSeries\"] = LineSeries;\nregistry.registeredClasses[\"LineSeriesDataItem\"] = LineSeriesDataItem;\n//# sourceMappingURL=LineSeries.js.map","/**\r\n * Radar series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\n//import { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\n//import { Sprite } from \"../../core/Sprite\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[RadarSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar RadarSeriesDataItem = /** @class */function (_super) {\n __extends(RadarSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function RadarSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"RadarSeriesDataItem\";\n _this.setLocation(\"dateX\", 0, 0);\n _this.setLocation(\"dateY\", 0, 0);\n _this.setLocation(\"categoryX\", 0, 0);\n _this.setLocation(\"categoryY\", 0, 0);\n _this.applyTheme();\n return _this;\n }\n return RadarSeriesDataItem;\n}(LineSeriesDataItem);\nexport { RadarSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link IRadarSeriesEvents} for a list of available Events\r\n * @see {@link IRadarSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar RadarSeries = /** @class */function (_super) {\n __extends(RadarSeries, _super);\n /**\r\n * Constructor\r\n */\n function RadarSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"RadarSeries\";\n _this.connectEnds = true;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarSeries.prototype.validate = function () {\n // so that radius would be updated\n if (this.chart.invalid) {\n this.chart.validate();\n }\n _super.prototype.validate.call(this);\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n RadarSeries.prototype.createDataItem = function () {\n return new RadarSeriesDataItem();\n };\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\n RadarSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\n if (!stackKeyX) {\n stackKeyX = \"valueX\";\n }\n if (!stackKeyY) {\n stackKeyY = \"valueY\";\n }\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\n var radius = $math.getDistance({\n x: x,\n y: y\n });\n // hack to be able to determine angle later\n if (radius == 0) {\n radius = 0.00001;\n }\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\n var startAngle = this.chart.startAngle;\n var endAngle = this.chart.endAngle;\n //\t\tangle = $math.fitToRange(angle, startAngle, endAngle);\n if (angle < startAngle || angle > endAngle) {\n return undefined;\n } else {\n return {\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n };\n }\n };\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\n RadarSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\n var point = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], dataItem.locations[yField]);\n if (point) {\n points.push(point);\n }\n };\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\n RadarSeries.prototype.getMaskPath = function () {\n var renderer = this.yAxis.renderer;\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\n };\n /**\r\n * [drawSegment description]\r\n *\r\n * @todo Description\r\n * @param segment [description]\r\n * @param points [description]\r\n * @param closePoints [description]\r\n */\n RadarSeries.prototype.drawSegment = function (segment, points, closePoints) {\n var axis = this.yAxis;\n var renderer = axis.renderer;\n if (this.connectEnds && Math.abs(renderer.endAngle - renderer.startAngle) == 360) {\n // adds one point to the beginning of closePoints array, if needed\n if (this.dataFields[this._xOpenField] || this.dataFields[this._yOpenField] || this.stacked) {\n points.push(points[0]);\n if (closePoints.length > 0) {\n closePoints.unshift(closePoints[closePoints.length - 1]);\n }\n }\n }\n _super.prototype.drawSegment.call(this, segment, points, closePoints);\n };\n Object.defineProperty(RadarSeries.prototype, \"connectEnds\", {\n /**\r\n * @return Connect?\r\n */\n get: function () {\n return this.getPropertyValue(\"connectEnds\");\n },\n /**\r\n * Should the last and and first data points be connected, forming a complete\r\n * closed circle?\r\n *\r\n * @default true\r\n * @param value Connect?\r\n */\n set: function (value) {\n this.setPropertyValue(\"connectEnds\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n RadarSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\n bullet.visible = false;\n }\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\n };\n RadarSeries.prototype.setXAxis = function (axis) {\n _super.prototype.setXAxis.call(this, axis);\n this.updateRendererRefs();\n };\n RadarSeries.prototype.setYAxis = function (axis) {\n _super.prototype.setYAxis.call(this, axis);\n this.updateRendererRefs();\n };\n RadarSeries.prototype.updateRendererRefs = function () {\n var rendererX = this.xAxis.renderer;\n var rendererY = this.yAxis.renderer;\n rendererX.axisRendererY = rendererY;\n };\n return RadarSeries;\n}(LineSeries);\nexport { RadarSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadarSeries\"] = RadarSeries;\nregistry.registeredClasses[\"RadarSeriesDataItem\"] = RadarSeriesDataItem;\n//# sourceMappingURL=RadarSeries.js.map","import { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisFill } from \"./AxisFill\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Provides fill element functionality for circular Axes.\r\n *\r\n * @see {@link IAxisFillCircularEvents} for a list of available events\r\n * @see {@link IAxisFillCircularAdapters} for a list of available Adapters\r\n * @todo Needs description\r\n */\nvar AxisFillCircular = /** @class */function (_super) {\n __extends(AxisFillCircular, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Axis\r\n */\n function AxisFillCircular(axis) {\n var _this = _super.call(this, axis) || this;\n _this.className = \"AxisFillCircular\";\n _this.element = _this.paper.add(\"path\");\n _this.radius = percent(100);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the fill element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisFillCircular.prototype.draw = function () {\n _super.prototype.draw.call(this);\n if (this.__disabled || this.disabled) {\n return;\n }\n if (this.axis) {\n var renderer = this.axis.renderer;\n this.fillPath = renderer.getPositionRangePath(this.startPosition, this.endPosition, this.radius, $type.hasValue(this.innerRadius) ? this.innerRadius : renderer.innerRadius, this.cornerRadius);\n this.path = this.fillPath;\n }\n };\n Object.defineProperty(AxisFillCircular.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisFillCircular.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisFillCircular.prototype, \"cornerRadius\", {\n /**\r\n * @return Corner radius (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"cornerRadius\");\n },\n /**\r\n * Corner radius for the fill. In pixels.\r\n *\r\n * @param value Corner radius (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"cornerRadius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return AxisFillCircular;\n}(AxisFill);\nexport { AxisFillCircular };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisFillCircular\"] = AxisFillCircular;\n//# sourceMappingURL=AxisFillCircular.js.map","/**\r\n * A module defining functionality for circular axis grid elements.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Grid } from \"./Grid\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a circular grid element for circular-type axis.\r\n *\r\n * @see {@link IGridCircularEvents} for a list of available events\r\n * @see {@link IGridCircularAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the GridCircular, also with 3d charts we might need some additional elements\r\n */\nvar GridCircular = /** @class */function (_super) {\n __extends(GridCircular, _super);\n /**\r\n * Constructor\r\n */\n function GridCircular() {\n var _this = _super.call(this) || this;\n _this.className = \"GridCircular\";\n _this.pixelPerfect = false;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(GridCircular.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCircular.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the circular grid. (absolute or relative)\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n return GridCircular;\n}(Grid);\nexport { GridCircular };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"GridCircular\"] = GridCircular;\n//# sourceMappingURL=GridCircular.js.map","/**\r\n * Axis Label module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisLabel } from \"./AxisLabel\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport { Percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Use to create labels on circular axis.\r\n *\r\n * @see {@link IAxisLabelCircularEvents} for a list of available events\r\n * @see {@link IAxisLabelCircularAdapters} for a list of available Adapters\r\n */\nvar AxisLabelCircular = /** @class */function (_super) {\n __extends(AxisLabelCircular, _super);\n /**\r\n * Constructor\r\n */\n function AxisLabelCircular() {\n var _this = _super.call(this) || this;\n /**\r\n *\r\n * @ignore\r\n */\n _this.fdx = 0;\n /**\r\n *\r\n * @ignore\r\n */\n _this.fdy = 0;\n _this.className = \"AxisLabelCircular\";\n _this.padding(0, 0, 0, 0);\n _this.location = 0.5;\n _this.locationOnPath = 0.5;\n _this.radius = 0;\n _this.isMeasured = false;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(AxisLabelCircular.prototype, \"relativeRotation\", {\n /**\r\n * @return Rotation angle\r\n */\n get: function () {\n return this.getPropertyValue(\"relativeRotation\");\n },\n /**\r\n * Relative rotation of the label.\r\n *\r\n * It is an angle to circle. In case 90, labels will be positioned like rays\r\n * of light, if 0 - positioned along the circle.\r\n *\r\n * @param value Rotation angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"relativeRotation\", value, true);\n if (!$type.hasValue(value)) {\n this.rotation = undefined;\n var dataItem = this.dataItem;\n if (dataItem && dataItem.component) {\n dataItem.component.invalidateDataItems();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisLabelCircular.prototype, \"radius\", {\n /**\r\n * @return Distance (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Distance from axis circle to label in pixels or percent.\r\n *\r\n * @param value Distance (px or percent)\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisLabelCircular.prototype, \"bent\", {\n /**\r\n * @return Bent?\r\n */\n get: function () {\n return this.getPropertyValue(\"bent\");\n },\n /**\r\n * Specifies if label should be bent along the circle.\r\n *\r\n * IMPORTANT: Use this with caution, since it is quite CPU-greedy.\r\n *\r\n * @since 4.1.2\r\n * @default false\r\n * @param value Bent?\r\n */\n set: function (value) {\n this.setPropertyValue(\"bent\", value, true);\n this.setPropertyValue(\"wrap\", false);\n this.setPropertyValue(\"horizontalCenter\", \"none\");\n this.setPropertyValue(\"verticalCenter\", \"none\");\n if (value) {\n this.setPropertyValue(\"dx\", 0);\n this.setPropertyValue(\"dy\", 0);\n this.setPropertyValue(\"x\", 0);\n this.setPropertyValue(\"y\", 0);\n this.setPropertyValue(\"rotation\", 0);\n //this.setPropertyValue(\"relativeRotation\", undefined);\n this.fdx = 0;\n this.fdy = 0;\n this.textAlign = \"middle\";\n } else {\n if (this.textPathElement) {\n this.textPathElement.dispose();\n this.textPathElement = undefined;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns label radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @return Pixel radius\r\n */\n AxisLabelCircular.prototype.pixelRadius = function (axisRadius) {\n var sign = 1;\n if (this.inside) {\n sign = -1;\n }\n return $utils.relativeToValue(this.radius, axisRadius) * sign;\n };\n /**\r\n * Returns label horizontal radius in pixels.\r\n *\r\n * @param axisRadius Radius\r\n * @param axisRadiusY Vertical radius\r\n * @return Radius\r\n */\n AxisLabelCircular.prototype.pixelRadiusY = function (axisRadius, axisRadiusY) {\n var sign = 1;\n if (this.inside) {\n sign = -1;\n }\n var radius = this.radius;\n if ($type.isNumber(radius)) {\n radius *= axisRadiusY / axisRadius;\n return $utils.relativeToValue(radius, axisRadius) * sign;\n } else {\n return $utils.relativeToValue(radius, axisRadiusY) * sign;\n }\n };\n /**\r\n * [fixPosition description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param point Label affixation point\r\n * @param axisRadius Distance from point (px)\r\n */\n AxisLabelCircular.prototype.fixPosition = function (angle, axisRadius, axisRadiusY, dx, dy) {\n if (!$type.isNumber(axisRadiusY)) {\n axisRadiusY = axisRadius;\n }\n if (!$type.isNumber(dx)) {\n dx = 0;\n }\n if (!$type.isNumber(dy)) {\n dy = 0;\n }\n var point = {\n x: axisRadius * $math.cos(angle),\n y: axisRadiusY * $math.sin(angle)\n };\n if (this.invalid) {\n this.validate(); //@todo\" check if we need this\n }\n var isNegative = false;\n var realRadius = this.radius;\n if (realRadius instanceof Percent && realRadius.value < 0) {\n isNegative = true;\n } else if (realRadius < 0) {\n isNegative = true;\n }\n var relativeRotation = this.relativeRotation;\n var labelRadius = this.pixelRadius(axisRadius);\n if (this.bent) {\n var point_1 = {\n x: (axisRadius + labelRadius) * $math.cos(angle + 180),\n y: (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle + 180)\n };\n this.path = $path.moveTo(point_1) + $path.arcTo(angle + 180, 360, axisRadius + labelRadius, axisRadiusY + labelRadius * axisRadiusY / axisRadius);\n if (this.textPathElement) {\n this.textPathElement.attr({\n \"startOffset\": this.locationOnPath * 100 + \"%\"\n });\n }\n return;\n }\n // WHEN ROTATED\n if ($type.isNumber(relativeRotation)) {\n this.horizontalCenter = \"none\";\n this.verticalCenter = \"none\";\n angle = $math.fitAngleToRange(angle, -180, 180);\n var pixelWidth = this.bbox.width;\n var pixelHeight = this.bbox.height;\n var pixelPaddingBottom = this.pixelPaddingBottom;\n var pixelPaddingTop = this.pixelPaddingTop;\n var pixelPaddingLeft = this.pixelPaddingLeft;\n var pixelPaddingRight = this.pixelPaddingRight;\n if (angle > 90 || angle < -90) {\n if (relativeRotation == -90) {\n relativeRotation = 90;\n pixelWidth = 0;\n }\n } else {\n if (relativeRotation == -90) {\n pixelHeight = -pixelHeight;\n }\n if (relativeRotation == 90) {\n relativeRotation = -90;\n pixelWidth = -pixelPaddingLeft - pixelPaddingRight;\n pixelHeight = -pixelHeight - pixelPaddingTop - pixelPaddingBottom;\n }\n }\n this.rotation = relativeRotation + angle + 90;\n var dH = $math.sin(relativeRotation) / 2;\n var dW = $math.cos(relativeRotation) / 2;\n var rotation = this.rotation;\n this.dx = pixelHeight * dH * $math.sin(rotation) - pixelWidth * dW * $math.cos(rotation);\n this.dy = -pixelHeight * dH * $math.cos(rotation) - pixelWidth * dW * $math.sin(rotation);\n if (!this.inside) {\n labelRadius += (pixelHeight + pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelWidth + pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\n } else {\n if (angle > 90 || angle < -90) {\n labelRadius -= (pixelPaddingBottom + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight) * $math.sin(relativeRotation);\n } else {\n labelRadius += (pixelPaddingBottom + this.bbox.height + pixelPaddingTop) * $math.cos(relativeRotation) + (pixelPaddingLeft + pixelPaddingRight + this.bbox.width) * $math.sin(relativeRotation);\n }\n }\n point.x += $math.cos(angle) * labelRadius;\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\n } else {\n // END OF ROTATED\n this.horizontalCenter = \"middle\";\n this.verticalCenter = \"middle\";\n if (isNegative) {\n this.dx = 0;\n this.dy = 0;\n point.x = (axisRadius + labelRadius) * $math.cos(angle);\n point.y = (axisRadiusY + labelRadius * axisRadiusY / axisRadius) * $math.sin(angle);\n } else {\n // we don't use valign for labels because then they would jump while animating. instead we modify dy depending on a y position\n // this math makes dy to be 1 at the top of the circle, 0.5 at the middle and 1 at the bottom\n // @todo with this math doesn't work well with inside = true\n this.dy = this._measuredHeight / 2 * $math.sin(angle); //(1 - (point.y + axisRadiusY) / (2 * axisRadiusY));\n // simmilar with dx\n this.dx = this._measuredWidth / 2 * $math.cos(angle); //(1 - (point.x + axisRadius) / (2 * axisRadius));\n point.x += $math.cos(angle) * labelRadius;\n point.y += $math.sin(angle) * labelRadius * axisRadiusY / axisRadius;\n }\n }\n point.x += dx;\n point.y += dy;\n this.fdx = this.dx;\n this.fdy = this.dy;\n this.moveTo(point);\n };\n return AxisLabelCircular;\n}(AxisLabel);\nexport { AxisLabelCircular };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisLabelCircular\"] = AxisLabelCircular;\n//# sourceMappingURL=AxisLabelCircular.js.map","/**\r\n * Module, defining Axis Renderer for circular axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRenderer } from \"./AxisRenderer\";\nimport { AxisFillCircular } from \"./AxisFillCircular\";\nimport { GridCircular } from \"./GridCircular\";\nimport { AxisLabelCircular } from \"./AxisLabelCircular\";\nimport { registry } from \"../../core/Registry\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport { AxisBullet } from \"./AxisBullet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A renderer for circular axis.\r\n */\nvar AxisRendererCircular = /** @class */function (_super) {\n __extends(AxisRendererCircular, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererCircular() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * @ignore\r\n */\n _this.pixelRadiusReal = 0;\n // axis.layout = \"none\"; // does not trigger redraw when size changes\n _this.layout = \"none\";\n _this.className = \"AxisRendererCircular\";\n _this.isMeasured = false;\n _this.startAngle = -90;\n _this.endAngle = 270;\n _this.useChartAngles = true;\n _this.radius = percent(100);\n _this.isMeasured = false;\n _this.grid.template.location = 0;\n _this.labels.template.location = 0;\n _this.labels.template.radius = 15;\n _this.ticks.template.location = 0;\n _this.ticks.template.pixelPerfect = false;\n _this.tooltipLocation = 0;\n _this.line.strokeOpacity = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * @ignore\r\n */\n AxisRendererCircular.prototype.setAxis = function (axis) {\n var _this = this;\n _super.prototype.setAxis.call(this, axis);\n axis.isMeasured = false;\n // modify x and y so that tooltip would always be on circle\n var tooltip = axis.tooltip;\n tooltip.adapter.add(\"dx\", function (x, target) {\n var point = $utils.svgPointToSprite({\n x: target.pixelX,\n y: target.pixelY\n }, _this);\n return _this.pixelRadius * Math.cos(Math.atan2(point.y, point.x)) - point.x;\n });\n tooltip.adapter.add(\"dy\", function (y, target) {\n var point = $utils.svgPointToSprite({\n x: target.pixelX,\n y: target.pixelY\n }, _this);\n return _this.pixelRadius * Math.sin(Math.atan2(point.y, point.x)) - point.y;\n });\n };\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererCircular.prototype.validate = function () {\n // so that radius would be updated\n if (this.chart && this.chart.invalid) {\n this.chart.validate();\n }\n _super.prototype.validate.call(this);\n };\n Object.defineProperty(AxisRendererCircular.prototype, \"axisLength\", {\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\n get: function () {\n return 2 * Math.PI * this.pixelRadius;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"radius\", value, false, false, 10, false)) {\n if (this.axis) {\n this.axis.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelRadius\", {\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\n get: function () {\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n var chart = this.chart;\n var innerRadius = this.getPropertyValue(\"innerRadius\");\n if (chart) {\n if (!$type.hasValue(innerRadius)) {\n innerRadius = chart.innerRadius;\n if (innerRadius instanceof Percent && chart) {\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\n }\n } else {\n if (innerRadius instanceof Percent && chart) {\n var mr = chart.mr;\n var value = innerRadius.value;\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\n innerRadius = percent(value * 100);\n }\n }\n return innerRadius;\n }\n },\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"innerRadius\", value, false, false, 10, false)) {\n if (this.axis) {\n this.axis.invalidate();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"useChartAngles\", {\n /**\r\n * @return Use chart angles\r\n */\n get: function () {\n return this.getPropertyValue(\"useChartAngles\");\n },\n /**\r\n * Specifies if axis should use its own `startAngle` and `endAngle` or\r\n * inherit them from relative properties from chart.\r\n *\r\n * @default false\r\n * @param value Use chart's angles\r\n */\n set: function (value) {\n this.setPropertyValue(\"useChartAngles\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"pixelInnerRadius\", {\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\n get: function () {\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\n AxisRendererCircular.prototype.positionToPoint = function (position, position2) {\n if (!$type.isNumber(position2)) {\n position2 = 1;\n }\n var coordinate = this.positionToCoordinate(position);\n var angle = this.startAngle + (this.endAngle - this.startAngle) * coordinate / this.axisLength;\n var radius = this.pixelRadius;\n var innerRadius = this.pixelInnerRadius;\n if (this.axisRendererY) {\n var realRadius = $math.fitToRange(this.axisRendererY.positionToCoordinate(position2), 0, Infinity);\n if (realRadius == 0) {\n realRadius = 0.000001;\n }\n var point = {\n x: realRadius * $math.cos(angle),\n y: realRadius * $math.sin(angle)\n };\n return point;\n }\n return {\n x: $math.cos(angle) * innerRadius + (radius - innerRadius) * $math.cos(angle) * position2,\n y: $math.sin(angle) * innerRadius + (radius - innerRadius) * $math.sin(angle) * position2\n };\n };\n /**\r\n * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n *\r\n * @param position Position (0-1)\r\n * @return Angle (0-360)\r\n */\n AxisRendererCircular.prototype.positionToAngle = function (position) {\n var axis = this.axis;\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\n var angle;\n if (axis.renderer.inversed) {\n angle = this.startAngle + (axis.end - position) * arc;\n } else {\n angle = this.startAngle + (position - axis.start) * arc;\n }\n return $math.round(angle, 3);\n };\n /**\r\n * Converts angle on axis to relative position(0-1).\r\n *\r\n * @param angle Angle in degrees\r\n * @return Position (0-1)\r\n */\n AxisRendererCircular.prototype.angleToPosition = function (angle) {\n var axis = this.axis;\n var arc = (this.endAngle - this.startAngle) / (axis.end - axis.start);\n var position;\n if (axis.renderer.inversed) {\n position = axis.end - (angle - this.startAngle) / arc;\n } else {\n position = (angle - this.startAngle) / arc + axis.start;\n }\n return $math.round(position, 5);\n };\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererCircular.prototype.updateAxisLine = function () {\n var radius = this.pixelRadius;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var arc = $math.min(360, endAngle - startAngle);\n this.line.path = $path.moveTo({\n x: radius * $math.cos(startAngle),\n y: radius * $math.sin(startAngle)\n }) + $path.arcTo(startAngle, arc, radius, radius);\n };\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererCircular.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n if ($type.isNumber(point.x) && $type.isNumber(point.y) && grid.element) {\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\n var radius = $utils.relativeRadiusToValue($type.hasValue(grid.radius) ? grid.radius : percent(100), this.pixelRadius);\n var gridInnerRadius = $utils.relativeRadiusToValue(grid.innerRadius, this.pixelRadius);\n grid.zIndex = 0;\n var innerRadius = $utils.relativeRadiusToValue($type.isNumber(gridInnerRadius) ? gridInnerRadius : this.innerRadius, this.pixelRadiusReal, true);\n if (!$type.isNumber(innerRadius)) {\n innerRadius = 0;\n }\n grid.path = $path.moveTo({\n x: innerRadius * $math.cos(angle),\n y: innerRadius * $math.sin(angle)\n }) + $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n }\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererCircular.prototype.updateTickElement = function (tick, position, endPosition) {\n position = position + (endPosition - position) * tick.location;\n var point = this.positionToPoint(position);\n if (tick.element) {\n var radius = this.pixelRadius;\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\n var tickLength = tick.length;\n if (tick.inside) {\n tickLength = -tickLength;\n }\n tick.zIndex = 1;\n tick.path = $path.moveTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n }) + $path.lineTo({\n x: (radius + tickLength) * $math.cos(angle),\n y: (radius + tickLength) * $math.sin(angle)\n });\n }\n this.toggleVisibility(tick, position, 0, 1);\n };\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererCircular.prototype.updateBullet = function (bullet, position, endPosition) {\n var location = 0.5;\n if (bullet instanceof AxisBullet) {\n location = bullet.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n var radius = this.pixelRadius;\n var angle = $math.DEGREES * Math.atan2(point.y, point.x);\n point = {\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n };\n this.positionItem(bullet, point);\n this.toggleVisibility(bullet, position, 0, 1);\n };\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRendererCircular.prototype.updateLabelElement = function (label, position, endPosition, location) {\n if (!$type.hasValue(location)) {\n location = label.location;\n }\n position = position + (endPosition - position) * location;\n label.fixPosition(this.positionToAngle(position), this.pixelRadius);\n label.zIndex = 2;\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\n };\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\n AxisRendererCircular.prototype.fitsToBounds = function (point) {\n return true;\n };\n Object.defineProperty(AxisRendererCircular.prototype, \"startAngle\", {\n /**\r\n * @return Start angle\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Start angle of the axis in degrees (0-360).\r\n *\r\n * @param value Start angle\r\n */\n set: function (value) {\n // do not normalize angel here!\n if (this.setPropertyValue(\"startAngle\", value)) {\n this.invalidateAxisItems();\n if (this.axis) {\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererCircular.prototype, \"endAngle\", {\n /**\r\n * @return End angle\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * End angle of the axis in degrees (0-360).\r\n *\r\n * @param value End angle\r\n */\n set: function (value) {\n // do not normalize angel here!\n if (this.setPropertyValue(\"endAngle\", value)) {\n this.invalidateAxisItems();\n if (this.axis) {\n this.axis.invalidateSeries();\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\n AxisRendererCircular.prototype.getPositionRangePath = function (startPosition, endPosition, radius, innerRadius, cornerRadius) {\n var path = \"\";\n if ($type.isNumber(startPosition) && $type.isNumber(endPosition)) {\n if (!$type.hasValue(radius)) {\n radius = this.radius;\n }\n startPosition = $math.max(startPosition, this.axis.start);\n endPosition = $math.min(endPosition, this.axis.end);\n if (endPosition < startPosition) {\n endPosition = startPosition;\n }\n var pixelRadius = $utils.relativeRadiusToValue(radius, this.pixelRadius);\n var pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, this.pixelRadius, true);\n var startAngle = this.positionToAngle(startPosition);\n var endAngle = this.positionToAngle(endPosition);\n var arc = endAngle - startAngle;\n path = $path.arc(startAngle, arc, pixelRadius, pixelInnerRadius, pixelRadius, cornerRadius);\n }\n return path;\n };\n /**\r\n * Returns a new grid element, suitable for this Axis Renderer type.\r\n *\r\n * @return Grid element\r\n */\n AxisRendererCircular.prototype.createGrid = function () {\n return new GridCircular();\n };\n /**\r\n * Returns a new fill element, suitable for this Axis Renderer type.\r\n *\r\n * @return Fill element\r\n */\n AxisRendererCircular.prototype.createFill = function (axis) {\n return new AxisFillCircular(axis);\n };\n /**\r\n * Returns a new label element, suitable for this Axis Renderer type.\r\n *\r\n * @return Label element\r\n */\n AxisRendererCircular.prototype.createLabel = function () {\n return new AxisLabelCircular();\n };\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\n AxisRendererCircular.prototype.pointToPosition = function (point) {\n var angle = $math.fitAngleToRange($math.getAngle(point), this.startAngle, this.endAngle);\n return this.coordinateToPosition((angle - this.startAngle) / 360 * this.axisLength);\n };\n return AxisRendererCircular;\n}(AxisRenderer);\nexport { AxisRendererCircular };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRendererCircular\"] = AxisRendererCircular;\n//# sourceMappingURL=AxisRendererCircular.js.map","/**\r\n * Module, defining Axis Renderer for radial axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRendererY } from \"./AxisRendererY\";\nimport { CategoryAxis } from \"./CategoryAxis\";\nimport { WavedCircle } from \"../../core/elements/WavedCircle\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { Percent, percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport { AxisBullet } from \"./AxisBullet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A renderer for radial axis.\r\n */\nvar AxisRendererRadial = /** @class */function (_super) {\n __extends(AxisRendererRadial, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererRadial() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A related chart.\r\n */\n _this._chart = new MutableValueDisposer();\n /**\r\n * @ignore\r\n */\n _this.pixelRadiusReal = 0;\n _this.className = \"AxisRendererRadial\";\n _this.isMeasured = false;\n _this.startAngle = -90;\n _this.endAngle = 270;\n _this.minGridDistance = 30;\n _this.gridType = \"circles\";\n _this.axisAngle = -90;\n _this.isMeasured = false;\n _this.layout = \"none\";\n _this.radius = percent(100);\n _this.line.strokeOpacity = 0;\n _this.labels.template.horizontalCenter = \"middle\";\n _this._disposers.push(_this._chart);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Validates Axis renderer.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererRadial.prototype.validate = function () {\n // so that radius would be updated\n if (this.chart && this.chart.invalid) {\n this.chart.validate();\n }\n _super.prototype.validate.call(this);\n };\n Object.defineProperty(AxisRendererRadial.prototype, \"axisLength\", {\n /**\r\n * Returns actual length of the Axis, in pixels.\r\n *\r\n * @return Length (px)\r\n */\n get: function () {\n return this.pixelRadius - this.pixelInnerRadius;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelRadius\", {\n /**\r\n * Outer radius in pixels.\r\n *\r\n * @return Outer radius (px)\r\n */\n get: function () {\n return $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n var chart = this.chart;\n var innerRadius = this.getPropertyValue(\"innerRadius\");\n if (chart) {\n if (!$type.hasValue(innerRadius)) {\n innerRadius = chart.innerRadius;\n if (innerRadius instanceof Percent && chart) {\n innerRadius = percent(innerRadius.value * chart.innerRadiusModifyer * 100);\n }\n } else {\n if (innerRadius instanceof Percent && chart) {\n var mr = chart.mr;\n var value = innerRadius.value;\n value = Math.max(mr * value, mr - Math.min(chart.plotContainer.innerHeight, chart.plotContainer.innerWidth)) / mr;\n innerRadius = percent(value * 100);\n }\n }\n }\n return innerRadius;\n },\n /**\r\n * Inner radius of the axis.\r\n *\r\n * Can be absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"pixelInnerRadius\", {\n /**\r\n * Inner radius in pixels.\r\n *\r\n * @return Inner radius (px)\r\n */\n get: function () {\n return $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position on axis to point coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @param position2 Position (0-1) Position on the second axis\r\n * @return Point\r\n */\n AxisRendererRadial.prototype.positionToPoint = function (position, position2) {\n var radius = $math.fitToRange(this.positionToCoordinate(position), 0, Infinity);\n return {\n x: radius * $math.cos(this.axisAngle),\n y: radius * $math.sin(this.axisAngle)\n };\n };\n /**\r\n * Updates and positions the axis line element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererRadial.prototype.updateAxisLine = function () {\n this.line.path = $path.moveTo({\n x: this.pixelInnerRadius * $math.cos(this.axisAngle),\n y: this.pixelInnerRadius * $math.sin(this.axisAngle)\n }) + $path.lineTo({\n x: this.pixelRadius * $math.cos(this.axisAngle),\n y: this.pixelRadius * $math.sin(this.axisAngle)\n });\n var title = this.axis.title;\n title.valign = \"none\";\n title.horizontalCenter = \"middle\";\n title.verticalCenter = \"bottom\";\n title.y = -this.axisLength / 2;\n var rotation = 90;\n if (this.opposite) {\n if (!this.inside) {\n rotation = -90;\n }\n } else {\n if (this.inside) {\n rotation = -90;\n }\n }\n title.rotation = rotation;\n };\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererRadial.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n var path;\n var radius = $math.getDistance(point);\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var chart = this.chart;\n if ($type.isNumber(radius) && grid.element && chart) {\n var xAxis = chart.xAxes.getIndex(0);\n var count = 0;\n var series = chart.series.getIndex(0);\n if (series) {\n count = series.dataItems.length;\n }\n // polygons are only possible if x axis is present\n // @todo: review this\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\n var gridLocation = xAxis.renderer.grid.template.location;\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\n path = $path.moveTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n for (var i = 1; i < count; i++) {\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\n path += $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n }\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\n path += $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n } else {\n path = $path.moveTo({\n x: radius * $math.cos(startAngle),\n y: radius * $math.sin(startAngle)\n }) + $path.arcTo(startAngle, endAngle - startAngle, radius, radius);\n }\n grid.path = path;\n }\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions a label element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param label Label element\r\n * @param position Starting position\r\n * @param endPosition Ending position\r\n */\n AxisRendererRadial.prototype.updateLabelElement = function (label, position, endPosition, location) {\n if (!$type.hasValue(location)) {\n location = label.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n this.positionItem(label, point);\n this.toggleVisibility(label, position, this.minLabelPosition, this.maxLabelPosition);\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererRadial.prototype.updateBaseGridElement = function () {\n // @todo? zero grid for radar chart, is it needed?\n };\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point coordinates\r\n * @return Fits?\r\n */\n AxisRendererRadial.prototype.fitsToBounds = function (point) {\n return true;\n };\n Object.defineProperty(AxisRendererRadial.prototype, \"startAngle\", {\n /**\r\n * @return Start angle\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Start angle of the axis in degrees. (0-360)\r\n *\r\n * @param value Start angle\r\n */\n set: function (value) {\n // do not normalize angle here!\n if (this.setPropertyValue(\"startAngle\", value)) {\n this.invalidateAxisItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"endAngle\", {\n /**\r\n * @return End angle\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * End angle of the axis in degrees. (0-360)\r\n *\r\n * @param value End angle\r\n */\n set: function (value) {\n // do not normalize angel here!\n if (this.setPropertyValue(\"endAngle\", value)) {\n this.invalidateAxisItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"axisAngle\", {\n /**\r\n * @return Axis angle\r\n */\n get: function () {\n return this.getPropertyValue(\"axisAngle\");\n //return $math.fitToRange(this.getPropertyValue(\"axisAngle\"), this.startAngle, this.endAngle); // no good, as less flexible\n },\n /**\r\n * Angle of the radial axis in degrees. (0-360)\r\n *\r\n * @param value Axis angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"axisAngle\", $math.normalizeAngle(value));\n this.invalidateAxisItems();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AxisRendererRadial.prototype, \"gridType\", {\n /**\r\n * Grid type\r\n */\n get: function () {\n var axis = this.chart.xAxes.getIndex(0);\n if (axis instanceof CategoryAxis) {\n return this.getPropertyValue(\"gridType\");\n } else {\n return \"circles\";\n }\n },\n // polygons grid type is only possible under these conditions: xAxis is available and it is CategoryAxis, also at least one series should be added to a chart\n /**\r\n * Grid type for radial axis.\r\n *\r\n * A grid on radia axis can either be perfect circles (\"circles\"), or\r\n * straight lines (\"polygons\").\r\n *\r\n * @default \"circles\"\r\n * @param value Grid type\r\n */\n set: function (value) {\n this.setPropertyValue(\"gridType\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * [getPositionRangePath description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param startPosition Starting position\r\n * @param endPosition End position\r\n * @return SVG path\r\n */\n AxisRendererRadial.prototype.getPositionRangePath = function (startPosition, endPosition) {\n var pixelInnerRadius = this.pixelInnerRadius;\n var pixelRadius = this.axisLength + pixelInnerRadius;\n var innerRadius = $math.fitToRange(this.positionToCoordinate(startPosition), pixelInnerRadius, pixelRadius);\n var radius = $math.fitToRange(this.positionToCoordinate(endPosition), pixelInnerRadius, pixelRadius);\n //let angleCount: number = this.angleCount;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var arc = endAngle - startAngle;\n var path;\n var chart = this.chart;\n var xAxis = chart.xAxes.getIndex(0);\n var series = chart.series.getIndex(0);\n var count = 0;\n if (series) {\n count = series.dataItems.length;\n }\n // polygons are only possible if x axis is present\n // @todo: review this\n if (this.gridType == \"polygons\" && count > 0 && series && xAxis && xAxis instanceof CategoryAxis) {\n var gridLocation = xAxis.renderer.grid.template.location;\n var angle = xAxis.getAngle(series.dataItems.getIndex(0), \"categoryX\", gridLocation);\n path = $path.moveTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n for (var i = 1; i < count; i++) {\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\n path += $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n }\n angle = xAxis.getAngle(series.dataItems.getIndex(count - 1), \"categoryX\", xAxis.renderer.cellEndLocation);\n path += $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n path += $path.moveTo({\n x: innerRadius * $math.cos(angle),\n y: innerRadius * $math.sin(angle)\n });\n for (var i = count - 1; i >= 0; i--) {\n angle = xAxis.getAngle(series.dataItems.getIndex(i), \"categoryX\", gridLocation);\n path += $path.lineTo({\n x: innerRadius * $math.cos(angle),\n y: innerRadius * $math.sin(angle)\n });\n }\n } else {\n path = $path.arc(startAngle, arc, radius, innerRadius);\n }\n return path;\n };\n /**\r\n * Updates and positions an axis break element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Break element\r\n */\n AxisRendererRadial.prototype.updateBreakElement = function (axisBreak) {\n // @todo: someday we might need axis break when gridType is polygons\n var startLine = axisBreak.startLine;\n var endLine = axisBreak.endLine;\n var fillShape = axisBreak.fillShape;\n var startPoint = axisBreak.startPoint;\n var endPoint = axisBreak.endPoint;\n startLine.radius = Math.abs(startPoint.y);\n endLine.radius = Math.abs(endPoint.y);\n fillShape.radius = Math.abs(endPoint.y);\n fillShape.innerRadius = Math.abs(startPoint.y);\n };\n /**\r\n * Creates visual elements for and axis break.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axisBreak Axis break\r\n */\n AxisRendererRadial.prototype.createBreakSprites = function (axisBreak) {\n axisBreak.startLine = new WavedCircle();\n axisBreak.endLine = new WavedCircle();\n axisBreak.fillShape = new WavedCircle();\n };\n /**\r\n * Updates some of the Axis tooltip's visual properties, related to\r\n * rendering of the Axis.\r\n *\r\n * @todo Description (review)\r\n * @ignore Exclude from docs\r\n */\n AxisRendererRadial.prototype.updateTooltip = function () {\n var axis = this.axis;\n if (axis) {\n var bigNum = 4000;\n var bbx = -4000;\n var bby = -4000;\n var bbw = bigNum * 2;\n var bbh = bigNum * 2;\n var axisAngle = this.axisAngle;\n if (axisAngle < 0) {\n axisAngle += 360;\n }\n var tooltipOrientation = \"vertical\";\n if (axisAngle > 45 && axisAngle < 135 || axisAngle > 225 && axisAngle < 315) {\n tooltipOrientation = \"horizontal\";\n }\n this.axis.updateTooltip(tooltipOrientation, {\n x: bbx,\n y: bby,\n width: bbw,\n height: bbh\n });\n }\n };\n /**\r\n * Updates and positions a tick element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param tick Tick element\r\n * @param position Position\r\n */\n AxisRendererRadial.prototype.updateTickElement = function (tick, position, endPosition) {\n position = position + (endPosition - position) * tick.location;\n var point = this.positionToPoint(position);\n if (tick.element) {\n var angle = $math.normalizeAngle(this.axisAngle + 90);\n if (angle / 90 != Math.round(angle / 90)) {\n tick.pixelPerfect = false;\n } else {\n tick.pixelPerfect = true;\n }\n var tickLength = -tick.length;\n if (tick.inside) {\n tickLength *= -1;\n }\n tick.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: tickLength * $math.cos(angle),\n y: tickLength * $math.sin(angle)\n });\n }\n this.positionItem(tick, point);\n this.toggleVisibility(tick, position, 0, 1);\n };\n /**\r\n * Updates and positions axis bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet AxisBullet element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererRadial.prototype.updateBullet = function (bullet, position, endPosition) {\n var location = 0.5;\n if (bullet instanceof AxisBullet) {\n location = bullet.location;\n }\n position = position + (endPosition - position) * location;\n var point = this.positionToPoint(position);\n this.positionItem(bullet, point);\n this.toggleVisibility(bullet, position, 0, 1);\n };\n /**\r\n * Converts a position on the axis to a coordinate in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\n AxisRendererRadial.prototype.positionToCoordinate = function (position) {\n var coordinate;\n var axis = this.axis;\n var axisFullLength = axis.axisFullLength;\n var innerRadius = this.pixelInnerRadius;\n if (axis.renderer.inversed) {\n coordinate = (axis.end - position) * axisFullLength + innerRadius;\n } else {\n coordinate = (position - axis.start) * axisFullLength + innerRadius;\n }\n return $math.round(coordinate, 1);\n };\n /**\r\n * Converts a point at specific coordinates to a relative position (0-1)\r\n * on the axis.\r\n *\r\n * @param point Point\r\n * @return Position (0-1)\r\n */\n AxisRendererRadial.prototype.pointToPosition = function (point) {\n var coordinate = $math.getDistance(point) - this.pixelInnerRadius;\n return this.coordinateToPosition(coordinate);\n };\n Object.defineProperty(AxisRendererRadial.prototype, \"chart\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\n get: function () {\n return this._chart.get();\n },\n /**\r\n * A chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\n set: function (value) {\n this._chart.set(value, null);\n },\n enumerable: true,\n configurable: true\n });\n return AxisRendererRadial;\n}(AxisRendererY);\nexport { AxisRendererRadial };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRendererRadial\"] = AxisRendererRadial;\n//# sourceMappingURL=AxisRendererRadial.js.map","/**\r\n * Radar chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport { RadarSeries } from \"../series/RadarSeries\";\nimport { Container } from \"../../core/Container\";\nimport { Circle } from \"../../core/elements/Circle\";\nimport { registry } from \"../../core/Registry\";\nimport { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\nimport { AxisRendererRadial } from \"../axes/AxisRendererRadial\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[RadarChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar RadarChartDataItem = /** @class */function (_super) {\n __extends(RadarChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function RadarChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"RadarChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return RadarChartDataItem;\n}(XYChartDataItem);\nexport { RadarChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Radar chart.\r\n *\r\n * @see {@link IRadarChartEvents} for a list of available Events\r\n * @see {@link IRadarChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/radar-chart/} for documentation\r\n * @important\r\n */\nvar RadarChart = /** @class */function (_super) {\n __extends(RadarChart, _super);\n /**\r\n * Constructor\r\n */\n function RadarChart() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Defines X axis renderer type.\r\n */\n _this._axisRendererX = AxisRendererCircular;\n /**\r\n * Defines Y axis renderer type.\r\n */\n _this._axisRendererY = AxisRendererRadial;\n /**\r\n * used by cursor. We adjust innerradius if start and end angle are close to each other\r\n * @ignore Exclude from docs\r\n */\n _this.innerRadiusModifyer = 1;\n /**\r\n * @ignore\r\n */\n _this.mr = 1;\n _this.className = \"RadarChart\";\n _this.startAngle = -90;\n _this.endAngle = 270;\n _this.radius = percent(80);\n _this.innerRadius = 0;\n var radarContainer = _this.plotContainer.createChild(Container);\n radarContainer.shouldClone = false;\n radarContainer.layout = \"absolute\";\n radarContainer.align = \"center\";\n radarContainer.valign = \"middle\";\n _this.seriesContainer.parent = radarContainer;\n _this.radarContainer = radarContainer;\n _this.bulletsContainer.parent = radarContainer;\n _this.axisBulletsContainer = radarContainer;\n _this._cursorContainer = radarContainer;\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false); // need this for the chart to change radius if legend is removed/disabled\n _this._bulletMask = radarContainer.createChild(Circle);\n _this._bulletMask.shouldClone = false;\n _this._bulletMask.element = _this.paper.add(\"path\");\n _this._bulletMask.opacity = 0;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n RadarChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Radar chart\");\n }\n };\n /**\r\n * Decorates Axis with required properties for this chart.\r\n *\r\n * @param axis Axis\r\n */\n RadarChart.prototype.processAxis = function (axis) {\n _super.prototype.processAxis.call(this, axis);\n var renderer = axis.renderer;\n renderer.gridContainer.parent = renderer;\n renderer.breakContainer.parent = renderer;\n axis.parent = this.radarContainer;\n renderer.toBack();\n };\n /**\r\n * Updates all X axes after range change event.\r\n */\n RadarChart.prototype.handleXAxisRangeChange = function () {\n _super.prototype.handleXAxisRangeChange.call(this);\n $iter.each(this.yAxes.iterator(), function (axis) {\n axis.invalidate();\n });\n };\n /**\r\n * Updates all Y axes after range change event.\r\n */\n RadarChart.prototype.handleYAxisRangeChange = function () {\n _super.prototype.handleYAxisRangeChange.call(this);\n $iter.each(this.xAxes.iterator(), function (axis) {\n axis.invalidate();\n });\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n RadarChart.prototype.processConfig = function (config) {\n if (config) {\n // Set up cursor\n if ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\n config.cursor.type = \"RadarCursor\";\n }\n // Set up series\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\n for (var i = 0, len = config.series.length; i < len; i++) {\n config.series[i].type = config.series[i].type || \"RadarSeries\";\n }\n }\n // Set up axes\n /*if ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n for (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n config.xAxes[i].type = config.xAxes[i].type || \"AxisRendererCircular\";\r\n }\r\n }\r\n if ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n for (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n config.yAxes[i].type = config.yAxes[i].type || \"AxisRendererRadial\";\r\n }\r\n }*/\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Does calculations before drawing the chart.\r\n */\n RadarChart.prototype.beforeDraw = function () {\n _super.prototype.beforeDraw.call(this);\n var plotContainer = this.plotContainer;\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\n var innerRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n var wr = plotContainer.innerWidth / rect.width;\n var hr = plotContainer.innerHeight / rect.height;\n var innerRadius = this.innerRadius;\n if (innerRadius instanceof Percent) {\n var value = innerRadius.value;\n var mr = Math.min(wr, hr);\n this.mr = mr;\n value = Math.max(mr * value, mr - Math.min(plotContainer.innerHeight, plotContainer.innerWidth)) / mr;\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, value);\n this.innerRadiusModifyer = value / innerRadius.value;\n innerRadius = percent(value * 100);\n }\n // @todo handle this when innerRadius set in pixels (do it for pie also)\n rect = $math.getCommonRectangle([rect, innerRect]);\n var maxRadius = Math.min(plotContainer.innerWidth / rect.width, plotContainer.innerHeight / rect.height);\n var diameter = $utils.relativeRadiusToValue(this.radius, maxRadius) * 2 || 0;\n var radius = diameter / 2;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n this._pixelInnerRadius = $utils.relativeRadiusToValue(innerRadius, radius);\n this._bulletMask.path = $path.arc(startAngle, endAngle - startAngle, radius, this._pixelInnerRadius);\n $iter.each(this.xAxes.iterator(), function (axis) {\n if (axis.renderer.useChartAngles) {\n axis.renderer.startAngle = startAngle;\n axis.renderer.endAngle = endAngle;\n }\n axis.width = diameter;\n axis.height = diameter;\n //axis.renderer.width = diameter;\n //axis.renderer.height = diameter;\n axis.renderer.pixelRadiusReal = radius;\n //axis.renderer.innerRadius = innerRadius;\n });\n $iter.each(this.yAxes.iterator(), function (axis) {\n axis.renderer.startAngle = startAngle;\n axis.renderer.endAngle = endAngle;\n axis.width = diameter;\n axis.height = diameter;\n //axis.renderer.width = diameter;\n //axis.renderer.height = diameter;\n axis.renderer.pixelRadiusReal = radius;\n //axis.renderer.innerRadius = innerRadius;\n });\n var cursor = this.cursor;\n if (cursor) {\n cursor.width = diameter;\n cursor.height = diameter;\n cursor.startAngle = startAngle;\n cursor.endAngle = endAngle;\n }\n this.radarContainer.definedBBox = {\n x: radius * rect.x,\n y: radius * rect.y,\n width: radius * rect.width,\n height: radius * rect.height\n };\n this.radarContainer.validatePosition();\n };\n /**\r\n * Creates and returns a new Series, suitable for RadarChart.\r\n *\r\n * @return New Series\r\n */\n RadarChart.prototype.createSeries = function () {\n return new RadarSeries();\n };\n Object.defineProperty(RadarChart.prototype, \"startAngle\", {\n /**\r\n * @return Start angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarChart.prototype, \"endAngle\", {\n /**\r\n * @return End angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\n set: function (value) {\n this.setPropertyValue(\"endAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarChart.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarChart.prototype, \"pixelInnerRadius\", {\n /**\r\n * @return Inner radius in pixels\r\n */\n get: function () {\n return this._pixelInnerRadius;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarChart.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * If set in Percent, it will be relative to `radius`. (outer radius)\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Triggers (re)rendering of the horizontal (X) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\n RadarChart.prototype.updateXAxis = function (renderer) {\n //do not call super!\n if (renderer) {\n renderer.processRenderer();\n }\n };\n /**\r\n * Triggers (re)rendering of the vertical (Y) axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param axis Axis\r\n */\n RadarChart.prototype.updateYAxis = function (renderer) {\n // do not call super!\n if (renderer) {\n renderer.processRenderer();\n }\n };\n return RadarChart;\n}(XYChart);\nexport { RadarChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadarChart\"] = RadarChart;\n//# sourceMappingURL=RadarChart.js.map","/**\r\n * Functionality for drawing simple ClockHands\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { Circle } from \"../../core/elements/Circle\";\nimport { Trapezoid } from \"../../core/elements/Trapezoid\";\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * ClockHand class is capable of drawing a simple pointy shape with optionally\r\n * rounderd corners and an icon.\r\n *\r\n * @see {@link IClockHandEvents} for a list of available events\r\n * @see {@link IClockHandAdapters} for a list of available Adapters\r\n * @todo Improve\r\n * @important\r\n */\nvar ClockHand = /** @class */function (_super) {\n __extends(ClockHand, _super);\n /**\r\n * Constructor\r\n */\n function ClockHand() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * An Axis hand is related to.\r\n */\n _this._axis = new MutableValueDisposer();\n _this.className = \"ClockHand\";\n var interfaceColors = new InterfaceColorSet();\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\n _this.stroke = _this.fill;\n var pin = new Circle();\n pin.radius = 5;\n _this.pin = pin;\n _this.isMeasured = false;\n _this.startWidth = 5;\n _this.endWidth = 1;\n _this.width = percent(100);\n _this.height = percent(100);\n _this.radius = percent(100);\n _this.innerRadius = percent(0);\n var hand = new Trapezoid();\n _this.hand = hand;\n _this._disposers.push(_this._axis);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Re(validates) the clock hand, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ClockHand.prototype.validate = function () {\n _super.prototype.validate.call(this);\n var hand = this.hand;\n hand.width = this.pixelWidth;\n var h = Math.max(this.startWidth, this.endWidth);\n hand.height = h;\n hand.leftSide = percent(this.startWidth / h * 100);\n hand.rightSide = percent(this.endWidth / h * 100);\n if (this.axis) {\n var renderer = this.axis.renderer;\n var x0 = $utils.relativeRadiusToValue(this.innerRadius, renderer.pixelRadius);\n var x1 = $utils.relativeRadiusToValue(this.radius, renderer.pixelRadius);\n hand.x = x0;\n hand.y = -h / 2;\n hand.width = x1 - x0;\n }\n };\n Object.defineProperty(ClockHand.prototype, \"pin\", {\n /**\r\n * @return Pin element\r\n */\n get: function () {\n return this._pin;\n },\n /**\r\n * A circle element used as hand's base. (pin)\r\n *\r\n * @param pin Pin element\r\n */\n set: function (pin) {\n if (this._pin) {\n this.removeDispose(this._pin);\n }\n if (pin) {\n this._pin = pin;\n pin.parent = this;\n this._disposers.push(pin);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"hand\", {\n /**\r\n * @return Hand element\r\n */\n get: function () {\n return this._hand;\n },\n /**\r\n * A trapezoid shape used for hand itself.\r\n *\r\n * The shape of the trapezoid is controlled by ClockHand's `startWidth` and\r\n * `endWidth` properties.\r\n *\r\n * Set `endWidth` to 1 (px) to make it pointy.\r\n *\r\n * @param hand Hand element\r\n */\n set: function (hand) {\n if (this._hand) {\n this.removeDispose(this._hand);\n }\n if (hand) {\n this._hand = hand;\n hand.parent = this;\n this._disposers.push(hand);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"radius\", {\n /**\r\n * @return Radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Radius of the hand's outer end. (tip)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"innerRadius\", {\n /**\r\n * @return Radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Radius of the hand's inner end. (base)\r\n *\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @default Percent(0)\r\n * @param value Radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"startWidth\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"startWidth\");\n },\n /**\r\n * Width, in pixels, of the clock hand's inner end. (base)\r\n *\r\n * @default 5\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"startWidth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"endWidth\", {\n /**\r\n * @return Width (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"endWidth\");\n },\n /**\r\n * Width, in pixels, of the clock hand's outer end. (tip)\r\n *\r\n * @default 1\r\n * @param value Width (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"endWidth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"rotationDirection\", {\n /**\r\n * @return rotationDirection\r\n */\n get: function () {\n return this.getPropertyValue(\"rotationDirection\");\n },\n /**\r\n * Rotation direction\r\n *\r\n * @default any\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"rotationDirection\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Moves clock hand to particular value.\r\n *\r\n * If `duration` is set to a number in milliseconds, the hand will move\r\n * to the new position gracefully, rather than jumping rigth to it.\r\n *\r\n * Alternatively, you can also set `value` directly.\r\n *\r\n * @param value New value\r\n * @param duration Animation duration (ms)\r\n * @param easing Animation easing function\r\n */\n ClockHand.prototype.showValue = function (value, duration, easing) {\n this._value = value;\n if (value != undefined) {\n if (!$type.isNumber(duration)) {\n duration = 0;\n }\n if (this.axis) {\n var renderer = this.axis.renderer;\n var newAngle = renderer.positionToAngle(this.axis.anyToPosition(value));\n var currentAngle = this.rotation;\n if (this.rotationDirection == \"clockWise\") {\n if (newAngle < currentAngle) {\n this.rotation = currentAngle - 360;\n }\n }\n if (this.rotationDirection == \"counterClockWise\") {\n if (newAngle > currentAngle) {\n this.rotation = currentAngle + 360;\n }\n }\n this.animate({\n property: \"rotation\",\n to: newAngle\n }, duration, easing);\n }\n }\n };\n Object.defineProperty(ClockHand.prototype, \"currentPosition\", {\n /**\r\n * Returns hand's relative position on axis\r\n */\n get: function () {\n if (this.axis) {\n var renderer = this.axis.renderer;\n return renderer.angleToPosition(this.rotation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"value\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this._value;\n },\n /**\r\n * A current value clock hand is pointing to.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.showValue(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClockHand.prototype, \"axis\", {\n /**\r\n * @return Axis\r\n */\n get: function () {\n return this._axis.get();\n },\n /**\r\n * An Axis clock hand is associated with.\r\n *\r\n * Hand's `value` relates to values on the Axis.\r\n *\r\n * @param axis Axis\r\n */\n set: function (axis) {\n if (this.axis != axis) {\n this._axis.set(axis, new MultiDisposer([axis.events.on(\"datavalidated\", this.updateValue, this, false), axis.events.on(\"datarangechanged\", this.updateValue, this, false), axis.events.on(\"dataitemsvalidated\", this.updateValue, this, false), axis.events.on(\"propertychanged\", this.invalidate, this, false)]));\n }\n if (axis) {\n var chart = axis.chart;\n if (chart) {\n this.rotation = chart.startAngle;\n }\n }\n this.parent = axis.renderer;\n this.zIndex = 5;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Triggers `value` accessor, so that Hand animates to new position, in case\r\n * value has changed.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ClockHand.prototype.updateValue = function () {\n this.value = this.value;\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n ClockHand.prototype.processConfig = function (config) {\n if (config) {\n // Connect clock hands with axes\n if ($type.hasValue(config.axis) && $type.isString(config.axis) && this.map.hasKey(config.axis)) {\n config.axis = this.map.getKey(config.axis);\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return ClockHand;\n}(Container);\nexport { ClockHand };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ClockHand\"] = ClockHand;\n//# sourceMappingURL=ClockHand.js.map","/**\r\n * Module for building Gauge charts.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { RadarChart, RadarChartDataItem } from \"./RadarChart\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { ClockHand } from \"../elements/ClockHand\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[GaugeChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar GaugeChartDataItem = /** @class */function (_super) {\n __extends(GaugeChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function GaugeChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"GaugeChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return GaugeChartDataItem;\n}(RadarChartDataItem);\nexport { GaugeChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Gauge chart.\r\n *\r\n * @see {@link IGaugeChartEvents} for a list of available Events\r\n * @see {@link IGaugeChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/gauge-chart/} for documentation\r\n * @important\r\n */\nvar GaugeChart = /** @class */function (_super) {\n __extends(GaugeChart, _super);\n /**\r\n * Constructor\r\n */\n function GaugeChart() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"GaugeChart\";\n _this.startAngle = 180;\n _this.endAngle = 360;\n _this.hands = new ListTemplate(new ClockHand());\n _this.hands.events.on(\"inserted\", _this.processHand, _this, false);\n _this._disposers.push(new ListDisposer(_this.hands));\n _this._disposers.push(_this.hands.template);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n GaugeChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Gauge chart\");\n }\n };\n /**\r\n * Decorates a [[ClockHand]] when it is added to the chart.\r\n *\r\n * @param event Event\r\n */\n GaugeChart.prototype.processHand = function (event) {\n var hand = event.newValue;\n if (!hand.axis) {\n hand.axis = this.xAxes.getIndex(0);\n }\n };\n /**\r\n * This function is used to sort element's JSON config properties, so that\r\n * some properties that absolutely need to be processed last, can be put at\r\n * the end.\r\n *\r\n * @ignore Exclude from docs\r\n * @param a Element 1\r\n * @param b Element 2\r\n * @return Sorting number\r\n */\n GaugeChart.prototype.configOrder = function (a, b) {\n if (a == b) {\n return 0;\n }\n // Must come last\n else if (a == \"hands\") {\n return 1;\n } else if (b == \"hands\") {\n return -1;\n } else {\n return _super.prototype.configOrder.call(this, a, b);\n }\n };\n return GaugeChart;\n}(RadarChart);\nexport { GaugeChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"GaugeChart\"] = GaugeChart;\n//# sourceMappingURL=GaugeChart.js.map","/**\r\n * Defines Percent Chart Series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Series, SeriesDataItem } from \"./Series\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { Label } from \"../../core/elements/Label\";\nimport { Color } from \"../../core/utils/Color\";\nimport { Tick } from \"../elements/Tick\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Container } from \"../../core/Container\";\nimport { ColorSet } from \"../../core/utils/ColorSet\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $ease from \"../../core/utils/Ease\";\nimport * as $type from \"../../core/utils/Type\";\nimport { Disposer } from \"../../core/utils/Disposer\";\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo: sequenced?\n/**\r\n * Defines a [[DataItem]] for [[PercentSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PercentSeriesDataItem = /** @class */function (_super) {\n __extends(PercentSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PercentSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PercentSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Adds an `id` attribute the the slice element and returns its id.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PercentSeriesDataItem.prototype.uidAttr = function () {\n return this.slice.uidAttr();\n };\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\n PercentSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\n if (!fields) {\n fields = [\"value\"];\n }\n return _super.prototype.hide.call(this, duration, delay, 0, fields);\n };\n /**\r\n * Sets visibility of the Data Item.\r\n *\r\n * @param value Data Item\r\n */\n PercentSeriesDataItem.prototype.setVisibility = function (value, noChangeValues) {\n if (!noChangeValues) {\n if (value) {\n this.setWorkingValue(\"value\", this.values[\"value\"].value, 0, 0);\n } else {\n this.setWorkingValue(\"value\", 0, 0, 0);\n }\n }\n _super.prototype.setVisibility.call(this, value, noChangeValues);\n };\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\n PercentSeriesDataItem.prototype.show = function (duration, delay, fields) {\n if (!fields) {\n fields = [\"value\"];\n }\n return _super.prototype.show.call(this, duration, delay, fields);\n };\n Object.defineProperty(PercentSeriesDataItem.prototype, \"category\", {\n /**\r\n * @return Category\r\n */\n get: function () {\n return this.properties.category;\n },\n /**\r\n * Category.\r\n *\r\n * @param value Category\r\n */\n set: function (value) {\n this.setProperty(\"category\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates a marker used in the legend for this slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Marker container\r\n */\n PercentSeriesDataItem.prototype.createLegendMarker = function (marker) {\n this.component.createLegendMarker(marker, this);\n };\n Object.defineProperty(PercentSeriesDataItem.prototype, \"legendDataItem\", {\n /**\r\n * @return Legend data item\r\n */\n get: function () {\n return this._legendDataItem;\n },\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\n set: function (value) {\n this._legendDataItem = value;\n if (value.label) {\n value.label.dataItem = this;\n }\n if (value.valueLabel) {\n value.valueLabel.dataItem = this;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeriesDataItem.prototype, \"tick\", {\n /**\r\n * A Tick element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Tick element\r\n */\n get: function () {\n var _this = this;\n if (!this._tick) {\n var tick_1 = this.component.ticks.create();\n this._tick = tick_1;\n this.addSprite(tick_1);\n this._disposers.push(tick_1);\n tick_1.parent = this.component.ticksContainer;\n this._disposers.push(new Disposer(function () {\n if (_this.component) {\n _this.component.ticks.removeValue(tick_1);\n }\n }));\n tick_1.visible = this.visible;\n }\n return this._tick;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeriesDataItem.prototype, \"label\", {\n /**\r\n * A Label element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Label element\r\n */\n get: function () {\n var _this = this;\n if (!this._label) {\n var label_1 = this.component.labels.create();\n this.addSprite(label_1);\n this._label = label_1;\n this._disposers.push(label_1);\n label_1.parent = this.component.labelsContainer;\n this._disposers.push(new Disposer(function () {\n if (_this.component) {\n _this.component.labels.removeValue(label_1);\n }\n }));\n label_1.visible = this.visible;\n }\n return this._label;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeriesDataItem.prototype, \"slice\", {\n /**\r\n * An element, related to this data item. (slice)\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\n get: function () {\n var _this = this;\n if (!this._slice) {\n var component_1 = this.component;\n var slice_1 = component_1.slices.create();\n this.addSprite(slice_1);\n this._slice = slice_1;\n this._disposers.push(slice_1);\n slice_1.parent = component_1.slicesContainer;\n this._disposers.push(new Disposer(function () {\n component_1.slices.removeValue(slice_1);\n }));\n slice_1.visible = this.visible;\n // Apply accessibility\n if (component_1.itemsFocusable()) {\n if (!$type.hasValue(this.component.role)) {\n this.component.role = \"menu\";\n }\n if (!$type.hasValue(slice_1.role)) {\n slice_1.role = \"menuitem\";\n }\n slice_1.focusable = true;\n } else {\n if (!$type.hasValue(this.component.role)) {\n this.component.role = \"list\";\n }\n if (!$type.hasValue(slice_1.role)) {\n slice_1.role = \"listitem\";\n }\n slice_1.focusable = false;\n }\n // Apply screen reader label\n if (slice_1.focusable) {\n slice_1.events.on(\"focus\", function (ev) {\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\n }, undefined, false);\n slice_1.events.on(\"blur\", function (ev) {\n slice_1.readerTitle = \"\";\n }, undefined, false);\n }\n if (slice_1.hoverable) {\n slice_1.events.on(\"over\", function (ev) {\n slice_1.readerTitle = component_1.populateString(component_1.itemReaderText, _this);\n }, undefined, false);\n slice_1.events.on(\"out\", function (ev) {\n slice_1.readerTitle = \"\";\n }, undefined, false);\n }\n }\n return this._slice;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeriesDataItem.prototype, \"hiddenInLegend\", {\n /**\r\n * @return Disabled in legend?\r\n */\n get: function () {\n return this.properties.hiddenInLegend;\n },\n /**\r\n * Should dataItem (slice) be hidden in legend?\r\n *\r\n * @param value Visible in legend?\r\n */\n set: function (value) {\n this.setProperty(\"hiddenInLegend\", value);\n },\n enumerable: true,\n configurable: true\n });\n return PercentSeriesDataItem;\n}(SeriesDataItem);\nexport { PercentSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[PercentSeries]] which is a base class for [[PieSeries]],\r\n * [[FunnelSeries]], and [[PyramidSeries]].\r\n *\r\n * @see {@link IPercentSeriesEvents} for a list of available Events\r\n * @see {@link IPercentSeriesAdapters} for a list of available Adapters\r\n */\nvar PercentSeries = /** @class */function (_super) {\n __extends(PercentSeries, _super);\n /**\r\n * Constructor\r\n */\n function PercentSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"PercentSeries\";\n _this._addAllDataItems = false;\n _this.colors = new ColorSet();\n _this.colors.step = 1;\n _this.isMeasured = true;\n _this.calculatePercent = true;\n var slicesContainer = _this.createChild(Container);\n slicesContainer.shouldClone = false;\n slicesContainer.isMeasured = false;\n _this.slicesContainer = slicesContainer;\n var ticksContainer = _this.createChild(Container);\n ticksContainer.shouldClone = false;\n ticksContainer.isMeasured = false;\n ticksContainer.layout = \"none\";\n _this.ticksContainer = ticksContainer;\n var labelsContainer = _this.createChild(Container);\n labelsContainer.shouldClone = false;\n labelsContainer.isMeasured = false;\n labelsContainer.layout = \"none\";\n _this.labelsContainer = labelsContainer;\n _this.alignLabels = false;\n _this.bulletsContainer.toFront();\n // Make all slices focusable\n _this.skipFocusThreshold = 50;\n var defaultState = _this.defaultState;\n defaultState.transitionEasing = $ease.sinOut;\n // Accessibility\n _this.itemReaderText = \"{category}: {value.percent.formatNumber('#.#')}%\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creates a slice element.\r\n *\r\n * @return Slice\r\n */\n PercentSeries.prototype.createSlice = function () {\n return new Sprite();\n };\n /**\r\n * Creates a tick element.\r\n *\r\n * @return Tick\r\n */\n PercentSeries.prototype.createTick = function () {\n return new Tick();\n };\n /**\r\n * Sreates label element.\r\n *\r\n * @return label\r\n */\n PercentSeries.prototype.createLabel = function () {\n return new Label();\n };\n Object.defineProperty(PercentSeries.prototype, \"slices\", {\n /**\r\n * A list of slice elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the slices. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.slices.template.stroke = am4core.color(\"#fff\");\r\n * series.slices.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"slices\": {\r\n * \"stroke\": \"#fff\",\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Slices\r\n */\n get: function () {\n if (!this._slices) {\n var slice = this.createSlice();\n slice.applyOnClones = true;\n this._disposers.push(slice);\n this.initSlice(slice);\n this._slices = new ListTemplate(slice);\n this._disposers.push(new ListDisposer(this._slices));\n }\n return this._slices;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeries.prototype, \"ticks\", {\n /**\r\n * A list of tick elements for the series. Ticks connect slice to its label.\r\n *\r\n * Use its `template` to configure look and behavior of the ticks. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JavaScript\r\n * series.ticks.template.strokeWidth = 2;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"ticks\": {\r\n * \"strokeWidth\": 2\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Ticks\r\n */\n get: function () {\n if (!this._ticks) {\n var tick = this.createTick();\n tick.applyOnClones = true;\n this._disposers.push(tick);\n this.initTick(tick);\n this._ticks = new ListTemplate(tick);\n this._disposers.push(new ListDisposer(this._ticks));\n }\n return this._ticks;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeries.prototype, \"labels\", {\n /**\r\n * A list of slice label elements for the series.\r\n *\r\n * Use its `template` to configure look and behavior of the labels. E.g.:\r\n *\r\n * ```TypeScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JavaScript\r\n * series.labels.template.fill = am4core.color(\"#c00\");\r\n * series.labels.template.fontSize = 20;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"labels\": {\r\n * \"stroke\": \"#c00\",\r\n * \"fontSize\": 20\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/list-templates/} for more information about list templates\r\n * @return Labels\r\n */\n get: function () {\n if (!this._labels) {\n var label = this.createLabel();\n label.applyOnClones = true;\n this._disposers.push(label);\n this.initLabel(label);\n this._labels = new ListTemplate(label);\n this._disposers.push(new ListDisposer(this._labels));\n }\n return this._labels;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n PercentSeries.prototype.createDataItem = function () {\n return new PercentSeriesDataItem();\n };\n /**\r\n * Creates and returns a new slice element.\r\n *\r\n * @param sliceType Type of the slice element\r\n * @return Slice\r\n */\n PercentSeries.prototype.initSlice = function (slice) {};\n PercentSeries.prototype.initLabel = function (label) {\n label.text = \"{category}: {value.percent.formatNumber('#.0')}%\";\n label.isMeasured = false;\n label.padding(5, 5, 5, 5);\n };\n PercentSeries.prototype.initTick = function (label) {};\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PercentSeries.prototype.validateDataItems = function () {\n this.colors.reset();\n if (this.patterns) {\n this.patterns.reset();\n }\n _super.prototype.validateDataItems.call(this);\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n PercentSeries.prototype.validateDataElement = function (dataItem) {\n var slice = dataItem.slice;\n if (slice) {\n if (slice.fill == undefined) {\n if (this.patterns) {\n if (!$type.hasValue(slice.stroke)) {\n slice.stroke = this.colors.next();\n }\n slice.fill = this.patterns.next();\n if ($type.hasValue(slice.fillOpacity)) {\n slice.fill.backgroundOpacity = slice.fillOpacity;\n }\n if (slice.stroke instanceof Color) {\n slice.fill.stroke = slice.stroke;\n slice.fill.fill = slice.stroke;\n }\n } else {\n slice.fill = this.colors.next();\n }\n } else {\n this.colors.currentStep += this.colors.step;\n }\n if (slice.stroke == undefined) {\n slice.stroke = slice.fill;\n }\n }\n // do this at the end, otherwise bullets won't be positioned properly\n _super.prototype.validateDataElement.call(this, dataItem);\n if (slice) {\n dataItem.bullets.each(function (key, bullet) {\n if (bullet.fill == undefined) {\n bullet.fill = slice.fill;\n }\n if (bullet.stroke == undefined) {\n bullet.stroke = slice.stroke;\n }\n });\n }\n this.updateLegendValue(dataItem);\n };\n /**\r\n * Validates (processes) data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PercentSeries.prototype.validateData = function () {\n _super.prototype.validateData.call(this);\n if (this.chart) {\n this.chart.feedLegend();\n }\n };\n /**\r\n * Arranges slice labels according to position settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItems Data items\r\n */\n PercentSeries.prototype.arrangeLabels = function (dataItems) {\n for (var i = 0, len = dataItems.length; i < len; i++) {\n var dataItem = dataItems[i];\n var label = dataItem.label;\n if (label) {\n if (label.invalid) {\n label.validate();\n }\n var lh = label.measuredHeight;\n if (!label.visible) {\n lh = 0;\n }\n if (label.pixelY - lh / 2 < -this.maxHeight / 2) {\n label.y = -this.maxHeight / 2 + lh / 2;\n }\n var nextLabel = this.getNextLabel(i + 1, dataItems);\n var bottom = label.pixelY + lh;\n if (nextLabel) {\n if (nextLabel.y < bottom) {\n nextLabel.y = bottom;\n }\n }\n }\n }\n };\n PercentSeries.prototype.arrangeLabels2 = function (dataItems) {\n var previousTop = this.maxHeight / 2;\n for (var i = dataItems.length - 1; i >= 0; i--) {\n var dataItem = dataItems[i];\n var label = dataItem.label;\n if (label) {\n if (label.invalid) {\n label.validate();\n }\n var lh = label.measuredHeight;\n if (!label.visible) {\n lh = 0;\n }\n if (i == dataItems.length - 1) {\n previousTop += lh / 2;\n }\n if (label.pixelY + lh > previousTop) {\n label.y = previousTop - lh;\n previousTop = label.y;\n }\n }\n }\n };\n /**\r\n * Returns the next label according to `index`.\r\n *\r\n * @param index Current index\r\n * @param dataItems Data items\r\n * @return Label element\r\n */\n PercentSeries.prototype.getNextLabel = function (index, dataItems) {\n if (dataItems.length >= index) {\n var nextDataItem = dataItems[index];\n if (nextDataItem) {\n if (nextDataItem.label) {\n if (nextDataItem.visible) {\n return nextDataItem.label;\n } else {\n return this.getNextLabel(index + 1, dataItems);\n }\n } else {\n return this.getNextLabel(index + 1, dataItems);\n }\n }\n }\n };\n Object.defineProperty(PercentSeries.prototype, \"colors\", {\n /**\r\n * @return Color set\r\n */\n get: function () {\n return this.getPropertyValue(\"colors\");\n },\n /**\r\n * A color set to be used for slices.\r\n *\r\n * For each new subsequent slice, the chart will assign the next color in\r\n * this set.\r\n *\r\n * @param value Color set\r\n */\n set: function (value) {\n this.setPropertyValue(\"colors\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PercentSeries.prototype, \"patterns\", {\n /**\r\n * @return Pattern set\r\n */\n get: function () {\n return this.getPropertyValue(\"patterns\");\n },\n /**\r\n * A [[PatternSet]] to use when creating patterned fills for slices.\r\n *\r\n * @since 4.7.5\r\n * @param value Pattern set\r\n */\n set: function (value) {\n this.setPropertyValue(\"patterns\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Binds related legend data item's visual settings to this series' visual\r\n * settings.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Container\r\n * @param dataItem Data item\r\n */\n PercentSeries.prototype.createLegendMarker = function (marker, dataItem) {\n $iter.each(marker.children.iterator(), function (child) {\n var slice = dataItem.slice;\n child.defaultState.properties.fill = slice.fill;\n child.defaultState.properties.stroke = slice.stroke;\n child.defaultState.properties.fillOpacity = slice.fillOpacity;\n child.defaultState.properties.strokeOpacity = slice.strokeOpacity;\n child.fill = slice.fill;\n child.stroke = slice.stroke;\n child.fillOpacity = slice.fillOpacity;\n child.strokeOpacity = slice.strokeOpacity;\n if (child.fill == undefined) {\n child.__disabled = true;\n }\n var legendDataItem = marker.dataItem;\n legendDataItem.color = slice.fill;\n legendDataItem.colorOrig = slice.fill;\n child.addDisposer(slice.events.on(\"propertychanged\", function (ev) {\n if (ev.property == \"fill\") {\n child.__disabled = false;\n if (!child.isActive) {\n child.fill = slice.fill;\n }\n child.defaultState.properties.fill = slice.fill;\n legendDataItem.color = slice.fill;\n legendDataItem.colorOrig = slice.fill;\n }\n if (ev.property == \"stroke\") {\n if (!child.isActive) {\n child.stroke = slice.stroke;\n }\n child.defaultState.properties.stroke = slice.stroke;\n }\n }, undefined, false));\n });\n };\n /**\r\n * Repositions bullets when slice's size changes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n PercentSeries.prototype.handleSliceScale = function (event) {\n var _this = this;\n var slice = event.target;\n var dataItem = slice.dataItem;\n if (dataItem && dataItem.bullets) {\n $iter.each(dataItem.bullets.iterator(), function (a) {\n var value = a[1];\n _this.positionBullet(value);\n });\n }\n };\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n PercentSeries.prototype.handleSliceMove = function (event) {};\n /**\r\n * Copies all properties from another instance of [[PercentSeries]].\r\n *\r\n * @param source Source series\r\n */\n PercentSeries.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.slices.template.copyFrom(source.slices.template);\n this.labels.template.copyFrom(source.labels.template);\n this.ticks.template.copyFrom(source.ticks.template);\n this.colors = source.colors.clone();\n };\n Object.defineProperty(PercentSeries.prototype, \"alignLabels\", {\n /**\r\n * @return Align labels?\r\n */\n get: function () {\n return this.getPropertyValue(\"alignLabels\");\n },\n /**\r\n * Align labels into nice vertical columns?\r\n *\r\n * This will ensure that labels never overlap with each other.\r\n *\r\n * Arranging labels into columns makes them more readble, and better user\r\n * experience.\r\n *\r\n * If set to `false` labels will be positioned at `label.radius` distance,\r\n * and may, in some cases, overlap.\r\n *\r\n * @default true\r\n * @param value Align labels?\r\n */\n set: function (value) {\n this.setAlignLabels(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n PercentSeries.prototype.setAlignLabels = function (value) {\n this.setPropertyValue(\"alignLabels\", value, true);\n };\n Object.defineProperty(PercentSeries.prototype, \"ignoreZeroValues\", {\n /**\r\n * @return Ignore zero values\r\n */\n get: function () {\n return this.getPropertyValue(\"ignoreZeroValues\");\n },\n /**\r\n * If set to `true` the chart will not show slices with zero values.\r\n *\r\n * @default false\r\n * @since 4.7.9\r\n * @param value Ignore zero values\r\n */\n set: function (value) {\n this.setPropertyValue(\"ignoreZeroValues\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates corresponding legend data item with current values.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n PercentSeries.prototype.updateLegendValue = function (dataItem) {\n if (dataItem) {\n var legendDataItem = dataItem.legendDataItem;\n var legendSettings = dataItem.legendSettings;\n if (legendDataItem && legendSettings) {\n if (legendSettings) {\n if (legendSettings.labelText) {\n legendDataItem.label.text = legendSettings.labelText;\n }\n if (legendSettings.itemLabelText) {\n legendDataItem.label.text = legendSettings.itemLabelText;\n }\n if (legendSettings.valueText) {\n legendDataItem.valueLabel.text = legendSettings.valueText;\n }\n if (legendSettings.itemValueText) {\n legendDataItem.valueLabel.text = legendSettings.itemValueText;\n }\n }\n }\n }\n };\n return PercentSeries;\n}(Series);\nexport { PercentSeries };\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PercentSeries\"] = PercentSeries;\nregistry.registeredClasses[\"PercentSeriesDataItem\"] = PercentSeriesDataItem;\n/**\r\n * Add default responsive rules\r\n */\n/**\r\n * Disable labels and ticks.\r\n */\ndefaultRules.push({\n relevant: ResponsiveBreakpoints.maybeXS,\n state: function (target, stateId) {\n if (target instanceof PercentSeries) {\n var state = target.states.create(stateId);\n var labelState = target.labels.template.states.create(stateId);\n labelState.properties.disabled = true;\n var tickState = target.ticks.template.states.create(stateId);\n tickState.properties.disabled = true;\n return state;\n }\n return null;\n }\n});\n//# sourceMappingURL=PercentSeries.js.map","/**\r\n * Percent chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { SerialChart, SerialChartDataItem } from \"./SerialChart\";\nimport { PercentSeries } from \"../series/PercentSeries\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[PercentChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PercentChartDataItem = /** @class */function (_super) {\n __extends(PercentChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PercentChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PercentChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return PercentChartDataItem;\n}(SerialChartDataItem);\nexport { PercentChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This is a base class for \"percent-based\" chart types like Pie and Funnel.\r\n *\r\n * @see {@link IPercentChartEvents} for a list of available Events\r\n * @see {@link IPercentChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for Pie chart documentation\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for Sliced chart documentation\r\n */\nvar PercentChart = /** @class */function (_super) {\n __extends(PercentChart, _super);\n /**\r\n * Constructor\r\n */\n function PercentChart() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"PercentChart\";\n _this.align = \"none\";\n _this.valign = \"none\";\n // so that the chart is always drawn, even the legend wants all the space\n _this.chartContainer.minHeight = 50;\n _this.chartContainer.minWidth = 50;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)validates chart data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PercentChart.prototype.validateData = function () {\n _super.prototype.validateData.call(this);\n this.feedLegend();\n };\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\n PercentChart.prototype.feedLegend = function () {\n var legend = this.legend;\n if (legend) {\n var legendData_1 = [];\n $iter.each(this.series.iterator(), function (series) {\n if (!series.hiddenInLegend) {\n $iter.each(series.dataItems.iterator(), function (dataItem) {\n if (!dataItem.hiddenInLegend) {\n legendData_1.push(dataItem);\n if (!dataItem.legendSettings) {\n dataItem.legendSettings = series.legendSettings;\n }\n }\n });\n }\n });\n legend.data = legendData_1;\n legend.dataFields.name = \"category\";\n }\n };\n /**\r\n * Creates a new [[PercentSeries]].\r\n *\r\n * @return New series\r\n */\n PercentChart.prototype.createSeries = function () {\n return new PercentSeries();\n };\n /**\r\n * @ignore\r\n */\n PercentChart.prototype.setLegend = function (legend) {\n _super.prototype.setLegend.call(this, legend);\n if (legend) {\n legend.labels.template.text = \"{category}\";\n legend.valueLabels.template.text = \"{value.percent.formatNumber('#.0')}%\";\n legend.itemContainers.template.events.on(\"over\", function (event) {\n var percentSeriesDataItem = event.target.dataItem.dataContext;\n if (percentSeriesDataItem.visible && !percentSeriesDataItem.isHiding) {\n var slice = percentSeriesDataItem.slice;\n slice.dispatchImmediately(\"over\");\n slice.isHover = true;\n slice.interactions.isRealHover = true;\n }\n });\n legend.itemContainers.template.events.on(\"out\", function (event) {\n var percentSeriesDataItem = event.target.dataItem.dataContext;\n var slice = percentSeriesDataItem.slice;\n slice.dispatchImmediately(\"out\");\n slice.isHover = false;\n });\n }\n };\n return PercentChart;\n}(SerialChart);\nexport { PercentChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @hidden\r\n */\nregistry.registeredClasses[\"PercentChart\"] = PercentChart;\nregistry.registeredClasses[\"PercentChartDataItem\"] = PercentChartDataItem;\n//# sourceMappingURL=PercentChart.js.map","/**\r\n * Pie tick module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Tick } from \"../elements/Tick\";\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws an tick line for a pie slice connecting it to a related label.\r\n *\r\n * @see {@link IPieTickEvents} for a list of available events\r\n * @see {@link IPieTickAdapters} for a list of available Adapters\r\n */\nvar PieTick = /** @class */function (_super) {\n __extends(PieTick, _super);\n /**\r\n * Constructor\r\n */\n function PieTick() {\n var _this = _super.call(this) || this;\n /**\r\n * A label element this tick is attached to.\r\n */\n _this._label = new MutableValueDisposer();\n /**\r\n * A slice element this tick is attached to.\r\n */\n _this._slice = new MutableValueDisposer();\n _this.className = \"PieTick\";\n _this.element = _this.paper.add(\"polyline\");\n _this._disposers.push(_this._label);\n _this._disposers.push(_this._slice);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PieTick.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var slice = this.slice;\n var label = this.label;\n var series = slice.dataItem.component;\n if (slice && slice.radius > 0 && label && label.text) {\n var x0 = slice.dx + slice.slice.dx + slice.pixelX + slice.ix * slice.radius * slice.scale;\n var y0 = slice.dy + slice.slice.dy + slice.pixelY + slice.iy * slice.radiusY * slice.scale;\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n if (series.alignLabels) {\n x1 = label.pixelX - this.length;\n y1 = label.pixelY;\n x2 = label.pixelX;\n y2 = y1;\n if (label.horizontalCenter == \"right\") {\n x1 += 2 * this.length;\n x2 = x1 - this.length;\n }\n } else {\n var r = label.pixelRadius(slice.radius);\n x1 = x0 + r * slice.ix;\n y1 = y0 + r * slice.iy;\n x2 = x1;\n y2 = y1;\n }\n this.element.attr({\n \"points\": [x0, y0, x1, y1, x2, y2]\n });\n }\n };\n Object.defineProperty(PieTick.prototype, \"slice\", {\n /**\r\n * @return Slice\r\n */\n get: function () {\n return this._slice.get();\n },\n /**\r\n * Slice element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\n set: function (slice) {\n this._slice.set(slice, new MultiDisposer([slice.events.on(\"transformed\", this.invalidate, this), slice.events.on(\"validated\", this.invalidate, this)]));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieTick.prototype, \"label\", {\n /**\r\n * @return Label\r\n */\n get: function () {\n return this._label.get();\n },\n /**\r\n * Label element tick is attached to.\r\n *\r\n * @param label Label\r\n */\n set: function (label) {\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\n },\n enumerable: true,\n configurable: true\n });\n return PieTick;\n}(Tick);\nexport { PieTick };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PieTick\"] = PieTick;\n//# sourceMappingURL=PieTick.js.map","/**\r\n * Defines Pie Chart Series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\nimport { Slice } from \"../../core/elements/Slice\";\n//import { Slice3D } from \"../../core/elements/3D/Slice3D\";\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\nimport { PieTick } from \"../elements/PieTick\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport { Percent, percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo: sequenced?\n/**\r\n * Defines a [[DataItem]] for [[PieSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PieSeriesDataItem = /** @class */function (_super) {\n __extends(PieSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PieSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PieSeriesDataItem\";\n _this.values.radiusValue = {};\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(PieSeriesDataItem.prototype, \"radiusValue\", {\n /**\r\n * @return Radius\r\n */\n get: function () {\n return this.values.radiusValue.value;\n },\n /**\r\n * Slice's radius, if other than default.\r\n *\r\n * @param value Radius\r\n */\n set: function (value) {\n this.setValue(\"radiusValue\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Hide the data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param toValue Target value for animation\r\n * @param fields Fields to animate while hiding\r\n */\n PieSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\n return _super.prototype.hide.call(this, duration, delay, 0, [\"value\", \"radiusValue\"]);\n };\n /**\r\n * Show hidden data item (and corresponding visual elements).\r\n *\r\n * @param duration Duration (ms)\r\n * @param delay Delay hiding (ms)\r\n * @param fields Fields to animate while hiding\r\n */\n PieSeriesDataItem.prototype.show = function (duration, delay, fields) {\n return _super.prototype.show.call(this, duration, delay, [\"value\", \"radiusValue\"]);\n };\n return PieSeriesDataItem;\n}(PercentSeriesDataItem);\nexport { PieSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a slice series on a Pie chart.\r\n *\r\n * @see {@link IPieSeriesEvents} for a list of available Events\r\n * @see {@link IPieSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar PieSeries = /** @class */function (_super) {\n __extends(PieSeries, _super);\n /**\r\n * Constructor\r\n */\n function PieSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"PieSeries\";\n _this.alignLabels = true;\n //this.startAngle = -90;\n //this.endAngle = 270;\n _this.layout = \"none\";\n _this.labels.template.radius = percent(5);\n _this.addDisposer(_this.labels.template.events.on(\"enabled\", _this.invalidate, _this, false));\n _this.applyTheme();\n return _this;\n }\n /**\r\n * creates slice\r\n */\n PieSeries.prototype.createSlice = function () {\n return new Slice();\n };\n /**\r\n * creates tick\r\n */\n PieSeries.prototype.createTick = function () {\n return new PieTick();\n };\n /**\r\n * creates label\r\n */\n PieSeries.prototype.createLabel = function () {\n return new AxisLabelCircular();\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n PieSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Pie Slice Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n PieSeries.prototype.createDataItem = function () {\n return new PieSeriesDataItem();\n };\n /**\r\n * Inits slice.\r\n *\r\n * @param slice to init\r\n */\n PieSeries.prototype.initSlice = function (slice) {\n slice.isMeasured = false;\n slice.defaultState.properties.scale = 1;\n slice.observe(\"scale\", this.handleSliceScale, this);\n slice.observe([\"dx\", \"dy\", \"x\", \"y\", \"shiftRadius\"], this.handleSliceMove, this);\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#')}% ({value.value})\";\n var hoverState = slice.states.create(\"hover\");\n hoverState.properties.scale = 1.05;\n var defaultState = slice.defaultState;\n defaultState.properties.shiftRadius = 0;\n slice.togglable = true;\n slice.events.on(\"toggled\", function (event) {\n event.target.hideTooltip();\n // The following takes care of removing hover on subsequent click of\n // a slice\n if (event.target.interactions.lastHitPointer && event.target.interactions.lastHitPointer.touch && !event.target.isActive) {\n event.target.isHover = false;\n }\n });\n var activeState = slice.states.create(\"active\");\n activeState.properties.shiftRadius = 0.10;\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PieSeries.prototype.validate = function () {\n this._leftItems = [];\n this._rightItems = [];\n this._currentStartAngle = this.startAngle;\n this._arcRect = $math.getArcRect(this.startAngle, this.endAngle);\n this._maxRadiusPercent = 0;\n for (var i = this.startIndex; i < this.endIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n var radiusValuePercent = dataItem.values.radiusValue.percent;\n if (radiusValuePercent > this._maxRadiusPercent) {\n this._maxRadiusPercent = radiusValuePercent;\n }\n }\n _super.prototype.validate.call(this);\n if (this.alignLabels) {\n if (this.startAngle > this.endAngle) {\n this._rightItems.reverse();\n } else {\n this._leftItems.reverse();\n }\n this._rightItems.sort(function (a, b) {\n var aAngle = (a.slice.middleAngle + 360) % 360;\n var bAngle = (b.slice.middleAngle + 360) % 360;\n if (aAngle > 270) {\n aAngle -= 360;\n }\n if (bAngle > 270) {\n bAngle -= 360;\n }\n if (aAngle < bAngle) {\n return -1;\n } else if (aAngle > bAngle) {\n return 1;\n } else {\n return 0;\n }\n });\n this._leftItems.sort(function (a, b) {\n var aAngle = (a.slice.middleAngle + 360) % 360;\n var bAngle = (b.slice.middleAngle + 360) % 360;\n if (aAngle < bAngle) {\n return 1;\n } else if (aAngle > bAngle) {\n return -1;\n } else {\n return 0;\n }\n });\n this.arrangeLabels(this._rightItems);\n this.arrangeLabels2(this._rightItems);\n this.arrangeLabels(this._leftItems);\n this.arrangeLabels2(this._leftItems);\n }\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n PieSeries.prototype.validateDataElement = function (dataItem) {\n if (this.pixelRadius > 0) {\n if (this.ignoreZeroValues && (dataItem.value == 0 || dataItem.value == null)) {\n dataItem.__disabled = true;\n } else {\n dataItem.__disabled = false;\n }\n // SLICE\n var slice = dataItem.slice;\n slice.radius = this.pixelRadius;\n if ($type.isNumber(dataItem.radiusValue)) {\n slice.radius = this.pixelInnerRadius + (this.pixelRadius - this.pixelInnerRadius) * dataItem.values.radiusValue.percent / this._maxRadiusPercent;\n }\n if (!(slice.innerRadius instanceof Percent)) {\n slice.innerRadius = this.pixelInnerRadius;\n }\n slice.startAngle = this._currentStartAngle;\n slice.arc = Math.abs(dataItem.values.value.percent) * (this.endAngle - this.startAngle) / 100;\n // LABEL\n if (!this.labels.template.disabled) {\n var label = dataItem.label;\n var tick = dataItem.tick;\n tick.slice = slice;\n tick.label = label;\n var normalizedMiddleAngle = (slice.middleAngle + 360) % 360; // force angle to be 0 - 360;\n var point = void 0;\n if (this.alignLabels) {\n var labelRadius = label.pixelRadius(slice.radius);\n var x = tick.length + labelRadius;\n label.dx = 0;\n label.dy = 0;\n label.verticalCenter = \"middle\";\n var arcRect = this._arcRect;\n // right half\n if (normalizedMiddleAngle > 270 || normalizedMiddleAngle <= 90) {\n x += (arcRect.width + arcRect.x) * this.pixelRadius;\n label.horizontalCenter = \"left\";\n this._rightItems.push(dataItem);\n }\n // left half\n else {\n x -= arcRect.x * this.pixelRadius;\n label.horizontalCenter = \"right\";\n this._leftItems.push(dataItem);\n x *= -1;\n }\n var distance = slice.radius + tick.length + labelRadius;\n point = {\n x: x,\n y: slice.iy * distance\n };\n label.moveTo(point);\n } else {\n var depth = slice[\"depth\"];\n if (!$type.isNumber(depth)) {\n depth = 0;\n }\n label.fixPosition(slice.middleAngle, slice.radius, slice.radiusY, 0, -depth);\n }\n }\n this._currentStartAngle += slice.arc;\n // do this at the end, otherwise bullets won't be positioned properly\n _super.prototype.validateDataElement.call(this, dataItem);\n }\n };\n Object.defineProperty(PieSeries.prototype, \"radius\", {\n /**\r\n * @return Radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius for the series' slices in pixels or [[Percent]].\r\n *\r\n * @param value Radius\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"pixelRadius\", {\n /**\r\n * @return Radius\r\n * @ignore\r\n */\n get: function () {\n return this._pixelRadius;\n },\n /**\r\n * @ignore\r\n */\n set: function (value) {\n if (this._pixelRadius != value) {\n this._pixelRadius = value;\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"pixelInnerRadius\", {\n /**\r\n * @return Pixel inner radius\r\n * @ignore\r\n */\n get: function () {\n return this._pixelInnerRadius;\n },\n /**\r\n * @ignore\r\n */\n set: function (value) {\n if (this._pixelInnerRadius != value) {\n this._pixelInnerRadius = value;\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"innerRadius\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius for the series' slices in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Redo so that users can set it\r\n * @param value Radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"startAngle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n var startAngle = this.getPropertyValue(\"startAngle\");\n if ($type.isNumber(startAngle)) {\n return startAngle;\n } else {\n return this._startAngleInternal;\n }\n },\n /**\r\n * Start angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", $math.normalizeAngle(value), true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"endAngle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n var endAngle = this.getPropertyValue(\"endAngle\");\n if ($type.isNumber(endAngle)) {\n return endAngle;\n } else {\n return this._endAngleInternal;\n }\n },\n /**\r\n * End angle for the series' slices in degrees. (0-360)\r\n *\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"endAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\n PieSeries.prototype.positionBullet = function (bullet) {\n _super.prototype.positionBullet.call(this, bullet);\n var dataItem = bullet.dataItem;\n var slice = dataItem.slice;\n var locationX = bullet.locationX;\n if (!$type.isNumber(locationX)) {\n locationX = 0.5;\n }\n var locationY = bullet.locationY;\n if (!$type.isNumber(locationY)) {\n locationY = 1;\n }\n var angle = slice.startAngle + slice.arc * locationX;\n bullet.x = locationY * slice.radius * $math.cos(angle);\n bullet.y = locationY * slice.radiusY * $math.sin(angle);\n };\n /**\r\n * Repositions bullet and labels when slice moves.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n PieSeries.prototype.handleSliceMove = function (event) {\n if (!this.alignLabels) {\n var slice = event.target;\n var dataItem = slice.dataItem;\n // moving textelement, as label dx and dy are already employed for aligning\n //@labeltodo\n if (dataItem) {\n var label = dataItem.label;\n if (label) {\n label.dx = label.fdx + slice.dx + slice.pixelX;\n label.dy = label.fdy + slice.dy + slice.pixelY;\n }\n }\n }\n };\n Object.defineProperty(PieSeries.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n var chart = this.chart;\n if (chart) {\n return $math.getArcRect(chart.startAngle, chart.endAngle, this.pixelRadius);\n }\n return $math.getArcRect(this.startAngle, this.endAngle, this.pixelRadius);\n },\n enumerable: true,\n configurable: true\n });\n return PieSeries;\n}(PercentSeries);\nexport { PieSeries };\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PieSeries\"] = PieSeries;\nregistry.registeredClasses[\"PieSeriesDataItem\"] = PieSeriesDataItem;\n//# sourceMappingURL=PieSeries.js.map","/**\r\n * Pie chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport { PieSeries } from \"../series/PieSeries\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[PieChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PieChartDataItem = /** @class */function (_super) {\n __extends(PieChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PieChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PieChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return PieChartDataItem;\n}(PercentChartDataItem);\nexport { PieChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Pie chart.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.PieChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"PieChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.PieSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"PieSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"PieChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChartEvents} for a list of available Events\r\n * @see {@link IPieChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\nvar PieChart = /** @class */function (_super) {\n __extends(PieChart, _super);\n /**\r\n * Constructor\r\n */\n function PieChart() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"PieChart\";\n // Set defaults\n _this.innerRadius = 0;\n _this.radius = percent(80);\n _this.align = \"none\";\n _this.valign = \"none\";\n _this.startAngle = -90;\n _this.endAngle = 270;\n var seriesContainer = _this.seriesContainer;\n seriesContainer.isMeasured = true;\n seriesContainer.valign = \"middle\";\n seriesContainer.align = \"center\";\n seriesContainer.layout = \"absolute\";\n seriesContainer.width = undefined;\n seriesContainer.height = undefined;\n // so that the pie is always drawn, even the legend wants all the space\n _this.chartContainer.minHeight = 50;\n _this.chartContainer.minWidth = 50;\n _this.chartContainer.events.on(\"maxsizechanged\", _this.updateRadius, _this, false); // need this for the chart to change radius if legend is removed/disabled\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n PieChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Pie chart\");\n }\n };\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PieChart.prototype.validateLayout = function () {\n _super.prototype.validateLayout.call(this);\n this.updateRadius();\n };\n /**\r\n * Decorates a new [[Series]] object with required parameters when it is\r\n * added to the chart.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n PieChart.prototype.handleSeriesAdded = function (event) {\n _super.prototype.handleSeriesAdded.call(this, event);\n this._chartPixelRadius = undefined;\n this.updateSeriesAngles();\n };\n PieChart.prototype.updateSeriesAngles = function () {\n var _this = this;\n this.series.each(function (series) {\n series._startAngleInternal = _this.startAngle;\n series._endAngleInternal = _this.endAngle;\n //series.defaultState.properties.startAngle = this.startAngle;\n //series.defaultState.properties.endAngle = this.endAngle;\n });\n };\n /**\r\n * Recalculates pie's radius, based on a number of criteria.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PieChart.prototype.updateRadius = function () {\n var chartCont = this.chartContainer;\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\n var innerRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n var innerRadius = this.innerRadius;\n if (innerRadius instanceof Percent) {\n innerRect = $math.getArcRect(this.startAngle, this.endAngle, innerRadius.value);\n }\n // @todo handle this when innerRadius set in pixels (do it for radar also)\n rect = $math.getCommonRectangle([rect, innerRect]);\n var maxRadius = Math.min(chartCont.innerWidth / rect.width, chartCont.innerHeight / rect.height);\n if (!$type.isNumber(maxRadius)) {\n maxRadius = 0;\n }\n var chartRadius = $utils.relativeRadiusToValue(this.radius, maxRadius);\n var chartPixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, maxRadius);\n var seriesRadius = (chartRadius - chartPixelInnerRadius) / this.series.length;\n if (chartRadius != this._chartPixelRadius || chartPixelInnerRadius != this._chartPixelInnerRadius) {\n this._chartPixelRadius = chartRadius;\n this._chartPixelInnerRadius = chartPixelInnerRadius;\n //@todo: make it possible to set series radius in percent\n $iter.each($iter.indexed(this.series.iterator()), function (a) {\n var i = a[0];\n var series = a[1];\n var radius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.radius, chartRadius - chartPixelInnerRadius);\n var innerRadius = chartPixelInnerRadius + $utils.relativeRadiusToValue(series.innerRadius, chartRadius - chartPixelInnerRadius);\n if (!$type.isNumber(radius)) {\n radius = chartPixelInnerRadius + seriesRadius * (i + 1);\n }\n if (!$type.isNumber(innerRadius)) {\n innerRadius = chartPixelInnerRadius + seriesRadius * i;\n }\n series.pixelRadius = radius;\n series.pixelInnerRadius = innerRadius;\n });\n this.seriesContainer.definedBBox = {\n x: chartRadius * rect.x,\n y: chartRadius * rect.y,\n width: chartRadius * rect.width,\n height: chartRadius * rect.height\n };\n this.seriesContainer.invalidateLayout();\n this.bulletsContainer.x = this.seriesContainer.x;\n this.bulletsContainer.y = this.seriesContainer.y;\n }\n };\n Object.defineProperty(PieChart.prototype, \"radius\", {\n /**\r\n * @return Radius (px or relative)\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Sets radius of the pie chart.\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.radius = am4core.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"radius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 80%\r\n * @param value Radius (px or relative)\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"radius\", value, true, false, 10, false)) {\n this.invalidateLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieChart.prototype, \"innerRadius\", {\n /**\r\n * @return Relative inner radius (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Sets relative inner radius (to create a donut chart).\r\n *\r\n * Setting to a number will mean a fixed pixel radius.\r\n *\r\n * Setting to an instance of [[Percent]] will mean a relative radius to\r\n * available space.\r\n *\r\n * NOTE: it's not related to `radius`.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent(50);\r\n * ```\r\n * ```JavaScript\r\n * // Set pie chart to be at 50% of the available space\r\n * pieChart.innerRadius = am4core.percent(50);\r\n * ```\r\n * ```JSON\r\n * {\r\n * // Set pie chart to be at 50% of the available space\r\n * \"innerRadius\": \"50%\"\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @param value Relative inner radius (0-1)\r\n * @todo Setting things like `innerRadius` modifies `slice.radius` and it then looks like it is not the same value as in default state\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates a new [[PieSeries]].\r\n *\r\n * @return New series\r\n */\n PieChart.prototype.createSeries = function () {\n return new PieSeries();\n };\n Object.defineProperty(PieChart.prototype, \"startAngle\", {\n /**\r\n * @return Start angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Starting angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart begins (the left side of the first slice is drawn)\r\n * at the top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the first slice be drawn to the right.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startAngle\", value)) {\n this.updateRadius();\n this.updateSeriesAngles();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieChart.prototype, \"endAngle\", {\n /**\r\n * @return End angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * End angle of the Pie circle. (degrees)\r\n *\r\n * Normally, a pie chart ends (the right side of the last slice is drawn)\r\n * at the top center. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to change this setting.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set to those lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a Pie chart that\r\n * looks like a quarter of a circle.\r\n *\r\n * NOTE: This setting is not supported in a 3D pie chart.\r\n *\r\n * @default 270\r\n * @param value End angle (degrees)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endAngle\", value)) {\n this.updateRadius();\n this.updateSeriesAngles();\n }\n },\n enumerable: true,\n configurable: true\n });\n return PieChart;\n}(PercentChart);\nexport { PieChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PieChart\"] = PieChart;\nregistry.registeredClasses[\"PieChartDataItem\"] = PieChartDataItem;\n//# sourceMappingURL=PieChart.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { __extends } from \"tslib\";\nimport { PieSeries, PieSeriesDataItem } from \"../series/PieSeries\";\nimport { Slice3D } from \"../../core/elements/3d/Slice3D\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[PieSeries3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PieSeries3DDataItem = /** @class */function (_super) {\n __extends(PieSeries3DDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PieSeries3DDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PieSeries3DDataItem\";\n _this.values.depthValue = {};\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(PieSeries3DDataItem.prototype, \"depthValue\", {\n /**\r\n * @return Depth\r\n */\n get: function () {\n return this.values[\"depthValue\"].value;\n },\n /**\r\n * Slice depth (height).\r\n *\r\n * @param value Depth\r\n */\n set: function (value) {\n this.setValue(\"depthValue\", value);\n },\n enumerable: true,\n configurable: true\n });\n return PieSeries3DDataItem;\n}(PieSeriesDataItem);\nexport { PieSeries3DDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a slice series on a 3D pie chart.\r\n *\r\n * @see {@link IPieSeries3DEvents} for a list of available Events\r\n * @see {@link IPieSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar PieSeries3D = /** @class */function (_super) {\n __extends(PieSeries3D, _super);\n /**\r\n * Constructor\r\n */\n function PieSeries3D() {\n var _this = _super.call(this) || this;\n _this.className = \"PieSeries3D\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n PieSeries3D.prototype.createDataItem = function () {\n return new PieSeries3DDataItem();\n };\n /**\r\n * creates slice\r\n */\n PieSeries3D.prototype.createSlice = function () {\n return new Slice3D();\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n PieSeries3D.prototype.validateDataElement = function (dataItem) {\n var slice = dataItem.slice;\n var depth = this.depth;\n if (!$type.isNumber(depth)) {\n depth = this.chart.depth;\n }\n var depthPercent = dataItem.values.depthValue.percent;\n if (!$type.isNumber(depthPercent)) {\n depthPercent = 100;\n }\n slice.depth = depthPercent * depth / 100;\n var angle = this.angle;\n if (!$type.isNumber(angle)) {\n angle = this.chart.angle;\n }\n slice.angle = angle;\n _super.prototype.validateDataElement.call(this, dataItem);\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PieSeries3D.prototype.validate = function () {\n _super.prototype.validate.call(this);\n for (var i = this._workingStartIndex; i < this._workingEndIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n var slice = dataItem.slice;\n var startAngle = slice.startAngle;\n // find quarter\n //q0 || q1\n if (startAngle >= -90 && startAngle < 90) {\n slice.toFront();\n }\n //q2 || q3\n else if (startAngle >= 90) {\n slice.toBack();\n }\n }\n };\n Object.defineProperty(PieSeries3D.prototype, \"depth\", {\n /**\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth (height) of the pie slice in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"depth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries3D.prototype, \"angle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * Angle of the view point of the 3D pie. (0-360)\r\n *\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\n PieSeries3D.prototype.positionBullet = function (bullet) {\n _super.prototype.positionBullet.call(this, bullet);\n var dataItem = bullet.dataItem;\n var slice = dataItem.slice;\n bullet.y = bullet.pixelY - slice.depth;\n };\n return PieSeries3D;\n}(PieSeries);\nexport { PieSeries3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PieSeries3D\"] = PieSeries3D;\nregistry.registeredClasses[\"PieSeries3DDataItem\"] = PieSeries3DDataItem;\n//# sourceMappingURL=PieSeries3D.js.map","/**\r\n * 3D Pie chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PieChart, PieChartDataItem } from \"./PieChart\";\nimport { PieSeries3D } from \"../series/PieSeries3D\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[PieChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PieChart3DDataItem = /** @class */function (_super) {\n __extends(PieChart3DDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PieChart3DDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PieChart3DDataItem\";\n _this.applyTheme();\n return _this;\n }\n return PieChart3DDataItem;\n}(PieChartDataItem);\nexport { PieChart3DDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a 3D Pie chart.\r\n *\r\n * * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * let series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.Pie3DChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"Pie3DChart\");\r\n *\r\n * // Set data\r\n * chart.data = [{\r\n * \t\"country\": \"Lithuania\",\r\n * \t\"litres\": 501.9\r\n * }, {\r\n * \t\"country\": \"Czechia\",\r\n * \t\"litres\": 301.9\r\n * }, {\r\n * \t\"country\": \"Ireland\",\r\n * \t\"litres\": 201.1\r\n * }];\r\n *\r\n * // Create series\r\n * var series = chart.series.push(new am4charts.Pie3DSeries());\r\n * series.dataFields.value = \"litres\";\r\n * series.dataFields.category = \"country\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"Pie3DSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"value\": \"litres\",\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"Lithuania\",\r\n * \t\t\"litres\": 501.9\r\n * \t}, {\r\n * \t\t\"country\": \"Czechia\",\r\n * \t\t\"litres\": 301.9\r\n * \t}, {\r\n * \t\t\"country\": \"Ireland\",\r\n * \t\t\"litres\": 201.1\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"Pie3DChart\");\r\n * ```\r\n *\r\n * @see {@link IPieChart3DEvents} for a list of available Events\r\n * @see {@link IPieChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/pie-chart/} for documentation\r\n * @important\r\n */\nvar PieChart3D = /** @class */function (_super) {\n __extends(PieChart3D, _super);\n /**\r\n * Constructor\r\n */\n function PieChart3D() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"PieChart3D\";\n _this.depth = 20;\n _this.angle = 10;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(PieChart3D.prototype, \"depth\", {\n /**\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth of the 3D pie in pixels.\r\n *\r\n * This will determine \"height\" of the pie.\r\n *\r\n * @default 20\r\n * @param value Depth (px)\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"depth\", value)) {\n this.invalidateDataUsers();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieChart3D.prototype, \"angle\", {\n /**\r\n * @return Angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * An angle of a \"point of view\" in degrees. Possible range 0 - 90.\r\n *\r\n * @default 10\r\n * @param value Angle (degrees)\r\n */\n set: function (value) {\n value = $math.fitToRange(value, 0, 90);\n if (this.setPropertyValue(\"angle\", value)) {\n this.invalidateDataUsers();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates and returns a new Series.\r\n *\r\n * @return New series\r\n */\n PieChart3D.prototype.createSeries = function () {\n return new PieSeries3D();\n };\n return PieChart3D;\n}(PieChart);\nexport { PieChart3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PieChart3D\"] = PieChart3D;\n//# sourceMappingURL=PieChart3D.js.map","/**\r\n * Sliced chart module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PercentChart, PercentChartDataItem } from \"./PercentChart\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[SlicedChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar SlicedChartDataItem = /** @class */function (_super) {\n __extends(SlicedChartDataItem, _super);\n /**\r\n * Constructor\r\n */\n function SlicedChartDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"SlicedChartDataItem\";\n _this.applyTheme();\n return _this;\n }\n return SlicedChartDataItem;\n}(PercentChartDataItem);\nexport { SlicedChartDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Sliced chart.\r\n *\r\n * @see {@link ISlicedChartEvents} for a list of available Events\r\n * @see {@link ISlicedChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\nvar SlicedChart = /** @class */function (_super) {\n __extends(SlicedChart, _super);\n /**\r\n * Constructor\r\n */\n function SlicedChart() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"SlicedChart\";\n _this.seriesContainer.layout = \"horizontal\";\n _this.padding(15, 15, 15, 15);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n SlicedChart.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Sliced chart\");\n }\n };\n /**\r\n * (Re)validates the chart, causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SlicedChart.prototype.validate = function () {\n _super.prototype.validate.call(this);\n };\n return SlicedChart;\n}(PercentChart);\nexport { SlicedChart };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SlicedChart\"] = SlicedChart;\nregistry.registeredClasses[\"SlicedChartDataItem\"] = SlicedChartDataItem;\n//# sourceMappingURL=SlicedChart.js.map","/**\r\n * FlowDiagramNode module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { List } from \"../../core/utils/List\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $string from \"../../core/utils/String\";\nimport * as $order from \"../../core/utils/Order\";\nimport * as $number from \"../../core/utils/Number\";\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\nimport * as $object from \"../../core/utils/Object\";\nimport { LegendSettings } from \"../Legend\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a node in a Flow Diagram.\r\n *\r\n * A Flow node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[FlowLink]] elements.\r\n *\r\n * @see {@link IFlowDiagramNodeEvents} for a list of available events\r\n * @see {@link IFlowDiagramNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar FlowDiagramNode = /** @class */function (_super) {\n __extends(FlowDiagramNode, _super);\n /**\r\n * Constructor\r\n */\n function FlowDiagramNode() {\n var _this = _super.call(this) || this;\n /**\r\n * Settings for the appearance of the related legend items.\r\n */\n _this.legendSettings = new LegendSettings();\n _this.className = \"FlowDiagramNode\";\n _this.isMeasured = false;\n // TODO can this be removed ?\n new InterfaceColorSet();\n _this.draggable = true;\n _this.inert = true;\n _this.setStateOnChildren = true;\n _this.events.on(\"positionchanged\", _this.invalidateLinks, _this, false);\n _this.events.on(\"sizechanged\", _this.invalidateLinks, _this, false);\n return _this;\n //this.events.on(\"hit\", this.handleHit, this, false);\n }\n /**\r\n * @ignore\r\n */\n FlowDiagramNode.prototype.handleHit = function (event) {\n if (this.isHidden || this.isHiding) {\n this.show();\n } else {\n this.hide();\n }\n };\n /**\r\n * Shows hidden node.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\n FlowDiagramNode.prototype.show = function (duration) {\n var animation = _super.prototype.show.call(this, duration);\n this.outgoingDataItems.each(function (dataItem) {\n if (!dataItem.toNode || dataItem.toNode && !dataItem.toNode.isHidden) {\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\n dataItem.link.show();\n }\n });\n this.incomingDataItems.each(function (dataItem) {\n if (!dataItem.fromNode || dataItem.fromNode && !dataItem.fromNode.isHidden) {\n dataItem.setWorkingValue(\"value\", dataItem.getValue(\"value\"), duration);\n dataItem.link.show();\n }\n });\n return animation;\n };\n /**\r\n * Hides node.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\n FlowDiagramNode.prototype.hide = function (duration) {\n var animation = _super.prototype.hide.call(this, duration);\n this.outgoingDataItems.each(function (dataItem) {\n dataItem.setWorkingValue(\"value\", 0, duration);\n dataItem.link.hide();\n });\n this.incomingDataItems.each(function (dataItem) {\n dataItem.setWorkingValue(\"value\", 0, duration);\n dataItem.link.hide();\n });\n return animation;\n };\n /**\r\n * Marks node as invalid, for redrawal in the next update cycle.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FlowDiagramNode.prototype.validate = function () {\n if (!this.isDisposed()) {\n _super.prototype.validate.call(this);\n this.invalidateLinks();\n }\n };\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FlowDiagramNode.prototype.invalidateLinks = function () {\n var _this = this;\n this.outgoingDataItems.each(function (dataItem) {\n var link = dataItem.link;\n if (link.colorMode == \"fromNode\") {\n link.fill = link.dataItem.fromNode.color;\n }\n if (link.colorMode == \"gradient\") {\n link.fill = link.gradient;\n link.stroke = link.gradient;\n var stop_1 = link.gradient.stops.getIndex(0);\n if (stop_1) {\n stop_1.color = _this.color;\n link.gradient.validate();\n }\n }\n });\n this.incomingDataItems.each(function (dataItem) {\n var link = dataItem.link;\n if (link.colorMode == \"toNode\") {\n link.fill = link.dataItem.toNode.color;\n }\n if (link.colorMode == \"gradient\") {\n link.fill = link.gradient;\n link.stroke = link.gradient;\n var stop_2 = link.gradient.stops.getIndex(1);\n if (stop_2) {\n stop_2.color = _this.color;\n link.gradient.validate();\n }\n }\n });\n };\n Object.defineProperty(FlowDiagramNode.prototype, \"incomingDataItems\", {\n /**\r\n * List of incoming items (links).\r\n *\r\n * @readonly\r\n * @return Incoming items\r\n */\n get: function () {\n var _this = this;\n if (!this._incomingDataItems) {\n var incomingDataItems = new List();\n incomingDataItems.events.on(\"inserted\", function () {\n if (_this.chart.sortBy == \"name\") {\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) {\n return $string.order(x.fromName, y.fromName);\n });\n } else if (_this.chart.sortBy == \"value\") {\n _this._incomingSorted = $iter.sort(_this._incomingDataItems.iterator(), function (x, y) {\n return $order.reverse($number.order(x.value, y.value));\n });\n } else {\n _this._incomingSorted = _this._incomingDataItems.iterator();\n }\n }, undefined, false);\n this._incomingDataItems = incomingDataItems;\n }\n return this._incomingDataItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"outgoingDataItems\", {\n /**\r\n * List of outgoing items (links).\r\n *\r\n * @readonly\r\n * @return Outgoing items\r\n */\n get: function () {\n var _this = this;\n if (!this._outgoingDataItems) {\n var outgoingDataItems = new List();\n outgoingDataItems.events.on(\"inserted\", function () {\n if (_this.chart.sortBy == \"name\") {\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) {\n return $string.order(x.fromName, y.fromName);\n });\n } else if (_this.chart.sortBy == \"value\") {\n _this._outgoingSorted = $iter.sort(_this._outgoingDataItems.iterator(), function (x, y) {\n return $order.reverse($number.order(x.value, y.value));\n });\n } else {\n _this._outgoingSorted = _this._outgoingDataItems.iterator();\n }\n }, undefined, false);\n this._outgoingDataItems = outgoingDataItems;\n }\n return this._outgoingDataItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"name\", {\n /**\r\n * @return Name\r\n */\n get: function () {\n return this.getPropertyValue(\"name\");\n },\n /**\r\n * A name of the node.\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setPropertyValue(\"name\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"total\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.getPropertyValue(\"total\");\n },\n /**\r\n * Sum of all incoming+outgoing link values\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setPropertyValue(\"total\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"totalIncoming\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.getPropertyValue(\"totalIncoming\");\n },\n /**\r\n * Sum of all incomming link values.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setPropertyValue(\"totalIncoming\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"totalOutgoing\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.getPropertyValue(\"totalOutgoing\");\n },\n /**\r\n * Sum of all outgoing link values.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setPropertyValue(\"totalOutgoing\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramNode.prototype, \"color\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n return this.getPropertyValue(\"color\");\n },\n /**\r\n * Node's color.\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.setColorProperty(\"color\", value);\n if (this._background) {\n this._background.fill = value;\n }\n this.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n FlowDiagramNode.prototype.createLegendMarker = function (marker) {\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.removeChildren();\n var column = marker.createChild(RoundedRectangle);\n column.shouldClone = false;\n $object.copyProperties(this, column, visualProperties);\n column.stroke = this.fill;\n column.copyFrom(this);\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\n column.width = w;\n column.height = h;\n var legendDataItem = marker.dataItem;\n legendDataItem.color = column.fill;\n legendDataItem.colorOrig = column.fill;\n };\n Object.defineProperty(FlowDiagramNode.prototype, \"legendDataItem\", {\n /**\r\n * @return Data item\r\n */\n get: function () {\n return this._legendDataItem;\n },\n /**\r\n * Legend data item that corresponds to this series.\r\n *\r\n * @param value Data item\r\n */\n set: function (value) {\n this._legendDataItem = value;\n this._legendDataItem.itemContainer.deepInvalidate();\n },\n enumerable: true,\n configurable: true\n });\n return FlowDiagramNode;\n}(Container);\nexport { FlowDiagramNode };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FlowDiagramNode\"] = FlowDiagramNode;\n//# sourceMappingURL=FlowDiagramNode.js.map","/**\r\n * FlowDiagramLink module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Sprite } from \"../../core/Sprite\";\nimport { Container } from \"../../core/Container\";\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\nimport { registry } from \"../../core/Registry\";\nimport { Bullet } from \"../elements/Bullet\";\nimport { Color } from \"../../core/utils/Color\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Polyline } from \"../../core/elements/Polyline\";\nimport { Line } from \"../../core/elements/Line\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Flow Diagram.\r\n *\r\n * @see {@link IFlowDiagramLinkEvents} for a list of available events\r\n * @see {@link IFlowDiagramLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar FlowDiagramLink = /** @class */function (_super) {\n __extends(FlowDiagramLink, _super);\n /**\r\n * Constructor\r\n */\n function FlowDiagramLink() {\n var _this = _super.call(this) || this;\n _this.className = \"FlowDiagramLink\";\n var interfaceColors = new InterfaceColorSet();\n _this.maskBullets = false;\n _this.colorMode = \"fromNode\";\n _this.layout = \"none\";\n _this.isMeasured = false;\n _this.startAngle = 0;\n _this.endAngle = 0;\n _this.strokeOpacity = 0;\n // this is very important, otherwise the container will be shifted\n _this.verticalCenter = \"none\";\n _this.horizontalCenter = \"none\";\n _this.tooltipText = \"{fromName}→{toName}:{value.value}\";\n _this.tooltipLocation = 0.5;\n _this.link = _this.createChild(Sprite);\n _this.link.shouldClone = false;\n _this.link.setElement(_this.paper.add(\"path\"));\n _this.link.isMeasured = false;\n _this.fillOpacity = 0.2;\n _this.fill = interfaceColors.getFor(\"alternativeBackground\");\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Positions bullets\r\n * @ignore\r\n */\n FlowDiagramLink.prototype.positionBullets = function () {\n var _this = this;\n $iter.each(this.bullets.iterator(), function (bullet) {\n bullet.parent = _this.bulletsContainer;\n bullet.maxWidth = _this.maxWidth;\n bullet.maxHeight = _this.maxHeight;\n _this.positionBullet(bullet);\n });\n };\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsContainer\", {\n /**\r\n * Bullets container\r\n */\n get: function () {\n if (!this._bulletsContainer) {\n var bulletsContainer = this.createChild(Container);\n bulletsContainer.shouldClone = false;\n bulletsContainer.layout = \"none\";\n this._bulletsContainer = bulletsContainer;\n }\n return this._bulletsContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramLink.prototype, \"bulletsMask\", {\n /**\r\n * Bullets mask sprite\r\n */\n get: function () {\n if (!this._bulletsMask) {\n var bulletsMask = this.createChild(Sprite);\n bulletsMask.shouldClone = false;\n bulletsMask.setElement(this.paper.add(\"path\"));\n bulletsMask.isMeasured = false;\n this._bulletsMask = bulletsMask;\n }\n return this._bulletsMask;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Positions bullets at relative bullet.locationX position on the link.\r\n * @ignore\r\n */\n FlowDiagramLink.prototype.positionBullet = function (bullet) {\n var location = bullet.locationX;\n if (!$type.isNumber(location)) {\n location = bullet.locationY;\n }\n if (!$type.isNumber(location)) {\n location = 0.5;\n }\n var point = this.middleLine.positionToPoint(location);\n bullet.moveTo(point);\n var rotationField = bullet.propertyFields.rotation;\n var angle;\n if (bullet.dataItem) {\n var dataContext = bullet.dataItem.dataContext;\n angle = dataContext[rotationField];\n }\n if (!$type.isNumber(angle)) {\n angle = point.angle;\n }\n bullet.rotation = angle;\n };\n Object.defineProperty(FlowDiagramLink.prototype, \"startAngle\", {\n /**\r\n * @return Start angle\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * [startAngle description]\r\n *\r\n * @todo Description\r\n * @param value Start angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramLink.prototype, \"endAngle\", {\n /**\r\n * @return End angle\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * [endAngle description]\r\n *\r\n * @todo Description\r\n * @param value End angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"endAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramLink.prototype, \"colorMode\", {\n /**\r\n * Fill mode\r\n */\n get: function () {\n return this.getPropertyValue(\"colorMode\");\n },\n /**\r\n * Should link be filled with a solid color, color of from node, color of toNode or gradient between node colors.\r\n * Some of the links, like ChordLink does not support gradiens well.\r\n *\r\n * @param value Fill mode\r\n */\n set: function (value) {\n if (value == \"gradient\") {\n var color = this.fill;\n this.gradient.stops.clear();\n if (color instanceof Color) {\n this.gradient.addColor(color);\n this.gradient.addColor(color);\n }\n this.fill = this.gradient;\n this.stroke = this.gradient;\n }\n this.setPropertyValue(\"colorMode\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramLink.prototype, \"maskBullets\", {\n /**\r\n * @return mask bullets value\r\n */\n get: function () {\n return this.getPropertyValue(\"maskBullets\");\n },\n /**\r\n * Should link bullets be masked or not\r\n *\r\n * @param value\r\n * @default false\r\n */\n set: function (value) {\n this.setPropertyValue(\"maskBullets\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramLink.prototype, \"tooltipLocation\", {\n /**\r\n * Tooltip location value\r\n */\n get: function () {\n return this.getPropertyValue(\"tooltipLocation\");\n },\n /**\r\n * Relative location of a tooltip.\r\n * @default 0.5\r\n *\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"tooltipLocation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Adds color steps in the link gradient.\r\n *\r\n * @param value Fill option\r\n */\n FlowDiagramLink.prototype.setFill = function (value) {\n _super.prototype.setFill.call(this, value);\n var gradient = this._gradient;\n if (gradient && value instanceof Color) {\n gradient.stops.clear();\n gradient.addColor(value);\n gradient.addColor(value);\n }\n };\n /**\r\n * Updates bounding box based on element dimension settings.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FlowDiagramLink.prototype.measureElement = function () {};\n Object.defineProperty(FlowDiagramLink.prototype, \"bullets\", {\n /**\r\n * List of bullets\r\n *\r\n * @return [description]\r\n */\n get: function () {\n var _this = this;\n if (!this._bullets) {\n this._bullets = new ListTemplate(new Bullet());\n this._disposers.push(new ListDisposer(this._bullets));\n this._disposers.push(this._bullets.template);\n this._bullets.events.on(\"inserted\", function (event) {\n event.newValue.events.on(\"propertychanged\", function (event) {\n if (event.property == \"locationX\" || event.property == \"locationY\") {\n _this.positionBullet(event.target);\n }\n }, undefined, false);\n }, undefined, false);\n }\n return this._bullets;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties from another [[FlowDiagramLink]].\r\n *\r\n * @param source Source link\r\n */\n FlowDiagramLink.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.bullets.copyFrom(source.bullets);\n var middleLine = this.middleLine;\n if (middleLine) {\n if (middleLine instanceof Line && source.middleLine instanceof Line) {\n middleLine.copyFrom(source.middleLine);\n }\n if (middleLine instanceof Polyline && source.middleLine instanceof Polyline) {\n middleLine.copyFrom(source.middleLine);\n }\n }\n this.link.copyFrom(source.link);\n };\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip X (px)\r\n */\n FlowDiagramLink.prototype.getTooltipX = function () {\n if (this.middleLine) {\n return this.middleLine.positionToPoint(this.tooltipLocation).x;\n }\n };\n /**\r\n * @ignore Exclude from docs\r\n * @return Tooltip Y (px)\r\n */\n FlowDiagramLink.prototype.getTooltipY = function () {\n if (this.middleLine) {\n return this.middleLine.positionToPoint(this.tooltipLocation).y;\n }\n };\n Object.defineProperty(FlowDiagramLink.prototype, \"gradient\", {\n /**\r\n * A gradiend instance that is used to provided colored gradient fills for\r\n * the Flow link.\r\n */\n get: function () {\n if (!this._gradient) {\n this._gradient = new LinearGradient();\n }\n return this._gradient;\n },\n enumerable: true,\n configurable: true\n });\n return FlowDiagramLink;\n}(Container);\nexport { FlowDiagramLink };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FlowDiagramLink\"] = FlowDiagramLink;\n//# sourceMappingURL=FlowDiagramLink.js.map","/**\r\n * FlowDiagram module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Chart, ChartDataItem } from \"../Chart\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\nimport { Container } from \"../../core/Container\";\nimport { registry } from \"../../core/Registry\";\nimport { FlowDiagramNode } from \"../elements/FlowDiagramNode\";\nimport { FlowDiagramLink } from \"../elements/FlowDiagramLink\";\nimport { LinearGradientModifier } from \"../../core/rendering/fills/LinearGradientModifier\";\nimport { ColorSet } from \"../../core/utils/ColorSet\";\nimport { toColor, Color } from \"../../core/utils/Color\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $number from \"../../core/utils/Number\";\nimport * as $order from \"../../core/utils/Order\";\nimport { Disposer } from \"../../core/utils/Disposer\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo rearange notes after dragged\n/**\r\n * Defines a [[DataItem]] for [[FlowDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar FlowDiagramDataItem = /** @class */function (_super) {\n __extends(FlowDiagramDataItem, _super);\n /**\r\n * Constructor\r\n */\n function FlowDiagramDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"FlowDiagramDataItem\";\n _this.values.value = {};\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(FlowDiagramDataItem.prototype, \"fromName\", {\n /**\r\n * @return name\r\n */\n get: function () {\n return this.properties.fromName;\n },\n /**\r\n * Source node's name.\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setProperty(\"fromName\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramDataItem.prototype, \"toName\", {\n /**\r\n * @return name\r\n */\n get: function () {\n return this.properties.toName;\n },\n /**\r\n * Destination node's name.\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setProperty(\"toName\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramDataItem.prototype, \"color\", {\n /**\r\n * @return color\r\n */\n get: function () {\n return this.properties.color;\n },\n /**\r\n * Node color\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setProperty(\"color\", toColor(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramDataItem.prototype, \"value\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.value.value;\n },\n /**\r\n * Link's value.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"value\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagramDataItem.prototype, \"link\", {\n /**\r\n * A visual element, representing link between the source and target nodes.\r\n *\r\n * Link's actual thickness will be determined by `value` of this link and\r\n * `value` of the source node.\r\n *\r\n * @readonly\r\n * @return Link element\r\n */\n get: function () {\n var _this = this;\n if (!this._link) {\n var link_1 = this.component.links.create();\n this._link = link_1;\n this.addSprite(link_1);\n this._disposers.push(new Disposer(function () {\n if (_this.component) {\n _this.component.links.removeValue(link_1);\n }\n }));\n }\n return this._link;\n },\n enumerable: true,\n configurable: true\n });\n return FlowDiagramDataItem;\n}(ChartDataItem);\nexport { FlowDiagramDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Pie chart\r\n * @see {@link IFlowDiagramEvents} for a list of available Events\r\n * @see {@link IFlowDiagramAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar FlowDiagram = /** @class */function (_super) {\n __extends(FlowDiagram, _super);\n /**\r\n * Constructor\r\n */\n function FlowDiagram() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * A Color Set to use when applying/generating colors for each subsequent\r\n * node.\r\n */\n _this.colors = new ColorSet();\n _this.className = \"FlowDiagram\";\n _this.nodePadding = 20;\n _this.sortBy = \"none\";\n _this.sequencedInterpolation = true;\n _this.colors.step = 2;\n _this.minNodeSize = 0.02;\n var linksContainer = _this.chartContainer.createChild(Container);\n linksContainer.shouldClone = false;\n linksContainer.layout = \"none\";\n linksContainer.isMeasured = false;\n _this.linksContainer = linksContainer;\n var nodesContainer = _this.chartContainer.createChild(Container);\n nodesContainer.shouldClone = false;\n nodesContainer.layout = \"none\";\n nodesContainer.isMeasured = false;\n _this.nodesContainer = nodesContainer;\n // this data item holds sums, averages, etc\n _this.dataItem = _this.createDataItem();\n _this.dataItem.component = _this;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n FlowDiagram.prototype.dispose = function () {\n _super.prototype.dispose.call(this);\n this.dataItem.dispose();\n };\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FlowDiagram.prototype.validateData = function () {\n var _this = this;\n if (this._parseDataFrom == 0) {\n this.nodes.clear();\n }\n this.sortNodes();\n this.colors.reset();\n _super.prototype.validateData.call(this);\n var sum = 0;\n var count = 0;\n var low;\n var high;\n // build blocks\n $iter.each(this.dataItems.iterator(), function (dataItem) {\n var fromName = dataItem.fromName;\n if (fromName) {\n var node = _this.nodes.getKey(fromName);\n if (!node) {\n node = _this.nodes.create(fromName);\n node.name = fromName;\n node.chart = _this;\n node.dataItem = dataItem;\n }\n dataItem.fromNode = node;\n dataItem.fromNode.outgoingDataItems.push(dataItem);\n }\n var toName = dataItem.toName;\n if (toName) {\n var node = _this.nodes.getKey(toName);\n if (!node) {\n node = _this.nodes.create(toName);\n node.name = toName;\n node.chart = _this;\n node.dataItem = dataItem;\n }\n dataItem.toNode = node;\n dataItem.toNode.incomingDataItems.push(dataItem);\n }\n if (!dataItem.fromNode) {\n var strokeModifier = new LinearGradientModifier();\n strokeModifier.opacities = [0, 1];\n dataItem.link.strokeModifier = strokeModifier;\n }\n if (!dataItem.toNode) {\n var fillModifier = new LinearGradientModifier();\n fillModifier.opacities = [1, 0];\n dataItem.link.strokeModifier = fillModifier;\n }\n var value = dataItem.value;\n if ($type.isNumber(value)) {\n sum += value;\n count++;\n if (low > value || !$type.isNumber(low)) {\n low = value;\n }\n if (high < value || !$type.isNumber(high)) {\n high = value;\n }\n }\n });\n var key = \"value\";\n this.dataItem.setCalculatedValue(key, high, \"high\");\n this.dataItem.setCalculatedValue(key, low, \"low\");\n this.dataItem.setCalculatedValue(key, sum, \"sum\");\n this.dataItem.setCalculatedValue(key, sum / count, \"average\");\n this.dataItem.setCalculatedValue(key, count, \"count\");\n $iter.each(this.nodes.iterator(), function (strNode) {\n var node = strNode[1];\n if (node.fill instanceof Color) {\n node.color = node.fill;\n }\n if (node.color == undefined) {\n node.color = _this.colors.next();\n }\n if (node.dataItem.color != undefined) {\n node.color = node.dataItem.color;\n }\n if (!node.dataItem.visible) {\n node.hide(0);\n }\n _this.getNodeValue(node);\n });\n this.sortNodes();\n this.feedLegend();\n };\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n FlowDiagram.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\n this.invalidate();\n };\n /**\r\n * Sorts nodes by either their values or names, based on `sortBy` setting.\r\n */\n FlowDiagram.prototype.sortNodes = function () {\n if (this.sortBy == \"name\") {\n this._sorted = this.nodes.sortedIterator();\n } else if (this.sortBy == \"value\") {\n this._sorted = $iter.sort(this.nodes.iterator(), function (x, y) {\n return $order.reverse($number.order(x[1].total, y[1].total));\n });\n } else {\n this._sorted = this.nodes.iterator();\n }\n };\n /**\r\n * Updates a cummulative value of the node.\r\n *\r\n * A node's value is determined by summing values of all of the incoming\r\n * links or all of the outgoing links, whichever results in bigger number.\r\n *\r\n * @param node Node value\r\n */\n FlowDiagram.prototype.getNodeValue = function (node) {\n // todo: totalIncomming totalOutgoing, total\n var incomingTotal = 0;\n var outgoingTotal = 0;\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n incomingTotal += value;\n }\n });\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n outgoingTotal += value;\n }\n });\n node.total = incomingTotal + outgoingTotal;\n node.totalIncoming = incomingTotal;\n node.totalOutgoing = outgoingTotal;\n };\n ;\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\n FlowDiagram.prototype.changeSorting = function () {\n this.sortNodes();\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n FlowDiagram.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Flow diagram\");\n }\n };\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\n FlowDiagram.prototype.createDataItem = function () {\n return new FlowDiagramDataItem();\n };\n Object.defineProperty(FlowDiagram.prototype, \"nodePadding\", {\n /**\r\n * @return Padding (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"nodePadding\");\n },\n /**\r\n * Padding for node square in pixels.\r\n *\r\n * Padding will add extra space around node's name label.\r\n *\r\n * @param value Padding (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"nodePadding\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagram.prototype, \"sortBy\", {\n /**\r\n * @returns Node sorting\r\n */\n get: function () {\n return this.getPropertyValue(\"sortBy\");\n },\n /**\r\n * Sort nodes by \"name\" or \"value\" or do not sort at all. If not sorted, nodes will appear in the same order as they are in the data.\r\n * @default \"none\"\r\n * @param value Node sorting\r\n */\n set: function (value) {\n this.setPropertyValue(\"sortBy\", value);\n this.changeSorting();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagram.prototype, \"minNodeSize\", {\n /**\r\n * @returns min node size\r\n */\n get: function () {\n return this.getPropertyValue(\"minNodeSize\");\n },\n /**\r\n * Sometimes nodes can get very small if their value is little. With this setting you\r\n * can set min size of a node (this is relative value from the total size of all nodes)\r\n * @default 0.02\r\n * @param value Node sorting\r\n */\n set: function (value) {\n this.setPropertyValue(\"minNodeSize\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FlowDiagram.prototype, \"nodes\", {\n /**\r\n * A list of chart's nodes.\r\n *\r\n * @param {DictionaryTemplate<string, this[\"_node\"]>}\r\n */\n get: function () {\n if (!this._nodes) {\n var template = this.createNode();\n template.events.on(\"hit\", function (event) {\n event.target.handleHit(event);\n });\n this._nodes = new DictionaryTemplate(template);\n this._disposers.push(new DictionaryDisposer(this._nodes));\n }\n return this._nodes;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n FlowDiagram.prototype.createNode = function () {\n var node = new FlowDiagramNode();\n this._disposers.push(node);\n return node;\n };\n Object.defineProperty(FlowDiagram.prototype, \"links\", {\n /**\r\n * A list of chart's links.\r\n *\r\n * @param {ListTemplate<this[\"_link\"]>}\r\n */\n get: function () {\n if (!this._links) {\n this._links = new ListTemplate(this.createLink());\n this._disposers.push(new ListDisposer(this._links));\n }\n return this._links;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n FlowDiagram.prototype.createLink = function () {\n var link = new FlowDiagramLink();\n this._disposers.push(link);\n return link;\n };\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\n FlowDiagram.prototype.feedLegend = function () {\n var legend = this.legend;\n if (legend) {\n var legendData_1 = [];\n this.nodes.each(function (key, node) {\n legendData_1.push(node);\n });\n legend.data = legendData_1;\n legend.dataFields.name = \"name\";\n }\n };\n /**\r\n * @ignore\r\n */\n FlowDiagram.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n this.nodes.clear();\n };\n return FlowDiagram;\n}(Chart);\nexport { FlowDiagram };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FlowDiagram\"] = FlowDiagram;\n//# sourceMappingURL=FlowDiagram.js.map","/**\r\n * Bullet module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Bullet } from \"./Bullet\";\nimport { Label } from \"../../core/elements/Label\";\nimport { registry } from \"../../core/Registry\";\nimport { color } from \"../../core/utils/Color\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar LabelBullet = /** @class */function (_super) {\n __extends(LabelBullet, _super);\n /**\r\n * Constructor\r\n */\n function LabelBullet() {\n var _this = _super.call(this) || this;\n _this.className = \"LabelBullet\";\n var label = _this.createChild(Label);\n label.shouldClone = false;\n label.verticalCenter = \"middle\";\n label.horizontalCenter = \"middle\";\n label.truncate = true;\n label.hideOversized = false;\n label.maxWidth = 500;\n label.maxHeight = 500;\n label.stroke = color();\n label.strokeOpacity = 0;\n label.fill = new InterfaceColorSet().getFor(\"text\");\n _this.events.on(\"maxsizechanged\", _this.handleMaxSize, _this, false);\n _this.label = label;\n // not good, as lineSeries will have labels somewhere in the middle.\n //this.locationX = 0.5;\n //this.locationY = 0.5;\n _this.applyTheme();\n return _this;\n }\n LabelBullet.prototype.handleMaxSize = function () {\n this.label.maxWidth = this.maxWidth;\n this.label.maxHeight = this.maxHeight;\n };\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[LabelBullet]].\r\n *\r\n * @param source Source element\r\n */\n LabelBullet.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.label.copyFrom(source.label);\n };\n return LabelBullet;\n}(Bullet);\nexport { LabelBullet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"LabelBullet\"] = LabelBullet;\n//# sourceMappingURL=LabelBullet.js.map","/**\r\n * SankeyNode module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\nimport { LabelBullet } from \"./LabelBullet\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $utils from \"../../core/utils/Utils\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a node in a Sankey Diagram.\r\n *\r\n * A Sankey node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[SankeyLink]] elements.\r\n *\r\n * @see {@link ISankeyNodeEvents} for a list of available events\r\n * @see {@link ISankeyNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar SankeyNode = /** @class */function (_super) {\n __extends(SankeyNode, _super);\n /**\r\n * Constructor\r\n */\n function SankeyNode() {\n var _this = _super.call(this) || this;\n /**\r\n * [nextInCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.nextInCoord = 0;\n /**\r\n * [nextOutCoord description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.nextOutCoord = 0;\n _this.className = \"SankeyNode\";\n _this.width = 10;\n _this.height = 10;\n var nameLabel = _this.createChild(LabelBullet);\n nameLabel.shouldClone = false;\n //@should we auto update these locations if position is changed?\n nameLabel.locationX = 1;\n nameLabel.locationY = 0.5;\n nameLabel.label.text = \"{name}\";\n //nameLabel.label.textElement.hideOversized = false;\n nameLabel.width = 150;\n nameLabel.height = 150;\n nameLabel.label.horizontalCenter = \"left\";\n nameLabel.label.padding(0, 5, 0, 5);\n _this.nameLabel = nameLabel;\n var valueLabel = _this.createChild(LabelBullet);\n valueLabel.shouldClone = false;\n valueLabel.label.hideOversized = false;\n valueLabel.locationX = 0.5;\n valueLabel.locationY = 0.5;\n valueLabel.width = 150;\n valueLabel.height = 150;\n //valueLabel.label.text = \"{value}\";\n valueLabel.label.horizontalCenter = \"middle\";\n _this.valueLabel = valueLabel;\n var hiddenState = _this.hiddenState;\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\n hiddenState.properties.opacity = 0.5;\n hiddenState.properties.visible = true;\n _this.background.hiddenState.copyFrom(hiddenState);\n return _this;\n }\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SankeyNode.prototype.invalidateLinks = function () {\n var _this = this;\n _super.prototype.invalidateLinks.call(this);\n this.nextInCoord = 0;\n this.nextOutCoord = 0;\n var chart = this.chart;\n if (chart) {\n var orientation_1 = chart.orientation;\n if (this._incomingSorted) {\n $iter.each(this._incomingSorted, function (dataItem) {\n var link = dataItem.link;\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n link.parent = _this.chart.linksContainer;\n var x = void 0;\n var y = void 0;\n var angle = void 0;\n if (orientation_1 == \"horizontal\") {\n x = _this.pixelX + _this.dx;\n y = _this.nextInCoord + _this.pixelY + _this.dy;\n angle = 0;\n } else {\n y = _this.pixelY + _this.dy;\n x = _this.nextInCoord + _this.pixelX + _this.dx;\n angle = 90;\n }\n link.endX = x;\n link.endY = y;\n link.startAngle = angle;\n link.endAngle = angle;\n link.gradient.rotation = angle;\n link.linkWidth = value * chart.valueHeight;\n if (!dataItem.fromNode) {\n if (orientation_1 == \"horizontal\") {\n link.maxWidth = 200;\n link.startX = _this.pixelX + _this.dx - link.maxWidth;\n link.startY = link.endY;\n } else {\n link.maxHeight = 200;\n link.startX = link.endX;\n link.startY = _this.pixelY + _this.dy - link.maxHeight;\n }\n // TODO is this needed ?\n $utils.used(link.gradient);\n link.fill = dataItem.toNode.color;\n var stop_1 = link.gradient.stops.getIndex(0);\n if (stop_1) {\n if (link.colorMode == \"gradient\") {\n stop_1.color = _this.color;\n }\n stop_1.opacity = 0;\n link.fill = link.gradient;\n link.stroke = link.gradient;\n link.gradient.validate();\n }\n }\n //link.validate();\n _this.nextInCoord += link.linkWidth;\n }\n });\n }\n if (this._outgoingSorted) {\n $iter.each(this._outgoingSorted, function (dataItem) {\n var link = dataItem.link;\n link.parent = _this.chart.linksContainer;\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n var x = void 0;\n var y = void 0;\n var angle = void 0;\n if (orientation_1 == \"horizontal\") {\n angle = 0;\n x = _this.pixelX + _this.pixelWidth + _this.dx - 1;\n y = _this.nextOutCoord + _this.pixelY + _this.dy;\n } else {\n angle = 90;\n x = _this.nextOutCoord + _this.pixelX + _this.dx;\n y = _this.pixelY + _this.pixelHeight + _this.dy - 1;\n }\n link.startX = x;\n link.startY = y;\n link.startAngle = angle;\n link.endAngle = angle;\n link.gradient.rotation = angle;\n link.linkWidth = value * _this.chart.valueHeight;\n if (!dataItem.toNode) {\n if (orientation_1 == \"horizontal\") {\n link.maxWidth = 200;\n link.endX = _this.pixelX + link.maxWidth + _this.dx;\n link.endY = link.startY;\n } else {\n link.maxHeight = 200;\n link.endX = link.startX;\n link.endY = _this.pixelY + link.maxHeight + _this.dy;\n }\n link.opacity = _this.opacity;\n var stop_2 = link.gradient.stops.getIndex(1);\n if (stop_2) {\n if (link.colorMode == \"gradient\") {\n stop_2.color = _this.color;\n }\n stop_2.opacity = 0;\n link.fill = link.gradient;\n link.stroke = link.gradient;\n link.gradient.validate();\n }\n }\n //link.validate();\n _this.nextOutCoord += link.linkWidth;\n }\n });\n }\n }\n this.positionBullet(this.nameLabel);\n this.positionBullet(this.valueLabel);\n };\n /**\r\n * Positions the bullet so it is centered within the node element.\r\n *\r\n * @param bullet Target bullet\r\n */\n SankeyNode.prototype.positionBullet = function (bullet) {\n if (bullet) {\n bullet.x = this.measuredWidth * bullet.locationX;\n bullet.y = this.measuredHeight * bullet.locationY;\n }\n };\n Object.defineProperty(SankeyNode.prototype, \"level\", {\n /**\r\n * @return Level\r\n */\n get: function () {\n return this.getPropertyValue(\"level\");\n },\n /**\r\n * A level node is displayed at. (0 - ...)\r\n *\r\n * Levels are measured from left to right.\r\n *\r\n * The nodes in the left-most column will have `level = 0`.\r\n *\r\n * Nodes in second column - `level = 1`, etc.\r\n *\r\n * @param value Level\r\n */\n set: function (value) {\n this.setPropertyValue(\"level\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies properties and labels from another [[SankeyNode]].\r\n *\r\n * @param source Source node\r\n */\n SankeyNode.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.nameLabel.copyFrom(source.nameLabel);\n this.valueLabel.copyFrom(source.valueLabel);\n };\n return SankeyNode;\n}(FlowDiagramNode);\nexport { SankeyNode };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SankeyNode\"] = SankeyNode;\n//# sourceMappingURL=SankeyNode.js.map","/**\r\n * SankeyLink module\r\n */\nimport { __extends, __read } from \"tslib\";\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\nimport { registry } from \"../../core/Registry\";\nimport { Polyspline } from \"../../core/elements/Polyspline\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link ISankeyLinkEvents} for a list of available events\r\n * @see {@link ISankeyLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar SankeyLink = /** @class */function (_super) {\n __extends(SankeyLink, _super);\n /**\r\n * Constructor\r\n */\n function SankeyLink() {\n var _this = _super.call(this) || this;\n _this.className = \"SankeyLink\";\n // TODO can this be removed ?\n new InterfaceColorSet();\n _this.tension = 0.8;\n _this.controlPointDistance = 0.2;\n _this.startAngle = 0;\n _this.endAngle = 0;\n _this.linkWidth = 0;\n _this.startX = 0;\n _this.endX = 0;\n _this.startY = 0;\n _this.endY = 0;\n _this.middleLine = _this.createChild(Polyspline);\n _this.middleLine.shouldClone = false;\n _this.middleLine.strokeOpacity = 0;\n _this.applyTheme();\n return _this;\n }\n SankeyLink.prototype.makeBackwards = function () {\n if (this.states.getKey(\"backwards\") != undefined) {\n this.setState(\"backwards\");\n }\n };\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SankeyLink.prototype.validate = function () {\n var _a, _b, _c, _d;\n _super.prototype.validate.call(this);\n if (!this.isTemplate) {\n var x0 = this.startX;\n var y0 = this.startY;\n var x1 = this.endX;\n var y1 = this.endY;\n if (this.states.getKey(\"backwards\")) {\n this.setState(\"default\");\n }\n if (this.dataItem) {\n var chart = this.dataItem.component;\n if (chart) {\n if (chart.orientation == \"horizontal\") {\n if (x1 < x0) {\n _a = __read([x1, x0], 2), x0 = _a[0], x1 = _a[1];\n _b = __read([y1, y0], 2), y0 = _b[0], y1 = _b[1];\n this.makeBackwards();\n }\n } else {\n if (y1 < y0) {\n _c = __read([y1, y0], 2), y0 = _c[0], y1 = _c[1];\n _d = __read([x1, x0], 2), x0 = _d[0], x1 = _d[1];\n this.makeBackwards();\n }\n }\n }\n }\n if (!$type.isNumber(x1)) {\n x1 = x0;\n }\n if (!$type.isNumber(y1)) {\n y1 = y0;\n }\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var w = this.linkWidth;\n var path = \"\";\n var xt0 = x0;\n var yt0 = y0;\n var xt1 = x1;\n var yt1 = y1;\n var xb0 = x0 + w * $math.sin(startAngle);\n var xb1 = x1 + w * $math.sin(endAngle);\n var yb0 = y0 + w * $math.cos(startAngle);\n var yb1 = y1 + w * $math.cos(endAngle);\n var xm0 = x0 + w / 2 * $math.sin(startAngle);\n var xm1 = x1 + w / 2 * $math.sin(endAngle);\n var ym0 = y0 + w / 2 * $math.cos(startAngle);\n var ym1 = y1 + w / 2 * $math.cos(endAngle);\n this.zIndex = this.zIndex || this.dataItem.index;\n var tensionX = this.tension + (1 - this.tension) * $math.sin(startAngle);\n var tensionY = this.tension + (1 - this.tension) * $math.cos(startAngle);\n this.middleLine.tensionX = tensionX;\n this.middleLine.tensionY = tensionY;\n if ($type.isNumber(w) && $type.isNumber(x0) && $type.isNumber(x1) && $type.isNumber(y0) && $type.isNumber(y1)) {\n // solves issues with gradient fill of straight lines\n if ($math.round(xt0, 3) == $math.round(xt1, 3)) {\n xt1 += 0.01;\n }\n if ($math.round(yt0, 3) == $math.round(yt1, 3)) {\n yt1 += 0.01;\n }\n if ($math.round(xb0, 3) == $math.round(xb1, 3)) {\n xb1 += 0.01;\n }\n if ($math.round(yb0, 3) == $math.round(yb1, 3)) {\n yb1 += 0.01;\n }\n var minX = Math.min(xb0, xb1, xt0, xt1);\n var minY = Math.min(yb0, yb1, yt0, yt1);\n var maxX = Math.max(xb0, xb1, xt0, xt1);\n var maxY = Math.max(yb0, yb1, yt0, yt1);\n this._bbox = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n var cpd = this.controlPointDistance;\n var kxt0 = xt0 + (xt1 - xt0) * cpd * $math.cos(startAngle);\n var kyt0 = yt0 + (yt1 - yt0) * cpd * $math.sin(startAngle);\n var kxt1 = xt1 - (xt1 - xt0) * cpd * $math.cos(endAngle);\n var kyt1 = yt1 - (yt1 - yt0) * cpd * $math.sin(endAngle);\n var kxm0 = xm0 + (xm1 - xm0) * cpd * $math.cos(startAngle);\n var kym0 = ym0 + (ym1 - ym0) * cpd * $math.sin(startAngle);\n var kxm1 = xm1 - (xm1 - xm0) * cpd * $math.cos(endAngle);\n var kym1 = ym1 - (ym1 - ym0) * cpd * $math.sin(endAngle);\n var angle = $math.getAngle({\n x: kxt0,\n y: kyt0\n }, {\n x: kxt1,\n y: kyt1\n });\n var dx = (w / $math.cos(angle) - w) / $math.tan(angle) * $math.cos(startAngle);\n var dy = (w / $math.sin(angle) - w) * $math.tan(angle) * $math.sin(startAngle);\n var kxb0 = -dx / 2 + xb0 + (xb1 - xb0) * cpd * $math.cos(startAngle);\n var kyb0 = -dy / 2 + yb0 + (yb1 - yb0) * cpd * $math.sin(startAngle);\n var kxb1 = -dx / 2 + xb1 - (xb1 - xb0) * cpd * $math.cos(endAngle);\n var kyb1 = -dy / 2 + yb1 - (yb1 - yb0) * cpd * $math.sin(endAngle);\n this.middleLine.segments = [[{\n x: xm0,\n y: ym0\n }, {\n x: kxm0,\n y: kym0\n }, {\n x: kxm1,\n y: kym1\n }, {\n x: xm1,\n y: ym1\n }]];\n kxt0 += dx / 2;\n kyt0 += dy / 2;\n kxt1 += dx / 2;\n kyt1 += dy / 2;\n path += $path.moveTo({\n x: xt0,\n y: yt0\n });\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{\n x: xt0,\n y: yt0\n }, {\n x: kxt0,\n y: kyt0\n }, {\n x: kxt1,\n y: kyt1\n }, {\n x: xt1,\n y: yt1\n }]);\n path += $path.lineTo({\n x: xb1,\n y: yb1\n });\n path += new $smoothing.Tension(tensionX, tensionY).smooth([{\n x: xb1,\n y: yb1\n }, {\n x: kxb1,\n y: kyb1\n }, {\n x: kxb0,\n y: kyb0\n }, {\n x: xb0,\n y: yb0\n }]);\n path += $path.closePath();\n }\n this.link.path = path;\n if (this.maskBullets) {\n this.bulletsMask.path = path;\n this.bulletsContainer.mask = this.bulletsMask;\n }\n this.positionBullets();\n }\n };\n Object.defineProperty(SankeyLink.prototype, \"startX\", {\n /**\r\n * @return Start X\r\n */\n get: function () {\n return this.getPropertyValue(\"startX\");\n },\n /**\r\n * [startX description]\r\n *\r\n * @todo Description\r\n * @param value Start X\r\n */\n set: function (value) {\n this.setPropertyValue(\"startX\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"endX\", {\n /**\r\n * @return End X\r\n */\n get: function () {\n return this.getPropertyValue(\"endX\");\n },\n /**\r\n * [endX description]\r\n *\r\n * @todo Description\r\n * @param value End X\r\n */\n set: function (value) {\n this.setPropertyValue(\"endX\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"startY\", {\n /**\r\n * @return Start Y\r\n */\n get: function () {\n return this.getPropertyValue(\"startY\");\n },\n /**\r\n * [startY description]\r\n *\r\n * @todo Description\r\n * @param value Start Y\r\n */\n set: function (value) {\n this.setPropertyValue(\"startY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"endY\", {\n /**\r\n * @return End Y\r\n */\n get: function () {\n return this.getPropertyValue(\"endY\");\n },\n /**\r\n * [endY description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\n set: function (value) {\n this.setPropertyValue(\"endY\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"linkWidth\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this.getPropertyValue(\"linkWidth\");\n },\n /**\r\n * [linkWidth description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setPropertyValue(\"linkWidth\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"controlPointDistance\", {\n /**\r\n * @return relative control point distance\r\n */\n get: function () {\n return this.getPropertyValue(\"controlPointDistance\");\n },\n /**\r\n * Distance of control point of a link, defines relative distance from a node at which linke should bend\r\n * @default 0.2\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"controlPointDistance\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyLink.prototype, \"tension\", {\n /**\r\n * @return tension value\r\n */\n get: function () {\n return this.getPropertyValue(\"tension\");\n },\n /**\r\n * Tension of a spline, 1 would make the link to have sharp edges\r\n * @default 0.8\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"tension\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return SankeyLink;\n}(FlowDiagramLink);\nexport { SankeyLink };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SankeyLink\"] = SankeyLink;\n//# sourceMappingURL=SankeyLink.js.map","/**\r\n * Sankey diagram module.\r\n */\nimport { __extends, __read, __spread } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport { SankeyNode } from \"../elements/SankeyNode\";\nimport { SankeyLink } from \"../elements/SankeyLink\";\nimport { Animation } from \"../../core/utils/Animation\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $object from \"../../core/utils/Object\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo rearange notes after dragged\n/**\r\n * Defines a [[DataItem]] for [[SankeyDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar SankeyDiagramDataItem = /** @class */function (_super) {\n __extends(SankeyDiagramDataItem, _super);\n /**\r\n * Constructor\r\n */\n function SankeyDiagramDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"SankeyDiagramDataItem\";\n _this.applyTheme();\n return _this;\n }\n return SankeyDiagramDataItem;\n}(FlowDiagramDataItem);\nexport { SankeyDiagramDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Sankey Diagram chart.\r\n *\r\n * @see {@link ISankeyDiagramEvents} for a list of available Events\r\n * @see {@link ISankeyDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sankey-diagram/} for documentation\r\n * @important\r\n */\nvar SankeyDiagram = /** @class */function (_super) {\n __extends(SankeyDiagram, _super);\n /**\r\n * Constructor\r\n */\n function SankeyDiagram() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"SankeyDiagram\";\n _this.orientation = \"horizontal\";\n _this.nodeAlign = \"middle\";\n _this.nodesContainer.width = percent(100);\n _this.nodesContainer.height = percent(100);\n _this.linksContainer.width = percent(100);\n _this.linksContainer.height = percent(100);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)validates chart's data, effectively causing the chart to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SankeyDiagram.prototype.validateData = function () {\n var _this = this;\n this._valueHeight = undefined;\n _super.prototype.validateData.call(this);\n this._levelCount = 0;\n this.nodes.each(function (key, node) {\n node.level = undefined;\n });\n this.nodes.each(function (key, node) {\n node.level = _this.getNodeLevel(node, 0);\n _this._levelCount = $math.max(_this._levelCount, node.level);\n });\n };\n /**\r\n * Returns node's highest level.\r\n *\r\n * @param node Node\r\n * @param level Current level\r\n * @return New level\r\n */\n SankeyDiagram.prototype.getNodeLevel = function (node, level) {\n var _this = this;\n var levels = [level];\n $iter.each(node.incomingDataItems.iterator(), function (link) {\n if (link.fromNode) {\n if ($type.isNumber(link.fromNode.level)) {\n levels.push(link.fromNode.level + 1);\n } else {\n _this._counter = 0;\n _this.checkLoop(link.fromNode);\n if (_this._counter < _this.dataItems.length) {\n levels.push(_this.getNodeLevel(link.fromNode, level + 1));\n }\n }\n }\n });\n return Math.max.apply(Math, __spread(levels));\n };\n /**\r\n * Checks if there's no loop in the ancestor chain.\r\n *\r\n * @param node Node\r\n */\n SankeyDiagram.prototype.checkLoop = function (node) {\n var _this = this;\n this._counter++;\n if (this._counter > this.dataItems.length) {\n return;\n }\n $iter.each(node.incomingDataItems.iterator(), function (link) {\n _this.checkLoop(link.fromNode);\n });\n };\n /**\r\n * Calculates relation between pixel height and total value.\r\n *\r\n * In Sankey the actual thickness of links and height of nodes will depend\r\n * on their values.\r\n */\n SankeyDiagram.prototype.calculateValueHeight = function () {\n var _this = this;\n // calculate sums of each level\n this._levelSum = {};\n this._levelNodesCount = {};\n this.maxSum = 0;\n var total = this.dataItem.values.value.sum;\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n _this.getNodeValue(node);\n });\n this.nodes.each(function (key, node) {\n var level = node.level;\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\n if (value / total < _this.minNodeSize) {\n value = total * _this.minNodeSize;\n }\n if ($type.isNumber(_this._levelSum[level])) {\n _this._levelSum[level] += value;\n } else {\n _this._levelSum[level] = value;\n }\n if ($type.isNumber(_this._levelNodesCount[level])) {\n _this._levelNodesCount[level]++;\n } else {\n _this._levelNodesCount[level] = 1;\n }\n });\n var availableHeight;\n if (this.orientation == \"horizontal\") {\n availableHeight = this.chartContainer.maxHeight - 1;\n } else {\n availableHeight = this.chartContainer.maxWidth - 1;\n }\n var maxSumLevel;\n var minHeight;\n $object.each(this._levelSum, function (key, value) {\n var realValue = value;\n var levelNodeCount = _this._levelNodesCount[key];\n var valueHeight = (availableHeight - (levelNodeCount - 1) * _this.nodePadding) / realValue;\n if (valueHeight == Infinity) {\n valueHeight = 0;\n }\n if (minHeight > valueHeight || !$type.isNumber(minHeight)) {\n minHeight = valueHeight;\n _this.maxSum = realValue;\n maxSumLevel = $type.toNumber(key);\n }\n });\n this._maxSumLevel = maxSumLevel;\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\n var valueHeight = (availableHeight - (maxSumLevelNodeCount - 1) * this.nodePadding) / this.maxSum;\n if (valueHeight == Infinity) {\n valueHeight = 0;\n }\n if (!$type.isNumber(this.valueHeight)) {\n this.valueHeight = valueHeight;\n } else {\n var finalHeight = void 0;\n try {\n finalHeight = this._heightAnimation.animationOptions[0].to;\n } catch (err) {}\n // without animations it will be non-smooth as maxValue jumps from one column to another\n if (finalHeight != valueHeight) {\n var duration = this.interpolationDuration;\n try {\n duration = this.nodes.template.states.getKey(\"active\").transitionDuration;\n } catch (err) {}\n this._heightAnimation = new Animation(this, {\n property: \"valueHeight\",\n from: this.valueHeight,\n to: valueHeight\n }, duration, this.interpolationEasing).start();\n this._disposers.push(this._heightAnimation);\n }\n }\n };\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\n SankeyDiagram.prototype.validate = function () {\n var _this = this;\n _super.prototype.validate.call(this);\n this.calculateValueHeight();\n var container = this.nodesContainer;\n var nextCoordinate = {};\n var maxSumLevelNodeCount = this._levelNodesCount[this._maxSumLevel];\n var total = this.dataItem.values.value.sum;\n var availableHeight;\n if (this.orientation == \"horizontal\") {\n availableHeight = this.chartContainer.maxHeight - 1;\n } else {\n availableHeight = this.chartContainer.maxWidth - 1;\n }\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n var level = node.level;\n var levelCoordinate = 0;\n var nodeCount = _this._levelNodesCount[level];\n switch (_this.nodeAlign) {\n case \"bottom\":\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding;\n break;\n case \"middle\":\n levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2 - (nodeCount - maxSumLevelNodeCount) * _this.nodePadding / 2;\n break;\n }\n if (_this.maxSum == 0) {\n switch (_this.nodeAlign) {\n case \"bottom\":\n levelCoordinate = availableHeight - nodeCount * (_this.minNodeSize * availableHeight + _this.nodePadding);\n break;\n case \"middle\":\n levelCoordinate = availableHeight / 2 - nodeCount / 2 * (_this.minNodeSize * availableHeight + _this.nodePadding);\n break;\n }\n }\n node.parent = container;\n var delta;\n var x;\n var y;\n var value = Math.max(node.totalIncoming, node.totalOutgoing);\n if (value / total < _this.minNodeSize) {\n value = total * _this.minNodeSize;\n }\n if (_this.orientation == \"horizontal\") {\n delta = (_this.innerWidth - node.pixelWidth) / _this._levelCount;\n x = delta * node.level;\n y = nextCoordinate[level] || levelCoordinate;\n var h = value * _this.valueHeight;\n if (total == 0 && h == 0) {\n h = _this.minNodeSize * availableHeight;\n }\n node.height = h;\n node.minX = x;\n node.maxX = x;\n nextCoordinate[level] = y + h + _this.nodePadding;\n } else {\n delta = (_this.innerHeight - node.pixelHeight) / _this._levelCount;\n x = nextCoordinate[level] || levelCoordinate;\n y = delta * node.level;\n var w = value * _this.valueHeight;\n if (total == 0 && w == 0) {\n w = _this.minNodeSize * availableHeight;\n }\n node.width = w;\n node.minY = y;\n node.maxY = y;\n nextCoordinate[level] = x + w + _this.nodePadding;\n }\n node.x = x;\n node.y = y;\n });\n };\n /**\r\n * Performs actual operations to reveal this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param duration Fade in duration (ms)\r\n * @return Fade in duration (ms)\r\n */\n SankeyDiagram.prototype.showReal = function (duration) {\n var _this = this;\n if (this.preventShow) {\n return;\n }\n if (this.interpolationDuration > 0) {\n var container_1 = this.nodesContainer;\n var i_1 = 0;\n $iter.each(this.links.iterator(), function (link) {\n link.hide(0);\n });\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n var property;\n if (_this.orientation == \"horizontal\") {\n node.dx = -(container_1.pixelWidth - node.pixelWidth) / Math.max(_this._levelCount, 1);\n property = \"dx\";\n } else {\n node.dy = -(container_1.pixelHeight - node.pixelHeight) / Math.max(_this._levelCount, 1);\n property = \"dy\";\n }\n var delay = 0;\n var duration = _this.interpolationDuration;\n if (_this.sequencedInterpolation) {\n delay = _this.sequencedInterpolationDelay * i_1 + duration * i_1 / $iter.length(_this.nodes.iterator());\n }\n node.opacity = 0;\n node.invalidateLinks();\n node.animate([{\n property: \"opacity\",\n from: 0,\n to: 1\n }, {\n property: property,\n to: 0\n }], _this.interpolationDuration, _this.interpolationEasing).delay(delay);\n $iter.each(node.outgoingDataItems.iterator(), function (dataItem) {\n var animation = dataItem.link.show(_this.interpolationDuration);\n if (animation && !animation.isFinished()) {\n animation.delay(delay);\n }\n });\n $iter.each(node.incomingDataItems.iterator(), function (dataItem) {\n if (!dataItem.fromNode) {\n var animation = dataItem.link.show(_this.interpolationDuration);\n if (animation && !animation.isFinished()) {\n animation.delay(delay);\n }\n }\n });\n i_1++;\n });\n }\n return _super.prototype.showReal.call(this);\n };\n /**\r\n * Changes the sort type of the nodes.\r\n *\r\n * This will actually reshuffle nodes using nice animation.\r\n */\n SankeyDiagram.prototype.changeSorting = function () {\n var _this = this;\n this.sortNodes();\n var nextCoordinate = {};\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n var level = node.level;\n var levelCoordinate = (_this.maxSum - _this._levelSum[level]) * _this.valueHeight / 2;\n var property;\n var nodeHeight;\n if (_this.orientation == \"horizontal\") {\n property = \"y\";\n nodeHeight = node.pixelHeight;\n } else {\n property = \"x\";\n nodeHeight = node.pixelWidth;\n }\n node.animate({\n property: property,\n to: nextCoordinate[level] || levelCoordinate\n }, _this.interpolationDuration, _this.interpolationEasing);\n nextCoordinate[level] = (nextCoordinate[level] || levelCoordinate) + nodeHeight + _this.nodePadding;\n node.invalidateLinks();\n });\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n SankeyDiagram.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Sankey diagram\");\n }\n };\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\n SankeyDiagram.prototype.createDataItem = function () {\n return new SankeyDiagramDataItem();\n };\n Object.defineProperty(SankeyDiagram.prototype, \"nodeAlign\", {\n /**\r\n * @returns Returns nodeAlign value\r\n */\n get: function () {\n return this.getPropertyValue(\"nodeAlign\");\n },\n /**\r\n * How to align nodes. In case layout is vertical, top means left and bottom means right\r\n *\r\n * @param value Node sorting\r\n */\n set: function (value) {\n this.setPropertyValue(\"nodeAlign\", value);\n this.changeSorting();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SankeyDiagram.prototype, \"orientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Orientation of the chart: \"horizontal\" or \"vertical\";\r\n *\r\n * @param value Orientation\r\n */\n set: function (value) {\n this.setPropertyValue(\"orientation\", value, true);\n var nameLabel = this.nodes.template.nameLabel;\n if (value == \"vertical\") {\n this.nodes.template.width = undefined;\n nameLabel.label.horizontalCenter = \"middle\";\n nameLabel.locationX = 0.5;\n } else {\n this.nodes.template.height = undefined;\n nameLabel.label.horizontalCenter = \"left\";\n nameLabel.locationX = 1;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n SankeyDiagram.prototype.createNode = function () {\n var node = new SankeyNode();\n this._disposers.push(node);\n return node;\n };\n /**\r\n * @ignore\r\n */\n SankeyDiagram.prototype.createLink = function () {\n var link = new SankeyLink();\n this._disposers.push(link);\n return link;\n };\n Object.defineProperty(SankeyDiagram.prototype, \"valueHeight\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n return this._valueHeight;\n },\n /**\r\n * @ignore\r\n */\n set: function (value) {\n if (value != this._valueHeight) {\n this._valueHeight = value;\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n SankeyDiagram.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n this._sorted = this.nodes.iterator();\n };\n return SankeyDiagram;\n}(FlowDiagram);\nexport { SankeyDiagram };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"SankeyDiagram\"] = SankeyDiagram;\n//# sourceMappingURL=SankeyDiagram.js.map","/**\r\n * ChordNode module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { FlowDiagramNode } from \"./FlowDiagramNode\";\nimport { AxisLabelCircular } from \"../axes/AxisLabelCircular\";\nimport { registry } from \"../../core/Registry\";\nimport { Slice } from \"../../core/elements/Slice\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport { Bullet } from \"../elements/Bullet\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a node in a Chord Diagram.\r\n *\r\n * A Chord node is a block with a value, which represents its size on the\r\n * diagram.\r\n *\r\n * Nodes are connected via [[ChordLink]] elements.\r\n *\r\n * @see {@link IChordNodeEvents} for a list of available events\r\n * @see {@link IChordNodeAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar ChordNode = /** @class */function (_super) {\n __extends(ChordNode, _super);\n /**\r\n * Constructor\r\n */\n function ChordNode() {\n var _this = _super.call(this) || this;\n _this.className = \"ChordNode\";\n var label = _this.createChild(AxisLabelCircular);\n label.location = 0.5;\n label.radius = 5;\n label.text = \"{name}\";\n label.zIndex = 1;\n label.shouldClone = false;\n _this.label = label;\n _this.layout = \"none\";\n _this.events.on(\"positionchanged\", _this.updateRotation, _this, false);\n _this.isMeasured = false;\n _this.slice = _this.createChild(Slice);\n _this.slice.isMeasured = false;\n var hiddenState = _this.hiddenState;\n hiddenState.properties.fill = new InterfaceColorSet().getFor(\"disabledBackground\");\n hiddenState.properties.opacity = 0.5;\n hiddenState.properties.visible = true;\n _this.setStateOnChildren = false;\n _this.slice.hiddenState.properties.visible = true;\n _this.adapter.add(\"tooltipX\", function (tooltipX, target) {\n return target.slice.ix * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\n });\n _this.adapter.add(\"tooltipY\", function (tooltipY, target) {\n return target.slice.iy * (target.slice.radius - (target.slice.radius - target.slice.pixelInnerRadius) / 2);\n });\n return _this;\n }\n /**\r\n * Invalidates all links, attached to this node.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ChordNode.prototype.invalidateLinks = function () {\n var _this = this;\n _super.prototype.invalidateLinks.call(this);\n var label = this.label;\n var slice = this.slice;\n var chart = this.chart;\n if (chart && slice) {\n var sum = this.total;\n var arc_1 = slice.arc;\n var sliceStartAngle_1 = slice.startAngle;\n this.children.each(function (child) {\n if (child instanceof Bullet) {\n var locationX = child.locationX;\n if (!$type.isNumber(locationX)) {\n locationX = 0.5;\n }\n var locationY = child.locationY;\n if (!$type.isNumber(locationY)) {\n locationY = 1;\n }\n var childAngle = sliceStartAngle_1 + arc_1 * locationX;\n var childRadius = locationY * slice.radius;\n child.x = childRadius * $math.cos(childAngle);\n child.y = childRadius * $math.sin(childAngle);\n }\n });\n var labelAngle = sliceStartAngle_1 + arc_1 * label.location;\n var startAngle = sliceStartAngle_1 + (1 - sum / this.adjustedTotal) * arc_1 * 0.5; // if value of a node is > then sum of the links, add to center link\n if ($type.isNaN(startAngle)) {\n startAngle = sliceStartAngle_1;\n }\n label.fixPosition(labelAngle, slice.radius);\n this.nextAngle = startAngle;\n if (this._outgoingSorted) {\n $iter.each(this._outgoingSorted, function (dataItem) {\n var link = dataItem.link;\n link.parent = _this.chart.linksContainer;\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n if (chart.nonRibbon) {\n var percentWidth = link.percentWidth;\n if (!$type.isNumber(percentWidth)) {\n percentWidth = 5;\n }\n percentWidth = percentWidth / 100;\n link.startAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\n link.arc = arc_1 * percentWidth;\n } else {\n link.arc = value * chart.valueAngle;\n link.startAngle = _this.nextAngle;\n _this.nextAngle += link.arc;\n }\n if (!dataItem.toNode) {\n link.endAngle = link.startAngle;\n }\n link.radius = slice.pixelInnerRadius;\n }\n //link.validate();\n });\n }\n if (this._incomingSorted) {\n $iter.each(this._incomingSorted, function (dataItem) {\n var link = dataItem.link;\n link.radius = slice.pixelInnerRadius;\n if (chart.nonRibbon) {\n var percentWidth = link.percentWidth;\n if (!$type.isNumber(percentWidth)) {\n percentWidth = 5;\n }\n percentWidth = percentWidth / 100;\n link.endAngle = sliceStartAngle_1 + arc_1 / 2 - arc_1 / 2 * percentWidth;\n link.arc = arc_1 * percentWidth;\n } else {\n link.endAngle = _this.nextAngle;\n var value = dataItem.getWorkingValue(\"value\");\n if ($type.isNumber(value)) {\n link.arc = value * chart.valueAngle; // yes, this is needed\n _this.nextAngle += link.arc;\n }\n }\n if (!dataItem.fromNode) {\n link.startAngle = link.endAngle;\n }\n //link.validate();\n });\n }\n }\n };\n /**\r\n * @ignore\r\n * updates slice start angle so that when we drag a node it would face the center\r\n */\n ChordNode.prototype.updateRotation = function () {\n var slice = this.slice;\n var mAngle = this.trueStartAngle + slice.arc / 2;\n var radius = slice.radius;\n var tx = radius * $math.cos(mAngle);\n var ty = radius * $math.sin(mAngle);\n var angle = $math.getAngle({\n x: tx + this.pixelX,\n y: ty + this.pixelY\n });\n slice.startAngle = this.trueStartAngle + (angle - mAngle);\n this.dx = -this.pixelX;\n this.dy = -this.pixelY;\n };\n /**\r\n * Copies properties and labels from another [[ChordNode]].\r\n *\r\n * @param source Source node\r\n */\n ChordNode.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.label.copyFrom(source.label);\n this.slice.copyFrom(source.slice);\n };\n return ChordNode;\n}(FlowDiagramNode);\nexport { ChordNode };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ChordNode\"] = ChordNode;\n//# sourceMappingURL=ChordNode.js.map","/**\r\n * Functionality for drawing quadratic curves.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Line } from \"./Line\";\nimport { color } from \"../utils/Color\";\nimport * as $path from \"../rendering/Path\";\nimport * as $math from \"../utils/Math\";\nimport * as $type from \"../utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws a waved line.\r\n *\r\n * @see {@link IQuadraticCurveEvents} for a list of available events\r\n * @see {@link IQuadraticCurveAdapters} for a list of available Adapters\r\n */\nvar QuadraticCurve = /** @class */function (_super) {\n __extends(QuadraticCurve, _super);\n /**\r\n * Constructor\r\n */\n function QuadraticCurve() {\n var _this = _super.call(this) || this;\n _this.className = \"QuadraticCurve\";\n _this.element = _this.paper.add(\"path\");\n _this.pixelPerfect = false;\n _this.fill = color();\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the waved line.\r\n *\r\n * @ignore Exclude from docs\r\n */\n QuadraticCurve.prototype.draw = function () {\n //super.draw();\n if ($type.isNumber(this.x1 + this.x2 + this.y1 + this.y2 + this.cpx + this.cpy)) {\n var p1 = {\n x: this.x1,\n y: this.y1\n };\n var p2 = {\n x: this.x2,\n y: this.y2\n };\n var cp = {\n x: this.cpx,\n y: this.cpy\n };\n var d = $path.moveTo(p1) + $path.quadraticCurveTo(p2, cp);\n this.path = d;\n }\n };\n Object.defineProperty(QuadraticCurve.prototype, \"cpx\", {\n /**\r\n * @return X\r\n */\n get: function () {\n return this.getPropertyValue(\"cpx\");\n },\n /**\r\n * X coordinate of control point.\r\n *\r\n * @param value X\r\n */\n set: function (value) {\n this.setPropertyValue(\"cpx\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(QuadraticCurve.prototype, \"cpy\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n return this.getPropertyValue(\"cpy\");\n },\n /**\r\n * Y coordinate of control point.\r\n *\r\n * @param value Y\r\n */\n set: function (value) {\n this.setPropertyValue(\"cpy\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Converts relative position along the line (0-1) into pixel coordinates.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinates\r\n */\n QuadraticCurve.prototype.positionToPoint = function (position) {\n var p1 = {\n x: this.x1,\n y: this.y1\n };\n var cp = {\n x: this.cpx,\n y: this.cpy\n };\n var p2 = {\n x: this.x2,\n y: this.y2\n };\n var point1 = $math.getPointOnQuadraticCurve(p1, p2, cp, position);\n var point2 = $math.getPointOnQuadraticCurve(p1, p2, cp, position + 0.001);\n return {\n x: point1.x,\n y: point1.y,\n angle: $math.getAngle(point1, point2)\n };\n };\n return QuadraticCurve;\n}(Line);\nexport { QuadraticCurve };\n//# sourceMappingURL=QuadraticCurve.js.map","/**\r\n * ChordLink module\r\n */\nimport { __extends } from \"tslib\";\nimport { FlowDiagramLink } from \"./FlowDiagramLink\";\nimport { registry } from \"../../core/Registry\";\nimport { QuadraticCurve } from \"../../core/elements/QuadraticCurve\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Chord Diagram.\r\n *\r\n * @see {@link IChordLinkEvents} for a list of available events\r\n * @see {@link IChordLinkAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar ChordLink = /** @class */function (_super) {\n __extends(ChordLink, _super);\n /**\r\n * Constructor\r\n */\n function ChordLink() {\n var _this = _super.call(this) || this;\n _this.className = \"ChordLink\";\n _this.middleLine = _this.createChild(QuadraticCurve);\n _this.middleLine.shouldClone = false;\n _this.middleLine.strokeOpacity = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * (Re)validates (redraws) the link.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ChordLink.prototype.validate = function () {\n _super.prototype.validate.call(this);\n if (!this.isTemplate) {\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var arc = this.arc;\n var radius = this.radius;\n var fromNode = this.dataItem.fromNode;\n var toNode = this.dataItem.toNode;\n var fromX = 0;\n var fromY = 0;\n if (fromNode) {\n fromX = fromNode.pixelX + fromNode.dx;\n fromY = fromNode.pixelY + fromNode.dy;\n }\n var toX = 0;\n var toY = 0;\n if (toNode) {\n toX = toNode.pixelX + toNode.dx;\n toY = toNode.pixelY + toNode.dy;\n }\n if (radius > 0) {\n var x1 = radius * $math.cos(startAngle) + fromX;\n var y1 = radius * $math.sin(startAngle) + fromY;\n var x2 = radius * $math.cos(endAngle) + toX;\n var y2 = radius * $math.sin(endAngle) + toY;\n //let cpAngle = startAngle + arc + (endAngle - startAngle - arc) / 2;\n //let arcWidth = $math.getDistance({x:x1, y:y1}, {x:x4, y:y4});\n //let cpx = (arcWidth) * $math.cos(cpAngle);\n //let cpy = (arcWidth) * $math.sin(cpAngle);\n var cp = {\n x: 0,\n y: 0\n };\n var path = $path.moveTo({\n x: x1,\n y: y1\n });\n path += $path.arcTo(startAngle, arc, radius);\n path += $path.quadraticCurveTo({\n x: x2,\n y: y2\n }, cp);\n path += $path.arcTo(endAngle, arc, radius);\n path += $path.quadraticCurveTo({\n x: x1,\n y: y1\n }, cp);\n if (arc > 0) {\n this.link.path = path;\n } else {\n this.link.path = \"\";\n }\n if (this.maskBullets) {\n this.bulletsMask.path = path;\n this.bulletsContainer.mask = this.bulletsMask;\n }\n var mAngle1 = startAngle + arc / 2;\n var mAngle2 = endAngle + arc / 2;\n var middleLine = this.middleLine;\n middleLine.x1 = radius * $math.cos(mAngle1) + fromX;\n middleLine.y1 = radius * $math.sin(mAngle1) + fromY;\n middleLine.x2 = radius * $math.cos(mAngle2) + toX;\n middleLine.y2 = radius * $math.sin(mAngle2) + toY;\n middleLine.cpx = 0;\n middleLine.cpy = 0;\n middleLine.stroke = this.fill;\n this.positionBullets();\n }\n }\n };\n Object.defineProperty(ChordLink.prototype, \"radius\", {\n /**\r\n * @return End Y\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * [radius description]\r\n *\r\n * @todo Description\r\n * @param value End Y\r\n */\n set: function (value) {\n this.setPropertyValue(\"radius\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChordLink.prototype, \"arc\", {\n /**\r\n * @return [description]\r\n */\n get: function () {\n return this.getPropertyValue(\"arc\");\n },\n /**\r\n * [arc description]\r\n *\r\n * @todo Description\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setPropertyValue(\"arc\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return ChordLink;\n}(FlowDiagramLink);\nexport { ChordLink };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ChordLink\"] = ChordLink;\n//# sourceMappingURL=ChordLink.js.map","/**\r\n * Chord diagram module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { FlowDiagram, FlowDiagramDataItem } from \"./FlowDiagram\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { Container } from \"../../core/Container\";\nimport { registry } from \"../../core/Registry\";\nimport { ChordNode } from \"../elements/ChordNode\";\nimport { ChordLink } from \"../elements/ChordLink\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $utils from \"../../core/utils/Utils\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo rearange notes after dragged\n/**\r\n * Defines a [[DataItem]] for [[ChordDiagram]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar ChordDiagramDataItem = /** @class */function (_super) {\n __extends(ChordDiagramDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ChordDiagramDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ChordDiagramDataItem\";\n _this.applyTheme();\n return _this;\n }\n return ChordDiagramDataItem;\n}(FlowDiagramDataItem);\nexport { ChordDiagramDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a Chord Diagram chart.\r\n *\r\n * @see {@link IChordDiagramEvents} for a list of available Events\r\n * @see {@link IChordDiagramAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/chord-diagram/} for documentation\r\n * @important\r\n */\nvar ChordDiagram = /** @class */function (_super) {\n __extends(ChordDiagram, _super);\n /**\r\n * Constructor\r\n */\n function ChordDiagram() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * [valueAngle description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n _this.valueAngle = 0;\n _this.className = \"ChordDiagram\";\n _this.startAngle = -90;\n _this.endAngle = 270;\n _this.radius = percent(80);\n _this.innerRadius = -15;\n _this.nodePadding = 5;\n var chordContainer = _this.chartContainer.createChild(Container);\n chordContainer.align = \"center\";\n chordContainer.valign = \"middle\";\n chordContainer.shouldClone = false;\n chordContainer.layout = \"absolute\";\n _this.chordContainer = chordContainer;\n _this.nodesContainer.parent = chordContainer;\n _this.linksContainer.parent = chordContainer;\n _this.chartContainer.events.on(\"maxsizechanged\", _this.invalidate, _this, false);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Redraws the chart.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ChordDiagram.prototype.validate = function () {\n var _this = this;\n var chartContainer = this.chartContainer;\n var endAngle = this.endAngle;\n var startAngle = this.startAngle + this.nodePadding / 2;\n var rect = $math.getArcRect(this.startAngle, this.endAngle, 1);\n var innerRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n rect = $math.getCommonRectangle([rect, innerRect]);\n var maxRadius = Math.min(chartContainer.innerWidth / rect.width, chartContainer.innerHeight / rect.height);\n if (!$type.isNumber(maxRadius)) {\n maxRadius = 0;\n }\n var radius = $utils.relativeRadiusToValue(this.radius, maxRadius);\n var pixelInnerRadius = $utils.relativeRadiusToValue(this.innerRadius, radius, true);\n var total = this.dataItem.values.value.sum;\n var count = 0;\n var newTotal = 0;\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n _this.getNodeValue(node);\n count++;\n var value = node.total;\n if (node.total / total < _this.minNodeSize) {\n value = total * _this.minNodeSize;\n }\n newTotal += value;\n });\n this.valueAngle = (endAngle - this.startAngle - this.nodePadding * count) / newTotal;\n $iter.each(this._sorted, function (strNode) {\n var node = strNode[1];\n var slice = node.slice;\n slice.radius = radius;\n slice.innerRadius = pixelInnerRadius;\n var value = node.total;\n if (node.total / total < _this.minNodeSize) {\n value = total * _this.minNodeSize;\n }\n node.adjustedTotal = value;\n var arc;\n if (_this.nonRibbon) {\n arc = (endAngle - _this.startAngle) / count - _this.nodePadding;\n } else {\n arc = _this.valueAngle * value;\n }\n slice.arc = arc;\n slice.startAngle = startAngle;\n node.trueStartAngle = startAngle;\n node.parent = _this.nodesContainer;\n node.validate(); // otherwise flickers - nodes are already created, but not yet positioned etc.\n startAngle += arc + _this.nodePadding;\n });\n this.chordContainer.definedBBox = {\n x: radius * rect.x,\n y: radius * rect.y,\n width: radius * rect.width,\n height: radius * rect.height\n };\n this.chordContainer.invalidateLayout();\n _super.prototype.validate.call(this);\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n ChordDiagram.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Chord diagram\");\n }\n };\n /**\r\n * Creates and returns a new data item.\r\n *\r\n * @return Data item\r\n */\n ChordDiagram.prototype.createDataItem = function () {\n return new ChordDiagramDataItem();\n };\n Object.defineProperty(ChordDiagram.prototype, \"startAngle\", {\n /**\r\n * @return Start angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face begins (the radial axis is drawn) at the\r\n * top center. (at -90 degrees)\r\n *\r\n * You can use `startAngle` to change this setting.\r\n *\r\n * E.g. setting this to 0 will make the radial axis start horizontally to\r\n * the right, as opposed to vertical.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value Start angle (degrees)\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChordDiagram.prototype, \"endAngle\", {\n /**\r\n * @return End angle (degrees)\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * Starting angle of the Radar face. (degrees)\r\n *\r\n * Normally, a circular radar face ends (the radial axis is drawn) exactly\r\n * where it has started, forming a full 360 circle. (at 270 degrees)\r\n *\r\n * You can use `endAngle` to end the circle somewhere else.\r\n *\r\n * E.g. setting this to 180 will make the radar face end at horizontal line\r\n * to the left off the center.\r\n *\r\n * For a perfect circle the absolute sum of `startAngle` and `endAngle`\r\n * needs to be 360.\r\n *\r\n * However, it's **not** necessary to do so. You can set those to lesser\r\n * numbers, to create semi-circles.\r\n *\r\n * E.g. `startAngle = -90` with `endAngle = 0` will create a radar face that\r\n * looks like a quarter of a circle.\r\n *\r\n * @default -90\r\n * @param value End angle (degrees)\r\n */\n set: function (value) {\n this.setPropertyValue(\"endAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChordDiagram.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the Radar face.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChordDiagram.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the Chord nodes.\r\n *\r\n * This can either be in absolute pixel value, or relative [[Percent]].\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChordDiagram.prototype, \"nonRibbon\", {\n /**\r\n * @return Non-ribbon\r\n */\n get: function () {\n return this.getPropertyValue(\"nonRibbon\");\n },\n /**\r\n *\r\n * If you set this to true, all the lines will be of the same width. This is done by making middleLine of a ChordLink visible.\r\n *\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"nonRibbon\", value, true);\n this.links.template.middleLine.strokeOpacity = 1;\n this.links.template.link.fillOpacity = 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @ignore\r\n */\n ChordDiagram.prototype.createNode = function () {\n var node = new ChordNode();\n this._disposers.push(node);\n return node;\n };\n /**\r\n * @ignore\r\n */\n ChordDiagram.prototype.createLink = function () {\n var link = new ChordLink();\n this._disposers.push(link);\n return link;\n };\n return ChordDiagram;\n}(FlowDiagram);\nexport { ChordDiagram };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ChordDiagram\"] = ChordDiagram;\n//# sourceMappingURL=ChordDiagram.js.map","/**\r\n * Module that defines everything related to building Columns.\r\n * It is a container which has column element which is a RoundedRectangle.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\nimport { registry } from \"../../core/Registry\";\nimport { percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates Columns.\r\n *\r\n * @see {@link IColumnEvents} for a list of available events\r\n * @see {@link IColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar Column = /** @class */function (_super) {\n __extends(Column, _super);\n /**\r\n * Constructor\r\n */\n function Column() {\n var _this = _super.call(this) || this;\n _this.className = \"Column\";\n _this.width = percent(80);\n _this.height = percent(80);\n //this.isMeasured = true; // for correct position of the tooltip\n _this.events.disableType(\"transformed\"); // not to bug parent\n _this.applyOnClones = true;\n _this.strokeOpacity = 1;\n _this.layout = \"none\";\n _this.createAssets();\n // otherwise users will have to set layout themselves if they'll want to align, scale etc children\n _this.events.on(\"childadded\", _this.handleKidAdded, _this, false);\n return _this;\n }\n /**\r\n * @ignore\r\n */\n Column.prototype.handleKidAdded = function () {\n if (this.layout == \"none\") {\n this.layout = \"absolute\";\n }\n };\n /**\r\n * @ignore\r\n */\n Column.prototype.createAssets = function () {\n this.column = this.createChild(RoundedRectangle);\n this.column.shouldClone = false;\n this.column.isMeasured = false;\n this.column.cornerRadius(0, 0, 0, 0);\n this._disposers.push(this.column);\n };\n /**\r\n * @ignore Exclude from docs\r\n */\n Column.prototype.validate = function () {\n _super.prototype.validate.call(this);\n var column = this.column;\n if (column) {\n column.width = $math.min(this.pixelWidth, this.maxWidth);\n column.height = $math.min(this.pixelHeight, this.maxHeight);\n if (column.invalid) {\n column.validate(); // important!\n }\n }\n };\n /**\r\n * Copies all parameters from another [[Column]].\r\n *\r\n * @param source Source Column\r\n */\n Column.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.column) {\n this.column.copyFrom(source.column);\n }\n };\n Object.defineProperty(Column.prototype, \"bbox\", {\n /**\r\n * Returns bounding box (square) for this element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n if (this.definedBBox) {\n return this.definedBBox;\n }\n if (this.column) {\n return {\n x: 0,\n y: 0,\n width: this.column.measuredWidth,\n height: this.column.measuredHeight\n };\n } else {\n return {\n x: 0,\n y: 0,\n width: $math.min(this.pixelWidth, this.maxWidth),\n height: $math.min(this.pixelHeight, this.maxHeight)\n };\n }\n },\n enumerable: true,\n configurable: true\n });\n return Column;\n}(Container);\nexport { Column };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Column\"] = Column;\n//# sourceMappingURL=Column.js.map","/**\r\n * Column series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { XYSeries, XYSeriesDataItem } from \"./XYSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { Container } from \"../../core/Container\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { Dictionary } from \"../../core/utils/Dictionary\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\nimport { registry } from \"../../core/Registry\";\nimport { Column } from \"../elements/Column\";\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\nimport { percent, Percent } from \"../../core/utils/Percent\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $type from \"../../core/utils/Type\";\nimport { Disposer } from \"../../core/utils/Disposer\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[ColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar ColumnSeriesDataItem = /** @class */function (_super) {\n __extends(ColumnSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ColumnSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ColumnSeriesDataItem\";\n _this.locations[\"dateX\"] = 0.5;\n _this.locations[\"dateY\"] = 0.5;\n _this.locations[\"categoryX\"] = 0.5;\n _this.locations[\"categoryY\"] = 0.5;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"column\", {\n /**\r\n * @return Column\r\n */\n get: function () {\n return this._column;\n },\n /**\r\n * A column used to draw a column for this data item.\r\n *\r\n * @param column\r\n */\n set: function (column) {\n this.setColumn(column);\n },\n enumerable: true,\n configurable: true\n });\n ColumnSeriesDataItem.prototype.setColumn = function (column) {\n var _this = this;\n if (this._column && column != this._column) {\n $array.remove(this.sprites, this._column);\n }\n this._column = column;\n if (column) {\n var prevDataItem = column.dataItem;\n if (prevDataItem && prevDataItem != this) {\n prevDataItem.column = undefined;\n }\n this.addSprite(column);\n this._disposers.push(new Disposer(function () {\n // TODO investigate why component is undefined\n // https://codepen.io/team/amcharts/pen/dac4be245d658233a6d7e5597df2208b?editors=0010\n if (_this.component) {\n _this.component.columns.removeValue(column);\n }\n }));\n }\n };\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"width\", {\n get: function () {\n var width = this.properties.width;\n if (this._adapterO) {\n width = this._adapterO.apply(\"width\", width);\n }\n return width;\n },\n set: function (value) {\n if (this.properties.width != value) {\n this.properties.width = value;\n if (this.component) {\n this.component.validateDataElement(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"height\", {\n get: function () {\n var height = this.properties.height;\n if (this._adapterO) {\n height = this._adapterO.apply(\"height\", height);\n }\n return height;\n },\n set: function (value) {\n if (this.properties.height != value) {\n this.properties.height = value;\n if (this.component) {\n this.component.validateDataElement(this);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeriesDataItem.prototype, \"rangesColumns\", {\n /**\r\n * A dictionary storing axes ranges columns by axis uid\r\n */\n get: function () {\n if (!this._rangesColumns) {\n this._rangesColumns = new Dictionary();\n }\n return this._rangesColumns;\n },\n enumerable: true,\n configurable: true\n });\n return ColumnSeriesDataItem;\n}(XYSeriesDataItem);\nexport { ColumnSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a column graph.\r\n *\r\n * @see {@link IColumnSeriesEvents} for a list of available Events\r\n * @see {@link IColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar ColumnSeries = /** @class */function (_super) {\n __extends(ColumnSeries, _super);\n /**\r\n * Constructor\r\n */\n function ColumnSeries() {\n var _this = _super.call(this) || this;\n /**\r\n * Start location within cell for columns.\r\n */\n _this._startLocation = 0;\n /**\r\n * End location within cell for columns.\r\n */\n _this._endLocation = 1;\n _this.className = \"ColumnSeries\";\n _this.width = percent(100);\n _this.height = percent(100);\n _this.strokeOpacity = 0;\n _this.fillOpacity = 1;\n _this.clustered = true;\n var columnsContainer = _this.mainContainer.createChild(Container);\n columnsContainer.shouldClone = false;\n columnsContainer.isMeasured = false;\n columnsContainer.layout = \"none\";\n _this._columnsContainer = columnsContainer;\n _this.columns.template.pixelPerfect = false;\n _this.tooltipColorSource = _this.columns.template;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ColumnSeries.prototype, \"columnsContainer\", {\n /**\r\n * A container that columns are created in.\r\n *\r\n * @ignore Exclude from docs\r\n */\n get: function () {\n return this._columnsContainer;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n ColumnSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Column Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n ColumnSeries.prototype.createDataItem = function () {\n return new ColumnSeriesDataItem();\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ColumnSeries.prototype.validate = function () {\n //@todo Check if we can do better than use `instanceof`\n // find start/end locations based on clustered/stacked settings\n // go through chart series instead of base axis series, because axis series doesn't maintain order\n var _this = this;\n this.group.node.removeAttribute(\"fill\");\n if (this.chart && this.xAxis && this.yAxis) {\n var baseAxisSeries = this.chart.series;\n var clusterCount_1 = 0;\n var index_1 = 0;\n var sortedByAxis_1 = [];\n $iter.each(baseAxisSeries.iterator(), function (series) {\n if (series instanceof ColumnSeries) {\n if (_this.baseAxis == series.baseAxis) {\n var index_2;\n if (_this.baseAxis == _this.xAxis) {\n index_2 = _this.chart.yAxes.indexOf(series.yAxis);\n } else {\n index_2 = _this.chart.xAxes.indexOf(series.xAxis);\n }\n sortedByAxis_1.push({\n series: series,\n axis: index_2\n });\n }\n }\n });\n sortedByAxis_1.sort(function (a, b) {\n return a.axis - b.axis;\n });\n var prevAxisIndex_1;\n $array.each(sortedByAxis_1, function (sortedItem) {\n var series = sortedItem.series;\n if (series instanceof ColumnSeries) {\n if (!series.stacked && series.clustered || prevAxisIndex_1 != sortedItem.axis && series.clustered) {\n clusterCount_1++;\n }\n if (series == _this) {\n index_1 = clusterCount_1 - 1;\n }\n }\n prevAxisIndex_1 = sortedItem.axis;\n });\n if (!this.clustered) {\n index_1 = 0;\n clusterCount_1 = 1;\n }\n var renderer = this.baseAxis.renderer;\n var cellStartLocation = renderer.cellStartLocation;\n var cellEndLocation = renderer.cellEndLocation;\n this._startLocation = cellStartLocation + index_1 / clusterCount_1 * (cellEndLocation - cellStartLocation);\n this._endLocation = cellStartLocation + (index_1 + 1) / clusterCount_1 * (cellEndLocation - cellStartLocation);\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis instanceof CategoryAxis && yAxis instanceof ValueAxis) {\n if (xAxis.sortBySeries == this) {\n this.sortCategoryAxis(xAxis, \"valueY\");\n }\n }\n if (yAxis instanceof CategoryAxis && xAxis instanceof ValueAxis) {\n if (yAxis.sortBySeries == this) {\n this.sortCategoryAxis(yAxis, \"valueX\");\n }\n }\n }\n _super.prototype.validate.call(this);\n for (var i = 0; i < this.startIndex; i++) {\n var dataItem = this.dataItems.getIndex(i);\n this.disableUnusedColumns(dataItem);\n }\n for (var i = this.dataItems.length - 1; i > this.endIndex; i--) {\n var dataItem = this.dataItems.getIndex(i);\n this.disableUnusedColumns(dataItem);\n }\n this._propertiesChanged = false;\n };\n ColumnSeries.prototype.sortCategoryAxis = function (axis, key) {\n var _this = this;\n this.dataItems.values.sort(function (x, y) {\n return y.values[key].workingValue - x.values[key].workingValue;\n });\n var i = 0;\n this.dataItems.each(function (dataItem) {\n dataItem._index = i;\n i++;\n });\n axis.dataItems.each(function (dataItem) {\n var axis = dataItem.component;\n var currentPosition = axis.categoryToPosition(dataItem.category) - dataItem.deltaPosition;\n var seriesDataItem = axis.getSeriesDataItemByCategory(dataItem.category, _this);\n if (seriesDataItem) {\n var index = _this.dataItems.indexOf(seriesDataItem);\n dataItem._index = index;\n var deltaPosition = $math.round((index + 0.5) / _this.dataItems.length - currentPosition, 3);\n if (dataItem.deltaAnimation && !dataItem.deltaAnimation.isDisposed() && dataItem.deltaAnimation.animationOptions[0].to == deltaPosition) {\n // void\n } else if (deltaPosition != $math.round(dataItem.deltaPosition, 3)) {\n if (dataItem.deltaAnimation) {\n dataItem.deltaAnimation.stop();\n }\n dataItem.deltaAnimation = dataItem.animate({\n property: \"deltaPosition\",\n from: -deltaPosition,\n to: 0\n }, axis.interpolationDuration, axis.interpolationEasing);\n _this._disposers.push(dataItem.deltaAnimation);\n }\n }\n });\n axis.dataItems.values.sort(function (x, y) {\n return x.index - y.index;\n });\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n ColumnSeries.prototype.validateDataElement = function (dataItem) {\n // important oder here, first real, then super. we need this to know size\n if (this.chart && this.xAxis && this.yAxis) {\n this.validateDataElementReal(dataItem);\n _super.prototype.validateDataElement.call(this, dataItem);\n }\n };\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\n ColumnSeries.prototype.getStartLocation = function (dataItem) {\n var startLocation = this._startLocation;\n if (this.baseAxis == this.xAxis) {\n startLocation += dataItem.locations[this.xOpenField] - 0.5;\n } else {\n startLocation += dataItem.locations[this.yOpenField] - 0.5;\n }\n return startLocation;\n };\n /**\r\n * [handleDataItemWorkingValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n */\n /*\r\n public handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n if (this.simplifiedProcessing) {\r\n this.validateDataElement(dataItem);\r\n }\r\n else {\r\n super.handleDataItemWorkingValueChange(dataItem, name);\r\n }\r\n }*/\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\n ColumnSeries.prototype.getEndLocation = function (dataItem) {\n var endLocation = this._endLocation;\n if (this.baseAxis == this.xAxis) {\n endLocation += dataItem.locations[this.xField] - 0.5;\n } else {\n endLocation += dataItem.locations[this.yField] - 0.5;\n }\n return endLocation;\n };\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n ColumnSeries.prototype.validateDataElementReal = function (dataItem) {\n var _this = this;\n //\tif (dataItem.hasValue([this.xField, this.yField])) { // todo: this doesn't work with categories, think of a better way\n var l;\n var r;\n var t;\n var b;\n var startLocation = this.getStartLocation(dataItem);\n var endLocation = this.getEndLocation(dataItem);\n var xField = this.xField;\n var xOpenField = this.xOpenField;\n var yField = this.yField;\n var yOpenField = this.yOpenField;\n var template = this.columns.template;\n var percentWidth = template.percentWidth;\n var percentHeight = template.percentHeight;\n var pixelWidth = template.pixelWidth;\n var pixelHeight = template.pixelHeight;\n var maxWidth = template.maxWidth;\n var maxHeight = template.maxHeight;\n var paddingLeft = template.pixelPaddingLeft;\n var paddingRight = template.pixelPaddingRight;\n var paddingTop = template.pixelPaddingTop;\n var paddingBottom = template.pixelPaddingBottom;\n var outOfBounds = false;\n var diw = dataItem.width;\n if ($type.hasValue(diw)) {\n if ($type.isNumber(diw)) {\n pixelWidth = diw;\n }\n if (diw instanceof Percent) {\n percentWidth = diw.value * 100;\n }\n }\n var dih = dataItem.height;\n if ($type.hasValue(dih)) {\n if ($type.isNumber(dih)) {\n pixelHeight = dih;\n }\n if (dih instanceof Percent) {\n percentHeight = dih.value * 100;\n }\n }\n // two category axes\n if (this.xAxis instanceof CategoryAxis && this.yAxis instanceof CategoryAxis) {\n if (!dataItem.hasValue(this._xValueFields) || !dataItem.hasValue(this._yValueFields)) {\n return;\n }\n startLocation = 0;\n endLocation = 1;\n if (!$type.isNaN(percentWidth)) {\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\n startLocation += offset;\n endLocation -= offset;\n }\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\n r = this.xAxis.getX(dataItem, xField, endLocation);\n // in case width is set in pixels\n if ($type.isNaN(percentWidth)) {\n var offset = (r - l - pixelWidth) / 2;\n l += offset;\n r -= offset;\n }\n // in case max width is set in pixels\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\n var offset = (r - l - maxWidth) / 2;\n l += offset;\n r -= offset;\n }\n startLocation = 0;\n endLocation = 1;\n if (!$type.isNaN(percentHeight)) {\n var offset = $math.round((1 - percentHeight / 100) / 2, 5);\n startLocation += offset;\n endLocation -= offset;\n }\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\n b = this.yAxis.getY(dataItem, yField, endLocation);\n // in case width is set in pixels\n if ($type.isNaN(percentHeight)) {\n var offset = (b - t - pixelHeight) / 2;\n b += offset;\n t -= offset;\n }\n // in case max width is set in pixels\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\n var offset = (b - t - maxHeight) / 2;\n b += offset;\n t -= offset;\n }\n r = this.fixHorizontalCoordinate(r);\n l = this.fixHorizontalCoordinate(l);\n t = this.fixVerticalCoordinate(t);\n b = this.fixVerticalCoordinate(b);\n } else if (this.baseAxis == this.xAxis) {\n if (!dataItem.hasValue(this._yValueFields)) {\n return;\n }\n // in case width is set in percent\n if (!$type.isNaN(percentWidth)) {\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\n startLocation += offset;\n endLocation -= offset;\n }\n l = this.xAxis.getX(dataItem, xOpenField, startLocation);\n r = this.xAxis.getX(dataItem, xField, endLocation);\n // in case width is set in pixels\n if ($type.isNaN(percentWidth)) {\n var offset = (r - l - pixelWidth) / 2;\n l += offset;\n r -= offset;\n }\n // in case width is set in pixels\n if (!$type.isNaN(maxWidth) && maxWidth < Math.abs(r - l)) {\n var offset = (r - l - maxWidth) / 2;\n l += offset;\n r -= offset;\n }\n var bottomLocation = dataItem.locations[yOpenField];\n var topLocation = dataItem.locations[yField];\n // otherwise gantt chart will start items in the middle of a cell\n if (this.yAxis instanceof ValueAxis) {\n if (this.dataFields[this.yField] != this.dataFields[this.yOpenField]) {\n bottomLocation = 0;\n topLocation = 0;\n }\n }\n b = this.yAxis.getY(dataItem, yOpenField, bottomLocation);\n t = this.yAxis.getY(dataItem, yField, topLocation);\n // used to save location for bullets, but it's not a good approach\n // dataItem.locations[xField] = startLocation + (endLocation - startLocation) / 2;\n var axisLenght = Math.ceil(this.yAxis.axisLength);\n if (t < 0 && b < 0 || t > axisLenght && b > axisLenght) {\n outOfBounds = true;\n }\n t = this.fixVerticalCoordinate(t);\n b = this.fixVerticalCoordinate(b);\n if (Math.abs(r - l) - paddingLeft - paddingRight == 0) {\n outOfBounds = true;\n }\n }\n // horizontal bars\n else {\n if (!dataItem.hasValue(this._xValueFields)) {\n return;\n }\n if (!$type.isNaN(percentHeight)) {\n var offset = $math.round((endLocation - startLocation) * (1 - percentHeight / 100) / 2, 5);\n startLocation += offset;\n endLocation -= offset;\n }\n t = this.yAxis.getY(dataItem, yOpenField, startLocation);\n b = this.yAxis.getY(dataItem, yField, endLocation);\n // in case height is set in pixels\n if ($type.isNaN(percentHeight)) {\n var offset = (b - t - pixelHeight) / 2;\n b -= offset;\n t += offset;\n }\n // in case height is set in pixels\n if (!$type.isNaN(maxHeight) && maxHeight < Math.abs(b - t)) {\n var offset = (b - t - maxHeight) / 2;\n b -= offset;\n t += offset;\n }\n var rightLocation = dataItem.locations[xField];\n var leftLocation = dataItem.locations[xOpenField];\n // otherwise gantt chart will start items in the middle of a cell\n if (this.xAxis instanceof ValueAxis) {\n if (this.dataFields[this.xField] != this.dataFields[this.xOpenField]) {\n rightLocation = 0;\n leftLocation = 0;\n }\n }\n r = this.xAxis.getX(dataItem, xField, rightLocation);\n l = this.xAxis.getX(dataItem, xOpenField, leftLocation);\n // used to save location for bullets, but it's not a good approach\n // dataItem.locations[yField] = startLocation + (endLocation - startLocation) / 2;\n var axisLenght = Math.ceil(this.xAxis.axisLength);\n if (r < 0 && l < 0 || r > axisLenght && l > axisLenght) {\n outOfBounds = true;\n }\n r = this.fixHorizontalCoordinate(r);\n l = this.fixHorizontalCoordinate(l);\n if (Math.abs(t - b) - paddingTop - paddingBottom == 0) {\n outOfBounds = true;\n }\n }\n var w = Math.abs(r - l);\n var h = Math.abs(b - t);\n var x = Math.min(l, r);\n var y = Math.min(t, b);\n if (!outOfBounds) {\n var column_1;\n if (!dataItem.column) {\n column_1 = this.columns.create();\n //$object.forceCopyProperties(this.columns.template, column, visualProperties);\n $object.copyProperties(this, column_1, visualProperties); // need this because 3d columns are not in the same container\n $object.copyProperties(this.columns.template, column_1, visualProperties); // second time, no force, so that columns.template would override series properties\n dataItem.addSprite(column_1);\n dataItem.column = column_1;\n column_1.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\n // accessibility\n if (this.itemsFocusable()) {\n if (!$type.hasValue(this.role)) {\n this.role = \"menu\";\n }\n if (!$type.hasValue(column_1.role)) {\n column_1.role = \"menuitem\";\n }\n column_1.focusable = true;\n } else {\n if (!$type.hasValue(this.role)) {\n this.role = \"list\";\n }\n if (!$type.hasValue(column_1.role)) {\n column_1.role = \"listitem\";\n }\n column_1.focusable = false;\n }\n if (column_1.focusable) {\n column_1.events.on(\"focus\", function (ev) {\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\n }, undefined, false);\n column_1.events.on(\"blur\", function (ev) {\n column_1.readerTitle = \"\";\n }, undefined, false);\n }\n if (column_1.hoverable) {\n column_1.events.on(\"over\", function (ev) {\n column_1.readerTitle = _this.populateString(_this.itemReaderText, dataItem);\n }, undefined, false);\n column_1.events.on(\"out\", function (ev) {\n column_1.readerTitle = \"\";\n }, undefined, false);\n }\n column_1.parent = this.columnsContainer;\n column_1.virtualParent = this;\n } else {\n column_1 = dataItem.column;\n if (this._propertiesChanged) {\n $object.copyProperties(this, column_1, visualProperties);\n $object.copyProperties(this.columns.template, column_1, visualProperties);\n $array.each(visualProperties, function (property) {\n column_1[property] = column_1[property];\n });\n }\n }\n column_1.width = w;\n column_1.height = h;\n column_1.x = x;\n column_1.y = y;\n column_1.realX = l;\n column_1.realY = t;\n column_1.realWidth = r - l;\n column_1.realHeight = b - t;\n this.setColumnStates(column_1);\n if (column_1.invalid) {\n column_1.validate(); // validate as if it was used previously, it will flicker with previous dimensions\n }\n column_1.__disabled = false;\n //column.returnAfterTemp();\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (!rangeColumn) {\n rangeColumn = _this.columns.create();\n //$object.forceCopyProperties(this.columns.template, rangeColumn, visualProperties);\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\n dataItem.addSprite(rangeColumn);\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\n }\n rangeColumn.parent = axisRange.contents;\n rangeColumn.width = w;\n rangeColumn.height = h;\n rangeColumn.x = x;\n rangeColumn.y = y;\n _this.setColumnStates(rangeColumn);\n if (rangeColumn.invalid) {\n rangeColumn.validate(); // validate as if it was used previously, it will flicker with previous dimensions\n }\n rangeColumn.__disabled = false;\n //rangeColumn.returnAfterTemp();\n });\n } else {\n this.disableUnusedColumns(dataItem);\n }\n dataItem.itemWidth = w;\n dataItem.itemHeight = h;\n };\n /**\r\n * @ignore\r\n */\n ColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\n if (dataItem) {\n if (dataItem.column) {\n // otherwise might flicker when enabling\n dataItem.column.width = 0;\n dataItem.column.height = 0;\n dataItem.column.__disabled = true;\n }\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (rangeColumn) {\n // otherwise might flicker when enabling\n rangeColumn.width = 0;\n rangeColumn.height = 0;\n rangeColumn.__disabled = true;\n }\n });\n }\n };\n /**\r\n * Apply different state/coloring to columns based on the change value.\r\n *\r\n * @param sprite Sprite to apply state to\r\n * @todo Do not apply accessibility to wicks of the candlesticks\r\n */\n ColumnSeries.prototype.setColumnStates = function (sprite) {\n if (this._dropFromOpenState || this._dropFromPreviousState || this._riseFromOpenState || this._riseFromPreviousState) {\n var dataItem = sprite.dataItem;\n if (this.xAxis instanceof ValueAxis || this.yAxis instanceof ValueAxis) {\n var open_1;\n var value = void 0;\n var change = void 0;\n if (this.baseAxis == this.yAxis) {\n if (this.xOpenField && this.xField && this.xAxis instanceof ValueAxis) {\n open_1 = dataItem.getValue(this.xOpenField);\n value = dataItem.getValue(this.xField);\n }\n change = dataItem.getValue(this.xAxis.axisFieldName + \"X\", \"previousChange\");\n } else {\n if (this.yOpenField && this.yField && this.yAxis instanceof ValueAxis) {\n open_1 = dataItem.getValue(this.yOpenField);\n value = dataItem.getValue(this.yField);\n }\n change = dataItem.getValue(this.yAxis.axisFieldName + \"Y\", \"previousChange\");\n }\n if (value < open_1) {\n dataItem.droppedFromOpen = true;\n sprite.defaultState.copyFrom(this._dropFromOpenState);\n sprite.setState(this._dropFromOpenState, 0);\n } else {\n dataItem.droppedFromOpen = false;\n sprite.defaultState.copyFrom(this._riseFromOpenState);\n sprite.setState(this._riseFromOpenState, 0);\n }\n if (change < 0) {\n dataItem.droppedFromPrevious = true;\n sprite.defaultState.copyFrom(this._dropFromPreviousState);\n sprite.setState(this._dropFromPreviousState, 0);\n } else {\n dataItem.droppedFromPrevious = false;\n sprite.defaultState.copyFrom(this._riseFromPreviousState);\n sprite.setState(this._riseFromPreviousState, 0);\n }\n }\n }\n };\n Object.defineProperty(ColumnSeries.prototype, \"columns\", {\n /**\r\n * A list of column elements in the series.\r\n *\r\n * @return Columns\r\n */\n get: function () {\n if (!this._columns) {\n this._columns = new ListTemplate(this.createColumnTemplate());\n this._disposers.push(new ListDisposer(this._columns));\n this._disposers.push(this._columns.template);\n }\n return this._columns;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates and returns a column element to use as a template.\r\n *\r\n * @return Column template\r\n */\n ColumnSeries.prototype.createColumnTemplate = function () {\n return new Column();\n };\n Object.defineProperty(ColumnSeries.prototype, \"clustered\", {\n /**\r\n * @return Clustered?\r\n */\n get: function () {\n return this.getPropertyValue(\"clustered\");\n },\n /**\r\n * Cluster this series columns?\r\n *\r\n * Setting to `false` will make columns overlap with other series.\r\n *\r\n * @default true\r\n * @param value Clustered?\r\n */\n set: function (value) {\n this.setPropertyValue(\"clustered\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"dropFromOpenState\", {\n /**\r\n * @return State\r\n */\n get: function () {\n if (!this._dropFromOpenState) {\n this._dropFromOpenState = this.states.create(\"dropFromOpenState\");\n }\n return this._dropFromOpenState;\n },\n /**\r\n * A state to apply to a column when close value is lower than open value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\n set: function (value) {\n this._dropFromOpenState = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"dropFromPreviousState\", {\n /**\r\n * @return State\r\n */\n get: function () {\n if (!this._dropFromPreviousState) {\n this._dropFromPreviousState = this.states.create(\"dropFromPreviousState\");\n }\n return this._dropFromPreviousState;\n },\n /**\r\n * A state to apply to a column when its value is lower value of a previous\r\n * column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\n set: function (value) {\n this._dropFromPreviousState = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"riseFromOpenState\", {\n /**\r\n * @return State\r\n */\n get: function () {\n if (!this._riseFromOpenState) {\n this._riseFromOpenState = this.states.create(\"riseFromOpenState\");\n }\n return this._riseFromOpenState;\n },\n /**\r\n * A state to apply to a column when close value is same or higher than open\r\n * value.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * NOTE: this will work only if at least one axis is [[ValueAxis]].\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\n set: function (value) {\n this._riseFromOpenState = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries.prototype, \"riseFromPreviousState\", {\n /**\r\n * @return State\r\n */\n get: function () {\n if (!this._riseFromPreviousState) {\n this._riseFromPreviousState = this.states.create(\"riseFromPreviousState\");\n }\n return this._riseFromPreviousState;\n },\n /**\r\n * A state to apply to a column when its value is same or higher than value\r\n * of a previous column.\r\n *\r\n * Can be used to differentiate appearance based on value relations.\r\n *\r\n * @readonly You can modify state object, but can't overwrite it\r\n * @param value State\r\n */\n set: function (value) {\n this._riseFromPreviousState = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates value of the related legend item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n ColumnSeries.prototype.updateLegendValue = function (dataItem, notRange) {\n var _this = this;\n _super.prototype.updateLegendValue.call(this, dataItem, notRange);\n if (this.legendDataItem) {\n var marker = this.legendDataItem.marker;\n var fromOpenState_1;\n var fromPreviousState_1;\n if (dataItem) {\n if (dataItem.droppedFromOpen) {\n fromOpenState_1 = this._dropFromOpenState;\n } else {\n fromOpenState_1 = this._riseFromOpenState;\n }\n if (dataItem.droppedFromPrevious) {\n fromPreviousState_1 = this._dropFromPreviousState;\n } else {\n fromPreviousState_1 = this._riseFromPreviousState;\n }\n }\n $iter.each(marker.children.iterator(), function (child) {\n if (dataItem) {\n child.setState(fromPreviousState_1);\n child.setState(fromOpenState_1);\n } else {\n // todo: think what to do here, maybe apply above states based on totals?\n child.setState(_this._riseFromPreviousState);\n child.setState(_this._riseFromOpenState);\n }\n });\n }\n };\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n ColumnSeries.prototype.createLegendMarker = function (marker) {\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.removeChildren();\n var column = marker.createChild(RoundedRectangle);\n column.shouldClone = false;\n $object.copyProperties(this, column, visualProperties);\n column.copyFrom(this.columns.template);\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\n column.width = w;\n column.height = h;\n var legendDataItem = marker.dataItem;\n legendDataItem.color = this.fill;\n legendDataItem.colorOrig = this.fill;\n };\n /**\r\n * Copies all properties from another instance of [[ColumnSeries]].\r\n *\r\n * @param source Source series\r\n */\n ColumnSeries.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.columns.template.copyFrom(source.columns.template);\n };\n /**\r\n * returns bullet x location\r\n * @ignore\r\n */\n ColumnSeries.prototype.getBulletLocationX = function (bullet, field) {\n if (this.baseAxis == this.xAxis) {\n var bulletLocationX = bullet.locationX;\n if (!$type.isNumber(bulletLocationX)) {\n bulletLocationX = 0.5;\n }\n var endLocation = this.getEndLocation(bullet.dataItem);\n var startLocation = this.getStartLocation(bullet.dataItem);\n return endLocation - (endLocation - startLocation) * bulletLocationX;\n } else {\n return _super.prototype.getBulletLocationX.call(this, bullet, field);\n }\n };\n /**\r\n * returns bullet y location\r\n * @ignore\r\n */\n ColumnSeries.prototype.getBulletLocationY = function (bullet, field) {\n if (this.baseAxis == this.yAxis) {\n var bulletLocationY = bullet.locationY;\n if (!$type.isNumber(bulletLocationY)) {\n bulletLocationY = 0.5;\n }\n var endLocation = this.getEndLocation(bullet.dataItem);\n var startLocation = this.getStartLocation(bullet.dataItem);\n return endLocation - (endLocation - startLocation) * bulletLocationY;\n } else {\n return _super.prototype.getBulletLocationY.call(this, bullet, field);\n }\n };\n ColumnSeries.prototype.getAdjustedXLocation = function (dataItem, field, bulletLocationX) {\n //if (this.baseAxis == this.xAxis) {\n if (!$type.isNumber(bulletLocationX)) {\n if (dataItem) {\n bulletLocationX = dataItem.locations[field];\n } else {\n bulletLocationX = 0.5;\n }\n }\n return this._endLocation - (this._endLocation - this._startLocation) * (1 - bulletLocationX);\n //}\n //else {\n //\treturn super.getAdjustedXLocation(dataItem, field);\n //}\n };\n ColumnSeries.prototype.getAdjustedYLocation = function (dataItem, field, bulletLocationY) {\n //if (this.baseAxis == this.yAxis) {\n if (!$type.isNumber(bulletLocationY)) {\n if (dataItem) {\n bulletLocationY = dataItem.locations[field];\n } else {\n bulletLocationY = 0.5;\n }\n }\n return this._endLocation - (this._endLocation - this._startLocation) * bulletLocationY;\n //}\n //else {\n //\treturn super.getAdjustedYLocation(dataItem, field);\n //}\n };\n /**\r\n * @ignore Exclude from docs\r\n */\n ColumnSeries.prototype.fixVerticalCoordinate = function (coordinate) {\n var paddingBottom = this.columns.template.pixelPaddingBottom;\n var paddingTop = this.columns.template.pixelPaddingTop;\n var minY = -paddingTop;\n var maxY = this.yAxis.axisLength + paddingBottom;\n return $math.fitToRange(coordinate, minY, maxY);\n };\n /**\r\n * @ignore Exclude from docs\r\n */\n ColumnSeries.prototype.fixHorizontalCoordinate = function (coordinate) {\n var paddingLeft = this.columns.template.pixelPaddingLeft;\n var paddingRight = this.columns.template.pixelPaddingRight;\n var minX = -paddingLeft;\n var maxX = this.xAxis.axisLength + paddingRight;\n return $math.fitToRange(coordinate, minX, maxX);\n };\n /**\r\n * @ignore\r\n */\n ColumnSeries.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n this.columns.clear();\n };\n return ColumnSeries;\n}(XYSeries);\nexport { ColumnSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ColumnSeries\"] = ColumnSeries;\nregistry.registeredClasses[\"ColumnSeriesDataItem\"] = ColumnSeriesDataItem;\n//# sourceMappingURL=ColumnSeries.js.map","/**\r\n * TreeMap series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $type from \"../../core/utils/Type\";\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\nimport * as $object from \"../../core/utils/Object\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[TreeMapSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar TreeMapSeriesDataItem = /** @class */function (_super) {\n __extends(TreeMapSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function TreeMapSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"TreeMapSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"parentName\", {\n /**\r\n * Data for the this particular item.\r\n *\r\n * @param value Item's data\r\n */\n //public set dataContext(value: Object) {\n //\tthis._dataContext = value;\n //}\n /**\r\n * @return Item's data\r\n */\n /*\r\n public get dataContext(): Object {\r\n // It's because data of tree series is TreeMapDataItems.\r\n if (this._dataContext) {\r\n return (<any>this._dataContext).dataContext;\r\n }\r\n }*/\n /**\r\n * The name of the item's parent item.\r\n *\r\n * @return Parent name\r\n */\n get: function () {\n var treeMapDataItem = this.treeMapDataItem;\n if (treeMapDataItem && treeMapDataItem.parent) {\n return treeMapDataItem.parent.name;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"value\", {\n /**\r\n * Item's numeric value.\r\n *\r\n * @readonly\r\n * @return Value\r\n */\n get: function () {\n var treeMapDataItem = this.treeMapDataItem;\n if (treeMapDataItem) {\n return treeMapDataItem.value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapSeriesDataItem.prototype, \"treeMapDataItem\", {\n /**\r\n * A corresponding data item from the tree map.\r\n *\r\n * @readonly\r\n * @return Data item\r\n */\n get: function () {\n return this._dataContext;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\n TreeMapSeriesDataItem.prototype.hide = function (duration, delay, toValue, fields) {\n var treeMapDataItem = this.treeMapDataItem;\n if (treeMapDataItem) {\n treeMapDataItem.hide(duration);\n }\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\n };\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\n TreeMapSeriesDataItem.prototype.show = function (duration, delay, fields) {\n var treeMapDataItem = this.treeMapDataItem;\n if (treeMapDataItem) {\n treeMapDataItem.show(duration, delay, fields);\n }\n return _super.prototype.show.call(this, duration, delay, fields);\n };\n return TreeMapSeriesDataItem;\n}(ColumnSeriesDataItem);\nexport { TreeMapSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines Series for a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapSeriesEvents} for a list of available Events\r\n * @see {@link ITreeMapSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar TreeMapSeries = /** @class */function (_super) {\n __extends(TreeMapSeries, _super);\n /**\r\n * Constructor\r\n */\n function TreeMapSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"TreeMapSeries\";\n _this.applyTheme();\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.minBulletDistance = 0;\n _this.columns.template.tooltipText = \"{parentName} {name}: {value}\"; //@todo add format number?\n _this.columns.template.configField = \"config\";\n var interfaceColors = new InterfaceColorSet();\n _this.stroke = interfaceColors.getFor(\"background\");\n _this.dataFields.openValueX = \"x0\";\n _this.dataFields.valueX = \"x1\";\n _this.dataFields.openValueY = \"y0\";\n _this.dataFields.valueY = \"y1\";\n _this.sequencedInterpolation = false;\n _this.showOnInit = false;\n // otherwise nodes don't stack nicely to each other\n _this.columns.template.pixelPerfect = false;\n return _this;\n }\n /**\r\n * Processes data item.\r\n *\r\n * @param dataItem Data item\r\n * @param dataContext Raw data\r\n * @param index Index of the data item\r\n */\n TreeMapSeries.prototype.processDataItem = function (dataItem, dataContext) {\n dataContext.seriesDataItem = dataItem; // save a reference here. dataContext is TreeMapDataItem and we need to know dataItem sometimes\n _super.prototype.processDataItem.call(this, dataItem, dataContext);\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n TreeMapSeries.prototype.createDataItem = function () {\n return new TreeMapSeriesDataItem();\n };\n /**\r\n * Shows series.\r\n *\r\n * @param duration Duration of fade in (ms)\r\n * @return Animation\r\n */\n TreeMapSeries.prototype.show = function (duration) {\n if (this.preventShow) {\n return;\n }\n var interpolationDuration = this.defaultState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n this.dataItems.each(function (dataItem) {\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", dataItem.treeMapDataItem.values.value.value);\n dataItem.show(duration);\n });\n return _super.prototype.showReal.call(this, interpolationDuration);\n };\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of fade out (ms)\r\n * @return Animation\r\n */\n TreeMapSeries.prototype.hide = function (duration) {\n var interpolationDuration = this.defaultState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n var animation = _super.prototype.hideReal.call(this, interpolationDuration);\n this.dataItems.each(function (dataItem) {\n //dataItem.treeMapDataItem.setWorkingValue(\"value\", 0);\n dataItem.hide(duration);\n });\n return animation;\n };\n /**\r\n * Process values.\r\n *\r\n * @ignore Exclude from docs\r\n */\n TreeMapSeries.prototype.processValues = function () {\n // Just overriding so that inherited method does not kick in.\n };\n /**\r\n * Returns relative start location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\n TreeMapSeries.prototype.getStartLocation = function (dataItem) {\n return 0;\n };\n /**\r\n * Returns relative end location for the data item.\r\n *\r\n * @param dataItem Data item\r\n * @return Location (0-1)\r\n */\n TreeMapSeries.prototype.getEndLocation = function (dataItem) {\n return 1;\n };\n /**\r\n * @ignore\r\n */\n TreeMapSeries.prototype.dataChangeUpdate = function () {};\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n TreeMapSeries.prototype.processConfig = function (config) {\n if (config) {\n // Add empty data fields if the they are not set, so that XYSeries\n // dataField check does not result in error.\n if (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\n config.dataFields = {};\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n TreeMapSeries.prototype.createLegendMarker = function (marker) {\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.removeChildren();\n var column = marker.createChild(RoundedRectangle);\n column.shouldClone = false;\n $object.copyProperties(this, column, visualProperties);\n //column.copyFrom(<any>this.columns.template);\n column.padding(0, 0, 0, 0); // if columns will have padding (which is often), legend marker will be very narrow\n column.width = w;\n column.height = h;\n var legendDataItem = marker.dataItem;\n legendDataItem.color = column.fill;\n legendDataItem.colorOrig = column.fill;\n };\n TreeMapSeries.prototype.disableUnusedColumns = function (dataItem) {\n _super.prototype.disableUnusedColumns.call(this, dataItem);\n if (dataItem.column) {\n dataItem.column.__disabled = false;\n }\n };\n return TreeMapSeries;\n}(ColumnSeries);\nexport { TreeMapSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"TreeMapSeries\"] = TreeMapSeries;\nregistry.registeredClasses[\"TreeMapSeriesDataItem\"] = TreeMapSeriesDataItem;\n//# sourceMappingURL=TreeMapSeries.js.map","/**\r\n * TreeMap chart module.\r\n *\r\n * Parts of the functionality used in this module are taken from D3.js library\r\n * (https://d3js.org/)\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\nimport { registry } from \"../../core/Registry\";\nimport { DictionaryTemplate, DictionaryDisposer } from \"../../core/utils/Dictionary\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { TreeMapSeries } from \"../series/TreeMapSeries\";\nimport { ColorSet } from \"../../core/utils/ColorSet\";\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[TreeMap]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar TreeMapDataItem = /** @class */function (_super) {\n __extends(TreeMapDataItem, _super);\n /**\r\n * Constructor\r\n */\n function TreeMapDataItem() {\n var _this = _super.call(this) || this;\n /**\r\n * Required for squarify functionality.\r\n *\r\n * @ignore Exclude from docs\r\n */\n _this.rows = [];\n _this.className = \"TreeMapDataItem\";\n _this.values.value = {\n workingValue: 0\n };\n _this.values.x0 = {};\n _this.values.y0 = {};\n _this.values.x1 = {};\n _this.values.y1 = {};\n _this.hasChildren.children = true;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(TreeMapDataItem.prototype, \"legendDataItem\", {\n /**\r\n * @return Legend data item\r\n */\n get: function () {\n return this._legendDataItem;\n },\n /**\r\n * A legend's data item, that corresponds to this data item.\r\n *\r\n * @param value Legend data item\r\n */\n set: function (value) {\n this._legendDataItem = value;\n if (value.label) {\n value.label.dataItem = this;\n }\n if (value.valueLabel) {\n value.valueLabel.dataItem = this;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Returns a duration (ms) the Data Item should take to animate from one\r\n * value to another.\r\n *\r\n * If the duration is not specified via parameter, this method will try to\r\n * request a default duration from the related `Component`.\r\n *\r\n * @param duration Default duration (ms)\r\n * @return Duration (ms)\r\n */\n TreeMapDataItem.prototype.getDuration = function () {\n return 0;\n };\n Object.defineProperty(TreeMapDataItem.prototype, \"value\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n var value = 0;\n if (!this.children || this.children.length == 0) {\n value = this.values[\"value\"].workingValue;\n } else {\n $iter.each(this.children.iterator(), function (child) {\n var childValue = child.value;\n if ($type.isNumber(childValue)) {\n value += childValue;\n }\n });\n }\n return value;\n /*\r\n let value = this.values[\"value\"].workingValue;\r\n if (!$type.isNumber(value)) {\r\n value = 0;\r\n if (this.children) {\r\n $iter.each(this.children.iterator(), (child) => {\r\n if ($type.isNumber(child.value)) {\r\n value += child.value;\r\n }\r\n });\r\n }\r\n }\r\n return value;*/\n },\n /**\r\n * Numeric value of the item.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"value\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"percent\", {\n /**\r\n * Percent value of a node\r\n */\n get: function () {\n if (this.parent) {\n return this.value / this.parent.value * 100;\n }\n return 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"x0\", {\n /**\r\n * @return X\r\n */\n get: function () {\n return this.values.x0.value;\n },\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\n set: function (value) {\n this.setValue(\"x0\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"x1\", {\n /**\r\n * @return X\r\n */\n get: function () {\n return this.values.x1.value;\n },\n /**\r\n * Item's X position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value X\r\n */\n set: function (value) {\n this.setValue(\"x1\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"y0\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n return this.values.y0.value;\n },\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\n set: function (value) {\n this.setValue(\"y0\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"y1\", {\n /**\r\n * @return Y\r\n */\n get: function () {\n return this.values.y1.value;\n },\n /**\r\n * Item's Y position.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description (review)\r\n * @param value Y\r\n */\n set: function (value) {\n this.setValue(\"y1\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"name\", {\n /**\r\n * @return Name\r\n */\n get: function () {\n return this.properties.name;\n },\n /**\r\n * Item's name.\r\n *\r\n * @param name Name\r\n */\n set: function (name) {\n this.setProperty(\"name\", name);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"children\", {\n /**\r\n * @return Item's children\r\n */\n get: function () {\n return this.properties.children;\n },\n /**\r\n * A list of item's sub-children.\r\n *\r\n * Having children means that the TreeMap chat will automatically be\r\n * \"drillable\". Clicking on an item with children will zoom to the item, then\r\n * display its children.\r\n *\r\n * Treemap can have any level of nesting.\r\n *\r\n * @param children Item's children\r\n */\n set: function (children) {\n this.setProperty(\"children\", children);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"level\", {\n /**\r\n * Depth level in the treemap hierarchy.\r\n *\r\n * The top-level item will have level set at 0. Its children will have\r\n * level 1, and so on.\r\n *\r\n * @readonly\r\n * @return Level\r\n */\n get: function () {\n if (!this.parent) {\n return 0;\n } else {\n return this.parent.level + 1;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"color\", {\n /**\r\n * @return Color\r\n */\n get: function () {\n var color = this.properties.color;\n if (color == undefined) {\n if (this.parent) {\n color = this.parent.color;\n }\n }\n if (color == undefined) {\n if (this.component) {\n color = this.component.colors.getIndex(this.component.colors.step * this.index);\n }\n }\n return color;\n },\n /**\r\n * Item's color.\r\n *\r\n * If not set, will use parent's color, or, if that is not set either,\r\n * automatically assigned color from chart's color set. (`chart.colors`)\r\n *\r\n * @param value Color\r\n */\n set: function (value) {\n this.setProperty(\"color\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"fill\", {\n /**\r\n * @ignore\r\n * For the legend to work properly\r\n */\n get: function () {\n return this.color;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMapDataItem.prototype, \"series\", {\n get: function () {\n return this._series;\n },\n /**\r\n * Series of children data items\r\n * @todo: proper descrition\r\n */\n set: function (series) {\n if (series != this._series) {\n if (this._series) {\n this.component.series.removeValue(this._series);\n this._series.dispose();\n }\n this._series = series;\n this._disposers.push(series);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Hides the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param toValue A value to set to `fields` when hiding\r\n * @param fields A list of data fields to set value to `toValue`\r\n */\n TreeMapDataItem.prototype.hide = function (duration, delay, toValue, fields) {\n this.setWorkingValue(\"value\", 0);\n if (this.children) {\n this.children.each(function (child) {\n child.hide(duration, delay, toValue, fields);\n });\n }\n var seriesDataItem = this.seriesDataItem;\n if (seriesDataItem) {\n seriesDataItem.bullets.each(function (key, value) {\n value.hide();\n value.preventShow = true;\n });\n }\n return _super.prototype.hide.call(this, duration, delay, toValue, fields);\n };\n /**\r\n * Shows the Data Item and related visual elements.\r\n *\r\n * @param duration Animation duration (ms)\r\n * @param delay Delay animation (ms)\r\n * @param fields A list of fields to set values of\r\n */\n TreeMapDataItem.prototype.show = function (duration, delay, fields) {\n this.setWorkingValue(\"value\", this.values.value.value);\n if (this.children) {\n this.children.each(function (child) {\n child.show(duration, delay, fields);\n });\n }\n var seriesDataItem = this.seriesDataItem;\n if (seriesDataItem) {\n seriesDataItem.bullets.each(function (key, value) {\n value.preventShow = false;\n });\n }\n return _super.prototype.show.call(this, duration, delay, fields);\n };\n return TreeMapDataItem;\n}(XYChartDataItem);\nexport { TreeMapDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a TreeMap chart.\r\n *\r\n * @see {@link ITreeMapEvents} for a list of available Events\r\n * @see {@link ITreeMapAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/} for documentation\r\n */\nvar TreeMap = /** @class */function (_super) {\n __extends(TreeMap, _super);\n /**\r\n * Constructor\r\n */\n function TreeMap() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * An algorithm used to divide area into squares based on their value.\r\n *\r\n * Available options: squarify (default), binaryTree, slice, dice, sliceDice.\r\n *\r\n * ```TypeScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JavaScript\r\n * chart.layoutAlgorithm = chart.sliceDice;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"layoutAlgorithm\": \"sliceDice\",\r\n * // ...\r\n * }\r\n * ```\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/treemap/#Area_division_methods} For more info and examples.\r\n * @default squarify\r\n */\n _this.layoutAlgorithm = _this.squarify;\n /**\r\n * Is the chart zoomable?\r\n *\r\n * If the chart is `zoomable`, and items have sub-items, the chart will\r\n * drill-down to sub-items when click on their parent item.\r\n *\r\n * @default true\r\n */\n _this.zoomable = true;\n _this.className = \"TreeMap\";\n _this._usesData = true;\n _this.maxLevels = 2;\n _this.currentLevel = 0;\n _this.hideParentColumns = false;\n _this.colors = new ColorSet();\n _this.sorting = \"descending\";\n // create two value axes for the chart\n var xAxis = _this.xAxes.push(new ValueAxis());\n xAxis.title.disabled = true;\n xAxis.strictMinMax = true;\n var xRenderer = xAxis.renderer;\n xRenderer.inside = true;\n xRenderer.labels.template.disabled = true;\n xRenderer.ticks.template.disabled = true;\n xRenderer.grid.template.disabled = true;\n xRenderer.axisFills.template.disabled = true;\n xRenderer.minGridDistance = 100;\n xRenderer.line.disabled = true;\n xRenderer.baseGrid.disabled = true;\n //xRenderer.inversed = true;\n var yAxis = _this.yAxes.push(new ValueAxis());\n yAxis.title.disabled = true;\n yAxis.strictMinMax = true;\n var yRenderer = yAxis.renderer;\n yRenderer.inside = true;\n yRenderer.labels.template.disabled = true;\n yRenderer.ticks.template.disabled = true;\n yRenderer.grid.template.disabled = true;\n yRenderer.axisFills.template.disabled = true;\n yRenderer.minGridDistance = 100;\n yRenderer.line.disabled = true;\n yRenderer.baseGrid.disabled = true;\n yRenderer.inversed = true;\n // shortcuts\n _this.xAxis = xAxis;\n _this.yAxis = yAxis;\n var template = new TreeMapSeries();\n _this.seriesTemplates = new DictionaryTemplate(template);\n template.virtualParent = _this;\n _this._disposers.push(new DictionaryDisposer(_this.seriesTemplates));\n _this._disposers.push(template);\n _this.zoomOutButton.events.on(\"hit\", function () {\n _this.zoomToChartDataItem(_this._homeDataItem);\n }, undefined, false);\n _this.seriesTemplates.events.on(\"insertKey\", function (event) {\n event.newValue.isTemplate = true;\n }, undefined, false);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(TreeMap.prototype, \"navigationBar\", {\n /**\r\n * Returns navigationBar if it is added to a chart\r\n */\n get: function () {\n return this._navigationBar;\n },\n /**\r\n * A navigation bar used to show \"breadcrumb\" control, indicating current\r\n * drill-down path.\r\n */\n set: function (navigationBar) {\n var _this = this;\n if (this._navigationBar != navigationBar) {\n this._navigationBar = navigationBar;\n navigationBar.parent = this;\n navigationBar.toBack();\n navigationBar.links.template.events.on(\"hit\", function (event) {\n var dataItem = event.target.dataItem.dataContext;\n if (!dataItem.isDisposed()) {\n _this.zoomToChartDataItem(dataItem);\n _this.createTreeSeries(dataItem);\n }\n }, undefined, true);\n this._disposers.push(navigationBar);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * (Re)validates chart's data.\r\n *\r\n * @ignore Exclude from docs\r\n */\n TreeMap.prototype.validateData = function () {\n this.series.clear();\n this._tempSeries = [];\n _super.prototype.validateData.call(this);\n if (this._homeDataItem) {\n this._homeDataItem.dispose();\n }\n var homeDataItem = this.dataItems.template.clone(); // cant' use createDataItem here!\n this._homeDataItem = homeDataItem;\n $iter.each(this.dataItems.iterator(), function (dataItem) {\n dataItem.parent = homeDataItem;\n });\n homeDataItem.children = this.dataItems;\n homeDataItem.x0 = 0;\n homeDataItem.y0 = 0;\n homeDataItem.name = this._homeText;\n var maxX = 1000;\n var maxY = Math.round(maxX * this.pixelHeight / this.pixelWidth / 10) * 10 || 1000;\n homeDataItem.x1 = maxX;\n homeDataItem.y1 = maxY;\n this.xAxis.min = 0;\n this.xAxis.max = maxX;\n this.xAxis.getMinMax();\n this.yAxis.min = 0;\n this.yAxis.max = maxY;\n this.yAxis.getMinMax();\n this.layoutItems(homeDataItem);\n this.createTreeSeries(homeDataItem);\n this.feedLegend();\n };\n /**\r\n * Layouts and sizes all items according to their value and\r\n * `layoutAlgorithm`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Parent data item\r\n */\n TreeMap.prototype.layoutItems = function (parent, sorting) {\n if (parent) {\n var children = parent.children;\n if (!sorting) {\n sorting = this.sorting;\n }\n if (sorting == \"ascending\") {\n children.values.sort(function (a, b) {\n return a.value - b.value;\n });\n }\n if (sorting == \"descending\") {\n children.values.sort(function (a, b) {\n return b.value - a.value;\n });\n }\n this._updateDataItemIndexes(0);\n this.layoutAlgorithm(parent);\n for (var i = 0, len = children.length; i < len; i++) {\n var node = children.getIndex(i);\n if (node.children) {\n this.layoutItems(node);\n }\n }\n }\n };\n /**\r\n * Creates and returns a new treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Data item to create series out of\r\n */\n TreeMap.prototype.createTreeSeries = function (dataItem) {\n var _this = this;\n this._tempSeries = [];\n var navigationData = [dataItem];\n // create parent series and navigation data\n var parentDataItem = dataItem.parent;\n while (parentDataItem != undefined) {\n this.initSeries(parentDataItem);\n navigationData.push(parentDataItem);\n parentDataItem = parentDataItem.parent;\n }\n navigationData.reverse();\n if (this.navigationBar) {\n this.navigationBar.data = navigationData;\n }\n // create series and children series\n this.createTreeSeriesReal(dataItem);\n // add those which are not in the list\n $array.each(this._tempSeries, function (series) {\n if (_this.series.indexOf(series) == -1) {\n _this.series.push(series);\n }\n series.zIndex = series.level;\n });\n };\n /**\r\n * [createTreeSeriesReal description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\n TreeMap.prototype.createTreeSeriesReal = function (dataItem) {\n if (dataItem.children) {\n var level = dataItem.level;\n if (level < this.currentLevel + this.maxLevels) {\n this.initSeries(dataItem);\n for (var i = 0; i < dataItem.children.length; i++) {\n var child = dataItem.children.getIndex(i);\n if (child.children) {\n this.createTreeSeriesReal(child);\n }\n }\n }\n }\n };\n TreeMap.prototype.setData = function (value) {\n this.currentLevel = 0;\n this.currentlyZoomed = undefined;\n this.xAxis.start = 0;\n this.xAxis.end = 1;\n this.yAxis.start = 0;\n this.yAxis.end = 1;\n _super.prototype.setData.call(this, value);\n };\n /**\r\n * @ignore\r\n * Overriding, as tree map series are created on the fly all the time\r\n */\n TreeMap.prototype.seriesAppeared = function () {\n return true;\n };\n /**\r\n * Initializes the treemap series.\r\n *\r\n * @todo Description\r\n * @param dataItem Chart data item\r\n */\n TreeMap.prototype.initSeries = function (dataItem) {\n var _this = this;\n if (!dataItem.series) {\n var series = void 0;\n var template = this.seriesTemplates.getKey(dataItem.level.toString());\n if (template) {\n series = template.clone();\n } else {\n series = this.series.create();\n }\n // for the legend to get {value}\n series.dataItem.dataContext = dataItem;\n series.name = dataItem.name;\n series.parentDataItem = dataItem;\n dataItem.series = series;\n var level = dataItem.level;\n series.level = level;\n var dataContext = dataItem.dataContext;\n if (dataContext) {\n series.config = dataContext.config;\n }\n this.dataUsers.removeValue(series); // series do not use data directly, that's why we remove it\n series.data = dataItem.children.values;\n series.fill = dataItem.color;\n series.columnsContainer.hide(0);\n series.bulletsContainer.hide(0);\n series.columns.template.adapter.add(\"fill\", function (fill, target) {\n var dataItem = target.dataItem;\n if (dataItem) {\n var treeMapDataItem = dataItem.treeMapDataItem;\n if (treeMapDataItem) {\n target.fill = treeMapDataItem.color;\n target.adapter.remove(\"fill\"); //@todo: make it possible adapters applied once?\n return treeMapDataItem.color;\n }\n }\n });\n if (this.zoomable && (dataItem.level > this.currentLevel || dataItem.children && dataItem.children.length > 0)) {\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\n if (this.zoomable) {\n series.columns.template.events.on(\"hit\", function (event) {\n var seriesDataItem = event.target.dataItem;\n if (dataItem.level > _this.currentLevel) {\n _this.zoomToChartDataItem(seriesDataItem.treeMapDataItem.parent);\n } else {\n _this.zoomToSeriesDataItem(seriesDataItem);\n }\n }, this, undefined);\n }\n }\n }\n this._tempSeries.push(dataItem.series);\n };\n /**\r\n * Toggles bullets so that labels that belong to current drill level are\r\n * shown.\r\n *\r\n * @param duration Animation duration (ms)\r\n */\n TreeMap.prototype.toggleBullets = function (duration) {\n var _this = this;\n // hide all series which are not in tempSeries\n $iter.each(this.series.iterator(), function (series) {\n if (_this._tempSeries.indexOf(series) == -1) {\n //series.hideReal(duration);\n series.columnsContainer.hide();\n series.bulletsContainer.hide(duration);\n } else {\n //series.showReal(duration);\n series.columnsContainer.show();\n series.bulletsContainer.show(duration);\n series.dataItems.each(function (dataItem) {\n dataItem.bullets.each(function (key, bullet) {\n bullet.show();\n });\n });\n if (series.level < _this.currentLevel) {\n if (_this.hideParentColumns) {\n series.columnsContainer.hide();\n }\n series.bulletsContainer.hide(duration);\n } else if (series.level == _this.currentLevel) {\n if (_this.maxLevels > 1) {\n series.dataItems.each(function (dataItem) {\n if (dataItem.treeMapDataItem.children) {\n dataItem.bullets.each(function (key, bullet) {\n bullet.hide();\n });\n }\n });\n }\n }\n }\n });\n };\n /**\r\n * Zooms to particular item in series.\r\n *\r\n * @param dataItem Data item\r\n */\n TreeMap.prototype.zoomToSeriesDataItem = function (dataItem) {\n this.zoomToChartDataItem(dataItem.treeMapDataItem);\n };\n /**\r\n * Zooms to particular item. If dataItem is not specified, the chart will zoom-out.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n TreeMap.prototype.zoomToChartDataItem = function (dataItem) {\n var _this = this;\n if (!dataItem) {\n dataItem = this._homeDataItem;\n }\n var zoomOutButton = this.zoomOutButton;\n // this is needed because if there is only one fist level, it won't be shown\n if (zoomOutButton) {\n if (dataItem != this._homeDataItem) {\n zoomOutButton.show();\n } else {\n zoomOutButton.hide();\n }\n }\n if (dataItem && dataItem.children) {\n this.xAxis.zoomToValues(dataItem.x0, dataItem.x1);\n this.yAxis.zoomToValues(dataItem.y0, dataItem.y1);\n this.currentLevel = dataItem.level;\n this.currentlyZoomed = dataItem;\n this.createTreeSeries(dataItem);\n var rangeChangeAnimation = this.xAxis.rangeChangeAnimation || this.yAxis.rangeChangeAnimation;\n if (rangeChangeAnimation && !rangeChangeAnimation.isDisposed() && !rangeChangeAnimation.isFinished()) {\n this._dataDisposers.push(rangeChangeAnimation);\n rangeChangeAnimation.events.once(\"animationended\", function () {\n _this.toggleBullets();\n });\n } else {\n this.toggleBullets();\n }\n }\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n TreeMap.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n // Add a default screen reader title for accessibility\n // This will be overridden in screen reader if there are any `titles` set\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"TreeMap chart\");\n }\n //this.homeText = this.language.translate(\"Home\");\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n TreeMap.prototype.createDataItem = function () {\n return new TreeMapDataItem();\n };\n Object.defineProperty(TreeMap.prototype, \"maxLevels\", {\n /**\r\n * @return Maximum drill-down level\r\n */\n get: function () {\n return this.getPropertyValue(\"maxLevels\");\n },\n /**\r\n * Maximum number of levels the chart will display initially.\r\n *\r\n * @default 2\r\n * @param value Maximum drill-down level\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxLevels\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMap.prototype, \"currentLevel\", {\n /**\r\n * @return Current level\r\n */\n get: function () {\n return this.getPropertyValue(\"currentLevel\");\n },\n /**\r\n * Current drill-down level the chart is at.\r\n *\r\n * @param value Current level\r\n */\n set: function (value) {\n this.setPropertyValue(\"currentLevel\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMap.prototype, \"hideParentColumns\", {\n /**\r\n * @return Hide?\r\n */\n get: function () {\n return this.getPropertyValue(\"hideParentColumns\");\n },\n /**\r\n * If set to `true`, columns of parent nodes will be hidden when user\r\n * drills-down into deeper levels.\r\n *\r\n * @sice 4.7.4\r\n * @default false\r\n * @param value Hide?\r\n */\n set: function (value) {\n this.setPropertyValue(\"hideParentColumns\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreeMap.prototype, \"sorting\", {\n get: function () {\n return this.getPropertyValue(\"sorting\");\n },\n /**\r\n * Sorting direction of treemap items.\r\n *\r\n * Available options: \"none\", \"ascending\", and \"descending\" (default).\r\n *\r\n * @default \"descending\"\r\n * @param value [description]\r\n */\n set: function (value) {\n this.setPropertyValue(\"sorting\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Creates and returns a new series of the suitable type.\r\n *\r\n * @return new series\r\n */\n TreeMap.prototype.createSeries = function () {\n return new TreeMapSeries();\n };\n Object.defineProperty(TreeMap.prototype, \"homeText\", {\n /**\r\n * @return Home text\r\n */\n get: function () {\n return this._homeText;\n },\n /**\r\n * A text displayed on the \"home\" button which is used to go back to level 0\r\n * after drill into sub-items.\r\n *\r\n * @param value Home text\r\n */\n set: function (value) {\n this._homeText = value;\n if (this._homeDataItem) {\n this._homeDataItem.name = this._homeText;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n TreeMap.prototype.processConfig = function (config) {\n if (config) {\n // Instantiate layout algorithm\n if ($type.hasValue(config[\"layoutAlgorithm\"]) && $type.isString(config[\"layoutAlgorithm\"])) {\n switch (config[\"layoutAlgorithm\"]) {\n case \"squarify\":\n config[\"layoutAlgorithm\"] = this.squarify;\n break;\n case \"binaryTree\":\n config[\"layoutAlgorithm\"] = this.binaryTree;\n break;\n case \"slice\":\n config[\"layoutAlgorithm\"] = this.slice;\n break;\n case \"dice\":\n config[\"layoutAlgorithm\"] = this.dice;\n break;\n case \"sliceDice\":\n config[\"layoutAlgorithm\"] = this.sliceDice;\n break;\n default:\n delete config[\"layoutAlgorithm\"];\n break;\n }\n }\n // Set type for navigation bar\n if ($type.hasValue(config.navigationBar) && !$type.hasValue(config.navigationBar.type)) {\n config.navigationBar.type = \"NavigationBar\";\n }\n _super.prototype.processConfig.call(this, config);\n }\n };\n /**\r\n * Measures the size of container and informs its children of how much size\r\n * they can occupy, by setting their relative `maxWidth` and `maxHeight`\r\n * properties.\r\n *\r\n * @ignore Exclude from docs\r\n */\n TreeMap.prototype.validateLayout = function () {\n _super.prototype.validateLayout.call(this);\n this.layoutItems(this.currentlyZoomed);\n };\n /**\r\n * Validates (processes) data items.\r\n *\r\n * @ignore Exclude from docs\r\n */\n TreeMap.prototype.validateDataItems = function () {\n _super.prototype.validateDataItems.call(this);\n this.layoutItems(this._homeDataItem);\n $iter.each(this.series.iterator(), function (series) {\n series.validateRawData();\n });\n this.zoomToChartDataItem(this._homeDataItem);\n };\n /**\r\n * ==========================================================================\r\n * TREEMAP LAYOUT FUNCTIONS\r\n * ==========================================================================\r\n * @hidden\r\n */\n /**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * --------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n * this list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright\r\n * notice,this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n * contributors may be used to endorse or promote products derived from\r\n * this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * --------------------------------------------------------------------------\r\n * @hidden\r\n */\n /**\r\n * Treemap layout algorithm: binaryTree.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\n TreeMap.prototype.binaryTree = function (parent) {\n var nodes = parent.children,\n i,\n n = nodes.length,\n sum,\n sums = new Array(n + 1);\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes.getIndex(i).value;\n }\n if (n > 0) {\n partition(0, n, parent.value, parent.x0, parent.y0, parent.x1, parent.y1);\n }\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes.getIndex(i);\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n return;\n }\n var valueOffset = sums[i],\n valueTarget = value / 2 + valueOffset,\n k = i + 1,\n hi = j - 1;\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) {\n k = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (valueTarget - sums[k - 1] < sums[k] - valueTarget && i + 1 < k) {\n --k;\n }\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n if (value == 0) {\n var node = nodes.getIndex(i);\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n return;\n }\n if (x1 - x0 > y1 - y0) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n };\n /**\r\n * Treemap layout algorithm: slice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\n TreeMap.prototype.slice = function (parent) {\n var x0 = parent.x0;\n var x1 = parent.x1;\n var y0 = parent.y0;\n var y1 = parent.y1;\n var nodes = parent.children;\n var node;\n var i = -1;\n var n = nodes.length;\n var k = parent.value && (y1 - y0) / parent.value;\n while (++i < n) {\n node = nodes.getIndex(i);\n node.x0 = x0;\n node.x1 = x1;\n node.y0 = y0;\n y0 += node.value * k;\n node.y1 = y0;\n }\n };\n /**\r\n * Treemap layout algorithm: dice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\n TreeMap.prototype.dice = function (parent) {\n var x0 = parent.x0;\n var x1 = parent.x1;\n var y0 = parent.y0;\n var y1 = parent.y1;\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n while (++i < n) {\n node = nodes.getIndex(i);\n node.y0 = y0;\n node.y1 = y1;\n node.x0 = x0;\n x0 += node.value * k;\n node.x1 = x0;\n }\n };\n /**\r\n * Treemap layout algorithm: slideDice.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\n TreeMap.prototype.sliceDice = function (parent) {\n if (parent.level & 1) {\n this.slice(parent);\n } else {\n this.dice(parent);\n }\n };\n /**\r\n * Treemap layout algorithm: squarify.\r\n *\r\n * @ignore Exclude from docs\r\n * @param parent Data item\r\n */\n TreeMap.prototype.squarify = function (parent) {\n var ratio = (1 + Math.sqrt(5)) / 2;\n var x0 = parent.x0;\n var x1 = parent.x1;\n var y0 = parent.y0;\n var y1 = parent.y1;\n var nodes = parent.children;\n var nodeValue;\n var i0 = 0;\n var i1 = 0;\n var n = nodes.length;\n var dx;\n var dy;\n var value = parent.value;\n var sumValue;\n var minValue;\n var maxValue;\n var newRatio;\n var minRatio;\n var alpha;\n var beta;\n while (i0 < n) {\n dx = x1 - x0;\n dy = y1 - y0;\n // Find the next non-empty node.\n do {\n sumValue = nodes.getIndex(i1++).value;\n } while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes.getIndex(i1).value;\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n // Position and record the row orientation.\n var row = this.dataItems.template.clone();\n row.value = sumValue;\n row.dice = dx < dy;\n row.children = nodes.slice(i0, i1);\n row.x0 = x0;\n row.y0 = y0;\n row.x1 = x1;\n row.y1 = y1;\n if (row.dice) {\n row.y1 = value ? y0 += dy * sumValue / value : y1;\n this.dice(row);\n } else {\n row.x1 = value ? x0 += dx * sumValue / value : x1;\n this.slice(row);\n }\n value -= sumValue;\n i0 = i1;\n }\n };\n TreeMap.prototype.handleSeriesAdded2 = function () {\n // void\n };\n /**\r\n * [handleDataItemValueChange description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\n TreeMap.prototype.handleDataItemValueChange = function (dataItem, name) {\n if (name == \"value\") {\n this.invalidateDataItems();\n }\n };\n TreeMap.prototype.handleDataItemWorkingValueChange = function (dataItem, name) {\n if (name == \"value\") {\n this.invalidateDataItems();\n }\n };\n TreeMap.prototype.getLegendLevel = function (dataItem) {\n if (!dataItem) {\n return;\n }\n if (!dataItem.children) {\n return;\n }\n if (dataItem.children.length > 1) {\n return dataItem;\n } else if (dataItem.children.length == 1) {\n var child = dataItem.children.getIndex(0);\n if (child.children) {\n return this.getLegendLevel(child);\n } else {\n return dataItem;\n }\n } else {\n return dataItem;\n }\n };\n TreeMap.prototype.handleLegendSeriesAdded = function (series) {\n // void\n };\n Object.defineProperty(TreeMap.prototype, \"homeDataItem\", {\n /**\r\n * A data item associated with top node.\r\n *\r\n * @since 4.8.2\r\n */\n get: function () {\n return this._homeDataItem;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Setups the legend to use the chart's data.\r\n * @ignore\r\n */\n TreeMap.prototype.feedLegend = function () {\n var legend = this.legend;\n if (legend) {\n legend.dataFields.name = \"name\";\n var legendParent = this.getLegendLevel(this._homeDataItem);\n if (legendParent) {\n var legendData_1 = [];\n legendParent.children.each(function (dataItem) {\n //if (!dataItem.hiddenInLegend) {\n legendData_1.push(dataItem);\n //}\n });\n legend.data = legendData_1;\n }\n }\n };\n /**\r\n * @ignore\r\n */\n TreeMap.prototype.disposeData = function () {\n _super.prototype.disposeData.call(this);\n this._homeDataItem = undefined;\n this.series.clear();\n if (this.navigationBar) {\n this.navigationBar.disposeData();\n }\n this.xAxis.disposeData();\n this.yAxis.disposeData();\n };\n /**\r\n * Since this chart uses hierarchical data, we need to remove childrent\r\n * dataField from export of non-hierarchical formats such as CSV and XSLX.\r\n *\r\n * @return Export\r\n */\n TreeMap.prototype.getExporting = function () {\n var _this = this;\n var exporting = _super.prototype.getExporting.call(this);\n exporting.adapter.add(\"formatDataFields\", function (info) {\n if (info.format == \"csv\" || info.format == \"xlsx\") {\n if ($type.hasValue(_this.dataFields.children)) {\n delete info.dataFields[_this.dataFields.children];\n }\n }\n return info;\n });\n return exporting;\n };\n return TreeMap;\n}(XYChart);\nexport { TreeMap };\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"TreeMap\"] = TreeMap;\n//# sourceMappingURL=TreeMap.js.map","/**\r\n * Module, defining Axis Renderer for horizontal 3D axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Renderer for horizontal 3D axis.\r\n *\r\n * @see {@link IAxisRendererX3DEvents} for a list of available events\r\n * @see {@link IAxisRendererX3DAdapters} for a list of available Adapters\r\n */\nvar AxisRendererX3D = /** @class */function (_super) {\n __extends(AxisRendererX3D, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererX3D() {\n var _this = _super.call(this) || this;\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\n _this._chart = new MutableValueDisposer();\n _this.className = \"AxisRendererX3D\";\n _this._disposers.push(_this._chart);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererX3D.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n if (grid.element) {\n var dx = this.chart.dx3D || 0;\n var dy = this.chart.dy3D || 0;\n var h = this.getHeight();\n grid.path = $path.moveTo({\n x: dx,\n y: dy\n }) + $path.lineTo({\n x: dx,\n y: h + dy\n }) + $path.lineTo({\n x: 0,\n y: h\n });\n }\n this.positionItem(grid, point);\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererX3D.prototype.updateBaseGridElement = function () {\n _super.prototype.updateBaseGridElement.call(this);\n var h = this.getHeight();\n var dx = this.chart.dx3D || 0;\n var dy = this.chart.dy3D || 0;\n this.baseGrid.path = $path.moveTo({\n x: dx,\n y: dy\n }) + $path.lineTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: h\n });\n };\n Object.defineProperty(AxisRendererX3D.prototype, \"chart\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\n get: function () {\n return this._chart.get();\n },\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\n set: function (chart) {\n if (chart) {\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\n AxisRendererX3D.prototype.handle3DChanged = function (event) {\n if (event.property == \"depth\" || event.property == \"angle\") {\n this.invalidate();\n }\n };\n return AxisRendererX3D;\n}(AxisRendererX);\nexport { AxisRendererX3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"AxisRendererX3D\"] = AxisRendererX3D;\n//# sourceMappingURL=AxisRendererX3D.js.map","/**\r\n * Module, defining Axis Renderer for vertical 3D axes.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Renderer for vertical 3D axis.\r\n *\r\n * @see {@link IAxisRendererY3DEvents} for a list of available events\r\n * @see {@link IAxisRendererY3DAdapters} for a list of available Adapters\r\n */\nvar AxisRendererY3D = /** @class */function (_super) {\n __extends(AxisRendererY3D, _super);\n /**\r\n * Constructor.\r\n *\r\n * @param axis Related axis\r\n */\n function AxisRendererY3D() {\n var _this = _super.call(this) || this;\n /**\r\n * A related chart.\r\n *\r\n * @todo Description\r\n */\n _this._chart = new MutableValueDisposer();\n _this.className = \"AxisRendererY3D\";\n _this._disposers.push(_this._chart);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Updates and positions a grid element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param grid Grid element\r\n * @param position Starting position\r\n * @param endPosition End position\r\n */\n AxisRendererY3D.prototype.updateGridElement = function (grid, position, endPosition) {\n position = position + (endPosition - position) * grid.location;\n var point = this.positionToPoint(position);\n if (grid.element) {\n var dx = this.chart.dx3D || 0;\n var dy = this.chart.dy3D || 0;\n var w = this.getWidth();\n grid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: dx,\n y: dy\n }) + $path.lineTo({\n x: w + dx,\n y: dy\n });\n }\n this.positionItem(grid, point);\n this.toggleVisibility(grid, position, 0, 1);\n };\n /**\r\n * Updates and positions the base grid element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n AxisRendererY3D.prototype.updateBaseGridElement = function () {\n _super.prototype.updateBaseGridElement.call(this);\n var dx = this.chart.dx3D || 0;\n var dy = this.chart.dy3D || 0;\n var w = this.getWidth();\n this.baseGrid.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: w,\n y: 0\n }) + $path.lineTo({\n x: w + dx,\n y: dy\n });\n };\n Object.defineProperty(AxisRendererY3D.prototype, \"chart\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Chart\r\n */\n get: function () {\n return this._chart.get();\n },\n /**\r\n * Chart, associated with the Axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Chart\r\n */\n set: function (chart) {\n if (chart) {\n this._chart.set(chart, chart.events.on(\"propertychanged\", this.handle3DChanged, this, false));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Invoked when 3D-related settings change, like depth or angle.\r\n *\r\n * @param event Event\r\n */\n AxisRendererY3D.prototype.handle3DChanged = function (event) {\n if (event.property == \"depth\" || event.property == \"angle\") {\n this.invalidate();\n }\n };\n return AxisRendererY3D;\n}(AxisRendererY);\nexport { AxisRendererY3D };\n//# sourceMappingURL=AxisRendererY3D.js.map","/**\r\n * Module that defines everything related to building 3D Columns.\r\n * It is a container which has column3D element which is a Rectangle3D.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Column } from \"./Column\";\nimport { Rectangle3D } from \"../../core/elements/3d/Rectangle3D\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates Column3Ds.\r\n *\r\n * @see {@link IColumn3DEvents} for a list of available events\r\n * @see {@link IColumn3DAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar Column3D = /** @class */function (_super) {\n __extends(Column3D, _super);\n /**\r\n * Constructor\r\n */\n function Column3D() {\n var _this = _super.call(this) || this;\n _this.className = \"Column3D\";\n return _this;\n }\n /**\r\n * @ignore\r\n */\n Column3D.prototype.createAssets = function () {\n this.column3D = this.createChild(Rectangle3D);\n this.column3D.shouldClone = false;\n this.column3D.strokeOpacity = 0;\n // some dirty hack so that if user access column, it won't get error\n this.column = this.column3D;\n };\n /**\r\n * @ignore Exclude from docs\r\n */\n Column3D.prototype.validate = function () {\n _super.prototype.validate.call(this);\n if (this.column3D) {\n this.column3D.width = this.pixelWidth;\n this.column3D.height = this.pixelHeight;\n if (this.column3D.invalid) {\n this.column3D.validate();\n }\n }\n };\n /**\r\n * Copies all parameters from another [[Column3D]].\r\n *\r\n * @param source Source Column3D\r\n */\n Column3D.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.column3D) {\n this.column3D.copyFrom(source.column3D);\n }\n };\n /**\r\n * Sets actual `fill` property on the SVG element, including applicable color\r\n * modifiers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Fill\r\n */\n Column3D.prototype.setFill = function (value) {\n _super.prototype.setFill.call(this, value);\n this.column.fill = value;\n };\n return Column3D;\n}(Column);\nexport { Column3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Column3D\"] = Column3D;\n//# sourceMappingURL=Column3D.js.map","/**\r\n * 3D column series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\nimport { Column3D } from \"../elements/Column3D\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\nvar ColumnSeries3DDataItem = /** @class */function (_super) {\n __extends(ColumnSeries3DDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ColumnSeries3DDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ColumnSeries3DDataItem\";\n _this.applyTheme();\n return _this;\n }\n return ColumnSeries3DDataItem;\n}(ColumnSeriesDataItem);\nexport { ColumnSeries3DDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IColumnSeries3DEvents} for a list of available Events\r\n * @see {@link IColumnSeries3DAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar ColumnSeries3D = /** @class */function (_super) {\n __extends(ColumnSeries3D, _super);\n /**\r\n * Constructor\r\n */\n function ColumnSeries3D() {\n var _this = _super.call(this) || this;\n _this.className = \"ColumnSeries3D\";\n _this.columns.template.column3D.applyOnClones = true;\n _this.columns.template.hiddenState.properties.visible = true;\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(ColumnSeries3D.prototype, \"columnsContainer\", {\n /**\r\n * @ignore\r\n */\n get: function () {\n var chart = this.chart;\n if (chart && chart.columnsContainer && chart.leftAxesContainer.layout != \"vertical\" && chart.rightAxesContainer.layout != \"vertical\" && chart.bottomAxesContainer.layout != \"horizontal\" && chart.topAxesContainer.layout != \"horizontal\") {\n return chart.columnsContainer;\n } else {\n return this._columnsContainer;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n ColumnSeries3D.prototype.validateDataElementReal = function (dataItem) {\n _super.prototype.validateDataElementReal.call(this, dataItem);\n if (dataItem.column) {\n dataItem.column.dx = this.dx;\n dataItem.column.dy = this.dy;\n dataItem.column.visible = this.visible;\n }\n };\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n */\n ColumnSeries3D.prototype.validateDataElements = function () {\n _super.prototype.validateDataElements.call(this);\n if (this.chart) {\n this.chart.invalidateLayout();\n }\n };\n /**\r\n * Returns an element to use for 3D bar.\r\n * @ignore\r\n * @return Element.\r\n */\n ColumnSeries3D.prototype.createColumnTemplate = function () {\n return new Column3D();\n };\n Object.defineProperty(ColumnSeries3D.prototype, \"depth\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth (height) of the slices in the series in pixels.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Depth (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"depth\", value, true);\n var template = this.columns.template; // todo: Cone is not Rectangle3D, maybe we should do some I3DShape?\n template.column3D.depth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColumnSeries3D.prototype, \"angle\", {\n /**\r\n * @ignore Exclude from docs\r\n * @return Angle (0-360)\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * Angle of view for the slices in series. (0-360)\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Angle (0-360)\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value);\n var template = this.columns.template;\n template.column3D.angle = value;\n },\n enumerable: true,\n configurable: true\n });\n return ColumnSeries3D;\n}(ColumnSeries);\nexport { ColumnSeries3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ColumnSeries3D\"] = ColumnSeries3D;\nregistry.registeredClasses[\"ColumnSeries3DDataItem\"] = ColumnSeries3DDataItem;\n//# sourceMappingURL=ColumnSeries3D.js.map","/**\r\n * Module for building 3D serial charts.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * Imports\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { XYChart, XYChartDataItem } from \"./XYChart\";\nimport { Container } from \"../../core/Container\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { AxisRendererX3D } from \"../axes/AxisRendererX3D\";\nimport { AxisRendererY3D } from \"../axes/AxisRendererY3D\";\nimport { ColumnSeries3D } from \"../series/ColumnSeries3D\";\nimport { registry } from \"../../core/Registry\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[XYChart3D]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar XYChart3DDataItem = /** @class */function (_super) {\n __extends(XYChart3DDataItem, _super);\n function XYChart3DDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"XYChart3DDataItem\";\n _this.applyTheme();\n return _this;\n }\n return XYChart3DDataItem;\n}(XYChartDataItem);\nexport { XYChart3DDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a 3D XY chart.\r\n *\r\n * @see {@link IXYChart3DEvents} for a list of available Events\r\n * @see {@link IXYChart3DAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\nvar XYChart3D = /** @class */function (_super) {\n __extends(XYChart3D, _super);\n /**\r\n * Constructor\r\n */\n function XYChart3D() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Type of the axis renderer to use for X axes.\r\n */\n _this._axisRendererX = AxisRendererX3D;\n /**\r\n * Type of the axis renderer to use for Y axes.\r\n */\n _this._axisRendererY = AxisRendererY3D;\n _this.className = \"XYChart3D\";\n // Set defaults\n _this.depth = 30;\n _this.angle = 30;\n // Creeate container for columns\n var columnsContainer = _this.seriesContainer.createChild(Container);\n columnsContainer.shouldClone = false;\n columnsContainer.isMeasured = false;\n columnsContainer.layout = \"none\";\n _this.columnsContainer = columnsContainer;\n _this.columnsContainer.mask = _this.createChild(Sprite);\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * This is done because for some reason IE doesn't change mask if path of a\r\n * mask changes.\r\n */\n XYChart3D.prototype.updateSeriesMasks = function () {\n _super.prototype.updateSeriesMasks.call(this);\n if ($utils.isIE()) {\n var columnsContainer = this.columnsContainer;\n var mask = columnsContainer.mask;\n columnsContainer.mask = undefined;\n columnsContainer.mask = mask;\n }\n };\n Object.defineProperty(XYChart3D.prototype, \"depth\", {\n /**\r\n * @return Depth (px)\r\n */\n get: function () {\n return this.getPropertyValue(\"depth\");\n },\n /**\r\n * Depth of the 3D chart / columns in pixels.\r\n *\r\n * @param value Depth (px)\r\n */\n set: function (value) {\n this.setPropertyValue(\"depth\", value);\n this.fixLayout();\n this.invalidateDataUsers();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart3D.prototype, \"angle\", {\n /**\r\n * @return Angle\r\n */\n get: function () {\n return this.getPropertyValue(\"angle\");\n },\n /**\r\n * Angle the chart is viewed at.\r\n *\r\n * @todo Description (review)\r\n * @param value Angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"angle\", value);\n this.fixLayout();\n this.invalidateDataUsers();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart3D.prototype, \"dx3D\", {\n /**\r\n * A calculated horizontal 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\n get: function () {\n return $math.cos(this.angle) * this.depth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYChart3D.prototype, \"dy3D\", {\n /**\r\n * A calculated vertical 3D offset (px).\r\n *\r\n * @readonly\r\n * @return Offset (px)\r\n */\n get: function () {\n return -$math.sin(this.angle) * this.depth;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * (Re)validates layout\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYChart3D.prototype.validateLayout = function () {\n _super.prototype.validateLayout.call(this);\n this.fixColumns();\n };\n /**\r\n * Updates the layout (padding and scrollbar positions) to accommodate for\r\n * 3D depth and angle.\r\n */\n XYChart3D.prototype.fixLayout = function () {\n this.chartContainer.paddingTop = -this.dy3D;\n this.chartContainer.paddingRight = this.dx3D;\n if (this.scrollbarX) {\n this.scrollbarX.dy = this.dy3D;\n this.scrollbarX.dx = this.dx3D;\n }\n if (this.scrollbarY) {\n this.scrollbarY.dy = this.dy3D;\n this.scrollbarY.dx = this.dx3D;\n }\n this.fixColumns();\n _super.prototype.fixLayout.call(this);\n };\n /**\r\n * Updates column positions, offset and dimensions based on chart's angle\r\n * and depth.\r\n */\n XYChart3D.prototype.fixColumns = function () {\n var _this = this;\n var count = 1;\n var i = 0;\n $iter.each(this.series.iterator(), function (series) {\n if (series instanceof ColumnSeries3D) {\n if (!series.clustered && i > 0) {\n count++;\n }\n series.depthIndex = count - 1;\n i++;\n }\n });\n var s = 0;\n $iter.each(this.series.iterator(), function (series) {\n if (series instanceof ColumnSeries3D) {\n series.depth = _this.depth / count;\n series.angle = _this.angle;\n if (series.columnsContainer == _this.columnsContainer) {\n series.dx = _this.depth / count * $math.cos(_this.angle) * series.depthIndex;\n series.dy = -_this.depth / count * $math.sin(_this.angle) * series.depthIndex;\n }\n var inversed_1 = false;\n if (series.baseAxis == series.xAxis && series.xAxis.renderer.inversed || series.baseAxis == series.yAxis && series.yAxis.renderer.inversed) {\n inversed_1 = true;\n }\n var i_1 = 1;\n series.dataItems.each(function (dataItem) {\n var column = dataItem.column;\n if (column) {\n if (inversed_1) {\n column.zIndex = 1000 * (1000 - i_1) + s - series.depthIndex * 100;\n } else {\n column.zIndex = 1000 * i_1 + s - series.depthIndex * 100;\n }\n }\n i_1++;\n });\n if (inversed_1) {\n s--;\n } else {\n s++;\n }\n }\n });\n this.maskColumns();\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n XYChart3D.prototype.processConfig = function (config) {\n if (config) {\n // Set up series\n if ($type.hasValue(config.series) && $type.isArray(config.series)) {\n for (var i = 0, len = config.series.length; i < len; i++) {\n config.series[i].type = config.series[i].type || \"ColumnSeries3D\";\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n XYChart3D.prototype.maskColumns = function () {\n var w = this.plotContainer.pixelWidth;\n var h = this.plotContainer.pixelHeight;\n var dx = this.dx3D;\n var dy = this.dy3D;\n var path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: dx,\n y: dy\n }) + $path.lineTo({\n x: w + dx,\n y: dy\n }) + $path.lineTo({\n x: w + dx,\n y: h + dy\n }) + $path.lineTo({\n x: w,\n y: h\n }) + $path.lineTo({\n x: w,\n y: h\n }) + $path.lineTo({\n x: 0,\n y: h\n }) + $path.closePath();\n var columnsContainer = this.columnsContainer;\n if (columnsContainer && columnsContainer.mask) {\n columnsContainer.mask.path = path;\n }\n };\n return XYChart3D;\n}(XYChart);\nexport { XYChart3D };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"XYChart3D\"] = XYChart3D;\n//# sourceMappingURL=XYChart3D.js.map","/**\r\n * HeatLegend module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { LinearGradient } from \"../../core/rendering/fills/LinearGradient\";\nimport { registry } from \"../../core/Registry\";\nimport { toColor, Color } from \"../../core/utils/Color\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { ValueAxis } from \"../../charts/axes/ValueAxis\";\nimport { AxisRendererX } from \"../../charts/axes/AxisRendererX\";\nimport { AxisRendererY } from \"../../charts/axes/AxisRendererY\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $colors from \"../../core/utils/Colors\";\nimport { RoundedRectangle } from \"../../core/elements/RoundedRectangle\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * This class creates a link (waved color-filled line) between two nodes in a\r\n * Sankey Diagram.\r\n *\r\n * @see {@link IHeatLegendEvents} for a list of available events\r\n * @see {@link IHeatLegendAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar HeatLegend = /** @class */function (_super) {\n __extends(HeatLegend, _super);\n /**\r\n * Constructor\r\n */\n function HeatLegend() {\n var _this = _super.call(this) || this;\n _this.className = \"HeatLegend\";\n _this.markerContainer = _this.createChild(Container);\n _this.markerContainer.shouldClone = false;\n _this.markerCount = 1;\n // Create a template container and list for the a marker\n var marker = new RoundedRectangle();\n marker.minHeight = 20;\n marker.minWidth = 20;\n marker.interactionsEnabled = false;\n marker.fillOpacity = 1;\n marker.cornerRadius(0, 0, 0, 0);\n _this.markerContainer.minHeight = 20;\n _this.markerContainer.minWidth = 20;\n _this.orientation = \"horizontal\";\n _this.markers = new ListTemplate(marker);\n _this._disposers.push(new ListDisposer(_this.markers));\n _this._disposers.push(_this.markers.template);\n _this.applyTheme();\n return _this;\n }\n HeatLegend.prototype.getMinFromRules = function (property) {\n var series = this.series;\n if (series) {\n var minValue_1;\n $iter.eachContinue(series.heatRules.iterator(), function (heatRule) {\n if (heatRule.property == property) {\n minValue_1 = heatRule.min;\n return false;\n }\n return true;\n });\n return minValue_1;\n }\n };\n HeatLegend.prototype.getMaxFromRules = function (property) {\n var series = this.series;\n if (series) {\n var maxValue_1;\n $iter.each(series.heatRules.iterator(), function (heatRule) {\n if (heatRule.property == property) {\n maxValue_1 = heatRule.max;\n return false;\n }\n return true;\n });\n return maxValue_1;\n }\n };\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n HeatLegend.prototype.validate = function () {\n _super.prototype.validate.call(this);\n this.valueAxis.renderer.inversed = this.reverseOrder;\n var series = this.series;\n var minColor = this.minColor;\n var maxColor = this.maxColor;\n if (!$type.hasValue(minColor)) {\n minColor = toColor(this.getMinFromRules(\"fill\"));\n }\n if (!$type.hasValue(maxColor)) {\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\n }\n if (series) {\n var seriesFill = series.fill;\n if (!$type.hasValue(minColor) && seriesFill instanceof Color) {\n minColor = seriesFill;\n }\n if (!$type.hasValue(maxColor) && seriesFill instanceof Color) {\n maxColor = seriesFill;\n }\n }\n if (!$type.hasValue(maxColor)) {\n maxColor = toColor(this.getMaxFromRules(\"fill\"));\n }\n var minOpacity = $type.toNumber(this.getMinFromRules(\"fillOpacity\"));\n if (!$type.isNumber(minOpacity)) {\n minOpacity = 1;\n }\n var maxOpacity = $type.toNumber(this.getMaxFromRules(\"fillOpacity\"));\n if (!$type.isNumber(maxOpacity)) {\n maxOpacity = 1;\n }\n var minStrokeOpacity = $type.toNumber(this.getMinFromRules(\"strokeOpacity\"));\n if (!$type.isNumber(minStrokeOpacity)) {\n minStrokeOpacity = 1;\n }\n var maxStrokeOpacity = $type.toNumber(this.getMaxFromRules(\"strokeOpacity\"));\n if (!$type.isNumber(maxStrokeOpacity)) {\n maxStrokeOpacity = 1;\n }\n var minStroke = toColor(this.getMinFromRules(\"stroke\"));\n var maxStroke = toColor(this.getMaxFromRules(\"stroke\"));\n //if (series) {\n for (var i = 0; i < this.markerCount; i++) {\n var marker = this.markers.getIndex(i);\n if (!marker) {\n marker = this.markers.create();\n marker.parent = this.markerContainer;\n marker.height = percent(100);\n marker.width = percent(100);\n }\n if (this.markerCount == 1) {\n var gradient = new LinearGradient();\n if (this.reverseOrder) {\n gradient.addColor(maxColor, maxOpacity);\n gradient.addColor(minColor, minOpacity);\n } else {\n gradient.addColor(minColor, minOpacity);\n gradient.addColor(maxColor, maxOpacity);\n }\n if (this.orientation == \"vertical\") {\n gradient.rotation = -90;\n }\n marker.fill = gradient;\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\n var strokeGradient = new LinearGradient();\n if (this.reverseOrder) {\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\n strokeGradient.addColor(minStroke, minStrokeOpacity);\n } else {\n strokeGradient.addColor(minStroke, minStrokeOpacity);\n strokeGradient.addColor(maxStroke, maxStrokeOpacity);\n }\n if (this.orientation == \"vertical\") {\n strokeGradient.rotation = -90;\n }\n marker.stroke = strokeGradient;\n }\n } else {\n var c = i;\n if (this.reverseOrder) {\n c = this.markerCount - i - 1;\n }\n var color = new Color($colors.interpolate(minColor.rgb, maxColor.rgb, c / this.markerCount));\n marker.fill = color;\n var opacity = minOpacity + (maxOpacity - minOpacity) * c / this.markerCount;\n marker.fillOpacity = opacity;\n if ($type.hasValue(minStroke) && $type.hasValue(maxStroke)) {\n var color_1 = new Color($colors.interpolate(minStroke.rgb, maxStroke.rgb, c / this.markerCount));\n marker.stroke = color_1;\n var opacity_1 = minStrokeOpacity + (maxStrokeOpacity - minStrokeOpacity) * c / this.markerCount;\n marker.strokeOpacity = opacity_1;\n }\n }\n }\n var renderer = this.valueAxis.renderer;\n if (this.markerCount > 1) {\n if (this.orientation == \"horizontal\") {\n renderer.minGridDistance = this.measuredWidth / this.markerCount;\n } else {\n renderer.minGridDistance = this.measuredHeight / this.markerCount;\n }\n }\n this.valueAxis.invalidate();\n for (var i = this.markerCount, len = this.markers.length; i < len; i++) {\n this.markers.getIndex(i).parent = undefined;\n }\n };\n Object.defineProperty(HeatLegend.prototype, \"minColor\", {\n /**\r\n * Returns minColor value\r\n * @return {Color}\r\n */\n get: function () {\n return this.getPropertyValue(\"minColor\");\n },\n /**\r\n * Min color of a heat legend. If a series is set for the legend, minColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\n set: function (value) {\n if (!(value instanceof Color)) {\n value = toColor(value);\n }\n this.setColorProperty(\"minColor\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"maxColor\", {\n /**\r\n * Returns maxColor value\r\n * @return {Color}\r\n */\n get: function () {\n return this.getPropertyValue(\"maxColor\");\n },\n /**\r\n * Max color of a heat legend. If a series is set for the legend, maxColor is taken from series.\r\n *\r\n * @param {Color}\r\n */\n set: function (value) {\n if (!(value instanceof Color)) {\n value = toColor(value);\n }\n this.setColorProperty(\"maxColor\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"markerCount\", {\n /**\r\n * Returns number of color squares (markers).\r\n * @return {number}\r\n */\n get: function () {\n return this.getPropertyValue(\"markerCount\");\n },\n /**\r\n * Number of color squares (markers) in the heat legend. If only 1 marker is used, it will be filled with gradient.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n this.setPropertyValue(\"markerCount\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"minValue\", {\n /**\r\n * Returns minimum value of heat legend.\r\n * @return {number}\r\n */\n get: function () {\n return this.getPropertyValue(\"minValue\");\n },\n /**\r\n * Minimum value of heat legend's value axis. If a series is set for the legend, min is taken from series.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n this.setPropertyValue(\"minValue\", value);\n this.valueAxis.min = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"maxValue\", {\n /**\r\n * Returns maximum value of heat legend.\r\n * @return {number}\r\n */\n get: function () {\n return this.getPropertyValue(\"maxValue\");\n },\n /**\r\n * Maximum value of heat legend's value axis. If a series is set for the legend, max is taken from series.\r\n *\r\n * @param {number}\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxValue\", value);\n this.valueAxis.max = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"orientation\", {\n /**\r\n * Returns orientation value.\r\n *\r\n * @return {\"horizontal\" | \"vertical\"}\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Heat legend orientation. Note, if you change orientation of a heat legend, you must set value axis renderer properties after that, as with orientation renderer changes.\r\n *\r\n * @param {\"horizontal\" | \"vertical\"}\r\n */\n set: function (value) {\n this.setPropertyValue(\"orientation\", value, true);\n var markerContainer = this.markerContainer;\n var valueAxis = this.valueAxis;\n // HORIZONTAL\n if (value == \"horizontal\") {\n if (!$type.hasValue(this.width)) {\n this.width = 200;\n }\n this.height = undefined;\n valueAxis.width = percent(100);\n valueAxis.height = undefined;\n valueAxis.tooltip.pointerOrientation = \"vertical\";\n this.layout = \"vertical\";\n markerContainer.width = percent(100);\n markerContainer.height = undefined;\n if (!(valueAxis.renderer instanceof AxisRendererX)) {\n valueAxis.renderer = new AxisRendererX();\n }\n }\n // VERTICAL\n else {\n if (!$type.hasValue(this.height)) {\n this.height = 200;\n }\n this.width = undefined;\n this.layout = \"horizontal\";\n markerContainer.width = undefined;\n markerContainer.height = percent(100);\n valueAxis.height = percent(100);\n valueAxis.width = undefined;\n valueAxis.tooltip.pointerOrientation = \"horizontal\";\n if (!(valueAxis.renderer instanceof AxisRendererY)) {\n valueAxis.renderer = new AxisRendererY();\n }\n valueAxis.renderer.inside = true;\n valueAxis.renderer.labels.template.inside = true;\n this.markerContainer.reverseOrder = true;\n }\n var renderer = valueAxis.renderer;\n renderer.grid.template.disabled = true;\n renderer.axisFills.template.disabled = true;\n renderer.baseGrid.disabled = true;\n renderer.labels.template.padding(2, 3, 2, 3);\n renderer.minHeight = undefined;\n renderer.minWidth = undefined;\n this.markerContainer.layout = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"valueAxis\", {\n /**\r\n * Returns valueAxis value.\r\n * @return {ValueAxis}\r\n */\n get: function () {\n if (!this._valueAxis) {\n this.valueAxis = this.createChild(ValueAxis);\n this.valueAxis.shouldClone = false;\n }\n return this._valueAxis;\n },\n /**\r\n * Sets a value axis of heat legend. Value axis for heat legend is created automatically.\r\n * @param {ValueAxis}\r\n */\n set: function (valueAxis) {\n this._valueAxis = valueAxis;\n valueAxis.parent = this;\n valueAxis.strictMinMax = true;\n this.orientation = this.orientation;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HeatLegend.prototype, \"series\", {\n /**\r\n * Returns series value.\r\n * @return {Series}\r\n */\n get: function () {\n return this._series;\n },\n /**\r\n * You can set series for heat legend. It will take min, max, minColor and maxColor values from this series.\r\n * @param series\r\n */\n set: function (series) {\n var _this = this;\n this._series = series;\n var dataField = \"value\";\n try {\n var dataFieldDefined = series.heatRules.getIndex(0).dataField;\n if (dataFieldDefined) {\n dataField = dataFieldDefined;\n }\n } catch (err) {}\n this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\n series.dataItem.events.on(\"calculatedvaluechanged\", function (event) {\n _this.updateMinMax(series.dataItem.values[dataField].low, series.dataItem.values[dataField].high);\n }, undefined, false);\n series.heatRules.events.on(\"inserted\", this.invalidate, this, false);\n series.heatRules.events.on(\"removed\", this.invalidate, this, false);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates min/max of value axis.\r\n * @ignore\r\n */\n HeatLegend.prototype.updateMinMax = function (min, max) {\n var valueAxis = this.valueAxis;\n if (!$type.isNumber(this.minValue)) {\n valueAxis.min = min;\n valueAxis.invalidate();\n }\n if (!$type.isNumber(this.maxValue)) {\n valueAxis.max = max;\n valueAxis.invalidate();\n }\n };\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n HeatLegend.prototype.processConfig = function (config) {\n if (config) {\n // Set up series\n if ($type.hasValue(config.series) && $type.isString(config.series)) {\n if ($type.isString(config.series)) {\n if (this.map.hasKey(config.series)) {\n config.series = this.map.getKey(config.series);\n } else {\n var seriesId_1 = config.series;\n var disposer_1 = this.map.events.on(\"insertKey\", function (ev) {\n if (ev.key == seriesId_1) {\n this.series = ev.newValue;\n disposer_1.dispose();\n }\n }, this);\n this._disposers.push(disposer_1);\n delete config.series;\n }\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n return HeatLegend;\n}(Container);\nexport { HeatLegend };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"HeatLegend\"] = HeatLegend;\n//# sourceMappingURL=HeatLegend.js.map","/**\r\n * Module that defines everything related to building Candlesticks.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Column } from \"./Column\";\nimport { Line } from \"../../core/elements/Line\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates Candlesticks.\r\n *\r\n * @see {@link ICandlestickEvents} for a list of available events\r\n * @see {@link ICandlestickAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar Candlestick = /** @class */function (_super) {\n __extends(Candlestick, _super);\n /**\r\n * Constructor\r\n */\n function Candlestick() {\n var _this = _super.call(this) || this;\n _this.className = \"Candlestick\";\n _this.layout = \"none\";\n return _this;\n }\n /**\r\n * @ignore\r\n */\n Candlestick.prototype.createAssets = function () {\n _super.prototype.createAssets.call(this);\n this.lowLine = this.createChild(Line);\n this.lowLine.shouldClone = false;\n this.highLine = this.createChild(Line);\n this.highLine.shouldClone = false;\n };\n /**\r\n * Copies all parameters from another [[Candlestick]].\r\n *\r\n * @param source Source Candlestick\r\n */\n Candlestick.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.lowLine) {\n this.lowLine.copyFrom(source.lowLine);\n }\n if (this.highLine) {\n this.highLine.copyFrom(source.highLine);\n }\n };\n return Candlestick;\n}(Column);\nexport { Candlestick };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Candlestick\"] = Candlestick;\n//# sourceMappingURL=Candlestick.js.map","/**\r\n * Candlestick Series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { Candlestick } from \"../elements/Candlestick\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[CandlestickSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar CandlestickSeriesDataItem = /** @class */function (_super) {\n __extends(CandlestickSeriesDataItem, _super);\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\n //public _component!: CandlestickSeries;\n /**\r\n * Constructor\r\n */\n function CandlestickSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.values.lowValueX = {};\n _this.values.lowValueY = {};\n _this.values.highValueX = {};\n _this.values.highValueY = {};\n _this.className = \"CandlestickSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueX\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.lowValueX.value;\n },\n /**\r\n * Low value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"lowValueX\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"lowValueY\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.lowValueY.value;\n },\n /**\r\n * Low value for vertical axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"lowValueY\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueX\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.highValueX.value;\n },\n /**\r\n * High value for horizontal axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"highValueX\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"highValueY\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.highValueY.value;\n },\n /**\r\n * High value for vertical axis.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"highValueY\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueX\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.valueX.value;\n },\n /**\r\n * Close value for horizontal axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"valueX\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeriesDataItem.prototype, \"closeValueY\", {\n /**\r\n * @return Value\r\n */\n get: function () {\n return this.values.valueY.value;\n },\n /**\r\n * Close value for vertical axis.\r\n *\r\n * This is an alias for `valueX` added for convenience only.\r\n *\r\n * @param value Value\r\n */\n set: function (value) {\n this.setValue(\"valueY\", value);\n },\n enumerable: true,\n configurable: true\n });\n return CandlestickSeriesDataItem;\n}(ColumnSeriesDataItem);\nexport { CandlestickSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link ICandlestickSeriesEvents} for a list of available Events\r\n * @see {@link ICandlestickSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar CandlestickSeries = /** @class */function (_super) {\n __extends(CandlestickSeries, _super);\n /**\r\n * Constructor\r\n */\n function CandlestickSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"CandlestickSeries\";\n _this.groupFields.lowValueX = \"low\";\n _this.groupFields.lowValueY = \"low\";\n _this.groupFields.highValueX = \"high\";\n _this.groupFields.highValueY = \"high\";\n _this.strokeOpacity = 1;\n var interfaceColors = new InterfaceColorSet();\n var positiveColor = interfaceColors.getFor(\"positive\");\n var negativeColor = interfaceColors.getFor(\"negative\");\n _this.dropFromOpenState.properties.fill = negativeColor;\n _this.dropFromOpenState.properties.stroke = negativeColor;\n _this.riseFromOpenState.properties.fill = positiveColor;\n _this.riseFromOpenState.properties.stroke = positiveColor;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n CandlestickSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Candlestick Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n CandlestickSeries.prototype.createDataItem = function () {\n return new CandlestickSeriesDataItem();\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n CandlestickSeries.prototype.validateDataElementReal = function (dataItem) {\n _super.prototype.validateDataElementReal.call(this, dataItem);\n this.validateCandlestick(dataItem);\n };\n CandlestickSeries.prototype.validateCandlestick = function (dataItem) {\n var column = dataItem.column;\n if (column) {\n var lowLine_1 = column.lowLine;\n var highLine_1 = column.highLine;\n if (this.baseAxis == this.xAxis) {\n var x = column.pixelWidth / 2;\n lowLine_1.x = x;\n highLine_1.x = x;\n var open_1 = dataItem.getWorkingValue(this.yOpenField);\n var close_1 = dataItem.getWorkingValue(this.yField);\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\n var yClose = this.yAxis.getY(dataItem, this.yField);\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\n var pixelY = column.pixelY;\n lowLine_1.y1 = yLow - pixelY;\n highLine_1.y1 = yHigh - pixelY;\n if (open_1 < close_1) {\n lowLine_1.y2 = yOpen - pixelY;\n highLine_1.y2 = yClose - pixelY;\n } else {\n lowLine_1.y2 = yClose - pixelY;\n highLine_1.y2 = yOpen - pixelY;\n }\n }\n if (this.baseAxis == this.yAxis) {\n var y = column.pixelHeight / 2;\n lowLine_1.y = y;\n highLine_1.y = y;\n var open_2 = dataItem.getWorkingValue(this.xOpenField);\n var close_2 = dataItem.getWorkingValue(this.xField);\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\n var xClose = this.xAxis.getX(dataItem, this.xField);\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\n var pixelX = column.pixelX;\n lowLine_1.x1 = xLow - pixelX;\n highLine_1.x1 = xHigh - pixelX;\n if (open_2 < close_2) {\n lowLine_1.x2 = xOpen - pixelX;\n highLine_1.x2 = xClose - pixelX;\n } else {\n lowLine_1.x2 = xClose - pixelX;\n highLine_1.x2 = xOpen - pixelX;\n }\n }\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n // LOW LINE\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (rangeColumn) {\n var rangeLowLine = rangeColumn.lowLine;\n rangeLowLine.x = lowLine_1.x;\n rangeLowLine.y = lowLine_1.y;\n rangeLowLine.x1 = lowLine_1.x1;\n rangeLowLine.x2 = lowLine_1.x2;\n rangeLowLine.y1 = lowLine_1.y1;\n rangeLowLine.y2 = lowLine_1.y2;\n // HIGH LINE\n var rangehighLine = rangeColumn.highLine;\n rangehighLine.x = highLine_1.x;\n rangehighLine.y = highLine_1.y;\n rangehighLine.x1 = highLine_1.x1;\n rangehighLine.x2 = highLine_1.x2;\n rangehighLine.y1 = highLine_1.y1;\n rangehighLine.y2 = highLine_1.y2;\n }\n });\n }\n };\n Object.defineProperty(CandlestickSeries.prototype, \"xLowField\", {\n /**\r\n * A data field to look for \"low\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\n get: function () {\n return this._xLowField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeries.prototype, \"yLowField\", {\n /**\r\n * A data field to look for \"low\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\n get: function () {\n return this._yLowField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeries.prototype, \"xHighField\", {\n /**\r\n * A data field to look for \"high\" value for horizontal axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\n get: function () {\n return this._xHighField;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CandlestickSeries.prototype, \"yHighField\", {\n /**\r\n * A data field to look for \"high\" value for vertical axis.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Field name\r\n */\n get: function () {\n return this._yHighField;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Sets up which data fields to use for data access.\r\n */\n CandlestickSeries.prototype.defineFields = function () {\n _super.prototype.defineFields.call(this);\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (xAxis && yAxis) {\n if (this.baseAxis == xAxis) {\n var yAxisFieldName = $utils.capitalize(yAxis.axisFieldName);\n this._yLowField = \"low\" + yAxisFieldName + \"Y\";\n this._yHighField = \"high\" + yAxisFieldName + \"Y\";\n }\n if (this.baseAxis == yAxis) {\n var xAxisFieldName = $utils.capitalize(xAxis.axisFieldName);\n this._xLowField = \"low\" + xAxisFieldName + \"X\";\n this._xHighField = \"high\" + xAxisFieldName + \"X\";\n }\n this.addValueField(xAxis, this._xValueFields, this._xLowField);\n this.addValueField(xAxis, this._xValueFields, this._xHighField);\n this.addValueField(yAxis, this._yValueFields, this._yLowField);\n this.addValueField(yAxis, this._yValueFields, this._yHighField);\n }\n };\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n CandlestickSeries.prototype.createLegendMarker = function (marker) {\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.removeChildren();\n var column = marker.createChild(Candlestick);\n column.shouldClone = false;\n column.copyFrom(this.columns.template);\n var cw;\n var ch;\n var highLine = column.lowLine;\n var lowLine = column.highLine;\n if (this.baseAxis == this.yAxis) {\n cw = w / 3;\n ch = h;\n highLine.y = h / 2;\n lowLine.y = h / 2;\n highLine.x2 = w / 3;\n lowLine.x2 = w / 3;\n lowLine.x = w / 3 * 2;\n column.column.x = w / 3;\n } else {\n cw = w;\n ch = h / 3;\n highLine.x = w / 2;\n lowLine.x = w / 2;\n highLine.y2 = h / 3;\n lowLine.y2 = h / 3;\n lowLine.y = h / 3 * 2;\n column.column.y = h / 3;\n }\n column.width = cw;\n column.height = ch;\n $object.copyProperties(this, marker, visualProperties);\n $object.copyProperties(this.columns.template, column, visualProperties);\n column.stroke = this.riseFromOpenState.properties.stroke;\n column.fill = column.stroke;\n var legendDataItem = marker.dataItem;\n legendDataItem.color = column.fill;\n legendDataItem.colorOrig = column.fill;\n };\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\n CandlestickSeries.prototype.createColumnTemplate = function () {\n return new Candlestick();\n };\n return CandlestickSeries;\n}(ColumnSeries);\nexport { CandlestickSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CandlestickSeries\"] = CandlestickSeries;\nregistry.registeredClasses[\"CandlestickSeriesDataItem\"] = CandlestickSeriesDataItem;\n//# sourceMappingURL=CandlestickSeries.js.map","/**\r\n * Module that defines everything related to building OHLCs.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Candlestick } from \"./Candlestick\";\nimport { Line } from \"../../core/elements/Line\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates OHLCs.\r\n *\r\n * @see {@link IOHLCEvents} for a list of available events\r\n * @see {@link IOHLCAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar OHLC = /** @class */function (_super) {\n __extends(OHLC, _super);\n /**\r\n * Constructor\r\n */\n function OHLC() {\n var _this = _super.call(this) || this;\n _this.className = \"OHLC\";\n _this.layout = \"none\";\n return _this;\n }\n /**\r\n * @ignore\r\n */\n OHLC.prototype.createAssets = function () {\n //super.createAssets();\n this.openLine = this.createChild(Line);\n this.openLine.shouldClone = false;\n this.highLowLine = this.createChild(Line);\n this.highLowLine.shouldClone = false;\n this.closeLine = this.createChild(Line);\n this.closeLine.shouldClone = false;\n };\n /**\r\n * Copies all parameters from another [[OHLC]].\r\n *\r\n * @param source Source OHLC\r\n */\n OHLC.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.openLine) {\n this.openLine.copyFrom(source.openLine);\n }\n if (this.highLowLine) {\n this.highLowLine.copyFrom(source.highLowLine);\n }\n if (this.closeLine) {\n this.closeLine.copyFrom(source.closeLine);\n }\n };\n return OHLC;\n}(Candlestick);\nexport { OHLC };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"OHLC\"] = OHLC;\n//# sourceMappingURL=OHLC.js.map","/**\r\n * Candlestick Series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { CandlestickSeries, CandlestickSeriesDataItem } from \"./CandlestickSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { OHLC } from \"../elements/OHLC\";\nimport { registry } from \"../../core/Registry\";\nimport * as $object from \"../../core/utils/Object\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[OHLCSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar OHLCSeriesDataItem = /** @class */function (_super) {\n __extends(OHLCSeriesDataItem, _super);\n /**\r\n * Defines a type of [[Component]] this data item is used for\r\n * @todo Disabled to work around TS bug (see if we can re-enable it again)\r\n */\n //public _component!: OHLCSeries;\n /**\r\n * Constructor\r\n */\n function OHLCSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"OHLCSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return OHLCSeriesDataItem;\n}(CandlestickSeriesDataItem);\nexport { OHLCSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a candlestick graph.\r\n *\r\n * @see {@link IOHLCSeriesEvents} for a list of available Events\r\n * @see {@link IOHLCSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar OHLCSeries = /** @class */function (_super) {\n __extends(OHLCSeries, _super);\n /**\r\n * Constructor\r\n */\n function OHLCSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"OHLCSeries\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n OHLCSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"OHLC Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n OHLCSeries.prototype.createDataItem = function () {\n return new OHLCSeriesDataItem();\n };\n OHLCSeries.prototype.validateCandlestick = function (dataItem) {\n var column = dataItem.column;\n if (column) {\n var openLine_1 = column.openLine;\n var highLowLine_1 = column.highLowLine;\n var closeLine_1 = column.closeLine;\n if (this.baseAxis == this.xAxis) {\n var x = column.pixelWidth / 2;\n highLowLine_1.x = x;\n // TODO can these be removed ?\n dataItem.getWorkingValue(this.yOpenField);\n dataItem.getWorkingValue(this.yField);\n var yOpen = this.yAxis.getY(dataItem, this.yOpenField);\n var yClose = this.yAxis.getY(dataItem, this.yField);\n var yLow = this.yAxis.getY(dataItem, this.yLowField);\n var yHigh = this.yAxis.getY(dataItem, this.yHighField);\n var pixelY = column.pixelY;\n openLine_1.y1 = yOpen - pixelY;\n openLine_1.y2 = yOpen - pixelY;\n openLine_1.x1 = 0;\n openLine_1.x2 = x;\n closeLine_1.y1 = yClose - pixelY;\n closeLine_1.y2 = yClose - pixelY;\n closeLine_1.x1 = x;\n closeLine_1.x2 = 2 * x;\n highLowLine_1.y1 = yHigh - pixelY;\n highLowLine_1.y2 = yLow - pixelY;\n }\n if (this.baseAxis == this.yAxis) {\n var y = column.pixelHeight / 2;\n highLowLine_1.y = y;\n // TODO can these be removed ?\n dataItem.getWorkingValue(this.xOpenField);\n dataItem.getWorkingValue(this.xField);\n var xOpen = this.xAxis.getX(dataItem, this.xOpenField);\n var xClose = this.xAxis.getX(dataItem, this.xField);\n var xLow = this.xAxis.getX(dataItem, this.xLowField);\n var xHigh = this.xAxis.getX(dataItem, this.xHighField);\n var pixelX = column.pixelX;\n openLine_1.x1 = xOpen - pixelX;\n openLine_1.x2 = xOpen - pixelX;\n openLine_1.y1 = y;\n openLine_1.y2 = 2 * y;\n closeLine_1.x1 = xClose - pixelX;\n closeLine_1.x2 = xClose - pixelX;\n closeLine_1.y1 = 0;\n closeLine_1.y2 = y;\n highLowLine_1.x1 = xHigh - pixelX;\n highLowLine_1.x2 = xLow - pixelX;\n }\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (rangeColumn) {\n var rangeOpenLine = rangeColumn.openLine;\n rangeOpenLine.x = openLine_1.x;\n rangeOpenLine.y = openLine_1.y;\n rangeOpenLine.x1 = openLine_1.x1;\n rangeOpenLine.x2 = openLine_1.x2;\n rangeOpenLine.y1 = openLine_1.y1;\n rangeOpenLine.y2 = openLine_1.y2;\n var rangeCloseLine = rangeColumn.closeLine;\n rangeCloseLine.x = closeLine_1.x;\n rangeCloseLine.y = closeLine_1.y;\n rangeCloseLine.x1 = closeLine_1.x1;\n rangeCloseLine.x2 = closeLine_1.x2;\n rangeCloseLine.y1 = closeLine_1.y1;\n rangeCloseLine.y2 = closeLine_1.y2;\n var rangeHighLowLine = rangeColumn.highLowLine;\n rangeHighLowLine.x = highLowLine_1.x;\n rangeHighLowLine.y = highLowLine_1.y;\n rangeHighLowLine.x1 = highLowLine_1.x1;\n rangeHighLowLine.x2 = highLowLine_1.x2;\n rangeHighLowLine.y1 = highLowLine_1.y1;\n rangeHighLowLine.y2 = highLowLine_1.y2;\n }\n });\n }\n };\n /**\r\n * Creates elements in related legend container, that mimics the look of this\r\n * Series.\r\n *\r\n * @ignore Exclude from docs\r\n * @param marker Legend item container\r\n */\n OHLCSeries.prototype.createLegendMarker = function (marker) {\n var w = marker.pixelWidth;\n var h = marker.pixelHeight;\n marker.removeChildren();\n var column = marker.createChild(OHLC);\n column.shouldClone = false;\n column.copyFrom(this.columns.template);\n var cw;\n var ch;\n var openLine = column.openLine;\n var closeLine = column.closeLine;\n var highLowLine = column.highLowLine;\n if (this.baseAxis == this.yAxis) {\n cw = w / 3;\n ch = h;\n highLowLine.y = h / 2;\n highLowLine.x2 = w;\n openLine.x = w / 3 * 2;\n openLine.y2 = h / 2;\n closeLine.x = w / 3;\n closeLine.y2 = h;\n closeLine.y1 = h / 2;\n } else {\n cw = w;\n ch = h / 3;\n highLowLine.x = w / 2;\n highLowLine.y2 = h;\n openLine.y = h / 3 * 2;\n openLine.x2 = w / 2;\n closeLine.y = h / 3;\n closeLine.x2 = w;\n closeLine.x1 = w / 2;\n }\n column.width = cw;\n column.height = ch;\n $object.copyProperties(this, marker, visualProperties);\n $object.copyProperties(this.columns.template, column, visualProperties);\n column.stroke = this.riseFromOpenState.properties.stroke;\n var legendDataItem = marker.dataItem;\n legendDataItem.color = column.stroke;\n legendDataItem.colorOrig = column.stroke;\n };\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\n OHLCSeries.prototype.createColumnTemplate = function () {\n return new OHLC();\n };\n return OHLCSeries;\n}(CandlestickSeries);\nexport { OHLCSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"OHLCSeries\"] = OHLCSeries;\nregistry.registeredClasses[\"OHLCSeriesDataItem\"] = OHLCSeriesDataItem;\n//# sourceMappingURL=OHLCSeries.js.map","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link IStepLineSeriesSegmentEvents} for a list of available events\r\n * @see {@link IStepLineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\nvar StepLineSeriesSegment = /** @class */function (_super) {\n __extends(StepLineSeriesSegment, _super);\n /**\r\n * Constructor\r\n */\n function StepLineSeriesSegment() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"StepLineSeriesSegment\";\n return _this;\n }\n /**\r\n * Draws the series segment.\r\n *\r\n * @ignore Exclude from docs\r\n * @param points Points to connect\r\n * @param closePoints ?\r\n * @param smoothnessX Horizontal bezier setting (?)\r\n * @param smoothnessY Vertical bezier setting (?)\r\n */\n StepLineSeriesSegment.prototype.drawSegment = function (points, closePoints, smoothnessX, smoothnessY, noRisers, vertical) {\n if (points.length > 0 && closePoints.length > 0) {\n if (noRisers) {\n var path = $path.moveTo(points[0]);\n if (points.length > 0) {\n for (var i = 1; i < points.length; i++) {\n var point = points[i];\n if (i / 2 == Math.round(i / 2)) {\n path += $path.moveTo(point);\n } else {\n path += $path.lineTo(point);\n }\n }\n }\n this.strokeSprite.path = path;\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) {\n // helps to avoid drawing fill object if fill is not visible\n path = $path.moveTo(points[0]) + $path.polyline(points);\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\n path += $path.lineTo(points[0]);\n path += $path.closePath();\n this.fillSprite.path = path;\n } else {}\n } else {\n var path = $path.moveTo(points[0]) + $path.polyline(points);\n this.strokeSprite.path = path;\n if (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) {\n // helps to avoid drawing fill object if fill is not visible\n path += $path.lineTo(closePoints[0]) + $path.polyline(closePoints);\n path += $path.lineTo(points[0]);\n path += $path.closePath();\n this.fillSprite.path = path;\n }\n }\n } else {\n this.strokeSprite.path = \"\";\n this.fillSprite.path = \"\";\n }\n };\n return StepLineSeriesSegment;\n}(LineSeriesSegment);\nexport { StepLineSeriesSegment };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"StepLineSeriesSegment\"] = StepLineSeriesSegment;\n//# sourceMappingURL=StepLineSeriesSegment.js.map","/**\r\n * Step line series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { LineSeries, LineSeriesDataItem } from \"./LineSeries\";\nimport { StepLineSeriesSegment } from \"./StepLineSeriesSegment\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[StepLineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar StepLineSeriesDataItem = /** @class */function (_super) {\n __extends(StepLineSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function StepLineSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"StepLineSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return StepLineSeriesDataItem;\n}(LineSeriesDataItem);\nexport { StepLineSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a step line graph.\r\n *\r\n * @see {@link IStepLineSeriesEvents} for a list of available Events\r\n * @see {@link IStepLineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar StepLineSeries = /** @class */function (_super) {\n __extends(StepLineSeries, _super);\n /**\r\n * Constructor\r\n */\n function StepLineSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"StepLineSeries\";\n _this.applyTheme();\n _this.startLocation = 0;\n _this.endLocation = 1;\n return _this;\n }\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n StepLineSeries.prototype.createDataItem = function () {\n return new StepLineSeriesDataItem();\n };\n /**\r\n * [addPoints description]\r\n *\r\n * @todo Description\r\n * @param points [description]\r\n * @param dataItem [description]\r\n * @param xField [description]\r\n * @param yField [description]\r\n * @param backwards [description]\r\n */\n StepLineSeries.prototype.addPoints = function (points, dataItem, xField, yField, backwards) {\n var startLocationX;\n var endLocationX;\n var startLocationY;\n var endLocationY;\n if (this.baseAxis == this.xAxis) {\n startLocationX = this.startLocation;\n endLocationX = this.endLocation;\n startLocationY = this.getAdjustedXLocation(dataItem, this.yOpenField);\n endLocationY = this.getAdjustedXLocation(dataItem, this.yField);\n }\n if (this.baseAxis == this.yAxis) {\n startLocationY = this.startLocation;\n endLocationY = this.endLocation;\n startLocationX = this.getAdjustedXLocation(dataItem, this.xOpenField);\n endLocationX = this.getAdjustedXLocation(dataItem, this.xField);\n }\n var x0 = this.xAxis.getX(dataItem, xField, startLocationX);\n var y0 = this.yAxis.getY(dataItem, yField, startLocationY);\n var x1 = this.xAxis.getX(dataItem, xField, endLocationX);\n var y1 = this.yAxis.getY(dataItem, yField, endLocationY);\n x0 = $math.fitToRange(x0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n y0 = $math.fitToRange(y0, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n x1 = $math.fitToRange(x1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n y1 = $math.fitToRange(y1, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\n // this might make an impression that points are duplicated, and they indeed are, but this is needed to handle gaps in data\n if (!this.noRisers) {\n if (points.length > 1) {\n var prevPoint = points[points.length - 1];\n if (this.baseAxis == this.xAxis) {\n if (backwards) {\n points.push({\n x: prevPoint.x,\n y: y1\n });\n } else {\n points.push({\n x: x0,\n y: prevPoint.y\n });\n }\n }\n if (this.baseAxis == this.yAxis) {\n if (backwards) {\n points.push({\n x: x1,\n y: prevPoint.y\n });\n } else {\n points.push({\n x: prevPoint.x,\n y: y0\n });\n }\n }\n }\n }\n var point0 = {\n x: x0,\n y: y0\n };\n var point1 = {\n x: x1,\n y: y1\n };\n if (backwards) {\n points.push(point1, point0);\n } else {\n points.push(point0, point1);\n }\n };\n /**\r\n * Draws the line segment.\r\n *\r\n * @param segment Segment\r\n * @param points Segment points\r\n * @param closePoints Segment close points\r\n */\n StepLineSeries.prototype.drawSegment = function (segment, points, closePoints) {\n var vertical = false;\n if (this.yAxis == this.baseAxis) {\n vertical = true;\n }\n segment.drawSegment(points, closePoints, this.tensionX, this.tensionY, this.noRisers, vertical);\n };\n /**\r\n * @ignore\r\n */\n StepLineSeries.prototype.createSegment = function () {\n return new StepLineSeriesSegment();\n };\n Object.defineProperty(StepLineSeries.prototype, \"noRisers\", {\n /**\r\n * @return No risers\r\n */\n get: function () {\n return this.getPropertyValue(\"noRisers\");\n },\n /**\r\n * Specifies if step line series should draw only horizontal (or only\r\n * vertical, depending on base axis) lines, instead of connecting them with\r\n * vertical (or horizontal) lines.\r\n *\r\n * @default false\r\n * @param value No risers\r\n */\n set: function (value) {\n this.setPropertyValue(\"noRisers\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StepLineSeries.prototype, \"startLocation\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"startLocation\");\n },\n /**\r\n * start location of the step\r\n *\r\n * @param value Location (0-1)\r\n * @default 0\r\n */\n set: function (value) {\n this.setPropertyValue(\"startLocation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StepLineSeries.prototype, \"endLocation\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"endLocation\");\n },\n /**\r\n * Step end location.\r\n *\r\n * @param value Location (0-1)\r\n * #default 1\r\n */\n set: function (value) {\n this.setPropertyValue(\"endLocation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return StepLineSeries;\n}(LineSeries);\nexport { StepLineSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"StepLineSeries\"] = StepLineSeries;\nregistry.registeredClasses[\"StepLineSeriesDataItem\"] = StepLineSeriesDataItem;\n//# sourceMappingURL=StepLineSeries.js.map","/**\r\n * Module that defines everything related to building RadarColumns.\r\n * It is a container which has radarColumn element which is a Slice.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Column } from \"./Column\";\nimport { Slice } from \"../../core/elements/Slice\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates RadarColumns.\r\n *\r\n * @see {@link IRadarColumnEvents} for a list of available events\r\n * @see {@link IRadarColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar RadarColumn = /** @class */function (_super) {\n __extends(RadarColumn, _super);\n /**\r\n * Constructor\r\n */\n function RadarColumn() {\n var _this = _super.call(this) || this;\n _this.className = \"RadarColumn\";\n return _this;\n }\n /**\r\n * @ignore\r\n */\n RadarColumn.prototype.createAssets = function () {\n this.radarColumn = this.createChild(Slice);\n this.radarColumn.shouldClone = false;\n this.radarColumn.strokeOpacity = undefined;\n // some dirty hack so that if user access column, it won't get error\n this.column = this.radarColumn;\n };\n /**\r\n * Copies all parameters from another [[RadarColumn]].\r\n *\r\n * @param source Source RadarColumn\r\n */\n RadarColumn.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.radarColumn) {\n this.radarColumn.copyFrom(source.radarColumn);\n }\n };\n /**\r\n * X coordinate for the slice tooltip.\r\n *\r\n * @return X\r\n * @ignore\r\n */\n RadarColumn.prototype.getTooltipX = function () {\n var value = this.getPropertyValue(\"tooltipX\");\n if (!$type.isNumber(value)) {\n return this.radarColumn.getTooltipX();\n }\n return value;\n };\n /**\r\n * Y coordinate for the slice tooltip.\r\n *\r\n * @return Y\r\n * @ignore\r\n */\n RadarColumn.prototype.getTooltipY = function () {\n var value = this.getPropertyValue(\"tooltipX\");\n if (!$type.isNumber(value)) {\n return this.radarColumn.getTooltipY();\n }\n return value;\n };\n return RadarColumn;\n}(Column);\nexport { RadarColumn };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadarColumn\"] = RadarColumn;\n//# sourceMappingURL=RadarColumn.js.map","/**\r\n * Radar column series module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"../series/ColumnSeries\";\nimport { visualProperties } from \"../../core/Sprite\";\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\nimport { RadarColumn } from \"../elements/RadarColumn\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $object from \"../../core/utils/Object\";\nimport { Percent } from \"../../core/utils/Percent\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[RadarColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar RadarColumnSeriesDataItem = /** @class */function (_super) {\n __extends(RadarColumnSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function RadarColumnSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ColumnSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return RadarColumnSeriesDataItem;\n}(ColumnSeriesDataItem);\nexport { RadarColumnSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a 3D column graph.\r\n *\r\n * @see {@link IRadarColumnSeriesEvents} for a list of available Events\r\n * @see {@link IRadarColumnSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar RadarColumnSeries = /** @class */function (_super) {\n __extends(RadarColumnSeries, _super);\n /**\r\n * Constructor\r\n */\n function RadarColumnSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"RadarColumnSeries\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creates and returns a RadarColumn element to use as column in radar chart.\r\n *\r\n * @return RadarColumn.\r\n */\n RadarColumnSeries.prototype.createColumnTemplate = function () {\n return new RadarColumn();\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarColumnSeries.prototype.validate = function () {\n // so that radius would be updated\n if (this.chart.invalid) {\n this.chart.validate();\n }\n _super.prototype.validate.call(this);\n };\n /**\r\n * @ignore\r\n */\n RadarColumnSeries.prototype.disableUnusedColumns = function (dataItem) {\n if (dataItem) {\n if (dataItem.column) {\n dataItem.column.__disabled = true;\n }\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (rangeColumn) {\n rangeColumn.__disabled = true;\n }\n });\n }\n };\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n RadarColumnSeries.prototype.validateDataElementReal = function (dataItem) {\n var _this = this;\n var startAngle = this.chart.startAngle;\n var endAngle = this.chart.endAngle;\n var yField = this.yField;\n var yOpenField = this.yOpenField;\n var xField = this.xField;\n var xOpenField = this.xOpenField;\n var lAngle;\n var rAngle;\n var tRadius;\n var bRadius;\n var startLocation = this.getStartLocation(dataItem);\n var endLocation = this.getEndLocation(dataItem);\n var cellAngle = (endAngle - startAngle) / (this.dataItems.length * (this.end - this.start));\n var radarColumn = dataItem.column;\n if (!radarColumn) {\n radarColumn = this.columns.create();\n dataItem.column = radarColumn;\n $object.copyProperties(this, radarColumn, visualProperties); // need this \n $object.copyProperties(this.columns.template, radarColumn, visualProperties); // second time, no force, so that columns.template would override series properties\t\t\t\n dataItem.addSprite(radarColumn);\n radarColumn.paper = this.paper; // sometimes pattern is not drawn if is set with adapter without this.\n this.setColumnStates(radarColumn);\n }\n var width = radarColumn.width;\n var percentWidth = 100;\n if (width instanceof Percent) {\n percentWidth = width.percent;\n }\n var offset = $math.round((endLocation - startLocation) * (1 - percentWidth / 100) / 2, 5);\n startLocation += offset;\n endLocation -= offset;\n // two category axes\n if (this.xAxis instanceof CategoryAxis && this.yAxis instanceof CategoryAxis) {\n tRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yField, 0, \"valueY\"),\n y: this.yAxis.getY(dataItem, yField, 0, \"valueY\")\n });\n bRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yOpenField, 1, \"valueY\"),\n y: this.yAxis.getY(dataItem, yOpenField, 1, \"valueY\")\n });\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, 0, \"valueX\");\n rAngle = this.xAxis.getAngle(dataItem, xField, 1, \"valueX\");\n startAngle = startAngle + startLocation * cellAngle;\n endAngle = endAngle - (1 - endLocation) * cellAngle;\n } else if (this.baseAxis == this.xAxis) {\n tRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yField, dataItem.locations[yField], \"valueY\"),\n y: this.yAxis.getY(dataItem, yField, dataItem.locations[yField], \"valueY\")\n });\n bRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\"),\n y: this.yAxis.getY(dataItem, yOpenField, dataItem.locations[yOpenField], \"valueY\")\n });\n lAngle = this.xAxis.getAngle(dataItem, xOpenField, startLocation, \"valueX\");\n rAngle = this.xAxis.getAngle(dataItem, xField, endLocation, \"valueX\");\n startAngle = startAngle + startLocation * cellAngle;\n endAngle = endAngle - (1 - endLocation) * cellAngle;\n } else {\n tRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yField, startLocation, \"valueY\"),\n y: this.yAxis.getY(dataItem, yField, startLocation, \"valueY\")\n });\n bRadius = $math.getDistance({\n x: this.yAxis.getX(dataItem, yOpenField, endLocation, \"valueY\"),\n y: this.yAxis.getY(dataItem, yOpenField, endLocation, \"valueY\")\n });\n if ($type.isNumber(width)) {\n var abs = Math.abs(tRadius - bRadius);\n if (abs > width) {\n var d = (abs - width) / 2;\n tRadius += d;\n bRadius -= d;\n }\n }\n lAngle = this.xAxis.getAngle(dataItem, xField, dataItem.locations[xField], \"valueX\");\n rAngle = this.xAxis.getAngle(dataItem, xOpenField, dataItem.locations[xOpenField], \"valueX\");\n }\n if (rAngle < lAngle) {\n var temp = rAngle;\n rAngle = lAngle;\n lAngle = temp;\n }\n lAngle = $math.fitToRange(lAngle, startAngle, endAngle);\n rAngle = $math.fitToRange(rAngle, startAngle, endAngle);\n var slice = radarColumn.radarColumn;\n slice.startAngle = lAngle;\n var arc = rAngle - lAngle;\n if (arc > 0) {\n slice.arc = arc;\n slice.radius = tRadius;\n slice.innerRadius = bRadius;\n radarColumn.__disabled = false;\n radarColumn.parent = this.columnsContainer;\n $iter.each(this.axisRanges.iterator(), function (axisRange) {\n var rangeColumn = dataItem.rangesColumns.getKey(axisRange.uid);\n if (!rangeColumn) {\n rangeColumn = _this.columns.create();\n $object.forceCopyProperties(_this.columns.template, rangeColumn, visualProperties);\n $object.copyProperties(axisRange.contents, rangeColumn, visualProperties); // need this because 3d columns are not in the same container\n if (rangeColumn.dataItem) {\n $array.remove(rangeColumn.dataItem.sprites, rangeColumn);\n }\n dataItem.addSprite(rangeColumn);\n rangeColumn.paper = _this.paper; // sometimes pattern is not drawn if is set with adapter without this.\t\t\t\t\t\n _this.setColumnStates(rangeColumn);\n dataItem.rangesColumns.setKey(axisRange.uid, rangeColumn);\n }\n var slice = rangeColumn.radarColumn;\n slice.startAngle = lAngle;\n slice.arc = arc;\n slice.radius = tRadius;\n slice.innerRadius = bRadius;\n if (slice.invalid) {\n slice.paper = _this.paper;\n slice.validate(); // validate as if it was used previously, it will flicker with previous dimensions\n }\n rangeColumn.__disabled = false;\n rangeColumn.parent = axisRange.contents;\n });\n } else {\n this.disableUnusedColumns(dataItem);\n }\n };\n /**\r\n * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n *\r\n * @param dataItem Data item\r\n * @param xKey Name of X data field\r\n * @param yKey Name of Y data field\r\n * @param locationX X location\r\n * @param locationY Y location\r\n * @param stackKeyX ?\r\n * @param stackKeyY ?\r\n * @returns Coordinates\r\n */\n RadarColumnSeries.prototype.getPoint = function (dataItem, xKey, yKey, locationX, locationY, stackKeyX, stackKeyY) {\n if (!stackKeyX) {\n stackKeyX = \"valueX\";\n }\n if (!stackKeyY) {\n stackKeyY = \"valueY\";\n }\n var x = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\n var y = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\n var radius = $math.getDistance({\n x: x,\n y: y\n });\n // hack to be able to determine angle later\n if (radius == 0) {\n radius = 0.00001;\n }\n var angle = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\n return {\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n };\n };\n /**\r\n * Returns an SVG path to be used as a mask for the series.\r\n *\r\n * @return SVG path\r\n */\n RadarColumnSeries.prototype.getMaskPath = function () {\n var renderer = this.yAxis.renderer;\n return $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\n };\n RadarColumnSeries.prototype.positionBulletReal = function (bullet, positionX, positionY) {\n var xAxis = this.xAxis;\n var yAxis = this.yAxis;\n if (positionX < xAxis.start || positionX > xAxis.end || positionY < yAxis.start || positionY > yAxis.end) {\n bullet.visible = false;\n }\n bullet.moveTo(this.xAxis.renderer.positionToPoint(positionX, positionY));\n };\n RadarColumnSeries.prototype.setXAxis = function (axis) {\n _super.prototype.setXAxis.call(this, axis);\n this.updateRendererRefs();\n };\n RadarColumnSeries.prototype.setYAxis = function (axis) {\n _super.prototype.setYAxis.call(this, axis);\n this.updateRendererRefs();\n };\n RadarColumnSeries.prototype.updateRendererRefs = function () {\n var rendererX = this.xAxis.renderer;\n var rendererY = this.yAxis.renderer;\n rendererX.axisRendererY = rendererY;\n };\n return RadarColumnSeries;\n}(ColumnSeries);\nexport { RadarColumnSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadarColumnSeries\"] = RadarColumnSeries;\nregistry.registeredClasses[\"RadarColumnSeriesDataItem\"] = RadarColumnSeriesDataItem;\n//# sourceMappingURL=RadarColumnSeries.js.map","/**\r\n * Module that defines everything related to building Funnel slices.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport { percent } from \"../../core/utils/Percent\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to create [[FunnelSlice]] elements.\r\n *\r\n * @see {@link IFunnelSliceEvents} for a list of available events\r\n * @see {@link IFunnelSliceAdapters} for a list of available adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\nvar FunnelSlice = /** @class */function (_super) {\n __extends(FunnelSlice, _super);\n /**\r\n * Constructor\r\n */\n function FunnelSlice() {\n var _this = _super.call(this) || this;\n _this.slice = _this.createChild(Sprite);\n _this.slice.shouldClone = false;\n _this.slice.setElement(_this.paper.add(\"path\"));\n _this.slice.isMeasured = false;\n _this.orientation = \"vertical\";\n _this.bottomWidth = percent(100);\n _this.topWidth = percent(100);\n _this.isMeasured = false;\n _this.width = 10;\n _this.height = 10;\n _this.expandDistance = 0;\n _this.className = \"FunnelSlice\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the element.\r\n */\n FunnelSlice.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var pt = this.pixelPaddingTop;\n var pb = this.pixelPaddingBottom;\n var pr = this.pixelPaddingRight;\n var pl = this.pixelPaddingLeft;\n var w = this.pixelWidth - pr - pl;\n var h = this.pixelHeight - pt - pb;\n var ed = this.expandDistance;\n var path = \"\";\n if (this.orientation == \"vertical\") {\n var tw = $utils.relativeToValue(this.topWidth, w);\n var bw = $utils.relativeToValue(this.bottomWidth, w);\n var tl = {\n x: (w - tw) / 2 + pl,\n y: pt\n };\n var tr = {\n x: (w + tw) / 2 + pl,\n y: pt\n };\n var br = {\n x: (w + bw) / 2 + pl,\n y: pt + h\n };\n var bl = {\n x: (w - bw) / 2 + pl,\n y: pt + h\n };\n var cpr = {\n x: tr.x + (br.x - tr.x) / 2 + ed * h,\n y: tr.y + 0.5 * h\n };\n var cpl = {\n x: tl.x + (bl.x - tl.x) / 2 - ed * h,\n y: tl.y + 0.5 * h\n };\n var qp1 = $path.lineTo(br);\n var qp2 = $path.lineTo(tl);\n if (ed != 0) {\n qp1 = $path.quadraticCurveTo(br, cpr);\n qp2 = $path.quadraticCurveTo(tl, cpl);\n }\n path = $path.moveTo(tl) + $path.lineTo(tr) + qp1 + $path.lineTo(bl) + qp2;\n this.tickPoint = {\n x: tr.x + (br.x - tr.x) / 2,\n y: tr.y + (br.y - tr.y) / 2\n };\n } else {\n var tw = $utils.relativeToValue(this.topWidth, h);\n var bw = $utils.relativeToValue(this.bottomWidth, h);\n var tt = {\n x: pl,\n y: (h - tw) / 2 + pt\n };\n var tb = {\n x: pl,\n y: (h + tw) / 2 + pt\n };\n var bt = {\n x: pl + w,\n y: (h - bw) / 2 + pt\n };\n var bb = {\n x: pl + w,\n y: (h + bw) / 2 + pt\n };\n var cpr = {\n y: tt.y + (bt.y - tt.y) / 2 - ed * w,\n x: tt.x + 0.5 * w\n };\n var cpl = {\n y: tb.y + (bb.y - tb.y) / 2 + ed * w,\n x: tb.x + 0.5 * w\n };\n var qp1 = $path.lineTo(bt);\n var qp2 = $path.lineTo(tb);\n if (ed != 0) {\n qp1 = $path.quadraticCurveTo(bt, cpr);\n qp2 = $path.quadraticCurveTo(tb, cpl);\n }\n path = $path.moveTo(tb) + $path.lineTo(tt) + qp1 + $path.lineTo(bb) + qp2;\n this.tickPoint = {\n y: tb.y + (bb.y - tb.y) / 2,\n x: tb.x + (bb.x - tb.x) / 2\n };\n }\n this.slice.path = path;\n this.invalidateLayout();\n };\n FunnelSlice.prototype.getPoint = function (locationX, locationY) {\n var pt = this.pixelPaddingTop;\n var pb = this.pixelPaddingBottom;\n var pr = this.pixelPaddingRight;\n var pl = this.pixelPaddingLeft;\n var w = this.pixelWidth - pr - pl;\n var h = this.pixelHeight - pt - pb;\n if (this.orientation == \"vertical\") {\n var tw = $utils.relativeToValue(this.topWidth, w);\n var bw = $utils.relativeToValue(this.bottomWidth, w);\n var tl = {\n x: (w - tw) / 2 + pl,\n y: pt\n };\n var tr = {\n x: (w + tw) / 2 + pl,\n y: pt\n };\n var br = {\n x: (w + bw) / 2 + pl,\n y: pt + h\n };\n var bl = {\n x: (w - bw) / 2 + pl,\n y: pt + h\n };\n var mlx = tl.x + (bl.x - tl.x) * locationY;\n var mrx = tr.x + (br.x - tr.x) * locationY;\n return {\n x: mlx + (mrx - mlx) * locationX,\n y: tr.y + (br.y - tr.y) * locationY\n };\n } else {\n var tw = $utils.relativeToValue(this.topWidth, h);\n var bw = $utils.relativeToValue(this.bottomWidth, h);\n var tt = {\n x: pl,\n y: (h - tw) / 2 + pt\n };\n var tb = {\n x: pl,\n y: (h + tw) / 2 + pt\n };\n var bt = {\n x: pl + w,\n y: (h - bw) / 2 + pt\n };\n var bb = {\n x: pl + w,\n y: (h + bw) / 2 + pt\n };\n var mty = tt.y + (bt.y - tt.y) * locationX;\n var mby = tb.y + (bb.y - tb.y) * locationX;\n return {\n y: mty + (mby - mty) * locationY,\n x: tt.x + (bt.x - tt.x) * locationX\n };\n }\n };\n Object.defineProperty(FunnelSlice.prototype, \"bottomWidth\", {\n /**\r\n * @return bottom width\r\n */\n get: function () {\n return this.getPropertyValue(\"bottomWidth\");\n },\n /**\r\n * Bottom width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Bottom width\r\n */\n set: function (value) {\n this.setPercentProperty(\"bottomWidth\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelSlice.prototype, \"topWidth\", {\n /**\r\n * @return Top width\r\n */\n get: function () {\n return this.getPropertyValue(\"topWidth\");\n },\n /**\r\n * Top width in pixels or percent.\r\n *\r\n * IMPORTANT: this setting might be used to set dimensions if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Top width\r\n */\n set: function (value) {\n this.setPercentProperty(\"topWidth\", value, true, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelSlice.prototype, \"orientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Orientation of the funnel slice: \"horizontal\" or \"vertical\".\r\n *\r\n * IMPORTANT: this setting might be used to set orintation if you use slice\r\n * as a standalone element. If it's a part of [[FunnelSeries]] this setting\r\n * becomes read-only as it will be automatically reset by series.\r\n *\r\n * @param value Orientation\r\n */\n set: function (value) {\n this.setPropertyValue(\"orientation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelSlice.prototype, \"expandDistance\", {\n /**\r\n * @return expandDistance\r\n */\n get: function () {\n return this.getPropertyValue(\"expandDistance\");\n },\n /**\r\n * A relative distance slice's sides should be bent to. It's relative to the\r\n * height of the slice.\r\n *\r\n * Zero (default) will mean the sides will be perfectly straight.\r\n *\r\n * Positive value will make them bend outwards, resulting in \"puffed\" slices.\r\n *\r\n * Negative values will make them bend inwards.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\n set: function (value) {\n this.setPropertyValue(\"expandDistance\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Copies all parameters from another [[Sprite]].\r\n *\r\n * @param source Source Sprite\r\n */\n FunnelSlice.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.slice) {\n this.slice.copyFrom(source.slice);\n }\n };\n return FunnelSlice;\n}(Container);\nexport { FunnelSlice };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FunnelSlice\"] = FunnelSlice;\n//# sourceMappingURL=FunnelSlice.js.map","/**\r\n * Funnel tick module.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Tick } from \"../elements/Tick\";\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\nimport { registry } from \"../../core/Registry\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Draws an tick line for a funnel slice connecting it to a related label.\r\n *\r\n * @see {@link IFunnelTickEvents} for a list of available events\r\n * @see {@link IFunnelTickAdapters} for a list of available Adapters\r\n */\nvar FunnelTick = /** @class */function (_super) {\n __extends(FunnelTick, _super);\n /**\r\n * Constructor\r\n */\n function FunnelTick() {\n var _this = _super.call(this) || this;\n /**\r\n * A label element this tick is attached to.\r\n */\n _this._label = new MutableValueDisposer();\n /**\r\n * A slice element this tick is attached to.\r\n */\n _this._slice = new MutableValueDisposer();\n _this.className = \"FunnelTick\";\n _this.element = _this.paper.add(\"path\");\n _this._disposers.push(_this._label);\n _this._disposers.push(_this._slice);\n _this.setPropertyValue(\"locationX\", 0);\n _this.setPropertyValue(\"locationY\", 0);\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Draws the tick element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FunnelTick.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var slice = this.slice;\n var point = slice.getPoint(this.locationX, this.locationY);\n if (point) {\n var label = this.label;\n var series = slice.dataItem.component;\n var p0 = void 0;\n var p1 = void 0;\n var p2 = void 0;\n if (series.orientation == \"vertical\") {\n var x1 = label.pixelX;\n var y1 = label.pixelY;\n if (!series.labelsOpposite) {\n x1 += label.maxRight;\n }\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\n p2 = $utils.spritePointToSprite({\n x: x1,\n y: y1\n }, label.parent, this.parent);\n p1 = {\n x: label.parent.pixelX - this.length,\n y: p2.y\n };\n if (!series.labelsOpposite) {\n p1.x = label.parent.measuredWidth + this.length;\n }\n } else {\n var x1 = label.pixelX;\n var y1 = label.pixelY;\n if (!series.labelsOpposite) {\n y1 += label.maxBottom;\n }\n p0 = $utils.spritePointToSprite(point, slice, this.parent);\n p2 = $utils.spritePointToSprite({\n x: x1,\n y: y1\n }, label.parent, this.parent);\n p1 = {\n x: p2.x,\n y: label.parent.pixelY - this.length\n };\n if (!series.labelsOpposite) {\n p1.y = label.parent.measuredHeight + this.length;\n }\n }\n this.path = $path.moveTo(p0) + $path.lineTo(p1) + $path.lineTo(p2);\n }\n };\n Object.defineProperty(FunnelTick.prototype, \"slice\", {\n /**\r\n * @return FunnelSlice\r\n */\n get: function () {\n return this._slice.get();\n },\n /**\r\n * [[FunnelSlice]] element tick is attached to.\r\n *\r\n * @param slice Slice\r\n */\n set: function (slice) {\n this._slice.set(slice, new MultiDisposer([slice.events.on(\"transformed\", this.invalidate, this, false), slice.events.on(\"validated\", this.invalidate, this, false)]));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelTick.prototype, \"label\", {\n /**\r\n * @return Label\r\n */\n get: function () {\n return this._label.get();\n },\n /**\r\n * [[Label]] element tick is attached to.\r\n *\r\n * @param label Label\r\n */\n set: function (label) {\n this._label.set(label, label.events.on(\"transformed\", this.invalidate, this, false));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelTick.prototype, \"locationX\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"locationX\");\n },\n /**\r\n * A relative horizontal position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means left edge, and 1 right edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"locationX\", value, false, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelTick.prototype, \"locationY\", {\n /**\r\n * @return Location (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"locationY\");\n },\n /**\r\n * A relative vertical position within target element a tick is pointing\r\n * to.\r\n *\r\n * A scale is from 0 to 1, where 0 means top edge, and 1 bottom edge.\r\n *\r\n * You can also set any value in-between (e.g. 0.5 will point to the middle\r\n * of the slice), or outside 0-1 range, which will put tick anchor position\r\n * outside target element.\r\n *\r\n * @param value Location (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"locationY\", value, false, true);\n },\n enumerable: true,\n configurable: true\n });\n return FunnelTick;\n}(Tick);\nexport { FunnelTick };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FunnelTick\"] = FunnelTick;\n//# sourceMappingURL=FunnelTick.js.map","/**\r\n * Defines Funnel Chart Series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PercentSeries, PercentSeriesDataItem } from \"./PercentSeries\";\nimport { FunnelSlice } from \"../elements/FunnelSlice\";\nimport { FunnelTick } from \"../elements/FunnelTick\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $iter from \"../../core/utils/Iterator\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { Disposer } from \"../../core/utils/Disposer\";\nimport { options } from \"../../core/Options\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo: sequenced?\n/**\r\n * Defines a [[DataItem]] for [[FunnelSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar FunnelSeriesDataItem = /** @class */function (_super) {\n __extends(FunnelSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function FunnelSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"FunnelSeriesDataItem\";\n // this helps to invalidate series when value is 0 an it is hidden (no other events are triggered then)\n _this.events.on(\"visibilitychanged\", function () {\n if (_this.component) {\n _this.component.invalidateDataItems();\n }\n }, _this, false);\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(FunnelSeriesDataItem.prototype, \"sliceLink\", {\n /**\r\n * A [[FunnelSlice]] element, related to this data item ([[FunnelSlice]]).\r\n *\r\n * @readonly\r\n * @return Slice element\r\n */\n get: function () {\n var _this = this;\n if (!this._sliceLink) {\n var sliceLink_1 = this.component.sliceLinks.create();\n this._sliceLink = sliceLink_1;\n this._disposers.push(sliceLink_1);\n sliceLink_1.parent = this.component.slicesContainer;\n this._disposers.push(new Disposer(function () {\n if (_this.component) {\n _this.component.sliceLinks.removeValue(sliceLink_1);\n }\n }));\n this.addSprite(sliceLink_1);\n sliceLink_1.visible = this.visible;\n }\n return this._sliceLink;\n },\n enumerable: true,\n configurable: true\n });\n return FunnelSeriesDataItem;\n}(PercentSeriesDataItem);\nexport { FunnelSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IFunnelSeriesEvents} for a list of available Events\r\n * @see {@link IFunnelSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\nvar FunnelSeries = /** @class */function (_super) {\n __extends(FunnelSeries, _super);\n /**\r\n * Constructor\r\n */\n function FunnelSeries() {\n var _this = _super.call(this) || this;\n _this._nextY = 0;\n _this.className = \"FunnelSeries\";\n _this.orientation = \"vertical\";\n _this.width = percent(100);\n _this.height = percent(100);\n _this.slicesContainer.width = percent(100);\n _this.slicesContainer.height = percent(100);\n _this._disposers.push(_this.slicesContainer.events.on(\"maxsizechanged\", _this.invalidateDataItems, _this, false));\n _this.labelsOpposite = true;\n _this.labelsContainer.layout = \"absolute\";\n _this.bottomRatio = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Creates a [[FunnelSlice]] element.\r\n *\r\n * @return Slice\r\n */\n FunnelSeries.prototype.createSlice = function () {\n return new FunnelSlice();\n };\n /**\r\n * Creates a [[FunnelTick]] element.\r\n *\r\n * @return Tick\r\n */\n FunnelSeries.prototype.createTick = function () {\n return new FunnelTick();\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n FunnelSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Funnel Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n FunnelSeries.prototype.createDataItem = function () {\n return new FunnelSeriesDataItem();\n };\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\n FunnelSeries.prototype.initSlice = function (slice) {\n slice.isMeasured = false;\n slice.defaultState.properties.scale = 1;\n slice.observe(\"scale\", this.handleSliceScale, this);\n slice.observe([\"dx\", \"dy\", \"x\", \"y\"], this.handleSliceMove, this);\n slice.tooltipText = \"{category}: {value.percent.formatNumber('#.#')}% ({value.value})\";\n var hoverState = slice.states.create(\"hover\");\n hoverState.properties.expandDistance = 0.2;\n };\n /**\r\n * [initLabel description]\r\n *\r\n * @todo Description\r\n * @param label [description]\r\n */\n FunnelSeries.prototype.initLabel = function (label) {\n _super.prototype.initLabel.call(this, label);\n label.verticalCenter = \"middle\";\n label.horizontalCenter = \"middle\";\n label.isMeasured = true;\n label.padding(5, 5, 5, 5);\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n FunnelSeries.prototype.validate = function () {\n _super.prototype.validate.call(this);\n this._nextY = 0;\n };\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n FunnelSeries.prototype.validateDataElements = function () {\n var _this = this;\n var slicesContainer = this.slicesContainer;\n var labelsContainer = this.labelsContainer;\n var labelTemplate = this.labels.template;\n if (this.alignLabels) {\n labelTemplate.interactionsEnabled = true;\n slicesContainer.isMeasured = true;\n labelsContainer.isMeasured = true;\n } else {\n labelTemplate.interactionsEnabled = false;\n slicesContainer.isMeasured = false;\n labelsContainer.isMeasured = false;\n }\n var total = 0;\n var count = 0;\n this.dataItems.each(function (dItem) {\n if ($type.hasValue(dItem.value)) {\n count++;\n if (dItem.value > 0) {\n total += Math.abs(dItem.getWorkingValue(\"value\") / dItem.value);\n } else {\n if (_this.ignoreZeroValues) {\n count--;\n } else {\n if (!dItem.visible || dItem.__disabled || dItem.isHiding) {\n count--;\n } else {\n total += 1;\n }\n }\n }\n }\n });\n this._total = 1 / count * total;\n this._count = count;\n _super.prototype.validateDataElements.call(this);\n this.arrangeLabels();\n };\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\n FunnelSeries.prototype.getNextValue = function (dataItem) {\n var index = dataItem.index;\n var nextValue = dataItem.getWorkingValue(\"value\");\n if (index < this.dataItems.length - 1) {\n var nextItem = this.dataItems.getIndex(index + 1);\n nextValue = nextItem.getWorkingValue(\"value\");\n if (!nextItem.visible || nextItem.isHiding || nextItem.__disabled || nextItem.value == 0 && this.ignoreZeroValues) {\n return this.getNextValue(nextItem);\n }\n }\n return nextValue;\n };\n /**\r\n * [formDataElement description]\r\n *\r\n * @todo Description\r\n */\n FunnelSeries.prototype.formDataElement = function () {};\n /**\r\n * Validates data item's element, effectively redrawing it.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n FunnelSeries.prototype.validateDataElement = function (dataItem) {\n var _this = this;\n //if ($type.hasValue(dataItem.value)) {\n // FunnelSlice\n var slice = dataItem.slice;\n slice.orientation = this.orientation;\n var sliceLink = dataItem.sliceLink;\n sliceLink.orientation = this.orientation;\n var tick = dataItem.tick;\n var label = dataItem.label;\n tick.slice = slice;\n tick.label = label;\n if ($type.hasValue(dataItem.value)) {\n this.decorateSlice(dataItem);\n $array.each(dataItem.sprites, function (sprite) {\n if (dataItem.value == 0 && _this.ignoreZeroValues) {\n sprite.__disabled = true;\n } else {\n sprite.__disabled = false;\n }\n });\n } else {\n $array.each(dataItem.sprites, function (sprite) {\n sprite.__disabled = true;\n });\n }\n if (dataItem.index == this.dataItems.length - 1) {\n sliceLink.disabled = true;\n }\n // do this at the end, otherwise bullets won't be positioned properly\n _super.prototype.validateDataElement.call(this, dataItem);\n sliceLink.fill = slice.fill;\n //}\n };\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\n FunnelSeries.prototype.decorateSlice = function (dataItem) {\n var slice = dataItem.slice;\n var sliceLink = dataItem.sliceLink;\n var label = dataItem.label;\n var tick = dataItem.tick;\n var maxWidth = this.slicesContainer.innerWidth;\n var maxHeight = this.slicesContainer.innerHeight;\n var nextValue = this.getNextValue(dataItem);\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\n var bottomRatio = this.bottomRatio;\n var d = 1;\n if (dataItem.value != 0) {\n d = workingValue / Math.abs(dataItem.value);\n } else {\n if (dataItem.__disabled || dataItem.isHiding || !dataItem.visible) {\n d = 0.000001;\n }\n }\n if (this.ignoreZeroValues && dataItem.value == 0) {\n dataItem.__disabled = true;\n return;\n } else {\n dataItem.__disabled = false;\n }\n if (this._nextY == Infinity) {\n this._nextY = 0;\n }\n if (this.orientation == \"vertical\") {\n var linkHeight = sliceLink.pixelHeight * d;\n maxHeight = maxHeight + linkHeight; // to avoid one link gap in the bottom\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxWidth;\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxWidth;\n sliceLink.topWidth = slice.bottomWidth;\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxWidth;\n slice.y = this._nextY;\n slice.height = Math.min(100000, $math.max(0, maxHeight / this._count * d / this._total - linkHeight));\n slice.x = maxWidth / 2;\n if (!this.alignLabels) {\n label.x = slice.x;\n } else {\n label.x = undefined;\n }\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY;\n this._nextY += slice.pixelHeight + linkHeight;\n sliceLink.y = this._nextY - linkHeight;\n sliceLink.x = slice.x;\n } else {\n var linkWidth = sliceLink.pixelWidth * d;\n maxWidth = maxWidth + linkWidth; // to avoid one link gap in the bottom\n slice.topWidth = workingValue / this.dataItem.values.value.high * maxHeight;\n slice.bottomWidth = (workingValue - (workingValue - nextValue) * bottomRatio) / this.dataItem.values.value.high * maxHeight;\n sliceLink.topWidth = slice.bottomWidth;\n sliceLink.bottomWidth = (workingValue - (workingValue - nextValue)) / this.dataItem.values.value.high * maxHeight;\n slice.x = this._nextY;\n slice.width = Math.min(100000, maxWidth / this._count * d * 1 / this._total - linkWidth);\n slice.y = maxHeight / 2;\n if (!this.alignLabels) {\n label.y = slice.y;\n } else {\n label.y = this.labelsContainer.measuredHeight;\n }\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX;\n this._nextY += slice.pixelWidth + linkWidth;\n sliceLink.x = this._nextY - linkWidth;\n sliceLink.y = slice.y;\n }\n };\n FunnelSeries.prototype.getLastLabel = function (index) {\n if (index > 0) {\n var lastLabel = this.labels.getIndex(index);\n if (lastLabel.__disabled || !lastLabel.visible) {\n return this.getLastLabel(index - 1);\n } else {\n return lastLabel;\n }\n }\n };\n /**\r\n * [arrangeLabels description]\r\n *\r\n * @todo Description\r\n */\n FunnelSeries.prototype.arrangeLabels = function () {\n if (this.alignLabels) {\n var count = this.labels.length;\n if (count > 1) {\n var lastLabel = this.getLastLabel(count - 1);\n if (lastLabel) {\n var lastY = lastLabel.pixelY;\n var lastX = lastLabel.pixelX;\n if (count > 1) {\n for (var i = count - 2; i >= 0; i--) {\n var label = this.labels.getIndex(i);\n if (label.visible && !label.__disabled) {\n if (label.invalid) {\n label.validate();\n }\n if (this.orientation == \"vertical\") {\n if (label.pixelY + label.measuredHeight > lastY) {\n label.y = Math.min(1000000, lastY - label.measuredHeight);\n }\n }\n // horizontal\n else {\n if (label.pixelX + label.measuredWidth > lastX) {\n label.x = Math.min(1000000, lastX - label.measuredWidth);\n }\n }\n lastY = label.pixelY;\n lastX = label.pixelX;\n }\n }\n lastY = 0;\n lastX = 0;\n for (var i = 0; i < count; i++) {\n var label = this.labels.getIndex(i);\n if (label.visible && !label.__disabled) {\n if (label.invalid) {\n label.validate();\n }\n if (this.orientation == \"vertical\") {\n if (label.pixelY < lastY) {\n label.y = Math.min(1000000, lastY);\n }\n }\n // horizontal\n else {\n if (label.pixelX < lastX) {\n label.x = Math.min(1000000, lastX);\n }\n }\n lastY += label.measuredHeight;\n lastX += label.measuredWidth;\n }\n }\n }\n }\n }\n }\n };\n /**\r\n * Positions series bullet.\r\n *\r\n * @ignore Exclude from docs\r\n * @param bullet Bullet\r\n */\n FunnelSeries.prototype.positionBullet = function (bullet) {\n _super.prototype.positionBullet.call(this, bullet);\n var dataItem = bullet.dataItem;\n var slice = dataItem.slice;\n var locationX = bullet.locationX;\n if (!$type.isNumber(locationX)) {\n locationX = 0.5;\n }\n var locationY = bullet.locationY;\n if (!$type.isNumber(locationY)) {\n locationY = 1;\n }\n bullet.x = slice.pixelX + slice.measuredWidth * locationX;\n bullet.y = slice.pixelY + slice.measuredHeight * locationY;\n };\n Object.defineProperty(FunnelSeries.prototype, \"orientation\", {\n /**\r\n * @return Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Orientation of the funnel slices: \"horizontal\" or \"vertical\" (default).\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"orientation\", value)) {\n this.labelsOpposite = this.labelsOpposite;\n this.invalidate();\n if (value == \"vertical\") {\n this.ticks.template.locationX = 1;\n this.ticks.template.locationY = 0.5;\n this.labels.template.rotation = 0;\n this.layout = \"horizontal\";\n } else {\n this.ticks.template.locationX = 0.5;\n this.ticks.template.locationY = 1;\n this.labels.template.rotation = -90;\n this.layout = \"vertical\";\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelSeries.prototype, \"bottomRatio\", {\n /**\r\n * @return {number}\r\n */\n get: function () {\n return this.getPropertyValue(\"bottomRatio\");\n },\n /**\r\n * Indicates how slice's bottom will change in relation to slices top AND\r\n * next slices top.\r\n *\r\n * Basically it's a relative value (0-1) that indicates bottom width\r\n * position between current slice's top width and the top withd of the next\r\n * one.\r\n *\r\n * The scale goes from 0 (closer to current slice width) to 1 (closer to next\r\n * slice with).\r\n *\r\n * `0` (default) will mean that bottom will be the same as top, resulting in\r\n * a prefectly square slice.\r\n *\r\n * From the data-viz standpoint `0` is a correct setting, since area of the\r\n * slices will depict their value correctly.\r\n *\r\n * `1` will mean that slice will become trapezoid with its bottom matching\r\n * width of the next slice.\r\n *\r\n * `0.5` will make bottom width be in the middle of width of current slice\r\n * and the next slice.\r\n *\r\n * @default 0\r\n * @param {number}\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"bottomRatio\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FunnelSeries.prototype, \"sliceLinks\", {\n /**\r\n * A list of elements linking each actual slice.\r\n *\r\n * Please note that links are [[FunnelSlice]] objects, just like real links,\r\n * so they have all the same configuration options.\r\n *\r\n * You can use `template` of this link, to specify how links will look.\r\n *\r\n * ```TypeScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JavaScript\r\n * series.sliceLinks.template.fillOpacity = 0.5;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"FunnelSeries\",\r\n * // ...\r\n * \"sliceLinks\": {\r\n * \"fillOpacity\": 0.5\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Funnel links\r\n */\n get: function () {\n if (!this._sliceLinks) {\n var sliceLink = new FunnelSlice();\n sliceLink.applyOnClones = true;\n sliceLink.fillOpacity = 0.5;\n sliceLink.expandDistance = -0.3;\n sliceLink.hiddenState.properties.opacity = 0;\n this._disposers.push(sliceLink);\n this._sliceLinks = new ListTemplate(sliceLink);\n this._disposers.push(new ListDisposer(this._sliceLinks));\n }\n return this._sliceLinks;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of reveal animation (ms)\r\n * @return Animation\r\n */\n FunnelSeries.prototype.show = function (duration) {\n var _this = this;\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var interpolationDuration = this.defaultState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n if (!options.animationsEnabled) {\n interpolationDuration = 0;\n }\n var delay = 0;\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\n var i = a[0];\n var dataItem = a[1];\n if (_this.sequencedInterpolation) {\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\n }\n dataItem.show(interpolationDuration, delay, [\"value\"]);\n });\n var animation = _super.prototype.show.call(this, duration);\n return animation;\n };\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of hiding animation (ms)\r\n * @return Animation\r\n */\n FunnelSeries.prototype.hide = function (duration) {\n var _this = this;\n var fields = [\"value\"];\n var value = 0;\n var startIndex = this.startIndex;\n var endIndex = this.endIndex;\n var delay = 0;\n var interpolationDuration = this.hiddenState.transitionDuration;\n if ($type.isNumber(duration)) {\n interpolationDuration = duration;\n }\n if (!options.animationsEnabled) {\n interpolationDuration = 0;\n }\n $iter.each($iter.indexed(this.dataItems.iterator()), function (a) {\n var i = a[0];\n var dataItem = a[1];\n if (_this.sequencedInterpolation) {\n delay = _this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\n }\n dataItem.hide(interpolationDuration, delay, value, fields);\n });\n var animation = _super.prototype.hide.call(this, duration);\n if (animation && !animation.isFinished()) {\n animation.delay(delay);\n }\n return animation;\n };\n /**\r\n * @ignore\r\n */\n FunnelSeries.prototype.setAlignLabels = function (value) {\n _super.prototype.setAlignLabels.call(this, value);\n this.ticks.template.disabled = !value;\n var labelsContainer = this.labelsContainer;\n if (labelsContainer) {\n // do not align\n if (!value) {\n labelsContainer.width = percent(100);\n labelsContainer.height = percent(100);\n }\n //align\n else {\n labelsContainer.height = undefined;\n labelsContainer.width = undefined;\n labelsContainer.margin(10, 10, 10, 10);\n }\n }\n this.labelsOpposite = this.labelsOpposite;\n };\n Object.defineProperty(FunnelSeries.prototype, \"labelsOpposite\", {\n /**\r\n * @return Labels on opposite side?\r\n */\n get: function () {\n return this.getPropertyValue(\"labelsOpposite\");\n },\n /**\r\n * Put labels on the oppsite side of the series?\r\n *\r\n * This setting is only used if `alignLabels = true`.\r\n *\r\n * If set to `true` (default) labels will be drawn to the right (on vertical\r\n * series), or to the bottom (on horizontal series).\r\n *\r\n * If set to `false`, labels will be positioned to the left or top\r\n * respectively.\r\n *\r\n * @default true\r\n * @since 4.1.13\r\n * @param value Labels on opposite side?\r\n */\n set: function (value) {\n this.setPropertyValue(\"labelsOpposite\", value);\n var labelTemplate = this.labels.template;\n var labelAlign = \"none\";\n var labelValign = \"none\";\n if (!this.alignLabels) {\n if (this.orientation == \"vertical\") {\n labelAlign = \"center\";\n } else {\n labelValign = \"middle\";\n }\n } else {\n // opposite (left/bottom)\n if (value) {\n this.labelsContainer.toFront();\n // left\n if (this.orientation == \"vertical\") {\n this.ticks.template.locationX = 1;\n labelTemplate.horizontalCenter = \"left\";\n labelAlign = \"right\";\n }\n // bottom\n else {\n this.ticks.template.locationY = 1;\n labelTemplate.horizontalCenter = \"right\";\n labelValign = \"bottom\";\n }\n }\n // non oposite (right/top)\n else {\n this.labelsContainer.toBack();\n // right\n if (this.orientation == \"vertical\") {\n this.ticks.template.locationX = 0;\n labelAlign = \"left\";\n }\n // top\n else {\n labelValign = \"top\";\n this.ticks.template.locationY = 0;\n }\n }\n }\n labelTemplate.align = labelAlign;\n labelTemplate.valign = labelValign;\n this.validateLayout();\n this.ticks.each(function (tick) {\n tick.invalidate();\n });\n this.invalidateDataItems();\n },\n enumerable: true,\n configurable: true\n });\n return FunnelSeries;\n}(PercentSeries);\nexport { FunnelSeries };\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"FunnelSeries\"] = FunnelSeries;\nregistry.registeredClasses[\"FunnelSeriesDataItem\"] = FunnelSeriesDataItem;\n//# sourceMappingURL=FunnelSeries.js.map","/**\r\n * Defines Pyramid Series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { FunnelSeries, FunnelSeriesDataItem } from \"./FunnelSeries\";\nimport { registry } from \"../../core/Registry\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport { percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo: sequenced?\n/**\r\n * Defines a [[DataItem]] for [[PyramidSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PyramidSeriesDataItem = /** @class */function (_super) {\n __extends(PyramidSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PyramidSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PyramidSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return PyramidSeriesDataItem;\n}(FunnelSeriesDataItem);\nexport { PyramidSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a FunnelSlice series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPyramidSeriesEvents} for a list of available Events\r\n * @see {@link IPyramidSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\nvar PyramidSeries = /** @class */function (_super) {\n __extends(PyramidSeries, _super);\n /**\r\n * Constructor\r\n */\n function PyramidSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"PyramidSeries\";\n _this.topWidth = percent(0);\n _this.bottomWidth = percent(100);\n _this.pyramidHeight = percent(100);\n _this.valueIs = \"area\";\n _this.sliceLinks.template.width = 0;\n _this.sliceLinks.template.height = 0;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n PyramidSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Pyramid Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n PyramidSeries.prototype.createDataItem = function () {\n return new PyramidSeriesDataItem();\n };\n /**\r\n * (Re)validates the whole series, effectively causing it to redraw.\r\n *\r\n * @ignore Exclude from docs\r\n */\n PyramidSeries.prototype.validate = function () {\n _super.prototype.validate.call(this);\n this._nextWidth = undefined;\n };\n /**\r\n * [getNextValue description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n * @return [description]\r\n */\n PyramidSeries.prototype.getNextValue = function (dataItem) {\n var index = dataItem.index;\n var nextValue = dataItem.getWorkingValue(\"value\");\n if (index < this.dataItems.length - 1) {\n var nextItem = this.dataItems.getIndex(index + 1);\n nextValue = nextItem.getWorkingValue(\"value\");\n }\n if (nextValue == 0) {\n nextValue = 0.000001;\n }\n return nextValue;\n };\n /**\r\n * [validateDataElements description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n PyramidSeries.prototype.validateDataElements = function () {\n var _this = this;\n var maxWidth = this.slicesContainer.innerWidth;\n var maxHeight = this.slicesContainer.innerHeight;\n this.dataItems.each(function (dataItem) {\n if (dataItem.value > 0) {\n var relValue = dataItem.getWorkingValue(\"value\") / dataItem.value;\n var sliceLink = dataItem.sliceLink;\n if (_this.orientation == \"vertical\") {\n maxHeight -= sliceLink.pixelHeight * relValue;\n } else {\n maxWidth -= sliceLink.pixelWidth * relValue;\n }\n }\n });\n this._pyramidHeight = $utils.relativeToValue(this.pyramidHeight, maxHeight);\n this._pyramidWidth = $utils.relativeToValue(this.pyramidHeight, maxWidth);\n if (this.orientation == \"vertical\") {\n var y = (maxHeight - this._pyramidHeight) / 2;\n this.slicesContainer.y = y;\n this.labelsContainer.y = y;\n this.ticksContainer.y = y;\n } else {\n var x = (maxWidth - this._pyramidWidth) / 2;\n this.slicesContainer.x = x;\n this.labelsContainer.x = x;\n this.ticksContainer.x = x;\n }\n _super.prototype.validateDataElements.call(this);\n };\n /**\r\n * [decorateSlice description]\r\n *\r\n * @todo Description\r\n * @param dataItem [description]\r\n */\n PyramidSeries.prototype.decorateSlice = function (dataItem) {\n var sum = this.dataItem.values.value.absoluteSum;\n if (sum == 0) {\n return;\n }\n var slice = dataItem.slice;\n var sliceLink = dataItem.sliceLink;\n var label = dataItem.label;\n var tick = dataItem.tick;\n // TODO can this be removed ?\n this.getNextValue(dataItem);\n var workingValue = Math.abs(dataItem.getWorkingValue(\"value\"));\n var pyramidWidth = this._pyramidWidth;\n var pyramidHeight = this._pyramidHeight;\n var maxWidth = this.slicesContainer.innerWidth;\n var maxHeight = this.slicesContainer.innerHeight;\n var linkWidth = sliceLink.pixelWidth;\n var linkHeight = sliceLink.pixelHeight;\n if ((dataItem.value == 0 || dataItem.value == null) && this.ignoreZeroValues) {\n dataItem.__disabled = true;\n } else {\n dataItem.__disabled = false;\n }\n if (this.orientation == \"vertical\") {\n var topWidth = $utils.relativeToValue(this.topWidth, maxWidth);\n if (!$type.isNumber(this._nextWidth)) {\n this._nextWidth = topWidth;\n }\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxWidth);\n var sliceTopWidth = this._nextWidth;\n var angle = Math.atan2(pyramidHeight, topWidth - bottomWidth);\n var c = Math.tan(Math.PI / 2 - angle);\n if (c == 0) {\n c = 0.00000001;\n }\n var sliceHeight = void 0;\n var sliceBottomWidth = void 0;\n if (this.valueIs == \"area\") {\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidHeight;\n var square = totalSquare * workingValue / sum;\n var s = Math.abs(sliceTopWidth * sliceTopWidth - 2 * square * c);\n sliceHeight = (sliceTopWidth - Math.sqrt(s)) / c;\n if (sliceHeight > 0) {\n sliceBottomWidth = (2 * square - sliceHeight * sliceTopWidth) / sliceHeight;\n } else {\n sliceBottomWidth = sliceTopWidth;\n }\n } else {\n sliceHeight = pyramidHeight * workingValue / sum;\n sliceBottomWidth = sliceTopWidth - sliceHeight * c;\n }\n slice.height = sliceHeight;\n slice.width = maxWidth;\n slice.bottomWidth = sliceBottomWidth;\n slice.topWidth = sliceTopWidth;\n sliceLink.topWidth = slice.bottomWidth;\n sliceLink.bottomWidth = slice.bottomWidth;\n slice.y = this._nextY;\n //slice.x = maxWidth / 2;\n if (!this.alignLabels) {\n label.x = maxWidth / 2;\n } else {\n label.x = 0;\n }\n label.y = slice.pixelY + slice.pixelHeight * tick.locationY + slice.dy;\n this._nextY += slice.pixelHeight + linkHeight * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\n sliceLink.y = this._nextY - linkHeight;\n sliceLink.x = maxWidth / 2;\n } else {\n var topWidth = $utils.relativeToValue(this.topWidth, maxHeight);\n if (!$type.isNumber(this._nextWidth)) {\n this._nextWidth = topWidth;\n }\n var bottomWidth = $utils.relativeToValue(this.bottomWidth, maxHeight);\n var sliceTopWidth = this._nextWidth;\n var angle = Math.atan2(pyramidWidth, topWidth - bottomWidth);\n var c = Math.tan(Math.PI / 2 - angle);\n if (c == 0) {\n c = 0.00000001;\n }\n var sliceWidth = void 0;\n var sliceBottomWidth = void 0;\n if (this.valueIs == \"area\") {\n var totalSquare = (topWidth + bottomWidth) / 2 * pyramidWidth;\n var square = totalSquare * workingValue / sum;\n sliceWidth = (sliceTopWidth - Math.sqrt(sliceTopWidth * sliceTopWidth - 2 * square * c)) / c;\n sliceBottomWidth = (2 * square - sliceWidth * sliceTopWidth) / sliceWidth;\n } else {\n sliceWidth = pyramidWidth * workingValue / sum;\n sliceBottomWidth = sliceTopWidth - sliceWidth * c;\n }\n slice.width = sliceWidth;\n slice.height = maxHeight;\n slice.bottomWidth = sliceBottomWidth;\n slice.topWidth = sliceTopWidth;\n sliceLink.topWidth = slice.bottomWidth;\n sliceLink.bottomWidth = slice.bottomWidth;\n slice.x = this._nextY;\n if (!this.alignLabels) {\n label.y = maxHeight / 2;\n } else {\n label.y = this.labelsContainer.measuredHeight;\n }\n label.x = slice.pixelX + slice.pixelWidth * tick.locationX + slice.dx;\n this._nextY += slice.pixelWidth + linkWidth * workingValue / Math.max(Math.abs(dataItem.value), 0.00000001);\n sliceLink.x = this._nextY - linkWidth;\n sliceLink.y = maxHeight / 2;\n }\n this._nextWidth = slice.bottomWidth;\n };\n Object.defineProperty(PyramidSeries.prototype, \"topWidth\", {\n /**\r\n * @return {number | Percent}\r\n */\n get: function () {\n return this.getPropertyValue(\"topWidth\");\n },\n /**\r\n * Width of the pyramid's tip in pixels or relative (`Percent`).\r\n *\r\n * `0%` (default) means the pyramid will be perfectly pointy.\r\n * `50%` will have a cut off / blunt top that is half the width of the chart.\r\n * `100%` will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @default 0%\r\n * @param {number | Percent}\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"topWidth\", value, false, false, 10, false)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PyramidSeries.prototype, \"pyramidHeight\", {\n /**\r\n * @return {number | Percent}\r\n */\n get: function () {\n return this.getPropertyValue(\"pyramidHeight\");\n },\n /**\r\n * Height of pyramid\r\n *\r\n *\r\n * @default 100%\r\n * @param {number | Percent}\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"pyramidHeight\", value, false, false, 10, false)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PyramidSeries.prototype, \"bottomWidth\", {\n /**\r\n * @return {number | Percent}\r\n */\n get: function () {\n return this.getPropertyValue(\"bottomWidth\");\n },\n /**\r\n * Width of the pyramid's bottom (bsae) in pixels or relative (`Percent`).\r\n *\r\n * `0%` means the pyramid's botto will be pointy.\r\n * `50%` will have a cut off / blunt bottom that is half the width of the chart.\r\n * `100%` (default) will take the whole width of the chart.\r\n *\r\n * If you need the downward-pointing pyramid, you might want to `topWidth` to\r\n * `100%` and `bottomWidth` to `0%`.\r\n *\r\n * @param {number | Percent}\r\n */\n set: function (value) {\n if (this.setPercentProperty(\"bottomWidth\", value, false, false, 10, false)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PyramidSeries.prototype, \"valueIs\", {\n /**\r\n * @return {\"area\" | \"height\"}\r\n */\n get: function () {\n return this.getPropertyValue(\"valueIs\");\n },\n /**\r\n * Indicates how slice's value will influence its size.\r\n *\r\n * `\"area\"` (default) means that the whole area of the pyramid (counting in\r\n * modifications by `topWidth` and `bottomWidth`) will be divvied up between\r\n * slices based on their value.\r\n *\r\n * With this setting at `\"area\"` the area of the trapezoids of each slice\r\n * will represent their value relatively to values of the other slices.\r\n *\r\n * This is a correct way to depict \"weight\" of each slice based on their\r\n * values.\r\n *\r\n * `\"height\"` means whole height (as opposed to area) of the pyramid will be\r\n * divvied up between slices. Actual slice width or area is not counted in.\r\n *\r\n * From the data-viz standpoint this does not make a lot of sense, since\r\n * slices with lesser values might appear more prominent if they are placed\r\n * towards thick end of the pyramid since their areas will be bigger.\r\n *\r\n * @default \"area\"\r\n * @param {\"area\" | \"height\"}\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"valueIs\", value)) {\n this.invalidate();\n }\n },\n enumerable: true,\n configurable: true\n });\n return PyramidSeries;\n}(FunnelSeries);\nexport { PyramidSeries };\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PyramidSeries\"] = PyramidSeries;\nregistry.registeredClasses[\"PyramidSeriesDataItem\"] = PyramidSeriesDataItem;\n//# sourceMappingURL=PyramidSeries.js.map","/**\r\n * Defines Pictorial Stacked Series.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { PyramidSeries, PyramidSeriesDataItem } from \"./PyramidSeries\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $type from \"../../core/utils/Type\";\nimport { percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n//@todo: sequenced?\n/**\r\n * Defines a [[DataItem]] for [[PictorialStackedSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar PictorialStackedSeriesDataItem = /** @class */function (_super) {\n __extends(PictorialStackedSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function PictorialStackedSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"PictorialStackedSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return PictorialStackedSeriesDataItem;\n}(PyramidSeriesDataItem);\nexport { PictorialStackedSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a PictorialStacked series on a [[SlicedChart]].\r\n *\r\n * @see {@link IPictorialStackedSeriesEvents} for a list of available Events\r\n * @see {@link IPictorialStackedSeriesAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/sliced-chart/} for documentation\r\n * @important\r\n */\nvar PictorialStackedSeries = /** @class */function (_super) {\n __extends(PictorialStackedSeries, _super);\n /**\r\n * Constructor\r\n */\n function PictorialStackedSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"PictorialStackedSeries\";\n _this.topWidth = percent(100);\n _this.bottomWidth = percent(100);\n _this.valueIs = \"height\";\n _this.applyTheme();\n _this.startLocation = 0;\n _this.endLocation = 1;\n _this.align = \"center\";\n _this.valign = \"middle\";\n _this._maskSprite = _this.slicesContainer.createChild(Sprite);\n _this._maskSprite.visible = false;\n _this._maskSprite.zIndex = 100;\n _this._maskSprite.shouldClone = false;\n return _this;\n }\n /**\r\n * Sizes the mask to fit the series.\r\n *\r\n * @ignore\r\n */\n PictorialStackedSeries.prototype.validateDataElements = function () {\n var maxWidth = this.slicesContainer.maxWidth;\n var maxHeight = this.slicesContainer.maxHeight;\n var maskSprite = this._maskSprite;\n //maskSprite.validatePosition(); // for some reason size of the maskSprite is 0x0 after we removed validatePosition in afterdraw\n var pictureWidth = maskSprite.measuredWidth / maskSprite.scale;\n var pictureHeight = maskSprite.measuredHeight / maskSprite.scale;\n var scale = $math.min(maxHeight / pictureHeight, maxWidth / pictureWidth);\n if (scale == Infinity) {\n scale = 1; // can't return here, won't draw legend properly\n }\n scale = $math.max(0.001, scale);\n var startLocation = this.startLocation;\n var endLocation = this.endLocation;\n var newWidth = $math.min(maxWidth, pictureWidth * scale);\n var newHeight = $math.min(maxHeight, pictureHeight * scale);\n maskSprite.scale = scale;\n if (this.orientation == \"vertical\") {\n this.topWidth = newWidth + 4;\n this.bottomWidth = newWidth + 4;\n this.pyramidHeight = newHeight * (endLocation - startLocation);\n maskSprite.x = maxWidth / 2;\n maskSprite.y = newHeight / 2;\n } else {\n this.topWidth = newHeight + 4;\n this.bottomWidth = newHeight + 4;\n this.pyramidHeight = newWidth * (endLocation - startLocation);\n maskSprite.valign = \"middle\";\n maskSprite.x = newWidth / 2;\n maskSprite.y = maxHeight / 2;\n }\n maskSprite.verticalCenter = \"middle\";\n maskSprite.horizontalCenter = \"middle\";\n _super.prototype.validateDataElements.call(this);\n var y;\n var x;\n if (this.orientation == \"vertical\") {\n if (this.valign == \"bottom\") {\n y = maxHeight - newHeight;\n }\n if (this.valign == \"middle\") {\n y = (maxHeight - newHeight) / 2;\n }\n if (this.valign == \"top\") {\n y = 0;\n }\n if (this.align == \"left\") {\n x = -(maxWidth - newWidth) / 2;\n }\n if (this.align == \"center\") {\n x = 0;\n }\n if (this.align == \"right\") {\n x = (maxWidth - newWidth) / 2;\n }\n this.slices.template.dy = startLocation * newHeight;\n if (this.alignLabels) {\n this.slicesContainer.dx = x;\n }\n } else {\n if (this.valign == \"bottom\") {\n y = (maxHeight - newHeight) / 2;\n }\n if (this.valign == \"middle\") {\n y = 0;\n }\n if (this.valign == \"top\") {\n y = -(maxHeight - newHeight) / 2;\n }\n if (this.align == \"left\") {\n x = 0;\n }\n if (this.align == \"center\") {\n x = (maxWidth - newWidth) / 2;\n }\n if (this.align == \"right\") {\n x = maxWidth - newWidth;\n }\n this.slices.template.dx = startLocation * newWidth;\n if (this.alignLabels) {\n this.slicesContainer.dy = y;\n }\n }\n this.slicesContainer.x = x;\n this.labelsContainer.x = x;\n this.ticksContainer.x = x;\n this.slicesContainer.y = y;\n this.labelsContainer.y = y;\n this.ticksContainer.y = y;\n if (newWidth > 0 && newHeight > 0) {\n this.slicesContainer.mask = maskSprite;\n }\n };\n /**\r\n * Sets defaults that instantiate some objects that rely on parent, so they\r\n * cannot be set in constructor.\r\n */\n PictorialStackedSeries.prototype.applyInternalDefaults = function () {\n _super.prototype.applyInternalDefaults.call(this);\n if (!$type.hasValue(this.readerTitle)) {\n this.readerTitle = this.language.translate(\"Pyramid Series\");\n }\n };\n /**\r\n * Returns a new/empty DataItem of the type appropriate for this object.\r\n *\r\n * @see {@link DataItem}\r\n * @return Data Item\r\n */\n PictorialStackedSeries.prototype.createDataItem = function () {\n return new PictorialStackedSeriesDataItem();\n };\n Object.defineProperty(PictorialStackedSeries.prototype, \"maskSprite\", {\n /**\r\n * A [[Sprite]] element that is used as a series mask.\r\n *\r\n * If set, this element's shape will be used to apply shape to the whole\r\n * stacked pictorial series.\r\n *\r\n * You can use this element's `path` property to set an SVG path for the\r\n * shape:\r\n *\r\n * ```TypeScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JavaScript\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * series.maskSprite.path = iconPath;\r\n * ```\r\n * ```JSON\r\n * let iconPath = \"M511.82,329.991c-0.256-1.212-1.064-2.244-2.192-2.784l-24.396-11.684c17.688-29.776,11.804-68.912-15.58-91.88 c-53.756-45.084-131.696-70.936-213.828-70.936c-82.128,0-160.068,25.856-213.82,70.936c-27.416,22.992-33.28,62.18-15.524,91.972 L2.276,327.203c-1.128,0.54-1.936,1.572-2.192,2.792c-0.256,1.22,0.08,2.496,0.896,3.436l21.204,24.388 c0.764,0.88,1.868,1.376,3.02,1.376c0.084,0,0.172,0,0.26-0.008c1.244-0.084,2.384-0.74,3.072-1.776l14.852-22.376 c12.648,10.112,28.392,15.776,44.916,15.776c16.872,0,33.284-5.98,46.232-16.836c27.828-23.34,73.172-37.272,121.288-37.272 c48.12,0,93.464,13.932,121.296,37.272c12.944,10.856,29.36,16.836,46.228,16.836c16.596,0,32.4-5.724,45.08-15.916l14.94,22.512 c0.692,1.04,1.824,1.696,3.076,1.776c0.084,0.008,0.172,0.008,0.256,0.008c1.156,0,2.256-0.496,3.02-1.376l21.2-24.388C511.74,332.487,512.068,331.211,511.82,329.991z\";\r\n * // ...\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * \"type\": \"PictorialStackedSeries\",\r\n * // ...\r\n * \"maskSprite\": {\r\n * \"path\": iconPath\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @return Mask sprite\r\n */\n get: function () {\n return this._maskSprite;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Inits FunnelSlice.\r\n *\r\n * @param slice to init\r\n */\n PictorialStackedSeries.prototype.initSlice = function (slice) {\n _super.prototype.initSlice.call(this, slice);\n var hs = slice.states.getKey(\"hover\");\n if (hs) {\n hs.properties.expandDistance = 0;\n }\n };\n Object.defineProperty(PictorialStackedSeries.prototype, \"startLocation\", {\n /**\r\n * @return Start location\r\n */\n get: function () {\n return this.getPropertyValue(\"startLocation\");\n },\n /**\r\n * Relative location to start series from.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will start relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to start at 30% from the top/left of the\r\n * series, we can set `startLocation = 0.3`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 0\r\n * @since 4.1.13\r\n * @param value Start location\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"startLocation\", value)) {\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PictorialStackedSeries.prototype, \"endLocation\", {\n /**\r\n * @return End location\r\n */\n get: function () {\n return this.getPropertyValue(\"endLocation\");\n },\n /**\r\n * Relative location to end series at.\r\n *\r\n * Range of values: 0 to 1.\r\n *\r\n * This setting indicates where actual slices will end relatively to the\r\n * whole height/width of the series.\r\n *\r\n * For example, if we want slices to end at 70% from the top/left of the\r\n * series, we can set `endLocation = 0.7`.\r\n *\r\n * To fill shape outside of the location range, use background of the\r\n * property `slicesContainer`.\r\n *\r\n * ```TypeScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JavaScript\r\n * series.startLocation = 0.2;\r\n * series.endLocation = 0.8;\r\n * series.slicesContainer.background.fill = am4core.color(\"#eee\");\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"series\": [{\r\n * // ...\r\n * \"startLocation\": 0.2,\r\n * \"endLocation\": 0.8,\r\n * \"slicesContainer\": {\r\n * \"background\": {\r\n * \"fill\": \"#eee\"\r\n * }\r\n * }\r\n * }]\r\n * }\r\n * ```\r\n *\r\n * @default 1\r\n * @since 4.1.13\r\n * @param value End location\r\n */\n set: function (value) {\n if (this.setPropertyValue(\"endLocation\", value)) {\n this.invalidateDataItems();\n }\n },\n enumerable: true,\n configurable: true\n });\n return PictorialStackedSeries;\n}(PyramidSeries);\nexport { PictorialStackedSeries };\n/**\r\n * bboxter class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"PictorialStackedSeries\"] = PictorialStackedSeries;\nregistry.registeredClasses[\"PictorialStackedSeriesDataItem\"] = PictorialStackedSeriesDataItem;\n//# sourceMappingURL=PictorialStackedSeries.js.map","/**\r\n * Module that defines everything related to building Cone Columns.\r\n * It is a container which has coneColumn element which is a Cone.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Column } from \"./Column\";\nimport { Cone } from \"../../core/elements/3d/Cone\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates ConeColumns.\r\n *\r\n * @see {@link IConeColumnEvents} for a list of available events\r\n * @see {@link IConeColumnAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar ConeColumn = /** @class */function (_super) {\n __extends(ConeColumn, _super);\n /**\r\n * Constructor\r\n */\n function ConeColumn() {\n var _this = _super.call(this) || this;\n _this.className = \"ConeColumn\";\n return _this;\n }\n /**\r\n * @ignore\r\n */\n ConeColumn.prototype.createAssets = function () {\n this.coneColumn = this.createChild(Cone);\n this.coneColumn.shouldClone = false;\n // some dirty hack so that if user access column, it won't get error\n this.column = this.coneColumn;\n };\n /**\r\n * Copies all parameters from another [[ConeColumn]].\r\n *\r\n * @param source Source ConeColumn\r\n */\n ConeColumn.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.coneColumn) {\n this.coneColumn.copyFrom(source.coneColumn);\n }\n };\n return ConeColumn;\n}(Column);\nexport { ConeColumn };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ConeColumn\"] = ConeColumn;\n//# sourceMappingURL=ConeColumn.js.map","/**\r\n * ConeSeries module\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\nimport { ConeColumn } from \"../elements/ConeColumn\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[ConeSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar ConeSeriesDataItem = /** @class */function (_super) {\n __extends(ConeSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function ConeSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"ConeSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return ConeSeriesDataItem;\n}(ColumnSeriesDataItem);\nexport { ConeSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a cone graph.\r\n *\r\n * @see {@link IConeSeriesEvents} for a list of available Events\r\n * @see {@link IConeSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\nvar ConeSeries = /** @class */function (_super) {\n __extends(ConeSeries, _super);\n /**\r\n * Constructor\r\n */\n function ConeSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"ConeSeries\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Returns an element to use for Candlestick\r\n * @ignore\r\n * @return Element.\r\n */\n ConeSeries.prototype.createColumnTemplate = function () {\n return new ConeColumn();\n };\n /**\r\n * Returns an SVG path to use as series mask.\r\n *\r\n * @return SVG path\r\n */\n ConeSeries.prototype.getMaskPath = function () {\n var dx = 0;\n var dy = 0;\n var column = this.columns.getIndex(0);\n if (column) {\n if (this.baseAxis == this.xAxis) {\n dy = column.coneColumn.innerWidth / 2 + 1;\n } else {\n dx = column.coneColumn.innerHeight / 2 + 1;\n }\n return $path.rectToPath({\n x: -dx,\n y: 0,\n width: this.xAxis.axisLength + dx,\n height: this.yAxis.axisLength + dy\n });\n }\n };\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n ConeSeries.prototype.validateDataElementReal = function (dataItem) {\n _super.prototype.validateDataElementReal.call(this, dataItem);\n var column = dataItem.column;\n if (column) {\n var coneColumn = dataItem.column.coneColumn;\n coneColumn.fill = dataItem.column.fill;\n if (this.baseAxis == this.yAxis) {\n coneColumn.orientation = \"horizontal\";\n } else {\n coneColumn.orientation = \"vertical\";\n }\n }\n };\n return ConeSeries;\n}(ColumnSeries);\nexport { ConeSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ConeSeries\"] = ConeSeries;\nregistry.registeredClasses[\"ConeSeriesDataItem\"] = ConeSeriesDataItem;\n//# sourceMappingURL=ConeSeries.js.map","/**\r\n * Module that defines everything related to building Curved Columns.\r\n * It is a container which has CurvedColumn element which is a Sprite.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Column } from \"./Column\";\nimport { Sprite } from \"../../core/Sprite\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport { registry } from \"../../core/Registry\";\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\nimport { percent } from \"../../core/utils/Percent\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Class used to creates CurvedColumns.\r\n *\r\n * @see {@link ICurvedColumnEvents} for a list of available events\r\n * @see {@link ICurvedColumnAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar CurvedColumn = /** @class */function (_super) {\n __extends(CurvedColumn, _super);\n /**\r\n * Constructor\r\n */\n function CurvedColumn() {\n var _this = _super.call(this) || this;\n _this.className = \"CurvedColumn\";\n return _this;\n }\n /**\r\n * [createAssets description]\r\n *\r\n * @todo Description\r\n * @ignore Exclude from docs\r\n */\n CurvedColumn.prototype.createAssets = function () {\n this.curvedColumn = this.createChild(Sprite);\n this.curvedColumn.shouldClone = false;\n this.setPropertyValue(\"tension\", 0.7);\n this.width = percent(120);\n this.height = percent(120);\n // some dirty hack so that if user access column, it won't get error\n this.column = this.curvedColumn;\n };\n /**\r\n * Draws the element.\r\n *\r\n * @ignore Exclude from docs\r\n */\n CurvedColumn.prototype.draw = function () {\n _super.prototype.draw.call(this);\n var w = this.realWidth;\n var h = this.realHeight;\n var x = this.realX - this.pixelX;\n var y = this.realY - this.pixelY;\n var points;\n // TODO can this be removed ?\n $utils.used(this.width);\n var tensionX = 1;\n var tensionY = 1;\n if (this.orientation == \"vertical\") {\n tensionX = this.tension;\n points = [{\n x: 0,\n y: h + y\n }, {\n x: w / 2,\n y: y\n }, {\n x: w,\n y: h + y\n }];\n } else {\n tensionY = this.tension;\n h = Math.abs(h);\n points = [{\n x: x,\n y: h\n }, {\n x: x + w,\n y: h / 2\n }, {\n x: x,\n y: 0\n }];\n }\n var path = $path.moveTo(points[0]) + new $smoothing.Tension(tensionX, tensionY).smooth(points);\n this.column.path = path;\n };\n /**\r\n * Copies all parameters from another [[CurvedColumn]].\r\n *\r\n * @param source Source CurvedColumn\r\n */\n CurvedColumn.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n if (this.curvedColumn) {\n this.curvedColumn.copyFrom(source.curvedColumn);\n }\n };\n Object.defineProperty(CurvedColumn.prototype, \"tension\", {\n /**\r\n * @return Tension (0-1)\r\n */\n get: function () {\n return this.getPropertyValue(\"tension\");\n },\n /**\r\n * Horizontal tension of the curve.\r\n *\r\n * Tension defines how \"lose\" the line will be.\r\n *\r\n * 1 is the maximum tension which would result in pointy columns with\r\n * straight edges.\r\n *\r\n * The smaller the tension th wider the column will be.\r\n *\r\n * @default 0.7\r\n * @param value tension (0-1)\r\n */\n set: function (value) {\n this.setPropertyValue(\"tension\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CurvedColumn.prototype, \"orientation\", {\n /**\r\n * Orientation\r\n */\n get: function () {\n return this.getPropertyValue(\"orientation\");\n },\n /**\r\n * Orientation of the column.\r\n *\r\n * Available options: \"vertical\" (default) and \"horizontal\".\r\n *\r\n * @default \"vertical\"\r\n * @param value Orientation\r\n */\n set: function (value) {\n this.setPropertyValue(\"orientation\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n return CurvedColumn;\n}(Column);\nexport { CurvedColumn };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CurvedColumn\"] = CurvedColumn;\n//# sourceMappingURL=CurvedColumn.js.map","/**\r\n * CurvedColumnSeries module.\r\n *\r\n * Not recommended using if you use scrollbars or your chart is zoomable in some other way.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { ColumnSeries, ColumnSeriesDataItem } from \"./ColumnSeries\";\nimport { CurvedColumn } from \"../elements/CurvedColumn\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[CurvedColumnSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar CurvedColumnSeriesDataItem = /** @class */function (_super) {\n __extends(CurvedColumnSeriesDataItem, _super);\n /**\r\n * Constructor\r\n */\n function CurvedColumnSeriesDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"CurvedColumnSeriesDataItem\";\n _this.applyTheme();\n return _this;\n }\n return CurvedColumnSeriesDataItem;\n}(ColumnSeriesDataItem);\nexport { CurvedColumnSeriesDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines [[Series]] for a curved columns graph.\r\n *\r\n * @see {@link ICurvedColumnSeriesEvents} for a list of available Events\r\n * @see {@link ICurvedColumnSeriesAdapters} for a list of available Adapters\r\n * @important\r\n */\nvar CurvedColumnSeries = /** @class */function (_super) {\n __extends(CurvedColumnSeries, _super);\n /**\r\n * Constructor\r\n */\n function CurvedColumnSeries() {\n var _this = _super.call(this) || this;\n _this.className = \"CurvedColumnSeries\";\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Returns an element to use for the curved column.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Element.\r\n */\n CurvedColumnSeries.prototype.createColumnTemplate = function () {\n return new CurvedColumn();\n };\n /**\r\n * Validates data item's elements.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n CurvedColumnSeries.prototype.validateDataElementReal = function (dataItem) {\n _super.prototype.validateDataElementReal.call(this, dataItem);\n var column = dataItem.column;\n column = dataItem.column;\n if (column) {\n var curvedColumn = dataItem.column.curvedColumn;\n curvedColumn.fill = dataItem.column.fill;\n if (this.baseAxis == this.yAxis) {\n column.orientation = \"horizontal\";\n } else {\n column.orientation = \"vertical\";\n }\n }\n };\n return CurvedColumnSeries;\n}(ColumnSeries);\nexport { CurvedColumnSeries };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CurvedColumnSeries\"] = CurvedColumnSeries;\nregistry.registeredClasses[\"CurvedColumnSeriesDataItem\"] = CurvedColumnSeriesDataItem;\n//# sourceMappingURL=CurvedColumnSeries.js.map","/**\r\n * Bullet module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Bullet } from \"./Bullet\";\nimport { Circle } from \"../../core/elements/Circle\";\nimport { registry } from \"../../core/Registry\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar CircleBullet = /** @class */function (_super) {\n __extends(CircleBullet, _super);\n /**\r\n * Constructor\r\n */\n function CircleBullet() {\n var _this = _super.call(this) || this;\n _this.className = \"CircleBullet\";\n var circle = _this.createChild(Circle);\n circle.shouldClone = false;\n circle.radius = 5;\n circle.isMeasured = false;\n _this.circle = circle;\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[CircleBullet]].\r\n *\r\n * @param source Source element\r\n */\n CircleBullet.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.circle.copyFrom(source.circle);\n };\n return CircleBullet;\n}(Bullet);\nexport { CircleBullet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"CircleBullet\"] = CircleBullet;\n//# sourceMappingURL=CircleBullet.js.map","/**\r\n * Bullet module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Bullet } from \"./Bullet\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Creates a bullet with a textual label.\r\n *\r\n * Uses [[Label]] instance to draw the label, so the label itself is\r\n * configurable.\r\n *\r\n * @see {@link IBulletEvents} for a list of available events\r\n * @see {@link IBulletAdapters} for a list of available Adapters\r\n * @todo Usage example\r\n * @important\r\n */\nvar ErrorBullet = /** @class */function (_super) {\n __extends(ErrorBullet, _super);\n /**\r\n * Constructor\r\n */\n function ErrorBullet() {\n var _this = _super.call(this) || this;\n _this.className = \"ErrorBullet\";\n _this.errorLine = _this.createChild(Sprite);\n _this.errorLine.shouldClone = false;\n _this.width = 20;\n _this.height = 20;\n _this.strokeOpacity = 1;\n _this.isDynamic = true;\n return _this;\n }\n ErrorBullet.prototype.validatePosition = function () {\n _super.prototype.validatePosition.call(this);\n var w = this.pixelWidth / 2;\n var h = this.pixelHeight / 2;\n this.errorLine.path = $path.moveTo({\n x: -w,\n y: -h\n }) + $path.lineTo({\n x: w,\n y: -h\n }) + $path.moveTo({\n x: 0,\n y: -h\n }) + $path.lineTo({\n x: 0,\n y: h\n }) + $path.moveTo({\n x: -w,\n y: h\n }) + $path.lineTo({\n x: w,\n y: h\n });\n };\n /**\r\n * Copies all proprities and related stuff from another instance of\r\n * [[ErrorBullet]].\r\n *\r\n * @param source Source element\r\n */\n ErrorBullet.prototype.copyFrom = function (source) {\n _super.prototype.copyFrom.call(this, source);\n this.errorLine.copyFrom(source.errorLine);\n };\n return ErrorBullet;\n}(Bullet);\nexport { ErrorBullet };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"ErrorBullet\"] = ErrorBullet;\n//# sourceMappingURL=ErrorBullet.js.map","/**\r\n * Functionality for drawing simple NavigationBar.\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Component } from \"../../core/Component\";\nimport { DataItem } from \"../../core/DataItem\";\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\nimport { TextLink } from \"../../core/elements/TextLink\";\nimport { Triangle } from \"../../core/elements/Triangle\";\nimport { registry } from \"../../core/Registry\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { percent } from \"../../core/utils/Percent\";\nimport * as $iter from \"../../core/utils/Iterator\";\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Defines a [[DataItem]] for [[NavigationBar]].\r\n *\r\n * @see {@link DataItem}\r\n */\nvar NavigationBarDataItem = /** @class */function (_super) {\n __extends(NavigationBarDataItem, _super);\n /**\r\n * Constructor\r\n */\n function NavigationBarDataItem() {\n var _this = _super.call(this) || this;\n _this.className = \"NavigationBarDataItem\";\n _this.applyTheme();\n return _this;\n }\n Object.defineProperty(NavigationBarDataItem.prototype, \"name\", {\n /**\r\n * @return Name\r\n */\n get: function () {\n return this.properties[\"name\"];\n },\n /**\r\n * Name of the navigation bar item.\r\n *\r\n * @param value Name\r\n */\n set: function (value) {\n this.setProperty(\"name\", value);\n },\n enumerable: true,\n configurable: true\n });\n return NavigationBarDataItem;\n}(DataItem);\nexport { NavigationBarDataItem };\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * NavigationBar class can be used to create a multi-level breadcrumb-style\r\n * navigation control.\r\n *\r\n * @see {@link INavigationBarEvents} for a list of available events\r\n * @see {@link INavigationBarAdapters} for a list of available Adapters\r\n * @todo Implement better\r\n * @important\r\n */\nvar NavigationBar = /** @class */function (_super) {\n __extends(NavigationBar, _super);\n /**\r\n * Constructor\r\n */\n function NavigationBar() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"NavigationBar\";\n var interfaceColors = new InterfaceColorSet();\n var textLink = new TextLink();\n textLink.valign = \"middle\";\n textLink.paddingTop = 8;\n textLink.paddingBottom = 8;\n _this.paddingBottom = 2;\n _this.links = new ListTemplate(textLink);\n _this._disposers.push(new ListDisposer(_this.links));\n _this._disposers.push(textLink);\n _this._linksIterator = new $iter.ListIterator(_this.links, function () {\n return _this.links.create();\n });\n _this._linksIterator.createNewItems = true;\n var triangle = new Triangle();\n triangle.direction = \"right\";\n triangle.width = 8;\n triangle.height = 12;\n triangle.fill = interfaceColors.getFor(\"alternativeBackground\");\n triangle.fillOpacity = 0.5;\n triangle.valign = \"middle\";\n triangle.marginLeft = 10;\n triangle.marginRight = 10;\n _this.separators = new ListTemplate(triangle);\n _this._disposers.push(new ListDisposer(_this.separators));\n _this._disposers.push(triangle);\n var activeLink = new TextLink();\n _this.activeLink = activeLink;\n activeLink.copyFrom(textLink);\n activeLink.valign = \"middle\";\n activeLink.fontWeight = \"bold\";\n _this.width = percent(100);\n _this.layout = \"grid\";\n _this.dataFields.name = \"name\";\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Completely redraws the navigation bar.\r\n *\r\n * @ignore Exclude from docs\r\n */\n NavigationBar.prototype.validateDataElements = function () {\n this.removeChildren();\n this._linksIterator.reset();\n _super.prototype.validateDataElements.call(this);\n //@todo: dispose\n };\n /**\r\n * Creates a visual element for a data item (nav item).\r\n *\r\n * @ignore Exclude from docs\r\n * @param dataItem Data item\r\n */\n NavigationBar.prototype.validateDataElement = function (dataItem) {\n _super.prototype.validateDataElement.call(this, dataItem);\n var textLink;\n if (dataItem.index < this.dataItems.length - 1) {\n textLink = this._linksIterator.getLast();\n textLink.parent = this;\n var separator = this.separators.create();\n separator.parent = this;\n separator.valign = \"middle\";\n } else {\n textLink = this.activeLink;\n textLink.events.copyFrom(this.links.template.events);\n textLink.hide(0);\n textLink.show();\n textLink.parent = this;\n }\n textLink.dataItem = dataItem;\n textLink.text = dataItem.name;\n textLink.validate();\n };\n return NavigationBar;\n}(Component);\nexport { NavigationBar };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"NavigationBar\"] = NavigationBar;\nregistry.registeredClasses[\"NavigationBarDataItem\"] = NavigationBarDataItem;\n//# sourceMappingURL=NavigationBar.js.map","/**\r\n * Cursor module\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Container } from \"../../core/Container\";\nimport { getInteraction } from \"../../core/interaction/Interaction\";\nimport { registry } from \"../../core/Registry\";\nimport { percent } from \"../../core/utils/Percent\";\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $dom from \"../../core/utils/DOM\";\nimport { system } from \"../../core/System\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Main Cursor class with common cursor functionality.\r\n *\r\n * Chart-specific cursors must extend this class.\r\n *\r\n * @see {@link ICursorEvents} for a list of available events\r\n * @see {@link ICursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n * @todo Should we allow changing `_generalBehavior`?\r\n */\nvar Cursor = /** @class */function (_super) {\n __extends(Cursor, _super);\n /**\r\n * Constructor\r\n */\n function Cursor() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Current cursor position during selection.\r\n *\r\n * @todo Better description\r\n */\n _this.point = {\n x: 0,\n y: 0\n };\n /**\r\n * Specifies the rules when cursor needs to be moved or hidden.\r\n */\n _this._stick = \"none\";\n _this.className = \"Cursor\";\n // Set defaults\n _this.width = percent(100);\n _this.height = percent(100);\n _this.shouldClone = false;\n _this.hide(0);\n _this.trackable = true;\n _this.clickable = true;\n _this.isMeasured = false;\n // Add events on body to trigger down and up events (to start zooming or\n // selection)\n var interaction = getInteraction();\n _this._disposers.push(interaction.body.events.on(\"down\", _this.handleCursorDown, _this));\n _this._disposers.push(interaction.body.events.on(\"up\", _this.handleCursorUp, _this));\n _this._disposers.push(interaction.body.events.on(\"track\", _this.handleCursorMove, _this));\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Handle pointer movement in document and update cursor position as needed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Event\r\n */\n Cursor.prototype.handleCursorMove = function (event) {\n if (!this.interactionsEnabled || this.interactions.isTouchProtected && event.touch) {\n return;\n }\n if ((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\" || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\n // We want to let zoom/pan continue even if cursor is outside chart area\n if (!this.isHidden || !this.isHiding) {\n this.hide();\n }\n return;\n }\n var local = $utils.documentPointToSprite(event.pointer.point, this);\n if (this._stick == \"hard\" && this._stickPoint) {\n local = this._stickPoint;\n }\n if (this._stick == \"soft\" && this._stickPoint) {\n if (!this.fitsToBounds(local)) {\n local = this._stickPoint;\n }\n }\n if (this._adapterO) {\n this._adapterO.apply(\"cursorPoint\", local);\n }\n this.triggerMove(local);\n return local;\n };\n /**\r\n * Hides actual SVG elements and handles hiding animations.\r\n *\r\n * @param duration Fade out duration (ms)\r\n * @return Fade out duration (ms)\r\n * @ignore\r\n */\n Cursor.prototype.hideReal = function (duration) {\n if ((this._stick == \"hard\" || this._stick == \"soft\") && this._stickPoint) {\n return;\n }\n return _super.prototype.hideReal.call(this, duration);\n };\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * The second parameter has following options:\r\n *\r\n * `\"none\"` - placed cursor will only be there until mouse/touch moves, then\r\n * it either moves to a new place (if pointer over plot area) or is hidden.\r\n *\r\n * `\"soft\"` - cursor will stay in the place if mouse/touch is happening\r\n * outside chart, but will move to a new place whe plot area is hovered or\r\n * touched.\r\n *\r\n * `\"hard\"` - cursor will stay in place no matter what, until it is moved by\r\n * another `triggerMove()` call.\r\n *\r\n * The third parameter - `force` (since `4.9.5`) - if set to `true` will\r\n * make cursor execute all of the actions associated with cursor move,\r\n * including line redraws, tooltip updates, etc. Useful when underlying\r\n * chart data is dynamically being updated.\r\n *\r\n * @param point Point to place cursor at\r\n * @param stick Level of cursor stickiness to the place\r\n * @param force Force cursor move\r\n */\n Cursor.prototype.triggerMove = function (point, stick, force) {\n point.x = $math.round(point.x, 1);\n point.y = $math.round(point.y, 1);\n if (stick) {\n this._stick = stick;\n }\n if (stick == \"hard\" || stick == \"soft\") {\n this._stickPoint = point;\n }\n this.triggerMoveReal(point, force);\n };\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\n Cursor.prototype.triggerMoveReal = function (point, force) {\n if (this.point.x != point.x || this.point.y != point.y || force) {\n this.point = point;\n this.invalidatePosition();\n // hide cursor if it's out of bounds\n if (this.fitsToBounds(point)) {\n this.show(0);\n } else {\n // unless we are selecting (mouse is down)\n if (!this.downPoint) {\n this.hide(0);\n }\n }\n if (this.visible) {\n this.getPositions();\n this.dispatch(\"cursorpositionchanged\"); // not good to dispatch later (check step count example)\n }\n }\n };\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\n Cursor.prototype.triggerDown = function (point) {\n this.triggerDownReal(point);\n };\n /**\r\n * Simulates pressing down (click/touch) action by a cursor.\r\n *\r\n * @param point Point of action\r\n */\n Cursor.prototype.triggerDownReal = function (point) {\n switch (this._generalBehavior) {\n case \"zoom\":\n this.dispatchImmediately(\"zoomstarted\");\n break;\n case \"select\":\n this.dispatchImmediately(\"selectstarted\");\n break;\n case \"pan\":\n this.dispatchImmediately(\"panstarted\");\n getInteraction().setGlobalStyle(MouseCursorStyle.grabbing);\n break;\n }\n };\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\n Cursor.prototype.triggerUp = function (point) {\n this.triggerUpReal(point);\n };\n /**\r\n * Simulates the action of release of the mouse down / touch.\r\n *\r\n * @param point Point of action\r\n */\n Cursor.prototype.triggerUpReal = function (point) {\n system.requestFrame();\n this.updatePoint(this.upPoint);\n var interaction = getInteraction();\n if ($math.getDistance(this._upPointOrig, this._downPointOrig) > interaction.getHitOption(this.interactions, \"hitTolerance\")) {\n switch (this._generalBehavior) {\n case \"zoom\":\n this.dispatch(\"zoomended\");\n break;\n case \"select\":\n this.dispatch(\"selectended\");\n break;\n case \"pan\":\n this.dispatch(\"panended\");\n interaction.setGlobalStyle(MouseCursorStyle.default);\n break;\n }\n this.downPoint = undefined;\n this.updateSelection();\n }\n /*\r\n else {\r\n \r\n if(this._generalBehavior == \"select\"){\r\n this.dispatchImmediately(\"selectended\");\r\n }\r\n this.dispatchImmediately(\"behaviorcanceled\");\r\n interaction.setGlobalStyle(MouseCursorStyle.default);\r\n this.downPoint = undefined;\r\n }*/\n };\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\n Cursor.prototype.updateSelection = function () {};\n /**\r\n * Updates cursors current positions.\r\n */\n Cursor.prototype.getPositions = function () {\n // positions are used by axes or series\n this.xPosition = this.point.x / this.innerWidth;\n this.yPosition = 1 - this.point.y / this.innerHeight;\n };\n /**\r\n * Handles pointer down event so we can start zoom or selection.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\n Cursor.prototype.handleCursorDown = function (event) {\n if (!this.interactionsEnabled || this.interactions.isTouchProtected && event.touch || !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\n return;\n }\n // Initiate blur so that whatever focused element on the page is unselected\n $dom.blur();\n // Get local point\n var local = $utils.documentPointToSprite(event.pointer.point, this);\n if (this._stick == \"hard\" && this._stickPoint) {\n local = this._stickPoint;\n }\n if (this._adapterO) {\n this._adapterO.apply(\"cursorPoint\", local);\n }\n if (!this.fitsToBounds(local)) {\n return;\n }\n this._downPointOrig = {\n x: local.x,\n y: local.y\n };\n // We need to cancel the event to prevent gestures on touch devices\n if (event.event.cancelable && this.shouldPreventGestures(event.touch) && this.fitsToBounds(local)) {\n event.event.preventDefault();\n }\n // Make this happen\n this.triggerMove(local);\n this.triggerDown(local);\n };\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * Child classes should override this as necessary.\r\n *\r\n * @return Prevent default?\r\n */\n Cursor.prototype.shouldPreventGestures = function (touch) {\n return true;\n };\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\n Cursor.prototype.updatePoint = function (point) {};\n /**\r\n * Handles pointer up event - finishes zoom or selection action.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original event\r\n */\n Cursor.prototype.handleCursorUp = function (event) {\n if (!this.interactionsEnabled) {\n return;\n }\n if (!this.downPoint && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\n return;\n }\n var local = $utils.documentPointToSprite(event.pointer.point, this);\n if (this._adapterO) {\n this._adapterO.apply(\"cursorPoint\", local);\n }\n if (!this.downPoint || !this.fitsToBounds(this.downPoint)) {\n return;\n }\n if (this._stick == \"hard\" && this._stickPoint) {\n local = this._stickPoint;\n }\n this._upPointOrig = {\n x: local.x,\n y: local.y\n };\n this.triggerMove(local);\n this.triggerUp(local);\n };\n Object.defineProperty(Cursor.prototype, \"chart\", {\n /**\r\n * @return Chart\r\n */\n get: function () {\n return this._chart;\n },\n /**\r\n * A reference to a [[Chart]] the cursor belongs to.\r\n *\r\n * @param value Chart\r\n */\n set: function (value) {\n this._chart = value;\n if ($type.hasValue(this._chart.plotContainer)) {\n getInteraction().lockElement(this._chart.plotContainer.interactions);\n }\n },\n enumerable: true,\n configurable: true\n });\n return Cursor;\n}(Container);\nexport { Cursor };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"Cursor\"] = Cursor;\n//# sourceMappingURL=Cursor.js.map","/**\r\n * Cursor for XY chart\r\n */\nimport { __extends } from \"tslib\";\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Cursor } from \"./Cursor\";\nimport { Sprite } from \"../../core/Sprite\";\nimport { MutableValueDisposer, MultiDisposer } from \"../../core/utils/Disposer\";\nimport { ValueAxis } from \"../axes/ValueAxis\";\nimport { DateAxis } from \"../axes/DateAxis\";\nimport { XYSeries } from \"../series/XYSeries\";\nimport { registry } from \"../../core/Registry\";\nimport { color } from \"../../core/utils/Color\";\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\nimport { getInteraction } from \"../../core/interaction/Interaction\";\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\nimport * as $array from \"../../core/utils/Array\";\nimport * as $path from \"../../core/rendering/Path\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * A cursor used on [[XYChart]].\r\n *\r\n * @see {@link IXYCursorEvents} for a list of available events\r\n * @see {@link IXYCursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n */\nvar XYCursor = /** @class */function (_super) {\n __extends(XYCursor, _super);\n /**\r\n * Constructor\r\n */\n function XYCursor() {\n var _this =\n // Init\n _super.call(this) || this;\n /**\r\n * Vertical cursor line element.\r\n */\n _this._lineX = new MutableValueDisposer();\n /**\r\n * Horizontal cursor line element.\r\n */\n _this._lineY = new MutableValueDisposer();\n /**\r\n * Horizontal [[Axis]].\r\n */\n _this._xAxis = new MutableValueDisposer();\n /**\r\n * Vertical [[Axis]].\r\n */\n _this._yAxis = new MutableValueDisposer();\n _this._snapToDisposers = [];\n _this.className = \"XYCursor\";\n // Defaults\n _this.behavior = \"zoomX\";\n _this.maxPanOut = 0.1;\n var interfaceColors = new InterfaceColorSet();\n _this.snapOnPan = true;\n // Create selection element\n var selection = _this.createChild(Sprite);\n selection.shouldClone = false;\n selection.fillOpacity = 0.2;\n selection.fill = interfaceColors.getFor(\"alternativeBackground\");\n selection.isMeasured = false;\n selection.visible = false;\n selection.interactionsEnabled = false;\n _this.selection = selection;\n _this._disposers.push(_this.selection);\n // Create cursor's vertical line\n var lineX = _this.createChild(Sprite);\n lineX.shouldClone = false;\n lineX.stroke = interfaceColors.getFor(\"grid\");\n lineX.fill = color();\n lineX.strokeDasharray = \"3,3\";\n lineX.isMeasured = false;\n lineX.strokeOpacity = 0.4;\n lineX.interactionsEnabled = false;\n lineX.y = 0; // important\n _this.lineX = lineX;\n _this._disposers.push(_this.lineX);\n // Create cursor's horizontal line\n var lineY = _this.createChild(Sprite);\n lineY.shouldClone = false;\n lineY.stroke = interfaceColors.getFor(\"grid\");\n lineY.fill = color();\n lineY.strokeDasharray = \"3,3\";\n lineY.isMeasured = false;\n lineY.strokeOpacity = 0.4;\n lineY.interactionsEnabled = false;\n lineY.x = 0; // important\n _this.lineY = lineY;\n _this._disposers.push(_this.lineY);\n // Add handler for size changes\n _this.events.on(\"sizechanged\", _this.updateSize, _this, false);\n _this._disposers.push(_this._lineX);\n _this._disposers.push(_this._lineY);\n _this._disposers.push(_this._xAxis);\n _this._disposers.push(_this._yAxis);\n _this.mask = _this;\n _this.hideSeriesTooltipsOnSelection = true;\n // Apply theme\n _this.applyTheme();\n return _this;\n }\n /**\r\n * Updates cursor element dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYCursor.prototype.updateSize = function () {\n if (this.lineX) {\n this.lineX.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: 0,\n y: this.innerHeight\n });\n }\n if (this.lineY) {\n this.lineY.path = $path.moveTo({\n x: 0,\n y: 0\n }) + $path.lineTo({\n x: this.innerWidth,\n y: 0\n });\n }\n };\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYCursor.prototype.updateSelection = function () {\n if (this._usesSelection) {\n var downPoint = this.downPoint;\n var behavior = this.behavior;\n if (downPoint) {\n var point = this.point;\n if (this.lineX) {\n point.x = this.lineX.pixelX;\n }\n if (this.lineY) {\n point.y = this.lineY.pixelY;\n }\n var selection = this.selection;\n var x = Math.min(point.x, downPoint.x);\n var y = Math.min(point.y, downPoint.y);\n var w = $math.round(Math.abs(downPoint.x - point.x), this._positionPrecision);\n var h = $math.round(Math.abs(downPoint.y - point.y), this._positionPrecision);\n switch (behavior) {\n case \"zoomX\":\n y = 0;\n h = this.pixelHeight;\n break;\n case \"zoomY\":\n x = 0;\n w = this.pixelWidth;\n break;\n case \"selectX\":\n y = 0;\n h = this.pixelHeight;\n break;\n case \"selectY\":\n x = 0;\n w = this.pixelWidth;\n break;\n }\n selection.x = x;\n selection.y = y;\n selection.path = $path.rectangle(w, h);\n selection.validatePosition(); // otherwise Edge shoes some incorrect size rectangle\n } else {\n if (this._generalBehavior != \"select\") {\n this.selection.hide();\n }\n }\n }\n };\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYCursor.prototype.fixPoint = function (point) {\n point.x = Math.max(0, point.x);\n point.y = Math.max(0, point.y);\n point.x = Math.min(this.pixelWidth, point.x);\n point.y = Math.min(this.pixelHeight, point.y);\n return point;\n };\n /**\r\n * Places the cursor at specific point.\r\n *\r\n * @param point Point to place cursor at\r\n */\n XYCursor.prototype.triggerMoveReal = function (point, force) {\n _super.prototype.triggerMoveReal.call(this, point, force);\n var snapToSeries = this.snapToSeries;\n if (snapToSeries && !this.downPoint) {\n if (snapToSeries instanceof XYSeries) {\n if (snapToSeries.isHidden) {\n this.updateLinePositions(point);\n }\n } else {\n var allHidden_1 = true;\n $array.each(snapToSeries, function (s) {\n if (!s.isHidden) {\n allHidden_1 = false;\n }\n });\n if (allHidden_1) {\n this.updateLinePositions(point);\n }\n }\n } else {\n this.updateLinePositions(point);\n }\n if (this.downPoint && $math.getDistance(this.downPoint, point) > 3) {\n if (this._generalBehavior == \"pan\") {\n this.getPanningRanges();\n this.dispatch(\"panning\");\n }\n }\n };\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n XYCursor.prototype.updateLinePositions = function (point) {\n point = this.fixPoint(this.point);\n if (this.lineX && this.lineX.visible && !this.xAxis) {\n this.lineX.x = point.x;\n }\n if (this.lineY && this.lineY.visible && !this.yAxis) {\n this.lineY.y = point.y;\n }\n this.updateSelection();\n };\n XYCursor.prototype.triggerDownReal = function (point) {\n if (this.visible && !this.isHiding) {\n if (this._generalBehavior == \"select\") {\n this.selection.parent = this.parent;\n }\n if (this.fitsToBounds(point)) {\n this.downPoint = {\n x: point.x,\n y: point.y\n };\n this.updatePoint(point);\n //this.updateLinePositions(point); // otherwise lines won't be in correct position and touch won't work fine\n this.point.x = this.downPoint.x;\n this.point.y = this.downPoint.y;\n var selection = this.selection;\n var selectionX = this.downPoint.x;\n var selectionY = this.downPoint.y;\n if (this._usesSelection) {\n selection.x = selectionX;\n selection.y = selectionY;\n selection.path = \"\";\n selection.show();\n }\n _super.prototype.triggerDownReal.call(this, point);\n } else {\n this.downPoint = undefined;\n }\n } else {\n this.downPoint = undefined;\n }\n };\n /**\r\n * Updates the coordinates of where pointer down event occurred\r\n * (was pressed).\r\n */\n XYCursor.prototype.updatePoint = function (point) {\n if (this.lineX) {\n point.x = this.lineX.pixelX;\n }\n if (this.lineY) {\n point.y = this.lineY.pixelY;\n }\n };\n /**\r\n * Handle action when cursor is released, which should perform an operation\r\n * based on its `behavior`, like zoom.\r\n *\r\n * @param point Release point\r\n */\n XYCursor.prototype.triggerUpReal = function (point) {\n if (this.hasMoved()) {\n if (this.downPoint) {\n this.upPoint = point;\n this.updatePoint(this.upPoint);\n if (this._generalBehavior != \"pan\") {\n this.getRanges();\n }\n if (this._generalBehavior != \"select\") {\n this.selection.hide();\n }\n _super.prototype.triggerUpReal.call(this, point);\n }\n } else {\n if (this._generalBehavior != \"select\") {\n this.selection.hide(0);\n } else {\n this.xRange = undefined;\n this.yRange = undefined;\n this.dispatchImmediately(\"selectended\");\n }\n // reset cursor style, just in case\n if (this._generalBehavior == \"pan\") {\n var interaction = getInteraction();\n interaction.setGlobalStyle(MouseCursorStyle.default);\n }\n this.dispatchImmediately(\"behaviorcanceled\");\n }\n this.downPoint = undefined;\n this.dispatch(\"cursorpositionchanged\");\n };\n /**\r\n * Calculates if the cursor has moved enough based on its `behavior`.\r\n *\r\n * @return Moved?\r\n */\n XYCursor.prototype.hasMoved = function () {\n var distance;\n if (this.behavior == \"zoomX\" || this.behavior == \"panX\") {\n distance = $math.getHorizontalDistance(this._upPointOrig, this._downPointOrig);\n } else if (this.behavior == \"zoomY\" || this.behavior == \"panY\") {\n distance = $math.getVerticalDistance(this._upPointOrig, this._downPointOrig);\n } else {\n distance = $math.getDistance(this._upPointOrig, this._downPointOrig);\n }\n return distance > getInteraction().getHitOption(this.interactions, \"hitTolerance\");\n };\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\n XYCursor.prototype.getPanningRanges = function () {\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\n var currentX = $math.round(this.point.x / this.innerWidth, 5);\n var currentY = 1 - $math.round(this.point.y / this.innerHeight, 5);\n var deltaX = startX - currentX;\n var deltaY = startY - currentY;\n this.xRange = {\n start: deltaX,\n end: 1 + deltaX\n };\n this.yRange = {\n start: deltaY,\n end: 1 + deltaY\n };\n if (this.behavior == \"panX\") {\n this.yRange.start = 0;\n this.yRange.end = 1;\n }\n if (this.behavior == \"panY\") {\n this.xRange.start = 0;\n this.xRange.end = 1;\n }\n };\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\n XYCursor.prototype.getRanges = function () {\n if (this.lineX) {\n this.upPoint.x = this.lineX.pixelX;\n }\n if (this.lineY) {\n this.upPoint.y = this.lineY.pixelY;\n }\n // @todo Is this needed?\n $utils.used(this.selection);\n var startX = $math.round(this.downPoint.x / this.innerWidth, 5);\n var endX = $math.round(this.upPoint.x / this.innerWidth, 5);\n var startY = 1 - $math.round(this.downPoint.y / this.innerHeight, 5);\n var endY = 1 - $math.round(this.upPoint.y / this.innerHeight, 5);\n this.xRange = {\n start: $math.min(startX, endX),\n end: $math.max(startX, endX)\n };\n this.yRange = {\n start: $math.min(startY, endY),\n end: $math.max(startY, endY)\n };\n };\n Object.defineProperty(XYCursor.prototype, \"behavior\", {\n /**\r\n * Behavior\r\n */\n get: function () {\n return this.getPropertyValue(\"behavior\");\n },\n /**\r\n * Cursor's behavior when it's moved with pointer down:\r\n *\r\n * * `\"zoomX\"` - zooms horizontally.\r\n * * `\"zoomY\"` - zooms vertically.\r\n * * `\"zoomXY\"` - zooms both horizontally and vertically.\r\n * * `\"selectX\"` - selects a range horizontally.\r\n * * `\"selectY\"` - selects a range vertically.\r\n * * `\"selectXY\"` - selects a range both horizontally and vertically.\r\n * * `\"panX\"` - moves (pans) current selection horizontally.\r\n * * `\"panY\"` - moves (pans) current selection vertically.\r\n * * `\"panXY\"` - moves (pans) current selection both horizontally and vertically.\r\n * * `\"none\"` - does nothing with pointer down.\r\n *\r\n * E.g. \"zoomXY\" will mean that pressing a mouse (or touching) over plot area\r\n * and dragging it will start zooming the chart.\r\n *\r\n * NOTE: `\"zoomXY\"` acts differently when used on a `DateAxis`.\r\n * See [this note](https://www.amcharts.com/docs/v4/concepts/chart-cursor/#zoomXY_behavior_and_DateAxis).\r\n *\r\n * @param value Bheavior\r\n */\n set: function (value) {\n this.setPropertyValue(\"behavior\", value, true);\n this._usesSelection = false;\n if (value.indexOf(\"zoom\") != -1) {\n this._generalBehavior = \"zoom\";\n this._usesSelection = true;\n }\n if (value.indexOf(\"select\") != -1) {\n this._generalBehavior = \"select\";\n this._usesSelection = true;\n }\n if (value.indexOf(\"pan\") != -1) {\n this._generalBehavior = \"pan\";\n this._usesSelection = false;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Determines whether Cursor should prevent default action on move.\r\n *\r\n * If cursor's behavior is \"none\", it should not obstruct the page scrolling.\r\n *\r\n * @return Prevent default?\r\n */\n XYCursor.prototype.shouldPreventGestures = function (touch) {\n return (!this.interactions.isTouchProtected || !touch) && this.behavior != \"none\";\n };\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineX\", {\n /**\r\n * @return Full width?\r\n */\n get: function () {\n return this.getPropertyValue(\"fullWidthLineX\");\n },\n /**\r\n * Cursor's horizontal line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `xAxis` is set and only in case\r\n * `xAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\n set: function (value) {\n this.setPropertyValue(\"fullWidthLineX\", value);\n if (!value) {\n this.updateSize();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"fullWidthLineY\", {\n /**\r\n * @return Full width?\r\n */\n get: function () {\n return this.getPropertyValue(\"fullWidthLineY\");\n },\n /**\r\n * Cursor's vertical line is expanded to take full width of the related\r\n * Axis' cell/category.\r\n *\r\n * NOTE: this setting will work properly if `yAxis` is set and only in case\r\n * `yAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n *\r\n * @param value Full width?\r\n */\n set: function (value) {\n this.setPropertyValue(\"fullWidthLineY\", value);\n if (!value) {\n this.updateSize();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"hideSeriesTooltipsOnSelection\", {\n /**\r\n * @return hide tooltip?\r\n */\n get: function () {\n return this.getPropertyValue(\"hideSeriesTooltipsOnSelection\");\n },\n /**\r\n * If set to `true` this will hide series tooltips when selecting with cursor.\r\n *\r\n * @since 4.5.15\r\n * @param value hide tooltips?\r\n */\n set: function (value) {\n this.setPropertyValue(\"hideSeriesTooltipsOnSelection\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"maxTooltipDistance\", {\n /**\r\n * @return Distance\r\n */\n get: function () {\n return this.getPropertyValue(\"maxTooltipDistance\");\n },\n /**\r\n * If set to a numeric value, cursor will display closest series' tooltips\r\n * plus tooltips from series that are closer to than `maxTooltipDistance` to\r\n * it.\r\n *\r\n * Set it to `-1` to always force one tooltip, even if there are multiple\r\n * data items in exactly same place.\r\n *\r\n * @since 4.7.18\r\n * @param value Distance\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxTooltipDistance\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"maxPanOut\", {\n /**\r\n * @return Full width?\r\n */\n get: function () {\n return this.getPropertyValue(\"maxPanOut\");\n },\n /**\r\n * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n * This setting specifies relative value by how much we can pan out the plot\r\n *\r\n * @param value\r\n */\n set: function (value) {\n this.setPropertyValue(\"maxPanOut\", value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"xAxis\", {\n /**\r\n * @return X axis\r\n */\n get: function () {\n return this._xAxis.get();\n },\n /**\r\n * A reference to X [[Axis]].\r\n *\r\n * An XY cursor can live without `xAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis X axis\r\n */\n set: function (axis) {\n var _this = this;\n if (this._xAxis.get() != axis) {\n this._xAxis.set(axis, new MultiDisposer([axis.tooltip.events.on(\"positionchanged\", this.handleXTooltipPosition, this, false), axis.events.on(\"rangechangestarted\", function (event) {\n _this.hide(0);\n _this.preventShow = true;\n }, undefined, false), axis.events.on(\"rangechangeended\", function (event) {\n _this.preventShow = false;\n _this.hide(0);\n _this.dispatch(\"cursorpositionchanged\");\n }, undefined, false)]));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"yAxis\", {\n /**\r\n * @return Y Axis\r\n */\n get: function () {\n return this._yAxis.get();\n },\n /**\r\n * A reference to Y [[Axis]].\r\n *\r\n * An XY cursor can live without `yAxis` set. You set xAxis for cursor when\r\n * you have axis tooltip enabled and you want cursor line to be at the same\r\n * position as tooltip.\r\n *\r\n * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n * [[ValueAxis]].\r\n *\r\n * @todo Description (review)\r\n * @param axis Y axis\r\n */\n set: function (axis) {\n var _this = this;\n if (this._yAxis.get() != axis) {\n this._yAxis.set(axis, new MultiDisposer([axis.tooltip.events.on(\"positionchanged\", this.handleYTooltipPosition, this, false), axis.events.on(\"rangechangestarted\", function (event) {\n _this.hide(0);\n _this.__disabled = true;\n }, undefined, false), axis.events.on(\"rangechangeended\", function (event) {\n _this.__disabled = false;\n _this.hide(0);\n _this.dispatch(\"cursorpositionchanged\");\n }, undefined, false)]));\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Updates Cursor's position when axis tooltip changes position.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\n XYCursor.prototype.handleXTooltipPosition = function (event) {\n var tooltip = this.xAxis.tooltip;\n var point = $utils.svgPointToSprite({\n x: tooltip.pixelX,\n y: tooltip.pixelY\n }, this);\n var x = point.x;\n point.y = 1;\n if (this.lineX) {\n this.lineX.x = x;\n if (!this.fitsToBounds(point)) {\n this.hide();\n }\n }\n if (this.xAxis && this.fullWidthLineX) {\n var startPoint = this.xAxis.currentItemStartPoint;\n var endPoint = this.xAxis.currentItemEndPoint;\n if (startPoint && endPoint) {\n this.lineX.x = x;\n var width = endPoint.x - startPoint.x;\n this.lineX.path = $path.rectangle(width, this.innerHeight, -width / 2);\n }\n }\n };\n /**\r\n * Updates Cursor's position when Y axis changes position or scale.\r\n *\r\n * @ignore Exclude from docs\r\n * @param event Original Axis event\r\n */\n XYCursor.prototype.handleYTooltipPosition = function (event) {\n var tooltip = this.yAxis.tooltip;\n var point = $utils.svgPointToSprite({\n x: tooltip.pixelX,\n y: tooltip.pixelY\n }, this);\n var y = point.y;\n point.x = 1;\n if (this.lineY) {\n this.lineY.y = y;\n if (!this.fitsToBounds(point)) {\n this.hide();\n }\n }\n if (this.yAxis && this.fullWidthLineY) {\n var startPoint = this.yAxis.currentItemStartPoint;\n var endPoint = this.yAxis.currentItemEndPoint;\n if (startPoint && endPoint) {\n this.lineY.y = y;\n var height = endPoint.y - startPoint.y;\n this.lineY.path = $path.rectangle(this.innerWidth, height, 0, -height / 2);\n }\n }\n };\n Object.defineProperty(XYCursor.prototype, \"lineX\", {\n /**\r\n * @return Line element\r\n */\n get: function () {\n return this._lineX.get();\n },\n /**\r\n * A Line element to use for X axis.\r\n *\r\n * @param lineX Line\r\n */\n set: function (lineX) {\n if (lineX) {\n lineX.setElement(this.paper.add(\"path\"));\n this._lineX.set(lineX, lineX.events.on(\"positionchanged\", this.updateSelection, this, false));\n lineX.interactionsEnabled = false;\n lineX.parent = this;\n } else {\n this._lineX.reset();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"lineY\", {\n /**\r\n * @return Line element\r\n */\n get: function () {\n return this._lineY.get();\n },\n /**\r\n * A Line element to use Y axis.\r\n *\r\n * @param lineY Line\r\n */\n set: function (lineY) {\n if (lineY) {\n lineY.setElement(this.paper.add(\"path\"));\n this._lineY.set(lineY, lineY.events.on(\"positionchanged\", this.updateSelection, this, false));\n lineY.parent = this;\n lineY.interactionsEnabled = false;\n } else {\n this._lineY.reset();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"selection\", {\n /**\r\n * @return Selection rectangle\r\n */\n get: function () {\n return this._selection;\n },\n /**\r\n * A selection element ([[Sprite]]).\r\n *\r\n * @param selection Selection rectangle\r\n */\n set: function (selection) {\n this._selection = selection;\n if (selection) {\n selection.element = this.paper.add(\"path\");\n selection.parent = this;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * Looks if `xAxis` and `yAxis` is set via ID in JSON config, and replaces\r\n * with real references.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\n XYCursor.prototype.processConfig = function (config) {\n var _this = this;\n if (config) {\n // Set up axes\n if ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\n if (this.map.hasKey(config.xAxis)) {\n config.xAxis = this.map.getKey(config.xAxis);\n } else {\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`\");\n delete config.xAxis;\n }\n }\n if ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\n if (this.map.hasKey(config.yAxis)) {\n config.yAxis = this.map.getKey(config.yAxis);\n } else {\n this.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`\");\n delete config.yAxis;\n }\n }\n if ($type.hasValue(config.snapToSeries)) {\n var snapTo_1 = $type.isArray(config.snapToSeries) ? config.snapToSeries : [config.snapToSeries];\n var snapError_1 = false;\n $array.each(snapTo_1, function (snap, index) {\n if ($type.isString(snap)) {\n if (_this.map.hasKey(snap)) {\n snapTo_1[index] = _this.map.getKey(snap);\n } else {\n _this.processingErrors.push(\"[XYCursor] No series with id \\\"\" + snap + \"\\\" found for `series`\");\n snapError_1 = true;\n }\n }\n });\n if (snapError_1) {\n delete config.snapToSeries;\n } else {\n config.snapToSeries = snapTo_1;\n }\n }\n }\n _super.prototype.processConfig.call(this, config);\n };\n Object.defineProperty(XYCursor.prototype, \"snapToSeries\", {\n /**\r\n * @return {XYSeries | XYSeries[]}\r\n */\n get: function () {\n return this.getPropertyValue(\"snapToSeries\");\n },\n /**\r\n * Specifies to which series cursor lines should be snapped.\r\n *\r\n * Can be a single series instance or an array of series.\r\n *\r\n * @param {XYSeries | XYSeries[]}\r\n */\n set: function (series) {\n var _this = this;\n if (this.setPropertyValue(\"snapToSeries\", series)) {\n if (series instanceof XYSeries) {\n series = [series];\n }\n if (this._snapToDisposers) {\n $array.each(this._snapToDisposers, function (disposer) {\n disposer.dispose();\n });\n }\n this._snapToDisposers = [];\n if (series) {\n $array.each(series, function (s) {\n _this._snapToDisposers.push(s.events.on(\"tooltipshownat\", function () {\n _this.handleSnap(s);\n }, undefined, false));\n });\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(XYCursor.prototype, \"snapOnPan\", {\n /**\r\n * Should zoom selection \"snap\" into equal categories/intervals after panning\r\n * the chart? (when `behavior == \"panX\"`)\r\n *\r\n * @default true\r\n * @since 4.10.17\r\n * @return Snap on pan?\r\n */\n get: function () {\n return this.getPropertyValue(\"snapOnPan\");\n },\n /**\r\n * @param value Snap on pan?\r\n */\n set: function (value) {\n this.setPropertyValue(\"snapOnPan\", value);\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * Snaps the zoom selection after chart is panned.\r\n *\r\n * @ignore\r\n */\n XYCursor.prototype.handleSnap = function (series) {\n if (!this.downPoint) {\n var x = series.getTooltipX() + series.xAxis.pixelX;\n var y = series.getTooltipY() + series.yAxis.pixelY;\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n if (xAxis) {\n if (xAxis.renderer.opposite) {\n y -= this.pixelHeight;\n }\n }\n this.point = {\n x: x,\n y: y\n };\n this.getPositions();\n var xx = x;\n var yy = y;\n x -= this.pixelWidth;\n if (yAxis) {\n if (yAxis.renderer.opposite) {\n x += this.pixelWidth;\n }\n }\n var tooltip = series.tooltip;\n var duration = tooltip.animationDuration;\n var easing = tooltip.animationEasing;\n if (xAxis instanceof ValueAxis && !(xAxis instanceof DateAxis) && yAxis instanceof ValueAxis && !(yAxis instanceof DateAxis)) {\n series.yAxis.showTooltipAtPosition(this.yPosition);\n series.xAxis.showTooltipAtPosition(this.xPosition);\n } else {\n if (series.baseAxis == series.xAxis) {\n series.yAxis.showTooltipAtPosition(this.yPosition);\n }\n if (series.baseAxis == series.yAxis) {\n series.xAxis.showTooltipAtPosition(this.xPosition);\n }\n }\n //\tthis.lineX.animate([{ property: \"y\", to: y }], duration, easing);\n //\tthis.lineY.animate([{ property: \"x\", to: x }], duration, easing);\n this.lineY.x = x;\n this.lineX.y = y;\n if (!this.xAxis) {\n this.lineX.animate([{\n property: \"x\",\n to: xx\n }], duration, easing);\n }\n if (!this.yAxis) {\n this.lineY.animate([{\n property: \"y\",\n to: yy\n }], duration, easing);\n }\n }\n };\n /**\r\n * Destroys this object and all related data.\r\n */\n XYCursor.prototype.dispose = function () {\n this.hide(0);\n _super.prototype.dispose.call(this);\n };\n return XYCursor;\n}(Cursor);\nexport { XYCursor };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"XYCursor\"] = XYCursor;\n//# sourceMappingURL=XYCursor.js.map","import { __extends } from \"tslib\";\nimport { XYCursor } from \"./XYCursor\";\nimport { Percent, percent } from \"../../core/utils/Percent\";\nimport { registry } from \"../../core/Registry\";\nimport * as $path from \"../../core/rendering/Path\";\nimport * as $math from \"../../core/utils/Math\";\nimport * as $utils from \"../../core/utils/Utils\";\nimport * as $type from \"../../core/utils/Type\";\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Cursor for [[RadarChart]].\r\n *\r\n * @see {@link IRadarCursorEvents} for a list of available events\r\n * @see {@link IRadarCursorAdapters} for a list of available Adapters\r\n */\nvar RadarCursor = /** @class */function (_super) {\n __extends(RadarCursor, _super);\n /**\r\n * Constructor\r\n */\n function RadarCursor() {\n var _this =\n // Init\n _super.call(this) || this;\n _this.className = \"RadarCursor\";\n _this.radius = percent(100);\n _this.innerRadius = percent(0);\n // Apply theme\n _this.applyTheme();\n _this.mask = undefined;\n return _this;\n }\n /**\r\n * Checks if point is within bounds of a container.\r\n *\r\n * @ignore Exclude from docs\r\n * @param point Point to check\r\n * @return Fits within container?\r\n */\n RadarCursor.prototype.fitsToBounds = function (point) {\n var radius = $math.getDistance(point);\n //if(!$math.isAngleInRange(angle, this.startAngle, this.endAngle)){\n //return false;\n //}\n if (radius < this.truePixelRadius + 1 && radius > this.pixelInnerRadius - 1) {\n // ok to add/remove some\n return true;\n }\n return false;\n };\n Object.defineProperty(RadarCursor.prototype, \"startAngle\", {\n /**\r\n * @return Start angle\r\n */\n get: function () {\n return this.getPropertyValue(\"startAngle\");\n },\n /**\r\n * Starting angle of the cursor's radial line.\r\n *\r\n * @param value Start angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"startAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarCursor.prototype, \"endAngle\", {\n /**\r\n * @return End angle\r\n */\n get: function () {\n return this.getPropertyValue(\"endAngle\");\n },\n /**\r\n * End angle of the cursor's radial line.\r\n *\r\n * @param value End angle\r\n */\n set: function (value) {\n this.setPropertyValue(\"endAngle\", value, true);\n },\n enumerable: true,\n configurable: true\n });\n RadarCursor.prototype.triggerMoveReal = function (point, force) {\n if (!this.xAxis || this.xAxis && (!this.xAxis.cursorTooltipEnabled || this.xAxis.tooltip.disabled)) {\n this.updateLineX(this.point);\n }\n if (!this.yAxis || this.yAxis && (!this.yAxis.cursorTooltipEnabled || this.yAxis.tooltip.disabled)) {\n this.updateLineY(this.point);\n }\n this.updateSelection();\n _super.prototype.triggerMoveReal.call(this, point, force);\n };\n /**\r\n * (Re)draws the horizontal (circular) cursor's line.\r\n *\r\n * @param point New target point\r\n */\n RadarCursor.prototype.updateLineX = function (point) {\n var radius = this.pixelRadius;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var innerRadius = this.pixelInnerRadius;\n if (radius > 0 && $type.isNumber(startAngle) && $type.isNumber(endAngle) && $type.isNumber(innerRadius)) {\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\n var path = void 0;\n if (this.lineX && this.lineX.visible) {\n this.lineX.moveTo({\n x: 0,\n y: 0\n });\n // fill\n if (this.xAxis && this.fullWidthLineX) {\n var startPoint = this.xAxis.currentItemStartPoint;\n var endPoint = this.xAxis.currentItemEndPoint;\n if (startPoint && endPoint) {\n var fillStartAngle = $math.fitAngleToRange($math.getAngle(startPoint), startAngle, endAngle);\n var fillEndAngle = $math.fitAngleToRange($math.getAngle(endPoint), startAngle, endAngle);\n var arc = fillEndAngle - fillStartAngle;\n // clockwise\n // this is needed, normalizeAngle doesn't solve it\n if (startAngle < endAngle) {\n if (arc < 0) {\n arc += 360;\n }\n }\n // ccw\n else {\n if (arc > 0) {\n arc -= 360;\n }\n }\n angle -= arc / 2;\n path = $path.moveTo({\n x: innerRadius * $math.cos(angle),\n y: innerRadius * $math.sin(angle)\n }) + $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n }) + $path.arcTo(angle, arc, radius) + $path.lineTo({\n x: innerRadius * $math.cos(angle + arc),\n y: innerRadius * $math.sin(angle + arc)\n }) + $path.arcTo(angle + arc, -arc, innerRadius);\n }\n }\n // line\n if (!path) {\n path = $path.moveTo({\n x: innerRadius * $math.cos(angle),\n y: innerRadius * $math.sin(angle)\n }) + $path.lineTo({\n x: radius * $math.cos(angle),\n y: radius * $math.sin(angle)\n });\n }\n this.lineX.path = path;\n }\n }\n };\n /**\r\n * (Re)draws the vertical (radial) cursor's line.\r\n *\r\n * @param point New target point\r\n */\n RadarCursor.prototype.updateLineY = function (point) {\n if (this.lineY && this.lineY.visible) {\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var truePixelRadius = this.truePixelRadius;\n var radius = $math.fitToRange($math.getDistance(point), 0, this.truePixelRadius);\n if ($type.isNumber(radius) && $type.isNumber(startAngle)) {\n this.lineY.moveTo({\n x: 0,\n y: 0\n });\n var path = void 0;\n var arc = endAngle - startAngle;\n if (this.yAxis && this.fullWidthLineY) {\n // fill\n var startPoint = this.yAxis.currentItemStartPoint;\n var endPoint = this.yAxis.currentItemEndPoint;\n if (startPoint && endPoint) {\n var innerRadius = $math.fitToRange($math.getDistance(startPoint), 0, truePixelRadius);\n radius = $math.fitToRange($math.getDistance(endPoint), 0, truePixelRadius);\n path = $path.moveTo({\n x: radius * $math.cos(startAngle),\n y: radius * $math.sin(startAngle)\n }) + $path.arcTo(startAngle, arc, radius);\n path += $path.moveTo({\n x: innerRadius * $math.cos(endAngle),\n y: innerRadius * $math.sin(endAngle)\n }) + $path.arcTo(endAngle, -arc, innerRadius);\n }\n }\n if (!path) {\n path = $path.moveTo({\n x: radius * $math.cos(startAngle),\n y: radius * $math.sin(startAngle)\n }) + $path.arcTo(startAngle, endAngle - startAngle, radius);\n }\n this.lineY.path = path;\n }\n }\n };\n /**\r\n * Updates selection dimensions on size change.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarCursor.prototype.updateSelection = function () {\n if (this._usesSelection) {\n var downPoint = this.downPoint;\n if (downPoint) {\n var point = this.point;\n var radius = this.pixelRadius;\n var truePixelRadius = this.truePixelRadius;\n var innerRadius = this.pixelInnerRadius;\n var startAngle = Math.min(this.startAngle, this.endAngle);\n var endAngle = Math.max(this.startAngle, this.endAngle);\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), startAngle, endAngle);\n var angle = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\n var downRadius = $math.getDistance(downPoint);\n if (downRadius < truePixelRadius) {\n var currentRadius = $math.fitToRange($math.getDistance(point), 0, truePixelRadius);\n this._prevAngle = angle;\n var path = $path.moveTo({\n x: 0,\n y: 0\n });\n var downSin = $math.sin(downAngle);\n var downCos = $math.cos(downAngle);\n var sin = $math.sin(angle);\n var cos = $math.cos(angle);\n var behavior = this.behavior;\n if (behavior == \"zoomX\" || behavior == \"selectX\") {\n path += $path.lineTo({\n x: radius * downCos,\n y: radius * downSin\n }) + $path.arcTo(downAngle, angle - downAngle, radius) + $path.lineTo({\n x: innerRadius * cos,\n y: innerRadius * sin\n }) + $path.arcTo(angle, downAngle - angle, innerRadius);\n } else if (behavior == \"zoomY\" || behavior == \"selectY\") {\n path = $path.moveTo({\n x: currentRadius * $math.cos(startAngle),\n y: currentRadius * $math.sin(startAngle)\n }) + $path.arcTo(startAngle, endAngle - startAngle, currentRadius) + $path.lineTo({\n x: downRadius * $math.cos(endAngle),\n y: downRadius * $math.sin(endAngle)\n }) + $path.arcTo(endAngle, startAngle - endAngle, downRadius) + $path.closePath();\n } else if (behavior == \"zoomXY\") {\n path = $path.moveTo({\n x: currentRadius * $math.cos(downAngle),\n y: currentRadius * $math.sin(downAngle)\n }) + $path.arcTo(downAngle, angle - downAngle, currentRadius) + $path.lineTo({\n x: downRadius * $math.cos(angle),\n y: downRadius * $math.sin(angle)\n }) + $path.arcTo(angle, downAngle - angle, downRadius) + $path.closePath();\n }\n this.selection.path = path;\n }\n this.selection.moveTo({\n x: 0,\n y: 0\n });\n }\n }\n };\n /**\r\n * Updates cursors current positions.\r\n */\n RadarCursor.prototype.getPositions = function () {\n // positions are used by axes or series\n var chart = this.chart;\n if (chart) {\n var innerRadius = this.pixelInnerRadius;\n var radius = this.truePixelRadius - innerRadius;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var angle = $math.fitAngleToRange($math.getAngle(this.point), startAngle, endAngle);\n var xPosition = (angle - startAngle) / (endAngle - startAngle);\n this.xPosition = xPosition;\n this.yPosition = $math.fitToRange(($math.getDistance(this.point) - innerRadius) / radius, 0, 1);\n }\n };\n /**\r\n * Overriding inherited method, so that nothing happens when it's triggered.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarCursor.prototype.updatePoint = function (point) {};\n /**\r\n * Updates Cursor's position when axis tooltip changes horizontal position.\r\n *\r\n * @param event Axis event\r\n */\n RadarCursor.prototype.handleXTooltipPosition = function (event) {\n if (this.xAxis.cursorTooltipEnabled) {\n var tooltip = this.xAxis.tooltip;\n this.updateLineX($utils.svgPointToSprite({\n x: tooltip.pixelX,\n y: tooltip.pixelY\n }, this));\n }\n };\n /**\r\n * Updates Cursor's position when axis tooltip changes vertical position.\r\n *\r\n * @todo Description\r\n * @param event Axis event\r\n */\n RadarCursor.prototype.handleYTooltipPosition = function (event) {\n if (this.yAxis.cursorTooltipEnabled) {\n var tooltip = this.yAxis.tooltip;\n this.updateLineY($utils.svgPointToSprite({\n x: tooltip.pixelX,\n y: tooltip.pixelY\n }, this));\n }\n };\n /**\r\n * needs to be overriden\r\n * @ignore\r\n */\n RadarCursor.prototype.updateLinePositions = function (point) {};\n /**\r\n * [getRanges description]\r\n *\r\n * @todo Description\r\n */\n RadarCursor.prototype.getRanges = function () {\n var downPoint = this.downPoint;\n if (downPoint) {\n var upPoint = this.upPoint;\n var chart = this.chart;\n if (chart) {\n var radius = this.pixelRadius;\n var startAngle = this.startAngle;\n var endAngle = this.endAngle;\n var downAngle = $math.fitAngleToRange($math.getAngle(downPoint), this.startAngle, this.endAngle);\n var upAngle = $math.fitAngleToRange($math.getAngle(upPoint), this.startAngle, this.endAngle);\n var downRadius = $math.fitToRange($math.getDistance(downPoint), 0, radius);\n var upRadius = $math.fitToRange($math.getDistance(upPoint), 0, radius);\n var startX = 0;\n var endX = 1;\n var startY = 0;\n var endY = 1;\n var behavior = this.behavior;\n if (behavior == \"zoomX\" || behavior == \"selectX\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\n var arc = endAngle - startAngle;\n startX = $math.round((downAngle - startAngle) / arc, 5);\n endX = $math.round((upAngle - startAngle) / arc, 5);\n }\n if (behavior == \"zoomY\" || behavior == \"selectY\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\n startY = $math.round(downRadius / radius, 5);\n endY = $math.round(upRadius / radius, 5);\n }\n this.xRange = {\n start: Math.min(startX, endX),\n end: Math.max(startX, endX)\n };\n this.yRange = {\n start: Math.min(startY, endY),\n end: Math.max(startY, endY)\n };\n if (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\n // void\n } else {\n this.selection.hide();\n }\n }\n }\n };\n /**\r\n * Overriding inherited method, so that nothing happens when `updateSize`\r\n * is triggered.\r\n *\r\n * RadarCursor is quite complicated and needs own sizing logic.\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarCursor.prototype.updateSize = function () {};\n Object.defineProperty(RadarCursor.prototype, \"radius\", {\n /**\r\n * @return Outer radius\r\n */\n get: function () {\n return this.getPropertyValue(\"radius\");\n },\n /**\r\n * Outer radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Outer radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"radius\", value, false, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarCursor.prototype, \"pixelRadius\", {\n /**\r\n * Outer radius of the circular line in pixels.\r\n *\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\n get: function () {\n return $utils.relativeRadiusToValue(this.radius, this.truePixelRadius);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarCursor.prototype, \"truePixelRadius\", {\n /**\r\n * [truePixelRadius description]\r\n *\r\n * @todo Description\r\n * @return Outer radius (px)\r\n * @readonly\r\n */\n get: function () {\n return $utils.relativeToValue(percent(100), $math.min(this.innerWidth / 2, this.innerHeight / 2));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarCursor.prototype, \"innerRadius\", {\n /**\r\n * @return Inner radius\r\n */\n get: function () {\n return this.getPropertyValue(\"innerRadius\");\n },\n /**\r\n * Inner radius of the cursor's circular line.\r\n * Absolute (px) or relative ([[Percent]]).\r\n *\r\n * @param value Inner radius\r\n */\n set: function (value) {\n this.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RadarCursor.prototype, \"pixelInnerRadius\", {\n /**\r\n * Inner radius of the circular line in pixels.\r\n *\r\n * @return Inner radius (px)\r\n * @readonly\r\n */\n get: function () {\n var innerRadius = this.innerRadius;\n if (innerRadius instanceof Percent) {\n innerRadius = percent(100 * innerRadius.value * this.chart.innerRadiusModifyer);\n }\n return $utils.relativeRadiusToValue(innerRadius, this.truePixelRadius) || 0;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n *\r\n * @ignore Exclude from docs\r\n */\n RadarCursor.prototype.fixPoint = function (point) {\n // overriding xy method\n return point;\n };\n return RadarCursor;\n}(XYCursor);\nexport { RadarCursor };\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\nregistry.registeredClasses[\"RadarCursor\"] = RadarCursor;\n//# sourceMappingURL=RadarCursor.js.map","import { is } from \"../core/Registry\";\nvar theme = function (object) {\n if (is(object, \"SpriteState\")) {\n object.transitionDuration = 400;\n }\n if (is(object, \"Component\")) {\n object.rangeChangeDuration = 500;\n object.interpolationDuration = 500;\n object.sequencedInterpolation = false;\n if (is(object, \"SankeyDiagram\")) {\n object.sequencedInterpolation = true;\n }\n if (is(object, \"FunnelSeries\")) {\n object.sequencedInterpolation = true;\n }\n }\n if (is(object, \"Chart\")) {\n object.defaultState.transitionDuration = 2000;\n object.hiddenState.transitionDuration = 1000;\n }\n if (is(object, \"Tooltip\")) {\n object.animationDuration = 400;\n object.defaultState.transitionDuration = 400;\n object.hiddenState.transitionDuration = 400;\n }\n if (is(object, \"Scrollbar\")) {\n object.animationDuration = 500;\n }\n if (is(object, \"Series\")) {\n object.defaultState.transitionDuration = 1000;\n object.hiddenState.transitionDuration = 700;\n object.hiddenState.properties.opacity = 1;\n object.showOnInit = true;\n }\n if (is(object, \"MapSeries\")) {\n object.hiddenState.properties.opacity = 0;\n }\n if (is(object, \"PercentSeries\")) {\n object.hiddenState.properties.opacity = 0;\n }\n if (is(object, \"FunnelSlice\")) {\n object.defaultState.transitionDuration = 800;\n object.hiddenState.transitionDuration = 1000;\n object.hiddenState.properties.opacity = 1;\n }\n if (is(object, \"Slice\")) {\n object.defaultState.transitionDuration = 700;\n object.hiddenState.transitionDuration = 1000;\n object.hiddenState.properties.opacity = 1;\n }\n if (is(object, \"Preloader\")) {\n object.hiddenState.transitionDuration = 2000;\n }\n if (is(object, \"Column\")) {\n object.defaultState.transitionDuration = 700;\n object.hiddenState.transitionDuration = 1000;\n object.hiddenState.properties.opacity = 1;\n }\n if (is(object, \"Column3D\")) {\n object.hiddenState.properties.opacity = 0;\n }\n};\nexport default theme;\n//# sourceMappingURL=animated.js.map","/**\r\n * @ignore\r\n */\nexport class Registry {\n constructor() {\n /**\r\n * Currently running version of amCharts.\r\n */\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"5.9.8\"\n });\n /**\r\n * List of applied licenses.\r\n * @ignore\r\n */\n Object.defineProperty(this, \"licenses\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\r\n * Entities that have their `id` setting set.\r\n */\n Object.defineProperty(this, \"entitiesById\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\r\n * All created [[Root]] elements.\r\n */\n Object.defineProperty(this, \"rootElements\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n}\n/**\r\n * @ignore\r\n */\nexport const registry = new Registry();\n/**\r\n * Adds a license, e.g.:\r\n *\r\n * ```TypeScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n * ```JavaScript\r\n * am5.addLicense(\"xxxxxxxx\");\r\n * ```\r\n *\r\n * Multiple licenses can be added to cover for multiple products.\r\n *\r\n * @param license License key\r\n */\nexport function addLicense(license) {\n registry.licenses.push(license);\n}\n/**\r\n * Disposes all [[Root]] elements.\r\n */\nexport function disposeAllRootElements() {\n let root;\n while (root = registry.rootElements.pop()) {\n root.dispose();\n }\n}\n/**\r\n * Finds and returns a `Root` element assigned to a container with `id`.\r\n *\r\n * @param id Container ID\r\n * @return Root\r\n * @since 5.9.2\r\n */\nexport function getRootById(id) {\n let found;\n registry.rootElements.forEach(item => {\n if (item.dom.id == id) {\n found = item;\n }\n });\n return found;\n}\n//# sourceMappingURL=Registry.js.map","/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Represents a relative value (percent).\r\n *\r\n * The Percent object, can be instantiated using two ways:\r\n *\r\n * * Via `new Percent(X)`.\r\n * * Via `am5.percent(X)`.\r\n *\r\n * You can also use shortcut functions for `0%`, `50%`, and `100%`:\r\n * * `am5.p0`\r\n * * `am5.p50`\r\n * * `am5.p100`\r\n */\nexport class Percent {\n /**\r\n * Constructor.\r\n *\r\n * @param percent Percent value\r\n */\n constructor(percent) {\n /**\r\n * Value in percent.\r\n */\n Object.defineProperty(this, \"_value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._value = percent;\n }\n /**\r\n * Relative value.\r\n *\r\n * E.g. 100% is 1, 50% is 0.5, etc.\r\n *\r\n * This is useful to apply transformations to other values. E.g.:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = new am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * Alternatively, you can use `am5.percent()` helper function:\r\n *\r\n * ```TypeScript\r\n * let value = 256;\r\n * let percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n * ```JavaScript\r\n * var value = 256;\r\n * var percent = am5.p50;\r\n * console.log(value * percent.value); // outputs 128\r\n * ```\r\n *\r\n * @readonly\r\n * @return Relative value\r\n */\n get value() {\n return this._value / 100;\n }\n /**\r\n * Value in percent.\r\n *\r\n * @readonly\r\n * @return Percent\r\n */\n get percent() {\n return this._value;\n }\n toString() {\n return \"\" + this._value + \"%\";\n }\n interpolate(min, max) {\n return min + this.value * (max - min);\n }\n static normalize(percent, min, max) {\n if (percent instanceof Percent) {\n return percent;\n } else {\n if (min === max) {\n return new Percent(0);\n } else {\n return new Percent(Math.min(Math.max((percent - min) * (1 / (max - min)), 0), 1) * 100);\n }\n }\n }\n}\n/**\r\n * Converts numeric percent value to a proper [[Percent]] object.\r\n *\r\n * ```TypeScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n * ```JavaScript\r\n * pieSeries.set(\"radius\", am5.percent(80));\r\n * ```\r\n *\r\n * @param value Percent\r\n * @return Percent object\r\n */\nexport function percent(value) {\n return new Percent(value);\n}\n/**\r\n * A shortcut function to `am5.percent(0)`.\r\n */\nexport const p0 = percent(0);\n/**\r\n * A shortcut function to `am5.percent(100)`.\r\n */\nexport const p100 = percent(100);\n/**\r\n * A shortcut function to `am5.percent(50)`.\r\n */\nexport const p50 = percent(50);\n/**\r\n * Checks if value is a [[Percent]] object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Input value\r\n * @return Is percent?\r\n */\nexport function isPercent(value) {\n return value instanceof Percent;\n}\n//# sourceMappingURL=Percent.js.map","/**\r\n * A collection of utility functions for various type checks and conversion\r\n * @hidden\r\n */\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns `true` if value is not a number (NaN).\r\n *\r\n * @param value Input value\r\n * @return Is NaN?\r\n */\nexport function isNaN(value) {\n return Number(value) !== value;\n}\n/**\r\n * Returns a type of the value.\r\n *\r\n * @param value Input value\r\n * @return Type of the value\r\n * @ignore\r\n */\nexport function getType(value) {\n return {}.toString.call(value);\n}\n/**\r\n * Asserts that the condition is true.\r\n *\r\n * @param condition Condition to check\r\n * @param message Message to display in the error\r\n * @ignore\r\n */\nexport function assert(condition) {\n let message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"Assertion failed\";\n if (!condition) {\n throw new Error(message);\n }\n}\n/**\r\n * ============================================================================\r\n * QUICK CONVERSION\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Converts any value into a `number`.\r\n *\r\n * @param value Source value\r\n * @return Number representation of value\r\n */\nexport function toNumber(value) {\n if (value != null && !isNumber(value)) {\n let converted = Number(value);\n if (isNaN(converted) && isString(value) && value != \"\") {\n return toNumber(value.replace(/[^0-9.\\-]+/g, ''));\n }\n return converted;\n }\n return value;\n}\n/**\r\n * Converts anything to Date object.\r\n *\r\n * @param value A value of any type\r\n * @return Date object representing a value\r\n */\nexport function toDate(value) {\n if (isDate(value)) {\n // TODO maybe don't create a new Date ?\n return new Date(value);\n } else if (isNumber(value)) {\n return new Date(value);\n } else {\n // Try converting to number (assuming timestamp)\n let num = Number(value);\n if (!isNumber(num)) {\n return new Date(value);\n } else {\n return new Date(num);\n }\n }\n}\n/**\r\n * Converts numeric value into string. Deals with large or small numbers that\r\n * would otherwise use exponents.\r\n *\r\n * @param value Numeric value\r\n * @return Numeric value as string\r\n */\nexport function numberToString(value) {\n // TODO handle Infinity and -Infinity\n if (isNaN(value)) {\n return \"NaN\";\n }\n if (value === Infinity) {\n return \"Infinity\";\n }\n if (value === -Infinity) {\n return \"-Infinity\";\n }\n // Negative 0\n if (value === 0 && 1 / value === -Infinity) {\n return \"-0\";\n }\n // Preserve negative and deal with absoute values\n let negative = value < 0;\n value = Math.abs(value);\n // TODO test this\n let parsed = /^([0-9]+)(?:\\.([0-9]+))?(?:e[\\+\\-]([0-9]+))?$/.exec(\"\" + value);\n let digits = parsed[1];\n let decimals = parsed[2] || \"\";\n let res;\n // Leave the nummber as it is if it does not use exponents\n if (parsed[3] === undefined) {\n res = decimals === \"\" ? digits : digits + \".\" + decimals;\n } else {\n let exponent = +parsed[3];\n // Deal with decimals\n if (value < 1) {\n let zeros = exponent - 1;\n res = \"0.\" + repeat(\"0\", zeros) + digits + decimals;\n // Deal with integers\n } else {\n let zeros = exponent - decimals.length;\n if (zeros === 0) {\n res = digits + decimals;\n } else if (zeros < 0) {\n res = digits + decimals.slice(0, zeros) + \".\" + decimals.slice(zeros);\n } else {\n res = digits + decimals + repeat(\"0\", zeros);\n }\n }\n }\n return negative ? \"-\" + res : res;\n}\n/**\r\n * Repeats a `string` number of times as set in `amount`.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Make this faster\r\n * @param string Source string\r\n * @param amount Number of times to repeat string\r\n * @return New string\r\n */\nexport function repeat(string, amount) {\n return new Array(amount + 1).join(string);\n}\n/**\r\n * ============================================================================\r\n * TYPE CHECK\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Checks if parameter is `Date`.\r\n *\r\n * @param value Input value\r\n * @return Is Date?\r\n */\nexport function isDate(value) {\n return getType(value) === \"[object Date]\";\n}\n/**\r\n * Checks if parameter is `string`.\r\n *\r\n * @param value Input value\r\n * @return Is string?\r\n */\nexport function isString(value) {\n return typeof value === \"string\";\n}\n/**\r\n * Checks if parameter is `number`.\r\n *\r\n * @param value Input value\r\n * @return Is number?\r\n */\nexport function isNumber(value) {\n return typeof value === \"number\" && Number(value) == value;\n}\n/**\r\n * Checks if parameter is `object`.\r\n *\r\n * @param value Input value\r\n * @return Is object?\r\n */\nexport function isObject(value) {\n return typeof value === \"object\" && value !== null;\n}\n/**\r\n * Checks if parameter is `Array`.\r\n *\r\n * @param value Input value\r\n * @return Is Array?\r\n */\nexport function isArray(value) {\n return Array.isArray(value);\n}\n/**\r\n * ============================================================================\r\n * STATIC CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * @ignore Exclude from docs\r\n */\nexport const PLACEHOLDER = \"__§§§__\";\n/**\r\n * @ignore Exclude from docs\r\n */\nexport const PLACEHOLDER2 = \"__§§§§__\";\n//# sourceMappingURL=Type.js.map","import * as $type from \"./Type\";\n/**\r\n * ============================================================================\r\n * UTILITY FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Searches `array` for `value`.\r\n *\r\n * Returns -1 if not found.\r\n *\r\n * @param array Source array\r\n * @param value Value to search\r\n * @returns Index\r\n */\nexport function indexOf(array, value) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n // TODO handle NaN\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\r\n * Calls `test` for each element in `array`.\r\n *\r\n * If `test` returns `true` then it immediately returns `true`.\r\n *\r\n * If `test` returns `false` for all of the elements in `array` then it returns `false`.\r\n *\r\n * @param array Source array\r\n * @param test Function which is called on each element\r\n * @returns Whether `test` returned true or not\r\n */\nexport function any(array, test) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n if (test(array[i])) {\n return true;\n }\n }\n return false;\n}\n/**\r\n * Calls `fn` function for every member of array and returns a new array out\r\n * of all outputs.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n * @returns New array\r\n */\nexport function map(array, fn) {\n const length = array.length;\n const output = new Array(length);\n for (let i = 0; i < length; ++i) {\n output[i] = fn(array[i], i);\n }\n return output;\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function each(array, fn) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n fn(array[i], i);\n }\n}\n/**\r\n * Iterates through all items in array in reverse order and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function eachReverse(array, fn) {\n let i = array.length;\n while (i > 0) {\n --i;\n fn(array[i], i);\n }\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * If `fn` call evaluates to `false`, further iteration is cancelled.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function eachContinue(array, fn) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n if (!fn(array[i], i)) {\n break;\n }\n }\n}\n/**\r\n * Shifts an item at `index` towards beginning of the array.\r\n *\r\n * @param array Source array\r\n * @param index Target element index\r\n */\nexport function shiftLeft(array, index) {\n const length = array.length;\n for (let i = index; i < length; ++i) {\n array[i - index] = array[i];\n }\n array.length = length - index;\n}\n/**\r\n * Returns the last item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\nexport function last(array) {\n const length = array.length;\n return length ? array[length - 1] : undefined;\n}\n/**\r\n * Returns the first item of the array.\r\n *\r\n * @param array Source array\r\n * @returns Last item\r\n */\nexport function first(array) {\n return array[0];\n}\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * Caps `index` to be between `0` and `array.length`\r\n *\r\n * @param array Source array\r\n * @param element Item to insert\r\n * @param array Index to insert item at\r\n */\nexport function insert(array, element, index) {\n //if (array) {\n index = Math.max(0, Math.min(index, array.length));\n array.splice(index, 0, element);\n //}\n}\n/**\r\n * Removes all copies of `element` from `array` (if they exist) and then\r\n * inserts `element` at `index`.\r\n *\r\n * @param array Source array\r\n * @param element Item\r\n * @param array Index to move item to\r\n */\nexport function setIndex(array, element, index) {\n remove(array, element);\n insert(array, element, index);\n}\n/**\r\n * Pushes all of the elements from `input` into `array`.\r\n *\r\n * @param array Output array\r\n * @param input Input array\r\n */\nexport function pushAll(array, input) {\n const length = input.length;\n for (let i = 0; i < length; ++i) {\n array.push(input[i]);\n }\n}\n/**\r\n * Removes `element` from `array`.\r\n *\r\n * If there are multiple copies of `element`, they are all removed.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n */\nexport function remove(array, element) {\n let found = false;\n let index = 0;\n for (;;) {\n index = array.indexOf(element, index);\n if (index === -1) {\n return found;\n } else {\n found = true;\n array.splice(index, 1);\n }\n }\n}\nexport function removeFirst(array, element) {\n let index = array.indexOf(element);\n if (index !== -1) {\n array.splice(index, 1);\n return true;\n } else {\n return false;\n }\n}\n/**\r\n * Adds an `element` to `array`.\r\n *\r\n * If array already contains and item like this, it is removed before adding\r\n * it again.\r\n *\r\n * Optionally `toIndex` can be specified to add element at specific index.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to move item to\r\n */\nexport function move(array, element, toIndex) {\n // @todo this implementation must be the same as the List.moveValue method\n // @todo don't do anything if the desired index is the same as the current index\n let index = indexOf(array, element);\n // @todo remove all old values rather than only the first ?\n if (index !== -1) {\n removeIndex(array, index);\n }\n if (toIndex == null) {\n array.push(element);\n } else {\n insertIndex(array, toIndex, element);\n }\n}\n/**\r\n * Inserts `element` into `array` at `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n * @param array Index to add item at\r\n */\nexport function add(array, element, index) {\n // Append to the end if index is not set\n if (!$type.isNumber(index)) {\n array.push(element);\n }\n // Add to the beginning of array if index is 0\n else if (index === 0) {\n array.unshift(element);\n }\n // Add to indicated place if index is set\n else {\n array.splice(index, 0, element);\n }\n}\n/**\r\n * Pushes `element` into `array` if it doesn't already exist.\r\n *\r\n * @param array Source array\r\n * @param element Item to add\r\n */\nexport function pushOne(array, element) {\n if (array.indexOf(element) === -1) {\n array.push(element);\n }\n}\n/**\r\n * Removes `element` from `array` (if it exists) and then inserts `element` at\r\n * `index`.\r\n *\r\n * If `index` is not provided, it will insert `element` at the end of `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to remove\r\n * @param array Index to move item to\r\n */\nexport function replace(array, element, index) {\n // check if exists\n let ind = array.indexOf(element);\n // remove if exists\n if (ind !== -1) {\n array.splice(ind, 1);\n }\n // add to end if index is not set\n if (!$type.isNumber(index)) {\n array.push(element);\n }\n // add to indicated place if index is set\n else {\n array.splice(index, 0, element);\n }\n}\n/**\r\n * Wraps `input` in an array, if it isn't already an array.\r\n *\r\n * @param input Source value\r\n * @return An array\r\n */\nexport function toArray(input) {\n if (Array.isArray(input)) {\n return input;\n } else {\n return [input];\n }\n}\n/**\r\n * Returns `true` if `element` exists in `array`.\r\n *\r\n * @param array Source array\r\n * @param element Item to search for\r\n * @returns Item in array?\r\n */\nexport function has(array, element) {\n return indexOf(array, element) !== -1;\n}\n/**\r\n * Returns a shallow copy of `array`.\r\n *\r\n * @param array Source array\r\n * @returns Copy of the array\r\n */\nexport function copy(array) {\n const length = array.length;\n // It's faster to create the array with a pre-defined length\n const output = new Array(length);\n for (let i = 0; i < length; ++i) {\n // Because the array has a pre-defined length, we have to assign rather than push\n // This is also faster than pushing\n output[i] = array[i];\n }\n return output;\n}\n/**\r\n * Returns a copy of `array` which contains all the elements between `start`\r\n * and `end`. (including `start` and excluding `end`)\r\n *\r\n * If `end` is not provided, it defaults to `array.length`.\r\n *\r\n * @param array Source array\r\n * @param start Start index\r\n * @param end End index\r\n * @returns Part of the array\r\n */\nexport function slice(array, start) {\n let end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : array.length;\n const output = new Array(end - start);\n for (let i = start; i < end; ++i) {\n output[i - start] = array[i];\n }\n return output;\n}\n/**\r\n * Inserts a value into array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n * @param value Value to insert\r\n */\nexport function insertIndex(array, index, value) {\n array.splice(index, 0, value);\n}\n/**\r\n * Removes a value from array at specific index.\r\n *\r\n * @param array Source array\r\n * @param index Index\r\n */\nexport function removeIndex(array, index) {\n array.splice(index, 1);\n}\n/**\r\n * Searches the array using custom function and returns index of the item if\r\n * found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns -1.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\nexport function findIndex(array, matches) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n if (matches(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\r\n * This is the same as `findIndex` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Index of the item if found\r\n */\nexport function findIndexReverse(array, matches) {\n let i = array.length;\n while (i > 0) {\n --i;\n if (matches(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If return value\r\n * evaluates to `true`, index is returned.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\nexport function find(array, matches) {\n const index = findIndex(array, matches);\n if (index !== -1) {\n return array[index];\n }\n}\n/**\r\n * This is the same as `find` except it searches from right to left.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\nexport function findReverse(array, matches) {\n const index = findIndexReverse(array, matches);\n if (index !== -1) {\n return array[index];\n }\n}\n/**\r\n * Searches the array using custom function and returns item if found.\r\n *\r\n * Will call `matches` function on all items of the array. If value\r\n * is not `undefined`, it returns it.\r\n *\r\n * Otherwise returns `undefined`.\r\n *\r\n * @param array Source array\r\n * @param matches Search function\r\n * @returns Item if found\r\n */\nexport function findMap(array, matches) {\n const length = array.length;\n for (let i = 0; i < length; ++i) {\n const value = matches(array[i], i);\n if (value !== undefined) {\n return value;\n }\n }\n}\n/**\r\n * Iterates through all items in array and calls `fn` function for each of\r\n * them.\r\n *\r\n * @param array Source array\r\n * @param fn Callback function\r\n */\nexport function shuffle(array) {\n // https://stackoverflow.com/a/2450976/449477\n let currentIndex = array.length,\n temporaryValue,\n randomIndex;\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n}\n/**\r\n * Orders an array using specific `ordering` function and returns right-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\nexport function getSortedIndex(array, ordering) {\n let start = 0;\n let end = array.length;\n let found = false;\n while (start < end) {\n // TODO is this faster/slower than using Math.floor ?\n const pivot = start + end >> 1;\n const order = ordering(array[pivot]);\n // less\n if (order < 0) {\n start = pivot + 1;\n // equal\n } else if (order === 0) {\n found = true;\n start = pivot + 1;\n // more\n } else {\n end = pivot;\n }\n }\n return {\n found: found,\n index: found ? start - 1 : start\n };\n}\n/**\r\n * Orders an array using specific `ordering` function and returns left-most index of\r\n * the `value`.\r\n *\r\n * @ignore Exclude from docs\r\n * @param array Source array\r\n * @param ordering An ordering function\r\n * @returns Result of the search\r\n */\nexport function getFirstSortedIndex(array, ordering) {\n let start = 0;\n let end = array.length;\n let found = false;\n while (start < end) {\n // TODO is this faster/slower than using Math.floor ?\n const pivot = start + end >> 1;\n const order = ordering(array[pivot]);\n // less\n if (order < 0) {\n start = pivot + 1;\n // equal\n } else if (order === 0) {\n found = true;\n end = pivot;\n // more\n } else {\n end = pivot;\n }\n }\n return {\n found: found,\n index: start\n };\n}\nexport function keepIf(array, keep) {\n let i = array.length;\n while (i > 0) {\n --i;\n if (!keep(array[i])) {\n array.splice(i, 1);\n }\n }\n}\n//# sourceMappingURL=Array.js.map","import * as $array from \"./Array\";\nexport function keys(object) {\n return Object.keys(object);\n}\n/**\r\n * Returns an array of object's property names ordered using specific ordering\r\n * function.\r\n *\r\n * @param object Source object\r\n * @param order Ordering function\r\n * @returns Object property names\r\n */\nexport function keysOrdered(object, order) {\n return keys(object).sort(order);\n}\nexport function copy(object) {\n return Object.assign({}, object);\n}\nexport function each(object, f) {\n keys(object).forEach(key => {\n f(key, object[key]);\n });\n}\n/**\r\n * Iterates through all properties of the object calling `fn` for each of them.\r\n *\r\n * If return value of the function evaluates to `false` further iteration is\r\n * cancelled.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n */\nexport function eachContinue(object, fn) {\n for (let key in object) {\n if (hasKey(object, key)) {\n if (!fn(key, object[key])) {\n break;\n }\n }\n }\n}\n/**\r\n * Orders object properties using custom `ord` function and iterates through\r\n * them calling `fn` for each of them.\r\n *\r\n * @param object Source object\r\n * @param fn Callback function\r\n * @param order Ordering function\r\n */\nexport function eachOrdered(object, fn, ord) {\n $array.each(keysOrdered(object, ord), key => {\n fn(key, object[key]);\n });\n}\n/**\r\n * Checks if `object` has a specific `key`.\r\n *\r\n * @param object Source object\r\n * @param key Property name\r\n * @returns Has key?\r\n */\nexport function hasKey(object, key) {\n return {}.hasOwnProperty.call(object, key);\n}\n/**\r\n * Copies all properties of one object to the other, omitting undefined, but only if property in target object doesn't have a value set.\r\n *\r\n * @param fromObject Source object\r\n * @param toObject Target object\r\n * @return Updated target object\r\n * @todo Maybe consolidate with utils.copy?\r\n */\nexport function softCopyProperties(source, target) {\n each(source, (key, value) => {\n // only if value is set\n //if ($type.hasValue(value) && !($type.hasValue((<any>target)[key]))) {\n if (value != null && target[key] == null) {\n target[key] = value;\n }\n });\n return target;\n}\n//# sourceMappingURL=Object.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $array from \"./Array\";\n/**\r\n * A base class for disposable objects.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport class DisposerClass {\n /**\r\n * Constructor.\r\n */\n constructor() {\n /**\r\n * Is object disposed?\r\n */\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._disposed = false;\n }\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\n isDisposed() {\n return this._disposed;\n }\n /**\r\n * Disposes the object.\r\n */\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n this._dispose();\n }\n }\n}\n/**\r\n * A class for creating an IDisposer.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport class Disposer {\n /**\r\n * Constructor.\r\n *\r\n * @param dispose Function that disposes object\r\n */\n constructor(dispose) {\n /**\r\n * Is object disposed?\r\n */\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Method that disposes the object.\r\n */\n Object.defineProperty(this, \"_dispose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._disposed = false;\n this._dispose = dispose;\n }\n /**\r\n * Checks if object is disposed.\r\n *\r\n * @return Disposed?\r\n */\n isDisposed() {\n return this._disposed;\n }\n /**\r\n * Disposes the object.\r\n */\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n this._dispose();\n }\n }\n}\n/**\r\n * This can be extended by other classes to add a `_disposers` property.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport class ArrayDisposer extends DisposerClass {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n _dispose() {\n $array.each(this._disposers, x => {\n x.dispose();\n });\n }\n}\n/**\r\n * A collection of related disposers that can be disposed in one go.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport class MultiDisposer extends DisposerClass {\n constructor(disposers) {\n super();\n Object.defineProperty(this, \"_disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._disposers = disposers;\n }\n _dispose() {\n $array.each(this._disposers, x => {\n x.dispose();\n });\n }\n get disposers() {\n return this._disposers;\n }\n}\n/**\r\n * A special kind of Disposer that has attached value set.\r\n *\r\n * If a new value is set using `set()` method, the old disposer value is\r\n * disposed.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport class MutableValueDisposer extends DisposerClass {\n constructor() {\n super(...arguments);\n /**\r\n * Current disposer.\r\n */\n Object.defineProperty(this, \"_disposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Current value.\r\n */\n Object.defineProperty(this, \"_value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _dispose() {\n if (this._disposer != null) {\n this._disposer.dispose();\n this._disposer = undefined;\n }\n }\n /**\r\n * Returns current value.\r\n *\r\n * @return Value\r\n */\n get() {\n return this._value;\n }\n /**\r\n * Sets value and disposes previous disposer if it was set.\r\n *\r\n * @param value New value\r\n * @param disposer Disposer\r\n */\n set(value, disposer) {\n if (this._disposer != null) {\n this._disposer.dispose();\n }\n this._disposer = disposer;\n this._value = value;\n }\n /**\r\n * Resets the disposer value.\r\n */\n reset() {\n this.set(undefined, undefined);\n }\n}\n/**\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nexport class CounterDisposer extends Disposer {\n constructor() {\n super(...arguments);\n /**\r\n * [_counter description]\r\n *\r\n * @todo Description\r\n */\n Object.defineProperty(this, \"_counter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n }\n /**\r\n * [increment description]\r\n *\r\n * @todo Description\r\n */\n increment() {\n // TODO throw an error if it is disposed\n ++this._counter;\n // TODO make this more efficient\n return new Disposer(() => {\n --this._counter;\n if (this._counter === 0) {\n this.dispose();\n }\n });\n }\n}\n//# sourceMappingURL=Disposer.js.map","import * as $type from \"./Type\";\nimport * as $array from \"./Array\";\nimport * as $object from \"./Object\";\nimport { Disposer, DisposerClass } from \"./Disposer\";\n/**\r\n * ============================================================================\r\n * DOM FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Execute a function when DOM is ready.\r\n *\r\n * @since 5.0.2\r\n * @param f Callback\r\n */\nexport function ready(f) {\n if (document.readyState !== \"loading\") {\n f();\n } else {\n const listener = () => {\n if (document.readyState !== \"loading\") {\n document.removeEventListener(\"readystatechange\", listener);\n f();\n }\n };\n document.addEventListener(\"readystatechange\", listener);\n }\n}\n/**\r\n * Removes a DOM element.\r\n * @param el Target element\r\n */\nexport function removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n/**\r\n * Function that adds a disposable event listener directly to a DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param dom A DOM element to add event to\r\n * @param type Event type\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\nexport function addEventListener(dom, type, listener, options) {\n //@todo proper type check for options: EventListenerOptions | boolean (TS for some reason gives error on passive parameter)\n dom.addEventListener(type, listener, options || false);\n return new Disposer(() => {\n dom.removeEventListener(type, listener, options || false);\n });\n}\n/**\r\n * Function that adds an event listener which is triggered when the browser's zoom changes.\r\n *\r\n * @param listener Event listener\r\n * @returns Disposable event\r\n */\nexport function onZoom(listener) {\n // TODO use matchMedia instead ?\n return addEventListener(window, \"resize\", _ev => {\n listener();\n });\n}\n/**\r\n * @ignore\r\n */\nexport function supports(cap) {\n switch (cap) {\n case \"touchevents\":\n //return \"ontouchstart\" in document.documentElement;\n return window.hasOwnProperty(\"TouchEvent\");\n case \"pointerevents\":\n return window.hasOwnProperty(\"PointerEvent\");\n case \"mouseevents\":\n return window.hasOwnProperty(\"MouseEvent\");\n case \"wheelevents\":\n return window.hasOwnProperty(\"WheelEvent\");\n case \"keyboardevents\":\n return window.hasOwnProperty(\"KeyboardEvent\");\n }\n return false;\n}\n/**\r\n * @ignore\r\n */\nexport function getPointerId(event) {\n let id = event.pointerId || 0;\n return id;\n}\n/**\r\n * Removes focus from any element by shifting focus to body.\r\n *\r\n * @ignore\r\n */\nexport function blur() {\n if (document.activeElement && document.activeElement != document.body) {\n if (document.activeElement.blur) {\n document.activeElement.blur();\n } else {\n let input = document.createElement(\"button\");\n input.style.position = \"fixed\";\n input.style.top = \"0px\";\n input.style.left = \"-10000px\";\n document.body.appendChild(input);\n input.focus();\n input.blur();\n document.body.removeChild(input);\n }\n }\n}\n/**\r\n * Focuses element.\r\n *\r\n * @ignore\r\n */\nexport function focus(el) {\n if (el) {\n el.focus();\n }\n}\n/**\r\n * @ignore\r\n */\nexport function getRendererEvent(key) {\n if (supports(\"pointerevents\")) {\n return key;\n } else if (supports(\"touchevents\")) {\n switch (key) {\n case \"pointerover\":\n return \"touchstart\";\n case \"pointerout\":\n return \"touchend\";\n case \"pointerleave\":\n return \"touchend\";\n case \"pointerdown\":\n return \"touchstart\";\n case \"pointermove\":\n return \"touchmove\";\n case \"pointerup\":\n return \"touchend\";\n case \"click\":\n return \"click\";\n case \"dblclick\":\n return \"dblclick\";\n }\n } else if (supports(\"mouseevents\")) {\n switch (key) {\n case \"pointerover\":\n return \"mouseover\";\n case \"pointerout\":\n return \"mouseout\";\n case \"pointerleave\":\n return \"mouseleave\";\n case \"pointerdown\":\n return \"mousedown\";\n case \"pointermove\":\n return \"mousemove\";\n case \"pointerup\":\n return \"mouseup\";\n case \"click\":\n return \"click\";\n case \"dblclick\":\n return \"dblclick\";\n }\n }\n return key;\n}\n/**\r\n * Determines if pointer event originated from a touch pointer or mouse.\r\n *\r\n * @param ev Original event\r\n * @return Touch pointer?\r\n */\nexport function isTouchEvent(ev) {\n if (typeof Touch !== \"undefined\" && ev instanceof Touch) {\n return true;\n } else if (typeof PointerEvent !== \"undefined\" && ev instanceof PointerEvent && ev.pointerType != null) {\n switch (ev.pointerType) {\n case \"touch\":\n case \"pen\":\n case 2:\n return true;\n case \"mouse\":\n case 4:\n return false;\n default:\n return !(ev instanceof MouseEvent);\n }\n } else if (ev.type != null) {\n if (ev.type.match(/^mouse/)) {\n return false;\n }\n }\n return true;\n}\n/**\r\n * Sets style property on DOM element.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport function setStyle(dom, property, value) {\n dom.style[property] = value;\n}\nexport function getStyle(dom, property) {\n return dom.style[property];\n}\n/**\r\n * Gets the target of the event, works for shadow DOM too.\r\n */\nexport function getEventTarget(event) {\n if (event.composedPath) {\n const path = event.composedPath();\n if (path.length === 0) {\n return null;\n } else {\n return path[0];\n }\n } else {\n return event.target;\n }\n}\n/**\r\n * Checks of element `a` contains element `b`.\r\n *\r\n * @param a Aleged ascendant\r\n * @param b Aleged descendant\r\n * @return Contains?\r\n */\nexport function contains(a, b) {\n let cursor = b;\n while (true) {\n if (a === cursor) {\n return true;\n } else if (cursor.parentNode === null) {\n // TODO better ShadowRoot detection\n if (cursor.host == null) {\n return false;\n } else {\n cursor = cursor.host;\n }\n } else {\n cursor = cursor.parentNode;\n }\n }\n}\n/**\r\n * Returns `true` if pointer event originated on an element within Root.\r\n *\r\n * @since 5.2.8\r\n * @param event Event\r\n * @param target Target element\r\n */\nexport function isLocalEvent(event, target) {\n return event.target && contains(target.root.dom, event.target);\n}\n/**\r\n * Disables or enables interactivity of a DOM element.\r\n *\r\n * @param target Target element\r\n * @param interactive Interactive?\r\n */\nexport function setInteractive(target, interactive) {\n if (interactive) {\n target.style.pointerEvents = \"auto\";\n } else {\n target.style.pointerEvents = \"none\";\n }\n}\nexport function getEventKey(event) {\n if (event.key !== undefined) {\n return event.key;\n }\n switch (event.keyCode) {\n case 9:\n return \"Tab\";\n case 13:\n return \"Enter\";\n case 16:\n return \"Shift\";\n case 17:\n return \"Control\";\n case 27:\n return \"Escape\";\n case 32:\n return \" \";\n case 37:\n return \"ArrowLeft\";\n case 38:\n return \"ArrowUp\";\n case 39:\n return \"ArrowRight\";\n case 40:\n return \"ArrowDown\";\n case 46:\n return \"Delete\";\n }\n return \"\" + event.keyCode;\n}\n/**\r\n * Returns the shadow root of the element or null\r\n *\r\n * @param a Node\r\n * @return Root\r\n */\nexport function getShadowRoot(a) {\n let cursor = a;\n while (true) {\n if (cursor.parentNode === null) {\n // TODO better ShadowRoot detection\n if (cursor.host != null) {\n return cursor;\n } else {\n return null;\n }\n } else {\n cursor = cursor.parentNode;\n }\n }\n}\n/**\r\n * [rootStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n */\nlet rootStylesheet;\n/**\r\n * @ignore Exclude from docs\r\n */\nfunction createStylesheet(element, text) {\n let nonce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n // TODO use createElementNS ?\n const e = document.createElement(\"style\");\n e.type = \"text/css\";\n if (nonce != \"\") {\n e.setAttribute(\"nonce\", nonce);\n }\n e.textContent = text;\n if (element === null) {\n document.head.appendChild(e);\n } else {\n element.appendChild(e);\n }\n return e;\n}\n/**\r\n * [getStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @return [description]\r\n */\nfunction getStylesheet(element) {\n let nonce = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n if (element === null) {\n if (rootStylesheet == null) {\n // TODO use createElementNS ?\n const e = document.createElement(\"style\");\n e.type = \"text/css\";\n if (nonce != \"\") {\n e.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(e);\n rootStylesheet = e.sheet;\n }\n return rootStylesheet;\n } else {\n // TODO use createElementNS ?\n const e = document.createElement(\"style\");\n e.type = \"text/css\";\n if (nonce != \"\") {\n e.setAttribute(\"nonce\", nonce);\n }\n element.appendChild(e);\n return e.sheet;\n }\n}\n/**\r\n * [makeStylesheet description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param selector [description]\r\n * @return [description]\r\n */\nfunction appendStylesheet(root, selector) {\n const index = root.cssRules.length;\n root.insertRule(selector + \"{}\", index);\n return root.cssRules[index];\n}\n/**\r\n * Defines a class for a CSS rule.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\nexport class StyleRule extends DisposerClass {\n /**\r\n * Constructor.\r\n *\r\n * @param selector CSS selector\r\n * @param styles An object of style attribute - value pairs\r\n */\n constructor(element, selector, styles) {\n let nonce = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"\";\n super();\n Object.defineProperty(this, \"_root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * CSS rule.\r\n */\n Object.defineProperty(this, \"_rule\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._root = getStylesheet(element, nonce);\n try {\n this._rule = appendStylesheet(this._root, selector);\n } catch (err) {\n // Create an empty rule on failed selectors\n this._rule = appendStylesheet(this._root, \":not(*)\");\n }\n $object.each(styles, (key, value) => {\n this.setStyle(key, value);\n });\n }\n /**\r\n * A CSS selector text.\r\n *\r\n * E.g.: `.myClass p`\r\n *\r\n * @param selector CSS selector\r\n */\n set selector(selector) {\n this._rule.selectorText = selector;\n }\n /**\r\n * @return CSS selector\r\n */\n get selector() {\n return this._rule.selectorText;\n }\n // TODO test this\n _dispose() {\n // TODO a bit hacky\n const index = $array.indexOf(this._root.cssRules, this._rule);\n if (index === -1) {\n throw new Error(\"Could not dispose StyleRule\");\n } else {\n // TODO if it's empty remove it from the DOM ?\n this._root.deleteRule(index);\n }\n }\n /**\r\n * Sets the same style properties with browser-specific prefixes.\r\n *\r\n * @param name Attribute name\r\n * @param value Attribute value\r\n */\n _setVendorPrefixName(name, value) {\n const style = this._rule.style;\n style.setProperty(\"-webkit-\" + name, value, \"\");\n style.setProperty(\"-moz-\" + name, value, \"\");\n style.setProperty(\"-ms-\" + name, value, \"\");\n style.setProperty(\"-o-\" + name, value, \"\");\n style.setProperty(name, value, \"\");\n }\n /**\r\n * Sets a value for specific style attribute.\r\n *\r\n * @param name Attribute\r\n * @param value Value\r\n */\n setStyle(name, value) {\n if (name === \"transition\") {\n this._setVendorPrefixName(name, value);\n } else {\n this._rule.style.setProperty(name, value, \"\");\n }\n }\n}\n/**\r\n * Defines a class for an entire CSS style sheet.\r\n *\r\n * Can be used to dynamically add CSS to the document.\r\n */\nexport class StyleSheet extends DisposerClass {\n /**\r\n * Constructor.\r\n *\r\n * @param text CSS stylesheet\r\n */\n constructor(element, text) {\n let nonce = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"\";\n super();\n Object.defineProperty(this, \"_element\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._element = createStylesheet(element, text, nonce);\n }\n _dispose() {\n if (this._element.parentNode) {\n this._element.parentNode.removeChild(this._element);\n }\n }\n}\n/**\r\n * Adds a class name to an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\nexport function addClass(element, className) {\n if (!element) {\n return;\n }\n if (element.classList) {\n const classes = className.split(\" \");\n $array.each(classes, name => {\n element.classList.add(name);\n });\n } else {\n let currentClassName = element.getAttribute(\"class\");\n if (currentClassName) {\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(item => {\n return item !== className;\n }).join(\" \") + \" \" + className);\n } else {\n element.setAttribute(\"class\", className);\n }\n }\n}\n/**\r\n * Removes a class name from an HTML or SVG element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @param className Class name to add\r\n */\nexport function removeClass(element, className) {\n if (!element) {\n return;\n }\n if (element.classList) {\n element.classList.remove(className);\n } else {\n let currentClassName = element.getAttribute(\"class\");\n if (currentClassName) {\n element.setAttribute(\"class\", currentClassName.split(\" \").filter(item => {\n return item !== className;\n }).join(\" \"));\n }\n }\n}\n// /**\n// * Applies a set of styles to an element. Stores the original styles so they\n// * can be restored later.\n// *\n// * @ignore\n// * @param io Element\n// */\n// export function prepElementForDrag(dom: HTMLElement): void {\n// \t// @todo: save current values\n// \t// Define possible props\n// \tlet props = [\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\n// \t];\n// \tfor (let i = 0; i < props.length; i++) {\n// \t\tif (props[i] in dom.style) {\n// \t\t\tsetStyle(dom, props[i], \"none\");\n// \t\t}\n// \t}\n// \t// Remove iOS-specific selection;\n// \tsetStyle(dom, \"tapHighlightColor\", \"rgba(0, 0, 0, 0)\");\n// }\n// /**\n// * Restores replaced styles\n// *\n// * @ignore\n// * @param io Element\n// */\n// export function unprepElementForDrag(dom: HTMLElement): void {\n// \t// Define possible props\n// \tlet props = [\n// \t\t\"touchAction\", \"webkitTouchAction\", \"MozTouchAction\", \"MSTouchAction\", \"msTouchAction\", \"oTouchAction\",\n// \t\t\"userSelect\", \"webkitUserSelect\", \"MozUserSelect\", \"MSUserSelect\", \"msUserSelect\", \"oUserSelect\",\n// \t\t\"touchSelect\", \"webkitTouchSelect\", \"MozTouchSelect\", \"MSTouchSelect\", \"msTouchSelect\", \"oTouchSelect\",\n// \t\t\"touchCallout\", \"webkitTouchCallout\", \"MozTouchCallout\", \"MSTouchCallout\", \"msTouchCallout\", \"oTouchCallout\",\n// \t\t\"contentZooming\", \"webkitContentZooming\", \"MozContentZooming\", \"MSContentZooming\", \"msContentZooming\", \"oContentZooming\",\n// \t\t\"userDrag\", \"webkitUserDrag\", \"MozUserDrag\", \"MSUserDrag\", \"msUserDrag\", \"oUserDrag\"\n// \t];\n// \tfor (let i = 0; i < props.length; i++) {\n// \t\tif (props[i] in dom.style) {\n// \t\t\tsetStyle(dom, props[i], \"\");\n// \t\t}\n// \t}\n// \t// Remove iOS-specific selection;\n// \tsetStyle(dom, \"tapHighlightColor\", \"\");\n// }\nexport function iOS() {\n return /apple/i.test(navigator.vendor) && \"ontouchend\" in document;\n}\nexport function getSafeResolution() {\n return iOS() ? 1 : undefined;\n}\nexport function relativeToValue(percent, full) {\n if ($type.isNumber(percent)) {\n return percent;\n } else if (percent != null && $type.isNumber(percent.value) && $type.isNumber(full)) {\n return full * percent.value;\n } else {\n return 0;\n }\n}\n/**\r\n * Returns number of decimals\r\n *\r\n * @ignore Exclude from docs\r\n * @param number Input number\r\n * @return Number of decimals\r\n */\nexport function decimalPlaces(number) {\n let match = ('' + number).match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n if (!match) {\n return 0;\n }\n return Math.max(0, (match[1] ? match[1].length : 0) - (match[2] ? +match[2] : 0));\n}\n/**\r\n * ============================================================================\r\n * STRING FORMATTING FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Pads a string with additional characters to certain length.\r\n *\r\n * @param value A numeric value\r\n * @param len Result string length in characters\r\n * @param char A character to use for padding\r\n * @return Padded value as string\r\n */\nexport function padString(value) {\n let len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let char = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"0\";\n if (typeof value !== \"string\") {\n value = value.toString();\n }\n return len > value.length ? Array(len - value.length + 1).join(char) + value : value;\n}\nexport function trimLeft(text) {\n return text.replace(/^[\\s]*/, \"\");\n}\nexport function trimRight(text) {\n return text.replace(/[\\s]*$/, \"\");\n}\nexport function trim(text) {\n return trimLeft(trimRight(text));\n}\nexport function truncateTextWithEllipsis(text, maxLength) {\n let breakWords = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let ellipsis = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"...\";\n if (text.length > maxLength) {\n // Find the last non-alphanumeric character before maxLength\n let lastNonAlphanumericIndex = maxLength - 1;\n while (lastNonAlphanumericIndex >= 0 && text.charAt(lastNonAlphanumericIndex).match(/\\w/)) {\n lastNonAlphanumericIndex--;\n }\n if (lastNonAlphanumericIndex >= 0 && breakWords == false) {\n return text.substring(0, lastNonAlphanumericIndex + 1) + '...';\n } else {\n // If no non-alphanumeric character found, truncate without breaking words\n return text.substring(0, maxLength) + ellipsis;\n }\n } else {\n return text;\n }\n}\n/**\r\n * Tries to determine format type.\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format string\r\n * @return Format type (\"string\" | \"number\" | \"date\" | \"duration\")\r\n */\nexport function getFormat(format) {\n // Undefined?\n if (typeof format === \"undefined\") {\n return \"string\";\n }\n // Cleanup and lowercase format\n format = format.toLowerCase().replace(/^\\[[^\\]]*\\]/, \"\");\n // Remove style tags\n format = format.replace(/\\[[^\\]]+\\]/, \"\");\n // Trim\n format = format.trim();\n // Check for any explicit format hints (i.e. /Date)\n let hints = format.match(/\\/(date|number|duration)$/);\n if (hints) {\n return hints[1];\n }\n // Check for explicit hints\n if (format === \"number\") {\n return \"number\";\n }\n if (format === \"date\") {\n return \"date\";\n }\n if (format === \"duration\") {\n return \"duration\";\n }\n // Detect number formatting symbols\n if (format.match(/[#0]/)) {\n return \"number\";\n }\n // Detect date formatting symbols\n if (format.match(/[ymwdhnsqaxkzgtei]/)) {\n return \"date\";\n }\n // Nothing? Let's display as string\n return \"string\";\n}\n/**\r\n * Cleans up format:\r\n * * Strips out formatter hints\r\n *\r\n * @ignore Exclude from docs\r\n * @param format Format\r\n * @return Cleaned format\r\n */\nexport function cleanFormat(format) {\n return format.replace(/\\/(date|number|duration)$/i, \"\");\n}\n/**\r\n * Strips all tags from the string.\r\n *\r\n * @param text Source string\r\n * @return String without tags\r\n */\nexport function stripTags(text) {\n return text ? text.replace(/<[^>]*>/g, \"\") : text;\n}\n/**\r\n * Removes new lines and tags from a string.\r\n *\r\n * @param text String to conver\r\n * @return Converted string\r\n */\nexport function plainText(text) {\n return text ? stripTags((\"\" + text).replace(/[\\n\\r]+/g, \". \")) : text;\n}\n/**\r\n * Escapes string so it can safely be used in a Regex.\r\n *\r\n * @param value Unsescaped string\r\n * @return Escaped string\r\n */\nexport function escapeForRgex(value) {\n return value.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n/**\r\n * Adds space before each uppercase letter.\r\n *\r\n * @param str Input string\r\n * @return Output string\r\n */\nexport function addSpacing(str) {\n let result = \"\";\n for (let i = 0; i < str.length; i++) {\n const char = str.charAt(i);\n if (char.toUpperCase() == char && i != 0) {\n result += \" \";\n }\n result += char;\n }\n return result;\n}\n/**\r\n * Splits the string into separate characters. Keeps RTL words non-split.\r\n *\r\n * @param source Input\r\n * @return Split text\r\n */\nexport function splitString(source) {\n // Regular expression to identify RTL characters\n const rtlChar = /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/;\n // Regular expression to capture segments ending with specific Arabic characters\n const splitPattern = /([^اأدذرزو]*[اأدذرزو])/gi;\n // Split input string into array of words or characters, including whitespace\n let segments = source.split(/(\\s+)/); // Split by whitespace, capturing it\n let result = [];\n segments.forEach(segment => {\n if (segment.match(/^\\s+$/)) {\n // If the segment is purely whitespace\n if (segment = \" \") {\n segment = \" \";\n }\n result.push(segment);\n } else if (rtlChar.test(segment)) {\n // If the segment contains RTL characters, handle special splits\n let parts = segment.split(splitPattern).filter(part => part !== '');\n // Concatenate parts processed by the split pattern directly to result\n result = result.concat(parts);\n } else {\n // Treat this segment as LTR: split into characters\n result = result.concat([...segment]);\n }\n });\n return result;\n}\n/**\r\n * ============================================================================\r\n * DATE-RELATED FUNCTIONS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * Returns a year day.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year day\r\n * @todo Account for UTC\r\n */\nexport function getYearDay(date) {\n let utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // TODO: utc needed?\n utc;\n const start = new Date(date.getFullYear(), 0, 0);\n const diff = date.getTime() - start.getTime() + (start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000;\n const oneDay = 1000 * 60 * 60 * 24;\n return Math.floor(diff / oneDay);\n}\n/**\r\n * Returns week number for a given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number\r\n * @todo Account for UTC\r\n */\nexport function getWeek(date) {\n let _utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - day);\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return Math.ceil(((d.getTime() - firstDay.getTime()) / 86400000 + 1) / 7);\n}\n/**\r\n * Returns a \"week year\" of the given date.\r\n *\r\n * @param date Date\r\n * @param utc Assume UTC dates?\r\n * @return Year of week\r\n * @since 5.3.0\r\n * @todo Account for UTC\r\n */\nexport function getWeekYear(date) {\n let _utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n const day = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - day);\n const firstDay = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\n return firstDay.getFullYear();\n}\n/**\r\n * Returns a week number in the month.\r\n *\r\n * @param date Source Date\r\n * @param utc Assume UTC dates?\r\n * @return Week number in month\r\n */\nexport function getMonthWeek(date) {\n let utc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const firstWeek = getWeek(new Date(date.getFullYear(), date.getMonth(), 1), utc);\n let currentWeek = getWeek(date, utc);\n if (currentWeek == 1) {\n currentWeek = 53;\n }\n return currentWeek - firstWeek + 1;\n}\n/**\r\n * Returns a year day out of the given week number.\r\n *\r\n * @param week Week\r\n * @param year Year\r\n * @param weekday Weekday\r\n * @param utc Assume UTC dates\r\n * @return Day in a year\r\n */\nexport function getDayFromWeek(week, year) {\n let weekday = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n let utc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let date = new Date(year, 0, 4, 0, 0, 0, 0);\n if (utc) {\n date.setUTCFullYear(year);\n }\n let day = week * 7 + weekday - ((date.getDay() || 7) + 3);\n return day;\n}\n/**\r\n * Returns 12-hour representation out of the 24-hour hours.\r\n *\r\n * @param hours 24-hour number\r\n * @return 12-hour number\r\n */\nexport function get12Hours(hours, base) {\n if (hours > 12) {\n hours -= 12;\n } else if (hours === 0) {\n hours = 12;\n }\n return base != null ? hours + (base - 1) : hours;\n}\n/**\r\n * Returns a string name of the time zone.\r\n *\r\n * @param date Date object\r\n * @param long Should return long (\"Pacific Standard Time\") or short abbreviation (\"PST\")\r\n * @param savings Include information if it's in daylight savings mode\r\n * @param utc Assume UTC dates\r\n * @return Time zone name\r\n */\nexport function getTimeZone(date) {\n let long = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let savings = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let utc = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let timezone = arguments.length > 4 ? arguments[4] : undefined;\n if (utc) {\n return long ? \"Coordinated Universal Time\" : \"UTC\";\n } else if (timezone) {\n const d1 = date.toLocaleString(\"en-US\", {\n timeZone: timezone\n });\n const d2 = date.toLocaleString(\"en-US\", {\n timeZone: timezone,\n timeZoneName: long ? \"long\" : \"short\"\n });\n return trim(d2.substr(d1.length));\n }\n let wotz = date.toLocaleString(\"UTC\");\n let wtz = date.toLocaleString(\"UTC\", {\n timeZoneName: long ? \"long\" : \"short\"\n }).substr(wotz.length);\n //wtz = wtz.replace(/[+-]+[0-9]+$/, \"\");\n if (savings === false) {\n wtz = wtz.replace(/ (standard|daylight|summer|winter) /i, \" \");\n }\n return trim(wtz);\n}\nexport function getTimezoneOffset(timezone) {\n const date = new Date(Date.UTC(2012, 0, 1, 0, 0, 0, 0));\n const utcDate = new Date(date.toLocaleString(\"en-US\", {\n timeZone: \"UTC\"\n }));\n const tzDate = new Date(date.toLocaleString(\"en-US\", {\n timeZone: timezone\n }));\n return (tzDate.getTime() - utcDate.getTime()) / 6e4 * -1;\n}\nexport function capitalizeFirst(text) {\n return text.charAt(0).toUpperCase() + text.slice(1);\n}\n/**\r\n * The functions below are taken and adapted from Garry Tan's blog post:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * The further attributions go mjijackson.com, which now seems to be defunct.\r\n */\n/**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h, s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param h The hue\r\n * @param s The saturation\r\n * @param l The lightness\r\n * @return The RGB representation\r\n */\nexport function hslToRgb(color) {\n let r, g, b;\n let h = color.h;\n let s = color.s;\n let l = color.l;\n if (s == 0) {\n r = g = b = l; // achromatic\n } else {\n let hue2rgb = function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n };\n let q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n let p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255)\n };\n}\n/**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h, s, and l in the set [0, 1].\r\n *\r\n * Function adapted from:\r\n * http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c\r\n *\r\n * @param r The red color value\r\n * @param g The green color value\r\n * @param b The blue color value\r\n * @return The HSL representation\r\n */\nexport function rgbToHsl(color) {\n let r = color.r / 255;\n let g = color.g / 255;\n let b = color.b / 255;\n let max = Math.max(r, g, b);\n let min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n let l = (max + min) / 2;\n if (max === min) {\n h = s = 0; // achromatic\n } else {\n let d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n/**\r\n * Converts HSV to HSL.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL\r\n */\nexport function hsvToHsl(hsv) {\n const l = hsv.v * (1 - hsv.s / 2);\n const s = l === 0 || l === 1 ? 0 : (hsv.v - l) / Math.min(l, 1 - l);\n return {\n h: hsv.h,\n s,\n l,\n a: hsv.a\n };\n}\n/**\r\n * Converts HSL to HSV.\r\n *\r\n * https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV\r\n */\nexport function hslToHsv(hsl) {\n const v = hsl.l + hsl.s * Math.min(hsl.l, 1 - hsl.l);\n const s = v === 0 ? 0 : 2 * (1 - hsl.l / v);\n return {\n h: hsl.h,\n s,\n v,\n a: hsl.a\n };\n}\n/**\r\n * Returns a color that is `percent` brighter than the reference color.\r\n *\r\n * @param color Reference color\r\n * @param percent Brightness percent\r\n * @return Hex code of the new color\r\n */\nexport function lighten(rgb, percent) {\n if (rgb) {\n return {\n r: Math.max(0, Math.min(255, rgb.r + getLightnessStep(rgb.r, percent))),\n g: Math.max(0, Math.min(255, rgb.g + getLightnessStep(rgb.g, percent))),\n b: Math.max(0, Math.min(255, rgb.b + getLightnessStep(rgb.b, percent))),\n a: rgb.a\n };\n } else {\n // TODO is this correct ?\n return rgb;\n }\n}\n;\n/**\r\n * Gets lightness step.\r\n *\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\nexport function getLightnessStep(value, percent) {\n let base = percent > 0 ? 255 - value : value;\n return Math.round(base * percent);\n}\n/**\r\n * Returns a color that is `percent` brighter than the source `color`.\r\n *\r\n * @param color Source color\r\n * @param percent Brightness percent\r\n * @return New color\r\n */\nexport function brighten(rgb, percent) {\n if (rgb) {\n let base = Math.min(Math.max(rgb.r, rgb.g, rgb.b), 230);\n //let base = Math.max(rgb.r, rgb.g, rgb.b);\n let step = getLightnessStep(base, percent);\n return {\n r: Math.max(0, Math.min(255, Math.round(rgb.r + step))),\n g: Math.max(0, Math.min(255, Math.round(rgb.g + step))),\n b: Math.max(0, Math.min(255, Math.round(rgb.b + step))),\n a: rgb.a\n };\n } else {\n // TODO is this correct ?\n return rgb;\n }\n}\n;\n/**\r\n * Returns brightness step.\r\n *\r\n * @ignore Exclude from docs\r\n * @param value Value\r\n * @param percent Percent\r\n * @return Step\r\n */\nexport function getBrightnessStep(_value, percent) {\n let base = 255; //percent > 0 ? 255 - value : value;\n return Math.round(base * percent);\n}\n/**\r\n * Returns `true` if color is \"light\". Useful indetermining which contrasting\r\n * color to use for elements over this color. E.g.: you would want to use\r\n * black text over light background, and vice versa.\r\n *\r\n * @param color Source color\r\n * @return Light?\r\n */\nexport function isLight(color) {\n return (color.r * 299 + color.g * 587 + color.b * 114) / 1000 >= 128;\n}\n/**\r\n * Returns a new [[iRGB]] object based on `rgb` parameter with specific\r\n * saturation applied.\r\n *\r\n * `saturation` can be in the range of 0 (fully desaturated) to 1 (fully\r\n * saturated).\r\n *\r\n * @param color Base color\r\n * @param saturation Saturation (0-1)\r\n * @return New color\r\n */\nexport function saturate(rgb, saturation) {\n if (rgb === undefined || saturation == 1) {\n return rgb;\n }\n let hsl = rgbToHsl(rgb);\n hsl.s = saturation;\n return hslToRgb(hsl);\n}\n/**\r\n * Returns a color which contrasts more with the source `color`.\r\n *\r\n * @param color Base color\r\n * @param lightAlternative Light option\r\n * @param darkAlternative Dark option\r\n * @return New color\r\n */\nexport function alternativeColor(color) {\n let lightAlternative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n r: 255,\n g: 255,\n b: 255\n };\n let darkAlternative = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n r: 255,\n g: 255,\n b: 255\n };\n let light = lightAlternative;\n let dark = darkAlternative;\n if (isLight(darkAlternative)) {\n light = darkAlternative;\n dark = lightAlternative;\n }\n return isLight(color) ? dark : light;\n}\n/**\r\n * @ignore\r\n */\nexport function mergeTags(tags1, tags2) {\n if (!tags1) {\n tags1 = [];\n }\n return [...tags1, ...tags2].filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n}\n/**\r\n * @ignore\r\n */\nexport function sameBounds(a, b) {\n if (!b) {\n return false;\n }\n if (a.left != b.left) {\n return false;\n }\n if (a.right != b.right) {\n return false;\n }\n if (a.top != b.top) {\n return false;\n }\n if (a.bottom != b.bottom) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=Utils.js.map","import { range } from \"./Animation\";\nimport * as $utils from \"./Utils\";\nimport * as $type from \"./Type\";\n/**\r\n * @ignore\r\n */\nfunction string2hex(string) {\n //string = cssColorNames[string.toLowerCase()] || string;\n if (string[0] === \"#\") {\n string = string.substr(1);\n }\n if (string.length == 3) {\n string = string[0].repeat(2) + string[1].repeat(2) + string[2].repeat(2);\n }\n return parseInt(string, 16);\n}\n/**\r\n * @ignore\r\n */\nexport function rgba2hex(color) {\n color = color.replace(/[ ]/g, \"\");\n // Init\n let matches = color.match(/^rgb\\(([0-9]*),([0-9]*),([0-9]*)\\)/i);\n // Try rgb() format\n if (matches) {\n matches.push(\"1\");\n } else {\n matches = color.match(/^rgba\\(([0-9]*),([0-9]*),([0-9]*),([.0-9]*)\\)/i);\n if (!matches) {\n return 0x000000;\n }\n }\n let hex = \"\";\n for (let i = 1; i <= 3; i++) {\n let val = parseInt(matches[i]).toString(16);\n if (val.length == 1) {\n val = \"0\" + val;\n }\n hex += val;\n }\n return string2hex(hex);\n}\n/**\r\n * Returns a new [[Color]] object base on input.\r\n *\r\n * Accepts parameters in CSS hex or rgb/rtba strings, or hex numbers.\r\n *\r\n * * `\"#f00\"`\r\n * * `\"#ff0000\"`\r\n * * `\"rgb(255, 0, 0)\"`\r\n * * `\"rgba(255, 0, 0, 1)\"`\r\n * * `0xff0000`\r\n *\r\n * @param input Input color\r\n * @return Color\r\n */\nexport function color(input) {\n return Color.fromAny(input);\n}\n/**\r\n * Wherever color needs to be specified in amCharts 5, `Color` object needs to\r\n * be used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/} for more info\r\n * @important\r\n */\nexport class Color {\n constructor(hex) {\n Object.defineProperty(this, \"_hex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._hex = hex | 0;\n }\n /**\r\n * Color numeric value.\r\n */\n get hex() {\n return this._hex;\n }\n /**\r\n * Value of color's R channel.\r\n * @return R value\r\n */\n get r() {\n return this._hex >>> 16;\n }\n /**\r\n * Value of color's G channel.\r\n * @return G value\r\n */\n get g() {\n return this._hex >> 8 & 0xFF;\n }\n /**\r\n * Value of color's B channel.\r\n * @return B value\r\n */\n get b() {\n return this._hex & 0xFF;\n }\n /**\r\n * Returns color CSS representation in form of `rgba(r, g, b, a)` string.\r\n *\r\n * @param alpha Opacity\r\n * @return CSS string\r\n */\n toCSS() {\n let alpha = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n return \"rgba(\" + this.r + \", \" + this.g + \", \" + this.b + \", \" + alpha + \")\";\n }\n /**\r\n * Returns color CSS representation in form of `#rgb` string.\r\n *\r\n * @return CSS string\r\n */\n toCSSHex() {\n return \"#\" + $utils.padString(this.r.toString(16), 2) + $utils.padString(this.g.toString(16), 2) + $utils.padString(this.b.toString(16), 2);\n }\n /**\r\n * Returns color's HSL info.\r\n * @param alpha Opacity\r\n * @return HSL info\r\n */\n toHSL() {\n let alpha = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n return $utils.rgbToHsl({\n r: this.r,\n g: this.g,\n b: this.b,\n a: alpha\n });\n }\n /**\r\n * Converts HSL values into a new [[Color]] object.\r\n *\r\n * @param h H value\r\n * @param s S value\r\n * @param l L value\r\n * @return Color object\r\n */\n static fromHSL(h, s, l) {\n const rgb = $utils.hslToRgb({\n h: h,\n s: s,\n l: l\n });\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\n }\n toString() {\n return this.toCSSHex();\n }\n /**\r\n * Converts hex number into a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromHex(0xff0000) // red\r\n * ```\r\n *\r\n * @param hex Hex color\r\n * @return Color\r\n */\n static fromHex(hex) {\n return new Color(hex);\n }\n /**\r\n * Converts RGB values to a new [[Color]] object.\r\n *\r\n * @param r R value\r\n * @param g G value\r\n * @param b B value\r\n * @return Color\r\n */\n static fromRGB(r, g, b) {\n return new Color((b | 0) + (g << 8) + (r << 16));\n }\n /**\r\n * Converts RGB string to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromString(\"#ff0000\") // red\r\n * ```\r\n *\r\n * @param s RGB string\r\n * @return Color\r\n */\n static fromString(s) {\n return new Color(string2hex(s));\n }\n /**\r\n * Converts CSS rgba() syntax to a new [[Color]] object.\r\n *\r\n * ```TypeScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n * ```JavaScript\r\n * Color.fromCSS(\"rgba(255, 0, 0, 1)\") // red\r\n * ```\r\n *\r\n * @param {string} s [description]\r\n * @return {Color} [description]\r\n */\n static fromCSS(s) {\n return new Color(rgba2hex(s));\n }\n /**\r\n * Convert to color from virtually anything.\r\n *\r\n * Will throw an exception if unable to resolve the color.\r\n *\r\n * @param s Source\r\n * @return Color\r\n */\n static fromAny(s) {\n if ($type.isString(s)) {\n if (s[0] == \"#\") {\n return Color.fromString(s);\n } else if (s.substr(0, 3) == \"rgb\") {\n return Color.fromCSS(s);\n }\n } else if ($type.isNumber(s)) {\n return Color.fromHex(s);\n } else if (s instanceof Color) {\n return Color.fromHex(s.hex);\n }\n throw new Error(\"Unknown color syntax: \" + s);\n }\n /**\r\n * Returns a new [[Color]] object based on either `lightAlternative` or\r\n * `darkAlternative` depending on which one is more contrasting with\r\n * the `color`.\r\n *\r\n * @param color Reference color\r\n * @param lightAlternative Light color\r\n * @param darkAlternative Dark color\r\n * @return Alternative color\r\n */\n static alternative(color, lightAlternative, darkAlternative) {\n const rgb = $utils.alternativeColor({\n r: color.r,\n g: color.g,\n b: color.b\n }, lightAlternative ? {\n r: lightAlternative.r,\n g: lightAlternative.g,\n b: lightAlternative.b\n } : undefined, darkAlternative ? {\n r: darkAlternative.r,\n g: darkAlternative.g,\n b: darkAlternative.b\n } : undefined);\n return this.fromRGB(rgb.r, rgb.g, rgb.b);\n }\n /**\r\n * Returns an intermediate Color between two reference colors depending on\r\n * the progress (`diff`) between the two.\r\n *\r\n * @param diff Progress\r\n * @param from Source color\r\n * @param to Target color\r\n * @param mode Interpolation mode\r\n * @return Color\r\n */\n static interpolate(diff, from, to) {\n let mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \"rgb\";\n if (mode == \"hsl\") {\n const fromHSL = from.toHSL();\n const toHSL = to.toHSL();\n return Color.fromHSL(range(diff, fromHSL.h, toHSL.h), range(diff, fromHSL.s, toHSL.s), range(diff, fromHSL.l, toHSL.l));\n } else {\n return Color.fromRGB(range(diff, from.r, to.r), range(diff, from.g, to.g), range(diff, from.b, to.b));\n }\n }\n /**\r\n * Returns a new [[Color]] lightened by `percent` value.\r\n *\r\n * Use negative value to darken the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\n static lighten(color, percent) {\n const rgb = $utils.lighten({\n r: color.r,\n g: color.g,\n b: color.b\n }, percent);\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\n }\n /**\r\n * Returns a new [[Color]] brightened by `percent` value.\r\n *\r\n * Use negative value to dim the color.\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\n static brighten(color, percent) {\n const rgb = $utils.brighten({\n r: color.r,\n g: color.g,\n b: color.b\n }, percent);\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\n }\n /**\r\n * Returns a new [[Color]] saturated by `percent` value.\r\n *\r\n * Value range is between `0` (fully desaturated), to `1` (full color).\r\n *\r\n * @param color Source color\r\n * @param percent Percent\r\n * @return New color\r\n */\n static saturate(color, percent) {\n const rgb = $utils.saturate({\n r: color.r,\n g: color.g,\n b: color.b\n }, percent);\n return Color.fromRGB(rgb.r, rgb.g, rgb.b);\n }\n}\n//# sourceMappingURL=Color.js.map","import { __awaiter } from \"tslib\";\nimport { Percent } from \"./Percent\";\nimport { Color } from \"./Color\";\nimport { EventDispatcher } from \"./EventDispatcher\";\nimport * as $object from \"./Object\";\n/**\r\n * @ignore\r\n */\nexport function waitForAnimations(animations) {\n return __awaiter(this, void 0, void 0, function* () {\n if (animations !== undefined) {\n const promises = [];\n $object.each(animations, (_, animation) => {\n promises.push(animation.waitForStop());\n });\n yield Promise.all(promises);\n }\n });\n}\n/**\r\n * @ignore\r\n */\nexport function normalize(value, min, max) {\n if (min === max) {\n return 0;\n } else {\n return Math.min(Math.max((value - min) * (1 / (max - min)), 0), 1);\n }\n}\n/**\r\n * @ignore\r\n */\nexport function range(diff, from, to) {\n return from + diff * (to - from);\n}\n/**\r\n * @ignore\r\n */\nexport function defaultInterpolate(diff, from, to) {\n if (diff >= 1) {\n return to;\n } else {\n return from;\n }\n}\n/**\r\n * @ignore\r\n */\nexport function percentInterpolate(diff, from, to) {\n return new Percent(range(diff, from.percent, to.percent));\n}\n/**\r\n * @ignore\r\n */\nexport function colorInterpolate(diff, from, to) {\n return Color.interpolate(diff, from, to);\n}\n/**\r\n * @ignore\r\n */\nexport function getInterpolate(from, to) {\n if (typeof from === \"number\" && typeof to === \"number\") {\n return range;\n }\n if (from instanceof Percent && to instanceof Percent) {\n return percentInterpolate;\n }\n if (from instanceof Color && to instanceof Color) {\n return colorInterpolate;\n }\n return defaultInterpolate;\n}\nexport var AnimationState;\n(function (AnimationState) {\n AnimationState[AnimationState[\"Stopped\"] = 0] = \"Stopped\";\n AnimationState[AnimationState[\"Playing\"] = 1] = \"Playing\";\n AnimationState[AnimationState[\"Paused\"] = 2] = \"Paused\";\n})(AnimationState || (AnimationState = {}));\n/**\r\n * @ignore\r\n */\nexport class AnimationTime {\n constructor(entity, duration) {\n Object.defineProperty(this, \"_entity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_duration\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_playingDuration\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"_startingTime\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"_current\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_from\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_to\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventDispatcher()\n });\n Object.defineProperty(this, \"easing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._entity = entity;\n this._duration = duration;\n }\n _stopEvent() {\n const type = \"stopped\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this\n });\n }\n }\n _runAnimation(currentTime) {\n if (this._playingDuration !== null) {\n if (this._startingTime === null) {\n this._startingTime = currentTime;\n return AnimationState.Playing;\n } else {\n const diff = (currentTime - this._startingTime) / this._playingDuration;\n if (diff >= 1) {\n this._playingDuration = null;\n this._startingTime = null;\n this._from = this._to;\n this._current = this._to;\n this._entity.markDirty();\n this._stopEvent();\n const type = \"ended\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this\n });\n }\n return AnimationState.Stopped;\n } else {\n this._current = range(diff, this._from, this._to);\n this._entity.markDirty();\n const type = \"progress\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n progress: diff\n });\n }\n return AnimationState.Playing;\n }\n }\n } else {\n return AnimationState.Stopped;\n }\n }\n _play() {\n this._from = this._current;\n if (this._playingDuration === null) {\n this._entity._root._addAnimation(this);\n const type = \"started\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this\n });\n }\n } else {\n this._startingTime = null;\n }\n this._playingDuration = Math.abs(this._to - this._from) * this._duration;\n }\n get duration() {\n return this._duration;\n }\n set duration(value) {\n if (this._duration !== value) {\n this._duration = value;\n if (value === 0) {\n this.jumpTo(this._to);\n } else if (this._current !== this._to) {\n this._play();\n }\n }\n }\n get current() {\n if (this.easing) {\n return this.easing(this._current);\n } else {\n return this._current;\n }\n }\n stop() {\n this.jumpTo(this._current);\n }\n jumpTo(value) {\n if (this._current !== value) {\n this._entity.markDirty();\n }\n if (this._playingDuration !== null) {\n this._stopEvent();\n }\n this._playingDuration = null;\n this._startingTime = null;\n this._current = value;\n this._from = value;\n this._to = value;\n }\n tweenTo(value) {\n if (this._current === value || this._duration === 0) {\n this.jumpTo(value);\n } else {\n if (this._to !== value) {\n this._to = value;\n this._play();\n }\n }\n }\n}\n/*export class AnimationValue extends AnimationTime {\r\n public _min: number;\r\n public _max: number;\r\n\r\n constructor(entity: Entity, duration: number, min: number, max: number) {\r\n super(entity, duration);\r\n this._min = min;\r\n this._max = max;\r\n }\r\n\r\n public get min(): number {\r\n return this._min;\r\n }\r\n\r\n public set min(value: number) {\r\n if (this._min !== value) {\r\n this._min = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public get max(): number {\r\n return this._max;\r\n }\r\n\r\n public set max(value: number) {\r\n if (this._max !== value) {\r\n this._max = value;\r\n this._entity.markDirty();\r\n }\r\n }\r\n\r\n public currentValue(): number {\r\n return range(super.currentTime(), this._min, this._max);\r\n }\r\n\r\n public jumpToValue(value: number) {\r\n super.jumpToTime(normalize(value, this._min, this._max));\r\n }\r\n\r\n public tweenToValue(value: number) {\r\n super.tweenToTime(normalize(value, this._min, this._max));\r\n }\r\n}\r\n*/\n//# sourceMappingURL=Animation.js.map","/**\r\n * Event Dispatcher module is used for registering listeners and dispatching\r\n * events across amCharts system.\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport { Disposer, MultiDisposer } from \"./Disposer\";\nimport * as $array from \"./Array\";\nimport * as $type from \"./Type\";\n/**\r\n * Universal Event Dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\nexport class EventDispatcher {\n /**\r\n * Constructor\r\n */\n constructor() {\n Object.defineProperty(this, \"_listeners\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_killed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_disabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_iterating\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_enabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._listeners = [];\n this._killed = [];\n this._disabled = {};\n this._iterating = 0;\n this._enabled = true;\n this._disposed = false;\n }\n /**\r\n * Returns if this object has been already disposed.\r\n *\r\n * @return Disposed?\r\n */\n isDisposed() {\n return this._disposed;\n }\n /**\r\n * Dispose (destroy) this object.\r\n */\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n const a = this._listeners;\n this._iterating = 1;\n this._listeners = null;\n this._disabled = null;\n try {\n $array.each(a, x => {\n x.disposer.dispose();\n });\n } finally {\n this._killed = null;\n this._iterating = null;\n }\n }\n }\n /**\r\n * Checks if this particular event dispatcher has any listeners set.\r\n *\r\n * @return Has listeners?\r\n */\n hasListeners() {\n return this._listeners.length !== 0;\n }\n /**\r\n * Checks if this particular event dispatcher has any particular listeners set.\r\n *\r\n * @return Has particular event listeners?\r\n */\n hasListenersByType(type) {\n return $array.any(this._listeners, x => (x.type === null || x.type === type) && !x.killed);\n }\n /**\r\n * Enable dispatching of events if they were previously disabled by\r\n * `disable()`.\r\n */\n enable() {\n this._enabled = true;\n }\n /**\r\n * Disable dispatching of events until re-enabled by `enable()`.\r\n */\n disable() {\n this._enabled = false;\n }\n /**\r\n * Enable dispatching particular event, if it was disabled before by\r\n * `disableType()`.\r\n *\r\n * @param type Event type\r\n */\n enableType(type) {\n delete this._disabled[type];\n }\n /**\r\n * Disable dispatching of events for a certain event type.\r\n *\r\n * Optionally, can set how many dispatches to skip before automatically\r\n * re-enabling the dispatching.\r\n *\r\n * @param type Event type\r\n * @param amount Number of event dispatches to skip\r\n */\n disableType(type) {\n let amount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Infinity;\n this._disabled[type] = amount;\n }\n /**\r\n * Removes listener from dispatcher.\r\n *\r\n * Will throw an exception if such listener does not exists.\r\n *\r\n * @param listener Listener to remove\r\n */\n _removeListener(listener) {\n if (this._iterating === 0) {\n const index = this._listeners.indexOf(listener);\n if (index === -1) {\n throw new Error(\"Invalid state: could not remove listener\");\n }\n this._listeners.splice(index, 1);\n } else {\n this._killed.push(listener);\n }\n }\n /**\r\n * Removes existing listener by certain parameters.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\n _removeExistingListener(once, type, callback, context) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n this._eachListener(info => {\n if (info.once === once &&\n // TODO is this correct ?\n info.type === type && (callback === undefined || info.callback === callback) && info.context === context) {\n info.disposer.dispose();\n }\n });\n }\n /**\r\n * Checks if dispatching for particular event type is enabled.\r\n *\r\n * @param type Event type\r\n * @return Enabled?\r\n */\n isEnabled(type) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n // TODO is this check correct ?\n return this._enabled && this._listeners.length > 0 && this.hasListenersByType(type) && this._disabled[type] === undefined;\n }\n /**\r\n * Removes all listeners of a particular event type\r\n *\r\n * @param type Listener's type\r\n */\n removeType(type) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n this._eachListener(info => {\n if (info.type === type) {\n info.disposer.dispose();\n }\n });\n }\n /**\r\n * Checks if there's already a listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @return Has listener?\r\n */\n has(type, callback, context) {\n const index = $array.findIndex(this._listeners, info => {\n return info.once !== true &&\n // Ignoring \"once\" listeners\n info.type === type && (callback === undefined || info.callback === callback) && info.context === context;\n });\n return index !== -1;\n }\n /**\r\n * Checks whether event of the particular type should be dispatched.\r\n *\r\n * @param type Event type\r\n * @return Dispatch?\r\n */\n _shouldDispatch(type) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n const count = this._disabled[type];\n if (!$type.isNumber(count)) {\n return this._enabled;\n } else {\n if (count <= 1) {\n delete this._disabled[type];\n } else {\n --this._disabled[type];\n }\n return false;\n }\n }\n /**\r\n * [_eachListener description]\r\n *\r\n * All of this extra code is needed when a listener is removed while iterating\r\n *\r\n * @todo Description\r\n * @param fn [description]\r\n */\n _eachListener(fn) {\n ++this._iterating;\n try {\n $array.each(this._listeners, fn);\n } finally {\n --this._iterating;\n // TODO should this be inside or outside the finally ?\n if (this._iterating === 0 && this._killed.length !== 0) {\n // Remove killed listeners\n $array.each(this._killed, killed => {\n this._removeListener(killed);\n });\n this._killed.length = 0;\n }\n }\n }\n /**\r\n * Dispatches an event immediately without waiting for next cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\n dispatch(type, event) {\n if (this._shouldDispatch(type)) {\n // TODO check if it's faster to use an object of listeners rather than a single big array\n // TODO if the function throws, maybe it should keep going ?\n this._eachListener(listener => {\n if (!listener.killed && (listener.type === null || listener.type === type)) {\n listener.dispatch(type, event);\n }\n });\n }\n }\n /**\r\n * Shelves the event to be dispatched within next update cycle.\r\n *\r\n * @param type Event type\r\n * @param event Event object\r\n * @todo automatically add in type and target properties if they are missing\r\n */\n /*public dispatchLater<Key extends keyof T>(type: Key, event: T[Key]): void {\r\n if (this._shouldDispatch(type)) {\r\n this._eachListener((listener) => {\r\n // TODO check if it's faster to use an object of listeners rather than a single big array\r\n if (!listener.killed && (listener.type === null || listener.type === type)) {\r\n // TODO if the function throws, maybe it should keep going ?\r\n // TODO dispatch during the update cycle, rather than using whenIdle\r\n $async.whenIdle(() => {\r\n if (!listener.killed) {\r\n listener.dispatch(type, event);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }*/\n /**\r\n * Creates, catalogs and returns an [[EventListener]].\r\n *\r\n * Event listener can be disposed.\r\n *\r\n * @param once Listener's once setting\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @param dispatch\r\n * @returns An event listener\r\n */\n _on(once, type, callback, context, shouldClone, dispatch) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n this._removeExistingListener(once, type, callback, context);\n const info = {\n type: type,\n callback: callback,\n context: context,\n shouldClone: shouldClone,\n dispatch: dispatch,\n killed: false,\n once: once,\n disposer: new Disposer(() => {\n info.killed = true;\n this._removeListener(info);\n })\n };\n this._listeners.push(info);\n return info;\n }\n /**\r\n * Creates an event listener to be invoked on **any** event.\r\n *\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\n onAll(callback, context) {\n let shouldClone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return this._on(false, null, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\n }\n /**\r\n * Creates an event listener to be invoked on a specific event type.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler whenever series we put\r\n * event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\n on(type, callback, context) {\n let shouldClone = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n return this._on(false, type, callback, context, shouldClone, (_type, event) => callback.call(context, event)).disposer;\n }\n /**\r\n * Creates an event listener to be invoked on a specific event type once.\r\n *\r\n * Once the event listener is invoked, it is automatically disposed.\r\n *\r\n * ```TypeScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n * ```JavaScript\r\n * button.events.once(\"click\", (ev) => {\r\n * console.log(\"Button clicked\");\r\n * }, this);\r\n * ```\r\n *\r\n * The above will invoke our custom event handler the first time series we\r\n * put event on is hidden.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n * @param shouldClone Whether the listener should be copied when the EventDispatcher is copied\r\n * @returns A disposable event listener\r\n */\n once(type, callback, context) {\n let shouldClone = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n const x = this._on(true, type, callback, context, shouldClone, (_type, event) => {\n x.disposer.dispose();\n callback.call(context, event);\n });\n // TODO maybe this should return a different Disposer ?\n return x.disposer;\n }\n /**\r\n * Removes the event listener with specific parameters.\r\n *\r\n * @param type Listener's type\r\n * @param callback Callback function\r\n * @param context Callback context\r\n */\n off(type, callback, context) {\n this._removeExistingListener(false, type, callback, context);\n }\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\n copyFrom(source) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n if (source === this) {\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\n }\n const disposers = [];\n $array.each(source._listeners, x => {\n // TODO is this correct ?\n if (!x.killed && x.shouldClone) {\n if (x.type === null) {\n disposers.push(this.onAll(x.callback, x.context));\n } else if (x.once) {\n disposers.push(this.once(x.type, x.callback, x.context));\n } else {\n disposers.push(this.on(x.type, x.callback, x.context));\n }\n }\n });\n return new MultiDisposer(disposers);\n }\n}\n/**\r\n * A version of the [[EventDispatcher]] that dispatches events for a specific\r\n * target object.\r\n *\r\n * @ignore\r\n */\nexport class TargetedEventDispatcher extends EventDispatcher {\n /**\r\n * Constructor\r\n *\r\n * @param target Event dispatcher target\r\n */\n constructor(target) {\n super();\n /**\r\n * A target object which is originating events using this dispatcher.\r\n */\n Object.defineProperty(this, \"target\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.target = target;\n }\n /**\r\n * Copies all dispatcher parameters, including listeners, from another event\r\n * dispatcher.\r\n *\r\n * @param source Source event dispatcher\r\n * @ignore\r\n */\n copyFrom(source) {\n if (this._disposed) {\n throw new Error(\"EventDispatcher is disposed\");\n }\n if (source === this) {\n throw new Error(\"Cannot copyFrom the same TargetedEventDispatcher\");\n }\n const disposers = [];\n $array.each(source._listeners, x => {\n // TODO very hacky\n if (x.context === source.target) {\n return;\n }\n // TODO is this correct ?\n if (!x.killed && x.shouldClone) {\n if (x.type === null) {\n disposers.push(this.onAll(x.callback, x.context));\n } else if (x.once) {\n disposers.push(this.once(x.type, x.callback, x.context));\n } else {\n disposers.push(this.on(x.type, x.callback, x.context));\n }\n }\n });\n return new MultiDisposer(disposers);\n }\n}\n//# sourceMappingURL=EventDispatcher.js.map","import { EventDispatcher } from \"./EventDispatcher\";\nimport * as $array from \"./Array\";\n/**\r\n * Checks if specific index fits into length.\r\n *\r\n * @param index Index\r\n * @param len Length\r\n * @ignore\r\n */\nfunction checkBounds(index, len) {\n if (!(index >= 0 && index < len)) {\n throw new Error(\"Index out of bounds: \" + index);\n }\n}\n/**\r\n * A List class is used to hold a number of indexed items of the same type.\r\n */\nexport class List {\n /**\r\n * Constructor\r\n *\r\n * @param initial Inital list of values to add to list\r\n */\n constructor() {\n let initial = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n /**\r\n * List values.\r\n */\n Object.defineProperty(this, \"_values\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventDispatcher()\n });\n this._values = initial;\n }\n /**\r\n * An array of values in the list.\r\n *\r\n * Do not use this property to add values. Rather use dedicated methods, like\r\n * `push()`, `removeIndex()`, etc.\r\n *\r\n * @readonly\r\n * @return List values\r\n */\n get values() {\n return this._values;\n }\n /**\r\n * Checks if list contains specific item reference.\r\n *\r\n * @param item Item to search for\r\n * @return `true` if found, `false` if not found\r\n */\n contains(value) {\n return this._values.indexOf(value) !== -1;\n }\n /**\r\n * Removes specific item from the list.\r\n *\r\n * @param item An item to remove\r\n */\n removeValue(value) {\n let i = 0;\n let length = this._values.length;\n while (i < length) {\n // TODO handle NaN\n if (this._values[i] === value) {\n this.removeIndex(i);\n --length;\n } else {\n ++i;\n }\n }\n }\n /**\r\n * Searches the list for specific item and returns its index.\r\n *\r\n * @param item An item to search for\r\n * @return Index or -1 if not found\r\n */\n indexOf(value) {\n return $array.indexOf(this._values, value);\n }\n /**\r\n * Number of items in list.\r\n *\r\n * @readonly\r\n * @return Number of items\r\n */\n get length() {\n return this._values.length;\n }\n /**\r\n * Checks if there's a value at specific index.\r\n *\r\n * @param index Index\r\n * @return Value exists?\r\n */\n hasIndex(index) {\n return index >= 0 && index < this._values.length;\n }\n /**\r\n * Returns an item at specified index.\r\n *\r\n * @param index Index\r\n * @return List item\r\n */\n getIndex(index) {\n return this._values[index];\n }\n _onPush(newValue) {\n if (this.events.isEnabled(\"push\")) {\n this.events.dispatch(\"push\", {\n type: \"push\",\n target: this,\n newValue\n });\n }\n }\n _onInsertIndex(index, newValue) {\n if (this.events.isEnabled(\"insertIndex\")) {\n this.events.dispatch(\"insertIndex\", {\n type: \"insertIndex\",\n target: this,\n index,\n newValue\n });\n }\n }\n _onSetIndex(index, oldValue, newValue) {\n if (this.events.isEnabled(\"setIndex\")) {\n this.events.dispatch(\"setIndex\", {\n type: \"setIndex\",\n target: this,\n index,\n oldValue,\n newValue\n });\n }\n }\n _onRemoveIndex(index, oldValue) {\n if (this.events.isEnabled(\"removeIndex\")) {\n this.events.dispatch(\"removeIndex\", {\n type: \"removeIndex\",\n target: this,\n index,\n oldValue\n });\n }\n }\n _onMoveIndex(oldIndex, newIndex, value) {\n if (this.events.isEnabled(\"moveIndex\")) {\n this.events.dispatch(\"moveIndex\", {\n type: \"moveIndex\",\n target: this,\n oldIndex,\n newIndex,\n value\n });\n }\n }\n _onClear(oldValues) {\n if (this.events.isEnabled(\"clear\")) {\n this.events.dispatch(\"clear\", {\n type: \"clear\",\n target: this,\n oldValues\n });\n }\n }\n /**\r\n * Sets value at specific index.\r\n *\r\n * If there's already a value at the index, it is overwritten.\r\n *\r\n * @param index Index\r\n * @param value New value\r\n * @return New value\r\n */\n setIndex(index, value) {\n checkBounds(index, this._values.length);\n const oldValue = this._values[index];\n // Do nothing if the old value and the new value are the same\n if (oldValue !== value) {\n this._values[index] = value;\n this._onSetIndex(index, oldValue, value);\n }\n return oldValue;\n }\n /**\r\n * Adds an item to the list at a specific index, which pushes all the other\r\n * items further down the list.\r\n *\r\n * @param index Index\r\n * @param item An item to add\r\n */\n insertIndex(index, value) {\n checkBounds(index, this._values.length + 1);\n $array.insertIndex(this._values, index, value);\n this._onInsertIndex(index, value);\n return value;\n }\n /**\r\n * Swaps indexes of two items in the list.\r\n *\r\n * @param a Item 1\r\n * @param b Item 2\r\n */\n swap(a, b) {\n const len = this._values.length;\n checkBounds(a, len);\n checkBounds(b, len);\n if (a !== b) {\n const value_a = this._values[a];\n const value_b = this._values[b];\n this._values[a] = value_b;\n this._onSetIndex(a, value_a, value_b);\n this._values[b] = value_a;\n this._onSetIndex(b, value_b, value_a);\n }\n }\n /**\r\n * Removes a value at specific index.\r\n *\r\n * @param index Index of value to remove\r\n * @return Removed value\r\n */\n removeIndex(index) {\n checkBounds(index, this._values.length);\n const oldValue = this._values[index];\n $array.removeIndex(this._values, index);\n this._onRemoveIndex(index, oldValue);\n return oldValue;\n }\n /**\r\n * Moves an item to a specific index within the list.\r\n *\r\n * If the index is not specified it will move the item to the end of the\r\n * list.\r\n *\r\n * @param value Item to move\r\n * @param index Index to place item at\r\n */\n moveValue(value, toIndex) {\n // TODO don't do anything if the desired index is the same as the current index\n let index = this.indexOf(value);\n // TODO remove all old values rather than only the first ?\n if (index !== -1) {\n $array.removeIndex(this._values, index);\n if (toIndex == null) {\n const toIndex = this._values.length;\n this._values.push(value);\n this._onMoveIndex(index, toIndex, value);\n } else {\n $array.insertIndex(this._values, toIndex, value);\n this._onMoveIndex(index, toIndex, value);\n }\n } else if (toIndex == null) {\n this._values.push(value);\n this._onPush(value);\n } else {\n $array.insertIndex(this._values, toIndex, value);\n this._onInsertIndex(toIndex, value);\n }\n return value;\n }\n /**\r\n * Adds an item to the end of the list.\r\n *\r\n * @param item An item to add\r\n */\n push(value) {\n this._values.push(value);\n this._onPush(value);\n return value;\n }\n /**\r\n * Adds an item as a first item in the list.\r\n *\r\n * @param item An item to add\r\n */\n unshift(value) {\n this.insertIndex(0, value);\n return value;\n }\n /**\r\n * Adds multiple items to the list.\r\n *\r\n * @param items An Array of items to add\r\n */\n pushAll(values) {\n $array.each(values, value => {\n this.push(value);\n });\n }\n /**\r\n * Copies and adds items from abother list.\r\n *\r\n * @param source A list top copy items from\r\n */\n copyFrom(source) {\n this.pushAll(source._values);\n }\n /**\r\n * Returns the last item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\n pop() {\n let index = this._values.length - 1;\n return index < 0 ? undefined : this.removeIndex(this._values.length - 1);\n }\n /**\r\n * Returns the first item from the list, and removes it.\r\n *\r\n * @return Item\r\n */\n shift() {\n return this._values.length ? this.removeIndex(0) : undefined;\n }\n /**\r\n * Sets multiple items to the list.\r\n *\r\n * All current items are removed.\r\n *\r\n * @param newArray New items\r\n */\n setAll(newArray) {\n const old = this._values;\n this._values = [];\n this._onClear(old);\n $array.each(newArray, value => {\n this._values.push(value);\n this._onPush(value);\n });\n }\n /**\r\n * Removes all items from the list.\r\n */\n clear() {\n this.setAll([]);\n }\n /**\r\n * Returns an ES6 iterator for the list.\r\n */\n *[Symbol.iterator]() {\n const length = this._values.length;\n for (let i = 0; i < length; ++i) {\n yield this._values[i];\n }\n }\n /**\r\n * Calls `f` for each element in the list.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\n each(f) {\n $array.each(this._values, f);\n }\n /**\r\n * Calls `f` for each element in the list, from right to left.\r\n *\r\n * `f` should have at least one parameter defined which will get a current\r\n * item, with optional second argument - index.\r\n */\n eachReverse(f) {\n $array.eachReverse(this._values, f);\n }\n}\n/**\r\n * A version of a [[List]] where the elements are disposed automatically when\r\n * removed from the list, unless `autoDispose` is set to `false`.\r\n */\nexport class ListAutoDispose extends List {\n constructor() {\n super(...arguments);\n /**\r\n * Automatically disposes elements that are removed from the list.\r\n *\r\n * @default true\r\n */\n Object.defineProperty(this, \"autoDispose\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n _onSetIndex(index, oldValue, newValue) {\n if (this.autoDispose) {\n oldValue.dispose();\n }\n super._onSetIndex(index, oldValue, newValue);\n }\n _onRemoveIndex(index, oldValue) {\n if (this.autoDispose) {\n oldValue.dispose();\n }\n super._onRemoveIndex(index, oldValue);\n }\n _onClear(oldValues) {\n if (this.autoDispose) {\n $array.each(oldValues, x => {\n x.dispose();\n });\n }\n super._onClear(oldValues);\n }\n isDisposed() {\n return this._disposed;\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n if (this.autoDispose) {\n $array.each(this._values, x => {\n x.dispose();\n });\n }\n }\n }\n}\n/**\r\n * A version of a [[List]] that is able to create new elements as well as\r\n * apply additional settings to newly created items.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/list-templates/} for more info\r\n */\nexport class ListTemplate extends ListAutoDispose {\n constructor(template, make) {\n super();\n Object.defineProperty(this, \"template\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"make\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.template = template;\n this.make = make;\n }\n}\n//# sourceMappingURL=List.js.map","import { List } from \"./List\";\nimport * as $array from \"./Array\";\n/**\r\n * A version of [[List]] to hold children of the [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n */\nexport class Children extends List {\n constructor(container) {\n super();\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_container\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._container = container;\n this._events = this.events.onAll(change => {\n if (change.type === \"clear\") {\n $array.each(change.oldValues, x => {\n this._onRemoved(x);\n });\n } else if (change.type === \"push\") {\n this._onInserted(change.newValue);\n } else if (change.type === \"setIndex\") {\n this._onRemoved(change.oldValue);\n this._onInserted(change.newValue, change.index);\n } else if (change.type === \"insertIndex\") {\n this._onInserted(change.newValue, change.index);\n } else if (change.type === \"removeIndex\") {\n this._onRemoved(change.oldValue);\n } else if (change.type === \"moveIndex\") {\n this._onRemoved(change.value);\n this._onInserted(change.value, change.newIndex);\n } else {\n throw new Error(\"Unknown IListEvent type\");\n }\n });\n }\n _onInserted(child, index) {\n child._setParent(this._container, true);\n const childrenDisplay = this._container._childrenDisplay;\n if (index === undefined) {\n childrenDisplay.addChild(child._display);\n } else {\n childrenDisplay.addChildAt(child._display, index);\n }\n }\n _onRemoved(child) {\n this._container._childrenDisplay.removeChild(child._display);\n this._container.markDirtyBounds();\n this._container.markDirty();\n }\n /**\r\n * Returns `true` if obejct is disposed.\r\n */\n isDisposed() {\n return this._disposed;\n }\n /**\r\n * Permanently dispose this object.\r\n */\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n this._events.dispose();\n $array.each(this.values, child => {\n child.dispose();\n });\n }\n }\n}\n//# sourceMappingURL=Children.js.map","/**\r\n * A collection of easing functions\r\n *\r\n * Parts of this collection are taken from D3.js library (https://d3js.org/)\r\n */\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $math from \"./Math\";\n/**\r\n * The functions below are from D3.js library (https://d3js.org/)\r\n *\r\n * ----------------------------------------------------------------------------\r\n * Copyright 2017 Mike Bostock\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n *\r\n * 1. Redistributions of source code must retain the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer.\r\n *\r\n * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n *\tthis list of conditions and the following disclaimer in the documentation\r\n *\tand/or other materials provided with the distribution.\r\n *\r\n * 3. Neither the name of the copyright holder nor the names of its\r\n *\tcontributors may be used to endorse or promote products derived from this\r\n *\tsoftware without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n * POSSIBILITY OF SUCH DAMAGE.\r\n * ----------------------------------------------------------------------------\r\n * @hidden\r\n */\n/**\r\n */\nexport function linear(t) {\n return t;\n}\nexport function quad(t) {\n return t * t;\n}\nexport function cubic(t) {\n return t * t * t;\n}\nexport function pow(t, e) {\n return Math.pow(t, e);\n}\nexport function exp(t) {\n return Math.pow(2, 10 * t - 10);\n}\nexport function sine(t) {\n return 1 - Math.cos(t * $math.HALFPI);\n}\nexport function circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n/**\r\n * ============================================================================\r\n * TRANSFORMERS\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n */\nexport function yoyo(ease) {\n return function (t) {\n if (t < 0.5) {\n return ease(t * 2.0);\n } else {\n return ease((1.0 - t) * 2.0);\n }\n };\n}\nexport function out(ease) {\n return function (t) {\n return 1.0 - ease(1.0 - t);\n };\n}\nexport function inOut(ease) {\n return function (t) {\n if (t <= 0.5) {\n return ease(t * 2.0) / 2.0;\n } else {\n return 1.0 - ease((1.0 - t) * 2.0) / 2.0;\n }\n };\n}\n/**\r\n * ============================================================================\r\n * BOUNCE\r\n * ============================================================================\r\n * @hidden\r\n */\nlet 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;\nexport function bounce(t) {\n return 1 - bounceOut(1 - t);\n}\n/**\r\n * @ignore\r\n */\nfunction bounceOut(t) {\n t = t;\n if (t < b1) {\n return b0 * t * t;\n } else if (t < b3) {\n return b0 * (t -= b2) * t + b4;\n } else if (t < b6) {\n return b0 * (t -= b5) * t + b7;\n } else {\n return b0 * (t -= b8) * t + b9;\n }\n}\n/**\r\n * ============================================================================\r\n * ELASTIC\r\n * ============================================================================\r\n * @hidden\r\n */\n/**\r\n * @ignore\r\n */\nlet tau = 2 * Math.PI;\n/**\r\n * @ignore\r\n */\nlet amplitude = 1;\n/**\r\n * @ignore\r\n */\nlet period = 0.3 / tau;\n/**\r\n * @ignore\r\n */\nlet s = Math.asin(1 / amplitude) * period;\nexport function elastic(t) {\n let v = t;\n return amplitude * Math.pow(2, 10 * --v) * Math.sin((s - v) / period);\n}\n//# sourceMappingURL=Ease.js.map","import * as $object from \"./Object\";\nimport * as $ease from \"./Ease\";\n/**\r\n * An object representing a collection of setting values to apply as required.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\nexport class State {\n constructor(entity, settings) {\n Object.defineProperty(this, \"_entity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_userSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n this._entity = entity;\n this._settings = settings;\n $object.each(settings, key => {\n this._userSettings[key] = true;\n });\n }\n get(key, fallback) {\n const value = this._settings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n /**\r\n * @ignore\r\n */\n setRaw(key, value) {\n this._settings[key] = value;\n }\n /**\r\n * Sets a setting `value` for the specified `key` to be set when the state\r\n * is applied.\r\n *\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\n set(key, value) {\n this._userSettings[key] = true;\n this.setRaw(key, value);\n }\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\n remove(key) {\n delete this._userSettings[key];\n delete this._settings[key];\n }\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\n setAll(settings) {\n $object.keys(settings).forEach(key => {\n this.set(key, settings[key]);\n });\n }\n _eachSetting(f) {\n $object.each(this._settings, f);\n }\n /**\r\n * Applies the state to the target element.\r\n *\r\n * All setting values are set immediately.\r\n */\n apply() {\n const seen = {};\n seen[\"stateAnimationEasing\"] = true;\n seen[\"stateAnimationDuration\"] = true;\n const defaultState = this._entity.states.lookup(\"default\");\n this._eachSetting((key, value) => {\n if (!seen[key]) {\n seen[key] = true;\n // save values to default state\n if (this !== defaultState) {\n if (!(key in defaultState._settings)) {\n defaultState._settings[key] = this._entity.get(key);\n }\n }\n this._entity.set(key, value);\n }\n });\n }\n /**\r\n * Applies the state to the target element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @return Animations\r\n */\n applyAnimate(duration) {\n if (duration == null) {\n duration = this._settings.stateAnimationDuration;\n }\n if (duration == null) {\n duration = this.get(\"stateAnimationDuration\", this._entity.get(\"stateAnimationDuration\", 0));\n }\n let easing = this._settings.stateAnimationEasing;\n if (easing == null) {\n easing = this.get(\"stateAnimationEasing\", this._entity.get(\"stateAnimationEasing\", $ease.cubic));\n }\n const defaultState = this._entity.states.lookup(\"default\");\n const seen = {};\n seen[\"stateAnimationEasing\"] = true;\n seen[\"stateAnimationDuration\"] = true;\n const animations = {};\n this._eachSetting((key, value) => {\n if (!seen[key]) {\n seen[key] = true;\n // save values to default state\n if (this != defaultState) {\n if (!(key in defaultState._settings)) {\n defaultState._settings[key] = this._entity.get(key);\n }\n }\n const animation = this._entity.animate({\n key: key,\n to: value,\n duration: duration,\n easing: easing\n });\n if (animation) {\n animations[key] = animation;\n }\n }\n });\n return animations;\n }\n}\n/**\r\n * Collection of [[State]] objects for an element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/states/} for more info\r\n */\nexport class States {\n constructor(entity) {\n Object.defineProperty(this, \"_states\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_entity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._entity = entity;\n }\n /**\r\n * Checks if a state by `name` exists. Returns it there is one.\r\n *\r\n * @param name State name\r\n * @return State\r\n */\n lookup(name) {\n return this._states[name];\n }\n /**\r\n * Sets supplied `settings` on a state by the `name`.\r\n *\r\n * If such state does not yet exists, it is created.\r\n *\r\n * @param name State name\r\n * @param settings Settings\r\n * @return New State\r\n */\n create(name, settings) {\n const state = this._states[name];\n if (state) {\n state.setAll(settings);\n return state;\n } else {\n const state = new State(this._entity, settings);\n this._states[name] = state;\n return state;\n }\n }\n /**\r\n * Removes the state called `name`.\r\n *\r\n * @param name State name\r\n */\n remove(name) {\n delete this._states[name];\n }\n /**\r\n * Applies a named state to the target element.\r\n *\r\n * @param newState State name\r\n */\n apply(newState) {\n const state = this._states[newState];\n if (state) {\n state.apply();\n }\n this._entity._applyState(newState);\n }\n /**\r\n * Applies a named state to the element.\r\n *\r\n * Returns an object representing all [[Animation]] objects created for\r\n * each setting key transition.\r\n *\r\n * @param newState State name\r\n * @return Animations\r\n */\n applyAnimate(newState, duration) {\n let animations;\n const state = this._states[newState];\n if (state) {\n animations = state.applyAnimate(duration);\n }\n this._entity._applyStateAnimated(newState, duration);\n return animations;\n }\n}\n//# sourceMappingURL=States.js.map","/**\r\n * @ignore\r\n */\nexport function compare(left, right) {\n if (left === right) {\n return 0;\n } else if (left < right) {\n return -1;\n } else {\n return 1;\n }\n}\n/**\r\n * @ignore\r\n */\nexport function compareArray(left, right, f) {\n const leftLength = left.length;\n const rightLength = right.length;\n const length = Math.min(leftLength, rightLength);\n for (let i = 0; i < length; ++i) {\n const order = f(left[i], right[i]);\n if (order !== 0) {\n return order;\n }\n }\n return compare(leftLength, rightLength);\n}\n/**\r\n * @ignore\r\n */\nexport function reverse(order) {\n if (order < 0) {\n return 1;\n } else if (order > 0) {\n return -1;\n } else {\n return 0;\n }\n}\n/**\r\n * @ignore\r\n */\nexport function compareNumber(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else {\n return 1;\n }\n}\n//# sourceMappingURL=Order.js.map","import { Disposer } from \"./Disposer\";\nimport { EventDispatcher } from \"./EventDispatcher\";\nimport { AnimationState, getInterpolate } from \"./Animation\";\nimport { States } from \"./States\";\nimport { registry } from \"../Registry\";\nimport * as $object from \"./Object\";\nimport * as $ease from \"./Ease\";\nimport * as $array from \"./Array\";\nimport * as $order from \"./Order\";\n/**\r\n * Allows to dynamically modify setting value of its target element.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\nexport class Adapters {\n constructor(entity) {\n Object.defineProperty(this, \"_entity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_callbacks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_disabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n this._entity = entity;\n }\n /**\r\n * Add a function (`callback`) that will modify value for setting `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/adapters/} for more info\r\n */\n add(key, callback) {\n let callbacks = this._callbacks[key];\n if (callbacks === undefined) {\n callbacks = this._callbacks[key] = [];\n }\n callbacks.push(callback);\n this._entity._markDirtyKey(key);\n return new Disposer(() => {\n if ($array.removeFirst(callbacks, callback)) {\n this._entity._markDirtyKey(key);\n }\n });\n }\n /**\r\n * Removes all adapters for the specific key.\r\n *\r\n * @since 5.1.0\r\n */\n remove(key) {\n const callbacks = this._callbacks[key];\n if (callbacks !== undefined) {\n delete this._callbacks[key];\n if (callbacks.length !== 0) {\n this._entity._markDirtyKey(key);\n }\n }\n }\n /**\r\n * Enables (previously disabled) adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\n enable(key) {\n if (this._disabled[key]) {\n delete this._disabled[key];\n this._entity._markDirtyKey(key);\n }\n }\n /**\r\n * Disables all adapters for specific key.\r\n *\r\n * @since 5.1.0\r\n */\n disable(key) {\n if (!this._disabled[key]) {\n this._disabled[key] = true;\n this._entity._markDirtyKey(key);\n }\n }\n /**\r\n * @ignore\r\n */\n fold(key, value) {\n if (!this._disabled[key]) {\n const callbacks = this._callbacks[key];\n if (callbacks !== undefined) {\n for (let i = 0, len = callbacks.length; i < len; ++i) {\n value = callbacks[i](value, this._entity, key);\n }\n }\n }\n return value;\n }\n}\n/**\r\n * Animation object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/} for more info\r\n */\nexport class Animation {\n constructor(animation, from, to, duration, easing, loops, startingTime) {\n Object.defineProperty(this, \"_animation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_from\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_to\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_duration\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_easing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_loops\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_interpolate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_oldTime\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_time\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_stopped\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_playing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventDispatcher()\n });\n this._animation = animation;\n this._from = from;\n this._to = to;\n this._duration = duration;\n this._easing = easing;\n this._loops = loops;\n this._interpolate = getInterpolate(from, to);\n this._oldTime = startingTime;\n }\n get to() {\n return this._to;\n }\n get from() {\n return this._from;\n }\n get playing() {\n return this._playing;\n }\n get stopped() {\n return this._stopped;\n }\n stop() {\n if (!this._stopped) {\n this._stopped = true;\n this._playing = false;\n if (this.events.isEnabled(\"stopped\")) {\n this.events.dispatch(\"stopped\", {\n type: \"stopped\",\n target: this\n });\n }\n }\n }\n pause() {\n this._playing = false;\n this._oldTime = null;\n }\n play() {\n if (!this._stopped && !this._playing) {\n this._playing = true;\n this._animation._startAnimation();\n }\n }\n get percentage() {\n return this._time / this._duration;\n }\n waitForStop() {\n return new Promise((resolve, _reject) => {\n if (this._stopped) {\n resolve();\n } else {\n const listener = () => {\n stopped.dispose();\n resolve();\n };\n const stopped = this.events.on(\"stopped\", listener);\n }\n });\n }\n _checkEnded() {\n if (this._loops > 1) {\n --this._loops;\n return false;\n } else {\n return true;\n }\n }\n _run(currentTime) {\n if (this._oldTime !== null) {\n this._time += currentTime - this._oldTime;\n if (this._time > this._duration) {\n this._time = this._duration;\n }\n }\n this._oldTime = currentTime;\n }\n _reset(currentTime) {\n this._oldTime = currentTime;\n this._time = 0;\n }\n _value(diff) {\n return this._interpolate(this._easing(diff), this._from, this._to);\n }\n}\n/**\r\n * @ignore\r\n */\nlet counter = 0;\n/**\r\n * Base class for [[Entity]] objects that support Settings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\nexport class Settings {\n constructor(settings) {\n /**\r\n * Unique ID.\r\n */\n Object.defineProperty(this, \"uid\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: ++counter\n });\n Object.defineProperty(this, \"_settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_privateSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_settingEvents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_privateSettingEvents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_prevSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_prevPrivateSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_animatingSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_animatingPrivateSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n // TODO move this into Entity\n Object.defineProperty(this, \"_userProperties\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n this._settings = settings;\n }\n _checkDirty() {\n $object.keys(this._settings).forEach(key => {\n this._userProperties[key] = true;\n this._markDirtyKey(key);\n });\n }\n /**\r\n * @ignore\r\n */\n resetUserSettings() {\n this._userProperties = {};\n }\n _runAnimation(currentTime) {\n let state = AnimationState.Stopped;\n if (!this.isDisposed()) {\n let playing = false;\n let paused = false;\n $object.each(this._animatingSettings, (key, animation) => {\n if (animation.stopped) {\n this._stopAnimation(key);\n } else if (animation.playing) {\n animation._run(currentTime);\n const diff = animation.percentage;\n if (diff >= 1) {\n if (animation._checkEnded()) {\n this.set(key, animation._value(1));\n } else {\n playing = true;\n animation._reset(currentTime);\n this._set(key, animation._value(1));\n }\n } else {\n playing = true;\n this._set(key, animation._value(diff));\n }\n } else {\n paused = true;\n }\n });\n $object.each(this._animatingPrivateSettings, (key, animation) => {\n if (animation.stopped) {\n this._stopAnimationPrivate(key);\n } else if (animation.playing) {\n animation._run(currentTime);\n const diff = animation.percentage;\n if (diff >= 1) {\n if (animation._checkEnded()) {\n this.setPrivate(key, animation._value(1));\n } else {\n playing = true;\n animation._reset(currentTime);\n this._setPrivate(key, animation._value(1));\n }\n } else {\n playing = true;\n this._setPrivate(key, animation._value(diff));\n }\n } else {\n paused = true;\n }\n });\n if (playing) {\n state = AnimationState.Playing;\n } else if (paused) {\n state = AnimationState.Paused;\n }\n }\n return state;\n }\n _markDirtyKey(_key) {\n this.markDirty();\n }\n _markDirtyPrivateKey(_key) {\n this.markDirty();\n }\n /**\r\n * Sets a callback function to invoke when specific key of settings changes\r\n * or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\n on(key, callback) {\n let events = this._settingEvents[key];\n if (events === undefined) {\n events = this._settingEvents[key] = [];\n }\n events.push(callback);\n return new Disposer(() => {\n $array.removeFirst(events, callback);\n if (events.length === 0) {\n delete this._settingEvents[key];\n }\n });\n }\n /**\r\n * Removes a callback for when value of a setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\n off(key, callback) {\n let events = this._settingEvents[key];\n if (events !== undefined && callback !== undefined) {\n $array.removeFirst(events, callback);\n } else {\n delete this._settingEvents[key];\n }\n }\n /**\r\n * Sets a callback function to invoke when specific key of private settings\r\n * changes or is set.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @return Disposer for event\r\n */\n onPrivate(key, callback) {\n let events = this._privateSettingEvents[key];\n if (events === undefined) {\n events = this._privateSettingEvents[key] = [];\n }\n events.push(callback);\n return new Disposer(() => {\n $array.removeFirst(events, callback);\n if (events.length === 0) {\n delete this._privateSettingEvents[key];\n }\n });\n }\n /**\r\n * Removes a callback for when value of a private setting changes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/#Settings_value_change} for more info\r\n * @param key Private settings key\r\n * @param callback Callback\r\n * @since 5.9.2\r\n */\n offPrivate(key, callback) {\n let events = this._privateSettingEvents[key];\n if (events !== undefined && callback !== undefined) {\n $array.removeFirst(events, callback);\n } else {\n delete this._privateSettingEvents[key];\n }\n }\n /**\r\n * @ignore\r\n */\n getRaw(key, fallback) {\n const value = this._settings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n /**\r\n * Returns `true` if the setting exists.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Settings key\r\n * @return {boolean} Key exists\r\n */\n has(key) {\n return key in this._settings;\n }\n get(key, fallback) {\n return this.getRaw(key, fallback);\n }\n _sendKeyEvent(key, value) {\n const events = this._settingEvents[key];\n if (events !== undefined) {\n $array.each(events, callback => {\n callback(value, this, key);\n });\n }\n }\n _sendPrivateKeyEvent(key, value) {\n const events = this._privateSettingEvents[key];\n if (events !== undefined) {\n $array.each(events, callback => {\n callback(value, this, key);\n });\n }\n }\n /**\r\n * @ignore\r\n */\n _setRaw(key, old, value) {\n this._prevSettings[key] = old;\n this._sendKeyEvent(key, value);\n }\n /**\r\n * @ignore\r\n */\n setRaw(key, value) {\n const old = this._settings[key];\n this._settings[key] = value;\n if (old !== value) {\n this._setRaw(key, old, value);\n }\n }\n /**\r\n * @ignore\r\n */\n _set(key, value) {\n const old = this._settings[key];\n this._settings[key] = value;\n if (old !== value) {\n this._setRaw(key, old, value);\n this._markDirtyKey(key);\n }\n }\n _stopAnimation(key) {\n const animation = this._animatingSettings[key];\n if (animation) {\n delete this._animatingSettings[key];\n animation.stop();\n }\n }\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\n set(key, value) {\n this._set(key, value);\n this._stopAnimation(key);\n return value;\n }\n /**\r\n * Removes a setting value for the specified `key`;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\n remove(key) {\n if (key in this._settings) {\n this._prevSettings[key] = this._settings[key];\n delete this._settings[key];\n this._sendKeyEvent(key, undefined);\n this._markDirtyKey(key);\n }\n this._stopAnimation(key);\n }\n /**\r\n * Removes all keys;\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n */\n removeAll() {\n $array.each($object.keys(this._settings), key => {\n this.remove(key);\n });\n }\n /**\r\n * Returns a value of a private setting.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/#Private_settings} for more info\r\n */\n getPrivate(key, fallback) {\n const value = this._privateSettings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n /**\r\n * @ignore\r\n */\n _setPrivateRaw(key, old, value) {\n this._prevPrivateSettings[key] = old;\n this._sendPrivateKeyEvent(key, value);\n }\n /**\r\n * @ignore\r\n */\n setPrivateRaw(key, value) {\n const old = this._privateSettings[key];\n this._privateSettings[key] = value;\n if (old !== value) {\n this._setPrivateRaw(key, old, value);\n }\n }\n /**\r\n * @ignore\r\n */\n _setPrivate(key, value) {\n const old = this._privateSettings[key];\n this._privateSettings[key] = value;\n if (old !== value) {\n this._setPrivateRaw(key, old, value);\n this._markDirtyPrivateKey(key);\n }\n }\n _stopAnimationPrivate(key) {\n const animation = this._animatingPrivateSettings[key];\n if (animation) {\n animation.stop();\n delete this._animatingPrivateSettings[key];\n }\n }\n /**\r\n * @ignore\r\n */\n setPrivate(key, value) {\n this._setPrivate(key, value);\n this._stopAnimationPrivate(key);\n return value;\n }\n /**\r\n * @ignore\r\n */\n removePrivate(key) {\n if (key in this._privateSettings) {\n this._prevPrivateSettings[key] = this._privateSettings[key];\n delete this._privateSettings[key];\n this._markDirtyPrivateKey(key);\n }\n this._stopAnimationPrivate(key);\n }\n /**\r\n * Sets multiple settings at once.\r\n *\r\n * `settings` must be an object with key: value pairs.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param settings Settings\r\n */\n setAll(settings) {\n $object.each(settings, (key, value) => {\n this.set(key, value);\n });\n }\n /**\r\n * Animates setting values from current/start values to new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/animations/#Animating_settings} for more info\r\n * @param options Animation options\r\n * @return Animation object\r\n */\n animate(options) {\n const key = options.key;\n const to = options.to;\n const duration = options.duration || 0;\n const loops = options.loops || 1;\n const from = options.from === undefined ? this.get(key) : options.from;\n const easing = options.easing === undefined ? $ease.linear : options.easing;\n if (duration === 0) {\n this.set(key, to);\n } else {\n if (from === undefined || from === to) {\n this.set(key, to);\n } else {\n this.set(key, from);\n const animation = this._animatingSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n this._startAnimation();\n return animation;\n }\n }\n const animation = new Animation(this, from, to, duration, easing, loops, null);\n animation.stop();\n return animation;\n }\n /**\r\n * @ignore\r\n */\n animatePrivate(options) {\n const key = options.key;\n const to = options.to;\n const duration = options.duration || 0;\n const loops = options.loops || 1;\n const from = options.from === undefined ? this.getPrivate(key) : options.from;\n const easing = options.easing === undefined ? $ease.linear : options.easing;\n if (duration === 0) {\n this.setPrivate(key, to);\n } else {\n if (from === undefined || from === to) {\n this.setPrivate(key, to);\n } else {\n this.setPrivate(key, from);\n const animation = this._animatingPrivateSettings[key] = new Animation(this, from, to, duration, easing, loops, this._animationTime());\n this._startAnimation();\n return animation;\n }\n }\n const animation = new Animation(this, from, to, duration, easing, loops, null);\n animation.stop();\n return animation;\n }\n _dispose() {}\n /**\r\n * Returns `true` if this element is disposed.\r\n *\r\n * @return Disposed\r\n */\n isDisposed() {\n return this._disposed;\n }\n /**\r\n * Disposes this object.\r\n */\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n this._dispose();\n }\n }\n}\n/**\r\n * Base class.\r\n *\r\n * @important\r\n */\nexport class Entity extends Settings {\n /**\r\n * IMPORTANT! Do not instantiate this class via `new Class()` syntax.\r\n *\r\n * Use static method `Class.new()` instead.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @ignore\r\n */\n constructor(root, settings, isReal) {\n let templates = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n super(settings);\n Object.defineProperty(this, \"_root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_user_id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n }); // for testing purposes\n Object.defineProperty(this, \"states\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new States(this)\n });\n Object.defineProperty(this, \"adapters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Adapters(this)\n });\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._createEvents()\n });\n Object.defineProperty(this, \"_userPrivateProperties\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dirtyPrivate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_template\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Templates for the themes\n Object.defineProperty(this, \"_templates\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n // Internal templates which can be overridden by the user's templates\n Object.defineProperty(this, \"_internalTemplates\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Default themes which can be overridden by the user's themes\n Object.defineProperty(this, \"_defaultThemes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n // Disposers for all of the templates\n Object.defineProperty(this, \"_templateDisposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n // Whether the template setup function should be run\n Object.defineProperty(this, \"_runSetup\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_disposerProperties\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n if (!isReal) {\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n }\n this._root = root;\n this._internalTemplates = templates;\n if (settings.id) {\n this._registerId(settings.id);\n }\n }\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\n static new(root, settings, template) {\n const x = new this(root, settings, true);\n x._template = template;\n x._afterNew();\n return x;\n }\n static _new(root, settings) {\n let templates = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n const x = new this(root, settings, true, templates);\n x._afterNew();\n return x;\n }\n _afterNew() {\n this._checkDirty();\n let shouldApply = false;\n const template = this._template;\n if (template) {\n shouldApply = true;\n template._setObjectTemplate(this);\n }\n $array.each(this._internalTemplates, template => {\n shouldApply = true;\n template._setObjectTemplate(this);\n });\n if (shouldApply) {\n this._applyTemplates(false);\n }\n this.states.create(\"default\", {});\n this._setDefaults();\n }\n // This is the same as _afterNew, except it also applies the themes.\n // This should only be used for classes which don't have a parent (because they extend from Entity and not Sprite).\n _afterNewApplyThemes() {\n this._checkDirty();\n const template = this._template;\n if (template) {\n template._setObjectTemplate(this);\n }\n $array.each(this._internalTemplates, template => {\n template._setObjectTemplate(this);\n });\n this.states.create(\"default\", {});\n this._setDefaults();\n this._applyThemes();\n }\n _createEvents() {\n return new EventDispatcher();\n }\n /**\r\n * @ignore\r\n */\n get classNames() {\n return this.constructor.classNames;\n }\n /**\r\n * @ignore\r\n */\n get className() {\n return this.constructor.className;\n }\n _setDefaults() {}\n _setDefaultFn(key, f) {\n const value = this.get(key);\n if (value) {\n return value;\n } else {\n const value = f();\n this.set(key, value);\n return value;\n }\n }\n _setDefault(key, value) {\n if (!this.has(key)) {\n super.set(key, value);\n }\n }\n _setRawDefault(key, value) {\n if (!this.has(key)) {\n super.setRaw(key, value);\n }\n }\n _clearDirty() {\n $object.keys(this._dirty).forEach(key => {\n this._dirty[key] = false;\n });\n $object.keys(this._dirtyPrivate).forEach(key => {\n this._dirtyPrivate[key] = false;\n });\n }\n /**\r\n * @ignore\r\n */\n isDirty(key) {\n return !!this._dirty[key];\n }\n /**\r\n * @ignore\r\n */\n isPrivateDirty(key) {\n return !!this._dirtyPrivate[key];\n }\n _markDirtyKey(key) {\n this._dirty[key] = true;\n super._markDirtyKey(key);\n }\n _markDirtyPrivateKey(key) {\n this._dirtyPrivate[key] = true;\n super._markDirtyKey(key);\n }\n /**\r\n * Checks if element is of certain class (or inherits one).\r\n *\r\n * @param type Class name to check\r\n * @return {boolean} Is of class?\r\n */\n isType(type) {\n return this.classNames.indexOf(type) !== -1;\n }\n _pushPropertyDisposer(key, disposer) {\n let disposers = this._disposerProperties[key];\n if (disposers === undefined) {\n disposers = this._disposerProperties[key] = [];\n }\n disposers.push(disposer);\n return disposer;\n }\n _disposeProperty(key) {\n const disposers = this._disposerProperties[key];\n if (disposers !== undefined) {\n $array.each(disposers, disposer => {\n disposer.dispose();\n });\n delete this._disposerProperties[key];\n }\n }\n /**\r\n * @todo needs description\r\n * @param value Template\r\n */\n set template(value) {\n const template = this._template;\n if (template !== value) {\n this._template = value;\n if (template) {\n template._removeObjectTemplate(this);\n }\n if (value) {\n value._setObjectTemplate(this);\n }\n this._applyTemplates();\n }\n }\n get template() {\n return this._template;\n }\n /**\r\n * @ignore\r\n */\n markDirty() {\n this._root._addDirtyEntity(this);\n }\n _startAnimation() {\n this._root._addAnimation(this);\n }\n _animationTime() {\n return this._root.animationTime;\n }\n _applyState(_name) {}\n _applyStateAnimated(_name, _duration) {}\n get(key, fallback) {\n const value = this.adapters.fold(key, this._settings[key]);\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n /**\r\n * @ignore\r\n */\n isUserSetting(key) {\n return this._userProperties[key] || false;\n }\n /**\r\n * Sets a setting `value` for the specified `key`, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\n set(key, value) {\n this._userProperties[key] = true;\n return super.set(key, value);\n }\n /**\r\n * @ignore\r\n */\n setRaw(key, value) {\n this._userProperties[key] = true;\n super.setRaw(key, value);\n }\n /**\r\n * Sets a setting `value` for the specified `key` only if the value for this key was not set previously using set method, and returns the same `value`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n * @param value Setting value\r\n * @return Setting value\r\n */\n _setSoft(key, value) {\n if (!this._userProperties[key]) {\n return super.set(key, value);\n }\n return value;\n }\n /**\r\n * Removes a setting value for the specified `key`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/settings/} for more info\r\n * @param key Setting key\r\n */\n remove(key) {\n delete this._userProperties[key];\n this._removeTemplateProperty(key);\n }\n /**\r\n * @ignore\r\n */\n setPrivate(key, value) {\n this._userPrivateProperties[key] = true;\n return super.setPrivate(key, value);\n }\n /**\r\n * @ignore\r\n */\n setPrivateRaw(key, value) {\n this._userPrivateProperties[key] = true;\n super.setPrivateRaw(key, value);\n }\n /**\r\n * @ignore\r\n */\n removePrivate(key) {\n delete this._userPrivateProperties[key];\n this._removeTemplatePrivateProperty(key);\n }\n _setTemplateProperty(template, key, value) {\n if (!this._userProperties[key]) {\n const match = this._findTemplateByKey(key);\n if (template === match) {\n super.set(key, value);\n }\n }\n }\n _setTemplatePrivateProperty(template, key, value) {\n if (!this._userPrivateProperties[key]) {\n const match = this._findTemplateByPrivateKey(key);\n if (template === match) {\n super.setPrivate(key, value);\n }\n }\n }\n _removeTemplateProperty(key) {\n if (!this._userProperties[key]) {\n const match = this._findTemplateByKey(key);\n if (match) {\n // TODO don't stop the animation if the property didn't change\n super.set(key, match._settings[key]);\n } else {\n super.remove(key);\n }\n }\n }\n _removeTemplatePrivateProperty(key) {\n if (!this._userPrivateProperties[key]) {\n const match = this._findTemplateByPrivateKey(key);\n if (match) {\n // TODO don't stop the animation if the property didn't change\n super.setPrivate(key, match._privateSettings[key]);\n } else {\n super.removePrivate(key);\n }\n }\n }\n _walkParents(f) {\n f(this._root._rootContainer);\n f(this);\n }\n // TODO faster version of this method which is specialized to just 1 key\n _applyStateByKey(name) {\n const other = this.states.create(name, {});\n const seen = {};\n this._eachTemplate(template => {\n const state = template.states.lookup(name);\n if (state) {\n state._apply(other, seen);\n }\n });\n $object.each(other._settings, key => {\n if (!seen[key] && !other._userSettings[key]) {\n other.remove(key);\n }\n });\n }\n _applyTemplate(template, state) {\n this._templateDisposers.push(template._apply(this, state));\n $object.each(template._settings, (key, value) => {\n if (!state.settings[key] && !this._userProperties[key]) {\n state.settings[key] = true;\n super.set(key, value);\n }\n });\n $object.each(template._privateSettings, (key, value) => {\n if (!state.privateSettings[key] && !this._userPrivateProperties[key]) {\n state.privateSettings[key] = true;\n super.setPrivate(key, value);\n }\n });\n if (this._runSetup && template.setup) {\n this._runSetup = false;\n template.setup(this);\n }\n }\n /**\r\n * Calls the closure with each template and returns the first template which is true\r\n */\n _findStaticTemplate(f) {\n if (this._template) {\n if (f(this._template)) {\n return this._template;\n }\n }\n }\n _eachTemplate(f) {\n this._findStaticTemplate(template => {\n f(template);\n return false;\n });\n // _internalTemplates is sorted with most specific to the right\n $array.eachReverse(this._internalTemplates, f);\n // _templates is sorted with most specific to the left\n $array.each(this._templates, f);\n }\n _applyTemplates() {\n let remove = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n if (remove) {\n this._disposeTemplates();\n }\n const state = {\n settings: {},\n privateSettings: {},\n states: {}\n };\n this._eachTemplate(template => {\n this._applyTemplate(template, state);\n });\n if (remove) {\n $object.each(this._settings, key => {\n if (!this._userProperties[key] && !state.settings[key]) {\n super.remove(key);\n }\n });\n $object.each(this._privateSettings, key => {\n if (!this._userPrivateProperties[key] && !state.privateSettings[key]) {\n super.removePrivate(key);\n }\n });\n }\n }\n _findTemplate(f) {\n const value = this._findStaticTemplate(f);\n if (value === undefined) {\n // _internalTemplates is sorted with most specific to the right\n const value = $array.findReverse(this._internalTemplates, f);\n if (value === undefined) {\n // _templates is sorted with most specific to the left\n return $array.find(this._templates, f);\n } else {\n return value;\n }\n } else {\n return value;\n }\n }\n _findTemplateByKey(key) {\n return this._findTemplate(template => {\n return key in template._settings;\n });\n }\n _findTemplateByPrivateKey(key) {\n return this._findTemplate(template => {\n return key in template._privateSettings;\n });\n }\n _disposeTemplates() {\n $array.each(this._templateDisposers, disposer => {\n disposer.dispose();\n });\n this._templateDisposers.length = 0;\n }\n _removeTemplates() {\n $array.each(this._templates, template => {\n template._removeObjectTemplate(this);\n });\n this._templates.length = 0;\n }\n _applyThemes() {\n let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n let isConnected = false;\n const defaults = [];\n let themes = [];\n const themeTags = new Set();\n const tags = this.get(\"themeTagsSelf\");\n if (tags) {\n $array.each(tags, tag => {\n themeTags.add(tag);\n });\n }\n this._walkParents(entity => {\n if (entity === this._root._rootContainer) {\n isConnected = true;\n }\n if (entity._defaultThemes.length > 0) {\n defaults.push(entity._defaultThemes);\n }\n const theme = entity.get(\"themes\");\n if (theme) {\n themes.push(theme);\n }\n const tags = entity.get(\"themeTags\");\n if (tags) {\n $array.each(tags, tag => {\n themeTags.add(tag);\n });\n }\n });\n themes = defaults.concat(themes);\n this._removeTemplates();\n if (isConnected || force) {\n $array.eachReverse(this.classNames, name => {\n const allRules = [];\n $array.each(themes, themes => {\n $array.each(themes, theme => {\n const rules = theme._lookupRules(name);\n if (rules) {\n $array.eachReverse(rules, rule => {\n const matches = rule.tags.every(tag => {\n return themeTags.has(tag);\n });\n if (matches) {\n const result = $array.getFirstSortedIndex(allRules, x => {\n const order = $order.compare(rule.tags.length, x.tags.length);\n if (order === 0) {\n return $order.compareArray(rule.tags, x.tags, $order.compare);\n } else {\n return order;\n }\n });\n allRules.splice(result.index, 0, rule);\n }\n });\n }\n });\n });\n $array.each(allRules, rule => {\n this._templates.push(rule.template);\n rule.template._setObjectTemplate(this);\n });\n });\n }\n this._applyTemplates();\n if (isConnected || force) {\n // This causes it to only run the setup function the first time that the themes are applied\n this._runSetup = false;\n }\n return isConnected || force;\n }\n _changed() {}\n _beforeChanged() {\n if (this.isDirty(\"id\")) {\n const id = this.get(\"id\");\n if (id) {\n this._registerId(id);\n }\n const prevId = this._prevSettings.id;\n if (prevId) {\n delete registry.entitiesById[prevId];\n }\n }\n }\n _registerId(id) {\n if (registry.entitiesById[id] && registry.entitiesById[id] !== this) {\n throw new Error(\"An entity with id \\\"\" + id + \"\\\" already exists.\");\n }\n registry.entitiesById[id] = this;\n }\n _afterChanged() {}\n /**\r\n * @ignore\r\n */\n addDisposer(disposer) {\n this._disposers.push(disposer);\n return disposer;\n }\n _dispose() {\n super._dispose();\n const template = this._template;\n if (template) {\n template._removeObjectTemplate(this);\n }\n $array.each(this._internalTemplates, template => {\n template._removeObjectTemplate(this);\n });\n this._removeTemplates();\n this._disposeTemplates();\n this.events.dispose();\n this._disposers.forEach(x => {\n x.dispose();\n });\n $object.each(this._disposerProperties, (_, disposers) => {\n $array.each(disposers, disposer => {\n disposer.dispose();\n });\n });\n const id = this.get(\"id\");\n if (id) {\n delete registry.entitiesById[id];\n }\n }\n /**\r\n * Creates and returns a \"disposable\" timeout.\r\n *\r\n * @param fn Callback\r\n * @param delay Delay in milliseconds\r\n * @return Timeout disposer\r\n */\n setTimeout(fn, delay) {\n const id = setTimeout(() => {\n this.removeDispose(disposer);\n fn();\n }, delay);\n const disposer = new Disposer(() => {\n clearTimeout(id);\n });\n this._disposers.push(disposer);\n return disposer;\n }\n /**\r\n * @ignore\r\n */\n removeDispose(target) {\n if (!this.isDisposed()) {\n let index = $array.indexOf(this._disposers, target);\n if (index > -1) {\n this._disposers.splice(index, 1);\n }\n }\n target.dispose();\n }\n /**\r\n * @ignore\r\n */\n hasTag(tag) {\n return $array.indexOf(this.get(\"themeTags\", []), tag) !== -1;\n }\n /**\r\n * @ignore\r\n */\n addTag(tag) {\n if (!this.hasTag(tag)) {\n const tags = this.get(\"themeTags\", []);\n tags.push(tag);\n this.set(\"themeTags\", tags);\n }\n }\n /**\r\n * @ignore\r\n */\n removeTag(tag) {\n if (this.hasTag(tag)) {\n const tags = this.get(\"themeTags\", []);\n $array.remove(tags, tag);\n this.set(\"themeTags\", tags);\n }\n }\n _t(text, locale) {\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key2 = 2; _key2 < _len; _key2++) {\n rest[_key2 - 2] = arguments[_key2];\n }\n return this._root.language.translate(text, locale, ...rest);\n }\n /**\r\n * An instance of [[Root]] object.\r\n *\r\n * @readonly\r\n * @since 5.0.6\r\n * @return Root object\r\n */\n get root() {\n return this._root;\n }\n}\nObject.defineProperty(Entity, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Entity\"\n});\nObject.defineProperty(Entity, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"Entity\"]\n});\n//# sourceMappingURL=Entity.js.map","import { EventDispatcher } from \"./EventDispatcher\";\nimport { Disposer, MultiDisposer } from \"./Disposer\";\nimport * as $array from \"./Array\";\nimport * as $object from \"./Object\";\nexport class TemplateState {\n constructor(name, template, settings) {\n Object.defineProperty(this, \"_settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_template\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._name = name;\n this._template = template;\n this._settings = settings;\n }\n get(key, fallback) {\n const value = this._settings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n set(key, value) {\n this._settings[key] = value;\n // TODO maybe only do this if the value changed ?\n this._template._stateChanged(this._name);\n }\n remove(key) {\n delete this._settings[key];\n // TODO maybe only do this if the value changed ?\n this._template._stateChanged(this._name);\n }\n setAll(settings) {\n $object.keys(settings).forEach(key => {\n this._settings[key] = settings[key];\n });\n this._template._stateChanged(this._name);\n }\n _apply(other, seen) {\n $object.each(this._settings, (key, value) => {\n if (!seen[key] && !other._userSettings[key]) {\n seen[key] = true;\n other.setRaw(key, value);\n }\n });\n }\n}\nexport class TemplateStates {\n constructor(template) {\n Object.defineProperty(this, \"_template\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_states\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n this._template = template;\n }\n lookup(name) {\n return this._states[name];\n }\n create(name, settings) {\n const state = this._states[name];\n if (state) {\n state.setAll(settings);\n return state;\n } else {\n const state = new TemplateState(name, this._template, settings);\n this._states[name] = state;\n this._template._stateChanged(name);\n return state;\n }\n }\n remove(name) {\n delete this._states[name];\n this._template._stateChanged(name);\n }\n _apply(entity, state) {\n $object.each(this._states, (key, value) => {\n let seen = state.states[key];\n if (seen == null) {\n seen = state.states[key] = {};\n }\n const other = entity.states.create(key, {});\n value._apply(other, seen);\n });\n }\n}\nexport class TemplateAdapters {\n constructor() {\n Object.defineProperty(this, \"_callbacks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n }\n add(key, callback) {\n let callbacks = this._callbacks[key];\n if (callbacks === undefined) {\n callbacks = this._callbacks[key] = [];\n }\n callbacks.push(callback);\n return new Disposer(() => {\n $array.removeFirst(callbacks, callback);\n if (callbacks.length === 0) {\n delete this._callbacks[key];\n }\n });\n }\n remove(key) {\n const callbacks = this._callbacks[key];\n if (callbacks !== undefined) {\n delete this._callbacks[key];\n }\n }\n _apply(entity) {\n const disposers = [];\n $object.each(this._callbacks, (key, callbacks) => {\n $array.each(callbacks, callback => {\n disposers.push(entity.adapters.add(key, callback));\n });\n });\n return new MultiDisposer(disposers);\n }\n}\n// TODO maybe extend from Properties ?\nexport class Template {\n constructor(settings, isReal) {\n Object.defineProperty(this, \"_settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_privateSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n // TODO code duplication with Properties\n Object.defineProperty(this, \"_settingEvents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_privateSettingEvents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_entities\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"states\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new TemplateStates(this)\n });\n Object.defineProperty(this, \"adapters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new TemplateAdapters()\n });\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventDispatcher()\n });\n Object.defineProperty(this, \"setup\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n if (!isReal) {\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n }\n this._settings = settings;\n }\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\n static new(settings) {\n return new Template(settings, true);\n }\n /**\r\n * Array of all entities using this template.\r\n */\n get entities() {\n return this._entities;\n }\n get(key, fallback) {\n const value = this._settings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n setRaw(key, value) {\n this._settings[key] = value;\n }\n set(key, value) {\n if (this._settings[key] !== value) {\n this.setRaw(key, value);\n this._entities.forEach(entity => {\n entity._setTemplateProperty(this, key, value);\n });\n }\n }\n remove(key) {\n if (key in this._settings) {\n delete this._settings[key];\n this._entities.forEach(entity => {\n entity._removeTemplateProperty(key);\n });\n }\n }\n removeAll() {\n $object.each(this._settings, (key, _value) => {\n this.remove(key);\n });\n }\n getPrivate(key, fallback) {\n const value = this._privateSettings[key];\n if (value !== undefined) {\n return value;\n } else {\n return fallback;\n }\n }\n setPrivateRaw(key, value) {\n this._privateSettings[key] = value;\n return value;\n }\n setPrivate(key, value) {\n if (this._privateSettings[key] !== value) {\n this.setPrivateRaw(key, value);\n this._entities.forEach(entity => {\n entity._setTemplatePrivateProperty(this, key, value);\n });\n }\n return value;\n }\n removePrivate(key) {\n if (key in this._privateSettings) {\n delete this._privateSettings[key];\n this._entities.forEach(entity => {\n entity._removeTemplatePrivateProperty(key);\n });\n }\n }\n setAll(value) {\n $object.each(value, (key, value) => {\n this.set(key, value);\n });\n }\n // TODO code duplication with Properties\n on(key, callback) {\n let events = this._settingEvents[key];\n if (events === undefined) {\n events = this._settingEvents[key] = [];\n }\n events.push(callback);\n return new Disposer(() => {\n $array.removeFirst(events, callback);\n if (events.length === 0) {\n delete this._settingEvents[key];\n }\n });\n }\n // TODO code duplication with Properties\n onPrivate(key, callback) {\n let events = this._privateSettingEvents[key];\n if (events === undefined) {\n events = this._privateSettingEvents[key] = [];\n }\n events.push(callback);\n return new Disposer(() => {\n $array.removeFirst(events, callback);\n if (events.length === 0) {\n delete this._privateSettingEvents[key];\n }\n });\n }\n _apply(entity, state) {\n const disposers = [];\n $object.each(this._settingEvents, (key, events) => {\n $array.each(events, event => {\n disposers.push(entity.on(key, event));\n });\n });\n $object.each(this._privateSettingEvents, (key, events) => {\n $array.each(events, event => {\n disposers.push(entity.onPrivate(key, event));\n });\n });\n this.states._apply(entity, state);\n disposers.push(this.adapters._apply(entity));\n disposers.push(entity.events.copyFrom(this.events));\n return new MultiDisposer(disposers);\n }\n _setObjectTemplate(entity) {\n this._entities.push(entity);\n }\n _removeObjectTemplate(entity) {\n $array.remove(this._entities, entity);\n }\n _stateChanged(name) {\n this._entities.forEach(entity => {\n entity._applyStateByKey(name);\n });\n }\n}\n//# sourceMappingURL=Template.js.map","import { isNumber } from \"./Type\";\n/**\r\n * ============================================================================\r\n * CONSTANTS\r\n * ============================================================================\r\n * @hidden\r\n */\nexport const PI = Math.PI;\nexport const HALFPI = PI / 2;\nexport const RADIANS = PI / 180;\nexport const DEGREES = 180 / PI;\n/**\r\n * Rounds the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @param floor In case value ends with 0.5 and precision is 0, we might need to floor the value instead of ceiling it.\r\n * @return Rounded value\r\n */\nexport function round(value, precision, floor) {\n if (!isNumber(precision) || precision <= 0) {\n let rounded = Math.round(value);\n if (floor) {\n if (rounded - value == 0.5) {\n rounded--;\n }\n }\n return rounded;\n } else {\n let d = Math.pow(10, precision);\n return Math.round(value * d) / d;\n }\n}\n/**\r\n * Ceils the numeric value to whole number or specific precision of set.\r\n *\r\n * @param value Value\r\n * @param precision Precision (number of decimal points)\r\n * @return Rounded value\r\n */\nexport function ceil(value, precision) {\n if (!isNumber(precision) || precision <= 0) {\n return Math.ceil(value);\n } else {\n let d = Math.pow(10, precision);\n return Math.ceil(value * d) / d;\n }\n}\n/**\r\n * [getCubicControlPointA description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\nexport function getCubicControlPointA(p0, p1, p2, tensionX, tensionY) {\n return {\n x: (-p0.x + p1.x / tensionX + p2.x) * tensionX,\n y: (-p0.y + p1.y / tensionY + p2.y) * tensionY\n };\n}\n/**\r\n * [getCubicControlPointB description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param p0 [description]\r\n * @param p1 [description]\r\n * @param p2 [description]\r\n * @param p3 [description]\r\n * @param tensionX [description]\r\n * @param tensionY [description]\r\n * @return [description]\r\n */\nexport function getCubicControlPointB(p1, p2, p3, tensionX, tensionY) {\n return {\n x: (p1.x + p2.x / tensionX - p3.x) * tensionX,\n y: (p1.y + p2.y / tensionY - p3.y) * tensionY\n };\n}\nexport function fitToRange(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\r\n * Returns sine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\nexport function sin(angle) {\n return Math.sin(RADIANS * angle);\n}\n/**\r\n * Returns tan of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Sine\r\n */\nexport function tan(angle) {\n return Math.tan(RADIANS * angle);\n}\n/**\r\n * Returns cosine of an angle specified in degrees.\r\n *\r\n * @param value Value\r\n * @return Cosine\r\n */\nexport function cos(angle) {\n return Math.cos(RADIANS * angle);\n}\n// 0 to 360\nexport function normalizeAngle(value) {\n value = value % 360;\n if (value < 0) {\n value += 360;\n }\n return value;\n}\n// TODO this doesn't work properly for skewing, and it's probably broken for rotation too\nexport function getArcBounds(cx, cy, startAngle, endAngle, radius) {\n let minX = Number.MAX_VALUE;\n let minY = Number.MAX_VALUE;\n let maxX = -Number.MAX_VALUE;\n let maxY = -Number.MAX_VALUE;\n let bpoints = [];\n bpoints.push(getArcPoint(radius, startAngle));\n bpoints.push(getArcPoint(radius, endAngle));\n let fromAngle = Math.min(Math.floor(startAngle / 90) * 90, Math.floor(endAngle / 90) * 90);\n let toAngle = Math.max(Math.ceil(startAngle / 90) * 90, Math.ceil(endAngle / 90) * 90);\n for (let angle = fromAngle; angle <= toAngle; angle += 90) {\n if (angle >= startAngle && angle <= endAngle) {\n bpoints.push(getArcPoint(radius, angle));\n }\n }\n for (let i = 0; i < bpoints.length; i++) {\n let pt = bpoints[i];\n if (pt.x < minX) {\n minX = pt.x;\n }\n if (pt.y < minY) {\n minY = pt.y;\n }\n if (pt.x > maxX) {\n maxX = pt.x;\n }\n if (pt.y > maxY) {\n maxY = pt.y;\n }\n }\n return {\n left: cx + minX,\n top: cy + minY,\n right: cx + maxX,\n bottom: cy + maxY\n };\n}\n/**\r\n * Returns point on arc\r\n *\r\n * @param center point\r\n * @param radius\r\n * @param arc\r\n * @return {boolean}\r\n */\nexport function getArcPoint(radius, arc) {\n return {\n x: radius * cos(arc),\n y: radius * sin(arc)\n };\n}\nexport function mergeBounds(bounds) {\n const len = bounds.length;\n if (len > 0) {\n let bound = bounds[0];\n let left = bound.left;\n let top = bound.top;\n let right = bound.right;\n let bottom = bound.bottom;\n if (len > 1) {\n for (let i = 1; i < len; i++) {\n bound = bounds[i];\n left = Math.min(bound.left, left);\n right = Math.max(bound.right, right);\n top = Math.min(bound.top, top);\n bottom = Math.max(bound.bottom, bottom);\n }\n }\n return {\n left,\n right,\n top,\n bottom\n };\n }\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n}\nexport function fitAngleToRange(value, startAngle, endAngle) {\n if (startAngle > endAngle) {\n let temp = startAngle;\n startAngle = endAngle;\n endAngle = temp;\n }\n value = normalizeAngle(value);\n let count = (startAngle - normalizeAngle(startAngle)) / 360;\n if (value < startAngle) {\n value += 360 * (count + 1);\n }\n let maxEnd = startAngle + (endAngle - startAngle) / 2 + 180;\n let maxStart = startAngle + (endAngle - startAngle) / 2 - 180;\n if (value > endAngle) {\n if (value - 360 > startAngle) {\n value -= 360;\n } else {\n if (value < maxEnd) {\n value = endAngle;\n } else {\n value = startAngle;\n }\n }\n }\n if (value < startAngle) {\n if (value > maxStart) {\n value = startAngle;\n } else {\n value = endAngle;\n }\n }\n return value;\n}\nexport function inBounds(point, bounds) {\n if (point.x >= bounds.left && point.y >= bounds.top && point.x <= bounds.right && point.y <= bounds.bottom) {\n return true;\n }\n return false;\n}\nexport function getAngle(point1, point2) {\n if (!point2) {\n point2 = {\n x: point1.x * 2,\n y: point1.y * 2\n };\n }\n let diffX = point2.x - point1.x;\n let diffY = point2.y - point1.y;\n let angle = Math.atan2(diffY, diffX) * DEGREES;\n if (angle < 0) {\n angle += 360;\n }\n return normalizeAngle(angle);\n}\n/**\r\n * [getPointOnQuadraticCurve description]\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Description\r\n * @param pointA [description]\r\n * @param pointB [description]\r\n * @param controlPoint [description]\r\n * @param position [description]\r\n * @return [description]\r\n */\nexport function getPointOnQuadraticCurve(pointA, pointB, controlPoint, position) {\n let x = (1 - position) * (1 - position) * pointA.x + 2 * (1 - position) * position * controlPoint.x + position * position * pointB.x;\n let y = (1 - position) * (1 - position) * pointA.y + 2 * (1 - position) * position * controlPoint.y + position * position * pointB.y;\n return {\n x: x,\n y: y\n };\n}\nexport function getPointOnLine(pointA, pointB, position) {\n return {\n x: pointA.x + (pointB.x - pointA.x) * position,\n y: pointA.y + (pointB.y - pointA.y) * position\n };\n}\n/**\r\n * Returns the closest value from the array of values to the reference value.\r\n *\r\n * @param values Array of values\r\n * @param value Reference value\r\n * @return Closes value from the array\r\n */\nexport function closest(values, referenceValue) {\n return values.reduce(function (prev, curr) {\n return Math.abs(curr - referenceValue) < Math.abs(prev - referenceValue) ? curr : prev;\n });\n}\n/**\r\n * Returns true if bounds overlap\r\n * @param bounds1 IBounds\r\n * @param bounds2 IBounds\r\n * @returns boolean\r\n */\nexport function boundsOverlap(bounds1, bounds2) {\n const horizontalOverlap = bounds1.left < bounds2.right && bounds1.right > bounds2.left;\n const verticalOverlap = bounds1.top < bounds2.bottom && bounds1.bottom > bounds2.top;\n return horizontalOverlap && verticalOverlap;\n}\n/**\r\n * Generates points of a spiral\r\n * @param cx\r\n * @param cy\r\n * @param radius\r\n * @param radiusY\r\n * @param innerRadius\r\n * @param step\r\n * @param radiusStep\r\n * @param startAngle\r\n * @param endAngle\r\n * @returns IPoint[]\r\n */\nexport function spiralPoints(cx, cy, radius, radiusY, innerRadius, step, radiusStep, startAngle, endAngle) {\n let r = innerRadius + 0.01;\n let angle = startAngle * RADIANS;\n let points = [];\n while (r < radius + radiusStep) {\n let stepSize = step;\n if (stepSize / 2 > r) {\n stepSize = 2 * r;\n }\n angle += 2 * Math.asin(stepSize / 2 / r);\n if (angle * DEGREES > endAngle + (radius - innerRadius) / radiusStep * 360) {\n break;\n }\n let degrees = angle * DEGREES;\n let point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * radiusY / radius * Math.sin(angle)\n };\n points.push(point);\n r = innerRadius + degrees / 360 * radiusStep;\n }\n points.shift();\n return points;\n}\n/**\r\n * Returns true if circles overlap\r\n * @param circle1\r\n * @param circle2\r\n * @returns boolean\r\n */\nexport function circlesOverlap(circle1, circle2) {\n return Math.hypot(circle1.x - circle2.x, circle1.y - circle2.y) <= circle1.radius + circle2.radius;\n}\n//# sourceMappingURL=Math.js.map","import { __awaiter } from \"tslib\";\nimport { Entity } from \"../util/Entity\";\nimport { Template } from \"../util/Template\";\nimport { Percent } from \"../util/Percent\";\nimport { EventDispatcher } from \"../util/EventDispatcher\";\nimport { MultiDisposer, CounterDisposer } from \"../util/Disposer\";\nimport { waitForAnimations } from \"../util/Animation\";\nimport * as $utils from \"../util/Utils\";\nimport * as $array from \"../util/Array\";\nimport * as $type from \"../util/Type\";\nimport * as $object from \"../util/Object\";\nimport * as $math from \"../util/Math\";\n//import { populateString } from \"../util/PopulateString\";\n/**\r\n * An [[EventDispatcher]] for [[Sprite]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\nclass SpriteEventDispatcher extends EventDispatcher {\n constructor(sprite) {\n super();\n Object.defineProperty(this, \"_sprite\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_rendererDisposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dispatchParents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n this._sprite = sprite;\n }\n _makePointerEvent(key, event) {\n return {\n type: key,\n originalEvent: event.event,\n point: event.point,\n simulated: event.simulated,\n native: event.native,\n target: this._sprite\n };\n }\n _onRenderer(key, dispatch) {\n // TODO: is this OK? it'd be good not to require to set this on each individual element\n this._sprite.set(\"interactive\", true);\n this._sprite._display.interactive = true;\n let events = this._rendererDisposers[key];\n if (events === undefined) {\n const disposer = this._sprite._display.on(key, e => {\n dispatch.call(this, e);\n });\n events = this._rendererDisposers[key] = new CounterDisposer(() => {\n delete this._rendererDisposers[key];\n disposer.dispose();\n });\n }\n return events.increment();\n }\n _on(once, type, callback, context, shouldClone, dispatch) {\n const info = super._on(once, type, callback, context, shouldClone, dispatch);\n const rendererEvent = SpriteEventDispatcher.RENDERER_EVENTS[type];\n if (rendererEvent !== undefined) {\n info.disposer = new MultiDisposer([info.disposer, this._onRenderer(type, rendererEvent)]);\n }\n return info;\n }\n /**\r\n * Will stop any bubbling up of the event to element's parents.\r\n *\r\n * Should be called in an event handler, e.g.:\r\n *\r\n * ```TypeScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * element.events.on(\"pointerdown\", function(ev) {\r\n * // Do something here and prevent from \"pointerdown\" bubbling up\r\n * // ...\r\n * ev.target.events.stopParentDispatch();\r\n * });\r\n * ```\r\n */\n stopParentDispatch() {\n this._dispatchParents = false;\n }\n /**\r\n * @ignore\r\n */\n dispatchParents(type, event) {\n const old = this._dispatchParents;\n this._dispatchParents = true;\n try {\n this.dispatch(type, event);\n if (this._dispatchParents && this._sprite.parent) {\n this._sprite.parent.events.dispatchParents(type, event);\n }\n } finally {\n this._dispatchParents = old;\n }\n }\n}\nObject.defineProperty(SpriteEventDispatcher, \"RENDERER_EVENTS\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n \"click\": function (event) {\n if (this.isEnabled(\"click\") && !this._sprite.isDragging() && this._sprite._hasDown() && !this._sprite._hasMoved(this._makePointerEvent(\"click\", event))) {\n this.dispatch(\"click\", this._makePointerEvent(\"click\", event));\n }\n },\n \"rightclick\": function (event) {\n if (this.isEnabled(\"rightclick\")) {\n this.dispatch(\"rightclick\", this._makePointerEvent(\"rightclick\", event));\n }\n },\n \"middleclick\": function (event) {\n if (this.isEnabled(\"middleclick\")) {\n this.dispatch(\"middleclick\", this._makePointerEvent(\"middleclick\", event));\n }\n },\n \"dblclick\": function (event) {\n this.dispatchParents(\"dblclick\", this._makePointerEvent(\"dblclick\", event));\n },\n \"pointerover\": function (event) {\n const sprite = this._sprite;\n let dispatch = true;\n if (sprite.getPrivate(\"trustBounds\")) {\n sprite._getBounds();\n const bounds = sprite.globalBounds();\n if (sprite.isType(\"Graphics\")) {\n const strokeWidth = sprite.get(\"strokeWidth\", 1) / 2;\n if (strokeWidth >= 1) {\n bounds.left -= strokeWidth;\n bounds.right += strokeWidth;\n bounds.top -= strokeWidth;\n bounds.bottom += strokeWidth;\n }\n }\n if (!$math.inBounds(event.point, bounds)) {\n dispatch = false;\n sprite._root._renderer.removeHovering(sprite._display);\n }\n }\n if (dispatch && this.isEnabled(\"pointerover\")) {\n this.dispatch(\"pointerover\", this._makePointerEvent(\"pointerover\", event));\n }\n },\n \"pointerout\": function (event) {\n if (this.isEnabled(\"pointerout\")) {\n this.dispatch(\"pointerout\", this._makePointerEvent(\"pointerout\", event));\n }\n },\n \"pointerdown\": function (event) {\n this.dispatchParents(\"pointerdown\", this._makePointerEvent(\"pointerdown\", event));\n },\n \"pointerup\": function (event) {\n if (this.isEnabled(\"pointerup\")) {\n this.dispatch(\"pointerup\", this._makePointerEvent(\"pointerup\", event));\n }\n },\n \"globalpointerup\": function (event) {\n if (this.isEnabled(\"globalpointerup\")) {\n this.dispatch(\"globalpointerup\", this._makePointerEvent(\"globalpointerup\", event));\n }\n },\n \"globalpointermove\": function (event) {\n if (this.isEnabled(\"globalpointermove\")) {\n this.dispatch(\"globalpointermove\", this._makePointerEvent(\"globalpointermove\", event));\n }\n },\n \"wheel\": function (event) {\n this.dispatchParents(\"wheel\", {\n type: \"wheel\",\n target: this._sprite,\n originalEvent: event.event,\n point: event.point\n });\n }\n }\n});\n/**\r\n * A base class for all visual elements.\r\n *\r\n * @important\r\n */\nexport class Sprite extends Entity {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_adjustedLocalBounds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n });\n Object.defineProperty(this, \"_localBounds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n });\n Object.defineProperty(this, \"_parent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_dataItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_templateField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_sizeDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n // Will be true only when dragging\n Object.defineProperty(this, \"_isDragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n // The event when the dragging starts\n Object.defineProperty(this, \"_dragEvent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // The position when dragging starts\n Object.defineProperty(this, \"_dragPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isHidden\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_isShowing\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_isHiding\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_isDown\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_downPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downPoints\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_toggleDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_dragDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_hoverDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_focusDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipMoveDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipPointerDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_statesHandled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n _afterNew() {\n this.setPrivateRaw(\"visible\", true);\n super._afterNew();\n }\n /**\r\n * Marks some setting as dirty. Could be used to trigger adapter.\r\n * @param key\r\n */\n markDirtyKey(key) {\n this._markDirtyKey(key);\n }\n _markDirtyKey(key) {\n super._markDirtyKey(key);\n if (key == \"x\" || key == \"y\" || key == \"dx\" || key == \"dy\") {\n this.markDirtyBounds();\n this._addPercentagePositionChildren();\n this.markDirtyPosition();\n }\n }\n _markDirtyPrivateKey(key) {\n super._markDirtyPrivateKey(key);\n if (key == \"x\" || key == \"y\") {\n this.markDirtyPosition();\n }\n }\n _removeTemplateField() {\n if (this._templateField) {\n this._templateField._removeObjectTemplate(this);\n }\n }\n _createEvents() {\n return new SpriteEventDispatcher(this);\n }\n _processTemplateField() {\n let template;\n const field = this.get(\"templateField\");\n if (field) {\n const dataItem = this.dataItem;\n if (dataItem) {\n const context = dataItem.dataContext;\n if (context) {\n template = context[field];\n if (!(template instanceof Template) && template) {\n template = Template.new(template);\n }\n }\n }\n }\n if (this._templateField !== template) {\n this._removeTemplateField();\n this._templateField = template;\n if (template) {\n template._setObjectTemplate(this);\n }\n this._applyTemplates();\n }\n }\n // TODO change this to run before the element is added to the parent, so that way\n // it doesn't need to apply the themes twice\n _setDataItem(dataItem) {\n const oldDataItem = this._dataItem;\n this._dataItem = dataItem;\n this._processTemplateField();\n const eventType = \"dataitemchanged\";\n if (dataItem != oldDataItem) {\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this,\n oldDataItem: oldDataItem,\n newDataItem: dataItem\n });\n }\n }\n }\n /**\r\n * A [[DataItem]] used for this element.\r\n *\r\n * NOTE: data item is being assigned automatically in most cases where it\r\n * matters. Use this accessor to set data item only if you know what you're\r\n * doing.\r\n *\r\n * @param value Data item\r\n */\n set dataItem(value) {\n this._setDataItem(value);\n }\n /**\r\n * @return DataItem\r\n */\n get dataItem() {\n if (this._dataItem) {\n return this._dataItem;\n } else {\n let parent = this._parent;\n while (parent) {\n if (parent._dataItem) {\n return parent._dataItem;\n } else {\n parent = parent._parent;\n }\n }\n }\n }\n _addPercentageSizeChildren() {\n let parent = this.parent;\n if (parent) {\n if (this.get(\"width\") instanceof Percent || this.get(\"height\") instanceof Percent) {\n $array.pushOne(parent._percentageSizeChildren, this);\n } else {\n $array.removeFirst(parent._percentageSizeChildren, this);\n }\n }\n }\n _addPercentagePositionChildren() {\n let parent = this.parent;\n if (parent) {\n if (this.get(\"x\") instanceof Percent || this.get(\"y\") instanceof Percent) {\n $array.pushOne(parent._percentagePositionChildren, this);\n } else {\n $array.removeFirst(parent._percentagePositionChildren, this);\n }\n }\n }\n /**\r\n * @ignore\r\n */\n markDirtyPosition() {\n this._root._addDirtyPosition(this);\n }\n updatePivotPoint() {\n const bounds = this._localBounds;\n if (bounds) {\n const centerX = this.get(\"centerX\");\n if (centerX != null) {\n this._display.pivot.x = bounds.left + $utils.relativeToValue(centerX, bounds.right - bounds.left);\n }\n const centerY = this.get(\"centerY\");\n if (centerY != null) {\n this._display.pivot.y = bounds.top + $utils.relativeToValue(centerY, bounds.bottom - bounds.top);\n }\n }\n }\n _beforeChanged() {\n super._beforeChanged();\n // handling states in beforeChanged, otherwise states is not applied without animated theme\n this._handleStates();\n if (this.isDirty(\"tooltip\")) {\n const previous = this._prevSettings.tooltip;\n if (previous) {\n previous.dispose();\n }\n }\n if (this.isDirty(\"layer\") || this.isDirty(\"layerMargin\")) {\n this._display.setLayer(this.get(\"layer\"), this.get(\"layerMargin\"));\n this.markDirtyLayer();\n }\n if (this.isDirty(\"tooltipPosition\")) {\n const tooltipMoveDp = this._tooltipMoveDp;\n if (tooltipMoveDp) {\n tooltipMoveDp.dispose();\n this._tooltipMoveDp = undefined;\n }\n const tooltipPointerDp = this._tooltipPointerDp;\n if (tooltipPointerDp) {\n tooltipPointerDp.dispose();\n this._tooltipPointerDp = undefined;\n }\n if (this.get(\"tooltipPosition\") == \"pointer\") {\n if (this.isHover()) {\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", e => {\n this.showTooltip(e.point);\n });\n }\n this._tooltipPointerDp = new MultiDisposer([this.events.on(\"pointerover\", () => {\n this._tooltipMoveDp = this.events.on(\"globalpointermove\", e => {\n this.showTooltip(e.point);\n });\n }), this.events.on(\"pointerout\", () => {\n const tooltipMoveDp = this._tooltipMoveDp;\n if (tooltipMoveDp) {\n tooltipMoveDp.dispose();\n this._tooltipMoveDp = undefined;\n }\n })]);\n }\n }\n }\n _handleStates() {\n if (!this._statesHandled) {\n if (this.isDirty(\"active\")) {\n if (this.get(\"active\")) {\n this.states.applyAnimate(\"active\");\n this.set(\"ariaChecked\", true);\n } else {\n if (!this.isHidden()) {\n this.states.applyAnimate(\"default\");\n }\n this.set(\"ariaChecked\", false);\n }\n this.markDirtyAccessibility();\n }\n if (this.isDirty(\"disabled\")) {\n if (this.get(\"disabled\")) {\n this.states.applyAnimate(\"disabled\");\n this.set(\"ariaChecked\", false);\n } else {\n if (!this.isHidden()) {\n this.states.applyAnimate(\"default\");\n }\n this.set(\"ariaChecked\", true);\n }\n this.markDirtyAccessibility();\n }\n this._statesHandled = true;\n }\n }\n _changed() {\n super._changed();\n const display = this._display;\n const events = this.events;\n if (this.isDirty(\"draggable\")) {\n const draggable = this.get(\"draggable\");\n if (draggable) {\n this.set(\"interactive\", true);\n this._dragDp = new MultiDisposer([events.on(\"pointerdown\", ev => {\n this.dragStart(ev);\n }), events.on(\"globalpointermove\", ev => {\n this.dragMove(ev);\n }), events.on(\"globalpointerup\", ev => {\n this.dragStop(ev);\n })]);\n } else {\n if (this._dragDp) {\n this._dragDp.dispose();\n this._dragDp = undefined;\n }\n }\n display.cancelTouch = draggable ? true : false;\n }\n if (this.isDirty(\"tooltipText\") || this.isDirty(\"tooltipHTML\") || this.isDirty(\"showTooltipOn\")) {\n const tooltipText = this.get(\"tooltipText\");\n const tooltipHTML = this.get(\"tooltipHTML\");\n const showTooltipOn = this.get(\"showTooltipOn\", \"hover\");\n if (this._tooltipDp) {\n this._tooltipDp.dispose();\n this._tooltipDp = undefined;\n }\n if (tooltipText || tooltipHTML) {\n if (showTooltipOn == \"click\") {\n this._tooltipDp = new MultiDisposer([events.on(\"click\", () => {\n this.setTimeout(() => this.showTooltip(), 10);\n }), $utils.addEventListener(document, \"click\", _ev => {\n this.hideTooltip();\n })]);\n this._disposers.push(this._tooltipDp);\n } else if (showTooltipOn == \"always\") {\n // nothing\n } else {\n this._tooltipDp = new MultiDisposer([events.on(\"pointerover\", () => {\n this.showTooltip();\n }), events.on(\"pointerout\", () => {\n this.hideTooltip();\n })]);\n this._disposers.push(this._tooltipDp);\n }\n }\n }\n if (this.isDirty(\"toggleKey\")) {\n let toggleKey = this.get(\"toggleKey\");\n if (toggleKey && toggleKey != \"none\") {\n this._toggleDp = events.on(\"click\", () => {\n if (!this._isDragging) {\n this.set(toggleKey, !this.get(toggleKey));\n }\n });\n } else {\n if (this._toggleDp) {\n this._toggleDp.dispose();\n this._toggleDp = undefined;\n }\n }\n }\n if (this.isDirty(\"opacity\")) {\n display.alpha = Math.max(0, this.get(\"opacity\", 1));\n if (this.get(\"focusable\")) {\n this.markDirtyAccessibility();\n }\n }\n if (this.isDirty(\"rotation\")) {\n this.markDirtyBounds();\n display.angle = this.get(\"rotation\", 0);\n }\n if (this.isDirty(\"scale\")) {\n this.markDirtyBounds();\n display.scale = this.get(\"scale\", 0);\n }\n if (this.isDirty(\"centerX\") || this.isDirty(\"centerY\")) {\n this.markDirtyBounds();\n this.updatePivotPoint();\n }\n if (this.isDirty(\"visible\") || this.isPrivateDirty(\"visible\") || this.isDirty(\"forceHidden\")) {\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\n display.visible = false;\n this.hideTooltip();\n } else {\n display.visible = true;\n }\n this.markDirtyBounds();\n if (this.get(\"focusable\")) {\n this.markDirtyAccessibility();\n }\n }\n if (this.isDirty(\"width\") || this.isDirty(\"height\")) {\n this.markDirtyBounds();\n this._addPercentageSizeChildren();\n const parent = this.parent;\n if (parent) {\n if (this.isDirty(\"width\") && this.get(\"width\") instanceof Percent || this.isDirty(\"height\") && this.get(\"height\") instanceof Percent) {\n parent.markDirty();\n parent._prevWidth = 0;\n }\n }\n this._sizeDirty = true;\n }\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"minWidth\") || this.isDirty(\"minHeight\") || this.isPrivateDirty(\"maxWidth\") || this.isPrivateDirty(\"maxHeight\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\") || this.isDirty(\"marginLeft\") || this.isDirty(\"marginTop\") || this.isDirty(\"marginRight\") || this.isDirty(\"marginBottom\")) {\n this.markDirtyBounds();\n this._sizeDirty = true;\n }\n if (this._sizeDirty) {\n this._updateSize();\n }\n if (this.isDirty(\"wheelable\")) {\n const wheelable = this.get(\"wheelable\");\n if (wheelable) {\n this.set(\"interactive\", true);\n }\n display.wheelable = wheelable ? true : false;\n }\n // Accessibility\n if (this.isDirty(\"tabindexOrder\") || this.isDirty(\"focusableGroup\")) {\n if (this.get(\"focusable\")) {\n this._root._registerTabindexOrder(this);\n } else {\n this._root._unregisterTabindexOrder(this);\n }\n }\n if (this.isDirty(\"filter\")) {\n //this.markDirtyBounds();\n display.filter = this.get(\"filter\");\n }\n let filter = this.get(\"filter\", \"\");\n if (this.isDirty(\"blur\")) {\n const blur = this.get(\"blur\", 0);\n if (blur != 0) {\n filter += \" blur(\" + blur + \"px)\";\n }\n }\n if (this.isDirty(\"saturate\")) {\n const saturate = this.get(\"saturate\", 1);\n if (saturate != 1) {\n filter += \" saturate(\" + saturate + \")\";\n }\n }\n if (this.isDirty(\"brightness\")) {\n const brightness = this.get(\"brightness\", 1);\n if (brightness != 1) {\n filter += \" brightness(\" + brightness + \")\";\n }\n }\n if (this.isDirty(\"contrast\")) {\n const contrast = this.get(\"contrast\", 1);\n if (contrast != 1) {\n filter += \" contrast(\" + contrast + \")\";\n }\n }\n if (this.isDirty(\"sepia\")) {\n const sepia = this.get(\"sepia\", 0);\n if (sepia != 0) {\n filter += \" sepia(\" + sepia + \")\";\n }\n }\n if (this.isDirty(\"hue\")) {\n const hue = this.get(\"hue\", 0);\n if (hue != 0) {\n filter += \" hue-rotate(\" + hue + \"deg)\";\n }\n }\n if (this.isDirty(\"invert\")) {\n const invert = this.get(\"invert\", 0);\n if (invert != 0) {\n filter += \" invert(\" + invert + \")\";\n }\n }\n if (filter) {\n display.filter = filter;\n }\n if (this.isDirty(\"cursorOverStyle\")) {\n display.cursorOverStyle = this.get(\"cursorOverStyle\");\n }\n if (this.isDirty(\"hoverOnFocus\")) {\n if (this.get(\"hoverOnFocus\")) {\n this._focusDp = new MultiDisposer([events.on(\"focus\", () => {\n // TODO: proper hover, not just tooltip\n this.showTooltip();\n }), events.on(\"blur\", () => {\n // TODO: proper hover, not just tooltip\n this.hideTooltip();\n })]);\n } else {\n if (this._focusDp) {\n this._focusDp.dispose();\n this._focusDp = undefined;\n }\n }\n }\n if (this.isDirty(\"focusable\")) {\n if (this.get(\"focusable\")) {\n this._root._registerTabindexOrder(this);\n } else {\n this._root._unregisterTabindexOrder(this);\n }\n this.markDirtyAccessibility();\n }\n if (this.isPrivateDirty(\"focusable\")) {\n this.markDirtyAccessibility();\n }\n if (this.isDirty(\"role\") || this.isDirty(\"ariaLive\") || this.isDirty(\"ariaChecked\") || this.isDirty(\"ariaHidden\") || this.isDirty(\"ariaOrientation\") || this.isDirty(\"ariaValueNow\") || this.isDirty(\"ariaValueMin\") || this.isDirty(\"ariaValueMax\") || this.isDirty(\"ariaValueText\") || this.isDirty(\"ariaLabel\") || this.isDirty(\"ariaControls\")) {\n // display.accessibility.ariaLabel = populateString(this, this.get(\"ariaLabel\", \"\"));\n // @todo make sure ariaLabel gets populated in Root\n this.markDirtyAccessibility();\n }\n if (this.isDirty(\"exportable\")) {\n display.exportable = this.get(\"exportable\");\n }\n if (this.isDirty(\"interactive\")) {\n const events = this.events;\n if (this.get(\"interactive\") && !events.isDisposed()) {\n this._hoverDp = new MultiDisposer([events.on(\"click\", ev => {\n if ($utils.isTouchEvent(ev.originalEvent)) {\n if (!this.getPrivate(\"touchHovering\")) {\n this.setTimeout(() => {\n this._handleOver();\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\n this.showTooltip();\n }\n this.setPrivateRaw(\"touchHovering\", true);\n this.events.dispatch(\"pointerover\", {\n type: \"pointerover\",\n target: ev.target,\n originalEvent: ev.originalEvent,\n point: ev.point,\n simulated: ev.simulated\n });\n }, 10);\n }\n }\n }), events.on(\"globalpointerup\", ev => {\n if ($utils.isTouchEvent(ev.originalEvent)) {\n if (this.getPrivate(\"touchHovering\")) {\n this._handleOut();\n if (this.get(\"tooltipText\") || this.get(\"tooltipHTML\")) {\n this.hideTooltip();\n }\n this.setPrivateRaw(\"touchHovering\", false);\n this.events.dispatch(\"pointerout\", {\n type: \"pointerout\",\n target: ev.target,\n originalEvent: ev.originalEvent,\n point: ev.point,\n simulated: ev.simulated\n });\n }\n }\n if (this._isDown) {\n this._handleUp(ev);\n }\n //this._isDown = false;\n }), events.on(\"pointerover\", () => {\n this._handleOver();\n }), events.on(\"pointerout\", () => {\n this._handleOut();\n }), events.on(\"pointerdown\", e => {\n this._handleDown(e);\n })]);\n } else {\n this._display.interactive = false;\n if (this._hoverDp) {\n this._hoverDp.dispose();\n this._hoverDp = undefined;\n }\n }\n }\n if (this.isDirty(\"forceInactive\")) {\n this._display.inactive = this.get(\"forceInactive\", null);\n }\n if (this.get(\"showTooltipOn\") == \"always\" && this._display.visible) {\n this.showTooltip();\n }\n }\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\n dragStart(e) {\n this._dragEvent = e;\n this.events.stopParentDispatch();\n }\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\n dragStop(e) {\n this._dragEvent = undefined;\n this._dragPoint = undefined;\n this.events.stopParentDispatch();\n if (this._isDragging) {\n this._isDragging = false;\n const type = \"dragstop\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: e.originalEvent,\n point: e.point,\n simulated: e.simulated\n });\n }\n }\n }\n _handleOver() {\n if (!this.isHidden()) {\n if (this.get(\"active\") && this.states.lookup(\"hoverActive\")) {\n this.states.applyAnimate(\"hoverActive\");\n } else if (this.get(\"disabled\") && this.states.lookup(\"hoverDisabled\")) {\n this.states.applyAnimate(\"hoverDisabled\");\n } else {\n this.states.applyAnimate(\"hover\");\n }\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\n this.states.applyAnimate(\"down\");\n }\n }\n }\n _handleOut() {\n if (!this.isHidden()) {\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\n this.states.applyAnimate(\"active\");\n } else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\n this.states.applyAnimate(\"disabled\");\n } else {\n if (this.states.lookup(\"hover\") || this.states.lookup(\"hoverActive\")) {\n this.states.applyAnimate(\"default\");\n }\n }\n if (this.get(\"draggable\") && this._isDown && this.states.lookup(\"down\")) {\n this.states.applyAnimate(\"down\");\n }\n }\n }\n _handleUp(e) {\n if (!this.isHidden()) {\n if (this.get(\"active\") && this.states.lookup(\"active\")) {\n this.states.applyAnimate(\"active\");\n } else if (this.get(\"disabled\") && this.states.lookup(\"disabled\")) {\n this.states.applyAnimate(\"disabled\");\n } else if (this.states.lookup(\"down\")) {\n if (this.isHover()) {\n this.states.applyAnimate(\"hover\");\n } else {\n this.states.applyAnimate(\"default\");\n }\n }\n // @todo remove this once migrated to _downPoints\n this._downPoint = undefined;\n const pointerId = $utils.getPointerId(e.originalEvent);\n delete this._downPoints[pointerId];\n if ($object.keys(this._downPoints).length == 0) {\n this._isDown = false;\n }\n }\n }\n _hasMoved(e) {\n // @todo remove this once migrated to _downPoints\n // if (this._downPoint) {\n // \tconst x = Math.abs(this._downPoint.x - e.point.x);\n // \tconst y = Math.abs(this._downPoint.y - e.point.y);\n // \treturn (x > 5) || (y > 5);\n // }\n const pointerId = $utils.getPointerId(e.originalEvent);\n const downPoint = this._downPoints[pointerId];\n if (downPoint) {\n const x = Math.abs(downPoint.x - e.point.x);\n const y = Math.abs(downPoint.y - e.point.y);\n return x > 5 || y > 5;\n }\n return false;\n }\n _hasDown() {\n return $object.keys(this._downPoints).length > 0;\n }\n _handleDown(e) {\n const parent = this.parent;\n if (parent && !this.get(\"draggable\")) {\n parent._handleDown(e);\n }\n if (this.get(\"interactive\") && !this.isHidden()) {\n if (this.states.lookup(\"down\")) {\n this.states.applyAnimate(\"down\");\n }\n this._downPoint = {\n x: e.point.x,\n y: e.point.y\n };\n // @todo remove this once migrated to _downPoints\n this._isDown = true;\n const pointerId = $utils.getPointerId(e.originalEvent);\n this._downPoints[pointerId] = {\n x: e.point.x,\n y: e.point.y\n };\n }\n }\n /**\r\n * @ignore\r\n * @todo should this be user-accessible?\r\n */\n dragMove(e) {\n let dragEvent = this._dragEvent;\n if (dragEvent) {\n if (dragEvent.simulated && !e.simulated) {\n return true;\n }\n let angle = 0;\n let parent = this.parent;\n let scale = 1;\n while (parent != null) {\n angle += parent.get(\"rotation\", 0);\n parent = parent.parent;\n if (parent) {\n scale *= parent.get(\"scale\", 1);\n }\n }\n let x = (e.point.x - dragEvent.point.x) / scale;\n let y = (e.point.y - dragEvent.point.y) / scale;\n const events = this.events;\n if (dragEvent.simulated && !this._isDragging) {\n this._isDragging = true;\n this._dragEvent = e;\n this._dragPoint = {\n x: this.x(),\n y: this.y()\n };\n const type = \"dragstart\";\n if (events.isEnabled(type)) {\n events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: e.originalEvent,\n point: e.point,\n simulated: e.simulated\n });\n }\n }\n if (this._isDragging) {\n let dragPoint = this._dragPoint;\n this.set(\"x\", dragPoint.x + x * $math.cos(angle) + y * $math.sin(angle));\n this.set(\"y\", dragPoint.y + y * $math.cos(angle) - x * $math.sin(angle));\n const type = \"dragged\";\n if (events.isEnabled(type)) {\n events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: e.originalEvent,\n point: e.point,\n simulated: e.simulated\n });\n }\n } else {\n if (Math.hypot(x, y) > 5) {\n this._isDragging = true;\n this._dragEvent = e;\n this._dragPoint = {\n x: this.x(),\n y: this.y()\n };\n const type = \"dragstart\";\n if (events.isEnabled(type)) {\n events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: e.originalEvent,\n point: e.point,\n simulated: e.simulated\n });\n }\n }\n }\n }\n }\n _updateSize() {}\n _getBounds() {\n this._localBounds = this._display.getLocalBounds();\n }\n /**\r\n * Returns depth (how deep in the hierachy of the content tree) of this\r\n * element.\r\n *\r\n * @return Depth\r\n */\n depth() {\n let self = this.parent;\n let depth = 0;\n while (true) {\n if (self) {\n ++depth;\n self = self.parent;\n } else {\n return depth;\n }\n }\n }\n /**\r\n * @ignore\r\n */\n markDirtySize() {\n this._sizeDirty = true;\n this.markDirty();\n }\n /**\r\n * @ignore\r\n */\n markDirtyBounds() {\n const display = this._display;\n if (this.get(\"isMeasured\")) {\n this._root._addDirtyBounds(this);\n display.isMeasured = true;\n display.invalidateBounds();\n const parent = this.parent;\n if (parent && this.get(\"position\") != \"absolute\") {\n if (parent.get(\"width\") == null || parent.get(\"height\") == null || parent.get(\"layout\")) {\n parent.markDirtyBounds();\n }\n }\n if (this.get(\"focusable\") && this.isFocus()) {\n this.markDirtyAccessibility();\n }\n }\n }\n /**\r\n * @ignore\r\n */\n markDirtyAccessibility() {\n //if (this._root.focused(this)) {\n this._root._invalidateAccessibility(this);\n //}\n }\n /**\r\n * @ignore\r\n */\n markDirtyLayer() {\n //this._display.markDirtyLayer(this.isDirty(\"opacity\") || this.isDirty(\"visible\")); https://codepen.io/team/amcharts/pen/gOWZPmP <- problems\n this._display.markDirtyLayer(true);\n }\n /**\r\n * @ignore\r\n */\n markDirty() {\n super.markDirty();\n this.markDirtyLayer();\n }\n _updateBounds() {\n const oldBounds = this._adjustedLocalBounds;\n let newBounds;\n // if display.visible == false, it still returns bounds\n if (!this.get(\"visible\") || !this.getPrivate(\"visible\") || this.get(\"forceHidden\")) {\n newBounds = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this._localBounds = newBounds;\n this._adjustedLocalBounds = newBounds;\n } else {\n this._getBounds();\n this._fixMinBounds(this._localBounds);\n this.updatePivotPoint();\n this._adjustedLocalBounds = this._display.getAdjustedBounds(this._localBounds);\n newBounds = this._adjustedLocalBounds;\n }\n if (!oldBounds || oldBounds.left !== newBounds.left || oldBounds.top !== newBounds.top || oldBounds.right !== newBounds.right || oldBounds.bottom !== newBounds.bottom) {\n const eventType = \"boundschanged\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n }\n if (this.parent) {\n this.parent.markDirty();\n this.parent.markDirtyBounds();\n }\n // Update tooltip position together with the Sprite\n if (this.getPrivate(\"showingTooltip\")) {\n this.showTooltip();\n }\n }\n }\n _fixMinBounds(bounds) {\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\n if ($type.isNumber(minWidth)) {\n if (bounds.right - bounds.left < minWidth) {\n bounds.right = bounds.left + minWidth;\n }\n }\n if ($type.isNumber(minHeight)) {\n if (bounds.bottom - bounds.top < minHeight) {\n bounds.bottom = bounds.top + minHeight;\n }\n }\n let privateWidth = this.getPrivate(\"width\");\n let privateHeight = this.getPrivate(\"height\");\n if ($type.isNumber(privateWidth)) {\n if (privateWidth > 0) {\n bounds.right = bounds.left + privateWidth;\n } else {\n bounds.left = bounds.right + privateWidth;\n }\n }\n if ($type.isNumber(privateHeight)) {\n if (privateHeight > 0) {\n bounds.bottom = bounds.top + privateHeight;\n } else {\n bounds.top = bounds.bottom + privateHeight;\n }\n }\n }\n _removeParent(parent) {\n if (parent) {\n parent.children.removeValue(this);\n $array.removeFirst(parent._percentageSizeChildren, this);\n $array.removeFirst(parent._percentagePositionChildren, this);\n }\n }\n _clearDirty() {\n super._clearDirty();\n this._sizeDirty = false;\n this._statesHandled = false;\n }\n /**\r\n * Simulate hover over element.\r\n */\n hover() {\n this.showTooltip();\n this._handleOver();\n }\n /**\r\n * Simulate unhover over element.\r\n */\n unhover() {\n this.hideTooltip();\n this._handleOut();\n }\n /**\r\n * Shows element's [[Tooltip]].\r\n */\n showTooltip(point) {\n const tooltip = this.getTooltip();\n const tooltipText = this.get(\"tooltipText\");\n const tooltipHTML = this.get(\"tooltipHTML\");\n if ((tooltipText || tooltipHTML) && tooltip) {\n const tooltipPosition = this.get(\"tooltipPosition\");\n const tooltipTarget = this.getPrivate(\"tooltipTarget\", this);\n if (tooltipPosition == \"fixed\" || !point) {\n this._display._setMatrix();\n point = this.toGlobal(tooltipTarget._getTooltipPoint());\n }\n tooltip.set(\"pointTo\", point);\n tooltip.set(\"tooltipTarget\", tooltipTarget);\n if (!tooltip.get(\"x\")) {\n tooltip.set(\"x\", point.x);\n }\n if (!tooltip.get(\"y\")) {\n tooltip.set(\"y\", point.y);\n }\n if (tooltipText) {\n tooltip.label.set(\"text\", tooltipText);\n }\n if (tooltipHTML) {\n tooltip.label.set(\"html\", tooltipHTML);\n }\n const dataItem = this.dataItem;\n if (dataItem) {\n tooltip.label._setDataItem(dataItem);\n }\n if (this.get(\"showTooltipOn\") == \"always\" && (point.x < 0 || point.x > this._root.width() || point.y < 0 || point.y > this._root.height())) {\n this.hideTooltip();\n return;\n }\n tooltip.label.text.markDirtyText();\n const promise = tooltip.show();\n this.setPrivateRaw(\"showingTooltip\", true);\n return promise;\n }\n }\n /**\r\n * Hides element's [[Tooltip]].\r\n */\n hideTooltip() {\n const tooltip = this.getTooltip();\n if (tooltip) {\n if (tooltip.get(\"tooltipTarget\") == this.getPrivate(\"tooltipTarget\", this) || this.get(\"tooltip\") == tooltip) {\n let timeout = tooltip.get(\"keepTargetHover\") && tooltip.get(\"stateAnimationDuration\", 0) == 0 ? 400 : undefined;\n const promise = tooltip.hide(timeout);\n this.setPrivateRaw(\"showingTooltip\", false);\n return promise;\n }\n }\n }\n _getTooltipPoint() {\n const bounds = this._localBounds;\n if (bounds) {\n let x = 0;\n let y = 0;\n if (!this.get(\"isMeasured\")) {\n x = $utils.relativeToValue(this.get(\"tooltipX\", 0), this.width());\n y = $utils.relativeToValue(this.get(\"tooltipY\", 0), this.height());\n } else {\n x = bounds.left + $utils.relativeToValue(this.get(\"tooltipX\", 0), bounds.right - bounds.left);\n y = bounds.top + $utils.relativeToValue(this.get(\"tooltipY\", 0), bounds.bottom - bounds.top);\n }\n return {\n x,\n y\n };\n }\n return {\n x: 0,\n y: 0\n };\n }\n /**\r\n * Returns [[Tooltip]] used for this element.\r\n *\r\n * @return Tooltip\r\n */\n getTooltip() {\n let tooltip = this.get(\"tooltip\");\n if (!tooltip) {\n let parent = this.parent;\n if (parent) {\n return parent.getTooltip();\n }\n } else {\n return tooltip;\n }\n }\n _updatePosition() {\n const parent = this.parent;\n let dx = this.get(\"dx\", 0);\n let dy = this.get(\"dy\", 0);\n let x = this.get(\"x\");\n let _x = this.getPrivate(\"x\");\n let xx = 0;\n let yy = 0;\n const position = this.get(\"position\");\n if (x instanceof Percent) {\n if (parent) {\n x = parent.innerWidth() * x.value + parent.get(\"paddingLeft\", 0);\n } else {\n x = 0;\n }\n }\n if ($type.isNumber(x)) {\n xx = x + dx;\n } else {\n if (_x != null) {\n xx = _x;\n } else if (parent) {\n if (position == \"relative\") {\n xx = parent.get(\"paddingLeft\", 0) + dx;\n }\n }\n }\n let y = this.get(\"y\");\n let _y = this.getPrivate(\"y\");\n if (y instanceof Percent) {\n if (parent) {\n y = parent.innerHeight() * y.value + parent.get(\"paddingTop\", 0);\n } else {\n y = 0;\n }\n }\n if ($type.isNumber(y)) {\n yy = y + dy;\n } else {\n if (_y != null) {\n yy = _y;\n } else if (parent) {\n if (position == \"relative\") {\n yy = parent.get(\"paddingTop\", 0) + dy;\n }\n }\n }\n const display = this._display;\n if (display.x != xx || display.y != yy) {\n display.invalidateBounds();\n display.x = xx;\n display.y = yy;\n const eventType = \"positionchanged\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n // Update tooltip position together with the Sprite\n if (this.getPrivate(\"showingTooltip\")) {\n this.showTooltip();\n }\n }\n /**\r\n * Returns element's actual X position in pixels.\r\n *\r\n * @return X (px)\r\n */\n x() {\n let x = this.get(\"x\");\n let _x = this.getPrivate(\"x\");\n const parent = this.parent;\n if (parent) {\n if (x instanceof Percent) {\n return $utils.relativeToValue(x, parent.innerWidth()) + parent.get(\"paddingLeft\", 0);\n } else {\n if (!$type.isNumber(x)) {\n if (_x != null) {\n return _x;\n } else {\n return parent.get(\"paddingLeft\", this._display.x);\n }\n } else {\n return x;\n }\n }\n }\n return this._display.x;\n }\n /**\r\n * Returns element's actual Y position in pixels.\r\n *\r\n * @return Y (px)\r\n */\n y() {\n let _y = this.getPrivate(\"y\");\n if (_y != null) {\n return _y;\n }\n let y = this.get(\"y\");\n const parent = this.parent;\n if (parent) {\n if (y instanceof Percent) {\n return $utils.relativeToValue(y, parent.innerHeight()) + parent.get(\"paddingTop\", 0);\n } else {\n if (!$type.isNumber(y)) {\n if (_y != null) {\n return _y;\n } else {\n return parent.get(\"paddingTop\", this._display.y);\n }\n } else {\n return y;\n }\n }\n }\n return this._display.y;\n }\n _dispose() {\n super._dispose();\n this._display.dispose();\n this._removeTemplateField();\n this._removeParent(this.parent);\n this._root._removeFocusElement(this);\n const tooltip = this.get(\"tooltip\");\n if (tooltip) {\n tooltip.dispose();\n }\n this.markDirty();\n }\n /**\r\n * @ignore\r\n */\n adjustedLocalBounds() {\n this._fixMinBounds(this._adjustedLocalBounds);\n return this._adjustedLocalBounds;\n }\n /**\r\n * Returns local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\n localBounds() {\n return this._localBounds;\n }\n /**\r\n * Returns adjusted local coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\n bounds() {\n const bounds = this._adjustedLocalBounds;\n const x = this.x();\n const y = this.y();\n return {\n left: bounds.left + x,\n right: bounds.right + x,\n top: bounds.top + y,\n bottom: bounds.bottom + y\n };\n }\n /**\r\n * Returns global coordinates of the element's bounds.\r\n *\r\n * @ignore\r\n * @return Global bounds\r\n */\n globalBounds() {\n const bounds = this.localBounds();\n const p0 = this.toGlobal({\n x: bounds.left,\n y: bounds.top\n });\n const p1 = this.toGlobal({\n x: bounds.right,\n y: bounds.top\n });\n const p2 = this.toGlobal({\n x: bounds.right,\n y: bounds.bottom\n });\n const p3 = this.toGlobal({\n x: bounds.left,\n y: bounds.bottom\n });\n return {\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\n };\n }\n _onShow(_duration) {}\n _onHide(_duration) {}\n /**\r\n * Plays initial reveal animation regardless if element is currently hidden\r\n * or visible.\r\n *\r\n * @param duration Duration of the animation in milliseconds\r\n * @param delay Delay showing of the element by X milliseconds\r\n * @return Promise\r\n */\n appear(duration, delay) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.hide(0);\n if (delay) {\n return new Promise((success, _error) => {\n this.setTimeout(() => {\n success(this.show(duration));\n }, delay);\n });\n } else {\n return this.show(duration);\n }\n });\n }\n /**\r\n * Shows currently hidden element and returns a `Promise` which completes\r\n * when all showing animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.show().then(function(ev) {\r\n * console.log(\"Series is now fully visible\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\n show(duration) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._isShowing) {\n this._isHidden = false;\n this._isShowing = true;\n this._isHiding = false;\n if (this.states.lookup(\"default\").get(\"visible\")) {\n this.set(\"visible\", true);\n }\n this._onShow(duration);\n const animations = this.states.applyAnimate(\"default\", duration);\n yield waitForAnimations(animations);\n this._isShowing = false;\n }\n });\n }\n /**\r\n * Hides the element and returns a `Promise` which completes when all hiding\r\n * animations are finished.\r\n *\r\n * ```TypeScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n * ```JavaScript\r\n * series.hide().then(function(ev) {\r\n * console.log(\"Series finished hiding\");\r\n * })\r\n * ```\r\n *\r\n * @return Promise\r\n */\n hide(duration) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this._isHiding && !this._isHidden) {\n this._isHiding = true;\n this._isShowing = false;\n let state = this.states.lookup(\"hidden\");\n if (!state) {\n state = this.states.create(\"hidden\", {\n \"opacity\": 0,\n \"visible\": false\n });\n }\n this._isHidden = true;\n this._onHide(duration);\n const animations = this.states.applyAnimate(\"hidden\", duration);\n yield waitForAnimations(animations);\n this._isHiding = false;\n }\n });\n }\n /**\r\n * Returns `true` if this element is currently hidden.\r\n *\r\n * @return Is hidden?\r\n */\n isHidden() {\n return this._isHidden;\n }\n /**\r\n * Returns `true` if this element is currently animating to a default state.\r\n *\r\n * @return Is showing?\r\n */\n isShowing() {\n return this._isShowing;\n }\n /**\r\n * Returns `true` if this element is currently animating to a hidden state.\r\n *\r\n * @return Is hiding?\r\n */\n isHiding() {\n return this._isHiding;\n }\n /**\r\n * Returns `true` if this element is currently hovered by a pointer.\r\n *\r\n * @return Is hovered?\r\n */\n isHover() {\n return this._display.hovering();\n }\n /**\r\n * Returns `true` if this element does currently have focus.\r\n *\r\n * @return Is focused?\r\n */\n isFocus() {\n return this._root.focused(this);\n }\n /**\r\n * Returns `true` if this element is currently being dragged.\r\n *\r\n * @return Is dragged?\r\n */\n isDragging() {\n return this._isDragging;\n }\n /**\r\n * Returns `false` if if either public or private setting `visible` is set\r\n * to `false`, or `forceHidden` is set to `true`.\r\n *\r\n * @return Visible?\r\n */\n isVisible() {\n if (this.get(\"visible\") && this.getPrivate(\"visible\") && !this.get(\"forceHidden\")) {\n return true;\n }\n return false;\n }\n /**\r\n * Same as `isVisible()`, except it checks all ascendants, too.\r\n *\r\n * @since 5.2.7\r\n * @return Visible?\r\n */\n isVisibleDeep() {\n return this._parent ? this._parent.isVisibleDeep() && this.isVisible() : this.isVisible();\n }\n /**\r\n * Returns an actual opacity of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.2.11\r\n */\n compositeOpacity() {\n const opacity = this.get(\"opacity\", 1);\n return this._parent ? this._parent.compositeOpacity() * opacity : opacity;\n }\n /**\r\n * Returns an actual scale of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\n compositeScale() {\n const scale = this.get(\"scale\", 1);\n return this._parent ? this._parent.compositeScale() * scale : scale;\n }\n /**\r\n * Returns an actual roation of the element, taking into account all parents.\r\n *\r\n * @return Opacity\r\n * @since 5.9.2\r\n */\n compositeRotation() {\n const rotation = this.get(\"rotation\", 0);\n return this._parent ? this._parent.compositeRotation() + rotation : rotation;\n }\n /**\r\n * Returns width of this element in pixels.\r\n *\r\n * @return Width (px)\r\n */\n width() {\n let width = this.get(\"width\");\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\n let minWidth = this.get(\"minWidth\", this.getPrivate(\"minWidth\"));\n let privateWidth = this.getPrivate(\"width\");\n let w = 0;\n if ($type.isNumber(privateWidth)) {\n w = privateWidth;\n } else {\n if (width == null) {\n if (this._adjustedLocalBounds) {\n w = this._adjustedLocalBounds.right - this._adjustedLocalBounds.left;\n }\n } else {\n if (width instanceof Percent) {\n const parent = this.parent;\n if (parent) {\n w = parent.innerWidth() * width.value;\n } else {\n w = this._root.width() * width.value;\n }\n } else if ($type.isNumber(width)) {\n w = width;\n }\n }\n }\n if ($type.isNumber(minWidth)) {\n w = Math.max(minWidth, w);\n }\n if ($type.isNumber(maxWidth)) {\n w = Math.min(maxWidth, w);\n }\n return w;\n }\n /**\r\n * Returns maximum allowed width of this element in pixels.\r\n *\r\n * @return Maximum width (px)\r\n */\n maxWidth() {\n let maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\n if ($type.isNumber(maxWidth)) {\n return maxWidth;\n } else {\n let width = this.get(\"width\");\n if ($type.isNumber(width)) {\n return width;\n }\n }\n const parent = this.parent;\n if (parent) {\n return parent.innerWidth();\n }\n return this._root.width();\n }\n /**\r\n * Returns maximum allowed height of this element in pixels.\r\n *\r\n * @return Maximum height (px)\r\n */\n maxHeight() {\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\n if ($type.isNumber(maxHeight)) {\n return maxHeight;\n } else {\n let height = this.get(\"height\");\n if ($type.isNumber(height)) {\n return height;\n }\n }\n const parent = this.parent;\n if (parent) {\n return parent.innerHeight();\n }\n return this._root.height();\n }\n /**\r\n * Returns height of this element in pixels.\r\n *\r\n * @return Height (px)\r\n */\n height() {\n let height = this.get(\"height\");\n let maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\n let minHeight = this.get(\"minHeight\", this.getPrivate(\"minHeight\"));\n let privateHeight = this.getPrivate(\"height\");\n let h = 0;\n if ($type.isNumber(privateHeight)) {\n h = privateHeight;\n } else {\n if (height == null) {\n if (this._adjustedLocalBounds) {\n h = this._adjustedLocalBounds.bottom - this._adjustedLocalBounds.top;\n }\n } else {\n if (height instanceof Percent) {\n const parent = this.parent;\n if (parent) {\n h = parent.innerHeight() * height.value;\n } else {\n h = this._root.height() * height.value;\n }\n } else if ($type.isNumber(height)) {\n h = height;\n }\n }\n }\n if ($type.isNumber(minHeight)) {\n h = Math.max(minHeight, h);\n }\n if ($type.isNumber(maxHeight)) {\n h = Math.min(maxHeight, h);\n }\n return h;\n }\n _findStaticTemplate(f) {\n // templateField overrides template\n if (this._templateField && f(this._templateField)) {\n return this._templateField;\n }\n return super._findStaticTemplate(f);\n }\n _walkParents(f) {\n if (this._parent) {\n this._walkParent(f);\n }\n }\n _walkParent(f) {\n if (this._parent) {\n this._parent._walkParent(f);\n }\n f(this);\n }\n /**\r\n * Parent [[Container]] of this element.\r\n *\r\n * @return Parent container\r\n */\n get parent() {\n return this._parent;\n }\n _setParent(parent) {\n let updateChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const prevParent = this._parent;\n if (parent !== prevParent) {\n this.markDirtyBounds();\n parent.markDirty();\n this._parent = parent;\n if (updateChildren) {\n this._removeParent(prevParent);\n if (parent) {\n this._addPercentageSizeChildren();\n this._addPercentagePositionChildren();\n }\n }\n this.markDirtyPosition();\n this._applyThemes();\n }\n }\n /**\r\n * Returns an instance of [[NumberFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return NumberFormatter instace\r\n */\n getNumberFormatter() {\n return this.get(\"numberFormatter\", this._root.numberFormatter);\n }\n /**\r\n * Returns an instance of [[DateFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DateFormatter instace\r\n */\n getDateFormatter() {\n return this.get(\"dateFormatter\", this._root.dateFormatter);\n }\n /**\r\n * Returns an instance of [[DurationFormatter]] used in this element.\r\n *\r\n * If this element does not have it set, global one form [[Root]] is used.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/using-formatters/} for more info\r\n * @return DurationFormatter instace\r\n */\n getDurationFormatter() {\n return this.get(\"durationFormatter\", this._root.durationFormatter);\n }\n /**\r\n * Converts X/Y coordinate within this element to a global coordinate.\r\n *\r\n * @param point Local coordinate\r\n * @return Global coordinate\r\n */\n toGlobal(point) {\n return this._display.toGlobal(point);\n }\n /**\r\n * Converts global X/Y coordinate to a coordinate within this element.\r\n *\r\n * @param point Global coordinate\r\n * @return Local coordinate\r\n */\n toLocal(point) {\n return this._display.toLocal(point);\n }\n _getDownPoint() {\n const id = this._getDownPointId();\n if (id) {\n return this._downPoints[id];\n }\n }\n _getDownPointId() {\n if (this._downPoints) {\n return $object.keysOrdered(this._downPoints, (a, b) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n return 0;\n })[0];\n }\n }\n /**\r\n * Moves sprite to the end of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\n toFront() {\n const parent = this.parent;\n if (parent) {\n parent.children.moveValue(this, parent.children.length - 1);\n }\n }\n /**\r\n * Moves sprite to the beginning of the parent's children array.\r\n *\r\n * Depending on `layout` setting of the parten container, it may effect the\r\n * positioning or overlapping order of the elements.\r\n */\n toBack() {\n const parent = this.parent;\n if (parent) {\n parent.children.moveValue(this, 0);\n }\n }\n}\nObject.defineProperty(Sprite, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Sprite\"\n});\nObject.defineProperty(Sprite, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Entity.classNames.concat([Sprite.className])\n});\n//# sourceMappingURL=Sprite.js.map","import { Entity } from \"../../util/Entity\";\n/**\r\n * Base class for patterns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\nexport class Pattern extends Entity {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_display\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeGraphics()\n });\n Object.defineProperty(this, \"_backgroundDisplay\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeGraphics()\n });\n Object.defineProperty(this, \"_clear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_pattern\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _afterNew() {\n // Applying themes because pattern will not have parent\n super._afterNewApplyThemes();\n }\n get pattern() {\n return this._pattern;\n }\n _draw() {}\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"repetition\") || this.isDirty(\"width\") || this.isDirty(\"height\") || this.isDirty(\"rotation\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"colorOpacity\") || this.isDirty(\"fillOpacity\")) {\n this._clear = true;\n }\n this._checkDirtyFill();\n }\n _checkDirtyFill() {\n if (this.isDirty(\"color\") || this.isDirty(\"fill\")) {\n this._clear = true;\n }\n }\n _changed() {\n super._changed();\n if (this._clear) {\n const repetition = this.get(\"repetition\", \"\");\n const width = this.get(\"width\", 100);\n const height = this.get(\"height\", 100);\n const fill = this.get(\"fill\");\n const fillOpacity = this.get(\"fillOpacity\", 1);\n const backgroundDisplay = this._backgroundDisplay;\n const display = this._display;\n display.clear();\n backgroundDisplay.clear();\n if (fill && fillOpacity > 0) {\n backgroundDisplay.beginFill(fill, fillOpacity);\n backgroundDisplay.drawRect(0, 0, width, height);\n backgroundDisplay.endFill();\n }\n display.angle = this.get(\"rotation\", 0);\n //display.pivot = { x: width / 2, y: height / 2 };\n this._draw();\n this._pattern = this._root._renderer.createPattern(display, backgroundDisplay, repetition, width, height);\n }\n this._clear = false;\n }\n}\nObject.defineProperty(Pattern, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Pattern\"\n});\nObject.defineProperty(Pattern, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Entity.classNames.concat([Pattern.className])\n});\n//# sourceMappingURL=Pattern.js.map","import { Pattern } from \"./Pattern\";\n/**\r\n * Picture pattern.\r\n *\r\n * @since 5.2.15\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info\r\n */\nexport class PicturePattern extends Pattern {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_image\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _beforeChanged() {\n super._beforeChanged();\n this._clear = true;\n if (this.isDirty(\"src\")) {\n this._load();\n }\n const canvas = this.get(\"canvas\");\n if (canvas) {\n this.set(\"width\", canvas.width);\n this.set(\"height\", canvas.height);\n }\n }\n _draw() {\n super._draw();\n const image = this._image;\n if (image) {\n const patternWidth = this.get(\"width\", 100);\n const patternHeight = this.get(\"height\", 100);\n // Fit\n const fit = this.get(\"fit\", \"image\");\n let width = 0;\n let height = 0;\n if (fit == \"pattern\") {\n width = patternWidth;\n height = patternHeight;\n } else {\n width = image.width;\n height = image.height;\n if (fit == \"image\") {\n this.set(\"width\", width);\n this.set(\"height\", height);\n }\n }\n // Position\n const centered = this.get(\"centered\", true);\n let x = 0;\n let y = 0;\n if (centered) {\n x = patternWidth / 2 - width / 2;\n y = patternHeight / 2 - height / 2;\n }\n this._display.image(image, width, height, x, y);\n }\n const canvas = this.get(\"canvas\");\n if (canvas) {\n this._display.image(canvas, canvas.width, canvas.height, 0, 0);\n }\n }\n _load() {\n const src = this.get(\"src\");\n if (src) {\n const image = new Image();\n //image.crossOrigin = \"Anonymous\";\n image.src = src;\n image.decode().then(() => {\n this._image = image;\n this._draw();\n if (this.events.isEnabled(\"loaded\")) {\n this.events.dispatch(\"loaded\", {\n type: \"loaded\",\n target: this\n });\n }\n }).catch(_error => {\n // TODO: maybe raise error?\n });\n }\n }\n}\nObject.defineProperty(PicturePattern, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"PicturePattern\"\n});\nObject.defineProperty(PicturePattern, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Pattern.classNames.concat([PicturePattern.className])\n});\n//# sourceMappingURL=PicturePattern.js.map","/**\r\n * From https://github.com/pixijs/pixi.js/blob/3dd0ff9a935f0bc13a09aefff9eb2872f02c51b9/packages/canvas/canvas-renderer/src/utils/mapCanvasBlendModesToPixi.ts#L13\r\n */\nexport var BlendMode;\n(function (BlendMode) {\n BlendMode[\"ADD\"] = \"lighter\";\n BlendMode[\"COLOR\"] = \"color\";\n BlendMode[\"COLOR_BURN\"] = \"color-burn\";\n BlendMode[\"COLOR_DODGE\"] = \"color-dodge\";\n BlendMode[\"DARKEN\"] = \"darken\";\n BlendMode[\"DIFFERENCE\"] = \"difference\";\n BlendMode[\"DST_OVER\"] = \"destination-over\";\n BlendMode[\"EXCLUSION\"] = \"exclusion\";\n BlendMode[\"HARD_LIGHT\"] = \"hard-light\";\n BlendMode[\"HUE\"] = \"hue\";\n BlendMode[\"LIGHTEN\"] = \"lighten\";\n BlendMode[\"LUMINOSITY\"] = \"luminosity\";\n BlendMode[\"MULTIPLY\"] = \"multiply\";\n BlendMode[\"NORMAL\"] = \"source-over\";\n BlendMode[\"OVERLAY\"] = \"overlay\";\n BlendMode[\"SATURATION\"] = \"saturation\";\n BlendMode[\"SCREEN\"] = \"screen\";\n BlendMode[\"SOFT_LIGHT\"] = \"soft-light\";\n BlendMode[\"SRC_ATOP\"] = \"source-atop\";\n BlendMode[\"XOR\"] = \"xor\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=Renderer.js.map","import { PicturePattern } from \"../render/patterns/PicturePattern\";\nimport { Sprite } from \"./Sprite\";\nimport { BlendMode } from \"./backend/Renderer\";\nimport * as $type from \"../util/Type\";\nimport * as $array from \"../util/Array\";\nexport const visualSettings = [\"fill\", \"fillOpacity\", \"stroke\", \"strokeWidth\", \"strokeOpacity\", \"fillPattern\", \"strokePattern\", \"fillGradient\", \"strokeGradient\", \"strokeDasharray\", \"strokeDashoffset\", \"shadowBlur\", \"shadowColor\", \"shadowOpacity\", \"shadowOffsetX\", \"shadowOffsetY\", \"blur\", \"sepia\", \"invert\", \"brightness\", \"hue\", \"contrast\", \"saturate\"];\n/**\r\n * Base class used for drawing shapes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\nexport class Graphics extends Sprite {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_display\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeGraphics()\n });\n Object.defineProperty(this, \"_clear\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"draw\") || this.isDirty(\"svgPath\")) {\n this.markDirtyBounds();\n }\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\") || this.isDirty(\"visible\") || this.isDirty(\"forceHidden\") || this.isDirty(\"scale\") || this.isDirty(\"fillGradient\") || this.isDirty(\"strokeGradient\") || this.isDirty(\"fillPattern\") || this.isDirty(\"strokePattern\") || this.isDirty(\"fillOpacity\") || this.isDirty(\"strokeOpacity\") || this.isDirty(\"strokeWidth\") || this.isDirty(\"draw\") || this.isDirty(\"blendMode\") || this.isDirty(\"strokeDasharray\") || this.isDirty(\"strokeDashoffset\") || this.isDirty(\"svgPath\") || this.isDirty(\"lineJoin\") || this.isDirty(\"shadowColor\") || this.isDirty(\"shadowBlur\") || this.isDirty(\"shadowOffsetX\") || this.isDirty(\"shadowOffsetY\")) {\n this._clear = true;\n }\n this._display.crisp = this.get(\"crisp\", false);\n if (this.isDirty(\"fillGradient\")) {\n const gradient = this.get(\"fillGradient\");\n if (gradient) {\n this._display.isMeasured = true;\n const gradientTarget = gradient.get(\"target\");\n if (gradientTarget) {\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\n this._markDirtyKey(\"fill\");\n }));\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\n this._markDirtyKey(\"fill\");\n }));\n }\n }\n }\n if (this.isDirty(\"strokeGradient\")) {\n const gradient = this.get(\"strokeGradient\");\n if (gradient) {\n this._display.isMeasured = true;\n const gradientTarget = gradient.get(\"target\");\n if (gradientTarget) {\n this._disposers.push(gradientTarget.events.on(\"boundschanged\", () => {\n this._markDirtyKey(\"stroke\");\n }));\n this._disposers.push(gradientTarget.events.on(\"positionchanged\", () => {\n this._markDirtyKey(\"stroke\");\n }));\n }\n }\n }\n }\n _changed() {\n super._changed();\n if (this._clear) {\n this.markDirtyBounds();\n this.markDirtyLayer();\n this._display.clear();\n let strokeDasharray = this.get(\"strokeDasharray\");\n if ($type.isNumber(strokeDasharray)) {\n if (strokeDasharray < 0.5) {\n strokeDasharray = [0];\n } else {\n strokeDasharray = [strokeDasharray];\n }\n }\n this._display.setLineDash(strokeDasharray);\n const strokeDashoffset = this.get(\"strokeDashoffset\");\n if (strokeDashoffset) {\n this._display.setLineDashOffset(strokeDashoffset);\n }\n const blendMode = this.get(\"blendMode\", BlendMode.NORMAL);\n this._display.blendMode = blendMode;\n const draw = this.get(\"draw\");\n if (draw && typeof draw === \"function\") {\n draw(this._display, this);\n }\n const svgPath = this.get(\"svgPath\");\n if (svgPath != null) {\n this._display.svgPath(svgPath);\n }\n }\n }\n _afterChanged() {\n super._afterChanged();\n if (this._clear) {\n const fill = this.get(\"fill\");\n const fillGradient = this.get(\"fillGradient\");\n const fillPattern = this.get(\"fillPattern\");\n const fillOpacity = this.get(\"fillOpacity\");\n const stroke = this.get(\"stroke\");\n const strokeGradient = this.get(\"strokeGradient\");\n const strokePattern = this.get(\"strokePattern\");\n const shadowColor = this.get(\"shadowColor\");\n const shadowBlur = this.get(\"shadowBlur\");\n const shadowOffsetX = this.get(\"shadowOffsetX\");\n const shadowOffsetY = this.get(\"shadowOffsetY\");\n const shadowOpacity = this.get(\"shadowOpacity\");\n if (shadowColor && (shadowBlur || shadowOffsetX || shadowOffsetY)) {\n this._display.shadow(shadowColor, shadowBlur, shadowOffsetX, shadowOffsetY, shadowOpacity);\n }\n if (fill && !fillGradient) {\n this._display.beginFill(fill, fillOpacity);\n this._display.endFill();\n }\n if (fillGradient) {\n if (fill) {\n const stops = fillGradient.get(\"stops\", []);\n if (stops.length) {\n $array.each(stops, stop => {\n if ((!stop.color || stop.colorInherited) && fill) {\n stop.color = fill;\n stop.colorInherited = true;\n }\n if (stop.opacity == null || stop.opacityInherited) {\n stop.opacity = fillOpacity;\n stop.opacityInherited = true;\n }\n });\n }\n }\n const gradient = fillGradient.getFill(this);\n if (gradient) {\n this._display.beginFill(gradient, fillOpacity);\n this._display.endFill();\n }\n }\n if (fillPattern) {\n const pattern = fillPattern.pattern;\n if (pattern) {\n this._display.beginFill(pattern, fillOpacity);\n this._display.endFill();\n if (fillPattern instanceof PicturePattern) {\n fillPattern.events.once(\"loaded\", () => {\n this._clear = true;\n this.markDirty();\n });\n }\n }\n }\n if (stroke || strokeGradient || strokePattern) {\n const strokeOpacity = this.get(\"strokeOpacity\");\n let strokeWidth = this.get(\"strokeWidth\", 1);\n if (this.get(\"nonScalingStroke\")) {\n strokeWidth = strokeWidth / this.get(\"scale\", 1);\n }\n if (this.get(\"crisp\")) {\n strokeWidth /= this._root._renderer.resolution;\n }\n const lineJoin = this.get(\"lineJoin\");\n if (stroke && !strokeGradient) {\n this._display.lineStyle(strokeWidth, stroke, strokeOpacity, lineJoin);\n this._display.endStroke();\n }\n if (strokeGradient) {\n const stops = strokeGradient.get(\"stops\", []);\n if (stops.length) {\n $array.each(stops, stop => {\n if ((!stop.color || stop.colorInherited) && stroke) {\n stop.color = stroke;\n stop.colorInherited = true;\n }\n if (stop.opacity == null || stop.opacityInherited) {\n stop.opacity = strokeOpacity;\n stop.opacityInherited = true;\n }\n });\n }\n const gradient = strokeGradient.getFill(this);\n if (gradient) {\n this._display.lineStyle(strokeWidth, gradient, strokeOpacity, lineJoin);\n this._display.endStroke();\n }\n }\n if (strokePattern) {\n /*\r\n let changed = false;\r\n \r\n if (stroke && (!strokePattern.get(\"color\") || strokePattern.get(\"colorInherited\"))) {\r\n strokePattern.set(\"color\", stroke);\r\n strokePattern.set(\"colorInherited\", true);\r\n changed = true;\r\n }\r\n if (changed) {\r\n // @todo: is this OK?\r\n strokePattern._changed();\r\n }\r\n */\n let pattern = strokePattern.pattern;\n if (pattern) {\n this._display.lineStyle(strokeWidth, pattern, strokeOpacity, lineJoin);\n this._display.endStroke();\n if (strokePattern instanceof PicturePattern) {\n strokePattern.events.once(\"loaded\", () => {\n this._clear = true;\n this.markDirty();\n });\n }\n }\n }\n }\n if (this.getPrivate(\"showingTooltip\")) {\n this.showTooltip();\n }\n }\n this._clear = false;\n }\n}\nObject.defineProperty(Graphics, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Graphics\"\n});\nObject.defineProperty(Graphics, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Sprite.classNames.concat([Graphics.className])\n});\n//# sourceMappingURL=Graphics.js.map","import { Graphics } from \"./Graphics\";\n/**\r\n * Draws a rectangle.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\nexport class Rectangle extends Graphics {\n _afterNew() {\n super._afterNew();\n this._display.isMeasured = true;\n this.setPrivateRaw(\"trustBounds\", true);\n }\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"width\") || this.isDirty(\"height\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\n this._clear = true;\n }\n }\n _changed() {\n super._changed();\n if (this._clear && !this.get(\"draw\")) {\n this._draw();\n }\n }\n _draw() {\n this._display.drawRect(0, 0, this.width(), this.height());\n }\n _updateSize() {\n this.markDirty();\n this._clear = true;\n }\n}\nObject.defineProperty(Rectangle, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Rectangle\"\n});\nObject.defineProperty(Rectangle, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Graphics.classNames.concat([Rectangle.className])\n});\n//# sourceMappingURL=Rectangle.js.map","import { Entity } from \"../util/Entity\";\nexport function eachChildren(container, f) {\n if (container.get(\"reverseChildren\", false)) {\n container.children.eachReverse(f);\n } else {\n container.children.each(f);\n }\n}\n/**\r\n * Base class for [[Container]] layouts.\r\n */\nexport class Layout extends Entity {}\nObject.defineProperty(Layout, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Layout\"\n});\nObject.defineProperty(Layout, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Entity.classNames.concat([Layout.className])\n});\n//# sourceMappingURL=Layout.js.map","import { Layout, eachChildren } from \"./Layout\";\nimport * as $type from \"../util/Type\";\nimport { Percent } from \"../util/Percent\";\n/**\r\n * A horizontal children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\nexport class HorizontalLayout extends Layout {\n /**\r\n * @ignore\r\n */\n updateContainer(container) {\n let paddingLeft = container.get(\"paddingLeft\", 0);\n let availableWidth = container.innerWidth();\n let totalPercent = 0;\n eachChildren(container, child => {\n if (child.isVisible()) {\n if (child.get(\"position\") == \"relative\") {\n let childWidth = child.get(\"width\");\n if (childWidth instanceof Percent) {\n totalPercent += childWidth.value;\n let w = availableWidth * childWidth.value;\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\n if (minWidth > w) {\n availableWidth -= minWidth;\n totalPercent -= childWidth.value;\n }\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\n if (w > maxWidth) {\n availableWidth -= maxWidth;\n totalPercent -= childWidth.value;\n }\n } else {\n if (!$type.isNumber(childWidth)) {\n childWidth = child.width();\n }\n availableWidth -= childWidth + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0);\n }\n }\n }\n });\n if (availableWidth <= 0 || availableWidth == Infinity) {\n availableWidth = .1;\n }\n //if (availableWidth > 0) {\n eachChildren(container, child => {\n if (child.isVisible()) {\n if (child.get(\"position\") == \"relative\") {\n let childWidth = child.get(\"width\");\n if (childWidth instanceof Percent) {\n let privateWidth = availableWidth * childWidth.value / totalPercent - child.get(\"marginLeft\", 0) - child.get(\"marginRight\", 0);\n let minWidth = child.get(\"minWidth\", child.getPrivate(\"minWidth\", -Infinity));\n let maxWidth = child.get(\"maxWidth\", child.getPrivate(\"maxWidth\", Infinity));\n privateWidth = Math.min(Math.max(minWidth, privateWidth), maxWidth);\n child.setPrivate(\"width\", privateWidth);\n } else {\n if (child._prevSettings.width instanceof Percent) {\n child.setPrivate(\"width\", undefined);\n }\n }\n }\n }\n });\n //}\n let prevX = paddingLeft;\n eachChildren(container, child => {\n if (child.get(\"position\") == \"relative\") {\n if (child.isVisible()) {\n let bounds = child.adjustedLocalBounds();\n let marginLeft = child.get(\"marginLeft\", 0);\n let marginRight = child.get(\"marginRight\", 0);\n let maxWidth = child.get(\"maxWidth\");\n let left = bounds.left;\n let right = bounds.right;\n if (maxWidth) {\n if (right - left > maxWidth) {\n right = left + maxWidth;\n }\n }\n let x = prevX + marginLeft - left;\n child.setPrivate(\"x\", x);\n prevX = x + right + marginRight;\n } else {\n child.setPrivate(\"x\", undefined);\n }\n }\n });\n }\n}\nObject.defineProperty(HorizontalLayout, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"HorizontalLayout\"\n});\nObject.defineProperty(HorizontalLayout, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Layout.classNames.concat([HorizontalLayout.className])\n});\n//# sourceMappingURL=HorizontalLayout.js.map","import { Layout, eachChildren } from \"./Layout\";\nimport * as $type from \"../util/Type\";\nimport { Percent } from \"../util/Percent\";\n/**\r\n * A vertical children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\nexport class VerticalLayout extends Layout {\n /**\r\n * @ignore\r\n */\n updateContainer(container) {\n let paddingTop = container.get(\"paddingTop\", 0);\n let availableHeight = container.innerHeight();\n let totalPercent = 0;\n eachChildren(container, child => {\n if (child.isVisible()) {\n if (child.get(\"position\") == \"relative\") {\n let childHeight = child.get(\"height\");\n if (childHeight instanceof Percent) {\n totalPercent += childHeight.value;\n let h = availableHeight * childHeight.value;\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\n if (minHeight > h) {\n availableHeight -= minHeight;\n totalPercent -= childHeight.value;\n }\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\n if (h > maxHeight) {\n availableHeight -= maxHeight;\n totalPercent -= childHeight.value;\n }\n } else {\n if (!$type.isNumber(childHeight)) {\n childHeight = child.height();\n }\n availableHeight -= childHeight + child.get(\"marginTop\", 0) + child.get(\"marginBottom\", 0);\n }\n }\n }\n });\n if (availableHeight <= 0 || availableHeight == Infinity) {\n availableHeight = .1;\n }\n //if (availableHeight > 0) {\n eachChildren(container, child => {\n if (child.isVisible()) {\n if (child.get(\"position\") == \"relative\") {\n let childHeight = child.get(\"height\");\n if (childHeight instanceof Percent) {\n let privateHeight = availableHeight * childHeight.value / totalPercent - child.get(\"marginTop\", 0) - child.get(\"marginBottom\", 0);\n let minHeight = child.get(\"minHeight\", child.getPrivate(\"minHeight\", -Infinity));\n let maxHeight = child.get(\"maxHeight\", child.getPrivate(\"maxHeight\", Infinity));\n privateHeight = Math.min(Math.max(minHeight, privateHeight), maxHeight);\n child.setPrivate(\"height\", privateHeight);\n } else {\n if (child._prevSettings.height instanceof Percent) {\n child.setPrivate(\"height\", undefined);\n }\n }\n }\n }\n });\n //}\n let prevY = paddingTop;\n eachChildren(container, child => {\n if (child.get(\"position\") == \"relative\") {\n if (child.isVisible()) {\n let bounds = child.adjustedLocalBounds();\n let marginTop = child.get(\"marginTop\", 0);\n let top = bounds.top;\n let bottom = bounds.bottom;\n let maxHeight = child.get(\"maxHeight\");\n if (maxHeight) {\n if (bottom - top > maxHeight) {\n bottom = top + maxHeight;\n }\n }\n let marginBottom = child.get(\"marginBottom\", 0);\n let y = prevY + marginTop - top;\n child.setPrivate(\"y\", y);\n prevY = y + bottom + marginBottom;\n } else {\n child.setPrivate(\"y\", undefined);\n }\n }\n });\n }\n}\nObject.defineProperty(VerticalLayout, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"VerticalLayout\"\n});\nObject.defineProperty(VerticalLayout, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Layout.classNames.concat([VerticalLayout.className])\n});\n//# sourceMappingURL=VerticalLayout.js.map","import { Layout, eachChildren } from \"./Layout\";\nimport * as $array from \"../util/Array\";\nimport * as $math from \"../util/Math\";\n/**\r\n * A grid children layout for [[Container]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/#Layout} for more info\r\n */\nexport class GridLayout extends Layout {\n _afterNew() {\n this._setRawDefault(\"maxColumns\", Number.MAX_VALUE);\n super._afterNew();\n }\n /**\r\n * @ignore\r\n */\n updateContainer(container) {\n let paddingLeft = container.get(\"paddingLeft\", 0);\n let paddingRight = container.get(\"paddingRight\", 0);\n let paddingTop = container.get(\"paddingTop\", 0);\n let availableWidth = container.maxWidth() - paddingLeft - paddingRight;\n let minCellWidth = availableWidth;\n let maxCellWidth = 1;\n eachChildren(container, child => {\n if (child.get(\"visible\") && child.getPrivate(\"visible\") && !child.get(\"forceHidden\")) {\n if (child.get(\"position\") != \"absolute\") {\n let childWidth = child.width();\n if (childWidth < minCellWidth) {\n minCellWidth = childWidth;\n }\n if (childWidth > maxCellWidth) {\n maxCellWidth = childWidth;\n }\n }\n }\n });\n minCellWidth = $math.fitToRange(minCellWidth, 1, availableWidth);\n maxCellWidth = $math.fitToRange(maxCellWidth, 1, availableWidth);\n let columnCount = 1;\n if (this.get(\"fixedWidthGrid\")) {\n columnCount = availableWidth / maxCellWidth;\n } else {\n columnCount = availableWidth / minCellWidth;\n }\n columnCount = Math.max(1, Math.floor(columnCount));\n columnCount = Math.min(this.get(\"maxColumns\", Number.MAX_VALUE), columnCount);\n let columnWidths = this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\n let prevY = paddingTop;\n let column = 0;\n let maxColumnHeight = 0;\n columnCount = columnWidths.length;\n let prevX = paddingLeft;\n eachChildren(container, child => {\n if (child.get(\"position\") == \"relative\" && child.isVisible()) {\n const marginTop = child.get(\"marginTop\", 0);\n const marginBottom = child.get(\"marginBottom\", 0);\n let bounds = child.adjustedLocalBounds();\n let marginLeft = child.get(\"marginLeft\", 0);\n let marginRight = child.get(\"marginRight\", 0);\n let x = prevX + marginLeft - bounds.left;\n let y = prevY + marginTop - bounds.top;\n child.setPrivate(\"x\", x);\n child.setPrivate(\"y\", y);\n prevX += columnWidths[column] + marginRight;\n maxColumnHeight = Math.max(maxColumnHeight, child.height() + marginTop + marginBottom);\n column++;\n if (column >= columnCount) {\n column = 0;\n prevX = paddingLeft;\n prevY += maxColumnHeight;\n }\n }\n });\n }\n /**\r\n * @ignore\r\n */\n getColumnWidths(container, columnCount, maxCellWidth, availableWidth) {\n let totalWidth = 0;\n let columnWidths = [];\n let column = 0;\n eachChildren(container, child => {\n let bounds = child.adjustedLocalBounds();\n if (child.get(\"position\") != \"absolute\" && child.isVisible()) {\n if (this.get(\"fixedWidthGrid\")) {\n columnWidths[column] = maxCellWidth;\n } else {\n columnWidths[column] = Math.max(columnWidths[column] | 0, bounds.right - bounds.left + child.get(\"marginLeft\", 0) + child.get(\"marginRight\", 0));\n }\n if (column < container.children.length - 1) {\n column++;\n if (column == columnCount) {\n column = 0;\n }\n }\n }\n });\n $array.each(columnWidths, w => {\n totalWidth += w;\n });\n if (totalWidth > availableWidth) {\n if (columnCount > 2) {\n columnCount -= 1;\n return this.getColumnWidths(container, columnCount, maxCellWidth, availableWidth);\n } else {\n return [availableWidth];\n }\n }\n return columnWidths;\n }\n}\nObject.defineProperty(GridLayout, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"GridLayout\"\n});\nObject.defineProperty(GridLayout, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Layout.classNames.concat([GridLayout.className])\n});\n//# sourceMappingURL=GridLayout.js.map","import { Color } from \"./Color\";\nimport * as $type from \"./Type\";\nexport class TextFormatter {\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\n static escape(text) {\n return text.replace(/\\[\\[/g, this.prefix + \"1\").replace(/([^\\/\\]]{1})\\]\\]/g, \"$1\" + this.prefix + \"2\").replace(/\\]\\]/g, this.prefix + \"2\").replace(/\\{\\{/g, this.prefix + \"3\").replace(/\\}\\}/g, this.prefix + \"4\").replace(/\\'\\'/g, this.prefix + \"5\");\n }\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\n static unescape(text) {\n return text.replace(new RegExp(this.prefix + \"1\", \"g\"), \"[[\").replace(new RegExp(this.prefix + \"2\", \"g\"), \"]]\").replace(new RegExp(this.prefix + \"3\", \"g\"), \"{{\").replace(new RegExp(this.prefix + \"4\", \"g\"), \"}}\").replace(new RegExp(this.prefix + \"5\", \"g\"), \"''\");\n }\n /**\r\n * Cleans up the text text for leftover double square brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Cleaned up text\r\n */\n static cleanUp(text) {\n return text.replace(/\\[\\[/g, \"[\").replace(/\\]\\]/g, \"]\").replace(/\\{\\{/g, \"{\").replace(/\\}\\}/g, \"}\").replace(/\\'\\'/g, \"'\");\n }\n /**\r\n * Splits string into chunks. (style blocks, quoted blocks, regular blocks)\r\n *\r\n * If the second parameter `quotedBlocks` is set to `true` this method will\r\n * also single out text blocks enclosed within single quotes that no\r\n * formatting should be applied to, and they should be displayed as is.\r\n *\r\n * Default for the above is `false`, so that you can use single quote in text\r\n * without escaping it.\r\n *\r\n * If enabled, single quotes can be escaped by doubling it - adding two\r\n * single quotes, which will be replaced by a one single quote in the final\r\n * output.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Text to chunk\r\n * @param quotedBlocks Use quoted blocks\r\n * @param noFormatting Formatting blocks will be treated as regular text\r\n * @return Array of string chunks\r\n */\n static chunk(text) {\n let quotedBlocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let noFormatting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Init result\n let res = [];\n // Replace double (escaped) square spaces and quotes with temporary codes\n text = this.escape(text);\n // Deal with style blocks\n let chunks = quotedBlocks ? text.split(\"'\") : [text];\n for (let i = 0; i < chunks.length; i++) {\n let chunk = chunks[i];\n // Empty?\n if (chunk === \"\") {\n continue;\n }\n if (i % 2 === 0) {\n // Text outside quotes\n // Parse for style blocks which are \"text\" chunks, the rest chunks are\n // \"value\"\n chunk = chunk.replace(/\\]\\[/g, \"]\" + $type.PLACEHOLDER + \"[\");\n chunk = chunk.replace(/\\[\\]/g, \"[ ]\");\n let chunks2 = chunk.split(/[\\[\\]]+/);\n for (let i2 = 0; i2 < chunks2.length; i2++) {\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\n // Placeholder?\n if (chunk2 === $type.PLACEHOLDER) {\n continue;\n }\n // Empty?\n if (chunk2 === \"\") {\n continue;\n }\n // Block or value\n if (i2 % 2 === 0) {\n res.push({\n \"type\": \"value\",\n \"text\": chunk2\n });\n } else {\n res.push({\n \"type\": noFormatting ? \"value\" : \"format\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n }\n }\n } else {\n // A text within doublequotes\n // All chunks are \"text\"\n let chunks2 = chunk.split(/[\\[\\]]+/);\n for (let i2 = 0; i2 < chunks2.length; i2++) {\n let chunk2 = this.cleanUp(this.unescape(chunks2[i2]));\n // Empty?\n if (chunk2 === \"\") {\n continue;\n }\n // Block or text\n if (i2 % 2 === 0) {\n res.push({\n \"type\": \"text\",\n \"text\": chunk2\n });\n } else if (this.isImage(chunk2)) {\n res.push({\n \"type\": \"image\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n } else {\n res.push({\n \"type\": \"format\",\n \"text\": \"[\" + chunk2 + \"]\"\n });\n }\n }\n }\n }\n return res;\n }\n /**\r\n * Checks if supplied format contains image information and should be\r\n * formatted as such.\r\n * I.e.: `[img: myImage.png]`\r\n *\r\n * @ignore\r\n * @param text Format\r\n * @return true if it is an image\r\n */\n static isImage(text) {\n return text.match(/img[ ]?:/) ? true : false;\n }\n static getTextStyle(style) {\n // let textStyle: string[] = [];\n // let textFill: string | undefined;\n let format = {};\n if (style == \"\" || style == \"[ ]\") {\n return {};\n }\n // Pre-process quoted text\n const q = style.match(/('[^']*')|(\"[^\"]*\")/gi);\n if (q) {\n for (let i = 0; i < q.length; i++) {\n style = style.replace(q[i], q[i].replace(/['\"]*/g, \"\").replace(/[ ]+/g, \"+\"));\n }\n }\n // Get style parts\n let b = style.match(/([\\w\\-]*:[\\s]?[^;\\s\\]]*)|(\\#[\\w]{1,6})|([\\w\\-]+)|(\\/)/gi);\n // Empty?\n if (!b) {\n return {};\n }\n // Check each part\n for (let i = 0; i < b.length; i++) {\n if (b[i].match(/^(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)$/i)) {\n format.fontWeight = b[i];\n } else if (b[i].match(/^(underline|line-through)$/i)) {\n format.textDecoration = b[i];\n } else if (b[i] == \"/\") {\n // Just closing tag\n // Do nothing\n } else if (!b[i].match(/:/)) {\n // Color\n format.fill = Color.fromString(b[i]);\n } else {\n const p = b[i].replace(\"+\", \" \").split(/:[ ]*/);\n format[p[0]] = p[1];\n //textStyle.push(b[i].replace(/^[a-zA-Z]:[ ]*/, \"\"));\n //b[i] = b[i].replace(/\\+/g, \" \");\n }\n }\n return format;\n }\n}\nObject.defineProperty(TextFormatter, \"prefix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"__amcharts__\"\n});\n//# sourceMappingURL=TextFormatter.js.map","/** @ignore */ /** */\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\nimport { Sprite } from \"../render/Sprite\";\nimport { TextFormatter } from \"./TextFormatter\";\n/**\r\n * @ignore\r\n */\nexport function populateString(target, string) {\n if (string != null) {\n string = \"\" + string;\n string = TextFormatter.escape(string);\n let tags = string.match(/\\{([^}]+)\\}/g);\n let i;\n if (tags) {\n for (i = 0; i < tags.length; i++) {\n let tag = tags[i].replace(/\\{([^}]+)\\}/, \"$1\");\n let value = getTagValue(target, tag, \"\");\n if (value == null) {\n value = \"\";\n }\n string = string.split(tags[i]).join(value);\n }\n }\n string = TextFormatter.unescape(string);\n } else {\n string = \"\";\n }\n // TODO: apply adapter?\n return string;\n}\n/**\r\n * @ignore\r\n */\nfunction getTagValue(target, tagName, format) {\n let value;\n const dataItem = target.dataItem;\n // Parse parts\n let parts = [];\n let reg = /(format[a-zA-Z]*)\\((.*)\\)|([^.]+)/g;\n let matches;\n while (true) {\n matches = reg.exec(tagName);\n if (matches === null) {\n break;\n }\n if (matches[3]) {\n // Simple property\n parts.push({\n prop: matches[3]\n });\n // Check if maybe we should force a formatter on this value\n const dateFields = target.getDateFormatter().get(\"dateFields\", []);\n const numericFields = target.getNumberFormatter().get(\"numericFields\", []);\n const durationFields = target.getDurationFormatter().get(\"durationFields\", []);\n if (dateFields.indexOf(matches[3]) !== -1) {\n parts.push({\n method: \"formatDate\",\n params: []\n });\n } else if (numericFields.indexOf(matches[3]) !== -1) {\n parts.push({\n method: \"formatNumber\",\n params: []\n });\n } else if (durationFields.indexOf(matches[3]) !== -1) {\n parts.push({\n method: \"formatDuration\",\n params: []\n });\n }\n } else {\n // Method\n // Parse parameters\n let params = [];\n if ($utils.trim(matches[2]) != \"\") {\n let reg2 = /'([^']*)'|\"([^\"]*)\"|([0-9\\-]+)/g;\n let matches2;\n while (true) {\n matches2 = reg2.exec(matches[2]);\n if (matches2 === null) {\n break;\n }\n params.push(matches2[1] || matches2[2] || matches2[3]);\n }\n }\n parts.push({\n method: matches[1],\n params: params\n });\n }\n }\n // Check if we can retrieve the value from data item\n if (dataItem) {\n // Check values\n value = getTagValueFromObject(target, parts, dataItem._settings);\n // Check properties\n if (value == null || $type.isObject(value)) {\n // isObject helps to solve problem with date axis, as for example dateX will get dateX from values object and won't get to the dateX date.\n value = getTagValueFromObject(target, parts, dataItem);\n }\n // Check data context\n let dataContext = dataItem.dataContext;\n if (value == null && dataContext) {\n value = getTagValueFromObject(target, parts, dataContext);\n // Maybe it's a literal dot-separated name of the key in dataContext?\n if (value == null) {\n value = getTagValueFromObject(target, [{\n prop: tagName\n }], dataContext);\n }\n // scond data context level sometimes exist (tree map)\n if (value == null && dataContext.dataContext) {\n value = getTagValueFromObject(target, parts, dataContext.dataContext);\n }\n }\n // Check component's data item\n if (value == null && dataItem.component && dataItem.component.dataItem !== dataItem) {\n value = getTagValue(dataItem.component, tagName, format);\n }\n }\n // Check sprite's properties\n if (value == null) {\n value = getTagValueFromObject(target, parts, target);\n }\n // Finally, check the parent\n if (value == null && target.parent) {\n value = getTagValue(target.parent, tagName, format);\n }\n return value;\n}\n/**\r\n * @ignore\r\n */\nfunction getCustomDataValue(target, prop) {\n const customData = target.getPrivate(\"customData\");\n if ($type.isObject(customData)) {\n return customData[prop];\n }\n}\n/**\r\n * @ignore\r\n */\nexport function getTagValueFromObject(target, parts, object, format) {\n let current = object;\n let formatApplied = false;\n for (let i = 0, len = parts.length; i < len; i++) {\n let part = parts[i];\n if (part.prop) {\n // Regular property\n if (current instanceof Sprite) {\n let tmp = current.get(part.prop);\n if (tmp == null) tmp = current.getPrivate(part.prop);\n if (tmp == null) tmp = getCustomDataValue(current, part.prop);\n if (tmp == null) tmp = current[part.prop];\n current = tmp;\n } else if (current.get) {\n let tmp = current.get(part.prop);\n if (tmp == null) tmp = current[part.prop];\n current = tmp;\n } else {\n current = current[part.prop];\n }\n if (current == null) {\n // Not set, return undefined\n return;\n }\n } else {\n // Method\n switch (part.method) {\n case \"formatNumber\":\n let numberValue = $type.toNumber(current);\n if (numberValue != null) {\n current = target.getNumberFormatter().format(numberValue, format || part.params[0] || undefined);\n formatApplied = true;\n }\n break;\n case \"formatDate\":\n let dateValue = $type.toDate(current);\n if (!$type.isDate(dateValue) || $type.isNaN(dateValue.getTime())) {\n // Was not able to get date out of value, quitting and letting\n // calling method try another value\n return;\n }\n if (dateValue != null) {\n current = target.getDateFormatter().format(dateValue, format || part.params[0] || undefined);\n formatApplied = true;\n }\n break;\n case \"formatDuration\":\n let durationValue = $type.toNumber(current);\n if (durationValue != null) {\n current = target.getDurationFormatter().format(durationValue, format || part.params[0] || undefined, part.params[1] || undefined);\n formatApplied = true;\n }\n break;\n case \"urlEncode\":\n case \"encodeURIComponent\":\n current = encodeURIComponent(current);\n break;\n default:\n if (current[part.method]) {\n current[part.method].apply(object, part.params);\n }\n break;\n }\n }\n }\n // Apply default format if it wasn't applied explicitly\n if (!formatApplied) {\n let formatParts = [{\n method: \"\",\n params: format\n }];\n if (format == null) {\n // Format is not set\n // Determine from the type of the value\n if ($type.isNumber(current)) {\n formatParts[0].method = \"formatNumber\";\n formatParts[0].params = \"\";\n } else if ($type.isDate(current)) {\n formatParts[0].method = \"formatDate\";\n formatParts[0].params = \"\";\n }\n } else {\n // Format set\n // Try to determine formatter based on the format\n let formatterType = $utils.getFormat(format);\n // format\n if (formatterType === \"number\") {\n formatParts[0].method = \"formatNumber\";\n } else if (formatterType === \"date\") {\n formatParts[0].method = \"formatDate\";\n } else if (formatterType === \"duration\") {\n formatParts[0].method = \"formatDuration\";\n }\n }\n // Apply format\n if (formatParts[0].method) {\n current = getTagValueFromObject(target, formatParts, current);\n }\n }\n return current;\n}\n//# sourceMappingURL=PopulateString.js.map","import { Children } from \"../util/Children\";\nimport { Percent } from \"../util/Percent\";\nimport { Sprite } from \"./Sprite\";\nimport { Rectangle } from \"./Rectangle\";\nimport { HorizontalLayout } from \"./HorizontalLayout\";\nimport { VerticalLayout } from \"./VerticalLayout\";\nimport { GridLayout } from \"./GridLayout\";\nimport { populateString } from \"../util/PopulateString\";\nimport * as $array from \"../util/Array\";\nimport * as $type from \"../util/Type\";\nimport * as $utils from \"../util/Utils\";\n/**\r\n * A basic element that can have child elements, maintain their layout, and\r\n * have a background.\r\n *\r\n * It can have any [[Sprite]] element as a child, from very basic shapes, to\r\n * full-fledged charts.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/containers/} for more info\r\n * @important\r\n */\nexport class Container extends Sprite {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_display\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeContainer()\n });\n Object.defineProperty(this, \"_childrenDisplay\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeContainer()\n });\n /**\r\n * List of Container's child elements.\r\n */\n Object.defineProperty(this, \"children\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Children(this)\n });\n Object.defineProperty(this, \"_percentageSizeChildren\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_percentagePositionChildren\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_prevWidth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_prevHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_contentWidth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_contentHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_contentMask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_vsbd0\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_vsbd1\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _afterNew() {\n super._afterNew();\n this._display.addChild(this._childrenDisplay);\n }\n _dispose() {\n $array.eachReverse(this.allChildren(), child => {\n child.dispose();\n });\n if (this.getPrivate(\"htmlElement\")) {\n this._root._removeHTMLContent(this);\n }\n super._dispose();\n }\n _changed() {\n super._changed();\n if (this.isDirty(\"interactiveChildren\")) {\n this._display.interactiveChildren = this.get(\"interactiveChildren\", false);\n }\n if (this.isDirty(\"layout\")) {\n this._prevWidth = 0;\n this._prevHeight = 0;\n this.markDirtyBounds();\n if (this._prevSettings.layout) {\n this.children.each(child => {\n child.removePrivate(\"x\");\n child.removePrivate(\"y\");\n });\n }\n }\n if (this.isDirty(\"paddingTop\") || this.isDirty(\"paddingBottom\") || this.isDirty(\"paddingLeft\") || this.isDirty(\"paddingRight\")) {\n this.children.each(child => {\n child.markDirtyPosition();\n });\n }\n if (this.isDirty(\"maskContent\")) {\n const childrenDisplay = this._childrenDisplay;\n let contentMask = this._contentMask;\n if (this.get(\"maskContent\")) {\n if (!contentMask) {\n contentMask = Rectangle.new(this._root, {\n x: -.5,\n y: -.5,\n width: this.width() + 1,\n height: this.height() + 1\n });\n this._contentMask = contentMask;\n childrenDisplay.addChildAt(contentMask._display, 0);\n childrenDisplay.mask = contentMask._display;\n }\n } else {\n if (contentMask) {\n childrenDisplay.removeChild(contentMask._display);\n childrenDisplay.mask = null;\n contentMask.dispose();\n this._contentMask = undefined;\n }\n }\n }\n }\n _updateSize() {\n super._updateSize();\n $array.each(this._percentageSizeChildren, child => {\n child._updateSize();\n });\n $array.each(this._percentagePositionChildren, child => {\n child.markDirtyPosition();\n child._updateSize();\n });\n this.updateBackground();\n }\n updateBackground() {\n const background = this.get(\"background\");\n let bounds = this._localBounds;\n if (bounds && !this.isHidden()) {\n let x = bounds.left;\n let y = bounds.top;\n let w = bounds.right - x;\n let h = bounds.bottom - y;\n let maxWidth = this.get(\"maxWidth\");\n let maxHeight = this.get(\"maxHeight\");\n if (maxHeight) {\n if (h > maxHeight) {\n h = maxHeight;\n }\n }\n if (maxWidth) {\n if (w > maxWidth) {\n w = maxWidth;\n }\n }\n let width = this.width();\n let height = this.height();\n if (background) {\n background.setAll({\n width: w,\n height: h,\n x: x,\n y: y\n });\n if (this._display.interactive) {\n background._display.interactive = true;\n }\n }\n const contentMask = this._contentMask;\n if (contentMask) {\n contentMask.setAll({\n width: width + 1,\n height: height + 1\n });\n }\n const verticalScrollbar = this.get(\"verticalScrollbar\");\n if (verticalScrollbar) {\n verticalScrollbar.set(\"height\", height);\n verticalScrollbar.set(\"x\", width - verticalScrollbar.width() - verticalScrollbar.get(\"marginRight\", 0));\n verticalScrollbar.set(\"end\", verticalScrollbar.get(\"start\", 0) + height / this._contentHeight);\n const bg = verticalScrollbar.get(\"background\");\n if (bg) {\n bg.setAll({\n width: verticalScrollbar.width(),\n height: height\n });\n }\n let visible = true;\n if (this._contentHeight <= height) {\n visible = false;\n }\n verticalScrollbar.setPrivate(\"visible\", visible);\n }\n }\n }\n _applyThemes() {\n let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (super._applyThemes(force)) {\n this.eachChildren(child => {\n child._applyThemes(force);\n });\n return true;\n } else {\n return false;\n }\n }\n _applyState(name) {\n super._applyState(name);\n if (this.get(\"setStateOnChildren\")) {\n this.eachChildren(child => {\n child.states.apply(name);\n });\n }\n }\n _applyStateAnimated(name, duration) {\n super._applyStateAnimated(name, duration);\n if (this.get(\"setStateOnChildren\")) {\n this.eachChildren(child => {\n child.states.applyAnimate(name, duration);\n });\n }\n }\n /**\r\n * Returns container's inner width (width without padding) in pixels.\r\n *\r\n * @return Inner width (px)\r\n */\n innerWidth() {\n return this.width() - this.get(\"paddingRight\", 0) - this.get(\"paddingLeft\", 0);\n }\n /**\r\n * Returns container's inner height (height without padding) in pixels.\r\n *\r\n * @return Inner height (px)\r\n */\n innerHeight() {\n return this.height() - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0);\n }\n _getBounds() {\n let width = this.get(\"width\");\n let height = this.get(\"height\");\n let pWidth = this.getPrivate(\"width\");\n let pHeight = this.getPrivate(\"height\");\n let bounds = {\n left: 0,\n top: 0,\n right: this.width(),\n bottom: this.height()\n };\n let layout = this.get(\"layout\");\n let horizontal = false;\n let vertical = false;\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\n horizontal = true;\n }\n if (layout instanceof VerticalLayout) {\n vertical = true;\n }\n if ((width != null || pWidth != null) && (height != null || pHeight != null) && !this.get(\"verticalScrollbar\")) {\n // void\n } else {\n let m = Number.MAX_VALUE;\n let l = m;\n let r = -m;\n let t = m;\n let b = -m;\n const paddingLeft = this.get(\"paddingLeft\", 0);\n const paddingTop = this.get(\"paddingTop\", 0);\n const paddingRight = this.get(\"paddingRight\", 0);\n const paddingBottom = this.get(\"paddingBottom\", 0);\n this.children.each(child => {\n if (child.get(\"position\") != \"absolute\" && child.get(\"isMeasured\")) {\n let childBounds = child.adjustedLocalBounds();\n let childX = child.x();\n let childY = child.y();\n let cl = childX + childBounds.left;\n let cr = childX + childBounds.right;\n let ct = childY + childBounds.top;\n let cb = childY + childBounds.bottom;\n if (horizontal) {\n cl -= child.get(\"marginLeft\", 0);\n cr += child.get(\"marginRight\", 0);\n }\n if (vertical) {\n ct -= child.get(\"marginTop\", 0);\n cb += child.get(\"marginBottom\", 0);\n }\n if (cl < l) {\n l = cl;\n }\n if (cr > r) {\n r = cr;\n }\n if (ct < t) {\n t = ct;\n }\n if (cb > b) {\n b = cb;\n }\n }\n });\n if (l == m) {\n l = 0;\n }\n if (r == -m) {\n r = 0;\n }\n if (t == m) {\n t = 0;\n }\n if (b == -m) {\n b = 0;\n }\n bounds.left = l - paddingLeft;\n bounds.top = t - paddingTop;\n bounds.right = r + paddingRight;\n bounds.bottom = b + paddingBottom;\n const minWidth = this.get(\"minWidth\");\n if ($type.isNumber(minWidth) && minWidth > 0) {\n if (bounds.right - bounds.left < minWidth) {\n if (bounds.right >= minWidth) {\n bounds.left = bounds.right - minWidth;\n } else {\n bounds.right = bounds.left + minWidth;\n }\n }\n }\n const minHeight = this.get(\"minHeight\");\n if ($type.isNumber(minHeight) && minHeight > 0) {\n if (bounds.bottom - bounds.top < minHeight) {\n if (bounds.bottom >= minHeight) {\n bounds.top = bounds.bottom - minHeight;\n } else {\n bounds.bottom = bounds.top + minHeight;\n }\n }\n }\n }\n this._contentWidth = bounds.right - bounds.left;\n this._contentHeight = bounds.bottom - bounds.top;\n if ($type.isNumber(width)) {\n bounds.left = 0;\n bounds.right = width;\n }\n if ($type.isNumber(pWidth)) {\n bounds.left = 0;\n bounds.right = pWidth;\n }\n if ($type.isNumber(height)) {\n bounds.top = 0;\n bounds.bottom = height;\n }\n if ($type.isNumber(pHeight)) {\n bounds.top = 0;\n bounds.bottom = pHeight;\n }\n this._localBounds = bounds;\n }\n _updateBounds() {\n const layout = this.get(\"layout\");\n if (layout) {\n layout.updateContainer(this);\n }\n super._updateBounds();\n this.updateBackground();\n }\n /**\r\n * @ignore\r\n */\n markDirty() {\n super.markDirty();\n this._root._addDirtyParent(this);\n }\n _prepareChildren() {\n const innerWidth = this.innerWidth();\n const innerHeight = this.innerHeight();\n if (innerWidth != this._prevWidth || innerHeight != this._prevHeight) {\n let layout = this.get(\"layout\");\n let horizontal = false;\n let vertical = false;\n if (layout) {\n if (layout instanceof HorizontalLayout || layout instanceof GridLayout) {\n horizontal = true;\n }\n if (layout instanceof VerticalLayout) {\n vertical = true;\n }\n }\n $array.each(this._percentageSizeChildren, child => {\n if (!horizontal) {\n let width = child.get(\"width\");\n if (width instanceof Percent) {\n child.setPrivate(\"width\", width.value * innerWidth);\n }\n }\n if (!vertical) {\n let height = child.get(\"height\");\n if (height instanceof Percent) {\n child.setPrivate(\"height\", height.value * innerHeight);\n }\n }\n });\n $array.each(this._percentagePositionChildren, child => {\n child.markDirtyPosition();\n child.markDirtyBounds();\n });\n this._prevWidth = innerWidth;\n this._prevHeight = innerHeight;\n this._sizeDirty = true;\n this.updateBackground();\n }\n this._handleStates();\n }\n _updateHTMLContent() {\n const html = this.get(\"html\");\n if (html && html !== \"\") {\n this._root._setHTMLContent(this, populateString(this, this.get(\"html\", \"\")));\n } else {\n this._root._removeHTMLContent(this);\n }\n this._root._positionHTMLElement(this);\n }\n _updateChildren() {\n if (this.isDirty(\"html\")) {\n this._updateHTMLContent();\n }\n if (this.isDirty(\"verticalScrollbar\")) {\n const verticalScrollbar = this.get(\"verticalScrollbar\");\n if (verticalScrollbar) {\n verticalScrollbar._setParent(this);\n verticalScrollbar.startGrip.setPrivate(\"visible\", false);\n verticalScrollbar.endGrip.setPrivate(\"visible\", false);\n this.set(\"maskContent\", true);\n this.set(\"paddingRight\", verticalScrollbar.width() + verticalScrollbar.get(\"marginRight\", 0) + verticalScrollbar.get(\"marginLeft\", 0));\n let background = this.get(\"background\");\n if (!background) {\n background = this.set(\"background\", Rectangle.new(this._root, {\n themeTags: [\"background\"],\n fillOpacity: 0,\n fill: this._root.interfaceColors.get(\"alternativeBackground\")\n }));\n }\n this._vsbd0 = this.events.on(\"wheel\", event => {\n const wheelEvent = event.originalEvent;\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\n // some page element is over the chart.\n if ($utils.isLocalEvent(wheelEvent, this)) {\n wheelEvent.preventDefault();\n } else {\n return;\n }\n let shiftY = wheelEvent.deltaY / 5000;\n const start = verticalScrollbar.get(\"start\", 0);\n const end = verticalScrollbar.get(\"end\", 1);\n if (start + shiftY <= 0) {\n shiftY = -start;\n }\n if (end + shiftY >= 1) {\n shiftY = 1 - end;\n }\n if (start + shiftY >= 0 && end + shiftY <= 1) {\n verticalScrollbar.set(\"start\", start + shiftY);\n verticalScrollbar.set(\"end\", end + shiftY);\n }\n });\n this._disposers.push(this._vsbd0);\n this._vsbd1 = verticalScrollbar.events.on(\"rangechanged\", () => {\n let h = this._contentHeight;\n const childrenDisplay = this._childrenDisplay;\n const contentMask = this._contentMask;\n childrenDisplay.y = -verticalScrollbar.get(\"start\", 0) * h;\n childrenDisplay.markDirtyLayer();\n if (contentMask) {\n contentMask._display.y = -childrenDisplay.y;\n childrenDisplay.mask = contentMask._display;\n }\n });\n this._disposers.push(this._vsbd1);\n this._display.addChild(verticalScrollbar._display);\n } else {\n const previous = this._prevSettings.verticalScrollbar;\n if (previous) {\n this._display.removeChild(previous._display);\n if (this._vsbd0) {\n this._vsbd0.dispose();\n }\n if (this._vsbd1) {\n this._vsbd1.dispose();\n }\n const childrenDisplay = this._childrenDisplay;\n childrenDisplay.y = 0;\n this.setPrivate(\"height\", undefined);\n this.set(\"maskContent\", false);\n this.set(\"paddingRight\", undefined);\n }\n }\n }\n if (this.isDirty(\"background\")) {\n // TODO maybe this should dispose ?\n const previous = this._prevSettings[\"background\"];\n if (previous) {\n this._display.removeChild(previous._display);\n }\n const background = this.get(\"background\");\n if (background instanceof Sprite) {\n background.set(\"isMeasured\", false);\n background._setParent(this);\n this._display.addChildAt(background._display, 0);\n }\n }\n if (this.isDirty(\"mask\")) {\n const mask = this.get(\"mask\");\n const previous = this._prevSettings[\"mask\"];\n if (previous) {\n this._display.removeChild(previous._display);\n if (previous != mask) {\n previous.dispose();\n }\n }\n if (mask) {\n const parent = mask.parent;\n if (parent) {\n parent.children.removeValue(mask);\n }\n mask._setParent(this);\n this._display.addChildAt(mask._display, 0);\n this._childrenDisplay.mask = mask._display;\n }\n }\n }\n _processTemplateField() {\n super._processTemplateField();\n this.children.each(child => {\n child._processTemplateField();\n });\n }\n /**\r\n * @ignore\r\n */\n walkChildren(f) {\n this.children.each(child => {\n if (child instanceof Container) {\n child.walkChildren(f);\n }\n f(child);\n });\n }\n eachChildren(f) {\n const background = this.get(\"background\");\n if (background) {\n f(background);\n }\n const verticalScrollbar = this.get(\"verticalScrollbar\");\n if (verticalScrollbar) {\n f(verticalScrollbar);\n }\n const mask = this.get(\"mask\");\n if (mask) {\n f(mask);\n }\n this.children.values.forEach(child => {\n f(child);\n });\n }\n allChildren() {\n const output = [];\n this.eachChildren(x => {\n output.push(x);\n });\n return output;\n }\n _setDataItem(dataItem) {\n const updated = dataItem !== this._dataItem;\n super._setDataItem(dataItem);\n const html = this.get(\"html\", \"\");\n if (html && html !== \"\" && updated) {\n this._root._setHTMLContent(this, populateString(this, html));\n }\n }\n}\nObject.defineProperty(Container, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Container\"\n});\nObject.defineProperty(Container, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Sprite.classNames.concat([Container.className])\n});\n//# sourceMappingURL=Container.js.map","import { Sprite } from \"./Sprite\";\nimport { populateString } from \"../util/PopulateString\";\nimport * as $array from \"../util/Array\";\nimport * as $utils from \"../util/Utils\";\nimport { Disposer } from \"../util/Disposer\";\n/**\r\n * @ignore Text is an internal class. Use Label instead.\r\n */\nexport class Text extends Sprite {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"textStyle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeTextStyle()\n });\n Object.defineProperty(this, \"_display\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._root._renderer.makeText(\"\", this.textStyle)\n });\n Object.defineProperty(this, \"_textStyles\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"textAlign\", \"fontFamily\", \"fontSize\", \"fontStyle\", \"fontWeight\", \"fontStyle\", \"fontVariant\", \"textDecoration\", \"shadowColor\", \"shadowBlur\", \"shadowOffsetX\", \"shadowOffsetY\", \"shadowOpacity\",\n // \"leading\",\n // \"letterSpacing\",\n \"lineHeight\", \"baselineRatio\",\n //\"padding\",\n // \"stroke\",\n // \"strokeThickness\",\n // \"trim\",\n // \"wordWrap\",\n \"direction\", \"textBaseline\", \"oversizedBehavior\", \"breakWords\", \"ellipsis\", \"minScale\", \"maxChars\"]\n });\n Object.defineProperty(this, \"_originalScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _updateBounds() {\n if (!this.get(\"text\")) {\n let newBounds = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this._adjustedLocalBounds = newBounds;\n } else {\n super._updateBounds();\n }\n }\n _changed() {\n super._changed();\n this._display.clear();\n let textStyle = this.textStyle;\n if (this.isDirty(\"opacity\")) {\n let opacity = this.get(\"opacity\", 1);\n this._display.alpha = opacity;\n }\n if (this.isDirty(\"text\") || this.isDirty(\"populateText\")) {\n this._display.text = this._getText();\n this.markDirtyBounds();\n if (this.get(\"role\") == \"tooltip\") {\n this._root.updateTooltip(this);\n }\n }\n if (this.isPrivateDirty(\"tooltipElement\")) {\n const tooltipElement = this.getPrivate(\"tooltipElement\");\n if (tooltipElement) {\n this._disposers.push(new Disposer(() => {\n this._root._removeTooltipElement(this);\n }));\n }\n }\n if (this.isDirty(\"width\")) {\n textStyle.wordWrapWidth = this.width();\n this.markDirtyBounds();\n }\n if (this.isDirty(\"oversizedBehavior\")) {\n textStyle.oversizedBehavior = this.get(\"oversizedBehavior\", \"none\");\n this.markDirtyBounds();\n }\n if (this.isDirty(\"breakWords\")) {\n textStyle.breakWords = this.get(\"breakWords\", false);\n this.markDirtyBounds();\n }\n if (this.isDirty(\"ellipsis\")) {\n textStyle.ellipsis = this.get(\"ellipsis\");\n this.markDirtyBounds();\n }\n if (this.isDirty(\"ignoreFormatting\")) {\n textStyle.ignoreFormatting = this.get(\"ignoreFormatting\", false);\n this.markDirtyBounds();\n }\n if (this.isDirty(\"minScale\")) {\n textStyle.minScale = this.get(\"minScale\", 0);\n this.markDirtyBounds();\n }\n if (this.isDirty(\"fill\")) {\n let fill = this.get(\"fill\");\n if (fill) {\n textStyle.fill = fill;\n }\n }\n if (this.isDirty(\"fillOpacity\")) {\n let fillOpacity = this.get(\"fillOpacity\", 1);\n if (fillOpacity) {\n textStyle.fillOpacity = fillOpacity;\n }\n }\n if (this.isDirty(\"maxWidth\") || this.isPrivateDirty(\"maxWidth\")) {\n textStyle.maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\"));\n this.markDirtyBounds();\n }\n if (this.isDirty(\"maxHeight\") || this.isPrivateDirty(\"maxHeight\")) {\n textStyle.maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\"));\n this.markDirtyBounds();\n }\n $array.each(this._textStyles, styleName => {\n if (this._dirty[styleName]) {\n textStyle[styleName] = this.get(styleName);\n this.markDirtyBounds();\n }\n });\n textStyle[\"fontSize\"] = this.get(\"fontSize\");\n textStyle[\"fontFamily\"] = this.get(\"fontFamily\");\n this._display.style = textStyle;\n if (this.isDirty(\"role\") && this.get(\"role\") == \"tooltip\") {\n this._root.updateTooltip(this);\n }\n }\n _getText() {\n let text = this.get(\"text\", \"\");\n if (this.get(\"maxChars\")) {\n text = $utils.truncateTextWithEllipsis(text, this.get(\"maxChars\", 100000000), this.get(\"breakWords\"), this.get(\"ellipsis\"));\n }\n return this.get(\"populateText\") ? populateString(this, text) : text;\n }\n _getAccessibleText() {\n const ariaLabel = this.get(\"ariaLabel\");\n if (ariaLabel !== undefined) {\n return this.get(\"populateText\") ? populateString(this, ariaLabel) : ariaLabel;\n }\n return this._getText();\n }\n /**\r\n * Forces the text to be re-evaluated and re-populated.\r\n */\n markDirtyText() {\n this._display.text = this._getText();\n if (this.get(\"role\") == \"tooltip\") {\n this._root.updateTooltip(this);\n }\n this.markDirtyBounds();\n this.markDirty();\n }\n _setDataItem(dataItem) {\n super._setDataItem(dataItem);\n if (this.get(\"populateText\")) {\n this.markDirtyText();\n }\n }\n getNumberFormatter() {\n if (this.parent) {\n return this.parent.getNumberFormatter();\n } else {\n return super.getNumberFormatter();\n }\n }\n getDateFormatter() {\n if (this.parent) {\n return this.parent.getDateFormatter();\n } else {\n return super.getDateFormatter();\n }\n }\n getDurationFormatter() {\n if (this.parent) {\n return this.parent.getDurationFormatter();\n } else {\n return super.getDurationFormatter();\n }\n }\n}\nObject.defineProperty(Text, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Text\"\n});\nObject.defineProperty(Text, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Sprite.classNames.concat([Text.className])\n});\n//# sourceMappingURL=Text.js.map","/** @ignore */ /** */\nimport * as $array from \"./Array\";\nimport * as $utils from \"./Utils\";\n/**\r\n * @ignore\r\n */\nclass Native {\n constructor() {\n Object.defineProperty(this, \"_observer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_targets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n this._observer = new ResizeObserver(entries => {\n $array.each(entries, entry => {\n $array.each(this._targets, x => {\n if (x.target === entry.target) {\n x.callback();\n }\n });\n });\n });\n }\n addTarget(target, callback) {\n this._observer.observe(target, {\n box: \"border-box\"\n });\n this._targets.push({\n target,\n callback\n });\n }\n removeTarget(target) {\n this._observer.unobserve(target);\n $array.keepIf(this._targets, x => {\n return x.target !== target;\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass Raf {\n constructor() {\n Object.defineProperty(this, \"_timer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"_targets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n addTarget(target, callback) {\n if (this._timer === null) {\n let lastTime = null;\n const loop = () => {\n const currentTime = Date.now();\n if (lastTime === null || currentTime > lastTime + Raf.delay) {\n lastTime = currentTime;\n $array.each(this._targets, x => {\n let newSize = x.target.getBoundingClientRect();\n if (newSize.width !== x.size.width || newSize.height !== x.size.height) {\n x.size = newSize;\n x.callback();\n }\n });\n }\n if (this._targets.length === 0) {\n this._timer = null;\n } else {\n this._timer = requestAnimationFrame(loop);\n }\n };\n this._timer = requestAnimationFrame(loop);\n }\n // We start off with fake bounds so that sensor always kicks in\n let size = {\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n x: 0,\n y: 0\n };\n this._targets.push({\n target,\n callback,\n size\n });\n }\n removeTarget(target) {\n $array.keepIf(this._targets, x => {\n return x.target !== target;\n });\n if (this._targets.length === 0) {\n if (this._timer !== null) {\n cancelAnimationFrame(this._timer);\n this._timer = null;\n }\n }\n }\n}\nObject.defineProperty(Raf, \"delay\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 200\n});\n/**\r\n * @ignore\r\n */\nlet observer = null;\n/**\r\n * @ignore\r\n */\nfunction makeSensor() {\n if (observer === null) {\n if (typeof ResizeObserver !== \"undefined\") {\n observer = new Native();\n } else {\n observer = new Raf();\n }\n }\n return observer;\n}\n/**\r\n * @ignore\r\n */\nexport class ResizeSensor {\n constructor(element, callback) {\n Object.defineProperty(this, \"_sensor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_element\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_listener\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_disposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n this._sensor = makeSensor();\n this._element = element;\n // This is needed because we need to know when the window is zoomed\n this._listener = $utils.onZoom(callback);\n this._sensor.addTarget(element, callback);\n }\n isDisposed() {\n return this._disposed;\n }\n dispose() {\n if (!this._disposed) {\n this._disposed = true;\n this._sensor.removeTarget(this._element);\n this._listener.dispose();\n }\n }\n get sensor() {\n return this._sensor;\n }\n}\n//# sourceMappingURL=ResizeSensor.js.map","import { Entity } from \"./Entity\";\n/**\r\n * Presets for common UI elements.\r\n */\nexport class InterfaceColors extends Entity {}\nObject.defineProperty(InterfaceColors, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"InterfaceColors\"\n});\nObject.defineProperty(InterfaceColors, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Entity.classNames.concat([InterfaceColors.className])\n});\n//# sourceMappingURL=InterfaceColors.js.map","import { Text } from \"../render/Text\";\nimport { p50, p100 } from \"../util/Percent\";\nimport { Container } from \"./Container\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\n/**\r\n * Creates a label with support for in-line styling and data bindings.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/labels/} for more info\r\n */\nexport class Label extends Container {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_text\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_textKeys\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"text\", \"fill\", \"fillOpacity\", \"textAlign\", \"fontFamily\", \"fontSize\", \"fontStyle\", \"fontWeight\", \"fontStyle\", \"fontVariant\", \"textDecoration\", \"shadowColor\", \"shadowBlur\", \"shadowOffsetX\", \"shadowOffsetY\", \"shadowOpacity\",\n // \"leading\",\n // \"letterSpacing\",\n \"lineHeight\", \"baselineRatio\",\n //\"padding\",\n // \"stroke\",\n // \"strokeThickness\",\n // \"trim\",\n // \"wordWrap\",\n \"direction\", \"textBaseline\", \"oversizedBehavior\", \"breakWords\", \"ellipsis\", \"minScale\", \"populateText\", \"role\", \"ignoreFormatting\", \"maxChars\", \"ariaLabel\"]\n });\n }\n /**\r\n * @ignore Text is not to be used directly\r\n */\n get text() {\n return this._text;\n }\n _afterNew() {\n super._afterNew();\n this._makeText();\n $array.each(this._textKeys, property => {\n const propValue = this.get(property);\n if (propValue != undefined) {\n this._text.set(property, propValue);\n }\n });\n if (this.get(\"html\", \"\") !== \"\") {\n this._text.set(\"text\", \"\");\n }\n this.onPrivate(\"maxWidth\", () => {\n this._setMaxDimentions();\n });\n this.onPrivate(\"maxHeight\", () => {\n this._setMaxDimentions();\n });\n }\n _makeText() {\n this._text = this.children.push(Text.new(this._root, {}));\n }\n _updateChildren() {\n super._updateChildren();\n const text = this._text;\n $array.each(this._textKeys, property => {\n this._text.set(property, this.get(property));\n });\n if (this.isDirty(\"maxWidth\") || this.isDirty(\"maxHeight\") || this.isDirty(\"rotation\")) {\n this._setMaxDimentions();\n }\n // Do not show regular text if HTML is used\n if (this.get(\"html\", \"\") !== \"\") {\n text.set(\"text\", \"\");\n } else {\n text.set(\"text\", this.get(\"text\"));\n this._maybeUpdateHTMLColor();\n }\n if (this.isDirty(\"fill\")) {\n this._maybeUpdateHTMLColor();\n }\n if (this.isDirty(\"textAlign\") || this.isDirty(\"width\")) {\n const textAlign = this.get(\"textAlign\");\n let x;\n if (this.get(\"width\") != null) {\n if (textAlign == \"right\") {\n x = p100;\n } else if (textAlign == \"center\") {\n x = p50;\n } else {\n x = 0;\n }\n } else {\n if (textAlign == \"left\" || textAlign == \"start\") {\n x = this.get(\"paddingLeft\", 0);\n } else if (textAlign == \"right\" || textAlign == \"end\") {\n x = -this.get(\"paddingRight\", 0);\n }\n }\n text.set(\"x\", x);\n }\n const background = this.get(\"background\");\n if (background) {\n background.setPrivate(\"visible\", text._display.textVisible);\n }\n }\n _maybeUpdateHTMLColor() {\n const htmlElement = this.getPrivate(\"htmlElement\");\n if (htmlElement && this.get(\"fill\")) {\n htmlElement.style.color = this.get(\"fill\").toCSSHex();\n }\n }\n _setMaxDimentions() {\n const rotation = this.get(\"rotation\");\n const vertical = rotation == 90 || rotation == 270 || rotation == -90;\n const text = this._text;\n const maxWidth = this.get(\"maxWidth\", this.getPrivate(\"maxWidth\", Infinity));\n if ($type.isNumber(maxWidth)) {\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", maxWidth - this.get(\"paddingLeft\", 0) - this.get(\"paddingRight\", 0));\n } else {\n text.set(vertical ? \"maxHeight\" : \"maxWidth\", undefined);\n }\n const maxHeight = this.get(\"maxHeight\", this.getPrivate(\"maxHeight\", Infinity));\n if ($type.isNumber(maxHeight)) {\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", maxHeight - this.get(\"paddingTop\", 0) - this.get(\"paddingBottom\", 0));\n } else {\n text.set(vertical ? \"maxWidth\" : \"maxHeight\", undefined);\n }\n this.root.events.once(\"frameended\", () => {\n text.markDirtyBounds();\n });\n }\n _setDataItem(dataItem) {\n super._setDataItem(dataItem);\n this._markDirtyKey(\"text\");\n const text = this._text;\n if (text.get(\"populateText\")) {\n text.markDirtyText();\n }\n const html = this.get(\"html\");\n if (html && html !== \"\") {\n this._updateHTMLContent();\n }\n }\n /**\r\n * Returns text with populated placeholders and formatting if `populateText` is\r\n * set to `true`.\r\n *\r\n * @return Populated text\r\n */\n getText() {\n return this._text._getText();\n }\n /**\r\n * Returns \"aria-label\" text with populated placeholders and formatting\r\n * if `populateText` is set to `true`.\r\n *\r\n * @return Populated text\r\n */\n getAccessibleText() {\n return this._text._getAccessibleText();\n }\n}\nObject.defineProperty(Label, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Label\"\n});\nObject.defineProperty(Label, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([Label.className])\n});\n//# sourceMappingURL=Label.js.map","import { Graphics } from \"./Graphics\";\nimport * as $math from \"../util/Math\";\n/**\r\n * Draws a rectangle with a pointer.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\nexport class PointedRectangle extends Graphics {\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"pointerBaseWidth\") || this.isDirty(\"cornerRadius\") || this.isDirty(\"pointerLength\") || this.isDirty(\"pointerX\") || this.isDirty(\"pointerY\") || this.isDirty(\"width\") || this.isDirty(\"height\")) {\n this._clear = true;\n }\n }\n _changed() {\n super._changed();\n if (this._clear) {\n this.markDirtyBounds();\n let w = this.width();\n let h = this.height();\n if (w > 0 && h > 0) {\n let cr = this.get(\"cornerRadius\", 8);\n cr = $math.fitToRange(cr, 0, Math.min(w / 2, h / 2));\n let x = this.get(\"pointerX\", 0);\n let y = this.get(\"pointerY\", 0);\n let bwh = this.get(\"pointerBaseWidth\", 15) / 2;\n // corner coordinates\n // top left\n let xtl = 0;\n let ytl = 0;\n // top right\n let xtr = w;\n let ytr = 0;\n // bottom right\n let xbr = w;\n let ybr = h;\n // bottom left\n let xbl = 0;\n let ybl = h;\n // find stem base side: http://$math.stackexchange.com/questions/274712/calculate-on-which-side-of-straign-line-is-dot-located\n // d=(x−x1)(y2−y1)−(y−y1)(x2−x1)\n let d1 = (x - xtl) * (ybr - ytl) - (y - ytl) * (xbr - xtl);\n let d2 = (x - xbl) * (ytr - ybl) - (y - ybl) * (xtr - xbl);\n const display = this._display;\n // top\n display.moveTo(cr, 0);\n if (d1 > 0 && d2 > 0) {\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\n y = $math.fitToRange(y, -Infinity, 0);\n display.lineTo(stemX - bwh, 0);\n display.lineTo(x, y);\n display.lineTo(stemX + bwh, 0);\n }\n display.lineTo(w - cr, 0);\n display.arcTo(w, 0, w, cr, cr);\n // right\n if (d1 > 0 && d2 < 0) {\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - bwh - cr));\n x = $math.fitToRange(x, w, Infinity);\n display.lineTo(w, cr);\n display.lineTo(w, Math.max(stemY - bwh, cr));\n display.lineTo(x, y);\n display.lineTo(w, stemY + bwh);\n }\n display.lineTo(w, h - cr);\n display.arcTo(w, h, w - cr, h, cr);\n // bottom\n if (d1 < 0 && d2 < 0) {\n let stemX = Math.round($math.fitToRange(x, cr + bwh, w - bwh - cr));\n y = $math.fitToRange(y, h, Infinity);\n display.lineTo(w - cr, h);\n display.lineTo(stemX + bwh, h);\n display.lineTo(x, y);\n display.lineTo(stemX - bwh, h);\n }\n display.lineTo(cr, h);\n display.arcTo(0, h, 0, h - cr, cr);\n // left\n if (d1 < 0 && d2 > 0) {\n let stemY = Math.round($math.fitToRange(y, cr + bwh, h - cr - bwh));\n x = $math.fitToRange(x, -Infinity, 0);\n display.lineTo(0, h - cr);\n display.lineTo(0, stemY + bwh);\n display.lineTo(x, y);\n display.lineTo(0, Math.max(stemY - bwh, cr));\n }\n display.lineTo(0, cr);\n display.arcTo(0, 0, cr, 0, cr);\n display.closePath();\n }\n }\n }\n}\nObject.defineProperty(PointedRectangle, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"PointedRectangle\"\n});\nObject.defineProperty(PointedRectangle, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Graphics.classNames.concat([PointedRectangle.className])\n});\n//# sourceMappingURL=PointedRectangle.js.map","import { MultiDisposer } from \"../util/Disposer\";\nimport { Label } from \"../render/Label\";\nimport { PointedRectangle } from \"../render/PointedRectangle\";\nimport { Container } from \"./Container\";\nimport { Percent } from \"../util/Percent\";\nimport { Color } from \"../util/Color\";\nimport * as $math from \"../util/Math\";\nimport * as $array from \"../util/Array\";\nimport * as $utils from \"../util/Utils\";\n/**\r\n * Creates a tooltip.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/tooltips/} for more info\r\n * @important\r\n */\nexport class Tooltip extends Container {\n constructor(root, settings, isReal) {\n let templates = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n super(root, settings, isReal, templates);\n Object.defineProperty(this, \"_fx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_fy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_label\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_fillDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_strokeDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_labelDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_w\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_h\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_keepHoverDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_htmlContentHovered\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"tooltip\"]);\n super._afterNew();\n const background = this._setDefaultFn(\"background\", () => {\n return PointedRectangle.new(this._root, {});\n });\n background.set(\"themeTags\", [\"tooltip\", \"background\"]);\n this._label = this.children.push(Label.new(this._root, {}));\n this._disposers.push(this._label.events.on(\"boundschanged\", () => {\n this._updateBackground();\n }));\n this._disposers.push(this.on(\"bounds\", () => {\n this._updateBackground();\n }));\n this._updateTextColor();\n this._root.tooltipContainer.children.push(this);\n this.hide(0);\n this._disposers.push(this.label.onPrivate(\"htmlElement\", htmlElement => {\n if (htmlElement) {\n $utils.addEventListener(htmlElement, \"pointerover\", _ev => {\n this._htmlContentHovered = true;\n });\n $utils.addEventListener(htmlElement, \"pointerout\", _ev => {\n this._htmlContentHovered = false;\n });\n }\n }));\n this.on(\"visible\", _ev => {\n this._handleReaderAnnouncement();\n });\n this.label.events.on(\"dataitemchanged\", _ev => {\n this._handleReaderAnnouncement();\n });\n this._root._tooltips.push(this);\n }\n _handleReaderAnnouncement() {\n if (this.get(\"readerAnnounce\") && this.isVisibleDeep()) {\n this._root.readerAlert(this.label.getAccessibleText());\n }\n }\n /**\r\n * A [[Label]] element for the tooltip.\r\n *\r\n * @readonly\r\n * @return Label\r\n */\n get label() {\n return this._label;\n }\n /**\r\n * Permanently disposes the tooltip.\r\n */\n dispose() {\n super.dispose();\n $array.remove(this._root._tooltips, this);\n }\n _updateChildren() {\n super._updateChildren();\n if (this.isDirty(\"pointerOrientation\") || this.isPrivateDirty(\"minWidth\") || this.isPrivateDirty(\"minHeight\")) {\n this.get(\"background\")._markDirtyKey(\"width\");\n }\n const labelText = this.get(\"labelText\");\n if (labelText != null) {\n this.label.set(\"text\", this.get(\"labelText\"));\n }\n const labelHTML = this.get(\"labelHTML\");\n if (labelHTML != null) {\n this.label.set(\"html\", this.get(\"labelHTML\"));\n }\n const labelAriaLabel = this.get(\"labelAriaLabel\");\n if (labelAriaLabel != null) {\n this.label.set(\"ariaLabel\", this.get(\"labelAriaLabel\"));\n }\n }\n _changed() {\n super._changed();\n if (this.isDirty(\"pointTo\") || this.isDirty(\"pointerOrientation\")) {\n // can't compare to previous, as sometimes pointTo is set twice (when pointer moves, so the position won't be udpated)\n this._updateBackground();\n }\n if (this.isDirty(\"tooltipTarget\")) {\n this.updateBackgroundColor();\n }\n if (this.isDirty(\"keepTargetHover\")) {\n const keephover = this.get(\"keepTargetHover\");\n if (keephover) {\n const bg = this.get(\"background\");\n this._keepHoverDp = new MultiDisposer([bg.events.on(\"pointerover\", _ev => {\n let target = this.get(\"tooltipTarget\");\n if (target) {\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\n target = target.parent;\n }\n target.hover();\n }\n }), bg.events.on(\"pointerout\", _ev => {\n let target = this.get(\"tooltipTarget\");\n if (target) {\n if (target.parent && target.parent.getPrivate(\"tooltipTarget\") == target) {\n target = target.parent;\n }\n if (!this._htmlContentHovered) {\n target.unhover();\n }\n }\n })]);\n this.label.onPrivate(\"htmlElement\", htmlElement => {\n if (this._keepHoverDp && htmlElement) {\n this._keepHoverDp.disposers.push($utils.addEventListener(htmlElement, \"pointerleave\", ev => {\n const outEvent = this.root._renderer.getEvent(ev);\n bg.events.dispatch(\"pointerout\", {\n type: \"pointerout\",\n originalEvent: outEvent.event,\n point: outEvent.point,\n simulated: false,\n target: bg\n });\n }));\n }\n });\n } else {\n if (this._keepHoverDp) {\n this._keepHoverDp.dispose();\n this._keepHoverDp = undefined;\n }\n }\n }\n }\n _onShow() {\n super._onShow();\n this.updateBackgroundColor();\n }\n updateBackgroundColor() {\n let tooltipTarget = this.get(\"tooltipTarget\");\n const background = this.get(\"background\");\n let fill;\n let stroke;\n if (tooltipTarget && background) {\n fill = tooltipTarget.get(\"fill\");\n stroke = tooltipTarget.get(\"stroke\");\n if (fill == null) {\n fill = stroke;\n }\n if (this.get(\"getFillFromSprite\")) {\n if (this._fillDp) {\n this._fillDp.dispose();\n }\n if (fill != null) {\n background.set(\"fill\", fill);\n }\n this._fillDp = tooltipTarget.on(\"fill\", fill => {\n if (fill != null) {\n background.set(\"fill\", fill);\n this._updateTextColor(fill);\n }\n });\n this._disposers.push(this._fillDp);\n }\n if (this.get(\"getStrokeFromSprite\")) {\n if (this._strokeDp) {\n this._strokeDp.dispose();\n }\n if (fill != null) {\n background.set(\"stroke\", fill);\n }\n this._strokeDp = tooltipTarget.on(\"fill\", fill => {\n if (fill != null) {\n background.set(\"stroke\", fill);\n }\n });\n this._disposers.push(this._strokeDp);\n }\n if (this.get(\"getLabelFillFromSprite\")) {\n if (this._labelDp) {\n this._labelDp.dispose();\n }\n if (fill != null) {\n this.label.set(\"fill\", fill);\n }\n this._labelDp = tooltipTarget.on(\"fill\", fill => {\n if (fill != null) {\n this.label.set(\"fill\", fill);\n }\n });\n this._disposers.push(this._labelDp);\n }\n }\n this._updateTextColor(fill);\n }\n _updateTextColor(fill) {\n if (this.get(\"autoTextColor\")) {\n if (fill == null) {\n fill = this.get(\"background\").get(\"fill\");\n }\n if (fill == null) {\n fill = this._root.interfaceColors.get(\"background\");\n }\n if (fill instanceof Color) {\n this.label.set(\"fill\", Color.alternative(fill, this._root.interfaceColors.get(\"alternativeText\"), this._root.interfaceColors.get(\"text\")));\n }\n }\n }\n _setDataItem(dataItem) {\n super._setDataItem(dataItem);\n this.label._setDataItem(dataItem);\n }\n _updateBackground() {\n super.updateBackground();\n const parent = this._root.container;\n if (parent) {\n let cw = 0.5;\n let ch = 0.5;\n let centerX = this.get(\"centerX\");\n if (centerX instanceof Percent) {\n cw = centerX.value;\n }\n let centerY = this.get(\"centerY\");\n if (centerY instanceof Percent) {\n ch = centerY.value;\n }\n let parentW = parent.width();\n let parentH = parent.height();\n let tooltipContainer = this.parent;\n let xx = 0;\n let yy = 0;\n if (tooltipContainer) {\n xx = tooltipContainer.x();\n yy = tooltipContainer.y();\n const layerMargin = tooltipContainer.get(\"layerMargin\");\n if (layerMargin) {\n xx += layerMargin.left || 0;\n yy += layerMargin.top || 0;\n parentW += (layerMargin.left || 0) + (layerMargin.right || 0);\n parentH += (layerMargin.top || 0) + (layerMargin.bottom || 0);\n }\n }\n const bounds = this.get(\"bounds\", {\n left: -xx,\n top: -yy,\n right: parentW - xx,\n bottom: parentH - yy\n });\n this._updateBounds();\n let w = this.width();\n let h = this.height();\n // use old w and h,as when tooltip is hidden, these are 0 and unneeded animation happens\n if (w === 0) {\n w = this._w;\n }\n if (h === 0) {\n h = this._h;\n }\n let pointTo = this.get(\"pointTo\", {\n x: parentW / 2,\n y: parentH / 2\n });\n let x = pointTo.x;\n let y = pointTo.y;\n let pointerOrientation = this.get(\"pointerOrientation\");\n let background = this.get(\"background\");\n let pointerLength = 0;\n let bgStrokeSizeY = 0;\n let bgStrokeSizeX = 0;\n if (background instanceof PointedRectangle) {\n pointerLength = background.get(\"pointerLength\", 0);\n bgStrokeSizeY = background.get(\"strokeWidth\", 0) / 2;\n bgStrokeSizeX = bgStrokeSizeY;\n background.set(\"width\", w);\n background.set(\"height\", h);\n }\n let pointerX = 0;\n let pointerY = 0;\n let boundsW = bounds.right - bounds.left;\n let boundsH = bounds.bottom - bounds.top;\n // horizontal\n if (pointerOrientation == \"horizontal\" || pointerOrientation == \"left\" || pointerOrientation == \"right\") {\n bgStrokeSizeY = 0;\n if (pointerOrientation == \"horizontal\") {\n if (x > bounds.left + boundsW / 2) {\n x -= w * (1 - cw) + pointerLength;\n bgStrokeSizeX *= -1;\n } else {\n x += w * cw + pointerLength;\n }\n } else if (pointerOrientation == \"left\") {\n x += w * (1 - cw) + pointerLength;\n } else {\n x -= w * cw + pointerLength;\n bgStrokeSizeX *= -1;\n }\n }\n // vertical pointer\n else {\n bgStrokeSizeX = 0;\n if (pointerOrientation == \"vertical\") {\n if (y > bounds.top + h / 2 + pointerLength) {\n y -= h * (1 - ch) + pointerLength;\n } else {\n y += h * ch + pointerLength;\n bgStrokeSizeY *= -1;\n }\n } else if (pointerOrientation == \"down\") {\n y -= h * (1 - ch) + pointerLength;\n } else {\n y += h * ch + pointerLength;\n bgStrokeSizeY *= -1;\n }\n }\n x = $math.fitToRange(x, bounds.left + w * cw, bounds.left + boundsW - w * (1 - cw)) + bgStrokeSizeX;\n y = $math.fitToRange(y, bounds.top + h * ch, bounds.top + boundsH - h * (1 - ch)) - bgStrokeSizeY;\n pointerX = pointTo.x - x + w * cw + bgStrokeSizeX;\n pointerY = pointTo.y - y + h * ch - bgStrokeSizeY;\n this._fx = x;\n this._fy = y;\n const animationDuration = this.get(\"animationDuration\", 0);\n if (animationDuration > 0 && this.get(\"visible\") && this.get(\"opacity\") > 0.1) {\n const animationEasing = this.get(\"animationEasing\");\n this.animate({\n key: \"x\",\n to: x,\n duration: animationDuration,\n easing: animationEasing\n });\n this.animate({\n key: \"y\",\n to: y,\n duration: animationDuration,\n easing: animationEasing\n });\n } else {\n this.set(\"x\", x);\n this.set(\"y\", y);\n }\n if (background instanceof PointedRectangle) {\n background.set(\"pointerX\", pointerX);\n background.set(\"pointerY\", pointerY);\n }\n if (w > 0) {\n this._w = w;\n }\n if (h > 0) {\n this._h = h;\n }\n }\n }\n}\nObject.defineProperty(Tooltip, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Tooltip\"\n});\nObject.defineProperty(Tooltip, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([Tooltip.className])\n});\n//# sourceMappingURL=Tooltip.js.map","import { Entity } from \"./Entity\";\nimport { TextFormatter } from \"./TextFormatter\";\nimport * as $object from \"./Object\";\nimport * as $utils from \"./Utils\";\nimport * as $type from \"./Type\";\n/**\r\n * Number formatter\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n * @important\r\n */\nexport class NumberFormatter extends Entity {\n _setDefaults() {\n // Defaults\n this._setDefault(\"negativeBase\", 0);\n this._setDefault(\"numberFormat\", \"#,###.#####\");\n this._setDefault(\"smallNumberThreshold\", 1.00);\n const bns = \"_big_number_suffix_\";\n const sns = \"_small_number_suffix_\";\n const bs = \"_byte_suffix_\";\n this._setDefault(\"bigNumberPrefixes\", [{\n \"number\": 1e+3,\n \"suffix\": this._t(bns + \"3\")\n }, {\n \"number\": 1e+6,\n \"suffix\": this._t(bns + \"6\")\n }, {\n \"number\": 1e+9,\n \"suffix\": this._t(bns + \"9\")\n }, {\n \"number\": 1e+12,\n \"suffix\": this._t(bns + \"12\")\n }, {\n \"number\": 1e+15,\n \"suffix\": this._t(bns + \"15\")\n }, {\n \"number\": 1e+18,\n \"suffix\": this._t(bns + \"18\")\n }, {\n \"number\": 1e+21,\n \"suffix\": this._t(bns + \"21\")\n }, {\n \"number\": 1e+24,\n \"suffix\": this._t(bns + \"24\")\n }]);\n this._setDefault(\"smallNumberPrefixes\", [{\n \"number\": 1e-24,\n \"suffix\": this._t(sns + \"24\")\n }, {\n \"number\": 1e-21,\n \"suffix\": this._t(sns + \"21\")\n }, {\n \"number\": 1e-18,\n \"suffix\": this._t(sns + \"18\")\n }, {\n \"number\": 1e-15,\n \"suffix\": this._t(sns + \"15\")\n }, {\n \"number\": 1e-12,\n \"suffix\": this._t(sns + \"12\")\n }, {\n \"number\": 1e-9,\n \"suffix\": this._t(sns + \"9\")\n }, {\n \"number\": 1e-6,\n \"suffix\": this._t(sns + \"6\")\n }, {\n \"number\": 1e-3,\n \"suffix\": this._t(sns + \"3\")\n }]);\n this._setDefault(\"bytePrefixes\", [{\n \"number\": 1,\n suffix: this._t(bs + \"B\")\n }, {\n \"number\": 1024,\n suffix: this._t(bs + \"KB\")\n }, {\n \"number\": 1048576,\n suffix: this._t(bs + \"MB\")\n }, {\n \"number\": 1073741824,\n suffix: this._t(bs + \"GB\")\n }, {\n \"number\": 1099511627776,\n suffix: this._t(bs + \"TB\")\n }, {\n \"number\": 1125899906842624,\n suffix: this._t(bs + \"PB\")\n }]);\n super._setDefaults();\n }\n _beforeChanged() {\n super._beforeChanged();\n }\n /**\r\n * Formats the number according to specific format.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @return Formatted number\r\n */\n format(value, format, precision) {\n // no format passed in or \"Number\"\n if (format == null || $type.isString(format) && format.toLowerCase() === \"number\") {\n format = this.get(\"numberFormat\", \"\");\n }\n // Init return value\n let formatted;\n // Cast to number just in case\n // TODO: maybe use better casting\n let source = Number(value);\n // Is it a built-in format or Intl.NumberFormatOptions\n if ($type.isObject(format)) {\n try {\n if (this.get(\"intlLocales\")) {\n return new Intl.NumberFormat(this.get(\"intlLocales\"), format).format(source);\n } else {\n return new Intl.NumberFormat(undefined, format).format(source);\n }\n } catch (e) {\n return \"Invalid\";\n }\n } else {\n // Clean format\n format = $utils.cleanFormat(format);\n // Get format info (it will also deal with parser caching)\n let info = this.parseFormat(format, this._root.language);\n // format and replace the number\n let details;\n if (source > this.get(\"negativeBase\")) {\n details = info.positive;\n } else if (source < this.get(\"negativeBase\")) {\n details = info.negative;\n } else {\n details = info.zero;\n }\n // Adjust precision\n if (precision != null && !details.mod) {\n details = $object.copy(details);\n details.decimals.active = source == 0 ? 0 : precision;\n }\n // Format\n formatted = details.template.split($type.PLACEHOLDER).join(this.applyFormat(source, details));\n }\n if (this.get(\"forceLTR\") === true) {\n formatted = \"‎\" + formatted;\n }\n return formatted;\n }\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param language Language\r\n * @ignore\r\n */\n parseFormat(format, language) {\n // Check cache\n // TODO\n // let cached = this.getCache(format);\n // if (cached != null) {\n // \treturn cached;\n // }\n const thousandSeparator = language.translateEmpty(\"_thousandSeparator\");\n const decimalSeparator = language.translateEmpty(\"_decimalSeparator\");\n // init format parse info holder\n let info = {\n \"positive\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": thousandSeparator\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": decimalSeparator\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n },\n \"negative\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": thousandSeparator\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": decimalSeparator\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n },\n \"zero\": {\n \"thousands\": {\n \"active\": -1,\n \"passive\": -1,\n \"interval\": -1,\n \"separator\": thousandSeparator\n },\n \"decimals\": {\n \"active\": -1,\n \"passive\": -1,\n \"separator\": decimalSeparator\n },\n \"template\": \"\",\n \"source\": \"\",\n \"parsed\": false\n }\n };\n // Escape double vertical bars (that mean display one vertical bar)\n format = format.replace(\"||\", $type.PLACEHOLDER2);\n // Split it up and deal with different formats\n let parts = format.split(\"|\");\n info.positive.source = parts[0];\n if (typeof parts[2] === \"undefined\") {\n info.zero = info.positive;\n } else {\n info.zero.source = parts[2];\n }\n if (typeof parts[1] === \"undefined\") {\n info.negative = info.positive;\n } else {\n info.negative.source = parts[1];\n }\n // Parse each\n $object.each(info, (_part, item) => {\n // Already parsed\n if (item.parsed) {\n return;\n }\n // Check cached\n // TODO\n // if (typeof this.getCache(item.source) !== \"undefined\") {\n // \tinfo[part] = this.getCache(item.source);\n // \treturn;\n // }\n // Begin parsing\n let partFormat = item.source;\n // Just \"Number\"?\n if (partFormat.toLowerCase() === \"number\") {\n partFormat = this.get(\"numberFormat\", \"#,###.#####\");\n }\n // Let TextFormatter split into chunks\n let chunks = TextFormatter.chunk(partFormat, true);\n for (let i = 0; i < chunks.length; i++) {\n let chunk = chunks[i];\n // replace back double vertical bar\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\n if (chunk.type === \"value\") {\n // Parse format\n // Look for codes\n let matches = chunk.text.match(/[#0.,]+[ ]?[abespABESP%!]?[abespABESP‰!]?/);\n if (matches) {\n if (matches === null || matches[0] === \"\") {\n // no codes here - assume string\n // nothing to do here\n item.template += chunk.text;\n } else {\n // look for the format modifiers at the end\n let mods = matches[0].match(/[abespABESP%‰!]{2}|[abespABESP%‰]{1}$/);\n if (mods) {\n item.mod = mods[0].toLowerCase();\n item.modSpacing = matches[0].match(/[ ]{1}[abespABESP%‰!]{1}$/) ? true : false;\n }\n // break the format up\n let a = matches[0].split(\".\");\n // Deal with thousands\n if (a[0] === \"\") {\n // No directives for thousands\n // Leave default settings (no formatting)\n } else {\n // Counts\n item.thousands.active = (a[0].match(/0/g) || []).length;\n item.thousands.passive = (a[0].match(/\\#/g) || []).length + item.thousands.active;\n // Separator interval\n let b = a[0].split(\",\");\n if (b.length === 1) {\n // No thousands separators\n // Do nothing\n } else {\n // Use length fo the last chunk as thousands length\n item.thousands.interval = (b.pop() || \"\").length;\n if (item.thousands.interval === 0) {\n item.thousands.interval = -1;\n }\n }\n }\n // Deal with decimals\n if (typeof a[1] === \"undefined\") {\n // No directives for decimals\n // Leave at defaults (no formatting)\n } else {\n // Counts\n item.decimals.active = (a[1].match(/0/g) || []).length;\n item.decimals.passive = (a[1].match(/\\#/g) || []).length + item.decimals.active;\n }\n // Add special code to template\n item.template += chunk.text.split(matches[0]).join($type.PLACEHOLDER);\n }\n }\n } else {\n // Quoted string - take it as it is\n item.template += chunk.text;\n }\n }\n // Apply style formatting\n //item.template = getTextFormatter().format(item.template, this.outputFormat);\n // Save cache\n // TODO\n //this.setCache(item.source, item);\n // Mark this as parsed\n item.parsed = true;\n });\n // Save cache (the whole thing)\n // TODO\n //this.setCache(format, info);\n return info;\n }\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by parseFormat()\r\n * @return Formatted number\r\n * @ignore\r\n */\n applyFormat(value, details) {\n // Use absolute values\n let negative = value < 0;\n value = Math.abs(value);\n // Recalculate according to modifier\n let prefix = \"\",\n suffix = \"\";\n let mods = details.mod ? details.mod.split(\"\") : [];\n if (mods.indexOf(\"b\") !== -1) {\n let a = this.applyPrefix(value, this.get(\"bytePrefixes\"), mods.indexOf(\"!\") !== -1);\n value = a[0];\n prefix = a[1];\n suffix = a[2];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (mods.indexOf(\"a\") !== -1) {\n let a = this.applyPrefix(value, value < this.get(\"smallNumberThreshold\") ? this.get(\"smallNumberPrefixes\") : this.get(\"bigNumberPrefixes\"), mods.indexOf(\"!\") !== -1);\n value = a[0];\n prefix = a[1];\n suffix = a[2];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (mods.indexOf(\"p\") !== -1) {\n let ol = Math.min(value.toString().length + 2, 21);\n //value *= 100;\n value = parseFloat(value.toPrecision(ol));\n prefix = this._root.language.translate(\"_percentPrefix\");\n suffix = this._root.language.translate(\"_percentSuffix\");\n if (prefix == \"\" && suffix == \"\") {\n suffix = \"%\";\n }\n } else if (mods.indexOf(\"%\") !== -1) {\n let ol = Math.min(value.toString().length + 2, 21);\n value *= 100;\n value = parseFloat(value.toPrecision(ol));\n suffix = \"%\";\n } else if (mods.indexOf(\"‰\") !== -1) {\n let ol = Math.min(value.toString().length + 3, 21);\n value *= 1000;\n value = parseFloat(value.toPrecision(ol));\n suffix = \"‰\";\n }\n // Round to passive\n if (mods.indexOf(\"e\") !== -1) {\n // convert the value to exponential\n let exp;\n if (details.decimals.passive >= 0) {\n exp = value.toExponential(details.decimals.passive).split(\"e\");\n } else {\n exp = value.toExponential().split(\"e\");\n }\n value = Number(exp[0]);\n suffix = \"e\" + exp[1];\n if (details.modSpacing) {\n suffix = \" \" + suffix;\n }\n } else if (details.decimals.passive === 0) {\n value = Math.round(value);\n } else if (details.decimals.passive > 0) {\n let d = Math.pow(10, details.decimals.passive);\n value = Math.round(value * d) / d;\n }\n // Init return value\n let res = \"\";\n // Calc integer and decimal parts\n let a = $type.numberToString(value).split(\".\");\n // Format integers\n let ints = a[0];\n // Pad integers to active length\n if (ints.length < details.thousands.active) {\n ints = Array(details.thousands.active - ints.length + 1).join(\"0\") + ints;\n }\n // Insert thousands separators\n if (details.thousands.interval > 0) {\n let ip = [];\n let intsr = ints.split(\"\").reverse().join(\"\");\n for (let i = 0, len = ints.length; i <= len; i += details.thousands.interval) {\n let c = intsr.substr(i, details.thousands.interval).split(\"\").reverse().join(\"\");\n if (c !== \"\") {\n ip.unshift(c);\n }\n }\n ints = ip.join(details.thousands.separator);\n }\n // Add integers\n res += ints;\n // Add decimals\n if (a.length === 1) {\n a.push(\"\");\n }\n let decs = a[1];\n // Fill zeros?\n if (decs.length < details.decimals.active) {\n decs += Array(details.decimals.active - decs.length + 1).join(\"0\");\n }\n if (decs !== \"\") {\n res += details.decimals.separator + decs;\n }\n // Can't have empty return value\n if (res === \"\") {\n res = \"0\";\n }\n // Add minus sign back\n if (value !== 0 && negative && mods.indexOf(\"s\") === -1) {\n res = \"-\" + res;\n }\n // Add suffixes/prefixes\n if (prefix) {\n res = prefix + res;\n }\n if (suffix) {\n res += suffix;\n }\n return res;\n }\n applyPrefix(value, prefixes) {\n let force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n let newvalue = value;\n let prefix = \"\";\n let suffix = \"\";\n let applied = false;\n let k = 1;\n for (let i = 0, len = prefixes.length; i < len; i++) {\n if (prefixes[i].number <= value) {\n if (prefixes[i].number === 0) {\n newvalue = 0;\n } else {\n newvalue = value / prefixes[i].number;\n k = prefixes[i].number;\n }\n prefix = prefixes[i].prefix;\n suffix = prefixes[i].suffix;\n applied = true;\n }\n }\n if (!applied && force && prefixes.length && value != 0) {\n // Prefix was not applied. Use the first prefix.\n newvalue = value / prefixes[0].number;\n prefix = prefixes[0].prefix;\n suffix = prefixes[0].suffix;\n applied = true;\n }\n if (applied) {\n newvalue = parseFloat(newvalue.toPrecision(Math.min(k.toString().length + Math.floor(newvalue).toString().replace(/[^0-9]*/g, \"\").length, 21)));\n }\n return [newvalue, prefix, suffix];\n }\n /**\r\n * Replaces brackets with temporary placeholders.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Input text\r\n * @return Escaped text\r\n */\n escape(text) {\n return text.replace(\"||\", $type.PLACEHOLDER2);\n }\n /**\r\n * Replaces placeholders back to brackets.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Escaped text\r\n * @return Unescaped text\r\n */\n unescape(text) {\n return text.replace($type.PLACEHOLDER2, \"|\");\n }\n}\n//# sourceMappingURL=NumberFormatter.js.map","function parseDate(timezone, date) {\n let year = 0;\n let month = 0;\n let day = 1;\n let hour = 0;\n let minute = 0;\n let second = 0;\n let millisecond = 0;\n let weekday = 0;\n timezone.formatToParts(date).forEach(x => {\n switch (x.type) {\n case \"year\":\n year = +x.value;\n break;\n case \"month\":\n month = +x.value - 1;\n break;\n case \"day\":\n day = +x.value;\n break;\n case \"hour\":\n hour = +x.value;\n break;\n case \"minute\":\n minute = +x.value;\n break;\n case \"second\":\n second = +x.value;\n break;\n case \"fractionalSecond\":\n millisecond = +x.value;\n break;\n case \"weekday\":\n switch (x.value) {\n case \"Sun\":\n weekday = 0;\n break;\n case \"Mon\":\n weekday = 1;\n break;\n case \"Tue\":\n weekday = 2;\n break;\n case \"Wed\":\n weekday = 3;\n break;\n case \"Thu\":\n weekday = 4;\n break;\n case \"Fri\":\n weekday = 5;\n break;\n case \"Sat\":\n weekday = 6;\n break;\n }\n }\n });\n if (hour === 24) {\n hour = 0;\n }\n return {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond,\n weekday\n };\n}\nfunction toUTCDate(timezone, date) {\n const {\n year,\n month,\n day,\n hour,\n minute,\n second,\n millisecond\n } = parseDate(timezone, date);\n return Date.UTC(year, month, day, hour, minute, second, millisecond);\n}\nexport class Timezone {\n constructor(timezone, isReal) {\n Object.defineProperty(this, \"_utc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_dtf\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n if (!isReal) {\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n }\n this.name = timezone;\n this._utc = new Intl.DateTimeFormat(\"UTC\", {\n hour12: false,\n timeZone: \"UTC\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n weekday: \"short\",\n fractionalSecondDigits: 3\n });\n this._dtf = new Intl.DateTimeFormat(\"UTC\", {\n hour12: false,\n timeZone: timezone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n weekday: \"short\",\n fractionalSecondDigits: 3\n });\n }\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param timezone IANA timezone\r\n * @return Instantiated object\r\n */\n static new(timezone) {\n return new this(timezone, true);\n }\n convertLocal(date) {\n const offset = this.offsetUTC(date);\n const userOffset = date.getTimezoneOffset();\n const output = new Date(date);\n output.setUTCMinutes(output.getUTCMinutes() - (offset - userOffset));\n const newUserOffset = output.getTimezoneOffset();\n if (userOffset != newUserOffset) {\n output.setUTCMinutes(output.getUTCMinutes() + newUserOffset - userOffset);\n }\n return output;\n }\n offsetUTC(date) {\n const utc = toUTCDate(this._utc, date);\n const dtf = toUTCDate(this._dtf, date);\n return (utc - dtf) / 60000;\n }\n parseDate(date) {\n return parseDate(this._dtf, date);\n }\n}\n//# sourceMappingURL=Timezone.js.map","import { Entity } from \"./Entity\";\nimport { TextFormatter } from \"./TextFormatter\";\nimport { Timezone } from \"./Timezone\";\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\n/**\r\n * Date formatter class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n * @important\r\n */\nexport class DateFormatter extends Entity {\n _setDefaults() {\n // Defaults\n this._setDefault(\"capitalize\", true);\n this._setDefault(\"dateFormat\", \"yyyy-MM-dd\");\n super._setDefaults();\n }\n _beforeChanged() {\n super._beforeChanged();\n }\n /**\r\n * Formats a source `Date` object into string format\r\n * @param source inpout date\r\n * @param format Output format\r\n * @param ignoreTimezone Ignore timezone?\r\n * @return Formatted date\r\n */\n format(source, format) {\n let ignoreTimezone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Locale?\n // TODO\n // No format passed in or it's empty\n if (typeof format === \"undefined\" || format === \"\") {\n format = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n }\n // Init return value\n let formatted;\n // Cast?\n // TODO: decide if we need to cast\n let date = source;\n // Is it a built-in format or Intl.DateTimeFormat\n if ($type.isObject(format)) {\n try {\n const locales = this.get(\"intlLocales\");\n if (locales) {\n return new Intl.DateTimeFormat(locales, format).format(date);\n } else {\n return new Intl.DateTimeFormat(undefined, format).format(date);\n }\n } catch (e) {\n return \"Invalid\";\n }\n }\n // get format info (it will also deal with parser caching)\n let info = this.parseFormat(format);\n // Should we apply custom time zone?\n const timezone = this._root.timezone;\n if (timezone && !this._root.utc && !ignoreTimezone) {\n date = timezone.convertLocal(date);\n }\n // Check if it's a valid date\n if (!$type.isNumber(date.getTime())) {\n // TODO translation\n //return this._t(\"Invalid date\");\n return \"Invalid date\";\n }\n // Apply format\n formatted = this.applyFormat(date, info, ignoreTimezone);\n // Capitalize\n if (this.get(\"capitalize\")) {\n formatted = formatted.replace(/^.{1}/, formatted.substr(0, 1).toUpperCase());\n }\n // We're done\n return formatted;\n }\n /**\r\n * Applies format to Date.\r\n *\r\n * @param date Date object\r\n * @param info Parsed format information\r\n * @return Formatted date string\r\n */\n applyFormat(date, info) {\n let ignoreTimezone = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Init return value\n let res = info.template;\n // Get values\n let fullYear,\n month,\n weekday,\n day,\n hours,\n minutes,\n seconds,\n milliseconds,\n timestamp = date.getTime();\n if (this._root.utc && !ignoreTimezone) {\n fullYear = date.getUTCFullYear();\n month = date.getUTCMonth();\n weekday = date.getUTCDay();\n day = date.getUTCDate();\n hours = date.getUTCHours();\n minutes = date.getUTCMinutes();\n seconds = date.getUTCSeconds();\n milliseconds = date.getUTCMilliseconds();\n } else {\n fullYear = date.getFullYear();\n month = date.getMonth();\n weekday = date.getDay();\n day = date.getDate();\n hours = date.getHours();\n minutes = date.getMinutes();\n seconds = date.getSeconds();\n milliseconds = date.getMilliseconds();\n }\n // Go through each part and format/replace it in template\n for (let i = 0, len = info.parts.length; i < len; i++) {\n let value = \"\";\n switch (info.parts[i]) {\n case \"G\":\n value = this._t(fullYear < 0 ? \"_era_bc\" : \"_era_ad\");\n break;\n case \"yyyy\":\n value = Math.abs(fullYear).toString();\n if (fullYear < 0) {\n value += this._t(\"_era_bc\");\n }\n break;\n case \"yyy\":\n case \"yy\":\n case \"y\":\n value = Math.abs(fullYear).toString().substr(-info.parts[i].length);\n if (fullYear < 0) {\n value += this._t(\"_era_bc\");\n }\n break;\n case \"YYYY\":\n case \"YYY\":\n case \"YY\":\n case \"Y\":\n let year = $utils.getWeekYear(date, this._root.utc);\n if (info.parts[i] == \"YYYY\") {\n value = Math.abs(year).toString();\n } else {\n value = Math.abs(year).toString().substr(-info.parts[i].length);\n }\n if (year < 0) {\n value += this._t(\"_era_bc\");\n }\n break;\n case \"u\":\n // @todo\n break;\n case \"q\":\n value = \"\" + Math.ceil((date.getMonth() + 1) / 3);\n break;\n case \"MMMMM\":\n value = this._t(this._getMonth(month)).substr(0, 1);\n break;\n case \"MMMM\":\n value = this._t(this._getMonth(month));\n break;\n case \"MMM\":\n value = this._t(this._getShortMonth(month));\n break;\n case \"MM\":\n value = $utils.padString(month + 1, 2, \"0\");\n break;\n case \"M\":\n value = (month + 1).toString();\n break;\n case \"ww\":\n value = $utils.padString($utils.getWeek(date, this._root.utc), 2, \"0\");\n break;\n case \"w\":\n value = $utils.getWeek(date, this._root.utc).toString();\n break;\n case \"W\":\n value = $utils.getMonthWeek(date, this._root.utc).toString();\n break;\n case \"dd\":\n value = $utils.padString(day, 2, \"0\");\n break;\n case \"d\":\n value = day.toString();\n break;\n case \"DD\":\n case \"DDD\":\n value = $utils.padString($utils.getYearDay(date, this._root.utc).toString(), info.parts[i].length, \"0\");\n break;\n case \"D\":\n value = $utils.getYearDay(date, this._root.utc).toString();\n break;\n case \"F\":\n // @todo\n break;\n case \"g\":\n // @todo\n break;\n case \"t\":\n value = this._root.language.translateFunc(\"_dateOrd\").call(this, day);\n break;\n case \"E\":\n value = (weekday || 7).toString();\n break;\n case \"EE\":\n value = $utils.padString((weekday || 7).toString(), 2, \"0\");\n break;\n case \"EEE\":\n case \"eee\":\n value = this._t(this._getShortWeekday(weekday));\n break;\n case \"EEEE\":\n case \"eeee\":\n value = this._t(this._getWeekday(weekday));\n break;\n case \"EEEEE\":\n case \"eeeee\":\n value = this._t(this._getShortWeekday(weekday)).substr(0, 1);\n break;\n case \"e\":\n case \"ee\":\n value = (weekday - (this._root.locale.firstDayOfWeek || 1) + 1).toString();\n if (info.parts[i] == \"ee\") {\n value = $utils.padString(value, 2, \"0\");\n }\n break;\n case \"a\":\n if (hours >= 12) {\n value = this._t(\"PM\");\n } else {\n value = this._t(\"AM\");\n }\n break;\n case \"aa\":\n if (hours >= 12) {\n value = this._t(\"P.M.\");\n } else {\n value = this._t(\"A.M.\");\n }\n break;\n case \"aaa\":\n if (hours >= 12) {\n value = this._t(\"P\");\n } else {\n value = this._t(\"A\");\n }\n break;\n case \"h\":\n value = $utils.get12Hours(hours).toString();\n break;\n case \"hh\":\n value = $utils.padString($utils.get12Hours(hours), 2, \"0\");\n break;\n case \"H\":\n value = hours.toString();\n break;\n case \"HH\":\n value = $utils.padString(hours, 2, \"0\");\n break;\n case \"K\":\n value = $utils.get12Hours(hours, 0).toString();\n break;\n case \"KK\":\n value = $utils.padString($utils.get12Hours(hours, 0), 2, \"0\");\n break;\n case \"k\":\n value = (hours + 1).toString();\n break;\n case \"kk\":\n value = $utils.padString(hours + 1, 2, \"0\");\n break;\n case \"m\":\n value = minutes.toString();\n break;\n case \"mm\":\n value = $utils.padString(minutes, 2, \"0\");\n break;\n case \"s\":\n value = seconds.toString();\n break;\n case \"ss\":\n value = $utils.padString(seconds, 2, \"0\");\n break;\n case \"S\":\n case \"SS\":\n case \"SSS\":\n value = Math.round(milliseconds / 1000 * Math.pow(10, info.parts[i].length)).toString();\n break;\n case \"x\":\n value = timestamp.toString();\n break;\n case \"n\":\n case \"nn\":\n case \"nnn\":\n value = $utils.padString(milliseconds, info.parts[i].length, \"0\");\n break;\n case \"z\":\n value = $utils.getTimeZone(date, false, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\n break;\n case \"zz\":\n value = $utils.getTimeZone(date, true, false, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\n break;\n case \"zzz\":\n value = $utils.getTimeZone(date, false, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined).replace(/[+-]+[0-9]+$/, \"\");\n break;\n case \"zzzz\":\n value = $utils.getTimeZone(date, true, true, this._root.utc, this._root.timezone ? this._root.timezone.name : undefined);\n break;\n case \"Z\":\n case \"ZZ\":\n let timezone = this._root.utc ? \"UTC\" : this._root.timezone;\n if (timezone instanceof Timezone) {\n timezone = timezone.name;\n }\n const offset = timezone ? $utils.getTimezoneOffset(timezone) : date.getTimezoneOffset();\n let tz = Math.abs(offset) / 60;\n let tzh = Math.floor(tz);\n let tzm = tz * 60 - tzh * 60;\n if (this._root.utc) {\n tzh = 0;\n tzm = 0;\n }\n if (info.parts[i] == \"Z\") {\n value = \"GMT\";\n value += offset > 0 ? \"-\" : \"+\";\n value += $utils.padString(tzh, 2) + \":\" + $utils.padString(tzm, 2);\n } else {\n value = offset > 0 ? \"-\" : \"+\";\n value += $utils.padString(tzh, 2) + $utils.padString(tzm, 2);\n }\n break;\n case \"i\":\n value = date.toISOString();\n break;\n case \"I\":\n value = date.toUTCString();\n break;\n }\n res = res.replace($type.PLACEHOLDER, value);\n }\n return res;\n }\n /**\r\n * Parses format into structured infromation.\r\n *\r\n * @param format Format template\r\n */\n parseFormat(format) {\n // Check cache\n // TODO: implement caching of the parsed format\n // Init format parse info holder\n let info = {\n \"template\": \"\",\n \"parts\": []\n };\n // Let TextFormatter split into chunks\n let chunks = TextFormatter.chunk(format, true);\n for (let i = 0; i < chunks.length; i++) {\n let chunk = chunks[i];\n if (chunk.type === \"value\") {\n // Just \"Date\"?\n if (chunk.text.match(/^date$/i)) {\n let dateFormat = this.get(\"dateFormat\", \"yyyy-MM-dd\");\n if (!$type.isString(dateFormat)) {\n dateFormat = \"yyyy-MM-dd\";\n }\n chunk.text = dateFormat;\n }\n // Find all possible parts\n let matches = chunk.text.match(/G|yyyy|yyy|yy|y|YYYY|YYY|YY|Y|u|q|MMMMM|MMMM|MMM|MM|M|ww|w|W|dd|d|DDD|DD|D|F|g|EEEEE|EEEE|EEE|EE|E|eeeee|eeee|eee|ee|e|aaa|aa|a|hh|h|HH|H|KK|K|kk|k|mm|m|ss|s|SSS|SS|S|A|zzzz|zzz|zz|z|ZZ|Z|t|x|nnn|nn|n|i|I/g);\n // Found?\n if (matches) {\n // Populate template\n for (let x = 0; x < matches.length; x++) {\n info.parts.push(matches[x]);\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\n }\n }\n }\n // Apply to template\n info.template += chunk.text;\n }\n // Save cache\n // TODO\n return info;\n }\n _months() {\n return [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n }\n _getMonth(index) {\n return this._months()[index];\n }\n _shortMonths() {\n return [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May(short)\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n }\n _getShortMonth(index) {\n return this._shortMonths()[index];\n }\n _weekdays() {\n return [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n }\n _getWeekday(index) {\n return this._weekdays()[index];\n }\n _shortWeekdays() {\n return [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n }\n _getShortWeekday(index) {\n return this._shortWeekdays()[index];\n }\n parse(source, format) {\n // Is it already a Date\n if (source instanceof Date) {\n return source;\n }\n // Is it a numeric timestamp\n if ($type.isNumber(source)) {\n return new Date(source);\n }\n // Are we parsing a timestamp?\n if (format == \"x\") {\n return new Date(parseInt(source));\n }\n // No? Let's check if it's string, and try converting to it if nec\n if (!$type.isString(source)) {\n source = source.toString();\n }\n // Init return value\n let res;\n // Init RegEx for parsing\n let reg = \"\";\n // Clean format\n format = $utils.cleanFormat(format);\n // Clip format to length of the source string\n format = format.substr(0, source.length);\n // Parse format\n let info = this.parseFormat(format);\n // Init parsed items holder\n let parsedIndexes = {\n \"year\": -1,\n \"year3\": -1,\n \"year2\": -1,\n \"year1\": -1,\n \"month\": -1,\n \"monthShort\": -1,\n \"monthLong\": -1,\n \"weekdayShort\": -1,\n \"weekdayLong\": -1,\n \"day\": -1,\n \"yearDay\": -1,\n \"week\": -1,\n \"hourBase0\": -1,\n \"hour12Base0\": -1,\n \"hourBase1\": -1,\n \"hour12Base1\": -1,\n \"minute\": -1,\n \"second\": -1,\n \"millisecond\": -1,\n \"millisecondDigits\": -1,\n \"am\": -1,\n \"zone\": -1,\n \"timestamp\": -1,\n \"iso\": -1\n };\n // Init values\n let resValues = {\n \"year\": 1970,\n \"month\": 0,\n \"day\": 1,\n \"hour\": 0,\n \"minute\": 0,\n \"second\": 0,\n \"millisecond\": 0,\n \"timestamp\": null,\n \"offset\": 0,\n \"utc\": this._root.utc\n };\n // Index adjuster\n let indexAdjust = 0;\n let index = 0;\n // Iterate through all of the parts\n for (let i = 0; i < info.parts.length; i++) {\n // Set current match index\n index = i + indexAdjust + 1;\n switch (info.parts[i]) {\n case \"yyyy\":\n case \"YYYY\":\n reg += \"([0-9]{4})\";\n parsedIndexes.year = index;\n break;\n case \"yyy\":\n case \"YYY\":\n reg += \"([0-9]{3})\";\n parsedIndexes.year3 = index;\n break;\n case \"yy\":\n case \"YY\":\n reg += \"([0-9]{2})\";\n parsedIndexes.year2 = index;\n break;\n case \"y\":\n case \"Y\":\n reg += \"([0-9]{1})\";\n parsedIndexes.year1 = index;\n break;\n case \"MMMM\":\n reg += \"(\" + this.getStringList(this._months()).join(\"|\") + \")\";\n parsedIndexes.monthLong = index;\n break;\n case \"MMM\":\n reg += \"(\" + this.getStringList(this._shortMonths()).join(\"|\") + \")\";\n parsedIndexes.monthShort = index;\n break;\n case \"MM\":\n case \"M\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.month = index;\n break;\n case \"ww\":\n case \"w\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.week = index;\n break;\n case \"dd\":\n case \"d\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.day = index;\n break;\n case \"DDD\":\n case \"DD\":\n case \"D\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.yearDay = index;\n break;\n case \"dddd\":\n reg += \"(\" + this.getStringList(this._weekdays()).join(\"|\") + \")\";\n parsedIndexes.weekdayLong = index;\n break;\n case \"ddd\":\n reg += \"(\" + this.getStringList(this._shortWeekdays()).join(\"|\") + \")\";\n parsedIndexes.weekdayShort = index;\n break;\n case \"aaa\":\n case \"aa\":\n case \"a\":\n // TODO: fix (escape regex)\n reg += \"(\" + this.getStringList([\"AM\", \"PM\", \"A\\.M\\.\", \"P\\.M\\.\", \"A\", \"P\"]).join(\"|\") + \")\";\n parsedIndexes.am = index;\n break;\n case \"hh\":\n case \"h\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hour12Base1 = index;\n break;\n case \"HH\":\n case \"H\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hourBase0 = index;\n break;\n case \"KK\":\n case \"K\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hour12Base0 = index;\n break;\n case \"kk\":\n case \"k\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.hourBase1 = index;\n break;\n case \"mm\":\n case \"m\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.minute = index;\n break;\n case \"ss\":\n case \"s\":\n reg += \"([0-9]{2}|[0-9]{1})\";\n parsedIndexes.second = index;\n break;\n case \"SSS\":\n case \"SS\":\n case \"S\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.millisecond = index;\n parsedIndexes.millisecondDigits = info.parts[i].length;\n break;\n case \"nnn\":\n case \"nn\":\n case \"n\":\n reg += \"([0-9]{3}|[0-9]{2}|[0-9]{1})\";\n parsedIndexes.millisecond = index;\n break;\n case \"x\":\n reg += \"([0-9]{1,})\";\n parsedIndexes.timestamp = index;\n break;\n case \"Z\":\n reg += \"GMT([-+]+[0-9]{2}:[0-9]{2})\";\n parsedIndexes.zone = index;\n break;\n case \"ZZ\":\n reg += \"([\\\\-+]+[0-9]{2}[0-9]{2})\";\n parsedIndexes.zone = index;\n break;\n case \"i\":\n reg += \"([0-9]{4})-?([0-9]{2})-?([0-9]{2})T?([0-9]{2}):?([0-9]{2}):?([0-9]{2})\\\\.?([0-9]{0,3})([zZ]|[+\\\\-][0-9]{2}:?[0-9]{2}|$)\";\n parsedIndexes.iso = index;\n indexAdjust += 7;\n break;\n case \"G\":\n case \"YYYY\":\n case \"YYY\":\n case \"YY\":\n case \"Y\":\n case \"MMMMM\":\n case \"W\":\n case \"EEEEE\":\n case \"EEEE\":\n case \"EEE\":\n case \"EE\":\n case \"E\":\n case \"eeeee\":\n case \"eeee\":\n case \"eee\":\n case \"ee\":\n case \"e\":\n case \"zzzz\":\n case \"zzz\":\n case \"zz\":\n case \"z\":\n case \"t\":\n // Ignore\n indexAdjust--;\n break;\n }\n reg += \"[^0-9]*\";\n }\n // Try matching\n let regex = new RegExp(reg);\n let matches = source.match(regex);\n if (matches) {\n // Populate the date object\n // Full year\n if (parsedIndexes.year > -1) {\n resValues.year = parseInt(matches[parsedIndexes.year]);\n }\n // 3-digit year\n if (parsedIndexes.year3 > -1) {\n let val = parseInt(matches[parsedIndexes.year3]);\n val += 1000;\n resValues.year = val;\n }\n // 2-digit year\n if (parsedIndexes.year2 > -1) {\n let val = parseInt(matches[parsedIndexes.year2]);\n if (val > 50) {\n val += 1000;\n } else {\n val += 2000;\n }\n resValues.year = val;\n }\n // 1-digit year\n if (parsedIndexes.year1 > -1) {\n let val = parseInt(matches[parsedIndexes.year1]);\n val = Math.floor(new Date().getFullYear() / 10) * 10 + val;\n resValues.year = val;\n }\n // Full month\n if (parsedIndexes.monthLong > -1) {\n resValues.month = this.resolveMonth(matches[parsedIndexes.monthLong]);\n }\n // Short month\n if (parsedIndexes.monthShort > -1) {\n resValues.month = this.resolveShortMonth(matches[parsedIndexes.monthShort]);\n }\n // Numeric month\n if (parsedIndexes.month > -1) {\n resValues.month = parseInt(matches[parsedIndexes.month]) - 1;\n }\n // Weekday\n // @todo\n // Week\n if (parsedIndexes.week > -1 && parsedIndexes.day === -1) {\n // We parse weeks ONLY if day is not explicitly set\n // TODO: this needs work\n // (but maybe later - I can hardly imagine anyone passing their dates in weeks)\n resValues.month = 0;\n resValues.day = $utils.getDayFromWeek(parseInt(matches[parsedIndexes.week]), resValues.year, 1, this._root.utc);\n }\n // Day\n if (parsedIndexes.day > -1) {\n resValues.day = parseInt(matches[parsedIndexes.day]);\n }\n // Year day\n if (parsedIndexes.yearDay > -1) {\n resValues.month = 0;\n resValues.day = parseInt(matches[parsedIndexes.yearDay]);\n }\n // 24 Hour (0-23)\n if (parsedIndexes.hourBase0 > -1) {\n resValues.hour = parseInt(matches[parsedIndexes.hourBase0]);\n }\n // 24 Hour (1-24)\n if (parsedIndexes.hourBase1 > -1) {\n resValues.hour = parseInt(matches[parsedIndexes.hourBase1]) - 1;\n }\n // 12 Hour (0-11)\n if (parsedIndexes.hour12Base0 > -1) {\n let val = parseInt(matches[parsedIndexes.hour12Base0]);\n if (val == 11) {\n val = 0;\n }\n if (parsedIndexes.am > -1 && !this.isAm(matches[parsedIndexes.am])) {\n val += 12;\n }\n resValues.hour = val;\n }\n // 12 Hour (1-12)\n if (parsedIndexes.hour12Base1 > -1) {\n let val = parseInt(matches[parsedIndexes.hour12Base1]);\n if (val == 12) {\n val = 0;\n }\n if (parsedIndexes.am > -1 && !this.isAm(matches[parsedIndexes.am])) {\n val += 12;\n }\n resValues.hour = val;\n }\n // Minute\n if (parsedIndexes.minute > -1) {\n resValues.minute = parseInt(matches[parsedIndexes.minute]);\n }\n // Second\n if (parsedIndexes.second > -1) {\n resValues.second = parseInt(matches[parsedIndexes.second]);\n }\n // Millisecond\n if (parsedIndexes.millisecond > -1) {\n let val = parseInt(matches[parsedIndexes.millisecond]);\n if (parsedIndexes.millisecondDigits == 2) {\n val *= 10;\n } else if (parsedIndexes.millisecondDigits == 1) {\n val *= 100;\n }\n resValues.millisecond = val;\n }\n // Timestamp\n if (parsedIndexes.timestamp > -1) {\n resValues.timestamp = parseInt(matches[parsedIndexes.timestamp]);\n const ts = new Date(resValues.timestamp);\n resValues.year = ts.getUTCFullYear();\n resValues.month = ts.getUTCMonth();\n resValues.day = ts.getUTCDate();\n resValues.hour = ts.getUTCHours();\n resValues.minute = ts.getUTCMinutes();\n resValues.second = ts.getUTCSeconds();\n resValues.millisecond = ts.getUTCMilliseconds();\n }\n // Adjust time zone\n if (parsedIndexes.zone > -1) {\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.zone]);\n }\n // ISO\n if (parsedIndexes.iso > -1) {\n resValues.year = $type.toNumber(matches[parsedIndexes.iso + 0]);\n resValues.month = $type.toNumber(matches[parsedIndexes.iso + 1]) - 1;\n resValues.day = $type.toNumber(matches[parsedIndexes.iso + 2]);\n resValues.hour = $type.toNumber(matches[parsedIndexes.iso + 3]);\n resValues.minute = $type.toNumber(matches[parsedIndexes.iso + 4]);\n resValues.second = $type.toNumber(matches[parsedIndexes.iso + 5]);\n resValues.millisecond = $type.toNumber(matches[parsedIndexes.iso + 6]);\n if (matches[parsedIndexes.iso + 7] == \"Z\" || matches[parsedIndexes.iso + 7] == \"z\") {\n resValues.utc = true;\n } else if (matches[parsedIndexes.iso + 7] != \"\") {\n resValues.offset = this.resolveTimezoneOffset(new Date(resValues.year, resValues.month, resValues.day), matches[parsedIndexes.iso + 7]);\n }\n }\n // Create Date object\n if (resValues.utc) {\n res = new Date(Date.UTC(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute, resValues.second, resValues.millisecond));\n } else {\n res = new Date(resValues.year, resValues.month, resValues.day, resValues.hour, resValues.minute + resValues.offset, resValues.second, resValues.millisecond);\n }\n } else {\n // Didn't match anything\n // Let's try dropping it into Date constructor and hope for the best\n res = new Date(source);\n }\n return res;\n }\n resolveTimezoneOffset(date, zone) {\n let value = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\n if (value) {\n let match = zone.match(/([+\\-]?)([0-9]{2}):?([0-9]{2})/);\n let dir = match[1];\n let hour = match[2];\n let minute = match[3];\n let offset = parseInt(hour) * 60 + parseInt(minute);\n // Adjust offset\n // Making it negative does not seem to make sense, but it's right\n // because of how JavaScript calculates GMT offsets\n if (dir == \"+\") {\n offset *= -1;\n }\n // Check the difference in offset\n let originalOffset = (date || new Date()).getTimezoneOffset();\n let diff = offset - originalOffset;\n return diff;\n }\n return 0;\n }\n /**\r\n * Resolves month name (i.e. \"December\") into a month number (11).\r\n *\r\n * @param value Month name\r\n * @return Month number\r\n */\n resolveMonth(value) {\n // Let's try English first\n let month = this._months().indexOf(value);\n if (month > -1) {\n return month;\n }\n // Try the translation\n if (!this._root.language.isDefault()) {\n month = this._root.language.translateAll(this._months()).indexOf(value);\n if (month > -1) {\n return month;\n }\n }\n return 0;\n }\n /**\r\n * Resolves short month name (i.e. \"Dec\") into a month number.\r\n *\r\n * @param value Short month name\r\n * @return Month number\r\n */\n resolveShortMonth(value) {\n // Let's try English first\n let month = this._shortMonths().indexOf(value);\n if (month > -1) {\n return month;\n }\n // Maybe long month (workaround for May)\n month = this._months().indexOf(value);\n if (month > -1) {\n return month;\n }\n // Try the translation\n if (this._root.language && !this._root.language.isDefault()) {\n month = this._root.language.translateAll(this._shortMonths()).indexOf(value);\n if (month > -1) {\n return month;\n }\n }\n return 0;\n }\n /**\r\n * Checks if passed in string represents AM/PM notation in many of its\r\n * versions.\r\n *\r\n * @param value Source string\r\n * @return Is it AM/PM?\r\n */\n isAm(value) {\n let list = this.getStringList([\"AM\", \"A.M.\", \"A\"]);\n return list.indexOf(value.toUpperCase()) > -1;\n }\n /**\r\n * Translates list of strings.\r\n *\r\n * @param list Source strings\r\n * @return Translated strings\r\n */\n getStringList(list) {\n let res = [];\n for (let i = 0; i < list.length; i++) {\n // translate?\n if (this._root.language) {\n res.push($utils.escapeForRgex(this._t(list[i])));\n } else {\n res.push($utils.escapeForRgex(list[i]));\n }\n }\n return res;\n }\n}\n//# sourceMappingURL=DateFormatter.js.map","import { Entity } from \"./Entity\";\nimport { TextFormatter } from \"./TextFormatter\";\nimport * as $object from \"./Object\";\nimport * as $utils from \"./Utils\";\nimport * as $type from \"./Type\";\n/**\r\n * A class used to format numberic values as time duration.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-durations/} for more info\r\n */\nexport class DurationFormatter extends Entity {\n constructor() {\n super(...arguments);\n /**\r\n * Collection of aliases for units.\r\n */\n Object.defineProperty(this, \"_unitAliases\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n \"Y\": \"y\",\n \"D\": \"d\",\n \"H\": \"h\",\n \"K\": \"h\",\n \"k\": \"h\",\n \"n\": \"S\"\n }\n });\n }\n _setDefaults() {\n const dmillisecond = \"_duration_millisecond\";\n const dsecond = \"_duration_second\";\n const dminute = \"_duration_minute\";\n const dhour = \"_duration_hour\";\n const dday = \"_duration_day\";\n const dweek = \"_duration_week\";\n const dmonth = \"_duration_month\";\n const dyear = \"_duration_year\";\n const asecond = \"_second\";\n const aminute = \"_minute\";\n const ahour = \"_hour\";\n const aday = \"_day\";\n const aweek = \"_week\";\n const amonth = \"_week\";\n const ayear = \"_year\";\n // Defaults\n this._setDefault(\"negativeBase\", 0);\n this._setDefault(\"baseUnit\", \"second\");\n this._setDefault(\"durationFormats\", {\n \"millisecond\": {\n \"millisecond\": this._t(dmillisecond),\n \"second\": this._t(dmillisecond + asecond),\n \"minute\": this._t(dmillisecond + aminute),\n \"hour\": this._t(dmillisecond + ahour),\n \"day\": this._t(dmillisecond + aday),\n \"week\": this._t(dmillisecond + aweek),\n \"month\": this._t(dmillisecond + amonth),\n \"year\": this._t(dmillisecond + ayear)\n },\n \"second\": {\n \"second\": this._t(dsecond),\n \"minute\": this._t(dsecond + aminute),\n \"hour\": this._t(dsecond + ahour),\n \"day\": this._t(dsecond + aday),\n \"week\": this._t(dsecond + aweek),\n \"month\": this._t(dsecond + amonth),\n \"year\": this._t(dsecond + ayear)\n },\n \"minute\": {\n \"minute\": this._t(dminute),\n \"hour\": this._t(dminute + ahour),\n \"day\": this._t(dminute + aday),\n \"week\": this._t(dminute + aweek),\n \"month\": this._t(dminute + amonth),\n \"year\": this._t(dminute + ayear)\n },\n \"hour\": {\n \"hour\": this._t(dhour),\n \"day\": this._t(dhour + aday),\n \"week\": this._t(dhour + aweek),\n \"month\": this._t(dhour + amonth),\n \"year\": this._t(dhour + ayear)\n },\n \"day\": {\n \"day\": this._t(dday),\n \"week\": this._t(dday + aweek),\n \"month\": this._t(dday + amonth),\n \"year\": this._t(dday + ayear)\n },\n \"week\": {\n \"week\": this._t(dweek),\n \"month\": this._t(dweek + amonth),\n \"year\": this._t(dweek + ayear)\n },\n \"month\": {\n \"month\": this._t(dmonth),\n \"year\": this._t(dmonth + ayear)\n },\n \"year\": {\n \"year\": this._t(dyear)\n }\n });\n super._setDefaults();\n }\n _beforeChanged() {\n super._beforeChanged();\n }\n /**\r\n * Formats the number as duration.\r\n *\r\n * For example `1000` (base unit seconds) would be converted to `16:40` as in\r\n * 16 minutes and 40 seconds.\r\n *\r\n * @param value Value to format\r\n * @param format Format to apply\r\n * @param base Override base unit\r\n * @return Formatted number\r\n */\n format(value, format, base) {\n // no base unit?\n let baseUnit = base || this.get(\"baseUnit\");\n // no format passed in or empty\n if (typeof format === \"undefined\" || format === \"\") {\n if (this.get(\"durationFormat\") != null) {\n format = this.get(\"durationFormat\");\n } else {\n format = this.getFormat($type.toNumber(value), undefined, baseUnit);\n }\n }\n // Clean format\n format = $utils.cleanFormat(format);\n // get format info (it will also deal with parser caching)\n let info = this.parseFormat(format, baseUnit);\n // cast to number just in case\n // TODO: maybe use better casting\n let source = Number(value);\n // format and replace the number\n let details;\n if (source > this.get(\"negativeBase\")) {\n details = info.positive;\n } else if (source < this.get(\"negativeBase\")) {\n details = info.negative;\n } else {\n details = info.zero;\n }\n // Format\n let formatted = this.applyFormat(source, details);\n // Apply color?\n if (details.color !== \"\") {\n formatted = \"[\" + details.color + \"]\" + formatted + \"[/]\";\n }\n return formatted;\n }\n /**\r\n * Parses supplied format into structured object which can be used to format\r\n * the number.\r\n *\r\n * @param format Format string, i.e. \"#,###.00\"\r\n * @param base Override base unit\r\n * @return Parsed information\r\n */\n parseFormat(format, base) {\n // Check cache\n // TODO\n // let cached = this.getCache(format);\n // if (cached != null) {\n // \treturn cached;\n // }\n // no base unit?\n let baseUnit = base || this.get(\"baseUnit\");\n // Initialize duration parsing info\n let info = {\n \"positive\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n },\n \"negative\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n },\n \"zero\": {\n \"color\": \"\",\n \"template\": \"\",\n \"parts\": [],\n \"source\": \"\",\n \"baseUnit\": baseUnit,\n \"parsed\": false,\n \"absolute\": false\n }\n };\n // Escape double vertical bars (that mean display one vertical bar)\n format = format.replace(\"||\", $type.PLACEHOLDER2);\n // Split it up and deal with different formats\n let parts = format.split(\"|\");\n info.positive.source = parts[0];\n if (typeof parts[2] === \"undefined\") {\n info.zero = info.positive;\n } else {\n info.zero.source = parts[2];\n }\n if (typeof parts[1] === \"undefined\") {\n info.negative = info.positive;\n } else {\n info.negative.source = parts[1];\n }\n // Parse each\n $object.each(info, (_part, item) => {\n // Already parsed\n if (item.parsed) {\n return;\n }\n // Check cached\n // TODO\n // if (typeof this.getCache(item.source) !== \"undefined\") {\n // \tinfo[part] = this.getCache(item.source);\n // \treturn;\n // }\n // Begin parsing\n let partFormat = item.source;\n // Check for [] directives\n let dirs = [];\n dirs = item.source.match(/^\\[([^\\]]*)\\]/);\n if (dirs && dirs.length && dirs[0] !== \"\") {\n partFormat = item.source.substr(dirs[0].length);\n item.color = dirs[1];\n }\n // Let TextFormatter split into chunks\n let chunks = TextFormatter.chunk(partFormat, true);\n for (let i = 0; i < chunks.length; i++) {\n let chunk = chunks[i];\n // replace back double vertical bar\n chunk.text = chunk.text.replace($type.PLACEHOLDER2, \"|\");\n if (chunk.type === \"value\") {\n // Just \"Duration\"?\n // if (chunk.text.toLowerCase() === \"duration\") {\n // \tchunk.text = durationFormat;\n // }\n // Check for \"a\" (absolute) modifier\n if (chunk.text.match(/[yYMdDwhHKkmsSn]+a/)) {\n item.absolute = true;\n chunk.text = chunk.text.replace(/([yYMdDwhHKkmsSn]+)a/, \"$1\");\n }\n // Find all possible parts\n let matches = chunk.text.match(/y+|Y+|M+|d+|D+|w+|h+|H+|K+|k+|m+|s+|S+|n+/g);\n if (matches) {\n // Populate template\n for (let x = 0; x < matches.length; x++) {\n // Is it an alias?\n if (matches[x] == null) {\n matches[x] = this._unitAliases[matches[x]];\n }\n item.parts.push(matches[x]);\n chunk.text = chunk.text.replace(matches[x], $type.PLACEHOLDER);\n }\n }\n }\n // Apply to template\n item.template += chunk.text;\n }\n // Apply style formatting\n //item.template = TextFormatter.format(item.template, this.outputFormat);\n // Save cache\n // TODO\n //this.setCache(item.source, item);\n // Mark this as parsed\n item.parsed = true;\n });\n // Save cache (the whole thing)\n // TODO\n //this.setCache(format, info);\n return info;\n }\n /**\r\n * Applies parsed format to a numeric value.\r\n *\r\n * @param value Value\r\n * @param details Parsed format as returned by {parseFormat}\r\n * @return Formatted duration\r\n */\n applyFormat(value, details) {\n // Use absolute values\n let negative = !details.absolute && value < this.get(\"negativeBase\");\n value = Math.abs(value);\n // Recalculate to milliseconds\n let tstamp = this.toTimeStamp(value, details.baseUnit);\n // Init return value\n let res = details.template;\n // Iterate through duration parts\n for (let i = 0, len = details.parts.length; i < len; i++) {\n // Gather the part\n let part = details.parts[i];\n let unit = this._toTimeUnit(part.substr(0, 1));\n let digits = part.length;\n // Calculate current unit value\n let ints = Math.floor(tstamp / this._getUnitValue(unit));\n res = res.replace($type.PLACEHOLDER, $utils.padString(ints, digits, \"0\"));\n // Reduce timestamp\n tstamp -= ints * this._getUnitValue(unit);\n }\n // Reapply negative sign\n if (negative) {\n res = \"-\" + res;\n }\n return res;\n }\n /**\r\n * Converts numeric value to timestamp in milliseconds.\r\n *\r\n * @param value A source value\r\n * @param baseUnit Base unit the source value is in: \"q\", \"s\", \"i\", \"h\", \"d\", \"w\", \"m\", \"y\"\r\n * @return Value representation as a timestamp in milliseconds\r\n */\n toTimeStamp(value, baseUnit) {\n return value * this._getUnitValue(baseUnit);\n }\n _toTimeUnit(code) {\n switch (code) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"w\":\n return \"week\";\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n }\n ;\n }\n /**\r\n * Returns appropriate default format for the value.\r\n *\r\n * If `maxValue` is sepcified, it will use that value to determine the time\r\n * unit for the format.\r\n *\r\n * For example if your `baseUnit` is `\"second\"` and you pass in `10`, you\r\n * will get `\"10\"`.\r\n *\r\n * However, you might want it to be formatted in the context of bigger scale,\r\n * say 10 minutes (600 seconds). If you pass in `600` as `maxValue`, all\r\n * values, including small ones will use format with minutes, e.g.:\r\n * `00:10`, `00:50`, `12: 30`, etc.\r\n *\r\n * @param value Value to format\r\n * @param maxValue Maximum value to be used to determine format\r\n * @param baseUnit Base unit of the value\r\n * @return Format\r\n */\n getFormat(value, maxValue, baseUnit) {\n // Is format override set?\n if (this.get(\"durationFormat\") != null) {\n return this.get(\"durationFormat\");\n }\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.get(\"baseUnit\");\n }\n if (maxValue != null && value != maxValue) {\n value = Math.abs(value);\n maxValue = Math.abs(maxValue);\n let maxUnit = this.getValueUnit(Math.max(value, maxValue), baseUnit);\n return this.get(\"durationFormats\")[baseUnit][maxUnit];\n } else {\n let unit = this.getValueUnit(value, baseUnit);\n return this.get(\"durationFormats\")[baseUnit][unit];\n }\n }\n /**\r\n * Returns value's closest denominator time unit, e.g 100 seconds is\r\n * `\"minute\"`, while 59 seconds would still be `second`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Denominator\r\n */\n getValueUnit(value, baseUnit) {\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.get(\"baseUnit\");\n }\n // Convert to milliseconds\n let currentUnit;\n let ms = this.getMilliseconds(value, baseUnit);\n $object.eachContinue(this._getUnitValues(), (key, val) => {\n if (key == baseUnit || currentUnit) {\n let num = ms / val;\n if (num <= 1) {\n if (!currentUnit) {\n currentUnit = key;\n }\n return false;\n }\n currentUnit = key;\n }\n return true;\n });\n return currentUnit;\n }\n /**\r\n * Converts value to milliseconds according to `baseUnit`.\r\n *\r\n * @param value Source duration value\r\n * @param baseUnit Base unit\r\n * @return Value in milliseconds\r\n */\n getMilliseconds(value, baseUnit) {\n // Get base unit\n if (!baseUnit) {\n baseUnit = this.get(\"baseUnit\");\n }\n return value * this._getUnitValue(baseUnit);\n }\n _getUnitValue(timeUnit) {\n return this._getUnitValues()[timeUnit];\n }\n _getUnitValues() {\n return {\n \"millisecond\": 1,\n \"second\": 1000,\n \"minute\": 60000,\n \"hour\": 3600000,\n \"day\": 86400000,\n \"week\": 604800000,\n \"month\": 2592000000,\n \"year\": 31536000000\n };\n }\n}\n//# sourceMappingURL=DurationFormatter.js.map","/**\r\n * amCharts 5 locale\r\n *\r\n * Locale: en\r\n * Language: International English\r\n * Author: Martynas Majeris\r\n *\r\n * Follow instructions in [on this page](https://www.amcharts.com/docs/v5/tutorials/creating-translations/) to make corrections or add new translations.\r\n *\r\n * ---\r\n * Edit but leave the header section above this line. You can remove any\r\n * subsequent comment sections.\r\n * ---\r\n *\r\n * Use this file as a template to create translations. Leave the key part in\r\n * English intact. Fill the value with a translation.\r\n *\r\n * Empty string means no translation, so default \"International English\"\r\n * will be used.\r\n *\r\n * If you need the translation to literally be an empty string, use `null`\r\n * instead.\r\n *\r\n * IMPORTANT:\r\n * When translating make good effort to keep the translation length\r\n * at least the same chartcount as the English, especially for short prompts.\r\n *\r\n * Having significantly longer prompts may distort the actual charts.\r\n *\r\n * NOTE:\r\n * Some prompts - like months or weekdays - come in two versions: full and\r\n * shortened.\r\n *\r\n * If there's no official shortened version of these in your language, and it\r\n * would not be possible to invent such short versions that don't seem weird\r\n * to native speakers of that language, fill those with the same as full\r\n * version.\r\n *\r\n * PLACEHOLDERS:\r\n * Some prompts have placeholders like \"%1\". Those will be replaced by actual\r\n * values during translation and should be retained in the translated prompts.\r\n *\r\n * Placeholder positions may be changed to better suit structure of the\r\n * sentence.\r\n *\r\n * For example \"From %1 to %2\", when actually used will replace \"%1\" with an\r\n * actual value representing range start, and \"%2\" will be replaced by end\r\n * value.\r\n *\r\n * E.g. in a Scrollbar for Value axis \"From %1 to %2\" will become\r\n * \"From 100 to 200\". You may translate \"From\" and \"to\", as well as re-arrange\r\n * the order of the prompt itself, but make sure the \"%1\" and \"%2\" remain, in\r\n * places where they will make sense.\r\n *\r\n * Save the file as language_LOCALE, i.e. `en_GB.ts`, `fr_FR.ts`, etc.\r\n */\nexport default {\n \"firstDayOfWeek\": 1,\n // Number formatting options.\n // \n // Please check with the local standards which separator is accepted to be\n // used for separating decimals, and which for thousands.\n \"_decimalSeparator\": \".\",\n \"_thousandSeparator\": \",\",\n // Position of the percent sign in numbers\n \"_percentPrefix\": null,\n \"_percentSuffix\": \"%\",\n // Suffixes for numbers\n // When formatting numbers, big or small numers might be reformatted to\n // shorter version, by applying a suffix.\n // \n // For example, 1000000 might become \"1m\".\n // Or 1024 might become \"1KB\" if we're formatting byte numbers.\n // \n // This section defines such suffixes for all such cases.\n \"_big_number_suffix_3\": \"k\",\n \"_big_number_suffix_6\": \"M\",\n \"_big_number_suffix_9\": \"G\",\n \"_big_number_suffix_12\": \"T\",\n \"_big_number_suffix_15\": \"P\",\n \"_big_number_suffix_18\": \"E\",\n \"_big_number_suffix_21\": \"Z\",\n \"_big_number_suffix_24\": \"Y\",\n \"_small_number_suffix_3\": \"m\",\n \"_small_number_suffix_6\": \"μ\",\n \"_small_number_suffix_9\": \"n\",\n \"_small_number_suffix_12\": \"p\",\n \"_small_number_suffix_15\": \"f\",\n \"_small_number_suffix_18\": \"a\",\n \"_small_number_suffix_21\": \"z\",\n \"_small_number_suffix_24\": \"y\",\n \"_byte_suffix_B\": \"B\",\n \"_byte_suffix_KB\": \"KB\",\n \"_byte_suffix_MB\": \"MB\",\n \"_byte_suffix_GB\": \"GB\",\n \"_byte_suffix_TB\": \"TB\",\n \"_byte_suffix_PB\": \"PB\",\n // Default date formats for various periods.\n // \n // This should reflect official or de facto formatting universally accepted\n // in the country translation is being made for\n // Available format codes here:\n // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#Format_codes\n // \n // This will be used when formatting date/time for particular granularity,\n // e.g. \"_date_hour\" will be shown whenever we need to show time as hours.\n // \n // \"date\" is used as in default date format when showing standalone dates.\n \"_date\": \"yyyy-MM-dd\",\n \"_date_millisecond\": \"mm:ss SSS\",\n \"_date_millisecond_full\": \"HH:mm:ss SSS\",\n \"_date_second\": \"HH:mm:ss\",\n \"_date_second_full\": \"HH:mm:ss\",\n \"_date_minute\": \"HH:mm\",\n \"_date_minute_full\": \"HH:mm - MMM dd, yyyy\",\n \"_date_hour\": \"HH:mm\",\n \"_date_hour_full\": \"HH:mm - MMM dd, yyyy\",\n \"_date_day\": \"MMM dd\",\n \"_date_day_full\": \"MMM dd, yyyy\",\n \"_date_week\": \"ww\",\n \"_date_week_full\": \"MMM dd, yyyy\",\n \"_date_month\": \"MMM\",\n \"_date_month_full\": \"MMM, yyyy\",\n \"_date_year\": \"yyyy\",\n // Default duration formats for various base units.\n // \n // This will be used by DurationFormatter to format numeric values into\n // duration.\n // \n // Notice how each duration unit comes in several versions. This is to ensure\n // that each base unit is shown correctly.\n // \n // For example, if we have baseUnit set to \"second\", meaning our duration is\n // in seconds.\n // \n // If we pass in `50` to formatter, it will know that we have just 50 seconds\n // (less than a minute) so it will use format in `\"_duration_second\"` (\"ss\"),\n // and the formatted result will be in like `\"50\"`.\n // \n // If we pass in `70`, which is more than a minute, the formatter will switch\n // to `\"_duration_second_minute\"` (\"mm:ss\"), resulting in \"01:10\" formatted\n // text.\n // \n // Available codes here:\n // https://www.amcharts.com/docs/v4/concepts/formatters/formatting-duration/#Available_Codes\n \"_duration_millisecond\": \"SSS\",\n \"_duration_millisecond_second\": \"ss.SSS\",\n \"_duration_millisecond_minute\": \"mm:ss SSS\",\n \"_duration_millisecond_hour\": \"hh:mm:ss SSS\",\n \"_duration_millisecond_day\": \"d'd' mm:ss SSS\",\n \"_duration_millisecond_week\": \"d'd' mm:ss SSS\",\n \"_duration_millisecond_month\": \"M'm' dd'd' mm:ss SSS\",\n \"_duration_millisecond_year\": \"y'y' MM'm' dd'd' mm:ss SSS\",\n \"_duration_second\": \"ss\",\n \"_duration_second_minute\": \"mm:ss\",\n \"_duration_second_hour\": \"hh:mm:ss\",\n \"_duration_second_day\": \"d'd' hh:mm:ss\",\n \"_duration_second_week\": \"d'd' hh:mm:ss\",\n \"_duration_second_month\": \"M'm' dd'd' hh:mm:ss\",\n \"_duration_second_year\": \"y'y' MM'm' dd'd' hh:mm:ss\",\n \"_duration_minute\": \"mm\",\n \"_duration_minute_hour\": \"hh:mm\",\n \"_duration_minute_day\": \"d'd' hh:mm\",\n \"_duration_minute_week\": \"d'd' hh:mm\",\n \"_duration_minute_month\": \"M'm' dd'd' hh:mm\",\n \"_duration_minute_year\": \"y'y' MM'm' dd'd' hh:mm\",\n \"_duration_hour\": \"hh'h'\",\n \"_duration_hour_day\": \"d'd' hh'h'\",\n \"_duration_hour_week\": \"d'd' hh'h'\",\n \"_duration_hour_month\": \"M'm' dd'd' hh'h'\",\n \"_duration_hour_year\": \"y'y' MM'm' dd'd' hh'h'\",\n \"_duration_day\": \"d'd'\",\n \"_duration_day_week\": \"d'd'\",\n \"_duration_day_month\": \"M'm' dd'd'\",\n \"_duration_day_year\": \"y'y' MM'm' dd'd'\",\n \"_duration_week\": \"w'w'\",\n \"_duration_week_month\": \"w'w'\",\n \"_duration_week_year\": \"w'w'\",\n \"_duration_month\": \"M'm'\",\n \"_duration_month_year\": \"y'y' MM'm'\",\n \"_duration_year\": \"y'y'\",\n // Era translations\n \"_era_ad\": \"AD\",\n \"_era_bc\": \"BC\",\n // Day part, used in 12-hour formats, e.g. 5 P.M.\n // Please note that these come in 3 variants:\n // * one letter (e.g. \"A\")\n // * two letters (e.g. \"AM\")\n // * two letters with dots (e.g. \"A.M.\")\n // \n // All three need to to be translated even if they are all the same. Some\n // users might use one, some the other.\n \"A\": \"\",\n \"P\": \"\",\n \"AM\": \"\",\n \"PM\": \"\",\n \"A.M.\": \"\",\n \"P.M.\": \"\",\n // Date-related stuff.\n // \n // When translating months, if there's a difference, use the form which is\n // best for a full date, e.g. as you would use it in \"2018 January 1\".\n // \n // Note that May is listed twice. This is because in English May is the same\n // in both long and short forms, while in other languages it may not be the\n // case. Translate \"May\" to full word, while \"May(short)\" to shortened\n // version.\n // \n // Should month names and weekdays be capitalized or not?\n // \n // Rule of thumb is this: if the names should always be capitalized,\n // regardless of name position within date (\"January\", \"21st January 2018\",\n // etc.) use capitalized names. Otherwise enter all lowercase.\n // \n // The date formatter will automatically capitalize names if they are the\n // first (or only) word in resulting date.\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 \"Jan\": \"\",\n \"Feb\": \"\",\n \"Mar\": \"\",\n \"Apr\": \"\",\n \"May(short)\": \"May\",\n \"Jun\": \"\",\n \"Jul\": \"\",\n \"Aug\": \"\",\n \"Sep\": \"\",\n \"Oct\": \"\",\n \"Nov\": \"\",\n \"Dec\": \"\",\n // Weekdays.\n \"Sunday\": \"\",\n \"Monday\": \"\",\n \"Tuesday\": \"\",\n \"Wednesday\": \"\",\n \"Thursday\": \"\",\n \"Friday\": \"\",\n \"Saturday\": \"\",\n \"Sun\": \"\",\n \"Mon\": \"\",\n \"Tue\": \"\",\n \"Wed\": \"\",\n \"Thu\": \"\",\n \"Fri\": \"\",\n \"Sat\": \"\",\n // Date ordinal function.\n // \n // This is used when adding number ordinal when formatting days in dates.\n // \n // E.g. \"January 1st\", \"February 2nd\".\n // \n // The function accepts day number, and returns a string to be added to the\n // day, like in default English translation, if we pass in 2, we will receive\n // \"nd\" back.\n \"_dateOrd\": function (day) {\n let res = \"th\";\n if (day < 11 || day > 13) {\n switch (day % 10) {\n case 1:\n res = \"st\";\n break;\n case 2:\n res = \"nd\";\n break;\n case 3:\n res = \"rd\";\n break;\n }\n }\n return res;\n },\n // Various chart controls.\n // Shown as a tooltip on zoom out button.\n \"Zoom Out\": \"\",\n // Timeline buttons\n \"Play\": \"\",\n \"Stop\": \"\",\n // Chart's Legend screen reader title.\n \"Legend\": \"\",\n // Legend's item screen reader indicator.\n \"Press ENTER to toggle\": \"\",\n // Shown when the chart is busy loading something.\n \"Loading\": \"\",\n // Shown as the first button in the breadcrumb navigation, e.g.:\n // Home > First level > ...\n \"Home\": \"\",\n // Chart types.\n // Those are used as default screen reader titles for the main chart element\n // unless developer has set some more descriptive title.\n \"Chart\": \"\",\n \"Serial chart\": \"\",\n \"X/Y chart\": \"\",\n \"Pie chart\": \"\",\n \"Gauge chart\": \"\",\n \"Radar chart\": \"\",\n \"Sankey diagram\": \"\",\n \"Flow diagram\": \"\",\n \"Chord diagram\": \"\",\n \"TreeMap chart\": \"\",\n \"Force directed tree\": \"\",\n \"Sliced chart\": \"\",\n // Series types.\n // Used to name series by type for screen readers if they do not have their\n // name set.\n \"Series\": \"\",\n \"Candlestick Series\": \"\",\n \"OHLC Series\": \"\",\n \"Column Series\": \"\",\n \"Line Series\": \"\",\n \"Pie Slice Series\": \"\",\n \"Funnel Series\": \"\",\n \"Pyramid Series\": \"\",\n \"X/Y Series\": \"\",\n // Map-related stuff.\n \"Map\": \"\",\n \"Press ENTER to zoom in\": \"\",\n \"Press ENTER to zoom out\": \"\",\n \"Use arrow keys to zoom in and out\": \"\",\n \"Use plus and minus keys on your keyboard to zoom in and out\": \"\",\n // Export-related stuff.\n // These prompts are used in Export menu labels.\n // \n // \"Export\" is the top-level menu item.\n // \n // \"Image\", \"Data\", \"Print\" as second-level indicating type of export\n // operation.\n // \n // Leave actual format untranslated, unless you absolutely know that they\n // would convey more meaning in some other way.\n \"Export\": \"\",\n \"Image\": \"\",\n \"Data\": \"\",\n \"Print\": \"\",\n \"Press ENTER or use arrow keys to navigate\": \"\",\n \"Press ENTER to open\": \"\",\n \"Press ENTER to print.\": \"\",\n \"Press ENTER to export as %1.\": \"\",\n \"(Press ESC to close this message)\": \"\",\n \"Image Export Complete\": \"\",\n \"Export operation took longer than expected. Something might have gone wrong.\": \"\",\n \"Saved from\": \"\",\n \"PNG\": \"\",\n \"JPG\": \"\",\n \"GIF\": \"\",\n \"SVG\": \"\",\n \"PDF\": \"\",\n \"JSON\": \"\",\n \"CSV\": \"\",\n \"XLSX\": \"\",\n \"HTML\": \"\",\n // Scrollbar-related stuff.\n // \n // Scrollbar is a control which can zoom and pan the axes on the chart.\n // \n // Each scrollbar has two grips: left or right (for horizontal scrollbar) or\n // upper and lower (for vertical one).\n // \n // Prompts change in relation to whether Scrollbar is vertical or horizontal.\n // \n // The final section is used to indicate the current range of selection.\n \"Use TAB to select grip buttons or left and right arrows to change selection\": \"\",\n \"Use left and right arrows to move selection\": \"\",\n \"Use left and right arrows to move left selection\": \"\",\n \"Use left and right arrows to move right selection\": \"\",\n \"Use TAB select grip buttons or up and down arrows to change selection\": \"\",\n \"Use up and down arrows to move selection\": \"\",\n \"Use up and down arrows to move lower selection\": \"\",\n \"Use up and down arrows to move upper selection\": \"\",\n \"From %1 to %2\": \"\",\n \"From %1\": \"\",\n \"To %1\": \"\",\n // Data loader-related.\n \"No parser available for file: %1\": \"\",\n \"Error parsing file: %1\": \"\",\n \"Unable to load file: %1\": \"\",\n \"Invalid date\": \"\",\n // Common actions\n \"Close\": \"\",\n \"Minimize\": \"\"\n};\n//# sourceMappingURL=en.js.map","import { Entity } from \"./Entity\";\nimport * as $array from \"./Array\";\nimport * as $object from \"./Object\";\nimport en from \"../../../locales/en\";\n;\n/**\r\n * Add localization functionality.\r\n */\nexport class Language extends Entity {\n _setDefaults() {\n this.setPrivate(\"defaultLocale\", en);\n super._setDefaults();\n }\n /**\r\n * Returns a prompt translation.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\n translate(prompt, locale) {\n // Get langauge\n if (!locale) {\n locale = this._root.locale || this.getPrivate(\"defaultLocale\");\n }\n // Init translation\n let translation = prompt;\n let value = locale[prompt];\n // Try to look for the translation\n for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n rest[_key - 2] = arguments[_key];\n }\n if (value === null) {\n translation = \"\";\n } else if (value != null) {\n // It might be an empty string\n if (value) {\n translation = value;\n }\n } else if (locale !== this.getPrivate(\"defaultLocale\")) {\n // Try to look in default language\n return this.translate(prompt, this.getPrivate(\"defaultLocale\"), ...rest);\n }\n // Replace %1, %2, etc params\n if (rest.length) {\n for (let len = rest.length, i = 0; i < len; ++i) {\n translation = translation.split(\"%\" + (i + 1)).join(rest[i]);\n }\n }\n // Return the translation\n return translation;\n }\n /**\r\n * Returns a prompt translation, including custom prompts.\r\n *\r\n * @param prompt Prompt to translate\r\n * @param locale Target locale\r\n * @param ...rest Parameters\r\n * @return Translation\r\n */\n translateAny(prompt, locale) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n rest[_key2 - 2] = arguments[_key2];\n }\n return this.translate(prompt, locale, ...rest);\n }\n /**\r\n * Add a custom prompt to locale.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param prompt Source prompt\r\n * @param translation Tanslation\r\n * @param locale Target locale\r\n */\n setTranslationAny(prompt, translation, locale) {\n const localeTarget = locale || this._root.locale;\n localeTarget[prompt] = translation;\n }\n /**\r\n * Add a batch of custom prompts.\r\n *\r\n * @since 5.3.3\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/creating-translations/#Extending_locale_with_custom_prompts}\r\n * @param translations Translations\r\n * @param locale Target locale\r\n */\n setTranslationsAny(translations, locale) {\n $object.each(translations, (key, val) => {\n this.setTranslationAny(key, val, locale);\n });\n }\n translateEmpty(prompt, locale) {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n let translation = this.translate(prompt, locale, ...rest);\n return translation == prompt ? \"\" : translation;\n }\n translateFunc(prompt, locale) {\n if (this._root.locale[prompt]) {\n return this._root.locale[prompt];\n }\n // Try to look in default language\n if (locale !== this.getPrivate(\"defaultLocale\")) {\n return this.translateFunc(prompt, this.getPrivate(\"defaultLocale\"));\n }\n // Fail - return empty function\n return () => {\n return \"\";\n };\n }\n /**\r\n * Translates a btach of prompts.\r\n *\r\n * @param list Array of prompts to translate\r\n * @param locale Target locale\r\n * @return Array of translations\r\n */\n translateAll(list, locale) {\n // Translate all items in the list\n if (!this.isDefault()) {\n return $array.map(list, x => this.translate(x, locale));\n } else {\n return list;\n }\n }\n /**\r\n * Returns `true` if the currently selected locale is a default locale.\r\n *\r\n * @return `true` if locale is default; `false` if it is not.\r\n */\n isDefault() {\n return this.getPrivate(\"defaultLocale\") === this._root.locale;\n }\n}\n//# sourceMappingURL=Language.js.map","import { Template } from \"./util/Template\";\nimport * as $order from \"./util/Order\";\nimport * as $array from \"./util/Array\";\n/**\r\n * A base class for an amCharts theme.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @important\r\n */\nexport class Theme {\n constructor(root, isReal) {\n Object.defineProperty(this, \"_root\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_rules\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n this._root = root;\n if (!isReal) {\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n }\n }\n /**\r\n * Use this method to create an instance of this class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#New_element_syntax} for more info\r\n * @param root Root element\r\n * @param settings Settings\r\n * @param template Template\r\n * @return Instantiated object\r\n */\n static new(root) {\n const x = new this(root, true);\n x.setupDefaultRules();\n return x;\n }\n setupDefaultRules() {}\n /**\r\n * Looks up the rules for a specific theme class.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @return Array<IRule<A>>\r\n */\n _lookupRules(themeClass) {\n return this._rules[themeClass];\n }\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * NOTE: the difference from `rule()` is that `ruleRaw()` does not do any\r\n * type checks.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\n ruleRaw(themeClass) {\n let themeTags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let rules = this._rules[themeClass];\n if (!rules) {\n rules = this._rules[themeClass] = [];\n }\n themeTags.sort($order.compare);\n const {\n index,\n found\n } = $array.getSortedIndex(rules, x => {\n const order = $order.compare(x.tags.length, themeTags.length);\n if (order === 0) {\n return $order.compareArray(x.tags, themeTags, $order.compare);\n } else {\n return order;\n }\n });\n if (found) {\n return rules[index].template;\n } else {\n const template = Template.new({});\n rules.splice(index, 0, {\n tags: themeTags,\n template\n });\n return template;\n }\n }\n /**\r\n * Creates a [[Template]] for specific theme class and tags.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/themes/} for more info\r\n * @param themeClass Theme class\r\n * @param themeTags Theme tags\r\n * @return Template\r\n */\n rule(themeClass) {\n let themeTags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return this.ruleRaw(themeClass, themeTags);\n }\n}\n//# sourceMappingURL=Theme.js.map","import { Theme } from \"../core/Theme\";\nimport { p100, p50 } from \"../core/util/Percent\";\nimport { Color } from \"../core/util/Color\";\nimport { GridLayout } from \"../core/render/GridLayout\";\nimport * as $ease from \"../core/util/Ease\";\n/**\r\n * @ignore\r\n */\nexport function setColor(rule, key, ic, name) {\n // TODO this shouldn't use get, figure out a better way\n rule.set(key, ic.get(name));\n ic.on(name, value => {\n rule.set(key, value);\n });\n}\n/**\r\n * @ignore\r\n */\nexport class DefaultTheme extends Theme {\n setupDefaultRules() {\n super.setupDefaultRules();\n const language = this._root.language;\n const ic = this._root.interfaceColors;\n const horizontalLayout = this._root.horizontalLayout;\n const verticalLayout = this._root.verticalLayout;\n const r = this.rule.bind(this);\n /**\r\n * ========================================================================\r\n * core\r\n * ========================================================================\r\n */\n r(\"InterfaceColors\").setAll({\n stroke: Color.fromHex(0xe5e5e5),\n fill: Color.fromHex(0xf3f3f3),\n primaryButton: Color.fromHex(0x6794dc),\n primaryButtonHover: Color.fromHex(0x6771dc),\n primaryButtonDown: Color.fromHex(0x68dc76),\n primaryButtonActive: Color.fromHex(0x68dc76),\n primaryButtonText: Color.fromHex(0xffffff),\n primaryButtonStroke: Color.fromHex(0xffffff),\n secondaryButton: Color.fromHex(0xd9d9d9),\n secondaryButtonHover: Color.fromHex(0xa3a3a3),\n secondaryButtonDown: Color.fromHex(0x8d8d8d),\n secondaryButtonActive: Color.fromHex(0xe6e6e6),\n secondaryButtonText: Color.fromHex(0x000000),\n secondaryButtonStroke: Color.fromHex(0xffffff),\n grid: Color.fromHex(0x000000),\n background: Color.fromHex(0xffffff),\n alternativeBackground: Color.fromHex(0x000000),\n text: Color.fromHex(0x000000),\n alternativeText: Color.fromHex(0xffffff),\n disabled: Color.fromHex(0xadadad),\n positive: Color.fromHex(0x50b300),\n negative: Color.fromHex(0xb30000)\n });\n {\n const rule = r(\"ColorSet\");\n rule.setAll({\n passOptions: {\n hue: 0.05,\n saturation: 0,\n lightness: 0\n },\n colors: [Color.fromHex(0x67b7dc)],\n step: 1,\n //baseColor: Color.fromRGB(103, 183, 220),\n //count: 20,\n reuse: false,\n startIndex: 0\n });\n rule.setPrivate(\"currentStep\", 0);\n rule.setPrivate(\"currentPass\", 0);\n }\n r(\"Entity\").setAll({\n stateAnimationDuration: 0,\n stateAnimationEasing: $ease.out($ease.cubic)\n });\n r(\"Component\").setAll({\n interpolationDuration: 0,\n interpolationEasing: $ease.out($ease.cubic)\n });\n r(\"Sprite\").setAll({\n visible: true,\n scale: 1,\n opacity: 1,\n rotation: 0,\n position: \"relative\",\n tooltipX: p50,\n tooltipY: p50,\n tooltipPosition: \"fixed\",\n isMeasured: true\n });\n r(\"Sprite\").states.create(\"default\", {\n \"visible\": true,\n opacity: 1\n });\n r(\"Container\").setAll({\n interactiveChildren: true,\n setStateOnChildren: false\n });\n r(\"Graphics\").setAll({\n strokeWidth: 1\n });\n r(\"Chart\").setAll({\n width: p100,\n height: p100,\n interactiveChildren: false\n });\n r(\"ZoomableContainer\").setAll({\n width: p100,\n height: p100,\n wheelable: true,\n pinchZoom: true,\n maxZoomLevel: 32,\n minZoomLevel: 1,\n zoomStep: 2,\n animationEasing: $ease.out($ease.cubic),\n animationDuration: 600\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: alignment\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Sprite\", [\"horizontal\", \"center\"]).setAll({\n centerX: p50,\n x: p50\n });\n r(\"Sprite\", [\"vertical\", \"center\"]).setAll({\n centerY: p50,\n y: p50\n });\n r(\"Container\", [\"horizontal\", \"layout\"]).setAll({\n layout: horizontalLayout\n });\n r(\"Container\", [\"vertical\", \"layout\"]).setAll({\n layout: verticalLayout\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: patterns\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Pattern\").setAll({\n repetition: \"repeat\",\n width: 50,\n height: 50,\n rotation: 0,\n fillOpacity: 1\n });\n r(\"LinePattern\").setAll({\n gap: 6,\n colorOpacity: 1,\n width: 49,\n height: 49\n });\n r(\"RectanglePattern\").setAll({\n gap: 6,\n checkered: false,\n centered: true,\n maxWidth: 5,\n maxHeight: 5,\n width: 48,\n height: 48,\n strokeWidth: 0\n });\n r(\"CirclePattern\").setAll({\n gap: 5,\n checkered: false,\n centered: false,\n radius: 3,\n strokeWidth: 0,\n width: 45,\n height: 45\n });\n r(\"GrainPattern\").setAll({\n width: 200,\n height: 200,\n colors: [Color.fromHex(0x000000)],\n size: 1,\n horizontalGap: 0,\n verticalGap: 0,\n density: 1,\n minOpacity: 0,\n maxOpacity: 0.2\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: gradients\r\n * ------------------------------------------------------------------------\r\n */\n r(\"LinearGradient\").setAll({\n rotation: 90\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Legend\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Legend\").setAll({\n fillField: \"fill\",\n strokeField: \"stroke\",\n nameField: \"name\",\n layout: GridLayout.new(this._root, {}),\n layer: 30,\n clickTarget: \"itemContainer\"\n });\n // Class: Container\n r(\"Container\", [\"legend\", \"item\", \"itemcontainer\"]).setAll({\n paddingLeft: 5,\n paddingRight: 5,\n paddingBottom: 5,\n paddingTop: 5,\n layout: horizontalLayout,\n setStateOnChildren: true,\n interactiveChildren: false,\n ariaChecked: true,\n focusable: true,\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\n role: \"checkbox\"\n });\n {\n const rule = r(\"Rectangle\", [\"legend\", \"item\", \"background\"]);\n rule.setAll({\n fillOpacity: 0\n });\n setColor(rule, \"fill\", ic, \"background\");\n }\n r(\"Container\", [\"legend\", \"marker\"]).setAll({\n setStateOnChildren: true,\n centerY: p50,\n paddingLeft: 0,\n paddingRight: 0,\n paddingBottom: 0,\n paddingTop: 0,\n width: 18,\n height: 18\n });\n r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).setAll({\n width: p100,\n height: p100,\n cornerRadiusBL: 3,\n cornerRadiusTL: 3,\n cornerRadiusBR: 3,\n cornerRadiusTR: 3\n });\n {\n const rule = r(\"RoundedRectangle\", [\"legend\", \"marker\", \"rectangle\"]).states.create(\"disabled\", {});\n setColor(rule, \"fill\", ic, \"disabled\");\n setColor(rule, \"stroke\", ic, \"disabled\");\n }\n r(\"Label\", [\"legend\", \"label\"]).setAll({\n centerY: p50,\n marginLeft: 5,\n paddingRight: 0,\n paddingLeft: 0,\n paddingTop: 0,\n paddingBottom: 0,\n populateText: true\n });\n {\n const rule = r(\"Label\", [\"legend\", \"label\"]).states.create(\"disabled\", {});\n setColor(rule, \"fill\", ic, \"disabled\");\n }\n r(\"Label\", [\"legend\", \"value\", \"label\"]).setAll({\n centerY: p50,\n marginLeft: 5,\n paddingRight: 0,\n paddingLeft: 0,\n paddingTop: 0,\n paddingBottom: 0,\n width: 50,\n centerX: p100,\n populateText: true\n });\n {\n const rule = r(\"Label\", [\"legend\", \"value\", \"label\"]).states.create(\"disabled\", {});\n setColor(rule, \"fill\", ic, \"disabled\");\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * core: HeatLegend\r\n * ------------------------------------------------------------------------\r\n */\n r(\"HeatLegend\").setAll({\n stepCount: 1\n });\n r(\"RoundedRectangle\", [\"heatlegend\", \"marker\"]).setAll({\n cornerRadiusTR: 0,\n cornerRadiusBR: 0,\n cornerRadiusTL: 0,\n cornerRadiusBL: 0\n });\n r(\"RoundedRectangle\", [\"vertical\", \"heatlegend\", \"marker\"]).setAll({\n height: p100,\n width: 15\n });\n r(\"RoundedRectangle\", [\"horizontal\", \"heatlegend\", \"marker\"]).setAll({\n width: p100,\n height: 15\n });\n r(\"HeatLegend\", [\"vertical\"]).setAll({\n height: p100\n });\n r(\"HeatLegend\", [\"horizontal\"]).setAll({\n width: p100\n });\n r(\"Label\", [\"heatlegend\", \"start\"]).setAll({\n paddingLeft: 5,\n paddingRight: 5,\n paddingTop: 5,\n paddingBottom: 5\n });\n r(\"Label\", [\"heatlegend\", \"end\"]).setAll({\n paddingLeft: 5,\n paddingRight: 5,\n paddingTop: 5,\n paddingBottom: 5\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Labels\r\n * ------------------------------------------------------------------------\r\n */\n {\n const rule = r(\"Label\");\n rule.setAll({\n paddingTop: 8,\n paddingBottom: 8,\n paddingLeft: 10,\n paddingRight: 10,\n fontFamily: \"-apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\"\",\n fontSize: \"1em\",\n populateText: false\n });\n setColor(rule, \"fill\", ic, \"text\");\n }\n r(\"RadialLabel\").setAll({\n textType: \"regular\",\n centerY: p50,\n centerX: p50,\n inside: false,\n radius: 0,\n baseRadius: p100,\n orientation: \"auto\",\n textAlign: \"center\"\n });\n r(\"EditableLabel\").setAll({\n editOn: \"click\",\n //setStateOnChildren: true,\n themeTags: [\"editablelabel\"],\n multiLine: true\n });\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).setAll({\n fillOpacity: 0,\n fill: Color.fromHex(0x000000),\n cornerRadiusBL: 3,\n cornerRadiusBR: 3,\n cornerRadiusTL: 3,\n cornerRadiusTR: 3,\n strokeOpacity: 0,\n stroke: Color.fromHex(0x000000)\n });\n {\n r(\"RoundedRectangle\", [\"editablelabel\", \"background\"]).states.create(\"active\", {\n strokeOpacity: 0.2\n });\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Elements and shapes\r\n * ------------------------------------------------------------------------\r\n */\n r(\"RoundedRectangle\").setAll({\n cornerRadiusTL: 8,\n cornerRadiusBL: 8,\n cornerRadiusTR: 8,\n cornerRadiusBR: 8\n });\n r(\"PointedRectangle\").setAll({\n pointerBaseWidth: 15,\n pointerLength: 10,\n cornerRadius: 8\n });\n r(\"Slice\").setAll({\n shiftRadius: 0,\n dRadius: 0,\n dInnerRadius: 0\n });\n {\n const rule = r(\"Tick\");\n rule.setAll({\n strokeOpacity: .15,\n isMeasured: false,\n length: 4.5,\n position: \"absolute\",\n crisp: true\n });\n setColor(rule, \"stroke\", ic, \"grid\");\n }\n r(\"Bullet\").setAll({\n locationX: 0.5,\n locationY: 0.5\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Tooltip\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Tooltip\").setAll({\n position: \"absolute\",\n getFillFromSprite: true,\n getStrokeFromSprite: false,\n autoTextColor: true,\n paddingTop: 9,\n paddingBottom: 8,\n paddingLeft: 10,\n paddingRight: 10,\n marginBottom: 5,\n pointerOrientation: \"vertical\",\n centerX: p50,\n centerY: p50,\n animationEasing: $ease.out($ease.cubic),\n exportable: false\n //layer: 100\n });\n r(\"Polygon\").setAll({\n animationEasing: $ease.out($ease.cubic)\n });\n {\n const rule = r(\"PointedRectangle\", [\"tooltip\", \"background\"]);\n rule.setAll({\n strokeOpacity: 0.9,\n cornerRadius: 4,\n pointerLength: 4,\n pointerBaseWidth: 8,\n fillOpacity: 0.9,\n stroke: Color.fromHex(0xffffff)\n });\n }\n {\n const rule = r(\"Label\", [\"tooltip\"]);\n rule.setAll({\n role: \"tooltip\",\n populateText: true,\n paddingRight: 0,\n paddingTop: 0,\n paddingLeft: 0,\n paddingBottom: 0\n });\n setColor(rule, \"fill\", ic, \"alternativeText\");\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Button\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Button\").setAll({\n paddingTop: 8,\n paddingBottom: 8,\n paddingLeft: 10,\n paddingRight: 10,\n interactive: true,\n layout: horizontalLayout,\n interactiveChildren: false,\n setStateOnChildren: true,\n focusable: true\n });\n r(\"Button\").states.create(\"hover\", {});\n r(\"Button\").states.create(\"down\", {\n stateAnimationDuration: 0\n });\n r(\"Button\").states.create(\"active\", {});\n {\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]);\n setColor(rule, \"fill\", ic, \"primaryButton\");\n setColor(rule, \"stroke\", ic, \"primaryButtonStroke\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"hover\", {});\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"down\", {\n stateAnimationDuration: 0\n });\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"button\", \"background\"]).states.create(\"active\", {});\n setColor(rule, \"fill\", ic, \"primaryButtonActive\");\n }\n {\n const rule = r(\"Graphics\", [\"button\", \"icon\"]);\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\n }\n {\n const rule = r(\"Label\", [\"button\"]);\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: ZoomOutButton\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Button\", [\"zoom\"]).setAll({\n paddingTop: 18,\n paddingBottom: 18,\n paddingLeft: 12,\n paddingRight: 12,\n centerX: 46,\n centerY: -10,\n y: 0,\n x: p100,\n role: \"button\",\n ariaLabel: language.translate(\"Zoom Out\"),\n layer: 30\n });\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]);\n rule.setAll({\n cornerRadiusBL: 40,\n cornerRadiusBR: 40,\n cornerRadiusTL: 40,\n cornerRadiusTR: 40\n });\n setColor(rule, \"fill\", ic, \"primaryButton\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"hover\", {});\n setColor(rule, \"fill\", ic, \"primaryButtonHover\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"button\", \"zoom\"]).states.create(\"down\", {\n stateAnimationDuration: 0\n });\n setColor(rule, \"fill\", ic, \"primaryButtonDown\");\n }\n {\n const rule = r(\"Graphics\", [\"icon\", \"button\", \"zoom\"]);\n rule.setAll({\n crisp: true,\n strokeOpacity: 0.7,\n draw: display => {\n display.moveTo(0, 0);\n display.lineTo(12, 0);\n }\n });\n setColor(rule, \"stroke\", ic, \"primaryButtonText\");\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * core: ResizeButton\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Button\", [\"resize\"]).setAll({\n paddingTop: 9,\n paddingBottom: 9,\n paddingLeft: 13,\n paddingRight: 13,\n draggable: true,\n centerX: p50,\n centerY: p50,\n position: \"absolute\",\n role: \"slider\",\n ariaValueMin: \"0\",\n ariaValueMax: \"100\",\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\n });\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]);\n rule.setAll({\n cornerRadiusBL: 40,\n cornerRadiusBR: 40,\n cornerRadiusTL: 40,\n cornerRadiusTR: 40\n });\n setColor(rule, \"fill\", ic, \"secondaryButton\");\n setColor(rule, \"stroke\", ic, \"secondaryButtonStroke\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"hover\", {});\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"background\", \"resize\", \"button\"]).states.create(\"down\", {\n stateAnimationDuration: 0\n });\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\n }\n {\n const rule = r(\"Graphics\", [\"resize\", \"button\", \"icon\"]);\n rule.setAll({\n interactive: false,\n crisp: true,\n strokeOpacity: 0.5,\n draw: display => {\n display.moveTo(0, 0.5);\n display.lineTo(0, 12.5);\n display.moveTo(4, 0.5);\n display.lineTo(4, 12.5);\n }\n });\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\n }\n r(\"Button\", [\"resize\", \"vertical\"]).setAll({\n rotation: 90,\n cursorOverStyle: \"ns-resize\"\n });\n r(\"Button\", [\"resize\", \"horizontal\"]).setAll({\n cursorOverStyle: \"ew-resize\"\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: PlayButton\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Button\", [\"play\"]).setAll({\n paddingTop: 13,\n paddingBottom: 13,\n paddingLeft: 14,\n paddingRight: 14,\n ariaLabel: language.translate(\"Play\"),\n toggleKey: \"active\"\n });\n {\n const rule = r(\"RoundedRectangle\", [\"play\", \"background\"]);\n rule.setAll({\n strokeOpacity: 0.5,\n cornerRadiusBL: 100,\n cornerRadiusBR: 100,\n cornerRadiusTL: 100,\n cornerRadiusTR: 100\n });\n setColor(rule, \"fill\", ic, \"primaryButton\");\n }\n {\n const rule = r(\"Graphics\", [\"play\", \"icon\"]);\n rule.setAll({\n stateAnimationDuration: 0,\n dx: 1,\n draw: display => {\n display.moveTo(0, -5);\n display.lineTo(8, 0);\n display.lineTo(0, 5);\n display.lineTo(0, -5);\n }\n });\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\n }\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"default\", {\n stateAnimationDuration: 0\n });\n r(\"Graphics\", [\"play\", \"icon\"]).states.create(\"active\", {\n stateAnimationDuration: 0,\n draw: display => {\n display.moveTo(-4, -5);\n display.lineTo(-1, -5);\n display.lineTo(-1, 5);\n display.lineTo(-4, 5);\n display.lineTo(-4, -5);\n display.moveTo(4, -5);\n display.lineTo(1, -5);\n display.lineTo(1, 5);\n display.lineTo(4, 5);\n display.lineTo(4, -5);\n }\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: SwitchButton\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Button\", [\"switch\"]).setAll({\n paddingTop: 4,\n paddingBottom: 4,\n paddingLeft: 4,\n paddingRight: 4,\n ariaLabel: language.translate(\"Press ENTER to toggle\"),\n toggleKey: \"active\",\n width: 40,\n height: 24,\n layout: null\n });\n {\n const rule = r(\"RoundedRectangle\", [\"switch\", \"background\"]);\n rule.setAll({\n strokeOpacity: 0.5,\n cornerRadiusBL: 100,\n cornerRadiusBR: 100,\n cornerRadiusTL: 100,\n cornerRadiusTR: 100\n });\n setColor(rule, \"fill\", ic, \"primaryButton\");\n }\n {\n const rule = r(\"Circle\", [\"switch\", \"icon\"]);\n rule.setAll({\n radius: 8,\n centerY: 0,\n centerX: 0,\n dx: 0\n });\n setColor(rule, \"fill\", ic, \"primaryButtonText\");\n }\n r(\"Graphics\", [\"switch\", \"icon\"]).states.create(\"active\", {\n dx: 16\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * core: Scrollbar\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Scrollbar\").setAll({\n start: 0,\n end: 1,\n layer: 30,\n animationEasing: $ease.out($ease.cubic)\n });\n r(\"Scrollbar\", [\"vertical\"]).setAll({\n marginRight: 13,\n marginLeft: 13,\n minWidth: 12,\n height: p100\n });\n r(\"Scrollbar\", [\"horizontal\"]).setAll({\n marginTop: 13,\n marginBottom: 13,\n minHeight: 12,\n width: p100\n });\n this.rule(\"Button\", [\"scrollbar\"]).setAll({\n exportable: false\n });\n {\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"main\", \"background\"]);\n rule.setAll({\n cornerRadiusTL: 8,\n cornerRadiusBL: 8,\n cornerRadiusTR: 8,\n cornerRadiusBR: 8,\n fillOpacity: 0.8\n });\n setColor(rule, \"fill\", ic, \"fill\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]);\n rule.setAll({\n role: \"slider\",\n ariaLive: \"polite\",\n position: \"absolute\",\n draggable: true\n });\n setColor(rule, \"fill\", ic, \"secondaryButton\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"hover\", {});\n setColor(rule, \"fill\", ic, \"secondaryButtonHover\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\"]).states.create(\"down\", {\n stateAnimationDuration: 0\n });\n setColor(rule, \"fill\", ic, \"secondaryButtonDown\");\n }\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"vertical\"]).setAll({\n x: p50,\n width: p100,\n centerX: p50,\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\n });\n r(\"RoundedRectangle\", [\"scrollbar\", \"thumb\", \"horizontal\"]).setAll({\n y: p50,\n centerY: p50,\n height: p100,\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\n });\n // @todo: is this needed? used to be \"ContentScrollbar\"\n // r(\"Scrollbar\", [\"content?\"]).setAll({\n // \tmarginRight: 0,\n // \tmarginLeft: 5,\n // \tlayer: 5\n // });\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n *\r\n * This needs to be in DefaultTheme because it's the only theme that is\r\n * automatically applied to Root, and tooltips different ancestors\r\n * than actual charts using them.\r\n */\n {\n const rule = r(\"PointedRectangle\", [\"axis\", \"tooltip\", \"background\"]);\n rule.setAll({\n cornerRadius: 0\n });\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\n }\n r(\"Label\", [\"axis\", \"tooltip\"]).setAll({\n role: undefined\n });\n r(\"Label\", [\"axis\", \"tooltip\", \"y\"]).setAll({\n textAlign: \"right\"\n });\n r(\"Label\", [\"axis\", \"tooltip\", \"y\", \"opposite\"]).setAll({\n textAlign: \"left\"\n });\n r(\"Label\", [\"axis\", \"tooltip\", \"x\"]).setAll({\n textAlign: \"center\"\n });\n r(\"Tooltip\", [\"categoryaxis\"]).setAll({\n labelText: \"{category}\"\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * Shapes\r\n * ------------------------------------------------------------------------\r\n */\n // Class: Graphics\n r(\"Star\").setAll({\n spikes: 5,\n innerRadius: 5,\n radius: 10\n });\n // STOCK\n r(\"Tooltip\", [\"stock\"]).setAll({\n paddingTop: 6,\n paddingBottom: 5,\n paddingLeft: 7,\n paddingRight: 7\n });\n r(\"PointedRectangle\", [\"tooltip\", \"stock\", \"axis\"]).setAll({\n pointerLength: 0,\n pointerBaseWidth: 0,\n cornerRadius: 3\n });\n r(\"Label\", [\"tooltip\", \"stock\"]).setAll({\n fontSize: \"0.8em\"\n });\n // resizer\n r(\"SpriteResizer\").setAll({\n rotationStep: 10,\n isMeasured: false\n });\n {\n const rule = r(\"Container\", [\"resizer\", \"grip\"]);\n rule.states.create(\"hover\", {});\n }\n {\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\"]);\n rule.setAll({\n strokeOpacity: 0.7,\n strokeWidth: 1,\n fillOpacity: 1,\n width: 12,\n height: 12\n });\n setColor(rule, \"fill\", ic, \"background\");\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\n }\n {\n const rule = r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"outline\"]);\n rule.setAll({\n strokeOpacity: 0,\n fillOpacity: 0,\n width: 20,\n height: 20\n });\n rule.states.create(\"hover\", {\n fillOpacity: 0.3\n });\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\n }\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"left\"]).setAll({\n cornerRadiusBL: 0,\n cornerRadiusBR: 0,\n cornerRadiusTL: 0,\n cornerRadiusTR: 0\n });\n r(\"RoundedRectangle\", [\"resizer\", \"grip\", \"right\"]).setAll({\n cornerRadiusBL: 0,\n cornerRadiusBR: 0,\n cornerRadiusTL: 0,\n cornerRadiusTR: 0\n });\n {\n const rule = r(\"Rectangle\", [\"resizer\", \"rectangle\"]);\n rule.setAll({\n strokeDasharray: [2, 2],\n strokeOpacity: 0.5,\n strokeWidth: 1\n });\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\n }\n r(\"Graphics\", [\"button\", \"plus\", \"icon\"]).setAll({\n x: p50,\n y: p50,\n draw: display => {\n display.moveTo(-4, 0);\n display.lineTo(4, 0);\n display.moveTo(0, -4);\n display.lineTo(0, 4);\n }\n });\n r(\"Graphics\", [\"button\", \"minus\", \"icon\"]).setAll({\n x: p50,\n y: p50,\n draw: display => {\n display.moveTo(-4, 0);\n display.lineTo(4, 0);\n }\n });\n r(\"Graphics\", [\"button\", \"home\", \"icon\"]).setAll({\n x: p50,\n y: p50,\n svgPath: \"M 8 -1 L 6 -1 L 6 7 L 2 7 L 2 1 L -2 1 L -2 7 L -6 7 L -6 -1 L -8 -1 L 0 -9 L 8 -1 Z M 8 -1\"\n });\n r(\"Button\", [\"zoomtools\"]).setAll({\n marginTop: 1,\n marginBottom: 2\n });\n r(\"ZoomTools\").setAll({\n x: p100,\n centerX: p100,\n y: p100,\n centerY: p100,\n paddingRight: 10,\n paddingBottom: 10\n });\n }\n}\n//# sourceMappingURL=DefaultTheme.js.map","/**\r\n * Modified from Pixi:\r\n *\r\n * The MIT License\r\n *\r\n * Copyright (c) 2013-2017 Mathew Groves, Chad Engler\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n */\n/**\r\n * @ignore\r\n */\nexport class Matrix {\n constructor() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let c = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let d = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n let tx = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n let ty = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n Object.defineProperty(this, \"a\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"b\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"c\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"d\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.tx = tx;\n this.ty = ty;\n }\n /**\r\n * Sets the matrix based on all the available properties\r\n */\n setTransform(x, y, pivotX, pivotY, rotation) {\n let scale = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n this.a = Math.cos(rotation) * scale;\n this.b = Math.sin(rotation) * scale;\n this.c = -Math.sin(rotation) * scale;\n this.d = Math.cos(rotation) * scale;\n this.tx = x - (pivotX * this.a + pivotY * this.c);\n this.ty = y - (pivotX * this.b + pivotY * this.d);\n }\n /**\r\n * Get a new position with the current transformation applied.\r\n * Can be used to go from a child's coordinate space to the world coordinate space. (e.g. rendering)\r\n */\n apply(origin) {\n return {\n x: this.a * origin.x + this.c * origin.y + this.tx,\n y: this.b * origin.x + this.d * origin.y + this.ty\n };\n }\n /**\r\n * Get a new position with the inverse of the current transformation applied.\r\n * Can be used to go from the world coordinate space to a child's coordinate space. (e.g. input)\r\n */\n applyInverse(origin) {\n const id = 1 / (this.a * this.d + this.c * -this.b);\n return {\n x: this.d * id * origin.x + -this.c * id * origin.y + (this.ty * this.c - this.tx * this.d) * id,\n y: this.a * id * origin.y + -this.b * id * origin.x + (-this.ty * this.a + this.tx * this.b) * id\n };\n }\n /**\r\n * Appends the given Matrix to this Matrix.\r\n */\n append(matrix) {\n const a1 = this.a;\n const b1 = this.b;\n const c1 = this.c;\n const d1 = this.d;\n this.a = matrix.a * a1 + matrix.b * c1;\n this.b = matrix.a * b1 + matrix.b * d1;\n this.c = matrix.c * a1 + matrix.d * c1;\n this.d = matrix.c * b1 + matrix.d * d1;\n this.tx = matrix.tx * a1 + matrix.ty * c1 + this.tx;\n this.ty = matrix.tx * b1 + matrix.ty * d1 + this.ty;\n }\n /**\r\n * Prepends the given Matrix to this Matrix.\r\n */\n prepend(matrix) {\n const tx1 = this.tx;\n if (matrix.a !== 1 || matrix.b !== 0 || matrix.c !== 0 || matrix.d !== 1) {\n const a1 = this.a;\n const c1 = this.c;\n this.a = a1 * matrix.a + this.b * matrix.c;\n this.b = a1 * matrix.b + this.b * matrix.d;\n this.c = c1 * matrix.a + this.d * matrix.c;\n this.d = c1 * matrix.b + this.d * matrix.d;\n }\n this.tx = tx1 * matrix.a + this.ty * matrix.c + matrix.tx;\n this.ty = tx1 * matrix.b + this.ty * matrix.d + matrix.ty;\n }\n /**\r\n * Copies the other matrix's properties into this matrix\r\n */\n copyFrom(matrix) {\n this.a = matrix.a;\n this.b = matrix.b;\n this.c = matrix.c;\n this.d = matrix.d;\n this.tx = matrix.tx;\n this.ty = matrix.ty;\n }\n}\n//# sourceMappingURL=Matrix.js.map","var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\nvar TAU = Math.PI * 2;\nvar mapToEllipse = function mapToEllipse(_ref, rx, ry, cosphi, sinphi, centerx, centery) {\n var x = _ref.x,\n y = _ref.y;\n x *= rx;\n y *= ry;\n var xp = cosphi * x - sinphi * y;\n var yp = sinphi * x + cosphi * y;\n return {\n x: xp + centerx,\n y: yp + centery\n };\n};\nvar approxUnitArc = function approxUnitArc(ang1, ang2) {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n var a = ang2 === 1.5707963267948966 ? 0.551915024494 : ang2 === -1.5707963267948966 ? -0.551915024494 : 4 / 3 * Math.tan(ang2 / 4);\n var x1 = Math.cos(ang1);\n var y1 = Math.sin(ang1);\n var x2 = Math.cos(ang1 + ang2);\n var y2 = Math.sin(ang1 + ang2);\n return [{\n x: x1 - y1 * a,\n y: y1 + x1 * a\n }, {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n }, {\n x: x2,\n y: y2\n }];\n};\nvar vectorAngle = function vectorAngle(ux, uy, vx, vy) {\n var sign = ux * vy - uy * vx < 0 ? -1 : 1;\n var dot = ux * vx + uy * vy;\n if (dot > 1) {\n dot = 1;\n }\n if (dot < -1) {\n dot = -1;\n }\n return sign * Math.acos(dot);\n};\nvar getArcCenter = function getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp) {\n var rxsq = Math.pow(rx, 2);\n var rysq = Math.pow(ry, 2);\n var pxpsq = Math.pow(pxp, 2);\n var pypsq = Math.pow(pyp, 2);\n var radicant = rxsq * rysq - rxsq * pypsq - rysq * pxpsq;\n if (radicant < 0) {\n radicant = 0;\n }\n radicant /= rxsq * pypsq + rysq * pxpsq;\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1);\n var centerxp = radicant * rx / ry * pyp;\n var centeryp = radicant * -ry / rx * pxp;\n var centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2;\n var centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2;\n var vx1 = (pxp - centerxp) / rx;\n var vy1 = (pyp - centeryp) / ry;\n var vx2 = (-pxp - centerxp) / rx;\n var vy2 = (-pyp - centeryp) / ry;\n var ang1 = vectorAngle(1, 0, vx1, vy1);\n var ang2 = vectorAngle(vx1, vy1, vx2, vy2);\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU;\n }\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU;\n }\n return [centerx, centery, ang1, ang2];\n};\nvar arcToBezier = function arcToBezier(_ref2) {\n var px = _ref2.px,\n py = _ref2.py,\n cx = _ref2.cx,\n cy = _ref2.cy,\n rx = _ref2.rx,\n ry = _ref2.ry,\n _ref2$xAxisRotation = _ref2.xAxisRotation,\n xAxisRotation = _ref2$xAxisRotation === undefined ? 0 : _ref2$xAxisRotation,\n _ref2$largeArcFlag = _ref2.largeArcFlag,\n largeArcFlag = _ref2$largeArcFlag === undefined ? 0 : _ref2$largeArcFlag,\n _ref2$sweepFlag = _ref2.sweepFlag,\n sweepFlag = _ref2$sweepFlag === undefined ? 0 : _ref2$sweepFlag;\n var curves = [];\n if (rx === 0 || ry === 0) {\n return [];\n }\n var sinphi = Math.sin(xAxisRotation * TAU / 360);\n var cosphi = Math.cos(xAxisRotation * TAU / 360);\n var pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2;\n var pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2;\n if (pxp === 0 && pyp === 0) {\n return [];\n }\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n var lambda = Math.pow(pxp, 2) / Math.pow(rx, 2) + Math.pow(pyp, 2) / Math.pow(ry, 2);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var _getArcCenter = getArcCenter(px, py, cx, cy, rx, ry, largeArcFlag, sweepFlag, sinphi, cosphi, pxp, pyp),\n _getArcCenter2 = _slicedToArray(_getArcCenter, 4),\n centerx = _getArcCenter2[0],\n centery = _getArcCenter2[1],\n ang1 = _getArcCenter2[2],\n ang2 = _getArcCenter2[3];\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\n var ratio = Math.abs(ang2) / (TAU / 4);\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0;\n }\n var segments = Math.max(Math.ceil(ratio), 1);\n ang2 /= segments;\n for (var i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2));\n ang1 += ang2;\n }\n return curves.map(function (curve) {\n var _mapToEllipse = mapToEllipse(curve[0], rx, ry, cosphi, sinphi, centerx, centery),\n x1 = _mapToEllipse.x,\n y1 = _mapToEllipse.y;\n var _mapToEllipse2 = mapToEllipse(curve[1], rx, ry, cosphi, sinphi, centerx, centery),\n x2 = _mapToEllipse2.x,\n y2 = _mapToEllipse2.y;\n var _mapToEllipse3 = mapToEllipse(curve[2], rx, ry, cosphi, sinphi, centerx, centery),\n x = _mapToEllipse3.x,\n y = _mapToEllipse3.y;\n return {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y\n };\n });\n};\nexport default arcToBezier;","/** @ignore */ /** */\nimport { BlendMode } from \"./Renderer\";\nimport { Color } from \"../../util/Color\";\nimport { Matrix } from \"../../util/Matrix\";\nimport { Percent, percent } from \"../../util/Percent\";\n//import { Throttler } from \"../../util/Throttler\";\nimport { ArrayDisposer, Disposer, DisposerClass, CounterDisposer, MultiDisposer } from \"../../util/Disposer\";\nimport { TextFormatter } from \"../../util/TextFormatter\";\nimport * as $utils from \"../../util/Utils\";\nimport * as $array from \"../../util/Array\";\nimport * as $object from \"../../util/Object\";\nimport * as $type from \"../../util/Type\";\nimport * as $math from \"../../util/Math\";\nimport arcToBezier from 'svg-arc-to-cubic-bezier';\n/**\r\n * @ignore\r\n */\nfunction checkArgs(name, actual, expected) {\n if (actual !== expected) {\n throw new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\n }\n}\n/**\r\n * @ignore\r\n */\nfunction checkMinArgs(name, actual, expected) {\n if (actual < expected) {\n throw new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\n }\n}\n/**\r\n * @ignore\r\n */\nfunction checkEvenArgs(name, actual, expected) {\n checkMinArgs(name, actual, expected);\n if (actual % expected !== 0) {\n throw new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\n }\n}\n/**\r\n * @ignore\r\n * This splits the flag so that way 0017 will be processed as 0 0 17\r\n *\r\n * This is important for weird paths like `M17 5A1 1 0 0017 30 1 1 0 0017 5`\r\n */\nfunction splitArcFlags(args) {\n for (let i = 0; i < args.length; i += 7) {\n let index = i + 3;\n let flag = args[index];\n if (flag.length > 1) {\n const a = /^([01])([01])(.*)$/.exec(flag);\n if (a !== null) {\n args.splice(index, 0, a[1]);\n ++index;\n args.splice(index, 0, a[2]);\n ++index;\n if (a[3].length > 0) {\n args[index] = a[3];\n } else {\n args.splice(index, 1);\n }\n }\n }\n ++index;\n flag = args[index];\n if (flag.length > 1) {\n const a = /^([01])(.+)$/.exec(flag);\n if (a !== null) {\n args.splice(index, 0, a[1]);\n ++index;\n args[index] = a[2];\n }\n }\n }\n}\n/**\r\n * @ignore\r\n */\nfunction assertBinary(value) {\n if (value === 0 || value === 1) {\n return value;\n } else {\n throw new Error(\"Flag must be 0 or 1\");\n }\n}\n// 1 -> 0xffffff * (2 / 2)\n// 2 -> 0xffffff * (1 / 2)\n//\n// 3 -> 0xffffff * (3 / 4)\n// 4 -> 0xffffff * (1 / 4)\n//\n// 5 -> 0xffffff * (7 / 8)\n// 6 -> 0xffffff * (5 / 8)\n// 7 -> 0xffffff * (3 / 8)\n// 8 -> 0xffffff * (1 / 8)\n//\n// 9 -> 0xffffff * (15 / 16)\n// 10 -> 0xffffff * (13 / 16)\n// 11 -> 0xffffff * (11 / 16)\n// 12 -> 0xffffff * (9 / 16)\n// 13 -> 0xffffff * (7 / 16)\n// 14 -> 0xffffff * (5 / 16)\n// 15 -> 0xffffff * (3 / 16)\n// 16 -> 0xffffff * (1 / 16)\n// @todo remove this old color distribution algo if the new one pans out\n/*function distributeId(id: number): number {\r\n if (id === 1) {\r\n return 0x000001;\r\n\r\n } else {\r\n // Finds the closest power of 2\r\n const base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\r\n\r\n // Translates the id into an odd fraction index\r\n const index = ((base - id) * 2) + 1;\r\n\r\n // TODO is Math.round correct ?\r\n return Math.round(0xffffff * (index / base));\r\n }\r\n}*/\n/**\r\n * Function by smeans:\r\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\r\n * @ignore\r\n */\nfunction distributeId(id) {\n const rgb = [0, 0, 0];\n for (let i = 0; i < 24; i++) {\n rgb[i % 3] <<= 1;\n rgb[i % 3] |= id & 0x01;\n id >>= 1;\n }\n return (rgb[0] | 0) + (rgb[1] << 8) + (rgb[2] << 16);\n}\n/**\r\n * @ignore\r\n */\nfunction eachTargets(hitTarget, f) {\n for (;;) {\n if (hitTarget.interactive) {\n if (!f(hitTarget)) {\n break;\n }\n }\n if (hitTarget._parent) {\n hitTarget = hitTarget._parent;\n } else {\n break;\n }\n }\n}\n// TODO feature detection for mouse/touch/pointer\n/**\r\n * @ignore\r\n */\nfunction onPointerEvent(element, name, f) {\n return $utils.addEventListener(element, $utils.getRendererEvent(name), event => {\n const target = $utils.getEventTarget(event);\n let touches = event.touches;\n if (touches) {\n if (touches.length == 0) {\n touches = event.changedTouches;\n }\n f($array.copy(touches), target);\n } else {\n f([event], target);\n }\n });\n}\n/**\r\n * @ignore\r\n */\nfunction isTainted(image) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const context = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n context.drawImage(image, 0, 0, 1, 1);\n try {\n context.getImageData(0, 0, 1, 1);\n return false;\n } catch (err) {\n console.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\n return true;\n }\n}\n/**\r\n * This is needed to workaround a bug in iOS which causes it to not GC canvas elements.\r\n *\r\n * @ignore\r\n */\nfunction clearCanvas(view) {\n view.width = 0;\n view.height = 0;\n view.style.width = \"0px\";\n view.style.height = \"0px\";\n}\n/**\r\n * Aligns the coordinate to the pixel, so it renders crisp\r\n *\r\n * @ignore\r\n */\nfunction crisp(x) {\n return Math.floor(x) + .5;\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasPivot {\n constructor() {\n Object.defineProperty(this, \"_x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n }\n get x() {\n return this._x;\n }\n get y() {\n return this._y;\n }\n set x(value) {\n this._x = value;\n }\n set y(value) {\n this._y = value;\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasDisplayObject extends DisposerClass {\n constructor(renderer) {\n super();\n Object.defineProperty(this, \"_layer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"mask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"visible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"exportable\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"interactive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"inactive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"wheelable\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"cancelTouch\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"isMeasured\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"buttonMode\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"alpha\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"compoundAlpha\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"angle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"scale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"crisp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"pivot\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new CanvasPivot()\n });\n Object.defineProperty(this, \"filter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"cursorOverStyle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_replacedCursorStyle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_localMatrix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Matrix()\n });\n Object.defineProperty(this, \"_matrix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Matrix()\n });\n // TODO can this be replaced with _localMatrix ?\n Object.defineProperty(this, \"_uMatrix\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Matrix()\n });\n Object.defineProperty(this, \"_renderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_parent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_localBounds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_bounds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_colorId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._renderer = renderer;\n }\n subStatus(status) {\n return {\n inactive: this.inactive == null ? status.inactive : this.inactive,\n layer: this._layer || status.layer\n };\n }\n _dispose() {\n this._renderer._removeObject(this);\n this.getLayer().dirty = true;\n }\n getCanvas() {\n return this.getLayer().view;\n }\n getLayer() {\n let self = this;\n for (;;) {\n if (self._layer) {\n return self._layer;\n } else if (self._parent) {\n self = self._parent;\n } else {\n return this._renderer.defaultLayer;\n }\n }\n }\n setLayer(order, margin) {\n if (order == null) {\n this._layer = undefined;\n } else {\n const visible = true;\n this._layer = this._renderer.getLayer(order, visible);\n this._layer.visible = visible;\n this._layer.margin = margin;\n if (margin) {\n $utils.setInteractive(this._layer.view, false);\n }\n this._renderer._ghostLayer.setMargin(this._renderer.layers);\n if (this._parent) {\n this._parent.registerChildLayer(this._layer);\n }\n this._layer.dirty = true;\n this._renderer.resizeLayer(this._layer);\n this._renderer.resizeGhost();\n }\n }\n markDirtyLayer() {\n this.getLayer().dirty = true;\n }\n clear() {\n this.invalidateBounds();\n }\n invalidateBounds() {\n this._localBounds = undefined;\n }\n _addBounds(_bounds) {}\n _getColorId() {\n if (this._colorId === undefined) {\n this._colorId = this._renderer.paintId(this);\n }\n return this._colorId;\n }\n _isInteractive(status) {\n return !status.inactive && (this.interactive || this._renderer._forceInteractive > 0);\n }\n _isInteractiveMask(status) {\n return this._isInteractive(status);\n }\n contains(child) {\n for (;;) {\n if (child === this) {\n return true;\n } else if (child._parent) {\n child = child._parent;\n } else {\n return false;\n }\n }\n }\n toGlobal(point) {\n return this._matrix.apply(point);\n }\n toLocal(point) {\n return this._matrix.applyInverse(point);\n }\n getLocalMatrix() {\n this._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\n return this._uMatrix;\n }\n getLocalBounds() {\n if (!this._localBounds) {\n const bn = 10000000;\n this._localBounds = {\n left: bn,\n top: bn,\n right: -bn,\n bottom: -bn\n };\n this._addBounds(this._localBounds);\n }\n return this._localBounds;\n }\n getAdjustedBounds(bounds) {\n this._setMatrix();\n const matrix = this.getLocalMatrix();\n const p0 = matrix.apply({\n x: bounds.left,\n y: bounds.top\n });\n const p1 = matrix.apply({\n x: bounds.right,\n y: bounds.top\n });\n const p2 = matrix.apply({\n x: bounds.right,\n y: bounds.bottom\n });\n const p3 = matrix.apply({\n x: bounds.left,\n y: bounds.bottom\n });\n return {\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\n };\n }\n on(key, callback, context) {\n if (this.interactive) {\n return this._renderer._addEvent(this, key, callback, context);\n } else {\n return new Disposer(() => {});\n }\n }\n _setMatrix() {\n // TODO only calculate this if it has actually changed\n this._localMatrix.setTransform(this.x, this.y, this.pivot.x, this.pivot.y,\n // Converts degrees to radians\n this.angle * Math.PI / 180, this.scale);\n this._matrix.copyFrom(this._localMatrix);\n if (this._parent) {\n // TODO only calculate this if it has actually changed\n this._matrix.prepend(this._parent._matrix);\n }\n }\n _transform(context, resolution) {\n const m = this._matrix;\n let tx = m.tx * resolution;\n let ty = m.ty * resolution;\n if (this.crisp) {\n tx = crisp(tx);\n ty = crisp(ty);\n }\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, tx, ty);\n }\n _transformMargin(context, resolution, margin) {\n const m = this._matrix;\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, (m.tx + margin.left) * resolution, (m.ty + margin.top) * resolution);\n }\n _transformLayer(context, resolution, layer) {\n if (layer.margin) {\n this._transformMargin(context, layer.scale || resolution, layer.margin);\n } else {\n this._transform(context, layer.scale || resolution);\n }\n }\n render(status) {\n if (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\n this._setMatrix();\n const subStatus = this.subStatus(status);\n const resolution = this._renderer.resolution;\n const layers = this._renderer.layers;\n const ghostLayer = this._renderer._ghostLayer;\n const ghostContext = ghostLayer.context;\n const mask = this.mask;\n if (mask) {\n mask._setMatrix();\n }\n // TODO improve this\n $array.each(layers, layer => {\n if (layer) {\n const context = layer.context;\n context.save();\n // We must apply the mask before we transform the element\n if (mask) {\n mask._transformLayer(context, resolution, layer);\n mask._runPath(context);\n context.clip();\n }\n context.globalAlpha = this.compoundAlpha * this.alpha;\n this._transformLayer(context, resolution, layer);\n if (this.filter) {\n context.filter = this.filter;\n }\n }\n });\n ghostContext.save();\n // We must apply the mask before we transform the element\n if (mask && this._isInteractiveMask(subStatus)) {\n mask._transformMargin(ghostContext, resolution, ghostLayer.margin);\n mask._runPath(ghostContext);\n ghostContext.clip();\n }\n this._transformMargin(ghostContext, resolution, ghostLayer.margin);\n this._render(subStatus);\n ghostContext.restore();\n $array.each(layers, layer => {\n if (layer) {\n layer.context.restore();\n }\n });\n }\n }\n _render(status) {\n if (this.exportable === false) {\n status.layer.tainted = true;\n }\n }\n hovering() {\n return this._renderer._hovering.has(this);\n }\n dragging() {\n return this._renderer._dragging.some(x => x.value === this);\n }\n shouldCancelTouch() {\n const renderer = this._renderer;\n if (renderer.tapToActivate && !renderer._touchActive) {\n return false;\n }\n if (this.cancelTouch) {\n return true;\n } else if (this._parent) {\n return this._parent.shouldCancelTouch();\n }\n return false;\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasContainer extends CanvasDisplayObject {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"interactiveChildren\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_childLayers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_children\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n _isInteractiveMask(status) {\n return this.interactiveChildren || super._isInteractiveMask(status);\n }\n addChild(child) {\n child._parent = this;\n this._children.push(child);\n if (child._layer) {\n this.registerChildLayer(child._layer);\n }\n }\n addChildAt(child, index) {\n child._parent = this;\n this._children.splice(index, 0, child);\n if (child._layer) {\n this.registerChildLayer(child._layer);\n }\n }\n removeChild(child) {\n child._parent = undefined;\n $array.removeFirst(this._children, child);\n }\n _render(status) {\n super._render(status);\n const renderer = this._renderer;\n if (this.interactive && this.interactiveChildren) {\n ++renderer._forceInteractive;\n }\n $array.each(this._children, child => {\n child.compoundAlpha = this.compoundAlpha * this.alpha;\n child.render(status);\n });\n if (this.interactive && this.interactiveChildren) {\n --renderer._forceInteractive;\n }\n }\n registerChildLayer(layer) {\n if (!this._childLayers) {\n this._childLayers = [];\n }\n $array.pushOne(this._childLayers, layer);\n if (this._parent) {\n this._parent.registerChildLayer(layer);\n }\n }\n markDirtyLayer() {\n let deep = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n super.markDirtyLayer();\n if (deep && this._childLayers) {\n $array.each(this._childLayers, layer => layer.dirty = true);\n }\n }\n _dispose() {\n super._dispose();\n if (this._childLayers) {\n $array.each(this._childLayers, layer => {\n layer.dirty = true;\n });\n }\n }\n}\n/**\r\n * @ignore\r\n */\nfunction setPoint(bounds, point) {\n bounds.left = Math.min(bounds.left, point.x);\n bounds.top = Math.min(bounds.top, point.y);\n bounds.right = Math.max(bounds.right, point.x);\n bounds.bottom = Math.max(bounds.bottom, point.y);\n}\n/**\r\n * @ignore\r\n */\nclass Op {\n colorize(_context, _forceColor) {}\n colorizeGhost(context, forceColor) {\n this.colorize(context, forceColor);\n }\n path(_context) {}\n pathGhost(context) {\n this.path(context);\n }\n addBounds(_bounds) {}\n}\n/**\r\n * @ignore\r\n */\nclass BeginPath extends Op {\n colorize(context, _forceColor) {\n context.beginPath();\n }\n}\n/**\r\n * @ignore\r\n */\nclass BeginFill extends Op {\n constructor(color) {\n super();\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: color\n });\n }\n colorize(context, forceColor) {\n if (forceColor !== undefined) {\n context.fillStyle = forceColor;\n } else {\n context.fillStyle = this.color;\n }\n }\n}\n/**\r\n * @ignore\r\n */\nclass EndFill extends Op {\n constructor(clearShadow) {\n super();\n Object.defineProperty(this, \"clearShadow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: clearShadow\n });\n }\n colorize(context, _forceColor) {\n context.fill();\n if (this.clearShadow) {\n context.shadowColor = \"\";\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n }\n}\n/**\r\n * @ignore\r\n */\nclass EndStroke extends Op {\n colorize(context, _forceColor) {\n context.stroke();\n }\n}\n/**\r\n * @ignore\r\n */\nclass LineStyle extends Op {\n constructor(width, color, lineJoin) {\n super();\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: width\n });\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: color\n });\n Object.defineProperty(this, \"lineJoin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: lineJoin\n });\n }\n colorize(context, forceColor) {\n if (forceColor !== undefined) {\n context.strokeStyle = forceColor;\n } else {\n context.strokeStyle = this.color;\n }\n context.lineWidth = this.width;\n if (this.lineJoin) {\n context.lineJoin = this.lineJoin;\n }\n }\n}\n/**\r\n * @ignore\r\n */\nclass LineDash extends Op {\n constructor(dash) {\n super();\n Object.defineProperty(this, \"dash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dash\n });\n }\n colorize(context, _forceColor) {\n context.setLineDash(this.dash);\n }\n}\n/**\r\n * @ignore\r\n */\nclass LineDashOffset extends Op {\n constructor(dashOffset) {\n super();\n Object.defineProperty(this, \"dashOffset\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: dashOffset\n });\n }\n colorize(context, _forceColor) {\n context.lineDashOffset = this.dashOffset;\n }\n}\n/**\r\n * @ignore\r\n */\nclass DrawRect extends Op {\n constructor(x, y, width, height) {\n super();\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: width\n });\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: height\n });\n }\n path(context) {\n context.rect(this.x, this.y, this.width, this.height);\n }\n addBounds(bounds) {\n const l = this.x;\n const t = this.y;\n const r = l + this.width;\n const b = t + this.height;\n setPoint(bounds, {\n x: l,\n y: t\n });\n setPoint(bounds, {\n x: r,\n y: t\n });\n setPoint(bounds, {\n x: l,\n y: b\n });\n setPoint(bounds, {\n x: r,\n y: b\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass DrawCircle extends Op {\n constructor(x, y, radius) {\n super();\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n Object.defineProperty(this, \"radius\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: radius\n });\n }\n path(context) {\n context.moveTo(this.x + this.radius, this.y);\n context.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\n }\n // TODO handle skewing and rotation\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.x - this.radius,\n y: this.y - this.radius\n });\n setPoint(bounds, {\n x: this.x + this.radius,\n y: this.y + this.radius\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass DrawEllipse extends Op {\n constructor(x, y, radiusX, radiusY) {\n super();\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n Object.defineProperty(this, \"radiusX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: radiusX\n });\n Object.defineProperty(this, \"radiusY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: radiusY\n });\n }\n path(context) {\n context.ellipse(0, 0, this.radiusX, this.radiusY, 0, 0, Math.PI * 2);\n }\n // TODO handle skewing and rotation\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.x - this.radiusX,\n y: this.y - this.radiusY\n });\n setPoint(bounds, {\n x: this.x + this.radiusX,\n y: this.y + this.radiusY\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass Arc extends Op {\n constructor(cx, cy, radius, startAngle, endAngle, anticlockwise) {\n super();\n Object.defineProperty(this, \"cx\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cx\n });\n Object.defineProperty(this, \"cy\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cy\n });\n Object.defineProperty(this, \"radius\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: radius\n });\n Object.defineProperty(this, \"startAngle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: startAngle\n });\n Object.defineProperty(this, \"endAngle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: endAngle\n });\n Object.defineProperty(this, \"anticlockwise\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: anticlockwise\n });\n }\n path(context) {\n if (this.radius > 0) {\n context.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\n }\n }\n addBounds(bounds) {\n let arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\n setPoint(bounds, {\n x: arcBounds.left,\n y: arcBounds.top\n });\n setPoint(bounds, {\n x: arcBounds.right,\n y: arcBounds.bottom\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass ArcTo extends Op {\n constructor(x1, y1, x2, y2, radius) {\n super();\n Object.defineProperty(this, \"x1\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x1\n });\n Object.defineProperty(this, \"y1\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y1\n });\n Object.defineProperty(this, \"x2\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x2\n });\n Object.defineProperty(this, \"y2\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y2\n });\n Object.defineProperty(this, \"radius\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: radius\n });\n }\n path(context) {\n if (this.radius > 0) {\n context.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\n }\n }\n // TODO: add points\n addBounds(_bounds) {\n /*\r\n // not finished\r\n https://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\r\n if (prevPoint) {\r\n let x1 = prevPoint.x;\r\n let y1 = prevPoint.y;\r\n let x2 = this.x2;\r\n let y2 = this.y2;\r\n let r = this.radius;\r\n let xa = (x2 - x1) / 2;\r\n let ya = (y2 - y1) / 2;\r\n let x0 = x1 + xa;\r\n let y0 = y1 + ya;\r\n let a = Math.hypot(xa, ya);\r\n let b = Math.sqrt(r * r - a * a);\r\n let cx = x0 + b * ya / a;\r\n let cy = y0 - b * xa / a;\r\n console.log(cx, cy);\r\n }*/\n }\n}\n/**\r\n * @ignore\r\n */\nclass LineTo extends Op {\n constructor(x, y) {\n super();\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n }\n path(context) {\n context.lineTo(this.x, this.y);\n }\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.x,\n y: this.y\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass MoveTo extends Op {\n constructor(x, y) {\n super();\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n }\n path(context) {\n context.moveTo(this.x, this.y);\n }\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.x,\n y: this.y\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass ClosePath extends Op {\n path(context) {\n context.closePath();\n }\n}\n/**\r\n * @ignore\r\n */\nclass BezierCurveTo extends Op {\n constructor(cpX, cpY, cpX2, cpY2, toX, toY) {\n super();\n Object.defineProperty(this, \"cpX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpX\n });\n Object.defineProperty(this, \"cpY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpY\n });\n Object.defineProperty(this, \"cpX2\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpX2\n });\n Object.defineProperty(this, \"cpY2\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpY2\n });\n Object.defineProperty(this, \"toX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: toX\n });\n Object.defineProperty(this, \"toY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: toY\n });\n }\n path(context) {\n context.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\n }\n // TODO: OK?\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.cpX,\n y: this.cpY\n });\n setPoint(bounds, {\n x: this.cpX2,\n y: this.cpY2\n });\n setPoint(bounds, {\n x: this.toX,\n y: this.toY\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass QuadraticCurveTo extends Op {\n constructor(cpX, cpY, toX, toY) {\n super();\n Object.defineProperty(this, \"cpX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpX\n });\n Object.defineProperty(this, \"cpY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: cpY\n });\n Object.defineProperty(this, \"toX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: toX\n });\n Object.defineProperty(this, \"toY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: toY\n });\n }\n path(context) {\n context.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\n }\n // TODO: OK?\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.cpX,\n y: this.cpY\n });\n setPoint(bounds, {\n x: this.toX,\n y: this.toY\n });\n }\n}\n/**\r\n * @ignore\r\n */\nclass Shadow extends Op {\n constructor(color, blur, offsetX, offsetY, opacity) {\n super();\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: color\n });\n Object.defineProperty(this, \"blur\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: blur\n });\n Object.defineProperty(this, \"offsetX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: offsetX\n });\n Object.defineProperty(this, \"offsetY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: offsetY\n });\n Object.defineProperty(this, \"opacity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: opacity\n });\n }\n colorize(context, _forceColor) {\n if (this.opacity) {\n context.fillStyle = this.color;\n }\n context.shadowColor = this.color;\n context.shadowBlur = this.blur;\n context.shadowOffsetX = this.offsetX;\n context.shadowOffsetY = this.offsetY;\n }\n colorizeGhost(_context, _forceColor) {}\n}\n/**\r\n * @ignore\r\n */\nclass GraphicsImage extends Op {\n constructor(image, width, height, x, y) {\n super();\n Object.defineProperty(this, \"image\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: image\n });\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: width\n });\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: height\n });\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: x\n });\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: y\n });\n }\n path(context) {\n context.drawImage(this.image, this.x, this.y, this.width, this.height);\n }\n // TODO: OK?\n addBounds(bounds) {\n setPoint(bounds, {\n x: this.x,\n y: this.y\n });\n setPoint(bounds, {\n x: this.width,\n y: this.height\n });\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasGraphics extends CanvasDisplayObject {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_operations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"blendMode\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: BlendMode.NORMAL\n });\n Object.defineProperty(this, \"_hasShadows\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_fillAlpha\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_strokeAlpha\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n clear() {\n super.clear();\n this._operations.length = 0;\n }\n _pushOp(op) {\n this._operations.push(op);\n }\n beginFill(color) {\n let alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n this._fillAlpha = alpha;\n if (color) {\n if (color instanceof Color) {\n this._pushOp(new BeginFill(color.toCSS(alpha)));\n } else {\n this.isMeasured = true;\n this._pushOp(new BeginFill(color));\n }\n } else {\n this._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\n }\n }\n endFill() {\n this._pushOp(new EndFill(this._hasShadows));\n }\n endStroke() {\n this._pushOp(new EndStroke());\n }\n beginPath() {\n this._pushOp(new BeginPath());\n }\n lineStyle() {\n let width = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let color = arguments.length > 1 ? arguments[1] : undefined;\n let alpha = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n let lineJoin = arguments.length > 3 ? arguments[3] : undefined;\n this._strokeAlpha = alpha;\n if (color) {\n if (color instanceof Color) {\n this._pushOp(new LineStyle(width, color.toCSS(alpha), lineJoin));\n } else {\n this._pushOp(new LineStyle(width, color, lineJoin));\n }\n } else {\n this._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\", lineJoin));\n }\n }\n setLineDash(dash) {\n this._pushOp(new LineDash(dash ? dash : []));\n }\n setLineDashOffset() {\n let dashOffset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this._pushOp(new LineDashOffset(dashOffset));\n }\n drawRect(x, y, width, height) {\n this._pushOp(new DrawRect(x, y, width, height));\n }\n drawCircle(x, y, radius) {\n this._pushOp(new DrawCircle(x, y, radius));\n }\n drawEllipse(x, y, radiusX, radiusY) {\n this._pushOp(new DrawEllipse(x, y, radiusX, radiusY));\n }\n arc(cx, cy, radius, startAngle, endAngle) {\n let anticlockwise = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n this._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._pushOp(new ArcTo(x1, y1, x2, y2, radius));\n }\n lineTo(x, y) {\n this._pushOp(new LineTo(x, y));\n }\n moveTo(x, y) {\n this._pushOp(new MoveTo(x, y));\n }\n bezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\n this._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\n }\n quadraticCurveTo(cpX, cpY, toX, toY) {\n this._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\n }\n closePath() {\n this._pushOp(new ClosePath());\n }\n shadow(color) {\n let blur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let offsetX = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n let offsetY = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let opacity = arguments.length > 4 ? arguments[4] : undefined;\n this._hasShadows = true;\n this._pushOp(new Shadow(opacity ? color.toCSS(opacity) : color.toCSS(this._fillAlpha || this._strokeAlpha), blur, offsetX, offsetY));\n }\n image(image, width, height, x, y) {\n this._pushOp(new GraphicsImage(image, width, height, x, y));\n }\n // https://svgwg.org/svg2-draft/paths.html#DProperty\n // TODO better error checking\n svgPath(path) {\n let x = 0;\n let y = 0;\n let cpx = null;\n let cpy = null;\n let qcpx = null;\n let qcpy = null;\n const SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\n const ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\n let match;\n while ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\n const name = match[1];\n const rest = match[2];\n const args = [];\n while ((match = ARGS_REGEXP.exec(rest)) !== null) {\n args.push(match[1]);\n }\n // Reset control point\n if (name !== \"S\" && name !== \"s\" && name !== \"C\" && name !== \"c\") {\n cpx = null;\n cpy = null;\n }\n // Reset control point\n if (name !== \"Q\" && name !== \"q\" && name !== \"T\" && name !== \"t\") {\n qcpx = null;\n qcpy = null;\n }\n switch (name) {\n case \"M\":\n checkEvenArgs(name, args.length, 2);\n x = +args[0];\n y = +args[1];\n this.moveTo(x, y);\n for (let i = 2; i < args.length; i += 2) {\n x = +args[i];\n y = +args[i + 1];\n this.lineTo(x, y);\n }\n break;\n case \"m\":\n checkEvenArgs(name, args.length, 2);\n x += +args[0];\n y += +args[1];\n this.moveTo(x, y);\n for (let i = 2; i < args.length; i += 2) {\n x += +args[i];\n y += +args[i + 1];\n this.lineTo(x, y);\n }\n break;\n case \"L\":\n checkEvenArgs(name, args.length, 2);\n for (let i = 0; i < args.length; i += 2) {\n x = +args[i];\n y = +args[i + 1];\n this.lineTo(x, y);\n }\n break;\n case \"l\":\n checkEvenArgs(name, args.length, 2);\n for (let i = 0; i < args.length; i += 2) {\n x += +args[i];\n y += +args[i + 1];\n this.lineTo(x, y);\n }\n break;\n case \"H\":\n checkMinArgs(name, args.length, 1);\n for (let i = 0; i < args.length; ++i) {\n x = +args[i];\n this.lineTo(x, y);\n }\n break;\n case \"h\":\n checkMinArgs(name, args.length, 1);\n for (let i = 0; i < args.length; ++i) {\n x += +args[i];\n this.lineTo(x, y);\n }\n break;\n case \"V\":\n checkMinArgs(name, args.length, 1);\n for (let i = 0; i < args.length; ++i) {\n y = +args[i];\n this.lineTo(x, y);\n }\n break;\n case \"v\":\n checkMinArgs(name, args.length, 1);\n for (let i = 0; i < args.length; ++i) {\n y += +args[i];\n this.lineTo(x, y);\n }\n break;\n case \"C\":\n checkEvenArgs(name, args.length, 6);\n for (let i = 0; i < args.length; i += 6) {\n const x1 = +args[i];\n const y1 = +args[i + 1];\n cpx = +args[i + 2];\n cpy = +args[i + 3];\n x = +args[i + 4];\n y = +args[i + 5];\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n }\n break;\n case \"c\":\n checkEvenArgs(name, args.length, 6);\n for (let i = 0; i < args.length; i += 6) {\n const x1 = +args[i] + x;\n const y1 = +args[i + 1] + y;\n cpx = +args[i + 2] + x;\n cpy = +args[i + 3] + y;\n x += +args[i + 4];\n y += +args[i + 5];\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n }\n break;\n case \"S\":\n checkEvenArgs(name, args.length, 4);\n if (cpx === null || cpy === null) {\n cpx = x;\n cpy = y;\n }\n for (let i = 0; i < args.length; i += 4) {\n const x1 = 2 * x - cpx;\n const y1 = 2 * y - cpy;\n cpx = +args[i];\n cpy = +args[i + 1];\n x = +args[i + 2];\n y = +args[i + 3];\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n }\n break;\n case \"s\":\n checkEvenArgs(name, args.length, 4);\n if (cpx === null || cpy === null) {\n cpx = x;\n cpy = y;\n }\n for (let i = 0; i < args.length; i += 4) {\n const x1 = 2 * x - cpx;\n const y1 = 2 * y - cpy;\n cpx = +args[i] + x;\n cpy = +args[i + 1] + y;\n x += +args[i + 2];\n y += +args[i + 3];\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\n }\n break;\n case \"Q\":\n checkEvenArgs(name, args.length, 4);\n for (let i = 0; i < args.length; i += 4) {\n qcpx = +args[i];\n qcpy = +args[i + 1];\n x = +args[i + 2];\n y = +args[i + 3];\n this.quadraticCurveTo(qcpx, qcpy, x, y);\n }\n break;\n case \"q\":\n checkEvenArgs(name, args.length, 4);\n for (let i = 0; i < args.length; i += 4) {\n qcpx = +args[i] + x;\n qcpy = +args[i + 1] + y;\n x += +args[i + 2];\n y += +args[i + 3];\n this.quadraticCurveTo(qcpx, qcpy, x, y);\n }\n break;\n case \"T\":\n checkEvenArgs(name, args.length, 2);\n if (qcpx === null || qcpy === null) {\n qcpx = x;\n qcpy = y;\n }\n for (let i = 0; i < args.length; i += 2) {\n qcpx = 2 * x - qcpx;\n qcpy = 2 * y - qcpy;\n x = +args[i];\n y = +args[i + 1];\n this.quadraticCurveTo(qcpx, qcpy, x, y);\n }\n break;\n case \"t\":\n checkEvenArgs(name, args.length, 2);\n if (qcpx === null || qcpy === null) {\n qcpx = x;\n qcpy = y;\n }\n for (let i = 0; i < args.length; i += 2) {\n qcpx = 2 * x - qcpx;\n qcpy = 2 * y - qcpy;\n x += +args[i];\n y += +args[i + 1];\n this.quadraticCurveTo(qcpx, qcpy, x, y);\n }\n break;\n case \"A\":\n case \"a\":\n const relative = name === \"a\";\n splitArcFlags(args);\n checkEvenArgs(name, args.length, 7);\n for (let i = 0; i < args.length; i += 7) {\n let cx = +args[i + 5];\n let cy = +args[i + 6];\n if (relative) {\n cx += x;\n cy += y;\n }\n const bs = arcToBezier({\n px: x,\n py: y,\n rx: +args[i],\n ry: +args[i + 1],\n xAxisRotation: +args[i + 2],\n largeArcFlag: assertBinary(+args[i + 3]),\n sweepFlag: assertBinary(+args[i + 4]),\n cx,\n cy\n });\n $array.each(bs, b => {\n this.bezierCurveTo(b.x1, b.y1, b.x2, b.y2, b.x, b.y);\n x = b.x;\n y = b.y;\n });\n }\n break;\n case \"Z\":\n case \"z\":\n checkArgs(name, args.length, 0);\n this.closePath();\n break;\n }\n }\n }\n _runPath(context) {\n context.beginPath();\n $array.each(this._operations, op => {\n op.path(context);\n });\n }\n _render(status) {\n super._render(status);\n const layerDirty = status.layer.dirty;\n const interactive = this._isInteractive(status);\n if (layerDirty || interactive) {\n const context = status.layer.context;\n const ghostContext = this._renderer._ghostLayer.context;\n if (layerDirty) {\n context.globalCompositeOperation = this.blendMode;\n context.beginPath();\n }\n let color;\n if (interactive) {\n ghostContext.beginPath();\n color = this._getColorId();\n }\n $array.each(this._operations, op => {\n if (layerDirty) {\n op.path(context);\n op.colorize(context, undefined);\n }\n if (interactive) {\n op.pathGhost(ghostContext);\n op.colorizeGhost(ghostContext, color);\n }\n });\n }\n }\n renderDetached(context) {\n if (this.visible) {\n this._setMatrix();\n context.save();\n // We must apply the mask before we transform the element\n const mask = this.mask;\n if (mask) {\n mask._setMatrix();\n mask._transform(context, 1);\n mask._runPath(context);\n context.clip();\n }\n // TODO handle compoundAlpha somehow ?\n context.globalAlpha = this.compoundAlpha * this.alpha;\n this._transform(context, 1);\n if (this.filter) {\n context.filter = this.filter;\n }\n context.globalCompositeOperation = this.blendMode;\n context.beginPath();\n $array.each(this._operations, op => {\n op.path(context);\n op.colorize(context, undefined);\n });\n context.restore();\n }\n }\n _addBounds(bounds) {\n if (this.visible && this.isMeasured) {\n $array.each(this._operations, op => {\n op.addBounds(bounds);\n });\n }\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasText extends CanvasDisplayObject {\n constructor(renderer, text, style) {\n super(renderer);\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"style\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"resolution\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"textVisible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_textInfo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_originalScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n this.text = text;\n this.style = style;\n }\n invalidateBounds() {\n super.invalidateBounds();\n this._textInfo = undefined;\n }\n _shared(context) {\n if (this.style.textAlign) {\n context.textAlign = this.style.textAlign;\n }\n if (this.style.direction) {\n context.direction = this.style.direction;\n }\n if (this.style.textBaseline) {\n context.textBaseline = this.style.textBaseline;\n }\n }\n _prerender(status) {\n let ignoreGhost = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let ignoreFontWeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n super._render(status);\n const context = status.layer.context;\n const ghostContext = this._renderer._ghostLayer.context;\n // Font style\n const style = this.style;\n let fontStyle = this._getFontStyle(undefined, ignoreFontWeight);\n context.font = fontStyle;\n if (this._isInteractive(status) && !ignoreGhost) {\n ghostContext.font = fontStyle;\n }\n // Other parameters\n if (style.fill) {\n if (style.fill instanceof Color) {\n context.fillStyle = style.fill.toCSS(style.fillOpacity != undefined ? style.fillOpacity : 1);\n } else {\n context.fillStyle = style.fill;\n }\n }\n if (style.shadowColor) {\n status.layer.context.shadowColor = style.shadowColor.toCSS(style.shadowOpacity || 1);\n }\n if (style.shadowBlur) {\n status.layer.context.shadowBlur = style.shadowBlur;\n }\n if (style.shadowOffsetX) {\n status.layer.context.shadowOffsetX = style.shadowOffsetX;\n }\n if (style.shadowOffsetY) {\n status.layer.context.shadowOffsetY = style.shadowOffsetY;\n }\n this._shared(context);\n if (this._isInteractive(status) && !ignoreGhost) {\n ghostContext.fillStyle = this._getColorId();\n this._shared(ghostContext);\n }\n }\n _getFontStyle(style2) {\n let ignoreFontWeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // Process defaults\n const style = this.style;\n let fontStyle = [];\n if (style2 && style2.fontVariant) {\n fontStyle.push(style2.fontVariant);\n } else if (style.fontVariant) {\n fontStyle.push(style.fontVariant);\n }\n if (!ignoreFontWeight) {\n if (style2 && style2.fontWeight) {\n fontStyle.push(style2.fontWeight);\n } else if (style.fontWeight) {\n fontStyle.push(style.fontWeight);\n }\n }\n if (style2 && style2.fontStyle) {\n fontStyle.push(style2.fontStyle);\n } else if (style.fontStyle) {\n fontStyle.push(style.fontStyle);\n }\n if (style2 && style2.fontSize) {\n if ($type.isNumber(style2.fontSize)) {\n style2.fontSize = style2.fontSize + \"px\";\n }\n fontStyle.push(style2.fontSize);\n } else if (style.fontSize) {\n if ($type.isNumber(style.fontSize)) {\n style.fontSize = style.fontSize + \"px\";\n }\n fontStyle.push(style.fontSize);\n }\n if (style2 && style2.fontFamily) {\n fontStyle.push(style2.fontFamily);\n } else if (style.fontFamily) {\n fontStyle.push(style.fontFamily);\n } else if (fontStyle.length) {\n fontStyle.push(\"Arial\");\n }\n return fontStyle.join(\" \");\n }\n _render(status) {\n // We need measurements in order to properly position text for alignment\n if (!this._textInfo) {\n this._measure(status);\n }\n if (this.textVisible) {\n const interactive = this._isInteractive(status);\n const context = status.layer.context;\n const layerDirty = status.layer.dirty;\n const ghostContext = this._renderer._ghostLayer.context;\n context.save();\n ghostContext.save();\n this._prerender(status);\n // const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n // const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\n // Process text info produced by _measure()\n $array.each(this._textInfo, (line, _index) => {\n $array.each(line.textChunks, (chunk, _index) => {\n // Set style\n if (chunk.style) {\n context.save();\n ghostContext.save();\n context.font = chunk.style;\n if (this._isInteractive(status)) {\n ghostContext.font = chunk.style;\n }\n }\n if (chunk.fill) {\n context.save();\n context.fillStyle = chunk.fill.toCSS();\n // Color does not affect ghostContext so we not set it\n }\n // Draw text\n if (layerDirty) {\n context.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n }\n // Draw underline\n if (chunk.textDecoration == \"underline\" || chunk.textDecoration == \"line-through\") {\n let thickness = 1;\n let offset = 1;\n let fontSize = chunk.height;\n let offsetX = chunk.offsetX;\n switch (this.style.textAlign) {\n case \"right\":\n case \"end\":\n offsetX -= chunk.width;\n break;\n case \"center\":\n offsetX -= chunk.width / 2;\n break;\n }\n if (chunk.style) {\n const format = TextFormatter.getTextStyle(chunk.style);\n switch (format.fontWeight) {\n case \"bolder\":\n case \"bold\":\n case \"700\":\n case \"800\":\n case \"900\":\n thickness = 2;\n break;\n }\n }\n if (fontSize) {\n offset = fontSize / 20;\n }\n let y;\n if (chunk.textDecoration == \"line-through\") {\n y = thickness + line.offsetY + chunk.offsetY - chunk.height / 2;\n } else {\n y = thickness + offset * 1.5 + line.offsetY + chunk.offsetY;\n }\n context.save();\n context.beginPath();\n if (chunk.fill) {\n context.strokeStyle = chunk.fill.toCSS();\n } else if (this.style.fill && this.style.fill instanceof Color) {\n context.strokeStyle = this.style.fill.toCSS();\n }\n context.lineWidth = thickness * offset;\n context.moveTo(offsetX, y);\n context.lineTo(offsetX + chunk.width, y);\n context.stroke();\n context.restore();\n }\n if (interactive && this.interactive) {\n // Draw text in ghost canvas ONLY if it is set as interactive\n // explicitly. This way we avoid hit test anomalies caused by anti\n // aliasing of text.\n ghostContext.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\n }\n if (chunk.fill) {\n context.restore();\n // Color does not affect ghostContext so we not set it\n }\n // Reset style\n if (chunk.style) {\n context.restore();\n ghostContext.restore();\n }\n });\n });\n context.restore();\n ghostContext.restore();\n }\n }\n _addBounds(bounds) {\n if (this.visible && this.isMeasured) {\n //if (this._textVisible) {\n const x = this._measure({\n inactive: this.inactive,\n layer: this.getLayer()\n });\n setPoint(bounds, {\n x: x.left,\n y: x.top\n });\n setPoint(bounds, {\n x: x.right,\n y: x.bottom\n });\n //}\n }\n }\n _ignoreFontWeight() {\n return /apple/i.test(navigator.vendor);\n }\n _measure(status) {\n const context = status.layer.context;\n const ghostContext = this._renderer._ghostLayer.context;\n const rtl = this.style.direction == \"rtl\";\n // Reset text info\n this._textInfo = [];\n // Init\n const oversizedBehavior = this.style.oversizedBehavior;\n const maxWidth = this.style.maxWidth;\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\n const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\n // Pre-render\n context.save();\n ghostContext.save();\n this._prerender(status, true, this._ignoreFontWeight());\n // Get default font metrix\n const refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\n // Split up text into lines\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n let styleRestored = true;\n let minX = 0;\n let maxX = 0;\n // Iterate through the lines\n let offsetY = 0;\n let currentStyle;\n $array.each(lines, (line, _index) => {\n // Split up line into format/value chunks\n let chunks;\n if (line == \"\") {\n chunks = [{\n type: \"value\",\n text: \"\"\n }];\n } else {\n chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\n }\n while (chunks.length > 0) {\n // Init line object\n let lineInfo = {\n offsetY: offsetY,\n ascent: 0,\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n textChunks: []\n };\n // Measure reference text\n const metrics = this._measureText(refText, context);\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n lineInfo.height = height;\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\n let currentFormat;\n let currentDecoration = this.style.textDecoration;\n let currentFill;\n let currentChunkWidth;\n let skipFurtherText = false;\n let firstTextChunk = true;\n let leftoverChunks = [];\n let currentVerticalAlign;\n //let offsetX = 0;\n //let chunk;\n //while(chunk = chunks.shift()) {\n $array.eachContinue(chunks, (chunk, index) => {\n // Format chunk\n if (chunk.type == \"format\") {\n if (chunk.text == \"[/]\") {\n if (!styleRestored) {\n context.restore();\n ghostContext.restore();\n styleRestored = true;\n }\n currentFill = undefined;\n currentStyle = undefined;\n currentChunkWidth = undefined;\n currentDecoration = this.style.textDecoration;\n currentVerticalAlign = undefined;\n currentFormat = chunk.text;\n } else {\n if (!styleRestored) {\n context.restore();\n ghostContext.restore();\n }\n let format = TextFormatter.getTextStyle(chunk.text);\n const fontStyle = this._getFontStyle(format);\n context.save();\n ghostContext.save();\n context.font = fontStyle;\n currentStyle = fontStyle;\n currentFormat = chunk.text;\n if (format.textDecoration) {\n currentDecoration = format.textDecoration;\n }\n if (format.fill) {\n currentFill = format.fill;\n }\n if (format.width) {\n currentChunkWidth = $type.toNumber(format.width);\n }\n if (format.verticalAlign) {\n currentVerticalAlign = format.verticalAlign;\n }\n styleRestored = false;\n // Measure reference text after change of format\n const metrics = this._measureText(refText, context);\n const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n if (height > lineInfo.height) {\n lineInfo.height = height;\n }\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\n }\n }\n }\n // Text chunk\n else if (chunk.type == \"value\" && !skipFurtherText) {\n // Measure\n const metrics = this._measureText(chunk.text, context);\n let chunkWidth = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n // Check for fit\n if (truncate) {\n // Break words?\n let breakWords = firstTextChunk || this.style.breakWords || false;\n // Measure ellipsis and check if it fits\n const ellipsis = this.style.ellipsis || \"\";\n const ellipsisMetrics = this._measureText(ellipsis, context);\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\n // Check fit\n if (lineInfo.width + chunkWidth > maxWidth) {\n const excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\n chunk.text = this._truncateText(context, chunk.text, excessWidth, breakWords);\n chunk.text += ellipsis;\n skipFurtherText = true;\n }\n } else if (wrap) {\n // Check fit\n if (lineInfo.width + chunkWidth > maxWidth) {\n const excessWidth = maxWidth - lineInfo.width;\n const tmpText = this._truncateText(context, chunk.text, excessWidth, false, firstTextChunk && this.style.oversizedBehavior != \"wrap-no-break\");\n if (tmpText == \"\") {\n // Unable to fit a single letter - hide the whole label\n this.textVisible = true;\n return false;\n }\n //skipFurtherText = true;\n //Add remaining chunks for the next line\n leftoverChunks = chunks.slice(index + 1);\n //Add remaining text of current chunk if it was forced-cut\n if ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\n leftoverChunks.unshift({\n type: \"value\",\n text: chunk.text.substr(tmpText.length)\n });\n if (currentFormat) {\n leftoverChunks.unshift({\n type: \"format\",\n text: currentFormat\n });\n }\n }\n // Set current chunk (truncated)\n chunk.text = $utils.trim(tmpText);\n chunks = [];\n skipFurtherText = true;\n }\n }\n // Chunk width?\n let leftBoundMod = 1;\n let rightBoundMod = 1;\n if (currentStyle && currentChunkWidth && currentChunkWidth > chunkWidth) {\n // increase horizontal bounding boxes accordingly\n const boundsMod = chunkWidth / currentChunkWidth;\n switch (this.style.textAlign) {\n case \"right\":\n case \"end\":\n leftBoundMod = boundsMod;\n break;\n case \"center\":\n leftBoundMod = boundsMod;\n rightBoundMod = boundsMod;\n break;\n default:\n rightBoundMod = boundsMod;\n }\n chunkWidth = currentChunkWidth;\n }\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n if (chunkHeight > lineInfo.height) {\n lineInfo.height = chunkHeight;\n }\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\n }\n lineInfo.width += chunkWidth;\n lineInfo.left += metrics.actualBoundingBoxLeft / leftBoundMod;\n lineInfo.right += metrics.actualBoundingBoxRight / rightBoundMod;\n lineInfo.textChunks.push({\n style: currentStyle,\n fill: currentFill,\n text: chunk.text,\n width: chunkWidth,\n height: chunkHeight,\n left: metrics.actualBoundingBoxLeft,\n right: metrics.actualBoundingBoxRight,\n ascent: metrics.actualBoundingBoxAscent,\n offsetX: 0,\n offsetY: 0,\n textDecoration: currentDecoration,\n verticalAlign: currentVerticalAlign\n });\n //offsetX += chunkWidth;\n firstTextChunk = false;\n }\n if (leftoverChunks) {\n //return false;\n }\n return true;\n //}\n });\n if (this.style.lineHeight instanceof Percent) {\n lineInfo.height *= this.style.lineHeight.value;\n lineInfo.ascent *= this.style.lineHeight.value;\n } else {\n lineInfo.height *= this.style.lineHeight || 1.2;\n lineInfo.ascent *= this.style.lineHeight || 1.2;\n }\n if (minX < lineInfo.left) {\n minX = lineInfo.left;\n }\n if (maxX < lineInfo.right) {\n maxX = lineInfo.right;\n }\n this._textInfo.push(lineInfo);\n //lineInfo.offsetY += lineInfo.ascent;\n offsetY += lineInfo.height;\n // Reset chunks so that it can proceed to the next line\n chunks = leftoverChunks || [];\n }\n });\n if (!styleRestored) {\n context.restore();\n ghostContext.restore();\n }\n // Adjust chunk internal offsets\n $array.each(this._textInfo, (lineInfo, _index) => {\n let currentChunkOffset = 0;\n $array.each(lineInfo.textChunks, chunk => {\n chunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\n chunk.offsetY += lineInfo.height - lineInfo.height * (this.style.baselineRatio || 0.19);\n currentChunkOffset += chunk.width;\n if (chunk.verticalAlign) {\n switch (chunk.verticalAlign) {\n case \"super\":\n chunk.offsetY -= lineInfo.height / 2 - chunk.height / 2;\n break;\n case \"sub\":\n chunk.offsetY += chunk.height / 2;\n break;\n }\n }\n });\n });\n const bounds = {\n left: rtl ? -maxX : -minX,\n top: 0,\n right: rtl ? minX : maxX,\n bottom: offsetY\n };\n // We need to fit?\n if (oversizedBehavior !== \"none\") {\n const ratio = this._fitRatio(bounds);\n if (ratio < 1) {\n if (oversizedBehavior == \"fit\") {\n if ($type.isNumber(this.style.minScale) && ratio < this.style.minScale) {\n this.textVisible = false;\n bounds.left = 0;\n bounds.top = 0;\n bounds.right = 0;\n bounds.bottom = 0;\n } else {\n if (!this._originalScale || this._originalScale == 1) {\n this._originalScale = this.scale;\n }\n this.scale = ratio;\n this.textVisible = true;\n }\n } else if (oversizedBehavior == \"hide\") {\n this.textVisible = false;\n bounds.left = 0;\n bounds.top = 0;\n bounds.right = 0;\n bounds.bottom = 0;\n } else {\n switch (this.style.textAlign) {\n case \"right\":\n case \"end\":\n bounds.left = -maxWidth;\n bounds.right = 0;\n break;\n case \"center\":\n bounds.left = -maxWidth / 2;\n bounds.right = maxWidth / 2;\n break;\n default:\n bounds.left = 0;\n bounds.right = maxWidth;\n }\n this.scale = this._originalScale || 1;\n this._originalScale = undefined;\n this.textVisible = true;\n }\n } else {\n this.scale = this._originalScale || 1;\n this._originalScale = undefined;\n this.textVisible = true;\n }\n }\n context.restore();\n ghostContext.restore();\n return bounds;\n }\n _fitRatio(bounds) {\n const maxW = this.style.maxWidth;\n const maxH = this.style.maxHeight;\n if (!$type.isNumber(maxW) && !$type.isNumber(maxH)) {\n return 1;\n }\n const w = bounds.right - bounds.left;\n const h = bounds.bottom - bounds.top;\n return Math.min(maxW / w || 1, maxH / h || 1);\n }\n _truncateText(context, text, maxWidth) {\n let breakWords = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n let fallbackBreakWords = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let width;\n do {\n if (breakWords) {\n text = text.slice(0, -1);\n } else {\n let tmp = text.replace(/[^,;:!?\\\\\\/\\s​]+[,;:!?\\\\\\/\\s​]*$/g, \"\");\n if ((tmp == \"\" || tmp === text) && fallbackBreakWords) {\n breakWords = true;\n } else if (tmp == \"\") {\n return text;\n } else {\n text = tmp;\n }\n }\n const metrics = this._measureText(text, context);\n width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\n } while (width > maxWidth && text != \"\");\n return text;\n }\n _measureText(text, context) {\n let metrics = context.measureText(text);\n let fakeMetrics = {};\n if (metrics.actualBoundingBoxAscent == null) {\n const div = document.createElement(\"div\");\n div.innerText = text;\n div.style.visibility = \"hidden\";\n div.style.position = \"absolute\";\n div.style.top = \"-1000000px;\";\n div.style.fontFamily = this.style.fontFamily || \"\";\n div.style.fontSize = this.style.fontSize + \"\";\n document.body.appendChild(div);\n const bbox = div.getBoundingClientRect();\n document.body.removeChild(div);\n const h = bbox.height;\n const w = metrics.width;\n let left = 0;\n let right = w;\n fakeMetrics = {\n actualBoundingBoxAscent: h,\n actualBoundingBoxDescent: 0,\n actualBoundingBoxLeft: left,\n actualBoundingBoxRight: right,\n fontBoundingBoxAscent: h,\n fontBoundingBoxDescent: 0,\n width: w\n };\n //return fake;\n } else {\n fakeMetrics = {\n actualBoundingBoxAscent: metrics.actualBoundingBoxAscent,\n actualBoundingBoxDescent: metrics.actualBoundingBoxDescent,\n actualBoundingBoxLeft: metrics.actualBoundingBoxLeft,\n actualBoundingBoxRight: metrics.actualBoundingBoxRight,\n fontBoundingBoxAscent: metrics.actualBoundingBoxAscent,\n fontBoundingBoxDescent: metrics.actualBoundingBoxDescent,\n width: metrics.width\n };\n }\n const w = metrics.width;\n switch (this.style.textAlign) {\n case \"right\":\n case \"end\":\n fakeMetrics.actualBoundingBoxLeft = w;\n fakeMetrics.actualBoundingBoxRight = 0;\n break;\n case \"center\":\n fakeMetrics.actualBoundingBoxLeft = w / 2;\n fakeMetrics.actualBoundingBoxRight = w / 2;\n break;\n default:\n fakeMetrics.actualBoundingBoxLeft = 0;\n fakeMetrics.actualBoundingBoxRight = w;\n }\n return fakeMetrics;\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasTextStyle {\n constructor() {\n //public wordWrapWidth: number = 100;\n Object.defineProperty(this, \"fill\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fillOpacity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"textAlign\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fontFamily\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fontWeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"fontVariant\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"textDecoration\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowColor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowBlur\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOffsetX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOffsetY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOpacity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // leading?: number;\n // letterSpacing?: number;\n Object.defineProperty(this, \"lineHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: percent(120)\n });\n Object.defineProperty(this, \"baselineRatio\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0.19\n });\n // padding?: number;\n // stroke?: number;\n // strokeThickness?: number;\n // trim?: number;\n // wordWrap?: boolean;\n Object.defineProperty(this, \"direction\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"textBaseline\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"oversizedBehavior\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"none\"\n });\n Object.defineProperty(this, \"breakWords\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"ellipsis\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"…\"\n });\n Object.defineProperty(this, \"maxWidth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"maxHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"minScale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"ignoreFormatting\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasRadialText extends CanvasText {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"textType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"circular\"\n });\n Object.defineProperty(this, \"radius\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"startAngle\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"inside\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"orientation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"auto\"\n });\n Object.defineProperty(this, \"kerning\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_textReversed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n _render(status) {\n switch (this.textType) {\n case \"circular\":\n this._renderCircular(status);\n break;\n default:\n super._render(status);\n break;\n }\n }\n _renderCircular(status) {\n if (this.textVisible) {\n this._prerender(status);\n const interactive = this._isInteractive(status);\n const context = status.layer.context;\n const layerDirty = status.layer.dirty;\n const ghostContext = this._renderer._ghostLayer.context;\n // Savepoint\n context.save();\n if (interactive) {\n ghostContext.save();\n }\n // We need measurements in order to properly position text for alignment\n if (!this._textInfo) {\n this._measure(status);\n }\n // Init\n let radius = this.radius || 0;\n let startAngle = this.startAngle || 0;\n let deltaAngle = 0;\n let orientation = this.orientation;\n let inward = orientation == \"auto\" ? \"auto\" : orientation == \"inward\";\n const inside = this.inside;\n const align = this.style.textAlign || \"left\";\n const kerning = this.kerning || 0;\n let clockwise = align == \"left\" ? 1 : -1;\n const shouldReverse = !this._textReversed;\n // Check if we need to invert the whole stuff\n if (inward == \"auto\") {\n // Calc max angle so we know whether we need to flip it\n let maxAngle = 0;\n let midAngle = 0;\n $array.each(this._textInfo, (line, _index) => {\n const deltaAngle = startAngle + line.width / (radius - line.height) / 2 * -clockwise;\n if (deltaAngle > maxAngle) {\n maxAngle = deltaAngle;\n }\n });\n if (align == \"left\") {\n midAngle = (maxAngle + deltaAngle / 2) * $math.DEGREES;\n } else if (align == \"right\") {\n midAngle = (maxAngle - deltaAngle / 2) * $math.DEGREES;\n } else {\n midAngle = startAngle * $math.DEGREES;\n }\n midAngle = $math.normalizeAngle(midAngle);\n inward = midAngle >= 270 || midAngle <= 90;\n }\n if (inward == true && shouldReverse) {\n this._textInfo.reverse();\n this._textReversed = true;\n }\n // if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\n // \tclockwise *= -1;\n // }\n // Process text info produced by _measure()\n $array.each(this._textInfo, (line, _index) => {\n const textHeight = line.height;\n // Adjust radius (for `inside = false`)\n // Radius adjustment for `inside = false` is below the line calculation\n if (!inside) {\n radius += textHeight;\n }\n // Reverse letters if we're painting them counter-clockwise\n if ((clockwise == -1 && inward || clockwise == 1 && !inward) && shouldReverse) {\n line.textChunks.reverse();\n }\n // Init angles\n let lineStartAngle = startAngle;\n deltaAngle = 0;\n // Adjust for center-align\n if (align == \"center\") {\n lineStartAngle += line.width / (radius - textHeight) / 2 * -clockwise;\n deltaAngle = lineStartAngle - startAngle;\n }\n // if (inward == \"auto\") {\n // \tlet midAngle;\n // \tif (align == \"left\") {\n // \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\n // \t}\n // \telse if () {\n // \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\n // \t}\n // \tinward = (midAngle >= 270) || (midAngle <= 90);\n // }\n // Rotate letters if they are facing outward\n lineStartAngle += Math.PI * (inward ? 0 : 1); // Rotate 180 if outward\n // Savepoint\n context.save();\n if (interactive) {\n ghostContext.save();\n }\n // Assume starting angle\n context.rotate(lineStartAngle);\n if (interactive) {\n ghostContext.rotate(lineStartAngle);\n }\n let angleShift = 0;\n $array.each(line.textChunks, (chunk, _index) => {\n // Draw the letter\n const char = chunk.text;\n const charWidth = chunk.width;\n // Rotate half a letter\n angleShift = charWidth / 2 / (radius - textHeight) * clockwise;\n context.rotate(angleShift);\n if (interactive) {\n ghostContext.rotate(angleShift);\n }\n // Set style\n if (chunk.style) {\n context.save();\n ghostContext.save();\n context.font = chunk.style;\n if (interactive) {\n ghostContext.font = chunk.style;\n }\n }\n if (chunk.fill) {\n context.save();\n context.fillStyle = chunk.fill.toCSS();\n // Color does not affect ghostContext so we not set it\n }\n // Center letters\n context.textBaseline = \"middle\";\n context.textAlign = \"center\";\n if (interactive) {\n ghostContext.textBaseline = \"middle\";\n ghostContext.textAlign = \"center\";\n }\n // Plop the letter\n if (layerDirty) {\n context.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n }\n if (interactive) {\n ghostContext.fillText(char, 0, (inward ? 1 : -1) * (0 - radius + textHeight / 2));\n }\n if (chunk.fill) {\n context.restore();\n // Color does not affect ghostContext so we not set it\n }\n // Reset style\n if (chunk.style) {\n context.restore();\n ghostContext.restore();\n }\n // Rotate half a letter and add spacing\n angleShift = (charWidth / 2 + kerning) / (radius - textHeight) * clockwise;\n context.rotate(angleShift);\n if (interactive) {\n ghostContext.rotate(angleShift);\n }\n });\n // Restore angle\n context.restore();\n if (interactive) {\n ghostContext.restore();\n }\n // Adjust radius (for `inside = true`)\n if (inside) {\n radius -= textHeight;\n }\n });\n // Restore\n context.restore();\n if (interactive) {\n ghostContext.restore();\n }\n }\n }\n _measure(status) {\n switch (this.textType) {\n case \"circular\":\n return this._measureCircular(status);\n default:\n return super._measure(status);\n }\n }\n _measureCircular(status) {\n const context = status.layer.context;\n const ghostContext = this._renderer._ghostLayer.context;\n const rtl = this.style.direction == \"rtl\";\n const oversizedBehavior = this.style.oversizedBehavior;\n const maxWidth = this.style.maxWidth;\n const truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\n const ellipsis = this.style.ellipsis || \"\";\n let ellipsisMetrics;\n //const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\n // Reset text info\n this.textVisible = true;\n this._textInfo = [];\n this._textReversed = false;\n // Pre-render\n context.save();\n ghostContext.save();\n this._prerender(status, true);\n // Split up text into lines\n const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\n let styleRestored = true;\n let totalWidth = 0;\n // Iterate through the lines\n let offsetY = 0;\n $array.each(lines, (line, _index) => {\n // Split up line into format/value chunks\n let chunks = TextFormatter.chunk(line, false, this.style.ignoreFormatting);\n // Init line object\n let lineInfo = {\n offsetY: offsetY,\n ascent: 0,\n width: 0,\n height: 0,\n left: 0,\n right: 0,\n textChunks: []\n };\n let currentStyle;\n let currentFill;\n let currentChunkWidth;\n //while(chunk = chunks.shift()) {\n $array.each(chunks, (chunk, _index) => {\n // Format chunk\n if (chunk.type == \"format\") {\n if (chunk.text == \"[/]\") {\n if (!styleRestored) {\n context.restore();\n ghostContext.restore();\n styleRestored = true;\n }\n currentFill = undefined;\n currentStyle = undefined;\n currentChunkWidth = undefined;\n } else {\n let format = TextFormatter.getTextStyle(chunk.text);\n const fontStyle = this._getFontStyle(format);\n context.save();\n ghostContext.save();\n context.font = fontStyle;\n currentStyle = fontStyle;\n if (format.fill) {\n currentFill = format.fill;\n }\n if (format.width) {\n currentChunkWidth = $type.toNumber(format.width);\n }\n styleRestored = false;\n }\n if (truncate) {\n ellipsisMetrics = this._measureText(ellipsis, context);\n }\n }\n // Text format\n else if (chunk.type == \"value\") {\n // Measure each letter\n let chars = chunk.text.match(/./ug) || [];\n if (rtl) {\n chars = $utils.splitString(chunk.text);\n chars.reverse();\n }\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n // Measure\n const metrics = this._measureText(char, context);\n let chunkWidth = metrics.width;\n // Chunk width?\n if (currentStyle && currentChunkWidth && currentChunkWidth > chunkWidth) {\n chunkWidth = currentChunkWidth;\n }\n const chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n if (chunkHeight > lineInfo.height) {\n lineInfo.height = chunkHeight;\n }\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\n }\n totalWidth += chunkWidth;\n // Handle oversized behavior\n if (truncate) {\n // Measure ellipsis and check if it fits\n if (!ellipsisMetrics) {\n ellipsisMetrics = this._measureText(ellipsis, context);\n }\n const ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\n //totalWidth += ellipsisWidth;\n if (totalWidth + ellipsisWidth > maxWidth) {\n if (lineInfo.textChunks.length == 1) {\n this.textVisible = false;\n } else {\n lineInfo.width += ellipsisWidth;\n lineInfo.left += ellipsisMetrics.actualBoundingBoxLeft;\n lineInfo.right += ellipsisMetrics.actualBoundingBoxRight;\n lineInfo.textChunks.push({\n style: currentStyle,\n fill: currentFill,\n text: ellipsis,\n width: ellipsisWidth,\n height: chunkHeight + ellipsisMetrics.actualBoundingBoxDescent,\n left: ellipsisMetrics.actualBoundingBoxLeft,\n right: ellipsisMetrics.actualBoundingBoxRight,\n ascent: ellipsisMetrics.actualBoundingBoxAscent,\n offsetX: 0,\n offsetY: chunkHeight,\n textDecoration: undefined\n });\n }\n break;\n }\n }\n lineInfo.width += chunkWidth;\n lineInfo.left += metrics.actualBoundingBoxLeft;\n lineInfo.right += metrics.actualBoundingBoxRight;\n lineInfo.textChunks.push({\n style: currentStyle,\n fill: currentFill,\n text: char,\n width: chunkWidth,\n height: chunkHeight + metrics.actualBoundingBoxDescent,\n left: metrics.actualBoundingBoxLeft,\n right: metrics.actualBoundingBoxRight,\n ascent: metrics.actualBoundingBoxAscent,\n offsetX: 0,\n offsetY: chunkHeight,\n textDecoration: undefined\n });\n if (rtl) {\n // @todo still needed?\n //break;\n }\n }\n }\n });\n if (this.style.lineHeight instanceof Percent) {\n lineInfo.height *= this.style.lineHeight.value;\n } else {\n lineInfo.height *= this.style.lineHeight || 1.2;\n }\n this._textInfo.push(lineInfo);\n //lineInfo.offsetY += lineInfo.ascent;\n offsetY += lineInfo.height;\n });\n if (!styleRestored) {\n context.restore();\n ghostContext.restore();\n }\n if (oversizedBehavior == \"hide\" && totalWidth > maxWidth) {\n this.textVisible = false;\n }\n // Adjust chunk internal offsets\n $array.each(this._textInfo, lineInfo => {\n $array.each(lineInfo.textChunks, chunk => {\n chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\n });\n });\n context.restore();\n ghostContext.restore();\n return {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasImage extends CanvasDisplayObject {\n constructor(renderer, image) {\n super(renderer);\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"image\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tainted\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowColor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowBlur\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOffsetX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOffsetY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"shadowOpacity\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_imageMask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.image = image;\n }\n _dispose() {\n super._dispose();\n if (this._imageMask) {\n clearCanvas(this._imageMask);\n }\n }\n getLocalBounds() {\n if (!this._localBounds) {\n let w = 0;\n let h = 0;\n if (this.width) {\n w = this.width;\n }\n if (this.height) {\n h = this.height;\n }\n this._localBounds = {\n left: 0,\n top: 0,\n right: w,\n bottom: h\n };\n this._addBounds(this._localBounds);\n }\n return this._localBounds;\n }\n _render(status) {\n super._render(status);\n if (this.image) {\n if (this.tainted === undefined) {\n this.tainted = isTainted(this.image);\n status.layer.tainted = true;\n }\n if (this.tainted && this._renderer._omitTainted) {\n return;\n }\n if (status.layer.dirty) {\n if (this.shadowColor) {\n status.layer.context.shadowColor = this.shadowColor.toCSS(this.shadowOpacity || 1);\n }\n if (this.shadowBlur) {\n status.layer.context.shadowBlur = this.shadowBlur;\n }\n if (this.shadowOffsetX) {\n status.layer.context.shadowOffsetX = this.shadowOffsetX;\n }\n if (this.shadowOffsetY) {\n status.layer.context.shadowOffsetY = this.shadowOffsetY;\n }\n // TODO should this round ?\n const width = this.width || this.image.naturalWidth;\n const height = this.height || this.image.naturalHeight;\n status.layer.context.drawImage(this.image, 0, 0, width, height);\n }\n if (this.interactive && this._isInteractive(status)) {\n const mask = this._getMask(this.image);\n this._renderer._ghostLayer.context.drawImage(mask, 0, 0);\n }\n }\n }\n clear() {\n super.clear();\n this.image = undefined;\n this._imageMask = undefined;\n }\n _getMask(image) {\n if (this._imageMask === undefined) {\n // TODO should this round ?\n const width = this.width || image.naturalWidth;\n const height = this.height || image.naturalHeight;\n // We need to create a second canvas because destination-in clears out the entire canvas\n const canvas = document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n const context = canvas.getContext(\"2d\");\n context.imageSmoothingEnabled = false;\n context.fillStyle = this._getColorId();\n context.fillRect(0, 0, width, height);\n if (!isTainted(image)) {\n context.globalCompositeOperation = \"destination-in\";\n context.drawImage(image, 0, 0, width, height);\n }\n this._imageMask = canvas;\n }\n return this._imageMask;\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasRendererEvent {\n constructor(event, originalPoint, point, bbox) {\n Object.defineProperty(this, \"event\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: event\n });\n Object.defineProperty(this, \"originalPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: originalPoint\n });\n Object.defineProperty(this, \"point\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: point\n });\n Object.defineProperty(this, \"bbox\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: bbox\n });\n Object.defineProperty(this, \"id\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"simulated\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"native\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n if ($utils.supports(\"touchevents\") && event instanceof Touch) {\n this.id = event.identifier;\n } else {\n this.id = null;\n }\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasRenderer extends ArrayDisposer {\n constructor(resolution) {\n super();\n Object.defineProperty(this, \"view\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: document.createElement(\"div\")\n });\n Object.defineProperty(this, \"_layerDom\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: document.createElement(\"div\")\n });\n Object.defineProperty(this, \"layers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_dirtyLayers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"defaultLayer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.getLayer(0)\n });\n Object.defineProperty(this, \"_ghostLayer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new GhostLayer()\n });\n Object.defineProperty(this, \"_patternCanvas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: document.createElement(\"canvas\")\n });\n Object.defineProperty(this, \"_patternContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._patternCanvas.getContext(\"2d\")\n });\n Object.defineProperty(this, \"_realWidth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_realHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_calculatedWidth\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_calculatedHeight\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"resolution\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"interactionsEnabled\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_listeners\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_colorId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_colorMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_forceInteractive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_omitTainted\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n // TODO this should store the Id as well\n Object.defineProperty(this, \"_hovering\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n Object.defineProperty(this, \"_dragging\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_mousedown\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_lastPointerMoveEvent\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tapToActivate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"tapToActivateTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 3000\n });\n Object.defineProperty(this, \"_touchActive\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_touchActiveTimeout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n if (resolution == null) {\n this.resolution = window.devicePixelRatio;\n } else {\n this.resolution = resolution;\n }\n this.view.style.position = \"absolute\";\n this.view.setAttribute(\"aria-hidden\", \"true\");\n this.view.appendChild(this._layerDom);\n this._disposers.push(new Disposer(() => {\n $object.each(this._events, (_key, events) => {\n events.disposer.dispose();\n });\n $array.each(this.layers, layer => {\n clearCanvas(layer.view);\n if (layer.exportableView) {\n clearCanvas(layer.exportableView);\n }\n });\n clearCanvas(this._ghostLayer.view);\n clearCanvas(this._patternCanvas);\n }));\n /*\r\n this._disposers.push($utils.addEventListener(this._ghostLayer.view, \"click\", (originalEvent: MouseEvent) => {\r\n const event = this.getEvent(originalEvent);\r\n const target = this._getHitTarget(event.originalPoint, event.bbox);\r\n console.debug(target);\r\n }));\r\n */\n // Monitor for possible pixel ratio changes (when page is zoomed)\n this._disposers.push($utils.onZoom(() => {\n if (resolution == null) {\n this.resolution = window.devicePixelRatio;\n }\n }));\n // We need this in order top prevent default touch gestures when dragging\n // draggable elements\n if ($utils.supports(\"touchevents\")) {\n const listener = ev => {\n if (this._dragging.length !== 0) {\n $array.eachContinue(this._dragging, item => {\n if (item.value.shouldCancelTouch()) {\n ev.preventDefault();\n return false;\n }\n return true;\n });\n }\n // If touch down happends, delay touch out\n if (this._touchActiveTimeout) {\n this._delayTouchDeactivate();\n }\n };\n this._disposers.push($utils.addEventListener(window, \"touchstart\", listener, {\n passive: false\n }));\n this._disposers.push($utils.addEventListener(this.view, \"touchstart\", listener, {\n passive: false\n }));\n this._disposers.push($utils.addEventListener(this.view, \"touchmove\", () => {\n // If touch is moving, delay touch out\n if (this._touchActiveTimeout) {\n this._delayTouchDeactivate();\n }\n }, {\n passive: true\n }));\n this._disposers.push($utils.addEventListener(window, \"click\", _ev => {\n this._touchActive = false;\n }, {\n passive: true\n }));\n this._disposers.push($utils.addEventListener(this.view, \"click\", _ev => {\n window.setTimeout(() => {\n this._touchActive = true;\n this._delayTouchDeactivate();\n }, 100);\n }, {\n passive: true\n }));\n }\n // Prevent scrolling of the window when hovering on \"wheelable\" object\n if ($utils.supports(\"wheelevents\")) {\n this._disposers.push($utils.addEventListener(this.view, \"wheel\", ev => {\n let prevent = false;\n this._hovering.forEach(obj => {\n if (obj.wheelable) {\n prevent = true;\n return false;\n }\n });\n if (prevent) {\n ev.preventDefault();\n }\n }, {\n passive: false\n }));\n }\n }\n /*protected _mouseMoveThrottler: Throttler = new Throttler(() => {\r\n this._dispatchGlobalMousemove(this._lastPointerMoveEvent.event, this._lastPointerMoveEvent.native);\r\n });\r\n */\n resetImageArray() {\n this._ghostLayer.imageArray = undefined;\n }\n _delayTouchDeactivate() {\n if (this._touchActiveTimeout) {\n clearTimeout(this._touchActiveTimeout);\n }\n if (this.tapToActivateTimeout > 0) {\n this._touchActiveTimeout = window.setTimeout(() => {\n this._touchActive = false;\n }, this.tapToActivateTimeout);\n }\n }\n get debugGhostView() {\n return !!this._ghostLayer.view.parentNode;\n }\n set debugGhostView(value) {\n if (value) {\n if (!this._ghostLayer.view.parentNode) {\n this.view.appendChild(this._ghostLayer.view);\n }\n } else {\n if (this._ghostLayer.view.parentNode) {\n this._ghostLayer.view.parentNode.removeChild(this._ghostLayer.view);\n }\n }\n }\n createLinearGradient(x1, y1, x2, y2) {\n return this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\n }\n createRadialGradient(x1, y1, radius1, x2, y2, radius2) {\n return this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\n }\n createPattern(graphics, background, repetition, width, height) {\n // const patternCanvas = document.createElement(\"canvas\");\n // const patternContext = patternCanvas.getContext(\"2d\")!;\n // patternCanvas.width = width;\n // patternCanvas.height = height;\n // if (fill) {\n // \tpatternContext.fillStyle = fill.toCSS();\n // \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\n // }\n // const layer = {\n // \tview: patternCanvas,\n // \tcontext: patternContext,\n // \tvisible: true,\n // \torder: 0,\n // \twidth: width,\n // \theight: height,\n // \tdirty: true\n // };\n // // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\n // // patternContext.stroke();\n // image.targetLayer = layer;\n // image.render(layer);\n //this._layerDom.appendChild(patternCanvas);\n this._patternCanvas.width = width;\n this._patternCanvas.height = height;\n this._patternContext.clearRect(0, 0, width, height);\n // patternCanvas.style.width = width * this.resolution + \"px\";\n // patternCanvas.style.height = height * this.resolution + \"px\";\n background.renderDetached(this._patternContext);\n graphics.renderDetached(this._patternContext);\n return this._patternContext.createPattern(this._patternCanvas, repetition);\n }\n makeContainer() {\n return new CanvasContainer(this);\n }\n makeGraphics() {\n return new CanvasGraphics(this);\n }\n makeText(text, style) {\n return new CanvasText(this, text, style);\n }\n makeTextStyle() {\n return new CanvasTextStyle();\n }\n makeRadialText(text, style) {\n return new CanvasRadialText(this, text, style);\n }\n makePicture(image) {\n return new CanvasImage(this, image);\n }\n resizeLayer(layer) {\n layer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\n }\n resizeGhost() {\n this._ghostLayer.resize(this._calculatedWidth, this._calculatedHeight, this._calculatedWidth, this._calculatedHeight, this.resolution);\n }\n resize(realWidth, realHeight, calculatedWidth, calculatedHeight) {\n this._realWidth = realWidth;\n this._realHeight = realHeight;\n this._calculatedWidth = calculatedWidth;\n this._calculatedHeight = calculatedHeight;\n $array.each(this.layers, layer => {\n if (layer) {\n layer.dirty = true;\n this.resizeLayer(layer);\n }\n });\n this.resizeGhost();\n this.view.style.width = calculatedWidth + \"px\";\n this.view.style.height = calculatedHeight + \"px\";\n }\n createDetachedLayer() {\n let willReadFrequently = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n const view = document.createElement(\"canvas\");\n const context = view.getContext(\"2d\", {\n willReadFrequently: willReadFrequently\n });\n const layer = new CanvasLayer(view, context);\n view.style.position = \"absolute\";\n view.style.top = \"0px\";\n view.style.left = \"0px\";\n return layer;\n }\n getLayerByOrder(order) {\n const layers = this.layers;\n const length = layers.length;\n for (let i = 0; i < length; i++) {\n const layer = layers[i];\n if (layer.order == order) {\n return layer;\n }\n }\n }\n getLayer(order) {\n let visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n let existingLayer = this.getLayerByOrder(order);\n if (existingLayer) {\n return existingLayer;\n }\n const layer = this.createDetachedLayer(order == 99);\n layer.order = order;\n layer.visible = visible;\n layer.view.className = \"am5-layer-\" + order;\n if (layer.visible) {\n this.resizeLayer(layer);\n }\n const layers = this.layers;\n layers.push(layer);\n layers.sort((a, b) => {\n if (a.order > b.order) {\n return 1;\n } else if (a.order < b.order) {\n return -1;\n } else {\n return 0;\n }\n });\n const length = layers.length;\n const layerIndex = $array.indexOf(layers, layer);\n let next;\n for (let i = layerIndex + 1; i < length; i++) {\n if (layers[i].visible) {\n next = layers[i];\n break;\n }\n }\n if (layer.visible) {\n if (next === undefined) {\n this._layerDom.appendChild(layer.view);\n } else {\n this._layerDom.insertBefore(layer.view, next.view);\n }\n }\n return layer;\n }\n render(root) {\n this._dirtyLayers.length = 0;\n $array.each(this.layers, layer => {\n if (layer) {\n if (layer.dirty && layer.visible) {\n this._dirtyLayers.push(layer);\n layer.clear();\n }\n }\n });\n this._ghostLayer.clear();\n root.render({\n inactive: null,\n layer: this.defaultLayer\n });\n this._ghostLayer.context.restore();\n //setTimeout(() => {\n // Remove this after the Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1279394\n $array.each(this.layers, layer => {\n if (layer) {\n const context = layer.context;\n context.beginPath();\n context.moveTo(0, 0);\n context.stroke();\n }\n });\n $array.each(this._dirtyLayers, layer => {\n layer.context.restore();\n layer.dirty = false;\n });\n //}, 100)\n if (this._hovering.size && this._lastPointerMoveEvent) {\n const {\n events,\n target,\n native\n } = this._lastPointerMoveEvent;\n //this._mouseMoveThrottler.run();\n $array.each(events, event => {\n this._dispatchGlobalMousemove(event, target, native);\n });\n }\n }\n paintId(obj) {\n const id = distributeId(++this._colorId);\n const color = Color.fromHex(id).toCSS();\n this._colorMap[color] = obj;\n return color;\n }\n _removeObject(obj) {\n if (obj._colorId !== undefined) {\n delete this._colorMap[obj._colorId];\n }\n }\n // protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\n // \treturn this._colorMap[colorId];\n // }\n _adjustBoundingBox(bbox) {\n const margin = this._ghostLayer.margin;\n return new DOMRect(-margin.left, -margin.top, bbox.width + margin.left + margin.right, bbox.height + margin.top + margin.bottom);\n }\n getEvent(originalEvent) {\n let adjustPoint = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n const bbox = this.view.getBoundingClientRect();\n const x = originalEvent.clientX || 0;\n const y = originalEvent.clientY || 0;\n const widthScale = this._calculatedWidth / this._realWidth;\n const heightScale = this._calculatedHeight / this._realHeight;\n const originalPoint = {\n x: x - bbox.left,\n y: y - bbox.top\n };\n const point = {\n x: (x - (adjustPoint ? bbox.left : 0)) * widthScale,\n y: (y - (adjustPoint ? bbox.top : 0)) * heightScale\n };\n return new CanvasRendererEvent(originalEvent, originalPoint, point, this._adjustBoundingBox(bbox));\n }\n _getHitTarget(point, bbox, target) {\n if (bbox.width === 0 || bbox.height === 0 || point.x < bbox.left || point.x > bbox.right || point.y < bbox.top || point.y > bbox.bottom) {\n return;\n }\n if (!target || !this._layerDom.contains(target)) {\n return;\n }\n const pixel = this._ghostLayer.getImageData(point, bbox);\n if (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\n return false;\n }\n const colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\n const hit = this._colorMap[colorId];\n return hit;\n }\n getObjectAtPoint(point) {\n const data = this._ghostLayer.getImageArray(point);\n if (data[0] === 0 && data[1] === 0 && data[2] === 0) {\n return undefined;\n }\n const colorId = Color.fromRGB(data[0], data[1], data[2]).toCSS();\n const hit = this._colorMap[colorId];\n return hit;\n }\n _withEvents(key, f) {\n const events = this._events[key];\n if (events !== undefined) {\n events.dispatching = true;\n try {\n f(events);\n } finally {\n events.dispatching = false;\n if (events.cleanup) {\n events.cleanup = false;\n $array.keepIf(events.callbacks, callback => {\n return !callback.disposed;\n });\n if (events.callbacks.length === 0) {\n events.disposer.dispose();\n delete this._events[key];\n }\n }\n }\n }\n }\n _dispatchEventAll(key, event) {\n if (!this.interactionsEnabled) {\n return;\n }\n this._withEvents(key, events => {\n $array.each(events.callbacks, callback => {\n if (!callback.disposed) {\n callback.callback.call(callback.context, event);\n }\n });\n });\n }\n _dispatchEvent(key, target, event) {\n if (!this.interactionsEnabled) {\n return false;\n }\n let dispatched = false;\n this._withEvents(key, events => {\n $array.each(events.callbacks, callback => {\n if (!callback.disposed && callback.object === target) {\n callback.callback.call(callback.context, event);\n dispatched = true;\n }\n });\n });\n return dispatched;\n }\n _dispatchMousedown(originalEvent, originalTarget) {\n const button = originalEvent.button;\n if (button != 0 && button != 2 && button != 1 && button !== undefined) {\n // Ignore non-primary mouse buttons\n return;\n }\n const event = this.getEvent(originalEvent);\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\n if (target) {\n const id = event.id;\n let dragged = false;\n eachTargets(target, obj => {\n const info = {\n id: id,\n value: obj\n };\n this._mousedown.push(info);\n if (!dragged && this._dispatchEvent(\"pointerdown\", obj, event)) {\n // Only dispatch the first element which matches\n dragged = true;\n const has = this._dragging.some(x => {\n return x.value === obj && x.id === id;\n });\n if (!has) {\n this._dragging.push(info);\n }\n }\n return true;\n });\n }\n }\n _dispatchGlobalMousemove(originalEvent, originalTarget, native) {\n const event = this.getEvent(originalEvent);\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\n event.native = native;\n if (target) {\n this._hovering.forEach(obj => {\n if (!obj.contains(target)) {\n this._hovering.delete(obj);\n if (obj.cursorOverStyle) {\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\n }\n this._dispatchEvent(\"pointerout\", obj, event);\n }\n });\n if (event.native) {\n eachTargets(target, obj => {\n if (!this._hovering.has(obj)) {\n this._hovering.add(obj);\n if (obj.cursorOverStyle) {\n obj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\n $utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\n }\n this._dispatchEvent(\"pointerover\", obj, event);\n }\n return true;\n });\n }\n //} else if (target === false) {\n } else {\n this._hovering.forEach(obj => {\n if (obj.cursorOverStyle) {\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\n }\n this._dispatchEvent(\"pointerout\", obj, event);\n });\n this._hovering.clear();\n }\n this._dispatchEventAll(\"globalpointermove\", event);\n }\n removeHovering(graphics) {\n this._hovering.delete(graphics);\n if (graphics.cursorOverStyle) {\n $utils.setStyle(document.body, \"cursor\", graphics._replacedCursorStyle);\n }\n }\n _dispatchGlobalMouseup(originalEvent, native) {\n const event = this.getEvent(originalEvent);\n event.native = native;\n //const target = this._getHitTarget(event.originalPoint);\n this._dispatchEventAll(\"globalpointerup\", event);\n }\n _dispatchDragMove(originalEvent) {\n if (this._dragging.length !== 0) {\n const event = this.getEvent(originalEvent);\n const id = event.id;\n this._dragging.forEach(obj => {\n if (obj.id === id) {\n this._dispatchEvent(\"pointermove\", obj.value, event);\n }\n });\n }\n }\n _dispatchDragEnd(originalEvent, originalTarget) {\n const button = originalEvent.button;\n let clickevent;\n if (button == 0 || button === undefined) {\n clickevent = \"click\";\n } else if (button == 2) {\n clickevent = \"rightclick\";\n } else if (button == 1) {\n clickevent = \"middleclick\";\n } else {\n // Ignore non-primary mouse buttons\n return;\n }\n const event = this.getEvent(originalEvent);\n const id = event.id;\n if (this._mousedown.length !== 0) {\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\n if (target) {\n this._mousedown.forEach(obj => {\n if (obj.id === id && obj.value.contains(target)) {\n this._dispatchEvent(clickevent, obj.value, event);\n }\n });\n }\n this._mousedown.length = 0;\n }\n if (this._dragging.length !== 0) {\n this._dragging.forEach(obj => {\n if (obj.id === id) {\n this._dispatchEvent(\"pointerup\", obj.value, event);\n }\n });\n this._dragging.length = 0;\n }\n }\n _dispatchDoubleClick(originalEvent, originalTarget) {\n const event = this.getEvent(originalEvent);\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\n if (target) {\n eachTargets(target, obj => {\n if (this._dispatchEvent(\"dblclick\", obj, event)) {\n return false;\n } else {\n return true;\n }\n });\n }\n }\n _dispatchWheel(originalEvent, originalTarget) {\n const event = this.getEvent(originalEvent);\n const target = this._getHitTarget(event.originalPoint, event.bbox, originalTarget);\n if (target) {\n eachTargets(target, obj => {\n if (this._dispatchEvent(\"wheel\", obj, event)) {\n return false;\n } else {\n return true;\n }\n });\n }\n }\n _makeSharedEvent(key, f) {\n if (this._listeners[key] === undefined) {\n const listener = f();\n this._listeners[key] = new CounterDisposer(() => {\n delete this._listeners[key];\n listener.dispose();\n });\n }\n return this._listeners[key].increment();\n }\n _onPointerEvent(name, f) {\n let native = false;\n let timer = null;\n function clear() {\n timer = null;\n native = false;\n }\n return new MultiDisposer([new Disposer(() => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n clear();\n }), $utils.addEventListener(this.view, $utils.getRendererEvent(name), _ => {\n native = true;\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = window.setTimeout(clear, 0);\n }), onPointerEvent(window, name, (ev, target) => {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n f(ev, target, native);\n native = false;\n })]);\n }\n // This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\n _initEvent(key) {\n switch (key) {\n case \"globalpointermove\":\n case \"pointerover\":\n case \"pointerout\":\n return this._makeSharedEvent(\"pointermove\", () => {\n const listener = (events, target, native) => {\n this._lastPointerMoveEvent = {\n events,\n target,\n native\n };\n $array.each(events, event => {\n this._dispatchGlobalMousemove(event, target, native);\n });\n };\n return new MultiDisposer([this._onPointerEvent(\"pointerdown\", listener), this._onPointerEvent(\"pointermove\", listener)]);\n });\n case \"globalpointerup\":\n return this._makeSharedEvent(\"pointerup\", () => {\n const mouseup = this._onPointerEvent(\"pointerup\", (events, target, native) => {\n $array.each(events, event => {\n this._dispatchGlobalMouseup(event, native);\n });\n this._lastPointerMoveEvent = {\n events,\n target,\n native\n };\n });\n const pointercancel = this._onPointerEvent(\"pointercancel\", (events, target, native) => {\n $array.each(events, event => {\n this._dispatchGlobalMouseup(event, native);\n });\n this._lastPointerMoveEvent = {\n events,\n target,\n native\n };\n });\n return new Disposer(() => {\n mouseup.dispose();\n pointercancel.dispose();\n });\n });\n case \"click\":\n case \"rightclick\":\n case \"middleclick\":\n case \"pointerdown\":\n /*\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n return this._onPointerEvent(\"pointerdown\", (event, target, native) => {\r\n this._lastPointerMoveEvent = { event, target, native };\r\n this._dispatchMousedown(event)\r\n });\r\n });\r\n */\n case \"pointermove\":\n case \"pointerup\":\n return this._makeSharedEvent(\"pointerdown\", () => {\n //const throttler = new Throttler();\n const mousedown = this._onPointerEvent(\"pointerdown\", (events, target) => {\n $array.each(events, ev => {\n this._dispatchMousedown(ev, target);\n });\n });\n // TODO handle throttling properly for multitouch\n const mousemove = this._onPointerEvent(\"pointermove\", ev => {\n //throttler.throttle(() => {\n $array.each(ev, ev => {\n this._dispatchDragMove(ev);\n });\n //});\n });\n const mouseup = this._onPointerEvent(\"pointerup\", (ev, target) => {\n $array.each(ev, ev => {\n this._dispatchDragEnd(ev, target);\n });\n });\n const pointercancel = this._onPointerEvent(\"pointercancel\", (ev, target) => {\n $array.each(ev, ev => {\n this._dispatchDragEnd(ev, target);\n });\n });\n return new Disposer(() => {\n mousedown.dispose();\n mousemove.dispose();\n mouseup.dispose();\n pointercancel.dispose();\n });\n });\n case \"dblclick\":\n return this._makeSharedEvent(\"dblclick\", () => {\n return this._onPointerEvent(\"dblclick\", (ev, target) => {\n $array.each(ev, ev => {\n this._dispatchDoubleClick(ev, target);\n });\n });\n });\n case \"wheel\":\n return this._makeSharedEvent(\"wheel\", () => {\n return $utils.addEventListener(this.view, $utils.getRendererEvent(\"wheel\"), event => {\n this._dispatchWheel(event, $utils.getEventTarget(event));\n }, {\n passive: false\n });\n });\n }\n }\n _addEvent(object, key, callback, context) {\n let events = this._events[key];\n if (events === undefined) {\n events = this._events[key] = {\n disposer: this._initEvent(key),\n callbacks: [],\n dispatching: false,\n cleanup: false\n };\n }\n const listener = {\n object,\n context,\n callback,\n disposed: false\n };\n events.callbacks.push(listener);\n return new Disposer(() => {\n listener.disposed = true;\n if (events.dispatching) {\n events.cleanup = true;\n } else {\n $array.removeFirst(events.callbacks, listener);\n if (events.callbacks.length === 0) {\n events.disposer.dispose();\n delete this._events[key];\n }\n }\n });\n }\n getCanvas(root, options) {\n // Make sure everything is rendered\n this.render(root);\n if (!options) {\n options = {};\n }\n let scale = this.resolution;\n let canvasWidth = Math.floor(this._calculatedWidth * this.resolution);\n let canvasHeight = Math.floor(this._calculatedHeight * this.resolution);\n // Check if we need to scale\n if (options.minWidth && options.minWidth > canvasWidth) {\n let minScale = options.minWidth / canvasWidth;\n if (minScale > scale) {\n scale = minScale * this.resolution;\n }\n }\n if (options.minHeight && options.minHeight > canvasHeight) {\n let minScale = options.minHeight / canvasHeight;\n if (minScale > scale) {\n scale = minScale * this.resolution;\n }\n }\n if (options.maxWidth && options.maxWidth < canvasWidth) {\n let maxScale = options.maxWidth / canvasWidth;\n if (maxScale < scale) {\n scale = maxScale * this.resolution;\n }\n }\n if (options.maxHeight && options.maxHeight > canvasHeight) {\n let maxScale = options.maxHeight / canvasHeight;\n if (maxScale < scale) {\n scale = maxScale * this.resolution;\n }\n }\n // Check if we need to compensate for pixel ratio\n if (options.maintainPixelRatio) {\n scale /= this.resolution;\n }\n // Init list canvases to remove from DOM after export\n const canvases = [];\n // Set up new canvas for export\n let forceRender = false;\n const canvas = document.createElement(\"canvas\");\n if (scale != this.resolution) {\n forceRender = true;\n canvasWidth = canvasWidth * scale / this.resolution;\n canvasHeight = canvasHeight * scale / this.resolution;\n }\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n // Add to DOM so it inherits CSS\n canvas.style.position = \"fixed\";\n canvas.style.top = \"-10000px\";\n this.view.appendChild(canvas);\n canvases.push(canvas);\n // Context\n const context = canvas.getContext(\"2d\");\n let width = 0;\n let height = 0;\n let needRerender = false;\n $array.each(this.layers, layer => {\n if (layer && layer.visible) {\n if (layer.tainted || forceRender) {\n needRerender = true;\n layer.exportableView = layer.view;\n layer.exportableContext = layer.context;\n layer.view = document.createElement(\"canvas\");\n // Add to DOM so it inherits CSS\n layer.view.style.position = \"fixed\";\n layer.view.style.top = \"-10000px\";\n this.view.appendChild(layer.view);\n canvases.push(layer.view);\n let extraX = 0;\n let extraY = 0;\n if (layer.margin) {\n extraX += layer.margin.left || 0 + layer.margin.right || 0;\n extraY += layer.margin.top || 0 + layer.margin.bottom || 0;\n }\n layer.view.width = canvasWidth + extraX;\n layer.view.height = canvasHeight + extraY;\n layer.context = layer.view.getContext(\"2d\");\n layer.dirty = true;\n layer.scale = scale;\n }\n }\n });\n if (needRerender) {\n this._omitTainted = true;\n this.render(root);\n this._omitTainted = false;\n }\n $array.each(this.layers, layer => {\n if (layer && layer.visible) {\n // Layer is fine. Just plop it into our target canvas\n let x = 0;\n let y = 0;\n if (layer.margin) {\n x = -(layer.margin.left || 0) * this.resolution;\n y = -(layer.margin.top || 0) * this.resolution;\n }\n context.drawImage(layer.view, x, y);\n // Restore layer original canvas\n if (layer.exportableView) {\n layer.view = layer.exportableView;\n layer.exportableView = undefined;\n }\n if (layer.exportableContext) {\n layer.context = layer.exportableContext;\n layer.exportableContext = undefined;\n }\n if (width < layer.view.clientWidth) {\n width = layer.view.clientWidth;\n }\n if (height < layer.view.clientHeight) {\n height = layer.view.clientHeight;\n }\n layer.scale = undefined;\n }\n });\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n $array.each(canvases, canvas => {\n canvas.style.position = \"\";\n canvas.style.top = \"\";\n this.view.removeChild(canvas);\n });\n return canvas;\n }\n}\nclass GhostLayer {\n constructor() {\n Object.defineProperty(this, \"view\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"context\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"margin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }\n });\n Object.defineProperty(this, \"_resolution\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"imageArray\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.view = document.createElement(\"canvas\");\n this.context = this.view.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.context.imageSmoothingEnabled = false;\n this.view.style.position = \"absolute\";\n this.view.style.top = \"0px\";\n this.view.style.left = \"0px\";\n }\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\n this._resolution = resolution;\n canvasWidth += this.margin.left + this.margin.right;\n canvasHeight += this.margin.top + this.margin.bottom;\n // TODO this should take into account calculateSize\n domWidth += this.margin.left + this.margin.right;\n domHeight += this.margin.top + this.margin.bottom;\n this.view.style.left = -this.margin.left + \"px\";\n this.view.style.top = -this.margin.top + \"px\";\n this._width = Math.floor(canvasWidth * resolution);\n this._height = Math.floor(canvasHeight * resolution);\n this.view.width = this._width;\n this.view.style.width = domWidth + \"px\";\n this.view.height = this._height;\n this.view.style.height = domHeight + \"px\";\n }\n getImageData(point, bbox) {\n return this.context.getImageData(\n // TODO should this round ?\n Math.round((point.x - bbox.left) / bbox.width * this._width), Math.round((point.y - bbox.top) / bbox.height * this._height), 1, 1);\n }\n getImageArray(point) {\n if (!this.imageArray) {\n this.imageArray = this.context.getImageData(0, 0, this._width, this._height).data;\n }\n const data = this.imageArray;\n const x = Math.round(point.x * this._resolution);\n const y = Math.round(point.y * this._resolution);\n const i = (y * this._width + x) * 4;\n return [data[i], data[i + 1], data[i + 2], data[i + 3]];\n }\n setMargin(layers) {\n this.margin.left = 0;\n this.margin.right = 0;\n this.margin.top = 0;\n this.margin.bottom = 0;\n $array.each(layers, layer => {\n if (layer.margin) {\n this.margin.left = Math.max(this.margin.left, layer.margin.left);\n this.margin.right = Math.max(this.margin.right, layer.margin.right);\n this.margin.top = Math.max(this.margin.top, layer.margin.top);\n this.margin.bottom = Math.max(this.margin.bottom, layer.margin.bottom);\n }\n });\n }\n clear() {\n this.context.save();\n this.context.fillStyle = '#000';\n this.context.fillRect(0, 0, this._width, this._height);\n }\n}\n/**\r\n * @ignore\r\n */\nexport class CanvasLayer {\n constructor(view, context) {\n Object.defineProperty(this, \"view\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"context\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"tainted\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"margin\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"order\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"visible\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"scale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"dirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"exportableView\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"exportableContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_width\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_height\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n this.view = view;\n this.context = context;\n }\n resize(canvasWidth, canvasHeight, domWidth, domHeight, resolution) {\n // TODO should this take into account calculateSize ?\n if (this.width != null) {\n canvasWidth = this.width;\n domWidth = this.width;\n }\n // TODO should this take into account calculateSize ?\n if (this.height != null) {\n canvasHeight = this.height;\n domHeight = this.height;\n }\n if (this.margin) {\n canvasWidth += this.margin.left + this.margin.right;\n canvasHeight += this.margin.top + this.margin.bottom;\n // TODO this should take into account calculateSize\n domWidth += this.margin.left + this.margin.right;\n domHeight += this.margin.top + this.margin.bottom;\n this.view.style.left = -this.margin.left + \"px\";\n this.view.style.top = -this.margin.top + \"px\";\n } else {\n this.view.style.left = \"0px\";\n this.view.style.top = \"0px\";\n }\n this._width = Math.floor(canvasWidth * resolution);\n this._height = Math.floor(canvasHeight * resolution);\n this.view.width = this._width;\n this.view.style.width = domWidth + \"px\";\n this.view.height = this._height;\n this.view.style.height = domHeight + \"px\";\n }\n clear() {\n this.context.save();\n this.context.clearRect(0, 0, this._width, this._height);\n }\n}\n//# sourceMappingURL=CanvasRenderer.js.map","import { AnimationState } from \"./util/Animation\";\nimport { Container } from \"./render/Container\";\nimport { Text } from \"./render/Text\";\nimport { HorizontalLayout } from \"./render/HorizontalLayout\";\nimport { VerticalLayout } from \"./render/VerticalLayout\";\nimport { GridLayout } from \"./render/GridLayout\";\nimport { Disposer } from \"./util/Disposer\";\nimport { ResizeSensor } from \"./util/ResizeSensor\";\nimport { InterfaceColors } from \"./util/InterfaceColors\";\nimport { Graphics } from \"./render/Graphics\";\nimport { Rectangle } from \"./render/Rectangle\";\nimport { Tooltip } from \"./render/Tooltip\";\nimport { NumberFormatter } from \"./util/NumberFormatter\";\nimport { DateFormatter } from \"./util/DateFormatter\";\nimport { DurationFormatter } from \"./util/DurationFormatter\";\nimport { Language } from \"./util/Language\";\nimport { EventDispatcher } from \"./util/EventDispatcher\";\nimport { DefaultTheme } from \"../themes/DefaultTheme\";\nimport { CanvasRenderer } from \"./render/backend/CanvasRenderer\";\nimport { p100, percent } from \"./util/Percent\";\nimport { color } from \"./util/Color\";\nimport { populateString } from \"./util/PopulateString\";\nimport { registry } from \"./Registry\";\nimport * as $order from \"./util/Order\";\nimport * as $array from \"./util/Array\";\nimport * as $object from \"./util/Object\";\nimport * as $utils from \"./util/Utils\";\nimport * as $type from \"./util/Type\";\nimport en from \"../../locales/en\";\nfunction rAF(fps, callback) {\n if (fps == null) {\n requestAnimationFrame(callback);\n } else {\n setTimeout(() => {\n requestAnimationFrame(callback);\n }, 1000 / fps);\n }\n}\n// TODO implement Disposer\n/**\r\n * Root element of the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/#Root_element} for more info\r\n */\nexport class Root {\n constructor(id) {\n let settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let isReal = arguments.length > 2 ? arguments[2] : undefined;\n /**\r\n * A reference to original chart container (div element).\r\n */\n Object.defineProperty(this, \"dom\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_inner\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_settings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_isDirtyParents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_isDirtyAnimation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dirtyParents\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dirtyBounds\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_dirtyPositions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_ticker\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"_tickers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_updateTick\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n /**\r\n * Root's event dispatcher.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/events/} for more info\r\n */\n Object.defineProperty(this, \"events\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new EventDispatcher()\n });\n /**\r\n * @ignore\r\n * @todo needs description\r\n */\n Object.defineProperty(this, \"animationTime\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n Object.defineProperty(this, \"_animations\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_renderer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_rootContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Main content container.\r\n */\n Object.defineProperty(this, \"container\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A [[Container]] used to display tooltips in.\r\n */\n Object.defineProperty(this, \"tooltipContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipContainerSettings\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltip\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // Locale-related\n /**\r\n * @ignore\r\n */\n Object.defineProperty(this, \"language\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Language.new(this, {})\n });\n /**\r\n * Locale used by the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/locales/}\r\n */\n Object.defineProperty(this, \"locale\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: en\n });\n // Date-time related\n /**\r\n * Use UTC when formatting date/time.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/#utc-and-time-zones} for more info\r\n */\n Object.defineProperty(this, \"utc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * If set, will format date/time in specific time zone.\r\n *\r\n * The value should be named time zone, e.g.:\r\n * `\"America/Vancouver\"`, `\"Australia/Sydney\"`, `\"UTC\"`.\r\n *\r\n * NOTE: Using time zone feature may noticeable affect performance of the\r\n * chart, especially with large data sets, since every single date will need\r\n * to be recalculated.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#time-zone} for more info\r\n * @since 5.1.0\r\n */\n Object.defineProperty(this, \"timezone\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * The maximum FPS that the Root will run at.\r\n *\r\n * If `undefined` it will run at the highest FPS.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Performance} for more info\r\n */\n Object.defineProperty(this, \"fps\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Number formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/} for more info\r\n */\n Object.defineProperty(this, \"numberFormatter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: NumberFormatter.new(this, {})\n });\n /**\r\n * Date/time formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\n Object.defineProperty(this, \"dateFormatter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: DateFormatter.new(this, {})\n });\n /**\r\n * Duration formatter.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/formatters/formatting-dates/} for more info\r\n */\n Object.defineProperty(this, \"durationFormatter\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: DurationFormatter.new(this, {})\n });\n // Accessibility\n /**\r\n * Global tab index for using for the whole chart\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n */\n Object.defineProperty(this, \"tabindex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n //@todo maybe make this better\n Object.defineProperty(this, \"_tabindexes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_a11yD\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_focusElementDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_focusElementContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_focusedSprite\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_isShift\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_keyboardDragPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipElementContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_readerAlertElement\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_logo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipDiv\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Used for dynamically-created CSS and JavaScript with strict source policies.\r\n */\n Object.defineProperty(this, \"nonce\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * Special color set to be used for various controls.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Interface_colors} for more info\r\n */\n Object.defineProperty(this, \"interfaceColors\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * An instance of vertical layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\n Object.defineProperty(this, \"verticalLayout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: VerticalLayout.new(this, {})\n });\n /**\r\n * An instance of horizontal layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default HorizontalLayout.new()\r\n */\n Object.defineProperty(this, \"horizontalLayout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: HorizontalLayout.new(this, {})\n });\n /**\r\n * An instance of grid layout object that can be used to set `layout` setting\r\n * of a [[Container]].\r\n *\r\n * @default VerticalLayout.new()\r\n */\n Object.defineProperty(this, \"gridLayout\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: GridLayout.new(this, {})\n });\n Object.defineProperty(this, \"_paused\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * Indicates whether chart should resized automatically when parent container\r\n * width and/or height changes.\r\n *\r\n * If disabled (`autoResize = false`) you can make the chart resize manually\r\n * by calling root element's `resize()` method.\r\n */\n Object.defineProperty(this, \"autoResize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"_fontHash\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"\"\n });\n Object.defineProperty(this, \"_isDisposed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_disposers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_resizeSensorDisposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltips\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_htmlElementContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_htmlEnabledContainers\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n if (!isReal) {\n throw new Error(\"You cannot use `new Class()`, instead use `Class.new()`\");\n }\n this._settings = settings;\n if (settings.accessible == false) {\n this._a11yD = true;\n }\n if (settings.useSafeResolution == null) {\n settings.useSafeResolution = true;\n }\n let resolution;\n if (settings.useSafeResolution) {\n resolution = $utils.getSafeResolution();\n }\n this._renderer = new CanvasRenderer(resolution);\n let dom;\n if (id instanceof HTMLElement) {\n dom = id;\n } else {\n dom = document.getElementById(id);\n }\n $array.each(registry.rootElements, root => {\n if (root.dom === dom) {\n throw new Error(\"You cannot have multiple Roots on the same DOM node\");\n }\n });\n this.interfaceColors = InterfaceColors.new(this, {});\n if (dom === null) {\n throw new Error(\"Could not find HTML element with id `\" + id + \"`\");\n }\n this.dom = dom;\n let inner = document.createElement(\"div\");\n inner.style.position = \"relative\";\n inner.style.width = \"100%\";\n inner.style.height = \"100%\";\n dom.appendChild(inner);\n const tooltipContainerBounds = settings.tooltipContainerBounds;\n if (tooltipContainerBounds) {\n this._tooltipContainerSettings = tooltipContainerBounds;\n }\n this._inner = inner;\n this._updateComputedStyles();\n registry.rootElements.push(this);\n }\n static new(id, settings) {\n const root = new Root(id, settings, true);\n root._init();\n return root;\n }\n moveDOM(id) {\n let dom;\n if (id instanceof HTMLElement) {\n dom = id;\n } else {\n dom = document.getElementById(id);\n }\n if (dom) {\n while (this.dom.childNodes.length > 0) {\n dom.appendChild(this.dom.childNodes[0]);\n }\n this.dom = dom;\n this._initResizeSensor();\n this.resize();\n }\n }\n _handleLogo() {\n if (this._logo) {\n const w = this.dom.offsetWidth;\n const h = this.dom.offsetHeight;\n if (w <= 150 || h <= 60) {\n this._logo.hide();\n } else {\n this._logo.show();\n }\n }\n }\n _showBranding() {\n if (!this._logo) {\n const logo = this.tooltipContainer.children.push(Container.new(this, {\n interactive: true,\n interactiveChildren: false,\n position: \"absolute\",\n setStateOnChildren: true,\n paddingTop: 9,\n paddingRight: 9,\n paddingBottom: 9,\n paddingLeft: 9,\n scale: .6,\n y: percent(100),\n centerY: p100,\n tooltipText: \"Created using amCharts 5\",\n tooltipX: p100,\n cursorOverStyle: \"pointer\",\n background: Rectangle.new(this, {\n fill: color(0x474758),\n fillOpacity: 0,\n tooltipY: 5\n })\n }));\n const tooltip = Tooltip.new(this, {\n pointerOrientation: \"horizontal\",\n paddingTop: 4,\n paddingRight: 7,\n paddingBottom: 4,\n paddingLeft: 7\n });\n tooltip.label.setAll({\n fontSize: 12\n });\n tooltip.get(\"background\").setAll({\n fill: this.interfaceColors.get(\"background\"),\n stroke: this.interfaceColors.get(\"grid\"),\n strokeOpacity: 0.3\n });\n logo.set(\"tooltip\", tooltip);\n logo.events.on(\"click\", () => {\n window.open(\"https://www.amcharts.com/\", \"_blank\");\n });\n logo.states.create(\"hover\", {});\n const m = logo.children.push(Graphics.new(this, {\n stroke: color(0xcccccc),\n strokeWidth: 3,\n svgPath: \"M5 25 L13 25h13.6c3.4 0 6 0 10.3-4.3s5.2-12 8.6-12c3.4 0 4.3 8.6 7.7 8.6M83.4 25H79.8c-3.4 0-6 0-10.3-4.3s-5.2-12-8.6-12-4.3 8.6-7.7 8.6\"\n }));\n m.states.create(\"hover\", {\n stroke: color(0x3CABFF)\n });\n const a = logo.children.push(Graphics.new(this, {\n stroke: color(0x888888),\n strokeWidth: 3,\n svgPath: \"M83.4 25h-31C37 25 39.5 4.4 28.4 4.4S18.9 24.2 4.3 25H0\"\n }));\n a.states.create(\"hover\", {\n stroke: color(0x474758)\n });\n //logo.set(\"tooltip\", this._tooltip);\n //logo.setPrivate(\"tooltipTarget\", logo.get(\"background\"));\n this._logo = logo;\n this._handleLogo();\n }\n }\n _getRealSize() {\n return this.dom.getBoundingClientRect();\n }\n _getCalculatedSize(rect) {\n if (this._settings.calculateSize) {\n return this._settings.calculateSize(rect);\n } else {\n return {\n width: rect.width,\n height: rect.height\n };\n }\n }\n _init() {\n const settings = this._settings;\n if (settings.accessible !== false) {\n if (settings.focusable) {\n this._inner.setAttribute(\"focusable\", \"true\");\n this._inner.setAttribute(\"tabindex\", this.tabindex + \"\");\n }\n if (settings.ariaLabel) {\n this._inner.setAttribute(\"aria-label\", settings.ariaLabel);\n }\n if (settings.role) {\n this._inner.setAttribute(\"role\", settings.role);\n }\n }\n const renderer = this._renderer;\n const rect = this._getRealSize();\n const size = this._getCalculatedSize(rect);\n const width = Math.floor(size.width);\n const height = Math.floor(size.height);\n const realWidth = Math.floor(rect.width);\n const realHeight = Math.floor(rect.height);\n const rootContainer = Container.new(this, {\n visible: true,\n width: width,\n height: height\n });\n this._rootContainer = rootContainer;\n this._rootContainer._defaultThemes.push(DefaultTheme.new(this));\n const container = rootContainer.children.push(Container.new(this, {\n visible: true,\n width: p100,\n height: p100\n }));\n this.container = container;\n renderer.resize(realWidth, realHeight, width, height);\n //@todo: better appendChild - refer\n this._inner.appendChild(renderer.view);\n // TODO: TMP TMP TMP for testing only, remove\n //renderer.debugGhostView = true;\n this._initResizeSensor();\n // HTML content holder\n const htmlElementContainer = document.createElement(\"div\");\n this._htmlElementContainer = htmlElementContainer;\n htmlElementContainer.className = \"am5-html-container\";\n htmlElementContainer.style.position = \"absolute\";\n htmlElementContainer.style.pointerEvents = \"none\";\n if (!this._tooltipContainerSettings) {\n htmlElementContainer.style.overflow = \"hidden\";\n }\n this._inner.appendChild(htmlElementContainer);\n if (this._a11yD !== true) {\n // Create element which is used to make announcements to screen reader\n const readerAlertElement = document.createElement(\"div\");\n readerAlertElement.className = \"am5-reader-container\";\n readerAlertElement.setAttribute(\"role\", \"alert\");\n // readerAlertElement.style.zIndex = \"-100000\";\n // readerAlertElement.style.opacity = \"0\";\n // readerAlertElement.style.top = \"0\";\n readerAlertElement.style.position = \"absolute\";\n readerAlertElement.style.width = \"1px\";\n readerAlertElement.style.height = \"1px\";\n readerAlertElement.style.overflow = \"hidden\";\n readerAlertElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\n this._readerAlertElement = readerAlertElement;\n this._inner.appendChild(this._readerAlertElement);\n const focusElementContainer = document.createElement(\"div\");\n focusElementContainer.className = \"am5-focus-container\";\n focusElementContainer.style.position = \"absolute\";\n focusElementContainer.style.pointerEvents = \"none\";\n focusElementContainer.style.top = \"0px\";\n focusElementContainer.style.left = \"0px\";\n focusElementContainer.style.overflow = \"hidden\";\n focusElementContainer.style.width = width + \"px\";\n focusElementContainer.style.height = height + \"px\";\n focusElementContainer.setAttribute(\"role\", \"graphics-document\");\n $utils.setInteractive(focusElementContainer, false);\n this._focusElementContainer = focusElementContainer;\n this._inner.appendChild(this._focusElementContainer);\n const tooltipElementContainer = document.createElement(\"div\");\n this._tooltipElementContainer = tooltipElementContainer;\n tooltipElementContainer.className = \"am5-tooltip-container\";\n this._inner.appendChild(tooltipElementContainer);\n // Add keyboard events for accessibility, e.g. simulating drag with arrow\n // keys and click with ENTER\n if ($utils.supports(\"keyboardevents\")) {\n this._disposers.push($utils.addEventListener(window, \"keydown\", ev => {\n const eventKey = $utils.getEventKey(ev);\n if (eventKey == \"Shift\") {\n this._isShift = true;\n } else if (eventKey == \"Tab\") {\n this._isShift = ev.shiftKey;\n }\n }));\n this._disposers.push($utils.addEventListener(window, \"keyup\", ev => {\n const eventKey = $utils.getEventKey(ev);\n if (eventKey == \"Shift\") {\n this._isShift = false;\n }\n }));\n this._disposers.push($utils.addEventListener(focusElementContainer, \"click\", () => {\n // Some screen readers convert ENTER (and some SPACE) press whil on\n // focused element to a \"click\" event, preventing actual \"keydown\"\n // event from firing. We're using this \"click\" event to still\n // generate internal click events.\n const focusedSprite = this._focusedSprite;\n if (focusedSprite) {\n const downEvent = renderer.getEvent(new MouseEvent(\"click\"));\n focusedSprite.events.dispatch(\"click\", {\n type: \"click\",\n originalEvent: downEvent.event,\n point: downEvent.point,\n simulated: true,\n target: focusedSprite\n });\n }\n }));\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keydown\", ev => {\n const focusedSprite = this._focusedSprite;\n if (focusedSprite) {\n if (ev.key == \"Escape\") {\n // ESC pressed - lose current focus\n $utils.blur();\n this._focusedSprite = undefined;\n }\n let dragOffsetX = 0;\n let dragOffsetY = 0;\n // TODO: figure out if using bogus MouseEvent is fine, or it will\n // fail on some platforms\n const eventKey = $utils.getEventKey(ev);\n switch (eventKey) {\n case \"Enter\":\n case \" \":\n if (eventKey == \" \" && focusedSprite.get(\"role\") != \"checkbox\") {\n return;\n }\n ev.preventDefault();\n const downEvent = renderer.getEvent(new MouseEvent(\"click\"));\n focusedSprite.events.dispatch(\"click\", {\n type: \"click\",\n originalEvent: downEvent.event,\n point: downEvent.point,\n simulated: true,\n target: focusedSprite\n });\n return;\n case \"ArrowLeft\":\n dragOffsetX = -6;\n break;\n case \"ArrowRight\":\n dragOffsetX = 6;\n break;\n case \"ArrowUp\":\n dragOffsetY = -6;\n break;\n case \"ArrowDown\":\n dragOffsetY = 6;\n break;\n default:\n return;\n }\n if (dragOffsetX != 0 || dragOffsetY != 0) {\n ev.preventDefault();\n if (!focusedSprite.isDragging()) {\n // Start dragging\n this._keyboardDragPoint = {\n x: 0,\n y: 0\n };\n const downEvent = renderer.getEvent(new MouseEvent(\"mousedown\", {\n clientX: 0,\n clientY: 0\n }));\n if (focusedSprite.events.isEnabled(\"pointerdown\")) {\n focusedSprite.events.dispatch(\"pointerdown\", {\n type: \"pointerdown\",\n originalEvent: downEvent.event,\n point: downEvent.point,\n simulated: true,\n target: focusedSprite\n });\n }\n } else {\n // Move focus marker\n //this._positionFocusElement(focusedSprite);\n }\n // Move incrementally\n const dragPoint = this._keyboardDragPoint;\n dragPoint.x += dragOffsetX;\n dragPoint.y += dragOffsetY;\n const moveEvent = renderer.getEvent(new MouseEvent(\"mousemove\", {\n clientX: dragPoint.x,\n clientY: dragPoint.y\n }), false);\n if (focusedSprite.events.isEnabled(\"globalpointermove\")) {\n focusedSprite.events.dispatch(\"globalpointermove\", {\n type: \"globalpointermove\",\n originalEvent: moveEvent.event,\n point: moveEvent.point,\n simulated: true,\n target: focusedSprite\n });\n }\n }\n }\n }));\n this._disposers.push($utils.addEventListener(focusElementContainer, \"keyup\", ev => {\n if (this._focusedSprite) {\n const focusedSprite = this._focusedSprite;\n const eventKey = $utils.getEventKey(ev);\n switch (eventKey) {\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowTop\":\n case \"ArrowDown\":\n if (focusedSprite.isDragging()) {\n // Simulate drag stop\n const dragPoint = this._keyboardDragPoint;\n const upEvent = renderer.getEvent(new MouseEvent(\"mouseup\", {\n clientX: dragPoint.x,\n clientY: dragPoint.y\n }));\n if (focusedSprite.events.isEnabled(\"globalpointerup\")) {\n focusedSprite.events.dispatch(\"globalpointerup\", {\n type: \"globalpointerup\",\n originalEvent: upEvent.event,\n point: upEvent.point,\n simulated: true,\n target: focusedSprite\n });\n }\n //this._positionFocusElement(focusedSprite);\n this._keyboardDragPoint = undefined;\n // @todo dispatch mouseup event instead of calling dragStop?\n // this._dispatchEvent(\"globalpointerup\", target, upEvent);\n return;\n } else if (focusedSprite.get(\"focusableGroup\")) {\n // Find next item in focusable group\n const group = focusedSprite.get(\"focusableGroup\");\n const items = this._tabindexes.filter(item => {\n return item.get(\"focusableGroup\") == group && item.getPrivate(\"focusable\") !== false && item.isVisibleDeep() ? true : false;\n });\n let index = items.indexOf(focusedSprite);\n const lastIndex = items.length - 1;\n index += eventKey == \"ArrowRight\" || eventKey == \"ArrowDown\" ? 1 : -1;\n if (index < 0) {\n index = lastIndex;\n } else if (index > lastIndex) {\n index = 0;\n }\n $utils.focus(items[index].getPrivate(\"focusElement\").dom);\n }\n break;\n }\n }\n }));\n }\n }\n this._startTicker();\n this.setThemes([]);\n this._addTooltip();\n if (!this._hasLicense()) {\n this._showBranding();\n }\n }\n _initResizeSensor() {\n if (this._resizeSensorDisposer) {\n this._resizeSensorDisposer.dispose();\n }\n this._resizeSensorDisposer = new ResizeSensor(this.dom, () => {\n if (this.autoResize) {\n this.resize();\n }\n });\n this._disposers.push(this._resizeSensorDisposer);\n }\n /**\r\n * If automatic resizing of char is disabled (`root.autoResize = false`), it\r\n * can be resized manually by calling this method.\r\n */\n resize() {\n const rect = this._getRealSize();\n const size = this._getCalculatedSize(rect);\n const w = Math.floor(size.width);\n const h = Math.floor(size.height);\n if (w > 0 && h > 0) {\n const realWidth = Math.floor(rect.width);\n const realHeight = Math.floor(rect.height);\n const htmlElementContainer = this._htmlElementContainer;\n htmlElementContainer.style.width = w + \"px\";\n htmlElementContainer.style.height = h + \"px\";\n if (this._a11yD !== true) {\n const focusElementContainer = this._focusElementContainer;\n focusElementContainer.style.width = w + \"px\";\n focusElementContainer.style.height = h + \"px\";\n }\n this._renderer.resize(realWidth, realHeight, w, h);\n const rootContainer = this._rootContainer;\n rootContainer.setPrivate(\"width\", w);\n rootContainer.setPrivate(\"height\", h);\n this._render();\n this._handleLogo();\n }\n }\n _render() {\n this._renderer.render(this._rootContainer._display);\n if (this._focusElementDirty) {\n this._updateCurrentFocus();\n this._focusElementDirty = false;\n }\n }\n _runTickers(currentTime) {\n $array.each(this._tickers, f => {\n f(currentTime);\n });\n }\n _runAnimations(currentTime) {\n let running = 0;\n $array.keepIf(this._animations, animation => {\n const state = animation._runAnimation(currentTime);\n if (state === AnimationState.Stopped) {\n return false;\n } else if (state === AnimationState.Playing) {\n ++running;\n return true;\n } else {\n return true;\n }\n });\n this._isDirtyAnimation = false;\n return running === 0;\n }\n _runDirties() {\n //console.log(\"tick **************************************************************\");\n let allParents = {};\n while (this._isDirtyParents) {\n // This must be before calling _prepareChildren\n this._isDirtyParents = false;\n $object.keys(this._dirtyParents).forEach(key => {\n const parent = this._dirtyParents[key];\n delete this._dirtyParents[key];\n if (!parent.isDisposed()) {\n allParents[parent.uid] = parent;\n parent._prepareChildren();\n }\n });\n }\n $object.keys(allParents).forEach(key => {\n allParents[key]._updateChildren();\n });\n const objects = [];\n //\t\tconsole.log(\"_beforeChanged\")\n $object.keys(this._dirty).forEach(key => {\n const entity = this._dirty[key];\n if (entity.isDisposed()) {\n delete this._dirty[entity.uid];\n } else {\n objects.push(entity);\n entity._beforeChanged();\n }\n });\n //\t\tconsole.log(\"_changed\")\n objects.forEach(entity => {\n entity._changed();\n delete this._dirty[entity.uid];\n entity._clearDirty();\n });\n this._isDirty = false;\n const depths = {};\n const bounds = [];\n $object.keys(this._dirtyBounds).forEach(key => {\n const entity = this._dirtyBounds[key];\n delete this._dirtyBounds[key];\n if (!entity.isDisposed()) {\n depths[entity.uid] = entity.depth();\n bounds.push(entity);\n }\n });\n this._positionHTMLElements();\n // High depth -> low depth\n bounds.sort((x, y) => {\n return $order.compare(depths[y.uid], depths[x.uid]);\n });\n //\t\tconsole.log(\"_updateBounds\")\n bounds.forEach(entity => {\n entity._updateBounds();\n });\n //\t\tconsole.log(\"_updatePosition\")\n const dirtyPositions = this._dirtyPositions;\n $object.keys(dirtyPositions).forEach(key => {\n const sprite = dirtyPositions[key];\n delete dirtyPositions[key];\n if (!sprite.isDisposed()) {\n sprite._updatePosition();\n }\n });\n //\t\tconsole.log(\"_afterChanged\")\n objects.forEach(entity => {\n entity._afterChanged();\n });\n }\n _renderFrame(currentTime) {\n if (this._updateTick) {\n if (this.events.isEnabled(\"framestarted\")) {\n this.events.dispatch(\"framestarted\", {\n type: \"framestarted\",\n target: this,\n timestamp: currentTime\n });\n }\n this._checkComputedStyles();\n this._runTickers(currentTime);\n const animationDone = this._runAnimations(currentTime);\n this._runDirties();\n this._render();\n this._renderer.resetImageArray();\n this._positionHTMLElements();\n if (this.events.isEnabled(\"frameended\")) {\n this.events.dispatch(\"frameended\", {\n type: \"frameended\",\n target: this,\n timestamp: currentTime\n });\n }\n return this._tickers.length === 0 && animationDone && !this._isDirtyAnimation && !this._isDirty;\n } else {\n return true;\n }\n }\n _runTicker(currentTime, now) {\n if (!this.isDisposed()) {\n this.animationTime = currentTime;\n const done = this._renderFrame(currentTime);\n // No more work to do\n if (done) {\n this._ticker = null;\n this.animationTime = null;\n } else {\n if (!this._paused) {\n if (now) {\n this._ticker;\n } else {\n rAF(this.fps, this._ticker);\n }\n }\n }\n }\n }\n _runTickerNow() {\n let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10000;\n if (!this.isDisposed()) {\n const endTime = performance.now() + timeout;\n for (;;) {\n const currentTime = performance.now();\n if (currentTime >= endTime) {\n this.animationTime = null;\n break;\n }\n this.animationTime = currentTime;\n const done = this._renderFrame(currentTime);\n if (done) {\n this.animationTime = null;\n break;\n }\n }\n }\n }\n _startTicker() {\n if (this._ticker === null) {\n this.animationTime = null;\n this._ticker = currentTime => {\n this._runTicker(currentTime);\n };\n rAF(this.fps, this._ticker);\n }\n }\n /**\r\n * Returns whether the root is updating or not.\r\n */\n get updateTick() {\n return this._updateTick;\n }\n /**\r\n * Enables or disables the root updating.\r\n */\n set updateTick(value) {\n this._updateTick = value;\n if (value) {\n this._startTicker();\n }\n }\n _addDirtyEntity(entity) {\n this._isDirty = true;\n if (this._dirty[entity.uid] === undefined) {\n this._dirty[entity.uid] = entity;\n }\n this._startTicker();\n }\n _addDirtyParent(parent) {\n this._isDirty = true;\n this._isDirtyParents = true;\n if (this._dirtyParents[parent.uid] === undefined) {\n this._dirtyParents[parent.uid] = parent;\n }\n this._startTicker();\n }\n _addDirtyBounds(entity) {\n this._isDirty = true;\n if (this._dirtyBounds[entity.uid] === undefined) {\n this._dirtyBounds[entity.uid] = entity;\n }\n this._startTicker();\n }\n _addDirtyPosition(sprite) {\n this._isDirty = true;\n if (this._dirtyPositions[sprite.uid] === undefined) {\n this._dirtyPositions[sprite.uid] = sprite;\n }\n this._startTicker();\n }\n _addAnimation(animation) {\n this._isDirtyAnimation = true;\n // TODO use numeric id instead\n if (this._animations.indexOf(animation) === -1) {\n this._animations.push(animation);\n }\n this._startTicker();\n }\n _markDirty() {\n this._isDirty = true;\n }\n _markDirtyRedraw() {\n this.events.once(\"frameended\", () => {\n this._isDirty = true;\n this._startTicker();\n });\n }\n eachFrame(f) {\n this._tickers.push(f);\n this._startTicker();\n return new Disposer(() => {\n $array.removeFirst(this._tickers, f);\n });\n }\n markDirtyGlobal(container) {\n if (!container) {\n container = this.container;\n }\n container.walkChildren(child => {\n if (child instanceof Container) {\n this.markDirtyGlobal(child);\n }\n child.markDirty();\n child.markDirtyBounds();\n });\n }\n /**\r\n * Returns width of the target container, in pixels.\r\n *\r\n * @return Width\r\n */\n width() {\n // TODO make this more efficient, maybe just return the renderer's width ?\n return Math.floor(this._getCalculatedSize(this._getRealSize()).width);\n }\n /**\r\n * Returns height of the target container, in pixels.\r\n *\r\n * @return Height\r\n */\n height() {\n // TODO make this more efficient, maybe just return the renderer's height ?\n return Math.floor(this._getCalculatedSize(this._getRealSize()).height);\n }\n /**\r\n * Disposes root and all the content in it.\r\n */\n dispose() {\n if (!this._isDisposed) {\n this._isDisposed = true;\n this._rootContainer.dispose();\n this._renderer.dispose();\n this.horizontalLayout.dispose();\n this.verticalLayout.dispose();\n this.interfaceColors.dispose();\n $array.each(this._disposers, x => {\n x.dispose();\n });\n if (this._inner) {\n $utils.removeElement(this._inner);\n }\n $array.remove(registry.rootElements, this);\n }\n }\n /**\r\n * Returns `true` if root element is disposed.\r\n *\r\n * @return Disposed?\r\n */\n isDisposed() {\n return this._isDisposed;\n }\n /**\r\n * Triggers screen reader read out a message.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/accessibility/} for more info\r\n * @param text Alert text\r\n */\n readerAlert(text) {\n if (this._a11yD !== true) {\n this._readerAlertElement.innerHTML = $utils.stripTags(text);\n }\n }\n /**\r\n * Sets themes to be used for the chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/themes/} for more info\r\n * @param themes A list of themes\r\n */\n setThemes(themes) {\n this._rootContainer.set(\"themes\", themes);\n // otherwise new themes are not applied\n const tooltipContainer = this.tooltipContainer;\n if (tooltipContainer) {\n tooltipContainer._applyThemes();\n }\n // @todo review this\n const interfaceColors = this.interfaceColors;\n if (interfaceColors) {\n interfaceColors._applyThemes();\n }\n }\n _addTooltip() {\n if (!this.tooltipContainer) {\n const tooltipContainerSettings = this._tooltipContainerSettings;\n const tooltipContainer = this._rootContainer.children.push(Container.new(this, {\n position: \"absolute\",\n isMeasured: false,\n width: p100,\n height: p100,\n layer: tooltipContainerSettings ? 35 : 30,\n layerMargin: tooltipContainerSettings ? tooltipContainerSettings : undefined\n }));\n this.tooltipContainer = tooltipContainer;\n const tooltip = Tooltip.new(this, {});\n this.container.set(\"tooltip\", tooltip);\n tooltip.hide(0);\n this._tooltip = tooltip;\n }\n }\n /**\r\n * Accesibility\r\n */\n _registerTabindexOrder(target) {\n if (this._a11yD == true) {\n return;\n }\n if (target.get(\"focusable\")) {\n $array.pushOne(this._tabindexes, target);\n } else {\n $array.remove(this._tabindexes, target);\n }\n this._invalidateTabindexes();\n }\n _unregisterTabindexOrder(target) {\n if (this._a11yD == true) {\n return;\n }\n $array.remove(this._tabindexes, target);\n this._invalidateTabindexes();\n }\n _invalidateTabindexes() {\n if (this._a11yD == true) {\n return;\n }\n this._tabindexes.sort((a, b) => {\n const aindex = a.get(\"tabindexOrder\", 0);\n const bindex = b.get(\"tabindexOrder\", 0);\n if (aindex == bindex) {\n return 0;\n } else if (aindex > bindex) {\n return 1;\n } else {\n return -1;\n }\n });\n const groups = [];\n $array.each(this._tabindexes, (item, index) => {\n if (!item.getPrivate(\"focusElement\")) {\n this._makeFocusElement(index, item);\n } else {\n this._moveFocusElement(index, item);\n }\n const group = item.get(\"focusableGroup\");\n if (group && item.getPrivate(\"focusable\") !== false) {\n if (groups.indexOf(group) !== -1) {\n // Non-first element in the group, make it not directly focusable\n item.getPrivate(\"focusElement\").dom.setAttribute(\"tabindex\", \"-1\");\n } else {\n groups.push(group);\n }\n }\n });\n }\n _updateCurrentFocus() {\n if (this._a11yD == true) {\n return;\n }\n if (this._focusedSprite) {\n this._decorateFocusElement(this._focusedSprite);\n this._positionFocusElement(this._focusedSprite);\n }\n }\n _decorateFocusElement(target, focusElement) {\n if (this._a11yD == true) {\n return;\n }\n // Decorate with proper accessibility attributes\n if (!focusElement) {\n focusElement = target.getPrivate(\"focusElement\").dom;\n }\n if (!focusElement) {\n return;\n }\n const role = target.get(\"role\");\n if (role) {\n focusElement.setAttribute(\"role\", role);\n } else {\n focusElement.removeAttribute(\"role\");\n }\n const ariaLabel = target.get(\"ariaLabel\");\n if (ariaLabel) {\n const label = populateString(target, ariaLabel);\n focusElement.setAttribute(\"aria-label\", label);\n } else {\n focusElement.removeAttribute(\"aria-label\");\n }\n const ariaLive = target.get(\"ariaLive\");\n if (ariaLive) {\n focusElement.setAttribute(\"aria-live\", ariaLive);\n } else {\n focusElement.removeAttribute(\"aria-live\");\n }\n const ariaChecked = target.get(\"ariaChecked\");\n if (ariaChecked != null && role && [\"checkbox\", \"option\", \"radio\", \"menuitemcheckbox\", \"menuitemradio\", \"treeitem\"].indexOf(role) !== -1) {\n focusElement.setAttribute(\"aria-checked\", ariaChecked ? \"true\" : \"false\");\n } else {\n focusElement.removeAttribute(\"aria-checked\");\n }\n const ariaCurrent = target.get(\"ariaCurrent\");\n if (ariaCurrent != null) {\n focusElement.setAttribute(\"aria-current\", ariaCurrent);\n } else {\n focusElement.removeAttribute(\"aria-current\");\n }\n const ariaSelected = target.get(\"ariaSelected\");\n if (ariaSelected != null && role && [\"gridcell\", \"option\", \"row\", \"tab\", \"columnheader\", \"rowheader\", \"treeitem\"].indexOf(role) !== -1) {\n focusElement.setAttribute(\"aria-selected\", ariaSelected ? \"true\" : \"false\");\n } else {\n focusElement.removeAttribute(\"aria-selected\");\n }\n if (target.get(\"ariaHidden\")) {\n focusElement.setAttribute(\"aria-hidden\", \"true\");\n } else {\n focusElement.removeAttribute(\"aria-hidden\");\n }\n const ariaOrientation = target.get(\"ariaOrientation\");\n if (ariaOrientation) {\n focusElement.setAttribute(\"aria-orientation\", ariaOrientation);\n } else {\n focusElement.removeAttribute(\"aria-orientation\");\n }\n const ariaValueNow = target.get(\"ariaValueNow\");\n if (ariaValueNow) {\n focusElement.setAttribute(\"aria-valuenow\", ariaValueNow);\n } else {\n focusElement.removeAttribute(\"aria-valuenow\");\n }\n const ariaValueMin = target.get(\"ariaValueMin\");\n if (ariaValueMin) {\n focusElement.setAttribute(\"aria-valuemin\", ariaValueMin);\n } else {\n focusElement.removeAttribute(\"aria-valuemin\");\n }\n const ariaValueMax = target.get(\"ariaValueMax\");\n if (ariaValueMax) {\n focusElement.setAttribute(\"aria-valuemax\", ariaValueMax);\n } else {\n focusElement.removeAttribute(\"aria-valuemax\");\n }\n const ariaValueText = target.get(\"ariaValueText\");\n if (ariaValueText) {\n focusElement.setAttribute(\"aria-valuetext\", ariaValueText);\n } else {\n focusElement.removeAttribute(\"aria-valuetext\");\n }\n const ariaControls = target.get(\"ariaControls\");\n if (ariaControls) {\n focusElement.setAttribute(\"aria-controls\", ariaControls);\n } else {\n focusElement.removeAttribute(\"aria-controls\");\n }\n if (target.get(\"visible\") && target.get(\"opacity\") !== 0 && target.get(\"role\") != \"tooltip\" && !target.isHidden() && target.getPrivate(\"focusable\") !== false) {\n if (focusElement.getAttribute(\"tabindex\") != \"-1\") {\n focusElement.setAttribute(\"tabindex\", \"\" + this.tabindex);\n }\n focusElement.removeAttribute(\"aria-hidden\");\n } else {\n focusElement.removeAttribute(\"tabindex\");\n focusElement.setAttribute(\"aria-hidden\", \"true\");\n }\n }\n _makeFocusElement(index, target) {\n if (target.getPrivate(\"focusElement\") || this._a11yD == true) {\n return;\n }\n // Init\n const focusElement = document.createElement(\"div\");\n if (target.get(\"role\") != \"tooltip\") {\n focusElement.tabIndex = this.tabindex;\n }\n focusElement.style.position = \"absolute\";\n $utils.setInteractive(focusElement, false);\n const disposers = [];\n target.setPrivate(\"focusElement\", {\n dom: focusElement,\n disposers\n });\n this._decorateFocusElement(target);\n disposers.push($utils.addEventListener(focusElement, \"focus\", ev => {\n this._handleFocus(ev);\n }));\n disposers.push($utils.addEventListener(focusElement, \"blur\", ev => {\n this._handleBlur(ev);\n }));\n this._moveFocusElement(index, target);\n }\n _removeFocusElement(target) {\n if (this._a11yD == true) {\n return;\n }\n $array.remove(this._tabindexes, target);\n const focusElement = target.getPrivate(\"focusElement\");\n if (focusElement) {\n const container = this._focusElementContainer;\n container.removeChild(focusElement.dom);\n $array.each(focusElement.disposers, x => {\n x.dispose();\n });\n }\n }\n _hideFocusElement(target) {\n if (this._a11yD == true) {\n return;\n }\n const focusElement = target.getPrivate(\"focusElement\");\n focusElement.dom.style.display = \"none\";\n }\n _moveFocusElement(index, target) {\n if (this._a11yD == true) {\n return;\n }\n // Get container\n const container = this._focusElementContainer;\n const focusElement = target.getPrivate(\"focusElement\").dom;\n if (focusElement === this._focusElementContainer.children[index]) {\n // Nothing to do\n return;\n }\n const next = this._focusElementContainer.children[index + 1];\n if (next) {\n container.insertBefore(focusElement, next);\n } else {\n container.append(focusElement);\n }\n }\n _positionFocusElement(target) {\n if (this._a11yD == true || target == undefined) {\n return;\n }\n const bounds = target.globalBounds();\n let width = bounds.right == bounds.left ? target.width() : bounds.right - bounds.left;\n let height = bounds.top == bounds.bottom ? target.height() : bounds.bottom - bounds.top;\n const padding = this._settings.focusPadding !== undefined ? this._settings.focusPadding : 2;\n let x = bounds.left - padding;\n let y = bounds.top - padding;\n if (width < 0) {\n x += width;\n width = Math.abs(width);\n }\n if (height < 0) {\n y += height;\n height = Math.abs(height);\n }\n const focusElement = target.getPrivate(\"focusElement\").dom;\n focusElement.style.top = y + \"px\";\n focusElement.style.left = x + \"px\";\n focusElement.style.width = width + padding * 2 + \"px\";\n focusElement.style.height = height + padding * 2 + \"px\";\n }\n _getSpriteByFocusElement(target) {\n let found;\n $array.eachContinue(this._tabindexes, (item, _index) => {\n if (item.getPrivate(\"focusElement\").dom === target) {\n found = item;\n return false;\n }\n return true;\n });\n return found;\n }\n _handleFocus(ev) {\n if (this._a11yD == true) {\n return;\n }\n // Get element\n //const focused = this._tabindexes[index];\n const focused = this._getSpriteByFocusElement(ev.target);\n if (!focused) {\n return;\n }\n // Jump over hidden elements\n if (!focused.isVisibleDeep()) {\n this._focusNext(ev.target, this._isShift ? -1 : 1);\n return;\n }\n // Size and position\n this._positionFocusElement(focused);\n //this._decorateFocusElement(focused);\n this._focusedSprite = focused;\n if (focused.events.isEnabled(\"focus\")) {\n focused.events.dispatch(\"focus\", {\n type: \"focus\",\n originalEvent: ev,\n target: focused\n });\n }\n }\n _focusNext(el, direction) {\n if (this._a11yD == true) {\n return;\n }\n const focusableElements = Array.from(document.querySelectorAll(['a[href]', 'area[href]', 'button:not([disabled])', 'details', 'input:not([disabled])', 'iframe:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', '[contentEditable=\"\"]', '[contentEditable=\"true\"]', '[contentEditable=\"TRUE\"]', '[tabindex]:not([tabindex^=\"-\"])'\n //':not([disabled])'\n ].join(',')));\n let index = focusableElements.indexOf(el) + direction;\n if (index < 0) {\n index = focusableElements.length - 1;\n } else if (index >= focusableElements.length) {\n index = 0;\n }\n focusableElements[index].focus();\n }\n _handleBlur(ev) {\n if (this._a11yD == true) {\n return;\n }\n const focused = this._focusedSprite;\n if (focused && !focused.isDisposed() && focused.events.isEnabled(\"blur\")) {\n focused.events.dispatch(\"blur\", {\n type: \"blur\",\n originalEvent: ev,\n target: focused\n });\n }\n this._focusedSprite = undefined;\n }\n /**\r\n * @ignore\r\n */\n updateTooltip(target) {\n if (this._a11yD == true) {\n return;\n }\n const text = $utils.stripTags(target._getText());\n let tooltipElement = target.getPrivate(\"tooltipElement\");\n if (target.get(\"role\") == \"tooltip\" && text != \"\") {\n if (!tooltipElement) {\n tooltipElement = this._makeTooltipElement(target);\n }\n if (tooltipElement.innerHTML != text) {\n tooltipElement.innerHTML = text;\n }\n tooltipElement.setAttribute(\"aria-hidden\", target.isVisibleDeep() ? \"false\" : \"true\");\n } else if (tooltipElement) {\n tooltipElement.remove();\n target.removePrivate(\"tooltipElement\");\n }\n }\n _makeTooltipElement(target) {\n const container = this._tooltipElementContainer;\n const tooltipElement = document.createElement(\"div\");\n tooltipElement.style.position = \"absolute\";\n tooltipElement.style.width = \"1px\";\n tooltipElement.style.height = \"1px\";\n tooltipElement.style.overflow = \"hidden\";\n tooltipElement.style.clip = \"rect(1px, 1px, 1px, 1px)\";\n $utils.setInteractive(tooltipElement, false);\n this._decorateFocusElement(target, tooltipElement);\n container.append(tooltipElement);\n target.setPrivate(\"tooltipElement\", tooltipElement);\n return tooltipElement;\n }\n _removeTooltipElement(target) {\n if (this._a11yD == true) {\n return;\n }\n const tooltipElement = target.getPrivate(\"tooltipElement\");\n if (tooltipElement) {\n const parent = tooltipElement.parentElement;\n if (parent) {\n parent.removeChild(tooltipElement);\n }\n }\n }\n _invalidateAccessibility(target) {\n if (this._a11yD == true) {\n return;\n }\n this._focusElementDirty = true;\n const focusElement = target.getPrivate(\"focusElement\");\n if (target.get(\"focusable\")) {\n if (focusElement) {\n this._decorateFocusElement(target);\n this._positionFocusElement(target);\n }\n // else {\n // \tthis._renderer._makeFocusElement(0, this);\n // }\n } else if (focusElement) {\n this._removeFocusElement(target);\n }\n //this.updateCurrentFocus();\n }\n /**\r\n * Returns `true` if `target` is currently focused.\r\n *\r\n * @param target Target\r\n * @return Focused?\r\n */\n focused(target) {\n return this._focusedSprite === target;\n }\n /**\r\n * Converts document coordinates to coordinates withing root element.\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\n documentPointToRoot(point) {\n const rect = this._getRealSize();\n const size = this._getCalculatedSize(rect);\n const scaleWidth = size.width / rect.width;\n const scaleHeight = size.height / rect.height;\n return {\n x: (point.x - rect.left) * scaleWidth,\n y: (point.y - rect.top) * scaleHeight\n };\n }\n /**\r\n * Converts root coordinates to document\r\n *\r\n * @param point Document point\r\n * @return Root point\r\n */\n rootPointToDocument(point) {\n const rect = this._getRealSize();\n const size = this._getCalculatedSize(rect);\n const scaleWidth = size.width / rect.width;\n const scaleHeight = size.height / rect.height;\n return {\n x: point.x / scaleWidth + rect.left,\n y: point.y / scaleHeight + rect.top\n };\n }\n /**\r\n * @ignore\r\n */\n addDisposer(disposer) {\n this._disposers.push(disposer);\n return disposer;\n }\n _updateComputedStyles() {\n const styles = window.getComputedStyle(this.dom);\n let fontHash = \"\";\n $object.each(styles, (key, val) => {\n if ($type.isString(key) && key.match(/^font/)) {\n fontHash += val;\n }\n });\n const changed = fontHash != this._fontHash;\n if (changed) {\n this._fontHash = fontHash;\n }\n return changed;\n }\n _checkComputedStyles() {\n if (this._updateComputedStyles()) {\n this._invalidateLabelBounds(this.container);\n }\n }\n _invalidateLabelBounds(target) {\n if (target instanceof Container) {\n target.children.each(child => {\n this._invalidateLabelBounds(child);\n });\n } else if (target instanceof Text) {\n target.markDirtyBounds();\n }\n }\n /**\r\n * To all the clever heads out there. Yes, we did not make any attempts to\r\n * scramble this.\r\n *\r\n * This is a part of a tool meant for our users to manage their commercial\r\n * licenses for removal of amCharts branding from charts.\r\n *\r\n * The only legit way to do so is to purchase a commercial license for amCharts:\r\n * https://www.amcharts.com/online-store/\r\n *\r\n * Removing or altering this code, or disabling amCharts branding in any other\r\n * way is against the license and thus illegal.\r\n */\n _hasLicense() {\n for (let i = 0; i < registry.licenses.length; i++) {\n if (registry.licenses[i].match(/^AM5C.{5,}/i)) {\n return true;\n }\n }\n return false;\n }\n _licenseApplied() {\n if (this._logo) {\n this._logo.set(\"forceHidden\", true);\n }\n }\n /**\r\n * @ignore\r\n */\n get debugGhostView() {\n return this._renderer.debugGhostView;\n }\n /**\r\n * @ignore\r\n */\n set debugGhostView(value) {\n this._renderer.debugGhostView = value;\n }\n /**\r\n * Set this to `true` if you need chart to require first a tap onto it before\r\n * touch gesture related functionality like zoom/pan is turned on.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default false\r\n * @since 5.2.9\r\n * @param value Needs a tap to activate touch functions\r\n */\n set tapToActivate(value) {\n this._renderer.tapToActivate = value;\n }\n /**\r\n * @return Needs a tap to activate touch functions\r\n */\n get tapToActivate() {\n return this._renderer.tapToActivate;\n }\n /**\r\n * If `tapToActivate` is set to `true`, this setting will determine number\r\n * of milliseconds the chart will stay \"active\", before releasing the\r\n * controls back to the page.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/getting-started/root-element/#Touch_related_options} for more info\r\n * @default 3000\r\n * @since 5.2.9\r\n * @param value Timeout\r\n */\n set tapToActivateTimeout(value) {\n this._renderer.tapToActivateTimeout = value;\n }\n /**\r\n * @return Timeout\r\n */\n get tapToActivateTimeout() {\n return this._renderer.tapToActivateTimeout;\n }\n _makeHTMLElement(target) {\n // Get container\n const container = this._htmlElementContainer;\n // Init\n const htmlElement = document.createElement(\"div\");\n target.setPrivate(\"htmlElement\", htmlElement);\n //htmlElement.tabIndex = this.tabindex;\n htmlElement.style.position = \"absolute\";\n htmlElement.style.overflow = \"auto\";\n htmlElement.style.boxSizing = \"border-box\";\n $utils.setInteractive(htmlElement, target.get(\"interactive\", false));\n // Translate events\n if (target.events.isEnabled(\"click\")) {\n $utils.setInteractive(htmlElement, true);\n this._disposers.push($utils.addEventListener(htmlElement, \"click\", ev => {\n const downEvent = this._renderer.getEvent(ev);\n target.events.dispatch(\"click\", {\n type: \"click\",\n originalEvent: downEvent.event,\n point: downEvent.point,\n simulated: false,\n target: target\n });\n }));\n }\n this._positionHTMLElement(target);\n container.append(htmlElement);\n $array.pushOne(this._htmlEnabledContainers, target);\n return htmlElement;\n }\n _positionHTMLElements() {\n $array.each(this._htmlEnabledContainers, target => {\n this._positionHTMLElement(target);\n });\n }\n _positionHTMLElement(target) {\n const htmlElement = target.getPrivate(\"htmlElement\");\n if (htmlElement) {\n // Translate settings\n const visualSettings = [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\"];\n $array.each(visualSettings, setting => {\n const value = target.get(setting);\n if (value) {\n htmlElement.style[setting] = value + \"px\";\n } else {\n htmlElement.style[setting] = \"\";\n }\n });\n // Init and reset scale / rotation\n const scale = target.compositeScale() || 1;\n const rotation = target.compositeRotation() || 0;\n htmlElement.style.transform = \"\";\n htmlElement.style.transformOrigin = \"\";\n // Deal with opacity\n const opacity = target.compositeOpacity();\n setTimeout(() => {\n htmlElement.style.opacity = opacity + \"\";\n }, 10);\n const visible = target.isVisibleDeep();\n if (visible) {\n htmlElement.style.display = \"block\";\n }\n // Deal with position\n const bounds = target.globalBounds();\n htmlElement.style.top = bounds.top + \"px\";\n htmlElement.style.left = bounds.left + \"px\";\n // Use width/height if those are set\n const width = target.get(\"width\");\n const height = target.get(\"height\");\n let w = 0;\n let h = 0;\n if (width) {\n w = target.width();\n }\n if (height) {\n h = target.height();\n }\n if (!width || !height) {\n htmlElement.style.position = \"fixed\";\n htmlElement.style.width = \"\";\n htmlElement.style.height = \"\";\n const bbox = htmlElement.getBoundingClientRect();\n htmlElement.style.position = \"absolute\";\n if (!width) w = bbox.width;\n if (!height) h = bbox.height;\n target._adjustedLocalBounds = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n target.setPrivate(\"minWidth\", w / scale);\n target.setPrivate(\"minHeight\", h / scale);\n } else {\n target.removePrivate(\"minWidth\");\n target.removePrivate(\"minHeight\");\n }\n if (w > 0) {\n htmlElement.style.minWidth = w + \"px\";\n }\n if (h > 0) {\n htmlElement.style.minHeight = h + \"px\";\n }\n // Hide or show\n if (!visible || opacity == 0) {\n htmlElement.style.display = \"none\";\n }\n // Deal with scale\n if (scale != 1) {\n htmlElement.style.transform += \"scale(\" + scale + \")\";\n }\n if (rotation != 0) {\n htmlElement.style.transform += \" rotate(\" + rotation + \"deg)\";\n }\n if (htmlElement.style.transform != \"\") {\n htmlElement.style.transformOrigin = target.get(\"centerX\", 0) + \"% \" + target.get(\"centerY\", 0) + \"%\";\n }\n }\n }\n _setHTMLContent(target, html) {\n let htmlElement = target.getPrivate(\"htmlElement\");\n if (!htmlElement) {\n htmlElement = this._makeHTMLElement(target);\n }\n if (htmlElement.innerHTML != html) {\n htmlElement.innerHTML = html;\n }\n }\n _removeHTMLContent(target) {\n let htmlElement = target.getPrivate(\"htmlElement\");\n if (htmlElement) {\n this._htmlElementContainer.removeChild(htmlElement);\n target.removePrivate(\"htmlElement\");\n }\n $array.remove(this._htmlEnabledContainers, target);\n }\n}\n//# sourceMappingURL=Root.js.map","import { Entity } from \"./Entity\";\nimport { Color } from \"./Color\";\n/**\r\n * An object which holds list of colors and can generate new ones.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/#Color_sets} for more info\r\n */\nexport class ColorSet extends Entity {\n //protected _currentPass: number = 0;\n _afterNew() {\n // Applying themes because color set will not have parent\n super._afterNewApplyThemes();\n this._dirty[\"colors\"] = false;\n }\n _beforeChanged() {\n if (this.isDirty(\"colors\")) {\n this.reset();\n }\n }\n /**\r\n * @ignore\r\n */\n generateColors() {\n this.setPrivate(\"currentPass\", this.getPrivate(\"currentPass\", 0) + 1);\n const pass = this.getPrivate(\"currentPass\");\n const colors = this.get(\"colors\", [this.get(\"baseColor\", Color.fromHex(0xff0000))]);\n if (!this.getPrivate(\"numColors\")) {\n this.setPrivate(\"numColors\", colors.length);\n }\n //const len = colors.length;\n const len = this.getPrivate(\"numColors\");\n //const start = len - this.getPrivate(\"numColors\")!;\n const start = 0;\n const passOptions = this.get(\"passOptions\");\n const reuse = this.get(\"reuse\");\n for (let i = start; i < len; i++) {\n if (reuse) {\n colors.push(colors[i]);\n } else {\n const hsl = colors[i].toHSL();\n let h = hsl.h + (passOptions.hue || 0) * pass;\n while (h > 1) h -= 1;\n let s = hsl.s + (passOptions.saturation || 0) * pass;\n //if (s > 1) s -= Math.floor(s);\n if (s > 1) s = 1;\n if (s < 0) s = 0;\n let l = hsl.l + (passOptions.lightness || 0) * pass;\n //if (l > 1) l -= Math.floor(l);\n while (l > 1) l -= 1;\n colors.push(Color.fromHSL(h, s, l));\n }\n }\n }\n /**\r\n * Returns a [[Color]] at specific index.\r\n *\r\n * If there's no color at this index, a new color is generated.\r\n *\r\n * @param index Index\r\n * @return Color\r\n */\n getIndex(index) {\n const colors = this.get(\"colors\", []);\n const saturation = this.get(\"saturation\");\n if (index >= colors.length) {\n this.generateColors();\n return this.getIndex(index);\n }\n return saturation != null ? Color.saturate(colors[index], saturation) : colors[index];\n }\n /**\r\n * Returns next [[Color]] in the list.\r\n *\r\n * If the list is out of colors, new ones are generated dynamically.\r\n */\n next() {\n let currentStep = this.getPrivate(\"currentStep\", this.get(\"startIndex\", 0));\n this.setPrivate(\"currentStep\", currentStep + this.get(\"step\", 1));\n return this.getIndex(currentStep);\n }\n /**\r\n * Resets counter to the start of the list, so the next call for `next()` will\r\n * return the first color.\r\n */\n reset() {\n this.setPrivate(\"currentStep\", this.get(\"startIndex\", 0));\n this.setPrivate(\"currentPass\", 0);\n }\n}\nObject.defineProperty(ColorSet, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ColorSet\"\n});\nObject.defineProperty(ColorSet, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Entity.classNames.concat([ColorSet.className])\n});\n//# sourceMappingURL=ColorSet.js.map","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\nimport * as $type from \"./Type\";\nimport * as $utils from \"./Utils\";\n/**\r\n * Returns a `Promise` which can be used to execute code after number of\r\n * milliseconds.\r\n *\r\n * @param ms Sleep duration in ms\r\n * @return Promise\r\n */\nexport function sleep(ms) {\n return new Promise((resolve, _reject) => {\n setTimeout(resolve, ms);\n });\n}\n/**\r\n * Maps time period names to their numeric representations in milliseconds.\r\n *\r\n * @ignore Exclude from docs\r\n */\nexport let timeUnitDurations = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000,\n week: 604800000,\n month: 365.242 / 12 * 86400000,\n year: 31536000000\n};\n/**\r\n * Returns the next time unit that goes after source `unit`.\r\n *\r\n * E.g. \"hour\" is the next unit after \"minute\", etc.\r\n *\r\n * @ignore Exclude from docs\r\n * @param unit Source time unit\r\n * @return Next time unit\r\n */\nexport function getNextUnit(unit) {\n switch (unit) {\n case \"year\":\n return;\n case \"month\":\n return \"year\";\n case \"week\":\n return \"month\";\n case \"day\":\n return \"month\";\n // not a mistake\n case \"hour\":\n return \"day\";\n case \"minute\":\n return \"hour\";\n case \"second\":\n return \"minute\";\n case \"millisecond\":\n return \"second\";\n }\n}\n/**\r\n * Returns number of milliseconds in the `count` of time `unit`.\r\n *\r\n * Available units: \"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\",\r\n * \"month\", and \"year\".\r\n *\r\n * @param unit Time unit\r\n * @param count Number of units\r\n * @return Milliseconds\r\n */\nexport function getDuration(unit, count) {\n if (count == null) {\n count = 1;\n }\n return timeUnitDurations[unit] * count;\n}\n/**\r\n * @ignore\r\n */\nexport function getIntervalDuration(interval) {\n if (interval) {\n return timeUnitDurations[interval.timeUnit] * interval.count;\n }\n return 0;\n}\nexport function getDateIntervalDuration(interval, date, firstDateOfWeek, utc, timezone) {\n const unit = interval.timeUnit;\n const count = interval.count;\n if (unit == \"hour\" || unit == \"minute\" || unit == \"second\" || unit == \"millisecond\") {\n return timeUnitDurations[interval.timeUnit] * interval.count;\n } else {\n const firstTime = round(new Date(date.getTime()), unit, count, firstDateOfWeek, utc, undefined, timezone).getTime();\n let lastTime = firstTime + count * getDuration(unit) * 1.05;\n lastTime = round(new Date(lastTime), unit, 1, firstDateOfWeek, utc, undefined, timezone).getTime();\n return lastTime - firstTime;\n }\n}\n/**\r\n * Returns current `Date` object.\r\n *\r\n * @return Current date\r\n */\nexport function now() {\n return new Date();\n}\n/**\r\n * Returns current timestamp.\r\n *\r\n * @return Current timestamp\r\n */\nexport function getTime() {\n return now().getTime();\n}\n/**\r\n * Returns a copy of the `Date` object.\r\n *\r\n * @param date Source date\r\n * @return Copy\r\n */\nexport function copy(date) {\n return new Date(date.getTime()); // todo: check if this is ok. new Date(date) used to strip milliseconds on FF in v3\n}\n/**\r\n * Checks if the `unit` part of two `Date` objects do not match. Two dates\r\n * represent a \"range\" of time, rather the same time date.\r\n *\r\n * @param timeOne timestamp\r\n * @param timeTwo timestamp\r\n * @param unit Time unit to check\r\n * @return Range?\r\n */\nexport function checkChange(timeOne, timeTwo, unit, utc, timezone) {\n // quick\n if (timeTwo - timeOne > getDuration(unit, 1.2)) {\n return true;\n }\n let dateOne = new Date(timeOne);\n let dateTwo = new Date(timeTwo);\n if (timezone) {\n dateOne = timezone.convertLocal(dateOne);\n dateTwo = timezone.convertLocal(dateTwo);\n }\n let timeZoneOffset1 = 0;\n let timeZoneOffset2 = 0;\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset1 = dateOne.getTimezoneOffset();\n dateOne.setUTCMinutes(dateOne.getUTCMinutes() - timeZoneOffset1);\n timeZoneOffset2 = dateTwo.getTimezoneOffset();\n dateTwo.setUTCMinutes(dateTwo.getUTCMinutes() - timeZoneOffset2);\n }\n let changed = false;\n switch (unit) {\n case \"year\":\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n changed = true;\n }\n break;\n case \"month\":\n if (dateOne.getUTCFullYear() != dateTwo.getUTCFullYear()) {\n changed = true;\n } else if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n changed = true;\n }\n break;\n case \"day\":\n if (dateOne.getUTCMonth() != dateTwo.getUTCMonth()) {\n changed = true;\n } else if (dateOne.getUTCDate() != dateTwo.getUTCDate()) {\n changed = true;\n }\n break;\n case \"hour\":\n if (dateOne.getUTCHours() != dateTwo.getUTCHours()) {\n changed = true;\n }\n break;\n case \"minute\":\n if (dateOne.getUTCMinutes() != dateTwo.getUTCMinutes()) {\n changed = true;\n }\n break;\n case \"second\":\n if (dateOne.getUTCSeconds() != dateTwo.getUTCSeconds()) {\n changed = true;\n }\n break;\n case \"millisecond\":\n if (dateOne.getTime() != dateTwo.getTime()) {\n changed = true;\n }\n break;\n }\n if (changed) {\n return changed;\n }\n let nextUnit = getNextUnit(unit);\n if (nextUnit) {\n return checkChange(timeOne, timeTwo, nextUnit, utc, timezone);\n } else {\n return false;\n }\n}\n/**\r\n * Adds `count` of time `unit` to the source date. Returns a modified `Date` object.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to add\r\n * @return Modified date\r\n */\nexport function add(date, unit, count, utc, timezone) {\n let timeZoneOffset = 0;\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset = date.getTimezoneOffset();\n if (timezone) {\n timeZoneOffset -= timezone.offsetUTC(date);\n }\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n }\n switch (unit) {\n case \"day\":\n let day = date.getUTCDate();\n date.setUTCDate(day + count);\n break;\n case \"second\":\n let seconds = date.getUTCSeconds();\n date.setUTCSeconds(seconds + count);\n break;\n case \"millisecond\":\n let milliseconds = date.getUTCMilliseconds();\n date.setUTCMilliseconds(milliseconds + count);\n break;\n case \"hour\":\n let hours = date.getUTCHours();\n date.setUTCHours(hours + count);\n break;\n case \"minute\":\n let minutes = date.getUTCMinutes();\n date.setUTCMinutes(minutes + count);\n break;\n case \"year\":\n let year = date.getUTCFullYear();\n date.setUTCFullYear(year + count);\n break;\n case \"month\":\n const endDays = date.getUTCDate();\n const startDays = new Date(date.getUTCFullYear(), date.getUTCMonth(), 0).getUTCDate();\n let month = date.getUTCMonth();\n if (endDays > startDays) {\n date.setUTCMonth(month + count, startDays);\n } else {\n date.setUTCMonth(month + count);\n }\n break;\n case \"week\":\n let wday = date.getUTCDate();\n date.setUTCDate(wday + count * 7);\n break;\n }\n if (!utc && unit != \"millisecond\") {\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n let newTimeZoneOffset = date.getTimezoneOffset();\n if (timezone) {\n newTimeZoneOffset += timezone.offsetUTC(date);\n }\n if (newTimeZoneOffset != timeZoneOffset) {\n let diff = newTimeZoneOffset - timeZoneOffset;\n date.setUTCMinutes(date.getUTCMinutes() + diff);\n // solves issues if new time falls back to old time zone\n if (date.getTimezoneOffset() != newTimeZoneOffset) {\n date.setUTCMinutes(date.getUTCMinutes() - diff);\n }\n }\n }\n }\n return date;\n}\n/**\r\n * @ignore\r\n */\nexport function roun(time, unit, count, root, firstTime) {\n let firstDate;\n if (firstTime != null) {\n firstDate = new Date(firstTime);\n }\n return round(new Date(time), unit, count, root.locale.firstDayOfWeek, root.utc, firstDate, root.timezone).getTime();\n}\n/**\r\n * \"Rounds\" the date to specific time unit.\r\n *\r\n * @param date Source date\r\n * @param unit Time unit\r\n * @param count Number of units to round to\r\n * @param firstDateOfWeek First day of week\r\n * @param utc Use UTC timezone\r\n * @param firstDate First date to round to\r\n * @param roundMinutes Minutes to round to (some timezones use non-whole hour)\r\n * @param timezone Use specific named timezone when rounding\r\n * @return New date\r\n */\nexport function round(date, unit, count, firstDateOfWeek, utc, firstDate, timezone) {\n if (!timezone || utc) {\n let timeZoneOffset = 0;\n if (!utc && unit != \"millisecond\") {\n timeZoneOffset = date.getTimezoneOffset();\n date.setUTCMinutes(date.getUTCMinutes() - timeZoneOffset);\n }\n switch (unit) {\n case \"day\":\n let day = date.getUTCDate();\n if (count > 1) {\n //\tday = Math.floor(day / count) * count;\n if (firstDate) {\n firstDate = round(firstDate, \"day\", 1);\n let difference = date.getTime() - firstDate.getTime();\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\n let duration = getDuration(\"day\", unitCount * count);\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\n }\n } else {\n date.setUTCDate(day);\n }\n date.setUTCHours(0, 0, 0, 0);\n break;\n case \"second\":\n let seconds = date.getUTCSeconds();\n if (count > 1) {\n seconds = Math.floor(seconds / count) * count;\n }\n date.setUTCSeconds(seconds, 0);\n break;\n case \"millisecond\":\n if (count == 1) {\n return date; // much better for perf!\n }\n let milliseconds = date.getUTCMilliseconds();\n milliseconds = Math.floor(milliseconds / count) * count;\n date.setUTCMilliseconds(milliseconds);\n break;\n case \"hour\":\n let hours = date.getUTCHours();\n if (count > 1) {\n hours = Math.floor(hours / count) * count;\n }\n date.setUTCHours(hours, 0, 0, 0);\n break;\n case \"minute\":\n let minutes = date.getUTCMinutes();\n if (count > 1) {\n minutes = Math.floor(minutes / count) * count;\n }\n date.setUTCMinutes(minutes, 0, 0);\n break;\n case \"month\":\n let month = date.getUTCMonth();\n if (count > 1) {\n month = Math.floor(month / count) * count;\n }\n date.setUTCMonth(month, 1);\n date.setUTCHours(0, 0, 0, 0);\n break;\n case \"year\":\n let year = date.getUTCFullYear();\n if (count > 1) {\n year = Math.floor(year / count) * count;\n }\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n break;\n case \"week\":\n if (count > 1) {\n if (firstDate) {\n firstDate = round(firstDate, \"week\", 1);\n let difference = date.getTime() - firstDate.getTime();\n let unitCount = Math.floor(difference / getDuration(\"week\") / count);\n let duration = getDuration(\"week\", unitCount * count);\n date.setTime(firstDate.getTime() + duration - timeZoneOffset * getDuration(\"minute\"));\n }\n }\n let wday = date.getUTCDate();\n let weekDay = date.getUTCDay();\n if (!$type.isNumber(firstDateOfWeek)) {\n firstDateOfWeek = 1;\n }\n if (weekDay >= firstDateOfWeek) {\n wday = wday - weekDay + firstDateOfWeek;\n } else {\n wday = wday - (7 + weekDay) + firstDateOfWeek;\n }\n date.setUTCDate(wday);\n date.setUTCHours(0, 0, 0, 0);\n break;\n }\n if (!utc && unit != \"millisecond\") {\n date.setUTCMinutes(date.getUTCMinutes() + timeZoneOffset);\n if (unit == \"day\" || unit == \"week\" || unit == \"month\" || unit == \"year\") {\n let newTimeZoneOffset = date.getTimezoneOffset();\n if (newTimeZoneOffset != timeZoneOffset) {\n let diff = newTimeZoneOffset - timeZoneOffset;\n date.setUTCMinutes(date.getUTCMinutes() + diff);\n }\n }\n }\n return date;\n } else {\n if (isNaN(date.getTime())) {\n return date;\n }\n let tzoffset = timezone.offsetUTC(date);\n let timeZoneOffset = date.getTimezoneOffset();\n let parsedDate = timezone.parseDate(date);\n let year = parsedDate.year;\n let month = parsedDate.month;\n let day = parsedDate.day;\n let hour = parsedDate.hour;\n let minute = parsedDate.minute;\n let second = parsedDate.second;\n let millisecond = parsedDate.millisecond;\n let weekday = parsedDate.weekday;\n let offsetDif = tzoffset - timeZoneOffset;\n switch (unit) {\n case \"day\":\n if (count > 1 && firstDate) {\n firstDate = round(firstDate, \"day\", 1, firstDateOfWeek, utc, undefined, timezone);\n let difference = date.getTime() - firstDate.getTime();\n let unitCount = Math.floor(difference / getDuration(\"day\") / count);\n let duration = getDuration(\"day\", unitCount * count);\n date.setTime(firstDate.getTime() + duration);\n parsedDate = timezone.parseDate(date);\n year = parsedDate.year;\n month = parsedDate.month;\n day = parsedDate.day;\n }\n hour = 0;\n minute = offsetDif;\n second = 0;\n millisecond = 0;\n break;\n case \"second\":\n minute += offsetDif;\n if (count > 1) {\n second = Math.floor(second / count) * count;\n }\n millisecond = 0;\n break;\n case \"millisecond\":\n minute += offsetDif;\n if (count > 1) {\n millisecond = Math.floor(millisecond / count) * count;\n }\n break;\n case \"hour\":\n if (count > 1) {\n hour = Math.floor(hour / count) * count;\n }\n minute = offsetDif;\n second = 0;\n millisecond = 0;\n break;\n case \"minute\":\n if (count > 1) {\n minute = Math.floor(minute / count) * count;\n }\n minute += offsetDif;\n second = 0;\n millisecond = 0;\n break;\n case \"month\":\n if (count > 1) {\n month = Math.floor(month / count) * count;\n }\n day = 1;\n hour = 0;\n minute = offsetDif;\n second = 0;\n millisecond = 0;\n break;\n case \"year\":\n if (count > 1) {\n year = Math.floor(year / count) * count;\n }\n month = 0;\n day = 1;\n hour = 0;\n minute = offsetDif;\n second = 0;\n millisecond = 0;\n break;\n case \"week\":\n if (!$type.isNumber(firstDateOfWeek)) {\n firstDateOfWeek = 1;\n }\n if (weekday >= firstDateOfWeek) {\n day = day - weekday + firstDateOfWeek;\n } else {\n day = day - (7 + weekday) + firstDateOfWeek;\n }\n hour = 0;\n minute = offsetDif;\n second = 0;\n millisecond = 0;\n break;\n }\n date = new Date(year, month, day, hour, minute, second, millisecond);\n let newTimeZoneOffset = date.getTimezoneOffset();\n let newTzoffset = timezone.offsetUTC(date);\n let newDiff = newTzoffset - newTimeZoneOffset;\n if (newDiff != offsetDif) {\n date.setTime(date.getTime() + (newDiff - offsetDif) * 60000);\n }\n return date;\n }\n}\n/**\r\n * @ignore\r\n */\nexport function chooseInterval(index, duration, gridCount, intervals) {\n let gridInterval = intervals[index];\n let intervalDuration = getIntervalDuration(gridInterval);\n let lastIndex = intervals.length - 1;\n if (index >= lastIndex) {\n return Object.assign({}, intervals[lastIndex]);\n }\n let count = Math.ceil(duration / intervalDuration);\n if (duration < intervalDuration && index > 0) {\n return Object.assign({}, intervals[index - 1]);\n }\n if (count <= gridCount) {\n return Object.assign({}, intervals[index]);\n } else {\n if (index + 1 < intervals.length) {\n return chooseInterval(index + 1, duration, gridCount, intervals);\n } else {\n return Object.assign({}, intervals[index]);\n }\n }\n}\n/**\r\n * @ignore\r\n */\nexport function getUnitValue(date, unit) {\n switch (unit) {\n case \"day\":\n return date.getDate();\n case \"second\":\n return date.getSeconds();\n case \"millisecond\":\n return date.getMilliseconds();\n case \"hour\":\n return date.getHours();\n case \"minute\":\n return date.getMinutes();\n case \"month\":\n return date.getMonth();\n case \"year\":\n return date.getFullYear();\n case \"week\":\n return $utils.getWeek(date);\n }\n}\n//# sourceMappingURL=Time.js.map","import { Theme } from \"../../core/Theme\";\nimport { percent, p50, p100 } from \"../../core/util/Percent\";\nimport { Color } from \"../../core/util/Color\";\nimport { ColorSet } from \"../../core/util/ColorSet\";\nimport { setColor } from \"../../themes/DefaultTheme\";\nimport * as $time from \"../../core/util/Time\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $math from \"../../core/util/Math\";\nimport * as $object from \"../../core/util/Object\";\nimport * as $array from \"../../core/util/Array\";\n/**\r\n * @ignore\r\n */\nexport class XYChartDefaultTheme extends Theme {\n setupDefaultRules() {\n super.setupDefaultRules();\n const ic = this._root.interfaceColors;\n const language = this._root.language;\n const r = this.rule.bind(this);\n /**\r\n * ========================================================================\r\n * charts/xy\r\n * ========================================================================\r\n */\n r(\"XYChart\").setAll({\n colors: ColorSet.new(this._root, {}),\n paddingLeft: 20,\n paddingRight: 20,\n paddingTop: 16,\n paddingBottom: 16,\n panX: false,\n panY: false,\n wheelStep: 0.25,\n arrangeTooltips: true,\n pinchZoomX: false,\n pinchZoomY: false\n });\n r(\"XYSeries\").setAll({\n legendLabelText: \"{name}\"\n });\n r(\"Rectangle\", [\"plotbackground\", \"xy\", \"background\"]).setAll({\n fill: Color.fromHex(0x000000),\n fillOpacity: 0\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: XYChartScrollbar\r\n * ------------------------------------------------------------------------\r\n */\n r(\"XYChart\", [\"scrollbar\", \"chart\"]).setAll({\n paddingBottom: 0,\n paddingLeft: 0,\n paddingTop: 0,\n paddingRight: 0,\n colors: ColorSet.new(this._root, {\n saturation: 0\n })\n });\n {\n const rule = r(\"Graphics\", [\"scrollbar\", \"overlay\"]);\n rule.setAll({\n fillOpacity: 0.5\n });\n setColor(rule, \"fill\", ic, \"background\");\n }\n // Class: RoundedRectangle\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).setAll({\n cornerRadiusTR: 0,\n cornerRadiusTL: 0,\n cornerRadiusBR: 0,\n cornerRadiusBL: 0,\n fillOpacity: 0,\n focusable: true\n });\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"thumb\"]).states.create(\"hover\", {\n fillOpacity: 0.4\n });\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\"]).setAll({\n cornerRadiusTL: 0,\n cornerRadiusBL: 0,\n cornerRadiusTR: 0,\n cornerRadiusBR: 0\n });\n r(\"RoundedRectangle\", [\"xy\", \"scrollbar\", \"chart\", \"background\", \"resize\", \"button\"]).setAll({\n cornerRadiusBL: 40,\n cornerRadiusBR: 40,\n cornerRadiusTL: 40,\n cornerRadiusTR: 40\n });\n r(\"AxisRendererX\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\n strokeOpacity: 0,\n inside: true\n });\n r(\"AxisRendererY\", [\"xy\", \"chart\", \"scrollbar\"]).setAll({\n strokeOpacity: 0,\n inside: true,\n minGridDistance: 5\n });\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\n opacity: 0.5,\n centerY: p100,\n minPosition: 0.01,\n maxPosition: 0.99,\n fontSize: \"0.8em\"\n });\n r(\"AxisLabel\", [\"category\"]).setAll({\n text: \"{category}\",\n populateText: true\n });\n r(\"AxisLabel\", [\"x\"]).setAll({\n centerY: 0\n });\n r(\"AxisLabel\", [\"x\", \"inside\"]).setAll({\n centerY: p100\n });\n r(\"AxisLabel\", [\"x\", \"inside\", \"opposite\"]).setAll({\n centerY: 0\n });\n r(\"AxisLabel\", [\"x\", \"opposite\"]).setAll({\n centerY: p100\n });\n r(\"AxisLabel\", [\"y\"]).setAll({\n centerX: p100\n });\n r(\"AxisLabel\", [\"y\", \"inside\"]).setAll({\n centerX: 0\n });\n r(\"AxisLabel\", [\"y\", \"inside\", \"opposite\"]).setAll({\n centerX: p100\n });\n r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\n centerX: 0\n });\n r(\"AxisLabel\", [\"minor\"]).setAll({\n fontSize: \"0.6em\"\n });\n r(\"AxisLabel\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\n visible: false\n });\n // Class: Grid\n r(\"Grid\", [\"xy\", \"scrollbar\", \"y\"]).setAll({\n visible: false\n });\n // Class: Grid\n r(\"Grid\", [\"xy\", \"scrollbar\", \"x\"]).setAll({\n opacity: 0.5\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Cursor\r\n * ------------------------------------------------------------------------\r\n */\n r(\"XYCursor\").setAll({\n behavior: \"none\",\n layer: 30,\n exportable: false,\n snapToSeriesBy: \"xy\",\n moveThreshold: 1\n });\n {\n const rule = r(\"Grid\", [\"cursor\", \"x\"]);\n rule.setAll({\n forceInactive: true,\n strokeOpacity: 0.8,\n strokeDasharray: [2, 2],\n role: \"slider\",\n ariaLabel: language.translate(\"Use left and right arrows to move selection\")\n });\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\n }\n {\n const rule = r(\"Grid\", [\"cursor\", \"y\"]);\n rule.setAll({\n forceInactive: true,\n strokeOpacity: 0.8,\n strokeDasharray: [2, 2],\n role: \"slider\",\n ariaLabel: language.translate(\"Use up and down arrows to move selection\")\n });\n setColor(rule, \"stroke\", ic, \"alternativeBackground\");\n }\n {\n const rule = r(\"Graphics\", [\"cursor\", \"selection\"]);\n rule.setAll({\n fillOpacity: 0.15\n });\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\n }\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Axes\r\n * ------------------------------------------------------------------------\r\n */\n r(\"Axis\").setAll({\n start: 0,\n end: 1,\n minZoomCount: 1,\n maxZoomCount: Infinity,\n maxZoomFactor: 1000,\n maxDeviation: 0.1,\n snapTooltip: true,\n tooltipLocation: 0.5,\n panX: true,\n panY: true,\n zoomX: true,\n zoomY: true,\n fixAxisSize: true\n });\n r(\"AxisLabel\").setAll({\n location: 0.5,\n multiLocation: 0,\n centerX: p50,\n centerY: p50,\n paddingTop: 3,\n paddingBottom: 3,\n paddingLeft: 5,\n paddingRight: 5\n });\n // The following is deprecated following text measuring updates in 5.0.5\n // r(\"AxisLabel\", [\"y\"]).setAll({\n // \ttextAlign: \"right\"\n // });\n // r(\"AxisLabel\", [\"y\", \"opposite\"]).setAll({\n // \ttextAlign: \"left\"\n // });\n r(\"Container\", [\"axis\", \"header\"]).setAll({\n layer: 30\n });\n r(\"Rectangle\", [\"axis\", \"header\", \"background\"]).setAll({\n crisp: true\n });\n {\n const rule = r(\"AxisRenderer\");\n rule.setAll({\n crisp: true,\n strokeOpacity: 0\n });\n setColor(rule, \"stroke\", ic, \"grid\");\n }\n r(\"AxisRendererX\").setAll({\n minGridDistance: 120,\n opposite: false,\n inversed: false,\n cellStartLocation: 0,\n cellEndLocation: 1,\n width: p100\n });\n r(\"AxisRendererY\").setAll({\n minGridDistance: 40,\n opposite: false,\n inversed: false,\n cellStartLocation: 0,\n cellEndLocation: 1,\n height: p100\n });\n {\n const rule = r(\"Rectangle\", [\"axis\", \"thumb\"]);\n rule.setAll({\n fillOpacity: 0\n });\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\n rule.states.create(\"hover\", {\n fillOpacity: 0.1\n });\n }\n r(\"Rectangle\", [\"axis\", \"thumb\", \"x\"]).setAll({\n cursorOverStyle: \"ew-resize\"\n });\n r(\"Rectangle\", [\"axis\", \"thumb\", \"y\"]).setAll({\n cursorOverStyle: \"ns-resize\"\n });\n {\n const rule = r(\"Grid\");\n rule.setAll({\n location: 0,\n strokeOpacity: 0.15,\n crisp: true\n });\n setColor(rule, \"stroke\", ic, \"grid\");\n }\n {\n const rule = r(\"Grid\", [\"minor\"]);\n rule.setAll({\n location: 0,\n strokeOpacity: 0.07,\n crisp: true\n });\n setColor(rule, \"stroke\", ic, \"grid\");\n }\n r(\"Grid\", [\"base\"]).setAll({\n strokeOpacity: 0.3\n });\n {\n const rule = r(\"Graphics\", [\"axis\", \"fill\"]);\n rule.setAll({\n visible: false,\n isMeasured: false,\n position: \"absolute\",\n fillOpacity: 0.05\n });\n setColor(rule, \"fill\", ic, \"alternativeBackground\");\n }\n r(\"Graphics\", [\"axis\", \"fill\", \"range\"]).setAll({\n isMeasured: true\n });\n // hides all elements of series axis range\n r(\"Graphics\", [\"series\", \"fill\", \"range\"]).setAll({\n visible: false,\n isMeasured: true\n });\n r(\"Grid\", [\"series\", \"range\"]).setAll({\n visible: false\n });\n r(\"AxisTick\", [\"series\", \"range\"]).setAll({\n visible: false\n });\n r(\"AxisLabel\", [\"series\", \"range\"]).setAll({\n visible: false\n });\n {\n const rule = r(\"AxisTick\");\n rule.setAll({\n location: 0.5,\n multiLocation: 0,\n strokeOpacity: 1,\n isMeasured: false,\n position: \"absolute\",\n visible: false\n });\n setColor(rule, \"stroke\", ic, \"grid\");\n }\n r(\"CategoryAxis\").setAll({\n startLocation: 0,\n endLocation: 1,\n fillRule: (dataItem, index) => {\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n if (!$type.isNumber(index) || index % 2 == 0) {\n axisFill.setPrivate(\"visible\", true);\n } else {\n axisFill.setPrivate(\"visible\", false);\n }\n }\n }\n });\n const gridIntervals = [{\n timeUnit: \"millisecond\",\n count: 1\n }, {\n timeUnit: \"millisecond\",\n count: 5\n }, {\n timeUnit: \"millisecond\",\n count: 10\n }, {\n timeUnit: \"millisecond\",\n count: 50\n }, {\n timeUnit: \"millisecond\",\n count: 100\n }, {\n timeUnit: \"millisecond\",\n count: 500\n }, {\n timeUnit: \"second\",\n count: 1\n }, {\n timeUnit: \"second\",\n count: 5\n }, {\n timeUnit: \"second\",\n count: 10\n }, {\n timeUnit: \"second\",\n count: 30\n }, {\n timeUnit: \"minute\",\n count: 1\n }, {\n timeUnit: \"minute\",\n count: 5\n }, {\n timeUnit: \"minute\",\n count: 10\n }, {\n timeUnit: \"minute\",\n count: 15\n }, {\n timeUnit: \"minute\",\n count: 30\n }, {\n timeUnit: \"hour\",\n count: 1\n }, {\n timeUnit: \"hour\",\n count: 3\n }, {\n timeUnit: \"hour\",\n count: 6\n }, {\n timeUnit: \"hour\",\n count: 12\n }, {\n timeUnit: \"day\",\n count: 1\n }, {\n timeUnit: \"day\",\n count: 2\n }, {\n timeUnit: \"day\",\n count: 3\n }, {\n timeUnit: \"day\",\n count: 4\n }, {\n timeUnit: \"day\",\n count: 5\n }, {\n timeUnit: \"week\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 2\n }, {\n timeUnit: \"month\",\n count: 3\n }, {\n timeUnit: \"month\",\n count: 6\n }, {\n timeUnit: \"year\",\n count: 1\n }, {\n timeUnit: \"year\",\n count: 2\n }, {\n timeUnit: \"year\",\n count: 5\n }, {\n timeUnit: \"year\",\n count: 10\n }, {\n timeUnit: \"year\",\n count: 50\n }, {\n timeUnit: \"year\",\n count: 100\n }, {\n timeUnit: \"year\",\n count: 200\n }, {\n timeUnit: \"year\",\n count: 500\n }, {\n timeUnit: \"year\",\n count: 1000\n }, {\n timeUnit: \"year\",\n count: 2000\n }, {\n timeUnit: \"year\",\n count: 5000\n }, {\n timeUnit: \"year\",\n count: 10000\n }, {\n timeUnit: \"year\",\n count: 100000\n }];\n const dateFormats = {\n \"millisecond\": language.translate(\"_date_millisecond\"),\n \"second\": language.translate(\"_date_second\"),\n \"minute\": language.translate(\"_date_minute\"),\n \"hour\": language.translate(\"_date_hour\"),\n \"day\": language.translate(\"_date_day\"),\n \"week\": language.translate(\"_date_day\"),\n \"month\": language.translate(\"_date_month\"),\n \"year\": language.translate(\"_date_year\")\n };\n const periodChangeDateFormats = {\n \"millisecond\": language.translate(\"_date_millisecond\"),\n \"second\": language.translate(\"_date_second\"),\n \"minute\": language.translate(\"_date_minute\"),\n \"hour\": language.translate(\"_date_day\"),\n \"day\": language.translate(\"_date_day\"),\n \"week\": language.translate(\"_date_day\"),\n \"month\": language.translate(\"_date_month\") + \" \" + language.translate(\"_date_year\"),\n \"year\": language.translate(\"_date_year\")\n };\n const tooltipDateFormats = {\n \"millisecond\": language.translate(\"_date_millisecond_full\"),\n \"second\": language.translate(\"_date_second_full\"),\n \"minute\": language.translate(\"_date_minute_full\"),\n \"hour\": language.translate(\"_date_hour_full\"),\n \"day\": language.translate(\"_date_day_full\"),\n \"week\": language.translate(\"_date_week_full\"),\n \"month\": language.translate(\"_date_month_full\"),\n \"year\": language.translate(\"_date_year\")\n };\n r(\"CategoryDateAxis\").setAll({\n markUnitChange: true,\n gridIntervals: $array.copy(gridIntervals),\n dateFormats: $object.copy(dateFormats),\n periodChangeDateFormats: $object.copy(periodChangeDateFormats)\n });\n r(\"DateAxis\").setAll({\n maxZoomFactor: null,\n strictMinMax: true,\n startLocation: 0,\n endLocation: 1,\n markUnitChange: true,\n groupData: false,\n groupCount: 500,\n gridIntervals: $array.copy(gridIntervals),\n dateFormats: $object.copy(dateFormats),\n periodChangeDateFormats: $object.copy(periodChangeDateFormats),\n tooltipDateFormats: tooltipDateFormats,\n groupIntervals: [{\n timeUnit: \"millisecond\",\n count: 1\n }, {\n timeUnit: \"millisecond\",\n count: 10\n }, {\n timeUnit: \"millisecond\",\n count: 100\n }, {\n timeUnit: \"second\",\n count: 1\n }, {\n timeUnit: \"second\",\n count: 10\n }, {\n timeUnit: \"minute\",\n count: 1\n }, {\n timeUnit: \"minute\",\n count: 10\n }, {\n timeUnit: \"hour\",\n count: 1\n }, {\n timeUnit: \"day\",\n count: 1\n }, {\n timeUnit: \"week\",\n count: 1\n }, {\n timeUnit: \"month\",\n count: 1\n }, {\n timeUnit: \"year\",\n count: 1\n }],\n fillRule: dataItem => {\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n const axis = dataItem.component;\n const value = dataItem.get(\"value\");\n const endValue = dataItem.get(\"endValue\");\n const intervalDuration = axis.intervalDuration();\n const baseInterval = axis.getPrivate(\"baseInterval\");\n const gridInterval = axis.getPrivate(\"gridInterval\", baseInterval);\n let min = axis.getPrivate(\"min\", 0);\n min = $time.round(new Date(min), gridInterval.timeUnit, gridInterval.count, this._root.locale.firstDayOfWeek, this._root.utc, undefined, this._root.timezone).getTime();\n if (value != null && endValue != null) {\n const val = Math.round(Math.round((value - min) / intervalDuration)) / 2;\n if (val == Math.round(val)) {\n axisFill.setPrivate(\"visible\", true);\n } else {\n axisFill.setPrivate(\"visible\", false);\n }\n }\n }\n }\n });\n r(\"GaplessDateAxis\").setAll({\n fillRule: dataItem => {\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n const index = dataItem.get(\"index\");\n let visible = false;\n if (!$type.isNumber(index) || index % 2 == 0) {\n visible = true;\n }\n axisFill.setPrivate(\"visible\", visible);\n }\n }\n });\n r(\"ValueAxis\").setAll({\n baseValue: 0,\n logarithmic: false,\n strictMinMax: false,\n autoZoom: true,\n fillRule: dataItem => {\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n const axis = dataItem.component;\n const value = dataItem.get(\"value\");\n const step = axis.getPrivate(\"step\");\n if ($type.isNumber(value) && $type.isNumber(step)) {\n if ($math.round(value / step / 2, 5) == Math.round(value / step / 2)) {\n axisFill.setPrivate(\"visible\", false);\n } else {\n axisFill.setPrivate(\"visible\", true);\n }\n }\n }\n }\n });\n r(\"DurationAxis\").setAll({\n baseUnit: \"second\"\n });\n /**\r\n * ------------------------------------------------------------------------\r\n * charts/xy: Series\r\n * ------------------------------------------------------------------------\r\n */\n r(\"XYSeries\").setAll({\n maskBullets: true,\n stackToNegative: true,\n locationX: 0.5,\n locationY: 0.5,\n snapTooltip: false,\n openValueXGrouped: \"open\",\n openValueYGrouped: \"open\",\n valueXGrouped: \"close\",\n valueYGrouped: \"close\",\n seriesTooltipTarget: \"series\"\n });\n r(\"BaseColumnSeries\").setAll({\n adjustBulletPosition: true\n });\n r(\"ColumnSeries\").setAll({\n clustered: true\n });\n r(\"RoundedRectangle\", [\"series\", \"column\"]).setAll({\n position: \"absolute\",\n isMeasured: false,\n width: percent(70),\n height: percent(70),\n strokeWidth: 1,\n strokeOpacity: 1,\n cornerRadiusBL: 0,\n cornerRadiusTL: 0,\n cornerRadiusBR: 0,\n cornerRadiusTR: 0,\n fillOpacity: 1,\n role: \"figure\"\n });\n r(\"LineSeries\").setAll({\n connect: true,\n autoGapCount: 1.1,\n stackToNegative: false\n });\n r(\"Graphics\", [\"series\", \"stroke\"]).setAll({\n position: \"absolute\",\n strokeWidth: 1,\n strokeOpacity: 1,\n isMeasured: false\n });\n r(\"Graphics\", [\"series\", \"fill\"]).setAll({\n visible: false,\n fillOpacity: 0,\n position: \"absolute\",\n strokeWidth: 0,\n strokeOpacity: 0,\n isMeasured: false\n });\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).setAll({\n draw: (display, sprite) => {\n const parent = sprite.parent;\n if (parent) {\n const h = parent.height();\n const w = parent.width();\n display.moveTo(0, h / 2);\n display.lineTo(w, h / 2);\n }\n }\n });\n {\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"]).states.create(\"disabled\", {});\n setColor(rule, \"stroke\", ic, \"disabled\");\n }\n r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).setAll({\n draw: (display, sprite) => {\n const parent = sprite.parent;\n if (parent) {\n const h = parent.height();\n const w = parent.width();\n display.moveTo(0, 0);\n display.lineTo(w, 0);\n display.lineTo(w, h);\n display.lineTo(0, h);\n display.lineTo(0, 0);\n }\n }\n });\n {\n const rule = r(\"Graphics\", [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]).states.create(\"disabled\", {});\n setColor(rule, \"stroke\", ic, \"disabled\");\n }\n r(\"SmoothedXYLineSeries\").setAll({\n tension: 0.5\n });\n r(\"SmoothedXLineSeries\").setAll({\n tension: 0.5\n });\n r(\"SmoothedYLineSeries\").setAll({\n tension: 0.5\n });\n r(\"Candlestick\").setAll({\n position: \"absolute\",\n isMeasured: false,\n width: percent(50),\n height: percent(50),\n strokeWidth: 1,\n strokeOpacity: 1,\n cornerRadiusBL: 0,\n cornerRadiusTL: 0,\n cornerRadiusBR: 0,\n cornerRadiusTR: 0,\n fillOpacity: 1,\n role: \"figure\"\n });\n r(\"OHLC\").setAll({\n width: percent(80),\n height: percent(80)\n });\n r(\"CandlestickSeries\").setAll({\n lowValueXGrouped: \"low\",\n lowValueYGrouped: \"low\",\n highValueXGrouped: \"high\",\n highValueYGrouped: \"high\",\n openValueXGrouped: \"open\",\n openValueYGrouped: \"open\",\n valueXGrouped: \"close\",\n valueYGrouped: \"close\"\n });\n // These rules can be used for regular columns, too\n {\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"riseFromOpen\", {});\n setColor(rule, \"fill\", ic, \"positive\");\n setColor(rule, \"stroke\", ic, \"positive\");\n }\n {\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\"]).states.create(\"dropFromOpen\", {});\n setColor(rule, \"fill\", ic, \"negative\");\n setColor(rule, \"stroke\", ic, \"negative\");\n }\n // Hollow\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromOpen\", {\n fillOpacity: 0\n });\n r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromOpen\", {\n fillOpacity: 1\n });\n {\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"riseFromPrevious\", {});\n setColor(rule, \"fill\", ic, \"positive\");\n setColor(rule, \"stroke\", ic, \"positive\");\n }\n {\n const rule = r(\"Rectangle\", [\"column\", \"autocolor\", \"pro\"]).states.create(\"dropFromPrevious\", {});\n setColor(rule, \"fill\", ic, \"negative\");\n setColor(rule, \"stroke\", ic, \"negative\");\n }\n // AXIS RANGE GRIP\n {\n const rule = r(\"RoundedRectangle\", [\"rangegrip\"]);\n rule.setAll({\n strokeOpacity: 0,\n fillOpacity: 0,\n strokeWidth: 1,\n width: 12,\n height: 12\n });\n }\n {\n const rule = r(\"Graphics\", [\"rangegrip\", \"button\", \"icon\"]);\n rule.setAll({\n interactive: false,\n crisp: true,\n strokeOpacity: 0.5,\n draw: display => {\n display.moveTo(0, 0.5);\n display.lineTo(0, 12.5);\n display.moveTo(2, 0.5);\n display.lineTo(2, 12.5);\n display.moveTo(4, 0.5);\n display.lineTo(4, 12.5);\n }\n });\n setColor(rule, \"stroke\", ic, \"secondaryButtonText\");\n }\n r(\"Button\", [\"rangegrip\"]).setAll({\n draggable: true,\n paddingTop: 0,\n paddingBottom: 0\n });\n r(\"Button\", [\"rangegrip\", \"vertical\"]).setAll({\n rotation: 90,\n cursorOverStyle: \"ns-resize\",\n centerX: p50\n });\n r(\"Button\", [\"rangegrip\", \"horizontal\"]).setAll({\n cursorOverStyle: \"ew-resize\",\n centerX: p50\n });\n r(\"Button\", [\"rangegrip\", \"vertical\", \"left\"]).setAll({\n centerY: p100\n });\n r(\"Button\", [\"rangegrip\", \"vertical\", \"right\"]).setAll({\n centerY: 0\n });\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"top\"]).setAll({\n centerY: 0\n });\n r(\"Button\", [\"rangegrip\", \"horizontal\", \"bottom\"]).setAll({\n centerY: p100\n });\n }\n}\n//# sourceMappingURL=XYChartDefaultTheme.js.map","import { Container } from \"../../core/render/Container\";\nimport { p100 } from \"../../core/util/Percent\";\n/**\r\n * A base class for all charts.\r\n */\nexport class Chart extends Container {\n constructor() {\n super(...arguments);\n /**\r\n * A [[Container]] chart places its elements in.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"chartContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Container.new(this._root, {\n width: p100,\n height: p100,\n interactiveChildren: false\n }))\n });\n /**\r\n * A [[Container]] chart places its bullets in.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"bulletsContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n interactiveChildren: false,\n isMeasured: false,\n position: \"absolute\",\n width: p100,\n height: p100\n })\n });\n }\n}\nObject.defineProperty(Chart, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Chart\"\n});\nObject.defineProperty(Chart, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([Chart.className])\n});\n//# sourceMappingURL=Chart.js.map","import { Chart } from \"./Chart\";\nimport { Container } from \"../../core/render/Container\";\nimport { ListAutoDispose } from \"../../core/util/List\";\nimport { p100 } from \"../../core/util/Percent\";\nimport * as $array from \"../../core/util/Array\";\n/**\r\n * A base class for all series-based charts.\r\n */\nexport class SerialChart extends Chart {\n constructor() {\n super(...arguments);\n /**\r\n * A [[Container]] where chart will store all series.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"seriesContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n width: p100,\n height: p100,\n isMeasured: false\n })\n });\n /**\r\n * A list of chart's series.\r\n */\n Object.defineProperty(this, \"series\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListAutoDispose()\n });\n }\n _afterNew() {\n super._afterNew();\n this._disposers.push(this.series);\n const children = this.seriesContainer.children;\n this._disposers.push(this.series.events.onAll(change => {\n if (change.type === \"clear\") {\n $array.each(change.oldValues, series => {\n this._removeSeries(series);\n });\n const colors = this.get(\"colors\");\n if (colors) {\n colors.reset();\n }\n } else if (change.type === \"push\") {\n children.moveValue(change.newValue);\n this._processSeries(change.newValue);\n } else if (change.type === \"setIndex\") {\n children.setIndex(change.index, change.newValue);\n this._processSeries(change.newValue);\n } else if (change.type === \"insertIndex\") {\n children.insertIndex(change.index, change.newValue);\n this._processSeries(change.newValue);\n } else if (change.type === \"removeIndex\") {\n this._removeSeries(change.oldValue);\n } else if (change.type === \"moveIndex\") {\n children.moveValue(change.value, change.newIndex);\n this._processSeries(change.value);\n } else {\n throw new Error(\"Unknown IListEvent type\");\n }\n }));\n }\n _processSeries(series) {\n series.chart = this;\n series._placeBulletsContainer(this);\n }\n _removeSeries(series) {\n if (!series.isDisposed()) {\n this.seriesContainer.children.removeValue(series);\n series._removeBulletsContainer();\n }\n }\n}\nObject.defineProperty(SerialChart, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"SerialChart\"\n});\nObject.defineProperty(SerialChart, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Chart.classNames.concat([SerialChart.className])\n});\n//# sourceMappingURL=SerialChart.js.map","import * as $type from \"../util/Type\";\nimport * as $math from \"../util/Math\";\nimport * as $utils from \"../util/Utils\";\nimport { Rectangle } from \"./Rectangle\";\n/**\r\n * Draws a rectangle with rounded corners.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\nexport class RoundedRectangle extends Rectangle {\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"cornerRadiusTL\") || this.isDirty(\"cornerRadiusTR\") || this.isDirty(\"cornerRadiusBR\") || this.isDirty(\"cornerRadiusBL\")) {\n this._clear = true;\n }\n }\n _draw() {\n let width = this.width();\n let height = this.height();\n let w = width;\n let h = height;\n let wSign = w / Math.abs(width);\n let hSign = h / Math.abs(height);\n if ($type.isNumber(w) && $type.isNumber(h)) {\n let minSide = Math.min(w, h) / 2;\n let crtl = $utils.relativeToValue(this.get(\"cornerRadiusTL\", 8), minSide);\n let crtr = $utils.relativeToValue(this.get(\"cornerRadiusTR\", 8), minSide);\n let crbr = $utils.relativeToValue(this.get(\"cornerRadiusBR\", 8), minSide);\n let crbl = $utils.relativeToValue(this.get(\"cornerRadiusBL\", 8), minSide);\n let maxcr = Math.min(Math.abs(w / 2), Math.abs(h / 2));\n crtl = $math.fitToRange(crtl, 0, maxcr);\n crtr = $math.fitToRange(crtr, 0, maxcr);\n crbr = $math.fitToRange(crbr, 0, maxcr);\n crbl = $math.fitToRange(crbl, 0, maxcr);\n const display = this._display;\n display.moveTo(crtl * wSign, 0);\n display.lineTo(w - crtr * wSign, 0);\n if (crtr > 0) {\n display.arcTo(w, 0, w, crtr * hSign, crtr);\n }\n display.lineTo(w, h - crbr * hSign);\n if (crbr > 0) {\n display.arcTo(w, h, w - crbr * wSign, h, crbr);\n }\n display.lineTo(crbl * wSign, h);\n if (crbl > 0) {\n display.arcTo(0, h, 0, h - crbl * hSign, crbl);\n }\n display.lineTo(0, crtl * hSign);\n if (crtl > 0) {\n display.arcTo(0, 0, crtl * wSign, 0, crtl);\n }\n display.closePath();\n }\n }\n}\nObject.defineProperty(RoundedRectangle, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"RoundedRectangle\"\n});\nObject.defineProperty(RoundedRectangle, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Rectangle.classNames.concat([RoundedRectangle.className])\n});\n//# sourceMappingURL=RoundedRectangle.js.map","import { RoundedRectangle } from \"../render/RoundedRectangle\";\nimport { Container } from \"./Container\";\nimport * as $utils from \"../../core/util/Utils\";\n/**\r\n * Draws an interactive button.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/buttons/} for more info\r\n * @important\r\n */\nexport class Button extends Container {\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"button\"]);\n super._afterNew();\n if (!this._settings.background) {\n this.set(\"background\", RoundedRectangle.new(this._root, {\n themeTags: $utils.mergeTags(this._settings.themeTags, [\"background\"])\n }));\n }\n this.setPrivate(\"trustBounds\", true);\n }\n _prepareChildren() {\n super._prepareChildren();\n if (this.isDirty(\"icon\")) {\n const previous = this._prevSettings.icon;\n const icon = this.get(\"icon\");\n if (icon !== previous) {\n this._disposeProperty(\"icon\");\n if (previous) {\n previous.dispose();\n }\n if (icon) {\n this.children.push(icon);\n }\n this._prevSettings.icon = icon;\n }\n }\n if (this.isDirty(\"label\")) {\n const previous = this._prevSettings.label;\n const label = this.get(\"label\");\n if (label !== previous) {\n this._disposeProperty(\"label\");\n if (previous) {\n previous.dispose();\n }\n if (label) {\n this.children.push(label);\n }\n this._prevSettings.label = label;\n }\n }\n }\n}\nObject.defineProperty(Button, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Button\"\n});\nObject.defineProperty(Button, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([Button.className])\n});\n//# sourceMappingURL=Button.js.map",";\nimport { XYChartDefaultTheme } from \"./XYChartDefaultTheme\";\nimport { Container } from \"../../core/render/Container\";\nimport { Rectangle } from \"../../core/render/Rectangle\";\nimport { SerialChart } from \"../../core/render/SerialChart\";\nimport { ListAutoDispose } from \"../../core/util/List\";\nimport { p100 } from \"../../core/util/Percent\";\nimport { Button } from \"../../core/render/Button\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport { Percent } from \"../../core/util/Percent\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $order from \"../../core/util/Order\";\nimport * as $object from \"../../core/util/Object\";\nimport * as $utils from \"../../core/util/Utils\";\n/**\r\n * Creates an XY chart.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/} for more info\r\n * @important\r\n */\nexport class XYChart extends SerialChart {\n constructor() {\n super(...arguments);\n /**\r\n * A list of horizontal axes.\r\n */\n Object.defineProperty(this, \"xAxes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListAutoDispose()\n });\n /**\r\n * A list of vertical axes.\r\n */\n Object.defineProperty(this, \"yAxes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListAutoDispose()\n });\n /**\r\n * A [[Container]] located on top of the chart, used to store top horizontal\r\n * axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"topAxesContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.chartContainer.children.push(Container.new(this._root, {\n width: p100,\n layout: this._root.verticalLayout\n }))\n });\n /**\r\n * A [[Container]] located in the middle the chart, used to store vertical axes\r\n * and plot area container.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"yAxesAndPlotContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.chartContainer.children.push(Container.new(this._root, {\n width: p100,\n height: p100,\n layout: this._root.horizontalLayout\n }))\n });\n /**\r\n * A [[Container]] located on bottom of the chart, used to store bottom\r\n * horizontal axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"bottomAxesContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.chartContainer.children.push(Container.new(this._root, {\n width: p100,\n layout: this._root.verticalLayout\n }))\n });\n /**\r\n * A [[Container]] located on left of the chart, used to store left-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"leftAxesContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, {\n height: p100,\n layout: this._root.horizontalLayout\n }))\n });\n /**\r\n * A [[Container]] located in the middle of the chart, used to store plotContainer and topPlotContainer\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"plotsContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, {\n width: p100,\n height: p100,\n maskContent: false\n }))\n });\n /**\r\n * A [[Container]] located in the middle of the chart, used to store actual\r\n * plots (series).\r\n *\r\n * NOTE: `plotContainer` will automatically have its `background` preset. If\r\n * you need to modify background or outline for chart's plot area, you can\r\n * use `plotContainer.get(\"background\")` for that.*\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"plotContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.plotsContainer.children.push(Container.new(this._root, {\n width: p100,\n height: p100\n }))\n });\n /**\r\n * A [[Container]] used for any elements that need to be displayed over\r\n * regular `plotContainer`.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"topPlotContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.plotsContainer.children.push(Container.new(this._root, {\n width: p100,\n height: p100\n }))\n });\n /**\r\n * A [[Container]] axis grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"gridContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.plotContainer.children.push(Container.new(this._root, {\n width: p100,\n height: p100,\n isMeasured: false\n }))\n });\n /**\r\n * A [[Container]] axis background grid elements are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"topGridContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n width: p100,\n height: p100,\n isMeasured: false\n })\n });\n /**\r\n * A [[Container]] located on right of the chart, used to store right-hand\r\n * vertical axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/xy-chart-containers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"rightAxesContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.yAxesAndPlotContainer.children.push(Container.new(this._root, {\n height: p100,\n layout: this._root.horizontalLayout\n }))\n });\n /**\r\n * A [[Container]] axis headers are stored in.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"axisHeadersContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.plotContainer.children.push(Container.new(this._root, {}))\n });\n /**\r\n * A button that is shown when chart is not fully zoomed out.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/zoom-and-pan/#Zoom_out_button} for more info\r\n * @default Button.new()\r\n */\n Object.defineProperty(this, \"zoomOutButton\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.topPlotContainer.children.push(Button.new(this._root, {\n themeTags: [\"zoom\"],\n icon: Graphics.new(this._root, {\n themeTags: [\"button\", \"icon\"]\n })\n }))\n });\n Object.defineProperty(this, \"_movePoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n x: 0,\n y: 0\n }\n });\n Object.defineProperty(this, \"_wheelDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_otherCharts\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_movePoints\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_downStartX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downEndX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downStartY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downEndY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _afterNew() {\n this._defaultThemes.push(XYChartDefaultTheme.new(this._root));\n super._afterNew();\n this._disposers.push(this.xAxes);\n this._disposers.push(this.yAxes);\n const root = this._root;\n let verticalLayout = this._root.verticalLayout;\n const zoomOutButton = this.zoomOutButton;\n zoomOutButton.events.on(\"click\", () => {\n this.zoomOut();\n });\n zoomOutButton.hide(0);\n zoomOutButton.states.lookup(\"default\").set(\"opacity\", 1);\n this.chartContainer.set(\"layout\", verticalLayout);\n const plotContainer = this.plotContainer;\n plotContainer.children.push(this.seriesContainer);\n this._disposers.push(this._processAxis(this.xAxes, this.bottomAxesContainer));\n this._disposers.push(this._processAxis(this.yAxes, this.leftAxesContainer));\n plotContainer.children.push(this.topGridContainer);\n plotContainer.children.push(this.bulletsContainer);\n // Setting trasnparent background so that full body of the plot container\n // is interactive\n plotContainer.set(\"interactive\", true);\n plotContainer.set(\"interactiveChildren\", false);\n plotContainer.set(\"background\", Rectangle.new(root, {\n themeTags: [\"plotbackground\", \"xy\", \"background\"]\n }));\n this._disposers.push(plotContainer.events.on(\"pointerdown\", event => {\n this._handlePlotDown(event);\n }));\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", event => {\n this._handlePlotUp(event);\n }));\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", event => {\n this._handlePlotMove(event);\n }));\n this._maskGrid();\n this._setUpTouch();\n }\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"pinchZoomX\") || this.isDirty(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\")) {\n this._setUpTouch();\n }\n }\n _setUpTouch() {\n if (!this.plotContainer._display.cancelTouch) {\n this.plotContainer._display.cancelTouch = this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\") || this.get(\"panX\") || this.get(\"panY\") ? true : false;\n }\n }\n _maskGrid() {\n this.gridContainer.set(\"maskContent\", true);\n this.topGridContainer.set(\"maskContent\", true);\n }\n _removeSeries(series) {\n series._unstack();\n if (series._posXDp) {\n series._posXDp.dispose();\n }\n if (series._posYDp) {\n series._posYDp.dispose();\n }\n series.set(\"baseAxis\", undefined);\n const xAxis = series.get(\"xAxis\");\n if (xAxis) {\n $array.remove(xAxis.series, series);\n xAxis.markDirtyExtremes();\n }\n const yAxis = series.get(\"yAxis\");\n if (yAxis) {\n $array.remove(yAxis.series, series);\n yAxis.markDirtyExtremes();\n }\n const cursor = this.get(\"cursor\");\n if (cursor) {\n const snapToSeries = cursor.get(\"snapToSeries\");\n if (snapToSeries) {\n $array.remove(snapToSeries, series);\n }\n }\n super._removeSeries(series);\n }\n /**\r\n * This method is invoked when mouse wheel is used over chart's plot\r\n * container, and handles zooming/pan.\r\n *\r\n * You can invoke this method manually, if you need to mimic chart's wheel\r\n * behavior over other elements of the chart.\r\n */\n handleWheel(event) {\n const wheelX = this.get(\"wheelX\");\n const wheelY = this.get(\"wheelY\");\n const plotContainer = this.plotContainer;\n const wheelEvent = event.originalEvent;\n // Ignore wheel event if it is happening on a non-chart element, e.g. if\n // some page element is over the chart.\n if ($utils.isLocalEvent(wheelEvent, this)) {\n wheelEvent.preventDefault();\n } else {\n return;\n }\n const plotPoint = plotContainer.toLocal(event.point);\n const wheelStep = this.get(\"wheelStep\", 0.2);\n const shiftY = wheelEvent.deltaY / 100;\n const shiftX = wheelEvent.deltaX / 100;\n const wheelZoomPositionX = this.get(\"wheelZoomPositionX\");\n const wheelZoomPositionY = this.get(\"wheelZoomPositionY\");\n if ((wheelX === \"zoomX\" || wheelX === \"zoomXY\") && shiftX != 0) {\n this.xAxes.each(axis => {\n if (axis.get(\"zoomX\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\n if (wheelZoomPositionX != null) {\n position = wheelZoomPositionX;\n }\n let newStart = start - wheelStep * (end - start) * shiftX * position;\n let newEnd = end + wheelStep * (end - start) * shiftX * (1 - position);\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n }\n });\n }\n if ((wheelY === \"zoomX\" || wheelY === \"zoomXY\") && shiftY != 0) {\n this.xAxes.each(axis => {\n if (axis.get(\"zoomX\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let position = axis.fixPosition(plotPoint.x / plotContainer.width());\n if (wheelZoomPositionX != null) {\n position = wheelZoomPositionX;\n }\n let newStart = start - wheelStep * (end - start) * shiftY * position;\n let newEnd = end + wheelStep * (end - start) * shiftY * (1 - position);\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n }\n });\n }\n if ((wheelX === \"zoomY\" || wheelX === \"zoomXY\") && shiftX != 0) {\n this.yAxes.each(axis => {\n if (axis.get(\"zoomY\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\n if (wheelZoomPositionY != null) {\n position = wheelZoomPositionY;\n }\n let newStart = start - wheelStep * (end - start) * shiftX * position;\n let newEnd = end + wheelStep * (end - start) * shiftX * (1 - position);\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n }\n });\n }\n if ((wheelY === \"zoomY\" || wheelY === \"zoomXY\") && shiftY != 0) {\n this.yAxes.each(axis => {\n if (axis.get(\"zoomY\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let position = axis.fixPosition(plotPoint.y / plotContainer.height());\n if (wheelZoomPositionY != null) {\n position = wheelZoomPositionY;\n }\n let newStart = start - wheelStep * (end - start) * shiftY * position;\n let newEnd = end + wheelStep * (end - start) * shiftY * (1 - position);\n if (1 / (newEnd - newStart) < axis.getPrivate(\"maxZoomFactor\", Infinity) / axis.get(\"minZoomCount\", 1)) {\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n }\n });\n }\n if ((wheelX === \"panX\" || wheelX === \"panXY\") && shiftX != 0) {\n this.xAxes.each(axis => {\n if (axis.get(\"panX\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\n let newStart = start + delta;\n let newEnd = end + delta;\n let se = this._fixWheel(newStart, newEnd);\n newStart = se[0];\n newEnd = se[1];\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n });\n }\n if ((wheelY === \"panX\" || wheelY === \"panXY\") && shiftY != 0) {\n this.xAxes.each(axis => {\n if (axis.get(\"panX\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\n let newStart = start + delta;\n let newEnd = end + delta;\n let se = this._fixWheel(newStart, newEnd);\n newStart = se[0];\n newEnd = se[1];\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n });\n }\n if ((wheelX === \"panY\" || wheelX === \"panXY\") && shiftX != 0) {\n this.yAxes.each(axis => {\n if (axis.get(\"panY\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftX;\n let newStart = start + delta;\n let newEnd = end + delta;\n let se = this._fixWheel(newStart, newEnd);\n newStart = se[0];\n newEnd = se[1];\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n });\n }\n if ((wheelY === \"panY\" || wheelY === \"panXY\") && shiftY != 0) {\n this.yAxes.each(axis => {\n if (axis.get(\"panY\")) {\n let start = axis.get(\"start\");\n let end = axis.get(\"end\");\n let delta = this._getWheelSign(axis) * wheelStep * (end - start) * shiftY;\n let newStart = start - delta;\n let newEnd = end - delta;\n let se = this._fixWheel(newStart, newEnd);\n newStart = se[0];\n newEnd = se[1];\n this._handleWheelAnimation(axis.zoom(newStart, newEnd));\n }\n });\n }\n }\n _handleSetWheel() {\n const wheelX = this.get(\"wheelX\");\n const wheelY = this.get(\"wheelY\");\n const plotContainer = this.plotContainer;\n if (wheelX !== \"none\" || wheelY !== \"none\") {\n this._wheelDp = plotContainer.events.on(\"wheel\", event => {\n const wheelEvent = event.originalEvent;\n if (wheelX !== \"none\" && Math.abs(wheelEvent.deltaX) != 0 || wheelY !== \"none\" && Math.abs(wheelEvent.deltaY) != 0) {\n this.handleWheel(event);\n }\n });\n this._disposers.push(this._wheelDp);\n } else {\n if (this._wheelDp) {\n this._wheelDp.dispose();\n }\n }\n }\n _getWheelSign(axis) {\n let sign = 1;\n if (axis.get(\"renderer\").get(\"inversed\")) {\n sign = -1;\n }\n return sign;\n }\n _fixWheel(start, end) {\n const diff = end - start;\n if (start < 0) {\n start = 0;\n end = start + diff;\n }\n if (end > 1) {\n end = 1;\n start = end - diff;\n }\n return [start, end];\n }\n _handlePlotDown(event) {\n const originalEvent = event.originalEvent;\n if (originalEvent.button == 2) {\n return;\n }\n const plotContainer = this.plotContainer;\n let local = plotContainer.toLocal(event.point);\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\n const pointerId = originalEvent.pointerId;\n if (pointerId) {\n if ($object.keys(plotContainer._downPoints).length > 0) {\n const xAxis = this.xAxes.getIndex(0);\n const yAxis = this.yAxes.getIndex(0);\n if (xAxis) {\n this._downStartX = xAxis.get(\"start\", 0);\n this._downEndX = xAxis.get(\"end\", 1);\n }\n if (yAxis) {\n this._downStartY = yAxis.get(\"start\", 0);\n this._downEndY = yAxis.get(\"end\", 1);\n }\n }\n }\n }\n if (this.get(\"panX\") || this.get(\"panY\")) {\n if (local.x >= 0 && local.y >= 0 && local.x <= plotContainer.width() && local.y <= this.height()) {\n //this._downPoint = local;\n this._downPoint = {\n x: originalEvent.clientX,\n y: originalEvent.clientY\n };\n const panX = this.get(\"panX\");\n const panY = this.get(\"panY\");\n if (panX) {\n this.xAxes.each(axis => {\n axis._panStart = axis.get(\"start\");\n axis._panEnd = axis.get(\"end\");\n });\n }\n if (panY) {\n this.yAxes.each(axis => {\n axis._panStart = axis.get(\"start\");\n axis._panEnd = axis.get(\"end\");\n });\n }\n const eventType = \"panstarted\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n }\n }\n }\n _handleWheelAnimation(animation) {\n if (animation) {\n animation.events.on(\"stopped\", () => {\n this._dispatchWheelAnimation();\n });\n } else {\n this._dispatchWheelAnimation();\n }\n }\n _dispatchWheelAnimation() {\n const eventType = \"wheelended\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this\n });\n }\n }\n _handlePlotUp(event) {\n const downPoint = this._downPoint;\n if (downPoint) {\n if (this.get(\"panX\") || this.get(\"panY\")) {\n if (event.originalEvent.clientX == downPoint.x && event.originalEvent.clientY == downPoint.y) {\n const eventType = \"pancancelled\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n }\n const eventType = \"panended\";\n if (this.events.isEnabled(eventType)) {\n this.events.dispatch(eventType, {\n type: eventType,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n }\n }\n // TODO: handle multitouch\n this._downPoint = undefined;\n this.xAxes.each(xAxis => {\n xAxis._isPanning = false;\n });\n this.yAxes.each(yAxis => {\n yAxis._isPanning = false;\n });\n }\n _handlePlotMove(event) {\n const plotContainer = this.plotContainer;\n if (this.get(\"pinchZoomX\") || this.get(\"pinchZoomY\")) {\n const touchEvent = event.originalEvent;\n const pointerId = touchEvent.pointerId;\n if (pointerId) {\n this._movePoints[pointerId] = event.point;\n if ($object.keys(plotContainer._downPoints).length > 1) {\n this._handlePinch();\n return;\n }\n }\n }\n let downPoint = this._downPoint;\n if (downPoint) {\n downPoint = plotContainer.toLocal(this._root.documentPointToRoot(downPoint));\n let local = plotContainer.toLocal(event.point);\n const panX = this.get(\"panX\");\n const panY = this.get(\"panY\");\n if (panX) {\n let scrollbarX = this.get(\"scrollbarX\");\n if (scrollbarX) {\n scrollbarX.events.disableType(\"rangechanged\");\n }\n this.xAxes.each(axis => {\n if (axis.get(\"panX\")) {\n axis._isPanning = true;\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\n let panStart = axis._panStart;\n let panEnd = axis._panEnd;\n let difference = panEnd - panStart;\n let deltaX = difference * (downPoint.x - local.x) / plotContainer.width();\n if (axis.get(\"renderer\").get(\"inversed\")) {\n deltaX *= -1;\n }\n let start = panStart + deltaX;\n let end = panEnd + deltaX;\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\n axis.set(\"start\", start);\n axis.set(\"end\", end);\n }\n }\n });\n if (scrollbarX) {\n scrollbarX.events.enableType(\"rangechanged\");\n }\n }\n if (panY) {\n let scrollbarY = this.get(\"scrollbarY\");\n if (scrollbarY) {\n scrollbarY.events.disableType(\"rangechanged\");\n }\n this.yAxes.each(axis => {\n if (axis.get(\"panY\")) {\n axis._isPanning = true;\n //const maxDeviation = axis.get(\"maxDeviation\", 0);\n let panStart = axis._panStart;\n let panEnd = axis._panEnd;\n let difference = panEnd - panStart;\n let deltaY = difference * (downPoint.y - local.y) / plotContainer.height();\n if (axis.get(\"renderer\").get(\"inversed\")) {\n deltaY *= -1;\n }\n let start = panStart - deltaY;\n let end = panEnd - deltaY;\n if (end - start < 1 + axis.get(\"maxDeviation\", 1) * 2) {\n axis.set(\"start\", start);\n axis.set(\"end\", end);\n }\n }\n });\n if (scrollbarY) {\n scrollbarY.events.enableType(\"rangechanged\");\n }\n }\n }\n }\n _handlePinch() {\n const plotContainer = this.plotContainer;\n let i = 0;\n let downPoints = [];\n let movePoints = [];\n $object.each(plotContainer._downPoints, (k, point) => {\n downPoints[i] = point;\n let movePoint = this._movePoints[k];\n if (movePoint) {\n movePoints[i] = movePoint;\n }\n i++;\n });\n if (downPoints.length > 1 && movePoints.length > 1) {\n const w = plotContainer.width();\n const h = plotContainer.height();\n let downPoint0 = downPoints[0];\n let downPoint1 = downPoints[1];\n let movePoint0 = movePoints[0];\n let movePoint1 = movePoints[1];\n if (downPoint0 && downPoint1 && movePoint0 && movePoint1) {\n movePoint0 = plotContainer.toLocal(movePoint0);\n movePoint1 = plotContainer.toLocal(movePoint1);\n downPoint0 = plotContainer.toLocal(downPoint0);\n downPoint1 = plotContainer.toLocal(downPoint1);\n if (this.get(\"pinchZoomX\")) {\n const downStartX = this._downStartX;\n const downEndX = this._downEndX;\n if (downStartX != null && downEndX != null) {\n if (downPoint0.x > downPoint1.x) {\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\n }\n let downPos0 = downStartX + downPoint0.x / w * (downEndX - downStartX);\n let downPos1 = downStartX + downPoint1.x / w * (downEndX - downStartX);\n let movePos0 = downStartX + movePoint0.x / w * (downEndX - downStartX);\n let movePos1 = downStartX + movePoint1.x / w * (downEndX - downStartX);\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\n let d = initialDistance / currentDistance;\n let s = downStartX * d + downPos0 - movePos0 * d;\n let e = downEndX * d + downPos1 - movePos1 * d;\n this.xAxes.each(xAxis => {\n let sa = xAxis.fixPosition(s);\n let ea = xAxis.fixPosition(e);\n xAxis.zoom(sa, ea, 0);\n });\n }\n }\n if (this.get(\"pinchZoomY\")) {\n const downStartY = this._downStartY;\n const downEndY = this._downEndY;\n if (downStartY != null && downEndY != null) {\n if (downPoint0.y < downPoint1.y) {\n [downPoint0, downPoint1] = [downPoint1, downPoint0];\n [movePoint0, movePoint1] = [movePoint1, movePoint0];\n }\n let downPos0 = downStartY + (1 - downPoint0.y / h) * (downEndY - downStartY);\n let downPos1 = downStartY + (1 - downPoint1.y / h) * (downEndY - downStartY);\n let movePos0 = downStartY + (1 - movePoint0.y / h) * (downEndY - downStartY);\n let movePos1 = downStartY + (1 - movePoint1.y / h) * (downEndY - downStartY);\n let initialDistance = Math.max(0.001, downPos1 - downPos0);\n let currentDistance = Math.max(0.001, movePos1 - movePos0);\n let d = initialDistance / currentDistance;\n let s = downStartY * d + downPos0 - movePos0 * d;\n let e = downEndY * d + downPos1 - movePos1 * d;\n this.yAxes.each(yAxis => {\n let sa = yAxis.fixPosition(s);\n let ea = yAxis.fixPosition(e);\n yAxis.zoom(sa, ea, 0);\n });\n }\n }\n }\n }\n }\n _handleCursorPosition() {\n const cursor = this.get(\"cursor\");\n if (cursor) {\n const cursorPoint = cursor.getPrivate(\"point\");\n let snapToSeries = cursor.get(\"snapToSeries\");\n if (cursor._downPoint) {\n snapToSeries = undefined;\n }\n if (snapToSeries && cursorPoint) {\n const snapToSeriesBy = cursor.get(\"snapToSeriesBy\");\n const dataItems = [];\n $array.each(snapToSeries, series => {\n if (!series.isHidden() && !series.isHiding()) {\n if (snapToSeriesBy != \"x!\" && snapToSeriesBy != \"y!\") {\n const startIndex = series.startIndex();\n const endIndex = series.endIndex();\n for (let i = startIndex; i < endIndex; i++) {\n const dataItem = series.dataItems[i];\n if (dataItem && !dataItem.isHidden()) {\n dataItems.push(dataItem);\n }\n }\n } else {\n const tooltipDataItem = series.get(\"tooltipDataItem\");\n if (tooltipDataItem) {\n dataItems.push(tooltipDataItem);\n }\n }\n }\n });\n let minDistance = Infinity;\n let closestItem;\n $array.each(dataItems, dataItem => {\n const point = dataItem.get(\"point\");\n if (point) {\n let distance = 0;\n if (snapToSeriesBy == \"x\" || snapToSeriesBy == \"x!\") {\n distance = Math.abs(cursorPoint.x - point.x);\n } else if (snapToSeriesBy == \"y\" || snapToSeriesBy == \"y!\") {\n distance = Math.abs(cursorPoint.y - point.y);\n } else {\n distance = Math.hypot(cursorPoint.x - point.x, cursorPoint.y - point.y);\n }\n if (distance < minDistance) {\n minDistance = distance;\n closestItem = dataItem;\n }\n }\n });\n $array.each(snapToSeries, series => {\n const tooltip = series.get(\"tooltip\");\n if (tooltip) {\n tooltip._setDataItem(undefined);\n }\n });\n if (closestItem) {\n let series = closestItem.component;\n series.showDataItemTooltip(closestItem);\n series.setRaw(\"tooltipDataItem\", closestItem);\n const point = closestItem.get(\"point\");\n if (point) {\n // removing x and y to solve #72225\n cursor.handleMove(series.toGlobal({\n x: point.x - series.x(),\n y: point.y - series.y()\n }), true);\n }\n }\n }\n }\n }\n _updateCursor() {\n let cursor = this.get(\"cursor\");\n if (cursor) {\n cursor.updateCursor();\n }\n }\n _addCursor(cursor) {\n this.plotContainer.children.push(cursor);\n }\n _prepareChildren() {\n super._prepareChildren();\n this.series.each(series => {\n this._colorize(series);\n });\n if (this.isDirty(\"wheelX\") || this.isDirty(\"wheelY\")) {\n this._handleSetWheel();\n }\n if (this.isDirty(\"cursor\")) {\n const previous = this._prevSettings.cursor;\n const cursor = this.get(\"cursor\");\n if (cursor !== previous) {\n this._disposeProperty(\"cursor\");\n if (previous) {\n previous.dispose();\n }\n if (cursor) {\n cursor._setChart(this);\n this._addCursor(cursor);\n this._pushPropertyDisposer(\"cursor\", cursor.events.on(\"selectended\", () => {\n this._handleCursorSelectEnd();\n }));\n }\n //this.setRaw(\"cursor\", cursor) // to reset previous value\n this._prevSettings.cursor = cursor;\n }\n }\n if (this.isDirty(\"scrollbarX\")) {\n const previous = this._prevSettings.scrollbarX;\n const scrollbarX = this.get(\"scrollbarX\");\n if (scrollbarX !== previous) {\n this._disposeProperty(\"scrollbarX\");\n if (previous) {\n previous.dispose();\n }\n if (scrollbarX) {\n if (!scrollbarX.parent) {\n this.topAxesContainer.children.push(scrollbarX);\n }\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"rangechanged\", e => {\n this._handleScrollbar(this.xAxes, e.start, e.end, e.grip);\n }));\n this._pushPropertyDisposer(\"scrollbarX\", scrollbarX.events.on(\"released\", () => {\n this.xAxes.each(axis => {\n if (axis.get(\"zoomable\")) {\n this._handleAxisSelection(axis);\n }\n });\n }));\n // Used to populate `ariaLabel` with meaningful values\n scrollbarX.setPrivate(\"positionTextFunction\", position => {\n const axis = this.xAxes.getIndex(0);\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\n });\n }\n this._prevSettings.scrollbarX = scrollbarX;\n }\n }\n if (this.isDirty(\"scrollbarY\")) {\n const previous = this._prevSettings.scrollbarY;\n const scrollbarY = this.get(\"scrollbarY\");\n if (scrollbarY !== previous) {\n this._disposeProperty(\"scrollbarY\");\n if (previous) {\n previous.dispose();\n }\n if (scrollbarY) {\n if (!scrollbarY.parent) {\n this.rightAxesContainer.children.push(scrollbarY);\n }\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"rangechanged\", e => {\n this._handleScrollbar(this.yAxes, e.start, e.end, e.grip);\n }));\n this._pushPropertyDisposer(\"scrollbarY\", scrollbarY.events.on(\"released\", () => {\n this.yAxes.each(axis => {\n if (axis.get(\"zoomable\")) {\n this._handleAxisSelection(axis);\n }\n });\n }));\n // Used to populate `ariaLabel` with meaningful values\n scrollbarY.setPrivate(\"positionTextFunction\", position => {\n const axis = this.yAxes.getIndex(0);\n return axis ? axis.getTooltipText(position, false) || \"\" : \"\";\n });\n }\n this._prevSettings.scrollbarY = scrollbarY;\n }\n }\n this._handleZoomOut();\n }\n _processSeries(series) {\n super._processSeries(series);\n const xAxis = series.get(\"xAxis\");\n const yAxis = series.get(\"yAxis\");\n $array.move(xAxis.series, series);\n $array.move(yAxis.series, series);\n series._posXDp = series.addDisposer(xAxis.events.on(\"positionchanged\", () => {\n series._fixPosition();\n }));\n series._posXDp = series.addDisposer(yAxis.events.on(\"positionchanged\", () => {\n series._fixPosition();\n }));\n if (!series.get(\"baseAxis\")) {\n if (yAxis.isType(\"CategoryAxis\") || yAxis.isType(\"DateAxis\")) {\n series.set(\"baseAxis\", yAxis);\n } else {\n series.set(\"baseAxis\", xAxis);\n }\n }\n if (series.get(\"stacked\")) {\n series._markDirtyKey(\"stacked\");\n $array.each(series.dataItems, dataItem => {\n dataItem.set(\"stackToItemY\", undefined);\n dataItem.set(\"stackToItemX\", undefined);\n });\n }\n series._markDirtyAxes();\n yAxis.markDirtyExtremes();\n xAxis.markDirtyExtremes();\n xAxis._seriesAdded = true;\n yAxis._seriesAdded = true;\n this._colorize(series);\n }\n _colorize(series) {\n const colorSet = this.get(\"colors\");\n if (colorSet) {\n if (series.get(\"fill\") == null) {\n const color = colorSet.next();\n series._setSoft(\"stroke\", color);\n series._setSoft(\"fill\", color);\n }\n }\n }\n _handleCursorSelectEnd() {\n const cursor = this.get(\"cursor\");\n const behavior = cursor.get(\"behavior\");\n const downPositionX = cursor.getPrivate(\"downPositionX\", 0);\n const downPositionY = cursor.getPrivate(\"downPositionY\", 0);\n const positionX = Math.min(1, Math.max(0, cursor.getPrivate(\"positionX\", 0.5)));\n const positionY = Math.min(1, Math.max(0, cursor.getPrivate(\"positionY\", 0.5)));\n this.xAxes.each(axis => {\n if (behavior === \"zoomX\" || behavior === \"zoomXY\") {\n let position0 = axis.toAxisPosition(downPositionX);\n let position1 = axis.toAxisPosition(positionX);\n axis.zoom(position0, position1);\n }\n axis.setPrivate(\"updateScrollbar\", true);\n });\n this.yAxes.each(axis => {\n if (behavior === \"zoomY\" || behavior === \"zoomXY\") {\n let position0 = axis.toAxisPosition(downPositionY);\n let position1 = axis.toAxisPosition(positionY);\n axis.zoom(position0, position1);\n }\n axis.setPrivate(\"updateScrollbar\", true);\n });\n }\n _handleScrollbar(axes, start, end, priority) {\n axes.each(axis => {\n let axisStart = axis.fixPosition(start);\n let axisEnd = axis.fixPosition(end);\n let zoomAnimation = axis.zoom(axisStart, axisEnd, undefined, priority);\n const updateScrollbar = \"updateScrollbar\";\n axis.setPrivateRaw(updateScrollbar, false);\n if (zoomAnimation) {\n zoomAnimation.events.on(\"stopped\", () => {\n axis.setPrivateRaw(updateScrollbar, true);\n });\n } else {\n axis.setPrivateRaw(updateScrollbar, true);\n }\n });\n }\n _processAxis(axes, container) {\n return axes.events.onAll(change => {\n if (change.type === \"clear\") {\n $array.each(change.oldValues, axis => {\n this._removeAxis(axis);\n });\n } else if (change.type === \"push\") {\n container.children.push(change.newValue);\n change.newValue.processChart(this);\n } else if (change.type === \"setIndex\") {\n container.children.setIndex(change.index, change.newValue);\n change.newValue.processChart(this);\n } else if (change.type === \"insertIndex\") {\n container.children.insertIndex(change.index, change.newValue);\n change.newValue.processChart(this);\n } else if (change.type === \"removeIndex\") {\n this._removeAxis(change.oldValue);\n } else if (change.type === \"moveIndex\") {\n container.children.moveValue(change.value, change.newIndex);\n change.value.processChart(this);\n } else {\n throw new Error(\"Unknown IListEvent type\");\n }\n });\n }\n _removeAxis(axis) {\n if (!axis.isDisposed()) {\n const axisParent = axis.parent;\n if (axisParent) {\n axisParent.children.removeValue(axis);\n }\n const gridContainer = axis.gridContainer;\n const gridParent = gridContainer.parent;\n if (gridParent) {\n gridParent.children.removeValue(gridContainer);\n }\n const topGridContainer = axis.topGridContainer;\n const topGridParent = topGridContainer.parent;\n if (topGridParent) {\n topGridParent.children.removeValue(topGridContainer);\n }\n }\n }\n _updateChartLayout() {\n const left = this.leftAxesContainer.width();\n const right = this.rightAxesContainer.width();\n const bottomAxesContainer = this.bottomAxesContainer;\n bottomAxesContainer.set(\"paddingLeft\", left);\n bottomAxesContainer.set(\"paddingRight\", right);\n const topAxesContainer = this.topAxesContainer;\n topAxesContainer.set(\"paddingLeft\", left);\n topAxesContainer.set(\"paddingRight\", right);\n }\n /**\r\n * @ignore\r\n */\n processAxis(axis) {\n var cursor = this.get(\"cursor\");\n if (cursor) {\n this.addDisposer(axis.on(\"start\", () => {\n this._updateCursor();\n }));\n this.addDisposer(axis.on(\"end\", () => {\n this._updateCursor();\n }));\n }\n }\n _handleAxisSelection(axis, force) {\n let start = axis.fixPosition(axis.get(\"start\", 0));\n let end = axis.fixPosition(axis.get(\"end\", 1));\n if (start > end) {\n [start, end] = [end, start];\n }\n if (this.xAxes.indexOf(axis) != -1) {\n if (force || axis.getPrivate(\"updateScrollbar\")) {\n let scrollbarX = this.get(\"scrollbarX\");\n if (scrollbarX && (!scrollbarX.getPrivate(\"isBusy\") || force)) {\n scrollbarX.setRaw(\"start\", start);\n scrollbarX.setRaw(\"end\", end);\n scrollbarX.updateGrips();\n }\n }\n } else if (this.yAxes.indexOf(axis) != -1) {\n if (force || axis.getPrivate(\"updateScrollbar\")) {\n let scrollbarY = this.get(\"scrollbarY\");\n if (scrollbarY && (!scrollbarY.getPrivate(\"isBusy\") || force)) {\n scrollbarY.setRaw(\"start\", start);\n scrollbarY.setRaw(\"end\", end);\n scrollbarY.updateGrips();\n }\n }\n }\n this._handleZoomOut();\n }\n _handleZoomOut() {\n let zoomOutButton = this.zoomOutButton;\n if (zoomOutButton && zoomOutButton.parent) {\n let visible = false;\n this.xAxes.each(axis => {\n if (axis.get(\"start\") != 0 || axis.get(\"end\") != 1) {\n visible = true;\n }\n });\n this.yAxes.each(axis => {\n if (axis.get(\"start\") != 0 || axis.get(\"end\") != 1) {\n visible = true;\n }\n });\n if (visible) {\n if (zoomOutButton.isHidden()) {\n zoomOutButton.show();\n }\n } else {\n zoomOutButton.hide();\n }\n }\n }\n /**\r\n * Checks if point is within plot area.\r\n *\r\n * @param point Reference point\r\n * @return Is within plot area?\r\n */\n inPlot(point) {\n const plotContainer = this.plotContainer;\n const otherCharts = this.getPrivate(\"otherCharts\", this._otherCharts);\n const global = plotContainer.toGlobal(point);\n if (point.x >= -0.5 && point.y >= -0.5 && point.x <= plotContainer.width() + 0.5 && point.y <= plotContainer.height() + 0.5) {\n return true;\n }\n if (otherCharts) {\n for (let i = otherCharts.length - 1; i >= 0; i--) {\n const chart = otherCharts[i];\n if (chart != this) {\n const chartPlotContainer = chart.plotContainer;\n const documentPoint = this._root.rootPointToDocument(global);\n const chartRoot = chart._root.documentPointToRoot(documentPoint);\n const local = chartPlotContainer.toLocal(chartRoot);\n if (local.x >= -0.1 && local.y >= -0.1 && local.x <= chartPlotContainer.width() + 0.1 && local.y <= chartPlotContainer.height() + 0.1) {\n return true;\n }\n }\n }\n }\n return false;\n }\n /**\r\n * @ignore\r\n */\n arrangeTooltips() {\n const plotContainer = this.plotContainer;\n const w = plotContainer.width();\n const h = plotContainer.height();\n const hh = this.height();\n let plotT = plotContainer._display.toGlobal({\n x: 0,\n y: 0\n });\n let plotB = plotContainer._display.toGlobal({\n x: w,\n y: h\n });\n const tooltips = [];\n let sum = 0;\n let minDistance = Infinity;\n let movePoint = this._movePoint;\n let maxTooltipDistance = this.get(\"maxTooltipDistance\");\n let maxTooltipDistanceBy = this.get(\"maxTooltipDistanceBy\", \"xy\");\n let closest;\n let closestPoint;\n if ($type.isNumber(maxTooltipDistance)) {\n this.series.each(series => {\n if (!series.isHidden()) {\n const tooltip = series.get(\"tooltip\");\n if (tooltip) {\n let point = tooltip.get(\"pointTo\");\n if (point) {\n let distance = Math.hypot(movePoint.x - point.x, movePoint.y - point.y);\n if (maxTooltipDistanceBy == \"x\") {\n distance = Math.abs(movePoint.x - point.x);\n } else if (maxTooltipDistanceBy == \"y\") {\n distance = Math.abs(movePoint.y - point.y);\n }\n if (distance < minDistance) {\n minDistance = distance;\n closest = series;\n closestPoint = point;\n }\n }\n }\n }\n });\n }\n const tooltipSeries = [];\n this.series.each(series => {\n const tooltip = series.get(\"tooltip\");\n if (tooltip && !tooltip.get(\"forceHidden\")) {\n let hidden = false;\n let point = tooltip.get(\"pointTo\");\n if (point) {\n if (maxTooltipDistance >= 0) {\n let point = tooltip.get(\"pointTo\");\n if (point && closestPoint) {\n if (series != closest) {\n let distance = Math.hypot(closestPoint.x - point.x, closestPoint.y - point.y);\n if (maxTooltipDistanceBy == \"x\") {\n distance = Math.abs(closestPoint.x - point.x);\n } else if (maxTooltipDistanceBy == \"y\") {\n distance = Math.abs(closestPoint.y - point.y);\n }\n if (distance > maxTooltipDistance) {\n hidden = true;\n }\n }\n }\n } else if (maxTooltipDistance == -1) {\n if (series != closest) {\n hidden = true;\n }\n }\n if (!this.inPlot(this._tooltipToLocal(point)) || !tooltip.dataItem) {\n hidden = true;\n } else {\n if (!hidden) {\n sum += point.y;\n }\n }\n if (hidden || series.isHidden() || series.isHiding()) {\n tooltip.hide(0);\n } else {\n tooltip.show();\n tooltips.push(tooltip);\n tooltipSeries.push(series);\n }\n }\n }\n });\n this.setPrivate(\"tooltipSeries\", tooltipSeries);\n if (this.get(\"arrangeTooltips\")) {\n const tooltipContainer = this._root.tooltipContainer;\n const count = tooltips.length;\n const average = sum / count;\n if (average > h / 2 + plotT.y) {\n tooltips.sort((a, b) => $order.compareNumber(b.get(\"pointTo\").y, a.get(\"pointTo\").y));\n let prevY = plotB.y;\n $array.each(tooltips, tooltip => {\n let height = tooltip.height();\n let centerY = tooltip.get(\"centerY\");\n if (centerY instanceof Percent) {\n height *= centerY.value;\n }\n height += tooltip.get(\"marginBottom\", 0);\n tooltip.set(\"bounds\", {\n left: plotT.x,\n top: plotT.y,\n right: plotB.x,\n bottom: prevY\n });\n tooltip.setPrivate(\"customData\", {\n left: plotT.x,\n top: plotT.y,\n right: plotB.x,\n bottom: prevY\n });\n prevY = Math.min(prevY - height, tooltip._fy - height);\n if (tooltip.parent == tooltipContainer) {\n tooltipContainer.children.moveValue(tooltip, 0);\n }\n });\n if (prevY < 0) {\n tooltips.reverse();\n let prevBottom = prevY;\n $array.each(tooltips, tooltip => {\n let bounds = tooltip.get(\"bounds\");\n if (bounds) {\n let top = bounds.top - prevY;\n let bottom = bounds.bottom - prevY;\n if (top < prevBottom) {\n top = prevBottom;\n bottom = top + tooltip.height();\n }\n tooltip.set(\"bounds\", {\n left: bounds.left,\n top: top,\n right: bounds.right,\n bottom: bottom\n });\n prevBottom = bounds.bottom - prevY + tooltip.get(\"marginBottom\", 0);\n }\n });\n }\n } else {\n tooltips.reverse();\n tooltips.sort((a, b) => $order.compareNumber(a.get(\"pointTo\").y, b.get(\"pointTo\").y));\n let prevY = 0;\n $array.each(tooltips, tooltip => {\n let height = tooltip.height();\n let centerY = tooltip.get(\"centerY\");\n if (centerY instanceof Percent) {\n height *= centerY.value;\n }\n height += tooltip.get(\"marginBottom\", 0);\n tooltip.set(\"bounds\", {\n left: plotT.x,\n top: prevY,\n right: plotB.x,\n bottom: Math.max(plotT.y + hh, prevY + height)\n });\n if (tooltip.parent == tooltipContainer) {\n tooltipContainer.children.moveValue(tooltip, 0);\n }\n prevY = Math.max(prevY + height, tooltip._fy + height);\n });\n if (prevY > hh) {\n tooltips.reverse();\n let prevBottom = hh;\n $array.each(tooltips, tooltip => {\n let bounds = tooltip.get(\"bounds\");\n if (bounds) {\n let top = bounds.top - (hh - prevY);\n let bottom = bounds.bottom - (hh - prevY);\n if (bottom > prevBottom) {\n bottom = prevBottom;\n top = bottom - tooltip.height();\n }\n tooltip.set(\"bounds\", {\n left: bounds.left,\n top: top,\n right: bounds.right,\n bottom: bottom\n });\n prevBottom = bottom - tooltip.height() - tooltip.get(\"marginBottom\", 0);\n }\n });\n }\n }\n }\n }\n _tooltipToLocal(point) {\n return this.plotContainer.toLocal(point);\n }\n /**\r\n * Fully zooms out the chart.\r\n */\n zoomOut() {\n this.xAxes.each(axis => {\n axis.setPrivate(\"updateScrollbar\", true);\n axis.zoom(0, 1);\n });\n this.yAxes.each(axis => {\n axis.setPrivate(\"updateScrollbar\", true);\n axis.zoom(0, 1);\n });\n }\n}\nObject.defineProperty(XYChart, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"XYChart\"\n});\nObject.defineProperty(XYChart, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: SerialChart.classNames.concat([XYChart.className])\n});\n//# sourceMappingURL=XYChart.js.map","import { Graphics } from \"../../../core/render/Graphics\";\n/**\r\n * Creates an axis grid line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Grid} for more info\r\n * @important\r\n */\nexport class Grid extends Graphics {\n _beforeChanged() {\n super._beforeChanged();\n if (this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\n this._clear = true;\n }\n }\n}\nObject.defineProperty(Grid, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Grid\"\n});\nObject.defineProperty(Grid, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Graphics.classNames.concat([Grid.className])\n});\n//# sourceMappingURL=Grid.js.map","import { Container } from \"../../core/render/Container\";\nimport { p100 } from \"../../core/util/Percent\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport { Grid } from \"./axes/Grid\";\n//import { Animations } from \"../core/util/Animation\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $object from \"../../core/util/Object\";\n/**\r\n * Creates a chart cursor for an [[XYChart]].\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/} for more info\r\n * @important\r\n */\nexport class XYCursor extends Container {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_alwaysShow\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\n Object.defineProperty(this, \"lineX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Grid.new(this._root, {\n themeTags: [\"x\"]\n }))\n });\n /**\r\n * A [[Grid]] elment that used for horizontal line of the cursor crosshair.\r\n *\r\n * @default Grid.new()\r\n */\n Object.defineProperty(this, \"lineY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Grid.new(this._root, {\n themeTags: [\"y\"]\n }))\n });\n /**\r\n * An element that represents current selection.\r\n *\r\n * @default Graphics.new()\r\n */\n Object.defineProperty(this, \"selection\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Graphics.new(this._root, {\n themeTags: [\"selection\", \"cursor\"],\n layer: 30\n }))\n });\n Object.defineProperty(this, \"_movePoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_lastPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n x: 0,\n y: 0\n }\n });\n Object.defineProperty(this, \"_lastPoint2\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {\n x: 0,\n y: 0\n }\n });\n Object.defineProperty(this, \"_tooltipX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_tooltipY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * A chart cursor is attached to.\r\n */\n Object.defineProperty(this, \"chart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_toX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_toY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"xy\", \"cursor\"]);\n super._afterNew();\n this.setAll({\n \"width\": p100,\n height: p100,\n isMeasured: true,\n position: \"absolute\"\n });\n this.states.create(\"hidden\", {\n visible: true,\n opacity: 0\n });\n this._drawLines();\n this.setPrivateRaw(\"visible\", false);\n this._disposers.push(this.setTimeout(() => {\n this.setPrivate(\"visible\", true);\n }, 500));\n this._disposers.push(this.lineX.events.on(\"positionchanged\", () => {\n this._handleXLine();\n }));\n this._disposers.push(this.lineY.events.on(\"positionchanged\", () => {\n this._handleYLine();\n }));\n this._disposers.push(this.lineX.events.on(\"focus\", () => this._handleLineFocus()));\n this._disposers.push(this.lineX.events.on(\"blur\", () => this._handleLineBlur()));\n this._disposers.push(this.lineY.events.on(\"focus\", () => this._handleLineFocus()));\n this._disposers.push(this.lineY.events.on(\"blur\", () => this._handleLineBlur()));\n if ($utils.supports(\"keyboardevents\")) {\n this._disposers.push($utils.addEventListener(document, \"keydown\", ev => {\n this._handleLineMove($utils.getEventKey(ev), ev.ctrlKey);\n }));\n }\n }\n _setUpTouch() {\n const chart = this.chart;\n if (chart) {\n chart.plotContainer._display.cancelTouch = this.get(\"behavior\") != \"none\" ? true : false;\n }\n }\n _handleXLine() {\n let x = this.lineX.x();\n let visible = true;\n if (x < 0 || x > this.width()) {\n visible = false;\n }\n this.lineX.setPrivate(\"visible\", visible);\n }\n _handleYLine() {\n let y = this.lineY.y();\n let visible = true;\n if (y < 0 || y > this.height()) {\n visible = false;\n }\n this.lineY.setPrivate(\"visible\", visible);\n }\n _handleLineMove(key, ctrlKey) {\n let dir = \"\";\n const chart = this.chart;\n let axis;\n if (chart && chart.xAxes.length) {\n if (this._root.focused(this.lineX)) {\n dir = \"positionX\";\n axis = chart.xAxes.getIndex(0);\n } else if (this._root.focused(this.lineY)) {\n axis = chart.yAxes.getIndex(0);\n dir = \"positionY\";\n }\n let m = 1;\n if (ctrlKey) {\n m = 5;\n }\n if (axis) {\n let inversed = axis.get(\"renderer\").get(\"inversed\", false);\n let step;\n if (key == \"ArrowRight\" || key == \"ArrowDown\") {\n step = 1;\n } else if (key == \"ArrowLeft\" || key == \"ArrowUp\") {\n step = -1;\n } else if (key == \"Tab\") {\n step = 0;\n }\n if (step != null) {\n if (inversed) {\n step *= -1;\n }\n this.set(dir, axis.nextPosition(step * m));\n }\n }\n }\n }\n _handleLineFocus() {\n this._alwaysShow = this.get(\"alwaysShow\", false);\n this.setAll({\n positionX: this.getPrivate(\"positionX\", 0),\n positionY: this.getPrivate(\"positionY\", 0),\n alwaysShow: true\n });\n this._handleLineMove(\"Tab\");\n }\n _handleLineBlur() {\n if (this.lineX.isFocus() || this.lineY.isFocus()) {\n this.setAll({\n positionX: undefined,\n positionY: undefined,\n alwaysShow: this._alwaysShow\n });\n }\n }\n _prepareChildren() {\n super._prepareChildren();\n if (this.isDirty(\"xAxis\")) {\n this._tooltipX = false;\n const xAxis = this.get(\"xAxis\");\n if (xAxis) {\n const tooltip = xAxis.get(\"tooltip\");\n if (tooltip) {\n this._tooltipX = true;\n this._disposers.push(tooltip.on(\"pointTo\", () => {\n this._updateXLine(tooltip);\n }));\n }\n }\n }\n if (this.isDirty(\"yAxis\")) {\n this._tooltipY = false;\n const yAxis = this.get(\"yAxis\");\n if (yAxis) {\n const tooltip = yAxis.get(\"tooltip\");\n if (tooltip) {\n this._tooltipY = true;\n this._disposers.push(tooltip.on(\"pointTo\", () => {\n this._updateYLine(tooltip);\n }));\n }\n }\n }\n }\n _handleSyncWith() {\n const chart = this.chart;\n if (chart) {\n const syncWith = this.get(\"syncWith\");\n const otherCharts = [];\n if (syncWith) {\n $array.each(syncWith, cursor => {\n const chart = cursor.chart;\n if (chart) {\n otherCharts.push(chart);\n }\n });\n }\n chart._otherCharts = otherCharts;\n }\n }\n _updateChildren() {\n super._updateChildren();\n this._handleSyncWith();\n if (this.isDirty(\"positionX\") || this.isDirty(\"positionY\")) {\n const positionX = this.get(\"positionX\");\n const positionY = this.get(\"positionY\");\n if (positionX == null && positionY == null) {\n this.hide(0);\n } else {\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\n this.handleMove();\n }\n }\n }\n _updateXLine(tooltip) {\n let x = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", {\n x: 0,\n y: 0\n })).x, 3);\n if (this._toX != x) {\n this.lineX.animate({\n key: \"x\",\n to: x,\n duration: tooltip.get(\"animationDuration\", 0),\n easing: tooltip.get(\"animationEasing\")\n });\n this._toX = x;\n }\n }\n _updateYLine(tooltip) {\n let y = $math.round(this._display.toLocal(tooltip.get(\"pointTo\", {\n x: 0,\n y: 0\n })).y, 3);\n if (this._toY != y) {\n this.lineY.animate({\n key: \"y\",\n to: y,\n duration: tooltip.get(\"animationDuration\", 0),\n easing: tooltip.get(\"animationEasing\")\n });\n this._toY = y;\n }\n }\n _drawLines() {\n this.lineX.set(\"draw\", display => {\n display.moveTo(0, 0);\n display.lineTo(0, this.height());\n });\n this.lineY.set(\"draw\", display => {\n display.moveTo(0, 0);\n display.lineTo(this.width(), 0);\n });\n }\n updateCursor() {\n if (this.get(\"alwaysShow\")) {\n this._movePoint = this.toGlobal(this._getPoint(this.get(\"positionX\", 0), this.get(\"positionY\", 0)));\n }\n this.handleMove();\n }\n _setChart(chart) {\n this.chart = chart;\n this._handleSyncWith();\n const plotContainer = chart.plotContainer;\n this.events.on(\"boundschanged\", () => {\n this._disposers.push(this.setTimeout(() => {\n this.updateCursor();\n }, 50));\n });\n //this._display.interactive = true;\n if ($utils.supports(\"touchevents\")) {\n this._disposers.push(plotContainer.events.on(\"click\", event => {\n if ($utils.isTouchEvent(event.originalEvent)) {\n this._handleMove(event);\n }\n }));\n this._setUpTouch();\n }\n this._disposers.push(plotContainer.events.on(\"pointerdown\", event => {\n this._handleCursorDown(event);\n }));\n this._disposers.push(plotContainer.events.on(\"globalpointerup\", event => {\n this._handleCursorUp(event);\n if (!event.native && !this.isHidden()) {\n this._handleMove(event);\n }\n }));\n this._disposers.push(plotContainer.events.on(\"globalpointermove\", event => {\n if (!this.get(\"syncWith\")) {\n if ($object.keys(plotContainer._downPoints).length == 0 && !event.native && this.isHidden()) {\n // Ignore mouse movement if it originates on outside element and\n // we're not dragging.\n return;\n }\n }\n this._handleMove(event);\n if (Math.hypot(this._lastPoint2.x - event.point.x, this._lastPoint2.y - event.point.y) > 1) {\n this._handleLineBlur();\n this._lastPoint2 = event.point;\n }\n }));\n const parent = this.parent;\n if (parent) {\n parent.children.moveValue(this.selection);\n }\n }\n _inPlot(point) {\n const chart = this.chart;\n if (chart) {\n return chart.inPlot(point);\n }\n return false;\n }\n _handleCursorDown(event) {\n if (event.originalEvent.button == 2) {\n return;\n }\n const rootPoint = event.point;\n let local = this._display.toLocal(rootPoint);\n const chart = this.chart;\n this.selection.set(\"draw\", () => {});\n if (chart && this._inPlot(local)) {\n this._downPoint = local;\n if (this.get(\"behavior\") != \"none\") {\n this.selection.show();\n const type = \"selectstarted\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n }\n let positionX = this._getPosition(local).x;\n let positionY = this._getPosition(local).y;\n this.setPrivate(\"downPositionX\", positionX);\n this.setPrivate(\"downPositionY\", positionY);\n }\n }\n _handleCursorUp(event) {\n // TODO: handle multitouch\n if (this._downPoint) {\n const behavior = this.get(\"behavior\", \"none\");\n if (behavior != \"none\") {\n if (behavior.charAt(0) === \"z\") {\n this.selection.hide();\n }\n const rootPoint = event.point;\n let local = this._display.toLocal(rootPoint);\n const downPoint = this._downPoint;\n const moveThreshold = this.get(\"moveThreshold\", 1);\n if (local && downPoint) {\n let dispatch = false;\n if (behavior === \"zoomX\" || behavior === \"zoomXY\" || behavior === \"selectX\" || behavior === \"selectXY\") {\n if (Math.abs(local.x - downPoint.x) > moveThreshold) {\n dispatch = true;\n }\n }\n if (behavior === \"zoomY\" || behavior === \"zoomXY\" || behavior === \"selectY\" || behavior === \"selectXY\") {\n if (Math.abs(local.y - downPoint.y) > moveThreshold) {\n dispatch = true;\n }\n }\n if (dispatch) {\n const type = \"selectended\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n } else {\n const type = \"selectcancelled\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n originalEvent: event.originalEvent\n });\n }\n }\n }\n }\n }\n this._downPoint = undefined;\n }\n _handleMove(event) {\n if (this.getPrivate(\"visible\")) {\n const chart = this.chart;\n if (chart && $object.keys(chart.plotContainer._downPoints).length > 1) {\n this.set(\"forceHidden\", true);\n return;\n } else {\n this.set(\"forceHidden\", false);\n }\n // TODO: handle multitouch\n const rootPoint = event.point;\n const lastPoint = this._lastPoint;\n if (Math.round(lastPoint.x) === Math.round(rootPoint.x) && Math.round(lastPoint.y) === Math.round(rootPoint.y)) {\n return;\n }\n this._lastPoint = rootPoint;\n this.setPrivate(\"lastPoint\", rootPoint);\n this.handleMove({\n x: rootPoint.x,\n y: rootPoint.y\n }, false, event.originalEvent);\n }\n }\n _getPosition(point) {\n return {\n x: point.x / this.width(),\n y: point.y / this.height()\n };\n }\n /**\r\n * Moves the cursor to X/Y coordinates within chart container (`point`).\r\n *\r\n * If `skipEvent` parameter is set to `true`, the move will not invoke\r\n * the `\"cursormoved\"` event.\r\n *\r\n * @param point X/Y to move cursor to\r\n * @param skipEvent Do not fire \"cursormoved\" event\r\n */\n handleMove(point, skipEvent, originalEvent) {\n if (!point) {\n point = this._movePoint;\n }\n const alwaysShow = this.get(\"alwaysShow\");\n if (!point) {\n this.hide(0);\n return;\n }\n this._movePoint = point;\n let local = this._display.toLocal(point);\n let chart = this.chart;\n if (chart && (this._inPlot(local) || this._downPoint)) {\n chart._movePoint = point;\n if (this.isHidden()) {\n this.show();\n const behavior = this.get(\"behavior\", \"\");\n if (behavior.charAt(0) == \"z\") {\n this.selection.set(\"draw\", () => {});\n }\n }\n let x = local.x;\n let y = local.y;\n let xyPos = this._getPosition(local);\n this.setPrivate(\"point\", local);\n let snapToSeries = this.get(\"snapToSeries\");\n if (this._downPoint) {\n snapToSeries = undefined;\n }\n let userPositionX = this.get(\"positionX\");\n let positionX = xyPos.x;\n if ($type.isNumber(userPositionX)) {\n positionX = userPositionX;\n }\n let userPositionY = this.get(\"positionY\");\n let positionY = xyPos.y;\n if ($type.isNumber(userPositionY)) {\n positionY = userPositionY;\n }\n this.setPrivate(\"positionX\", positionX);\n this.setPrivate(\"positionY\", positionY);\n const xy = this._getPoint(positionX, positionY);\n x = xy.x;\n y = xy.y;\n chart.xAxes.each(axis => {\n axis._handleCursorPosition(positionX, snapToSeries);\n if (alwaysShow) {\n axis.handleCursorShow();\n }\n });\n chart.yAxes.each(axis => {\n axis._handleCursorPosition(positionY, snapToSeries);\n if (alwaysShow) {\n axis.handleCursorShow();\n }\n });\n if (!skipEvent) {\n chart._handleCursorPosition();\n const type = \"cursormoved\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n point: point,\n originalEvent: originalEvent\n });\n }\n }\n this._updateLines(x, y);\n chart.arrangeTooltips();\n } else if (!this._downPoint) {\n if (!alwaysShow) {\n this.hide(0);\n const type = \"cursorhidden\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this\n });\n }\n }\n }\n if (this._downPoint && this.get(\"behavior\") != \"none\") {\n this._updateSelection(local);\n }\n }\n _getPoint(positionX, positionY) {\n return {\n x: this.width() * positionX,\n y: this.height() * positionY\n };\n }\n _updateLines(x, y) {\n if (!this._tooltipX) {\n this.lineX.set(\"x\", x);\n }\n if (!this._tooltipY) {\n this.lineY.set(\"y\", y);\n }\n this._drawLines();\n }\n _updateSelection(point) {\n const selection = this.selection;\n const behavior = this.get(\"behavior\");\n const w = this.width();\n const h = this.height();\n if (point.x < 0) {\n point.x = 0;\n }\n if (point.x > w) {\n point.x = w;\n }\n if (point.y < 0) {\n point.y = 0;\n }\n if (point.y > h) {\n point.y = h;\n }\n selection.set(\"draw\", display => {\n const downPoint = this._downPoint;\n if (downPoint) {\n if (behavior === \"zoomXY\" || behavior === \"selectXY\") {\n display.moveTo(downPoint.x, downPoint.y);\n display.lineTo(downPoint.x, point.y);\n display.lineTo(point.x, point.y);\n display.lineTo(point.x, downPoint.y);\n display.lineTo(downPoint.x, downPoint.y);\n } else if (behavior === \"zoomX\" || behavior === \"selectX\") {\n display.moveTo(downPoint.x, 0);\n display.lineTo(downPoint.x, h);\n display.lineTo(point.x, h);\n display.lineTo(point.x, 0);\n display.lineTo(downPoint.x, 0);\n } else if (behavior === \"zoomY\" || behavior === \"selectY\") {\n display.moveTo(0, downPoint.y);\n display.lineTo(w, downPoint.y);\n display.lineTo(w, point.y);\n display.lineTo(0, point.y);\n display.lineTo(0, downPoint.y);\n }\n }\n });\n }\n _onHide() {\n if (this.isHidden()) {\n let chart = this.chart;\n if (chart) {\n chart.xAxes.each(axis => {\n axis.handleCursorHide();\n });\n chart.yAxes.each(axis => {\n axis.handleCursorHide();\n });\n chart.series.each(series => {\n series.handleCursorHide();\n });\n }\n }\n super._onHide();\n }\n _onShow() {\n if (!this.isHidden()) {\n let chart = this.chart;\n if (chart) {\n chart.xAxes.each(axis => {\n axis.handleCursorShow();\n });\n chart.yAxes.each(axis => {\n axis.handleCursorShow();\n });\n }\n }\n super._onShow();\n }\n _dispose() {\n super._dispose();\n this.selection.dispose();\n }\n}\nObject.defineProperty(XYCursor, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"XYCursor\"\n});\nObject.defineProperty(XYCursor, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([XYCursor.className])\n});\n//# sourceMappingURL=XYCursor.js.map","import { List } from \"./List\";\n/**\r\n * A [[List]] that holds components data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\nexport class ListData extends List {\n constructor() {\n super(...arguments);\n /**\r\n * An optional processor for data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/#Pre_processing_data} for more info\r\n */\n Object.defineProperty(this, \"processor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n /**\r\n * @ignore\r\n */\n incrementRef() {}\n /**\r\n * @ignore\r\n */\n decrementRef() {}\n _onPush(newValue) {\n if (this.processor) {\n this.processor.processRow(newValue);\n }\n super._onPush(newValue);\n }\n _onInsertIndex(index, newValue) {\n if (this.processor) {\n this.processor.processRow(newValue);\n }\n super._onInsertIndex(index, newValue);\n }\n _onSetIndex(index, oldValue, newValue) {\n if (this.processor) {\n this.processor.processRow(newValue);\n }\n super._onSetIndex(index, oldValue, newValue);\n }\n}\n/**\r\n * @deprecated\r\n * @todo remove\r\n */\nexport class JsonData {\n constructor(value) {\n Object.defineProperty(this, \"processor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_value\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this._value = value;\n }\n incrementRef() {}\n decrementRef() {}\n}\n//# sourceMappingURL=Data.js.map","import { __awaiter } from \"tslib\";\nimport { Settings } from \"../util/Entity\";\nimport { Container } from \"./Container\";\nimport { ListData } from \"../util/Data\";\nimport * as $array from \"../util/Array\";\nimport * as $object from \"../util/Object\";\n/**\r\n * A base element that holds data bit (data item) for any [[Component]].\r\n */\nexport class DataItem extends Settings {\n constructor(component, dataContext, settings) {\n super(settings);\n /**\r\n * A data item's owener [[Component]].\r\n */\n Object.defineProperty(this, \"component\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A reference to actual item in source data this item is based on.\r\n */\n Object.defineProperty(this, \"dataContext\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * @todo requires description\r\n */\n Object.defineProperty(this, \"bullets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A set of \"open\" values.\r\n */\n Object.defineProperty(this, \"open\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A set of \"close\" values.\r\n */\n Object.defineProperty(this, \"close\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.dataContext = dataContext;\n this.component = component;\n this._settings.visible = true;\n this._checkDirty();\n }\n /**\r\n * @ignore\r\n */\n markDirty() {\n this.component.markDirtyValues(this);\n }\n _startAnimation() {\n this.component._root._addAnimation(this);\n }\n _animationTime() {\n return this.component._root.animationTime;\n }\n _dispose() {\n if (this.component) {\n this.component.disposeDataItem(this);\n }\n super._dispose();\n }\n /**\r\n * Shows a data item that's currently hidden.\r\n */\n show(duration) {\n this.setRaw(\"visible\", true);\n if (this.component) {\n this.component.showDataItem(this, duration);\n }\n }\n /**\r\n * Hides a data item that's currently visible.\r\n */\n hide(duration) {\n this.setRaw(\"visible\", false);\n if (this.component) {\n this.component.hideDataItem(this, duration);\n }\n }\n isHidden() {\n return !this.get(\"visible\");\n }\n}\n/**\r\n * A base class for elements that make use of data.\r\n */\nexport class Component extends Container {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_data\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListData()\n });\n Object.defineProperty(this, \"_dataItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_mainDataItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this._dataItems\n });\n Object.defineProperty(this, \"valueFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"fields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"id\"]\n });\n Object.defineProperty(this, \"_valueFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_valueFieldsF\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_fields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_fieldsF\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_valuesDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dataChanged\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dataGrouped\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * Indicates if the component has already been initialized.\r\n */\n Object.defineProperty(this, \"inited\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n }\n /**\r\n * Component's data.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/data/} for more info\r\n */\n set data(data) {\n data.incrementRef();\n this._data.decrementRef();\n this._data = data;\n }\n /**\r\n * @return Data\r\n */\n get data() {\n return this._data;\n }\n _dispose() {\n super._dispose();\n this._data.decrementRef();\n }\n _onDataClear() {}\n _afterNew() {\n super._afterNew();\n this._data.incrementRef();\n this._updateFields();\n this._disposers.push(this.data.events.onAll(change => {\n const dataItems = this._mainDataItems;\n this.markDirtyValues();\n this._markDirtyGroup();\n this._dataChanged = true;\n if (change.type === \"clear\") {\n $array.each(dataItems, dataItem => {\n dataItem.dispose();\n });\n dataItems.length = 0;\n this._onDataClear();\n } else if (change.type === \"push\") {\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\n dataItems.push(dataItem);\n this.processDataItem(dataItem);\n } else if (change.type === \"setIndex\") {\n const dataItem = dataItems[change.index];\n const properties = this._makeDataItem(change.newValue);\n if (dataItem.bullets && dataItem.bullets.length == 0) {\n dataItem.bullets = undefined;\n }\n $object.keys(properties).forEach(key => {\n dataItem.animate({\n key: key,\n to: properties[key],\n duration: this.get(\"interpolationDuration\", 0),\n easing: this.get(\"interpolationEasing\")\n });\n });\n dataItem.dataContext = change.newValue;\n } else if (change.type === \"insertIndex\") {\n const dataItem = new DataItem(this, change.newValue, this._makeDataItem(change.newValue));\n dataItems.splice(change.index, 0, dataItem);\n this.processDataItem(dataItem);\n } else if (change.type === \"removeIndex\") {\n const dataItem = dataItems[change.index];\n dataItem.dispose();\n dataItems.splice(change.index, 1);\n } else if (change.type === \"moveIndex\") {\n const dataItem = dataItems[change.oldIndex];\n dataItems.splice(change.oldIndex, 1);\n dataItems.splice(change.newIndex, 0, dataItem);\n } else {\n throw new Error(\"Unknown IStreamEvent type\");\n }\n this._afterDataChange();\n }));\n }\n _updateFields() {\n if (this.valueFields) {\n this._valueFields = [];\n this._valueFieldsF = {};\n $array.each(this.valueFields, key => {\n const field = this.get(key + \"Field\");\n if (field) {\n this._valueFields.push(key);\n this._valueFieldsF[key] = {\n fieldKey: key + \"Field\",\n workingKey: key + \"Working\"\n };\n }\n });\n }\n if (this.fields) {\n this._fields = [];\n this._fieldsF = {};\n $array.each(this.fields, key => {\n const field = this.get(key + \"Field\");\n if (field) {\n this._fields.push(key);\n this._fieldsF[key] = key + \"Field\";\n }\n });\n }\n }\n /**\r\n * A list of component's data items.\r\n *\r\n * @return Data items\r\n */\n get dataItems() {\n return this._dataItems;\n }\n processDataItem(_dataItem) {}\n _makeDataItem(data) {\n //const output: this[\"_dataItemSettings\"] = {};\n const output = {}; // temporary to solve error\n if (this._valueFields) {\n $array.each(this._valueFields, key => {\n const field = this.get(this._valueFieldsF[key].fieldKey);\n output[key] = data[field];\n output[this._valueFieldsF[key].workingKey] = output[key];\n });\n }\n if (this._fields) {\n $array.each(this._fields, key => {\n const field = this.get(this._fieldsF[key]);\n output[key] = data[field];\n });\n }\n return output;\n }\n /**\r\n * @ignore\r\n */\n makeDataItem(data) {\n let dataItem = new DataItem(this, undefined, data);\n this.processDataItem(dataItem);\n return dataItem;\n }\n /**\r\n * @ignore\r\n */\n pushDataItem(data) {\n const dataItem = this.makeDataItem(data);\n this._mainDataItems.push(dataItem);\n return dataItem;\n }\n /**\r\n * @ignore\r\n */\n disposeDataItem(_dataItem) {}\n /**\r\n * Shows component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n showDataItem(dataItem, _duration) {\n return __awaiter(this, void 0, void 0, function* () {\n dataItem.set(\"visible\", true);\n });\n }\n /**\r\n * Hides component's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param _duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n hideDataItem(dataItem, _duration) {\n return __awaiter(this, void 0, void 0, function* () {\n dataItem.set(\"visible\", false);\n });\n }\n _clearDirty() {\n super._clearDirty();\n this._valuesDirty = false;\n }\n _afterDataChange() {}\n _afterChanged() {\n super._afterChanged();\n if (this._dataChanged) {\n const type = \"datavalidated\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this\n });\n }\n this._dataChanged = false;\n }\n this.inited = true;\n }\n /**\r\n * Forces a repaint of the element which relies on data.\r\n *\r\n * @since 5.0.21\r\n */\n markDirtyValues(_dataItem) {\n this.markDirty();\n this._valuesDirty = true;\n }\n _markDirtyGroup() {\n this._dataGrouped = false;\n }\n /**\r\n * @ignore\r\n */\n markDirtySize() {\n this._sizeDirty = true;\n this.markDirty();\n }\n}\nObject.defineProperty(Component, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Component\"\n});\nObject.defineProperty(Component, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.classNames.concat([Component.className])\n});\n//# sourceMappingURL=Component.js.map","import { DataItem } from \"../../../core/render/Component\";\nimport { Component } from \"../../../core/render/Component\";\nimport { Container } from \"../../../core/render/Container\";\nimport { p100 } from \"../../../core/util/Percent\";\nimport { List } from \"../../../core/util/List\";\nimport { Rectangle } from \"../../../core/render/Rectangle\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $utils from \"../../../core/util/Utils\";\n/**\r\n * A base class for all axes.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Adding_axes} for more info\r\n */\nexport class Axis extends Component {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_series\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_isPanning\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * Array of minor data items.\r\n */\n Object.defineProperty(this, \"minorDataItems\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\r\n * A [[Container]] that holds all the axis label elements.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"labelsContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Container.new(this._root, {}))\n });\n /**\r\n * A [[Container]] that holds all the axis grid and fill elements.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"gridContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n width: p100,\n height: p100\n })\n });\n /**\r\n * A [[Container]] that holds axis grid elements which goes above the series.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"topGridContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n width: p100,\n height: p100\n })\n });\n /**\r\n * A [[Container]] that holds all the axis bullet elements.\r\n *\r\n * @default new Container\r\n */\n Object.defineProperty(this, \"bulletsContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Container.new(this._root, {\n isMeasured: false,\n width: p100,\n height: p100,\n position: \"absolute\"\n }))\n });\n /**\r\n * A referenece to the the chart the axis belongs to.\r\n */\n Object.defineProperty(this, \"chart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_rangesDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_panStart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_panEnd\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_sAnimation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_eAnimation\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_skipSync\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * A list of axis ranges.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @default new List()\r\n */\n Object.defineProperty(this, \"axisRanges\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new List()\n });\n Object.defineProperty(this, \"_seriesAxisRanges\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n /**\r\n * A control label that is invisible but is used to keep width the width of\r\n * the axis constant.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/#Ghost_label} for more info\r\n */\n Object.defineProperty(this, \"ghostLabel\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_cursorPosition\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: -1\n });\n Object.defineProperty(this, \"_snapToSeries\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_seriesValuesDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_seriesAdded\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n /**\r\n * A container above the axis that can be used to add additional stuff into\r\n * it. For example a legend, label, or an icon.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-headers/} for more info\r\n * @default new Container\r\n */\n Object.defineProperty(this, \"axisHeader\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Container.new(this._root, {\n themeTags: [\"axis\", \"header\"],\n position: \"absolute\",\n background: Rectangle.new(this._root, {\n themeTags: [\"header\", \"background\"],\n fill: this._root.interfaceColors.get(\"background\")\n })\n }))\n });\n Object.defineProperty(this, \"_bullets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n }\n _dispose() {\n // these could be in other parents, so disposing just in case\n this.gridContainer.dispose();\n this.topGridContainer.dispose();\n this.bulletsContainer.dispose();\n this.labelsContainer.dispose();\n this.axisHeader.dispose();\n super._dispose();\n }\n _afterNew() {\n super._afterNew();\n this.setPrivate(\"updateScrollbar\", true);\n this._disposers.push(this.axisRanges.events.onAll(change => {\n if (change.type === \"clear\") {\n $array.each(change.oldValues, dataItem => {\n this.disposeDataItem(dataItem);\n });\n } else if (change.type === \"push\") {\n this._processAxisRange(change.newValue, [\"range\"]);\n } else if (change.type === \"setIndex\") {\n this._processAxisRange(change.newValue, [\"range\"]);\n } else if (change.type === \"insertIndex\") {\n this._processAxisRange(change.newValue, [\"range\"]);\n } else if (change.type === \"removeIndex\") {\n this.disposeDataItem(change.oldValue);\n } else if (change.type === \"moveIndex\") {\n this._processAxisRange(change.value, [\"range\"]);\n } else {\n throw new Error(\"Unknown IStreamEvent type\");\n }\n }));\n const renderer = this.get(\"renderer\");\n if (renderer) {\n renderer.axis = this;\n renderer.processAxis();\n }\n this.children.push(renderer);\n this.ghostLabel = renderer.makeLabel(new DataItem(this, undefined, {}), []);\n this.ghostLabel.adapters.disable(\"text\");\n this.ghostLabel.setAll({\n opacity: 0,\n tooltipText: undefined,\n tooltipHTML: undefined,\n interactive: false\n });\n this.ghostLabel.events.disable();\n }\n _updateFinals(_start, _end) {}\n /**\r\n * Zooms the axis to relative locations.\r\n *\r\n * Both `start` and `end` are relative: 0 means start of the axis, 1 - end.\r\n *\r\n * @param start Relative start\r\n * @param end Relative end\r\n * @param duration Duration of the zoom animation in milliseconds\r\n * @return Zoom animation\r\n */\n zoom(start, end, duration, priority) {\n if (this.get(\"zoomable\", true)) {\n this._updateFinals(start, end);\n if (this.get(\"start\") !== start || this.get(\"end\") != end) {\n let sAnimation = this._sAnimation;\n let eAnimation = this._eAnimation;\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, end - start);\n if (start < -maxDeviation) {\n start = -maxDeviation;\n }\n if (end > 1 + maxDeviation) {\n end = 1 + maxDeviation;\n }\n if (start > end) {\n [start, end] = [end, start];\n }\n if (!$type.isNumber(duration)) {\n duration = this.get(\"interpolationDuration\", 0);\n }\n if (!priority) {\n priority = \"end\";\n }\n let maxZoomFactor = this.getPrivate(\"maxZoomFactor\", this.get(\"maxZoomFactor\", 100));\n let maxZoomFactorReal = maxZoomFactor;\n if (end === 1 && start !== 0) {\n if (start < this.get(\"start\", 0)) {\n priority = \"start\";\n } else {\n priority = \"end\";\n }\n }\n if (start === 0 && end !== 1) {\n if (end > this.get(\"end\", 1)) {\n priority = \"end\";\n } else {\n priority = \"start\";\n }\n }\n let minZoomCount = this.get(\"minZoomCount\", 0);\n let maxZoomCount = this.get(\"maxZoomCount\", Infinity);\n if ($type.isNumber(minZoomCount)) {\n maxZoomFactor = maxZoomFactorReal / minZoomCount;\n }\n let minZoomFactor = 1;\n if ($type.isNumber(maxZoomCount)) {\n minZoomFactor = maxZoomFactorReal / maxZoomCount;\n }\n // most likely we are dragging left scrollbar grip here, so we tend to modify end\n if (priority === \"start\") {\n if (maxZoomCount > 0) {\n // add to the end\n if (1 / (end - start) < minZoomFactor) {\n end = start + 1 / minZoomFactor;\n }\n }\n // add to the end\n if (1 / (end - start) > maxZoomFactor) {\n end = start + 1 / maxZoomFactor;\n }\n //unless end is > 0\n if (end > 1 && end - start < 1 / maxZoomFactor) {\n //end = 1;\n start = end - 1 / maxZoomFactor;\n }\n }\n // most likely we are dragging right, so we modify left\n else {\n if (maxZoomCount > 0) {\n // add to the end\n if (1 / (end - start) < minZoomFactor) {\n start = end - 1 / minZoomFactor;\n }\n }\n // remove from start\n if (1 / (end - start) > maxZoomFactor) {\n start = end - 1 / maxZoomFactor;\n }\n if (start < 0 && end - start < 1 / maxZoomFactor) {\n //start = 0;\n end = start + 1 / maxZoomFactor;\n }\n }\n if (1 / (end - start) > maxZoomFactor) {\n end = start + 1 / maxZoomFactor;\n }\n if (1 / (end - start) > maxZoomFactor) {\n start = end - 1 / maxZoomFactor;\n }\n if (maxZoomCount != null && minZoomCount != null && start == this.get(\"start\") && end == this.get(\"end\")) {\n const chart = this.chart;\n if (chart) {\n chart._handleAxisSelection(this, true);\n }\n }\n if ((sAnimation && sAnimation.playing && sAnimation.to == start || this.get(\"start\") == start) && (eAnimation && eAnimation.playing && eAnimation.to == end || this.get(\"end\") == end)) {\n return;\n }\n if (duration > 0) {\n let easing = this.get(\"interpolationEasing\");\n let sAnimation, eAnimation;\n if (this.get(\"start\") != start) {\n sAnimation = this.animate({\n key: \"start\",\n to: start,\n duration: duration,\n easing: easing\n });\n }\n if (this.get(\"end\") != end) {\n eAnimation = this.animate({\n key: \"end\",\n to: end,\n duration: duration,\n easing: easing\n });\n }\n this._sAnimation = sAnimation;\n this._eAnimation = eAnimation;\n if (sAnimation) {\n return sAnimation;\n } else if (eAnimation) {\n return eAnimation;\n }\n } else {\n this.set(\"start\", start);\n this.set(\"end\", end);\n }\n } else {\n if (this._sAnimation) {\n this._sAnimation.stop();\n }\n if (this._eAnimation) {\n this._eAnimation.stop();\n }\n }\n }\n }\n /**\r\n * A list of series using this axis.\r\n *\r\n * @return Series\r\n */\n get series() {\n return this._series;\n }\n _processAxisRange(dataItem, themeTags) {\n dataItem.setRaw(\"isRange\", true);\n this._createAssets(dataItem, themeTags);\n this._rangesDirty = true;\n this._prepareDataItem(dataItem);\n const above = dataItem.get(\"above\");\n const container = this.topGridContainer;\n const grid = dataItem.get(\"grid\");\n if (above && grid) {\n container.children.moveValue(grid);\n }\n const fill = dataItem.get(\"axisFill\");\n if (above && fill) {\n container.children.moveValue(fill);\n }\n }\n _prepareDataItem(_dataItem, _index) {}\n /**\r\n * @ignore\r\n */\n markDirtyExtremes() {}\n /**\r\n * @ignore\r\n */\n markDirtySelectionExtremes() {}\n _calculateTotals() {}\n _updateAxisRanges() {\n this._bullets = {};\n this.axisRanges.each(axisRange => {\n this._prepareDataItem(axisRange);\n });\n $array.each(this._seriesAxisRanges, axisRange => {\n this._prepareDataItem(axisRange);\n });\n }\n _prepareChildren() {\n super._prepareChildren();\n if (this.get(\"fixAxisSize\")) {\n this.ghostLabel.set(\"visible\", true);\n } else {\n this.ghostLabel.set(\"visible\", false);\n }\n if (this.isDirty(\"start\") || this.isDirty(\"end\")) {\n const chart = this.chart;\n if (chart) {\n chart._updateCursor();\n }\n let start = this.get(\"start\", 0);\n let end = this.get(\"end\", 1);\n let maxDeviation = this.get(\"maxDeviation\", 0.5) * Math.min(1, end - start);\n if (start < -maxDeviation) {\n let delta = start + maxDeviation;\n start = -maxDeviation;\n this.setRaw(\"start\", start);\n if (this.isDirty(\"end\")) {\n this.setRaw(\"end\", end - delta);\n }\n }\n if (end > 1 + maxDeviation) {\n let delta = end - 1 - maxDeviation;\n end = 1 + maxDeviation;\n this.setRaw(\"end\", end);\n if (this.isDirty(\"start\")) {\n this.setRaw(\"start\", start - delta);\n }\n }\n }\n const renderer = this.get(\"renderer\");\n renderer._start = this.get(\"start\");\n renderer._end = this.get(\"end\");\n renderer._inversed = renderer.get(\"inversed\", false);\n renderer._axisLength = renderer.axisLength() / (renderer._end - renderer._start);\n renderer._updateLC();\n if (this.isDirty(\"tooltip\")) {\n const tooltip = this.get(\"tooltip\");\n if (tooltip) {\n const rendererTags = renderer.get(\"themeTags\");\n tooltip.addTag(\"axis\");\n tooltip.addTag(this.className.toLowerCase());\n tooltip._applyThemes();\n if (rendererTags) {\n tooltip.set(\"themeTags\", $utils.mergeTags(tooltip.get(\"themeTags\"), rendererTags));\n tooltip.label._applyThemes();\n }\n }\n }\n }\n _updateTooltipBounds() {\n const tooltip = this.get(\"tooltip\");\n if (tooltip) {\n this.get(\"renderer\").updateTooltipBounds(tooltip);\n }\n }\n _updateBounds() {\n super._updateBounds();\n this._updateTooltipBounds();\n }\n /**\r\n * @ignore\r\n */\n processChart(chart) {\n this.chart = chart;\n const renderer = this.get(\"renderer\");\n renderer.chart = chart;\n chart.gridContainer.children.push(this.gridContainer);\n chart.topGridContainer.children.push(this.topGridContainer);\n chart.axisHeadersContainer.children.push(this.axisHeader);\n this.on(\"start\", () => {\n chart._handleAxisSelection(this);\n });\n this.on(\"end\", () => {\n chart._handleAxisSelection(this);\n });\n chart.plotContainer.onPrivate(\"width\", () => {\n this.markDirtySize();\n });\n chart.plotContainer.onPrivate(\"height\", () => {\n this.markDirtySize();\n });\n chart.processAxis(this);\n }\n /**\r\n * @ignore\r\n */\n hideDataItem(dataItem) {\n this._toggleFHDataItem(dataItem, true);\n return super.hideDataItem(dataItem);\n }\n /**\r\n * @ignore\r\n */\n showDataItem(dataItem) {\n this._toggleFHDataItem(dataItem, false);\n return super.showDataItem(dataItem);\n }\n _toggleFHDataItem(dataItem, forceHidden) {\n const fh = \"forceHidden\";\n const label = dataItem.get(\"label\");\n if (label) {\n label.set(fh, forceHidden);\n }\n const grid = dataItem.get(\"grid\");\n if (grid) {\n grid.set(fh, forceHidden);\n }\n const tick = dataItem.get(\"tick\");\n if (tick) {\n tick.set(fh, forceHidden);\n }\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n axisFill.set(fh, forceHidden);\n }\n const bullet = dataItem.get(\"bullet\");\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite.set(fh, forceHidden);\n }\n }\n }\n _toggleDataItem(dataItem, visible) {\n const label = dataItem.get(\"label\");\n const v = \"visible\";\n if (label) {\n label.setPrivate(v, visible);\n }\n const grid = dataItem.get(\"grid\");\n if (grid) {\n grid.setPrivate(v, visible);\n }\n const tick = dataItem.get(\"tick\");\n if (tick) {\n tick.setPrivate(v, visible);\n }\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n axisFill.setPrivate(v, visible);\n }\n const bullet = dataItem.get(\"bullet\");\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite.setPrivate(v, visible);\n }\n }\n }\n _createAssets(dataItem, tags, minor) {\n var _a, _b, _c;\n const renderer = this.get(\"renderer\");\n let m = \"minor\";\n const label = dataItem.get(\"label\");\n if (!label) {\n renderer.makeLabel(dataItem, tags);\n } else {\n let themeTags = label.get(\"themeTags\");\n let remove = false;\n if (minor) {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\n remove = true;\n }\n } else {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\n remove = true;\n }\n }\n if (remove) {\n (_a = label.parent) === null || _a === void 0 ? void 0 : _a.children.removeValue(label);\n renderer.makeLabel(dataItem, tags);\n label.dispose();\n renderer.labels.removeValue(label);\n }\n }\n const grid = dataItem.get(\"grid\");\n if (!grid) {\n renderer.makeGrid(dataItem, tags);\n } else {\n let themeTags = grid.get(\"themeTags\");\n let remove = false;\n if (minor) {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\n remove = true;\n }\n } else {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\n remove = true;\n }\n }\n if (remove) {\n (_b = grid.parent) === null || _b === void 0 ? void 0 : _b.children.removeValue(grid);\n renderer.makeGrid(dataItem, tags);\n grid.dispose();\n renderer.grid.removeValue(grid);\n }\n }\n const tick = dataItem.get(\"tick\");\n if (!tick) {\n renderer.makeTick(dataItem, tags);\n } else {\n let remove = false;\n let themeTags = tick.get(\"themeTags\");\n if (minor) {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) == -1) {\n remove = true;\n }\n } else {\n if ((themeTags === null || themeTags === void 0 ? void 0 : themeTags.indexOf(m)) != -1) {\n remove = true;\n }\n }\n if (remove) {\n (_c = tick.parent) === null || _c === void 0 ? void 0 : _c.children.removeValue(tick);\n renderer.makeTick(dataItem, tags);\n tick.dispose();\n renderer.ticks.removeValue(tick);\n }\n }\n if (!minor && !dataItem.get(\"axisFill\")) {\n renderer.makeAxisFill(dataItem, tags);\n }\n this._processBullet(dataItem);\n }\n _processBullet(dataItem) {\n let bullet = dataItem.get(\"bullet\");\n let axisBullet = this.get(\"bullet\");\n if (!bullet && axisBullet && !dataItem.get(\"isRange\")) {\n bullet = axisBullet(this._root, this, dataItem);\n }\n if (bullet) {\n bullet.axis = this;\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite._setDataItem(dataItem);\n dataItem.setRaw(\"bullet\", bullet);\n if (!sprite.parent) {\n this.bulletsContainer.children.push(sprite);\n }\n }\n }\n }\n _afterChanged() {\n super._afterChanged();\n const chart = this.chart;\n if (chart) {\n chart._updateChartLayout();\n chart.axisHeadersContainer.markDirtySize();\n }\n this.get(\"renderer\")._updatePositions();\n this._seriesAdded = false;\n }\n /**\r\n * @ignore\r\n */\n disposeDataItem(dataItem) {\n super.disposeDataItem(dataItem);\n const renderer = this.get(\"renderer\");\n const label = dataItem.get(\"label\");\n if (label) {\n renderer.labels.removeValue(label);\n label.dispose();\n }\n const tick = dataItem.get(\"tick\");\n if (tick) {\n renderer.ticks.removeValue(tick);\n tick.dispose();\n }\n const grid = dataItem.get(\"grid\");\n if (grid) {\n renderer.grid.removeValue(grid);\n grid.dispose();\n }\n const axisFill = dataItem.get(\"axisFill\");\n if (axisFill) {\n renderer.axisFills.removeValue(axisFill);\n axisFill.dispose();\n }\n const bullet = dataItem.get(\"bullet\");\n if (bullet) {\n bullet.dispose();\n }\n }\n _updateGhost() {\n this.setPrivate(\"cellWidth\", this.getCellWidthPosition() * this.get(\"renderer\").axisLength());\n const ghostLabel = this.ghostLabel;\n if (!ghostLabel.isHidden()) {\n const bounds = ghostLabel.localBounds();\n const gWidth = Math.ceil(bounds.right - bounds.left);\n let text = ghostLabel.get(\"text\");\n $array.each(this.dataItems, dataItem => {\n const label = dataItem.get(\"label\");\n if (label && !label.isHidden()) {\n const bounds = label.localBounds();\n const w = Math.ceil(bounds.right - bounds.left);\n if (w > gWidth) {\n text = label.text._getText();\n }\n }\n });\n ghostLabel.set(\"text\", text);\n }\n let start = this.get(\"start\", 0);\n let end = this.get(\"end\", 1);\n this.get(\"renderer\").updateLabel(ghostLabel, start + (end - start) * 0.5);\n }\n _handleCursorPosition(position, snapToSeries) {\n const renderer = this.get(\"renderer\");\n position = renderer.toAxisPosition(position);\n this._cursorPosition = position;\n this._snapToSeries = snapToSeries;\n this.updateTooltip();\n }\n /**\r\n * Can be called when axis zoom changes and you need to update tooltip\r\n * position.\r\n */\n updateTooltip() {\n const snapToSeries = this._snapToSeries;\n let position = this._cursorPosition;\n const tooltip = this.get(\"tooltip\");\n const renderer = this.get(\"renderer\");\n if ($type.isNumber(position)) {\n $array.each(this.series, series => {\n if (series.get(\"baseAxis\") === this) {\n const dataItem = this.getSeriesItem(series, position, this.get(\"tooltipLocation\"));\n if (snapToSeries && snapToSeries.indexOf(series) != -1) {\n series.updateLegendMarker(dataItem);\n series.updateLegendValue(dataItem);\n series._settings.tooltipDataItem = dataItem;\n } else {\n series.showDataItemTooltip(dataItem);\n series.setRaw(\"tooltipDataItem\", dataItem);\n }\n }\n });\n if (this.get(\"snapTooltip\")) {\n position = this.roundAxisPosition(position, this.get(\"tooltipLocation\", 0.5));\n }\n this.setPrivateRaw(\"tooltipPosition\", position);\n if (tooltip) {\n renderer.updateTooltipBounds(tooltip);\n if (!$type.isNaN(position)) {\n this._updateTooltipText(tooltip, position);\n renderer.positionTooltip(tooltip, position);\n if (position < this.get(\"start\", 0) || position > this.get(\"end\", 1)) {\n tooltip.hide(0);\n } else {\n tooltip.show(0);\n }\n } else {\n tooltip.hide(0);\n }\n }\n }\n }\n _updateTooltipText(tooltip, position) {\n tooltip.label.set(\"text\", this.getTooltipText(position));\n }\n /**\r\n * @ignore\r\n */\n roundAxisPosition(position, _location) {\n return position;\n }\n /**\r\n * @ignore\r\n */\n handleCursorShow() {\n let tooltip = this.get(\"tooltip\");\n if (tooltip) {\n tooltip.show();\n }\n }\n /**\r\n * @ignore\r\n */\n handleCursorHide() {\n let tooltip = this.get(\"tooltip\");\n if (tooltip) {\n tooltip.hide();\n }\n }\n /**\r\n * @ignore\r\n */\n processSeriesDataItem(_dataItem, _fields) {}\n _clearDirty() {\n super._clearDirty();\n this._sizeDirty = false;\n this._rangesDirty = false;\n }\n /**\r\n * Converts pixel coordinate to a relative position on axis.\r\n *\r\n * @param coordinate Coordinate\r\n * @return Relative position\r\n */\n coordinateToPosition(coordinate) {\n const renderer = this.get(\"renderer\");\n return renderer.toAxisPosition(coordinate / renderer.axisLength());\n }\n /**\r\n * Converts relative position of the plot area to relative position of the\r\n * axis with zoom taken into account.\r\n *\r\n * @param position Position\r\n * @return Relative position\r\n */\n toAxisPosition(position) {\n return this.get(\"renderer\").toAxisPosition(position);\n }\n /**\r\n * Converts relative position of the axis to a global position taking current\r\n * zoom into account (opposite to what `toAxisPosition` does).\r\n *\r\n * @since 5.4.2\r\n * @param position Position\r\n * @return Global position\r\n */\n toGlobalPosition(position) {\n return this.get(\"renderer\").toGlobalPosition(position);\n }\n /**\r\n * Adjusts position with inversed taken into account.\r\n *\r\n * @ignore\r\n */\n fixPosition(position) {\n return this.get(\"renderer\").fixPosition(position);\n }\n /**\r\n * @ignore\r\n */\n shouldGap(_dataItem, _nextItem, _autoGapCount, _fieldName) {\n return false;\n }\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\n createAxisRange(axisDataItem) {\n return this.axisRanges.push(axisDataItem);\n }\n /**\r\n * @ignore\r\n */\n _groupSeriesData(_series) {}\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\n getCellWidthPosition() {\n return 0.05;\n }\n}\nObject.defineProperty(Axis, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Axis\"\n});\nObject.defineProperty(Axis, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Component.classNames.concat([Axis.className])\n});\n//# sourceMappingURL=Axis.js.map","import { Axis } from \"./Axis\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $math from \"../../../core/util/Math\";\nimport * as $utils from \"../../../core/util/Utils\";\nimport { populateString } from \"../../../core/util/PopulateString\";\n/**\r\n * Creates a category axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/category-axis/} for more info\r\n * @important\r\n */\nexport class CategoryAxis extends Axis {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_frequency\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_itemMap\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\n this.fields.push(\"category\");\n this.setPrivateRaw(\"name\", \"category\");\n this.addTag(\"category\");\n super._afterNew();\n }\n _prepareChildren() {\n super._prepareChildren();\n const len = this.dataItems.length;\n let i = 0;\n if (this._valuesDirty) {\n this._itemMap = {};\n $array.each(this.dataItems, dataItem => {\n dataItem.setRaw(\"index\", i);\n this._itemMap[dataItem.get(\"category\")] = dataItem;\n i++;\n });\n this.setPrivateRaw(\"maxZoomFactor\", len);\n }\n this.setPrivateRaw(\"startIndex\", Math.max(Math.round(this.get(\"start\", 0) * len), 0));\n this.setPrivateRaw(\"endIndex\", Math.min(Math.round(this.get(\"end\", 1) * len), len));\n if (this._sizeDirty || this._valuesDirty || this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"endIndex\") || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\n if (this.dataItems.length > 0) {\n this._handleRangeChange();\n this._prepareAxisItems();\n this._updateAxisRanges();\n }\n }\n }\n _handleRangeChange() {\n $array.each(this.series, series => {\n let startCategory = this.dataItems[this.startIndex()].get(\"category\");\n let endCategory = this.dataItems[this.endIndex() - 1].get(\"category\");\n let baseAxis = series.get(\"baseAxis\");\n let xAxis = series.get(\"xAxis\");\n let yAxis = series.get(\"yAxis\");\n if (xAxis instanceof CategoryAxis && yAxis instanceof CategoryAxis) {\n series._markDirtyAxes();\n } else if (baseAxis === this) {\n let key;\n let openKey;\n let otherAxis = yAxis;\n if (xAxis === baseAxis) {\n if (series.get(\"categoryXField\")) {\n key = \"categoryX\";\n }\n if (series.get(\"openCategoryXField\")) {\n openKey = \"openCategoryX\";\n }\n } else if (yAxis === baseAxis) {\n if (series.get(\"categoryYField\")) {\n key = \"categoryY\";\n }\n if (series.get(\"openCategoryYField\")) {\n openKey = \"openCategoryY\";\n }\n otherAxis = xAxis;\n }\n if (otherAxis.className == \"ValueAxis\") {\n if (key || openKey) {\n let startDataItem;\n let endDataItem;\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\n let dataItem = series.dataItems[i];\n if (key) {\n if (dataItem.get(key) === startCategory) {\n startDataItem = dataItem;\n break;\n }\n }\n if (openKey) {\n if (dataItem.get(openKey) === startCategory) {\n startDataItem = dataItem;\n break;\n }\n }\n }\n for (let i = series.dataItems.length - 1; i >= 0; i--) {\n let dataItem = series.dataItems[i];\n if (key) {\n if (dataItem.get(key) === endCategory) {\n endDataItem = dataItem;\n break;\n }\n }\n if (openKey) {\n if (dataItem.get(openKey) === endCategory) {\n endDataItem = dataItem;\n break;\n }\n }\n }\n let startIndex = 0;\n let endIndex = series.dataItems.length;\n if (startDataItem) {\n startIndex = series.dataItems.indexOf(startDataItem);\n }\n if (endDataItem) {\n endIndex = series.dataItems.indexOf(endDataItem) + 1;\n }\n series.setPrivate(\"startIndex\", startIndex);\n series.setPrivate(\"endIndex\", endIndex);\n let hasValue = false;\n for (let i = startIndex; i < endIndex; i++) {\n const dataItem = series.dataItems[i];\n $array.each(series.__valueXShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n hasValue = true;\n }\n });\n $array.each(series.__valueYShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n hasValue = true;\n }\n });\n if (hasValue) {\n break;\n }\n }\n series.setPrivate(\"outOfSelection\", !hasValue);\n }\n }\n series._markDirtyAxes(); // must be outside\n }\n });\n }\n _prepareAxisItems() {\n var _a;\n const renderer = this.get(\"renderer\");\n const len = this.dataItems.length;\n let startIndex = this.startIndex();\n if (startIndex > 0) {\n startIndex--;\n }\n let endIndex = this.endIndex();\n if (endIndex < len) {\n endIndex++;\n }\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\n let maxCount = renderer.axisLength() / Math.max(renderer.get(\"minGridDistance\"), 1);\n let frequency = Math.max(1, Math.min(len, Math.ceil((endIndex - startIndex) / maxCount)));\n startIndex = Math.floor(startIndex / frequency) * frequency;\n this._frequency = frequency;\n for (let j = 0; j < len; j++) {\n this._toggleDataItem(this.dataItems[j], false);\n }\n let f = this.dataItems[startIndex].get(\"index\", 0);\n for (let i = startIndex; i < endIndex; i = i + frequency) {\n let dataItem = this.dataItems[i];\n this._createAssets(dataItem, []);\n this._toggleDataItem(dataItem, true);\n let count = frequency;\n if (minorGridEnabled) {\n count = 1;\n }\n this._prepareDataItem(dataItem, f, count);\n f++;\n }\n if (renderer.get(\"minorGridEnabled\")) {\n for (let i = startIndex; i < endIndex; i++) {\n let dataItem = this.dataItems[i];\n if (i % frequency != 0) {\n this._createAssets(dataItem, [\"minor\"], true);\n this._toggleDataItem(dataItem, true);\n this._prepareDataItem(dataItem, 0, 1);\n if (!minorLabelsEnabled) {\n (_a = dataItem.get(\"label\")) === null || _a === void 0 ? void 0 : _a.setPrivate(\"visible\", false);\n }\n }\n }\n }\n this._updateGhost();\n }\n _prepareDataItem(dataItem, fillIndex, count) {\n let renderer = this.get(\"renderer\");\n let categoryLocation = dataItem.get(\"categoryLocation\", 0);\n let endCategoryLocation = dataItem.get(\"endCategoryLocation\", 1);\n let index = dataItem.get(\"index\");\n if (!$type.isNumber(index)) {\n index = this.categoryToIndex(dataItem.get(\"category\"));\n }\n let position = this.indexToPosition(index, categoryLocation);\n let endCategory = dataItem.get(\"endCategory\");\n let endIndex;\n if (endCategory) {\n endIndex = this.categoryToIndex(endCategory);\n if (!$type.isNumber(endIndex)) {\n endIndex = index;\n }\n } else {\n endIndex = index;\n }\n let endPosition = this.indexToPosition(endIndex, endCategoryLocation);\n let fillEndIndex;\n let fillEndPosition;\n if (dataItem.get(\"isRange\")) {\n fillEndIndex = endIndex;\n } else {\n fillEndIndex = index + this._frequency - 1;\n }\n fillEndPosition = this.indexToPosition(fillEndIndex, endCategoryLocation);\n renderer.updateLabel(dataItem.get(\"label\"), position, endPosition, count);\n renderer.updateGrid(dataItem.get(\"grid\"), position, endPosition);\n renderer.updateTick(dataItem.get(\"tick\"), position, endPosition, count);\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\n this._processBullet(dataItem);\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\n const fillRule = this.get(\"fillRule\");\n if (fillRule) {\n fillRule(dataItem, fillIndex);\n }\n }\n startIndex() {\n let len = this.dataItems.length;\n return Math.min(Math.max(this.getPrivate(\"startIndex\", 0), 0), len - 1);\n }\n endIndex() {\n let len = this.dataItems.length;\n return Math.max(1, Math.min(this.getPrivate(\"endIndex\", len), len));\n }\n /**\r\n * @ignore\r\n */\n baseValue() {}\n /**\r\n * @ignore\r\n */\n basePosition() {\n return 0;\n }\n /**\r\n * Returns X coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return X coordinate\r\n */\n getX(value) {\n let axisDataItem = this._itemMap[value];\n if (axisDataItem) {\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\n }\n return NaN;\n }\n /**\r\n * Returns Y coordinate in pixels corresponding to specific category index.\r\n *\r\n * @param value Index\r\n * @return Y coordinate\r\n */\n getY(value) {\n let axisDataItem = this._itemMap[value];\n if (axisDataItem) {\n return this._settings.renderer.positionToCoordinate(this.indexToPosition(axisDataItem.get(\"index\", 0)));\n }\n return NaN;\n }\n /**\r\n * @ignore\r\n */\n getDataItemPositionX(dataItem, field, cellLocation, _axisLocation) {\n const category = dataItem.get(field);\n const axisDataItem = this._itemMap[category];\n if (axisDataItem) {\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\n }\n return NaN;\n }\n /**\r\n * @ignore\r\n */\n getDataItemCoordinateX(dataItem, field, cellLocation, _axisLocation) {\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, cellLocation, _axisLocation));\n }\n /**\r\n * @ignore\r\n */\n getDataItemPositionY(dataItem, field, cellLocation, _axisLocation) {\n const category = dataItem.get(field);\n const axisDataItem = this._itemMap[category];\n if (axisDataItem) {\n return this.indexToPosition(axisDataItem.get(\"index\", 0), cellLocation);\n }\n return NaN;\n }\n /**\r\n * @ignore\r\n */\n getDataItemCoordinateY(dataItem, field, cellLocation, _axisLocation) {\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, cellLocation, _axisLocation));\n }\n /**\r\n * Converts category index to a relative position.\r\n *\r\n * `location` indicates relative position within category: 0 - start, 1 - end.\r\n *\r\n * If not set, will use middle (0.5) of the category.\r\n *\r\n * @param index Index\r\n * @param location Location\r\n * @return Index\r\n */\n indexToPosition(index, location) {\n if (!$type.isNumber(location)) {\n location = 0.5;\n }\n let len = this.dataItems.length;\n let startLocation = this.get(\"startLocation\", 0);\n let endLocation = this.get(\"endLocation\", 1);\n len -= startLocation;\n len -= 1 - endLocation;\n let position = (index + location - startLocation) / len;\n let dataItem = this.dataItems[index];\n if (dataItem) {\n position += dataItem.get(\"deltaPosition\", 0);\n }\n return position;\n }\n /**\r\n * Returns an index of a category.\r\n *\r\n * @param category Category to look up\r\n * @return Index\r\n */\n categoryToIndex(category) {\n let dataItem = this._itemMap[category];\n if (dataItem) {\n return dataItem.get(\"index\");\n }\n return NaN;\n }\n /**\r\n * @ignore\r\n */\n dataItemToPosition(dataItem) {\n return this.indexToPosition(dataItem.get(\"index\"));\n }\n /**\r\n * @ignore\r\n */\n roundAxisPosition(position, location) {\n position += (0.5 - location) / this.dataItems.length;\n return this.indexToPosition(this.axisPositionToIndex(position), location);\n }\n /**\r\n * Returns an index of the category that corresponds to specific pixel\r\n * position within axis.\r\n *\r\n * @param position Position (px)\r\n * @return Category index\r\n */\n axisPositionToIndex(position) {\n let len = this.dataItems.length;\n return $math.fitToRange(Math.floor(position * len), 0, len - 1); //$math.fitToRange(Math.floor((end - start) * len * position + len * start), 0, len - 1);\n }\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\n getTooltipText(position, _adjustPosition) {\n //@todo number formatter + tag\n const dataItem = this.dataItems[this.axisPositionToIndex(position)];\n if (dataItem) {\n const label = dataItem.get(\"label\");\n if (label) {\n return populateString(label, this.get(\"tooltipText\", \"\"));\n }\n }\n }\n _updateTooltipText(tooltip, position) {\n tooltip._setDataItem(this.dataItems[this.axisPositionToIndex(position)]);\n tooltip.label.text.markDirtyText();\n }\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\n getSeriesItem(series, position) {\n if (this.dataItems.length > 0) {\n let fieldName = this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\");\n let index = this.axisPositionToIndex(position);\n // try simple first\n let seriesDataItem = series.dataItems[index];\n let axisDataItem = this.dataItems[index];\n let category = axisDataItem.get(\"category\");\n if (seriesDataItem && axisDataItem) {\n if (seriesDataItem.get(fieldName) === category) {\n return seriesDataItem;\n }\n }\n // if not found, try looking\n for (let i = 0, len = series.dataItems.length; i < len; i++) {\n let dataItem = series.dataItems[i];\n if (dataItem.get(fieldName) === category) {\n return dataItem;\n }\n }\n }\n }\n /**\r\n * Zooms the axis to specific `start` and `end` indexes.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start index\r\n * @param end End index\r\n * @param duration Duration in milliseconds\r\n */\n zoomToIndexes(start, end, duration) {\n let len = this.dataItems.length;\n this.zoom(start / len, end / len, duration);\n }\n zoomToCategories(startCategory, endCategory, duration) {\n this.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1, duration);\n }\n /**\r\n * Returns position span between start and end of a single cell in axis.\r\n *\r\n * @since 5.2.30\r\n * @return Position\r\n */\n getCellWidthPosition() {\n return this._frequency / this.dataItems.length / (this.get(\"end\", 1) - this.get(\"start\", 0));\n }\n /**\r\n * @ignore\r\n */\n nextPosition(count) {\n if (count == null) {\n count = 1;\n }\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\n count *= -1;\n }\n const position = this.getPrivate(\"tooltipPosition\", 0);\n const index = $math.fitToRange(this.axisPositionToIndex(position) + count, 0, this.dataItems.length - 1);\n return this.toGlobalPosition(this.indexToPosition(index));\n }\n}\nObject.defineProperty(CategoryAxis, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"CategoryAxis\"\n});\nObject.defineProperty(CategoryAxis, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Axis.classNames.concat([CategoryAxis.className])\n});\n//# sourceMappingURL=CategoryAxis.js.map","/** @ignore */ /** */\nimport * as $math from \"./Math\";\n/**\r\n * @ignore\r\n */\nexport function segmentedLine(display, segments) {\n for (let s = 0, len = segments.length; s < len; s++) {\n const groups = segments[s];\n if (groups.length > 0) {\n let firstGroup = groups[0];\n if (firstGroup.length > 0) {\n let firstPoint = firstGroup[0];\n display.moveTo(firstPoint.x, firstPoint.y);\n for (let g = 0, len = groups.length; g < len; g++) {\n line(display, groups[g]);\n }\n }\n }\n }\n}\n/**\r\n * @ignore\r\n */\nexport function line(display, points) {\n for (let p = 0, len = points.length; p < len; p++) {\n const point = points[p];\n display.lineTo(point.x, point.y);\n }\n}\n/**\r\n * @ignore\r\n */\nexport function moveTo(display, point) {\n display.moveTo(point.x, point.y);\n}\n/**\r\n * @ignore\r\n */\nexport function clear(display) {\n display.clear();\n}\n/**\r\n * @ignore\r\n */\nexport function smoothedSegmentedline(display, segments, tensionX, tensionY) {\n for (let s = 0, len = segments.length; s < len; s++) {\n const groups = segments[s];\n if (groups.length > 0) {\n let firstGroup = groups[0];\n if (firstGroup.length > 0) {\n let firstPoint = firstGroup[0];\n display.moveTo(firstPoint.x, firstPoint.y);\n for (let g = 0, len = groups.length; g < len; g++) {\n const points = groups[g];\n if (points.length > 0) {\n display.lineTo(points[0].x, points[0].y);\n }\n smoothedLine(display, points, tensionX, tensionY);\n }\n }\n }\n }\n}\n/**\r\n * @ignore\r\n */\nexport function smoothedLine(display, points, tensionX, tensionY) {\n for (let i = points.length - 1; i > 0; i--) {\n let p0 = points[i];\n let p1 = points[i - 1];\n if (Math.abs(p0.x - p1.x) < 0.1 && Math.abs(p0.y - p1.y) < 0.1) {\n points.splice(i - 1, 1);\n }\n }\n if (points.length < 3 || tensionX >= 1 && tensionY >= 1) {\n line(display, points);\n return;\n }\n tensionX = 1 - tensionX + 0.00001;\n tensionY = 1 - tensionY + 0.00001;\n let first = points[0];\n let last = points[points.length - 1];\n let closed = false;\n if ($math.round(first.x, 3) == $math.round(last.x) && $math.round(first.y) == $math.round(last.y)) {\n closed = true;\n }\n // Can't moveTo here, as it wont be possible to have fill then.\n let path = \"\";\n for (let i = 0, len = points.length - 1; i < len; i++) {\n let p0 = points[i - 1];\n let p1 = points[i];\n let p2 = points[i + 1];\n let p3 = points[i + 2];\n if (i === 0) {\n if (closed) {\n p0 = points[len - 2];\n } else {\n p0 = points[0];\n }\n } else if (i == len - 1) {\n if (closed) {\n p3 = points[1];\n } else {\n p3 = p2;\n }\n }\n let controlPointA = $math.getCubicControlPointA(p0, p1, p2, tensionX, tensionY);\n let controlPointB = $math.getCubicControlPointB(p1, p2, p3, tensionX, tensionY);\n display.bezierCurveTo(controlPointA.x, controlPointA.y, controlPointB.x, controlPointB.y, p2.x, p2.y);\n }\n return path;\n}\n//# sourceMappingURL=Draw.js.map","import { Graphics } from \"./Graphics\";\nimport * as $draw from \"../util/Draw\";\n/**\r\n * Draws a line.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n * @important\r\n */\nexport class Line extends Graphics {\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"points\") || this.isDirty(\"segments\") || this._sizeDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\")) {\n this._clear = true;\n }\n }\n _changed() {\n super._changed();\n if (this._clear) {\n const points = this.get(\"points\");\n const segments = this.get(\"segments\");\n if (points && points.length > 0) {\n let point = points[0];\n this._display.moveTo(point.x, point.y);\n $draw.segmentedLine(this._display, [[points]]);\n } else if (segments) {\n $draw.segmentedLine(this._display, segments);\n } else if (!this.get(\"draw\")) {\n let w = this.width();\n let h = this.height();\n this._display.moveTo(0, 0);\n this._display.lineTo(w, h);\n }\n }\n }\n}\nObject.defineProperty(Line, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Line\"\n});\nObject.defineProperty(Line, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Graphics.classNames.concat([Line.className])\n});\n//# sourceMappingURL=Line.js.map","import { Line } from \"./Line\";\n/**\r\n * Draws a tick element (mostly used on axes).\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/graphics/} for more info\r\n */\nexport class Tick extends Line {}\nObject.defineProperty(Tick, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Tick\"\n});\nObject.defineProperty(Tick, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Line.classNames.concat([Tick.className])\n});\n//# sourceMappingURL=Tick.js.map","import { Tick } from \"../../../core/render/Tick\";\n/**\r\n * Draws an axis tick.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Ticks} for more info\r\n * @important\r\n */\nexport class AxisTick extends Tick {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_tickPoints\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n}\nObject.defineProperty(AxisTick, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"AxisTick\"\n});\nObject.defineProperty(AxisTick, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Tick.classNames.concat([AxisTick.className])\n});\n//# sourceMappingURL=AxisTick.js.map","import { Label } from \"../../../core/render/Label\";\n/**\r\n * Draws an axis label.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/#Labels} for more info\r\n * @important\r\n */\nexport class AxisLabel extends Label {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_tickPoints\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n}\nObject.defineProperty(AxisLabel, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"AxisLabel\"\n});\nObject.defineProperty(AxisLabel, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Label.classNames.concat([AxisLabel.className])\n});\n//# sourceMappingURL=AxisLabel.js.map","import { Graphics } from \"../../../core/render/Graphics\";\nimport { Template } from \"../../../core/util/Template\";\nimport { ListTemplate } from \"../../../core/util/List\";\nimport { AxisTick } from \"./AxisTick\";\nimport { Grid } from \"./Grid\";\nimport { AxisLabel } from \"./AxisLabel\";\nimport * as $utils from \"../../../core/util/Utils\";\n/**\r\n * Base class for an axis renderer.\r\n *\r\n * Should not be used on its own.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n */\nexport class AxisRenderer extends Graphics {\n constructor() {\n super(...arguments);\n // save for quick access\n Object.defineProperty(this, \"_axisLength\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 100\n });\n Object.defineProperty(this, \"_start\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_end\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_inversed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_minSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n /**\r\n * Chart the renderer is used in.\r\n */\n Object.defineProperty(this, \"chart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_lc\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_ls\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_thumbDownPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downStart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_downEnd\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A list of ticks in the axis.\r\n *\r\n * `ticks.template` can be used to configure ticks.\r\n *\r\n * @default new ListTemplate<AxisTick>\r\n */\n Object.defineProperty(this, \"ticks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => AxisTick._new(this._root, {\n themeTags: $utils.mergeTags(this.ticks.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\n }, [this.ticks.template]))\n });\n /**\r\n * A list of grid elements in the axis.\r\n *\r\n * `grid.template` can be used to configure grid.\r\n *\r\n * @default new ListTemplate<Grid>\r\n */\n Object.defineProperty(this, \"grid\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => Grid._new(this._root, {\n themeTags: $utils.mergeTags(this.grid.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\n }, [this.grid.template]))\n });\n /**\r\n * A list of fills in the axis.\r\n *\r\n * `axisFills.template` can be used to configure axis fills.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\n Object.defineProperty(this, \"axisFills\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\n themeTags: $utils.mergeTags(this.axisFills.template.get(\"themeTags\", [\"axis\", \"fill\"]), this.get(\"themeTags\", []))\n }, [this.axisFills.template]))\n });\n /**\r\n * A list of labels in the axis.\r\n *\r\n * `labels.template` can be used to configure axis labels.\r\n *\r\n * @default new ListTemplate<AxisLabel>\r\n */\n Object.defineProperty(this, \"labels\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => AxisLabel._new(this._root, {\n themeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), this.get(\"themeTags\", []))\n }, [this.labels.template]))\n });\n /**\r\n * An [[Axis]] renderer is for.\r\n */\n Object.defineProperty(this, \"axis\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"thumb\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n /**\r\n * @ignore\r\n */\n makeTick(dataItem, themeTags) {\n const tick = this.ticks.make();\n tick._setDataItem(dataItem);\n dataItem.setRaw(\"tick\", tick);\n tick.set(\"themeTags\", $utils.mergeTags(tick.get(\"themeTags\"), themeTags));\n this.axis.labelsContainer.children.push(tick);\n this.ticks.push(tick);\n return tick;\n }\n /**\r\n * @ignore\r\n */\n makeGrid(dataItem, themeTags) {\n const grid = this.grid.make();\n grid._setDataItem(dataItem);\n dataItem.setRaw(\"grid\", grid);\n grid.set(\"themeTags\", $utils.mergeTags(grid.get(\"themeTags\"), themeTags));\n this.axis.gridContainer.children.push(grid);\n this.grid.push(grid);\n return grid;\n }\n /**\r\n * @ignore\r\n */\n makeAxisFill(dataItem, themeTags) {\n const axisFill = this.axisFills.make();\n axisFill._setDataItem(dataItem);\n axisFill.set(\"themeTags\", $utils.mergeTags(axisFill.get(\"themeTags\"), themeTags));\n this.axis.gridContainer.children.push(axisFill);\n dataItem.setRaw(\"axisFill\", axisFill);\n this.axisFills.push(axisFill);\n return axisFill;\n }\n /**\r\n * @ignore\r\n */\n makeLabel(dataItem, themeTags) {\n const label = this.labels.make();\n label.set(\"themeTags\", $utils.mergeTags(label.get(\"themeTags\"), themeTags));\n this.axis.labelsContainer.children.moveValue(label, 0);\n label._setDataItem(dataItem);\n dataItem.setRaw(\"label\", label);\n this.labels.push(label);\n return label;\n }\n axisLength() {\n return 0;\n }\n /**\r\n * @ignore\r\n */\n gridCount() {\n return this.axisLength() / this.get(\"minGridDistance\", 50);\n }\n _updatePositions() {}\n _afterNew() {\n super._afterNew();\n this.set(\"isMeasured\", false);\n const thumb = this.thumb;\n if (thumb) {\n this._disposers.push(thumb.events.on(\"pointerdown\", event => {\n this._handleThumbDown(event);\n }));\n this._disposers.push(thumb.events.on(\"globalpointerup\", event => {\n this._handleThumbUp(event);\n }));\n this._disposers.push(thumb.events.on(\"globalpointermove\", event => {\n this._handleThumbMove(event);\n }));\n }\n }\n _beforeChanged() {\n super._beforeChanged();\n if (this.isDirty(\"minGridDistance\")) {\n this.root.events.once(\"frameended\", () => {\n this.axis.markDirtySize();\n });\n }\n }\n _changed() {\n super._changed();\n if (this.isDirty(\"pan\")) {\n const thumb = this.thumb;\n if (thumb) {\n const labelsContainer = this.axis.labelsContainer;\n const pan = this.get(\"pan\");\n if (pan == \"zoom\") {\n labelsContainer.children.push(thumb);\n } else if (pan == \"none\") {\n labelsContainer.children.removeValue(thumb);\n }\n }\n }\n }\n _handleThumbDown(event) {\n this._thumbDownPoint = this.toLocal(event.point);\n const axis = this.axis;\n this._downStart = axis.get(\"start\");\n this._downEnd = axis.get(\"end\");\n }\n _handleThumbUp(_event) {\n this._thumbDownPoint = undefined;\n }\n _handleThumbMove(event) {\n const downPoint = this._thumbDownPoint;\n if (downPoint) {\n const point = this.toLocal(event.point);\n const downStart = this._downStart;\n const downEnd = this._downEnd;\n const extra = this._getPan(point, downPoint) * Math.min(1, downEnd - downStart) / 2;\n this.axis.zoom(downStart - extra, downEnd + extra, 0);\n }\n }\n _getPan(_point1, _point2) {\n return 0;\n }\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\n positionToCoordinate(position) {\n if (this._inversed) {\n return (this._end - position) * this._axisLength;\n } else {\n return (position - this._start) * this._axisLength;\n }\n }\n /**\r\n * @ignore\r\n */\n updateTooltipBounds(_tooltip) {}\n _updateSize() {\n this.markDirty();\n this._clear = true;\n }\n /**\r\n * @ignore\r\n */\n toAxisPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n position = position * (end - start);\n if (!this.get(\"inversed\")) {\n position = start + position;\n } else {\n position = end - position;\n }\n return position;\n }\n /**\r\n * @ignore\r\n */\n toGlobalPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n if (!this.get(\"inversed\")) {\n position = position - start;\n } else {\n position = end - position;\n }\n position = position / (end - start);\n return position;\n }\n /**\r\n * @ignore\r\n */\n fixPosition(position) {\n if (this.get(\"inversed\")) {\n return 1 - position;\n }\n return position;\n }\n /**\r\n * @ignore\r\n */\n _updateLC() {}\n toggleVisibility(sprite, position, minPosition, maxPosition) {\n let axis = this.axis;\n const start = axis.get(\"start\", 0);\n const end = axis.get(\"end\", 1);\n let updatedStart = start + (end - start) * (minPosition - 0.0001);\n let updatedEnd = start + (end - start) * (maxPosition + 0.0001);\n if (position < updatedStart || position > updatedEnd) {\n sprite.setPrivate(\"visible\", false);\n } else {\n sprite.setPrivate(\"visible\", true);\n }\n }\n _positionTooltip(tooltip, point) {\n const chart = this.chart;\n if (chart) {\n tooltip.set(\"pointTo\", this._display.toGlobal(point));\n if (!chart.inPlot(point)) {\n tooltip.hide();\n }\n }\n }\n processAxis() {}\n}\nObject.defineProperty(AxisRenderer, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"AxisRenderer\"\n});\nObject.defineProperty(AxisRenderer, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Graphics.classNames.concat([AxisRenderer.className])\n});\n//# sourceMappingURL=AxisRenderer.js.map","import { AxisRenderer } from \"./AxisRenderer\";\nimport { p100 } from \"../../../core/util/Percent\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $utils from \"../../../core/util/Utils\";\nimport { Rectangle } from \"../../../core/render/Rectangle\";\n/**\r\n * Used to render horizontal axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\nexport class AxisRendererX extends AxisRenderer {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"thumb\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Rectangle.new(this._root, {\n width: p100,\n isMeasured: false,\n themeTags: [\"axis\", \"x\", \"thumb\"]\n })\n });\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"x\"]);\n super._afterNew();\n this.setPrivateRaw(\"letter\", \"X\");\n const gridTemplate = this.grid.template;\n gridTemplate.set(\"height\", p100);\n gridTemplate.set(\"width\", 0);\n gridTemplate.set(\"draw\", (display, graphics) => {\n display.moveTo(0, 0);\n display.lineTo(0, graphics.height());\n });\n this.set(\"draw\", (display, graphics) => {\n display.moveTo(0, 0);\n display.lineTo(graphics.width(), 0);\n });\n }\n _changed() {\n super._changed();\n const axis = this.axis;\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\n axis.ghostLabel.set(\"x\", -1000);\n const opposite = \"opposite\";\n const inside = \"inside\";\n if (this.isDirty(opposite) || this.isDirty(inside)) {\n const chart = this.chart;\n const axisChildren = axis.children;\n if (this.get(inside)) {\n axis.addTag(inside);\n } else {\n axis.removeTag(inside);\n }\n if (chart) {\n if (this.get(opposite)) {\n const children = chart.topAxesContainer.children;\n if (children.indexOf(axis) == -1) {\n children.insertIndex(0, axis);\n }\n axis.addTag(opposite);\n axisChildren.moveValue(this);\n } else {\n const children = chart.bottomAxesContainer.children;\n if (children.indexOf(axis) == -1) {\n children.moveValue(axis);\n }\n axis.removeTag(opposite);\n axisChildren.moveValue(this, 0);\n }\n axis.ghostLabel._applyThemes();\n this.labels.each(label => {\n label._applyThemes();\n });\n this.root._markDirtyRedraw();\n }\n axis.markDirtySize();\n }\n this.thumb.setPrivate(\"height\", axis.labelsContainer.height());\n }\n _getPan(point1, point2) {\n return (point2.x - point1.x) / this.width();\n }\n /**\r\n * @ignore\r\n */\n toAxisPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n position -= this._ls;\n position = position * (end - start) / this._lc;\n if (!this.get(\"inversed\")) {\n position = start + position;\n } else {\n position = end - position;\n }\n return position;\n }\n /**\r\n * @ignore\r\n */\n toGlobalPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n if (!this.get(\"inversed\")) {\n position = position - start;\n } else {\n position = end - position;\n }\n position = position / (end - start) * this._lc;\n position += this._ls;\n return position;\n }\n /**\r\n * @ignore\r\n */\n _updateLC() {\n const axis = this.axis;\n const parent = axis.parent;\n if (parent) {\n const w = parent.innerWidth();\n this._lc = this.axisLength() / w;\n this._ls = (axis.x() - parent.get(\"paddingLeft\", 0)) / w;\n }\n }\n /**\r\n * @ignore\r\n */\n _updatePositions() {\n const axis = this.axis;\n const x = axis.x() - $utils.relativeToValue(axis.get(\"centerX\", 0), axis.width()) - axis.parent.get(\"paddingLeft\", 0);\n axis.gridContainer.set(\"x\", x);\n axis.topGridContainer.set(\"x\", x);\n axis.bulletsContainer.set(\"y\", this.y());\n const chart = axis.chart;\n if (chart) {\n const plotContainer = chart.plotContainer;\n const axisHeader = axis.axisHeader;\n let width = axis.get(\"marginLeft\", 0);\n let x = axis.x() - width;\n const parent = axis.parent;\n if (parent) {\n x -= parent.get(\"paddingLeft\", 0);\n }\n if (axisHeader.children.length > 0) {\n width = axis.axisHeader.width();\n axis.set(\"marginLeft\", width + 1);\n } else {\n axisHeader.set(\"width\", width);\n }\n axisHeader.setAll({\n x: x,\n y: -1,\n height: plotContainer.height() + 2\n });\n }\n }\n /**\r\n * @ignore\r\n */\n processAxis() {\n super.processAxis();\n const axis = this.axis;\n if (axis.get(\"width\") == null) {\n axis.set(\"width\", p100);\n }\n ;\n const verticalLayout = this._root.verticalLayout;\n axis.set(\"layout\", verticalLayout);\n axis.labelsContainer.set(\"width\", p100);\n axis.axisHeader.setAll({\n layout: verticalLayout\n });\n }\n /**\r\n * @ignore\r\n */\n axisLength() {\n return this.axis.width();\n }\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\n positionToPoint(position) {\n return {\n x: this.positionToCoordinate(position),\n y: 0\n };\n }\n /**\r\n * @ignore\r\n */\n updateTick(tick, position, endPosition, count) {\n if (tick) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = 0.5;\n if ($type.isNumber(count) && count > 1) {\n location = tick.get(\"multiLocation\", location);\n } else {\n location = tick.get(\"location\", location);\n }\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n tick.set(\"x\", this.positionToCoordinate(position));\n let length = tick.get(\"length\", 0);\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\n if (this.get(\"opposite\")) {\n tick.set(\"y\", p100);\n if (!inside) {\n length *= -1;\n }\n } else {\n tick.set(\"y\", 0);\n if (inside) {\n length *= -1;\n }\n }\n tick.set(\"draw\", display => {\n display.moveTo(0, 0);\n display.lineTo(0, length);\n });\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\n }\n }\n /**\r\n * @ignore\r\n */\n updateLabel(label, position, endPosition, count) {\n if (label) {\n let location = 0.5;\n if ($type.isNumber(count) && count > 1) {\n location = label.get(\"multiLocation\", location);\n } else {\n location = label.get(\"location\", location);\n }\n if (!$type.isNumber(position)) {\n position = 0;\n }\n const inside = label.get(\"inside\", this.get(\"inside\", false));\n const opposite = this.get(\"opposite\");\n if (opposite) {\n if (!inside) {\n label.set(\"position\", \"relative\");\n label.set(\"y\", p100);\n } else {\n label.set(\"position\", \"absolute\");\n label.set(\"y\", 0);\n }\n } else {\n if (!inside) {\n label.set(\"y\", undefined);\n label.set(\"position\", \"relative\");\n } else {\n label.set(\"y\", 0);\n label.set(\"position\", \"absolute\");\n }\n }\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n label.set(\"x\", this.positionToCoordinate(position));\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\n }\n }\n /**\r\n * @ignore\r\n */\n updateGrid(grid, position, endPosition) {\n if (grid) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = grid.get(\"location\", 0.5);\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n grid.set(\"x\", this.positionToCoordinate(position));\n this.toggleVisibility(grid, position, 0, 1);\n }\n }\n /**\r\n * @ignore\r\n */\n updateBullet(bullet, position, endPosition) {\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = bullet.get(\"location\", 0.5);\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n let bulletPosition = this.axis.roundAxisPosition(position, location);\n let previousBullet = this.axis._bullets[bulletPosition];\n let d = -1;\n if (this.get(\"opposite\")) {\n d = 1;\n }\n if (bullet.get(\"stacked\")) {\n if (previousBullet) {\n let previousSprite = previousBullet.get(\"sprite\");\n if (previousSprite) {\n sprite.set(\"y\", previousSprite.y() + previousSprite.height() * d);\n }\n } else {\n sprite.set(\"y\", 0);\n }\n }\n this.axis._bullets[bulletPosition] = bullet;\n sprite.set(\"x\", this.positionToCoordinate(position));\n this.toggleVisibility(sprite, position, 0, 1);\n }\n }\n }\n /**\r\n * @ignore\r\n */\n updateFill(fill, position, endPosition) {\n if (fill) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n if (!$type.isNumber(endPosition)) {\n endPosition = 1;\n }\n let x0 = this.positionToCoordinate(position);\n let x1 = this.positionToCoordinate(endPosition);\n this.fillDrawMethod(fill, x0, x1);\n }\n }\n fillDrawMethod(fill, x0, x1) {\n fill.set(\"draw\", display => {\n //display.drawRect(x0, 0, x1 - x0, this.axis!.gridContainer.height());\n // using for holes, so can not be rectangle\n const h = this.axis.gridContainer.height();\n const w = this.width();\n if (x1 < x0) {\n [x1, x0] = [x0, x1];\n }\n if (x0 > w || x1 < 0) {\n return;\n }\n /*\r\n const limit = 10000;\r\n x0 = Math.max(-limit, x0);\r\n x1 = Math.min(limit, x1);\r\n */\n display.moveTo(x0, 0);\n display.lineTo(x1, 0);\n display.lineTo(x1, h);\n display.lineTo(x0, h);\n display.lineTo(x0, 0);\n });\n }\n /**\r\n * @ignore\r\n */\n positionTooltip(tooltip, position) {\n this._positionTooltip(tooltip, {\n x: this.positionToCoordinate(position),\n y: 0\n });\n }\n /**\r\n * @ignore\r\n */\n updateTooltipBounds(tooltip) {\n const inside = this.get(\"inside\");\n const num = 100000;\n let global = this._display.toGlobal({\n x: 0,\n y: 0\n });\n let x = global.x;\n let y = 0;\n let w = this.axisLength();\n let h = num;\n let pointerOrientation = \"up\";\n if (this.get(\"opposite\")) {\n if (inside) {\n pointerOrientation = \"up\";\n y = global.y;\n h = num;\n } else {\n pointerOrientation = \"down\";\n y = global.y - num;\n h = num;\n }\n } else {\n if (inside) {\n pointerOrientation = \"down\";\n y = global.y - num;\n h = num;\n } else {\n pointerOrientation = \"up\";\n y = global.y;\n h = num;\n }\n }\n const bounds = {\n left: x,\n right: x + w,\n top: y,\n bottom: y + h\n };\n const oldBounds = tooltip.get(\"bounds\");\n if (!$utils.sameBounds(bounds, oldBounds)) {\n tooltip.set(\"bounds\", bounds);\n tooltip.set(\"pointerOrientation\", pointerOrientation);\n }\n }\n}\nObject.defineProperty(AxisRendererX, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"AxisRendererX\"\n});\nObject.defineProperty(AxisRendererX, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AxisRenderer.classNames.concat([AxisRendererX.className])\n});\n//# sourceMappingURL=AxisRendererX.js.map","import { DataItem } from \"../../../core/render/Component\";\nimport { Axis } from \"./Axis\";\nimport { MultiDisposer } from \"../../../core/util/Disposer\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $math from \"../../../core/util/Math\";\nimport * as $utils from \"../../../core/util/Utils\";\n/**\r\n * Creates a value axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/value-axis/} for more info\r\n * @important\r\n */\nexport class ValueAxis extends Axis {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_dirtyExtremes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dirtySelectionExtremes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_deltaMinMax\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_minReal\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_maxReal\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_minRealLog\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_baseValue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_syncDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_minLogAdjusted\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n }\n /**\r\n * @ignore\r\n */\n markDirtyExtremes() {\n this._dirtyExtremes = true;\n this.markDirty();\n }\n /**\r\n * @ignore\r\n */\n markDirtySelectionExtremes() {\n this._dirtySelectionExtremes = true;\n this.markDirty();\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"axis\"]);\n this.setPrivateRaw(\"name\", \"value\");\n this.addTag(\"value\");\n super._afterNew();\n }\n _prepareChildren() {\n super._prepareChildren();\n if (this.isDirty(\"syncWithAxis\")) {\n let previousValue = this._prevSettings.syncWithAxis;\n if (previousValue) {\n if (this._syncDp) {\n this._syncDp.dispose();\n }\n }\n let syncWithAxis = this.get(\"syncWithAxis\");\n if (syncWithAxis) {\n this._syncDp = new MultiDisposer([syncWithAxis.onPrivate(\"selectionMinFinal\", () => {\n this._dirtySelectionExtremes = true;\n }), syncWithAxis.onPrivate(\"selectionMaxFinal\", () => {\n this._dirtySelectionExtremes = true;\n })]);\n }\n }\n let someDirty = false;\n if (this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"maxPrecision\") || this.isDirty(\"numberFormat\")) {\n someDirty = true;\n this.ghostLabel.set(\"text\", \"\");\n }\n //if (this._dirtyExtremes || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"min\") || this.isDirty(\"max\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"maxPrecision\")) {\n if (this._sizeDirty || this._dirtyExtremes || this._valuesDirty || someDirty || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"extraMin\") || this.isDirty(\"extraMax\") || this.isDirty(\"logarithmic\") || this.isDirty(\"treatZeroAs\") || this.isDirty(\"baseValue\") || this.isDirty(\"strictMinMax\") || this.isDirty(\"strictMinMaxSelection\")) {\n this._getMinMax();\n this._dirtyExtremes = false;\n }\n this._handleSizeDirty();\n if (this._dirtySelectionExtremes && !this._isPanning && this.get(\"autoZoom\", true)) {\n this._getSelectionMinMax();\n this._dirtySelectionExtremes = false;\n }\n this._groupData();\n if (this._sizeDirty || this._valuesDirty || this.isDirty(\"start\") || this.isDirty(\"end\") || this.isPrivateDirty(\"min\") || this.isPrivateDirty(\"selectionMax\") || this.isPrivateDirty(\"selectionMin\") || this.isPrivateDirty(\"max\") || this.isPrivateDirty(\"step\") || this.isPrivateDirty(\"width\") || this.isPrivateDirty(\"height\") || this.isDirty(\"logarithmic\")) {\n this._handleRangeChange();\n this._prepareAxisItems();\n this._updateAxisRanges();\n }\n this._baseValue = this.baseValue();\n }\n _handleSizeDirty() {\n if (this._sizeDirty) {\n this._dirtySelectionExtremes = true;\n }\n }\n _groupData() {}\n _formatText(value) {\n const numberFormat = this.get(\"numberFormat\");\n const formatter = this.getNumberFormatter();\n let text = \"\";\n if (numberFormat) {\n text = formatter.format(value, numberFormat);\n } else {\n text = formatter.format(value, undefined, this.getPrivate(\"stepDecimalPlaces\"));\n }\n return text;\n }\n _prepareAxisItems() {\n const min = this.getPrivate(\"min\");\n const max = this.getPrivate(\"max\");\n if ($type.isNumber(min) && $type.isNumber(max)) {\n const logarithmic = this.get(\"logarithmic\");\n const step = this.getPrivate(\"step\");\n const selectionMin = this.getPrivate(\"selectionMin\");\n const selectionMax = this.getPrivate(\"selectionMax\") + step;\n let value = selectionMin - step;\n let differencePower = 1;\n let minLog = min;\n if (logarithmic) {\n value = this._minLogAdjusted;\n if (value < selectionMin) {\n while (value < selectionMin) {\n value += step;\n }\n }\n minLog = value;\n if (minLog <= 0) {\n minLog = 1;\n if (step < 1) {\n if ($type.isNumber(this._minRealLog)) {\n minLog = this._minRealLog;\n } else {\n minLog = Math.pow(10, -50);\n }\n }\n }\n differencePower = Math.log(selectionMax - step) * Math.LOG10E - Math.log(minLog) * Math.LOG10E;\n if (differencePower > 2) {\n value = Math.pow(10, Math.log(minLog) * Math.LOG10E - 50);\n }\n }\n /// minor grid\n const renderer = this.get(\"renderer\");\n const minorLabelsEnabled = renderer.get(\"minorLabelsEnabled\");\n const minorGridEnabled = renderer.get(\"minorGridEnabled\", minorLabelsEnabled);\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\n const stepAdjusted = Math.round(step / stepPower);\n let minorGridCount = 2;\n if ($math.round(stepAdjusted / 5, 10) % 1 == 0) {\n minorGridCount = 5;\n }\n if ($math.round(stepAdjusted / 10, 10) % 1 == 0) {\n minorGridCount = 10;\n }\n let minorStep = step / minorGridCount;\n // end of minor grid\n let i = 0;\n let m = 0;\n let previous = -Infinity;\n while (value < selectionMax) {\n let dataItem;\n if (this.dataItems.length < i + 1) {\n dataItem = new DataItem(this, undefined, {});\n this._dataItems.push(dataItem);\n this.processDataItem(dataItem);\n } else {\n dataItem = this.dataItems[i];\n }\n this._createAssets(dataItem, []);\n this._toggleDataItem(dataItem, true);\n dataItem.setRaw(\"value\", value);\n const label = dataItem.get(\"label\");\n if (label) {\n label.set(\"text\", this._formatText(value));\n }\n this._prepareDataItem(dataItem);\n let nextValue = value;\n if (!logarithmic) {\n nextValue += step;\n } else {\n if (differencePower > 2) {\n nextValue = Math.pow(10, Math.log(minLog) * Math.LOG10E + i - 50);\n } else {\n nextValue += step;\n }\n }\n // minor grid\n if (minorGridEnabled) {\n let minorValue = value + minorStep;\n if (logarithmic) {\n if (differencePower > 2) {\n let minorMinMaxStep = this._adjustMinMax(value, nextValue, 10);\n minorStep = minorMinMaxStep.step;\n }\n minorValue = value + minorStep;\n }\n while (minorValue < nextValue - step * 0.00000000001) {\n let minorDataItem;\n if (this.minorDataItems.length < m + 1) {\n minorDataItem = new DataItem(this, undefined, {});\n this.minorDataItems.push(minorDataItem);\n this.processDataItem(minorDataItem);\n } else {\n minorDataItem = this.minorDataItems[m];\n }\n this._createAssets(minorDataItem, [\"minor\"], true);\n this._toggleDataItem(minorDataItem, true);\n minorDataItem.setRaw(\"value\", minorValue);\n const minorLabel = minorDataItem.get(\"label\");\n if (minorLabel) {\n if (minorLabelsEnabled) {\n minorLabel.set(\"text\", this._formatText(minorValue));\n } else {\n minorLabel.setPrivate(\"visible\", false);\n }\n }\n this._prepareDataItem(minorDataItem);\n minorValue += minorStep;\n m++;\n }\n }\n value = nextValue;\n if (previous == value) {\n break;\n }\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\n if (stepPower < 1 && !logarithmic) {\n // exponent is less then 1 too. Count decimals of exponent\n let decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 2;\n // round value to avoid floating point issues\n value = $math.round(value, decCount);\n }\n i++;\n previous = value;\n }\n for (let j = i; j < this.dataItems.length; j++) {\n this._toggleDataItem(this.dataItems[j], false);\n }\n for (let j = m; j < this.minorDataItems.length; j++) {\n this._toggleDataItem(this.minorDataItems[j], false);\n }\n $array.each(this.series, series => {\n if (series.inited) {\n series._markDirtyAxes();\n }\n });\n this._updateGhost();\n }\n }\n _prepareDataItem(dataItem, count) {\n let renderer = this.get(\"renderer\");\n let value = dataItem.get(\"value\");\n let endValue = dataItem.get(\"endValue\");\n let position = this.valueToPosition(value);\n let endPosition = position;\n let fillEndPosition = this.valueToPosition(value + this.getPrivate(\"step\"));\n if ($type.isNumber(endValue)) {\n endPosition = this.valueToPosition(endValue);\n fillEndPosition = endPosition;\n }\n if (dataItem.get(\"isRange\")) {\n if (endValue == null) {\n fillEndPosition = position;\n }\n }\n let labelEndPosition = endPosition;\n let labelEndValue = dataItem.get(\"labelEndValue\");\n if (labelEndValue != null) {\n labelEndPosition = this.valueToPosition(labelEndValue);\n }\n renderer.updateLabel(dataItem.get(\"label\"), position, labelEndPosition, count);\n const grid = dataItem.get(\"grid\");\n renderer.updateGrid(grid, position, endPosition);\n if (grid) {\n if (value == this.get(\"baseValue\", 0)) {\n grid.addTag(\"base\");\n grid._applyThemes();\n } else if (grid.hasTag(\"base\")) {\n grid.removeTag(\"base\");\n grid._applyThemes();\n }\n }\n renderer.updateTick(dataItem.get(\"tick\"), position, labelEndPosition, count);\n renderer.updateFill(dataItem.get(\"axisFill\"), position, fillEndPosition);\n this._processBullet(dataItem);\n renderer.updateBullet(dataItem.get(\"bullet\"), position, endPosition);\n if (!dataItem.get(\"isRange\")) {\n const fillRule = this.get(\"fillRule\");\n if (fillRule) {\n fillRule(dataItem);\n }\n }\n }\n _handleRangeChange() {\n let selectionMin = this.positionToValue(this.get(\"start\", 0));\n let selectionMax = this.positionToValue(this.get(\"end\", 1));\n const gridCount = this.get(\"renderer\").gridCount();\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\n let stepDecimalPlaces = $utils.decimalPlaces(minMaxStep.step);\n this.setPrivateRaw(\"stepDecimalPlaces\", stepDecimalPlaces);\n selectionMin = $math.round(selectionMin, stepDecimalPlaces);\n selectionMax = $math.round(selectionMax, stepDecimalPlaces);\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\n let step = minMaxStep.step;\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n if (this.getPrivate(\"selectionMin\") !== selectionMin || this.getPrivate(\"selectionMax\") !== selectionMax || this.getPrivate(\"step\") !== step) {\n // do not change to setPrivate, will cause SO\n this.setPrivateRaw(\"selectionMin\", selectionMin);\n this.setPrivateRaw(\"selectionMax\", selectionMax);\n this.setPrivateRaw(\"step\", step);\n }\n }\n /**\r\n * Converts a relative position to a corresponding numeric value from axis\r\n * scale.\r\n *\r\n * @param position Relative position\r\n * @return Value\r\n */\n positionToValue(position) {\n const min = this.getPrivate(\"min\");\n const max = this.getPrivate(\"max\");\n if (!this.get(\"logarithmic\")) {\n return position * (max - min) + min;\n } else {\n return Math.pow(Math.E, (position * (Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E) + Math.log(min) * Math.LOG10E) / Math.LOG10E);\n }\n }\n /**\r\n * Convers value to a relative position on axis.\r\n *\r\n * @param value Value\r\n * @return Relative position\r\n */\n valueToPosition(value) {\n const min = this.getPrivate(\"min\");\n const max = this.getPrivate(\"max\");\n if (!this.get(\"logarithmic\")) {\n return (value - min) / (max - min);\n } else {\n if (value <= 0) {\n let treatZeroAs = this.get(\"treatZeroAs\");\n if ($type.isNumber(treatZeroAs)) {\n value = treatZeroAs;\n }\n }\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / (Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E);\n }\n }\n /**\r\n * @ignore\r\n */\n valueToFinalPosition(value) {\n const min = this.getPrivate(\"minFinal\");\n const max = this.getPrivate(\"maxFinal\");\n if (!this.get(\"logarithmic\")) {\n return (value - min) / (max - min);\n } else {\n if (value <= 0) {\n let treatZeroAs = this.get(\"treatZeroAs\");\n if ($type.isNumber(treatZeroAs)) {\n value = treatZeroAs;\n }\n }\n return (Math.log(value) * Math.LOG10E - Math.log(min) * Math.LOG10E) / (Math.log(max) * Math.LOG10E - Math.log(min) * Math.LOG10E);\n }\n }\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\n getX(value, location, baseValue) {\n value = baseValue + (value - baseValue) * location;\n const position = this.valueToPosition(value);\n return this._settings.renderer.positionToCoordinate(position);\n }\n /**\r\n * Returns X coordinate in pixels corresponding to specific value.\r\n *\r\n * @param value Numeric value\r\n * @param location Location\r\n * @param baseValue Base value\r\n * @return X coordinate\r\n */\n getY(value, location, baseValue) {\n value = baseValue + (value - baseValue) * location;\n const position = this.valueToPosition(value);\n return this._settings.renderer.positionToCoordinate(position);\n }\n /**\r\n * @ignore\r\n */\n getDataItemCoordinateX(dataItem, field, _cellLocation, axisLocation) {\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionX(dataItem, field, _cellLocation, axisLocation));\n }\n /**\r\n * @ignore\r\n */\n getDataItemPositionX(dataItem, field, _cellLocation, axisLocation) {\n let value = dataItem.get(field);\n const stackToItem = dataItem.get(\"stackToItemX\");\n if (stackToItem) {\n const series = dataItem.component;\n value = value * axisLocation + series.getStackedXValueWorking(dataItem, field);\n } else {\n value = this._baseValue + (value - this._baseValue) * axisLocation;\n }\n return this.valueToPosition(value);\n }\n /**\r\n * @ignore\r\n */\n getDataItemCoordinateY(dataItem, field, _cellLocation, axisLocation) {\n return this._settings.renderer.positionToCoordinate(this.getDataItemPositionY(dataItem, field, _cellLocation, axisLocation));\n }\n /**\r\n * @ignore\r\n */\n getDataItemPositionY(dataItem, field, _cellLocation, axisLocation) {\n let value = dataItem.get(field);\n const stackToItem = dataItem.get(\"stackToItemY\");\n if (stackToItem) {\n const series = dataItem.component;\n value = value * axisLocation + series.getStackedYValueWorking(dataItem, field);\n } else {\n value = this._baseValue + (value - this._baseValue) * axisLocation;\n }\n return this.valueToPosition(value);\n }\n /**\r\n * Returns relative position of axis' `baseValue`.\r\n *\r\n * @return Base value position\r\n */\n basePosition() {\n return this.valueToPosition(this.baseValue());\n }\n /**\r\n * Base value of the [[ValueAxis]], which determines positive and negative\r\n * values.\r\n *\r\n * @return Base value\r\n */\n baseValue() {\n const min = Math.min(this.getPrivate(\"minFinal\", -Infinity), this.getPrivate(\"selectionMin\", -Infinity));\n const max = Math.max(this.getPrivate(\"maxFinal\", Infinity), this.getPrivate(\"selectionMax\", Infinity));\n let baseValue = this.get(\"baseValue\", 0);\n if (baseValue < min) {\n baseValue = min;\n }\n if (baseValue > max) {\n baseValue = max;\n }\n return baseValue;\n }\n /**\r\n * @ignore\r\n */\n cellEndValue(value) {\n return value;\n }\n fixSmallStep(step) {\n // happens because of floating point error\n if (1 + step === 1) {\n step *= 2;\n return this.fixSmallStep(step);\n }\n return step;\n }\n _fixMin(min) {\n return min;\n }\n _fixMax(max) {\n return max;\n }\n _calculateTotals() {\n if (this.get(\"calculateTotals\")) {\n let series = this.series[0];\n if (series) {\n let startIndex = series.startIndex();\n if (series.dataItems.length > 0) {\n if (startIndex > 0) {\n startIndex--;\n }\n let endIndex = series.endIndex();\n if (endIndex < series.dataItems.length) {\n endIndex++;\n }\n let field;\n let vc;\n if (series.get(\"yAxis\") == this) {\n field = \"valueY\";\n vc = \"vcy\";\n } else if (series.get(\"xAxis\") == this) {\n field = \"valueX\";\n vc = \"vcx\";\n }\n let fieldWorking = field + \"Working\";\n if (field) {\n for (let i = startIndex; i < endIndex; i++) {\n let sum = 0;\n let total = 0;\n $array.each(this.series, series => {\n if (!series.get(\"excludeFromTotal\")) {\n let dataItem = series.dataItems[i];\n if (dataItem) {\n let value = dataItem.get(fieldWorking) * series.get(vc);\n if (!$type.isNaN(value)) {\n sum += value;\n total += Math.abs(value);\n }\n }\n }\n });\n $array.each(this.series, series => {\n if (!series.get(\"excludeFromTotal\")) {\n let dataItem = series.dataItems[i];\n if (dataItem) {\n let value = dataItem.get(fieldWorking) * series.get(vc);\n if (!$type.isNaN(value)) {\n dataItem.set(field + \"Total\", total);\n dataItem.set(field + \"Sum\", sum);\n dataItem.set(field + \"TotalPercent\", value / total * 100);\n }\n }\n }\n });\n }\n }\n }\n }\n }\n }\n _getSelectionMinMax() {\n const min = this.getPrivate(\"minFinal\");\n const max = this.getPrivate(\"maxFinal\");\n const minDefined = this.get(\"min\");\n const maxDefined = this.get(\"max\");\n let extraMin = this.get(\"extraMin\", 0);\n let extraMax = this.get(\"extraMax\", 0);\n if (this.get(\"logarithmic\")) {\n if (this.get(\"extraMin\") == null) {\n extraMin = 0.1;\n }\n if (this.get(\"extraMax\") == null) {\n extraMax = 0.2;\n }\n }\n const gridCount = this.get(\"renderer\").gridCount();\n const selectionStrictMinMax = this.get(\"strictMinMaxSelection\");\n let strictMinMax = this.get(\"strictMinMax\");\n if ($type.isNumber(min) && $type.isNumber(max)) {\n let selectionMin = max;\n let selectionMax = min;\n $array.each(this.series, series => {\n if (!series.get(\"ignoreMinMax\")) {\n let seriesMin;\n let seriesMax;\n const outOfSelection = series.getPrivate(\"outOfSelection\");\n if (series.get(\"xAxis\") === this) {\n if (!outOfSelection) {\n let minX = series.getPrivate(\"minX\");\n let maxX = series.getPrivate(\"maxX\");\n // solves #90085\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\n minX = undefined;\n maxX = undefined;\n }\n seriesMin = series.getPrivate(\"selectionMinX\", minX);\n seriesMax = series.getPrivate(\"selectionMaxX\", maxX);\n }\n } else if (series.get(\"yAxis\") === this) {\n if (!outOfSelection) {\n let minY = series.getPrivate(\"minY\");\n let maxY = series.getPrivate(\"maxY\");\n // solves #90085\n if (series.startIndex() != 0 || series.endIndex() != series.dataItems.length) {\n minY = undefined;\n maxY = undefined;\n }\n seriesMin = series.getPrivate(\"selectionMinY\", minY);\n seriesMax = series.getPrivate(\"selectionMaxY\", maxY);\n }\n }\n if (!series.isHidden() && !series.isShowing()) {\n if ($type.isNumber(seriesMin)) {\n selectionMin = Math.min(selectionMin, seriesMin);\n }\n if ($type.isNumber(seriesMax)) {\n selectionMax = Math.max(selectionMax, seriesMax);\n }\n }\n }\n });\n this.axisRanges.each(range => {\n if (range.get(\"affectsMinMax\")) {\n let value = range.get(\"value\");\n if (value != null) {\n selectionMin = Math.min(selectionMin, value);\n selectionMax = Math.max(selectionMax, value);\n }\n value = range.get(\"endValue\");\n if (value != null) {\n selectionMin = Math.min(selectionMin, value);\n selectionMax = Math.max(selectionMax, value);\n }\n }\n });\n if (selectionMin > selectionMax) {\n [selectionMin, selectionMax] = [selectionMax, selectionMin];\n }\n if ($type.isNumber(minDefined)) {\n if (strictMinMax) {\n selectionMin = minDefined;\n } else {\n selectionMin = min;\n }\n } else if (strictMinMax) {\n if ($type.isNumber(this._minReal)) {\n selectionMin = this._minReal;\n }\n }\n if ($type.isNumber(maxDefined)) {\n if (strictMinMax) {\n selectionMax = maxDefined;\n } else {\n selectionMax = max;\n }\n } else if (strictMinMax) {\n if ($type.isNumber(this._maxReal)) {\n selectionMax = this._maxReal;\n }\n }\n if (selectionMin === selectionMax) {\n let smin = selectionMin;\n selectionMin -= this._deltaMinMax;\n selectionMax += this._deltaMinMax;\n if (selectionMin < min) {\n let d = smin - min;\n if (d == 0) {\n d = this._deltaMinMax;\n }\n selectionMin = smin - d;\n selectionMax = smin + d;\n strictMinMax = true;\n }\n let minMaxStep2 = this._adjustMinMax(selectionMin, selectionMax, gridCount, strictMinMax);\n selectionMin = minMaxStep2.min;\n selectionMax = minMaxStep2.max;\n }\n let selectionMinReal = selectionMin;\n let selectionMaxReal = selectionMax;\n selectionMin -= (selectionMax - selectionMin) * extraMin;\n selectionMax += (selectionMax - selectionMin) * extraMax;\n let minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount);\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n selectionMin = $math.fitToRange(selectionMin, min, max);\n selectionMax = $math.fitToRange(selectionMax, min, max);\n // do it for the second time !important\t\t\t\n minMaxStep = this._adjustMinMax(selectionMin, selectionMax, gridCount, true);\n if (!strictMinMax) {\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n }\n const syncWithAxis = this.get(\"syncWithAxis\");\n if (syncWithAxis) {\n minMaxStep = this._syncAxes(selectionMin, selectionMax, minMaxStep.step, syncWithAxis.getPrivate(\"selectionMinFinal\", syncWithAxis.getPrivate(\"minFinal\", 0)), syncWithAxis.getPrivate(\"selectionMaxFinal\", syncWithAxis.getPrivate(\"maxFinal\", 1)), syncWithAxis.getPrivate(\"selectionStepFinal\", syncWithAxis.getPrivate(\"step\", 1)));\n if (minMaxStep.min < min) {\n minMaxStep.min = min;\n }\n if (minMaxStep.max > max) {\n minMaxStep.max = max;\n }\n selectionMin = minMaxStep.min;\n selectionMax = minMaxStep.max;\n }\n if (strictMinMax) {\n if ($type.isNumber(minDefined)) {\n selectionMin = Math.max(selectionMin, minDefined);\n }\n if ($type.isNumber(maxDefined)) {\n selectionMax = Math.min(selectionMax, maxDefined);\n }\n }\n if (selectionStrictMinMax) {\n selectionMin = selectionMinReal - (selectionMax - selectionMin) * extraMin;\n selectionMax = selectionMaxReal + (selectionMax - selectionMin) * extraMax;\n }\n if (this.get(\"logarithmic\")) {\n if (selectionMin <= 0) {\n selectionMin = selectionMinReal * (1 - Math.min(extraMin, 0.99));\n }\n if (selectionMin < min) {\n selectionMin = min;\n }\n if (selectionMax > max) {\n selectionMax = max;\n }\n }\n let len = Math.min(20, Math.ceil(Math.log(this.getPrivate(\"maxZoomFactor\", 100) + 1) / Math.LN10) + 2);\n let start = $math.round(this.valueToFinalPosition(selectionMin), len);\n let end = $math.round(this.valueToFinalPosition(selectionMax), len);\n this.setPrivateRaw(\"selectionMinFinal\", selectionMin);\n this.setPrivateRaw(\"selectionMaxFinal\", selectionMax);\n this.setPrivateRaw(\"selectionStepFinal\", minMaxStep.step);\n this.zoom(start, end);\n }\n }\n _getMinMax() {\n let minDefined = this.get(\"min\");\n let maxDefined = this.get(\"max\");\n let min = Infinity;\n let max = -Infinity;\n let extraMin = this.get(\"extraMin\", 0);\n let extraMax = this.get(\"extraMax\", 0);\n if (this.get(\"logarithmic\")) {\n if (this.get(\"extraMin\") == null) {\n extraMin = 0.1;\n }\n if (this.get(\"extraMax\") == null) {\n extraMax = 0.2;\n }\n }\n let minDiff = Infinity;\n $array.each(this.series, series => {\n if (!series.get(\"ignoreMinMax\")) {\n let seriesMin;\n let seriesMax;\n if (series.get(\"xAxis\") === this) {\n seriesMin = series.getPrivate(\"minX\");\n seriesMax = series.getPrivate(\"maxX\");\n } else if (series.get(\"yAxis\") === this) {\n seriesMin = series.getPrivate(\"minY\");\n seriesMax = series.getPrivate(\"maxY\");\n }\n if ($type.isNumber(seriesMin) && $type.isNumber(seriesMax)) {\n min = Math.min(min, seriesMin);\n max = Math.max(max, seriesMax);\n let diff = seriesMax - seriesMin;\n if (diff <= 0) {\n diff = Math.abs(seriesMax / 100);\n }\n if (diff < minDiff) {\n minDiff = diff;\n }\n }\n }\n });\n this.axisRanges.each(range => {\n if (range.get(\"affectsMinMax\")) {\n let value = range.get(\"value\");\n if (value != null) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n value = range.get(\"endValue\");\n if (value != null) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n });\n if (this.get(\"logarithmic\")) {\n let treatZeroAs = this.get(\"treatZeroAs\");\n if ($type.isNumber(treatZeroAs)) {\n if (min <= 0) {\n min = treatZeroAs;\n }\n }\n if (min <= 0) {\n new Error(\"Logarithmic value axis can not have values <= 0.\");\n }\n }\n if (min === 0 && max === 0) {\n max = 0.9;\n min = -0.9;\n }\n if ($type.isNumber(minDefined)) {\n min = minDefined;\n }\n if ($type.isNumber(maxDefined)) {\n max = maxDefined;\n }\n // meaning no min/max found on series/ranges and no min/max was defined\n if (min === Infinity || max === -Infinity) {\n this.setPrivate(\"minFinal\", undefined);\n this.setPrivate(\"maxFinal\", undefined);\n return;\n }\n if (min > max) {\n [min, max] = [max, min];\n }\n const initialMin = min;\n const initialMax = max;\n // adapter\n let minAdapted = this.adapters.fold(\"min\", min);\n let maxAdapted = this.adapters.fold(\"max\", max);\n this._minRealLog = min;\n if ($type.isNumber(minAdapted)) {\n min = minAdapted;\n }\n if ($type.isNumber(maxAdapted)) {\n max = maxAdapted;\n }\n // DateAxis does some magic here\n min = this._fixMin(min);\n max = this._fixMax(max);\n // this happens if starLocation and endLocation are 0.5 and DateAxis has only one date\t\t\n if (max - min <= 1 / Math.pow(10, 15)) {\n if (max - min !== 0) {\n this._deltaMinMax = (max - min) / 2;\n } else {\n this._getDelta(max);\n }\n min -= this._deltaMinMax;\n max += this._deltaMinMax;\n }\n // add extras\n min -= (max - min) * extraMin;\n max += (max - min) * extraMax;\n if (this.get(\"logarithmic\")) {\n // don't let min go below 0 if real min is >= 0\n if (min < 0 && initialMin >= 0) {\n min = 0;\n }\n // don't let max go above 0 if real max is <= 0\n if (max > 0 && initialMax <= 0) {\n max = 0;\n }\n }\n this._minReal = min;\n this._maxReal = max;\n let strictMinMax = this.get(\"strictMinMax\");\n let strictMinMaxSelection = this.get(\"strictMinMaxSelection\", false);\n if (strictMinMaxSelection) {\n strictMinMax = strictMinMaxSelection;\n }\n let strict = strictMinMax;\n if ($type.isNumber(maxDefined)) {\n strict = true;\n }\n let gridCount = this.get(\"renderer\").gridCount();\n let minMaxStep = this._adjustMinMax(min, max, gridCount, strict);\n min = minMaxStep.min;\n max = minMaxStep.max;\n // do it for the second time with strict true (importat!)\n minMaxStep = this._adjustMinMax(min, max, gridCount, true);\n min = minMaxStep.min;\n max = minMaxStep.max;\n // return min max if strict\n if (strictMinMax) {\n if ($type.isNumber(minDefined)) {\n min = minDefined;\n } else {\n min = this._minReal;\n }\n if ($type.isNumber(maxDefined)) {\n max = maxDefined;\n } else {\n max = this._maxReal;\n }\n if (max - min <= 0.00000001) {\n min -= this._deltaMinMax;\n max += this._deltaMinMax;\n }\n min -= (max - min) * extraMin;\n max += (max - min) * extraMax;\n }\n minAdapted = this.adapters.fold(\"min\", min);\n maxAdapted = this.adapters.fold(\"max\", max);\n if ($type.isNumber(minAdapted)) {\n min = minAdapted;\n }\n if ($type.isNumber(maxAdapted)) {\n max = maxAdapted;\n }\n if (minDiff == Infinity) {\n minDiff = max - min;\n }\n // this is to avoid floating point number error\n let decCount = Math.round(Math.abs(Math.log(Math.abs(max - min)) * Math.LOG10E)) + 5;\n min = $math.round(min, decCount);\n max = $math.round(max, decCount);\n const syncWithAxis = this.get(\"syncWithAxis\");\n if (syncWithAxis) {\n minMaxStep = this._syncAxes(min, max, minMaxStep.step, syncWithAxis.getPrivate(\"minFinal\", syncWithAxis.getPrivate(\"min\", 0)), syncWithAxis.getPrivate(\"maxFinal\", syncWithAxis.getPrivate(\"max\", 1)), syncWithAxis.getPrivate(\"step\", 1));\n min = minMaxStep.min;\n max = minMaxStep.max;\n }\n this.setPrivateRaw(\"maxZoomFactor\", Math.max(1, Math.ceil((max - min) / minDiff * this.get(\"maxZoomFactor\", 100))));\n this._fixZoomFactor();\n if (this.get(\"logarithmic\")) {\n this._minLogAdjusted = min;\n min = this._minReal;\n max = this._maxReal;\n if (min <= 0) {\n min = initialMin * (1 - Math.min(extraMin, 0.99));\n }\n }\n if ($type.isNumber(min) && $type.isNumber(max)) {\n if (this.getPrivate(\"minFinal\") !== min || this.getPrivate(\"maxFinal\") !== max) {\n this.setPrivate(\"minFinal\", min);\n this.setPrivate(\"maxFinal\", max);\n this._saveMinMax(min, max);\n const duration = this.get(\"interpolationDuration\", 0);\n const easing = this.get(\"interpolationEasing\");\n this.animatePrivate({\n key: \"min\",\n to: min,\n duration,\n easing\n });\n this.animatePrivate({\n key: \"max\",\n to: max,\n duration,\n easing\n });\n }\n }\n }\n _fixZoomFactor() {}\n _getDelta(max) {\n // the number by which we need to raise 10 to get difference\n let exponent = Math.log(Math.abs(max)) * Math.LOG10E;\n // here we find a number which is power of 10 and has the same count of numbers as difference has\n let power = Math.pow(10, Math.floor(exponent));\n // reduce this number by 10 times\n power = power / 10;\n this._deltaMinMax = power;\n }\n _saveMinMax(_min, _max) {}\n _adjustMinMax(min, max, gridCount, strictMode) {\n // will fail if 0\n if (gridCount <= 1) {\n gridCount = 1;\n }\n gridCount = Math.round(gridCount);\n let initialMin = min;\n let initialMax = max;\n let difference = max - min;\n // in case min and max is the same, use max\n if (difference === 0) {\n difference = Math.abs(max);\n }\n // the number by which we need to raise 10 to get difference\n let exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\n // here we find a number which is power of 10 and has the same count of numbers as difference has\n let power = Math.pow(10, Math.floor(exponent));\n // reduce this number by 10 times\n power = power / 10;\n let extra = power;\n if (strictMode) {\n extra = 0;\n }\n // round down min\n if (strictMode) {\n min = Math.floor(min / power) * power;\n // round up max\n max = Math.ceil(max / power) * power;\n } else {\n min = Math.ceil(min / power) * power - extra;\n // round up max\n max = Math.floor(max / power) * power + extra;\n }\n // don't let min go below 0 if real min is >= 0\n if (min < 0 && initialMin >= 0) {\n min = 0;\n }\n // don't let max go above 0 if real max is <= 0\n if (max > 0 && initialMax <= 0) {\n max = 0;\n }\n exponent = Math.log(Math.abs(difference)) * Math.LOG10E;\n power = Math.pow(10, Math.floor(exponent));\n power = power / 100; // used to be 10 in v4, but this caused issue that there could be limited number of grids with even very small minGridDistance\n // approximate difference between two grid lines\n let step = Math.ceil(difference / gridCount / power) * power;\n let stepPower = Math.pow(10, Math.floor(Math.log(Math.abs(step)) * Math.LOG10E));\n // the step should divide by 2, 5, and 10.\n let stepDivisor = Math.ceil(step / stepPower); // number 0 - 10\n if (stepDivisor > 5) {\n stepDivisor = 10;\n } else if (stepDivisor <= 5 && stepDivisor > 2) {\n stepDivisor = 5;\n }\n // now get real step\n step = Math.ceil(step / (stepPower * stepDivisor)) * stepPower * stepDivisor;\n let maxPrecision = this.get(\"maxPrecision\");\n if ($type.isNumber(maxPrecision)) {\n let ceiledStep = $math.ceil(step, maxPrecision);\n if (maxPrecision < Number.MAX_VALUE && step !== ceiledStep) {\n step = ceiledStep;\n if (step == 0) {\n step = 1;\n }\n }\n }\n let decCount = 0;\n // in case numbers are smaller than 1\n if (stepPower < 1) {\n // exponent is less then 1 too. Count decimals of exponent\n decCount = Math.round(Math.abs(Math.log(Math.abs(stepPower)) * Math.LOG10E)) + 1;\n // round step\n step = $math.round(step, decCount);\n }\n // final min and max\n let minCount = Math.floor(min / step);\n min = $math.round(step * minCount, decCount);\n let maxCount;\n if (!strictMode) {\n maxCount = Math.ceil(max / step);\n } else {\n maxCount = Math.floor(max / step);\n }\n if (maxCount === minCount) {\n maxCount++;\n }\n max = $math.round(step * maxCount, decCount);\n if (max < initialMax) {\n max = max + step;\n }\n if (min > initialMin) {\n min = min - step;\n }\n step = this.fixSmallStep(step);\n return {\n min: min,\n max: max,\n step: step\n };\n }\n /**\r\n * Returns text to be used in an axis tooltip for specific relative position.\r\n *\r\n * @param position Position\r\n * @return Tooltip text\r\n */\n getTooltipText(position, _adjustPosition) {\n const numberFormat = this.get(\"tooltipNumberFormat\", this.get(\"numberFormat\"));\n const formatter = this.getNumberFormatter();\n const extraDecimals = this.get(\"extraTooltipPrecision\", 0);\n const decimals = this.getPrivate(\"stepDecimalPlaces\", 0) + extraDecimals;\n const value = $math.round(this.positionToValue(position), decimals);\n if (numberFormat) {\n return formatter.format(value, numberFormat);\n } else {\n return formatter.format(value, undefined, decimals);\n }\n }\n /**\r\n * Returns a data item from series that is closest to the `position`.\r\n *\r\n * @param series Series\r\n * @param position Relative position\r\n * @return Data item\r\n */\n getSeriesItem(series, position) {\n let fieldName = this.getPrivate(\"name\") + this.get(\"renderer\").getPrivate(\"letter\");\n let value = this.positionToValue(position);\n let index = undefined;\n let oldDiff;\n $array.each(series.dataItems, (dataItem, i) => {\n const diff = Math.abs(dataItem.get(fieldName) - value);\n if (index === undefined || diff < oldDiff) {\n index = i;\n oldDiff = diff;\n }\n });\n if (index != null) {\n return series.dataItems[index];\n }\n }\n /**\r\n * Zooms the axis to specific `start` and `end` values.\r\n *\r\n * Optional `duration` specifies duration of zoom animation in milliseconds.\r\n *\r\n * @param start Start value\r\n * @param end End value\r\n * @param duration Duration in milliseconds\r\n */\n zoomToValues(start, end, duration) {\n const min = this.getPrivate(\"minFinal\", 0);\n const max = this.getPrivate(\"maxFinal\", 0);\n if (this.getPrivate(\"min\") != null && this.getPrivate(\"max\") != null) {\n this.zoom((start - min) / (max - min), (end - min) / (max - min), duration);\n }\n }\n /**\r\n * Syncs with a target axis.\r\n *\r\n * @param min Min\r\n * @param max Max\r\n * @param step Step\r\n */\n _syncAxes(min, max, step, syncMin, syncMax, syncStep) {\n let axis = this.get(\"syncWithAxis\");\n if (axis) {\n let count = Math.round(syncMax - syncMin) / syncStep;\n let currentCount = Math.round((max - min) / step);\n let gridCount = this.get(\"renderer\").gridCount();\n if ($type.isNumber(count) && $type.isNumber(currentCount)) {\n let synced = false;\n let c = 0;\n let diff = (max - min) * 0.01;\n let omin = min;\n let omax = max;\n let ostep = step;\n while (synced != true) {\n synced = this._checkSync(omin, omax, ostep, count);\n c++;\n if (c > 500) {\n synced = true;\n }\n if (!synced) {\n if (c / 3 == Math.round(c / 3)) {\n omin = min - diff * c;\n if (min >= 0 && omin < 0) {\n omin = 0;\n }\n } else {\n omax = max + diff * c;\n if (omax <= 0 && omax > 0) {\n omax = 0;\n }\n }\n let minMaxStep = this._adjustMinMax(omin, omax, gridCount, true);\n omin = minMaxStep.min;\n omax = minMaxStep.max;\n ostep = minMaxStep.step;\n } else {\n min = omin;\n max = omax;\n step = ostep;\n }\n }\n }\n }\n return {\n min: min,\n max: max,\n step: step\n };\n }\n /**\r\n * Returns `true` if axis needs to be resunced with some other axis.\r\n */\n _checkSync(min, max, step, count) {\n let currentCount = (max - min) / step;\n for (let i = 1; i < count; i++) {\n if ($math.round(currentCount / i, 1) == count || currentCount * i == count) {\n return true;\n }\n }\n return false;\n }\n /**\r\n * Returns relative position between two grid lines of the axis.\r\n *\r\n * @return Position\r\n */\n getCellWidthPosition() {\n let max = this.getPrivate(\"selectionMax\", this.getPrivate(\"max\"));\n let min = this.getPrivate(\"selectionMin\", this.getPrivate(\"min\"));\n if ($type.isNumber(max) && $type.isNumber(min)) {\n return this.getPrivate(\"step\", 1) / (max - min);\n }\n return 0.05;\n }\n /**\r\n * @ignore\r\n */\n nextPosition(count) {\n if (count == null) {\n count = 1;\n }\n if (this.get(\"renderer\").getPrivate(\"letter\") == \"Y\") {\n count *= -1;\n }\n let value = this.positionToValue(this.getPrivate(\"tooltipPosition\", 0));\n value += this.getPrivate(\"step\", 1) * count;\n value = $math.fitToRange(value, this.getPrivate(\"selectionMin\", 0), this.getPrivate(\"selectionMax\", 1));\n return this.toGlobalPosition(this.valueToPosition(value));\n }\n}\nObject.defineProperty(ValueAxis, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"ValueAxis\"\n});\nObject.defineProperty(ValueAxis, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Axis.classNames.concat([ValueAxis.className])\n});\n//# sourceMappingURL=ValueAxis.js.map","import { AxisRenderer } from \"./AxisRenderer\";\nimport { p100 } from \"../../../core/util/Percent\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $utils from \"../../../core/util/Utils\";\nimport { Rectangle } from \"../../../core/render/Rectangle\";\n/**\r\n * Used to render vertical axis.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/#Axis_renderer} for more info\r\n * @important\r\n */\nexport class AxisRendererY extends AxisRenderer {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_downY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"thumb\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Rectangle.new(this._root, {\n height: p100,\n isMeasured: false,\n themeTags: [\"axis\", \"y\", \"thumb\"]\n })\n });\n }\n _afterNew() {\n this._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"renderer\", \"y\"]);\n if (this._settings.opposite) {\n this._settings.themeTags.push(\"opposite\");\n }\n super._afterNew();\n this.setPrivateRaw(\"letter\", \"Y\");\n const gridTemplate = this.grid.template;\n gridTemplate.set(\"width\", p100);\n gridTemplate.set(\"height\", 0);\n gridTemplate.set(\"draw\", (display, graphics) => {\n display.moveTo(0, 0);\n display.lineTo(graphics.width(), 0);\n });\n this.set(\"draw\", (display, renderer) => {\n display.moveTo(0, 0);\n display.lineTo(0, renderer.height());\n });\n }\n _getPan(point1, point2) {\n return (point1.y - point2.y) / this.height();\n }\n _changed() {\n super._changed();\n const axis = this.axis;\n axis.ghostLabel.setPrivate(\"visible\", !this.get(\"inside\"));\n axis.ghostLabel.set(\"y\", -1000);\n const thumb = this.thumb;\n const opposite = \"opposite\";\n const inside = \"inside\";\n const chart = this.chart;\n if (this.isDirty(opposite) || this.isDirty(inside)) {\n const axisChildren = axis.children;\n if (this.get(inside)) {\n axis.addTag(inside);\n } else {\n axis.removeTag(inside);\n }\n if (chart) {\n if (this.get(opposite)) {\n const children = chart.rightAxesContainer.children;\n if (children.indexOf(axis) == -1) {\n children.moveValue(axis, 0);\n }\n axis.addTag(opposite);\n axisChildren.moveValue(this, 0);\n } else {\n const children = chart.leftAxesContainer.children;\n if (children.indexOf(axis) == -1) {\n children.moveValue(axis);\n }\n axis.removeTag(opposite);\n axisChildren.moveValue(this);\n }\n axis.ghostLabel._applyThemes();\n this.labels.each(label => {\n label._applyThemes();\n });\n this.root._markDirtyRedraw();\n }\n axis.markDirtySize();\n }\n const w = axis.labelsContainer.width();\n if (chart) {\n if (this.get(opposite)) {\n thumb.set(\"centerX\", 0);\n } else {\n thumb.set(\"centerX\", w);\n }\n }\n thumb.setPrivate(\"width\", w);\n }\n /**\r\n * @ignore\r\n */\n processAxis() {\n super.processAxis();\n const axis = this.axis;\n if (axis.get(\"height\") == null) {\n axis.set(\"height\", p100);\n }\n const horizontalLayout = this._root.horizontalLayout;\n axis.set(\"layout\", horizontalLayout);\n axis.labelsContainer.set(\"height\", p100);\n axis.axisHeader.set(\"layout\", horizontalLayout);\n }\n _updatePositions() {\n const axis = this.axis;\n const y = axis.y() - $utils.relativeToValue(axis.get(\"centerY\", 0), axis.height());\n axis.gridContainer.set(\"y\", y);\n axis.topGridContainer.set(\"y\", y);\n axis.bulletsContainer.set(\"x\", this.x());\n const chart = axis.chart;\n if (chart) {\n const plotContainer = chart.plotContainer;\n const axisHeader = axis.axisHeader;\n let height = axis.get(\"marginTop\", 0);\n if (axisHeader.children.length > 0) {\n height = axis.axisHeader.height();\n axis.set(\"marginTop\", height + 1);\n } else {\n axisHeader.set(\"height\", height);\n }\n axisHeader.setAll({\n y: axis.y() - height,\n x: -1,\n width: plotContainer.width() + 2\n });\n }\n }\n /**\r\n * @ignore\r\n */\n axisLength() {\n return this.axis.innerHeight();\n }\n /**\r\n * Converts axis relative position to actual coordinate in pixels.\r\n *\r\n * @param position Position\r\n * @return Point\r\n */\n positionToPoint(position) {\n return {\n x: 0,\n y: this.positionToCoordinate(position)\n };\n }\n /**\r\n * @ignore\r\n */\n updateLabel(label, position, endPosition, count) {\n if (label) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = 0.5;\n if ($type.isNumber(count) && count > 1) {\n location = label.get(\"multiLocation\", location);\n } else {\n location = label.get(\"location\", location);\n }\n const opposite = this.get(\"opposite\");\n const inside = label.get(\"inside\", this.get(\"inside\", false));\n if (opposite) {\n label.set(\"x\", 0);\n if (inside) {\n label.set(\"position\", \"absolute\");\n } else {\n label.set(\"position\", \"relative\");\n }\n } else {\n if (inside) {\n label.set(\"x\", 0);\n label.set(\"position\", \"absolute\");\n } else {\n label.set(\"x\", undefined);\n label.set(\"position\", \"relative\");\n }\n }\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n label.set(\"y\", this.positionToCoordinate(position));\n this.toggleVisibility(label, position, label.get(\"minPosition\", 0), label.get(\"maxPosition\", 1));\n }\n }\n /**\r\n * @ignore\r\n */\n updateGrid(grid, position, endPosition) {\n if (grid) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = grid.get(\"location\", 0.5);\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n grid.set(\"y\", this.positionToCoordinate(position));\n this.toggleVisibility(grid, position, 0, 1);\n }\n }\n /**\r\n * @ignore\r\n */\n updateTick(tick, position, endPosition, count) {\n if (tick) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = 0.5;\n if ($type.isNumber(count) && count > 1) {\n location = tick.get(\"multiLocation\", location);\n } else {\n location = tick.get(\"location\", location);\n }\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n tick.set(\"y\", this.positionToCoordinate(position));\n let length = tick.get(\"length\", 0);\n const inside = tick.get(\"inside\", this.get(\"inside\", false));\n if (this.get(\"opposite\")) {\n tick.set(\"x\", 0);\n if (inside) {\n length *= -1;\n }\n } else {\n if (!inside) {\n length *= -1;\n }\n }\n tick.set(\"draw\", display => {\n display.moveTo(0, 0);\n display.lineTo(length, 0);\n });\n this.toggleVisibility(tick, position, tick.get(\"minPosition\", 0), tick.get(\"maxPosition\", 1));\n }\n }\n /**\r\n * @ignore\r\n */\n updateBullet(bullet, position, endPosition) {\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n let location = bullet.get(\"location\", 0.5);\n if ($type.isNumber(endPosition) && endPosition != position) {\n position = position + (endPosition - position) * location;\n }\n let bulletPosition = this.axis.roundAxisPosition(position, location);\n let previousBullet = this.axis._bullets[bulletPosition];\n let d = 1;\n if (this.get(\"opposite\")) {\n d = -1;\n }\n if (bullet.get(\"stacked\")) {\n if (previousBullet) {\n let previousSprite = previousBullet.get(\"sprite\");\n if (previousSprite) {\n sprite.set(\"x\", previousSprite.x() + previousSprite.width() * d);\n }\n } else {\n sprite.set(\"x\", 0);\n }\n }\n this.axis._bullets[bulletPosition] = bullet;\n sprite.set(\"y\", this.positionToCoordinate(position));\n this.toggleVisibility(sprite, position, 0, 1);\n }\n }\n }\n /**\r\n * @ignore\r\n */\n updateFill(fill, position, endPosition) {\n if (fill) {\n if (!$type.isNumber(position)) {\n position = 0;\n }\n if (!$type.isNumber(endPosition)) {\n endPosition = 1;\n }\n let y0 = this.positionToCoordinate(position);\n let y1 = this.positionToCoordinate(endPosition);\n this.fillDrawMethod(fill, y0, y1);\n }\n }\n fillDrawMethod(fill, y0, y1) {\n fill.set(\"draw\", display => {\n // using for holes, so can not be rectangle\n const w = this.axis.gridContainer.width();\n const h = this.height();\n if (y1 < y0) {\n [y1, y0] = [y0, y1];\n }\n if (y0 > h || y1 < 0) {\n return;\n }\n //y0 = Math.max(0, y0);\n //y1 = Math.min(h, y1);\n display.moveTo(0, y0);\n display.lineTo(w, y0);\n display.lineTo(w, y1);\n display.lineTo(0, y1);\n display.lineTo(0, y0);\n });\n }\n /**\r\n * Converts relative position (0-1) on axis to a pixel coordinate.\r\n *\r\n * @param position Position (0-1)\r\n * @return Coordinate (px)\r\n */\n positionToCoordinate(position) {\n if (!this._inversed) {\n return (this._end - position) * this._axisLength;\n } else {\n return (position - this._start) * this._axisLength;\n }\n }\n /**\r\n * @ignore\r\n */\n positionTooltip(tooltip, position) {\n this._positionTooltip(tooltip, {\n x: 0,\n y: this.positionToCoordinate(position)\n });\n }\n /**\r\n * @ignore\r\n */\n updateTooltipBounds(tooltip) {\n const inside = this.get(\"inside\");\n const num = 100000;\n let global = this._display.toGlobal({\n x: 0,\n y: 0\n });\n let y = global.y;\n let x = 0;\n let h = this.axisLength();\n let w = num;\n let pointerOrientation = \"right\";\n if (this.get(\"opposite\")) {\n if (inside) {\n pointerOrientation = \"right\";\n x = global.x - num;\n w = num;\n } else {\n pointerOrientation = \"left\";\n x = global.x;\n w = num;\n }\n } else {\n if (inside) {\n pointerOrientation = \"left\";\n x = global.x;\n w = num;\n } else {\n pointerOrientation = \"right\";\n x = global.x - num;\n w = num;\n }\n }\n const bounds = {\n left: x,\n right: x + w,\n top: y,\n bottom: y + h\n };\n const oldBounds = tooltip.get(\"bounds\");\n if (!$utils.sameBounds(bounds, oldBounds)) {\n tooltip.set(\"bounds\", bounds);\n tooltip.set(\"pointerOrientation\", pointerOrientation);\n }\n }\n /**\r\n * @ignore\r\n */\n _updateLC() {\n const axis = this.axis;\n const parent = axis.parent;\n if (parent) {\n const h = parent.innerHeight();\n this._lc = this.axisLength() / h;\n this._ls = axis.y() / h;\n }\n }\n /**\r\n * @ignore\r\n */\n toAxisPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n position -= this._ls;\n position = position * (end - start) / this._lc;\n if (this.get(\"inversed\")) {\n position = start + position;\n } else {\n position = end - position;\n }\n return position;\n }\n /**\r\n * @ignore\r\n */\n toGlobalPosition(position) {\n const start = this._start || 0;\n const end = this._end || 1;\n if (this.get(\"inversed\")) {\n position = position - start;\n } else {\n position = end - position;\n }\n position = position / (end - start) * this._lc;\n position += this._ls;\n return position;\n }\n /**\r\n * @ignore\r\n */\n fixPosition(position) {\n if (!this.get(\"inversed\")) {\n return 1 - position;\n }\n return position;\n }\n}\nObject.defineProperty(AxisRendererY, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"AxisRendererY\"\n});\nObject.defineProperty(AxisRendererY, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: AxisRenderer.classNames.concat([AxisRendererY.className])\n});\n//# sourceMappingURL=AxisRendererY.js.map","import { __awaiter } from \"tslib\";\nimport { Component } from \"../../core/render/Component\";\nimport { List } from \"../../core/util/List\";\nimport { Color } from \"../../core/util/Color\";\nimport { percentInterpolate } from \"../../core/util/Animation\";\nimport { Percent } from \"../../core/util/Percent\";\nimport * as $array from \"../../core/util/Array\";\nimport * as $type from \"../../core/util/Type\";\nimport * as $time from \"../../core/util/Time\";\nimport { p100 } from \"../../core/util/Percent\";\nimport { Container } from \"../../core/render/Container\";\nimport { Label } from \"../../core/render/Label\";\n/**\r\n * A base class for all series.\r\n */\nexport class Series extends Component {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_aggregatesCalculated\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_selectionAggregatesCalculated\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dataProcessed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_psi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_pei\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A chart series belongs to.\r\n */\n Object.defineProperty(this, \"chart\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * List of bullets to use for the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/} for more info\r\n */\n Object.defineProperty(this, \"bullets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new List()\n });\n /**\r\n * A [[Container]] series' bullets are stored in.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"bulletsContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Container.new(this._root, {\n width: p100,\n height: p100,\n position: \"absolute\"\n })\n });\n }\n _afterNew() {\n this.valueFields.push(\"value\", \"customValue\");\n super._afterNew();\n this.setPrivate(\"customData\", {});\n this._disposers.push(this.bullets.events.onAll(change => {\n if (change.type === \"clear\") {\n this._handleBullets(this.dataItems);\n } else if (change.type === \"push\") {\n this._handleBullets(this.dataItems);\n } else if (change.type === \"setIndex\") {\n this._handleBullets(this.dataItems);\n } else if (change.type === \"insertIndex\") {\n this._handleBullets(this.dataItems);\n } else if (change.type === \"removeIndex\") {\n this._handleBullets(this.dataItems);\n } else if (change.type === \"moveIndex\") {\n this._handleBullets(this.dataItems);\n } else {\n throw new Error(\"Unknown IListEvent type\");\n }\n }));\n }\n _dispose() {\n this.bulletsContainer.dispose(); // can be in a different parent\n super._dispose();\n }\n startIndex() {\n let len = this.dataItems.length;\n return Math.min(this.getPrivate(\"startIndex\", 0), len);\n }\n endIndex() {\n let len = this.dataItems.length;\n return Math.min(this.getPrivate(\"endIndex\", len), len);\n }\n _handleBullets(dataItems) {\n $array.each(dataItems, dataItem => {\n const bullets = dataItem.bullets;\n if (bullets) {\n $array.each(bullets, bullet => {\n bullet.dispose();\n });\n dataItem.bullets = undefined;\n }\n });\n this.markDirtyValues();\n }\n /**\r\n * Looks up and returns a data item by its ID.\r\n *\r\n * @param id ID\r\n * @return Data item\r\n */\n getDataItemById(id) {\n return $array.find(this.dataItems, dataItem => {\n return dataItem.get(\"id\") == id;\n });\n }\n _makeBullets(dataItem) {\n if (this._shouldMakeBullet(dataItem)) {\n dataItem.bullets = [];\n this.bullets.each(bulletFunction => {\n this._makeBullet(dataItem, bulletFunction);\n });\n }\n }\n _shouldMakeBullet(_dataItem) {\n return true;\n }\n _makeBullet(dataItem, bulletFunction, index) {\n const bullet = bulletFunction(this._root, this, dataItem);\n if (bullet) {\n bullet._index = index;\n this._makeBulletReal(dataItem, bullet);\n }\n return bullet;\n }\n _makeBulletReal(dataItem, bullet) {\n let sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite._setDataItem(dataItem);\n sprite.setRaw(\"position\", \"absolute\");\n this.bulletsContainer.children.push(sprite);\n }\n bullet.series = this;\n dataItem.bullets.push(bullet);\n }\n /**\r\n * Adds bullet directly to a data item.\r\n *\r\n * Please note: method accepts [[Bullet]] instance as a paramter, not a\r\n * reference to a function.\r\n *\r\n * You should add Bullet instance, not a method like you do it on series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/concepts/common-elements/bullets/#Adding_directly_to_data_item} for more info\r\n * @since 5.6.0\r\n *\r\n * @param dataItem Target data item\r\n * @param bullet Bullet instance\r\n */\n addBullet(dataItem, bullet) {\n if (!dataItem.bullets) {\n dataItem.bullets = [];\n }\n if (bullet) {\n this._makeBulletReal(dataItem, bullet);\n }\n }\n _clearDirty() {\n super._clearDirty();\n this._aggregatesCalculated = false;\n this._selectionAggregatesCalculated = false;\n }\n _prepareChildren() {\n super._prepareChildren();\n let startIndex = this.startIndex();\n let endIndex = this.endIndex();\n if (this.isDirty(\"name\")) {\n this.updateLegendValue();\n }\n if (this.isDirty(\"heatRules\")) {\n this._valuesDirty = true;\n }\n if (this.isPrivateDirty(\"baseValueSeries\")) {\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\n if (baseValueSeries) {\n this._disposers.push(baseValueSeries.onPrivate(\"startIndex\", () => {\n this.markDirtyValues();\n }));\n }\n }\n const calculateAggregates = this.get(\"calculateAggregates\");\n if (calculateAggregates) {\n if (this._valuesDirty && !this._dataProcessed) {\n if (!this._aggregatesCalculated) {\n this._calculateAggregates(0, this.dataItems.length);\n this._aggregatesCalculated = true;\n if (startIndex != 0) {\n this._psi = undefined;\n }\n }\n }\n if ((this._psi != startIndex || this._pei != endIndex || this.isPrivateDirty(\"adjustedStartIndex\")) && !this._selectionAggregatesCalculated) {\n if (startIndex === 0 && endIndex === this.dataItems.length && this._aggregatesCalculated) {\n // void\n } else {\n this._calculateAggregates(startIndex, endIndex);\n }\n this._selectionAggregatesCalculated = true;\n }\n }\n if (this.isDirty(\"tooltip\")) {\n let tooltip = this.get(\"tooltip\");\n if (tooltip) {\n tooltip.hide(0);\n tooltip.set(\"tooltipTarget\", this);\n }\n }\n if (this.isDirty(\"fill\") || this.isDirty(\"stroke\")) {\n let markerRectangle;\n const legendDataItem = this.get(\"legendDataItem\");\n if (legendDataItem) {\n markerRectangle = legendDataItem.get(\"markerRectangle\");\n if (markerRectangle) {\n if (this.isVisible()) {\n if (this.isDirty(\"stroke\")) {\n let stroke = this.get(\"stroke\");\n markerRectangle.set(\"stroke\", stroke);\n }\n if (this.isDirty(\"fill\")) {\n let fill = this.get(\"fill\");\n markerRectangle.set(\"fill\", fill);\n }\n }\n }\n }\n this.updateLegendMarker(undefined);\n }\n if (this.bullets.length > 0) {\n let startIndex = this.startIndex();\n let endIndex = this.endIndex();\n if (endIndex < this.dataItems.length) {\n endIndex++;\n }\n for (let i = startIndex; i < endIndex; i++) {\n let dataItem = this.dataItems[i];\n if (!dataItem.bullets) {\n this._makeBullets(dataItem);\n }\n }\n }\n }\n /**\r\n * @ignore\r\n */\n _adjustStartIndex(index) {\n return index;\n }\n _calculateAggregates(startIndex, endIndex) {\n let fields = this._valueFields;\n if (!fields) {\n throw new Error(\"No value fields are set for the series.\");\n }\n const sum = {};\n const absSum = {};\n const count = {};\n const low = {};\n const high = {};\n const open = {};\n const close = {};\n const average = {};\n const previous = {};\n $array.each(fields, key => {\n sum[key] = 0;\n absSum[key] = 0;\n count[key] = 0;\n });\n $array.each(fields, key => {\n let change = key + \"Change\";\n let changePercent = key + \"ChangePercent\";\n let changePrevious = key + \"ChangePrevious\";\n let changePreviousPercent = key + \"ChangePreviousPercent\";\n let changeSelection = key + \"ChangeSelection\";\n let changeSelectionPercent = key + \"ChangeSelectionPercent\";\n let openKey = \"valueY\";\n if (key == \"valueX\" || key == \"openValueX\" || key == \"lowValueX\" || key == \"highValueX\") {\n openKey = \"valueX\";\n }\n const baseValueSeries = this.getPrivate(\"baseValueSeries\");\n const adjustedStartIndex = this.getPrivate(\"adjustedStartIndex\", startIndex);\n for (let i = adjustedStartIndex; i < endIndex; i++) {\n const dataItem = this.dataItems[i];\n if (dataItem) {\n let value = dataItem.get(key);\n if (value != null) {\n count[key]++;\n sum[key] += value;\n absSum[key] += Math.abs(value);\n average[key] = sum[key] / count[key];\n if (low[key] > value || low[key] == null) {\n low[key] = value;\n }\n if (high[key] < value || high[key] == null) {\n high[key] = value;\n }\n close[key] = value;\n if (open[key] == null) {\n open[key] = value;\n previous[key] = value;\n if (baseValueSeries) {\n open[openKey] = baseValueSeries._getBase(openKey);\n }\n }\n if (startIndex === 0) {\n dataItem.setRaw(change, value - open[openKey]);\n dataItem.setRaw(changePercent, (value - open[openKey]) / open[openKey] * 100);\n }\n dataItem.setRaw(changePrevious, value - previous[openKey]);\n dataItem.setRaw(changePreviousPercent, (value - previous[openKey]) / previous[openKey] * 100);\n dataItem.setRaw(changeSelection, value - open[openKey]);\n dataItem.setRaw(changeSelectionPercent, (value - open[openKey]) / open[openKey] * 100);\n previous[key] = value;\n }\n }\n }\n if (endIndex < this.dataItems.length - 1) {\n const dataItem = this.dataItems[endIndex];\n if (dataItem) {\n let value = dataItem.get(key);\n dataItem.setRaw(changePrevious, value - previous[openKey]);\n dataItem.setRaw(changePreviousPercent, (value - previous[openKey]) / previous[openKey] * 100);\n dataItem.setRaw(changeSelection, value - open[openKey]);\n dataItem.setRaw(changeSelectionPercent, (value - open[openKey]) / open[openKey] * 100);\n }\n }\n if (startIndex > 0) {\n startIndex--;\n }\n delete previous[key];\n for (let i = startIndex; i < adjustedStartIndex; i++) {\n const dataItem = this.dataItems[i];\n if (dataItem) {\n let value = dataItem.get(key);\n if (previous[key] == null) {\n previous[key] = value;\n }\n if (value != null) {\n dataItem.setRaw(changePrevious, value - previous[openKey]);\n dataItem.setRaw(changePreviousPercent, (value - previous[openKey]) / previous[openKey] * 100);\n dataItem.setRaw(changeSelection, value - open[openKey]);\n dataItem.setRaw(changeSelectionPercent, (value - open[openKey]) / open[openKey] * 100);\n previous[key] = value;\n }\n }\n }\n });\n $array.each(fields, key => {\n this.setPrivate(key + \"AverageSelection\", average[key]);\n this.setPrivate(key + \"CountSelection\", count[key]);\n this.setPrivate(key + \"SumSelection\", sum[key]);\n this.setPrivate(key + \"AbsoluteSumSelection\", absSum[key]);\n this.setPrivate(key + \"LowSelection\", low[key]);\n this.setPrivate(key + \"HighSelection\", high[key]);\n this.setPrivate(key + \"OpenSelection\", open[key]);\n this.setPrivate(key + \"CloseSelection\", close[key]);\n });\n if (startIndex === 0 && endIndex === this.dataItems.length) {\n $array.each(fields, key => {\n this.setPrivate(key + \"Average\", average[key]);\n this.setPrivate(key + \"Count\", count[key]);\n this.setPrivate(key + \"Sum\", sum[key]);\n this.setPrivate(key + \"AbsoluteSum\", absSum[key]);\n this.setPrivate(key + \"Low\", low[key]);\n this.setPrivate(key + \"High\", high[key]);\n this.setPrivate(key + \"Open\", open[key]);\n this.setPrivate(key + \"Close\", close[key]);\n });\n }\n }\n _updateChildren() {\n super._updateChildren();\n this._psi = this.startIndex();\n this._pei = this.endIndex();\n if (this.isDirty(\"visible\")) {\n this.bulletsContainer.set(\"visible\", this.get(\"visible\"));\n }\n // Apply heat rules\n const rules = this.get(\"heatRules\");\n if (this._valuesDirty && rules && rules.length > 0) {\n $array.each(rules, rule => {\n const minValue = rule.minValue || this.getPrivate(rule.dataField + \"Low\") || 0;\n const maxValue = rule.maxValue || this.getPrivate(rule.dataField + \"High\") || 0;\n $array.each(rule.target._entities, target => {\n const value = target.dataItem.get(rule.dataField);\n if (!$type.isNumber(value)) {\n if (rule.neutral) {\n target.set(rule.key, rule.neutral);\n }\n const states = target.states;\n if (states) {\n const defaultState = states.lookup(\"default\");\n if (defaultState && rule.neutral) {\n defaultState.set(rule.key, rule.neutral);\n }\n }\n if (!rule.customFunction) {\n return;\n }\n }\n if (rule.customFunction) {\n rule.customFunction.call(this, target, minValue, maxValue, value);\n } else {\n let percent;\n if (rule.logarithmic) {\n percent = (Math.log(value) * Math.LOG10E - Math.log(minValue) * Math.LOG10E) / (Math.log(maxValue) * Math.LOG10E - Math.log(minValue) * Math.LOG10E);\n } else {\n percent = (value - minValue) / (maxValue - minValue);\n }\n if ($type.isNumber(value) && (!$type.isNumber(percent) || Math.abs(percent) == Infinity)) {\n percent = 0.5;\n }\n // fixes problems if all values are the same\n let propertyValue;\n if ($type.isNumber(rule.min)) {\n propertyValue = rule.min + (rule.max - rule.min) * percent;\n } else if (rule.min instanceof Color) {\n propertyValue = Color.interpolate(percent, rule.min, rule.max);\n } else if (rule.min instanceof Percent) {\n propertyValue = percentInterpolate(percent, rule.min, rule.max);\n }\n target.set(rule.key, propertyValue);\n const states = target.states;\n if (states) {\n const defaultState = states.lookup(\"default\");\n if (defaultState) {\n defaultState.set(rule.key, propertyValue);\n }\n }\n }\n });\n });\n }\n if (this.get(\"visible\")) {\n let count = this.dataItems.length;\n let startIndex = this.startIndex();\n let endIndex = this.endIndex();\n if (endIndex < count) {\n endIndex++;\n }\n if (startIndex > 0) {\n startIndex--;\n }\n for (let i = 0; i < startIndex; i++) {\n this._hideBullets(this.dataItems[i]);\n }\n for (let i = startIndex; i < endIndex; i++) {\n this._positionBullets(this.dataItems[i]);\n }\n for (let i = endIndex; i < count; i++) {\n this._hideBullets(this.dataItems[i]);\n }\n }\n }\n _positionBullets(dataItem) {\n if (dataItem.bullets) {\n $array.each(dataItem.bullets, bullet => {\n this._positionBullet(bullet);\n const sprite = bullet.get(\"sprite\");\n if (bullet.get(\"dynamic\")) {\n if (sprite) {\n sprite._markDirtyKey(\"fill\");\n sprite.markDirtySize();\n }\n if (sprite instanceof Container) {\n sprite.walkChildren(child => {\n child._markDirtyKey(\"fill\");\n child.markDirtySize();\n if (child instanceof Label) {\n child.text.markDirtyText();\n }\n });\n }\n }\n if (sprite instanceof Label && sprite.get(\"populateText\")) {\n sprite.text.markDirtyText();\n }\n });\n }\n }\n _hideBullets(dataItem) {\n if (dataItem.bullets) {\n $array.each(dataItem.bullets, bullet => {\n let sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite.setPrivate(\"visible\", false);\n }\n });\n }\n }\n _positionBullet(_bullet) {}\n _placeBulletsContainer(chart) {\n chart.bulletsContainer.children.moveValue(this.bulletsContainer);\n }\n _removeBulletsContainer() {\n const bulletsContainer = this.bulletsContainer;\n if (bulletsContainer.parent) {\n bulletsContainer.parent.children.removeValue(bulletsContainer);\n }\n }\n /**\r\n * @ignore\r\n */\n disposeDataItem(dataItem) {\n //super.disposeDataItem(dataItem); // does nothing\n const bullets = dataItem.bullets;\n if (bullets) {\n $array.each(bullets, bullet => {\n bullet.dispose();\n });\n }\n }\n _getItemReaderLabel() {\n return \"\";\n }\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n showDataItem(dataItem, duration) {\n const _super = Object.create(null, {\n showDataItem: {\n get: () => super.showDataItem\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\n const bullets = dataItem.bullets;\n if (bullets) {\n $array.each(bullets, bullet => {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n promises.push(sprite.show(duration));\n }\n });\n }\n yield Promise.all(promises);\n });\n }\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n hideDataItem(dataItem, duration) {\n const _super = Object.create(null, {\n hideDataItem: {\n get: () => super.hideDataItem\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\n const bullets = dataItem.bullets;\n if (bullets) {\n $array.each(bullets, bullet => {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n promises.push(sprite.hide(duration));\n }\n });\n }\n yield Promise.all(promises);\n });\n }\n _sequencedShowHide(show, duration) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.get(\"sequencedInterpolation\")) {\n if (!$type.isNumber(duration)) {\n duration = this.get(\"interpolationDuration\", 0);\n }\n if (duration > 0) {\n const startIndex = this.startIndex();\n const endIndex = this.endIndex();\n yield Promise.all($array.map(this.dataItems, (dataItem, i) => __awaiter(this, void 0, void 0, function* () {\n let realDuration = duration || 0;\n if (i < startIndex - 10 || i > endIndex + 10) {\n realDuration = 0;\n }\n //let delay = this.get(\"sequencedDelay\", 0) * i + realDuration * (i - startIndex) / (endIndex - startIndex);\n let delay = this.get(\"sequencedDelay\", 0) + realDuration / (endIndex - startIndex);\n yield $time.sleep(delay * (i - startIndex));\n if (show) {\n yield this.showDataItem(dataItem, realDuration);\n } else {\n yield this.hideDataItem(dataItem, realDuration);\n }\n })));\n } else {\n yield Promise.all($array.map(this.dataItems, dataItem => {\n if (show) {\n return this.showDataItem(dataItem, 0);\n } else {\n return this.hideDataItem(dataItem, 0);\n }\n }));\n }\n }\n });\n }\n /**\r\n * @ignore\r\n */\n updateLegendValue(dataItem) {\n if (dataItem) {\n const legendDataItem = dataItem.get(\"legendDataItem\");\n if (legendDataItem) {\n const valueLabel = legendDataItem.get(\"valueLabel\");\n if (valueLabel) {\n const text = valueLabel.text;\n let txt = \"\";\n valueLabel._setDataItem(dataItem);\n txt = this.get(\"legendValueText\", text.get(\"text\", \"\"));\n valueLabel.set(\"text\", txt);\n text.markDirtyText();\n }\n const label = legendDataItem.get(\"label\");\n if (label) {\n const text = label.text;\n let txt = \"\";\n label._setDataItem(dataItem);\n txt = this.get(\"legendLabelText\", text.get(\"text\", \"\"));\n label.set(\"text\", txt);\n text.markDirtyText();\n }\n }\n }\n }\n /**\r\n * @ignore\r\n */\n updateLegendMarker(_dataItem) {}\n _onHide() {\n super._onHide();\n const tooltip = this.getTooltip();\n if (tooltip) {\n tooltip.hide();\n }\n }\n /**\r\n * @ignore\r\n */\n hoverDataItem(_dataItem) {}\n /**\r\n * @ignore\r\n */\n unhoverDataItem(_dataItem) {}\n /**\r\n * @ignore\r\n */\n _getBase(key) {\n const dataItem = this.dataItems[this.startIndex()];\n if (dataItem) {\n return dataItem.get(key);\n }\n return 0;\n }\n}\nObject.defineProperty(Series, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"Series\"\n});\nObject.defineProperty(Series, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Component.classNames.concat([Series.className])\n});\n//# sourceMappingURL=Series.js.map","import { __awaiter } from \"tslib\";\nimport { DataItem } from \"../../../core/render/Component\";\nimport { Series } from \"../../../core/render/Series\";\nimport { List } from \"../../../core/util/List\";\nimport { Container } from \"../../../core/render/Container\";\nimport { Graphics } from \"../../../core/render/Graphics\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $object from \"../../../core/util/Object\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $utils from \"../../../core/util/Utils\";\n/**\r\n * @ignore\r\n */\nfunction min(left, right) {\n if (left == null) {\n return right;\n } else if (right == null) {\n return left;\n } else if (right < left) {\n return right;\n } else {\n return left;\n }\n}\n/**\r\n * @ignore\r\n */\nfunction max(left, right) {\n if (left == null) {\n return right;\n } else if (right == null) {\n return left;\n } else if (right > left) {\n return right;\n } else {\n return left;\n }\n}\n/**\r\n * A base class for all XY chart series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/} for more info\r\n */\nexport class XYSeries extends Series {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_xField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_yField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_xOpenField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_yOpenField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_xLowField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_xHighField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_yLowField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_yHighField\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_axesDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_stackDirty\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_selectionProcessed\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_dataSets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_mainContainerMask\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_x\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_y\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_bullets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n /**\r\n * A [[Container]] that us used to put series' elements in.\r\n *\r\n * @default Container.new()\r\n */\n Object.defineProperty(this, \"mainContainer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.children.push(Container.new(this._root, {}))\n });\n /**\r\n * A list of axis ranges that affect the series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n */\n Object.defineProperty(this, \"axisRanges\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new List()\n });\n Object.defineProperty(this, \"_skipped\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"_couldStackTo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"_reallyStackedTo\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_stackedSeries\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n Object.defineProperty(this, \"_aLocationX0\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_aLocationX1\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_aLocationY0\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_aLocationY1\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 1\n });\n Object.defineProperty(this, \"_showBullets\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: true\n });\n Object.defineProperty(this, \"valueXFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"valueX\", \"openValueX\", \"lowValueX\", \"highValueX\"]\n });\n Object.defineProperty(this, \"valueYFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [\"valueY\", \"openValueY\", \"lowValueY\", \"highValueY\"]\n });\n Object.defineProperty(this, \"_valueXFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_valueYFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // used for full min/max\n Object.defineProperty(this, \"_valueXShowFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_valueYShowFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n // used for selection (uses working)\n Object.defineProperty(this, \"__valueXShowFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"__valueYShowFields\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_emptyDataItem\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new DataItem(this, undefined, {})\n });\n Object.defineProperty(this, \"_dataSetId\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipFieldX\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_tooltipFieldY\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_posXDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_posYDp\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n _afterNew() {\n this.fields.push(\"categoryX\", \"categoryY\", \"openCategoryX\", \"openCategoryY\");\n this.valueFields.push(\"valueX\", \"valueY\", \"openValueX\", \"openValueY\", \"lowValueX\", \"lowValueY\", \"highValueX\", \"highValueY\");\n this._setRawDefault(\"vcx\", 1);\n this._setRawDefault(\"vcy\", 1);\n // this can't go to themes, as data might be parsed before theme\n this._setRawDefault(\"valueXShow\", \"valueXWorking\");\n this._setRawDefault(\"valueYShow\", \"valueYWorking\");\n this._setRawDefault(\"openValueXShow\", \"openValueXWorking\");\n this._setRawDefault(\"openValueYShow\", \"openValueYWorking\");\n this._setRawDefault(\"lowValueXShow\", \"lowValueXWorking\");\n this._setRawDefault(\"lowValueYShow\", \"lowValueYWorking\");\n this._setRawDefault(\"highValueXShow\", \"highValueXWorking\");\n this._setRawDefault(\"highValueYShow\", \"highValueYWorking\");\n this._setRawDefault(\"lowValueXGrouped\", \"low\");\n this._setRawDefault(\"lowValueYGrouped\", \"low\");\n this._setRawDefault(\"highValueXGrouped\", \"high\");\n this._setRawDefault(\"highValueYGrouped\", \"high\");\n super._afterNew();\n this.set(\"maskContent\", true);\n this._disposers.push(this.axisRanges.events.onAll(change => {\n if (change.type === \"clear\") {\n $array.each(change.oldValues, axisRange => {\n this._removeAxisRange(axisRange);\n });\n } else if (change.type === \"push\") {\n this._processAxisRange(change.newValue);\n } else if (change.type === \"setIndex\") {\n this._processAxisRange(change.newValue);\n } else if (change.type === \"insertIndex\") {\n this._processAxisRange(change.newValue);\n } else if (change.type === \"removeIndex\") {\n this._removeAxisRange(change.oldValue);\n } else if (change.type === \"moveIndex\") {\n this._processAxisRange(change.value);\n } else {\n throw new Error(\"Unknown IStreamEvent type\");\n }\n }));\n this.states.create(\"hidden\", {\n opacity: 1,\n visible: false\n });\n this.onPrivate(\"startIndex\", () => {\n this.root.events.once(\"frameended\", () => {\n this.updateLegendValue();\n });\n });\n this.onPrivate(\"endIndex\", () => {\n this.root.events.once(\"frameended\", () => {\n this.updateLegendValue();\n });\n });\n this._makeFieldNames();\n }\n _processAxisRange(axisRange) {\n const container = Container.new(this._root, {});\n axisRange.container = container;\n this.children.push(container);\n axisRange.series = this;\n const axisDataItem = axisRange.axisDataItem;\n axisDataItem.setRaw(\"isRange\", true);\n const axis = axisDataItem.component;\n if (axis) {\n axis._processAxisRange(axisDataItem, [\"range\", \"series\"]);\n const bullet = axisDataItem.get(\"bullet\");\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite.setPrivate(\"visible\", false);\n }\n }\n const axisFill = axisDataItem.get(\"axisFill\");\n if (axisFill) {\n container.set(\"mask\", axisFill);\n }\n axis._seriesAxisRanges.push(axisDataItem);\n }\n }\n _removeAxisRange(axisRange) {\n const axisDataItem = axisRange.axisDataItem;\n const axis = axisDataItem.component;\n axis.disposeDataItem(axisDataItem);\n $array.remove(axis._seriesAxisRanges, axisDataItem);\n const container = axisRange.container;\n if (container) {\n container.dispose();\n }\n }\n _updateFields() {\n super._updateFields();\n this._valueXFields = [];\n this._valueYFields = [];\n this._valueXShowFields = [];\n this._valueYShowFields = [];\n this.__valueXShowFields = [];\n this.__valueYShowFields = [];\n if (this.valueXFields) {\n $array.each(this.valueXFields, key => {\n const field = this.get(key + \"Field\");\n if (field) {\n this._valueXFields.push(key);\n let field = this.get(key + \"Show\");\n this.__valueXShowFields.push(field);\n if (field.indexOf(\"Working\") != -1) {\n this._valueXShowFields.push(field.split(\"Working\")[0]);\n } else {\n this._valueXShowFields.push(field);\n }\n }\n });\n }\n if (this.valueYFields) {\n $array.each(this.valueYFields, key => {\n const field = this.get(key + \"Field\");\n if (field) {\n this._valueYFields.push(key);\n let field = this.get(key + \"Show\");\n this.__valueYShowFields.push(field);\n if (field.indexOf(\"Working\") != -1) {\n this._valueYShowFields.push(field.split(\"Working\")[0]);\n } else {\n this._valueYShowFields.push(field);\n }\n }\n });\n }\n }\n _dispose() {\n super._dispose();\n this._bullets = {};\n const chart = this.chart;\n if (chart) {\n chart.series.removeValue(this);\n }\n $array.removeFirst(this.get(\"xAxis\").series, this);\n $array.removeFirst(this.get(\"yAxis\").series, this);\n }\n // TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n _min(key, value) {\n let newValue = min(this.getPrivate(key), value);\n this.setPrivate(key, newValue);\n }\n // TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n _max(key, value) {\n let newValue = max(this.getPrivate(key), value);\n this.setPrivate(key, newValue);\n }\n _shouldMakeBullet(dataItem) {\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const baseAxis = this.get(\"baseAxis\");\n if (!xAxis.inited || !yAxis.inited) {\n return false;\n }\n const minBulletDistance = this.get(\"minBulletDistance\", 0);\n if (minBulletDistance > 0) {\n let startIndex = this.startIndex();\n let endIndex = this.endIndex();\n let count = endIndex - startIndex;\n if (xAxis == baseAxis) {\n if (xAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\n return false;\n }\n } else if (yAxis == baseAxis) {\n if (yAxis.get(\"renderer\").axisLength() / count < minBulletDistance / 5) {\n return false;\n }\n }\n }\n if (dataItem.get(this._xField) != null && dataItem.get(this._yField) != null) {\n return true;\n }\n return false;\n }\n _makeFieldNames() {\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const xName = xAxis.getPrivate(\"name\");\n const xCapName = $utils.capitalizeFirst(xName);\n const yName = yAxis.getPrivate(\"name\");\n const yCapName = $utils.capitalizeFirst(yName);\n const xLetter = xAxis.get(\"renderer\").getPrivate(\"letter\");\n const yLetter = yAxis.get(\"renderer\").getPrivate(\"letter\");\n const open = \"open\";\n const low = \"low\";\n const high = \"high\";\n const show = \"Show\";\n if (xAxis.className === \"ValueAxis\") {\n this._xField = this.get(xName + xLetter + show);\n this._xOpenField = this.get(open + xCapName + xLetter + show);\n this._xLowField = this.get(low + xCapName + xLetter + show);\n this._xHighField = this.get(high + xCapName + xLetter + show);\n } else {\n this._xField = xName + xLetter;\n this._xOpenField = open + xCapName + xLetter;\n this._xLowField = low + xCapName + xLetter;\n this._xHighField = high + xCapName + xLetter;\n }\n if (yAxis.className === \"ValueAxis\") {\n this._yField = this.get(yName + yLetter + show);\n this._yOpenField = this.get(open + yCapName + yLetter + show);\n this._yLowField = this.get(low + yCapName + yLetter + show);\n this._yHighField = this.get(high + yCapName + yLetter + show);\n } else {\n this._yField = yName + yLetter;\n this._yOpenField = open + yCapName + yLetter;\n this._yLowField = low + yCapName + yLetter;\n this._yHighField = high + yCapName + yLetter;\n }\n }\n _fixVC() {\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const baseAxis = this.get(\"baseAxis\");\n const hiddenState = this.states.lookup(\"hidden\");\n const sequencedInterpolation = this.get(\"sequencedInterpolation\");\n if (hiddenState) {\n let value = 0;\n if (sequencedInterpolation) {\n value = 0.999999999999; // makes animate, good for stacked\n }\n if (xAxis === baseAxis) {\n hiddenState.set(\"vcy\", value);\n } else if (yAxis === baseAxis) {\n hiddenState.set(\"vcx\", value);\n } else {\n hiddenState.set(\"vcy\", value);\n hiddenState.set(\"vcx\", value);\n }\n }\n }\n _handleMaskBullets() {\n if (this.isDirty(\"maskBullets\")) {\n this.bulletsContainer.set(\"maskContent\", this.get(\"maskBullets\"));\n }\n }\n _fixPosition() {\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n this.set(\"x\", xAxis.x() - $utils.relativeToValue(xAxis.get(\"centerX\", 0), xAxis.width()) - xAxis.parent.get(\"paddingLeft\", 0));\n this.set(\"y\", yAxis.y() - $utils.relativeToValue(yAxis.get(\"centerY\", 0), yAxis.height()) - yAxis.parent.get(\"paddingTop\", 0));\n this.bulletsContainer.set(\"y\", this.y());\n this.bulletsContainer.set(\"x\", this.x());\n }\n _prepareChildren() {\n super._prepareChildren();\n this._bullets = {};\n if (this.isDirty(\"valueYShow\") || this.isDirty(\"valueXShow\") || this.isDirty(\"openValueYShow\") || this.isDirty(\"openValueXShow\") || this.isDirty(\"lowValueYShow\") || this.isDirty(\"lowValueXShow\") || this.isDirty(\"highValueYShow\") || this.isDirty(\"highValueXShow\")) {\n this._updateFields();\n this._makeFieldNames();\n this._valuesDirty = true;\n }\n if (this.isDirty(\"xAxis\") || this.isDirty(\"yAxis\")) {\n this._valuesDirty = true;\n }\n this.set(\"width\", this.get(\"xAxis\").width());\n this.set(\"height\", this.get(\"yAxis\").height());\n this._handleMaskBullets();\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const baseAxis = this.get(\"baseAxis\");\n const tooltipPositionX = this.get(\"tooltipPositionX\");\n let tooltipFieldX;\n switch (tooltipPositionX) {\n case \"open\":\n tooltipFieldX = this._xOpenField;\n break;\n case \"low\":\n tooltipFieldX = this._xLowField;\n break;\n case \"high\":\n tooltipFieldX = this._xHighField;\n break;\n default:\n tooltipFieldX = this._xField;\n }\n this._tooltipFieldX = tooltipFieldX;\n const tooltipPositionY = this.get(\"tooltipPositionY\");\n let tooltipFieldY;\n switch (tooltipPositionY) {\n case \"open\":\n tooltipFieldY = this._yOpenField;\n break;\n case \"low\":\n tooltipFieldY = this._yLowField;\n break;\n case \"high\":\n tooltipFieldY = this._yHighField;\n break;\n default:\n tooltipFieldY = this._yField;\n }\n this._tooltipFieldY = tooltipFieldY;\n if (this.isDirty(\"baseAxis\")) {\n this._fixVC();\n }\n this._fixPosition();\n const stacked = this.get(\"stacked\");\n if (this.isDirty(\"stacked\")) {\n if (stacked) {\n if (this._valuesDirty && !this._dataProcessed) {} else {\n this._stack();\n }\n } else {\n this._unstack();\n }\n }\n if (this._valuesDirty && !this._dataProcessed) {\n this._dataProcessed = true;\n if (stacked) {\n this._stack();\n }\n $array.each(this.dataItems, dataItem => {\n $array.each(this._valueXShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n if (stacked) {\n value += this.getStackedXValue(dataItem, key);\n }\n this._min(\"minX\", value);\n this._max(\"maxX\", value);\n }\n });\n $array.each(this._valueYShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n if (stacked) {\n value += this.getStackedYValue(dataItem, key);\n }\n this._min(\"minY\", value);\n this._max(\"maxY\", value);\n }\n });\n xAxis.processSeriesDataItem(dataItem, this._valueXFields);\n yAxis.processSeriesDataItem(dataItem, this._valueYFields);\n });\n xAxis._seriesValuesDirty = true;\n yAxis._seriesValuesDirty = true;\n if (!this.get(\"ignoreMinMax\")) {\n if (this.isPrivateDirty(\"minX\") || this.isPrivateDirty(\"maxX\")) {\n xAxis.markDirtyExtremes();\n }\n if (this.isPrivateDirty(\"minY\") || this.isPrivateDirty(\"maxY\")) {\n yAxis.markDirtyExtremes();\n }\n }\n this._markStakedDirtyStack();\n //this.updateLegendMarker(undefined); // causes legend marker to change color instantly when on\n if (!this.get(\"tooltipDataItem\")) {\n this.updateLegendValue(undefined);\n }\n }\n if (this.isDirty(\"vcx\") || this.isDirty(\"vcy\")) {\n this._markStakedDirtyStack();\n }\n if (!this._dataGrouped) {\n xAxis._groupSeriesData(this);\n yAxis._groupSeriesData(this);\n this._dataGrouped = true;\n }\n if (this._valuesDirty || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"adjustedStartIndex\") || this.isPrivateDirty(\"endIndex\") || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._stackDirty || this._sizeDirty) {\n let startIndex = this.startIndex();\n let endIndex = this.endIndex();\n let minBulletDistance = this.get(\"minBulletDistance\", 0);\n if (minBulletDistance > 0 && baseAxis) {\n if (baseAxis.get(\"renderer\").axisLength() / (endIndex - startIndex) > minBulletDistance) {\n this._showBullets = true;\n } else {\n this._showBullets = false;\n }\n }\n if ((this._psi != startIndex || this._pei != endIndex || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this.isPrivateDirty(\"adjustedStartIndex\") || this._stackDirty || this._valuesDirty) && !this._selectionProcessed) {\n this._selectionProcessed = true;\n const vcx = this.get(\"vcx\", 1);\n const vcy = this.get(\"vcy\", 1);\n const stacked = this.get(\"stacked\", false);\n const outOfSelection = this.getPrivate(\"outOfSelection\");\n if (baseAxis === xAxis || !baseAxis) {\n yAxis._calculateTotals();\n this.setPrivateRaw(\"selectionMinY\", undefined);\n this.setPrivateRaw(\"selectionMaxY\", undefined);\n if (!outOfSelection) {\n for (let i = startIndex; i < endIndex; i++) {\n this.processYSelectionDataItem(this.dataItems[i], vcy, stacked);\n }\n } else {\n yAxis.markDirtySelectionExtremes();\n }\n }\n if (baseAxis === yAxis || !baseAxis) {\n xAxis._calculateTotals();\n this.setPrivateRaw(\"selectionMinX\", undefined);\n this.setPrivateRaw(\"selectionMaxX\", undefined);\n if (!outOfSelection) {\n for (let i = startIndex; i < endIndex; i++) {\n this.processXSelectionDataItem(this.dataItems[i], vcx, stacked);\n }\n } else {\n yAxis.markDirtySelectionExtremes();\n }\n }\n if (baseAxis === xAxis || !baseAxis) {\n if (this.get(\"valueYShow\") !== \"valueYWorking\") {\n const selectionMinY = this.getPrivate(\"selectionMinY\");\n if (selectionMinY != null) {\n this.setPrivateRaw(\"minY\", selectionMinY);\n yAxis.markDirtyExtremes();\n }\n const selectionMaxY = this.getPrivate(\"selectionMaxY\");\n if (selectionMaxY != null) {\n this.setPrivateRaw(\"maxY\", selectionMaxY);\n yAxis.markDirtyExtremes();\n }\n }\n }\n if (baseAxis === yAxis || !baseAxis) {\n if (this.get(\"valueXShow\") !== \"valueXWorking\") {\n const selectionMinX = this.getPrivate(\"selectionMinX\");\n if (selectionMinX != null) {\n this.setPrivateRaw(\"minX\", selectionMinX);\n yAxis.markDirtyExtremes();\n }\n const selectionMaxX = this.getPrivate(\"selectionMaxX\");\n if (selectionMaxX != null) {\n this.setPrivateRaw(\"maxX\", selectionMaxX);\n xAxis.markDirtyExtremes();\n }\n }\n }\n if (this.isPrivateDirty(\"selectionMinX\") || this.isPrivateDirty(\"selectionMaxX\")) {\n xAxis.markDirtySelectionExtremes();\n }\n if (this.isPrivateDirty(\"selectionMinY\") || this.isPrivateDirty(\"selectionMaxY\")) {\n yAxis.markDirtySelectionExtremes();\n }\n // this.updateLegendValue(undefined); flickers while panning\n }\n }\n }\n _makeRangeMask() {\n if (this.axisRanges.length > 0) {\n let mainContainerMask = this._mainContainerMask;\n if (mainContainerMask == null) {\n mainContainerMask = this.children.push(Graphics.new(this._root, {}));\n this._mainContainerMask = mainContainerMask;\n mainContainerMask.set(\"draw\", (display, target) => {\n const parent = this.parent;\n if (parent) {\n const w = this._root.container.width();\n const h = this._root.container.height();\n display.moveTo(-w, -h);\n display.lineTo(-w, h * 2);\n display.lineTo(w * 2, h * 2);\n display.lineTo(w * 2, -h);\n display.lineTo(-w, -h);\n this.axisRanges.each(axisRange => {\n const fill = axisRange.axisDataItem.get(\"axisFill\");\n if (parent) {\n if (fill) {\n let draw = fill.get(\"draw\");\n if (draw) {\n draw(display, target);\n }\n }\n }\n });\n }\n this.mainContainer._display.mask = mainContainerMask._display;\n });\n }\n mainContainerMask.markDirty();\n mainContainerMask._markDirtyKey(\"fill\");\n } else {\n this.mainContainer._display.mask = null;\n }\n }\n _updateChildren() {\n super._updateChildren();\n // save for performance\n this._x = this.x();\n this._y = this.y();\n this._makeRangeMask();\n }\n _stack() {\n const chart = this.chart;\n if (chart) {\n const seriesIndex = chart.series.indexOf(this);\n this._couldStackTo = [];\n if (seriesIndex > 0) {\n let series;\n for (let i = seriesIndex - 1; i >= 0; i--) {\n series = chart.series.getIndex(i);\n if (series.get(\"xAxis\") === this.get(\"xAxis\") && series.get(\"yAxis\") === this.get(\"yAxis\") && series.className === this.className) {\n this._couldStackTo.push(series);\n if (!series.get(\"stacked\")) {\n break;\n }\n }\n }\n }\n this._stackDataItems();\n }\n }\n _unstack() {\n $object.each(this._reallyStackedTo, (_key, value) => {\n delete value._stackedSeries[this.uid];\n });\n this._reallyStackedTo = {};\n $array.each(this.dataItems, dataItem => {\n dataItem.setRaw(\"stackToItemY\", undefined);\n dataItem.setRaw(\"stackToItemX\", undefined);\n });\n }\n _stackDataItems() {\n // this works only with the same number of data @todo: search by date/category?\n const baseAxis = this.get(\"baseAxis\");\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n let field;\n let stackToItemKey;\n if (baseAxis === xAxis) {\n field = \"valueY\";\n stackToItemKey = \"stackToItemY\";\n } else if (baseAxis === yAxis) {\n field = \"valueX\";\n stackToItemKey = \"stackToItemX\";\n }\n let len = this._couldStackTo.length;\n let index = 0;\n const stackToNegative = this.get(\"stackToNegative\");\n this._reallyStackedTo = {};\n $array.each(this.dataItems, dataItem => {\n for (let s = 0; s < len; s++) {\n let stackToSeries = this._couldStackTo[s];\n let stackToItem = stackToSeries.dataItems[index];\n let value = dataItem.get(field);\n if (stackToItem) {\n let stackValue = stackToItem.get(field);\n if (stackToNegative) {\n if ($type.isNumber(value)) {\n if ($type.isNumber(stackValue)) {\n if (value >= 0 && stackValue >= 0) {\n dataItem.setRaw(stackToItemKey, stackToItem);\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n stackToSeries._stackedSeries[this.uid] = this;\n break;\n }\n if (value < 0 && stackValue < 0) {\n dataItem.setRaw(stackToItemKey, stackToItem);\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n stackToSeries._stackedSeries[this.uid] = this;\n break;\n }\n }\n } else {\n break;\n }\n } else {\n if ($type.isNumber(value) && $type.isNumber(stackValue)) {\n dataItem.setRaw(stackToItemKey, stackToItem);\n this._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n stackToSeries._stackedSeries[this.uid] = this;\n break;\n }\n }\n }\n }\n index++;\n });\n }\n processXSelectionDataItem(dataItem, vcx, stacked) {\n $array.each(this.__valueXShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n if (stacked) {\n value += this.getStackedXValueWorking(dataItem, key);\n }\n this._min(\"selectionMinX\", value);\n this._max(\"selectionMaxX\", value * vcx);\n }\n });\n }\n processYSelectionDataItem(dataItem, vcy, stacked) {\n $array.each(this.__valueYShowFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n if (stacked) {\n value += this.getStackedYValueWorking(dataItem, key);\n }\n this._min(\"selectionMinY\", value);\n this._max(\"selectionMaxY\", value * vcy);\n }\n });\n }\n /**\r\n * @ignore\r\n */\n getStackedYValueWorking(dataItem, key) {\n const stackToItem = dataItem.get(\"stackToItemY\");\n if (stackToItem) {\n const stackedToSeries = stackToItem.component;\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcy\", 1) + this.getStackedYValueWorking(stackToItem, key);\n }\n return 0;\n }\n /**\r\n * @ignore\r\n */\n getStackedXValueWorking(dataItem, key) {\n const stackToItem = dataItem.get(\"stackToItemX\");\n if (stackToItem) {\n const stackedToSeries = stackToItem.component;\n return stackToItem.get(key, 0) * stackedToSeries.get(\"vcx\", 1) + this.getStackedXValueWorking(stackToItem, key);\n }\n return 0;\n }\n /**\r\n * @ignore\r\n */\n getStackedYValue(dataItem, key) {\n const stackToItem = dataItem.get(\"stackToItemY\");\n if (stackToItem) {\n return stackToItem.get(key, 0) + this.getStackedYValue(stackToItem, key);\n }\n return 0;\n }\n /**\r\n * @ignore\r\n */\n getStackedXValue(dataItem, key) {\n const stackToItem = dataItem.get(\"stackToItemX\");\n if (stackToItem) {\n return stackToItem.get(key, 0) + this.getStackedXValue(stackToItem, key);\n }\n return 0;\n }\n /**\r\n * @ignore\r\n */\n createLegendMarker(_dataItem) {\n this.updateLegendMarker();\n }\n _markDirtyAxes() {\n this._axesDirty = true;\n this.markDirty();\n }\n _markDataSetDirty() {\n this._afterDataChange();\n this._valuesDirty = true;\n this._dataProcessed = false;\n this._aggregatesCalculated = false;\n this.markDirty();\n }\n _clearDirty() {\n super._clearDirty();\n this._axesDirty = false;\n this._selectionProcessed = false;\n this._stackDirty = false;\n this._dataProcessed = false;\n }\n _positionBullet(bullet) {\n let sprite = bullet.get(\"sprite\");\n if (sprite) {\n let dataItem = sprite.dataItem;\n let locationX = bullet.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\n let locationY = bullet.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\n let xAxis = this.get(\"xAxis\");\n let yAxis = this.get(\"yAxis\");\n let positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1));\n let positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1));\n let point = this.getPoint(positionX, positionY);\n let left = dataItem.get(\"left\", point.x);\n let right = dataItem.get(\"right\", point.x);\n let top = dataItem.get(\"top\", point.y);\n let bottom = dataItem.get(\"bottom\", point.y);\n let x = 0;\n let y = 0;\n let w = right - left;\n let h = bottom - top;\n if (this._shouldShowBullet(positionX, positionY)) {\n sprite.setPrivate(\"visible\", !bullet.getPrivate(\"hidden\"));\n let field = bullet.get(\"field\");\n const baseAxis = this.get(\"baseAxis\");\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n if (field != undefined) {\n let realField;\n if (baseAxis == xAxis) {\n if (field == \"value\") {\n realField = this._yField;\n } else if (field == \"open\") {\n realField = this._yOpenField;\n } else if (field == \"high\") {\n realField = this._yHighField;\n } else if (field == \"low\") {\n realField = this._yLowField;\n }\n if (realField) {\n positionY = yAxis.getDataItemPositionY(dataItem, realField, 0, this.get(\"vcy\", 1));\n point = yAxis.get(\"renderer\").positionToPoint(positionY);\n y = point.y;\n x = left + w * locationX;\n }\n } else {\n if (field == \"value\") {\n realField = this._xField;\n } else if (field == \"open\") {\n realField = this._xOpenField;\n } else if (field == \"high\") {\n realField = this._xHighField;\n } else if (field == \"low\") {\n realField = this._xLowField;\n }\n if (realField) {\n positionX = xAxis.getDataItemPositionX(dataItem, realField, 0, this.get(\"vcx\", 1));\n point = xAxis.get(\"renderer\").positionToPoint(positionX);\n x = point.x;\n y = bottom - h * locationY;\n }\n }\n } else {\n x = left + w * locationX;\n y = bottom - h * locationY;\n }\n const stacked = bullet.get(\"stacked\");\n if (stacked) {\n const chart = this.chart;\n if (baseAxis == xAxis) {\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\n if (previousBullet) {\n let previousBounds = previousBullet.bounds();\n let bounds = sprite.localBounds();\n let yo = y;\n y = previousBounds.top;\n if (stacked == \"down\") {\n y = previousBounds.bottom - bounds.top;\n } else if (stacked == \"auto\") {\n if (chart) {\n if (yo < chart.plotContainer.height() / 2) {\n y = previousBounds.bottom - bounds.top;\n } else {\n y += bounds.bottom;\n }\n }\n } else {\n y += bounds.bottom;\n }\n }\n this._bullets[positionX + \"_\" + positionY] = sprite;\n } else {\n let previousBullet = this._bullets[positionX + \"_\" + positionY];\n if (previousBullet) {\n let previousBounds = previousBullet.bounds();\n let bounds = sprite.localBounds();\n let xo = x;\n x = previousBounds.right;\n if (stacked == \"down\") {\n x = previousBounds.left - bounds.right;\n } else if (stacked == \"auto\") {\n if (chart) {\n if (xo < chart.plotContainer.width() / 2) {\n x = previousBounds.left - bounds.right;\n } else {\n x -= bounds.left;\n }\n }\n } else {\n x -= bounds.left;\n }\n }\n this._bullets[positionX + \"_\" + positionY] = sprite;\n }\n }\n if (sprite.isType(\"Label\")) {\n sprite.setPrivate(\"maxWidth\", Math.abs(w));\n sprite.setPrivate(\"maxHeight\", Math.abs(h));\n }\n sprite.setAll({\n x,\n y\n });\n } else {\n sprite.setPrivate(\"visible\", false);\n }\n }\n }\n _shouldShowBullet(_positionX, _positionY) {\n return this._showBullets;\n }\n /**\r\n * @ignore\r\n */\n setDataSet(id) {\n if (this._dataSets[id]) {\n this._handleDataSetChange();\n this._dataItems = this._dataSets[id];\n this._markDataSetDirty();\n this._dataSetId = id;\n const type = \"datasetchanged\";\n if (this.events.isEnabled(type)) {\n this.events.dispatch(type, {\n type: type,\n target: this,\n id: id\n });\n }\n }\n }\n /**\r\n * @ignore\r\n */\n resetGrouping() {\n $object.each(this._dataSets, (_key, dataSet) => {\n if (dataSet != this._mainDataItems) {\n $array.each(dataSet, dataItem => {\n this.disposeDataItem(dataItem);\n });\n }\n });\n this._dataSets = {};\n this._dataItems = this.mainDataItems;\n }\n _handleDataSetChange() {\n $array.each(this._dataItems, dataItem => {\n let bullets = dataItem.bullets;\n if (bullets) {\n $array.each(bullets, bullet => {\n if (bullet) {\n let sprite = bullet.get(\"sprite\");\n if (sprite) {\n sprite.setPrivate(\"visible\", false);\n }\n }\n });\n }\n });\n this._selectionProcessed = false; // for totals to be calculated\n }\n /**\r\n * Shows hidden series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\n show(duration) {\n const _super = Object.create(null, {\n show: {\n get: () => super.show\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._fixVC();\n let promises = [];\n promises.push(_super.show.call(this, duration).then(() => {\n this._isShowing = false;\n let xAxis = this.get(\"xAxis\");\n let yAxis = this.get(\"yAxis\");\n let baseAxis = this.get(\"baseAxis\");\n if (yAxis !== baseAxis) {\n yAxis.markDirtySelectionExtremes();\n }\n if (xAxis !== baseAxis) {\n xAxis.markDirtySelectionExtremes();\n }\n }));\n promises.push(this.bulletsContainer.show(duration));\n promises.push(this._sequencedShowHide(true, duration));\n yield Promise.all(promises);\n });\n }\n /**\r\n * Hides series.\r\n *\r\n * @param duration Duration of animation in milliseconds\r\n * @return Animation promise\r\n */\n hide(duration) {\n const _super = Object.create(null, {\n hide: {\n get: () => super.hide\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n this._fixVC();\n let promises = [];\n promises.push(_super.hide.call(this, duration).then(() => {\n this._isHiding = false;\n }));\n promises.push(this.bulletsContainer.hide(duration));\n promises.push(this._sequencedShowHide(false, duration));\n yield Promise.all(promises);\n });\n }\n /**\r\n * Shows series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n showDataItem(dataItem, duration) {\n const _super = Object.create(null, {\n showDataItem: {\n get: () => super.showDataItem\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const promises = [_super.showDataItem.call(this, dataItem, duration)];\n if (!$type.isNumber(duration)) {\n duration = this.get(\"stateAnimationDuration\", 0);\n }\n const easing = this.get(\"stateAnimationEasing\");\n $array.each(this._valueFields, key => {\n promises.push(dataItem.animate({\n key: key + \"Working\",\n to: dataItem.get(key),\n duration: duration,\n easing: easing\n }).waitForStop());\n });\n yield Promise.all(promises);\n });\n }\n /**\r\n * Hides series's data item.\r\n *\r\n * @param dataItem Data item\r\n * @param duration Animation duration in milliseconds\r\n * @return Promise\r\n */\n hideDataItem(dataItem, duration) {\n const _super = Object.create(null, {\n hideDataItem: {\n get: () => super.hideDataItem\n }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const promises = [_super.hideDataItem.call(this, dataItem, duration)];\n const hiddenState = this.states.create(\"hidden\", {});\n if (!$type.isNumber(duration)) {\n duration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\n }\n const easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const baseAxis = this.get(\"baseAxis\");\n const stacked = this.get(\"stacked\");\n if (baseAxis === xAxis || !baseAxis) {\n $array.each(this._valueYFields, key => {\n let min = yAxis.getPrivate(\"min\");\n let baseValue = yAxis.baseValue();\n if ($type.isNumber(min) && min > baseValue) {\n baseValue = min;\n }\n if (stacked) {\n baseValue = 0;\n }\n let value = dataItem.get(key);\n if (value != null) {\n promises.push(dataItem.animate({\n key: key + \"Working\",\n to: baseValue,\n duration: duration,\n easing: easing\n }).waitForStop());\n }\n });\n }\n if (baseAxis === yAxis || !baseAxis) {\n let min = xAxis.getPrivate(\"min\");\n let baseValue = xAxis.baseValue();\n if ($type.isNumber(min) && min > baseValue) {\n baseValue = min;\n }\n if (stacked) {\n baseValue = 0;\n }\n $array.each(this._valueXFields, key => {\n let value = dataItem.get(key);\n if (value != null) {\n promises.push(dataItem.animate({\n key: key + \"Working\",\n to: baseValue,\n duration: duration,\n easing: easing\n }).waitForStop());\n }\n });\n }\n yield Promise.all(promises);\n });\n }\n _markDirtyStack() {\n this._stackDirty = true;\n this.markDirty();\n this._markStakedDirtyStack();\n }\n _markStakedDirtyStack() {\n const stackedSeries = this._stackedSeries;\n if (stackedSeries) {\n $object.each(stackedSeries, (_key, value) => {\n if (!value._stackDirty) {\n value._markDirtyStack();\n }\n });\n }\n }\n _afterChanged() {\n super._afterChanged();\n if (this._skipped) {\n this._markDirtyAxes();\n this._skipped = false;\n }\n }\n /**\r\n * Shows a tooltip for specific data item.\r\n *\r\n * @param dataItem Data item\r\n */\n showDataItemTooltip(dataItem) {\n if (!this.getPrivate(\"doNotUpdateLegend\")) {\n this.updateLegendMarker(dataItem);\n this.updateLegendValue(dataItem);\n }\n const tooltip = this.get(\"tooltip\");\n if (tooltip) {\n if (!this.isHidden() && this.get(\"visible\")) {\n tooltip._setDataItem(dataItem);\n if (dataItem) {\n let locationX = this.get(\"locationX\", 0);\n let locationY = this.get(\"locationY\", 1);\n let itemLocationX = dataItem.get(\"locationX\", locationX);\n let itemLocationY = dataItem.get(\"locationY\", locationY);\n const xAxis = this.get(\"xAxis\");\n const yAxis = this.get(\"yAxis\");\n const vcx = this.get(\"vcx\", 1);\n const vcy = this.get(\"vcy\", 1);\n const xPos = xAxis.getDataItemPositionX(dataItem, this._tooltipFieldX, this._aLocationX0 + (this._aLocationX1 - this._aLocationX0) * itemLocationX, vcx);\n const yPos = yAxis.getDataItemPositionY(dataItem, this._tooltipFieldY, this._aLocationY0 + (this._aLocationY1 - this._aLocationY0) * itemLocationY, vcy);\n const point = this.getPoint(xPos, yPos);\n let show = true;\n $array.each(this._valueFields, field => {\n if (dataItem.get(field) == null) {\n show = false;\n }\n });\n if (show) {\n const chart = this.chart;\n if (chart && chart.inPlot(point)) {\n tooltip.label.text.markDirtyText();\n tooltip.set(\"tooltipTarget\", this._getTooltipTarget(dataItem));\n tooltip.set(\"pointTo\", this._display.toGlobal({\n x: point.x,\n y: point.y\n }));\n } else {\n tooltip._setDataItem(undefined);\n }\n } else {\n tooltip._setDataItem(undefined);\n }\n }\n } else {\n this.hideTooltip();\n }\n }\n }\n hideTooltip() {\n const tooltip = this.get(\"tooltip\");\n if (tooltip) {\n tooltip.set(\"tooltipTarget\", this);\n }\n return super.hideTooltip();\n }\n _getTooltipTarget(dataItem) {\n if (this.get(\"seriesTooltipTarget\") == \"bullet\") {\n const bullets = dataItem.bullets;\n if (bullets && bullets.length > 0) {\n const bullet = bullets[0];\n const sprite = bullet.get(\"sprite\");\n if (sprite) {\n return sprite;\n }\n }\n }\n return this;\n }\n /**\r\n * @ignore\r\n */\n updateLegendValue(dataItem) {\n const legendDataItem = this.get(\"legendDataItem\");\n if (legendDataItem) {\n const label = legendDataItem.get(\"label\");\n if (label) {\n let txt = \"\";\n if (dataItem) {\n label._setDataItem(dataItem);\n txt = this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\")));\n } else {\n label._setDataItem(this._emptyDataItem);\n txt = this.get(\"legendRangeLabelText\", this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\"))));\n }\n label.set(\"text\", txt);\n }\n const valueLabel = legendDataItem.get(\"valueLabel\");\n if (valueLabel) {\n let txt = \"\";\n if (dataItem) {\n valueLabel._setDataItem(dataItem);\n txt = this.get(\"legendValueText\", valueLabel.get(\"text\", \"\"));\n } else {\n valueLabel._setDataItem(this._emptyDataItem);\n txt = this.get(\"legendRangeValueText\", valueLabel.get(\"text\", \"\"));\n }\n valueLabel.set(\"text\", txt);\n }\n }\n }\n _getItemReaderLabel() {\n let text = \"X: {\" + this._xField;\n if (this.get(\"xAxis\").isType(\"DateAxis\")) {\n text += \".formatDate()\";\n }\n text += \"}; Y: {\" + this._yField;\n if (this.get(\"yAxis\").isType(\"DateAxis\")) {\n text += \".formatDate()\";\n }\n text += \"}\";\n return text;\n }\n /**\r\n * @ignore\r\n */\n getPoint(positionX, positionY) {\n let x = this.get(\"xAxis\").get(\"renderer\").positionToCoordinate(positionX);\n let y = this.get(\"yAxis\").get(\"renderer\").positionToCoordinate(positionY);\n // if coordinate is super big, canvas fails to draw line, capping to some big number (won't make any visual difference)\n let max = 999999999;\n if (y < -max) {\n y = -max;\n }\n if (y > max) {\n y = max;\n }\n if (x < -max) {\n x = -max;\n }\n if (x > max) {\n x = max;\n }\n return {\n x: x,\n y: y\n };\n }\n _shouldInclude(_position) {\n return true;\n }\n /**\r\n * @ignore\r\n */\n handleCursorHide() {\n this.hideTooltip();\n this.updateLegendValue(undefined);\n this.updateLegendMarker(undefined);\n }\n _afterDataChange() {\n super._afterDataChange();\n this.get(\"xAxis\")._markDirtyKey(\"start\");\n this.get(\"yAxis\")._markDirtyKey(\"start\");\n this.resetExtremes();\n }\n /**\r\n * Resets cached axis scale values.\r\n */\n resetExtremes() {\n this.setPrivate(\"selectionMinX\", undefined);\n this.setPrivate(\"selectionMaxX\", undefined);\n this.setPrivate(\"selectionMinY\", undefined);\n this.setPrivate(\"selectionMaxY\", undefined);\n this.setPrivate(\"minX\", undefined);\n this.setPrivate(\"minY\", undefined);\n this.setPrivate(\"maxX\", undefined);\n this.setPrivate(\"maxY\", undefined);\n }\n /**\r\n * Creates and returns an axis range object.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\r\n * @param axisDataItem Axis data item\r\n * @return Axis range\r\n */\n createAxisRange(axisDataItem) {\n return this.axisRanges.push({\n axisDataItem: axisDataItem\n });\n }\n /**\r\n * A list of series's main (ungrouped) data items.\r\n *\r\n * @return Data items\r\n */\n get mainDataItems() {\n return this._mainDataItems;\n }\n /**\r\n * @ignore\r\n */\n _adjustStartIndex(index) {\n const xAxis = this.get(\"xAxis\");\n const baseAxis = this.get(\"baseAxis\");\n if (baseAxis == xAxis && xAxis.isType(\"DateAxis\")) {\n const baseDuration = xAxis.baseDuration();\n const minSelection = xAxis.getPrivate(\"selectionMin\", xAxis.getPrivate(\"min\", 0));\n const dl = baseDuration * this.get(\"locationX\", 0.5);\n let value = -Infinity;\n while (value < minSelection) {\n const dataItem = this.dataItems[index];\n if (dataItem) {\n const open = dataItem.open;\n if (open) {\n value = open[\"valueX\"];\n } else {\n value = dataItem.get(\"valueX\", 0);\n }\n value += dl;\n if (value < minSelection) {\n index++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n }\n return index;\n }\n}\nObject.defineProperty(XYSeries, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"XYSeries\"\n});\nObject.defineProperty(XYSeries, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: Series.classNames.concat([XYSeries.className])\n});\n//# sourceMappingURL=XYSeries.js.map","export var slice = Array.prototype.slice;\nexport default function (x) {\n return typeof x === \"object\" && \"length\" in x ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}","export default function (x) {\n return function constant() {\n return x;\n };\n}","function Linear(context) {\n this._context = context;\n}\nLinear.prototype = {\n areaStart: function () {\n this._line = 0;\n },\n areaEnd: function () {\n this._line = NaN;\n },\n lineStart: function () {\n this._point = 0;\n },\n lineEnd: function () {\n if (this._line || this._line !== 0 && this._point === 1) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function (x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0:\n this._point = 1;\n this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y);\n break;\n case 1:\n this._point = 2;\n // falls through\n default:\n this._context.lineTo(x, y);\n break;\n }\n }\n};\nexport default function (context) {\n return new Linear(context);\n}","import _taggedTemplateLiteral from \"/home/vsts/work/1/s/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\";\nvar _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;\nconst pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(\"invalid digits: \".concat(digits));\n if (d > 15) return append;\n const k = 10 ** d;\n return function (strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 =\n // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append(_templateObject || (_templateObject = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y);\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"Z\"])));\n }\n }\n lineTo(x, y) {\n this._append(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = +x, this._y1 = +y);\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral([\"Q\", \",\", \",\", \",\", \"\"])), +x1, +y1, this._x1 = +x, this._y1 = +y);\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral([\"C\", \",\", \",\", \",\", \",\", \",\", \"\"])), +x1, +y1, +x2, +y2, this._x1 = +x, this._y1 = +y);\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) ;\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), this._x1 = x1, this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x1 + t01 * x01, y1 + t01 * y01);\n }\n this._append(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral([\"A\", \",\", \",0,0,\", \",\", \",\", \"\"])), r, r, +(y01 * x20 > x01 * y20), this._x1 = x1 + t21 * x21, this._y1 = y1 + t21 * y21);\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \".concat(r));\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([\"M\", \",\", \"\"])), x0, y0);\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral([\"L\", \",\", \"\"])), x0, y0);\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral([\"A\", \",\", \",0,1,\", \",\", \",\", \"A\", \",\", \",0,1,\", \",\", \",\", \"\"])), r, r, cw, x - dx, y - dy, r, r, cw, this._x1 = x0, this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral([\"A\", \",\", \",0,\", \",\", \",\", \",\", \"\"])), r, r, +(da >= pi), cw, this._x1 = x + r * Math.cos(a1), this._y1 = y + r * Math.sin(a1));\n }\n }\n rect(x, y, w, h) {\n this._append(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral([\"M\", \",\", \"h\", \"v\", \"h\", \"Z\"])), this._x0 = this._x1 = +x, this._y0 = this._y1 = +y, w = +w, +h, -w);\n }\n toString() {\n return this._;\n }\n}\nexport function path() {\n return new Path();\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\nexport function pathRound() {\n let digits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3;\n return new Path(+digits);\n}","import { Path } from \"d3-path\";\nexport function withPath(shape) {\n let digits = 3;\n shape.digits = function (_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(\"invalid digits: \".concat(_));\n digits = d;\n }\n return shape;\n };\n return () => new Path(digits);\n}","export function x(p) {\n return p[0];\n}\nexport function y(p) {\n return p[1];\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n x = typeof x === \"function\" ? x : x === undefined ? pointX : constant(x);\n y = typeof y === \"function\" ? y : y === undefined ? pointY : constant(y);\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n line.x = function (_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n line.y = function (_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n line.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n line.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n line.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n return line;\n}","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport { withPath } from \"./path.js\";\nimport { x as pointX, y as pointY } from \"./point.js\";\nexport default function (x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n x0 = typeof x0 === \"function\" ? x0 : x0 === undefined ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : y0 === undefined ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : y1 === undefined ? pointY : constant(+y1);\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n if (context == null) output = curve(buffer = path());\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n if (buffer) return output = null, buffer + \"\" || null;\n }\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n area.x = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n area.x0 = function (_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n area.x1 = function (_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n area.y = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n area.y0 = function (_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n area.y1 = function (_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n area.lineX0 = area.lineY0 = function () {\n return arealine().x(x0).y(y0);\n };\n area.lineY1 = function () {\n return arealine().x(x0).y(y1);\n };\n area.lineX1 = function () {\n return arealine().x(x1).y(y0);\n };\n area.defined = function (_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n area.curve = function (_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n area.context = function (_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n return area;\n}","import { XYSeries } from \"./XYSeries\";\nimport { Graphics } from \"../../../core/render/Graphics\";\nimport { line, area } from \"d3-shape\";\nimport { Template } from \"../../../core/util/Template\";\nimport { ListTemplate } from \"../../../core/util/List\";\nimport { color } from \"../../../core/util/Color\";\nimport { DataItem } from \"../../../core/render/Component\";\nimport { Rectangle } from \"../../../core/render/Rectangle\";\nimport * as $type from \"../../../core/util/Type\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $utils from \"../../../core/util/Utils\";\n/**\r\n * Used to plot line and/or area series.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/} for more info\r\n * @important\r\n */\nexport class LineSeries extends XYSeries {\n constructor() {\n super(...arguments);\n Object.defineProperty(this, \"_endIndex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_strokeGenerator\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: line()\n });\n Object.defineProperty(this, \"_fillGenerator\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: area()\n });\n Object.defineProperty(this, \"_legendStroke\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_legendFill\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n /**\r\n * A [[TemplateList]] of all line segments in series.\r\n *\r\n * `strokes.template` can be used to set default settings for all line\r\n * segments, or to change on existing ones.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\n Object.defineProperty(this, \"strokes\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\n themeTags: $utils.mergeTags(this.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"stroke\"])\n }, [this.strokes.template]))\n });\n /**\r\n * A [[TemplateList]] of all segment fills in series.\r\n *\r\n * `fills.template` can be used to set default settings for all segment\r\n * fills, or to change on existing ones.\r\n *\r\n * @default new ListTemplate<Graphics>\r\n */\n Object.defineProperty(this, \"fills\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\n themeTags: $utils.mergeTags(this.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"fill\"])\n }, [this.fills.template]))\n });\n // custom set from data\n Object.defineProperty(this, \"_fillTemplate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_strokeTemplate\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"_previousPoint\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: [0, 0, 0, 0]\n });\n Object.defineProperty(this, \"_dindex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"_sindex\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n }\n _afterNew() {\n this._fillGenerator.y0(function (p) {\n return p[3];\n });\n this._fillGenerator.x0(function (p) {\n return p[2];\n });\n this._fillGenerator.y1(function (p) {\n return p[1];\n });\n this._fillGenerator.x1(function (p) {\n return p[0];\n });\n super._afterNew();\n }\n /**\r\n * @ignore\r\n */\n makeStroke(strokes) {\n const stroke = this.mainContainer.children.push(strokes.make());\n strokes.push(stroke);\n return stroke;\n }\n /**\r\n * @ignore\r\n */\n makeFill(fills) {\n const fill = this.mainContainer.children.push(fills.make());\n fills.push(fill);\n return fill;\n }\n _updateChildren() {\n this._strokeTemplate = undefined;\n this._fillTemplate = undefined;\n let xAxis = this.get(\"xAxis\");\n let yAxis = this.get(\"yAxis\");\n if (this.isDirty(\"stroke\")) {\n const stroke = this.get(\"stroke\");\n this.strokes.template.set(\"stroke\", stroke);\n const legendStroke = this._legendStroke;\n if (legendStroke) {\n legendStroke.states.lookup(\"default\").set(\"stroke\", stroke);\n }\n }\n if (this.isDirty(\"fill\")) {\n const fill = this.get(\"fill\");\n this.fills.template.set(\"fill\", fill);\n const legendFill = this._legendFill;\n if (legendFill) {\n legendFill.states.lookup(\"default\").set(\"fill\", fill);\n }\n }\n if (this.isDirty(\"curveFactory\")) {\n const curveFactory = this.get(\"curveFactory\");\n if (curveFactory) {\n this._strokeGenerator.curve(curveFactory);\n this._fillGenerator.curve(curveFactory);\n }\n }\n if (xAxis.inited && yAxis.inited) {\n if (this._axesDirty || this._valuesDirty || this._stackDirty || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._sizeDirty || this.isDirty(\"connect\") || this.isDirty(\"curveFactory\")) {\n this.fills.each(fill => {\n fill.setPrivate(\"visible\", false);\n });\n this.strokes.each(fill => {\n fill.setPrivate(\"visible\", false);\n });\n this.axisRanges.each(axisRange => {\n let fills = axisRange.fills;\n if (fills) {\n fills.each(fill => {\n fill.setPrivate(\"visible\", false);\n });\n }\n let strokes = axisRange.strokes;\n if (strokes) {\n strokes.each(stroke => {\n stroke.setPrivate(\"visible\", false);\n });\n }\n });\n let startIndex = this.startIndex();\n let strokeTemplateField = this.strokes.template.get(\"templateField\");\n let fillTemplateField = this.fills.template.get(\"templateField\");\n let strokeTemplateFound = true;\n let fillTemplateFound = true;\n if (strokeTemplateField) {\n strokeTemplateFound = false;\n }\n if (fillTemplateField) {\n fillTemplateFound = false;\n }\n for (let i = startIndex - 1; i >= 0; i--) {\n let dataItem = this.dataItems[i];\n let hasValues = true;\n let dataContext = dataItem.dataContext;\n if (strokeTemplateField) {\n if (dataContext[strokeTemplateField]) {\n strokeTemplateFound = true;\n }\n }\n if (fillTemplateField) {\n if (dataContext[fillTemplateField]) {\n fillTemplateFound = true;\n }\n }\n $array.each(this._valueFields, field => {\n if (!$type.isNumber(dataItem.get(field))) {\n hasValues = false;\n }\n });\n if (hasValues && strokeTemplateFound && fillTemplateFound) {\n startIndex = i;\n break;\n }\n }\n let len = this.dataItems.length;\n let endIndex = this.endIndex();\n if (endIndex < len) {\n endIndex++;\n for (let i = endIndex; i < len; i++) {\n let dataItem = this.dataItems[i];\n let hasValues = true;\n $array.each(this._valueFields, field => {\n if (!$type.isNumber(dataItem.get(field))) {\n hasValues = false;\n }\n });\n if (hasValues) {\n endIndex = i + 1;\n break;\n }\n }\n }\n if (startIndex > 0) {\n startIndex--;\n }\n this._endIndex = endIndex;\n this._clearGraphics();\n this._sindex = 0;\n this._dindex = startIndex;\n if (this.dataItems.length == 1) {\n this._startSegment(0);\n } else {\n // this is done to avoid recursion with a lot of segments \n while (this._dindex < endIndex - 1) {\n this._startSegment(this._dindex);\n this._sindex++;\n }\n }\n }\n } else {\n this._skipped = true;\n }\n super._updateChildren();\n }\n _clearGraphics() {\n this.strokes.clear();\n this.fills.clear();\n }\n _startSegment(dataItemIndex) {\n let endIndex = this._endIndex;\n let currentEndIndex = endIndex;\n const autoGapCount = this.get(\"autoGapCount\");\n const connect = this.get(\"connect\");\n const fill = this.makeFill(this.fills);\n const fillTemplate = this._fillTemplate;\n const originalTemplate = this.fills.template;\n if (fillTemplate && fillTemplate != originalTemplate) {\n fill.template = fillTemplate;\n }\n fill.setPrivate(\"visible\", true);\n const stroke = this.makeStroke(this.strokes);\n const strokeTemplate = this._strokeTemplate;\n if (strokeTemplate && strokeTemplate != this.strokes.template) {\n stroke.template = strokeTemplate;\n }\n stroke.setPrivate(\"visible\", true);\n let xAxis = this.get(\"xAxis\");\n let yAxis = this.get(\"yAxis\");\n let baseAxis = this.get(\"baseAxis\");\n let vcx = this.get(\"vcx\", 1);\n let vcy = this.get(\"vcy\", 1);\n let xField = this._xField;\n let yField = this._yField;\n let xOpenField = this._xOpenField;\n let yOpenField = this._yOpenField;\n const xOpenFieldValue = this.get(\"openValueXField\");\n const yOpenFieldValue = this.get(\"openValueYField\");\n if (!xOpenFieldValue) {\n xOpenField = this._xField;\n }\n if (!yOpenFieldValue) {\n yOpenField = this._yField;\n }\n const stacked = this.get(\"stacked\");\n const basePosX = xAxis.basePosition();\n const basePosY = yAxis.basePosition();\n let baseField;\n if (baseAxis === yAxis) {\n baseField = this._yField;\n } else {\n baseField = this._xField;\n }\n const segments = [];\n let points = [];\n segments.push(points);\n const strokeTemplateField = this.strokes.template.get(\"templateField\");\n const fillTemplateField = this.fills.template.get(\"templateField\");\n let locationX = this.get(\"locationX\", 0.5);\n let locationY = this.get(\"locationY\", 0.5);\n let openLocationX = this.get(\"openLocationX\", locationX);\n let openLocationY = this.get(\"openLocationY\", locationY);\n const minDistance = this.get(\"minDistance\", 0);\n let i;\n let fillVisible = this.fills.template.get(\"visible\");\n if (this.axisRanges.length > 0) {\n fillVisible = true;\n }\n let getOpen = false;\n if (stacked || xOpenFieldValue || yOpenFieldValue) {\n getOpen = true;\n }\n const o = {\n points,\n segments,\n stacked,\n getOpen,\n basePosX,\n basePosY,\n fillVisible,\n xField,\n yField,\n xOpenField,\n yOpenField,\n vcx,\n vcy,\n baseAxis,\n xAxis,\n yAxis,\n locationX,\n locationY,\n openLocationX,\n openLocationY,\n minDistance\n };\n let rangeStrokeTemplate = this._strokeTemplate;\n let rangeFillTemplate = this._fillTemplate;\n for (i = dataItemIndex; i < currentEndIndex; i++) {\n this._dindex = i;\n const dataItem = this._dataItems[i];\n let valueX = dataItem.get(xField);\n let valueY = dataItem.get(yField);\n if (valueX == null || valueY == null) {\n if (!connect) {\n points = [];\n segments.push(points);\n o.points = points;\n }\n } else {\n this._getPoints(dataItem, o);\n }\n if (strokeTemplateField) {\n let strokeTemplate = dataItem.dataContext[strokeTemplateField];\n if (strokeTemplate) {\n if (!(strokeTemplate instanceof Template)) {\n strokeTemplate = Template.new(strokeTemplate);\n }\n this._strokeTemplate = strokeTemplate;\n if (i > dataItemIndex) {\n currentEndIndex = i;\n break;\n } else {\n rangeStrokeTemplate = strokeTemplate;\n stroke.template = strokeTemplate;\n }\n }\n }\n if (fillTemplateField) {\n let fillTemplate = dataItem.dataContext[fillTemplateField];\n if (fillTemplate) {\n if (!(fillTemplate instanceof Template)) {\n fillTemplate = Template.new(fillTemplate);\n }\n this._fillTemplate = fillTemplate;\n if (i > dataItemIndex) {\n currentEndIndex = i;\n break;\n } else {\n rangeFillTemplate = fillTemplate;\n fill.template = fillTemplate;\n }\n }\n }\n if (!connect) {\n let nextItem = this.dataItems[i + 1];\n if (nextItem) {\n if (baseAxis.shouldGap(dataItem, nextItem, autoGapCount, baseField)) {\n points = [];\n segments.push(points);\n o.points = points;\n }\n }\n }\n }\n fill.setRaw(\"userData\", [dataItemIndex, i]);\n stroke.setRaw(\"userData\", [dataItemIndex, i]);\n if (i === endIndex) {\n this._endLine(points, segments[0][0]);\n }\n if (stroke) {\n this._drawStroke(stroke, segments);\n }\n if (fill) {\n this._drawFill(fill, segments);\n }\n this.axisRanges.each(axisRange => {\n const container = axisRange.container;\n const fills = axisRange.fills;\n const fill = this.makeFill(fills);\n if (container) {\n container.children.push(fill);\n }\n fill.setPrivate(\"visible\", true);\n this._drawFill(fill, segments);\n const strokes = axisRange.strokes;\n const stroke = this.makeStroke(strokes);\n if (container) {\n container.children.push(stroke);\n }\n if (rangeStrokeTemplate && rangeStrokeTemplate != this.strokes.template) {\n stroke.template = rangeStrokeTemplate;\n }\n if (rangeFillTemplate && rangeFillTemplate != this.fills.template) {\n fill.template = rangeFillTemplate;\n }\n stroke.setPrivate(\"visible\", true);\n this._drawStroke(stroke, segments);\n fill.setRaw(\"userData\", [dataItemIndex, i]);\n stroke.setRaw(\"userData\", [dataItemIndex, i]);\n });\n }\n _getPoints(dataItem, o) {\n let points = o.points;\n let itemLocationX = dataItem.get(\"locationX\", o.locationX);\n let itemLocationY = dataItem.get(\"locationY\", o.locationY);\n let xPos = o.xAxis.getDataItemPositionX(dataItem, o.xField, itemLocationX, o.vcx);\n let yPos = o.yAxis.getDataItemPositionY(dataItem, o.yField, itemLocationY, o.vcy);\n if (this._shouldInclude(xPos)) {\n const iPoint = this.getPoint(xPos, yPos);\n const point = [iPoint.x, iPoint.y];\n iPoint.x += this._x;\n iPoint.y += this._y;\n dataItem.set(\"point\", iPoint);\n if (o.fillVisible) {\n let xPos0 = xPos;\n let yPos0 = yPos;\n if (o.baseAxis === o.xAxis) {\n yPos0 = o.basePosY;\n } else if (o.baseAxis === o.yAxis) {\n xPos0 = o.basePosX;\n }\n if (o.getOpen) {\n let valueX = dataItem.get(o.xOpenField);\n let valueY = dataItem.get(o.yOpenField);\n if (valueX != null && valueY != null) {\n let itemLocationX = dataItem.get(\"openLocationX\", o.openLocationX);\n let itemLocationY = dataItem.get(\"openLocationY\", o.openLocationY);\n if (o.stacked) {\n let stackToItemX = dataItem.get(\"stackToItemX\");\n let stackToItemY = dataItem.get(\"stackToItemY\");\n if (stackToItemX) {\n xPos0 = o.xAxis.getDataItemPositionX(stackToItemX, o.xField, itemLocationX, stackToItemX.component.get(\"vcx\"));\n if ($type.isNaN(xPos0)) {\n xPos0 = o.basePosX;\n }\n } else {\n if (o.yAxis === o.baseAxis) {\n xPos0 = o.basePosX;\n } else {\n xPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX, o.vcx);\n }\n }\n if (stackToItemY) {\n yPos0 = o.yAxis.getDataItemPositionY(stackToItemY, o.yField, itemLocationY, stackToItemY.component.get(\"vcy\"));\n if ($type.isNaN(yPos0)) {\n yPos0 = o.basePosY;\n }\n } else {\n if (o.xAxis === o.baseAxis) {\n yPos0 = o.basePosY;\n } else {\n yPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY, o.vcy);\n }\n }\n } else {\n xPos0 = o.xAxis.getDataItemPositionX(dataItem, o.xOpenField, itemLocationX, o.vcx);\n yPos0 = o.yAxis.getDataItemPositionY(dataItem, o.yOpenField, itemLocationY, o.vcy);\n }\n }\n }\n let closeIPoint = this.getPoint(xPos0, yPos0);\n point[2] = closeIPoint.x;\n point[3] = closeIPoint.y;\n }\n if (o.minDistance > 0) {\n const p0 = point[0];\n const p1 = point[1];\n const p2 = point[2];\n const p3 = point[3];\n const prev = this._previousPoint;\n const pp0 = prev[0];\n const pp1 = prev[1];\n const pp2 = prev[2];\n const pp3 = prev[3];\n if (Math.hypot(p0 - pp0, p1 - pp1) > o.minDistance || p2 && p3 && Math.hypot(p2 - pp2, p3 - pp3) > o.minDistance) {\n points.push(point);\n this._previousPoint = point;\n }\n } else {\n points.push(point);\n }\n }\n }\n _endLine(_points, _firstPoint) {}\n _drawStroke(graphics, segments) {\n if (graphics.get(\"visible\") && !graphics.get(\"forceHidden\")) {\n graphics.set(\"draw\", display => {\n $array.each(segments, segment => {\n this._strokeGenerator.context(display);\n this._strokeGenerator(segment);\n });\n });\n }\n }\n _drawFill(graphics, segments) {\n if (graphics.get(\"visible\") && !graphics.get(\"forceHidden\")) {\n graphics.set(\"draw\", display => {\n $array.each(segments, segment => {\n this._fillGenerator.context(display);\n this._fillGenerator(segment);\n });\n });\n }\n }\n _processAxisRange(axisRange) {\n super._processAxisRange(axisRange);\n axisRange.fills = new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\n themeTags: $utils.mergeTags(axisRange.fills.template.get(\"themeTags\", []), [\"line\", \"series\", \"fill\"])\n }, [this.fills.template, axisRange.fills.template]));\n axisRange.strokes = new ListTemplate(Template.new({}), () => Graphics._new(this._root, {\n themeTags: $utils.mergeTags(axisRange.strokes.template.get(\"themeTags\", []), [\"line\", \"series\", \"stroke\"])\n }, [this.strokes.template, axisRange.strokes.template]));\n }\n /**\r\n * @ignore\r\n */\n createLegendMarker(_dataItem) {\n const legendDataItem = this.get(\"legendDataItem\");\n if (legendDataItem) {\n const marker = legendDataItem.get(\"marker\");\n const markerRectangle = legendDataItem.get(\"markerRectangle\");\n if (markerRectangle) {\n markerRectangle.setPrivate(\"visible\", false);\n }\n marker.set(\"background\", Rectangle.new(marker._root, {\n fillOpacity: 0,\n fill: color(0x000000)\n }));\n const legendStroke = marker.children.push(Graphics._new(marker._root, {\n themeTags: [\"line\", \"series\", \"legend\", \"marker\", \"stroke\"],\n interactive: false\n }, [this.strokes.template]));\n this._legendStroke = legendStroke;\n const legendFill = marker.children.push(Graphics._new(marker._root, {\n themeTags: [\"line\", \"series\", \"legend\", \"marker\", \"fill\"]\n }, [this.fills.template]));\n this._legendFill = legendFill;\n const disabledColor = this._root.interfaceColors.get(\"disabled\");\n legendStroke.states.create(\"disabled\", {\n fill: disabledColor,\n stroke: disabledColor\n });\n legendFill.states.create(\"disabled\", {\n fill: disabledColor,\n stroke: disabledColor\n });\n if (this.bullets.length > 0) {\n const bulletFunction = this.bullets.getIndex(0);\n if (bulletFunction) {\n const bullet = bulletFunction(marker._root, this, new DataItem(this, {\n legend: true\n }, {}));\n if (bullet) {\n const sprite = bullet.get(\"sprite\");\n if (sprite instanceof Graphics) {\n sprite.states.create(\"disabled\", {\n fill: disabledColor,\n stroke: disabledColor\n });\n }\n if (sprite) {\n sprite.set(\"tooltipText\", undefined);\n sprite.set(\"tooltipHTML\", undefined);\n marker.children.push(sprite);\n sprite.setAll({\n x: marker.width() / 2,\n y: marker.height() / 2\n });\n marker.events.on(\"boundschanged\", () => {\n sprite.setAll({\n x: marker.width() / 2,\n y: marker.height() / 2\n });\n });\n }\n }\n }\n }\n }\n }\n}\nObject.defineProperty(LineSeries, \"className\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: \"LineSeries\"\n});\nObject.defineProperty(LineSeries, \"classNames\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: XYSeries.classNames.concat([LineSeries.className])\n});\n//# sourceMappingURL=LineSeries.js.map","import { AnimatedTheme } from \"../.internal/themes/AnimatedTheme\";\nexport default AnimatedTheme;\n//# sourceMappingURL=Animated.js.map","import { Theme } from \"../core/Theme\";\n/**\r\n * @ignore\r\n */\nexport class AnimatedTheme extends Theme {\n setupDefaultRules() {\n super.setupDefaultRules();\n this.rule(\"Component\").setAll({\n interpolationDuration: 600\n });\n this.rule(\"Hierarchy\").set(\"animationDuration\", 600);\n this.rule(\"Scrollbar\").set(\"animationDuration\", 600);\n this.rule(\"Tooltip\").set(\"animationDuration\", 300);\n this.rule(\"MapChart\").set(\"animationDuration\", 1000);\n this.rule(\"MapChart\").set(\"wheelDuration\", 300);\n this.rule(\"Entity\").setAll({\n stateAnimationDuration: 600\n });\n this.rule(\"Sprite\").states.create(\"default\", {\n stateAnimationDuration: 600\n });\n this.rule(\"Tooltip\", [\"axis\"]).setAll({\n animationDuration: 200\n });\n this.rule(\"WordCloud\").set(\"animationDuration\", 500);\n this.rule(\"Polygon\").set(\"animationDuration\", 600);\n this.rule(\"ArcDiagram\").set(\"animationDuration\", 600);\n }\n}\n//# sourceMappingURL=AnimatedTheme.js.map","import styled, { css, useTheme as useTheme$1 } from 'styled-components';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { theme, generate, useThemeProvider, themeHelpers, View, Table as Table$1, THead, Text, Alert, Row, Logo as Logo$1, Cell, Radio, HeadCell, TBody, generateCypressId, Tooltip, ChartLegendKey, IconFolderClosed } from '@acin/ui-core';\nimport { color, useTheme, create, ColorSet, MouseCursorStyle, percent, Scrollbar, Rectangle } from '@amcharts/amcharts4/core';\nimport { LineSeries, CircleBullet, ValueAxis, DateAxis, XYChart, RadarChart as RadarChart$3, CategoryAxis, RadarSeries, RadarCursor, ColumnSeries, LabelBullet, TreeMap, PieChart, PieSeries, NavigationBar, Bullet } from '@amcharts/amcharts4/charts';\nimport am4themes_animated from '@amcharts/amcharts4/themes/animated';\nimport { addLicense, Root, color as color$1, Label as Label$2, p50, Tooltip as Tooltip$1 } from '@amcharts/amcharts5';\nimport { XYChart as XYChart$1, XYCursor, CategoryAxis as CategoryAxis$1, AxisRendererX, ValueAxis as ValueAxis$1, AxisRendererY, LineSeries as LineSeries$1 } from '@amcharts/amcharts5/xy';\nimport am5themes_Animated from '@amcharts/amcharts5/themes/Animated';\n\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***************************************************************************** */\n\nvar __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};\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n\n// This named style should be the wrapper for the component i.e. the module\nvar LineChart = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n height: 100%;\\n width: 500px;\\n\"], [\"\\n height: 100%;\\n width: 500px;\\n\"])));\nvar templateObject_1;\nvar createLineSeries = function (chart, field, category, color, dashedLine) {\n var series = chart.series.push(new LineSeries());\n series.dataFields.valueY = field;\n series.dataFields.dateX = 'date';\n series.name = category;\n series.legendSettings.labelText = '[{color}]{valueY} [#585858]{category}[/]';\n series.strokeWidth = 2;\n if (dashedLine) series.strokeDasharray = '5,4'; // Dashed Line\n var bullet = series.bullets.push(new CircleBullet());\n bullet.circle.opacity = 0;\n bullet.circle.fill = color;\n bullet.circle.propertyFields.opacity = 'opacity';\n bullet.circle.radius = 4;\n return series;\n};\nvar createLineValue = function (chart) {\n var valueAxis = chart.yAxes.push(new ValueAxis());\n valueAxis.renderer.grid.template.disabled = true; // Disable xAxis Grid\n valueAxis.renderer.baseGrid.disabled = true;\n valueAxis.renderer.labels.template.disabled = true; // Disable Labels\n valueAxis.renderer.line.strokeOpacity = 0; // Axis Line\n valueAxis.cursorTooltipEnabled = false;\n return valueAxis;\n};\nvar createLineCategory = function (chart) {\n var categoryAxis = chart.xAxes.push(new DateAxis());\n categoryAxis.renderer.minGridDistance = 10;\n categoryAxis.renderer.grid.template.disabled = true; // Disable categoryAxis Grid\n categoryAxis.renderer.baseGrid.disabled = true; // Diable base grid\n categoryAxis.renderer.labels.template.stroke = color(theme.colors.text.getValue(1));\n categoryAxis.renderer.labels.template.fontWeight = '100';\n categoryAxis.renderer.labels.template.fontSize = theme.type.getSize(-2);\n categoryAxis.renderer.line.strokeOpacity = 1; // Axis Line Opacity\n categoryAxis.renderer.line.stroke = color(theme.colors.borders.getValue(1));\n categoryAxis.renderer.line.strokeWidth = 3;\n categoryAxis.cursorTooltipEnabled = false;\n categoryAxis.dateFormats.setKey('month', 'MMMMM'); // Set Date Formate for xAxis\n categoryAxis.periodChangeDateFormats.setKey('month', 'MMMMM');\n return categoryAxis;\n};\nvar deprecatedLog = function (componentName) {\n var text = \"WARNING: \" + componentName + \" is now deprecated!\";\n console.log(\"%c\" + text, 'color: #900; font-size: 20px;');\n};\nuseTheme(am4themes_animated);\nvar LineChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id;\n React.useLayoutEffect(function () {\n var chart = create(id, XYChart);\n chart.responsive.useDefault = false;\n chart.responsive.enabled = true;\n chart.logo.disabled = true; // Hide logo\n // Set Chart Data\n chart.data = data;\n // Color Set\n var colors = new ColorSet();\n // Create Category Axis\n createLineCategory(chart);\n // Create Value Axis\n createLineValue(chart);\n // Dashed Line\n var dashed = true;\n // Create Series\n createLineSeries(chart, 'score', 'category', colors.getIndex(0));\n createLineSeries(chart, 'network', 'category', colors.getIndex(1), dashed);\n return function () {\n chart.dispose();\n };\n }, [data, id]);\n deprecatedLog('LineChart');\n return /*#__PURE__*/React.createElement(LineChart, {\n id: id,\n \"data-testid\": generate(['line-chart'], props),\n className: className,\n style: {\n width: 221,\n height: 150,\n flexGrow: 1\n }\n });\n};\nvar LineChart$2 = styled(LineChart$1)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1;\nvar RadarChart = styled.div(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n height: 100%;\\n width: 500px;\\n font-weight: 300;\\n\\n .label {\\n text-align: center;\\n cursor: pointer;\\n width: 70px;\\n }\\n\\n .score {\\n color: \", \";\\n font-size: \", \";\\n display: block;\\n font-weight: 500;\\n }\\n\\n .title {\\n font-size: \", \";\\n color: \", \";\\n }\\n\"], [\"\\n height: 100%;\\n width: 500px;\\n font-weight: 300;\\n\\n .label {\\n text-align: center;\\n cursor: pointer;\\n width: 70px;\\n }\\n\\n .score {\\n color: \", \";\\n font-size: \", \";\\n display: block;\\n font-weight: 500;\\n }\\n\\n .title {\\n font-size: \", \";\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.type.getSize(-2);\n}, function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$2;\nvar toKebabCase = function (string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\\s+/g, '-').toLowerCase();\n};\nvar buildCustomLabel = function (target, chart) {\n var category = target.dataItem.category;\n if (!category) target.dataItem.visible = false;\n var getScore = function () {\n if (!category) {\n return 0;\n } else {\n var findCategory = chart.data.filter(function (match) {\n return match.category === category;\n });\n var score = findCategory[0].currentScore;\n return score;\n }\n };\n return \"<div class=\\\"label\\\" data-testid=\\\"acin-chart-label \" + (category ? toKebabCase(category) : '') + \"\\\">\\n <span class=\\\"score\\\">\" + getScore() + \"</span>\\n <span class=\\\"title\\\">\" + category + \"</span>\\n </div>\";\n};\nvar getCursorPosition = function (segments) {\n switch (segments) {\n default:\n case 3:\n return [{\n x: 0,\n y: -100\n }, {\n x: 63,\n y: 37\n }, {\n x: -63,\n y: 37\n }];\n case 4:\n return [{\n x: 0,\n y: -100\n }, {\n x: 100,\n y: 0\n }, {\n x: 0,\n y: 100\n }, {\n x: -100,\n y: 0\n }];\n case 5:\n return [{\n x: 0,\n y: -100\n }, {\n x: 100,\n y: -38\n }, {\n x: 62,\n y: 86\n }, {\n x: -62,\n y: 86\n }, {\n x: -100,\n y: -38\n }];\n case 6:\n return [{\n x: 0,\n y: -100\n }, {\n x: 90,\n y: -65\n }, {\n x: 90,\n y: 50\n }, {\n x: 0,\n y: 100\n }, {\n x: -90,\n y: 50\n }, {\n x: -90,\n y: -50\n }];\n case 7:\n return [{\n x: 0,\n y: -100\n }, {\n x: 80,\n y: -65\n }, {\n x: 100,\n y: 22\n }, {\n x: 45,\n y: 95\n }, {\n x: -45,\n y: 95\n }, {\n x: -100,\n y: 22\n }, {\n x: -80,\n y: -65\n }];\n }\n};\nuseTheme(am4themes_animated);\nvar RadarChart$1 = function (props) {\n var onClick = props.onClick,\n data = props.data,\n seriesAName = props.seriesAName,\n seriesBName = props.seriesBName,\n id = props.id;\n var activeTheme = useThemeProvider().activeTheme;\n var getStrokeColor = activeTheme.name === 'dark' ? theme.colors.borders.getValue(1) : theme.colors.backgrounds.getValue(0);\n useLayoutEffect(function () {\n var chart = create(id, RadarChart$3);\n chart.logo.disabled = true; // Hide logo\n chart.paddingRight = 20;\n chart.strokeOpacity = 1;\n chart.data = data;\n var segments = data.length;\n // categoryAxis - Diagonal lines spanning from the centre of the chart, category\n var categoryAxis = chart.xAxes.push(new CategoryAxis());\n categoryAxis.zIndex = 2;\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.strokeOpacity = 1;\n categoryAxis.renderer.grid.template.strokeWidth = 1;\n categoryAxis.renderer.grid.template.stroke = color(getStrokeColor);\n categoryAxis.cursorTooltipEnabled = false; // Turning this on snaps the cursor\n categoryAxis.renderer.labels.template.fill = color(theme.colors.text.getValue(1));\n categoryAxis.renderer.labels.template.clickable = true;\n categoryAxis.renderer.labels.template.events.on('hit', function (event) {\n return __awaiter(void 0, void 0, void 0, function () {\n var _a, category, index;\n return __generator(this, function (_b) {\n _a = event.target.dataItem, category = _a.category, index = _a.index;\n onClick(category);\n chart.cursor.triggerMove({\n x: getCursorPosition(segments)[index].x,\n y: getCursorPosition(segments)[index].y\n }, 'hard');\n return [2 /*return*/, category];\n });\n });\n });\n categoryAxis.renderer.labels.template.adapter.add('html', function (text, target) {\n return buildCustomLabel(target, chart);\n });\n // Rings inside radar\n var valueAxis = chart.yAxes.push(new ValueAxis());\n valueAxis.zIndex = 1;\n valueAxis.renderer.axisFills.template.fill = chart.colors.getIndex(2);\n valueAxis.renderer.grid.template.stroke = color(theme.colors.backgrounds.getValue(1));\n valueAxis.renderer.grid.template.strokeOpacity = 1;\n valueAxis.renderer.grid.template.strokeWidth = 1;\n valueAxis.renderer.labels.template.disabled = true;\n valueAxis.renderer.grid.template.nonScalingStroke = false;\n valueAxis.renderer.minGridDistance = 20;\n valueAxis.min = 0;\n valueAxis.max = 750;\n /* Create and configure series */\n var series = chart.series.push(new RadarSeries());\n series.showOnInit = false;\n series.dataFields.valueY = 'currentScore';\n series.dataFields.categoryX = 'category';\n series.name = seriesAName;\n series.strokeWidth = 1;\n series.stroke = color(theme.colors.dataVis.getValue(0).main);\n series.strokeLinecap = 'square';\n series.zIndex = 5;\n // Series bullets (Ideally, there should only be one)\n var bullet1 = series.bullets.push(new CircleBullet());\n bullet1.circle.opacity = 0;\n bullet1.circle.scale = 0.3;\n bullet1.circle.fill = color(theme.colors.dataVis.getValue(0).main);\n bullet1.circle.stroke = color(theme.colors.dataVis.getValue(0).main);\n bullet1.circle.propertyFields.opacity = 'opacity';\n var series2 = chart.series.push(new RadarSeries());\n series2.showOnInit = false;\n series2.dataFields.valueY = 'currentAverage';\n series2.dataFields.categoryX = 'category';\n series2.name = seriesBName;\n series2.stroke = color(theme.colors.dataVis.getValue(1).main);\n series2.strokeWidth = 1;\n series2.strokeDasharray = '2';\n series2.strokeLinecap = 'round';\n series2.zIndex = 4;\n // Series2 bullets (Ideally, there should only be one)\n var bullet2 = series2.bullets.push(new CircleBullet());\n bullet2.circle.opacity = 0;\n bullet2.properties.scale = 0.3;\n bullet2.circle.fill = color(theme.colors.dataVis.getValue(1).main);\n bullet2.circle.stroke = color(theme.colors.dataVis.getValue(1).main);\n bullet2.circle.propertyFields.opacity = 'opacity';\n /* Cursor */\n chart.cursor = new RadarCursor();\n chart.cursor.xAxis = categoryAxis;\n chart.cursor.zIndex = 3;\n chart.cursor.behavior = 'none';\n chart.cursor.pixelPerfect = true;\n chart.cursor.fullWidthLineX = true;\n chart.cursor.lineX.fill = color(theme.colors.info.getValue(500).main);\n chart.cursor.lineX.fillOpacity = 0.1;\n chart.cursor.lineX.stroke = color(theme.colors.info.getValue(500).main);\n chart.cursor.lineX.strokeOpacity = 0.1;\n chart.cursor.lineX.strokeDasharray = '';\n chart.cursor.lineX.strokeWidth = 0;\n chart.cursor.lineY.disabled = true;\n chart.cursor.lineY.strokeDasharray = '';\n chart.events.on('datavalidated', function (ev) {\n chart.cursor.triggerMove({\n x: getCursorPosition(segments)[0].x,\n y: getCursorPosition(segments)[0].y\n }, 'hard');\n });\n return function () {\n chart.dispose();\n };\n }, [seriesAName, seriesBName, id, data, onClick, activeTheme, getStrokeColor]);\n deprecatedLog('RadarChart');\n return /*#__PURE__*/React.createElement(RadarChart, {\n \"data-testid\": generate(['acin-chart', 'acin-chart--radar'], props),\n id: id,\n style: {\n width: 390,\n height: 330\n }\n });\n};\nvar RadarChart$2 = styled(RadarChart$1)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ControlAlignmentOverview = styled.div(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n .label {\\n display: block;\\n text-align: center;\\n word-wrap: normal;\\n }\\n\\n foreignObject {\\n // 70px height will allow 5 line on labels:\\n height: 70px;\\n }\\n\"], [\"\\n .label {\\n display: block;\\n text-align: center;\\n word-wrap: normal;\\n }\\n\\n foreignObject {\\n // 70px height will allow 5 line on labels:\\n height: 70px;\\n }\\n\"])));\nvar templateObject_1$4;\nvar ControlAlignmentOverview$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n var customLabel = function (target) {\n var text = target.dataItem.text;\n return \"<span data-testid=\\\"acin-chart-label\\\">\\n \" + text + \"\\n </span>\";\n };\n useLayoutEffect(function () {\n var getChartData = function () {\n var nameMapCounter = new Map();\n var chartNameToOriginalMap = new Map();\n var newData = data.map(function (column) {\n var _a;\n var paletteIndex = ((_a = column.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || 0;\n var colors = {\n default: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main,\n hover: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main,\n active: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main\n };\n var currentCount = nameMapCounter.get(column.name) || 0;\n nameMapCounter.set(column.name, currentCount + 1);\n var newChartName = currentCount >= 1 ? column.name + \" (\" + currentCount + \")\" : column.name;\n chartNameToOriginalMap.set(newChartName, column.name);\n return __assign(__assign(__assign({}, column), colors), {\n name: newChartName\n });\n });\n return {\n newData: newData,\n chartNameToOriginalMap: chartNameToOriginalMap\n };\n };\n var getTextColor = activeTheme.name === 'dark' ? activeTheme.colors.text.getValue() : activeTheme.colors.text.getValue(1);\n // Initialise chart\n var chart = create(id, XYChart);\n chart.logo.disabled = true;\n chart.data = getChartData().newData;\n chart.padding(0, 0, 0, 0);\n // Initialise category axis (horizontal)\n var categoryAxis = chart.xAxes.push(new CategoryAxis());\n categoryAxis.dataFields.category = 'name';\n categoryAxis.renderer.grid.template.disabled = true;\n categoryAxis.renderer.minGridDistance = 30;\n var label = categoryAxis.renderer.labels.template;\n label.maxWidth = 80;\n label.fontSize = 12;\n label.wrap = true;\n label.textAlign = 'middle';\n label.fill = color(getTextColor);\n label.paddingBottom = 0;\n label.paddingRight = 0;\n label.paddingLeft = 0;\n label.truncate = false;\n // wrap label with customLabel html\n label.adapter.add('html', function (_, target) {\n return customLabel(target);\n });\n // Initialise value axis (vertical)\n var valueAxis = chart.yAxes.push(new ValueAxis());\n valueAxis.renderer.grid.template.disabled = true;\n valueAxis.renderer.opacity = 0;\n valueAxis.startLocation = 0;\n // Initialise series\n var series = chart.series.push(new ColumnSeries());\n series.dataFields.categoryX = 'name';\n series.dataFields.valueY = 'total';\n // Sets column appearance and handles click event\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\n series.columns.template.propertyFields.fill = 'default';\n // series.columns.template.tooltipText = '{description}';\n // series.columns.template.tooltipX = am4core.percent(50);\n // series.columns.template.tooltipY = am4core.percent(20);\n series.columns.template.strokeOpacity = 0;\n series.columns.template.togglable = false;\n series.columns.template.column.cornerRadiusTopRight = 2;\n series.columns.template.column.cornerRadiusTopLeft = 2;\n series.columns.template.events.on('hit', function (ev) {\n var _a;\n var activeCols = series.columns.values.filter(function (column) {\n return column.isActive;\n });\n var item = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.categories.categoryX;\n var chartNameToOriginalMap = getChartData().chartNameToOriginalMap;\n var originalName = chartNameToOriginalMap.get(item);\n activeCols && activeCols.map(function (item) {\n return item.isActive = false;\n });\n var seriesColumn = ev.target;\n seriesColumn.isActive = !seriesColumn.isActive;\n onClick(originalName);\n });\n // Hover and active states for columns\n var hoverState = series.columns.template.states.create('hover');\n hoverState.propertyFields.fill = 'hover';\n var activeState = series.columns.template.states.create('active');\n activeState.propertyFields.fill = 'active';\n // Tooltip related properties commented out, as per access release\n // Sets tooltip properties\n // const tooltip = series.tooltip!;\n // tooltip.pointerOrientation = 'vertical';\n // tooltip.getFillFromObject = false;\n // tooltip.background.fill = am4core.color('#272727');\n // tooltip.stroke = am4core.color('rgba(0,0,0,0)');\n // tooltip.strokeOpacity = 1;\n // tooltip.opacity = 1;\n // tooltip.label.fontSize = 12;\n // tooltip!.background.stroke = am4core.color('#272727');\n // Sets control count shown above columns\n var labelBullet = series.bullets.push(new LabelBullet());\n labelBullet.label.verticalCenter = 'bottom';\n labelBullet.label.dy = 0;\n labelBullet.label.text = \"{values.valueY.workingValue.formatNumber('#.')}\";\n labelBullet.label.fontSize = 10;\n labelBullet.label.fill = color(getTextColor);\n // Sets default column on load\n chart.events.on('datavalidated', function (ev) {\n series.columns.values[0].isActive = true;\n });\n chart.responsive.enabled = true;\n chart.responsive.useDefault = false;\n return function () {\n chart.dispose();\n };\n }, [id, data, onClick, activeTheme]);\n return /*#__PURE__*/React.createElement(ControlAlignmentOverview, {\n \"data-testid\": generate(['acin-chart', 'control-alignment-overview'], props),\n className: className,\n id: id,\n style: {\n width: '100%'\n }\n });\n};\nvar ControlAlignmentOverview$2 = styled(ControlAlignmentOverview$1)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\nvar BoxTreeChart = styled.div(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\\n height: 100%;\\n width: 100%;\\n\\n .customTooltip {\\n display: flex;\\n flex-direction: column;\\n align-items: left;\\n max-width: \", \";\\n line-height: \", \";\\n }\\n\\n .title {\\n font-weight: 700;\\n }\\n\\n .label-list {\\n &__item {\\n line-height: \", \";\\n padding-top: \", \";\\n }\\n }\\n\\n .remaining-labels {\\n padding-top: \", \";\\n }\\n\"], [\"\\n height: 100%;\\n width: 100%;\\n\\n .customTooltip {\\n display: flex;\\n flex-direction: column;\\n align-items: left;\\n max-width: \", \";\\n line-height: \", \";\\n }\\n\\n .title {\\n font-weight: 700;\\n }\\n\\n .label-list {\\n &__item {\\n line-height: \", \";\\n padding-top: \", \";\\n }\\n }\\n\\n .remaining-labels {\\n padding-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(70);\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$6;\nvar getContainerColor = themeHelpers.getContainerColor;\nuseTheme(am4themes_animated);\nvar BoxTreeChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n useLayoutEffect(function () {\n var chart = create(id, TreeMap);\n chart.responsive.useDefault = false;\n chart.responsive.enabled = true;\n chart.logo.disabled = true;\n var buildData = function () {\n return data.map(function (item) {\n var paletteIndex = item.colorPalette.paletteIndex || 0;\n var paletteShade = item.colorPalette.shade || 500;\n var colors = {\n default: activeTheme.colors.dataVis.getValue(paletteIndex, paletteShade).main,\n hover: activeTheme.colors.dataVis.getNextValue(paletteIndex, paletteShade).main\n };\n return __assign(__assign({}, item), colors);\n });\n };\n var getTextColor = color(activeTheme.name === 'dark' ? activeTheme.colors.text.getValue() : activeTheme.colors.text.getValue(3));\n var getColumnTextColor = color(activeTheme.name === 'dark' ? activeTheme.colors.backgrounds.getValue(1) : activeTheme.colors.text.getValue(3));\n // Chart Data\n chart.data = buildData();\n chart.dataFields.value = 'count';\n chart.dataFields.name = 'name';\n chart.dataFields.color = 'default';\n chart.maskBullets = true;\n chart.padding(0, 0, 0, 0);\n // Create Series 1\n var level1 = chart.seriesTemplates.create('0');\n var level1_column = level1.columns.template;\n level1_column.strokeWidth = 2;\n level1_column.stroke = color(getContainerColor(activeTheme));\n /* Name Labels */\n var level1_bullet = level1.bullets.push(new LabelBullet());\n level1_bullet.locationY = 1;\n level1_bullet.locationX = 0;\n level1_bullet.label.text = '{name}';\n level1_bullet.label.fill = color(getColumnTextColor);\n level1_bullet.label.dy = 30;\n level1_bullet.label.padding(15, 15, 15, 15);\n level1_bullet.label.horizontalCenter = 'left';\n level1_bullet.label.truncate = true;\n level1_bullet.label.maxWidth = 50;\n level1_bullet.label.hideOversized = true;\n level1_bullet.label.adapter.add('textOutput', function (text, target) {\n return target.maxWidth < 50 || target.maxHeight < 50 ? '' : text;\n });\n // Custom Tooltip\n var renderTooltip = function (ev) {\n var allLabels = ev.target.dataItem.dataContext.dataContext.labels;\n var displayedLabels = allLabels.slice(0, 5);\n var remainingLabels = allLabels.slice(6);\n var remainingLabelsCount = remainingLabels.length;\n var otherLabelsText = remainingLabelsCount === 1 ? 'Other' : 'Others';\n var remainingLabelsCountText = \"+ \" + remainingLabelsCount + \" \" + otherLabelsText;\n var labelList = displayedLabels.map(function (label) {\n return \"<li class=\\\"label-list__item\\\">\" + label + \"</li>\";\n }).join('');\n if (remainingLabelsCount > 0) {\n return \"<div class=\\\"customTooltip--remaining-labels\\\" data-testid=\\\"box-tree-chart-tooltip\\\">\\n <p class=\\\"title\\\">{name}:</p>\\n\\n <ul class=\\\"label-list\\\">\\n \" + labelList + \"\\n </ul>\\n\\n <p class=\\\"remaining-labels\\\">\\n \" + remainingLabelsCountText + \"\\n </p>\\n </div>\";\n }\n return \"<div class=\\\"customTooltip\\\" data-testid=\\\"box-tree-chart-tooltip\\\">\\n <p class=\\\"title\\\">{name}:</p>\\n\\n <ul class=\\\"label-list\\\">\\n \" + labelList + \"\\n </ul>\\n </div>\";\n };\n level1.tooltip.pointerOrientation = 'vertical';\n level1.tooltip.label.wrap = true;\n level1.tooltip.label.fontSize = 12;\n level1.tooltip.getFillFromObject = false;\n level1.tooltip.background.fillOpacity = 1;\n var tooltipBackgroundColor = activeTheme.colors.navBackground;\n level1.tooltip.background.fill = color(tooltipBackgroundColor);\n level1.tooltip.background.stroke = color(tooltipBackgroundColor);\n level1.tooltip.label.fill = color(getTextColor);\n level1.tooltip.label.padding(8, 8, 8, 8);\n level1.columns.template.events.on('over', function (ev) {\n level1_column.tooltipHTML = renderTooltip(ev);\n });\n // Create Series 2\n var level2 = chart.seriesTemplates.create('0');\n // Count Labels\n var level2_bullet = level2.bullets.push(new LabelBullet());\n level2_bullet.locationY = 0;\n level2_bullet.locationX = 0;\n level2_bullet.label.text = '{count}';\n level2_bullet.label.fill = color(getColumnTextColor);\n level2_bullet.label.dy = -20;\n level2_bullet.label.padding(15, 15, 15, 15);\n level2_bullet.label.horizontalCenter = 'left';\n level2_bullet.label.truncate = true;\n level2_bullet.label.hideOversized = true;\n level2_bullet.label.adapter.add('textOutput', function (text, target) {\n return target.maxWidth < 70 || target.maxHeight < 70 ? '' : text;\n });\n // Hover State\n var hoverState = level1.columns.template.states.create('hover');\n hoverState.adapter.add('fill', function (fill, target) {\n var _a, _b, _c;\n var hoverColor = (_c = (_b = (_a = target.sprite) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.dataContext) === null || _c === void 0 ? void 0 : _c.dataContext.hover;\n return color(hoverColor);\n });\n // Click Event\n level1.columns.template.events.on('hit', function (ev) {\n var _a, _b, _c;\n var id = (_c = (_b = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.dataContext) === null || _b === void 0 ? void 0 : _b.dataContext) === null || _c === void 0 ? void 0 : _c.id;\n // Redirect to risk page on click\n onClick(id);\n });\n return function () {\n chart.dispose();\n };\n }, [data, onClick, id, activeTheme]);\n deprecatedLog('BoxTreeChart');\n return /*#__PURE__*/React.createElement(BoxTreeChart, {\n \"data-testid\": generate(['box-tree-chart'], props),\n className: className,\n id: id\n });\n};\nvar BoxTreeChart$2 = styled(BoxTreeChart$1)(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$7;\nvar RiskAlignmentOverview = styled(View)(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n height: 100%;\\n width: 100%;\\n\\n .label {\\n display: block;\\n margin: \", \";\\n\\n &__value {\\n font-size: \", \";\\n }\\n\\n &__name {\\n color: \", \";\\n font-size: \", \";\\n margin-top: \", \";\\n }\\n }\\n\"], [\"\\n height: 100%;\\n width: 100%;\\n\\n .label {\\n display: block;\\n margin: \", \";\\n\\n &__value {\\n font-size: \", \";\\n }\\n\\n &__name {\\n color: \", \";\\n font-size: \", \";\\n margin-top: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$8;\nuseTheme(am4themes_animated);\nvar getContainerColor$1 = themeHelpers.getContainerColor;\nvar RiskAlignmentOverview$1 = function (props) {\n var className = props.className,\n id = props.id,\n data = props.data,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n useLayoutEffect(function () {\n // Initialise Chart\n var chart = create(id, PieChart);\n chart.hiddenState.properties.opacity = 0;\n chart.responsive.useDefault = false;\n // chart.responsive.enabled = true;\n chart.logo.disabled = true;\n var buildData = function () {\n return data.map(function (item) {\n var _a;\n var paletteIndex = ((_a = item.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || 0;\n var colors = {\n default: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main,\n hover: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main,\n active: theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main\n };\n return __assign(__assign({}, item), colors);\n });\n };\n // Chart Data\n chart.data = buildData();\n // Chart Default Config\n chart.padding(0, 0, 0, 0);\n chart.radius = percent(70);\n chart.innerRadius = percent(50);\n chart.startAngle = 180;\n chart.endAngle = 360;\n // Chart Series\n var series = chart.series.push(new PieSeries());\n series.dataFields.value = 'total';\n series.dataFields.category = 'name';\n series.slices.template.propertyFields.fill = 'default';\n series.slices.template.stroke = color(getContainerColor$1(activeTheme));\n series.slices.template.strokeWidth = 4;\n series.slices.template.togglable = false;\n series.slices.template.cursorOverStyle = MouseCursorStyle.pointer;\n series.hiddenState.properties.startAngle = 90;\n series.hiddenState.properties.endAngle = 90;\n series.alignLabels = false;\n // Chart Ticks\n series.ticks.template.propertyFields.stroke = 'default';\n series.ticks.template.strokeOpacity = 1;\n // Custom Labels\n var customLabels = function (target) {\n var _a = target.dataItem.dataContext,\n name = _a.name,\n total = _a.total;\n return \"<div class=\\\"label\\\" data-testid=\\\"risk-alignment-chart-label\\\">\\n <p class=\\\"label__value\\\">\" + total + \"</p>\\n <p class=\\\"label__name\\\">\" + name + \"</p>\\n </div>\";\n };\n series.labels.template.adapter.add('html', function (_, target) {\n return customLabels(target);\n });\n series.labels.template.text = '{total}';\n var label = series.labels.template;\n label.fontSize = 12;\n label.propertyFields.fill = 'default';\n label.horizontalCenter = 'right';\n label.verticalCenter = 'middle';\n // Chart Hover State\n var hoverState = series.slices.template.states.create('hover');\n hoverState.properties.scale = 1; // Disable default slice scale on hover\n hoverState.adapter.add('fill', function (fill, target) {\n var _a, _b, _c;\n var hoverColor = (_c = (_b = (_a = target.sprite) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.dataContext) === null || _c === void 0 ? void 0 : _c.hover;\n return color(hoverColor);\n });\n var hoverSlice = function (item, hovered) {\n item.isHover = hovered;\n if (item.isActive) return; // Disable hover if slice is active\n if (item.isHover) {\n item.innerRadius = percent(68);\n } else if (!item.isHover) {\n item.innerRadius = percent(72);\n }\n };\n series.slices.template.events.on('over', function (ev) {\n hoverSlice(ev.target, true);\n });\n series.slices.template.events.on('out', function (ev) {\n hoverSlice(ev.target, false);\n });\n // Chart Active State\n var activeState = series.slices.template.states.create('active');\n activeState.propertyFields.fill = 'active';\n activeState.properties.shiftRadius = 0; // Disable default slice slide out on click\n // Chart Click\n series.slices.template.events.on('hit', function (ev) {\n var _a, _b;\n var allSlices = series.slices.values;\n var currentSliceCategory = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.properties.category;\n var inactiveSliceCategories = allSlices.filter(function (slice) {\n return currentSliceCategory !== slice.dataItem.category;\n });\n // Set Active Slice On Click\n var activeSlice = series.slices.values.filter(function (item) {\n return item.isActive;\n });\n var item = (_b = ev.target.dataItem) === null || _b === void 0 ? void 0 : _b.properties.category;\n activeSlice && activeSlice.map(function (item) {\n return item.isActive = false;\n });\n var seriesSlice = ev.target;\n var resetSlice = function (slice) {\n var sliceDataItem = slice.dataItem;\n slice.innerRadius = percent(72);\n sliceDataItem.label.fontWeight = 'normal';\n sliceDataItem.label.fill = color(theme.colors.text.getValue(1));\n };\n var setActiveSlice = function (slice) {\n var sliceDataItem = slice.dataItem;\n inactiveSliceCategories.map(function (item) {\n return resetSlice(item);\n });\n seriesSlice.isActive = true;\n sliceDataItem.label.fontWeight = '700';\n sliceDataItem.label.fill = color(theme.colors.text.getValue(0));\n slice.innerRadius = percent(60);\n };\n // Update Active Slice & Reset Inactive Slice\n if (seriesSlice.isActive === true) {\n return seriesSlice.isActive = false;\n } else if (seriesSlice.isActive === false) {\n setActiveSlice(seriesSlice);\n }\n onClick(item);\n });\n // Set First Slice As Active By Default\n chart.events.on('datavalidated', function (ev) {\n var sliceDataItem = series.slices.values[0].dataItem;\n sliceDataItem.slice.isActive = true;\n sliceDataItem.label.fontWeight = '700';\n sliceDataItem.label.fill = color(theme.colors.text.getValue(1));\n sliceDataItem.slice.innerRadius = percent(60);\n });\n // Tooltip opacity set to 0 as per early access release\n // Chart Tooltip\n var tooltip = series.tooltip;\n tooltip.pointerOrientation = 'vertical';\n tooltip.getFillFromObject = false;\n tooltip.background.fill = color(theme.colors.navBackground);\n tooltip.stroke = color('rgba(0,0,0,0)');\n tooltip.maxWidth = 280;\n tooltip.label.wrap = true;\n tooltip.strokeOpacity = 1;\n tooltip.opacity = 0;\n tooltip.label.fontSize = 12;\n tooltip.background.stroke = color(theme.colors.navBackground);\n series.slices.template.tooltipText = '{description}';\n return function () {\n chart.dispose();\n };\n }, [data, onClick, id, activeTheme]);\n return /*#__PURE__*/React.createElement(RiskAlignmentOverview, {\n \"data-testid\": generate(['risk-alignment-overview'], props),\n className: className,\n id: id\n });\n};\nvar RiskAlignmentOverview$2 = styled(RiskAlignmentOverview$1)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$9;\n\n// This named style should be the wrapper for the component i.e. the module\nvar HorizontalDivergentStackedBarChart = styled.div(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$a;\nvar getContainerColor$2 = themeHelpers.getContainerColor;\nvar transformData = function (data, negativeSeries) {\n var negativeKeyMap = negativeSeries === null || negativeSeries === void 0 ? void 0 : negativeSeries.map(function (item) {\n return item.key;\n });\n return data.map(function (item) {\n var negativeValues = negativeKeyMap === null || negativeKeyMap === void 0 ? void 0 : negativeKeyMap.reduce(function (acc, key) {\n var _a;\n if (key === void 0) {\n key = '';\n }\n if (item[key]) {\n return __assign(__assign({}, acc), (_a = {}, _a[key] = -item[key], _a));\n }\n return acc;\n }, {});\n return __assign(__assign({}, item), negativeValues);\n });\n};\nvar HorizontalDivergentStackedBarChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n onClick = props.onClick,\n negativeSeries = props.negativeSeries,\n positiveSeries = props.positiveSeries;\n var activeTheme = useThemeProvider().activeTheme;\n var memoTransformData = useMemo(function () {\n return transformData(data, negativeSeries);\n }, [data, negativeSeries]);\n useLayoutEffect(function () {\n var chart = create(id, XYChart);\n chart.logo.disabled = true;\n chart.data = memoTransformData;\n chart.padding(0, 0, 0, 0);\n // Create axes\n var categoryAxis = chart.yAxes.push(new CategoryAxis());\n categoryAxis.dataFields.category = 'category';\n categoryAxis.renderer.grid.template.location = 0;\n categoryAxis.renderer.grid.template.opacity = 0;\n categoryAxis.renderer.inversed = true;\n categoryAxis.renderer.minGridDistance = 20; // 20\n categoryAxis.renderer.axisFills.template.disabled = true;\n categoryAxis.renderer.axisFills.template.fillOpacity = 0.05;\n categoryAxis.startLocation = 0;\n var label = categoryAxis.renderer.labels.template;\n label.fontSize = 10;\n label.fontWeight = '400';\n label.width = 220;\n label.textAlign = 'end';\n // label.togglable = true;\n label.truncate = true;\n label.cursorOverStyle = MouseCursorStyle.pointer;\n label.fill = color(activeTheme.colors.text.getValue(1));\n var activeState = label.states.create('active');\n activeState.properties.fontWeight = '500';\n activeState.properties.fill = color(activeTheme.colors.text.getValue());\n label.events.on('hit', function (ev) {\n var _a, _b;\n var activeLabels = categoryAxis.renderer.labels.values.filter(function (label) {\n return label.isActive;\n });\n var clickedItem = (_b = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.category;\n activeLabels && activeLabels.map(function (item) {\n return item.dataItem.properties.category === clickedItem ? item.isActive = true : item.isActive = false;\n });\n ev.target.setState('active');\n onClick(clickedItem);\n });\n // label.adapter.add('html', (text, target) => customLabel(target));\n var valueAxis = chart.xAxes.push(new ValueAxis());\n valueAxis.renderer.minGridDistance = 20;\n valueAxis.renderer.ticks.template.opacity = 0;\n valueAxis.renderer.grid.template.opacity = 0;\n valueAxis.renderer.opacity = 0;\n // Use only absolute numbers\n chart.numberFormatter.numberFormat = '#.#s';\n var onColumnClick = function (ev, field) {\n var _a;\n var activeLabels = categoryAxis.renderer.labels.values.filter(function (label) {\n return label.isActive;\n });\n var clickedItem = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.categories.categoryY;\n activeLabels && activeLabels.map(function (item) {\n return item.dataItem.properties.category === clickedItem ? item.isActive = true : item.isActive = false;\n });\n var parentLabel = categoryAxis.renderer.labels.values.find(function (label) {\n return label.dataItem.properties.category === clickedItem;\n });\n parentLabel && parentLabel.setState('active');\n onClick(clickedItem, field);\n };\n // Create series\n var createSeries = function (field, name, color$1) {\n var series = chart.series.push(new ColumnSeries());\n series.dataFields.valueX = field;\n series.dataFields.categoryY = 'category';\n series.stacked = true;\n series.name = name;\n series.stroke = color(getContainerColor$2(activeTheme));\n series.strokeWidth = 2;\n series.fill = color$1;\n series.columns.template.column.cornerRadiusBottomLeft = 2;\n series.columns.template.column.cornerRadiusBottomRight = 2;\n series.columns.template.column.cornerRadiusTopLeft = 2;\n series.columns.template.column.cornerRadiusTopRight = 2;\n series.columns.template.height = 20;\n series.columns.template.cursorOverStyle = MouseCursorStyle.pointer;\n series.columns.template.events.on('hit', function (ev) {\n onColumnClick(ev, field);\n });\n // Counts inside columns\n var label = series.bullets.push(new LabelBullet());\n label.label.text = '{valueX}';\n label.cursorOverStyle = MouseCursorStyle.pointer;\n label.label.fill = color(activeTheme.name === 'dark' ? activeTheme.colors.text.getValue() : activeTheme.colors.text.getValue(3));\n label.label.strokeWidth = 0;\n label.label.truncate = false;\n label.label.hideOversized = true;\n label.locationX = 0.5;\n label.locationY = 0.45;\n label.events.on('hit', function (ev) {\n onColumnClick(ev, field);\n });\n return series;\n };\n __spread(negativeSeries || []).reverse().forEach(function (series) {\n var _a = series.key,\n key = _a === void 0 ? '' : _a,\n _b = series.label,\n label = _b === void 0 ? '' : _b,\n colorPalette = series.colorPalette;\n var paletteIndex = (colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.paletteIndex) || 0;\n createSeries(key, label, color(activeTheme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main));\n });\n positiveSeries === null || positiveSeries === void 0 ? void 0 : positiveSeries.forEach(function (series) {\n var _a = series.key,\n key = _a === void 0 ? '' : _a,\n _b = series.label,\n label = _b === void 0 ? '' : _b,\n colorPalette = series.colorPalette;\n var paletteIndex = (colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.paletteIndex) || 0;\n createSeries(key, label, color(activeTheme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main));\n });\n var cellSize = 30; // Height of row\n chart.events.on('datavalidated', function (ev) {\n var chart = ev.target;\n var categoryAxis = chart.yAxes.getIndex(0);\n var adjustHeight = chart.data.length * cellSize - categoryAxis.pixelHeight;\n var targetHeight = chart.pixelHeight + adjustHeight;\n if (chart.svgContainer) {\n chart.svgContainer.htmlElement.style.height = targetHeight + \"px\";\n }\n if (chart) {\n var firstCategory_1 = chart.data[0].category;\n var parentLabel = categoryAxis.renderer.labels.values.find(function (label) {\n return label.dataItem.properties.category === firstCategory_1;\n });\n parentLabel && parentLabel.setState('active');\n }\n });\n return function () {\n chart.dispose();\n };\n }, [id, data, onClick, memoTransformData, negativeSeries, positiveSeries, activeTheme]);\n deprecatedLog('HorizontalDivergentStackedBarChart');\n return /*#__PURE__*/React.createElement(HorizontalDivergentStackedBarChart, {\n \"data-testid\": generate(['acin-chart', 'horizontal-divergent-stacked-bar-chart'], props),\n className: className,\n id: id\n });\n};\nvar HorizontalDivergentStackedBarChart$2 = styled(HorizontalDivergentStackedBarChart$1)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$b;\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n HorizontalDivergentStackedBarChart: HorizontalDivergentStackedBarChart$2\n});\n\n// This named style should be the wrapper for the component i.e. the module\nvar ScoreChart = styled(View)(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n height: \", \";\\n\"], [\"\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(15);\n});\nvar templateObject_1$c;\nuseTheme(am4themes_animated);\nvar formatData = function (colors, data) {\n var chartColors = colors;\n // Chart Data Calculations\n var stageSizePercent = 100 / colors.length;\n var min = data.min || 0;\n var max = data.max || data.value;\n var reverseAxis = false;\n if (min > max) {\n reverseAxis = true;\n min = data.max || 0;\n max = data.min || 0 || data.value;\n }\n var positionPercent = 0;\n var positionValue = min;\n var stageSizeValue = (max - min) / colors.length;\n var valuePercent = data.value / (max - min) * 100;\n // Map Colours & Chart Section Data\n var stages = [];\n chartColors.forEach(function (color) {\n var toPercent = positionPercent + stageSizePercent;\n var toValue = positionValue + stageSizeValue;\n var to = data.value <= toValue ? data.value : toValue;\n stages = __spread(stages, [{\n color: color,\n percent: valuePercent <= toPercent ? valuePercent : toPercent,\n name: data.name,\n value: data.value,\n to: to\n }]);\n positionPercent = toPercent;\n positionValue = toValue;\n });\n // Section 'From' Data\n var results = stages.reduce(function (acc, item, index) {\n return __spread(acc, [__assign(__assign({}, item), {\n from: index > 0 ? acc[index - 1].to : min\n })]);\n }, []);\n // Add data for Last Chart Section\n var _a = __read(__spread(results).reverse(), 1),\n lastValue = _a[0];\n if (lastValue.to < max) {\n results = __spread(results, [{\n to: max,\n from: lastValue.to,\n value: lastValue.to,\n color: color(theme.colors.shadow),\n name: data.name\n }]);\n }\n // Reverse Axis & Data For 'Client Data Updates' Chart\n if (reverseAxis) {\n results = results.map(function (item) {\n return __assign(__assign({}, item), {\n from: item.from - data.min - data.max,\n to: item.to - data.min - data.max\n });\n });\n return {\n min: -data.min,\n max: -data.max,\n results: results\n };\n }\n return {\n min: min,\n max: max,\n results: results\n };\n};\nvar monthLabelText = function (value) {\n return value <= 1 ? value + ' Month' : value + ' Months';\n};\nvar renderExtender = function (minValue, maxValue) {\n return minValue > maxValue ? '-' : '+';\n};\nvar ScoreChart$1 = function (props) {\n var className = props.className,\n id = props.id,\n data = props.data,\n colors = props.colors;\n var activeTheme = useThemeProvider().activeTheme;\n useLayoutEffect(function () {\n // Initialise Chart\n var chart = create(id, XYChart);\n chart.hiddenState.properties.opacity = 0;\n chart.responsive.useDefault = false;\n chart.responsive.enabled = true;\n chart.logo.disabled = true;\n chart.padding(0, 3, 0, 5);\n // Set Chart Data\n var chartColors = colors;\n var chartData = formatData(chartColors, data);\n chart.data = chartData.results;\n // Create Y Axis\n var yAxis = chart.yAxes.push(new CategoryAxis());\n yAxis.dataFields.category = 'name';\n yAxis.renderer.grid.template.disabled = true;\n yAxis.renderer.labels.template.disabled = true;\n yAxis.renderer.ticks.template.disabled = true;\n // Create X Axis\n var xAxis = chart.xAxes.push(new ValueAxis());\n xAxis.axisRanges.create();\n xAxis.renderer.grid.template.disabled = true;\n xAxis.renderer.baseGrid.disabled = true;\n xAxis.min = chartData.min;\n xAxis.max = chartData.max;\n xAxis.strictMinMax = true;\n xAxis.renderer.ticks.template.disabled = true;\n // Format Axis Labels\n var label = xAxis.renderer.labels.template;\n label.fontSize = 10;\n label.fill = color(activeTheme.colors.text.getValue());\n var minRangeX = xAxis.axisRanges.create();\n minRangeX.maxPosition = 1;\n minRangeX.minPosition = 0;\n var maxRangeX = xAxis.axisRanges.create();\n maxRangeX.maxPosition = 1;\n maxRangeX.minPosition = 0;\n // Create and assign the new axis for min and max including labels\n xAxis.events.on('validated', function () {\n minRangeX.value = chartData.min;\n if (data.formatter === 'MONTHS') {\n minRangeX.label.text = monthLabelText(Math.abs(chartData.min));\n minRangeX.label.dx = 20;\n } else {\n minRangeX.label.text = Math.abs(chartData.min).toString();\n minRangeX.label.dx = 20;\n }\n if (data.extendedMin) {\n minRangeX.label.text = minRangeX.label.text + \" \" + renderExtender(data.max, data.min);\n }\n maxRangeX.value = chartData.max;\n if (data.formatter === 'MONTHS') {\n maxRangeX.label.text = monthLabelText(Math.abs(chartData.max));\n maxRangeX.label.dx = -20;\n } else {\n maxRangeX.label.text = Math.abs(chartData.max).toString();\n maxRangeX.label.dx = -20;\n }\n if (data.extendedMax) {\n maxRangeX.label.text = maxRangeX.label.text + \" \" + renderExtender(data.min, data.max);\n }\n });\n if (data.formatter === 'MONTHS') {\n // Hide the first and last 5%\n xAxis.renderer.minLabelPosition = 1;\n xAxis.renderer.maxLabelPosition = 0;\n } else {\n xAxis.renderer.minLabelPosition = 0.05;\n xAxis.renderer.maxLabelPosition = 0.95;\n }\n // Window width listener\n xAxis.events.on('sizechanged', function (ev) {\n var width = ev.target.pixelWidth;\n if (width > 0 && data.maxAxisTicks) {\n xAxis.renderer.minGridDistance = width / data.maxAxisTicks;\n }\n });\n // Add the month / number formatting\n xAxis.renderer.labels.template.adapter.add('text', function (valueData) {\n var value = Math.abs(Number(valueData));\n var isDecimal = Number.isInteger(value) === false;\n var labelValue = isDecimal ? value.toFixed(1) : value;\n if (data.formatter === 'MONTHS') {\n return monthLabelText(value);\n }\n return labelValue.toString();\n });\n // Create Series\n var series = chart.series.push(new ColumnSeries());\n series.dataFields.valueX = 'to';\n series.dataFields.openValueX = 'from';\n series.dataFields.categoryY = 'name';\n series.columns.template.propertyFields.fill = 'color';\n series.columns.template.strokeOpacity = 0;\n series.columns.template.height = percent(100);\n // Series Border Radius\n chart.events.on('validated', function (ev) {\n series.columns.values[0].column.cornerRadiusTopLeft = 100;\n series.columns.values[0].column.cornerRadiusBottomLeft = 100;\n var lastItem = series.columns.values[series.columns.values.length - 1];\n lastItem.column.cornerRadiusTopRight = 100;\n lastItem.column.cornerRadiusBottomRight = 100;\n });\n return function () {\n chart.dispose();\n };\n }, [data, colors, id, activeTheme]);\n return /*#__PURE__*/React.createElement(ScoreChart, {\n \"data-testid\": generate(['score-chart'], props),\n className: className,\n id: id\n });\n};\nvar ScoreChart$2 = styled(ScoreChart$1)(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$d;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DonutChart = styled.div(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar templateObject_1$e;\nvar getContainerColor$3 = themeHelpers.getContainerColor;\nvar DonutChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n activeId = props.activeId,\n onClick = props.onClick,\n _a = props.useTransitions,\n useTransitions = _a === void 0 ? true : _a;\n var activeTheme = useThemeProvider().activeTheme;\n var getChartData = function () {\n var noControlsChartData = [{\n label: 'No Controls',\n value: 1,\n colorPalette: {\n paletteIndex: 7\n }\n }];\n var segmentData = !!data.filter(function (segment) {\n return segment.value > 0;\n }).length ? data : noControlsChartData;\n return segmentData.map(function (segment) {\n var _a;\n var paletteIndex = ((_a = segment.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || 0;\n var colors = {\n default: segment.colorPalette === null ? theme.colors.borders.getValue(1) : theme.colors.dataVisWithMeaning.getValue(paletteIndex, 500).main\n };\n return __assign(__assign({}, segment), colors);\n });\n };\n useLayoutEffect(function () {\n var chart = create(id, PieChart);\n chart.logo.disabled = true;\n chart.data = getChartData();\n chart.padding(0, 0, 0, 0);\n chart.showOnInit = false;\n // Segment widths (hoverRadius and activeRadius are not used when useTransitions is false)\n var defaultRadius = !onClick && !activeId ? percent(60) : percent(75);\n var hoverRadius = percent(70);\n var activeRadius = percent(60);\n var pieSeries = chart.series.push(new PieSeries());\n pieSeries.dataFields.value = 'value';\n pieSeries.dataFields.category = 'label';\n pieSeries.slices.template.stroke = color(getContainerColor$3(activeTheme));\n pieSeries.slices.template.strokeWidth = 2;\n pieSeries.slices.template.innerRadius = defaultRadius;\n pieSeries.slices.template.strokeOpacity = 1;\n pieSeries.slices.template.togglable = false;\n pieSeries.slices.template.propertyFields.fill = 'default';\n pieSeries.slices.template.cursorOverStyle = MouseCursorStyle.pointer;\n pieSeries.showOnInit = false;\n pieSeries.hiddenState.properties.innerRadius = defaultRadius;\n // Hides lines and labels\n pieSeries.ticks.template.strokeOpacity = 0;\n pieSeries.labels.template.opacity = 0;\n // Prevents default hover and active states\n pieSeries.slices.template.states.getKey('hover').properties.scale = 1;\n pieSeries.slices.template.states.getKey('active').properties.shiftRadius = 0;\n var hoverSlice = function (item, hovered) {\n if (useTransitions) {\n item.isHover = hovered;\n item.states.getKey('hover').properties.scale = 1;\n if (item.isActive) return; // Disables hover if already active\n if (item.isHover) {\n item.innerRadius = hoverRadius;\n } else if (!item.isHover) {\n item.innerRadius = defaultRadius;\n }\n }\n };\n pieSeries.slices.template.events.on('over', function (ev) {\n hoverSlice(ev.target, true);\n });\n pieSeries.slices.template.events.on('out', function (ev) {\n hoverSlice(ev.target, false);\n });\n pieSeries.slices.template.events.on('hit', function (ev) {\n var _a;\n var allSlices = pieSeries.slices.values;\n var dataItem = ev.target.dataItem;\n var currentSliceCategory = dataItem === null || dataItem === void 0 ? void 0 : dataItem.properties.category;\n var inactiveSliceCategories = allSlices.filter(function (slice) {\n var dataItem = slice.dataItem;\n return currentSliceCategory !== (dataItem === null || dataItem === void 0 ? void 0 : dataItem.category);\n });\n // Set Active Slice On Click\n var activeSlice = pieSeries.slices.values.filter(function (item) {\n return item.isActive;\n });\n var item = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.properties.category;\n activeSlice && activeSlice.map(function (item) {\n return item.isActive = false;\n });\n var seriesSlice = ev.target;\n var resetSlice = function (slice) {\n var sliceDataItem = slice.dataItem;\n slice.innerRadius = defaultRadius;\n sliceDataItem.label.fontWeight = 'normal';\n sliceDataItem.label.fill = color(theme.colors.text.getValue(1));\n };\n var setActiveSlice = function (slice) {\n var sliceDataItem = slice.dataItem;\n inactiveSliceCategories.map(function (item) {\n return resetSlice(item);\n });\n seriesSlice.isActive = true;\n sliceDataItem.label.fontWeight = '700';\n sliceDataItem.label.fill = color(theme.colors.text.getValue(0));\n if (useTransitions) {\n // Sets the active segment style\n slice.innerRadius = activeRadius;\n }\n };\n // Update Active Slice & Reset Inactive Slice\n if (seriesSlice.isActive === true) {\n return seriesSlice.isActive = false;\n } else if (seriesSlice.isActive === false) {\n setActiveSlice(seriesSlice);\n }\n onClick && onClick(item);\n });\n // Fires on validation\n chart.events.on('datavalidated', function () {\n var defaultActiveItem = function () {\n if (pieSeries.slices.values.length > 0) {\n return pieSeries.slices.values.find(function (item) {\n var _a;\n return ((_a = item.dataItem) === null || _a === void 0 ? void 0 : _a.properties.category) === activeId;\n }) || pieSeries.slices.values[0];\n }\n };\n var sliceDataItem = defaultActiveItem();\n if (sliceDataItem) {\n sliceDataItem.isActive = true;\n if (useTransitions) {\n // Sets the active segment style\n sliceDataItem.innerRadius = activeRadius;\n }\n }\n });\n // Hides tooltips\n var tooltip = pieSeries.tooltip;\n tooltip.opacity = 0;\n pieSeries.slices.template.tooltipText = '';\n // Angle settings\n pieSeries.hiddenState.properties.opacity = 1;\n pieSeries.hiddenState.properties.endAngle = -90;\n pieSeries.hiddenState.properties.startAngle = -90;\n return function () {\n chart.dispose();\n };\n });\n return /*#__PURE__*/React.createElement(DonutChart, {\n \"data-testid\": generate(['acin-chart', 'donut-chart', id], props),\n className: className,\n id: id\n });\n};\nvar DonutChart$2 = styled(DonutChart$1)(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$f;\n\n// This named style should be the wrapper for the component i.e. the module\nvar HorizontalDumbbellPlotChart = styled.div(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$g;\nvar getNestedContainerColor = themeHelpers.getNestedContainerColor,\n getContainerColor$4 = themeHelpers.getContainerColor,\n getColorLibrary = themeHelpers.getColorLibrary;\nvar HorizontalDumbbellPlotChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n _a = props.colorPaletteName,\n colorPaletteName = _a === void 0 ? 'dataVis' : _a,\n valueColor = props.valueColor,\n rangeColor = props.rangeColor,\n minCategoryCount = props.minCategoryCount;\n var activeTheme = useThemeProvider().activeTheme;\n var getRangeColor = getColorLibrary(colorPaletteName, activeTheme).getValue((rangeColor === null || rangeColor === void 0 ? void 0 : rangeColor.paletteIndex) || 0, (rangeColor === null || rangeColor === void 0 ? void 0 : rangeColor.shade) || 500).main;\n var getValueColor = getColorLibrary(colorPaletteName, activeTheme).getValue((valueColor === null || valueColor === void 0 ? void 0 : valueColor.paletteIndex) || 0, (valueColor === null || valueColor === void 0 ? void 0 : valueColor.shade) || 500).main;\n var getStrokeColor = activeTheme.name === 'dark' ? activeTheme.colors.borders.getValue(1) : activeTheme.colors.backgrounds.getValue(0);\n useLayoutEffect(function () {\n var chart = create(id, XYChart);\n chart.data = data;\n chart.logo.disabled = true;\n chart.padding(0, 20, 0, 0);\n chart.zoomOutButton.disabled = true;\n // Vertical Axis\n var categoryAxis = chart.yAxes.push(new CategoryAxis());\n categoryAxis.renderer.ticks.template.disabled = false;\n categoryAxis.renderer.axisFills.template.disabled = true;\n categoryAxis.renderer.line.strokeOpacity = 1;\n categoryAxis.renderer.line.strokeWidth = 2;\n categoryAxis.renderer.line.stroke = color(getStrokeColor);\n categoryAxis.dataFields.category = 'label';\n categoryAxis.renderer.inversed = false;\n categoryAxis.renderer.inside = false;\n categoryAxis.renderer.grid.template.location = 0.5; // Horizontal guide lines\n categoryAxis.renderer.grid.template.strokeDasharray = '1,3';\n categoryAxis.renderer.minGridDistance = 30;\n // Disabling panning\n chart.seriesContainer.draggable = false;\n chart.seriesContainer.resizable = false;\n var disableLabel = function (opacity, target) {\n var data = target.dataItem.dataContext;\n var shouldDisable = data.rangeEnd === 0 && data.rangeStart === 0 && data.value === 0;\n if (shouldDisable) {\n return 0.5;\n }\n };\n // Vertical Axis Labels\n var label = categoryAxis.renderer.labels.template;\n label.width = 180;\n label.paddingRight = 12;\n label.paddingTop = 4;\n label.paddingBottom = 4;\n label.fontSize = 10;\n label.fontWeight = '400';\n label.textAlign = 'end';\n label.fill = color(activeTheme.colors.text.getValue(0));\n label.truncate = true;\n // Horizontal axis\n var valueAxis = chart.xAxes.push(new ValueAxis());\n valueAxis.renderer.axisFills.template.disabled = true;\n valueAxis.renderer.grid.template.stroke = color(getStrokeColor);\n valueAxis.renderer.grid.template.opacity = 0.2;\n valueAxis.renderer.baseGrid.stroke = color(getStrokeColor);\n valueAxis.renderer.baseGrid.strokeWidth = 2;\n valueAxis.renderer.baseGrid.strokeOpacity = 0.6;\n valueAxis.renderer.baseGrid.zIndex = 2;\n valueAxis.renderer.line.strokeOpacity = 1;\n valueAxis.renderer.line.strokeWidth = 2;\n valueAxis.renderer.line.stroke = color(getStrokeColor);\n valueAxis.fixedWidthGrid = true;\n var valueLabel = valueAxis.renderer.labels.template;\n valueLabel.fill = color(activeTheme.name === 'dark' ? activeTheme.colors.text.getValue(1) : activeTheme.colors.text.getValue(2));\n valueLabel.fontSize = 12;\n // Range Series (horizontal bars, with the bullets at each end)\n var rangeSeries = chart.series.push(new ColumnSeries());\n rangeSeries.clustered = false;\n rangeSeries.dataFields.categoryY = 'label';\n rangeSeries.dataFields.openValueX = 'rangeStart';\n rangeSeries.dataFields.valueX = 'rangeEnd';\n rangeSeries.sequencedInterpolation = true;\n rangeSeries.fillOpacity = 0;\n rangeSeries.stacked = true;\n rangeSeries.strokeOpacity = 1;\n rangeSeries.stroke = color(getRangeColor);\n rangeSeries.strokeWidth = 2;\n rangeSeries.columns.template.height = 0.01;\n rangeSeries.columnsContainer.layout = 'vertical';\n rangeSeries.columnsContainer.fill = color(getRangeColor);\n rangeSeries.zIndex = 4;\n var hideIfZero = function (opacity, target) {\n var data = target.dataItem.dataContext;\n var shouldHide = data.rangeEnd === 0 && data.rangeStart === 0 && data.value === 0;\n if (shouldHide) {\n return 0;\n }\n };\n var openBullet = rangeSeries.bullets.create(CircleBullet);\n openBullet.strokeWidth = 0;\n // @ts-ignore // \"Property 'locationX' does not exist on type 'Sprite'.\" - However this is shown in the documentation, is necssary to make the bullet visible.\n openBullet.locationX = 1;\n openBullet.fill = color(getRangeColor);\n openBullet.width = 7;\n openBullet.height = 7;\n openBullet.horizontalCenter = 'middle';\n openBullet.verticalCenter = 'middle';\n var closeBullet = rangeSeries.bullets.create(CircleBullet);\n closeBullet.strokeWidth = 0;\n closeBullet.fill = color(getRangeColor);\n closeBullet.stroke = closeBullet.fill;\n closeBullet.width = 7;\n closeBullet.height = 7;\n closeBullet.horizontalCenter = 'middle';\n closeBullet.verticalCenter = 'middle';\n var valueSeries = chart.series.push(new ColumnSeries());\n valueSeries.clustered = false;\n valueSeries.dataFields.categoryY = 'label';\n valueSeries.dataFields.valueX = 'value';\n valueSeries.strokeOpacity = 0;\n valueSeries.fillOpacity = 0;\n valueSeries.opacity = 0;\n valueSeries.columns.template.height = 0;\n valueSeries.columns.template.opacity = 0;\n valueSeries.verticalCenter = 'middle';\n valueSeries.zIndex = 5;\n var valueBullet = valueSeries.bullets.create(CircleBullet);\n valueBullet.stroke = color(getValueColor);\n valueBullet.width = 30;\n valueBullet.height = 30;\n valueBullet.strokeWidth = 5;\n valueBullet.fill = color(getContainerColor$4(activeTheme));\n valueBullet.verticalCenter = 'middle';\n chart.events.on('datavalidated', function (ev) {\n var cellSize = 40;\n var categoryAxis = chart.yAxes.getIndex(0);\n var availableSpace = categoryAxis.pixelHeight;\n var numberOfRows = chart.data.length;\n var contentHeight = cellSize * numberOfRows;\n // Hiding things\n label.adapter.add('fillOpacity', disableLabel);\n openBullet.adapter.add('fillOpacity', hideIfZero);\n closeBullet.adapter.add('fillOpacity', hideIfZero);\n valueBullet.adapter.add('strokeOpacity', hideIfZero);\n if (contentHeight > availableSpace) {\n // If too much content to fit available space, apply scrollbars and pre-set zoom\n categoryAxis.showOnInit = false;\n categoryAxis.start = 0;\n categoryAxis.end = 1;\n categoryAxis.keepSelection = true;\n // Scrollbar styles\n chart.scrollbarY = new Scrollbar();\n chart.scrollbarY.background.fill = color('rgba(0,0,0,0)'); // Applies transparency\n chart.scrollbarY.startGrip.background.fill = color(getNestedContainerColor(activeTheme));\n chart.scrollbarY.endGrip.background.fill = color(getNestedContainerColor(activeTheme));\n chart.scrollbarY.thumb.background.fill = color(getNestedContainerColor(activeTheme));\n categoryAxis.minZoomCount = minCategoryCount || 8;\n chart.scrollbarY.endGrip.dy = 15;\n chart.scrollbarY.startGrip.dy = -15;\n // chart.scrollbarY.startGrip.disabled = true;\n // chart.scrollbarY.endGrip.disabled = true;\n chart.scrollbarY.wheelable = true;\n // chart.scrollbarY.thumb.events.disableType('doublehit');\n } else {\n // Otherwise allow the chart to fill the available height (items will stretch)\n if (chart.svgContainer) {\n chart.svgContainer.htmlElement.style.height = availableSpace + \"px\";\n }\n }\n });\n return function () {\n chart.dispose();\n };\n }, [data, getRangeColor, getValueColor, id, minCategoryCount, activeTheme, getStrokeColor]);\n return /*#__PURE__*/React.createElement(HorizontalDumbbellPlotChart, {\n id: id,\n \"data-testid\": generate(['horizontal-dumbbell-plot-chart'], props),\n className: className,\n style: {\n width: '100%'\n }\n });\n};\nvar HorizontalDumbbellPlotChart$2 = styled(HorizontalDumbbellPlotChart$1)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$h;\n\n// This named style should be the wrapper for the component i.e. the module\nvar BoxTree = styled.div(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\\n height: 100%;\\n width: 100%;\\n\\n .customTooltip {\\n display: flex;\\n flex-direction: column;\\n align-items: left;\\n max-width: \", \";\\n line-height: \", \";\\n }\\n\\n .title {\\n font-weight: 700;\\n }\\n\\n .label-list {\\n &__item {\\n line-height: \", \";\\n padding-top: \", \";\\n }\\n }\\n\\n .remaining-labels {\\n padding-top: \", \";\\n }\\n\"], [\"\\n height: 100%;\\n width: 100%;\\n\\n .customTooltip {\\n display: flex;\\n flex-direction: column;\\n align-items: left;\\n max-width: \", \";\\n line-height: \", \";\\n }\\n\\n .title {\\n font-weight: 700;\\n }\\n\\n .label-list {\\n &__item {\\n line-height: \", \";\\n padding-top: \", \";\\n }\\n }\\n\\n .remaining-labels {\\n padding-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(70);\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$i;\nuseTheme(am4themes_animated);\nvar getContainerColor$5 = themeHelpers.getContainerColor;\nvar BoxTree$1 = function (props) {\n var className = props.className,\n data = props.data,\n id = props.id,\n selectedControl = props.selectedControl,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n useLayoutEffect(function () {\n var chart = create(id, TreeMap);\n chart.responsive.useDefault = false;\n chart.responsive.enabled = true;\n chart.logo.disabled = true;\n var buildData = function (dataItem) {\n if (dataItem.items) dataItem.items = dataItem.items.map(function (child) {\n return buildData(child);\n });\n var paletteIndex = dataItem.colorPalette.paletteIndex || 0;\n var paletteShade = dataItem.colorPalette.shade || 500;\n var colors = {\n default: activeTheme.colors.dataVisWithMeaning.getValue(paletteIndex, paletteShade).main,\n hover: activeTheme.colors.dataVisWithMeaning.getNextValue(paletteIndex, paletteShade).main\n };\n return __assign(__assign({}, dataItem), colors);\n };\n // Chart Data\n chart.data = data.map(function (child) {\n return buildData(child);\n });\n chart.maxLevels = 1;\n chart.dataFields.value = 'value';\n chart.dataFields.name = 'label';\n chart.dataFields.children = 'items';\n chart.dataFields.color = 'default';\n chart.maskBullets = true;\n chart.padding(0, 0, 0, 0);\n chart.zoomOutButton.disabled = true;\n // Breadcrumbs\n chart.homeText = selectedControl;\n var breadcrumbs = new NavigationBar();\n var formatBreadcrumbItem = function (item) {\n item.fill = color(activeTheme.colors.text.getValue(1));\n item.fontSize = 12;\n item.fontWeight = '500';\n return item;\n };\n var hoverBreadcrumb = function (item) {\n var hoverState = item.states.create('hover');\n hoverState.properties.fill = color(activeTheme.colors.text.getValue(0));\n return hoverState;\n };\n formatBreadcrumbItem(breadcrumbs.links.template);\n formatBreadcrumbItem(breadcrumbs.activeLink);\n hoverBreadcrumb(breadcrumbs.links.template);\n hoverBreadcrumb(breadcrumbs.activeLink);\n chart.navigationBar = breadcrumbs;\n var getTextColor = color(activeTheme.name === 'dark' ? activeTheme.colors.text.getValue() : activeTheme.colors.text.getValue(3));\n var getColumnTextColor = color(activeTheme.name === 'dark' ? activeTheme.colors.backgrounds.getValue(1) : activeTheme.colors.text.getValue(3));\n // Custom Tooltip\n var renderTooltip = function (ev) {\n var allLabels = ev.target.dataItem.dataContext.dataContext.description;\n var displayedLabels = allLabels.slice(0, 4);\n var remainingLabels = allLabels.slice(5);\n var remainingLabelsCount = remainingLabels.length;\n var otherLabelsText = remainingLabelsCount === 1 ? 'Other' : 'Others';\n var remainingLabelsCountText = \"+ \" + remainingLabelsCount + \" \" + otherLabelsText;\n var labelList = displayedLabels.map(function (label) {\n return \"<li class=\\\"label-list__item\\\">\" + label + \"</li>\";\n }).join('');\n if (remainingLabelsCount > 0) {\n return \"<div class=\\\"customTooltip--remaining-labels\\\" data-testid=\\\"box-tree-chart-tooltip\\\">\\n <p class=\\\"title\\\">{name}:</p>\\n\\n <ul class=\\\"label-list\\\">\\n \" + labelList + \"\\n </ul>\\n\\n <p class=\\\"remaining-labels\\\">\\n \" + remainingLabelsCountText + \"\\n </p>\\n </div>\";\n }\n return \"<div class=\\\"customTooltip\\\" data-testid=\\\"box-tree-chart-tooltip\\\">\\n <p class=\\\"title\\\">{name}:</p>\\n\\n <ul class=\\\"label-list\\\">\\n \" + labelList + \"\\n </ul>\\n </div>\";\n };\n var createSeries = function (level) {\n // Labels\n var labelItem = chart.seriesTemplates.create(level);\n var labelItem_column = labelItem.columns.template;\n labelItem_column.strokeWidth = 2;\n labelItem_column.stroke = color(getContainerColor$5(activeTheme));\n var labelItem_bullet = labelItem.bullets.push(new LabelBullet());\n labelItem_bullet.locationY = 1;\n labelItem_bullet.locationX = 0;\n labelItem_bullet.label.text = '{label}';\n labelItem_bullet.label.fill = color(getColumnTextColor);\n labelItem_bullet.label.dx = 20;\n labelItem_bullet.label.dy = 30;\n labelItem_bullet.label.horizontalCenter = 'left';\n labelItem_bullet.label.truncate = true;\n labelItem_bullet.label.maxWidth = 50;\n labelItem_bullet.label.hideOversized = true;\n // Count\n var countItem = chart.seriesTemplates.create(level);\n var countItem_bullet = countItem.bullets.push(new LabelBullet());\n countItem_bullet.locationY = 0;\n countItem_bullet.locationX = 0;\n countItem_bullet.label.text = '{value}';\n countItem_bullet.label.fill = color(getColumnTextColor);\n countItem_bullet.label.dx = 20;\n countItem_bullet.label.dy = -20;\n countItem_bullet.label.horizontalCenter = 'left';\n // Tooltips\n labelItem.tooltip.pointerOrientation = 'vertical';\n labelItem.tooltip.label.wrap = true;\n labelItem.tooltip.label.fontSize = 12;\n labelItem.tooltip.getFillFromObject = false;\n labelItem.tooltip.background.fillOpacity = 1;\n var tooltipBackgroundColor = activeTheme.colors.navBackground;\n labelItem.tooltip.background.fill = color(tooltipBackgroundColor);\n labelItem.tooltip.background.stroke = color(tooltipBackgroundColor);\n labelItem.tooltip.label.fill = color(getTextColor);\n labelItem.tooltip.label.padding(8, 8, 8, 8);\n labelItem.columns.template.events.on('over', function (ev) {\n labelItem_column.tooltipHTML = renderTooltip(ev);\n });\n var hoverState = labelItem.columns.template.states.create('hover');\n hoverState.adapter.add('fill', function (fill, target) {\n var _a, _b, _c;\n var hoverColor = (_c = (_b = (_a = target.sprite) === null || _a === void 0 ? void 0 : _a.dataItem) === null || _b === void 0 ? void 0 : _b.dataContext) === null || _c === void 0 ? void 0 : _c.dataContext.hover;\n return color(hoverColor);\n });\n // Item Click\n labelItem.columns.template.events.on('hit', function (ev) {\n var _a, _b, _c, _d, _e, _f;\n var id = (_c = (_b = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.dataContext) === null || _b === void 0 ? void 0 : _b.dataContext) === null || _c === void 0 ? void 0 : _c.itemId;\n var type = (_f = (_e = (_d = ev.target.dataItem) === null || _d === void 0 ? void 0 : _d.dataContext) === null || _e === void 0 ? void 0 : _e.dataContext) === null || _f === void 0 ? void 0 : _f.type;\n onClick(id, type);\n });\n };\n createSeries('0');\n createSeries('1');\n createSeries('2');\n createSeries('3');\n return function () {\n chart.dispose();\n };\n }, [data, selectedControl, onClick, id, activeTheme]);\n deprecatedLog('BoxTree');\n return /*#__PURE__*/React.createElement(BoxTree, {\n \"data-testid\": generate(['box-tree'], props),\n className: className,\n id: id\n });\n};\nvar BoxTree$2 = styled(BoxTree$1)(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$j;\nvar BubbleChart = styled.div(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\\n height: 100%;\\n\\n .list-item {\\n display: block;\\n }\\n\"], [\"\\n height: 100%;\\n\\n .list-item {\\n display: block;\\n }\\n\"])));\nvar templateObject_1$k;\nvar getContainerColor$6 = themeHelpers.getContainerColor,\n getColorLibrary$1 = themeHelpers.getColorLibrary;\nvar BubbleChart$1 = function (props) {\n var className = props.className,\n id = props.id,\n data = props.data,\n _a = props.colorPaletteName,\n colorPaletteName = _a === void 0 ? 'dataVisWithMeaning' : _a,\n onClick = props.onClick,\n seriesCount = props.seriesCount;\n var activeTheme = useThemeProvider().activeTheme;\n // const minRadius = 27; Removed when disabling scaling\n // const maxRadius = 100; Removed when disabling scaling\n var fixedRadius = 40; // Added when disabling scaling\n // const getTextOffset = (value: number) => {\n // const allBubbleSizes = data.map((column) => column.size);\n // const minSize = Math.min(...allBubbleSizes);\n // const maxSize = Math.max(...allBubbleSizes);\n // const valuesByMixMax = (value - minSize) / (maxSize - minSize);\n // const radius = maxRadius - minRadius;\n // const calcuatedRadius = valuesByMixMax * radius + minRadius;\n // const margin = 6;\n // return calcuatedRadius + margin;\n // };\n var getChartData = function () {\n return data.map(function (bubble) {\n var setBubbleColor = function () {\n var _a, _b, _c, _d;\n if (((_a = bubble.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) !== undefined && ((_b = bubble.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) !== undefined) {\n return getColorLibrary$1(colorPaletteName, activeTheme).getValue(((_c = bubble.colorPalette) === null || _c === void 0 ? void 0 : _c.paletteIndex) || 0, ((_d = bubble.colorPalette) === null || _d === void 0 ? void 0 : _d.shade) || 500).main;\n } else {\n return theme.colors.borders.getValue(1);\n }\n };\n return __assign(__assign({}, bubble), {\n // textOffset: getTextOffset(bubble.size), removed when disabling scaling\n textOffset: 50,\n color: setBubbleColor()\n });\n });\n };\n var getLabel = function (label) {\n var _a;\n return (_a = data.find(function (item) {\n return item.index === Number(label);\n })) === null || _a === void 0 ? void 0 : _a.label;\n };\n useLayoutEffect(function () {\n var chart = create(id, XYChart);\n chart.logo.disabled = true;\n chart.data = getChartData();\n chart.padding(0, 0, 0, 0);\n chart.zoomOutButton.disabled = true;\n chart.scrollbarX = new Scrollbar();\n chart.scrollbarX.startGrip.dx = 15;\n chart.scrollbarX.endGrip.dx = -15;\n var renderTooltip = function (target, value) {\n var descriptions = value.dataItem.dataContext.description;\n var list = descriptions.map(function (label) {\n return \"<li class=\\\"list-item\\\">\" + label + \"</li>\";\n }).join('');\n return \"\\n <ul class=\\\"description-list\\\">\\n \" + list + \"\\n </ul>\\n \";\n };\n var getStrokeColor = activeTheme.name === 'dark' ? theme.colors.borders.getValue(1) : theme.colors.backgrounds.getValue(0);\n var labelColor = color(theme.colors.text.getValue(1));\n var bubbleLabelColor = color(theme.colors.text.getValue(1));\n // X Axis\n var xAxis = chart.xAxes.push(new ValueAxis());\n xAxis.renderer.minGridDistance = 170;\n xAxis.renderer.baseGrid.strokeOpacity = 0;\n // Handles the offsets\n xAxis.min = -1;\n xAxis.max = seriesCount;\n xAxis.strictMinMax = true;\n xAxis.renderer.ticks.template.disabled = false;\n xAxis.renderer.axisFills.template.disabled = true;\n xAxis.renderer.line.strokeOpacity = 1;\n xAxis.renderer.line.strokeWidth = 2;\n xAxis.renderer.line.stroke = color(getStrokeColor);\n xAxis.renderer.grid.template.strokeOpacity = 1;\n xAxis.renderer.grid.template.stroke = color(getStrokeColor);\n var xLabel = xAxis.renderer.labels.template;\n xLabel.adapter.add('text', function (label) {\n return getLabel(label);\n });\n xLabel.maxWidth = 150;\n xLabel.contentWidth = 150;\n xLabel.truncate = false;\n xLabel.wrap = true;\n xLabel.contentAlign = 'center';\n xLabel.textAlign = 'middle';\n xLabel.fontSize = 10;\n xLabel.fontWeight = '500';\n xLabel.cursorOverStyle = MouseCursorStyle.pointer;\n xLabel.fill = labelColor;\n xLabel.events.on('hit', function (ev) {\n var _a, _b, _c;\n var labelText = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.label.currentText;\n var seriesId = (_b = data.find(function (item) {\n return item.label === labelText;\n })) === null || _b === void 0 ? void 0 : _b.seriesId;\n var seriesType = (_c = data.find(function (item) {\n return item.label === labelText;\n })) === null || _c === void 0 ? void 0 : _c.seriesType;\n if (seriesId && seriesType) {\n onClick(seriesId, seriesType);\n }\n });\n var yAxis = chart.yAxes.push(new ValueAxis());\n yAxis.renderer.minGridDistance = 54;\n yAxis.renderer.baseGrid.strokeOpacity = 0;\n yAxis.min = -30;\n yAxis.max = 130;\n yAxis.strictMinMax = true;\n yAxis.renderer.ticks.template.disabled = false;\n yAxis.renderer.axisFills.template.disabled = true;\n yAxis.renderer.line.strokeOpacity = 1;\n yAxis.renderer.line.strokeWidth = 2;\n yAxis.renderer.line.stroke = color(getStrokeColor);\n yAxis.renderer.grid.template.strokeOpacity = 1;\n yAxis.renderer.grid.template.stroke = color(getStrokeColor);\n var yLabel = yAxis.renderer.labels.template;\n yLabel.adapter.add('text', function (label) {\n switch (label) {\n case '120':\n case '-20':\n return undefined;\n default:\n return label + '%';\n }\n });\n yLabel.maxWidth = 100;\n yLabel.contentWidth = 100;\n yLabel.truncate = false;\n yLabel.wrap = true;\n yLabel.contentAlign = 'center';\n yLabel.textAlign = 'middle';\n yLabel.fontSize = 10;\n yLabel.fontWeight = '500';\n yLabel.fill = labelColor;\n var series = chart.series.push(new LineSeries());\n series.dataFields.valueY = 'y';\n series.dataFields.valueX = 'x';\n series.dataFields.value = 'size';\n series.strokeOpacity = 0;\n series.zIndex = 1;\n series.showOnInit = false;\n series.tooltip.pointerOrientation = 'vertical';\n series.tooltip.label.wrap = true;\n series.tooltip.label.fontSize = 12;\n series.tooltip.getFillFromObject = false;\n series.tooltip.background.fillOpacity = 1;\n var tooltipBackgroundColor = theme.colors.navBackground;\n series.tooltip.background.fill = color(tooltipBackgroundColor);\n series.tooltip.background.stroke = color(tooltipBackgroundColor);\n series.tooltip.label.fill = color(getContainerColor$6(activeTheme));\n series.tooltip.label.padding(8, 8, 8, 8);\n series.tooltip.dy = -20;\n var circle = series.bullets.push(new CircleBullet());\n circle.strokeOpacity = 0.9;\n circle.propertyFields.stroke = 'color';\n circle.nonScalingStroke = true;\n // circle.width = 54; removed when disabling scaling\n // circle.height = 54; removed when disabling scaling\n circle.width = fixedRadius; // Added when disabling scaling\n circle.height = fixedRadius; // Added when disabling scaling\n circle.circle.opacity = 0.9;\n circle.propertyFields.fill = 'color'; // Associates the 'color' data attribute with the fill value\n circle.adapter.add('tooltipHTML', renderTooltip);\n circle.tooltipText = 'x:{valueX} y:{valueY} customValue:{customValue}';\n circle.cursorOverStyle = MouseCursorStyle.pointer;\n var circleText = series.bullets.push(new LabelBullet());\n circleText.label.text = '{value}';\n circleText.label.fill = color(getContainerColor$6(activeTheme));\n circleText.fontSize = 14;\n circleText.fontWeight = '500';\n circleText.cursorOverStyle = MouseCursorStyle.pointer;\n circleText.clickable = false;\n circleText.interactionsEnabled = false;\n var circleLabel = series.bullets.push(new LabelBullet());\n circleLabel.label.text = '{text}';\n circleLabel.propertyFields.dy = 'textOffset';\n circleLabel.label.maxWidth = 100;\n circleLabel.label.contentWidth = 100;\n circleLabel.label.truncate = false;\n circleLabel.label.wrap = true;\n circleLabel.label.contentAlign = 'none';\n circleLabel.label.textAlign = 'middle';\n circleLabel.label.fontSize = 10;\n circleLabel.label.fontWeight = '300';\n circleLabel.label.fill = bubbleLabelColor;\n circleLabel.label.verticalCenter = 'top';\n circleLabel.clickable = false;\n circleLabel.interactionsEnabled = false;\n circle.events.on('hit', function (ev) {\n var _a, _b, _c;\n var index = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.dataContext.index;\n var seriesId = (_b = data.find(function (item) {\n return item.index === index;\n })) === null || _b === void 0 ? void 0 : _b.seriesId;\n var seriesType = (_c = data.find(function (item) {\n return item.index === index;\n })) === null || _c === void 0 ? void 0 : _c.seriesType;\n if (seriesId && seriesType) {\n setTimeout(function () {\n onClick(seriesId, seriesType);\n }, 0);\n }\n });\n series.heatRules.push({\n dataField: 'value',\n target: circle.circle,\n // min: minRadius, Removed when disabling scaling\n // max: maxRadius, Removed when disabling scaling\n min: fixedRadius,\n max: fixedRadius,\n property: 'radius'\n });\n // Create series #2\n var series2 = chart.series.push(new LineSeries());\n series2.dataFields.valueY = 'y2';\n series2.dataFields.valueX = 'x2';\n series2.dataFields.value = 'size2'; // TODO: May need to create Size2\n series2.strokeOpacity = 0;\n series2.zIndex = 1;\n series2.tooltip.pointerOrientation = 'vertical';\n series2.tooltip.label.wrap = true;\n series2.tooltip.label.fontSize = 12;\n series2.tooltip.getFillFromObject = false;\n series2.tooltip.background.fillOpacity = 1;\n series2.tooltip.background.fill = color(tooltipBackgroundColor);\n series2.tooltip.background.stroke = color(tooltipBackgroundColor);\n series2.tooltip.label.fill = color(getContainerColor$6(activeTheme));\n series2.tooltip.label.padding(8, 8, 8, 8);\n series2.tooltip.dy = -30;\n var bullet2 = series2.bullets.push(new Bullet());\n bullet2.tooltipText = 'x:{valueX} y:{valueY}';\n bullet2.layout = 'absolute';\n bullet2.rotation = 45;\n bullet2.zIndex = 3;\n bullet2.adapter.add('tooltipHTML', renderTooltip);\n var diamond = bullet2.createChild(Rectangle);\n diamond.cursorOverStyle = MouseCursorStyle.pointer;\n diamond.verticalCenter = 'middle';\n diamond.horizontalCenter = 'middle';\n diamond.width = 32;\n diamond.height = 32;\n diamond.strokeOpacity = 1;\n diamond.propertyFields.stroke = 'color';\n diamond.nonScalingStroke = true;\n diamond.zIndex = 3;\n diamond.opacity = 0.9;\n diamond.propertyFields.fill = 'color';\n var diamondText = series2.bullets.push(new LabelBullet());\n diamondText.label.text = 'NA';\n diamondText.label.fill = color(getContainerColor$6(activeTheme));\n diamondText.clickable = false;\n diamondText.interactionsEnabled = false;\n diamondText.cursorOverStyle = MouseCursorStyle.pointer;\n var diamondLabel = series2.bullets.push(new LabelBullet());\n diamondLabel.label.text = '{text}';\n diamondLabel.dy = 38;\n diamondLabel.label.maxWidth = 100;\n diamondLabel.label.contentWidth = 100;\n diamondLabel.label.truncate = false;\n diamondLabel.label.wrap = true;\n diamondLabel.label.contentAlign = 'center';\n diamondLabel.label.textAlign = 'middle';\n diamondLabel.label.fontSize = 10;\n diamondLabel.label.fontWeight = '300';\n diamondLabel.label.fill = bubbleLabelColor;\n diamond.events.on('hit', function (ev) {\n var _a, _b, _c;\n var index = (_a = ev.target.dataItem) === null || _a === void 0 ? void 0 : _a.dataContext.index;\n var seriesId = (_b = data.find(function (item) {\n return item.index === index;\n })) === null || _b === void 0 ? void 0 : _b.seriesId;\n var seriesType = (_c = data.find(function (item) {\n return item.index === index;\n })) === null || _c === void 0 ? void 0 : _c.seriesType;\n if (seriesId && seriesType) {\n setTimeout(function () {\n onClick(seriesId, seriesType);\n }, 0);\n }\n });\n // series2.heatRules.push({\n // target: diamond,\n // min: 1,\n // max: 3,\n // property: 'scale',\n // });\n // chart.events.on('datavalidated', (ev) => {\n // const cellSize = 170;\n // const availableSpace = xAxis.pixelWidth;\n // const contentWidth = cellSize * seriesCount;\n // if (contentWidth > availableSpace) {\n // xAxis.start = 0;\n // xAxis.end = 0.3;\n // chart.scrollbarX = new am4core.Scrollbar();\n // chart.scrollbarX.startGrip.disabled = true;\n // chart.scrollbarX.endGrip.disabled = true;\n // chart.scrollbarX.wheelable = true;\n // chart.scrollbarX.thumb.events.disableType('doublehit');\n // } else {\n // if (chart.svgContainer) {\n // chart.svgContainer.htmlElement.style.width = `100%`;\n // }\n // }\n // });\n return function () {\n chart.dispose();\n };\n });\n deprecatedLog('BubbleChart');\n return /*#__PURE__*/React.createElement(BubbleChart, {\n \"data-testid\": generate(['bubble-chart'], props),\n className: className,\n id: id,\n style: {\n height: '600px'\n }\n });\n};\nvar BubbleChart$2 = styled(BubbleChart$1)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$l;\nvar getContainerColor$7 = themeHelpers.getContainerColor;\nvar opacity = 0.25;\n// This named style should be the wrapper for the component i.e. the module\nvar RefresherChart = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return !p.showAllRows && p.height && css(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\\n height: \", \"px;\\n \"], [\"\\n height: \", \"px;\\n \"])), p.height);\n}, function (p) {\n return p.fillParentHeight && css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n height: 100%;\\n \"], [\"\\n height: 100%;\\n \"])));\n});\nvar RefresherChartWrapper = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\"], [\"\"])));\nvar Table = styled(Table$1)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\"], [\"\"])));\nvar TableChartHeader = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n\"], [\"\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar TableHead = styled(THead)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n\"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\n// Used to offset the text in the header to center it.. (line height issue)\nvar TableChartTableHead = styled(Text)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: relative;\\n top: 2px;\\n\"], [\"\\n position: relative;\\n top: 2px;\\n\"])));\nvar TableWrapper = styled(View)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n overflow-y: auto;\\n width: 100%;\\n\"], [\"\\n overflow-y: auto;\\n width: 100%;\\n\"])));\nvar TableChartContent = styled(View)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n overflow: scroll;\\n flex: 1;\\n\"], [\"\\n overflow: scroll;\\n flex: 1;\\n\"])));\nvar TableChartLegendKeyWrapper = styled(View)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\"], [\"\"])));\nvar TableChartLegend = styled.div(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n /* margin-top: \", \"; */\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n /* margin-top: \", \"; */\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, TableChartLegendKeyWrapper, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar TabWrapper = styled(View)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: start;\\n flex-direction: row;\\n align-items: center;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: start;\\n flex-direction: row;\\n align-items: center;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar TabTitle = styled(Text)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar TableChartAlert = styled(Alert)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar TableRow = styled(Row)(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n border-bottom: none;\\n\\n \", \"\\n\"], [\"\\n border-bottom: none;\\n\\n \", \"\\n\"])), function (p) {\n return p.hasBorder && css(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n});\nvar Logo = styled(Logo$1)(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar LabelCell = styled(Cell)(templateObject_22 || (templateObject_22 = __makeTemplateObject([\"\\n height: \", \";\\n padding-top: 2px;\\n padding-bottom: 2px;\\n align-items: center;\\n\\n \", \" {\\n position: relative;\\n top: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n height: \", \";\\n padding-top: 2px;\\n padding-bottom: 2px;\\n align-items: center;\\n\\n \", \" {\\n position: relative;\\n top: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(7);\n}, Logo, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.hasBorder && css(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(3);\n });\n}, function (p) {\n return p.isClickable && css(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n}, function (p) {\n return p.isOpaque && css(templateObject_21 || (templateObject_21 = __makeTemplateObject([\"\\n opacity: \", \";\\n \"], [\"\\n opacity: \", \";\\n \"])), opacity);\n});\nvar CellContent = styled.span(templateObject_23 || (templateObject_23 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar TableChartCell = styled(LabelCell)(templateObject_24 || (templateObject_24 = __makeTemplateObject([\"\\n position: relative;\\n padding: 0 \", \";\\n\"], [\"\\n position: relative;\\n padding: 0 \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar TableChartRow = styled(View)(templateObject_25 || (templateObject_25 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar TableChartRowCells = styled(View)(templateObject_26 || (templateObject_26 = __makeTemplateObject([\"\\n display: flex;\\n padding: 2px 0;\\n\"], [\"\\n display: flex;\\n padding: 2px 0;\\n\"])));\nvar TableChartRowSeperator = styled.div(templateObject_28 || (templateObject_28 = __makeTemplateObject([\"\\n position: absolute;\\n width: calc(100% - \", \");\\n height: 100%;\\n left: 0;\\n top: 0;\\n margin: 0 \", \";\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n width: calc(100% - \", \");\\n height: 100%;\\n left: 0;\\n top: 0;\\n margin: 0 \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return !p.hideZeroLine && css(templateObject_27 || (templateObject_27 = __makeTemplateObject([\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 1px solid \", \";\\n height: 100%;\\n width: 1px;\\n left: \", \";\\n z-index: 1;\\n }\\n \"], [\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 1px solid \", \";\\n height: 100%;\\n width: 1px;\\n left: \", \";\\n z-index: 1;\\n }\\n \"])), getContainerColor$7(p.activeTheme), p.value);\n});\nvar TableChartRowBlock = styled.div(templateObject_31 || (templateObject_31 = __makeTemplateObject([\"\\n background: transparent;\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n background: transparent;\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.variant === 'small' ? p.theme.spacing.getSize(6) : '38px';\n}, function (p) {\n return p.isClickable && css(templateObject_29 || (templateObject_29 = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n}, function (p) {\n return p.isOpaque && css(templateObject_30 || (templateObject_30 = __makeTemplateObject([\"\\n opacity: \", \";\\n transition: 0.2s ease-in-out;\\n\\n &:hover {\\n opacity: 1;\\n }\\n \"], [\"\\n opacity: \", \";\\n transition: 0.2s ease-in-out;\\n\\n &:hover {\\n opacity: 1;\\n }\\n \"])), opacity);\n});\nvar TableChartRowBlockLabel = styled(Text)(templateObject_32 || (templateObject_32 = __makeTemplateObject([\"\\n color: white;\\n overflow: visible;\\n letter-spacing: 1px;\\n\"], [\"\\n color: white;\\n overflow: visible;\\n letter-spacing: 1px;\\n\"])));\nvar TooltipTrigger = styled.div(templateObject_33 || (templateObject_33 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\"])));\nvar RadioSelect = styled(Radio)(templateObject_34 || (templateObject_34 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar TableChartRowLabel = styled(Text)(templateObject_35 || (templateObject_35 = __makeTemplateObject([\"\\n position: relative;\\n top: -1px;\\n\"], [\"\\n position: relative;\\n top: -1px;\\n\"])));\nvar templateObject_1$m, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35;\nvar NAME_HEADER = 'name';\nvar VALUE_HEADER = 'value';\nvar Chart = /** @class */function () {\n function Chart(data, theme, variant, largestFirst) {\n this.theme = theme;\n this.variant = variant;\n this.data = data.data;\n this.keys = new Map(__spread(data.negativeKeys, data.positiveKeys).map(function (item) {\n return [item.key, item];\n }));\n this.positiveKeys = data.positiveKeys;\n this.negativeKeys = data.negativeKeys;\n this.positiveKeyIds = this.positiveKeys.map(function (item) {\n return item.key;\n });\n this.negativeKeyIds = this.negativeKeys.map(function (item) {\n return item.key;\n });\n this.range = this.getRange();\n this.hideLegend = data === null || data === void 0 ? void 0 : data.hideLegend;\n this.largestFirst = largestFirst;\n // This is the middle percent for the split of negative and positive blocks\n this.middlePercent = this.getTotalValueAsPercent(this.range.negative);\n }\n /**\r\n * Get the range of the full dataset\r\n */\n Chart.prototype.getRange = function () {\n var _this = this;\n return this.data.reduce(function (totalAcc, item) {\n var rowRange = _this.getRowRange(item.values);\n var newValue = {\n negative: rowRange.negative > totalAcc.negative ? rowRange.negative : totalAcc.negative,\n positive: rowRange.positive > totalAcc.positive ? rowRange.positive : totalAcc.positive\n };\n return __assign(__assign({}, newValue), {\n total: newValue.negative + newValue.positive\n });\n }, {\n negative: 0,\n positive: 0,\n total: 0\n });\n };\n /**\r\n * Get the rows full range (min / max)\r\n */\n Chart.prototype.getRowRange = function (data) {\n var _this = this;\n return data.reduce(function (acc, item) {\n // Add the positive\n if (_this.positiveKeyIds.includes(item.key)) {\n return __assign(__assign({}, acc), {\n positive: acc.positive + (item.total || 0)\n });\n }\n // Now add the negative\n if (_this.negativeKeyIds.includes(item.key)) {\n return __assign(__assign({}, acc), {\n negative: acc.negative + (item.total || 0)\n });\n }\n return acc;\n }, {\n negative: 0,\n positive: 0\n });\n };\n /**\r\n * Get a value as a percent\r\n */\n Chart.prototype.getTotalValueAsPercent = function (value) {\n return value / this.range.total * 100;\n };\n /**\r\n * Transform the actual values into chart blocks\r\n */\n Chart.prototype.transformToBlocks = function (data) {\n var _this = this;\n var defaultColor = this.theme ? this.theme.colors.borders.getValue(1) : 'transparent';\n var blocks = __spread(data).reduce(function (acc, item) {\n var _a;\n var colorPalette = (_a = _this.keys.get(item.key)) === null || _a === void 0 ? void 0 : _a.colorPalette;\n var block = {\n key: item.key,\n name: item.name || item.key,\n value: _this.variant === 'default' ? _this.getTotalValueAsPercent(item.total || 0) : (item === null || item === void 0 ? void 0 : item.percentage) || item.total,\n total: item.total,\n colorPalette: colorPalette,\n transparent: false,\n firstPositive: false,\n percentage: item.percentage || undefined,\n background: colorPalette && _this.theme ? _this.theme.colors.dataVisWithMeaning.getValue(colorPalette.paletteIndex || undefined, colorPalette.shade || 500).main : defaultColor,\n id: item.id,\n info: item.info ? {\n id: item.info.id || undefined,\n filters: item.info.filters || undefined,\n configuration: item.info.configuration || undefined,\n label: item.info.label || undefined\n } : undefined\n };\n //We only want values greater than 0 showing.\n return block.value && block.value > 0 ? __spread(acc, [block]) : acc;\n }, []);\n // Work out which is the first positive block\n var firstPositiveKey;\n blocks.forEach(function (item, index) {\n if (item.key && _this.positiveKeyIds.includes(item.key) && !firstPositiveKey) {\n firstPositiveKey = item.key;\n blocks[index] = __assign(__assign({}, item), {\n firstPositive: true\n });\n }\n });\n return blocks;\n };\n /**\r\n * Build chart row (with)\r\n */\n Chart.prototype.build = function (data) {\n var rowRange = this.getRowRange(data);\n var remainingNegative = this.range.negative - rowRange.negative;\n var remainingPositive = this.range.positive - rowRange.positive;\n var initialNegativePercent = this.getTotalValueAsPercent(remainingNegative);\n var initialPositivePercent = this.getTotalValueAsPercent(remainingPositive);\n var renderRemainder = function (initial, remainder) {\n if (remainder) {\n return [{\n value: initial,\n total: remainder,\n colorPalette: null,\n background: 'transparent',\n transparent: true,\n firstPositive: false,\n key: '',\n name: ''\n }];\n }\n return [];\n };\n return __spread(renderRemainder(initialNegativePercent, remainingNegative), this.transformToBlocks(data), renderRemainder(initialPositivePercent, remainingPositive));\n };\n Chart.prototype.sort = function (data, sortField) {\n var _this = this;\n var sortedData = data.slice().sort(function (a, b) {\n var noNegatives = _this.negativeKeys.length === 0;\n if (_this.largestFirst && noNegatives) {\n var aRange = _this.getRowRange(a.values);\n var bRange = _this.getRowRange(b.values);\n if (aRange.positive > bRange.positive) {\n return -1;\n }\n if (aRange.positive < bRange.positive) {\n return 1;\n }\n return 0;\n }\n if (_this.largestFirst) {\n var aRange = _this.getRowRange(a.values);\n var bRange = _this.getRowRange(b.values);\n var aRangeTotal = aRange.negative + aRange.positive;\n var bRangeTotal = bRange.negative + bRange.positive;\n if (sortField.direction === 'ASC') {\n if (aRangeTotal > bRangeTotal) {\n return -1;\n }\n if (aRangeTotal < bRangeTotal) {\n return 1;\n }\n }\n if (sortField.direction === 'DESC') {\n if (aRangeTotal > bRangeTotal) {\n return 1;\n }\n if (aRangeTotal < bRangeTotal) {\n return -1;\n }\n }\n return 0;\n }\n if (sortField.name === NAME_HEADER) {\n var aName = a.name.toLowerCase();\n var bName = b.name.toLowerCase();\n if (sortField.direction === 'ASC') {\n if (aName < bName) {\n return -1;\n }\n if (aName > bName) {\n return 1;\n }\n return 0;\n }\n if (sortField.direction === 'DESC') {\n if (aName < bName) {\n return 1;\n }\n if (aName > bName) {\n return -1;\n }\n return 0;\n }\n return 0;\n }\n if (sortField.name === VALUE_HEADER) {\n var aRange = _this.getRowRange(a.values);\n var bRange = _this.getRowRange(b.values);\n if (sortField.direction === 'ASC') {\n if (aRange.negative > bRange.negative) {\n return -1;\n }\n if (aRange.negative < bRange.negative) {\n return 1;\n }\n }\n if (sortField.direction === 'DESC') {\n if (aRange.negative > bRange.negative) {\n return 1;\n }\n if (aRange.negative < bRange.negative) {\n return -1;\n }\n }\n return 0;\n }\n return 0;\n });\n return sortedData.map(function (item) {\n return {\n item: item,\n dataChart: _this.variant === 'free' ? _this.transformToBlocks(item.values) : _this.build(item.values)\n };\n });\n };\n return Chart;\n}();\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar RefresherChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n onRowClick = props.onRowClick,\n onValueClick = props.onValueClick,\n selected = props.selected,\n id = props.id,\n _a = props.showRadios,\n showRadios = _a === void 0 ? false : _a,\n onSort = props.onSort,\n initialSortField = props.initialSortField,\n _b = props.showAllRows,\n showAllRows = _b === void 0 ? false : _b,\n _c = props.hideCounts,\n hideCounts = _c === void 0 ? false : _c,\n _d = props.rowHeight,\n rowHeight = _d === void 0 ? 'default' : _d,\n _e = props.variant,\n variant = _e === void 0 ? 'default' : _e,\n tooltipContents = props.tooltipContents,\n showFolders = props.showFolders,\n enableDrillDown = props.enableDrillDown,\n activeItemId = props.activeItemId,\n setActiveItem = props.setActiveItem,\n labelsCanWrap = props.labelsCanWrap,\n fillParentHeight = props.fillParentHeight,\n hideLegend = props.hideLegend,\n largestFirst = props.largestFirst,\n preventInteraction = props.preventInteraction,\n useNameOverTotal = props.useNameOverTotal,\n showAcinLogoOnRows = props.showAcinLogoOnRows,\n _f = props.firstColumnWidth,\n firstColumnWidth = _f === void 0 ? '220' : _f;\n var theme = useTheme$1();\n var activeTheme = useThemeProvider().activeTheme;\n var _g = __read(React.useState({\n name: (initialSortField === null || initialSortField === void 0 ? void 0 : initialSortField.name) || VALUE_HEADER,\n direction: (initialSortField === null || initialSortField === void 0 ? void 0 : initialSortField.direction) || ISortDirection.Asc\n }), 2),\n sortField = _g[0],\n setSortField = _g[1];\n var _h = __read(React.useState(activeItemId), 2),\n highlightedItem = _h[0],\n setHighlightedItem = _h[1];\n var handleRowClick = function (item) {\n if (enableDrillDown) {\n if (showFolders && onRowClick && (item === null || item === void 0 ? void 0 : item.info)) {\n onRowClick(item);\n }\n } else {\n onRowClick && onRowClick(item);\n }\n };\n React.useEffect(function () {\n setHighlightedItem(activeItemId);\n }, [activeItemId]);\n React.useEffect(function () {\n // check if the selected, is in the data set, if it is not then set it to the first row.\n if (showRadios && onRowClick) {\n if (!(data === null || data === void 0 ? void 0 : data.data.find(function (item) {\n return item.id === (selected === null || selected === void 0 ? void 0 : selected.id);\n }))) {\n var firstRow = data === null || data === void 0 ? void 0 : data.data[0];\n if (firstRow) {\n onRowClick(firstRow);\n } else {\n onRowClick();\n }\n }\n }\n }, [data === null || data === void 0 ? void 0 : data.data, selected === null || selected === void 0 ? void 0 : selected.id, onRowClick, showRadios]);\n if (!data || data.data.length === 0) return null;\n var legendItems = __spread(data.negativeKeys, data.positiveKeys).map(function (item) {\n return {\n label: item.label,\n colorPalette: item.colorPalette || undefined\n };\n });\n var chart = new Chart(data, theme, variant, largestFirst);\n var onSortClick = function (name, direction) {\n var sortDir = direction === 'ASC' ? ISortDirection.Desc : ISortDirection.Asc;\n if (onSort) {\n setSortField({\n name: name,\n direction: sortDir\n });\n onSort({\n name: name,\n direction: sortDir\n });\n } else {\n setSortField({\n name: name,\n direction: sortDir\n });\n }\n };\n var renderTooltipContent = function (item) {\n if (tooltipContents) {\n return tooltipContents(item);\n }\n return undefined;\n };\n var renderFirstColumn = function (item, itemIsClickable, isOpaque) {\n if (showRadios && item && onRowClick) {\n return /*#__PURE__*/React.createElement(LabelCell, {\n isOpaque: isOpaque\n }, /*#__PURE__*/React.createElement(RadioSelect, {\n \"data-testid\": \"radio-option-\" + (item === null || item === void 0 ? void 0 : item.id),\n onChange: function () {\n return onRowClick(item);\n },\n isChecked: item.id === (selected === null || selected === void 0 ? void 0 : selected.id)\n }));\n }\n if (showFolders && itemIsClickable && onRowClick) {\n return /*#__PURE__*/React.createElement(LabelCell, {\n onClick: function () {\n return onRowClick(item);\n },\n isOpaque: isOpaque,\n isClickable: itemIsClickable\n }, /*#__PURE__*/React.createElement(IconFolderClosed, {\n \"data-testid\": \"folder-icon-\" + (item === null || item === void 0 ? void 0 : item.id)\n }));\n }\n if (showFolders && !itemIsClickable && onRowClick) {\n return /*#__PURE__*/React.createElement(LabelCell, {\n width: \"30px\"\n });\n }\n return null;\n };\n var handleBlockClick = function (rowId, item) {\n var _a;\n var infoId = (_a = item === null || item === void 0 ? void 0 : item.info) === null || _a === void 0 ? void 0 : _a.id;\n if (!item.info) {\n // Leave this in while in development please!\n // It is there so developers / testers know whether there is missing data\n console.log('Item does not contain info, click another, or update data');\n }\n if (onValueClick) {\n onValueClick(rowId + \"|\" + item.key);\n }\n if (infoId !== highlightedItem) {\n infoId && setHighlightedItem(infoId);\n setActiveItem && setActiveItem(item);\n } else {\n setHighlightedItem(undefined);\n setActiveItem && setActiveItem(undefined);\n }\n };\n var checkHeight = function () {\n var _a;\n var noOfRows = (_a = chart.data) === null || _a === void 0 ? void 0 : _a.length;\n var getRowHeight = function () {\n switch (rowHeight) {\n default:\n case 'default':\n return 38;\n case 'small':\n return 24;\n }\n };\n var maxHeight = 300;\n var sumOfRows = noOfRows * getRowHeight();\n if (sumOfRows > maxHeight) {\n return maxHeight;\n }\n return undefined;\n };\n var showLegend = !(hideLegend || (chart === null || chart === void 0 ? void 0 : chart.hideLegend));\n return /*#__PURE__*/React.createElement(RefresherChart, {\n \"data-testid\": generate(['acin-chart', 'refresher-chart', id], props),\n className: className,\n id: id,\n showAllRows: showAllRows,\n height: checkHeight(),\n fillParentHeight: fillParentHeight\n }, /*#__PURE__*/React.createElement(TableChartContent, null, /*#__PURE__*/React.createElement(TableWrapper, null, /*#__PURE__*/React.createElement(Table, null, /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(Row, null, showRadios || showFolders ? /*#__PURE__*/React.createElement(HeadCell, {\n width: \"30px\"\n }) : /*#__PURE__*/React.createElement(React.Fragment, null), data.nameHeader && ( /*#__PURE__*/React.createElement(HeadCell, {\n key: data.nameHeader.key,\n onClick: function () {\n return onSortClick(NAME_HEADER, sortField.direction);\n },\n sortable: data.nameHeader.sortable,\n direction: sortField.name === NAME_HEADER ? sortField.direction : undefined,\n width: firstColumnWidth + \"px\"\n }, data.nameHeader.name)), data.secondaryHeader && ( /*#__PURE__*/React.createElement(HeadCell, {\n key: data.secondaryHeader.key,\n width: \"140px\"\n }, data.secondaryHeader.name)), /*#__PURE__*/React.createElement(HeadCell, {\n key: data.valueHeader.key,\n onClick: function () {\n return onSortClick(VALUE_HEADER, sortField.direction);\n },\n sortable: data.valueHeader.sortable,\n direction: sortField.name === VALUE_HEADER ? sortField.direction : undefined\n }, data.valueHeader.name))), /*#__PURE__*/React.createElement(TBody, null, chart.sort(data.data, sortField).map(function (_a) {\n var item = _a.item,\n dataChart = _a.dataChart;\n var rowId = item.id;\n var showName = item.showName === false ? false : true;\n var hasRowBorder = !data.secondaryHeader || !showName;\n var hasCellBorder = !!data.secondaryHeader && showName;\n var renderGapCell = data.secondaryHeader && !showName && (showFolders || showRadios);\n var noHighlightedItem = !highlightedItem;\n var checkRowForHighlights = item.values.filter(function (block) {\n return (block === null || block === void 0 ? void 0 : block.info) && block.info.id === highlightedItem;\n }).length > 0;\n var rowIncludesHighlight = noHighlightedItem || checkRowForHighlights;\n var itemIsClickable = enableDrillDown ? showFolders ? Boolean(item === null || item === void 0 ? void 0 : item.info) && !!onRowClick : false : !!onRowClick;\n return /*#__PURE__*/React.createElement(TableRow, {\n key: item.id,\n hasBorder: hasRowBorder,\n \"data-testid\": generateCypressId(\"row-\" + rowId)\n }, renderGapCell ? ( /*#__PURE__*/\n // render empty cell on second row for chart with\n // secondaryHeader, without the name visible and with folders or radios\n React.createElement(LabelCell, {\n width: \"30px\"\n })) : renderFirstColumn(item, itemIsClickable, !rowIncludesHighlight), data.nameHeader && (showName ? ( /*#__PURE__*/React.createElement(LabelCell, {\n noWrap: !labelsCanWrap,\n width: \"220px\",\n tooltipText: item.name,\n onClick: function () {\n return handleRowClick(item);\n },\n size: \"small\",\n isClickable: !preventInteraction,\n isOpaque: !rowIncludesHighlight,\n \"data-testid\": generateCypressId(rowId) + \"-name \" + (highlightedItem && rowIncludesHighlight ? generateCypressId(rowId) + \"-name-is-highlighted--\" + rowIncludesHighlight : '')\n }, showAcinLogoOnRows && /*#__PURE__*/React.createElement(Logo, null), item.name)) : ( /*#__PURE__*/React.createElement(LabelCell, {\n width: \"220px\",\n size: \"small\"\n }))), item.secondaryValue && ( /*#__PURE__*/React.createElement(LabelCell, {\n noWrap: true,\n width: \"140px\",\n tooltipText: item.secondaryValue.text,\n size: \"small\",\n hasBorder: hasCellBorder,\n isOpaque: !rowIncludesHighlight,\n \"data-testid\": generateCypressId(rowId) + \"-secondary-value \" + (highlightedItem && rowIncludesHighlight ? generateCypressId(rowId) + \"-secondary-value-is-highlighted--\" + rowIncludesHighlight : '')\n }, /*#__PURE__*/React.createElement(CellContent, null, item.secondaryValue.isAcin && /*#__PURE__*/React.createElement(Logo, null), item.secondaryValue.text))), /*#__PURE__*/React.createElement(TableChartCell, {\n hasBorder: hasCellBorder,\n isOpaque: !rowIncludesHighlight\n }, /*#__PURE__*/React.createElement(TableChartRowSeperator, {\n value: chart.middlePercent + \"%\",\n hideZeroLine: variant === 'free' || !!item.secondaryValue,\n activeTheme: activeTheme\n }), /*#__PURE__*/React.createElement(TableChartRow, null, /*#__PURE__*/React.createElement(TableChartRowCells, null, dataChart.map(function (item, index) {\n var _a;\n var isOpaque = highlightedItem ? ((_a = item === null || item === void 0 ? void 0 : item.info) === null || _a === void 0 ? void 0 : _a.id) !== highlightedItem : false;\n return /*#__PURE__*/React.createElement(TableChartRowBlock, {\n key: item.key || index,\n firstPositive: item.firstPositive,\n style: {\n background: item.background,\n width: item.value + \"%\"\n },\n onClick: function () {\n return !preventInteraction && handleBlockClick(rowId, item);\n },\n variant: rowHeight,\n isOpaque: isOpaque,\n isClickable: !(preventInteraction === true)\n }, !item.transparent && (!hideCounts ? ( /*#__PURE__*/React.createElement(TableChartRowBlockLabel, {\n size: -1,\n weight: 500,\n \"data-testid\": generateCypressId(\"block-\" + (item.id ? item.id : item.name)) + \" \" + (highlightedItem ? generateCypressId(\"block-\" + (item.id ? item.id : item.name)) + \"-is-highlighted--\" + !!(highlightedItem && (item === null || item === void 0 ? void 0 : item.info) && item.info.id === highlightedItem) : '')\n }, useNameOverTotal ? item.name : item.total)) : ( /*#__PURE__*/React.createElement(Tooltip, {\n content: renderTooltipContent(item)\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(TooltipTrigger, {\n ref: tooltipRef\n });\n }))));\n })))));\n }))))), showLegend && ( /*#__PURE__*/React.createElement(TableChartLegend, {\n \"data-testid\": \"refresher-chart-legend\"\n }, legendItems.map(function (item, index) {\n return /*#__PURE__*/React.createElement(TableChartLegendKeyWrapper, {\n key: item.label + '-wrapper-' + index\n }, /*#__PURE__*/React.createElement(ChartLegendKey, {\n key: item.label + '-label-' + index,\n item: item\n }));\n }))));\n};\nvar totalPadding = 10;\nvar singlePadding = totalPadding / 2;\nvar VerticalRefresherChart = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n return p.fillParentHeight && css(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n \"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n \"])));\n});\nvar ChartHolder = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n overflow: auto;\\n justify-content: start;\\n display: flex;\\n position: relative;\\n flex-direction: column;\\n\\n \", \"\\n\"], [\"\\n overflow: auto;\\n justify-content: start;\\n display: flex;\\n position: relative;\\n flex-direction: column;\\n\\n \", \"\\n\"])), function (p) {\n return p.fillParentHeight && css(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n flex: 1;\\n \"], [\"\\n flex: 1;\\n \"])));\n});\nvar ScrollWrapper = styled(View)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n width: fit-content;\\n display: flex;\\n flex-shrink: 0;\\n align-items: stretch;\\n height: 100%;\\n flex-direction: column;\\n margin: 0 auto; // necessary to keep the chart columns centralised\\n height: \", \"px;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n width: fit-content;\\n display: flex;\\n flex-shrink: 0;\\n align-items: stretch;\\n height: 100%;\\n flex-direction: column;\\n margin: 0 auto; // necessary to keep the chart columns centralised\\n height: \", \"px;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.height;\n}, function (p) {\n return p.showXAxis && css(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n padding-left: \", \";\\n \"], [\"\\n padding-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(15);\n });\n}, function (p) {\n return p.fillParentHeight && css(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n height: auto !important;\\n flex: 1;\\n flex-grow: 1;\\n justify-content: stretch;\\n \"], [\"\\n height: auto !important;\\n flex: 1;\\n flex-grow: 1;\\n justify-content: stretch;\\n \"])));\n});\nvar Axis = styled.ul(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\\n position: absolute;\\n left: -40px;\\n top: 0;\\n right: auto;\\n bottom: -1px;\\n width: 40px;\\n text-align: right;\\n\"], [\"\\n position: absolute;\\n left: -40px;\\n top: 0;\\n right: auto;\\n bottom: -1px;\\n width: 40px;\\n text-align: right;\\n\"])));\nvar Marker = styled.li(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject([\"\\n position: absolute;\\n right: 10px;\\n\\n &:after {\\n content: '';\\n width: \", \";\\n height: 1px;\\n background: \", \";\\n display: block;\\n position: absolute;\\n right: \", \";\\n top: 7px;\\n }\\n\\n &:nth-child(1) {\\n top: 0%;\\n }\\n\\n &:nth-child(3) {\\n top: 25%;\\n }\\n\\n &:nth-child(4) {\\n top: 50%;\\n }\\n\\n &:nth-child(5) {\\n top: 75%;\\n }\\n\\n &:nth-child(6) {\\n bottom: -8px;\\n\\n &:after {\\n display: none;\\n }\\n }\\n\"], [\"\\n position: absolute;\\n right: 10px;\\n\\n &:after {\\n content: '';\\n width: \", \";\\n height: 1px;\\n background: \", \";\\n display: block;\\n position: absolute;\\n right: \", \";\\n top: 7px;\\n }\\n\\n &:nth-child(1) {\\n top: 0%;\\n }\\n\\n &:nth-child(3) {\\n top: 25%;\\n }\\n\\n &:nth-child(4) {\\n top: 50%;\\n }\\n\\n &:nth-child(5) {\\n top: 75%;\\n }\\n\\n &:nth-child(6) {\\n bottom: -8px;\\n\\n &:after {\\n display: none;\\n }\\n }\\n\"])), function (p) {\n return p.width - 10 + \"px\";\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return \"-\" + p.width + \"px\";\n});\nvar Label = styled(Text)(templateObject_10$1 || (templateObject_10$1 = __makeTemplateObject([\"\\n font-size: 11px;\\n line-height: 1rem;\\n\"], [\"\\n font-size: 11px;\\n line-height: 1rem;\\n\"])));\nvar AxisLabel = styled(Label)(templateObject_11$1 || (templateObject_11$1 = __makeTemplateObject([\"\\n transform: rotate(-90deg);\\n top: 50%;\\n position: absolute;\\n white-space: nowrap;\\n right: 20px;\\n\"], [\"\\n transform: rotate(-90deg);\\n top: 50%;\\n position: absolute;\\n white-space: nowrap;\\n right: 20px;\\n\"])));\n// Container for the lower part of the chart\n// Its height is determined by the longest label\nvar Labels = styled(View)(templateObject_13$1 || (templateObject_13$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n padding-top: \", \";\\n border-top: 1px solid \", \";\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n padding-top: \", \";\\n border-top: 1px solid \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.isOpaque && css(templateObject_12$1 || (templateObject_12$1 = __makeTemplateObject([\"\\n opacity: \", \";\\n \"], [\"\\n opacity: \", \";\\n \"])), opacity);\n});\n// Container for the upper part of the chart\n// Occupies the remaining space\nvar Columns = styled.div(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: stretch;\\n height: 100%;\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n align-items: stretch;\\n height: 100%;\\n\\n \", \"\\n\"])), function (p) {\n return p.showYAxis && css(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([\"\\n padding-top: 8px;\\n position: relative;\\n border-left: 1px solid \", \";\\n \"], [\"\\n padding-top: 8px;\\n position: relative;\\n border-left: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n});\nvar Column = styled(View)(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin: 0 2px;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n margin: 0 2px;\\n\"])));\nvar BlockWrapper = styled(View)(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n width: \", \";\\n padding: 0 \", \";\\n box-sizing: content-box;\\n justify-content: end;\\n flex-grow: 0;\\n flex-shrink: 0;\\n overflow: visible;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n width: \", \";\\n padding: 0 \", \";\\n box-sizing: content-box;\\n justify-content: end;\\n flex-grow: 0;\\n flex-shrink: 0;\\n overflow: visible;\\n\"])), function (p) {\n return p.width + \"px\";\n}, singlePadding + \"px\");\nvar Block = styled(TableChartRowBlock)(templateObject_19$1 || (templateObject_19$1 = __makeTemplateObject([\"\\n width: 100%;\\n overflow: hidden;\\n\\n \", \"\\n\"], [\"\\n width: 100%;\\n overflow: hidden;\\n\\n \", \"\\n\"])), function (p) {\n return p.useMinHeight && css(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject([\"\\n min-height: \", \";\\n \"], [\"\\n min-height: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n});\nvar BlockCount = styled(Text)(templateObject_20$1 || (templateObject_20$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar LabelWrapper = styled(View)(templateObject_22$1 || (templateObject_22$1 = __makeTemplateObject([\"\\n position: relative;\\n top: -1px;\\n margin-top: \", \";\\n white-space: wrap;\\n min-width: \", \";\\n max-width: \", \";\\n text-align: center;\\n margin: 0 2px;\\n padding: 0 \", \";\\n display: -webkit-box;\\n -webkit-line-clamp: 4;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n top: -1px;\\n margin-top: \", \";\\n white-space: wrap;\\n min-width: \", \";\\n max-width: \", \";\\n text-align: center;\\n margin: 0 2px;\\n padding: 0 \", \";\\n display: -webkit-box;\\n -webkit-line-clamp: 4;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.width + totalPadding + \"px\";\n}, function (p) {\n return p.width + totalPadding + \"px\";\n}, singlePadding + \"px\", function (p) {\n return p.isOpaque && css(templateObject_21$1 || (templateObject_21$1 = __makeTemplateObject([\"\\n opacity: \", \";\\n \"], [\"\\n opacity: \", \";\\n \"])), opacity);\n});\nvar BlockWithCount = styled(View)(templateObject_23$1 || (templateObject_23$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n justify-content: end;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex: 1;\\n justify-content: end;\\n\"])));\nvar OuterCount = styled(Text)(templateObject_25$1 || (templateObject_25$1 = __makeTemplateObject([\"\\n align-self: center;\\n\\n \", \"\\n\"], [\"\\n align-self: center;\\n\\n \", \"\\n\"])), function (p) {\n return p.isOpaque && css(templateObject_24$1 || (templateObject_24$1 = __makeTemplateObject([\"\\n opacity: \", \";\\n \"], [\"\\n opacity: \", \";\\n \"])), opacity);\n});\nvar Icon = styled(IconFolderClosed)(templateObject_26$1 || (templateObject_26$1 = __makeTemplateObject([\"\\n position: relative;\\n top: -2px;\\n\"], [\"\\n position: relative;\\n top: -2px;\\n\"])));\nvar templateObject_1$n, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1, templateObject_6$1, templateObject_7$1, templateObject_8$1, templateObject_9$1, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16$1, templateObject_17$1, templateObject_18$1, templateObject_19$1, templateObject_20$1, templateObject_21$1, templateObject_22$1, templateObject_23$1, templateObject_24$1, templateObject_25$1, templateObject_26$1;\nvar VerticalRefresherChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n onRowClick = props.onRowClick,\n onValueClick = props.onValueClick,\n id = props.id,\n _a = props.hideCounts,\n hideCounts = _a === void 0 ? false : _a,\n _b = props.columnWidth,\n columnWidth = _b === void 0 ? 80 : _b,\n _c = props.chartHeight,\n chartHeight = _c === void 0 ? 600 : _c,\n tooltipContents = props.tooltipContents,\n showFolders = props.showFolders,\n enableDrillDown = props.enableDrillDown,\n activeItemId = props.activeItemId,\n setActiveItem = props.setActiveItem,\n _d = props.sortField,\n sortField = _d === void 0 ? {\n name: VALUE_HEADER,\n direction: ISortDirection.Asc\n } : _d,\n fillParentHeight = props.fillParentHeight,\n hideLegend = props.hideLegend,\n largestFirst = props.largestFirst,\n preventInteraction = props.preventInteraction,\n showYAxis = props.showYAxis,\n yAxisLabel = props.yAxisLabel,\n useMinHeights = props.useMinHeights;\n var theme = useTheme$1();\n var _e = __read(React.useState(activeItemId), 2),\n highlightedItem = _e[0],\n setHighlightedItem = _e[1];\n var columnsRef = React.useRef(null);\n var _f = __read(React.useState(0), 2),\n width = _f[0],\n setWidth = _f[1];\n var _g = __read(React.useState(0), 2),\n height = _g[0],\n setHeight = _g[1];\n var legendItems = __spread(data.negativeKeys, data.positiveKeys).map(function (item) {\n return {\n label: item.label,\n colorPalette: item.colorPalette || undefined\n };\n });\n var chart = new Chart(data, theme, 'free', largestFirst);\n var handleRowClick = function (item) {\n if (enableDrillDown) {\n if (showFolders && onRowClick && (item === null || item === void 0 ? void 0 : item.info)) {\n onRowClick(item);\n }\n } else {\n onRowClick && onRowClick(item);\n }\n };\n React.useEffect(function () {\n setHighlightedItem(activeItemId);\n }, [activeItemId]);\n React.useEffect(function () {\n var updateWidth = function () {\n if (columnsRef.current) {\n setWidth(columnsRef.current.offsetWidth);\n }\n };\n var updateHeight = function () {\n if (columnsRef.current) {\n setHeight(columnsRef.current.offsetHeight);\n }\n };\n updateWidth();\n updateHeight();\n window.addEventListener('resize', updateWidth);\n window.addEventListener('resize', updateHeight);\n return function () {\n window.removeEventListener('resize', updateWidth);\n window.removeEventListener('resize', updateHeight);\n };\n }, []);\n if (!data || data.data.length === 0) return null;\n var handleBlockClick = function (rowId, item) {\n var _a;\n var infoId = (_a = item === null || item === void 0 ? void 0 : item.info) === null || _a === void 0 ? void 0 : _a.id;\n if (onValueClick) {\n onValueClick(rowId + \"|\" + item.key);\n }\n if (infoId !== highlightedItem) {\n infoId && setHighlightedItem(infoId);\n setActiveItem && setActiveItem(item);\n } else {\n setHighlightedItem(undefined);\n setActiveItem && setActiveItem(undefined);\n }\n };\n var highestColumn = function () {\n var highest = 0;\n chart.sort(data.data, sortField).forEach(function (_a) {\n var item = _a.item,\n dataChart = _a.dataChart;\n var currentTotal = dataChart.reduce(function (total, item) {\n return total + (item.value || 0);\n }, 0);\n if (currentTotal > highest) highest = currentTotal;\n });\n return highest;\n };\n var calculatePercentage = function (value) {\n if (value === undefined) return 0;\n return value / highestColumn() * 100;\n };\n var renderTooltipContent = function (item) {\n if (tooltipContents) {\n return tooltipContents(item);\n }\n return undefined;\n };\n var showLegend = !(hideLegend || (chart === null || chart === void 0 ? void 0 : chart.hideLegend));\n var sortedChart = largestFirst ? chart.sort(data.data, sortField).sort(function (a, b) {\n var sumA = a.dataChart.reduce(function (acc, curr) {\n var _a;\n return acc + ((_a = curr.value) !== null && _a !== void 0 ? _a : 0);\n }, 0);\n var sumB = b.dataChart.reduce(function (acc, curr) {\n var _a;\n return acc + ((_a = curr.value) !== null && _a !== void 0 ? _a : 0);\n }, 0);\n return sumB - sumA; // For descending order\n }) : chart.sort(data.data, sortField);\n var roundedHighestColumn = Math.ceil(highestColumn() / 10) * 10;\n var calcuateYAxisRange = function () {\n var points = [0.75, 0.5, 0.25, 0];\n var roundToNearestHalf = function (num) {\n return Math.round(num * 2) / 2;\n };\n var result = [];\n result.push(roundedHighestColumn);\n points.forEach(function (point) {\n return result.push(roundToNearestHalf(roundedHighestColumn * point));\n });\n return result;\n };\n var calculateOffset = function () {\n var targetHeight = roundedHighestColumn * height / highestColumn();\n return targetHeight - height;\n };\n return /*#__PURE__*/React.createElement(VerticalRefresherChart, {\n \"data-testid\": generate(['acin-chart', 'vertical-refresher-chart', id], props),\n className: className,\n id: id,\n fillParentHeight: fillParentHeight\n }, /*#__PURE__*/React.createElement(ChartHolder, {\n fillParentHeight: fillParentHeight\n }, /*#__PURE__*/React.createElement(ScrollWrapper, {\n height: chartHeight,\n fillParentHeight: fillParentHeight,\n showXAxis: showYAxis\n }, /*#__PURE__*/React.createElement(Columns, {\n showYAxis: showYAxis,\n ref: columnsRef,\n style: {\n paddingTop: calculateOffset()\n }\n }, showYAxis && ( /*#__PURE__*/React.createElement(Axis, {\n \"data-testid\": \"y-axis\"\n }, yAxisLabel && /*#__PURE__*/React.createElement(AxisLabel, null, yAxisLabel), calcuateYAxisRange().map(function (marker, index) {\n return /*#__PURE__*/React.createElement(Marker, {\n key: \"marker-\" + marker + \"-\" + index,\n width: width\n }, marker);\n }))), sortedChart.map(function (_a, index) {\n var item = _a.item,\n dataChart = _a.dataChart;\n var columnId = item.id;\n var isZero = dataChart.length === 0;\n return /*#__PURE__*/React.createElement(Column, {\n key: \"column-\" + item.id + \"-\" + index,\n \"data-testid\": generateCypressId(\"row-\" + columnId)\n }, /*#__PURE__*/React.createElement(BlockWrapper, {\n width: columnWidth\n }, dataChart.map(function (item, index) {\n var _a;\n var isOpaque = highlightedItem ? ((_a = item === null || item === void 0 ? void 0 : item.info) === null || _a === void 0 ? void 0 : _a.id) !== highlightedItem : false;\n var isSingle = dataChart.length === 1;\n var renderBlock = function () {\n return /*#__PURE__*/React.createElement(Block, {\n key: \"block-\" + columnId + \"-\" + index,\n style: {\n background: item.background,\n height: calculatePercentage(item.value) + \"%\"\n },\n onClick: function () {\n return handleBlockClick(columnId, item);\n },\n isOpaque: isOpaque,\n isClickable: !preventInteraction,\n useMinHeight: useMinHeights\n }, !item.transparent && (!hideCounts && !isSingle ? /*#__PURE__*/React.createElement(React.Fragment, null, item.value) : undefined));\n };\n if (isSingle) {\n return /*#__PURE__*/React.createElement(BlockWithCount, {\n key: \"block-\" + columnId + \"-\" + index\n }, /*#__PURE__*/React.createElement(OuterCount, {\n isOpaque: isOpaque\n }, item.value), renderBlock());\n }\n return /*#__PURE__*/React.createElement(Block, {\n key: \"block-\" + columnId + \"-\" + index,\n style: {\n background: item.background,\n height: calculatePercentage(item.value) + \"%\"\n },\n onClick: function () {\n return !preventInteraction && handleBlockClick(columnId, item);\n },\n isOpaque: isOpaque,\n isClickable: !(preventInteraction === true),\n \"data-testid\": isOpaque && \"block-\" + columnId + \"-\" + index + \"-is-opaque\",\n useMinHeight: useMinHeights\n }, !item.transparent && (!hideCounts ? ( /*#__PURE__*/React.createElement(TableChartRowBlockLabel, {\n size: -1,\n weight: 500,\n \"data-testid\": generateCypressId(\"block-\" + (item.id ? item.id : item.name)) + \" \" + (highlightedItem ? generateCypressId(\"block-\" + (item.id ? item.id : item.name)) + \"-is-highlighted--\" + !!(highlightedItem && (item === null || item === void 0 ? void 0 : item.info) && item.info.id === highlightedItem) : '')\n }, item.value)) : ( /*#__PURE__*/React.createElement(Tooltip, {\n content: renderTooltipContent(item)\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(TooltipTrigger, {\n ref: tooltipRef\n });\n }))));\n }), isZero && ( /*#__PURE__*/React.createElement(BlockWithCount, null, /*#__PURE__*/React.createElement(OuterCount, null, \"0\")))));\n })), /*#__PURE__*/React.createElement(Labels, null, sortedChart.map(function (_a, index) {\n var item = _a.item,\n dataChart = _a.dataChart;\n var rowId = item.id;\n var noHighlightedItem = !highlightedItem;\n var checkRowForHighlights = item.values.filter(function (block) {\n return (block === null || block === void 0 ? void 0 : block.info) && block.info.id === highlightedItem;\n }).length > 0;\n var rowIncludesHighlight = noHighlightedItem || checkRowForHighlights;\n return /*#__PURE__*/React.createElement(LabelWrapper, {\n key: \"label-wrapper-\" + item.id + \"-\" + index,\n width: columnWidth,\n isOpaque: !rowIncludesHighlight,\n \"data-testid\": generateCypressId(rowId) + \"-secondary-value \" + (highlightedItem && rowIncludesHighlight ? generateCypressId(rowId) + \"-secondary-value-is-highlighted--\" + rowIncludesHighlight : ''),\n onClick: function () {\n return handleRowClick(item);\n }\n }, /*#__PURE__*/React.createElement(Label, null, showFolders && /*#__PURE__*/React.createElement(Icon, {\n \"data-testid\": \"folder-icon-\" + (item === null || item === void 0 ? void 0 : item.id)\n }), \" \", item.name));\n })))), showLegend && ( /*#__PURE__*/React.createElement(TableChartLegend, {\n \"data-testid\": \"vertical-refresher-chart-legend\"\n }, legendItems.map(function (item, index) {\n return /*#__PURE__*/React.createElement(TableChartLegendKeyWrapper, {\n key: item.label + '-wrapper-' + index\n }, /*#__PURE__*/React.createElement(ChartLegendKey, {\n item: item\n }));\n }))));\n};\nvar RefresherChart$2 = styled(RefresherChart$1)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\"], [\"\"])));\nvar VerticalRefresherChart$2 = styled(VerticalRefresherChart$1)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$o, templateObject_2$2;\n\n// This named style should be the wrapper for the component i.e. the module\nvar StackedAreaChart = styled(View)(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\\n max-height: 350px;\\n\"], [\"\\n max-height: 350px;\\n\"])));\nvar templateObject_1$p;\nvar getPaletteColours = themeHelpers.getPaletteColours;\nvar COUNT_VALUE = 'count';\nvar formatData$1 = function (data, value) {\n return data.reduce(function (acc, item) {\n var _a;\n var el = {\n date: item.date\n };\n (_a = item.categories) === null || _a === void 0 ? void 0 : _a.forEach(function (element) {\n var _a;\n el = __assign(__assign({}, el), (_a = {}, _a[element.label] = value === 'count' ? element.count : element.percentage, _a));\n });\n return __spread(acc, [el]);\n }, []);\n};\nvar getPaletteIndexes = function (data) {\n var _a;\n return (_a = data[0].categories) === null || _a === void 0 ? void 0 : _a.map(function (category) {\n return category.colorPalette || {};\n });\n};\nvar StackedAreaChart$1 = function (props) {\n var className = props.className,\n licence = props.licence,\n onClick = props.onClick,\n data = props.data,\n id = props.id,\n _a = props.value,\n value = _a === void 0 ? COUNT_VALUE : _a,\n yAxisLabel = props.yAxisLabel,\n xAxisLabel = props.xAxisLabel;\n var activeTheme = useThemeProvider().activeTheme;\n var handleClickCallback = React.useCallback(function handleClick(ev) {\n var categoryName = ev.target.get('name');\n if (!categoryName || !onClick) return;\n onClick(categoryName);\n }, [onClick]);\n React.useEffect(function () {\n var _a;\n if (!data) return;\n var formattedData = formatData$1(data, value);\n var paletteIndexes = getPaletteIndexes(data);\n if (!paletteIndexes) return;\n var paletteColours = getPaletteColours(data[0].colorLibrary, activeTheme, paletteIndexes);\n if (!paletteColours) return;\n addLicense(licence);\n var root = Root.new(id, {});\n root.setThemes([am5themes_Animated.new(root)]);\n var chart = root.container.children.push(XYChart$1.new(root, {\n panX: false,\n panY: false,\n pinchZoomX: false,\n paddingLeft: 0\n }));\n if (!chart) return;\n var cursor = chart.set('cursor', XYCursor.new(root, {\n behavior: 'none'\n }));\n cursor.lineY.set('visible', false);\n var colors = chart.get('colors');\n if (colors) {\n colors.set('colors', __spread(paletteColours.map(function (c) {\n return color$1(c);\n })));\n }\n var xAxis = chart.xAxes.push(CategoryAxis$1.new(root, {\n categoryField: 'date',\n renderer: AxisRendererX.new(root, {\n strokeOpacity: 1,\n stroke: color$1(activeTheme.colors.borders.getValue(0)),\n minGridDistance: 20\n }),\n startLocation: 0.5,\n endLocation: 0.5\n }));\n xAxis.data.setAll(formattedData);\n xAxis.get('renderer').labels.template.setAll({\n fill: color$1(activeTheme.colors.text.getValue(1)),\n paddingTop: 12,\n oversizedBehavior: 'wrap'\n });\n xAxis.gridContainer.removeAll();\n if (xAxisLabel) {\n xAxis.children.push(Label$2.new(root, {\n text: xAxisLabel,\n fontFamily: 'sans-serif',\n fontWeight: '300',\n fill: color$1(activeTheme.colors.text.getValue(1))\n }));\n }\n var maxTotalCount = data.reduce(function (acc, item) {\n return item.total > acc ? item.total : acc;\n }, 0);\n var maxYValueAxis = value === COUNT_VALUE ? Math.ceil(maxTotalCount) : 100;\n var yAxis = chart.yAxes.push(ValueAxis$1.new(root, {\n min: 0,\n max: maxYValueAxis,\n numberFormat: value === COUNT_VALUE ? '#' : \"#'%'\",\n paddingTop: 0,\n renderer: AxisRendererY.new(root, {\n strokeOpacity: 1,\n stroke: color$1(activeTheme.colors.borders.getValue(0))\n })\n }));\n yAxis.get('renderer').labels.template.setAll({\n fill: color$1(activeTheme.colors.text.getValue(1))\n });\n yAxis.gridContainer.removeAll();\n if (yAxisLabel) {\n yAxis.children.unshift(Label$2.new(root, {\n text: yAxisLabel,\n y: p50,\n centerX: p50,\n fontFamily: 'sans-serif',\n fontWeight: '300',\n fill: color$1(activeTheme.colors.text.getValue(1)),\n rotation: -90,\n paddingTop: 0\n }));\n }\n function createSeries(name, serieColor) {\n var series = chart.series.push(LineSeries$1.new(root, {\n name: name,\n xAxis: xAxis,\n yAxis: yAxis,\n stacked: true,\n valueYField: name,\n categoryXField: 'date'\n }));\n var customTooltip = \"\\n<div style=\\\"overflow: hidden; background-color: \" + activeTheme.colors.navBackground + \";\\\">\\n <span style=\\\"display: inline-block; line-height: 12px; background-color: \" + serieColor + \"; height: 12px; width: 12px;\\\"> \\n  \\n </span>\\n <span style=\\\"margin-left: \" + activeTheme.spacing.getSize(1) + \"; \\n color: \" + (activeTheme.name === 'default' ? activeTheme.colors.text.getValue(3) : activeTheme.colors.text.getValue(0)) + \";\\n font-size: \" + activeTheme.type.getSize(-1) + \";\\n font-family: sans-serif;\\n line-height: 12px;\\\">\\n {name}: {valueY}\" + (value === COUNT_VALUE ? '' : '%') + \"\\n </span>\\n</div>\";\n var tooltip = Tooltip$1.new(root, {\n // getFillFromSprite disables default tooltip fill inheritance:\n getFillFromSprite: false,\n pointerOrientation: 'horizontal',\n paddingLeft: 6,\n paddingTop: 4,\n paddingRight: 6,\n paddingBottom: 4,\n maskContent: true,\n labelHTML: customTooltip\n });\n var tooltipBackground = tooltip.get('background');\n if (tooltipBackground) {\n tooltipBackground.setAll({\n stroke: color$1(activeTheme.colors.navBackground),\n strokeOpacity: 1,\n // fill will define the tooltip background color:\n fill: color$1(activeTheme.colors.navBackground),\n fillOpacity: 1\n });\n }\n series.set('tooltip', tooltip);\n series.events.on('click', handleClickCallback);\n series.fills.template.setAll({\n fillOpacity: 1,\n visible: true\n });\n series.data.setAll(formattedData);\n series.appear(1000);\n series.events.on('datavalidated', function (ev) {\n var series = ev.target;\n var chart = series.chart;\n if (!chart) return;\n var xAxis = chart.xAxes.getIndex(0);\n if (!xAxis) return;\n var cellSize = 60;\n var chartHeight = series.data.length * cellSize + xAxis.height() + chart.get('paddingTop', 0) + chart.get('paddingBottom', 0);\n chart.root.dom.style.height = chartHeight + 'px';\n });\n }\n (_a = data[0].categories) === null || _a === void 0 ? void 0 : _a.forEach(function (category, index) {\n createSeries(category.label, paletteColours[index]);\n });\n chart.appear(1000, 50);\n return function () {\n root.dispose();\n };\n }, [activeTheme, data, handleClickCallback, id, licence, value, xAxisLabel, yAxisLabel]);\n if (!data) return /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No Data.\",\n message: \"Please contact your customer services representative for more information.\"\n });\n return /*#__PURE__*/React.createElement(StackedAreaChart, {\n \"data-testid\": generate(['acin-chart', 'stacked-area-chart', id], props),\n className: className,\n id: id\n });\n};\nvar StackedAreaChart$2 = styled(StackedAreaChart$1)(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$q;\nvar reduceOpacity = function (hex, opacity) {\n if (!/^#[0-9A-Fa-f]{6}$/.test(hex)) {\n throw new Error('Invalid hex color format.');\n }\n if (opacity < 0 || opacity > 1) {\n throw new Error('Opacity reduction must be a number between 0 and 1.');\n }\n var r = parseInt(hex.slice(1, 3), 16);\n var g = parseInt(hex.slice(3, 5), 16);\n var b = parseInt(hex.slice(5, 7), 16);\n var newR = Math.round(r * (1 - opacity) + 255 * opacity);\n var newG = Math.round(g * (1 - opacity) + 255 * opacity);\n var newB = Math.round(b * (1 - opacity) + 255 * opacity);\n var newHex = \"#\" + newR.toString(16).padStart(2, '0') + newG.toString(16).padStart(2, '0') + newB.toString(16).padStart(2, '0');\n return newHex;\n};\nvar getContrastTextColor = themeHelpers.getContrastTextColor;\n// This named style should be the wrapper for the component i.e. the module\nvar ChartSummary = styled(View)(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\\n display: flex;\\n gap: \", \";\\n flex-wrap: wrap;\\n\"], [\"\\n display: flex;\\n gap: \", \";\\n flex-wrap: wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar Tile = styled(View)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n width: 146px;\\n border-radius: \", \";\\n overflow: hidden;\\n position: relative;\\n flex-direction: column;\\n\\n &:before {\\n content: '';\\n background: \", \";\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n position: absolute;\\n z-index: 0;\\n }\\n\"], [\"\\n width: 146px;\\n border-radius: \", \";\\n overflow: hidden;\\n position: relative;\\n flex-direction: column;\\n\\n &:before {\\n content: '';\\n background: \", \";\\n left: 0;\\n right: 0;\\n top: 0;\\n bottom: 0;\\n position: absolute;\\n z-index: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return reduceOpacity(p.color, 0.9);\n});\nvar Count = styled(View)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n color: \", \";\\n font-size: 32px;\\n height: \", \";\\n width: 100%;\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n position: relative;\\n z-index: 1;\\n\"], [\"\\n color: \", \";\\n font-size: 32px;\\n height: \", \";\\n width: 100%;\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n position: relative;\\n z-index: 1;\\n\"])), function (p) {\n return p.color;\n}, function (p) {\n return p.theme.spacing.getSize(11);\n});\nvar Label$1 = styled(View)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n background: \", \";\\n color: \", \";\\n height: \", \";\\n width: 100%;\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n font-size: \", \";\\n font-weight: 500;\\n position: relative;\\n z-index: 1;\\n\"], [\"\\n background: \", \";\\n color: \", \";\\n height: \", \";\\n width: 100%;\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n font-size: \", \";\\n font-weight: 500;\\n position: relative;\\n z-index: 1;\\n\"])), function (p) {\n return p.color;\n}, function (p) {\n return getContrastTextColor(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar templateObject_1$r, templateObject_2$3, templateObject_3$2, templateObject_4$2;\nvar ChartSummary$1 = function (props) {\n var className = props.className,\n _a = props.colorPaletteName,\n colorPaletteName = _a === void 0 ? 'dataVisWithMeaning' : _a,\n data = props.data,\n id = props.id;\n var activeTheme = useThemeProvider().activeTheme;\n var getColorLibrary = themeHelpers.getColorLibrary;\n return /*#__PURE__*/React.createElement(ChartSummary, {\n \"data-testid\": generate(['acin-chart', 'chart-summary', id], props),\n className: className,\n id: id\n }, data.map(function (tile) {\n var _a, _b;\n var getColor = getColorLibrary(colorPaletteName, activeTheme).getValue(((_a = tile.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || 0, ((_b = tile.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) || 500).main;\n return /*#__PURE__*/React.createElement(Tile, {\n color: getColor,\n \"data-testid\": tile.label.toLowerCase() + \"-\" + tile.value\n }, /*#__PURE__*/React.createElement(Count, {\n color: getColor\n }, tile.value), /*#__PURE__*/React.createElement(Label$1, {\n activeTheme: activeTheme,\n color: getColor\n }, tile.label));\n }));\n};\nvar ChartSummary$2 = styled(ChartSummary$1)(templateObject_1$s || (templateObject_1$s = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$s;\nvar opacity$1 = 0.25;\nvar InsightCodeTable = styled(View)(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return !p.showAllRows && p.height && css(templateObject_1$t || (templateObject_1$t = __makeTemplateObject([\"\\n height: \", \"px;\\n \"], [\"\\n height: \", \"px;\\n \"])), p.height);\n}, function (p) {\n return p.fillParentHeight && css(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\\n height: 100%;\\n \"], [\"\\n height: 100%;\\n \"])));\n});\nvar InsightTable = styled(Table$1)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar LabelCellContent = styled(CellContent)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n display: block;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"], [\"\\n display: block;\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"])));\nvar Block$1 = styled(TableChartRowBlock)(templateObject_9$2 || (templateObject_9$2 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n color: \", \";\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n color: \", \";\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(20);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n}, function (p) {\n return p.theme.colors.placeholder;\n}, function (p) {\n return p.value && p.value > 0 && css(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n}, function (p) {\n return p.background && css(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject([\"\\n background: \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n color: \", \";\\n \"])), p.background, function (p) {\n return p.theme.colors.primary.getValue().context;\n });\n}, function (p) {\n return p.isOpaque && css(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject([\"\\n opacity: \", \";\\n \"], [\"\\n opacity: \", \";\\n \"])), opacity$1);\n});\nvar Instances = styled(View)(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject([\"\\n display: flex;\\n gap: 2px;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n gap: 2px;\\n flex-direction: row;\\n\"])));\nvar NameHeadCell = styled(HeadCell)(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject([\"\\n width: 50%;\\n min-width: 220px;\\n\"], [\"\\n width: 50%;\\n min-width: 220px;\\n\"])));\nvar templateObject_1$t, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2, templateObject_6$2, templateObject_7$2, templateObject_8$2, templateObject_9$2, templateObject_10$2, templateObject_11$2;\nvar getColorLibrary$2 = themeHelpers.getColorLibrary;\nvar InsightCodeTable$1 = function (props) {\n var className = props.className,\n categories = props.categories,\n _a = props.colorPaletteName,\n colorPaletteName = _a === void 0 ? 'dataVisWithMeaning' : _a,\n onRowClick = props.onRowClick,\n nameHeader = props.nameHeader,\n valueHeader = props.valueHeader,\n rows = props.rows,\n id = props.id,\n showAcinLogoOnRows = props.showAcinLogoOnRows,\n showFolders = props.showFolders,\n activeItemId = props.activeItemId,\n onBlockClick = props.onBlockClick,\n onSort = props.onSort,\n initialSortField = props.initialSortField,\n showAllRows = props.showAllRows,\n showLegend = props.showLegend,\n fillParentHeight = props.fillParentHeight;\n var activeTheme = useThemeProvider().activeTheme;\n var _b = __read(React.useState(activeItemId), 2),\n highlightedItem = _b[0],\n setHighlightedItem = _b[1];\n var _c = __read(React.useState({\n name: (initialSortField === null || initialSortField === void 0 ? void 0 : initialSortField.name) || VALUE_HEADER,\n direction: (initialSortField === null || initialSortField === void 0 ? void 0 : initialSortField.direction) || ISortDirection.Desc\n }), 2),\n sortField = _c[0],\n setSortField = _c[1];\n var sortedRows = function () {\n if (sortField.name === VALUE_HEADER) {\n return __spread(rows).sort(function (a, b) {\n var totalA = a.instances.reduce(function (sum, instance) {\n return sum + instance.value;\n }, 0);\n var totalB = b.instances.reduce(function (sum, instance) {\n return sum + instance.value;\n }, 0);\n return sortField.direction === ISortDirection.Asc ? totalA - totalB : totalB - totalA;\n });\n } else if (sortField.name === NAME_HEADER) {\n return __spread(rows).sort(function (a, b) {\n var compare = a.label.localeCompare(b.label);\n return sortField.direction === ISortDirection.Asc ? compare : -compare;\n });\n }\n return rows;\n };\n var getBlockColor = function (category, value) {\n var _a;\n if (value === 0 || value === undefined) {\n return null;\n }\n var color = (_a = categories === null || categories === void 0 ? void 0 : categories.find(function (cat) {\n return cat.id === category;\n })) === null || _a === void 0 ? void 0 : _a.colorPalette;\n if (color) {\n return getColorLibrary$2(colorPaletteName || '', activeTheme).getValue(color.paletteIndex || 0, color.shade || 500).main;\n }\n };\n var handleBlockClick = function (item) {\n if (highlightedItem === item.id) {\n onBlockClick(undefined);\n } else {\n onBlockClick(item);\n }\n };\n React.useEffect(function () {\n setHighlightedItem(activeItemId);\n }, [activeItemId]);\n var onSortClick = function (name, direction) {\n var sortDir = direction === 'ASC' ? ISortDirection.Desc : ISortDirection.Asc;\n if (onSort) {\n setSortField({\n name: name,\n direction: sortDir\n });\n onSort({\n name: name,\n direction: sortDir\n });\n } else {\n setSortField({\n name: name,\n direction: sortDir\n });\n }\n };\n var legendItems = categories === null || categories === void 0 ? void 0 : categories.map(function (item) {\n return {\n label: item.label,\n colorPalette: item.colorPalette || undefined\n };\n });\n var checkHeight = function () {\n var noOfRows = rows.length;\n var maxHeight = 300;\n var sumOfRows = noOfRows * 24;\n if (sumOfRows > maxHeight) {\n return maxHeight;\n }\n return undefined;\n };\n return /*#__PURE__*/React.createElement(InsightCodeTable, {\n className: className,\n id: id,\n showAllRows: showAllRows,\n height: checkHeight(),\n fillParentHeight: fillParentHeight\n }, /*#__PURE__*/React.createElement(TableChartContent, null, /*#__PURE__*/React.createElement(TableWrapper, null, /*#__PURE__*/React.createElement(InsightTable, {\n \"data-testid\": generate(['acin-chart', 'insight-code-table', id], props),\n className: className,\n id: id\n }, /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(Row, null, showFolders ? /*#__PURE__*/React.createElement(HeadCell, {\n width: \"30px\"\n }) : /*#__PURE__*/React.createElement(React.Fragment, null), nameHeader && ( /*#__PURE__*/React.createElement(NameHeadCell, {\n key: nameHeader.key,\n onClick: function () {\n return onSortClick(NAME_HEADER, sortField.direction);\n },\n sortable: nameHeader.sortable,\n direction: sortField.name === NAME_HEADER ? sortField.direction : undefined\n }, nameHeader.name)), /*#__PURE__*/React.createElement(HeadCell, {\n key: valueHeader.key,\n onClick: function () {\n return onSortClick(VALUE_HEADER, sortField.direction);\n },\n sortable: valueHeader.sortable,\n direction: sortField.name === VALUE_HEADER ? sortField.direction : undefined\n }, valueHeader.name))), /*#__PURE__*/React.createElement(TBody, null, sortedRows().map(function (row) {\n var rowId = row.id;\n var noHighlightedItem = !highlightedItem;\n var checkRowForHighlights = row.instances.filter(function (block) {\n return block && block.id === highlightedItem;\n }).length > 0;\n var rowIncludesHighlight = noHighlightedItem || checkRowForHighlights;\n return /*#__PURE__*/React.createElement(TableRow, {\n key: row.id,\n hasBorder: true,\n \"data-testid\": generateCypressId(\"row-\" + rowId)\n }, showFolders && ( /*#__PURE__*/React.createElement(LabelCell, {\n onClick: function () {\n return onRowClick(row);\n },\n isOpaque: !rowIncludesHighlight,\n isClickable: true,\n hasBorder: true\n }, /*#__PURE__*/React.createElement(IconFolderClosed, {\n \"data-testid\": \"folder-icon-\" + (row === null || row === void 0 ? void 0 : row.id)\n }))), /*#__PURE__*/React.createElement(LabelCell, {\n hasBorder: true,\n noWrap: true,\n width: \"220px\",\n tooltipText: row.label,\n onClick: function () {\n return onRowClick(row);\n },\n size: \"small\",\n isOpaque: !rowIncludesHighlight,\n \"data-testid\": generateCypressId(rowId) + \"-name \" + (highlightedItem && rowIncludesHighlight ? generateCypressId(rowId) + \"-name-is-highlighted--\" + rowIncludesHighlight : '')\n }, /*#__PURE__*/React.createElement(LabelCellContent, {\n \"data-testid\": \"row-label\"\n }, showAcinLogoOnRows && /*#__PURE__*/React.createElement(Logo, null), row.label)), /*#__PURE__*/React.createElement(TableChartCell, {\n hasBorder: true\n }, /*#__PURE__*/React.createElement(Instances, null, row.instances.map(function (instance) {\n var value = instance.value,\n category = instance.category;\n var isEmpty = value === 0;\n var isOpaque = highlightedItem ? (instance === null || instance === void 0 ? void 0 : instance.id) !== highlightedItem : false;\n return /*#__PURE__*/React.createElement(Block$1, {\n isOpaque: isOpaque,\n background: getBlockColor(category, value),\n onClick: function () {\n return !isEmpty && handleBlockClick(instance);\n },\n value: value,\n \"data-testid\": generateCypressId(\"row-\" + rowId + \"-instance-\" + instance.id + (instance.id === highlightedItem ? '-active-item' : '') + (isOpaque ? '-inactive-item' : ''))\n }, value);\n }))));\n }))))), showLegend && ( /*#__PURE__*/React.createElement(TableChartLegend, {\n \"data-testid\": \"refresher-chart-legend\"\n }, legendItems === null || legendItems === void 0 ? void 0 : legendItems.map(function (item, index) {\n return /*#__PURE__*/React.createElement(TableChartLegendKeyWrapper, {\n key: item.label + '-wrapper-' + index\n }, /*#__PURE__*/React.createElement(ChartLegendKey, {\n key: item.label + '-label-' + index,\n item: item\n }));\n }))));\n};\nvar InsightCodeTable$2 = styled(InsightCodeTable$1)(templateObject_1$u || (templateObject_1$u = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$u;\nexport { BoxTree$2 as BoxTree, BoxTreeChart$2 as BoxTreeChart, BubbleChart$2 as BubbleChart, ChartSummary$2 as ChartSummary, ControlAlignmentOverview$2 as ControlAlignmentOverview, DonutChart$2 as DonutChart, HorizontalDivergentStackedBarChart$2 as HorizontalDivergentStackedBarChart, HorizontalDumbbellPlotChart$2 as HorizontalDumbbellPlotChart, InsightCodeTable$2 as InsightCodeTable, LineChart$2 as LineChart, RadarChart$2 as RadarChart, RefresherChart$2 as RefresherChart, RiskAlignmentOverview$2 as RiskAlignmentOverview, index as RiskManagementOpportunities, ScoreChart$2 as ScoreChart, StackedAreaChart$2 as StackedAreaChart, VerticalRefresherChart$2 as VerticalRefresherChart, formatData$1 as formatData, getPaletteIndexes };","import { __makeTemplateObject, __spreadArray, __read, __assign, __rest, __awaiter, __generator } from 'tslib';\nimport styled, { css } from 'styled-components';\nimport React, { useState, useCallback, useEffect } from 'react';\nimport { View, DataCard, Heading as Heading$1, Text as Text$1, ShowMore, Markdown, generate, NssScore, Badge as Badge$1, themeHelpers, LinkList, Link, Button, useDrawer, useThemeProvider, Accordion as Accordion$1, Loading, Alert, Select, SkeletonLoader, useQueryParams, IconChevronRight, BackToTopButton, DataListRow, Card as Card$1, IconNotesWarning, Tooltip, ErrorMessage, DataTable, PageWrapper, CompactHeader, SecondTier, FirstTier, CompactHeaderActions, IconChevronUp, IconChevronDown, theme, IconButton, ChartLegendKey, InfoText, useWindowSize, ChartLegend, IconArrowDown, TabGroup, Panel as Panel$1, PanelSection, PanelTitle, ScrollableContent, IconFlaggedYes, IconFlaggedNo, IconDelete, Input, IconSearch, Modal, Autosuggest, Logo, generateCypressId, ColourBlockList, useToaster, PageDrawer, Toaster, IconShare, IconLinkOut, IconClose, IconDownload, Tag, AnalyticsBarsHorizontal, AnalyticsBars, IconTable, Toolbar, IconArrowPushUp, IconArrowPushDown, ToggleSwitch, THead, Cell as Cell$2, Table, TBody, Row as Row$2, HeadCell, Breadcrumbs, IconDumbbell, Textarea, Label, IconAdd } from '@acin/ui-core';\nimport { useHistory, useLocation, useParams } from 'react-router-dom';\nimport { usePagination, Pagination, PaginationProvider } from '@acin/pagination';\nimport { useAuth } from '@acin/user-accounts';\nimport _, { startCase, toLower, debounce } from 'lodash';\nimport { FilterButton } from '@acin/filters';\nimport { gql, useLazyQuery, useQuery, useMutation } from '@apollo/client';\nimport { format } from 'date-fns';\nimport { useInspector } from '@acin/inspector';\nimport { VariableSizeList, areEqual } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { DonutChart, RefresherChart, VerticalRefresherChart, InsightCodeTable, ChartSummary } from '@acin/acin-charts';\nimport orderBy from 'lodash/orderBy';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { useDownload, useDownloadImage, DownloadImagePreview, DownloadImageProvider } from '@acin/download';\nvar Overview = styled(View)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n padding: \", \";\\n padding-top: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n justify-content: space-between;\\n\"], [\"\\n padding: \", \";\\n padding-top: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar DetailsWrapper = styled(View)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: 50%;\\n margin-right: \", \";\\n\"], [\"\\n width: 50%;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DataRelationshipsWrapper = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: 50%;\\n margin-left: \", \";\\n\"], [\"\\n width: 50%;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1, templateObject_2, templateObject_3;\nvar ControlDetails = styled(View)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"], [\"\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"])), DataCard, function (p) {\n return p.theme.spacing.getSize();\n});\nvar HeadingWrapper = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-start;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: flex-start;\\n\"])));\nvar HeadingText = styled(Heading$1)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n line-height: 1;\\n margin-bottom: \", \";\\n\"], [\"\\n line-height: 1;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar NSSWrapper = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\"], [\"\"])));\nvar Content = styled(View)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4, templateObject_5;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinControlDescription = styled(View)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar Block = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2, templateObject_2$2;\nvar AcinControlDescription$1 = function (props) {\n var control = props.control,\n _a = props.size,\n size = _a === void 0 ? -1 : _a,\n _b = props.showMore,\n showMore = _b === void 0 ? true : _b,\n toggleDescription = props.toggleDescription,\n showDescription = props.showDescription;\n if (!control) return null;\n var description = __spreadArray(__spreadArray(__spreadArray([], __read(control.review ? [{\n title: 'Review',\n content: control.review\n }] : []), false), __read(control.identify ? [{\n title: 'Identify',\n content: control.identify\n }] : []), false), __read(control.actions ? [{\n title: 'Action',\n content: control.actions\n }] : []), false);\n var renderDescription = function (data) {\n return data.map(function (item) {\n return /*#__PURE__*/React.createElement(Block, {\n key: item.title\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: size,\n weight: 600\n }, item.title), item.content && /*#__PURE__*/React.createElement(Markdown, {\n content: item.content\n }));\n });\n };\n if (showMore) {\n var title = description.find(function (item) {\n return item.title === 'Review';\n });\n description = description.filter(function (item) {\n return item.title !== 'Review';\n });\n // Sets the review content as type string or undefined instead of possibly null for ShowMore component\n var previewText = (title === null || title === void 0 ? void 0 : title.content) ? title.content : undefined;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text$1, {\n size: size,\n weight: 600\n }, title === null || title === void 0 ? void 0 : title.title), /*#__PURE__*/React.createElement(ShowMore, {\n text: previewText,\n showPreview: true,\n isExpanded: showDescription,\n onChange: toggleDescription\n }, renderDescription(description)));\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderDescription(description));\n }\n};\nvar AcinControlDescription$2 = styled(AcinControlDescription$1)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinControlNetworkSignalScore = styled(View)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$4;\nvar AcinControlNetworkSignalScore$1 = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(AcinControlNetworkSignalScore, {\n \"data-testid\": generate(['acin-control-network-signal-score'], props),\n className: className\n }, /*#__PURE__*/React.createElement(NssScore, {\n score: data\n }));\n};\nvar AcinControlNetworkSignalScore$2 = styled(AcinControlNetworkSignalScore$1)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ControlDescriptionQuality = styled(View)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\\n /* align-self: center; */\\n\"], [\"\\n /* align-self: center; */\\n\"])));\nvar templateObject_1$6;\nvar IAdpFileStage;\n(function (IAdpFileStage) {\n IAdpFileStage[\"Upload\"] = \"UPLOAD\";\n IAdpFileStage[\"Scoping\"] = \"SCOPING\";\n IAdpFileStage[\"Pipeline\"] = \"PIPELINE\";\n IAdpFileStage[\"Matching\"] = \"MATCHING\";\n IAdpFileStage[\"Publish\"] = \"PUBLISH\";\n IAdpFileStage[\"Rematching\"] = \"REMATCHING\";\n IAdpFileStage[\"Republish\"] = \"REPUBLISH\";\n})(IAdpFileStage || (IAdpFileStage = {}));\nvar IAdpFileStatus;\n(function (IAdpFileStatus) {\n IAdpFileStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IAdpFileStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IAdpFileStatus[\"Approved\"] = \"APPROVED\";\n IAdpFileStatus[\"Completed\"] = \"COMPLETED\";\n IAdpFileStatus[\"Failed\"] = \"FAILED\";\n IAdpFileStatus[\"DataInvalid\"] = \"DATA_INVALID\";\n IAdpFileStatus[\"Rejected\"] = \"REJECTED\";\n})(IAdpFileStatus || (IAdpFileStatus = {}));\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IControlQualityScore;\n(function (IControlQualityScore) {\n IControlQualityScore[\"Unclear\"] = \"UNCLEAR\";\n IControlQualityScore[\"Clear\"] = \"CLEAR\";\n})(IControlQualityScore || (IControlQualityScore = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IDataQualityInputTextVariant;\n(function (IDataQualityInputTextVariant) {\n IDataQualityInputTextVariant[\"Control\"] = \"CONTROL\";\n IDataQualityInputTextVariant[\"Policy\"] = \"POLICY\";\n IDataQualityInputTextVariant[\"Regulation\"] = \"REGULATION\";\n})(IDataQualityInputTextVariant || (IDataQualityInputTextVariant = {}));\nvar IDataQualityJobStatus;\n(function (IDataQualityJobStatus) {\n IDataQualityJobStatus[\"Started\"] = \"STARTED\";\n IDataQualityJobStatus[\"Completed\"] = \"COMPLETED\";\n IDataQualityJobStatus[\"Failed\"] = \"FAILED\";\n})(IDataQualityJobStatus || (IDataQualityJobStatus = {}));\nvar IDataQualityPromptCategory;\n(function (IDataQualityPromptCategory) {\n IDataQualityPromptCategory[\"ControlRewriter\"] = \"CONTROL_REWRITER\";\n IDataQualityPromptCategory[\"PolicyToControl\"] = \"POLICY_TO_CONTROL\";\n IDataQualityPromptCategory[\"ProcedureToControl\"] = \"PROCEDURE_TO_CONTROL\";\n IDataQualityPromptCategory[\"ProcessToControl\"] = \"PROCESS_TO_CONTROL\";\n IDataQualityPromptCategory[\"ControlToTestingScript\"] = \"CONTROL_TO_TESTING_SCRIPT\";\n IDataQualityPromptCategory[\"ControlToKeyControlIndicator\"] = \"CONTROL_TO_KEY_CONTROL_INDICATOR\";\n IDataQualityPromptCategory[\"MergeControls\"] = \"MERGE_CONTROLS\";\n})(IDataQualityPromptCategory || (IDataQualityPromptCategory = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar IEntityAssigneesType;\n(function (IEntityAssigneesType) {\n IEntityAssigneesType[\"Control\"] = \"CONTROL\";\n IEntityAssigneesType[\"Cluster\"] = \"CLUSTER\";\n})(IEntityAssigneesType || (IEntityAssigneesType = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n IFilterType[\"ListLevel\"] = \"LIST_LEVEL\";\n})(IFilterType || (IFilterType = {}));\nvar IGlobalSearchResultAssetType;\n(function (IGlobalSearchResultAssetType) {\n IGlobalSearchResultAssetType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultAssetType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultAssetType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultAssetType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultAssetType[\"RegAlert\"] = \"REG_ALERT\";\n IGlobalSearchResultAssetType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultAssetType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n IGlobalSearchResultAssetType[\"Report\"] = \"REPORT\";\n IGlobalSearchResultAssetType[\"ReportBuilder\"] = \"REPORT_BUILDER\";\n})(IGlobalSearchResultAssetType || (IGlobalSearchResultAssetType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n IInsightMetricType[\"All\"] = \"ALL\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n})(IInsightType || (IInsightType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IMatchingJobClusterStatus;\n(function (IMatchingJobClusterStatus) {\n IMatchingJobClusterStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobClusterStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobClusterStatus[\"ReadyToSubmit\"] = \"READY_TO_SUBMIT\";\n IMatchingJobClusterStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobClusterStatus[\"Approved\"] = \"APPROVED\";\n IMatchingJobClusterStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobClusterStatus || (IMatchingJobClusterStatus = {}));\nvar IMatchingJobControlAction;\n(function (IMatchingJobControlAction) {\n IMatchingJobControlAction[\"Approved\"] = \"APPROVED\";\n IMatchingJobControlAction[\"AutoMatched\"] = \"AUTO_MATCHED\";\n IMatchingJobControlAction[\"Proposed\"] = \"PROPOSED\";\n IMatchingJobControlAction[\"Inherited\"] = \"INHERITED\";\n})(IMatchingJobControlAction || (IMatchingJobControlAction = {}));\nvar IMatchingJobControlStatus;\n(function (IMatchingJobControlStatus) {\n IMatchingJobControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobControlStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobControlStatus[\"PreConnected\"] = \"PRE_CONNECTED\";\n IMatchingJobControlStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobControlStatus[\"Approved\"] = \"APPROVED\";\n IMatchingJobControlStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobControlStatus || (IMatchingJobControlStatus = {}));\nvar IMatchingJobQualityLevel;\n(function (IMatchingJobQualityLevel) {\n IMatchingJobQualityLevel[\"Clear\"] = \"CLEAR\";\n IMatchingJobQualityLevel[\"Unclear\"] = \"UNCLEAR\";\n})(IMatchingJobQualityLevel || (IMatchingJobQualityLevel = {}));\nvar IPageCode;\n(function (IPageCode) {\n IPageCode[\"ClientControls\"] = \"CLIENT_CONTROLS\";\n IPageCode[\"ClientControlsQuality\"] = \"CLIENT_CONTROLS_QUALITY\";\n IPageCode[\"AcinControls\"] = \"ACIN_CONTROLS\";\n IPageCode[\"JointControls\"] = \"JOINT_CONTROLS\";\n})(IPageCode || (IPageCode = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Trading\"] = \"TRADING\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n})(IProductType || (IProductType = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Private\"] = \"PRIVATE\";\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n})(IReadPermission || (IReadPermission = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar IReportChartType;\n(function (IReportChartType) {\n IReportChartType[\"Horizontal\"] = \"HORIZONTAL\";\n IReportChartType[\"Vertical\"] = \"VERTICAL\";\n IReportChartType[\"Table\"] = \"TABLE\";\n IReportChartType[\"Summary\"] = \"SUMMARY\";\n})(IReportChartType || (IReportChartType = {}));\nvar IReportType;\n(function (IReportType) {\n IReportType[\"HorizontalBar\"] = \"HORIZONTAL_BAR\";\n IReportType[\"HorizontalBarDataVis\"] = \"HORIZONTAL_BAR_DATA_VIS\";\n IReportType[\"HorizontalBarInsightCodes\"] = \"HORIZONTAL_BAR_INSIGHT_CODES\";\n IReportType[\"HorizontalBarInsightCodesStacked\"] = \"HORIZONTAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"VerticalBar\"] = \"VERTICAL_BAR\";\n IReportType[\"VerticalBarDataVis\"] = \"VERTICAL_BAR_DATA_VIS\";\n IReportType[\"VerticalBarInsightCodes\"] = \"VERTICAL_BAR_INSIGHT_CODES\";\n IReportType[\"VerticalBarInsightCodesStacked\"] = \"VERTICAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"Table\"] = \"TABLE\";\n IReportType[\"TableDataVis\"] = \"TABLE_DATA_VIS\";\n IReportType[\"TableInsightCodes\"] = \"TABLE_INSIGHT_CODES\";\n IReportType[\"TableInsightCodesStacked\"] = \"TABLE_INSIGHT_CODES_STACKED\";\n IReportType[\"OverTimeDataVis\"] = \"OVER_TIME_DATA_VIS\";\n IReportType[\"OverTimeInsightCodes\"] = \"OVER_TIME_INSIGHT_CODES\";\n IReportType[\"PieChartInsightCodes\"] = \"PIE_CHART_INSIGHT_CODES\";\n})(IReportType || (IReportType = {}));\nvar IRiskIntelligenceAlertInsightType;\n(function (IRiskIntelligenceAlertInsightType) {\n IRiskIntelligenceAlertInsightType[\"BusinessLine\"] = \"BUSINESS_LINE\";\n IRiskIntelligenceAlertInsightType[\"Index\"] = \"INDEX\";\n})(IRiskIntelligenceAlertInsightType || (IRiskIntelligenceAlertInsightType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Positive\"] = \"POSITIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n})(ISentiment || (ISentiment = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n ITableHeaderType[\"Inner\"] = \"INNER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n ITableRowType[\"Child\"] = \"CHILD\";\n})(ITableRowType || (ITableRowType = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n})(ITableVariant || (ITableVariant = {}));\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Default\"] = \"DEFAULT\";\n IUiTheme[\"Dark\"] = \"DARK\";\n})(IUiTheme || (IUiTheme = {}));\nvar IUnmatchedIndexControlStatus;\n(function (IUnmatchedIndexControlStatus) {\n IUnmatchedIndexControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IUnmatchedIndexControlStatus[\"Missing\"] = \"MISSING\";\n IUnmatchedIndexControlStatus[\"Approved\"] = \"APPROVED\";\n})(IUnmatchedIndexControlStatus || (IUnmatchedIndexControlStatus = {}));\nvar ControlDescriptionQuality$1 = function (props) {\n var className = props.className,\n data = props.data;\n var getBadgeColour = function () {\n switch (data) {\n default:\n case IControlQualityScore.Unclear:\n return 'error';\n case IControlQualityScore.Clear:\n return 'success';\n }\n };\n if (data) {\n return /*#__PURE__*/React.createElement(ControlDescriptionQuality, {\n \"data-testid\": generate(['control-description-quality'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Badge$1, {\n text: startCase(toLower(data)),\n variant: getBadgeColour(),\n appearance: \"outlined\"\n }));\n }\n return null;\n};\nvar ControlDescriptionQuality$2 = styled(ControlDescriptionQuality$1)(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$7;\nvar containerBackground = themeHelpers.containerBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar RelationshipGroup = styled(View)(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n padding: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n \", \";\\n\\n \", \" {\\n color: \", \";\\n line-height: 1;\\n }\\n\"], [\"\\n padding: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n \", \";\\n\\n \", \" {\\n color: \", \";\\n line-height: 1;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, Heading$1, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar HeaderWrapper = styled(View)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar EmtpyGroupNotice = styled(Text$1)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar Count = styled(EmtpyGroupNotice)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar GroupedLinkList = styled(LinkList)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n \", \" {\\n justify-content: flex-start;\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n padding-bottom: 0px;\\n border-bottom: none;\\n }\\n div[role='img'] {\\n padding-bottom: 2px;\\n }\\n }\\n\"], [\"\\n \", \" {\\n justify-content: flex-start;\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n padding-bottom: 0px;\\n border-bottom: none;\\n }\\n div[role='img'] {\\n padding-bottom: 2px;\\n }\\n }\\n\"])), Link, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar GroupedContentWrapper = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \"; // TODO: Needs a border rule and DM rule\\n }\\n\"], [\"\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \"; // TODO: Needs a border rule and DM rule\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(0);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar GroupHeading = styled(View)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar AccordionHeading = styled(Heading$1)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n color: \", \";\\n margin-top: \", \";\\n\"], [\"\\n color: \", \";\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue(0).main;\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar ProductGroup = styled(View)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n min-height: \", \";\\n align-items: baseline;\\n\\n :not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n min-height: \", \";\\n align-items: baseline;\\n\\n :not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(7);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar ProductType = styled(Text$1)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n text-transform: capitalize;\\n min-width: \", \";\\n\"], [\"\\n text-transform: capitalize;\\n min-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(40);\n});\nvar Product = styled(Badge$1)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n margin-right: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ProductList = styled(View)(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n white-space: wrap;\\n flex: auto;\\n flex-wrap: wrap;\\n\\n & > div {\\n display: inline-flex;\\n }\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n margin-right: 10px;\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n white-space: wrap;\\n flex: auto;\\n flex-wrap: wrap;\\n\\n & > div {\\n display: inline-flex;\\n }\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n margin-right: 10px;\\n margin-bottom: \", \";\\n }\\n\"])), Badge$1, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$8, templateObject_2$3, templateObject_3$2, templateObject_4$1, templateObject_5$1, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;\nvar ControlSelect = styled(View)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\\n \", \" {\\n min-width: 100%;\\n\\n & > div {\\n align-items: center;\\n }\\n }\\n \", \" {\\n margin-top: 0;\\n height: \", \";\\n }\\n\"], [\"\\n \", \" {\\n min-width: 100%;\\n\\n & > div {\\n align-items: center;\\n }\\n }\\n \", \" {\\n margin-top: 0;\\n height: \", \";\\n }\\n\"])), DataCard, Button, function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar templateObject_1$9;\nvar HeadingText$1 = styled(Heading$1)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\\n line-height: 1;\\n\"], [\"\\n line-height: 1;\\n\"])));\nvar HeadingWrapper$1 = styled(View)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n align-items: flex-end;\\n justify-content: space-between;\\n\"])));\nvar CompareRow = styled(View)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: stretch;\\n justify-content: space-between;\\n\\n \", \"\\n\\n \", \",\\n \", \",\\n \", \",\\n \", \" {\\n flex-grow: 1;\\n flex-basis: 0;\\n\\n &:first-child {\\n margin-right: \", \";\\n }\\n\\n &:last-child {\\n margin-left: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n align-items: stretch;\\n justify-content: space-between;\\n\\n \", \"\\n\\n \", \",\\n \", \",\\n \", \",\\n \", \" {\\n flex-grow: 1;\\n flex-basis: 0;\\n\\n &:first-child {\\n margin-right: \", \";\\n }\\n\\n &:last-child {\\n margin-left: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.isHeader && css(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n \"], [\"\\n margin-bottom: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n}, ControlSelect, RelationshipGroup, DataCard, HeadingWrapper$1, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Actions = styled(View)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n width: fit-content;\\n flex-direction: row;\\n display: flex;\\n\"], [\"\\n width: fit-content;\\n flex-direction: row;\\n display: flex;\\n\"])));\nvar Rewrite = styled(Button)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n margin-right: \", \";\\n height: auto !important;\\n\"], [\"\\n margin-right: \", \";\\n height: auto !important;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$a, templateObject_2$4, templateObject_3$3, templateObject_4$2, templateObject_5$2, templateObject_6$1;\nvar INIITIAL_STATE = {\n copiedDescription: undefined,\n onUpdateCopiedDescription: function () {},\n navigateToRewrite: function () {}\n};\nvar Context = /*#__PURE__*/React.createContext(INIITIAL_STATE);\nvar useControlRewrite = function () {\n return React.useContext(Context);\n};\nvar ControlRewriteProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(), 2),\n copiedDescription = _b[0],\n setCopiedDescription = _b[1];\n var history = useHistory();\n var onUpdateCopiedDescription = function (description) {\n setCopiedDescription(description);\n };\n var navigateToRewrite = function () {\n return history.push('/control-quality/rewrite-control');\n };\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INIITIAL_STATE), {\n copiedDescription: copiedDescription,\n onUpdateCopiedDescription: onUpdateCopiedDescription,\n navigateToRewrite: navigateToRewrite\n })\n }, children);\n};\nvar ControlDetails$1 = function (props) {\n var _a = __read(React.useState(false), 2),\n isShowMoreOpen = _a[0],\n setIsSohowMoreOpen = _a[1];\n var className = props.className,\n data = props.data;\n var user = useAuth().user;\n var setDrawerState = useDrawer().setDrawerState;\n var getData = function () {\n switch (data === null || data === void 0 ? void 0 : data.__typename) {\n case 'AcinControl':\n return {\n id: data.id,\n controlCode: data.controlCode,\n controlSource: data.controlSource,\n objectives: data.objectives,\n controlType: data.controlType,\n controlOwner: data.controlOwner,\n controlFrequency: data.controlFrequency,\n nss: data.nss,\n automation: data.automation\n };\n case 'ClientControl':\n return {\n id: data.id,\n controlCode: data.optionalControlCode,\n controlSource: data.optionalControlSource,\n description: data.optionalDescription,\n objectives: data.optionalObjectives,\n controlType: data.optionalControlType,\n controlOwner: data.optionalControlOwner,\n controlFrequency: data.optionalControlFrequency,\n automation: data.automation,\n controlQualityScore: data.controlQualityScore\n };\n default:\n return {};\n }\n };\n var _b = getData(),\n id = _b.id,\n controlCode = _b.controlCode,\n controlSource = _b.controlSource,\n description = _b.description,\n objectives = _b.objectives,\n controlType = _b.controlType,\n controlOwner = _b.controlOwner,\n controlFrequency = _b.controlFrequency,\n automation = _b.automation,\n nss = _b.nss;\n var _c = useControlRewrite(),\n onUpdateCopiedDescription = _c.onUpdateCopiedDescription,\n navigateToRewrite = _c.navigateToRewrite;\n var handleRewrite = function () {\n description && onUpdateCopiedDescription(description);\n navigateToRewrite();\n setDrawerState(false, 'control-page');\n };\n return /*#__PURE__*/React.createElement(ControlDetails, {\n \"data-testid\": generate(['control-details'], props),\n className: className,\n id: id\n }, /*#__PURE__*/React.createElement(HeadingWrapper, null, /*#__PURE__*/React.createElement(HeadingText, {\n size: 2,\n weight: 500,\n ellipsis: true\n }, (data === null || data === void 0 ? void 0 : data.__typename) === 'ClientControl' ? \"\".concat((user === null || user === void 0 ? void 0 : user.accountName) ? user.accountName : 'Your', \" Control Details\") : 'Acin Control Details'), (data === null || data === void 0 ? void 0 : data.__typename) === 'ClientControl' && data.controlQualityScore && ( /*#__PURE__*/React.createElement(Actions, null, /*#__PURE__*/React.createElement(Rewrite, {\n label: \"Rewrite This Control Description\",\n onClick: handleRewrite,\n variant: \"link\"\n }), /*#__PURE__*/React.createElement(ControlDescriptionQuality$2, {\n data: data.controlQualityScore\n }))), nss && ( /*#__PURE__*/React.createElement(NSSWrapper, null, /*#__PURE__*/React.createElement(AcinControlNetworkSignalScore$2, {\n data: nss\n })))), /*#__PURE__*/React.createElement(Content, {\n \"data-testid\": generate(['control-details__content'], props)\n }, controlCode && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n subTitle: controlCode\n }), controlSource && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n subTitle: controlSource\n }), (data === null || data === void 0 ? void 0 : data.__typename) === 'AcinControl' ? ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\"\n }, /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n control: data,\n showDescription: isShowMoreOpen,\n toggleDescription: function () {\n return setIsSohowMoreOpen(!isShowMoreOpen);\n }\n }))) : ( /*#__PURE__*/React.createElement(React.Fragment, null, description && ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\"\n }, /*#__PURE__*/React.createElement(ShowMore, {\n text: description,\n showPreview: true\n }))))), objectives && ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Objectives\"\n }, /*#__PURE__*/React.createElement(Markdown, {\n content: objectives\n }))), controlType && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Type\",\n subTitle: controlType\n }), controlOwner && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Owner\",\n subTitle: controlOwner\n }), controlFrequency && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Frequency\",\n subTitle: controlFrequency\n }), automation && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Automation\",\n subTitle: automation\n })));\n};\nvar ControlDetails$2 = styled(ControlDetails$1)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$b;\nvar RiskDetails = styled(View)(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-top: \", \";\\n }\\n\"], [\"\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-top: \", \";\\n }\\n\"])), DataCard, function (p) {\n return p.theme.spacing.getSize();\n}, RelationshipGroup, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Content$1 = styled(View)(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$c, templateObject_2$5;\nvar RelationshipGroupHeading = function (_a) {\n var title = _a.title,\n subTitle = _a.subTitle;\n return /*#__PURE__*/React.createElement(HeaderWrapper, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500,\n size: 2\n }, title), subTitle && /*#__PURE__*/React.createElement(Heading$1, {\n size: 1\n }, subTitle));\n};\nvar EmptyRelationshipGroup = function (props) {\n var className = props.className,\n heading = props.heading,\n activeTheme = props.activeTheme,\n hideTitle = props.hideTitle;\n return /*#__PURE__*/React.createElement(RelationshipGroup, {\n activeTheme: activeTheme,\n \"data-testid\": generate(['relationship-group'], props),\n className: className\n }, heading && !hideTitle && ( /*#__PURE__*/React.createElement(Count, {\n size: 2,\n weight: 500\n }, heading)), /*#__PURE__*/React.createElement(EmtpyGroupNotice, {\n size: 2,\n weight: 500\n }, \"-\"));\n};\nvar getHeaderText = function (_a) {\n var title = _a.title,\n count = _a.count,\n type = _a.type;\n if (title) return title;\n var isPlural = count !== 1;\n if (type === 'Risk Group') return \"Risk Taxonomy\";\n // Note: Invetories are now referred to as Acin Indexes in the UI, so we have to check the type and present the new naming\n if (type === 'Inventory' && isPlural) return \"\".concat(count, \" Acin Indices\");\n if (type === 'Inventory') return \"\".concat(count, \" Acin Index\");\n return \"\".concat(count, \" \").concat(type).concat(isPlural ? 's' : '');\n};\nvar allowsNavigation = ['Risk', 'Control'];\nvar RelationshipGroup$1 = function (props) {\n var className = props.className,\n type = props.type,\n items = props.items,\n onNavigate = props.onNavigate,\n title = props.title,\n subTitle = props.subTitle,\n _a = props.renderWhenEmpty,\n renderWhenEmpty = _a === void 0 ? false : _a,\n count = props.count,\n children = props.children,\n hideTitle = props.hideTitle;\n var itemCount = count || (items === null || items === void 0 ? void 0 : items.length) || 0;\n var hasItems = itemCount > 0;\n var activeTheme = useThemeProvider().activeTheme;\n var renderLinkList = function () {\n if (onNavigate) {\n var onLinkListClick = function (item) {\n var find = items === null || items === void 0 ? void 0 : items.find(function (a) {\n return a.id === item.id;\n });\n if (find && onNavigate) {\n onNavigate(find.id, find.type);\n }\n };\n var hasAction = type ? allowsNavigation.includes(type) : false;\n return /*#__PURE__*/React.createElement(LinkList, {\n links: items,\n onClick: hasAction ? onLinkListClick : undefined\n });\n }\n return null;\n };\n if (hasItems || children) {\n return /*#__PURE__*/React.createElement(RelationshipGroup, {\n activeTheme: activeTheme,\n \"data-testid\": generate(['relationship-group'], props),\n className: className\n }, !hideTitle && ( /*#__PURE__*/React.createElement(RelationshipGroupHeading, {\n subTitle: subTitle,\n title: getHeaderText({\n title: title,\n count: itemCount,\n type: type\n })\n })), children !== null && children !== void 0 ? children : renderLinkList());\n }\n if (renderWhenEmpty && !hasItems) {\n return /*#__PURE__*/React.createElement(EmptyRelationshipGroup, {\n activeTheme: activeTheme,\n heading: getHeaderText({\n title: title,\n count: itemCount,\n type: type\n }),\n hideTitle: hideTitle\n });\n }\n return null;\n};\nvar GroupedContent = function (props) {\n var heading = props.heading,\n children = props.children;\n return /*#__PURE__*/React.createElement(GroupedContentWrapper, null, /*#__PURE__*/React.createElement(GroupHeading, null, heading), children);\n};\nvar allowsNavigation$1 = ['Risk', 'Control', 'Regulation'];\nvar GroupedRelationshipGroupList = function (props) {\n var type = props.type,\n renderGroupHeading = props.renderGroupHeading,\n groups = props.groups,\n onNavigate = props.onNavigate;\n var items = React.useMemo(function () {\n return groups === null || groups === void 0 ? void 0 : groups.flatMap(function (group) {\n return group.items;\n });\n }, [groups]);\n var onLinkListClick = React.useCallback(function (item) {\n var find = items.find(function (a) {\n return a.id === item.id;\n });\n if (find) {\n onNavigate(find.id, find.type);\n }\n }, [items, onNavigate]);\n var hasAction = type ? allowsNavigation$1.includes(type) : false;\n return /*#__PURE__*/React.createElement(React.Fragment, null, groups.map(function (group, i) {\n return /*#__PURE__*/React.createElement(GroupedContent, {\n key: i,\n heading: renderGroupHeading(group)\n }, /*#__PURE__*/React.createElement(GroupedLinkList, {\n links: group.items,\n onClick: hasAction ? onLinkListClick : undefined\n }));\n }));\n};\nvar GroupedRelationshipGroupContext = /*#__PURE__*/React.createContext({\n renderGroupHeading: function () {\n return undefined;\n },\n groups: [],\n hasGroups: false,\n groupCount: 0,\n onNavigate: function () {}\n});\nvar useGroupedRelationshipGroupContext = function () {\n return React.useContext(GroupedRelationshipGroupContext);\n};\nvar GroupedRelationshipGroup = function (props) {\n var groups = props.groups,\n renderWhenEmpty = props.renderWhenEmpty,\n children = props.children;\n var groupCount = groups.length || 0;\n var hasGroups = groupCount > 0;\n return /*#__PURE__*/React.createElement(GroupedRelationshipGroupContext.Provider, {\n value: __assign(__assign({}, props), {\n groupCount: groupCount,\n hasGroups: hasGroups\n })\n }, hasGroups ? children : renderWhenEmpty ? /*#__PURE__*/React.createElement(NoGroups, null) : null);\n};\nvar Panel = function (props) {\n var children = props.children;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(RelationshipGroup, {\n activeTheme: activeTheme,\n \"data-testid\": generate(['grouped-relationship-group'], props)\n }, children);\n};\nvar Header = function () {\n var _a = useGroupedRelationshipGroupContext(),\n groupCount = _a.groupCount,\n type = _a.type;\n return /*#__PURE__*/React.createElement(RelationshipGroupHeading, {\n title: getHeaderText({\n count: groupCount,\n type: type\n })\n });\n};\nvar Accordion = function (props) {\n var heading = props.heading,\n isExpanded = props.isExpanded,\n children = props.children;\n var groups = useGroupedRelationshipGroupContext().groups;\n var groupCount = (groups === null || groups === void 0 ? void 0 : groups.length) || 0;\n var renderHeading = function () {\n return /*#__PURE__*/React.createElement(AccordionHeading, {\n size: 1\n }, \"\".concat(heading, \" (\").concat(groupCount, \")\"));\n };\n return /*#__PURE__*/React.createElement(Accordion$1, {\n \"data-testid\": generate(['grouped-relationship-group'], props),\n header: function () {\n return renderHeading();\n },\n isExpanded: isExpanded\n }, children);\n};\nvar Groups = function () {\n var _a = useGroupedRelationshipGroupContext(),\n groups = _a.groups,\n type = _a.type,\n renderGroupHeading = _a.renderGroupHeading,\n onNavigate = _a.onNavigate;\n return /*#__PURE__*/React.createElement(GroupedRelationshipGroupList, {\n type: type,\n renderGroupHeading: renderGroupHeading,\n groups: groups,\n onNavigate: onNavigate\n });\n};\nvar NoGroups = function () {\n var _a = useGroupedRelationshipGroupContext(),\n groups = _a.groups,\n type = _a.type;\n var groupCount = (groups === null || groups === void 0 ? void 0 : groups.length) || 0;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(EmptyRelationshipGroup, {\n activeTheme: activeTheme,\n heading: getHeaderText({\n count: groupCount,\n type: type\n })\n });\n};\nGroupedRelationshipGroup.Panel = Panel;\nGroupedRelationshipGroup.Header = Header;\nGroupedRelationshipGroup.Accordion = Accordion;\nGroupedRelationshipGroup.Groups = Groups;\nGroupedRelationshipGroup.NoGroups = NoGroups;\nvar RelationshipGroup$2 = styled(RelationshipGroup$1)(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\"], [\"\"])));\nvar GroupedRelationshipGroup$1 = styled(GroupedRelationshipGroup)(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$d, templateObject_2$6;\nvar RiskGroup = function (props) {\n var data = props.data,\n pageRiskId = props.pageRiskId,\n onNavigate = props.onNavigate;\n var items = (data.risks || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n }).filter(function (item) {\n return item.id !== pageRiskId;\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Risk\",\n title: \"Risk Taxonomy\",\n subTitle: \"Other risks belonging to \\u2018\".concat(data.name, \"\\u2019\"),\n items: items,\n onNavigate: onNavigate\n }));\n};\nvar RiskDetails$1 = function (props) {\n var className = props.className,\n data = props.data,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var getData = function () {\n switch (data === null || data === void 0 ? void 0 : data.__typename) {\n case 'AcinRisk':\n return {\n id: data.id,\n name: data.title,\n description: data.description,\n riskCode: data.riskCode,\n riskSource: data.riskSource,\n riskGroup: data.riskGroup\n };\n case 'ClientRisk':\n return {\n id: data.id,\n name: data.title,\n description: data.optionalDescription,\n riskCode: data.optionalRiskCode,\n riskLevel: data.optionalRiskLevel,\n riskReason: data.optionalRiskReason,\n riskSource: data.optionalRiskSource\n };\n default:\n return {};\n }\n };\n var _a = getData(),\n id = _a.id,\n name = _a.name,\n description = _a.description,\n riskCode = _a.riskCode,\n riskLevel = _a.riskLevel,\n riskReason = _a.riskReason,\n riskSource = _a.riskSource,\n riskGroup = _a.riskGroup;\n var getTitle = (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Risk Details\") : 'Your Risk Details';\n return /*#__PURE__*/React.createElement(RiskDetails, {\n \"data-testid\": generate(['risk-details'], props),\n className: className,\n id: id\n }, /*#__PURE__*/React.createElement(Heading$1, {\n size: 2,\n weight: 500\n }, (data === null || data === void 0 ? void 0 : data.__typename) === 'ClientRisk' ? getTitle : 'Network Risk Details'), /*#__PURE__*/React.createElement(Content$1, {\n \"data-testid\": generate(['risk-details__content'], props)\n }, name && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n subTitle: name\n }), riskLevel && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Level\",\n subTitle: riskLevel\n }), riskCode && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n subTitle: riskCode\n }), riskSource && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n subTitle: riskSource\n }), riskReason && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Reason\",\n subTitle: riskReason\n }), description && ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\"\n }, /*#__PURE__*/React.createElement(ShowMore, {\n showPreview: true,\n text: description\n })))), riskGroup && /*#__PURE__*/React.createElement(RiskGroup, {\n pageRiskId: id,\n data: riskGroup,\n onNavigate: onNavigate\n }));\n};\nvar RiskDetails$2 = styled(RiskDetails$1)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$e;\nvar DataRelationships = styled(View)(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n \", \" {\\n margin-bottom: \", \";\\n &:last-child {\\n margin-bottom: 0;\\n }\\n }\\n\"], [\"\\n \", \" {\\n margin-bottom: \", \";\\n &:last-child {\\n margin-bottom: 0;\\n }\\n }\\n\"])), RelationshipGroup, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar HeadingText$2 = styled(Heading$1)(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n line-height: 1;\\n margin-bottom: \", \";\\n\"], [\"\\n line-height: 1;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar GroupHeader = styled(View)(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n align-items: center;\\n display: flex;\\n margin-bottom: \", \";\\n\"], [\"\\n align-items: center;\\n display: flex;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar GroupHeaderTextSplitter = styled(View)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n padding-left: \", \";\\n padding-right: \", \";\\n\"], [\"\\n padding-left: \", \";\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar GroupHeadingText = styled(Text$1)(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n color: \", \";\\n\"], [\"\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(0);\n});\nvar templateObject_1$f, templateObject_2$7, templateObject_3$4, templateObject_4$3, templateObject_5$3;\nvar containerBackground$1 = themeHelpers.containerBackground;\nvar RiskDataListAccordian = styled(Accordion$1)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\\n box-shadow: none;\\n padding: \", \";\\n \", \";\\n\"], [\"\\n box-shadow: none;\\n padding: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$1(p.activeTheme);\n});\nvar RiskDataListNestedAccordian = styled(Accordion$1)(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\\n box-shadow: none;\\n padding: 0;\\n \", \";\\n\"], [\"\\n box-shadow: none;\\n padding: 0;\\n \", \";\\n\"])), function (p) {\n return containerBackground$1(p.activeTheme);\n});\nvar AccordianContent = styled(View)(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\\n > div {\\n border-bottom: 1px solid\\n \", \";\\n }\\n > div:last-child {\\n border-bottom: none;\\n }\\n\"], [\"\\n > div {\\n border-bottom: 1px solid\\n \", \";\\n }\\n > div:last-child {\\n border-bottom: none;\\n }\\n\"])), function (p) {\n return p.activeTheme.name === 'dark' ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue(0);\n});\nvar AccordionContentNested = styled(View)(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n padding-left: \", \";\\n\"], [\"\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar RiskDataList = styled(View)(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar RiskDataListContent = styled(AccordianContent)(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n padding-top: \", \";\\n\"], [\"\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar RiskDataListDescription = styled(Text$1)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n border-bottom: none !important;\\n\"], [\"\\n padding-bottom: \", \";\\n border-bottom: none !important;\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar RiskDataRow = styled(View)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar RiskDatalLink = styled(Link)(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject([\"\\n display: block;\\n & div {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n display: block;\\n & div {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n});\nvar RiskDataLinkList = styled(LinkList)(templateObject_10$1 || (templateObject_10$1 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n\"], [\"\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar RiskIntelText = styled(Text$1)(templateObject_11$1 || (templateObject_11$1 = __makeTemplateObject([\"\\n padding-top: \", \";\\n color: \", \";\\n\"], [\"\\n padding-top: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar RegListHeader = styled(Text$1)(templateObject_12$1 || (templateObject_12$1 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n\"], [\"\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ImpactedRegRowHeader = styled(View)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar HeaderText = styled(Text$1)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar HeaderWrapper$1 = styled(View)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar templateObject_1$g, templateObject_2$8, templateObject_3$5, templateObject_4$4, templateObject_5$4, templateObject_6$2, templateObject_7$1, templateObject_8$1, templateObject_9$1, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13, templateObject_14, templateObject_15;\nvar RiskDataList$1 = function (props) {\n var id = props.id,\n listCount = props.listCount,\n listName = props.listName,\n className = props.className,\n listDescription = props.listDescription,\n children = props.children,\n _a = props.withAccordion,\n withAccordion = _a === void 0 ? true : _a,\n headerActions = props.headerActions;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n \"data-testid\": generate(['risk-data-list'], props)\n }, withAccordion ? ( /*#__PURE__*/React.createElement(RiskDataListAccordian, {\n className: className,\n defaultOpen: true,\n header: function () {\n return /*#__PURE__*/React.createElement(RiskDataHeader, {\n listName: listName,\n listCount: listCount,\n headerActions: headerActions\n });\n },\n activeTheme: activeTheme\n }, listDescription && /*#__PURE__*/React.createElement(RiskDataListDescription, null, listDescription), /*#__PURE__*/React.createElement(AccordianContent, {\n activeTheme: activeTheme\n }, children))) : ( /*#__PURE__*/React.createElement(RiskDataList, null, /*#__PURE__*/React.createElement(RiskDataHeader, {\n listName: listName,\n listCount: listCount\n }), listDescription && /*#__PURE__*/React.createElement(RiskDataListDescription, null, listDescription), /*#__PURE__*/React.createElement(RiskDataListContent, {\n activeTheme: activeTheme\n }, children))));\n};\nvar RiskDataHeader = function (_a) {\n var listName = _a.listName,\n listCount = _a.listCount,\n headerActions = _a.headerActions;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(HeaderWrapper$1, null, /*#__PURE__*/React.createElement(HeaderText, {\n size: 1,\n weight: 500,\n color: activeTheme.colors.accent1.getValue(1).main\n }, listName, \" \", listCount && \"(\".concat(listCount, \")\")), headerActions);\n};\nvar ImpactedRegListContent = function (props) {\n var data = props.data,\n isExpanded = props.isExpanded,\n id = props.id;\n var activeTheme = useThemeProvider().activeTheme;\n var sortedByRegulation = __spreadArray([], __read(data), false).sort(function (_a, _b) {\n var a = _a.regulator;\n var b = _b.regulator;\n return a.name.localeCompare(b.name);\n });\n var sortedByArticles = sortedByRegulation.map(function (item) {\n var _a;\n return ((_a = item.articles) === null || _a === void 0 ? void 0 : _a.length) ? __assign(__assign({}, item), {\n articles: __spreadArray([], __read(item.articles), false).sort(function (_a) {\n var a = _a.name,\n b = _a.name;\n return a.localeCompare(b);\n })\n }) : item;\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, sortedByArticles.map(function (_a) {\n var regulationId = _a.id,\n name = _a.name,\n regulator = _a.regulator,\n articles = _a.articles;\n return /*#__PURE__*/React.createElement(RiskDataRow, {\n key: \"\".concat(id, \"-\").concat(regulationId)\n }, /*#__PURE__*/React.createElement(RiskDataListNestedAccordian, {\n isExpanded: isExpanded,\n header: function () {\n return /*#__PURE__*/React.createElement(ImpactedRegRowHeader, null, /*#__PURE__*/React.createElement(View, null, \"\".concat(regulator.name, \" | \"), /*#__PURE__*/React.createElement(Text$1, {\n inline: true,\n weight: 500\n }, name)), articles && /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, articles === null || articles === void 0 ? void 0 : articles.length, \" articles\"));\n },\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(AccordionContentNested, {\n activeTheme: activeTheme\n }, articles === null || articles === void 0 ? void 0 : articles.map(function (_a) {\n var articleId = _a.id,\n name = _a.name,\n url = _a.url;\n return url ? ( /*#__PURE__*/React.createElement(RiskDatalLink, {\n variant: \"secondary\",\n key: \"\".concat(id, \"-\").concat(regulationId, \"-\").concat(articleId),\n href: url,\n newWindow: true\n }, name)) : ( /*#__PURE__*/React.createElement(Text$1, {\n key: \"\".concat(id, \"-\").concat(regulationId, \"-\").concat(articleId)\n }, name));\n }))));\n }));\n};\nvar ImpactedRegulationsList = function (props) {\n var data = props.data,\n id = props.id;\n var _a = __read(React.useState(false), 2),\n expandAll = _a[0],\n setExpandAll = _a[1];\n var toggleExpandAll = function () {\n setExpandAll(!expandAll);\n };\n return /*#__PURE__*/React.createElement(RiskDataList$1, {\n id: \"impacted-regulations-risk-data\",\n listName: \"Impacted Regulations\",\n listCount: data.length,\n headerActions: /*#__PURE__*/React.createElement(Button, {\n variant: \"borderless\",\n label: expandAll ? 'Collapse All Regulations' : 'Expand All Regulations',\n onClick: toggleExpandAll\n })\n }, /*#__PURE__*/React.createElement(ImpactedRegListContent, {\n id: id,\n isExpanded: expandAll,\n data: data\n }));\n};\nvar ProductsGroup = function (props) {\n var className = props.className,\n products = props.products,\n hideTitle = props.hideTitle;\n var activeTheme = useThemeProvider().activeTheme;\n var hasProducts = products && (products === null || products === void 0 ? void 0 : products.length) > 0;\n var findProductsByType = function (type) {\n var productsByType = [];\n if (products) {\n productsByType = products.filter(function (product) {\n return product.type === type;\n });\n }\n return productsByType.length === 0 ? null : productsByType;\n };\n var buildCategoryRow = function (type) {\n var _a;\n var items = (_a = findProductsByType(type)) === null || _a === void 0 ? void 0 : _a.sort(function (a, b) {\n return a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n });\n return items ? ( /*#__PURE__*/React.createElement(ProductGroup, null, /*#__PURE__*/React.createElement(ProductType, {\n size: -1\n }, type.toLowerCase()), /*#__PURE__*/React.createElement(ProductList, null, items.map(function (product) {\n return /*#__PURE__*/React.createElement(Product, {\n key: product.id,\n variant: \"default\",\n text: product.label\n });\n })))) : undefined;\n };\n return /*#__PURE__*/React.createElement(RelationshipGroup, {\n activeTheme: activeTheme,\n \"data-testid\": generate(['relationship-group'], props),\n className: className\n }, !hideTitle && /*#__PURE__*/React.createElement(RelationshipGroupHeading, {\n title: !hasProducts ? '0 Products' : 'Products'\n }), hasProducts ? ( /*#__PURE__*/React.createElement(React.Fragment, null, buildCategoryRow(IProductType.Asset), buildCategoryRow(IProductType.Trading), buildCategoryRow(IProductType.Settlement), buildCategoryRow(IProductType.Instrument))) : '-');\n};\nvar DataRelationships$1 = function (props) {\n var className = props.className,\n _a = props.title,\n title = _a === void 0 ? 'Data Relationships' : _a,\n relatedRisks = props.relatedRisks,\n relatedControls = props.relatedControls,\n relatedBusinessLines = props.relatedBusinessLines,\n relatedRisksInventories = props.relatedRisksInventories,\n relatedRegulations = props.relatedRegulations,\n onNavigate = props.onNavigate,\n themes = props.keywords,\n products = props.products,\n showProducts = props.showProducts,\n hideProductsTitle = props.hideProductsTitle,\n hideThemesTitle = props.hideThemesTitle;\n var accountHasThemes = themes === null || themes === void 0 ? void 0 : themes.find(function (item) {\n return item.code.toLowerCase() === 'theme';\n });\n var riskItems = (relatedRisks || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n });\n var riskInventoryItems = (relatedRisksInventories || []).map(function (item) {\n return {\n id: item.id,\n label: item.name,\n type: item.__typename,\n href: undefined\n };\n });\n var controlItems = (relatedControls || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename,\n href: undefined\n };\n });\n var businessLineItems = (relatedBusinessLines || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename,\n href: undefined\n };\n });\n var themeItems = (accountHasThemes ? accountHasThemes.items : []).map(function (item) {\n return {\n id: item.id,\n label: item.name,\n type: 'Theme'\n };\n });\n var productItems = (products || []).map(function (item) {\n return {\n id: item.id,\n label: item.label,\n type: item.type\n };\n });\n return /*#__PURE__*/React.createElement(DataRelationships, {\n \"data-testid\": generate(['data-relationships'], props),\n className: className\n }, /*#__PURE__*/React.createElement(HeadingText$2, {\n weight: 500,\n size: 2\n }, title), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Control\",\n items: controlItems,\n onNavigate: onNavigate\n }), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Risk\",\n items: riskItems,\n onNavigate: onNavigate\n }), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Inventory\",\n items: riskInventoryItems,\n onNavigate: onNavigate\n }), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Regulation\",\n count: relatedRegulations === null || relatedRegulations === void 0 ? void 0 : relatedRegulations.length\n }, (relatedRegulations === null || relatedRegulations === void 0 ? void 0 : relatedRegulations.length) ? ( /*#__PURE__*/React.createElement(ImpactedRegListContent, {\n id: \"RegulationList\",\n data: relatedRegulations\n })) : null), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Business Line\",\n items: businessLineItems,\n onNavigate: onNavigate\n }), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Theme\",\n items: themeItems,\n onNavigate: onNavigate,\n renderWhenEmpty: accountHasThemes !== undefined,\n hideTitle: hideThemesTitle\n }), showProducts && /*#__PURE__*/React.createElement(ProductsGroup, {\n products: productItems,\n hideTitle: hideProductsTitle\n }));\n};\nvar DataRelationships$2 = styled(DataRelationships$1)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$h;\nvar Overview$1 = function (props) {\n var className = props.className,\n controlData = props.controlData,\n riskData = props.riskData,\n onNavigate = props.onNavigate,\n _a = props.loading,\n loading = _a === void 0 ? false : _a;\n var user = useAuth().user;\n var isControl = ['ClientControl', 'AcinControl'].includes(controlData === null || controlData === void 0 ? void 0 : controlData.__typename);\n var isRisk = ['ClientRisk', 'AcinRisk'].includes(riskData === null || riskData === void 0 ? void 0 : riskData.__typename);\n var renderDataRelationships = function () {\n if (isControl && (controlData === null || controlData === void 0 ? void 0 : controlData.__typename) === 'ClientControl') {\n return /*#__PURE__*/React.createElement(DataRelationshipsWrapper, null, /*#__PURE__*/React.createElement(DataRelationships$2, {\n title: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Data Relationships\") : 'Data Relationships',\n relatedBusinessLines: (controlData === null || controlData === void 0 ? void 0 : controlData.relatedBusinessLines) || undefined,\n relatedRisks: (controlData === null || controlData === void 0 ? void 0 : controlData.relatedRisks) || undefined,\n onNavigate: onNavigate,\n keywords: controlData === null || controlData === void 0 ? void 0 : controlData.keywords,\n hideProductsTitle: true,\n hideThemesTitle: true\n }));\n }\n if (isControl && (controlData === null || controlData === void 0 ? void 0 : controlData.__typename) === 'AcinControl') {\n return /*#__PURE__*/React.createElement(DataRelationshipsWrapper, null, /*#__PURE__*/React.createElement(DataRelationships$2, {\n title: \"Acin Data Relationships\",\n relatedRisks: (controlData === null || controlData === void 0 ? void 0 : controlData.relatedRisks) || undefined,\n relatedRisksInventories: controlData.relatedRiskInventories,\n relatedRegulations: controlData.relatedRegulations,\n onNavigate: onNavigate,\n keywords: controlData === null || controlData === void 0 ? void 0 : controlData.keywords,\n products: controlData === null || controlData === void 0 ? void 0 : controlData.products,\n showProducts: true\n }));\n }\n if (isRisk && (riskData === null || riskData === void 0 ? void 0 : riskData.__typename) === 'ClientRisk') {\n return /*#__PURE__*/React.createElement(DataRelationshipsWrapper, null, /*#__PURE__*/React.createElement(DataRelationships$2, {\n title: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Data Relationships\") : 'Your Data Relationships',\n relatedBusinessLines: (riskData === null || riskData === void 0 ? void 0 : riskData.relatedBusinessLines) || undefined,\n relatedControls: (riskData === null || riskData === void 0 ? void 0 : riskData.relatedClientControls) || undefined,\n onNavigate: onNavigate\n }));\n }\n if (isRisk && (riskData === null || riskData === void 0 ? void 0 : riskData.__typename) === 'AcinRisk') {\n return /*#__PURE__*/React.createElement(DataRelationshipsWrapper, null, /*#__PURE__*/React.createElement(DataRelationships$2, {\n title: \"Network Data Relationships\",\n onNavigate: onNavigate,\n relatedRisksInventories: riskData.relatedRiskInventories,\n relatedControls: riskData.relatedControls\n }));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Overview, {\n \"data-testid\": generate(['overview'], props),\n className: className\n }, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }), /*#__PURE__*/React.createElement(DetailsWrapper, null, isControl && /*#__PURE__*/React.createElement(ControlDetails$2, {\n data: controlData\n }), isRisk && /*#__PURE__*/React.createElement(RiskDetails$2, {\n onNavigate: onNavigate,\n data: riskData\n })), renderDataRelationships());\n};\nvar Overview$2 = styled(Overview$1)(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$i;\nvar NetworkMatch = styled(View)(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\\n position: relative;\\n min-height: 300px;\\n\"], [\"\\n position: relative;\\n min-height: 300px;\\n\"])));\n/* padding-right: ${(p) => p.theme.spacing.getSize(6)}; */\nvar MatchSection = styled(View)(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n padding: \", \";\\n padding-left: \", \";\\n\\n &:last-child {\\n padding-bottom: \", \";\\n }\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n padding: \", \";\\n padding-left: \", \";\\n\\n &:last-child {\\n padding-bottom: \", \";\\n }\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, CompareRow, function (p) {\n return p.theme.spacing.getSize(1);\n}, Alert, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Content$2 = styled(View)(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar AlertWrapper = styled(View)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$j, templateObject_2$9, templateObject_3$6, templateObject_4$5;\nvar CompareRow$1 = function (props) {\n var className = props.className,\n a = props.a,\n b = props.b,\n _a = props.isHeader,\n isHeader = _a === void 0 ? false : _a,\n id = props.id;\n return /*#__PURE__*/React.createElement(CompareRow, {\n \"data-testid\": generate(['compare-row'], props),\n className: className,\n isHeader: isHeader,\n id: id\n }, a(), b());\n};\nvar CompareHeader = function (props) {\n var className = props.className,\n headingA = props.headingA,\n headingB = props.headingB,\n countA = props.countA,\n countB = props.countB,\n nss = props.nss,\n controlQualityScore = props.controlQualityScore,\n onClickRewrite = props.onClickRewrite;\n return /*#__PURE__*/React.createElement(CompareRow$1, {\n isHeader: true,\n className: className,\n \"data-testid\": generate(['compare-header'], props),\n a: function () {\n return /*#__PURE__*/React.createElement(HeadingWrapper$1, null, /*#__PURE__*/React.createElement(HeadingText$1, {\n size: 2,\n weight: 500,\n ellipsis: true\n }, headingA, countA && \"(\".concat(countA, \")\")), controlQualityScore && ( /*#__PURE__*/React.createElement(Actions, null, /*#__PURE__*/React.createElement(Rewrite, {\n label: \"Rewrite This Control Description\",\n onClick: onClickRewrite,\n variant: \"link\"\n }), /*#__PURE__*/React.createElement(ControlDescriptionQuality$2, {\n data: controlQualityScore\n }))));\n },\n b: function () {\n return /*#__PURE__*/React.createElement(HeadingWrapper$1, null, /*#__PURE__*/React.createElement(HeadingText$1, {\n size: 2,\n weight: 500,\n ellipsis: true,\n withLogo: true\n }, headingB, countB && \"(\".concat(countB, \")\")), nss && /*#__PURE__*/React.createElement(AcinControlNetworkSignalScore$2, {\n data: nss\n }));\n }\n });\n};\nvar CompareControlDetails = function (props) {\n var renderMultipleA = props.renderMultipleA,\n renderMultipleB = props.renderMultipleB,\n isDescriptionExpanded = props.isDescriptionExpanded,\n controlA = props.controlA,\n controlB = props.controlB,\n highlightedFields = props.highlightedFields,\n controlALink = props.controlALink,\n controlBLink = props.controlBLink;\n var _a = __read(useState(isDescriptionExpanded), 2),\n showDescription = _a[0],\n setShowDescription = _a[1];\n var toggleDescription = function () {\n setShowDescription(!showDescription);\n };\n var applyHighlight = function (name) {\n if (highlightedFields.includes(name)) {\n return 'warning';\n } else {\n return undefined;\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return renderMultipleA || ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n state: applyHighlight('title'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.title) || '-',\n href: controlALink\n }));\n },\n b: function () {\n return renderMultipleB || ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n state: applyHighlight('title'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.title) || '-',\n href: controlBLink\n }));\n }\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n state: applyHighlight('controlCode'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlCode) || '-'\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n state: applyHighlight('controlCode'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.controlCode) || '-'\n });\n }\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n state: applyHighlight('controlSource'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlSource) || '-'\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n state: applyHighlight('controlSource'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.controlSource) || '-'\n });\n }\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\",\n state: applyHighlight('description'),\n \"data-testid\": \"client-control-description\"\n }, (controlA === null || controlA === void 0 ? void 0 : controlA.optionalDescription) && ( /*#__PURE__*/React.createElement(ShowMore, {\n showPreview: true,\n isExpanded: showDescription,\n onChange: toggleDescription,\n text: controlA.optionalDescription\n })));\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\",\n state: applyHighlight('description'),\n \"data-testid\": \"acin-control-description\"\n }, /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n control: controlB,\n toggleDescription: toggleDescription,\n showDescription: showDescription\n }));\n },\n id: \"description\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Objectives\",\n state: applyHighlight('objectives'),\n \"data-testid\": \"client-control-objectives\"\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n weight: 400\n }, (controlA === null || controlA === void 0 ? void 0 : controlA.optionalObjectives) || '-'));\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Objectives\",\n state: applyHighlight('objectives'),\n \"data-testid\": \"acin-control-objectives\"\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n weight: 400\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.objectives) || '-'));\n },\n id: \"objectives\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Type\",\n state: applyHighlight('controlType'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlType) || '-',\n \"data-testid\": \"client-control-type\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Type\",\n state: applyHighlight('controlType'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.controlType) || '-',\n \"data-testid\": \"acin-control-type\"\n });\n },\n id: \"type\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Owner\",\n state: applyHighlight('controlOwner'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlOwner) || '-',\n \"data-testid\": \"client-control-owner\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Owner\",\n state: applyHighlight('controlOwner'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.controlOwner) || '-',\n \"data-testid\": \"acin-control-owner\"\n });\n },\n id: \"owner\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Frequency\",\n state: applyHighlight('controlFrequency'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlFrequency) || '-',\n \"data-testid\": \"client-control-frequency\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Frequency\",\n state: applyHighlight('controlFrequency'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.controlFrequency) || '-',\n \"data-testid\": \"acin-control-frequency\"\n });\n },\n id: \"frequency\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Automation\",\n state: applyHighlight('automation'),\n subTitle: (controlA === null || controlA === void 0 ? void 0 : controlA.automation) || '-',\n \"ata-testid\": \"client-control-automation\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(DataCard, {\n title: \"Automation\",\n state: applyHighlight('automation'),\n subTitle: (controlB === null || controlB === void 0 ? void 0 : controlB.automation) || '-',\n \"ata-testid\": \"acin-control-automation\"\n });\n },\n id: \"automation\"\n }));\n};\nvar CompareDataRelationships = styled(View)(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), CompareRow, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Spacer = styled(View)(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$k, templateObject_2$a;\nvar CompareDataRelationships$1 = function (props) {\n var _a, _b;\n var controlA = props.controlA,\n controlB = props.controlB,\n onNavigate = props.onNavigate;\n var controlARiskItems = ((controlA === null || controlA === void 0 ? void 0 : controlA.relatedRisks) || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n });\n var controlBRiskItems = ((controlB === null || controlB === void 0 ? void 0 : controlB.relatedRisks) || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n });\n var controlABusinessLineItems = ((controlA === null || controlA === void 0 ? void 0 : controlA.relatedBusinessLines) || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename,\n href: undefined\n };\n });\n var controlBRiskInventoryItems = ((controlB === null || controlB === void 0 ? void 0 : controlB.relatedRiskInventories) || []).map(function (item) {\n return {\n id: item.id,\n label: item.name,\n type: item.__typename,\n href: undefined\n };\n });\n var controlAThemes = (_a = controlA === null || controlA === void 0 ? void 0 : controlA.keywords) === null || _a === void 0 ? void 0 : _a.find(function (item) {\n return item.code.toLowerCase() === 'theme';\n });\n var controlBThemes = (_b = controlB === null || controlB === void 0 ? void 0 : controlB.keywords) === null || _b === void 0 ? void 0 : _b.find(function (item) {\n return item.code.toLowerCase() === 'theme';\n });\n var controlAThemeItems = (controlAThemes ? controlAThemes.items : []).map(function (item) {\n return {\n id: item.id,\n label: item.name,\n type: 'Theme'\n };\n });\n var controlBThemeItems = (controlBThemes ? controlBThemes.items : []).map(function (item) {\n return {\n id: item.id,\n label: item.name,\n type: 'Theme'\n };\n });\n var controlBRelatedProducts = (controlB === null || controlB === void 0 ? void 0 : controlB.products) ? controlB.products : [];\n return /*#__PURE__*/React.createElement(CompareDataRelationships, null, /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Risk\",\n items: controlARiskItems,\n onNavigate: onNavigate,\n \"data-testid\": \"client-control-risk\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Risk\",\n items: controlBRiskItems,\n onNavigate: onNavigate,\n \"data-testid\": \"acin-control-risk\"\n });\n },\n id: \"risks\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Business Line\",\n items: controlABusinessLineItems,\n onNavigate: onNavigate,\n \"data-testid\": \"client-control-business-line\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Inventory\",\n items: controlBRiskInventoryItems,\n onNavigate: onNavigate,\n \"data-testid\": \"acin-control-inventory\"\n });\n },\n id: \"business-lines\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Regulation\",\n items: [],\n onNavigate: onNavigate,\n \"data-testid\": \"client-control-regulation\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n type: \"Regulation\",\n count: controlB === null || controlB === void 0 ? void 0 : controlB.relatedRegulations.length,\n \"data-testid\": \"acin-control-regulation\"\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.relatedRegulations) && ( /*#__PURE__*/React.createElement(ImpactedRegListContent, {\n key: controlB.id,\n id: controlB.id,\n data: controlB.relatedRegulations\n })));\n },\n id: \"regulations\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Theme\",\n items: controlAThemeItems,\n onNavigate: onNavigate,\n hideTitle: true,\n \"data-testid\": \"client-control-theme\"\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n type: \"Theme\",\n count: controlBThemeItems.length,\n items: controlBThemeItems,\n onNavigate: onNavigate,\n \"data-testid\": \"acin-control-theme\"\n });\n },\n id: \"themes\"\n }), /*#__PURE__*/React.createElement(CompareRow$1, {\n a: function () {\n return /*#__PURE__*/React.createElement(ProductsGroup, {\n hideTitle: true\n });\n },\n b: function () {\n return /*#__PURE__*/React.createElement(ProductsGroup, {\n products: controlBRelatedProducts\n });\n },\n id: \"products\"\n }));\n};\nvar AlertMessage = function (_a) {\n var data = _a.data;\n if (!data) return null;\n var status = data.type.toLowerCase();\n return /*#__PURE__*/React.createElement(Alert, {\n status: status,\n title: data.title,\n message: data.message || undefined\n });\n};\nvar ViewControlButtonPanel = styled(View)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: \", \";\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: \", \";\\n margin-top: \", \";\\n\"])), function (p) {\n return p.controlType === 'ClientControl' ? 'row' : 'row-reverse';\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$l;\nvar ViewControlButtonPanel$1 = function (props) {\n var controlType = props.controlType,\n controlLink = props.controlLink,\n matchedControlLink = props.matchedControlLink;\n if (!controlLink && !matchedControlLink) return null;\n return /*#__PURE__*/React.createElement(ViewControlButtonPanel, {\n controlType: controlType\n }, controlLink !== undefined ? ( /*#__PURE__*/React.createElement(Link, {\n asButton: true,\n variant: \"secondary\",\n disabled: controlLink === null,\n href: typeof controlLink === 'string' ? controlLink : undefined\n }, \"View Control Detail Page\")) : ( /*#__PURE__*/React.createElement(\"div\", null)), matchedControlLink !== undefined ? ( /*#__PURE__*/React.createElement(Link, {\n asButton: true,\n variant: \"secondary\",\n disabled: matchedControlLink === null,\n href: typeof matchedControlLink === 'string' ? matchedControlLink : undefined\n }, \"View Matched Control Detail Page\")) : ( /*#__PURE__*/React.createElement(\"div\", null)));\n};\nvar useControlLink = function (controlType, controlAId, controlBId) {\n var controlLink = React.useMemo(function () {\n var id = controlType === 'ClientControl' ? controlBId : controlAId;\n if (id) {\n return \"/calibrate/control/\".concat(id);\n }\n return undefined;\n }, [controlAId, controlBId, controlType]);\n return controlLink;\n};\nvar CompareControlOneToOne = function (props) {\n var _a, _b, _c, _d;\n var className = props.className,\n data = props.data,\n controlType = props.controlType,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var _e = useControlRewrite(),\n onUpdateCopiedDescription = _e.onUpdateCopiedDescription,\n navigateToRewrite = _e.navigateToRewrite;\n var controlLink = useControlLink(controlType, (_a = data.controlA) === null || _a === void 0 ? void 0 : _a.id, (_b = data.controlB) === null || _b === void 0 ? void 0 : _b.id);\n var handleRedirect = function () {\n var _a, _b;\n ((_a = data.controlA) === null || _a === void 0 ? void 0 : _a.optionalDescription) && onUpdateCopiedDescription((_b = data.controlA) === null || _b === void 0 ? void 0 : _b.optionalDescription);\n navigateToRewrite();\n };\n return /*#__PURE__*/React.createElement(View, {\n \"data-testid\": generate(['compare-control--one-to-one'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n }), /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Control Details\") : 'Your Control Details',\n headingB: \"Matched Index Control Details\",\n nss: ((_c = data.controlB) === null || _c === void 0 ? void 0 : _c.nss) || undefined,\n controlQualityScore: ((_d = data.controlA) === null || _d === void 0 ? void 0 : _d.controlQualityScore) || undefined,\n onClickRewrite: handleRedirect\n }), /*#__PURE__*/React.createElement(CompareControlDetails, {\n controlA: data.controlA || undefined,\n controlB: data.controlB || undefined,\n controlALink: controlType === 'AcinControl' ? controlLink : undefined,\n controlBLink: controlType === 'ClientControl' ? controlLink : undefined,\n highlightedFields: data.highlightedFields\n }), /*#__PURE__*/React.createElement(ViewControlButtonPanel$1, {\n controlType: controlType,\n matchedControlLink: controlLink\n })), /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Data Relationships\") : 'Your Data Relationships',\n headingB: \"Data Relationships\"\n }), /*#__PURE__*/React.createElement(CompareDataRelationships$1, {\n onNavigate: onNavigate,\n controlA: data.controlA || undefined,\n controlB: data.controlB || undefined\n })));\n};\nvar ControlSelect$1 = function (props) {\n var className = props.className,\n data = props.data,\n value = props.value,\n onChange = props.onChange;\n return /*#__PURE__*/React.createElement(ControlSelect, {\n \"data-testid\": generate(['controls-select'], props),\n className: className\n }, /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n subTitle: /*#__PURE__*/React.createElement(Select, {\n fullWidthDropdown: true,\n options: data,\n value: value,\n onChange: function (value) {\n return onChange(value);\n }\n })\n }));\n};\nvar ControlSelect$2 = styled(ControlSelect$1)(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$m;\nvar formatControlSelectData = function (data) {\n var _a, _b;\n switch (data.__typename) {\n case 'CompareControlOneToMany':\n return (_a = data.controlsB) === null || _a === void 0 ? void 0 : _a.map(function (item) {\n return {\n label: item.title,\n value: item.id\n };\n });\n case 'CompareControlManyToOne':\n return (_b = data.controlsA) === null || _b === void 0 ? void 0 : _b.map(function (item) {\n return {\n label: item.title,\n value: item.id\n };\n });\n default:\n return [];\n }\n};\nvar CompareControlOneToMany = function (props) {\n var _a, _b;\n var className = props.className,\n data = props.data,\n controlType = props.controlType,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var _c = useControlRewrite(),\n onUpdateCopiedDescription = _c.onUpdateCopiedDescription,\n navigateToRewrite = _c.navigateToRewrite;\n var handleRedirect = function () {\n var _a, _b;\n ((_a = data.controlA) === null || _a === void 0 ? void 0 : _a.optionalDescription) && onUpdateCopiedDescription((_b = data.controlA) === null || _b === void 0 ? void 0 : _b.optionalDescription);\n navigateToRewrite();\n };\n var controlData = data.controlsB;\n var _d = __read(useState(controlData && controlData[0]), 2),\n activeControl = _d[0],\n setActiveControl = _d[1];\n var matchedControlLink = useControlLink(controlType, (_a = data.controlA) === null || _a === void 0 ? void 0 : _a.id, activeControl === null || activeControl === void 0 ? void 0 : activeControl.id);\n var controlLink = controlType === 'AcinControl' ? (activeControl === null || activeControl === void 0 ? void 0 : activeControl.id) !== data.id ? activeControl === null || activeControl === void 0 ? void 0 : activeControl.id : null : undefined;\n var handleSetActiveControl = function (value) {\n var matchedControl = controlData === null || controlData === void 0 ? void 0 : controlData.find(function (item) {\n return value === item.id;\n });\n if (matchedControl) return setActiveControl(matchedControl);\n };\n var controlCount = controlData && \"(\".concat(controlData.length, \")\");\n return /*#__PURE__*/React.createElement(View, {\n \"data-testid\": generate(['compare-control--one-to-many'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n }), /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Control Details\") : 'Your Control Details',\n headingB: \"Matched Index Control Details \".concat(controlCount),\n nss: (activeControl === null || activeControl === void 0 ? void 0 : activeControl.nss) || undefined,\n controlQualityScore: ((_b = data.controlA) === null || _b === void 0 ? void 0 : _b.controlQualityScore) || undefined,\n onClickRewrite: handleRedirect\n }), /*#__PURE__*/React.createElement(CompareControlDetails, {\n controlA: data.controlA || undefined,\n controlB: activeControl || undefined,\n controlALink: controlType === 'AcinControl' ? matchedControlLink : undefined,\n controlBLink: controlType === 'ClientControl' ? matchedControlLink : undefined,\n renderMultipleB: /*#__PURE__*/React.createElement(ControlSelect$2, {\n data: formatControlSelectData(data) || [],\n value: (activeControl === null || activeControl === void 0 ? void 0 : activeControl.id) || '',\n onChange: handleSetActiveControl\n }),\n highlightedFields: []\n }), /*#__PURE__*/React.createElement(ViewControlButtonPanel$1, {\n controlType: controlType,\n controlLink: controlLink,\n matchedControlLink: matchedControlLink\n })), /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Data Relationships\") : 'Your Data Relationships',\n headingB: \"Data Relationships\"\n }), /*#__PURE__*/React.createElement(CompareDataRelationships$1, {\n onNavigate: onNavigate,\n controlA: data.controlA || undefined,\n controlB: activeControl || undefined\n })));\n};\nvar CompareControlManyToOne = function (props) {\n var _a, _b;\n var className = props.className,\n data = props.data,\n controlType = props.controlType,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var _c = useControlRewrite(),\n onUpdateCopiedDescription = _c.onUpdateCopiedDescription,\n navigateToRewrite = _c.navigateToRewrite;\n var controlData = data.controlsA;\n var _d = __read(useState(controlData && controlData[0]), 2),\n activeControl = _d[0],\n setActiveControl = _d[1];\n var matchedControlLink = useControlLink(controlType, activeControl === null || activeControl === void 0 ? void 0 : activeControl.id, (_a = data.controlB) === null || _a === void 0 ? void 0 : _a.id);\n var controlLink = controlType === 'ClientControl' ? (activeControl === null || activeControl === void 0 ? void 0 : activeControl.id) !== data.id ? activeControl === null || activeControl === void 0 ? void 0 : activeControl.id : null : undefined;\n var handleSetActiveControl = function (value) {\n var matchedControl = controlData === null || controlData === void 0 ? void 0 : controlData.find(function (item) {\n return value === item.id;\n });\n if (matchedControl) {\n return setActiveControl(matchedControl);\n }\n };\n var controlCount = controlData && \"(\".concat(controlData.length, \")\");\n var handleRedirect = function () {\n (activeControl === null || activeControl === void 0 ? void 0 : activeControl.optionalDescription) && onUpdateCopiedDescription(activeControl === null || activeControl === void 0 ? void 0 : activeControl.optionalDescription);\n navigateToRewrite();\n };\n return /*#__PURE__*/React.createElement(View, {\n \"data-testid\": generate(['compare-control--many-to-one'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n }), /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Control Details \").concat(controlCount) : \"Your Control Details \".concat(controlCount),\n headingB: \"Matched Index Control Details\",\n nss: ((_b = data.controlB) === null || _b === void 0 ? void 0 : _b.nss) || undefined,\n controlQualityScore: (activeControl === null || activeControl === void 0 ? void 0 : activeControl.controlQualityScore) || undefined,\n onClickRewrite: handleRedirect\n }), /*#__PURE__*/React.createElement(CompareControlDetails, {\n controlA: activeControl || undefined,\n controlB: data.controlB || undefined,\n controlALink: controlType === 'AcinControl' ? matchedControlLink : undefined,\n controlBLink: controlType === 'ClientControl' ? matchedControlLink : undefined,\n renderMultipleA: /*#__PURE__*/React.createElement(ControlSelect$2, {\n data: formatControlSelectData(data) || [],\n value: (activeControl === null || activeControl === void 0 ? void 0 : activeControl.id) || '',\n onChange: handleSetActiveControl\n }),\n highlightedFields: []\n }), /*#__PURE__*/React.createElement(ViewControlButtonPanel$1, {\n controlType: controlType,\n controlLink: controlLink,\n matchedControlLink: matchedControlLink\n })), /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(CompareHeader, {\n headingA: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Data Relationships\") : 'Your Data Relationships',\n headingB: \"Data Relationships\"\n }), /*#__PURE__*/React.createElement(CompareDataRelationships$1, {\n onNavigate: onNavigate,\n controlA: activeControl || undefined,\n controlB: data.controlB || undefined\n })));\n};\nvar CompareEmpty = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(View, {\n className: className,\n \"data-testid\": generate(['compare-control--no-matches'], props)\n }, /*#__PURE__*/React.createElement(MatchSection, null, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n })));\n};\nvar getContainerColor = themeHelpers.getContainerColor;\nvar ControlInstanceOptions = styled(View)(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\\n box-shadow: inset 0 4px 4px rgba(0, 0, 0, 0.25);\\n z-index: 1;\\n position: relative;\\n background-color: \", \";\\n padding: \", \";\\n min-height: \", \";\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid \", \";\\n position: relative;\\n\"], [\"\\n box-shadow: inset 0 4px 4px rgba(0, 0, 0, 0.25);\\n z-index: 1;\\n position: relative;\\n background-color: \", \";\\n padding: \", \";\\n min-height: \", \";\\n display: flex;\\n align-items: center;\\n border-bottom: 1px solid \", \";\\n position: relative;\\n\"])), function (p) {\n return getContainerColor(p.activeTheme);\n}, function (p) {\n return \"\".concat(p.theme.spacing.getSize(3), \" \").concat(p.theme.spacing.getSize(6));\n}, function (p) {\n return p.theme.spacing.getSize(15);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n});\nvar Separator = styled(View)(templateObject_2$b || (templateObject_2$b = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-right: \", \";\\n\"], [\"\\n margin-left: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar SkeletonWrapper = styled.div(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar SkeletonLoaderButton = styled(SkeletonLoader)(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject([\"\\n min-width: \", \";\\n height: \", \";\\n\"], [\"\\n min-width: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(45);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar IconWrapper = styled(View)(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject([\"\\n margin: 0 6px;\\n\"], [\"\\n margin: 0 6px;\\n\"])));\nvar templateObject_1$n, templateObject_2$b, templateObject_3$7, templateObject_4$6, templateObject_5$5;\nvar GetControlInstanceOptionsDocument = gql(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\\n query getControlInstanceOptions($input: ControlInstanceOptionsInput!) {\\n getControlInstanceOptions(input: $input) {\\n id\\n code\\n type\\n label\\n attributes {\\n ... on FilterListVariant {\\n searchPlaceholder\\n filterGroups {\\n label\\n availableFilters {\\n value\\n label\\n }\\n }\\n }\\n }\\n }\\n}\\n \"], [\"\\n query getControlInstanceOptions($input: ControlInstanceOptionsInput!) {\\n getControlInstanceOptions(input: $input) {\\n id\\n code\\n type\\n label\\n attributes {\\n ... on FilterListVariant {\\n searchPlaceholder\\n filterGroups {\\n label\\n availableFilters {\\n value\\n label\\n }\\n }\\n }\\n }\\n }\\n}\\n \"])));\nfunction useGetControlInstanceOptionsLazyQuery(baseOptions) {\n return useLazyQuery(GetControlInstanceOptionsDocument, baseOptions);\n}\nvar templateObject_1$o;\nvar INIITIAL_STATE$1 = {\n insightBySelection: [],\n controlInstanceSelection: [],\n onUpdateInsightBy: function () {},\n onUpdateControlInstance: function () {},\n onResetControlInstance: function () {}\n};\nvar Context$1 = /*#__PURE__*/React.createContext(INIITIAL_STATE$1);\nvar useControlInstance = function () {\n return React.useContext(Context$1);\n};\nvar ControlInstanceProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState([]), 2),\n controlInstanceSelection = _b[0],\n setControlInstanceSelection = _b[1];\n var _c = __read(React.useState([]), 2),\n insightBySelection = _c[0],\n setInsightBySelection = _c[1];\n var onUpdateInsightBy = function (selection) {\n setInsightBySelection(selection);\n };\n var onUpdateControlInstance = function (selection) {\n setControlInstanceSelection(selection);\n };\n var onResetControlInstance = function () {\n setControlInstanceSelection([]);\n };\n return /*#__PURE__*/React.createElement(Context$1.Provider, {\n value: __assign(__assign({}, INIITIAL_STATE$1), {\n insightBySelection: insightBySelection,\n controlInstanceSelection: controlInstanceSelection,\n onUpdateInsightBy: onUpdateInsightBy,\n onUpdateControlInstance: onUpdateControlInstance,\n onResetControlInstance: onResetControlInstance\n })\n }, children);\n};\n\n// Based on ConfiguratorOptions (Reports)\nvar FILTERS_KEYS = {\n INSIGHT_BY: 'INSIGHT_BY',\n CONTROL_INSTANCE: 'CONTROL_INSTANCE'\n};\nvar availableInsightsBy = [{\n // this value is matching BE values\n value: 'BUSINESS_ORG',\n label: 'Business Line'\n}, {\n // this value is matching BE values\n value: 'INDEX',\n label: 'Index'\n}];\nvar ControlInstanceOptionsWithParams = function (props) {\n var className = props.className,\n controlId = props.controlId;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = useControlInstance(),\n insightBySelection = _a.insightBySelection,\n controlInstanceSelection = _a.controlInstanceSelection,\n onUpdateInsightBy = _a.onUpdateInsightBy,\n onUpdateControlInstance = _a.onUpdateControlInstance;\n var _b = useQueryParams(),\n get = _b.get,\n updateQuery = _b.updateQuery;\n var location = useLocation();\n var _c = __read(React.useState([]), 2),\n availableControlInstance = _c[0],\n setAvailableControlInstance = _c[1];\n var _d = __read(React.useState(location.search), 2),\n locationSearch = _d[0],\n setLocationSearch = _d[1];\n var _e = __read(React.useState(get(FILTERS_KEYS.INSIGHT_BY)), 2),\n insightByParam = _e[0],\n setInsightByParam = _e[1];\n var _f = __read(React.useState(get(FILTERS_KEYS.CONTROL_INSTANCE)), 2),\n controlInstanceParam = _f[0],\n setControlInstanceParam = _f[1];\n var _g = __read(useGetControlInstanceOptionsLazyQuery({\n fetchPolicy: 'network-only'\n }), 2),\n getControlInstanceOptions = _g[0],\n _h = _g[1],\n data = _h.data,\n loading = _h.loading,\n error = _h.error;\n React.useEffect(function () {\n if (location.search !== locationSearch) {\n var query = new URLSearchParams(location.search);\n var newInsightParam = query.get(FILTERS_KEYS.INSIGHT_BY) || undefined;\n var newControlInstanceParam = query.get(FILTERS_KEYS.CONTROL_INSTANCE) || undefined;\n setLocationSearch(location.search);\n setInsightByParam(newInsightParam);\n setControlInstanceParam(newControlInstanceParam);\n if (!newInsightParam) {\n onUpdateInsightBy([]);\n onUpdateControlInstance([]);\n setAvailableControlInstance([]);\n }\n if (!newControlInstanceParam) {\n onUpdateControlInstance([]);\n }\n }\n }, [location.search, locationSearch, onUpdateControlInstance, onUpdateInsightBy]);\n React.useEffect(function () {\n // Apply insightByParam into filter\n if (insightByParam && insightBySelection.length === 0) {\n var found = availableInsightsBy.find(function (filter) {\n return filter.value === insightByParam;\n });\n if (found) {\n onUpdateInsightBy([found]);\n } else {\n onUpdateInsightBy([]);\n setInsightByParam(undefined);\n }\n }\n }, [insightByParam, insightBySelection, insightBySelection.length, onUpdateControlInstance, onUpdateInsightBy]);\n React.useEffect(function () {\n var insightByIdValue = insightBySelection.length > 0 && insightBySelection[0].value;\n if (insightByIdValue && insightByIdValue === insightByParam) {\n getControlInstanceOptions({\n variables: {\n input: {\n id: controlId,\n insightBy: {\n groupKey: FILTERS_KEYS.INSIGHT_BY,\n filterValues: insightBySelection\n }\n }\n }\n });\n }\n }, [controlId, getControlInstanceOptions, insightBySelection, insightByParam]);\n React.useEffect(function () {\n if (data === null || data === void 0 ? void 0 : data.getControlInstanceOptions) {\n if ((data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.__typename) === 'FilterListVariant') {\n setAvailableControlInstance(data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.filterGroups[0].availableFilters);\n } else {\n setAvailableControlInstance([]);\n }\n }\n }, [data === null || data === void 0 ? void 0 : data.getControlInstanceOptions]);\n React.useEffect(function () {\n if (availableControlInstance.length === 1) {\n onUpdateControlInstance([availableControlInstance[0]]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [availableControlInstance]);\n React.useEffect(function () {\n // Apply controlInstanceParam into filter\n if (availableControlInstance.length > 0 && controlInstanceParam && controlInstanceSelection.length === 0) {\n var found = availableControlInstance.find(function (filter) {\n return filter.value === controlInstanceParam;\n });\n if (found) {\n onUpdateControlInstance([found]);\n } else {\n onUpdateControlInstance([]);\n setControlInstanceParam(undefined);\n }\n }\n }, [controlInstanceParam, controlInstanceSelection.length, availableControlInstance, availableControlInstance.length, onUpdateControlInstance]);\n var onApplyChange = function (filterInput) {\n var _a, _b;\n if (!Array.isArray(filterInput)) {\n var filter = filterInput.filterValues;\n switch (filterInput.groupKey) {\n case FILTERS_KEYS.INSIGHT_BY:\n {\n var insightValue = filter[0].value;\n var params = (_a = {}, _a[FILTERS_KEYS.INSIGHT_BY] = insightValue,\n // ATTENTION: following line is important to remove\n // CONTROL_INSTANCE key from the params:\n _a[FILTERS_KEYS.CONTROL_INSTANCE] = null, _a);\n onUpdateControlInstance([]);\n setControlInstanceParam(undefined);\n onUpdateInsightBy(filter);\n updateQuery(params);\n break;\n }\n case FILTERS_KEYS.CONTROL_INSTANCE:\n {\n var insightValue = insightBySelection[0].value;\n var controlInstanceValue = filter[0].value;\n var params = (_b = {}, _b[FILTERS_KEYS.INSIGHT_BY] = insightValue, _b[FILTERS_KEYS.CONTROL_INSTANCE] = controlInstanceValue, _b);\n onUpdateControlInstance(filter);\n updateQuery(params);\n break;\n }\n }\n }\n return null;\n };\n var getFiltersFromQuery = function () {\n if ((data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.__typename) === 'FilterListVariant') {\n return data.getControlInstanceOptions.attributes.filterGroups;\n }\n };\n return /*#__PURE__*/React.createElement(ControlInstanceOptions, {\n \"data-testid\": generate(['control-instance-options'], props),\n className: className,\n activeTheme: activeTheme\n }, !loading && error && ( /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Error.\",\n message: \"Something failed on loading the configurator options. Please try to refresh the page.\"\n })), !error && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterButton, {\n \"data-testid\": \"insight-by\",\n label: \"Insight By\",\n variant: IFilterType.RadioList,\n filters: [{\n availableFilters: availableInsightsBy\n }],\n appliedFiltersCount: insightBySelection === null || insightBySelection === void 0 ? void 0 : insightBySelection.length,\n appliedFilters: insightBySelection,\n onApplyChange: onApplyChange,\n groupKey: FILTERS_KEYS.INSIGHT_BY\n }), /*#__PURE__*/React.createElement(IconWrapper, null, /*#__PURE__*/React.createElement(IconChevronRight, null)), /*#__PURE__*/React.createElement(FilterButton, {\n \"data-testid\": \"control-instance\",\n label: \"Control Instance\",\n variant: IFilterType.RadioList,\n filters: getFiltersFromQuery(),\n appliedFiltersCount: controlInstanceSelection === null || controlInstanceSelection === void 0 ? void 0 : controlInstanceSelection.length,\n appliedFilters: controlInstanceSelection,\n onApplyChange: onApplyChange,\n groupKey: FILTERS_KEYS.CONTROL_INSTANCE,\n disabled: !insightBySelection.length || loading\n }))));\n};\n\n// Based on ConfiguratorOptions (Reports)\nvar FILTERS_KEYS$1 = {\n INSIGHT_BY: 'INSIGHT_BY',\n CONTROL_INSTANCE: 'CONTROL_INSTANCE'\n};\nvar ControlInstanceOptions$1 = function (props) {\n var className = props.className,\n controlId = props.controlId,\n insightById = props.insightById,\n controlInstanceId = props.controlInstanceId,\n onInsightByIdChange = props.onInsightByIdChange,\n onControlInstanceIdChange = props.onControlInstanceIdChange;\n var user = useAuth().user;\n var availableInsightsBy = [{\n // this value is matching BE values\n value: 'BUSINESS_ORG',\n label: (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Business Line\") : 'Business Line'\n }, {\n // this value is matching BE values\n value: 'INDEX',\n label: 'Acin Index'\n }];\n var activeTheme = useThemeProvider().activeTheme;\n var _a = useControlInstance(),\n insightBySelection = _a.insightBySelection,\n onUpdateInsightBy = _a.onUpdateInsightBy,\n onUpdateControlInstance = _a.onUpdateControlInstance,\n controlInstanceSelection = _a.controlInstanceSelection;\n var _b = __read(React.useState([]), 2),\n availableControlInstance = _b[0],\n setAvailableControlInstance = _b[1];\n var _c = __read(useGetControlInstanceOptionsLazyQuery({\n fetchPolicy: 'network-only'\n }), 2),\n getControlInstanceOptions = _c[0],\n _d = _c[1],\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n React.useEffect(function () {\n if (insightById && insightBySelection.length === 0 || insightById && insightBySelection[0].value !== insightById) {\n var found = availableInsightsBy.find(function (filter) {\n return filter.value === insightById;\n });\n if (found) {\n var foundInsightBySelection = [found];\n onUpdateInsightBy(foundInsightBySelection);\n getControlInstanceOptions({\n variables: {\n input: {\n id: controlId,\n insightBy: {\n groupKey: FILTERS_KEYS$1.INSIGHT_BY,\n filterValues: foundInsightBySelection\n }\n }\n }\n });\n } else {\n onUpdateInsightBy([]);\n }\n }\n }, [controlId, getControlInstanceOptions, insightById, insightBySelection, onUpdateInsightBy]);\n React.useEffect(function () {\n if (data === null || data === void 0 ? void 0 : data.getControlInstanceOptions) {\n if ((data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.__typename) === 'FilterListVariant') {\n setAvailableControlInstance(data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.filterGroups[0].availableFilters);\n } else {\n setAvailableControlInstance([]);\n }\n }\n }, [data === null || data === void 0 ? void 0 : data.getControlInstanceOptions]);\n React.useEffect(function () {\n if (availableControlInstance.length > 0 && controlInstanceSelection.length === 0) {\n var found = availableControlInstance.find(function (filter) {\n return filter.value === controlInstanceId;\n });\n if (found) {\n onUpdateControlInstance([found]);\n } else if (availableControlInstance.length === 1) {\n onUpdateControlInstance([availableControlInstance[0]]);\n if (!controlInstanceId) {\n onControlInstanceIdChange(availableControlInstance[0].value);\n }\n }\n }\n }, [availableControlInstance, controlInstanceId, controlInstanceSelection, onControlInstanceIdChange, onUpdateControlInstance]);\n var onApplyChange = function (filterInput) {\n if (!Array.isArray(filterInput)) {\n var filter = filterInput.filterValues;\n switch (filterInput.groupKey) {\n case FILTERS_KEYS$1.INSIGHT_BY:\n {\n onInsightByIdChange(filter[0].value);\n setAvailableControlInstance([]);\n onUpdateControlInstance([]);\n break;\n }\n case FILTERS_KEYS$1.CONTROL_INSTANCE:\n {\n onControlInstanceIdChange(filter[0].value);\n break;\n }\n }\n }\n return null;\n };\n var getFiltersFromQuery = function () {\n if ((data === null || data === void 0 ? void 0 : data.getControlInstanceOptions.attributes.__typename) === 'FilterListVariant') {\n return data.getControlInstanceOptions.attributes.filterGroups;\n }\n };\n return /*#__PURE__*/React.createElement(ControlInstanceOptions, {\n \"data-testid\": generate(['control-instance-options'], props),\n className: className,\n activeTheme: activeTheme\n }, !loading && error && ( /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Error.\",\n message: \"Something failed on loading the configurator options. Please try to refresh the page.\"\n })), !error && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FilterButton, {\n \"data-testid\": \"insight-by\",\n label: \"Insight By\",\n variant: IFilterType.RadioList,\n filters: [{\n availableFilters: availableInsightsBy\n }],\n appliedFiltersCount: insightBySelection === null || insightBySelection === void 0 ? void 0 : insightBySelection.length,\n appliedFilters: insightBySelection,\n onApplyChange: onApplyChange,\n groupKey: FILTERS_KEYS$1.INSIGHT_BY\n }), /*#__PURE__*/React.createElement(IconWrapper, null, /*#__PURE__*/React.createElement(IconChevronRight, null)), /*#__PURE__*/React.createElement(FilterButton, {\n \"data-testid\": \"control-instance\",\n label: \"Control Instance\",\n variant: IFilterType.RadioList,\n filters: getFiltersFromQuery(),\n appliedFiltersCount: controlInstanceSelection === null || controlInstanceSelection === void 0 ? void 0 : controlInstanceSelection.length,\n appliedFilters: controlInstanceSelection,\n onApplyChange: onApplyChange,\n groupKey: FILTERS_KEYS$1.CONTROL_INSTANCE,\n disabled: !insightBySelection.length || loading\n }))));\n};\nvar NetworkCompareAlertMessageFragmentDoc = gql(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\\n fragment NetworkCompareAlertMessage on AlertMessage {\\n title\\n message\\n type\\n}\\n \"], [\"\\n fragment NetworkCompareAlertMessage on AlertMessage {\\n title\\n message\\n type\\n}\\n \"])));\nvar templateObject_1$p;\nvar RelatedKeywordFragmentDoc = gql(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\\n fragment RelatedKeyword on Keyword {\\n id\\n code\\n name\\n count\\n items {\\n id\\n name\\n }\\n}\\n \"], [\"\\n fragment RelatedKeyword on Keyword {\\n id\\n code\\n name\\n count\\n items {\\n id\\n name\\n }\\n}\\n \"])));\nvar templateObject_1$q;\nvar RelatedClientRiskFragmentDoc = gql(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\\n fragment RelatedClientRisk on ClientRisk {\\n id\\n title\\n controlCount\\n}\\n \"], [\"\\n fragment RelatedClientRisk on ClientRisk {\\n id\\n title\\n controlCount\\n}\\n \"])));\nvar templateObject_1$r;\nvar NetworkCompareClientControlFragmentDoc = gql(templateObject_1$s || (templateObject_1$s = __makeTemplateObject([\"\\n fragment NetworkCompareClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalObjectives: objectives\\n optionalControlCode: controlCode\\n optionalControlSource: controlSource\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n optionalUpdatedAt: updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedClientRisk\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment NetworkCompareClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalObjectives: objectives\\n optionalControlCode: controlCode\\n optionalControlSource: controlSource\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n optionalUpdatedAt: updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedClientRisk\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n \", \"\\n \", \"\\n\"])), RelatedKeywordFragmentDoc, RelatedClientRiskFragmentDoc);\nvar templateObject_1$s;\nvar RelatedAcinRiskFragmentDoc = gql(templateObject_1$t || (templateObject_1$t = __makeTemplateObject([\"\\n fragment RelatedAcinRisk on AcinRisk {\\n id\\n title\\n}\\n \"], [\"\\n fragment RelatedAcinRisk on AcinRisk {\\n id\\n title\\n}\\n \"])));\nvar templateObject_1$t;\nvar RelatedRiskInventoryFragmentDoc = gql(templateObject_1$u || (templateObject_1$u = __makeTemplateObject([\"\\n fragment RelatedRiskInventory on RiskInventory {\\n id\\n name\\n}\\n \"], [\"\\n fragment RelatedRiskInventory on RiskInventory {\\n id\\n name\\n}\\n \"])));\nvar templateObject_1$u;\nvar RelatedRegulatoryArticleFragmentDoc = gql(templateObject_1$v || (templateObject_1$v = __makeTemplateObject([\"\\n fragment RelatedRegulatoryArticle on RegulatoryArticle {\\n id\\n name\\n url\\n}\\n \"], [\"\\n fragment RelatedRegulatoryArticle on RegulatoryArticle {\\n id\\n name\\n url\\n}\\n \"])));\nvar templateObject_1$v;\nvar RelatedRegulationFragmentDoc = gql(templateObject_1$w || (templateObject_1$w = __makeTemplateObject([\"\\n fragment RelatedRegulation on Regulation {\\n id\\n name\\n regulator {\\n name\\n }\\n articles {\\n ...RelatedRegulatoryArticle\\n }\\n}\\n \", \"\"], [\"\\n fragment RelatedRegulation on Regulation {\\n id\\n name\\n regulator {\\n name\\n }\\n articles {\\n ...RelatedRegulatoryArticle\\n }\\n}\\n \", \"\"])), RelatedRegulatoryArticleFragmentDoc);\nvar templateObject_1$w;\nvar AcinControlNetworkSignalScoreFragmentDoc = gql(templateObject_1$x || (templateObject_1$x = __makeTemplateObject([\"\\n fragment AcinControlNetworkSignalScore on NetworkSignalScore {\\n score\\n total\\n highlight\\n}\\n \"], [\"\\n fragment AcinControlNetworkSignalScore on NetworkSignalScore {\\n score\\n total\\n highlight\\n}\\n \"])));\nvar templateObject_1$x;\nvar RelatedProductFragmentDoc = gql(templateObject_1$y || (templateObject_1$y = __makeTemplateObject([\"\\n fragment RelatedProduct on Product {\\n id\\n label\\n type\\n}\\n \"], [\"\\n fragment RelatedProduct on Product {\\n id\\n label\\n type\\n}\\n \"])));\nvar templateObject_1$y;\nvar NetworkCompareAcinControlFragmentDoc = gql(templateObject_1$z || (templateObject_1$z = __makeTemplateObject([\"\\n fragment NetworkCompareAcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n objectives\\n controlCode\\n controlSource\\n controlType\\n controlOwner\\n controlFrequency\\n updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedAcinRisk\\n }\\n relatedRiskInventories {\\n ...RelatedRiskInventory\\n }\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n products {\\n ...RelatedProduct\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareAcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n objectives\\n controlCode\\n controlSource\\n controlType\\n controlOwner\\n controlFrequency\\n updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedAcinRisk\\n }\\n relatedRiskInventories {\\n ...RelatedRiskInventory\\n }\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n products {\\n ...RelatedProduct\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"])), RelatedKeywordFragmentDoc, RelatedAcinRiskFragmentDoc, RelatedRiskInventoryFragmentDoc, RelatedRegulationFragmentDoc, AcinControlNetworkSignalScoreFragmentDoc, RelatedProductFragmentDoc);\nvar templateObject_1$z;\nvar NetworkCompareControlOneToOneFragmentDoc = gql(templateObject_1$A || (templateObject_1$A = __makeTemplateObject([\"\\n fragment NetworkCompareControlOneToOne on CompareControlOneToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlA {\\n ...NetworkCompareClientControl\\n }\\n controlB {\\n ...NetworkCompareAcinControl\\n }\\n highlightedFields\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareControlOneToOne on CompareControlOneToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlA {\\n ...NetworkCompareClientControl\\n }\\n controlB {\\n ...NetworkCompareAcinControl\\n }\\n highlightedFields\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareAlertMessageFragmentDoc, NetworkCompareClientControlFragmentDoc, NetworkCompareAcinControlFragmentDoc);\nvar templateObject_1$A;\nvar NetworkCompareControlOneToManyFragmentDoc = gql(templateObject_1$B || (templateObject_1$B = __makeTemplateObject([\"\\n fragment NetworkCompareControlOneToMany on CompareControlOneToMany {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlA {\\n ...NetworkCompareClientControl\\n }\\n controlsB {\\n ...NetworkCompareAcinControl\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareControlOneToMany on CompareControlOneToMany {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlA {\\n ...NetworkCompareClientControl\\n }\\n controlsB {\\n ...NetworkCompareAcinControl\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareAlertMessageFragmentDoc, NetworkCompareClientControlFragmentDoc, NetworkCompareAcinControlFragmentDoc);\nvar templateObject_1$B;\nvar NetworkCompareControlManyToOneFragmentDoc = gql(templateObject_1$C || (templateObject_1$C = __makeTemplateObject([\"\\n fragment NetworkCompareControlManyToOne on CompareControlManyToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlsA {\\n ...NetworkCompareClientControl\\n }\\n controlB {\\n ...NetworkCompareAcinControl\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareControlManyToOne on CompareControlManyToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n controlsA {\\n ...NetworkCompareClientControl\\n }\\n controlB {\\n ...NetworkCompareAcinControl\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareAlertMessageFragmentDoc, NetworkCompareClientControlFragmentDoc, NetworkCompareAcinControlFragmentDoc);\nvar templateObject_1$C;\nvar NetworkCompareEmptyFragmentDoc = gql(templateObject_1$D || (templateObject_1$D = __makeTemplateObject([\"\\n fragment NetworkCompareEmpty on CompareEmpty {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n}\\n \", \"\"], [\"\\n fragment NetworkCompareEmpty on CompareEmpty {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n}\\n \", \"\"])), NetworkCompareAlertMessageFragmentDoc);\nvar templateObject_1$D;\nvar RelationshipInsightContextFragmentDoc = gql(templateObject_1$E || (templateObject_1$E = __makeTemplateObject([\"\\n fragment RelationshipInsightContext on RelationshipInsightContext {\\n externalComment\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n insight {\\n name\\n description\\n }\\n}\\n \"], [\"\\n fragment RelationshipInsightContext on RelationshipInsightContext {\\n externalComment\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n insight {\\n name\\n description\\n }\\n}\\n \"])));\nvar templateObject_1$E;\nvar GetControlComparisonDataDocument = gql(templateObject_1$F || (templateObject_1$F = __makeTemplateObject([\"\\n query getControlComparisonData($input: ControlComparisonDataInput!) {\\n getControlComparisonData(input: $input) {\\n compare {\\n ... on CompareControlOneToOne {\\n ...NetworkCompareControlOneToOne\\n }\\n ... on CompareControlOneToMany {\\n ...NetworkCompareControlOneToMany\\n }\\n ... on CompareControlManyToOne {\\n ...NetworkCompareControlManyToOne\\n }\\n ... on CompareEmpty {\\n ...NetworkCompareEmpty\\n }\\n }\\n relationshipInsightContext {\\n ...RelationshipInsightContext\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"], [\"\\n query getControlComparisonData($input: ControlComparisonDataInput!) {\\n getControlComparisonData(input: $input) {\\n compare {\\n ... on CompareControlOneToOne {\\n ...NetworkCompareControlOneToOne\\n }\\n ... on CompareControlOneToMany {\\n ...NetworkCompareControlOneToMany\\n }\\n ... on CompareControlManyToOne {\\n ...NetworkCompareControlManyToOne\\n }\\n ... on CompareEmpty {\\n ...NetworkCompareEmpty\\n }\\n }\\n relationshipInsightContext {\\n ...RelationshipInsightContext\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"])), NetworkCompareControlOneToOneFragmentDoc, NetworkCompareControlOneToManyFragmentDoc, NetworkCompareControlManyToOneFragmentDoc, NetworkCompareEmptyFragmentDoc, RelationshipInsightContextFragmentDoc);\nfunction useGetControlComparisonDataLazyQuery(baseOptions) {\n return useLazyQuery(GetControlComparisonDataDocument, baseOptions);\n}\nvar templateObject_1$F;\nvar containerBackground$2 = themeHelpers.containerBackground,\n nestedContainerBackground = themeHelpers.nestedContainerBackground;\nvar boxShadow = css(templateObject_1$G || (templateObject_1$G = __makeTemplateObject([\"\\n :after {\\n content: '';\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: -1;\\n box-shadow: 0 0 6px \", \";\\n }\\n\"], [\"\\n :after {\\n content: '';\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: -1;\\n box-shadow: 0 0 6px \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.shadow;\n});\nvar RowWrapper = styled.div(templateObject_2$c || (templateObject_2$c = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n padding: 0 \", \";\\n margin: 0 \", \";\\n \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n padding: 0 \", \";\\n margin: 0 \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n});\nvar GroupHeader$1 = styled.div(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n padding: 0 \", \";\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n padding: 0 \", \";\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(7);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n}, boxShadow);\nvar ControlListGroupDividerRow = styled.div(templateObject_4$7 || (templateObject_4$7 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n\\n &::after {\\n content: '';\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 24px;\\n right: 24px;\\n z-index: -1;\\n box-shadow: 0 0 6px rgba(0, 0, 0, 0.1);\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n\\n &::after {\\n content: '';\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 24px;\\n right: 24px;\\n z-index: -1;\\n box-shadow: 0 0 6px rgba(0, 0, 0, 0.1);\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n});\nvar ControlListSubGroupDividerRow = styled.div(templateObject_5$6 || (templateObject_5$6 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n margin: 0 \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n height: \", \";\\n \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n margin: 0 \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n height: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(7);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n});\nvar ControlListGroupDivider = styled.div(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject([\"\\n flex: 1;\\n background: \", \"; // TODO: DM exception needed here?\\n height: 2px;\\n\"], [\"\\n flex: 1;\\n background: \", \"; // TODO: DM exception needed here?\\n height: 2px;\\n\"])), function (p) {\n return p.activeTheme.name === 'dark' ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue(1);\n});\nvar ControlListFooterRow = styled.div(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: flex-end;\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: flex-end;\\n margin: 0 \", \";\\n height: \", \";\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n}, boxShadow);\nvar ScrollToTopButton = styled(BackToTopButton)(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject([\"\\n z-index: 10;\\n\"], [\"\\n z-index: 10;\\n\"])));\nvar ControlListFooter = styled.div(templateObject_9$2 || (templateObject_9$2 = __makeTemplateObject([\"\\n flex: 1;\\n background: \", \"; // TODO: DM exception needed here?\\n\"], [\"\\n flex: 1;\\n background: \", \"; // TODO: DM exception needed here?\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Toggle = styled.div(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n font-size: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.type.getSize(1);\n});\nvar GroupContent = styled.div(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject([\"\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n font-weight: 500;\\n padding-top: \", \";\\n\"], [\"\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n font-weight: 500;\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar SubGroup = styled.div(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding: 0 \", \";\\n padding-top: \", \";\\n margin: 0 \", \" \", \";\\n min-width: 0;\\n height: \", \";\\n \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n padding: 0 \", \";\\n padding-top: \", \";\\n margin: 0 \", \" \", \";\\n min-width: 0;\\n height: \", \";\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n}, boxShadow);\nvar SubGroupToggle = styled(Toggle)(templateObject_13$1 || (templateObject_13$1 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-right: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar GroupHeaderSwatch = styled(View)(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([\"\\n width: \", \";\\n margin-right: \", \";\\n height: \", \";\\n margin-bottom: \", \";\\n position: relative;\\n top: -\", \";\\n\"], [\"\\n width: \", \";\\n margin-right: \", \";\\n height: \", \";\\n margin-bottom: \", \";\\n position: relative;\\n top: -\", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar ControlRowWrapper = styled.div(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([\"\\n position: relative;\\n padding: \", \" \", \";\\n margin: 0 \", \";\\n \", \";\\n \", \";\\n :after {\\n bottom: \", \";\\n }\\n\"], [\"\\n position: relative;\\n padding: \", \" \", \";\\n margin: 0 \", \";\\n \", \";\\n \", \";\\n :after {\\n bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n}, boxShadow, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ControlRow = styled(DataListRow)(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n height: \", \";\\n \", \"\\n\"], [\"\\n padding: \", \" \", \";\\n height: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(11);\n}, function (p) {\n return nestedContainerBackground(p.activeTheme);\n});\nvar CompletenessReportControlListView = styled.div(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n flex: 1;\\n\"], [\"\\n flex: 1;\\n\"])));\nvar RiskInventory = styled(Badge$1)(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\"], [\"\"])));\nvar CompactHeaderWrapper = styled(View)(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n position: fixed;\\n z-index: 10;\\n top: 0;\\n left: 88px; // Temporary change for Terminal, will look a bit weird in Storybook\\n right: 0;\\n transform: translateY(-110%);\\n transition: transform 0.5s ease-in-out;\\n\\n \", \"\\n\"], [\"\\n position: fixed;\\n z-index: 10;\\n top: 0;\\n left: 88px; // Temporary change for Terminal, will look a bit weird in Storybook\\n right: 0;\\n transform: translateY(-110%);\\n transition: transform 0.5s ease-in-out;\\n\\n \", \"\\n\"])), function (p) {\n return p.isVisible && css(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n transform: translateY(0);\\n \"], [\"\\n transform: translateY(0);\\n \"])));\n});\nvar LoadingWrapper = styled(View)(templateObject_21 || (templateObject_21 = __makeTemplateObject([\"\\n height: \", \";\\n padding: \", \";\\n margin: 0 \", \";\\n \", \"\\n\"], [\"\\n height: \", \";\\n padding: \", \";\\n margin: 0 \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(35);\n}, function (p) {\n return \"0 \".concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(6));\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$2(p.activeTheme);\n});\nvar LoadingInnerWrapper = styled(View)(templateObject_22 || (templateObject_22 = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n \", \"\\n\"], [\"\\n position: relative;\\n height: 100%;\\n \", \"\\n\"])), function (p) {\n return containerBackground$2(p.activeTheme);\n});\nvar Footer = styled(View)(templateObject_23 || (templateObject_23 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n\"], [\"\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(15);\n});\nvar templateObject_1$G, templateObject_2$c, templateObject_3$8, templateObject_4$7, templateObject_5$6, templateObject_6$3, templateObject_7$2, templateObject_8$2, templateObject_9$2, templateObject_10$2, templateObject_11$2, templateObject_12$2, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23;\nvar getColorLibrary = themeHelpers.getColorLibrary;\nvar getColor = function (activeTheme, colorPalette) {\n return getColorLibrary('dataVisWithMeaning', activeTheme).getValue((colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.paletteIndex) || 0, (colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.shade) || 500).main;\n};\n// This named style should be the wrapper for the component i.e. the module\nvar RelationshipInsights = styled(View)(templateObject_1$H || (templateObject_1$H = __makeTemplateObject([\"\\n padding-top: \", \";\\n padding-right: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n padding-top: \", \";\\n padding-right: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar Insight = styled(Card$1)(templateObject_2$d || (templateObject_2$d = __makeTemplateObject([\"\\n padding: \", \";\\n padding-left: \", \";\\n \", \"\\n\"], [\"\\n padding: \", \";\\n padding-left: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(14);\n}, boxShadow);\nvar ColourStrip = styled(View)(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject([\"\\n border-radius: 2px;\\n width: \", \";\\n height: auto;\\n display: block;\\n background: \", \";\\n position: absolute;\\n left: \", \";\\n top: \", \";\\n bottom: \", \";\\n\"], [\"\\n border-radius: 2px;\\n width: \", \";\\n height: auto;\\n display: block;\\n background: \", \";\\n position: absolute;\\n left: \", \";\\n top: \", \";\\n bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return getColor(p.activeTheme, p.colorPalette);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Title = styled(Heading$1)(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject([\"\\n font-weight: 500;\\n\"], [\"\\n font-weight: 500;\\n\"])));\nvar Description = styled(Text$1)(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar Icon = styled(IconNotesWarning)(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ExternalComment = styled(View)(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject([\"\\n display: block;\\n padding: \", \";\\n margin-top: \", \";\\n background: \", \";\\n\"], [\"\\n display: block;\\n padding: \", \";\\n margin-top: \", \";\\n background: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar templateObject_1$H, templateObject_2$d, templateObject_3$9, templateObject_4$8, templateObject_5$7, templateObject_6$4, templateObject_7$3;\nvar RelationshipInsights$1 = function (props) {\n var _a, _b;\n var className = props.className,\n data = props.data;\n var activeTheme = useThemeProvider().activeTheme;\n var title = (_a = data === null || data === void 0 ? void 0 : data.insight) === null || _a === void 0 ? void 0 : _a.name;\n var description = (_b = data === null || data === void 0 ? void 0 : data.insight) === null || _b === void 0 ? void 0 : _b.description;\n var externalComment = data === null || data === void 0 ? void 0 : data.externalComment;\n var colorPalette = data === null || data === void 0 ? void 0 : data.colorPalette;\n return /*#__PURE__*/React.createElement(RelationshipInsights, {\n \"data-testid\": generate(['relationship-insights'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Insight, null, /*#__PURE__*/React.createElement(ColourStrip, {\n colorPalette: colorPalette,\n activeTheme: activeTheme\n }), /*#__PURE__*/React.createElement(Title, {\n size: 2\n }, title), /*#__PURE__*/React.createElement(Description, {\n size: 1\n }, description), externalComment && ( /*#__PURE__*/React.createElement(ExternalComment, {\n \"data-testid\": \"external-comment\"\n }, /*#__PURE__*/React.createElement(Icon, {\n size: \"large\"\n }), externalComment))));\n};\nvar RelationshipInsights$2 = styled(RelationshipInsights$1)(templateObject_1$I || (templateObject_1$I = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$I;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ControlRoute = styled(View)(templateObject_1$J || (templateObject_1$J = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: 100vh;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: 100vh;\\n\"])));\nvar ControlLayoutWrapper = styled(View)(templateObject_2$e || (templateObject_2$e = __makeTemplateObject([\"\\n width: 100%;\\n display: block;\\n\"], [\"\\n width: 100%;\\n display: block;\\n\"])));\nvar MenuWrapper = styled(View)(templateObject_3$a || (templateObject_3$a = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n display: flex;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n display: flex;\\n\"])));\nvar Page = styled(View)(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n\"])));\nvar templateObject_1$J, templateObject_2$e, templateObject_3$a, templateObject_4$9;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ControlAnchorMenu = styled(Card$1)(templateObject_1$K || (templateObject_1$K = __makeTemplateObject([\"\\n padding: \", \";\\n min-width: \", \"; ;\\n\"], [\"\\n padding: \", \";\\n min-width: \", \"; ;\\n\"])), function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.spacing.getSize(48);\n});\nvar ListItem = styled.li(templateObject_2$f || (templateObject_2$f = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n list-style: none;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n list-style: none;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$K, templateObject_2$f;\nvar ControlAnchorMenu$1 = function (props) {\n var className = props.className,\n items = props.items,\n onClick = props.onClick;\n return /*#__PURE__*/React.createElement(ControlAnchorMenu, {\n \"data-testid\": generate(['control-anchor-menu'], props),\n className: className\n }, items === null || items === void 0 ? void 0 : items.map(function (item) {\n return /*#__PURE__*/React.createElement(ListItem, {\n key: item.hash\n }, /*#__PURE__*/React.createElement(Link, {\n variant: \"borderless\",\n onClick: function () {\n return onClick(item);\n },\n \"data-testid\": generate([\"anchor-menu-item \".concat(item.hash)], props)\n }, item.label));\n }));\n};\nvar ControlAnchorMenu$2 = styled(ControlAnchorMenu$1)(templateObject_1$L || (templateObject_1$L = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$L;\nvar scrollTo = function (id) {\n var element = document.getElementById(id);\n var container = document.querySelector('[data-testid=\"page-wrapper-content-scrollable\"]');\n if (element && container) {\n var offset = 109;\n var elementPosition = element.getBoundingClientRect().top + container.scrollTop - container.getBoundingClientRect().top;\n var offsetPosition = elementPosition - offset;\n container.scrollTo({\n top: offsetPosition,\n behavior: 'smooth'\n });\n }\n};\nvar MenuWrapper$1 = function (props) {\n var className = props.className,\n children = props.children;\n var user = useAuth().user;\n var menuItems = [{\n label: 'Control Description',\n hash: 'description'\n }, {\n label: 'Control Objectives',\n hash: 'objectives'\n }, {\n label: 'Control Type',\n hash: 'type'\n }, {\n label: 'Control Owner',\n hash: 'owner'\n }, {\n label: 'Control Frequency',\n hash: 'frequency'\n }, {\n label: 'Control Automation',\n hash: 'automation'\n }, {\n label: 'Risks',\n hash: 'risks'\n }, {\n label: \"\".concat((user === null || user === void 0 ? void 0 : user.accountName) ? user.accountName : 'Your', \" Business Lines\"),\n hash: 'business-lines'\n }, {\n label: 'Acin Indices',\n hash: 'business-lines'\n // Deliberate\n }, {\n label: 'Regulations',\n hash: 'regulations'\n }, {\n label: 'Themes',\n hash: 'themes'\n }, {\n label: 'Products',\n hash: 'products'\n }];\n return /*#__PURE__*/React.createElement(MenuWrapper, {\n \"data-testid\": generate(['menu-wrapper'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ControlAnchorMenu$2, {\n items: menuItems,\n onClick: function (item) {\n return scrollTo(item.hash);\n }\n }), /*#__PURE__*/React.createElement(Page, null, children));\n};\nvar NetworkMatch$1 = function (props) {\n var className = props.className,\n controlId = props.controlId,\n controlType = props.controlType,\n onNavigate = props.onNavigate,\n insightById = props.insightById,\n controlInstanceId = props.controlInstanceId,\n onInsightByIdChange = props.onInsightByIdChange,\n onControlInstanceIdChange = props.onControlInstanceIdChange,\n insideDrawer = props.insideDrawer;\n var user = useAuth().user;\n var _a = useControlInstance(),\n insightBySelection = _a.insightBySelection,\n controlInstanceSelection = _a.controlInstanceSelection;\n var _b = __read(React.useState(), 2),\n relationshipType = _b[0],\n setRelationshipType = _b[1];\n var _c = __read(React.useState(), 2),\n relationshipInstanceId = _c[0],\n setRelationshipInstanceId = _c[1];\n var hasControlInstanceSelection = controlInstanceSelection.length > 0;\n var _d = __read(useGetControlComparisonDataLazyQuery({\n fetchPolicy: 'cache-and-network',\n notifyOnNetworkStatusChange: true\n }), 2),\n getControlComparisonData = _d[0],\n _e = _d[1],\n data = _e.data,\n loading = _e.loading,\n previousData = _e.previousData,\n error = _e.error;\n var isNetworkLoading = loading && !data;\n var pageData = loading && !data ? previousData : data;\n var _f = __read(React.useState(false), 2),\n showAlert = _f[0],\n setShowAlert = _f[1];\n React.useEffect(function () {\n if (!hasControlInstanceSelection) {\n var timer_1 = setTimeout(function () {\n setShowAlert(true);\n }, 2000);\n return function () {\n return clearTimeout(timer_1);\n };\n } else {\n setShowAlert(false);\n }\n }, [hasControlInstanceSelection]);\n React.useEffect(function () {\n if (insightBySelection[0] && controlInstanceSelection[0]) {\n setRelationshipType(insightBySelection[0].value);\n setRelationshipInstanceId(controlInstanceSelection[0].value);\n }\n }, [controlInstanceSelection, insightBySelection]);\n React.useEffect(function () {\n var isReady = !!relationshipType && !!relationshipInstanceId;\n if (isReady) {\n getControlComparisonData({\n variables: {\n input: {\n id: controlId,\n relationshipType: relationshipType,\n relationshipInstanceId: relationshipInstanceId\n }\n }\n });\n }\n }, [controlId, getControlComparisonData, relationshipInstanceId, relationshipType]);\n var renderContent = function () {\n var _a, _b;\n switch ((_b = (_a = pageData === null || pageData === void 0 ? void 0 : pageData.getControlComparisonData) === null || _a === void 0 ? void 0 : _a.compare) === null || _b === void 0 ? void 0 : _b.__typename) {\n case 'CompareControlOneToOne':\n return /*#__PURE__*/React.createElement(Content$2, null, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(CompareControlOneToOne, {\n onNavigate: onNavigate,\n data: pageData.getControlComparisonData.compare,\n controlType: controlType\n }));\n case 'CompareControlOneToMany':\n return /*#__PURE__*/React.createElement(Content$2, null, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(CompareControlOneToMany, {\n onNavigate: onNavigate,\n data: pageData.getControlComparisonData.compare,\n controlType: controlType\n }));\n case 'CompareControlManyToOne':\n return /*#__PURE__*/React.createElement(Content$2, null, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(CompareControlManyToOne, {\n onNavigate: onNavigate,\n data: pageData.getControlComparisonData.compare,\n controlType: controlType\n }));\n case 'CompareEmpty':\n return /*#__PURE__*/React.createElement(Content$2, null, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(CompareEmpty, {\n onNavigate: onNavigate,\n data: pageData.getControlComparisonData.compare\n }), \";\");\n }\n };\n var renderAlert = function () {\n if (!hasControlInstanceSelection) {\n return /*#__PURE__*/React.createElement(AlertWrapper, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No Control Instance Selected\",\n message: (user === null || user === void 0 ? void 0 : user.accountName) ? \"Please select \".concat(user === null || user === void 0 ? void 0 : user.accountName, \" Business Line or Acin Index to see the network match.\") : 'Please select Business Line or Acin Index to see the network match.',\n multiline: true\n }));\n }\n };\n var renderRelationshipInsights = function () {\n if ((pageData === null || pageData === void 0 ? void 0 : pageData.getControlComparisonData.relationshipInsightContext) && hasControlInstanceSelection) {\n return /*#__PURE__*/React.createElement(RelationshipInsights$2, {\n data: pageData === null || pageData === void 0 ? void 0 : pageData.getControlComparisonData.relationshipInsightContext\n });\n }\n };\n var renderControlInstanceOptions = function () {\n if (insideDrawer) {\n if (!onInsightByIdChange || !onControlInstanceIdChange) return null;\n return /*#__PURE__*/React.createElement(ControlInstanceOptions$1, {\n controlId: controlId,\n insightById: insightById,\n controlInstanceId: controlInstanceId,\n onInsightByIdChange: onInsightByIdChange,\n onControlInstanceIdChange: onControlInstanceIdChange\n });\n }\n return /*#__PURE__*/React.createElement(ControlInstanceOptionsWithParams, {\n controlId: controlId\n });\n };\n return /*#__PURE__*/React.createElement(NetworkMatch, {\n \"data-testid\": generate(['network-match'], props),\n className: className\n }, isNetworkLoading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), renderControlInstanceOptions(), showAlert && renderAlert(), error && /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Server Error!\",\n message: error.message\n }), hasControlInstanceSelection && ( /*#__PURE__*/React.createElement(MenuWrapper$1, null, renderRelationshipInsights(), renderContent())));\n};\nvar CompareRisks = styled(View)(templateObject_1$M || (templateObject_1$M = __makeTemplateObject([\"\\n padding: \", \";\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n padding: \", \";\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, Alert, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Content$3 = styled(View)(templateObject_2$g || (templateObject_2$g = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n\\n & > * {\\n width: 50%;\\n margin-left: 0;\\n\\n &:nth-child(odd):not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n\\n & > * {\\n width: 50%;\\n margin-left: 0;\\n\\n &:nth-child(odd):not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Section = styled(View)(templateObject_3$b || (templateObject_3$b = __makeTemplateObject([\"\\n \", \" {\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n }\\n }\\n\"], [\"\\n \", \" {\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n }\\n }\\n\"])), DataCard, function (p) {\n return p.theme.spacing.getSize();\n});\nvar HeadingWrapper$2 = styled(View)(templateObject_4$a || (templateObject_4$a = __makeTemplateObject([\"\\n display: flex;\\n margin-bottom: \", \";\\n align-items: flex-end;\\n height: \", \";\\n\"], [\"\\n display: flex;\\n margin-bottom: \", \";\\n align-items: flex-end;\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$M, templateObject_2$g, templateObject_3$b, templateObject_4$a;\nvar CompareRiskOneToMany = function (props) {\n var _a, _b, _c, _d, _e;\n var className = props.className,\n data = props.data,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var riskItems = (data.risksB || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n });\n return /*#__PURE__*/React.createElement(CompareRisks, {\n \"data-testid\": generate(['compare-risk--one-to-many'], props),\n className: className\n }, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n }), /*#__PURE__*/React.createElement(Content$3, null, /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(HeadingWrapper$2, null, /*#__PURE__*/React.createElement(Heading$1, {\n size: 2,\n weight: 500\n }, (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Risk Details\") : 'Your Risk Details')), /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n subTitle: (_a = data.riskA) === null || _a === void 0 ? void 0 : _a.title\n }), ((_b = data.riskA) === null || _b === void 0 ? void 0 : _b.riskCode) && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n subTitle: (_c = data.riskA) === null || _c === void 0 ? void 0 : _c.riskCode\n }), ((_d = data.riskA) === null || _d === void 0 ? void 0 : _d.riskSource) && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n subTitle: (_e = data.riskA) === null || _e === void 0 ? void 0 : _e.riskSource\n })), /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(HeadingWrapper$2, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500,\n size: 2,\n ellipsis: true,\n withLogo: true\n }, \"Matched Index Risk(s)\")), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n renderCount: true,\n type: \"Risk\",\n items: riskItems,\n onNavigate: onNavigate\n }))));\n};\nvar CompareRiskManyToOne = function (props) {\n var _a, _b, _c, _d, _e, _f;\n var className = props.className,\n data = props.data,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var riskItems = (data.risksA || []).map(function (item) {\n return {\n id: item.id,\n label: item.title,\n type: item.__typename\n };\n });\n return /*#__PURE__*/React.createElement(CompareRisks, {\n \"data-testid\": generate(['compare-risk--many-to-one'], props),\n className: className\n }, /*#__PURE__*/React.createElement(AlertMessage, {\n data: data.message || undefined\n }), /*#__PURE__*/React.createElement(Content$3, null, /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(HeadingWrapper$2, null, /*#__PURE__*/React.createElement(Heading$1, {\n size: 2,\n weight: 500\n }, (user === null || user === void 0 ? void 0 : user.accountName) ? \"\".concat(user.accountName, \" Matched Risk(s)\") : 'Your Matched Risk(s)')), /*#__PURE__*/React.createElement(RelationshipGroup$2, {\n renderWhenEmpty: true,\n renderCount: true,\n type: \"Risk\",\n items: riskItems,\n onNavigate: onNavigate\n })), /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(HeadingWrapper$2, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500,\n size: 2,\n ellipsis: true,\n withLogo: true\n }, \"Index Risk Details\")), /*#__PURE__*/React.createElement(DataCard, {\n title: \"Name\",\n subTitle: (_a = data.riskB) === null || _a === void 0 ? void 0 : _a.title\n }), ((_b = data.riskB) === null || _b === void 0 ? void 0 : _b.riskCode) && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Code\",\n subTitle: (_c = data.riskB) === null || _c === void 0 ? void 0 : _c.riskCode\n }), ((_d = data.riskB) === null || _d === void 0 ? void 0 : _d.riskSource) && /*#__PURE__*/React.createElement(DataCard, {\n title: \"Source\",\n subTitle: (_e = data.riskB) === null || _e === void 0 ? void 0 : _e.riskSource\n }), ((_f = data.riskB) === null || _f === void 0 ? void 0 : _f.description) && ( /*#__PURE__*/React.createElement(DataCard, {\n title: \"Description\"\n }, /*#__PURE__*/React.createElement(ShowMore, {\n showPreview: true,\n text: data.riskB.description\n }))))));\n};\nvar NetworkCompareClientRiskFragmentDoc = gql(templateObject_1$N || (templateObject_1$N = __makeTemplateObject([\"\\n fragment NetworkCompareClientRisk on ClientRisk {\\n id\\n title\\n riskCode\\n riskSource\\n}\\n \"], [\"\\n fragment NetworkCompareClientRisk on ClientRisk {\\n id\\n title\\n riskCode\\n riskSource\\n}\\n \"])));\nvar templateObject_1$N;\nvar NetworkCompareAcinRiskFragmentDoc = gql(templateObject_1$O || (templateObject_1$O = __makeTemplateObject([\"\\n fragment NetworkCompareAcinRisk on AcinRisk {\\n id\\n title\\n riskCode\\n riskSource\\n description\\n}\\n \"], [\"\\n fragment NetworkCompareAcinRisk on AcinRisk {\\n id\\n title\\n riskCode\\n riskSource\\n description\\n}\\n \"])));\nvar templateObject_1$O;\nvar NetworkCompareRiskOneToManyFragmentDoc = gql(templateObject_1$P || (templateObject_1$P = __makeTemplateObject([\"\\n fragment NetworkCompareRiskOneToMany on CompareRiskOneToMany {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n riskA {\\n ...NetworkCompareClientRisk\\n }\\n risksB {\\n ...NetworkCompareAcinRisk\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareRiskOneToMany on CompareRiskOneToMany {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n riskA {\\n ...NetworkCompareClientRisk\\n }\\n risksB {\\n ...NetworkCompareAcinRisk\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareAlertMessageFragmentDoc, NetworkCompareClientRiskFragmentDoc, NetworkCompareAcinRiskFragmentDoc);\nvar templateObject_1$P;\nvar NetworkCompareRiskManyToOneFragmentDoc = gql(templateObject_1$Q || (templateObject_1$Q = __makeTemplateObject([\"\\n fragment NetworkCompareRiskManyToOne on CompareRiskManyToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n risksA {\\n ...NetworkCompareClientRisk\\n }\\n riskB {\\n ...NetworkCompareAcinRisk\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment NetworkCompareRiskManyToOne on CompareRiskManyToOne {\\n id\\n message {\\n ...NetworkCompareAlertMessage\\n }\\n risksA {\\n ...NetworkCompareClientRisk\\n }\\n riskB {\\n ...NetworkCompareAcinRisk\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareAlertMessageFragmentDoc, NetworkCompareClientRiskFragmentDoc, NetworkCompareAcinRiskFragmentDoc);\nvar templateObject_1$Q;\nvar GetComparisonByRiskIdDocument = gql(templateObject_1$R || (templateObject_1$R = __makeTemplateObject([\"\\n query getComparisonByRiskId($id: String!) {\\n getComparisonByRiskId(id: $id) {\\n ... on CompareRiskOneToMany {\\n ...NetworkCompareRiskOneToMany\\n }\\n ... on CompareRiskManyToOne {\\n ...NetworkCompareRiskManyToOne\\n }\\n ... on CompareEmpty {\\n ...NetworkCompareEmpty\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n query getComparisonByRiskId($id: String!) {\\n getComparisonByRiskId(id: $id) {\\n ... on CompareRiskOneToMany {\\n ...NetworkCompareRiskOneToMany\\n }\\n ... on CompareRiskManyToOne {\\n ...NetworkCompareRiskManyToOne\\n }\\n ... on CompareEmpty {\\n ...NetworkCompareEmpty\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), NetworkCompareRiskOneToManyFragmentDoc, NetworkCompareRiskManyToOneFragmentDoc, NetworkCompareEmptyFragmentDoc);\n/**\r\n * __useGetComparisonByRiskIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetComparisonByRiskIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetComparisonByRiskIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetComparisonByRiskIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetComparisonByRiskIdQuery(baseOptions) {\n return useQuery(GetComparisonByRiskIdDocument, baseOptions);\n}\nvar templateObject_1$R;\nvar NetworkMatchRisks = function (props) {\n var className = props.className,\n riskId = props.riskId,\n onNavigate = props.onNavigate;\n var _a = useGetComparisonByRiskIdQuery({\n variables: {\n id: riskId\n },\n fetchPolicy: 'cache-and-network'\n }),\n data = _a.data,\n loading = _a.loading,\n previousData = _a.previousData;\n var isNetworkLoading = loading && !data;\n var pageData = loading && !data ? previousData : data;\n var renderContent = function () {\n var _a;\n switch ((_a = pageData === null || pageData === void 0 ? void 0 : pageData.getComparisonByRiskId) === null || _a === void 0 ? void 0 : _a.__typename) {\n case 'CompareRiskOneToMany':\n return /*#__PURE__*/React.createElement(CompareRiskOneToMany, {\n onNavigate: onNavigate,\n data: pageData.getComparisonByRiskId\n });\n case 'CompareRiskManyToOne':\n return /*#__PURE__*/React.createElement(CompareRiskManyToOne, {\n onNavigate: onNavigate,\n data: pageData.getComparisonByRiskId\n });\n case 'CompareEmpty':\n return /*#__PURE__*/React.createElement(CompareEmpty, {\n onNavigate: onNavigate,\n data: pageData.getComparisonByRiskId\n });\n }\n };\n return /*#__PURE__*/React.createElement(NetworkMatch, {\n \"data-testid\": generate(['network-match-risks'], props),\n className: className\n }, isNetworkLoading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), renderContent());\n};\nvar NetworkMatch$2 = styled(NetworkMatch$1)(templateObject_1$S || (templateObject_1$S = __makeTemplateObject([\"\"], [\"\"])));\nvar NetworkMatchRisks$1 = styled(NetworkMatchRisks)(templateObject_2$h || (templateObject_2$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$S, templateObject_2$h;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AttributeChange = styled(View)(templateObject_1$T || (templateObject_1$T = __makeTemplateObject([\"\\n align-items: center;\\n display: flex;\\n\"], [\"\\n align-items: center;\\n display: flex;\\n\"])));\nvar AttributeChangeDot = styled.div(templateObject_2$i || (templateObject_2$i = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n margin-right: \", \";\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.success.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar templateObject_1$T, templateObject_2$i;\nvar AttributeChange$1 = function (props) {\n var className = props.className,\n value = props.value,\n isLatest = props.isLatest;\n return /*#__PURE__*/React.createElement(AttributeChange, {\n \"data-testid\": generate(['attribute-change'], props),\n className: className\n }, isLatest && ( /*#__PURE__*/React.createElement(\"div\", {\n style: {\n display: 'inline-block'\n }\n }, /*#__PURE__*/React.createElement(Tooltip, {\n content: \"Current Value\"\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(AttributeChangeDot, {\n \"data-testid\": \"attribute-change--latest\",\n ref: tooltipRef\n });\n }))), value);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar Date$1 = styled(View)(templateObject_1$U || (templateObject_1$U = __makeTemplateObject([\"\"], [\"\"])));\nvar DateVisible = styled.div(templateObject_2$j || (templateObject_2$j = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$U, templateObject_2$j;\nvar getVisibleDate = function (dateISO) {\n return format(new Date(dateISO), 'dd MMM yyyy');\n};\nvar getTooltipDate = function (dateISO) {\n return format(new Date(dateISO), 'dd MMM yyyy, hh:mm a');\n};\nvar DateComp = function (props) {\n var className = props.className,\n dateISO = props.dateISO;\n var visibleDate = getVisibleDate(dateISO);\n var tooltipDate = getTooltipDate(dateISO);\n return /*#__PURE__*/React.createElement(Date$1, {\n \"data-testid\": generate(['date'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Tooltip, {\n content: tooltipDate\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(DateVisible, {\n \"data-testid\": \"date--visible\",\n ref: tooltipRef\n }, visibleDate);\n }));\n};\nvar headers = [{\n key: 'date',\n label: 'Date',\n width: '120px',\n sortable: true\n}, {\n key: 'riskInventoryName',\n label: 'Acin Index',\n width: '220px',\n sortable: true\n}, {\n key: 'attributeChange',\n label: 'Attribute Change',\n sortable: false\n}];\nvar getRows = function (data) {\n return !data ? [] : data.map(function (row) {\n return __assign(__assign({}, row), {\n date: /*#__PURE__*/React.createElement(DateComp, {\n dateISO: row.date\n }),\n attributeChange: ( /*#__PURE__*/React.createElement(AttributeChange$1, {\n value: row.attributeChange.value,\n isLatest: row.attributeChange.isLatest\n }))\n });\n });\n};\nvar ControlHistoryTableFragmentDoc = gql(templateObject_1$V || (templateObject_1$V = __makeTemplateObject([\"\\n fragment ControlHistoryTable on ControlHistoryTable {\\n id\\n date\\n riskInventoryName\\n attributeChange {\\n value\\n isLatest\\n }\\n}\\n \"], [\"\\n fragment ControlHistoryTable on ControlHistoryTable {\\n id\\n date\\n riskInventoryName\\n attributeChange {\\n value\\n isLatest\\n }\\n}\\n \"])));\nvar templateObject_1$V;\nvar GetControlHistoryDocument = gql(templateObject_1$W || (templateObject_1$W = __makeTemplateObject([\"\\n query getControlHistory($input: ControlHistoryInput) {\\n getControlHistory(input: $input) {\\n nodes {\\n ...ControlHistoryTable\\n }\\n activeSorting {\\n field\\n direction\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n range\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getControlHistory($input: ControlHistoryInput) {\\n getControlHistory(input: $input) {\\n nodes {\\n ...ControlHistoryTable\\n }\\n activeSorting {\\n field\\n direction\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n range\\n }\\n }\\n}\\n \", \"\"])), ControlHistoryTableFragmentDoc);\n/**\r\n * __useGetControlHistoryQuery__\r\n *\r\n * To run a query within a React component, call `useGetControlHistoryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetControlHistoryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetControlHistoryQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetControlHistoryQuery(baseOptions) {\n return useQuery(GetControlHistoryDocument, baseOptions);\n}\nvar templateObject_1$W;\nvar getContainerColor$1 = themeHelpers.getContainerColor;\n// This named style should be the wrapper for the component i.e. the module\nvar ControlHistory = styled(View)(templateObject_1$X || (templateObject_1$X = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar SectionContent = styled(View)(templateObject_2$k || (templateObject_2$k = __makeTemplateObject([\"\\n padding: \", \";\\n background: \", \";\\n\"], [\"\\n padding: \", \";\\n background: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return getContainerColor$1(p.activeTheme);\n});\nvar LoadingWrapper$1 = styled(View)(templateObject_3$c || (templateObject_3$c = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n padding-top: \", \";\\n height: \", \";\\n position: relative;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n padding-top: \", \";\\n height: \", \";\\n position: relative;\\n\"])), function (p) {\n return p.theme.spacing.getSize(25);\n}, function (p) {\n return p.theme.spacing.getSize(50);\n});\nvar ErrorWrapper = styled(View)(templateObject_4$b || (templateObject_4$b = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$X, templateObject_2$k, templateObject_3$c, templateObject_4$b;\nvar getControlHistoryData = function (data) {\n if (!data || !data.getControlHistory || !data.getControlHistory) return null;\n return data.getControlHistory;\n};\nvar ControlHistory$1 = function (props) {\n var className = props.className,\n controlId = props.controlId;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = usePagination(),\n activePage = _a.activePage,\n itemsPerPage = _a.itemsPerPage,\n onSetTotalResults = _a.onSetTotalResults,\n onSetTotalPages = _a.onSetTotalPages,\n onSetRange = _a.onSetRange;\n var _b = __read(React.useState({\n direction: ISortDirection.Desc,\n field: 'date'\n }), 2),\n activeSort = _b[0],\n setActiveSort = _b[1];\n var _c = useGetControlHistoryQuery({\n variables: {\n input: {\n id: controlId,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n },\n sorting: activeSort\n }\n }\n }),\n loading = _c.loading,\n data = _c.data,\n error = _c.error;\n var controlHistoryData = getControlHistoryData(data);\n var rows = getRows(controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.nodes);\n var hasData = !loading && !error && rows.length > 0;\n var hasNoData = !loading && !error && rows.length === 0;\n var hasServerError = !loading && error;\n React.useMemo(function () {\n var _a, _b, _c, _d, _e;\n if (((_a = controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.activeSorting) === null || _a === void 0 ? void 0 : _a.field) && ((_b = controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.activeSorting) === null || _b === void 0 ? void 0 : _b.direction)) {\n setActiveSort({\n field: controlHistoryData.activeSorting.field,\n direction: controlHistoryData.activeSorting.direction\n });\n }\n onSetTotalResults(((_c = controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.pagination) === null || _c === void 0 ? void 0 : _c.totalResults) || 0);\n onSetRange(((_d = controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.pagination) === null || _d === void 0 ? void 0 : _d.range) || '');\n onSetTotalPages(((_e = controlHistoryData === null || controlHistoryData === void 0 ? void 0 : controlHistoryData.pagination) === null || _e === void 0 ? void 0 : _e.totalPages) || 1);\n }, [controlHistoryData, onSetTotalResults, onSetTotalPages, onSetRange]);\n var handleSort = React.useCallback(function (key, direction) {\n setActiveSort({\n direction: direction === 'ASC' ? ISortDirection.Asc : ISortDirection.Desc,\n field: key\n });\n }, []);\n var renderHeading = function () {\n return /*#__PURE__*/React.createElement(Heading$1, {\n size: 2,\n weight: 500\n }, \"Control History\");\n };\n return /*#__PURE__*/React.createElement(ControlHistory, {\n \"data-testid\": generate(['control-history'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SectionContent, {\n activeTheme: activeTheme\n }, loading && ( /*#__PURE__*/React.createElement(LoadingWrapper$1, {\n \"data-testid\": \"control-history--loader\"\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }))), (hasServerError || hasNoData) && ( /*#__PURE__*/React.createElement(React.Fragment, null, renderHeading(), /*#__PURE__*/React.createElement(ErrorWrapper, null, /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: 'No Control History.',\n message: 'As attributes of this control are changed, they will be detailed here.'\n }\n })))), hasData && ( /*#__PURE__*/React.createElement(Pagination, {\n title: renderHeading()\n }, /*#__PURE__*/React.createElement(DataTable, {\n \"data-testid\": \"control-history--table\",\n headers: headers,\n rows: rows,\n activeSorting: {\n direction: activeSort.direction,\n key: activeSort.field\n },\n onSort: handleSort\n })))));\n};\nvar ControlHistory$2 = styled(ControlHistory$1)(templateObject_1$Y || (templateObject_1$Y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$Y;\nvar tabIds = {\n overview: 'overview',\n networkMatch: 'network-match',\n history: 'history'\n};\nvar defaultTab = tabIds.overview;\nvar tabs = [{\n title: 'Control Overview',\n id: tabIds.overview\n}, {\n title: 'Network Match',\n id: tabIds.networkMatch\n}, {\n title: 'Control History',\n id: tabIds.history\n}];\nvar PageHeaderWrapper = function (props) {\n var title = props.title,\n activeTab = props.activeTab,\n handleChangeTab = props.handleChangeTab,\n actions = props.actions,\n children = props.children,\n _a = props.withLogo,\n withLogo = _a === void 0 ? false : _a;\n var createFirstTier = function () {\n var _a;\n if (!actions || ((_a = Object.keys(actions)) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n return /*#__PURE__*/React.createElement(FirstTier, {\n title: title,\n variation: \"child\",\n withLogo: withLogo\n });\n } else {\n var renderActions = function (isCompressed) {\n return /*#__PURE__*/React.createElement(CompactHeaderActions, {\n isCompressed: isCompressed,\n actions: actions\n });\n };\n return /*#__PURE__*/React.createElement(FirstTier, {\n title: title,\n variation: \"child\",\n actions: renderActions,\n withLogo: withLogo\n });\n }\n };\n return /*#__PURE__*/React.createElement(PageWrapper, {\n \"data-testid\": generate([], props),\n header: /*#__PURE__*/React.createElement(CompactHeader, {\n firstTier: createFirstTier(),\n secondTier: /*#__PURE__*/React.createElement(SecondTier, {\n activeTab: activeTab,\n onTabClick: handleChangeTab ? handleChangeTab : function () {},\n tabs: tabs\n })\n }),\n hasTabs: true\n }, children);\n};\nvar pageBackground = themeHelpers.pageBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar ControlPage = styled(View)(templateObject_1$Z || (templateObject_1$Z = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), function (p) {\n return pageBackground(p.activeTheme);\n});\nvar AlertWrapper$1 = styled(View)(templateObject_2$l || (templateObject_2$l = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$Z, templateObject_2$l;\nvar ClientControlFragmentDoc = gql(templateObject_1$_ || (templateObject_1$_ = __makeTemplateObject([\"\\n fragment ClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalObjectives: objectives\\n optionalControlCode: controlCode\\n optionalControlSource: controlSource\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n optionalUpdatedAt: updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedClientRisk\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment ClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalObjectives: objectives\\n optionalControlCode: controlCode\\n optionalControlSource: controlSource\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n optionalUpdatedAt: updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedClientRisk\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n \", \"\\n \", \"\\n\"])), RelatedKeywordFragmentDoc, RelatedClientRiskFragmentDoc);\nvar templateObject_1$_;\nvar AcinControlFragmentDoc = gql(templateObject_1$$ || (templateObject_1$$ = __makeTemplateObject([\"\\n fragment AcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n objectives\\n controlCode\\n controlSource\\n controlType\\n controlOwner\\n controlFrequency\\n updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedAcinRisk\\n }\\n relatedRiskInventories {\\n ...RelatedRiskInventory\\n }\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n products {\\n ...RelatedProduct\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"], [\"\\n fragment AcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n objectives\\n controlCode\\n controlSource\\n controlType\\n controlOwner\\n controlFrequency\\n updatedAt\\n automation\\n keywords {\\n ...RelatedKeyword\\n }\\n relatedRisks {\\n ...RelatedAcinRisk\\n }\\n relatedRiskInventories {\\n ...RelatedRiskInventory\\n }\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n products {\\n ...RelatedProduct\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\\n\", \"\"])), RelatedKeywordFragmentDoc, RelatedAcinRiskFragmentDoc, RelatedRiskInventoryFragmentDoc, RelatedRegulationFragmentDoc, AcinControlNetworkSignalScoreFragmentDoc, RelatedProductFragmentDoc);\nvar templateObject_1$$;\nvar GetControlByIdDocument = gql(templateObject_1$10 || (templateObject_1$10 = __makeTemplateObject([\"\\n query GetControlById($id: String!) {\\n getControlById(id: $id) {\\n ... on ClientControl {\\n ...ClientControl\\n }\\n ... on AcinControl {\\n ...AcinControl\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n query GetControlById($id: String!) {\\n getControlById(id: $id) {\\n ... on ClientControl {\\n ...ClientControl\\n }\\n ... on AcinControl {\\n ...AcinControl\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), ClientControlFragmentDoc, AcinControlFragmentDoc);\n/**\r\n * __useGetControlByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetControlByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetControlByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetControlByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetControlByIdQuery(baseOptions) {\n return useQuery(GetControlByIdDocument, baseOptions);\n}\nvar templateObject_1$10;\nvar ControlPage$1 = function (props) {\n var className = props.className,\n onChangeTab = props.onChangeTab,\n onNavigate = props.onNavigate,\n controlId = props.controlId,\n onInit = props.onInit,\n _a = props.selectedTab,\n selectedTab = _a === void 0 ? defaultTab : _a,\n actions = props.actions,\n insightById = props.insightById,\n controlInstanceId = props.controlInstanceId,\n _b = props.insideDrawer,\n insideDrawer = _b === void 0 ? false : _b,\n onInsightByIdChange = props.onInsightByIdChange,\n onControlInstanceIdChange = props.onControlInstanceIdChange;\n var _c = __read(React.useState(selectedTab), 2),\n activeTab = _c[0],\n setActiveTab = _c[1];\n var activeTheme = useThemeProvider().activeTheme;\n var _d = useGetControlByIdQuery({\n variables: {\n id: controlId\n },\n fetchPolicy: 'cache-and-network'\n }),\n data = _d.data,\n loading = _d.loading,\n previousData = _d.previousData,\n error = _d.error;\n var isFirstLoad = loading && !previousData;\n var isNetworkLoading = loading && !data;\n var pageData = loading && !data ? previousData : data;\n React.useEffect(function () {\n if (pageData === null || pageData === void 0 ? void 0 : pageData.getControlById) {\n onInit && onInit(pageData.getControlById.title);\n }\n }, [onInit, pageData]);\n React.useEffect(function () {\n var foundTab = tabs.findIndex(function (tab) {\n return tab.id === selectedTab;\n });\n if (foundTab !== -1) {\n setActiveTab(selectedTab);\n } else {\n setActiveTab(defaultTab);\n }\n }, [selectedTab]);\n var handleChangeTab = function (tab) {\n setActiveTab(tab);\n onChangeTab && onChangeTab(tab);\n };\n var renderActiveTab = function (tabId) {\n var _a;\n if (pageData === null || pageData === void 0 ? void 0 : pageData.getControlById) {\n switch (tabId) {\n case tabIds.networkMatch:\n return /*#__PURE__*/React.createElement(NetworkMatch$2, {\n loading: isNetworkLoading,\n controlId: pageData.getControlById.id,\n controlType: (_a = pageData === null || pageData === void 0 ? void 0 : pageData.getControlById) === null || _a === void 0 ? void 0 : _a.__typename,\n onNavigate: onNavigate,\n insideDrawer: insideDrawer,\n insightById: insightById,\n controlInstanceId: controlInstanceId,\n onInsightByIdChange: onInsightByIdChange,\n onControlInstanceIdChange: onControlInstanceIdChange\n });\n case tabIds.history:\n return /*#__PURE__*/React.createElement(PaginationProvider, null, /*#__PURE__*/React.createElement(ControlHistory$2, {\n controlId: pageData.getControlById.id\n }));\n case tabIds.overview:\n default:\n return /*#__PURE__*/React.createElement(Overview$2, {\n onNavigate: onNavigate,\n controlData: pageData.getControlById,\n loading: isNetworkLoading\n });\n }\n }\n return null;\n };\n var renderContent = function () {\n var _a, _b, _c;\n if (isFirstLoad) {\n return /*#__PURE__*/React.createElement(PageHeaderWrapper, {\n title: \"Loading Control Page...\",\n activeTab: activeTab\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }));\n }\n if (error) {\n return /*#__PURE__*/React.createElement(PageHeaderWrapper, {\n \"data-testid\": \"server-error\",\n title: \"Something went wrong.\",\n activeTab: activeTab,\n handleChangeTab: handleChangeTab,\n actions: actions\n }, /*#__PURE__*/React.createElement(AlertWrapper$1, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Something went wrong.\",\n message: \"Please try to refresh or come back later.\"\n })));\n }\n var title = (_b = (_a = pageData === null || pageData === void 0 ? void 0 : pageData.getControlById) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : '';\n switch ((_c = pageData === null || pageData === void 0 ? void 0 : pageData.getControlById) === null || _c === void 0 ? void 0 : _c.__typename) {\n case 'ClientControl':\n return /*#__PURE__*/React.createElement(PageHeaderWrapper, {\n \"data-testid\": \"client-control-route-header\",\n title: title,\n activeTab: activeTab,\n handleChangeTab: handleChangeTab,\n actions: actions\n }, renderActiveTab(activeTab));\n case 'AcinControl':\n return /*#__PURE__*/React.createElement(PageHeaderWrapper, {\n \"data-testid\": \"acin-control-route-header\",\n title: title,\n activeTab: activeTab,\n handleChangeTab: handleChangeTab,\n actions: actions,\n withLogo: true\n }, renderActiveTab(activeTab));\n default:\n return /*#__PURE__*/React.createElement(PageHeaderWrapper, {\n \"data-testid\": \"control-id-not-found\",\n title: \"Control ID cannot be found.\",\n activeTab: activeTab,\n handleChangeTab: handleChangeTab,\n actions: actions\n }, /*#__PURE__*/React.createElement(AlertWrapper$1, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Control ID cannot be found.\",\n message: \"This control ID either does not exist or has been deleted.\"\n })));\n }\n };\n return /*#__PURE__*/React.createElement(ControlPage, {\n \"data-testid\": generate(['control-page'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(ControlInstanceProvider, null, renderContent()));\n};\nvar ControlPage$2 = styled(ControlPage$1)(templateObject_1$11 || (templateObject_1$11 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$11;\nvar navigateToTab = function (tab, id, history) {\n switch (tab) {\n case tabIds.networkMatch:\n {\n return history.push(\"/calibrate/control/\".concat(id, \"/\").concat(tabIds.networkMatch));\n }\n case tabIds.history:\n {\n return history.push(\"/calibrate/control/\".concat(id, \"/\").concat(tabIds.history));\n }\n case tabIds.overview:\n default:\n {\n return history.push(\"/calibrate/control/\".concat(id, \"/\").concat(tabIds.overview));\n }\n }\n};\nvar ControlRoute$1 = function (props) {\n var className = props.className,\n onNavigate = props.onNavigate,\n controlId = props.controlId,\n _a = props.onInit,\n onInit = _a === void 0 ? function () {} : _a;\n var history = useHistory();\n var _b = useParams(),\n id = _b.id,\n tabId = _b.tabId;\n var onChangeTab = function (value) {\n navigateToTab(value, id, history);\n };\n return /*#__PURE__*/React.createElement(ControlRoute, {\n \"data-testid\": generate(['control-route'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ControlPage$2, {\n controlId: controlId,\n onInit: onInit,\n onNavigate: onNavigate,\n onChangeTab: onChangeTab,\n selectedTab: tabId\n }));\n};\nvar ControlRoute$2 = styled(ControlRoute$1)(templateObject_1$12 || (templateObject_1$12 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$12;\nvar getMediaSize = function (size) {\n return \"(min-width: \".concat(size, \"px)\");\n};\nvar mediaQueryBreakpoints = {\n xlarge: 2000,\n large: 1400,\n medium: 1000,\n small: 900,\n xsmall: 700\n};\nvar mediaQuerySizes = {\n xlarge: getMediaSize(mediaQueryBreakpoints.xlarge),\n large: getMediaSize(mediaQueryBreakpoints.large),\n medium: getMediaSize(mediaQueryBreakpoints.medium),\n small: getMediaSize(mediaQueryBreakpoints.small),\n xsmall: getMediaSize(mediaQueryBreakpoints.xsmall)\n};\nvar pageBackground$1 = themeHelpers.pageBackground;\nvar RiskRoute = styled(View)(templateObject_1$13 || (templateObject_1$13 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n min-height: 100vh;\\n height: 100%;\\n \", \";\\n @media \", \" {\\n max-height: 100vh;\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n min-height: 100vh;\\n height: 100%;\\n \", \";\\n @media \", \" {\\n max-height: 100vh;\\n }\\n\"])), function (p) {\n return pageBackground$1(p.activeTheme);\n}, mediaQuerySizes.medium);\nvar templateObject_1$13;\nvar GetRiskHeadingDocument = gql(templateObject_1$14 || (templateObject_1$14 = __makeTemplateObject([\"\\n query getRiskHeading($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n id\\n title\\n optionalUpdatedAt: updatedAt\\n }\\n ... on AcinRisk {\\n id\\n title\\n updatedAt\\n }\\n }\\n}\\n \"], [\"\\n query getRiskHeading($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n id\\n title\\n optionalUpdatedAt: updatedAt\\n }\\n ... on AcinRisk {\\n id\\n title\\n updatedAt\\n }\\n }\\n}\\n \"])));\n/**\r\n * __useGetRiskHeadingQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskHeadingQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskHeadingQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskHeadingQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetRiskHeadingQuery(baseOptions) {\n return useQuery(GetRiskHeadingDocument, baseOptions);\n}\nvar templateObject_1$14;\nvar RiskHeadingContext = /*#__PURE__*/React.createContext({\n loading: false\n});\nvar RiskHeadingConsumer = RiskHeadingContext.Consumer;\nvar RiskHeadingProvider = function (props) {\n var riskId = props.riskId,\n onLoaded = props.onLoaded,\n children = props.children;\n var _a = useGetRiskHeadingQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n id: riskId\n }\n }),\n data = _a.data,\n loading = _a.loading;\n var risk = data === null || data === void 0 ? void 0 : data.getRiskById;\n React.useEffect(function () {\n if (risk) {\n onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded(risk.title);\n }\n }, [onLoaded, risk]);\n var lastUpdated = undefined;\n var showAcinLogo = false;\n switch (risk === null || risk === void 0 ? void 0 : risk.__typename) {\n case 'ClientRisk':\n lastUpdated = risk.optionalUpdatedAt;\n break;\n case 'AcinRisk':\n lastUpdated = risk.updatedAt;\n showAcinLogo = true;\n break;\n }\n return /*#__PURE__*/React.createElement(RiskHeadingContext.Provider, {\n value: {\n title: risk === null || risk === void 0 ? void 0 : risk.title,\n lastUpdated: lastUpdated,\n loading: loading,\n showAcinLogo: showAcinLogo\n }\n }, children);\n};\nvar useRiskHeading = function () {\n return React.useContext(RiskHeadingContext);\n};\nvar tabs$1 = [{\n title: 'Risk Overview',\n id: 'overview'\n}, {\n title: 'Network Match',\n id: 'network-match'\n}];\nvar containerBackground$3 = themeHelpers.containerBackground;\nvar Overview$3 = styled(View)(templateObject_1$15 || (templateObject_1$15 = __makeTemplateObject([\"\\n display: flex;\\n overflow: hidden;\\n flex-grow: 1;\\n\"], [\"\\n display: flex;\\n overflow: hidden;\\n flex-grow: 1;\\n\"])));\nvar RowContainer = styled(View)(templateObject_2$m || (templateObject_2$m = __makeTemplateObject([\"\\n padding: \", \";\\n padding-bottom: \", \";\\n\"], [\"\\n padding: \", \";\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.active ? p.theme.spacing.getSize(15) : 0;\n});\nvar RightPanel = styled(View)(templateObject_3$d || (templateObject_3$d = __makeTemplateObject([\"\\n position: relative;\\n width: 32%;\\n overflow-y: auto;\\n background: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n display: none;\\n @media \", \" {\\n display: block;\\n }\\n\"], [\"\\n position: relative;\\n width: 32%;\\n overflow-y: auto;\\n background: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n display: none;\\n @media \", \" {\\n display: block;\\n }\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n}, function (p) {\n return p.theme.colors.shadow;\n}, mediaQuerySizes.medium);\nvar RiskDetailsPanel = styled(View)(templateObject_4$c || (templateObject_4$c = __makeTemplateObject([\"\\n position: relative;\\n display: block;\\n padding-bottom: \", \";\\n @media \", \" {\\n display: none;\\n }\\n\"], [\"\\n position: relative;\\n display: block;\\n padding-bottom: \", \";\\n @media \", \" {\\n display: none;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, mediaQuerySizes.medium);\nvar LayoutRow = styled(View)(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n column-gap: \", \";\\n row-gap: \", \";\\n padding-bottom: \", \";\\n flex-direction: column;\\n\\n @media \", \" {\\n flex-direction: row;\\n }\\n\"], [\"\\n display: flex;\\n width: 100%;\\n column-gap: \", \";\\n row-gap: \", \";\\n padding-bottom: \", \";\\n flex-direction: column;\\n\\n @media \", \" {\\n flex-direction: row;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, mediaQuerySizes.xsmall);\nvar InfoPanel = styled(Card$1)(templateObject_6$5 || (templateObject_6$5 = __makeTemplateObject([\"\\n flex-grow: 1;\\n padding: \", \";\\n \", \";\\n\"], [\"\\n flex-grow: 1;\\n padding: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$3(p.activeTheme);\n});\nvar TabRow = styled(View)(templateObject_7$4 || (templateObject_7$4 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n padding: \", \";\\n column-gap: \", \";\\n \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n padding: \", \";\\n column-gap: \", \";\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$3(p.activeTheme);\n}, boxShadow);\nvar ControlsGraph = styled(View)(templateObject_8$3 || (templateObject_8$3 = __makeTemplateObject([\"\\n flex: 3;\\n min-width: 0;\\n @media \", \" {\\n min-height: \", \";\\n }\\n\"], [\"\\n flex: 3;\\n min-width: 0;\\n @media \", \" {\\n min-height: \", \";\\n }\\n\"])), mediaQuerySizes.xsmall, function (p) {\n return p.theme.spacing.getSize(87);\n});\nvar RiskProperties = styled(View)(templateObject_9$3 || (templateObject_9$3 = __makeTemplateObject([\"\\n flex: 2;\\n min-width: 0;\\n @media \", \" {\\n min-height: \", \";\\n }\\n\"], [\"\\n flex: 2;\\n min-width: 0;\\n @media \", \" {\\n min-height: \", \";\\n }\\n\"])), mediaQuerySizes.xsmall, function (p) {\n return p.theme.spacing.getSize(87);\n});\nvar TabContent = styled(View)(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$15, templateObject_2$m, templateObject_3$d, templateObject_4$c, templateObject_5$8, templateObject_6$5, templateObject_7$4, templateObject_8$3, templateObject_9$3, templateObject_10$3;\n// Note: If Overivew has common styles with the other tabs, remove this file and instead import a generic styled component for all tab layouts\n\nvar RelatedReasonCodesFragmentDoc = gql(templateObject_1$16 || (templateObject_1$16 = __makeTemplateObject([\"\\n fragment RelatedReasonCodes on ReasonCode {\\n id\\n longName\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n riskInventories {\\n id\\n name\\n }\\n}\\n \"], [\"\\n fragment RelatedReasonCodes on ReasonCode {\\n id\\n longName\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n riskInventories {\\n id\\n name\\n }\\n}\\n \"])));\nvar templateObject_1$16;\nvar ClientRiskDetailsFragmentDoc = gql(templateObject_1$17 || (templateObject_1$17 = __makeTemplateObject([\"\\n fragment ClientRiskDetails on ClientRisk {\\n id\\n optionalDescription: description\\n relatedReasonCodes {\\n ...RelatedReasonCodes\\n }\\n}\\n \", \"\"], [\"\\n fragment ClientRiskDetails on ClientRisk {\\n id\\n optionalDescription: description\\n relatedReasonCodes {\\n ...RelatedReasonCodes\\n }\\n}\\n \", \"\"])), RelatedReasonCodesFragmentDoc);\nvar templateObject_1$17;\nvar AcinRiskDetailsFragmentDoc = gql(templateObject_1$18 || (templateObject_1$18 = __makeTemplateObject([\"\\n fragment AcinRiskDetails on AcinRisk {\\n id\\n description\\n relatedReasonCodes {\\n ...RelatedReasonCodes\\n }\\n}\\n \", \"\"], [\"\\n fragment AcinRiskDetails on AcinRisk {\\n id\\n description\\n relatedReasonCodes {\\n ...RelatedReasonCodes\\n }\\n}\\n \", \"\"])), RelatedReasonCodesFragmentDoc);\nvar templateObject_1$18;\nvar GetRiskDetailsByIdDocument = gql(templateObject_1$19 || (templateObject_1$19 = __makeTemplateObject([\"\\n query getRiskDetailsById($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n ...ClientRiskDetails\\n }\\n ... on AcinRisk {\\n ...AcinRiskDetails\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n query getRiskDetailsById($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n ...ClientRiskDetails\\n }\\n ... on AcinRisk {\\n ...AcinRiskDetails\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), ClientRiskDetailsFragmentDoc, AcinRiskDetailsFragmentDoc);\n/**\r\n * __useGetRiskDetailsByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskDetailsByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskDetailsByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskDetailsByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetRiskDetailsByIdQuery(baseOptions) {\n return useQuery(GetRiskDetailsByIdDocument, baseOptions);\n}\nvar templateObject_1$19;\nvar RiskDetailsContext = /*#__PURE__*/React.createContext({\n loading: false\n});\nvar RiskDetailsConsumer = RiskDetailsContext.Consumer;\nvar RiskDetailsProvider = function (props) {\n var riskId = props.riskId,\n children = props.children;\n var _a = useGetRiskDetailsByIdQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n id: riskId\n }\n }),\n data = _a.data,\n loading = _a.loading,\n previousData = _a.previousData,\n error = _a.error;\n var risk = (data === null || data === void 0 ? void 0 : data.getRiskById) || (previousData === null || previousData === void 0 ? void 0 : previousData.getRiskById);\n return /*#__PURE__*/React.createElement(RiskDetailsContext.Provider, {\n value: {\n risk: risk,\n loading: loading,\n error: error\n }\n }, children);\n};\nvar useRiskDetails = function () {\n return React.useContext(RiskDetailsContext);\n};\nvar containerBackground$4 = themeHelpers.containerBackground;\nvar RiskDetailsPanel$1 = styled(View)(templateObject_1$1a || (templateObject_1$1a = __makeTemplateObject([\"\\n padding: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n height: 100%;\\n overflow-y: auto;\\n \", \";\\n\"], [\"\\n padding: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n height: 100%;\\n overflow-y: auto;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return containerBackground$4(p.activeTheme);\n});\nvar HeadingText$3 = styled(Heading$1)(templateObject_2$n || (templateObject_2$n = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue(1).main;\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar SubHeadingWrapper = styled(Heading$1)(templateObject_3$e || (templateObject_3$e = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar SubHeadingText = styled(Heading$1)(templateObject_4$d || (templateObject_4$d = __makeTemplateObject([\"\\n color: \", \";\\n line-height: 1;\\n\"], [\"\\n color: \", \";\\n line-height: 1;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar DescriptionText = styled(Markdown)(templateObject_5$9 || (templateObject_5$9 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar ShowAllButton = styled(Button)(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject([\"\\n height: auto;\\n\"], [\"\\n height: auto;\\n\"])));\nvar templateObject_1$1a, templateObject_2$n, templateObject_3$e, templateObject_4$d, templateObject_5$9, templateObject_6$6;\nvar MatchStatus = styled(View)(templateObject_1$1b || (templateObject_1$1b = __makeTemplateObject([\"\"], [\"\"])));\nvar SubHeadingText$1 = styled(Heading$1)(templateObject_2$o || (templateObject_2$o = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ReasonCodeWrapper = styled(View)(templateObject_3$f || (templateObject_3$f = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ReasonCode = styled.ul(templateObject_4$e || (templateObject_4$e = __makeTemplateObject([\"\\n list-style-type: none;\\n position: relative;\\n padding-left: \", \";\\n margin-bottom: \", \";\\n font-weight: 500;\\n\\n // TODO: This needs to be refactored slightly to support DM\\n\\n ::before {\\n position: absolute;\\n content: '';\\n display: inline-block;\\n width: 9px;\\n height: 9px;\\n border-radius: 50%;\\n background-color: \", \";\\n top: 2px;\\n left: 0;\\n z-index: 1;\\n }\\n\\n ::after {\\n content: '';\\n display: inline-block;\\n width: 1px;\\n height: 20px;\\n background-color: \", \";\\n position: absolute;\\n top: 11px;\\n left: 4px;\\n z-index: 0;\\n }\\n\"], [\"\\n list-style-type: none;\\n position: relative;\\n padding-left: \", \";\\n margin-bottom: \", \";\\n font-weight: 500;\\n\\n // TODO: This needs to be refactored slightly to support DM\\n\\n ::before {\\n position: absolute;\\n content: '';\\n display: inline-block;\\n width: 9px;\\n height: 9px;\\n border-radius: 50%;\\n background-color: \", \";\\n top: 2px;\\n left: 0;\\n z-index: 1;\\n }\\n\\n ::after {\\n content: '';\\n display: inline-block;\\n width: 1px;\\n height: 20px;\\n background-color: \", \";\\n position: absolute;\\n top: 11px;\\n left: 4px;\\n z-index: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n var _a, _b, _c;\n return ((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) !== undefined && ((_b = p.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) !== undefined ? p.theme.colors.dataVisWithMeaning.getValue(((_c = p.colorPalette) === null || _c === void 0 ? void 0 : _c.paletteIndex) || undefined, p.colorPalette.shade || undefined).main : p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar Inventory = styled.li(templateObject_5$a || (templateObject_5$a = __makeTemplateObject([\"\\n list-style-type: none;\\n position: relative;\\n padding-left: \", \";\\n margin-bottom: \", \";\\n\\n // TODO: This needs to be refactored slightly to support DM / could be simplified\\n\\n ::before {\\n position: absolute;\\n content: '';\\n display: inline-block;\\n width: 3px;\\n height: 3px;\\n -moz-border-radius: 50%; // TODO: Verify if unecessary and remove\\n -webkit-border-radius: 50%; // TODO: Verify if unecessary and remove\\n border-radius: 50%;\\n background-color: \", \";\\n top: 6px;\\n left: 3px;\\n z-index: 0;\\n }\\n :not(:last-child):after {\\n content: '';\\n display: inline-block;\\n width: 1px;\\n height: 18px;\\n background-color: \", \";\\n position: absolute;\\n top: 9px;\\n left: 4px;\\n z-index: 0;\\n }\\n\"], [\"\\n list-style-type: none;\\n position: relative;\\n padding-left: \", \";\\n margin-bottom: \", \";\\n\\n // TODO: This needs to be refactored slightly to support DM / could be simplified\\n\\n ::before {\\n position: absolute;\\n content: '';\\n display: inline-block;\\n width: 3px;\\n height: 3px;\\n -moz-border-radius: 50%; // TODO: Verify if unecessary and remove\\n -webkit-border-radius: 50%; // TODO: Verify if unecessary and remove\\n border-radius: 50%;\\n background-color: \", \";\\n top: 6px;\\n left: 3px;\\n z-index: 0;\\n }\\n :not(:last-child):after {\\n content: '';\\n display: inline-block;\\n width: 1px;\\n height: 18px;\\n background-color: \", \";\\n position: absolute;\\n top: 9px;\\n left: 4px;\\n z-index: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n var _a, _b, _c;\n return ((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) !== undefined && ((_b = p.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) !== undefined ? p.theme.colors.dataVisWithMeaning.getValue(((_c = p.colorPalette) === null || _c === void 0 ? void 0 : _c.paletteIndex) || undefined, p.colorPalette.shade || undefined).main : p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar templateObject_1$1b, templateObject_2$o, templateObject_3$f, templateObject_4$e, templateObject_5$a;\nvar MatchStatus$1 = function (props) {\n var className = props.className,\n reasonCodes = props.reasonCodes;\n return /*#__PURE__*/React.createElement(MatchStatus, {\n \"data-testid\": generate(['match-status'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SubHeadingText$1, {\n weight: 600\n }, \"Insight\"), reasonCodes.length ? reasonCodes === null || reasonCodes === void 0 ? void 0 : reasonCodes.map(function (reasonCode, index) {\n return /*#__PURE__*/React.createElement(ReasonCodeWrapper, {\n key: index\n }, /*#__PURE__*/React.createElement(ReasonCode, {\n \"data-testid\": \"reason-code\",\n colorPalette: reasonCode.colorPalette\n }, reasonCode.longName), reasonCode.riskInventories.map(function (inventory, index) {\n return /*#__PURE__*/React.createElement(Inventory, {\n key: index,\n \"data-testid\": \"risk-inventory\",\n colorPalette: reasonCode.colorPalette\n }, inventory.name);\n }));\n }) : ( /*#__PURE__*/React.createElement(Text$1, null, \"N/A\")));\n};\nvar shortDescriptionLength = 500;\nvar RiskDescription = function (props) {\n var risk = props.risk;\n var _a = __read(React.useState(false), 2),\n showAll = _a[0],\n setShowAll = _a[1];\n var description = (risk === null || risk === void 0 ? void 0 : risk.__typename) === 'AcinRisk' ? risk.description : (risk === null || risk === void 0 ? void 0 : risk.__typename) === 'ClientRisk' ? risk.optionalDescription : undefined;\n var onShowAllClick = function () {\n setShowAll(!showAll);\n };\n var displayDescription = React.useMemo(function () {\n if (!description) {\n if ((risk === null || risk === void 0 ? void 0 : risk.__typename) === 'AcinRisk') {\n return 'Not currently available';\n } else if ((risk === null || risk === void 0 ? void 0 : risk.__typename) === 'ClientRisk') {\n return 'No description provided';\n }\n return null;\n }\n if (showAll) {\n return description;\n }\n var shortDescription = description.slice(0, shortDescriptionLength);\n var elipsis = description.length > shortDescriptionLength ? '...' : '';\n return \"\".concat(shortDescription).concat(elipsis);\n }, [description, risk === null || risk === void 0 ? void 0 : risk.__typename, showAll]);\n if (!displayDescription) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SubHeadingWrapper, null, /*#__PURE__*/React.createElement(SubHeadingText, {\n weight: 600\n }, \"Description\"), description && (description === null || description === void 0 ? void 0 : description.length) > shortDescriptionLength && ( /*#__PURE__*/React.createElement(ShowAllButton, {\n variant: \"link\",\n iconPosition: \"right\",\n icon: function () {\n return showAll ? /*#__PURE__*/React.createElement(IconChevronUp, null) : /*#__PURE__*/React.createElement(IconChevronDown, null);\n },\n onClick: onShowAllClick,\n label: showAll ? 'Show Less' : 'Show All'\n }))), /*#__PURE__*/React.createElement(DescriptionText, {\n content: displayDescription\n }));\n};\nvar RiskDetailsPanel$2 = function (props) {\n var activeTheme = useThemeProvider().activeTheme;\n var risk = props.risk,\n className = props.className;\n return /*#__PURE__*/React.createElement(RiskDetailsPanel$1, {\n \"data-testid\": generate(['risk-details-panel'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(HeadingText$3, {\n size: 1,\n weight: 500\n }, \"Risk Details\"), /*#__PURE__*/React.createElement(RiskDescription, {\n risk: risk\n }), /*#__PURE__*/React.createElement(MatchStatus$1, {\n reasonCodes: risk === null || risk === void 0 ? void 0 : risk.relatedReasonCodes\n }));\n};\nvar containerBackground$5 = themeHelpers.containerBackground;\nvar RiskError = styled(View)(templateObject_1$1c || (templateObject_1$1c = __makeTemplateObject([\"\\n height: 100%;\\n min-height: \", \";\\n padding: \", \";\\n padding-bottom: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n \", \";\\n\"], [\"\\n height: 100%;\\n min-height: \", \";\\n padding: \", \";\\n padding-bottom: \", \";\\n border-radius: \", \";\\n box-shadow: 0 0 6px 0 \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(35);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return containerBackground$5(p.activeTheme);\n});\nvar HeadingText$4 = styled(Heading$1)(templateObject_2$p || (templateObject_2$p = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue(1).main;\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$1c, templateObject_2$p;\nvar RiskError$1 = function (props) {\n var title = props.title;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(RiskError, {\n activeTheme: activeTheme\n }, title && ( /*#__PURE__*/React.createElement(HeadingText$4, {\n size: 1,\n weight: 500\n }, title)), /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Oops, something went wrong.\",\n message: \"Please refresh the page or try again later.\"\n }));\n};\nvar RiskDetailsPanelContainer = function () {\n var _a = useRiskDetails(),\n risk = _a.risk,\n loading = _a.loading,\n error = _a.error;\n if (loading) {\n return /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n });\n }\n if (error) {\n return /*#__PURE__*/React.createElement(RiskError$1, {\n title: \"Risk Details\"\n });\n }\n return /*#__PURE__*/React.createElement(RiskDetailsPanel$2, {\n risk: risk\n });\n};\nvar RelatedRiskIntelligenceFragmentDoc = gql(templateObject_1$1d || (templateObject_1$1d = __makeTemplateObject([\"\\n fragment RelatedRiskIntelligence on RelatedRiskIntelligence {\\n id\\n publishDate\\n title\\n type\\n}\\n \"], [\"\\n fragment RelatedRiskIntelligence on RelatedRiskIntelligence {\\n id\\n publishDate\\n title\\n type\\n}\\n \"])));\nvar templateObject_1$1d;\nvar RelatedBusinessLineFragmentDoc = gql(templateObject_1$1e || (templateObject_1$1e = __makeTemplateObject([\"\\n fragment RelatedBusinessLine on BusinessLine {\\n id\\n title\\n}\\n \"], [\"\\n fragment RelatedBusinessLine on BusinessLine {\\n id\\n title\\n}\\n \"])));\nvar templateObject_1$1e;\nvar ClientGeneralRiskDataFragmentDoc = gql(templateObject_1$1f || (templateObject_1$1f = __makeTemplateObject([\"\\n fragment ClientGeneralRiskData on ClientRisk {\\n id\\n relatedRiskIntelligence {\\n ...RelatedRiskIntelligence\\n }\\n relatedBusinessLines {\\n ...RelatedBusinessLine\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment ClientGeneralRiskData on ClientRisk {\\n id\\n relatedRiskIntelligence {\\n ...RelatedRiskIntelligence\\n }\\n relatedBusinessLines {\\n ...RelatedBusinessLine\\n }\\n}\\n \", \"\\n\", \"\"])), RelatedRiskIntelligenceFragmentDoc, RelatedBusinessLineFragmentDoc);\nvar templateObject_1$1f;\nvar AcinRiskGroupFragmentDoc = gql(templateObject_1$1g || (templateObject_1$1g = __makeTemplateObject([\"\\n fragment AcinRiskGroup on AcinRiskGroup {\\n id\\n name\\n risks {\\n ...RelatedAcinRisk\\n }\\n}\\n \", \"\"], [\"\\n fragment AcinRiskGroup on AcinRiskGroup {\\n id\\n name\\n risks {\\n ...RelatedAcinRisk\\n }\\n}\\n \", \"\"])), RelatedAcinRiskFragmentDoc);\nvar templateObject_1$1g;\nvar AcinGeneralRiskDataFragmentDoc = gql(templateObject_1$1h || (templateObject_1$1h = __makeTemplateObject([\"\\n fragment AcinGeneralRiskData on AcinRisk {\\n id\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n relatedRiskIntelligence {\\n ...RelatedRiskIntelligence\\n }\\n relatedRiskTaxonomy: riskGroup {\\n ...AcinRiskGroup\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment AcinGeneralRiskData on AcinRisk {\\n id\\n relatedRegulations {\\n ...RelatedRegulation\\n }\\n relatedRiskIntelligence {\\n ...RelatedRiskIntelligence\\n }\\n relatedRiskTaxonomy: riskGroup {\\n ...AcinRiskGroup\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), RelatedRegulationFragmentDoc, RelatedRiskIntelligenceFragmentDoc, AcinRiskGroupFragmentDoc);\nvar templateObject_1$1h;\nvar GetGeneralRiskDataDocument = gql(templateObject_1$1i || (templateObject_1$1i = __makeTemplateObject([\"\\n query getGeneralRiskData($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n ...ClientGeneralRiskData\\n }\\n ... on AcinRisk {\\n ...AcinGeneralRiskData\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n query getGeneralRiskData($id: String!) {\\n getRiskById(id: $id) {\\n ... on ClientRisk {\\n ...ClientGeneralRiskData\\n }\\n ... on AcinRisk {\\n ...AcinGeneralRiskData\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), ClientGeneralRiskDataFragmentDoc, AcinGeneralRiskDataFragmentDoc);\n/**\r\n * __useGetGeneralRiskDataQuery__\r\n *\r\n * To run a query within a React component, call `useGetGeneralRiskDataQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetGeneralRiskDataQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetGeneralRiskDataQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetGeneralRiskDataQuery(baseOptions) {\n return useQuery(GetGeneralRiskDataDocument, baseOptions);\n}\nvar templateObject_1$1i;\nvar GeneralRiskDataContext = /*#__PURE__*/React.createContext({\n loading: false\n});\nvar GeneralRiskDataConsumer = GeneralRiskDataContext.Consumer;\nvar GeneralRiskDataProvider = function (props) {\n var riskId = props.riskId,\n children = props.children;\n var _a = useGetGeneralRiskDataQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n id: riskId\n }\n }),\n data = _a.data,\n loading = _a.loading,\n previousData = _a.previousData,\n error = _a.error;\n var generalRiskData = (data === null || data === void 0 ? void 0 : data.getRiskById) || (previousData === null || previousData === void 0 ? void 0 : previousData.getRiskById);\n return /*#__PURE__*/React.createElement(GeneralRiskDataContext.Provider, {\n value: {\n generalRiskData: generalRiskData,\n loading: loading,\n error: error\n }\n }, children);\n};\nvar useGeneralRiskData = function () {\n return React.useContext(GeneralRiskDataContext);\n};\nvar BusinessLinesList = function (props) {\n var data = props.data;\n var sortedLinks = __spreadArray([], __read(data), false).sort(function (_a, _b) {\n var a = _a.title;\n var b = _b.title;\n return a.localeCompare(b);\n });\n return /*#__PURE__*/React.createElement(RiskDataList$1, {\n id: \"business-lines-risk-data\",\n listName: \"Business Lines\",\n listCount: data.length\n }, /*#__PURE__*/React.createElement(RiskDataLinkList, {\n links: sortedLinks.map(function (_a) {\n var id = _a.id,\n title = _a.title;\n return {\n id: id,\n label: title\n };\n })\n }));\n};\nvar RiskIntelRow = function (props) {\n var id = props.id,\n title = props.title,\n publishDate = props.publishDate,\n type = props.type,\n href = props.href;\n return /*#__PURE__*/React.createElement(RiskDataRow, {\n key: id\n }, /*#__PURE__*/React.createElement(RiskDatalLink, {\n weight: 500,\n variant: \"secondary\",\n href: href\n }, title), /*#__PURE__*/React.createElement(RiskIntelText, null, type, \" | Published: \", new Date(publishDate).toDateString()));\n};\nvar RiskIntelList = function (props) {\n var description = props.description,\n data = props.data;\n var dateSortedData = data.length > 1 ? __spreadArray([], __read(data), false).sort(function (a, b) {\n return Date.parse(b.publishDate) - Date.parse(a.publishDate);\n }) : data;\n return /*#__PURE__*/React.createElement(RiskDataList$1, {\n id: \"risk-intelligence-risk-data\",\n listName: \"Risk Intelligence\",\n listDescription: description,\n listCount: data.length\n }, dateSortedData.map(function (_a) {\n var id = _a.id,\n title = _a.title,\n publishDate = _a.publishDate,\n type = _a.type;\n return /*#__PURE__*/React.createElement(RiskIntelRow, {\n href: \"\".concat(window.location.origin, \"/risk-intelligence/\").concat(id),\n key: id,\n id: id,\n title: title,\n type: type,\n publishDate: publishDate\n });\n }));\n};\nvar containerBackground$6 = themeHelpers.containerBackground;\nvar LoadingWrapper$2 = styled(View)(templateObject_1$1j || (templateObject_1$1j = __makeTemplateObject([\"\\n height: 140px;\\n padding: \", \";\\n padding-top: 0;\\n \", \";\\n\"], [\"\\n height: 140px;\\n padding: \", \";\\n padding-top: 0;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$6(p.activeTheme);\n});\nvar NoDataWrapper = styled(View)(templateObject_2$q || (templateObject_2$q = __makeTemplateObject([\"\\n margin: \", \";\\n margin-top: 0;\\n \", \";\\n\"], [\"\\n margin: \", \";\\n margin-top: 0;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$6(p.activeTheme);\n});\nvar LoadingInnerWrapper$1 = styled(View)(templateObject_3$g || (templateObject_3$g = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n \", \";\\n\"], [\"\\n position: relative;\\n height: 100%;\\n \", \";\\n\"])), function (p) {\n return containerBackground$6(p.activeTheme);\n});\nvar GeneralRiskData = styled(View)(templateObject_4$f || (templateObject_4$f = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding-top: 0;\\n\\n > div {\\n border-top: 1px solid \", \";\\n &:first-of-type {\\n border-top: none;\\n }\\n\"], [\"\\n \", \";\\n \", \";\\n position: relative;\\n display: flex;\\n flex-direction: column;\\n padding-top: 0;\\n\\n > div {\\n border-top: 1px solid \", \";\\n &:first-of-type {\\n border-top: none;\\n }\\n\"])), boxShadow, function (p) {\n return containerBackground$6(p.activeTheme);\n}, function (p) {\n return p.activeTheme.name === 'dark' ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue(0);\n});\nvar templateObject_1$1j, templateObject_2$q, templateObject_3$g, templateObject_4$f;\nvar ClientRiskList = function (_a) {\n var data = _a.data;\n var noData = !data.relatedRiskIntelligence.length && !data.relatedBusinessLines.length;\n var activeTheme = useThemeProvider().activeTheme;\n return !noData ? ( /*#__PURE__*/React.createElement(React.Fragment, null, data.relatedRiskIntelligence.length ? /*#__PURE__*/React.createElement(RiskIntelList, {\n data: data.relatedRiskIntelligence\n }) : null, data.relatedBusinessLines.length ? /*#__PURE__*/React.createElement(BusinessLinesList, {\n data: data.relatedBusinessLines\n }) : null)) : ( /*#__PURE__*/React.createElement(NoDataWrapper, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"There is no data related to this risk.\"\n })));\n};\nvar RiskTaxonomyList = function (props) {\n var data = props.data;\n var sortedRisks = __spreadArray([], __read(data.risks), false).sort(function (_a, _b) {\n var a = _a.title;\n var b = _b.title;\n return a.localeCompare(b);\n });\n return /*#__PURE__*/React.createElement(RiskDataList$1, {\n id: \"risk-taxonomy-risk-data\",\n listName: \"Risk Taxonomy\",\n listCount: data.risks.length\n }, /*#__PURE__*/React.createElement(RiskDataListDescription, {\n color: theme.colors.text.getValue(1)\n }, \"This Level 3 Risk belongs to Level 2 Risk \", data.name, \". \", data.risks.length, \" Other Risks also belong to this Level 2 Risk\"), /*#__PURE__*/React.createElement(RiskDataLinkList, {\n links: sortedRisks.map(function (_a) {\n var id = _a.id,\n title = _a.title;\n return {\n id: id,\n label: title,\n href: \"/calibrate/risk/\".concat(id)\n };\n })\n }));\n};\nvar AcinRiskList = function (_a) {\n var data = _a.data;\n return /*#__PURE__*/React.createElement(React.Fragment, null, data.relatedRegulations.length ? ( /*#__PURE__*/React.createElement(ImpactedRegulationsList, {\n id: data.id,\n data: data.relatedRegulations\n })) : null, data.relatedRiskIntelligence.length ? /*#__PURE__*/React.createElement(RiskIntelList, {\n data: data.relatedRiskIntelligence\n }) : null, data.relatedRiskTaxonomy.risks.length ? /*#__PURE__*/React.createElement(RiskTaxonomyList, {\n data: data.relatedRiskTaxonomy\n }) : null);\n};\nvar GeneralRiskData$1 = function (_a) {\n var generalRiskData = _a.generalRiskData;\n var isClientRisk = (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.__typename) === 'ClientRisk';\n var isAcinRisk = (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.__typename) === 'AcinRisk';\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(GeneralRiskData, {\n activeTheme: activeTheme\n }, isClientRisk && /*#__PURE__*/React.createElement(ClientRiskList, {\n data: generalRiskData\n }), isAcinRisk && /*#__PURE__*/React.createElement(AcinRiskList, {\n data: generalRiskData\n }));\n};\nvar GeneralRiskDataContainer = function () {\n var _a = useGeneralRiskData(),\n generalRiskData = _a.generalRiskData,\n loading = _a.loading,\n error = _a.error;\n var activeTheme = useThemeProvider().activeTheme;\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper$2, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(LoadingInnerWrapper$1, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n })));\n }\n if (error) {\n return /*#__PURE__*/React.createElement(RiskError$1, null);\n }\n return /*#__PURE__*/React.createElement(GeneralRiskData$1, {\n generalRiskData: generalRiskData\n });\n};\nvar CompletenessReportControlListAcinControlFragmentDoc = gql(templateObject_1$1k || (templateObject_1$1k = __makeTemplateObject([\"\\n fragment CompletenessReportControlListAcinControl on AcinControl {\\n id\\n title\\n acinDescription: description\\n acinControlCode: controlCode\\n riskInventory {\\n id\\n name\\n }\\n nss {\\n score\\n total\\n highlight\\n }\\n }\\n\"], [\"\\n fragment CompletenessReportControlListAcinControl on AcinControl {\\n id\\n title\\n acinDescription: description\\n acinControlCode: controlCode\\n riskInventory {\\n id\\n name\\n }\\n nss {\\n score\\n total\\n highlight\\n }\\n }\\n\"])));\nvar CompletenessReportControlListClientControlFragmentDoc = gql(templateObject_2$r || (templateObject_2$r = __makeTemplateObject([\"\\n fragment CompletenessReportControlListClientControl on ClientControl {\\n id\\n title\\n clientDescription: description\\n clientControlCode: controlCode\\n riskInventory {\\n id\\n name\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n\"], [\"\\n fragment CompletenessReportControlListClientControl on ClientControl {\\n id\\n title\\n clientDescription: description\\n clientControlCode: controlCode\\n riskInventory {\\n id\\n name\\n }\\n relatedBusinessLines {\\n id\\n title\\n }\\n controlQualityScore\\n }\\n\"])));\nvar CompletenessReportControlListControlFragmentDoc = gql(templateObject_3$h || (templateObject_3$h = __makeTemplateObject([\"\\n fragment CompletenessReportControlListControl on Control {\\n ... on AcinControl {\\n ...CompletenessReportControlListAcinControl\\n }\\n ... on ClientControl {\\n ...CompletenessReportControlListClientControl\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment CompletenessReportControlListControl on Control {\\n ... on AcinControl {\\n ...CompletenessReportControlListAcinControl\\n }\\n ... on ClientControl {\\n ...CompletenessReportControlListClientControl\\n }\\n }\\n \", \"\\n \", \"\\n\"])), CompletenessReportControlListAcinControlFragmentDoc, CompletenessReportControlListClientControlFragmentDoc);\nvar ControlListChildGroupFragmentDoc = gql(templateObject_4$g || (templateObject_4$g = __makeTemplateObject([\"\\n fragment ControlListChildGroup on CompletenessReportControlListPageSubGroup {\\n id\\n key\\n title\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n data {\\n ...CompletenessReportControlListControl\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ControlListChildGroup on CompletenessReportControlListPageSubGroup {\\n id\\n key\\n title\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n data {\\n ...CompletenessReportControlListControl\\n }\\n }\\n \", \"\\n\"])), CompletenessReportControlListControlFragmentDoc);\nvar ControlListParentGroupFragmentDoc = gql(templateObject_5$b || (templateObject_5$b = __makeTemplateObject([\"\\n fragment ControlListParentGroup on CompletenessReportControlListPageGroup {\\n id\\n title\\n subTitle\\n count\\n subGroups {\\n ...ControlListChildGroup\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ControlListParentGroup on CompletenessReportControlListPageGroup {\\n id\\n title\\n subTitle\\n count\\n subGroups {\\n ...ControlListChildGroup\\n }\\n }\\n \", \"\\n\"])), ControlListChildGroupFragmentDoc);\nvar CompletenessReportControlListFragmentDoc = gql(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject([\"\\n fragment CompletenessReportControlList on CompletenessReportControlListPage {\\n title\\n subTitle\\n groups {\\n ... on CompletenessReportControlListPageGroup {\\n ...ControlListParentGroup\\n }\\n ... on CompletenessReportControlListPageSubGroup {\\n ...ControlListChildGroup\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment CompletenessReportControlList on CompletenessReportControlListPage {\\n title\\n subTitle\\n groups {\\n ... on CompletenessReportControlListPageGroup {\\n ...ControlListParentGroup\\n }\\n ... on CompletenessReportControlListPageSubGroup {\\n ...ControlListChildGroup\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"])), ControlListParentGroupFragmentDoc, ControlListChildGroupFragmentDoc);\nvar templateObject_1$1k, templateObject_2$r, templateObject_3$h, templateObject_4$g, templateObject_5$b, templateObject_6$7;\nvar DonutChartFragmentDoc = gql(templateObject_1$1l || (templateObject_1$1l = __makeTemplateObject([\"\\n fragment DonutChart on DonutChart {\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n}\\n \"], [\"\\n fragment DonutChart on DonutChart {\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n}\\n \"])));\nvar DashboardControlAlignmentFragmentDoc = gql(templateObject_2$s || (templateObject_2$s = __makeTemplateObject([\"\\n fragment DashboardControlAlignment on DashboardControlAlignment {\\n title\\n subTitle\\n chart {\\n ...DonutChart\\n }\\n}\\n \", \"\"], [\"\\n fragment DashboardControlAlignment on DashboardControlAlignment {\\n title\\n subTitle\\n chart {\\n ...DonutChart\\n }\\n}\\n \", \"\"])), DonutChartFragmentDoc);\nvar RiskAnalysisResultFragmentDoc = gql(templateObject_3$i || (templateObject_3$i = __makeTemplateObject([\"\\n fragment RiskAnalysisResult on RiskAnalysisResult {\\n id\\n chart {\\n ...DashboardControlAlignment\\n }\\n controlList {\\n ... on CompletenessReportControlListPageGroup {\\n ...ControlListParentGroup\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment RiskAnalysisResult on RiskAnalysisResult {\\n id\\n chart {\\n ...DashboardControlAlignment\\n }\\n controlList {\\n ... on CompletenessReportControlListPageGroup {\\n ...ControlListParentGroup\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), DashboardControlAlignmentFragmentDoc, ControlListParentGroupFragmentDoc);\nvar templateObject_1$1l, templateObject_2$s, templateObject_3$i;\nvar GetRiskAnalysisByIdDocument = gql(templateObject_1$1m || (templateObject_1$1m = __makeTemplateObject([\"\\n query GetRiskAnalysisById($id: ID!) {\\n getRiskAnalysisById(id: $id) {\\n ...RiskAnalysisResult\\n }\\n}\\n \", \"\"], [\"\\n query GetRiskAnalysisById($id: ID!) {\\n getRiskAnalysisById(id: $id) {\\n ...RiskAnalysisResult\\n }\\n}\\n \", \"\"])), RiskAnalysisResultFragmentDoc);\n/**\r\n * __useGetRiskAnalysisByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskAnalysisByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskAnalysisByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskAnalysisByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetRiskAnalysisByIdQuery(baseOptions) {\n return useQuery(GetRiskAnalysisByIdDocument, baseOptions);\n}\nvar templateObject_1$1m;\nvar RiskAnalysisContext = /*#__PURE__*/React.createContext({\n loading: false,\n onChartClick: function () {}\n});\nvar RiskAnalysisConsumer = RiskAnalysisContext.Consumer;\nvar RiskAnalysisProvider = function (props) {\n var _a;\n var riskId = props.riskId,\n children = props.children;\n var _b = __read(React.useState(), 2),\n selectedChartSegment = _b[0],\n setSelectedChartSegment = _b[1];\n var _c = useGetRiskAnalysisByIdQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n id: riskId\n }\n }),\n data = _c.data,\n loading = _c.loading,\n previousData = _c.previousData,\n error = _c.error;\n var riskAnalysis = (data === null || data === void 0 ? void 0 : data.getRiskAnalysisById) || (previousData === null || previousData === void 0 ? void 0 : previousData.getRiskAnalysisById);\n var onChartClick = React.useCallback(function (id) {\n setSelectedChartSegment({\n id: id\n });\n }, []);\n return /*#__PURE__*/React.createElement(RiskAnalysisContext.Provider, {\n value: {\n chartData: (_a = riskAnalysis === null || riskAnalysis === void 0 ? void 0 : riskAnalysis.chart.chart) === null || _a === void 0 ? void 0 : _a.values,\n controlList: riskAnalysis === null || riskAnalysis === void 0 ? void 0 : riskAnalysis.controlList,\n loading: loading,\n selectedChartSegment: selectedChartSegment,\n onChartClick: onChartClick,\n error: error\n }\n }, children);\n};\nvar useRiskAnalysis = function () {\n return React.useContext(RiskAnalysisContext);\n};\nvar ControlListGroup = function (props) {\n var id = props.id,\n title = props.title,\n count = props.count,\n expanded = props.expanded,\n style = props.style,\n onToggleExpanded = props.onToggleExpanded,\n onClick = props.onClick,\n showLink = props.showLink;\n var toggleExpanded = React.useCallback(function () {\n onToggleExpanded === null || onToggleExpanded === void 0 ? void 0 : onToggleExpanded(!expanded, id);\n }, [expanded, id, onToggleExpanded]);\n var activeTheme = useThemeProvider().activeTheme;\n var renderContents = \"\".concat(title, \" (\").concat(count, \")\");\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n \"data-testid\": generate(['control-list-group'], props),\n style: style\n }, /*#__PURE__*/React.createElement(GroupHeader$1, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Toggle, null, /*#__PURE__*/React.createElement(IconButton, {\n \"data-testid\": \"control-list-group__toggle-expanded-button\",\n onClick: toggleExpanded,\n label: expanded ? 'Close' : 'Open',\n icon: function () {\n return expanded ? /*#__PURE__*/React.createElement(IconChevronUp, null) : /*#__PURE__*/React.createElement(IconChevronDown, null);\n },\n size: \"small\"\n })), /*#__PURE__*/React.createElement(GroupContent, null, showLink && onClick ? ( /*#__PURE__*/React.createElement(Button, {\n variant: \"link\",\n label: renderContents,\n onClick: function (event) {\n return onClick(event, id);\n }\n })) : renderContents)));\n};\nvar ControlListSubGroup = function (props) {\n var id = props.id,\n subGroupId = props.subGroupId,\n title = props.title,\n description = props.description,\n count = props.count,\n expanded = props.expanded,\n colorPalette = props.colorPalette,\n style = props.style,\n onToggleExpanded = props.onToggleExpanded;\n var activeTheme = useThemeProvider().activeTheme;\n var toggleExpanded = React.useCallback(function () {\n onToggleExpanded === null || onToggleExpanded === void 0 ? void 0 : onToggleExpanded(!expanded, subGroupId);\n }, [expanded, subGroupId, onToggleExpanded]);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n key: id,\n \"data-testid\": generate(['control-list-sub-group'], props),\n style: style\n }, /*#__PURE__*/React.createElement(SubGroup, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(SubGroupToggle, null, /*#__PURE__*/React.createElement(IconButton, {\n \"data-testid\": \"control-list-group__toggle-expanded-button\",\n onClick: toggleExpanded,\n label: expanded ? 'Close' : 'Open',\n icon: function () {\n return expanded ? /*#__PURE__*/React.createElement(IconChevronUp, null) : /*#__PURE__*/React.createElement(IconChevronDown, null);\n },\n size: \"tiny\"\n })), /*#__PURE__*/React.createElement(GroupHeaderSwatch, null, /*#__PURE__*/React.createElement(ChartLegendKey, {\n item: {\n colorPalette: colorPalette,\n label: ''\n },\n textSize: 0\n })), /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: description\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n weight: 500\n }, title, \" (\", count, \")\"))));\n};\nvar ControlRow$1 = function (props) {\n var style = props.style,\n data = props.data,\n selected = props.selected,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n var renderRiskInventory = data.riskInventory ? ( /*#__PURE__*/React.createElement(RiskInventory, {\n size: \"small\",\n variant: \"accent1\",\n appearance: \"outlined\",\n text: data.riskInventory.name\n })) : undefined;\n // const renderBusinessOrgs = () => {\n // if (data.__typename === 'ClientControl' && data.relatedBusinessLines) {\n // return (\n // <>\n // {data.relatedBusinessLines.map((item) => {\n // return (\n // <Badge\n // key={item.id}\n // variant=\"accent2\"\n // appearance=\"outlined\"\n // size=\"small\"\n // text={item.title}\n // />\n // );\n // })}\n // </>\n // );\n // }\n // return undefined;\n // };\n var renderClientBadges = data.__typename === 'AcinControl' && data.nss ? ( /*#__PURE__*/React.createElement(NssScore, {\n score: data.nss,\n size: \"small\"\n })) :\n // renderBusinessOrgs()\n undefined;\n var getCode = function () {\n var code = data.__typename === 'AcinControl' && data.acinControlCode || data.__typename === 'ClientControl' && data.clientControlCode;\n return code || undefined;\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style\n }, /*#__PURE__*/React.createElement(ControlRowWrapper, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(ControlRow, {\n code: getCode(),\n description: data.title,\n clientBadges: renderClientBadges,\n acinBadges: renderRiskInventory,\n onClick: onClick,\n showAcinLogo: data.__typename === 'AcinControl',\n selected: selected,\n activeTheme: activeTheme\n })));\n};\nvar containerBackground$7 = themeHelpers.containerBackground;\nvar HeaderWrapper$2 = styled.div(templateObject_1$1n || (templateObject_1$1n = __makeTemplateObject([\"\\n position: relative;\\n padding: \", \";\\n padding-bottom: \", \";\\n margin: 0 \", \";\\n \", \";\\n \", \";\\n :after {\\n top: \", \";\\n bottom: \", \";\\n }\\n\"], [\"\\n position: relative;\\n padding: \", \";\\n padding-bottom: \", \";\\n margin: 0 \", \";\\n \", \";\\n \", \";\\n :after {\\n top: \", \";\\n bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return containerBackground$7(p.activeTheme);\n}, boxShadow, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Header$1 = styled.div(templateObject_2$t || (templateObject_2$t = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: flex-start;\\n justify-content: space-between;\\n\"])));\nvar HeaderTextWapper = styled(View)(templateObject_3$j || (templateObject_3$j = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar HeaderControls = styled(View)(templateObject_4$h || (templateObject_4$h = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n column-gap: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n column-gap: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar LinkButton = styled(Button)(templateObject_5$c || (templateObject_5$c = __makeTemplateObject([\"\\n height: \", \";\\n\"], [\"\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(7);\n});\nvar templateObject_1$1n, templateObject_2$t, templateObject_3$j, templateObject_4$h, templateObject_5$c;\nvar ControlListHeader = function (props) {\n var id = props.id,\n title = props.title,\n subTitle = props.subTitle,\n headerTitleRender = props.titleRender,\n style = props.style,\n isAllExpanded = props.expandAll,\n onToggleExpandAll = props.onToggleExpandAll,\n extraControls = props.extraControls;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n \"data-testid\": generate(['control-list-header'], props),\n style: style\n }, /*#__PURE__*/React.createElement(HeaderWrapper$2, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Header$1, null, /*#__PURE__*/React.createElement(HeaderTextWapper, null, headerTitleRender ? headerTitleRender(title, subTitle) : ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Heading$1, {\n size: 2,\n weight: 500\n }, title), /*#__PURE__*/React.createElement(Heading$1, {\n weight: 300,\n variant: \"secondary\"\n }, subTitle)))), /*#__PURE__*/React.createElement(HeaderControls, null, /*#__PURE__*/React.createElement(LinkButton, {\n variant: \"borderless\",\n label: \"\".concat(isAllExpanded ? 'Collapse' : 'Expand', \" All Control Insights\"),\n iconPosition: \"left\",\n onClick: onToggleExpandAll\n }), extraControls))));\n};\nvar ControlListGroupDivider$1 = function (props) {\n var style = props.style;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": generate(['control-list-group-divider'], props),\n style: style\n }, /*#__PURE__*/React.createElement(ControlListGroupDividerRow, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(ControlListGroupDivider, {\n activeTheme: activeTheme\n })));\n};\nvar ControlListFooter$1 = function (props) {\n var style = props.style;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": generate(['control-list-footer'], props),\n style: style\n }, /*#__PURE__*/React.createElement(ControlListFooterRow, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(ControlListFooter, null)));\n};\nvar ScrollToTopButton$1 = function (props) {\n var style = props.style,\n onClick = props.onClick,\n asPrompt = props.asPrompt,\n isVisible = props.isVisible,\n controlledWidth = props.controlledWidth,\n variant = props.variant;\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": generate(['control-row'], props),\n style: style\n }, /*#__PURE__*/React.createElement(ScrollToTopButton, {\n controlledWidth: controlledWidth,\n variant: variant,\n asFooter: true,\n label: \"Scroll To Top\",\n onClick: onClick,\n asPrompt: asPrompt,\n isVisible: isVisible\n }));\n};\nvar ControlListSubGroupDivider = function (props) {\n var style = props.style;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": generate(['control-list-sub-group-divider'], props),\n style: style\n }, /*#__PURE__*/React.createElement(ControlListSubGroupDividerRow, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(ControlListGroupDivider, {\n activeTheme: activeTheme\n })));\n};\nvar itemHeights = {\n CompactHeader: 70,\n ControlListChildren: 651,\n ControlListHeader: 70,\n ControlListGroupDivider: 40,\n ControlListSubGroupDivider: 28,\n ControlListFooter: 48,\n CompletenessReportControlListPageGroup: 28,\n CompletenessReportControlListPageSubGroup: 40,\n AcinControl: 48,\n ClientControl: 48,\n ScrollToTop: 60\n};\nvar CompletenessReportControlListView$1 = function (props) {\n var className = props.className,\n children = props.children,\n controlList = props.controlList,\n onInitialised = props.onInitialised,\n onConfigure = props.onConfigure,\n onInspect = props.onInspect,\n extraHeaderControls = props.extraHeaderControls,\n controlListTitleRenderer = props.controlListTitleRenderer,\n loading = props.loading,\n onClickRiskTitle = props.onClickRiskTitle,\n showRiskTitleLink = props.showRiskTitleLink;\n var _a = controlList || {},\n title = _a.title,\n subTitle = _a.subTitle;\n var _b = __read(useState([]), 2),\n collapsedGroups = _b[0],\n setCollapsedGroups = _b[1];\n var _c = __read(useState([]), 2),\n expandedSubGroups = _c[0],\n setExpandedSubGroups = _c[1];\n var listRef = React.useRef(null);\n var listOuterRef = React.useRef(null);\n var _d = __read(React.useState(false), 2),\n expandAll = _d[0],\n setExpandAll = _d[1];\n var _e = __read(React.useState(0), 2),\n childrenHeight = _e[0],\n setChildrenHeight = _e[1];\n var _f = __read(React.useState(0), 2),\n scrollToTopPosition = _f[0],\n setScrollToTopPosition = _f[1];\n var _g = __read(React.useState(), 2),\n selectedControlIndex = _g[0],\n setSelectedControlIndex = _g[1];\n var scrollPositionRef = React.useRef(null);\n var childWrapperRef = React.useRef(null);\n var activeTheme = useThemeProvider().activeTheme;\n var handleToggleGroupsExpanded = useCallback(function (expanded, groupId) {\n if ((controlList === null || controlList === void 0 ? void 0 : controlList.__typename) === 'CompletenessReportControlListPage') {\n if (!expanded && !collapsedGroups.includes(groupId)) {\n setCollapsedGroups(__spreadArray(__spreadArray([], __read(collapsedGroups), false), [groupId], false));\n } else if (expanded && collapsedGroups.includes(groupId)) {\n setCollapsedGroups(collapsedGroups.filter(function (id) {\n return id !== groupId;\n }));\n }\n if (expanded && expandAll) {\n var group_1 = controlList === null || controlList === void 0 ? void 0 : controlList.groups.find(function (group) {\n return group.id === groupId;\n });\n if (group_1 && group_1.__typename === 'CompletenessReportControlListPageGroup') {\n var subGroups = group_1.subGroups.map(function (_, i) {\n return \"\".concat(group_1.id, \"|\").concat(i);\n });\n setExpandedSubGroups(__spreadArray(__spreadArray([], __read(expandedSubGroups), false), __read(subGroups), false));\n }\n if (group_1 && group_1.__typename === 'CompletenessReportControlListPageSubGroup') {\n var controls = group_1.data.map(function (_, i) {\n return \"\".concat(group_1.id, \"|\").concat(i);\n });\n setExpandedSubGroups(__spreadArray(__spreadArray([], __read(expandedSubGroups), false), __read(controls), false));\n }\n }\n }\n }, [collapsedGroups, controlList, expandAll, expandedSubGroups]);\n var handleToggleSubGroupsExpanded = useCallback(function (expanded, groupId) {\n if (expanded && !expandedSubGroups.includes(groupId)) {\n setExpandedSubGroups(__spreadArray(__spreadArray([], __read(expandedSubGroups), false), [groupId], false));\n } else if (!expanded && expandedSubGroups.includes(groupId)) {\n setExpandedSubGroups(expandedSubGroups.filter(function (id) {\n return id !== groupId;\n }));\n }\n }, [expandedSubGroups]);\n var _h = __read(React.useState(flattenList(controlList, collapsedGroups, expandedSubGroups)), 2),\n items = _h[0],\n setItems = _h[1];\n var getItemHeight = React.useCallback(function (index) {\n var item = items[index];\n var key = item === null || item === void 0 ? void 0 : item.__typename;\n if (key === 'ControlListChildren') {\n return childrenHeight;\n }\n return key ? itemHeights[key] : 0;\n }, [childrenHeight, items]);\n var add = function (acc, value) {\n return acc + value;\n };\n var handleScroll = function (scroll) {\n var showScrollToTop = window.innerHeight <= scroll.scrollOffset;\n if (!scrollPromptVisible && showScrollToTop) {\n setScrollPromptVisible(true);\n } else if (scrollPromptVisible && !showScrollToTop) {\n setScrollPromptVisible(false);\n }\n };\n var _j = __read(React.useState(false), 2),\n scrollPromptVisible = _j[0],\n setScrollPromptVisible = _j[1];\n useEffect(function () {\n var _a;\n setItems(flattenList(controlList, collapsedGroups, expandedSubGroups));\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(0, false);\n }, [collapsedGroups, controlList, handleToggleGroupsExpanded, listRef, expandAll, expandedSubGroups]);\n var scrollToTop = useCallback(function () {\n var _a;\n (_a = listOuterRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({\n left: 0,\n top: 0,\n behavior: 'smooth'\n });\n }, []);\n var scrollToAnimated = useCallback(function (scrollOffset) {\n var _a;\n (_a = listOuterRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({\n left: 0,\n top: scrollOffset,\n behavior: 'smooth'\n });\n }, []);\n var scrollTo = useCallback(function (id, headerOffset) {\n if (headerOffset === void 0) {\n headerOffset = 80;\n }\n var index = function () {\n return items.findIndex(function (item) {\n switch (item.__typename) {\n case 'CompletenessReportControlListPageGroup':\n case 'ControlListHeader':\n return item.id === id;\n case 'CompletenessReportControlListPageSubGroup':\n return item.key === id;\n default:\n return false;\n }\n });\n }();\n var offset = items.slice(0, index).map(function (item, index) {\n return getItemHeight(index);\n }).reduce(add, 0);\n if (index > -1) {\n scrollToAnimated(offset - headerOffset);\n }\n }, [getItemHeight, items, scrollToAnimated]);\n useEffect(function () {\n onInitialised(scrollTo);\n }, [onInitialised, scrollTo]);\n var toggleExpandAll = function () {\n var expandAllGroups = !expandAll;\n var allsubGroupIds = items.filter(function (item) {\n return item.__typename === 'CompletenessReportControlListPageSubGroup';\n }).map(function (item) {\n return item.id;\n });\n if (expandAllGroups) {\n setExpandedSubGroups(allsubGroupIds);\n } else {\n setExpandedSubGroups([]);\n }\n setExpandAll(expandAllGroups);\n };\n var onControlRowClick = React.useCallback(function (index, item) {\n setSelectedControlIndex(index);\n onInspect(item);\n }, [onInspect]);\n var _k = __read(useWindowSize(), 1),\n width = _k[0];\n var updateSize = React.useCallback(function () {\n var _a;\n if (childWrapperRef.current) {\n var height = childWrapperRef.current.clientHeight;\n if (height !== childrenHeight) {\n setChildrenHeight(height);\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(0);\n }\n }\n if (scrollPositionRef.current) {\n var width_1 = scrollPositionRef.current.clientWidth;\n var mainNav = document.querySelector('[data-testid=layout__navigation]');\n var mainNavWidth = (mainNav === null || mainNav === void 0 ? void 0 : mainNav.clientWidth) || 0;\n var position = width_1 + mainNavWidth * 2;\n if (position !== scrollToTopPosition) {\n setScrollToTopPosition(position);\n }\n }\n }, [childrenHeight, scrollToTopPosition]);\n React.useEffect(updateSize, [updateSize, width, children]);\n var VirtualRow = /*#__PURE__*/React.memo(function (_a) {\n var index = _a.index,\n style = _a.style;\n var item = items[index];\n switch (item === null || item === void 0 ? void 0 : item.__typename) {\n case 'ControlListChildren':\n return /*#__PURE__*/React.createElement(\"div\", {\n id: \"child-wrapper\",\n ref: childWrapperRef\n }, children, loading && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LoadingWrapper, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(LoadingInnerWrapper, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))), /*#__PURE__*/React.createElement(Footer, null))));\n case 'ControlListHeader':\n return /*#__PURE__*/React.createElement(ControlListHeader, {\n id: item.id,\n title: title,\n subTitle: subTitle ? subTitle : undefined,\n style: style,\n expandAll: expandAll,\n onToggleExpandAll: toggleExpandAll,\n onConfigure: onConfigure,\n extraControls: extraHeaderControls,\n titleRender: controlListTitleRenderer\n });\n case 'ControlListGroupDivider':\n return /*#__PURE__*/React.createElement(ControlListGroupDivider$1, {\n style: style\n });\n case 'ControlListSubGroupDivider':\n return /*#__PURE__*/React.createElement(ControlListSubGroupDivider, {\n style: style\n });\n case 'ControlListFooter':\n return /*#__PURE__*/React.createElement(ControlListFooter$1, {\n style: style\n });\n case 'CompletenessReportControlListPageGroup':\n return /*#__PURE__*/React.createElement(ControlListGroup, {\n key: item.id,\n id: item.id,\n title: item.title,\n count: item.count,\n expanded: !collapsedGroups.includes(item.id),\n onToggleExpanded: handleToggleGroupsExpanded,\n style: style,\n onClick: onClickRiskTitle,\n showLink: showRiskTitleLink\n });\n case 'CompletenessReportControlListPageSubGroup':\n var subGroup = item;\n return /*#__PURE__*/React.createElement(ControlListSubGroup, {\n id: subGroup.key,\n subGroupId: subGroup.id,\n title: subGroup.title,\n description: item.description,\n count: subGroup.count,\n expanded: expandedSubGroups.includes(subGroup.id),\n colorPalette: subGroup.colorPalette || undefined,\n onToggleExpanded: handleToggleSubGroupsExpanded,\n style: style\n });\n case 'AcinControl':\n case 'ClientControl':\n return /*#__PURE__*/React.createElement(ControlRow$1, {\n style: style,\n key: String(index),\n data: item,\n selected: index === selectedControlIndex,\n onClick: function () {\n return onControlRowClick(index, item);\n }\n });\n default:\n return null;\n }\n }, areEqual);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CompletenessReportControlListView, {\n \"data-testid\": generate(['completeness-report-control-list-view'], props),\n className: className,\n ref: scrollPositionRef\n }, /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(VariableSizeList, {\n ref: listRef,\n outerRef: listOuterRef,\n height: height,\n itemCount: items.length,\n itemSize: function (index) {\n return getItemHeight(index);\n },\n width: width,\n style: {\n overflowX: 'hidden'\n },\n onScroll: handleScroll\n }, VirtualRow);\n })), /*#__PURE__*/React.createElement(ScrollToTopButton$1, {\n controlledWidth: scrollToTopPosition,\n variant: \"opaque\",\n asPrompt: true,\n isVisible: scrollPromptVisible,\n onClick: scrollToTop\n }));\n};\nvar flattenList = function (controlList, collapsedGroups, expandedSubGroups) {\n if (controlList === void 0) {\n controlList = {\n title: '',\n subTitle: '',\n groups: []\n };\n }\n if (collapsedGroups === void 0) {\n collapsedGroups = [];\n }\n if (expandedSubGroups === void 0) {\n expandedSubGroups = [];\n }\n var items = [{\n __typename: 'ControlListChildren'\n }];\n var groups;\n switch (controlList.__typename) {\n case 'CompletenessReportControlListPage':\n groups = controlList.groups;\n break;\n case 'CompletenessReportControlListPageGroup':\n groups = [controlList];\n break;\n default:\n groups = [];\n }\n if (groups.length > 0) {\n items.push({\n __typename: 'ControlListHeader',\n id: \"\".concat(groups[0].id, \"|control-list-header\")\n });\n }\n var list = groups.reduce(function (arr, group, i) {\n if (i !== 0) {\n arr.push({\n __typename: 'ControlListGroupDivider'\n });\n }\n if (controlList.__typename === 'CompletenessReportControlListPage') {\n arr.push(group);\n }\n if (group.__typename === 'CompletenessReportControlListPageGroup' && !collapsedGroups.includes(group.id) && group.subGroups) {\n var childItems = group.subGroups.reduce(function (subGroupArr, subGroup, i) {\n var subGroupId = \"\".concat(group.id, \"|\").concat(i);\n if (controlList.__typename === 'CompletenessReportControlListPageGroup' && i > 0 && subGroup.key) {\n subGroupArr.push({\n __typename: 'ControlListSubGroupDivider'\n });\n }\n subGroupArr.push(__assign(__assign({}, subGroup), {\n id: subGroupId\n }));\n if (expandedSubGroups.includes(subGroupId)) {\n subGroupArr.push.apply(subGroupArr, __spreadArray([], __read(subGroup.data), false));\n }\n return subGroupArr;\n }, []);\n arr.push.apply(arr, __spreadArray([], __read(childItems), false));\n }\n if (group.__typename === 'CompletenessReportControlListPageSubGroup' && !expandedSubGroups.includes(group.id)) {\n var controls = group.data.reduce(function (subGroupArr, subGroup, i) {\n var subGroupId = \"\".concat(group.id, \"|\").concat(i);\n if (controlList.__typename === 'CompletenessReportControlListPageGroup') {\n subGroupArr.push({\n __typename: 'ControlListSubGroupDivider'\n });\n }\n subGroupArr.push(__assign({}, subGroup));\n if (expandedSubGroups.includes(subGroupId)) {\n subGroupArr.push.apply(subGroupArr, __spreadArray([], __read(group.data), false));\n }\n return subGroupArr;\n }, []);\n arr.push.apply(arr, __spreadArray([], __read(controls), false));\n }\n return arr;\n }, items);\n if (groups.length > 0) {\n list.push({\n __typename: 'ControlListFooter'\n }, {\n __typename: 'ScrollToTop'\n });\n }\n return list;\n};\n\n/**\r\n * @param children - (required) - React.ReactNode - Content top be virtualised\r\n * @param onInspect - (required) - (input: InspectInput) => void - Function to open the inspector\r\n * @param className - (optional) - String - Styled component mounting class\r\n * @param controlList - (optional) - CompletenessReportControlList data fragments - Control list data\r\n * @param onInitialised - (optional) - (scrollTo: (id: string, headerOffset?: number) => void) => void - Function to handle scrolling to control row\r\n * @param onConfigure - (optional) - () => void - ?\r\n * @param extraHeaderControls - (optional) - Function for Control List Header actions\r\n * @param controlListTitleRenderer - (optional) - (title: string, subTitle: string) => React.ReactNode - Function to render Control List Header Title\r\n * @param loading - (optional) - boolean - Loading state for control list\r\n * @param onClickRiskTitle - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>, id: string) => void;\r\n * @param showRiskTitleLink - (optional) - boolean;\r\n */\nvar CompletenessReportControlListView$2 = styled(CompletenessReportControlListView$1)(templateObject_1$1o || (templateObject_1$1o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1o;\nvar containerBackground$8 = themeHelpers.containerBackground;\nvar RiskControlListView = styled(CompletenessReportControlListView$2)(templateObject_1$1p || (templateObject_1$1p = __makeTemplateObject([\"\"], [\"\"])));\nvar HeaderText$1 = styled(Heading$1)(templateObject_2$u || (templateObject_2$u = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue().main;\n});\nvar SubHeaderText = styled(Heading$1)(templateObject_3$k || (templateObject_3$k = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ErrorWrapper$1 = styled(View)(templateObject_4$i || (templateObject_4$i = __makeTemplateObject([\"\\n height: \", \";\\n padding-top: 0;\\n margin: 0 \", \";\\n \", \"\\n\"], [\"\\n height: \", \";\\n padding-top: 0;\\n margin: 0 \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(35);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return containerBackground$8(p.activeTheme);\n});\nvar Footer$1 = styled(View)(templateObject_5$d || (templateObject_5$d = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n\"], [\"\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(15);\n});\nvar NoDataWrapper$1 = styled(View)(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject([\"\\n margin: 0 \", \";\\n padding-bottom: \", \";\\n\"], [\"\\n margin: 0 \", \";\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(15);\n});\nvar NoDataInnerWrapper = styled(View)(templateObject_7$5 || (templateObject_7$5 = __makeTemplateObject([\"\\n padding: \", \";\\n padding-top: 0;\\n \", \";\\n box-shadow: 0 0 6px rgb(0 0 0 / 10%);\\n\"], [\"\\n padding: \", \";\\n padding-top: 0;\\n \", \";\\n box-shadow: 0 0 6px rgb(0 0 0 / 10%);\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$8(p.activeTheme);\n});\nvar templateObject_1$1p, templateObject_2$u, templateObject_3$k, templateObject_4$i, templateObject_5$d, templateObject_6$8, templateObject_7$5;\nvar RiskControlList = function (props) {\n var active = props.active,\n setActive = props.setActive,\n children = props.children;\n var _a = useRiskAnalysis(),\n loading = _a.loading,\n error = _a.error,\n controlList = _a.controlList,\n selectedChartSegment = _a.selectedChartSegment;\n var scrollToCallback = React.useRef();\n var onInspect = useInspector().onInspect;\n var activeTheme = useThemeProvider().activeTheme;\n var onInitialised = React.useCallback(function (scrollTo) {\n scrollToCallback.current = scrollTo;\n }, []);\n React.useEffect(function () {\n if (selectedChartSegment) {\n setActive();\n }\n setTimeout(function () {\n if (selectedChartSegment && scrollToCallback.current) {\n var id = \"\".concat(controlList === null || controlList === void 0 ? void 0 : controlList.id, \"|\").concat(selectedChartSegment.id);\n scrollToCallback.current(id, 0);\n }\n }, 0);\n }, [selectedChartSegment, controlList === null || controlList === void 0 ? void 0 : controlList.id, setActive]);\n var onInspectControl = function (id) {\n onInspect({\n id: id,\n idType: IInspectorIdType.Control\n });\n };\n return /*#__PURE__*/React.createElement(RiskControlListView, {\n \"data-testid\": generate(['risk-control-list-view'], props),\n controlList: active && (controlList === null || controlList === void 0 ? void 0 : controlList.count) ? controlList : undefined,\n onInitialised: onInitialised,\n onInspect: function (item) {\n return onInspectControl(item.id);\n },\n loading: loading,\n // extraHeaderControls={\n // <Select\n // value=\"networkInsight\"\n // options={[{ label: 'Network Insight', value: 'networkInsight' }]}\n // onChange={() => {}}\n // />\n // }\n controlListTitleRenderer: function (title, subTitle) {\n return /*#__PURE__*/React.createElement(ControlListHeader$1, {\n title: title,\n subTitle: subTitle\n });\n }\n }, children, active && error && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ErrorWrapper$1, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(RiskError$1, null)), /*#__PURE__*/React.createElement(Footer$1, null))), active && !loading && !(controlList === null || controlList === void 0 ? void 0 : controlList.count) && ( /*#__PURE__*/React.createElement(NoDataWrapper$1, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(NoDataInnerWrapper, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"There are no controls related to this risk.\"\n })))));\n};\nvar ControlListHeader$1 = function (props) {\n var title = props.title,\n subTitle = props.subTitle;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HeaderText$1, {\n size: 1,\n weight: 500\n }, title), /*#__PURE__*/React.createElement(SubHeaderText, {\n weight: 300,\n variant: \"secondary\"\n }, subTitle));\n};\nvar containerBackground$9 = themeHelpers.containerBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar ControlsByNetworkInsight = styled(Card$1)(templateObject_1$1q || (templateObject_1$1q = __makeTemplateObject([\"\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n \", \";\\n\"], [\"\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$9(p.activeTheme);\n});\nvar Header$2 = styled(View)(templateObject_2$v || (templateObject_2$v = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n flex: flex-start;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n flex: flex-start;\\n\"])));\nvar Contents = styled(View)(templateObject_3$l || (templateObject_3$l = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-start;\\n\\n @media \", \" {\\n align-items: center;\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-start;\\n\\n @media \", \" {\\n align-items: center;\\n }\\n\"])), mediaQuerySizes.large);\nvar largeChartSize = '250px';\nvar smallChartSize = '160px';\nvar ChartWrapper = styled(View)(templateObject_4$j || (templateObject_4$j = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n\"])));\nvar Chart = styled(DonutChart)(templateObject_5$e || (templateObject_5$e = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n min-width: \", \";\\n min-height: \", \";\\n\\n @media \", \" {\\n width: \", \";\\n height: \", \";\\n min-width: \", \";\\n min-height: \", \";\\n }\\n\\n padding-top: \", \";\\n @media \", \" {\\n padding-top: 0;\\n }\\n\\n max-width: \", \";\\n\\n margin: \", \" 0 \", \"\\n \", \";\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n min-width: \", \";\\n min-height: \", \";\\n\\n @media \", \" {\\n width: \", \";\\n height: \", \";\\n min-width: \", \";\\n min-height: \", \";\\n }\\n\\n padding-top: \", \";\\n @media \", \" {\\n padding-top: 0;\\n }\\n\\n max-width: \", \";\\n\\n margin: \", \" 0 \", \"\\n \", \";\\n\"])), smallChartSize, smallChartSize, smallChartSize, smallChartSize, mediaQuerySizes.large, largeChartSize, largeChartSize, largeChartSize, largeChartSize, function (p) {\n return p.theme.spacing.getSize(4);\n}, mediaQuerySizes.large, function (p) {\n return p.theme.spacing.getSize(44);\n}, function (p) {\n return p.theme.spacing.getSize(-8);\n}, function (p) {\n return p.theme.spacing.getSize(-6);\n}, function (p) {\n return p.theme.spacing.getSize(-6);\n});\nvar Title$1 = styled(Heading$1)(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Legend = styled(ChartLegend)(templateObject_7$6 || (templateObject_7$6 = __makeTemplateObject([\"\\n min-width: 0;\\n\"], [\"\\n min-width: 0;\\n\"])));\nvar ViewAllControlsButton = styled(Button)(templateObject_8$4 || (templateObject_8$4 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n display: none;\\n @media \", \" {\\n display: inline-flex;\\n }\\n\"], [\"\\n margin-bottom: \", \";\\n display: none;\\n @media \", \" {\\n display: inline-flex;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, mediaQuerySizes.large);\nvar ViewAllButton = styled(Button)(templateObject_9$4 || (templateObject_9$4 = __makeTemplateObject([\"\\n display: inline-flex;\\n @media \", \" {\\n display: none;\\n }\\n\"], [\"\\n display: inline-flex;\\n @media \", \" {\\n display: none;\\n }\\n\"])), mediaQuerySizes.large);\nvar LoadingWrapper$3 = styled(Card$1)(templateObject_10$4 || (templateObject_10$4 = __makeTemplateObject([\"\\n position: relative;\\n min-height: \", \";\\n background: \", \"; // TODO: DM exception may be needed here\\n\"], [\"\\n position: relative;\\n min-height: \", \";\\n background: \", \"; // TODO: DM exception may be needed here\\n\"])), function (p) {\n return p.theme.spacing.getSize(87);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n});\nvar templateObject_1$1q, templateObject_2$v, templateObject_3$l, templateObject_4$j, templateObject_5$e, templateObject_6$9, templateObject_7$6, templateObject_8$4, templateObject_9$4, templateObject_10$4;\nvar ControlsByNetworkInsight$1 = function (props) {\n var className = props.className,\n chartData = props.chartData,\n selectedChartSegment = props.selectedChartSegment,\n onChartClick = props.onChartClick;\n var activeTheme = useThemeProvider().activeTheme;\n var getLegendData = React.useCallback(function () {\n return (chartData === null || chartData === void 0 ? void 0 : chartData.map(function (item) {\n var label = item.label,\n count = item.value,\n colorPalette = item.colorPalette;\n return {\n label: label,\n count: count,\n colorPalette: colorPalette\n };\n })) || [];\n }, [chartData]);\n if (!chartData) {\n return null;\n }\n return /*#__PURE__*/React.createElement(ControlsByNetworkInsight, {\n \"data-testid\": generate(['controls-by-network-insight'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Header$2, null, /*#__PURE__*/React.createElement(Title$1, {\n size: 1,\n weight: 500\n }, \"Controls by Acin Index Insight\"), /*#__PURE__*/React.createElement(ViewAllControlsButton, {\n variant: \"borderless\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconArrowDown, null);\n },\n label: \"View All Controls\",\n onClick: function () {\n return onChartClick('control-list-header');\n },\n iconPosition: \"right\"\n })), /*#__PURE__*/React.createElement(Contents, null, /*#__PURE__*/React.createElement(ChartWrapper, null, /*#__PURE__*/React.createElement(Chart, {\n id: \"Controls By Network Insight\",\n data: chartData,\n onClick: onChartClick,\n activeId: selectedChartSegment === null || selectedChartSegment === void 0 ? void 0 : selectedChartSegment.id,\n useTransitions: false\n }), /*#__PURE__*/React.createElement(ViewAllButton, {\n variant: \"borderless\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconArrowDown, null);\n },\n label: \"View All\",\n onClick: function () {\n return onChartClick('control-list-header');\n },\n iconPosition: \"right\"\n })), /*#__PURE__*/React.createElement(Legend, {\n items: getLegendData(),\n showCounts: true,\n variant: \"stacked\",\n textSize: 1\n })));\n};\nvar ControlsByNetworkInsightContainer = function (props) {\n var _a = useRiskAnalysis(),\n chartData = _a.chartData,\n loading = _a.loading,\n selectedChartSegment = _a.selectedChartSegment,\n onChartClick = _a.onChartClick,\n error = _a.error;\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper$3, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }));\n }\n if (error) {\n return /*#__PURE__*/React.createElement(RiskError$1, {\n title: \"Controls by Network Insight\"\n });\n }\n return /*#__PURE__*/React.createElement(ControlsByNetworkInsight$1, {\n chartData: chartData,\n selectedChartSegment: selectedChartSegment,\n onChartClick: onChartClick\n });\n};\nvar containerBackground$a = themeHelpers.containerBackground;\nvar RiskProperties$1 = styled(Card$1)(templateObject_1$1r || (templateObject_1$1r = __makeTemplateObject([\"\\n height: 100%;\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n \", \";\\n\"], [\"\\n height: 100%;\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$a(p.activeTheme);\n});\nvar LoadingWrapper$4 = styled(View)(templateObject_2$w || (templateObject_2$w = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n padding: \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n height: 100%;\\n padding: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return containerBackground$a(p.activeTheme);\n});\nvar templateObject_1$1r, templateObject_2$w;\nvar RiskPropertyLink = styled(Link)(templateObject_2$x || (templateObject_2$x = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n \", \"\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n \", \"\\n\"])), function (p) {\n return !p.disabled && css(templateObject_1$1s || (templateObject_1$1s = __makeTemplateObject([\"\\n :hover div {\\n text-decoration: underline;\\n color: \", \";\\n }\\n \"], [\"\\n :hover div {\\n text-decoration: underline;\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(600).main;\n });\n});\nvar RiskPropertyText = styled(Text$1)(templateObject_3$m || (templateObject_3$m = __makeTemplateObject([\"\\n flex: 1;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\"], [\"\\n flex: 1;\\n min-width: 0;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\"])));\nvar TextWrapper = styled(View)(templateObject_4$k || (templateObject_4$k = __makeTemplateObject([\"\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n column-gap: \", \";\\n margin-left: \", \";\\n\"], [\"\\n white-space: nowrap;\\n display: flex;\\n align-items: center;\\n column-gap: \", \";\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar SubText = styled(Text$1)(templateObject_5$f || (templateObject_5$f = __makeTemplateObject([\"\\n display: none;\\n @media \", \" {\\n display: block;\\n }\\n\"], [\"\\n display: none;\\n @media \", \" {\\n display: block;\\n }\\n\"])), mediaQuerySizes.large);\nvar RiskPropertyIconArrowDown = styled(IconArrowDown)(templateObject_6$a || (templateObject_6$a = __makeTemplateObject([\"\\n margin-top: \", \";\\n padding-left: \", \";\\n\"], [\"\\n margin-top: \", \";\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1s, templateObject_2$x, templateObject_3$m, templateObject_4$k, templateObject_5$f, templateObject_6$a;\nvar RiskPropertyRow = function (props) {\n var _a = props.riskProperty,\n id = _a.id,\n title = _a.title,\n count = _a.count,\n countSubText = _a.countSubText,\n onClick = props.onClick;\n return /*#__PURE__*/React.createElement(RiskDataRow, null, /*#__PURE__*/React.createElement(RiskPropertyLink, {\n variant: \"secondary\",\n icon: function () {\n return /*#__PURE__*/React.createElement(RiskPropertyIconArrowDown, {\n size: \"small\"\n });\n },\n size: -1,\n disabled: !onClick,\n onClick: onClick ? function () {\n return onClick(id);\n } : undefined\n }, /*#__PURE__*/React.createElement(RiskPropertyText, {\n size: 0,\n ellipsis: true\n }, title), /*#__PURE__*/React.createElement(TextWrapper, null, /*#__PURE__*/React.createElement(Text$1, {\n size: 0\n }, count), /*#__PURE__*/React.createElement(SubText, null, countSubText))));\n};\nvar RiskProperties$2 = function (props) {\n var className = props.className,\n riskProperties = props.riskProperties,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(RiskProperties$1, {\n \"data-testid\": generate(['risk-properties'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(RiskDataList$1, {\n listName: \"Risk Properties\",\n withAccordion: false\n }, riskProperties.map(function (property, index) {\n return /*#__PURE__*/React.createElement(RiskPropertyRow, {\n key: index,\n riskProperty: property,\n onClick: (property === null || property === void 0 ? void 0 : property.count) ? onClick : undefined\n });\n })));\n};\nvar RiskPropertiesContainer = function (props) {\n var onClick = props.onClick;\n var _a = useGeneralRiskData(),\n generalRiskData = _a.generalRiskData,\n loading = _a.loading,\n error = _a.error;\n var activeTheme = useThemeProvider().activeTheme;\n var riskProperties = React.useMemo(function () {\n return getRiskProperties(generalRiskData);\n }, [generalRiskData]);\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper$4, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }));\n }\n if (error) {\n return /*#__PURE__*/React.createElement(RiskError$1, {\n title: \"Risk Properties\"\n });\n }\n return /*#__PURE__*/React.createElement(RiskProperties$2, {\n riskProperties: riskProperties,\n onClick: onClick\n });\n};\nvar getRiskProperties = function (generalRiskData) {\n var riskIntelligence = {\n id: 'risk-intelligence-risk-data',\n title: 'Risk Intelligence',\n countSubText: 'Articles',\n count: (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.relatedRiskIntelligence.length) || 0\n };\n switch (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.__typename) {\n case 'AcinRisk':\n return [{\n id: 'impacted-regulations-risk-data',\n title: 'Impacted Regulations',\n countSubText: 'Attached',\n count: (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.relatedRegulations.length) || 0\n }, riskIntelligence, {\n id: 'risk-taxonomy-risk-data',\n title: 'Risk Taxonomy',\n countSubText: 'Connected',\n count: (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.relatedRiskTaxonomy.risks.length) || 0\n }];\n case 'ClientRisk':\n return [riskIntelligence, {\n id: 'business-lines-risk-data',\n title: 'Business Lines',\n countSubText: 'Attached',\n count: (generalRiskData === null || generalRiskData === void 0 ? void 0 : generalRiskData.relatedBusinessLines.length) || 0\n }];\n default:\n return [];\n }\n};\nvar tabs$2 = [{\n id: 'generalRiskData',\n title: 'General Risk Data'\n}, {\n id: 'associatedControls',\n title: 'Associated Controls'\n}];\nvar RiskOverview = function (props) {\n var className = props.className;\n var _a = __read(React.useState('generalRiskData'), 2),\n activeTabId = _a[0],\n setActiveTabId = _a[1];\n var activeTheme = useThemeProvider().activeTheme;\n var setAssociatedControlsActive = React.useCallback(function () {\n setActiveTabId('associatedControls');\n }, []);\n var onRiskPropertyClick = function (id) {\n setActiveTabId('generalRiskData');\n setTimeout(function () {\n var element = document.getElementById(id);\n element === null || element === void 0 ? void 0 : element.scrollIntoView(true);\n }, 0);\n };\n return /*#__PURE__*/React.createElement(Overview$3, {\n \"data-testid\": generate(['risk-overview'], props),\n className: className\n }, /*#__PURE__*/React.createElement(RiskControlList, {\n active: activeTabId === 'associatedControls',\n setActive: setAssociatedControlsActive\n }, /*#__PURE__*/React.createElement(RowContainer, {\n active: activeTabId === 'generalRiskData'\n }, /*#__PURE__*/React.createElement(RiskDetailsPanel, null, /*#__PURE__*/React.createElement(RiskDetailsPanelContainer, null)), /*#__PURE__*/React.createElement(LayoutRow, null, /*#__PURE__*/React.createElement(ControlsGraph, {\n \"data-testid\": generate(['controls-graph-container'], props)\n }, /*#__PURE__*/React.createElement(ControlsByNetworkInsightContainer, null)), /*#__PURE__*/React.createElement(RiskProperties, {\n \"data-testid\": generate(['risk-properties-container'], props)\n }, /*#__PURE__*/React.createElement(RiskPropertiesContainer, {\n onClick: onRiskPropertyClick\n }))), /*#__PURE__*/React.createElement(TabRow, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, null, \"View:\"), /*#__PURE__*/React.createElement(TabGroup, {\n onClick: function (tabId) {\n return setActiveTabId(tabId);\n },\n variant: \"sub\",\n tabs: tabs$2,\n activeId: activeTabId\n })), /*#__PURE__*/React.createElement(TabContent, {\n \"data-testid\": generate(['tab-content'], props)\n }, activeTabId === 'generalRiskData' && /*#__PURE__*/React.createElement(GeneralRiskDataContainer, null)))), /*#__PURE__*/React.createElement(RightPanel, {\n \"data-testid\": generate(['risk-details-container'])\n }, /*#__PURE__*/React.createElement(RiskDetailsPanelContainer, null)));\n};\nvar RiskOverview$1 = styled(RiskOverview)(templateObject_1$1t || (templateObject_1$1t = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1t;\nvar RiskRouteContent = function (props) {\n var riskId = props.riskId,\n activeTab = props.activeTab,\n onChangeTab = props.onChangeTab,\n onNavigate = props.onNavigate;\n var _a = useRiskHeading(),\n title = _a.title,\n showAcinLogo = _a.showAcinLogo;\n if (!riskId) return null;\n var renderContent = function () {\n var header = /*#__PURE__*/React.createElement(CompactHeader, {\n firstTier: /*#__PURE__*/React.createElement(FirstTier, {\n variation: \"child\",\n title: title || '',\n withLogo: showAcinLogo\n }),\n secondTier: /*#__PURE__*/React.createElement(SecondTier, {\n activeTab: activeTab,\n tabs: tabs$1,\n onTabClick: onChangeTab\n })\n });\n if (activeTab === 'overview') {\n return /*#__PURE__*/React.createElement(React.Fragment, null, header, /*#__PURE__*/React.createElement(RiskOverview$1, {\n onNavigate: onNavigate\n }));\n } else if (activeTab === 'network-match') {\n return /*#__PURE__*/React.createElement(PageWrapper, {\n header: header,\n hasTabs: true\n }, /*#__PURE__*/React.createElement(NetworkMatchRisks, {\n onNavigate: onNavigate,\n riskId: riskId\n }));\n }\n return null;\n };\n return renderContent();\n};\nvar RiskDataProvider = function (props) {\n var riskId = props.riskId,\n onLoaded = props.onLoaded,\n children = props.children;\n return /*#__PURE__*/React.createElement(RiskHeadingProvider, {\n riskId: riskId,\n onLoaded: onLoaded\n }, /*#__PURE__*/React.createElement(RiskDetailsProvider, {\n riskId: riskId\n }, /*#__PURE__*/React.createElement(GeneralRiskDataProvider, {\n riskId: riskId\n }, /*#__PURE__*/React.createElement(RiskAnalysisProvider, {\n riskId: riskId\n }, children))));\n};\nvar RiskRoute$1 = function (props) {\n var className = props.className,\n riskId = props.riskId,\n _a = props.onInit,\n onInit = _a === void 0 ? function () {} : _a,\n onNavigate = props.onNavigate;\n var _b = __read(useState('overview'), 2),\n activeTab = _b[0],\n setActiveTab = _b[1];\n var activeTheme = useThemeProvider().activeTheme;\n var onChangeTab = function (value) {\n setActiveTab(value);\n };\n React.useEffect(function () {\n setActiveTab('overview');\n }, [riskId]);\n return /*#__PURE__*/React.createElement(RiskDataProvider, {\n riskId: riskId,\n onLoaded: onInit\n }, /*#__PURE__*/React.createElement(RiskRoute, {\n \"data-testid\": generate(['risk-route'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(RiskRouteContent, {\n activeTab: activeTab,\n onChangeTab: onChangeTab,\n onNavigate: onNavigate,\n riskId: riskId\n })));\n};\nvar RiskRoute$2 = styled(RiskRoute$1)(templateObject_1$1u || (templateObject_1$1u = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1u;\n\n// TODO: A few instances where DM will need to be applied, but requires refactor!\nvar Wrapper = styled(Panel$1)(templateObject_1$1v || (templateObject_1$1v = __makeTemplateObject([\"\\n \", \" {\\n &:first-child {\\n padding: \", \" \", \" 0;\\n }\\n &:last-child {\\n padding: \", \" 0 \", \";\\n \", \";\\n }\\n }\\n\"], [\"\\n \", \" {\\n &:first-child {\\n padding: \", \" \", \" 0;\\n }\\n &:last-child {\\n padding: \", \" 0 \", \";\\n \", \";\\n }\\n }\\n\"])), PanelSection, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar riskItemBackgroundVariant = function (state) {\n switch (state) {\n default:\n case 'default':\n return css(templateObject_2$y || (templateObject_2$y = __makeTemplateObject([\"\\n background: transparent;\\n \"], [\"\\n background: transparent;\\n \"])));\n case 'hover':\n return css(templateObject_3$n || (templateObject_3$n = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n });\n case 'active':\n return css(templateObject_4$l || (templateObject_4$l = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n }\n};\nvar riskItemArrowVariant = function (state) {\n switch (state) {\n default:\n case 'default':\n return css(templateObject_5$g || (templateObject_5$g = __makeTemplateObject([\"\\n border-right: 15px solid transparent;\\n \"], [\"\\n border-right: 15px solid transparent;\\n \"])));\n case 'hover':\n return css(templateObject_6$b || (templateObject_6$b = __makeTemplateObject([\"\\n border-right: 15px solid \", \";\\n \"], [\"\\n border-right: 15px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n });\n case 'active':\n return css(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject([\"\\n border-right: 15px solid \", \";\\n \"], [\"\\n border-right: 15px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n }\n};\nvar List = styled.ul(templateObject_8$5 || (templateObject_8$5 = __makeTemplateObject([\"\\n padding-left: \", \";\\n padding-right: \", \";\\n\"], [\"\\n padding-left: \", \";\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar RiskItem = styled.li(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject([\"\\n \", \";\\n display: flex;\\n align-items: start;\\n border-radius: \", \";\\n cursor: pointer;\\n min-height: \", \";\\n margin-top: \", \";\\n padding-left: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n position: relative;\\n width: calc(100% - 23px);\\n\\n /* Risk Item (with Arrow) Styles */\\n \", \"\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\\n &:hover {\\n \", \";\\n\\n \", \" {\\n color: \", \";\\n font-weight: 400;\\n }\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n /* Risk Item (with Arrow) Active */\\n \", \"\\n\"], [\"\\n \", \";\\n display: flex;\\n align-items: start;\\n border-radius: \", \";\\n cursor: pointer;\\n min-height: \", \";\\n margin-top: \", \";\\n padding-left: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n position: relative;\\n width: calc(100% - 23px);\\n\\n /* Risk Item (with Arrow) Styles */\\n \", \"\\n\\n &:first-child {\\n margin-top: 0;\\n }\\n\\n &:hover {\\n \", \";\\n\\n \", \" {\\n color: \", \";\\n font-weight: 400;\\n }\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n /* Risk Item (with Arrow) Active */\\n \", \"\\n\"])), function (p) {\n return riskItemBackgroundVariant('default');\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(11);\n}, function (p) {\n return p.theme.spacing.getSize(0.5);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return css(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject([\"\\n &:after {\\n content: '';\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-top: 21px solid transparent;\\n border-bottom: 21px solid transparent;\\n top: 1px;\\n right: -15px;\\n transform: rotate(180deg);\\n \", \";\\n }\\n\\n &:hover {\\n &:after {\\n \", \";\\n }\\n }\\n \"], [\"\\n &:after {\\n content: '';\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-top: 21px solid transparent;\\n border-bottom: 21px solid transparent;\\n top: 1px;\\n right: -15px;\\n transform: rotate(180deg);\\n \", \";\\n }\\n\\n &:hover {\\n &:after {\\n \", \";\\n }\\n }\\n \"])), riskItemArrowVariant('default'), riskItemArrowVariant('hover'));\n}, function (p) {\n return riskItemBackgroundVariant('hover');\n}, Text$1, function (p) {\n return p.theme.colors.primary.getValue(100).main;\n}, function (p) {\n return p.active && css(templateObject_10$5 || (templateObject_10$5 = __makeTemplateObject([\"\\n \", \";\\n\\n &:after {\\n \", \";\\n }\\n\\n \", \" {\\n font-weight: 400;\\n }\\n \"], [\"\\n \", \";\\n\\n &:after {\\n \", \";\\n }\\n\\n \", \" {\\n font-weight: 400;\\n }\\n \"])), riskItemBackgroundVariant('active'), riskItemArrowVariant('active'), Text$1);\n});\nvar Count$1 = styled(Text$1)(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 500;\\n min-width: \", \";\\n padding-right: \", \";\\n position: relative;\\n top: \", \"; // need to offset due to typography issue\\n\"], [\"\\n color: \", \";\\n font-weight: 500;\\n min-width: \", \";\\n padding-right: \", \";\\n position: relative;\\n top: \", \"; // need to offset due to typography issue\\n\"])), function (p) {\n return p.theme.colors.dataVis.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(11);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Title$2 = styled(Text$1)(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject([\"\\n color: \", \";\\n position: relative;\\n top: \", \"; // need to offset due to typography issue\\n\"], [\"\\n color: \", \";\\n position: relative;\\n top: \", \"; // need to offset due to typography issue\\n\"])), function (p) {\n return p.theme.colors.text.getValue(800);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar templateObject_1$1v, templateObject_2$y, templateObject_3$n, templateObject_4$l, templateObject_5$g, templateObject_6$b, templateObject_7$7, templateObject_8$5, templateObject_9$5, templateObject_10$5, templateObject_11$3, templateObject_12$3, templateObject_13$2;\n\n// Note: This previously recieved data (IClientRisk) - How recieves id, title and controlCount, for better reuse.\n// It's now less opinated, doesn't care whether its displaying a ClientRisk or AcinRisk\nvar RiskItem$1 = function (props) {\n var active = props.active,\n onClick = props.onClick,\n controlCount = props.controlCount,\n title = props.title,\n id = props.id;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(RiskItem, {\n role: \"button\",\n \"data-testid\": generate([\"risk-item risk-item--\".concat(id, \" \").concat(active && 'risk-item--active')], props),\n onClick: onClick,\n active: active || false,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Count$1, null, controlCount), \" \", /*#__PURE__*/React.createElement(Title$2, null, title));\n};\nvar containerBackground$b = themeHelpers.containerBackground;\nvar Sort = styled(View)(templateObject_1$1w || (templateObject_1$1w = __makeTemplateObject([\"\\n \", \" {\\n min-width: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n \", \";\\n }\\n\"], [\"\\n \", \" {\\n min-width: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n \", \";\\n }\\n\"])), Button, function (p) {\n return p.theme.spacing.getSize(44);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return containerBackground$b(p.activeTheme);\n});\nvar templateObject_1$1w;\nvar Sort$1 = function (props) {\n var className = props.className,\n onChange = props.onChange,\n options = props.options,\n sortField = props.sortField;\n var activeTheme = useThemeProvider().activeTheme;\n var selectOptions = options.map(function (item) {\n return {\n value: item.label,\n label: \"Sort by: \".concat(item.label)\n };\n });\n var handleChange = function (value) {\n var find = options.find(function (item) {\n return item.label === value;\n });\n if (find) {\n onChange({\n field: find.field,\n direction: find.direction\n });\n }\n };\n var getValue = function () {\n var found = options.find(function (item) {\n return item.field === (sortField === null || sortField === void 0 ? void 0 : sortField.field) && item.direction === sortField.direction;\n });\n if (found) {\n return found.label;\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Sort, {\n \"data-testid\": generate(['sort'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Select, {\n \"data-testid\": generate(['sort__select'], props),\n value: getValue(),\n options: selectOptions,\n onChange: handleChange\n }));\n};\nvar Sort$2 = styled(Sort$1)(templateObject_1$1x || (templateObject_1$1x = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1x;\nvar RiskList = function (props) {\n var className = props.className,\n data = props.data,\n activeRisk = props.activeRisk,\n onSetActiveRisk = props.onSetActiveRisk,\n activeSort = props.activeSort,\n onSetActiveSort = props.onSetActiveSort,\n _a = props.windowHeight,\n windowHeight = _a === void 0 ? 400 : _a,\n // TODO: Precautionary fallback, replace with window.innerHeight,\n _b = props.topOffset,\n // TODO: Precautionary fallback, replace with window.innerHeight,\n topOffset = _b === void 0 ? 0 : _b;\n var riskData = (data === null || data === void 0 ? void 0 : data.nodes) || [];\n var riskCount = riskData === null || riskData === void 0 ? void 0 : riskData.length;\n var riskCountText = riskCount ? \"Displaying \".concat(riskCount, \" of \").concat(riskCount) : '';\n var sortInfoData = data === null || data === void 0 ? void 0 : data.sortInfo;\n var onClear = useInspector().onClear;\n React.useEffect(function () {\n if (data) {\n var defaultActiveRisk = (data === null || data === void 0 ? void 0 : data.nodes[0]) || undefined;\n onSetActiveRisk(defaultActiveRisk);\n }\n }, [data, onSetActiveRisk]);\n var handleSetSort = function (sortOption) {\n onSetActiveSort(sortOption);\n };\n var handleSetActiveRisk = function (id) {\n var matchedRisk = riskData.find(function (item) {\n return id === item.id;\n });\n onSetActiveRisk(matchedRisk);\n onClear();\n };\n var renderList = function () {\n if (riskData) {\n var sortedNodes = orderBy(riskData, function (data) {\n var typedData = data;\n var value = typedData[activeSort.field];\n if (typeof value === 'string') {\n return value.toLowerCase();\n } else {\n return value;\n }\n }, (activeSort === null || activeSort === void 0 ? void 0 : activeSort.direction) === ISortDirection.Asc ? 'asc' : 'desc');\n return sortedNodes.map(function (risk) {\n return /*#__PURE__*/React.createElement(RiskItem$1, {\n key: risk.id,\n active: risk.id === (activeRisk === null || activeRisk === void 0 ? void 0 : activeRisk.id),\n onClick: function () {\n return handleSetActiveRisk(risk.id);\n },\n title: risk.title,\n controlCount: risk.controlCount,\n id: risk.id\n });\n });\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Wrapper, {\n \"data-testid\": generate(['risk-list'], props),\n className: className,\n renderTitle: function () {\n return /*#__PURE__*/React.createElement(PanelTitle, {\n mainTitleText: \"Risks\",\n mainTitleSize: \"medium\",\n subtitleText: riskCountText\n });\n },\n renderToolbar: function () {\n return /*#__PURE__*/React.createElement(Sort$2, {\n sortField: activeSort,\n options: (sortInfoData === null || sortInfoData === void 0 ? void 0 : sortInfoData.available) || [],\n onChange: handleSetSort\n });\n }\n }, /*#__PURE__*/React.createElement(PanelSection, null, /*#__PURE__*/React.createElement(ScrollableContent, {\n fixedHeight: windowHeight - topOffset,\n bars: {\n type: 'FADE',\n showTop: true,\n showBottom: true\n }\n }, /*#__PURE__*/React.createElement(List, {\n \"data-testid\": generate(['risk-list__list'], props)\n }, renderList()))));\n};\nvar RiskList$1 = styled(RiskList)(templateObject_1$1y || (templateObject_1$1y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1y;\nvar Wrapper$1 = styled(Panel$1)(templateObject_1$1z || (templateObject_1$1z = __makeTemplateObject([\"\\n \", \" {\\n &:first-child {\\n padding: \", \";\\n }\\n &:last-child {\\n padding: \", \";\\n }\\n }\\n\"], [\"\\n \", \" {\\n &:first-child {\\n padding: \", \";\\n }\\n &:last-child {\\n padding: \", \";\\n }\\n }\\n\"])), PanelSection, function (p) {\n return \"\".concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(4), \" 0\");\n}, function (p) {\n return \"\".concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(3));\n});\nvar templateObject_1$1z;\n\n// Default sort options for Risk and Control List\nvar defaultRiskSort = {\n field: 'controlCount',\n direction: ISortDirection.Desc\n};\nvar defaultControlSort = {\n field: 'title',\n direction: ISortDirection.Asc\n};\nvar controlSortData = [{\n label: 'A-Z',\n field: 'title',\n direction: ISortDirection.Asc\n}, {\n label: 'Z-A',\n field: 'title',\n direction: ISortDirection.Desc\n}];\n// Generate data for sorting the ControlList\nvar generateControlSortData = function (controlData, activeSort) {\n var _a = controlSortData[0] || {},\n field = _a.field,\n direction = _a.direction;\n var sortedControls;\n if ((activeSort === null || activeSort === void 0 ? void 0 : activeSort.field) && (activeSort === null || activeSort === void 0 ? void 0 : activeSort.direction)) {\n var field_1 = activeSort.field,\n direction_1 = activeSort.direction;\n // Sort control data\n sortedControls = orderBy(controlData, function (data) {\n var typedData = data;\n var value = typedData[field_1];\n if (typeof value === 'string') {\n return value.toLowerCase();\n } else {\n return value;\n }\n }, direction_1 === ISortDirection.Asc ? 'asc' : 'desc');\n } else {\n sortedControls = orderBy(controlData);\n }\n return {\n controlSortData: controlSortData,\n sort: {\n field: field,\n direction: direction\n },\n sortedControls: sortedControls\n };\n};\nvar ControlList = function (props) {\n var className = props.className,\n controlData = props.controlData,\n _a = props.riskTitle,\n riskTitle = _a === void 0 ? 'Controls' : _a,\n riskTitleOnClick = props.riskTitleOnClick,\n _b = props.windowHeight,\n windowHeight = _b === void 0 ? 400 : _b,\n // TODO: Precautionary fallback, replace with window.innerHeight,\n _c = props.topOffset,\n // TODO: Precautionary fallback, replace with window.innerHeight,\n topOffset = _c === void 0 ? 0 : _c;\n var _d = __read(useState(defaultControlSort), 2),\n activeSort = _d[0],\n setActiveSort = _d[1];\n var controlCount = controlData === null || controlData === void 0 ? void 0 : controlData.length;\n var controlCountText = controlCount ? \"Displaying \".concat(controlCount, \" of \").concat(controlCount) : '';\n var sortInfoData = generateControlSortData(controlData, activeSort);\n var handleSetSort = function (sortOption) {\n return setActiveSort(sortOption);\n };\n var onInspect = useInspector().onInspect;\n var renderControlItems = function (items) {\n var controlLinks = items.map(function (item) {\n return {\n id: item.id,\n label: item.title\n };\n });\n var onLinkListClick = function (item) {\n var find = items.find(function (a) {\n return a.id === item.id;\n });\n if (find) {\n onInspect({\n id: find.id,\n idType: IInspectorIdType.Control\n });\n }\n };\n return /*#__PURE__*/React.createElement(LinkList, {\n links: controlLinks,\n onClick: onLinkListClick\n });\n };\n return /*#__PURE__*/React.createElement(Wrapper$1, {\n \"data-testid\": generate(['control-list'], props),\n className: className,\n renderTitle: function () {\n return /*#__PURE__*/React.createElement(PanelTitle, {\n mainTitleText: riskTitle,\n mainTitleOnClick: riskTitleOnClick,\n truncateMainTitle: true,\n mainTitleSize: \"medium\",\n subtitleText: controlCountText\n });\n },\n renderToolbar: function () {\n return /*#__PURE__*/React.createElement(Sort$2, {\n sortField: activeSort,\n options: sortInfoData.controlSortData || [],\n onChange: handleSetSort\n });\n }\n }, /*#__PURE__*/React.createElement(PanelSection, null, /*#__PURE__*/React.createElement(ScrollableContent, {\n fixedHeight: windowHeight - topOffset,\n bars: {\n type: 'FADE',\n showTop: true,\n showBottom: true\n }\n }, renderControlItems(sortInfoData.sortedControls))));\n};\nvar ControlList$1 = styled(ControlList)(templateObject_1$1A || (templateObject_1$1A = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1A;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ClientRiskList$1 = styled(View)(templateObject_1$1B || (templateObject_1$1B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1B;\nvar SortDataFragmentDoc = gql(templateObject_1$1C || (templateObject_1$1C = __makeTemplateObject([\"\\n fragment SortData on SortInfo {\\n sort {\\n field\\n direction\\n label\\n }\\n available {\\n field\\n direction\\n label\\n }\\n}\\n \"], [\"\\n fragment SortData on SortInfo {\\n sort {\\n field\\n direction\\n label\\n }\\n available {\\n field\\n direction\\n label\\n }\\n}\\n \"])));\nvar templateObject_1$1C;\nvar ClientRiskListClientRiskFragmentDoc = gql(templateObject_1$1D || (templateObject_1$1D = __makeTemplateObject([\"\\n fragment ClientRiskListClientRisk on ClientRisk {\\n id\\n title\\n controlCount\\n}\\n \"], [\"\\n fragment ClientRiskListClientRisk on ClientRisk {\\n id\\n title\\n controlCount\\n}\\n \"])));\nvar templateObject_1$1D;\nvar ClientRiskPageFragmentDoc = gql(templateObject_1$1E || (templateObject_1$1E = __makeTemplateObject([\"\\n fragment ClientRiskPage on ClientRiskPage {\\n sortInfo {\\n ...SortData\\n }\\n nodes {\\n ...ClientRiskListClientRisk\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment ClientRiskPage on ClientRiskPage {\\n sortInfo {\\n ...SortData\\n }\\n nodes {\\n ...ClientRiskListClientRisk\\n }\\n}\\n \", \"\\n\", \"\"])), SortDataFragmentDoc, ClientRiskListClientRiskFragmentDoc);\nvar templateObject_1$1E;\nvar GetClientRiskListDocument = gql(templateObject_1$1F || (templateObject_1$1F = __makeTemplateObject([\"\\n query GetClientRiskList($input: GetRiskDataInput!) {\\n getClientRisks(input: $input) {\\n ...ClientRiskPage\\n }\\n}\\n \", \"\"], [\"\\n query GetClientRiskList($input: GetRiskDataInput!) {\\n getClientRisks(input: $input) {\\n ...ClientRiskPage\\n }\\n}\\n \", \"\"])), ClientRiskPageFragmentDoc);\n/**\r\n * __useGetClientRiskListQuery__\r\n *\r\n * To run a query within a React component, call `useGetClientRiskListQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetClientRiskListQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetClientRiskListQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetClientRiskListQuery(baseOptions) {\n return useQuery(GetClientRiskListDocument, baseOptions);\n}\nvar templateObject_1$1F;\nvar ClientRiskList$2 = function (props) {\n var className = props.className,\n risks = props.risks,\n riskIds = props.riskIds,\n activeRisk = props.activeRisk,\n activeSort = props.activeSort,\n onSetActiveRisk = props.onSetActiveRisk,\n onSetActiveSort = props.onSetActiveSort;\n var data = useGetClientRiskListQuery({\n variables: {\n input: {\n ids: riskIds\n }\n },\n skip: !riskIds,\n fetchPolicy: 'cache-and-network'\n }).data;\n var getData = function () {\n return risks || (data === null || data === void 0 ? void 0 : data.getClientRisks);\n };\n var hanldeOnSetActiveRisk = React.useCallback(function (risk) {\n if ((risk === null || risk === void 0 ? void 0 : risk.__typename) === 'ClientRisk') {\n onSetActiveRisk(risk);\n } else {\n onSetActiveRisk(undefined);\n }\n }, [onSetActiveRisk]);\n return /*#__PURE__*/React.createElement(ClientRiskList$1, {\n \"data-testid\": generate(['client-risk-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(RiskList$1, {\n data: getData(),\n activeRisk: activeRisk,\n activeSort: activeSort,\n onSetActiveRisk: hanldeOnSetActiveRisk,\n onSetActiveSort: onSetActiveSort\n }));\n};\nvar ClientRiskList$3 = styled(ClientRiskList$2)(templateObject_1$1G || (templateObject_1$1G = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1G;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ClientControlList = styled(View)(templateObject_1$1H || (templateObject_1$1H = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1H;\nvar ControlListClientControlFragmentDoc = gql(templateObject_1$1I || (templateObject_1$1I = __makeTemplateObject([\"\\n fragment ControlListClientControl on ClientControl {\\n id\\n title\\n}\\n \"], [\"\\n fragment ControlListClientControl on ClientControl {\\n id\\n title\\n}\\n \"])));\nvar templateObject_1$1I;\nvar GetClientControlsByIdDocument = gql(templateObject_1$1J || (templateObject_1$1J = __makeTemplateObject([\"\\n query GetClientControlsById($id: String!) {\\n getControlData(id: $id) {\\n nodes {\\n ...ControlListClientControl\\n }\\n }\\n}\\n \", \"\"], [\"\\n query GetClientControlsById($id: String!) {\\n getControlData(id: $id) {\\n nodes {\\n ...ControlListClientControl\\n }\\n }\\n}\\n \", \"\"])), ControlListClientControlFragmentDoc);\n/**\r\n * __useGetClientControlsByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetClientControlsByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetClientControlsByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetClientControlsByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useGetClientControlsByIdQuery(baseOptions) {\n return useQuery(GetClientControlsByIdDocument, baseOptions);\n}\nvar templateObject_1$1J;\nvar ClientControlList$1 = function (props) {\n var className = props.className,\n riskId = props.riskId,\n riskTitle = props.riskTitle,\n controls = props.controls;\n var data = useGetClientControlsByIdQuery({\n variables: {\n id: riskId\n },\n skip: !riskId,\n fetchPolicy: 'cache-and-network'\n }).data;\n var controlData = controls || (data === null || data === void 0 ? void 0 : data.getControlData.nodes);\n return /*#__PURE__*/React.createElement(ClientControlList, {\n \"data-testid\": generate(['client-control-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ControlList$1, {\n controlData: controlData,\n riskTitle: riskTitle\n }));\n};\nvar ClientControlList$2 = styled(ClientControlList$1)(templateObject_1$1K || (templateObject_1$1K = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1K;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinControlRow = styled(Accordion$1)(templateObject_1$1L || (templateObject_1$1L = __makeTemplateObject([\"\\n background: \", \"; // May need DM rule...\\n\"], [\"\\n background: \", \"; // May need DM rule...\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Header$3 = styled(View)(templateObject_2$z || (templateObject_2$z = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"])));\nvar HeaderTitle = styled(View)(templateObject_3$o || (templateObject_3$o = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"])));\nvar ControlId = styled(View)(templateObject_4$m || (templateObject_4$m = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-right: auto;\\n white-space: nowrap; // we dont want this to drop to 2 lines.\\n align-self: center;\\n\"], [\"\\n margin-left: \", \";\\n margin-right: auto;\\n white-space: nowrap; // we dont want this to drop to 2 lines.\\n align-self: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderToolbar = styled(View)(templateObject_5$h || (templateObject_5$h = __makeTemplateObject([\"\\n justify-content: flex-end;\\n display: flex;\\n\"], [\"\\n justify-content: flex-end;\\n display: flex;\\n\"])));\nvar ToolbarButton = styled(View)(templateObject_6$c || (templateObject_6$c = __makeTemplateObject([\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"], [\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar ContentSection = styled(View)(templateObject_7$8 || (templateObject_7$8 = __makeTemplateObject([\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"], [\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaContainer = styled(View)(templateObject_8$6 || (templateObject_8$6 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"])));\nvar MetaItem = styled(View)(templateObject_9$6 || (templateObject_9$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1L, templateObject_2$z, templateObject_3$o, templateObject_4$m, templateObject_5$h, templateObject_6$c, templateObject_7$8, templateObject_8$6, templateObject_9$6;\nvar Header$4 = function (props) {\n var title = props.title,\n flagged = props.flagged,\n onToggleFlag = props.onToggleFlag,\n onDelete = props.onDelete,\n controlId = props.controlId;\n var renderToolbar = function () {\n if (onToggleFlag || onDelete) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, onToggleFlag && ( /*#__PURE__*/React.createElement(ToolbarButton, null, flagged ? ( /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconFlaggedYes, null);\n },\n label: \"Mark as B2-C\",\n onClick: function () {\n return onToggleFlag(!flagged);\n }\n })) : ( /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconFlaggedNo, null);\n },\n label: \"Mark as B2-C\",\n onClick: function () {\n return onToggleFlag(!flagged);\n }\n })))), onDelete && ( /*#__PURE__*/React.createElement(ToolbarButton, null, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDelete, null);\n },\n label: \"Delete\",\n onClick: onDelete\n }))));\n }\n if (flagged) {\n return /*#__PURE__*/React.createElement(ToolbarButton, {\n \"data-testid\": generate(['acin-control-flagged'], props)\n }, /*#__PURE__*/React.createElement(IconFlaggedYes, null));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Header$3, null, /*#__PURE__*/React.createElement(HeaderTitle, null, /*#__PURE__*/React.createElement(Text$1, {\n ellipsis: true\n }, title)), /*#__PURE__*/React.createElement(ControlId, null, /*#__PURE__*/React.createElement(Text$1, {\n inline: true,\n size: -1,\n weight: 400\n }, controlId)), /*#__PURE__*/React.createElement(HeaderToolbar, null, renderToolbar()));\n};\nvar AcinControlRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n _a = props.flagged,\n flagged = _a === void 0 ? false : _a,\n onToggleFlag = props.onToggleFlag,\n onDelete = props.onDelete,\n defaultOpen = props.defaultOpen;\n var onCheck = props.onCheck,\n isChecked = props.isChecked,\n _b = props.multiSelect,\n multiSelect = _b === void 0 ? false : _b;\n return /*#__PURE__*/React.createElement(AcinControlRow, {\n defaultOpen: defaultOpen || undefined,\n \"data-testid\": generate(['acin-control-row'], props),\n className: className,\n onCheck: onCheck,\n isChecked: isChecked,\n checkVariant: multiSelect ? 'checkbox' : 'radio',\n header: function () {\n return /*#__PURE__*/React.createElement(Header$4, {\n controlId: data.controlCode,\n title: data.title,\n onToggleFlag: onToggleFlag,\n onDelete: onDelete,\n flagged: flagged\n });\n }\n }, /*#__PURE__*/React.createElement(ContentSection, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500\n }, \"Objective\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.objectives)), /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n control: data,\n showMore: false,\n size: 0\n }), /*#__PURE__*/React.createElement(ContentSection, null, /*#__PURE__*/React.createElement(MetaContainer, null, /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500\n }, \"Control Type:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.controlType)), /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500\n }, \"Control Owner:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.controlOwner)), /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500\n }, \"Control Frequency\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.controlFrequency)))));\n};\nvar AcinControlRow$2 = styled(AcinControlRow$1)(templateObject_1$1M || (templateObject_1$1M = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1M;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinRiskRow = styled(Accordion$1)(templateObject_1$1N || (templateObject_1$1N = __makeTemplateObject([\"\\n background: \", \"; // TODO: May need DM rule\\n\"], [\"\\n background: \", \"; // TODO: May need DM rule\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Header$5 = styled(View)(templateObject_2$A || (templateObject_2$A = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"])));\nvar HeaderTitle$1 = styled(View)(templateObject_3$p || (templateObject_3$p = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"])));\nvar ControlId$1 = styled(View)(templateObject_4$n || (templateObject_4$n = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-right: auto;\\n white-space: nowrap; // we dont want this to drop to 2 lines.\\n align-self: center;\\n\"], [\"\\n margin-left: \", \";\\n margin-right: auto;\\n white-space: nowrap; // we dont want this to drop to 2 lines.\\n align-self: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderToolbar$1 = styled(View)(templateObject_5$i || (templateObject_5$i = __makeTemplateObject([\"\\n justify-content: flex-end;\\n display: flex;\\n\"], [\"\\n justify-content: flex-end;\\n display: flex;\\n\"])));\nvar ToolbarButton$1 = styled(View)(templateObject_6$d || (templateObject_6$d = __makeTemplateObject([\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"], [\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar ContentSection$1 = styled(View)(templateObject_7$9 || (templateObject_7$9 = __makeTemplateObject([\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"], [\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaContainer$1 = styled(View)(templateObject_8$7 || (templateObject_8$7 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"])));\nvar MetaItem$1 = styled(View)(templateObject_9$7 || (templateObject_9$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1N, templateObject_2$A, templateObject_3$p, templateObject_4$n, templateObject_5$i, templateObject_6$d, templateObject_7$9, templateObject_8$7, templateObject_9$7;\nvar Header$6 = function (props) {\n var title = props.title,\n onDelete = props.onDelete,\n controlId = props.controlId;\n var renderToolbar = function () {\n if (onDelete) {\n return /*#__PURE__*/React.createElement(ToolbarButton$1, {\n \"data-testid\": generate(['header-delete-button'])\n }, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDelete, null);\n },\n label: \"Delete\",\n onClick: onDelete\n }));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Header$5, null, /*#__PURE__*/React.createElement(HeaderTitle$1, null, /*#__PURE__*/React.createElement(Text$1, {\n ellipsis: true\n }, title)), /*#__PURE__*/React.createElement(ControlId$1, null, /*#__PURE__*/React.createElement(Text$1, {\n inline: true,\n size: -1,\n weight: 400\n }, controlId)), /*#__PURE__*/React.createElement(HeaderToolbar$1, null, renderToolbar()));\n};\nvar AcinRiskRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n onDelete = props.onDelete,\n defaultOpen = props.defaultOpen;\n var onCheck = props.onCheck,\n isChecked = props.isChecked,\n _a = props.multiSelect,\n multiSelect = _a === void 0 ? false : _a;\n return /*#__PURE__*/React.createElement(AcinRiskRow, {\n defaultOpen: defaultOpen || undefined,\n \"data-testid\": generate(['acin-risk-row'], props),\n className: className,\n onCheck: onCheck,\n isChecked: isChecked,\n checkVariant: multiSelect ? 'checkbox' : 'radio',\n header: function () {\n return /*#__PURE__*/React.createElement(Header$6, {\n controlId: data.riskCode,\n title: data.title,\n onDelete: onDelete\n });\n }\n }, /*#__PURE__*/React.createElement(ContentSection$1, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500\n }, \"Description\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.description)));\n};\nvar AcinRiskRow$2 = styled(AcinRiskRow$1)(templateObject_1$1O || (templateObject_1$1O = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1O;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinControlTypeahead = styled(View)(templateObject_1$1P || (templateObject_1$1P = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchSuggestion = styled(View)(templateObject_2$B || (templateObject_2$B = __makeTemplateObject([\"\"], [\"\"])));\nvar Info = styled(View)(templateObject_3$q || (templateObject_3$q = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Hint = styled(View)(templateObject_4$o || (templateObject_4$o = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1P, templateObject_2$B, templateObject_3$q, templateObject_4$o;\nvar SearchSuggestion$1 = function (_a) {\n var item = _a.item;\n return /*#__PURE__*/React.createElement(SearchSuggestion, {\n \"data-testid\": \"acin-control-typeahead__suggestion\"\n }, /*#__PURE__*/React.createElement(Heading$1, null, item.title), /*#__PURE__*/React.createElement(Info, null, /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n control: __assign(__assign({}, item), {\n actions: undefined\n }),\n showMore: false,\n size: -1\n })));\n};\nvar AcinControlDescriptionFragmentDoc = gql(templateObject_1$1Q || (templateObject_1$1Q = __makeTemplateObject([\"\\n fragment AcinControlDescription on AcinControl {\\n review\\n identify\\n actions\\n}\\n \"], [\"\\n fragment AcinControlDescription on AcinControl {\\n review\\n identify\\n actions\\n}\\n \"])));\nvar templateObject_1$1Q;\nvar AcinControlRowDetailFragmentDoc = gql(templateObject_1$1R || (templateObject_1$1R = __makeTemplateObject([\"\\n fragment AcinControlRowDetail on AcinControl {\\n id\\n title\\n objectives\\n ...AcinControlDescription\\n controlType\\n controlOwner\\n controlFrequency\\n controlCode\\n}\\n \", \"\"], [\"\\n fragment AcinControlRowDetail on AcinControl {\\n id\\n title\\n objectives\\n ...AcinControlDescription\\n controlType\\n controlOwner\\n controlFrequency\\n controlCode\\n}\\n \", \"\"])), AcinControlDescriptionFragmentDoc);\nvar templateObject_1$1R;\nvar SearchAcinControlsDocument = gql(templateObject_1$1S || (templateObject_1$1S = __makeTemplateObject([\"\\n query searchAcinControls($input: SearchAcinControlsInput) {\\n searchAcinControls(input: $input) {\\n totalAvailableControls\\n nodes {\\n ...AcinControlRowDetail\\n }\\n }\\n}\\n \", \"\"], [\"\\n query searchAcinControls($input: SearchAcinControlsInput) {\\n searchAcinControls(input: $input) {\\n totalAvailableControls\\n nodes {\\n ...AcinControlRowDetail\\n }\\n }\\n}\\n \", \"\"])), AcinControlRowDetailFragmentDoc);\nfunction useSearchAcinControlsLazyQuery(baseOptions) {\n return useLazyQuery(SearchAcinControlsDocument, baseOptions);\n}\nvar templateObject_1$1S;\n\n// This named style should be the wrapper for the component i.e. the module\nvar SearchModal = styled(View)(templateObject_1$1T || (templateObject_1$1T = __makeTemplateObject([\"\\n height: calc(100vh - \", \");\\n\"], [\"\\n height: calc(100vh - \", \");\\n\"])), function (p) {\n return p.theme.spacing.getSize(p.theme.template.modal.padding * 2);\n});\nvar Header$7 = styled(View)(templateObject_2$C || (templateObject_2$C = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1T, templateObject_2$C;\nvar ControlList$2 = function (props) {\n var multiSelect = props.multiSelect,\n filters = props.filters,\n selectedIds = props.selectedIds,\n onSelect = props.onSelect,\n onClear = props.onClear;\n var _a = __read(React.useState(''), 2),\n term = _a[0],\n setTerm = _a[1];\n var _b = __read(useSearchAcinControlsLazyQuery({\n fetchPolicy: 'cache-and-network'\n }), 2),\n getData = _b[0],\n data = _b[1].data;\n var debouncedSearch = useDebouncedCallback(function (value) {\n getData({\n variables: {\n input: __assign({\n term: term\n }, filters)\n }\n });\n }, 500);\n // Initial mount, get the data with no term\n React.useEffect(function () {\n getData({\n variables: {\n input: __assign({}, filters)\n }\n });\n }, [getData, filters]);\n var handleChange = function (event) {\n var value = event.currentTarget.value;\n setTerm(value);\n debouncedSearch(value);\n };\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Input, {\n type: \"search\",\n value: term,\n leftAddon: function () {\n return /*#__PURE__*/React.createElement(IconSearch, null);\n },\n onChange: handleChange,\n placeholder: \"Search by Contol Name, Control ID or Description\",\n \"data-testid\": generate(['control-list-input'], props)\n }), /*#__PURE__*/React.createElement(Header$7, null, /*#__PURE__*/React.createElement(Text$1, null, \"Displaying \", data === null || data === void 0 ? void 0 : data.searchAcinControls.nodes.length, \" of\", ' ', data === null || data === void 0 ? void 0 : data.searchAcinControls.totalAvailableControls, \" Controls\"), /*#__PURE__*/React.createElement(Link, {\n onClick: onClear\n }, \"Clear Selected (\", selectedIds.length, \")\")), data === null || data === void 0 ? void 0 : data.searchAcinControls.nodes.map(function (item) {\n return /*#__PURE__*/React.createElement(AcinControlRow$2, {\n multiSelect: multiSelect,\n isChecked: selectedIds.includes(item.id),\n onCheck: function (value) {\n return onSelect(item, value);\n },\n key: item.id,\n data: item\n });\n }));\n};\nvar SearchModal$1 = function (props) {\n var className = props.className,\n isOpen = props.isOpen,\n onClose = props.onClose,\n _a = props.multiSelect,\n multiSelect = _a === void 0 ? false : _a,\n onSelect = props.onSelect,\n _b = props.activeControls,\n activeControls = _b === void 0 ? [] : _b,\n filters = props.filters;\n var _c = __read(React.useState(activeControls), 2),\n selected = _c[0],\n setSelected = _c[1];\n var _d = __read(React.useState(false), 2),\n isDirty = _d[0],\n setIsDirty = _d[1];\n var selectedIds = selected.map(function (item) {\n return item.id;\n });\n var handleOnSelect = function (item) {\n if (multiSelect) {\n var selectedMap = new Map(selected.map(function (item) {\n return [item.id, item];\n }));\n if (!selectedMap.has(item.id)) {\n selectedMap.set(item.id, item);\n } else {\n selectedMap.delete(item.id);\n }\n setSelected(__spreadArray([], __read(selectedMap), false).map(function (item) {\n return item[1];\n }));\n } else {\n setSelected([item]);\n }\n setIsDirty(true);\n };\n var onClear = function () {\n setSelected([]);\n setIsDirty(true);\n };\n var onSave = function () {\n onSelect(selected);\n onClose();\n };\n return /*#__PURE__*/React.createElement(Modal, {\n title: \"Acin Controls\",\n show: isOpen,\n onClose: onClose,\n size: \"medium\",\n footerButtonPrimary: {\n label: 'Submit',\n onClick: onSave,\n disabled: !isDirty\n }\n }, /*#__PURE__*/React.createElement(SearchModal, {\n \"data-testid\": generate(['acin-control-typeahead__search-modal'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ControlList$2, {\n filters: filters,\n selectedIds: selectedIds,\n onSelect: handleOnSelect,\n multiSelect: multiSelect,\n onClear: onClear\n })));\n};\nvar AcinControlTypeahead$1 = function (props) {\n var onSelect = props.onSelect,\n onOpenModal = props.onOpenModal,\n onCloseModal = props.onCloseModal,\n filters = props.filters,\n activeControls = props.activeControls,\n _a = props.multiSelect,\n multiSelect = _a === void 0 ? true : _a,\n _b = props.fullListModal,\n fullListModal = _b === void 0 ? false : _b,\n disabled = props.disabled,\n _c = props.ignoreIds,\n ignoreIds = _c === void 0 ? [] : _c;\n var _d = __read(React.useState(false), 2),\n searchModalOpen = _d[0],\n setSearchModalOpen = _d[1];\n var _e = __read(useSearchAcinControlsLazyQuery({\n fetchPolicy: 'cache-and-network'\n }), 2),\n getData = _e[0],\n data = _e[1].data;\n var onOpenSearchModal = function (e) {\n setSearchModalOpen(true);\n if (onOpenModal) {\n onOpenModal(e);\n }\n };\n var onCloseSearchModal = function () {\n setSearchModalOpen(false);\n if (onCloseModal) {\n onCloseModal();\n }\n };\n var renderSuggestion = function (suggestion) {\n return /*#__PURE__*/React.createElement(SearchSuggestion$1, {\n item: suggestion\n });\n };\n var onChange = debounce(function (term) {\n getData({\n variables: {\n input: __assign({\n term: term\n }, filters)\n }\n });\n }, 500);\n var getItems = function () {\n var res = [];\n if (data === null || data === void 0 ? void 0 : data.searchAcinControls) {\n res = data === null || data === void 0 ? void 0 : data.searchAcinControls.nodes.map(function (item) {\n return __assign(__assign({}, item), {\n label: item.title\n });\n }).filter(function (item) {\n return !(ignoreIds === null || ignoreIds === void 0 ? void 0 : ignoreIds.includes(item.id));\n });\n }\n return res;\n };\n var handleOnSelect = function (item) {\n onSelect([item]);\n };\n return /*#__PURE__*/React.createElement(AcinControlTypeahead, {\n \"data-testid\": generate(['acin-control-typeahead'], props)\n }, /*#__PURE__*/React.createElement(Autosuggest, {\n remoteData: true,\n items: getItems(),\n renderSuggestion: renderSuggestion,\n onChange: onChange,\n onSelect: handleOnSelect,\n clearOnSelect: true,\n placeholder: \"Search for an Acin Control\",\n renderInitialView: fullListModal ? function () {\n return /*#__PURE__*/React.createElement(Hint, null, /*#__PURE__*/React.createElement(Text$1, {\n \"data-testid\": generate(['acin-control-typeahead-text-hint'], props)\n }, \"Start typing or \", /*#__PURE__*/React.createElement(Link, {\n onClick: onOpenSearchModal\n }, \"click here\"), \" to see the full list of Acin controls\"));\n } : undefined,\n disabled: disabled\n }), searchModalOpen && ( /*#__PURE__*/React.createElement(SearchModal$1, {\n activeControls: activeControls,\n multiSelect: multiSelect,\n filters: filters,\n isOpen: searchModalOpen,\n onClose: onCloseSearchModal,\n onSelect: onSelect\n })));\n};\nvar AcinControlTypeahead$2 = styled(AcinControlTypeahead$1)(templateObject_1$1U || (templateObject_1$1U = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1U;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AcinRiskTypeahead = styled(View)(templateObject_1$1V || (templateObject_1$1V = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchSuggestion$2 = styled(View)(templateObject_2$D || (templateObject_2$D = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1V, templateObject_2$D;\n// TODO: No reference to this style. Can this be removed?\n// export const Info = styled(View)`\n// margin-top: ${(p) => p.theme.spacing.getSize(2)};\n// `;\n// TODO: No reference to this style. Can this be removed?\n// export const Hint = styled(View)`\n// padding: ${(p) => p.theme.spacing.getSize(2)};\n// `;\n\nvar SearchSuggestion$3 = function (_a) {\n var item = _a.item;\n return /*#__PURE__*/React.createElement(SearchSuggestion$2, {\n \"data-testid\": \"acin-risk-typeahead__suggestion\"\n }, /*#__PURE__*/React.createElement(Heading$1, null, item.title));\n};\nvar AcinRiskRowDetailFragmentDoc = gql(templateObject_1$1W || (templateObject_1$1W = __makeTemplateObject([\"\\n fragment AcinRiskRowDetail on AcinRisk {\\n id\\n title\\n description\\n riskCode\\n}\\n \"], [\"\\n fragment AcinRiskRowDetail on AcinRisk {\\n id\\n title\\n description\\n riskCode\\n}\\n \"])));\nvar templateObject_1$1W;\nvar SearchAcinRisksDocument = gql(templateObject_1$1X || (templateObject_1$1X = __makeTemplateObject([\"\\n query searchAcinRisks($input: SearchAcinRisksInput) {\\n searchAcinRisks(input: $input) {\\n nodes {\\n ...AcinRiskRowDetail\\n }\\n }\\n}\\n \", \"\"], [\"\\n query searchAcinRisks($input: SearchAcinRisksInput) {\\n searchAcinRisks(input: $input) {\\n nodes {\\n ...AcinRiskRowDetail\\n }\\n }\\n}\\n \", \"\"])), AcinRiskRowDetailFragmentDoc);\nfunction useSearchAcinRisksLazyQuery(baseOptions) {\n return useLazyQuery(SearchAcinRisksDocument, baseOptions);\n}\nvar templateObject_1$1X;\nvar AcinRiskTypeahead$1 = function (props) {\n var onSelect = props.onSelect,\n filters = props.filters,\n disabled = props.disabled,\n _a = props.ignoreIds,\n ignoreIds = _a === void 0 ? [] : _a;\n var _b = __read(useSearchAcinRisksLazyQuery({\n fetchPolicy: 'cache-and-network'\n }), 2),\n getData = _b[0],\n data = _b[1].data;\n var renderSuggestion = function (suggestion) {\n return /*#__PURE__*/React.createElement(SearchSuggestion$3, {\n item: suggestion\n });\n };\n var onChange = debounce(function (term) {\n getData({\n variables: {\n input: __assign({\n term: term\n }, filters)\n }\n });\n }, 500);\n var getItems = function () {\n var res = [];\n if (data === null || data === void 0 ? void 0 : data.searchAcinRisks) {\n res = data === null || data === void 0 ? void 0 : data.searchAcinRisks.nodes.map(function (item) {\n return __assign(__assign({}, item), {\n label: item.title\n });\n }).filter(function (item) {\n return !(ignoreIds === null || ignoreIds === void 0 ? void 0 : ignoreIds.includes(item.id));\n });\n }\n return res;\n };\n var handleOnSelect = function (item) {\n onSelect([item]);\n };\n return /*#__PURE__*/React.createElement(AcinRiskTypeahead, {\n \"data-testid\": generate(['acin-risk-typeahead'], props)\n }, /*#__PURE__*/React.createElement(Autosuggest, {\n remoteData: true,\n items: getItems(),\n renderSuggestion: renderSuggestion,\n onChange: onChange,\n onSelect: handleOnSelect,\n clearOnSelect: true,\n placeholder: \"Search for an Acin Risk\",\n disabled: disabled\n }));\n};\nvar AcinRiskTypeahead$2 = styled(AcinRiskTypeahead$1)(templateObject_1$1Y || (templateObject_1$1Y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1Y;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskInventoryTypeahead = styled(View)(templateObject_1$1Z || (templateObject_1$1Z = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchSuggestion$4 = styled(View)(templateObject_2$E || (templateObject_2$E = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1Z, templateObject_2$E;\n// TODO: No reference to this style. Can this be removed?\n// export const Info = styled(View)`\n// margin-top: ${(p) => p.theme.spacing.getSize(2)};\n// `;\n// TODO: No reference to this style. Can this be removed?\n// export const Hint = styled(View)`\n// padding: ${(p) => p.theme.spacing.getSize(2)};\n// `;\n\nvar SearchSuggestion$5 = function (_a) {\n var item = _a.item;\n return /*#__PURE__*/React.createElement(SearchSuggestion$4, {\n \"data-testid\": \"risk-inventory-typeahead__suggestion\"\n }, /*#__PURE__*/React.createElement(Heading$1, null, item.name));\n};\nvar RiskInventorySuggestionFragmentDoc = gql(templateObject_1$1_ || (templateObject_1$1_ = __makeTemplateObject([\"\\n fragment RiskInventorySuggestion on RiskInventory {\\n id\\n name\\n}\\n \"], [\"\\n fragment RiskInventorySuggestion on RiskInventory {\\n id\\n name\\n}\\n \"])));\nvar templateObject_1$1_;\nvar SearchRiskInventoriesDocument = gql(templateObject_1$1$ || (templateObject_1$1$ = __makeTemplateObject([\"\\n query searchRiskInventories($input: SearchRiskInventoriesInput) {\\n searchRiskInventories(input: $input) {\\n nodes {\\n ...RiskInventorySuggestion\\n }\\n }\\n}\\n \", \"\"], [\"\\n query searchRiskInventories($input: SearchRiskInventoriesInput) {\\n searchRiskInventories(input: $input) {\\n nodes {\\n ...RiskInventorySuggestion\\n }\\n }\\n}\\n \", \"\"])), RiskInventorySuggestionFragmentDoc);\nfunction useSearchRiskInventoriesLazyQuery(baseOptions) {\n return useLazyQuery(SearchRiskInventoriesDocument, baseOptions);\n}\nvar templateObject_1$1$;\nvar RiskInventoryTypeahead$1 = function (props) {\n var onSelect = props.onSelect,\n disabled = props.disabled,\n ignoreIds = props.ignoreIds;\n var _a = __read(useSearchRiskInventoriesLazyQuery({\n fetchPolicy: 'cache-and-network'\n }), 2),\n getData = _a[0],\n data = _a[1].data;\n var renderSuggestion = function (suggestion) {\n return /*#__PURE__*/React.createElement(SearchSuggestion$5, {\n item: suggestion\n });\n };\n var onChange = debounce(function (term) {\n getData({\n variables: {\n input: {\n term: term\n }\n }\n });\n }, 500);\n var getItems = function () {\n var res = [];\n if (data === null || data === void 0 ? void 0 : data.searchRiskInventories) {\n res = data === null || data === void 0 ? void 0 : data.searchRiskInventories.nodes.map(function (item) {\n return __assign(__assign({}, item), {\n label: item.name\n });\n }).filter(function (item) {\n return !(ignoreIds === null || ignoreIds === void 0 ? void 0 : ignoreIds.includes(item.id));\n });\n }\n return res;\n };\n var handleOnSelect = function (item) {\n onSelect([item]);\n };\n return /*#__PURE__*/React.createElement(RiskInventoryTypeahead, {\n \"data-testid\": generate(['risk-inventory-typeahead'], props)\n }, /*#__PURE__*/React.createElement(Autosuggest, {\n remoteData: true,\n items: getItems(),\n renderSuggestion: renderSuggestion,\n onChange: onChange,\n onSelect: handleOnSelect,\n clearOnSelect: true,\n placeholder: \"Search for a Risk Inventory\",\n disabled: disabled\n }));\n};\nvar RiskInventoryTypeahead$2 = styled(RiskInventoryTypeahead$1)(templateObject_1$20 || (templateObject_1$20 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$20;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskInventoryRow = styled(Accordion$1)(templateObject_1$21 || (templateObject_1$21 = __makeTemplateObject([\"\\n background: \", \"; // TODO: Needs a DM solution?\\n\"], [\"\\n background: \", \"; // TODO: Needs a DM solution?\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Header$8 = styled(View)(templateObject_2$F || (templateObject_2$F = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"])));\nvar HeaderTitle$2 = styled(View)(templateObject_3$r || (templateObject_3$r = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"])));\nvar HeaderToolbar$2 = styled(View)(templateObject_4$p || (templateObject_4$p = __makeTemplateObject([\"\\n justify-content: flex-end;\\n display: flex;\\n\"], [\"\\n justify-content: flex-end;\\n display: flex;\\n\"])));\nvar ToolbarButton$2 = styled(View)(templateObject_5$j || (templateObject_5$j = __makeTemplateObject([\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"], [\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\n// TODO: No reference to this style. Can this be removed?\n// export const ContentSection = styled(View)`\n// margin-top: ${(p) => p.theme.spacing.getSize(4)};\n// white-space: pre-wrap;\n// `;\nvar MetaContainer$2 = styled(View)(templateObject_6$e || (templateObject_6$e = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"])));\nvar MetaItem$2 = styled(View)(templateObject_7$a || (templateObject_7$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$21, templateObject_2$F, templateObject_3$r, templateObject_4$p, templateObject_5$j, templateObject_6$e, templateObject_7$a;\nvar Header$9 = function (props) {\n var title = props.title,\n onDelete = props.onDelete;\n var renderToolbar = function () {\n if (onDelete) {\n return /*#__PURE__*/React.createElement(ToolbarButton$2, null, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDelete, null);\n },\n label: \"Delete\",\n onClick: onDelete\n }));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Header$8, null, /*#__PURE__*/React.createElement(HeaderTitle$2, null, /*#__PURE__*/React.createElement(Text$1, {\n ellipsis: true\n }, title)), /*#__PURE__*/React.createElement(HeaderToolbar$2, null, renderToolbar()));\n};\nvar RiskInventoryRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n onDelete = props.onDelete;\n return /*#__PURE__*/React.createElement(RiskInventoryRow, {\n \"data-testid\": generate(['acin-risk-inventory-row'], props),\n className: className,\n header: function () {\n return /*#__PURE__*/React.createElement(Header$9, {\n title: data.name,\n onDelete: onDelete\n });\n }\n });\n};\nvar RiskInventoryRow$2 = styled(RiskInventoryRow$1)(templateObject_1$22 || (templateObject_1$22 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$22;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Inspector = styled(View)(templateObject_1$23 || (templateObject_1$23 = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n\"], [\"\\n position: relative;\\n height: 100%;\\n\"])));\nvar templateObject_1$23;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ControlInsight = styled(View)(templateObject_1$24 || (templateObject_1$24 = __makeTemplateObject([\"\"], [\"\"])));\nvar Header$a = styled(View)(templateObject_2$G || (templateObject_2$G = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \"; // TODO: Should be using border color here really, DM exception possibly needed\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n\"], [\"\\n border-bottom: 1px solid \", \"; // TODO: Should be using border color here really, DM exception possibly needed\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ManyHeader = styled(Header$a)(templateObject_3$s || (templateObject_3$s = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n\"])));\n// Great example of logo beside a dropdown and how to control its position\nvar DropdownLogo = styled(Logo)(templateObject_4$q || (templateObject_4$q = __makeTemplateObject([\"\\n margin-right: \", \";\\n height: auto;\\n display: flex;\\n\"], [\"\\n margin-right: \", \";\\n height: auto;\\n display: flex;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar Badge = styled(Badge$1)(templateObject_5$k || (templateObject_5$k = __makeTemplateObject([\"\"], [\"\"])));\nvar BadgeWrapper = styled(View)(templateObject_6$f || (templateObject_6$f = __makeTemplateObject([\"\\n display: flex;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n display: flex;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, Badge, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Section$1 = styled(View)(templateObject_7$b || (templateObject_7$b = __makeTemplateObject([\"\\n padding: \", \";\\n border: 1px solid \", \"; // TODO: Should be using border color here really, DM exception possibly neededac\\n border-radius: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n padding: \", \";\\n border: 1px solid \", \"; // TODO: Should be using border color here really, DM exception possibly neededac\\n border-radius: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar StyledHeading = styled(Heading$1)(templateObject_8$8 || (templateObject_8$8 = __makeTemplateObject([\"\\n text-transform: uppercase;\\n font-size: \", \";\\n\"], [\"\\n text-transform: uppercase;\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize();\n});\nvar Description$1 = styled(Text$1)(templateObject_9$8 || (templateObject_9$8 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar AcinHeader = styled(View)(templateObject_10$6 || (templateObject_10$6 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar DropdownWrapper = styled(View)(templateObject_11$4 || (templateObject_11$4 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar HeadingWrapper$3 = styled(AcinHeader)(templateObject_12$4 || (templateObject_12$4 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Grid = styled(View)(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr 1fr 1fr;\\n gap: \", \" \", \";\\n\"], [\"\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n grid-template-rows: 1fr 1fr 1fr 1fr;\\n gap: \", \" \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Card = styled(DataCard)(templateObject_14$2 || (templateObject_14$2 = __makeTemplateObject([\"\\n box-shadow: none;\\n border: 1px solid\\n \", \"; // TODO: Should ideally use a border rule and a DM rule\\n color: \", \";\\n background: transparent;\\n\"], [\"\\n box-shadow: none;\\n border: 1px solid\\n \", \"; // TODO: Should ideally use a border rule and a DM rule\\n color: \", \";\\n background: transparent;\\n\"])), function (p) {\n return p.activeTheme.name === 'dark' ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue(0);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar Explanation = styled(Text$1)(templateObject_15$2 || (templateObject_15$2 = __makeTemplateObject([\"\\n display: block;\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n display: block;\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ControlSelect$3 = styled(Select)(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject([\"\\n flex-grow: 1;\\n\"], [\"\\n flex-grow: 1;\\n\"])));\nvar templateObject_1$24, templateObject_2$G, templateObject_3$s, templateObject_4$q, templateObject_5$k, templateObject_6$f, templateObject_7$b, templateObject_8$8, templateObject_9$8, templateObject_10$6, templateObject_11$4, templateObject_12$4, templateObject_13$3, templateObject_14$2, templateObject_15$2, templateObject_16$1;\nvar Header$b = function (props) {\n var title = props.title,\n isAcin = props.isAcin;\n if (!title) return null;\n return /*#__PURE__*/React.createElement(Header$a, null, /*#__PURE__*/React.createElement(Heading$1, {\n weight: 500,\n withLogo: isAcin\n }, title));\n};\nvar ClientControlSelect = function (props) {\n var acinControlTitle = props.acinControlTitle,\n data = props.data,\n activeControl = props.activeControl,\n onChange = props.onChange;\n var handleSetActiveControl = function (value) {\n var matchedControl = data === null || data === void 0 ? void 0 : data.find(function (item) {\n return value === item.id;\n });\n if (matchedControl) return onChange(matchedControl);\n };\n var dropdownItems = function () {\n return data.map(function (item) {\n return {\n label: item.title,\n value: item.id\n };\n });\n };\n if (activeControl) {\n return /*#__PURE__*/React.createElement(ManyHeader, {\n \"data-testid\": generate(['client-control-select'], props)\n }, /*#__PURE__*/React.createElement(Explanation, null, /*#__PURE__*/React.createElement(Text$1, {\n inline: true,\n weight: 500\n }, \"'\", acinControlTitle, \"'\\u00A0\"), \"has been matched to \", data.length, \" of your controls. Please select which you would like to review from the below list;\"), /*#__PURE__*/React.createElement(DropdownWrapper, null, /*#__PURE__*/React.createElement(ControlSelect$3, {\n fullWidthDropdown: true,\n options: dropdownItems() || [],\n value: activeControl.id,\n onChange: handleSetActiveControl\n })));\n }\n return null;\n};\nvar AcinControlSelect = function (props) {\n var clientControlTitle = props.clientControlTitle,\n data = props.data,\n activeControl = props.activeControl,\n onChange = props.onChange;\n var handleSetActiveControl = function (value) {\n var matchedControl = data === null || data === void 0 ? void 0 : data.find(function (item) {\n return value === item.id;\n });\n if (matchedControl) return onChange(matchedControl);\n };\n var dropdownItems = function () {\n return data.map(function (item) {\n return {\n label: item.title,\n value: item.id\n };\n });\n };\n if (activeControl) {\n return /*#__PURE__*/React.createElement(ManyHeader, {\n \"data-testid\": generate(['acin-control-select'], props)\n }, /*#__PURE__*/React.createElement(Explanation, null, /*#__PURE__*/React.createElement(Text$1, {\n inline: true,\n weight: 500\n }, \"'\", clientControlTitle, \"'\\u00A0\"), \"has been matched to \", data.length, \" Network controls. Please select which you would like to review from the below list;\"), /*#__PURE__*/React.createElement(DropdownWrapper, null, /*#__PURE__*/React.createElement(DropdownLogo, {\n size: \"medium\"\n }), /*#__PURE__*/React.createElement(ControlSelect$3, {\n fullWidthDropdown: true,\n options: dropdownItems() || [],\n value: activeControl.id,\n onChange: handleSetActiveControl\n })));\n }\n return null;\n};\nvar ControlInsight$1 = function (props) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n var data = props.data,\n id = props.id,\n _p = props.loading,\n loading = _p === void 0 ? false : _p;\n var activeTheme = useThemeProvider().activeTheme;\n var _q = __read(React.useState(), 2),\n activeControl = _q[0],\n setActiveControl = _q[1];\n var _r = __read(React.useState(), 2),\n controlA = _r[0],\n setControlA = _r[1];\n var _s = __read(React.useState(), 2),\n controlB = _s[0],\n setControlB = _s[1];\n React.useEffect(function () {\n var _a, _b;\n switch ((_a = data.compare) === null || _a === void 0 ? void 0 : _a.__typename) {\n case 'CompareControlOneToOne':\n setControlA(data.compare.controlA);\n setControlB(data.compare.controlB);\n if ((_b = data.compare.controlA) === null || _b === void 0 ? void 0 : _b.id) {\n setActiveControl(id.includes(data.compare.controlA.id) ? 'controlA' : 'controlB');\n } else {\n setActiveControl('controlB');\n }\n break;\n case 'CompareControlOneToMany':\n setControlA(data.compare.controlA);\n if (data.compare.controlA && id.includes(data.compare.controlA.id)) {\n setActiveControl('controlA');\n setControlB((data.compare.controlsB || [])[0]);\n } else {\n var findIdInB = (data.compare.controlsB || []).find(function (item) {\n return id.includes(item.id);\n });\n // Set it if we find it, else set to first item\n setControlB(findIdInB || (data.compare.controlsB || [])[0]);\n setActiveControl('controlB');\n }\n break;\n case 'CompareControlManyToOne':\n setControlB(data.compare.controlB);\n if (data.compare.controlB && id.includes(data.compare.controlB.id)) {\n setActiveControl('controlB');\n setControlA((data.compare.controlsA || [])[0]);\n } else {\n var findIdInA = (data.compare.controlsA || []).find(function (item) {\n return id.includes(item.id);\n });\n // Set it if we find it, else set to first item\n setControlA(findIdInA || (data.compare.controlsA || [])[0]);\n setActiveControl('controlA');\n }\n break;\n case 'CompareEmpty':\n default:\n setControlA(null);\n setControlB(null);\n break;\n }\n }, [data.compare, id, setControlA, setControlB]);\n var hasManyA = ((_a = data.compare) === null || _a === void 0 ? void 0 : _a.__typename) === 'CompareControlManyToOne' && ((_b = data.compare.controlsA || []) === null || _b === void 0 ? void 0 : _b.length) > 1;\n var hasManyB = ((_c = data.compare) === null || _c === void 0 ? void 0 : _c.__typename) === 'CompareControlOneToMany' && ((_d = data.compare.controlsB || []) === null || _d === void 0 ? void 0 : _d.length) > 1;\n var isSingleControl = !hasManyA && !hasManyB;\n var active = activeControl ? {\n controlA: controlA,\n controlB: controlB\n }[activeControl] : null;\n var renderDescription = function () {\n if ((active === null || active === void 0 ? void 0 : active.__typename) === 'ClientControl') {\n return /*#__PURE__*/React.createElement(Section$1, null, /*#__PURE__*/React.createElement(HeadingWrapper$3, null, /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500\n }, \"Description\")), /*#__PURE__*/React.createElement(Description$1, {\n size: -1\n }, active.optionalDescription));\n }\n if ((active === null || active === void 0 ? void 0 : active.__typename) === 'AcinControl') {\n return /*#__PURE__*/React.createElement(Section$1, null, /*#__PURE__*/React.createElement(HeadingWrapper$3, null, /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500,\n withLogo: true\n }, \"Description\")), /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n control: active\n }));\n }\n return null;\n };\n var renderAcinHeader = function (title) {\n return /*#__PURE__*/React.createElement(AcinHeader, null, /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500,\n withLogo: true\n }, title));\n };\n if (loading) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }));\n }\n if (((_e = data.compare) === null || _e === void 0 ? void 0 : _e.__typename) === 'CompareEmpty') {\n return /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: ((_f = data.compare.message) === null || _f === void 0 ? void 0 : _f.title) || 'Error',\n message: ((_g = data.compare.message) === null || _g === void 0 ? void 0 : _g.message) || 'There was an issue retrieving match details'\n });\n }\n if (data.compare) {\n return /*#__PURE__*/React.createElement(\"div\", null, isSingleControl && /*#__PURE__*/React.createElement(Header$b, {\n title: active === null || active === void 0 ? void 0 : active.title,\n isAcin: (active === null || active === void 0 ? void 0 : active.__typename) === 'AcinControl'\n }), ((_h = data.compare) === null || _h === void 0 ? void 0 : _h.__typename) === 'CompareControlManyToOne' && data.compare.controlsA && ( /*#__PURE__*/React.createElement(ClientControlSelect, {\n acinControlTitle: controlB === null || controlB === void 0 ? void 0 : controlB.title,\n data: (_j = data === null || data === void 0 ? void 0 : data.compare) === null || _j === void 0 ? void 0 : _j.controlsA,\n activeControl: controlA || null,\n onChange: function (selectedControl) {\n return setControlA(selectedControl);\n }\n })), ((_k = data.compare) === null || _k === void 0 ? void 0 : _k.__typename) === 'CompareControlOneToMany' && data.compare.controlsB && ( /*#__PURE__*/React.createElement(AcinControlSelect, {\n clientControlTitle: controlA === null || controlA === void 0 ? void 0 : controlA.title,\n data: (_l = data === null || data === void 0 ? void 0 : data.compare) === null || _l === void 0 ? void 0 : _l.controlsB,\n activeControl: controlB || null,\n onChange: function (selectedControl) {\n return setControlB(selectedControl);\n }\n })), /*#__PURE__*/React.createElement(BadgeWrapper, null, (active === null || active === void 0 ? void 0 : active.__typename) === 'AcinControl' && active.totalRelatedRegulations > 0 ? ( /*#__PURE__*/React.createElement(Badge, {\n text: \"\".concat(active.totalRelatedRegulations, \" Regulations\"),\n variant: \"info\",\n appearance: \"outlined\"\n })) : null, ((active === null || active === void 0 ? void 0 : active.totalRelatedRiskInventories) || 0) > 0 ? ( /*#__PURE__*/React.createElement(Badge, {\n text: \"\".concat(active === null || active === void 0 ? void 0 : active.totalRelatedRiskInventories, \" Matched Acin \").concat((active === null || active === void 0 ? void 0 : active.totalRelatedRiskInventories) && active.totalRelatedRiskInventories > 1 ? 'Indices' : 'Index'),\n variant: \"primary\",\n appearance: \"outlined\"\n })) : null), renderDescription(), /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500\n }, \"Insight\"),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, ((_m = controlA === null || controlA === void 0 ? void 0 : controlA.reasonCode) === null || _m === void 0 ? void 0 : _m.clientFacingName) || ((_o = controlB === null || controlB === void 0 ? void 0 : controlB.reasonCode) === null || _o === void 0 ? void 0 : _o.clientFacingName))), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: renderAcinHeader('Network Signal Strength (NSS) Score'),\n activeTheme: activeTheme\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.nss) ? ( /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, controlB.nss.score, \"% of \", controlB.nss.total, \" Contributors have this control\")) : ( /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, \"-\"))), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500\n }, \"Your Control Type\"),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlType) || '-')), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: renderAcinHeader('Network Control Type'),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.controlType) || '-')), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500\n }, \"Your Control Owner\"),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlOwner) || '-')), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: renderAcinHeader('Network Control Owner'),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.controlOwner) || '-')), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: /*#__PURE__*/React.createElement(StyledHeading, {\n weight: 500\n }, \"Your Control Frequency\"),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlA === null || controlA === void 0 ? void 0 : controlA.optionalControlFrequency) || '-')), /*#__PURE__*/React.createElement(Card, {\n condensed: true,\n title: renderAcinHeader('Network Control Frequency'),\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n variant: \"secondary\"\n }, (controlB === null || controlB === void 0 ? void 0 : controlB.controlFrequency) || '-'))));\n }\n return null;\n};\nvar Inspector$1 = function (props) {\n var className = props.className,\n id = props.id,\n data = props.data,\n _a = props.loading,\n loading = _a === void 0 ? false : _a;\n return /*#__PURE__*/React.createElement(Inspector, {\n \"data-testid\": generate(['inspector'], props),\n className: className\n }, loading ? ( /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n })) : data.__typename === 'ControlInspectorView' ? ( /*#__PURE__*/React.createElement(ControlInsight$1, {\n id: id,\n data: data,\n loading: loading\n })) : null);\n};\nvar Inspector$2 = styled(Inspector$1)(templateObject_1$25 || (templateObject_1$25 = __makeTemplateObject([\"\"], [\"\"])));\nvar ControlInsight$2 = styled(ControlInsight$1)(templateObject_2$H || (templateObject_2$H = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$25, templateObject_2$H;\n\n// This named style should be the wrapper for the component i.e. the module\nvar StickyHeader = styled.div(templateObject_1$26 || (templateObject_1$26 = __makeTemplateObject([\"\\n position: sticky;\\n top: 0;\\n left: 0;\\n right: 0;\\n z-index: 10;\\n height: \", \"px;\\n\"], [\"\\n position: sticky;\\n top: 0;\\n left: 0;\\n right: 0;\\n z-index: 10;\\n height: \", \"px;\\n\"])), function (p) {\n return p.height;\n});\nvar templateObject_1$26;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Cell = styled(View)(templateObject_3$t || (templateObject_3$t = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n min-width: \", \"px;\\n width: \", \";\\n\\n \", \";\\n\\n & > div {\\n width: 100%;\\n }\\n\\n \", \" {\\n box-sizing: border-box;\\n width: 100%;\\n justify-content: center;\\n }\\n\"], [\"\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n min-width: \", \"px;\\n width: \", \";\\n\\n \", \";\\n\\n & > div {\\n width: 100%;\\n }\\n\\n \", \" {\\n box-sizing: border-box;\\n width: 100%;\\n justify-content: center;\\n }\\n\"])), function (p) {\n return p.minWidth;\n}, function (p) {\n return p.percentage;\n}, function (p) {\n return p.extraPadding ? css(templateObject_1$27 || (templateObject_1$27 = __makeTemplateObject([\"\\n padding-left: \", \";\\n \"], [\"\\n padding-left: \", \";\\n \"])), p.extraPadding) : css(templateObject_2$I || (templateObject_2$I = __makeTemplateObject([\"\\n padding-left: \", \";\\n \"], [\"\\n padding-left: \", \";\\n \"])), p.theme.spacing.getSize(2));\n}, Badge$1);\nvar CellTextTruncatedWrapper = styled.div(templateObject_4$r || (templateObject_4$r = __makeTemplateObject([\"\\n width: 100%;\\n overflow: hidden;\\n\"], [\"\\n width: 100%;\\n overflow: hidden;\\n\"])));\nvar CellButton = styled.button(templateObject_5$l || (templateObject_5$l = __makeTemplateObject([\"\\n border: 0;\\n background-color: transparent;\\n display: inline-flex;\\n padding: 0;\\n cursor: pointer;\\n color: inherit;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n\\n &:hover {\\n text-decoration: underline;\\n color: \", \";\\n }\\n &:active {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n\"], [\"\\n border: 0;\\n background-color: transparent;\\n display: inline-flex;\\n padding: 0;\\n cursor: pointer;\\n color: inherit;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n white-space: nowrap;\\n\\n &:hover {\\n text-decoration: underline;\\n color: \", \";\\n }\\n &:active {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(600).main;\n}, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n}, function (p) {\n return p.theme.colors.text.getValue(2);\n});\nvar CellText = styled.div(templateObject_9$9 || (templateObject_9$9 = __makeTemplateObject([\"\\n align-items: center;\\n box-sizing: border-box;\\n display: flex;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%;\\n\\n \", \";\\n\"], [\"\\n align-items: center;\\n box-sizing: border-box;\\n display: flex;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n width: 100%;\\n\\n \", \";\\n\"])), function (p) {\n switch (p.variant) {\n case ITableHeaderType.Outer:\n {\n return css(templateObject_6$g || (templateObject_6$g = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n \"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(0);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n });\n }\n case ITableHeaderType.Inner:\n {\n return css(templateObject_7$c || (templateObject_7$c = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n \"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n });\n }\n default:\n {\n return css(templateObject_8$9 || (templateObject_8$9 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 400;\\n \"], [\"\\n font-size: \", \";\\n font-weight: 400;\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n });\n }\n }\n});\nvar AcinLogo = styled(Logo)(templateObject_10$7 || (templateObject_10$7 = __makeTemplateObject([\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"], [\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$27, templateObject_2$I, templateObject_3$t, templateObject_4$r, templateObject_5$l, templateObject_6$g, templateObject_7$c, templateObject_8$9, templateObject_9$9, templateObject_10$7;\nvar Cell$1 = function (props) {\n var className = props.className,\n children = props.children,\n cell = props.cell,\n minWidth = props.minWidth,\n percentage = props.percentage,\n extraPadding = props.extraPadding,\n variant = props.variant,\n onClick = props.onClick;\n var cellRef = React.useRef(null);\n var _a = __read(React.useState(false), 2),\n hasOverflow = _a[0],\n setHasOverflow = _a[1];\n var _b = __read(useWindowSize(), 1),\n windowWidth = _b[0];\n React.useEffect(function () {\n if (cellRef.current) {\n setHasOverflow(cellRef.current.offsetWidth < cellRef.current.scrollWidth);\n }\n }, [windowWidth]);\n var renderContent = function () {\n var _a, _b, _c, _d;\n if (cell === null || cell === void 0 ? void 0 : cell.text) {\n var text = cell.text;\n var textComponent = /*#__PURE__*/React.createElement(CellText, {\n variant: variant,\n ref: cellRef\n }, ((_a = cell === null || cell === void 0 ? void 0 : cell.info) === null || _a === void 0 ? void 0 : _a.showAcinLogo) && ( /*#__PURE__*/React.createElement(AcinLogo, {\n \"data-testid\": generateCypressId('acin-logo-' + ((_b = cell === null || cell === void 0 ? void 0 : cell.info) === null || _b === void 0 ? void 0 : _b.id))\n })), text);\n var textOrButton_1 = ((_c = cell === null || cell === void 0 ? void 0 : cell.info) === null || _c === void 0 ? void 0 : _c.isLink) ? ( /*#__PURE__*/React.createElement(CellButton, {\n \"data-testid\": generateCypressId('cell-link-' + ((_d = cell === null || cell === void 0 ? void 0 : cell.info) === null || _d === void 0 ? void 0 : _d.id)),\n onClick: onClick\n }, textComponent)) : textComponent;\n if (hasOverflow) {\n return /*#__PURE__*/React.createElement(Tooltip, {\n content: text\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(CellTextTruncatedWrapper, {\n ref: tooltipRef\n }, textOrButton_1);\n });\n }\n return textOrButton_1;\n } else if (cell.content) {\n if (cell.content.__typename === 'TableInsightCategory') {\n return /*#__PURE__*/React.createElement(ChartLegendKey, {\n item: {\n label: cell.content.label,\n colorPalette: cell.content.colorPalette\n },\n size: \"small\"\n });\n } else if (cell.content.__typename === 'NetworkSignalScore') {\n return /*#__PURE__*/React.createElement(NssScore, {\n score: cell.content\n });\n } else if (cell.content.__typename === 'TableInsightCounts') {\n return /*#__PURE__*/React.createElement(ColourBlockList, {\n blocks: cell.content.nodes\n });\n } else if (cell.content.__typename === 'TableControlQualityScore') {\n return /*#__PURE__*/React.createElement(ControlDescriptionQuality$2, {\n data: cell.content.controlQualityScore\n });\n }\n }\n return '-';\n };\n return /*#__PURE__*/React.createElement(Cell, {\n \"data-testid\": generate(['cell', \"cell-\".concat(generateCypressId(cell.key))], props),\n className: className,\n minWidth: minWidth,\n extraPadding: extraPadding,\n percentage: percentage\n }, children, renderContent());\n};\nvar highlight = css(templateObject_1$28 || (templateObject_1$28 = __makeTemplateObject([\"\\n position: relative;\\n\\n :before,\\n :after {\\n content: '';\\n background: \", \";\\n position: absolute;\\n top: -1px;\\n bottom: -1px;\\n }\\n\\n :before {\\n width: \", \";\\n left: \", \";\\n }\\n\\n :after {\\n width: 1px;\\n right: 0;\\n }\\n\"], [\"\\n position: relative;\\n\\n :before,\\n :after {\\n content: '';\\n background: \", \";\\n position: absolute;\\n top: -1px;\\n bottom: -1px;\\n }\\n\\n :before {\\n width: \", \";\\n left: \", \";\\n }\\n\\n :after {\\n width: 1px;\\n right: 0;\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(-1);\n});\n// This named style should be the wrapper for the component i.e. the module\nvar Row = styled(View)(templateObject_10$8 || (templateObject_10$8 = __makeTemplateObject([\"\\n display: flex;\\n min-width: \", \"px;\\n border-top: 1px solid \", \";\\n border-left: \", \" solid transparent;\\n box-sizing: border-box;\\n height: \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\"], [\"\\n display: flex;\\n min-width: \", \"px;\\n border-top: 1px solid \", \";\\n border-left: \", \" solid transparent;\\n box-sizing: border-box;\\n height: \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\\n \", \";\\n\"])), function (p) {\n return p.minRowWidth;\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n if (p.variant === ITableRowType.Grandparent) {\n return css(templateObject_2$J || (templateObject_2$J = __makeTemplateObject([\"\\n background-color: \", \";\\n border-top-color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n \"], [\"\\n background-color: \", \";\\n border-top-color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.info.getValue().main;\n }, function (p) {\n return p.theme.colors.info.getValue().main;\n }, RowCell, p.theme.colors.text.getValue(3));\n }\n if (p.variant === ITableRowType.Parent) {\n return css(templateObject_3$u || (templateObject_3$u = __makeTemplateObject([\"\\n justify-content: space-between;\\n \"], [\"\\n justify-content: space-between;\\n \"])));\n }\n if (p.variant === ITableRowType.Child) {\n return css(templateObject_4$s || (templateObject_4$s = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), highlight);\n }\n}, function (p) {\n if (p.isOpen && p.variant === ITableRowType.Parent) {\n return css(templateObject_5$m || (templateObject_5$m = __makeTemplateObject([\"\\n \", \"\\n border-top: 1px solid \", \";\\n background-color: \", \";\\n \"], [\"\\n \", \"\\n border-top: 1px solid \", \";\\n background-color: \", \";\\n \"])), highlight, p.theme.colors.primary.getValue().main, p.theme.colors.primary.getValue(100).main);\n }\n}, function (p) {\n if (p.isLastRow && p.variant === ITableRowType.Parent) {\n return css(templateObject_6$h || (templateObject_6$h = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n }\n if (p.isLastRow && p.variant === ITableRowType.Child) {\n return css(templateObject_7$d || (templateObject_7$d = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), p.theme.colors.primary.getValue().main);\n }\n}, function (p) {\n if (p.highlighted) {\n return css(templateObject_8$a || (templateObject_8$a = __makeTemplateObject([\"\\n \", \"\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n background-color: \", \";\\n \"], [\"\\n \", \"\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n background-color: \", \";\\n \"])), highlight, p.theme.colors.primary.getValue().main, p.theme.colors.primary.getValue().main, p.theme.colors.primary.getValue(100).main);\n }\n}, function (p) {\n if (p.variant === ITableRowType.Parent || p.variant === ITableRowType.Child) {\n return css(templateObject_9$a || (templateObject_9$a = __makeTemplateObject([\"\\n &:hover {\\n background-color: \", \";\\n }\\n \"], [\"\\n &:hover {\\n background-color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n }\n});\nvar RowCell = styled(Cell$1)(templateObject_11$5 || (templateObject_11$5 = __makeTemplateObject([\"\\n &:last-child {\\n padding-right: \", \";\\n }\\n\"], [\"\\n &:last-child {\\n padding-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ChevronButton = styled(IconButton)(templateObject_12$5 || (templateObject_12$5 = __makeTemplateObject([\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"], [\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar AcinLogo$1 = styled(Logo)(templateObject_13$4 || (templateObject_13$4 = __makeTemplateObject([\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"], [\"\\n min-width: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$28, templateObject_2$J, templateObject_3$u, templateObject_4$s, templateObject_5$m, templateObject_6$h, templateObject_7$d, templateObject_8$a, templateObject_9$a, templateObject_10$8, templateObject_11$5, templateObject_12$5, templateObject_13$4;\nvar isDarkMode = themeHelpers.isDarkMode;\n// This named style should be the wrapper for the component i.e. the module\nvar TableHeader = styled(View)(templateObject_3$v || (templateObject_3$v = __makeTemplateObject([\"\\n display: flex;\\n min-width: \", \"px;\\n border-top: 1px solid \", \";\\n border-left: \", \" solid transparent;\\n box-sizing: border-box;\\n\\n \", \";\\n\"], [\"\\n display: flex;\\n min-width: \", \"px;\\n border-top: 1px solid \", \";\\n border-left: \", \" solid transparent;\\n box-sizing: border-box;\\n\\n \", \";\\n\"])), function (p) {\n return p.minRowWidth;\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n switch (p.variant) {\n case ITableHeaderType.Outer:\n {\n return css(templateObject_1$29 || (templateObject_1$29 = __makeTemplateObject([\"\\n justify-content: space-between;\\n background-color: \", \";\\n border-bottom: 1px solid \", \";\\n height: \", \";\\n \"], [\"\\n justify-content: space-between;\\n background-color: \", \";\\n border-bottom: 1px solid \", \";\\n height: \", \";\\n \"])), isDarkMode(p.activeTheme) ? p.theme.colors.backgrounds.getValue(1) : p.theme.colors.backgrounds.getValue(2), function (p) {\n return p.theme.colors.borders.getValue(1);\n }, p.theme.spacing.getSize(12));\n }\n case ITableHeaderType.Inner:\n {\n return css(templateObject_2$K || (templateObject_2$K = __makeTemplateObject([\"\\n height: \", \";\\n \", \"\\n \"], [\"\\n height: \", \";\\n \", \"\\n \"])), p.theme.spacing.getSize(6), highlight);\n }\n }\n});\nvar templateObject_1$29, templateObject_2$K, templateObject_3$v;\nvar TableHeader$1 = function (props) {\n var className = props.className,\n variant = props.variant,\n cells = props.cells,\n cellsWidths = props.cellsWidths,\n minRowWidth = props.minRowWidth,\n style = props.style;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style\n }, /*#__PURE__*/React.createElement(TableHeader, {\n \"data-testid\": generate(['table-header'], props),\n className: className,\n variant: variant,\n minRowWidth: minRowWidth,\n activeTheme: activeTheme\n }, cells.map(function (cell) {\n var cellWidth = cellsWidths.find(function (widths) {\n return widths.key === cell.key;\n });\n return /*#__PURE__*/React.createElement(Cell$1, {\n key: cell.key,\n cell: cell,\n variant: variant,\n percentage: cellWidth === null || cellWidth === void 0 ? void 0 : cellWidth.percentage,\n minWidth: cellWidth === null || cellWidth === void 0 ? void 0 : cellWidth.minWidth,\n extraPadding: cellWidth === null || cellWidth === void 0 ? void 0 : cellWidth.extraPadding\n });\n })));\n};\nvar itemHeights$1 = {\n OuterHeader: 48,\n StandardRow: 24\n};\nvar StickyListContext = /*#__PURE__*/React.createContext({});\nStickyListContext.displayName = 'StickyListContext';\nvar ItemWrapper = function (_a) {\n var data = _a.data,\n index = _a.index,\n style = _a.style;\n var ItemRenderer = data.ItemRenderer,\n stickyIndices = data.stickyIndices;\n if (stickyIndices && stickyIndices.includes(index)) {\n return null;\n }\n return /*#__PURE__*/React.createElement(ItemRenderer, {\n index: index,\n style: style\n });\n};\nvar StickyRow = function (_a) {\n var item = _a.item,\n cellsWidths = _a.cellsWidths,\n minRowWidth = _a.minRowWidth;\n return /*#__PURE__*/React.createElement(StickyHeader, {\n height: itemHeights$1.OuterHeader\n }, /*#__PURE__*/React.createElement(TableHeader$1, {\n cells: item.cells,\n variant: item.variant,\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth\n }));\n};\nvar innerElementType = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var children = _a.children,\n rest = __rest(_a, [\"children\"]);\n return /*#__PURE__*/React.createElement(StickyListContext.Consumer, null, function (\n // @ts-ignore\n _a) {\n var stickyIndices = _a.stickyIndices,\n stickyItem = _a.stickyItem,\n cellsWidths = _a.cellsWidths,\n minRowWidth = _a.minRowWidth;\n return /*#__PURE__*/React.createElement(\"div\", __assign({\n ref: ref\n }, rest), stickyIndices.map(function (index) {\n return /*#__PURE__*/React.createElement(StickyRow, {\n key: index,\n item: stickyItem,\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth\n });\n }), children);\n });\n});\nvar StickyList = /*#__PURE__*/React.forwardRef(function (_a, ref) {\n var children = _a.children,\n stickyIndices = _a.stickyIndices,\n stickyItem = _a.stickyItem,\n cellsWidths = _a.cellsWidths,\n minRowWidth = _a.minRowWidth,\n onItemsRendered = _a.onItemsRendered,\n rest = __rest(_a, [\"children\", \"stickyIndices\", \"stickyItem\", \"cellsWidths\", \"minRowWidth\", \"onItemsRendered\"]);\n return /*#__PURE__*/React.createElement(StickyListContext.Provider, {\n value: {\n ItemRenderer: children,\n stickyIndices: stickyIndices,\n stickyItem: stickyItem,\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth\n }\n }, /*#__PURE__*/React.createElement(VariableSizeList, __assign({\n ref: ref,\n itemData: {\n ItemRenderer: children,\n stickyIndices: stickyIndices\n },\n onItemsRendered: onItemsRendered\n }, rest), ItemWrapper));\n});\nvar Row$1 = function (props) {\n var className = props.className,\n id = props.id,\n targetId = props.targetId,\n cells = props.cells,\n cellsWidths = props.cellsWidths,\n minRowWidth = props.minRowWidth,\n variant = props.variant,\n _a = props.isOpen,\n isOpen = _a === void 0 ? false : _a,\n onClick = props.onClick,\n _b = props.isLastRow,\n isLastRow = _b === void 0 ? false : _b,\n _c = props.isCollapsible,\n isCollapsible = _c === void 0 ? false : _c,\n style = props.style,\n onInspect = props.onInspect,\n inspectedRow = props.inspectedRow;\n var activeTheme = useThemeProvider().activeTheme;\n var handleClick = function (isAcin) {\n onClick && onClick(id, isCollapsible, isAcin);\n };\n var renderChevron = function (isAcin) {\n if (variant !== ITableRowType.Parent) return null;\n return isOpen ? ( /*#__PURE__*/React.createElement(ChevronButton, {\n \"data-testid\": generateCypressId('chevron-' + id + '-close-button'),\n onClick: function () {\n return handleClick(!!isAcin);\n },\n label: \"Close\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconChevronUp, null);\n },\n size: \"small\"\n })) : ( /*#__PURE__*/React.createElement(ChevronButton, {\n \"data-testid\": generateCypressId('chevron-' + id + '-open-button'),\n onClick: function () {\n return handleClick(!!isAcin);\n },\n label: \"Open\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconChevronDown, null);\n },\n size: \"small\"\n }));\n };\n var handleInspectRow = function (cell) {\n if (!(cell === null || cell === void 0 ? void 0 : cell.info)) return;\n onInspect && onInspect(cell.key, cell.info, id);\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style\n }, /*#__PURE__*/React.createElement(Row, {\n \"data-testid\": generate(['row', generateCypressId('row-' + id)], props),\n id: targetId,\n className: className,\n variant: variant,\n minRowWidth: minRowWidth,\n isOpen: isOpen,\n isLastRow: isLastRow,\n activeTheme: activeTheme,\n highlighted: inspectedRow === id\n }, cells.map(function (cell, idx) {\n var _a;\n var isFirstCell = idx === 0;\n var cellWidth = cellsWidths.find(function (widths) {\n return widths.key === cell.key;\n });\n return /*#__PURE__*/React.createElement(RowCell, {\n key: cell.key,\n cell: cell,\n percentage: cellWidth === null || cellWidth === void 0 ? void 0 : cellWidth.percentage,\n minWidth: cellWidth === null || cellWidth === void 0 ? void 0 : cellWidth.minWidth,\n onClick: function () {\n return handleInspectRow(cell);\n }\n }, isFirstCell && isCollapsible && renderChevron((_a = cell === null || cell === void 0 ? void 0 : cell.info) === null || _a === void 0 ? void 0 : _a.isAcin));\n })));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar SkeletonRow = styled(View)(templateObject_2$L || (templateObject_2$L = __makeTemplateObject([\"\\n border-top: 1px solid \", \";\\n height: \", \";\\n \", \"\\n\"], [\"\\n border-top: 1px solid \", \";\\n height: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.isLastRow && css(templateObject_1$2a || (templateObject_1$2a = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n});\nvar SkeletonRowLoader = styled(SkeletonLoader)(templateObject_3$w || (templateObject_3$w = __makeTemplateObject([\"\\n margin-top: 3px;\\n height: \", \";\\n min-width: \", \";\\n\"], [\"\\n margin-top: 3px;\\n height: \", \";\\n min-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar templateObject_1$2a, templateObject_2$L, templateObject_3$w;\nvar SkeletonRow$1 = function (props) {\n var style = props.style,\n _a = props.isLastRow,\n isLastRow = _a === void 0 ? false : _a;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: style,\n \"data-testid\": generate(['skeleton-row', isLastRow ? 'is-last-skeleton-row' : ''], props)\n }, /*#__PURE__*/React.createElement(SkeletonRow, {\n isLastRow: isLastRow\n }, /*#__PURE__*/React.createElement(SkeletonRowLoader, null)));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar VirtualisedTable = styled(View)(templateObject_1$2b || (templateObject_1$2b = __makeTemplateObject([\"\"], [\"\"])));\nvar ScrollBoundary = styled.div(templateObject_2$M || (templateObject_2$M = __makeTemplateObject([\"\\n min-height: 100vh;\\n\"], [\"\\n min-height: 100vh;\\n\"])));\nvar Header$c = styled(View)(templateObject_3$x || (templateObject_3$x = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Title$3 = styled(Heading$1)(templateObject_4$t || (templateObject_4$t = __makeTemplateObject([\"\"], [\"\"])));\nvar Controls = styled(View)(templateObject_5$n || (templateObject_5$n = __makeTemplateObject([\"\\n align-items: center;\\n display: flex;\\n\"], [\"\\n align-items: center;\\n display: flex;\\n\"])));\nvar Text = styled(View)(templateObject_6$i || (templateObject_6$i = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar Tabs = styled(TabGroup)(templateObject_7$e || (templateObject_7$e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2b, templateObject_2$M, templateObject_3$x, templateObject_4$t, templateObject_5$n, templateObject_6$i, templateObject_7$e;\nvar TableConfigurationHeaderKeys;\n(function (TableConfigurationHeaderKeys) {\n TableConfigurationHeaderKeys[\"CONTROL_CODE_AND_NAME\"] = \"CONTROL_CODE_AND_NAME\";\n TableConfigurationHeaderKeys[\"CONTROL_OWNER\"] = \"CONTROL_OWNER\";\n TableConfigurationHeaderKeys[\"CONTROL_TYPE\"] = \"CONTROL_TYPE\";\n TableConfigurationHeaderKeys[\"CONTROL_FREQUENCY\"] = \"CONTROL_FREQUENCY\";\n TableConfigurationHeaderKeys[\"CONTROL_AUTOMATION\"] = \"CONTROL_AUTOMATION\";\n TableConfigurationHeaderKeys[\"INSIGHT_CATEGORY\"] = \"INSIGHT_CATEGORY\";\n TableConfigurationHeaderKeys[\"INSIGHT_CATEGORY_COUNT\"] = \"INSIGHT_CATEGORY_COUNT\";\n TableConfigurationHeaderKeys[\"INSIGHT_SUB_CATEGORY\"] = \"INSIGHT_SUB_CATEGORY\";\n TableConfigurationHeaderKeys[\"NSS_SCORE\"] = \"NSS_SCORE\";\n TableConfigurationHeaderKeys[\"NETWORK_INVENTORY\"] = \"NETWORK_INVENTORY\";\n TableConfigurationHeaderKeys[\"SOURCE\"] = \"SOURCE\";\n TableConfigurationHeaderKeys[\"BUSINESS_ORGANISATION\"] = \"BUSINESS_ORGANISATION\";\n TableConfigurationHeaderKeys[\"MATCHED_TO\"] = \"MATCHED_TO\";\n TableConfigurationHeaderKeys[\"CONTROL_QUALITY_SCORE\"] = \"CONTROL_QUALITY_SCORE\";\n})(TableConfigurationHeaderKeys || (TableConfigurationHeaderKeys = {}));\nvar SkeletonRowLoaderEnum;\n(function (SkeletonRowLoaderEnum) {\n SkeletonRowLoaderEnum[\"LoadingRow\"] = \"LoadingRow\";\n})(SkeletonRowLoaderEnum || (SkeletonRowLoaderEnum = {}));\nvar getSkeletonRows = function (n) {\n if (n === void 0) {\n n = 3;\n }\n var skeletonRows = [];\n if (n <= 0) return skeletonRows;\n for (var i = 0; i < n; i++) {\n skeletonRows.push({\n id: \"skeleton-loading-row-\".concat(i),\n __typename: SkeletonRowLoaderEnum.LoadingRow,\n variant: SkeletonRowLoaderEnum.LoadingRow,\n isLastRow: i === n - 1\n });\n }\n return skeletonRows;\n};\nvar flattenList$1 = function (openRows, loading, headers, rows) {\n // Flatten List is not concerned with which variant of table we are dealing with\n // It recieves header and row data and consolitates this nested shape into a single-level list\n // containing Headers (Outer and Inner) and Rows (Grandparent, Parent, Child)\n // openRows is an array of parent row ids - if a given parent row id exists within openRows, then its children will be visible\n var list = [];\n if (headers && (headers === null || headers === void 0 ? void 0 : headers.cells)) {\n list.push(__assign(__assign({}, headers), {\n cells: headers.cells\n }));\n }\n if (rows) {\n var flattenedRows = rows.reduce(function (grandparentRows, grandparentRow, i) {\n if (!(grandparentRow === null || grandparentRow === void 0 ? void 0 : grandparentRow.rows)) return grandparentRows;\n var grandparentId = grandparentRow.id;\n var parentList = grandparentRow === null || grandparentRow === void 0 ? void 0 : grandparentRow.rows.reduce(\n // check to add the right type. typescript complains:\n function (parentRows, parentRow) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (!parentRow) return parentRows;\n var childTable = [];\n var parentId = \"\".concat(grandparentId, \"|\").concat(parentRow.id);\n var newParentRow = __assign(__assign({}, parentRow), {\n id: parentId\n });\n var isExtended = openRows.includes(parentId);\n if ((newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) && ((_a = newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) === null || _a === void 0 ? void 0 : _a.headers) && ((_c = (_b = newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) === null || _b === void 0 ? void 0 : _b.headers) === null || _c === void 0 ? void 0 : _c.cells) && isExtended) {\n childTable.push(__assign(__assign({}, (_d = newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) === null || _d === void 0 ? void 0 : _d.headers), {\n cells: (_f = (_e = newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) === null || _e === void 0 ? void 0 : _e.headers) === null || _f === void 0 ? void 0 : _f.cells\n }));\n }\n var childList = (_g = newParentRow === null || newParentRow === void 0 ? void 0 : newParentRow.table) === null || _g === void 0 ? void 0 : _g.rows.reduce(function (childRows, childRow) {\n if (!childRow) return childRows;\n return __spreadArray(__spreadArray([], __read(childRows), false), [childRow], false);\n }, []);\n if (childList && childList.length > 0 && isExtended) {\n // This applies the lastChild style\n var lastItem = childList.pop();\n var replacementItem = __assign(__assign({}, lastItem), {\n isLastRow: true\n });\n childTable.push.apply(childTable, __spreadArray(__spreadArray([], __read(childList), false), [replacementItem], false));\n }\n return __spreadArray(__spreadArray(__spreadArray([], __read(parentRows), false), [newParentRow], false), __read(childTable), false);\n }, [grandparentRow]);\n return __spreadArray(__spreadArray([], __read(grandparentRows), false), __read(parentList), false);\n }, []);\n list.push.apply(list, __spreadArray([], __read(flattenedRows), false));\n }\n if (loading) {\n list.push.apply(list, __spreadArray([], __read(getSkeletonRows()), false));\n }\n return list;\n};\nvar createRowIdFromName = function (cell) {\n var _a;\n if (!cell || !cell.text) return '';\n return (_a = cell.text) === null || _a === void 0 ? void 0 : _a.replace(new RegExp(' ', 'g'), '-');\n};\nvar getTab = function (tableVariant, cellKey) {\n if (tableVariant === ITableVariant.Distinct) {\n switch (cellKey) {\n case TableConfigurationHeaderKeys.NETWORK_INVENTORY:\n case TableConfigurationHeaderKeys.MATCHED_TO:\n case TableConfigurationHeaderKeys.BUSINESS_ORGANISATION:\n // Distinct Table should go to \"network-match\" tab\n // for cells MATCHED_TO and BUSINESS_ORGANISATION\n return 'network-match';\n case TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME:\n default:\n // Distinct Table should go to \"overview\" tab for cell CONTROL_CODE_AND_NAME\n return 'overview';\n }\n }\n // Instance Table should go to \"network-match\" tab\n return 'network-match';\n};\nvar getType = function (type, isAcin) {\n if (!type) return 'AcinControl';\n switch (type.toLowerCase()) {\n default:\n case 'control':\n return isAcin ? 'AcinControl' : 'ClientControl';\n }\n};\nvar VirtualisedTable$1 = function (props) {\n var className = props.className,\n headers = props.headers,\n rows = props.rows,\n grandparentCellWidths = props.grandparentCellWidths,\n cellsWidths = props.cellsWidths,\n childCellsWidths = props.childCellsWidths,\n _a = props.minRowWidth,\n minRowWidth = _a === void 0 ? 1200 : _a,\n onInitialised = props.onInitialised,\n _b = props.loading,\n loading = _b === void 0 ? false : _b,\n tableVariant = props.tableVariant,\n onItemsRendered = props.onItemsRendered,\n onNavigate = props.onNavigate,\n onInspect = props.onInspect,\n inspectedRow = props.inspectedRow;\n var listRef = React.useRef(null);\n var listOuterRef = React.useRef(null);\n var _c = __read(React.useState(0), 1),\n scrollToTopPosition = _c[0];\n var _d = __read(React.useState([]), 2),\n openRows = _d[0],\n setOpenRows = _d[1];\n var _e = __read(React.useState(false), 2),\n scrollPromptVisible = _e[0],\n setScrollPromptVisible = _e[1];\n var _f = __read(React.useState(flattenList$1(openRows, loading, headers, rows)), 2),\n items = _f[0],\n setItems = _f[1];\n React.useEffect(function () {\n var _a;\n setItems(flattenList$1(openRows, loading, headers, rows));\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(0, false);\n }, [headers, rows, listRef, openRows, loading]);\n var getItemHeight = React.useCallback(function (index) {\n if (items) {\n var item = items[index];\n var key = item.variant === ITableHeaderType.Outer ? 'OuterHeader' : 'StandardRow';\n return key ? itemHeights$1[key] : 0;\n }\n return 0;\n }, [items]);\n var handleRowClick = function (id, isCollapsible, isAcin) {\n if (isCollapsible) {\n var isExpanded = openRows.includes(id);\n var mutatedList = openRows.filter(function (row) {\n return row !== id;\n });\n return isExpanded ? setOpenRows(mutatedList) : setOpenRows(__spreadArray(__spreadArray([], __read(openRows), false), [id], false));\n }\n };\n var handleScroll = function (scroll) {\n var showScrollToTop = window.innerHeight <= scroll.scrollOffset;\n if (!scrollPromptVisible && showScrollToTop) {\n setScrollPromptVisible(true);\n } else if (scrollPromptVisible && !showScrollToTop) {\n setScrollPromptVisible(false);\n }\n };\n var scrollToTop = React.useCallback(function () {\n var _a;\n (_a = listOuterRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({\n left: 0,\n top: 0,\n behavior: 'smooth'\n });\n }, []);\n var scrollToAnimated = React.useCallback(function (scrollOffset) {\n var _a;\n (_a = listOuterRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({\n left: 0,\n top: scrollOffset - itemHeights$1.OuterHeader,\n behavior: 'smooth'\n });\n }, []);\n var scrollTo = React.useCallback(function (id, headerOffset) {\n if (headerOffset === void 0) {\n headerOffset = 0;\n }\n var index = function () {\n return items === null || items === void 0 ? void 0 : items.findIndex(function (item) {\n switch (item.__typename) {\n case 'TableRow':\n {\n if (item.variant === ITableRowType.Grandparent) {\n var targetId = createRowIdFromName((item === null || item === void 0 ? void 0 : item.cells) && item.cells[0]);\n return targetId === id;\n }\n return false;\n }\n default:\n return false;\n }\n });\n }();\n var offset = items && items.slice(0, index).map(function (_, index) {\n return getItemHeight(index);\n }).reduce(function (acc, value) {\n return acc + value;\n }, 0);\n if (index > -1 && offset) {\n scrollToAnimated(offset - headerOffset);\n }\n }, [getItemHeight, items, scrollToAnimated]);\n React.useEffect(function () {\n onInitialised(scrollTo);\n }, [onInitialised, scrollTo]);\n var handleInspectRow = function (cellKey, cellInfo, rowId) {\n if (!onNavigate) return;\n var id = cellInfo.entityId;\n var type = getType(cellInfo.type, cellInfo.isAcin);\n var tab = getTab(tableVariant, cellKey);\n // For Distinct Table:\n if (tableVariant === ITableVariant.Distinct) {\n switch (cellKey) {\n case TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME:\n onNavigate(id, type, tab);\n break;\n default:\n onNavigate(id, type, tab, cellInfo.businessOrgId || undefined, (cellInfo === null || cellInfo === void 0 ? void 0 : cellInfo.riskInventoryId) || undefined);\n }\n } else {\n // For Instance Table Variant\n onNavigate(id, type, tab, cellInfo.businessOrgId || undefined, (cellInfo === null || cellInfo === void 0 ? void 0 : cellInfo.riskInventoryId) || undefined);\n }\n onInspect && onInspect(rowId, type);\n };\n var VirtualRow = /*#__PURE__*/React.memo(function (_a) {\n var index = _a.index,\n style = _a.style;\n if (items && typeof index === 'number' && index >= 0) {\n var item = items[index];\n switch (item === null || item === void 0 ? void 0 : item.variant) {\n case SkeletonRowLoaderEnum.LoadingRow:\n {\n return /*#__PURE__*/React.createElement(SkeletonRow$1, {\n style: style,\n isLastRow: item.isLastRow\n });\n }\n case ITableHeaderType.Outer:\n {\n return /*#__PURE__*/React.createElement(TableHeader$1, {\n style: style,\n cells: item.cells,\n variant: item.variant,\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth\n });\n }\n case ITableRowType.Grandparent:\n {\n var targetId = createRowIdFromName((item === null || item === void 0 ? void 0 : item.cells) && item.cells[0]);\n return /*#__PURE__*/React.createElement(Row$1, {\n style: style,\n id: item.id,\n targetId: targetId,\n cells: item.cells,\n variant: ITableRowType.Grandparent,\n cellsWidths: grandparentCellWidths,\n minRowWidth: minRowWidth\n });\n }\n case ITableRowType.Parent:\n {\n var isCollapsible = item.table !== null;\n return /*#__PURE__*/React.createElement(Row$1, {\n style: style,\n id: item.id,\n cells: item.cells,\n variant: ITableRowType.Parent,\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth,\n isCollapsible: isCollapsible,\n isOpen: isCollapsible && openRows.includes(item.id),\n onClick: handleRowClick,\n onInspect: handleInspectRow,\n inspectedRow: inspectedRow\n });\n }\n case ITableHeaderType.Inner:\n {\n return /*#__PURE__*/React.createElement(TableHeader$1, {\n style: style,\n cells: item.cells,\n variant: item.variant,\n cellsWidths: childCellsWidths,\n minRowWidth: minRowWidth\n });\n }\n case ITableRowType.Child:\n {\n return /*#__PURE__*/React.createElement(Row$1, {\n style: style,\n id: item.id,\n cells: item.cells,\n variant: ITableRowType.Child,\n cellsWidths: childCellsWidths,\n minRowWidth: minRowWidth,\n isLastRow: item === null || item === void 0 ? void 0 : item.isLastRow,\n onClick: handleRowClick,\n onInspect: handleInspectRow,\n inspectedRow: inspectedRow\n });\n }\n default:\n return null;\n }\n }\n return null;\n }, areEqual);\n return /*#__PURE__*/React.createElement(VirtualisedTable, {\n \"data-testid\": generate(['virtualised-table'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ScrollBoundary, null, /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(StickyList, {\n ref: listRef,\n outerRef: listOuterRef,\n height: 600,\n width: width,\n itemCount: (items === null || items === void 0 ? void 0 : items.length) || 0,\n itemSize: function (index) {\n return getItemHeight(index) || 0;\n },\n innerElementType: innerElementType,\n style: {\n overflowX: 'scroll'\n },\n onScroll: handleScroll,\n stickyIndices: [0],\n stickyItem: items[0],\n cellsWidths: cellsWidths,\n minRowWidth: minRowWidth,\n onItemsRendered: onItemsRendered\n },\n // @ts-ignore\n VirtualRow);\n }), /*#__PURE__*/React.createElement(ScrollToTopButton, {\n controlledWidth: scrollToTopPosition,\n variant: \"opaque\",\n asPrompt: true,\n isVisible: scrollPromptVisible,\n onClick: scrollToTop\n })));\n};\nvar VirtualisedTable$2 = styled(VirtualisedTable$1)(templateObject_1$2c || (templateObject_1$2c = __makeTemplateObject([\"\"], [\"\"])));\nvar TableRow = styled(Row$1)(templateObject_2$N || (templateObject_2$N = __makeTemplateObject([\"\"], [\"\"])));\nvar TableHeader$2 = styled(TableHeader$1)(templateObject_3$y || (templateObject_3$y = __makeTemplateObject([\"\"], [\"\"])));\nvar SkeletonRow$2 = styled(SkeletonRow$1)(templateObject_4$u || (templateObject_4$u = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2c, templateObject_2$N, templateObject_3$y, templateObject_4$u;\nvar createFilterValue = function (filterValue) {\n var value = {\n value: filterValue.value\n };\n if (filterValue === null || filterValue === void 0 ? void 0 : filterValue.label) {\n value.label = filterValue.label;\n }\n if (filterValue === null || filterValue === void 0 ? void 0 : filterValue.sublabel) {\n value.sublabel = filterValue.sublabel;\n }\n return value;\n};\nvar mergeActiveFiltersAndFilterGroups = function (activeFilters, incomingFilterGroups, resetBreadcrumbs) {\n var activeFilterGroups = activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups;\n // Scenario 1:\n // activeFilters and incomingFilterGroups do not exist:\n if (!activeFilterGroups && !incomingFilterGroups || !activeFilterGroups && incomingFilterGroups && incomingFilterGroups.length === 0 || activeFilterGroups && activeFilterGroups.length === 0 && !incomingFilterGroups || activeFilterGroups && activeFilterGroups.length === 0 && incomingFilterGroups && incomingFilterGroups.length === 0) {\n return undefined;\n }\n // Scenario 2:\n // activeFilters exists and incomingFilterGroups do not exist:\n if (activeFilterGroups && activeFilterGroups.length > 0 && (!incomingFilterGroups || incomingFilterGroups && incomingFilterGroups.length === 0)) {\n return activeFilters;\n }\n var mergedResult = [];\n activeFilterGroups === null || activeFilterGroups === void 0 ? void 0 : activeFilterGroups.forEach(function (activeFilters) {\n var activeGroupKey = activeFilters.groupKey;\n var activeFilterValues = activeFilters.filterValues;\n var foundIncomingMatchedFilter = incomingFilterGroups === null || incomingFilterGroups === void 0 ? void 0 : incomingFilterGroups.find(function (incoming) {\n return incoming.groupKey === activeGroupKey;\n });\n // Scenario 3:\n // activeFilter contains incomingGroupKey\n // => then always \"replace filterValules\" for that same groupKey\n if (foundIncomingMatchedFilter) {\n mergedResult.push({\n groupKey: activeGroupKey,\n filterValues: foundIncomingMatchedFilter.filterValues.map(function (matchValues) {\n return createFilterValue(matchValues);\n })\n });\n resetBreadcrumbs && resetBreadcrumbs();\n }\n // Scenario 4:\n // activeFilter does not contain incomingGroupKey\n // => then add to the merged result the current activeFilters:\n else {\n mergedResult.push({\n groupKey: activeGroupKey,\n filterValues: activeFilterValues.map(function (activeValue) {\n return createFilterValue(activeValue);\n })\n });\n }\n });\n incomingFilterGroups === null || incomingFilterGroups === void 0 ? void 0 : incomingFilterGroups.forEach(function (incoming) {\n var incomingGroupKey = incoming.groupKey;\n var incomingFilterValues = incoming.filterValues;\n var foundMatchedFilter = activeFilterGroups === null || activeFilterGroups === void 0 ? void 0 : activeFilterGroups.find(function (active) {\n return active.groupKey === incomingGroupKey;\n });\n // Scenario 5:\n // Add all incomingFilterGroups alongside existing groups\n if (!foundMatchedFilter) {\n mergedResult.push({\n groupKey: incomingGroupKey,\n filterValues: incomingFilterValues.map(function (incomingValue) {\n return createFilterValue(incomingValue);\n })\n });\n }\n });\n return {\n groups: mergedResult\n };\n};\nvar mergeConfigurationWithIncomingConfiguration = function (activeConfiguration, incomingConfiguration) {\n if (!incomingConfiguration || !activeConfiguration || incomingConfiguration && incomingConfiguration.length === 0 || activeConfiguration && activeConfiguration.length === 0) {\n return [];\n }\n return activeConfiguration.map(function (activeConfig) {\n var configurationGroupKey = activeConfig.groupKey;\n // replace always the groupKey on the activeConfig with matching groupKey on the incomingConfig\n var foundIncomingGroup = incomingConfiguration.find(function (item) {\n return item.groupKey === configurationGroupKey;\n });\n if (foundIncomingGroup) {\n return {\n groupKey: configurationGroupKey,\n filterValues: foundIncomingGroup === null || foundIncomingGroup === void 0 ? void 0 : foundIncomingGroup.filterValues.map(function (group) {\n return {\n value: group.value,\n label: group.label\n };\n })\n };\n }\n // otherwise return original group from activeCongif\n return activeConfig;\n });\n};\n// Relocated\nvar getIncomingConfiguration = function (selection, filterValues) {\n var incomingConfiguration = [];\n var values = filterValues === null || filterValues === void 0 ? void 0 : filterValues.filter(function (value) {\n return value.value === selection;\n });\n if (values && (values === null || values === void 0 ? void 0 : values.length) > 0) {\n incomingConfiguration = [{\n groupKey: 'GROUP_BY',\n filterValues: values\n }];\n }\n return incomingConfiguration;\n};\nvar getShowFolders = function (charts) {\n if (!charts || charts.length === 0) return false;\n var chart = charts[0];\n if (!chart) return false;\n return chart.data.some(function (item) {\n var _a, _b;\n return !!((_b = (_a = item === null || item === void 0 ? void 0 : item.info) === null || _a === void 0 ? void 0 : _a.configuration) === null || _b === void 0 ? void 0 : _b.length);\n });\n};\nvar getEnableDrillDown = function (configuration) {\n if (!configuration || configuration.length === 0) return false;\n var groupByItem = configuration.filter(function (item) {\n return item.groupKey === 'GROUP_BY';\n });\n var value = groupByItem && groupByItem.length > 0 ? groupByItem[0].filterValues[0].value : undefined;\n if (!value) return false;\n return ['RISK_LEVEL_1', 'RISK_LEVEL_2', 'RISK_LEVEL_3', 'REGULATOR', 'REGULATION', 'REGULATORY_ARTICLE', 'PARENT_BUSINESS_LINE', 'CHILD_BUSINESS_LINE', 'PARENT_CLIENT_RISK', 'CHILD_CLIENT_RISK', 'PARENT_ACIN_PROCESS', 'CHILD_ACIN_PROCESS'].includes(value);\n};\nvar formatBreadcrumbInput = function (breadcrumbs) {\n if (breadcrumbs && breadcrumbs.length > 0) {\n var newBreadcrumbs = breadcrumbs.map(function (breadcrumb) {\n return {\n id: breadcrumb.id,\n label: breadcrumb.label,\n filters: breadcrumb.filters && breadcrumb.filters.map(function (filter) {\n return {\n groupKey: filter.groupKey,\n filterValues: filter.filterValues.map(function (value) {\n return {\n value: value.value,\n label: value.label\n };\n })\n };\n }),\n configuration: breadcrumb.configuration && breadcrumb.configuration.map(function (config) {\n return {\n groupKey: config.groupKey,\n filterValues: config.filterValues.map(function (value) {\n return {\n value: value.value,\n label: value.label\n };\n })\n };\n })\n };\n });\n return newBreadcrumbs;\n }\n return undefined;\n};\nvar toTitleCase = function (string) {\n var formatted = string.replace(/_/g, ' ').toLowerCase();\n return startCase(formatted);\n};\nvar transformConfigurationIntoList = function (configuration) {\n var text = [];\n configuration === null || configuration === void 0 ? void 0 : configuration.map(function (selection, index) {\n var label = selection.filterValues[0].label;\n return text.push(\"\".concat(toTitleCase(selection.groupKey), \": \").concat(label));\n });\n return text.join(', ');\n};\nvar transformFiltersIntoList = function (filters) {\n var _a;\n var list = [];\n var filtersTotal = 0;\n (_a = filters === null || filters === void 0 ? void 0 : filters.groups) === null || _a === void 0 ? void 0 : _a.map(function (group) {\n var title = toTitleCase(group.groupKey);\n var filtersList = [];\n group.filterValues.map(function (filter) {\n return filtersList.push(filter.label || '');\n });\n filtersTotal = filtersList.length + filtersTotal;\n return list.push({\n title: title,\n filters: filtersList.join(', ')\n });\n });\n return {\n filterGroups: list,\n count: filtersTotal\n };\n};\nvar getFileName = function (title) {\n var today = new Date();\n return \"\".concat(title, \" - \").concat(format(today, 'dd.MM.yy'));\n};\nvar disableTableOption = function (configuration) {\n var source = configuration === null || configuration === void 0 ? void 0 : configuration.find(function (option) {\n return option.groupKey === 'SOURCE';\n });\n var insight = configuration === null || configuration === void 0 ? void 0 : configuration.find(function (option) {\n return option.groupKey === 'INSIGHT_BY';\n });\n var isClient = !!(source === null || source === void 0 ? void 0 : source.filterValues.find(function (item) {\n return item.value === 'CLIENT';\n }));\n var isAcin = !!(source === null || source === void 0 ? void 0 : source.filterValues.find(function (item) {\n return item.value === 'ACIN';\n }));\n var isControlQuality = !!(insight === null || insight === void 0 ? void 0 : insight.filterValues.find(function (item) {\n return item.value === 'CONTROL_QUALITY_SCORE';\n }));\n if (isClient && !isControlQuality) {\n return true;\n }\n if (isAcin) {\n return true;\n }\n return false;\n};\nvar INITIAL_STATE = {\n configurationFromChart: undefined,\n filtersFromChart: undefined,\n quickFilterFromChart: undefined,\n currentBreadcrumbs: undefined,\n formattedBreadcrumbs: undefined,\n chartError: undefined,\n chartHasData: undefined,\n activeLevel: undefined,\n levels: undefined,\n incomingFilters: undefined,\n incomingConfiguration: undefined,\n onUpdateIncomingFilters: function () {},\n onUpdateActiveLevel: function () {},\n onUpdateConfigurationFromChart: function () {},\n onUpdateFiltersFromChart: function () {},\n onUpdateQuickFilterFromChart: function () {},\n onUpdateCurrentBreadcrumbs: function () {},\n onUpdateFormattedBreadcrumbs: function () {},\n onUpdateChartError: function () {},\n onUpdateChartHasData: function () {},\n onUpdateLevels: function () {},\n onUpdateIncomingConfiguration: function () {}\n};\nvar Context$2 = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar useReport = function () {\n return React.useContext(Context$2);\n};\nvar ReportProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(), 2),\n configurationFromChart = _b[0],\n setConfigurationFromChart = _b[1];\n var _c = __read(React.useState(), 2),\n filtersFromChart = _c[0],\n setFiltersFromChart = _c[1];\n var _d = __read(React.useState(), 2),\n quickFilterFromChart = _d[0],\n setQuickFilterFromChart = _d[1];\n var _e = __read(React.useState(), 2),\n currentBreadcrumbs = _e[0],\n setCurrentBreadcrumbs = _e[1];\n var _f = __read(React.useState(undefined), 2),\n formattedBreadcrumbs = _f[0],\n setFormattedBreadcrumbs = _f[1];\n var _g = __read(React.useState(), 2),\n chartError = _g[0],\n setChartError = _g[1];\n var _h = __read(React.useState(true), 2),\n chartHasData = _h[0],\n setChartHasData = _h[1];\n var _j = __read(React.useState(), 2),\n activeLevel = _j[0],\n setActiveLevel = _j[1];\n var _k = __read(React.useState([]), 2),\n levels = _k[0],\n setLevels = _k[1];\n var _l = __read(React.useState(), 2),\n incomingFilters = _l[0],\n setIncomingFilters = _l[1];\n var _m = __read(React.useState(), 2),\n incomingConfiguration = _m[0],\n setIncomingConfiguration = _m[1];\n var onUpdateConfigurationFromChart = React.useCallback(function (groups) {\n setConfigurationFromChart(groups);\n }, [setConfigurationFromChart]);\n var onUpdateFiltersFromChart = React.useCallback(function (filterInput) {\n setFiltersFromChart(filterInput);\n }, [setFiltersFromChart]);\n var onUpdateQuickFilterFromChart = React.useCallback(function (item) {\n setQuickFilterFromChart(item || undefined);\n }, [setQuickFilterFromChart]);\n var onUpdateCurrentBreadcrumbs = React.useCallback(function (breadcrumbs) {\n setCurrentBreadcrumbs(breadcrumbs);\n }, [setCurrentBreadcrumbs]);\n var onUpdateFormattedBreadcrumbs = React.useCallback(function (breadcrumbs) {\n setFormattedBreadcrumbs(formatBreadcrumbInput(breadcrumbs));\n }, [setFormattedBreadcrumbs]);\n var onUpdateChartError = React.useCallback(function (error) {\n setChartError(error);\n }, [setChartError]);\n var onUpdateChartHasData = React.useCallback(function (hasData) {\n setChartHasData(hasData);\n }, [setChartHasData]);\n var onUpdateActiveLevel = React.useCallback(function (level) {\n setActiveLevel(level);\n }, [setActiveLevel]);\n var onUpdateLevels = React.useCallback(function (levels) {\n setLevels(levels);\n }, [setLevels]);\n var onUpdateIncomingFilters = React.useCallback(function (filters) {\n setIncomingFilters(filters);\n }, [setIncomingFilters]);\n var onUpdateIncomingConfiguration = React.useCallback(function (config) {\n setIncomingConfiguration(config);\n }, [setIncomingConfiguration]);\n return /*#__PURE__*/React.createElement(Context$2.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n configurationFromChart: configurationFromChart,\n filtersFromChart: filtersFromChart,\n quickFilterFromChart: quickFilterFromChart,\n onUpdateConfigurationFromChart: onUpdateConfigurationFromChart,\n onUpdateFiltersFromChart: onUpdateFiltersFromChart,\n onUpdateQuickFilterFromChart: onUpdateQuickFilterFromChart,\n currentBreadcrumbs: currentBreadcrumbs,\n onUpdateCurrentBreadcrumbs: onUpdateCurrentBreadcrumbs,\n formattedBreadcrumbs: formattedBreadcrumbs,\n onUpdateFormattedBreadcrumbs: onUpdateFormattedBreadcrumbs,\n chartError: chartError,\n onUpdateChartError: onUpdateChartError,\n onUpdateChartHasData: onUpdateChartHasData,\n chartHasData: chartHasData,\n onUpdateActiveLevel: onUpdateActiveLevel,\n activeLevel: activeLevel,\n levels: levels,\n onUpdateLevels: onUpdateLevels,\n incomingFilters: incomingFilters,\n onUpdateIncomingFilters: onUpdateIncomingFilters,\n incomingConfiguration: incomingConfiguration,\n onUpdateIncomingConfiguration: onUpdateIncomingConfiguration\n })\n }, children);\n};\nvar mergeTables = function (previousTable, latestTable) {\n var _a;\n if (!previousTable) {\n return latestTable;\n }\n var grandparentUpdated = false;\n var updatedRows = (_a = previousTable === null || previousTable === void 0 ? void 0 : previousTable.rows) === null || _a === void 0 ? void 0 : _a.map(function (grandparentRow) {\n var _a;\n if (!(grandparentRow === null || grandparentRow === void 0 ? void 0 : grandparentRow.id) || !((_a = latestTable === null || latestTable === void 0 ? void 0 : latestTable.rows[0]) === null || _a === void 0 ? void 0 : _a.id)) {\n return grandparentRow;\n }\n var isUpdatedGrandparent = grandparentRow.id === latestTable.rows[0].id;\n if (!isUpdatedGrandparent) {\n return grandparentRow;\n }\n // Always the 1st grandparent row in latest table as pageSize = 1\n var latestGrandparentRow = latestTable.rows[0];\n var updatedParentRows = grandparentRow.rows.concat(latestGrandparentRow.rows);\n grandparentUpdated = true;\n return __assign(__assign({}, grandparentRow), {\n rows: updatedParentRows\n });\n });\n if (updatedRows && !grandparentUpdated && (latestTable === null || latestTable === void 0 ? void 0 : latestTable.rows[0])) {\n updatedRows.push(latestTable.rows[0]);\n }\n return __assign(__assign({}, previousTable), {\n rows: updatedRows\n });\n};\nvar mergeAllFilters = function (filters, filtersFromChart, quickFilterFromChart) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;\n // Scenario 1:\n // quickFilterFromChart exists\n // filtersFromChart does not exist\n // filters does not exist\n if (((_a = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _a === void 0 ? void 0 : _a.filters) && ((_c = (_b = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _b === void 0 ? void 0 : _b.filters) === null || _c === void 0 ? void 0 : _c.length) > 0 && (!(filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) || (filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) && ((_d = filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) === null || _d === void 0 ? void 0 : _d.length) === 0) && (!(filters === null || filters === void 0 ? void 0 : filters.groups) || (filters === null || filters === void 0 ? void 0 : filters.groups) && ((_e = filters === null || filters === void 0 ? void 0 : filters.groups) === null || _e === void 0 ? void 0 : _e.length) === 0)) {\n return {\n groups: ((_g = (_f = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _f === void 0 ? void 0 : _f.filters) === null || _g === void 0 ? void 0 : _g.map(function (group) {\n return {\n groupKey: group.groupKey,\n filterValues: group.filterValues.map(function (value) {\n return {\n label: value.label,\n value: value.value\n };\n })\n };\n })) || []\n };\n }\n // Scenario 2:\n // quickFilterFromChart exist\n // filtersFromChart exist\n else if (((_h = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _h === void 0 ? void 0 : _h.filters) && ((_k = (_j = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _j === void 0 ? void 0 : _j.filters) === null || _k === void 0 ? void 0 : _k.length) > 0 && (filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) && ((_l = filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) === null || _l === void 0 ? void 0 : _l.length) > 0) {\n return mergeActiveFiltersAndFilterGroups(filtersFromChart, (_m = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _m === void 0 ? void 0 : _m.filters);\n }\n // Scenario 3:\n // quickFilterFromChart exist\n // filters exist\n else if (((_o = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _o === void 0 ? void 0 : _o.filters) && ((_q = (_p = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _p === void 0 ? void 0 : _p.filters) === null || _q === void 0 ? void 0 : _q.length) > 0 && (filters === null || filters === void 0 ? void 0 : filters.groups) && ((_r = filters === null || filters === void 0 ? void 0 : filters.groups) === null || _r === void 0 ? void 0 : _r.length) > 0) {\n return mergeActiveFiltersAndFilterGroups(filters, (_s = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _s === void 0 ? void 0 : _s.filters);\n }\n // Scenario 4:\n // filtersFromChart exists\n else if ((filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) && ((_t = filtersFromChart === null || filtersFromChart === void 0 ? void 0 : filtersFromChart.groups) === null || _t === void 0 ? void 0 : _t.length) > 0) {\n return filtersFromChart;\n }\n // Scenario 5:\n // return filters only that could exist or not\n return filters;\n};\nvar getConfigurations = function (configuration, configurationFromChart) {\n if (configurationFromChart && configurationFromChart.length > 0) {\n return configurationFromChart;\n } else if (configuration && configuration.length > 0) {\n return configuration;\n }\n return undefined;\n};\nvar createUrl = function (origin, controlId, tab, insightBy, controlInstance) {\n if (!controlId || !tab) return null;\n var url = \"\".concat(origin, \"/calibrate/control/\").concat(controlId, \"/\").concat(tab);\n if (tab === 'network-match' && insightBy) {\n url = \"\".concat(url, \"?INSIGHT_BY=\").concat(insightBy);\n if (controlInstance) {\n url = \"\".concat(url, \"&CONTROL_INSTANCE=\").concat(controlInstance);\n }\n }\n return url;\n};\nvar getTableRows = function (table) {\n return table.rows.reduce(function (acc, currentGrandparent) {\n var _a;\n if (currentGrandparent.rows) {\n var parentRowsCount = ((_a = currentGrandparent === null || currentGrandparent === void 0 ? void 0 : currentGrandparent.rows) === null || _a === void 0 ? void 0 : _a.length) || 0;\n return acc + parentRowsCount;\n }\n return acc;\n }, 0);\n};\nvar ReportDrawer = function (props) {\n var drawerName = props.drawerName,\n controlId = props.controlId,\n insightById = props.insightById,\n controlInstanceId = props.controlInstanceId,\n selectedTab = props.selectedTab,\n onCloseDrawer = props.onCloseDrawer,\n onNavigate = props.onNavigate,\n onChangeTab = props.onChangeTab,\n onInsightByIdChange = props.onInsightByIdChange,\n onControlInstanceIdChange = props.onControlInstanceIdChange;\n var onAddToast = useToaster().onAddToast;\n var _a = __read(React.useState(true), 2),\n allowCopy = _a[0],\n setAllowCopy = _a[1];\n var handleCopyLink = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var url, delayTime;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n url = createUrl(window.location.origin, controlId, selectedTab, insightById, controlInstanceId);\n if (!url) throw new Error('Wrong URL!');\n return [4 /*yield*/, navigator.clipboard.writeText(url)];\n case 1:\n _a.sent();\n delayTime = 2500;\n setAllowCopy(false);\n setTimeout(function () {\n setAllowCopy(true);\n }, delayTime + 500);\n onAddToast({\n id: \"\".concat(controlId, \"-copied\"),\n title: 'Copied to Clipboard',\n message: 'The link has been copied to your clipboard.',\n status: 'success',\n removeAt: +new Date() + delayTime\n });\n return [2 /*return*/];\n }\n });\n });\n };\n var handleOpenLink = function () {\n var url = createUrl(window.location.origin, controlId, selectedTab, insightById, controlInstanceId);\n if (!url) throw new Error('Wrong URL!');\n window.open(url, '_blank');\n };\n var actions = [{\n label: 'Copy Link',\n id: 'copy-link',\n onClick: function () {\n return allowCopy && handleCopyLink();\n },\n icon: function () {\n return /*#__PURE__*/React.createElement(IconShare, {\n size: \"small\"\n });\n },\n showIconOnly: true,\n disabled: !allowCopy\n }, {\n label: 'Open in New Tab',\n id: 'open-link',\n onClick: handleOpenLink,\n icon: function () {\n return /*#__PURE__*/React.createElement(IconLinkOut, null);\n },\n showIconOnly: true\n }, {\n label: 'Close',\n id: 'close-drawer',\n onClick: onCloseDrawer,\n icon: function () {\n return /*#__PURE__*/React.createElement(IconClose, null);\n },\n showIconOnly: true\n }];\n return /*#__PURE__*/React.createElement(PageDrawer, {\n withOverlay: true,\n onOverlayClose: onCloseDrawer,\n drawerName: drawerName\n }, /*#__PURE__*/React.createElement(ControlPage$1, {\n insideDrawer: true,\n actions: actions,\n controlId: controlId,\n insightById: insightById,\n controlInstanceId: controlInstanceId,\n selectedTab: selectedTab,\n onNavigate: onNavigate,\n onChangeTab: onChangeTab,\n onInsightByIdChange: onInsightByIdChange,\n onControlInstanceIdChange: onControlInstanceIdChange\n }), /*#__PURE__*/React.createElement(Toaster, null));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportTable = styled(Card$1)(templateObject_1$2d || (templateObject_1$2d = __makeTemplateObject([\"\\n height: 680px;\\n\"], [\"\\n height: 680px;\\n\"])));\nvar Download = styled(IconButton)(templateObject_2$O || (templateObject_2$O = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$2d, templateObject_2$O;\nvar instanceCellWidths = [{\n key: TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME,\n minWidth: 240,\n percentage: '55%'\n}, {\n key: TableConfigurationHeaderKeys.BUSINESS_ORGANISATION,\n minWidth: 180,\n percentage: '20%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 180,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_SUB_CATEGORY,\n minWidth: 90,\n percentage: '12%'\n}, {\n key: TableConfigurationHeaderKeys.SOURCE,\n minWidth: 90,\n percentage: '12%'\n}, {\n key: TableConfigurationHeaderKeys.NETWORK_INVENTORY,\n minWidth: 125,\n percentage: '12%'\n}, {\n key: TableConfigurationHeaderKeys.NSS_SCORE,\n minWidth: 110,\n percentage: '8%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_OWNER,\n minWidth: 90,\n percentage: '12%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_TYPE,\n minWidth: 90,\n percentage: '14%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_FREQUENCY,\n minWidth: 100,\n percentage: '14%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_AUTOMATION,\n minWidth: 100,\n percentage: '14%'\n}, {\n key: TableConfigurationHeaderKeys.MATCHED_TO,\n minWidth: 100,\n percentage: '14%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_QUALITY_SCORE,\n minWidth: 100,\n percentage: '6%'\n}];\nvar distinctCellWidths = [{\n key: TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME,\n minWidth: 500,\n extraPadding: '50px',\n percentage: '55%'\n}, {\n key: TableConfigurationHeaderKeys.BUSINESS_ORGANISATION,\n minWidth: 180,\n percentage: '20%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY_COUNT,\n minWidth: 120,\n percentage: '6%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 140,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_OWNER,\n minWidth: 160,\n percentage: '13%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_TYPE,\n minWidth: 160,\n percentage: '13%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_FREQUENCY,\n minWidth: 160,\n percentage: '13%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_AUTOMATION,\n minWidth: 160,\n percentage: '13%'\n}, {\n key: TableConfigurationHeaderKeys.NSS_SCORE,\n minWidth: 110,\n percentage: '8%'\n}, {\n key: TableConfigurationHeaderKeys.NETWORK_INVENTORY,\n minWidth: 100,\n percentage: '8%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_QUALITY_SCORE,\n minWidth: 100,\n percentage: '6%'\n}];\nvar childCellWidths = [{\n key: TableConfigurationHeaderKeys.BUSINESS_ORGANISATION,\n minWidth: 180,\n percentage: '15%'\n}, {\n key: TableConfigurationHeaderKeys.NETWORK_INVENTORY,\n minWidth: 180,\n percentage: '15%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 180,\n percentage: '15%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_SUB_CATEGORY,\n minWidth: 180,\n percentage: '15%'\n}, {\n key: TableConfigurationHeaderKeys.NSS_SCORE,\n minWidth: 180,\n percentage: '15%'\n}, {\n key: TableConfigurationHeaderKeys.MATCHED_TO,\n minWidth: 180,\n percentage: 'auto'\n}];\nvar VirtualisedTableCellFragmentDoc = gql(templateObject_1$2e || (templateObject_1$2e = __makeTemplateObject([\"\\n fragment VirtualisedTableCell on TableCell {\\n id\\n key\\n text\\n info {\\n showAcinLogo\\n isAcin\\n isLink\\n id\\n entityId\\n type\\n businessOrgId\\n riskInventoryId\\n }\\n content {\\n ... on TableInsightCategory {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n ... on NetworkSignalScore {\\n score\\n total\\n }\\n ... on TableInsightCounts {\\n nodes {\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n ... on TableControlQualityScore {\\n controlQualityScore\\n }\\n }\\n }\\n\"], [\"\\n fragment VirtualisedTableCell on TableCell {\\n id\\n key\\n text\\n info {\\n showAcinLogo\\n isAcin\\n isLink\\n id\\n entityId\\n type\\n businessOrgId\\n riskInventoryId\\n }\\n content {\\n ... on TableInsightCategory {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n ... on NetworkSignalScore {\\n score\\n total\\n }\\n ... on TableInsightCounts {\\n nodes {\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n ... on TableControlQualityScore {\\n controlQualityScore\\n }\\n }\\n }\\n\"])));\nvar templateObject_1$2e;\nvar VirtualisedTableHeadersFragmentDoc = gql(templateObject_1$2f || (templateObject_1$2f = __makeTemplateObject([\"\\n fragment VirtualisedTableHeaders on TableHeader {\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"], [\"\\n fragment VirtualisedTableHeaders on TableHeader {\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"])), VirtualisedTableCellFragmentDoc);\nvar templateObject_1$2f;\nvar VirtualisedTableChildRowFragmentDoc = gql(templateObject_1$2g || (templateObject_1$2g = __makeTemplateObject([\"\\n fragment VirtualisedTableChildRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"], [\"\\n fragment VirtualisedTableChildRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"])), VirtualisedTableCellFragmentDoc);\nvar templateObject_1$2g;\nvar VirtualisedTableParentRowFragmentDoc = gql(templateObject_1$2h || (templateObject_1$2h = __makeTemplateObject([\"\\n fragment VirtualisedTableParentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableChildRow\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment VirtualisedTableParentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableChildRow\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), VirtualisedTableCellFragmentDoc, VirtualisedTableHeadersFragmentDoc, VirtualisedTableChildRowFragmentDoc);\nvar templateObject_1$2h;\nvar VirtualisedTableGrandparentRowFragmentDoc = gql(templateObject_1$2i || (templateObject_1$2i = __makeTemplateObject([\"\\n fragment VirtualisedTableGrandparentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n rows {\\n ...VirtualisedTableParentRow\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment VirtualisedTableGrandparentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n rows {\\n ...VirtualisedTableParentRow\\n }\\n}\\n \", \"\\n\", \"\"])), VirtualisedTableCellFragmentDoc, VirtualisedTableParentRowFragmentDoc);\nvar templateObject_1$2i;\nvar TableFragmentDoc = gql(templateObject_1$2j || (templateObject_1$2j = __makeTemplateObject([\"\\n fragment Table on Table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableGrandparentRow\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment Table on Table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableGrandparentRow\\n }\\n}\\n \", \"\\n\", \"\"])), VirtualisedTableHeadersFragmentDoc, VirtualisedTableGrandparentRowFragmentDoc);\nvar templateObject_1$2j;\nvar PaginationFragmentDoc = gql(templateObject_1$2k || (templateObject_1$2k = __makeTemplateObject([\"\\n fragment Pagination on PageInfo {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n}\\n \"], [\"\\n fragment Pagination on PageInfo {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n}\\n \"])));\nvar templateObject_1$2k;\nvar GetTableDocument = gql(templateObject_1$2l || (templateObject_1$2l = __makeTemplateObject([\"\\n query getTable($input: TableInput) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n pagination {\\n ...Pagination\\n subPage\\n subPageSize\\n hasNextSubPage\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n query getTable($input: TableInput) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n pagination {\\n ...Pagination\\n subPage\\n subPageSize\\n hasNextSubPage\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), TableFragmentDoc, PaginationFragmentDoc);\n/**\r\n * __useGetTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetTableQuery(baseOptions) {\n return useQuery(GetTableDocument, baseOptions);\n}\nvar templateObject_1$2l;\nvar ReportTable$1 = function (props) {\n var className = props.className,\n reportTitle = props.reportTitle,\n reportId = props.reportId,\n configuration = props.configuration,\n filters = props.filters,\n onInitialised = props.onInitialised,\n onNavigate = props.onNavigate,\n variant = props.variant,\n showTitleOnTable = props.showTitleOnTable;\n var _a = useReport(),\n configurationFromChart = _a.configurationFromChart,\n filtersFromChart = _a.filtersFromChart,\n quickFilterFromChart = _a.quickFilterFromChart,\n onUpdateQuickFilterFromChart = _a.onUpdateQuickFilterFromChart;\n var createCalibrateDownload = useDownload().createCalibrateDownload;\n // table states:\n var _b = __read(React.useState(), 2),\n activeTable = _b[0],\n setActiveTable = _b[1];\n var _c = __read(React.useState(undefined), 2),\n tableTitle = _c[0],\n setTableTitle = _c[1];\n var _d = __read(React.useState(0), 2),\n receivedRows = _d[0],\n setReceivedRows = _d[1];\n var _e = __read(React.useState(0), 2),\n totalRows = _e[0],\n setTotalRows = _e[1];\n var _f = __read(React.useState(null), 2),\n pagination = _f[0],\n setPagination = _f[1];\n var _g = __read(React.useState(true), 2),\n hasNextPage = _g[0],\n setHasNextPage = _g[1];\n var _h = __read(React.useState(true), 2),\n hasNextSubPage = _h[0],\n setHasNextSubPage = _h[1];\n var _j = __read(React.useState(1), 2),\n activePage = _j[0],\n setActivePage = _j[1];\n var _k = __read(React.useState(1), 2),\n activeSubPage = _k[0],\n setActiveSubPage = _k[1];\n var _l = __read(React.useState(true), 2),\n isLoading = _l[0],\n setIsLoading = _l[1];\n var _m = __read(React.useState(false), 2),\n pauseQuery = _m[0],\n setPauseQuery = _m[1];\n var _o = __read(React.useState(getConfigurations(configuration, configurationFromChart)), 2),\n configurationInput = _o[0],\n setConfigurationInput = _o[1];\n var _p = __read(React.useState(mergeAllFilters(filters, filtersFromChart, quickFilterFromChart)), 2),\n filtersInput = _p[0],\n setFiltersInput = _p[1];\n var pageSize = 1;\n var subPageSize = 50;\n var restartAtRowsBefore = 50;\n var minRowsToLoad = 150;\n // drawer and selected id to inspect:\n var _q = useDrawer(),\n toggleDrawer = _q.toggleDrawer,\n setDrawerState = _q.setDrawerState,\n isOpen = _q.isOpen;\n var drawerName = 'control-page';\n var _r = __read(React.useState(undefined), 2),\n inspectedRow = _r[0],\n setInspectedRow = _r[1];\n var _s = __read(React.useState(undefined), 2),\n controlId = _s[0],\n setControlId = _s[1];\n var _t = __read(React.useState(undefined), 2),\n insightById = _t[0],\n setInsightById = _t[1];\n var _u = __read(React.useState(undefined), 2),\n controlInstanceId = _u[0],\n setControlInstanceId = _u[1];\n var _v = __read(React.useState('overview'), 2),\n selectedTab = _v[0],\n setSelectedTab = _v[1];\n var _w = useGetTableQuery({\n skip: !configurationInput,\n variables: {\n input: {\n id: reportId,\n configuration: configurationInput,\n variant: variant,\n filters: filtersInput,\n pagination: {\n page: activePage,\n pageSize: pageSize,\n subPage: activeSubPage,\n subPageSize: subPageSize\n }\n }\n },\n fetchPolicy: 'no-cache'\n }),\n data = _w.data,\n loading = _w.loading,\n error = _w.error;\n var resetTableStates = function () {\n setActivePage(1);\n setActiveSubPage(1);\n setReceivedRows(0);\n setTotalRows(0);\n setPauseQuery(false);\n setPagination(null);\n setActiveTable(undefined);\n setIsLoading(true);\n setHasNextPage(true);\n setHasNextSubPage(true);\n };\n React.useEffect(function () {\n if (configurationFromChart || configuration) {\n resetTableStates();\n setFiltersInput(mergeAllFilters(filters, filtersFromChart, quickFilterFromChart));\n setConfigurationInput(getConfigurations(configuration, configurationFromChart));\n (data === null || data === void 0 ? void 0 : data.getTable.table) && setActiveTable(data.getTable.table);\n }\n }, [configuration, configurationFromChart, filters, filtersFromChart, quickFilterFromChart]);\n React.useEffect(function () {\n resetTableStates();\n }, [variant]);\n React.useEffect(function () {\n var _a, _b, _c;\n if ((_a = data === null || data === void 0 ? void 0 : data.getTable) === null || _a === void 0 ? void 0 : _a.title) {\n setTableTitle(data.getTable.title);\n }\n if (((_b = data === null || data === void 0 ? void 0 : data.getTable) === null || _b === void 0 ? void 0 : _b.table) && ((_c = data === null || data === void 0 ? void 0 : data.getTable) === null || _c === void 0 ? void 0 : _c.pagination)) {\n var rows_1 = getTableRows(data.getTable.table);\n setReceivedRows(function (currentReceivedRows) {\n return currentReceivedRows + rows_1;\n });\n setActiveTable(function (previousTable) {\n return mergeTables(previousTable, data.getTable.table);\n });\n setPagination(data.getTable.pagination);\n }\n }, [data]);\n React.useEffect(function () {\n if (activeTable) {\n var rows = getTableRows(activeTable);\n setTotalRows(rows);\n }\n }, [activeTable]);\n React.useEffect(function () {\n var _a;\n if (pagination && receivedRows <= minRowsToLoad && !pauseQuery) {\n if (pagination === null || pagination === void 0 ? void 0 : pagination.hasNextSubPage) {\n setActiveSubPage(function (prev) {\n return prev + 1;\n });\n } else if (pagination === null || pagination === void 0 ? void 0 : pagination.hasNextPage) {\n setActivePage(function (prev) {\n return prev + 1;\n });\n setActiveSubPage(1);\n } else {\n setIsLoading(false);\n setPauseQuery(true);\n }\n setHasNextSubPage((_a = pagination === null || pagination === void 0 ? void 0 : pagination.hasNextSubPage) !== null && _a !== void 0 ? _a : false);\n setHasNextPage(pagination === null || pagination === void 0 ? void 0 : pagination.hasNextPage);\n }\n }, [receivedRows, pagination, pauseQuery]);\n React.useEffect(function () {\n if (receivedRows > minRowsToLoad) {\n setPauseQuery(true);\n }\n }, [receivedRows]);\n React.useEffect(function () {\n if (error) {\n setIsLoading(false);\n setPauseQuery(true);\n }\n }, [error]);\n var handleOnItemsRendered = function (item) {\n var currentRowIndexIntoView = item.overscanStopIndex;\n if (totalRows === 0) return;\n if (currentRowIndexIntoView > totalRows - restartAtRowsBefore && pauseQuery) {\n if (hasNextSubPage) {\n setActiveSubPage(activeSubPage + 1);\n setReceivedRows(0);\n setPauseQuery(false);\n setPagination(null);\n } else if (hasNextPage) {\n setActivePage(activePage + 1);\n setActiveSubPage(1);\n setReceivedRows(0);\n setPauseQuery(false);\n setPagination(null);\n }\n }\n };\n var handleCreateDownload = function () {\n var input = {\n title: reportTitle,\n configuration: configurationInput,\n variant: variant,\n filters: filtersInput\n };\n createCalibrateDownload(input);\n };\n var handleInsightByIdChange = function (value) {\n setInsightById(value);\n setControlInstanceId(undefined);\n };\n var handleControlInstanceIdChange = function (value) {\n setControlInstanceId(value);\n };\n var handleInspectRow = function (id, type, tab, businessOrgId, riskInventoryId) {\n if (tab && businessOrgId) {\n setInsightById('BUSINESS_ORG');\n setSelectedTab(tab);\n setControlInstanceId(businessOrgId);\n } else if (tab && riskInventoryId) {\n setInsightById('INDEX');\n setSelectedTab(tab);\n setControlInstanceId(riskInventoryId);\n } else {\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n }\n setControlId(id);\n toggleDrawer(drawerName);\n };\n var handleReset = function () {\n setInspectedRow(undefined);\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n };\n var handleChangeTab = function (tab) {\n setSelectedTab(tab);\n };\n var handleCloseDrawer = function () {\n if (isOpen(drawerName)) {\n handleReset();\n setDrawerState(false, drawerName);\n }\n };\n var renderContent = function () {\n var _a;\n // first query loading:\n if (loading && !activeTable) {\n return /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n });\n }\n // error and not loading:\n if ((error || !activeTable) && !isLoading) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: \"No Data\"\n }\n });\n }\n // no activeTable, no error and not loading:\n if (activeTable && ((_a = activeTable === null || activeTable === void 0 ? void 0 : activeTable.rows) === null || _a === void 0 ? void 0 : _a.length) === 0 && !isLoading) {\n return /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No Matching Results.\",\n message: \"Your applied filters may be too restrictive. Please alter and try again.\"\n });\n }\n // activeTable:\n if (activeTable) {\n var cellsWidths_1 = variant === ITableVariant.Distinct ? distinctCellWidths : instanceCellWidths;\n var getMinRowWidth = function () {\n var _a;\n var cells = (_a = activeTable === null || activeTable === void 0 ? void 0 : activeTable.headers) === null || _a === void 0 ? void 0 : _a.cells;\n if (!cells) return 1000;\n var totalCellsWidths = cells.reduce(function (acc, cell) {\n var width = cellsWidths_1.filter(function (item) {\n return item.key === cell.key;\n });\n if (!width || width.length === 0 || !width[0].minWidth) return acc;\n return acc + width[0].minWidth;\n }, 0);\n return totalCellsWidths || 1000;\n };\n var minRowWidth = getMinRowWidth();\n var grandparent = [{\n key: TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME,\n minWidth: minRowWidth,\n percentage: '100%'\n }];\n return /*#__PURE__*/React.createElement(VirtualisedTable$2, {\n headers: activeTable.headers,\n rows: activeTable.rows,\n cellsWidths: cellsWidths_1,\n grandparentCellWidths: grandparent,\n childCellsWidths: childCellWidths,\n onInitialised: onInitialised,\n minRowWidth: minRowWidth,\n loading: isLoading,\n onNavigate: handleInspectRow,\n onInspect: function (rowId) {\n return setInspectedRow(rowId);\n },\n tableVariant: variant,\n onItemsRendered: handleOnItemsRendered,\n inspectedRow: inspectedRow\n });\n }\n };\n var renderTitle = function () {\n var _a, _b;\n if (((_a = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _a === void 0 ? void 0 : _a.label) && onUpdateQuickFilterFromChart) {\n return /*#__PURE__*/React.createElement(Controls, null, /*#__PURE__*/React.createElement(Text, null, \"Displaying: \"), /*#__PURE__*/React.createElement(Tag, {\n variant: \"default\",\n state: \"selected\",\n onDelete: function () {\n return onUpdateQuickFilterFromChart(undefined);\n }\n }, (_b = quickFilterFromChart.info) === null || _b === void 0 ? void 0 : _b.label));\n }\n var fallbackTitle = 'Table';\n if (error && !isLoading) {\n return /*#__PURE__*/React.createElement(Title$3, {\n size: 2\n }, fallbackTitle);\n }\n return /*#__PURE__*/React.createElement(Title$3, {\n size: 2\n }, showTitleOnTable ? reportTitle : tableTitle || fallbackTitle);\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ReportTable, {\n \"data-testid\": generate([\"report-table \".concat(variant.toLowerCase())], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header$c, null, renderTitle(), /*#__PURE__*/React.createElement(Controls, null, /*#__PURE__*/React.createElement(Download, {\n \"data-testid\": \"download-report-table\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDownload, null);\n },\n label: \"Download\",\n onClick: handleCreateDownload\n }))), renderContent()), /*#__PURE__*/React.createElement(ReportDrawer, {\n drawerName: drawerName,\n controlId: controlId !== null && controlId !== void 0 ? controlId : '',\n controlInstanceId: controlInstanceId,\n insightById: insightById !== null && insightById !== void 0 ? insightById : '',\n selectedTab: selectedTab !== null && selectedTab !== void 0 ? selectedTab : '',\n onCloseDrawer: handleCloseDrawer,\n onNavigate: onNavigate,\n onChangeTab: handleChangeTab,\n onInsightByIdChange: handleInsightByIdChange,\n onControlInstanceIdChange: handleControlInstanceIdChange\n }));\n};\nvar ReportTable$2 = styled(ReportTable$1)(templateObject_1$2m || (templateObject_1$2m = __makeTemplateObject([\"\"], [\"\"])));\nvar ReportDrawer$1 = styled(ReportDrawer)(templateObject_2$P || (templateObject_2$P = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2m, templateObject_2$P;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RefresherBarChart = styled(View)(templateObject_1$2n || (templateObject_1$2n = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar templateObject_1$2n;\nvar RefresherBarChart$1 = function (props) {\n var className = props.className,\n data = props.data,\n showFolders = props.showFolders,\n enableDrillDown = props.enableDrillDown,\n onRowClick = props.onRowClick,\n activeItemId = props.activeItemId,\n setActiveItem = props.setActiveItem,\n showAllRows = props.showAllRows,\n _a = props.orientation,\n orientation = _a === void 0 ? 'horizontal' : _a,\n verticalChartHeight = props.verticalChartHeight,\n fillParentHeight = props.fillParentHeight,\n firstColumnWidth = props.firstColumnWidth,\n largestFirst = props.largestFirst;\n return /*#__PURE__*/React.createElement(RefresherBarChart, {\n \"data-testid\": generate(['refresher-bar-chart'], props),\n className: className\n }, orientation === 'horizontal' ? ( /*#__PURE__*/React.createElement(RefresherChart, {\n enableDrillDown: enableDrillDown,\n id: (data === null || data === void 0 ? void 0 : data.id) || 'refresher-chart-id',\n data: data,\n onRowClick: onRowClick,\n showAllRows: showAllRows,\n showFolders: showFolders,\n activeItemId: activeItemId,\n setActiveItem: function (item) {\n return setActiveItem && setActiveItem(item);\n },\n rowHeight: \"small\",\n initialSortField: {\n name: 'placeholder-sort-field',\n direction: ISortDirection.Asc\n },\n fillParentHeight: fillParentHeight,\n firstColumnWidth: firstColumnWidth,\n largestFirst: largestFirst\n })) : ( /*#__PURE__*/React.createElement(VerticalRefresherChart, {\n enableDrillDown: enableDrillDown,\n id: (data === null || data === void 0 ? void 0 : data.id) || 'vertical-refresher-chart-id',\n data: data,\n onRowClick: onRowClick,\n showFolders: showFolders,\n activeItemId: activeItemId,\n setActiveItem: function (item) {\n return setActiveItem && setActiveItem(item);\n },\n chartHeight: verticalChartHeight,\n fillParentHeight: fillParentHeight,\n largestFirst: largestFirst\n })));\n};\nvar RefresherBarChart$2 = styled(RefresherBarChart$1)(templateObject_1$2o || (templateObject_1$2o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2o;\nvar ReportChart = styled(View)(templateObject_1$2p || (templateObject_1$2p = __makeTemplateObject([\"\"], [\"\"])));\nvar LoadingChartWrapper = styled(View)(templateObject_2$Q || (templateObject_2$Q = __makeTemplateObject([\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"], [\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(90);\n}, function (p) {\n return p.theme.spacing.getSize(30);\n});\nvar ChartCard = styled(Card$1)(templateObject_3$z || (templateObject_3$z = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar FlexWrapper = styled(View)(templateObject_4$v || (templateObject_4$v = __makeTemplateObject([\"\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n\"], [\"\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n\"])));\nvar AlertWrapper$2 = styled(View)(templateObject_5$o || (templateObject_5$o = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$2p, templateObject_2$Q, templateObject_3$z, templateObject_4$v, templateObject_5$o;\nvar TableRefresherBarChartFragmentFragmentDoc = gql(templateObject_1$2q || (templateObject_1$2q = __makeTemplateObject([\"\\n fragment TableRefresherBarChartFragment on TableRefresherBarChart {\\n id\\n chartTitle\\n data {\\n id\\n name\\n showName\\n secondaryValue {\\n text\\n isAcin\\n }\\n values {\\n key\\n name\\n total\\n percentage\\n id\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n info {\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n negativeKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n positiveKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n valueHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n secondaryHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n }\\n\"], [\"\\n fragment TableRefresherBarChartFragment on TableRefresherBarChart {\\n id\\n chartTitle\\n data {\\n id\\n name\\n showName\\n secondaryValue {\\n text\\n isAcin\\n }\\n values {\\n key\\n name\\n total\\n percentage\\n id\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n info {\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n negativeKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n positiveKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n valueHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n secondaryHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n }\\n\"])));\nvar templateObject_1$2q;\nvar GetChartDocument = gql(templateObject_1$2r || (templateObject_1$2r = __makeTemplateObject([\"\\n query getChart($input: ChartInput!) {\\n getChart(input: $input) {\\n title\\n charts {\\n ... on TableRefresherBarChart {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n breadcrumb {\\n id\\n label\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n pagination {\\n hasNextPage\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getChart($input: ChartInput!) {\\n getChart(input: $input) {\\n title\\n charts {\\n ... on TableRefresherBarChart {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n breadcrumb {\\n id\\n label\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n pagination {\\n hasNextPage\\n }\\n }\\n}\\n \", \"\"])), TableRefresherBarChartFragmentFragmentDoc);\n/**\r\n * __useGetChartQuery__\r\n *\r\n * To run a query within a React component, call `useGetChartQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetChartQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetChartQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetChartQuery(baseOptions) {\n return useQuery(GetChartDocument, baseOptions);\n}\nvar templateObject_1$2r;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportChartTableHeader = styled(View)(templateObject_1$2s || (templateObject_1$2s = __makeTemplateObject([\"\\n display: flex;\\n justify-content: flex-end;\\n margin-bottom: \", \";\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: flex-end;\\n margin-bottom: \", \";\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Actions$1 = styled(View)(templateObject_2$R || (templateObject_2$R = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"])));\nvar ShowAllButton$1 = styled(Button)(templateObject_3$A || (templateObject_3$A = __makeTemplateObject([\"\\n margin-right: \", \";\\n\\n & path {\\n fill: \", \";\\n }\\n\"], [\"\\n margin-right: \", \";\\n\\n & path {\\n fill: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n});\nvar Download$1 = styled(IconButton)(templateObject_4$w || (templateObject_4$w = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$2s, templateObject_2$R, templateObject_3$A, templateObject_4$w;\nvar ChartTableToggle = function (props) {\n var onClick = props.onClick,\n activeIds = props.activeIds,\n disableTableOption = props.disableTableOption;\n var items = __spreadArray([{\n id: 'chart',\n icon: function () {\n return /*#__PURE__*/React.createElement(AnalyticsBarsHorizontal, {\n size: \"default\"\n });\n },\n label: 'Horizontal Chart View'\n }, {\n id: 'vertical-chart',\n icon: function () {\n return /*#__PURE__*/React.createElement(AnalyticsBars, {\n size: \"default\"\n });\n },\n label: 'Vertical Chart View'\n }], __read(disableTableOption ? [] : [{\n id: 'table',\n icon: function () {\n return /*#__PURE__*/React.createElement(IconTable, {\n size: \"default\"\n });\n },\n label: 'Table View'\n }]), false);\n return /*#__PURE__*/React.createElement(Toolbar, {\n \"data-testid\": \"chart-table-toggle\",\n activeIds: activeIds,\n onClick: onClick,\n items: items\n });\n};\nvar ReportChartTableHeader$1 = function (props) {\n var className = props.className,\n loading = props.loading,\n showAllRows = props.showAllRows,\n setShowAllRows = props.setShowAllRows,\n onToggleChartTable = props.onToggleChartTable,\n onDownload = props.onDownload,\n hideChartActions = props.hideChartActions,\n activeId = props.activeId,\n hideShowAllRows = props.hideShowAllRows,\n disableTableOption = props.disableTableOption;\n var onUpdateQuickFilterFromChart = useReport().onUpdateQuickFilterFromChart;\n var handleToggle = function (id) {\n if (onToggleChartTable) {\n onUpdateQuickFilterFromChart(undefined);\n onToggleChartTable(id);\n }\n };\n return /*#__PURE__*/React.createElement(ReportChartTableHeader, {\n \"data-testid\": generate(['report-chart-table-header'], props),\n className: className\n }, !hideChartActions && ( /*#__PURE__*/React.createElement(Actions$1, {\n \"data-testid\": generate(['report-chart-table-header-actions'])\n }, !hideShowAllRows && ( /*#__PURE__*/React.createElement(ShowAllButton$1, {\n \"data-testid\": \"rows-toggle\",\n icon: function () {\n return showAllRows ? /*#__PURE__*/React.createElement(IconArrowPushUp, null) : /*#__PURE__*/React.createElement(IconArrowPushDown, null);\n },\n variant: \"borderless\",\n label: showAllRows ? 'Show Fewer Rows' : 'Show All Rows',\n onClick: function () {\n return setShowAllRows && setShowAllRows(!showAllRows);\n },\n disabled: loading\n })), onToggleChartTable && ( /*#__PURE__*/React.createElement(ChartTableToggle, {\n activeIds: [activeId],\n onClick: handleToggle,\n disableTableOption: disableTableOption\n })), /*#__PURE__*/React.createElement(Download$1, {\n \"data-testid\": activeId === 'table' ? 'download-report-table' : 'download-report-chart',\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDownload, null);\n },\n label: activeId === 'table' ? 'Download Table' : 'Download Chart',\n onClick: onDownload,\n variant: \"state\",\n disabled: loading\n }))));\n};\nvar ReportChartTableHeader$2 = styled(ReportChartTableHeader$1)(templateObject_1$2t || (templateObject_1$2t = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2t;\nvar Description$2 = styled(Text$1)(templateObject_1$2u || (templateObject_1$2u = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ConfigList = styled(Text$1)(templateObject_2$S || (templateObject_2$S = __makeTemplateObject([\"\"], [\"\"])));\nvar Container = styled(View)(templateObject_3$B || (templateObject_3$B = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Header$d = styled(View)(templateObject_4$x || (templateObject_4$x = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Filter = styled(View)(templateObject_5$p || (templateObject_5$p = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterTitle = styled(Description$2)(templateObject_6$j || (templateObject_6$j = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterList = styled(ConfigList)(templateObject_7$f || (templateObject_7$f = __makeTemplateObject([\"\"], [\"\"])));\nvar Italic = styled(Text$1)(templateObject_8$b || (templateObject_8$b = __makeTemplateObject([\"\\n font-style: italic;\\n\"], [\"\\n font-style: italic;\\n\"])));\nvar ChartImageInfo = styled(View)(templateObject_10$9 || (templateObject_10$9 = __makeTemplateObject([\"\\n padding-top: \", \";\\n margin-top: \", \";\\n\\n \", \"\\n\"], [\"\\n padding-top: \", \";\\n margin-top: \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.showSeparator && css(templateObject_9$b || (templateObject_9$b = __makeTemplateObject([\"\\n border-top: 1px solid \", \";\\n \"], [\"\\n border-top: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n});\nvar templateObject_1$2u, templateObject_2$S, templateObject_3$B, templateObject_4$x, templateObject_5$p, templateObject_6$j, templateObject_7$f, templateObject_8$b, templateObject_9$b, templateObject_10$9;\nvar ChartImageInfo$1 = function (props) {\n var configList = props.configList,\n showConfig = props.showConfig,\n filterList = props.filterList,\n showFilters = props.showFilters,\n showSeparator = props.showSeparator;\n var showFiltersApplied = !!((filterList === null || filterList === void 0 ? void 0 : filterList.count) && filterList.count > 0);\n if (showConfig || showFilters) {\n return /*#__PURE__*/React.createElement(ChartImageInfo, {\n showSeparator: showSeparator\n }, showConfig && ( /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Description$2, {\n inline: true,\n weight: 600\n }, \"Report Configuration |\"), /*#__PURE__*/React.createElement(ConfigList, {\n inline: true\n }, configList))), showFilters && ( /*#__PURE__*/React.createElement(Container, null, showFiltersApplied && ( /*#__PURE__*/React.createElement(Header$d, null, /*#__PURE__*/React.createElement(Text$1, {\n weight: 600\n }, filterList === null || filterList === void 0 ? void 0 : filterList.count, \" Filters Applied:\"))), filterList === null || filterList === void 0 ? void 0 : filterList.filterGroups.map(function (group, index) {\n return /*#__PURE__*/React.createElement(Filter, {\n key: index\n }, /*#__PURE__*/React.createElement(FilterTitle, {\n inline: true\n }, group.title, \":\"), /*#__PURE__*/React.createElement(FilterList, {\n inline: true,\n weight: 600\n }, group.filters));\n }))));\n }\n return null;\n};\nvar ReportChart$1 = function (props) {\n var _a, _b, _c, _d;\n var className = props.className,\n configuration = props.configuration,\n filters = props.filters,\n onToggleChartTable = props.onToggleChartTable,\n filterError = props.filterError,\n _e = props.orientation,\n orientation = _e === void 0 ? 'horizontal' : _e,\n openPreview = props.openPreview,\n variant = props.variant;\n var _f = useReport(),\n configurationFromChart = _f.configurationFromChart,\n filtersFromChart = _f.filtersFromChart,\n quickFilterFromChart = _f.quickFilterFromChart,\n currentBreadcrumbs = _f.currentBreadcrumbs,\n formattedBreadcrumbs = _f.formattedBreadcrumbs,\n onUpdateQuickFilterFromChart = _f.onUpdateQuickFilterFromChart,\n onUpdateCurrentBreadcrumbs = _f.onUpdateCurrentBreadcrumbs,\n onUpdateActiveLevel = _f.onUpdateActiveLevel,\n onUpdateIncomingFilters = _f.onUpdateIncomingFilters,\n onUpdateIncomingConfiguration = _f.onUpdateIncomingConfiguration,\n onUpdateChartHasData = _f.onUpdateChartHasData,\n onUpdateChartError = _f.onUpdateChartError,\n onUpdateFormattedBreadcrumbs = _f.onUpdateFormattedBreadcrumbs;\n var _g = useDownloadImage(),\n onUpdateShowPreview = _g.onUpdateShowPreview,\n showPreview = _g.showPreview;\n var handleToggle = function (id) {\n if (onToggleChartTable) {\n onUpdateQuickFilterFromChart(undefined);\n onToggleChartTable(id);\n }\n };\n var _h = __read(React.useState([]), 2),\n charts = _h[0],\n setCharts = _h[1];\n var _j = __read(React.useState(0), 1),\n visibleChart = _j[0];\n var _k = __read(React.useState(false), 2),\n showAllRows = _k[0],\n setShowAllRows = _k[1];\n var _l = __read(React.useState(true), 2),\n showConfig = _l[0],\n setShowConfig = _l[1];\n var _m = __read(React.useState(true), 2),\n showFilters = _m[0],\n setShowFilters = _m[1];\n var _o = useGetChartQuery({\n variables: {\n input: {\n configuration: configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration,\n filters: filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters,\n breadcrumb: formattedBreadcrumbs,\n variant: variant\n }\n },\n fetchPolicy: 'no-cache'\n }),\n data = _o.data,\n loading = _o.loading,\n error = _o.error;\n var noCharts = !charts || !loading && charts && charts.length === 0;\n var noChartRows = !loading && charts && ((_b = (_a = charts[0]) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.length) === 0;\n var showFolders = getShowFolders((_c = data === null || data === void 0 ? void 0 : data.getChart) === null || _c === void 0 ? void 0 : _c.charts);\n var enableDrillDown = getEnableDrillDown(configuration);\n React.useEffect(function () {\n var availableCharts = data === null || data === void 0 ? void 0 : data.getChart.charts;\n if (!charts) {\n onUpdateChartHasData(false);\n }\n if (error) {\n onUpdateChartError(error);\n }\n if (availableCharts && availableCharts.length > 0) {\n setCharts(availableCharts);\n }\n onUpdateCurrentBreadcrumbs((data === null || data === void 0 ? void 0 : data.getChart.breadcrumb) || undefined);\n }, [data]);\n var configList = transformConfigurationIntoList(configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration);\n var filterList = transformFiltersIntoList(filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters);\n var selectedChart = charts[visibleChart];\n var renderChartForDownload = function () {\n var _a;\n return /*#__PURE__*/React.createElement(DownloadImagePreview, {\n showPreview: showPreview || openPreview,\n fileName: getFileName(data === null || data === void 0 ? void 0 : data.getChart.title),\n configurationOptions: [/*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-configuration-toggle is-checked--\".concat(showConfig),\n isChecked: showConfig,\n onChange: function () {\n return setShowConfig(!showConfig);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the report options that you used to build this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Report Configuration\"));\n }\n }), /*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-filters-toggle is-checked--\".concat(showFilters),\n isChecked: showFilters,\n onChange: function () {\n return setShowFilters(!showFilters);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the list of filters currently applied to this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Applied Filters\"));\n }\n })]\n }, /*#__PURE__*/React.createElement(RefresherBarChart$2, {\n showAllRows: true,\n data: selectedChart,\n showFolders: showFolders,\n enableDrillDown: enableDrillDown,\n onRowClick: handleRowClick,\n activeItemId: ((_a = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _a === void 0 ? void 0 : _a.id) || undefined,\n setActiveItem: onUpdateQuickFilterFromChart,\n orientation: orientation,\n verticalChartHeight: 600\n }), /*#__PURE__*/React.createElement(ChartImageInfo$1, {\n configList: configList,\n showConfig: showConfig,\n filterList: filterList,\n showFilters: showFilters,\n showSeparator: true\n }));\n };\n var handleRowClick = function (item) {\n var _a, _b;\n onUpdateActiveLevel(undefined);\n /*\r\n Removed '&& levels' from condition in if statement\r\n Expecting 'levels' is an assumption that the feature will be available for every hierarchy report\r\n */\n if (item && enableDrillDown) {\n onUpdateIncomingFilters(((_a = item.info) === null || _a === void 0 ? void 0 : _a.filters) || undefined);\n onUpdateIncomingConfiguration(((_b = item.info) === null || _b === void 0 ? void 0 : _b.configuration) || undefined);\n onUpdateQuickFilterFromChart(undefined);\n onUpdateFormattedBreadcrumbs(currentBreadcrumbs);\n }\n };\n var renderContent = function () {\n var renderChart = function () {\n var _a;\n if (filterError) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: filterError.name,\n message: \"\".concat(filterError.message, \" \").concat(filterError.cause)\n }\n });\n }\n if (error) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: 'No chart data available.',\n message: 'Please contact your customer services representative for more information.'\n }\n });\n }\n if (noCharts) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n noData: {\n title: 'No chart grouping selected.',\n message: 'Please group controls by risk, control type, control frequency, or another attribute to view the chart.'\n }\n });\n }\n if (noChartRows) {\n return /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No Matching Results.\",\n message: \"Your applied filters may be too restrictive. Please alter and try again.\"\n });\n }\n switch (selectedChart.__typename) {\n default:\n case 'TableRefresherBarChart':\n {\n return /*#__PURE__*/React.createElement(RefresherBarChart$2, {\n data: selectedChart,\n showFolders: showFolders,\n enableDrillDown: enableDrillDown,\n onRowClick: handleRowClick,\n activeItemId: ((_a = quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.info) === null || _a === void 0 ? void 0 : _a.id) || undefined,\n setActiveItem: onUpdateQuickFilterFromChart,\n showAllRows: showAllRows,\n orientation: orientation,\n verticalChartHeight: 480\n });\n }\n }\n };\n return /*#__PURE__*/React.createElement(FlexWrapper, null, renderChartForDownload(), /*#__PURE__*/React.createElement(ReportChartTableHeader$2, {\n activeId: orientation === 'vertical' ? 'vertical-chart' : 'chart',\n loading: loading,\n onDownload: function () {\n return onUpdateShowPreview(!showPreview);\n },\n showAllRows: showAllRows,\n setShowAllRows: function () {\n return setShowAllRows(!showAllRows);\n },\n onToggleChartTable: handleToggle,\n hideShowAllRows: orientation === 'vertical',\n disableTableOption: disableTableOption(configuration)\n }), renderChart());\n };\n return /*#__PURE__*/React.createElement(ReportChart, {\n \"data-testid\": generate(['report-chart'], props),\n className: className\n }, loading ? ( /*#__PURE__*/React.createElement(LoadingChartWrapper, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))) : ( /*#__PURE__*/React.createElement(ChartCard, {\n \"data-testid\": generate(['report-chart-holder'], props),\n className: className\n }, renderContent(), ((_d = data === null || data === void 0 ? void 0 : data.getChart.pagination) === null || _d === void 0 ? void 0 : _d.hasNextPage) && ( /*#__PURE__*/React.createElement(AlertWrapper$2, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"Displaying limited results.\",\n message: \"Please filter, use the table below, or download data to see more results.\"\n }))))));\n};\nvar ReportChart$2 = styled(ReportChart$1)(templateObject_1$2v || (templateObject_1$2v = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2v;\nvar ReportProvider$1 = styled(ReportProvider)(templateObject_1$2w || (templateObject_1$2w = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2w;\nvar ReportChartAsTable = styled(View)(templateObject_1$2x || (templateObject_1$2x = __makeTemplateObject([\"\"], [\"\"])));\nvar TableCard = styled(Card$1)(templateObject_2$T || (templateObject_2$T = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Header$e = styled(THead)(templateObject_3$C || (templateObject_3$C = __makeTemplateObject([\"\\n position: sticky;\\n\"], [\"\\n position: sticky;\\n\"])));\nvar GroupNameCell = styled(Cell$2)(templateObject_4$y || (templateObject_4$y = __makeTemplateObject([\"\\n padding: \", \";\\n height: \", \";\\n\"], [\"\\n padding: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar TableWrapper = styled(Table)(templateObject_6$k || (templateObject_6$k = __makeTemplateObject([\"\\n table-layout: fixed;\\n overflow: scroll;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"], [\"\\n table-layout: fixed;\\n overflow: scroll;\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"])), function (p) {\n return !p.adaptiveHeight && css(templateObject_5$q || (templateObject_5$q = __makeTemplateObject([\"\\n max-height: 200px; // Make this more dynamic\\n \"], [\"\\n max-height: 200px; // Make this more dynamic\\n \"])));\n});\nvar Indicator = styled(View)(templateObject_7$g || (templateObject_7$g = __makeTemplateObject([\"\\n position: absolute;\\n left: \", \";\\n right: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: calc(100% - \", \");\\n content: '';\\n background-color: \", \";\\n border-radius: \", \";\\n\"], [\"\\n position: absolute;\\n left: \", \";\\n right: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: calc(100% - \", \");\\n content: '';\\n background-color: \", \";\\n border-radius: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.dataVisWithMeaning.getValue(p.colorPalette.paletteIndex || undefined, p.colorPalette.shade || undefined).main;\n}, function (p) {\n return p.theme.spacing.borderRadius;\n});\nvar Group = styled(View)(templateObject_8$c || (templateObject_8$c = __makeTemplateObject([\"\\n background-color: \", \";\\n color: \", \";\\n border-radius: \", \";\\n display: block;\\n width: 100%;\\n text-align: center;\\n\"], [\"\\n background-color: \", \";\\n color: \", \";\\n border-radius: \", \";\\n display: block;\\n width: 100%;\\n text-align: center;\\n\"])), function (p) {\n var _a;\n return p.theme.colors.dataVisWithMeaning.getValue(((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || undefined, p.colorPalette.shade || undefined).main;\n}, function (p) {\n var _a;\n return p.theme.colors.dataVisWithMeaning.getValue(((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || undefined, p.colorPalette.shade || undefined).context;\n}, function (p) {\n return p.theme.spacing.borderRadius;\n});\nvar TableBody = styled(TBody)(templateObject_9$c || (templateObject_9$c = __makeTemplateObject([\"\\n display: inline-block;\\n overflow: scroll;\\n width: 100%;\\n\"], [\"\\n display: inline-block;\\n overflow: scroll;\\n width: 100%;\\n\"])));\nvar TableRow$1 = styled(Row$2)(templateObject_10$a || (templateObject_10$a = __makeTemplateObject([\"\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n\"], [\"\\n display: table;\\n table-layout: fixed;\\n width: 100%;\\n\"])));\nvar FlexWrapper$1 = styled(View)(templateObject_11$6 || (templateObject_11$6 = __makeTemplateObject([\"\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n\"], [\"\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n\"])));\nvar LoadingWrapper$5 = styled(View)(templateObject_12$6 || (templateObject_12$6 = __makeTemplateObject([\"\\n position: relative;\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n min-height: 300px;\\n\"], [\"\\n position: relative;\\n flex: 1 1 0%;\\n display: flex;\\n flex-direction: column;\\n min-height: 300px;\\n\"])));\nvar TableCell = styled(Cell$2)(templateObject_13$5 || (templateObject_13$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2x, templateObject_2$T, templateObject_3$C, templateObject_4$y, templateObject_5$q, templateObject_6$k, templateObject_7$g, templateObject_8$c, templateObject_9$c, templateObject_10$a, templateObject_11$6, templateObject_12$6, templateObject_13$5;\nvar ReportChartAsTableCellFragmentDoc = gql(templateObject_1$2y || (templateObject_1$2y = __makeTemplateObject([\"\\n fragment ReportChartAsTableCell on ChartAsTableCell {\\n id\\n key\\n text\\n}\\n \"], [\"\\n fragment ReportChartAsTableCell on ChartAsTableCell {\\n id\\n key\\n text\\n}\\n \"])));\nvar templateObject_1$2y;\nvar ReportChartAsTableHeaderCellFragmentDoc = gql(templateObject_1$2z || (templateObject_1$2z = __makeTemplateObject([\"\\n fragment ReportChartAsTableHeaderCell on ChartAsTableHeaderCell {\\n id\\n key\\n text\\n color {\\n shade\\n paletteIndex\\n }\\n}\\n \"], [\"\\n fragment ReportChartAsTableHeaderCell on ChartAsTableHeaderCell {\\n id\\n key\\n text\\n color {\\n shade\\n paletteIndex\\n }\\n}\\n \"])));\nvar templateObject_1$2z;\nvar ReportChartAsTableBreadcrumbFragmentDoc = gql(templateObject_1$2A || (templateObject_1$2A = __makeTemplateObject([\"\\n fragment ReportChartAsTableBreadcrumb on ChartBreadcrumb {\\n id\\n label\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n}\\n \"], [\"\\n fragment ReportChartAsTableBreadcrumb on ChartBreadcrumb {\\n id\\n label\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n}\\n \"])));\nvar templateObject_1$2A;\nvar GetChartAsTableDocument = gql(templateObject_1$2B || (templateObject_1$2B = __makeTemplateObject([\"\\n query getChartAsTable($input: ChartAsTableInput!) {\\n getChartAsTable(input: $input) {\\n title\\n header {\\n cells {\\n ...ReportChartAsTableCell\\n }\\n groups {\\n name\\n color {\\n paletteIndex\\n shade\\n }\\n cells {\\n ...ReportChartAsTableHeaderCell\\n }\\n }\\n }\\n rows {\\n id\\n cells {\\n ...ReportChartAsTableCell\\n }\\n }\\n sort {\\n field\\n direction\\n }\\n breadcrumb {\\n ...ReportChartAsTableBreadcrumb\\n }\\n pagination {\\n hasNextPage\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n query getChartAsTable($input: ChartAsTableInput!) {\\n getChartAsTable(input: $input) {\\n title\\n header {\\n cells {\\n ...ReportChartAsTableCell\\n }\\n groups {\\n name\\n color {\\n paletteIndex\\n shade\\n }\\n cells {\\n ...ReportChartAsTableHeaderCell\\n }\\n }\\n }\\n rows {\\n id\\n cells {\\n ...ReportChartAsTableCell\\n }\\n }\\n sort {\\n field\\n direction\\n }\\n breadcrumb {\\n ...ReportChartAsTableBreadcrumb\\n }\\n pagination {\\n hasNextPage\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), ReportChartAsTableCellFragmentDoc, ReportChartAsTableHeaderCellFragmentDoc, ReportChartAsTableBreadcrumbFragmentDoc);\n/**\r\n * __useGetChartAsTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetChartAsTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetChartAsTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetChartAsTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetChartAsTableQuery(baseOptions) {\n return useQuery(GetChartAsTableDocument, baseOptions);\n}\nvar templateObject_1$2B;\nvar handleSort = function (key, currentDirection, currentField) {\n var currentlySorted = key === currentField;\n if (currentlySorted) {\n return {\n direction: currentDirection === ISortDirection.Asc ? ISortDirection.Desc : ISortDirection.Asc,\n field: currentField\n };\n } else {\n return {\n direction: ISortDirection.Asc,\n field: key\n };\n }\n};\nvar ReportChartAsTable$1 = function (props) {\n var _a, _b, _c;\n var className = props.className,\n configuration = props.configuration,\n filters = props.filters,\n onToggleChartTable = props.onToggleChartTable,\n filterError = props.filterError,\n variant = props.variant;\n var _d = __read(React.useState(undefined), 2),\n sort = _d[0],\n setSort = _d[1];\n var _e = useReport(),\n configurationFromChart = _e.configurationFromChart,\n filtersFromChart = _e.filtersFromChart,\n onUpdateQuickFilterFromChart = _e.onUpdateQuickFilterFromChart,\n currentBreadcrumbs = _e.currentBreadcrumbs;\n var _f = useDownloadImage(),\n onUpdateShowPreview = _f.onUpdateShowPreview,\n showPreview = _f.showPreview;\n var handleToggle = function (id) {\n if (onToggleChartTable) {\n onUpdateQuickFilterFromChart(undefined);\n onToggleChartTable(id);\n }\n };\n var _g = __read(React.useState(false), 2),\n showAllRows = _g[0],\n setShowAllRows = _g[1];\n var _h = __read(React.useState(true), 2),\n showConfig = _h[0],\n setShowConfig = _h[1];\n var _j = __read(React.useState(true), 2),\n showFilters = _j[0],\n setShowFilters = _j[1];\n var _k = useGetChartAsTableQuery({\n variables: {\n input: {\n configuration: configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration,\n filters: filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters,\n sort: sort,\n breadcrumb: formatBreadcrumbInput(currentBreadcrumbs),\n variant: variant\n }\n },\n fetchPolicy: 'network-only'\n }),\n data = _k.data,\n loading = _k.loading,\n error = _k.error;\n var noTableRows = !loading && ((_b = (_a = data === null || data === void 0 ? void 0 : data.getChartAsTable) === null || _a === void 0 ? void 0 : _a.rows) === null || _b === void 0 ? void 0 : _b.length) === 0 || false;\n var getSortDirection = function (key) {\n return key === (data === null || data === void 0 ? void 0 : data.getChartAsTable.sort.field) ? data.getChartAsTable.sort.direction : undefined;\n };\n var renderTable = function (expanded, preventTruncation) {\n var _a, _b, _c, _d, _e;\n if (data) {\n return /*#__PURE__*/React.createElement(TableWrapper, {\n adaptiveHeight: expanded\n }, /*#__PURE__*/React.createElement(Header$e, null, ((_a = data.getChartAsTable.header) === null || _a === void 0 ? void 0 : _a.groups) && ((_b = data.getChartAsTable.header) === null || _b === void 0 ? void 0 : _b.groups.length) > 0 && ( /*#__PURE__*/React.createElement(TableRow$1, {\n \"data-testid\": \"header-groups-row\"\n }, data.getChartAsTable.header.cells.map(function (cell) {\n return /*#__PURE__*/React.createElement(Cell$2, {\n key: cell.key\n });\n }), data.getChartAsTable.header.groups.map(function (group) {\n var color = group.color,\n cells = group.cells,\n name = group.name;\n return /*#__PURE__*/React.createElement(GroupNameCell, {\n colSpan: cells.length,\n key: group.name\n }, /*#__PURE__*/React.createElement(Group, {\n colorPalette: color\n }, name));\n }))), /*#__PURE__*/React.createElement(TableRow$1, null, (_c = data.getChartAsTable.header) === null || _c === void 0 ? void 0 : _c.cells.map(function (cell, index) {\n return /*#__PURE__*/React.createElement(HeadCell, {\n sortable: true,\n key: cell.key,\n onClick: function () {\n return setSort(handleSort(cell.key, data.getChartAsTable.sort.direction, data.getChartAsTable.sort.field));\n },\n positionRelative: true,\n direction: getSortDirection(cell.key),\n wrapText: preventTruncation,\n \"data-testid\": \"header-\".concat(generateCypressId(cell.key)),\n alignContent: index === 0 ? 'left' : 'right'\n }, cell.text);\n }), ((_d = data.getChartAsTable.header) === null || _d === void 0 ? void 0 : _d.groups) && ((_e = data.getChartAsTable.header) === null || _e === void 0 ? void 0 : _e.groups.map(function (group) {\n return group.cells.map(function (cell, index) {\n var key = cell.key,\n text = cell.text,\n color = cell.color;\n return /*#__PURE__*/React.createElement(HeadCell, {\n sortable: true,\n key: key,\n onClick: function () {\n return setSort(handleSort(key, data.getChartAsTable.sort.direction, data.getChartAsTable.sort.field));\n },\n positionRelative: true,\n direction: getSortDirection(key),\n wrapText: preventTruncation,\n \"data-testid\": \"header-group-\".concat(generateCypressId(key)),\n alignContent: \"right\"\n }, color && ( /*#__PURE__*/React.createElement(Indicator, {\n \"data-testid\": \"indicator-\".concat(generateCypressId(key)),\n colorPalette: color\n })), text);\n });\n })))), /*#__PURE__*/React.createElement(TableBody, null, data.getChartAsTable.rows.map(function (row) {\n return /*#__PURE__*/React.createElement(TableRow$1, {\n key: row.id,\n \"data-testid\": \"table-row\"\n }, row.cells.map(function (cell, index) {\n return /*#__PURE__*/React.createElement(TableCell, {\n alignContent: index > 0 ? 'right' : 'left',\n key: cell.key\n }, cell.text);\n }));\n })));\n }\n return null;\n };\n var renderTableForDownload = function () {\n var _a;\n return /*#__PURE__*/React.createElement(DownloadImagePreview, {\n showPreview: showPreview,\n fileName: getFileName((_a = data === null || data === void 0 ? void 0 : data.getChartAsTable) === null || _a === void 0 ? void 0 : _a.title),\n configurationOptions: [/*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-configuration-toggle is-checked--\".concat(showConfig),\n isChecked: showConfig,\n onChange: function () {\n return setShowConfig(!showConfig);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the report options that you used to build this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Report Configuration\"));\n }\n }), /*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-filters-toggle is-checked--\".concat(showFilters),\n isChecked: showFilters,\n onChange: function () {\n return setShowFilters(!showFilters);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the list of filters currently applied to this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Applied Filters\"));\n }\n })]\n }, renderTable(true, true), /*#__PURE__*/React.createElement(ChartImageInfo$1, {\n showConfig: showConfig,\n configList: transformConfigurationIntoList(configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration),\n filterList: transformFiltersIntoList(filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters),\n showFilters: showFilters\n }));\n };\n var renderContent = function () {\n if (error || filterError) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: 'No table data available.',\n message: 'Please contact your customer services representative for more information.'\n }\n });\n }\n if (noTableRows) {\n return /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No Matching Results.\",\n message: \"Your applied filters may be too restrictive. Please alter and try again.\"\n });\n }\n if (data === null || data === void 0 ? void 0 : data.getChartAsTable) {\n return /*#__PURE__*/React.createElement(FlexWrapper$1, null, renderTableForDownload(), /*#__PURE__*/React.createElement(ReportChartTableHeader$2, {\n activeId: \"table\",\n loading: loading,\n onDownload: function () {\n return onUpdateShowPreview(!showPreview);\n },\n showAllRows: showAllRows,\n setShowAllRows: function () {\n return setShowAllRows(!showAllRows);\n },\n onToggleChartTable: handleToggle\n }), renderTable(showAllRows));\n }\n };\n return /*#__PURE__*/React.createElement(ReportChartAsTable, {\n \"data-testid\": generate(['report-chart-as-table'], props),\n className: className\n }, /*#__PURE__*/React.createElement(TableCard, {\n \"data-testid\": generate(['table-card'], props),\n className: className\n }, loading ? ( /*#__PURE__*/React.createElement(LoadingWrapper$5, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))) : ( /*#__PURE__*/React.createElement(React.Fragment, null, renderContent(), ((_c = data === null || data === void 0 ? void 0 : data.getChartAsTable.pagination) === null || _c === void 0 ? void 0 : _c.hasNextPage) && ( /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"Displaying limited results.\",\n message: \"Please filter, use the table below, or download data to see more results.\"\n }))))));\n};\nvar ReportChartAsTable$2 = styled(ReportChartAsTable$1)(templateObject_1$2C || (templateObject_1$2C = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2C;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportChartTable = styled(View)(templateObject_1$2D || (templateObject_1$2D = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar LoadingChartWrapper$1 = styled(View)(templateObject_2$U || (templateObject_2$U = __makeTemplateObject([\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"], [\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(90);\n}, function (p) {\n return p.theme.spacing.getSize(30);\n});\nvar templateObject_1$2D, templateObject_2$U;\nvar GetChartTableDocument = gql(templateObject_1$2E || (templateObject_1$2E = __makeTemplateObject([\"\\n query getChartTable($input: ChartInput!) {\\n getChartTable(input: $input) {\\n colorPaletteName\\n categories {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n sortable\\n name\\n key\\n direction\\n }\\n valueHeader {\\n sortable\\n name\\n key\\n direction\\n }\\n rows {\\n id\\n isAcin\\n label\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n instances {\\n category\\n value\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n id\\n }\\n }\\n breadcrumb {\\n ...ReportChartAsTableBreadcrumb\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n query getChartTable($input: ChartInput!) {\\n getChartTable(input: $input) {\\n colorPaletteName\\n categories {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n sortable\\n name\\n key\\n direction\\n }\\n valueHeader {\\n sortable\\n name\\n key\\n direction\\n }\\n rows {\\n id\\n isAcin\\n label\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n instances {\\n category\\n value\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n id\\n }\\n }\\n breadcrumb {\\n ...ReportChartAsTableBreadcrumb\\n }\\n }\\n }\\n \", \"\\n\"])), ReportChartAsTableBreadcrumbFragmentDoc);\n/**\r\n * __useGetChartTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetChartTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetChartTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetChartTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetChartTableQuery(baseOptions) {\n return useQuery(GetChartTableDocument, baseOptions);\n}\nvar templateObject_1$2E;\nvar ReportChartTable$1 = function (props) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n var className = props.className,\n configuration = props.configuration,\n filters = props.filters,\n variant = props.variant,\n fillParentHeight = props.fillParentHeight,\n showAllRows = props.showAllRows,\n initialSortField = props.initialSortField;\n var _j = useReport(),\n configurationFromChart = _j.configurationFromChart,\n filtersFromChart = _j.filtersFromChart,\n quickFilterFromChart = _j.quickFilterFromChart,\n currentBreadcrumbs = _j.currentBreadcrumbs,\n formattedBreadcrumbs = _j.formattedBreadcrumbs,\n onUpdateQuickFilterFromChart = _j.onUpdateQuickFilterFromChart,\n onUpdateActiveLevel = _j.onUpdateActiveLevel,\n onUpdateIncomingFilters = _j.onUpdateIncomingFilters,\n onUpdateIncomingConfiguration = _j.onUpdateIncomingConfiguration,\n onUpdateFormattedBreadcrumbs = _j.onUpdateFormattedBreadcrumbs,\n onUpdateCurrentBreadcrumbs = _j.onUpdateCurrentBreadcrumbs;\n var _k = useGetChartTableQuery({\n fetchPolicy: 'no-cache',\n variables: {\n input: {\n configuration: configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration,\n filters: filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters,\n breadcrumb: formattedBreadcrumbs,\n variant: variant\n }\n }\n }),\n data = _k.data,\n error = _k.error,\n loading = _k.loading;\n React.useEffect(function () {\n var _a;\n onUpdateCurrentBreadcrumbs(((_a = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _a === void 0 ? void 0 : _a.breadcrumb) || undefined);\n }, [data]);\n var getShowFolders = function () {\n var _a;\n return ((_a = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _a === void 0 ? void 0 : _a.rows.some(function (row) {\n var _a, _b;\n return !!((_b = (_a = row === null || row === void 0 ? void 0 : row.info) === null || _a === void 0 ? void 0 : _a.configuration) === null || _b === void 0 ? void 0 : _b.length);\n })) || false;\n };\n var enableDrillDown = getEnableDrillDown(configuration);\n var handleRowClick = function (item) {\n var _a, _b;\n onUpdateActiveLevel(undefined);\n onUpdateQuickFilterFromChart(undefined);\n if (item && enableDrillDown) {\n onUpdateIncomingFilters(((_a = item.info) === null || _a === void 0 ? void 0 : _a.filters) || undefined);\n onUpdateIncomingConfiguration(((_b = item.info) === null || _b === void 0 ? void 0 : _b.configuration) || undefined);\n onUpdateQuickFilterFromChart(undefined);\n onUpdateFormattedBreadcrumbs(currentBreadcrumbs);\n }\n };\n var handleBlockClick = function (item) {\n if (item) {\n var shape = {\n key: item.id,\n name: item.id,\n total: item.value,\n info: item.info\n };\n onUpdateQuickFilterFromChart(shape);\n } else {\n onUpdateQuickFilterFromChart(undefined);\n }\n };\n var noData = !loading && !error && (data === null || data === void 0 ? void 0 : data.getChartTable) === null;\n var hasData = !!(!loading && ((_a = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _a === void 0 ? void 0 : _a.rows) && ((_b = data.getChartTable) === null || _b === void 0 ? void 0 : _b.rows.length) > 0);\n if (noData) return null;\n return /*#__PURE__*/React.createElement(ReportChartTable, {\n \"data-testid\": generate(['report-chart-table'], props),\n className: className\n }, loading && ( /*#__PURE__*/React.createElement(LoadingChartWrapper$1, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))), error && /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Server Error\",\n message: error.message\n }), hasData && ((_c = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _c === void 0 ? void 0 : _c.nameHeader) && ((_d = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _d === void 0 ? void 0 : _d.valueHeader) && data.getChartTable.rows && ( /*#__PURE__*/React.createElement(InsightCodeTable, {\n categories: (_e = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _e === void 0 ? void 0 : _e.categories,\n nameHeader: (_f = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _f === void 0 ? void 0 : _f.nameHeader,\n valueHeader: (_g = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _g === void 0 ? void 0 : _g.valueHeader,\n rows: (_h = data === null || data === void 0 ? void 0 : data.getChartTable) === null || _h === void 0 ? void 0 : _h.rows,\n id: \"insight-code-table\",\n onBlockClick: handleBlockClick,\n onRowClick: handleRowClick,\n showLegend: true,\n fillParentHeight: fillParentHeight,\n showAllRows: showAllRows,\n activeItemId: quickFilterFromChart === null || quickFilterFromChart === void 0 ? void 0 : quickFilterFromChart.key,\n showFolders: getShowFolders(),\n initialSortField: initialSortField\n })));\n};\nvar ReportChartTable$2 = styled(ReportChartTable$1)(templateObject_1$2F || (templateObject_1$2F = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2F;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportChartStateManager = styled(View)(templateObject_1$2G || (templateObject_1$2G = __makeTemplateObject([\"\"], [\"\"])));\nvar LoadingFiltersWrapper = styled(View)(templateObject_2$V || (templateObject_2$V = __makeTemplateObject([\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(11);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ChartTools = styled(View)(templateObject_3$D || (templateObject_3$D = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar LevelSelect = styled(Select)(templateObject_4$z || (templateObject_4$z = __makeTemplateObject([\"\\n max-width: \", \";\\n margin-right: \", \";\\n\"], [\"\\n max-width: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(40);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ChartCard$1 = styled(Card$1)(templateObject_5$r || (templateObject_5$r = __makeTemplateObject([\"\\n min-height: \", \";\\n padding: \", \";\\n\"], [\"\\n min-height: \", \";\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(100);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$2G, templateObject_2$V, templateObject_3$D, templateObject_4$z, templateObject_5$r;\nvar GetChartFiltersDocument = gql(templateObject_1$2H || (templateObject_1$2H = __makeTemplateObject([\"\\n query getChartFilters($input: ChartInput!) {\\n getChartFilters(input: $input) {\\n levels {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n }\\n}\\n \"], [\"\\n query getChartFilters($input: ChartInput!) {\\n getChartFilters(input: $input) {\\n levels {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n }\\n}\\n \"])));\n/**\r\n * __useGetChartFiltersQuery__\r\n *\r\n * To run a query within a React component, call `useGetChartFiltersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetChartFiltersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetChartFiltersQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetChartFiltersQuery(baseOptions) {\n return useQuery(GetChartFiltersDocument, baseOptions);\n}\nvar templateObject_1$2H;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportChartSummary = styled(View)(templateObject_1$2I || (templateObject_1$2I = __makeTemplateObject([\"\"], [\"\"])));\nvar LoadingChartWrapper$2 = styled(View)(templateObject_2$W || (templateObject_2$W = __makeTemplateObject([\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"], [\"\\n position: relative;\\n min-height: \", \";\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(90);\n}, function (p) {\n return p.theme.spacing.getSize(30);\n});\nvar Heading = styled(View)(templateObject_3$E || (templateObject_3$E = __makeTemplateObject([\"\\n height: 38px;\\n border: 1px solid \", \";\\n border-width: 1px 0;\\n font-weight: 600;\\n color: \", \";\\n display: flex;\\n align-items: center;\\n margin-bottom: \", \";\\n\"], [\"\\n height: 38px;\\n border: 1px solid \", \";\\n border-width: 1px 0;\\n font-weight: 600;\\n color: \", \";\\n display: flex;\\n align-items: center;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$2I, templateObject_2$W, templateObject_3$E;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ReportChartTableSummary = styled(Card$1)(templateObject_1$2J || (templateObject_1$2J = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ChartWrapper$1 = styled(View)(templateObject_2$X || (templateObject_2$X = __makeTemplateObject([\"\\n display: flex;\\n gap: \", \";\\n\\n \", \" {\\n flex-grow: 1;\\n }\\n\\n \", \" {\\n &:first-child {\\n display: block;\\n }\\n\\n &:not(:first-child) {\\n min-width: \", \";\\n max-width: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n gap: \", \";\\n\\n \", \" {\\n flex-grow: 1;\\n }\\n\\n \", \" {\\n &:first-child {\\n display: block;\\n }\\n\\n &:not(:first-child) {\\n min-width: \", \";\\n max-width: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, ReportChartTable, ReportChartSummary, function (p) {\n return p.theme.spacing.getSize(76);\n}, function (p) {\n return p.theme.spacing.getSize(76);\n});\nvar templateObject_1$2J, templateObject_2$X;\nvar GetChartSummaryDocument = gql(templateObject_1$2K || (templateObject_1$2K = __makeTemplateObject([\"\\n query getChartSummary($input: ChartInput!) {\\n getChartSummary(input: $input) {\\n data {\\n value\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n }\\n\"], [\"\\n query getChartSummary($input: ChartInput!) {\\n getChartSummary(input: $input) {\\n data {\\n value\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetChartSummaryQuery__\r\n *\r\n * To run a query within a React component, call `useGetChartSummaryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetChartSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetChartSummaryQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetChartSummaryQuery(baseOptions) {\n return useQuery(GetChartSummaryDocument, baseOptions);\n}\nvar templateObject_1$2K;\nvar ReportChartSummary$1 = function (props) {\n var className = props.className,\n configuration = props.configuration,\n filters = props.filters,\n variant = props.variant;\n var _a = useGetChartSummaryQuery({\n fetchPolicy: 'no-cache',\n variables: {\n input: {\n configuration: configuration,\n filters: filters,\n variant: variant\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n var hasData = !loading && data && (data === null || data === void 0 ? void 0 : data.getChartSummary.data.length) > 0;\n return /*#__PURE__*/React.createElement(ReportChartSummary, {\n \"data-testid\": generate(['report-chart-summary'], props),\n className: className\n }, loading && ( /*#__PURE__*/React.createElement(LoadingChartWrapper$2, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))), error && /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Server Error\",\n message: error.message\n }), hasData && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Heading, null, \"Total Count\"), /*#__PURE__*/React.createElement(ChartSummary, {\n id: \"chart-summary\",\n data: data.getChartSummary.data\n }))));\n};\nvar ReportChartSummary$2 = styled(ReportChartSummary$1)(templateObject_1$2L || (templateObject_1$2L = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2L;\nvar ReportChartTableAndSummary = function (props) {\n var className = props.className,\n onToggleChartTable = props.onToggleChartTable,\n configuration = props.configuration,\n filters = props.filters,\n filterError = props.filterError,\n variant = props.variant,\n openPreview = props.openPreview;\n var _a = __read(React.useState(false), 2),\n showAllRows = _a[0],\n setShowAllRows = _a[1];\n var _b = useDownloadImage(),\n onUpdateShowPreview = _b.onUpdateShowPreview,\n showPreview = _b.showPreview;\n var _c = useReport(),\n onUpdateQuickFilterFromChart = _c.onUpdateQuickFilterFromChart,\n configurationFromChart = _c.configurationFromChart,\n filtersFromChart = _c.filtersFromChart;\n var _d = __read(React.useState(true), 2),\n showConfig = _d[0],\n setShowConfig = _d[1];\n var _e = __read(React.useState(true), 2),\n showFilters = _e[0],\n setShowFilters = _e[1];\n var handleToggle = function (id) {\n if (onToggleChartTable) {\n onUpdateQuickFilterFromChart(undefined);\n onToggleChartTable(id);\n }\n };\n var configList = transformConfigurationIntoList(configurationFromChart && (configurationFromChart === null || configurationFromChart === void 0 ? void 0 : configurationFromChart.length) > 0 ? configurationFromChart : configuration);\n var filterList = transformFiltersIntoList(filtersFromChart && filtersFromChart.groups && filtersFromChart.groups.length > 0 ? filtersFromChart : filters);\n var renderChartsForDownload = function () {\n return /*#__PURE__*/React.createElement(DownloadImagePreview, {\n showPreview: showPreview || openPreview,\n configurationOptions: [/*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-configuration-toggle is-checked--\".concat(showConfig),\n isChecked: showConfig,\n onChange: function () {\n return setShowConfig(!showConfig);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the report options that you used to build this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Report Configuration\"));\n }\n }), /*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-filters-toggle is-checked--\".concat(showFilters),\n isChecked: showFilters,\n onChange: function () {\n return setShowFilters(!showFilters);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the list of filters currently applied to this report\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"Show Applied Filters\"));\n }\n })]\n }, /*#__PURE__*/React.createElement(ChartWrapper$1, null, /*#__PURE__*/React.createElement(ReportChartTable$2, {\n showAllRows: true,\n filters: filters,\n configuration: configuration,\n variant: variant\n }), /*#__PURE__*/React.createElement(ReportChartSummary$2, {\n filters: filters,\n configuration: configuration,\n variant: variant\n })), /*#__PURE__*/React.createElement(ChartImageInfo$1, {\n configList: configList,\n showConfig: showConfig,\n filterList: filterList,\n showFilters: showFilters,\n showSeparator: true\n }));\n };\n var renderContent = function () {\n var renderCharts = function () {\n if (filterError) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: filterError,\n noData: {\n title: 'No table data available.',\n message: 'Please contact your customer services representative for more information.'\n }\n });\n }\n return /*#__PURE__*/React.createElement(ChartWrapper$1, null, /*#__PURE__*/React.createElement(ReportChartTable$2, {\n showAllRows: showAllRows,\n filters: filters,\n configuration: configuration,\n variant: variant\n }), /*#__PURE__*/React.createElement(ReportChartSummary$2, {\n filters: filters,\n configuration: configuration,\n variant: variant\n }));\n };\n return /*#__PURE__*/React.createElement(FlexWrapper, null, /*#__PURE__*/React.createElement(ReportChartTableHeader$2, {\n activeId: \"table\",\n // loading={loading}\n onDownload: function () {\n return onUpdateShowPreview(!showPreview);\n },\n showAllRows: showAllRows,\n setShowAllRows: function () {\n return setShowAllRows(!showAllRows);\n },\n onToggleChartTable: handleToggle,\n disableTableOption: disableTableOption(configuration)\n }), renderCharts());\n };\n return /*#__PURE__*/React.createElement(ReportChartTableSummary, {\n \"data-testid\": generate(['report-chart-table-and-summary'], props),\n className: className\n }, renderChartsForDownload(), renderContent());\n};\nvar ReportChartTableAndSummary$1 = styled(ReportChartTableAndSummary)(templateObject_1$2M || (templateObject_1$2M = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2M;\nvar ReportChartStateManager$1 = function (props) {\n var className = props.className,\n configuration = props.configuration,\n filters = props.filters,\n variant = props.variant;\n var _a = __read(React.useState('chart'), 2),\n activeView = _a[0],\n setActiveView = _a[1];\n var _b = __read(React.useState(undefined), 2),\n incomingBreadcrumbs = _b[0],\n setIncomingBreadcrumbs = _b[1];\n var _c = __read(React.useState([]), 2),\n cleanedBreadcrumbs = _c[0],\n setCleanedBreadcrumbs = _c[1];\n var _d = useReport(),\n onUpdateQuickFilterFromChart = _d.onUpdateQuickFilterFromChart,\n currentBreadcrumbs = _d.currentBreadcrumbs,\n onUpdateFiltersFromChart = _d.onUpdateFiltersFromChart,\n onUpdateConfigurationFromChart = _d.onUpdateConfigurationFromChart,\n chartError = _d.chartError,\n chartHasData = _d.chartHasData,\n activeLevel = _d.activeLevel,\n onUpdateActiveLevel = _d.onUpdateActiveLevel,\n levels = _d.levels,\n onUpdateLevels = _d.onUpdateLevels,\n incomingFilters = _d.incomingFilters,\n onUpdateIncomingFilters = _d.onUpdateIncomingFilters,\n incomingConfiguration = _d.incomingConfiguration,\n onUpdateIncomingConfiguration = _d.onUpdateIncomingConfiguration,\n quickFilterFromChart = _d.quickFilterFromChart,\n onUpdateCurrentBreadcrumbs = _d.onUpdateCurrentBreadcrumbs,\n onUpdateFormattedBreadcrumbs = _d.onUpdateFormattedBreadcrumbs;\n React.useEffect(function () {\n onUpdateIncomingConfiguration(undefined);\n }, [configuration, onUpdateIncomingConfiguration]); // Have had to add onUpdateIncomingConfiguration as a dep here, this wouldn't have been necessary if the setter lived inside this file.\n // Query to retrieve filters\n var _e = useGetChartFiltersQuery({\n fetchPolicy: 'network-only',\n variables: {\n input: {\n configuration: configuration\n }\n }\n }),\n data = _e.data,\n loading = _e.loading,\n error = _e.error;\n React.useEffect(function () {\n var buildLevels = function () {\n var _a;\n if (data && data.getChartFilters && data.getChartFilters.levels) {\n return ((_a = data === null || data === void 0 ? void 0 : data.getChartFilters.levels) === null || _a === void 0 ? void 0 : _a.filterValues.map(function (item) {\n return {\n value: item.value,\n label: item.label || ''\n };\n })) || [];\n }\n };\n onUpdateLevels(buildLevels());\n }, [data, onUpdateLevels]); // Have had to add onUpdateLevels here, wouldn't have been necessary if the setter lived in this file.\n React.useEffect(function () {\n var newFilters = mergeActiveFiltersAndFilterGroups(filters, incomingFilters, function () {\n return onUpdateCurrentBreadcrumbs(undefined);\n });\n var newConfig = mergeConfigurationWithIncomingConfiguration(configuration, incomingConfiguration);\n onUpdateFiltersFromChart(newFilters);\n onUpdateConfigurationFromChart(newConfig);\n }, [configuration, filters, incomingConfiguration, incomingFilters, incomingBreadcrumbs, onUpdateConfigurationFromChart, onUpdateFiltersFromChart, quickFilterFromChart, onUpdateCurrentBreadcrumbs]);\n React.useEffect(function () {\n if (configuration) {\n onUpdateQuickFilterFromChart(undefined);\n onUpdateActiveLevel(undefined);\n setIncomingBreadcrumbs(currentBreadcrumbs);\n }\n }, [configuration, filters, onUpdateQuickFilterFromChart, onUpdateActiveLevel, currentBreadcrumbs]);\n React.useEffect(function () {\n if (currentBreadcrumbs) {\n var cleaned = currentBreadcrumbs === null || currentBreadcrumbs === void 0 ? void 0 : currentBreadcrumbs.filter(function (value, index, self) {\n return index === self.findIndex(function (crumb) {\n return crumb.id === value.id;\n });\n });\n setCleanedBreadcrumbs(cleaned);\n }\n }, [currentBreadcrumbs]);\n var handleBreadcrumbClick = function (item) {\n if (currentBreadcrumbs) {\n // Find the index\n var breadcumbsIndex = cleanedBreadcrumbs === null || cleanedBreadcrumbs === void 0 ? void 0 : cleanedBreadcrumbs.findIndex(function (breadcrumb) {\n return breadcrumb.id === item.id;\n });\n var newBreadcrumbs = cleanedBreadcrumbs === null || cleanedBreadcrumbs === void 0 ? void 0 : cleanedBreadcrumbs.slice(0, breadcumbsIndex + 1);\n onUpdateCurrentBreadcrumbs(newBreadcrumbs);\n onUpdateFormattedBreadcrumbs(newBreadcrumbs);\n }\n var target = currentBreadcrumbs === null || currentBreadcrumbs === void 0 ? void 0 : currentBreadcrumbs.find(function (breadcrumb) {\n return breadcrumb.id === item.id;\n });\n var incomingFilters = (target === null || target === void 0 ? void 0 : target.filters) || undefined;\n var incomingConfiguration = (target === null || target === void 0 ? void 0 : target.configuration) || undefined;\n onUpdateIncomingFilters(incomingFilters);\n onUpdateIncomingConfiguration(incomingConfiguration);\n onUpdateActiveLevel(undefined);\n onUpdateQuickFilterFromChart(undefined);\n };\n var handleActiveLevel = function (selection) {\n var _a;\n var incomingConfiguration = getIncomingConfiguration(selection, (_a = data === null || data === void 0 ? void 0 : data.getChartFilters.levels) === null || _a === void 0 ? void 0 : _a.filterValues);\n onUpdateIncomingConfiguration(incomingConfiguration);\n onUpdateIncomingFilters(undefined);\n setIncomingBreadcrumbs(undefined);\n onUpdateQuickFilterFromChart(undefined);\n onUpdateCurrentBreadcrumbs(undefined);\n onUpdateActiveLevel(selection);\n };\n var renderActiveView = function () {\n switch (activeView) {\n default:\n case 'chart':\n return /*#__PURE__*/React.createElement(ReportChart$2, {\n configuration: configuration,\n filters: filters,\n onToggleChartTable: function (id) {\n return setActiveView(id);\n },\n filterError: error,\n orientation: \"horizontal\",\n variant: variant\n });\n case 'vertical-chart':\n return /*#__PURE__*/React.createElement(ReportChart$2, {\n configuration: configuration,\n filters: filters,\n onToggleChartTable: function (id) {\n return setActiveView(id);\n },\n filterError: error,\n orientation: \"vertical\",\n variant: variant\n });\n case 'table':\n return /*#__PURE__*/React.createElement(ReportChartTableAndSummary$1, {\n configuration: configuration,\n filters: filters,\n onToggleChartTable: function (id) {\n return setActiveView(id);\n },\n filterError: error,\n variant: variant\n });\n }\n };\n return /*#__PURE__*/React.createElement(ReportChartStateManager, {\n \"data-testid\": generate(['report-chart-state-manager'], props),\n className: className\n }, /*#__PURE__*/React.createElement(DownloadImageProvider, null, loading ? ( /*#__PURE__*/React.createElement(ChartTools, null, /*#__PURE__*/React.createElement(LoadingFiltersWrapper, null, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n })))) : (levels || currentBreadcrumbs) && ( /*#__PURE__*/React.createElement(ChartTools, null, levels && ( /*#__PURE__*/React.createElement(LevelSelect, {\n value: activeLevel || null,\n options: levels,\n onChange: handleActiveLevel,\n placeholder: \"Select Level\",\n disabled: !!(chartError || !chartHasData || levels.length < 2)\n })), currentBreadcrumbs && ( /*#__PURE__*/React.createElement(Breadcrumbs, {\n items: cleanedBreadcrumbs.map(function (item) {\n return {\n id: item.id,\n label: item.label || ''\n };\n }),\n onClick: handleBreadcrumbClick\n })))), renderActiveView()));\n};\nvar ReportChartStateManager$2 = styled(ReportChartStateManager$1)(templateObject_1$2N || (templateObject_1$2N = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2N;\nvar typePolicies = {\n TableResult: {\n fields: {\n table: {\n keyArgs: false,\n merge: function (existing, incoming) {\n if (existing === void 0) {\n existing = {};\n }\n if (existing.rows) {\n return __assign(__assign({}, incoming), {\n headers: incoming.headers,\n rows: existing.rows && __spreadArray(__spreadArray([], __read(existing.rows), false), __read(incoming.rows), false)\n });\n }\n return incoming;\n }\n }\n }\n }\n};\nvar pageBackground$2 = themeHelpers.pageBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar DataQualityPage = styled(View)(templateObject_1$2O || (templateObject_1$2O = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), function (p) {\n return pageBackground$2(p.activeTheme);\n});\nvar Wrapper$2 = styled(View)(templateObject_2$Y || (templateObject_2$Y = __makeTemplateObject([\"\\n padding: \", \";\\n height: 100%;\\n\"], [\"\\n padding: \", \";\\n height: 100%;\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar DataQualityTab = styled(Card$1)(templateObject_3$F || (templateObject_3$F = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: stretch;\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: stretch;\\n\"])));\nvar DataQualityTabContent = styled(View)(templateObject_4$A || (templateObject_4$A = __makeTemplateObject([\"\\n display: flex;\\n height: 100%;\\n width: 100%;\\n overflow: scroll;\\n\"], [\"\\n display: flex;\\n height: 100%;\\n width: 100%;\\n overflow: scroll;\\n\"])));\nvar DataQualityTabContentBlock = styled(View)(templateObject_5$s || (templateObject_5$s = __makeTemplateObject([\"\\n width: 50%;\\n &:first-child {\\n padding-right: \", \";\\n }\\n &:nth-child(2) {\\n padding-left: \", \";\\n }\\n\"], [\"\\n width: 50%;\\n &:first-child {\\n padding-right: \", \";\\n }\\n &:nth-child(2) {\\n padding-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2O, templateObject_2$Y, templateObject_3$F, templateObject_4$A, templateObject_5$s;\n\n// This named style should be the wrapper for the component i.e. the module\nvar TabHeader = styled(View)(templateObject_1$2P || (templateObject_1$2P = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar TabHeading = styled(Heading$1)(templateObject_2$Z || (templateObject_2$Z = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Description$3 = styled(Text$1)(templateObject_3$G || (templateObject_3$G = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ErrorBox = styled(ErrorMessage)(templateObject_4$B || (templateObject_4$B = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$2P, templateObject_2$Z, templateObject_3$G, templateObject_4$B;\nvar TabHeader$1 = function (props) {\n var className = props.className,\n title = props.title,\n description = props.description,\n error = props.error;\n var renderError = function () {\n var hasError = error ? true : false;\n if (hasError) {\n return /*#__PURE__*/React.createElement(ErrorBox, {\n error: error,\n noData: {\n title: 'Service unavailable.',\n message: 'Please try to refresh or come back later.'\n }\n });\n } else return null;\n };\n return /*#__PURE__*/React.createElement(TabHeader, {\n \"data-testid\": generate(['data-quality-tab-header'], props),\n className: className\n }, /*#__PURE__*/React.createElement(TabHeading, {\n size: 3\n }, title), description && /*#__PURE__*/React.createElement(Description$3, {\n key: description\n }, description), renderError());\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar DataQualityOutputRating = styled(View)(templateObject_1$2Q || (templateObject_1$2Q = __makeTemplateObject([\"\\n padding-top: \", \";\\n max-width: \", \";\\n\"], [\"\\n padding-top: \", \";\\n max-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(90);\n});\nvar StyledCard = styled(Card$1)(templateObject_2$_ || (templateObject_2$_ = __makeTemplateObject([\"\\n \", \"\\n margin-bottom: \", \";\\n\"], [\"\\n \", \"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.backgroundColor ? \"background-color: \".concat(p.backgroundColor, \";\") : '';\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar QualityRatingContainer = styled(View)(templateObject_3$H || (templateObject_3$H = __makeTemplateObject([\"\\n margin-top: \", \";\\n display: flex;\\n align-items: center;\\n\"], [\"\\n margin-top: \", \";\\n display: flex;\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar QualityRatingValue = styled(Text$1)(templateObject_4$C || (templateObject_4$C = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2Q, templateObject_2$_, templateObject_3$H, templateObject_4$C;\nvar getRatingColorsFromScore = function (score, colors) {\n var values = {\n rating: score ? _.capitalize(score) : '-'\n };\n if (!score) {\n return values;\n }\n values.foreground = colors.primary.getValue(100).main;\n if (score === IControlQualityScore.Unclear) {\n values.background = colors.error.getValue(500).main;\n } else if (score === IControlQualityScore.Clear) {\n values.background = colors.success.getValue(500).main;\n }\n return values;\n};\nvar DataQualityOutputRating$1 = function (props) {\n var className = props.className,\n descriptionQuality = props.descriptionQuality;\n var activeTheme = useThemeProvider().activeTheme;\n var colors = activeTheme.colors;\n var _a = getRatingColorsFromScore(descriptionQuality, colors),\n rating = _a.rating,\n foreground = _a.foreground,\n background = _a.background;\n return /*#__PURE__*/React.createElement(DataQualityOutputRating, {\n \"data-testid\": generate(['data-quality-output-rating'], props),\n className: className\n }, /*#__PURE__*/React.createElement(StyledCard, {\n backgroundColor: background\n }, /*#__PURE__*/React.createElement(Text$1, {\n color: foreground\n }, \"Acin Control Description Quality\"), /*#__PURE__*/React.createElement(QualityRatingContainer, null, /*#__PURE__*/React.createElement(IconDumbbell, {\n size: \"large\",\n color: foreground\n }), /*#__PURE__*/React.createElement(QualityRatingValue, {\n size: 3,\n color: foreground\n }, rating))));\n};\nvar DataQualityOutputRating$2 = styled(DataQualityOutputRating$1)(templateObject_1$2R || (templateObject_1$2R = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2R;\nvar DataQualityInputText = styled(View)(templateObject_1$2S || (templateObject_1$2S = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar InputTextarea = styled(Textarea)(templateObject_2$$ || (templateObject_2$$ = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n flex: 1 0 auto;\\n min-height: 200px;\\n\"], [\"\\n margin-bottom: \", \";\\n flex: 1 0 auto;\\n min-height: 200px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar StyledLabel = styled(Label)(templateObject_3$I || (templateObject_3$I = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar GenerateButtonContainer = styled(View)(templateObject_4$D || (templateObject_4$D = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar FormatSelect = styled(Select)(templateObject_5$t || (templateObject_5$t = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar AddNewControlButton = styled(Button)(templateObject_6$l || (templateObject_6$l = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n padding-left: 0;\\n\"], [\"\\n margin-bottom: \", \";\\n padding-left: 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ScrollableWrapper = styled('div')(templateObject_7$h || (templateObject_7$h = __makeTemplateObject([\"\\n flex: 1;\\n overflow-y: auto;\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n flex: 1;\\n overflow-y: auto;\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar templateObject_1$2S, templateObject_2$$, templateObject_3$I, templateObject_4$D, templateObject_5$t, templateObject_6$l, templateObject_7$h;\nvar DataQualityInputText$1 = function (props) {\n var className = props.className,\n selectOptions = props.selectOptions,\n selectedOption = props.selectedOption,\n handleSelectChange = props.handleSelectChange,\n label = props.label,\n text = props.text,\n onGenerate = props.onGenerate,\n onChange = props.onChange,\n isDisabled = props.isDisabled,\n isLoading = props.isLoading,\n hasSecondaryAction = props.hasSecondaryAction,\n handleSecondaryAction = props.handleSecondaryAction,\n secondaryActionLabel = props.secondaryActionLabel,\n hasMultipleInputBoxes = props.hasMultipleInputBoxes;\n var scrollableWrapperRef = React.useRef(null);\n React.useEffect(function () {\n if (scrollableWrapperRef.current) {\n scrollableWrapperRef.current.scrollTop = scrollableWrapperRef.current.scrollHeight;\n }\n }, [text]);\n var renderFormatSelect = function () {\n if (selectOptions && selectOptions.length > 1) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledLabel, null, \"Desired Control Description Structure\"), /*#__PURE__*/React.createElement(FormatSelect, {\n value: selectedOption || '',\n options: selectOptions,\n onChange: function (optionValue) {\n return handleSelectChange && handleSelectChange(optionValue.toString());\n }\n }));\n } else return null;\n };\n var addInput = function () {\n onChange(__spreadArray(__spreadArray([], __read(text), false), [''], false));\n };\n var handleInputChange = function (index, value) {\n var newTexts = __spreadArray([], __read(text), false);\n newTexts[index] = value;\n onChange(newTexts);\n };\n var textAreas = text.map(function (text, index) {\n var currentLabel = hasMultipleInputBoxes ? \"\".concat(label, \" #\").concat(index + 1) : label;\n var inputId = \"data-quality-input-text-\".concat(index);\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: index\n }, /*#__PURE__*/React.createElement(StyledLabel, {\n htmlFor: inputId\n }, currentLabel), /*#__PURE__*/React.createElement(InputTextarea, {\n key: index,\n id: inputId,\n value: text,\n onChange: function (e) {\n return handleInputChange(index, e.target.value);\n }\n }));\n });\n var validTextInputs = text.filter(function (textInput) {\n return textInput;\n });\n var validTextInputsLength = hasMultipleInputBoxes ? 2 : 1;\n var hasEnoughValidInputs = validTextInputs.length >= validTextInputsLength;\n return /*#__PURE__*/React.createElement(DataQualityInputText, {\n \"data-testid\": generate(['data-quality-input-text'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ScrollableWrapper, {\n ref: scrollableWrapperRef\n }, textAreas), hasMultipleInputBoxes && ( /*#__PURE__*/React.createElement(AddNewControlButton, {\n icon: function () {\n return /*#__PURE__*/React.createElement(IconAdd, null);\n },\n variant: \"borderless\",\n label: \"Add Another Control\",\n onClick: addInput\n })), renderFormatSelect(), /*#__PURE__*/React.createElement(GenerateButtonContainer, null, /*#__PURE__*/React.createElement(Button, {\n variant: \"primary\",\n label: \"Generate\",\n onClick: onGenerate,\n disabled: isDisabled || !hasEnoughValidInputs,\n isLoading: isLoading\n }), hasSecondaryAction && secondaryActionLabel ? ( /*#__PURE__*/React.createElement(Button, {\n variant: \"secondary\",\n label: secondaryActionLabel,\n onClick: handleSecondaryAction\n })) : null));\n};\nvar DataQualityInputText$2 = styled(DataQualityInputText$1)(templateObject_1$2T || (templateObject_1$2T = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2T;\nvar GetDataQualityControlQualityScoreDocument = gql(templateObject_1$2U || (templateObject_1$2U = __makeTemplateObject([\"\\n mutation getDataQualityControlQualityScore($textList: [DataQualityInputText!]) {\\n getDataQuality {\\n score(textList: $textList)\\n }\\n }\\n\"], [\"\\n mutation getDataQualityControlQualityScore($textList: [DataQualityInputText!]) {\\n getDataQuality {\\n score(textList: $textList)\\n }\\n }\\n\"])));\n/**\r\n * __useGetDataQualityControlQualityScoreMutation__\r\n *\r\n * To run a mutation, you first call `useGetDataQualityControlQualityScoreMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataQualityControlQualityScoreMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [getDataQualityControlQualityScoreMutation, { data, loading, error }] = useGetDataQualityControlQualityScoreMutation({\r\n * variables: {\r\n * textList: // value for 'textList'\r\n * },\r\n * });\r\n */\nfunction useGetDataQualityControlQualityScoreMutation(baseOptions) {\n return useMutation(GetDataQualityControlQualityScoreDocument, baseOptions);\n}\nvar templateObject_1$2U;\nvar QualityCheck = function (props) {\n var className = props.className,\n CDQText = props.CDQText,\n handleCDQTextChange = props.handleCDQTextChange,\n handleCDQRewrite = props.handleCDQRewrite;\n var _a = __read(React.useState(''), 2),\n previousText = _a[0],\n setPreviousText = _a[1];\n var _b = __read(React.useState(), 2),\n CDQValue = _b[0],\n setCDQValue = _b[1];\n var _c = __read(useGetDataQualityControlQualityScoreMutation(), 2),\n getData = _c[0],\n _d = _c[1],\n data = _d.data,\n error = _d.error,\n loading = _d.loading;\n var handleGenerate = function () {\n if (loading) {\n return;\n }\n getData({\n variables: {\n textList: [{\n text: CDQText,\n variant: IDataQualityInputTextVariant.Control\n }]\n }\n });\n setPreviousText(CDQText);\n };\n var CDQReadyForDisplay = previousText === CDQText && !loading ? CDQValue : undefined;\n React.useEffect(function () {\n if (!loading) {\n setCDQValue(function () {\n return data === null || data === void 0 ? void 0 : data.getDataQuality.score;\n });\n }\n }, [data, loading]);\n return /*#__PURE__*/React.createElement(DataQualityTab, {\n \"data-testid\": generate(['data-quality-check'], props),\n className: className\n }, /*#__PURE__*/React.createElement(TabHeader$1, {\n title: \"Check Control Quality\",\n description: \"Enter your existing control description and we will provide an assessment of control description quality.\",\n error: error\n }), /*#__PURE__*/React.createElement(DataQualityTabContent, null, /*#__PURE__*/React.createElement(DataQualityTabContentBlock, null, /*#__PURE__*/React.createElement(DataQualityInputText$2, {\n label: \"Control Description\",\n text: [CDQText],\n onGenerate: handleGenerate,\n onChange: handleCDQTextChange,\n isDisabled: !loading && !error && previousText === CDQText,\n isLoading: loading,\n hasSecondaryAction: CDQReadyForDisplay ? true : false,\n handleSecondaryAction: handleCDQRewrite,\n secondaryActionLabel: \"Rewrite Control\"\n })), /*#__PURE__*/React.createElement(DataQualityTabContentBlock, null, /*#__PURE__*/React.createElement(DataQualityOutputRating$2, {\n descriptionQuality: CDQReadyForDisplay\n }))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar DataQualityOutputText = styled(View)(templateObject_1$2V || (templateObject_1$2V = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar OutputTextareaWrapper = styled(View)(templateObject_2$10 || (templateObject_2$10 = __makeTemplateObject([\"\\n position: relative;\\n margin-bottom: \", \";\\n height: 100%;\\n\"], [\"\\n position: relative;\\n margin-bottom: \", \";\\n height: 100%;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar OutputTextarea = styled(Textarea)(templateObject_3$J || (templateObject_3$J = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar StyledLabel$1 = styled(Label)(templateObject_4$E || (templateObject_4$E = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar GenerateButtonContainer$1 = styled(View)(templateObject_5$u || (templateObject_5$u = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n\"])));\nvar FormatSelect$1 = styled(Select)(templateObject_6$m || (templateObject_6$m = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar CopyAlert = styled(Alert)(templateObject_7$i || (templateObject_7$i = __makeTemplateObject([\"\\n min-height: 0px;\\n margin-left: \", \";\\n padding: 0;\\n border: none;\\n background: none;\\n display: flex;\\n align-items: center;\\n width: auto;\\n\"], [\"\\n min-height: 0px;\\n margin-left: \", \";\\n padding: 0;\\n border: none;\\n background: none;\\n display: flex;\\n align-items: center;\\n width: auto;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$2V, templateObject_2$10, templateObject_3$J, templateObject_4$E, templateObject_5$u, templateObject_6$m, templateObject_7$i;\nvar DataQualityOutputText$1 = function (props) {\n var className = props.className,\n text = props.text,\n label = props.label,\n isLoading = props.isLoading;\n var _a = __read(React.useState(''), 2),\n notificationStatus = _a[0],\n setNotificationStatus = _a[1];\n var _b = __read(React.useState(''), 2),\n notificationText = _b[0],\n setNotificationText = _b[1];\n var onCopy = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 3]);\n return [4 /*yield*/, navigator.clipboard.writeText(text)];\n case 1:\n _a.sent();\n setNotificationText('Copied to clipboard!');\n setNotificationStatus('success');\n return [3 /*break*/, 3];\n case 2:\n err_1 = _a.sent();\n setNotificationText('Could not copy to clipboard. Please try again.');\n setNotificationStatus('error');\n return [3 /*break*/, 3];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n };\n React.useEffect(function () {\n if (notificationStatus) {\n setTimeout(function () {\n return setNotificationStatus('');\n }, 2000);\n }\n }, [notificationStatus]);\n return /*#__PURE__*/React.createElement(DataQualityOutputText, {\n \"data-testid\": generate(['data-quality-output-text'], props),\n className: className\n }, /*#__PURE__*/React.createElement(StyledLabel$1, {\n htmlFor: \"data-quality-output-text\"\n }, label), /*#__PURE__*/React.createElement(OutputTextareaWrapper, null, isLoading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(OutputTextarea, {\n value: text,\n id: \"data-quality-output-text\",\n disabled: !text,\n onChange: function () {\n return null;\n }\n })), /*#__PURE__*/React.createElement(GenerateButtonContainer$1, null, /*#__PURE__*/React.createElement(Button, {\n variant: \"secondary\",\n label: \"Copy to Clipboard\",\n onClick: onCopy,\n disabled: !text\n }), notificationStatus && /*#__PURE__*/React.createElement(CopyAlert, {\n status: notificationStatus,\n title: notificationText\n })));\n};\nvar DataQualityOutputText$2 = styled(DataQualityOutputText$1)(templateObject_1$2W || (templateObject_1$2W = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2W;\nvar GetDataQualityPromptsDocument = gql(templateObject_1$2X || (templateObject_1$2X = __makeTemplateObject([\"\\n mutation getDataQualityPrompts($promptCategory: DataQualityPromptCategory!) {\\n getDataQuality {\\n prompts(promptCategory: $promptCategory) {\\n promptOptions {\\n label\\n value\\n }\\n }\\n }\\n }\\n\"], [\"\\n mutation getDataQualityPrompts($promptCategory: DataQualityPromptCategory!) {\\n getDataQuality {\\n prompts(promptCategory: $promptCategory) {\\n promptOptions {\\n label\\n value\\n }\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetDataQualityPromptsMutation__\r\n *\r\n * To run a mutation, you first call `useGetDataQualityPromptsMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataQualityPromptsMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [getDataQualityPromptsMutation, { data, loading, error }] = useGetDataQualityPromptsMutation({\r\n * variables: {\r\n * promptCategory: // value for 'promptCategory'\r\n * },\r\n * });\r\n */\nfunction useGetDataQualityPromptsMutation(baseOptions) {\n return useMutation(GetDataQualityPromptsDocument, baseOptions);\n}\nvar templateObject_1$2X;\nvar CreateDataQualityJobDocument = gql(templateObject_1$2Y || (templateObject_1$2Y = __makeTemplateObject([\"\\n mutation createDataQualityJob($textList: [DataQualityInputText!]!, $prompt: String!) {\\n createDataQualityJob(textList: $textList, prompt: $prompt) {\\n id\\n }\\n }\\n\"], [\"\\n mutation createDataQualityJob($textList: [DataQualityInputText!]!, $prompt: String!) {\\n createDataQualityJob(textList: $textList, prompt: $prompt) {\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useCreateDataQualityJobMutation__\r\n *\r\n * To run a mutation, you first call `useCreateDataQualityJobMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateDataQualityJobMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [createDataQualityJobMutation, { data, loading, error }] = useCreateDataQualityJobMutation({\r\n * variables: {\r\n * textList: // value for 'textList'\r\n * prompt: // value for 'prompt'\r\n * },\r\n * });\r\n */\nfunction useCreateDataQualityJobMutation(baseOptions) {\n return useMutation(CreateDataQualityJobDocument, baseOptions);\n}\nvar templateObject_1$2Y;\nvar GetDataQualityJobDocument = gql(templateObject_1$2Z || (templateObject_1$2Z = __makeTemplateObject([\"\\n query getDataQualityJob($jobId: String!) {\\n getDataQualityJob(jobId: $jobId) {\\n id\\n status\\n value\\n }\\n }\\n\"], [\"\\n query getDataQualityJob($jobId: String!) {\\n getDataQualityJob(jobId: $jobId) {\\n id\\n status\\n value\\n }\\n }\\n\"])));\nfunction useGetDataQualityJobLazyQuery(baseOptions) {\n return useLazyQuery(GetDataQualityJobDocument, baseOptions);\n}\nvar templateObject_1$2Z;\nvar ControlRewriter = function (props) {\n var className = props.className,\n rewriterText = props.rewriterText,\n handleRewriterTextChange = props.handleRewriterTextChange,\n title = props.title,\n description = props.description,\n textInputLabel = props.textInputLabel,\n textOutputLabel = props.textOutputLabel,\n promptCategory = props.promptCategory;\n var _a = __read(React.useState([]), 2),\n previousRewriterText = _a[0],\n setPreviousRewriterText = _a[1];\n var _b = __read(React.useState(), 2),\n rewrittenControl = _b[0],\n setRewrittenControl = _b[1];\n var _c = useControlRewrite(),\n copiedDescription = _c.copiedDescription,\n onUpdateCopiedDescription = _c.onUpdateCopiedDescription;\n var _d = __read(React.useState(), 2),\n formatOptions = _d[0],\n setFormatOptions = _d[1];\n var _e = __read(React.useState(''), 2),\n selectedFormat = _e[0],\n setSelectedFormat = _e[1];\n var _f = __read(React.useState(''), 2),\n previousSelectedFormat = _f[0],\n setPreviousSelectedFormat = _f[1];\n var _g = __read(React.useState(), 2),\n jobId = _g[0],\n setJobId = _g[1];\n var _h = __read(React.useState(false), 2),\n isPolling = _h[0],\n setIsPolling = _h[1];\n var _j = __read(useCreateDataQualityJobMutation(), 2),\n createDataQualityJob = _j[0],\n _k = _j[1],\n createJobError = _k.error,\n createJobloading = _k.loading;\n var _l = __read(useGetDataQualityJobLazyQuery({\n pollInterval: 1000\n }), 2),\n getDataQualityJob = _l[0],\n _m = _l[1],\n jobError = _m.error,\n jobData = _m.data,\n jobLoading = _m.loading,\n stopPolling = _m.stopPolling;\n var _o = __read(useGetDataQualityPromptsMutation(), 2),\n getPrompts = _o[0],\n prompts = _o[1];\n var loading = createJobloading || isPolling;\n var generateIsDisabled = !loading && _.isEqual(previousRewriterText, rewriterText) && previousSelectedFormat === selectedFormat;\n var error = createJobError || jobError || prompts.error;\n var handleGenerate = function () {\n if (loading) {\n return;\n }\n var textList = rewriterText.map(function (text) {\n return {\n text: text,\n variant: IDataQualityInputTextVariant.Control\n };\n });\n createDataQualityJob({\n variables: {\n textList: textList,\n prompt: selectedFormat\n }\n }).then(function (result) {\n var _a;\n setJobId((_a = result.data) === null || _a === void 0 ? void 0 : _a.createDataQualityJob.id);\n });\n setPreviousRewriterText(rewriterText);\n if (copiedDescription) {\n onUpdateCopiedDescription(undefined);\n }\n };\n var handleSelectChange = function (value) {\n setSelectedFormat(value);\n };\n React.useEffect(function () {\n var pollingTimeout;\n if (jobId) {\n getDataQualityJob({\n variables: {\n jobId: jobId\n }\n });\n pollingTimeout = setTimeout(function () {\n stopPolling && stopPolling();\n setIsPolling(false);\n }, 120000);\n setIsPolling(true);\n }\n return function () {\n clearTimeout(pollingTimeout);\n stopPolling && stopPolling();\n setIsPolling(false);\n };\n }, [jobId]);\n React.useEffect(function () {\n if ((jobData === null || jobData === void 0 ? void 0 : jobData.getDataQualityJob.status) === 'COMPLETED') {\n setRewrittenControl(function () {\n return jobData.getDataQualityJob.value || '';\n });\n setPreviousSelectedFormat(selectedFormat);\n stopPolling && stopPolling();\n setIsPolling(false);\n }\n if (error) {\n stopPolling && stopPolling();\n setIsPolling(false);\n }\n }, [jobData, jobLoading, error]);\n React.useEffect(function () {\n getPrompts({\n variables: {\n promptCategory: promptCategory\n }\n });\n }, [promptCategory]);\n React.useEffect(function () {\n var _a, _b, _c, _d;\n var promptFormats = (_c = (_b = (_a = prompts.data) === null || _a === void 0 ? void 0 : _a.getDataQuality) === null || _b === void 0 ? void 0 : _b.prompts) === null || _c === void 0 ? void 0 : _c.promptOptions;\n setFormatOptions(promptFormats);\n setSelectedFormat(promptFormats && ((_d = promptFormats[0]) === null || _d === void 0 ? void 0 : _d.value) || '');\n }, [prompts.data]);\n var hasMultipleInputBoxes = promptCategory === IDataQualityPromptCategory.MergeControls;\n console.log('rewriterText: ', rewriterText);\n console.log('previousRewriterText: ', previousRewriterText);\n return /*#__PURE__*/React.createElement(DataQualityTab, {\n \"data-testid\": generate(['data-quality-check'], props),\n className: className\n }, /*#__PURE__*/React.createElement(TabHeader$1, {\n title: title,\n description: description,\n error: error\n }), /*#__PURE__*/React.createElement(DataQualityTabContent, null, /*#__PURE__*/React.createElement(DataQualityTabContentBlock, null, /*#__PURE__*/React.createElement(DataQualityInputText$2, {\n label: textInputLabel,\n text: rewriterText,\n onGenerate: handleGenerate,\n onChange: handleRewriterTextChange,\n isDisabled: generateIsDisabled,\n isLoading: loading,\n selectOptions: formatOptions,\n selectedOption: selectedFormat,\n handleSelectChange: handleSelectChange,\n hasMultipleInputBoxes: hasMultipleInputBoxes\n })), /*#__PURE__*/React.createElement(DataQualityTabContentBlock, null, /*#__PURE__*/React.createElement(DataQualityOutputText$2, {\n text: generateIsDisabled && rewrittenControl ? rewrittenControl : '',\n label: textOutputLabel,\n isLoading: loading\n }))));\n};\nvar DataQualityPage$1 = function (props) {\n var activeTab = props.activeTab;\n var defaultRewriterText = activeTab === 'merge-controls' ? ['', ''] : [''];\n var _a = __read(React.useState(''), 2),\n CDQText = _a[0],\n setCDQText = _a[1];\n var _b = __read(React.useState(defaultRewriterText), 2),\n rewriterText = _b[0],\n setRewriterText = _b[1];\n var _c = useControlRewrite(),\n copiedDescription = _c.copiedDescription,\n onUpdateCopiedDescription = _c.onUpdateCopiedDescription,\n navigateToRewrite = _c.navigateToRewrite;\n var handleCDQRewrite = function () {\n onUpdateCopiedDescription(CDQText);\n navigateToRewrite();\n };\n var handleCDQTextChange = function (text) {\n setCDQText(text[0]);\n };\n var handleRewriterTextChange = function (text) {\n setRewriterText(text);\n };\n React.useEffect(function () {\n if (copiedDescription) {\n setRewriterText([copiedDescription]);\n onUpdateCopiedDescription('');\n }\n }, [activeTab]);\n var renderTab = function () {\n switch (activeTab) {\n default:\n case 'check-control-quality':\n return /*#__PURE__*/React.createElement(QualityCheck, {\n CDQText: CDQText,\n handleCDQTextChange: handleCDQTextChange,\n handleCDQRewrite: handleCDQRewrite\n });\n case 'rewrite-control':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Rewrite Control\",\n description: \"Enter your existing control description and we will improve your control description quality and transform into your desired structure.\",\n textInputLabel: \"Control Description\",\n textOutputLabel: \"Suggested Acin Control Description Rewrite\",\n promptCategory: IDataQualityPromptCategory.ControlRewriter\n });\n case 'merge-controls':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Merge Controls\",\n description: \"Enter details of multiple controls (description, attributes, mitigated risks, etc.) to create a single control.\",\n textInputLabel: \"Control\",\n textOutputLabel: \"Merged Control Detail\",\n promptCategory: IDataQualityPromptCategory.MergeControls\n });\n case 'policy-to-control':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Policy to Control\",\n description: \"Enter extracts from your policy documentation and we will create one or more controls into your desired structure.\",\n textInputLabel: \"Policy Text\",\n textOutputLabel: \"Suggested Control(s)\",\n promptCategory: IDataQualityPromptCategory.PolicyToControl\n });\n case 'procedure-to-control':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Procedure to Control\",\n description: \"Enter extracts from your procedure documentation and we will create one or more controls.\",\n textInputLabel: \"Procedure Text\",\n textOutputLabel: \"Suggested Control(s)\",\n promptCategory: IDataQualityPromptCategory.ProcedureToControl\n });\n case 'process-to-control':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Process to Control\",\n description: \"Enter your process name and description and we will create one or more controls that mitigate the risk(s) which are inherited with the process.\",\n textInputLabel: \"Process Name and Description\",\n textOutputLabel: \"Suggested Control(s)\",\n promptCategory: IDataQualityPromptCategory.ProcessToControl\n });\n case 'control-to-testing-scripts':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Control to Testing Scripts\",\n description: \"Enter your control description and we will create a testing script following a standardised structure to enable you to monitor the performance of the controls.\",\n textInputLabel: \"Control Description\",\n textOutputLabel: \"Suggested Testing Scripts\",\n promptCategory: IDataQualityPromptCategory.ControlToTestingScript\n });\n case 'control-to-key-control-indicator':\n return /*#__PURE__*/React.createElement(ControlRewriter, {\n rewriterText: rewriterText,\n handleRewriterTextChange: handleRewriterTextChange,\n title: \"Key Control Indicators for Controls\",\n description: \"Enter your control description and we will create one or more standardised key control indicators that can be used to continuously monitor the performance of the control in a data-driven way.\",\n textInputLabel: \"Control Description\",\n textOutputLabel: \"Suggested Key Control Indicator(s)\",\n promptCategory: IDataQualityPromptCategory.ControlToKeyControlIndicator\n });\n }\n };\n return renderTab();\n};\nvar DataQualityPage$2 = styled(DataQualityPage$1)(templateObject_1$2_ || (templateObject_1$2_ = __makeTemplateObject([\"\"], [\"\"])));\nvar ControlRewriteProvider$1 = ControlRewriteProvider;\nvar useControlRewrite$1 = useControlRewrite;\nvar ControlDescriptionRewriter = styled(ControlRewriter)(templateObject_2$11 || (templateObject_2$11 = __makeTemplateObject([\"\"], [\"\"])));\nvar ControlDescriptionQualityCheck = styled(QualityCheck)(templateObject_3$K || (templateObject_3$K = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2_, templateObject_2$11, templateObject_3$K;\nexport { AcinControlDescription$2 as AcinControlDescription, AcinControlRow$2 as AcinControlRow, AcinControlTypeahead$2 as AcinControlTypeahead, AcinRiskRow$2 as AcinRiskRow, AcinRiskTypeahead$2 as AcinRiskTypeahead, ClientControlList$2 as ClientControlList, ClientRiskList$3 as ClientRiskList, CompletenessReportControlListView$2 as CompletenessReportControlListView, ControlDescriptionQualityCheck, ControlDescriptionRewriter, ControlDetails$2 as ControlDetails, ControlInsight$2 as ControlInsight, ControlList$1 as ControlList, ControlRewriteProvider$1 as ControlRewriteProvider, ControlRoute$2 as ControlRoute, DataQualityPage$2 as DataQualityPage, ISortDirection, ITableVariant, Inspector$2 as Inspector, RefresherBarChart$2 as RefresherBarChart, ReportChart$2 as ReportChart, ReportChartAsTable$2 as ReportChartAsTable, ReportChartStateManager$2 as ReportChartStateManager, ReportChartTable$2 as ReportChartTable, ReportDrawer$1 as ReportDrawer, ReportProvider$1 as ReportProvider, ReportTable$2 as ReportTable, RiskInventoryRow$2 as RiskInventoryRow, RiskInventoryTypeahead$2 as RiskInventoryTypeahead, RiskList$1 as RiskList, RiskRoute$2 as RiskRoute, SkeletonRow$2 as SkeletonRow, Sort$2 as Sort, TableHeader$2 as TableHeader, TableRow, VirtualisedTable$2 as VirtualisedTable, createRowIdFromName, defaultControlSort, defaultRiskSort, disableTableOption, formatBreadcrumbInput, generateControlSortData, getEnableDrillDown, getFileName, getIncomingConfiguration, getShowFolders, mergeActiveFiltersAndFilterGroups, mergeConfigurationWithIncomingConfiguration, toTitleCase, transformConfigurationIntoList, transformFiltersIntoList, typePolicies, useControlRewrite$1 as useControlRewrite };","import { useRef, useEffect, useMemo } from 'react';\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked, or until the next browser frame is drawn. The debounced function\n * comes with a `cancel` method to cancel delayed `func` invocations and a\n * `flush` method to immediately invoke them. Provide `options` to indicate\n * whether `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. The `func` is invoked with the last arguments provided to the\n * debounced function. Subsequent calls to the debounced function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * If `wait` is omitted in an environment with `requestAnimationFrame`, `func`\n * invocation will be deferred until the next frame is drawn (typically about\n * 16ms).\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `debounce` and `throttle`.\n *\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0]\n * The number of milliseconds to delay; if omitted, `requestAnimationFrame` is\n * used (if available, otherwise it will be setTimeout(...,0)).\n * @param {Object} [options={}] The options object.\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.leading=false]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {number} [options.maxWait]\n * Specify invoking on the trailing edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * const resizeHandler = useDebouncedCallback(calculateLayout, 150);\n * window.addEventListener('resize', resizeHandler)\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * const clickHandler = useDebouncedCallback(sendMail, 300, {\n * leading: true,\n * trailing: false,\n * })\n * <button onClick={clickHandler}>click me</button>\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * const debounced = useDebouncedCallback(batchLog, 250, { 'maxWait': 1000 })\n * const source = new EventSource('/stream')\n * source.addEventListener('message', debounced)\n *\n * // Cancel the trailing debounced invocation.\n * window.addEventListener('popstate', debounced.cancel)\n *\n * // Check for pending invocations.\n * const status = debounced.pending() ? \"Pending...\" : \"Ready\"\n */\nexport default function useDebouncedCallback(func, wait, options) {\n var _this = this;\n var lastCallTime = useRef(null);\n var lastInvokeTime = useRef(0);\n var timerId = useRef(null);\n var lastArgs = useRef([]);\n var lastThis = useRef();\n var result = useRef();\n var funcRef = useRef(func);\n var mounted = useRef(true);\n funcRef.current = func;\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n var useRAF = !wait && wait !== 0 && typeof window !== 'undefined';\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n options = options || {};\n var leading = !!options.leading;\n var trailing = 'trailing' in options ? !!options.trailing : true; // `true` by default\n var maxing = ('maxWait' in options);\n var maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : null;\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n // You may have a question, why we have so many code under the useMemo definition.\n //\n // This was made as we want to escape from useCallback hell and\n // not to initialize a number of functions each time useDebouncedCallback is called.\n //\n // It means that we have less garbage for our GC calls which improves performance.\n // Also, it makes this library smaller.\n //\n // And the last reason, that the code without lots of useCallback with deps is easier to read.\n // You have only one place for that.\n var debounced = useMemo(function () {\n var invokeFunc = function (time) {\n var args = lastArgs.current;\n var thisArg = lastThis.current;\n lastArgs.current = lastThis.current = null;\n lastInvokeTime.current = time;\n return result.current = funcRef.current.apply(thisArg, args);\n };\n var startTimer = function (pendingFunc, wait) {\n if (useRAF) cancelAnimationFrame(timerId.current);\n timerId.current = useRAF ? requestAnimationFrame(pendingFunc) : setTimeout(pendingFunc, wait);\n };\n var shouldInvoke = function (time) {\n if (!mounted.current) return false;\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return !lastCallTime.current || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n };\n var trailingEdge = function (time) {\n timerId.current = null;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs.current) {\n return invokeFunc(time);\n }\n lastArgs.current = lastThis.current = null;\n return result.current;\n };\n var timerExpired = function () {\n var time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // https://github.com/xnimorz/use-debounce/issues/97\n if (!mounted.current) {\n return;\n }\n // Remaining wait calculation\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current;\n var timeWaiting = wait - timeSinceLastCall;\n var remainingWait = maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n // Restart the timer\n startTimer(timerExpired, remainingWait);\n };\n var func = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var time = Date.now();\n var isInvoking = shouldInvoke(time);\n lastArgs.current = args;\n lastThis.current = _this;\n lastCallTime.current = time;\n if (isInvoking) {\n if (!timerId.current && mounted.current) {\n // Reset any `maxWait` timer.\n lastInvokeTime.current = lastCallTime.current;\n // Start the timer for the trailing edge.\n startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(lastCallTime.current) : result.current;\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime.current);\n }\n }\n if (!timerId.current) {\n startTimer(timerExpired, wait);\n }\n return result.current;\n };\n func.cancel = function () {\n if (timerId.current) {\n useRAF ? cancelAnimationFrame(timerId.current) : clearTimeout(timerId.current);\n }\n lastInvokeTime.current = 0;\n lastArgs.current = lastCallTime.current = lastThis.current = timerId.current = null;\n };\n func.isPending = function () {\n return !!timerId.current;\n };\n func.flush = function () {\n return !timerId.current ? result.current : trailingEdge(Date.now());\n };\n return func;\n }, [leading, maxing, wait, maxWait, trailing, useRAF]);\n return debounced;\n}","import { useCallback, useEffect, useRef, useState } from 'react';\nimport useDebouncedCallback from './useDebouncedCallback';\nfunction valueEquality(left, right) {\n return left === right;\n}\nfunction adjustFunctionValueOfSetState(value) {\n return typeof value === 'function' ? function () {\n return value;\n } : value;\n}\nfunction useStateIgnoreCallback(initialState) {\n var _a = useState(adjustFunctionValueOfSetState(initialState)),\n state = _a[0],\n setState = _a[1];\n var setStateIgnoreCallback = useCallback(function (value) {\n return setState(adjustFunctionValueOfSetState(value));\n }, []);\n return [state, setStateIgnoreCallback];\n}\nexport default function useDebounce(value, delay, options) {\n var eq = options && options.equalityFn || valueEquality;\n var _a = useStateIgnoreCallback(value),\n state = _a[0],\n dispatch = _a[1];\n var debounced = useDebouncedCallback(useCallback(function (value) {\n return dispatch(value);\n }, [dispatch]), delay, options);\n var previousValue = useRef(value);\n useEffect(function () {\n // We need to use this condition otherwise we will run debounce timer for the first render (including maxWait option)\n if (!eq(previousValue.current, value)) {\n debounced(value);\n previousValue.current = value;\n }\n }, [value, debounced, eq]);\n return [state, {\n cancel: debounced.cancel,\n isPending: debounced.isPending,\n flush: debounced.flush\n }];\n}","import { useRef, useEffect, useMemo } from 'react';\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked, or until the next browser frame is drawn. The debounced function\n * comes with a `cancel` method to cancel delayed `func` invocations and a\n * `flush` method to immediately invoke them. Provide `options` to indicate\n * whether `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. The `func` is invoked with the last arguments provided to the\n * debounced function. Subsequent calls to the debounced function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * If `wait` is omitted in an environment with `requestAnimationFrame`, `func`\n * invocation will be deferred until the next frame is drawn (typically about\n * 16ms).\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `debounce` and `throttle`.\n *\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0]\n * The number of milliseconds to delay; if omitted, `requestAnimationFrame` is\n * used (if available, otherwise it will be setTimeout(...,0)).\n * @param {Object} [options={}] The options object.\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.leading=false]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {number} [options.maxWait]\n * Specify invoking on the trailing edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * const resizeHandler = useDebouncedCallback(calculateLayout, 150);\n * window.addEventListener('resize', resizeHandler)\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * const clickHandler = useDebouncedCallback(sendMail, 300, {\n * leading: true,\n * trailing: false,\n * })\n * <button onClick={clickHandler}>click me</button>\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * const debounced = useDebouncedCallback(batchLog, 250, { 'maxWait': 1000 })\n * const source = new EventSource('/stream')\n * source.addEventListener('message', debounced)\n *\n * // Cancel the trailing debounced invocation.\n * window.addEventListener('popstate', debounced.cancel)\n *\n * // Check for pending invocations.\n * const status = debounced.pending() ? \"Pending...\" : \"Ready\"\n */\nexport default function useDebouncedCallback(func, wait, options) {\n var _this = this;\n var lastCallTime = useRef(null);\n var lastInvokeTime = useRef(0);\n var timerId = useRef(null);\n var lastArgs = useRef([]);\n var lastThis = useRef();\n var result = useRef();\n var funcRef = useRef(func);\n var mounted = useRef(true);\n funcRef.current = func;\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n var useRAF = !wait && wait !== 0 && typeof window !== 'undefined';\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n options = options || {};\n var leading = !!options.leading;\n var trailing = 'trailing' in options ? !!options.trailing : true; // `true` by default\n var maxing = ('maxWait' in options);\n var maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : null;\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []);\n // You may have a question, why we have so many code under the useMemo definition.\n //\n // This was made as we want to escape from useCallback hell and\n // not to initialize a number of functions each time useDebouncedCallback is called.\n //\n // It means that we have less garbage for our GC calls which improves performance.\n // Also, it makes this library smaller.\n //\n // And the last reason, that the code without lots of useCallback with deps is easier to read.\n // You have only one place for that.\n var debounced = useMemo(function () {\n var invokeFunc = function (time) {\n var args = lastArgs.current;\n var thisArg = lastThis.current;\n lastArgs.current = lastThis.current = null;\n lastInvokeTime.current = time;\n return result.current = funcRef.current.apply(thisArg, args);\n };\n var startTimer = function (pendingFunc, wait) {\n if (useRAF) cancelAnimationFrame(timerId.current);\n timerId.current = useRAF ? requestAnimationFrame(pendingFunc) : setTimeout(pendingFunc, wait);\n };\n var shouldInvoke = function (time) {\n if (!mounted.current) return false;\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return !lastCallTime.current || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n };\n var trailingEdge = function (time) {\n timerId.current = null;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs.current) {\n return invokeFunc(time);\n }\n lastArgs.current = lastThis.current = null;\n return result.current;\n };\n var timerExpired = function () {\n var time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // https://github.com/xnimorz/use-debounce/issues/97\n if (!mounted.current) {\n return;\n }\n // Remaining wait calculation\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current;\n var timeWaiting = wait - timeSinceLastCall;\n var remainingWait = maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n // Restart the timer\n startTimer(timerExpired, remainingWait);\n };\n var func = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var time = Date.now();\n var isInvoking = shouldInvoke(time);\n lastArgs.current = args;\n lastThis.current = _this;\n lastCallTime.current = time;\n if (isInvoking) {\n if (!timerId.current && mounted.current) {\n // Reset any `maxWait` timer.\n lastInvokeTime.current = lastCallTime.current;\n // Start the timer for the trailing edge.\n startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(lastCallTime.current) : result.current;\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime.current);\n }\n }\n if (!timerId.current) {\n startTimer(timerExpired, wait);\n }\n return result.current;\n };\n func.cancel = function () {\n if (timerId.current) {\n useRAF ? cancelAnimationFrame(timerId.current) : clearTimeout(timerId.current);\n }\n lastInvokeTime.current = 0;\n lastArgs.current = lastCallTime.current = lastThis.current = timerId.current = null;\n };\n func.isPending = function () {\n return !!timerId.current;\n };\n func.flush = function () {\n return !timerId.current ? result.current : trailingEdge(Date.now());\n };\n return func;\n }, [leading, maxing, wait, maxWait, trailing, useRAF]);\n return debounced;\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function isPlainObject(item) {\n return item && _typeof(item) === 'object' && item.constructor === Object;\n}\nexport default function deepmerge(target, source) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n clone: true\n };\n var output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(function (key) {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target) {\n output[key] = deepmerge(target[key], source[key], options);\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport var keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexport default function createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = _objectWithoutProperties(breakpoints, [\"values\", \"unit\", \"step\"]);\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n function only(key) {\n return between(key, key);\n }\n function width(key) {\n return values[key];\n }\n return _extends({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n return _extends({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // To deprecate in v4.1\n // warning(\n // false,\n // [\n // 'Material-UI: Theme.mixins.gutters() is deprecated.',\n // 'You can use the source of the mixin directly:',\n // `\n // paddingLeft: theme.spacing(2),\n // paddingRight: theme.spacing(2),\n // [theme.breakpoints.up('sm')]: {\n // paddingLeft: theme.spacing(3),\n // paddingRight: theme.spacing(3),\n // },\n // `,\n // ].join('\\n'),\n // );\n return _extends({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, _defineProperty({}, breakpoints.up('sm'), _extends({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, _defineProperty(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), _defineProperty(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@material-ui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n\n /* eslint-disable prefer-template */\n var url = 'https://mui.com/production-error/?code=' + code;\n for (var i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified Material-UI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","var common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","var grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nexport default grey;","var indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nexport default indigo;","var pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nexport default pink;","var red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","var orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","var blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","var green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\nexport function hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : _formatMuiErrorMessage(3, color));\n }\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\nexport function recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\nexport function getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\nexport function getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function fade(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport { deepmerge } from '@material-ui/utils';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport indigo from '../colors/indigo';\nimport pink from '../colors/pink';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport green from '../colors/green';\nimport { darken, getContrastRatio, lighten } from './colorManipulator';\nexport var light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: grey[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport var dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: grey[800],\n default: '#303030'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nexport default function createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: indigo[300],\n main: indigo[500],\n dark: indigo[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: pink.A200,\n main: pink.A400,\n dark: pink.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: red[300],\n main: red[500],\n dark: red[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: orange[300],\n main: orange[500],\n dark: orange[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: blue[300],\n main: blue[500],\n dark: blue[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: green[300],\n main: green[500],\n dark: green[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = _objectWithoutProperties(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n function getContrastText(background) {\n var contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n var contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : _formatMuiErrorMessage(4, mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createMuiTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createMuiTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n var types = {\n dark: dark,\n light: light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n var paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: common,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nexport default function createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = _objectWithoutProperties(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n var coef = fontSize / 14;\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return _extends({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return deepmerge(_extends({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: round,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","var shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","var shape = {\n borderRadius: 4\n};\nexport default shape;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport PropTypes from 'prop-types';\nimport merge from './merge'; // The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\n\nvar values = {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n};\nvar defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: function up(key) {\n return \"@media (min-width:\".concat(values[key], \"px)\");\n }\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n if (process.env.NODE_ENV !== 'production') {\n if (!props.theme) {\n console.error('Material-UI: You are calling a style function without a theme value.');\n }\n }\n if (Array.isArray(propValue)) {\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return propValue.reduce(function (acc, item, index) {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (_typeof(propValue) === 'object') {\n var _themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce(function (acc, breakpoint) {\n acc[_themeBreakpoints.up(breakpoint)] = styleFromPropValue(propValue[breakpoint]);\n return acc;\n }, {});\n }\n var output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var base = styleFunction(props);\n var themeBreakpoints = props.theme.breakpoints || defaultBreakpoints;\n var extended = themeBreakpoints.keys.reduce(function (acc, key) {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme: props.theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\nexport default breakpoints;","import { deepmerge } from '@material-ui/utils';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport merge from './merge';\nimport memoize from './memoize';\nvar properties = {\n m: 'margin',\n p: 'padding'\n};\nvar directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nvar aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n}; // memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\n\nvar getCssProperties = memoize(function (prop) {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n var _prop$split = prop.split(''),\n _prop$split2 = _slicedToArray(_prop$split, 2),\n a = _prop$split2[0],\n b = _prop$split2[1];\n var property = properties[a];\n var direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(function (dir) {\n return property + dir;\n }) : [property + direction];\n});\nvar spacingKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY'];\nexport function createUnarySpacing(theme) {\n var themeSpacing = theme.spacing || 8;\n if (typeof themeSpacing === 'number') {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(\"Material-UI: Expected spacing argument to be a number, got \".concat(abs, \".\"));\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return function (abs) {\n if (process.env.NODE_ENV !== 'production') {\n if (abs > themeSpacing.length - 1) {\n console.error([\"Material-UI: The value provided (\".concat(abs, \") overflows.\"), \"The supported values are: \".concat(JSON.stringify(themeSpacing), \".\"), \"\".concat(abs, \" > \").concat(themeSpacing.length - 1, \", you need to add the missing values.\")].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `theme.spacing` value (\".concat(themeSpacing, \") is invalid.\"), 'It should be a number, an array or a function.'].join('\\n'));\n }\n return function () {\n return undefined;\n };\n}\nfunction getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n var abs = Math.abs(propValue);\n var transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return \"-\".concat(transformed);\n}\nfunction getStyleFromPropValue(cssProperties, transformer) {\n return function (propValue) {\n return cssProperties.reduce(function (acc, cssProperty) {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n };\n}\nfunction spacing(props) {\n var theme = props.theme;\n var transformer = createUnarySpacing(theme);\n return Object.keys(props).map(function (prop) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (spacingKeys.indexOf(prop) === -1) {\n return null;\n }\n var cssProperties = getCssProperties(prop);\n var styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n var propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n }).reduce(merge, {});\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce(function (obj, key) {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport var easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexport var duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\nexport default {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = _objectWithoutProperties(options, [\"duration\", \"easing\", \"delay\"]);\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport { deepmerge } from '@material-ui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport transitions from './transitions';\nimport zIndex from './zIndex';\nfunction createMuiTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = _objectWithoutProperties(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n var palette = createPalette(paletteInput);\n var breakpoints = createBreakpoints(breakpointsInput);\n var spacing = createSpacing(spacingInput);\n var muiTheme = deepmerge({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: createMixins(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: shadows,\n typography: createTypography(palette, typographyInput),\n spacing: spacing,\n shape: shape,\n transitions: transitions,\n zIndex: zIndex\n }, other);\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 muiTheme = args.reduce(function (acc, argument) {\n return deepmerge(acc, argument);\n }, muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: _defineProperty({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n node[key] = {};\n }\n }\n };\n traverse(muiTheme.overrides);\n }\n return muiTheme;\n}\nexport default createMuiTheme;","import { createUnarySpacing } from '@material-ui/system';\nvar warnOnce;\nexport default function createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8;\n\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n var transform = createUnarySpacing({\n spacing: spacingInput\n });\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n if (args.length === 0) {\n return transform(1);\n }\n if (args.length === 1) {\n return transform(args[0]);\n }\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n warnOnce = true;\n }\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","import React from 'react';\nvar ThemeContext = React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n var theme = React.useContext(ThemeContext);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","var hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested'; // To support composition of theme.\n\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n if (typeof localTheme === 'function') {\n var mergedTheme = localTheme(outerTheme);\n if (process.env.NODE_ENV !== 'production') {\n if (!mergedTheme) {\n console.error(['Material-UI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n }\n }\n return mergedTheme;\n }\n return _extends({}, outerTheme, localTheme);\n}\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\n\nfunction ThemeProvider(props) {\n var children = props.children,\n localTheme = props.theme;\n var outerTheme = useTheme();\n if (process.env.NODE_ENV !== 'production') {\n if (outerTheme === null && typeof localTheme === 'function') {\n console.error(['Material-UI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n }\n }\n var theme = React.useMemo(function () {\n var output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n if (output != null) {\n output[nested] = outerTheme !== null;\n }\n return output;\n }, [localTheme, outerTheme]);\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n /**\n * A theme object. You can provide a function to extend the outer theme.\n */\n theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n}();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n function observable() {\n var _ref;\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n}\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n var shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n var boundActionCreators = {};\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };","export var INIT_COORDS = 'dnd-core/INIT_COORDS';\nexport var BEGIN_DRAG = 'dnd-core/BEGIN_DRAG';\nexport var PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE';\nexport var HOVER = 'dnd-core/HOVER';\nexport var DROP = 'dnd-core/DROP';\nexport var END_DRAG = 'dnd-core/END_DRAG';","export var strictEquality = function strictEquality(a, b) {\n return a === b;\n};\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\n\nexport function areCoordsEqual(offsetA, offsetB) {\n if (!offsetA && !offsetB) {\n return true;\n } else if (!offsetA || !offsetB) {\n return false;\n } else {\n return offsetA.x === offsetB.x && offsetA.y === offsetB.y;\n }\n}\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\n\nexport function areArraysEqual(a, b) {\n var isEqual = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : strictEquality;\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { INIT_COORDS, BEGIN_DRAG, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { areCoordsEqual } from '../utils/equality';\nvar initialState = {\n initialSourceClientOffset: null,\n initialClientOffset: null,\n clientOffset: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n switch (action.type) {\n case INIT_COORDS:\n case BEGIN_DRAG:\n return {\n initialSourceClientOffset: payload.sourceClientOffset,\n initialClientOffset: payload.clientOffset,\n clientOffset: payload.clientOffset\n };\n case HOVER:\n if (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n clientOffset: payload.clientOffset\n });\n case END_DRAG:\n case DROP:\n return initialState;\n default:\n return state;\n }\n}","export var ADD_SOURCE = 'dnd-core/ADD_SOURCE';\nexport var ADD_TARGET = 'dnd-core/ADD_TARGET';\nexport var REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE';\nexport var REMOVE_TARGET = 'dnd-core/REMOVE_TARGET';\nexport function addSource(sourceId) {\n return {\n type: ADD_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function addTarget(targetId) {\n return {\n type: ADD_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}\nexport function removeSource(sourceId) {\n return {\n type: REMOVE_SOURCE,\n payload: {\n sourceId: sourceId\n }\n };\n}\nexport function removeTarget(targetId) {\n return {\n type: REMOVE_TARGET,\n payload: {\n targetId: targetId\n }\n };\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\n\n// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get(obj, path, defaultValue) {\n return path.split('.').reduce(function (a, c) {\n return a && a[c] ? a[c] : defaultValue || null;\n }, obj);\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isString(input) {\n return typeof input === 'string';\n}\n/**\n * drop-in replacement for _.isString\n * @param input\n */\n\nexport function isObject(input) {\n return _typeof(input) === 'object';\n}\n/**\n * repalcement for _.xor\n * @param itemsA\n * @param itemsB\n */\n\nexport function xor(itemsA, itemsB) {\n var map = new Map();\n var insertItem = function insertItem(item) {\n map.set(item, map.has(item) ? map.get(item) + 1 : 1);\n };\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n map.forEach(function (count, key) {\n if (count === 1) {\n result.push(key);\n }\n });\n return result;\n}\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\n\nexport function intersection(itemsA, itemsB) {\n return itemsA.filter(function (t) {\n return itemsB.indexOf(t) > -1;\n });\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { REMOVE_TARGET } from '../actions/registry';\nimport { without } from '../utils/js_utils';\nvar initialState = {\n itemType: null,\n item: null,\n sourceId: null,\n targetIds: [],\n dropResult: null,\n didDrop: false,\n isSourcePublic: null\n};\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var payload = action.payload;\n switch (action.type) {\n case BEGIN_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: payload.itemType,\n item: payload.item,\n sourceId: payload.sourceId,\n isSourcePublic: payload.isSourcePublic,\n dropResult: null,\n didDrop: false\n });\n case PUBLISH_DRAG_SOURCE:\n return _objectSpread(_objectSpread({}, state), {}, {\n isSourcePublic: true\n });\n case HOVER:\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: payload.targetIds\n });\n case REMOVE_TARGET:\n if (state.targetIds.indexOf(payload.targetId) === -1) {\n return state;\n }\n return _objectSpread(_objectSpread({}, state), {}, {\n targetIds: without(state.targetIds, payload.targetId)\n });\n case DROP:\n return _objectSpread(_objectSpread({}, state), {}, {\n dropResult: payload.dropResult,\n didDrop: true,\n targetIds: []\n });\n case END_DRAG:\n return _objectSpread(_objectSpread({}, state), {}, {\n itemType: null,\n item: null,\n sourceId: null,\n dropResult: null,\n didDrop: false,\n isSourcePublic: null,\n targetIds: []\n });\n default:\n return state;\n }\n}","import { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n switch (action.type) {\n case ADD_SOURCE:\n case ADD_TARGET:\n return state + 1;\n case REMOVE_SOURCE:\n case REMOVE_TARGET:\n return state - 1;\n default:\n return state;\n }\n}","import { intersection } from './js_utils';\nexport var NONE = [];\nexport var ALL = [];\nNONE.__IS_NONE__ = true;\nALL.__IS_ALL__ = true;\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\n\nexport function areDirty(dirtyIds, handlerIds) {\n if (dirtyIds === NONE) {\n return false;\n }\n if (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n return true;\n }\n var commonIds = intersection(handlerIds, dirtyIds);\n return commonIds.length > 0;\n}","import { BEGIN_DRAG, PUBLISH_DRAG_SOURCE, HOVER, END_DRAG, DROP } from '../actions/dragDrop';\nimport { ADD_SOURCE, ADD_TARGET, REMOVE_SOURCE, REMOVE_TARGET } from '../actions/registry';\nimport { areArraysEqual } from '../utils/equality';\nimport { NONE, ALL } from '../utils/dirtiness';\nimport { xor } from '../utils/js_utils';\nexport function reduce() {\n var _state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NONE;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n switch (action.type) {\n case HOVER:\n break;\n case ADD_SOURCE:\n case ADD_TARGET:\n case REMOVE_TARGET:\n case REMOVE_SOURCE:\n return NONE;\n case BEGIN_DRAG:\n case PUBLISH_DRAG_SOURCE:\n case END_DRAG:\n case DROP:\n default:\n return ALL;\n }\n var _action$payload = action.payload,\n _action$payload$targe = _action$payload.targetIds,\n targetIds = _action$payload$targe === void 0 ? [] : _action$payload$targe,\n _action$payload$prevT = _action$payload.prevTargetIds,\n prevTargetIds = _action$payload$prevT === void 0 ? [] : _action$payload$prevT;\n var result = xor(targetIds, prevTargetIds);\n var didChange = result.length > 0 || !areArraysEqual(targetIds, prevTargetIds);\n if (!didChange) {\n return NONE;\n } // Check the target ids at the innermost position. If they are valid, add them\n // to the result\n\n var prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1];\n var innermostTargetId = targetIds[targetIds.length - 1];\n if (prevInnermostTargetId !== innermostTargetId) {\n if (prevInnermostTargetId) {\n result.push(prevInnermostTargetId);\n }\n if (innermostTargetId) {\n result.push(innermostTargetId);\n }\n }\n return result;\n}","export function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n return state + 1;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { reduce as dragOffset } from './dragOffset';\nimport { reduce as dragOperation } from './dragOperation';\nimport { reduce as refCount } from './refCount';\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds';\nimport { reduce as stateId } from './stateId';\nimport { get } from '../utils/js_utils';\nexport function reduce() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n return {\n dirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n type: action.type,\n payload: _objectSpread(_objectSpread({}, action.payload), {}, {\n prevTargetIds: get(state, 'dragOperation.targetIds', [])\n })\n }),\n dragOffset: dragOffset(state.dragOffset, action),\n refCount: refCount(state.refCount, action),\n dragOperation: dragOperation(state.dragOperation, action),\n stateId: stateId(state.stateId)\n };\n}","/**\r\n * Use invariant() to assert state which your program assumes to be true.\r\n *\r\n * Provide sprintf-style format (only %s is supported) and arguments\r\n * to provide information about what broke and what you were\r\n * expecting.\r\n *\r\n * The invariant message will be stripped in production, but the invariant\r\n * will remain to ensure logic does not differ in production.\r\n */\nfunction invariant(condition, format) {\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 if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n error.framesToPop = 1; // we don't care about invariant's own frame\n\n throw error;\n }\n}\nexport { invariant };\n//# sourceMappingURL=invariant.esm.js.map","import { INIT_COORDS } from '../types';\nexport function setClientOffset(clientOffset, sourceClientOffset) {\n return {\n type: INIT_COORDS,\n payload: {\n sourceClientOffset: sourceClientOffset || null,\n clientOffset: clientOffset || null\n }\n };\n}","import { invariant } from '@react-dnd/invariant';\nimport { setClientOffset } from './local/setClientOffset';\nimport { isObject } from '../../utils/js_utils';\nimport { BEGIN_DRAG, INIT_COORDS } from './types';\nvar ResetCoordinatesAction = {\n type: INIT_COORDS,\n payload: {\n clientOffset: null,\n sourceClientOffset: null\n }\n};\nexport function createBeginDrag(manager) {\n return function beginDrag() {\n var sourceIds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n publishSource: true\n };\n var _options$publishSourc = options.publishSource,\n publishSource = _options$publishSourc === void 0 ? true : _options$publishSourc,\n clientOffset = options.clientOffset,\n getSourceClientOffset = options.getSourceClientOffset;\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry(); // Initialize the coordinates using the client offset\n\n manager.dispatch(setClientOffset(clientOffset));\n verifyInvariants(sourceIds, monitor, registry); // Get the draggable source\n\n var sourceId = getDraggableSource(sourceIds, monitor);\n if (sourceId === null) {\n manager.dispatch(ResetCoordinatesAction);\n return;\n } // Get the source client offset\n\n var sourceClientOffset = null;\n if (clientOffset) {\n if (!getSourceClientOffset) {\n throw new Error('getSourceClientOffset must be defined');\n }\n verifyGetSourceClientOffsetIsFunction(getSourceClientOffset);\n sourceClientOffset = getSourceClientOffset(sourceId);\n } // Initialize the full coordinates\n\n manager.dispatch(setClientOffset(clientOffset, sourceClientOffset));\n var source = registry.getSource(sourceId);\n var item = source.beginDrag(monitor, sourceId);\n verifyItemIsObject(item);\n registry.pinSource(sourceId);\n var itemType = registry.getSourceType(sourceId);\n return {\n type: BEGIN_DRAG,\n payload: {\n itemType: itemType,\n item: item,\n sourceId: sourceId,\n clientOffset: clientOffset || null,\n sourceClientOffset: sourceClientOffset || null,\n isSourcePublic: !!publishSource\n }\n };\n };\n}\nfunction verifyInvariants(sourceIds, monitor, registry) {\n invariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.');\n sourceIds.forEach(function (sourceId) {\n invariant(registry.getSource(sourceId), 'Expected sourceIds to be registered.');\n });\n}\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset) {\n invariant(typeof getSourceClientOffset === 'function', 'When clientOffset is provided, getSourceClientOffset must be a function.');\n}\nfunction verifyItemIsObject(item) {\n invariant(isObject(item), 'Item must be an object.');\n}\nfunction getDraggableSource(sourceIds, monitor) {\n var sourceId = null;\n for (var i = sourceIds.length - 1; i >= 0; i--) {\n if (monitor.canDragSource(sourceIds[i])) {\n sourceId = sourceIds[i];\n break;\n }\n }\n return sourceId;\n}","import { PUBLISH_DRAG_SOURCE } from './types';\nexport function createPublishDragSource(manager) {\n return function publishDragSource() {\n var monitor = manager.getMonitor();\n if (monitor.isDragging()) {\n return {\n type: PUBLISH_DRAG_SOURCE\n };\n }\n };\n}","export function matchesType(targetType, draggedItemType) {\n if (draggedItemType === null) {\n return targetType === null;\n }\n return Array.isArray(targetType) ? targetType.some(function (t) {\n return t === draggedItemType;\n }) : targetType === draggedItemType;\n}","import { invariant } from '@react-dnd/invariant';\nimport { matchesType } from '../../utils/matchesType';\nimport { HOVER } from './types';\nexport function createHover(manager) {\n return function hover(targetIdsArg) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n clientOffset = _ref.clientOffset;\n verifyTargetIdsIsArray(targetIdsArg);\n var targetIds = targetIdsArg.slice(0);\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n checkInvariants(targetIds, monitor, registry);\n var draggedItemType = monitor.getItemType();\n removeNonMatchingTargetIds(targetIds, registry, draggedItemType);\n hoverAllTargets(targetIds, monitor, registry);\n return {\n type: HOVER,\n payload: {\n targetIds: targetIds,\n clientOffset: clientOffset || null\n }\n };\n };\n}\nfunction verifyTargetIdsIsArray(targetIdsArg) {\n invariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.');\n}\nfunction checkInvariants(targetIds, monitor, registry) {\n invariant(monitor.isDragging(), 'Cannot call hover while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call hover after drop.');\n for (var i = 0; i < targetIds.length; i++) {\n var targetId = targetIds[i];\n invariant(targetIds.lastIndexOf(targetId) === i, 'Expected targetIds to be unique in the passed array.');\n var target = registry.getTarget(targetId);\n invariant(target, 'Expected targetIds to be registered.');\n }\n}\nfunction removeNonMatchingTargetIds(targetIds, registry, draggedItemType) {\n // Remove those targetIds that don't match the targetType. This\n // fixes shallow isOver which would only be non-shallow because of\n // non-matching targets.\n for (var i = targetIds.length - 1; i >= 0; i--) {\n var targetId = targetIds[i];\n var targetType = registry.getTargetType(targetId);\n if (!matchesType(targetType, draggedItemType)) {\n targetIds.splice(i, 1);\n }\n }\n}\nfunction hoverAllTargets(targetIds, monitor, registry) {\n // Finally call hover on all matching targets.\n targetIds.forEach(function (targetId) {\n var target = registry.getTarget(targetId);\n target.hover(monitor, targetId);\n });\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport { invariant } from '@react-dnd/invariant';\nimport { DROP } from './types';\nimport { isObject } from '../../utils/js_utils';\nexport function createDrop(manager) {\n return function drop() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyInvariants(monitor);\n var targetIds = getDroppableTargets(monitor); // Multiple actions are dispatched here, which is why this doesn't return an action\n\n targetIds.forEach(function (targetId, index) {\n var dropResult = determineDropResult(targetId, index, registry, monitor);\n var action = {\n type: DROP,\n payload: {\n dropResult: _objectSpread(_objectSpread({}, options), dropResult)\n }\n };\n manager.dispatch(action);\n });\n };\n}\nfunction verifyInvariants(monitor) {\n invariant(monitor.isDragging(), 'Cannot call drop while not dragging.');\n invariant(!monitor.didDrop(), 'Cannot call drop twice during one drag operation.');\n}\nfunction determineDropResult(targetId, index, registry, monitor) {\n var target = registry.getTarget(targetId);\n var dropResult = target ? target.drop(monitor, targetId) : undefined;\n verifyDropResultType(dropResult);\n if (typeof dropResult === 'undefined') {\n dropResult = index === 0 ? {} : monitor.getDropResult();\n }\n return dropResult;\n}\nfunction verifyDropResultType(dropResult) {\n invariant(typeof dropResult === 'undefined' || isObject(dropResult), 'Drop result must either be an object or undefined.');\n}\nfunction getDroppableTargets(monitor) {\n var targetIds = monitor.getTargetIds().filter(monitor.canDropOnTarget, monitor);\n targetIds.reverse();\n return targetIds;\n}","import { invariant } from '@react-dnd/invariant';\nimport { END_DRAG } from './types';\nexport function createEndDrag(manager) {\n return function endDrag() {\n var monitor = manager.getMonitor();\n var registry = manager.getRegistry();\n verifyIsDragging(monitor);\n var sourceId = monitor.getSourceId();\n if (sourceId != null) {\n var source = registry.getSource(sourceId, true);\n source.endDrag(monitor, sourceId);\n registry.unpinSource();\n }\n return {\n type: END_DRAG\n };\n };\n}\nfunction verifyIsDragging(monitor) {\n invariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.');\n}","/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a, b) {\n return {\n x: a.x + b.x,\n y: a.y + b.y\n };\n}\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\n\nexport function subtract(a, b) {\n return {\n x: a.x - b.x,\n y: a.y - b.y\n };\n}\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\n\nexport function getSourceClientOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset,\n initialSourceClientOffset = state.initialSourceClientOffset;\n if (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n return null;\n }\n return subtract(add(clientOffset, initialSourceClientOffset), initialClientOffset);\n}\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\n\nexport function getDifferenceFromInitialOffset(state) {\n var clientOffset = state.clientOffset,\n initialClientOffset = state.initialClientOffset;\n if (!clientOffset || !initialClientOffset) {\n return null;\n }\n return subtract(clientOffset, initialClientOffset);\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { invariant } from '@react-dnd/invariant';\nimport { matchesType } from './utils/matchesType';\nimport { getSourceClientOffset as _getSourceClientOffset, getDifferenceFromInitialOffset as _getDifferenceFromInitialOffset } from './utils/coords';\nimport { areDirty } from './utils/dirtiness';\nexport var DragDropMonitorImpl = /*#__PURE__*/function () {\n function DragDropMonitorImpl(store, registry) {\n _classCallCheck(this, DragDropMonitorImpl);\n this.store = store;\n this.registry = registry;\n }\n _createClass(DragDropMonitorImpl, [{\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n handlerIds: undefined\n };\n var handlerIds = options.handlerIds;\n invariant(typeof listener === 'function', 'listener must be a function.');\n invariant(typeof handlerIds === 'undefined' || Array.isArray(handlerIds), 'handlerIds, when specified, must be an array of strings.');\n var prevStateId = this.store.getState().stateId;\n var handleChange = function handleChange() {\n var state = _this.store.getState();\n var currentStateId = state.stateId;\n try {\n var canSkipListener = currentStateId === prevStateId || currentStateId === prevStateId + 1 && !areDirty(state.dirtyHandlerIds, handlerIds);\n if (!canSkipListener) {\n listener();\n }\n } finally {\n prevStateId = currentStateId;\n }\n };\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n var _this2 = this;\n invariant(typeof listener === 'function', 'listener must be a function.');\n var previousState = this.store.getState().dragOffset;\n var handleChange = function handleChange() {\n var nextState = _this2.store.getState().dragOffset;\n if (nextState === previousState) {\n return;\n }\n previousState = nextState;\n listener();\n };\n return this.store.subscribe(handleChange);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n if (!sourceId) {\n return false;\n }\n var source = this.registry.getSource(sourceId);\n invariant(source, 'Expected to find a valid source.');\n if (this.isDragging()) {\n return false;\n }\n return source.canDrag(this, sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n var target = this.registry.getTarget(targetId);\n invariant(target, 'Expected to find a valid target.');\n if (!this.isDragging() || this.didDrop()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n return matchesType(targetType, draggedItemType) && target.canDrop(this, targetId);\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n return Boolean(this.getItemType());\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n // undefined on initial render\n if (!sourceId) {\n return false;\n }\n var source = this.registry.getSource(sourceId, true);\n invariant(source, 'Expected to find a valid source.');\n if (!this.isDragging() || !this.isSourcePublic()) {\n return false;\n }\n var sourceType = this.registry.getSourceType(sourceId);\n var draggedItemType = this.getItemType();\n if (sourceType !== draggedItemType) {\n return false;\n }\n return source.isDragging(this, sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n shallow: false\n };\n\n // undefined on initial render\n if (!targetId) {\n return false;\n }\n var shallow = options.shallow;\n if (!this.isDragging()) {\n return false;\n }\n var targetType = this.registry.getTargetType(targetId);\n var draggedItemType = this.getItemType();\n if (draggedItemType && !matchesType(targetType, draggedItemType)) {\n return false;\n }\n var targetIds = this.getTargetIds();\n if (!targetIds.length) {\n return false;\n }\n var index = targetIds.indexOf(targetId);\n if (shallow) {\n return index === targetIds.length - 1;\n } else {\n return index > -1;\n }\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.store.getState().dragOperation.itemType;\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.store.getState().dragOperation.item;\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.store.getState().dragOperation.sourceId;\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.store.getState().dragOperation.targetIds;\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.store.getState().dragOperation.dropResult;\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.store.getState().dragOperation.didDrop;\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return Boolean(this.store.getState().dragOperation.isSourcePublic);\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.store.getState().dragOffset.initialClientOffset;\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.store.getState().dragOffset.initialSourceClientOffset;\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.store.getState().dragOffset.clientOffset;\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return _getSourceClientOffset(this.store.getState().dragOffset);\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return _getDifferenceFromInitialOffset(this.store.getState().dragOffset);\n }\n }]);\n return DragDropMonitorImpl;\n}();","export var HandlerRole;\n(function (HandlerRole) {\n HandlerRole[\"SOURCE\"] = \"SOURCE\";\n HandlerRole[\"TARGET\"] = \"TARGET\";\n})(HandlerRole || (HandlerRole = {}));","var nextUniqueId = 0;\nexport function getNextUniqueId() {\n return nextUniqueId++;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nimport { invariant } from '@react-dnd/invariant';\nexport function validateSourceContract(source) {\n invariant(typeof source.canDrag === 'function', 'Expected canDrag to be a function.');\n invariant(typeof source.beginDrag === 'function', 'Expected beginDrag to be a function.');\n invariant(typeof source.endDrag === 'function', 'Expected endDrag to be a function.');\n}\nexport function validateTargetContract(target) {\n invariant(typeof target.canDrop === 'function', 'Expected canDrop to be a function.');\n invariant(typeof target.hover === 'function', 'Expected hover to be a function.');\n invariant(typeof target.drop === 'function', 'Expected beginDrag to be a function.');\n}\nexport function validateType(type, allowArray) {\n if (allowArray && Array.isArray(type)) {\n type.forEach(function (t) {\n return validateType(t, false);\n });\n return;\n }\n invariant(typeof type === 'string' || _typeof(type) === 'symbol', allowArray ? 'Type can only be a string, a symbol, or an array of either.' : 'Type can only be a string or a symbol.');\n}","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n/* globals self */const scope = typeof global !== 'undefined' ? global : self;\nconst BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\nexport function makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n const timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n const intervalHandle = setInterval(handleTimer, 50);\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback) {\n let toggle = 1;\n const observer = new BrowserMutationObserver(callback);\n const node = document.createTextNode('');\n observer.observe(node, {\n characterData: true\n });\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\nexport const makeRequestCall = typeof BrowserMutationObserver === 'function' ?\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nmakeRequestCallFromMutationObserver :\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\nmakeRequestCallFromTimer;\n\n//# sourceMappingURL=makeRequestCall.mjs.map","// `call`, just like a function.\nexport class RawTask {\n call() {\n try {\n this.task && this.task();\n } catch (error) {\n this.onError(error);\n } finally {\n this.task = null;\n this.release(this);\n }\n }\n constructor(onError, release) {\n this.onError = onError;\n this.release = release;\n this.task = null;\n }\n}\n\n//# sourceMappingURL=RawTask.mjs.map","import { AsapQueue } from './AsapQueue.mjs';\nimport { TaskFactory } from './TaskFactory.mjs';\nconst asapQueue = new AsapQueue();\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError);\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task) {\n asapQueue.enqueueTask(taskFactory.create(task));\n}\n\n//# sourceMappingURL=asap.mjs.map","import { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.mjs';\nexport class AsapQueue {\n // Use the fastest means possible to execute a task in its own turn, with\n // priority over other events including IO, animation, reflow, and redraw\n // events in browsers.\n //\n // An exception thrown by a task will permanently interrupt the processing of\n // subsequent tasks. The higher level `asap` function ensures that if an\n // exception is thrown by a task, that the task queue will continue flushing as\n // soon as possible, but if you use `rawAsap` directly, you are responsible to\n // either ensure that no exceptions are thrown from your task, or to manually\n // call `rawAsap.requestFlush` if an exception is thrown.\n enqueueTask(task) {\n const {\n queue: q,\n requestFlush\n } = this;\n if (!q.length) {\n requestFlush();\n this.flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n q[q.length] = task;\n }\n constructor() {\n this.queue = [];\n // We queue errors to ensure they are thrown in right order (FIFO).\n // Array-as-queue is good enough here, since we are just dealing with exceptions.\n this.pendingErrors = [];\n // Once a flush has been requested, no further calls to `requestFlush` are\n // necessary until the next `flush` completes.\n // @ts-ignore\n this.flushing = false;\n // The position of the next task to execute in the task queue. This is\n // preserved between calls to `flush` so that it can be resumed if\n // a task throws an exception.\n this.index = 0;\n // If a task schedules additional tasks recursively, the task queue can grow\n // unbounded. To prevent memory exhaustion, the task queue will periodically\n // truncate already-completed tasks.\n this.capacity = 1024;\n // The flush function processes all tasks that have been scheduled with\n // `rawAsap` unless and until one of those tasks throws an exception.\n // If a task throws an exception, `flush` ensures that its state will remain\n // consistent and will resume where it left off when called again.\n // However, `flush` does not make any arrangements to be called again if an\n // exception is thrown.\n this.flush = () => {\n const {\n queue: q\n } = this;\n while (this.index < q.length) {\n const currentIndex = this.index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n this.index++;\n q[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (this.index > this.capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (let scan = 0, newLength = q.length - this.index; scan < newLength; scan++) {\n q[scan] = q[scan + this.index];\n }\n q.length -= this.index;\n this.index = 0;\n }\n }\n q.length = 0;\n this.index = 0;\n this.flushing = false;\n };\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n this.registerPendingError = err => {\n this.pendingErrors.push(err);\n this.requestErrorThrow();\n };\n // `requestFlush` requests that the high priority event queue be flushed as\n // soon as possible.\n // This is useful to prevent an error thrown in a task from stalling the event\n // queue if the exception handled by Node.js’s\n // `process.on(\"uncaughtException\")` or by a domain.\n // `requestFlush` is implemented using a strategy based on data collected from\n // every available SauceLabs Selenium web driver worker at time of writing.\n // https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n this.requestFlush = makeRequestCall(this.flush);\n this.requestErrorThrow = makeRequestCallFromTimer(() => {\n // Throw first error\n if (this.pendingErrors.length) {\n throw this.pendingErrors.shift();\n }\n });\n }\n} // The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n//# sourceMappingURL=AsapQueue.mjs.map","import { RawTask } from './RawTask.mjs';\nexport class TaskFactory {\n create(task) {\n const tasks = this.freeTasks;\n const t1 = tasks.length ? tasks.pop() : new RawTask(this.onError, t => tasks[tasks.length] = t);\n t1.task = task;\n return t1;\n }\n constructor(onError) {\n this.onError = onError;\n this.freeTasks = [];\n }\n}\n\n//# sourceMappingURL=TaskFactory.mjs.map","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { invariant } from '@react-dnd/invariant';\nimport { addSource as _addSource, addTarget as _addTarget, removeSource as _removeSource, removeTarget as _removeTarget } from './actions/registry';\nimport { getNextUniqueId } from './utils/getNextUniqueId';\nimport { HandlerRole } from './interfaces';\nimport { validateSourceContract, validateTargetContract, validateType } from './contracts';\nimport { asap } from '@react-dnd/asap';\nfunction getNextHandlerId(role) {\n var id = getNextUniqueId().toString();\n switch (role) {\n case HandlerRole.SOURCE:\n return \"S\".concat(id);\n case HandlerRole.TARGET:\n return \"T\".concat(id);\n default:\n throw new Error(\"Unknown Handler Role: \".concat(role));\n }\n}\nfunction parseRoleFromHandlerId(handlerId) {\n switch (handlerId[0]) {\n case 'S':\n return HandlerRole.SOURCE;\n case 'T':\n return HandlerRole.TARGET;\n default:\n invariant(false, \"Cannot parse handler ID: \".concat(handlerId));\n }\n}\nfunction mapContainsValue(map, searchValue) {\n var entries = map.entries();\n var isDone = false;\n do {\n var _entries$next = entries.next(),\n done = _entries$next.done,\n _entries$next$value = _slicedToArray(_entries$next.value, 2),\n value = _entries$next$value[1];\n if (value === searchValue) {\n return true;\n }\n isDone = !!done;\n } while (!isDone);\n return false;\n}\nexport var HandlerRegistryImpl = /*#__PURE__*/function () {\n function HandlerRegistryImpl(store) {\n _classCallCheck(this, HandlerRegistryImpl);\n this.types = new Map();\n this.dragSources = new Map();\n this.dropTargets = new Map();\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n this.store = store;\n }\n _createClass(HandlerRegistryImpl, [{\n key: \"addSource\",\n value: function addSource(type, source) {\n validateType(type);\n validateSourceContract(source);\n var sourceId = this.addHandler(HandlerRole.SOURCE, type, source);\n this.store.dispatch(_addSource(sourceId));\n return sourceId;\n }\n }, {\n key: \"addTarget\",\n value: function addTarget(type, target) {\n validateType(type, true);\n validateTargetContract(target);\n var targetId = this.addHandler(HandlerRole.TARGET, type, target);\n this.store.dispatch(_addTarget(targetId));\n return targetId;\n }\n }, {\n key: \"containsHandler\",\n value: function containsHandler(handler) {\n return mapContainsValue(this.dragSources, handler) || mapContainsValue(this.dropTargets, handler);\n }\n }, {\n key: \"getSource\",\n value: function getSource(sourceId) {\n var includePinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n var isPinned = includePinned && sourceId === this.pinnedSourceId;\n var source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId);\n return source;\n }\n }, {\n key: \"getTarget\",\n value: function getTarget(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.dropTargets.get(targetId);\n }\n }, {\n key: \"getSourceType\",\n value: function getSourceType(sourceId) {\n invariant(this.isSourceId(sourceId), 'Expected a valid source ID.');\n return this.types.get(sourceId);\n }\n }, {\n key: \"getTargetType\",\n value: function getTargetType(targetId) {\n invariant(this.isTargetId(targetId), 'Expected a valid target ID.');\n return this.types.get(targetId);\n }\n }, {\n key: \"isSourceId\",\n value: function isSourceId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.SOURCE;\n }\n }, {\n key: \"isTargetId\",\n value: function isTargetId(handlerId) {\n var role = parseRoleFromHandlerId(handlerId);\n return role === HandlerRole.TARGET;\n }\n }, {\n key: \"removeSource\",\n value: function removeSource(sourceId) {\n var _this = this;\n invariant(this.getSource(sourceId), 'Expected an existing source.');\n this.store.dispatch(_removeSource(sourceId));\n asap(function () {\n _this.dragSources.delete(sourceId);\n _this.types.delete(sourceId);\n });\n }\n }, {\n key: \"removeTarget\",\n value: function removeTarget(targetId) {\n invariant(this.getTarget(targetId), 'Expected an existing target.');\n this.store.dispatch(_removeTarget(targetId));\n this.dropTargets.delete(targetId);\n this.types.delete(targetId);\n }\n }, {\n key: \"pinSource\",\n value: function pinSource(sourceId) {\n var source = this.getSource(sourceId);\n invariant(source, 'Expected an existing source.');\n this.pinnedSourceId = sourceId;\n this.pinnedSource = source;\n }\n }, {\n key: \"unpinSource\",\n value: function unpinSource() {\n invariant(this.pinnedSource, 'No source is pinned at the time.');\n this.pinnedSourceId = null;\n this.pinnedSource = null;\n }\n }, {\n key: \"addHandler\",\n value: function addHandler(role, type, handler) {\n var id = getNextHandlerId(role);\n this.types.set(id, type);\n if (role === HandlerRole.SOURCE) {\n this.dragSources.set(id, handler);\n } else if (role === HandlerRole.TARGET) {\n this.dropTargets.set(id, handler);\n }\n return id;\n }\n }]);\n return HandlerRegistryImpl;\n}();","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { createStore } from 'redux';\nimport { reduce } from './reducers';\nimport { createDragDropActions } from './actions/dragDrop';\nimport { DragDropMonitorImpl } from './DragDropMonitorImpl';\nimport { HandlerRegistryImpl } from './HandlerRegistryImpl';\nfunction makeStoreInstance(debugMode) {\n // TODO: if we ever make a react-native version of this,\n // we'll need to consider how to pull off dev-tooling\n var reduxDevTools = typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__;\n return createStore(reduce, debugMode && reduxDevTools && reduxDevTools({\n name: 'dnd-core',\n instanceId: 'dnd-core'\n }));\n}\nexport var DragDropManagerImpl = /*#__PURE__*/function () {\n function DragDropManagerImpl() {\n var _this = this;\n var debugMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n _classCallCheck(this, DragDropManagerImpl);\n this.isSetUp = false;\n this.handleRefCountChange = function () {\n var shouldSetUp = _this.store.getState().refCount > 0;\n if (_this.backend) {\n if (shouldSetUp && !_this.isSetUp) {\n _this.backend.setup();\n _this.isSetUp = true;\n } else if (!shouldSetUp && _this.isSetUp) {\n _this.backend.teardown();\n _this.isSetUp = false;\n }\n }\n };\n var store = makeStoreInstance(debugMode);\n this.store = store;\n this.monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store));\n store.subscribe(this.handleRefCountChange);\n }\n _createClass(DragDropManagerImpl, [{\n key: \"receiveBackend\",\n value: function receiveBackend(backend) {\n this.backend = backend;\n }\n }, {\n key: \"getMonitor\",\n value: function getMonitor() {\n return this.monitor;\n }\n }, {\n key: \"getBackend\",\n value: function getBackend() {\n return this.backend;\n }\n }, {\n key: \"getRegistry\",\n value: function getRegistry() {\n return this.monitor.registry;\n }\n }, {\n key: \"getActions\",\n value: function getActions() {\n /* eslint-disable-next-line @typescript-eslint/no-this-alias */\n var manager = this;\n var dispatch = this.store.dispatch;\n function bindActionCreator(actionCreator) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var action = actionCreator.apply(manager, args);\n if (typeof action !== 'undefined') {\n dispatch(action);\n }\n };\n }\n var actions = createDragDropActions(this);\n return Object.keys(actions).reduce(function (boundActions, key) {\n var action = actions[key];\n boundActions[key] = bindActionCreator(action);\n return boundActions;\n }, {});\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(action) {\n this.store.dispatch(action);\n }\n }]);\n return DragDropManagerImpl;\n}();","import { createBeginDrag } from './beginDrag';\nimport { createPublishDragSource } from './publishDragSource';\nimport { createHover } from './hover';\nimport { createDrop } from './drop';\nimport { createEndDrag } from './endDrag';\nexport * from './types';\nexport function createDragDropActions(manager) {\n return {\n beginDrag: createBeginDrag(manager),\n publishDragSource: createPublishDragSource(manager),\n hover: createHover(manager),\n drop: createDrop(manager),\n endDrag: createEndDrag(manager)\n };\n}","import { DragDropManagerImpl } from './DragDropManagerImpl';\nexport function createDragDropManager(backendFactory, globalContext, backendOptions, debugMode) {\n var manager = new DragDropManagerImpl(debugMode);\n var backend = backendFactory(manager, globalContext, backendOptions);\n manager.receiveBackend(backend);\n return manager;\n}","import * as React from 'react';\nimport { createDragDropManager } from 'dnd-core';\n/**\n * Create the React Context\n */\n\nexport var DndContext = React.createContext({\n dragDropManager: undefined\n});\n/**\n * Creates the context object we're providing\n * @param backend\n * @param context\n */\n\nexport function createDndContext(backend, context, options, debugMode) {\n return {\n dragDropManager: createDragDropManager(backend, context, options, debugMode)\n };\n}","import { useLayoutEffect, useEffect } from 'react'; // suppress the useLayoutEffect warning on server side.\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","function shallowEqual(objA, objB, compare, compareContext) {\n var compareResult = compare ? compare.call(compareContext, objA, objB) : void 0;\n if (compareResult !== void 0) {\n return !!compareResult;\n }\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\n }\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n if (!bHasOwnProperty(key)) {\n return false;\n }\n var valueA = objA[key];\n var valueB = objB[key];\n compareResult = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n if (compareResult === false || compareResult === void 0 && valueA !== valueB) {\n return false;\n }\n }\n return true;\n}\nexport { shallowEqual };\n//# sourceMappingURL=shallowequal.esm.js.map","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { useState, useCallback } from 'react';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\n\nexport function useCollector(monitor, collect, onUpdate) {\n var _useState = useState(function () {\n return collect(monitor);\n }),\n _useState2 = _slicedToArray(_useState, 2),\n collected = _useState2[0],\n setCollected = _useState2[1];\n var updateCollected = useCallback(function () {\n var nextValue = collect(monitor);\n if (!shallowEqual(collected, nextValue)) {\n setCollected(nextValue);\n if (onUpdate) {\n onUpdate();\n }\n }\n }, [collected, monitor, onUpdate]); // update the collected properties after the first render\n // and the components are attached to dnd-core\n\n useIsomorphicLayoutEffect(updateCollected, []);\n return [collected, updateCollected];\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useCollector } from './useCollector';\nexport function useMonitorOutput(monitor, collect, onCollect) {\n var _useCollector = useCollector(monitor, collect, onCollect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n useIsomorphicLayoutEffect(function subscribeToMonitorStateChange() {\n var handlerId = monitor.getHandlerId();\n if (handlerId == null) {\n return undefined;\n }\n return monitor.subscribeToStateChange(updateCollected, {\n handlerIds: [handlerId]\n });\n }, [monitor, updateCollected]);\n return collected;\n}","import { useContext } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { DndContext } from '../common/DndContext';\n/**\n * A hook to retrieve the DragDropManager from Context\n */\n\nexport function useDragDropManager() {\n var _useContext = useContext(DndContext),\n dragDropManager = _useContext.dragDropManager;\n invariant(dragDropManager != null, 'Expected drag drop context');\n return dragDropManager;\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrag = false;\nvar isCallingIsDragging = false;\nexport var DragSourceMonitorImpl = /*#__PURE__*/function () {\n function DragSourceMonitorImpl(manager) {\n _classCallCheck(this, DragSourceMonitorImpl);\n this.sourceId = null;\n this.internalMonitor = manager.getMonitor();\n }\n _createClass(DragSourceMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(sourceId) {\n this.sourceId = sourceId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.sourceId;\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n invariant(!isCallingCanDrag, 'You may not call monitor.canDrag() inside your canDrag() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingCanDrag = true;\n return this.internalMonitor.canDragSource(this.sourceId);\n } finally {\n isCallingCanDrag = false;\n }\n }\n }, {\n key: \"isDragging\",\n value: function isDragging() {\n if (!this.sourceId) {\n return false;\n }\n invariant(!isCallingIsDragging, 'You may not call monitor.isDragging() inside your isDragging() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor');\n try {\n isCallingIsDragging = true;\n return this.internalMonitor.isDraggingSource(this.sourceId);\n } finally {\n isCallingIsDragging = false;\n }\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"isDraggingSource\",\n value: function isDraggingSource(sourceId) {\n return this.internalMonitor.isDraggingSource(sourceId);\n }\n }, {\n key: \"isOverTarget\",\n value: function isOverTarget(targetId, options) {\n return this.internalMonitor.isOverTarget(targetId, options);\n }\n }, {\n key: \"getTargetIds\",\n value: function getTargetIds() {\n return this.internalMonitor.getTargetIds();\n }\n }, {\n key: \"isSourcePublic\",\n value: function isSourcePublic() {\n return this.internalMonitor.isSourcePublic();\n }\n }, {\n key: \"getSourceId\",\n value: function getSourceId() {\n return this.internalMonitor.getSourceId();\n }\n }, {\n key: \"subscribeToOffsetChange\",\n value: function subscribeToOffsetChange(listener) {\n return this.internalMonitor.subscribeToOffsetChange(listener);\n }\n }, {\n key: \"canDragSource\",\n value: function canDragSource(sourceId) {\n return this.internalMonitor.canDragSource(sourceId);\n }\n }, {\n key: \"canDropOnTarget\",\n value: function canDropOnTarget(targetId) {\n return this.internalMonitor.canDropOnTarget(targetId);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n return DragSourceMonitorImpl;\n}();","import { cloneElement } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nfunction setRef(ref, node) {\n if (typeof ref === 'function') {\n ref(node);\n } else {\n ref.current = node;\n }\n}\nexport function cloneWithRef(element, newRef) {\n var previousRef = element.ref;\n invariant(typeof previousRef !== 'string', 'Cannot connect React DnD to an element with an existing string ref. ' + 'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' + 'Read more: https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute');\n if (!previousRef) {\n // When there is no ref on the element, use the new ref directly\n return cloneElement(element, {\n ref: newRef\n });\n } else {\n return cloneElement(element, {\n ref: function ref(node) {\n setRef(previousRef, node);\n setRef(newRef, node);\n }\n });\n }\n}","import { isValidElement } from 'react';\nimport { cloneWithRef } from '../utils/cloneWithRef';\nfunction throwIfCompositeComponentElement(element) {\n // Custom components can no longer be wrapped directly in React DnD 2.0\n // so that we don't need to depend on findDOMNode() from react-dom.\n if (typeof element.type === 'string') {\n return;\n }\n var displayName = element.type.displayName || element.type.name || 'the component';\n throw new Error('Only native element nodes can now be passed to React DnD connectors.' + \"You can either wrap \".concat(displayName, \" into a <div>, or turn it into a \") + 'drag source or a drop target itself.');\n}\nfunction wrapHookToRecognizeElement(hook) {\n return function () {\n var elementOrNode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n // When passed a node, call the hook straight away.\n if (!isValidElement(elementOrNode)) {\n var node = elementOrNode;\n hook(node, options); // return the node so it can be chained (e.g. when within callback refs\n // <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\n return node;\n } // If passed a ReactElement, clone it and attach this function as a ref.\n // This helps us achieve a neat API where user doesn't even know that refs\n // are being used under the hood.\n\n var element = elementOrNode;\n throwIfCompositeComponentElement(element); // When no options are passed, use the hook directly\n\n var ref = options ? function (node) {\n return hook(node, options);\n } : hook;\n return cloneWithRef(element, ref);\n };\n}\nexport function wrapConnectorHooks(hooks) {\n var wrappedHooks = {};\n Object.keys(hooks).forEach(function (key) {\n var hook = hooks[key]; // ref objects should be passed straight through without wrapping\n\n if (key.endsWith('Ref')) {\n wrappedHooks[key] = hooks[key];\n } else {\n var wrappedHook = wrapHookToRecognizeElement(hook);\n wrappedHooks[key] = function () {\n return wrappedHook;\n };\n }\n });\n return wrappedHooks;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nexport function isRef(obj) {\n return (\n // eslint-disable-next-line no-prototype-builtins\n obj !== null && _typeof(obj) === 'object' && Object.prototype.hasOwnProperty.call(obj, 'current')\n );\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nimport { shallowEqual } from '@react-dnd/shallowequal';\nexport var SourceConnector = /*#__PURE__*/function () {\n function SourceConnector(backend) {\n var _this = this;\n _classCallCheck(this, SourceConnector);\n this.hooks = wrapConnectorHooks({\n dragSource: function dragSource(node, options) {\n _this.clearDragSource();\n _this.dragSourceOptions = options || null;\n if (isRef(node)) {\n _this.dragSourceRef = node;\n } else {\n _this.dragSourceNode = node;\n }\n _this.reconnectDragSource();\n },\n dragPreview: function dragPreview(node, options) {\n _this.clearDragPreview();\n _this.dragPreviewOptions = options || null;\n if (isRef(node)) {\n _this.dragPreviewRef = node;\n } else {\n _this.dragPreviewNode = node;\n }\n _this.reconnectDragPreview();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dragSourceRef = null;\n this.dragSourceOptionsInternal = null; // The drag preview may either be attached via ref or connect function\n\n this.dragPreviewRef = null;\n this.dragPreviewOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDragSource = null;\n this.lastConnectedDragSourceOptions = null;\n this.lastConnectedDragPreview = null;\n this.lastConnectedDragPreviewOptions = null;\n this.backend = backend;\n }\n _createClass(SourceConnector, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (this.handlerId === newHandlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"reconnect\",\n value: function reconnect() {\n this.reconnectDragSource();\n this.reconnectDragPreview();\n }\n }, {\n key: \"reconnectDragSource\",\n value: function reconnectDragSource() {\n var dragSource = this.dragSource; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragSourceChange() || this.didDragSourceOptionsChange();\n if (didChange) {\n this.disconnectDragSource();\n }\n if (!this.handlerId) {\n return;\n }\n if (!dragSource) {\n this.lastConnectedDragSource = dragSource;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragSource = dragSource;\n this.lastConnectedDragSourceOptions = this.dragSourceOptions;\n this.dragSourceUnsubscribe = this.backend.connectDragSource(this.handlerId, dragSource, this.dragSourceOptions);\n }\n }\n }, {\n key: \"reconnectDragPreview\",\n value: function reconnectDragPreview() {\n var dragPreview = this.dragPreview; // if nothing has changed then don't resubscribe\n\n var didChange = this.didHandlerIdChange() || this.didConnectedDragPreviewChange() || this.didDragPreviewOptionsChange();\n if (didChange) {\n this.disconnectDragPreview();\n }\n if (!this.handlerId) {\n return;\n }\n if (!dragPreview) {\n this.lastConnectedDragPreview = dragPreview;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDragPreview = dragPreview;\n this.lastConnectedDragPreviewOptions = this.dragPreviewOptions;\n this.dragPreviewUnsubscribe = this.backend.connectDragPreview(this.handlerId, dragPreview, this.dragPreviewOptions);\n }\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didConnectedDragSourceChange\",\n value: function didConnectedDragSourceChange() {\n return this.lastConnectedDragSource !== this.dragSource;\n }\n }, {\n key: \"didConnectedDragPreviewChange\",\n value: function didConnectedDragPreviewChange() {\n return this.lastConnectedDragPreview !== this.dragPreview;\n }\n }, {\n key: \"didDragSourceOptionsChange\",\n value: function didDragSourceOptionsChange() {\n return !shallowEqual(this.lastConnectedDragSourceOptions, this.dragSourceOptions);\n }\n }, {\n key: \"didDragPreviewOptionsChange\",\n value: function didDragPreviewOptionsChange() {\n return !shallowEqual(this.lastConnectedDragPreviewOptions, this.dragPreviewOptions);\n }\n }, {\n key: \"disconnectDragSource\",\n value: function disconnectDragSource() {\n if (this.dragSourceUnsubscribe) {\n this.dragSourceUnsubscribe();\n this.dragSourceUnsubscribe = undefined;\n }\n }\n }, {\n key: \"disconnectDragPreview\",\n value: function disconnectDragPreview() {\n if (this.dragPreviewUnsubscribe) {\n this.dragPreviewUnsubscribe();\n this.dragPreviewUnsubscribe = undefined;\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }\n }, {\n key: \"clearDragSource\",\n value: function clearDragSource() {\n this.dragSourceNode = null;\n this.dragSourceRef = null;\n }\n }, {\n key: \"clearDragPreview\",\n value: function clearDragPreview() {\n this.dragPreviewNode = null;\n this.dragPreviewRef = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dragSource;\n }\n }, {\n key: \"dragSourceOptions\",\n get: function get() {\n return this.dragSourceOptionsInternal;\n },\n set: function set(options) {\n this.dragSourceOptionsInternal = options;\n }\n }, {\n key: \"dragPreviewOptions\",\n get: function get() {\n return this.dragPreviewOptionsInternal;\n },\n set: function set(options) {\n this.dragPreviewOptionsInternal = options;\n }\n }, {\n key: \"dragSource\",\n get: function get() {\n return this.dragSourceNode || this.dragSourceRef && this.dragSourceRef.current;\n }\n }, {\n key: \"dragPreview\",\n get: function get() {\n return this.dragPreviewNode || this.dragPreviewRef && this.dragPreviewRef.current;\n }\n }]);\n return SourceConnector;\n}();","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nimport { useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { registerSource } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { DragSourceMonitorImpl } from '../../common/DragSourceMonitorImpl';\nimport { SourceConnector } from '../../common/SourceConnector';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDragSourceMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DragSourceMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new SourceConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDragHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n beginDrag: function beginDrag() {\n var _spec$current = spec.current,\n begin = _spec$current.begin,\n item = _spec$current.item;\n if (begin) {\n var beginResult = begin(monitor);\n invariant(beginResult == null || _typeof(beginResult) === 'object', 'dragSpec.begin() must either return an object, undefined, or null');\n return beginResult || item || {};\n }\n return item || {};\n },\n canDrag: function canDrag() {\n if (typeof spec.current.canDrag === 'boolean') {\n return spec.current.canDrag;\n } else if (typeof spec.current.canDrag === 'function') {\n return spec.current.canDrag(monitor);\n } else {\n return true;\n }\n },\n isDragging: function isDragging(globalMonitor, target) {\n var isDragging = spec.current.isDragging;\n return isDragging ? isDragging(monitor) : target === globalMonitor.getSourceId();\n },\n endDrag: function endDrag() {\n var end = spec.current.end;\n if (end) {\n end(monitor.getItem(), monitor);\n }\n connector.reconnect();\n }\n };\n }, []);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerSource = registerSource(spec.current.item.type, handler, manager),\n _registerSource2 = _slicedToArray(_registerSource, 2),\n handlerId = _registerSource2[0],\n unregister = _registerSource2[1];\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, []);\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDragSourceMonitor, useDragHandler } from './internal/drag';\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification *\n */\n\nexport function useDrag(spec) {\n var specRef = useRef(spec);\n specRef.current = spec; // TODO: wire options into createSourceConnector\n\n invariant(spec.item != null, 'item must be defined');\n invariant(spec.item.type != null, 'item type must be defined');\n var _useDragSourceMonitor = useDragSourceMonitor(),\n _useDragSourceMonitor2 = _slicedToArray(_useDragSourceMonitor, 2),\n monitor = _useDragSourceMonitor2[0],\n connector = _useDragSourceMonitor2[1];\n useDragHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDragSource = useMemo(function () {\n return connector.hooks.dragSource();\n }, [connector]);\n var connectDragPreview = useMemo(function () {\n return connector.hooks.dragPreview();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragSourceOptions = specRef.current.options || null;\n connector.reconnect();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dragPreviewOptions = specRef.current.previewOptions || null;\n connector.reconnect();\n }, [connector]);\n return [result, connectDragSource, connectDragPreview];\n}","export function registerTarget(type, target, manager) {\n var registry = manager.getRegistry();\n var targetId = registry.addTarget(type, target);\n return [targetId, function () {\n return registry.removeTarget(targetId);\n }];\n}\nexport function registerSource(type, source, manager) {\n var registry = manager.getRegistry();\n var sourceId = registry.addSource(type, source);\n return [sourceId, function () {\n return registry.removeSource(sourceId);\n }];\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { shallowEqual } from '@react-dnd/shallowequal';\nimport { wrapConnectorHooks } from './wrapConnectorHooks';\nimport { isRef } from '../utils/isRef';\nexport var TargetConnector = /*#__PURE__*/function () {\n function TargetConnector(backend) {\n var _this = this;\n _classCallCheck(this, TargetConnector);\n this.hooks = wrapConnectorHooks({\n dropTarget: function dropTarget(node, options) {\n _this.clearDropTarget();\n _this.dropTargetOptions = options;\n if (isRef(node)) {\n _this.dropTargetRef = node;\n } else {\n _this.dropTargetNode = node;\n }\n _this.reconnect();\n }\n });\n this.handlerId = null; // The drop target may either be attached via ref or connect function\n\n this.dropTargetRef = null;\n this.dropTargetOptionsInternal = null;\n this.lastConnectedHandlerId = null;\n this.lastConnectedDropTarget = null;\n this.lastConnectedDropTargetOptions = null;\n this.backend = backend;\n }\n _createClass(TargetConnector, [{\n key: \"reconnect\",\n value: function reconnect() {\n // if nothing has changed then don't resubscribe\n var didChange = this.didHandlerIdChange() || this.didDropTargetChange() || this.didOptionsChange();\n if (didChange) {\n this.disconnectDropTarget();\n }\n var dropTarget = this.dropTarget;\n if (!this.handlerId) {\n return;\n }\n if (!dropTarget) {\n this.lastConnectedDropTarget = dropTarget;\n return;\n }\n if (didChange) {\n this.lastConnectedHandlerId = this.handlerId;\n this.lastConnectedDropTarget = dropTarget;\n this.lastConnectedDropTargetOptions = this.dropTargetOptions;\n this.unsubscribeDropTarget = this.backend.connectDropTarget(this.handlerId, dropTarget, this.dropTargetOptions);\n }\n }\n }, {\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(newHandlerId) {\n if (newHandlerId === this.handlerId) {\n return;\n }\n this.handlerId = newHandlerId;\n this.reconnect();\n }\n }, {\n key: \"didHandlerIdChange\",\n value: function didHandlerIdChange() {\n return this.lastConnectedHandlerId !== this.handlerId;\n }\n }, {\n key: \"didDropTargetChange\",\n value: function didDropTargetChange() {\n return this.lastConnectedDropTarget !== this.dropTarget;\n }\n }, {\n key: \"didOptionsChange\",\n value: function didOptionsChange() {\n return !shallowEqual(this.lastConnectedDropTargetOptions, this.dropTargetOptions);\n }\n }, {\n key: \"disconnectDropTarget\",\n value: function disconnectDropTarget() {\n if (this.unsubscribeDropTarget) {\n this.unsubscribeDropTarget();\n this.unsubscribeDropTarget = undefined;\n }\n }\n }, {\n key: \"clearDropTarget\",\n value: function clearDropTarget() {\n this.dropTargetRef = null;\n this.dropTargetNode = null;\n }\n }, {\n key: \"connectTarget\",\n get: function get() {\n return this.dropTarget;\n }\n }, {\n key: \"dropTargetOptions\",\n get: function get() {\n return this.dropTargetOptionsInternal;\n },\n set: function set(options) {\n this.dropTargetOptionsInternal = options;\n }\n }, {\n key: \"dropTarget\",\n get: function get() {\n return this.dropTargetNode || this.dropTargetRef && this.dropTargetRef.current;\n }\n }]);\n return TargetConnector;\n}();","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { invariant } from '@react-dnd/invariant';\nvar isCallingCanDrop = false;\nexport var DropTargetMonitorImpl = /*#__PURE__*/function () {\n function DropTargetMonitorImpl(manager) {\n _classCallCheck(this, DropTargetMonitorImpl);\n this.targetId = null;\n this.internalMonitor = manager.getMonitor();\n }\n _createClass(DropTargetMonitorImpl, [{\n key: \"receiveHandlerId\",\n value: function receiveHandlerId(targetId) {\n this.targetId = targetId;\n }\n }, {\n key: \"getHandlerId\",\n value: function getHandlerId() {\n return this.targetId;\n }\n }, {\n key: \"subscribeToStateChange\",\n value: function subscribeToStateChange(listener, options) {\n return this.internalMonitor.subscribeToStateChange(listener, options);\n }\n }, {\n key: \"canDrop\",\n value: function canDrop() {\n // Cut out early if the target id has not been set. This should prevent errors\n // where the user has an older version of dnd-core like in\n // https://github.com/react-dnd/react-dnd/issues/1310\n if (!this.targetId) {\n return false;\n }\n invariant(!isCallingCanDrop, 'You may not call monitor.canDrop() inside your canDrop() implementation. ' + 'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor');\n try {\n isCallingCanDrop = true;\n return this.internalMonitor.canDropOnTarget(this.targetId);\n } finally {\n isCallingCanDrop = false;\n }\n }\n }, {\n key: \"isOver\",\n value: function isOver(options) {\n if (!this.targetId) {\n return false;\n }\n return this.internalMonitor.isOverTarget(this.targetId, options);\n }\n }, {\n key: \"getItemType\",\n value: function getItemType() {\n return this.internalMonitor.getItemType();\n }\n }, {\n key: \"getItem\",\n value: function getItem() {\n return this.internalMonitor.getItem();\n }\n }, {\n key: \"getDropResult\",\n value: function getDropResult() {\n return this.internalMonitor.getDropResult();\n }\n }, {\n key: \"didDrop\",\n value: function didDrop() {\n return this.internalMonitor.didDrop();\n }\n }, {\n key: \"getInitialClientOffset\",\n value: function getInitialClientOffset() {\n return this.internalMonitor.getInitialClientOffset();\n }\n }, {\n key: \"getInitialSourceClientOffset\",\n value: function getInitialSourceClientOffset() {\n return this.internalMonitor.getInitialSourceClientOffset();\n }\n }, {\n key: \"getSourceClientOffset\",\n value: function getSourceClientOffset() {\n return this.internalMonitor.getSourceClientOffset();\n }\n }, {\n key: \"getClientOffset\",\n value: function getClientOffset() {\n return this.internalMonitor.getClientOffset();\n }\n }, {\n key: \"getDifferenceFromInitialOffset\",\n value: function getDifferenceFromInitialOffset() {\n return this.internalMonitor.getDifferenceFromInitialOffset();\n }\n }]);\n return DropTargetMonitorImpl;\n}();","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { useMemo } from 'react';\nimport { registerTarget } from '../../common/registration';\nimport { useDragDropManager } from '../useDragDropManager';\nimport { TargetConnector } from '../../common/TargetConnector';\nimport { DropTargetMonitorImpl } from '../../common/DropTargetMonitorImpl';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nexport function useDropTargetMonitor() {\n var manager = useDragDropManager();\n var monitor = useMemo(function () {\n return new DropTargetMonitorImpl(manager);\n }, [manager]);\n var connector = useMemo(function () {\n return new TargetConnector(manager.getBackend());\n }, [manager]);\n return [monitor, connector];\n}\nexport function useDropHandler(spec, monitor, connector) {\n var manager = useDragDropManager();\n var handler = useMemo(function () {\n return {\n canDrop: function canDrop() {\n var canDrop = spec.current.canDrop;\n return canDrop ? canDrop(monitor.getItem(), monitor) : true;\n },\n hover: function hover() {\n var hover = spec.current.hover;\n if (hover) {\n hover(monitor.getItem(), monitor);\n }\n },\n drop: function drop() {\n var drop = spec.current.drop;\n if (drop) {\n return drop(monitor.getItem(), monitor);\n }\n }\n };\n }, [monitor]);\n useIsomorphicLayoutEffect(function registerHandler() {\n var _registerTarget = registerTarget(spec.current.accept, handler, manager),\n _registerTarget2 = _slicedToArray(_registerTarget, 2),\n handlerId = _registerTarget2[0],\n unregister = _registerTarget2[1];\n monitor.receiveHandlerId(handlerId);\n connector.receiveHandlerId(handlerId);\n return unregister;\n }, [monitor, connector]);\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { useRef, useMemo } from 'react';\nimport { invariant } from '@react-dnd/invariant';\nimport { useMonitorOutput } from './internal/useMonitorOutput';\nimport { useIsomorphicLayoutEffect } from './internal/useIsomorphicLayoutEffect';\nimport { useDropHandler, useDropTargetMonitor } from './internal/drop';\n/**\n * useDropTarget Hook\n * @param spec The drop target specification\n */\n\nexport function useDrop(spec) {\n var specRef = useRef(spec);\n specRef.current = spec;\n invariant(spec.accept != null, 'accept must be defined');\n var _useDropTargetMonitor = useDropTargetMonitor(),\n _useDropTargetMonitor2 = _slicedToArray(_useDropTargetMonitor, 2),\n monitor = _useDropTargetMonitor2[0],\n connector = _useDropTargetMonitor2[1];\n useDropHandler(specRef, monitor, connector);\n var result = useMonitorOutput(monitor, specRef.current.collect || function () {\n return {};\n }, function () {\n return connector.reconnect();\n });\n var connectDropTarget = useMemo(function () {\n return connector.hooks.dropTarget();\n }, [connector]);\n useIsomorphicLayoutEffect(function () {\n connector.dropTargetOptions = spec.options || null;\n connector.reconnect();\n }, [spec.options]);\n return [result, connectDropTarget];\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport { useEffect } from 'react';\nimport { useDragDropManager } from './useDragDropManager';\nimport { useCollector } from './internal/useCollector';\n/**\n * useDragLayer Hook\n * @param collector The property collector\n */\n\nexport function useDragLayer(collect) {\n var dragDropManager = useDragDropManager();\n var monitor = dragDropManager.getMonitor();\n var _useCollector = useCollector(monitor, collect),\n _useCollector2 = _slicedToArray(_useCollector, 2),\n collected = _useCollector2[0],\n updateCollected = _useCollector2[1];\n useEffect(function () {\n return monitor.subscribeToOffsetChange(updateCollected);\n });\n useEffect(function () {\n return monitor.subscribeToStateChange(updateCollected);\n });\n return collected;\n}","function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nimport * as React from 'react';\nimport { memo } from 'react';\nimport { DndContext, createDndContext } from './DndContext';\nvar refCount = 0;\n/**\n * A React component that provides the React-DnD context\n */\n\nexport var DndProvider = memo(function (_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"children\"]);\n var _getDndContextValue = getDndContextValue(props),\n _getDndContextValue2 = _slicedToArray(_getDndContextValue, 2),\n manager = _getDndContextValue2[0],\n isGlobalInstance = _getDndContextValue2[1]; // memoized from props\n\n /**\n * If the global context was used to store the DND context\n * then where theres no more references to it we should\n * clean it up to avoid memory leaks\n */\n\n React.useEffect(function () {\n if (isGlobalInstance) {\n refCount++;\n }\n return function () {\n if (isGlobalInstance) {\n refCount--;\n if (refCount === 0) {\n var context = getGlobalContext();\n context[instanceSymbol] = null;\n }\n }\n };\n }, []);\n return React.createElement(DndContext.Provider, {\n value: manager\n }, children);\n});\nDndProvider.displayName = 'DndProvider';\nfunction getDndContextValue(props) {\n if ('manager' in props) {\n var _manager = {\n dragDropManager: props.manager\n };\n return [_manager, false];\n }\n var manager = createSingletonDndContext(props.backend, props.context, props.options, props.debugMode);\n var isGlobalInstance = !props.context;\n return [manager, isGlobalInstance];\n}\nvar instanceSymbol = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__');\nfunction createSingletonDndContext(backend) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getGlobalContext();\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var debugMode = arguments.length > 3 ? arguments[3] : undefined;\n var ctx = context;\n if (!ctx[instanceSymbol]) {\n ctx[instanceSymbol] = createDndContext(backend, context, options, debugMode);\n }\n return ctx[instanceSymbol];\n}\nfunction getGlobalContext() {\n return typeof global !== 'undefined' ? global : window;\n}","// cheap lodash replacements\nexport function memoize(fn) {\n var result = null;\n var memoized = function memoized() {\n if (result == null) {\n result = fn();\n }\n return result;\n };\n return memoized;\n}\n/**\n * drop-in replacement for _.without\n */\n\nexport function without(items, item) {\n return items.filter(function (i) {\n return i !== item;\n });\n}\nexport function union(itemsA, itemsB) {\n var set = new Set();\n var insertItem = function insertItem(item) {\n return set.add(item);\n };\n itemsA.forEach(insertItem);\n itemsB.forEach(insertItem);\n var result = [];\n set.forEach(function (key) {\n return result.push(key);\n });\n return result;\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { union, without } from './utils/js_utils';\nexport var EnterLeaveCounter = /*#__PURE__*/function () {\n function EnterLeaveCounter(isNodeInDocument) {\n _classCallCheck(this, EnterLeaveCounter);\n this.entered = [];\n this.isNodeInDocument = isNodeInDocument;\n }\n _createClass(EnterLeaveCounter, [{\n key: \"enter\",\n value: function enter(enteringNode) {\n var _this = this;\n var previousLength = this.entered.length;\n var isNodeEntered = function isNodeEntered(node) {\n return _this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode));\n };\n this.entered = union(this.entered.filter(isNodeEntered), [enteringNode]);\n return previousLength === 0 && this.entered.length > 0;\n }\n }, {\n key: \"leave\",\n value: function leave(leavingNode) {\n var previousLength = this.entered.length;\n this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);\n return previousLength > 0 && this.entered.length === 0;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.entered = [];\n }\n }]);\n return EnterLeaveCounter;\n}();","import { memoize } from './utils/js_utils';\nexport var isFirefox = memoize(function () {\n return /firefox/i.test(navigator.userAgent);\n});\nexport var isSafari = memoize(function () {\n return Boolean(window.safari);\n});","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nexport var MonotonicInterpolant = /*#__PURE__*/function () {\n function MonotonicInterpolant(xs, ys) {\n _classCallCheck(this, MonotonicInterpolant);\n var length = xs.length; // Rearrange xs and ys so that xs is sorted\n\n var indexes = [];\n for (var i = 0; i < length; i++) {\n indexes.push(i);\n }\n indexes.sort(function (a, b) {\n return xs[a] < xs[b] ? -1 : 1;\n }); // Get consecutive differences and slopes\n\n var dys = [];\n var dxs = [];\n var ms = [];\n var dx;\n var dy;\n for (var _i = 0; _i < length - 1; _i++) {\n dx = xs[_i + 1] - xs[_i];\n dy = ys[_i + 1] - ys[_i];\n dxs.push(dx);\n dys.push(dy);\n ms.push(dy / dx);\n } // Get degree-1 coefficients\n\n var c1s = [ms[0]];\n for (var _i2 = 0; _i2 < dxs.length - 1; _i2++) {\n var m2 = ms[_i2];\n var mNext = ms[_i2 + 1];\n if (m2 * mNext <= 0) {\n c1s.push(0);\n } else {\n dx = dxs[_i2];\n var dxNext = dxs[_i2 + 1];\n var common = dx + dxNext;\n c1s.push(3 * common / ((common + dxNext) / m2 + (common + dx) / mNext));\n }\n }\n c1s.push(ms[ms.length - 1]); // Get degree-2 and degree-3 coefficients\n\n var c2s = [];\n var c3s = [];\n var m;\n for (var _i3 = 0; _i3 < c1s.length - 1; _i3++) {\n m = ms[_i3];\n var c1 = c1s[_i3];\n var invDx = 1 / dxs[_i3];\n var _common = c1 + c1s[_i3 + 1] - m - m;\n c2s.push((m - c1 - _common) * invDx);\n c3s.push(_common * invDx * invDx);\n }\n this.xs = xs;\n this.ys = ys;\n this.c1s = c1s;\n this.c2s = c2s;\n this.c3s = c3s;\n }\n _createClass(MonotonicInterpolant, [{\n key: \"interpolate\",\n value: function interpolate(x) {\n var xs = this.xs,\n ys = this.ys,\n c1s = this.c1s,\n c2s = this.c2s,\n c3s = this.c3s; // The rightmost point in the dataset should give an exact result\n\n var i = xs.length - 1;\n if (x === xs[i]) {\n return ys[i];\n } // Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\n var low = 0;\n var high = c3s.length - 1;\n var mid;\n while (low <= high) {\n mid = Math.floor(0.5 * (low + high));\n var xHere = xs[mid];\n if (xHere < x) {\n low = mid + 1;\n } else if (xHere > x) {\n high = mid - 1;\n } else {\n return ys[mid];\n }\n }\n i = Math.max(0, high); // Interpolate\n\n var diff = x - xs[i];\n var diffSq = diff * diff;\n return ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq;\n }\n }]);\n return MonotonicInterpolant;\n}();","import { isSafari, isFirefox } from './BrowserDetector';\nimport { MonotonicInterpolant } from './MonotonicInterpolant';\nvar ELEMENT_NODE = 1;\nexport function getNodeClientOffset(node) {\n var el = node.nodeType === ELEMENT_NODE ? node : node.parentElement;\n if (!el) {\n return null;\n }\n var _el$getBoundingClient = el.getBoundingClientRect(),\n top = _el$getBoundingClient.top,\n left = _el$getBoundingClient.left;\n return {\n x: left,\n y: top\n };\n}\nexport function getEventClientOffset(e) {\n return {\n x: e.clientX,\n y: e.clientY\n };\n}\nfunction isImageNode(node) {\n var _document$documentEle;\n return node.nodeName === 'IMG' && (isFirefox() || !((_document$documentEle = document.documentElement) === null || _document$documentEle === void 0 ? void 0 : _document$documentEle.contains(node)));\n}\nfunction getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight) {\n var dragPreviewWidth = isImage ? dragPreview.width : sourceWidth;\n var dragPreviewHeight = isImage ? dragPreview.height : sourceHeight; // Work around @2x coordinate discrepancies in browsers\n\n if (isSafari() && isImage) {\n dragPreviewHeight /= window.devicePixelRatio;\n dragPreviewWidth /= window.devicePixelRatio;\n }\n return {\n dragPreviewWidth: dragPreviewWidth,\n dragPreviewHeight: dragPreviewHeight\n };\n}\nexport function getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint) {\n // The browsers will use the image intrinsic size under different conditions.\n // Firefox only cares if it's an image, but WebKit also wants it to be detached.\n var isImage = isImageNode(dragPreview);\n var dragPreviewNode = isImage ? sourceNode : dragPreview;\n var dragPreviewNodeOffsetFromClient = getNodeClientOffset(dragPreviewNode);\n var offsetFromDragPreview = {\n x: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n y: clientOffset.y - dragPreviewNodeOffsetFromClient.y\n };\n var sourceWidth = sourceNode.offsetWidth,\n sourceHeight = sourceNode.offsetHeight;\n var anchorX = anchorPoint.anchorX,\n anchorY = anchorPoint.anchorY;\n var _getDragPreviewSize = getDragPreviewSize(isImage, dragPreview, sourceWidth, sourceHeight),\n dragPreviewWidth = _getDragPreviewSize.dragPreviewWidth,\n dragPreviewHeight = _getDragPreviewSize.dragPreviewHeight;\n var calculateYOffset = function calculateYOffset() {\n var interpolantY = new MonotonicInterpolant([0, 0.5, 1], [\n // Dock to the top\n offsetFromDragPreview.y,\n // Align at the center\n offsetFromDragPreview.y / sourceHeight * dragPreviewHeight,\n // Dock to the bottom\n offsetFromDragPreview.y + dragPreviewHeight - sourceHeight]);\n var y = interpolantY.interpolate(anchorY); // Work around Safari 8 positioning bug\n\n if (isSafari() && isImage) {\n // We'll have to wait for @3x to see if this is entirely correct\n y += (window.devicePixelRatio - 1) * dragPreviewHeight;\n }\n return y;\n };\n var calculateXOffset = function calculateXOffset() {\n // Interpolate coordinates depending on anchor point\n // If you know a simpler way to do this, let me know\n var interpolantX = new MonotonicInterpolant([0, 0.5, 1], [\n // Dock to the left\n offsetFromDragPreview.x,\n // Align at the center\n offsetFromDragPreview.x / sourceWidth * dragPreviewWidth,\n // Dock to the right\n offsetFromDragPreview.x + dragPreviewWidth - sourceWidth]);\n return interpolantX.interpolate(anchorX);\n }; // Force offsets if specified in the options.\n\n var offsetX = offsetPoint.offsetX,\n offsetY = offsetPoint.offsetY;\n var isManualOffsetX = offsetX === 0 || offsetX;\n var isManualOffsetY = offsetY === 0 || offsetY;\n return {\n x: isManualOffsetX ? offsetX : calculateXOffset(),\n y: isManualOffsetY ? offsetY : calculateYOffset()\n };\n}","export var FILE = '__NATIVE_FILE__';\nexport var URL = '__NATIVE_URL__';\nexport var TEXT = '__NATIVE_TEXT__';","var _nativeTypesConfig;\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nimport * as NativeTypes from '../NativeTypes';\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer';\nexport var nativeTypesConfig = (_nativeTypesConfig = {}, _defineProperty(_nativeTypesConfig, NativeTypes.FILE, {\n exposeProperties: {\n files: function files(dataTransfer) {\n return Array.prototype.slice.call(dataTransfer.files);\n },\n items: function items(dataTransfer) {\n return dataTransfer.items;\n }\n },\n matchesTypes: ['Files']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.URL, {\n exposeProperties: {\n urls: function urls(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n');\n }\n },\n matchesTypes: ['Url', 'text/uri-list']\n}), _defineProperty(_nativeTypesConfig, NativeTypes.TEXT, {\n exposeProperties: {\n text: function text(dataTransfer, matchesTypes) {\n return getDataFromDataTransfer(dataTransfer, matchesTypes, '');\n }\n },\n matchesTypes: ['Text', 'text/plain']\n}), _nativeTypesConfig);","export function getDataFromDataTransfer(dataTransfer, typesToTry, defaultValue) {\n var result = typesToTry.reduce(function (resultSoFar, typeToTry) {\n return resultSoFar || dataTransfer.getData(typeToTry);\n }, '');\n return result != null ? result : defaultValue;\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nexport var NativeDragSource = /*#__PURE__*/function () {\n function NativeDragSource(config) {\n _classCallCheck(this, NativeDragSource);\n this.config = config;\n this.item = {};\n this.initializeExposedProperties();\n }\n _createClass(NativeDragSource, [{\n key: \"initializeExposedProperties\",\n value: function initializeExposedProperties() {\n var _this = this;\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n Object.defineProperty(_this.item, property, {\n configurable: true,\n enumerable: true,\n get: function get() {\n // eslint-disable-next-line no-console\n console.warn(\"Browser doesn't allow reading \\\"\".concat(property, \"\\\" until the drop event.\"));\n return null;\n }\n });\n });\n }\n }, {\n key: \"loadDataTransfer\",\n value: function loadDataTransfer(dataTransfer) {\n var _this2 = this;\n if (dataTransfer) {\n var newProperties = {};\n Object.keys(this.config.exposeProperties).forEach(function (property) {\n newProperties[property] = {\n value: _this2.config.exposeProperties[property](dataTransfer, _this2.config.matchesTypes),\n configurable: true,\n enumerable: true\n };\n });\n Object.defineProperties(this.item, newProperties);\n }\n }\n }, {\n key: \"canDrag\",\n value: function canDrag() {\n return true;\n }\n }, {\n key: \"beginDrag\",\n value: function beginDrag() {\n return this.item;\n }\n }, {\n key: \"isDragging\",\n value: function isDragging(monitor, handle) {\n return handle === monitor.getSourceId();\n }\n }, {\n key: \"endDrag\",\n value: function endDrag() {// empty\n }\n }]);\n return NativeDragSource;\n}();","import { nativeTypesConfig } from './nativeTypesConfig';\nimport { NativeDragSource } from './NativeDragSource';\nexport function createNativeDragSource(type, dataTransfer) {\n var result = new NativeDragSource(nativeTypesConfig[type]);\n result.loadDataTransfer(dataTransfer);\n return result;\n}\nexport function matchNativeItemType(dataTransfer) {\n if (!dataTransfer) {\n return null;\n }\n var dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || []);\n return Object.keys(nativeTypesConfig).filter(function (nativeItemType) {\n var matchesTypes = nativeTypesConfig[nativeItemType].matchesTypes;\n return matchesTypes.some(function (t) {\n return dataTransferTypes.indexOf(t) > -1;\n });\n })[0] || null;\n}","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nexport var OptionsReader = /*#__PURE__*/function () {\n function OptionsReader(globalContext) {\n _classCallCheck(this, OptionsReader);\n this.globalContext = globalContext;\n }\n _createClass(OptionsReader, [{\n key: \"window\",\n get: function get() {\n if (this.globalContext) {\n return this.globalContext;\n } else if (typeof window !== 'undefined') {\n return window;\n }\n return undefined;\n }\n }, {\n key: \"document\",\n get: function get() {\n if (this.window) {\n return this.window.document;\n }\n return undefined;\n }\n }]);\n return OptionsReader;\n}();","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { EnterLeaveCounter } from './EnterLeaveCounter';\nimport { isFirefox } from './BrowserDetector';\nimport { getNodeClientOffset, getEventClientOffset, getDragPreviewOffset } from './OffsetUtils';\nimport { createNativeDragSource, matchNativeItemType } from './NativeDragSources';\nimport * as NativeTypes from './NativeTypes';\nimport { OptionsReader } from './OptionsReader';\nexport var HTML5BackendImpl = /*#__PURE__*/function () {\n function HTML5BackendImpl(manager, globalContext) {\n var _this = this;\n _classCallCheck(this, HTML5BackendImpl);\n this.sourcePreviewNodes = new Map();\n this.sourcePreviewNodeOptions = new Map();\n this.sourceNodes = new Map();\n this.sourceNodeOptions = new Map();\n this.dragStartSourceIds = null;\n this.dropTargetIds = [];\n this.dragEnterTargetIds = [];\n this.currentNativeSource = null;\n this.currentNativeHandle = null;\n this.currentDragSourceNode = null;\n this.altKeyPressed = false;\n this.mouseMoveTimeoutTimer = null;\n this.asyncEndDragFrameId = null;\n this.dragOverTargetIds = null;\n this.getSourceClientOffset = function (sourceId) {\n var source = _this.sourceNodes.get(sourceId);\n return source && getNodeClientOffset(source) || null;\n };\n this.endDragNativeItem = function () {\n if (!_this.isDraggingNativeItem()) {\n return;\n }\n _this.actions.endDrag();\n if (_this.currentNativeHandle) {\n _this.registry.removeSource(_this.currentNativeHandle);\n }\n _this.currentNativeHandle = null;\n _this.currentNativeSource = null;\n };\n this.isNodeInDocument = function (node) {\n // Check the node either in the main document or in the current context\n return Boolean(node && _this.document && _this.document.body && document.body.contains(node));\n };\n this.endDragIfSourceWasRemovedFromDOM = function () {\n var node = _this.currentDragSourceNode;\n if (_this.isNodeInDocument(node)) {\n return;\n }\n if (_this.clearCurrentDragSourceNode()) {\n _this.actions.endDrag();\n }\n };\n this.handleTopDragStartCapture = function () {\n _this.clearCurrentDragSourceNode();\n _this.dragStartSourceIds = [];\n };\n this.handleTopDragStart = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var dragStartSourceIds = _this.dragStartSourceIds;\n _this.dragStartSourceIds = null;\n var clientOffset = getEventClientOffset(e); // Avoid crashing if we missed a drop event or our previous drag died\n\n if (_this.monitor.isDragging()) {\n _this.actions.endDrag();\n } // Don't publish the source just yet (see why below)\n\n _this.actions.beginDrag(dragStartSourceIds || [], {\n publishSource: false,\n getSourceClientOffset: _this.getSourceClientOffset,\n clientOffset: clientOffset\n });\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n if (_this.monitor.isDragging()) {\n if (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n // Use custom drag image if user specifies it.\n // If child drag source refuses drag but parent agrees,\n // use parent's node as drag image. Neither works in IE though.\n var sourceId = _this.monitor.getSourceId();\n var sourceNode = _this.sourceNodes.get(sourceId);\n var dragPreview = _this.sourcePreviewNodes.get(sourceId) || sourceNode;\n if (dragPreview) {\n var _this$getCurrentSourc = _this.getCurrentSourcePreviewNodeOptions(),\n anchorX = _this$getCurrentSourc.anchorX,\n anchorY = _this$getCurrentSourc.anchorY,\n offsetX = _this$getCurrentSourc.offsetX,\n offsetY = _this$getCurrentSourc.offsetY;\n var anchorPoint = {\n anchorX: anchorX,\n anchorY: anchorY\n };\n var offsetPoint = {\n offsetX: offsetX,\n offsetY: offsetY\n };\n var dragPreviewOffset = getDragPreviewOffset(sourceNode, dragPreview, clientOffset, anchorPoint, offsetPoint);\n dataTransfer.setDragImage(dragPreview, dragPreviewOffset.x, dragPreviewOffset.y);\n }\n }\n try {\n // Firefox won't drag without setting data\n dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.setData('application/json', {});\n } catch (err) {} // IE doesn't support MIME types in setData\n // Store drag source node so we can check whether\n // it is removed from DOM and trigger endDrag manually.\n\n _this.setCurrentDragSourceNode(e.target); // Now we are ready to publish the drag source.. or are we not?\n\n var _this$getCurrentSourc2 = _this.getCurrentSourcePreviewNodeOptions(),\n captureDraggingState = _this$getCurrentSourc2.captureDraggingState;\n if (!captureDraggingState) {\n // Usually we want to publish it in the next tick so that browser\n // is able to screenshot the current (not yet dragging) state.\n //\n // It also neatly avoids a situation where render() returns null\n // in the same tick for the source element, and browser freaks out.\n setTimeout(function () {\n return _this.actions.publishDragSource();\n }, 0);\n } else {\n // In some cases the user may want to override this behavior, e.g.\n // to work around IE not supporting custom drag previews.\n //\n // When using a custom drag layer, the only way to prevent\n // the default drag preview from drawing in IE is to screenshot\n // the dragging state in which the node itself has zero opacity\n // and height. In this case, though, returning null from render()\n // will abruptly end the dragging, which is not obvious.\n //\n // This is the reason such behavior is strictly opt-in.\n _this.actions.publishDragSource();\n }\n } else if (nativeType) {\n // A native item (such as URL) dragged from inside the document\n _this.beginDragNativeItem(nativeType);\n } else if (dataTransfer && !dataTransfer.types && (e.target && !e.target.hasAttribute || !e.target.hasAttribute('draggable'))) {\n // Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n // Just let it drag. It's a native type (URL or text) and will be picked up in\n // dragenter handler.\n return;\n } else {\n // If by this time no drag source reacted, tell browser not to drag.\n e.preventDefault();\n }\n };\n this.handleTopDragEndCapture = function () {\n if (_this.clearCurrentDragSourceNode()) {\n // Firefox can dispatch this event in an infinite loop\n // if dragend handler does something like showing an alert.\n // Only proceed if we have not handled it already.\n _this.actions.endDrag();\n }\n };\n this.handleTopDragEnterCapture = function (e) {\n _this.dragEnterTargetIds = [];\n var isFirstEnter = _this.enterLeaveCounter.enter(e.target);\n if (!isFirstEnter || _this.monitor.isDragging()) {\n return;\n }\n var dataTransfer = e.dataTransfer;\n var nativeType = matchNativeItemType(dataTransfer);\n if (nativeType) {\n // A native item (such as file or URL) dragged from outside the document\n _this.beginDragNativeItem(nativeType, dataTransfer);\n }\n };\n this.handleTopDragEnter = function (e) {\n var dragEnterTargetIds = _this.dragEnterTargetIds;\n _this.dragEnterTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n return;\n }\n _this.altKeyPressed = e.altKey;\n if (!isFirefox()) {\n // Don't emit hover in `dragenter` on Firefox due to an edge case.\n // If the target changes position as the result of `dragenter`, Firefox\n // will still happily dispatch `dragover` despite target being no longer\n // there. The easy solution is to only fire `hover` in `dragover` on FF.\n _this.actions.hover(dragEnterTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n }\n var canDrop = dragEnterTargetIds.some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // IE requires this to fire dragover events\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n }\n };\n this.handleTopDragOverCapture = function () {\n _this.dragOverTargetIds = [];\n };\n this.handleTopDragOver = function (e) {\n var dragOverTargetIds = _this.dragOverTargetIds;\n _this.dragOverTargetIds = [];\n if (!_this.monitor.isDragging()) {\n // This is probably a native item type we don't understand.\n // Prevent default \"drop and blow away the whole document\" action.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n return;\n }\n _this.altKeyPressed = e.altKey;\n _this.actions.hover(dragOverTargetIds || [], {\n clientOffset: getEventClientOffset(e)\n });\n var canDrop = (dragOverTargetIds || []).some(function (targetId) {\n return _this.monitor.canDropOnTarget(targetId);\n });\n if (canDrop) {\n // Show user-specified drop effect.\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = _this.getCurrentDropEffect();\n }\n } else if (_this.isDraggingNativeItem()) {\n // Don't show a nice cursor but still prevent default\n // \"drop and blow away the whole document\" action.\n e.preventDefault();\n } else {\n e.preventDefault();\n if (e.dataTransfer) {\n e.dataTransfer.dropEffect = 'none';\n }\n }\n };\n this.handleTopDragLeaveCapture = function (e) {\n if (_this.isDraggingNativeItem()) {\n e.preventDefault();\n }\n var isLastLeave = _this.enterLeaveCounter.leave(e.target);\n if (!isLastLeave) {\n return;\n }\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n }\n };\n this.handleTopDropCapture = function (e) {\n _this.dropTargetIds = [];\n e.preventDefault();\n if (_this.isDraggingNativeItem()) {\n var _this$currentNativeSo;\n (_this$currentNativeSo = _this.currentNativeSource) === null || _this$currentNativeSo === void 0 ? void 0 : _this$currentNativeSo.loadDataTransfer(e.dataTransfer);\n }\n _this.enterLeaveCounter.reset();\n };\n this.handleTopDrop = function (e) {\n var dropTargetIds = _this.dropTargetIds;\n _this.dropTargetIds = [];\n _this.actions.hover(dropTargetIds, {\n clientOffset: getEventClientOffset(e)\n });\n _this.actions.drop({\n dropEffect: _this.getCurrentDropEffect()\n });\n if (_this.isDraggingNativeItem()) {\n _this.endDragNativeItem();\n } else {\n _this.endDragIfSourceWasRemovedFromDOM();\n }\n };\n this.handleSelectStart = function (e) {\n var target = e.target; // Only IE requires us to explicitly say\n // we want drag drop operation to start\n\n if (typeof target.dragDrop !== 'function') {\n return;\n } // Inputs and textareas should be selectable\n\n if (target.tagName === 'INPUT' || target.tagName === 'SELECT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return;\n } // For other targets, ask IE\n // to enable drag and drop\n\n e.preventDefault();\n target.dragDrop();\n };\n this.options = new OptionsReader(globalContext);\n this.actions = manager.getActions();\n this.monitor = manager.getMonitor();\n this.registry = manager.getRegistry();\n this.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument);\n }\n /**\n * Generate profiling statistics for the HTML5Backend.\n */\n\n _createClass(HTML5BackendImpl, [{\n key: \"profile\",\n value: function profile() {\n var _this$dragStartSource, _this$dragOverTargetI;\n return {\n sourcePreviewNodes: this.sourcePreviewNodes.size,\n sourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n sourceNodeOptions: this.sourceNodeOptions.size,\n sourceNodes: this.sourceNodes.size,\n dragStartSourceIds: ((_this$dragStartSource = this.dragStartSourceIds) === null || _this$dragStartSource === void 0 ? void 0 : _this$dragStartSource.length) || 0,\n dropTargetIds: this.dropTargetIds.length,\n dragEnterTargetIds: this.dragEnterTargetIds.length,\n dragOverTargetIds: ((_this$dragOverTargetI = this.dragOverTargetIds) === null || _this$dragOverTargetI === void 0 ? void 0 : _this$dragOverTargetI.length) || 0\n };\n } // public for test\n }, {\n key: \"setup\",\n value: function setup() {\n if (this.window === undefined) {\n return;\n }\n if (this.window.__isReactDndBackendSetUp) {\n throw new Error('Cannot have two HTML5 backends at the same time.');\n }\n this.window.__isReactDndBackendSetUp = true;\n this.addEventListeners(this.window);\n }\n }, {\n key: \"teardown\",\n value: function teardown() {\n if (this.window === undefined) {\n return;\n }\n this.window.__isReactDndBackendSetUp = false;\n this.removeEventListeners(this.window);\n this.clearCurrentDragSourceNode();\n if (this.asyncEndDragFrameId) {\n this.window.cancelAnimationFrame(this.asyncEndDragFrameId);\n }\n }\n }, {\n key: \"connectDragPreview\",\n value: function connectDragPreview(sourceId, node, options) {\n var _this2 = this;\n this.sourcePreviewNodeOptions.set(sourceId, options);\n this.sourcePreviewNodes.set(sourceId, node);\n return function () {\n _this2.sourcePreviewNodes.delete(sourceId);\n _this2.sourcePreviewNodeOptions.delete(sourceId);\n };\n }\n }, {\n key: \"connectDragSource\",\n value: function connectDragSource(sourceId, node, options) {\n var _this3 = this;\n this.sourceNodes.set(sourceId, node);\n this.sourceNodeOptions.set(sourceId, options);\n var handleDragStart = function handleDragStart(e) {\n return _this3.handleDragStart(e, sourceId);\n };\n var handleSelectStart = function handleSelectStart(e) {\n return _this3.handleSelectStart(e);\n };\n node.setAttribute('draggable', 'true');\n node.addEventListener('dragstart', handleDragStart);\n node.addEventListener('selectstart', handleSelectStart);\n return function () {\n _this3.sourceNodes.delete(sourceId);\n _this3.sourceNodeOptions.delete(sourceId);\n node.removeEventListener('dragstart', handleDragStart);\n node.removeEventListener('selectstart', handleSelectStart);\n node.setAttribute('draggable', 'false');\n };\n }\n }, {\n key: \"connectDropTarget\",\n value: function connectDropTarget(targetId, node) {\n var _this4 = this;\n var handleDragEnter = function handleDragEnter(e) {\n return _this4.handleDragEnter(e, targetId);\n };\n var handleDragOver = function handleDragOver(e) {\n return _this4.handleDragOver(e, targetId);\n };\n var handleDrop = function handleDrop(e) {\n return _this4.handleDrop(e, targetId);\n };\n node.addEventListener('dragenter', handleDragEnter);\n node.addEventListener('dragover', handleDragOver);\n node.addEventListener('drop', handleDrop);\n return function () {\n node.removeEventListener('dragenter', handleDragEnter);\n node.removeEventListener('dragover', handleDragOver);\n node.removeEventListener('drop', handleDrop);\n };\n }\n }, {\n key: \"addEventListeners\",\n value: function addEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.addEventListener) {\n return;\n }\n target.addEventListener('dragstart', this.handleTopDragStart);\n target.addEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.addEventListener('dragend', this.handleTopDragEndCapture, true);\n target.addEventListener('dragenter', this.handleTopDragEnter);\n target.addEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.addEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.addEventListener('dragover', this.handleTopDragOver);\n target.addEventListener('dragover', this.handleTopDragOverCapture, true);\n target.addEventListener('drop', this.handleTopDrop);\n target.addEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners(target) {\n // SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n if (!target.removeEventListener) {\n return;\n }\n target.removeEventListener('dragstart', this.handleTopDragStart);\n target.removeEventListener('dragstart', this.handleTopDragStartCapture, true);\n target.removeEventListener('dragend', this.handleTopDragEndCapture, true);\n target.removeEventListener('dragenter', this.handleTopDragEnter);\n target.removeEventListener('dragenter', this.handleTopDragEnterCapture, true);\n target.removeEventListener('dragleave', this.handleTopDragLeaveCapture, true);\n target.removeEventListener('dragover', this.handleTopDragOver);\n target.removeEventListener('dragover', this.handleTopDragOverCapture, true);\n target.removeEventListener('drop', this.handleTopDrop);\n target.removeEventListener('drop', this.handleTopDropCapture, true);\n }\n }, {\n key: \"getCurrentSourceNodeOptions\",\n value: function getCurrentSourceNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourceNodeOptions = this.sourceNodeOptions.get(sourceId);\n return _objectSpread({\n dropEffect: this.altKeyPressed ? 'copy' : 'move'\n }, sourceNodeOptions || {});\n }\n }, {\n key: \"getCurrentDropEffect\",\n value: function getCurrentDropEffect() {\n if (this.isDraggingNativeItem()) {\n // It makes more sense to default to 'copy' for native resources\n return 'copy';\n }\n return this.getCurrentSourceNodeOptions().dropEffect;\n }\n }, {\n key: \"getCurrentSourcePreviewNodeOptions\",\n value: function getCurrentSourcePreviewNodeOptions() {\n var sourceId = this.monitor.getSourceId();\n var sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId);\n return _objectSpread({\n anchorX: 0.5,\n anchorY: 0.5,\n captureDraggingState: false\n }, sourcePreviewNodeOptions || {});\n }\n }, {\n key: \"isDraggingNativeItem\",\n value: function isDraggingNativeItem() {\n var itemType = this.monitor.getItemType();\n return Object.keys(NativeTypes).some(function (key) {\n return NativeTypes[key] === itemType;\n });\n }\n }, {\n key: \"beginDragNativeItem\",\n value: function beginDragNativeItem(type, dataTransfer) {\n this.clearCurrentDragSourceNode();\n this.currentNativeSource = createNativeDragSource(type, dataTransfer);\n this.currentNativeHandle = this.registry.addSource(type, this.currentNativeSource);\n this.actions.beginDrag([this.currentNativeHandle]);\n }\n }, {\n key: \"setCurrentDragSourceNode\",\n value: function setCurrentDragSourceNode(node) {\n var _this5 = this;\n this.clearCurrentDragSourceNode();\n this.currentDragSourceNode = node; // A timeout of > 0 is necessary to resolve Firefox issue referenced\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n\n var MOUSE_MOVE_TIMEOUT = 1000; // Receiving a mouse event in the middle of a dragging operation\n // means it has ended and the drag source node disappeared from DOM,\n // so the browser didn't dispatch the dragend event.\n //\n // We need to wait before we start listening for mousemove events.\n // This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n // immediately in some browsers.\n //\n // See:\n // * https://github.com/react-dnd/react-dnd/pull/928\n // * https://github.com/react-dnd/react-dnd/issues/869\n //\n\n this.mouseMoveTimeoutTimer = setTimeout(function () {\n return _this5.window && _this5.window.addEventListener('mousemove', _this5.endDragIfSourceWasRemovedFromDOM, true);\n }, MOUSE_MOVE_TIMEOUT);\n }\n }, {\n key: \"clearCurrentDragSourceNode\",\n value: function clearCurrentDragSourceNode() {\n if (this.currentDragSourceNode) {\n this.currentDragSourceNode = null;\n if (this.window) {\n this.window.clearTimeout(this.mouseMoveTimeoutTimer || undefined);\n this.window.removeEventListener('mousemove', this.endDragIfSourceWasRemovedFromDOM, true);\n }\n this.mouseMoveTimeoutTimer = null;\n return true;\n }\n return false;\n }\n }, {\n key: \"handleDragStart\",\n value: function handleDragStart(e, sourceId) {\n if (e.defaultPrevented) {\n return;\n }\n if (!this.dragStartSourceIds) {\n this.dragStartSourceIds = [];\n }\n this.dragStartSourceIds.unshift(sourceId);\n }\n }, {\n key: \"handleDragEnter\",\n value: function handleDragEnter(e, targetId) {\n this.dragEnterTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDragOver\",\n value: function handleDragOver(e, targetId) {\n if (this.dragOverTargetIds === null) {\n this.dragOverTargetIds = [];\n }\n this.dragOverTargetIds.unshift(targetId);\n }\n }, {\n key: \"handleDrop\",\n value: function handleDrop(e, targetId) {\n this.dropTargetIds.unshift(targetId);\n }\n }, {\n key: \"window\",\n get: function get() {\n return this.options.window;\n }\n }, {\n key: \"document\",\n get: function get() {\n return this.options.document;\n }\n }]);\n return HTML5BackendImpl;\n}();","var emptyImage;\nexport function getEmptyImage() {\n if (!emptyImage) {\n emptyImage = new Image();\n emptyImage.src = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }\n return emptyImage;\n}","import { HTML5BackendImpl } from './HTML5BackendImpl';\nimport * as NativeTypes from './NativeTypes';\nexport { getEmptyImage } from './getEmptyImage';\nexport { NativeTypes };\nexport var HTML5Backend = function createBackend(manager, context) {\n return new HTML5BackendImpl(manager, context);\n};","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { invariantIntlContext } from '../utils';\nfunction getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n}\n// TODO: We should provide initial value here\nvar IntlContext = React.createContext(null);\nvar IntlConsumer = IntlContext.Consumer,\n IntlProvider = IntlContext.Provider;\nexport var Provider = IntlProvider;\nexport var Context = IntlContext;\nexport default function injectIntl(WrappedComponent, options) {\n var _a = options || {},\n _b = _a.intlPropName,\n intlPropName = _b === void 0 ? 'intl' : _b,\n _c = _a.forwardRef,\n forwardRef = _c === void 0 ? false : _c,\n _d = _a.enforceContext,\n enforceContext = _d === void 0 ? true : _d;\n var WithIntl = function (props) {\n return React.createElement(IntlConsumer, null, function (intl) {\n var _a;\n if (enforceContext) {\n invariantIntlContext(intl);\n }\n var intlProp = (_a = {}, _a[intlPropName] = intl, _a);\n return React.createElement(WrappedComponent, __assign({}, props, intlProp, {\n ref: forwardRef ? props.forwardedRef : null\n }));\n });\n };\n WithIntl.displayName = \"injectIntl(\".concat(getDisplayName(WrappedComponent), \")\");\n WithIntl.WrappedComponent = WrappedComponent;\n if (forwardRef) {\n return hoistNonReactStatics(React.forwardRef(function (props, ref) {\n return React.createElement(WithIntl, __assign({}, props, {\n forwardedRef: ref\n }));\n }), WrappedComponent);\n }\n return hoistNonReactStatics(WithIntl, WrappedComponent);\n}","/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n // Cannot count string length via Number.toString because it may use scientific notation\n // for very small or very large numbers.\n return Math.floor(Math.log(x) * Math.LOG10E);\n}\nexport function repeat(s, times) {\n if (typeof s.repeat === 'function') {\n return s.repeat(times);\n }\n var arr = new Array(times);\n for (var i = 0; i < arr.length; i++) {\n arr[i] = s;\n }\n return arr.join('');\n}\nexport function setInternalSlot(map, pl, field, value) {\n if (!map.get(pl)) {\n map.set(pl, Object.create(null));\n }\n var slots = map.get(pl);\n slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var k = _a[_i];\n setInternalSlot(map, pl, k, props[k]);\n }\n}\nexport function getInternalSlot(map, pl, field) {\n return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n var fields = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n fields[_i - 2] = arguments[_i];\n }\n var slots = map.get(pl);\n if (!slots) {\n throw new TypeError(\"\".concat(pl, \" InternalSlot has not been initialized\"));\n }\n return fields.reduce(function (all, f) {\n all[f] = slots[f];\n return all;\n }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n return patternPart.type === 'literal';\n}\n/*\n 17 ECMAScript Standard Built-in Objects:\n Every built-in Function object, including constructors, that is not\n identified as an anonymous function has a name property whose value\n is a String.\n\n Unless otherwise specified, the name property of a built-in Function\n object, if it exists, has the attributes { [[Writable]]: false,\n [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n var value = _a.value;\n Object.defineProperty(target, name, {\n configurable: true,\n enumerable: false,\n writable: true,\n value: value\n });\n}\nexport var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err) {\n if (Err === void 0) {\n Err = Error;\n }\n if (!condition) {\n throw new Err(message);\n }\n}","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style\n };\n}","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a':\n // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B':\n // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z':\n // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x':\n // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton.split(WHITE_SPACE_REGEX).filter(function (x) {\n return x.length > 0;\n });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0],\n options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({\n stem: stem,\n options: options\n });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n } else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto'\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting'\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always'\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting'\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero'\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting'\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never'\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering'\n };\n stem = stem.slice(2);\n } else if (stem[0] === 'E') {\n result = {\n notation: 'scientific'\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n } else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), {\n notation: 'scientific'\n }), token.options.reduce(function (all, opt) {\n return __assign(__assign({}, all), parseNotationOptions(opt));\n }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), {\n notation: 'engineering'\n }), token.options.reduce(function (all, opt) {\n return __assign(__assign({}, all), parseNotationOptions(opt));\n }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n } else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n } else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n } else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), {\n trailingZeroDisplay: 'stripIfInteger'\n });\n } else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}","// @generated from time-data-gen.ts\n// prettier-ignore \nexport var timeData = {\n \"AX\": [\"H\"],\n \"BQ\": [\"H\"],\n \"CP\": [\"H\"],\n \"CZ\": [\"H\"],\n \"DK\": [\"H\"],\n \"FI\": [\"H\"],\n \"ID\": [\"H\"],\n \"IS\": [\"H\"],\n \"ML\": [\"H\"],\n \"NE\": [\"H\"],\n \"RU\": [\"H\"],\n \"SE\": [\"H\"],\n \"SJ\": [\"H\"],\n \"SK\": [\"H\"],\n \"AS\": [\"h\", \"H\"],\n \"BT\": [\"h\", \"H\"],\n \"DJ\": [\"h\", \"H\"],\n \"ER\": [\"h\", \"H\"],\n \"GH\": [\"h\", \"H\"],\n \"IN\": [\"h\", \"H\"],\n \"LS\": [\"h\", \"H\"],\n \"PG\": [\"h\", \"H\"],\n \"PW\": [\"h\", \"H\"],\n \"SO\": [\"h\", \"H\"],\n \"TO\": [\"h\", \"H\"],\n \"VU\": [\"h\", \"H\"],\n \"WS\": [\"h\", \"H\"],\n \"001\": [\"H\", \"h\"],\n \"AL\": [\"h\", \"H\", \"hB\"],\n \"TD\": [\"h\", \"H\", \"hB\"],\n \"ca-ES\": [\"H\", \"h\", \"hB\"],\n \"CF\": [\"H\", \"h\", \"hB\"],\n \"CM\": [\"H\", \"h\", \"hB\"],\n \"fr-CA\": [\"H\", \"h\", \"hB\"],\n \"gl-ES\": [\"H\", \"h\", \"hB\"],\n \"it-CH\": [\"H\", \"h\", \"hB\"],\n \"it-IT\": [\"H\", \"h\", \"hB\"],\n \"LU\": [\"H\", \"h\", \"hB\"],\n \"NP\": [\"H\", \"h\", \"hB\"],\n \"PF\": [\"H\", \"h\", \"hB\"],\n \"SC\": [\"H\", \"h\", \"hB\"],\n \"SM\": [\"H\", \"h\", \"hB\"],\n \"SN\": [\"H\", \"h\", \"hB\"],\n \"TF\": [\"H\", \"h\", \"hB\"],\n \"VA\": [\"H\", \"h\", \"hB\"],\n \"CY\": [\"h\", \"H\", \"hb\", \"hB\"],\n \"GR\": [\"h\", \"H\", \"hb\", \"hB\"],\n \"CO\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"DO\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"KP\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"KR\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"NA\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"PA\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"PR\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"VE\": [\"h\", \"H\", \"hB\", \"hb\"],\n \"AC\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"AI\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"BW\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"BZ\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"CC\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"CK\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"CX\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"DG\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"FK\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"GB\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"GG\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"GI\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"IE\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"IM\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"IO\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"JE\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"LT\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"MK\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"MN\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"MS\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"NF\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"NG\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"NR\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"NU\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"PN\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"SH\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"SX\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"TA\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"ZA\": [\"H\", \"h\", \"hb\", \"hB\"],\n \"af-ZA\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"AR\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"CL\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"CR\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"CU\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"EA\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-BO\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-BR\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-EC\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-ES\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-GQ\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"es-PE\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"GT\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"HN\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"IC\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"KG\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"KM\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"LK\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"MA\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"MX\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"NI\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"PY\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"SV\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"UY\": [\"H\", \"h\", \"hB\", \"hb\"],\n \"JP\": [\"H\", \"h\", \"K\"],\n \"AD\": [\"H\", \"hB\"],\n \"AM\": [\"H\", \"hB\"],\n \"AO\": [\"H\", \"hB\"],\n \"AT\": [\"H\", \"hB\"],\n \"AW\": [\"H\", \"hB\"],\n \"BE\": [\"H\", \"hB\"],\n \"BF\": [\"H\", \"hB\"],\n \"BJ\": [\"H\", \"hB\"],\n \"BL\": [\"H\", \"hB\"],\n \"BR\": [\"H\", \"hB\"],\n \"CG\": [\"H\", \"hB\"],\n \"CI\": [\"H\", \"hB\"],\n \"CV\": [\"H\", \"hB\"],\n \"DE\": [\"H\", \"hB\"],\n \"EE\": [\"H\", \"hB\"],\n \"FR\": [\"H\", \"hB\"],\n \"GA\": [\"H\", \"hB\"],\n \"GF\": [\"H\", \"hB\"],\n \"GN\": [\"H\", \"hB\"],\n \"GP\": [\"H\", \"hB\"],\n \"GW\": [\"H\", \"hB\"],\n \"HR\": [\"H\", \"hB\"],\n \"IL\": [\"H\", \"hB\"],\n \"IT\": [\"H\", \"hB\"],\n \"KZ\": [\"H\", \"hB\"],\n \"MC\": [\"H\", \"hB\"],\n \"MD\": [\"H\", \"hB\"],\n \"MF\": [\"H\", \"hB\"],\n \"MQ\": [\"H\", \"hB\"],\n \"MZ\": [\"H\", \"hB\"],\n \"NC\": [\"H\", \"hB\"],\n \"NL\": [\"H\", \"hB\"],\n \"PM\": [\"H\", \"hB\"],\n \"PT\": [\"H\", \"hB\"],\n \"RE\": [\"H\", \"hB\"],\n \"RO\": [\"H\", \"hB\"],\n \"SI\": [\"H\", \"hB\"],\n \"SR\": [\"H\", \"hB\"],\n \"ST\": [\"H\", \"hB\"],\n \"TG\": [\"H\", \"hB\"],\n \"TR\": [\"H\", \"hB\"],\n \"WF\": [\"H\", \"hB\"],\n \"YT\": [\"H\", \"hB\"],\n \"BD\": [\"h\", \"hB\", \"H\"],\n \"PK\": [\"h\", \"hB\", \"H\"],\n \"AZ\": [\"H\", \"hB\", \"h\"],\n \"BA\": [\"H\", \"hB\", \"h\"],\n \"BG\": [\"H\", \"hB\", \"h\"],\n \"CH\": [\"H\", \"hB\", \"h\"],\n \"GE\": [\"H\", \"hB\", \"h\"],\n \"LI\": [\"H\", \"hB\", \"h\"],\n \"ME\": [\"H\", \"hB\", \"h\"],\n \"RS\": [\"H\", \"hB\", \"h\"],\n \"UA\": [\"H\", \"hB\", \"h\"],\n \"UZ\": [\"H\", \"hB\", \"h\"],\n \"XK\": [\"H\", \"hB\", \"h\"],\n \"AG\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"AU\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"BB\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"BM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"BS\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"CA\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"DM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"en-001\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"FJ\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"FM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"GD\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"GM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"GU\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"GY\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"JM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"KI\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"KN\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"KY\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"LC\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"LR\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"MH\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"MP\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"MW\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"NZ\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"SB\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"SG\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"SL\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"SS\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"SZ\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"TC\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"TT\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"UM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"US\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"VC\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"VG\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"VI\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"ZM\": [\"h\", \"hb\", \"H\", \"hB\"],\n \"BO\": [\"H\", \"hB\", \"h\", \"hb\"],\n \"EC\": [\"H\", \"hB\", \"h\", \"hb\"],\n \"ES\": [\"H\", \"hB\", \"h\", \"hb\"],\n \"GQ\": [\"H\", \"hB\", \"h\", \"hb\"],\n \"PE\": [\"H\", \"hB\", \"h\", \"hb\"],\n \"AE\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"ar-001\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"BH\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"DZ\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"EG\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"EH\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"HK\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"IQ\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"JO\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"KW\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"LB\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"LY\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"MO\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"MR\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"OM\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"PH\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"PS\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"QA\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"SA\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"SD\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"SY\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"TN\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"YE\": [\"h\", \"hB\", \"hb\", \"H\"],\n \"AF\": [\"H\", \"hb\", \"hB\", \"h\"],\n \"LA\": [\"H\", \"hb\", \"hB\", \"h\"],\n \"CN\": [\"H\", \"hB\", \"hb\", \"h\"],\n \"LV\": [\"H\", \"hB\", \"hb\", \"h\"],\n \"TL\": [\"H\", \"hB\", \"hb\", \"h\"],\n \"zu-ZA\": [\"H\", \"hB\", \"hb\", \"h\"],\n \"CD\": [\"hB\", \"H\"],\n \"IR\": [\"hB\", \"H\"],\n \"hi-IN\": [\"hB\", \"h\", \"H\"],\n \"kn-IN\": [\"hB\", \"h\", \"H\"],\n \"ml-IN\": [\"hB\", \"h\", \"H\"],\n \"te-IN\": [\"hB\", \"h\", \"H\"],\n \"KH\": [\"hB\", \"h\", \"H\", \"hb\"],\n \"ta-IN\": [\"hB\", \"h\", \"hb\", \"H\"],\n \"BN\": [\"hb\", \"hB\", \"h\", \"H\"],\n \"MY\": [\"hb\", \"hB\", \"h\", \"H\"],\n \"ET\": [\"hB\", \"hb\", \"h\", \"H\"],\n \"gu-IN\": [\"hB\", \"hb\", \"h\", \"H\"],\n \"mr-IN\": [\"hB\", \"hb\", \"h\", \"H\"],\n \"pa-IN\": [\"hB\", \"hb\", \"h\", \"H\"],\n \"TW\": [\"hB\", \"hb\", \"h\", \"H\"],\n \"KE\": [\"hB\", \"hb\", \"H\", \"h\"],\n \"MM\": [\"hB\", \"hb\", \"H\", \"h\"],\n \"TZ\": [\"hB\", \"hb\", \"H\", \"h\"],\n \"UG\": [\"hB\", \"hb\", \"H\", \"h\"]\n};","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return {\n start: start,\n end: end\n };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger ? Number.isSafeInteger : function (n) {\n return typeof n === 'number' && isFinite(n) && Math.floor(n) === n && Math.abs(n) <= 0x1fffffffffffff;\n};\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n} catch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith ?\n// Native\nfunction startsWith(s, search, position) {\n return s.startsWith(search, position);\n} :\n// For IE11\nfunction startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n};\nvar fromCodePoint = hasNativeFromCodePoint ? String.fromCodePoint :\n// IE11\nfunction fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff) throw RangeError(code + ' is not a valid code point');\n elements += code < 0x10000 ? String.fromCharCode(code) : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00);\n }\n return elements;\n};\nvar fromEntries =\n// native\nhasNativeFromEntries ? Object.fromEntries :\n// Ponyfill\nfunction fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i],\n k = _a[0],\n v = _a[1];\n obj[k] = v;\n }\n return obj;\n};\nvar codePointAt = hasNativeCodePointAt ?\n// Native\nfunction codePointAt(s, index) {\n return s.codePointAt(index);\n} :\n// IE 11\nfunction codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 || first > 0xdbff || index + 1 === size || (second = s.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? first : (first - 0xd800 << 10) + (second - 0xdc00) + 0x10000;\n};\nvar trimStart = hasTrimStart ?\n// Native\nfunction trimStart(s) {\n return s.trimStart();\n} :\n// Ponyfill\nfunction trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n};\nvar trimEnd = hasTrimEnd ?\n// Native\nfunction trimEnd(s) {\n return s.trimEnd();\n} :\n// Ponyfill\nfunction trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n};\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n} else {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */function () {\n function Parser(message, options) {\n if (options === void 0) {\n options = {};\n }\n this.message = message;\n this.position = {\n offset: 0,\n line: 1,\n column: 1\n };\n this.ignoreTag = !!options.ignoreTag;\n this.locale = options.locale;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n } else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n } else if (char === 35 /* `#` */ && (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition())\n });\n } else if (char === 60 /* `<` */ && !this.ignoreTag && this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n } else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n } else if (char === 60 /* `<` */ && !this.ignoreTag && _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n } else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return {\n val: elements,\n err: null\n };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition())\n },\n err: null\n };\n } else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('</')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n if (tagName !== closingTagName) {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (!this.bumpIf('>')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition())\n },\n err: null\n };\n } else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n } else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: {\n type: TYPE.literal,\n value: value,\n location: location\n },\n err: null\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() && this.char() === 60 /* `<` */ && (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35:\n // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n } else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n } else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ || ch === 123 /* `{` */ || ch === 35 /* `#` */ && (parentArgType === 'plural' || parentArgType === 'selectordinal') || ch === 125 /* `}` */ && nestingLevel > 0) {\n return null;\n } else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */:\n {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition())\n },\n err: null\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */:\n {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return {\n value: value,\n location: location\n };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time':\n {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = {\n style: style,\n styleLocation: styleLocation\n };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: {\n type: TYPE.number,\n value: value,\n location: location_1,\n style: result.val\n },\n err: null\n };\n } else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var dateTimePattern = skeleton;\n // Get \"best match\" pattern only if locale is passed, if not, let it\n // pass as-is where `parseDateTimeSkeleton()` will throw an error\n // for unsupported patterns.\n if (this.locale) {\n dateTimePattern = getBestPattern(skeleton, this.locale);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: dateTimePattern,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons ? parseDateTimeSkeleton(dateTimePattern) : {}\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: {\n type: type,\n value: value,\n location: location_1,\n style: style\n },\n err: null\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number' ? TYPE.number : argType === 'date' ? TYPE.date : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null\n },\n err: null\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select':\n {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2\n },\n err: null\n };\n } else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2\n },\n err: null\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return {\n val: true,\n err: null\n };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */:\n {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */:\n {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */:\n {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n } else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n } catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons ? parseNumberSkeleton(tokens) : {}\n },\n err: null\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value,\n selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n } else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select' ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select' ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([selector, {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition())\n }]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n _a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location;\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select' ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return {\n val: options,\n err: null\n };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {} else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n } else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return {\n val: decimal,\n err: null\n };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location\n }\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n } else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n } else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}();\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return codepoint >= 97 && codepoint <= 122 || codepoint >= 65 && codepoint <= 90;\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return c === 45 /* '-' */ || c === 46 /* '.' */ || c >= 48 && c <= 57 /* 0..9 */ || c === 95 /* '_' */ || c >= 97 && c <= 122 /** a..z */ || c >= 65 && c <= 90 /* A..Z */ || c == 0xb7 || c >= 0xc0 && c <= 0xd6 || c >= 0xd8 && c <= 0xf6 || c >= 0xf8 && c <= 0x37d || c >= 0x37f && c <= 0x1fff || c >= 0x200c && c <= 0x200d || c >= 0x203f && c <= 0x2040 || c >= 0x2070 && c <= 0x218f || c >= 0x2c00 && c <= 0x2fef || c >= 0x3001 && c <= 0xd7ff || c >= 0xf900 && c <= 0xfdcf || c >= 0xfdf0 && c <= 0xfffd || c >= 0x10000 && c <= 0xeffff;\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return c >= 0x0009 && c <= 0x000d || c === 0x0020 || c === 0x0085 || c >= 0x200e && c <= 0x200f || c === 0x2028 || c === 0x2029;\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return c >= 0x0021 && c <= 0x0023 || c === 0x0024 || c >= 0x0025 && c <= 0x0027 || c === 0x0028 || c === 0x0029 || c === 0x002a || c === 0x002b || c === 0x002c || c === 0x002d || c >= 0x002e && c <= 0x002f || c >= 0x003a && c <= 0x003b || c >= 0x003c && c <= 0x003e || c >= 0x003f && c <= 0x0040 || c === 0x005b || c === 0x005c || c === 0x005d || c === 0x005e || c === 0x0060 || c === 0x007b || c === 0x007c || c === 0x007d || c === 0x007e || c === 0x00a1 || c >= 0x00a2 && c <= 0x00a5 || c === 0x00a6 || c === 0x00a7 || c === 0x00a9 || c === 0x00ab || c === 0x00ac || c === 0x00ae || c === 0x00b0 || c === 0x00b1 || c === 0x00b6 || c === 0x00bb || c === 0x00bf || c === 0x00d7 || c === 0x00f7 || c >= 0x2010 && c <= 0x2015 || c >= 0x2016 && c <= 0x2017 || c === 0x2018 || c === 0x2019 || c === 0x201a || c >= 0x201b && c <= 0x201c || c === 0x201d || c === 0x201e || c === 0x201f || c >= 0x2020 && c <= 0x2027 || c >= 0x2030 && c <= 0x2038 || c === 0x2039 || c === 0x203a || c >= 0x203b && c <= 0x203e || c >= 0x2041 && c <= 0x2043 || c === 0x2044 || c === 0x2045 || c === 0x2046 || c >= 0x2047 && c <= 0x2051 || c === 0x2052 || c === 0x2053 || c >= 0x2055 && c <= 0x205e || c >= 0x2190 && c <= 0x2194 || c >= 0x2195 && c <= 0x2199 || c >= 0x219a && c <= 0x219b || c >= 0x219c && c <= 0x219f || c === 0x21a0 || c >= 0x21a1 && c <= 0x21a2 || c === 0x21a3 || c >= 0x21a4 && c <= 0x21a5 || c === 0x21a6 || c >= 0x21a7 && c <= 0x21ad || c === 0x21ae || c >= 0x21af && c <= 0x21cd || c >= 0x21ce && c <= 0x21cf || c >= 0x21d0 && c <= 0x21d1 || c === 0x21d2 || c === 0x21d3 || c === 0x21d4 || c >= 0x21d5 && c <= 0x21f3 || c >= 0x21f4 && c <= 0x22ff || c >= 0x2300 && c <= 0x2307 || c === 0x2308 || c === 0x2309 || c === 0x230a || c === 0x230b || c >= 0x230c && c <= 0x231f || c >= 0x2320 && c <= 0x2321 || c >= 0x2322 && c <= 0x2328 || c === 0x2329 || c === 0x232a || c >= 0x232b && c <= 0x237b || c === 0x237c || c >= 0x237d && c <= 0x239a || c >= 0x239b && c <= 0x23b3 || c >= 0x23b4 && c <= 0x23db || c >= 0x23dc && c <= 0x23e1 || c >= 0x23e2 && c <= 0x2426 || c >= 0x2427 && c <= 0x243f || c >= 0x2440 && c <= 0x244a || c >= 0x244b && c <= 0x245f || c >= 0x2500 && c <= 0x25b6 || c === 0x25b7 || c >= 0x25b8 && c <= 0x25c0 || c === 0x25c1 || c >= 0x25c2 && c <= 0x25f7 || c >= 0x25f8 && c <= 0x25ff || c >= 0x2600 && c <= 0x266e || c === 0x266f || c >= 0x2670 && c <= 0x2767 || c === 0x2768 || c === 0x2769 || c === 0x276a || c === 0x276b || c === 0x276c || c === 0x276d || c === 0x276e || c === 0x276f || c === 0x2770 || c === 0x2771 || c === 0x2772 || c === 0x2773 || c === 0x2774 || c === 0x2775 || c >= 0x2794 && c <= 0x27bf || c >= 0x27c0 && c <= 0x27c4 || c === 0x27c5 || c === 0x27c6 || c >= 0x27c7 && c <= 0x27e5 || c === 0x27e6 || c === 0x27e7 || c === 0x27e8 || c === 0x27e9 || c === 0x27ea || c === 0x27eb || c === 0x27ec || c === 0x27ed || c === 0x27ee || c === 0x27ef || c >= 0x27f0 && c <= 0x27ff || c >= 0x2800 && c <= 0x28ff || c >= 0x2900 && c <= 0x2982 || c === 0x2983 || c === 0x2984 || c === 0x2985 || c === 0x2986 || c === 0x2987 || c === 0x2988 || c === 0x2989 || c === 0x298a || c === 0x298b || c === 0x298c || c === 0x298d || c === 0x298e || c === 0x298f || c === 0x2990 || c === 0x2991 || c === 0x2992 || c === 0x2993 || c === 0x2994 || c === 0x2995 || c === 0x2996 || c === 0x2997 || c === 0x2998 || c >= 0x2999 && c <= 0x29d7 || c === 0x29d8 || c === 0x29d9 || c === 0x29da || c === 0x29db || c >= 0x29dc && c <= 0x29fb || c === 0x29fc || c === 0x29fd || c >= 0x29fe && c <= 0x2aff || c >= 0x2b00 && c <= 0x2b2f || c >= 0x2b30 && c <= 0x2b44 || c >= 0x2b45 && c <= 0x2b46 || c >= 0x2b47 && c <= 0x2b4c || c >= 0x2b4d && c <= 0x2b73 || c >= 0x2b74 && c <= 0x2b75 || c >= 0x2b76 && c <= 0x2b95 || c === 0x2b96 || c >= 0x2b97 && c <= 0x2bff || c >= 0x2e00 && c <= 0x2e01 || c === 0x2e02 || c === 0x2e03 || c === 0x2e04 || c === 0x2e05 || c >= 0x2e06 && c <= 0x2e08 || c === 0x2e09 || c === 0x2e0a || c === 0x2e0b || c === 0x2e0c || c === 0x2e0d || c >= 0x2e0e && c <= 0x2e16 || c === 0x2e17 || c >= 0x2e18 && c <= 0x2e19 || c === 0x2e1a || c === 0x2e1b || c === 0x2e1c || c === 0x2e1d || c >= 0x2e1e && c <= 0x2e1f || c === 0x2e20 || c === 0x2e21 || c === 0x2e22 || c === 0x2e23 || c === 0x2e24 || c === 0x2e25 || c === 0x2e26 || c === 0x2e27 || c === 0x2e28 || c === 0x2e29 || c >= 0x2e2a && c <= 0x2e2e || c === 0x2e2f || c >= 0x2e30 && c <= 0x2e39 || c >= 0x2e3a && c <= 0x2e3b || c >= 0x2e3c && c <= 0x2e3f || c === 0x2e40 || c === 0x2e41 || c === 0x2e42 || c >= 0x2e43 && c <= 0x2e4f || c >= 0x2e50 && c <= 0x2e51 || c === 0x2e52 || c >= 0x2e53 && c <= 0x2e7f || c >= 0x3001 && c <= 0x3003 || c === 0x3008 || c === 0x3009 || c === 0x300a || c === 0x300b || c === 0x300c || c === 0x300d || c === 0x300e || c === 0x300f || c === 0x3010 || c === 0x3011 || c >= 0x3012 && c <= 0x3013 || c === 0x3014 || c === 0x3015 || c === 0x3016 || c === 0x3017 || c === 0x3018 || c === 0x3019 || c === 0x301a || c === 0x301b || c === 0x301c || c === 0x301d || c >= 0x301e && c <= 0x301f || c === 0x3020 || c === 0x3030 || c === 0xfd3e || c === 0xfd3f || c >= 0xfe45 && c <= 0xfe46;\n}","import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n var skeletonCopy = '';\n for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n var patternChar = skeleton.charAt(patternPos);\n if (patternChar === 'j') {\n var extraLength = 0;\n while (patternPos + 1 < skeleton.length && skeleton.charAt(patternPos + 1) === patternChar) {\n extraLength++;\n patternPos++;\n }\n var hourLen = 1 + (extraLength & 1);\n var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n var dayPeriodChar = 'a';\n var hourChar = getDefaultHourSymbolFromLocale(locale);\n if (hourChar == 'H' || hourChar == 'k') {\n dayPeriodLen = 0;\n }\n while (dayPeriodLen-- > 0) {\n skeletonCopy += dayPeriodChar;\n }\n while (hourLen-- > 0) {\n skeletonCopy = hourChar + skeletonCopy;\n }\n } else if (patternChar === 'J') {\n skeletonCopy += 'H';\n } else {\n skeletonCopy += patternChar;\n }\n }\n return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n var hourCycle = locale.hourCycle;\n if (hourCycle === undefined &&\n // @ts-ignore hourCycle(s) is not identified yet\n locale.hourCycles &&\n // @ts-ignore\n locale.hourCycles.length) {\n // @ts-ignore\n hourCycle = locale.hourCycles[0];\n }\n if (hourCycle) {\n switch (hourCycle) {\n case 'h24':\n return 'k';\n case 'h23':\n return 'H';\n case 'h12':\n return 'h';\n case 'h11':\n return 'K';\n default:\n throw new Error('Invalid hourCycle');\n }\n }\n // TODO: Once hourCycle is fully supported remove the following with data generation\n var languageTag = locale.language;\n var regionTag;\n if (languageTag !== 'root') {\n regionTag = locale.maximize().region;\n }\n var hourCycles = timeData[regionTag || ''] || timeData[languageTag || ''] || timeData[\"\".concat(languageTag, \"-001\")] || timeData['001'];\n return hourCycles[0];\n}","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n } else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n } else if ((isDateElement(el) || isTimeElement(el)) && isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n } else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) {\n opts = {};\n }\n opts = __assign({\n shouldParseSkeletons: true,\n requiresOtherClause: true\n }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return value == null || typeof value === 'number' || typeof value === 'boolean'; // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n }\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic\n};","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error);\nexport { FormatError };\nvar InvalidValueError = /** @class */function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError);\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError);\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError);\nexport { MissingValueError };","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart || lastPart.type !== PART_TYPE.literal || part.type !== PART_TYPE.literal) {\n all.push(part);\n } else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue,\n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [{\n type: PART_TYPE.literal,\n value: els[0].value\n }];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue)\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value = typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string' ? formats.date[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getDateTimeFormat(locales, style).format(value)\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string' ? formats.time[el.style] : isDateTimeSkeleton(el.style) ? el.style.parsedOptions : formats.time.medium;\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getDateTimeFormat(locales, style).format(value)\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string' ? formats.number[el.style] : isNumberSkeleton(el.style) ? el.style.parsedOptions : undefined;\n if (style && style.scale) {\n value = value * (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales, style).format(value)\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children,\n value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) {\n return p.value;\n }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters.getPluralRules(locales, {\n type: el.pluralType\n }).select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, c1 || {}), c2 || {}), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), c2[k] || {});\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n }\n };\n }\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) {\n cache = {\n number: {},\n dateTime: {},\n pluralRules: {}\n };\n }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic\n })\n };\n}\nvar IntlMessageFormat = /** @class */function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) {\n locales = IntlMessageFormat.defaultLocale;\n }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {}\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length || part.type !== PART_TYPE.literal || typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n } else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () {\n return {\n locale: _this.resolvedLocale.toString()\n };\n };\n this.getAst = function () {\n return _this.ast;\n };\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n locale: this.resolvedLocale\n });\n } else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n this.formatters = opts && opts.formatters || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale = new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.resolveLocale = function (locales) {\n var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n if (supportedLocales.length > 0) {\n return new Intl.Locale(supportedLocales[0]);\n }\n return new Intl.Locale(typeof locales === 'string' ? locales : locales[0]);\n };\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0\n },\n currency: {\n style: 'currency'\n },\n percent: {\n style: 'percent'\n }\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit'\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric'\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n }\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric'\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short'\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short'\n }\n }\n };\n return IntlMessageFormat;\n}();\nexport { IntlMessageFormat };","import { __extends } from \"tslib\";\nexport var IntlErrorCode;\n(function (IntlErrorCode) {\n IntlErrorCode[\"FORMAT_ERROR\"] = \"FORMAT_ERROR\";\n IntlErrorCode[\"UNSUPPORTED_FORMATTER\"] = \"UNSUPPORTED_FORMATTER\";\n IntlErrorCode[\"INVALID_CONFIG\"] = \"INVALID_CONFIG\";\n IntlErrorCode[\"MISSING_DATA\"] = \"MISSING_DATA\";\n IntlErrorCode[\"MISSING_TRANSLATION\"] = \"MISSING_TRANSLATION\";\n})(IntlErrorCode || (IntlErrorCode = {}));\nvar IntlError = /** @class */function (_super) {\n __extends(IntlError, _super);\n function IntlError(code, message, exception) {\n var _this = this;\n var err = exception ? exception instanceof Error ? exception : new Error(String(exception)) : undefined;\n _this = _super.call(this, \"[@formatjs/intl Error \".concat(code, \"] \").concat(message, \" \\n\").concat(err ? \"\\n\".concat(err.message, \"\\n\").concat(err.stack) : '')) || this;\n _this.code = code;\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (typeof Error.captureStackTrace === 'function') {\n // @ts-ignore just so we don't need to declare dep on @types/node\n Error.captureStackTrace(_this, IntlError);\n }\n return _this;\n }\n return IntlError;\n}(Error);\nexport { IntlError };\nvar UnsupportedFormatterError = /** @class */function (_super) {\n __extends(UnsupportedFormatterError, _super);\n function UnsupportedFormatterError(message, exception) {\n return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message, exception) || this;\n }\n return UnsupportedFormatterError;\n}(IntlError);\nexport { UnsupportedFormatterError };\nvar InvalidConfigError = /** @class */function (_super) {\n __extends(InvalidConfigError, _super);\n function InvalidConfigError(message, exception) {\n return _super.call(this, IntlErrorCode.INVALID_CONFIG, message, exception) || this;\n }\n return InvalidConfigError;\n}(IntlError);\nexport { InvalidConfigError };\nvar MissingDataError = /** @class */function (_super) {\n __extends(MissingDataError, _super);\n function MissingDataError(message, exception) {\n return _super.call(this, IntlErrorCode.MISSING_DATA, message, exception) || this;\n }\n return MissingDataError;\n}(IntlError);\nexport { MissingDataError };\nvar IntlFormatError = /** @class */function (_super) {\n __extends(IntlFormatError, _super);\n function IntlFormatError(message, locale, exception) {\n return _super.call(this, IntlErrorCode.FORMAT_ERROR, \"\".concat(message, \" \\nLocale: \").concat(locale, \"\\n\"), exception) || this;\n }\n return IntlFormatError;\n}(IntlError);\nexport { IntlFormatError };\nvar MessageFormatError = /** @class */function (_super) {\n __extends(MessageFormatError, _super);\n function MessageFormatError(message, locale, descriptor, exception) {\n var _this = _super.call(this, \"\".concat(message, \" \\nMessageID: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, \"\\nDefault Message: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, \"\\nDescription: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, \" \\n\"), locale, exception) || this;\n _this.descriptor = descriptor;\n return _this;\n }\n return MessageFormatError;\n}(IntlFormatError);\nexport { MessageFormatError };\nvar MissingTranslationError = /** @class */function (_super) {\n __extends(MissingTranslationError, _super);\n function MissingTranslationError(descriptor, locale) {\n var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, \"Missing message: \\\"\".concat(descriptor.id, \"\\\" for locale \\\"\").concat(locale, \"\\\", using \").concat(descriptor.defaultMessage ? 'default message' : 'id', \" as fallback.\")) || this;\n _this.descriptor = descriptor;\n return _this;\n }\n return MissingTranslationError;\n}(IntlError);\nexport { MissingTranslationError };","import { __assign, __spreadArray } from \"tslib\";\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { UnsupportedFormatterError } from './error';\nexport function filterProps(props, allowlist, defaults) {\n if (defaults === void 0) {\n defaults = {};\n }\n return allowlist.reduce(function (filtered, name) {\n if (name in props) {\n filtered[name] = props[name];\n } else if (name in defaults) {\n filtered[name] = defaults[name];\n }\n return filtered;\n }, {});\n}\nvar defaultErrorHandler = function (error) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.error(error);\n }\n};\nvar defaultWarnHandler = function (warning) {\n // @ts-ignore just so we don't need to declare dep on @types/node\n if (process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n};\nexport var DEFAULT_INTL_CONFIG = {\n formats: {},\n messages: {},\n timeZone: undefined,\n defaultLocale: 'en',\n defaultFormats: {},\n fallbackOnEmptyString: true,\n onError: defaultErrorHandler,\n onWarn: defaultWarnHandler\n};\nexport function createIntlCache() {\n return {\n dateTime: {},\n number: {},\n message: {},\n relativeTime: {},\n pluralRules: {},\n list: {},\n displayNames: {}\n };\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n }\n };\n }\n };\n}\n/**\n * Create intl formatters and populate cache\n * @param cache explicit cache to prevent leaking memory\n */\nexport function createFormatters(cache) {\n if (cache === void 0) {\n cache = createIntlCache();\n }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n var ListFormat = Intl.ListFormat;\n var DisplayNames = Intl.DisplayNames;\n var getDateTimeFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic\n });\n var getNumberFormat = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic\n });\n var getPluralRules = memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic\n });\n return {\n getDateTimeFormat: getDateTimeFormat,\n getNumberFormat: getNumberFormat,\n getMessageFormat: memoize(function (message, locales, overrideFormats, opts) {\n return new IntlMessageFormat(message, locales, overrideFormats, __assign({\n formatters: {\n getNumberFormat: getNumberFormat,\n getDateTimeFormat: getDateTimeFormat,\n getPluralRules: getPluralRules\n }\n }, opts || {}));\n }, {\n cache: createFastMemoizeCache(cache.message),\n strategy: strategies.variadic\n }),\n getRelativeTimeFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.relativeTime),\n strategy: strategies.variadic\n }),\n getPluralRules: getPluralRules,\n getListFormat: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.list),\n strategy: strategies.variadic\n }),\n getDisplayNames: memoize(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.displayNames),\n strategy: strategies.variadic\n })\n };\n}\nexport function getNamedFormat(formats, type, name, onError) {\n var formatType = formats && formats[type];\n var format;\n if (formatType) {\n format = formatType[name];\n }\n if (format) {\n return format;\n }\n onError(new UnsupportedFormatterError(\"No \".concat(type, \" format named: \").concat(name)));\n}","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { DEFAULT_INTL_CONFIG as CORE_DEFAULT_INTL_CONFIG } from '@formatjs/intl';\nexport function invariantIntlContext(intl) {\n invariant(intl, '[React Intl] Could not find required `intl` object. ' + '<IntlProvider> needs to exist in the component ancestry.');\n}\nexport var DEFAULT_INTL_CONFIG = __assign(__assign({}, CORE_DEFAULT_INTL_CONFIG), {\n textComponent: React.Fragment\n});\n/**\n * Takes a `formatXMLElementFn`, and composes it in function, which passes\n * argument `parts` through, assigning unique key to each part, to prevent\n * \"Each child in a list should have a unique \"key\"\" React error.\n * @param formatXMLElementFn\n */\nexport function assignUniqueKeysToParts(formatXMLElementFn) {\n return function (parts) {\n // eslint-disable-next-line prefer-rest-params\n return formatXMLElementFn(React.Children.toArray(parts));\n };\n}\nexport function shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n if (!objA || !objB) {\n return false;\n }\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n var len = aKeys.length;\n if (bKeys.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var key = aKeys[i];\n if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n return false;\n }\n }\n return true;\n}","import * as React from 'react';\nimport { Context } from './injectIntl';\nimport { invariantIntlContext } from '../utils';\nexport default function useIntl() {\n var intl = React.useContext(Context);\n invariantIntlContext(intl);\n return intl;\n}","import { __assign } from \"tslib\";\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport { MissingTranslationError, MessageFormatError } from './error';\nimport { TYPE } from '@formatjs/icu-messageformat-parser';\nfunction setTimeZoneInOptions(opts, timeZone) {\n return Object.keys(opts).reduce(function (all, k) {\n all[k] = __assign({\n timeZone: timeZone\n }, opts[k]);\n return all;\n }, {});\n}\nfunction deepMergeOptions(opts1, opts2) {\n var keys = Object.keys(__assign(__assign({}, opts1), opts2));\n return keys.reduce(function (all, k) {\n all[k] = __assign(__assign({}, opts1[k] || {}), opts2[k] || {});\n return all;\n }, {});\n}\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n if (!timeZone) {\n return f1;\n }\n var mfFormats = IntlMessageFormat.formats;\n return __assign(__assign(__assign({}, mfFormats), f1), {\n date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)),\n time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone))\n });\n}\nexport function formatMessage(_a, state, messageDescriptor, values, opts) {\n var locale = _a.locale,\n formats = _a.formats,\n messages = _a.messages,\n defaultLocale = _a.defaultLocale,\n defaultFormats = _a.defaultFormats,\n fallbackOnEmptyString = _a.fallbackOnEmptyString,\n onError = _a.onError,\n timeZone = _a.timeZone,\n defaultRichTextElements = _a.defaultRichTextElements;\n if (messageDescriptor === void 0) {\n messageDescriptor = {\n id: ''\n };\n }\n var msgId = messageDescriptor.id,\n defaultMessage = messageDescriptor.defaultMessage;\n // `id` is a required field of a Message Descriptor.\n invariant(!!msgId, \"[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue\");\n var id = String(msgId);\n var message =\n // In case messages is Object.create(null)\n // e.g import('foo.json') from webpack)\n // See https://github.com/formatjs/formatjs/issues/1914\n messages && Object.prototype.hasOwnProperty.call(messages, id) && messages[id];\n // IMPORTANT: Hot path if `message` is AST with a single literal node\n if (Array.isArray(message) && message.length === 1 && message[0].type === TYPE.literal) {\n return message[0].value;\n }\n // IMPORTANT: Hot path straight lookup for performance\n if (!values && message && typeof message === 'string' && !defaultRichTextElements) {\n return message.replace(/'\\{(.*?)\\}'/gi, \"{$1}\");\n }\n values = __assign(__assign({}, defaultRichTextElements), values || {});\n formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n if (!message) {\n if (fallbackOnEmptyString === false && message === '') {\n return message;\n }\n if (!defaultMessage || locale && locale.toLowerCase() !== defaultLocale.toLowerCase()) {\n // This prevents warnings from littering the console in development\n // when no `messages` are passed into the <IntlProvider> for the\n // default locale.\n onError(new MissingTranslationError(messageDescriptor, locale));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n } catch (e) {\n onError(new MessageFormatError(\"Error formatting default message for: \\\"\".concat(id, \"\\\", rendering default message verbatim\"), locale, messageDescriptor, e));\n return typeof defaultMessage === 'string' ? defaultMessage : id;\n }\n }\n return id;\n }\n // We have the translated message\n try {\n var formatter = state.getMessageFormat(message, locale, formats, __assign({\n formatters: state\n }, opts || {}));\n return formatter.format(values);\n } catch (e) {\n onError(new MessageFormatError(\"Error formatting message: \\\"\".concat(id, \"\\\", using \").concat(defaultMessage ? 'default message' : 'id', \" as fallback.\"), locale, messageDescriptor, e));\n }\n if (defaultMessage) {\n try {\n var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n return formatter.format(values);\n } catch (e) {\n onError(new MessageFormatError(\"Error formatting the default message for: \\\"\".concat(id, \"\\\", rendering message verbatim\"), locale, messageDescriptor, e));\n }\n }\n if (typeof message === 'string') {\n return message;\n }\n if (typeof defaultMessage === 'string') {\n return defaultMessage;\n }\n return id;\n}","import { getNamedFormat, filterProps } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar NUMBER_FORMAT_OPTIONS = ['localeMatcher', 'style', 'currency', 'currencyDisplay', 'unit', 'unitDisplay', 'useGrouping', 'minimumIntegerDigits', 'minimumFractionDigits', 'maximumFractionDigits', 'minimumSignificantDigits', 'maximumSignificantDigits',\n// ES2020 NumberFormat\n'compactDisplay', 'currencyDisplay', 'currencySign', 'notation', 'signDisplay', 'unit', 'unitDisplay', 'numberingSystem'];\nexport function getFormatter(_a, getNumberFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError;\n if (options === void 0) {\n options = {};\n }\n var format = options.format;\n var defaults = format && getNamedFormat(formats, 'number', format, onError) || {};\n var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n return getNumberFormat(locale, filteredOptions);\n}\nexport function formatNumber(config, getNumberFormat, value, options) {\n if (options === void 0) {\n options = {};\n }\n try {\n return getFormatter(config, getNumberFormat, options).format(value);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return String(value);\n}\nexport function formatNumberToParts(config, getNumberFormat, value, options) {\n if (options === void 0) {\n options = {};\n }\n try {\n return getFormatter(config, getNumberFormat, options).formatToParts(value);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n }\n return [];\n}","import { getNamedFormat, filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style'];\nfunction getFormatter(_a, getRelativeTimeFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError;\n if (options === void 0) {\n options = {};\n }\n var format = options.format;\n var defaults = !!format && getNamedFormat(formats, 'relative', format, onError) || {};\n var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n return getRelativeTimeFormat(locale, filteredOptions);\n}\nexport function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n if (options === void 0) {\n options = {};\n }\n if (!unit) {\n unit = 'second';\n }\n var RelativeTimeFormat = Intl.RelativeTimeFormat;\n if (!RelativeTimeFormat) {\n config.onError(new FormatError(\"Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-relativetimeformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n try {\n return getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n } catch (e) {\n config.onError(new IntlFormatError('Error formatting relative time.', config.locale, e));\n }\n return String(value);\n}","import { __assign } from \"tslib\";\nimport { filterProps, getNamedFormat } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar DATE_TIME_FORMAT_OPTIONS = ['localeMatcher', 'formatMatcher', 'timeZone', 'hour12', 'weekday', 'era', 'year', 'month', 'day', 'hour', 'minute', 'second', 'timeZoneName', 'hourCycle', 'dateStyle', 'timeStyle', 'calendar',\n// 'dayPeriod',\n'numberingSystem'];\nexport function getFormatter(_a, type, getDateTimeFormat, options) {\n var locale = _a.locale,\n formats = _a.formats,\n onError = _a.onError,\n timeZone = _a.timeZone;\n if (options === void 0) {\n options = {};\n }\n var format = options.format;\n var defaults = __assign(__assign({}, timeZone && {\n timeZone: timeZone\n }), format && getNamedFormat(formats, type, format, onError));\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);\n if (type === 'time' && !filteredOptions.hour && !filteredOptions.minute && !filteredOptions.second && !filteredOptions.timeStyle && !filteredOptions.dateStyle) {\n // Add default formatting options if hour, minute, or second isn't defined.\n filteredOptions = __assign(__assign({}, filteredOptions), {\n hour: 'numeric',\n minute: 'numeric'\n });\n }\n return getDateTimeFormat(locale, filteredOptions);\n}\nexport function formatDate(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).format(date);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return String(date);\n}\nexport function formatTime(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).format(date);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return String(date);\n}\nexport function formatDateTimeRange(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var from = _a[0],\n to = _a[1],\n _b = _a[2],\n options = _b === void 0 ? {} : _b;\n var timeZone = config.timeZone,\n locale = config.locale,\n onError = config.onError;\n var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? {\n timeZone: timeZone\n } : {});\n try {\n return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n } catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date time range.', e));\n }\n return String(from);\n}\nexport function formatDateToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'date', getDateTimeFormat, options).formatToParts(date);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n }\n return [];\n}\nexport function formatTimeToParts(config, getDateTimeFormat) {\n var _a = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n _a[_i - 2] = arguments[_i];\n }\n var value = _a[0],\n _b = _a[1],\n options = _b === void 0 ? {} : _b;\n var date = typeof value === 'string' ? new Date(value || 0) : value;\n try {\n return getFormatter(config, 'time', getDateTimeFormat, options).formatToParts(date);\n } catch (e) {\n config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n }\n return [];\n}","import { filterProps } from './utils';\nimport { IntlFormatError } from './error';\nimport { ErrorCode, FormatError } from 'intl-messageformat';\nvar PLURAL_FORMAT_OPTIONS = ['localeMatcher', 'type'];\nexport function formatPlural(_a, getPluralRules, value, options) {\n var locale = _a.locale,\n onError = _a.onError;\n if (options === void 0) {\n options = {};\n }\n if (!Intl.PluralRules) {\n onError(new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n try {\n return getPluralRules(locale, filteredOptions).select(value);\n } catch (e) {\n onError(new IntlFormatError('Error formatting plural.', locale, e));\n }\n return 'other';\n}","import { __assign } from \"tslib\";\nimport { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlError, IntlErrorCode } from './error';\nvar LIST_FORMAT_OPTIONS = ['localeMatcher', 'type', 'style'];\nvar now = Date.now();\nfunction generateToken(i) {\n return \"\".concat(now, \"_\").concat(i, \"_\").concat(now);\n}\nexport function formatList(opts, getListFormat, values, options) {\n if (options === void 0) {\n options = {};\n }\n var results = formatListToParts(opts, getListFormat, values, options).reduce(function (all, el) {\n var val = el.value;\n if (typeof val !== 'string') {\n all.push(val);\n } else if (typeof all[all.length - 1] === 'string') {\n all[all.length - 1] += val;\n } else {\n all.push(val);\n }\n return all;\n }, []);\n return results.length === 1 ? results[0] : results;\n}\nexport function formatListToParts(_a, getListFormat, values, options) {\n var locale = _a.locale,\n onError = _a.onError;\n if (options === void 0) {\n options = {};\n }\n var ListFormat = Intl.ListFormat;\n if (!ListFormat) {\n onError(new FormatError(\"Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-listformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);\n try {\n var richValues_1 = {};\n var serializedValues = values.map(function (v, i) {\n if (typeof v === 'object') {\n var id = generateToken(i);\n richValues_1[id] = v;\n return id;\n }\n return String(v);\n });\n return getListFormat(locale, filteredOptions).formatToParts(serializedValues).map(function (part) {\n return part.type === 'literal' ? part : __assign(__assign({}, part), {\n value: richValues_1[part.value] || part.value\n });\n });\n } catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting list.', e));\n }\n // @ts-ignore\n return values;\n}","import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlErrorCode, IntlError } from './error';\nvar DISPLAY_NAMES_OPTONS = ['localeMatcher', 'style', 'type', 'fallback'];\nexport function formatDisplayName(_a, getDisplayNames, value, options) {\n var locale = _a.locale,\n onError = _a.onError;\n var DisplayNames = Intl.DisplayNames;\n if (!DisplayNames) {\n onError(new FormatError(\"Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-displaynames\\\"\\n\", ErrorCode.MISSING_INTL_API));\n }\n var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);\n try {\n return getDisplayNames(locale, filteredOptions).of(value);\n } catch (e) {\n onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting display name.', e));\n }\n}","import { __assign } from \"tslib\";\nimport { createFormatters, DEFAULT_INTL_CONFIG } from './utils';\nimport { InvalidConfigError, MissingDataError } from './error';\nimport { formatNumber, formatNumberToParts } from './number';\nimport { formatRelativeTime } from './relativeTime';\nimport { formatDate, formatDateToParts, formatTime, formatTimeToParts, formatDateTimeRange } from './dateTime';\nimport { formatPlural } from './plural';\nimport { formatMessage } from './message';\nimport { formatList, formatListToParts } from './list';\nimport { formatDisplayName } from './displayName';\nfunction messagesContainString(messages) {\n var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n return typeof firstMessage === 'string';\n}\nfunction verifyConfigMessages(config) {\n if (config.onWarn && config.defaultRichTextElements && messagesContainString(config.messages || {})) {\n config.onWarn(\"[@formatjs/intl] \\\"defaultRichTextElements\\\" was specified but \\\"message\\\" was not pre-compiled. \\nPlease consider using \\\"@formatjs/cli\\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution\");\n }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport function createIntl(config, cache) {\n var formatters = createFormatters(cache);\n var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG), config);\n var locale = resolvedConfig.locale,\n defaultLocale = resolvedConfig.defaultLocale,\n onError = resolvedConfig.onError;\n if (!locale) {\n if (onError) {\n onError(new InvalidConfigError(\"\\\"locale\\\" was not configured, using \\\"\".concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details\")));\n }\n // Since there's no registered locale data for `locale`, this will\n // fallback to the `defaultLocale` to make sure things can render.\n // The `messages` are overridden to the `defaultProps` empty object\n // to maintain referential equality across re-renders. It's assumed\n // each <FormattedMessage> contains a `defaultMessage` prop.\n resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';\n } else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.NumberFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n } else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length && onError) {\n onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.DateTimeFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n }\n verifyConfigMessages(resolvedConfig);\n return __assign(__assign({}, resolvedConfig), {\n formatters: formatters,\n formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat),\n formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat),\n formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat),\n formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat),\n formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules),\n formatMessage: formatMessage.bind(null, resolvedConfig, formatters),\n $t: formatMessage.bind(null, resolvedConfig, formatters),\n formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat),\n formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat),\n formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames)\n });\n}","/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __assign, __extends, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { Provider } from './injectIntl';\nimport { DEFAULT_INTL_CONFIG, invariantIntlContext, assignUniqueKeysToParts, shallowEqual } from '../utils';\nimport { formatMessage as coreFormatMessage, createIntl as coreCreateIntl, createIntlCache } from '@formatjs/intl';\nimport { isFormatXMLElementFn } from 'intl-messageformat';\nfunction processIntlConfig(config) {\n return {\n locale: config.locale,\n timeZone: config.timeZone,\n fallbackOnEmptyString: config.fallbackOnEmptyString,\n formats: config.formats,\n textComponent: config.textComponent,\n messages: config.messages,\n defaultLocale: config.defaultLocale,\n defaultFormats: config.defaultFormats,\n onError: config.onError,\n onWarn: config.onWarn,\n wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n defaultRichTextElements: config.defaultRichTextElements\n };\n}\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n if (!values) {\n return values;\n }\n return Object.keys(values).reduce(function (acc, k) {\n var v = values[k];\n acc[k] = isFormatXMLElementFn(v) ? assignUniqueKeysToParts(v) : v;\n return acc;\n }, {});\n}\nvar formatMessage = function (config, formatters, descriptor, rawValues) {\n var rest = [];\n for (var _i = 4; _i < arguments.length; _i++) {\n rest[_i - 4] = arguments[_i];\n }\n var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n var chunks = coreFormatMessage.apply(void 0, __spreadArray([config, formatters, descriptor, values], rest, false));\n if (Array.isArray(chunks)) {\n return React.Children.toArray(chunks);\n }\n return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport var createIntl = function (_a, cache) {\n var rawDefaultRichTextElements = _a.defaultRichTextElements,\n config = __rest(_a, [\"defaultRichTextElements\"]);\n var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n var coreIntl = coreCreateIntl(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), {\n defaultRichTextElements: defaultRichTextElements\n }), cache);\n return __assign(__assign({}, coreIntl), {\n formatMessage: formatMessage.bind(null, {\n locale: coreIntl.locale,\n timeZone: coreIntl.timeZone,\n fallbackOnEmptyString: coreIntl.fallbackOnEmptyString,\n formats: coreIntl.formats,\n defaultLocale: coreIntl.defaultLocale,\n defaultFormats: coreIntl.defaultFormats,\n messages: coreIntl.messages,\n onError: coreIntl.onError,\n defaultRichTextElements: defaultRichTextElements\n }, coreIntl.formatters)\n });\n};\nvar IntlProvider = /** @class */function (_super) {\n __extends(IntlProvider, _super);\n function IntlProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cache = createIntlCache();\n _this.state = {\n cache: _this.cache,\n intl: createIntl(processIntlConfig(_this.props), _this.cache),\n prevConfig: processIntlConfig(_this.props)\n };\n return _this;\n }\n IntlProvider.getDerivedStateFromProps = function (props, _a) {\n var prevConfig = _a.prevConfig,\n cache = _a.cache;\n var config = processIntlConfig(props);\n if (!shallowEqual(prevConfig, config)) {\n return {\n intl: createIntl(config, cache),\n prevConfig: config\n };\n }\n return null;\n };\n IntlProvider.prototype.render = function () {\n invariantIntlContext(this.state.intl);\n return React.createElement(Provider, {\n value: this.state.intl\n }, this.props.children);\n };\n IntlProvider.displayName = 'IntlProvider';\n IntlProvider.defaultProps = DEFAULT_INTL_CONFIG;\n return IntlProvider;\n}(React.PureComponent);\nexport default IntlProvider;","import React, { createContext } from 'react';\nimport warning from 'tiny-warning';\nimport PropTypes from 'prop-types';\nimport hoist from 'hoist-non-react-statics';\nimport getDisplayName from 'react-display-name';\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n}\nfunction createThemeProvider(context) {\n var ThemeProvider = /*#__PURE__*/\n function (_React$Component) {\n _inheritsLoose(ThemeProvider, _React$Component);\n function ThemeProvider() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"cachedTheme\", void 0);\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastOuterTheme\", void 0);\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"lastTheme\", void 0);\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"renderProvider\", function (outerTheme) {\n var children = _this.props.children;\n return React.createElement(context.Provider, {\n value: _this.getTheme(outerTheme)\n }, children);\n });\n return _this;\n }\n var _proto = ThemeProvider.prototype;\n\n // Get the theme from the props, supporting both (outerTheme) => {} as well as object notation\n _proto.getTheme = function getTheme(outerTheme) {\n if (this.props.theme !== this.lastTheme || outerTheme !== this.lastOuterTheme || !this.cachedTheme) {\n this.lastOuterTheme = outerTheme;\n this.lastTheme = this.props.theme;\n if (typeof this.lastTheme === 'function') {\n var theme = this.props.theme;\n this.cachedTheme = theme(outerTheme);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(this.cachedTheme), '[ThemeProvider] Please return an object from your theme function') : void 0;\n } else {\n var _theme = this.props.theme;\n process.env.NODE_ENV !== \"production\" ? warning(isObject(_theme), '[ThemeProvider] Please make your theme prop a plain object') : void 0;\n this.cachedTheme = outerTheme ? _extends({}, outerTheme, _theme) : _theme;\n }\n }\n return this.cachedTheme;\n };\n _proto.render = function render() {\n var children = this.props.children;\n if (!children) {\n return null;\n }\n return React.createElement(context.Consumer, null, this.renderProvider);\n };\n return ThemeProvider;\n }(React.Component);\n if (process.env.NODE_ENV !== 'production') {\n ThemeProvider.propTypes = {\n // eslint-disable-next-line react/require-default-props\n children: PropTypes.node,\n theme: PropTypes.oneOfType([PropTypes.shape({}), PropTypes.func]).isRequired\n };\n }\n return ThemeProvider;\n}\nfunction createWithTheme(context) {\n return function hoc(Component) {\n var withTheme = React.forwardRef(function (props, ref) {\n return React.createElement(context.Consumer, null, function (theme) {\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use withTheme only with the ThemeProvider') : void 0;\n return React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n });\n });\n if (process.env.NODE_ENV !== 'production') {\n withTheme.displayName = \"WithTheme(\" + getDisplayName(Component) + \")\";\n }\n hoist(withTheme, Component);\n return withTheme;\n };\n}\nfunction createUseTheme(context) {\n var useTheme = function useTheme() {\n var theme = React.useContext(context);\n process.env.NODE_ENV !== \"production\" ? warning(isObject(theme), '[theming] Please use useTheme only with the ThemeProvider') : void 0;\n return theme;\n };\n return useTheme;\n}\nfunction createTheming(context) {\n return {\n context: context,\n withTheme: createWithTheme(context),\n useTheme: createUseTheme(context),\n ThemeProvider: createThemeProvider(context)\n };\n}\nvar ThemeContext = createContext();\nvar _createTheming = createTheming(ThemeContext),\n withTheme = _createTheming.withTheme,\n ThemeProvider = _createTheming.ThemeProvider,\n useTheme = _createTheming.useTheme;\nexport { useTheme, ThemeContext, withTheme, createTheming, ThemeProvider };","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\nexport default isBrowser;","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n var text = \"Warning: \" + message;\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\nexport default warning;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nvar plainObjectConstrurctor = {}.constructor;\nfunction cloneStyle(style) {\n if (style == null || typeof style !== 'object') return style;\n if (Array.isArray(style)) return style.map(cloneStyle);\n if (style.constructor !== plainObjectConstrurctor) return style;\n var newStyle = {};\n for (var name in style) {\n newStyle[name] = cloneStyle(style[name]);\n }\n return newStyle;\n}\n\n/**\n * Create a rule instance.\n */\n\nfunction createRule(name, decl, options) {\n if (name === void 0) {\n name = 'unnamed';\n }\n var jss = options.jss;\n var declCopy = cloneStyle(decl);\n var rule = jss.plugins.onCreateRule(name, declCopy, options);\n if (rule) return rule; // It is an at-rule and it has no instance.\n\n if (name[0] === '@') {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown rule \" + name) : void 0;\n }\n return null;\n}\nvar join = function join(value, by) {\n var result = '';\n for (var i = 0; i < value.length; i++) {\n // Remove !important from the value, it will be readded later.\n if (value[i] === '!important') break;\n if (result) result += by;\n result += value[i];\n }\n return result;\n};\n/**\n * Converts JSS array value to a CSS string.\n *\n * `margin: [['5px', '10px']]` > `margin: 5px 10px;`\n * `border: ['1px', '2px']` > `border: 1px, 2px;`\n * `margin: [['5px', '10px'], '!important']` > `margin: 5px 10px !important;`\n * `color: ['red', !important]` > `color: red !important;`\n */\n\nvar toCssValue = function toCssValue(value) {\n if (!Array.isArray(value)) return value;\n var cssValue = ''; // Support space separated values via `[['5px', '10px']]`.\n\n if (Array.isArray(value[0])) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === '!important') break;\n if (cssValue) cssValue += ', ';\n cssValue += join(value[i], ' ');\n }\n } else cssValue = join(value, ', '); // Add !important, because it was ignored.\n\n if (value[value.length - 1] === '!important') {\n cssValue += ' !important';\n }\n return cssValue;\n};\nfunction getWhitespaceSymbols(options) {\n if (options && options.format === false) {\n return {\n linebreak: '',\n space: ''\n };\n }\n return {\n linebreak: '\\n',\n space: ' '\n };\n}\n\n/**\n * Indent a string.\n * http://jsperf.com/array-join-vs-for\n */\n\nfunction indentStr(str, indent) {\n var result = '';\n for (var index = 0; index < indent; index++) {\n result += ' ';\n }\n return result + str;\n}\n/**\n * Converts a Rule to CSS string.\n */\n\nfunction toCss(selector, style, options) {\n if (options === void 0) {\n options = {};\n }\n var result = '';\n if (!style) return result;\n var _options = options,\n _options$indent = _options.indent,\n indent = _options$indent === void 0 ? 0 : _options$indent;\n var fallbacks = style.fallbacks;\n if (options.format === false) {\n indent = -Infinity;\n }\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak,\n space = _getWhitespaceSymbols.space;\n if (selector) indent++; // Apply fallbacks first.\n\n if (fallbacks) {\n // Array syntax {fallbacks: [{prop: value}]}\n if (Array.isArray(fallbacks)) {\n for (var index = 0; index < fallbacks.length; index++) {\n var fallback = fallbacks[index];\n for (var prop in fallback) {\n var value = fallback[prop];\n if (value != null) {\n if (result) result += linebreak;\n result += indentStr(prop + \":\" + space + toCssValue(value) + \";\", indent);\n }\n }\n }\n } else {\n // Object syntax {fallbacks: {prop: value}}\n for (var _prop in fallbacks) {\n var _value = fallbacks[_prop];\n if (_value != null) {\n if (result) result += linebreak;\n result += indentStr(_prop + \":\" + space + toCssValue(_value) + \";\", indent);\n }\n }\n }\n }\n for (var _prop2 in style) {\n var _value2 = style[_prop2];\n if (_value2 != null && _prop2 !== 'fallbacks') {\n if (result) result += linebreak;\n result += indentStr(_prop2 + \":\" + space + toCssValue(_value2) + \";\", indent);\n }\n } // Allow empty style in this case, because properties will be added dynamically.\n\n if (!result && !options.allowEmpty) return result; // When rule is being stringified before selector was defined.\n\n if (!selector) return result;\n indent--;\n if (result) result = \"\" + linebreak + result + linebreak;\n return indentStr(\"\" + selector + space + \"{\" + result, indent) + indentStr('}', indent);\n}\nvar escapeRegex = /([[\\].#*$><+~=|^:(),\"'`\\s])/g;\nvar nativeEscape = typeof CSS !== 'undefined' && CSS.escape;\nvar escape = function (str) {\n return nativeEscape ? nativeEscape(str) : str.replace(escapeRegex, '\\\\$1');\n};\nvar BaseStyleRule = /*#__PURE__*/\nfunction () {\n function BaseStyleRule(key, style, options) {\n this.type = 'style';\n this.isProcessed = false;\n var sheet = options.sheet,\n Renderer = options.Renderer;\n this.key = key;\n this.options = options;\n this.style = style;\n if (sheet) this.renderer = sheet.renderer;else if (Renderer) this.renderer = new Renderer();\n }\n /**\n * Get or set a style property.\n */\n\n var _proto = BaseStyleRule.prototype;\n _proto.prop = function prop(name, value, options) {\n // It's a getter.\n if (value === undefined) return this.style[name]; // Don't do anything if the value has not changed.\n\n var force = options ? options.force : false;\n if (!force && this.style[name] === value) return this;\n var newValue = value;\n if (!options || options.process !== false) {\n newValue = this.options.jss.plugins.onChangeValue(value, name, this);\n }\n var isEmpty = newValue == null || newValue === false;\n var isDefined = (name in this.style); // Value is empty and wasn't defined before.\n\n if (isEmpty && !isDefined && !force) return this; // We are going to remove this value.\n\n var remove = isEmpty && isDefined;\n if (remove) delete this.style[name];else this.style[name] = newValue; // Renderable is defined if StyleSheet option `link` is true.\n\n if (this.renderable && this.renderer) {\n if (remove) this.renderer.removeProperty(this.renderable, name);else this.renderer.setProperty(this.renderable, name, newValue);\n return this;\n }\n var sheet = this.options.sheet;\n if (sheet && sheet.attached) {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Rule is not linked. Missing sheet option \"link: true\".') : void 0;\n }\n return this;\n };\n return BaseStyleRule;\n}();\nvar StyleRule = /*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(StyleRule, _BaseStyleRule);\n function StyleRule(key, style, options) {\n var _this;\n _this = _BaseStyleRule.call(this, key, style, options) || this;\n var selector = options.selector,\n scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n if (selector) {\n _this.selectorText = selector;\n } else if (scoped !== false) {\n _this.id = generateId(_assertThisInitialized(_assertThisInitialized(_this)), sheet);\n _this.selectorText = \".\" + escape(_this.id);\n }\n return _this;\n }\n /**\n * Set selector string.\n * Attention: use this with caution. Most browsers didn't implement\n * selectorText setter, so this may result in rerendering of entire Style Sheet.\n */\n\n var _proto2 = StyleRule.prototype;\n\n /**\n * Apply rule to an element inline.\n */\n _proto2.applyTo = function applyTo(renderable) {\n var renderer = this.renderer;\n if (renderer) {\n var json = this.toJSON();\n for (var prop in json) {\n renderer.setProperty(renderable, prop, json[prop]);\n }\n }\n return this;\n }\n /**\n * Returns JSON representation of the rule.\n * Fallbacks are not supported.\n * Useful for inline styles.\n */;\n _proto2.toJSON = function toJSON() {\n var json = {};\n for (var prop in this.style) {\n var value = this.style[prop];\n if (typeof value !== 'object') json[prop] = value;else if (Array.isArray(value)) json[prop] = toCssValue(value);\n }\n return json;\n }\n /**\n * Generates a CSS string.\n */;\n _proto2.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.selectorText, this.style, opts);\n };\n _createClass(StyleRule, [{\n key: \"selector\",\n set: function set(selector) {\n if (selector === this.selectorText) return;\n this.selectorText = selector;\n var renderer = this.renderer,\n renderable = this.renderable;\n if (!renderable || !renderer) return;\n var hasChanged = renderer.setSelector(renderable, selector); // If selector setter is not implemented, rerender the rule.\n\n if (!hasChanged) {\n renderer.replaceRule(renderable, this);\n }\n }\n /**\n * Get selector string.\n */,\n\n get: function get() {\n return this.selectorText;\n }\n }]);\n return StyleRule;\n}(BaseStyleRule);\nvar pluginStyleRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (key[0] === '@' || options.parent && options.parent.type === 'keyframes') {\n return null;\n }\n return new StyleRule(key, style, options);\n }\n};\nvar defaultToStringOptions = {\n indent: 1,\n children: true\n};\nvar atRegExp = /@([\\w-]+)/;\n/**\n * Conditional rule for @media, @supports\n */\n\nvar ConditionalRule = /*#__PURE__*/\nfunction () {\n function ConditionalRule(key, styles, options) {\n this.type = 'conditional';\n this.isProcessed = false;\n this.key = key;\n var atMatch = key.match(atRegExp);\n this.at = atMatch ? atMatch[1] : 'unknown'; // Key might contain a unique suffix in case the `name` passed by user was duplicate.\n\n this.query = options.name || \"@\" + this.at;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n var _proto = ConditionalRule.prototype;\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Get index of a rule.\n */;\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Create and register rule, run plugins.\n */;\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */;\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Generates a CSS string.\n */;\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions;\n }\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n if (options.indent == null) options.indent = defaultToStringOptions.indent;\n if (options.children == null) options.children = defaultToStringOptions.children;\n if (options.children === false) {\n return this.query + \" {}\";\n }\n var children = this.rules.toString(options);\n return children ? this.query + \" {\" + linebreak + children + linebreak + \"}\" : '';\n };\n return ConditionalRule;\n}();\nvar keyRegExp = /@container|@media|@supports\\s+/;\nvar pluginConditionalRule = {\n onCreateRule: function onCreateRule(key, styles, options) {\n return keyRegExp.test(key) ? new ConditionalRule(key, styles, options) : null;\n }\n};\nvar defaultToStringOptions$1 = {\n indent: 1,\n children: true\n};\nvar nameRegExp = /@keyframes\\s+([\\w-]+)/;\n/**\n * Rule for @keyframes\n */\n\nvar KeyframesRule = /*#__PURE__*/\nfunction () {\n function KeyframesRule(key, frames, options) {\n this.type = 'keyframes';\n this.at = '@keyframes';\n this.isProcessed = false;\n var nameMatch = key.match(nameRegExp);\n if (nameMatch && nameMatch[1]) {\n this.name = nameMatch[1];\n } else {\n this.name = 'noname';\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Bad keyframes name \" + key) : void 0;\n }\n this.key = this.type + \"-\" + this.name;\n this.options = options;\n var scoped = options.scoped,\n sheet = options.sheet,\n generateId = options.generateId;\n this.id = scoped === false ? this.name : escape(generateId(this, sheet));\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n for (var name in frames) {\n this.rules.add(name, frames[name], _extends({}, options, {\n parent: this\n }));\n }\n this.rules.process();\n }\n /**\n * Generates a CSS string.\n */\n\n var _proto = KeyframesRule.prototype;\n _proto.toString = function toString(options) {\n if (options === void 0) {\n options = defaultToStringOptions$1;\n }\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n if (options.indent == null) options.indent = defaultToStringOptions$1.indent;\n if (options.children == null) options.children = defaultToStringOptions$1.children;\n if (options.children === false) {\n return this.at + \" \" + this.id + \" {}\";\n }\n var children = this.rules.toString(options);\n if (children) children = \"\" + linebreak + children + linebreak;\n return this.at + \" \" + this.id + \" {\" + children + \"}\";\n };\n return KeyframesRule;\n}();\nvar keyRegExp$1 = /@keyframes\\s+/;\nvar refRegExp = /\\$([\\w-]+)/g;\nvar findReferencedKeyframe = function findReferencedKeyframe(val, keyframes) {\n if (typeof val === 'string') {\n return val.replace(refRegExp, function (match, name) {\n if (name in keyframes) {\n return keyframes[name];\n }\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced keyframes rule \\\"\" + name + \"\\\" is not defined.\") : void 0;\n return match;\n });\n }\n return val;\n};\n/**\n * Replace the reference for a animation name.\n */\n\nvar replaceRef = function replaceRef(style, prop, keyframes) {\n var value = style[prop];\n var refKeyframe = findReferencedKeyframe(value, keyframes);\n if (refKeyframe !== value) {\n style[prop] = refKeyframe;\n }\n};\nvar pluginKeyframesRule = {\n onCreateRule: function onCreateRule(key, frames, options) {\n return typeof key === 'string' && keyRegExp$1.test(key) ? new KeyframesRule(key, frames, options) : null;\n },\n // Animation name ref replacer.\n onProcessStyle: function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style' || !sheet) return style;\n if ('animation-name' in style) replaceRef(style, 'animation-name', sheet.keyframes);\n if ('animation' in style) replaceRef(style, 'animation', sheet.keyframes);\n return style;\n },\n onChangeValue: function onChangeValue(val, prop, rule) {\n var sheet = rule.options.sheet;\n if (!sheet) {\n return val;\n }\n switch (prop) {\n case 'animation':\n return findReferencedKeyframe(val, sheet.keyframes);\n case 'animation-name':\n return findReferencedKeyframe(val, sheet.keyframes);\n default:\n return val;\n }\n }\n};\nvar KeyframeRule = /*#__PURE__*/\nfunction (_BaseStyleRule) {\n _inheritsLoose(KeyframeRule, _BaseStyleRule);\n function KeyframeRule() {\n return _BaseStyleRule.apply(this, arguments) || this;\n }\n var _proto = KeyframeRule.prototype;\n\n /**\n * Generates a CSS string.\n */\n _proto.toString = function toString(options) {\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var opts = link ? _extends({}, options, {\n allowEmpty: true\n }) : options;\n return toCss(this.key, this.style, opts);\n };\n return KeyframeRule;\n}(BaseStyleRule);\nvar pluginKeyframeRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n if (options.parent && options.parent.type === 'keyframes') {\n return new KeyframeRule(key, style, options);\n }\n return null;\n }\n};\nvar FontFaceRule = /*#__PURE__*/\nfunction () {\n function FontFaceRule(key, style, options) {\n this.type = 'font-face';\n this.at = '@font-face';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n var _proto = FontFaceRule.prototype;\n _proto.toString = function toString(options) {\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n if (Array.isArray(this.style)) {\n var str = '';\n for (var index = 0; index < this.style.length; index++) {\n str += toCss(this.at, this.style[index]);\n if (this.style[index + 1]) str += linebreak;\n }\n return str;\n }\n return toCss(this.at, this.style, options);\n };\n return FontFaceRule;\n}();\nvar keyRegExp$2 = /@font-face/;\nvar pluginFontFaceRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return keyRegExp$2.test(key) ? new FontFaceRule(key, style, options) : null;\n }\n};\nvar ViewportRule = /*#__PURE__*/\nfunction () {\n function ViewportRule(key, style, options) {\n this.type = 'viewport';\n this.at = '@viewport';\n this.isProcessed = false;\n this.key = key;\n this.style = style;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n\n var _proto = ViewportRule.prototype;\n _proto.toString = function toString(options) {\n return toCss(this.key, this.style, options);\n };\n return ViewportRule;\n}();\nvar pluginViewportRule = {\n onCreateRule: function onCreateRule(key, style, options) {\n return key === '@viewport' || key === '@-ms-viewport' ? new ViewportRule(key, style, options) : null;\n }\n};\nvar SimpleRule = /*#__PURE__*/\nfunction () {\n function SimpleRule(key, value, options) {\n this.type = 'simple';\n this.isProcessed = false;\n this.key = key;\n this.value = value;\n this.options = options;\n }\n /**\n * Generates a CSS string.\n */\n // eslint-disable-next-line no-unused-vars\n\n var _proto = SimpleRule.prototype;\n _proto.toString = function toString(options) {\n if (Array.isArray(this.value)) {\n var str = '';\n for (var index = 0; index < this.value.length; index++) {\n str += this.key + \" \" + this.value[index] + \";\";\n if (this.value[index + 1]) str += '\\n';\n }\n return str;\n }\n return this.key + \" \" + this.value + \";\";\n };\n return SimpleRule;\n}();\nvar keysMap = {\n '@charset': true,\n '@import': true,\n '@namespace': true\n};\nvar pluginSimpleRule = {\n onCreateRule: function onCreateRule(key, value, options) {\n return key in keysMap ? new SimpleRule(key, value, options) : null;\n }\n};\nvar plugins = [pluginStyleRule, pluginConditionalRule, pluginKeyframesRule, pluginKeyframeRule, pluginFontFaceRule, pluginViewportRule, pluginSimpleRule];\nvar defaultUpdateOptions = {\n process: true\n};\nvar forceUpdateOptions = {\n force: true,\n process: true\n /**\n * Contains rules objects and allows adding/removing etc.\n * Is used for e.g. by `StyleSheet` or `ConditionalRule`.\n */\n};\nvar RuleList = /*#__PURE__*/\nfunction () {\n // Rules registry for access by .get() method.\n // It contains the same rule registered by name and by selector.\n // Original styles object.\n // Used to ensure correct rules order.\n function RuleList(options) {\n this.map = {};\n this.raw = {};\n this.index = [];\n this.counter = 0;\n this.options = options;\n this.classes = options.classes;\n this.keyframes = options.keyframes;\n }\n /**\n * Create and register rule.\n *\n * Will not render after Style Sheet was rendered the first time.\n */\n\n var _proto = RuleList.prototype;\n _proto.add = function add(name, decl, ruleOptions) {\n var _this$options = this.options,\n parent = _this$options.parent,\n sheet = _this$options.sheet,\n jss = _this$options.jss,\n Renderer = _this$options.Renderer,\n generateId = _this$options.generateId,\n scoped = _this$options.scoped;\n var options = _extends({\n classes: this.classes,\n parent: parent,\n sheet: sheet,\n jss: jss,\n Renderer: Renderer,\n generateId: generateId,\n scoped: scoped,\n name: name,\n keyframes: this.keyframes,\n selector: undefined\n }, ruleOptions); // When user uses .createStyleSheet(), duplicate names are not possible, but\n // `sheet.addRule()` opens the door for any duplicate rule name. When this happens\n // we need to make the key unique within this RuleList instance scope.\n\n var key = name;\n if (name in this.raw) {\n key = name + \"-d\" + this.counter++;\n } // We need to save the original decl before creating the rule\n // because cache plugin needs to use it as a key to return a cached rule.\n\n this.raw[key] = decl;\n if (key in this.classes) {\n // E.g. rules inside of @media container\n options.selector = \".\" + escape(this.classes[key]);\n }\n var rule = createRule(key, decl, options);\n if (!rule) return null;\n this.register(rule);\n var index = options.index === undefined ? this.index.length : options.index;\n this.index.splice(index, 0, rule);\n return rule;\n }\n /**\n * Replace rule.\n * Create a new rule and remove old one instead of overwriting\n * because we want to invoke onCreateRule hook to make plugins work.\n */;\n _proto.replace = function replace(name, decl, ruleOptions) {\n var oldRule = this.get(name);\n var oldIndex = this.index.indexOf(oldRule);\n if (oldRule) {\n this.remove(oldRule);\n }\n var options = ruleOptions;\n if (oldIndex !== -1) options = _extends({}, ruleOptions, {\n index: oldIndex\n });\n return this.add(name, decl, options);\n }\n /**\n * Get a rule by name or selector.\n */;\n _proto.get = function get(nameOrSelector) {\n return this.map[nameOrSelector];\n }\n /**\n * Delete a rule.\n */;\n _proto.remove = function remove(rule) {\n this.unregister(rule);\n delete this.raw[rule.key];\n this.index.splice(this.index.indexOf(rule), 1);\n }\n /**\n * Get index of a rule.\n */;\n _proto.indexOf = function indexOf(rule) {\n return this.index.indexOf(rule);\n }\n /**\n * Run `onProcessRule()` plugins on every rule.\n */;\n _proto.process = function process() {\n var plugins = this.options.jss.plugins; // We need to clone array because if we modify the index somewhere else during a loop\n // we end up with very hard-to-track-down side effects.\n\n this.index.slice(0).forEach(plugins.onProcessRule, plugins);\n }\n /**\n * Register a rule in `.map`, `.classes` and `.keyframes` maps.\n */;\n _proto.register = function register(rule) {\n this.map[rule.key] = rule;\n if (rule instanceof StyleRule) {\n this.map[rule.selector] = rule;\n if (rule.id) this.classes[rule.key] = rule.id;\n } else if (rule instanceof KeyframesRule && this.keyframes) {\n this.keyframes[rule.name] = rule.id;\n }\n }\n /**\n * Unregister a rule.\n */;\n _proto.unregister = function unregister(rule) {\n delete this.map[rule.key];\n if (rule instanceof StyleRule) {\n delete this.map[rule.selector];\n delete this.classes[rule.key];\n } else if (rule instanceof KeyframesRule) {\n delete this.keyframes[rule.name];\n }\n }\n /**\n * Update the function values with a new data.\n */;\n _proto.update = function update() {\n var name;\n var data;\n var options;\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'string') {\n name = arguments.length <= 0 ? undefined : arguments[0];\n data = arguments.length <= 1 ? undefined : arguments[1];\n options = arguments.length <= 2 ? undefined : arguments[2];\n } else {\n data = arguments.length <= 0 ? undefined : arguments[0];\n options = arguments.length <= 1 ? undefined : arguments[1];\n name = null;\n }\n if (name) {\n this.updateOne(this.get(name), data, options);\n } else {\n for (var index = 0; index < this.index.length; index++) {\n this.updateOne(this.index[index], data, options);\n }\n }\n }\n /**\n * Execute plugins, update rule props.\n */;\n _proto.updateOne = function updateOne(rule, data, options) {\n if (options === void 0) {\n options = defaultUpdateOptions;\n }\n var _this$options2 = this.options,\n plugins = _this$options2.jss.plugins,\n sheet = _this$options2.sheet; // It is a rules container like for e.g. ConditionalRule.\n\n if (rule.rules instanceof RuleList) {\n rule.rules.update(data, options);\n return;\n }\n var style = rule.style;\n plugins.onUpdate(data, rule, sheet, options); // We rely on a new `style` ref in case it was mutated during onUpdate hook.\n\n if (options.process && style && style !== rule.style) {\n // We need to run the plugins in case new `style` relies on syntax plugins.\n plugins.onProcessStyle(rule.style, rule, sheet); // Update and add props.\n\n for (var prop in rule.style) {\n var nextValue = rule.style[prop];\n var prevValue = style[prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (nextValue !== prevValue) {\n rule.prop(prop, nextValue, forceUpdateOptions);\n }\n } // Remove props.\n\n for (var _prop in style) {\n var _nextValue = rule.style[_prop];\n var _prevValue = style[_prop]; // We need to use `force: true` because `rule.style` has been updated during onUpdate hook, so `rule.prop()` will not update the CSSOM rule.\n // We do this comparison to avoid unneeded `rule.prop()` calls, since we have the old `style` object here.\n\n if (_nextValue == null && _nextValue !== _prevValue) {\n rule.prop(_prop, null, forceUpdateOptions);\n }\n }\n }\n }\n /**\n * Convert rules to a CSS string.\n */;\n _proto.toString = function toString(options) {\n var str = '';\n var sheet = this.options.sheet;\n var link = sheet ? sheet.options.link : false;\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n for (var index = 0; index < this.index.length; index++) {\n var rule = this.index[index];\n var css = rule.toString(options); // No need to render an empty rule.\n\n if (!css && !link) continue;\n if (str) str += linebreak;\n str += css;\n }\n return str;\n };\n return RuleList;\n}();\nvar StyleSheet = /*#__PURE__*/\nfunction () {\n function StyleSheet(styles, options) {\n this.attached = false;\n this.deployed = false;\n this.classes = {};\n this.keyframes = {};\n this.options = _extends({}, options, {\n sheet: this,\n parent: this,\n classes: this.classes,\n keyframes: this.keyframes\n });\n if (options.Renderer) {\n this.renderer = new options.Renderer(this);\n }\n this.rules = new RuleList(this.options);\n for (var name in styles) {\n this.rules.add(name, styles[name]);\n }\n this.rules.process();\n }\n /**\n * Attach renderable to the render tree.\n */\n\n var _proto = StyleSheet.prototype;\n _proto.attach = function attach() {\n if (this.attached) return this;\n if (this.renderer) this.renderer.attach();\n this.attached = true; // Order is important, because we can't use insertRule API if style element is not attached.\n\n if (!this.deployed) this.deploy();\n return this;\n }\n /**\n * Remove renderable from render tree.\n */;\n _proto.detach = function detach() {\n if (!this.attached) return this;\n if (this.renderer) this.renderer.detach();\n this.attached = false;\n return this;\n }\n /**\n * Add a rule to the current stylesheet.\n * Will insert a rule also after the stylesheet has been rendered first time.\n */;\n _proto.addRule = function addRule(name, decl, options) {\n var queue = this.queue; // Plugins can create rules.\n // In order to preserve the right order, we need to queue all `.addRule` calls,\n // which happen after the first `rules.add()` call.\n\n if (this.attached && !queue) this.queue = [];\n var rule = this.rules.add(name, decl, options);\n if (!rule) return null;\n this.options.jss.plugins.onProcessRule(rule);\n if (this.attached) {\n if (!this.deployed) return rule; // Don't insert rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (queue) queue.push(rule);else {\n this.insertRule(rule);\n if (this.queue) {\n this.queue.forEach(this.insertRule, this);\n this.queue = undefined;\n }\n }\n return rule;\n } // We can't add rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n this.deployed = false;\n return rule;\n }\n /**\n * Replace a rule in the current stylesheet.\n */;\n _proto.replaceRule = function replaceRule(nameOrSelector, decl, options) {\n var oldRule = this.rules.get(nameOrSelector);\n if (!oldRule) return this.addRule(nameOrSelector, decl, options);\n var newRule = this.rules.replace(nameOrSelector, decl, options);\n if (newRule) {\n this.options.jss.plugins.onProcessRule(newRule);\n }\n if (this.attached) {\n if (!this.deployed) return newRule; // Don't replace / delete rule directly if there is no stringified version yet.\n // It will be inserted all together when .attach is called.\n\n if (this.renderer) {\n if (!newRule) {\n this.renderer.deleteRule(oldRule);\n } else if (oldRule.renderable) {\n this.renderer.replaceRule(oldRule.renderable, newRule);\n }\n }\n return newRule;\n } // We can't replace rules to a detached style node.\n // We will redeploy the sheet once user will attach it.\n\n this.deployed = false;\n return newRule;\n }\n /**\n * Insert rule into the StyleSheet\n */;\n _proto.insertRule = function insertRule(rule) {\n if (this.renderer) {\n this.renderer.insertRule(rule);\n }\n }\n /**\n * Create and add rules.\n * Will render also after Style Sheet was rendered the first time.\n */;\n _proto.addRules = function addRules(styles, options) {\n var added = [];\n for (var name in styles) {\n var rule = this.addRule(name, styles[name], options);\n if (rule) added.push(rule);\n }\n return added;\n }\n /**\n * Get a rule by name or selector.\n */;\n _proto.getRule = function getRule(nameOrSelector) {\n return this.rules.get(nameOrSelector);\n }\n /**\n * Delete a rule by name.\n * Returns `true`: if rule has been deleted from the DOM.\n */;\n _proto.deleteRule = function deleteRule(name) {\n var rule = typeof name === 'object' ? name : this.rules.get(name);\n if (!rule ||\n // Style sheet was created without link: true and attached, in this case we\n // won't be able to remove the CSS rule from the DOM.\n this.attached && !rule.renderable) {\n return false;\n }\n this.rules.remove(rule);\n if (this.attached && rule.renderable && this.renderer) {\n return this.renderer.deleteRule(rule.renderable);\n }\n return true;\n }\n /**\n * Get index of a rule.\n */;\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Deploy pure CSS string to a renderable.\n */;\n _proto.deploy = function deploy() {\n if (this.renderer) this.renderer.deploy();\n this.deployed = true;\n return this;\n }\n /**\n * Update the function values with a new data.\n */;\n _proto.update = function update() {\n var _this$rules;\n (_this$rules = this.rules).update.apply(_this$rules, arguments);\n return this;\n }\n /**\n * Updates a single rule.\n */;\n _proto.updateOne = function updateOne(rule, data, options) {\n this.rules.updateOne(rule, data, options);\n return this;\n }\n /**\n * Convert rules to a CSS string.\n */;\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n return StyleSheet;\n}();\nvar PluginsRegistry = /*#__PURE__*/\nfunction () {\n function PluginsRegistry() {\n this.plugins = {\n internal: [],\n external: []\n };\n this.registry = {};\n }\n var _proto = PluginsRegistry.prototype;\n\n /**\n * Call `onCreateRule` hooks and return an object if returned by a hook.\n */\n _proto.onCreateRule = function onCreateRule(name, decl, options) {\n for (var i = 0; i < this.registry.onCreateRule.length; i++) {\n var rule = this.registry.onCreateRule[i](name, decl, options);\n if (rule) return rule;\n }\n return null;\n }\n /**\n * Call `onProcessRule` hooks.\n */;\n _proto.onProcessRule = function onProcessRule(rule) {\n if (rule.isProcessed) return;\n var sheet = rule.options.sheet;\n for (var i = 0; i < this.registry.onProcessRule.length; i++) {\n this.registry.onProcessRule[i](rule, sheet);\n }\n if (rule.style) this.onProcessStyle(rule.style, rule, sheet);\n rule.isProcessed = true;\n }\n /**\n * Call `onProcessStyle` hooks.\n */;\n _proto.onProcessStyle = function onProcessStyle(style, rule, sheet) {\n for (var i = 0; i < this.registry.onProcessStyle.length; i++) {\n rule.style = this.registry.onProcessStyle[i](rule.style, rule, sheet);\n }\n }\n /**\n * Call `onProcessSheet` hooks.\n */;\n _proto.onProcessSheet = function onProcessSheet(sheet) {\n for (var i = 0; i < this.registry.onProcessSheet.length; i++) {\n this.registry.onProcessSheet[i](sheet);\n }\n }\n /**\n * Call `onUpdate` hooks.\n */;\n _proto.onUpdate = function onUpdate(data, rule, sheet, options) {\n for (var i = 0; i < this.registry.onUpdate.length; i++) {\n this.registry.onUpdate[i](data, rule, sheet, options);\n }\n }\n /**\n * Call `onChangeValue` hooks.\n */;\n _proto.onChangeValue = function onChangeValue(value, prop, rule) {\n var processedValue = value;\n for (var i = 0; i < this.registry.onChangeValue.length; i++) {\n processedValue = this.registry.onChangeValue[i](processedValue, prop, rule);\n }\n return processedValue;\n }\n /**\n * Register a plugin.\n */;\n _proto.use = function use(newPlugin, options) {\n if (options === void 0) {\n options = {\n queue: 'external'\n };\n }\n var plugins = this.plugins[options.queue]; // Avoids applying same plugin twice, at least based on ref.\n\n if (plugins.indexOf(newPlugin) !== -1) {\n return;\n }\n plugins.push(newPlugin);\n this.registry = [].concat(this.plugins.external, this.plugins.internal).reduce(function (registry, plugin) {\n for (var name in plugin) {\n if (name in registry) {\n registry[name].push(plugin[name]);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Unknown hook \\\"\" + name + \"\\\".\") : void 0;\n }\n }\n return registry;\n }, {\n onCreateRule: [],\n onProcessRule: [],\n onProcessStyle: [],\n onProcessSheet: [],\n onChangeValue: [],\n onUpdate: []\n });\n };\n return PluginsRegistry;\n}();\n\n/**\n * Sheets registry to access all instances in one place.\n */\n\nvar SheetsRegistry = /*#__PURE__*/\nfunction () {\n function SheetsRegistry() {\n this.registry = [];\n }\n var _proto = SheetsRegistry.prototype;\n\n /**\n * Register a Style Sheet.\n */\n _proto.add = function add(sheet) {\n var registry = this.registry;\n var index = sheet.options.index;\n if (registry.indexOf(sheet) !== -1) return;\n if (registry.length === 0 || index >= this.index) {\n registry.push(sheet);\n return;\n } // Find a position.\n\n for (var i = 0; i < registry.length; i++) {\n if (registry[i].options.index > index) {\n registry.splice(i, 0, sheet);\n return;\n }\n }\n }\n /**\n * Reset the registry.\n */;\n _proto.reset = function reset() {\n this.registry = [];\n }\n /**\n * Remove a Style Sheet.\n */;\n _proto.remove = function remove(sheet) {\n var index = this.registry.indexOf(sheet);\n this.registry.splice(index, 1);\n }\n /**\n * Convert all attached sheets to a CSS string.\n */;\n _proto.toString = function toString(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n attached = _ref.attached,\n options = _objectWithoutPropertiesLoose(_ref, [\"attached\"]);\n var _getWhitespaceSymbols = getWhitespaceSymbols(options),\n linebreak = _getWhitespaceSymbols.linebreak;\n var css = '';\n for (var i = 0; i < this.registry.length; i++) {\n var sheet = this.registry[i];\n if (attached != null && sheet.attached !== attached) {\n continue;\n }\n if (css) css += linebreak;\n css += sheet.toString(options);\n }\n return css;\n };\n _createClass(SheetsRegistry, [{\n key: \"index\",\n /**\n * Current highest index number.\n */\n get: function get() {\n return this.registry.length === 0 ? 0 : this.registry[this.registry.length - 1].options.index;\n }\n }]);\n return SheetsRegistry;\n}();\n\n/**\n * This is a global sheets registry. Only DomRenderer will add sheets to it.\n * On the server one should use an own SheetsRegistry instance and add the\n * sheets to it, because you need to make sure to create a new registry for\n * each request in order to not leak sheets across requests.\n */\n\nvar sheets = new SheetsRegistry();\n\n/* eslint-disable */\n\n/**\n * Now that `globalThis` is available on most platforms\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis#browser_compatibility)\n * we check for `globalThis` first. `globalThis` is necessary for jss\n * to run in Agoric's secure version of JavaScript (SES). Under SES,\n * `globalThis` exists, but `window`, `self`, and `Function('return\n * this')()` are all undefined for security reasons.\n *\n * https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n */\nvar globalThis$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' && window.Math === Math ? window : typeof self !== 'undefined' && self.Math === Math ? self : Function('return this')();\nvar ns = '2f1acc6c3a606b082e5eef5e54414ffb';\nif (globalThis$1[ns] == null) globalThis$1[ns] = 0; // Bundle may contain multiple JSS versions at the same time. In order to identify\n// the current version with just one short number and use it for classes generation\n// we use a counter. Also it is more accurate, because user can manually reevaluate\n// the module.\n\nvar moduleId = globalThis$1[ns]++;\nvar maxRules = 1e10;\n/**\n * Returns a function which generates unique class names based on counters.\n * When new generator function is created, rule counter is reseted.\n * We need to reset the rule counter for SSR for each request.\n */\n\nvar createGenerateId = function createGenerateId(options) {\n if (options === void 0) {\n options = {};\n }\n var ruleCounter = 0;\n var generateId = function generateId(rule, sheet) {\n ruleCounter += 1;\n if (ruleCounter > maxRules) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] You might have a memory leak. Rule counter is at \" + ruleCounter + \".\") : void 0;\n }\n var jssId = '';\n var prefix = '';\n if (sheet) {\n if (sheet.options.classNamePrefix) {\n prefix = sheet.options.classNamePrefix;\n }\n if (sheet.options.jss.id != null) {\n jssId = String(sheet.options.jss.id);\n }\n }\n if (options.minify) {\n // Using \"c\" because a number can't be the first char in a class name.\n return \"\" + (prefix || 'c') + moduleId + jssId + ruleCounter;\n }\n return prefix + rule.key + \"-\" + moduleId + (jssId ? \"-\" + jssId : '') + \"-\" + ruleCounter;\n };\n return generateId;\n};\n\n/**\n * Cache the value from the first time a function is called.\n */\n\nvar memoize = function memoize(fn) {\n var value;\n return function () {\n if (!value) value = fn();\n return value;\n };\n};\n/**\n * Get a style property value.\n */\n\nvar getPropertyValue = function getPropertyValue(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n return cssRule.attributeStyleMap.get(prop);\n }\n return cssRule.style.getPropertyValue(prop);\n } catch (err) {\n // IE may throw if property is unknown.\n return '';\n }\n};\n/**\n * Set a style property.\n */\n\nvar setProperty = function setProperty(cssRule, prop, value) {\n try {\n var cssValue = value;\n if (Array.isArray(value)) {\n cssValue = toCssValue(value);\n } // Support CSSTOM.\n\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.set(prop, cssValue);\n } else {\n var indexOfImportantFlag = cssValue ? cssValue.indexOf('!important') : -1;\n var cssValueWithoutImportantFlag = indexOfImportantFlag > -1 ? cssValue.substr(0, indexOfImportantFlag - 1) : cssValue;\n cssRule.style.setProperty(prop, cssValueWithoutImportantFlag, indexOfImportantFlag > -1 ? 'important' : '');\n }\n } catch (err) {\n // IE may throw if property is unknown.\n return false;\n }\n return true;\n};\n/**\n * Remove a style property.\n */\n\nvar removeProperty = function removeProperty(cssRule, prop) {\n try {\n // Support CSSTOM.\n if (cssRule.attributeStyleMap) {\n cssRule.attributeStyleMap.delete(prop);\n } else {\n cssRule.style.removeProperty(prop);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] DOMException \\\"\" + err.message + \"\\\" was thrown. Tried to remove property \\\"\" + prop + \"\\\".\") : void 0;\n }\n};\n/**\n * Set the selector.\n */\n\nvar setSelector = function setSelector(cssRule, selectorText) {\n cssRule.selectorText = selectorText; // Return false if setter was not successful.\n // Currently works in chrome only.\n\n return cssRule.selectorText === selectorText;\n};\n/**\n * Gets the `head` element upon the first call and caches it.\n * We assume it can't be null.\n */\n\nvar getHead = memoize(function () {\n return document.querySelector('head');\n});\n/**\n * Find attached sheet with an index higher than the passed one.\n */\n\nfunction findHigherSheet(registry, options) {\n for (var i = 0; i < registry.length; i++) {\n var sheet = registry[i];\n if (sheet.attached && sheet.options.index > options.index && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n return null;\n}\n/**\n * Find attached sheet with the highest index.\n */\n\nfunction findHighestSheet(registry, options) {\n for (var i = registry.length - 1; i >= 0; i--) {\n var sheet = registry[i];\n if (sheet.attached && sheet.options.insertionPoint === options.insertionPoint) {\n return sheet;\n }\n }\n return null;\n}\n/**\n * Find a comment with \"jss\" inside.\n */\n\nfunction findCommentNode(text) {\n var head = getHead();\n for (var i = 0; i < head.childNodes.length; i++) {\n var node = head.childNodes[i];\n if (node.nodeType === 8 && node.nodeValue.trim() === text) {\n return node;\n }\n }\n return null;\n}\n/**\n * Find a node before which we can insert the sheet.\n */\n\nfunction findPrevNode(options) {\n var registry = sheets.registry;\n if (registry.length > 0) {\n // Try to insert before the next higher sheet.\n var sheet = findHigherSheet(registry, options);\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element\n };\n } // Otherwise insert after the last attached.\n\n sheet = findHighestSheet(registry, options);\n if (sheet && sheet.renderer) {\n return {\n parent: sheet.renderer.element.parentNode,\n node: sheet.renderer.element.nextSibling\n };\n }\n } // Try to find a comment placeholder if registry is empty.\n\n var insertionPoint = options.insertionPoint;\n if (insertionPoint && typeof insertionPoint === 'string') {\n var comment = findCommentNode(insertionPoint);\n if (comment) {\n return {\n parent: comment.parentNode,\n node: comment.nextSibling\n };\n } // If user specifies an insertion point and it can't be found in the document -\n // bad specificity issues may appear.\n\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Insertion point \\\"\" + insertionPoint + \"\\\" not found.\") : void 0;\n }\n return false;\n}\n/**\n * Insert style element into the DOM.\n */\n\nfunction insertStyle(style, options) {\n var insertionPoint = options.insertionPoint;\n var nextNode = findPrevNode(options);\n if (nextNode !== false && nextNode.parent) {\n nextNode.parent.insertBefore(style, nextNode.node);\n return;\n } // Works with iframes and any node types.\n\n if (insertionPoint && typeof insertionPoint.nodeType === 'number') {\n var insertionPointElement = insertionPoint;\n var parentNode = insertionPointElement.parentNode;\n if (parentNode) parentNode.insertBefore(style, insertionPointElement.nextSibling);else process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Insertion point is not in the DOM.') : void 0;\n return;\n }\n getHead().appendChild(style);\n}\n/**\n * Read jss nonce setting from the page if the user has set it.\n */\n\nvar getNonce = memoize(function () {\n var node = document.querySelector('meta[property=\"csp-nonce\"]');\n return node ? node.getAttribute('content') : null;\n});\nvar _insertRule = function insertRule(container, rule, index) {\n try {\n if ('insertRule' in container) {\n container.insertRule(rule, index);\n } // Keyframes rule.\n else if ('appendRule' in container) {\n container.appendRule(rule);\n }\n } catch (err) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] \" + err.message) : void 0;\n return false;\n }\n return container.cssRules[index];\n};\nvar getValidRuleInsertionIndex = function getValidRuleInsertionIndex(container, index) {\n var maxIndex = container.cssRules.length; // In case previous insertion fails, passed index might be wrong\n\n if (index === undefined || index > maxIndex) {\n // eslint-disable-next-line no-param-reassign\n return maxIndex;\n }\n return index;\n};\nvar createStyle = function createStyle() {\n var el = document.createElement('style'); // Without it, IE will have a broken source order specificity if we\n // insert rules after we insert the style tag.\n // It seems to kick-off the source order specificity algorithm.\n\n el.textContent = '\\n';\n return el;\n};\nvar DomRenderer = /*#__PURE__*/\nfunction () {\n // Will be empty if link: true option is not set, because\n // it is only for use together with insertRule API.\n function DomRenderer(sheet) {\n this.getPropertyValue = getPropertyValue;\n this.setProperty = setProperty;\n this.removeProperty = removeProperty;\n this.setSelector = setSelector;\n this.hasInsertedRules = false;\n this.cssRules = [];\n // There is no sheet when the renderer is used from a standalone StyleRule.\n if (sheet) sheets.add(sheet);\n this.sheet = sheet;\n var _ref = this.sheet ? this.sheet.options : {},\n media = _ref.media,\n meta = _ref.meta,\n element = _ref.element;\n this.element = element || createStyle();\n this.element.setAttribute('data-jss', '');\n if (media) this.element.setAttribute('media', media);\n if (meta) this.element.setAttribute('data-meta', meta);\n var nonce = getNonce();\n if (nonce) this.element.setAttribute('nonce', nonce);\n }\n /**\n * Insert style element into render tree.\n */\n\n var _proto = DomRenderer.prototype;\n _proto.attach = function attach() {\n // In the case the element node is external and it is already in the DOM.\n if (this.element.parentNode || !this.sheet) return;\n insertStyle(this.element, this.sheet.options); // When rules are inserted using `insertRule` API, after `sheet.detach().attach()`\n // most browsers create a new CSSStyleSheet, except of all IEs.\n\n var deployed = Boolean(this.sheet && this.sheet.deployed);\n if (this.hasInsertedRules && deployed) {\n this.hasInsertedRules = false;\n this.deploy();\n }\n }\n /**\n * Remove style element from render tree.\n */;\n _proto.detach = function detach() {\n if (!this.sheet) return;\n var parentNode = this.element.parentNode;\n if (parentNode) parentNode.removeChild(this.element); // In the most browsers, rules inserted using insertRule() API will be lost when style element is removed.\n // Though IE will keep them and we need a consistent behavior.\n\n if (this.sheet.options.link) {\n this.cssRules = [];\n this.element.textContent = '\\n';\n }\n }\n /**\n * Inject CSS string into element.\n */;\n _proto.deploy = function deploy() {\n var sheet = this.sheet;\n if (!sheet) return;\n if (sheet.options.link) {\n this.insertRules(sheet.rules);\n return;\n }\n this.element.textContent = \"\\n\" + sheet.toString() + \"\\n\";\n }\n /**\n * Insert RuleList into an element.\n */;\n _proto.insertRules = function insertRules(rules, nativeParent) {\n for (var i = 0; i < rules.index.length; i++) {\n this.insertRule(rules.index[i], i, nativeParent);\n }\n }\n /**\n * Insert a rule into element.\n */;\n _proto.insertRule = function insertRule(rule, index, nativeParent) {\n if (nativeParent === void 0) {\n nativeParent = this.element.sheet;\n }\n if (rule.rules) {\n var parent = rule;\n var latestNativeParent = nativeParent;\n if (rule.type === 'conditional' || rule.type === 'keyframes') {\n var _insertionIndex = getValidRuleInsertionIndex(nativeParent, index); // We need to render the container without children first.\n\n latestNativeParent = _insertRule(nativeParent, parent.toString({\n children: false\n }), _insertionIndex);\n if (latestNativeParent === false) {\n return false;\n }\n this.refCssRule(rule, _insertionIndex, latestNativeParent);\n }\n this.insertRules(parent.rules, latestNativeParent);\n return latestNativeParent;\n }\n var ruleStr = rule.toString();\n if (!ruleStr) return false;\n var insertionIndex = getValidRuleInsertionIndex(nativeParent, index);\n var nativeRule = _insertRule(nativeParent, ruleStr, insertionIndex);\n if (nativeRule === false) {\n return false;\n }\n this.hasInsertedRules = true;\n this.refCssRule(rule, insertionIndex, nativeRule);\n return nativeRule;\n };\n _proto.refCssRule = function refCssRule(rule, index, cssRule) {\n rule.renderable = cssRule; // We only want to reference the top level rules, deleteRule API doesn't support removing nested rules\n // like rules inside media queries or keyframes\n\n if (rule.options.parent instanceof StyleSheet) {\n this.cssRules.splice(index, 0, cssRule);\n }\n }\n /**\n * Delete a rule.\n */;\n _proto.deleteRule = function deleteRule(cssRule) {\n var sheet = this.element.sheet;\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return true;\n }\n /**\n * Get index of a CSS Rule.\n */;\n _proto.indexOf = function indexOf(cssRule) {\n return this.cssRules.indexOf(cssRule);\n }\n /**\n * Generate a new CSS rule and replace the existing one.\n */;\n _proto.replaceRule = function replaceRule(cssRule, rule) {\n var index = this.indexOf(cssRule);\n if (index === -1) return false;\n this.element.sheet.deleteRule(index);\n this.cssRules.splice(index, 1);\n return this.insertRule(rule, index);\n }\n /**\n * Get all rules elements.\n */;\n _proto.getRules = function getRules() {\n return this.element.sheet.cssRules;\n };\n return DomRenderer;\n}();\nvar instanceCounter = 0;\nvar Jss = /*#__PURE__*/\nfunction () {\n function Jss(options) {\n this.id = instanceCounter++;\n this.version = \"10.10.0\";\n this.plugins = new PluginsRegistry();\n this.options = {\n id: {\n minify: false\n },\n createGenerateId: createGenerateId,\n Renderer: isInBrowser ? DomRenderer : null,\n plugins: []\n };\n this.generateId = createGenerateId({\n minify: false\n });\n for (var i = 0; i < plugins.length; i++) {\n this.plugins.use(plugins[i], {\n queue: 'internal'\n });\n }\n this.setup(options);\n }\n /**\n * Prepares various options, applies plugins.\n * Should not be used twice on the same instance, because there is no plugins\n * deduplication logic.\n */\n\n var _proto = Jss.prototype;\n _proto.setup = function setup(options) {\n if (options === void 0) {\n options = {};\n }\n if (options.createGenerateId) {\n this.options.createGenerateId = options.createGenerateId;\n }\n if (options.id) {\n this.options.id = _extends({}, this.options.id, options.id);\n }\n if (options.createGenerateId || options.id) {\n this.generateId = this.options.createGenerateId(this.options.id);\n }\n if (options.insertionPoint != null) this.options.insertionPoint = options.insertionPoint;\n if ('Renderer' in options) {\n this.options.Renderer = options.Renderer;\n } // eslint-disable-next-line prefer-spread\n\n if (options.plugins) this.use.apply(this, options.plugins);\n return this;\n }\n /**\n * Create a Style Sheet.\n */;\n _proto.createStyleSheet = function createStyleSheet(styles, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n index = _options.index;\n if (typeof index !== 'number') {\n index = sheets.index === 0 ? 0 : sheets.index + 1;\n }\n var sheet = new StyleSheet(styles, _extends({}, options, {\n jss: this,\n generateId: options.generateId || this.generateId,\n insertionPoint: this.options.insertionPoint,\n Renderer: this.options.Renderer,\n index: index\n }));\n this.plugins.onProcessSheet(sheet);\n return sheet;\n }\n /**\n * Detach the Style Sheet and remove it from the registry.\n */;\n _proto.removeStyleSheet = function removeStyleSheet(sheet) {\n sheet.detach();\n sheets.remove(sheet);\n return this;\n }\n /**\n * Create a rule without a Style Sheet.\n * [Deprecated] will be removed in the next major version.\n */;\n _proto.createRule = function createRule$1(name, style, options) {\n if (style === void 0) {\n style = {};\n }\n if (options === void 0) {\n options = {};\n }\n\n // Enable rule without name for inline styles.\n if (typeof name === 'object') {\n return this.createRule(undefined, name, style);\n }\n var ruleOptions = _extends({}, options, {\n name: name,\n jss: this,\n Renderer: this.options.Renderer\n });\n if (!ruleOptions.generateId) ruleOptions.generateId = this.generateId;\n if (!ruleOptions.classes) ruleOptions.classes = {};\n if (!ruleOptions.keyframes) ruleOptions.keyframes = {};\n var rule = createRule(name, style, ruleOptions);\n if (rule) this.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Register plugin. Passed function will be invoked with a rule instance.\n */;\n _proto.use = function use() {\n var _this = this;\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n plugins.forEach(function (plugin) {\n _this.plugins.use(plugin);\n });\n return this;\n };\n return Jss;\n}();\nvar createJss = function createJss(options) {\n return new Jss(options);\n};\n\n/**\n * SheetsManager is like a WeakMap which is designed to count StyleSheet\n * instances and attach/detach automatically.\n * Used in react-jss.\n */\n\nvar SheetsManager = /*#__PURE__*/\nfunction () {\n function SheetsManager() {\n this.length = 0;\n this.sheets = new WeakMap();\n }\n var _proto = SheetsManager.prototype;\n _proto.get = function get(key) {\n var entry = this.sheets.get(key);\n return entry && entry.sheet;\n };\n _proto.add = function add(key, sheet) {\n if (this.sheets.has(key)) return;\n this.length++;\n this.sheets.set(key, {\n sheet: sheet,\n refs: 0\n });\n };\n _proto.manage = function manage(key) {\n var entry = this.sheets.get(key);\n if (entry) {\n if (entry.refs === 0) {\n entry.sheet.attach();\n }\n entry.refs++;\n return entry.sheet;\n }\n warning(false, \"[JSS] SheetsManager: can't find sheet to manage\");\n return undefined;\n };\n _proto.unmanage = function unmanage(key) {\n var entry = this.sheets.get(key);\n if (entry) {\n if (entry.refs > 0) {\n entry.refs--;\n if (entry.refs === 0) entry.sheet.detach();\n }\n } else {\n warning(false, \"SheetsManager: can't find sheet to unmanage\");\n }\n };\n _createClass(SheetsManager, [{\n key: \"size\",\n get: function get() {\n return this.length;\n }\n }]);\n return SheetsManager;\n}();\n\n/**\n* Export a constant indicating if this browser has CSSTOM support.\n* https://developers.google.com/web/updates/2018/03/cssom\n*/\nvar hasCSSTOMSupport = typeof CSS === 'object' && CSS != null && 'number' in CSS;\n\n/**\n * Extracts a styles object with only props that contain function values.\n */\nfunction getDynamicStyles(styles) {\n var to = null;\n for (var key in styles) {\n var value = styles[key];\n var type = typeof value;\n if (type === 'function') {\n if (!to) to = {};\n to[key] = value;\n } else if (type === 'object' && value !== null && !Array.isArray(value)) {\n var extracted = getDynamicStyles(value);\n if (extracted) {\n if (!to) to = {};\n to[key] = extracted;\n }\n }\n }\n return to;\n}\n\n/**\n * A better abstraction over CSS.\n *\n * @copyright Oleg Isonen (Slobodskoi) / Isonen 2014-present\n * @website https://github.com/cssinjs/jss\n * @license MIT\n */\nvar index = createJss();\nexport default index;\nexport { RuleList, SheetsManager, SheetsRegistry, createJss as create, createGenerateId, createRule, getDynamicStyles, hasCSSTOMSupport, sheets, toCssValue };","import warning from 'tiny-warning';\nimport { createRule } from 'jss';\nvar now = Date.now();\nvar fnValuesNs = \"fnValues\" + now;\nvar fnRuleNs = \"fnStyle\" + ++now;\nvar functionPlugin = function functionPlugin() {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (typeof decl !== 'function') return null;\n var rule = createRule(name, {}, options);\n rule[fnRuleNs] = decl;\n return rule;\n },\n onProcessStyle: function onProcessStyle(style, rule) {\n // We need to extract function values from the declaration, so that we can keep core unaware of them.\n // We need to do that only once.\n // We don't need to extract functions on each style update, since this can happen only once.\n // We don't support function values inside of function rules.\n if (fnValuesNs in rule || fnRuleNs in rule) return style;\n var fnValues = {};\n for (var prop in style) {\n var value = style[prop];\n if (typeof value !== 'function') continue;\n delete style[prop];\n fnValues[prop] = value;\n }\n rule[fnValuesNs] = fnValues;\n return style;\n },\n onUpdate: function onUpdate(data, rule, sheet, options) {\n var styleRule = rule;\n var fnRule = styleRule[fnRuleNs]; // If we have a style function, the entire rule is dynamic and style object\n // will be returned from that function.\n\n if (fnRule) {\n // Empty object will remove all currently defined props\n // in case function rule returns a falsy value.\n styleRule.style = fnRule(data) || {};\n if (process.env.NODE_ENV === 'development') {\n for (var prop in styleRule.style) {\n if (typeof styleRule.style[prop] === 'function') {\n process.env.NODE_ENV !== \"production\" ? warning(false, '[JSS] Function values inside function rules are not supported.') : void 0;\n break;\n }\n }\n }\n }\n var fnValues = styleRule[fnValuesNs]; // If we have a fn values map, it is a rule with function values.\n\n if (fnValues) {\n for (var _prop in fnValues) {\n styleRule.prop(_prop, fnValues[_prop](data), options);\n }\n }\n }\n };\n};\nexport default functionPlugin;","import $$observable from 'symbol-observable';\nimport { createRule } from 'jss';\nvar isObservable = function isObservable(value) {\n return value && value[$$observable] && value === value[$$observable]();\n};\nvar observablePlugin = function observablePlugin(updateOptions) {\n return {\n onCreateRule: function onCreateRule(name, decl, options) {\n if (!isObservable(decl)) return null;\n var style$ = decl;\n var rule = createRule(name, {}, options); // TODO\n // Call `stream.subscribe()` returns a subscription, which should be explicitly\n // unsubscribed from when we know this sheet is no longer needed.\n\n style$.subscribe(function (style) {\n for (var prop in style) {\n rule.prop(prop, style[prop], updateOptions);\n }\n });\n return rule;\n },\n onProcessRule: function onProcessRule(rule) {\n if (rule && rule.type !== 'style') return;\n var styleRule = rule;\n var style = styleRule.style;\n var _loop = function _loop(prop) {\n var value = style[prop];\n if (!isObservable(value)) return \"continue\";\n delete style[prop];\n value.subscribe({\n next: function next(nextValue) {\n styleRule.prop(prop, nextValue, updateOptions);\n }\n });\n };\n for (var prop in style) {\n var _ret = _loop(prop);\n if (_ret === \"continue\") continue;\n }\n }\n };\n};\nexport default observablePlugin;","import warning from 'tiny-warning';\nvar semiWithNl = /;\\n/;\n/**\n * Naive CSS parser.\n * - Supports only rule body (no selectors)\n * - Requires semicolon and new line after the value (except of last line)\n * - No nested rules support\n */\n\nvar parse = function parse(cssText) {\n var style = {};\n var split = cssText.split(semiWithNl);\n for (var i = 0; i < split.length; i++) {\n var decl = (split[i] || '').trim();\n if (!decl) continue;\n var colonIndex = decl.indexOf(':');\n if (colonIndex === -1) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Malformed CSS string \\\"\" + decl + \"\\\"\") : void 0;\n continue;\n }\n var prop = decl.substr(0, colonIndex).trim();\n var value = decl.substr(colonIndex + 1).trim();\n style[prop] = value;\n }\n return style;\n};\nvar onProcessRule = function onProcessRule(rule) {\n if (typeof rule.style === 'string') {\n rule.style = parse(rule.style);\n }\n};\nfunction templatePlugin() {\n return {\n onProcessRule: onProcessRule\n };\n}\nexport default templatePlugin;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { RuleList } from 'jss';\nvar at = '@global';\nvar atPrefix = '@global ';\nvar GlobalContainerRule = /*#__PURE__*/\nfunction () {\n function GlobalContainerRule(key, styles, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n this.rules = new RuleList(_extends({}, options, {\n parent: this\n }));\n for (var selector in styles) {\n this.rules.add(selector, styles[selector]);\n }\n this.rules.process();\n }\n /**\n * Get a rule.\n */\n\n var _proto = GlobalContainerRule.prototype;\n _proto.getRule = function getRule(name) {\n return this.rules.get(name);\n }\n /**\n * Create and register rule, run plugins.\n */;\n _proto.addRule = function addRule(name, style, options) {\n var rule = this.rules.add(name, style, options);\n if (rule) this.options.jss.plugins.onProcessRule(rule);\n return rule;\n }\n /**\n * Replace rule, run plugins.\n */;\n _proto.replaceRule = function replaceRule(name, style, options) {\n var newRule = this.rules.replace(name, style, options);\n if (newRule) this.options.jss.plugins.onProcessRule(newRule);\n return newRule;\n }\n /**\n * Get index of a rule.\n */;\n _proto.indexOf = function indexOf(rule) {\n return this.rules.indexOf(rule);\n }\n /**\n * Generates a CSS string.\n */;\n _proto.toString = function toString(options) {\n return this.rules.toString(options);\n };\n return GlobalContainerRule;\n}();\nvar GlobalPrefixedRule = /*#__PURE__*/\nfunction () {\n function GlobalPrefixedRule(key, style, options) {\n this.type = 'global';\n this.at = at;\n this.isProcessed = false;\n this.key = key;\n this.options = options;\n var selector = key.substr(atPrefix.length);\n this.rule = options.jss.createRule(selector, style, _extends({}, options, {\n parent: this\n }));\n }\n var _proto2 = GlobalPrefixedRule.prototype;\n _proto2.toString = function toString(options) {\n return this.rule ? this.rule.toString(options) : '';\n };\n return GlobalPrefixedRule;\n}();\nvar separatorRegExp = /\\s*,\\s*/g;\nfunction addScope(selector, scope) {\n var parts = selector.split(separatorRegExp);\n var scoped = '';\n for (var i = 0; i < parts.length; i++) {\n scoped += scope + \" \" + parts[i].trim();\n if (parts[i + 1]) scoped += ', ';\n }\n return scoped;\n}\nfunction handleNestedGlobalContainerRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n var rules = style ? style[at] : null;\n if (!rules) return;\n for (var name in rules) {\n sheet.addRule(name, rules[name], _extends({}, options, {\n selector: addScope(name, rule.selector)\n }));\n }\n delete style[at];\n}\nfunction handlePrefixedGlobalRule(rule, sheet) {\n var options = rule.options,\n style = rule.style;\n for (var prop in style) {\n if (prop[0] !== '@' || prop.substr(0, at.length) !== at) continue;\n var selector = addScope(prop.substr(at.length), rule.selector);\n sheet.addRule(selector, style[prop], _extends({}, options, {\n selector: selector\n }));\n delete style[prop];\n }\n}\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\nfunction jssGlobal() {\n function onCreateRule(name, styles, options) {\n if (!name) return null;\n if (name === at) {\n return new GlobalContainerRule(name, styles, options);\n }\n if (name[0] === '@' && name.substr(0, atPrefix.length) === atPrefix) {\n return new GlobalPrefixedRule(name, styles, options);\n }\n var parent = options.parent;\n if (parent) {\n if (parent.type === 'global' || parent.options.parent && parent.options.parent.type === 'global') {\n options.scoped = false;\n }\n }\n if (!options.selector && options.scoped === false) {\n options.selector = name;\n }\n return null;\n }\n function onProcessRule(rule, sheet) {\n if (rule.type !== 'style' || !sheet) return;\n handleNestedGlobalContainerRule(rule, sheet);\n handlePrefixedGlobalRule(rule, sheet);\n }\n return {\n onCreateRule: onCreateRule,\n onProcessRule: onProcessRule\n };\n}\nexport default jssGlobal;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\nvar isObject = function isObject(obj) {\n return obj && typeof obj === 'object' && !Array.isArray(obj);\n};\nvar valueNs = \"extendCurrValue\" + Date.now();\nfunction mergeExtend(style, rule, sheet, newStyle) {\n var extendType = typeof style.extend; // Extend using a rule name.\n\n if (extendType === 'string') {\n if (!sheet) return;\n var refRule = sheet.getRule(style.extend);\n if (!refRule) return;\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] A rule tries to extend itself \\n\" + rule.toString()) : void 0;\n return;\n }\n var parent = refRule.options.parent;\n if (parent) {\n var originalStyle = parent.rules.raw[style.extend];\n extend(originalStyle, rule, sheet, newStyle);\n }\n return;\n } // Extend using an array.\n\n if (Array.isArray(style.extend)) {\n for (var index = 0; index < style.extend.length; index++) {\n var singleExtend = style.extend[index];\n var singleStyle = typeof singleExtend === 'string' ? _extends({}, style, {\n extend: singleExtend\n }) : style.extend[index];\n extend(singleStyle, rule, sheet, newStyle);\n }\n return;\n } // Extend is a style object.\n\n for (var prop in style.extend) {\n if (prop === 'extend') {\n extend(style.extend.extend, rule, sheet, newStyle);\n continue;\n }\n if (isObject(style.extend[prop])) {\n if (!(prop in newStyle)) newStyle[prop] = {};\n extend(style.extend[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n newStyle[prop] = style.extend[prop];\n }\n}\nfunction mergeRest(style, rule, sheet, newStyle) {\n // Copy base style.\n for (var prop in style) {\n if (prop === 'extend') continue;\n if (isObject(newStyle[prop]) && isObject(style[prop])) {\n extend(style[prop], rule, sheet, newStyle[prop]);\n continue;\n }\n if (isObject(style[prop])) {\n newStyle[prop] = extend(style[prop], rule, sheet);\n continue;\n }\n newStyle[prop] = style[prop];\n }\n}\n/**\n * Recursively extend styles.\n */\n\nfunction extend(style, rule, sheet, newStyle) {\n if (newStyle === void 0) {\n newStyle = {};\n }\n mergeExtend(style, rule, sheet, newStyle);\n mergeRest(style, rule, sheet, newStyle);\n return newStyle;\n}\n/**\n * Handle `extend` property.\n */\n\nfunction jssExtend() {\n function onProcessStyle(style, rule, sheet) {\n if ('extend' in style) return extend(style, rule, sheet);\n return style;\n }\n function onChangeValue(value, prop, rule) {\n if (prop !== 'extend') return value; // Value is empty, remove properties set previously.\n\n if (value == null || value === false) {\n for (var key in rule[valueNs]) {\n rule.prop(key, null);\n }\n rule[valueNs] = null;\n return null;\n }\n if (typeof value === 'object') {\n for (var _key in value) {\n rule.prop(_key, value[_key]);\n }\n rule[valueNs] = value;\n } // Make sure we don't set the value in the core.\n\n return null;\n }\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\nexport default jssExtend;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport warning from 'tiny-warning';\nvar separatorRegExp = /\\s*,\\s*/g;\nvar parentRegExp = /&/g;\nvar refRegExp = /\\$([\\w-]+)/g;\n/**\n * Convert nested rules to separate, remove them from original styles.\n */\n\nfunction jssNested() {\n // Get a function to be used for $ref replacement.\n function getReplaceRef(container, sheet) {\n return function (match, key) {\n var rule = container.getRule(key) || sheet && sheet.getRule(key);\n if (rule) {\n return rule.selector;\n }\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Could not find the referenced rule \\\"\" + key + \"\\\" in \\\"\" + (container.options.meta || container.toString()) + \"\\\".\") : void 0;\n return key;\n };\n }\n function replaceParentRefs(nestedProp, parentProp) {\n var parentSelectors = parentProp.split(separatorRegExp);\n var nestedSelectors = nestedProp.split(separatorRegExp);\n var result = '';\n for (var i = 0; i < parentSelectors.length; i++) {\n var parent = parentSelectors[i];\n for (var j = 0; j < nestedSelectors.length; j++) {\n var nested = nestedSelectors[j];\n if (result) result += ', '; // Replace all & by the parent or prefix & with the parent.\n\n result += nested.indexOf('&') !== -1 ? nested.replace(parentRegExp, parent) : parent + \" \" + nested;\n }\n }\n return result;\n }\n function getOptions(rule, container, prevOptions) {\n // Options has been already created, now we only increase index.\n if (prevOptions) return _extends({}, prevOptions, {\n index: prevOptions.index + 1\n });\n var nestingLevel = rule.options.nestingLevel;\n nestingLevel = nestingLevel === undefined ? 1 : nestingLevel + 1;\n var options = _extends({}, rule.options, {\n nestingLevel: nestingLevel,\n index: container.indexOf(rule) + 1 // We don't need the parent name to be set options for chlid.\n });\n delete options.name;\n return options;\n }\n function onProcessStyle(style, rule, sheet) {\n if (rule.type !== 'style') return style;\n var styleRule = rule;\n var container = styleRule.options.parent;\n var options;\n var replaceRef;\n for (var prop in style) {\n var isNested = prop.indexOf('&') !== -1;\n var isNestedConditional = prop[0] === '@';\n if (!isNested && !isNestedConditional) continue;\n options = getOptions(styleRule, container, options);\n if (isNested) {\n var selector = replaceParentRefs(prop, styleRule.selector); // Lazily create the ref replacer function just once for\n // all nested rules within the sheet.\n\n if (!replaceRef) replaceRef = getReplaceRef(container, sheet); // Replace all $refs.\n\n selector = selector.replace(refRegExp, replaceRef);\n var name = styleRule.key + \"-\" + prop;\n if ('replaceRule' in container) {\n // for backward compatibility\n container.replaceRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n } else {\n container.addRule(name, style[prop], _extends({}, options, {\n selector: selector\n }));\n }\n } else if (isNestedConditional) {\n // Place conditional right after the parent rule to ensure right ordering.\n container.addRule(prop, {}, options).addRule(styleRule.key, style[prop], {\n selector: styleRule.selector\n });\n }\n delete style[prop];\n }\n return style;\n }\n return {\n onProcessStyle: onProcessStyle\n };\n}\nexport default jssNested;","import warning from 'tiny-warning';\n\n/**\n * Set selector.\n *\n * @param original rule\n * @param className class string\n * @return flag indicating function was successfull or not\n */\n\nfunction registerClass(rule, className) {\n // Skip falsy values\n if (!className) return true; // Support array of class names `{composes: ['foo', 'bar']}`\n\n if (Array.isArray(className)) {\n for (var index = 0; index < className.length; index++) {\n var isSetted = registerClass(rule, className[index]);\n if (!isSetted) return false;\n }\n return true;\n } // Support space separated class names `{composes: 'foo bar'}`\n\n if (className.indexOf(' ') > -1) {\n return registerClass(rule, className.split(' '));\n }\n var parent = rule.options.parent; // It is a ref to a local rule.\n\n if (className[0] === '$') {\n var refRule = parent.getRule(className.substr(1));\n if (!refRule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Referenced rule is not defined. \\n\" + rule.toString()) : void 0;\n return false;\n }\n if (refRule === rule) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"[JSS] Cyclic composition detected. \\n\" + rule.toString()) : void 0;\n return false;\n }\n parent.classes[rule.key] += \" \" + parent.classes[refRule.key];\n return true;\n }\n parent.classes[rule.key] += \" \" + className;\n return true;\n}\n/**\n * Convert compose property to additional class, remove property from original styles.\n */\n\nfunction jssCompose() {\n function onProcessStyle(style, rule) {\n if (!('composes' in style)) return style;\n registerClass(rule, style.composes); // Remove composes property to prevent infinite loop.\n\n delete style.composes;\n return style;\n }\n return {\n onProcessStyle: onProcessStyle\n };\n}\nexport default jssCompose;","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g;\nvar msPattern = /^ms-/;\nvar cache = {};\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase();\n}\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name];\n }\n var hName = name.replace(uppercasePattern, toHyphenLower);\n return cache[name] = msPattern.test(hName) ? '-' + hName : hName;\n}\nexport default hyphenateStyleName;","import hyphenate from 'hyphenate-style-name';\n\n/**\n * Convert camel cased property names to dash separated.\n */\n\nfunction convertCase(style) {\n var converted = {};\n for (var prop in style) {\n var key = prop.indexOf('--') === 0 ? prop : hyphenate(prop);\n converted[key] = style[prop];\n }\n if (style.fallbacks) {\n if (Array.isArray(style.fallbacks)) converted.fallbacks = style.fallbacks.map(convertCase);else converted.fallbacks = convertCase(style.fallbacks);\n }\n return converted;\n}\n/**\n * Allow camel cased property names by converting them back to dasherized.\n */\n\nfunction camelCase() {\n function onProcessStyle(style) {\n if (Array.isArray(style)) {\n // Handle rules like @font-face, which can have multiple styles in an array\n for (var index = 0; index < style.length; index++) {\n style[index] = convertCase(style[index]);\n }\n return style;\n }\n return convertCase(style);\n }\n function onChangeValue(value, prop, rule) {\n if (prop.indexOf('--') === 0) {\n return value;\n }\n var hyphenatedProp = hyphenate(prop); // There was no camel case in place\n\n if (prop === hyphenatedProp) return value;\n rule.prop(hyphenatedProp, value); // Core will ignore that property value we set the proper one above.\n\n return null;\n }\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\nexport default camelCase;","import { hasCSSTOMSupport } from 'jss';\nvar px = hasCSSTOMSupport && CSS ? CSS.px : 'px';\nvar ms = hasCSSTOMSupport && CSS ? CSS.ms : 'ms';\nvar percent = hasCSSTOMSupport && CSS ? CSS.percent : '%';\n/**\n * Generated jss-plugin-default-unit CSS property units\n */\n\nvar defaultUnits = {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n // Motion properties\n motion: px,\n 'motion-offset': px,\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n};\n\n/**\n * Clones the object and adds a camel cased property version.\n */\n\nfunction addCamelCasedVersion(obj) {\n var regExp = /(-[a-z])/g;\n var replace = function replace(str) {\n return str[1].toUpperCase();\n };\n var newObj = {};\n for (var key in obj) {\n newObj[key] = obj[key];\n newObj[key.replace(regExp, replace)] = obj[key];\n }\n return newObj;\n}\nvar units = addCamelCasedVersion(defaultUnits);\n/**\n * Recursive deep style passing function\n */\n\nfunction iterate(prop, value, options) {\n if (value == null) return value;\n if (Array.isArray(value)) {\n for (var i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options);\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (var innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options);\n }\n } else {\n for (var _innerProp in value) {\n value[_innerProp] = iterate(prop + \"-\" + _innerProp, value[_innerProp], options);\n }\n } // eslint-disable-next-line no-restricted-globals\n } else if (typeof value === 'number' && isNaN(value) === false) {\n var unit = options[prop] || units[prop]; // Add the unit if available, except for the special case of 0px.\n\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : \"\" + value + unit;\n }\n return value.toString();\n }\n return value;\n}\n/**\n * Add unit to numeric values.\n */\n\nfunction defaultUnit(options) {\n if (options === void 0) {\n options = {};\n }\n var camelCasedOptions = addCamelCasedVersion(options);\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n for (var prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions);\n }\n return style;\n }\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions);\n }\n return {\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\nexport default defaultUnit;","/**\n * A scheme for converting properties from array to regular style.\n * All properties listed below will be transformed to a string separated by space.\n */\nvar propArray = {\n 'background-size': true,\n 'background-position': true,\n border: true,\n 'border-bottom': true,\n 'border-left': true,\n 'border-top': true,\n 'border-right': true,\n 'border-radius': true,\n 'border-image': true,\n 'border-width': true,\n 'border-style': true,\n 'border-color': true,\n 'box-shadow': true,\n flex: true,\n margin: true,\n padding: true,\n outline: true,\n 'transform-origin': true,\n transform: true,\n transition: true\n /**\n * A scheme for converting arrays to regular styles inside of objects.\n * For e.g.: \"{position: [0, 0]}\" => \"background-position: 0 0;\".\n */\n};\nvar propArrayInObj = {\n position: true,\n // background-position\n size: true // background-size\n\n /**\n * A scheme for parsing and building correct styles from passed objects.\n */\n};\nvar propObj = {\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n margin: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n background: {\n attachment: null,\n color: null,\n image: null,\n position: null,\n repeat: null\n },\n border: {\n width: null,\n style: null,\n color: null\n },\n 'border-top': {\n width: null,\n style: null,\n color: null\n },\n 'border-right': {\n width: null,\n style: null,\n color: null\n },\n 'border-bottom': {\n width: null,\n style: null,\n color: null\n },\n 'border-left': {\n width: null,\n style: null,\n color: null\n },\n outline: {\n width: null,\n style: null,\n color: null\n },\n 'list-style': {\n type: null,\n position: null,\n image: null\n },\n transition: {\n property: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed for avoiding comilation issues with jss-plugin-camel-case\n delay: null\n },\n animation: {\n name: null,\n duration: null,\n 'timing-function': null,\n timingFunction: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n delay: null,\n 'iteration-count': null,\n iterationCount: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n direction: null,\n 'fill-mode': null,\n fillMode: null,\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'play-state': null,\n playState: null // Needed to avoid compilation issues with jss-plugin-camel-case\n },\n 'box-shadow': {\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n color: null,\n inset: null\n },\n 'text-shadow': {\n x: 0,\n y: 0,\n blur: null,\n color: null\n }\n /**\n * A scheme for converting non-standart properties inside object.\n * For e.g.: include 'border-radius' property inside 'border' object.\n */\n};\nvar customPropObj = {\n border: {\n radius: 'border-radius',\n image: 'border-image',\n width: 'border-width',\n style: 'border-style',\n color: 'border-color'\n },\n 'border-bottom': {\n width: 'border-bottom-width',\n style: 'border-bottom-style',\n color: 'border-bottom-color'\n },\n 'border-top': {\n width: 'border-top-width',\n style: 'border-top-style',\n color: 'border-top-color'\n },\n 'border-left': {\n width: 'border-left-width',\n style: 'border-left-style',\n color: 'border-left-color'\n },\n 'border-right': {\n width: 'border-right-width',\n style: 'border-right-style',\n color: 'border-right-color'\n },\n background: {\n size: 'background-size',\n image: 'background-image'\n },\n font: {\n style: 'font-style',\n variant: 'font-variant',\n weight: 'font-weight',\n stretch: 'font-stretch',\n size: 'font-size',\n family: 'font-family',\n lineHeight: 'line-height',\n // Needed to avoid compilation issues with jss-plugin-camel-case\n 'line-height': 'line-height'\n },\n flex: {\n grow: 'flex-grow',\n basis: 'flex-basis',\n direction: 'flex-direction',\n wrap: 'flex-wrap',\n flow: 'flex-flow',\n shrink: 'flex-shrink'\n },\n align: {\n self: 'align-self',\n items: 'align-items',\n content: 'align-content'\n },\n grid: {\n 'template-columns': 'grid-template-columns',\n templateColumns: 'grid-template-columns',\n 'template-rows': 'grid-template-rows',\n templateRows: 'grid-template-rows',\n 'template-areas': 'grid-template-areas',\n templateAreas: 'grid-template-areas',\n template: 'grid-template',\n 'auto-columns': 'grid-auto-columns',\n autoColumns: 'grid-auto-columns',\n 'auto-rows': 'grid-auto-rows',\n autoRows: 'grid-auto-rows',\n 'auto-flow': 'grid-auto-flow',\n autoFlow: 'grid-auto-flow',\n row: 'grid-row',\n column: 'grid-column',\n 'row-start': 'grid-row-start',\n rowStart: 'grid-row-start',\n 'row-end': 'grid-row-end',\n rowEnd: 'grid-row-end',\n 'column-start': 'grid-column-start',\n columnStart: 'grid-column-start',\n 'column-end': 'grid-column-end',\n columnEnd: 'grid-column-end',\n area: 'grid-area',\n gap: 'grid-gap',\n 'row-gap': 'grid-row-gap',\n rowGap: 'grid-row-gap',\n 'column-gap': 'grid-column-gap',\n columnGap: 'grid-column-gap'\n }\n};\n\n/* eslint-disable no-use-before-define */\n/**\n * Map values by given prop.\n *\n * @param {Array} array of values\n * @param {String} original property\n * @param {String} original rule\n * @return {String} mapped values\n */\n\nfunction mapValuesByProp(value, prop, rule) {\n return value.map(function (item) {\n return objectToArray(item, prop, rule, false, true);\n });\n}\n/**\n * Convert array to nested array, if needed\n */\n\nfunction processArray(value, prop, scheme, rule) {\n if (scheme[prop] == null) return value;\n if (value.length === 0) return [];\n if (Array.isArray(value[0])) return processArray(value[0], prop, scheme, rule);\n if (typeof value[0] === 'object') {\n return mapValuesByProp(value, prop, rule);\n }\n return [value];\n}\n/**\n * Convert object to array.\n */\n\nfunction objectToArray(value, prop, rule, isFallback, isInArray) {\n if (!(propObj[prop] || customPropObj[prop])) return [];\n var result = []; // Check if exists any non-standard property\n\n if (customPropObj[prop]) {\n // eslint-disable-next-line no-param-reassign\n value = customPropsToStyle(value, rule, customPropObj[prop], isFallback);\n } // Pass throught all standart props\n\n if (Object.keys(value).length) {\n for (var baseProp in propObj[prop]) {\n if (value[baseProp]) {\n if (Array.isArray(value[baseProp])) {\n result.push(propArrayInObj[baseProp] === null ? value[baseProp] : value[baseProp].join(' '));\n } else result.push(value[baseProp]);\n continue;\n } // Add default value from props config.\n\n if (propObj[prop][baseProp] != null) {\n result.push(propObj[prop][baseProp]);\n }\n }\n }\n if (!result.length || isInArray) return result;\n return [result];\n}\n/**\n * Convert custom properties values to styles adding them to rule directly\n */\n\nfunction customPropsToStyle(value, rule, customProps, isFallback) {\n for (var prop in customProps) {\n var propName = customProps[prop]; // If current property doesn't exist already in rule - add new one\n\n if (typeof value[prop] !== 'undefined' && (isFallback || !rule.prop(propName))) {\n var _styleDetector;\n var appendedValue = styleDetector((_styleDetector = {}, _styleDetector[propName] = value[prop], _styleDetector), rule)[propName]; // Add style directly in rule\n\n if (isFallback) rule.style.fallbacks[propName] = appendedValue;else rule.style[propName] = appendedValue;\n } // Delete converted property to avoid double converting\n\n delete value[prop];\n }\n return value;\n}\n/**\n * Detect if a style needs to be converted.\n */\n\nfunction styleDetector(style, rule, isFallback) {\n for (var prop in style) {\n var value = style[prop];\n if (Array.isArray(value)) {\n // Check double arrays to avoid recursion.\n if (!Array.isArray(value[0])) {\n if (prop === 'fallbacks') {\n for (var index = 0; index < style.fallbacks.length; index++) {\n style.fallbacks[index] = styleDetector(style.fallbacks[index], rule, true);\n }\n continue;\n }\n style[prop] = processArray(value, prop, propArray, rule); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n style.fallbacks = styleDetector(style.fallbacks, rule, true);\n continue;\n }\n style[prop] = objectToArray(value, prop, rule, isFallback); // Avoid creating properties with empty values\n\n if (!style[prop].length) delete style[prop];\n } // Maybe a computed value resulting in an empty string\n else if (style[prop] === '') delete style[prop];\n }\n return style;\n}\n/**\n * Adds possibility to write expanded styles.\n */\n\nfunction jssExpand() {\n function onProcessStyle(style, rule) {\n if (!style || rule.type !== 'style') return style;\n if (Array.isArray(style)) {\n // Pass rules one by one and reformat them\n for (var index = 0; index < style.length; index++) {\n style[index] = styleDetector(style[index], rule);\n }\n return style;\n }\n return styleDetector(style, rule);\n }\n return {\n onProcessStyle: onProcessStyle\n };\n}\nexport default jssExpand;","import isInBrowser from 'is-in-browser';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\n\n// Export javascript style and css style vendor prefixes.\nvar js = '';\nvar css = '';\nvar vendor = '';\nvar browser = '';\nvar isTouch = isInBrowser && 'ontouchstart' in document.documentElement; // We should not do anything if required serverside.\n\nif (isInBrowser) {\n // Order matters. We need to check Webkit the last one because\n // other vendors use to add Webkit prefixes to some properties\n var jsCssMap = {\n Moz: '-moz-',\n ms: '-ms-',\n O: '-o-',\n Webkit: '-webkit-'\n };\n var _document$createEleme = document.createElement('p'),\n style = _document$createEleme.style;\n var testProp = 'Transform';\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n js = key;\n css = jsCssMap[key];\n break;\n }\n } // Correctly detect the Edge browser.\n\n if (js === 'Webkit' && 'msHyphens' in style) {\n js = 'ms';\n css = jsCssMap.ms;\n browser = 'edge';\n } // Correctly detect the Safari browser.\n\n if (js === 'Webkit' && '-apple-trailing-word' in style) {\n vendor = 'apple';\n }\n}\n/**\n * Vendor prefix string for the current browser.\n *\n * @type {{js: String, css: String, vendor: String, browser: String}}\n * @api public\n */\n\nvar prefix = {\n js: js,\n css: css,\n vendor: vendor,\n browser: browser,\n isTouch: isTouch\n};\n\n/**\n * Test if a keyframe at-rule should be prefixed or not\n *\n * @param {String} vendor prefix string for the current browser.\n * @return {String}\n * @api public\n */\n\nfunction supportedKeyframes(key) {\n // Keyframes is already prefixed. e.g. key = '@-webkit-keyframes a'\n if (key[1] === '-') return key; // No need to prefix IE/Edge. Older browsers will ignore unsupported rules.\n // https://caniuse.com/#search=keyframes\n\n if (prefix.js === 'ms') return key;\n return \"@\" + prefix.css + \"keyframes\" + key.substr(10);\n}\n\n// https://caniuse.com/#search=appearance\n\nvar appearence = {\n noPrefill: ['appearance'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'appearance') return false;\n if (prefix.js === 'ms') return \"-webkit-\" + prop;\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=color-adjust\n\nvar colorAdjust = {\n noPrefill: ['color-adjust'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'color-adjust') return false;\n if (prefix.js === 'Webkit') return prefix.css + \"print-\" + prop;\n return prop;\n }\n};\nvar regExp = /[-\\s]+(.)?/g;\n/**\n * Replaces the letter with the capital letter\n *\n * @param {String} match\n * @param {String} c\n * @return {String}\n * @api private\n */\n\nfunction toUpper(match, c) {\n return c ? c.toUpperCase() : '';\n}\n/**\n * Convert dash separated strings to camel-cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction camelize(str) {\n return str.replace(regExp, toUpper);\n}\n\n/**\n * Convert dash separated strings to pascal cased.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nfunction pascalize(str) {\n return camelize(\"-\" + str);\n}\n\n// but we can use a longhand property instead.\n// https://caniuse.com/#search=mask\n\nvar mask = {\n noPrefill: ['mask'],\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^mask/.test(prop)) return false;\n if (prefix.js === 'Webkit') {\n var longhand = 'mask-image';\n if (camelize(longhand) in style) {\n return prop;\n }\n if (prefix.js + pascalize(longhand) in style) {\n return prefix.css + prop;\n }\n }\n return prop;\n }\n};\n\n// https://caniuse.com/#search=text-orientation\n\nvar textOrientation = {\n noPrefill: ['text-orientation'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'text-orientation') return false;\n if (prefix.vendor === 'apple' && !prefix.isTouch) {\n return prefix.css + prop;\n }\n return prop;\n }\n};\n\n// https://caniuse.com/#search=transform\n\nvar transform = {\n noPrefill: ['transform'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transform') return false;\n if (options.transform) {\n return prop;\n }\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=transition\n\nvar transition = {\n noPrefill: ['transition'],\n supportedProperty: function supportedProperty(prop, style, options) {\n if (prop !== 'transition') return false;\n if (options.transition) {\n return prop;\n }\n return prefix.css + prop;\n }\n};\n\n// https://caniuse.com/#search=writing-mode\n\nvar writingMode = {\n noPrefill: ['writing-mode'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'writing-mode') return false;\n if (prefix.js === 'Webkit' || prefix.js === 'ms' && prefix.browser !== 'edge') {\n return prefix.css + prop;\n }\n return prop;\n }\n};\n\n// https://caniuse.com/#search=user-select\n\nvar userSelect = {\n noPrefill: ['user-select'],\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'user-select') return false;\n if (prefix.js === 'Moz' || prefix.js === 'ms' || prefix.vendor === 'apple') {\n return prefix.css + prop;\n }\n return prop;\n }\n};\n\n// https://caniuse.com/#search=multicolumn\n// https://github.com/postcss/autoprefixer/issues/491\n// https://github.com/postcss/autoprefixer/issues/177\n\nvar breakPropsOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^break-/.test(prop)) return false;\n if (prefix.js === 'Webkit') {\n var jsProp = \"WebkitColumn\" + pascalize(prop);\n return jsProp in style ? prefix.css + \"column-\" + prop : false;\n }\n if (prefix.js === 'Moz') {\n var _jsProp = \"page\" + pascalize(prop);\n return _jsProp in style ? \"page-\" + prop : false;\n }\n return false;\n }\n};\n\n// See https://github.com/postcss/autoprefixer/issues/324.\n\nvar inlineLogicalOld = {\n supportedProperty: function supportedProperty(prop, style) {\n if (!/^(border|margin|padding)-inline/.test(prop)) return false;\n if (prefix.js === 'Moz') return prop;\n var newProp = prop.replace('-inline', '');\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\n\n// Camelization is required because we can't test using.\n// CSS syntax for e.g. in FF.\n\nvar unprefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n return camelize(prop) in style ? prop : false;\n }\n};\nvar prefixed = {\n supportedProperty: function supportedProperty(prop, style) {\n var pascalized = pascalize(prop); // Return custom CSS variable without prefixing.\n\n if (prop[0] === '-') return prop; // Return already prefixed value without prefixing.\n\n if (prop[0] === '-' && prop[1] === '-') return prop;\n if (prefix.js + pascalized in style) return prefix.css + prop; // Try webkit fallback.\n\n if (prefix.js !== 'Webkit' && \"Webkit\" + pascalized in style) return \"-webkit-\" + prop;\n return false;\n }\n};\n\n// https://caniuse.com/#search=scroll-snap\n\nvar scrollSnap = {\n supportedProperty: function supportedProperty(prop) {\n if (prop.substring(0, 11) !== 'scroll-snap') return false;\n if (prefix.js === 'ms') {\n return \"\" + prefix.css + prop;\n }\n return prop;\n }\n};\n\n// https://caniuse.com/#search=overscroll-behavior\n\nvar overscrollBehavior = {\n supportedProperty: function supportedProperty(prop) {\n if (prop !== 'overscroll-behavior') return false;\n if (prefix.js === 'ms') {\n return prefix.css + \"scroll-chaining\";\n }\n return prop;\n }\n};\nvar propMap = {\n 'flex-grow': 'flex-positive',\n 'flex-shrink': 'flex-negative',\n 'flex-basis': 'flex-preferred-size',\n 'justify-content': 'flex-pack',\n order: 'flex-order',\n 'align-items': 'flex-align',\n 'align-content': 'flex-line-pack' // 'align-self' is handled by 'align-self' plugin.\n}; // Support old flex spec from 2012.\n\nvar flex2012 = {\n supportedProperty: function supportedProperty(prop, style) {\n var newProp = propMap[prop];\n if (!newProp) return false;\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n};\nvar propMap$1 = {\n flex: 'box-flex',\n 'flex-grow': 'box-flex',\n 'flex-direction': ['box-orient', 'box-direction'],\n order: 'box-ordinal-group',\n 'align-items': 'box-align',\n 'flex-flow': ['box-orient', 'box-direction'],\n 'justify-content': 'box-pack'\n};\nvar propKeys = Object.keys(propMap$1);\nvar prefixCss = function prefixCss(p) {\n return prefix.css + p;\n}; // Support old flex spec from 2009.\n\nvar flex2009 = {\n supportedProperty: function supportedProperty(prop, style, _ref) {\n var multiple = _ref.multiple;\n if (propKeys.indexOf(prop) > -1) {\n var newProp = propMap$1[prop];\n if (!Array.isArray(newProp)) {\n return prefix.js + pascalize(newProp) in style ? prefix.css + newProp : false;\n }\n if (!multiple) return false;\n for (var i = 0; i < newProp.length; i++) {\n if (!(prefix.js + pascalize(newProp[0]) in style)) {\n return false;\n }\n }\n return newProp.map(prefixCss);\n }\n return false;\n }\n};\n\n// plugins = [\n// ...plugins,\n// breakPropsOld,\n// inlineLogicalOld,\n// unprefixed,\n// prefixed,\n// scrollSnap,\n// flex2012,\n// flex2009\n// ]\n// Plugins without 'noPrefill' value, going last.\n// 'flex-*' plugins should be at the bottom.\n// 'flex2009' going after 'flex2012'.\n// 'prefixed' going after 'unprefixed'\n\nvar plugins = [appearence, colorAdjust, mask, textOrientation, transform, transition, writingMode, userSelect, breakPropsOld, inlineLogicalOld, unprefixed, prefixed, scrollSnap, overscrollBehavior, flex2012, flex2009];\nvar propertyDetectors = plugins.filter(function (p) {\n return p.supportedProperty;\n}).map(function (p) {\n return p.supportedProperty;\n});\nvar noPrefill = plugins.filter(function (p) {\n return p.noPrefill;\n}).reduce(function (a, p) {\n a.push.apply(a, _toConsumableArray(p.noPrefill));\n return a;\n}, []);\nvar el;\nvar cache = {};\nif (isInBrowser) {\n el = document.createElement('p'); // We test every property on vendor prefix requirement.\n // Once tested, result is cached. It gives us up to 70% perf boost.\n // http://jsperf.com/element-style-object-access-vs-plain-object\n //\n // Prefill cache with known css properties to reduce amount of\n // properties we need to feature test at runtime.\n // http://davidwalsh.name/vendor-prefix\n\n var computed = window.getComputedStyle(document.documentElement, '');\n for (var key$1 in computed) {\n // eslint-disable-next-line no-restricted-globals\n if (!isNaN(key$1)) cache[computed[key$1]] = computed[key$1];\n } // Properties that cannot be correctly detected using the\n // cache prefill method.\n\n noPrefill.forEach(function (x) {\n return delete cache[x];\n });\n}\n/**\n * Test if a property is supported, returns supported property with vendor\n * prefix if required. Returns `false` if not supported.\n *\n * @param {String} prop dash separated\n * @param {Object} [options]\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedProperty(prop, options) {\n if (options === void 0) {\n options = {};\n }\n\n // For server-side rendering.\n if (!el) return prop; // Remove cache for benchmark tests or return property from the cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache[prop] != null) {\n return cache[prop];\n } // Check if 'transition' or 'transform' natively supported in browser.\n\n if (prop === 'transition' || prop === 'transform') {\n options[prop] = prop in el.style;\n } // Find a plugin for current prefix property.\n\n for (var i = 0; i < propertyDetectors.length; i++) {\n cache[prop] = propertyDetectors[i](prop, el.style, options); // Break loop, if value found.\n\n if (cache[prop]) break;\n } // Reset styles for current property.\n // Firefox can even throw an error for invalid properties, e.g., \"0\".\n\n try {\n el.style[prop] = '';\n } catch (err) {\n return false;\n }\n return cache[prop];\n}\nvar cache$1 = {};\nvar transitionProperties = {\n transition: 1,\n 'transition-property': 1,\n '-webkit-transition': 1,\n '-webkit-transition-property': 1\n};\nvar transPropsRegExp = /(^\\s*[\\w-]+)|, (\\s*[\\w-]+)(?![^()]*\\))/g;\nvar el$1;\n/**\n * Returns prefixed value transition/transform if needed.\n *\n * @param {String} match\n * @param {String} p1\n * @param {String} p2\n * @return {String}\n * @api private\n */\n\nfunction prefixTransitionCallback(match, p1, p2) {\n if (p1 === 'var') return 'var';\n if (p1 === 'all') return 'all';\n if (p2 === 'all') return ', all';\n var prefixedValue = p1 ? supportedProperty(p1) : \", \" + supportedProperty(p2);\n if (!prefixedValue) return p1 || p2;\n return prefixedValue;\n}\nif (isInBrowser) el$1 = document.createElement('p');\n/**\n * Returns prefixed value if needed. Returns `false` if value is not supported.\n *\n * @param {String} property\n * @param {String} value\n * @return {String|Boolean}\n * @api public\n */\n\nfunction supportedValue(property, value) {\n // For server-side rendering.\n var prefixedValue = value;\n if (!el$1 || property === 'content') return value; // It is a string or a number as a string like '1'.\n // We want only prefixable values here.\n // eslint-disable-next-line no-restricted-globals\n\n if (typeof prefixedValue !== 'string' || !isNaN(parseInt(prefixedValue, 10))) {\n return prefixedValue;\n } // Create cache key for current value.\n\n var cacheKey = property + prefixedValue; // Remove cache for benchmark tests or return value from cache.\n\n if (process.env.NODE_ENV !== 'benchmark' && cache$1[cacheKey] != null) {\n return cache$1[cacheKey];\n } // IE can even throw an error in some cases, for e.g. style.content = 'bar'.\n\n try {\n // Test value as it is.\n el$1.style[property] = prefixedValue;\n } catch (err) {\n // Return false if value not supported.\n cache$1[cacheKey] = false;\n return false;\n } // If 'transition' or 'transition-property' property.\n\n if (transitionProperties[property]) {\n prefixedValue = prefixedValue.replace(transPropsRegExp, prefixTransitionCallback);\n } else if (el$1.style[property] === '') {\n // Value with a vendor prefix.\n prefixedValue = prefix.css + prefixedValue; // Hardcode test to convert \"flex\" to \"-ms-flexbox\" for IE10.\n\n if (prefixedValue === '-ms-flex') el$1.style[property] = '-ms-flexbox'; // Test prefixed value.\n\n el$1.style[property] = prefixedValue; // Return false if value not supported.\n\n if (el$1.style[property] === '') {\n cache$1[cacheKey] = false;\n return false;\n }\n } // Reset styles for current property.\n\n el$1.style[property] = ''; // Write current value to cache.\n\n cache$1[cacheKey] = prefixedValue;\n return cache$1[cacheKey];\n}\nexport { prefix, supportedKeyframes, supportedProperty, supportedValue };","import { supportedKeyframes, supportedValue, supportedProperty } from 'css-vendor';\nimport { toCssValue } from 'jss';\n\n/**\n * Add vendor prefix to a property name when needed.\n */\n\nfunction jssVendorPrefixer() {\n function onProcessRule(rule) {\n if (rule.type === 'keyframes') {\n var atRule = rule;\n atRule.at = supportedKeyframes(atRule.at);\n }\n }\n function prefixStyle(style) {\n for (var prop in style) {\n var value = style[prop];\n if (prop === 'fallbacks' && Array.isArray(value)) {\n style[prop] = value.map(prefixStyle);\n continue;\n }\n var changeProp = false;\n var supportedProp = supportedProperty(prop);\n if (supportedProp && supportedProp !== prop) changeProp = true;\n var changeValue = false;\n var supportedValue$1 = supportedValue(supportedProp, toCssValue(value));\n if (supportedValue$1 && supportedValue$1 !== value) changeValue = true;\n if (changeProp || changeValue) {\n if (changeProp) delete style[prop];\n style[supportedProp || prop] = supportedValue$1 || value;\n }\n }\n return style;\n }\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n return prefixStyle(style);\n }\n function onChangeValue(value, prop) {\n return supportedValue(prop, toCssValue(value)) || value;\n }\n return {\n onProcessRule: onProcessRule,\n onProcessStyle: onProcessStyle,\n onChangeValue: onChangeValue\n };\n}\nexport default jssVendorPrefixer;","/**\n * Sort props by length.\n */\nfunction jssPropsSort() {\n var sort = function sort(prop0, prop1) {\n if (prop0.length === prop1.length) {\n return prop0 > prop1 ? 1 : -1;\n }\n return prop0.length - prop1.length;\n };\n return {\n onProcessStyle: function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style;\n var newStyle = {};\n var props = Object.keys(style).sort(sort);\n for (var i = 0; i < props.length; i++) {\n newStyle[props[i]] = style[props[i]];\n }\n return newStyle;\n }\n };\n}\nexport default jssPropsSort;","import functions from 'jss-plugin-rule-value-function';\nimport observable from 'jss-plugin-rule-value-observable';\nimport template from 'jss-plugin-template';\nimport global from 'jss-plugin-global';\nimport extend from 'jss-plugin-extend';\nimport nested from 'jss-plugin-nested';\nimport compose from 'jss-plugin-compose';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport expand from 'jss-plugin-expand';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort';\nvar create = function create(options) {\n if (options === void 0) {\n options = {};\n }\n return {\n plugins: [functions(), observable(options.observable), template(), global(), extend(), nested(), compose(), camelCase(), defaultUnit(options.defaultUnit), expand(), vendorPrefixer(), propsSort()]\n };\n};\nexport default create;","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nexport default memoize;","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */ && prop.charCodeAt(1) === 110\n /* n */ && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */);\nexport default index;","import { create } from 'jss';\nimport preset from 'jss-preset-default';\n\n// Since we are in a single sheet mode, user shouldn't care about this.\n\nvar MAX_RULES_PER_SHEET = 10000;\nvar defaultJss = create(preset());\nvar createCss = function createCss(jss) {\n if (jss === void 0) {\n jss = defaultJss;\n }\n var cache = new Map();\n var ruleIndex = 0;\n var sheet;\n var getSheet = function getSheet() {\n if (!sheet || sheet.rules.index.length > MAX_RULES_PER_SHEET) {\n sheet = jss.createStyleSheet().attach();\n }\n return sheet;\n };\n function css() {\n // eslint-disable-next-line prefer-rest-params\n var args = arguments; // We can avoid the need for stringification with a babel plugin,\n // which could generate a hash at build time and add it to the object.\n\n var argsStr = JSON.stringify(args);\n var cached = cache.get(argsStr);\n if (cached) return cached.className;\n var flatArgs = []; // Flatten arguments which can be\n // - style objects\n // - array of style objects\n // - arrays of style objects\n\n for (var argIndex in args) {\n var arg = args[argIndex];\n if (!Array.isArray(arg)) {\n flatArgs.push(arg);\n continue;\n }\n for (var innerArgIndex = 0; innerArgIndex < arg.length; innerArgIndex++) {\n flatArgs.push(arg[innerArgIndex]);\n }\n }\n var mergedStyle = {};\n var labels = [];\n for (var i = 0; i < flatArgs.length; i++) {\n var style = flatArgs[i];\n if (!style) continue;\n var styleObject = style; // It can be a class name that css() has previously generated.\n\n if (typeof style === 'string') {\n // eslint-disable-next-line no-shadow\n var _cached = cache.get(style);\n if (_cached) {\n // eslint-disable-next-line prefer-spread\n if (_cached.labels.length) labels.push.apply(labels, _cached.labels);\n styleObject = _cached.style;\n }\n }\n if (styleObject.label && labels.indexOf(styleObject.label) === -1) labels.push(styleObject.label);\n Object.assign(mergedStyle, styleObject);\n }\n delete mergedStyle.label;\n var label = labels.length === 0 ? 'css' : labels.join('-');\n var key = label + \"-\" + ruleIndex++;\n getSheet().addRule(key, mergedStyle);\n var className = getSheet().classes[key];\n var cacheValue = {\n style: mergedStyle,\n labels: labels,\n className: className\n };\n cache.set(argsStr, cacheValue);\n cache.set(className, cacheValue);\n return className;\n } // For testing only.\n\n css.getSheet = getSheet;\n return css;\n};\nvar css = createCss();\nexport default css;\nexport { createCss as create };","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport React, { createContext, useRef, useContext, useMemo, useEffect, useLayoutEffect, useDebugValue, forwardRef, createElement } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { ThemeContext } from 'theming';\nexport { ThemeProvider, createTheming, useTheme, withTheme } from 'theming';\nimport isInBrowser from 'is-in-browser';\nimport warning from 'tiny-warning';\nimport { SheetsManager, create as create$1, getDynamicStyles, createGenerateId } from 'jss';\nexport { SheetsRegistry, createGenerateId } from 'jss';\nimport preset from 'jss-preset-default';\nimport { shallowEqualObjects } from 'shallow-equal';\nimport isPropValid from '@emotion/is-prop-valid';\nimport defaultCss from 'css-jss';\nvar getDisplayName = function getDisplayName(Component) {\n return Component.displayName || Component.name || 'Component';\n};\nvar memoize = function memoize(fn) {\n var lastArgs;\n var lastResult;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (Array.isArray(lastArgs) && args.length === lastArgs.length) {\n var isSame = true;\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== lastArgs[i]) {\n isSame = false;\n }\n }\n if (isSame) {\n return lastResult;\n }\n }\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n return lastResult;\n };\n};\nvar mergeClasses = function mergeClasses(baseClasses, additionalClasses) {\n var combinedClasses = _extends({}, baseClasses);\n for (var name in additionalClasses) {\n combinedClasses[name] = name in combinedClasses ? combinedClasses[name] + \" \" + additionalClasses[name] : additionalClasses[name];\n }\n return combinedClasses;\n};\n\n/**\n * Global index counter to preserve source order.\n * As we create the style sheet during componentWillMount lifecycle,\n * children are handled after the parents, so the order of style elements would\n * be parent->child. It is a problem though when a parent passes a className\n * which needs to override any childs styles. StyleSheet of the child has a higher\n * specificity, because of the source order.\n * So our solution is to render sheets them in the reverse order child->sheet, so\n * that parent has a higher specificity.\n *\n * We start at [Number.MIN_SAFE_INTEGER] to always insert sheets from react-jss first before any\n * sheet which might be inserted manually by the user.\n */\nvar index = Number.MIN_SAFE_INTEGER || -1e9;\nvar getSheetIndex = function getSheetIndex() {\n return index++;\n};\nvar JssContext = createContext({\n classNamePrefix: '',\n disableStylesGeneration: false,\n isSSR: !isInBrowser\n});\nvar defaultManagers = new Map();\nvar getManager = function getManager(context, managerId) {\n // If `managers` map is present in the context, we use it in order to\n // let JssProvider reset them when new response has to render server-side.\n var managers = context.managers;\n if (managers) {\n if (!managers[managerId]) {\n managers[managerId] = new SheetsManager();\n }\n return managers[managerId];\n }\n var manager = defaultManagers.get(managerId);\n if (!manager) {\n manager = new SheetsManager();\n defaultManagers.set(managerId, manager);\n }\n return manager;\n};\nvar manageSheet = function manageSheet(options) {\n var sheet = options.sheet,\n context = options.context,\n index = options.index,\n theme = options.theme;\n if (!sheet) {\n return;\n }\n var manager = getManager(context, index);\n manager.manage(theme);\n if (context.registry) {\n context.registry.add(sheet);\n }\n};\nvar unmanageSheet = function unmanageSheet(options) {\n if (!options.sheet) {\n return;\n }\n var manager = getManager(options.context, options.index);\n manager.unmanage(options.theme);\n};\nvar defaultJss = create$1(preset());\nvar sheetsMeta = new WeakMap();\nvar getMeta = function getMeta(sheet) {\n return sheetsMeta.get(sheet);\n};\nvar addMeta = function addMeta(sheet, meta) {\n sheetsMeta.set(sheet, meta);\n};\nvar getStyles = function getStyles(options) {\n var styles = options.styles;\n if (typeof styles !== 'function') {\n return styles;\n }\n process.env.NODE_ENV !== \"production\" ? warning(styles.length !== 0, \"[JSS] <\" + (options.name || 'Hook') + \" />'s styles function doesn't rely on the \\\"theme\\\" argument. We recommend declaring styles as an object instead.\") : void 0;\n return styles(options.theme);\n};\nfunction getSheetOptions(options, link) {\n var minify;\n if (options.context.id && options.context.id.minify != null) {\n minify = options.context.id.minify;\n }\n var classNamePrefix = options.context.classNamePrefix || '';\n if (options.name && !minify) {\n classNamePrefix += options.name.replace(/\\s/g, '-') + \"-\";\n }\n var meta = '';\n if (options.name) meta = options.name + \", \";\n meta += typeof options.styles === 'function' ? 'Themed' : 'Unthemed';\n return _extends({}, options.sheetOptions, {\n index: options.index,\n meta: meta,\n classNamePrefix: classNamePrefix,\n link: link,\n generateId: options.sheetOptions && options.sheetOptions.generateId ? options.sheetOptions.generateId : options.context.generateId\n });\n}\nvar createStyleSheet = function createStyleSheet(options) {\n if (options.context.disableStylesGeneration) {\n return undefined;\n }\n var manager = getManager(options.context, options.index);\n var existingSheet = manager.get(options.theme);\n if (existingSheet) {\n return existingSheet;\n }\n var jss = options.context.jss || defaultJss;\n var styles = getStyles(options);\n var dynamicStyles = getDynamicStyles(styles);\n var sheet = jss.createStyleSheet(styles, getSheetOptions(options, dynamicStyles !== null));\n addMeta(sheet, {\n dynamicStyles: dynamicStyles,\n styles: styles\n });\n manager.add(options.theme, sheet);\n return sheet;\n};\nvar removeDynamicRules = function removeDynamicRules(sheet, rules) {\n // Loop over each dynamic rule and remove the dynamic rule\n // We can't just remove the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.deleteRule(rules[key]);\n }\n};\nvar updateDynamicRules = function updateDynamicRules(data, sheet, rules) {\n // Loop over each dynamic rule and update it\n // We can't just update the whole sheet as this has all of the rules for every component instance\n for (var key in rules) {\n sheet.updateOne(rules[key], data);\n }\n};\nvar addDynamicRules = function addDynamicRules(sheet, data) {\n var meta = getMeta(sheet);\n if (!meta) {\n return undefined;\n }\n var rules = {}; // Loop over each dynamic rule and add it to the stylesheet\n\n for (var key in meta.dynamicStyles) {\n var initialRuleCount = sheet.rules.index.length;\n var originalRule = sheet.addRule(key, meta.dynamicStyles[key]); // Loop through all created rules, fixes updating dynamic rules\n\n for (var i = initialRuleCount; i < sheet.rules.index.length; i++) {\n var rule = sheet.rules.index[i];\n sheet.updateOne(rule, data); // If it's the original rule, we need to add it by the correct key so the hook and hoc\n // can correctly concat the dynamic class with the static one\n\n rules[originalRule === rule ? key : rule.key] = rule;\n }\n }\n return rules;\n};\nvar getSheetClasses = function getSheetClasses(sheet, dynamicRules) {\n if (!dynamicRules) {\n return sheet.classes;\n }\n var meta = getMeta(sheet);\n if (!meta) {\n return sheet.classes;\n }\n var classes = {};\n for (var key in meta.styles) {\n classes[key] = sheet.classes[key];\n if (key in dynamicRules) {\n classes[key] += \" \" + sheet.classes[dynamicRules[key].key];\n }\n }\n return classes;\n};\nfunction getUseInsertionEffect(isSSR) {\n return isSSR ? useEffect : React.useInsertionEffect ||\n // React 18+ (https://github.com/reactwg/react-18/discussions/110)\n useLayoutEffect;\n}\nvar noTheme = {};\nvar createUseStyles = function createUseStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n name = _options.name,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"name\"]);\n var ThemeContext$1 = theming && theming.context || ThemeContext;\n var useTheme = function useTheme(theme) {\n if (typeof styles === 'function') {\n return theme || useContext(ThemeContext$1) || noTheme;\n }\n return noTheme;\n };\n var emptyObject = {};\n return function useStyles(data) {\n var isFirstMount = useRef(true);\n var context = useContext(JssContext);\n var theme = useTheme(data && data.theme);\n var _useMemo = useMemo(function () {\n var newSheet = createStyleSheet({\n context: context,\n styles: styles,\n name: name,\n theme: theme,\n index: index,\n sheetOptions: sheetOptions\n });\n if (newSheet && context.isSSR) {\n // manage immediately during SSRs. browsers will manage the sheet through useInsertionEffect below\n manageSheet({\n index: index,\n context: context,\n sheet: newSheet,\n theme: theme\n });\n }\n return [newSheet, newSheet ? addDynamicRules(newSheet, data) : null];\n }, [context, theme]),\n sheet = _useMemo[0],\n dynamicRules = _useMemo[1];\n getUseInsertionEffect(context.isSSR)(function () {\n // We only need to update the rules on a subsequent update and not in the first mount\n if (sheet && dynamicRules && !isFirstMount.current) {\n updateDynamicRules(data, sheet, dynamicRules);\n }\n }, [data]);\n getUseInsertionEffect(context.isSSR)(function () {\n if (sheet) {\n manageSheet({\n index: index,\n context: context,\n sheet: sheet,\n theme: theme\n });\n }\n return function () {\n if (sheet) {\n unmanageSheet({\n index: index,\n context: context,\n sheet: sheet,\n theme: theme\n }); // when sheet changes, remove related dynamic rules\n\n if (dynamicRules) {\n removeDynamicRules(sheet, dynamicRules);\n }\n }\n };\n }, [sheet]);\n var classes = useMemo(function () {\n return sheet && dynamicRules ? getSheetClasses(sheet, dynamicRules) : emptyObject;\n }, [sheet, dynamicRules]);\n useDebugValue(classes);\n useDebugValue(theme === noTheme ? 'No theme' : theme);\n useEffect(function () {\n isFirstMount.current = false;\n });\n return classes;\n };\n};\nvar NoRenderer = function NoRenderer(props) {\n return props.children || null;\n};\n/**\n * HOC creator function that wrapps the user component.\n *\n * `withStyles(styles, [options])(Component)`\n */\n\nvar createWithStyles = function createWithStyles(styles, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$index = _options.index,\n index = _options$index === void 0 ? getSheetIndex() : _options$index,\n theming = _options.theming,\n injectTheme = _options.injectTheme,\n sheetOptions = _objectWithoutPropertiesLoose(_options, [\"index\", \"theming\", \"injectTheme\"]);\n var ThemeContext$1 = theming ? theming.context : ThemeContext;\n return function (InnerComponent) {\n if (InnerComponent === void 0) {\n InnerComponent = NoRenderer;\n }\n var displayName = getDisplayName(InnerComponent);\n var mergeClassesProp = memoize(function (sheetClasses, classesProp) {\n return classesProp ? mergeClasses(sheetClasses, classesProp) : sheetClasses;\n });\n var hookOptions = Object.assign(sheetOptions, {\n theming: theming,\n index: index,\n name: displayName\n });\n var useStyles = createUseStyles(styles, hookOptions);\n var WithStyles = forwardRef(function (props, ref) {\n var theme = useContext(ThemeContext$1);\n var newProps = _extends({}, props);\n if (injectTheme && newProps.theme == null) {\n newProps.theme = theme;\n }\n var sheetClasses = useStyles(newProps);\n var classes = mergeClassesProp(sheetClasses, props.classes);\n return createElement(InnerComponent, _extends({}, newProps, {\n classes: classes,\n ref: ref\n }));\n });\n WithStyles.displayName = \"WithStyles(\" + displayName + \")\";\n WithStyles.defaultProps = _extends({}, InnerComponent.defaultProps);\n WithStyles.InnerComponent = InnerComponent;\n return hoistNonReactStatics(WithStyles, InnerComponent);\n };\n};\nvar initialContext = {};\nfunction JssProvider(props) {\n var managersRef = useRef({});\n var prevContextRef = useRef();\n var registryRef = useRef(null);\n var createContext = function createContext(parentContext, prevContext) {\n if (prevContext === void 0) {\n prevContext = initialContext;\n }\n var registry = props.registry,\n classNamePrefix = props.classNamePrefix,\n jss = props.jss,\n generateId = props.generateId,\n disableStylesGeneration = props.disableStylesGeneration,\n media = props.media,\n id = props.id,\n isSSR = props.isSSR;\n var context = _extends({}, parentContext);\n if (registry) {\n context.registry = registry; // This way we identify a new request on the server, because user will create\n // a new Registry instance for each.\n\n if (registry !== registryRef.current) {\n // We reset managers because we have to regenerate all sheets for the new request.\n managersRef.current = {};\n registryRef.current = registry;\n }\n }\n context.managers = managersRef.current;\n if (id !== undefined) {\n context.id = id;\n }\n if (generateId !== undefined) {\n context.generateId = generateId;\n } else if (!context.generateId || !prevContext || context.id !== prevContext.id) {\n context.generateId = createGenerateId(context.id);\n }\n if (classNamePrefix) {\n context.classNamePrefix = (context.classNamePrefix || '') + classNamePrefix;\n }\n if (media !== undefined) {\n context.media = media;\n }\n if (jss) {\n context.jss = jss;\n }\n if (disableStylesGeneration !== undefined) {\n context.disableStylesGeneration = disableStylesGeneration;\n }\n if (isSSR !== undefined) {\n context.isSSR = isSSR;\n }\n if (prevContext && shallowEqualObjects(prevContext, context)) {\n return prevContext;\n }\n return context;\n };\n var renderProvider = function renderProvider(parentContext) {\n var children = props.children;\n var context = createContext(parentContext, prevContextRef.current);\n prevContextRef.current = context;\n return createElement(JssContext.Provider, {\n value: context\n }, children);\n };\n return createElement(JssContext.Consumer, null, renderProvider);\n}\nvar parseStyles = function parseStyles(args) {\n var dynamicStyles = [];\n var staticStyle;\n var labels = []; // Not using ...rest to optimize perf.\n\n for (var key in args) {\n var style = args[key];\n if (!style) continue;\n if (typeof style === 'function') {\n dynamicStyles.push(style);\n } else {\n if (!staticStyle) staticStyle = {};\n Object.assign(staticStyle, style);\n var _staticStyle = staticStyle,\n _label = _staticStyle.label;\n if (_label) {\n if (labels.indexOf(_label) === -1) labels.push(_label);\n }\n }\n }\n var styles = {};\n var label = labels.length === 0 ? 'sc' : labels.join('-');\n if (staticStyle) {\n // Label should not leak to the core.\n if ('label' in staticStyle) delete staticStyle.label;\n styles[label] = staticStyle;\n } // When there is only one function rule, we don't need to wrap it.\n\n if (dynamicStyles.length === 1) {\n styles.scd = dynamicStyles[0];\n } // We create a new function rule which will call all other function rules\n // and merge the styles they return.\n\n if (dynamicStyles.length > 1) {\n styles.scd = function (props) {\n var merged = {};\n for (var i = 0; i < dynamicStyles.length; i++) {\n var dynamicStyle = dynamicStyles[i](props);\n if (dynamicStyle) Object.assign(merged, dynamicStyle);\n }\n return merged;\n };\n }\n return {\n styles: styles,\n label: label\n };\n};\nvar shouldForwardPropSymbol = Symbol('react-jss-styled');\nvar getShouldForwardProp = function getShouldForwardProp(tagOrComponent, options) {\n var shouldForwardProp = options.shouldForwardProp;\n var childShouldForwardProp = tagOrComponent[shouldForwardPropSymbol];\n var finalShouldForwardProp = shouldForwardProp || childShouldForwardProp;\n if (shouldForwardProp && childShouldForwardProp) {\n finalShouldForwardProp = function finalShouldForwardProp(prop) {\n return childShouldForwardProp(prop) && shouldForwardProp(prop);\n };\n }\n return finalShouldForwardProp;\n};\nvar getChildProps = function getChildProps(props, shouldForwardProp, isTag) {\n var childProps = {};\n for (var prop in props) {\n if (shouldForwardProp) {\n if (shouldForwardProp(prop) === true) {\n childProps[prop] = props[prop];\n }\n continue;\n } // We don't want to pass non-dom props to the DOM.\n\n if (isTag) {\n if (isPropValid(prop)) {\n childProps[prop] = props[prop];\n }\n continue;\n }\n childProps[prop] = props[prop];\n }\n return childProps;\n}; // eslint-disable-next-line no-unused-vars\n\nvar configureStyled = function configureStyled(tagOrComponent, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n theming = _options.theming;\n var isTag = typeof tagOrComponent === 'string';\n var ThemeContext$1 = theming ? theming.context : ThemeContext;\n var shouldForwardProp = getShouldForwardProp(tagOrComponent, options);\n var _options2 = options,\n _ = _options2.shouldForwardProp,\n hookOptions = _objectWithoutPropertiesLoose(_options2, [\"shouldForwardProp\"]);\n return function createStyledComponent() {\n // eslint-disable-next-line prefer-rest-params\n var _parseStyles = parseStyles(arguments),\n styles = _parseStyles.styles,\n label = _parseStyles.label;\n var useStyles = createUseStyles(styles, hookOptions);\n var Styled = function Styled(props) {\n var as = props.as,\n className = props.className;\n var theme = useContext(ThemeContext$1);\n var propsWithTheme = Object.assign({\n theme: theme\n }, props);\n var classes = useStyles(propsWithTheme);\n var childProps = getChildProps(props, shouldForwardProp, isTag);\n var classNames = ((classes[label] || classes.sc || '') + \" \" + (classes.scd || '')).trim();\n childProps.className = className ? className + \" \" + classNames : classNames;\n if (!isTag && shouldForwardProp) {\n tagOrComponent[shouldForwardPropSymbol] = shouldForwardProp;\n }\n if (isTag && as) {\n return createElement(as, childProps);\n }\n return createElement(tagOrComponent, childProps);\n };\n return Styled;\n };\n};\n\n/* eslint-disable prefer-rest-params, prefer-spread */\nvar create = function create(css) {\n if (css === void 0) {\n css = defaultCss;\n }\n return function createElement$1(type, props) {\n var args = arguments;\n if (props && props.css) {\n var className = css(props.css);\n var newProps = Object.assign({}, props);\n newProps.className = props.className ? props.className + \" \" + className : className;\n delete newProps.css;\n args[1] = newProps;\n }\n return createElement.apply(undefined, args);\n };\n};\nvar jsx = create();\nexport default createWithStyles;\nexport { JssContext, JssProvider, create as createJsx, createUseStyles, defaultJss as jss, jsx, configureStyled as styled, createWithStyles as withStyles };","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n throw err;\n }\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n var _newSelectedState = latestSelector.current(newStoreState);\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n forceRender();\n }\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n return entry.value;\n } // No entry found in cache, return sentinel\n\n return NOT_FOUND;\n }\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n function getEntries() {\n return entries;\n }\n function clear() {\n entries = [];\n }\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n cache.put(arguments, value);\n }\n return value;\n }\n memoized.clearCache = function () {\n return cache.clear();\n };\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n return dependencies;\n}\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n var _recomputations = 0;\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator(\n // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","function n(n) {\n for (var r = arguments.length, t = Array(r > 1 ? r - 1 : 0), e = 1; e < r; e++) t[e - 1] = arguments[e];\n if (\"production\" !== process.env.NODE_ENV) {\n var i = Y[n],\n o = i ? \"function\" == typeof i ? i.apply(null, t) : i : \"unknown error nr: \" + n;\n throw Error(\"[Immer] \" + o);\n }\n throw Error(\"[Immer] minified error nr: \" + n + (t.length ? \" \" + t.map(function (n) {\n return \"'\" + n + \"'\";\n }).join(\",\") : \"\") + \". Find the full error at: https://bit.ly/3cXEKWf\");\n}\nfunction r(n) {\n return !!n && !!n[Q];\n}\nfunction t(n) {\n var r;\n return !!n && (function (n) {\n if (!n || \"object\" != typeof n) return !1;\n var r = Object.getPrototypeOf(n);\n if (null === r) return !0;\n var t = Object.hasOwnProperty.call(r, \"constructor\") && r.constructor;\n return t === Object || \"function\" == typeof t && Function.toString.call(t) === Z;\n }(n) || Array.isArray(n) || !!n[L] || !!(null === (r = n.constructor) || void 0 === r ? void 0 : r[L]) || s(n) || v(n));\n}\nfunction e(t) {\n return r(t) || n(23, t), t[Q].t;\n}\nfunction i(n, r, t) {\n void 0 === t && (t = !1), 0 === o(n) ? (t ? Object.keys : nn)(n).forEach(function (e) {\n t && \"symbol\" == typeof e || r(e, n[e], n);\n }) : n.forEach(function (t, e) {\n return r(e, t, n);\n });\n}\nfunction o(n) {\n var r = n[Q];\n return r ? r.i > 3 ? r.i - 4 : r.i : Array.isArray(n) ? 1 : s(n) ? 2 : v(n) ? 3 : 0;\n}\nfunction u(n, r) {\n return 2 === o(n) ? n.has(r) : Object.prototype.hasOwnProperty.call(n, r);\n}\nfunction a(n, r) {\n return 2 === o(n) ? n.get(r) : n[r];\n}\nfunction f(n, r, t) {\n var e = o(n);\n 2 === e ? n.set(r, t) : 3 === e ? n.add(t) : n[r] = t;\n}\nfunction c(n, r) {\n return n === r ? 0 !== n || 1 / n == 1 / r : n != n && r != r;\n}\nfunction s(n) {\n return X && n instanceof Map;\n}\nfunction v(n) {\n return q && n instanceof Set;\n}\nfunction p(n) {\n return n.o || n.t;\n}\nfunction l(n) {\n if (Array.isArray(n)) return Array.prototype.slice.call(n);\n var r = rn(n);\n delete r[Q];\n for (var t = nn(r), e = 0; e < t.length; e++) {\n var i = t[e],\n o = r[i];\n !1 === o.writable && (o.writable = !0, o.configurable = !0), (o.get || o.set) && (r[i] = {\n configurable: !0,\n writable: !0,\n enumerable: o.enumerable,\n value: n[i]\n });\n }\n return Object.create(Object.getPrototypeOf(n), r);\n}\nfunction d(n, e) {\n return void 0 === e && (e = !1), y(n) || r(n) || !t(n) || (o(n) > 1 && (n.set = n.add = n.clear = n.delete = h), Object.freeze(n), e && i(n, function (n, r) {\n return d(r, !0);\n }, !0)), n;\n}\nfunction h() {\n n(2);\n}\nfunction y(n) {\n return null == n || \"object\" != typeof n || Object.isFrozen(n);\n}\nfunction b(r) {\n var t = tn[r];\n return t || n(18, r), t;\n}\nfunction m(n, r) {\n tn[n] || (tn[n] = r);\n}\nfunction _() {\n return \"production\" === process.env.NODE_ENV || U || n(0), U;\n}\nfunction j(n, r) {\n r && (b(\"Patches\"), n.u = [], n.s = [], n.v = r);\n}\nfunction g(n) {\n O(n), n.p.forEach(S), n.p = null;\n}\nfunction O(n) {\n n === U && (U = n.l);\n}\nfunction w(n) {\n return U = {\n p: [],\n l: U,\n h: n,\n m: !0,\n _: 0\n };\n}\nfunction S(n) {\n var r = n[Q];\n 0 === r.i || 1 === r.i ? r.j() : r.g = !0;\n}\nfunction P(r, e) {\n e._ = e.p.length;\n var i = e.p[0],\n o = void 0 !== r && r !== i;\n return e.h.O || b(\"ES5\").S(e, r, o), o ? (i[Q].P && (g(e), n(4)), t(r) && (r = M(e, r), e.l || x(e, r)), e.u && b(\"Patches\").M(i[Q].t, r, e.u, e.s)) : r = M(e, i, []), g(e), e.u && e.v(e.u, e.s), r !== H ? r : void 0;\n}\nfunction M(n, r, t) {\n if (y(r)) return r;\n var e = r[Q];\n if (!e) return i(r, function (i, o) {\n return A(n, e, r, i, o, t);\n }, !0), r;\n if (e.A !== n) return r;\n if (!e.P) return x(n, e.t, !0), e.t;\n if (!e.I) {\n e.I = !0, e.A._--;\n var o = 4 === e.i || 5 === e.i ? e.o = l(e.k) : e.o,\n u = o,\n a = !1;\n 3 === e.i && (u = new Set(o), o.clear(), a = !0), i(u, function (r, i) {\n return A(n, e, o, r, i, t, a);\n }), x(n, o, !1), t && n.u && b(\"Patches\").N(e, t, n.u, n.s);\n }\n return e.o;\n}\nfunction A(e, i, o, a, c, s, v) {\n if (\"production\" !== process.env.NODE_ENV && c === o && n(5), r(c)) {\n var p = M(e, c, s && i && 3 !== i.i && !u(i.R, a) ? s.concat(a) : void 0);\n if (f(o, a, p), !r(p)) return;\n e.m = !1;\n } else v && o.add(c);\n if (t(c) && !y(c)) {\n if (!e.h.D && e._ < 1) return;\n M(e, c), i && i.A.l || x(e, c);\n }\n}\nfunction x(n, r, t) {\n void 0 === t && (t = !1), !n.l && n.h.D && n.m && d(r, t);\n}\nfunction z(n, r) {\n var t = n[Q];\n return (t ? p(t) : n)[r];\n}\nfunction I(n, r) {\n if (r in n) for (var t = Object.getPrototypeOf(n); t;) {\n var e = Object.getOwnPropertyDescriptor(t, r);\n if (e) return e;\n t = Object.getPrototypeOf(t);\n }\n}\nfunction k(n) {\n n.P || (n.P = !0, n.l && k(n.l));\n}\nfunction E(n) {\n n.o || (n.o = l(n.t));\n}\nfunction N(n, r, t) {\n var e = s(r) ? b(\"MapSet\").F(r, t) : v(r) ? b(\"MapSet\").T(r, t) : n.O ? function (n, r) {\n var t = Array.isArray(n),\n e = {\n i: t ? 1 : 0,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n R: {},\n l: r,\n t: n,\n k: null,\n o: null,\n j: null,\n C: !1\n },\n i = e,\n o = en;\n t && (i = [e], o = on);\n var u = Proxy.revocable(i, o),\n a = u.revoke,\n f = u.proxy;\n return e.k = f, e.j = a, f;\n }(r, t) : b(\"ES5\").J(r, t);\n return (t ? t.A : _()).p.push(e), e;\n}\nfunction R(e) {\n return r(e) || n(22, e), function n(r) {\n if (!t(r)) return r;\n var e,\n u = r[Q],\n c = o(r);\n if (u) {\n if (!u.P && (u.i < 4 || !b(\"ES5\").K(u))) return u.t;\n u.I = !0, e = D(r, c), u.I = !1;\n } else e = D(r, c);\n return i(e, function (r, t) {\n u && a(u.t, r) === t || f(e, r, n(t));\n }), 3 === c ? new Set(e) : e;\n }(e);\n}\nfunction D(n, r) {\n switch (r) {\n case 2:\n return new Map(n);\n case 3:\n return Array.from(n);\n }\n return l(n);\n}\nfunction F() {\n function t(n, r) {\n var t = s[n];\n return t ? t.enumerable = r : s[n] = t = {\n configurable: !0,\n enumerable: r,\n get: function () {\n var r = this[Q];\n return \"production\" !== process.env.NODE_ENV && f(r), en.get(r, n);\n },\n set: function (r) {\n var t = this[Q];\n \"production\" !== process.env.NODE_ENV && f(t), en.set(t, n, r);\n }\n }, t;\n }\n function e(n) {\n for (var r = n.length - 1; r >= 0; r--) {\n var t = n[r][Q];\n if (!t.P) switch (t.i) {\n case 5:\n a(t) && k(t);\n break;\n case 4:\n o(t) && k(t);\n }\n }\n }\n function o(n) {\n for (var r = n.t, t = n.k, e = nn(t), i = e.length - 1; i >= 0; i--) {\n var o = e[i];\n if (o !== Q) {\n var a = r[o];\n if (void 0 === a && !u(r, o)) return !0;\n var f = t[o],\n s = f && f[Q];\n if (s ? s.t !== a : !c(f, a)) return !0;\n }\n }\n var v = !!r[Q];\n return e.length !== nn(r).length + (v ? 0 : 1);\n }\n function a(n) {\n var r = n.k;\n if (r.length !== n.t.length) return !0;\n var t = Object.getOwnPropertyDescriptor(r, r.length - 1);\n if (t && !t.get) return !0;\n for (var e = 0; e < r.length; e++) if (!r.hasOwnProperty(e)) return !0;\n return !1;\n }\n function f(r) {\n r.g && n(3, JSON.stringify(p(r)));\n }\n var s = {};\n m(\"ES5\", {\n J: function (n, r) {\n var e = Array.isArray(n),\n i = function (n, r) {\n if (n) {\n for (var e = Array(r.length), i = 0; i < r.length; i++) Object.defineProperty(e, \"\" + i, t(i, !0));\n return e;\n }\n var o = rn(r);\n delete o[Q];\n for (var u = nn(o), a = 0; a < u.length; a++) {\n var f = u[a];\n o[f] = t(f, n || !!o[f].enumerable);\n }\n return Object.create(Object.getPrototypeOf(r), o);\n }(e, n),\n o = {\n i: e ? 5 : 4,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n R: {},\n l: r,\n t: n,\n k: i,\n o: null,\n g: !1,\n C: !1\n };\n return Object.defineProperty(i, Q, {\n value: o,\n writable: !0\n }), i;\n },\n S: function (n, t, o) {\n o ? r(t) && t[Q].A === n && e(n.p) : (n.u && function n(r) {\n if (r && \"object\" == typeof r) {\n var t = r[Q];\n if (t) {\n var e = t.t,\n o = t.k,\n f = t.R,\n c = t.i;\n if (4 === c) i(o, function (r) {\n r !== Q && (void 0 !== e[r] || u(e, r) ? f[r] || n(o[r]) : (f[r] = !0, k(t)));\n }), i(e, function (n) {\n void 0 !== o[n] || u(o, n) || (f[n] = !1, k(t));\n });else if (5 === c) {\n if (a(t) && (k(t), f.length = !0), o.length < e.length) for (var s = o.length; s < e.length; s++) f[s] = !1;else for (var v = e.length; v < o.length; v++) f[v] = !0;\n for (var p = Math.min(o.length, e.length), l = 0; l < p; l++) o.hasOwnProperty(l) || (f[l] = !0), void 0 === f[l] && n(o[l]);\n }\n }\n }\n }(n.p[0]), e(n.p));\n },\n K: function (n) {\n return 4 === n.i ? o(n) : a(n);\n }\n });\n}\nfunction T() {\n function e(n) {\n if (!t(n)) return n;\n if (Array.isArray(n)) return n.map(e);\n if (s(n)) return new Map(Array.from(n.entries()).map(function (n) {\n return [n[0], e(n[1])];\n }));\n if (v(n)) return new Set(Array.from(n).map(e));\n var r = Object.create(Object.getPrototypeOf(n));\n for (var i in n) r[i] = e(n[i]);\n return u(n, L) && (r[L] = n[L]), r;\n }\n function f(n) {\n return r(n) ? e(n) : n;\n }\n var c = \"add\";\n m(\"Patches\", {\n $: function (r, t) {\n return t.forEach(function (t) {\n for (var i = t.path, u = t.op, f = r, s = 0; s < i.length - 1; s++) {\n var v = o(f),\n p = i[s];\n \"string\" != typeof p && \"number\" != typeof p && (p = \"\" + p), 0 !== v && 1 !== v || \"__proto__\" !== p && \"constructor\" !== p || n(24), \"function\" == typeof f && \"prototype\" === p && n(24), \"object\" != typeof (f = a(f, p)) && n(15, i.join(\"/\"));\n }\n var l = o(f),\n d = e(t.value),\n h = i[i.length - 1];\n switch (u) {\n case \"replace\":\n switch (l) {\n case 2:\n return f.set(h, d);\n case 3:\n n(16);\n default:\n return f[h] = d;\n }\n case c:\n switch (l) {\n case 1:\n return \"-\" === h ? f.push(d) : f.splice(h, 0, d);\n case 2:\n return f.set(h, d);\n case 3:\n return f.add(d);\n default:\n return f[h] = d;\n }\n case \"remove\":\n switch (l) {\n case 1:\n return f.splice(h, 1);\n case 2:\n return f.delete(h);\n case 3:\n return f.delete(t.value);\n default:\n return delete f[h];\n }\n default:\n n(17, u);\n }\n }), r;\n },\n N: function (n, r, t, e) {\n switch (n.i) {\n case 0:\n case 4:\n case 2:\n return function (n, r, t, e) {\n var o = n.t,\n s = n.o;\n i(n.R, function (n, i) {\n var v = a(o, n),\n p = a(s, n),\n l = i ? u(o, n) ? \"replace\" : c : \"remove\";\n if (v !== p || \"replace\" !== l) {\n var d = r.concat(n);\n t.push(\"remove\" === l ? {\n op: l,\n path: d\n } : {\n op: l,\n path: d,\n value: p\n }), e.push(l === c ? {\n op: \"remove\",\n path: d\n } : \"remove\" === l ? {\n op: c,\n path: d,\n value: f(v)\n } : {\n op: \"replace\",\n path: d,\n value: f(v)\n });\n }\n });\n }(n, r, t, e);\n case 5:\n case 1:\n return function (n, r, t, e) {\n var i = n.t,\n o = n.R,\n u = n.o;\n if (u.length < i.length) {\n var a = [u, i];\n i = a[0], u = a[1];\n var s = [e, t];\n t = s[0], e = s[1];\n }\n for (var v = 0; v < i.length; v++) if (o[v] && u[v] !== i[v]) {\n var p = r.concat([v]);\n t.push({\n op: \"replace\",\n path: p,\n value: f(u[v])\n }), e.push({\n op: \"replace\",\n path: p,\n value: f(i[v])\n });\n }\n for (var l = i.length; l < u.length; l++) {\n var d = r.concat([l]);\n t.push({\n op: c,\n path: d,\n value: f(u[l])\n });\n }\n i.length < u.length && e.push({\n op: \"replace\",\n path: r.concat([\"length\"]),\n value: i.length\n });\n }(n, r, t, e);\n case 3:\n return function (n, r, t, e) {\n var i = n.t,\n o = n.o,\n u = 0;\n i.forEach(function (n) {\n if (!o.has(n)) {\n var i = r.concat([u]);\n t.push({\n op: \"remove\",\n path: i,\n value: n\n }), e.unshift({\n op: c,\n path: i,\n value: n\n });\n }\n u++;\n }), u = 0, o.forEach(function (n) {\n if (!i.has(n)) {\n var o = r.concat([u]);\n t.push({\n op: c,\n path: o,\n value: n\n }), e.unshift({\n op: \"remove\",\n path: o,\n value: n\n });\n }\n u++;\n });\n }(n, r, t, e);\n }\n },\n M: function (n, r, t, e) {\n t.push({\n op: \"replace\",\n path: [],\n value: r === H ? void 0 : r\n }), e.push({\n op: \"replace\",\n path: [],\n value: n\n });\n }\n });\n}\nfunction C() {\n function r(n, r) {\n function t() {\n this.constructor = n;\n }\n a(n, r), n.prototype = (t.prototype = r.prototype, new t());\n }\n function e(n) {\n n.o || (n.R = new Map(), n.o = new Map(n.t));\n }\n function o(n) {\n n.o || (n.o = new Set(), n.t.forEach(function (r) {\n if (t(r)) {\n var e = N(n.A.h, r, n);\n n.p.set(r, e), n.o.add(e);\n } else n.o.add(r);\n }));\n }\n function u(r) {\n r.g && n(3, JSON.stringify(p(r)));\n }\n var a = function (n, r) {\n return (a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (n, r) {\n n.__proto__ = r;\n } || function (n, r) {\n for (var t in r) r.hasOwnProperty(t) && (n[t] = r[t]);\n })(n, r);\n },\n f = function () {\n function n(n, r) {\n return this[Q] = {\n i: 2,\n l: r,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n R: void 0,\n t: n,\n k: this,\n C: !1,\n g: !1\n }, this;\n }\n r(n, Map);\n var o = n.prototype;\n return Object.defineProperty(o, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), o.has = function (n) {\n return p(this[Q]).has(n);\n }, o.set = function (n, r) {\n var t = this[Q];\n return u(t), p(t).has(n) && p(t).get(n) === r || (e(t), k(t), t.R.set(n, !0), t.o.set(n, r), t.R.set(n, !0)), this;\n }, o.delete = function (n) {\n if (!this.has(n)) return !1;\n var r = this[Q];\n return u(r), e(r), k(r), r.t.has(n) ? r.R.set(n, !1) : r.R.delete(n), r.o.delete(n), !0;\n }, o.clear = function () {\n var n = this[Q];\n u(n), p(n).size && (e(n), k(n), n.R = new Map(), i(n.t, function (r) {\n n.R.set(r, !1);\n }), n.o.clear());\n }, o.forEach = function (n, r) {\n var t = this;\n p(this[Q]).forEach(function (e, i) {\n n.call(r, t.get(i), i, t);\n });\n }, o.get = function (n) {\n var r = this[Q];\n u(r);\n var i = p(r).get(n);\n if (r.I || !t(i)) return i;\n if (i !== r.t.get(n)) return i;\n var o = N(r.A.h, i, r);\n return e(r), r.o.set(n, o), o;\n }, o.keys = function () {\n return p(this[Q]).keys();\n }, o.values = function () {\n var n,\n r = this,\n t = this.keys();\n return (n = {})[V] = function () {\n return r.values();\n }, n.next = function () {\n var n = t.next();\n return n.done ? n : {\n done: !1,\n value: r.get(n.value)\n };\n }, n;\n }, o.entries = function () {\n var n,\n r = this,\n t = this.keys();\n return (n = {})[V] = function () {\n return r.entries();\n }, n.next = function () {\n var n = t.next();\n if (n.done) return n;\n var e = r.get(n.value);\n return {\n done: !1,\n value: [n.value, e]\n };\n }, n;\n }, o[V] = function () {\n return this.entries();\n }, n;\n }(),\n c = function () {\n function n(n, r) {\n return this[Q] = {\n i: 3,\n l: r,\n A: r ? r.A : _(),\n P: !1,\n I: !1,\n o: void 0,\n t: n,\n k: this,\n p: new Map(),\n g: !1,\n C: !1\n }, this;\n }\n r(n, Set);\n var t = n.prototype;\n return Object.defineProperty(t, \"size\", {\n get: function () {\n return p(this[Q]).size;\n }\n }), t.has = function (n) {\n var r = this[Q];\n return u(r), r.o ? !!r.o.has(n) || !(!r.p.has(n) || !r.o.has(r.p.get(n))) : r.t.has(n);\n }, t.add = function (n) {\n var r = this[Q];\n return u(r), this.has(n) || (o(r), k(r), r.o.add(n)), this;\n }, t.delete = function (n) {\n if (!this.has(n)) return !1;\n var r = this[Q];\n return u(r), o(r), k(r), r.o.delete(n) || !!r.p.has(n) && r.o.delete(r.p.get(n));\n }, t.clear = function () {\n var n = this[Q];\n u(n), p(n).size && (o(n), k(n), n.o.clear());\n }, t.values = function () {\n var n = this[Q];\n return u(n), o(n), n.o.values();\n }, t.entries = function () {\n var n = this[Q];\n return u(n), o(n), n.o.entries();\n }, t.keys = function () {\n return this.values();\n }, t[V] = function () {\n return this.values();\n }, t.forEach = function (n, r) {\n for (var t = this.values(), e = t.next(); !e.done;) n.call(r, e.value, e.value, this), e = t.next();\n }, n;\n }();\n m(\"MapSet\", {\n F: function (n, r) {\n return new f(n, r);\n },\n T: function (n, r) {\n return new c(n, r);\n }\n });\n}\nfunction J() {\n F(), C(), T();\n}\nfunction K(n) {\n return n;\n}\nfunction $(n) {\n return n;\n}\nvar G,\n U,\n W = \"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol(\"x\"),\n X = \"undefined\" != typeof Map,\n q = \"undefined\" != typeof Set,\n B = \"undefined\" != typeof Proxy && void 0 !== Proxy.revocable && \"undefined\" != typeof Reflect,\n H = W ? Symbol.for(\"immer-nothing\") : ((G = {})[\"immer-nothing\"] = !0, G),\n L = W ? Symbol.for(\"immer-draftable\") : \"__$immer_draftable\",\n Q = W ? Symbol.for(\"immer-state\") : \"__$immer_state\",\n V = \"undefined\" != typeof Symbol && Symbol.iterator || \"@@iterator\",\n Y = {\n 0: \"Illegal state\",\n 1: \"Immer drafts cannot have computed properties\",\n 2: \"This object has been frozen and should not be mutated\",\n 3: function (n) {\n return \"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" + n;\n },\n 4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n 5: \"Immer forbids circular references\",\n 6: \"The first or second argument to `produce` must be a function\",\n 7: \"The third argument to `produce` must be a function or undefined\",\n 8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n 9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n 10: \"The given draft is already finalized\",\n 11: \"Object.defineProperty() cannot be used on an Immer draft\",\n 12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n 13: \"Immer only supports deleting array indices\",\n 14: \"Immer only supports setting array indices and the 'length' property\",\n 15: function (n) {\n return \"Cannot apply patch, path doesn't resolve: \" + n;\n },\n 16: 'Sets cannot have \"replace\" patches.',\n 17: function (n) {\n return \"Unsupported patch operation: \" + n;\n },\n 18: function (n) {\n return \"The plugin for '\" + n + \"' has not been loaded into Immer. To enable the plugin, import and call `enable\" + n + \"()` when initializing your application.\";\n },\n 20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n 21: function (n) {\n return \"produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '\" + n + \"'\";\n },\n 22: function (n) {\n return \"'current' expects a draft, got: \" + n;\n },\n 23: function (n) {\n return \"'original' expects a draft, got: \" + n;\n },\n 24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n },\n Z = \"\" + Object.prototype.constructor,\n nn = \"undefined\" != typeof Reflect && Reflect.ownKeys ? Reflect.ownKeys : void 0 !== Object.getOwnPropertySymbols ? function (n) {\n return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n));\n } : Object.getOwnPropertyNames,\n rn = Object.getOwnPropertyDescriptors || function (n) {\n var r = {};\n return nn(n).forEach(function (t) {\n r[t] = Object.getOwnPropertyDescriptor(n, t);\n }), r;\n },\n tn = {},\n en = {\n get: function (n, r) {\n if (r === Q) return n;\n var e = p(n);\n if (!u(e, r)) return function (n, r, t) {\n var e,\n i = I(r, t);\n return i ? \"value\" in i ? i.value : null === (e = i.get) || void 0 === e ? void 0 : e.call(n.k) : void 0;\n }(n, e, r);\n var i = e[r];\n return n.I || !t(i) ? i : i === z(n.t, r) ? (E(n), n.o[r] = N(n.A.h, i, n)) : i;\n },\n has: function (n, r) {\n return r in p(n);\n },\n ownKeys: function (n) {\n return Reflect.ownKeys(p(n));\n },\n set: function (n, r, t) {\n var e = I(p(n), r);\n if (null == e ? void 0 : e.set) return e.set.call(n.k, t), !0;\n if (!n.P) {\n var i = z(p(n), r),\n o = null == i ? void 0 : i[Q];\n if (o && o.t === t) return n.o[r] = t, n.R[r] = !1, !0;\n if (c(t, i) && (void 0 !== t || u(n.t, r))) return !0;\n E(n), k(n);\n }\n return n.o[r] === t && (void 0 !== t || r in n.o) || Number.isNaN(t) && Number.isNaN(n.o[r]) || (n.o[r] = t, n.R[r] = !0), !0;\n },\n deleteProperty: function (n, r) {\n return void 0 !== z(n.t, r) || r in n.t ? (n.R[r] = !1, E(n), k(n)) : delete n.R[r], n.o && delete n.o[r], !0;\n },\n getOwnPropertyDescriptor: function (n, r) {\n var t = p(n),\n e = Reflect.getOwnPropertyDescriptor(t, r);\n return e ? {\n writable: !0,\n configurable: 1 !== n.i || \"length\" !== r,\n enumerable: e.enumerable,\n value: t[r]\n } : e;\n },\n defineProperty: function () {\n n(11);\n },\n getPrototypeOf: function (n) {\n return Object.getPrototypeOf(n.t);\n },\n setPrototypeOf: function () {\n n(12);\n }\n },\n on = {};\ni(en, function (n, r) {\n on[n] = function () {\n return arguments[0] = arguments[0][0], r.apply(this, arguments);\n };\n}), on.deleteProperty = function (r, t) {\n return \"production\" !== process.env.NODE_ENV && isNaN(parseInt(t)) && n(13), on.set.call(this, r, t, void 0);\n}, on.set = function (r, t, e) {\n return \"production\" !== process.env.NODE_ENV && \"length\" !== t && isNaN(parseInt(t)) && n(14), en.set.call(this, r[0], t, e, r[0]);\n};\nvar un = function () {\n function e(r) {\n var e = this;\n this.O = B, this.D = !0, this.produce = function (r, i, o) {\n if (\"function\" == typeof r && \"function\" != typeof i) {\n var u = i;\n i = r;\n var a = e;\n return function (n) {\n var r = this;\n void 0 === n && (n = u);\n for (var t = arguments.length, e = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) e[o - 1] = arguments[o];\n return a.produce(n, function (n) {\n var t;\n return (t = i).call.apply(t, [r, n].concat(e));\n });\n };\n }\n var f;\n if (\"function\" != typeof i && n(6), void 0 !== o && \"function\" != typeof o && n(7), t(r)) {\n var c = w(e),\n s = N(e, r, void 0),\n v = !0;\n try {\n f = i(s), v = !1;\n } finally {\n v ? g(c) : O(c);\n }\n return \"undefined\" != typeof Promise && f instanceof Promise ? f.then(function (n) {\n return j(c, o), P(n, c);\n }, function (n) {\n throw g(c), n;\n }) : (j(c, o), P(f, c));\n }\n if (!r || \"object\" != typeof r) {\n if (void 0 === (f = i(r)) && (f = r), f === H && (f = void 0), e.D && d(f, !0), o) {\n var p = [],\n l = [];\n b(\"Patches\").M(r, f, p, l), o(p, l);\n }\n return f;\n }\n n(21, r);\n }, this.produceWithPatches = function (n, r) {\n if (\"function\" == typeof n) return function (r) {\n for (var t = arguments.length, i = Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) i[o - 1] = arguments[o];\n return e.produceWithPatches(r, function (r) {\n return n.apply(void 0, [r].concat(i));\n });\n };\n var t,\n i,\n o = e.produce(n, r, function (n, r) {\n t = n, i = r;\n });\n return \"undefined\" != typeof Promise && o instanceof Promise ? o.then(function (n) {\n return [n, t, i];\n }) : [o, t, i];\n }, \"boolean\" == typeof (null == r ? void 0 : r.useProxies) && this.setUseProxies(r.useProxies), \"boolean\" == typeof (null == r ? void 0 : r.autoFreeze) && this.setAutoFreeze(r.autoFreeze);\n }\n var i = e.prototype;\n return i.createDraft = function (e) {\n t(e) || n(8), r(e) && (e = R(e));\n var i = w(this),\n o = N(this, e, void 0);\n return o[Q].C = !0, O(i), o;\n }, i.finishDraft = function (r, t) {\n var e = r && r[Q];\n \"production\" !== process.env.NODE_ENV && (e && e.C || n(9), e.I && n(10));\n var i = e.A;\n return j(i, t), P(void 0, i);\n }, i.setAutoFreeze = function (n) {\n this.D = n;\n }, i.setUseProxies = function (r) {\n r && !B && n(20), this.O = r;\n }, i.applyPatches = function (n, t) {\n var e;\n for (e = t.length - 1; e >= 0; e--) {\n var i = t[e];\n if (0 === i.path.length && \"replace\" === i.op) {\n n = i.value;\n break;\n }\n }\n e > -1 && (t = t.slice(e + 1));\n var o = b(\"Patches\").$;\n return r(n) ? o(n, t) : this.produce(n, function (n) {\n return o(n, t);\n });\n }, e;\n }(),\n an = new un(),\n fn = an.produce,\n cn = an.produceWithPatches.bind(an),\n sn = an.setAutoFreeze.bind(an),\n vn = an.setUseProxies.bind(an),\n pn = an.applyPatches.bind(an),\n ln = an.createDraft.bind(an),\n dn = an.finishDraft.bind(an);\nexport default fn;\nexport { un as Immer, pn as applyPatches, K as castDraft, $ as castImmutable, ln as createDraft, R as current, J as enableAllPlugins, F as enableES5, C as enableMapSet, T as enablePatches, dn as finishDraft, d as freeze, L as immerable, r as isDraft, t as isDraftable, H as nothing, e as original, fn as produce, cn as produceWithPatches, sn as setAutoFreeze, vn as setUseProxies };\n//# sourceMappingURL=immer.esm.js.map","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n return next(action);\n };\n };\n };\n return middleware;\n}\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __spreadArray = this && this.__spreadArray || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i];\n return to;\n};\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = function (obj, key, value) {\n return key in obj ? __defProp(obj, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n }) : obj[key] = value;\n};\nvar __spreadValues = function (a, b) {\n for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols) for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\n var prop = _c[_i];\n if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = function (a, b) {\n return __defProps(a, __getOwnPropDescs(b));\n};\nvar __async = function (__this, __arguments, generator) {\n return new Promise(function (resolve, reject) {\n var fulfilled = function (value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = function (value) {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = function (x) {\n return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n };\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\n// src/index.ts\nimport { enableES5 } from \"immer\";\nexport * from \"redux\";\nimport { default as default2, current as current2, freeze, original, isDraft as isDraft4 } from \"immer\";\nimport { createSelector as createSelector2 } from \"reselect\";\n// src/createDraftSafeSelector.ts\nimport { current, isDraft } from \"immer\";\nimport { createSelector } from \"reselect\";\nvar createDraftSafeSelector = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var selector = createSelector.apply(void 0, args);\n var wrappedSelector = function (value) {\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n return selector.apply(void 0, __spreadArray([isDraft(value) ? current(value) : value], rest));\n };\n return wrappedSelector;\n};\n// src/configureStore.ts\nimport { createStore, compose as compose2, applyMiddleware, combineReducers } from \"redux\";\n// src/devtoolsExtension.ts\nimport { compose } from \"redux\";\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\n if (arguments.length === 0) return void 0;\n if (typeof arguments[0] === \"object\") return compose;\n return compose.apply(null, arguments);\n};\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\n return function (noop2) {\n return noop2;\n };\n};\n// src/isPlainObject.ts\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null) return false;\n var proto = Object.getPrototypeOf(value);\n if (proto === null) return true;\n var baseProto = proto;\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto === baseProto;\n}\n// src/getDefaultMiddleware.ts\nimport thunkMiddleware from \"redux-thunk\";\n// src/tsHelpers.ts\nvar hasMatchFunction = function (v) {\n return v && typeof v.match === \"function\";\n};\n// src/createAction.ts\nfunction createAction(type, prepareAction) {\n function actionCreator() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (prepareAction) {\n var prepared = prepareAction.apply(void 0, args);\n if (!prepared) {\n throw new Error(\"prepareAction did not return an object\");\n }\n return __spreadValues(__spreadValues({\n type: type,\n payload: prepared.payload\n }, \"meta\" in prepared && {\n meta: prepared.meta\n }), \"error\" in prepared && {\n error: prepared.error\n });\n }\n return {\n type: type,\n payload: args[0]\n };\n }\n actionCreator.toString = function () {\n return \"\" + type;\n };\n actionCreator.type = type;\n actionCreator.match = function (action) {\n return action.type === type;\n };\n return actionCreator;\n}\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action;\n}\nfunction isActionCreator(action) {\n return typeof action === \"function\" && \"type\" in action && hasMatchFunction(action);\n}\nfunction isFSA(action) {\n return isAction(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\n}\nfunction isValidKey(key) {\n return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\n}\nfunction getType(actionCreator) {\n return \"\" + actionCreator;\n}\n// src/actionCreatorInvariantMiddleware.ts\nfunction getMessage(type) {\n var splitType = type ? (\"\" + type).split(\"/\") : [];\n var actionName = splitType[splitType.length - 1] || \"actionCreator\";\n return \"Detected an action creator with type \\\"\" + (type || \"unknown\") + \"\\\" being dispatched. \\nMake sure you're calling the action creator before dispatching, i.e. `dispatch(\" + actionName + \"())` instead of `dispatch(\" + actionName + \")`. This is necessary even if the action has no payload.\";\n}\nfunction createActionCreatorInvariantMiddleware(options) {\n if (options === void 0) {\n options = {};\n }\n if (process.env.NODE_ENV === \"production\") {\n return function () {\n return function (next) {\n return function (action) {\n return next(action);\n };\n };\n };\n }\n var _c = options.isActionCreator,\n isActionCreator2 = _c === void 0 ? isActionCreator : _c;\n return function () {\n return function (next) {\n return function (action) {\n if (isActionCreator2(action)) {\n console.warn(getMessage(action.type));\n }\n return next(action);\n };\n };\n };\n}\n// src/utils.ts\nimport createNextState, { isDraftable } from \"immer\";\nfunction getTimeMeasureUtils(maxDelay, fnName) {\n var elapsed = 0;\n return {\n measureTime: function (fn) {\n var started = Date.now();\n try {\n return fn();\n } finally {\n var finished = Date.now();\n elapsed += finished - started;\n }\n },\n warnIfExceeded: function () {\n if (elapsed > maxDelay) {\n console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\n }\n }\n };\n}\nvar MiddlewareArray = /** @class */function (_super) {\n __extends(MiddlewareArray, _super);\n function MiddlewareArray() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n Object.setPrototypeOf(_this, MiddlewareArray.prototype);\n return _this;\n }\n Object.defineProperty(MiddlewareArray, Symbol.species, {\n get: function () {\n return MiddlewareArray;\n },\n enumerable: false,\n configurable: true\n });\n MiddlewareArray.prototype.concat = function () {\n var arr = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arr[_i] = arguments[_i];\n }\n return _super.prototype.concat.apply(this, arr);\n };\n MiddlewareArray.prototype.prepend = function () {\n var arr = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arr[_i] = arguments[_i];\n }\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\n }\n return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\n };\n return MiddlewareArray;\n}(Array);\nvar EnhancerArray = /** @class */function (_super) {\n __extends(EnhancerArray, _super);\n function EnhancerArray() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, args) || this;\n Object.setPrototypeOf(_this, EnhancerArray.prototype);\n return _this;\n }\n Object.defineProperty(EnhancerArray, Symbol.species, {\n get: function () {\n return EnhancerArray;\n },\n enumerable: false,\n configurable: true\n });\n EnhancerArray.prototype.concat = function () {\n var arr = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arr[_i] = arguments[_i];\n }\n return _super.prototype.concat.apply(this, arr);\n };\n EnhancerArray.prototype.prepend = function () {\n var arr = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arr[_i] = arguments[_i];\n }\n if (arr.length === 1 && Array.isArray(arr[0])) {\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr[0].concat(this))))();\n }\n return new (EnhancerArray.bind.apply(EnhancerArray, __spreadArray([void 0], arr.concat(this))))();\n };\n return EnhancerArray;\n}(Array);\nfunction freezeDraftable(val) {\n return isDraftable(val) ? createNextState(val, function () {}) : val;\n}\n// src/immutableStateInvariantMiddleware.ts\nvar isProduction = process.env.NODE_ENV === \"production\";\nvar prefix = \"Invariant failed\";\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || \"\"));\n}\nfunction stringify(obj, serializer, indent, decycler) {\n return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\n}\nfunction getSerialize(serializer, decycler) {\n var stack = [],\n keys = [];\n if (!decycler) decycler = function (_, value) {\n if (stack[0] === value) return \"[Circular ~]\";\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\n };\n return function (key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this);\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n if (~stack.indexOf(value)) value = decycler.call(this, key, value);\n } else stack.push(value);\n return serializer == null ? value : serializer.call(this, key, value);\n };\n}\nfunction isImmutableDefault(value) {\n return typeof value !== \"object\" || value == null || Object.isFrozen(value);\n}\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\n var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\n return {\n detectMutations: function () {\n return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\n }\n };\n}\nfunction trackProperties(isImmutable, ignorePaths, obj, path, checkedObjects) {\n if (ignorePaths === void 0) {\n ignorePaths = [];\n }\n if (path === void 0) {\n path = \"\";\n }\n if (checkedObjects === void 0) {\n checkedObjects = new Set();\n }\n var tracked = {\n value: obj\n };\n if (!isImmutable(obj) && !checkedObjects.has(obj)) {\n checkedObjects.add(obj);\n tracked.children = {};\n for (var key in obj) {\n var childPath = path ? path + \".\" + key : key;\n if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\n continue;\n }\n tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\n }\n }\n return tracked;\n}\nfunction detectMutations(isImmutable, ignoredPaths, trackedProperty, obj, sameParentRef, path) {\n if (ignoredPaths === void 0) {\n ignoredPaths = [];\n }\n if (sameParentRef === void 0) {\n sameParentRef = false;\n }\n if (path === void 0) {\n path = \"\";\n }\n var prevObj = trackedProperty ? trackedProperty.value : void 0;\n var sameRef = prevObj === obj;\n if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\n return {\n wasMutated: true,\n path: path\n };\n }\n if (isImmutable(prevObj) || isImmutable(obj)) {\n return {\n wasMutated: false\n };\n }\n var keysToDetect = {};\n for (var key in trackedProperty.children) {\n keysToDetect[key] = true;\n }\n for (var key in obj) {\n keysToDetect[key] = true;\n }\n var hasIgnoredPaths = ignoredPaths.length > 0;\n var _loop_1 = function (key) {\n var nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n var hasMatches = ignoredPaths.some(function (ignored) {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n return \"continue\";\n }\n }\n var result = detectMutations(isImmutable, ignoredPaths, trackedProperty.children[key], obj[key], sameRef, nestedPath);\n if (result.wasMutated) {\n return {\n value: result\n };\n }\n };\n for (var key in keysToDetect) {\n var state_1 = _loop_1(key);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n return {\n wasMutated: false\n };\n}\nfunction createImmutableStateInvariantMiddleware(options) {\n if (options === void 0) {\n options = {};\n }\n if (process.env.NODE_ENV === \"production\") {\n return function () {\n return function (next) {\n return function (action) {\n return next(action);\n };\n };\n };\n }\n var _c = options.isImmutable,\n isImmutable = _c === void 0 ? isImmutableDefault : _c,\n ignoredPaths = options.ignoredPaths,\n _d = options.warnAfter,\n warnAfter = _d === void 0 ? 32 : _d,\n ignore = options.ignore;\n ignoredPaths = ignoredPaths || ignore;\n var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\n return function (_c) {\n var getState = _c.getState;\n var state = getState();\n var tracker = track(state);\n var result;\n return function (next) {\n return function (action) {\n var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\n measureUtils.measureTime(function () {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\n });\n var dispatchedAction = next(action);\n measureUtils.measureTime(function () {\n state = getState();\n result = tracker.detectMutations();\n tracker = track(state);\n result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\n });\n measureUtils.warnIfExceeded();\n return dispatchedAction;\n };\n };\n };\n}\n// src/serializableStateInvariantMiddleware.ts\nfunction isPlain(val) {\n var type = typeof val;\n return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\n}\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths, cache) {\n if (path === void 0) {\n path = \"\";\n }\n if (isSerializable === void 0) {\n isSerializable = isPlain;\n }\n if (ignoredPaths === void 0) {\n ignoredPaths = [];\n }\n var foundNestedSerializable;\n if (!isSerializable(value)) {\n return {\n keyPath: path || \"<root>\",\n value: value\n };\n }\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (cache == null ? void 0 : cache.has(value)) return false;\n var entries = getEntries != null ? getEntries(value) : Object.entries(value);\n var hasIgnoredPaths = ignoredPaths.length > 0;\n var _loop_2 = function (key, nestedValue) {\n var nestedPath = path ? path + \".\" + key : key;\n if (hasIgnoredPaths) {\n var hasMatches = ignoredPaths.some(function (ignored) {\n if (ignored instanceof RegExp) {\n return ignored.test(nestedPath);\n }\n return nestedPath === ignored;\n });\n if (hasMatches) {\n return \"continue\";\n }\n }\n if (!isSerializable(nestedValue)) {\n return {\n value: {\n keyPath: nestedPath,\n value: nestedValue\n }\n };\n }\n if (typeof nestedValue === \"object\") {\n foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths, cache);\n if (foundNestedSerializable) {\n return {\n value: foundNestedSerializable\n };\n }\n }\n };\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _c = entries_1[_i],\n key = _c[0],\n nestedValue = _c[1];\n var state_2 = _loop_2(key, nestedValue);\n if (typeof state_2 === \"object\") return state_2.value;\n }\n if (cache && isNestedFrozen(value)) cache.add(value);\n return false;\n}\nfunction isNestedFrozen(value) {\n if (!Object.isFrozen(value)) return false;\n for (var _i = 0, _c = Object.values(value); _i < _c.length; _i++) {\n var nestedValue = _c[_i];\n if (typeof nestedValue !== \"object\" || nestedValue === null) continue;\n if (!isNestedFrozen(nestedValue)) return false;\n }\n return true;\n}\nfunction createSerializableStateInvariantMiddleware(options) {\n if (options === void 0) {\n options = {};\n }\n if (process.env.NODE_ENV === \"production\") {\n return function () {\n return function (next) {\n return function (action) {\n return next(action);\n };\n };\n };\n }\n var _c = options.isSerializable,\n isSerializable = _c === void 0 ? isPlain : _c,\n getEntries = options.getEntries,\n _d = options.ignoredActions,\n ignoredActions = _d === void 0 ? [] : _d,\n _e = options.ignoredActionPaths,\n ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e,\n _f = options.ignoredPaths,\n ignoredPaths = _f === void 0 ? [] : _f,\n _g = options.warnAfter,\n warnAfter = _g === void 0 ? 32 : _g,\n _h = options.ignoreState,\n ignoreState = _h === void 0 ? false : _h,\n _j = options.ignoreActions,\n ignoreActions = _j === void 0 ? false : _j,\n _k = options.disableCache,\n disableCache = _k === void 0 ? false : _k;\n var cache = !disableCache && WeakSet ? new WeakSet() : void 0;\n return function (storeAPI) {\n return function (next) {\n return function (action) {\n var result = next(action);\n var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\n if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\n measureUtils.measureTime(function () {\n var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths, cache);\n if (foundActionNonSerializableValue) {\n var keyPath = foundActionNonSerializableValue.keyPath,\n value = foundActionNonSerializableValue.value;\n console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\n }\n });\n }\n if (!ignoreState) {\n measureUtils.measureTime(function () {\n var state = storeAPI.getState();\n var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths, cache);\n if (foundStateNonSerializableValue) {\n var keyPath = foundStateNonSerializableValue.keyPath,\n value = foundStateNonSerializableValue.value;\n console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\n }\n });\n measureUtils.warnIfExceeded();\n }\n return result;\n };\n };\n };\n}\n// src/getDefaultMiddleware.ts\nfunction isBoolean(x) {\n return typeof x === \"boolean\";\n}\nfunction curryGetDefaultMiddleware() {\n return function curriedGetDefaultMiddleware(options) {\n return getDefaultMiddleware(options);\n };\n}\nfunction getDefaultMiddleware(options) {\n if (options === void 0) {\n options = {};\n }\n var _c = options.thunk,\n thunk = _c === void 0 ? true : _c,\n _d = options.immutableCheck,\n immutableCheck = _d === void 0 ? true : _d,\n _e = options.serializableCheck,\n serializableCheck = _e === void 0 ? true : _e,\n _f = options.actionCreatorCheck,\n actionCreatorCheck = _f === void 0 ? true : _f;\n var middlewareArray = new MiddlewareArray();\n if (thunk) {\n if (isBoolean(thunk)) {\n middlewareArray.push(thunkMiddleware);\n } else {\n middlewareArray.push(thunkMiddleware.withExtraArgument(thunk.extraArgument));\n }\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (immutableCheck) {\n var immutableOptions = {};\n if (!isBoolean(immutableCheck)) {\n immutableOptions = immutableCheck;\n }\n middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\n }\n if (serializableCheck) {\n var serializableOptions = {};\n if (!isBoolean(serializableCheck)) {\n serializableOptions = serializableCheck;\n }\n middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\n }\n if (actionCreatorCheck) {\n var actionCreatorOptions = {};\n if (!isBoolean(actionCreatorCheck)) {\n actionCreatorOptions = actionCreatorCheck;\n }\n middlewareArray.unshift(createActionCreatorInvariantMiddleware(actionCreatorOptions));\n }\n }\n return middlewareArray;\n}\n// src/configureStore.ts\nvar IS_PRODUCTION = process.env.NODE_ENV === \"production\";\nfunction configureStore(options) {\n var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\n var _c = options || {},\n _d = _c.reducer,\n reducer = _d === void 0 ? void 0 : _d,\n _e = _c.middleware,\n middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e,\n _f = _c.devTools,\n devTools = _f === void 0 ? true : _f,\n _g = _c.preloadedState,\n preloadedState = _g === void 0 ? void 0 : _g,\n _h = _c.enhancers,\n enhancers = _h === void 0 ? void 0 : _h;\n var rootReducer;\n if (typeof reducer === \"function\") {\n rootReducer = reducer;\n } else if (isPlainObject(reducer)) {\n rootReducer = combineReducers(reducer);\n } else {\n throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\n }\n var finalMiddleware = middleware;\n if (typeof finalMiddleware === \"function\") {\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\n throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\n }\n }\n if (!IS_PRODUCTION && finalMiddleware.some(function (item) {\n return typeof item !== \"function\";\n })) {\n throw new Error(\"each middleware provided to configureStore must be a function\");\n }\n var middlewareEnhancer = applyMiddleware.apply(void 0, finalMiddleware);\n var finalCompose = compose2;\n if (devTools) {\n finalCompose = composeWithDevTools(__spreadValues({\n trace: !IS_PRODUCTION\n }, typeof devTools === \"object\" && devTools));\n }\n var defaultEnhancers = new EnhancerArray(middlewareEnhancer);\n var storeEnhancers = defaultEnhancers;\n if (Array.isArray(enhancers)) {\n storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\n } else if (typeof enhancers === \"function\") {\n storeEnhancers = enhancers(defaultEnhancers);\n }\n var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\n return createStore(rootReducer, preloadedState, composedEnhancer);\n}\n// src/createReducer.ts\nimport createNextState2, { isDraft as isDraft2, isDraftable as isDraftable2 } from \"immer\";\n// src/mapBuilders.ts\nfunction executeReducerBuilderCallback(builderCallback) {\n var actionsMap = {};\n var actionMatchers = [];\n var defaultCaseReducer;\n var builder = {\n addCase: function (typeOrActionCreator, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (actionMatchers.length > 0) {\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\n }\n if (defaultCaseReducer) {\n throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\n if (!type) {\n throw new Error(\"`builder.addCase` cannot be called with an empty action type\");\n }\n if (type in actionsMap) {\n throw new Error(\"`builder.addCase` cannot be called with two reducers for the same action type\");\n }\n actionsMap[type] = reducer;\n return builder;\n },\n addMatcher: function (matcher, reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\n }\n }\n actionMatchers.push({\n matcher: matcher,\n reducer: reducer\n });\n return builder;\n },\n addDefaultCase: function (reducer) {\n if (process.env.NODE_ENV !== \"production\") {\n if (defaultCaseReducer) {\n throw new Error(\"`builder.addDefaultCase` can only be called once\");\n }\n }\n defaultCaseReducer = reducer;\n return builder;\n }\n };\n builderCallback(builder);\n return [actionsMap, actionMatchers, defaultCaseReducer];\n}\n// src/createReducer.ts\nfunction isStateFunction(x) {\n return typeof x === \"function\";\n}\nvar hasWarnedAboutObjectNotation = false;\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\n if (actionMatchers === void 0) {\n actionMatchers = [];\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof mapOrBuilderCallback === \"object\") {\n if (!hasWarnedAboutObjectNotation) {\n hasWarnedAboutObjectNotation = true;\n console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\n }\n }\n }\n var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer],\n actionsMap = _c[0],\n finalActionMatchers = _c[1],\n finalDefaultCaseReducer = _c[2];\n var getInitialState;\n if (isStateFunction(initialState)) {\n getInitialState = function () {\n return freezeDraftable(initialState());\n };\n } else {\n var frozenInitialState_1 = freezeDraftable(initialState);\n getInitialState = function () {\n return frozenInitialState_1;\n };\n }\n function reducer(state, action) {\n if (state === void 0) {\n state = getInitialState();\n }\n var caseReducers = __spreadArray([actionsMap[action.type]], finalActionMatchers.filter(function (_c) {\n var matcher = _c.matcher;\n return matcher(action);\n }).map(function (_c) {\n var reducer2 = _c.reducer;\n return reducer2;\n }));\n if (caseReducers.filter(function (cr) {\n return !!cr;\n }).length === 0) {\n caseReducers = [finalDefaultCaseReducer];\n }\n return caseReducers.reduce(function (previousState, caseReducer) {\n if (caseReducer) {\n if (isDraft2(previousState)) {\n var draft = previousState;\n var result = caseReducer(draft, action);\n if (result === void 0) {\n return previousState;\n }\n return result;\n } else if (!isDraftable2(previousState)) {\n var result = caseReducer(previousState, action);\n if (result === void 0) {\n if (previousState === null) {\n return previousState;\n }\n throw Error(\"A case reducer on a non-draftable value must not return undefined\");\n }\n return result;\n } else {\n return createNextState2(previousState, function (draft) {\n return caseReducer(draft, action);\n });\n }\n }\n return previousState;\n }, state);\n }\n reducer.getInitialState = getInitialState;\n return reducer;\n}\n// src/createSlice.ts\nvar hasWarnedAboutObjectNotation2 = false;\nfunction getType2(slice, actionKey) {\n return slice + \"/\" + actionKey;\n}\nfunction createSlice(options) {\n var name = options.name;\n if (!name) {\n throw new Error(\"`name` is a required option for createSlice\");\n }\n if (typeof process !== \"undefined\" && process.env.NODE_ENV === \"development\") {\n if (options.initialState === void 0) {\n console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\n }\n }\n var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\n var reducers = options.reducers || {};\n var reducerNames = Object.keys(reducers);\n var sliceCaseReducersByName = {};\n var sliceCaseReducersByType = {};\n var actionCreators = {};\n reducerNames.forEach(function (reducerName) {\n var maybeReducerWithPrepare = reducers[reducerName];\n var type = getType2(name, reducerName);\n var caseReducer;\n var prepareCallback;\n if (\"reducer\" in maybeReducerWithPrepare) {\n caseReducer = maybeReducerWithPrepare.reducer;\n prepareCallback = maybeReducerWithPrepare.prepare;\n } else {\n caseReducer = maybeReducerWithPrepare;\n }\n sliceCaseReducersByName[reducerName] = caseReducer;\n sliceCaseReducersByType[type] = caseReducer;\n actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\n });\n function buildReducer() {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options.extraReducers === \"object\") {\n if (!hasWarnedAboutObjectNotation2) {\n hasWarnedAboutObjectNotation2 = true;\n console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\n }\n }\n }\n var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers],\n _d = _c[0],\n extraReducers = _d === void 0 ? {} : _d,\n _e = _c[1],\n actionMatchers = _e === void 0 ? [] : _e,\n _f = _c[2],\n defaultCaseReducer = _f === void 0 ? void 0 : _f;\n var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\n return createReducer(initialState, function (builder) {\n for (var key in finalCaseReducers) {\n builder.addCase(key, finalCaseReducers[key]);\n }\n for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\n var m = actionMatchers_1[_i];\n builder.addMatcher(m.matcher, m.reducer);\n }\n if (defaultCaseReducer) {\n builder.addDefaultCase(defaultCaseReducer);\n }\n });\n }\n var _reducer;\n return {\n name: name,\n reducer: function (state, action) {\n if (!_reducer) _reducer = buildReducer();\n return _reducer(state, action);\n },\n actions: actionCreators,\n caseReducers: sliceCaseReducersByName,\n getInitialState: function () {\n if (!_reducer) _reducer = buildReducer();\n return _reducer.getInitialState();\n }\n };\n}\n// src/entities/entity_state.ts\nfunction getInitialEntityState() {\n return {\n ids: [],\n entities: {}\n };\n}\nfunction createInitialStateFactory() {\n function getInitialState(additionalState) {\n if (additionalState === void 0) {\n additionalState = {};\n }\n return Object.assign(getInitialEntityState(), additionalState);\n }\n return {\n getInitialState: getInitialState\n };\n}\n// src/entities/state_selectors.ts\nfunction createSelectorsFactory() {\n function getSelectors(selectState) {\n var selectIds = function (state) {\n return state.ids;\n };\n var selectEntities = function (state) {\n return state.entities;\n };\n var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) {\n return ids.map(function (id) {\n return entities[id];\n });\n });\n var selectId = function (_, id) {\n return id;\n };\n var selectById = function (entities, id) {\n return entities[id];\n };\n var selectTotal = createDraftSafeSelector(selectIds, function (ids) {\n return ids.length;\n });\n if (!selectState) {\n return {\n selectIds: selectIds,\n selectEntities: selectEntities,\n selectAll: selectAll,\n selectTotal: selectTotal,\n selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\n };\n }\n var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\n return {\n selectIds: createDraftSafeSelector(selectState, selectIds),\n selectEntities: selectGlobalizedEntities,\n selectAll: createDraftSafeSelector(selectState, selectAll),\n selectTotal: createDraftSafeSelector(selectState, selectTotal),\n selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\n };\n }\n return {\n getSelectors: getSelectors\n };\n}\n// src/entities/state_adapter.ts\nimport createNextState3, { isDraft as isDraft3 } from \"immer\";\nfunction createSingleArgumentStateOperator(mutator) {\n var operator = createStateOperator(function (_, state) {\n return mutator(state);\n });\n return function operation(state) {\n return operator(state, void 0);\n };\n}\nfunction createStateOperator(mutator) {\n return function operation(state, arg) {\n function isPayloadActionArgument(arg2) {\n return isFSA(arg2);\n }\n var runMutator = function (draft) {\n if (isPayloadActionArgument(arg)) {\n mutator(arg.payload, draft);\n } else {\n mutator(arg, draft);\n }\n };\n if (isDraft3(state)) {\n runMutator(state);\n return state;\n } else {\n return createNextState3(state, runMutator);\n }\n };\n}\n// src/entities/utils.ts\nfunction selectIdValue(entity, selectId) {\n var key = selectId(entity);\n if (process.env.NODE_ENV !== \"production\" && key === void 0) {\n console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\n }\n return key;\n}\nfunction ensureEntitiesArray(entities) {\n if (!Array.isArray(entities)) {\n entities = Object.values(entities);\n }\n return entities;\n}\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\n newEntities = ensureEntitiesArray(newEntities);\n var added = [];\n var updated = [];\n for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\n var entity = newEntities_1[_i];\n var id = selectIdValue(entity, selectId);\n if (id in state.entities) {\n updated.push({\n id: id,\n changes: entity\n });\n } else {\n added.push(entity);\n }\n }\n return [added, updated];\n}\n// src/entities/unsorted_state_adapter.ts\nfunction createUnsortedStateAdapter(selectId) {\n function addOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (key in state.entities) {\n return;\n }\n state.ids.push(key);\n state.entities[key] = entity;\n }\n function addManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\n var entity = newEntities_2[_i];\n addOneMutably(entity, state);\n }\n }\n function setOneMutably(entity, state) {\n var key = selectIdValue(entity, selectId);\n if (!(key in state.entities)) {\n state.ids.push(key);\n }\n state.entities[key] = entity;\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\n var entity = newEntities_3[_i];\n setOneMutably(entity, state);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.ids = [];\n state.entities = {};\n addManyMutably(newEntities, state);\n }\n function removeOneMutably(key, state) {\n return removeManyMutably([key], state);\n }\n function removeManyMutably(keys, state) {\n var didMutate = false;\n keys.forEach(function (key) {\n if (key in state.entities) {\n delete state.entities[key];\n didMutate = true;\n }\n });\n if (didMutate) {\n state.ids = state.ids.filter(function (id) {\n return id in state.entities;\n });\n }\n }\n function removeAllMutably(state) {\n Object.assign(state, {\n ids: [],\n entities: {}\n });\n }\n function takeNewKey(keys, update, state) {\n var original2 = state.entities[update.id];\n var updated = Object.assign({}, original2, update.changes);\n var newKey = selectIdValue(updated, selectId);\n var hasNewKey = newKey !== update.id;\n if (hasNewKey) {\n keys[update.id] = newKey;\n delete state.entities[update.id];\n }\n state.entities[newKey] = updated;\n return hasNewKey;\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n var newKeys = {};\n var updatesPerEntity = {};\n updates.forEach(function (update) {\n if (update.id in state.entities) {\n updatesPerEntity[update.id] = {\n id: update.id,\n changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\n };\n }\n });\n updates = Object.values(updatesPerEntity);\n var didMutateEntities = updates.length > 0;\n if (didMutateEntities) {\n var didMutateIds = updates.filter(function (update) {\n return takeNewKey(newKeys, update, state);\n }).length > 0;\n if (didMutateIds) {\n state.ids = Object.keys(state.entities);\n }\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state),\n added = _c[0],\n updated = _c[1];\n updateManyMutably(updated, state);\n addManyMutably(added, state);\n }\n return {\n removeAll: createSingleArgumentStateOperator(removeAllMutably),\n addOne: createStateOperator(addOneMutably),\n addMany: createStateOperator(addManyMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n updateOne: createStateOperator(updateOneMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n upsertMany: createStateOperator(upsertManyMutably),\n removeOne: createStateOperator(removeOneMutably),\n removeMany: createStateOperator(removeManyMutably)\n };\n}\n// src/entities/sorted_state_adapter.ts\nfunction createSortedStateAdapter(selectId, sort) {\n var _c = createUnsortedStateAdapter(selectId),\n removeOne = _c.removeOne,\n removeMany = _c.removeMany,\n removeAll = _c.removeAll;\n function addOneMutably(entity, state) {\n return addManyMutably([entity], state);\n }\n function addManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n var models = newEntities.filter(function (model) {\n return !(selectIdValue(model, selectId) in state.entities);\n });\n if (models.length !== 0) {\n merge(models, state);\n }\n }\n function setOneMutably(entity, state) {\n return setManyMutably([entity], state);\n }\n function setManyMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n if (newEntities.length !== 0) {\n merge(newEntities, state);\n }\n }\n function setAllMutably(newEntities, state) {\n newEntities = ensureEntitiesArray(newEntities);\n state.entities = {};\n state.ids = [];\n addManyMutably(newEntities, state);\n }\n function updateOneMutably(update, state) {\n return updateManyMutably([update], state);\n }\n function updateManyMutably(updates, state) {\n var appliedUpdates = false;\n for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\n var update = updates_1[_i];\n var entity = state.entities[update.id];\n if (!entity) {\n continue;\n }\n appliedUpdates = true;\n Object.assign(entity, update.changes);\n var newId = selectId(entity);\n if (update.id !== newId) {\n delete state.entities[update.id];\n state.entities[newId] = entity;\n }\n }\n if (appliedUpdates) {\n resortEntities(state);\n }\n }\n function upsertOneMutably(entity, state) {\n return upsertManyMutably([entity], state);\n }\n function upsertManyMutably(newEntities, state) {\n var _c = splitAddedUpdatedEntities(newEntities, selectId, state),\n added = _c[0],\n updated = _c[1];\n updateManyMutably(updated, state);\n addManyMutably(added, state);\n }\n function areArraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length && i < b.length; i++) {\n if (a[i] === b[i]) {\n continue;\n }\n return false;\n }\n return true;\n }\n function merge(models, state) {\n models.forEach(function (model) {\n state.entities[selectId(model)] = model;\n });\n resortEntities(state);\n }\n function resortEntities(state) {\n var allEntities = Object.values(state.entities);\n allEntities.sort(sort);\n var newSortedIds = allEntities.map(selectId);\n var ids = state.ids;\n if (!areArraysEqual(ids, newSortedIds)) {\n state.ids = newSortedIds;\n }\n }\n return {\n removeOne: removeOne,\n removeMany: removeMany,\n removeAll: removeAll,\n addOne: createStateOperator(addOneMutably),\n updateOne: createStateOperator(updateOneMutably),\n upsertOne: createStateOperator(upsertOneMutably),\n setOne: createStateOperator(setOneMutably),\n setMany: createStateOperator(setManyMutably),\n setAll: createStateOperator(setAllMutably),\n addMany: createStateOperator(addManyMutably),\n updateMany: createStateOperator(updateManyMutably),\n upsertMany: createStateOperator(upsertManyMutably)\n };\n}\n// src/entities/create_adapter.ts\nfunction createEntityAdapter(options) {\n if (options === void 0) {\n options = {};\n }\n var _c = __spreadValues({\n sortComparer: false,\n selectId: function (instance) {\n return instance.id;\n }\n }, options),\n selectId = _c.selectId,\n sortComparer = _c.sortComparer;\n var stateFactory = createInitialStateFactory();\n var selectorsFactory = createSelectorsFactory();\n var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\n return __spreadValues(__spreadValues(__spreadValues({\n selectId: selectId,\n sortComparer: sortComparer\n }, stateFactory), selectorsFactory), stateAdapter);\n}\n// src/nanoid.ts\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\nvar nanoid = function (size) {\n if (size === void 0) {\n size = 21;\n }\n var id = \"\";\n var i = size;\n while (i--) {\n id += urlAlphabet[Math.random() * 64 | 0];\n }\n return id;\n};\n// src/createAsyncThunk.ts\nvar commonProperties = [\"name\", \"message\", \"stack\", \"code\"];\nvar RejectWithValue = /** @class */function () {\n function RejectWithValue(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n return RejectWithValue;\n}();\nvar FulfillWithMeta = /** @class */function () {\n function FulfillWithMeta(payload, meta) {\n this.payload = payload;\n this.meta = meta;\n }\n return FulfillWithMeta;\n}();\nvar miniSerializeError = function (value) {\n if (typeof value === \"object\" && value !== null) {\n var simpleError = {};\n for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\n var property = commonProperties_1[_i];\n if (typeof value[property] === \"string\") {\n simpleError[property] = value[property];\n }\n }\n return simpleError;\n }\n return {\n message: String(value)\n };\n};\nvar createAsyncThunk = function () {\n function createAsyncThunk2(typePrefix, payloadCreator, options) {\n var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) {\n return {\n payload: payload,\n meta: __spreadProps(__spreadValues({}, meta || {}), {\n arg: arg,\n requestId: requestId,\n requestStatus: \"fulfilled\"\n })\n };\n });\n var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) {\n return {\n payload: void 0,\n meta: __spreadProps(__spreadValues({}, meta || {}), {\n arg: arg,\n requestId: requestId,\n requestStatus: \"pending\"\n })\n };\n });\n var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) {\n return {\n payload: payload,\n error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\n meta: __spreadProps(__spreadValues({}, meta || {}), {\n arg: arg,\n requestId: requestId,\n rejectedWithValue: !!payload,\n requestStatus: \"rejected\",\n aborted: (error == null ? void 0 : error.name) === \"AbortError\",\n condition: (error == null ? void 0 : error.name) === \"ConditionError\"\n })\n };\n });\n var displayedWarning = false;\n var AC = typeof AbortController !== \"undefined\" ? AbortController : ( /** @class */function () {\n function class_1() {\n this.signal = {\n aborted: false,\n addEventListener: function () {},\n dispatchEvent: function () {\n return false;\n },\n onabort: function () {},\n removeEventListener: function () {},\n reason: void 0,\n throwIfAborted: function () {}\n };\n }\n class_1.prototype.abort = function () {\n if (process.env.NODE_ENV !== \"production\") {\n if (!displayedWarning) {\n displayedWarning = true;\n console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\n }\n }\n };\n return class_1;\n }());\n function actionCreator(arg) {\n return function (dispatch, getState, extra) {\n var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\n var abortController = new AC();\n var abortReason;\n var started = false;\n function abort(reason) {\n abortReason = reason;\n abortController.abort();\n }\n var promise2 = function () {\n return __async(this, null, function () {\n var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 4,, 5]);\n conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, {\n getState: getState,\n extra: extra\n });\n if (!isThenable(conditionResult)) return [3 /*break*/, 2];\n return [4 /*yield*/, conditionResult];\n case 1:\n conditionResult = _c.sent();\n _c.label = 2;\n case 2:\n if (conditionResult === false || abortController.signal.aborted) {\n throw {\n name: \"ConditionError\",\n message: \"Aborted due to condition callback returning false.\"\n };\n }\n started = true;\n abortedPromise = new Promise(function (_, reject) {\n return abortController.signal.addEventListener(\"abort\", function () {\n return reject({\n name: \"AbortError\",\n message: abortReason || \"Aborted\"\n });\n });\n });\n dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, {\n requestId: requestId,\n arg: arg\n }, {\n getState: getState,\n extra: extra\n })));\n return [4 /*yield*/, Promise.race([abortedPromise, Promise.resolve(payloadCreator(arg, {\n dispatch: dispatch,\n getState: getState,\n extra: extra,\n requestId: requestId,\n signal: abortController.signal,\n abort: abort,\n rejectWithValue: function (value, meta) {\n return new RejectWithValue(value, meta);\n },\n fulfillWithValue: function (value, meta) {\n return new FulfillWithMeta(value, meta);\n }\n })).then(function (result) {\n if (result instanceof RejectWithValue) {\n throw result;\n }\n if (result instanceof FulfillWithMeta) {\n return fulfilled(result.payload, requestId, arg, result.meta);\n }\n return fulfilled(result, requestId, arg);\n })])];\n case 3:\n finalAction = _c.sent();\n return [3 /*break*/, 5];\n case 4:\n err_1 = _c.sent();\n finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\n return [3 /*break*/, 5];\n case 5:\n skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\n if (!skipDispatch) {\n dispatch(finalAction);\n }\n return [2 /*return*/, finalAction];\n }\n });\n });\n }();\n return Object.assign(promise2, {\n abort: abort,\n requestId: requestId,\n arg: arg,\n unwrap: function () {\n return promise2.then(unwrapResult);\n }\n });\n };\n }\n return Object.assign(actionCreator, {\n pending: pending,\n rejected: rejected,\n fulfilled: fulfilled,\n typePrefix: typePrefix\n });\n }\n createAsyncThunk2.withTypes = function () {\n return createAsyncThunk2;\n };\n return createAsyncThunk2;\n}();\nfunction unwrapResult(action) {\n if (action.meta && action.meta.rejectedWithValue) {\n throw action.payload;\n }\n if (action.error) {\n throw action.error;\n }\n return action.payload;\n}\nfunction isThenable(value) {\n return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\n}\n// src/matchers.ts\nvar matches = function (matcher, action) {\n if (hasMatchFunction(matcher)) {\n return matcher.match(action);\n } else {\n return matcher(action);\n }\n};\nfunction isAnyOf() {\n var matchers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n matchers[_i] = arguments[_i];\n }\n return function (action) {\n return matchers.some(function (matcher) {\n return matches(matcher, action);\n });\n };\n}\nfunction isAllOf() {\n var matchers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n matchers[_i] = arguments[_i];\n }\n return function (action) {\n return matchers.every(function (matcher) {\n return matches(matcher, action);\n });\n };\n}\nfunction hasExpectedRequestMetadata(action, validStatus) {\n if (!action || !action.meta) return false;\n var hasValidRequestId = typeof action.meta.requestId === \"string\";\n var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\n return hasValidRequestId && hasValidRequestStatus;\n}\nfunction isAsyncThunkArray(a) {\n return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\n}\nfunction isPending() {\n var asyncThunks = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n asyncThunks[_i] = arguments[_i];\n }\n if (asyncThunks.length === 0) {\n return function (action) {\n return hasExpectedRequestMetadata(action, [\"pending\"]);\n };\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isPending()(asyncThunks[0]);\n }\n return function (action) {\n var matchers = asyncThunks.map(function (asyncThunk) {\n return asyncThunk.pending;\n });\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\n return combinedMatcher(action);\n };\n}\nfunction isRejected() {\n var asyncThunks = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n asyncThunks[_i] = arguments[_i];\n }\n if (asyncThunks.length === 0) {\n return function (action) {\n return hasExpectedRequestMetadata(action, [\"rejected\"]);\n };\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejected()(asyncThunks[0]);\n }\n return function (action) {\n var matchers = asyncThunks.map(function (asyncThunk) {\n return asyncThunk.rejected;\n });\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\n return combinedMatcher(action);\n };\n}\nfunction isRejectedWithValue() {\n var asyncThunks = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n asyncThunks[_i] = arguments[_i];\n }\n var hasFlag = function (action) {\n return action && action.meta && action.meta.rejectedWithValue;\n };\n if (asyncThunks.length === 0) {\n return function (action) {\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\n return combinedMatcher(action);\n };\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isRejectedWithValue()(asyncThunks[0]);\n }\n return function (action) {\n var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\n return combinedMatcher(action);\n };\n}\nfunction isFulfilled() {\n var asyncThunks = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n asyncThunks[_i] = arguments[_i];\n }\n if (asyncThunks.length === 0) {\n return function (action) {\n return hasExpectedRequestMetadata(action, [\"fulfilled\"]);\n };\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isFulfilled()(asyncThunks[0]);\n }\n return function (action) {\n var matchers = asyncThunks.map(function (asyncThunk) {\n return asyncThunk.fulfilled;\n });\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\n return combinedMatcher(action);\n };\n}\nfunction isAsyncThunkAction() {\n var asyncThunks = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n asyncThunks[_i] = arguments[_i];\n }\n if (asyncThunks.length === 0) {\n return function (action) {\n return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]);\n };\n }\n if (!isAsyncThunkArray(asyncThunks)) {\n return isAsyncThunkAction()(asyncThunks[0]);\n }\n return function (action) {\n var matchers = [];\n for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\n var asyncThunk = asyncThunks_1[_i];\n matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\n }\n var combinedMatcher = isAnyOf.apply(void 0, matchers);\n return combinedMatcher(action);\n };\n}\n// src/listenerMiddleware/utils.ts\nvar assertFunction = function (func, expected) {\n if (typeof func !== \"function\") {\n throw new TypeError(expected + \" is not a function\");\n }\n};\nvar noop = function () {};\nvar catchRejection = function (promise2, onError) {\n if (onError === void 0) {\n onError = noop;\n }\n promise2.catch(onError);\n return promise2;\n};\nvar addAbortSignalListener = function (abortSignal, callback) {\n abortSignal.addEventListener(\"abort\", callback, {\n once: true\n });\n return function () {\n return abortSignal.removeEventListener(\"abort\", callback);\n };\n};\nvar abortControllerWithReason = function (abortController, reason) {\n var signal = abortController.signal;\n if (signal.aborted) {\n return;\n }\n if (!(\"reason\" in signal)) {\n Object.defineProperty(signal, \"reason\", {\n enumerable: true,\n value: reason,\n configurable: true,\n writable: true\n });\n }\n ;\n abortController.abort(reason);\n};\n// src/listenerMiddleware/exceptions.ts\nvar task = \"task\";\nvar listener = \"listener\";\nvar completed = \"completed\";\nvar cancelled = \"cancelled\";\nvar taskCancelled = \"task-\" + cancelled;\nvar taskCompleted = \"task-\" + completed;\nvar listenerCancelled = listener + \"-\" + cancelled;\nvar listenerCompleted = listener + \"-\" + completed;\nvar TaskAbortError = /** @class */function () {\n function TaskAbortError(code) {\n this.code = code;\n this.name = \"TaskAbortError\";\n this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\n }\n return TaskAbortError;\n}();\n// src/listenerMiddleware/task.ts\nvar validateActive = function (signal) {\n if (signal.aborted) {\n throw new TaskAbortError(signal.reason);\n }\n};\nfunction raceWithSignal(signal, promise2) {\n var cleanup = noop;\n return new Promise(function (resolve, reject) {\n var notifyRejection = function () {\n return reject(new TaskAbortError(signal.reason));\n };\n if (signal.aborted) {\n notifyRejection();\n return;\n }\n cleanup = addAbortSignalListener(signal, notifyRejection);\n promise2.finally(function () {\n return cleanup();\n }).then(resolve, reject);\n }).finally(function () {\n cleanup = noop;\n });\n}\nvar runTask = function (task2, cleanUp) {\n return __async(void 0, null, function () {\n var value, error_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 3, 4, 5]);\n return [4 /*yield*/, Promise.resolve()];\n case 1:\n _c.sent();\n return [4 /*yield*/, task2()];\n case 2:\n value = _c.sent();\n return [2 /*return*/, {\n status: \"ok\",\n value: value\n }];\n case 3:\n error_1 = _c.sent();\n return [2 /*return*/, {\n status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\n error: error_1\n }];\n case 4:\n cleanUp == null ? void 0 : cleanUp();\n return [7 /*endfinally*/];\n case 5:\n return [2 /*return*/];\n }\n });\n });\n};\nvar createPause = function (signal) {\n return function (promise2) {\n return catchRejection(raceWithSignal(signal, promise2).then(function (output) {\n validateActive(signal);\n return output;\n }));\n };\n};\nvar createDelay = function (signal) {\n var pause = createPause(signal);\n return function (timeoutMs) {\n return pause(new Promise(function (resolve) {\n return setTimeout(resolve, timeoutMs);\n }));\n };\n};\n// src/listenerMiddleware/index.ts\nvar assign = Object.assign;\nvar INTERNAL_NIL_TOKEN = {};\nvar alm = \"listenerMiddleware\";\nvar createFork = function (parentAbortSignal, parentBlockingPromises) {\n var linkControllers = function (controller) {\n return addAbortSignalListener(parentAbortSignal, function () {\n return abortControllerWithReason(controller, parentAbortSignal.reason);\n });\n };\n return function (taskExecutor, opts) {\n assertFunction(taskExecutor, \"taskExecutor\");\n var childAbortController = new AbortController();\n linkControllers(childAbortController);\n var result = runTask(function () {\n return __async(void 0, null, function () {\n var result2;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n validateActive(parentAbortSignal);\n validateActive(childAbortController.signal);\n return [4 /*yield*/, taskExecutor({\n pause: createPause(childAbortController.signal),\n delay: createDelay(childAbortController.signal),\n signal: childAbortController.signal\n })];\n case 1:\n result2 = _c.sent();\n validateActive(childAbortController.signal);\n return [2 /*return*/, result2];\n }\n });\n });\n }, function () {\n return abortControllerWithReason(childAbortController, taskCompleted);\n });\n if (opts == null ? void 0 : opts.autoJoin) {\n parentBlockingPromises.push(result);\n }\n return {\n result: createPause(parentAbortSignal)(result),\n cancel: function () {\n abortControllerWithReason(childAbortController, taskCancelled);\n }\n };\n };\n};\nvar createTakePattern = function (startListening, signal) {\n var take = function (predicate, timeout) {\n return __async(void 0, null, function () {\n var unsubscribe, tuplePromise, promises, output;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n validateActive(signal);\n unsubscribe = function () {};\n tuplePromise = new Promise(function (resolve, reject) {\n var stopListening = startListening({\n predicate: predicate,\n effect: function (action, listenerApi) {\n listenerApi.unsubscribe();\n resolve([action, listenerApi.getState(), listenerApi.getOriginalState()]);\n }\n });\n unsubscribe = function () {\n stopListening();\n reject();\n };\n });\n promises = [tuplePromise];\n if (timeout != null) {\n promises.push(new Promise(function (resolve) {\n return setTimeout(resolve, timeout, null);\n }));\n }\n _c.label = 1;\n case 1:\n _c.trys.push([1,, 3, 4]);\n return [4 /*yield*/, raceWithSignal(signal, Promise.race(promises))];\n case 2:\n output = _c.sent();\n validateActive(signal);\n return [2 /*return*/, output];\n case 3:\n unsubscribe();\n return [7 /*endfinally*/];\n case 4:\n return [2 /*return*/];\n }\n });\n });\n };\n return function (predicate, timeout) {\n return catchRejection(take(predicate, timeout));\n };\n};\nvar getListenerEntryPropsFrom = function (options) {\n var type = options.type,\n actionCreator = options.actionCreator,\n matcher = options.matcher,\n predicate = options.predicate,\n effect = options.effect;\n if (type) {\n predicate = createAction(type).match;\n } else if (actionCreator) {\n type = actionCreator.type;\n predicate = actionCreator.match;\n } else if (matcher) {\n predicate = matcher;\n } else if (predicate) {} else {\n throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\n }\n assertFunction(effect, \"options.listener\");\n return {\n predicate: predicate,\n type: type,\n effect: effect\n };\n};\nvar createListenerEntry = function (options) {\n var _c = getListenerEntryPropsFrom(options),\n type = _c.type,\n predicate = _c.predicate,\n effect = _c.effect;\n var id = nanoid();\n var entry = {\n id: id,\n effect: effect,\n type: type,\n predicate: predicate,\n pending: new Set(),\n unsubscribe: function () {\n throw new Error(\"Unsubscribe not initialized\");\n }\n };\n return entry;\n};\nvar cancelActiveListeners = function (entry) {\n entry.pending.forEach(function (controller) {\n abortControllerWithReason(controller, listenerCancelled);\n });\n};\nvar createClearListenerMiddleware = function (listenerMap) {\n return function () {\n listenerMap.forEach(cancelActiveListeners);\n listenerMap.clear();\n };\n};\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\n try {\n errorHandler(errorToNotify, errorInfo);\n } catch (errorHandlerError) {\n setTimeout(function () {\n throw errorHandlerError;\n }, 0);\n }\n};\nvar addListener = createAction(alm + \"/add\");\nvar clearAllListeners = createAction(alm + \"/removeAll\");\nvar removeListener = createAction(alm + \"/remove\");\nvar defaultErrorHandler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n console.error.apply(console, __spreadArray([alm + \"/error\"], args));\n};\nfunction createListenerMiddleware(middlewareOptions) {\n var _this = this;\n if (middlewareOptions === void 0) {\n middlewareOptions = {};\n }\n var listenerMap = new Map();\n var extra = middlewareOptions.extra,\n _c = middlewareOptions.onError,\n onError = _c === void 0 ? defaultErrorHandler : _c;\n assertFunction(onError, \"onError\");\n var insertEntry = function (entry) {\n entry.unsubscribe = function () {\n return listenerMap.delete(entry.id);\n };\n listenerMap.set(entry.id, entry);\n return function (cancelOptions) {\n entry.unsubscribe();\n if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\n cancelActiveListeners(entry);\n }\n };\n };\n var findListenerEntry = function (comparator) {\n for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\n var entry = _c[_i];\n if (comparator(entry)) {\n return entry;\n }\n }\n return void 0;\n };\n var startListening = function (options) {\n var entry = findListenerEntry(function (existingEntry) {\n return existingEntry.effect === options.effect;\n });\n if (!entry) {\n entry = createListenerEntry(options);\n }\n return insertEntry(entry);\n };\n var stopListening = function (options) {\n var _c = getListenerEntryPropsFrom(options),\n type = _c.type,\n effect = _c.effect,\n predicate = _c.predicate;\n var entry = findListenerEntry(function (entry2) {\n var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\n return matchPredicateOrType && entry2.effect === effect;\n });\n if (entry) {\n entry.unsubscribe();\n if (options.cancelActive) {\n cancelActiveListeners(entry);\n }\n }\n return !!entry;\n };\n var notifyListener = function (entry, action, api, getOriginalState) {\n return __async(_this, null, function () {\n var internalTaskController, take, autoJoinPromises, listenerError_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n internalTaskController = new AbortController();\n take = createTakePattern(startListening, internalTaskController.signal);\n autoJoinPromises = [];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 3, 4, 6]);\n entry.pending.add(internalTaskController);\n return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\n getOriginalState: getOriginalState,\n condition: function (predicate, timeout) {\n return take(predicate, timeout).then(Boolean);\n },\n take: take,\n delay: createDelay(internalTaskController.signal),\n pause: createPause(internalTaskController.signal),\n extra: extra,\n signal: internalTaskController.signal,\n fork: createFork(internalTaskController.signal, autoJoinPromises),\n unsubscribe: entry.unsubscribe,\n subscribe: function () {\n listenerMap.set(entry.id, entry);\n },\n cancelActiveListeners: function () {\n entry.pending.forEach(function (controller, _, set) {\n if (controller !== internalTaskController) {\n abortControllerWithReason(controller, listenerCancelled);\n set.delete(controller);\n }\n });\n }\n })))];\n case 2:\n _c.sent();\n return [3 /*break*/, 6];\n case 3:\n listenerError_1 = _c.sent();\n if (!(listenerError_1 instanceof TaskAbortError)) {\n safelyNotifyError(onError, listenerError_1, {\n raisedBy: \"effect\"\n });\n }\n return [3 /*break*/, 6];\n case 4:\n return [4 /*yield*/, Promise.allSettled(autoJoinPromises)];\n case 5:\n _c.sent();\n abortControllerWithReason(internalTaskController, listenerCompleted);\n entry.pending.delete(internalTaskController);\n return [7 /*endfinally*/];\n case 6:\n return [2 /*return*/];\n }\n });\n });\n };\n var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\n var middleware = function (api) {\n return function (next) {\n return function (action) {\n if (!isAction(action)) {\n return next(action);\n }\n if (addListener.match(action)) {\n return startListening(action.payload);\n }\n if (clearAllListeners.match(action)) {\n clearListenerMiddleware();\n return;\n }\n if (removeListener.match(action)) {\n return stopListening(action.payload);\n }\n var originalState = api.getState();\n var getOriginalState = function () {\n if (originalState === INTERNAL_NIL_TOKEN) {\n throw new Error(alm + \": getOriginalState can only be called synchronously\");\n }\n return originalState;\n };\n var result;\n try {\n result = next(action);\n if (listenerMap.size > 0) {\n var currentState = api.getState();\n var listenerEntries = Array.from(listenerMap.values());\n for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\n var entry = listenerEntries_1[_i];\n var runListener = false;\n try {\n runListener = entry.predicate(action, currentState, originalState);\n } catch (predicateError) {\n runListener = false;\n safelyNotifyError(onError, predicateError, {\n raisedBy: \"predicate\"\n });\n }\n if (!runListener) {\n continue;\n }\n notifyListener(entry, action, api, getOriginalState);\n }\n }\n } finally {\n originalState = INTERNAL_NIL_TOKEN;\n }\n return result;\n };\n };\n };\n return {\n middleware: middleware,\n startListening: startListening,\n stopListening: stopListening,\n clearListeners: clearListenerMiddleware\n };\n}\n// src/autoBatchEnhancer.ts\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\nvar prepareAutoBatched = function () {\n return function (payload) {\n var _c;\n return {\n payload: payload,\n meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\n };\n };\n};\nvar promise;\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) {\n return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) {\n return setTimeout(function () {\n throw err;\n }, 0);\n });\n};\nvar createQueueWithTimer = function (timeout) {\n return function (notify) {\n setTimeout(notify, timeout);\n };\n};\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\nvar autoBatchEnhancer = function (options) {\n if (options === void 0) {\n options = {\n type: \"raf\"\n };\n }\n return function (next) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var store = next.apply(void 0, args);\n var notifying = true;\n var shouldNotifyAtEndOfTick = false;\n var notificationQueued = false;\n var listeners = new Set();\n var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\n var notifyListeners = function () {\n notificationQueued = false;\n if (shouldNotifyAtEndOfTick) {\n shouldNotifyAtEndOfTick = false;\n listeners.forEach(function (l) {\n return l();\n });\n }\n };\n return Object.assign({}, store, {\n subscribe: function (listener2) {\n var wrappedListener = function () {\n return notifying && listener2();\n };\n var unsubscribe = store.subscribe(wrappedListener);\n listeners.add(listener2);\n return function () {\n unsubscribe();\n listeners.delete(listener2);\n };\n },\n dispatch: function (action) {\n var _a;\n try {\n notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\n shouldNotifyAtEndOfTick = !notifying;\n if (shouldNotifyAtEndOfTick) {\n if (!notificationQueued) {\n notificationQueued = true;\n queueCallback(notifyListeners);\n }\n }\n return store.dispatch(action);\n } finally {\n notifying = true;\n }\n }\n });\n };\n };\n};\n// src/index.ts\nenableES5();\nexport { EnhancerArray, MiddlewareArray, SHOULD_AUTOBATCH, TaskAbortError, addListener, autoBatchEnhancer, clearAllListeners, configureStore, createAction, createActionCreatorInvariantMiddleware, createAsyncThunk, createDraftSafeSelector, createEntityAdapter, createImmutableStateInvariantMiddleware, createListenerMiddleware, default2 as createNextState, createReducer, createSelector2 as createSelector, createSerializableStateInvariantMiddleware, createSlice, current2 as current, findNonSerializableValue, freeze, getDefaultMiddleware, getType, isAction, isActionCreator, isAllOf, isAnyOf, isAsyncThunkAction, isDraft4 as isDraft, isFSA as isFluxStandardAction, isFulfilled, isImmutableDefault, isPending, isPlain, isPlainObject, isRejected, isRejectedWithValue, miniSerializeError, nanoid, original, prepareAutoBatched, removeListener, unwrapResult };\n//# sourceMappingURL=redux-toolkit.esm.js.map","// >>> INTERFACES <<<\n// >>> HELPERS <<<\nvar castComparer = function (comparer) {\n return function (a, b, order) {\n return comparer(a, b, order) * order;\n };\n};\nvar throwInvalidConfigErrorIfTrue = function (condition, context) {\n if (condition) throw Error(\"Invalid sort config: \" + context);\n};\nvar unpackObjectSorter = function (sortByObj) {\n var _a = sortByObj || {},\n asc = _a.asc,\n desc = _a.desc;\n var order = asc ? 1 : -1;\n var sortBy = asc || desc;\n // Validate object config\n throwInvalidConfigErrorIfTrue(!sortBy, 'Expected `asc` or `desc` property');\n throwInvalidConfigErrorIfTrue(asc && desc, 'Ambiguous object with `asc` and `desc` config properties');\n var comparer = sortByObj.comparer && castComparer(sortByObj.comparer);\n return {\n order: order,\n sortBy: sortBy,\n comparer: comparer\n };\n};\n// >>> SORTERS <<<\nvar multiPropertySorterProvider = function (defaultComparer) {\n return function multiPropertySorter(sortBy, sortByArr, depth, order, comparer, a, b) {\n var valA;\n var valB;\n if (typeof sortBy === 'string') {\n valA = a[sortBy];\n valB = b[sortBy];\n } else if (typeof sortBy === 'function') {\n valA = sortBy(a);\n valB = sortBy(b);\n } else {\n var objectSorterConfig = unpackObjectSorter(sortBy);\n return multiPropertySorter(objectSorterConfig.sortBy, sortByArr, depth, objectSorterConfig.order, objectSorterConfig.comparer || defaultComparer, a, b);\n }\n var equality = comparer(valA, valB, order);\n if ((equality === 0 || valA == null && valB == null) && sortByArr.length > depth) {\n return multiPropertySorter(sortByArr[depth], sortByArr, depth + 1, order, comparer, a, b);\n }\n return equality;\n };\n};\nfunction getSortStrategy(sortBy, comparer, order) {\n // Flat array sorter\n if (sortBy === undefined || sortBy === true) {\n return function (a, b) {\n return comparer(a, b, order);\n };\n }\n // Sort list of objects by single object key\n if (typeof sortBy === 'string') {\n throwInvalidConfigErrorIfTrue(sortBy.includes('.'), 'String syntax not allowed for nested properties.');\n return function (a, b) {\n return comparer(a[sortBy], b[sortBy], order);\n };\n }\n // Sort list of objects by single function sorter\n if (typeof sortBy === 'function') {\n return function (a, b) {\n return comparer(sortBy(a), sortBy(b), order);\n };\n }\n // Sort by multiple properties\n if (Array.isArray(sortBy)) {\n var multiPropSorter_1 = multiPropertySorterProvider(comparer);\n return function (a, b) {\n return multiPropSorter_1(sortBy[0], sortBy, 1, order, comparer, a, b);\n };\n }\n // Unpack object config to get actual sorter strategy\n var objectSorterConfig = unpackObjectSorter(sortBy);\n return getSortStrategy(objectSorterConfig.sortBy, objectSorterConfig.comparer || comparer, objectSorterConfig.order);\n}\nvar sort = function (order, ctx, sortBy, comparer) {\n var _a;\n if (!Array.isArray(ctx)) {\n return ctx;\n }\n // Unwrap sortBy if array with only 1 value to get faster sort strategy\n if (Array.isArray(sortBy) && sortBy.length < 2) {\n _a = sortBy, sortBy = _a[0];\n }\n return ctx.sort(getSortStrategy(sortBy, comparer, order));\n};\n// >>> Public <<<\nfunction createSortInstance(opts) {\n var comparer = castComparer(opts.comparer);\n return function (ctx) {\n return {\n /**\r\n * Sort array in ascending order. Mutates provided array by sorting it.\r\n * @example\r\n * sort([3, 1, 4]).asc();\r\n * sort(users).asc(u => u.firstName);\r\n * sort(users).asc([\r\n * U => u.firstName\r\n * u => u.lastName,\r\n * ]);\r\n */\n asc: function (sortBy) {\n return sort(1, ctx, sortBy, comparer);\n },\n /**\r\n * Sort array in descending order. Mutates provided array by sorting it.\r\n * @example\r\n * sort([3, 1, 4]).desc();\r\n * sort(users).desc(u => u.firstName);\r\n * sort(users).desc([\r\n * U => u.firstName\r\n * u => u.lastName,\r\n * ]);\r\n */\n desc: function (sortBy) {\n return sort(-1, ctx, sortBy, comparer);\n },\n /**\r\n * Sort array in ascending or descending order. It allows sorting on multiple props\r\n * in different order for each of them. Mutates provided array by sorting it.\r\n * @example\r\n * sort(users).by([\r\n * { asc: u => u.score }\r\n * { desc: u => u.age }\r\n * ]);\r\n */\n by: function (sortBy) {\n return sort(1, ctx, sortBy, comparer);\n }\n };\n };\n}\nvar defaultSort = createSortInstance({\n comparer: function (a, b, order) {\n if (a == null) return order;\n if (b == null) return -order;\n if (a < b) return -1;\n if (a === b) return 0;\n return 1;\n }\n});\n// Attach createNewInstance to sort function\ndefaultSort['createNewInstance'] = createSortInstance;\nexport default defaultSort;","export default class Helper {\n static getDescendantProperty(object, path) {\n let list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n let firstSegment;\n let remaining;\n let dotIndex;\n let value;\n let index;\n let length;\n if (path) {\n dotIndex = path.indexOf('.');\n if (dotIndex === -1) {\n firstSegment = path;\n } else {\n firstSegment = path.slice(0, dotIndex);\n remaining = path.slice(dotIndex + 1);\n }\n value = object[firstSegment];\n if (value !== null && typeof value !== 'undefined') {\n if (!remaining && (typeof value === 'string' || typeof value === 'number')) {\n list.push(value);\n } else if (Object.prototype.toString.call(value) === '[object Array]') {\n for (index = 0, length = value.length; index < length; index++) {\n Helper.getDescendantProperty(value[index], remaining, list);\n }\n } else if (remaining) {\n Helper.getDescendantProperty(value, remaining, list);\n }\n }\n } else {\n list.push(object);\n }\n return list;\n }\n}","import Helper from './Helper';\nexport default class FuzzySearch {\n constructor() {\n let haystack = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!Array.isArray(keys)) {\n options = keys;\n keys = [];\n }\n this.haystack = haystack;\n this.keys = keys;\n this.options = Object.assign({\n caseSensitive: false,\n sort: false\n }, options);\n }\n search() {\n let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n if (query === '') {\n return this.haystack;\n }\n const results = [];\n for (let i = 0; i < this.haystack.length; i++) {\n const item = this.haystack[i];\n if (this.keys.length === 0) {\n const score = FuzzySearch.isMatch(item, query, this.options.caseSensitive);\n if (score) {\n results.push({\n item,\n score\n });\n }\n } else {\n for (let y = 0; y < this.keys.length; y++) {\n const propertyValues = Helper.getDescendantProperty(item, this.keys[y]);\n let found = false;\n for (let z = 0; z < propertyValues.length; z++) {\n const score = FuzzySearch.isMatch(propertyValues[z], query, this.options.caseSensitive);\n if (score) {\n found = true;\n results.push({\n item,\n score\n });\n break;\n }\n }\n if (found) {\n break;\n }\n }\n }\n }\n if (this.options.sort) {\n results.sort((a, b) => a.score - b.score);\n }\n return results.map(result => result.item);\n }\n static isMatch(item, query, caseSensitive) {\n item = String(item);\n query = String(query);\n if (!caseSensitive) {\n item = item.toLocaleLowerCase();\n query = query.toLocaleLowerCase();\n }\n const indexes = FuzzySearch.nearestIndexesFor(item, query);\n if (!indexes) {\n return false;\n }\n\n // Exact matches should be first.\n if (item === query) {\n return 1;\n }\n\n // If we have more than 2 letters, matches close to each other should be first.\n if (indexes.length > 1) {\n return 2 + (indexes[indexes.length - 1] - indexes[0]);\n }\n\n // Matches closest to the start of the string should be first.\n return 2 + indexes[0];\n }\n static nearestIndexesFor(item, query) {\n const letters = query.split('');\n let indexes = [];\n const indexesOfFirstLetter = FuzzySearch.indexesOfFirstLetter(item, query);\n indexesOfFirstLetter.forEach((startingIndex, loopingIndex) => {\n let index = startingIndex + 1;\n indexes[loopingIndex] = [startingIndex];\n for (let i = 1; i < letters.length; i++) {\n const letter = letters[i];\n index = item.indexOf(letter, index);\n if (index === -1) {\n indexes[loopingIndex] = false;\n break;\n }\n indexes[loopingIndex].push(index);\n index++;\n }\n });\n indexes = indexes.filter(letterIndexes => letterIndexes !== false);\n if (!indexes.length) {\n return false;\n }\n return indexes.sort((a, b) => {\n if (a.length === 1) {\n return a[0] - b[0];\n }\n a = a[a.length - 1] - a[0];\n b = b[b.length - 1] - b[0];\n return a - b;\n })[0];\n }\n static indexesOfFirstLetter(item, query) {\n const match = query[0];\n return item.split('').map((letter, index) => {\n if (letter !== match) {\n return false;\n }\n return index;\n }).filter(index => index !== false);\n }\n}","/* eslint-disable no-restricted-syntax */\nexport default function getThemeProps(params) {\n var theme = params.theme,\n name = params.name,\n props = params.props;\n if (!theme || !theme.props || !theme.props[name]) {\n return props;\n } // Resolve default props, code borrow from React source.\n // https://github.com/facebook/react/blob/15a8f031838a553e41c0b66eb1bcf1da8448104d/packages/react/src/ReactElement.js#L221\n\n var defaultProps = theme.props[name];\n var propName;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n return props;\n}","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@material-ui/utils';\nimport merge from './merge';\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n}\nvar warnedOnce = false;\nfunction styleFunctionSx(styleFunction) {\n var newStyleFunction = function newStyleFunction(props) {\n var output = styleFunction(props);\n if (props.css) {\n return _extends({}, merge(output, styleFunction(_extends({\n theme: props.theme\n }, props.css))), omit(props.css, [styleFunction.filterProps]));\n }\n if (props.sx) {\n return _extends({}, merge(output, styleFunction(_extends({\n theme: props.theme\n }, props.sx))), omit(props.sx, [styleFunction.filterProps]));\n }\n return output;\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n css: chainPropTypes(PropTypes.object, function (props) {\n if (!warnedOnce && props.css !== undefined) {\n warnedOnce = true;\n return new Error('Material-UI: The `css` prop is deprecated, please use the `sx` prop instead.');\n }\n return null;\n }),\n sx: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['css', 'sx'].concat(_toConsumableArray(styleFunction.filterProps));\n return newStyleFunction;\n}\n/**\n *\n * @deprecated\n * The css style function is deprecated. Use the `styleFunctionSx` instead.\n */\n\nexport function css(styleFunction) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('Material-UI: The `css` function is deprecated. Use the `styleFunctionSx` instead.');\n }\n return styleFunctionSx(styleFunction);\n}\nexport default styleFunctionSx;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport merge from './merge';\nfunction compose() {\n for (var _len = arguments.length, styles = new Array(_len), _key = 0; _key < _len; _key++) {\n styles[_key] = arguments[_key];\n }\n var fn = function fn(props) {\n return styles.reduce(function (acc, style) {\n var output = style(props);\n if (output) {\n return merge(acc, output);\n }\n return acc;\n }, {});\n }; // Alternative approach that doesn't yield any performance gain.\n // const handlers = styles.reduce((acc, style) => {\n // style.filterProps.forEach(prop => {\n // acc[prop] = style;\n // });\n // return acc;\n // }, {});\n // const fn = props => {\n // return Object.keys(props).reduce((acc, prop) => {\n // if (handlers[prop]) {\n // return merge(acc, handlers[prop](props));\n // }\n // return acc;\n // }, {});\n // };\n\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce(function (acc, style) {\n return _extends(acc, style.propTypes);\n }, {}) : {};\n fn.filterProps = styles.reduce(function (acc, style) {\n return acc.concat(style.filterProps);\n }, []);\n return fn;\n}\nexport default compose;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nfunction getPath(obj, path) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n return path.split('.').reduce(function (acc, item) {\n return acc && acc[item] ? acc[item] : null;\n }, obj);\n}\nfunction style(options) {\n var prop = options.prop,\n _options$cssProperty = options.cssProperty,\n cssProperty = _options$cssProperty === void 0 ? options.prop : _options$cssProperty,\n themeKey = options.themeKey,\n transform = options.transform;\n var fn = function fn(props) {\n if (props[prop] == null) {\n return null;\n }\n var propValue = props[prop];\n var theme = props.theme;\n var themeMapping = getPath(theme, themeKey) || {};\n var styleFromPropValue = function styleFromPropValue(propValueFinal) {\n var value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || propValueFinal;\n } else {\n value = getPath(themeMapping, propValueFinal) || propValueFinal;\n if (transform) {\n value = transform(value);\n }\n }\n if (cssProperty === false) {\n return value;\n }\n return _defineProperty({}, cssProperty, value);\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? _defineProperty({}, prop, responsivePropType) : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import style from './style';\nimport compose from './compose';\nfunction getBorder(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return \"\".concat(value, \"px solid\");\n}\nexport var border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: getBorder\n});\nexport var borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n themeKey: 'shape'\n});\nvar borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nexport var displayPrint = style({\n prop: 'displayPrint',\n cssProperty: false,\n transform: function transform(value) {\n return {\n '@media print': {\n display: value\n }\n };\n }\n});\nexport var displayRaw = style({\n prop: 'display'\n});\nexport var overflow = style({\n prop: 'overflow'\n});\nexport var textOverflow = style({\n prop: 'textOverflow'\n});\nexport var visibility = style({\n prop: 'visibility'\n});\nexport var whiteSpace = style({\n prop: 'whiteSpace'\n});\nexport default compose(displayPrint, displayRaw, overflow, textOverflow, visibility, whiteSpace);","import style from './style';\nimport compose from './compose';\nexport var flexBasis = style({\n prop: 'flexBasis'\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var order = style({\n prop: 'order'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var flexGrow = style({\n prop: 'flexGrow'\n});\nexport var flexShrink = style({\n prop: 'flexShrink'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nvar flexbox = compose(flexBasis, flexDirection, flexWrap, justifyContent, alignItems, alignContent, order, flex, flexGrow, flexShrink, alignSelf, justifyItems, justifySelf);\nexport default flexbox;","import style from './style';\nimport compose from './compose';\nexport var gridGap = style({\n prop: 'gridGap'\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap'\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap'\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n});\nvar grid = compose(gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n themeKey: 'zIndex'\n});\nexport var top = style({\n prop: 'top'\n});\nexport var right = style({\n prop: 'right'\n});\nexport var bottom = style({\n prop: 'bottom'\n});\nexport var left = style({\n prop: 'left'\n});\nexport default compose(position, zIndex, top, right, bottom, left);","import style from './style';\nimport compose from './compose';\nexport var color = style({\n prop: 'color',\n themeKey: 'palette'\n});\nexport var bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette'\n});\nvar palette = compose(color, bgcolor);\nexport default palette;","import style from './style';\nvar boxShadow = style({\n prop: 'boxShadow',\n themeKey: 'shadows'\n});\nexport default boxShadow;","import style from './style';\nimport compose from './compose';\nfunction transform(value) {\n return value <= 1 ? \"\".concat(value * 100, \"%\") : value;\n}\nexport var width = style({\n prop: 'width',\n transform: transform\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n transform: transform\n});\nexport var minWidth = style({\n prop: 'minWidth',\n transform: transform\n});\nexport var height = style({\n prop: 'height',\n transform: transform\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n transform: transform\n});\nexport var minHeight = style({\n prop: 'minHeight',\n transform: transform\n});\nexport var sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: transform\n});\nexport var sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: transform\n});\nexport var boxSizing = style({\n prop: 'boxSizing'\n});\nvar sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import style from './style';\nimport compose from './compose';\nexport var fontFamily = style({\n prop: 'fontFamily',\n themeKey: 'typography'\n});\nexport var fontSize = style({\n prop: 'fontSize',\n themeKey: 'typography'\n});\nexport var fontStyle = style({\n prop: 'fontStyle',\n themeKey: 'typography'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n themeKey: 'typography'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing'\n});\nexport var lineHeight = style({\n prop: 'lineHeight'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nvar typography = compose(fontFamily, fontSize, fontStyle, fontWeight, letterSpacing, lineHeight, textAlign);\nexport default typography;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getDisplayName } from '@material-ui/utils';\nexport default function mergeClasses() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var baseClasses = options.baseClasses,\n newClasses = options.newClasses,\n Component = options.Component;\n if (!newClasses) {\n return baseClasses;\n }\n var nextClasses = _extends({}, baseClasses);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof newClasses === 'string') {\n console.error([\"Material-UI: The value `\".concat(newClasses, \"` \") + \"provided to the classes prop of \".concat(getDisplayName(Component), \" is incorrect.\"), 'You might want to use the className prop instead.'].join('\\n'));\n return baseClasses;\n }\n }\n Object.keys(newClasses).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!baseClasses[key] && newClasses[key]) {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not implemented in \".concat(getDisplayName(Component), \".\"), \"You can only override one of the following: \".concat(Object.keys(baseClasses).join(','), \".\")].join('\\n'));\n }\n if (newClasses[key] && typeof newClasses[key] !== 'string') {\n console.error([\"Material-UI: The key `\".concat(key, \"` \") + \"provided to the classes prop is not valid for \".concat(getDisplayName(Component), \".\"), \"You need to provide a non empty string instead of: \".concat(newClasses[key], \".\")].join('\\n'));\n }\n }\n if (newClasses[key]) {\n nextClasses[key] = \"\".concat(baseClasses[key], \" \").concat(newClasses[key]);\n }\n });\n return nextClasses;\n}","// Used https://github.com/thinkloop/multi-key-cache as inspiration\nvar multiKeyStore = {\n set: function set(cache, key1, key2, value) {\n var subCache = cache.get(key1);\n if (!subCache) {\n subCache = new Map();\n cache.set(key1, subCache);\n }\n subCache.set(key2, value);\n },\n get: function get(cache, key1, key2) {\n var subCache = cache.get(key1);\n return subCache ? subCache.get(key2) : undefined;\n },\n delete: function _delete(cache, key1, key2) {\n var subCache = cache.get(key1);\n subCache.delete(key2);\n }\n};\nexport default multiKeyStore;","import nested from '../ThemeProvider/nested';\n/**\n * This is the list of the style rule name we use as drop in replacement for the built-in\n * pseudo classes (:checked, :disabled, :focused, etc.).\n *\n * Why do they exist in the first place?\n * These classes are used at a specificity of 2.\n * It allows them to override previously definied styles as well as\n * being untouched by simple user overrides.\n */\n\nvar pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected']; // Returns a function which generates unique class names based on counters.\n// When new generator function is created, rule counter is reset.\n// We need to reset the rule counter for SSR for each request.\n//\n// It's inspired by\n// https://github.com/cssinjs/jss/blob/4e6a05dd3f7b6572fdd3ab216861d9e446c20331/src/utils/createGenerateClassName.js\n\nexport default function createGenerateClassName() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$disableGloba = options.disableGlobal,\n disableGlobal = _options$disableGloba === void 0 ? false : _options$disableGloba,\n _options$productionPr = options.productionPrefix,\n productionPrefix = _options$productionPr === void 0 ? 'jss' : _options$productionPr,\n _options$seed = options.seed,\n seed = _options$seed === void 0 ? '' : _options$seed;\n var seedPrefix = seed === '' ? '' : \"\".concat(seed, \"-\");\n var ruleCounter = 0;\n var getNextCounterId = function getNextCounterId() {\n ruleCounter += 1;\n if (process.env.NODE_ENV !== 'production') {\n if (ruleCounter >= 1e10) {\n console.warn(['Material-UI: You might have a memory leak.', 'The ruleCounter is not supposed to grow that much.'].join(''));\n }\n }\n return ruleCounter;\n };\n return function (rule, styleSheet) {\n var name = styleSheet.options.name; // Is a global static MUI style?\n\n if (name && name.indexOf('Mui') === 0 && !styleSheet.options.link && !disableGlobal) {\n // We can use a shorthand class name, we never use the keys to style the components.\n if (pseudoClasses.indexOf(rule.key) !== -1) {\n return \"Mui-\".concat(rule.key);\n }\n var prefix = \"\".concat(seedPrefix).concat(name, \"-\").concat(rule.key);\n if (!styleSheet.options.theme[nested] || seed !== '') {\n return prefix;\n }\n return \"\".concat(prefix, \"-\").concat(getNextCounterId());\n }\n if (process.env.NODE_ENV === 'production') {\n return \"\".concat(seedPrefix).concat(productionPrefix).concat(getNextCounterId());\n }\n var suffix = \"\".concat(rule.key, \"-\").concat(getNextCounterId()); // Help with debuggability.\n\n if (styleSheet.options.classNamePrefix) {\n return \"\".concat(seedPrefix).concat(styleSheet.options.classNamePrefix, \"-\").concat(suffix);\n }\n return \"\".concat(seedPrefix).concat(suffix);\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@material-ui/utils';\nimport createGenerateClassName from '../createGenerateClassName';\nimport { create } from 'jss';\nimport jssPreset from '../jssPreset'; // Default JSS instance.\n\nvar jss = create(jssPreset()); // Use a singleton or the provided one by the context.\n//\n// The counter-based approach doesn't tolerate any mistake.\n// It's much safer to use the same counter everywhere.\n\nvar generateClassName = createGenerateClassName(); // Exported for test purposes\n\nexport var sheetsManager = new Map();\nvar defaultOptions = {\n disableGeneration: false,\n generateClassName: generateClassName,\n jss: jss,\n sheetsCache: null,\n sheetsManager: sheetsManager,\n sheetsRegistry: null\n};\nexport var StylesContext = React.createContext(defaultOptions);\nif (process.env.NODE_ENV !== 'production') {\n StylesContext.displayName = 'StylesContext';\n}\nvar injectFirstNode;\nexport default function StylesProvider(props) {\n var children = props.children,\n _props$injectFirst = props.injectFirst,\n injectFirst = _props$injectFirst === void 0 ? false : _props$injectFirst,\n _props$disableGenerat = props.disableGeneration,\n disableGeneration = _props$disableGenerat === void 0 ? false : _props$disableGenerat,\n localOptions = _objectWithoutProperties(props, [\"children\", \"injectFirst\", \"disableGeneration\"]);\n var outerOptions = React.useContext(StylesContext);\n var context = _extends({}, outerOptions, {\n disableGeneration: disableGeneration\n }, localOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window === 'undefined' && !context.sheetsManager) {\n console.error('Material-UI: You need to use the ServerStyleSheets API when rendering on the server.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (context.jss.options.insertionPoint && injectFirst) {\n console.error('Material-UI: You cannot use a custom insertionPoint and <StylesContext injectFirst> at the same time.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (injectFirst && localOptions.jss) {\n console.error('Material-UI: You cannot use the jss and injectFirst props at the same time.');\n }\n }\n if (!context.jss.options.insertionPoint && injectFirst && typeof window !== 'undefined') {\n if (!injectFirstNode) {\n var head = document.head;\n injectFirstNode = document.createComment('mui-inject-first');\n head.insertBefore(injectFirstNode, head.firstChild);\n }\n context.jss = create({\n plugins: jssPreset().plugins,\n insertionPoint: injectFirstNode\n });\n }\n return /*#__PURE__*/React.createElement(StylesContext.Provider, {\n value: context\n }, children);\n}\nprocess.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node.isRequired,\n /**\n * You can disable the generation of the styles with this option.\n * It can be useful when traversing the React tree outside of the HTML\n * rendering step on the server.\n * Let's say you are using react-apollo to extract all\n * the queries made by the interface server-side - you can significantly speed up the traversal with this prop.\n */\n disableGeneration: PropTypes.bool,\n /**\n * JSS's class name generator.\n */\n generateClassName: PropTypes.func,\n /**\n * By default, the styles are injected last in the <head> element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override Material-UI's styles, set this prop.\n */\n injectFirst: PropTypes.bool,\n /**\n * JSS's instance.\n */\n jss: PropTypes.object,\n /**\n * @ignore\n */\n serverGenerateClassName: PropTypes.func,\n /**\n * @ignore\n *\n * Beta feature.\n *\n * Cache for the sheets.\n */\n sheetsCache: PropTypes.object,\n /**\n * @ignore\n *\n * The sheetsManager is used to deduplicate style sheet injection in the page.\n * It's deduplicating using the (theme, styles) couple.\n * On the server, you should provide a new instance for each request.\n */\n sheetsManager: PropTypes.object,\n /**\n * @ignore\n *\n * Collect the sheets.\n */\n sheetsRegistry: PropTypes.object\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== \"production\" ? StylesProvider.propTypes = exactProp(StylesProvider.propTypes) : void 0;\n}","import functions from 'jss-plugin-rule-value-function';\nimport global from 'jss-plugin-global';\nimport nested from 'jss-plugin-nested';\nimport camelCase from 'jss-plugin-camel-case';\nimport defaultUnit from 'jss-plugin-default-unit';\nimport vendorPrefixer from 'jss-plugin-vendor-prefixer';\nimport propsSort from 'jss-plugin-props-sort'; // Subset of jss-preset-default with only the plugins the Material-UI components are using.\n\nexport default function jssPreset() {\n return {\n plugins: [functions(), global(), nested(), camelCase(), defaultUnit(),\n // Disable the vendor prefixer server-side, it does nothing.\n // This way, we can get a performance boost.\n // In the documentation, we are using `autoprefixer` to solve this problem.\n typeof window === 'undefined' ? null : vendorPrefixer(), propsSort()]\n };\n}","/* eslint-disable import/prefer-default-export */\n// Global index counter to preserve source order.\n// We create the style sheet during the creation of the component,\n// children are handled after the parents, so the order of style elements would be parent->child.\n// It is a problem though when a parent passes a className\n// which needs to override any child's styles.\n// StyleSheet of the child has a higher specificity, because of the source order.\n// So our solution is to render sheets them in the reverse order child->sheet, so\n// that parent has a higher specificity.\nvar indexCounter = -1e9;\nexport function increment() {\n indexCounter += 1;\n if (process.env.NODE_ENV !== 'production') {\n if (indexCounter >= 0) {\n console.warn(['Material-UI: You might have a memory leak.', 'The indexCounter is not supposed to grow that much.'].join('\\n'));\n }\n }\n return indexCounter;\n}","// We use the same empty object to ref count the styles that don't need a theme object.\nvar noopTheme = {};\nexport default noopTheme;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getDynamicStyles } from 'jss';\nimport mergeClasses from '../mergeClasses';\nimport multiKeyStore from './multiKeyStore';\nimport useTheme from '../useTheme';\nimport { StylesContext } from '../StylesProvider';\nimport { increment } from './indexCounter';\nimport getStylesCreator from '../getStylesCreator';\nimport noopTheme from '../getStylesCreator/noopTheme';\nfunction getClasses(_ref, classes, Component) {\n var state = _ref.state,\n stylesOptions = _ref.stylesOptions;\n if (stylesOptions.disableGeneration) {\n return classes || {};\n }\n if (!state.cacheClasses) {\n state.cacheClasses = {\n // Cache for the finalized classes value.\n value: null,\n // Cache for the last used classes prop pointer.\n lastProp: null,\n // Cache for the last used rendered classes pointer.\n lastJSS: {}\n };\n } // Tracks if either the rendered classes or classes prop has changed,\n // requiring the generation of a new finalized classes object.\n\n var generate = false;\n if (state.classes !== state.cacheClasses.lastJSS) {\n state.cacheClasses.lastJSS = state.classes;\n generate = true;\n }\n if (classes !== state.cacheClasses.lastProp) {\n state.cacheClasses.lastProp = classes;\n generate = true;\n }\n if (generate) {\n state.cacheClasses.value = mergeClasses({\n baseClasses: state.cacheClasses.lastJSS,\n newClasses: classes,\n Component: Component\n });\n }\n return state.cacheClasses.value;\n}\nfunction attach(_ref2, props) {\n var state = _ref2.state,\n theme = _ref2.theme,\n stylesOptions = _ref2.stylesOptions,\n stylesCreator = _ref2.stylesCreator,\n name = _ref2.name;\n if (stylesOptions.disableGeneration) {\n return;\n }\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n if (!sheetManager) {\n sheetManager = {\n refs: 0,\n staticSheet: null,\n dynamicStyles: null\n };\n multiKeyStore.set(stylesOptions.sheetsManager, stylesCreator, theme, sheetManager);\n }\n var options = _extends({}, stylesCreator.options, stylesOptions, {\n theme: theme,\n flip: typeof stylesOptions.flip === 'boolean' ? stylesOptions.flip : theme.direction === 'rtl'\n });\n options.generateId = options.serverGenerateClassName || options.generateClassName;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n if (sheetManager.refs === 0) {\n var staticSheet;\n if (stylesOptions.sheetsCache) {\n staticSheet = multiKeyStore.get(stylesOptions.sheetsCache, stylesCreator, theme);\n }\n var styles = stylesCreator.create(theme, name);\n if (!staticSheet) {\n staticSheet = stylesOptions.jss.createStyleSheet(styles, _extends({\n link: false\n }, options));\n staticSheet.attach();\n if (stylesOptions.sheetsCache) {\n multiKeyStore.set(stylesOptions.sheetsCache, stylesCreator, theme, staticSheet);\n }\n }\n if (sheetsRegistry) {\n sheetsRegistry.add(staticSheet);\n }\n sheetManager.staticSheet = staticSheet;\n sheetManager.dynamicStyles = getDynamicStyles(styles);\n }\n if (sheetManager.dynamicStyles) {\n var dynamicSheet = stylesOptions.jss.createStyleSheet(sheetManager.dynamicStyles, _extends({\n link: true\n }, options));\n dynamicSheet.update(props);\n dynamicSheet.attach();\n state.dynamicSheet = dynamicSheet;\n state.classes = mergeClasses({\n baseClasses: sheetManager.staticSheet.classes,\n newClasses: dynamicSheet.classes\n });\n if (sheetsRegistry) {\n sheetsRegistry.add(dynamicSheet);\n }\n } else {\n state.classes = sheetManager.staticSheet.classes;\n }\n sheetManager.refs += 1;\n}\nfunction update(_ref3, props) {\n var state = _ref3.state;\n if (state.dynamicSheet) {\n state.dynamicSheet.update(props);\n }\n}\nfunction detach(_ref4) {\n var state = _ref4.state,\n theme = _ref4.theme,\n stylesOptions = _ref4.stylesOptions,\n stylesCreator = _ref4.stylesCreator;\n if (stylesOptions.disableGeneration) {\n return;\n }\n var sheetManager = multiKeyStore.get(stylesOptions.sheetsManager, stylesCreator, theme);\n sheetManager.refs -= 1;\n var sheetsRegistry = stylesOptions.sheetsRegistry;\n if (sheetManager.refs === 0) {\n multiKeyStore.delete(stylesOptions.sheetsManager, stylesCreator, theme);\n stylesOptions.jss.removeStyleSheet(sheetManager.staticSheet);\n if (sheetsRegistry) {\n sheetsRegistry.remove(sheetManager.staticSheet);\n }\n }\n if (state.dynamicSheet) {\n stylesOptions.jss.removeStyleSheet(state.dynamicSheet);\n if (sheetsRegistry) {\n sheetsRegistry.remove(state.dynamicSheet);\n }\n }\n}\nfunction useSynchronousEffect(func, values) {\n var key = React.useRef([]);\n var output; // Store \"generation\" key. Just returns a new object every time\n\n var currentKey = React.useMemo(function () {\n return {};\n }, values); // eslint-disable-line react-hooks/exhaustive-deps\n // \"the first render\", or \"memo dropped the value\"\n\n if (key.current !== currentKey) {\n key.current = currentKey;\n output = func();\n }\n React.useEffect(function () {\n return function () {\n if (output) {\n output();\n }\n };\n }, [currentKey] // eslint-disable-line react-hooks/exhaustive-deps\n );\n}\nexport default function makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = options.name,\n classNamePrefixOption = options.classNamePrefix,\n Component = options.Component,\n _options$defaultTheme = options.defaultTheme,\n defaultTheme = _options$defaultTheme === void 0 ? noopTheme : _options$defaultTheme,\n stylesOptions2 = _objectWithoutProperties(options, [\"name\", \"classNamePrefix\", \"Component\", \"defaultTheme\"]);\n var stylesCreator = getStylesCreator(stylesOrCreator);\n var classNamePrefix = name || classNamePrefixOption || 'makeStyles';\n stylesCreator.options = {\n index: increment(),\n name: name,\n meta: classNamePrefix,\n classNamePrefix: classNamePrefix\n };\n var useStyles = function useStyles() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var theme = useTheme() || defaultTheme;\n var stylesOptions = _extends({}, React.useContext(StylesContext), stylesOptions2);\n var instance = React.useRef();\n var shouldUpdate = React.useRef();\n useSynchronousEffect(function () {\n var current = {\n name: name,\n state: {},\n stylesCreator: stylesCreator,\n stylesOptions: stylesOptions,\n theme: theme\n };\n attach(current, props);\n shouldUpdate.current = false;\n instance.current = current;\n return function () {\n detach(current);\n };\n }, [theme, stylesCreator]);\n React.useEffect(function () {\n if (shouldUpdate.current) {\n update(instance.current, props);\n }\n shouldUpdate.current = true;\n });\n var classes = getClasses(instance.current, props.classes, Component);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(classes);\n }\n return classes;\n };\n return useStyles;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { deepmerge } from '@material-ui/utils';\nimport noopTheme from './noopTheme';\nexport default function getStylesCreator(stylesOrCreator) {\n var themingEnabled = typeof stylesOrCreator === 'function';\n if (process.env.NODE_ENV !== 'production') {\n if (_typeof(stylesOrCreator) !== 'object' && !themingEnabled) {\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You need to provide a function generating the styles or a styles object.'].join('\\n'));\n }\n }\n return {\n create: function create(theme, name) {\n var styles;\n try {\n styles = themingEnabled ? stylesOrCreator(theme) : stylesOrCreator;\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n if (themingEnabled === true && theme === noopTheme) {\n // TODO: prepend error message/name instead\n console.error(['Material-UI: The `styles` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n throw err;\n }\n if (!name || !theme.overrides || !theme.overrides[name]) {\n return styles;\n }\n var overrides = theme.overrides[name];\n var stylesWithOverrides = _extends({}, styles);\n Object.keys(overrides).forEach(function (key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!stylesWithOverrides[key]) {\n console.warn(['Material-UI: You are trying to override a style that does not exist.', \"Fix the `\".concat(key, \"` key of `theme.overrides.\").concat(name, \"`.\")].join('\\n'));\n }\n }\n stylesWithOverrides[key] = deepmerge(stylesWithOverrides[key], overrides[key]);\n });\n return stylesWithOverrides;\n },\n options: {}\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport makeStyles from '../makeStyles';\nfunction omit(input, fields) {\n var output = {};\n Object.keys(input).forEach(function (prop) {\n if (fields.indexOf(prop) === -1) {\n output[prop] = input[prop];\n }\n });\n return output;\n} // styled-components's API removes the mapping between components and styles.\n// Using components as a low-level styling construct can be simpler.\n\nexport default function styled(Component) {\n var componentCreator = function componentCreator(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"name\"]);\n if (process.env.NODE_ENV !== 'production' && Component === undefined) {\n throw new Error(['You are calling styled(Component)(style) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n var classNamePrefix = name;\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n var stylesOrCreator = typeof style === 'function' ? function (theme) {\n return {\n root: function root(props) {\n return style(_extends({\n theme: theme\n }, props));\n }\n };\n } : {\n root: style\n };\n var useStyles = makeStyles(stylesOrCreator, _extends({\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var filterProps;\n var propTypes = {};\n if (style.filterProps) {\n filterProps = style.filterProps;\n delete style.filterProps;\n }\n /* eslint-disable react/forbid-foreign-prop-types */\n\n if (style.propTypes) {\n propTypes = style.propTypes;\n delete style.propTypes;\n }\n /* eslint-enable react/forbid-foreign-prop-types */\n\n var StyledComponent = /*#__PURE__*/React.forwardRef(function StyledComponent(props, ref) {\n var children = props.children,\n classNameProp = props.className,\n clone = props.clone,\n ComponentProp = props.component,\n other = _objectWithoutProperties(props, [\"children\", \"className\", \"clone\", \"component\"]);\n var classes = useStyles(props);\n var className = clsx(classes.root, classNameProp);\n var spread = other;\n if (filterProps) {\n spread = omit(spread, filterProps);\n }\n if (clone) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n className: clsx(children.props.className, className)\n }, spread));\n }\n if (typeof children === 'function') {\n return children(_extends({\n className: className\n }, spread));\n }\n var FinalComponent = ComponentProp || Component;\n return /*#__PURE__*/React.createElement(FinalComponent, _extends({\n ref: ref,\n className: className\n }, spread), children);\n });\n process.env.NODE_ENV !== \"production\" ? StyledComponent.propTypes = _extends({\n /**\n * A render function or node.\n */\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the component will recycle it's children HTML element.\n * It's using `React.cloneElement` internally.\n *\n * This prop will be deprecated and removed in v5\n */\n clone: chainPropTypes(PropTypes.bool, function (props) {\n if (props.clone && props.component) {\n return new Error('You can not use the clone and component prop at the same time.');\n }\n return null;\n }),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType\n }, propTypes) : void 0;\n if (process.env.NODE_ENV !== 'production') {\n StyledComponent.displayName = \"Styled(\".concat(classNamePrefix, \")\");\n }\n hoistNonReactStatics(StyledComponent, Component);\n return StyledComponent;\n };\n return componentCreator;\n}","import createMuiTheme from './createMuiTheme';\nvar defaultTheme = createMuiTheme();\nexport default defaultTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { styled as styledWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\nvar styled = function styled(Component) {\n var componentCreator = styledWithoutDefault(Component);\n return function (style, options) {\n return componentCreator(style, _extends({\n defaultTheme: defaultTheme\n }, options));\n };\n};\nexport default styled;","import { borders, compose, display, flexbox, grid, palette, positions, shadows, sizing, spacing, typography, css } from '@material-ui/system';\nimport styled from '../styles/styled';\nexport var styleFunction = css(compose(borders, display, flexbox, grid, positions, palette, shadows, sizing, spacing, typography));\n/**\n * @ignore - do not document.\n */\n\nvar Box = styled('div')(styleFunction, {\n name: 'MuiBox'\n});\nexport default Box;","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","// TODO v5: consider to make it private\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(refA, refB) {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return React.useMemo(function () {\n if (refA == null && refB == null) {\n return null;\n }\n return function (refValue) {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}","import * as React from 'react';\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n *\n * @param {function} fn\n */\n\nexport default function useEventCallback(fn) {\n var ref = React.useRef(fn);\n useEnhancedEffect(function () {\n ref.current = fn;\n });\n return React.useCallback(function () {\n return (0, ref.current).apply(void 0, arguments);\n }, []);\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport { elementAcceptingRef, exactProp } from '@material-ui/utils';\nfunction mapEventPropToEvent(eventProp) {\n return eventProp.substring(2).toLowerCase();\n}\nfunction clickedRootScrollbar(event) {\n return document.documentElement.clientWidth < event.clientX || document.documentElement.clientHeight < event.clientY;\n}\n/**\n * Listen for click events that occur somewhere in the document, outside of the element itself.\n * For instance, if you need to hide a menu when people click anywhere else on your page.\n */\n\nfunction ClickAwayListener(props) {\n var children = props.children,\n _props$disableReactTr = props.disableReactTree,\n disableReactTree = _props$disableReactTr === void 0 ? false : _props$disableReactTr,\n _props$mouseEvent = props.mouseEvent,\n mouseEvent = _props$mouseEvent === void 0 ? 'onClick' : _props$mouseEvent,\n onClickAway = props.onClickAway,\n _props$touchEvent = props.touchEvent,\n touchEvent = _props$touchEvent === void 0 ? 'onTouchEnd' : _props$touchEvent;\n var movedRef = React.useRef(false);\n var nodeRef = React.useRef(null);\n var activatedRef = React.useRef(false);\n var syntheticEventRef = React.useRef(false);\n React.useEffect(function () {\n // Ensure that this component is not \"activated\" synchronously.\n // https://github.com/facebook/react/issues/20074\n setTimeout(function () {\n activatedRef.current = true;\n }, 0);\n return function () {\n activatedRef.current = false;\n };\n }, []); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n nodeRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(children.ref, handleOwnRef); // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n\n var handleClickAway = useEventCallback(function (event) {\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n var insideReactTree = syntheticEventRef.current;\n syntheticEventRef.current = false; // 1. IE 11 support, which trigger the handleClickAway even after the unbind\n // 2. The child might render null.\n // 3. Behave like a blur listener.\n\n if (!activatedRef.current || !nodeRef.current || clickedRootScrollbar(event)) {\n return;\n } // Do not act if user performed touchmove\n\n if (movedRef.current) {\n movedRef.current = false;\n return;\n }\n var insideDOM; // If not enough, can use https://github.com/DieterHolvoet/event-propagation-path/blob/master/propagationPath.js\n\n if (event.composedPath) {\n insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;\n } else {\n // TODO v6 remove dead logic https://caniuse.com/#search=composedPath.\n var doc = ownerDocument(nodeRef.current);\n insideDOM = !doc.documentElement.contains(event.target) || nodeRef.current.contains(event.target);\n }\n if (!insideDOM && (disableReactTree || !insideReactTree)) {\n onClickAway(event);\n }\n }); // Keep track of mouse/touch events that bubbled up through the portal.\n\n var createHandleSynthetic = function createHandleSynthetic(handlerName) {\n return function (event) {\n syntheticEventRef.current = true;\n var childrenPropsHandler = children.props[handlerName];\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n };\n var childrenProps = {\n ref: handleRef\n };\n if (touchEvent !== false) {\n childrenProps[touchEvent] = createHandleSynthetic(touchEvent);\n }\n React.useEffect(function () {\n if (touchEvent !== false) {\n var mappedTouchEvent = mapEventPropToEvent(touchEvent);\n var doc = ownerDocument(nodeRef.current);\n var handleTouchMove = function handleTouchMove() {\n movedRef.current = true;\n };\n doc.addEventListener(mappedTouchEvent, handleClickAway);\n doc.addEventListener('touchmove', handleTouchMove);\n return function () {\n doc.removeEventListener(mappedTouchEvent, handleClickAway);\n doc.removeEventListener('touchmove', handleTouchMove);\n };\n }\n return undefined;\n }, [handleClickAway, touchEvent]);\n if (mouseEvent !== false) {\n childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);\n }\n React.useEffect(function () {\n if (mouseEvent !== false) {\n var mappedMouseEvent = mapEventPropToEvent(mouseEvent);\n var doc = ownerDocument(nodeRef.current);\n doc.addEventListener(mappedMouseEvent, handleClickAway);\n return function () {\n doc.removeEventListener(mappedMouseEvent, handleClickAway);\n };\n }\n return undefined;\n }, [handleClickAway, mouseEvent]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(children, childrenProps));\n}\nprocess.env.NODE_ENV !== \"production\" ? ClickAwayListener.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The wrapped element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * If `true`, the React tree is ignored and only the DOM tree is considered.\n * This prop changes how portaled elements are handled.\n */\n disableReactTree: PropTypes.bool,\n /**\n * The mouse event to listen to. You can disable the listener by providing `false`.\n */\n mouseEvent: PropTypes.oneOf(['onClick', 'onMouseDown', 'onMouseUp', false]),\n /**\n * Callback fired when a \"click away\" event is detected.\n */\n onClickAway: PropTypes.func.isRequired,\n /**\n * The touch event to listen to. You can disable the listener by providing `false`.\n */\n touchEvent: PropTypes.oneOf(['onTouchEnd', 'onTouchStart', false])\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n ClickAwayListener['propTypes' + ''] = exactProp(ClickAwayListener.propTypes);\n}\nexport default ClickAwayListener;","/**! \n * hotkeys-js v3.13.7 \n * A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies. \n * \n * Copyright (c) 2024 kenny wong <wowohoo@qq.com> \n * https://github.com/jaywcjlove/hotkeys-js.git \n * \n * @website: https://jaywcjlove.github.io/hotkeys-js\n \n * Licensed under the MIT license \n */\n\nconst isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;\n\n// 绑定事件\nfunction addEvent(object, event, method, useCapture) {\n if (object.addEventListener) {\n object.addEventListener(event, method, useCapture);\n } else if (object.attachEvent) {\n object.attachEvent(\"on\".concat(event), method);\n }\n}\nfunction removeEvent(object, event, method, useCapture) {\n if (object.removeEventListener) {\n object.removeEventListener(event, method, useCapture);\n } else if (object.detachEvent) {\n object.detachEvent(\"on\".concat(event), method);\n }\n}\n\n// 修饰键转换成对应的键码\nfunction getMods(modifier, key) {\n const mods = key.slice(0, key.length - 1);\n for (let i = 0; i < mods.length; i++) mods[i] = modifier[mods[i].toLowerCase()];\n return mods;\n}\n\n// 处理传的key字符串转换成数组\nfunction getKeys(key) {\n if (typeof key !== 'string') key = '';\n key = key.replace(/\\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等\n const keys = key.split(','); // 同时设置多个快捷键,以','分割\n let index = keys.lastIndexOf('');\n\n // 快捷键可能包含',',需特殊处理\n for (; index >= 0;) {\n keys[index - 1] += ',';\n keys.splice(index, 1);\n index = keys.lastIndexOf('');\n }\n return keys;\n}\n\n// 比较修饰键的数组\nfunction compareArray(a1, a2) {\n const arr1 = a1.length >= a2.length ? a1 : a2;\n const arr2 = a1.length >= a2.length ? a2 : a1;\n let isIndex = true;\n for (let i = 0; i < arr1.length; i++) {\n if (arr2.indexOf(arr1[i]) === -1) isIndex = false;\n }\n return isIndex;\n}\n\n// Special Keys\nconst _keyMap = {\n backspace: 8,\n '⌫': 8,\n tab: 9,\n clear: 12,\n enter: 13,\n '↩': 13,\n return: 13,\n esc: 27,\n escape: 27,\n space: 32,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n del: 46,\n delete: 46,\n ins: 45,\n insert: 45,\n home: 36,\n end: 35,\n pageup: 33,\n pagedown: 34,\n capslock: 20,\n num_0: 96,\n num_1: 97,\n num_2: 98,\n num_3: 99,\n num_4: 100,\n num_5: 101,\n num_6: 102,\n num_7: 103,\n num_8: 104,\n num_9: 105,\n num_multiply: 106,\n num_add: 107,\n num_enter: 108,\n num_subtract: 109,\n num_decimal: 110,\n num_divide: 111,\n '⇪': 20,\n ',': 188,\n '.': 190,\n '/': 191,\n '`': 192,\n '-': isff ? 173 : 189,\n '=': isff ? 61 : 187,\n ';': isff ? 59 : 186,\n '\\'': 222,\n '[': 219,\n ']': 221,\n '\\\\': 220\n};\n\n// Modifier Keys\nconst _modifier = {\n // shiftKey\n '⇧': 16,\n shift: 16,\n // altKey\n '⌥': 18,\n alt: 18,\n option: 18,\n // ctrlKey\n '⌃': 17,\n ctrl: 17,\n control: 17,\n // metaKey\n '⌘': 91,\n cmd: 91,\n command: 91\n};\nconst modifierMap = {\n 16: 'shiftKey',\n 18: 'altKey',\n 17: 'ctrlKey',\n 91: 'metaKey',\n shiftKey: 16,\n ctrlKey: 17,\n altKey: 18,\n metaKey: 91\n};\nconst _mods = {\n 16: false,\n 18: false,\n 17: false,\n 91: false\n};\nconst _handlers = {};\n\n// F1~F12 special key\nfor (let k = 1; k < 20; k++) {\n _keyMap[\"f\".concat(k)] = 111 + k;\n}\nlet _downKeys = []; // 记录摁下的绑定键\nlet winListendFocus = null; // window是否已经监听了focus事件\nlet _scope = 'all'; // 默认热键范围\nconst elementEventMap = new Map(); // 已绑定事件的节点记录\n\n// 返回键码\nconst code = x => _keyMap[x.toLowerCase()] || _modifier[x.toLowerCase()] || x.toUpperCase().charCodeAt(0);\nconst getKey = x => Object.keys(_keyMap).find(k => _keyMap[k] === x);\nconst getModifier = x => Object.keys(_modifier).find(k => _modifier[k] === x);\n\n// 设置获取当前范围(默认为'所有')\nfunction setScope(scope) {\n _scope = scope || 'all';\n}\n// 获取当前范围\nfunction getScope() {\n return _scope || 'all';\n}\n// 获取摁下绑定键的键值\nfunction getPressedKeyCodes() {\n return _downKeys.slice(0);\n}\nfunction getPressedKeyString() {\n return _downKeys.map(c => getKey(c) || getModifier(c) || String.fromCharCode(c));\n}\nfunction getAllKeyCodes() {\n const result = [];\n Object.keys(_handlers).forEach(k => {\n _handlers[k].forEach(_ref => {\n let {\n key,\n scope,\n mods,\n shortcut\n } = _ref;\n result.push({\n scope,\n shortcut,\n mods,\n keys: key.split('+').map(v => code(v))\n });\n });\n });\n return result;\n}\n\n// 表单控件控件判断 返回 Boolean\n// hotkey is effective only when filter return true\nfunction filter(event) {\n const target = event.target || event.srcElement;\n const {\n tagName\n } = target;\n let flag = true;\n const isInput = tagName === 'INPUT' && !['checkbox', 'radio', 'range', 'button', 'file', 'reset', 'submit', 'color'].includes(target.type);\n // ignore: isContentEditable === 'true', <input> and <textarea> when readOnly state is false, <select>\n if (target.isContentEditable || (isInput || tagName === 'TEXTAREA' || tagName === 'SELECT') && !target.readOnly) {\n flag = false;\n }\n return flag;\n}\n\n// 判断摁下的键是否为某个键,返回true或者false\nfunction isPressed(keyCode) {\n if (typeof keyCode === 'string') {\n keyCode = code(keyCode); // 转换成键码\n }\n return _downKeys.indexOf(keyCode) !== -1;\n}\n\n// 循环删除handlers中的所有 scope(范围)\nfunction deleteScope(scope, newScope) {\n let handlers;\n let i;\n\n // 没有指定scope,获取scope\n if (!scope) scope = getScope();\n for (const key in _handlers) {\n if (Object.prototype.hasOwnProperty.call(_handlers, key)) {\n handlers = _handlers[key];\n for (i = 0; i < handlers.length;) {\n if (handlers[i].scope === scope) {\n const deleteItems = handlers.splice(i, 1);\n deleteItems.forEach(_ref2 => {\n let {\n element\n } = _ref2;\n return removeKeyEvent(element);\n });\n } else {\n i++;\n }\n }\n }\n }\n\n // 如果scope被删除,将scope重置为all\n if (getScope() === scope) setScope(newScope || 'all');\n}\n\n// 清除修饰键\nfunction clearModifier(event) {\n let key = event.keyCode || event.which || event.charCode;\n const i = _downKeys.indexOf(key);\n\n // 从列表中清除按压过的键\n if (i >= 0) {\n _downKeys.splice(i, 1);\n }\n // 特殊处理 cmmand 键,在 cmmand 组合快捷键 keyup 只执行一次的问题\n if (event.key && event.key.toLowerCase() === 'meta') {\n _downKeys.splice(0, _downKeys.length);\n }\n\n // 修饰键 shiftKey altKey ctrlKey (command||metaKey) 清除\n if (key === 93 || key === 224) key = 91;\n if (key in _mods) {\n _mods[key] = false;\n\n // 将修饰键重置为false\n for (const k in _modifier) if (_modifier[k] === key) hotkeys[k] = false;\n }\n}\nfunction unbind(keysInfo) {\n // unbind(), unbind all keys\n if (typeof keysInfo === 'undefined') {\n Object.keys(_handlers).forEach(key => {\n Array.isArray(_handlers[key]) && _handlers[key].forEach(info => eachUnbind(info));\n delete _handlers[key];\n });\n removeKeyEvent(null);\n } else if (Array.isArray(keysInfo)) {\n // support like : unbind([{key: 'ctrl+a', scope: 's1'}, {key: 'ctrl-a', scope: 's2', splitKey: '-'}])\n keysInfo.forEach(info => {\n if (info.key) eachUnbind(info);\n });\n } else if (typeof keysInfo === 'object') {\n // support like unbind({key: 'ctrl+a, ctrl+b', scope:'abc'})\n if (keysInfo.key) eachUnbind(keysInfo);\n } else if (typeof keysInfo === 'string') {\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 // support old method\n // eslint-disable-line\n let [scope, method] = args;\n if (typeof scope === 'function') {\n method = scope;\n scope = '';\n }\n eachUnbind({\n key: keysInfo,\n scope,\n method,\n splitKey: '+'\n });\n }\n}\n\n// 解除绑定某个范围的快捷键\nconst eachUnbind = _ref3 => {\n let {\n key,\n scope,\n method,\n splitKey = '+'\n } = _ref3;\n const multipleKeys = getKeys(key);\n multipleKeys.forEach(originKey => {\n const unbindKeys = originKey.split(splitKey);\n const len = unbindKeys.length;\n const lastKey = unbindKeys[len - 1];\n const keyCode = lastKey === '*' ? '*' : code(lastKey);\n if (!_handlers[keyCode]) return;\n // 判断是否传入范围,没有就获取范围\n if (!scope) scope = getScope();\n const mods = len > 1 ? getMods(_modifier, unbindKeys) : [];\n const unbindElements = [];\n _handlers[keyCode] = _handlers[keyCode].filter(record => {\n // 通过函数判断,是否解除绑定,函数相等直接返回\n const isMatchingMethod = method ? record.method === method : true;\n const isUnbind = isMatchingMethod && record.scope === scope && compareArray(record.mods, mods);\n if (isUnbind) unbindElements.push(record.element);\n return !isUnbind;\n });\n unbindElements.forEach(element => removeKeyEvent(element));\n });\n};\n\n// 对监听对应快捷键的回调函数进行处理\nfunction eventHandler(event, handler, scope, element) {\n if (handler.element !== element) {\n return;\n }\n let modifiersMatch;\n\n // 看它是否在当前范围\n if (handler.scope === scope || handler.scope === 'all') {\n // 检查是否匹配修饰符(如果有返回true)\n modifiersMatch = handler.mods.length > 0;\n for (const y in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, y)) {\n if (!_mods[y] && handler.mods.indexOf(+y) > -1 || _mods[y] && handler.mods.indexOf(+y) === -1) {\n modifiersMatch = false;\n }\n }\n }\n\n // 调用处理程序,如果是修饰键不做处理\n if (handler.mods.length === 0 && !_mods[16] && !_mods[18] && !_mods[17] && !_mods[91] || modifiersMatch || handler.shortcut === '*') {\n handler.keys = [];\n handler.keys = handler.keys.concat(_downKeys);\n if (handler.method(event, handler) === false) {\n if (event.preventDefault) event.preventDefault();else event.returnValue = false;\n if (event.stopPropagation) event.stopPropagation();\n if (event.cancelBubble) event.cancelBubble = true;\n }\n }\n }\n}\n\n// 处理keydown事件\nfunction dispatch(event, element) {\n const asterisk = _handlers['*'];\n let key = event.keyCode || event.which || event.charCode;\n\n // 表单控件过滤 默认表单控件不触发快捷键\n if (!hotkeys.filter.call(this, event)) return;\n\n // Gecko(Firefox)的command键值224,在Webkit(Chrome)中保持一致\n // Webkit左右 command 键值不一样\n if (key === 93 || key === 224) key = 91;\n\n /**\n * Collect bound keys\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\n * https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229\n * http://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\n */\n if (_downKeys.indexOf(key) === -1 && key !== 229) _downKeys.push(key);\n /**\n * Jest test cases are required.\n * ===============================\n */\n ['ctrlKey', 'altKey', 'shiftKey', 'metaKey'].forEach(keyName => {\n const keyNum = modifierMap[keyName];\n if (event[keyName] && _downKeys.indexOf(keyNum) === -1) {\n _downKeys.push(keyNum);\n } else if (!event[keyName] && _downKeys.indexOf(keyNum) > -1) {\n _downKeys.splice(_downKeys.indexOf(keyNum), 1);\n } else if (keyName === 'metaKey' && event[keyName] && _downKeys.length === 3) {\n /**\n * Fix if Command is pressed:\n * ===============================\n */\n if (!(event.ctrlKey || event.shiftKey || event.altKey)) {\n _downKeys = _downKeys.slice(_downKeys.indexOf(keyNum));\n }\n }\n });\n /**\n * -------------------------------\n */\n\n if (key in _mods) {\n _mods[key] = true;\n\n // 将特殊字符的key注册到 hotkeys 上\n for (const k in _modifier) {\n if (_modifier[k] === key) hotkeys[k] = true;\n }\n if (!asterisk) return;\n }\n\n // 将 modifierMap 里面的修饰键绑定到 event 中\n for (const e in _mods) {\n if (Object.prototype.hasOwnProperty.call(_mods, e)) {\n _mods[e] = event[modifierMap[e]];\n }\n }\n /**\n * https://github.com/jaywcjlove/hotkeys/pull/129\n * This solves the issue in Firefox on Windows where hotkeys corresponding to special characters would not trigger.\n * An example of this is ctrl+alt+m on a Swedish keyboard which is used to type μ.\n * Browser support: https://caniuse.com/#feat=keyboardevent-getmodifierstate\n */\n if (event.getModifierState && !(event.altKey && !event.ctrlKey) && event.getModifierState('AltGraph')) {\n if (_downKeys.indexOf(17) === -1) {\n _downKeys.push(17);\n }\n if (_downKeys.indexOf(18) === -1) {\n _downKeys.push(18);\n }\n _mods[17] = true;\n _mods[18] = true;\n }\n\n // 获取范围 默认为 `all`\n const scope = getScope();\n // 对任何快捷键都需要做的处理\n if (asterisk) {\n for (let i = 0; i < asterisk.length; i++) {\n if (asterisk[i].scope === scope && (event.type === 'keydown' && asterisk[i].keydown || event.type === 'keyup' && asterisk[i].keyup)) {\n eventHandler(event, asterisk[i], scope, element);\n }\n }\n }\n // key 不在 _handlers 中返回\n if (!(key in _handlers)) return;\n const handlerKey = _handlers[key];\n const keyLen = handlerKey.length;\n for (let i = 0; i < keyLen; i++) {\n if (event.type === 'keydown' && handlerKey[i].keydown || event.type === 'keyup' && handlerKey[i].keyup) {\n if (handlerKey[i].key) {\n const record = handlerKey[i];\n const {\n splitKey\n } = record;\n const keyShortcut = record.key.split(splitKey);\n const _downKeysCurrent = []; // 记录当前按键键值\n for (let a = 0; a < keyShortcut.length; a++) {\n _downKeysCurrent.push(code(keyShortcut[a]));\n }\n if (_downKeysCurrent.sort().join('') === _downKeys.sort().join('')) {\n // 找到处理内容\n eventHandler(event, record, scope, element);\n }\n }\n }\n }\n}\nfunction hotkeys(key, option, method) {\n _downKeys = [];\n const keys = getKeys(key); // 需要处理的快捷键列表\n let mods = [];\n let scope = 'all'; // scope默认为all,所有范围都有效\n let element = document; // 快捷键事件绑定节点\n let i = 0;\n let keyup = false;\n let keydown = true;\n let splitKey = '+';\n let capture = false;\n let single = false; // 单个callback\n\n // 对为设定范围的判断\n if (method === undefined && typeof option === 'function') {\n method = option;\n }\n if (Object.prototype.toString.call(option) === '[object Object]') {\n if (option.scope) scope = option.scope; // eslint-disable-line\n if (option.element) element = option.element; // eslint-disable-line\n if (option.keyup) keyup = option.keyup; // eslint-disable-line\n if (option.keydown !== undefined) keydown = option.keydown; // eslint-disable-line\n if (option.capture !== undefined) capture = option.capture; // eslint-disable-line\n if (typeof option.splitKey === 'string') splitKey = option.splitKey; // eslint-disable-line\n if (option.single === true) single = true; // eslint-disable-line\n }\n if (typeof option === 'string') scope = option;\n\n // 如果只允许单个callback,先unbind\n if (single) unbind(key, scope);\n\n // 对于每个快捷键进行处理\n for (; i < keys.length; i++) {\n key = keys[i].split(splitKey); // 按键列表\n mods = [];\n\n // 如果是组合快捷键取得组合快捷键\n if (key.length > 1) mods = getMods(_modifier, key);\n\n // 将非修饰键转化为键码\n key = key[key.length - 1];\n key = key === '*' ? '*' : code(key); // *表示匹配所有快捷键\n\n // 判断key是否在_handlers中,不在就赋一个空数组\n if (!(key in _handlers)) _handlers[key] = [];\n _handlers[key].push({\n keyup,\n keydown,\n scope,\n mods,\n shortcut: keys[i],\n method,\n key: keys[i],\n splitKey,\n element\n });\n }\n // 在全局document上设置快捷键\n if (typeof element !== 'undefined' && window) {\n if (!elementEventMap.has(element)) {\n const keydownListener = function () {\n let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;\n return dispatch(event, element);\n };\n const keyupListenr = function () {\n let event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.event;\n dispatch(event, element);\n clearModifier(event);\n };\n elementEventMap.set(element, {\n keydownListener,\n keyupListenr,\n capture\n });\n addEvent(element, 'keydown', keydownListener, capture);\n addEvent(element, 'keyup', keyupListenr, capture);\n }\n if (!winListendFocus) {\n const listener = () => {\n _downKeys = [];\n };\n winListendFocus = {\n listener,\n capture\n };\n addEvent(window, 'focus', listener, capture);\n }\n }\n}\nfunction trigger(shortcut) {\n let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'all';\n Object.keys(_handlers).forEach(key => {\n const dataList = _handlers[key].filter(item => item.scope === scope && item.shortcut === shortcut);\n dataList.forEach(data => {\n if (data && data.method) {\n data.method();\n }\n });\n });\n}\n\n// 销毁事件,unbind之后判断element上是否还有键盘快捷键,如果没有移除监听\nfunction removeKeyEvent(element) {\n const values = Object.values(_handlers).flat();\n const findindex = values.findIndex(_ref4 => {\n let {\n element: el\n } = _ref4;\n return el === element;\n });\n if (findindex < 0) {\n const {\n keydownListener,\n keyupListenr,\n capture\n } = elementEventMap.get(element) || {};\n if (keydownListener && keyupListenr) {\n removeEvent(element, 'keyup', keyupListenr, capture);\n removeEvent(element, 'keydown', keydownListener, capture);\n elementEventMap.delete(element);\n }\n }\n if (values.length <= 0 || elementEventMap.size <= 0) {\n // 移除所有的元素上的监听\n const eventKeys = Object.keys(elementEventMap);\n eventKeys.forEach(el => {\n const {\n keydownListener,\n keyupListenr,\n capture\n } = elementEventMap.get(el) || {};\n if (keydownListener && keyupListenr) {\n removeEvent(el, 'keyup', keyupListenr, capture);\n removeEvent(el, 'keydown', keydownListener, capture);\n elementEventMap.delete(el);\n }\n });\n // 清空 elementEventMap\n elementEventMap.clear();\n // 清空 _handlers\n Object.keys(_handlers).forEach(key => delete _handlers[key]);\n // 移除window上的focus监听\n if (winListendFocus) {\n const {\n listener,\n capture\n } = winListendFocus;\n removeEvent(window, 'focus', listener, capture);\n winListendFocus = null;\n }\n }\n}\nconst _api = {\n getPressedKeyString,\n setScope,\n getScope,\n deleteScope,\n getPressedKeyCodes,\n getAllKeyCodes,\n isPressed,\n filter,\n trigger,\n unbind,\n keyMap: _keyMap,\n modifier: _modifier,\n modifierMap\n};\nfor (const a in _api) {\n if (Object.prototype.hasOwnProperty.call(_api, a)) {\n hotkeys[a] = _api[a];\n }\n}\nif (typeof window !== 'undefined') {\n const _hotkeys = window.hotkeys;\n hotkeys.noConflict = deep => {\n if (deep && window.hotkeys === hotkeys) {\n window.hotkeys = _hotkeys;\n }\n return hotkeys;\n };\n window.hotkeys = hotkeys;\n}\nexport { hotkeys as default };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { chainPropTypes, getDisplayName } from '@material-ui/utils';\nimport makeStyles from '../makeStyles';\nimport getThemeProps from '../getThemeProps';\nimport useTheme from '../useTheme'; // Link a style sheet with a component.\n// It does not modify the component passed to it;\n// instead, it returns a new component, with a `classes` property.\n\nvar withStyles = function withStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function (Component) {\n var defaultTheme = options.defaultTheme,\n _options$withTheme = options.withTheme,\n withTheme = _options$withTheme === void 0 ? false : _options$withTheme,\n name = options.name,\n stylesOptions = _objectWithoutProperties(options, [\"defaultTheme\", \"withTheme\", \"name\"]);\n if (process.env.NODE_ENV !== 'production') {\n if (Component === undefined) {\n throw new Error(['You are calling withStyles(styles)(Component) with an undefined component.', 'You may have forgotten to import it.'].join('\\n'));\n }\n }\n var classNamePrefix = name;\n if (process.env.NODE_ENV !== 'production') {\n if (!name) {\n // Provide a better DX outside production.\n var displayName = getDisplayName(Component);\n if (displayName !== undefined) {\n classNamePrefix = displayName;\n }\n }\n }\n var useStyles = makeStyles(stylesOrCreator, _extends({\n defaultTheme: defaultTheme,\n Component: Component,\n name: name || Component.displayName,\n classNamePrefix: classNamePrefix\n }, stylesOptions));\n var WithStyles = /*#__PURE__*/React.forwardRef(function WithStyles(props, ref) {\n var classesProp = props.classes,\n innerRef = props.innerRef,\n other = _objectWithoutProperties(props, [\"classes\", \"innerRef\"]); // The wrapper receives only user supplied props, which could be a subset of\n // the actual props Component might receive due to merging with defaultProps.\n // So copying it here would give us the same result in the wrapper as well.\n\n var classes = useStyles(_extends({}, Component.defaultProps, props));\n var theme;\n var more = other;\n if (typeof name === 'string' || withTheme) {\n // name and withTheme are invariant in the outer scope\n // eslint-disable-next-line react-hooks/rules-of-hooks\n theme = useTheme() || defaultTheme;\n if (name) {\n more = getThemeProps({\n theme: theme,\n name: name,\n props: other\n });\n } // Provide the theme to the wrapped component.\n // So we don't have to use the `withTheme()` Higher-order Component.\n\n if (withTheme && !more.theme) {\n more.theme = theme;\n }\n }\n return /*#__PURE__*/React.createElement(Component, _extends({\n ref: innerRef || ref,\n classes: classes\n }, more));\n });\n process.env.NODE_ENV !== \"production\" ? WithStyles.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * Use that prop to pass a ref to the decorated component.\n * @deprecated\n */\n innerRef: chainPropTypes(PropTypes.oneOfType([PropTypes.func, PropTypes.object]), function (props) {\n if (props.innerRef == null) {\n return null;\n }\n return null; // return new Error(\n // 'Material-UI: The `innerRef` prop is deprecated and will be removed in v5. ' +\n // 'Refs are now automatically forwarded to the inner component.',\n // );\n })\n } : void 0;\n if (process.env.NODE_ENV !== 'production') {\n WithStyles.displayName = \"WithStyles(\".concat(getDisplayName(Component), \")\");\n }\n hoistNonReactStatics(WithStyles, Component);\n if (process.env.NODE_ENV !== 'production') {\n // Exposed for test purposes.\n WithStyles.Naked = Component;\n WithStyles.options = options;\n WithStyles.useStyles = useStyles;\n }\n return WithStyles;\n };\n};\nexport default withStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { withStyles as withStylesWithoutDefault } from '@material-ui/styles';\nimport defaultTheme from './defaultTheme';\nfunction withStyles(stylesOrCreator, options) {\n return withStylesWithoutDefault(stylesOrCreator, _extends({\n defaultTheme: defaultTheme\n }, options));\n}\nexport default withStyles;","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word a the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: capitalize(string) expects a string argument.\" : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n margin: 0\n },\n /* Styles applied to the root element if `variant=\"body2\"`. */\n body2: theme.typography.body2,\n /* Styles applied to the root element if `variant=\"body1\"`. */\n body1: theme.typography.body1,\n /* Styles applied to the root element if `variant=\"caption\"`. */\n caption: theme.typography.caption,\n /* Styles applied to the root element if `variant=\"button\"`. */\n button: theme.typography.button,\n /* Styles applied to the root element if `variant=\"h1\"`. */\n h1: theme.typography.h1,\n /* Styles applied to the root element if `variant=\"h2\"`. */\n h2: theme.typography.h2,\n /* Styles applied to the root element if `variant=\"h3\"`. */\n h3: theme.typography.h3,\n /* Styles applied to the root element if `variant=\"h4\"`. */\n h4: theme.typography.h4,\n /* Styles applied to the root element if `variant=\"h5\"`. */\n h5: theme.typography.h5,\n /* Styles applied to the root element if `variant=\"h6\"`. */\n h6: theme.typography.h6,\n /* Styles applied to the root element if `variant=\"subtitle1\"`. */\n subtitle1: theme.typography.subtitle1,\n /* Styles applied to the root element if `variant=\"subtitle2\"`. */\n subtitle2: theme.typography.subtitle2,\n /* Styles applied to the root element if `variant=\"overline\"`. */\n overline: theme.typography.overline,\n /* Styles applied to the root element if `variant=\"srOnly\"`. Only accessible to screen readers. */\n srOnly: {\n position: 'absolute',\n height: 1,\n width: 1,\n overflow: 'hidden'\n },\n /* Styles applied to the root element if `align=\"left\"`. */\n alignLeft: {\n textAlign: 'left'\n },\n /* Styles applied to the root element if `align=\"center\"`. */\n alignCenter: {\n textAlign: 'center'\n },\n /* Styles applied to the root element if `align=\"right\"`. */\n alignRight: {\n textAlign: 'right'\n },\n /* Styles applied to the root element if `align=\"justify\"`. */\n alignJustify: {\n textAlign: 'justify'\n },\n /* Styles applied to the root element if `nowrap={true}`. */\n noWrap: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n },\n /* Styles applied to the root element if `gutterBottom={true}`. */\n gutterBottom: {\n marginBottom: '0.35em'\n },\n /* Styles applied to the root element if `paragraph={true}`. */\n paragraph: {\n marginBottom: 16\n },\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n /* Styles applied to the root element if `color=\"textPrimary\"`. */\n colorTextPrimary: {\n color: theme.palette.text.primary\n },\n /* Styles applied to the root element if `color=\"textSecondary\"`. */\n colorTextSecondary: {\n color: theme.palette.text.secondary\n },\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n /* Styles applied to the root element if `display=\"inline\"`. */\n displayInline: {\n display: 'inline'\n },\n /* Styles applied to the root element if `display=\"block\"`. */\n displayBlock: {\n display: 'block'\n }\n };\n};\nvar defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p'\n};\nvar Typography = /*#__PURE__*/React.forwardRef(function Typography(props, ref) {\n var _props$align = props.align,\n align = _props$align === void 0 ? 'inherit' : _props$align,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'initial' : _props$color,\n component = props.component,\n _props$display = props.display,\n display = _props$display === void 0 ? 'initial' : _props$display,\n _props$gutterBottom = props.gutterBottom,\n gutterBottom = _props$gutterBottom === void 0 ? false : _props$gutterBottom,\n _props$noWrap = props.noWrap,\n noWrap = _props$noWrap === void 0 ? false : _props$noWrap,\n _props$paragraph = props.paragraph,\n paragraph = _props$paragraph === void 0 ? false : _props$paragraph,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'body1' : _props$variant,\n _props$variantMapping = props.variantMapping,\n variantMapping = _props$variantMapping === void 0 ? defaultVariantMapping : _props$variantMapping,\n other = _objectWithoutProperties(props, [\"align\", \"classes\", \"className\", \"color\", \"component\", \"display\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"]);\n var Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant !== 'inherit' && classes[variant], color !== 'initial' && classes[\"color\".concat(capitalize(color))], noWrap && classes.noWrap, gutterBottom && classes.gutterBottom, paragraph && classes.paragraph, align !== 'inherit' && classes[\"align\".concat(capitalize(align))], display !== 'initial' && classes[\"display\".concat(capitalize(display))]),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes = {\n /**\n * Set the text-align on the component.\n */\n align: PropTypes.oneOf(['inherit', 'left', 'center', 'right', 'justify']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * Overrides the behavior of the `variantMapping` prop.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * Controls the display type\n */\n display: PropTypes.oneOf(['initial', 'block', 'inline']),\n /**\n * If `true`, the text will have a bottom margin.\n */\n gutterBottom: PropTypes.bool,\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap: PropTypes.bool,\n /**\n * If `true`, the text will have a bottom margin.\n */\n paragraph: PropTypes.bool,\n /**\n * Applies the theme typography styles.\n */\n variant: PropTypes.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'caption', 'button', 'overline', 'srOnly', 'inherit']),\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `<h6>`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n */\n variantMapping: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTypography'\n})(Typography);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(24),\n transition: theme.transitions.create('fill', {\n duration: theme.transitions.duration.shorter\n })\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n /* Styles applied to the root element if `color=\"secondary\"`. */\n colorSecondary: {\n color: theme.palette.secondary.main\n },\n /* Styles applied to the root element if `color=\"action\"`. */\n colorAction: {\n color: theme.palette.action.active\n },\n /* Styles applied to the root element if `color=\"error\"`. */\n colorError: {\n color: theme.palette.error.main\n },\n /* Styles applied to the root element if `color=\"disabled\"`. */\n colorDisabled: {\n color: theme.palette.action.disabled\n },\n /* Styles applied to the root element if `fontSize=\"inherit\"`. */\n fontSizeInherit: {\n fontSize: 'inherit'\n },\n /* Styles applied to the root element if `fontSize=\"small\"`. */\n fontSizeSmall: {\n fontSize: theme.typography.pxToRem(20)\n },\n /* Styles applied to the root element if `fontSize=\"large\"`. */\n fontSizeLarge: {\n fontSize: theme.typography.pxToRem(35)\n }\n };\n};\nvar SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'inherit' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'svg' : _props$component,\n _props$fontSize = props.fontSize,\n fontSize = _props$fontSize === void 0 ? 'default' : _props$fontSize,\n htmlColor = props.htmlColor,\n titleAccess = props.titleAccess,\n _props$viewBox = props.viewBox,\n viewBox = _props$viewBox === void 0 ? '0 0 24 24' : _props$viewBox,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"titleAccess\", \"viewBox\"]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'inherit' && classes[\"color\".concat(capitalize(color))], fontSize !== 'default' && classes[\"fontSize\".concat(capitalize(fontSize))]),\n focusable: \"false\",\n viewBox: viewBox,\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, other), children, titleAccess ? /*#__PURE__*/React.createElement(\"title\", null, titleAccess) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n */\n color: PropTypes.oneOf(['action', 'disabled', 'error', 'inherit', 'primary', 'secondary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n */\n fontSize: PropTypes.oneOf(['default', 'inherit', 'large', 'small']),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this property.\n */\n shapeRendering: PropTypes.string,\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default withStyles(styles, {\n name: 'MuiSvgIcon'\n})(SvgIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport SvgIcon from '../SvgIcon';\n/**\n * Private module reserved for @material-ui/x packages.\n */\n\nexport default function createSvgIcon(path, displayName) {\n var Component = function Component(props, ref) {\n return /*#__PURE__*/React.createElement(SvgIcon, _extends({\n ref: ref\n }, props), path);\n };\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = \"\".concat(displayName, \"Icon\");\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreHoriz');","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar hadKeyboardEvent = true;\nvar hadFocusVisibleRecently = false;\nvar hadFocusVisibleRecentlyTimeout = null;\nvar inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @return {boolean}\n */\n\nfunction focusTriggersKeyboardModality(node) {\n var type = node.type,\n tagName = node.tagName;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\n\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\n\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n var target = event.target;\n try {\n return target.matches(':focus-visible');\n } catch (error) {} // browsers not implementing :focus-visible will throw a SyntaxError\n // we use our own heuristic for those browsers\n // rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n // no need for validFocusTarget check. the user does that by attaching it to\n // focusable events only\n\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\n/**\n * Should be called if a blur event is fired on a focus-visible element\n */\n\nfunction handleBlurVisible() {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function () {\n hadFocusVisibleRecently = false;\n }, 100);\n}\nexport default function useIsFocusVisible() {\n var ref = React.useCallback(function (instance) {\n var node = ReactDOM.findDOMNode(instance);\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(isFocusVisible);\n }\n return {\n isFocusVisible: isFocusVisible,\n onBlurVisible: handleBlurVisible,\n ref: ref\n };\n}","import React from 'react';\nexport default React.createContext(null);","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n var i;\n var childMapping = {};\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n return childMapping;\n}\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n function TransitionGroup(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n var _proto = TransitionGroup.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n return TransitionGroup;\n}(React.Component);\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport useEventCallback from '../utils/useEventCallback';\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * @ignore - internal component.\n */\n\nfunction Ripple(props) {\n var classes = props.classes,\n _props$pulsate = props.pulsate,\n pulsate = _props$pulsate === void 0 ? false : _props$pulsate,\n rippleX = props.rippleX,\n rippleY = props.rippleY,\n rippleSize = props.rippleSize,\n inProp = props.in,\n _props$onExited = props.onExited,\n onExited = _props$onExited === void 0 ? function () {} : _props$onExited,\n timeout = props.timeout;\n var _React$useState = React.useState(false),\n leaving = _React$useState[0],\n setLeaving = _React$useState[1];\n var rippleClassName = clsx(classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n var rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n var childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n var handleExited = useEventCallback(onExited); // Ripple is used for user feedback (e.g. click or press) so we want to apply styles with the highest priority\n\n useEnhancedEffect(function () {\n if (!inProp) {\n // react-transition-group#onExit\n setLeaving(true); // react-transition-group#onExited\n\n var timeoutId = setTimeout(handleExited, timeout);\n return function () {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [handleExited, inProp, timeout]);\n return /*#__PURE__*/React.createElement(\"span\", {\n className: rippleClassName,\n style: rippleStyles\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: childClassName\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Ripple from './Ripple';\nvar DURATION = 550;\nexport var DELAY_RIPPLE = 80;\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n },\n /* Styles applied to the internal `Ripple` components `ripple` class. */\n ripple: {\n opacity: 0,\n position: 'absolute'\n },\n /* Styles applied to the internal `Ripple` components `rippleVisible` class. */\n rippleVisible: {\n opacity: 0.3,\n transform: 'scale(1)',\n animation: \"$enter \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n /* Styles applied to the internal `Ripple` components `ripplePulsate` class. */\n ripplePulsate: {\n animationDuration: \"\".concat(theme.transitions.duration.shorter, \"ms\")\n },\n /* Styles applied to the internal `Ripple` components `child` class. */\n child: {\n opacity: 1,\n display: 'block',\n width: '100%',\n height: '100%',\n borderRadius: '50%',\n backgroundColor: 'currentColor'\n },\n /* Styles applied to the internal `Ripple` components `childLeaving` class. */\n childLeaving: {\n opacity: 0,\n animation: \"$exit \".concat(DURATION, \"ms \").concat(theme.transitions.easing.easeInOut)\n },\n /* Styles applied to the internal `Ripple` components `childPulsate` class. */\n childPulsate: {\n position: 'absolute',\n left: 0,\n top: 0,\n animation: \"$pulsate 2500ms \".concat(theme.transitions.easing.easeInOut, \" 200ms infinite\")\n },\n '@keyframes enter': {\n '0%': {\n transform: 'scale(0)',\n opacity: 0.1\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 0.3\n }\n },\n '@keyframes exit': {\n '0%': {\n opacity: 1\n },\n '100%': {\n opacity: 0\n }\n },\n '@keyframes pulsate': {\n '0%': {\n transform: 'scale(1)'\n },\n '50%': {\n transform: 'scale(0.92)'\n },\n '100%': {\n transform: 'scale(1)'\n }\n }\n };\n};\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nvar TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(props, ref) {\n var _props$center = props.center,\n centerProp = _props$center === void 0 ? false : _props$center,\n classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"center\", \"classes\", \"className\"]);\n var _React$useState = React.useState([]),\n ripples = _React$useState[0],\n setRipples = _React$useState[1];\n var nextKey = React.useRef(0);\n var rippleCallback = React.useRef(null);\n React.useEffect(function () {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n var ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n var startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n var startTimerCommit = React.useRef(null);\n var container = React.useRef(null);\n React.useEffect(function () {\n return function () {\n clearTimeout(startTimer.current);\n };\n }, []);\n var startCommit = React.useCallback(function (params) {\n var pulsate = params.pulsate,\n rippleX = params.rippleX,\n rippleY = params.rippleY,\n rippleSize = params.rippleSize,\n cb = params.cb;\n setRipples(function (oldRipples) {\n return [].concat(_toConsumableArray(oldRipples), [/*#__PURE__*/React.createElement(Ripple, {\n key: nextKey.current,\n classes: classes,\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n })]);\n });\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n var start = React.useCallback(function () {\n var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var cb = arguments.length > 2 ? arguments[2] : undefined;\n var _options$pulsate = options.pulsate,\n pulsate = _options$pulsate === void 0 ? false : _options$pulsate,\n _options$center = options.center,\n center = _options$center === void 0 ? centerProp || options.pulsate : _options$center,\n _options$fakeElement = options.fakeElement,\n fakeElement = _options$fakeElement === void 0 ? false : _options$fakeElement;\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n var element = fakeElement ? null : container.current;\n var rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n var rippleX;\n var rippleY;\n var rippleSize;\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n var _ref = event.touches ? event.touches[0] : event,\n clientX = _ref.clientX,\n clientY = _ref.clientY;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * Math.pow(rect.width, 2) + Math.pow(rect.height, 2)) / 3); // For some reason the animation is broken on Mobile Chrome if the size if even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n var sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n var sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(Math.pow(sizeX, 2) + Math.pow(sizeY, 2));\n } // Touche devices\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = function () {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }; // Delay the execution of the ripple effect.\n\n startTimer.current = setTimeout(function () {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize,\n cb: cb\n });\n }\n }, [centerProp, startCommit]);\n var pulsate = React.useCallback(function () {\n start({}, {\n pulsate: true\n });\n }, [start]);\n var stop = React.useCallback(function (event, cb) {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n event.persist();\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(function () {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(function (oldRipples) {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, function () {\n return {\n pulsate: pulsate,\n start: start,\n stop: stop\n };\n }, [pulsate, start, stop]);\n return /*#__PURE__*/React.createElement(\"span\", _extends({\n className: clsx(classes.root, className),\n ref: container\n }, other), /*#__PURE__*/React.createElement(TransitionGroup, {\n component: null,\n exit: true\n }, ripples));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n flip: false,\n name: 'MuiTouchRipple'\n})( /*#__PURE__*/React.memo(TouchRipple));","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@material-ui/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport withStyles from '../styles/withStyles';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n '&$disabled': {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n },\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Pseudo-class applied to the root element if keyboard focused. */\n focusVisible: {}\n};\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nvar ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {\n var action = props.action,\n buttonRefProp = props.buttonRef,\n _props$centerRipple = props.centerRipple,\n centerRipple = _props$centerRipple === void 0 ? false : _props$centerRipple,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableRipple = props.disableRipple,\n disableRipple = _props$disableRipple === void 0 ? false : _props$disableRipple,\n _props$disableTouchRi = props.disableTouchRipple,\n disableTouchRipple = _props$disableTouchRi === void 0 ? false : _props$disableTouchRi,\n _props$focusRipple = props.focusRipple,\n focusRipple = _props$focusRipple === void 0 ? false : _props$focusRipple,\n focusVisibleClassName = props.focusVisibleClassName,\n onBlur = props.onBlur,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onFocusVisible = props.onFocusVisible,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n onMouseDown = props.onMouseDown,\n onMouseLeave = props.onMouseLeave,\n onMouseUp = props.onMouseUp,\n onTouchEnd = props.onTouchEnd,\n onTouchMove = props.onTouchMove,\n onTouchStart = props.onTouchStart,\n onDragLeave = props.onDragLeave,\n _props$tabIndex = props.tabIndex,\n tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,\n TouchRippleProps = props.TouchRippleProps,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n other = _objectWithoutProperties(props, [\"action\", \"buttonRef\", \"centerRipple\", \"children\", \"classes\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"onBlur\", \"onClick\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"onDragLeave\", \"tabIndex\", \"TouchRippleProps\", \"type\"]);\n var buttonRef = React.useRef(null);\n function getButtonNode() {\n // #StrictMode ready\n return ReactDOM.findDOMNode(buttonRef.current);\n }\n var rippleRef = React.useRef(null);\n var _React$useState = React.useState(false),\n focusVisible = _React$useState[0],\n setFocusVisible = _React$useState[1];\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n var _useIsFocusVisible = useIsFocusVisible(),\n isFocusVisible = _useIsFocusVisible.isFocusVisible,\n onBlurVisible = _useIsFocusVisible.onBlurVisible,\n focusVisibleRef = _useIsFocusVisible.ref;\n React.useImperativeHandle(action, function () {\n return {\n focusVisible: function focusVisible() {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n };\n }, []);\n React.useEffect(function () {\n if (focusVisible && focusRipple && !disableRipple) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible]);\n function useRippleHandler(rippleAction, eventCallback) {\n var skipRippleAction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : disableTouchRipple;\n return useEventCallback(function (event) {\n if (eventCallback) {\n eventCallback(event);\n }\n var ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n var handleMouseDown = useRippleHandler('start', onMouseDown);\n var handleDragLeave = useRippleHandler('stop', onDragLeave);\n var handleMouseUp = useRippleHandler('stop', onMouseUp);\n var handleMouseLeave = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n var handleTouchStart = useRippleHandler('start', onTouchStart);\n var handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n var handleTouchMove = useRippleHandler('stop', onTouchMove);\n var handleBlur = useRippleHandler('stop', function (event) {\n if (focusVisible) {\n onBlurVisible(event);\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n var handleFocus = useEventCallback(function (event) {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n if (isFocusVisible(event)) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n var isNonNativeButton = function isNonNativeButton() {\n var button = getButtonNode();\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE 11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n var keydownRef = React.useRef(false);\n var handleKeyDown = useEventCallback(function (event) {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n var handleKeyUp = useEventCallback(function (event) {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n event.persist();\n rippleRef.current.stop(event, function () {\n rippleRef.current.pulsate(event);\n });\n }\n if (onKeyUp) {\n onKeyUp(event);\n } // Keyboard accessibility for non interactive elements\n\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n var ComponentProp = component;\n if (ComponentProp === 'button' && other.href) {\n ComponentProp = 'a';\n }\n var buttonProps = {};\n if (ComponentProp === 'button') {\n buttonProps.type = type;\n buttonProps.disabled = disabled;\n } else {\n if (ComponentProp !== 'a' || !other.href) {\n buttonProps.role = 'button';\n }\n buttonProps['aria-disabled'] = disabled;\n }\n var handleUserRef = useForkRef(buttonRefProp, ref);\n var handleOwnRef = useForkRef(focusVisibleRef, buttonRef);\n var handleRef = useForkRef(handleUserRef, handleOwnRef);\n var _React$useState2 = React.useState(false),\n mountedState = _React$useState2[0],\n setMountedState = _React$useState2[1];\n React.useEffect(function () {\n setMountedState(true);\n }, []);\n var enableTouchRipple = mountedState && !disableRipple && !disabled;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['Material-UI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n return /*#__PURE__*/React.createElement(ComponentProp, _extends({\n className: clsx(classes.root, className, focusVisible && [classes.focusVisible, focusVisibleClassName], disabled && classes.disabled),\n onBlur: handleBlur,\n onClick: onClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex\n }, buttonProps, other), children, enableTouchRipple ? /*#__PURE__*/\n\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n React.createElement(TouchRipple, _extends({\n ref: rippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n /**\n * @ignore\n *\n * Use that prop to pass a ref to the native button component.\n * @deprecated Use `ref` instead.\n */\n buttonRef: refType,\n /**\n * If `true`, the ripples will be centered.\n * They won't start at the cursor interaction position.\n */\n centerRipple: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n /**\n * If `true`, the base button will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the touch ripple effect will be disabled.\n */\n disableTouchRipple: PropTypes.bool,\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n */\n focusRipple: PropTypes.bool,\n /**\n * This prop can help a person know which element has the keyboard focus.\n * The class name will be applied when the element gain the focus through a keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/master/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n href: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButtonBase'\n})(ButtonBase);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport withStyles from '../styles/withStyles';\nimport { emphasize } from '../styles/colorManipulator';\nimport MoreHorizIcon from '../internal/svg-icons/MoreHoriz';\nimport ButtonBase from '../ButtonBase';\nvar styles = function styles(theme) {\n return {\n root: {\n display: 'flex',\n marginLeft: theme.spacing(0.5),\n marginRight: theme.spacing(0.5),\n backgroundColor: theme.palette.grey[100],\n color: theme.palette.grey[700],\n borderRadius: 2,\n cursor: 'pointer',\n '&:hover, &:focus': {\n backgroundColor: theme.palette.grey[200]\n },\n '&:active': {\n boxShadow: theme.shadows[0],\n backgroundColor: emphasize(theme.palette.grey[200], 0.12)\n }\n },\n icon: {\n width: 24,\n height: 16\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\nfunction BreadcrumbCollapsed(props) {\n var classes = props.classes,\n other = _objectWithoutProperties(props, [\"classes\"]);\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n component: \"li\",\n className: classes.root,\n focusRipple: true\n }, other), /*#__PURE__*/React.createElement(MoreHorizIcon, {\n className: classes.icon\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? BreadcrumbCollapsed.propTypes = {\n /**\n * @ignore\n */\n classes: PropTypes.object.isRequired\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateBreadcrumbCollapsed'\n})(BreadcrumbCollapsed);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport BreadcrumbCollapsed from './BreadcrumbCollapsed';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n /* Styles applied to the ol element. */\n ol: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n padding: 0,\n margin: 0,\n listStyle: 'none'\n },\n /* Styles applied to the li element. */\n li: {},\n /* Styles applied to the separator element. */\n separator: {\n display: 'flex',\n userSelect: 'none',\n marginLeft: 8,\n marginRight: 8\n }\n};\nfunction insertSeparators(items, className, separator) {\n return items.reduce(function (acc, current, index) {\n if (index < items.length - 1) {\n acc = acc.concat(current, /*#__PURE__*/React.createElement(\"li\", {\n \"aria-hidden\": true,\n key: \"separator-\".concat(index),\n className: className\n }, separator));\n } else {\n acc.push(current);\n }\n return acc;\n }, []);\n}\nvar Breadcrumbs = /*#__PURE__*/React.forwardRef(function Breadcrumbs(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'nav' : _props$component,\n _props$expandText = props.expandText,\n expandText = _props$expandText === void 0 ? 'Show path' : _props$expandText,\n _props$itemsAfterColl = props.itemsAfterCollapse,\n itemsAfterCollapse = _props$itemsAfterColl === void 0 ? 1 : _props$itemsAfterColl,\n _props$itemsBeforeCol = props.itemsBeforeCollapse,\n itemsBeforeCollapse = _props$itemsBeforeCol === void 0 ? 1 : _props$itemsBeforeCol,\n _props$maxItems = props.maxItems,\n maxItems = _props$maxItems === void 0 ? 8 : _props$maxItems,\n _props$separator = props.separator,\n separator = _props$separator === void 0 ? '/' : _props$separator,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"expandText\", \"itemsAfterCollapse\", \"itemsBeforeCollapse\", \"maxItems\", \"separator\"]);\n var _React$useState = React.useState(false),\n expanded = _React$useState[0],\n setExpanded = _React$useState[1];\n var renderItemsBeforeAndAfter = function renderItemsBeforeAndAfter(allItems) {\n var handleClickExpand = function handleClickExpand(event) {\n setExpanded(true); // The clicked element received the focus but gets removed from the DOM.\n // Let's keep the focus in the component after expanding.\n\n var focusable = event.currentTarget.parentNode.querySelector('a[href],button,[tabindex]');\n if (focusable) {\n focusable.focus();\n }\n }; // This defends against someone passing weird input, to ensure that if all\n // items would be shown anyway, we just show all items without the EllipsisItem\n\n if (itemsBeforeCollapse + itemsAfterCollapse >= allItems.length) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Material-UI: You have provided an invalid combination of props to the Breadcrumbs.', \"itemsAfterCollapse={\".concat(itemsAfterCollapse, \"} + itemsBeforeCollapse={\").concat(itemsBeforeCollapse, \"} >= maxItems={\").concat(maxItems, \"}\")].join('\\n'));\n }\n return allItems;\n }\n return [].concat(_toConsumableArray(allItems.slice(0, itemsBeforeCollapse)), [/*#__PURE__*/React.createElement(BreadcrumbCollapsed, {\n \"aria-label\": expandText,\n key: \"ellipsis\",\n onClick: handleClickExpand\n })], _toConsumableArray(allItems.slice(allItems.length - itemsAfterCollapse, allItems.length)));\n };\n var allItems = React.Children.toArray(children).filter(function (child) {\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Breadcrumbs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n return /*#__PURE__*/React.isValidElement(child);\n }).map(function (child, index) {\n return /*#__PURE__*/React.createElement(\"li\", {\n className: classes.li,\n key: \"child-\".concat(index)\n }, child);\n });\n return /*#__PURE__*/React.createElement(Typography, _extends({\n ref: ref,\n component: Component,\n color: \"textSecondary\",\n className: clsx(classes.root, className)\n }, other), /*#__PURE__*/React.createElement(\"ol\", {\n className: classes.ol\n }, insertSeparators(expanded || maxItems && allItems.length <= maxItems ? allItems : renderItemsBeforeAndAfter(allItems), classes.separator, separator)));\n});\nprocess.env.NODE_ENV !== \"production\" ? Breadcrumbs.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The breadcrumb children.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * Override the default label for the expand button.\n *\n * For localization purposes, you can use the provided [translations](/guides/localization/).\n */\n expandText: PropTypes.string,\n /**\n * If max items is exceeded, the number of items to show after the ellipsis.\n */\n itemsAfterCollapse: PropTypes.number,\n /**\n * If max items is exceeded, the number of items to show before the ellipsis.\n */\n itemsBeforeCollapse: PropTypes.number,\n /**\n * Specifies the maximum number of breadcrumbs to display. When there are more\n * than the maximum number, only the first `itemsBeforeCollapse` and last `itemsAfterCollapse`\n * will be shown, with an ellipsis in between.\n */\n maxItems: PropTypes.number,\n /**\n * Custom separator node.\n */\n separator: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiBreadcrumbs'\n})(Breadcrumbs);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport { fade } from '../styles/colorManipulator';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.button, {\n boxSizing: 'border-box',\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: theme.shape.borderRadius,\n color: theme.palette.text.primary,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: fade(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n },\n '&$disabled': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n }),\n /* Styles applied to the span element that wraps the children. */\n label: {\n width: '100%',\n // Ensure the correct width for iOS Safari\n display: 'inherit',\n alignItems: 'inherit',\n justifyContent: 'inherit'\n },\n /* Styles applied to the root element if `variant=\"text\"`. */\n text: {\n padding: '6px 8px'\n },\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"primary\"`. */\n textPrimary: {\n color: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n /* Styles applied to the root element if `variant=\"text\"` and `color=\"secondary\"`. */\n textSecondary: {\n color: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n padding: '5px 15px',\n border: \"1px solid \".concat(theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)'),\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabledBackground)\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"primary\"`. */\n outlinedPrimary: {\n color: theme.palette.primary.main,\n border: \"1px solid \".concat(fade(theme.palette.primary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.primary.main),\n backgroundColor: fade(theme.palette.primary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"` and `color=\"secondary\"`. */\n outlinedSecondary: {\n color: theme.palette.secondary.main,\n border: \"1px solid \".concat(fade(theme.palette.secondary.main, 0.5)),\n '&:hover': {\n border: \"1px solid \".concat(theme.palette.secondary.main),\n backgroundColor: fade(theme.palette.secondary.main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&$disabled': {\n border: \"1px solid \".concat(theme.palette.action.disabled)\n }\n },\n /* Styles applied to the root element if `variant=\"contained\"`. */\n contained: {\n color: theme.palette.getContrastText(theme.palette.grey[300]),\n backgroundColor: theme.palette.grey[300],\n boxShadow: theme.shadows[2],\n '&:hover': {\n backgroundColor: theme.palette.grey.A100,\n boxShadow: theme.shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: theme.shadows[2],\n backgroundColor: theme.palette.grey[300]\n },\n '&$disabled': {\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n '&$focusVisible': {\n boxShadow: theme.shadows[6]\n },\n '&:active': {\n boxShadow: theme.shadows[8]\n },\n '&$disabled': {\n color: theme.palette.action.disabled,\n boxShadow: theme.shadows[0],\n backgroundColor: theme.palette.action.disabledBackground\n }\n },\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"primary\"`. */\n containedPrimary: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:hover': {\n backgroundColor: theme.palette.primary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.primary.main\n }\n }\n },\n /* Styles applied to the root element if `variant=\"contained\"` and `color=\"secondary\"`. */\n containedSecondary: {\n color: theme.palette.secondary.contrastText,\n backgroundColor: theme.palette.secondary.main,\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.palette.secondary.main\n }\n }\n },\n /* Styles applied to the root element if `disableElevation={true}`. */\n disableElevation: {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n '&$focusVisible': {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n '&$disabled': {\n boxShadow: 'none'\n }\n },\n /* Pseudo-class applied to the ButtonBase root element if the button is keyboard focused. */\n focusVisible: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit',\n borderColor: 'currentColor'\n },\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"text\"`. */\n textSizeSmall: {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n },\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"text\"`. */\n textSizeLarge: {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n },\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"outlined\"`. */\n outlinedSizeSmall: {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n },\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"outlined\"`. */\n outlinedSizeLarge: {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n },\n /* Styles applied to the root element if `size=\"small\"` and `variant=\"contained\"`. */\n containedSizeSmall: {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n },\n /* Styles applied to the root element if `size=\"large\"` and `variant=\"contained\"`. */\n containedSizeLarge: {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n },\n /* Styles applied to the root element if `size=\"small\"`. */\n sizeSmall: {},\n /* Styles applied to the root element if `size=\"large\"`. */\n sizeLarge: {},\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n /* Styles applied to the startIcon element if supplied. */\n startIcon: {\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4,\n '&$iconSizeSmall': {\n marginLeft: -2\n }\n },\n /* Styles applied to the endIcon element if supplied. */\n endIcon: {\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8,\n '&$iconSizeSmall': {\n marginRight: -2\n }\n },\n /* Styles applied to the icon element if supplied and `size=\"small\"`. */\n iconSizeSmall: {\n '& > *:first-child': {\n fontSize: 18\n }\n },\n /* Styles applied to the icon element if supplied and `size=\"medium\"`. */\n iconSizeMedium: {\n '& > *:first-child': {\n fontSize: 20\n }\n },\n /* Styles applied to the icon element if supplied and `size=\"large\"`. */\n iconSizeLarge: {\n '& > *:first-child': {\n fontSize: 22\n }\n }\n };\n};\nvar Button = /*#__PURE__*/React.forwardRef(function Button(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n component = _props$component === void 0 ? 'button' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableElevati = props.disableElevation,\n disableElevation = _props$disableElevati === void 0 ? false : _props$disableElevati,\n _props$disableFocusRi = props.disableFocusRipple,\n disableFocusRipple = _props$disableFocusRi === void 0 ? false : _props$disableFocusRi,\n endIconProp = props.endIcon,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$size = props.size,\n size = _props$size === void 0 ? 'medium' : _props$size,\n startIconProp = props.startIcon,\n _props$type = props.type,\n type = _props$type === void 0 ? 'button' : _props$type,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'text' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"]);\n var startIcon = startIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.startIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, startIconProp);\n var endIcon = endIconProp && /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(classes.endIcon, classes[\"iconSize\".concat(capitalize(size))])\n }, endIconProp);\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, classes[variant], className, color === 'inherit' ? classes.colorInherit : color !== 'default' && classes[\"\".concat(variant).concat(capitalize(color))], size !== 'medium' && [classes[\"\".concat(variant, \"Size\").concat(capitalize(size))], classes[\"size\".concat(capitalize(size))]], disableElevation && classes.disableElevation, disabled && classes.disabled, fullWidth && classes.fullWidth),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other), /*#__PURE__*/React.createElement(\"span\", {\n className: classes.label\n }, startIcon, children, endIcon));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the button.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, the button will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, no elevation is used.\n */\n disableElevation: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple will be disabled.\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect will be disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `focusVisibleClassName`.\n */\n disableRipple: PropTypes.bool,\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * If `true`, the button will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n /**\n * The size of the button.\n * `small` is equivalent to the dense button styling.\n */\n size: PropTypes.oneOf(['large', 'medium', 'small']),\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['contained', 'outlined', 'text'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiButton'\n})(Button);","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func) {\n var wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 166;\n var timeout;\n function debounced() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line consistent-this\n var that = this;\n var later = function later() {\n func.apply(that, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = function () {\n clearTimeout(timeout);\n };\n return debounced;\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n var doc = ownerDocument(node);\n return doc.defaultView || window;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n return funcs.reduce(function (acc, func) {\n if (func == null) {\n return acc;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof func !== 'function') {\n console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n }\n }\n return function chainedFunction() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, function () {});\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType } from '@material-ui/utils';\nimport setRef from '../utils/setRef';\nimport useForkRef from '../utils/useForkRef';\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container; // #StrictMode ready\n\n return ReactDOM.findDOMNode(container);\n}\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n */\n\nvar Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n var children = props.children,\n container = props.container,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n onRendered = props.onRendered;\n var _React$useState = React.useState(null),\n mountNode = _React$useState[0],\n setMountNode = _React$useState[1];\n var handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(function () {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(function () {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return function () {\n setRef(ref, null);\n };\n }\n return undefined;\n }, [ref, mountNode, disablePortal]);\n useEnhancedEffect(function () {\n if (onRendered && (mountNode || disablePortal)) {\n onRendered();\n }\n }, [onRendered, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n return /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n });\n }\n return children;\n }\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode;\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n /**\n * Callback fired once the children has been mounted into the `container`.\n *\n * This prop will be deprecated and removed in v5, the ref can be used instead.\n */\n onRendered: PropTypes.func\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/3ffe3a5d82f6f561b82ff78d82b32a7d14aed558/js/src/modal.js#L512-L519\nexport default function getScrollbarSize() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '99px';\n scrollDiv.style.height = '99px';\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarSize;\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow'; // Is a vertical scrollbar displayed?\n\nfunction isOverflowing(container) {\n var doc = ownerDocument(container);\n if (doc.body === container) {\n return ownerWindow(doc).innerWidth > doc.documentElement.clientWidth;\n }\n return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(node, show) {\n if (show) {\n node.setAttribute('aria-hidden', 'true');\n } else {\n node.removeAttribute('aria-hidden');\n }\n}\nfunction getPaddingRight(node) {\n return parseInt(window.getComputedStyle(node)['padding-right'], 10) || 0;\n}\nfunction ariaHiddenSiblings(container, mountNode, currentNode) {\n var nodesToExclude = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n var show = arguments.length > 4 ? arguments[4] : undefined;\n var blacklist = [mountNode, currentNode].concat(_toConsumableArray(nodesToExclude));\n var blacklistTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE'];\n [].forEach.call(container.children, function (node) {\n if (node.nodeType === 1 && blacklist.indexOf(node) === -1 && blacklistTagNames.indexOf(node.tagName) === -1) {\n ariaHidden(node, show);\n }\n });\n}\nfunction findIndexOf(containerInfo, callback) {\n var idx = -1;\n containerInfo.some(function (item, index) {\n if (callback(item)) {\n idx = index;\n return true;\n }\n return false;\n });\n return idx;\n}\nfunction handleContainer(containerInfo, props) {\n var restoreStyle = [];\n var restorePaddings = [];\n var container = containerInfo.container;\n var fixedNodes;\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n var scrollbarSize = getScrollbarSize();\n restoreStyle.push({\n value: container.style.paddingRight,\n key: 'padding-right',\n el: container\n }); // Use computed style, here to get the real padding to add our scrollbar width.\n\n container.style['padding-right'] = \"\".concat(getPaddingRight(container) + scrollbarSize, \"px\"); // .mui-fixed is a global helper.\n\n fixedNodes = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedNodes, function (node) {\n restorePaddings.push(node.style.paddingRight);\n node.style.paddingRight = \"\".concat(getPaddingRight(node) + scrollbarSize, \"px\");\n });\n } // Improve Gatsby support\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n\n var parent = container.parentElement;\n var scrollContainer = parent.nodeName === 'HTML' && window.getComputedStyle(parent)['overflow-y'] === 'scroll' ? parent : container; // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n key: 'overflow',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n var restore = function restore() {\n if (fixedNodes) {\n [].forEach.call(fixedNodes, function (node, i) {\n if (restorePaddings[i]) {\n node.style.paddingRight = restorePaddings[i];\n } else {\n node.style.removeProperty('padding-right');\n }\n });\n }\n restoreStyle.forEach(function (_ref) {\n var value = _ref.value,\n el = _ref.el,\n key = _ref.key;\n if (value) {\n el.style.setProperty(key, value);\n } else {\n el.style.removeProperty(key);\n }\n });\n };\n return restore;\n}\nfunction getHiddenSiblings(container) {\n var hiddenSiblings = [];\n [].forEach.call(container.children, function (node) {\n if (node.getAttribute && node.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(node);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\n\nvar ModalManager = /*#__PURE__*/function () {\n function ModalManager() {\n _classCallCheck(this, ModalManager);\n\n // this.modals[modalIndex] = modal\n this.modals = []; // this.containers[containerIndex] = {\n // modals: [],\n // container,\n // restore: null,\n // }\n\n this.containers = [];\n }\n _createClass(ModalManager, [{\n key: \"add\",\n value: function add(modal, container) {\n var modalIndex = this.modals.indexOf(modal);\n if (modalIndex !== -1) {\n return modalIndex;\n }\n modalIndex = this.modals.length;\n this.modals.push(modal); // If the modal we are adding is already in the DOM.\n\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n var hiddenSiblingNodes = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mountNode, modal.modalRef, hiddenSiblingNodes, true);\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.container === container;\n });\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n this.containers.push({\n modals: [modal],\n container: container,\n restore: null,\n hiddenSiblingNodes: hiddenSiblingNodes\n });\n return modalIndex;\n }\n }, {\n key: \"mount\",\n value: function mount(modal, props) {\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n }, {\n key: \"remove\",\n value: function remove(modal) {\n var modalIndex = this.modals.indexOf(modal);\n if (modalIndex === -1) {\n return modalIndex;\n }\n var containerIndex = findIndexOf(this.containers, function (item) {\n return item.modals.indexOf(modal) !== -1;\n });\n var containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1); // If that was the last modal in a container, clean up the container.\n\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, true);\n }\n ariaHiddenSiblings(containerInfo.container, modal.mountNode, modal.modalRef, containerInfo.hiddenSiblingNodes, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n var nextTop = containerInfo.modals[containerInfo.modals.length - 1]; // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n return modalIndex;\n }\n }, {\n key: \"isTopModal\",\n value: function isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n }]);\n return ModalManager;\n}();\nexport { ModalManager as default };","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex, camelcase */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport useForkRef from '../utils/useForkRef';\nimport { exactProp } from '@material-ui/utils';\n/**\n * Utility component that locks focus inside the component.\n */\n\nfunction Unstable_TrapFocus(props) {\n var children = props.children,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n getDoc = props.getDoc,\n isEnabled = props.isEnabled,\n open = props.open;\n var ignoreNextEnforceFocus = React.useRef();\n var sentinelStart = React.useRef(null);\n var sentinelEnd = React.useRef(null);\n var nodeToRestore = React.useRef();\n var rootRef = React.useRef(null); // can be removed once we drop support for non ref forwarding class components\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n rootRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(children.ref, handleOwnRef);\n var prevOpenRef = React.useRef();\n React.useEffect(function () {\n prevOpenRef.current = open;\n }, [open]);\n if (!prevOpenRef.current && open && typeof window !== 'undefined') {\n // WARNING: Potentially unsafe in concurrent mode.\n // The way the read on `nodeToRestore` is setup could make this actually safe.\n // Say we render `open={false}` -> `open={true}` but never commit.\n // We have now written a state that wasn't committed. But no committed effect\n // will read this wrong value. We only read from `nodeToRestore` in effects\n // that were committed on `open={true}`\n // WARNING: Prevents the instance from being garbage collected. Should only\n // hold a weak ref.\n nodeToRestore.current = getDoc().activeElement;\n }\n React.useEffect(function () {\n if (!open) {\n return;\n }\n var doc = ownerDocument(rootRef.current); // We might render an empty child.\n\n if (!disableAutoFocus && rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n if (!rootRef.current.hasAttribute('tabIndex')) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['Material-UI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n }\n rootRef.current.setAttribute('tabIndex', -1);\n }\n rootRef.current.focus();\n }\n var contain = function contain() {\n var rootElement = rootRef.current; // Cleanup functions are executed lazily in React 17.\n // Contain can be called between the component being unmounted and its cleanup function being run.\n\n if (rootElement === null) {\n return;\n }\n if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n ignoreNextEnforceFocus.current = false;\n return;\n }\n if (rootRef.current && !rootRef.current.contains(doc.activeElement)) {\n rootRef.current.focus();\n }\n };\n var loopFocus = function loopFocus(event) {\n // 9 = Tab\n if (disableEnforceFocus || !isEnabled() || event.keyCode !== 9) {\n return;\n } // Make sure the next tab starts from the right place.\n\n if (doc.activeElement === rootRef.current) {\n // We need to ignore the next contain as\n // it will try to move the focus back to the rootRef element.\n ignoreNextEnforceFocus.current = true;\n if (event.shiftKey) {\n sentinelEnd.current.focus();\n } else {\n sentinelStart.current.focus();\n }\n }\n };\n doc.addEventListener('focus', contain, true);\n doc.addEventListener('keydown', loopFocus, true); // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area\n // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n //\n // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n\n var interval = setInterval(function () {\n contain();\n }, 50);\n return function () {\n clearInterval(interval);\n doc.removeEventListener('focus', contain, true);\n doc.removeEventListener('keydown', loopFocus, true); // restoreLastFocus()\n\n if (!disableRestoreFocus) {\n // In IE 11 it is possible for document.activeElement to be null resulting\n // in nodeToRestore.current being null.\n // Not all elements in IE 11 have a focus method.\n // Once IE 11 support is dropped the focus() call can be unconditional.\n if (nodeToRestore.current && nodeToRestore.current.focus) {\n nodeToRestore.current.focus();\n }\n nodeToRestore.current = null;\n }\n };\n }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelStart,\n \"data-test\": \"sentinelStart\"\n }), /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef\n }), /*#__PURE__*/React.createElement(\"div\", {\n tabIndex: 0,\n ref: sentinelEnd,\n \"data-test\": \"sentinelEnd\"\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? Unstable_TrapFocus.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.node,\n /**\n * If `true`, the trap focus will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any trap focus children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the trap focus less\n * accessible to assistive technologies, like screen readers.\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the trap focus will not prevent focus from leaving the trap focus while open.\n *\n * Generally this should never be set to `true` as it makes the trap focus less\n * accessible to assistive technologies, like screen readers.\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, the trap focus will not restore focus to previously focused element once\n * trap focus is hidden.\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Return the document to consider.\n * We use it to implement the restore focus between different browser documents.\n */\n getDoc: PropTypes.func.isRequired,\n /**\n * Do we still want to enforce the focus?\n * This prop helps nesting TrapFocus elements.\n */\n isEnabled: PropTypes.func.isRequired,\n /**\n * If `true`, focus will be locked.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Unstable_TrapFocus['propTypes' + ''] = exactProp(Unstable_TrapFocus.propTypes);\n}\nexport default Unstable_TrapFocus;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n zIndex: -1,\n position: 'fixed',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n },\n /* Styles applied to the root element if `invisible={true}`. */\n invisible: {\n backgroundColor: 'transparent'\n }\n};\n/**\n * @ignore - internal component.\n */\n\nvar SimpleBackdrop = /*#__PURE__*/React.forwardRef(function SimpleBackdrop(props, ref) {\n var _props$invisible = props.invisible,\n invisible = _props$invisible === void 0 ? false : _props$invisible,\n open = props.open,\n other = _objectWithoutProperties(props, [\"invisible\", \"open\"]);\n return open ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-hidden\": true,\n ref: ref\n }, other, {\n style: _extends({}, styles.root, invisible ? styles.invisible : {}, other.style)\n })) : null;\n});\nprocess.env.NODE_ENV !== \"production\" ? SimpleBackdrop.propTypes = {\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n */\n invisible: PropTypes.bool,\n /**\n * If `true`, the backdrop is open.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nexport default SimpleBackdrop;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { getThemeProps, useTheme } from '@material-ui/styles';\nimport { elementAcceptingRef, HTMLElementType } from '@material-ui/utils';\nimport ownerDocument from '../utils/ownerDocument';\nimport Portal from '../Portal';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport zIndex from '../styles/zIndex';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport TrapFocus from '../Unstable_TrapFocus';\nimport SimpleBackdrop from './SimpleBackdrop';\nfunction getContainer(container) {\n container = typeof container === 'function' ? container() : container;\n return ReactDOM.findDOMNode(container);\n}\nfunction getHasTransition(props) {\n return props.children ? props.children.props.hasOwnProperty('in') : false;\n} // A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\n\nvar defaultManager = new ModalManager();\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'fixed',\n zIndex: theme.zIndex.modal,\n right: 0,\n bottom: 0,\n top: 0,\n left: 0\n },\n /* Styles applied to the root element if the `Modal` has exited. */\n hidden: {\n visibility: 'hidden'\n }\n };\n};\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/api/dialog/)\n * - [Drawer](/api/drawer/)\n * - [Menu](/api/menu/)\n * - [Popover](/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\n\nvar Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n var theme = useTheme();\n var props = getThemeProps({\n name: 'MuiModal',\n props: _extends({}, inProps),\n theme: theme\n });\n var _props$BackdropCompon = props.BackdropComponent,\n BackdropComponent = _props$BackdropCompon === void 0 ? SimpleBackdrop : _props$BackdropCompon,\n BackdropProps = props.BackdropProps,\n children = props.children,\n _props$closeAfterTran = props.closeAfterTransition,\n closeAfterTransition = _props$closeAfterTran === void 0 ? false : _props$closeAfterTran,\n container = props.container,\n _props$disableAutoFoc = props.disableAutoFocus,\n disableAutoFocus = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$disableBackdro = props.disableBackdropClick,\n disableBackdropClick = _props$disableBackdro === void 0 ? false : _props$disableBackdro,\n _props$disableEnforce = props.disableEnforceFocus,\n disableEnforceFocus = _props$disableEnforce === void 0 ? false : _props$disableEnforce,\n _props$disableEscapeK = props.disableEscapeKeyDown,\n disableEscapeKeyDown = _props$disableEscapeK === void 0 ? false : _props$disableEscapeK,\n _props$disablePortal = props.disablePortal,\n disablePortal = _props$disablePortal === void 0 ? false : _props$disablePortal,\n _props$disableRestore = props.disableRestoreFocus,\n disableRestoreFocus = _props$disableRestore === void 0 ? false : _props$disableRestore,\n _props$disableScrollL = props.disableScrollLock,\n disableScrollLock = _props$disableScrollL === void 0 ? false : _props$disableScrollL,\n _props$hideBackdrop = props.hideBackdrop,\n hideBackdrop = _props$hideBackdrop === void 0 ? false : _props$hideBackdrop,\n _props$keepMounted = props.keepMounted,\n keepMounted = _props$keepMounted === void 0 ? false : _props$keepMounted,\n _props$manager = props.manager,\n manager = _props$manager === void 0 ? defaultManager : _props$manager,\n onBackdropClick = props.onBackdropClick,\n onClose = props.onClose,\n onEscapeKeyDown = props.onEscapeKeyDown,\n onRendered = props.onRendered,\n open = props.open,\n other = _objectWithoutProperties(props, [\"BackdropComponent\", \"BackdropProps\", \"children\", \"closeAfterTransition\", \"container\", \"disableAutoFocus\", \"disableBackdropClick\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onEscapeKeyDown\", \"onRendered\", \"open\"]);\n var _React$useState = React.useState(true),\n exited = _React$useState[0],\n setExited = _React$useState[1];\n var modal = React.useRef({});\n var mountNodeRef = React.useRef(null);\n var modalRef = React.useRef(null);\n var handleRef = useForkRef(modalRef, ref);\n var hasTransition = getHasTransition(props);\n var getDoc = function getDoc() {\n return ownerDocument(mountNodeRef.current);\n };\n var getModal = function getModal() {\n modal.current.modalRef = modalRef.current;\n modal.current.mountNode = mountNodeRef.current;\n return modal.current;\n };\n var handleMounted = function handleMounted() {\n manager.mount(getModal(), {\n disableScrollLock: disableScrollLock\n }); // Fix a bug on Chrome where the scroll isn't initially 0.\n\n modalRef.current.scrollTop = 0;\n };\n var handleOpen = useEventCallback(function () {\n var resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer); // The element was already mounted.\n\n if (modalRef.current) {\n handleMounted();\n }\n });\n var isTopModal = React.useCallback(function () {\n return manager.isTopModal(getModal());\n }, [manager]);\n var handlePortalRef = useEventCallback(function (node) {\n mountNodeRef.current = node;\n if (!node) {\n return;\n }\n if (onRendered) {\n onRendered();\n }\n if (open && isTopModal()) {\n handleMounted();\n } else {\n ariaHidden(modalRef.current, true);\n }\n });\n var handleClose = React.useCallback(function () {\n manager.remove(getModal());\n }, [manager]);\n React.useEffect(function () {\n return function () {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(function () {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n if (!keepMounted && !open && (!hasTransition || exited)) {\n return null;\n }\n var handleEnter = function handleEnter() {\n setExited(false);\n };\n var handleExited = function handleExited() {\n setExited(true);\n if (closeAfterTransition) {\n handleClose();\n }\n };\n var handleBackdropClick = function handleBackdropClick(event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n if (!disableBackdropClick && onClose) {\n onClose(event, 'backdropClick');\n }\n };\n var handleKeyDown = function handleKeyDown(event) {\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviours like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || !isTopModal()) {\n return;\n }\n if (onEscapeKeyDown) {\n onEscapeKeyDown(event);\n }\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n var inlineStyle = styles(theme || {\n zIndex: zIndex\n });\n var childProps = {};\n if (children.props.tabIndex === undefined) {\n childProps.tabIndex = children.props.tabIndex || '-1';\n } // It's a Transition like component\n\n if (hasTransition) {\n childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n }\n return /*#__PURE__*/React.createElement(Portal, {\n ref: handlePortalRef,\n container: container,\n disablePortal: disablePortal\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: handleRef,\n onKeyDown: handleKeyDown,\n role: \"presentation\"\n }, other, {\n style: _extends({}, inlineStyle.root, !open && exited ? inlineStyle.hidden : {}, other.style)\n }), hideBackdrop ? null : /*#__PURE__*/React.createElement(BackdropComponent, _extends({\n open: open,\n onClick: handleBackdropClick\n }, BackdropProps)), /*#__PURE__*/React.createElement(TrapFocus, {\n disableEnforceFocus: disableEnforceFocus,\n disableAutoFocus: disableAutoFocus,\n disableRestoreFocus: disableRestoreFocus,\n getDoc: getDoc,\n isEnabled: isTopModal,\n open: open\n }, /*#__PURE__*/React.cloneElement(children, childProps))));\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes = {\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n */\n BackdropComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Backdrop`](/api/backdrop/) element.\n */\n BackdropProps: PropTypes.object,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n */\n closeAfterTransition: PropTypes.bool,\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, clicking the backdrop will not fire `onClose`.\n */\n disableBackdropClick: PropTypes.bool,\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, hitting escape will not fire `onClose`.\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * Disable the portal behavior.\n * The children stay within it's parent DOM hierarchy.\n */\n disablePortal: PropTypes.bool,\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden.\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Disable the scroll lock behavior.\n */\n disableScrollLock: PropTypes.bool,\n /**\n * If `true`, the backdrop is not rendered.\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n */\n keepMounted: PropTypes.bool,\n /**\n * @ignore\n */\n manager: PropTypes.object,\n /**\n * Callback fired when the backdrop is clicked.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the escape key is pressed,\n * `disableEscapeKeyDown` is false and the modal is in focus.\n */\n onEscapeKeyDown: PropTypes.func,\n /**\n * Callback fired once the children has been mounted into the `container`.\n * It signals that the `open={true}` prop took effect.\n *\n * This prop will be deprecated and removed in v5, the ref can be used instead.\n */\n onRendered: PropTypes.func,\n /**\n * If `true`, the modal is open.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nexport default Modal;","export default {\n disabled: false\n};","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n function Transition(props, context) {\n var _this;\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n var _proto = Transition.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n if (prevProps !== this.props) {\n var status = this.state.status;\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n this.updateStatus(false, nextStatus);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n _proto.performExit = function performExit() {\n var _this3 = this;\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n var active = true;\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n this.nextCallback.cancel = function () {\n active = false;\n };\n return this.nextCallback;\n };\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n _proto.render = function render() {\n var status = this.state.status;\n if (status === UNMOUNTED) {\n return null;\n }\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n return /*#__PURE__*/(\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n return Transition;\n}(React.Component);\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return pt.apply(void 0, [props].concat(args));\n },\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import { useTheme as useThemeWithoutDefault } from '@material-ui/styles';\nimport React from 'react';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n var theme = useThemeWithoutDefault() || defaultTheme;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","export var reflow = function reflow(node) {\n return node.scrollTop;\n};\nexport function getTransitionProps(props, options) {\n var timeout = props.timeout,\n _props$style = props.style,\n style = _props$style === void 0 ? {} : _props$style;\n return {\n duration: style.transitionDuration || typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n delay: style.transitionDelay\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nfunction getScale(value) {\n return \"scale(\".concat(value, \", \").concat(Math.pow(value, 2), \")\");\n}\nvar styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n/**\n * The Grow transition is used by the [Tooltip](/components/tooltips/) and\n * [Popover](/components/popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\n\nvar Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n var children = props.children,\n _props$disableStrictM = props.disableStrictModeCompat,\n disableStrictModeCompat = _props$disableStrictM === void 0 ? false : _props$disableStrictM,\n inProp = props.in,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n style = props.style,\n _props$timeout = props.timeout,\n timeout = _props$timeout === void 0 ? 'auto' : _props$timeout,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Transition : _props$TransitionComp,\n other = _objectWithoutProperties(props, [\"children\", \"disableStrictModeCompat\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"]);\n var timer = React.useRef();\n var autoTimeout = React.useRef();\n var theme = useTheme();\n var enableStrictModeCompat = theme.unstable_strictMode && !disableStrictModeCompat;\n var nodeRef = React.useRef(null);\n var foreignRef = useForkRef(children.ref, ref);\n var handleRef = useForkRef(enableStrictModeCompat ? nodeRef : undefined, foreignRef);\n var normalizedTransitionCallback = function normalizedTransitionCallback(callback) {\n return function (nodeOrAppearing, maybeAppearing) {\n if (callback) {\n var _ref = enableStrictModeCompat ? [nodeRef.current, nodeOrAppearing] : [nodeOrAppearing, maybeAppearing],\n _ref2 = _slicedToArray(_ref, 2),\n node = _ref2[0],\n isAppearing = _ref2[1]; // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n\n if (isAppearing === undefined) {\n callback(node);\n } else {\n callback(node, isAppearing);\n }\n }\n };\n };\n var handleEntering = normalizedTransitionCallback(onEntering);\n var handleEnter = normalizedTransitionCallback(function (node, isAppearing) {\n reflow(node); // So the animation always start from the start.\n\n var _getTransitionProps = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'enter'\n }),\n transitionDuration = _getTransitionProps.duration,\n delay = _getTransitionProps.delay;\n var duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n var handleEntered = normalizedTransitionCallback(onEntered);\n var handleExiting = normalizedTransitionCallback(onExiting);\n var handleExit = normalizedTransitionCallback(function (node) {\n var _getTransitionProps2 = getTransitionProps({\n style: style,\n timeout: timeout\n }, {\n mode: 'exit'\n }),\n transitionDuration = _getTransitionProps2.duration,\n delay = _getTransitionProps2.delay;\n var duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration: duration,\n delay: delay\n }), theme.transitions.create('transform', {\n duration: duration * 0.666,\n delay: delay || duration * 0.333\n })].join(',');\n node.style.opacity = '0';\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n var handleExited = normalizedTransitionCallback(onExited);\n var addEndListener = function addEndListener(nodeOrNext, maybeNext) {\n var next = enableStrictModeCompat ? nodeOrNext : maybeNext;\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n };\n React.useEffect(function () {\n return function () {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: addEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other), function (state, childProps) {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A single child content element.\n */\n children: PropTypes.element,\n /**\n * Enable this prop if you encounter 'Function components cannot be given refs',\n * use `unstable_createStrictModeTheme`,\n * and can't forward the ref in the child component.\n */\n disableStrictModeCompat: PropTypes.bool,\n /**\n * If `true`, show the component; triggers the enter or exit animation.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var elevations = {};\n theme.shadows.forEach(function (shadow, index) {\n elevations[\"elevation\".concat(index)] = {\n boxShadow: shadow\n };\n });\n return _extends({\n /* Styles applied to the root element. */\n root: {\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n },\n /* Styles applied to the root element if `square={false}`. */\n rounded: {\n borderRadius: theme.shape.borderRadius\n },\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n border: \"1px solid \".concat(theme.palette.divider)\n }\n }, elevations);\n};\nvar Paper = /*#__PURE__*/React.forwardRef(function Paper(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$square = props.square,\n square = _props$square === void 0 ? false : _props$square,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 1 : _props$elevation,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'elevation' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"square\", \"elevation\", \"variant\"]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, variant === 'outlined' ? classes.outlined : classes[\"elevation\".concat(elevation)], !square && classes.rounded),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n */\n elevation: chainPropTypes(PropTypes.number, function (props) {\n var classes = props.classes,\n elevation = props.elevation; // in case `withStyles` fails to inject we don't need this warning\n\n if (classes === undefined) {\n return null;\n }\n if (elevation != null && classes[\"elevation\".concat(elevation)] === undefined) {\n return new Error(\"Material-UI: This elevation `\".concat(elevation, \"` is not implemented.\"));\n }\n return null;\n }),\n /**\n * If `true`, rounded corners are disabled.\n */\n square: PropTypes.bool,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['elevation', 'outlined'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiPaper'\n})(Paper);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport { chainPropTypes, elementTypeAcceptingRef, refType, HTMLElementType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport createChainedFunction from '../utils/createChainedFunction';\nimport withStyles from '../styles/withStyles';\nimport Modal from '../Modal';\nimport Grow from '../Grow';\nimport Paper from '../Paper';\nexport function getOffsetTop(rect, vertical) {\n var offset = 0;\n if (typeof vertical === 'number') {\n offset = vertical;\n } else if (vertical === 'center') {\n offset = rect.height / 2;\n } else if (vertical === 'bottom') {\n offset = rect.height;\n }\n return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n var offset = 0;\n if (typeof horizontal === 'number') {\n offset = horizontal;\n } else if (horizontal === 'center') {\n offset = rect.width / 2;\n } else if (horizontal === 'right') {\n offset = rect.width;\n }\n return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n return [transformOrigin.horizontal, transformOrigin.vertical].map(function (n) {\n return typeof n === 'number' ? \"\".concat(n, \"px\") : n;\n }).join(' ');\n} // Sum the scrollTop between two elements.\n\nfunction getScrollParent(parent, child) {\n var element = child;\n var scrollTop = 0;\n while (element && element !== parent) {\n element = element.parentElement;\n scrollTop += element.scrollTop;\n }\n return scrollTop;\n}\nfunction getAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nexport var styles = {\n /* Styles applied to the root element. */\n root: {},\n /* Styles applied to the `Paper` component. */\n paper: {\n position: 'absolute',\n overflowY: 'auto',\n overflowX: 'hidden',\n // So we see the popover when it's empty.\n // It's most likely on issue on userland.\n minWidth: 16,\n minHeight: 16,\n maxWidth: 'calc(100% - 32px)',\n maxHeight: 'calc(100% - 32px)',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n }\n};\nvar Popover = /*#__PURE__*/React.forwardRef(function Popover(props, ref) {\n var action = props.action,\n anchorEl = props.anchorEl,\n _props$anchorOrigin = props.anchorOrigin,\n anchorOrigin = _props$anchorOrigin === void 0 ? {\n vertical: 'top',\n horizontal: 'left'\n } : _props$anchorOrigin,\n anchorPosition = props.anchorPosition,\n _props$anchorReferenc = props.anchorReference,\n anchorReference = _props$anchorReferenc === void 0 ? 'anchorEl' : _props$anchorReferenc,\n children = props.children,\n classes = props.classes,\n className = props.className,\n containerProp = props.container,\n _props$elevation = props.elevation,\n elevation = _props$elevation === void 0 ? 8 : _props$elevation,\n getContentAnchorEl = props.getContentAnchorEl,\n _props$marginThreshol = props.marginThreshold,\n marginThreshold = _props$marginThreshol === void 0 ? 16 : _props$marginThreshol,\n onEnter = props.onEnter,\n onEntered = props.onEntered,\n onEntering = props.onEntering,\n onExit = props.onExit,\n onExited = props.onExited,\n onExiting = props.onExiting,\n open = props.open,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n _props$transformOrigi = props.transformOrigin,\n transformOrigin = _props$transformOrigi === void 0 ? {\n vertical: 'top',\n horizontal: 'left'\n } : _props$transformOrigi,\n _props$TransitionComp = props.TransitionComponent,\n TransitionComponent = _props$TransitionComp === void 0 ? Grow : _props$TransitionComp,\n _props$transitionDura = props.transitionDuration,\n transitionDurationProp = _props$transitionDura === void 0 ? 'auto' : _props$transitionDura,\n _props$TransitionProp = props.TransitionProps,\n TransitionProps = _props$TransitionProp === void 0 ? {} : _props$TransitionProp,\n other = _objectWithoutProperties(props, [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"classes\", \"className\", \"container\", \"elevation\", \"getContentAnchorEl\", \"marginThreshold\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"]);\n var paperRef = React.useRef(); // Returns the top/left offset of the position\n // to attach to on the anchor element (or body if none is provided)\n\n var getAnchorOffset = React.useCallback(function (contentAnchorOffset) {\n if (anchorReference === 'anchorPosition') {\n if (process.env.NODE_ENV !== 'production') {\n if (!anchorPosition) {\n console.error('Material-UI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n }\n }\n return anchorPosition;\n }\n var resolvedAnchorEl = getAnchorEl(anchorEl); // If an anchor element wasn't provided, just use the parent body element of this Popover\n\n var anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n var anchorRect = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'production') {\n var box = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['Material-UI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n var anchorVertical = contentAnchorOffset === 0 ? anchorOrigin.vertical : 'center';\n return {\n top: anchorRect.top + getOffsetTop(anchorRect, anchorVertical),\n left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n };\n }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]); // Returns the vertical offset of inner content to anchor the transform on if provided\n\n var getContentAnchorOffset = React.useCallback(function (element) {\n var contentAnchorOffset = 0;\n if (getContentAnchorEl && anchorReference === 'anchorEl') {\n var contentAnchorEl = getContentAnchorEl(element);\n if (contentAnchorEl && element.contains(contentAnchorEl)) {\n var scrollTop = getScrollParent(element, contentAnchorEl);\n contentAnchorOffset = contentAnchorEl.offsetTop + contentAnchorEl.clientHeight / 2 - scrollTop || 0;\n } // != the default value\n\n if (process.env.NODE_ENV !== 'production') {\n if (anchorOrigin.vertical !== 'top') {\n console.error(['Material-UI: You can not change the default `anchorOrigin.vertical` value ', 'when also providing the `getContentAnchorEl` prop to the popover component.', 'Only use one of the two props.', 'Set `getContentAnchorEl` to `null | undefined`' + ' or leave `anchorOrigin.vertical` unchanged.'].join('\\n'));\n }\n }\n }\n return contentAnchorOffset;\n }, [anchorOrigin.vertical, anchorReference, getContentAnchorEl]); // Return the base transform origin using the element\n // and taking the content anchor offset into account if in use\n\n var getTransformOrigin = React.useCallback(function (elemRect) {\n var contentAnchorOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return {\n vertical: getOffsetTop(elemRect, transformOrigin.vertical) + contentAnchorOffset,\n horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n };\n }, [transformOrigin.horizontal, transformOrigin.vertical]);\n var getPositioningStyle = React.useCallback(function (element) {\n // Check if the parent has requested anchoring on an inner content node\n var contentAnchorOffset = getContentAnchorOffset(element);\n var elemRect = {\n width: element.offsetWidth,\n height: element.offsetHeight\n }; // Get the transform origin point on the element itself\n\n var elemTransformOrigin = getTransformOrigin(elemRect, contentAnchorOffset);\n if (anchorReference === 'none') {\n return {\n top: null,\n left: null,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n } // Get the offset of of the anchoring element\n\n var anchorOffset = getAnchorOffset(contentAnchorOffset); // Calculate element positioning\n\n var top = anchorOffset.top - elemTransformOrigin.vertical;\n var left = anchorOffset.left - elemTransformOrigin.horizontal;\n var bottom = top + elemRect.height;\n var right = left + elemRect.width; // Use the parent window of the anchorEl if provided\n\n var containerWindow = ownerWindow(getAnchorEl(anchorEl)); // Window thresholds taking required margin into account\n\n var heightThreshold = containerWindow.innerHeight - marginThreshold;\n var widthThreshold = containerWindow.innerWidth - marginThreshold; // Check if the vertical axis needs shifting\n\n if (top < marginThreshold) {\n var diff = top - marginThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n } else if (bottom > heightThreshold) {\n var _diff = bottom - heightThreshold;\n top -= _diff;\n elemTransformOrigin.vertical += _diff;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n console.error(['Material-UI: The popover component is too tall.', \"Some part of it can not be seen on the screen (\".concat(elemRect.height - heightThreshold, \"px).\"), 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n }\n } // Check if the horizontal axis needs shifting\n\n if (left < marginThreshold) {\n var _diff2 = left - marginThreshold;\n left -= _diff2;\n elemTransformOrigin.horizontal += _diff2;\n } else if (right > widthThreshold) {\n var _diff3 = right - widthThreshold;\n left -= _diff3;\n elemTransformOrigin.horizontal += _diff3;\n }\n return {\n top: \"\".concat(Math.round(top), \"px\"),\n left: \"\".concat(Math.round(left), \"px\"),\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }, [anchorEl, anchorReference, getAnchorOffset, getContentAnchorOffset, getTransformOrigin, marginThreshold]);\n var setPositioningStyles = React.useCallback(function () {\n var element = paperRef.current;\n if (!element) {\n return;\n }\n var positioning = getPositioningStyle(element);\n if (positioning.top !== null) {\n element.style.top = positioning.top;\n }\n if (positioning.left !== null) {\n element.style.left = positioning.left;\n }\n element.style.transformOrigin = positioning.transformOrigin;\n }, [getPositioningStyle]);\n var handleEntering = function handleEntering(element, isAppearing) {\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n setPositioningStyles();\n };\n var handlePaperRef = React.useCallback(function (instance) {\n // #StrictMode ready\n paperRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n React.useEffect(function () {\n if (open) {\n setPositioningStyles();\n }\n });\n React.useImperativeHandle(action, function () {\n return open ? {\n updatePosition: function updatePosition() {\n setPositioningStyles();\n }\n } : null;\n }, [open, setPositioningStyles]);\n React.useEffect(function () {\n if (!open) {\n return undefined;\n }\n var handleResize = debounce(function () {\n setPositioningStyles();\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [open, setPositioningStyles]);\n var transitionDuration = transitionDurationProp;\n if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n transitionDuration = undefined;\n } // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n\n var container = containerProp || (anchorEl ? ownerDocument(getAnchorEl(anchorEl)).body : undefined);\n return /*#__PURE__*/React.createElement(Modal, _extends({\n container: container,\n open: open,\n ref: ref,\n BackdropProps: {\n invisible: true\n },\n className: clsx(classes.root, className)\n }, other), /*#__PURE__*/React.createElement(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEnter: onEnter,\n onEntered: onEntered,\n onExit: onExit,\n onExited: onExited,\n onExiting: onExiting,\n timeout: transitionDuration\n }, TransitionProps, {\n onEntering: createChainedFunction(handleEntering, TransitionProps.onEntering)\n }), /*#__PURE__*/React.createElement(Paper, _extends({\n elevation: elevation,\n ref: handlePaperRef\n }, PaperProps, {\n className: clsx(classes.paper, PaperProps.className)\n }), children)));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A ref for imperative actions.\n * It currently only supports updatePosition() action.\n */\n action: refType,\n /**\n * A HTML element, or a function that returns it.\n * It's used to set the position of the popover.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), function (props) {\n if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n var resolvedAnchorEl = getAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n var box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['Material-UI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else {\n return new Error(['Material-UI: The `anchorEl` prop provided to the component is invalid.', \"It should be an Element instance but it's `\".concat(resolvedAnchorEl, \"` instead.\")].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * This is the point on the anchor where the popover's\n * `anchorEl` will attach to. This is not used when the\n * anchorReference is 'anchorPosition'.\n *\n * Options:\n * vertical: [top, center, bottom];\n * horizontal: [left, center, right].\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * This is the position that may be used\n * to set the position of the popover.\n * The coordinates are relative to\n * the application's client area.\n */\n anchorPosition: PropTypes.shape({\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n }),\n /**\n * This determines which anchor prop to refer to to set\n * the position of the popover.\n */\n anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * A HTML element, component instance, or function that returns either.\n * The `container` will passed to the Modal component.\n *\n * By default, it uses the body of the anchorEl's top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes\n /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.instanceOf(React.Component), PropTypes.func]),\n /**\n * The elevation of the popover.\n */\n elevation: PropTypes.number,\n /**\n * This function is called in order to retrieve the content anchor element.\n * It's the opposite of the `anchorEl` prop.\n * The content anchor element should be an element inside the popover.\n * It's used to correctly scroll and set the position of the popover.\n * The positioning strategy tries to make the content anchor element just above the\n * anchor element.\n */\n getContentAnchorEl: PropTypes.func,\n /**\n * Specifies how close to the edge of the window the popover can appear.\n */\n marginThreshold: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired before the component is entering.\n */\n onEnter: PropTypes.func,\n /**\n * Callback fired when the component has entered.\n */\n onEntered: PropTypes.func,\n /**\n * Callback fired when the component is entering.\n */\n onEntering: PropTypes.func,\n /**\n * Callback fired before the component is exiting.\n */\n onExit: PropTypes.func,\n /**\n * Callback fired when the component has exited.\n */\n onExited: PropTypes.func,\n /**\n * Callback fired when the component is exiting.\n */\n onExiting: PropTypes.func,\n /**\n * If `true`, the popover is visible.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Props applied to the [`Paper`](/api/paper/) element.\n */\n PaperProps: PropTypes\n /* @typescript-to-proptypes-ignore */.shape({\n component: elementTypeAcceptingRef\n }),\n /**\n * This is the point on the popover which\n * will attach to the anchor's origin.\n *\n * Options:\n * vertical: [top, center, bottom, x(px)];\n * horizontal: [left, center, right, x(px)].\n */\n transformOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * The component used for the transition.\n * [Follow this guide](/components/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Set to 'auto' to automatically calculate transition time based on height.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the [`Transition`](http://reactcommunity.org/react-transition-group/transition#Transition-props) element.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiPopover'\n})(Popover);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar ListContext = React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from './ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n },\n /* Styles applied to the root element if `disablePadding={false}`. */\n padding: {\n paddingTop: 8,\n paddingBottom: 8\n },\n /* Styles applied to the root element if dense. */\n dense: {},\n /* Styles applied to the root element if a `subheader` is provided. */\n subheader: {\n paddingTop: 0\n }\n};\nvar List = /*#__PURE__*/React.forwardRef(function List(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'ul' : _props$component,\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disablePadding = props.disablePadding,\n disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding,\n subheader = props.subheader,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"]);\n var context = React.useMemo(function () {\n return {\n dense: dense\n };\n }, [dense]);\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader),\n ref: ref\n }, other), subheader, children));\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding will be removed from the list.\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiList'\n})(List);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n var text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n var wrappedOnce = false;\n var nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n wrappedOnce = true;\n } // Same logic as useAutocomplete.js\n\n var nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return;\n }\n }\n}\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * A permanently displayed menu following https://www.w3.org/TR/wai-aria-practices/#menubutton.\n * It's exposed to help customization of the [`Menu`](/api/menu/) component. If you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\n\nvar MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n var actions = props.actions,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$autoFocusItem = props.autoFocusItem,\n autoFocusItem = _props$autoFocusItem === void 0 ? false : _props$autoFocusItem,\n children = props.children,\n className = props.className,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n onKeyDown = props.onKeyDown,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"]);\n var listRef = React.useRef(null);\n var textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(function () {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, function () {\n return {\n adjustStyleForScrollbar: function adjustStyleForScrollbar(containerElement, theme) {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n var noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n var scrollbarSize = \"\".concat(getScrollbarSize(true), \"px\");\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = \"calc(100% + \".concat(scrollbarSize, \")\");\n }\n return listRef.current;\n }\n };\n }, []);\n var handleKeyDown = function handleKeyDown(event) {\n var list = listRef.current;\n var key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n\n var currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n var criteria = textCriteriaRef.current;\n var lowerKey = key.toLowerCase();\n var currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n var keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.forEach(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n var newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/React.createElement(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other), items);\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { HTMLElementType } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport Popover from '../Popover';\nimport MenuList from '../MenuList';\nimport * as ReactDOM from 'react-dom';\nimport setRef from '../utils/setRef';\nimport useTheme from '../styles/useTheme';\nvar RTL_ORIGIN = {\n vertical: 'top',\n horizontal: 'right'\n};\nvar LTR_ORIGIN = {\n vertical: 'top',\n horizontal: 'left'\n};\nexport var styles = {\n /* Styles applied to the `Paper` component. */\n paper: {\n // specZ: The maximum height of a simple menu should be one or more rows less than the view\n // height. This ensures a tapable area outside of the simple menu with which to dismiss\n // the menu.\n maxHeight: 'calc(100% - 96px)',\n // Add iOS momentum scrolling.\n WebkitOverflowScrolling: 'touch'\n },\n /* Styles applied to the `List` component via `MenuList`. */\n list: {\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n }\n};\nvar Menu = /*#__PURE__*/React.forwardRef(function Menu(props, ref) {\n var _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,\n children = props.children,\n classes = props.classes,\n _props$disableAutoFoc = props.disableAutoFocusItem,\n disableAutoFocusItem = _props$disableAutoFoc === void 0 ? false : _props$disableAutoFoc,\n _props$MenuListProps = props.MenuListProps,\n MenuListProps = _props$MenuListProps === void 0 ? {} : _props$MenuListProps,\n onClose = props.onClose,\n onEntering = props.onEntering,\n open = props.open,\n _props$PaperProps = props.PaperProps,\n PaperProps = _props$PaperProps === void 0 ? {} : _props$PaperProps,\n PopoverClasses = props.PopoverClasses,\n _props$transitionDura = props.transitionDuration,\n transitionDuration = _props$transitionDura === void 0 ? 'auto' : _props$transitionDura,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoFocus\", \"children\", \"classes\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"onEntering\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"variant\"]);\n var theme = useTheme();\n var autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n var menuListActionsRef = React.useRef(null);\n var contentAnchorRef = React.useRef(null);\n var getContentAnchorEl = function getContentAnchorEl() {\n return contentAnchorRef.current;\n };\n var handleEntering = function handleEntering(element, isAppearing) {\n if (menuListActionsRef.current) {\n menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n }\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n };\n var handleListKeyDown = function handleListKeyDown(event) {\n if (event.key === 'Tab') {\n event.preventDefault();\n if (onClose) {\n onClose(event, 'tabKeyDown');\n }\n }\n };\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.map(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant !== \"menu\" && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n return /*#__PURE__*/React.cloneElement(child, {\n ref: function ref(instance) {\n // #StrictMode ready\n contentAnchorRef.current = ReactDOM.findDOMNode(instance);\n setRef(child.ref, instance);\n }\n });\n }\n return child;\n });\n return /*#__PURE__*/React.createElement(Popover, _extends({\n getContentAnchorEl: getContentAnchorEl,\n classes: PopoverClasses,\n onClose: onClose,\n onEntering: handleEntering,\n anchorOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n transformOrigin: theme.direction === 'rtl' ? RTL_ORIGIN : LTR_ORIGIN,\n PaperProps: _extends({}, PaperProps, {\n classes: _extends({}, PaperProps.classes, {\n root: classes.paper\n })\n }),\n open: open,\n ref: ref,\n transitionDuration: transitionDuration\n }, other), /*#__PURE__*/React.createElement(MenuList, _extends({\n onKeyDown: handleListKeyDown,\n actions: menuListActionsRef,\n autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n autoFocusItem: autoFocusItem,\n variant: variant\n }, MenuListProps, {\n className: clsx(classes.list, MenuListProps.className)\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A HTML element, or a function that returns it.\n * It's used to set the position of the menu.\n */\n anchorEl: PropTypes\n /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n * children are not focusable. If you set this prop to `false` focus will be placed\n * on the parent modal container. This has severe accessibility implications\n * and should only be considered if you manage focus otherwise.\n */\n autoFocus: PropTypes.bool,\n /**\n * Menu contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n * unless `autoFocus` is also set to `false`. Not using the default means not\n * following WAI-ARIA authoring practices. Please be considerate about possible\n * accessibility implications.\n */\n disableAutoFocusItem: PropTypes.bool,\n /**\n * Props applied to the [`MenuList`](/api/menu-list/) element.\n */\n MenuListProps: PropTypes.object,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired before the Menu enters.\n */\n onEnter: PropTypes.func,\n /**\n * Callback fired when the Menu has entered.\n */\n onEntered: PropTypes.func,\n /**\n * Callback fired when the Menu is entering.\n */\n onEntering: PropTypes.func,\n /**\n * Callback fired before the Menu exits.\n */\n onExit: PropTypes.func,\n /**\n * Callback fired when the Menu has exited.\n */\n onExited: PropTypes.func,\n /**\n * Callback fired when the Menu is exiting.\n */\n onExiting: PropTypes.func,\n /**\n * If `true`, the menu is visible.\n */\n open: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n PaperProps: PropTypes.object,\n /**\n * `classes` prop applied to the [`Popover`](/api/popover/) element.\n */\n PopoverClasses: PropTypes.object,\n /**\n * The length of the transition in `ms`, or 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiMenu'\n})(Menu);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListContext from '../List/ListContext';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n minWidth: 56,\n color: theme.palette.action.active,\n flexShrink: 0,\n display: 'inline-flex'\n },\n /* Styles applied to the root element when the parent `ListItem` uses `alignItems=\"flex-start\"`. */\n alignItemsFlexStart: {\n marginTop: 8\n }\n };\n};\n/**\n * A simple wrapper to apply `List` styles to an `Icon` or `SvgIcon`.\n */\n\nvar ListItemIcon = /*#__PURE__*/React.forwardRef(function ListItemIcon(props, ref) {\n var classes = props.classes,\n className = props.className,\n other = _objectWithoutProperties(props, [\"classes\", \"className\"]);\n var context = React.useContext(ListContext);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, context.alignItems === 'flex-start' && classes.alignItemsFlexStart),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemIcon.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally `Icon`, `SvgIcon`,\n * or a `@material-ui/icons` SVG icon element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItemIcon'\n})(ListItemIcon);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n flex: '1 1 auto',\n minWidth: 0,\n marginTop: 4,\n marginBottom: 4\n },\n /* Styles applied to the `Typography` components if primary and secondary are set. */\n multiline: {\n marginTop: 6,\n marginBottom: 6\n },\n /* Styles applied to the `Typography` components if dense. */\n dense: {},\n /* Styles applied to the root element if `inset={true}`. */\n inset: {\n paddingLeft: 56\n },\n /* Styles applied to the primary `Typography` component. */\n primary: {},\n /* Styles applied to the secondary `Typography` component. */\n secondary: {}\n};\nvar ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n _props$inset = props.inset,\n inset = _props$inset === void 0 ? false : _props$inset,\n primaryProp = props.primary,\n primaryTypographyProps = props.primaryTypographyProps,\n secondaryProp = props.secondary,\n secondaryTypographyProps = props.secondaryTypographyProps,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"]);\n var _React$useContext = React.useContext(ListContext),\n dense = _React$useContext.dense;\n var primary = primaryProp != null ? primaryProp : children;\n if (primary != null && primary.type !== Typography && !disableTypography) {\n primary = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: dense ? 'body2' : 'body1',\n className: classes.primary,\n component: \"span\",\n display: \"block\"\n }, primaryTypographyProps), primary);\n }\n var secondary = secondaryProp;\n if (secondary != null && secondary.type !== Typography && !disableTypography) {\n secondary = /*#__PURE__*/React.createElement(Typography, _extends({\n variant: \"body2\",\n className: classes.secondary,\n color: \"textSecondary\",\n display: \"block\"\n }, secondaryTypographyProps), secondary);\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, className, dense && classes.dense, inset && classes.inset, primary && secondary && classes.multiline),\n ref: ref\n }, other), primary, secondary);\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * Alias for the `primary` prop.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the children won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `children` (or `primary`) text, and optional `secondary` text\n * with the Typography component.\n */\n disableTypography: PropTypes.bool,\n /**\n * If `true`, the children will be indented.\n * This should be used if there is no left avatar or left icon.\n */\n inset: PropTypes.bool,\n /**\n * The main content element.\n */\n primary: PropTypes.node,\n /**\n * These props will be forwarded to the primary typography component\n * (as long as disableTypography is not `true`).\n */\n primaryTypographyProps: PropTypes.object,\n /**\n * The secondary content element.\n */\n secondary: PropTypes.node,\n /**\n * These props will be forwarded to the secondary typography component\n * (as long as disableTypography is not `true`).\n */\n secondaryTypographyProps: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItemText'\n})(ListItemText);","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@material-ui/utils';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport isMuiElement from '../utils/isMuiElement';\nimport useForkRef from '../utils/useForkRef';\nimport ListContext from '../List/ListContext';\nimport * as ReactDOM from 'react-dom';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the (normally root) `component` element. May be wrapped by a `container`. */\n root: {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n width: '100%',\n boxSizing: 'border-box',\n textAlign: 'left',\n paddingTop: 8,\n paddingBottom: 8,\n '&$focusVisible': {\n backgroundColor: theme.palette.action.selected\n },\n '&$selected, &$selected:hover': {\n backgroundColor: theme.palette.action.selected\n },\n '&$disabled': {\n opacity: 0.5\n }\n },\n /* Styles applied to the `container` element if `children` includes `ListItemSecondaryAction`. */\n container: {\n position: 'relative'\n },\n /* Pseudo-class applied to the `component`'s `focusVisibleClassName` prop if `button={true}`. */\n focusVisible: {},\n /* Styles applied to the `component` element if dense. */\n dense: {\n paddingTop: 4,\n paddingBottom: 4\n },\n /* Styles applied to the `component` element if `alignItems=\"flex-start\"`. */\n alignItemsFlexStart: {\n alignItems: 'flex-start'\n },\n /* Pseudo-class applied to the inner `component` element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the inner `component` element if `divider={true}`. */\n divider: {\n borderBottom: \"1px solid \".concat(theme.palette.divider),\n backgroundClip: 'padding-box'\n },\n /* Styles applied to the inner `component` element if `disableGutters={false}`. */\n gutters: {\n paddingLeft: 16,\n paddingRight: 16\n },\n /* Styles applied to the inner `component` element if `button={true}`. */\n button: {\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n }),\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: theme.palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n },\n /* Styles applied to the `component` element if `children` includes `ListItemSecondaryAction`. */\n secondaryAction: {\n // Add some space to avoid collision as `ListItemSecondaryAction`\n // is absolutely positioned.\n paddingRight: 48\n },\n /* Pseudo-class applied to the root element if `selected={true}`. */\n selected: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * Uses an additional container component if `ListItemSecondaryAction` is the last child.\n */\n\nvar ListItem = /*#__PURE__*/React.forwardRef(function ListItem(props, ref) {\n var _props$alignItems = props.alignItems,\n alignItems = _props$alignItems === void 0 ? 'center' : _props$alignItems,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$button = props.button,\n button = _props$button === void 0 ? false : _props$button,\n childrenProp = props.children,\n classes = props.classes,\n className = props.className,\n componentProp = props.component,\n _props$ContainerCompo = props.ContainerComponent,\n ContainerComponent = _props$ContainerCompo === void 0 ? 'li' : _props$ContainerCompo,\n _props$ContainerProps = props.ContainerProps;\n _props$ContainerProps = _props$ContainerProps === void 0 ? {} : _props$ContainerProps;\n var ContainerClassName = _props$ContainerProps.className,\n ContainerProps = _objectWithoutProperties(_props$ContainerProps, [\"className\"]),\n _props$dense = props.dense,\n dense = _props$dense === void 0 ? false : _props$dense,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$divider = props.divider,\n divider = _props$divider === void 0 ? false : _props$divider,\n focusVisibleClassName = props.focusVisibleClassName,\n _props$selected = props.selected,\n selected = _props$selected === void 0 ? false : _props$selected,\n other = _objectWithoutProperties(props, [\"alignItems\", \"autoFocus\", \"button\", \"children\", \"classes\", \"className\", \"component\", \"ContainerComponent\", \"ContainerProps\", \"dense\", \"disabled\", \"disableGutters\", \"divider\", \"focusVisibleClassName\", \"selected\"]);\n var context = React.useContext(ListContext);\n var childContext = {\n dense: dense || context.dense || false,\n alignItems: alignItems\n };\n var listItemRef = React.useRef(null);\n useEnhancedEffect(function () {\n if (autoFocus) {\n if (listItemRef.current) {\n listItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Material-UI: Unable to set focus to a ListItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n var children = React.Children.toArray(childrenProp);\n var hasSecondaryAction = children.length && isMuiElement(children[children.length - 1], ['ListItemSecondaryAction']);\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listItemRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n var componentProps = _extends({\n className: clsx(classes.root, className, childContext.dense && classes.dense, !disableGutters && classes.gutters, divider && classes.divider, disabled && classes.disabled, button && classes.button, alignItems !== \"center\" && classes.alignItemsFlexStart, hasSecondaryAction && classes.secondaryAction, selected && classes.selected),\n disabled: disabled\n }, other);\n var Component = componentProp || 'li';\n if (button) {\n componentProps.component = componentProp || 'div';\n componentProps.focusVisibleClassName = clsx(classes.focusVisible, focusVisibleClassName);\n Component = ButtonBase;\n }\n if (hasSecondaryAction) {\n // Use div by default.\n Component = !componentProps.component && !componentProp ? 'div' : Component; // Avoid nesting of li > li.\n\n if (ContainerComponent === 'li') {\n if (Component === 'li') {\n Component = 'div';\n } else if (componentProps.component === 'li') {\n componentProps.component = 'div';\n }\n }\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({\n className: clsx(classes.container, ContainerClassName),\n ref: handleRef\n }, ContainerProps), /*#__PURE__*/React.createElement(Component, componentProps, children), children.pop()));\n }\n return /*#__PURE__*/React.createElement(ListContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n ref: handleRef\n }, componentProps), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItem.propTypes = {\n /**\n * Defines the `align-items` style property.\n */\n alignItems: PropTypes.oneOf(['flex-start', 'center']),\n /**\n * If `true`, the list item will be focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the list item will be a button (using `ButtonBase`). Props intended\n * for `ButtonBase` can then be applied to `ListItem`.\n */\n button: PropTypes.bool,\n /**\n * The content of the component. If a `ListItemSecondaryAction` is used it must\n * be the last child.\n */\n children: chainPropTypes(PropTypes.node, function (props) {\n var children = React.Children.toArray(props.children); // React.Children.toArray(props.children).findLastIndex(isListItemSecondaryAction)\n\n var secondaryActionIndex = -1;\n for (var i = children.length - 1; i >= 0; i -= 1) {\n var child = children[i];\n if (isMuiElement(child, ['ListItemSecondaryAction'])) {\n secondaryActionIndex = i;\n break;\n }\n } // is ListItemSecondaryAction the last child of ListItem\n\n if (secondaryActionIndex !== -1 && secondaryActionIndex !== children.length - 1) {\n return new Error('Material-UI: You used an element after ListItemSecondaryAction. ' + 'For ListItem to detect that it has a secondary action ' + 'you must pass it as the last child to ListItem.');\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n * By default, it's a `li` when `button` is `false` and a `div` when `button` is `true`.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * The container component used when a `ListItemSecondaryAction` is the last child.\n */\n ContainerComponent: PropTypes.elementType,\n /**\n * Props applied to the container component if used.\n */\n ContainerProps: PropTypes.object,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n /**\n * If `true`, the list item will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the list item.\n */\n divider: PropTypes.bool,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * Use to apply selected styling.\n */\n selected: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListItem'\n})(ListItem);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ListItem from '../ListItem';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, _defineProperty({\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n width: 'auto',\n overflow: 'hidden',\n whiteSpace: 'nowrap'\n }, theme.breakpoints.up('sm'), {\n minHeight: 'auto'\n })),\n // TODO v5: remove\n\n /* Styles applied to the root element if `disableGutters={false}`. */\n gutters: {},\n /* Styles applied to the root element if `selected={true}`. */\n selected: {},\n /* Styles applied to the root element if dense. */\n dense: _extends({}, theme.typography.body2, {\n minHeight: 'auto'\n })\n };\n};\nvar MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$component = props.component,\n component = _props$component === void 0 ? 'li' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n ListItemClasses = props.ListItemClasses,\n _props$role = props.role,\n role = _props$role === void 0 ? 'menuitem' : _props$role,\n selected = props.selected,\n tabIndexProp = props.tabIndex,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"component\", \"disableGutters\", \"ListItemClasses\", \"role\", \"selected\", \"tabIndex\"]);\n var tabIndex;\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n return /*#__PURE__*/React.createElement(ListItem, _extends({\n button: true,\n role: role,\n tabIndex: tabIndex,\n component: component,\n selected: selected,\n disableGutters: disableGutters,\n classes: _extends({\n dense: classes.dense\n }, ListItemClasses),\n className: clsx(classes.root, className, selected && classes.selected, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes = {\n /**\n * Menu item contents.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input will be used.\n */\n dense: PropTypes.bool,\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n */\n disableGutters: PropTypes.bool,\n /**\n * `classes` prop applied to the [`ListItem`](/api/list-item/) element.\n */\n ListItemClasses: PropTypes.object,\n /**\n * @ignore\n */\n role: PropTypes.string,\n /**\n * @ignore\n */\n selected: PropTypes.bool,\n /**\n * @ignore\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiMenuItem'\n})(MenuItem);","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nvar FormControlContext = React.createContext();\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport function useFormControl() {\n return React.useContext(FormControlContext);\n}\nexport default FormControlContext;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport Typography from '../Typography';\nimport withStyles from '../styles/withStyles';\nimport FormControlContext, { useFormControl } from '../FormControl/FormControlContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'flex',\n height: '0.01em',\n // Fix IE 11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap'\n },\n /* Styles applied to the root element if `variant=\"filled\"`. */\n filled: {\n '&$positionStart:not($hiddenLabel)': {\n marginTop: 16\n }\n },\n /* Styles applied to the root element if `position=\"start\"`. */\n positionStart: {\n marginRight: 8\n },\n /* Styles applied to the root element if `position=\"end\"`. */\n positionEnd: {\n marginLeft: 8\n },\n /* Styles applied to the root element if `disablePointerEvents=true`. */\n disablePointerEvents: {\n pointerEvents: 'none'\n },\n /* Styles applied if the adornment is used inside <FormControl hiddenLabel />. */\n hiddenLabel: {},\n /* Styles applied if the adornment is used inside <FormControl margin=\"dense\" />. */\n marginDense: {}\n};\nvar InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disablePointer = props.disablePointerEvents,\n disablePointerEvents = _props$disablePointer === void 0 ? false : _props$disablePointer,\n _props$disableTypogra = props.disableTypography,\n disableTypography = _props$disableTypogra === void 0 ? false : _props$disableTypogra,\n position = props.position,\n variantProp = props.variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"]);\n var muiFormControl = useFormControl() || {};\n var variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('Material-UI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n return /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, disablePointerEvents && classes.disablePointerEvents, muiFormControl.hiddenLabel && classes.hiddenLabel, variant === 'filled' && classes.filled, {\n 'start': classes.positionStart,\n 'end': classes.positionEnd\n }[position], muiFormControl.margin === 'dense' && classes.marginDense),\n ref: ref\n }, other), typeof children === 'string' && !disableTypography ? /*#__PURE__*/React.createElement(Typography, {\n color: \"textSecondary\"\n }, children) : children));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes = {\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node.isRequired,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the input on click.\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n */\n disableTypography: PropTypes.bool,\n /**\n * @ignore\n */\n muiFormControl: PropTypes.object,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['start', 'end']),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputAdornment'\n})(InputAdornment);","export default function formControlState(_ref) {\n var props = _ref.props,\n states = _ref.states,\n muiFormControl = _ref.muiFormControl;\n return states.reduce(function (acc, state) {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from '../utils/debounce';\nimport useForkRef from '../utils/useForkRef';\nfunction getStyleValue(computedStyle, property) {\n return parseInt(computedStyle[property], 10) || 0;\n}\nvar useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar styles = {\n /* Styles applied to the shadow textarea element. */\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nvar TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, ref) {\n var onChange = props.onChange,\n rows = props.rows,\n rowsMax = props.rowsMax,\n _props$rowsMin = props.rowsMin,\n rowsMinProp = _props$rowsMin === void 0 ? 1 : _props$rowsMin,\n style = props.style,\n value = props.value,\n other = _objectWithoutProperties(props, [\"onChange\", \"rows\", \"rowsMax\", \"rowsMin\", \"style\", \"value\"]);\n var rowsMin = rows || rowsMinProp;\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n var inputRef = React.useRef(null);\n var handleRef = useForkRef(ref, inputRef);\n var shadowRef = React.useRef(null);\n var renders = React.useRef(0);\n var _React$useState = React.useState({}),\n state = _React$useState[0],\n setState = _React$useState[1];\n var syncHeight = React.useCallback(function () {\n var input = inputRef.current;\n var computedStyle = window.getComputedStyle(input);\n var inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n var boxSizing = computedStyle['box-sizing'];\n var padding = getStyleValue(computedStyle, 'padding-bottom') + getStyleValue(computedStyle, 'padding-top');\n var border = getStyleValue(computedStyle, 'border-bottom-width') + getStyleValue(computedStyle, 'border-top-width'); // The height of the inner content\n\n var innerHeight = inputShallow.scrollHeight - padding; // Measure height of a textarea with a single row\n\n inputShallow.value = 'x';\n var singleRowHeight = inputShallow.scrollHeight - padding; // The height of the outer content\n\n var outerHeight = innerHeight;\n if (rowsMin) {\n outerHeight = Math.max(Number(rowsMin) * singleRowHeight, outerHeight);\n }\n if (rowsMax) {\n outerHeight = Math.min(Number(rowsMax) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight); // Take the box sizing into account for applying this value as a style.\n\n var outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n var overflow = Math.abs(outerHeight - innerHeight) <= 1;\n setState(function (prevState) {\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n renders.current += 1;\n return {\n overflow: overflow,\n outerHeightStyle: outerHeightStyle\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n if (renders.current === 20) {\n console.error(['Material-UI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n }\n }\n return prevState;\n });\n }, [rowsMax, rowsMin, props.placeholder]);\n React.useEffect(function () {\n var handleResize = debounce(function () {\n renders.current = 0;\n syncHeight();\n });\n window.addEventListener('resize', handleResize);\n return function () {\n handleResize.clear();\n window.removeEventListener('resize', handleResize);\n };\n }, [syncHeight]);\n useEnhancedEffect(function () {\n syncHeight();\n });\n React.useEffect(function () {\n renders.current = 0;\n }, [value]);\n var handleChange = function handleChange(event) {\n renders.current = 0;\n if (!isControlled) {\n syncHeight();\n }\n if (onChange) {\n onChange(event);\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n\n rows: rowsMin,\n style: _extends({\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? 'hidden' : null\n }, style)\n }, other)), /*#__PURE__*/React.createElement(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n /**\n * Use `rowsMin` instead. The prop will be removed in v5.\n *\n * @deprecated\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display.\n */\n rowsMin: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n} // Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n\nexport function isFilled(obj) {\n var SSR = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n} // Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\n\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\n\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext, { useFormControl } from '../FormControl/FormControlContext';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport TextareaAutosize from '../TextareaAutosize';\nimport { isFilled } from './utils';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var placeholder = {\n color: 'currentColor',\n opacity: light ? 0.42 : 0.5,\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n };\n var placeholderHidden = {\n opacity: '0 !important'\n };\n var placeholderVisible = {\n opacity: light ? 0.42 : 0.5\n };\n return {\n '@global': {\n '@keyframes mui-auto-fill': {},\n '@keyframes mui-auto-fill-cancel': {}\n },\n /* Styles applied to the root element. */\n root: _extends({}, theme.typography.body1, {\n color: theme.palette.text.primary,\n lineHeight: '1.1876em',\n // Reset (19px), match the native input line-height\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n '&$disabled': {\n color: theme.palette.text.disabled,\n cursor: 'default'\n }\n }),\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {},\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {},\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {},\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n '&$marginDense': {\n paddingTop: 4 - 1\n }\n },\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {},\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n },\n /* Styles applied to the `input` element. */\n input: {\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: \"\".concat(8 - 2, \"px 0 \").concat(8 - 1, \"px\"),\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.1876em',\n // Reset (19px), match the native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE 11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE 11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n '-webkit-appearance': 'none'\n },\n // Show and hide the placeholder logic\n 'label[data-shrink=false] + $formControl &': {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE 11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE 11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n },\n '&$disabled': {\n opacity: 1 // Reset iOS opacity\n },\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n },\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 4 - 1\n },\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n height: 'auto',\n resize: 'none',\n padding: 0\n },\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {\n // Improve type search style.\n '-moz-appearance': 'textfield',\n '-webkit-appearance': 'textfield'\n },\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {},\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {},\n /* Styles applied to the `input` element if `hiddenLabel={true}`. */\n inputHiddenLabel: {}\n };\n};\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\n\nvar InputBase = /*#__PURE__*/React.forwardRef(function InputBase(props, ref) {\n var ariaDescribedby = props['aria-describedby'],\n autoComplete = props.autoComplete,\n autoFocus = props.autoFocus,\n classes = props.classes,\n className = props.className,\n color = props.color,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n endAdornment = props.endAdornment,\n error = props.error,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n id = props.id,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$inputProps = props.inputProps,\n inputPropsProp = _props$inputProps === void 0 ? {} : _props$inputProps,\n inputRefProp = props.inputRef,\n margin = props.margin,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClick = props.onClick,\n onFocus = props.onFocus,\n onKeyDown = props.onKeyDown,\n onKeyUp = props.onKeyUp,\n placeholder = props.placeholder,\n readOnly = props.readOnly,\n renderSuffix = props.renderSuffix,\n rows = props.rows,\n rowsMax = props.rowsMax,\n rowsMin = props.rowsMin,\n startAdornment = props.startAdornment,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n valueProp = props.value,\n other = _objectWithoutProperties(props, [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"classes\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"rowsMax\", \"rowsMin\", \"startAdornment\", \"type\", \"value\"]);\n var value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n var _React$useRef = React.useRef(value != null),\n isControlled = _React$useRef.current;\n var inputRef = React.useRef();\n var handleInputRefWarning = React.useCallback(function (instance) {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['Material-UI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `inputRef` prop.', 'Make sure the `inputRef` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n var handleInputPropsRefProp = useForkRef(inputPropsProp.ref, handleInputRefWarning);\n var handleInputRefProp = useForkRef(inputRefProp, handleInputPropsRefProp);\n var handleInputRef = useForkRef(inputRef, handleInputRefProp);\n var _React$useState = React.useState(false),\n focused = _React$useState[0],\n setFocused = _React$useState[1];\n var muiFormControl = useFormControl();\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n return undefined;\n }, [muiFormControl]);\n }\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'margin', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused; // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n\n React.useEffect(function () {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n var onFilled = muiFormControl && muiFormControl.onFilled;\n var onEmpty = muiFormControl && muiFormControl.onEmpty;\n var checkDirty = React.useCallback(function (obj) {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(function () {\n if (isControlled) {\n checkDirty({\n value: value\n });\n }\n }, [value, checkDirty, isControlled]);\n var handleFocus = function handleFocus(event) {\n // Fix a bug with IE 11 where the focus/blur events are triggered\n // while the input is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n if (onFocus) {\n onFocus(event);\n }\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n var handleBlur = function handleBlur(event) {\n if (onBlur) {\n onBlur(event);\n }\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n var handleChange = function handleChange(event) {\n if (!isControlled) {\n var element = event.target || inputRef.current;\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Expected valid input target. Did you use a custom `inputComponent` and forget to forward refs? See https://material-ui.com/r/input-component-ref-interface for more info.\" : _formatMuiErrorMessage(1));\n }\n checkDirty({\n value: element.value\n });\n }\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 if (inputPropsProp.onChange) {\n inputPropsProp.onChange.apply(inputPropsProp, [event].concat(args));\n } // Perform in the willUpdate\n\n if (onChange) {\n onChange.apply(void 0, [event].concat(args));\n }\n }; // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n\n React.useEffect(function () {\n checkDirty(inputRef.current);\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n var handleClick = function handleClick(event) {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n if (onClick) {\n onClick(event);\n }\n };\n var InputComponent = inputComponent;\n var inputProps = _extends({}, inputPropsProp, {\n ref: handleInputRef\n });\n if (typeof InputComponent !== 'string') {\n inputProps = _extends({\n // Rename ref to inputRef as we don't know the\n // provided `inputComponent` structure.\n inputRef: handleInputRef,\n type: type\n }, inputProps, {\n ref: null\n });\n } else if (multiline) {\n if (rows && !rowsMax && !rowsMin) {\n InputComponent = 'textarea';\n } else {\n inputProps = _extends({\n rows: rows,\n rowsMax: rowsMax\n }, inputProps);\n InputComponent = TextareaAutosize;\n }\n } else {\n inputProps = _extends({\n type: type\n }, inputProps);\n }\n var handleAutoFill = function handleAutoFill(event) {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n React.useEffect(function () {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(fcs.color || 'primary'))], className, fcs.disabled && classes.disabled, fcs.error && classes.error, fullWidth && classes.fullWidth, fcs.focused && classes.focused, muiFormControl && classes.formControl, multiline && classes.multiline, startAdornment && classes.adornedStart, endAdornment && classes.adornedEnd, fcs.margin === 'dense' && classes.marginDense),\n onClick: handleClick,\n ref: ref\n }, other), startAdornment, /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(InputComponent, _extends({\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp\n }, inputProps, {\n className: clsx(classes.input, inputPropsProp.className, fcs.disabled && classes.disabled, multiline && classes.inputMultiline, fcs.hiddenLabel && classes.inputHiddenLabel, startAdornment && classes.inputAdornedStart, endAdornment && classes.inputAdornedEnd, type === 'search' && classes.inputTypeSearch, fcs.margin === 'dense' && classes.inputMarginDense),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment: startAdornment\n })) : null);\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n 'aria-describedby': PropTypes.string,\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the input is blurred.\n *\n * Notice that the first argument (event) might be undefined.\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * @ignore\n */\n renderSuffix: PropTypes.func,\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n rowsMin: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputBase'\n})(InputBase);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative'\n },\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {\n 'label + &': {\n marginTop: 16\n }\n },\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n '&:hover:not($disabled):before': {\n borderBottom: \"2px solid \".concat(theme.palette.text.primary),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: \"1px solid \".concat(bottomLineColor)\n }\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {},\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {},\n /* Styles applied to the `input` element. */\n input: {},\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {},\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {},\n /* Styles applied to the `input` element if `type=\"search\"`. */\n inputTypeSearch: {}\n };\n};\nvar Input = /*#__PURE__*/React.forwardRef(function Input(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiInput'\n})(Input);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var light = theme.palette.type === 'light';\n var bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n var backgroundColor = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n backgroundColor: backgroundColor,\n borderTopLeftRadius: theme.shape.borderRadius,\n borderTopRightRadius: theme.shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.13)' : 'rgba(255, 255, 255, 0.13)',\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: backgroundColor\n }\n },\n '&$focused': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.09)'\n },\n '&$disabled': {\n backgroundColor: light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)'\n }\n },\n /* Styles applied to the root element if color secondary. */\n colorSecondary: {\n '&$underline:after': {\n borderBottomColor: theme.palette.secondary.main\n }\n },\n /* Styles applied to the root element if `disableUnderline={false}`. */\n underline: {\n '&:after': {\n borderBottom: \"2px solid \".concat(theme.palette.primary.main),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n '&$focused:after': {\n transform: 'scaleX(1)'\n },\n '&$error:after': {\n borderBottomColor: theme.palette.error.main,\n transform: 'scaleX(1)' // error is always underlined in red\n },\n '&:before': {\n borderBottom: \"1px solid \".concat(bottomLineColor),\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE 11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n '&:hover:before': {\n borderBottom: \"1px solid \".concat(theme.palette.text.primary)\n },\n '&$disabled:before': {\n borderBottomStyle: 'dotted'\n }\n },\n /* Pseudo-class applied to the root element if the component is focused. */\n focused: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {\n paddingLeft: 12\n },\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {\n paddingRight: 12\n },\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: '27px 12px 10px',\n '&$marginDense': {\n paddingTop: 23,\n paddingBottom: 6\n }\n },\n /* Styles applied to the `input` element. */\n input: {\n padding: '27px 12px 10px',\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\n caretColor: theme.palette.type === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n },\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 23,\n paddingBottom: 6\n },\n /* Styles applied to the `input` if in `<FormControl hiddenLabel />`. */\n inputHiddenLabel: {\n paddingTop: 18,\n paddingBottom: 19,\n '&$inputMarginDense': {\n paddingTop: 10,\n paddingBottom: 11\n }\n },\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n padding: 0\n },\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {\n paddingLeft: 0\n },\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {\n paddingRight: 0\n }\n };\n};\nvar FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(props, ref) {\n var disableUnderline = props.disableUnderline,\n classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"disableUnderline\", \"classes\", \"fullWidth\", \"inputComponent\", \"multiline\", \"type\"]);\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n classes: _extends({}, classes, {\n root: clsx(classes.root, !disableUnderline && classes.underline),\n underline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiFilledInput'\n})(FilledInput);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport useTheme from '../styles/useTheme';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'absolute',\n bottom: 0,\n right: 0,\n top: -5,\n left: 0,\n margin: 0,\n padding: '0 8px',\n pointerEvents: 'none',\n borderRadius: 'inherit',\n borderStyle: 'solid',\n borderWidth: 1,\n overflow: 'hidden'\n },\n /* Styles applied to the legend element when `labelWidth` is provided. */\n legend: {\n textAlign: 'left',\n padding: 0,\n lineHeight: '11px',\n // sync with `height` in `legend` styles\n transition: theme.transitions.create('width', {\n duration: 150,\n easing: theme.transitions.easing.easeOut\n })\n },\n /* Styles applied to the legend element. */\n legendLabelled: {\n display: 'block',\n width: 'auto',\n textAlign: 'left',\n padding: 0,\n height: 11,\n // sync with `lineHeight` in `legend` styles\n fontSize: '0.75em',\n visibility: 'hidden',\n maxWidth: 0.01,\n transition: theme.transitions.create('max-width', {\n duration: 50,\n easing: theme.transitions.easing.easeOut\n }),\n '& > span': {\n paddingLeft: 5,\n paddingRight: 5,\n display: 'inline-block'\n }\n },\n /* Styles applied to the legend element is notched. */\n legendNotched: {\n maxWidth: 1000,\n transition: theme.transitions.create('max-width', {\n duration: 100,\n easing: theme.transitions.easing.easeOut,\n delay: 50\n })\n }\n };\n};\n/**\n * @ignore - internal component.\n */\n\nvar NotchedOutline = /*#__PURE__*/React.forwardRef(function NotchedOutline(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n label = props.label,\n labelWidthProp = props.labelWidth,\n notched = props.notched,\n style = props.style,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"label\", \"labelWidth\", \"notched\", \"style\"]);\n var theme = useTheme();\n var align = theme.direction === 'rtl' ? 'right' : 'left';\n if (label !== undefined) {\n return /*#__PURE__*/React.createElement(\"fieldset\", _extends({\n \"aria-hidden\": true,\n className: clsx(classes.root, className),\n ref: ref,\n style: style\n }, other), /*#__PURE__*/React.createElement(\"legend\", {\n className: clsx(classes.legendLabelled, notched && classes.legendNotched)\n }, label ? /*#__PURE__*/React.createElement(\"span\", null, label) : /*#__PURE__*/React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n })));\n }\n var labelWidth = labelWidthProp > 0 ? labelWidthProp * 0.75 + 8 : 0.01;\n return /*#__PURE__*/React.createElement(\"fieldset\", _extends({\n \"aria-hidden\": true,\n style: _extends(_defineProperty({}, \"padding\".concat(capitalize(align)), 8), style),\n className: clsx(classes.root, className),\n ref: ref\n }, other), /*#__PURE__*/React.createElement(\"legend\", {\n className: classes.legend,\n style: {\n // IE 11: fieldset with legend does not render\n // a border radius. This maintains consistency\n // by always having a legend rendered\n width: notched ? labelWidth : 0.01\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n })));\n});\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The label.\n */\n label: PropTypes.node,\n /**\n * The width of the label.\n */\n labelWidth: PropTypes.number.isRequired,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n style: PropTypes.object\n} : void 0;\nexport default withStyles(styles, {\n name: 'PrivateNotchedOutline'\n})(NotchedOutline);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport InputBase from '../InputBase';\nimport NotchedOutline from './NotchedOutline';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n var borderColor = theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return {\n /* Styles applied to the root element. */\n root: {\n position: 'relative',\n borderRadius: theme.shape.borderRadius,\n '&:hover $notchedOutline': {\n borderColor: theme.palette.text.primary\n },\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n '&:hover $notchedOutline': {\n borderColor: borderColor\n }\n },\n '&$focused $notchedOutline': {\n borderColor: theme.palette.primary.main,\n borderWidth: 2\n },\n '&$error $notchedOutline': {\n borderColor: theme.palette.error.main\n },\n '&$disabled $notchedOutline': {\n borderColor: theme.palette.action.disabled\n }\n },\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {\n '&$focused $notchedOutline': {\n borderColor: theme.palette.secondary.main\n }\n },\n /* Styles applied to the root element if the component is focused. */\n focused: {},\n /* Styles applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `startAdornment` is provided. */\n adornedStart: {\n paddingLeft: 14\n },\n /* Styles applied to the root element if `endAdornment` is provided. */\n adornedEnd: {\n paddingRight: 14\n },\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n marginDense: {},\n /* Styles applied to the root element if `multiline={true}`. */\n multiline: {\n padding: '18.5px 14px',\n '&$marginDense': {\n paddingTop: 10.5,\n paddingBottom: 10.5\n }\n },\n /* Styles applied to the `NotchedOutline` element. */\n notchedOutline: {\n borderColor: borderColor\n },\n /* Styles applied to the `input` element. */\n input: {\n padding: '18.5px 14px',\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.type === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.type === 'light' ? null : '#fff',\n caretColor: theme.palette.type === 'light' ? null : '#fff',\n borderRadius: 'inherit'\n }\n },\n /* Styles applied to the `input` element if `margin=\"dense\"`. */\n inputMarginDense: {\n paddingTop: 10.5,\n paddingBottom: 10.5\n },\n /* Styles applied to the `input` element if `multiline={true}`. */\n inputMultiline: {\n padding: 0\n },\n /* Styles applied to the `input` element if `startAdornment` is provided. */\n inputAdornedStart: {\n paddingLeft: 0\n },\n /* Styles applied to the `input` element if `endAdornment` is provided. */\n inputAdornedEnd: {\n paddingRight: 0\n }\n };\n};\nvar OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(props, ref) {\n var classes = props.classes,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n _props$inputComponent = props.inputComponent,\n inputComponent = _props$inputComponent === void 0 ? 'input' : _props$inputComponent,\n label = props.label,\n _props$labelWidth = props.labelWidth,\n labelWidth = _props$labelWidth === void 0 ? 0 : _props$labelWidth,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n notched = props.notched,\n _props$type = props.type,\n type = _props$type === void 0 ? 'text' : _props$type,\n other = _objectWithoutProperties(props, [\"classes\", \"fullWidth\", \"inputComponent\", \"label\", \"labelWidth\", \"multiline\", \"notched\", \"type\"]);\n return /*#__PURE__*/React.createElement(InputBase, _extends({\n renderSuffix: function renderSuffix(state) {\n return /*#__PURE__*/React.createElement(NotchedOutline, {\n className: classes.notchedOutline,\n label: label,\n labelWidth: labelWidth,\n notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n });\n },\n classes: _extends({}, classes, {\n root: clsx(classes.root, classes.underline),\n notchedOutline: null\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The default `input` element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the input will indicate an error. This is normally obtained via context from\n * FormControl.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label of the input. It is only used for layout. The actual labelling\n * is handled by `InputLabel`. If specified `labelWidth` is ignored.\n */\n label: PropTypes.node,\n /**\n * The width of the label. Is ignored if `label` is provided. Prefer `label`\n * if the input label appears with a strike through.\n */\n labelWidth: PropTypes.number,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * If `true`, a textarea element will be rendered.\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element will be required.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default withStyles(styles, {\n name: 'MuiOutlinedInput'\n})(OutlinedInput);","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({\n color: theme.palette.text.secondary\n }, theme.typography.body1, {\n lineHeight: 1,\n padding: 0,\n '&$focused': {\n color: theme.palette.primary.main\n },\n '&$disabled': {\n color: theme.palette.text.disabled\n },\n '&$error': {\n color: theme.palette.error.main\n }\n }),\n /* Styles applied to the root element if the color is secondary. */\n colorSecondary: {\n '&$focused': {\n color: theme.palette.secondary.main\n }\n },\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Pseudo-class applied to the root element if `filled={true}`. */\n filled: {},\n /* Pseudo-class applied to the root element if `required={true}`. */\n required: {},\n /* Styles applied to the asterisk element. */\n asterisk: {\n '&$error': {\n color: theme.palette.error.main\n }\n }\n };\n};\nvar FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n color = props.color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'label' : _props$component,\n disabled = props.disabled,\n error = props.error,\n filled = props.filled,\n focused = props.focused,\n required = props.required,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"]);\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, classes[\"color\".concat(capitalize(fcs.color || 'primary'))], className, fcs.disabled && classes.disabled, fcs.error && classes.error, fcs.filled && classes.filled, fcs.focused && classes.focused, fcs.required && classes.required),\n ref: ref\n }, other), children, fcs.required && /*#__PURE__*/React.createElement(\"span\", {\n \"aria-hidden\": true,\n className: clsx(classes.asterisk, fcs.error && classes.error)\n }, \"\\u2009\", '*'));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the input is required.\n */\n required: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormLabel'\n})(FormLabel);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport FormLabel from '../FormLabel';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'block',\n transformOrigin: 'top left'\n },\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Pseudo-class applied to the root element if `required={true}`. */\n required: {},\n /* Pseudo-class applied to the asterisk element. */\n asterisk: {},\n /* Styles applied to the root element if the component is a descendant of `FormControl`. */\n formControl: {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 24px) scale(1)'\n },\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n // Compensation for the `Input.inputDense` style.\n transform: 'translate(0, 21px) scale(1)'\n },\n /* Styles applied to the `input` element if `shrink={true}`. */\n shrink: {\n transform: 'translate(0, 1.5px) scale(0.75)',\n transformOrigin: 'top left'\n },\n /* Styles applied to the `input` element if `disableAnimation={false}`. */\n animated: {\n transition: theme.transitions.create(['color', 'transform'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n },\n /* Styles applied to the root element if `variant=\"filled\"`. */\n filled: {\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 20px) scale(1)',\n '&$marginDense': {\n transform: 'translate(12px, 17px) scale(1)'\n },\n '&$shrink': {\n transform: 'translate(12px, 10px) scale(0.75)',\n '&$marginDense': {\n transform: 'translate(12px, 7px) scale(0.75)'\n }\n }\n },\n /* Styles applied to the root element if `variant=\"outlined\"`. */\n outlined: {\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 20px) scale(1)',\n '&$marginDense': {\n transform: 'translate(14px, 12px) scale(1)'\n },\n '&$shrink': {\n transform: 'translate(14px, -6px) scale(0.75)'\n }\n }\n };\n};\nvar InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$disableAnimati = props.disableAnimation,\n disableAnimation = _props$disableAnimati === void 0 ? false : _props$disableAnimati,\n margin = props.margin,\n shrinkProp = props.shrink,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disableAnimation\", \"margin\", \"shrink\", \"variant\"]);\n var muiFormControl = useFormControl();\n var shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['margin', 'variant']\n });\n return /*#__PURE__*/React.createElement(FormLabel, _extends({\n \"data-shrink\": shrink,\n className: clsx(classes.root, className, muiFormControl && classes.formControl, !disableAnimation && classes.animated, shrink && classes.shrink, fcs.margin === 'dense' && classes.marginDense, {\n 'filled': classes.filled,\n 'outlined': classes.outlined\n }[fcs.variant]),\n classes: {\n focused: classes.focused,\n disabled: classes.disabled,\n error: classes.error,\n required: classes.required,\n asterisk: classes.asterisk\n },\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The contents of the `InputLabel`.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * If `true`, the transition animation is disabled.\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, apply disabled class.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label will be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the input is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiInputLabel'\n})(InputLabel);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nexport var styles = {\n /* Styles applied to the root element. */\n root: {\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top' // Fix alignment issue on Safari.\n },\n /* Styles applied to the root element if `margin=\"normal\"`. */\n marginNormal: {\n marginTop: 16,\n marginBottom: 8\n },\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n marginTop: 8,\n marginBottom: 4\n },\n /* Styles applied to the root element if `fullWidth={true}`. */\n fullWidth: {\n width: '100%'\n }\n};\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/components/text-fields/#components).\n *\n * ```jsx\n * <FormControl>\n * <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n * <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n * <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️Only one input can be used within a FormControl.\n */\n\nvar FormControl = /*#__PURE__*/React.forwardRef(function FormControl(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$error = props.error,\n error = _props$error === void 0 ? false : _props$error,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n visuallyFocused = props.focused,\n _props$hiddenLabel = props.hiddenLabel,\n hiddenLabel = _props$hiddenLabel === void 0 ? false : _props$hiddenLabel,\n _props$margin = props.margin,\n margin = _props$margin === void 0 ? 'none' : _props$margin,\n _props$required = props.required,\n required = _props$required === void 0 ? false : _props$required,\n size = props.size,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"fullWidth\", \"focused\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"]);\n var _React$useState = React.useState(function () {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n var initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, function (child) {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n var input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n }),\n adornedStart = _React$useState[0],\n setAdornedStart = _React$useState[1];\n var _React$useState2 = React.useState(function () {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n var initialFilled = false;\n if (children) {\n React.Children.forEach(children, function (child) {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n }),\n filled = _React$useState2[0],\n setFilled = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n _focused = _React$useState3[0],\n setFocused = _React$useState3[1];\n var focused = visuallyFocused !== undefined ? visuallyFocused : _focused;\n if (disabled && focused) {\n setFocused(false);\n }\n var registerEffect;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n var registeredInput = React.useRef(false);\n registerEffect = function registerEffect() {\n if (registeredInput.current) {\n console.error(['Material-UI: There are multiple InputBase components inside a FormControl.', 'This is not supported. It might cause infinite rendering loops.', 'Only use one InputBase.'].join('\\n'));\n }\n registeredInput.current = true;\n return function () {\n registeredInput.current = false;\n };\n };\n }\n var onFilled = React.useCallback(function () {\n setFilled(true);\n }, []);\n var onEmpty = React.useCallback(function () {\n setFilled(false);\n }, []);\n var childContext = {\n adornedStart: adornedStart,\n setAdornedStart: setAdornedStart,\n color: color,\n disabled: disabled,\n error: error,\n filled: filled,\n focused: focused,\n fullWidth: fullWidth,\n hiddenLabel: hiddenLabel,\n margin: (size === 'small' ? 'dense' : undefined) || margin,\n onBlur: function onBlur() {\n setFocused(false);\n },\n onEmpty: onEmpty,\n onFilled: onFilled,\n onFocus: function onFocus() {\n setFocused(true);\n },\n registerEffect: registerEffect,\n required: required,\n variant: variant\n };\n return /*#__PURE__*/React.createElement(FormControlContext.Provider, {\n value: childContext\n }, /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, margin !== 'none' && classes[\"margin\".concat(capitalize(margin))], fullWidth && classes.fullWidth),\n ref: ref\n }, other), children));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The contents of the form control.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component will be displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label will be hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the input is required.\n */\n required: PropTypes.bool,\n /**\n * The size of the text field.\n */\n size: PropTypes.oneOf(['medium', 'small']),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormControl'\n})(FormControl);","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: _extends({\n color: theme.palette.text.secondary\n }, theme.typography.caption, {\n textAlign: 'left',\n marginTop: 3,\n margin: 0,\n '&$disabled': {\n color: theme.palette.text.disabled\n },\n '&$error': {\n color: theme.palette.error.main\n }\n }),\n /* Pseudo-class applied to the root element if `error={true}`. */\n error: {},\n /* Pseudo-class applied to the root element if `disabled={true}`. */\n disabled: {},\n /* Styles applied to the root element if `margin=\"dense\"`. */\n marginDense: {\n marginTop: 4\n },\n /* Styles applied to the root element if `variant=\"filled\"` or `variant=\"outlined\"`. */\n contained: {\n marginLeft: 14,\n marginRight: 14\n },\n /* Pseudo-class applied to the root element if `focused={true}`. */\n focused: {},\n /* Pseudo-class applied to the root element if `filled={true}`. */\n filled: {},\n /* Pseudo-class applied to the root element if `required={true}`. */\n required: {}\n };\n};\nvar FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'p' : _props$component,\n disabled = props.disabled,\n error = props.error,\n filled = props.filled,\n focused = props.focused,\n margin = props.margin,\n required = props.required,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"]);\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant', 'margin', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, (fcs.variant === 'filled' || fcs.variant === 'outlined') && classes.contained, className, fcs.disabled && classes.disabled, fcs.error && classes.error, fcs.filled && classes.filled, fcs.focused && classes.focused, fcs.required && classes.required, fcs.margin === 'dense' && classes.marginDense),\n ref: ref\n }, other), children === ' ' ? /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n }) : children);\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n *\n * If `' '` is provided, the component reserves one line height for displaying a future message.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, the helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, helper text should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the helper text should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the helper text should use focused classes key.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * If `true`, the helper text should use required classes key.\n */\n required: PropTypes.bool,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiFormHelperText'\n})(FormHelperText);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@material-ui/utils\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport { refType } from '@material-ui/utils';\nimport Menu from '../Menu/Menu';\nimport { isFilled } from '../InputBase/utils';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nfunction areEqualValues(a, b) {\n if (_typeof(b) === 'object' && b !== null) {\n return a === b;\n }\n return String(a) === String(b);\n}\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\n/**\n * @ignore - internal component.\n */\n\nvar SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n var ariaLabel = props['aria-label'],\n autoFocus = props.autoFocus,\n autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n className = props.className,\n defaultValue = props.defaultValue,\n disabled = props.disabled,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n inputRefProp = props.inputRef,\n labelId = props.labelId,\n _props$MenuProps = props.MenuProps,\n MenuProps = _props$MenuProps === void 0 ? {} : _props$MenuProps,\n multiple = props.multiple,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onClose = props.onClose,\n onFocus = props.onFocus,\n onOpen = props.onOpen,\n openProp = props.open,\n readOnly = props.readOnly,\n renderValue = props.renderValue,\n _props$SelectDisplayP = props.SelectDisplayProps,\n SelectDisplayProps = _props$SelectDisplayP === void 0 ? {} : _props$SelectDisplayP,\n tabIndexProp = props.tabIndex,\n type = props.type,\n valueProp = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"classes\", \"className\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"]);\n var _useControlled = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n }),\n _useControlled2 = _slicedToArray(_useControlled, 2),\n value = _useControlled2[0],\n setValue = _useControlled2[1];\n var inputRef = React.useRef(null);\n var _React$useState = React.useState(null),\n displayNode = _React$useState[0],\n setDisplayNode = _React$useState[1];\n var _React$useRef = React.useRef(openProp != null),\n isOpenControlled = _React$useRef.current;\n var _React$useState2 = React.useState(),\n menuMinWidthState = _React$useState2[0],\n setMenuMinWidthState = _React$useState2[1];\n var _React$useState3 = React.useState(false),\n openState = _React$useState3[0],\n setOpenState = _React$useState3[1];\n var handleRef = useForkRef(ref, inputRefProp);\n React.useImperativeHandle(handleRef, function () {\n return {\n focus: function focus() {\n displayNode.focus();\n },\n node: inputRef.current,\n value: value\n };\n }, [displayNode, value]);\n React.useEffect(function () {\n if (autoFocus && displayNode) {\n displayNode.focus();\n }\n }, [autoFocus, displayNode]);\n React.useEffect(function () {\n if (displayNode) {\n var label = ownerDocument(displayNode).getElementById(labelId);\n if (label) {\n var handler = function handler() {\n if (getSelection().isCollapsed) {\n displayNode.focus();\n }\n };\n label.addEventListener('click', handler);\n return function () {\n label.removeEventListener('click', handler);\n };\n }\n }\n return undefined;\n }, [labelId, displayNode]);\n var update = function update(open, event) {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : displayNode.clientWidth);\n setOpenState(open);\n }\n };\n var handleMouseDown = function handleMouseDown(event) {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n } // Hijack the default focus behavior.\n\n event.preventDefault();\n displayNode.focus();\n update(true, event);\n };\n var handleClose = function handleClose(event) {\n update(false, event);\n };\n var childrenArray = React.Children.toArray(children); // Support autofill.\n\n var handleChange = function handleChange(event) {\n var index = childrenArray.map(function (child) {\n return child.props.value;\n }).indexOf(event.target.value);\n if (index === -1) {\n return;\n }\n var child = childrenArray[index];\n setValue(child.props.value);\n if (onChange) {\n onChange(event, child);\n }\n };\n var handleItemClick = function handleItemClick(child) {\n return function (event) {\n if (!multiple) {\n update(false, event);\n }\n var newValue;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n var itemIndex = value.indexOf(child.props.value);\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n if (value === newValue) {\n return;\n }\n setValue(newValue);\n if (onChange) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: newValue,\n name: name\n }\n });\n onChange(event, child);\n }\n };\n };\n var handleKeyDown = function handleKeyDown(event) {\n if (!readOnly) {\n var validKeys = [' ', 'ArrowUp', 'ArrowDown',\n // The native select doesn't respond to enter on MacOS, but it's recommended by\n // https://www.w3.org/TR/wai-aria-practices/examples/listbox/listbox-collapsible.html\n 'Enter'];\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n var open = displayNode !== null && (isOpenControlled ? openProp : openState);\n var handleBlur = function handleBlur(event) {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n event.persist(); // Preact support, target is read only property on a native event.\n\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value: value,\n name: name\n }\n });\n onBlur(event);\n }\n };\n delete other['aria-invalid'];\n var display;\n var displaySingle;\n var displayMultiple = [];\n var computeDisplay = false;\n var foundMatch = false; // No need to display any value if the field is empty.\n\n if (isFilled({\n value: value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n var items = childrenArray.map(function (child) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n var selected;\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The `value` prop must be an array when using the `Select` component with `multiple`.\" : _formatMuiErrorMessage(2));\n }\n selected = value.some(function (v) {\n return areEqualValues(v, child.props.value);\n });\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n if (selected) {\n foundMatch = true;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : undefined,\n onClick: handleItemClick(child),\n onKeyUp: function onKeyUp(event) {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native <option> and causes\n // the select to close immediately since we open on space keydown\n event.preventDefault();\n }\n if (child.props.onKeyUp) {\n child.props.onKeyUp(event);\n }\n },\n role: 'option',\n selected: selected,\n value: undefined,\n // The value is most likely not a valid HTML attribute.\n 'data-value': child.props.value // Instead, we provide it as a data attribute.\n });\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(function () {\n if (!foundMatch && !multiple && value !== '') {\n var values = childrenArray.map(function (child) {\n return child.props.value;\n });\n console.warn([\"Material-UI: You have provided an out-of-range value `\".concat(value, \"` for the select \").concat(name ? \"(name=\\\"\".concat(name, \"\\\") \") : '', \"component.\"), \"Consider providing a value that matches one of the available options or ''.\", \"The available values are \".concat(values.filter(function (x) {\n return x != null;\n }).map(function (x) {\n return \"`\".concat(x, \"`\");\n }).join(', ') || '\"\"', \".\")].join('\\n'));\n }\n }, [foundMatch, childrenArray, multiple, name, value]);\n }\n if (computeDisplay) {\n display = multiple ? displayMultiple.join(', ') : displaySingle;\n } // Avoid performing a layout computation in the render method.\n\n var menuMinWidth = menuMinWidthState;\n if (!autoWidth && isOpenControlled && displayNode) {\n menuMinWidth = displayNode.clientWidth;\n }\n var tabIndex;\n if (typeof tabIndexProp !== 'undefined') {\n tabIndex = tabIndexProp;\n } else {\n tabIndex = disabled ? null : 0;\n }\n var buttonId = SelectDisplayProps.id || (name ? \"mui-component-select-\".concat(name) : undefined);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", _extends({\n className: clsx(classes.root,\n // TODO v5: merge root and select\n classes.select, classes.selectMenu, classes[variant], className, disabled && classes.disabled),\n ref: setDisplayNode,\n tabIndex: tabIndex,\n role: \"button\",\n \"aria-disabled\": disabled ? 'true' : undefined,\n \"aria-expanded\": open ? 'true' : undefined,\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n onKeyDown: handleKeyDown,\n onMouseDown: disabled || readOnly ? null : handleMouseDown,\n onBlur: handleBlur,\n onFocus: onFocus\n }, SelectDisplayProps, {\n // The id is required for proper a11y\n id: buttonId\n }), isEmpty(display) ? /*#__PURE__*/\n // eslint-disable-next-line react/no-danger\n React.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: '​'\n }\n }) : display), /*#__PURE__*/React.createElement(\"input\", _extends({\n value: Array.isArray(value) ? value.join(',') : value,\n name: name,\n ref: inputRef,\n \"aria-hidden\": true,\n onChange: handleChange,\n tabIndex: -1,\n className: classes.nativeInput,\n autoFocus: autoFocus\n }, other)), /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], open && classes.iconOpen, disabled && classes.disabled)\n }), /*#__PURE__*/React.createElement(Menu, _extends({\n id: \"menu-\".concat(name || ''),\n anchorEl: displayNode,\n open: open,\n onClose: handleClose\n }, MenuProps, {\n MenuListProps: _extends({\n 'aria-labelledby': labelId,\n role: 'listbox',\n disableListWrap: true\n }, MenuProps.MenuListProps),\n PaperProps: _extends({}, MenuProps.PaperProps, {\n style: _extends({\n minWidth: menuMinWidth\n }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n })\n }), items));\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n /**\n * @ignore\n */\n 'aria-label': PropTypes.string,\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n */\n autoWidth: PropTypes.bool,\n /**\n * The option elements to populate the select with.\n * Can be some `<MenuItem>` elements.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n /**\n * The default element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the select will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the selected item is displayed even if its value is empty.\n */\n displayEmpty: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n /**\n * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n * Equivalent to `ref`\n */\n inputRef: refType,\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n /**\n * Props applied to the [`Menu`](/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n */\n multiple: PropTypes.bool,\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * @param {object} [child] The react element that was selected.\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * Control `select` open state.\n */\n open: PropTypes.bool,\n /**\n * @ignore\n */\n readOnly: PropTypes.bool,\n /**\n * Render the selected value.\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n type: PropTypes.any,\n /**\n * The input value.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled(_ref) {\n var controlled = _ref.controlled,\n defaultProp = _ref.default,\n name = _ref.name,\n _ref$state = _ref.state,\n state = _ref$state === void 0 ? 'value' : _ref$state;\n var _React$useRef = React.useRef(controlled !== undefined),\n isControlled = _React$useRef.current;\n var _React$useState = React.useState(defaultProp),\n valueState = _React$useState[0],\n setValue = _React$useState[1];\n var value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(function () {\n if (isControlled !== (controlled !== undefined)) {\n console.error([\"Material-UI: A component is changing the \".concat(isControlled ? '' : 'un', \"controlled \").concat(state, \" state of \").concat(name, \" to be \").concat(isControlled ? 'un' : '', \"controlled.\"), 'Elements should not switch from uncontrolled to controlled (or vice versa).', \"Decide between using a controlled or uncontrolled \".concat(name, \" \") + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [controlled]);\n var _React$useRef2 = React.useRef(defaultProp),\n defaultValue = _React$useRef2.current;\n React.useEffect(function () {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([\"Material-UI: A component is changing the default \".concat(state, \" state of an uncontrolled \").concat(name, \" after being initialized. \") + \"To suppress this warning opt to use a controlled \".concat(name, \".\")].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n var setValueIfUncontrolled = React.useCallback(function (newValue) {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport capitalize from '../utils/capitalize';\n/**\n * @ignore - internal component.\n */\n\nvar NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n var classes = props.classes,\n className = props.className,\n disabled = props.disabled,\n IconComponent = props.IconComponent,\n inputRef = props.inputRef,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"disabled\", \"IconComponent\", \"inputRef\", \"variant\"]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"select\", _extends({\n className: clsx(classes.root,\n // TODO v5: merge root and select\n classes.select, classes[variant], className, disabled && classes.disabled),\n disabled: disabled,\n ref: inputRef || ref\n }, other)), props.multiple ? null : /*#__PURE__*/React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"icon\".concat(capitalize(variant))], disabled && classes.disabled)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n /**\n * The option elements to populate the select with.\n * Can be some `<option>` elements.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n /**\n * If `true`, the select will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n /**\n * Use that prop to pass a ref to the native select element.\n * @deprecated\n */\n inputRef: refType,\n /**\n * @ignore\n */\n multiple: PropTypes.bool,\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The input value.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport NativeSelectInput from './NativeSelectInput';\nimport withStyles from '../styles/withStyles';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the select component `root` class. */\n root: {},\n /* Styles applied to the select component `select` class. */\n select: {\n '-moz-appearance': 'none',\n // Reset\n '-webkit-appearance': 'none',\n // Reset\n // When interacting quickly, the text can end up selected.\n // Native select can't be selected either.\n userSelect: 'none',\n borderRadius: 0,\n // Reset\n minWidth: 16,\n // So it doesn't collapse.\n cursor: 'pointer',\n '&:focus': {\n // Show that it's not an text input\n backgroundColor: theme.palette.type === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)',\n borderRadius: 0 // Reset Chrome style\n },\n // Remove IE 11 arrow\n '&::-ms-expand': {\n display: 'none'\n },\n '&$disabled': {\n cursor: 'default'\n },\n '&[multiple]': {\n height: 'auto'\n },\n '&:not([multiple]) option, &:not([multiple]) optgroup': {\n backgroundColor: theme.palette.background.paper\n },\n '&&': {\n paddingRight: 24\n }\n },\n /* Styles applied to the select component if `variant=\"filled\"`. */\n filled: {\n '&&': {\n paddingRight: 32\n }\n },\n /* Styles applied to the select component if `variant=\"outlined\"`. */\n outlined: {\n borderRadius: theme.shape.borderRadius,\n '&&': {\n paddingRight: 32\n }\n },\n /* Styles applied to the select component `selectMenu` class. */\n selectMenu: {\n height: 'auto',\n // Resets for multpile select with chips\n minHeight: '1.1876em',\n // Required for select\\text-field height consistency\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n },\n /* Pseudo-class applied to the select component `disabled` class. */\n disabled: {},\n /* Styles applied to the icon component. */\n icon: {\n // We use a position absolute over a flexbox in order to forward the pointer events\n // to the input and to support wrapping tags..\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 12px)',\n // Center vertically\n pointerEvents: 'none',\n // Don't block pointer events on the select under the icon.\n color: theme.palette.action.active,\n '&$disabled': {\n color: theme.palette.action.disabled\n }\n },\n /* Styles applied to the icon component if the popup is open. */\n iconOpen: {\n transform: 'rotate(180deg)'\n },\n /* Styles applied to the icon component if `variant=\"filled\"`. */\n iconFilled: {\n right: 7\n },\n /* Styles applied to the icon component if `variant=\"outlined\"`. */\n iconOutlined: {\n right: 7\n },\n /* Styles applied to the underlying native input component. */\n nativeInput: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n opacity: 0,\n pointerEvents: 'none',\n width: '100%'\n }\n };\n};\nvar defaultInput = /*#__PURE__*/React.createElement(Input, null);\n/**\n * An alternative to `<Select native />` with a much smaller bundle size footprint.\n */\n\nvar NativeSelect = /*#__PURE__*/React.forwardRef(function NativeSelect(props, ref) {\n var children = props.children,\n classes = props.classes,\n _props$IconComponent = props.IconComponent,\n IconComponent = _props$IconComponent === void 0 ? ArrowDropDownIcon : _props$IconComponent,\n _props$input = props.input,\n input = _props$input === void 0 ? defaultInput : _props$input,\n inputProps = props.inputProps,\n variant = props.variant,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"IconComponent\", \"input\", \"inputProps\", \"variant\"]);\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant']\n });\n return /*#__PURE__*/React.cloneElement(input, _extends({\n // Most of the logic is implemented in `NativeSelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: NativeSelectInput,\n inputProps: _extends({\n children: children,\n classes: classes,\n IconComponent: IconComponent,\n variant: fcs.variant,\n type: undefined\n }, inputProps, input ? input.props.inputProps : {}),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelect.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The option elements to populate the select with.\n * Can be some `<option>` elements.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType,\n /**\n * An `Input` element; does not have to be a material-ui specific `Input`.\n */\n input: PropTypes.element,\n /**\n * Attributes applied to the `select` element.\n */\n inputProps: PropTypes.object,\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The input value. The DOM API casts this to a string.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nNativeSelect.muiName = 'Select';\nexport default withStyles(styles, {\n name: 'MuiNativeSelect'\n})(NativeSelect);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { mergeClasses } from '@material-ui/styles';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport withStyles from '../styles/withStyles';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport { styles as nativeSelectStyles } from '../NativeSelect/NativeSelect';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nexport var styles = nativeSelectStyles;\nvar _ref = /*#__PURE__*/React.createElement(Input, null);\nvar _ref2 = /*#__PURE__*/React.createElement(FilledInput, null);\nvar Select = /*#__PURE__*/React.forwardRef(function Select(props, ref) {\n var _props$autoWidth = props.autoWidth,\n autoWidth = _props$autoWidth === void 0 ? false : _props$autoWidth,\n children = props.children,\n classes = props.classes,\n _props$displayEmpty = props.displayEmpty,\n displayEmpty = _props$displayEmpty === void 0 ? false : _props$displayEmpty,\n _props$IconComponent = props.IconComponent,\n IconComponent = _props$IconComponent === void 0 ? ArrowDropDownIcon : _props$IconComponent,\n id = props.id,\n input = props.input,\n inputProps = props.inputProps,\n label = props.label,\n labelId = props.labelId,\n _props$labelWidth = props.labelWidth,\n labelWidth = _props$labelWidth === void 0 ? 0 : _props$labelWidth,\n MenuProps = props.MenuProps,\n _props$multiple = props.multiple,\n multiple = _props$multiple === void 0 ? false : _props$multiple,\n _props$native = props.native,\n native = _props$native === void 0 ? false : _props$native,\n onClose = props.onClose,\n onOpen = props.onOpen,\n open = props.open,\n renderValue = props.renderValue,\n SelectDisplayProps = props.SelectDisplayProps,\n _props$variant = props.variant,\n variantProps = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoWidth\", \"children\", \"classes\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"labelWidth\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"]);\n var inputComponent = native ? NativeSelectInput : SelectInput;\n var muiFormControl = useFormControl();\n var fcs = formControlState({\n props: props,\n muiFormControl: muiFormControl,\n states: ['variant']\n });\n var variant = fcs.variant || variantProps;\n var InputComponent = input || {\n standard: _ref,\n outlined: /*#__PURE__*/React.createElement(OutlinedInput, {\n label: label,\n labelWidth: labelWidth\n }),\n filled: _ref2\n }[variant];\n return /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: inputComponent,\n inputProps: _extends({\n children: children,\n IconComponent: IconComponent,\n variant: variant,\n type: undefined,\n // We render a select. We can ignore the type provided by the `Input`.\n multiple: multiple\n }, native ? {\n id: id\n } : {\n autoWidth: autoWidth,\n displayEmpty: displayEmpty,\n labelId: labelId,\n MenuProps: MenuProps,\n onClose: onClose,\n onOpen: onOpen,\n open: open,\n renderValue: renderValue,\n SelectDisplayProps: _extends({\n id: id\n }, SelectDisplayProps)\n }, inputProps, {\n classes: inputProps ? mergeClasses({\n baseClasses: classes,\n newClasses: inputProps.classes,\n Component: Select\n }) : classes\n }, input ? input.props.inputProps : {}),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n */\n autoWidth: PropTypes.bool,\n /**\n * The option elements to populate the select with.\n * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n *\n * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The default element value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, a value is displayed even if no items are selected.\n *\n * In order to display a meaningful value, a function should be passed to the `renderValue` prop which returns the value to be displayed when no items are selected.\n * You can only use it when the `native` prop is `false` (default).\n */\n displayEmpty: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType,\n /**\n * The `id` of the wrapper element or the `select` element when `native`.\n */\n id: PropTypes.string,\n /**\n * An `Input` element; does not have to be a material-ui specific `Input`.\n */\n input: PropTypes.element,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * When `native` is `true`, the attributes are applied on the `select` element.\n */\n inputProps: PropTypes.object,\n /**\n * See [OutlinedInput#label](/api/outlined-input/#props)\n */\n label: PropTypes.node,\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n /**\n * See [OutlinedInput#label](/api/outlined-input/#props)\n */\n labelWidth: PropTypes.number,\n /**\n * Props applied to the [`Menu`](/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n */\n multiple: PropTypes.bool,\n /**\n * If `true`, the component will be using a native `select` element.\n */\n native: PropTypes.bool,\n /**\n * Callback function fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * @param {object} [child] The react element that was selected when `native` is `false` (default).\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * Control `select` open state.\n * You can only use it when the `native` prop is `false` (default).\n */\n open: PropTypes.bool,\n /**\n * Render the selected value.\n * You can only use it when the `native` prop is `false` (default).\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n /**\n * The input value. Providing an empty string will select no options.\n * This prop is required when the `native` prop is `false` (default).\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n *\n * If the value is an object it must have reference equality with the option in order to be selected.\n * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default withStyles(styles, {\n name: 'MuiSelect'\n})(Select);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport Input from '../Input';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport InputLabel from '../InputLabel';\nimport FormControl from '../FormControl';\nimport FormHelperText from '../FormHelperText';\nimport Select from '../Select';\nimport withStyles from '../styles/withStyles';\nvar variantComponent = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput\n};\nexport var styles = {\n /* Styles applied to the root element. */\n root: {}\n};\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/api/form-control/)\n * - [InputLabel](/api/input-label/)\n * - [FilledInput](/api/filled-input/)\n * - [OutlinedInput](/api/outlined-input/)\n * - [Input](/api/input/)\n * - [FormHelperText](/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n * step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\n\nvar TextField = /*#__PURE__*/React.forwardRef(function TextField(props, ref) {\n var autoComplete = props.autoComplete,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'primary' : _props$color,\n defaultValue = props.defaultValue,\n _props$disabled = props.disabled,\n disabled = _props$disabled === void 0 ? false : _props$disabled,\n _props$error = props.error,\n error = _props$error === void 0 ? false : _props$error,\n FormHelperTextProps = props.FormHelperTextProps,\n _props$fullWidth = props.fullWidth,\n fullWidth = _props$fullWidth === void 0 ? false : _props$fullWidth,\n helperText = props.helperText,\n hiddenLabel = props.hiddenLabel,\n id = props.id,\n InputLabelProps = props.InputLabelProps,\n inputProps = props.inputProps,\n InputProps = props.InputProps,\n inputRef = props.inputRef,\n label = props.label,\n _props$multiline = props.multiline,\n multiline = _props$multiline === void 0 ? false : _props$multiline,\n name = props.name,\n onBlur = props.onBlur,\n onChange = props.onChange,\n onFocus = props.onFocus,\n placeholder = props.placeholder,\n _props$required = props.required,\n required = _props$required === void 0 ? false : _props$required,\n rows = props.rows,\n rowsMax = props.rowsMax,\n _props$select = props.select,\n select = _props$select === void 0 ? false : _props$select,\n SelectProps = props.SelectProps,\n type = props.type,\n value = props.value,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'standard' : _props$variant,\n other = _objectWithoutProperties(props, [\"autoComplete\", \"autoFocus\", \"children\", \"classes\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"hiddenLabel\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"rowsMax\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"]);\n if (process.env.NODE_ENV !== 'production') {\n if (select && !children) {\n console.error('Material-UI: `children` must be passed when using the `TextField` component with `select`.');\n }\n }\n var InputMore = {};\n if (variant === 'outlined') {\n if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n InputMore.notched = InputLabelProps.shrink;\n }\n if (label) {\n var _InputLabelProps$requ;\n var displayRequired = (_InputLabelProps$requ = InputLabelProps === null || InputLabelProps === void 0 ? void 0 : InputLabelProps.required) !== null && _InputLabelProps$requ !== void 0 ? _InputLabelProps$requ : required;\n InputMore.label = /*#__PURE__*/React.createElement(React.Fragment, null, label, displayRequired && \"\\xA0*\");\n }\n }\n if (select) {\n // unset defaults from textbox inputs\n if (!SelectProps || !SelectProps.native) {\n InputMore.id = undefined;\n }\n InputMore['aria-describedby'] = undefined;\n }\n var helperTextId = helperText && id ? \"\".concat(id, \"-helper-text\") : undefined;\n var inputLabelId = label && id ? \"\".concat(id, \"-label\") : undefined;\n var InputComponent = variantComponent[variant];\n var InputElement = /*#__PURE__*/React.createElement(InputComponent, _extends({\n \"aria-describedby\": helperTextId,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n fullWidth: fullWidth,\n multiline: multiline,\n name: name,\n rows: rows,\n rowsMax: rowsMax,\n type: type,\n value: value,\n id: id,\n inputRef: inputRef,\n onBlur: onBlur,\n onChange: onChange,\n onFocus: onFocus,\n placeholder: placeholder,\n inputProps: inputProps\n }, InputMore, InputProps));\n return /*#__PURE__*/React.createElement(FormControl, _extends({\n className: clsx(classes.root, className),\n disabled: disabled,\n error: error,\n fullWidth: fullWidth,\n hiddenLabel: hiddenLabel,\n ref: ref,\n required: required,\n color: color,\n variant: variant\n }, other), label && /*#__PURE__*/React.createElement(InputLabel, _extends({\n htmlFor: id,\n id: inputLabelId\n }, InputLabelProps), label), select ? /*#__PURE__*/React.createElement(Select, _extends({\n \"aria-describedby\": helperTextId,\n id: id,\n labelId: inputLabelId,\n value: value,\n input: InputElement\n }, SelectProps), children) : InputElement, helperText && /*#__PURE__*/React.createElement(FormHelperText, _extends({\n id: helperTextId\n }, FormHelperTextProps), helperText));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element will be focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['primary', 'secondary']),\n /**\n * The default value of the `input` element.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the `input` element will be disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label will be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * Props applied to the [`FormHelperText`](/api/form-helper-text/) element.\n */\n FormHelperTextProps: PropTypes.object,\n /**\n * If `true`, the input will take up the full width of its container.\n */\n fullWidth: PropTypes.bool,\n /**\n * The helper text content.\n */\n helperText: PropTypes.node,\n /**\n * @ignore\n */\n hiddenLabel: PropTypes.bool,\n /**\n * The id of the `input` element.\n * Use this prop to make `label` and `helperText` accessible for screen readers.\n */\n id: PropTypes.string,\n /**\n * Props applied to the [`InputLabel`](/api/input-label/) element.\n */\n InputLabelProps: PropTypes.object,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Props applied to the Input element.\n * It will be a [`FilledInput`](/api/filled-input/),\n * [`OutlinedInput`](/api/outlined-input/) or [`Input`](/api/input/)\n * component depending on the `variant` prop value.\n */\n InputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label content.\n */\n label: PropTypes.node,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, a textarea element will be rendered instead of an input.\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The short hint displayed in the input before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * If `true`, the label is displayed as required and the `input` element` will be required.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n rowsMax: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Render a [`Select`](/api/select/) element while passing the Input element to `Select` as `input` parameter.\n * If this option is set you must pass the options of the select as children.\n */\n select: PropTypes.bool,\n /**\n * Props applied to the [`Select`](/api/select/) element.\n */\n SelectProps: PropTypes.object,\n /**\n * The size of the text field.\n */\n size: PropTypes.oneOf(['medium', 'small']),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTextField'\n})(TextField);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n },\n /* Styles applied to the root element if `color=\"primary\"`. */\n colorPrimary: {\n color: theme.palette.primary.main\n },\n /* Styles applied to the root element if `color=\"inherit\"`. */\n colorInherit: {\n color: 'inherit'\n },\n /* Styles applied to the inner `component` element if `disableGutters={false}`. */\n gutters: {\n paddingLeft: 16,\n paddingRight: 16\n },\n /* Styles applied to the root element if `inset={true}`. */\n inset: {\n paddingLeft: 72\n },\n /* Styles applied to the root element if `disableSticky={false}`. */\n sticky: {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: 'inherit'\n }\n };\n};\nvar ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(props, ref) {\n var classes = props.classes,\n className = props.className,\n _props$color = props.color,\n color = _props$color === void 0 ? 'default' : _props$color,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'li' : _props$component,\n _props$disableGutters = props.disableGutters,\n disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,\n _props$disableSticky = props.disableSticky,\n disableSticky = _props$disableSticky === void 0 ? false : _props$disableSticky,\n _props$inset = props.inset,\n inset = _props$inset === void 0 ? false : _props$inset,\n other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"]);\n return /*#__PURE__*/React.createElement(Component, _extends({\n className: clsx(classes.root, className, color !== 'default' && classes[\"color\".concat(capitalize(color))], inset && classes.inset, !disableSticky && classes.sticky, !disableGutters && classes.gutters),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n */\n color: PropTypes.oneOf(['default', 'primary', 'inherit']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes\n /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader will be indented.\n */\n inset: PropTypes.bool\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiListSubheader'\n})(ListSubheader);","import { createMuiTheme, ThemeProvider as ThemeProvider$1 } from '@material-ui/core/styles';\nimport merge from 'deepmerge';\nimport React, { useRef, useState, useEffect, useCallback, createContext, useMemo, useContext, useImperativeHandle } from 'react';\nimport { DndContext, useDrop, useDrag, useDragLayer, DndProvider } from 'react-dnd';\nimport { HTML5Backend, getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl, IntlProvider } from 'react-intl';\nimport { createUseStyles, ThemeProvider } from 'react-jss';\nimport { useSelector, useDispatch, useStore, Provider } from 'react-redux';\nimport shortid from 'shortid';\nimport { createSelector, createSlice, configureStore } from '@reduxjs/toolkit';\nimport sort from 'fast-sort';\nimport FuzzySearch from 'fuzzy-search';\nimport watch from 'redux-watch';\nimport filesize from 'filesize';\nimport ExactTrie from 'exact-trie';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport classnames from 'classnames';\nimport Box from '@material-ui/core/Box';\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\nimport hotkeys from 'hotkeys-js';\nimport Breadcrumbs from '@material-ui/core/Breadcrumbs';\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Typography from '@material-ui/core/Typography';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport TextField from '@material-ui/core/TextField';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { VariableSizeGrid, FixedSizeList } from 'react-window';\nimport ListSubheader from '@material-ui/core/ListSubheader';\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar useDebounce = function useDebounce(value, delay) {\n var _useState = useState(value),\n debouncedValue = _useState[0],\n setDebouncedValue = _useState[1];\n useEffect(function () {\n var handler = setTimeout(function () {\n setDebouncedValue(value);\n }, delay);\n return function () {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return [debouncedValue, setDebouncedValue];\n};\nvar UNINITIALIZED_SENTINEL = {};\nvar useStaticValue = function useStaticValue(factory) {\n var valueRef = useRef(UNINITIALIZED_SENTINEL);\n if (valueRef.current === UNINITIALIZED_SENTINEL) valueRef.current = factory();\n return valueRef.current;\n};\nvar useInstanceVariable = function useInstanceVariable(value) {\n var ref = useRef(value);\n useEffect(function () {\n ref.current = value;\n }, [ref, value]);\n return ref;\n};\nvar Logger = /*#__PURE__*/function () {\n function Logger() {}\n Logger.error = function error() {\n var _console;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n // eslint-disable-next-line no-console\n (_console = console).error.apply(_console, ['[Chonky runtime error]'].concat(args));\n };\n Logger.warn = function warn() {\n var _console2;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // eslint-disable-next-line no-console\n (_console2 = console).warn.apply(_console2, ['[Chonky runtime warning]'].concat(args));\n };\n Logger.debug = function debug() {\n var _console3;\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n // eslint-disable-next-line no-console\n (_console3 = console).debug.apply(_console3, ['[Chonky runtime debug]'].concat(args));\n };\n Logger.formatBullets = function formatBullets(bullets) {\n return \"\\n- \" + bullets.join('\\n- ');\n };\n return Logger;\n}();\nvar FileHelper = /*#__PURE__*/function () {\n function FileHelper() {}\n FileHelper.isDirectory = function isDirectory(file) {\n // Not a directory by default\n return !!file && file.isDir === true;\n };\n FileHelper.isHidden = function isHidden(file) {\n // Not hidden by default\n return !!file && file.isHidden === true;\n };\n FileHelper.isSymlink = function isSymlink(file) {\n // Not a symlink by default\n return !!file && file.isSymlink === true;\n };\n FileHelper.isEncrypted = function isEncrypted(file) {\n // Not encrypted by default\n return !!file && file.isEncrypted === true;\n };\n FileHelper.isClickable = function isClickable(file) {\n // Clickable by default\n return !!file;\n };\n FileHelper.isOpenable = function isOpenable(file) {\n // Openable by default\n return !!file && file.openable !== false;\n };\n FileHelper.isSelectable = function isSelectable(file) {\n // Selectable by default\n return !!file && file.selectable !== false;\n };\n FileHelper.isDraggable = function isDraggable(file) {\n // File & folders are draggable by default, `null` is not\n return !!file && file.draggable !== false;\n };\n FileHelper.isDroppable = function isDroppable(file) {\n // Folders are droppable by default, files are not\n if (!file) return false;\n if (file.isDir && file.droppable !== false) return true;\n return file.droppable === true;\n };\n FileHelper.isDndOpenable = function isDndOpenable(file) {\n // Folders are DnD openable by default, files are not\n if (!FileHelper.isOpenable(file)) return false;\n if (file.isDir && file.dndOpenable !== false) return true;\n return file.dndOpenable === true;\n };\n FileHelper.getModDate = function getModDate(file) {\n if (!file || file.modDate === null || file.modDate === undefined) return null;\n return FileHelper.parseDate(file.modDate);\n };\n FileHelper.parseDate = function parseDate(maybeDate) {\n if (typeof maybeDate === 'string' || typeof maybeDate === 'number') {\n // We allow users to provide string and numerical representations of dates.\n try {\n return new Date(maybeDate);\n } catch (error) {\n Logger.error(\"Could not convert provided string/number into a date: \" + error.message + \" \", 'Invalid value:', maybeDate);\n }\n }\n if (maybeDate instanceof Date && !isNaN(maybeDate.getTime())) {\n // We only allow valid dates objects\n return maybeDate;\n } // If we have an invalid date representation, we just return null.\n\n Logger.warn('Unsupported date representation:', maybeDate);\n return null;\n };\n FileHelper.getChildrenCount = function getChildrenCount(file) {\n if (!file || typeof file.childrenCount !== 'number') return null;\n return file.childrenCount;\n };\n return FileHelper;\n}();\nvar sanitizeInputArray = function sanitizeInputArray(mode, rawArray) {\n var sanitizedFiles = [];\n var errorMessages = [];\n if ((mode === 'folderChain' || mode === 'fileActions') && !rawArray) ;else if (!Array.isArray(rawArray)) {\n errorMessages.push(\"Expected \\\"\" + mode + \"\\\" prop to be an array, got \\\"\" + typeof rawArray + \"\\\" instead.\");\n } else {\n var nonObjectFileCount = 0;\n var missingFieldFileCount = 0;\n var seenIds = new Set();\n var duplicateIds = new Set();\n for (var i = 0; i < rawArray.length; ++i) {\n var item = rawArray[i];\n if (!item) {\n if (mode === 'fileActions') nonObjectFileCount++;else sanitizedFiles.push(null);\n } else if (typeof item !== 'object') {\n nonObjectFileCount++;\n } else {\n if (!item.id || mode !== 'fileActions' && !item.name) {\n missingFieldFileCount++;\n } else if (seenIds.has(item.id)) {\n duplicateIds.add(item.id);\n } else {\n seenIds.add(item.id);\n sanitizedFiles.push(item);\n }\n }\n }\n if (nonObjectFileCount) {\n errorMessages.push(\"Detected \" + nonObjectFileCount + \" file(s) of invalid type. Remember \" + \"that \\\"files\\\" array should contain either objects or nulls.\");\n }\n if (missingFieldFileCount) {\n errorMessages.push(\"Detected \" + missingFieldFileCount + \" file(s) that are missing the \" + \"required fields. Remember that file object should define an \" + \"\\\"id\\\" and a \\\"name\\\".\");\n }\n if (duplicateIds.size > 0) {\n var repeatedIdsString = '\"' + Array.from(duplicateIds).join('\", \"') + '\"';\n errorMessages.push(\"Detected \" + duplicateIds.size + \" file IDs that are used multiple \" + \"times. Remember that each file should have a unique IDs. The \" + (\"following IDs were seen multiple times: \" + repeatedIdsString));\n }\n }\n if (errorMessages.length > 0) {\n var errorMessageString = '\\n- ' + errorMessages.join('\\n- ');\n var arrayString;\n var itemString;\n if (mode === 'folderChain') {\n arrayString = 'folder chain';\n itemString = 'files';\n } else if (mode === 'fileActions') {\n arrayString = 'file actions';\n itemString = 'file actions';\n } else {\n // mode === 'files'\n arrayString = 'files';\n itemString = 'files';\n }\n Logger.error(\"Errors were detected when sanitizing the \" + arrayString + \" array. \" + (\"Offending \" + itemString + \" were removed from the array. Summary of \") + (\"validation errors: \" + errorMessageString));\n }\n return {\n sanitizedArray: sanitizedFiles,\n errorMessages: errorMessages\n };\n};\n\n/**\r\n * We have option IDs in a separate file to avoid circular deps...\r\n */\nvar OptionIds = {\n ShowHiddenFiles: 'show_hidden_files',\n ShowFoldersFirst: 'show_folders_first',\n DarkMode: 'dark_mode'\n};\nvar SortOrder;\n(function (SortOrder) {\n SortOrder[\"ASC\"] = \"asc\";\n SortOrder[\"DESC\"] = \"desc\";\n})(SortOrder || (SortOrder = {}));\nvar selectInstanceId = function selectInstanceId(state) {\n return state.instanceId;\n};\nvar selectExternalFileActionHandler = function selectExternalFileActionHandler(state) {\n return state.externalFileActionHandler;\n};\nvar selectFileActionMap = function selectFileActionMap(state) {\n return state.fileActionMap;\n};\nvar selectFileActionIds = function selectFileActionIds(state) {\n return state.fileActionIds;\n};\nvar selectFileActionData = function selectFileActionData(fileActionId) {\n return function (state) {\n return selectFileActionMap(state)[fileActionId];\n };\n};\nvar selectToolbarItems = function selectToolbarItems(state) {\n return state.toolbarItems;\n};\nvar selectContextMenuItems = function selectContextMenuItems(state) {\n return state.contextMenuItems;\n};\nvar selectFolderChain = function selectFolderChain(state) {\n return state.folderChain;\n};\nvar selectCurrentFolder = function selectCurrentFolder(state) {\n var folderChain = selectFolderChain(state);\n var currentFolder = folderChain.length > 0 ? folderChain[folderChain.length - 1] : null;\n return currentFolder;\n};\nvar selectParentFolder = function selectParentFolder(state) {\n var folderChain = selectFolderChain(state);\n var parentFolder = folderChain.length > 1 ? folderChain[folderChain.length - 2] : null;\n return parentFolder;\n};\nvar selectRawFiles = function selectRawFiles(state) {\n return state.rawFiles;\n};\nvar selectFileMap = function selectFileMap(state) {\n return state.fileMap;\n};\nvar selectCleanFileIds = function selectCleanFileIds(state) {\n return state.cleanFileIds;\n};\nvar selectFileData = function selectFileData(fileId) {\n return function (state) {\n return fileId ? selectFileMap(state)[fileId] : null;\n };\n};\nvar selectHiddenFileIdMap = function selectHiddenFileIdMap(state) {\n return state.hiddenFileIdMap;\n};\nvar selectHiddenFileCount = function selectHiddenFileCount(state) {\n return Object.keys(selectHiddenFileIdMap(state)).length;\n};\nvar selectFocusSearchInput = function selectFocusSearchInput(state) {\n return state.focusSearchInput;\n};\nvar selectSearchString = function selectSearchString(state) {\n return state.searchString;\n};\nvar selectSelectionMap = function selectSelectionMap(state) {\n return state.selectionMap;\n};\nvar selectSelectedFileIds = function selectSelectedFileIds(state) {\n return Object.keys(selectSelectionMap(state));\n};\nvar selectSelectionSize = function selectSelectionSize(state) {\n return selectSelectedFileIds(state).length;\n};\nvar selectIsFileSelected = function selectIsFileSelected(fileId) {\n return function (state) {\n return !!fileId && !!selectSelectionMap(state)[fileId];\n };\n};\nvar selectSelectedFiles = function selectSelectedFiles(state) {\n var fileMap = selectFileMap(state);\n return Object.keys(selectSelectionMap(state)).map(function (id) {\n return fileMap[id];\n });\n};\nvar selectSelectedFilesForAction = function selectSelectedFilesForAction(fileActionId) {\n return function (state) {\n var fileActionMap = state.fileActionMap;\n var action = fileActionMap[fileActionId];\n if (!action || !action.requiresSelection) return undefined;\n return getSelectedFiles(state, action.fileFilter);\n };\n};\nvar selectSelectedFilesForActionCount = function selectSelectedFilesForActionCount(fileActionId) {\n return function (state) {\n var _getSelectedFilesForA;\n return (_getSelectedFilesForA = getSelectedFilesForAction(state, fileActionId)) == null ? void 0 : _getSelectedFilesForA.length;\n };\n};\nvar selectDisableSelection = function selectDisableSelection(state) {\n return state.disableSelection;\n};\nvar selectFileViewConfig = function selectFileViewConfig(state) {\n return state.fileViewConfig;\n};\nvar selectSortActionId = function selectSortActionId(state) {\n return state.sortActionId;\n};\nvar selectSortOrder = function selectSortOrder(state) {\n return state.sortOrder;\n};\nvar selectOptionMap = function selectOptionMap(state) {\n return state.optionMap;\n};\nvar selectOptionValue = function selectOptionValue(optionId) {\n return function (state) {\n return selectOptionMap(state)[optionId];\n };\n};\nvar selectThumbnailGenerator = function selectThumbnailGenerator(state) {\n return state.thumbnailGenerator;\n};\nvar selectDoubleClickDelay = function selectDoubleClickDelay(state) {\n return state.doubleClickDelay;\n};\nvar selectIsDnDDisabled = function selectIsDnDDisabled(state) {\n return state.disableDragAndDrop;\n};\nvar selectClearSelectionOnOutsideClick = function selectClearSelectionOnOutsideClick(state) {\n return state.clearSelectionOnOutsideClick;\n};\nvar selectContextMenuMounted = function selectContextMenuMounted(state) {\n return state.contextMenuMounted;\n};\nvar selectContextMenuConfig = function selectContextMenuConfig(state) {\n return state.contextMenuConfig;\n};\nvar selectContextMenuTriggerFile = function selectContextMenuTriggerFile(state) {\n var _fileMap$config$trigg;\n var config = selectContextMenuConfig(state);\n if (!config || !config.triggerFileId) return null;\n var fileMap = selectFileMap(state);\n return (_fileMap$config$trigg = fileMap[config.triggerFileId]) != null ? _fileMap$config$trigg : null;\n}; // Raw selectors\n\nvar getFileActionMap = function getFileActionMap(state) {\n return state.fileActionMap;\n};\nvar getOptionMap = function getOptionMap(state) {\n return state.optionMap;\n};\nvar getFileMap = function getFileMap(state) {\n return state.fileMap;\n};\nvar getFileIds = function getFileIds(state) {\n return state.fileIds;\n};\nvar getCleanFileIds = function getCleanFileIds(state) {\n return state.cleanFileIds;\n};\nvar getSortActionId = function getSortActionId(state) {\n return state.sortActionId;\n};\nvar getSortOrder = function getSortOrder(state) {\n return state.sortOrder;\n};\nvar getSearchString = function getSearchString(state) {\n return state.searchString;\n};\nvar _getLastClick = function _getLastClick(state) {\n return state.lastClick;\n}; // Memoized selectors\n\nvar makeGetAction = function makeGetAction(fileActionSelector) {\n return createSelector([getFileActionMap, fileActionSelector], function (fileActionMap, fileActionId) {\n return fileActionId && fileActionMap[fileActionId] ? fileActionMap[fileActionId] : null;\n });\n};\nvar makeGetOptionValue = function makeGetOptionValue(optionId, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = undefined;\n }\n return createSelector([getOptionMap], function (optionMap) {\n var value = optionMap[optionId];\n if (value === undefined) {\n return defaultValue;\n }\n return value;\n });\n};\nvar makeGetFiles = function makeGetFiles(fileIdsSelector) {\n return createSelector([getFileMap, fileIdsSelector], function (fileMap, fileIds) {\n return fileIds.map(function (fileId) {\n return fileId && fileMap[fileId] ? fileMap[fileId] : null;\n });\n });\n};\nvar getSortedFileIds = /*#__PURE__*/createSelector([getFileIds, getSortOrder, /*#__PURE__*/makeGetFiles(getFileIds), /*#__PURE__*/makeGetAction(getSortActionId), /*#__PURE__*/makeGetOptionValue(OptionIds.ShowFoldersFirst, false)], function (fileIds, sortOrder, files, sortAction, showFolderFirst) {\n if (!sortAction) {\n // We allow users to set the sort action ID to `null` if they want to use their\n // own sorting mechanisms instead of relying on Chonky built-in sort.\n return fileIds;\n }\n var prepareSortKeySelector = function prepareSortKeySelector(selector) {\n return function (file) {\n return selector(file);\n };\n };\n var sortFunctions = [];\n if (showFolderFirst) {\n // If option is undefined (relevant actions is not enabled), we don't show\n // folders first.\n sortFunctions.push({\n desc: prepareSortKeySelector(FileHelper.isDirectory)\n });\n }\n if (sortAction.sortKeySelector) {\n var _sortFunctions$push;\n var configKeyName = sortOrder === SortOrder.ASC ? 'asc' : 'desc';\n sortFunctions.push((_sortFunctions$push = {}, _sortFunctions$push[configKeyName] = prepareSortKeySelector(sortAction.sortKeySelector), _sortFunctions$push));\n }\n if (sortFunctions.length === 0) return fileIds; // We copy the array because `fast-sort` mutates it\n\n var sortedFileIds = sort([].concat(files)).by(sortFunctions).map(function (file) {\n return file ? file.id : null;\n });\n return sortedFileIds;\n});\nvar getSearcher = /*#__PURE__*/createSelector([/*#__PURE__*/makeGetFiles(getCleanFileIds)], function (cleanFiles) {\n return new FuzzySearch(cleanFiles, ['name'], {\n caseSensitive: false\n });\n});\nvar getSearchFilteredFileIds = /*#__PURE__*/createSelector([getCleanFileIds, getSearchString, getSearcher], function (cleanFileIds, searchString, searcher) {\n return searchString ? searcher.search(searchString).map(function (f) {\n return f.id;\n }) : cleanFileIds;\n});\nvar getHiddenFileIdMap = /*#__PURE__*/createSelector([getSearchFilteredFileIds, /*#__PURE__*/makeGetFiles(getCleanFileIds), /*#__PURE__*/makeGetOptionValue(OptionIds.ShowHiddenFiles)], function (searchFilteredFileIds, cleanFiles, showHiddenFiles) {\n var searchFilteredFileIdsSet = new Set(searchFilteredFileIds);\n var hiddenFileIdMap = {};\n cleanFiles.forEach(function (file) {\n if (!file) return;else if (!searchFilteredFileIdsSet.has(file.id)) {\n // Hidden by seach\n hiddenFileIdMap[file.id] = true;\n } else if (!showHiddenFiles && FileHelper.isHidden(file)) {\n // Hidden by options\n hiddenFileIdMap[file.id] = true;\n }\n });\n return hiddenFileIdMap;\n});\nvar getDisplayFileIds = /*#__PURE__*/createSelector([getSortedFileIds, getHiddenFileIdMap], /** Returns files that will actually be shown to the user. */\nfunction (sortedFileIds, hiddenFileIdMap) {\n return sortedFileIds.filter(function (id) {\n return !id || !hiddenFileIdMap[id];\n });\n});\nvar getLastClickIndex = /*#__PURE__*/createSelector([_getLastClick, getSortedFileIds], /** Returns the last click index after ensuring it is actually still valid. */\nfunction (lastClick, displayFileIds) {\n if (!lastClick || lastClick.index > displayFileIds.length - 1 || lastClick.fileId != displayFileIds[lastClick.index]) {\n return null;\n }\n return lastClick.index;\n});\nvar selectors = {\n // Raw selectors\n getFileActionMap: getFileActionMap,\n getOptionMap: getOptionMap,\n getFileMap: getFileMap,\n getFileIds: getFileIds,\n getCleanFileIds: getCleanFileIds,\n getSortActionId: getSortActionId,\n getSortOrder: getSortOrder,\n getSearchString: getSearchString,\n _getLastClick: _getLastClick,\n // Memoized selectors\n getSortedFileIds: getSortedFileIds,\n getSearcher: getSearcher,\n getSearchFilteredFileIds: getSearchFilteredFileIds,\n getHiddenFileIdMap: getHiddenFileIdMap,\n getDisplayFileIds: getDisplayFileIds,\n getLastClickIndex: getLastClickIndex,\n // Parametrized selectors\n makeGetAction: makeGetAction,\n makeGetOptionValue: makeGetOptionValue,\n makeGetFiles: makeGetFiles\n}; // Selectors meant to be used outside of Redux code\n\nvar getFileData = function getFileData(state, fileId) {\n return fileId ? selectFileMap(state)[fileId] : null;\n};\nvar getIsFileSelected = function getIsFileSelected(state, file) {\n // !!! We deliberately don't use `FileHelper.isSelectable` here as we want to\n // reflect the state of Redux store accurately.\n return !!selectSelectionMap(state)[file.id];\n};\nvar getSelectedFiles = function getSelectedFiles(state) {\n var fileMap = state.fileMap,\n selectionMap = state.selectionMap;\n var selectedFiles = Object.keys(selectionMap).map(function (id) {\n return fileMap[id];\n });\n for (var _len = arguments.length, filters = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n filters[_key - 1] = arguments[_key];\n }\n var filteredSelectedFiles = filters.reduce(function (prevFiles, filter) {\n return filter ? prevFiles.filter(filter) : prevFiles;\n }, selectedFiles);\n return filteredSelectedFiles;\n};\nvar getSelectedFilesForAction = function getSelectedFilesForAction(state, fileActionId) {\n return selectSelectedFilesForAction(fileActionId)(state);\n};\n\n/**\r\n * Merges multiple file action arrays into one while removing duplicates\r\n */\n\nvar mergeFileActionsArrays = function mergeFileActionsArrays() {\n var _Array;\n var seenActionIds = new Set();\n var addToSeen = function addToSeen(a) {\n return !!seenActionIds.add(a.id);\n };\n var wasNotSeen = function wasNotSeen(a) {\n return !seenActionIds.has(a.id);\n };\n for (var _len = arguments.length, fileActionArrays = new Array(_len), _key = 0; _key < _len; _key++) {\n fileActionArrays[_key] = arguments[_key];\n }\n var duplicateFreeArrays = fileActionArrays.map(function (arr) {\n var duplicateFreeArray = arr.filter(wasNotSeen);\n duplicateFreeArray.map(addToSeen);\n return duplicateFreeArray;\n });\n return (_Array = new Array()).concat.apply(_Array, duplicateFreeArrays);\n};\nvar thunkUpdateRawFileActions = function thunkUpdateRawFileActions(rawFileActions, disableDefaultFileActions) {\n return function (dispatch) {\n var _sanitizeInputArray = sanitizeInputArray('fileActions', rawFileActions),\n sanitizedArray = _sanitizeInputArray.sanitizedArray,\n errorMessages = _sanitizeInputArray.errorMessages; // Add default actions unless user disabled them\n\n var defaultActionsToAdd;\n if (Array.isArray(disableDefaultFileActions)) {\n var disabledActionIds = new Set(disableDefaultFileActions);\n defaultActionsToAdd = DefaultFileActions.filter(function (action) {\n return !disabledActionIds.has(action.id);\n });\n } else if (disableDefaultFileActions) {\n defaultActionsToAdd = [];\n } else {\n defaultActionsToAdd = DefaultFileActions;\n }\n var fileActions = mergeFileActionsArrays(sanitizedArray, EssentialFileActions, defaultActionsToAdd);\n var optionDefaults = {};\n fileActions.map(function (a) {\n return a.option ? optionDefaults[a.option.id] = a.option.defaultValue : null;\n });\n dispatch(reduxActions.setRawFileActions(rawFileActions));\n dispatch(reduxActions.setFileActionsErrorMessages(errorMessages));\n dispatch(reduxActions.setFileActions(fileActions));\n dispatch(reduxActions.setOptionDefaults(optionDefaults));\n dispatch(thunkUpdateToolbarNContextMenuItems(fileActions));\n };\n};\nvar thunkUpdateToolbarNContextMenuItems = function thunkUpdateToolbarNContextMenuItems(fileActions) {\n return function (dispatch) {\n var excludedToolbarFileActionIds = new Set([\n // TODO: Move decision to exclude actions somewhere else, as users' custom\n // components might not give these actions special treatment like Chonky does.\n ChonkyActions.OpenParentFolder.id]);\n var toolbarItems = [];\n var seenToolbarGroups = {};\n var contextMenuItems = [];\n var seenContextMenuGroups = {};\n var getGroup = function getGroup(itemArray, seenMap, groupName) {\n if (seenMap[groupName]) return seenMap[groupName];\n var group = {\n name: groupName,\n fileActionIds: []\n };\n itemArray.push(group);\n seenMap[groupName] = group;\n return group;\n };\n for (var _iterator = _createForOfIteratorHelperLoose(fileActions), _step; !(_step = _iterator()).done;) {\n var action = _step.value;\n var button = action.button;\n if (!button) continue;\n if (button.toolbar && !excludedToolbarFileActionIds.has(action.id)) {\n if (button.group) {\n var group = getGroup(toolbarItems, seenToolbarGroups, button.group);\n group.fileActionIds.push(action.id);\n } else {\n toolbarItems.push(action.id);\n }\n }\n if (button.contextMenu) {\n if (button.group) {\n var _group = getGroup(contextMenuItems, seenContextMenuGroups, button.group);\n _group.fileActionIds.push(action.id);\n } else {\n contextMenuItems.push(action.id);\n }\n }\n }\n dispatch(reduxActions.updateFileActionMenuItems([toolbarItems, contextMenuItems]));\n };\n};\nvar thunkUpdateDefaultFileViewActionId = function thunkUpdateDefaultFileViewActionId(fileActionId) {\n return function (dispatch, getState) {\n var _getState = getState(),\n fileActionMap = _getState.fileActionMap;\n var action = fileActionId ? fileActionMap[fileActionId] : null;\n if (action && action.fileViewConfig) {\n dispatch(reduxActions.setFileViewConfig(action.fileViewConfig));\n }\n };\n};\nvar thunkActivateSortAction = function thunkActivateSortAction(fileActionId) {\n return function (dispatch, getState) {\n if (!fileActionId) return;\n var _getState2 = getState(),\n oldActionId = _getState2.sortActionId,\n oldOrder = _getState2.sortOrder,\n fileActionMap = _getState2.fileActionMap;\n var action = fileActionMap[fileActionId];\n if (!action || !action.sortKeySelector) return;\n var order = oldOrder === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC;\n if (oldActionId !== fileActionId) {\n order = SortOrder.ASC;\n }\n dispatch(reduxActions.setSort({\n actionId: fileActionId,\n order: order\n }));\n };\n};\nvar thunkApplySelectionTransform = function thunkApplySelectionTransform(action) {\n return function (dispatch, getState) {\n var selectionTransform = action.selectionTransform;\n if (!selectionTransform) return;\n var state = getState();\n var prevSelection = new Set(Object.keys(selectSelectionMap(state)));\n var hiddenFileIds = new Set(Object.keys(selectHiddenFileIdMap(state)));\n var newSelection = selectionTransform({\n prevSelection: prevSelection,\n fileIds: selectCleanFileIds(state),\n fileMap: selectFileMap(state),\n hiddenFileIds: hiddenFileIds\n });\n if (!newSelection) return;\n if (newSelection.size === 0) {\n dispatch(reduxActions.clearSelection());\n } else {\n dispatch(reduxActions.selectFiles({\n fileIds: Array.from(newSelection),\n reset: true\n }));\n }\n };\n};\n\n/**\r\n * Thunk that dispatches actions to the external (user-provided) action handler.\r\n */\n\nvar thunkDispatchFileAction = function thunkDispatchFileAction(data) {\n return function (_dispatch, getState) {\n Logger.debug(\"FILE ACTION DISPATCH: [\" + data.id + \"]\", 'data:', data);\n var state = getState();\n var action = selectFileActionMap(state)[data.id];\n var externalFileActionHandler = selectExternalFileActionHandler(state);\n if (action) {\n if (externalFileActionHandler) {\n Promise.resolve(externalFileActionHandler(data))[\"catch\"](function (error) {\n return Logger.error(\"User-defined file action handler threw an error: \" + error.message);\n });\n }\n } else {\n Logger.warn(\"Internal components dispatched the \\\"\" + data.id + \"\\\" file action, but such \" + \"action was not registered.\");\n }\n };\n};\n/**\r\n * Thunk that is used by internal components (and potentially the user) to \"request\"\r\n * actions. When action is requested, Chonky \"prepares\" the action data by extracting it\r\n * from Redux state. Once action data is ready, Chonky executes some side effect and/or\r\n * dispatches the action to the external action handler.\r\n */\n\nvar thunkRequestFileAction = function thunkRequestFileAction(action, payload) {\n return function (dispatch, getState) {\n Logger.debug(\"FILE ACTION REQUEST: [\" + action.id + \"]\", 'action:', action, 'payload:', payload);\n var state = getState();\n var instanceId = selectInstanceId(state);\n if (!selectFileActionMap(state)[action.id]) {\n Logger.warn(\"The action \\\"\" + action.id + \"\\\" was requested, but it is not registered. The \" + \"action will still be dispatched, but this might indicate a bug in \" + \"the code. Please register your actions by passing them to \" + \"\\\"fileActions\\\" prop.\");\n } // Determine files for the action if action requires selection\n\n var selectedFiles = selectSelectedFiles(state);\n var selectedFilesForAction = action.fileFilter ? selectedFiles.filter(action.fileFilter) : selectedFiles;\n if (action.requiresSelection && selectedFilesForAction.length === 0) {\n Logger.warn(\"Internal components requested the \\\"\" + action.id + \"\\\" file \" + \"action, but the selection for this action was empty. This \" + \"might a bug in the code of the presentational components.\");\n return;\n }\n var contextMenuTriggerFile = selectContextMenuTriggerFile(state);\n var actionState = {\n instanceId: instanceId,\n selectedFiles: selectedFiles,\n selectedFilesForAction: selectedFilesForAction,\n contextMenuTriggerFile: contextMenuTriggerFile\n }; // === Update sort state if necessary\n\n var sortKeySelector = action.sortKeySelector;\n if (sortKeySelector) dispatch(thunkActivateSortAction(action.id)); // === Update file view state if necessary\n\n var fileViewConfig = action.fileViewConfig;\n if (fileViewConfig) dispatch(reduxActions.setFileViewConfig(fileViewConfig)); // === Update option state if necessary\n\n var option = action.option;\n if (option) dispatch(reduxActions.toggleOption(option.id)); // === Apply selection transform if necessary\n\n var selectionTransform = action.selectionTransform;\n if (selectionTransform) dispatch(thunkApplySelectionTransform(action)); // Apply the effect\n\n var effect = action.effect;\n var maybeEffectPromise = undefined;\n if (effect) {\n try {\n maybeEffectPromise = effect({\n action: action,\n payload: payload,\n state: actionState,\n reduxDispatch: dispatch,\n getReduxState: getState\n });\n } catch (error) {\n Logger.error(\"User-defined effect function for action \" + action.id + \" threw an \" + (\"error: \" + error.message));\n }\n } // Dispatch the action to user code. Deliberately call it after all other\n // operations are over.\n\n return Promise.resolve(maybeEffectPromise).then(function (effectResult) {\n var data = {\n id: action.id,\n action: action,\n payload: payload,\n state: actionState\n };\n triggerDispatchAfterEffect(dispatch, data, effectResult);\n })[\"catch\"](function (error) {\n Logger.error(\"User-defined effect function for action \" + action.id + \" returned a \" + (\"promise that was rejected: \" + error.message));\n var data = {\n id: action.id,\n action: action,\n payload: payload,\n state: actionState\n };\n triggerDispatchAfterEffect(dispatch, data, undefined);\n });\n };\n};\nvar triggerDispatchAfterEffect = function triggerDispatchAfterEffect(dispatch, data, effectResult) {\n var preventDispatch = effectResult === true;\n if (!preventDispatch) dispatch(thunkDispatchFileAction(data));\n};\nvar FileViewMode;\n(function (FileViewMode) {\n FileViewMode[\"List\"] = \"list\";\n FileViewMode[\"Compact\"] = \"compact\";\n FileViewMode[\"Grid\"] = \"grid\";\n})(FileViewMode || (FileViewMode = {}));\nvar ChonkyIconName;\n(function (ChonkyIconName) {\n // Misc\n ChonkyIconName[\"loading\"] = \"loading\";\n ChonkyIconName[\"dropdown\"] = \"dropdown\";\n ChonkyIconName[\"placeholder\"] = \"placeholder\"; // File Actions: Drag & drop\n\n ChonkyIconName[\"dndDragging\"] = \"dndDragging\";\n ChonkyIconName[\"dndCanDrop\"] = \"dndCanDrop\";\n ChonkyIconName[\"dndCannotDrop\"] = \"dndCannotDrop\"; // File Actions: File operations\n\n ChonkyIconName[\"openFiles\"] = \"openFiles\";\n ChonkyIconName[\"openParentFolder\"] = \"openParentFolder\";\n ChonkyIconName[\"copy\"] = \"copy\";\n ChonkyIconName[\"paste\"] = \"paste\";\n ChonkyIconName[\"share\"] = \"share\";\n ChonkyIconName[\"search\"] = \"search\";\n ChonkyIconName[\"selectAllFiles\"] = \"selectAllFiles\";\n ChonkyIconName[\"clearSelection\"] = \"clearSelection\"; // File Actions: Sorting & options\n\n ChonkyIconName[\"sortAsc\"] = \"sortAsc\";\n ChonkyIconName[\"sortDesc\"] = \"sortDesc\";\n ChonkyIconName[\"toggleOn\"] = \"toggleOn\";\n ChonkyIconName[\"toggleOff\"] = \"toggleOff\"; // File Actions: File Views\n\n ChonkyIconName[\"list\"] = \"list\";\n ChonkyIconName[\"compact\"] = \"compact\";\n ChonkyIconName[\"smallThumbnail\"] = \"smallThumbnail\";\n ChonkyIconName[\"largeThumbnail\"] = \"largeThumbnail\"; // File Actions: Unsorted\n\n ChonkyIconName[\"folder\"] = \"folder\";\n ChonkyIconName[\"folderCreate\"] = \"folderCreate\";\n ChonkyIconName[\"folderOpen\"] = \"folderOpen\";\n ChonkyIconName[\"folderChainSeparator\"] = \"folderChainSeparator\";\n ChonkyIconName[\"download\"] = \"download\";\n ChonkyIconName[\"upload\"] = \"upload\";\n ChonkyIconName[\"trash\"] = \"trash\";\n ChonkyIconName[\"fallbackIcon\"] = \"fallbackIcon\"; // File modifiers\n\n ChonkyIconName[\"symlink\"] = \"symlink\";\n ChonkyIconName[\"hidden\"] = \"hidden\"; // Generic file types\n\n ChonkyIconName[\"file\"] = \"file\";\n ChonkyIconName[\"license\"] = \"license\";\n ChonkyIconName[\"code\"] = \"code\";\n ChonkyIconName[\"config\"] = \"config\";\n ChonkyIconName[\"model\"] = \"model\";\n ChonkyIconName[\"database\"] = \"database\";\n ChonkyIconName[\"text\"] = \"text\";\n ChonkyIconName[\"archive\"] = \"archive\";\n ChonkyIconName[\"image\"] = \"image\";\n ChonkyIconName[\"video\"] = \"video\";\n ChonkyIconName[\"info\"] = \"info\";\n ChonkyIconName[\"key\"] = \"key\";\n ChonkyIconName[\"lock\"] = \"lock\";\n ChonkyIconName[\"music\"] = \"music\";\n ChonkyIconName[\"terminal\"] = \"terminal\";\n ChonkyIconName[\"users\"] = \"users\"; // OS file types\n\n ChonkyIconName[\"linux\"] = \"linux\";\n ChonkyIconName[\"ubuntu\"] = \"ubuntu\";\n ChonkyIconName[\"windows\"] = \"windows\"; // Programming language file types\n\n ChonkyIconName[\"rust\"] = \"rust\";\n ChonkyIconName[\"python\"] = \"python\";\n ChonkyIconName[\"nodejs\"] = \"nodejs\";\n ChonkyIconName[\"php\"] = \"php\"; // Development tools file types\n\n ChonkyIconName[\"git\"] = \"git\"; // Brands file types\n\n ChonkyIconName[\"adobe\"] = \"adobe\"; // Other program file types\n\n ChonkyIconName[\"pdf\"] = \"pdf\";\n ChonkyIconName[\"excel\"] = \"excel\";\n ChonkyIconName[\"word\"] = \"word\";\n ChonkyIconName[\"flash\"] = \"flash\";\n})(ChonkyIconName || (ChonkyIconName = {}));\nvar defineFileAction = function defineFileAction(action, effect) {\n if (action.__payloadType !== undefined && (action.hotkeys || action.button)) {\n var errorMessage = \"Invalid definition was provided for file action \\\"\" + action.id + \"\\\". Actions \" + \"that specify hotkeys or buttons cannot define a payload type. If \" + \"your application requires this functionality, define two actions \" + \"and chain them using effects.\";\n Logger.error(errorMessage);\n throw new Error(errorMessage);\n }\n action.effect = effect;\n return action;\n};\n/**\r\n * Recursively check the current element and the parent elements, going bottom-up.\r\n * Returns the first element to match the predicate, otherwise returns null if such\r\n * element is not found.\r\n */\n\nvar findElementAmongAncestors = function findElementAmongAncestors(maybeElement, predicate) {\n if (!maybeElement) return maybeElement;\n if (predicate(maybeElement)) return maybeElement;\n if (maybeElement.parentElement) {\n return findElementAmongAncestors(maybeElement.parentElement, predicate);\n }\n return null;\n};\nvar elementIsInsideButton = function elementIsInsideButton(buttonCandidate) {\n return !!findElementAmongAncestors(buttonCandidate, function (element) {\n return element.tagName && element.tagName.toLowerCase() === 'button';\n });\n};\nvar getValueOrFallback = function getValueOrFallback(value, fallback, desiredType) {\n if (desiredType) {\n return typeof value === desiredType ? value : fallback;\n }\n return value !== undefined ? value : fallback;\n};\nvar reduxThunks = {\n selectRange: function selectRange(params) {\n return function (dispatch, getState) {\n var state = getState();\n if (state.disableSelection) return;\n var displayFileIds = selectors.getDisplayFileIds(state);\n var fileIdsToSelect = displayFileIds.slice(params.rangeStart, params.rangeEnd + 1).filter(function (id) {\n return id && FileHelper.isSelectable(state.fileMap[id]);\n });\n dispatch(reduxActions.selectFiles({\n fileIds: fileIdsToSelect,\n reset: !!params.reset\n }));\n };\n }\n};\nvar EssentialActions = {\n /**\r\n * Action that is dispatched when the user clicks on a file entry using their mouse.\r\n * Both single clicks and double clicks trigger this action.\r\n */\n MouseClickFile: /*#__PURE__*/defineFileAction({\n id: 'mouse_click_file',\n __payloadType: {}\n }, function (_ref) {\n var payload = _ref.payload,\n reduxDispatch = _ref.reduxDispatch,\n getReduxState = _ref.getReduxState;\n if (payload.clickType === 'double') {\n if (FileHelper.isOpenable(payload.file)) {\n reduxDispatch(thunkRequestFileAction(ChonkyActions.OpenFiles, {\n targetFile: payload.file,\n // To simulate Windows Explorer and Nautilus behaviour,\n // a double click on a file only opens that file even if\n // there is a selection.\n files: [payload.file]\n }));\n }\n } else {\n // We're dealing with a single click\n var disableSelection = selectDisableSelection(getReduxState());\n if (FileHelper.isSelectable(payload.file) && !disableSelection) {\n if (payload.ctrlKey) {\n // Multiple selection\n reduxDispatch(reduxActions.toggleSelection({\n fileId: payload.file.id,\n exclusive: false\n }));\n reduxDispatch(reduxActions.setLastClickIndex({\n index: payload.fileDisplayIndex,\n fileId: payload.file.id\n }));\n } else if (payload.shiftKey) {\n // Range selection\n var lastClickIndex = selectors.getLastClickIndex(getReduxState());\n if (typeof lastClickIndex === 'number') {\n // We have the index of the previous click\n var rangeStart = lastClickIndex;\n var rangeEnd = payload.fileDisplayIndex;\n if (rangeStart > rangeEnd) {\n var _ref2 = [rangeEnd, rangeStart];\n rangeStart = _ref2[0];\n rangeEnd = _ref2[1];\n }\n reduxDispatch(reduxThunks.selectRange({\n rangeStart: rangeStart,\n rangeEnd: rangeEnd\n }));\n } else {\n // Since we can't do a range selection, do a\n // multiple selection\n reduxDispatch(reduxActions.toggleSelection({\n fileId: payload.file.id,\n exclusive: false\n }));\n reduxDispatch(reduxActions.setLastClickIndex({\n index: payload.fileDisplayIndex,\n fileId: payload.file.id\n }));\n }\n } else {\n // Exclusive selection\n reduxDispatch(reduxActions.toggleSelection({\n fileId: payload.file.id,\n exclusive: true\n }));\n reduxDispatch(reduxActions.setLastClickIndex({\n index: payload.fileDisplayIndex,\n fileId: payload.file.id\n }));\n }\n } else {\n if (!payload.ctrlKey && !disableSelection) {\n reduxDispatch(reduxActions.clearSelection());\n }\n reduxDispatch(reduxActions.setLastClickIndex({\n index: payload.fileDisplayIndex,\n fileId: payload.file.id\n }));\n }\n }\n }),\n /**\r\n * Action that is dispatched when the user \"clicks\" on a file using their keyboard.\r\n * Using Space and Enter keys counts as clicking.\r\n */\n KeyboardClickFile: /*#__PURE__*/defineFileAction({\n id: 'keyboard_click_file',\n __payloadType: {}\n }, function (_ref3) {\n var payload = _ref3.payload,\n reduxDispatch = _ref3.reduxDispatch,\n getReduxState = _ref3.getReduxState;\n reduxDispatch(reduxActions.setLastClickIndex({\n index: payload.fileDisplayIndex,\n fileId: payload.file.id\n }));\n if (payload.enterKey) {\n // We only dispatch the Open Files action here when the selection is\n // empty. Otherwise, `Enter` key presses are handled by the\n // hotkey manager for the Open Files action.\n if (selectSelectionSize(getReduxState()) === 0) {\n reduxDispatch(thunkRequestFileAction(ChonkyActions.OpenFiles, {\n targetFile: payload.file,\n files: [payload.file]\n }));\n }\n } else if (payload.spaceKey && FileHelper.isSelectable(payload.file)) {\n reduxDispatch(reduxActions.toggleSelection({\n fileId: payload.file.id,\n exclusive: payload.ctrlKey\n }));\n }\n }),\n /**\r\n * Action that is dispatched when user starts dragging some file.\r\n */\n StartDragNDrop: /*#__PURE__*/defineFileAction({\n id: 'start_drag_n_drop',\n __payloadType: {}\n }, function (_ref4) {\n var payload = _ref4.payload,\n reduxDispatch = _ref4.reduxDispatch,\n getReduxState = _ref4.getReduxState;\n var file = payload.draggedFile;\n if (!getIsFileSelected(getReduxState(), file)) {\n if (FileHelper.isSelectable(file)) {\n reduxDispatch(reduxActions.selectFiles({\n fileIds: [file.id],\n reset: true\n }));\n }\n }\n }),\n /**\r\n * Action that is dispatched when user either cancels the drag & drop interaction,\r\n * or drops a file somewhere.\r\n */\n EndDragNDrop: /*#__PURE__*/defineFileAction({\n id: 'end_drag_n_drop',\n __payloadType: {}\n }, function (_ref5) {\n var payload = _ref5.payload,\n reduxDispatch = _ref5.reduxDispatch,\n getReduxState = _ref5.getReduxState;\n if (getIsFileSelected(getReduxState(), payload.destination)) {\n // Can't drop a selection into itself\n return;\n }\n var draggedFile = payload.draggedFile,\n selectedFiles = payload.selectedFiles;\n var droppedFiles = selectedFiles.length > 0 ? selectedFiles : [draggedFile];\n reduxDispatch(thunkRequestFileAction(ChonkyActions.MoveFiles, _extends({}, payload, {\n files: droppedFiles\n })));\n }),\n /**\r\n * Action that is dispatched when user moves files from one folder to another,\r\n * usually by dragging & dropping some files into the folder.\r\n */\n MoveFiles: /*#__PURE__*/defineFileAction({\n id: 'move_files',\n __payloadType: {}\n }),\n /**\r\n * Action that is dispatched when the selection changes for any reason.\r\n */\n ChangeSelection: /*#__PURE__*/defineFileAction({\n id: 'change_selection',\n __payloadType: {}\n }),\n /**\r\n * Action that is dispatched when user wants to open some files. This action is\r\n * often triggered by other actions.\r\n */\n OpenFiles: /*#__PURE__*/defineFileAction({\n id: 'open_files',\n __payloadType: {}\n }),\n /**\r\n * Action that is triggered when user wants to go up a directory.\r\n */\n OpenParentFolder: /*#__PURE__*/defineFileAction({\n id: 'open_parent_folder',\n hotkeys: ['backspace'],\n button: {\n name: 'Go up a directory',\n toolbar: true,\n contextMenu: false,\n icon: ChonkyIconName.openParentFolder,\n iconOnly: true\n }\n }, function (_ref6) {\n var reduxDispatch = _ref6.reduxDispatch,\n getReduxState = _ref6.getReduxState;\n var parentFolder = selectParentFolder(getReduxState());\n if (FileHelper.isOpenable(parentFolder)) {\n reduxDispatch(thunkRequestFileAction(ChonkyActions.OpenFiles, {\n targetFile: parentFolder,\n files: [parentFolder]\n }));\n } else {\n Logger.warn('Open parent folder effect was triggered even though the parent folder' + ' is not openable. This indicates a bug in presentation components.');\n }\n }),\n /**\r\n * Action that is dispatched when user opens the context menu, either by right click\r\n * on something or using the context menu button on their keyboard.\r\n */\n OpenFileContextMenu: /*#__PURE__*/defineFileAction({\n id: 'open_file_context_menu',\n __payloadType: {}\n }, function (_ref7) {\n var payload = _ref7.payload,\n reduxDispatch = _ref7.reduxDispatch,\n getReduxState = _ref7.getReduxState;\n // TODO: Check if the context menu component is actually enabled. There is a\n // chance it doesn't matter if it is enabled or not - if it is not mounted,\n // the action will simply have no effect. It also allows users to provide\n // their own components - however, users could also flip the \"context menu\n // component mounted\" switch...\n var triggerFile = getFileData(getReduxState(), payload.triggerFileId);\n if (triggerFile) {\n var fileSelected = getIsFileSelected(getReduxState(), triggerFile);\n if (!fileSelected) {\n // If file is selected, we leave the selection as is. If it is not\n // selected, it means user right clicked the file with no selection.\n // We simulate the Windows Explorer/Nautilus behaviour of moving\n // selection to this file.\n if (FileHelper.isSelectable(triggerFile)) {\n reduxDispatch(reduxActions.selectFiles({\n fileIds: [payload.triggerFileId],\n reset: true\n }));\n } else {\n reduxDispatch(reduxActions.clearSelection());\n }\n }\n }\n reduxDispatch(reduxActions.showContextMenu({\n triggerFileId: payload.triggerFileId,\n mouseX: payload.clientX - 2,\n mouseY: payload.clientY - 4\n }));\n })\n};\nvar DefaultActions = {\n /**\r\n * Action that can be used to open currently selected files.\r\n */\n OpenSelection: /*#__PURE__*/defineFileAction({\n id: 'open_selection',\n hotkeys: ['enter'],\n requiresSelection: true,\n fileFilter: FileHelper.isOpenable,\n button: {\n name: 'Open selection',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.openFiles\n }\n }, function (_ref) {\n var state = _ref.state,\n reduxDispatch = _ref.reduxDispatch;\n reduxDispatch(thunkRequestFileAction(EssentialActions.OpenFiles, {\n files: state.selectedFilesForAction\n }));\n return undefined;\n }),\n /**\r\n * Action that selects all files.\r\n */\n SelectAllFiles: /*#__PURE__*/defineFileAction({\n id: 'select_all_files',\n hotkeys: ['ctrl+a'],\n button: {\n name: 'Select all files',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.selectAllFiles\n },\n selectionTransform: function selectionTransform(_ref2) {\n var fileIds = _ref2.fileIds,\n hiddenFileIds = _ref2.hiddenFileIds;\n var newSelection = new Set();\n fileIds.map(function (fileId) {\n // We don't need to check if file is selectable because Chonky does\n // it own checks internally.\n if (!hiddenFileIds.has(fileId)) newSelection.add(fileId);\n });\n return newSelection;\n }\n }),\n /**\r\n * Action that clear the file selection.\r\n */\n ClearSelection: /*#__PURE__*/defineFileAction({\n id: 'clear_selection',\n hotkeys: ['escape'],\n button: {\n name: 'Clear selection',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.clearSelection\n },\n selectionTransform: function selectionTransform(_ref3) {\n var prevSelection = _ref3.prevSelection;\n if (prevSelection.size === 0) return null;\n return new Set();\n }\n }),\n /**\r\n * Action that enables List view.\r\n */\n EnableListView: /*#__PURE__*/defineFileAction({\n id: 'enable_list_view',\n fileViewConfig: {\n mode: FileViewMode.List,\n entryHeight: 30\n },\n button: {\n name: 'Switch to List view',\n toolbar: true,\n icon: ChonkyIconName.list,\n iconOnly: true\n }\n }),\n /**\r\n * Action that enables Compact view. Note that compact view is still\r\n * experimental and should not be used in production.\r\n */\n EnableCompactView: /*#__PURE__*/defineFileAction({\n // TODO: Don't enable until compact view is fully supported\n id: 'enable_compact_view',\n fileViewConfig: {\n mode: FileViewMode.Compact,\n entryHeight: 40,\n entryWidth: 220\n },\n button: {\n name: 'Switch to Compact view',\n toolbar: true,\n icon: ChonkyIconName.compact,\n iconOnly: true\n }\n }),\n /**\r\n * Action that enables Grid view.\r\n */\n EnableGridView: /*#__PURE__*/defineFileAction({\n id: 'enable_grid_view',\n fileViewConfig: {\n mode: FileViewMode.Grid,\n entryWidth: 165,\n entryHeight: 130\n },\n button: {\n name: 'Switch to Grid view',\n toolbar: true,\n icon: ChonkyIconName.smallThumbnail,\n iconOnly: true\n }\n }),\n /**\r\n * Action that sorts files by `file.name`.\r\n */\n SortFilesByName: /*#__PURE__*/defineFileAction({\n id: 'sort_files_by_name',\n sortKeySelector: function sortKeySelector(file) {\n return file ? file.name.toLowerCase() : undefined;\n },\n button: {\n name: 'Sort by name',\n toolbar: true,\n group: 'Options'\n }\n }),\n /**\r\n * Action that sorts files by `file.size`.\r\n */\n SortFilesBySize: /*#__PURE__*/defineFileAction({\n id: 'sort_files_by_size',\n sortKeySelector: function sortKeySelector(file) {\n return file ? file.size : undefined;\n },\n button: {\n name: 'Sort by size',\n toolbar: true,\n group: 'Options'\n }\n }),\n /**\r\n * Action that sorts files by `file.modDate`.\r\n */\n SortFilesByDate: /*#__PURE__*/defineFileAction({\n id: 'sort_files_by_date',\n sortKeySelector: function sortKeySelector(file) {\n return file ? file.modDate : undefined;\n },\n button: {\n name: 'Sort by date',\n toolbar: true,\n group: 'Options'\n }\n }),\n /**\r\n * Action that toggles whether hidden files are shown to the user or not.\r\n */\n ToggleHiddenFiles: /*#__PURE__*/defineFileAction({\n id: 'toggle_hidden_files',\n hotkeys: ['ctrl+h'],\n option: {\n id: OptionIds.ShowHiddenFiles,\n defaultValue: true\n },\n button: {\n name: 'Show hidden files',\n toolbar: true,\n group: 'Options'\n }\n }),\n /**\r\n * Action that toggles whether folders should appear before files regardless of\r\n * current sort function.\r\n */\n ToggleShowFoldersFirst: /*#__PURE__*/defineFileAction({\n id: 'toggle_show_folders_first',\n option: {\n id: OptionIds.ShowFoldersFirst,\n defaultValue: true\n },\n button: {\n name: 'Show folders first',\n toolbar: true,\n group: 'Options'\n }\n }),\n /**\r\n * Action that focuses the search input when it is dispatched.\r\n */\n FocusSearchInput: /*#__PURE__*/defineFileAction({\n id: 'focus_search_input',\n hotkeys: ['ctrl+f']\n }, function (_ref4) {\n var getReduxState = _ref4.getReduxState;\n var focusSearchInput = selectFocusSearchInput(getReduxState());\n if (focusSearchInput) focusSearchInput();\n }),\n /**\r\n * Action that enables List view.\r\n */\n ToggleDarkMode: /*#__PURE__*/defineFileAction({\n id: 'enable_dark_mode',\n option: {\n id: OptionIds.DarkMode,\n defaultValue: false\n },\n button: {\n name: 'Enable dark mode',\n toolbar: true,\n icon: ChonkyIconName.list,\n iconOnly: true\n }\n })\n};\nvar ExtraActions = {\n /**\r\n * Action that adds a button and shortcut to copy files.\r\n */\n CopyFiles: /*#__PURE__*/defineFileAction({\n id: 'copy_files',\n requiresSelection: true,\n hotkeys: ['ctrl+c'],\n button: {\n name: 'Copy selection',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.copy\n }\n }),\n /**\r\n * Action that adds a button to create a new folder.\r\n */\n CreateFolder: /*#__PURE__*/defineFileAction({\n id: 'create_folder',\n button: {\n name: 'Create folder',\n toolbar: true,\n tooltip: 'Create a folder',\n icon: ChonkyIconName.folderCreate\n }\n }),\n /**\r\n * Action that adds a button to upload files.\r\n */\n UploadFiles: /*#__PURE__*/defineFileAction({\n id: 'upload_files',\n button: {\n name: 'Upload files',\n toolbar: true,\n tooltip: 'Upload files',\n icon: ChonkyIconName.upload\n }\n }),\n /**\r\n * Action that adds a button to download files.\r\n */\n DownloadFiles: /*#__PURE__*/defineFileAction({\n id: 'download_files',\n requiresSelection: true,\n button: {\n name: 'Download files',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.download\n }\n }),\n /**\r\n * Action that adds a button and shortcut to delete files.\r\n */\n DeleteFiles: /*#__PURE__*/defineFileAction({\n id: 'delete_files',\n requiresSelection: true,\n hotkeys: ['delete'],\n button: {\n name: 'Delete files',\n toolbar: true,\n contextMenu: true,\n group: 'Actions',\n icon: ChonkyIconName.trash\n }\n })\n};\nvar ChonkyActions = /*#__PURE__*/_extends({}, EssentialActions, DefaultActions, ExtraActions);\nvar EssentialFileActions = [ChonkyActions.MouseClickFile, ChonkyActions.KeyboardClickFile, ChonkyActions.StartDragNDrop, ChonkyActions.EndDragNDrop, ChonkyActions.MoveFiles, ChonkyActions.ChangeSelection, ChonkyActions.OpenFiles, ChonkyActions.OpenParentFolder, ChonkyActions.OpenFileContextMenu];\nvar DefaultFileActions = [ChonkyActions.OpenSelection, ChonkyActions.SelectAllFiles, ChonkyActions.ClearSelection, ChonkyActions.EnableListView,\n// TODO: Don't enable until compact view is fully supported\n// ChonkyActions.EnableCompactView,\nChonkyActions.EnableGridView, ChonkyActions.SortFilesByName, ChonkyActions.SortFilesBySize, ChonkyActions.SortFilesByDate, ChonkyActions.ToggleHiddenFiles, ChonkyActions.ToggleShowFoldersFirst, ChonkyActions.FocusSearchInput];\nvar initialRootState = {\n instanceId: 'CHONKY_INVALID_ID',\n externalFileActionHandler: null,\n rawFileActions: [],\n fileActionsErrorMessages: [],\n fileActionMap: {},\n fileActionIds: [],\n toolbarItems: [],\n contextMenuItems: [],\n rawFolderChain: null,\n folderChainErrorMessages: [],\n folderChain: [],\n rawFiles: [],\n filesErrorMessages: [],\n fileMap: {},\n fileIds: [],\n cleanFileIds: [],\n sortedFileIds: [],\n hiddenFileIdMap: {},\n focusSearchInput: null,\n searchString: '',\n searchMode: 'currentFolder',\n selectionMap: {},\n disableSelection: false,\n fileViewConfig: ChonkyActions.EnableGridView.fileViewConfig,\n sortActionId: null,\n sortOrder: SortOrder.ASC,\n optionMap: {},\n thumbnailGenerator: null,\n doubleClickDelay: 300,\n disableDragAndDrop: false,\n clearSelectionOnOutsideClick: true,\n lastClick: null,\n contextMenuMounted: false,\n contextMenuConfig: null\n};\nvar reducers = {\n setExternalFileActionHandler: function setExternalFileActionHandler(state, action) {\n var _action$payload;\n state.externalFileActionHandler = (_action$payload = action.payload) != null ? _action$payload : null;\n },\n setRawFileActions: function setRawFileActions(state, action) {\n state.rawFileActions = action.payload;\n },\n setFileActionsErrorMessages: function setFileActionsErrorMessages(state, action) {\n state.fileActionsErrorMessages = action.payload;\n },\n setFileActions: function setFileActions(state, action) {\n var fileActionMap = {};\n action.payload.map(function (a) {\n return fileActionMap[a.id] = a;\n });\n var fileIds = action.payload.map(function (a) {\n return a.id;\n });\n state.fileActionMap = fileActionMap;\n state.fileActionIds = fileIds;\n },\n updateFileActionMenuItems: function updateFileActionMenuItems(state, action) {\n var _action$payload2 = action.payload;\n state.toolbarItems = _action$payload2[0];\n state.contextMenuItems = _action$payload2[1];\n },\n setRawFolderChain: function setRawFolderChain(state, action) {\n var rawFolderChain = action.payload;\n var _sanitizeInputArray = sanitizeInputArray('folderChain', rawFolderChain),\n folderChain = _sanitizeInputArray.sanitizedArray,\n errorMessages = _sanitizeInputArray.errorMessages;\n state.rawFolderChain = rawFolderChain;\n state.folderChain = folderChain;\n state.folderChainErrorMessages = errorMessages;\n },\n setRawFiles: function setRawFiles(state, action) {\n var rawFiles = action.payload;\n var _sanitizeInputArray2 = sanitizeInputArray('files', rawFiles),\n files = _sanitizeInputArray2.sanitizedArray,\n errorMessages = _sanitizeInputArray2.errorMessages;\n state.rawFiles = rawFiles;\n state.filesErrorMessages = errorMessages;\n var fileMap = {};\n files.forEach(function (f) {\n if (f) fileMap[f.id] = f;\n });\n var fileIds = files.map(function (f) {\n return f ? f.id : null;\n });\n var cleanFileIds = fileIds.filter(function (f) {\n return !!f;\n });\n state.fileMap = fileMap;\n state.fileIds = fileIds;\n state.cleanFileIds = cleanFileIds; // Cleanup selection\n\n for (var _i = 0, _Object$keys = Object.keys(state.selectionMap); _i < _Object$keys.length; _i++) {\n var selectedFileId = _Object$keys[_i];\n if (!fileMap[selectedFileId]) {\n delete state.selectionMap[selectedFileId];\n }\n }\n },\n setSortedFileIds: function setSortedFileIds(state, action) {\n state.sortedFileIds = action.payload;\n },\n setHiddenFileIds: function setHiddenFileIds(state, action) {\n state.hiddenFileIdMap = action.payload; // Cleanup selection\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(state.selectionMap); _i2 < _Object$keys2.length; _i2++) {\n var selectedFileId = _Object$keys2[_i2];\n if (state.hiddenFileIdMap[selectedFileId]) {\n delete state.selectionMap[selectedFileId];\n }\n }\n },\n setFocusSearchInput: function setFocusSearchInput(state, action) {\n state.focusSearchInput = action.payload;\n },\n setSearchString: function setSearchString(state, action) {\n state.searchString = action.payload;\n },\n selectAllFiles: function selectAllFiles(state) {\n state.fileIds.filter(function (id) {\n return id && FileHelper.isSelectable(state.fileMap[id]);\n }).map(function (id) {\n return id ? state.selectionMap[id] = true : null;\n });\n },\n selectFiles: function selectFiles(state, action) {\n if (state.disableSelection) return;\n if (action.payload.reset) state.selectionMap = {};\n action.payload.fileIds.filter(function (id) {\n return id && FileHelper.isSelectable(state.fileMap[id]);\n }).map(function (id) {\n return state.selectionMap[id] = true;\n });\n },\n toggleSelection: function toggleSelection(state, action) {\n if (state.disableSelection) return;\n var oldValue = !!state.selectionMap[action.payload.fileId];\n if (action.payload.exclusive) state.selectionMap = {};\n if (oldValue) delete state.selectionMap[action.payload.fileId];else if (FileHelper.isSelectable(state.fileMap[action.payload.fileId])) {\n state.selectionMap[action.payload.fileId] = true;\n }\n },\n clearSelection: function clearSelection(state) {\n if (state.disableSelection) return;\n if (Object.keys(state.selectionMap).length !== 0) state.selectionMap = {};\n },\n setSelectionDisabled: function setSelectionDisabled(state, action) {\n state.disableSelection = action.payload;\n if (Object.keys(state.selectionMap).length !== 0) state.selectionMap = {};\n },\n setFileViewConfig: function setFileViewConfig(state, action) {\n state.fileViewConfig = action.payload;\n },\n setSort: function setSort(state, action) {\n state.sortActionId = action.payload.actionId;\n state.sortOrder = action.payload.order;\n },\n setOptionDefaults: function setOptionDefaults(state, action) {\n for (var _i3 = 0, _Object$keys3 = Object.keys(action.payload); _i3 < _Object$keys3.length; _i3++) {\n var optionId = _Object$keys3[_i3];\n if (optionId in state.optionMap) continue;\n state.optionMap[optionId] = action.payload[optionId];\n }\n },\n toggleOption: function toggleOption(state, action) {\n state.optionMap[action.payload] = !state.optionMap[action.payload];\n },\n setThumbnailGenerator: function setThumbnailGenerator(state, action) {\n state.thumbnailGenerator = action.payload;\n },\n setDoubleClickDelay: function setDoubleClickDelay(state, action) {\n state.doubleClickDelay = action.payload;\n },\n setDisableDragAndDrop: function setDisableDragAndDrop(state, action) {\n state.disableDragAndDrop = action.payload;\n },\n setClearSelectionOnOutsideClick: function setClearSelectionOnOutsideClick(state, action) {\n state.clearSelectionOnOutsideClick = action.payload;\n },\n setLastClickIndex: function setLastClickIndex(state, action) {\n state.lastClick = action.payload;\n },\n setContextMenuMounted: function setContextMenuMounted(state, action) {\n state.contextMenuMounted = action.payload;\n },\n showContextMenu: function showContextMenu(state, action) {\n state.contextMenuConfig = action.payload;\n },\n hideContextMenu: function hideContextMenu(state) {\n if (!state.contextMenuConfig) return;\n state.contextMenuConfig = null;\n }\n};\nvar _createSlice = /*#__PURE__*/createSlice({\n name: 'root',\n initialState: initialRootState,\n reducers: reducers\n }),\n reduxActions = _createSlice.actions,\n rootReducer = _createSlice.reducer;\nvar useStoreWatchers = function useStoreWatchers(store) {\n useEffect(function () {\n var selectionWatcher = watch(function () {\n return selectSelectionMap(store.getState());\n });\n var onSelectionChange = function onSelectionChange(newSelection, oldSelection) {\n // We don't check for deep equality here as we expect the\n // reducers to prevent all unnecessary updates.\n if (newSelection === oldSelection) return; // Notify users the selection has changed.\n\n var selectedFilesIds = selectSelectedFileIds(store.getState());\n var selection = new Set(selectedFilesIds);\n store.dispatch(thunkRequestFileAction(ChonkyActions.ChangeSelection, {\n selection: selection\n }));\n };\n var unsubscribeCallbacks = [store.subscribe(selectionWatcher(onSelectionChange))];\n return function () {\n for (var _iterator = _createForOfIteratorHelperLoose(unsubscribeCallbacks), _step; !(_step = _iterator()).done;) {\n var unsubscribe = _step.value;\n unsubscribe();\n }\n };\n }, [store]);\n};\nvar useChonkyStore = function useChonkyStore(chonkyInstanceId) {\n var store = useStaticValue(function () {\n var preloadedState = _extends({}, initialRootState, {\n instanceId: chonkyInstanceId\n });\n return configureStore({\n preloadedState: preloadedState,\n reducer: rootReducer,\n middleware: function middleware(getDefaultMiddleware) {\n return getDefaultMiddleware({\n serializableCheck: false\n });\n },\n devTools: {\n name: \"chonky_\" + chonkyInstanceId\n }\n });\n });\n useStoreWatchers(store);\n return store;\n};\n/**\r\n * Hook that can be used with parametrized selectors.\r\n */\n\nvar useParamSelector = function useParamSelector(parametrizedSelector) {\n for (var _len = arguments.length, selectorParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n selectorParams[_key - 1] = arguments[_key];\n }\n var selector = useCallback(function (state) {\n return parametrizedSelector.apply(void 0, selectorParams)(state);\n },\n // eslint-disable-next-line\n [parametrizedSelector].concat(selectorParams));\n return useSelector(selector);\n};\n/**\r\n * DTE - DispatchThunkEffect. This method is used to decrease code duplication in\r\n * main Chonky method.\r\n */\n\nvar useDTE = function useDTE(actionCreator) {\n for (var _len2 = arguments.length, selectorParams = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n selectorParams[_key2 - 1] = arguments[_key2];\n }\n var dispatch = useDispatch();\n useEffect(function () {\n dispatch(actionCreator.apply(void 0, selectorParams));\n },\n // eslint-disable-next-line\n [dispatch, actionCreator].concat(selectorParams));\n};\nvar usePropReduxUpdate = function usePropReduxUpdate(actionCreator, payload) {\n var dispatch = useDispatch();\n useEffect(function () {\n dispatch(actionCreator(payload));\n }, [dispatch, actionCreator, payload]);\n};\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ChonkyIconPlaceholder = function ChonkyIconPlaceholder() {\n // This component should not be rendered unless the user has misconfigured Chonky\n var title = 'No icon component found. Please follow Chonky installation instructions to ' + 'provide a pre-made icon component (or a custom icon).';\n return React.createElement(\"span\", {\n title: title\n }, \"\\u26A0\\uFE0F\");\n};\nvar defaultConfig = {\n fileActions: null,\n onFileAction: null,\n thumbnailGenerator: null,\n doubleClickDelay: 300,\n disableSelection: false,\n disableDefaultFileActions: false,\n disableDragAndDrop: false,\n disableDragAndDropProvider: false,\n defaultSortActionId: ChonkyActions.SortFilesByName.id,\n defaultFileViewActionId: ChonkyActions.EnableGridView.id,\n clearSelectionOnOutsideClick: true,\n iconComponent: ChonkyIconPlaceholder,\n darkMode: false,\n i18n: {}\n};\nvar setChonkyDefaults = function setChonkyDefaults(config) {\n for (var _i = 0, _Object$keys = Object.keys(defaultConfig); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n if (key in config) {\n defaultConfig[key] = config[key];\n }\n }\n};\nvar I18nNamespace;\n(function (I18nNamespace) {\n I18nNamespace[\"Toolbar\"] = \"toolbar\";\n I18nNamespace[\"FileList\"] = \"fileList\";\n I18nNamespace[\"FileEntry\"] = \"fileEntry\";\n I18nNamespace[\"FileContextMenu\"] = \"contextMenu\";\n I18nNamespace[\"FileActions\"] = \"actions\";\n I18nNamespace[\"FileActionGroups\"] = \"actionGroups\";\n})(I18nNamespace || (I18nNamespace = {}));\nvar getI18nId = function getI18nId(namespace, stringId) {\n return \"chonky.\" + namespace + \".\" + stringId;\n};\nvar getActionI18nId = function getActionI18nId(actionId, stringId) {\n return \"chonky.\" + I18nNamespace.FileActions + \".\" + actionId + \".\" + stringId;\n};\nvar useLocalizedFileActionGroup = function useLocalizedFileActionGroup(groupName) {\n var intl = useIntl();\n return useMemo(function () {\n return intl.formatMessage({\n id: getI18nId(I18nNamespace.FileActionGroups, groupName),\n defaultMessage: groupName\n });\n }, [groupName, intl]);\n};\nvar useLocalizedFileActionStrings = function useLocalizedFileActionStrings(action) {\n var intl = useIntl();\n return useMemo(function () {\n var _action$button, _action$button2;\n if (!action) {\n return {\n buttonName: '',\n buttonTooltip: undefined\n };\n }\n var buttonName = intl.formatMessage({\n id: getActionI18nId(action.id, 'button.name'),\n defaultMessage: (_action$button = action.button) == null ? void 0 : _action$button.name\n });\n var buttonTooltip = undefined;\n if ((_action$button2 = action.button) != null && _action$button2.tooltip) {\n var _action$button3;\n\n // We only translate the tooltip if the original action has a tooltip.\n buttonTooltip = intl.formatMessage({\n id: getActionI18nId(action.id, 'button.tooltip'),\n defaultMessage: (_action$button3 = action.button) == null ? void 0 : _action$button3.tooltip\n });\n }\n return {\n buttonName: buttonName,\n buttonTooltip: buttonTooltip\n };\n }, [action, intl]);\n};\nvar useLocalizedFileEntryStrings = function useLocalizedFileEntryStrings(file) {\n var intl = useIntl();\n var formatters = useContext(ChonkyFormattersContext);\n return useMemo(function () {\n return {\n fileModDateString: formatters.formatFileModDate(intl, file),\n fileSizeString: formatters.formatFileSize(intl, file)\n };\n }, [file, formatters, intl]);\n};\nvar defaultFormatters = {\n formatFileModDate: function formatFileModDate(intl, file) {\n var safeModDate = FileHelper.getModDate(file);\n if (safeModDate) {\n return intl.formatDate(safeModDate, {\n dateStyle: 'medium',\n timeStyle: 'short'\n });\n } else {\n return null;\n }\n },\n formatFileSize: function formatFileSize(_intl, file) {\n if (!file || typeof file.size !== 'number') return null;\n var size = file.size;\n var sizeData = filesize(size, {\n bits: false,\n output: 'object'\n });\n if (sizeData.symbol === 'B') {\n return Math.round(sizeData.value / 10) / 100.0 + \" KB\";\n } else if (sizeData.symbol === 'KB') {\n return Math.round(sizeData.value) + \" \" + sizeData.symbol;\n }\n return sizeData.value + \" \" + sizeData.symbol;\n }\n};\nvar ChonkyFormattersContext = /*#__PURE__*/createContext(defaultFormatters);\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2019\r\n * @license MIT\r\n */\nvar ChonkyIconContext = /*#__PURE__*/createContext(ChonkyIconPlaceholder);\nvar VideoExtensions = ['3g2', '3gp', '3gpp', 'asf', 'asx', 'avi', 'dvb', 'f4v', 'fli', 'flv', 'fvt', 'h261', 'h263', 'h264', 'jpgm', 'jpgv', 'jpm', 'm1v', 'm2v', 'm4u', 'm4v', 'mj2', 'mjp2', 'mk3d', 'mks', 'mkv', 'mng', 'mov', 'movie', 'mp4', 'mp4v', 'mpe', 'mpeg', 'mpg', 'mpg4', 'mxu', 'ogv', 'pyv', 'qt', 'smv', 'ts', 'uvh', 'uvm', 'uvp', 'uvs', 'uvu', 'uvv', 'uvvh', 'uvvm', 'uvvp', 'uvvs', 'uvvu', 'uvvv', 'viv', 'vob', 'webm', 'wm', 'wmv', 'wmx', 'wvx'];\nvar ImageExtensions = ['3ds', 'apng', 'azv', 'bmp', 'bmp', 'btif', 'cgm', 'cmx', 'djv', 'djvu', 'drle', 'dwg', 'dxf', 'emf', 'exr', 'fbs', 'fh', 'fh4', 'fh5', 'fh7', 'fhc', 'fits', 'fpx', 'fst', 'g3', 'gif', 'heic', 'heics', 'heif', 'heifs', 'ico', 'ico', 'ief', 'jls', 'jng', 'jp2', 'jpe', 'jpeg', 'jpf', 'jpg', 'jpg2', 'jpm', 'jpx', 'jxr', 'ktx', 'mdi', 'mmr', 'npx', 'pbm', 'pct', 'pcx', 'pcx', 'pgm', 'pic', 'png', 'pnm', 'ppm', 'psd', 'pti', 'ras', 'rgb', 'rlc', 'sgi', 'sid', 'sub', 'svg', 'svgz', 't38', 'tap', 'tfx', 'tga', 'tif', 'tiff', 'uvg', 'uvi', 'uvvg', 'uvvi', 'vtf', 'wbmp', 'wdp', 'webp', 'wmf', 'xbm', 'xif', 'xpm', 'xwd'];\nvar AudioExtensions = ['3gpp', 'aac', 'adp', 'aif', 'aifc', 'aiff', 'au', 'caf', 'dra', 'dts', 'dtshd', 'ecelp4800', 'ecelp7470', 'ecelp9600', 'eol', 'flac', 'kar', 'lvp', 'm2a', 'm3a', 'm3u', 'm4a', 'm4a', 'mid', 'midi', 'mka', 'mp2', 'mp2a', 'mp3', 'mp3', 'mp4a', 'mpga', 'oga', 'ogg', 'pya', 'ra', 'ra', 'ram', 'rip', 'rmi', 'rmp', 's3m', 'sil', 'snd', 'spx', 'uva', 'uvva', 'wav', 'wav', 'wav', 'wax', 'weba', 'wma', 'xm'];\nvar ColorsLight = ['#bbbbbb', '#d65c5c', '#d6665c', '#d6705c', '#d67a5c', '#d6855c', '#d68f5c', '#d6995c', '#d6a35c', '#d6ad5c', '#d6b85c', '#d6c25c', '#d6cc5c', '#d6d65c', '#ccd65c', '#c2d65c', '#b8d65c', '#add65c', '#a3d65c', '#99d65c', '#8fd65c', '#85d65c', '#7ad65c', '#70d65c', '#66d65c', '#5cd65c', '#5cd666', '#5cd670', '#5cd67a', '#5cd685', '#5cd68f', '#5cd699', '#5cd6a3', '#5cd6ad', '#5cd6b8', '#5cd6c2', '#5cd6cc', '#5cd6d6', '#5cccd6', '#5cc2d6', '#5cb8d6', '#5cadd6', '#5ca3d6', '#5c99d6', '#5c8fd6', '#5c85d6', '#5c7ad6', '#5c70d6', '#5c66d6', '#5c5cd6', '#665cd6', '#705cd6', '#7a5cd6', '#855cd6', '#8f5cd6', '#995cd6', '#a35cd6', '#ad5cd6', '#b85cd6', '#c25cd6', '#cc5cd6', '#d65cd6', '#d65ccc', '#d65cc2', '#d65cb8', '#d65cad', '#d65ca3', '#d65c99', '#d65c8f', '#d65c85', '#d65c7a', '#d65c70', '#d65c66'];\nvar ColorsDark = ['#777', '#8f3d3d', '#8f443d', '#8f4b3d', '#8f523d', '#8f583d', '#8f5f3d', '#8f663d', '#8f6d3d', '#8f743d', '#8f7a3d', '#8f813d', '#8f883d', '#8f8f3d', '#888f3d', '#818f3d', '#7a8f3d', '#748f3d', '#6d8f3d', '#668f3d', '#5f8f3d', '#588f3d', '#528f3d', '#4b8f3d', '#448f3d', '#3d8f3d', '#3d8f44', '#3d8f4b', '#3d8f52', '#3d8f58', '#3d8f5f', '#3d8f66', '#3d8f6d', '#3d8f74', '#3d8f7a', '#3d8f81', '#3d8f88', '#3d8f8f', '#3d888f', '#3d818f', '#3d7a8f', '#3d748f', '#3d6d8f', '#3d668f', '#3d5f8f', '#3d588f', '#3d528f', '#3d4b8f', '#3d448f', '#3d3d8f', '#443d8f', '#4b3d8f', '#523d8f', '#583d8f', '#5f3d8f', '#663d8f', '#6d3d8f', '#743d8f', '#7a3d8f', '#813d8f', '#883d8f', '#8f3d8f', '#8f3d88', '#8f3d81', '#8f3d7a', '#8f3d74', '#8f3d6d', '#8f3d66', '#8f3d5f', '#8f3d58', '#8f3d52', '#8f3d4b', '#8f3d44'];\nvar getIconTrie = function getIconTrie() {\n var colourIndex = 0;\n var step = 5;\n var IconsToExtensions = [\n // Generic file types\n [ChonkyIconName.license, ['license']], [ChonkyIconName.config, ['sfk', 'ini', 'yml', 'toml', 'iml']], [ChonkyIconName.model, ['3ds', 'obj', 'ply', 'fbx']], [ChonkyIconName.database, ['csv', 'json', 'sql', 'sqlite', 'sqlite3', 'npy', 'npz', 'rec', 'idx', 'hdf5']], [ChonkyIconName.text, ['txt', 'md', 'mdx']], [ChonkyIconName.archive, ['zip', 'rar', 'tar', 'tar.gz', '7z']], [ChonkyIconName.image, ImageExtensions], [ChonkyIconName.video, VideoExtensions], [ChonkyIconName.code, ['html', 'php', 'css', 'sass', 'scss', 'less', 'cpp', 'h', 'hpp', 'c', 'xml']], [ChonkyIconName.info, ['bib', 'readme', 'nfo']], [ChonkyIconName.key, ['pem', 'pub']], [ChonkyIconName.lock, ['lock', 'lock.json', 'shrinkwrap.json']], [ChonkyIconName.music, AudioExtensions], [ChonkyIconName.terminal, ['run', 'sh']], [ChonkyIconName.trash, ['.Trashes']], [ChonkyIconName.users, ['authors', 'contributors']],\n // OS file types\n [ChonkyIconName.linux, ['AppImage']], [ChonkyIconName.ubuntu, ['deb']], [ChonkyIconName.windows, ['exe']],\n // Programming language file types\n [ChonkyIconName.rust, ['rs', 'rlib']], [ChonkyIconName.python, ['py', 'ipynb']], [ChonkyIconName.nodejs, ['js', 'jsx', 'ts', 'tsx', 'd.ts']], [ChonkyIconName.php, ['php']],\n // Development tools file types\n [ChonkyIconName.git, ['.gitignore']],\n // Brands file types\n [ChonkyIconName.adobe, ['psd']],\n // Other program file types\n [ChonkyIconName.pdf, ['pdf']], [ChonkyIconName.excel, ['xls', 'xlsx']], [ChonkyIconName.word, ['doc', 'docx', 'odt']], [ChonkyIconName.flash, ['swf']]];\n var exactTrie = new ExactTrie({\n ignoreCase: true\n });\n for (var _i = 0, _IconsToExtensions = IconsToExtensions; _i < _IconsToExtensions.length; _i++) {\n var pair = _IconsToExtensions[_i];\n var icon = pair[0],\n extensions = pair[1];\n for (var i = 0; i < extensions.length; ++i) {\n colourIndex += step;\n var colorCode = colourIndex % (ColorsLight.length - 1) + 1;\n var iconData = {\n icon: icon,\n colorCode: colorCode\n };\n exactTrie.put(extensions[i], iconData, true);\n }\n }\n return exactTrie;\n};\nvar iconTrie = /*#__PURE__*/getIconTrie();\nvar useIconData = function useIconData(file) {\n return useMemo(function () {\n if (!file) return {\n icon: ChonkyIconName.loading,\n colorCode: 0\n };\n if (file.isDir === true) return {\n icon: ChonkyIconName.folder,\n colorCode: 0\n };\n var match = iconTrie.getWithCheckpoints(file.name, '.', true);\n return match ? match : {\n icon: ChonkyIconName.file,\n colorCode: 32\n };\n }, [file]);\n};\nvar lightTheme = {\n colors: {\n debugRed: '#fabdbd',\n debugBlue: '#bdd8fa',\n debugGreen: '#d2fabd',\n debugPurple: '#d2bdfa',\n debugYellow: '#fae9bd',\n textActive: '#09f'\n },\n fontSizes: {\n rootPrimary: 15\n },\n margins: {\n rootLayoutMargin: 8\n },\n toolbar: {\n size: 30,\n lineHeight: '30px',\n fontSize: 15,\n buttonRadius: 4\n },\n dnd: {\n canDropColor: 'green',\n cannotDropColor: 'red',\n canDropMask: 'rgba(180, 235, 180, 0.75)',\n cannotDropMask: 'rgba(235, 180, 180, 0.75)',\n fileListCanDropMaskOne: 'rgba(180, 235, 180, 0.1)',\n fileListCanDropMaskTwo: 'rgba(180, 235, 180, 0.2)',\n fileListCannotDropMaskOne: 'rgba(235, 180, 180, 0.1)',\n fileListCannotDropMaskTwo: 'rgba(235, 180, 180, 0.2)'\n },\n dragLayer: {\n border: 'solid 2px #09f',\n padding: '7px 10px',\n borderRadius: 2\n },\n fileList: {\n desktopGridGutter: 8,\n mobileGridGutter: 5\n },\n gridFileEntry: {\n childrenCountSize: '1.6em',\n iconColorFocused: '#000',\n iconSize: '2.4em',\n iconColor: '#fff',\n borderRadius: 5,\n fontSize: 14,\n fileColorTint: 'rgba(255, 255, 255, 0.4)',\n folderBackColorTint: 'rgba(255, 255, 255, 0.1)',\n folderFrontColorTint: 'rgba(255, 255, 255, 0.4)'\n },\n listFileEntry: {\n propertyFontSize: 14,\n iconFontSize: '1.1em',\n iconBorderRadius: 5,\n fontSize: 14\n }\n};\nvar darkThemeOverride = {\n gridFileEntry: {\n fileColorTint: 'rgba(50, 50, 50, 0.4)',\n folderBackColorTint: 'rgba(50, 50, 50, 0.4)',\n folderFrontColorTint: 'rgba(50, 50, 50, 0.15)'\n }\n};\nvar mobileThemeOverride = {\n fontSizes: {\n rootPrimary: 13\n },\n margins: {\n rootLayoutMargin: 4\n },\n toolbar: {\n size: 28,\n lineHeight: '28px',\n fontSize: 13\n },\n gridFileEntry: {\n fontSize: 13\n },\n listFileEntry: {\n propertyFontSize: 12,\n iconFontSize: '1em',\n fontSize: 13\n }\n};\nvar useIsMobileBreakpoint = function useIsMobileBreakpoint() {\n return useMediaQuery('(max-width:480px)');\n};\nvar getStripeGradient = function getStripeGradient(colorOne, colorTwo) {\n return 'repeating-linear-gradient(' + '45deg,' + (colorOne + \",\") + (colorOne + \" 10px,\") + (colorTwo + \" 0,\") + (colorTwo + \" 20px\") + ')';\n};\nvar makeLocalChonkyStyles = function makeLocalChonkyStyles(styles // @ts-ignore\n) {\n return createUseStyles(styles);\n};\nvar makeGlobalChonkyStyles = function makeGlobalChonkyStyles(makeStyles) {\n var selectorMapping = {};\n var makeGlobalStyles = function makeGlobalStyles(theme) {\n var localStyles = makeStyles(theme);\n var globalStyles = {};\n var localSelectors = Object.keys(localStyles);\n localSelectors.map(function (localSelector) {\n var globalSelector = \"chonky-\" + localSelector;\n var jssSelector = \"@global .\" + globalSelector; // @ts-ignore\n\n globalStyles[jssSelector] = localStyles[localSelector]; // @ts-ignore\n\n selectorMapping[localSelector] = globalSelector;\n });\n return globalStyles;\n }; // @ts-ignore\n\n var useStyles = createUseStyles(makeGlobalStyles);\n return function () {\n var styles = useStyles.apply(void 0, arguments);\n var classes = {};\n Object.keys(selectorMapping).map(function (localSelector) {\n // @ts-ignore\n classes[localSelector] = selectorMapping[localSelector];\n });\n return _extends({}, classes, styles);\n };\n};\nvar important = function important(value) {\n return [value, '!important'];\n};\nvar c = classnames;\nvar useFileBrowserHandle = function useFileBrowserHandle(ref) {\n var store = useStore();\n var dispatch = useDispatch();\n useImperativeHandle(ref, function () {\n return {\n getFileSelection: function getFileSelection() {\n var selectionMap = selectSelectionMap(store.getState());\n var selectionSet = new Set(Object.keys(selectionMap));\n return selectionSet;\n },\n setFileSelection: function setFileSelection(selection, reset) {\n if (reset === void 0) {\n reset = true;\n }\n var fileIds = Array.from(selection);\n dispatch(reduxActions.selectFiles({\n fileIds: fileIds,\n reset: reset\n }));\n },\n requestFileAction: function requestFileAction(action, payload) {\n return Promise.resolve(dispatch(thunkRequestFileAction(action, payload))).then();\n }\n };\n }, [store, dispatch]);\n};\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ChonkyBusinessLogicInner = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$files;\n\n // ==== Update Redux state\n usePropReduxUpdate(reduxActions.setRawFiles, (_props$files = props.files) != null ? _props$files : initialRootState.rawFiles);\n usePropReduxUpdate(reduxActions.setRawFolderChain, props.folderChain);\n useDTE(thunkUpdateRawFileActions, getValueOrFallback(props.fileActions, defaultConfig.fileActions), getValueOrFallback(props.disableDefaultFileActions, defaultConfig.disableDefaultFileActions));\n useDTE(reduxActions.setExternalFileActionHandler, getValueOrFallback(props.onFileAction, defaultConfig.onFileAction));\n useDTE(reduxActions.setSelectionDisabled, getValueOrFallback(props.disableSelection, defaultConfig.disableSelection, 'boolean'));\n useDTE(thunkActivateSortAction, getValueOrFallback(props.defaultSortActionId, defaultConfig.defaultSortActionId));\n useDTE(thunkUpdateDefaultFileViewActionId, getValueOrFallback(props.defaultFileViewActionId, defaultConfig.defaultFileViewActionId, 'string'));\n useDTE(reduxActions.setThumbnailGenerator, getValueOrFallback(props.thumbnailGenerator, defaultConfig.thumbnailGenerator));\n useDTE(reduxActions.setDoubleClickDelay, getValueOrFallback(props.doubleClickDelay, defaultConfig.doubleClickDelay, 'number'));\n useDTE(reduxActions.setDisableDragAndDrop, getValueOrFallback(props.disableDragAndDrop, defaultConfig.disableDragAndDrop, 'boolean'));\n useDTE(reduxActions.setClearSelectionOnOutsideClick, getValueOrFallback(props.clearSelectionOnOutsideClick, defaultConfig.clearSelectionOnOutsideClick, 'boolean')); // ==== Setup the imperative handle for external use\n\n useFileBrowserHandle(ref);\n return null;\n}));\nChonkyBusinessLogicInner.displayName = 'ChonkyBusinessLogicInner';\nvar ChonkyBusinessLogic = /*#__PURE__*/React.memo(ChonkyBusinessLogicInner);\nChonkyBusinessLogic.displayName = 'ChonkyBusinessLogic';\nvar useDndContextAvailable = function useDndContextAvailable() {\n var dndContext = useContext(DndContext);\n var dragDropManager = dndContext.dragDropManager;\n return !!dragDropManager;\n};\nvar useDragIfAvailable = function useDragIfAvailable() {\n // This is an ugly hack to make `useDrag` not throw if a `DndContext` is not available.\n // See: https://github.com/react-dnd/react-dnd/issues/2212\n var dndContextAvailable = useDndContextAvailable();\n var mockHook = useCallback(function () {\n return [{}, function () {\n return null;\n }, function () {\n return null;\n }];\n }, []); // @ts-ignore\n\n var useHook = dndContextAvailable ? useDrag : mockHook;\n return useHook.apply(void 0, arguments);\n};\nvar useDropIfAvailable = function useDropIfAvailable() {\n var dndContextAvailable = useDndContextAvailable();\n var mockHook = useCallback(function () {\n return [{}, function () {\n return null;\n }];\n }, []); // @ts-ignore\n\n var useHook = dndContextAvailable ? useDrop : mockHook;\n return useHook.apply(void 0, arguments);\n};\nvar findClosestChonkyFileId = function findClosestChonkyFileId(element) {\n var fileEntryWrapperDiv = findElementAmongAncestors(element, function (element) {\n return element.tagName && element.tagName.toLowerCase() === 'div' && element.dataset && element.dataset.chonkyFileId;\n });\n return fileEntryWrapperDiv ? fileEntryWrapperDiv.dataset.chonkyFileId : null;\n};\nvar useContextMenuTrigger = function useContextMenuTrigger() {\n var dispatch = useDispatch();\n var contextMenuMountedRef = useInstanceVariable(useSelector(selectContextMenuMounted));\n return useCallback(function (event) {\n // Use default browser context menu when Chonky context menu component\n // is not mounted.\n if (!contextMenuMountedRef.current) return; // Users can use Alt+Right Click to bring up browser's default\n // context menu instead of Chonky's context menu.\n\n if (event.altKey) return;\n event.preventDefault();\n var triggerFileId = findClosestChonkyFileId(event.target);\n dispatch(thunkRequestFileAction(ChonkyActions.OpenFileContextMenu, {\n clientX: event.clientX,\n clientY: event.clientY,\n triggerFileId: triggerFileId\n }));\n }, [contextMenuMountedRef, dispatch]);\n};\nvar useContextMenuDismisser = function useContextMenuDismisser() {\n var dispatch = useDispatch();\n return useCallback(function () {\n return dispatch(reduxActions.hideContextMenu());\n }, [dispatch]);\n};\nvar ChonkyDndFileEntryType = 'dnd-chonky-file-entry';\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar layerStyles = {\n position: 'fixed',\n pointerEvents: 'none',\n zIndex: 100,\n left: 0,\n top: 0,\n width: '100%',\n height: '100%'\n};\nvar getItemStyles = function getItemStyles(initialCursorOffset, initialFileOffset, currentFileOffset) {\n if (!initialCursorOffset || !initialFileOffset || !currentFileOffset) {\n return {\n display: 'none'\n };\n }\n var x = initialCursorOffset.x + (currentFileOffset.x - initialFileOffset.x);\n var y = initialCursorOffset.y + (currentFileOffset.y - initialFileOffset.y);\n var transform = \"translate(\" + x + \"px, \" + y + \"px)\";\n return {\n transform: transform,\n WebkitTransform: transform\n };\n};\nvar DnDFileListDragLayer = function DnDFileListDragLayer() {\n var classes = useStyles();\n var _useDragLayer = useDragLayer(function (monitor) {\n return {\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialCursorOffset: monitor.getInitialClientOffset(),\n initialFileOffset: monitor.getInitialSourceClientOffset(),\n currentFileOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging()\n };\n }),\n itemType = _useDragLayer.itemType,\n item = _useDragLayer.item,\n initialCursorOffset = _useDragLayer.initialCursorOffset,\n initialFileOffset = _useDragLayer.initialFileOffset,\n currentFileOffset = _useDragLayer.currentFileOffset,\n isDragging = _useDragLayer.isDragging;\n if (!isDragging || itemType !== ChonkyDndFileEntryType || !item.payload) {\n return null;\n }\n var selectionSize = item.payload.selectedFiles.length;\n return React.createElement(\"div\", {\n style: layerStyles\n }, React.createElement(\"div\", {\n style: getItemStyles(initialCursorOffset, initialFileOffset, currentFileOffset)\n }, React.createElement(\"div\", {\n className: classes.fileDragPreview\n }, React.createElement(\"b\", null, item.payload.draggedFile.name), selectionSize > 1 && React.createElement(React.Fragment, null, ' and ', React.createElement(\"strong\", null, selectionSize - 1, \" other file\", selectionSize - 1 !== 1 ? 's' : '')))));\n};\nvar useStyles = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n fileDragPreview: {\n boxShadow: \"2px 2px 5px \" + theme.palette.divider,\n backgroundColor: theme.palette.background[\"default\"],\n borderRadius: theme.dragLayer.borderRadius,\n fontSize: theme.fontSizes.rootPrimary,\n color: theme.palette.text.primary,\n padding: theme.dragLayer.padding,\n border: theme.dragLayer.border,\n display: 'inline-block'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar HotkeyListener = /*#__PURE__*/React.memo(function (props) {\n var fileActionId = props.fileActionId;\n var dispatch = useDispatch();\n var fileAction = useParamSelector(selectFileActionData, fileActionId);\n useEffect(function () {\n if (!fileAction || !fileAction.hotkeys || fileAction.hotkeys.length === 0) {\n return;\n }\n var hotkeysStr = fileAction.hotkeys.join(',');\n var hotkeyCallback = function hotkeyCallback(event) {\n event.preventDefault();\n dispatch(thunkRequestFileAction(fileAction, undefined));\n };\n hotkeys(hotkeysStr, hotkeyCallback);\n return function () {\n return hotkeys.unbind(hotkeysStr, hotkeyCallback);\n };\n }, [dispatch, fileAction]);\n return null;\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ChonkyPresentationLayer = function ChonkyPresentationLayer(_ref) {\n var children = _ref.children;\n var dispatch = useDispatch();\n var fileActionIds = useSelector(selectFileActionIds);\n var dndDisabled = useSelector(selectIsDnDDisabled);\n var clearSelectionOnOutsideClick = useSelector(selectClearSelectionOnOutsideClick); // Deal with clicks outside of Chonky\n\n var handleClickAway = useCallback(function (event) {\n if (!clearSelectionOnOutsideClick || elementIsInsideButton(event.target)) {\n // We only clear out the selection on outside click if the click target\n // was not a button. We don't want to clear out the selection when a\n // button is clicked because Chonky users might want to trigger some\n // selection-related action on that button click.\n return;\n }\n dispatch(reduxActions.clearSelection());\n }, [dispatch, clearSelectionOnOutsideClick]); // Generate necessary components\n\n var hotkeyListenerComponents = useMemo(function () {\n return fileActionIds.map(function (actionId) {\n return React.createElement(HotkeyListener, {\n key: \"file-action-listener-\" + actionId,\n fileActionId: actionId\n });\n });\n }, [fileActionIds]);\n var dndContextAvailable = useDndContextAvailable();\n var showContextMenu = useContextMenuTrigger();\n var classes = useStyles$1();\n return React.createElement(ClickAwayListener, {\n onClickAway: handleClickAway\n }, React.createElement(Box, {\n className: classes.chonkyRoot,\n onContextMenu: showContextMenu\n }, !dndDisabled && dndContextAvailable && React.createElement(DnDFileListDragLayer, null), hotkeyListenerComponents, children ? children : null));\n};\nvar useStyles$1 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n chonkyRoot: {\n backgroundColor: theme.palette.background.paper,\n border: \"solid 1px \" + theme.palette.divider,\n padding: theme.margins.rootLayoutMargin,\n fontSize: theme.fontSizes.rootPrimary,\n color: theme.palette.text.primary,\n touchAction: 'manipulation',\n fontFamily: 'sans-serif',\n flexDirection: 'column',\n boxSizing: 'border-box',\n textAlign: 'left',\n borderRadius: 4,\n display: 'flex',\n height: '100%',\n // Disabling select\n webkitTouchCallout: 'none',\n webkitUserSelect: 'none',\n mozUserSelect: 'none',\n msUserSelect: 'none',\n userSelect: 'none'\n }\n };\n});\n\n// const whyDidYouRender = require('@welldone-software/why-did-you-render');\n// whyDidYouRender(React, {\n// trackAllPureComponents: true,\n// });\n// }\n\nvar FileBrowser = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _ref;\n var instanceId = props.instanceId,\n iconComponent = props.iconComponent,\n children = props.children;\n var disableDragAndDrop = getValueOrFallback(props.disableDragAndDrop, defaultConfig.disableDragAndDrop, 'boolean');\n var disableDragAndDropProvider = getValueOrFallback(props.disableDragAndDropProvider, defaultConfig.disableDragAndDropProvider, 'boolean');\n var darkMode = getValueOrFallback(props.darkMode, defaultConfig.darkMode, 'boolean');\n var i18n = getValueOrFallback(props.i18n, defaultConfig.i18n);\n var formatters = useMemo(function () {\n return _extends({}, defaultFormatters, i18n == null ? void 0 : i18n.formatters);\n }, [i18n]);\n var chonkyInstanceId = useStaticValue(function () {\n return instanceId != null ? instanceId : shortid.generate();\n });\n var store = useChonkyStore(chonkyInstanceId);\n var isMobileBreakpoint = useIsMobileBreakpoint();\n var theme = useMemo(function () {\n var muiTheme = createMuiTheme({\n palette: {\n type: darkMode ? 'dark' : 'light'\n }\n });\n var combinedTheme = merge(muiTheme, merge(lightTheme, darkMode ? darkThemeOverride : {}));\n return isMobileBreakpoint ? merge(combinedTheme, mobileThemeOverride) : combinedTheme;\n }, [darkMode, isMobileBreakpoint]);\n var chonkyComps = React.createElement(React.Fragment, null, React.createElement(ChonkyBusinessLogic, Object.assign({\n ref: ref\n }, props)), React.createElement(ChonkyPresentationLayer, null, children));\n return React.createElement(IntlProvider, Object.assign({\n locale: \"en\",\n defaultLocale: \"en\"\n }, i18n), React.createElement(ChonkyFormattersContext.Provider, {\n value: formatters\n }, React.createElement(Provider, {\n store: store\n }, React.createElement(ThemeProvider, {\n theme: theme\n }, React.createElement(ThemeProvider$1, {\n theme: theme\n }, React.createElement(ChonkyIconContext.Provider, {\n value: (_ref = iconComponent != null ? iconComponent : defaultConfig.iconComponent) != null ? _ref : ChonkyIconPlaceholder\n }, disableDragAndDrop || disableDragAndDropProvider ? chonkyComps : React.createElement(DndProvider, {\n backend: HTML5Backend\n }, chonkyComps)))))));\n});\nFileBrowser.displayName = 'FileBrowser';\nvar useFolderChainItems = function useFolderChainItems() {\n var folderChain = useSelector(selectFolderChain);\n var dispatch = useDispatch();\n var folderChainItems = useMemo(function () {\n var items = [];\n if (!folderChain) return items;\n var _loop = function _loop(i) {\n var file = folderChain[i];\n items.push({\n file: file,\n disabled: !file,\n onClick: !FileHelper.isOpenable(file) || i === folderChain.length - 1 ? undefined : function () {\n return dispatch(thunkRequestFileAction(ChonkyActions.OpenFiles, {\n targetFile: file,\n files: [file]\n }));\n }\n });\n };\n for (var i = 0; i < folderChain.length; ++i) {\n _loop(i);\n }\n return items;\n }, [dispatch, folderChain]);\n return folderChainItems;\n};\nvar useFileDrag = function useFileDrag(file) {\n // Prepare the dnd payload\n var store = useStore();\n var fileRef = useInstanceVariable(file);\n var getDndStartPayload = useCallback(function () {\n var reduxState = store.getState();\n return {\n sourceInstanceId: selectInstanceId(reduxState),\n source: selectCurrentFolder(reduxState),\n // We force non-null type below because by convention, if drag & drop for\n // this file was possible, it must have been non-null.\n draggedFile: fileRef.current,\n selectedFiles: selectSelectedFiles(reduxState)\n };\n }, [store, fileRef]); // For drag source\n\n var dispatch = useDispatch();\n var canDrag = useCallback(function () {\n return FileHelper.isDraggable(fileRef.current);\n }, [fileRef]);\n var onDragStart = useCallback(function () {\n var item = {\n type: ChonkyDndFileEntryType,\n payload: getDndStartPayload()\n };\n dispatch(thunkRequestFileAction(ChonkyActions.StartDragNDrop, item.payload));\n return item;\n }, [dispatch, getDndStartPayload]);\n var onDragEnd = useCallback(function (item, monitor) {\n var dropResult = monitor.getDropResult();\n if (!FileHelper.isDraggable(item.payload.draggedFile) || !dropResult || !dropResult.dropTarget) {\n return;\n }\n dispatch(thunkRequestFileAction(ChonkyActions.EndDragNDrop, _extends({}, item.payload, {\n destination: dropResult.dropTarget,\n copy: dropResult.dropEffect === 'copy'\n })));\n }, [dispatch]); // Create refs for react-dnd hooks\n\n var item = useMemo(function () {\n return {\n type: ChonkyDndFileEntryType,\n // Payload is actually added in `onDragStart`\n payload: {}\n };\n }, []);\n var collect = useCallback(function (monitor) {\n return {\n isDragging: monitor.isDragging()\n };\n }, []);\n var _useDragIfAvailable = useDragIfAvailable({\n item: item,\n canDrag: canDrag,\n begin: onDragStart,\n // @ts-ignore\n end: onDragEnd,\n collect: collect\n }),\n dndIsDragging = _useDragIfAvailable[0].isDragging,\n drag = _useDragIfAvailable[1],\n preview = _useDragIfAvailable[2];\n useEffect(function () {\n // Set drag preview to an empty image because `DnDFileListDragLayer` will\n // provide its own preview.\n preview(getEmptyImage(), {\n captureDraggingState: true\n });\n }, [preview]);\n return {\n dndIsDragging: dndIsDragging,\n drag: drag\n };\n};\nvar useFileDrop = function useFileDrop(_ref) {\n var file = _ref.file,\n forceDisableDrop = _ref.forceDisableDrop,\n includeChildrenDrops = _ref.includeChildrenDrops;\n var folderChainRef = useInstanceVariable(useSelector(selectFolderChain));\n var onDrop = useCallback(function (_item, monitor) {\n if (!monitor.canDrop()) return;\n var customDropResult = {\n dropTarget: file\n };\n return customDropResult;\n }, [file]);\n var canDrop = useCallback(function (item, monitor) {\n if (forceDisableDrop || !FileHelper.isDroppable(file) || !monitor.isOver({\n shallow: true\n }) && !includeChildrenDrops) {\n return false;\n }\n var _item$payload = item.payload,\n source = _item$payload.source,\n draggedFile = _item$payload.draggedFile,\n selectedFiles = _item$payload.selectedFiles; // We prevent folders from being dropped into themselves. We also prevent\n // any folder from current folder chain being moved - we can't move the\n // folder that we are currently in.\n\n var prohibitedFileIds = new Set();\n prohibitedFileIds.add(file.id);\n folderChainRef.current.map(function (folder) {\n if (folder) prohibitedFileIds.add(folder.id);\n });\n var movedFiles = [draggedFile].concat(selectedFiles);\n for (var _iterator = _createForOfIteratorHelperLoose(movedFiles), _step; !(_step = _iterator()).done;) {\n var currFile = _step.value;\n if (prohibitedFileIds.has(currFile.id)) return false;\n } // Finally, prohibit files from being moved into their parent folder\n // (which is a no-op).\n\n return file.id !== (source == null ? void 0 : source.id);\n }, [forceDisableDrop, file, includeChildrenDrops, folderChainRef]);\n var collect = useCallback(function (monitor) {\n return {\n isOver: monitor.isOver(),\n isOverCurrent: monitor.isOver({\n shallow: true\n }),\n canDrop: monitor.canDrop()\n };\n }, []);\n var _useDropIfAvailable = useDropIfAvailable({\n accept: ChonkyDndFileEntryType,\n drop: onDrop,\n canDrop: canDrop,\n collect: collect\n }),\n _useDropIfAvailable$ = _useDropIfAvailable[0],\n dndIsOver = _useDropIfAvailable$.isOver,\n dndIsOverCurrent = _useDropIfAvailable$.isOverCurrent,\n dndCanDrop = _useDropIfAvailable$.canDrop,\n drop = _useDropIfAvailable[1];\n return {\n dndIsOver: dndIsOver,\n dndIsOverCurrent: dndIsOverCurrent,\n dndCanDrop: dndCanDrop,\n drop: drop\n };\n};\nvar useFileEntryDnD = function useFileEntryDnD(file) {\n var _useFileDrag = useFileDrag(file),\n dndIsDragging = _useFileDrag.dndIsDragging,\n drag = _useFileDrag.drag;\n var _useFileDrop = useFileDrop({\n file: file\n }),\n dndIsOver = _useFileDrop.dndIsOver,\n dndCanDrop = _useFileDrop.dndCanDrop,\n drop = _useFileDrop.drop;\n var dndState = useMemo(function () {\n return {\n dndIsDragging: dndIsDragging,\n dndIsOver: dndIsOver,\n dndCanDrop: dndCanDrop\n };\n }, [dndCanDrop, dndIsDragging, dndIsOver]);\n return {\n drop: drop,\n drag: drag,\n dndState: dndState\n };\n};\nvar useDndHoverOpen = function useDndHoverOpen(file, dndState) {\n var dispatch = useDispatch();\n var currentFolderRef = useInstanceVariable(useSelector(selectCurrentFolder));\n useEffect(function () {\n var _currentFolderRef$cur;\n var timeout = null;\n if (dndState.dndIsOver && FileHelper.isDndOpenable(file) && file.id !== ((_currentFolderRef$cur = currentFolderRef.current) == null ? void 0 : _currentFolderRef$cur.id)) {\n timeout = setTimeout(function () {\n return dispatch(thunkRequestFileAction(EssentialActions.OpenFiles, {\n targetFile: file,\n files: [file]\n }));\n },\n // TODO: Make this timeout configurable\n 1500);\n }\n return function () {\n if (timeout) clearTimeout(timeout);\n };\n }, [dispatch, file, dndState.dndIsOver, currentFolderRef]);\n};\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\n\nvar getRandomInt = function getRandomInt(min, max) {\n return min + Math.floor(Math.random() * Math.floor(max - min));\n};\nvar TextPlaceholder = /*#__PURE__*/React.memo(function (props) {\n var minLength = props.minLength,\n maxLength = props.maxLength;\n var placeholderLength = getRandomInt(minLength, maxLength);\n var whitespace = ' '.repeat(placeholderLength);\n var classes = useStyles$2();\n return React.createElement(\"span\", {\n className: classes.textPlaceholder,\n dangerouslySetInnerHTML: {\n __html: whitespace\n }\n });\n});\nvar useStyles$2 = /*#__PURE__*/makeLocalChonkyStyles(function () {\n return {\n '@keyframes loading-placeholder': {\n '0%': {\n opacity: 0.2\n },\n '50%': {\n opacity: 0.4\n },\n '100%': {\n opacity: 0.2\n }\n },\n textPlaceholder: {\n animationName: '$loading-placeholder',\n animationIterationCount: 'infinite',\n animationTimingFunction: 'linear',\n animationDuration: '1.5s',\n backgroundColor: '#ccc',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n borderRadius: 4,\n maxWidth: '40%',\n minWidth: 20\n }\n };\n});\nvar useFileEntryHtmlProps = function useFileEntryHtmlProps(file) {\n return useMemo(function () {\n var dataProps = {\n 'data-test-id': 'file-entry',\n 'data-chonky-file-id': file ? file.id : undefined\n };\n return _extends({\n role: 'listitem'\n }, dataProps);\n }, [file]);\n};\nvar useFileEntryState = function useFileEntryState(file, selected, focused) {\n var iconData = useIconData(file);\n var _useThumbnailUrl = useThumbnailUrl(file),\n thumbnailUrl = _useThumbnailUrl.thumbnailUrl,\n thumbnailLoading = _useThumbnailUrl.thumbnailLoading;\n return useMemo(function () {\n var fileColor = thumbnailUrl ? ColorsDark[iconData.colorCode] : ColorsLight[iconData.colorCode];\n var iconSpin = thumbnailLoading || !file;\n var icon = thumbnailLoading ? ChonkyIconName.loading : iconData.icon;\n return {\n childrenCount: FileHelper.getChildrenCount(file),\n icon: file && file.icon !== undefined ? file.icon : icon,\n iconSpin: iconSpin,\n thumbnailUrl: thumbnailUrl,\n color: file && file.color !== undefined ? file.color : fileColor,\n selected: selected,\n focused: !!focused\n };\n }, [file, focused, iconData, selected, thumbnailLoading, thumbnailUrl]);\n};\nvar useDndIcon = function useDndIcon(dndState) {\n var dndIconName = null;\n if (dndState.dndIsOver) {\n var showDropIcon = dndState.dndCanDrop;\n dndIconName = showDropIcon ? ChonkyIconName.dndCanDrop : ChonkyIconName.dndCannotDrop;\n } else if (dndState.dndIsDragging) {\n dndIconName = ChonkyIconName.dndDragging;\n }\n return dndIconName;\n};\nvar useModifierIconComponents = function useModifierIconComponents(file) {\n var modifierIcons = useMemo(function () {\n var modifierIcons = [];\n if (FileHelper.isHidden(file)) modifierIcons.push(ChonkyIconName.hidden);\n if (FileHelper.isSymlink(file)) modifierIcons.push(ChonkyIconName.symlink);\n if (FileHelper.isEncrypted(file)) modifierIcons.push(ChonkyIconName.lock);\n return modifierIcons;\n }, [file]);\n var ChonkyIcon = useContext(ChonkyIconContext);\n var modifierIconComponents = useMemo(function () {\n return modifierIcons.map(function (icon, index) {\n return React.createElement(ChonkyIcon, {\n key: \"file-modifier-\" + index,\n icon: icon\n });\n });\n },\n // For some reason ESLint marks `ChonkyIcon` as an unnecessary dependency,\n // but we expect it can change at runtime so we disable the check.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [ChonkyIcon, modifierIcons]);\n return modifierIconComponents;\n};\nvar _extname = function _extname(fileName) {\n var parts = fileName.split('.');\n if (parts.length) {\n return \".\" + parts[parts.length - 1];\n }\n return '';\n};\nvar useFileNameComponent = function useFileNameComponent(file) {\n return useMemo(function () {\n if (!file) return React.createElement(TextPlaceholder, {\n minLength: 15,\n maxLength: 20\n });\n var name;\n var extension = null;\n var isDir = FileHelper.isDirectory(file);\n if (isDir) {\n name = file.name;\n } else {\n var _file$ext;\n extension = (_file$ext = file.ext) != null ? _file$ext : _extname(file.name);\n name = file.name.substr(0, file.name.length - extension.length);\n }\n return React.createElement(React.Fragment, null, name, extension && React.createElement(\"span\", {\n className: \"chonky-file-entry-description-title-extension\"\n }, extension));\n }, [file]);\n};\nvar useThumbnailUrl = function useThumbnailUrl(file) {\n var thumbnailGenerator = useSelector(selectThumbnailGenerator);\n var _useState = useState(null),\n thumbnailUrl = _useState[0],\n setThumbnailUrl = _useState[1];\n var _useState2 = useState(false),\n thumbnailLoading = _useState2[0],\n setThumbnailLoading = _useState2[1];\n var loadingAttempts = useRef(0);\n useEffect(function () {\n var loadingCancelled = false;\n if (file) {\n if (thumbnailGenerator) {\n if (loadingAttempts.current === 0) {\n setThumbnailLoading(true);\n }\n loadingAttempts.current++;\n Promise.resolve().then(function () {\n return thumbnailGenerator(file);\n }).then(function (thumbnailUrl) {\n if (loadingCancelled) return;\n setThumbnailLoading(false);\n if (thumbnailUrl && typeof thumbnailUrl === 'string') {\n setThumbnailUrl(thumbnailUrl);\n }\n })[\"catch\"](function (error) {\n if (!loadingCancelled) setThumbnailLoading(false);\n Logger.error(\"User-defined \\\"thumbnailGenerator\\\" handler threw an error: \" + error.message);\n });\n } else if (file.thumbnailUrl) {\n setThumbnailUrl(file.thumbnailUrl);\n }\n }\n return function () {\n loadingCancelled = true;\n };\n }, [file, setThumbnailUrl, setThumbnailLoading, thumbnailGenerator]);\n return {\n thumbnailUrl: thumbnailUrl,\n thumbnailLoading: thumbnailLoading\n };\n};\nvar useFileClickHandlers = function useFileClickHandlers(file, displayIndex) {\n var dispatch = useDispatch(); // Prepare base handlers\n\n var onMouseClick = useCallback(function (event, clickType) {\n if (!file) return;\n dispatch(thunkRequestFileAction(ChonkyActions.MouseClickFile, {\n clickType: clickType,\n file: file,\n fileDisplayIndex: displayIndex,\n altKey: event.altKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey\n }));\n }, [dispatch, file, displayIndex]);\n var onKeyboardClick = useCallback(function (event) {\n if (!file) return;\n dispatch(thunkRequestFileAction(ChonkyActions.KeyboardClickFile, {\n file: file,\n fileDisplayIndex: displayIndex,\n enterKey: event.enterKey,\n spaceKey: event.spaceKey,\n altKey: event.altKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey\n }));\n }, [dispatch, file, displayIndex]); // Prepare single/double click handlers\n\n var onSingleClick = useCallback(function (event) {\n return onMouseClick(event, 'single');\n }, [onMouseClick]);\n var onDoubleClick = useCallback(function (event) {\n return onMouseClick(event, 'double');\n }, [onMouseClick]);\n return {\n onSingleClick: onSingleClick,\n onDoubleClick: onDoubleClick,\n onKeyboardClick: onKeyboardClick\n };\n};\nvar CustomVisibilityState;\n(function (CustomVisibilityState) {\n CustomVisibilityState[CustomVisibilityState[\"Hidden\"] = 0] = \"Hidden\";\n CustomVisibilityState[CustomVisibilityState[\"Disabled\"] = 1] = \"Disabled\";\n CustomVisibilityState[CustomVisibilityState[\"Default\"] = 2] = \"Default\";\n CustomVisibilityState[CustomVisibilityState[\"Active\"] = 3] = \"Active\";\n})(CustomVisibilityState || (CustomVisibilityState = {}));\nvar useFileActionTrigger = function useFileActionTrigger(fileActionId) {\n var dispatch = useDispatch();\n var fileAction = useParamSelector(selectFileActionData, fileActionId);\n return useCallback(function () {\n return dispatch(thunkRequestFileAction(fileAction, undefined));\n }, [dispatch, fileAction]);\n};\nvar useFileActionProps = function useFileActionProps(fileActionId) {\n var _action$option;\n var parentFolder = useSelector(selectParentFolder);\n var fileViewConfig = useSelector(selectFileViewConfig);\n var sortActionId = useSelector(selectSortActionId);\n var sortOrder = useSelector(selectSortOrder);\n var action = useParamSelector(selectFileActionData, fileActionId); // @ts-ignore\n\n var optionValue = useParamSelector(selectOptionValue, action == null ? void 0 : (_action$option = action.option) == null ? void 0 : _action$option.id);\n var actionSelectionSize = useParamSelector(selectSelectedFilesForActionCount, fileActionId);\n var actionSelectionEmpty = actionSelectionSize === 0;\n return useMemo(function () {\n var _action$button$icon, _action$button;\n if (!action) return {\n icon: null,\n active: false,\n disabled: true\n };\n var icon = (_action$button$icon = (_action$button = action.button) == null ? void 0 : _action$button.icon) != null ? _action$button$icon : null;\n if (action.sortKeySelector) {\n if (sortActionId === action.id) {\n if (sortOrder === SortOrder.ASC) {\n icon = ChonkyIconName.sortAsc;\n } else {\n icon = ChonkyIconName.sortDesc;\n }\n } else {\n icon = ChonkyIconName.placeholder;\n }\n } else if (action.option) {\n if (optionValue) {\n icon = ChonkyIconName.toggleOn;\n } else {\n icon = ChonkyIconName.toggleOff;\n }\n }\n var isSortButtonAndCurrentSort = action.id === sortActionId;\n var isFileViewButtonAndCurrentView = action.fileViewConfig === fileViewConfig;\n var isOptionAndEnabled = action.option ? !!optionValue : false;\n var customDisabled = false;\n var customActive = false;\n if (action.customVisibility !== undefined) {\n customDisabled = action.customVisibility() === CustomVisibilityState.Disabled;\n customActive = action.customVisibility() === CustomVisibilityState.Active;\n }\n var active = isSortButtonAndCurrentSort || isFileViewButtonAndCurrentView || isOptionAndEnabled || customActive;\n var disabled = !!action.requiresSelection && actionSelectionEmpty || customDisabled;\n if (action.id === ChonkyActions.OpenParentFolder.id) {\n // We treat `open_parent_folder` file action as a special case as it\n // requires the parent folder to be present to work...\n disabled = disabled || !FileHelper.isOpenable(parentFolder);\n }\n return {\n icon: icon,\n active: active,\n disabled: disabled\n };\n }, [parentFolder, fileViewConfig, sortActionId, sortOrder, action, optionValue, actionSelectionEmpty]);\n};\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ToolbarButton = /*#__PURE__*/React.memo(function (props) {\n var _c;\n var externalClassName = props.className,\n text = props.text,\n tooltip = props.tooltip,\n active = props.active,\n icon = props.icon,\n iconOnly = props.iconOnly,\n onClick = props.onClick,\n disabled = props.disabled,\n dropdown = props.dropdown;\n var classes = useStyles$3();\n var ChonkyIcon = useContext(ChonkyIconContext);\n var iconComponent = icon || iconOnly ? React.createElement(\"div\", {\n className: iconOnly ? '' : classes.iconWithText\n }, React.createElement(ChonkyIcon, {\n icon: icon ? icon : ChonkyIconName.fallbackIcon,\n fixedWidth: true\n })) : null;\n var className = c((_c = {}, _c[externalClassName != null ? externalClassName : ''] = true, _c[classes.baseButton] = true, _c[classes.iconOnlyButton] = iconOnly, _c[classes.activeButton] = !!active, _c));\n return React.createElement(Button, {\n className: className,\n onClick: onClick,\n title: tooltip ? tooltip : text,\n disabled: disabled || !onClick\n }, iconComponent, text && !iconOnly && React.createElement(\"span\", null, text), dropdown && React.createElement(\"div\", {\n className: classes.iconDropdown\n }, React.createElement(ChonkyIcon, {\n icon: icon ? icon : ChonkyIconName.dropdown,\n fixedWidth: true\n })));\n});\nvar useStyles$3 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n baseButton: {\n fontSize: important(theme.toolbar.fontSize),\n textTransform: important('none'),\n letterSpacing: important(0),\n minWidth: important('auto'),\n lineHeight: theme.toolbar.lineHeight,\n height: theme.toolbar.size,\n paddingBottom: important(0),\n paddingTop: important(0)\n },\n iconWithText: {\n marginRight: 8\n },\n iconOnlyButton: {\n width: theme.toolbar.size,\n textAlign: 'center'\n },\n iconDropdown: {\n fontSize: '0.7em',\n marginLeft: 2,\n marginTop: 1\n },\n activeButton: {\n color: important(theme.colors.textActive)\n }\n };\n});\nvar SmartToolbarButton = /*#__PURE__*/React.memo(function (props) {\n var fileActionId = props.fileActionId;\n var action = useParamSelector(selectFileActionData, fileActionId);\n var triggerAction = useFileActionTrigger(fileActionId);\n var _useFileActionProps = useFileActionProps(fileActionId),\n icon = _useFileActionProps.icon,\n active = _useFileActionProps.active,\n disabled = _useFileActionProps.disabled;\n var _useLocalizedFileActi = useLocalizedFileActionStrings(action),\n buttonName = _useLocalizedFileActi.buttonName,\n buttonTooltip = _useLocalizedFileActi.buttonTooltip;\n if (!action) return null;\n var button = action.button;\n if (!button) return null;\n if (action.customVisibility !== undefined && action.customVisibility() === CustomVisibilityState.Hidden) return null;\n return React.createElement(ToolbarButton, {\n text: buttonName,\n tooltip: buttonTooltip,\n icon: icon,\n iconOnly: button.iconOnly,\n active: active,\n onClick: triggerAction,\n disabled: disabled\n });\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FolderChainButton = /*#__PURE__*/React.memo(function (_ref) {\n var _c;\n var first = _ref.first,\n current = _ref.current,\n item = _ref.item;\n var file = item.file,\n disabled = item.disabled,\n onClick = item.onClick;\n var _useFileDrop = useFileDrop({\n file: file,\n forceDisableDrop: !file || current\n }),\n dndIsOver = _useFileDrop.dndIsOver,\n dndCanDrop = _useFileDrop.dndCanDrop,\n drop = _useFileDrop.drop;\n var dndState = useMemo(function () {\n return {\n dndIsOver: dndIsOver,\n dndCanDrop: dndCanDrop,\n dndIsDragging: false\n };\n }, [dndCanDrop, dndIsOver]);\n useDndHoverOpen(file, dndState);\n var dndIconName = useDndIcon(dndState);\n var ChonkyIcon = useContext(ChonkyIconContext);\n var classes = useStyles$4(dndState);\n var className = c((_c = {}, _c[classes.baseBreadcrumb] = true, _c[classes.disabledBreadcrumb] = disabled, _c[classes.currentBreadcrumb] = current, _c));\n var text = file ? file.name : 'Loading...';\n var icon = first && (file == null ? void 0 : file.folderChainIcon) === undefined ? ChonkyIconName.folder : file == null ? void 0 : file.folderChainIcon;\n return React.createElement(\"div\", {\n className: classes.buttonContainer,\n ref: file ? drop : null\n }, file && dndIconName && React.createElement(\"div\", {\n className: classes.dndIndicator\n }, React.createElement(ChonkyIcon, {\n icon: dndIconName,\n fixedWidth: true\n })), React.createElement(ToolbarButton, {\n icon: icon,\n className: className,\n text: text,\n disabled: disabled,\n onClick: onClick\n }));\n});\nvar useStyles$4 = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n buttonContainer: {\n position: 'relative'\n },\n baseBreadcrumb: {\n color: function color(dndState) {\n var color = theme.palette.text.primary;\n if (dndState.dndIsOver) {\n color = dndState.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor;\n }\n return important(color);\n }\n },\n disabledBreadcrumb: {\n // Constant function here is on purpose. Without the function, the color here\n // does not override the `baseBreadcrumb` color from above.\n color: function color() {\n return important(theme.palette.text.disabled);\n }\n },\n currentBreadcrumb: {\n textDecoration: important('underline')\n },\n dndIndicator: {\n color: function color(dndState) {\n return dndState.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor;\n },\n backgroundColor: function backgroundColor(dndState) {\n return dndState.dndCanDrop ? theme.dnd.canDropMask : theme.dnd.cannotDropMask;\n },\n lineHeight: \"calc(\" + theme.toolbar.lineHeight + \" - 6px)\",\n transform: 'translateX(-50%) translateY(-50%)',\n borderRadius: theme.toolbar.buttonRadius,\n height: theme.toolbar.size - 6,\n width: theme.toolbar.size - 6,\n boxSizing: 'border-box',\n position: 'absolute',\n textAlign: 'center',\n left: '50%',\n top: '50%',\n zIndex: 5\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FileNavbar = /*#__PURE__*/React.memo(function () {\n var classes = useStyles$5();\n var folderChainItems = useFolderChainItems();\n var folderChainComponents = useMemo(function () {\n var components = [];\n for (var i = 0; i < folderChainItems.length; ++i) {\n var key = \"folder-chain-\" + i;\n var component = React.createElement(FolderChainButton, {\n key: key,\n first: i === 0,\n current: i === folderChainItems.length - 1,\n item: folderChainItems[i]\n });\n components.push(component);\n }\n return components;\n }, [folderChainItems]);\n return React.createElement(Box, {\n className: classes.navbarWrapper\n }, React.createElement(Box, {\n className: classes.navbarContainer\n }, React.createElement(SmartToolbarButton, {\n fileActionId: ChonkyActions.OpenParentFolder.id\n }), React.createElement(Breadcrumbs, {\n className: classes.navbarBreadcrumbs,\n classes: {\n separator: classes.separator\n }\n }, folderChainComponents)));\n});\nvar useStyles$5 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n navbarWrapper: {\n paddingBottom: theme.margins.rootLayoutMargin\n },\n navbarContainer: {\n display: 'flex'\n },\n upDirectoryButton: {\n fontSize: important(theme.toolbar.fontSize),\n height: theme.toolbar.size,\n width: theme.toolbar.size,\n padding: '0px !important'\n },\n navbarBreadcrumbs: {\n fontSize: important(theme.toolbar.fontSize),\n flexGrow: 100\n },\n separator: {\n marginRight: important(4),\n marginLeft: important(4)\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ToolbarDropdownButton = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _c;\n var text = props.text,\n active = props.active,\n icon = props.icon,\n onClick = props.onClick,\n disabled = props.disabled;\n var classes = useStyles$6();\n var ChonkyIcon = useContext(ChonkyIconContext);\n var className = c((_c = {}, _c[classes.baseButton] = true, _c[classes.activeButton] = active, _c));\n return React.createElement(MenuItem, {\n ref: ref,\n className: className,\n onClick: onClick,\n disabled: disabled\n }, icon && React.createElement(ListItemIcon, {\n className: classes.icon\n }, React.createElement(ChonkyIcon, {\n icon: icon,\n fixedWidth: true\n })), React.createElement(ListItemText, {\n primaryTypographyProps: {\n className: classes.text\n }\n }, text));\n});\nvar useStyles$6 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n baseButton: {\n lineHeight: important(theme.toolbar.lineHeight),\n height: important(theme.toolbar.size),\n minHeight: important('auto'),\n minWidth: important('auto'),\n padding: important(20)\n },\n icon: {\n fontSize: important(theme.toolbar.fontSize),\n minWidth: important('auto'),\n color: important('inherit'),\n marginRight: 8\n },\n text: {\n fontSize: important(theme.toolbar.fontSize)\n },\n activeButton: {\n color: important(theme.colors.textActive)\n }\n };\n});\nvar SmartToolbarDropdownButton = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var fileActionId = props.fileActionId,\n onClickFollowUp = props.onClickFollowUp;\n var action = useParamSelector(selectFileActionData, fileActionId);\n var triggerAction = useFileActionTrigger(fileActionId);\n var _useFileActionProps = useFileActionProps(fileActionId),\n icon = _useFileActionProps.icon,\n active = _useFileActionProps.active,\n disabled = _useFileActionProps.disabled;\n var _useLocalizedFileActi = useLocalizedFileActionStrings(action),\n buttonName = _useLocalizedFileActi.buttonName; // Combine external click handler with internal one\n\n var handleClick = useCallback(function () {\n triggerAction();\n if (onClickFollowUp) onClickFollowUp();\n }, [onClickFollowUp, triggerAction]);\n if (!action) return null;\n var button = action.button;\n if (!button) return null;\n if (action.customVisibility !== undefined && action.customVisibility() === CustomVisibilityState.Hidden) return null;\n return React.createElement(ToolbarDropdownButton, {\n ref: ref,\n text: buttonName,\n icon: icon,\n onClick: handleClick,\n active: active,\n disabled: disabled\n });\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ToolbarDropdown = /*#__PURE__*/React.memo(function (props) {\n var name = props.name,\n fileActionIds = props.fileActionIds;\n var _React$useState = React.useState(null),\n anchor = _React$useState[0],\n setAnchor = _React$useState[1];\n var handleClick = useCallback(function (event) {\n return setAnchor(event.currentTarget);\n }, [setAnchor]);\n var handleClose = useCallback(function () {\n return setAnchor(null);\n }, [setAnchor]);\n var menuItemComponents = useMemo(function () {\n return fileActionIds.map(function (id) {\n return React.createElement(SmartToolbarDropdownButton, {\n key: \"menu-item-\" + id,\n fileActionId: id,\n onClickFollowUp: handleClose\n });\n });\n }, [fileActionIds, handleClose]);\n var localizedName = useLocalizedFileActionGroup(name);\n var classes = useStyles$7();\n return React.createElement(React.Fragment, null, React.createElement(ToolbarButton, {\n text: localizedName,\n onClick: handleClick,\n dropdown: true\n }), React.createElement(Menu, {\n autoFocus: true,\n keepMounted: true,\n elevation: 2,\n anchorEl: anchor,\n onClose: handleClose,\n open: Boolean(anchor),\n transitionDuration: 150,\n classes: {\n list: classes.dropdownList\n }\n }, menuItemComponents));\n});\nvar useStyles$7 = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n dropdownList: {\n paddingBottom: important(0),\n paddingTop: important(0)\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ToolbarInfo = /*#__PURE__*/React.memo(function () {\n var classes = useStyles$8();\n var displayFileIds = useSelector(selectors.getDisplayFileIds);\n var selectionSize = useSelector(selectSelectionSize);\n var hiddenCount = useSelector(selectHiddenFileCount);\n var intl = useIntl();\n var fileCountString = intl.formatMessage({\n id: getI18nId(I18nNamespace.Toolbar, 'visibleFileCount'),\n defaultMessage: \"{fileCount, plural,\\n =0 {# items}\\n one {# item}\\n other {# items}\\n }\"\n }, {\n fileCount: displayFileIds.length\n });\n var selectedString = intl.formatMessage({\n id: getI18nId(I18nNamespace.Toolbar, 'selectedFileCount'),\n defaultMessage: \"{fileCount, plural,\\n =0 {}\\n other {# selected}\\n }\"\n }, {\n fileCount: selectionSize\n });\n var hiddenString = intl.formatMessage({\n id: getI18nId(I18nNamespace.Toolbar, 'hiddenFileCount'),\n defaultMessage: \"{fileCount, plural,\\n =0 {}\\n other {# hidden}\\n }\"\n }, {\n fileCount: hiddenCount\n });\n return React.createElement(\"div\", {\n className: classes.infoContainer\n }, React.createElement(Typography, {\n className: classes.infoText,\n variant: \"body1\"\n }, fileCountString, (selectedString || hiddenString) && React.createElement(\"span\", {\n className: classes.extraInfoSpan\n }, \"(\", React.createElement(\"span\", {\n className: classes.selectionSizeText\n }, selectedString), selectedString && hiddenString && ', ', React.createElement(\"span\", {\n className: classes.hiddenCountText\n }, hiddenString), \")\")));\n});\nvar useStyles$8 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n infoContainer: {\n height: theme.toolbar.size,\n display: 'flex'\n },\n infoText: {\n lineHeight: important(theme.toolbar.lineHeight),\n fontSize: important(theme.toolbar.fontSize),\n marginLeft: important(12),\n height: theme.toolbar.size\n },\n extraInfoSpan: {\n marginRight: important(8),\n marginLeft: important(8),\n opacity: 0.8\n },\n selectionSizeText: {\n color: theme.colors.textActive\n },\n hiddenCountText: {}\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ToolbarSearch = /*#__PURE__*/React.memo(function () {\n var intl = useIntl();\n var searchPlaceholderString = intl.formatMessage({\n id: getI18nId(I18nNamespace.Toolbar, 'searchPlaceholder'),\n defaultMessage: 'Search'\n });\n var classes = useStyles$9();\n var ChonkyIcon = useContext(ChonkyIconContext);\n var searchInputRef = useRef();\n var dispatch = useDispatch();\n var reduxSearchString = useSelector(selectSearchString);\n var _useState = useState(reduxSearchString),\n localSearchString = _useState[0],\n setLocalSearchString = _useState[1];\n var _useDebounce = useDebounce(localSearchString, 300),\n debouncedLocalSearchString = _useDebounce[0];\n var _useState2 = useState(false),\n showLoadingIndicator = _useState2[0],\n setShowLoadingIndicator = _useState2[1];\n useEffect(function () {\n dispatch(reduxActions.setFocusSearchInput(function () {\n if (searchInputRef.current) searchInputRef.current.focus();\n }));\n return function () {\n dispatch(reduxActions.setFocusSearchInput(null));\n };\n }, [dispatch]);\n useEffect(function () {\n setShowLoadingIndicator(false);\n dispatch(reduxActions.setSearchString(debouncedLocalSearchString));\n }, [debouncedLocalSearchString, dispatch]);\n var handleChange = useCallback(function (event) {\n setShowLoadingIndicator(true);\n setLocalSearchString(event.currentTarget.value);\n }, []);\n var handleKeyUp = useCallback(function (event) {\n // Remove focus from the search input field when user presses escape.\n // Note: We use KeyUp instead of KeyPress because some browser plugins can\n // intercept KeyPress events with Escape key.\n // @see https://stackoverflow.com/a/37461974\n if (event.key === 'Escape') {\n setLocalSearchString('');\n dispatch(reduxActions.setSearchString(''));\n if (searchInputRef.current) searchInputRef.current.blur();\n }\n }, [dispatch]);\n return React.createElement(TextField, {\n className: classes.searchFieldContainer,\n size: \"small\",\n variant: \"outlined\",\n value: localSearchString,\n placeholder: searchPlaceholderString,\n onChange: handleChange,\n inputRef: searchInputRef,\n InputProps: {\n onKeyUp: handleKeyUp,\n startAdornment: React.createElement(InputAdornment, {\n className: classes.searchIcon,\n position: \"start\"\n }, React.createElement(ChonkyIcon, {\n icon: showLoadingIndicator ? ChonkyIconName.loading : ChonkyIconName.search,\n spin: showLoadingIndicator\n })),\n className: classes.searchFieldInput\n },\n inputProps: {\n className: classes.searchFieldInputInner\n }\n });\n});\nvar useStyles$9 = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n searchFieldContainer: {\n height: theme.toolbar.size,\n width: 150\n },\n searchIcon: {\n fontSize: '0.9em',\n opacity: 0.75\n },\n searchFieldInput: {\n lineHeight: important(0),\n padding: important(0),\n margin: important(0),\n fontSize: important(theme.toolbar.fontSize),\n borderRadius: theme.toolbar.buttonRadius,\n height: theme.toolbar.size - 4,\n paddingLeft: important(8),\n marginTop: 2\n },\n searchFieldInputInner: {\n lineHeight: important(theme.toolbar.size - 4 + \"px\"),\n fontSize: important(theme.toolbar.fontSize),\n height: important(theme.toolbar.size - 4),\n padding: important([0, 8, 0, 0]),\n margin: important(0),\n '-webkit-appearance': 'none'\n }\n };\n});\nvar FileToolbar = /*#__PURE__*/React.memo(function () {\n var classes = useStyles$a();\n var toolbarItems = useSelector(selectToolbarItems);\n var toolbarItemComponents = useMemo(function () {\n var components = [];\n for (var i = 0; i < toolbarItems.length; ++i) {\n var item = toolbarItems[i];\n var key = \"toolbar-item-\" + (typeof item === 'string' ? item : item.name);\n var component = typeof item === 'string' ? React.createElement(SmartToolbarButton, {\n key: key,\n fileActionId: item\n }) : React.createElement(ToolbarDropdown, {\n key: key,\n name: item.name,\n fileActionIds: item.fileActionIds\n });\n components.push(component);\n }\n return components;\n }, [toolbarItems]);\n return React.createElement(\"div\", {\n className: classes.toolbarWrapper\n }, React.createElement(\"div\", {\n className: classes.toolbarContainer\n }, React.createElement(\"div\", {\n className: classes.toolbarLeft\n }, React.createElement(ToolbarSearch, null), React.createElement(ToolbarInfo, null)), React.createElement(\"div\", {\n className: classes.toolbarRight\n }, toolbarItemComponents)));\n});\nvar useStyles$a = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n toolbarWrapper: {},\n toolbarContainer: {\n flexWrap: 'wrap-reverse',\n display: 'flex'\n },\n toolbarLeft: {\n paddingBottom: theme.margins.rootLayoutMargin,\n flexWrap: 'nowrap',\n flexGrow: 10000,\n display: 'flex'\n },\n toolbarLeftFiller: {\n flexGrow: 10000\n },\n toolbarRight: {\n paddingBottom: theme.margins.rootLayoutMargin,\n flexWrap: 'nowrap',\n display: 'flex'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FileListEmpty = function FileListEmpty(props) {\n var width = props.width,\n height = props.height;\n var classes = useStyles$b();\n var ChonkyIcon = useContext(ChonkyIconContext);\n var style = {\n width: width,\n height: height\n };\n var intl = useIntl();\n var emptyString = intl.formatMessage({\n id: getI18nId(I18nNamespace.FileList, 'nothingToShow'),\n defaultMessage: 'Nothing to show'\n });\n return React.createElement(\"div\", {\n className: classes.fileListEmpty,\n style: style\n }, React.createElement(\"div\", {\n className: classes.fileListEmptyContent\n }, React.createElement(ChonkyIcon, {\n icon: ChonkyIconName.folderOpen\n }), \"\\xA0 \", emptyString));\n};\nvar useStyles$b = /*#__PURE__*/makeGlobalChonkyStyles(function (theme) {\n return {\n fileListEmpty: {\n color: theme.palette.text.disabled,\n position: 'relative',\n textAlign: 'center',\n fontSize: '1.2em'\n },\n fileListEmptyContent: {\n transform: 'translateX(-50%) translateY(-50%)',\n position: 'absolute',\n left: '50%',\n top: '50%'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar useClickHandler = function useClickHandler(onSingleClick, onDoubleClick) {\n var doubleClickDelay = useSelector(selectDoubleClickDelay);\n var counter = useRef({\n clickCount: 0,\n clickTimeout: null\n });\n return useCallback(function (event) {\n var mouseClickEvent = {\n altKey: event.altKey,\n ctrlKey: event.ctrlKey || event.metaKey,\n shiftKey: event.shiftKey\n };\n counter.current.clickCount++;\n if (counter.current.clickCount === 1) {\n if (onSingleClick) {\n event.preventDefault();\n onSingleClick(mouseClickEvent);\n }\n counter.current.clickCount = 1; // @ts-ignore\n\n counter.current.clickTimeout = setTimeout(function () {\n return counter.current.clickCount = 0;\n }, doubleClickDelay);\n } else if (counter.current.clickCount === 2) {\n if (onDoubleClick) {\n event.preventDefault();\n onDoubleClick(mouseClickEvent);\n }\n if (typeof counter.current.clickTimeout === 'number') {\n clearTimeout(counter.current.clickTimeout);\n counter.current.clickTimeout = null;\n counter.current.clickCount = 0;\n }\n }\n }, [doubleClickDelay, onSingleClick, onDoubleClick, counter]);\n};\nvar useKeyDownHandler = function useKeyDownHandler(onKeyboardClick) {\n return useCallback(function (event) {\n if (!onKeyboardClick) return;\n var keyboardClickEvent = {\n enterKey: event.nativeEvent.code === 'Enter',\n spaceKey: event.nativeEvent.code === 'Space',\n altKey: event.altKey,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey\n };\n if (keyboardClickEvent.spaceKey || keyboardClickEvent.enterKey) {\n event.preventDefault();\n event.stopPropagation();\n onKeyboardClick(keyboardClickEvent);\n }\n }, [onKeyboardClick]);\n};\nvar ClickableWrapper = function ClickableWrapper(props) {\n var children = props.children,\n WrapperTag = props.wrapperTag,\n passthroughProps = props.passthroughProps,\n onSingleClick = props.onSingleClick,\n onDoubleClick = props.onDoubleClick,\n onKeyboardClick = props.onKeyboardClick,\n setFocused = props.setFocused;\n var handleClick = useClickHandler(onSingleClick, onDoubleClick);\n var handleKeyDown = useKeyDownHandler(onKeyboardClick);\n var compProps = {\n onFocus: useCallback(function () {\n return setFocused && setFocused(true);\n }, [setFocused]),\n onBlur: useCallback(function () {\n return setFocused && setFocused(false);\n }, [setFocused])\n };\n if (onSingleClick || onDoubleClick || onKeyboardClick) {\n compProps.onClick = handleClick;\n compProps.onKeyDown = handleKeyDown;\n compProps.tabIndex = 0;\n }\n var mergedProps = _extends({}, compProps, passthroughProps);\n return React.createElement(WrapperTag, Object.assign({}, mergedProps), children);\n};\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FileEntryName = /*#__PURE__*/React.memo(function (_ref) {\n var file = _ref.file,\n className = _ref.className;\n var modifierIconComponents = useModifierIconComponents(file);\n var fileNameComponent = useFileNameComponent(file);\n var classes = useStyles$c();\n return React.createElement(\"span\", {\n className: className,\n title: file ? file.name : undefined\n }, modifierIconComponents.length > 0 && React.createElement(\"span\", {\n className: classes.modifierIcons\n }, modifierIconComponents), fileNameComponent);\n});\nFileEntryName.displayName = 'FileEntryName';\nvar useStyles$c = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n modifierIcons: {\n color: theme.palette.text.hint,\n position: 'relative',\n fontSize: '0.775em',\n paddingRight: 5\n }\n };\n});\nvar CompactEntry = /*#__PURE__*/React.memo(\n// @ts-ignore\nfunction (_ref) {\n var file = _ref.file,\n selected = _ref.selected,\n focused = _ref.focused;\n var entryState = useFileEntryState(file, selected, focused);\n var _useLocalizedFileEntr = useLocalizedFileEntryStrings(file),\n fileModDateString = _useLocalizedFileEntr.fileModDateString,\n fileSizeString = _useLocalizedFileEntr.fileSizeString;\n var classes = useStyles$d(entryState);\n var ChonkyIcon = useContext(ChonkyIconContext);\n var fileEntryHtmlProps = useFileEntryHtmlProps(file);\n return React.createElement(\"div\", Object.assign({\n className: classes.listFileEntry\n }, fileEntryHtmlProps), React.createElement(\"div\", {\n className: classes.listFileEntryIcon\n }, React.createElement(ChonkyIcon, {\n icon: entryState.icon,\n spin: entryState.iconSpin,\n fixedWidth: true\n })), React.createElement(\"div\", {\n className: classes.listFileEntryDescription\n }, React.createElement(\"div\", {\n className: classes.listFileEntryName,\n title: file ? file.name : undefined\n }, React.createElement(FileEntryName, {\n file: file\n })), React.createElement(\"div\", {\n className: classes.listFileEntryProperties\n }, React.createElement(\"div\", {\n className: classes.listFileEntryProperty\n }, file ? fileModDateString != null ? fileModDateString : React.createElement(\"span\", null, \"\\u2014\") : React.createElement(TextPlaceholder, {\n minLength: 5,\n maxLength: 15\n })), React.createElement(\"div\", {\n className: classes.listFileEntryProperty\n }, file ? fileSizeString != null ? fileSizeString : React.createElement(\"span\", null, \"\\u2014\") : React.createElement(TextPlaceholder, {\n minLength: 10,\n maxLength: 20\n })))), React.createElement(\"div\", {\n className: \"chonky-file-entry-outline\"\n }), React.createElement(\"div\", {\n className: \"chonky-file-entry-selection\"\n }));\n});\nvar useStyles$d = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n listFileEntry: {\n fontSize: theme.listFileEntry.fontSize,\n alignItems: 'center',\n position: 'relative',\n display: 'flex',\n height: '100%'\n },\n listFileEntryIcon: {\n backgroundColor: function backgroundColor(state) {\n return state.color;\n },\n boxShadow: 'inset rgba(255, 255, 255, 0.5) 0 0 0 999px',\n borderRadius: theme.listFileEntry.iconBorderRadius,\n fontSize: theme.listFileEntry.iconFontSize,\n color: '#fff',\n padding: 8\n },\n listFileEntryDescription: {\n flexDirection: 'column',\n display: 'flex',\n flexGrow: 1\n },\n listFileEntryName: {\n padding: [0, 8, 4, 8]\n },\n listFileEntryProperties: {\n fontSize: theme.listFileEntry.propertyFontSize,\n flexDirection: 'row',\n display: 'flex'\n },\n listFileEntryProperty: {\n padding: [0, 8],\n opacity: 0.4\n }\n };\n});\nvar DnDFileEntry = /*#__PURE__*/React.memo(function (_ref) {\n var file = _ref.file,\n children = _ref.children;\n var _useFileEntryDnD = useFileEntryDnD(file),\n drop = _useFileEntryDnD.drop,\n drag = _useFileEntryDnD.drag,\n dndState = _useFileEntryDnD.dndState;\n useDndHoverOpen(file, dndState);\n var classes = useStyles$e();\n return React.createElement(\"div\", {\n ref: drop,\n className: classes.fillParent\n }, React.createElement(\"div\", {\n ref: FileHelper.isDraggable(file) ? drag : null,\n className: classes.fillParent\n }, children(dndState)));\n});\nvar useStyles$e = /*#__PURE__*/makeLocalChonkyStyles(function () {\n return {\n fillParent: {\n height: '100%'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FileThumbnail = /*#__PURE__*/React.memo(function (props) {\n var className = props.className,\n thumbnailUrl = props.thumbnailUrl;\n var thumbnailStyle = thumbnailUrl ? {\n backgroundImage: \"url('\" + thumbnailUrl + \"')\"\n } : {};\n var classes = useStyles$f();\n return React.createElement(\"div\", {\n className: classnames([className, classes.fileThumbnail]),\n style: thumbnailStyle\n });\n});\nFileThumbnail.displayName = 'FileThumbnail';\nvar useStyles$f = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n fileThumbnail: {\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n backgroundSize: 'contain'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar GridEntryDndIndicator = /*#__PURE__*/React.memo(function (props) {\n var _c;\n var externalClassName = props.className,\n dndState = props.dndState;\n var dndIconName = useDndIcon(dndState);\n var classes = useStyles$g(dndState);\n var ChonkyIcon = useContext(ChonkyIconContext);\n if (!dndIconName) return null;\n var className = c((_c = {}, _c[classes.dndIndicator] = true, _c[externalClassName] = true, _c));\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(ChonkyIcon, {\n icon: dndIconName\n }));\n});\nvar useStyles$g = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n dndIndicator: {\n color: function color(dndState) {\n return dndState.dndIsOver ? dndState.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor : '#000';\n },\n boxSizing: 'border-box',\n position: 'absolute',\n fontSize: '1.2em',\n opacity: 0.6,\n padding: 6,\n '&:before': {\n borderBottom: '50px solid transparent',\n borderLeft: '50px solid #fff',\n position: 'absolute',\n content: '\"\"',\n zIndex: -1,\n left: 0,\n top: 0\n }\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar GridEntryPreviewFolder = /*#__PURE__*/React.memo(function (props) {\n var _c;\n var externalClassName = props.className,\n entryState = props.entryState,\n dndState = props.dndState;\n var folderClasses = useFolderStyles(entryState);\n var fileClasses = useFileStyles(entryState);\n var commonClasses = useCommonEntryStyles(entryState);\n var className = c((_c = {}, _c[folderClasses.previewFile] = true, _c[externalClassName || ''] = !!externalClassName, _c));\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(\"div\", {\n className: folderClasses.folderBackSideMid\n }, React.createElement(\"div\", {\n className: folderClasses.folderBackSideTop\n }), React.createElement(\"div\", {\n className: folderClasses.folderFrontSide\n }, React.createElement(GridEntryDndIndicator, {\n className: fileClasses.dndIndicator,\n dndState: dndState\n }), React.createElement(\"div\", {\n className: c([fileClasses.fileIcon, folderClasses.fileIcon])\n }, entryState.childrenCount), React.createElement(\"div\", {\n className: commonClasses.selectionIndicator\n }), React.createElement(FileThumbnail, {\n className: fileClasses.thumbnail,\n thumbnailUrl: entryState.thumbnailUrl\n }))));\n});\nGridEntryPreviewFolder.displayName = 'GridEntryPreviewFolder';\nvar useFolderStyles = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n previewFile: {\n borderRadius: theme.gridFileEntry.borderRadius,\n position: 'relative',\n overflow: 'hidden'\n },\n folderBackSideTop: {\n backgroundColor: function backgroundColor(state) {\n return state.color;\n },\n boxShadow: function boxShadow(state) {\n var color = theme.gridFileEntry.folderBackColorTint;\n if (state.focused) color = 'rgba(0, 0, 0, 0.3)';else if (state.selected) color = 'rgba(0, 153, 255, .4)';\n return \"inset \" + color + \" 0 0 0 999px\";\n },\n borderTopLeftRadius: theme.gridFileEntry.borderRadius,\n borderTopRightRadius: 10,\n position: 'absolute',\n right: '60%',\n height: 13,\n top: -10,\n left: 0,\n '&:after': {\n borderRightColor: theme.palette.background.paper,\n borderTopColor: theme.palette.background.paper,\n borderBottomColor: 'transparent',\n borderLeftColor: 'transparent',\n borderWidth: [0, 15, 10, 0],\n borderStyle: 'solid',\n position: 'absolute',\n display: 'block',\n content: '\"\"',\n right: 0,\n top: 0\n }\n },\n folderBackSideMid: {\n backgroundColor: function backgroundColor(state) {\n return state.color;\n },\n boxShadow: function boxShadow(state) {\n var color = theme.gridFileEntry.folderBackColorTint;\n if (state.focused) color = 'rgba(0, 0, 0, 0.3)';else if (state.selected) color = 'rgba(0, 153, 255, .4)';\n return \"inset \" + color + \" 0 0 0 999px\";\n },\n borderTopRightRadius: theme.gridFileEntry.borderRadius,\n position: 'absolute',\n bottom: 0,\n right: 0,\n left: 0,\n top: 10\n },\n folderFrontSide: {\n boxShadow: function boxShadow(state) {\n var shadows = [];\n if (state.focused) shadows.push('inset rgba(0, 0, 0, 1) 0 0 0 3px');\n if (state.selected) shadows.push('inset rgba(0, 153, 255, .65) 0 0 0 3px');\n shadows.push(\"inset \" + theme.gridFileEntry.folderFrontColorTint + \" 0 0 0 999px\");\n return shadows.join(', ');\n },\n backgroundColor: function backgroundColor(state) {\n return state.color;\n },\n borderRadius: theme.gridFileEntry.borderRadius,\n position: 'absolute',\n overflow: 'hidden',\n bottom: 0,\n right: 0,\n left: 0,\n top: 10\n },\n fileIcon: {\n fontSize: important(theme.gridFileEntry.childrenCountSize)\n }\n };\n});\nvar GridEntryPreviewFile = /*#__PURE__*/React.memo(function (props) {\n var _c2;\n var externalClassName = props.className,\n entryState = props.entryState,\n dndState = props.dndState;\n var fileClasses = useFileStyles(entryState);\n var commonClasses = useCommonEntryStyles(entryState);\n var ChonkyIcon = useContext(ChonkyIconContext);\n var className = c((_c2 = {}, _c2[fileClasses.previewFile] = true, _c2[externalClassName || ''] = !!externalClassName, _c2));\n return React.createElement(\"div\", {\n className: className\n }, React.createElement(GridEntryDndIndicator, {\n className: fileClasses.dndIndicator,\n dndState: dndState\n }), React.createElement(\"div\", {\n className: fileClasses.fileIcon\n }, React.createElement(ChonkyIcon, {\n icon: entryState.icon,\n spin: entryState.iconSpin\n })), React.createElement(\"div\", {\n className: commonClasses.selectionIndicator\n }), React.createElement(FileThumbnail, {\n className: fileClasses.thumbnail,\n thumbnailUrl: entryState.thumbnailUrl\n }));\n});\nGridEntryPreviewFile.displayName = 'GridEntryPreviewFile';\nvar useFileStyles = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n previewFile: {\n boxShadow: function boxShadow(state) {\n var shadows = [];\n if (state.selected) shadows.push('inset rgba(0,153,255, .65) 0 0 0 3px');\n if (state.focused) shadows.push('inset rgba(0, 0, 0, 1) 0 0 0 3px');\n shadows.push(\"inset \" + theme.gridFileEntry.fileColorTint + \" 0 0 0 999px\");\n return shadows.join(', ');\n },\n backgroundColor: function backgroundColor(state) {\n return state.color;\n },\n borderRadius: theme.gridFileEntry.borderRadius,\n position: 'relative',\n overflow: 'hidden'\n },\n dndIndicator: {\n zIndex: 14\n },\n fileIcon: {\n transform: 'translateX(-50%) translateY(-50%)',\n fontSize: theme.gridFileEntry.iconSize,\n opacity: function opacity(state) {\n return state.thumbnailUrl && !state.focused ? 0 : 1;\n },\n color: function color(state) {\n return state.focused ? theme.gridFileEntry.iconColorFocused : theme.gridFileEntry.iconColor;\n },\n position: 'absolute',\n left: '50%',\n zIndex: 12,\n top: '50%'\n },\n thumbnail: {\n borderRadius: theme.gridFileEntry.borderRadius,\n position: 'absolute',\n zIndex: 6,\n bottom: 5,\n right: 5,\n left: 5,\n top: 5\n }\n };\n});\nvar useCommonEntryStyles = /*#__PURE__*/makeLocalChonkyStyles(function () {\n return {\n selectionIndicator: {\n display: function display(state) {\n return state.selected ? 'block' : 'none';\n },\n background: 'repeating-linear-gradient(' + '45deg,' + 'rgba(0,153,255,.14),' + 'rgba(0,153,255,.14) 10px,' + 'rgba(0,153,255,.25) 0,' + 'rgba(0,153,255,.25) 20px' + ')',\n backgroundColor: 'rgba(0, 153, 255, .14)',\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 10\n },\n focusIndicator: {\n display: function display(state) {\n return state.focused ? 'block' : 'none';\n },\n boxShadow: 'inset rgba(0, 0, 0, 1) 0 0 0 2px',\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 11\n }\n };\n});\nvar GridEntry = /*#__PURE__*/React.memo(function (_ref) {\n var _c;\n var file = _ref.file,\n selected = _ref.selected,\n focused = _ref.focused,\n dndState = _ref.dndState;\n var isDirectory = FileHelper.isDirectory(file);\n var entryState = useFileEntryState(file, selected, focused);\n var classes = useFileEntryStyles(entryState);\n var fileEntryHtmlProps = useFileEntryHtmlProps(file);\n var entryClassName = c((_c = {}, _c[classes.gridFileEntry] = true, _c));\n return React.createElement(\"div\", Object.assign({\n className: entryClassName\n }, fileEntryHtmlProps), isDirectory ? React.createElement(GridEntryPreviewFolder, {\n className: classes.gridFileEntryPreview,\n entryState: entryState,\n dndState: dndState\n }) : React.createElement(GridEntryPreviewFile, {\n className: classes.gridFileEntryPreview,\n entryState: entryState,\n dndState: dndState\n }), React.createElement(\"div\", {\n className: classes.gridFileEntryNameContainer\n }, React.createElement(FileEntryName, {\n className: classes.gridFileEntryName,\n file: file\n })));\n});\nGridEntry.displayName = 'GridEntry';\nvar useFileEntryStyles = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n gridFileEntry: {\n flexDirection: 'column',\n display: 'flex',\n height: '100%'\n },\n gridFileEntryPreview: {\n flexGrow: 1\n },\n gridFileEntryNameContainer: {\n fontSize: theme.gridFileEntry.fontSize,\n wordBreak: 'break-word',\n textAlign: 'center',\n paddingTop: 5\n },\n gridFileEntryName: {\n backgroundColor: function backgroundColor(state) {\n return state.selected ? 'rgba(0,153,255, .25)' : 'transparent';\n },\n textDecoration: function textDecoration(state) {\n return state.focused ? 'underline' : 'none';\n },\n borderRadius: 3,\n padding: [2, 4]\n }\n };\n});\nvar ListEntry = /*#__PURE__*/React.memo(function (_ref) {\n var file = _ref.file,\n selected = _ref.selected,\n focused = _ref.focused,\n dndState = _ref.dndState;\n var entryState = useFileEntryState(file, selected, focused);\n var dndIconName = useDndIcon(dndState);\n var _useLocalizedFileEntr = useLocalizedFileEntryStrings(file),\n fileModDateString = _useLocalizedFileEntr.fileModDateString,\n fileSizeString = _useLocalizedFileEntr.fileSizeString;\n var styleState = useMemo(function () {\n return {\n entryState: entryState,\n dndState: dndState\n };\n }, [dndState, entryState]);\n var classes = useStyles$h(styleState);\n var commonClasses = useCommonEntryStyles(entryState);\n var ChonkyIcon = useContext(ChonkyIconContext);\n var fileEntryHtmlProps = useFileEntryHtmlProps(file);\n return React.createElement(\"div\", Object.assign({\n className: classes.listFileEntry\n }, fileEntryHtmlProps), React.createElement(\"div\", {\n className: commonClasses.focusIndicator\n }), React.createElement(\"div\", {\n className: c([commonClasses.selectionIndicator, classes.listFileEntrySelection])\n }), React.createElement(\"div\", {\n className: classes.listFileEntryIcon\n }, React.createElement(ChonkyIcon, {\n icon: dndIconName != null ? dndIconName : entryState.icon,\n spin: dndIconName ? false : entryState.iconSpin,\n fixedWidth: true\n })), React.createElement(\"div\", {\n className: classes.listFileEntryName,\n title: file ? file.name : undefined\n }, React.createElement(FileEntryName, {\n file: file\n })), React.createElement(\"div\", {\n className: classes.listFileEntryProperty\n }, file ? fileModDateString != null ? fileModDateString : React.createElement(\"span\", null, \"\\u2014\") : React.createElement(TextPlaceholder, {\n minLength: 5,\n maxLength: 15\n })), React.createElement(\"div\", {\n className: classes.listFileEntryProperty\n }, file ? fileSizeString != null ? fileSizeString : React.createElement(\"span\", null, \"\\u2014\") : React.createElement(TextPlaceholder, {\n minLength: 10,\n maxLength: 20\n })));\n});\nvar useStyles$h = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n listFileEntry: {\n boxShadow: \"inset \" + theme.palette.divider + \" 0 -1px 0\",\n fontSize: theme.listFileEntry.fontSize,\n color: function color(_ref2) {\n var dndState = _ref2.dndState;\n return dndState.dndIsOver ? dndState.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor : 'inherit';\n },\n alignItems: 'center',\n position: 'relative',\n display: 'flex',\n height: '100%'\n },\n listFileEntrySelection: {\n opacity: 0.6\n },\n listFileEntryIcon: {\n color: function color(_ref3) {\n var entryState = _ref3.entryState,\n dndState = _ref3.dndState;\n return dndState.dndIsOver ? dndState.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor : entryState.color;\n },\n fontSize: theme.listFileEntry.iconFontSize,\n boxSizing: 'border-box',\n padding: [2, 4],\n zIndex: 20\n },\n listFileEntryName: {\n textOverflow: 'ellipsis',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n flex: '1 1 300px',\n paddingLeft: 8,\n zIndex: 20\n },\n listFileEntryProperty: {\n fontSize: theme.listFileEntry.propertyFontSize,\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n flex: '0 1 150px',\n padding: [2, 8],\n zIndex: 20\n }\n };\n});\nvar disabledDndState = {\n dndIsDragging: false,\n dndIsOver: false,\n dndCanDrop: false\n};\nvar SmartFileEntry = /*#__PURE__*/React.memo(function (_ref) {\n var fileId = _ref.fileId,\n displayIndex = _ref.displayIndex,\n fileViewMode = _ref.fileViewMode;\n var classes = useStyles$i(); // Basic properties\n\n var file = useParamSelector(selectFileData, fileId);\n var selected = useParamSelector(selectIsFileSelected, fileId);\n var dndDisabled = useSelector(selectIsDnDDisabled); // Clickable wrapper properties\n\n var fileClickHandlers = useFileClickHandlers(file, displayIndex);\n var _useState = useState(false),\n focused = _useState[0],\n setFocused = _useState[1];\n var clickableWrapperProps = _extends({\n wrapperTag: 'div',\n passthroughProps: {\n className: classes.fileEntryClickableWrapper\n }\n }, FileHelper.isClickable(file) ? fileClickHandlers : undefined, {\n setFocused: setFocused\n }); // File entry properties\n\n var fileEntryProps = {\n file: file,\n selected: selected,\n focused: focused\n };\n var EntryComponent;\n if (fileViewMode === FileViewMode.List) EntryComponent = ListEntry;else if (fileViewMode === FileViewMode.Compact) EntryComponent = CompactEntry;else EntryComponent = GridEntry;\n return dndDisabled ? React.createElement(ClickableWrapper, Object.assign({}, clickableWrapperProps), React.createElement(EntryComponent, Object.assign({}, fileEntryProps, {\n dndState: disabledDndState\n }))) : React.createElement(DnDFileEntry, {\n file: file\n }, function (dndState) {\n return React.createElement(ClickableWrapper, Object.assign({}, clickableWrapperProps), React.createElement(EntryComponent, Object.assign({}, fileEntryProps, {\n dndState: dndState\n })));\n });\n});\nSmartFileEntry.displayName = 'SmartFileEntry';\nvar useStyles$i = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n fileEntryClickableWrapper: {\n // We disable default browser outline because Chonky provides its own outline\n // (which doesn't compromise accessibility, hopefully)\n outline: 'none !important',\n position: 'relative',\n height: '100%'\n }\n };\n});\nvar isMobileDevice = function isMobileDevice() {\n // noinspection JSDeprecatedSymbols\n return typeof window.orientation !== 'undefined' || navigator.userAgent.indexOf('IEMobile') !== -1;\n};\nvar getGridConfig = function getGridConfig(width, fileCount, viewConfig, isMobileBreakpoint) {\n var gutter = isMobileBreakpoint ? 5 : 8;\n var scrollbar = isMobileDevice() ? 0 : 18;\n var columnCount;\n var columnWidth;\n if (isMobileBreakpoint) {\n columnCount = 2;\n columnWidth = (width - gutter - scrollbar) / columnCount;\n } else {\n columnWidth = viewConfig.entryWidth;\n columnCount = Math.max(1, Math.floor((width - scrollbar) / (columnWidth + gutter)));\n }\n var rowCount = Math.ceil(fileCount / columnCount);\n return {\n rowCount: rowCount,\n columnCount: columnCount,\n gutter: gutter,\n rowHeight: viewConfig.entryHeight,\n columnWidth: columnWidth\n };\n};\nvar GridContainer = /*#__PURE__*/React.memo(function (props) {\n var width = props.width,\n height = props.height;\n var viewConfig = useSelector(selectFileViewConfig);\n var displayFileIds = useSelector(selectors.getDisplayFileIds);\n var fileCount = useMemo(function () {\n return displayFileIds.length;\n }, [displayFileIds]);\n var gridRef = useRef();\n var isMobileBreakpoint = useIsMobileBreakpoint(); // Whenever the grid config changes at runtime, we call a method on the\n // `VariableSizeGrid` handle to reset column width/row height cache.\n // !!! Note that we deliberately update the `gridRef` firsts and update the React\n // state AFTER that. This is needed to avoid file entries jumping up/down.\n\n var _useState = useState(getGridConfig(width, fileCount, viewConfig, isMobileBreakpoint)),\n gridConfig = _useState[0],\n setGridConfig = _useState[1];\n var gridConfigRef = useRef(gridConfig);\n useEffect(function () {\n var oldConf = gridConfigRef.current;\n var newConf = getGridConfig(width, fileCount, viewConfig, isMobileBreakpoint);\n gridConfigRef.current = newConf;\n if (gridRef.current) {\n if (oldConf.rowCount !== newConf.rowCount) {\n gridRef.current.resetAfterRowIndex(Math.min(oldConf.rowCount, newConf.rowCount) - 1);\n }\n if (oldConf.columnCount !== newConf.columnCount) {\n gridRef.current.resetAfterColumnIndex(Math.min(oldConf.columnCount, newConf.rowCount) - 1);\n }\n if (oldConf.columnWidth !== newConf.columnWidth) {\n gridRef.current.resetAfterIndices({\n columnIndex: 0,\n rowIndex: 0\n });\n }\n }\n setGridConfig(newConf);\n }, [setGridConfig, gridConfigRef, isMobileBreakpoint, width, viewConfig, fileCount]);\n var sizers = useMemo(function () {\n var gc = gridConfigRef;\n return {\n getColumnWidth: function getColumnWidth(index) {\n return gc.current.columnWidth + (index === gc.current.columnCount - 1 ? 0 : gc.current.gutter);\n },\n getRowHeight: function getRowHeight(index) {\n return gc.current.rowHeight + (index === gc.current.rowCount - 1 ? 0 : gc.current.gutter);\n }\n };\n }, [gridConfigRef]);\n var displayFileIdsRef = useInstanceVariable(useSelector(selectors.getDisplayFileIds));\n var getItemKey = useCallback(function (data) {\n var _displayFileIdsRef$cu;\n var index = data.rowIndex * gridConfigRef.current.columnCount + data.columnIndex;\n return (_displayFileIdsRef$cu = displayFileIdsRef.current[index]) != null ? _displayFileIdsRef$cu : \"loading-file-\" + index;\n }, [gridConfigRef, displayFileIdsRef]);\n var cellRenderer = useCallback(function (data) {\n var gc = gridConfigRef;\n var index = data.rowIndex * gc.current.columnCount + data.columnIndex;\n var fileId = displayFileIds[index];\n if (displayFileIds[index] === undefined) return null;\n var styleWithGutter = _extends({}, data.style, {\n paddingRight: data.columnIndex === gc.current.columnCount - 1 ? 0 : gc.current.gutter,\n paddingBottom: data.rowIndex === gc.current.rowCount - 1 ? 0 : gc.current.gutter,\n boxSizing: 'border-box'\n });\n return React.createElement(\"div\", {\n style: styleWithGutter\n }, React.createElement(SmartFileEntry, {\n fileId: fileId != null ? fileId : null,\n displayIndex: index,\n fileViewMode: viewConfig.mode\n }));\n }, [displayFileIds, viewConfig.mode]);\n var classes = useStyles$j();\n var gridComponent = useMemo(function () {\n return React.createElement(VariableSizeGrid, {\n ref: gridRef,\n className: classes.gridContainer,\n estimatedRowHeight: gridConfig.rowHeight + gridConfig.gutter,\n rowHeight: sizers.getRowHeight,\n estimatedColumnWidth: gridConfig.columnWidth + gridConfig.gutter,\n columnWidth: sizers.getColumnWidth,\n columnCount: gridConfig.columnCount,\n height: height,\n rowCount: gridConfig.rowCount,\n width: width,\n itemKey: getItemKey\n }, cellRenderer);\n }, [classes.gridContainer, gridConfig.rowHeight, gridConfig.gutter, gridConfig.columnWidth, gridConfig.columnCount, gridConfig.rowCount, sizers.getRowHeight, sizers.getColumnWidth, height, width, getItemKey, cellRenderer]);\n return gridComponent;\n});\nvar useStyles$j = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n gridContainer: {}\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar ListContainer = /*#__PURE__*/React.memo(function (props) {\n var width = props.width,\n height = props.height;\n var viewConfig = useSelector(selectFileViewConfig);\n var listRef = useRef();\n var displayFileIds = useSelector(selectors.getDisplayFileIds);\n var displayFileIdsRef = useInstanceVariable(displayFileIds);\n var getItemKey = useCallback(function (index) {\n var _displayFileIdsRef$cu;\n return (_displayFileIdsRef$cu = displayFileIdsRef.current[index]) != null ? _displayFileIdsRef$cu : \"loading-file-\" + index;\n }, [displayFileIdsRef]);\n var classes = useStyles$k();\n var listComponent = useMemo(function () {\n // When entry size is null, we use List view\n var rowRenderer = function rowRenderer(data) {\n var _displayFileIds$data$;\n return React.createElement(\"div\", {\n style: data.style\n }, React.createElement(SmartFileEntry, {\n fileId: (_displayFileIds$data$ = displayFileIds[data.index]) != null ? _displayFileIds$data$ : null,\n displayIndex: data.index,\n fileViewMode: FileViewMode.List\n }));\n };\n return React.createElement(FixedSizeList, {\n ref: listRef,\n className: classes.listContainer,\n itemSize: viewConfig.entryHeight,\n height: height,\n itemCount: displayFileIds.length,\n width: width,\n itemKey: getItemKey\n }, rowRenderer);\n }, [classes.listContainer, viewConfig.entryHeight, height, displayFileIds, width, getItemKey]);\n return listComponent;\n});\nvar useStyles$k = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n listContainer: {\n borderTop: \"solid 1px \" + theme.palette.divider\n }\n };\n});\nvar FileList = /*#__PURE__*/React.memo(function (props) {\n var displayFileIds = useSelector(selectors.getDisplayFileIds);\n var viewConfig = useSelector(selectFileViewConfig);\n var currentFolder = useSelector(selectCurrentFolder);\n var _useFileDrop = useFileDrop({\n file: currentFolder\n }),\n drop = _useFileDrop.drop,\n dndCanDrop = _useFileDrop.dndCanDrop,\n dndIsOverCurrent = _useFileDrop.dndIsOverCurrent;\n var styleState = useMemo(function () {\n return {\n dndCanDrop: dndCanDrop,\n dndIsOverCurrent: dndIsOverCurrent\n };\n }, [dndCanDrop, dndIsOverCurrent]);\n var localClasses = useLocalStyles(styleState);\n var classes = useStyles$l(viewConfig);\n var onScroll = props.onScroll; // In Chonky v0.x, this field was user-configurable. In Chonky v1.x+, we hardcode\n // this to `true` to simplify configuration. Users can just wrap Chonky in their\n // own `div` if they want to have finer control over the height.\n\n var fillParentContainer = true;\n var listRenderer = useCallback(function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n if (displayFileIds.length === 0) {\n return React.createElement(FileListEmpty, {\n width: width,\n height: viewConfig.entryHeight\n });\n } else if (viewConfig.mode === FileViewMode.List) {\n return React.createElement(ListContainer, {\n width: width,\n height: height\n });\n } else {\n return React.createElement(GridContainer, {\n width: width,\n height: height\n });\n }\n }, [displayFileIds, viewConfig]);\n var ChonkyIcon = useContext(ChonkyIconContext);\n return React.createElement(\"div\", {\n onScroll: onScroll,\n ref: drop,\n className: c([classes.fileListWrapper, localClasses.fileListWrapper]),\n role: \"list\"\n }, React.createElement(\"div\", {\n className: localClasses.dndDropZone\n }, React.createElement(\"div\", {\n className: localClasses.dndDropZoneIcon\n }, React.createElement(ChonkyIcon, {\n icon: dndCanDrop ? ChonkyIconName.dndCanDrop : ChonkyIconName.dndCannotDrop\n }))), React.createElement(AutoSizer, {\n disableHeight: !fillParentContainer\n }, listRenderer));\n});\nFileList.displayName = 'FileList';\nvar useLocalStyles = /*#__PURE__*/makeLocalChonkyStyles(function (theme) {\n return {\n fileListWrapper: {\n minHeight: ChonkyActions.EnableGridView.fileViewConfig.entryHeight + 2,\n background: function background(state) {\n return state.dndIsOverCurrent && state.dndCanDrop ? state.dndCanDrop ? getStripeGradient(theme.dnd.fileListCanDropMaskOne, theme.dnd.fileListCanDropMaskTwo) : getStripeGradient(theme.dnd.fileListCannotDropMaskOne, theme.dnd.fileListCannotDropMaskTwo) : 'none';\n }\n },\n dndDropZone: {\n display: function display(state) {\n return (\n // When we cannot drop, we don't show an indicator at all\n state.dndIsOverCurrent && state.dndCanDrop ? 'block' : 'none'\n );\n },\n borderRadius: theme.gridFileEntry.borderRadius,\n pointerEvents: 'none',\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 2\n },\n dndDropZoneIcon: {\n backgroundColor: function backgroundColor(state) {\n return state.dndCanDrop ? theme.dnd.canDropMask : theme.dnd.cannotDropMask;\n },\n color: function color(state) {\n return state.dndCanDrop ? theme.dnd.canDropColor : theme.dnd.cannotDropColor;\n },\n borderRadius: theme.gridFileEntry.borderRadius,\n transform: 'translateX(-50%) translateY(-50%)',\n position: 'absolute',\n textAlign: 'center',\n lineHeight: '60px',\n fontSize: '2em',\n left: '50%',\n height: 60,\n top: '50%',\n width: 60\n }\n };\n});\nvar useStyles$l = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n fileListWrapper: {\n height: '100%',\n maxHeight: '100%'\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FileContextMenu = /*#__PURE__*/React.memo(function () {\n var dispatch = useDispatch();\n useEffect(function () {\n dispatch(reduxActions.setContextMenuMounted(true));\n return function () {\n dispatch(reduxActions.setContextMenuMounted(false));\n };\n }, [dispatch]);\n var intl = useIntl();\n var browserMenuShortcutString = intl.formatMessage({\n id: getI18nId(I18nNamespace.FileContextMenu, 'browserMenuShortcut'),\n defaultMessage: 'Browser menu: {shortcut}'\n }, {\n shortcut: React.createElement(\"strong\", null, \"Alt + Right Click\")\n });\n var contextMenuConfig = useSelector(selectContextMenuConfig);\n var contextMenuItems = useSelector(selectContextMenuItems);\n var hideContextMenu = useContextMenuDismisser();\n var contextMenuItemComponents = useMemo(function () {\n var components = [];\n var _loop = function _loop(i) {\n var item = contextMenuItems[i];\n if (typeof item === 'string') {\n components.push(React.createElement(SmartToolbarDropdownButton, {\n key: \"context-menu-item-\" + item,\n fileActionId: item,\n onClickFollowUp: hideContextMenu\n }));\n } else {\n item.fileActionIds.map(function (id) {\n return components.push(React.createElement(SmartToolbarDropdownButton, {\n key: \"context-menu-item-\" + item.name + \"-\" + id,\n fileActionId: id,\n onClickFollowUp: hideContextMenu\n }));\n });\n }\n };\n for (var i = 0; i < contextMenuItems.length; ++i) {\n _loop(i);\n }\n return components;\n }, [contextMenuItems, hideContextMenu]);\n var anchorPosition = useMemo(function () {\n return contextMenuConfig ? {\n top: contextMenuConfig.mouseY,\n left: contextMenuConfig.mouseX\n } : undefined;\n }, [contextMenuConfig]);\n var classes = useStyles$m();\n return React.createElement(Menu, {\n elevation: 2,\n disablePortal: true,\n onClose: hideContextMenu,\n transitionDuration: 150,\n open: !!contextMenuConfig,\n anchorPosition: anchorPosition,\n anchorReference: \"anchorPosition\",\n classes: {\n list: classes.contextMenuList\n }\n }, contextMenuItemComponents, React.createElement(ListSubheader, {\n component: \"div\",\n className: classes.browserMenuTooltip\n }, browserMenuShortcutString));\n});\nvar useStyles$m = /*#__PURE__*/makeGlobalChonkyStyles(function () {\n return {\n contextMenuList: {\n paddingBottom: important(0),\n paddingTop: important(0)\n },\n browserMenuTooltip: {\n lineHeight: important('30px'),\n fontSize: important('0.7em')\n }\n };\n});\n\n/**\r\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\r\n * @copyright 2020\r\n * @license MIT\r\n */\nvar FullFileBrowser = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function (props, ref) {\n var onScroll = props.onScroll;\n return React.createElement(FileBrowser, Object.assign({\n ref: ref\n }, props), React.createElement(FileNavbar, null), React.createElement(FileToolbar, null), React.createElement(FileList, {\n onScroll: onScroll\n }), React.createElement(FileContextMenu, null));\n}));\nFullFileBrowser.displayName = 'FullFileBrowser';\nvar useFolderChain = function useFolderChain(fileMap, currentFolderId) {\n return useMemo(function () {\n var currentFolder = fileMap[currentFolderId];\n var folderChain = [currentFolder];\n var parentId = currentFolder.parentId;\n while (parentId) {\n var parentFile = fileMap[parentId];\n if (parentFile) {\n folderChain.unshift(parentFile);\n parentId = parentFile.parentId;\n } else {\n break;\n }\n }\n return folderChain;\n }, [currentFolderId, fileMap]);\n};\nvar useFiles = function useFiles(fileMap, currentFolderId) {\n return useMemo(function () {\n var currentFolder = fileMap[currentFolderId];\n var childrenIds = currentFolder.childrenIds;\n var files = childrenIds.map(function (fileId) {\n return fileMap[fileId];\n });\n return files;\n }, [currentFolderId, fileMap]);\n};\nvar useFileMapMethods = function useFileMapMethods(baseFileMap, initialFolderId) {\n var _useState = useState(baseFileMap),\n fileMap = _useState[0],\n setFileMap = _useState[1];\n var _useState2 = useState(initialFolderId),\n currentFolderId = _useState2[0],\n setCurrentFolderId = _useState2[1];\n var resetFileMap = useCallback(function () {\n setFileMap(baseFileMap);\n setCurrentFolderId(initialFolderId);\n }, [baseFileMap, initialFolderId]);\n var moveFiles = useCallback(function (files, source, destination) {\n return setFileMap(function (currentFileMap) {\n var newFileMap = _extends({}, currentFileMap);\n var moveFileIds = new Set(files.map(function (f) {\n return f.id;\n })); // Delete files from their source folder.\n\n var newSourceChildrenIds = source.childrenIds.filter(function (id) {\n return !moveFileIds.has(id);\n });\n newFileMap[source.id] = _extends({}, source, {\n childrenIds: newSourceChildrenIds,\n childrenCount: newSourceChildrenIds.length\n }); // Add the files to their destination folder.\n\n var newDestinationChildrenIds = [].concat(destination.childrenIds, files.map(function (f) {\n return f.id;\n }));\n newFileMap[destination.id] = _extends({}, destination, {\n childrenIds: newDestinationChildrenIds,\n childrenCount: newDestinationChildrenIds.length\n }); // Finally, update the parent folder ID on the files from source folder\n // ID to the destination folder ID.\n\n files.forEach(function (file) {\n newFileMap[file.id] = _extends({}, file, {\n parentId: destination.id\n });\n });\n return newFileMap;\n });\n }, []);\n var methods = useMemo(function () {\n return {\n setFileMap: setFileMap,\n setCurrentFolderId: setCurrentFolderId,\n resetFileMap: resetFileMap,\n moveFiles: moveFiles\n };\n }, [setFileMap, setCurrentFolderId, resetFileMap, moveFiles]);\n return {\n fileMap: fileMap,\n currentFolderId: currentFolderId,\n methods: methods\n };\n};\nvar useFileActionHandler = function useFileActionHandler(methods) {\n return useCallback(function (data) {\n if (data.id === ChonkyActions.OpenFiles.id) {\n var _data$payload = data.payload,\n targetFile = _data$payload.targetFile,\n files = _data$payload.files;\n var fileToOpen = targetFile != null ? targetFile : files[0];\n if (fileToOpen && FileHelper.isDirectory(fileToOpen)) {\n methods.setCurrentFolderId(fileToOpen.id);\n }\n } else if (data.id === ChonkyActions.MoveFiles.id) {\n methods.moveFiles(data.payload.files, data.payload.source, data.payload.destination);\n }\n }, [methods]);\n};\nvar useFileMap = function useFileMap(_ref) {\n var baseFileMap = _ref.baseFileMap,\n initialFolderId = _ref.initialFolderId;\n var _useFileMapMethods = useFileMapMethods(baseFileMap, initialFolderId),\n fileMap = _useFileMapMethods.fileMap,\n currentFolderId = _useFileMapMethods.currentFolderId,\n methods = _useFileMapMethods.methods;\n var folderChain = useFolderChain(fileMap, currentFolderId);\n var files = useFiles(fileMap, currentFolderId);\n var fileActionHandler = useFileActionHandler(methods);\n var data = {\n fileMap: fileMap,\n currentFolderId: currentFolderId,\n folderChain: folderChain,\n files: files\n };\n return {\n data: data,\n methods: methods,\n fileActionHandler: fileActionHandler\n };\n};\nvar fileMap = {\n __proto__: null,\n useFolderChain: useFolderChain,\n useFiles: useFiles,\n useFileMapMethods: useFileMapMethods,\n useFileActionHandler: useFileActionHandler,\n useFileMap: useFileMap\n};\nexport { ChonkyActions, ChonkyDndFileEntryType, ChonkyIconName, CustomVisibilityState, DefaultFileActions, FileBrowser, FileContextMenu, FileHelper, FileList, FileNavbar, FileToolbar, FileViewMode, FullFileBrowser, I18nNamespace, OptionIds, defaultFormatters, defineFileAction, fileMap, getActionI18nId, getFileData, getI18nId, getIsFileSelected, getSelectedFiles, getSelectedFilesForAction, reduxActions, rootReducer, selectCleanFileIds, selectClearSelectionOnOutsideClick, selectContextMenuConfig, selectContextMenuItems, selectContextMenuMounted, selectContextMenuTriggerFile, selectCurrentFolder, selectDisableSelection, selectDoubleClickDelay, selectExternalFileActionHandler, selectFileActionData, selectFileActionIds, selectFileActionMap, selectFileData, selectFileMap, selectFileViewConfig, selectFocusSearchInput, selectFolderChain, selectHiddenFileCount, selectHiddenFileIdMap, selectInstanceId, selectIsDnDDisabled, selectIsFileSelected, selectOptionMap, selectOptionValue, selectParentFolder, selectRawFiles, selectSearchString, selectSelectedFileIds, selectSelectedFiles, selectSelectedFilesForAction, selectSelectedFilesForActionCount, selectSelectionMap, selectSelectionSize, selectSortActionId, selectSortOrder, selectThumbnailGenerator, selectToolbarItems, selectors, setChonkyDefaults, thunkDispatchFileAction, thunkRequestFileAction, useChonkyStore, useDTE, useParamSelector, usePropReduxUpdate };\n//# sourceMappingURL=chonky.esm.js.map","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { getThemeProps, useTheme } from '@material-ui/styles';\nexport default function useMediaQuery(queryInput) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var theme = useTheme();\n var props = getThemeProps({\n theme: theme,\n name: 'MuiUseMediaQuery',\n props: {}\n });\n if (process.env.NODE_ENV !== 'production') {\n if (typeof queryInput === 'function' && theme === null) {\n console.error(['Material-UI: The `query` argument provided is invalid.', 'You are providing a function without a theme in the context.', 'One of the parent elements needs to use a ThemeProvider.'].join('\\n'));\n }\n }\n var query = typeof queryInput === 'function' ? queryInput(theme) : queryInput;\n query = query.replace(/^@media( ?)/m, ''); // Wait for jsdom to support the match media feature.\n // All the browsers Material-UI support have this built-in.\n // This defensive check is here for simplicity.\n // Most of the time, the match media logic isn't central to people tests.\n\n var supportMatchMedia = typeof window !== 'undefined' && typeof window.matchMedia !== 'undefined';\n var _props$options = _extends({}, props, options),\n _props$options$defaul = _props$options.defaultMatches,\n defaultMatches = _props$options$defaul === void 0 ? false : _props$options$defaul,\n _props$options$matchM = _props$options.matchMedia,\n matchMedia = _props$options$matchM === void 0 ? supportMatchMedia ? window.matchMedia : null : _props$options$matchM,\n _props$options$noSsr = _props$options.noSsr,\n noSsr = _props$options$noSsr === void 0 ? false : _props$options$noSsr,\n _props$options$ssrMat = _props$options.ssrMatchMedia,\n ssrMatchMedia = _props$options$ssrMat === void 0 ? null : _props$options$ssrMat;\n var _React$useState = React.useState(function () {\n if (noSsr && supportMatchMedia) {\n return matchMedia(query).matches;\n }\n if (ssrMatchMedia) {\n return ssrMatchMedia(query).matches;\n } // Once the component is mounted, we rely on the\n // event listeners to return the correct matches value.\n\n return defaultMatches;\n }),\n match = _React$useState[0],\n setMatch = _React$useState[1];\n React.useEffect(function () {\n var active = true;\n if (!supportMatchMedia) {\n return undefined;\n }\n var queryList = matchMedia(query);\n var updateMatch = function updateMatch() {\n // Workaround Safari wrong implementation of matchMedia\n // TODO can we remove it?\n // https://github.com/mui-org/material-ui/pull/17315#issuecomment-528286677\n if (active) {\n setMatch(queryList.matches);\n }\n };\n updateMatch();\n queryList.addListener(updateMatch);\n return function () {\n active = false;\n queryList.removeListener(updateMatch);\n };\n }, [query, matchMedia, supportMatchMedia]);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue({\n query: query,\n match: match\n });\n }\n return match;\n}","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n }\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\nvar noop = function noop() {};\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\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) {}\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fak': 'kit',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome ([5 ]*)(Solid|Regular|Light|Duotone|Brands|Free|Pro|Kit).*/i; // TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\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 // For example <script data-search-pseudo-elements src=\"...\"></script>\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['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(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n var val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_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};\nvar _config = _objectSpread({}, _default, initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = _objectSpread({}, _config);\nWINDOW.FontAwesomeConfig = config;\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\nvar functions = [];\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\nvar loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready(fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\nvar NOOP = function NOOP() {};\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n asyncQueue = [];\n asyncTimer = false;\n}\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n if (typeof callback === 'function') {\n settled = FULFILLED;\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\nfunction handleThenable(promise, value) {\n var resolved;\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n return true;\n }\n return false;\n}\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n this._then = [];\n invokeResolver(resolver, this);\n}\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n if (!remaining) {\n resolve(results);\n }\n });\n};\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n return new P(function (resolve) {\n resolve(value);\n });\n};\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\nvar picked = typeof Promise === 'function' ? Promise : P;\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\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(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\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 var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nfunction makeIconMasking(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var 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: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\nfunction makeIconStandard(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n return {\n children: children,\n attributes: attributes\n };\n}\nfunction asIcon(_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\nfunction asSymbol(_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, 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 var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n var styles = _objectSpread({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n var styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nvar noop$1 = function noop() {};\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin: begin,\n end: end\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\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 if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\nfunction toHex(unicode) {\n var result = '';\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n return result;\n}\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\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 easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = ('far' in styles);\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"</\").concat(tag, \">\");\n }\n}\nvar noop$2 = function noop() {};\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"<!-- \".concat(node.outerHTML, \" Font Awesome fontawesome.com -->\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var 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 var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\nfunction styleParser(node) {\n var style = node.getAttribute('style');\n var val = [];\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\nfunction classParser(node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n return val;\n}\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n }\n};\nfunction transformParser(node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\nfunction symbolParser(node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\nfunction attributesParser(node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\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 return extraAttributes;\n}\nfunction maskParser(node) {\n var mask = node.getAttribute('data-fa-mask');\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\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: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, 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};\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, 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: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, 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: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n var element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").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 return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\nvar styles$3 = namespace.styles;\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n if (prefixesDomQuery.length === 0) {\n return;\n }\n var candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamily) {\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 (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // 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 if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\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}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n 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 {\\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 -webkit-transform-origin: center center;\\n transform-origin: center center;\\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-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\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-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\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}\\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: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\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 color: #fff;\\n}\";\nfunction css() {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nvar Library = /*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n this.definitions = {};\n }\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n return Library;\n}();\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\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 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: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (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.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\nvar _excluded$1 = [\"style\"];\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof element === 'string') {\n return element;\n }\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n }\n return acc;\n }, {\n attrs: {}\n });\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded$1);\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\nvar PRODUCTION = false;\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\nfunction log() {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n (_console = console).error.apply(_console, arguments);\n }\n}\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\nvar _excluded = [\"forwardedRef\"];\nfunction FontAwesomeIcon(_ref) {\n var forwardedRef = _ref.forwardedRef,\n props = _objectWithoutProperties(_ref, _excluded);\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: forwardedRef\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\nexport { FontAwesomeIcon };","import { faAdobe } from '@fortawesome/free-brands-svg-icons/faAdobe';\nimport { faGitAlt } from '@fortawesome/free-brands-svg-icons/faGitAlt';\nimport { faLinux } from '@fortawesome/free-brands-svg-icons/faLinux';\nimport { faNodeJs } from '@fortawesome/free-brands-svg-icons/faNodeJs';\nimport { faPhp } from '@fortawesome/free-brands-svg-icons/faPhp';\nimport { faPython } from '@fortawesome/free-brands-svg-icons/faPython';\nimport { faRust } from '@fortawesome/free-brands-svg-icons/faRust';\nimport { faUbuntu } from '@fortawesome/free-brands-svg-icons/faUbuntu';\nimport { faWindows } from '@fortawesome/free-brands-svg-icons/faWindows';\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons/faArrowDown';\nimport { faBalanceScale } from '@fortawesome/free-solid-svg-icons/faBalanceScale';\nimport { faBoxOpen } from '@fortawesome/free-solid-svg-icons/faBoxOpen';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons/faChevronDown';\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons/faChevronRight';\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons/faCircleNotch';\nimport { faCogs } from '@fortawesome/free-solid-svg-icons/faCogs';\nimport { faCopy } from '@fortawesome/free-solid-svg-icons/faCopy';\nimport { faCubes } from '@fortawesome/free-solid-svg-icons/faCubes';\nimport { faDatabase } from '@fortawesome/free-solid-svg-icons/faDatabase';\nimport { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';\nimport { faEraser } from '@fortawesome/free-solid-svg-icons/faEraser';\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons/faExclamationTriangle';\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons/faExternalLinkAlt';\nimport { faEyeSlash } from '@fortawesome/free-solid-svg-icons/faEyeSlash';\nimport { faFile } from '@fortawesome/free-solid-svg-icons/faFile';\nimport { faFileAlt } from '@fortawesome/free-solid-svg-icons/faFileAlt';\nimport { faFileArchive } from '@fortawesome/free-solid-svg-icons/faFileArchive';\nimport { faFileCode } from '@fortawesome/free-solid-svg-icons/faFileCode';\nimport { faFileExcel } from '@fortawesome/free-solid-svg-icons/faFileExcel';\nimport { faFileImage } from '@fortawesome/free-solid-svg-icons/faFileImage';\nimport { faFilePdf } from '@fortawesome/free-solid-svg-icons/faFilePdf';\nimport { faFileWord } from '@fortawesome/free-solid-svg-icons/faFileWord';\nimport { faFilm } from '@fortawesome/free-solid-svg-icons/faFilm';\nimport { faFistRaised } from '@fortawesome/free-solid-svg-icons/faFistRaised';\nimport { faFolder } from '@fortawesome/free-solid-svg-icons/faFolder';\nimport { faFolderOpen } from '@fortawesome/free-solid-svg-icons/faFolderOpen';\nimport { faFolderPlus } from '@fortawesome/free-solid-svg-icons/faFolderPlus';\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons/faInfoCircle';\nimport { faKey } from '@fortawesome/free-solid-svg-icons/faKey';\nimport { faLevelUpAlt } from '@fortawesome/free-solid-svg-icons/faLevelUpAlt';\nimport { faList } from '@fortawesome/free-solid-svg-icons/faList';\nimport { faLock } from '@fortawesome/free-solid-svg-icons/faLock';\nimport { faMinus } from '@fortawesome/free-solid-svg-icons/faMinus';\nimport { faMusic } from '@fortawesome/free-solid-svg-icons/faMusic';\nimport { faObjectGroup } from '@fortawesome/free-solid-svg-icons/faObjectGroup';\nimport { faPaste } from '@fortawesome/free-solid-svg-icons/faPaste';\nimport { faRunning } from '@fortawesome/free-solid-svg-icons/faRunning';\nimport { faSearch } from '@fortawesome/free-solid-svg-icons/faSearch';\nimport { faShareAlt } from '@fortawesome/free-solid-svg-icons/faShareAlt';\nimport { faSortAmountDownAlt } from '@fortawesome/free-solid-svg-icons/faSortAmountDownAlt';\nimport { faSortAmountUpAlt } from '@fortawesome/free-solid-svg-icons/faSortAmountUpAlt';\nimport { faTerminal } from '@fortawesome/free-solid-svg-icons/faTerminal';\nimport { faTh } from '@fortawesome/free-solid-svg-icons/faTh';\nimport { faThLarge } from '@fortawesome/free-solid-svg-icons/faThLarge';\nimport { faThList } from '@fortawesome/free-solid-svg-icons/faThList';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons/faTimes';\nimport { faToggleOff } from '@fortawesome/free-solid-svg-icons/faToggleOff';\nimport { faToggleOn } from '@fortawesome/free-solid-svg-icons/faToggleOn';\nimport { faTrash } from '@fortawesome/free-solid-svg-icons/faTrash';\nimport { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';\nimport { faUsers } from '@fortawesome/free-solid-svg-icons/faUsers';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ChonkyIconName } from 'chonky';\nimport React from 'react';\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nvar _IconMap;\nvar IconMap = (_IconMap = {}, _IconMap[ChonkyIconName.loading] = faCircleNotch, _IconMap[ChonkyIconName.dropdown] = faChevronDown, _IconMap[ChonkyIconName.placeholder] = faMinus, _IconMap[ChonkyIconName.dndDragging] = faFistRaised, _IconMap[ChonkyIconName.dndCanDrop] = faArrowDown, _IconMap[ChonkyIconName.dndCannotDrop] = faTimes, _IconMap[ChonkyIconName.openFiles] = faBoxOpen, _IconMap[ChonkyIconName.openParentFolder] = faLevelUpAlt, _IconMap[ChonkyIconName.copy] = faCopy, _IconMap[ChonkyIconName.paste] = faPaste, _IconMap[ChonkyIconName.share] = faShareAlt, _IconMap[ChonkyIconName.search] = faSearch, _IconMap[ChonkyIconName.selectAllFiles] = faObjectGroup, _IconMap[ChonkyIconName.clearSelection] = faEraser, _IconMap[ChonkyIconName.sortAsc] = faSortAmountDownAlt, _IconMap[ChonkyIconName.sortDesc] = faSortAmountUpAlt, _IconMap[ChonkyIconName.toggleOn] = faToggleOn, _IconMap[ChonkyIconName.toggleOff] = faToggleOff, _IconMap[ChonkyIconName.list] = faList, _IconMap[ChonkyIconName.compact] = faThList, _IconMap[ChonkyIconName.smallThumbnail] = faTh, _IconMap[ChonkyIconName.largeThumbnail] = faThLarge, _IconMap[ChonkyIconName.folder] = faFolder, _IconMap[ChonkyIconName.folderCreate] = faFolderPlus, _IconMap[ChonkyIconName.folderOpen] = faFolderOpen, _IconMap[ChonkyIconName.folderChainSeparator] = faChevronRight, _IconMap[ChonkyIconName.download] = faDownload, _IconMap[ChonkyIconName.upload] = faUpload, _IconMap[ChonkyIconName.trash] = faTrash, _IconMap[ChonkyIconName.fallbackIcon] = faExclamationTriangle, _IconMap[ChonkyIconName.symlink] = faExternalLinkAlt, _IconMap[ChonkyIconName.hidden] = faEyeSlash, _IconMap[ChonkyIconName.file] = faFile, _IconMap[ChonkyIconName.license] = faBalanceScale, _IconMap[ChonkyIconName.code] = faFileCode, _IconMap[ChonkyIconName.config] = faCogs, _IconMap[ChonkyIconName.model] = faCubes, _IconMap[ChonkyIconName.database] = faDatabase, _IconMap[ChonkyIconName.text] = faFileAlt, _IconMap[ChonkyIconName.archive] = faFileArchive, _IconMap[ChonkyIconName.image] = faFileImage, _IconMap[ChonkyIconName.video] = faFilm, _IconMap[ChonkyIconName.info] = faInfoCircle, _IconMap[ChonkyIconName.key] = faKey, _IconMap[ChonkyIconName.lock] = faLock, _IconMap[ChonkyIconName.music] = faMusic, _IconMap[ChonkyIconName.terminal] = faTerminal, _IconMap[ChonkyIconName.users] = faUsers, _IconMap[ChonkyIconName.linux] = faLinux, _IconMap[ChonkyIconName.ubuntu] = faUbuntu, _IconMap[ChonkyIconName.windows] = faWindows, _IconMap[ChonkyIconName.rust] = faRust, _IconMap[ChonkyIconName.python] = faPython, _IconMap[ChonkyIconName.nodejs] = faNodeJs, _IconMap[ChonkyIconName.php] = faPhp, _IconMap[ChonkyIconName.git] = faGitAlt, _IconMap[ChonkyIconName.adobe] = faAdobe, _IconMap[ChonkyIconName.pdf] = faFilePdf, _IconMap[ChonkyIconName.excel] = faFileExcel, _IconMap[ChonkyIconName.word] = faFileWord, _IconMap[ChonkyIconName.flash] = faRunning, _IconMap);\nvar ChonkyIconFA = /*#__PURE__*/React.memo(function (props) {\n var _IconMap$icon;\n var icon = props.icon;\n var faIcon; // FontAwesome `IconDefinition`\n\n if (typeof icon === 'object') faIcon = icon;else faIcon = (_IconMap$icon = IconMap[icon]) != null ? _IconMap$icon : IconMap.fallbackIcon;\n var faProps = _extends({}, props, {\n icon: faIcon\n });\n return React.createElement(FontAwesomeIcon, Object.assign({}, faProps));\n});\nexport { ChonkyIconFA };\n//# sourceMappingURL=chonky-icon-fontawesome.esm.js.map","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {\n toString\n} = Object.prototype;\nconst {\n getPrototypeOf\n} = Object;\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\nconst kindOfTest = type => {\n type = type.toLowerCase();\n return thing => kindOf(thing) === type;\n};\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {\n isArray\n} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = thing => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = val => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = val => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = thing => {\n let kind;\n return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]'));\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = str => str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn) {\n let {\n allOwnKeys = false\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : typeof window !== 'undefined' ? window : global;\n})();\nconst isContextDefined = context => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge( /* obj1, obj2, obj3, ... */\n) {\n const {\n caseless\n } = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = function (a, b, thisArg) {\n let {\n allOwnKeys\n } = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {\n allOwnKeys\n });\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = content => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = thing => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n const iterator = generator.call(obj);\n let result;\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (_ref => {\n let {\n hasOwnProperty\n } = _ref;\n return (obj, prop) => hasOwnProperty.call(obj, prop);\n})(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = obj => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n const value = obj[name];\n if (!isFunction(value)) return;\n descriptor.enumerable = false;\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n const define = arr => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n return obj;\n};\nconst noop = () => {};\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n};\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\nconst DIGIT = '0123456789';\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\nconst generateString = function () {\n let size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16;\n let alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT;\n let str = '';\n const {\n length\n } = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length | 0];\n }\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\nconst toJSONObject = obj => {\n const stack = new Array(10);\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n if (!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n stack[i] = undefined;\n return target;\n }\n }\n return source;\n };\n return visit(obj, 0);\n};\nconst isAsyncFn = kindOfTest('AsyncFunction');\nconst isThenable = thing => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty,\n // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error().stack;\n }\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {\n value: code\n };\n});\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {\n value: true\n});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n AxiosError.call(axiosError, error.message, code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n};\nexport default AxiosError;","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n function convertValue(value) {\n if (value === null) return '';\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.isArray(value) && isFlatArray(value) || (utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el));\n });\n return false;\n }\n }\n if (isVisitable(value)) {\n return true;\n }\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\n const stack = [];\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n stack.push(value);\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n stack.pop();\n }\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n build(obj);\n return formData;\n}\nexport default toFormData;","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n params && toFormData(params, this, options);\n}\nconst prototype = AxiosURLSearchParams.prototype;\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function (value) {\n return encoder.call(this, value, encode);\n } : encode;\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\nexport default AxiosURLSearchParams;","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n const _encode = options && options.encode || encode;\n const serializeFn = options && options.serialize;\n let serializedParams;\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);\n }\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n return url;\n}","'use strict';\n\nimport utils from './../utils.js';\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\nexport default InterceptorManager;","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};","import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;","'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (product => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0;\n})(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope && typeof self.importScripts === 'function';\n})();\nexport { hasBrowserEnv, hasStandardBrowserWebWorkerEnv, hasStandardBrowserEnv };","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\nexport default {\n ...utils,\n ...platform\n};","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n if (name === '__proto__') return true;\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n return !isNumericKey;\n }\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n const result = buildPath(path, value, target[name], index);\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n return !isNumericKey;\n }\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n return obj;\n }\n return null;\n}\nexport default formDataToJSON;","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n return (encoder || JSON.stringify)(rawValue);\n}\nconst defaults = {\n transitional: transitionalDefaults,\n adapter: ['xhr', 'http'],\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n const isFormData = utils.isFormData(data);\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n if (utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n let isFileList;\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {\n 'files[]': data\n } : data, _FormData && new _FormData(), this.formSerializer);\n }\n }\n if (isObjectPayload || hasJSONContentType) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n if (data && utils.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n return data;\n }],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], method => {\n defaults.headers[method] = {};\n});\nexport default defaults;","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function (value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n if (!key || parsed[key] && ignoreDuplicateOf[key]) {\n return;\n }\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n return parsed;\n});","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\nconst $internals = Symbol('internals');\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n while (match = tokensRE.exec(str)) {\n tokens[match[1]] = match[2];\n }\n return tokens;\n}\nconst isValidHeaderName = str => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n if (isHeaderNameFilter) {\n value = header;\n }\n if (!utils.isString(value)) return;\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\nfunction formatHeader(header) {\n return header.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function (arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n const key = utils.findKey(self, lHeader);\n if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n const setHeaders = (headers, _rewrite) => utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n return this;\n }\n get(header, parser) {\n header = normalizeHeader(header);\n if (header) {\n const key = utils.findKey(this, header);\n if (key) {\n const value = this[key];\n if (!parser) {\n return value;\n }\n if (parser === true) {\n return parseTokens(value);\n }\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n has(header, matcher) {\n header = normalizeHeader(header);\n if (header) {\n const key = utils.findKey(this, header);\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n return false;\n }\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n if (_header) {\n const key = utils.findKey(self, _header);\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n deleted = true;\n }\n }\n }\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n return deleted;\n }\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n while (i--) {\n const key = keys[i];\n if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n return deleted;\n }\n normalize(format) {\n const self = this;\n const headers = {};\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n const normalized = format ? formatHeader(header) : String(header).trim();\n if (normalized !== header) {\n delete self[header];\n }\n self[normalized] = normalizeValue(value);\n headers[normalized] = true;\n });\n return this;\n }\n concat() {\n for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) {\n targets[_key] = arguments[_key];\n }\n return this.constructor.concat(this, ...targets);\n }\n toJSON(asStrings) {\n const obj = Object.create(null);\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n return obj;\n }\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n toString() {\n return Object.entries(this.toJSON()).map(_ref => {\n let [header, value] = _ref;\n return header + ': ' + value;\n }).join('\\n');\n }\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n static concat(first) {\n const computed = new this(first);\n for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n targets[_key2 - 1] = arguments[_key2];\n }\n targets.forEach(target => computed.set(target));\n return computed;\n }\n static accessor(header) {\n const internals = this[$internals] = this[$internals] = {\n accessors: {}\n };\n const accessors = internals.accessors;\n const prototype = this.prototype;\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n return this;\n }\n}\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, (_ref2, key) => {\n let {\n value\n } = _ref2;\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n };\n});\nutils.freezeMethods(AxiosHeaders);\nexport default AxiosHeaders;","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n headers.normalize();\n return data;\n}","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\nexport default CanceledError;","import utils from './../utils.js';\nimport platform from '../platform/index.js';\nexport default platform.hasStandardBrowserEnv ?\n// Standard browser envs support document.cookie\n{\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n utils.isString(path) && cookie.push('path=' + path);\n utils.isString(domain) && cookie.push('domain=' + domain);\n secure === true && cookie.push('secure');\n document.cookie = cookie.join('; ');\n },\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n} :\n// Non-standard browser env (web workers, react-native) lack needed support.\n{\n write() {},\n read() {\n return null;\n },\n remove() {}\n};","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n}","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\nexport default platform.hasStandardBrowserEnv ?\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() :\n// Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n min = min !== undefined ? min : 1000;\n return function push(chunkLength) {\n const now = Date.now();\n const startedAt = timestamps[tail];\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n bytes[head] = chunkLength;\n timestamps[head] = now;\n let i = tail;\n let bytesCount = 0;\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n head = (head + 1) % samplesCount;\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n if (now - firstSampleTS < min) {\n return;\n }\n const passed = startedAt && now - startedAt;\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\nexport default speedometer;","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n bytesNotified = loaded;\n const data = {\n loaded,\n total,\n progress: total ? loaded / total : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n data[isDownloadStream ? 'download' : 'upload'] = true;\n listener(data);\n };\n}\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n let {\n responseType,\n withXSRFToken\n } = config;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n let contentType;\n if (utils.isFormData(requestData)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if ((contentType = requestHeaders.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n const fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from('getAllResponseHeaders' in request && request.getAllResponseHeaders());\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(fullPath)) {\n // Add xsrf header\n const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n const protocol = parseProtocol(fullPath);\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n};","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response));\n }\n}","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n};\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {\n value\n });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {\n value\n });\n }\n});\nconst renderReason = reason => \"- \".concat(reason);\nconst isResolvedHandle = adapter => utils.isFunction(adapter) || adapter === null || adapter === false;\nexport default {\n getAdapter: adapters => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n const {\n length\n } = adapters;\n let nameOrAdapter;\n let adapter;\n const rejectedReasons = {};\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n adapter = nameOrAdapter;\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n if (adapter === undefined) {\n throw new AxiosError(\"Unknown adapter '\".concat(id, \"'\"));\n }\n }\n if (adapter) {\n break;\n }\n rejectedReasons[id || '#' + i] = adapter;\n }\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(_ref => {\n let [id, state] = _ref;\n return \"adapter \".concat(id, \" \") + (state === false ? 'is not supported by the environment' : 'is not available in the build');\n });\n let s = length ? reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified';\n throw new AxiosError(\"There is no suitable adapter to dispatch the request \" + s, 'ERR_NOT_SUPPORT');\n }\n return adapter;\n },\n adapters: knownAdapters\n};","// eslint-disable-next-line strict\nexport default null;","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(config, config.transformRequest);\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n response.headers = AxiosHeaders.from(response.headers);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, config.transformResponse, reason.response);\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n return Promise.reject(reason);\n });\n}","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\nconst headersToObject = thing => thing instanceof AxiosHeaders ? {\n ...thing\n} : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({\n caseless\n }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);\n });\n return config;\n}","export const VERSION = \"1.6.8\";","'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED);\n }\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\nexport default {\n assertOptions,\n validators\n};","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error();\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n }\n throw err;\n }\n }\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n config = mergeConfig(this.defaults, config);\n const {\n transitional,\n paramsSerializer,\n headers\n } = config;\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n headers && utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], method => {\n delete headers[method];\n });\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n let promise;\n let i = 0;\n let len;\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n promise = Promise.resolve(config);\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n return promise;\n }\n len = requestInterceptorChain.length;\n let newConfig = config;\n i = 0;\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n i = 0;\n len = responseInterceptorChain.length;\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n return promise;\n }\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n Axios.prototype[method] = generateHTTPMethod();\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\nexport default Axios;","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n let resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n let i = token._listeners.length;\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n return promise;\n };\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\nexport default CancelToken;","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511\n};\nObject.entries(HttpStatusCode).forEach(_ref => {\n let [key, value] = _ref;\n HttpStatusCode[value] = key;\n});\nexport default HttpStatusCode;","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {\n allOwnKeys: true\n });\n\n // Copy context to instance\n utils.extend(instance, context, null, {\n allOwnKeys: true\n });\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\naxios.AxiosHeaders = AxiosHeaders;\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\naxios.getAdapter = adapters.getAdapter;\naxios.HttpStatusCode = HttpStatusCode;\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && payload.isAxiosError === true;\n}","import styled, { useTheme, css } from 'styled-components';\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { View, Notification, Link as Link$2, UploadingContent, generate, DragDropUpload, Select as Select$1, InputGroup, DataTable as DataTable$6, Modal, confirmationModal, CardBoard, CardBoardItem, Panel, Text as Text$1, Tooltip, IconAlertInformation, AvatarCluster, Avatar, IconSecurityLocked, Tag as Tag$2, Button, ProgressBar, Alert, useToaster, IconDelete, PanelTitle, IconKebabVertical, DropdownMenu, PanelSection, PageHeader, PageHeaderTitleBar, PageHeaderToolBar, PageHeaderTabsBar, themeHelpers, Label, Accordion as Accordion$2, Heading as Heading$6, Badge as Badge$1, Logo, useThemeProvider, IconMoodHappy, BadgeScore, IconModulePuzzle, useDrawer, Checkbox as Checkbox$4, ShowMore, Markdown, Tabs, Input, IconSearch, TagList, Loading, ScrollableContent, Textarea, IconNotesWarning, IconButton, IconAlertWarning, IconAlertSuccess, Carousel, PageHeaderActionsBar, ToggleSwitch, PageContentLayout, Breadcrumbs, TabGroup, Radio as Radio$2, Card as Card$3, IconChevronLeft, IconAlertError as IconAlertError$2, SearchBar, UPLOAD_STATUS, useQueryParams, ErrorMessage, MultiSelect, generateCypressId, SkeletonLoader, IconChevronRight } from '@acin/ui-core';\nimport { useHistory, useRouteMatch, Switch, Route, Redirect, useLocation, useParams, Link as Link$3 } from 'react-router-dom';\nimport { gql, useQuery, useMutation, useLazyQuery } from '@apollo/client';\nimport { format } from 'date-fns';\nimport { Filters, useSetFilters, FiltersProvider } from '@acin/filters';\nimport { VariableSizeList, areEqual } from 'react-window';\nimport AutoSizer from 'react-virtualized-auto-sizer';\nimport { useDebounce } from 'use-debounce';\nimport { ChonkyActions, FullFileBrowser, setChonkyDefaults } from 'chonky';\nimport { ChonkyIconFA } from 'chonky-icon-fontawesome';\nimport path from 'path';\nimport { saveAs } from 'file-saver';\nimport { Pagination, usePagination, PaginationProvider } from '@acin/pagination';\nimport axios from 'axios';\nimport { Buffer } from 'buffer';\nimport { useAuth } from '@acin/user-accounts';\nimport { useDebounce as useDebounce$1 } from 'usehooks-ts';\n\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __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};\nfunction __rest(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}\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __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}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\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};\nvar getDataMatchingUploads = {\n queryType: true,\n keyFields: ['input', ['sort']],\n merge: function (existing, incoming) {\n if (existing === void 0) {\n existing = {};\n }\n if (incoming === void 0) {\n incoming = {};\n }\n var existingNodes = existing.nodes || [];\n var nodes = incoming.nodes;\n if (incoming.pageInfo.page > 1) {\n nodes = __spreadArray(__spreadArray([], __read(existingNodes), false), __read(incoming.nodes), false);\n } // look at the incoming page data, work out if we already have the results, and replace\n\n return __assign(__assign({}, incoming), {\n nodes: nodes\n });\n }\n};\nvar dataMatcher = {\n fields: {\n matchCounts: {\n merge: true\n },\n unmatchedAcinControls: {\n merge: false\n },\n nextWorkflow: {\n merge: false\n }\n }\n};\nvar DataMatcherClientControl = {\n fields: {\n matches: {\n merge: false\n }\n }\n};\nvar DataMatchingControlsWorkflow = {\n fields: {\n controlView: {\n merge: false\n },\n summaryView: {\n merge: false\n }\n }\n};\nvar typePolicies = {\n getDataMatchingUploads: getDataMatchingUploads,\n dataMatcher: dataMatcher,\n DataMatcherClientControl: DataMatcherClientControl,\n DataMatchingControlsWorkflow: DataMatchingControlsWorkflow\n};\nvar Dashboard = styled(View)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Content = styled(View)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1, templateObject_2;\nvar DataMatching = styled(View)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n will-change: scroll-position;\\n\"], [\"\\n will-change: scroll-position;\\n\"])));\nvar FormWrapper = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar UploadWrapper = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ErrorWrapper = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$1, templateObject_2$1, templateObject_3, templateObject_4;\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Default\"] = \"DEFAULT\";\n IUiTheme[\"Dark\"] = \"DARK\";\n})(IUiTheme || (IUiTheme = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n})(ITableVariant || (ITableVariant = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IEntityAssigneesType;\n(function (IEntityAssigneesType) {\n IEntityAssigneesType[\"Control\"] = \"CONTROL\";\n IEntityAssigneesType[\"Cluster\"] = \"CLUSTER\";\n})(IEntityAssigneesType || (IEntityAssigneesType = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IMatchingJobControlStatus;\n(function (IMatchingJobControlStatus) {\n IMatchingJobControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobControlStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobControlStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobControlStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobControlStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobControlStatus || (IMatchingJobControlStatus = {}));\nvar IMatchingJobQualityLevel;\n(function (IMatchingJobQualityLevel) {\n IMatchingJobQualityLevel[\"Clear\"] = \"CLEAR\";\n IMatchingJobQualityLevel[\"Unclear\"] = \"UNCLEAR\";\n})(IMatchingJobQualityLevel || (IMatchingJobQualityLevel = {}));\nvar IMatchingJobStatus;\n(function (IMatchingJobStatus) {\n IMatchingJobStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobStatus || (IMatchingJobStatus = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n IFilterType[\"ListLevel\"] = \"LIST_LEVEL\";\n})(IFilterType || (IFilterType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Positive\"] = \"POSITIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n})(ISentiment || (ISentiment = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n IInsightMetricType[\"All\"] = \"ALL\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n})(IInsightType || (IInsightType = {}));\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar IControlQualityScore;\n(function (IControlQualityScore) {\n IControlQualityScore[\"Unclear\"] = \"UNCLEAR\";\n IControlQualityScore[\"Clear\"] = \"CLEAR\";\n})(IControlQualityScore || (IControlQualityScore = {}));\nvar IDataQualityInputTextVariant;\n(function (IDataQualityInputTextVariant) {\n IDataQualityInputTextVariant[\"Control\"] = \"CONTROL\";\n IDataQualityInputTextVariant[\"Policy\"] = \"POLICY\";\n IDataQualityInputTextVariant[\"Regulation\"] = \"REGULATION\";\n})(IDataQualityInputTextVariant || (IDataQualityInputTextVariant = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n ITableHeaderType[\"Inner\"] = \"INNER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n ITableRowType[\"Child\"] = \"CHILD\";\n})(ITableRowType || (ITableRowType = {}));\nvar IRiskIntelligenceAlertInsightType;\n(function (IRiskIntelligenceAlertInsightType) {\n IRiskIntelligenceAlertInsightType[\"BusinessLine\"] = \"BUSINESS_LINE\";\n IRiskIntelligenceAlertInsightType[\"Index\"] = \"INDEX\";\n})(IRiskIntelligenceAlertInsightType || (IRiskIntelligenceAlertInsightType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IGlobalSearchResultAssetType;\n(function (IGlobalSearchResultAssetType) {\n IGlobalSearchResultAssetType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultAssetType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultAssetType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultAssetType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultAssetType[\"RegAlert\"] = \"REG_ALERT\";\n IGlobalSearchResultAssetType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultAssetType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n IGlobalSearchResultAssetType[\"Report\"] = \"REPORT\";\n IGlobalSearchResultAssetType[\"ReportBuilder\"] = \"REPORT_BUILDER\";\n})(IGlobalSearchResultAssetType || (IGlobalSearchResultAssetType = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Trading\"] = \"TRADING\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n})(IProductType || (IProductType = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Private\"] = \"PRIVATE\";\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n})(IReadPermission || (IReadPermission = {}));\nvar IReportType;\n(function (IReportType) {\n IReportType[\"HorizontalBar\"] = \"HORIZONTAL_BAR\";\n IReportType[\"HorizontalBarDataVis\"] = \"HORIZONTAL_BAR_DATA_VIS\";\n IReportType[\"HorizontalBarInsightCodes\"] = \"HORIZONTAL_BAR_INSIGHT_CODES\";\n IReportType[\"HorizontalBarInsightCodesStacked\"] = \"HORIZONTAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"VerticalBar\"] = \"VERTICAL_BAR\";\n IReportType[\"VerticalBarDataVis\"] = \"VERTICAL_BAR_DATA_VIS\";\n IReportType[\"VerticalBarInsightCodes\"] = \"VERTICAL_BAR_INSIGHT_CODES\";\n IReportType[\"VerticalBarInsightCodesStacked\"] = \"VERTICAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"Table\"] = \"TABLE\";\n IReportType[\"TableDataVis\"] = \"TABLE_DATA_VIS\";\n IReportType[\"TableInsightCodes\"] = \"TABLE_INSIGHT_CODES\";\n IReportType[\"TableInsightCodesStacked\"] = \"TABLE_INSIGHT_CODES_STACKED\";\n IReportType[\"OverTimeDataVis\"] = \"OVER_TIME_DATA_VIS\";\n IReportType[\"OverTimeInsightCodes\"] = \"OVER_TIME_INSIGHT_CODES\";\n IReportType[\"PieChartInsightCodes\"] = \"PIE_CHART_INSIGHT_CODES\";\n})(IReportType || (IReportType = {}));\nvar EventDispatcher = function () {\n function EventDispatcher() {\n this.events = new Map();\n }\n EventDispatcher.prototype.dispatch = function (eventName, data) {\n var _a;\n if (this.events.has(eventName)) {\n (_a = this.events.get(eventName)) === null || _a === void 0 ? void 0 : _a.forEach(function (event) {\n event(data);\n });\n }\n };\n EventDispatcher.prototype.listen = function (eventName, callback) {\n if (!this.events.has(eventName)) {\n this.events.set(eventName, [callback]);\n } else {\n var prevEvent = this.events.get(eventName);\n if (prevEvent) {\n this.events.set(eventName, __spreadArray(__spreadArray([], __read(prevEvent), false), [callback], false));\n } else {\n this.events.set(eventName, [callback]);\n }\n }\n };\n EventDispatcher.prototype.removeListener = function (eventName, callback) {\n var _a;\n if (this.events.has(eventName)) {\n var newEvents = (_a = this.events.get(eventName)) === null || _a === void 0 ? void 0 : _a.filter(function (event) {\n return event !== callback;\n });\n if ((newEvents === null || newEvents === void 0 ? void 0 : newEvents.length) === 0 || !newEvents) {\n this.events.delete(eventName);\n } else {\n this.events.set(eventName, newEvents);\n }\n }\n };\n return EventDispatcher;\n}();\nvar Upload = function (_super) {\n __extends(Upload, _super);\n function Upload() {\n var _this = _super.call(this) || this;\n _this.status = 'default';\n _this.percent = 0;\n _this.timer = null;\n return _this;\n }\n Upload.prototype.checkStatus = function (status, file) {\n switch (status) {\n case IFileUploadStatus['Uploaded']:\n this.setStatus('loading', file);\n this.setPercentage(0);\n this.animateTimer();\n break;\n case IFileUploadStatus['Processing']:\n this.setStatus('loading', file);\n this.animateTimer();\n break;\n case IFileUploadStatus['CompletedWithWarnings']:\n this.clearTimer();\n this.setPercentage(100);\n this.setStatus('warning', file);\n break;\n case IFileUploadStatus['Completed']:\n this.clearTimer();\n this.setPercentage(100);\n this.setStatus('success', file);\n break;\n case IFileUploadStatus['Error']:\n this.setStatus('error', file);\n this.clearTimer();\n this.setPercentage(0);\n break;\n case IFileUploadStatus['UnsupportedFile']:\n this.setStatus('error', file);\n this.clearTimer();\n this.setPercentage(0);\n break;\n }\n };\n Upload.prototype.reset = function () {\n this.setStatus('default');\n this.setPercentage(0);\n };\n Upload.prototype.setStatus = function (status, file) {\n if (this.status !== status) {\n this.status = status;\n this.dispatch('STATUS', {\n status: status,\n file: file\n });\n }\n };\n Upload.prototype.animateTimer = function () {\n var _this = this;\n this.clearTimer();\n this.timer = setInterval(function () {\n var newPercent = _this.percent + Math.ceil(Math.random() * 10);\n if (newPercent < 95) {\n _this.setPercentage(newPercent);\n }\n }, 100);\n };\n Upload.prototype.clearTimer = function () {\n if (this.timer) {\n clearInterval(this.timer);\n }\n };\n Upload.prototype.setPercentage = function (percent) {\n this.percent = percent;\n this.dispatch('PERCENT', this.percent);\n };\n return Upload;\n}(EventDispatcher);\nvar MyDataTableFragmentDoc = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n fragment MyDataTable on DataTable {\\n headers {\\n key\\n name\\n sortable\\n direction\\n }\\n rows {\\n fields {\\n key\\n value\\n }\\n }\\n }\\n\"], [\"\\n fragment MyDataTable on DataTable {\\n headers {\\n key\\n name\\n sortable\\n direction\\n }\\n rows {\\n fields {\\n key\\n value\\n }\\n }\\n }\\n\"])));\nvar templateObject_1$2;\nvar MyDataMatchingFileFragmentDoc = gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n fragment MyDataMatchingFile on DataMatchingFile {\\n id\\n name\\n status\\n getIssues {\\n ...MyDataTable\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment MyDataMatchingFile on DataMatchingFile {\\n id\\n name\\n status\\n getIssues {\\n ...MyDataTable\\n }\\n }\\n \", \"\\n\"])), MyDataTableFragmentDoc);\nvar templateObject_1$3;\nvar GetDataMatchingUploadByIdDocument = gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n query getDataMatchingUploadById($id: String!) {\\n getDataMatchingUploadById(id: $id) {\\n ...MyDataMatchingFile\\n }\\n }\\n \", \"\\n\"], [\"\\n query getDataMatchingUploadById($id: String!) {\\n getDataMatchingUploadById(id: $id) {\\n ...MyDataMatchingFile\\n }\\n }\\n \", \"\\n\"])), MyDataMatchingFileFragmentDoc);\n/**\r\n * __useGetDataMatchingUploadByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatchingUploadByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatchingUploadByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatchingUploadByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatchingUploadByIdQuery(baseOptions) {\n return useQuery(GetDataMatchingUploadByIdDocument, baseOptions);\n}\nvar templateObject_1$4;\nvar Notifications = function (props) {\n var status = props.status,\n errorType = props.errorType,\n totalErrors = props.totalErrors;\n switch (status) {\n case 'success':\n {\n return /*#__PURE__*/React.createElement(Notification, {\n title: \"File Successfully Uploaded\",\n status: status\n });\n }\n case 'warning':\n return /*#__PURE__*/React.createElement(Notification, {\n title: \"File Uploaded Without Risk Codes\",\n message: /*#__PURE__*/React.createElement(\"span\", null, \"You may still proceed, but if you would like to re-upload a file which includes risk codes, please drag a file here or \", /*#__PURE__*/React.createElement(Link$2, null, \"browse\"), \" to re-upload.\"),\n status: status\n });\n case 'error':\n {\n if (errorType === 'UNSUPPORTED_FILE') {\n return /*#__PURE__*/React.createElement(Notification, {\n title: \"Unsupported File Format\",\n message: /*#__PURE__*/React.createElement(\"span\", null, \"Please drag your \\u2018.csv\\u2019 or \\u2018.xls\\u2019 file here or \", /*#__PURE__*/React.createElement(Link$2, null, \"browse\"), \" for a file to upload.\"),\n status: status\n });\n }\n return /*#__PURE__*/React.createElement(Notification, {\n title: \"Your File Could Not Be Uploaded\",\n message: /*#__PURE__*/React.createElement(\"span\", null, \"Please correct the below \", totalErrors, \" errors and drag your file here or \", /*#__PURE__*/React.createElement(Link$2, null, \"browse\"), ' ', \"to re-upload.\"),\n status: status\n });\n }\n default:\n return null;\n }\n};\nvar UploadingStatus = function (props) {\n var file = props.file,\n fileId = props.fileId,\n _a = props.sizeLimit,\n sizeLimit = _a === void 0 ? 20 : _a,\n upload = props.upload;\n var _b = __read(React.useState('default'), 2),\n status = _b[0],\n setStatus = _b[1];\n var _c = __read(React.useState(0), 2),\n percentage = _c[0],\n setPercentage = _c[1]; // Fetch the data when we have a fileId\n\n var _d = useGetDataMatchingUploadByIdQuery({\n variables: {\n id: fileId\n },\n skip: !fileId\n }),\n data = _d.data,\n startPolling = _d.startPolling,\n stopPolling = _d.stopPolling;\n React.useEffect(function () {\n var statusUpdated = function (payload) {\n setStatus(payload.status);\n if (payload.status === 'loading') {\n startPolling(1000);\n } else {\n stopPolling();\n }\n }; // Watch for these bits of data changing\n\n upload.listen('STATUS', statusUpdated);\n upload.listen('PERCENT', setPercentage);\n return function () {\n upload.removeListener('STATUS', statusUpdated);\n upload.removeListener('PERCENT', setPercentage);\n };\n }, [upload, startPolling, stopPolling]); // When the data from graphql changes, check the status of this change,\n // and upload will handle the dispatching of events\n\n React.useEffect(function () {\n var _a, _b;\n if ((_a = data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById) === null || _a === void 0 ? void 0 : _a.status) {\n upload.checkStatus((_b = data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById) === null || _b === void 0 ? void 0 : _b.status, data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById);\n }\n }, [data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById, upload]); // Clear the list\n\n var onClear = function () {\n upload.reset();\n props.onClear();\n };\n var getNotification = function () {\n var _a, _b, _c;\n return /*#__PURE__*/React.createElement(Notifications, {\n status: status,\n errorType: (_a = data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById) === null || _a === void 0 ? void 0 : _a.status,\n totalErrors: (_c = (_b = data === null || data === void 0 ? void 0 : data.getDataMatchingUploadById) === null || _b === void 0 ? void 0 : _b.getIssues) === null || _c === void 0 ? void 0 : _c.rows.length\n });\n };\n if (!file) return null; // Determine if this is a large file size\n\n var isLargeUpload = file.size / 1000 > sizeLimit * 1000;\n return /*#__PURE__*/React.createElement(UploadingContent, {\n status: status,\n isLargeUpload: isLargeUpload,\n notification: getNotification(),\n hideUploadStatusWithNotification: status === 'error',\n onClose: onClear,\n percentage: percentage,\n files: [file].map(function (item) {\n return item.name || 'File loading...';\n })\n });\n};\nvar UploadingStatus$1 = styled(UploadingStatus)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\nvar Uploader = styled(View)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6;\nvar Uploader$1 = function (props) {\n var className = props.className,\n uploadURL = props.uploadURL,\n headers = props.headers,\n upload = props.upload,\n sizeLimit = props.sizeLimit;\n var _a = __read(React.useState(null), 2),\n file = _a[0],\n setFile = _a[1];\n var _b = __read(React.useState(null), 2),\n fileId = _b[0],\n setFileId = _b[1];\n var _c = __read(React.useState('default'), 2),\n status = _c[0],\n setStatus = _c[1];\n var _d = __read(React.useState(false), 2),\n fileUploadIssue = _d[0],\n setFileUploadIssue = _d[1];\n React.useEffect(function () {\n var statusUpdated = function (payload) {\n setStatus(payload.status);\n };\n upload.listen('STATUS', statusUpdated);\n return function () {\n upload.removeListener('STATUS', statusUpdated);\n };\n }, [upload, setStatus]); // This will upload the file after having read it\n\n var uploadFile = function (file) {\n var formData = new FormData();\n formData.append('csv', file);\n fetch(uploadURL, {\n method: 'POST',\n headers: __assign({}, headers),\n body: formData\n }).then(function (response) {\n return response.json();\n }).then(function (success) {\n setFileUploadIssue(false);\n setFileId(success.id);\n }).catch(function (error) {\n // Handle the error response object\n setFileUploadIssue(true);\n });\n };\n var onAddFiles = function (files) {\n // Only handle the 1 file..\n setFile(files[0]);\n uploadFile(files[0]);\n };\n var onClear = function () {\n setFile(null);\n setFileId(null);\n };\n var renderProgress = function () {\n // This error will show if there is a general uplaod file issue, rather than the processing that\n // is handled by the UploadingStatus components\n if (fileUploadIssue) {\n return function () {\n return /*#__PURE__*/React.createElement(Notification, {\n title: \"Error uploading file\",\n message: /*#__PURE__*/React.createElement(\"span\", null, \"Please drag your \\u2018.csv\\u2019 or \\u2018.xls\\u2019 file here or \", /*#__PURE__*/React.createElement(Link$2, null, \"browse\"), \" for a file to upload.\"),\n status: \"error\"\n });\n };\n } else if (file) {\n return function () {\n return /*#__PURE__*/React.createElement(UploadingStatus$1, {\n upload: upload,\n onClear: onClear,\n fileId: fileId || undefined,\n file: file || undefined,\n sizeLimit: sizeLimit\n });\n };\n }\n return undefined;\n };\n return /*#__PURE__*/React.createElement(Uploader, {\n \"data-testid\": generate(['uploader'], props),\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(DragDropUpload, {\n uploadMessage: \"Supports '.csv' or '.xlxs' formats\",\n supportedTypes: \".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, text/plain\",\n status: status,\n onAddFiles: onAddFiles,\n onClearFiles: onClear,\n renderProgress: renderProgress()\n })));\n};\nvar Uploader$2 = styled(Uploader$1)(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$7;\nvar Form = styled(View)(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-wrap: wrap;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-wrap: wrap;\\n\"])));\nvar InputWrapper = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n width: \", \";\\n margin-bottom: \", \";\\n\\n margin-left: \", \";\\n\\n &:first-child {\\n margin-left: 0;\\n }\\n\\n flex: 1;\\n\\n \", \" {\\n width: 100%;\\n }\\n\"], [\"\\n width: \", \";\\n margin-bottom: \", \";\\n\\n margin-left: \", \";\\n\\n &:first-child {\\n margin-left: 0;\\n }\\n\\n flex: 1;\\n\\n \", \" {\\n width: 100%;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(47);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, Select$1);\nvar templateObject_1$8, templateObject_2$2;\nvar Form$1 = function (props) {\n var className = props.className,\n matching = props.matching,\n values = props.values,\n onChange = props.onChange;\n var getAccounts = function () {\n return (matching || []).map(function (item) {\n return {\n value: item.id,\n label: item.name\n };\n });\n };\n var getMatchingAccount = function (accountId) {\n if (accountId) {\n return (matching || []).find(function (item) {\n return item.id === accountId;\n });\n }\n return null;\n };\n var getInventories = function () {\n var matchingAccount = getMatchingAccount(values.accountId);\n if (matchingAccount) {\n return matchingAccount.riskInventories.map(function (item) {\n return {\n value: item.id,\n label: item.name\n };\n });\n }\n return [];\n };\n var getMakers = function () {\n var matchingAccount = getMatchingAccount(values.accountId);\n if (matchingAccount) {\n return matchingAccount.availableMatchers.map(function (item) {\n return {\n value: item.id,\n label: item.name\n };\n });\n }\n return [];\n };\n /**\r\n * Get the list of approvers without the matcher in\r\n */\n\n var getApprovers = function () {\n var matchingAccount = getMatchingAccount(values.accountId);\n if (matchingAccount) {\n return matchingAccount.availableApprovers.reduce(function (acc, item) {\n return values.matcherId === item.id ? acc : __spreadArray(__spreadArray([], __read(acc), false), [{\n value: item.id,\n label: item.name\n }], false);\n }, []);\n }\n return [];\n };\n var onFormChange = function (field, value) {\n // Get the value, from the select, (but if it is '' set it to null)\n // const value = (e.target.value === '' ? null : e.target.value);\n var myValue = value === '' ? null : value.toString();\n switch (field) {\n case 'accountId':\n // When we change this field, we need to remove the rest of the other values\n onChange([{\n field: 'accountId',\n value: myValue\n }, {\n field: 'inventoryId',\n value: null\n }, {\n field: 'matcherId',\n value: null\n }, {\n field: 'approverId',\n value: null\n }]);\n break;\n case 'inventoryId':\n {\n var matchingAccount = getMatchingAccount(values.accountId);\n var defaultApproverId = null;\n var defaultmatcherId = null;\n if (matchingAccount && matchingAccount.defaultApprover) {\n defaultApproverId = matchingAccount.defaultApprover.id;\n }\n if (matchingAccount && matchingAccount.defaultMatcher) {\n defaultmatcherId = matchingAccount.defaultMatcher.id;\n } // When we change this field, we need to remove the rest of the other values\n\n onChange([{\n field: 'inventoryId',\n value: myValue\n }, {\n field: 'matcherId',\n value: defaultmatcherId\n }, {\n field: 'approverId',\n value: defaultApproverId\n }]);\n break;\n }\n case 'matcherId':\n return onChange(__spreadArray([{\n field: field,\n value: myValue\n }], __read(myValue === values.approverId ? [{\n field: 'approverId',\n value: null\n }] : []), false));\n default:\n // check if the approver\n onChange([{\n field: field,\n value: myValue\n }]);\n break;\n }\n };\n return /*#__PURE__*/React.createElement(Form, {\n \"data-testid\": generate(['data-matching__form'], props),\n className: className\n }, /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputGroup, {\n label: \"Client\",\n id: \"client\",\n isRequired: true,\n \"data-testid\": \"input-group--client\"\n }, /*#__PURE__*/React.createElement(Select$1, {\n id: \"client\",\n value: values.accountId || '',\n options: getAccounts(),\n onChange: function (value) {\n return onFormChange('accountId', value);\n }\n }))), /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputGroup, {\n label: \"Risk Inventory\",\n id: \"inventory\",\n isRequired: true,\n \"data-testid\": \"input-group--inventory\"\n }, /*#__PURE__*/React.createElement(Select$1, {\n id: \"inventory\",\n disabled: !values.accountId,\n value: values.inventoryId || '',\n options: getInventories(),\n onChange: function (value) {\n return onFormChange('inventoryId', value);\n }\n }))), /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputGroup, {\n label: \"Maker\",\n id: \"maker\",\n isRequired: true,\n \"data-testid\": \"input-group--maker\"\n }, /*#__PURE__*/React.createElement(Select$1, {\n id: \"maker\",\n disabled: !values.inventoryId,\n value: values.matcherId || '',\n options: getMakers(),\n onChange: function (value) {\n return onFormChange('matcherId', value);\n }\n }))), /*#__PURE__*/React.createElement(InputWrapper, null, /*#__PURE__*/React.createElement(InputGroup, {\n label: \"Approver\",\n id: \"approver\",\n isRequired: true,\n \"data-testid\": \"input-group--approver\"\n }, /*#__PURE__*/React.createElement(Select$1, {\n disabled: !values.inventoryId,\n value: values.approverId || '',\n options: getApprovers(),\n onChange: function (value) {\n return onFormChange('approverId', value);\n }\n }))));\n};\nvar Form$2 = styled(Form$1)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$9;\nvar MyAccountFragmentDoc = gql(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\\n fragment MyAccount on Account {\\n id\\n name\\n }\\n\"], [\"\\n fragment MyAccount on Account {\\n id\\n name\\n }\\n\"])));\nvar templateObject_1$a;\nvar MyRiskInventoryFragmentDoc = gql(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\\n fragment MyRiskInventory on RiskInventory {\\n id\\n name\\n }\\n\"], [\"\\n fragment MyRiskInventory on RiskInventory {\\n id\\n name\\n }\\n\"])));\nvar templateObject_1$b;\nvar MyUserFragmentDoc = gql(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n fragment MyUser on User {\\n id\\n name\\n }\\n\"], [\"\\n fragment MyUser on User {\\n id\\n name\\n }\\n\"])));\nvar templateObject_1$c;\nvar MyDataMatchingAccountFragmentDoc = gql(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\\n fragment MyDataMatchingAccount on Account {\\n ...MyAccount\\n riskInventories {\\n ...MyRiskInventory\\n }\\n availableMatchers {\\n ...MyUser\\n }\\n availableApprovers {\\n ...MyUser\\n }\\n defaultApprover {\\n id\\n }\\n defaultMatcher {\\n id\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment MyDataMatchingAccount on Account {\\n ...MyAccount\\n riskInventories {\\n ...MyRiskInventory\\n }\\n availableMatchers {\\n ...MyUser\\n }\\n availableApprovers {\\n ...MyUser\\n }\\n defaultApprover {\\n id\\n }\\n defaultMatcher {\\n id\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), MyAccountFragmentDoc, MyRiskInventoryFragmentDoc, MyUserFragmentDoc);\nvar templateObject_1$d;\nvar GetDataMatchingAccountsDocument = gql(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\\n query getDataMatchingAccounts {\\n getDataMatchingAccounts {\\n ...MyDataMatchingAccount\\n }\\n }\\n \", \"\\n\"], [\"\\n query getDataMatchingAccounts {\\n getDataMatchingAccounts {\\n ...MyDataMatchingAccount\\n }\\n }\\n \", \"\\n\"])), MyDataMatchingAccountFragmentDoc);\n/**\r\n * __useGetDataMatchingAccountsQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatchingAccountsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatchingAccountsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatchingAccountsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatchingAccountsQuery(baseOptions) {\n return useQuery(GetDataMatchingAccountsDocument, baseOptions);\n}\nvar templateObject_1$e;\nvar CreateDataMatcherDocument = gql(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n mutation createDataMatcher($input: CreateDataMatcherInput!) {\\n createDataMatcher(input: $input) {\\n id\\n }\\n }\\n\"], [\"\\n mutation createDataMatcher($input: CreateDataMatcherInput!) {\\n createDataMatcher(input: $input) {\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useCreateDataMatcherMutation__\r\n *\r\n * To run a mutation, you first call `useCreateDataMatcherMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateDataMatcherMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [createDataMatcherMutation, { data, loading, error }] = useCreateDataMatcherMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useCreateDataMatcherMutation(baseOptions) {\n return useMutation(CreateDataMatcherDocument, baseOptions);\n}\nvar templateObject_1$f;\nvar DataTable = styled(View)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$g;\nvar DataTable$1 = function (props) {\n var className = props.className,\n data = props.data; // Map the data from the DataTable graphql shape into the components structure\n\n var headers = ((data === null || data === void 0 ? void 0 : data.headers) || []).map(function (item) {\n return {\n key: item.key,\n label: item.name,\n sortable: item.sortable,\n direction: item.direction || undefined\n };\n });\n var rows = ((data === null || data === void 0 ? void 0 : data.rows) || []).reduce(function (acc, item) {\n return __spreadArray(__spreadArray([], __read(acc), false), [item.fields.reduce(function (a, b) {\n var _a;\n return __assign(__assign({}, a), (_a = {}, _a[b.key] = b.value, _a));\n }, {})], false);\n }, []);\n return /*#__PURE__*/React.createElement(DataTable, {\n \"data-testid\": generate(['data-matching__data-table'], props),\n className: className\n }, /*#__PURE__*/React.createElement(DataTable$6, {\n clientSort: true,\n headers: headers,\n rows: rows\n }));\n};\nvar DataTable$2 = styled(DataTable$1)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$h;\nvar DataMatchingErrors = /*#__PURE__*/React.memo(function (_a) {\n var issues = _a.issues;\n if (!issues) {\n return null;\n }\n return /*#__PURE__*/React.createElement(ErrorWrapper, {\n \"data-testid\": \"data-matching__upload-errors\"\n }, /*#__PURE__*/React.createElement(DataTable$2, {\n data: issues\n }));\n});\nvar INITIAL_FORM_STATE = {\n accountId: null,\n inventoryId: null,\n matcherId: null,\n approverId: null\n};\nvar INITIAL_STATUS_STATE = {\n status: 'default',\n file: null\n};\nvar NewIntegrations = function (props) {\n var _a;\n var className = props.className,\n uploadURL = props.uploadURL,\n headers = props.headers,\n onClose = props.onClose,\n onCreate = props.onCreate,\n continueEnabled = props.continueEnabled,\n sizeLimit = props.sizeLimit;\n var _b = __read(React.useState(1), 2),\n renderKey = _b[0],\n setRenderKey = _b[1];\n var _c = __read(React.useState(INITIAL_STATUS_STATE), 2),\n status = _c[0],\n setStatus = _c[1];\n var _d = __read(React.useState(INITIAL_FORM_STATE), 2),\n formData = _d[0],\n setFormData = _d[1];\n var upload = React.useMemo(function () {\n return new Upload();\n }, []);\n React.useEffect(function () {\n var statusUpdated = function (payload) {\n setStatus({\n status: payload.status,\n file: payload.file\n });\n };\n upload.listen('STATUS', statusUpdated);\n return function () {\n upload.removeListener('STATUS', statusUpdated);\n };\n }, [upload, setStatus]);\n var _e = __read(useCreateDataMatcherMutation(), 1),\n createDataMatcherMutation = _e[0];\n var data = useGetDataMatchingAccountsQuery().data;\n var onFormChange = function (updates) {\n var updateData = updates.reduce(function (acc, item) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[item.field] = item.value, _a));\n }, {});\n setFormData(__assign(__assign({}, formData), updateData));\n };\n var onCloseModal = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(formData.accountId || status.file)) return [3\n /*break*/, 2];\n return [4\n /*yield*/, confirmationModal({\n title: 'Are You Sure?',\n message: 'Your changes will not be saved. Are you sure you would like to cancel this upload?',\n cancelText: 'No, Continue Upload',\n submitText: 'Yes, Cancel Upload'\n })];\n case 1:\n res = _a.sent();\n if (res) {\n onClose();\n }\n return [3\n /*break*/, 3];\n case 2:\n onClose();\n _a.label = 3;\n case 3:\n return [2\n /*return*/];\n }\n });\n });\n };\n var hasCompletedFile = false;\n if (['success', 'warning'].includes(status.status) && status.file) {\n hasCompletedFile = status.file !== null;\n }\n var isInvalid = !hasCompletedFile || Object.values(formData).some(function (item) {\n return item === null;\n });\n var onSave = function (closeAfterSave) {\n if (closeAfterSave === void 0) {\n closeAfterSave = false;\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!isInvalid) return [3\n /*break*/, 2];\n return [4\n /*yield*/, createDataMatcherMutation({\n variables: {\n input: {\n fileId: (_a = status.file) === null || _a === void 0 ? void 0 : _a.id,\n accountId: formData.accountId,\n riskInventoryId: formData.inventoryId,\n matcherId: formData.matcherId,\n approverId: formData.approverId\n }\n }\n })];\n case 1:\n _b.sent(); // Force render of the entire component.\n\n setRenderKey(renderKey + 1);\n setFormData(INITIAL_FORM_STATE);\n setStatus(INITIAL_STATUS_STATE); // Pass back that something has been created\n\n onCreate();\n if (closeAfterSave) {\n onClose();\n }\n _b.label = 2;\n case 2:\n return [2\n /*return*/];\n }\n });\n });\n };\n var saveAndAddAnother = {\n label: 'Save and Add Another',\n onClick: function () {\n return onSave();\n },\n disabled: isInvalid\n };\n var saveAndExit = {\n label: 'Save and Exit',\n onClick: function () {\n return onSave(true);\n },\n disabled: isInvalid\n };\n var saveAndContinue = {\n label: 'Save and Continue',\n onClick: function () {\n return onSave(true);\n },\n disabled: isInvalid\n };\n return /*#__PURE__*/React.createElement(Modal, {\n show: true,\n size: \"large\",\n title: \"New Integration\",\n onClose: onCloseModal,\n footerButtonPrimary: continueEnabled ? saveAndExit : saveAndAddAnother,\n footerButtonSecondary: continueEnabled ? saveAndContinue : saveAndExit\n }, /*#__PURE__*/React.createElement(DataMatching, {\n key: renderKey,\n \"data-testid\": generate(['data-matching'], props),\n className: className\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(FormWrapper, null, /*#__PURE__*/React.createElement(Form$2, {\n matching: data === null || data === void 0 ? void 0 : data.getDataMatchingAccounts,\n values: formData,\n onChange: onFormChange\n })), /*#__PURE__*/React.createElement(UploadWrapper, null, /*#__PURE__*/React.createElement(Uploader$2, {\n sizeLimit: sizeLimit,\n upload: upload,\n uploadURL: uploadURL,\n headers: headers\n })), status.status === 'error' && /*#__PURE__*/React.createElement(DataMatchingErrors, {\n issues: ((_a = status.file) === null || _a === void 0 ? void 0 : _a.getIssues) || undefined\n }))));\n};\nvar NewIntegrations$1 = styled(NewIntegrations)(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$i;\nvar Results = styled.div(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\"], [\"\"])));\nvar AlertContainer = styled(View)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n padding: \", \";\\n position: absolute;\\n width: 100%;\\n z-index: 1;\\n\"], [\"\\n padding: \", \";\\n position: absolute;\\n width: 100%;\\n z-index: 1;\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar CardContainer = styled(CardBoard)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n [data-testid='scrollable-content__content--scrollable'] > div {\\n margin: \", \";\\n }\\n\"], [\"\\n [data-testid='scrollable-content__content--scrollable'] > div {\\n margin: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar CardItem = styled(CardBoardItem)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$j, templateObject_2$3, templateObject_3$1, templateObject_4$1;\nvar CardContents = styled(Panel)(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\"], [\"\"])));\nvar Card = styled(View)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar File = styled(View)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar Indicator = styled(View)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n background: \", \";\\n box-shadow: 0 0 6px \", \";\\n top: 6px;\\n left: 0;\\n margin-top: 14px;\\n margin-right: 8px;\\n border-radius: 100%;\\n display: inline-flex;\\n\"], [\"\\n height: \", \";\\n width: \", \";\\n background: \", \";\\n box-shadow: 0 0 6px \", \";\\n top: 6px;\\n left: 0;\\n margin-top: 14px;\\n margin-right: 8px;\\n border-radius: 100%;\\n display: inline-flex;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar templateObject_1$k, templateObject_2$4, templateObject_3$2, templateObject_4$2;\nvar Footer = styled(View)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"])));\nvar Avatars = styled(View)(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n margin-right: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Spacer = styled(View)(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar AdditionalLabel = styled(Text$1)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar TooltipWrapper = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: middle;\\n color: \", \";\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: middle;\\n color: \", \";\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.info.getValue().main;\n}, Text$1, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$l, templateObject_2$5, templateObject_3$3, templateObject_4$3, templateObject_5;\nvar Footer$1 = function (props) {\n var _a, _b;\n var className = props.className,\n data = props.data,\n status = props.status,\n assignedTo = props.assignedTo,\n userId = props.userId,\n viewStyle = props.viewStyle,\n notStarted = props.notStarted;\n var _c = props.onMatchConnections,\n onMatchConnections = _c === void 0 ? function () {} : _c;\n var sortUsers = function (a, b) {\n var aLastName = a.name.split(' ')[a.name.split(' ').length - 1];\n var bLastName = b.name.split(' ')[b.name.split(' ').length - 1];\n return aLastName.localeCompare(bLastName);\n };\n var nonUserMatchers = data.matchers.filter(function (matcher) {\n return matcher.id !== userId;\n }).sort(sortUsers);\n var nonUserApprovers = data.approvers.filter(function (approver) {\n return approver.id !== userId;\n }).sort(sortUsers);\n var hasNoUsers = data.approvers.length === 0 && data.matchers.length === 0;\n var hasNoApprovers = data.approvers.length === 0;\n var hasNoMatchers = data.matchers.length === 0;\n var userMatcher = (_a = data.matchers) === null || _a === void 0 ? void 0 : _a.find(function (matcher) {\n return matcher.id === userId;\n });\n var userApprover = (_b = data.approvers) === null || _b === void 0 ? void 0 : _b.find(function (approver) {\n return approver.id === userId;\n });\n var matchers = !!userMatcher ? __spreadArray([userMatcher], __read(nonUserMatchers), false) : __spreadArray([], __read(data.matchers), false).sort(sortUsers);\n var approvers = !!userApprover ? __spreadArray([userApprover], __read(nonUserApprovers), false) : __spreadArray([], __read(data.approvers), false).sort(sortUsers);\n var toolTipMatchers = matchers.slice(1);\n var toolTipApprovers = approvers.slice(1);\n var MAX_USERS = 4;\n var matcherRows = 2;\n var approverRows = 2;\n if (toolTipMatchers.length < 2 && toolTipApprovers.length > 2) {\n approverRows = MAX_USERS - toolTipMatchers.length;\n } else if (toolTipApprovers.length < 2 && toolTipMatchers.length > 2) {\n matcherRows = MAX_USERS - toolTipApprovers.length;\n }\n var tooltipContent = /*#__PURE__*/React.createElement(View, null, !!matcherRows && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\",\n weight: 500\n }, \"Additional Matchers:\"), toolTipMatchers.slice(0, matcherRows).map(function (_a) {\n var name = _a.name;\n return /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\"\n }, name);\n }), toolTipMatchers.length > matcherRows && /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\"\n }, \"+ \", toolTipMatchers.length - matcherRows, \" others\")), /*#__PURE__*/React.createElement(Spacer, null), !!approverRows && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\",\n weight: 500\n }, \"Additional Approvers:\"), toolTipApprovers.slice(0, approverRows).map(function (_a) {\n var name = _a.name;\n return /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\"\n }, name);\n }), toolTipApprovers.length > approverRows && /*#__PURE__*/React.createElement(Text$1, {\n variant: \"context\"\n }, \"+ \", toolTipApprovers.length - approverRows, \" others\")));\n var getAvatars = function () {\n var _a, _b, _c, _d;\n if (hasNoUsers) {\n return [];\n }\n var matcherAvatar = /*#__PURE__*/React.createElement(Avatar, {\n image: ((_a = matchers[0]) === null || _a === void 0 ? void 0 : _a.avatar) || undefined,\n name: (_b = matchers[0]) === null || _b === void 0 ? void 0 : _b.name,\n overlayIcon: status === IDataMatchingStatus.Complete || assignedTo !== IDataMatcherAssignedTo.Matcher ? /*#__PURE__*/React.createElement(IconSecurityLocked, null) : undefined\n });\n var approverAvatar = /*#__PURE__*/React.createElement(Avatar, {\n image: ((_c = approvers[0]) === null || _c === void 0 ? void 0 : _c.avatar) || undefined,\n name: (_d = approvers[0]) === null || _d === void 0 ? void 0 : _d.name,\n overlayIcon: status === IDataMatchingStatus.Complete || assignedTo !== IDataMatcherAssignedTo.Approver ? /*#__PURE__*/React.createElement(IconSecurityLocked, null) : undefined\n });\n if (hasNoApprovers) {\n return [matcherAvatar];\n }\n if (hasNoMatchers) {\n return [approverAvatar];\n }\n return [matcherAvatar, approverAvatar];\n };\n var renderCTA = function () {\n if (viewStyle === 'VIEWER') {\n if (notStarted) {\n return /*#__PURE__*/React.createElement(Tag$2, null, \"Not Started\");\n } else if (status === IDataMatchingStatus.Complete) {\n return /*#__PURE__*/React.createElement(Tag$2, null, \"Complete\");\n } else {\n return /*#__PURE__*/React.createElement(Tag$2, null, \"In Progress\");\n }\n } else {\n if (assignedTo === IDataMatcherAssignedTo.Matcher) {\n return /*#__PURE__*/React.createElement(Button, {\n variant: \"secondary\",\n size: \"small\",\n label: \"Match Connections\",\n disabled: !userMatcher,\n onClick: onMatchConnections\n });\n } else {\n return /*#__PURE__*/React.createElement(Button, {\n variant: \"secondary\",\n size: \"small\",\n label: \"Review Connections\",\n disabled: !userApprover || status === IDataMatchingStatus.Complete,\n onClick: onMatchConnections\n });\n }\n }\n };\n return /*#__PURE__*/React.createElement(Footer, {\n \"data-testid\": generate(['card__footer'], props),\n className: className\n }, hasNoUsers ? /*#__PURE__*/React.createElement(Tooltip, {\n content: \"No Matchers or Approvers have been assigned yet\"\n }, function (noUserTooltipRef) {\n return /*#__PURE__*/React.createElement(TooltipWrapper, {\n ref: noUserTooltipRef\n }, /*#__PURE__*/React.createElement(IconAlertInformation, {\n size: \"medium\"\n }), /*#__PURE__*/React.createElement(Text$1, null, \"No Users Assigned\"));\n }) : /*#__PURE__*/React.createElement(Avatars, null, /*#__PURE__*/React.createElement(AvatarCluster, {\n avatars: getAvatars()\n }), !!(toolTipMatchers.length + toolTipApprovers.length) && /*#__PURE__*/React.createElement(Tooltip, {\n content: tooltipContent\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: tooltipRef\n }, /*#__PURE__*/React.createElement(AdditionalLabel, {\n variant: \"secondary\"\n }, \"+\", toolTipMatchers.length + toolTipApprovers.length));\n })), renderCTA());\n};\nvar Progress = styled(View)(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ProgressKeyWrapper = styled(View)(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\\n margin-top: \", \";\\n display: flex;\\n justify-content: flex-start;\\n\"], [\"\\n margin-top: \", \";\\n display: flex;\\n justify-content: flex-start;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ProgressKey = styled(View)(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n padding-left: \", \";\\n margin-top: \", \";\\n position: relative;\\n width: 33%;\\n display: inline-flex;\\n\"], [\"\\n padding-left: \", \";\\n margin-top: \", \";\\n position: relative;\\n width: 33%;\\n display: inline-flex;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ProgressCircle = styled.div(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n border-radius: 100%;\\n height: \", \";\\n width: \", \";\\n background: black; // this gets overitten by a style prop\\n position: absolute;\\n left: 0;\\n top: 2px;\\n\"], [\"\\n border-radius: 100%;\\n height: \", \";\\n width: \", \";\\n background: black; // this gets overitten by a style prop\\n position: absolute;\\n left: 0;\\n top: 2px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ProgressKeyValue = styled(View)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Title = styled(Text$1)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\"], [\"\"])));\nvar SubTitle = styled(Text$1)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$m, templateObject_2$6, templateObject_3$4, templateObject_4$4, templateObject_5$1, templateObject_6, templateObject_7;\nvar ProgressKey$1 = function (props) {\n var title = props.title,\n count = props.count,\n color = props.color;\n if (title && count) {\n return /*#__PURE__*/React.createElement(ProgressKey, {\n \"data-testid\": generate(['progress-key'], props)\n }, /*#__PURE__*/React.createElement(ProgressCircle, {\n style: {\n backgroundColor: color\n }\n }), /*#__PURE__*/React.createElement(ProgressKeyValue, null, /*#__PURE__*/React.createElement(Title, {\n weight: 300\n }, title), /*#__PURE__*/React.createElement(SubTitle, {\n size: -2\n }, count, \" Controls\")));\n }\n return null;\n};\nvar ProgressKey$2 = styled(ProgressKey$1)(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$n;\nvar calculatePercentage = function (total, value) {\n return value / total * 100;\n};\nvar MatcherProgress = function (props) {\n var theme = useTheme();\n var data = props.data,\n isAssignedToMe = props.isAssignedToMe;\n var progress = [{\n type: 'approved',\n color: theme.colors.success.getValue().main,\n title: 'Approved',\n count: data.approved,\n value: calculatePercentage(data.total, data.approved)\n }, {\n type: 'matched',\n color: isAssignedToMe ? theme.colors.accent1.getValue().main : theme.colors.info.getValue().main,\n title: 'Matched',\n count: data.matched,\n value: calculatePercentage(data.total, data.matched)\n }, {\n type: 're-matched',\n color: isAssignedToMe ? theme.colors.accent1.getValue().main : theme.colors.info.getValue().main,\n title: 'Re-Matched',\n count: data.matched,\n value: calculatePercentage(data.total, data.matched > 0 ? data.matched + data.approved : data.matched)\n }].filter(function (item) {\n // If it is in a re-matching state, remove matched\n if (data.approved !== 0 && item.type === 'matched') {\n return false;\n } // If it is in a re-matching state, remove matched\n\n if (data.approved !== 0 && item.type === 're-matched') {\n return true;\n } // Remove re-matched if nothing is approved\n\n if (data.approved === 0 && item.type === 're-matched') {\n return false;\n } // If there is nothing approved, keep the initial matched bar\n\n if (data.approved === 0 && item.type === 'matched') {\n return true;\n }\n return item.count !== 0;\n });\n var leftOver = data.total - data.approved - data.matched;\n var sortedProgress = __spreadArray([], __read(progress), false).sort(function (a, b) {\n return b.value - a.value;\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: sortedProgress\n }), /*#__PURE__*/React.createElement(ProgressKeyWrapper, null, progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), leftOver > 0 && /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"incomplete\",\n title: \"Incomplete\",\n color: \"#EEEEEE\",\n count: leftOver\n })));\n};\nvar calculatePercentage$1 = function (total, value) {\n return value / total * 100;\n};\nvar ApproverProgress = function (props) {\n var data = props.data,\n status = props.status,\n isAssignedToMe = props.isAssignedToMe;\n var theme = useTheme();\n var leftOver = data.matched; // Might be nice to calculate the percentages ahead of time..\n // as they are inclusive of the previous number.. approved + matched etc...\n\n var progress = [{\n type: 'approved',\n color: theme.colors.success.getValue().main,\n title: 'Approved',\n count: data.approved,\n value: calculatePercentage$1(data.total, data.approved)\n }, {\n type: 'rejected',\n color: theme.colors.warning.getValue().main,\n title: 'Rejected',\n count: data.rejected,\n value: calculatePercentage$1(data.total, data.rejected > 0 ? data.approved + data.rejected : data.rejected)\n }].filter(function (item) {\n // If all are approved, then only return approved\n if (data.approved === data.total) {\n return item.type === 'approved';\n }\n return true;\n }); // If I am not assinged and it is in todo state, then just show approved (any available) and \"sent for review\"\n\n if (!isAssignedToMe && status === IDataMatchingStatus.Todo) {\n leftOver = 0;\n progress = [{\n type: 'approved',\n color: theme.colors.success.getValue().main,\n title: 'Approved',\n count: data.approved,\n value: calculatePercentage$1(data.total, data.approved)\n }, {\n type: 'review',\n color: theme.colors.info.getValue().main,\n title: status === IDataMatchingStatus.Todo ? 'Sent For Review' : 'In Review',\n count: data.matched,\n value: calculatePercentage$1(data.total, data.approved > 0 ? data.approved + data.matched + data.rejected : data.matched)\n }].filter(function (item) {\n return item.count !== 0;\n });\n }\n var sortedProgress = __spreadArray([], __read(progress), false).sort(function (a, b) {\n return b.value - a.value;\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: sortedProgress\n }), /*#__PURE__*/React.createElement(ProgressKeyWrapper, null, progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), leftOver > 0 && /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"unreviewer\",\n title: \"Unreviewed\",\n color: \"#EEEEEE\",\n count: leftOver\n })));\n};\nvar Progress$1 = function (props) {\n var className = props.className,\n data = props.data,\n status = props.status,\n assignedTo = props.assignedTo,\n isAssignedToMe = props.isAssignedToMe;\n var renderProgressType = function () {\n if (assignedTo === IDataMatcherAssignedTo.Approver) {\n return /*#__PURE__*/React.createElement(ApproverProgress, {\n data: data,\n status: status,\n isAssignedToMe: isAssignedToMe\n });\n } else if (assignedTo === IDataMatcherAssignedTo.Matcher) {\n return /*#__PURE__*/React.createElement(MatcherProgress, {\n data: data,\n isAssignedToMe: isAssignedToMe\n });\n }\n };\n return /*#__PURE__*/React.createElement(Progress, {\n \"data-testid\": generate(['card__progress'], props),\n className: className\n }, renderProgressType());\n};\nvar File$1 = function (props) {\n var className = props.className,\n data = props.data;\n var dateFormatted = format(new Date(data.createdAt), 'kk:mm-dd LLL yyyy');\n var time = dateFormatted.split('-')[0];\n var date = dateFormatted.split('-')[1];\n return /*#__PURE__*/React.createElement(File, {\n \"data-testid\": generate(['card__file'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: -1,\n weight: 300\n }, \"Loaded On: \", date, \" at \", time));\n};\nvar ErrorAlert = styled(Alert)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$o;\nvar DeleteDataMatcherDocument = gql(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\\n mutation deleteDataMatcher($id: ID!) {\\n deleteDataMatcher(id: $id) {\\n id\\n }\\n }\\n\"], [\"\\n mutation deleteDataMatcher($id: ID!) {\\n deleteDataMatcher(id: $id) {\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useDeleteDataMatcherMutation__\r\n *\r\n * To run a mutation, you first call `useDeleteDataMatcherMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDeleteDataMatcherMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [deleteDataMatcherMutation, { data, loading, error }] = useDeleteDataMatcherMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useDeleteDataMatcherMutation(baseOptions) {\n return useMutation(DeleteDataMatcherDocument, baseOptions);\n}\nvar templateObject_1$p;\nvar ResultsSortFieldFragmentDoc = gql(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\\n fragment ResultsSortField on SortField {\\n field\\n direction\\n label\\n }\\n\"], [\"\\n fragment ResultsSortField on SortField {\\n field\\n direction\\n label\\n }\\n\"])));\nvar templateObject_1$q;\nvar ResultsSortInfoFragmentDoc = gql(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\\n fragment ResultsSortInfo on SortInfo {\\n sort {\\n ...ResultsSortField\\n }\\n available {\\n ...ResultsSortField\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ResultsSortInfo on SortInfo {\\n sort {\\n ...ResultsSortField\\n }\\n available {\\n ...ResultsSortField\\n }\\n }\\n \", \"\\n\"])), ResultsSortFieldFragmentDoc);\nvar templateObject_1$r;\nvar FileDetailsFragmentDoc = gql(templateObject_1$s || (templateObject_1$s = __makeTemplateObject([\"\\n fragment FileDetails on DataMatchingFile {\\n createdAt\\n name\\n }\\n\"], [\"\\n fragment FileDetails on DataMatchingFile {\\n createdAt\\n name\\n }\\n\"])));\nvar templateObject_1$s;\nvar ProgressFragmentDoc = gql(templateObject_1$t || (templateObject_1$t = __makeTemplateObject([\"\\n fragment Progress on DataMatcherMatches {\\n total\\n matched\\n approved\\n rejected\\n }\\n\"], [\"\\n fragment Progress on DataMatcherMatches {\\n total\\n matched\\n approved\\n rejected\\n }\\n\"])));\nvar templateObject_1$t;\nvar AvatarUserFragmentDoc = gql(templateObject_1$u || (templateObject_1$u = __makeTemplateObject([\"\\n fragment AvatarUser on User {\\n id\\n name\\n avatar\\n }\\n\"], [\"\\n fragment AvatarUser on User {\\n id\\n name\\n avatar\\n }\\n\"])));\nvar templateObject_1$u;\nvar UserInfoFragmentDoc = gql(templateObject_1$v || (templateObject_1$v = __makeTemplateObject([\"\\n fragment UserInfo on DataMatcher {\\n matchers {\\n ...AvatarUser\\n }\\n approvers {\\n ...AvatarUser\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment UserInfo on DataMatcher {\\n matchers {\\n ...AvatarUser\\n }\\n approvers {\\n ...AvatarUser\\n }\\n }\\n \", \"\\n\"])), AvatarUserFragmentDoc);\nvar templateObject_1$v;\nvar DataMatcherCardFragmentDoc = gql(templateObject_1$w || (templateObject_1$w = __makeTemplateObject([\"\\n fragment DataMatcherCard on DataMatcher {\\n id\\n account {\\n name\\n }\\n riskInventory {\\n name\\n }\\n file {\\n ...FileDetails\\n }\\n matchingStatus\\n assignedTo\\n matchCounts {\\n ...Progress\\n }\\n ...UserInfo\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatcherCard on DataMatcher {\\n id\\n account {\\n name\\n }\\n riskInventory {\\n name\\n }\\n file {\\n ...FileDetails\\n }\\n matchingStatus\\n assignedTo\\n matchCounts {\\n ...Progress\\n }\\n ...UserInfo\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), FileDetailsFragmentDoc, ProgressFragmentDoc, UserInfoFragmentDoc);\nvar templateObject_1$w;\nvar DataMatchingUploadsPageFragmentDoc = gql(templateObject_1$x || (templateObject_1$x = __makeTemplateObject([\"\\n fragment DataMatchingUploadsPage on DataMatchingUploadsPage {\\n pageInfo {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n }\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatcherCard\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingUploadsPage on DataMatchingUploadsPage {\\n pageInfo {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n }\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatcherCard\\n }\\n }\\n \", \"\\n \", \"\\n\"])), ResultsSortInfoFragmentDoc, DataMatcherCardFragmentDoc);\nvar GetDataMatchingTabsDocument = gql(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n query getDataMatchingTabs($input: DataMatchingUploadsPageInput) {\\n getDataMatchingTabs(input: $input) {\\n id\\n dataMatching {\\n ...DataMatchingUploadsPage\\n }\\n count\\n }\\n }\\n \", \"\\n\"], [\"\\n query getDataMatchingTabs($input: DataMatchingUploadsPageInput) {\\n getDataMatchingTabs(input: $input) {\\n id\\n dataMatching {\\n ...DataMatchingUploadsPage\\n }\\n count\\n }\\n }\\n \", \"\\n\"])), DataMatchingUploadsPageFragmentDoc);\n/**\r\n * __useGetDataMatchingTabsQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatchingTabsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatchingTabsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatchingTabsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatchingTabsQuery(baseOptions) {\n return useQuery(GetDataMatchingTabsDocument, baseOptions);\n}\nvar templateObject_1$x, templateObject_2$7;\nvar DeleteDataMatcherModal = function (props) {\n var id = props.id,\n isOpen = props.isOpen,\n onClose = props.onClose;\n var history = useHistory();\n var onAddToast = useToaster().onAddToast;\n var _a = __read(React.useState(false), 2),\n error = _a[0],\n setError = _a[1];\n var _b = __read(useDeleteDataMatcherMutation({\n onError: function () {\n return setError(true);\n },\n onCompleted: function () {\n history.push(\"/data-management/maintain-data\");\n onClose();\n onAddToast({\n id: \"data-matcher-deleted-\".concat(Math.random().toString()),\n title: 'Connection Deleted',\n status: 'success',\n message: 'Connection has been removed from the platform.',\n removeAt: +new Date() + 10000\n });\n },\n refetchQueries: [{\n query: GetDataMatchingTabsDocument\n }]\n }), 1),\n deleteDataMatcherMutation = _b[0];\n var onDeleteDataMatcher = React.useCallback(function () {\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/, deleteDataMatcherMutation({\n variables: {\n id: id\n }\n })];\n case 1:\n _a.sent();\n return [2\n /*return*/];\n }\n });\n });\n }, [id, deleteDataMatcherMutation]);\n return /*#__PURE__*/React.createElement(Modal, {\n \"data-testid\": generate(['delete-data-matcher-modal'], props),\n title: \"Delete Connection?\",\n size: \"small\",\n show: isOpen,\n onClose: onClose,\n footerButtonPrimary: !error ? {\n label: 'Yes, Delete',\n onClick: function () {\n return onDeleteDataMatcher();\n }\n } : undefined\n }, !error ? /*#__PURE__*/React.createElement(Text$1, null, \"Are you sure you would like to delete this connections file? This action cannot be reversed.\") : /*#__PURE__*/React.createElement(ErrorAlert, {\n status: \"error\",\n title: \"There was an error deleting this Data Connection case.\",\n message: \"Please contact Acin Support.\"\n }));\n};\nvar Card$1 = function (props) {\n var className = props.className,\n data = props.data,\n userId = props.userId,\n _a = props.onMatchConnections,\n onMatchConnections = _a === void 0 ? function () {} : _a;\n var isAssignedToMe = false;\n var _b = __read(React.useState(false), 2),\n showDeleteDataMatcherModal = _b[0],\n setShowDeleteDataMatcherModal = _b[1]; // Who is the user viewing this card?\n\n var getViewStyle = function () {\n if (!!data.matchers.find(function (matcher) {\n return matcher.id === userId;\n })) {\n return 'MATCHER';\n } else if (!!data.approvers.find(function (approver) {\n return approver.id === userId;\n })) {\n return 'APPROVER';\n }\n return 'VIEWER';\n };\n var viewStyle = getViewStyle();\n if (data.assignedTo === IDataMatcherAssignedTo.Matcher && viewStyle === 'MATCHER') {\n isAssignedToMe = true;\n } else if (data.assignedTo === IDataMatcherAssignedTo.Approver && viewStyle === 'APPROVER') {\n isAssignedToMe = true;\n } // it is not started If\n // assigned to matcher and is in todo status\n // and if there is nothing matched, approved, or rejected\n\n var hasAnyWorkBeenDone = data.matchCounts.matched > 0 || data.matchCounts.approved > 0 || data.matchCounts.rejected > 0;\n var notStarted = data.matchingStatus === IDataMatchingStatus.Todo && data.assignedTo === IDataMatcherAssignedTo.Matcher && !hasAnyWorkBeenDone;\n var dropdownMenuItems = data.matchingStatus === 'COMPLETE' ? [] : [{\n label: 'Delete Report',\n onClick: function () {\n return setShowDeleteDataMatcherModal(true);\n },\n icon: /*#__PURE__*/React.createElement(IconDelete, null)\n }];\n var onDropdownMenuClick = function (item, onClose) {\n item.onClick();\n onClose();\n };\n var hasNoUsers = data.approvers.length === 0 && data.matchers.length === 0;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Card, {\n \"data-testid\": generate(['results__card'], props),\n className: className\n }, /*#__PURE__*/React.createElement(CardContents, {\n renderTitle: function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, hasNoUsers && /*#__PURE__*/React.createElement(Indicator, null), /*#__PURE__*/React.createElement(PanelTitle, {\n mainTitleText: data.account.name,\n mainTitleSize: \"large\",\n subtitleText: data.riskInventory.name\n }));\n },\n withMenu: dropdownMenuItems.length > 0,\n menuIcon: function () {\n return /*#__PURE__*/React.createElement(IconKebabVertical, null);\n },\n menuDropdownContent: function (onClose) {\n return dropdownMenuItems.length > 0 && /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function (item) {\n return onDropdownMenuClick(item, onClose);\n },\n items: dropdownMenuItems\n });\n },\n renderFooter: function () {\n return /*#__PURE__*/React.createElement(Footer$1, {\n data: {\n matchers: data.matchers,\n approvers: data.approvers\n },\n userId: userId,\n status: data.matchingStatus,\n assignedTo: data.assignedTo,\n viewStyle: viewStyle,\n notStarted: notStarted,\n onMatchConnections: function (e) {\n return onMatchConnections(data, e);\n }\n });\n }\n }, /*#__PURE__*/React.createElement(PanelSection, null, /*#__PURE__*/React.createElement(File$1, {\n data: data.file\n }), /*#__PURE__*/React.createElement(Progress$1, {\n data: data.matchCounts,\n status: data.matchingStatus,\n assignedTo: data.assignedTo,\n isAssignedToMe: isAssignedToMe\n })))), showDeleteDataMatcherModal && /*#__PURE__*/React.createElement(DeleteDataMatcherModal, {\n id: data.id,\n isOpen: showDeleteDataMatcherModal,\n onClose: function () {\n return setShowDeleteDataMatcherModal(false);\n }\n }));\n};\nvar Card$2 = styled(Card$1)(templateObject_1$y || (templateObject_1$y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$y;\nvar Results$1 = function (props) {\n var className = props.className,\n userId = props.userId,\n onAddNewClick = props.onAddNewClick,\n _a = props.nodes,\n nodes = _a === void 0 ? [] : _a,\n pageInfo = props.pageInfo,\n _b = props.loading,\n loading = _b === void 0 ? false : _b,\n onPageChange = props.onPageChange,\n onMatchConnections = props.onMatchConnections,\n hasSearchTerm = props.hasSearchTerm; // Increment the next page if available\n\n var loadMore = function () {\n var totalPages = (pageInfo === null || pageInfo === void 0 ? void 0 : pageInfo.totalPages) || 1;\n var currentPage = (pageInfo === null || pageInfo === void 0 ? void 0 : pageInfo.page) || 1;\n var nextPage = currentPage + 1;\n if (nextPage <= totalPages) {\n onPageChange(nextPage);\n }\n };\n var renderAlertTitle = hasSearchTerm ? 'No Results.' : 'You have no active integrations.';\n var renderAlertMessage = hasSearchTerm ? 'There were no matches for your search term' : /*#__PURE__*/React.createElement(React.Fragment, null, \"Please \", /*#__PURE__*/React.createElement(Link$2, {\n onClick: onAddNewClick\n }, \"add a new integration\"), \" to populate this area.\");\n return /*#__PURE__*/React.createElement(Results, {\n \"data-testid\": generate(['results'], props),\n className: className\n }, nodes.length === 0 && !loading && /*#__PURE__*/React.createElement(AlertContainer, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: renderAlertTitle,\n message: renderAlertMessage\n })), /*#__PURE__*/React.createElement(CardContainer, {\n loadMore: loadMore\n }, nodes.map(function (item) {\n return /*#__PURE__*/React.createElement(CardItem, {\n key: item.id\n }, /*#__PURE__*/React.createElement(Card$2, {\n key: item.id,\n data: item,\n userId: userId,\n onMatchConnections: onMatchConnections\n }));\n })));\n};\nvar Results$2 = styled(Results$1)(templateObject_1$z || (templateObject_1$z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$z;\nvar Sort = styled(View)(templateObject_1$A || (templateObject_1$A = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$A;\nvar Sort$1 = function (props) {\n var className = props.className,\n options = props.options,\n onChange = props.onChange,\n sortField = props.sortField;\n var selectOptions = options.map(function (item) {\n return {\n value: item.label,\n label: item.label\n };\n }); // When the value changes, pass back the looked up value in the options\n\n var handleChange = function (value) {\n var find = options.find(function (item) {\n return item.label === value;\n });\n if (find) {\n onChange({\n field: find.field,\n direction: find.direction\n });\n }\n }; // Get the current active value based on the field and direction\n\n var getValue = function () {\n var found = options.find(function (item) {\n return item.field === (sortField === null || sortField === void 0 ? void 0 : sortField.field) && item.direction === sortField.direction;\n });\n if (found) {\n return found.label;\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Sort, {\n \"data-testid\": generate(['sort'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Select$1, {\n value: getValue(),\n options: selectOptions,\n onChange: handleChange\n }));\n};\nvar Sort$2 = styled(Sort$1)(templateObject_1$B || (templateObject_1$B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$B;\nvar HeaderBar = function (props) {\n var className = props.className,\n title = props.title,\n onShowModal = props.onShowModal,\n info = props.info,\n onSetSort = props.onSetSort,\n sortField = props.sortField,\n tabs = props.tabs,\n activeTabId = props.activeTabId,\n onTabClick = props.onTabClick,\n onChangeSearchTerm = props.onChangeSearchTerm,\n searchTerm = props.searchTerm;\n var sortInfo = (info || {}).sortInfo;\n var renderCta = function () {\n if (onShowModal) {\n return function () {\n return /*#__PURE__*/React.createElement(Button, {\n variant: \"primary\",\n onClick: onShowModal,\n label: \"Add New\"\n });\n };\n }\n return undefined;\n };\n var renderTabs = function () {\n if (tabs) {\n return tabs.map(function (tab) {\n return {\n id: tab.id,\n label: tab.label\n };\n });\n }\n return [];\n };\n return /*#__PURE__*/React.createElement(PageHeader, {\n className: className,\n variant: \"parent\",\n \"data-testid\": generate(['results__header-bar'], props),\n titleBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderTitleBar, {\n variant: \"parent\",\n mainTitleText: title,\n renderCta: renderCta()\n });\n },\n toolBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderToolBar, {\n searchConfig: {\n placeholder: 'Search by Account Name or Risk Inventory',\n onChange: function (e) {\n return onChangeSearchTerm(e.target.value);\n },\n value: searchTerm\n },\n renderSort: function () {\n return /*#__PURE__*/React.createElement(Sort$2, {\n sortField: sortField,\n options: (sortInfo === null || sortInfo === void 0 ? void 0 : sortInfo.available) || [],\n onChange: onSetSort\n });\n }\n });\n },\n tabsBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderTabsBar, {\n activeId: activeTabId,\n items: renderTabs(),\n onClick: onTabClick\n });\n }\n });\n};\nvar HeaderBar$1 = styled(HeaderBar)(templateObject_1$C || (templateObject_1$C = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$C;\nvar DEFAULT_PATE_META_STATE = {\n pageSize: 200,\n sort: {\n field: 'accountName',\n direction: ISortDirection.Asc\n }\n};\nvar pageMetaReducer = function (state, action) {\n switch (action.type) {\n case 'UPDATE_SORT':\n return __assign(__assign({}, state), {\n sort: action.payload\n });\n default:\n return state;\n }\n};\nvar Dashboard$1 = function (props) {\n var className = props.className,\n uploadURL = props.uploadURL,\n headers = props.headers,\n continueEnabled = props.continueEnabled,\n sizeLimit = props.sizeLimit,\n userId = props.userId,\n onMatchConnections = props.onMatchConnections,\n _a = props.showAddNewIntegrations,\n showAddNewIntegrations = _a === void 0 ? false : _a,\n _b = props.activeTabId,\n activeTabId = _b === void 0 ? 'live' : _b;\n var _c = __read(React.useReducer(pageMetaReducer, DEFAULT_PATE_META_STATE), 2),\n pageMeta = _c[0],\n setPageMeta = _c[1];\n var _d = __read(React.useState(false), 2),\n isOpen = _d[0],\n setIsOpen = _d[1];\n var _e = __read(React.useState(activeTabId), 2),\n activeTab = _e[0],\n setActiveTab = _e[1];\n var history = useHistory();\n var _f = useGetDataMatchingTabsQuery({\n variables: {\n input: {\n pagination: {\n page: 1,\n pageSize: pageMeta.pageSize\n },\n sort: pageMeta.sort\n }\n },\n fetchPolicy: 'cache-and-network'\n }),\n data = _f.data,\n loading = _f.loading,\n fetchMore = _f.fetchMore,\n refetch = _f.refetch;\n var _g = __read(React.useState(''), 2),\n searchTerm = _g[0],\n setSearchTerm = _g[1];\n var onChangeSearchTerm = function (term) {\n setSearchTerm(term);\n };\n var onSetSort = function (payload) {\n setPageMeta({\n type: 'UPDATE_SORT',\n payload: payload\n });\n };\n var onPageChange = function (page) {\n fetchMore({\n variables: {\n input: {\n pagination: {\n page: page,\n pageSize: pageMeta.pageSize\n },\n sort: pageMeta.sort\n }\n }\n });\n };\n var onShowModal = function () {\n setIsOpen(true);\n };\n var onClose = function () {\n setIsOpen(false);\n };\n var onCreate = function () {\n refetch({\n input: {\n pagination: {\n page: 1,\n pageSize: pageMeta.pageSize\n },\n sort: pageMeta.sort\n }\n });\n };\n var getCount = function (id) {\n var _a;\n return ((_a = data === null || data === void 0 ? void 0 : data.getDataMatchingTabs.find(function (tab) {\n return tab.id === id;\n })) === null || _a === void 0 ? void 0 : _a.count) || 0;\n };\n var activeDataMatcherTab = data === null || data === void 0 ? void 0 : data.getDataMatchingTabs.find(function (tab) {\n return tab.id === activeTab;\n });\n var info = React.useMemo(function () {\n return {\n pageInfo: activeDataMatcherTab === null || activeDataMatcherTab === void 0 ? void 0 : activeDataMatcherTab.dataMatching.pageInfo,\n sortInfo: activeDataMatcherTab === null || activeDataMatcherTab === void 0 ? void 0 : activeDataMatcherTab.dataMatching.sortInfo\n };\n }, [activeDataMatcherTab === null || activeDataMatcherTab === void 0 ? void 0 : activeDataMatcherTab.dataMatching]);\n var tabs = [{\n id: 'live',\n label: \"Live (\".concat(getCount('live'), \")\")\n }, {\n id: 'completed',\n label: \"Completed (\".concat(getCount('completed'), \")\")\n }];\n var onTabClick = function (tab) {\n setActiveTab(tab);\n if (tab === 'live') {\n history.push('/data-management/maintain-data/live');\n } else if (tab === 'completed') {\n history.push('/data-management/maintain-data/completed');\n }\n };\n var getFilteredNodes = function () {\n return activeDataMatcherTab === null || activeDataMatcherTab === void 0 ? void 0 : activeDataMatcherTab.dataMatching.nodes.filter(function (item) {\n var name = item.account.name;\n var riskInvName = item.riskInventory.name;\n if (searchTerm) {\n return [name, riskInvName].join().toLowerCase().includes(searchTerm.toLowerCase());\n }\n return [];\n });\n };\n return /*#__PURE__*/React.createElement(Dashboard, {\n \"data-testid\": generate(['data-connections__dashboard'], props),\n className: className\n }, /*#__PURE__*/React.createElement(HeaderBar$1, {\n title: \"Data Connections\",\n onShowModal: showAddNewIntegrations ? onShowModal : undefined,\n info: info,\n onSetSort: onSetSort,\n sortField: pageMeta.sort,\n tabs: tabs,\n activeTabId: activeTab,\n onTabClick: onTabClick,\n onChangeSearchTerm: onChangeSearchTerm,\n searchTerm: searchTerm\n }), /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(Results$2, {\n nodes: getFilteredNodes(),\n pageInfo: activeDataMatcherTab === null || activeDataMatcherTab === void 0 ? void 0 : activeDataMatcherTab.dataMatching.pageInfo,\n loading: loading,\n userId: userId,\n onAddNewClick: showAddNewIntegrations ? onShowModal : undefined,\n onPageChange: onPageChange,\n onMatchConnections: onMatchConnections,\n hasSearchTerm: searchTerm ? true : false\n })), isOpen && uploadURL && /*#__PURE__*/React.createElement(NewIntegrations$1, {\n uploadURL: uploadURL,\n headers: headers,\n onClose: onClose,\n onCreate: onCreate,\n continueEnabled: continueEnabled,\n sizeLimit: sizeLimit\n }));\n};\nvar Dashboard$2 = styled(Dashboard$1)(templateObject_1$D || (templateObject_1$D = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$D;\nvar containerBackground = themeHelpers.containerBackground; // This named style should be the wrapper for the component i.e. the module\n\nvar DataMatching$1 = styled(View)(templateObject_1$E || (templateObject_1$E = __makeTemplateObject([\"\"], [\"\"])));\nvar Workflow = styled(View)(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\\n position: flex;\\n background: \", \";\\n\"], [\"\\n position: flex;\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Content$1 = styled.div(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\\n overflow-y: auto;\\n position: relative;\\n\"], [\"\\n overflow-y: auto;\\n position: relative;\\n\"])));\nvar Footer$2 = styled(View)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n align-items: center;\\n padding: \", \";\\n box-shadow: 0px -4px 4px \", \";\\n \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n align-items: center;\\n padding: \", \";\\n box-shadow: 0px -4px 4px \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return containerBackground(p.activeTheme);\n});\nvar FooterNextButton = styled(Button)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderSort = styled(Select$1)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n min-width: 200px;\\n\"], [\"\\n min-width: 200px;\\n\"])));\nvar templateObject_1$E, templateObject_2$8, templateObject_3$5, templateObject_4$5, templateObject_5$2, templateObject_6$1;\nvar DataMatchingMatchScoreFragmentDoc = gql(templateObject_1$F || (templateObject_1$F = __makeTemplateObject([\"\\n fragment DataMatchingMatchScore on DataMatcherMatchScore {\\n score\\n highlight\\n }\\n\"], [\"\\n fragment DataMatchingMatchScore on DataMatcherMatchScore {\\n score\\n highlight\\n }\\n\"])));\nvar templateObject_1$F;\nvar DataMatchingRelationshipCountFragmentDoc = gql(templateObject_1$G || (templateObject_1$G = __makeTemplateObject([\"\\n fragment DataMatchingRelationshipCount on DataMatchingRelationshipCount {\\n to\\n from\\n }\\n\"], [\"\\n fragment DataMatchingRelationshipCount on DataMatchingRelationshipCount {\\n to\\n from\\n }\\n\"])));\nvar templateObject_1$G;\nvar DataMatchingClientControlDescriptionFragmentDoc = gql(templateObject_1$H || (templateObject_1$H = __makeTemplateObject([\"\\n fragment DataMatchingClientControlDescription on DataMatcherUploadedClientControl {\\n description\\n clientControlObjectives: objectives\\n clientControlType: controlType\\n clientControlOwner: controlOwner\\n clientControlFrequency: controlFrequency\\n clientControlQualityScore: controlQualityScore\\n }\\n\"], [\"\\n fragment DataMatchingClientControlDescription on DataMatcherUploadedClientControl {\\n description\\n clientControlObjectives: objectives\\n clientControlType: controlType\\n clientControlOwner: controlOwner\\n clientControlFrequency: controlFrequency\\n clientControlQualityScore: controlQualityScore\\n }\\n\"])));\nvar templateObject_1$H;\nvar DataMatchingCommentFragmentDoc = gql(templateObject_1$I || (templateObject_1$I = __makeTemplateObject([\"\\n fragment DataMatchingComment on DataMatcherComment {\\n id\\n user {\\n name\\n }\\n comment\\n createdAt\\n }\\n\"], [\"\\n fragment DataMatchingComment on DataMatcherComment {\\n id\\n user {\\n name\\n }\\n comment\\n createdAt\\n }\\n\"])));\nvar templateObject_1$I;\nvar DataMatchingMatchRecordStatusFragmentDoc = gql(templateObject_1$J || (templateObject_1$J = __makeTemplateObject([\"\\n fragment DataMatchingMatchRecordStatus on DataMatcherMatchRecord {\\n status\\n approvedRejectedAt\\n }\\n\"], [\"\\n fragment DataMatchingMatchRecordStatus on DataMatcherMatchRecord {\\n status\\n approvedRejectedAt\\n }\\n\"])));\nvar templateObject_1$J;\nvar DataMatchingMatchRecordFragmentDoc = gql(templateObject_1$K || (templateObject_1$K = __makeTemplateObject([\"\\n fragment DataMatchingMatchRecord on DataMatcherMatchRecord {\\n id\\n reasonCode\\n matchedAcinControl {\\n id\\n }\\n internalComment {\\n ...DataMatchingComment\\n }\\n externalComment {\\n ...DataMatchingComment\\n }\\n ...DataMatchingMatchRecordStatus\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingMatchRecord on DataMatcherMatchRecord {\\n id\\n reasonCode\\n matchedAcinControl {\\n id\\n }\\n internalComment {\\n ...DataMatchingComment\\n }\\n externalComment {\\n ...DataMatchingComment\\n }\\n ...DataMatchingMatchRecordStatus\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingCommentFragmentDoc, DataMatchingMatchRecordStatusFragmentDoc);\nvar templateObject_1$K;\nvar DataMatchingClientControlRowFragmentDoc = gql(templateObject_1$L || (templateObject_1$L = __makeTemplateObject([\"\\n fragment DataMatchingClientControlRow on DataMatcherClientControl {\\n id\\n status\\n totalInternalComments\\n totalMatchedAcinControls\\n totalInventoryMatches\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n control {\\n title\\n controlCode\\n ...DataMatchingClientControlDescription\\n }\\n matches {\\n ...DataMatchingMatchRecord\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingClientControlRow on DataMatcherClientControl {\\n id\\n status\\n totalInternalComments\\n totalMatchedAcinControls\\n totalInventoryMatches\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n control {\\n title\\n controlCode\\n ...DataMatchingClientControlDescription\\n }\\n matches {\\n ...DataMatchingMatchRecord\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), DataMatchingMatchScoreFragmentDoc, DataMatchingRelationshipCountFragmentDoc, DataMatchingClientControlDescriptionFragmentDoc, DataMatchingMatchRecordFragmentDoc);\nvar templateObject_1$L;\nvar DataMatchingAcinControlDescriptionFragmentDoc = gql(templateObject_1$M || (templateObject_1$M = __makeTemplateObject([\"\\n fragment DataMatchingAcinControlDescription on AcinControl {\\n objectives\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n relatedRiskInventories {\\n id\\n name\\n }\\n }\\n\"], [\"\\n fragment DataMatchingAcinControlDescription on AcinControl {\\n objectives\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n relatedRiskInventories {\\n id\\n name\\n }\\n }\\n\"])));\nvar templateObject_1$M;\nvar DataMatchingAcinControlFragmentDoc = gql(templateObject_1$N || (templateObject_1$N = __makeTemplateObject([\"\\n fragment DataMatchingAcinControl on AcinControl {\\n id\\n title\\n controlCode\\n ...DataMatchingAcinControlDescription\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatchingAcinControl on AcinControl {\\n id\\n title\\n controlCode\\n ...DataMatchingAcinControlDescription\\n }\\n \", \"\\n\"])), DataMatchingAcinControlDescriptionFragmentDoc);\nvar templateObject_1$N;\nvar DataMatchingAcinControlPreliminaryMissingFragmentDoc = gql(templateObject_1$O || (templateObject_1$O = __makeTemplateObject([\"\\n fragment DataMatchingAcinControlPreliminaryMissing on DataMatcherAcinControlPreliminaryMissing {\\n internalComment {\\n ...DataMatchingComment\\n }\\n externalComment {\\n ...DataMatchingComment\\n }\\n status\\n approvedRejectedAt\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatchingAcinControlPreliminaryMissing on DataMatcherAcinControlPreliminaryMissing {\\n internalComment {\\n ...DataMatchingComment\\n }\\n externalComment {\\n ...DataMatchingComment\\n }\\n status\\n approvedRejectedAt\\n }\\n \", \"\\n\"])), DataMatchingCommentFragmentDoc);\nvar templateObject_1$O;\nvar DataMatchingAcinControlRowFragmentDoc = gql(templateObject_1$P || (templateObject_1$P = __makeTemplateObject([\"\\n fragment DataMatchingAcinControlRow on DataMatcherAcinControl {\\n id\\n status\\n reasonCode\\n control {\\n ...DataMatchingAcinControl\\n }\\n missing {\\n ...DataMatchingAcinControlPreliminaryMissing\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingAcinControlRow on DataMatcherAcinControl {\\n id\\n status\\n reasonCode\\n control {\\n ...DataMatchingAcinControl\\n }\\n missing {\\n ...DataMatchingAcinControlPreliminaryMissing\\n }\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingAcinControlFragmentDoc, DataMatchingAcinControlPreliminaryMissingFragmentDoc);\nvar templateObject_1$P;\nvar DataMatchingControlViewFragmentDoc = gql(templateObject_1$Q || (templateObject_1$Q = __makeTemplateObject([\"\\n fragment DataMatchingControlView on DataMatchingControlsWorkflowControlView {\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n controls {\\n totalResults\\n nodes {\\n ...DataMatchingClientControlRow\\n }\\n }\\n matchedMissingAcinControls {\\n ...DataMatchingAcinControlRow\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingControlView on DataMatchingControlsWorkflowControlView {\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n controls {\\n totalResults\\n nodes {\\n ...DataMatchingClientControlRow\\n }\\n }\\n matchedMissingAcinControls {\\n ...DataMatchingAcinControlRow\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), ResultsSortInfoFragmentDoc, DataMatchingClientControlRowFragmentDoc, DataMatchingAcinControlRowFragmentDoc);\nvar templateObject_1$Q;\nvar DataMatchingUnassignedAcinControlFragmentDoc = gql(templateObject_1$R || (templateObject_1$R = __makeTemplateObject([\"\\n fragment DataMatchingUnassignedAcinControl on AcinControl {\\n id\\n title\\n controlCode\\n ...DataMatchingAcinControlDescription\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatchingUnassignedAcinControl on AcinControl {\\n id\\n title\\n controlCode\\n ...DataMatchingAcinControlDescription\\n }\\n \", \"\\n\"])), DataMatchingAcinControlDescriptionFragmentDoc);\nvar templateObject_1$R;\nvar DataMatchingSummaryRowOneToOneFragmentDoc = gql(templateObject_1$S || (templateObject_1$S = __makeTemplateObject([\"\\n fragment DataMatchingSummaryRowOneToOne on DataMatchingControlsWorkflowSummaryViewRowOneToOne {\\n item {\\n ... on DataMatcherClientControl {\\n ...DataMatchingClientControlRow\\n }\\n ... on DataMatcherAcinControl {\\n ...DataMatchingAcinControlRow\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingSummaryRowOneToOne on DataMatchingControlsWorkflowSummaryViewRowOneToOne {\\n item {\\n ... on DataMatcherClientControl {\\n ...DataMatchingClientControlRow\\n }\\n ... on DataMatcherAcinControl {\\n ...DataMatchingAcinControlRow\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingClientControlRowFragmentDoc, DataMatchingAcinControlRowFragmentDoc);\nvar DataMatchingSummaryRowManyToOneFragmentDoc = gql(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n fragment DataMatchingSummaryRowManyToOne on DataMatchingControlsWorkflowSummaryViewRowManyToOne {\\n group {\\n ...DataMatchingUnassignedAcinControl\\n }\\n items {\\n ...DataMatchingClientControlRow\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingSummaryRowManyToOne on DataMatchingControlsWorkflowSummaryViewRowManyToOne {\\n group {\\n ...DataMatchingUnassignedAcinControl\\n }\\n items {\\n ...DataMatchingClientControlRow\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), DataMatchingUnassignedAcinControlFragmentDoc, DataMatchingClientControlRowFragmentDoc, DataMatchingRelationshipCountFragmentDoc);\nvar DataMatchingSummaryRowManyToManyFragmentDoc = gql(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\\n fragment DataMatchingSummaryRowManyToMany on DataMatchingControlsWorkflowSummaryViewRowManyToMany {\\n groupName\\n items {\\n ...DataMatchingClientControlRow\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingSummaryRowManyToMany on DataMatchingControlsWorkflowSummaryViewRowManyToMany {\\n groupName\\n items {\\n ...DataMatchingClientControlRow\\n }\\n relationshipCount {\\n ...DataMatchingRelationshipCount\\n }\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingClientControlRowFragmentDoc, DataMatchingRelationshipCountFragmentDoc);\nvar DataMatchingSummaryViewRowFragmentDoc = gql(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject([\"\\n fragment DataMatchingSummaryViewRow on DataMatchingControlsWorkflowSummaryViewRow {\\n ... on DataMatchingControlsWorkflowSummaryViewRowOneToOne {\\n ...DataMatchingSummaryRowOneToOne\\n }\\n ... on DataMatchingControlsWorkflowSummaryViewRowManyToOne {\\n ...DataMatchingSummaryRowManyToOne\\n }\\n ... on DataMatchingControlsWorkflowSummaryViewRowManyToMany {\\n ...DataMatchingSummaryRowManyToMany\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingSummaryViewRow on DataMatchingControlsWorkflowSummaryViewRow {\\n ... on DataMatchingControlsWorkflowSummaryViewRowOneToOne {\\n ...DataMatchingSummaryRowOneToOne\\n }\\n ... on DataMatchingControlsWorkflowSummaryViewRowManyToOne {\\n ...DataMatchingSummaryRowManyToOne\\n }\\n ... on DataMatchingControlsWorkflowSummaryViewRowManyToMany {\\n ...DataMatchingSummaryRowManyToMany\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), DataMatchingSummaryRowOneToOneFragmentDoc, DataMatchingSummaryRowManyToOneFragmentDoc, DataMatchingSummaryRowManyToManyFragmentDoc);\nvar templateObject_1$S, templateObject_2$9, templateObject_3$6, templateObject_4$6;\nvar DataMatchingSummaryViewFragmentDoc = gql(templateObject_1$T || (templateObject_1$T = __makeTemplateObject([\"\\n fragment DataMatchingSummaryView on DataMatchingControlsWorkflowSummaryView {\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n rows {\\n ...DataMatchingSummaryViewRow\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingSummaryView on DataMatchingControlsWorkflowSummaryView {\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n rows {\\n ...DataMatchingSummaryViewRow\\n }\\n }\\n \", \"\\n \", \"\\n\"])), ResultsSortInfoFragmentDoc, DataMatchingSummaryViewRowFragmentDoc);\nvar templateObject_1$T;\nvar DataMatchingControlsWorkflowFragmentDoc = gql(templateObject_1$U || (templateObject_1$U = __makeTemplateObject([\"\\n fragment DataMatchingControlsWorkflow on DataMatchingControlsWorkflow {\\n controlView(sort: $controlSortInput) {\\n ...DataMatchingControlView\\n }\\n summaryView(sort: $summarySortInput) {\\n ...DataMatchingSummaryView\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatchingControlsWorkflow on DataMatchingControlsWorkflow {\\n controlView(sort: $controlSortInput) {\\n ...DataMatchingControlView\\n }\\n summaryView(sort: $summarySortInput) {\\n ...DataMatchingSummaryView\\n }\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingControlViewFragmentDoc, DataMatchingSummaryViewFragmentDoc);\nvar templateObject_1$U;\nvar PartialDataMatcherFragmentDoc = gql(templateObject_1$V || (templateObject_1$V = __makeTemplateObject([\"\\n fragment PartialDataMatcher on DataMatcher {\\n id\\n assignedTo\\n riskInventory {\\n name\\n }\\n account {\\n name\\n }\\n nextWorkflow {\\n ...DataMatchingControlsWorkflow\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment PartialDataMatcher on DataMatcher {\\n id\\n assignedTo\\n riskInventory {\\n name\\n }\\n account {\\n name\\n }\\n nextWorkflow {\\n ...DataMatchingControlsWorkflow\\n }\\n }\\n \", \"\\n\"])), DataMatchingControlsWorkflowFragmentDoc);\nvar DataMatcherFragmentDoc = gql(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\\n fragment DataMatcher on DataMatcher {\\n ...PartialDataMatcher\\n matchers {\\n id\\n }\\n approvers {\\n id\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatcher on DataMatcher {\\n ...PartialDataMatcher\\n matchers {\\n id\\n }\\n approvers {\\n id\\n }\\n }\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc);\nvar templateObject_1$V, templateObject_2$a;\nvar MatchingFilterRangeFragmentDoc = gql(templateObject_1$W || (templateObject_1$W = __makeTemplateObject([\"\\n fragment MatchingFilterRange on FilterRange {\\n min\\n max\\n }\\n\"], [\"\\n fragment MatchingFilterRange on FilterRange {\\n min\\n max\\n }\\n\"])));\nvar MatchingFilterRangeInputTypeFragmentDoc = gql(templateObject_2$b || (templateObject_2$b = __makeTemplateObject([\"\\n fragment MatchingFilterRangeInputType on FilterRangeInputType {\\n inputType\\n tagLabel\\n tagUnit\\n range {\\n ...MatchingFilterRange\\n }\\n description\\n }\\n \", \"\\n\"], [\"\\n fragment MatchingFilterRangeInputType on FilterRangeInputType {\\n inputType\\n tagLabel\\n tagUnit\\n range {\\n ...MatchingFilterRange\\n }\\n description\\n }\\n \", \"\\n\"])), MatchingFilterRangeFragmentDoc);\nvar ControlMatchingFiltersFragmentDoc = gql(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject([\"\\n fragment ControlMatchingFilters on Filters {\\n groups {\\n key\\n label\\n filterInput {\\n ... on FilterDropdownInputType {\\n options {\\n key\\n label\\n }\\n placeholder\\n }\\n ... on FilterTagsInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterCheckboxListInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterRangeInputType {\\n ...MatchingFilterRangeInputType\\n }\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ControlMatchingFilters on Filters {\\n groups {\\n key\\n label\\n filterInput {\\n ... on FilterDropdownInputType {\\n options {\\n key\\n label\\n }\\n placeholder\\n }\\n ... on FilterTagsInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterCheckboxListInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterRangeInputType {\\n ...MatchingFilterRangeInputType\\n }\\n }\\n }\\n }\\n \", \"\\n\"])), MatchingFilterRangeInputTypeFragmentDoc);\nvar templateObject_1$W, templateObject_2$b, templateObject_3$7;\nvar GetDataMatcherByIdDocument = gql(templateObject_1$X || (templateObject_1$X = __makeTemplateObject([\"\\n query getDataMatcherById(\\n $id: String!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n $filterInput: FilterInput\\n ) {\\n getDataMatcherById(id: $id, filterInput: $filterInput) {\\n ...PartialDataMatcher\\n availableFilters {\\n ...ControlMatchingFilters\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n query getDataMatcherById(\\n $id: String!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n $filterInput: FilterInput\\n ) {\\n getDataMatcherById(id: $id, filterInput: $filterInput) {\\n ...PartialDataMatcher\\n availableFilters {\\n ...ControlMatchingFilters\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc, ControlMatchingFiltersFragmentDoc);\n/**\r\n * __useGetDataMatcherByIdQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatcherByIdQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatcherByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatcherByIdQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * controlSortInput: // value for 'controlSortInput'\r\n * summarySortInput: // value for 'summarySortInput'\r\n * filterInput: // value for 'filterInput'\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatcherByIdQuery(baseOptions) {\n return useQuery(GetDataMatcherByIdDocument, baseOptions);\n}\nvar templateObject_1$X;\nvar ControlsWorkflow = styled(View)(templateObject_1$Y || (templateObject_1$Y = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar ControlView = styled(View)(templateObject_2$c || (templateObject_2$c = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar SummaryView = styled(View)(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar SelectAllWrapper = styled(View)(templateObject_4$7 || (templateObject_4$7 = __makeTemplateObject([\"\\n padding-left: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n align-items: center;\\n\"], [\"\\n padding-left: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar SelectAllLabel = styled(Label)(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\\n margin-left: \", \";\\n position: relative;\\n top: 2px;\\n\"], [\"\\n margin-left: \", \";\\n position: relative;\\n top: 2px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar RowList = styled(View)(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n height: 100%;\\n\"], [\"\\n height: 100%;\\n\"])));\nvar Section = styled(View)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n padding: \", \";\\n padding-bottom: 1px;\\n height: 100%;\\n display: flex;\\n flex: 1;\\n flex-direction: column;\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n padding: \", \";\\n padding-bottom: 1px;\\n height: 100%;\\n display: flex;\\n flex: 1;\\n flex-direction: column;\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar StyledAccordion = styled(Accordion$2)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n padding: 0;\\n\"], [\"\\n padding: 0;\\n\"])));\nvar AccordionTitle = styled(Text$1)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar templateObject_1$Y, templateObject_2$c, templateObject_3$8, templateObject_4$7, templateObject_5$3, templateObject_6$2, templateObject_7$1, templateObject_8, templateObject_9;\nvar ClientControlDescription = styled(View)(templateObject_1$Z || (templateObject_1$Z = __makeTemplateObject([\"\"], [\"\"])));\nvar ContentSection = styled(View)(templateObject_2$d || (templateObject_2$d = __makeTemplateObject([\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"], [\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaContainer = styled(View)(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaItem = styled(View)(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject([\"\\n min-width: 190px;\\n\"], [\"\\n min-width: 190px;\\n\"])));\nvar templateObject_1$Z, templateObject_2$d, templateObject_3$9, templateObject_4$8;\nvar ClientControlDescription$1 = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(ClientControlDescription, {\n \"data-testid\": generate(['data-matching-client-control-description'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ContentSection, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Description\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.description)), /*#__PURE__*/React.createElement(ContentSection, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Objectives:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.clientControlObjectives)), /*#__PURE__*/React.createElement(MetaContainer, null, /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Type:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.clientControlType)), /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Owner:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.clientControlOwner)), /*#__PURE__*/React.createElement(MetaItem, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Frequency\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.clientControlFrequency))), /*#__PURE__*/React.createElement(ContentSection, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Quality Score:\"), /*#__PURE__*/React.createElement(Text$1, {\n variant: \"secondary\"\n }, data.clientControlQualityScore)));\n};\nvar ClientControlDescription$2 = styled(ClientControlDescription$1)(templateObject_1$_ || (templateObject_1$_ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$_;\nvar ClientControlRow = styled(View)(templateObject_1$$ || (templateObject_1$$ = __makeTemplateObject([\"\"], [\"\"])));\nvar Description = styled(ClientControlDescription$2)(templateObject_2$e || (templateObject_2$e = __makeTemplateObject([\"\\n max-width: \", \";\\n\"], [\"\\n max-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(200);\n});\nvar templateObject_1$$, templateObject_2$e;\nvar containerBackground$1 = themeHelpers.containerBackground;\nvar badgeBackground = function (activeTheme, variant) {\n switch (variant) {\n case 'nested':\n return css(templateObject_1$10 || (templateObject_1$10 = __makeTemplateObject([\"\\n \", \";\\n \"], [\"\\n \", \";\\n \"])), containerBackground$1(activeTheme));\n default:\n return css(templateObject_2$f || (templateObject_2$f = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n });\n }\n};\nvar MatchingRow = styled(Accordion$2)(templateObject_3$a || (templateObject_3$a = __makeTemplateObject([\"\\n \", \" {\\n &[data-testid*='badge--borderless-appearance'] {\\n \", \"\\n }\\n }\\n\"], [\"\\n \", \" {\\n &[data-testid*='badge--borderless-appearance'] {\\n \", \"\\n }\\n }\\n\"])), Badge$1, function (p) {\n return badgeBackground(p.activeTheme, p.variant);\n});\nvar templateObject_1$10, templateObject_2$f, templateObject_3$a;\nvar MatchingRowHeader = styled(View)(templateObject_1$11 || (templateObject_1$11 = __makeTemplateObject([\"\\n height: \", \";\\n white-space: nowrap;\\n display: flex;\\n align-content: space-between;\\n align-items: center;\\n\"], [\"\\n height: \", \";\\n white-space: nowrap;\\n display: flex;\\n align-content: space-between;\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar Content$2 = styled(View)(templateObject_2$g || (templateObject_2$g = __makeTemplateObject([\"\\n display: flex;\\n flex: 1;\\n flex-direction: row;\\n white-space: nowrap;\\n align-items: baseline;\\n\"], [\"\\n display: flex;\\n flex: 1;\\n flex-direction: row;\\n white-space: nowrap;\\n align-items: baseline;\\n\"])));\nvar Badges = styled(Content$2)(templateObject_3$b || (templateObject_3$b = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n flex: inherit;\\n margin-left: \", \";\\n align-items: center;\\n\\n & > div:not(:last-child) {\\n margin-right: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n flex: inherit;\\n margin-left: \", \";\\n align-items: center;\\n\\n & > div:not(:last-child) {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar AcinLogo = styled(Logo)(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar Title$1 = styled(Text$1)(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar ID = styled(Title$1)(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject([\"\\n margin-right: \", \";\\n color: \", \";\\n\"], [\"\\n margin-right: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$11, templateObject_2$g, templateObject_3$b, templateObject_4$9, templateObject_5$4, templateObject_6$3;\nvar MatchingRowHeader$1 = function (props) {\n var className = props.className,\n showLogo = props.showLogo,\n title = props.title,\n id = props.id,\n badges = props.badges;\n var renderBadges = function () {\n if (badges) {\n return badges();\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(MatchingRowHeader, {\n \"data-testid\": generate(['matching-row-header'], props),\n className: className\n }, showLogo && /*#__PURE__*/React.createElement(AcinLogo, {\n size: \"small\"\n }), /*#__PURE__*/React.createElement(Content$2, null, id && /*#__PURE__*/React.createElement(ID, {\n weight: 300,\n size: -1\n }, id), /*#__PURE__*/React.createElement(Title$1, {\n weight: 500\n }, title)), badges && /*#__PURE__*/React.createElement(Badges, null, renderBadges()));\n};\nvar MatchingRowHeader$2 = styled(MatchingRowHeader$1)(templateObject_1$12 || (templateObject_1$12 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$12;\nvar MatchingRow$1 = function (props) {\n var className = props.className,\n onCheck = props.onCheck,\n isChecked = props.isChecked,\n children = props.children,\n title = props.title,\n id = props.id,\n badges = props.badges,\n state = props.state,\n variant = props.variant,\n showLogo = props.showLogo,\n _a = props.isCheckDisabled,\n isCheckDisabled = _a === void 0 ? false : _a,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n onChangeHeight = props.onChangeHeight,\n defaultOpen = props.defaultOpen;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(MatchingRow, {\n \"data-testid\": generate(['matching-row', state ? \"state--\".concat(state) : null, isChecked ? \"row--checked\" : null], props),\n className: className,\n isChecked: isChecked,\n isCheckDisabled: isCheckDisabled,\n onCheck: onCheck,\n state: state,\n variant: variant,\n isExpanded: isExpanded,\n onChange: onChange,\n onChangeHeight: onChangeHeight,\n defaultOpen: defaultOpen,\n animate: false,\n header: function () {\n return /*#__PURE__*/React.createElement(MatchingRowHeader$2, {\n title: title,\n id: id,\n badges: badges,\n showLogo: showLogo\n });\n },\n activeTheme: activeTheme\n }, children);\n};\nvar MatchingRow$2 = styled(MatchingRow$1)(templateObject_1$13 || (templateObject_1$13 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$13;\nvar InternalCommentsBadge = styled(Badge$1)(templateObject_1$14 || (templateObject_1$14 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$14;\nvar InternalCommentsBadge$1 = function (props) {\n var className = props.className,\n _a = props.total,\n total = _a === void 0 ? 0 : _a;\n if (total <= 0) return null;\n return /*#__PURE__*/React.createElement(InternalCommentsBadge, {\n className: className,\n \"data-testid\": generate(['internal-comments-badge'], props),\n text: total.toString(),\n icon: function () {\n return /*#__PURE__*/React.createElement(IconMoodHappy, null);\n },\n variant: \"default\",\n appearance: \"borderless\"\n });\n};\nvar InternalCommentsBadge$2 = styled(InternalCommentsBadge$1)(templateObject_1$15 || (templateObject_1$15 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$15;\nvar RelationshipCount = styled(Badge$1)(templateObject_1$16 || (templateObject_1$16 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$16;\nvar RelationshipCount$1 = function (props) {\n var className = props.className,\n data = props.data;\n var noMatch = (data === null || data === void 0 ? void 0 : data.to) === 0;\n if (!data || noMatch) return null;\n return /*#__PURE__*/React.createElement(RelationshipCount, {\n \"data-testid\": generate(['relationship-count'], props),\n className: className,\n text: \"\".concat(data.from, \":\").concat(data.to),\n variant: data.to === 1 && data.from === 1 ? 'primary' : 'accent1',\n appearance: \"filled\"\n });\n};\nvar RelationshipCount$2 = styled(RelationshipCount$1)(templateObject_1$17 || (templateObject_1$17 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$17;\nvar StatusBadge = styled(Badge$1)(templateObject_1$18 || (templateObject_1$18 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$18;\nvar StatusBadge$1 = function (props) {\n var className = props.className,\n status = props.status,\n userType = props.userType;\n if (userType === IDataMatcherAssignedTo.Matcher) {\n if (status === IDataMatchingMatchStatus.Unmatched) {\n return /*#__PURE__*/React.createElement(StatusBadge, {\n \"data-testid\": generate(['status-badge'], props),\n className: className,\n text: \"Unmatched\",\n variant: \"default\"\n });\n }\n if (status === IDataMatchingMatchStatus.Approved) {\n return /*#__PURE__*/React.createElement(StatusBadge, {\n \"data-testid\": generate(['status-badge'], props),\n className: className,\n text: \"Approved\",\n variant: \"success\"\n });\n }\n } else if (userType === IDataMatcherAssignedTo.Approver) {\n if (status === IDataMatchingMatchStatus.Approved) {\n return /*#__PURE__*/React.createElement(StatusBadge, {\n \"data-testid\": generate(['status-badge'], props),\n className: className,\n text: \"Approved\",\n variant: \"success\"\n });\n }\n if (status === IDataMatchingMatchStatus.Rejected) {\n return /*#__PURE__*/React.createElement(StatusBadge, {\n \"data-testid\": generate(['status-badge'], props),\n className: className,\n text: \"Rejected\",\n variant: \"error\"\n });\n }\n return /*#__PURE__*/React.createElement(StatusBadge, {\n \"data-testid\": generate(['status-badge'], props),\n className: className,\n text: \"Unreviewed\",\n variant: \"default\"\n });\n }\n return null;\n};\nvar StatusBadge$2 = styled(StatusBadge$1)(templateObject_1$19 || (templateObject_1$19 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$19;\nvar MatchScore = styled(BadgeScore)(templateObject_1$1a || (templateObject_1$1a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1a;\nvar MatchScore$1 = function (props) {\n var className = props.className,\n data = props.data;\n if (!data) return null;\n return /*#__PURE__*/React.createElement(MatchScore, {\n \"data-testid\": generate(['match-score'], props),\n className: className,\n score: data,\n icon: function () {\n return /*#__PURE__*/React.createElement(IconModulePuzzle, null);\n }\n });\n};\nvar MatchScore$2 = styled(MatchScore$1)(templateObject_1$1b || (templateObject_1$1b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1b;\nvar TotalInventoryMatches = styled(Badge$1)(templateObject_1$1c || (templateObject_1$1c = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1c;\nvar TotalInventoryMatches$1 = function (props) {\n var className = props.className,\n _a = props.total,\n total = _a === void 0 ? 0 : _a;\n if (!total) return null;\n return /*#__PURE__*/React.createElement(TotalInventoryMatches, {\n \"data-testid\": generate(['total-inventory-matches'], props),\n className: className,\n text: \"\".concat(total, \" Inventory Matches\"),\n variant: \"success\",\n appearance: \"outlined\"\n });\n};\nvar TotalInventoryMatches$2 = styled(TotalInventoryMatches$1)(templateObject_1$1d || (templateObject_1$1d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1d;\nvar ReasonCode = styled(Badge$1)(templateObject_1$1e || (templateObject_1$1e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1e;\nvar aCodes = new Map();\nvar bCodes = new Map();\nvar cCodes = new Map();\nvar DEFAULT_NO_MATCH_REASON_CODE = 'A3';\nvar DEFAULT_MISSING_REASON_CODE = 'C1-a';\nvar codes = new Map();\ncodes.set('A', aCodes);\ncodes.set('B', bCodes);\ncodes.set('C', cCodes); // General A Codes (no matches)\n\naCodes.set('A1', {\n code: 'A1',\n shortName: 'Non Control (A1)',\n variant: 'error',\n name: 'No Match - Non-Control',\n internalCommentRequired: false,\n externalCommentRequired: true\n});\naCodes.set('A1-a', {\n code: 'A1-a',\n shortName: 'Unclear Control (A1-a)',\n name: 'No Match - Unclear Control (Provisional)',\n variant: 'warning',\n internalCommentRequired: false,\n externalCommentRequired: true\n});\naCodes.set('A3', {\n code: 'A3',\n shortName: 'No Match (A3)',\n variant: 'error',\n name: 'No Match - Not in Acin Inventory',\n internalCommentRequired: true,\n externalCommentRequired: false\n});\naCodes.set('A4', {\n code: 'A4',\n shortName: 'No Match (A4)',\n variant: 'error',\n name: 'No Match - Control found in other network inventories',\n internalCommentRequired: true,\n externalCommentRequired: false\n}); // General B Codes (Matches)\n\nbCodes.set('B1', {\n code: 'B1',\n name: 'Direct Match',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\nbCodes.set('B2', {\n code: 'B2',\n name: 'Partial Match – Various',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\nbCodes.set('B2-a', {\n code: 'B2-a',\n name: 'Partial Match - Control Owner',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false,\n omitOverride: true\n});\nbCodes.set('B2-c', {\n code: 'B2-c',\n name: 'Partial Match - Control Description',\n variant: 'default',\n internalCommentRequired: true,\n externalCommentRequired: false,\n omitOverride: true\n});\nbCodes.set('B2-d', {\n code: 'B2-d',\n name: 'Partial Match - Control Frequency',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\nbCodes.set('B2-e', {\n code: 'B2-e',\n name: 'Partial Match - Control Type',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\nbCodes.set('B3', {\n code: 'B3',\n name: 'Match - Proliferation',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false,\n omitOverride: true\n});\nbCodes.set('B4', {\n code: 'B4',\n name: 'Match – Imprecision',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false,\n omitOverride: true\n});\nbCodes.set('B5', {\n code: 'B5',\n name: 'Match - Imprecision & Proliferation Blend',\n variant: 'default',\n internalCommentRequired: false,\n externalCommentRequired: false,\n omitOverride: true\n}); // General C Codes (missing codes)\n\ncCodes.set('C1-a', {\n code: 'C1-a',\n shortName: 'Preliminary Missing (C1-a)',\n variant: 'warning',\n name: 'Missing (Provisional)',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\ncCodes.set('C1', {\n code: 'C1',\n shortName: 'Missing (C1)',\n variant: 'warning',\n name: 'Missing',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\ncCodes.set('C2', {\n code: 'C2',\n shortName: 'Documentation Issues (C2)',\n variant: 'warning',\n name: 'Missing - Declared Operated',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\ncCodes.set('C3', {\n code: 'C3',\n shortName: 'Ownership Deviation (C3)',\n variant: 'warning',\n name: 'Missing - Declared Operated Elsewhere',\n internalCommentRequired: false,\n externalCommentRequired: false\n});\ncCodes.set('C4', {\n code: 'C4',\n shortName: 'Not Required (C4)',\n variant: 'warning',\n name: 'Missing - Declared Not Required',\n internalCommentRequired: false,\n externalCommentRequired: false\n}); // Export all codes for easy lookup\n\nvar allCodes = new Map();\naCodes.forEach(function (item) {\n return allCodes.set(item.code, item);\n});\nbCodes.forEach(function (item) {\n return allCodes.set(item.code, item);\n});\ncCodes.forEach(function (item) {\n return allCodes.set(item.code, item);\n});\nvar checkIfSuggestionRequiredComments = function (reasonCode) {\n var reason = allCodes.get(reasonCode);\n if (reason && (reason.externalCommentRequired || reason.internalCommentRequired)) {\n return true;\n }\n return false;\n};\nvar checkIfSuggestionsHaveRequiredComments = function (items) {\n return __spreadArray([], __read(items), false).some(function (item) {\n return checkIfSuggestionRequiredComments(item[1].reasonCode);\n });\n};\nvar getReasonCodeType = function (reasonCode) {\n if (aCodes.has(reasonCode)) return 'A';\n if (bCodes.has(reasonCode)) return 'B';\n if (cCodes.has(reasonCode)) return 'C';\n};\nvar getSelectOptions = function (codeTypes) {\n return codeTypes.reduce(function (acc, codeType) {\n var res = codes.get(codeType);\n if (res) {\n var filteredOverrides = new Map(Array.from(res).filter(function (_a) {\n var _b = __read(_a, 2),\n key = _b[0],\n value = _b[1];\n return !value.omitOverride;\n }));\n var codeRes = __spreadArray([], __read(filteredOverrides), false).map(function (item) {\n return {\n label: \"\".concat(item[1].code, \" \").concat(item[1].name),\n value: item[0]\n };\n });\n return __spreadArray(__spreadArray([], __read(acc), false), __read(codeRes), false);\n }\n return acc;\n }, []);\n};\nvar ReasonCode$1 = function (props) {\n var _a, _b;\n var className = props.className,\n code = props.code,\n isSuggestion = props.isSuggestion;\n if (!code) return null;\n var isNotBCode = getReasonCodeType(code) !== 'B';\n if (isNotBCode || isSuggestion) {\n return /*#__PURE__*/React.createElement(ReasonCode, {\n \"data-testid\": generate(['reason-code'], props),\n className: className,\n text: isSuggestion ? code : ((_a = allCodes.get(code)) === null || _a === void 0 ? void 0 : _a.shortName) || code,\n variant: isSuggestion ? 'accent1' : ((_b = allCodes.get(code)) === null || _b === void 0 ? void 0 : _b.variant) || 'default',\n appearance: isSuggestion ? 'outlined' : 'filled'\n });\n }\n return null;\n};\nvar ReasonCode$2 = styled(ReasonCode$1)(templateObject_1$1f || (templateObject_1$1f = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1f;\nvar ClientControlRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n isChecked = props.isChecked,\n onCheck = props.onCheck,\n isCheckDisabled = props.isCheckDisabled,\n userType = props.userType,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n onChangeHeight = props.onChangeHeight,\n defaultOpen = props.defaultOpen,\n view = props.view;\n var showAdditionalBadges = data.status !== (IDataMatchingMatchStatus.Matched || IDataMatchingMatchStatus.Approved) && view !== 'summary';\n var renderBadges = function () {\n var _a;\n if (userType === IDataMatcherAssignedTo.Matcher) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(InternalCommentsBadge$2, {\n total: data.totalInternalComments\n }), showAdditionalBadges && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TotalInventoryMatches$2, {\n total: data.totalInventoryMatches\n }), /*#__PURE__*/React.createElement(MatchScore$2, {\n data: data.matchScore\n })), /*#__PURE__*/React.createElement(RelationshipCount$2, {\n data: data.relationshipCount\n }), /*#__PURE__*/React.createElement(StatusBadge$2, {\n userType: userType,\n status: data.status\n }), ((_a = data.matches) === null || _a === void 0 ? void 0 : _a.length) === 1 ? /*#__PURE__*/\n // Check when we need to display this reason code on the client control row.\n // i.e. if there is only 1 match, and it is no reason code\n React.createElement(ReasonCode$2, {\n code: data.matches[0].reasonCode\n }) : null);\n } else {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(InternalCommentsBadge$2, {\n total: data.totalInternalComments\n }), /*#__PURE__*/React.createElement(RelationshipCount$2, {\n data: data.relationshipCount\n }), /*#__PURE__*/React.createElement(StatusBadge$2, {\n status: data.status,\n userType: userType\n }));\n }\n };\n var getStatus = function () {\n if (userType === IDataMatcherAssignedTo.Matcher) {\n var status_1 = data.status === IDataMatchingMatchStatus.Matched ? 'info' : undefined;\n if (!status_1) {\n status_1 = data.status === IDataMatchingMatchStatus.Approved ? 'success' : undefined;\n }\n return status_1;\n } else {\n if (data.status === IDataMatchingMatchStatus.Approved) {\n return 'success';\n } else if (data.status === IDataMatchingMatchStatus.Rejected) {\n return 'error';\n }\n }\n };\n return /*#__PURE__*/React.createElement(ClientControlRow, {\n \"data-testid\": generate(['data-matching-client-control-row'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingRow$2, {\n title: data.control.title,\n isChecked: isChecked,\n onCheck: function (value) {\n return onCheck(data);\n },\n badges: renderBadges,\n id: data.control.controlCode,\n isCheckDisabled: isCheckDisabled,\n state: getStatus(),\n isExpanded: isExpanded,\n onChange: onChange,\n onChangeHeight: onChangeHeight,\n defaultOpen: defaultOpen\n }, /*#__PURE__*/React.createElement(Description, {\n data: data.control\n })));\n};\nvar ClientControlRow$2 = styled(ClientControlRow$1)(templateObject_1$1g || (templateObject_1$1g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1g;\nvar emptyCount = {\n approved: 0,\n unapproved: 0,\n rejected: 0,\n matched: 0,\n unmatched: 0,\n matchedUnassigned: 0,\n rejectedUnassigned: 0,\n approvedUnassigned: 0,\n totalResults: 0\n};\nvar getCountInfo = function (items, startCount) {\n if (startCount === void 0) {\n startCount = emptyCount;\n }\n return items.reduce(function (acc, item) {\n var status = item === null || item === void 0 ? void 0 : item.status;\n return {\n approved: status === IDataMatchingMatchStatus.Approved ? acc.approved + 1 : acc.approved,\n unapproved: status !== IDataMatchingMatchStatus.Approved ? acc.unapproved + 1 : acc.unapproved,\n rejected: status === IDataMatchingMatchStatus.Rejected ? acc.rejected + 1 : acc.rejected,\n matched: status === IDataMatchingMatchStatus.Matched ? acc.matched + 1 : acc.matched,\n unmatched: status === IDataMatchingMatchStatus.Unmatched ? acc.unmatched + 1 : acc.unmatched,\n approvedUnassigned: status === IDataMatchingMatchStatus.Approved && item.__typename === 'DataMatcherAcinControl' ? acc.approvedUnassigned + 1 : acc.approvedUnassigned,\n matchedUnassigned: status === IDataMatchingMatchStatus.Matched && item.__typename === 'DataMatcherAcinControl' ? acc.matchedUnassigned + 1 : acc.matchedUnassigned,\n rejectedUnassigned: status === IDataMatchingMatchStatus.Rejected && item.__typename === 'DataMatcherAcinControl' ? acc.rejectedUnassigned + 1 : acc.rejectedUnassigned,\n totalResults: acc.totalResults + 1\n };\n }, startCount);\n};\nvar getCountInfoForSummary = function (data) {\n return data.reduce(function (acc, item) {\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne') {\n return getCountInfo([item.item], acc);\n }\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToOne' || item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToMany') {\n return getCountInfo(item.items, acc);\n }\n return acc;\n }, emptyCount);\n};\nvar filterFromSummary = function (data, filters) {\n return data.reduce(function (acc, item) {\n var _a, _b;\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne' && !filters.includes((_a = item.item) === null || _a === void 0 ? void 0 : _a.status)) {\n return __spreadArray(__spreadArray([], __read(acc), false), [item], false);\n }\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToOne' || item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToMany') {\n var unApproved = (_b = item.items) === null || _b === void 0 ? void 0 : _b.filter(function (a) {\n return !filters.includes(a.status);\n });\n if ((unApproved === null || unApproved === void 0 ? void 0 : unApproved.length) > 0) {\n return __spreadArray(__spreadArray([], __read(acc), false), [__assign(__assign({}, item), {\n items: unApproved\n })], false);\n }\n return acc;\n }\n return acc;\n }, []);\n};\nvar filterRow = function (term, item) {\n var search = term ? term.toLowerCase() : '';\n if (item.__typename === 'DataMatcherClientControl') {\n var _a = item.control,\n title = _a.title,\n controlCode = _a.controlCode,\n description = _a.description;\n return [title, controlCode, description].join(' ').toLowerCase().includes(search);\n } else {\n var _b = item.control,\n title = _b.title,\n controlCode = _b.controlCode;\n return [title, controlCode].join(' ').toLowerCase().includes(search); // Objective,\n }\n};\nvar searchFilterSummary = function (term, data) {\n return data.reduce(function (acc, rowItem) {\n var _a, _b;\n if (rowItem.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne') {\n return filterRow(term, rowItem.item) ? __spreadArray(__spreadArray([], __read(acc), false), [rowItem], false) : acc;\n }\n if (rowItem.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToOne') {\n var groupMatch = [rowItem.group.title, rowItem.group.controlCode].join(' ').toLowerCase().includes(term.toLowerCase());\n if (groupMatch) {\n return __spreadArray(__spreadArray([], __read(acc), false), [rowItem], false);\n } else {\n var res = (_a = rowItem.items) === null || _a === void 0 ? void 0 : _a.filter(function (item) {\n return filterRow(term, item);\n });\n return (res === null || res === void 0 ? void 0 : res.length) > 0 ? __spreadArray(__spreadArray([], __read(acc), false), [__assign(__assign({}, rowItem), {\n items: res\n })], false) : acc;\n }\n }\n if (rowItem.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToMany') {\n var res = (_b = rowItem.items) === null || _b === void 0 ? void 0 : _b.filter(function (item) {\n return filterRow(term, item);\n });\n return (res === null || res === void 0 ? void 0 : res.length) > 0 ? __spreadArray(__spreadArray([], __read(acc), false), [__assign(__assign({}, rowItem), {\n items: res\n })], false) : acc;\n }\n return acc;\n }, []);\n};\nvar filterSummaryResults = function (term, data, toggled, userType) {\n if (toggled === void 0) {\n toggled = false;\n } // Depending on the user type, we want to filter the results when the toggle is on\n\n var approverFilters = [IDataMatchingMatchStatus.Approved, IDataMatchingMatchStatus.Rejected];\n var matcherFilters = [IDataMatchingMatchStatus.Approved, IDataMatchingMatchStatus.Matched];\n var activeFilters = userType === IDataMatcherAssignedTo.Approver ? approverFilters : matcherFilters; // userType === IDataMatcherAssignedTo.Approver,\n\n if (term === '') {\n // We need to filter through all variations of rows..\n // use the count status stuff to work out if anythiing is approved.\n return toggled ? filterFromSummary(data, activeFilters) : data;\n }\n return toggled ? searchFilterSummary(term, filterFromSummary(data, activeFilters)) : searchFilterSummary(term, data);\n};\nvar INITIAL_STATE = {\n userType: IDataMatcherAssignedTo.Approver,\n selected: new Map(),\n selectedClientControls: new Map(),\n selectedAcinControls: new Map(),\n totalSelected: 0,\n displayCount: 0,\n searchTerm: '',\n onChangeSearchTerm: function () {},\n onChangeDisplayCount: function () {},\n addSelected: function () {},\n updateSelectedById: function () {},\n removeSelected: function () {},\n toggleSelected: function () {},\n clearSelected: function () {},\n showMatchingModal: false,\n onShowMatchingModal: function () {},\n onCloseMatchingModal: function () {},\n onShowUnassignedNetworkContolModal: function () {},\n onCloseUnassignedNetworkContolModal: function () {},\n showUnassignedNetworkModal: false,\n showInheritReasonCodesModal: false,\n onShowInheritReasonCodesModal: function () {},\n onCloseInheritReasonCodesModal: function () {},\n onSetIsAllAcinAssigned: function () {},\n isAllAcinAssigned: false,\n onChangeView: function () {},\n view: 'overview',\n onSetCountInfo: function () {},\n countInfo: emptyCount,\n onSetToggleResults: function () {},\n toggleResults: false,\n getActiveSort: function () {\n return undefined;\n },\n onSetActiveSort: function () {},\n activeSorts: new Map() // onSetReviewLoading: () => {},\n // reviewLoading: false,\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar useMatching = function () {\n return React.useContext(Context);\n};\nvar MatchingProvider = function (_a) {\n var children = _a.children,\n _b = _a.userType,\n userType = _b === void 0 ? IDataMatcherAssignedTo.Matcher : _b,\n onSortChange = _a.onSortChange,\n restContext = __rest(_a, [\"children\", \"userType\", \"onSortChange\"]);\n var _c = __read(React.useState(new Map(restContext.selected || [])), 2),\n selected = _c[0],\n setSelected = _c[1];\n var _d = __read(React.useState(restContext.displayCount || undefined), 2),\n displayCount = _d[0],\n setDisplayCount = _d[1];\n var _e = __read(React.useState(''), 2),\n searchTerm = _e[0],\n setSearchTerm = _e[1];\n var _f = __read(React.useState('overview'), 2),\n view = _f[0],\n setView = _f[1];\n var _g = __read(React.useState(restContext.showMatchingModal || false), 2),\n showMatchingModal = _g[0],\n setShowMatchingModal = _g[1];\n var _h = __read(React.useState(restContext.showUnassignedNetworkModal || false), 2),\n showUnassignedNetworkModal = _h[0],\n setShowUnassignedNetworkModal = _h[1];\n var _j = __read(React.useState(restContext.showInheritReasonCodesModal || false), 2),\n showInheritReasonCodesModal = _j[0],\n setShowInheritReasonCodesModal = _j[1];\n var _k = __read(React.useState(INITIAL_STATE.isAllAcinAssigned), 2),\n isAllAcinAssigned = _k[0],\n setIsAllAcinAssigned = _k[1];\n var _l = __read(React.useState(INITIAL_STATE.toggleResults), 2),\n toggleResults = _l[0],\n setShowToggleResults = _l[1]; // const [reviewLoading, setReviewLoading] = React.useState(INITIAL_STATE.reviewLoading);\n\n var _m = __read(React.useState(INITIAL_STATE.countInfo), 2),\n countInfo = _m[0],\n setCountInfo = _m[1];\n var _o = __read(React.useState(new Map([])), 2),\n activeSorts = _o[0],\n setActiveSorts = _o[1];\n var onSetIsAllAcinAssigned = React.useCallback(function (value) {\n if (isAllAcinAssigned !== value) {\n setIsAllAcinAssigned(value);\n }\n }, [setIsAllAcinAssigned, isAllAcinAssigned]);\n var onSetCountInfo = React.useCallback(function (data) {\n setCountInfo(data);\n }, [setCountInfo]);\n var selectedClientControls = React.useMemo(function () {\n return __spreadArray([], __read(selected), false).reduce(function (acc, item) {\n if (item[1].__typename === 'DataMatcherClientControl') {\n return acc.set(item[0], item[1]);\n }\n return acc;\n }, new Map());\n }, [selected]);\n var selectedAcinControls = React.useMemo(function () {\n return __spreadArray([], __read(selected), false).reduce(function (acc, item) {\n if (item[1].__typename === 'DataMatcherAcinControl') {\n return acc.set(item[0], item[1]);\n }\n return acc;\n }, new Map());\n }, [selected]);\n var onCloseMatchingModal = React.useCallback(function () {\n setShowMatchingModal(false);\n }, [setShowMatchingModal]);\n var onShowMatchingModal = React.useCallback(function () {\n setShowMatchingModal(true);\n }, [setShowMatchingModal]);\n var onCloseUnassignedNetworkContolModal = React.useCallback(function () {\n setShowUnassignedNetworkModal(false);\n }, [setShowUnassignedNetworkModal]);\n var onShowUnassignedNetworkContolModal = React.useCallback(function () {\n setShowUnassignedNetworkModal(true);\n }, [setShowUnassignedNetworkModal]);\n var onShowInheritReasonCodesModal = React.useCallback(function () {\n setShowInheritReasonCodesModal(true);\n }, [setShowInheritReasonCodesModal]);\n var onCloseInheritReasonCodesModal = React.useCallback(function () {\n setShowInheritReasonCodesModal(false);\n }, [setShowInheritReasonCodesModal]);\n var clearSelected = React.useCallback(function () {\n setSelected(new Map());\n }, [setSelected]);\n var onChangeDisplayCount = React.useCallback(function (value) {\n if (displayCount !== value) {\n setDisplayCount(value);\n }\n }, [displayCount]);\n var onChangeSearchTerm = React.useCallback(function (value) {\n if (searchTerm !== value) {\n setSearchTerm(value);\n }\n }, [searchTerm]);\n var updateSelectedById = React.useCallback(function (id, item) {\n var newSelected = new Map(selected);\n if (newSelected.has(id)) {\n newSelected.set(id, item);\n setSelected(newSelected);\n }\n }, [selected]);\n var addSelected = React.useCallback(function (data) {\n var newSelected = new Map(selected);\n data.forEach(function (item) {\n if (!newSelected.has(item.id)) {\n newSelected.set(item.id, item);\n }\n });\n if (newSelected !== selected) {\n setSelected(newSelected);\n }\n }, [selected, setSelected]);\n var removeSelected = React.useCallback(function (data) {\n var newSelected = new Map(selected);\n data.forEach(function (item) {\n if (selected.has(item.id)) {\n newSelected.delete(item.id);\n }\n });\n if (newSelected !== selected) {\n setSelected(newSelected);\n }\n }, [selected, setSelected]);\n var toggleSelected = React.useCallback(function (data) {\n var newSelected = new Map(selected);\n if (!selected.has(data.id)) {\n newSelected.set(data.id, data);\n setSelected(newSelected);\n } else {\n newSelected.delete(data.id);\n setSelected(newSelected);\n }\n }, [selected, setSelected]);\n var onChangeView = React.useCallback(function (newView) {\n if (view !== newView) {\n setView(newView);\n }\n }, [view]);\n var onSetToggleResults = React.useCallback(function (value) {\n if (toggleResults !== value) {\n setShowToggleResults(value);\n }\n }, [toggleResults]); // const onSetReviewLoading = React.useCallback(\n // (value: boolean) => {\n // if (reviewLoading !== value) {\n // setReviewLoading(value);\n // }\n // },\n // [reviewLoading],\n // );\n\n var onSetActiveSort = React.useCallback(function (value) {\n var newActiveSorts = new Map(activeSorts);\n newActiveSorts.set(view, value);\n setActiveSorts(newActiveSorts); // pass back the value to the parent as this is outside the provider.\n\n if (onSortChange) {\n onSortChange(view, value);\n }\n }, [view, activeSorts, onSortChange]);\n var getActiveSort = React.useCallback(function () {\n return activeSorts.get(view);\n }, [activeSorts, view]);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n selected: selected,\n selectedClientControls: selectedClientControls,\n selectedAcinControls: selectedAcinControls,\n totalSelected: selected.size,\n addSelected: addSelected,\n updateSelectedById: updateSelectedById,\n removeSelected: removeSelected,\n toggleSelected: toggleSelected,\n clearSelected: clearSelected,\n showMatchingModal: showMatchingModal,\n onCloseMatchingModal: onCloseMatchingModal,\n onShowMatchingModal: onShowMatchingModal,\n showUnassignedNetworkModal: showUnassignedNetworkModal,\n showInheritReasonCodesModal: showInheritReasonCodesModal,\n onCloseUnassignedNetworkContolModal: onCloseUnassignedNetworkContolModal,\n onShowUnassignedNetworkContolModal: onShowUnassignedNetworkContolModal,\n onShowInheritReasonCodesModal: onShowInheritReasonCodesModal,\n onCloseInheritReasonCodesModal: onCloseInheritReasonCodesModal,\n isAllAcinAssigned: isAllAcinAssigned,\n onSetIsAllAcinAssigned: onSetIsAllAcinAssigned,\n onChangeView: onChangeView,\n view: view,\n userType: userType,\n countInfo: countInfo,\n onSetCountInfo: onSetCountInfo,\n displayCount: displayCount,\n onChangeDisplayCount: onChangeDisplayCount,\n searchTerm: searchTerm,\n onChangeSearchTerm: onChangeSearchTerm,\n onSetToggleResults: onSetToggleResults,\n toggleResults: toggleResults,\n activeSorts: activeSorts,\n getActiveSort: getActiveSort,\n onSetActiveSort: onSetActiveSort\n })\n }, children);\n};\nvar DEFAULT_HEIGHT = 48;\nvar ROW_SPACING = 4;\nvar RowWrapper = function (props) {\n var index = props.index,\n children = props.children,\n style = props.style;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: __assign(__assign({}, style), {\n top: index === 0 ? style.top : style.top + ROW_SPACING,\n height: index === 0 ? style.height : style.height + ROW_SPACING\n })\n }, children);\n};\nvar getItemsSize = function (index, sizeRef) {\n return (sizeRef.current.get(index) || DEFAULT_HEIGHT) + (index === 0 ? 0 : ROW_SPACING);\n};\nvar VirtualRow = /*#__PURE__*/React.memo(function (_a) {\n var getData = _a.data,\n index = _a.index,\n style = _a.style;\n var _b = getData(index),\n data = _b.data,\n onCheck = _b.onCheck,\n onExpand = _b.onExpand,\n onChangeHeight = _b.onChangeHeight,\n isChecked = _b.isChecked,\n isExpanded = _b.isExpanded,\n userType = _b.userType;\n return /*#__PURE__*/React.createElement(RowWrapper, {\n index: index,\n style: style\n }, /*#__PURE__*/React.createElement(ClientControlRow$2, {\n data: data,\n onCheck: onCheck,\n isChecked: isChecked,\n userType: userType,\n onChangeHeight: onChangeHeight,\n onChange: function () {\n return onExpand(data.id);\n },\n isExpanded: isExpanded,\n defaultOpen: isExpanded,\n view: \"overview\"\n }));\n}, areEqual);\nvar ControlView$1 = function (props) {\n var className = props.className,\n data = props.data,\n availableFilters = props.availableFilters,\n setClientFilters = props.setClientFilters,\n activeClientFilters = props.activeClientFilters;\n var listRef = React.useRef(null);\n var sizeRef = React.useRef(new Map());\n var _a = __read(React.useState(new Set()), 2),\n expanded = _a[0],\n setExpanded = _a[1];\n var _b = useMatching(),\n selected = _b.selected,\n addSelected = _b.addSelected,\n clearSelected = _b.clearSelected,\n totalSelected = _b.totalSelected,\n toggleSelected = _b.toggleSelected,\n onChangeDisplayCount = _b.onChangeDisplayCount,\n userType = _b.userType,\n searchTerm = _b.searchTerm,\n toggleResults = _b.toggleResults;\n var isUnmatched = function (item) {\n return ![IDataMatchingMatchStatus.Matched, IDataMatchingMatchStatus.Approved].includes(item.status);\n };\n var searchResults = function (data, removeResolvedResults) {\n if (removeResolvedResults === void 0) {\n removeResolvedResults = false;\n }\n if (searchTerm === '') {\n return removeResolvedResults ? data.filter(function (item) {\n return isUnmatched(item);\n }) : data;\n }\n return data === null || data === void 0 ? void 0 : data.filter(function (item) {\n var _a = item.control,\n title = _a.title,\n controlCode = _a.controlCode,\n description = _a.description;\n if (searchTerm) {\n return [title, controlCode, description].join(' ').toLowerCase().includes(searchTerm.toLowerCase());\n }\n if (removeResolvedResults && isUnmatched(item)) {\n return false;\n }\n return item;\n });\n };\n var rowsData = __spreadArray([], __read(searchResults(data.controls.nodes, !toggleResults)), false).sort(function (a) {\n return isUnmatched(a) ? -1 : 1;\n }).sort(function (a) {\n return a.status === IDataMatchingMatchStatus.Approved ? 1 : -1;\n });\n React.useEffect(function () {\n onChangeDisplayCount(rowsData.length);\n }, [rowsData.length, onChangeDisplayCount]);\n var onCheck = function (item) {\n toggleSelected(item);\n }; // Check if everything selected\n\n var hasSomeUnselected = rowsData.some(function (item) {\n return !selected.has(item.id);\n });\n var allChecked = !hasSomeUnselected;\n var isIndeterminate = totalSelected > 0 && !allChecked;\n var onToggleAll = function (value) {\n if (value) {\n // This may have to change when we get search through, as we wont have all the records to select\n addSelected(rowsData);\n } else {\n clearSelected();\n }\n };\n var onExpand = React.useCallback(function (id) {\n var newExpanded = new Set(expanded);\n if (newExpanded.has(id)) {\n newExpanded.delete(id);\n } else {\n newExpanded.add(id);\n }\n setExpanded(newExpanded);\n }, [expanded, setExpanded]);\n var decoratedResults = rowsData.map(function (data, index) {\n var onChangeHeight = function (height) {\n var _a;\n sizeRef.current.set(index, height);\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(index);\n };\n return {\n data: data,\n onCheck: onCheck,\n onExpand: onExpand,\n onChangeHeight: onChangeHeight,\n isChecked: selected.has(data.id),\n isExpanded: expanded.has(data.id),\n userType: userType\n };\n });\n var toggleDrawer = useDrawer().toggleDrawer;\n var toggleFilterDrawer = function () {\n toggleDrawer('filters');\n };\n var onApply = function (filters) {\n setClientFilters(filters);\n toggleFilterDrawer();\n };\n return /*#__PURE__*/React.createElement(ControlView, {\n \"data-testid\": generate(['controls-workflow--control-view'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(SelectAllWrapper, null, /*#__PURE__*/React.createElement(Checkbox$4, {\n isChecked: allChecked || isIndeterminate,\n isIndeterminate: isIndeterminate,\n onChange: onToggleAll,\n disabled: rowsData.length === 0\n }), /*#__PURE__*/React.createElement(SelectAllLabel, null, \"Select All\")), /*#__PURE__*/React.createElement(RowList, null, decoratedResults && decoratedResults.length === 0 && searchTerm === '' ? /*#__PURE__*/React.createElement(Alert, {\n title: \"You have no more controls to match.\",\n message: \"Please continue to the next stage of the review process or review your saved matches using the 'Show saved matches' toggle.\",\n status: \"info\"\n }) : null, decoratedResults && decoratedResults.length === 0 && searchTerm !== '' ? /*#__PURE__*/React.createElement(Alert, {\n title: \"No matches found\",\n status: \"info\"\n }) : null, !!decoratedResults.length && /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(VariableSizeList, {\n ref: listRef,\n height: height,\n itemCount: decoratedResults.length,\n itemSize: function (index) {\n return getItemsSize(index, sizeRef);\n },\n itemData: function (index) {\n return decoratedResults[index];\n },\n width: width,\n overscanCount: 5\n }, VirtualRow);\n }))), /*#__PURE__*/React.createElement(Filters, {\n availableFilters: availableFilters,\n activeFilters: activeClientFilters,\n onApply: onApply,\n onCancel: function () {\n return toggleDrawer('filters');\n }\n }));\n};\nvar AcinControlRow = styled(View)(templateObject_1$1h || (templateObject_1$1h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1h;\nvar RIADescription = styled(View)(templateObject_1$1i || (templateObject_1$1i = __makeTemplateObject([\"\"], [\"\"])));\nvar Block = styled(View)(templateObject_2$h || (templateObject_2$h = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1i, templateObject_2$h;\nvar RIADescription$1 = function (props) {\n var className = props.className,\n control = props.control,\n _a = props.size,\n size = _a === void 0 ? -1 : _a,\n _b = props.showMore,\n showMore = _b === void 0 ? true : _b,\n toggleDescription = props.toggleDescription,\n showDescription = props.showDescription;\n if (!control) return null;\n var description = __spreadArray(__spreadArray(__spreadArray([], __read(control.review ? [{\n title: 'Review',\n content: control.review\n }] : []), false), __read(control.identify ? [{\n title: 'Identify',\n content: control.identify\n }] : []), false), __read(control.actions ? [{\n title: 'Action',\n content: control.actions\n }] : []), false);\n var renderDescription = function (data) {\n return data.map(function (item) {\n return /*#__PURE__*/React.createElement(Block, {\n key: item.title\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: size,\n weight: 600\n }, item.title), item.content && /*#__PURE__*/React.createElement(Markdown, {\n content: item.content\n }));\n });\n };\n if (showMore) {\n var title = description.find(function (item) {\n return item.title === 'Review';\n });\n description = description.filter(function (item) {\n return item.title !== 'Review';\n }); // Sets the review content as type string or undefined instead of possibly null for ShowMore component\n\n var previewText = (title === null || title === void 0 ? void 0 : title.content) ? title.content : undefined;\n return /*#__PURE__*/React.createElement(RIADescription, {\n \"data-testid\": generate(['ria-description'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Text$1, {\n size: size,\n weight: 600\n }, title === null || title === void 0 ? void 0 : title.title), /*#__PURE__*/React.createElement(ShowMore, {\n text: previewText,\n showPreview: true,\n isExpanded: showDescription,\n onChange: toggleDescription\n }, renderDescription(description)));\n } else {\n return /*#__PURE__*/React.createElement(RIADescription, {\n \"data-testid\": generate(['ria-description'], props),\n className: className\n }, renderDescription(description));\n }\n};\nvar RIADescription$2 = styled(RIADescription$1)(templateObject_1$1j || (templateObject_1$1j = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1j;\nvar AcinControlDescription = styled(View)(templateObject_1$1k || (templateObject_1$1k = __makeTemplateObject([\"\"], [\"\"])));\nvar ContentSection$1 = styled(View)(templateObject_2$i || (templateObject_2$i = __makeTemplateObject([\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"], [\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaContainer$1 = styled(View)(templateObject_3$c || (templateObject_3$c = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaItem$1 = styled(View)(templateObject_4$a || (templateObject_4$a = __makeTemplateObject([\"\\n min-width: 190px;\\n\"], [\"\\n min-width: 190px;\\n\"])));\nvar templateObject_1$1k, templateObject_2$i, templateObject_3$c, templateObject_4$a;\nvar AcinControlDescription$1 = function (props) {\n var className = props.className,\n data = props.data;\n var riskInventories = data.relatedRiskInventories ? data.relatedRiskInventories.map(function (riskInv) {\n return riskInv.name;\n }).join(', ') : '';\n return /*#__PURE__*/React.createElement(AcinControlDescription, {\n \"data-testid\": generate(['data-matching-acin-control-description'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MetaContainer$1, null, /*#__PURE__*/React.createElement(MetaItem$1, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Objectives:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: -1,\n variant: \"secondary\"\n }, data.objectives))), /*#__PURE__*/React.createElement(RIADescription$2, {\n control: data,\n showMore: false,\n showDescription: true,\n size: -1\n }), /*#__PURE__*/React.createElement(MetaContainer$1, null, /*#__PURE__*/React.createElement(MetaItem$1, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Type:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: -1,\n variant: \"secondary\"\n }, data.controlType)), /*#__PURE__*/React.createElement(MetaItem$1, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Owner:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: -1,\n variant: \"secondary\"\n }, data.controlOwner)), /*#__PURE__*/React.createElement(MetaItem$1, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Control Frequency\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: -1,\n variant: \"secondary\"\n }, data.controlFrequency))), /*#__PURE__*/React.createElement(MetaContainer$1, null, /*#__PURE__*/React.createElement(MetaItem$1, null, /*#__PURE__*/React.createElement(Heading$6, {\n weight: 500\n }, \"Risk Inventories:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: -1,\n variant: \"secondary\"\n }, riskInventories))));\n};\nvar AcinControlDescription$2 = styled(AcinControlDescription$1)(templateObject_1$1l || (templateObject_1$1l = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1l;\nvar AcinControlRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n isChecked = props.isChecked,\n onCheck = props.onCheck,\n isCheckDisabled = props.isCheckDisabled,\n userType = props.userType,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n onChangeHeight = props.onChangeHeight,\n defaultOpen = props.defaultOpen;\n var renderBadges = function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ReasonCode$2, {\n code: data.reasonCode\n }), /*#__PURE__*/React.createElement(StatusBadge$2, {\n status: data.status,\n userType: userType\n }));\n };\n var getStatus = function () {\n if (userType === IDataMatcherAssignedTo.Matcher) {\n var status_1 = data.status === IDataMatchingMatchStatus.Matched ? 'info' : undefined;\n if (!status_1) {\n status_1 = data.status === IDataMatchingMatchStatus.Approved ? 'success' : undefined;\n }\n return status_1;\n } else {\n if (data.status === IDataMatchingMatchStatus.Approved) {\n return 'success';\n } else if (data.status === IDataMatchingMatchStatus.Rejected) {\n return 'error';\n }\n }\n };\n return /*#__PURE__*/React.createElement(AcinControlRow, {\n \"data-testid\": generate(['data-matching-acin-control-row'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingRow$2, {\n showLogo: true,\n title: data.control.title,\n isChecked: isChecked,\n onCheck: function (value) {\n return onCheck(data);\n },\n badges: renderBadges,\n id: data.control.controlCode,\n isCheckDisabled: isCheckDisabled,\n state: getStatus(),\n isExpanded: isExpanded,\n onChange: onChange,\n onChangeHeight: onChangeHeight,\n defaultOpen: defaultOpen\n }, /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n data: data.control\n })));\n};\nvar AcinControlRow$2 = styled(AcinControlRow$1)(templateObject_1$1m || (templateObject_1$1m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1m;\nvar MatchingGroup = styled(Accordion$2)(templateObject_1$1n || (templateObject_1$1n = __makeTemplateObject([\"\\n \", \" {\\n margin-left: \", \";\\n margin-right: \", \";\\n }\\n\"], [\"\\n \", \" {\\n margin-left: \", \";\\n margin-right: \", \";\\n }\\n\"])), MatchingRow$2, function (p) {\n return p.theme.spacing.getSize(-3);\n}, function (p) {\n return p.theme.spacing.getSize(-3);\n});\nvar templateObject_1$1n;\nvar MatchingGroup$1 = function (props) {\n var className = props.className,\n groupTitle = props.groupTitle,\n groupId = props.groupId,\n defaultOpen = props.defaultOpen,\n isChecked = props.isChecked,\n onCheck = props.onCheck,\n children = props.children,\n isCheckDisabled = props.isCheckDisabled,\n groupBadges = props.groupBadges,\n showLogo = props.showLogo,\n onChange = props.onChange,\n isExpanded = props.isExpanded,\n onChangeHeight = props.onChangeHeight;\n return /*#__PURE__*/React.createElement(MatchingGroup, {\n \"data-testid\": generate(['matching-group'], props),\n className: className,\n defaultOpen: defaultOpen,\n isGroup: true,\n onCheck: onCheck,\n isChecked: isChecked,\n isCheckDisabled: isCheckDisabled,\n onChange: onChange,\n isExpanded: isExpanded,\n animate: false,\n onChangeHeight: onChangeHeight,\n header: function () {\n return /*#__PURE__*/React.createElement(MatchingRowHeader$2, {\n title: groupTitle,\n id: groupId,\n badges: groupBadges,\n showLogo: showLogo\n });\n }\n }, children);\n};\nvar MatchingGroup$2 = styled(MatchingGroup$1)(templateObject_1$1o || (templateObject_1$1o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1o;\nvar SummaryRow = function (props) {\n var item = props.item,\n onCheck = props.onCheck,\n onExpand = props.onExpand,\n selected = props.selected,\n expanded = props.expanded,\n userType = props.userType,\n isCheckboxDisabled = props.isCheckboxDisabled,\n onSetHeight = props.onSetHeight,\n isGroupCollapsed = props.isGroupCollapsed,\n onCollapseGroup = props.onCollapseGroup;\n var renderRow = function (rowItem, isTopLevel) {\n if (isTopLevel === void 0) {\n isTopLevel = false;\n }\n if ((rowItem === null || rowItem === void 0 ? void 0 : rowItem.__typename) === 'DataMatcherClientControl') {\n return /*#__PURE__*/React.createElement(ClientControlRow$2, {\n onChangeHeight: isTopLevel ? onChangeHeightGroup : undefined,\n key: rowItem.id,\n data: rowItem,\n defaultOpen: expanded.has(rowItem.id),\n onChange: function () {\n return onExpand(rowItem.id);\n },\n isExpanded: expanded.has(rowItem.id),\n view: \"summary\",\n // defaultOpen={isTopLevel ? !isGroupCollapsed : expanded.has(rowItem.id)}\n // isExpanded={isTopLevel ? !isGroupCollapsed: expanded.has(rowItem.id)}\n onCheck: onCheck,\n isChecked: selected.has(rowItem.id),\n isCheckDisabled: isCheckboxDisabled(rowItem.id, rowItem.__typename),\n userType: userType\n });\n }\n if ((rowItem === null || rowItem === void 0 ? void 0 : rowItem.__typename) === 'DataMatcherAcinControl') {\n return /*#__PURE__*/React.createElement(AcinControlRow$2, {\n onChangeHeight: isTopLevel ? onChangeHeightGroup : undefined,\n key: rowItem.id,\n data: rowItem,\n defaultOpen: expanded.has(rowItem.id),\n onChange: function () {\n return onExpand(rowItem.id);\n },\n isExpanded: expanded.has(rowItem.id),\n // defaultOpen={isTopLevel ? !isGroupCollapsed : expanded.has(rowItem.id)}\n // isExpanded={isTopLevel ? !isGroupCollapsed: expanded.has(rowItem.id)}\n onCheck: onCheck,\n isChecked: selected.has(rowItem.id),\n isCheckDisabled: isCheckboxDisabled(rowItem.id, rowItem.__typename),\n userType: userType\n });\n }\n return null;\n };\n var onChangeHeightGroup = function (height) {\n onSetHeight(height);\n };\n var renderGroup = function () {\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne') {\n var rowItem = item.item;\n return renderRow(rowItem, true);\n }\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToOne') {\n var rowItems = item.items;\n return /*#__PURE__*/React.createElement(MatchingGroup$2, {\n showLogo: true,\n defaultOpen: !isGroupCollapsed,\n isExpanded: !isGroupCollapsed,\n onChange: onCollapseGroup,\n groupTitle: item.group.title,\n groupId: item.group.id,\n groupBadges: function () {\n return /*#__PURE__*/React.createElement(RelationshipCount$2, {\n data: item.relationshipCount\n });\n },\n onChangeHeight: onChangeHeightGroup\n }, rowItems.map(function (a) {\n return renderRow(a);\n }));\n }\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToMany') {\n var rowItems = item.items;\n return /*#__PURE__*/React.createElement(MatchingGroup$2, {\n defaultOpen: !isGroupCollapsed,\n isExpanded: !isGroupCollapsed,\n onChange: onCollapseGroup,\n groupTitle: item.groupName,\n groupBadges: function () {\n return /*#__PURE__*/React.createElement(RelationshipCount$2, {\n data: item.relationshipCount\n });\n },\n onChangeHeight: onChangeHeightGroup\n }, rowItems.map(function (a) {\n return renderRow(a);\n }));\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderGroup());\n};\nvar VirtualRow$1 = /*#__PURE__*/React.memo(function (_a) {\n var data = _a.data,\n index = _a.index,\n style = _a.style;\n var _b = data(index),\n item = _b.item,\n onCheck = _b.onCheck,\n onExpand = _b.onExpand,\n selected = _b.selected,\n expanded = _b.expanded,\n userType = _b.userType,\n isCheckboxDisabled = _b.isCheckboxDisabled,\n onSetHeight = _b.onSetHeight,\n isGroupCollapsed = _b.isGroupCollapsed,\n onCollapseGroup = _b.onCollapseGroup;\n return /*#__PURE__*/React.createElement(RowWrapper, {\n index: index,\n style: style\n }, /*#__PURE__*/React.createElement(SummaryRow, {\n item: item,\n onCheck: onCheck,\n onExpand: onExpand,\n onSetHeight: onSetHeight,\n selected: selected,\n expanded: expanded,\n userType: userType,\n isCheckboxDisabled: isCheckboxDisabled,\n isGroupCollapsed: isGroupCollapsed,\n onCollapseGroup: onCollapseGroup\n }));\n}, areEqual);\nvar SummaryView$1 = function (props) {\n var className = props.className,\n data = props.data;\n var listRef = React.useRef(null);\n var sizeRef = React.useRef(new Map());\n var _a = __read(React.useState(new Set()), 2),\n expanded = _a[0],\n setExpanded = _a[1];\n var _b = __read(React.useState(new Set()), 2),\n collapsedGroups = _b[0],\n setCollapsedGroups = _b[1];\n var _c = useMatching(),\n selected = _c.selected,\n addSelected = _c.addSelected,\n clearSelected = _c.clearSelected,\n totalSelected = _c.totalSelected,\n toggleSelected = _c.toggleSelected,\n onChangeDisplayCount = _c.onChangeDisplayCount,\n searchTerm = _c.searchTerm,\n userType = _c.userType,\n toggleResults = _c.toggleResults;\n var results = filterSummaryResults(searchTerm, data.rows, !toggleResults, userType); // Check if everything selected\n\n var hasSomeUnselected = results.some(function (item) {\n var _a;\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne') {\n return !selected.has((_a = item === null || item === void 0 ? void 0 : item.item) === null || _a === void 0 ? void 0 : _a.id);\n }\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToMany' || item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowManyToOne') {\n var foundItems = item.items.filter(function (a) {\n return selected.has(a.id);\n });\n return foundItems.length === 0;\n }\n return false;\n });\n var allChecked = !hasSomeUnselected;\n var isIndeterminate = totalSelected > 0 && !allChecked;\n React.useEffect(function () {\n var counts = getCountInfoForSummary(results);\n onChangeDisplayCount(counts.totalResults);\n }, [results, onChangeDisplayCount]);\n var onCheck = function (item) {\n toggleSelected(item);\n };\n var onToggleSameType = React.useCallback(function (value) {\n if (value) {\n var firstRow_1 = results[0];\n var targetRowType_1 = firstRow_1.__typename; // Gets type of first available control in the first row\n\n var getRowControlType_1 = function (targetRowType) {\n switch (targetRowType) {\n case 'DataMatchingControlsWorkflowSummaryViewRowOneToOne':\n if (firstRow_1.__typename === targetRowType && firstRow_1.item) {\n return firstRow_1.item.__typename;\n }\n return null;\n case 'DataMatchingControlsWorkflowSummaryViewRowManyToOne':\n case 'DataMatchingControlsWorkflowSummaryViewRowManyToMany':\n if (firstRow_1.__typename === targetRowType && firstRow_1.items) {\n return firstRow_1.items[0].__typename;\n }\n return null;\n }\n };\n var matches_1 = [];\n results.forEach(function (row) {\n switch (row.__typename) {\n case 'DataMatchingControlsWorkflowSummaryViewRowOneToOne':\n if (row.item.__typename === getRowControlType_1(targetRowType_1)) {\n matches_1 = __spreadArray(__spreadArray([], __read(matches_1), false), [row.item], false);\n }\n break;\n case 'DataMatchingControlsWorkflowSummaryViewRowManyToOne':\n if (row.__typename === targetRowType_1 && row.items) {\n matches_1 = __spreadArray(__spreadArray([], __read(matches_1), false), __read(row.items.filter(function (item) {\n return item.__typename === getRowControlType_1(targetRowType_1);\n })), false);\n }\n break;\n case 'DataMatchingControlsWorkflowSummaryViewRowManyToMany':\n if (row.__typename === targetRowType_1 && row.items) {\n matches_1 = __spreadArray(__spreadArray([], __read(matches_1), false), __read(row.items.filter(function (item) {\n return item.__typename === getRowControlType_1(targetRowType_1);\n })), false);\n }\n }\n return matches_1;\n });\n addSelected(matches_1);\n } else {\n clearSelected();\n }\n }, [results, addSelected, clearSelected]);\n var isCheckboxDisabled = React.useCallback(function (id, type) {\n var _a;\n if (selected.size === 0) {\n return false;\n } else {\n var firstId = __spreadArray([], __read(selected.keys()), false)[0];\n var selectedType = (_a = selected.get(firstId)) === null || _a === void 0 ? void 0 : _a.__typename;\n var incompatibleType = selectedType !== type;\n return selected.has(id) ? false : incompatibleType;\n }\n }, [selected]);\n var renderAlert = function () {\n if (searchTerm === '') {\n return userType === IDataMatcherAssignedTo.Approver ? /*#__PURE__*/React.createElement(Alert, {\n title: \"You have no more controls to review.\",\n message: \"Please continue to the next stage of the review process or view your reviewed matches using the 'Show Resolved Matches' toggle.\",\n status: \"info\"\n }) : /*#__PURE__*/React.createElement(Alert, {\n title: \"You have no more controls to match.\",\n message: \"Please continue to the next stage of the review process or review your saved matches using the 'Show Resolved Matches' toggle.\",\n status: \"info\"\n });\n }\n return /*#__PURE__*/React.createElement(Alert, {\n title: \"No matches found\",\n status: \"info\"\n });\n };\n var onExpand = React.useCallback(function (id) {\n var newExpanded = new Set(expanded);\n if (newExpanded.has(id)) {\n newExpanded.delete(id);\n } else {\n newExpanded.add(id);\n }\n setExpanded(newExpanded);\n }, [expanded, setExpanded]);\n var onCollapseGroup = React.useCallback(function (index) {\n var newCollapsed = new Set(collapsedGroups);\n if (newCollapsed.has(index)) {\n newCollapsed.delete(index);\n } else {\n newCollapsed.add(index);\n }\n setCollapsedGroups(newCollapsed);\n }, [collapsedGroups, setCollapsedGroups]);\n var decoratedResults = results.map(function (item, index) {\n var onSetHeight = function (value) {\n var _a;\n sizeRef.current.set(index, value);\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(index);\n };\n return {\n item: item,\n onCheck: onCheck,\n onExpand: onExpand,\n onCollapseGroup: function () {\n return onCollapseGroup(index);\n },\n isGroupCollapsed: collapsedGroups.has(index),\n selected: selected,\n expanded: expanded,\n userType: userType,\n isCheckboxDisabled: isCheckboxDisabled,\n onSetHeight: onSetHeight\n };\n });\n return /*#__PURE__*/React.createElement(SummaryView, {\n \"data-testid\": generate(['controls-workflow--control-view'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Section, null, /*#__PURE__*/React.createElement(SelectAllWrapper, null, /*#__PURE__*/React.createElement(Checkbox$4, {\n isChecked: allChecked || isIndeterminate,\n isIndeterminate: isIndeterminate,\n onChange: onToggleSameType,\n disabled: results.length === 0\n }), /*#__PURE__*/React.createElement(SelectAllLabel, null, \"Select All\")), /*#__PURE__*/React.createElement(RowList, null, decoratedResults && decoratedResults.length === 0 ? renderAlert() : null, /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(VariableSizeList, {\n ref: listRef,\n height: height,\n itemCount: decoratedResults.length,\n itemSize: function (index) {\n return getItemsSize(index, sizeRef);\n },\n itemData: function (index) {\n return decoratedResults[index];\n },\n width: width\n }, VirtualRow$1);\n }))));\n};\nvar AcinControlSuggestion = styled(View)(templateObject_1$1p || (templateObject_1$1p = __makeTemplateObject([\"\"], [\"\"])));\nvar MetaContainer$2 = styled(View)(templateObject_2$j || (templateObject_2$j = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaItem$2 = styled(View)(templateObject_3$d || (templateObject_3$d = __makeTemplateObject([\"\\n min-width: 190px;\\n\"], [\"\\n min-width: 190px;\\n\"])));\nvar templateObject_1$1p, templateObject_2$j, templateObject_3$d;\nvar AcinControlSuggestion$1 = function (props) {\n var className = props.className,\n data = props.data,\n _a = props.isChecked,\n isChecked = _a === void 0 ? false : _a,\n match = props.match,\n _b = props.isCheckDisabled,\n isCheckDisabled = _b === void 0 ? false : _b,\n status = props.status,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n onChangeHeight = props.onChangeHeight,\n defaultOpen = props.defaultOpen;\n var onCheck = function (value) {\n props.onCheck(data);\n };\n var renderBadges = function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TotalInventoryMatches$2, {\n total: data.totalInventoryMatches\n }), /*#__PURE__*/React.createElement(ReasonCode$2, {\n isSuggestion: true,\n code: (match === null || match === void 0 ? void 0 : match.reasonCode) || data.reasonCode\n }), /*#__PURE__*/React.createElement(MatchScore$2, {\n data: data.matchScore\n }));\n };\n var getState = function () {\n if (status === IDataMatchingMatchStatus.Approved) {\n return 'success';\n }\n if (status === IDataMatchingMatchStatus.Rejected) {\n return 'error';\n }\n return (match === null || match === void 0 ? void 0 : match.matchId) ? 'info' : undefined;\n };\n var riskInventoryMatches = data.inventoryMatches ? data.inventoryMatches.join(', ') : '';\n return /*#__PURE__*/React.createElement(AcinControlSuggestion, {\n \"data-testid\": generate(['acin-control-suggestion'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingRow$2, {\n variant: \"nested\",\n title: data.control.title,\n isChecked: isChecked,\n onCheck: function (value) {\n return onCheck();\n },\n badges: renderBadges,\n id: data.control.controlCode,\n state: getState(),\n isCheckDisabled: isCheckDisabled,\n isExpanded: isExpanded,\n onChange: onChange,\n onChangeHeight: onChangeHeight,\n defaultOpen: defaultOpen\n }, /*#__PURE__*/React.createElement(RIADescription$2, {\n control: data.control,\n showMore: false\n }), /*#__PURE__*/React.createElement(MetaContainer$2, null, /*#__PURE__*/React.createElement(MetaItem$2, null, /*#__PURE__*/React.createElement(Text$1, {\n weight: 600,\n size: -1\n }, \"Inventory Matches:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 400,\n size: 0,\n variant: \"secondary\"\n }, riskInventoryMatches)))));\n};\nvar AcinControlSuggestion$2 = styled(AcinControlSuggestion$1)(templateObject_1$1q || (templateObject_1$1q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1q;\nvar ClientControlSuggestion = styled(View)(templateObject_1$1r || (templateObject_1$1r = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1r;\nvar ClientControlSuggestion$1 = function (props) {\n var className = props.className,\n data = props.data,\n _a = props.isChecked,\n isChecked = _a === void 0 ? false : _a,\n _b = props.isCheckDisabled,\n isCheckDisabled = _b === void 0 ? false : _b,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n onChangeHeight = props.onChangeHeight,\n defaultOpen = props.defaultOpen;\n var onCheck = function (value) {\n props.onCheck(data);\n };\n var renderBadges = function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ReasonCode$2, {\n isSuggestion: true,\n code: data.reasonCode\n }), /*#__PURE__*/React.createElement(MatchScore$2, {\n data: data.matchScore\n }));\n };\n return /*#__PURE__*/React.createElement(ClientControlSuggestion, {\n \"data-testid\": generate(['client-control-suggestion'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingRow$2, {\n variant: \"nested\",\n title: data.control.title,\n isChecked: isChecked,\n onCheck: function (value) {\n return onCheck();\n },\n badges: renderBadges,\n id: data.control.controlCode,\n isCheckDisabled: isCheckDisabled,\n isExpanded: isExpanded,\n onChange: onChange,\n onChangeHeight: onChangeHeight,\n defaultOpen: defaultOpen\n }, /*#__PURE__*/React.createElement(ClientControlDescription$2, {\n data: data.control\n })));\n};\nvar ClientControlSuggestion$2 = styled(ClientControlSuggestion$1)(templateObject_1$1s || (templateObject_1$1s = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1s;\nvar pageBackground = themeHelpers.pageBackground; // This named style should be the wrapper for the component i.e. the module\n\nvar ControlsWorkflowMatchingModal = styled(View)(templateObject_1$1t || (templateObject_1$1t = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), Modal);\nvar MatchingModal = styled(View)(templateObject_2$k || (templateObject_2$k = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: max-content auto;\\n grid-template-areas:\\n 'title title'\\n 'content content';\\n height: 80vh;\\n\"], [\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: max-content auto;\\n grid-template-areas:\\n 'title title'\\n 'content content';\\n height: 80vh;\\n\"])));\nvar MatchingModalContent = styled(View)(templateObject_3$e || (templateObject_3$e = __makeTemplateObject([\"\\n grid-area: content;\\n\"], [\"\\n grid-area: content;\\n\"])));\nvar MatchingModalTitle = styled(View)(templateObject_4$b || (templateObject_4$b = __makeTemplateObject([\"\\n grid-area: title;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n grid-area: title;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar TitleWrap = styled(View)(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n flex-direction: column;\\n flex-grow: 2; // TODO Repeat elsewhere\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n flex-direction: column;\\n flex-grow: 2; // TODO Repeat elsewhere\\n\"])));\nvar ProgressWrap = styled(View)(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject([\"\\n justify-content: right;\\n flex-grow: 1; // TODO Repeat elsewhere\\n\"], [\"\\n justify-content: right;\\n flex-grow: 1; // TODO Repeat elsewhere\\n\"])));\nvar Overview = styled(View)(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n height: 80vh;\\n\"], [\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n height: 80vh;\\n\"])));\nvar Left = styled(View)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\\n grid-area: left;\\n margin-right: \", \";\\n\"], [\"\\n grid-area: left;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Right = styled.div(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject([\"\\n grid-area: right;\\n overflow: hidden;\\n min-width: 0;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n grid-area: right;\\n overflow: hidden;\\n min-width: 0;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar Review = styled(View)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n display: grid;\\n height: 100%;\\n grid-template-columns: 50%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n min-height: 0;\\n min-width: 0;\\n\"], [\"\\n display: grid;\\n height: 100%;\\n grid-template-columns: 50%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n min-height: 0;\\n min-width: 0;\\n\"])));\nvar CarouselHolder = styled(View)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n height: 100%;\\n \", \";\\n\"], [\"\\n height: 100%;\\n \", \";\\n\"])), function (p) {\n return pageBackground(p.activeTheme);\n});\nvar AcinLogo$1 = styled(Logo)(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"], [\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar OverviewRightTitleDetails = styled(View)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n display: flex;\\n flex: 1;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex: 1;\\n align-items: center;\\n\"])));\nvar OverviewRightTitle = styled(View)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar SuggestionList = styled(View)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n position: relative;\\n flex: 1;\\n \", \",\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"], [\"\\n position: relative;\\n flex: 1;\\n \", \",\\n \", \" {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"])), AcinControlSuggestion$2, ClientControlSuggestion$2, function (p) {\n return p.theme.spacing.getSize();\n});\nvar FilterSection = styled(View)(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n overflow-x: auto;\\n\"], [\"\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n overflow-x: auto;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar SearchWrapper = styled(View)(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n width: 400px;\\n\"], [\"\\n width: 400px;\\n\"])));\nvar Sort$3 = styled(Select$1)(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n width: 200px;\\n\"], [\"\\n width: 200px;\\n\"])));\nvar SearchFilter = styled(View)(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n display: flex;\\n column-gap: \", \";\\n align-items: center;\\n\"], [\"\\n display: flex;\\n column-gap: \", \";\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar FilterButton = styled(Button)(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n min-width: fit-content;\\n\"], [\"\\n min-width: fit-content;\\n\"])));\nvar templateObject_1$1t, templateObject_2$k, templateObject_3$e, templateObject_4$b, templateObject_5$5, templateObject_6$4, templateObject_7$2, templateObject_8$1, templateObject_9$1, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20;\nvar DataMatchingAcinControlSuggestionFragmentDoc = gql(templateObject_1$1u || (templateObject_1$1u = __makeTemplateObject([\"\\n fragment DataMatchingAcinControlSuggestion on DataMatcherAcinControlSuggestion {\\n id\\n control {\\n id\\n title\\n objectives\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n controlCode\\n relatedRiskInventories {\\n id\\n name\\n }\\n }\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n reasonCode\\n totalInventoryMatches\\n inventoryMatches\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatchingAcinControlSuggestion on DataMatcherAcinControlSuggestion {\\n id\\n control {\\n id\\n title\\n objectives\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n controlCode\\n relatedRiskInventories {\\n id\\n name\\n }\\n }\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n reasonCode\\n totalInventoryMatches\\n inventoryMatches\\n }\\n \", \"\\n\"])), DataMatchingMatchScoreFragmentDoc);\nvar templateObject_1$1u;\nvar GetDataMatchingControlsWorkflowAcinControlsDocument = gql(templateObject_1$1v || (templateObject_1$1v = __makeTemplateObject([\"\\n query getDataMatchingControlsWorkflowAcinControls(\\n $input: DataMatchingAcinControlPageInput!\\n $filterInput: FilterInput!\\n ) {\\n getDataMatchingControlsWorkflowAcinControls(input: $input, filterInput: $filterInput) {\\n totalResults\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatchingAcinControlSuggestion\\n }\\n availableFilters {\\n ...ControlMatchingFilters\\n }\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n query getDataMatchingControlsWorkflowAcinControls(\\n $input: DataMatchingAcinControlPageInput!\\n $filterInput: FilterInput!\\n ) {\\n getDataMatchingControlsWorkflowAcinControls(input: $input, filterInput: $filterInput) {\\n totalResults\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatchingAcinControlSuggestion\\n }\\n availableFilters {\\n ...ControlMatchingFilters\\n }\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), ResultsSortInfoFragmentDoc, DataMatchingAcinControlSuggestionFragmentDoc, ControlMatchingFiltersFragmentDoc);\n/**\r\n * __useGetDataMatchingControlsWorkflowAcinControlsQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatchingControlsWorkflowAcinControlsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatchingControlsWorkflowAcinControlsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatchingControlsWorkflowAcinControlsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * filterInput: // value for 'filterInput'\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatchingControlsWorkflowAcinControlsQuery(baseOptions) {\n return useQuery(GetDataMatchingControlsWorkflowAcinControlsDocument, baseOptions);\n}\nvar templateObject_1$1v;\nvar ClientControlMatchHistory = styled(View)(templateObject_1$1w || (templateObject_1$1w = __makeTemplateObject([\"\"], [\"\"])));\nvar ControlMatches = styled(View)(templateObject_2$l || (templateObject_2$l = __makeTemplateObject([\"\\n display: flex;\\n font-size: \", \";\\n flex-direction: column;\\n row-gap: \", \";\\n padding: \", \" 0;\\n\"], [\"\\n display: flex;\\n font-size: \", \";\\n flex-direction: column;\\n row-gap: \", \";\\n padding: \", \" 0;\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar InventoryRecords = styled(View)(templateObject_3$f || (templateObject_3$f = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n row-gap: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n row-gap: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar InventoryHeading = styled(Text$1)(templateObject_4$c || (templateObject_4$c = __makeTemplateObject([\"\\n font-weight: 500;\\n font-size: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n font-weight: 500;\\n font-size: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(0.5);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar RecordHeading = styled(Text$1)(templateObject_5$6 || (templateObject_5$6 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n\"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\nvar RecordsWrapper = styled(View)(templateObject_6$5 || (templateObject_6$5 = __makeTemplateObject([\"\\n margin-top: \", \";\\n padding-bottom: \", \";\\n :not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\"], [\"\\n margin-top: \", \";\\n padding-bottom: \", \";\\n :not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar RecordItem = styled(View)(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject([\"\\n display: flex;\\n color: \", \";\\n\"], [\"\\n display: flex;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar RecordItemLabel = styled(Text$1)(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 400;\\n color: \", \";\\n\"], [\"\\n font-size: \", \";\\n font-weight: 400;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar RecordItemValue = styled(Text$1)(templateObject_9$2 || (templateObject_9$2 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n\"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar templateObject_1$1w, templateObject_2$l, templateObject_3$f, templateObject_4$c, templateObject_5$6, templateObject_6$5, templateObject_7$3, templateObject_8$2, templateObject_9$2;\nvar MatchingHistoryFragmentDoc = gql(templateObject_1$1x || (templateObject_1$1x = __makeTemplateObject([\"\\n fragment MatchingHistory on DataMatcherClientControlMatchingHistoryGroup {\\n date\\n matches {\\n name\\n code\\n reasonCode\\n }\\n }\\n\"], [\"\\n fragment MatchingHistory on DataMatcherClientControlMatchingHistoryGroup {\\n date\\n matches {\\n name\\n code\\n reasonCode\\n }\\n }\\n\"])));\nvar templateObject_1$1x;\nvar GetDataMatcherClientControlMatchingHistoryDocument = gql(templateObject_1$1y || (templateObject_1$1y = __makeTemplateObject([\"\\n query getDataMatcherClientControlMatchingHistory($input: DataMatcherClientControlMatchingHistoryInput!) {\\n getDataMatcherClientControlMatchingHistory(input: $input) {\\n activeRiskInventory {\\n riskInventory {\\n id\\n name\\n }\\n matchingHistory {\\n ...MatchingHistory\\n }\\n }\\n otherRiskInventories {\\n riskInventory {\\n id\\n name\\n }\\n matchingHistory {\\n ...MatchingHistory\\n }\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n query getDataMatcherClientControlMatchingHistory($input: DataMatcherClientControlMatchingHistoryInput!) {\\n getDataMatcherClientControlMatchingHistory(input: $input) {\\n activeRiskInventory {\\n riskInventory {\\n id\\n name\\n }\\n matchingHistory {\\n ...MatchingHistory\\n }\\n }\\n otherRiskInventories {\\n riskInventory {\\n id\\n name\\n }\\n matchingHistory {\\n ...MatchingHistory\\n }\\n }\\n }\\n }\\n \", \"\\n\"])), MatchingHistoryFragmentDoc);\n/**\r\n * __useGetDataMatcherClientControlMatchingHistoryQuery__\r\n *\r\n * To run a query within a React component, call `useGetDataMatcherClientControlMatchingHistoryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDataMatcherClientControlMatchingHistoryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDataMatcherClientControlMatchingHistoryQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetDataMatcherClientControlMatchingHistoryQuery(baseOptions) {\n return useQuery(GetDataMatcherClientControlMatchingHistoryDocument, baseOptions);\n}\nvar templateObject_1$1y;\nvar InventoryRecord = function (props) {\n var className = props.className,\n date = props.date,\n matches = props.matches;\n return /*#__PURE__*/React.createElement(View, {\n \"data-testid\": generate(['inventory-record'], props),\n className: className\n }, /*#__PURE__*/React.createElement(RecordHeading, null, \"\".concat(format(new Date(date), 'dd MMM yyyy'), \": Matched to \").concat(matches.length, \" Network Control\").concat(matches.length !== 1 ? 's' : '')), /*#__PURE__*/React.createElement(ControlMatches, null, matches.map(function (_a) {\n var name = _a.name,\n code = _a.code,\n reasonCode = _a.reasonCode;\n return /*#__PURE__*/React.createElement(View, {\n key: name\n }, /*#__PURE__*/React.createElement(RecordItem, null, /*#__PURE__*/React.createElement(RecordItemLabel, null, \"Control Name: \\u00A0\"), /*#__PURE__*/React.createElement(RecordItemValue, null, name)), /*#__PURE__*/React.createElement(RecordItem, null, /*#__PURE__*/React.createElement(RecordItemLabel, null, \"Control Code: \\u00A0\"), /*#__PURE__*/React.createElement(RecordItemValue, null, code)), /*#__PURE__*/React.createElement(RecordItem, null, /*#__PURE__*/React.createElement(RecordItemLabel, null, \"Reason Code: \\u00A0 \"), /*#__PURE__*/React.createElement(RecordItemValue, null, reasonCode)));\n })));\n};\nvar ClientControlMatchHistory$1 = function (props) {\n var className = props.className,\n dataMatcherClientControlId = props.dataMatcherClientControlId,\n dataMatcherId = props.dataMatcherId;\n var data = useGetDataMatcherClientControlMatchingHistoryQuery({\n variables: {\n input: {\n dataMatcherClientControlId: dataMatcherClientControlId,\n dataMatcherId: dataMatcherId\n }\n }\n }).data;\n var _a = (data === null || data === void 0 ? void 0 : data.getDataMatcherClientControlMatchingHistory) || {},\n activeRiskInventory = _a.activeRiskInventory,\n otherRiskInventories = _a.otherRiskInventories;\n return /*#__PURE__*/React.createElement(View, {\n \"data-testid\": generate(['data-matching-client-control-match-history'], props),\n className: className\n }, /*#__PURE__*/React.createElement(RecordsWrapper, {\n key: activeRiskInventory === null || activeRiskInventory === void 0 ? void 0 : activeRiskInventory.riskInventory.id\n }, /*#__PURE__*/React.createElement(InventoryHeading, null, \"This Inventory: \", activeRiskInventory === null || activeRiskInventory === void 0 ? void 0 : activeRiskInventory.riskInventory.name), /*#__PURE__*/React.createElement(InventoryRecords, null, activeRiskInventory === null || activeRiskInventory === void 0 ? void 0 : activeRiskInventory.matchingHistory.map(function (_a) {\n var date = _a.date,\n matches = _a.matches;\n return /*#__PURE__*/React.createElement(InventoryRecord, {\n matches: matches,\n date: date,\n key: date\n });\n }))), otherRiskInventories === null || otherRiskInventories === void 0 ? void 0 : otherRiskInventories.map(function (_a) {\n var riskInventory = _a.riskInventory,\n matchingHistory = _a.matchingHistory;\n return /*#__PURE__*/React.createElement(RecordsWrapper, {\n key: riskInventory.id\n }, /*#__PURE__*/React.createElement(InventoryHeading, null, \"Other Inventory: \", riskInventory.name), /*#__PURE__*/React.createElement(InventoryRecords, null, matchingHistory.map(function (_a) {\n var date = _a.date,\n matches = _a.matches;\n return /*#__PURE__*/React.createElement(InventoryRecord, {\n matches: matches,\n date: date,\n key: date\n });\n })));\n }));\n};\nvar ClientControlMatchHistory$2 = styled(ClientControlMatchHistory$1)(templateObject_1$1z || (templateObject_1$1z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1z;\nvar VirtualAcinRow = /*#__PURE__*/React.memo(function (_a) {\n var data = _a.data,\n index = _a.index,\n style = _a.style;\n var _b = data(index),\n item = _b.item,\n match = _b.match,\n onToggleMatch = _b.onToggleMatch,\n onExpand = _b.onExpand,\n onChangeHeight = _b.onChangeHeight,\n isChecked = _b.isChecked,\n isCheckDisabled = _b.isCheckDisabled,\n status = _b.status,\n defaultOpen = _b.defaultOpen;\n return /*#__PURE__*/React.createElement(RowWrapper, {\n index: index,\n style: style\n }, /*#__PURE__*/React.createElement(AcinControlSuggestion$2, {\n data: item,\n match: match,\n onCheck: onToggleMatch,\n isChecked: isChecked,\n isCheckDisabled: isCheckDisabled,\n status: status,\n onChangeHeight: onChangeHeight,\n onChange: function () {\n return onExpand(item.id);\n },\n defaultOpen: defaultOpen,\n isExpanded: defaultOpen\n }));\n}, areEqual);\nvar Overview$1 = function (props) {\n var data = props.data,\n dataMatcherId = props.dataMatcherId,\n matches = props.matches,\n onToggleMatch = props.onToggleMatch,\n onClearSelected = props.onClearSelected,\n checkedAcinControls = props.checkedAcinControls,\n restrictCheckReasonCodes = props.restrictCheckReasonCodes,\n onSetHideActions = props.onSetHideActions;\n var listRef = React.useRef(null);\n var sizeRef = React.useRef(new Map());\n var _a = __read(React.useState(''), 2),\n searchTerm = _a[0],\n setSearchTerm = _a[1];\n var _b = __read(React.useState(new Set()), 2),\n expanded = _b[0],\n setExpanded = _b[1];\n var _c = __read(React.useState(), 2),\n sort = _c[0],\n setSort = _c[1];\n var _d = useSetFilters(),\n filters = _d.filters,\n setFilters = _d.setFilters,\n setFilterGroups = _d.setFilterGroups,\n onRemove = _d.onRemove,\n list = _d.list;\n var _e = useGetDataMatchingControlsWorkflowAcinControlsQuery({\n variables: {\n input: {\n dataMatcherClientControlId: data.id,\n dataMatcherId: dataMatcherId,\n sort: sort\n },\n filterInput: filters || {}\n }\n }),\n queryData = _e.data,\n loading = _e.loading; // Resets search term when new data is fetched in modal\n\n React.useEffect(function () {\n setSearchTerm('');\n }, [data]);\n React.useEffect(function () {\n if (loading) {\n onSetHideActions(true);\n } else {\n onSetHideActions(false);\n }\n }, [onSetHideActions, loading]);\n var filteredResults = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.nodes.filter(function (item) {\n var _a = item.control,\n title = _a.title,\n controlCode = _a.controlCode,\n review = _a.review,\n objectives = _a.objectives,\n identify = _a.identify,\n actions = _a.actions;\n return [title, controlCode, review, objectives, identify, actions].join(' ').toLowerCase().includes(searchTerm.toLowerCase());\n });\n var results = searchTerm ? filteredResults : queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.nodes;\n var onExpand = React.useCallback(function (id) {\n var newExpanded = new Set(expanded);\n if (newExpanded.has(id)) {\n newExpanded.delete(id);\n } else {\n newExpanded.add(id);\n }\n setExpanded(newExpanded);\n }, [expanded, setExpanded]);\n var onChangeSort = React.useCallback(function (value) {\n var foundSort = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.sortInfo.available.find(function (item) {\n return \"\".concat(item.field, \"-\").concat(item.direction) === value;\n });\n if (foundSort) {\n setSort({\n field: foundSort.field,\n direction: foundSort.direction\n });\n }\n }, [setSort, queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.sortInfo.available]);\n var suggestionRows = results === null || results === void 0 ? void 0 : results.map(function (item, index) {\n var _a;\n var match = matches.get(item.control.id);\n var controlMatch = (_a = data.matches) === null || _a === void 0 ? void 0 : _a.find(function (a) {\n var _a;\n return ((_a = a.matchedAcinControl) === null || _a === void 0 ? void 0 : _a.id) === item.control.id;\n });\n var reasonCodeType = getReasonCodeType((match === null || match === void 0 ? void 0 : match.reasonCode) || item.reasonCode);\n var isCheckDisabled = !!restrictCheckReasonCodes && reasonCodeType !== restrictCheckReasonCodes;\n var isChecked = checkedAcinControls.has(item.control.id);\n var onChangeHeight = function (height) {\n var _a;\n sizeRef.current.set(index, height);\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(index);\n };\n return {\n item: item,\n match: match,\n onToggleMatch: onToggleMatch,\n onChangeHeight: onChangeHeight,\n isChecked: isChecked,\n isCheckDisabled: isCheckDisabled,\n status: controlMatch ? controlMatch.status : undefined,\n defaultOpen: expanded.has(item.id),\n onExpand: onExpand\n };\n });\n var sortOptions = ((queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.sortInfo.available) || []).map(function (item) {\n return {\n label: item.label,\n value: \"\".concat(item.field, \"-\").concat(item.direction)\n };\n });\n var defaultSort = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.sortInfo.sort;\n var mySort = sort || defaultSort;\n var activeSort = mySort ? \"\".concat(mySort.field, \"-\").concat(mySort.direction) : null;\n var availableFilters = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.availableFilters;\n React.useEffect(function () {\n setFilterGroups(availableFilters === null || availableFilters === void 0 ? void 0 : availableFilters.groups);\n }, [availableFilters === null || availableFilters === void 0 ? void 0 : availableFilters.groups, setFilterGroups]);\n var toggleDrawer = useDrawer().toggleDrawer;\n var toggleFilterDrawer = function () {\n toggleDrawer('filters');\n };\n var onApply = function (filters) {\n setFilters(filters);\n toggleFilterDrawer();\n };\n var onRemoveFilter = React.useCallback(function (item) {\n onRemove(item);\n }, [onRemove]);\n var tabData = [{\n id: 'details',\n title: 'Control Details',\n content: function () {\n return /*#__PURE__*/React.createElement(ClientControlDescription$2, {\n data: data.control\n });\n }\n }, {\n id: 'history',\n title: 'Control Match History',\n content: function () {\n return /*#__PURE__*/React.createElement(ClientControlMatchHistory$2, {\n dataMatcherId: dataMatcherId,\n dataMatcherClientControlId: data.id\n });\n }\n }];\n return /*#__PURE__*/React.createElement(Overview, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Left, null, /*#__PURE__*/React.createElement(Tabs, {\n variant: \"sub\",\n data: tabData\n })), /*#__PURE__*/React.createElement(Right, null, /*#__PURE__*/React.createElement(FilterSection, null, /*#__PURE__*/React.createElement(SearchFilter, null, /*#__PURE__*/React.createElement(SearchWrapper, null, /*#__PURE__*/React.createElement(Input, {\n placeholder: \"Search by Control Name, Control Code or Description\",\n value: searchTerm,\n onChange: function (e) {\n return setSearchTerm(e.target.value);\n },\n leftAddon: function () {\n return /*#__PURE__*/React.createElement(IconSearch, null);\n }\n })), /*#__PURE__*/React.createElement(FilterButton, {\n onClick: toggleFilterDrawer,\n variant: \"secondary\",\n label: (list === null || list === void 0 ? void 0 : list.length) ? \"Filter (\".concat(list.length, \")\") : 'Filter'\n }), /*#__PURE__*/React.createElement(TagList, {\n inline: true,\n items: list,\n variant: \"Toolbar Filters\",\n onDelete: onRemoveFilter\n })), sortOptions.length > 0 ? /*#__PURE__*/React.createElement(Sort$3, {\n value: activeSort,\n options: sortOptions,\n onChange: onChangeSort\n }) : null), /*#__PURE__*/React.createElement(OverviewRightTitle, null, /*#__PURE__*/React.createElement(OverviewRightTitleDetails, null, /*#__PURE__*/React.createElement(AcinLogo$1, {\n size: \"medium\"\n }), /*#__PURE__*/React.createElement(Text$1, null, \"Displaying \", results === null || results === void 0 ? void 0 : results.length, \" of\", ' ', queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.totalResults, \" Network Controls\")), /*#__PURE__*/React.createElement(Link$2, {\n disabled: checkedAcinControls.size === 0,\n onClick: onClearSelected\n }, \"Clear Selected (\", checkedAcinControls.size, \")\")), /*#__PURE__*/React.createElement(SuggestionList, null, loading ? /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }) : null, !loading && suggestionRows && suggestionRows.length === 0 ? /*#__PURE__*/React.createElement(Alert, {\n title: \"No matches found\",\n status: \"info\"\n }) : null, suggestionRows && suggestionRows.length > 0 ? /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(VariableSizeList, {\n ref: listRef,\n height: height,\n itemCount: suggestionRows.length,\n itemSize: function (index) {\n return getItemsSize(index, sizeRef);\n },\n itemData: function (index) {\n return suggestionRows[index];\n },\n width: width,\n overscanCount: 5\n }, VirtualAcinRow);\n }) : null))), /*#__PURE__*/React.createElement(Filters, {\n availableFilters: availableFilters,\n activeFilters: filters,\n onApply: onApply,\n onCancel: function () {\n return toggleDrawer('filters');\n }\n }));\n};\nvar pageBackground$1 = themeHelpers.pageBackground;\nvar ClientControlDescriptionReview = styled(View)(templateObject_1$1A || (templateObject_1$1A = __makeTemplateObject([\"\\n // Duped from MatchingSuggestionReview // TODO: Relocate / share this\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n overflow: hidden;\\n \", \";\\n\"], [\"\\n // Duped from MatchingSuggestionReview // TODO: Relocate / share this\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n overflow: hidden;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return pageBackground$1(p.activeTheme);\n});\nvar Header = styled(View)(templateObject_2$m || (templateObject_2$m = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderLabel = styled(View)(templateObject_3$g || (templateObject_3$g = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar ControlTitle = styled(Text$1)(templateObject_4$d || (templateObject_4$d = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar ControlCode = styled(ControlTitle)(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ControlDetails = styled(View)(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject([\"\\n flex: 1;\\n\"], [\"\\n flex: 1;\\n\"])));\nvar ScrollWrapper = styled(ScrollableContent)(templateObject_7$4 || (templateObject_7$4 = __makeTemplateObject([\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"], [\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}); // Duped from MatchingSuggestionReview ends\n\nvar TitleSection = styled(View)(templateObject_8$3 || (templateObject_8$3 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1A, templateObject_2$m, templateObject_3$g, templateObject_4$d, templateObject_5$7, templateObject_6$6, templateObject_7$4, templateObject_8$3;\nvar ClientControlDescriptionReview$1 = function (props) {\n var className = props.className,\n data = props.data;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(ClientControlDescriptionReview, {\n \"data-testid\": generate(['client-control-description-review'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(HeaderLabel, null, /*#__PURE__*/React.createElement(Text$1, {\n weight: 500\n }, data ? 'Customer Control' : 'No Customer Control'))), /*#__PURE__*/React.createElement(ControlDetails, null, data ? /*#__PURE__*/React.createElement(ScrollWrapper, {\n fixedHeight: \"100%\",\n bars: null\n }, /*#__PURE__*/React.createElement(TitleSection, null, /*#__PURE__*/React.createElement(ControlTitle, {\n weight: 400\n }, data.control.title), /*#__PURE__*/React.createElement(ControlCode, {\n weight: 400,\n size: -1\n }, data.control.controlCode)), /*#__PURE__*/React.createElement(ClientControlDescription$2, {\n data: data.control\n })) : /*#__PURE__*/React.createElement(ControlTitle, {\n weight: 400\n }, \"The matcher has confirmed that this Network control has no customer matches.\")));\n};\nvar ClientControlDescriptionReview$2 = styled(ClientControlDescriptionReview$1)(templateObject_1$1B || (templateObject_1$1B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1B;\nvar AcinMatchingSuggestionReview = styled(View)(templateObject_1$1C || (templateObject_1$1C = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"])));\nvar templateObject_1$1C;\nvar MatchingSuggestionReview = styled(View)(templateObject_1$1D || (templateObject_1$1D = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n background: \", \";\\n overflow: hidden;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n background: \", \";\\n overflow: hidden;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n});\nvar AcinLogo$2 = styled(Logo)(templateObject_2$n || (templateObject_2$n = __makeTemplateObject([\"\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n margin-right: \", \";\\n height: 16px;\\n\"], [\"\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n margin-right: \", \";\\n height: 16px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Header$1 = styled(View)(templateObject_3$h || (templateObject_3$h = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderLabel$1 = styled(View)(templateObject_4$e || (templateObject_4$e = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar HeaderStatus = styled(View)(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar TitleSection$1 = styled(View)(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar TitleWrapper = styled(View)(templateObject_7$5 || (templateObject_7$5 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar ControlTitle$1 = styled(Text$1)(templateObject_8$4 || (templateObject_8$4 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar ControlCode$1 = styled(ControlTitle$1)(templateObject_9$3 || (templateObject_9$3 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar BadgeSection = styled(View)(templateObject_10$1 || (templateObject_10$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"])));\nvar Flags = styled(Badges)(templateObject_11$1 || (templateObject_11$1 = __makeTemplateObject([\"\\n &:last-child {\\n margin-right: 0;\\n }\\n\"], [\"\\n &:last-child {\\n margin-right: 0;\\n }\\n\"])));\nvar BadgeGroup = styled(Badges)(templateObject_12$1 || (templateObject_12$1 = __makeTemplateObject([\"\\n margin-left: 0;\\n flex-wrap: wrap;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n margin-left: 0;\\n flex-wrap: wrap;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, Badge$1, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ControlDetails$1 = styled(View)(templateObject_13$1 || (templateObject_13$1 = __makeTemplateObject([\"\\n flex: 1;\\n\"], [\"\\n flex: 1;\\n\"])));\nvar ScrollWrapper$1 = styled(ScrollableContent)(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"], [\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar CommentFields = styled(View)(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n box-shadow: 0 -2px 2px #bfbfbf;\\n padding: \", \";\\n margin-bottom: \", \";\\n margin-left: \", \";\\n margin-right: \", \";\\n padding-top: \", \";\\n column-gap: \", \";\\n\\n \", \" {\\n height: 67px;\\n }\\n\"], [\"\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n box-shadow: 0 -2px 2px #bfbfbf;\\n padding: \", \";\\n margin-bottom: \", \";\\n margin-left: \", \";\\n margin-right: \", \";\\n padding-top: \", \";\\n column-gap: \", \";\\n\\n \", \" {\\n height: 67px;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(-4);\n}, function (p) {\n return p.theme.spacing.getSize(-4);\n}, function (p) {\n return p.theme.spacing.getSize(-4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, Textarea);\nvar InternalCommentIcon = styled(IconMoodHappy)(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"], [\"\\n margin-left: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ExternalCommentIcon = styled(IconNotesWarning)(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject([\"\\n color: \", \";\\n margin-left: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"], [\"\\n color: \", \";\\n margin-left: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"])), function (p) {\n return p.theme.colors.warning.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar CommentButton = styled(Button)(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject([\"\\n padding: \", \";\\n margin-right: \", \";\\n margin-bottom: \", \";\\n font-size: \", \";\\n height: \", \";\\n\"], [\"\\n padding: \", \";\\n margin-right: \", \";\\n margin-bottom: \", \";\\n font-size: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar templateObject_1$1D, templateObject_2$n, templateObject_3$h, templateObject_4$e, templateObject_5$8, templateObject_6$7, templateObject_7$5, templateObject_8$4, templateObject_9$3, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16$1, templateObject_17$1, templateObject_18$1;\nvar pageBackground$2 = themeHelpers.pageBackground;\nvar Comments = styled(View)(templateObject_1$1E || (templateObject_1$1E = __makeTemplateObject([\"\\n padding: \", \";\\n border-radius: \", \";\\n margin-top: \", \";\\n \", \";\\n\"], [\"\\n padding: \", \";\\n border-radius: \", \";\\n margin-top: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return pageBackground$2(p.activeTheme);\n});\nvar CommentsList = styled(View)(templateObject_2$o || (templateObject_2$o = __makeTemplateObject([\"\"], [\"\"])));\nvar Comment = styled(View)(templateObject_3$i || (templateObject_3$i = __makeTemplateObject([\"\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar CommentsTitle = styled(Text$1)(templateObject_4$f || (templateObject_4$f = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar CommentsIcon = styled(IconMoodHappy)(templateObject_5$9 || (templateObject_5$9 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"], [\"\\n margin-right: \", \";\\n\\n svg {\\n stroke-width: 1;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar CommentMeta = styled(View)(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\\n \", \" {\\n color: \", \";\\n\\n &:not(:first-child) {\\n margin-left: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\\n \", \" {\\n color: \", \";\\n\\n &:not(:first-child) {\\n margin-left: \", \";\\n }\\n }\\n\"])), Text$1, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar CommentBody = styled(Text$1)(templateObject_7$6 || (templateObject_7$6 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$1E, templateObject_2$o, templateObject_3$i, templateObject_4$f, templateObject_5$9, templateObject_6$8, templateObject_7$6;\nvar Comment$1 = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(Comment, {\n \"data-testid\": generate(['comment', \"comment--\".concat(data.id)], props),\n className: className\n }, /*#__PURE__*/React.createElement(CommentMeta, null, /*#__PURE__*/React.createElement(Text$1, {\n weight: 400\n }, data.user.name), /*#__PURE__*/React.createElement(Text$1, {\n weight: 300\n }, format(new Date(data.createdAt), 'd MMM yyyy, kk:mm'))), /*#__PURE__*/React.createElement(CommentBody, {\n weight: 400\n }, data.comment));\n};\nvar Comments$1 = function (props) {\n var className = props.className,\n data = props.data;\n var activeTheme = useThemeProvider().activeTheme;\n if (data) {\n return /*#__PURE__*/React.createElement(Comments, {\n \"data-testid\": generate(['comments'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(CommentsTitle, {\n weight: 500\n }, /*#__PURE__*/React.createElement(CommentsIcon, null), \" INTERNAL NOTES\"), /*#__PURE__*/React.createElement(CommentsList, null, data.map(function (item) {\n return /*#__PURE__*/React.createElement(Comment$1, {\n key: item.id,\n data: item\n });\n })));\n }\n return null;\n};\nvar Comments$2 = styled(Comments$1)(templateObject_1$1F || (templateObject_1$1F = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1F;\nvar commonComments = [{\n title: 'Process',\n content: 'Process - Multiple process or procedural steps describing a business process without identifying the control activity undertaken within that process'\n}, {\n title: 'Attestation',\n content: 'Attestation - A confirmation of performance without describing the control steps undertaken'\n}, {\n title: 'Sample Based Monit.',\n content: 'Sample Based Monitoring - Sample based quality reviews, (sometimes called testing or monitoring) provide assurance that a control has been performed but does not describe the control being performed'\n}, {\n title: 'Requirement',\n content: 'Requirement - A directive statement of what must be performed or an outcome to be achieved without describing the controls steps undertaken for that requirement'\n}, {\n title: 'Statement',\n content: 'Statement - A declaration of something existing or stating an activity is performed but without describing the control steps undertaken'\n}, {\n title: 'Miss/Incomp.',\n content: 'Missing or incomprehensible control description'\n}, {\n title: 'A1-a',\n content: 'Unclear - Please clarify purpose of the control and control steps undertaken'\n}, {\n title: 'A4',\n content: 'Control found in other network inventories'\n}];\nvar MatchingSuggestionReview$1 = function (props) {\n var className = props.className,\n isAcin = props.isAcin,\n title = props.title,\n controlTitle = props.controlTitle,\n controlCode = props.controlCode,\n comments = props.comments,\n _a = props.hideCommentsBadge,\n hideCommentsBadge = _a === void 0 ? false : _a,\n externalComment = props.externalComment,\n externalCommentRequired = props.externalCommentRequired,\n internalCommentRequired = props.internalCommentRequired,\n onChangeExternalComment = props.onChangeExternalComment,\n onChangeInternalComment = props.onChangeInternalComment,\n badges = props.badges,\n menuDropdownContent = props.menuDropdownContent,\n children = props.children,\n renderStatus = props.renderStatus,\n userType = props.userType,\n matchId = props.matchId;\n var _b = __read(React.useState(externalComment || ''), 2),\n stateExternalComment = _b[0],\n setStateExternalComment = _b[1];\n var _c = __read(React.useState(''), 2),\n stateInternalComment = _c[0],\n setStateInternalComment = _c[1];\n var handleOnChangeExternalComment = function (event) {\n var value = event.currentTarget.value;\n setStateExternalComment(value);\n };\n var handleOnChangeInternalComment = function (event) {\n var value = event.currentTarget.value;\n setStateInternalComment(value);\n };\n var _d = __read(useDebounce(stateExternalComment, 500, {\n leading: true\n }), 1),\n debounceExternalComment = _d[0];\n var _e = __read(useDebounce(stateInternalComment, 500, {\n leading: true\n }), 1),\n debounceInternalComment = _e[0];\n React.useEffect(function () {\n onChangeExternalComment(debounceExternalComment);\n }, [debounceExternalComment, onChangeExternalComment]);\n React.useEffect(function () {\n onChangeInternalComment(debounceInternalComment);\n }, [debounceInternalComment, onChangeInternalComment]);\n React.useEffect(function () {\n setStateExternalComment(externalComment);\n }, [matchId, externalComment, setStateExternalComment]);\n React.useEffect(function () {\n setStateInternalComment('');\n }, [matchId, setStateInternalComment]);\n var renderBadges = function () {\n if (badges) {\n return /*#__PURE__*/React.createElement(BadgeGroup, null, badges());\n }\n return null;\n };\n var renderCommonCommentButtons = function () {\n return commonComments.map(function (comment) {\n return /*#__PURE__*/React.createElement(CommentButton, {\n size: \"small\",\n label: comment.title,\n variant: \"secondary\",\n onClick: function () {\n return setStateExternalComment(comment.content);\n }\n });\n });\n };\n return /*#__PURE__*/React.createElement(MatchingSuggestionReview, {\n \"data-testid\": generate(['matching-suggestion-review'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header$1, null, /*#__PURE__*/React.createElement(HeaderLabel$1, null, isAcin && /*#__PURE__*/React.createElement(AcinLogo$2, {\n size: \"small\"\n }), /*#__PURE__*/React.createElement(Text$1, {\n weight: 500\n }, title)), /*#__PURE__*/React.createElement(HeaderStatus, null, renderStatus || null)), /*#__PURE__*/React.createElement(ControlDetails$1, null, /*#__PURE__*/React.createElement(ScrollWrapper$1, {\n fixedHeight: \"100%\",\n bars: null\n }, controlTitle || controlCode || menuDropdownContent ? /*#__PURE__*/React.createElement(TitleSection$1, null, /*#__PURE__*/React.createElement(TitleWrapper, null, /*#__PURE__*/React.createElement(ControlTitle$1, {\n weight: 400\n }, controlTitle), /*#__PURE__*/React.createElement(ControlCode$1, {\n weight: 400,\n size: -1\n }, controlCode)), menuDropdownContent && /*#__PURE__*/React.createElement(IconButton, {\n icon: function () {\n return /*#__PURE__*/React.createElement(IconKebabVertical, {\n size: \"small\"\n });\n },\n label: \"More\",\n dropdownContent: function (onClose) {\n return menuDropdownContent(onClose);\n }\n })) : null, /*#__PURE__*/React.createElement(BadgeSection, null, renderBadges(), /*#__PURE__*/React.createElement(Flags, null, comments && !hideCommentsBadge ? /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"filled\",\n variant: \"neutral\",\n text: comments.length.toString(),\n icon: function () {\n return /*#__PURE__*/React.createElement(IconMoodHappy, null);\n }\n }) : null, externalComment && !hideCommentsBadge ? /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"borderless\",\n variant: \"warning\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconNotesWarning, null);\n }\n }) : null)), children, /*#__PURE__*/React.createElement(Comments$2, {\n data: comments\n }))), /*#__PURE__*/React.createElement(CommentFields, null, /*#__PURE__*/React.createElement(InputGroup, {\n isRequired: externalCommentRequired,\n label: /*#__PURE__*/React.createElement(React.Fragment, null, \"External Comment \", /*#__PURE__*/React.createElement(ExternalCommentIcon, null)),\n renderInput: function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, renderCommonCommentButtons(), /*#__PURE__*/React.createElement(Textarea, {\n onChange: handleOnChangeExternalComment,\n placeholder: \"Add an external note for customers\",\n value: stateExternalComment\n }));\n }\n }), /*#__PURE__*/React.createElement(InputGroup, {\n isRequired: internalCommentRequired,\n renderInfo: userType === IDataMatcherAssignedTo.Approver ? function () {\n return /*#__PURE__*/React.createElement(Text$1, {\n size: -1\n }, \"Optional if Approving\");\n } : undefined,\n label: /*#__PURE__*/React.createElement(React.Fragment, null, \"Internal Comment \", /*#__PURE__*/React.createElement(InternalCommentIcon, null)),\n renderInput: function () {\n return /*#__PURE__*/React.createElement(Textarea, {\n onChange: handleOnChangeInternalComment,\n placeholder: \"Add an internal note for the checker\",\n value: stateInternalComment\n });\n }\n })));\n};\nvar MatchingSuggestionReview$2 = styled(MatchingSuggestionReview$1)(templateObject_1$1G || (templateObject_1$1G = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1G;\nvar AcinControlSuggestionDescription = styled(View)(templateObject_1$1H || (templateObject_1$1H = __makeTemplateObject([\"\"], [\"\"])));\nvar Heading = styled(Text$1)(templateObject_2$p || (templateObject_2$p = __makeTemplateObject([\"\"], [\"\"])));\nvar Body = styled(Text$1)(templateObject_3$j || (templateObject_3$j = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar MetaContainer$3 = styled(View)(templateObject_4$g || (templateObject_4$g = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaItem$3 = styled(View)(templateObject_5$a || (templateObject_5$a = __makeTemplateObject([\"\\n min-width: 190px;\\n\"], [\"\\n min-width: 190px;\\n\"])));\nvar templateObject_1$1H, templateObject_2$p, templateObject_3$j, templateObject_4$g, templateObject_5$a;\nvar AcinControlSuggestionDescription$1 = function (props) {\n var className = props.className,\n data = props.data;\n if (!data) return null;\n var riskInventories = data.relatedRiskInventories ? data.relatedRiskInventories.map(function (riskInv) {\n return riskInv.name;\n }).join(', ') : '';\n return /*#__PURE__*/React.createElement(AcinControlSuggestionDescription, {\n \"data-testid\": generate(['acin-control-suggestion-description'], props),\n className: className\n }, data.objectives && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Heading, {\n weight: 500,\n size: -1\n }, \"Objective:\"), /*#__PURE__*/React.createElement(Body, {\n weight: 400,\n size: -1\n }, data.objectives)), /*#__PURE__*/React.createElement(RIADescription$2, {\n showMore: false,\n control: {\n review: data.review,\n actions: data.actions,\n identify: data.identify\n }\n }), /*#__PURE__*/React.createElement(MetaContainer$3, null, /*#__PURE__*/React.createElement(MetaItem$3, null, /*#__PURE__*/React.createElement(Heading, {\n weight: 500,\n size: -1\n }, \"Control Type:\"), /*#__PURE__*/React.createElement(Body, {\n weight: 400,\n size: -1\n }, data.controlType)), /*#__PURE__*/React.createElement(MetaItem$3, null, /*#__PURE__*/React.createElement(Heading, {\n weight: 500,\n size: -1\n }, \"Control Owner:\"), /*#__PURE__*/React.createElement(Body, {\n weight: 400,\n size: -1\n }, data.controlOwner)), /*#__PURE__*/React.createElement(MetaItem$3, null, /*#__PURE__*/React.createElement(Heading, {\n weight: 500,\n size: -1\n }, \"Control Frequency:\"), /*#__PURE__*/React.createElement(Body, {\n weight: 400,\n size: -1\n }, data.controlFrequency))), /*#__PURE__*/React.createElement(MetaContainer$3, null, /*#__PURE__*/React.createElement(MetaItem$3, null, /*#__PURE__*/React.createElement(Heading, {\n weight: 500,\n size: -1\n }, \"Risk Inventories:\"), /*#__PURE__*/React.createElement(Body, {\n weight: 400,\n size: -1\n }, riskInventories))));\n};\nvar AcinControlSuggestionDescription$2 = styled(AcinControlSuggestionDescription$1)(templateObject_1$1I || (templateObject_1$1I = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1I;\nvar OverrideReasonCode = styled(View)(templateObject_1$1J || (templateObject_1$1J = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1J;\nvar OverrideReasonCode$1 = function (props) {\n var className = props.className,\n reasonCode = props.reasonCode,\n onChange = props.onChange,\n reasonCodeTypes = props.reasonCodeTypes,\n _a = props.label,\n label = _a === void 0 ? 'Override Reason Code' : _a,\n _b = props.disabled,\n disabled = _b === void 0 ? false : _b;\n var onHandleChange = function (reasonCode) {\n onChange(reasonCode);\n };\n return /*#__PURE__*/React.createElement(OverrideReasonCode, {\n \"data-testid\": generate(['override-reason-code'], props),\n className: className\n }, /*#__PURE__*/React.createElement(InputGroup, {\n label: label,\n isRequired: true\n }, /*#__PURE__*/React.createElement(Select$1, {\n fullWidthDropdown: true,\n options: getSelectOptions(reasonCodeTypes),\n value: reasonCode,\n onChange: onHandleChange,\n disabled: disabled\n })));\n};\nvar OverrideReasonCode$2 = styled(OverrideReasonCode$1)(templateObject_1$1K || (templateObject_1$1K = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1K;\nvar AcinMatchingSuggestionReview$1 = function (props) {\n var _a, _b, _c, _d, _e;\n var className = props.className,\n data = props.data,\n reviewMatch = props.reviewMatch,\n comments = props.comments,\n activeReviewId = props.activeReviewId,\n onChangeReview = props.onChangeReview,\n _f = props.totalItems,\n totalItems = _f === void 0 ? 1 : _f,\n _g = props.currentIndex,\n currentIndex = _g === void 0 ? 1 : _g,\n renderStatus = props.renderStatus,\n _h = props.overrideReasonCodes,\n overrideReasonCodes = _h === void 0 ? ['B'] : _h,\n userType = props.userType;\n var _j = __read(React.useState(false), 2),\n showOverride = _j[0],\n setShowOverride = _j[1];\n var onChangeExternal = React.useCallback(function (value) {\n onChangeReview(activeReviewId, {\n externalComment: value\n });\n }, [onChangeReview, activeReviewId]);\n var onChangeInternal = React.useCallback(function (value) {\n onChangeReview(activeReviewId, {\n internalComment: value\n });\n }, [onChangeReview, activeReviewId]);\n var reasonCode = ((_a = reviewMatch.data) === null || _a === void 0 ? void 0 : _a.reasonCode) || (data.__typename === 'DataMatcherAcinControlSuggestion' ? data.reasonCode : undefined);\n var reasonCodeTypes = reasonCode ? getReasonCodeType(reasonCode) : undefined;\n var renderBadges = function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TotalInventoryMatches$2, {\n total: data.__typename === 'DataMatcherAcinControlSuggestion' ? data.totalInventoryMatches : undefined\n }), /*#__PURE__*/React.createElement(ReasonCode$2, {\n isSuggestion: true,\n code: reasonCode\n }), /*#__PURE__*/React.createElement(MatchScore$2, {\n data: data.__typename === 'DataMatcherAcinControlSuggestion' ? data.matchScore : undefined\n }));\n };\n var onOverrideCode = function (onClose) {\n setShowOverride(true);\n onClose();\n };\n var onSetOverride = function (reasonCode) {\n if (reviewMatch && reviewMatch.data) {\n onChangeReview(activeReviewId, __assign(__assign({}, reviewMatch.data), {\n reasonCode: reasonCode\n }));\n }\n };\n var getDetails = function () {\n switch (data.__typename) {\n case 'DataMatcherAcinControlSuggestion':\n return data.control;\n case 'AcinControl':\n return data;\n default:\n return undefined;\n }\n };\n return /*#__PURE__*/React.createElement(AcinMatchingSuggestionReview, {\n \"data-testid\": generate(['acin-matching-suggestion-review'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingSuggestionReview$2, {\n isAcin: true,\n title: \"Network Control (\".concat(currentIndex, \" of \").concat(totalItems, \")\"),\n renderStatus: renderStatus,\n controlTitle: (_b = getDetails()) === null || _b === void 0 ? void 0 : _b.title,\n controlCode: (_c = getDetails()) === null || _c === void 0 ? void 0 : _c.controlCode,\n badges: renderBadges,\n comments: comments,\n externalComment: ((_d = reviewMatch.data) === null || _d === void 0 ? void 0 : _d.externalComment) || '',\n onChangeExternalComment: onChangeExternal,\n onChangeInternalComment: onChangeInternal,\n internalCommentRequired: reviewMatch.requiredInternalComment,\n externalCommentRequired: reviewMatch.requiredExternalComment,\n userType: userType,\n // need to add validation stuff for internal / external comments (Review match)\n menuDropdownContent: userType === IDataMatcherAssignedTo.Matcher && overrideReasonCodes.length > 0 && reasonCodeTypes !== 'A' ? function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function () {\n return onOverrideCode(onClose);\n },\n items: [{\n label: 'Override Reason Code'\n }]\n });\n } : undefined\n }, showOverride && overrideReasonCodes.length > 0 ? /*#__PURE__*/React.createElement(OverrideReasonCode$2, {\n label: \"Override Reason Code\",\n reasonCode: ((_e = reviewMatch.data) === null || _e === void 0 ? void 0 : _e.reasonCode) || '',\n reasonCodeTypes: overrideReasonCodes,\n onChange: onSetOverride\n }) : null, /*#__PURE__*/React.createElement(AcinControlSuggestionDescription$2, {\n data: getDetails()\n })));\n};\nvar AcinMatchingSuggestionReview$2 = styled(AcinMatchingSuggestionReview$1)(templateObject_1$1L || (templateObject_1$1L = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1L;\nvar ReviewMatchRecordStatus = styled(View)(templateObject_1$1M || (templateObject_1$1M = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar Success = styled(View)(templateObject_2$q || (templateObject_2$q = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.success.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar Warning = styled(View)(templateObject_3$k || (templateObject_3$k = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.warning.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$1M, templateObject_2$q, templateObject_3$k;\nvar ReviewMatchRecordStatus$1 = function (props) {\n var className = props.className,\n data = props.data;\n var dateMessage = data.approvedRejectedAt ? format(new Date(data.approvedRejectedAt), 'd MMM yyyy') : undefined;\n var message;\n var icon;\n switch (data.status) {\n case IDataMatchingMatchStatus.Approved:\n message = \"Approved \".concat(dateMessage ? \"on \".concat(dateMessage) : '');\n icon = /*#__PURE__*/React.createElement(Success, null, /*#__PURE__*/React.createElement(IconAlertSuccess, null));\n break;\n case IDataMatchingMatchStatus.Rejected:\n message = \"Rejected \".concat(dateMessage ? \"on \".concat(dateMessage) : '');\n icon = /*#__PURE__*/React.createElement(Warning, null, /*#__PURE__*/React.createElement(IconAlertWarning, null));\n break;\n }\n return /*#__PURE__*/React.createElement(ReviewMatchRecordStatus, {\n \"data-testid\": generate(['review-match-record-status'], props),\n className: className\n }, icon, /*#__PURE__*/React.createElement(Text$1, null, message));\n};\nvar ReviewMatchRecordStatus$2 = styled(ReviewMatchRecordStatus$1)(templateObject_1$1N || (templateObject_1$1N = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1N;\nvar Review$1 = function (props) {\n var control = props.control,\n matches = props.matches,\n reviewMatches = props.reviewMatches,\n activeReviewId = props.activeReviewId,\n onChangeReview = props.onChangeReview,\n onChangeActiveReviewId = props.onChangeActiveReviewId,\n userType = props.userType;\n var isCarousel = reviewMatches.size > 1;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = __read(React.useState(0), 2),\n activeSlide = _a[0],\n setActiveSlide = _a[1];\n var getActiveIdFromIndex = function (index) {\n return __spreadArray([], __read(reviewMatches.keys()), false)[index];\n };\n var onChangeSlide = function (value) {\n setActiveSlide(value);\n var activeId = getActiveIdFromIndex(value);\n onChangeActiveReviewId(activeId);\n };\n React.useEffect(function () {\n var getIndexFromActiveId = function (id) {\n return activeReviewId ? __spreadArray([], __read(reviewMatches.keys()), false).indexOf(activeReviewId) : -1;\n };\n setActiveSlide(getIndexFromActiveId());\n }, [activeReviewId, setActiveSlide, reviewMatches]);\n var renderSlide = function () {\n if (isCarousel) {\n return /*#__PURE__*/React.createElement(CarouselHolder, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Carousel, {\n activeSlide: activeSlide,\n onChangeSlide: onChangeSlide,\n children: __spreadArray([], __read(reviewMatches), false).map(function (item, index) {\n var _a;\n var match = matches.get(item[0]);\n var controlMatch = (_a = control.matches) === null || _a === void 0 ? void 0 : _a.find(function (a) {\n var _a;\n return ((_a = a.matchedAcinControl) === null || _a === void 0 ? void 0 : _a.id) === item[0];\n });\n var statusData = {\n status: controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.status,\n approvedRejectedAt: controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.approvedRejectedAt\n };\n if (match && activeReviewId) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AcinMatchingSuggestionReview$2, {\n key: item[0],\n renderStatus: /*#__PURE__*/React.createElement(ReviewMatchRecordStatus$2, {\n data: statusData\n }),\n currentIndex: index + 1,\n totalItems: reviewMatches.size,\n data: match,\n activeReviewId: activeReviewId,\n reviewMatch: item[1],\n onChangeReview: onChangeReview,\n comments: (controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.internalComment) || undefined,\n userType: userType\n }));\n }\n return /*#__PURE__*/React.createElement(\"div\", null);\n })\n }));\n } else {\n return __spreadArray([], __read(reviewMatches), false).map(function (item, index) {\n var _a;\n var match = matches.get(item[0]);\n var controlMatch = (_a = control.matches) === null || _a === void 0 ? void 0 : _a.find(function (a) {\n var _a;\n return ((_a = a.matchedAcinControl) === null || _a === void 0 ? void 0 : _a.id) === item[0];\n });\n var statusData = {\n status: controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.status,\n approvedRejectedAt: controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.approvedRejectedAt\n };\n if (match && activeReviewId) {\n return /*#__PURE__*/React.createElement(AcinMatchingSuggestionReview$2, {\n key: item[0],\n renderStatus: /*#__PURE__*/React.createElement(ReviewMatchRecordStatus$2, {\n data: statusData\n }),\n currentIndex: index + 1,\n totalItems: reviewMatches.size,\n data: match,\n activeReviewId: activeReviewId,\n reviewMatch: item[1],\n onChangeReview: onChangeReview,\n comments: (controlMatch === null || controlMatch === void 0 ? void 0 : controlMatch.internalComment) || undefined,\n userType: userType\n });\n } else {\n return /*#__PURE__*/React.createElement(\"div\", null, \"Cant find match.. \");\n }\n });\n }\n };\n return /*#__PURE__*/React.createElement(Review, null, /*#__PURE__*/React.createElement(Left, null, /*#__PURE__*/React.createElement(ClientControlDescriptionReview$2, {\n data: control\n })), /*#__PURE__*/React.createElement(Right, null, renderSlide()));\n};\nvar NoMatchReview = styled(View)(templateObject_1$1O || (templateObject_1$1O = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"])));\nvar Desc = styled(Text$1)(templateObject_2$r || (templateObject_2$r = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1O, templateObject_2$r;\nvar NoMatchReview$1 = function (props) {\n var _a, _b, _c;\n var className = props.className,\n reviewNoMatch = props.reviewNoMatch,\n comments = props.comments,\n onChangeReview = props.onChangeReview,\n renderStatus = props.renderStatus,\n userType = props.userType;\n var onChangeExternal = React.useCallback(function (value) {\n onChangeReview({\n externalComment: value\n });\n }, [onChangeReview]);\n var onChangeInternal = React.useCallback(function (value) {\n onChangeReview({\n internalComment: value\n });\n }, [onChangeReview]);\n var onSetOverride = React.useCallback(function (reasonCode) {\n onChangeReview({\n reasonCode: reasonCode\n });\n }, [onChangeReview]);\n return /*#__PURE__*/React.createElement(NoMatchReview, {\n \"data-testid\": generate(['no-match-review'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingSuggestionReview$2, {\n isAcin: true,\n title: \"No Match Selected\",\n renderStatus: renderStatus,\n comments: comments,\n hideCommentsBadge: true,\n externalComment: ((_a = reviewNoMatch.data) === null || _a === void 0 ? void 0 : _a.externalComment) || '',\n onChangeExternalComment: onChangeExternal,\n onChangeInternalComment: onChangeInternal,\n internalCommentRequired: reviewNoMatch.requiredInternalComment,\n externalCommentRequired: reviewNoMatch.requiredExternalComment,\n userType: userType,\n matchId: ((_b = reviewNoMatch.data) === null || _b === void 0 ? void 0 : _b.matchId) || undefined\n }, /*#__PURE__*/React.createElement(Desc, {\n size: -1,\n variant: \"secondary\"\n }, userType === IDataMatcherAssignedTo.Matcher ? /*#__PURE__*/React.createElement(React.Fragment, null, \"You have confirmed that this control has no matches to the Acin network. Please ensure the correct reason code is selected and an external note for customers is added before saving.\") : /*#__PURE__*/React.createElement(React.Fragment, null, \"The matcher has confirmed that this control has no matches to the Acin network.\")), /*#__PURE__*/React.createElement(OverrideReasonCode$2, {\n label: \"Assign Reason Code\",\n reasonCode: ((_c = reviewNoMatch.data) === null || _c === void 0 ? void 0 : _c.reasonCode) || '',\n reasonCodeTypes: ['A'],\n onChange: onSetOverride,\n disabled: userType === IDataMatcherAssignedTo.Approver\n })));\n};\nvar NoMatchReview$2 = styled(NoMatchReview$1)(templateObject_1$1P || (templateObject_1$1P = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1P;\nvar ReviewNoMatch = function (props) {\n var _a, _b;\n var control = props.control,\n reviewNoMatch = props.reviewNoMatch,\n onChangeReview = props.onChangeReview,\n userType = props.userType;\n var comments = (_b = (_a = control.matches) === null || _a === void 0 ? void 0 : _a.find(function (item) {\n return !item.matchedAcinControl;\n })) === null || _b === void 0 ? void 0 : _b.internalComment;\n return /*#__PURE__*/React.createElement(Review, null, /*#__PURE__*/React.createElement(Left, null, /*#__PURE__*/React.createElement(ClientControlDescriptionReview$2, {\n data: control\n })), /*#__PURE__*/React.createElement(Right, null, /*#__PURE__*/React.createElement(NoMatchReview$2, {\n reviewNoMatch: reviewNoMatch,\n onChangeReview: onChangeReview,\n comments: comments || undefined,\n userType: userType\n })));\n};\nvar Approver = function (props) {\n var dataMatcherId = props.dataMatcherId,\n data = props.data,\n matches = props.matches,\n onSetApproverMatches = props.onSetApproverMatches;\n var initialLoaded = React.useRef(false); // const { onSetReviewLoading } = useMatching();\n // fire the query to get all suggestions, when the data gets back we need to select all where they match, and fire the correct action to populate the relevant review screens\n\n var queryData = useGetDataMatchingControlsWorkflowAcinControlsQuery({\n variables: {\n input: {\n dataMatcherClientControlId: data.id,\n dataMatcherId: dataMatcherId\n },\n filterInput: {}\n },\n fetchPolicy: 'no-cache'\n }).data; // I added a watcher for the loading of this query and it seemed to be constant...??\n\n var nodes = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowAcinControls.nodes;\n /**\r\n * When the user ID changes, clear the ref so the data can re-load and populate the approved matches\r\n */\n\n React.useEffect(function () {\n initialLoaded.current = false;\n }, [data.id]);\n /**\r\n * When the data changes, we need to fire the correct actions\r\n */\n\n React.useEffect(function () {\n // if (loading) {\n // onSetReviewLoading(true);\n // }\n if (nodes && !initialLoaded.current) {\n initialLoaded.current = true;\n var matchedAcinControlIds_1 = __spreadArray([], __read(matches), false).reduce(function (acc, item) {\n return item[1].acinControlId ? __spreadArray(__spreadArray([], __read(acc), false), [item[1].acinControlId], false) : acc;\n }, []);\n var matchingNodes = nodes.filter(function (item) {\n return matchedAcinControlIds_1.includes(item.control.id);\n }) || [];\n onSetApproverMatches(matchingNodes);\n }\n }, [nodes, matches, onSetApproverMatches // onSetReviewLoading,\n // loading\n ]);\n return /*#__PURE__*/React.createElement(React.Fragment, null);\n};\nfunction usePrevious(value) {\n var ref = React.useRef();\n React.useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}\nvar MatcherProgress$1 = function (props) {\n var theme = useTheme();\n var position = props.position,\n selected = props.selected;\n var calculatePercentage = function (total, value) {\n return value / total * 100;\n };\n var stepperHistory = __spreadArray([], __read(selected), false).splice(0, position - 1);\n var stepperCount = stepperHistory.reduce(function (acc, item) {\n if (item[1].matches && item[1].matches.length > 0) {\n var countData = getCountInfo([item[1]]);\n return __assign(__assign(__assign({}, acc), countData.matched > 0 ? {\n matched: acc.matched + 1,\n toDo: acc.toDo - 1\n } : {}), countData.approved + countData.rejected > 0 ? {\n skipped: acc.skipped + 1,\n toDo: acc.toDo - 1\n } : {});\n } else {\n return __assign(__assign({}, acc), {\n skipped: acc.skipped + 1,\n toDo: acc.toDo - 1\n });\n }\n }, {\n matched: 0,\n skipped: 0,\n toDo: selected.size\n });\n var progress = [{\n type: 'matched',\n title: 'Matched',\n color: theme.colors.success.getValue().main,\n count: stepperCount.matched,\n value: calculatePercentage(selected.size, stepperCount.matched)\n }, {\n type: 'skipped',\n title: 'Skipped',\n color: theme.colors.info.getValue().main,\n count: stepperCount.skipped,\n value: calculatePercentage(selected.size, stepperCount.skipped + stepperCount.matched)\n }];\n var sortedProgress = [progress[1], progress[0]];\n if (sortedProgress) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: sortedProgress\n }), progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"toDo\",\n title: \"To Do\",\n color: \"#EEEEEE\",\n count: stepperCount.toDo\n }));\n }\n return null;\n};\nvar ApproverProgress$1 = function (props) {\n var theme = useTheme();\n var position = props.position,\n selected = props.selected;\n var calculatePercentage = function (total, value) {\n return value / total * 100;\n };\n var stepperHistory = __spreadArray([], __read(selected), false).splice(0, position - 1);\n var stepperCount = stepperHistory.reduce(function (acc, item) {\n if (item[1].matches && item[1].matches.length > 0) {\n var countData = getCountInfo([item[1]]);\n return __assign(__assign(__assign({}, acc), countData.approved + countData.rejected === 0 ? {\n skipped: acc.skipped + 1,\n toDo: acc.toDo - 1\n } : {}), countData.approved + countData.rejected > 0 ? {\n reviewed: acc.reviewed + 1,\n toDo: acc.toDo - 1\n } : {});\n } else {\n return __assign(__assign({}, acc), {\n skipped: acc.skipped + 1,\n toDo: acc.toDo - 1\n });\n }\n }, {\n reviewed: 0,\n skipped: 0,\n toDo: selected.size\n });\n var progress = [{\n type: 'reviewed',\n title: 'Reviewed',\n color: theme.colors.success.getValue().main,\n count: stepperCount.reviewed,\n value: calculatePercentage(selected.size, stepperCount.reviewed)\n }, {\n type: 'skipped',\n title: 'Skipped',\n color: theme.colors.info.getValue().main,\n count: stepperCount.skipped,\n value: calculatePercentage(selected.size, stepperCount.skipped + stepperCount.reviewed)\n }];\n var sortedProgress = [progress[1], progress[0]];\n if (sortedProgress) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: sortedProgress\n }), progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"toDo\",\n title: \"To Do\",\n color: \"#EEEEEE\",\n count: stepperCount.toDo\n }));\n }\n return null;\n};\nvar MatchAcinControlToClientControlDocument = gql(templateObject_1$1Q || (templateObject_1$1Q = __makeTemplateObject([\"\\n mutation matchAcinControlToClientControl(\\n $input: MatchAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n $filterInput: FilterInput\\n ) {\\n matchAcinControlToClientControl(input: $input, filterInput: $filterInput) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation matchAcinControlToClientControl(\\n $input: MatchAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n $filterInput: FilterInput\\n ) {\\n matchAcinControlToClientControl(input: $input, filterInput: $filterInput) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc);\n/**\r\n * __useMatchAcinControlToClientControlMutation__\r\n *\r\n * To run a mutation, you first call `useMatchAcinControlToClientControlMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useMatchAcinControlToClientControlMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [matchAcinControlToClientControlMutation, { data, loading, error }] = useMatchAcinControlToClientControlMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * controlSortInput: // value for 'controlSortInput'\r\n * summarySortInput: // value for 'summarySortInput'\r\n * filterInput: // value for 'filterInput'\r\n * },\r\n * });\r\n */\n\nfunction useMatchAcinControlToClientControlMutation(baseOptions) {\n return useMutation(MatchAcinControlToClientControlDocument, baseOptions);\n}\nvar templateObject_1$1Q;\nvar ApproveRejectAcinControlToClientControlDocument = gql(templateObject_1$1R || (templateObject_1$1R = __makeTemplateObject([\"\\n mutation approveRejectAcinControlToClientControl(\\n $input: ApproveRejectMatchAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n approveRejectAcinControlToClientControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation approveRejectAcinControlToClientControl(\\n $input: ApproveRejectMatchAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n approveRejectAcinControlToClientControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc);\n/**\r\n * __useApproveRejectAcinControlToClientControlMutation__\r\n *\r\n * To run a mutation, you first call `useApproveRejectAcinControlToClientControlMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useApproveRejectAcinControlToClientControlMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [approveRejectAcinControlToClientControlMutation, { data, loading, error }] = useApproveRejectAcinControlToClientControlMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * controlSortInput: // value for 'controlSortInput'\r\n * summarySortInput: // value for 'summarySortInput'\r\n * },\r\n * });\r\n */\n\nfunction useApproveRejectAcinControlToClientControlMutation(baseOptions) {\n return useMutation(ApproveRejectAcinControlToClientControlDocument, baseOptions);\n}\nvar templateObject_1$1R;\nvar GetUnassignedAcinControlsDocument = gql(templateObject_1$1S || (templateObject_1$1S = __makeTemplateObject([\"\\n query getUnassignedAcinControls($dataMatcherId: ID!) {\\n getDataMatchingControlsWorkflowUnassignedAcinControls(dataMatcherId: $dataMatcherId) {\\n acinControls {\\n ...DataMatchingUnassignedAcinControl\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n query getUnassignedAcinControls($dataMatcherId: ID!) {\\n getDataMatchingControlsWorkflowUnassignedAcinControls(dataMatcherId: $dataMatcherId) {\\n acinControls {\\n ...DataMatchingUnassignedAcinControl\\n }\\n }\\n }\\n \", \"\\n\"])), DataMatchingUnassignedAcinControlFragmentDoc);\n/**\r\n * __useGetUnassignedAcinControlsQuery__\r\n *\r\n * To run a query within a React component, call `useGetUnassignedAcinControlsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUnassignedAcinControlsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUnassignedAcinControlsQuery({\r\n * variables: {\r\n * dataMatcherId: // value for 'dataMatcherId'\r\n * },\r\n * });\r\n */\n\nfunction useGetUnassignedAcinControlsQuery(baseOptions) {\n return useQuery(GetUnassignedAcinControlsDocument, baseOptions);\n}\nfunction useGetUnassignedAcinControlsLazyQuery(baseOptions) {\n return useLazyQuery(GetUnassignedAcinControlsDocument, baseOptions);\n}\nvar templateObject_1$1S;\nvar transformAcinControlMatchesData = function (control) {\n var matchingMap = (control.matches || []).reduce(function (acc, item) {\n var _a, _b;\n if ((_a = item.matchedAcinControl) === null || _a === void 0 ? void 0 : _a.id) {\n acc.set(item.matchedAcinControl.id, {\n matchId: item.id,\n reasonCode: item.reasonCode,\n acinControlId: item.matchedAcinControl.id,\n externalComment: (_b = item.externalComment) === null || _b === void 0 ? void 0 : _b.comment\n });\n }\n return acc;\n }, new Map());\n return matchingMap;\n};\nvar transformNoMatchesData = function (control) {\n var _a;\n var noMatch = (control.matches || []).find(function (item) {\n return !item.matchedAcinControl;\n });\n if (noMatch) {\n return {\n matchId: noMatch.id,\n reasonCode: noMatch.reasonCode,\n acinControlId: undefined,\n externalComment: (_a = noMatch.externalComment) === null || _a === void 0 ? void 0 : _a.comment\n };\n }\n return undefined;\n};\nvar INITIAL_STATE$1 = {\n position: 1,\n current: undefined,\n matches: new Map(),\n noMatch: undefined,\n reviewMatches: new Map(),\n checkedSuggestions: new Map(),\n disabledQuickSave: true,\n activeReviewId: undefined,\n restrictCheckReasonCodes: undefined,\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: false\n};\nvar matchingReducer = function (state, action) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n if (state === void 0) {\n state = INITIAL_STATE$1;\n }\n switch (action.type) {\n case 'ClearAction':\n return INITIAL_STATE$1;\n case 'ClearCheckedAction':\n {\n // Remove anything that is new\n var newMatches_1 = new Map(state.matches);\n newMatches_1.forEach(function (item, key) {\n if (!item.matchId) {\n newMatches_1.delete(key);\n }\n });\n return __assign(__assign({}, state), {\n checkedSuggestions: new Map(),\n matches: newMatches_1,\n disabledQuickSave: true,\n restrictCheckReasonCodes: undefined\n });\n }\n // This also works as a reset\n\n case 'SetCurrent':\n {\n var restrictCheckReasonCodes = (_a = action.current.matches) === null || _a === void 0 ? void 0 : _a.reduce(function (acc, item) {\n return acc || (item.matchedAcinControl ? getReasonCodeType(item.reasonCode) : undefined);\n }, undefined);\n var newActiveReviewId = undefined;\n var newReviewMatches = new Map();\n var newCheckedSuggestions = new Map();\n var newReviewFlowOpen = false;\n var newReviewNoMatch = undefined;\n var newNoMatchReviewFlowOpen = false;\n var newNoMatch = transformNoMatchesData(action.current); // If we already have a no match, then open the modal on the review page\n\n if (newNoMatch) {\n var reason = allCodes.get(newNoMatch.reasonCode);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: __assign({}, newNoMatch),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n };\n newNoMatchReviewFlowOpen = true;\n }\n return __assign(__assign({}, state), {\n position: action.position,\n current: action.current,\n matches: transformAcinControlMatchesData(action.current),\n noMatch: newNoMatch,\n reviewMatches: newReviewMatches,\n activeReviewId: newActiveReviewId,\n checkedSuggestions: newCheckedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes,\n reviewFlowOpen: newReviewFlowOpen,\n reviewNoMatch: newReviewNoMatch,\n noMatchReviewFlowOpen: newNoMatchReviewFlowOpen\n });\n }\n case 'SetActiveReview':\n {\n return __assign(__assign({}, state), {\n activeReviewId: action.activeReviewId\n });\n }\n case 'DeleteMatch':\n {\n // This may be overritten depending on what is being deleted\n var newActiveReviewId = state.activeReviewId;\n var newCheckedSuggestions = new Map(state.checkedSuggestions); // Remove it from the list of checked suggestions\n\n if (action.match.acinControlId && newCheckedSuggestions.has(action.match.acinControlId)) {\n newCheckedSuggestions.delete(action.match.acinControlId);\n } // Are we deleting an existing match?\n\n if (action.match.matchId) {\n // need to find by matchgId\n var find = __spreadArray([], __read(state.matches), false).find(function (a) {\n return a[1].matchId === action.match.matchId;\n });\n var newMatches = new Map(state.matches);\n if (find) {\n // Remove it where the matchId matches.\n newMatches = new Map(__spreadArray([], __read(newMatches), false).filter(function (item) {\n return item[1].matchId !== action.match.matchId;\n }));\n } // If the acin control id from the match being deleted is also the activeReviewId,\n // then remove the activeReviewId from the list.\n // @todo - Possible this needs to be the next id in the sequence\n\n if (find && find[1].acinControlId === state.activeReviewId) {\n newActiveReviewId = undefined;\n } // Get the list of reason code types\n\n var restrictCheckReasonCodes = __spreadArray([], __read(newCheckedSuggestions), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n });\n return __assign(__assign({}, state), {\n matches: newMatches,\n activeReviewId: newActiveReviewId,\n checkedSuggestions: newCheckedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes.length > 0 ? restrictCheckReasonCodes[0] : undefined\n }); // If it didnt have a matchId, then we can just remove it from the list with the acinControlId\n } else if (action.match.acinControlId) {\n var newMatches = new Map(state.matches);\n newMatches.delete(action.match.acinControlId); // If the acin control id from the match being deleted is also the activeReviewId,\n // then remove the activeReviewId from the list.\n // @todo - Possible this needs to be the next id in the sequence\n\n if (action.match.acinControlId === state.activeReviewId) {\n newActiveReviewId = undefined;\n } // Get the list of reason code types\n\n var restrictCheckReasonCodes = __spreadArray([], __read(newCheckedSuggestions), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n });\n return __assign(__assign({}, state), {\n matches: newMatches,\n activeReviewId: newActiveReviewId,\n checkedSuggestions: newCheckedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes.length > 0 ? restrictCheckReasonCodes[0] : undefined\n });\n }\n return state;\n }\n case 'ToggleMatchAcinControl':\n {\n var newCheckedSuggestions_1 = new Map(state.checkedSuggestions);\n var newMatches = new Map(state.matches); // If we have the acin control id, add it to the match set\n\n if (action.match.acinControlId) {\n if (newCheckedSuggestions_1.has(action.match.acinControlId)) {\n newCheckedSuggestions_1.delete(action.match.acinControlId);\n } else {\n newCheckedSuggestions_1.set(action.match.acinControlId, action.raw);\n }\n var existing = newMatches.get(action.match.acinControlId); // If this is already in the set, then unselect it, and delete\n\n if (existing) {\n if (!existing.matchId) {\n newMatches.delete(action.match.acinControlId);\n }\n } else {\n // Add the new match\n newMatches.set(action.match.acinControlId, __assign({}, action.match));\n }\n }\n var isExistingSelected = __spreadArray([], __read(newMatches), false).reduce(function (acc, item) {\n if (acc) return acc;\n return !!item[1].matchId && !!item[1].acinControlId && newCheckedSuggestions_1.has(item[1].acinControlId);\n }, false);\n var containsRequired = checkIfSuggestionsHaveRequiredComments(newCheckedSuggestions_1); // Get the list of reason code types\n\n var restrictCheckReasonCodes = __spreadArray([], __read(newCheckedSuggestions_1), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n }); // Check if anything checked has a reason code, else return back to restricting it based on any existing matches\n\n var restrictMatchReasonCodes = __spreadArray([], __read(newMatches), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n });\n return __assign(__assign({}, state), {\n matches: newMatches,\n checkedSuggestions: newCheckedSuggestions_1,\n disabledQuickSave: newCheckedSuggestions_1.size === 0 || isExistingSelected || containsRequired,\n restrictCheckReasonCodes: restrictCheckReasonCodes.length > 0 ? restrictCheckReasonCodes[0] : restrictMatchReasonCodes[0]\n });\n }\n case 'ClearReviewMatches':\n {\n return __assign(__assign({}, state), {\n reviewMatches: new Map(),\n activeReviewId: undefined\n });\n }\n case 'SetReviewMatches':\n {\n var newReviewMatches = __spreadArray([], __read(state.checkedSuggestions), false).reduce(function (acc, item) {\n var find = state.matches.get(item[1].control.id);\n if (find) {\n var reason = allCodes.get(find.reasonCode);\n acc.set(item[1].control.id, {\n batchStatus: undefined,\n data: find,\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n });\n }\n return acc;\n }, new Map()); // Get the first items control id\n\n var firstActiveReviewId = (_c = (_b = newReviewMatches.get(__spreadArray([], __read(newReviewMatches.keys()), false)[0])) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.acinControlId;\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches,\n activeReviewId: firstActiveReviewId || undefined,\n reviewFlowOpen: true,\n noMatchReviewFlowOpen: false\n });\n }\n case 'SetReviewMatch':\n {\n var newReviewMatches = new Map(state.reviewMatches);\n var currentReviewMatch = newReviewMatches.get(action.activeReviewId);\n var reasonCode = action.data.reasonCode || ((_d = currentReviewMatch === null || currentReviewMatch === void 0 ? void 0 : currentReviewMatch.data) === null || _d === void 0 ? void 0 : _d.reasonCode);\n if (reasonCode) {\n var reason = allCodes.get(reasonCode);\n newReviewMatches.set(action.activeReviewId, __assign(__assign({}, currentReviewMatch), {\n data: __assign(__assign(__assign({}, currentReviewMatch === null || currentReviewMatch === void 0 ? void 0 : currentReviewMatch.data), action.data), {\n reasonCode: reasonCode\n }),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n }));\n }\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches\n });\n }\n case 'SetReviewNoMatchData':\n {\n var reasonCode = action.data.reasonCode || ((_f = (_e = state.reviewNoMatch) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.reasonCode) || DEFAULT_NO_MATCH_REASON_CODE;\n var newReviewNoMatch = __assign(__assign({}, state.reviewNoMatch), {\n data: __assign(__assign(__assign({}, (_g = state.reviewNoMatch) === null || _g === void 0 ? void 0 : _g.data), action.data), {\n reasonCode: reasonCode\n })\n });\n var reason = allCodes.get(reasonCode);\n newReviewNoMatch = __assign(__assign({}, newReviewNoMatch), {\n batchStatus: undefined,\n requiredInternalComment: reason.internalCommentRequired,\n requiredExternalComment: reason.externalCommentRequired\n });\n return __assign(__assign({}, state), {\n reviewNoMatch: newReviewNoMatch\n });\n }\n case 'SetReviewNoMatch':\n {\n var newReviewNoMatch = void 0; // If there is a previous match, move it\n\n if (state.noMatch) {\n var reason = allCodes.get(state.noMatch.reasonCode);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: __assign({}, state.noMatch),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n }; // If there is nothing, then create a initial no match\n } else {\n var reason = allCodes.get(DEFAULT_NO_MATCH_REASON_CODE);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: {\n reasonCode: DEFAULT_NO_MATCH_REASON_CODE\n },\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n };\n }\n return __assign(__assign({}, state), {\n reviewNoMatch: newReviewNoMatch,\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: true\n });\n }\n case 'SetReviewMatchStatus':\n {\n var newReviewMatches = new Map(state.reviewMatches);\n var currentReviewMatch = newReviewMatches.get(action.activeReviewId);\n var ids = __spreadArray([], __read(newReviewMatches.keys()), false); // Work out the next item in the sequence that is not matched.\n\n var currentIndex = ids.indexOf(action.activeReviewId); // Updates the batch status based on the action\n\n if (currentReviewMatch) {\n newReviewMatches.set(action.activeReviewId, __assign(__assign({}, currentReviewMatch), {\n batchStatus: action.batchStatus\n }));\n } else {\n newReviewMatches.set(action.activeReviewId, {\n batchStatus: action.batchStatus\n });\n }\n var firstUnnassignedId = (_h = __spreadArray([], __read(newReviewMatches), false).find(function (item) {\n return !item[1].batchStatus;\n })) === null || _h === void 0 ? void 0 : _h[0]; // Checks for the next unnasigned item in order or returns first skipped item\n\n var nextActiveReviewId = ((_k = (_j = __spreadArray([], __read(newReviewMatches), false).slice(currentIndex)) === null || _j === void 0 ? void 0 : _j.find(function (item) {\n return !item[1].batchStatus;\n })) === null || _k === void 0 ? void 0 : _k[0]) || firstUnnassignedId;\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches,\n activeReviewId: nextActiveReviewId,\n reviewFlowOpen: !!nextActiveReviewId\n });\n }\n case 'CloseReviewFlow':\n {\n return __assign(__assign({}, state), {\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: false\n });\n }\n case 'SetApproverMatches':\n {\n var newCheckedSuggestions_2 = new Map();\n var newReviewMatches = new Map();\n var newActiveReviewId = undefined;\n var newReviewNoMatch = undefined;\n var newReviewFlowOpen = false;\n var newNoMatchReviewFlowOpen = false;\n if (action.matches.length > 0) {\n action.matches.forEach(function (match) {\n // If we have the acin control id, add it to the match set\n if (match.control.id) {\n newCheckedSuggestions_2.set(match.control.id, match);\n }\n });\n newReviewMatches = __spreadArray([], __read(newCheckedSuggestions_2), false).reduce(function (acc, item) {\n var find = state.matches.get(item[1].control.id);\n if (find) {\n var reason = allCodes.get(find.reasonCode);\n acc.set(item[1].control.id, {\n batchStatus: undefined,\n data: find,\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n });\n }\n return acc;\n }, new Map()); // Get the first items control id\n\n newActiveReviewId = ((_m = (_l = newReviewMatches.get(__spreadArray([], __read(newReviewMatches.keys()), false)[0])) === null || _l === void 0 ? void 0 : _l.data) === null || _m === void 0 ? void 0 : _m.acinControlId) || undefined;\n newReviewFlowOpen = true;\n } else {\n // If there is a previous match, move it\n if (state.noMatch) {\n var reason = allCodes.get(state.noMatch.reasonCode);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: __assign({}, state.noMatch),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n }; // If there is nothing, then create a initial no match\n } else {\n var reason = allCodes.get(DEFAULT_NO_MATCH_REASON_CODE);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: {\n reasonCode: DEFAULT_NO_MATCH_REASON_CODE\n },\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n };\n }\n newNoMatchReviewFlowOpen = true;\n }\n return __assign(__assign({}, state), {\n checkedSuggestions: newCheckedSuggestions_2,\n disabledQuickSave: false,\n restrictCheckReasonCodes: undefined,\n reviewNoMatch: newReviewNoMatch,\n reviewMatches: newReviewMatches,\n activeReviewId: newActiveReviewId,\n reviewFlowOpen: newReviewFlowOpen,\n noMatchReviewFlowOpen: newNoMatchReviewFlowOpen\n });\n }\n default:\n return state;\n }\n};\nvar setCurrent = function (position, current) {\n return {\n type: 'SetCurrent',\n position: position,\n current: current\n };\n};\nvar setActiveReview = function (id) {\n return {\n type: 'SetActiveReview',\n activeReviewId: id\n };\n};\nvar setReviewMatches = function () {\n return {\n type: 'SetReviewMatches'\n };\n};\nvar setReviewMatch = function (id, data) {\n return {\n type: 'SetReviewMatch',\n activeReviewId: id,\n data: data\n };\n};\nvar setReviewNoMatch = function () {\n return {\n type: 'SetReviewNoMatch'\n };\n};\nvar setReviewMatchStatus = function (id, batchStatus) {\n return {\n type: 'SetReviewMatchStatus',\n activeReviewId: id,\n batchStatus: batchStatus\n };\n};\nvar clear = function () {\n return {\n type: 'ClearAction'\n };\n};\nvar closeReviewFlow = function () {\n return {\n type: 'CloseReviewFlow'\n };\n};\nvar setReviewNoMatchData = function (data) {\n return {\n type: 'SetReviewNoMatchData',\n data: data\n };\n};\n/**\r\n * Match a new acin Control\r\n */\n\nvar toggleMatchAcinControl = function (newMatch) {\n return {\n type: 'ToggleMatchAcinControl',\n match: {\n reasonCode: newMatch.reasonCode,\n acinControlId: newMatch.control.id\n },\n raw: newMatch\n };\n};\n/**\r\n * Set the reviewer matches\r\n */\n\nvar setApproverMatches = function (matches) {\n return {\n type: 'SetApproverMatches',\n matches: matches\n };\n};\nvar ControlsWorkflowMatchingModal$1 = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId,\n activeClientFilters = props.activeClientFilters;\n var _a = useMatching(),\n selected = _a.selectedClientControls,\n showMatchingModal = _a.showMatchingModal,\n onCloseMatchingModal = _a.onCloseMatchingModal,\n updateSelectedById = _a.updateSelectedById,\n clearSelected = _a.clearSelected,\n userType = _a.userType,\n activeSorts = _a.activeSorts;\n var modalOpenRef = React.useRef(); // To stop the unwanted reloading of this useCallback,\n // we open the modal, we need to create a ref object for the current, dataMatcherId, and matches\n\n var reviewRef = React.useRef();\n var _b = __read(useMatchAcinControlToClientControlMutation(), 2),\n matchAcinControls = _b[0],\n matchMutationLoading = _b[1].loading;\n var _c = __read(useApproveRejectAcinControlToClientControlMutation(), 2),\n approveReject = _c[0],\n approveMutationLoading = _c[1].loading;\n var mutationloading = matchMutationLoading || approveMutationLoading;\n var _d = __read(React.useReducer(matchingReducer, INITIAL_STATE$1), 2),\n _e = _d[0],\n position = _e.position,\n current = _e.current,\n matches = _e.matches,\n reviewNoMatch = _e.reviewNoMatch,\n checkedSuggestions = _e.checkedSuggestions,\n disabledQuickSave = _e.disabledQuickSave,\n activeReviewId = _e.activeReviewId,\n restrictCheckReasonCodes = _e.restrictCheckReasonCodes,\n reviewMatches = _e.reviewMatches,\n reviewFlowOpen = _e.reviewFlowOpen,\n noMatchReviewFlowOpen = _e.noMatchReviewFlowOpen,\n dispatch = _d[1];\n var _f = __read(React.useState(false), 2),\n hideActions = _f[0],\n setHideActions = _f[1];\n var prevReviewFlowOpen = usePrevious(reviewFlowOpen);\n var onSetHideActions = React.useCallback(function (value) {\n setHideActions(value);\n }, [setHideActions]);\n var getSelectedFromPosition = React.useCallback(function (pos) {\n return selected.get(__spreadArray([], __read(selected.keys()), false)[pos - 1]);\n }, [selected]);\n /**\r\n * When the matching modal mounts, clear the set of matches\r\n */\n\n React.useEffect(function () {\n // When the modal is visible, and we are at position 1, set the first item\n if (showMatchingModal && position === 1 && !modalOpenRef.current) {\n modalOpenRef.current = true; // Get the first item, (remember index is -1)\n\n var item = getSelectedFromPosition(position);\n if (item) {\n dispatch(setCurrent(position, item));\n }\n }\n }, [showMatchingModal, getSelectedFromPosition, position, userType]);\n /**\r\n * When the review flow is activated (opened)\r\n * we need to store a ref for the data at this point in time,\r\n * so when it is closed, we can save the matches at the point\r\n * in time that it was opened\r\n */\n\n React.useEffect(function () {\n if (reviewFlowOpen && current) {\n reviewRef.current = {\n dataMatcherId: dataMatcherId,\n currentId: current.id,\n matches: matches,\n position: position,\n userType: userType,\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n };\n }\n }, [reviewFlowOpen, position, matches, current, dataMatcherId, userType, activeSorts]);\n var isLast = position === selected.size;\n var onClose = React.useCallback(function () {\n dispatch(clear());\n onCloseMatchingModal();\n dispatch(closeReviewFlow());\n clearSelected();\n modalOpenRef.current = false;\n }, [dispatch, onCloseMatchingModal, clearSelected]);\n /**\r\n * Move to the next control to review\r\n * Either increase the current position, or if its the last one, close the modal and clear the selected items\r\n */\n\n var onNext = React.useCallback(function () {\n var newPosition = position + 1;\n if (newPosition <= selected.size) {\n var nextItem = getSelectedFromPosition(newPosition);\n if (nextItem) {\n dispatch(setCurrent(newPosition, nextItem));\n }\n } else {\n onClose();\n clearSelected();\n }\n }, [clearSelected, dispatch, position, getSelectedFromPosition, onClose, selected]);\n /**\r\n * Toggle the selected match\r\n */\n\n var onToggleMatch = React.useCallback(function (item) {\n dispatch(toggleMatchAcinControl(item));\n }, []);\n /**\r\n * Quick save the matches for the current item\r\n */\n\n var quickSave = function () {\n if (current && matches) {\n matchAcinControls({\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n dataMatcherClientControlId: current.id,\n matches: __spreadArray([], __read(matches), false).map(function (item) {\n return item[1];\n })\n },\n filterInput: activeClientFilters,\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function (res) {\n var _a, _b;\n var findItem = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.matchAcinControlToClientControl.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.controls.nodes.find(function (item) {\n return item.id === current.id;\n });\n if (findItem) {\n // Update the selected item, and stay on this slide\n updateSelectedById(findItem.id, findItem);\n }\n onNext();\n });\n }\n };\n /**\r\n * Clear the seleted matches\r\n */\n\n var onClearSelected = function () {\n var currentItem = getSelectedFromPosition(position);\n if (currentItem) {\n dispatch(setCurrent(position, currentItem));\n }\n };\n /**\r\n * Start the review flow\r\n */\n\n var onReview = function () {\n dispatch(setReviewMatches());\n };\n /**\r\n * Complete the review items\r\n * This will be triggered when the review journey flow is closed\r\n */\n\n var completeReview = React.useCallback(function () {\n var _a, _b; // If the review flow hasnt changed, then dont continue as we only care once the modal is closed.\n\n if (reviewFlowOpen === prevReviewFlowOpen || reviewFlowOpen !== false) return; // should this really be called if that's the case?\n\n var completedReviews = __spreadArray([], __read(reviewMatches), false).filter(function (item) {\n return !!item[1].batchStatus;\n });\n var unCompletedReviews = __spreadArray([], __read(reviewMatches), false).filter(function (item) {\n return !item[1].batchStatus;\n });\n if (reviewRef.current && reviewRef.current.userType === IDataMatcherAssignedTo.Matcher) {\n if (!reviewFlowOpen && completedReviews.length > 0) {\n if (reviewRef.current.currentId && reviewRef.current.matches) {\n var newCurrentMatches_1 = new Map(reviewRef.current.matches); // Loop over the completed reviews, and update / add the current matches to the list\n\n completedReviews.forEach(function (item) {\n if (item[1].batchStatus === 'DELETE') {\n newCurrentMatches_1.delete(item[0]);\n } else if (item[1].batchStatus === 'SAVE') {\n if (item[1].data) {\n // Overwrite the data in the current match\n newCurrentMatches_1.set(item[0], item[1].data);\n }\n }\n });\n matchAcinControls({\n variables: {\n input: {\n dataMatcherId: reviewRef.current.dataMatcherId,\n dataMatcherClientControlId: (_a = reviewRef.current) === null || _a === void 0 ? void 0 : _a.currentId,\n matches: __spreadArray([], __read(newCurrentMatches_1), false).map(function (item) {\n return item[1];\n })\n },\n filterInput: activeClientFilters,\n controlSortInput: reviewRef.current.controlSortInput,\n summarySortInput: reviewRef.current.summarySortInput\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: reviewRef.current.dataMatcherId\n }\n }]\n }).then(function (res) {\n var _a, _b, _c; // scenario 1) if not all the review items have been resolved, then should not move them to the next control\n // scenario 2) if there are no matches at all, then we should not move them to the next control\n // scenario 3) if all the review items are resolved, move them to the next step\n\n var findItem = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.matchAcinControlToClientControl.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.controls.nodes.find(function (item) {\n var _a;\n return item.id === ((_a = reviewRef.current) === null || _a === void 0 ? void 0 : _a.currentId);\n });\n if (findItem) {\n // Update the selected item, and stay on this slide\n updateSelectedById(findItem.id, findItem);\n }\n if (findItem && (((_c = findItem === null || findItem === void 0 ? void 0 : findItem.matches) === null || _c === void 0 ? void 0 : _c.length) === 0 || unCompletedReviews.length > 0) && reviewRef.current !== undefined) {\n // Update the data we have for the current item\n dispatch(setCurrent(reviewRef.current.position, findItem));\n } else {\n onNext();\n }\n });\n }\n }\n } else if (reviewRef.current && reviewRef.current.userType === IDataMatcherAssignedTo.Approver) {\n if (!reviewFlowOpen && completedReviews.length > 0) {\n if (reviewRef.current.currentId && reviewRef.current.matches) {\n var newCurrentMatches = completedReviews.map(function (item) {\n var _a, _b, _c;\n return {\n acinControlId: (_a = item[1].data) === null || _a === void 0 ? void 0 : _a.acinControlId,\n internalComment: (_b = item[1].data) === null || _b === void 0 ? void 0 : _b.internalComment,\n externalComment: (_c = item[1].data) === null || _c === void 0 ? void 0 : _c.externalComment,\n status: item[1].batchStatus === 'APPROVE' ? IDataMatchingMatchStatus.Approved : IDataMatchingMatchStatus.Rejected\n };\n });\n approveReject({\n variables: {\n input: {\n dataMatcherId: reviewRef.current.dataMatcherId,\n dataMatcherClientControlId: (_b = reviewRef.current) === null || _b === void 0 ? void 0 : _b.currentId,\n matches: newCurrentMatches\n },\n controlSortInput: reviewRef.current.controlSortInput,\n summarySortInput: reviewRef.current.summarySortInput\n }\n }).then(function (res) {\n var _a, _b, _c; // scenario 1) if not all the review items have been resolved, then should no move them to the next control\n // scenario 2) if there are no matches at all, then we should not move them to the next control\n // scenario 3) if all the review items are resolved, move them to the next step\n\n var findItem = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.approveRejectAcinControlToClientControl.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.controls.nodes.find(function (item) {\n var _a;\n return item.id === ((_a = reviewRef.current) === null || _a === void 0 ? void 0 : _a.currentId);\n });\n if (findItem) {\n // Update the selected item, and stay on this slide\n updateSelectedById(findItem.id, findItem);\n }\n if (findItem && (((_c = findItem === null || findItem === void 0 ? void 0 : findItem.matches) === null || _c === void 0 ? void 0 : _c.length) === 0 || unCompletedReviews.length > 0) && reviewRef.current !== undefined) {\n // Update the data we have for the current item\n dispatch(setCurrent(reviewRef.current.position, findItem));\n } else {\n onNext();\n }\n });\n }\n }\n }\n }, [prevReviewFlowOpen, reviewMatches, reviewFlowOpen, matchAcinControls, activeClientFilters, approveReject, onNext, updateSelectedById]);\n React.useEffect(function () {\n completeReview();\n }, [completeReview]);\n var backToStepOne = function () {\n dispatch(closeReviewFlow());\n };\n var onDeleteMatch = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus(activeReviewId, 'DELETE'));\n }\n };\n var onSaveMatch = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus(activeReviewId, 'SAVE'));\n }\n };\n var onApprove = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus(activeReviewId, 'APPROVE'));\n }\n };\n var onReject = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus(activeReviewId, 'REJECT'));\n }\n };\n var onSaveNoMatch = function () {\n if (current && reviewNoMatch && reviewNoMatch.data) {\n matchAcinControls({\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n dataMatcherClientControlId: current.id,\n matches: [reviewNoMatch.data]\n },\n filterInput: activeClientFilters,\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function (res) {\n var _a, _b;\n var findItem = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.matchAcinControlToClientControl.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.controls.nodes.find(function (item) {\n return item.id === current.id;\n });\n if (findItem) {\n // Update the selected item, and stay on this slide\n updateSelectedById(findItem.id, findItem);\n }\n onNext();\n });\n }\n };\n var onSaveApproveRejectNoMatch = function (status) {\n var _a, _b, _c;\n if (current && reviewNoMatch && reviewNoMatch.data) {\n var newMatches = {\n acinControlId: (_a = reviewNoMatch.data) === null || _a === void 0 ? void 0 : _a.acinControlId,\n internalComment: (_b = reviewNoMatch.data) === null || _b === void 0 ? void 0 : _b.internalComment,\n externalComment: (_c = reviewNoMatch.data) === null || _c === void 0 ? void 0 : _c.externalComment,\n status: status\n };\n approveReject({\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n dataMatcherClientControlId: current.id,\n matches: [newMatches]\n },\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function () {\n onNext();\n });\n }\n };\n var onChangeActiveReviewId = function (id) {\n dispatch(setActiveReview(id));\n };\n var onChangeReview = React.useCallback(function (acinControlId, data) {\n if (acinControlId) {\n dispatch(setReviewMatch(acinControlId, data));\n }\n }, []);\n var onChangeNoMatchReview = React.useCallback(function (data) {\n dispatch(setReviewNoMatchData(data));\n }, []);\n var onSetApproverMatches = React.useCallback(function (data) {\n dispatch(setApproverMatches(data));\n }, [dispatch]);\n var noMatchFound = function () {\n dispatch(setReviewNoMatch());\n };\n var leftCustomButtons = function () {\n var disableButtons = hideActions || mutationloading;\n if (current && (reviewFlowOpen || noMatchReviewFlowOpen) && userType === IDataMatcherAssignedTo.Matcher) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"secondary\",\n onClick: onClose,\n disabled: disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Return to Step One\",\n variant: \"secondary\",\n onClick: backToStepOne,\n disabled: disableButtons\n }));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"secondary\",\n onClick: onClose,\n disabled: disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Skip This control\",\n variant: \"secondary\",\n onClick: onNext,\n disabled: disableButtons || isLast\n }));\n };\n var rightCustomButtons = function () {\n var _a, _b, _c, _d, _e, _f;\n var disableButtons = hideActions || mutationloading; // Review no match buttons\n\n if (current && noMatchReviewFlowOpen && userType === IDataMatcherAssignedTo.Matcher) {\n var saveDisabled = (reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.requiredInternalComment) && !((_a = reviewNoMatch.data) === null || _a === void 0 ? void 0 : _a.internalComment) || (reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.requiredExternalComment) && !((_b = reviewNoMatch.data) === null || _b === void 0 ? void 0 : _b.externalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Save This Match\",\n variant: \"primary\",\n onClick: onSaveNoMatch,\n disabled: saveDisabled || disableButtons\n }));\n } // Review matches\n\n if (current && reviewFlowOpen && reviewMatches.size && activeReviewId && userType === IDataMatcherAssignedTo.Matcher) {\n var currentReview = reviewMatches.get(activeReviewId);\n var saveDisabled = (currentReview === null || currentReview === void 0 ? void 0 : currentReview.requiredInternalComment) && !((_c = currentReview.data) === null || _c === void 0 ? void 0 : _c.internalComment) || (currentReview === null || currentReview === void 0 ? void 0 : currentReview.requiredExternalComment) && !((_d = currentReview.data) === null || _d === void 0 ? void 0 : _d.externalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Delete This Match\",\n variant: \"secondary\",\n onClick: onDeleteMatch,\n disabled: disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Save This Match\",\n variant: \"primary\",\n onClick: onSaveMatch,\n disabled: saveDisabled || disableButtons\n }));\n } // Approver flow buttons inside modal\n\n if (current && reviewFlowOpen && activeReviewId && userType === IDataMatcherAssignedTo.Approver) {\n var currentReview = reviewMatches.get(activeReviewId); // To reject, the user needs to add a comment\n\n var rejectDisabled = !((_e = currentReview === null || currentReview === void 0 ? void 0 : currentReview.data) === null || _e === void 0 ? void 0 : _e.internalComment); // <Button label=\"Save This Match\" variant=\"primary\" onClick={onSaveNoMatch} disabled={saveDisabled} />\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Reject This Match\",\n variant: \"secondary\",\n onClick: onReject,\n disabled: rejectDisabled || disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Approve This Match\",\n variant: \"primary\",\n onClick: onApprove,\n disabled: disableButtons\n }));\n } // Approver flow no match\n\n if (current && noMatchReviewFlowOpen && userType === IDataMatcherAssignedTo.Approver) {\n var rejectDisabled = !((_f = reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.data) === null || _f === void 0 ? void 0 : _f.internalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Reject This Match\",\n variant: \"secondary\",\n onClick: function () {\n return onSaveApproveRejectNoMatch(IDataMatchingMatchStatus.Rejected);\n },\n disabled: rejectDisabled || disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Approve This Match\",\n variant: \"primary\",\n disabled: disableButtons,\n onClick: function () {\n return onSaveApproveRejectNoMatch(IDataMatchingMatchStatus.Approved);\n }\n }));\n } // Default non review screen\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"No Matches Found\",\n variant: \"secondary\",\n onClick: noMatchFound,\n disabled: disableButtons || matches.size > 0 || checkedSuggestions.size > 0\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Quick Save Selected\",\n variant: \"secondary\",\n disabled: disabledQuickSave || disableButtons || checkedSuggestions.size === 0,\n onClick: function () {\n return quickSave();\n }\n }), /*#__PURE__*/React.createElement(Button, {\n disabled: checkedSuggestions.size === 0 || disableButtons,\n label: \"Review Matches\",\n variant: \"primary\",\n onClick: onReview\n }));\n };\n return /*#__PURE__*/React.createElement(FiltersProvider, null, /*#__PURE__*/React.createElement(ControlsWorkflowMatchingModal, null, /*#__PURE__*/React.createElement(Modal, {\n layerModal: true,\n title: \"Match Control (Step \".concat(reviewFlowOpen ? '2' : '1', \" of 2)\"),\n show: showMatchingModal,\n \"data-testid\": generate(['controls-workflow-matching-modal'], props),\n className: className,\n onClose: onClose,\n size: \"fullscreen\",\n useScrollContent: false,\n leftCustomButtons: leftCustomButtons,\n rightCustomButtons: rightCustomButtons\n }, /*#__PURE__*/React.createElement(MatchingModal, null, current && /*#__PURE__*/React.createElement(MatchingModalTitle, null, /*#__PURE__*/React.createElement(TitleWrap, null, /*#__PURE__*/React.createElement(Text$1, null, \"You are reviewing matches for the following customer control:\"), /*#__PURE__*/React.createElement(Text$1, {\n size: 1,\n weight: 500\n }, current.control.title, \" \", /*#__PURE__*/React.createElement(Text$1, {\n inline: true\n }, current.control.controlCode))), selected.size > 1 && /*#__PURE__*/React.createElement(ProgressWrap, null, ' ', userType === IDataMatcherAssignedTo.Matcher ? /*#__PURE__*/React.createElement(MatcherProgress$1, {\n selected: selected,\n position: position\n }) : /*#__PURE__*/React.createElement(ApproverProgress$1, {\n selected: selected,\n position: position\n }))), current && userType === IDataMatcherAssignedTo.Approver ? /*#__PURE__*/React.createElement(Approver, {\n data: current,\n dataMatcherId: dataMatcherId,\n matches: matches,\n onSetApproverMatches: onSetApproverMatches\n }) : null, current && userType === IDataMatcherAssignedTo.Matcher && !reviewFlowOpen && !noMatchReviewFlowOpen ? /*#__PURE__*/React.createElement(MatchingModalContent, null, /*#__PURE__*/React.createElement(Overview$1, {\n data: current,\n dataMatcherId: dataMatcherId,\n matches: matches,\n onToggleMatch: onToggleMatch,\n onClearSelected: onClearSelected,\n checkedAcinControls: checkedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes,\n userType: userType,\n onSetHideActions: onSetHideActions\n })) : null, current && reviewFlowOpen && !noMatchReviewFlowOpen && checkedSuggestions.size > 0 ? /*#__PURE__*/React.createElement(MatchingModalContent, null, /*#__PURE__*/React.createElement(Review$1, {\n control: current,\n onChangeActiveReviewId: onChangeActiveReviewId,\n activeReviewId: activeReviewId,\n reviewMatches: reviewMatches,\n matches: checkedSuggestions,\n onChangeReview: onChangeReview,\n userType: userType\n })) : null, current && noMatchReviewFlowOpen && reviewNoMatch && !reviewFlowOpen ? /*#__PURE__*/React.createElement(MatchingModalContent, null, /*#__PURE__*/React.createElement(ReviewNoMatch, {\n control: current,\n reviewNoMatch: reviewNoMatch,\n onChangeReview: onChangeNoMatchReview,\n userType: userType\n })) : null))));\n};\nvar ControlsWorkflowMatchingModal$2 = styled(ControlsWorkflowMatchingModal$1)(templateObject_1$1T || (templateObject_1$1T = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1T;\nvar pageBackground$3 = themeHelpers.pageBackground; // This named style should be the wrapper for the component i.e. the module\n\nvar UnassignedNetworkControls = styled(View)(templateObject_1$1U || (templateObject_1$1U = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), Modal);\nvar UnassignedNetworkControlsHeader = styled(View)(templateObject_2$s || (templateObject_2$s = __makeTemplateObject([\"\\n text-align: right;\\n\"], [\"\\n text-align: right;\\n\"])));\nvar ReadOnlyUnassignedAcinControlRow = styled(View)(templateObject_3$l || (templateObject_3$l = __makeTemplateObject([\"\"], [\"\"])));\nvar ReadOnlyUnassignedAcinControlList = styled(View)(templateObject_4$h || (templateObject_4$h = __makeTemplateObject([\"\\n margin-top: \", \";\\n\\n \", \":not(:last-child) {\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n margin-top: \", \";\\n\\n \", \":not(:last-child) {\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, ReadOnlyUnassignedAcinControlRow, function (p) {\n return p.theme.spacing.getSize();\n});\nvar MatchingModal$1 = styled(View)(templateObject_5$b || (templateObject_5$b = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: max-content auto;\\n grid-template-areas:\\n 'title title'\\n 'content content';\\n height: 80vh;\\n\"], [\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: max-content auto;\\n grid-template-areas:\\n 'title title'\\n 'content content';\\n height: 80vh;\\n\"])));\nvar MatchingModalContent$1 = styled(View)(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject([\"\\n grid-area: content;\\n\"], [\"\\n grid-area: content;\\n\"])));\nvar MatchingModalTitle$1 = styled(View)(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject([\"\\n grid-area: title;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n grid-area: title;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar TitleWrap$1 = styled(View)(templateObject_8$5 || (templateObject_8$5 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n flex-direction: column;\\n flex-grow: 2;\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n flex-direction: column;\\n flex-grow: 2;\\n\"])));\nvar ProgressWrap$1 = styled(View)(templateObject_9$4 || (templateObject_9$4 = __makeTemplateObject([\"\\n justify-content: right;\\n flex-grow: 1;\\n\"], [\"\\n justify-content: right;\\n flex-grow: 1;\\n\"])));\nvar Overview$2 = styled(View)(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n height: 80vh;\\n\"], [\"\\n display: grid;\\n grid-template-columns: 40% 60%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n height: 80vh;\\n\"])));\nvar Left$1 = styled(View)(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject([\"\\n grid-area: left;\\n margin-right: \", \";\\n\"], [\"\\n grid-area: left;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Header$2 = styled(View)(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n\"])));\nvar Right$1 = styled.div(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject([\"\\n grid-area: right;\\n overflow: hidden;\\n min-width: 0;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n grid-area: right;\\n overflow: hidden;\\n min-width: 0;\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar Review$2 = styled(View)(templateObject_14$2 || (templateObject_14$2 = __makeTemplateObject([\"\\n display: grid;\\n height: 100%;\\n grid-template-columns: 50%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n min-height: 0;\\n min-width: 0;\\n\"], [\"\\n display: grid;\\n height: 100%;\\n grid-template-columns: 50%;\\n grid-template-rows: 100%;\\n grid-template-areas: 'left right';\\n min-height: 0;\\n min-width: 0;\\n\"])));\nvar CarouselHolder$1 = styled(View)(templateObject_15$2 || (templateObject_15$2 = __makeTemplateObject([\"\\n height: 100%;\\n \", \";\\n\"], [\"\\n height: 100%;\\n \", \";\\n\"])), function (p) {\n return pageBackground$3(p.activeTheme);\n});\nvar AcinLogo$3 = styled(Logo)(templateObject_16$2 || (templateObject_16$2 = __makeTemplateObject([\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"], [\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1U, templateObject_2$s, templateObject_3$l, templateObject_4$h, templateObject_5$b, templateObject_6$9, templateObject_7$7, templateObject_8$5, templateObject_9$4, templateObject_10$2, templateObject_11$2, templateObject_12$2, templateObject_13$2, templateObject_14$2, templateObject_15$2, templateObject_16$2;\nvar DataMatchingUploadedClientControlFragmentDoc = gql(templateObject_1$1V || (templateObject_1$1V = __makeTemplateObject([\"\\n fragment DataMatchingUploadedClientControl on DataMatcherUploadedClientControl {\\n id\\n title\\n controlCode\\n ...DataMatchingClientControlDescription\\n }\\n \", \"\\n\"], [\"\\n fragment DataMatchingUploadedClientControl on DataMatcherUploadedClientControl {\\n id\\n title\\n controlCode\\n ...DataMatchingClientControlDescription\\n }\\n \", \"\\n\"])), DataMatchingClientControlDescriptionFragmentDoc);\nvar templateObject_1$1V;\nvar DataMatcherClientControlSuggestionFragmentDoc = gql(templateObject_1$1W || (templateObject_1$1W = __makeTemplateObject([\"\\n fragment DataMatcherClientControlSuggestion on DataMatcherClientControlSuggestion {\\n id\\n control {\\n ...DataMatchingUploadedClientControl\\n }\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n reasonCode\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n fragment DataMatcherClientControlSuggestion on DataMatcherClientControlSuggestion {\\n id\\n control {\\n ...DataMatchingUploadedClientControl\\n }\\n matchScore {\\n ...DataMatchingMatchScore\\n }\\n reasonCode\\n }\\n \", \"\\n \", \"\\n\"])), DataMatchingUploadedClientControlFragmentDoc, DataMatchingMatchScoreFragmentDoc);\nvar templateObject_1$1W;\nvar GetSuggestionsDocument = gql(templateObject_1$1X || (templateObject_1$1X = __makeTemplateObject([\"\\n query getSuggestions($input: DataMatchingUnassignedAcinControlsSuggestionsInput!) {\\n getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions(input: $input) {\\n totalResults\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatcherClientControlSuggestion\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"], [\"\\n query getSuggestions($input: DataMatchingUnassignedAcinControlsSuggestionsInput!) {\\n getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions(input: $input) {\\n totalResults\\n sortInfo {\\n ...ResultsSortInfo\\n }\\n nodes {\\n ...DataMatcherClientControlSuggestion\\n }\\n }\\n }\\n \", \"\\n \", \"\\n\"])), ResultsSortInfoFragmentDoc, DataMatcherClientControlSuggestionFragmentDoc);\n/**\r\n * __useGetSuggestionsQuery__\r\n *\r\n * To run a query within a React component, call `useGetSuggestionsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetSuggestionsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetSuggestionsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetSuggestionsQuery(baseOptions) {\n return useQuery(GetSuggestionsDocument, baseOptions);\n}\nvar templateObject_1$1X;\nvar VirtualAcinRow$1 = /*#__PURE__*/React.memo(function (_a) {\n var data = _a.data,\n index = _a.index,\n style = _a.style;\n var _b = data(index),\n item = _b.item,\n onToggleMatch = _b.onToggleMatch,\n onExpand = _b.onExpand,\n onChangeHeight = _b.onChangeHeight,\n isChecked = _b.isChecked,\n isCheckDisabled = _b.isCheckDisabled,\n defaultOpen = _b.defaultOpen;\n return /*#__PURE__*/React.createElement(RowWrapper, {\n index: index,\n style: style\n }, /*#__PURE__*/React.createElement(ClientControlSuggestion$2, {\n key: item.id,\n data: item,\n onCheck: onToggleMatch,\n isCheckDisabled: isCheckDisabled,\n isChecked: isChecked,\n onChangeHeight: onChangeHeight,\n onChange: function () {\n return onExpand(item.id);\n },\n isExpanded: defaultOpen,\n defaultOpen: defaultOpen\n }));\n}, areEqual);\nvar Overview$3 = function (props) {\n var data = props.data,\n dataMatcherId = props.dataMatcherId,\n matches = props.matches,\n onToggleMatch = props.onToggleMatch,\n onClearSelected = props.onClearSelected,\n checkedControls = props.checkedControls,\n restrictCheckReasonCodes = props.restrictCheckReasonCodes,\n onSetHideActions = props.onSetHideActions;\n var listRef = React.useRef(null);\n var sizeRef = React.useRef(new Map());\n var _a = __read(React.useState(''), 2),\n searchTerm = _a[0],\n setSearchTerm = _a[1];\n var _b = __read(React.useState(new Set()), 2),\n expanded = _b[0],\n setExpanded = _b[1];\n var _c = __read(React.useState(), 2),\n sort = _c[0],\n setSort = _c[1];\n var _d = useGetSuggestionsQuery({\n variables: {\n input: {\n acinControlId: data.id,\n dataMatcherId: dataMatcherId,\n sort: sort\n }\n }\n }),\n queryData = _d.data,\n loading = _d.loading; // Resets search term when new data is fetched in modal\n\n React.useEffect(function () {\n setSearchTerm('');\n }, [data]);\n React.useEffect(function () {\n if (loading) {\n onSetHideActions(true);\n } else {\n onSetHideActions(false);\n }\n }, [onSetHideActions, loading]);\n var filteredResults = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.nodes.filter(function (item) {\n var _a = item.control,\n title = _a.title,\n controlCode = _a.controlCode,\n description = _a.description;\n return [title, controlCode, description].join(' ').toLowerCase().includes(searchTerm.toLowerCase());\n });\n var onExpand = React.useCallback(function (id) {\n var newExpanded = new Set(expanded);\n if (newExpanded.has(id)) {\n newExpanded.delete(id);\n } else {\n newExpanded.add(id);\n }\n setExpanded(newExpanded);\n }, [expanded, setExpanded]);\n var results = searchTerm ? filteredResults : queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.nodes;\n var suggestionRows = results === null || results === void 0 ? void 0 : results.map(function (item, index) {\n var match = matches.get(item.control.id);\n var reasonCodeType = getReasonCodeType((match === null || match === void 0 ? void 0 : match.reasonCode) || item.reasonCode);\n var isCheckDisabled = !!restrictCheckReasonCodes && reasonCodeType !== restrictCheckReasonCodes;\n var isChecked = checkedControls.has(item.control.id);\n var onChangeHeight = function (height) {\n var _a;\n sizeRef.current.set(index, height);\n (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.resetAfterIndex(index);\n };\n return {\n item: item,\n onToggleMatch: onToggleMatch,\n onChangeHeight: onChangeHeight,\n isChecked: isChecked,\n isCheckDisabled: isCheckDisabled,\n defaultOpen: expanded.has(item.id),\n onExpand: onExpand\n };\n });\n var onChangeSort = React.useCallback(function (value) {\n var foundSort = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.sortInfo.available.find(function (item) {\n return \"\".concat(item.field, \"-\").concat(item.direction) === value;\n });\n if (foundSort) {\n setSort({\n field: foundSort.field,\n direction: foundSort.direction\n });\n }\n }, [setSort, queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.sortInfo.available]);\n var sortOptions = ((queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.sortInfo.available) || []).map(function (item) {\n return {\n label: item.label,\n value: \"\".concat(item.field, \"-\").concat(item.direction)\n };\n });\n var defaultSort = queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.sortInfo.sort;\n var mySort = sort || defaultSort;\n var activeSort = mySort ? \"\".concat(mySort.field, \"-\").concat(mySort.direction) : null;\n return /*#__PURE__*/React.createElement(Overview$2, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Left$1, null, /*#__PURE__*/React.createElement(AcinControlDescription$2, {\n data: data\n })), /*#__PURE__*/React.createElement(Right$1, null, /*#__PURE__*/React.createElement(FilterSection, null, /*#__PURE__*/React.createElement(SearchWrapper, null, /*#__PURE__*/React.createElement(Input, {\n placeholder: \"Search by Control Name, Control Code or Description\",\n value: searchTerm,\n onChange: function (e) {\n return setSearchTerm(e.target.value);\n },\n leftAddon: function () {\n return /*#__PURE__*/React.createElement(IconSearch, null);\n }\n })), sortOptions.length > 0 ? /*#__PURE__*/React.createElement(Sort$3, {\n value: activeSort,\n options: sortOptions,\n onChange: onChangeSort\n }) : null), /*#__PURE__*/React.createElement(OverviewRightTitle, null, /*#__PURE__*/React.createElement(OverviewRightTitleDetails, null, /*#__PURE__*/React.createElement(Text$1, null, \"Displaying \", filteredResults === null || filteredResults === void 0 ? void 0 : filteredResults.length, \" of\", ' ', queryData === null || queryData === void 0 ? void 0 : queryData.getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions.totalResults, ' ', \"Customer Controls\")), /*#__PURE__*/React.createElement(Link$2, {\n disabled: checkedControls.size === 0,\n onClick: onClearSelected\n }, \"Clear Selected (\", checkedControls.size, \")\")), /*#__PURE__*/React.createElement(SuggestionList, null, loading ? /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }) : null, !loading && suggestionRows && suggestionRows.length === 0 ? /*#__PURE__*/React.createElement(Alert, {\n title: \"No matches found\",\n status: \"info\"\n }) : null, suggestionRows && suggestionRows.length > 0 ? /*#__PURE__*/React.createElement(AutoSizer, null, function (_a) {\n var height = _a.height,\n width = _a.width;\n return /*#__PURE__*/React.createElement(VariableSizeList, {\n ref: listRef,\n height: height,\n itemCount: suggestionRows.length,\n itemSize: function (index) {\n return getItemsSize(index, sizeRef);\n },\n itemData: function (index) {\n return suggestionRows[index];\n },\n width: width,\n overscanCount: 5\n }, VirtualAcinRow$1);\n }) : null))));\n};\nvar pageBackground$4 = themeHelpers.pageBackground;\nvar AcinControlDescriptionReview = styled(View)(templateObject_1$1Y || (templateObject_1$1Y = __makeTemplateObject([\"\\n // Duped from MatchingSuggestionReview // TODO: Relocate / share this\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n overflow: hidden;\\n \", \";\\n\"], [\"\\n // Duped from MatchingSuggestionReview // TODO: Relocate / share this\\n display: flex;\\n flex-direction: column;\\n height: 100%;\\n padding: \", \";\\n overflow: hidden;\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return pageBackground$4(p.activeTheme);\n});\nvar Header$3 = styled(View)(templateObject_2$t || (templateObject_2$t = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n margin-bottom: \", \";\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar AcinLogo$4 = styled(Logo)(templateObject_3$m || (templateObject_3$m = __makeTemplateObject([\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"], [\"\\n margin-right: \", \";\\n padding-right: \", \";\\n border-right: 1px solid \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar HeaderLabel$2 = styled(View)(templateObject_4$i || (templateObject_4$i = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar ControlTitle$2 = styled(Text$1)(templateObject_5$c || (templateObject_5$c = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar ControlCode$2 = styled(ControlTitle$2)(templateObject_6$a || (templateObject_6$a = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ControlDetails$2 = styled(View)(templateObject_7$8 || (templateObject_7$8 = __makeTemplateObject([\"\\n flex: 1;\\n\"], [\"\\n flex: 1;\\n\"])));\nvar ScrollWrapper$2 = styled(ScrollableContent)(templateObject_8$6 || (templateObject_8$6 = __makeTemplateObject([\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"], [\"\\n height: 100%;\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}); // Duped from MatchingSuggestionReview ends\n\nvar TitleSection$2 = styled(View)(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: left;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: left;\\n flex-direction: row;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1Y, templateObject_2$t, templateObject_3$m, templateObject_4$i, templateObject_5$c, templateObject_6$a, templateObject_7$8, templateObject_8$6, templateObject_9$5;\nvar AcinControlDescriptionReview$1 = function (props) {\n var className = props.className,\n data = props.data;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(AcinControlDescriptionReview, {\n \"data-testid\": generate(['acin-control-description-review'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Header$3, null, /*#__PURE__*/React.createElement(HeaderLabel$2, null, /*#__PURE__*/React.createElement(AcinLogo$4, {\n size: \"small\"\n }), /*#__PURE__*/React.createElement(Text$1, {\n weight: 500\n }, \"Network Control\"))), /*#__PURE__*/React.createElement(ControlDetails$2, null, /*#__PURE__*/React.createElement(ScrollWrapper$2, {\n fixedHeight: \"100%\",\n bars: null\n }, /*#__PURE__*/React.createElement(TitleSection$2, null, /*#__PURE__*/React.createElement(ControlTitle$2, {\n weight: 400\n }, data.title), /*#__PURE__*/React.createElement(ControlCode$2, {\n weight: 400,\n size: -1\n }, data.controlCode)), /*#__PURE__*/React.createElement(AcinControlDescription$1, {\n data: data\n }))));\n};\nvar AcinControlDescriptionReview$2 = styled(AcinControlDescriptionReview$1)(templateObject_1$1Z || (templateObject_1$1Z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1Z;\nvar ClientMatchingSuggestionReview = styled(View)(templateObject_1$1_ || (templateObject_1$1_ = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"])));\nvar templateObject_1$1_;\nvar ClientControlSuggestionDescription = styled(View)(templateObject_1$1$ || (templateObject_1$1$ = __makeTemplateObject([\"\"], [\"\"])));\nvar Heading$1 = styled(Text$1)(templateObject_2$u || (templateObject_2$u = __makeTemplateObject([\"\"], [\"\"])));\nvar MetaContainer$4 = styled(View)(templateObject_3$n || (templateObject_3$n = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaItem$4 = styled(View)(templateObject_4$j || (templateObject_4$j = __makeTemplateObject([\"\\n min-width: 190px;\\n\"], [\"\\n min-width: 190px;\\n\"])));\nvar templateObject_1$1$, templateObject_2$u, templateObject_3$n, templateObject_4$j;\nvar ClientControlSuggestionDescription$1 = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(ClientControlSuggestionDescription, {\n \"data-testid\": generate(['client-control-suggestion-description'], props),\n className: className\n }, (data === null || data === void 0 ? void 0 : data.control) && /*#__PURE__*/React.createElement(ClientControlDescription$2, {\n data: data === null || data === void 0 ? void 0 : data.control\n }));\n};\nvar ClientControlSuggestionDescription$2 = styled(ClientControlSuggestionDescription$1)(templateObject_1$20 || (templateObject_1$20 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$20;\nvar ClientMatchingSuggestionReview$1 = function (props) {\n var _a, _b, _c;\n var className = props.className,\n data = props.data,\n reviewMatch = props.reviewMatch,\n comments = props.comments,\n activeReviewId = props.activeReviewId,\n onChangeReview = props.onChangeReview,\n _d = props.totalItems,\n totalItems = _d === void 0 ? 1 : _d,\n _e = props.currentIndex,\n currentIndex = _e === void 0 ? 1 : _e,\n renderStatus = props.renderStatus;\n var _f = __read(React.useState(false), 2),\n showOverride = _f[0],\n setShowOverride = _f[1];\n var onChangeExternal = React.useCallback(function (value) {\n onChangeReview(activeReviewId, {\n externalComment: value\n });\n }, [onChangeReview, activeReviewId]);\n var onChangeInternal = React.useCallback(function (value) {\n onChangeReview(activeReviewId, {\n internalComment: value\n });\n }, [onChangeReview, activeReviewId]);\n var onSetOverride = React.useCallback(function (reasonCode) {\n onChangeReview(activeReviewId, {\n reasonCode: reasonCode\n });\n }, [onChangeReview, activeReviewId]);\n var renderBadges = function () {\n var _a;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ReasonCode$2, {\n isSuggestion: true,\n code: ((_a = reviewMatch.data) === null || _a === void 0 ? void 0 : _a.reasonCode) || data.reasonCode\n }), /*#__PURE__*/React.createElement(MatchScore$2, {\n data: data.matchScore\n }));\n };\n var onOverrideCode = function (onClose) {\n setShowOverride(true);\n onClose();\n };\n var reasonCodeTypes = getReasonCodeType(((_a = reviewMatch.data) === null || _a === void 0 ? void 0 : _a.reasonCode) || data.reasonCode);\n return /*#__PURE__*/React.createElement(ClientMatchingSuggestionReview, {\n \"data-testid\": generate(['client-matching-suggestion-review'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingSuggestionReview$2, {\n title: \"Customer Control (\".concat(currentIndex, \" of \").concat(totalItems, \")\"),\n renderStatus: renderStatus,\n controlTitle: data === null || data === void 0 ? void 0 : data.control.title,\n controlCode: data === null || data === void 0 ? void 0 : data.control.controlCode,\n badges: renderBadges,\n comments: comments,\n externalComment: ((_b = reviewMatch.data) === null || _b === void 0 ? void 0 : _b.externalComment) || '',\n onChangeExternalComment: onChangeExternal,\n onChangeInternalComment: onChangeInternal,\n internalCommentRequired: reviewMatch.requiredInternalComment,\n externalCommentRequired: reviewMatch.requiredExternalComment,\n // need to add validation stuff for internal / external comments (Review match)\n menuDropdownContent: reasonCodeTypes !== 'A' ? function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function () {\n return onOverrideCode(onClose);\n },\n items: [{\n label: 'Override Reason Code'\n }]\n });\n } : undefined\n }, showOverride ? /*#__PURE__*/React.createElement(OverrideReasonCode$2, {\n label: \"Override Reason Code\",\n reasonCode: ((_c = reviewMatch.data) === null || _c === void 0 ? void 0 : _c.reasonCode) || '',\n reasonCodeTypes: ['B'],\n onChange: onSetOverride\n }) : null, /*#__PURE__*/React.createElement(ClientControlSuggestionDescription$2, {\n data: data\n })));\n};\nvar ClientMatchingSuggestionReview$2 = styled(ClientMatchingSuggestionReview$1)(templateObject_1$21 || (templateObject_1$21 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$21;\nvar Review$3 = function (props) {\n var control = props.control,\n matches = props.matches,\n reviewMatches = props.reviewMatches,\n activeReviewId = props.activeReviewId,\n onChangeReview = props.onChangeReview,\n onChangeActiveReviewId = props.onChangeActiveReviewId;\n var isCarousel = reviewMatches.size > 1;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = __read(React.useState(0), 2),\n activeSlide = _a[0],\n setActiveSlide = _a[1];\n var getActiveIdFromIndex = function (index) {\n return __spreadArray([], __read(reviewMatches.keys()), false)[index];\n };\n var onChangeSlide = function (value) {\n setActiveSlide(value);\n var activeId = getActiveIdFromIndex(value);\n onChangeActiveReviewId(activeId);\n };\n React.useEffect(function () {\n var getIndexFromActiveId = function (id) {\n return activeReviewId ? __spreadArray([], __read(reviewMatches.keys()), false).indexOf(activeReviewId) : -1;\n };\n var index = getIndexFromActiveId();\n setActiveSlide(index);\n }, [activeReviewId, setActiveSlide, reviewMatches]);\n var renderSlide = function () {\n if (isCarousel) {\n return /*#__PURE__*/React.createElement(CarouselHolder$1, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Carousel, {\n activeSlide: activeSlide,\n onChangeSlide: onChangeSlide,\n children: __spreadArray([], __read(reviewMatches), false).map(function (item, index) {\n var match = matches.get(item[0]);\n if (match && activeReviewId) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ClientMatchingSuggestionReview$2, {\n key: item[0],\n currentIndex: index + 1,\n totalItems: reviewMatches.size,\n data: match,\n activeReviewId: activeReviewId,\n reviewMatch: item[1],\n onChangeReview: onChangeReview\n }));\n }\n return /*#__PURE__*/React.createElement(\"div\", null);\n })\n }));\n } else {\n return __spreadArray([], __read(reviewMatches), false).map(function (item, index) {\n var match = matches.get(item[0]);\n if (match && activeReviewId) {\n return /*#__PURE__*/React.createElement(ClientMatchingSuggestionReview$2, {\n key: item[0],\n currentIndex: index + 1,\n totalItems: reviewMatches.size,\n data: match,\n activeReviewId: activeReviewId,\n reviewMatch: item[1],\n onChangeReview: onChangeReview\n });\n } else {\n return /*#__PURE__*/React.createElement(\"div\", null, \"Cant find match.. \");\n }\n });\n }\n };\n return /*#__PURE__*/React.createElement(Review$2, null, /*#__PURE__*/React.createElement(Left$1, null, renderSlide()), /*#__PURE__*/React.createElement(Right$1, null, /*#__PURE__*/React.createElement(AcinControlDescriptionReview$2, {\n data: control\n })));\n};\nvar ReviewNoMatch$1 = function (props) {\n var _a;\n var control = props.control,\n reviewNoMatch = props.reviewNoMatch,\n onChangeReview = props.onChangeReview,\n missingAcinControl = props.missingAcinControl,\n userType = props.userType;\n return /*#__PURE__*/React.createElement(Review$2, null, /*#__PURE__*/React.createElement(Left$1, null, /*#__PURE__*/React.createElement(ClientControlDescriptionReview$2, null)), /*#__PURE__*/React.createElement(Right$1, null, /*#__PURE__*/React.createElement(AcinMatchingSuggestionReview$2 // Make sure we re-draw this component if the control changes\n , {\n // Make sure we re-draw this component if the control changes\n key: control.id,\n renderStatus: !!(missingAcinControl === null || missingAcinControl === void 0 ? void 0 : missingAcinControl.missing) ? /*#__PURE__*/React.createElement(ReviewMatchRecordStatus$2, {\n data: missingAcinControl.missing\n }) : undefined,\n comments: ((_a = missingAcinControl === null || missingAcinControl === void 0 ? void 0 : missingAcinControl.missing) === null || _a === void 0 ? void 0 : _a.internalComment) || undefined,\n data: control,\n reviewMatch: reviewNoMatch,\n onChangeReview: onChangeReview,\n overrideReasonCodes: [],\n userType: userType\n })));\n};\nvar ApproverProgress$2 = function (props) {\n var theme = useTheme();\n var position = props.position,\n selected = props.selected,\n missingAcinControls = props.missingAcinControls;\n var calculatePercentage = function (total, value) {\n return value / total * 100;\n };\n var stepperHistory = __spreadArray([], __read(selected), false).splice(0, position - 1);\n var reviewed = stepperHistory.filter(function (item) {\n var _a;\n var status = (_a = missingAcinControls.get(item[1].id)) === null || _a === void 0 ? void 0 : _a.status;\n if (status) {\n return [IDataMatchingMatchStatus.Approved, IDataMatchingMatchStatus.Rejected].includes(status);\n }\n return false;\n });\n var stepperCount = {\n toDo: selected.size,\n reviewed: reviewed.length,\n skipped: stepperHistory.length - reviewed.length\n };\n stepperCount.toDo = selected.size - stepperCount.reviewed - stepperCount.skipped;\n var progress = [{\n type: 'reviewed',\n title: 'Reviewed',\n color: theme.colors.success.getValue().main,\n count: stepperCount.reviewed,\n value: calculatePercentage(selected.size, stepperCount.reviewed)\n }, {\n type: 'skipped',\n title: 'Skipped',\n color: theme.colors.info.getValue().main,\n count: stepperCount.skipped,\n value: calculatePercentage(selected.size, stepperCount.skipped + stepperCount.reviewed)\n }];\n var sortedProgress = [progress[1], progress[0]];\n if (sortedProgress) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: sortedProgress\n }), progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"toDo\",\n title: \"To Do\",\n color: \"#EEEEEE\",\n count: stepperCount.toDo\n }));\n }\n return null;\n};\nvar MatcherProgress$2 = function (props) {\n var theme = useTheme();\n var position = props.position,\n selected = props.selected;\n var calculatePercentage = function (total, value) {\n return value / total * 100;\n };\n var matched = position - 1;\n var stepperCount = {\n toDo: selected.size - matched,\n matched: matched\n };\n var progress = [{\n type: 'matched',\n title: 'Matched',\n color: theme.colors.success.getValue().main,\n count: stepperCount.matched,\n value: calculatePercentage(selected.size, stepperCount.matched)\n }];\n if (progress) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ProgressBar, {\n data: progress\n }), progress.map(function (item) {\n return /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: item.type,\n title: item.title,\n color: item.color,\n count: item.count\n });\n }), /*#__PURE__*/React.createElement(ProgressKey$2, {\n key: \"toDo\",\n title: \"To Do\",\n color: \"#EEEEEE\",\n count: stepperCount.toDo\n }));\n }\n return null;\n};\nvar MatchUnassignedClientControlToAcinControlDocument = gql(templateObject_1$22 || (templateObject_1$22 = __makeTemplateObject([\"\\n mutation matchUnassignedClientControlToAcinControl(\\n $input: MatchUnassignedClientControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n matchUnassignedClientControlToAcinControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation matchUnassignedClientControlToAcinControl(\\n $input: MatchUnassignedClientControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n matchUnassignedClientControlToAcinControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc);\n/**\r\n * __useMatchUnassignedClientControlToAcinControlMutation__\r\n *\r\n * To run a mutation, you first call `useMatchUnassignedClientControlToAcinControlMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useMatchUnassignedClientControlToAcinControlMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [matchUnassignedClientControlToAcinControlMutation, { data, loading, error }] = useMatchUnassignedClientControlToAcinControlMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * controlSortInput: // value for 'controlSortInput'\r\n * summarySortInput: // value for 'summarySortInput'\r\n * },\r\n * });\r\n */\n\nfunction useMatchUnassignedClientControlToAcinControlMutation(baseOptions) {\n return useMutation(MatchUnassignedClientControlToAcinControlDocument, baseOptions);\n}\nvar templateObject_1$22;\nvar ApproveRejectMissingAcinControlDocument = gql(templateObject_1$23 || (templateObject_1$23 = __makeTemplateObject([\"\\n mutation approveRejectMissingAcinControl(\\n $input: ApproveRejectMissingAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n approveRejectMissingAcinControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation approveRejectMissingAcinControl(\\n $input: ApproveRejectMissingAcinControlInput!\\n $controlSortInput: SortInput\\n $summarySortInput: SortInput\\n ) {\\n approveRejectMissingAcinControl(input: $input) {\\n ...PartialDataMatcher\\n }\\n }\\n \", \"\\n\"])), PartialDataMatcherFragmentDoc);\n/**\r\n * __useApproveRejectMissingAcinControlMutation__\r\n *\r\n * To run a mutation, you first call `useApproveRejectMissingAcinControlMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useApproveRejectMissingAcinControlMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [approveRejectMissingAcinControlMutation, { data, loading, error }] = useApproveRejectMissingAcinControlMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * controlSortInput: // value for 'controlSortInput'\r\n * summarySortInput: // value for 'summarySortInput'\r\n * },\r\n * });\r\n */\n\nfunction useApproveRejectMissingAcinControlMutation(baseOptions) {\n return useMutation(ApproveRejectMissingAcinControlDocument, baseOptions);\n}\nvar templateObject_1$23;\nvar transformNoMatchesData$1 = function (control) {\n var _a;\n if (control && control.missing) {\n return {\n reasonCode: control === null || control === void 0 ? void 0 : control.reasonCode,\n dataMatcherUploadedClientControlId: undefined,\n externalComment: (_a = control === null || control === void 0 ? void 0 : control.missing.externalComment) === null || _a === void 0 ? void 0 : _a.comment\n };\n }\n return undefined;\n};\nvar INITIAL_STATE$2 = {\n position: 1,\n current: undefined,\n matches: new Map(),\n noMatch: undefined,\n reviewMatches: new Map(),\n checkedSuggestions: new Map(),\n disabledQuickSave: true,\n activeReviewId: undefined,\n restrictCheckReasonCodes: undefined,\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: false\n};\nvar matchingReducer$1 = function (state, action) {\n var _a, _b, _c, _d, _e, _f;\n if (state === void 0) {\n state = INITIAL_STATE$2;\n }\n switch (action.type) {\n case 'ClearAction':\n return INITIAL_STATE$2;\n case 'ClearCheckedAction':\n {\n return __assign(__assign({}, state), {\n checkedSuggestions: new Map(),\n matches: new Map(),\n disabledQuickSave: true,\n restrictCheckReasonCodes: undefined\n });\n }\n // This also works as a reset\n\n case 'SetCurrent':\n {\n var newReviewNoMatch = undefined;\n var noMatch = transformNoMatchesData$1(action.missing);\n var newNoMatchReviewFlowOpen = false;\n if (noMatch) {\n var reason = allCodes.get(noMatch.reasonCode);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: __assign({}, noMatch),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n };\n newNoMatchReviewFlowOpen = true;\n }\n return __assign(__assign({}, state), {\n position: action.position,\n current: action.current,\n matches: new Map(),\n noMatch: transformNoMatchesData$1(action.missing),\n reviewMatches: new Map(),\n reviewNoMatch: newReviewNoMatch,\n activeReviewId: undefined,\n checkedSuggestions: new Map(),\n restrictCheckReasonCodes: undefined,\n noMatchReviewFlowOpen: newNoMatchReviewFlowOpen,\n reviewFlowOpen: false\n });\n }\n case 'SetActiveReview':\n {\n return __assign(__assign({}, state), {\n activeReviewId: action.activeReviewId\n });\n }\n case 'DeleteMatch':\n {\n // This may be overritten depending on what is being deleted\n var newActiveReviewId = state.activeReviewId;\n var newCheckedSuggestions = new Map(state.checkedSuggestions); // Remove it from the list of checked suggestions\n\n if (action.match.dataMatcherUploadedClientControlId && newCheckedSuggestions.has(action.match.dataMatcherUploadedClientControlId)) {\n newCheckedSuggestions.delete(action.match.dataMatcherUploadedClientControlId);\n } // Remove it from the list with the dataMatcherUploadedClientControlId\n\n if (action.match.dataMatcherUploadedClientControlId) {\n var newMatches = new Map(state.matches);\n newMatches.delete(action.match.dataMatcherUploadedClientControlId); // If the control id from the match being deleted is also the activeReviewId,\n // then remove the activeReviewId from the list.\n\n if (action.match.dataMatcherUploadedClientControlId === state.activeReviewId) {\n newActiveReviewId = undefined;\n } // Get the list of reason code types\n\n var restrictCheckReasonCodes = __spreadArray([], __read(newCheckedSuggestions), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n });\n return __assign(__assign({}, state), {\n matches: newMatches,\n activeReviewId: newActiveReviewId,\n checkedSuggestions: newCheckedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes.length > 0 ? restrictCheckReasonCodes[0] : undefined\n });\n }\n return state;\n }\n case 'ToggleMatchAcinControl':\n {\n var newCheckedSuggestions = new Map(state.checkedSuggestions);\n var newMatches = new Map(state.matches); // If we have the acin control id, add it to the match set\n\n if (action.match.dataMatcherUploadedClientControlId) {\n if (newCheckedSuggestions.has(action.match.dataMatcherUploadedClientControlId)) {\n newCheckedSuggestions.delete(action.match.dataMatcherUploadedClientControlId);\n } else {\n newCheckedSuggestions.set(action.match.dataMatcherUploadedClientControlId, action.raw);\n }\n if (newMatches.has(action.match.dataMatcherUploadedClientControlId)) {\n newMatches.delete(action.match.dataMatcherUploadedClientControlId);\n } else {\n newMatches.set(action.match.dataMatcherUploadedClientControlId, __assign({}, action.match));\n }\n }\n var containsRequired = checkIfSuggestionsHaveRequiredComments(newCheckedSuggestions); // Get the list of reason code types\n\n var restrictCheckReasonCodes = __spreadArray([], __read(newCheckedSuggestions), false).map(function (item) {\n return getReasonCodeType(item[1].reasonCode);\n });\n return __assign(__assign({}, state), {\n matches: newMatches,\n checkedSuggestions: newCheckedSuggestions,\n disabledQuickSave: newCheckedSuggestions.size === 0 || containsRequired,\n restrictCheckReasonCodes: restrictCheckReasonCodes.length > 0 ? restrictCheckReasonCodes[0] : undefined\n });\n }\n case 'ClearReviewMatches':\n {\n return __assign(__assign({}, state), {\n reviewMatches: new Map(),\n activeReviewId: undefined\n });\n }\n case 'SetReviewMatches':\n {\n var newReviewMatches = __spreadArray([], __read(state.checkedSuggestions), false).reduce(function (acc, item) {\n var find = state.matches.get(item[1].control.id);\n if (find) {\n var reason = allCodes.get(find.reasonCode);\n acc.set(item[1].control.id, {\n batchStatus: undefined,\n data: find,\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n });\n }\n return acc;\n }, new Map()); // Get the first items control id\n\n var firstActiveReviewId = (_b = (_a = newReviewMatches.get(__spreadArray([], __read(newReviewMatches.keys()), false)[0])) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.dataMatcherUploadedClientControlId;\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches,\n activeReviewId: firstActiveReviewId || undefined,\n reviewFlowOpen: true,\n noMatchReviewFlowOpen: false\n });\n }\n case 'SetReviewMatch':\n {\n var newReviewMatches = new Map(state.reviewMatches);\n var currentReviewMatch = newReviewMatches.get(action.activeReviewId);\n var reasonCode = action.data.reasonCode || ((_c = currentReviewMatch === null || currentReviewMatch === void 0 ? void 0 : currentReviewMatch.data) === null || _c === void 0 ? void 0 : _c.reasonCode);\n if (reasonCode) {\n var reason = allCodes.get(reasonCode);\n newReviewMatches.set(action.activeReviewId, __assign(__assign({}, currentReviewMatch), {\n data: __assign(__assign(__assign({}, currentReviewMatch === null || currentReviewMatch === void 0 ? void 0 : currentReviewMatch.data), action.data), {\n reasonCode: reasonCode\n }),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n }));\n }\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches\n });\n }\n case 'SetReviewNoMatchData':\n {\n var reasonCode = action.data.reasonCode || ((_e = (_d = state.reviewNoMatch) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.reasonCode) || DEFAULT_MISSING_REASON_CODE;\n var newReviewNoMatch = __assign(__assign({}, state.reviewNoMatch), {\n data: __assign(__assign(__assign({}, (_f = state.reviewNoMatch) === null || _f === void 0 ? void 0 : _f.data), action.data), {\n reasonCode: reasonCode\n })\n });\n var reason = allCodes.get(reasonCode);\n newReviewNoMatch = __assign(__assign({}, newReviewNoMatch), {\n batchStatus: undefined,\n requiredInternalComment: reason.internalCommentRequired,\n requiredExternalComment: reason.externalCommentRequired\n });\n return __assign(__assign({}, state), {\n reviewNoMatch: newReviewNoMatch\n });\n }\n case 'SetReviewNoMatch':\n {\n var newReviewNoMatch = void 0; // If there is a previous match, move it\n\n if (state.noMatch) {\n var reason = allCodes.get(state.noMatch.reasonCode);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: __assign({}, state.noMatch),\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n }; // If there is nothing, then create a initial no match\n } else {\n var reason = allCodes.get(DEFAULT_MISSING_REASON_CODE);\n newReviewNoMatch = {\n batchStatus: undefined,\n data: {\n reasonCode: DEFAULT_MISSING_REASON_CODE\n },\n requiredInternalComment: reason === null || reason === void 0 ? void 0 : reason.internalCommentRequired,\n requiredExternalComment: reason === null || reason === void 0 ? void 0 : reason.externalCommentRequired\n };\n }\n return __assign(__assign({}, state), {\n reviewNoMatch: newReviewNoMatch,\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: true\n });\n }\n case 'SetReviewMatchStatus':\n {\n var newReviewMatches = new Map(state.reviewMatches);\n var currentReviewMatch = newReviewMatches.get(action.activeReviewId); // Work out the next item in the sequence that is not matched.\n\n var ids = __spreadArray([], __read(newReviewMatches.keys()), false);\n var currentIndex = ids.indexOf(action.activeReviewId);\n var nextActiveReviewId = ids[currentIndex + 1];\n if (currentReviewMatch) {\n newReviewMatches.set(action.activeReviewId, __assign(__assign({}, currentReviewMatch), {\n batchStatus: action.batchStatus\n }));\n } else {\n newReviewMatches.set(action.activeReviewId, {\n batchStatus: action.batchStatus\n });\n } // If we dont have a next item, then we should set it to the first unassigned item\n\n if (!nextActiveReviewId) {\n var unassignedMatches = __spreadArray([], __read(newReviewMatches), false).filter(function (item) {\n return !item[1].batchStatus;\n });\n var unassignedMatchIds = unassignedMatches.map(function (item) {\n return item[0];\n });\n if (unassignedMatchIds.length > 0) {\n nextActiveReviewId = unassignedMatchIds[0];\n }\n }\n return __assign(__assign({}, state), {\n reviewMatches: newReviewMatches,\n activeReviewId: nextActiveReviewId,\n reviewFlowOpen: !!nextActiveReviewId\n });\n }\n case 'CloseReviewFlow':\n {\n return __assign(__assign({}, state), {\n reviewFlowOpen: false,\n noMatchReviewFlowOpen: false\n });\n }\n default:\n return state;\n }\n};\nvar setCurrent$1 = function (position, current, missing, userType) {\n return {\n type: 'SetCurrent',\n position: position,\n current: current,\n missing: missing || undefined,\n userType: userType || IDataMatcherAssignedTo.Matcher\n };\n};\nvar setActiveReview$1 = function (id) {\n return {\n type: 'SetActiveReview',\n activeReviewId: id\n };\n};\nvar setReviewMatches$1 = function () {\n return {\n type: 'SetReviewMatches'\n };\n};\nvar setReviewMatch$1 = function (id, data) {\n return {\n type: 'SetReviewMatch',\n activeReviewId: id,\n data: data\n };\n};\nvar setReviewNoMatch$1 = function () {\n return {\n type: 'SetReviewNoMatch'\n };\n};\nvar setReviewMatchStatus$1 = function (id, batchStatus) {\n return {\n type: 'SetReviewMatchStatus',\n activeReviewId: id,\n batchStatus: batchStatus\n };\n};\nvar clear$1 = function () {\n return {\n type: 'ClearAction'\n };\n};\nvar closeReviewFlow$1 = function () {\n return {\n type: 'CloseReviewFlow'\n };\n};\nvar setReviewNoMatchData$1 = function (data) {\n return {\n type: 'SetReviewNoMatchData',\n data: data\n };\n};\n/**\r\n * Match a new acin Control\r\n */\n\nvar toggleMatchAcinControl$1 = function (newMatch) {\n return {\n type: 'ToggleMatchAcinControl',\n match: {\n reasonCode: newMatch.reasonCode,\n dataMatcherUploadedClientControlId: newMatch.control.id\n },\n raw: newMatch\n };\n};\nvar UnassignedMatchingModal = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId,\n selected = props.selected,\n showMatchingModal = props.showMatchingModal,\n onCloseMatchingModal = props.onCloseMatchingModal,\n missingAcinControls = props.missingAcinControls,\n userType = props.userType,\n updateSelectedById = props.updateSelectedById,\n activeSorts = props.activeSorts;\n var modalOpenRef = React.useRef(); // To stop the unwanted reloading of this useCallback,\n // we open the modal, we need to create a ref object for the current, dataMatcherId, and matches\n\n var reviewRef = React.useRef();\n var _a = __read(useMatchUnassignedClientControlToAcinControlMutation(), 2),\n matchAcinControls = _a[0],\n matchMutationLoading = _a[1].loading;\n var _b = __read(useApproveRejectMissingAcinControlMutation(), 2),\n approveReject = _b[0],\n approveRejectMutationLoading = _b[1].loading;\n var mutationloading = matchMutationLoading || approveRejectMutationLoading;\n var _c = __read(React.useState(false), 2),\n hideActions = _c[0],\n setHideActions = _c[1];\n var onSetHideActions = React.useCallback(function (value) {\n setHideActions(value);\n }, [setHideActions]);\n var _d = __read(React.useReducer(matchingReducer$1, INITIAL_STATE$2), 2),\n _e = _d[0],\n position = _e.position,\n current = _e.current,\n matches = _e.matches,\n reviewNoMatch = _e.reviewNoMatch,\n checkedSuggestions = _e.checkedSuggestions,\n disabledQuickSave = _e.disabledQuickSave,\n activeReviewId = _e.activeReviewId,\n restrictCheckReasonCodes = _e.restrictCheckReasonCodes,\n reviewMatches = _e.reviewMatches,\n reviewFlowOpen = _e.reviewFlowOpen,\n noMatchReviewFlowOpen = _e.noMatchReviewFlowOpen,\n dispatch = _d[1];\n var prevReviewFlowOpen = usePrevious(reviewFlowOpen);\n var getSelectedFromPosition = React.useCallback(function (pos) {\n var item = selected.get(__spreadArray([], __read(selected.keys()), false)[pos - 1]);\n return {\n item: item,\n missing: item ? missingAcinControls.get(item.id) : undefined\n };\n }, [selected, missingAcinControls]);\n /**\r\n * When the matching modal mounts, clear the set of matches\r\n */\n\n React.useEffect(function () {\n // When the modal is visible, and we are at position 1, set the first item\n if (showMatchingModal && position === 1 && !modalOpenRef.current) {\n modalOpenRef.current = true; // Get the first item, (remember index is -1)\n\n var _a = getSelectedFromPosition(position),\n item = _a.item,\n missing = _a.missing;\n if (item) {\n dispatch(setCurrent$1(position, item, missing || null, userType));\n }\n }\n }, [showMatchingModal, getSelectedFromPosition, position, userType]);\n /**\r\n * When the review flow is activated (opened)\r\n * we need to store a ref for the data at this point in time,\r\n * so when it is closed, we can save the matches at the point\r\n * in time that it was opened\r\n */\n\n React.useEffect(function () {\n if (reviewFlowOpen && current) {\n reviewRef.current = {\n dataMatcherId: dataMatcherId,\n current: current,\n matches: matches,\n position: position,\n userType: userType,\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n };\n }\n }, [reviewFlowOpen, position, matches, current, dataMatcherId, userType, activeSorts]);\n var isLast = position === selected.size;\n var onClose = React.useCallback(function () {\n dispatch(clear$1());\n onCloseMatchingModal();\n dispatch(closeReviewFlow$1());\n modalOpenRef.current = false;\n }, [dispatch, onCloseMatchingModal]);\n /**\r\n * Move to the next item\r\n * Either increase the current position, or if its the last one, close the modal and clear the selected items\r\n */\n\n var onNext = React.useCallback(function () {\n var newPosition = position + 1;\n if (newPosition <= selected.size) {\n var _a = getSelectedFromPosition(newPosition),\n item = _a.item,\n missing = _a.missing;\n if (item) {\n dispatch(setCurrent$1(newPosition, item, missing || null, userType));\n }\n } else {\n onClose();\n }\n }, [dispatch, position, getSelectedFromPosition, onClose, selected, userType]);\n /**\r\n * Toggle the selected match\r\n */\n\n var onToggleMatch = function (item) {\n dispatch(toggleMatchAcinControl$1(item));\n };\n /**\r\n * Quick save the matches for the current item\r\n */\n\n var quickSave = function () {\n if (current && matches) {\n matchAcinControls({\n awaitRefetchQueries: true,\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n acinControlId: current.id,\n matches: __spreadArray([], __read(matches), false).map(function (item) {\n return item[1];\n })\n },\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function () {\n onNext();\n });\n }\n };\n /**\r\n * Clear the seleted matches\r\n */\n\n var onClearSelected = function () {\n var _a = getSelectedFromPosition(position),\n item = _a.item,\n missing = _a.missing;\n if (item) {\n dispatch(setCurrent$1(position, item, missing || null, userType));\n }\n };\n /**\r\n * Start the review flow\r\n */\n\n var onReview = function () {\n dispatch(setReviewMatches$1());\n };\n /**\r\n * Complete the review items\r\n * This will be triggered when the review journey flow is closed\r\n */\n\n var completeReview = React.useCallback(function () {\n var _a; // If the review flow hasnt changed, then dont continue as we only care once the modal is closed.\n\n if (reviewFlowOpen === prevReviewFlowOpen || reviewFlowOpen !== false) return;\n var completedReviews = __spreadArray([], __read(reviewMatches), false).filter(function (item) {\n return !!item[1].batchStatus;\n });\n if (!reviewFlowOpen && completedReviews.length > 0) {\n if (((_a = reviewRef.current) === null || _a === void 0 ? void 0 : _a.current.id) && reviewRef.current.matches) {\n var newCurrentMatches_1 = new Map(reviewRef.current.matches); // Loop over the completed reviews, and update / add the current matches to the list\n\n completedReviews.forEach(function (item) {\n if (item[1].batchStatus === 'DELETE') {\n newCurrentMatches_1.delete(item[0]);\n } else if (item[1].batchStatus === 'SAVE') {\n if (item[1].data) {\n // Overwrite the data in the current match\n newCurrentMatches_1.set(item[0], item[1].data);\n }\n }\n });\n if (newCurrentMatches_1.size > 0) {\n matchAcinControls({\n awaitRefetchQueries: true,\n variables: {\n input: {\n dataMatcherId: reviewRef.current.dataMatcherId,\n acinControlId: reviewRef.current.current.id,\n matches: __spreadArray([], __read(newCurrentMatches_1), false).map(function (item) {\n return item[1];\n })\n },\n controlSortInput: reviewRef.current.controlSortInput,\n summarySortInput: reviewRef.current.summarySortInput\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: reviewRef.current.dataMatcherId\n }\n }]\n }).then(function (res) {\n onNext();\n });\n } else {\n // Clear / reset the selected items\n dispatch(setCurrent$1(reviewRef.current.position, reviewRef.current.current, null, reviewRef.current.userType));\n }\n }\n }\n }, [prevReviewFlowOpen, reviewMatches, reviewFlowOpen, matchAcinControls, onNext, reviewRef]);\n React.useEffect(function () {\n completeReview();\n }, [completeReview]);\n var backToStepOne = function () {\n dispatch(closeReviewFlow$1());\n };\n var onDeleteMatch = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus$1(activeReviewId, 'DELETE'));\n }\n };\n var onSaveMatch = function () {\n if (activeReviewId) {\n dispatch(setReviewMatchStatus$1(activeReviewId, 'SAVE'));\n }\n };\n var onSaveNoMatch = function () {\n if (current && reviewNoMatch && reviewNoMatch.data) {\n matchAcinControls({\n awaitRefetchQueries: true,\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n acinControlId: current.id,\n matches: [reviewNoMatch.data]\n },\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function () {\n onNext();\n });\n }\n };\n var onQuickSaveNoMatch = function () {\n if (current) {\n matchAcinControls({\n awaitRefetchQueries: true,\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n acinControlId: current.id,\n matches: [{\n reasonCode: DEFAULT_MISSING_REASON_CODE\n }]\n },\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n },\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }]\n }).then(function () {\n onNext();\n });\n }\n };\n var onChangeActiveReviewId = function (id) {\n dispatch(setActiveReview$1(id));\n };\n var onChangeReview = React.useCallback(function (acinControlId, data) {\n dispatch(setReviewMatch$1(acinControlId, data));\n }, []);\n var onChangeNoMatchReview = React.useCallback(function (id, data) {\n dispatch(setReviewNoMatchData$1(data));\n }, []);\n var noMatchFound = function () {\n dispatch(setReviewNoMatch$1());\n };\n var onSaveApproveRejectNoMatch = function (status) {\n if (current && reviewNoMatch && reviewNoMatch.data) {\n approveReject({\n variables: {\n input: {\n dataMatcherId: dataMatcherId,\n acinControlId: current.id,\n internalComment: reviewNoMatch.data.internalComment,\n externalComment: reviewNoMatch.data.externalComment,\n status: status\n },\n controlSortInput: activeSorts.get('overview'),\n summarySortInput: activeSorts.get('summary')\n }\n }).then(function (res) {\n var _a, _b;\n var find = (_b = (_a = res.data) === null || _a === void 0 ? void 0 : _a.approveRejectMissingAcinControl.nextWorkflow) === null || _b === void 0 ? void 0 : _b.summaryView.rows.reduce(function (acc, item) {\n if (item.__typename === 'DataMatchingControlsWorkflowSummaryViewRowOneToOne') {\n if (item.item.__typename === 'DataMatcherAcinControl' && item.item.id === current.id) {\n return item.item;\n }\n }\n return acc;\n }, null);\n if (find) {\n updateSelectedById(current.id, find);\n }\n onNext();\n });\n }\n };\n var leftCustomButtons = function () {\n var disableButtons = hideActions || mutationloading;\n if (current && (reviewFlowOpen || noMatchReviewFlowOpen) && userType === IDataMatcherAssignedTo.Matcher) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"secondary\",\n onClick: onClose,\n disabled: disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Return to Step One\",\n variant: \"secondary\",\n onClick: backToStepOne,\n disabled: disableButtons\n }));\n }\n if (current && noMatchReviewFlowOpen && userType === IDataMatcherAssignedTo.Approver) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Skip This control\",\n variant: \"secondary\",\n onClick: onNext,\n disabled: disableButtons || isLast\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"secondary\",\n onClick: onClose,\n disabled: disableButtons\n }));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"secondary\",\n onClick: onClose,\n disabled: disableButtons\n }));\n };\n var rightCustomButtons = function () {\n var _a, _b, _c, _d, _e;\n var disableButtons = hideActions || mutationloading; // Review no match buttons\n\n if (current && noMatchReviewFlowOpen && userType === IDataMatcherAssignedTo.Matcher) {\n var saveDisabled = (reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.requiredInternalComment) && !((_a = reviewNoMatch.data) === null || _a === void 0 ? void 0 : _a.internalComment) || (reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.requiredExternalComment) && !((_b = reviewNoMatch.data) === null || _b === void 0 ? void 0 : _b.externalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Save This Match\",\n variant: \"primary\",\n onClick: onSaveNoMatch,\n disabled: saveDisabled || disableButtons\n }));\n } // Review matches\n\n if (current && reviewFlowOpen && reviewMatches.size && activeReviewId) {\n var currentReview = reviewMatches.get(activeReviewId);\n var saveDisabled = (currentReview === null || currentReview === void 0 ? void 0 : currentReview.requiredInternalComment) && !((_c = currentReview.data) === null || _c === void 0 ? void 0 : _c.internalComment) || (currentReview === null || currentReview === void 0 ? void 0 : currentReview.requiredExternalComment) && !((_d = currentReview.data) === null || _d === void 0 ? void 0 : _d.externalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Delete This Match\",\n variant: \"secondary\",\n onClick: onDeleteMatch,\n disabled: disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Save This Match\",\n variant: \"primary\",\n onClick: onSaveMatch,\n disabled: saveDisabled || disableButtons\n }));\n } // Approver flow no match\n\n if (current && noMatchReviewFlowOpen && userType === IDataMatcherAssignedTo.Approver) {\n var rejectDisabled = !((_e = reviewNoMatch === null || reviewNoMatch === void 0 ? void 0 : reviewNoMatch.data) === null || _e === void 0 ? void 0 : _e.internalComment);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Reject This Match\",\n variant: \"secondary\",\n onClick: function () {\n return onSaveApproveRejectNoMatch(IDataMatchingMatchStatus.Rejected);\n },\n disabled: rejectDisabled || disableButtons\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Approve This Match\",\n variant: \"primary\",\n disabled: disableButtons,\n onClick: function () {\n return onSaveApproveRejectNoMatch(IDataMatchingMatchStatus.Approved);\n }\n }));\n } // Default non review screen\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Confirm Preliminary Missing\",\n variant: \"secondary\",\n onClick: current && missingAcinControls.get(current.id) ? noMatchFound : onQuickSaveNoMatch,\n disabled: disableButtons || matches.size > 0 || checkedSuggestions.size > 0\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Quick Save Selected\",\n variant: \"secondary\",\n disabled: disabledQuickSave || disableButtons || checkedSuggestions.size === 0,\n onClick: function () {\n return quickSave();\n }\n }), /*#__PURE__*/React.createElement(Button, {\n disabled: checkedSuggestions.size === 0 || disableButtons,\n label: \"Review Matches\",\n variant: \"primary\",\n onClick: onReview\n }));\n };\n return /*#__PURE__*/React.createElement(UnassignedNetworkControls, null, /*#__PURE__*/React.createElement(Modal, {\n title: \"Match Unassigned Network Control (Step \".concat(reviewFlowOpen ? '2' : '1', \" of 2)\"),\n show: showMatchingModal,\n \"data-testid\": generate(['controls-workflow--unassigned-network-matching-modal'], props),\n className: className,\n onClose: onClose,\n size: \"fullscreen\",\n useScrollContent: false,\n leftCustomButtons: leftCustomButtons,\n rightCustomButtons: rightCustomButtons\n }, /*#__PURE__*/React.createElement(MatchingModal$1, null, current && /*#__PURE__*/React.createElement(MatchingModalTitle$1, null, /*#__PURE__*/React.createElement(TitleWrap$1, null, /*#__PURE__*/React.createElement(Text$1, null, \"You are reviewing matches for the following customer control:\"), /*#__PURE__*/React.createElement(Header$2, null, /*#__PURE__*/React.createElement(AcinLogo$3, {\n size: \"small\"\n }), /*#__PURE__*/React.createElement(Text$1, {\n size: 1,\n weight: 500\n }, current.title, \" \", /*#__PURE__*/React.createElement(Text$1, {\n inline: true\n }, current.controlCode)))), selected.size > 1 && /*#__PURE__*/React.createElement(ProgressWrap$1, null, ' ', userType === IDataMatcherAssignedTo.Matcher ? /*#__PURE__*/\n // Selected would be the todos\n // Position is valid\n // size of selected (2) - position (1)\n React.createElement(MatcherProgress$2, {\n selected: selected,\n position: position\n }) : /*#__PURE__*/React.createElement(ApproverProgress$2, {\n missingAcinControls: missingAcinControls,\n selected: selected,\n position: position\n }))), current && !reviewFlowOpen && !noMatchReviewFlowOpen ? /*#__PURE__*/React.createElement(MatchingModalContent$1, null, /*#__PURE__*/React.createElement(Overview$3, {\n data: current,\n dataMatcherId: dataMatcherId,\n matches: matches,\n onToggleMatch: onToggleMatch,\n onClearSelected: onClearSelected,\n checkedControls: checkedSuggestions,\n restrictCheckReasonCodes: restrictCheckReasonCodes,\n onSetHideActions: onSetHideActions\n })) : null, current && reviewFlowOpen && !noMatchReviewFlowOpen && checkedSuggestions.size > 0 ? /*#__PURE__*/React.createElement(MatchingModalContent$1, null, /*#__PURE__*/React.createElement(Review$3, {\n control: current,\n onChangeActiveReviewId: onChangeActiveReviewId,\n activeReviewId: activeReviewId,\n reviewMatches: reviewMatches,\n matches: checkedSuggestions,\n onChangeReview: onChangeReview\n })) : null, current && noMatchReviewFlowOpen && reviewNoMatch && !reviewFlowOpen ? /*#__PURE__*/React.createElement(MatchingModalContent$1, null, /*#__PURE__*/React.createElement(ReviewNoMatch$1, {\n control: current,\n reviewNoMatch: reviewNoMatch,\n onChangeReview: onChangeNoMatchReview,\n missingAcinControl: missingAcinControls.get(current.id),\n userType: userType\n })) : null)));\n};\nvar UnassignedNetworkControls$1 = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId;\n var _a = useMatching(),\n selectedAcinControls = _a.selectedAcinControls,\n showUnassignedNetworkModal = _a.showUnassignedNetworkModal,\n onChangeView = _a.onChangeView,\n onCloseUnassignedNetworkContolModal = _a.onCloseUnassignedNetworkContolModal,\n clearSelected = _a.clearSelected,\n userType = _a.userType,\n updateSelectedById = _a.updateSelectedById,\n activeSorts = _a.activeSorts; // we only want to match the things that are straight from the server.\n // if we use any form of cache here, the index / position inside the modal will change\n // on each mutation / match.\n // We could work around this with setState, when the modal is opened or something\n // but this seems reasonable.\n\n var _b = __read(useGetUnassignedAcinControlsLazyQuery({\n fetchPolicy: 'no-cache',\n onCompleted: function (data) {\n return onInheritModalNext(data);\n }\n }), 2),\n getUnassignedAcinControls = _b[0],\n data = _b[1].data;\n var noSelectedAcinControls = selectedAcinControls.size === 0;\n var onInheritModalNext = function (data) {\n if (!data.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls.length) {\n onCloseUnassignedNetworkContolModal();\n onChangeView('summary');\n }\n };\n React.useEffect(function () {\n if (noSelectedAcinControls && showUnassignedNetworkModal) {\n getUnassignedAcinControls({\n variables: {\n dataMatcherId: dataMatcherId\n }\n });\n }\n }, [noSelectedAcinControls, dataMatcherId, getUnassignedAcinControls, showUnassignedNetworkModal]);\n var getAcinControls = function () {\n if (selectedAcinControls.size >= 1) {\n return new Map(__spreadArray([], __read(selectedAcinControls), false).map(function (item) {\n return [item[1].control.id, item[1].control];\n }));\n }\n if (data === null || data === void 0 ? void 0 : data.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls) {\n return new Map(data.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls.map(function (item) {\n return [item.id, item];\n }));\n }\n return new Map();\n };\n var getMissing = function () {\n if (selectedAcinControls) {\n return new Map(__spreadArray([], __read(selectedAcinControls), false).map(function (item) {\n return [item[1].control.id, item[1]];\n }));\n }\n return new Map();\n };\n var onClose = function () {\n if (selectedAcinControls) {\n clearSelected();\n }\n onCloseUnassignedNetworkContolModal();\n };\n var selected = getAcinControls();\n if (selected.size === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(UnassignedNetworkControls, {\n \"data-testid\": generate(['unassigned-network-controls'], props),\n className: className\n }, /*#__PURE__*/React.createElement(UnassignedMatchingModal, {\n dataMatcherId: dataMatcherId,\n selected: selected,\n missingAcinControls: getMissing(),\n showMatchingModal: showUnassignedNetworkModal,\n onCloseMatchingModal: onClose,\n userType: userType,\n updateSelectedById: updateSelectedById,\n activeSorts: activeSorts\n }));\n};\nvar UnassignedAcinControlRow = function (props) {\n var className = props.className,\n data = props.data;\n return /*#__PURE__*/React.createElement(ReadOnlyUnassignedAcinControlRow, {\n \"data-testid\": generate(['acin-control-unassigned'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingRow$2, {\n variant: \"nested\",\n title: data.title,\n id: data.controlCode\n }, /*#__PURE__*/React.createElement(RIADescription$2, {\n control: data,\n showMore: false\n })));\n};\nvar ReadOnlyModal = function (props) {\n var className = props.className,\n showModal = props.showModal,\n onClose = props.onClose,\n data = props.data;\n if (!data) return null;\n return /*#__PURE__*/React.createElement(Modal, {\n title: \"\".concat(data.length, \" Unassigned Network Controls\"),\n show: showModal,\n \"data-testid\": generate(['controls-workflow--unassigned-network-modal'], props),\n className: className,\n onClose: onClose,\n size: \"large\",\n closeButtonLabel: \"Close\"\n }, /*#__PURE__*/React.createElement(Text$1, {\n weight: 500,\n size: 1\n }, \"You currently have 18 Network controls which have not been matched.\"), /*#__PURE__*/React.createElement(Text$1, {\n size: 1\n }, \"Please ensure these are matched to client controls where applicable.\"), /*#__PURE__*/React.createElement(ReadOnlyUnassignedAcinControlList, null, data.map(function (item) {\n return /*#__PURE__*/React.createElement(UnassignedAcinControlRow, {\n key: item.id,\n data: item\n });\n })));\n};\nvar UnassignedNetworkControlsHeader$1 = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId;\n var _a = __read(React.useState(false), 2),\n showModal = _a[0],\n setShowModal = _a[1];\n var data = useGetUnassignedAcinControlsQuery({\n variables: {\n dataMatcherId: dataMatcherId\n }\n }).data;\n var onShowModal = function () {\n setShowModal(true);\n };\n var onClose = function () {\n setShowModal(false);\n };\n var totalUnassigned = (data === null || data === void 0 ? void 0 : data.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls.length) || 0;\n return /*#__PURE__*/React.createElement(UnassignedNetworkControlsHeader, {\n \"data-testid\": generate(['unassigned-network-controls-header'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Button, {\n variant: \"link\",\n label: \"\".concat(totalUnassigned, \" Unassigned Network Controls\"),\n disabled: totalUnassigned === 0,\n onClick: onShowModal\n }), /*#__PURE__*/React.createElement(ReadOnlyModal, {\n showModal: showModal,\n onClose: onClose,\n data: data === null || data === void 0 ? void 0 : data.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls\n }));\n};\nvar ReasonCodeModal = styled(Modal)(templateObject_1$24 || (templateObject_1$24 = __makeTemplateObject([\"\\n grid-template-rows: \", \" calc(100% - \", \") \", \";\\n width: \", \";\\n padding: \", \" 0;\\n\"], [\"\\n grid-template-rows: \", \" calc(100% - \", \") \", \";\\n width: \", \";\\n padding: \", \" 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(17);\n}, function (p) {\n return p.theme.spacing.getSize(27);\n}, function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return p.theme.spacing.getSize(125);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$24;\nvar InheritUnmatchedAcinControlReasonCodesDocument = gql(templateObject_1$25 || (templateObject_1$25 = __makeTemplateObject([\"\\n mutation inheritUnmatchedAcinControlReasonCodes($dataMatcherId: ID!, $unassignedAcinControlIds: [ID]!) {\\n inheritUnmatchedAcinControlReasonCodes(\\n dataMatcherId: $dataMatcherId\\n unassignedAcinControlIds: $unassignedAcinControlIds\\n )\\n }\\n\"], [\"\\n mutation inheritUnmatchedAcinControlReasonCodes($dataMatcherId: ID!, $unassignedAcinControlIds: [ID]!) {\\n inheritUnmatchedAcinControlReasonCodes(\\n dataMatcherId: $dataMatcherId\\n unassignedAcinControlIds: $unassignedAcinControlIds\\n )\\n }\\n\"])));\n/**\r\n * __useInheritUnmatchedAcinControlReasonCodesMutation__\r\n *\r\n * To run a mutation, you first call `useInheritUnmatchedAcinControlReasonCodesMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useInheritUnmatchedAcinControlReasonCodesMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [inheritUnmatchedAcinControlReasonCodesMutation, { data, loading, error }] = useInheritUnmatchedAcinControlReasonCodesMutation({\r\n * variables: {\r\n * dataMatcherId: // value for 'dataMatcherId'\r\n * unassignedAcinControlIds: // value for 'unassignedAcinControlIds'\r\n * },\r\n * });\r\n */\n\nfunction useInheritUnmatchedAcinControlReasonCodesMutation(baseOptions) {\n return useMutation(InheritUnmatchedAcinControlReasonCodesDocument, baseOptions);\n}\nvar templateObject_1$25;\nvar InheritReasonCodesModal = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId,\n unassignedIds = props.unassignedIds,\n onReasonCodesInherited = props.onReasonCodesInherited;\n var _a = __read(useInheritUnmatchedAcinControlReasonCodesMutation({\n refetchQueries: [{\n query: GetUnassignedAcinControlsDocument,\n variables: {\n dataMatcherId: dataMatcherId\n }\n }],\n onCompleted: function () {\n onReasonCodesInherited === null || onReasonCodesInherited === void 0 ? void 0 : onReasonCodesInherited();\n onShowUnassignedNetworkContolModal();\n onCloseInheritReasonCodesModal();\n }\n }), 1),\n inheritUnassignedAcinControlReasonCodesMutation = _a[0];\n var _b = useMatching(),\n onShowUnassignedNetworkContolModal = _b.onShowUnassignedNetworkContolModal,\n onCloseInheritReasonCodesModal = _b.onCloseInheritReasonCodesModal,\n showInheritReasonCodesModal = _b.showInheritReasonCodesModal,\n onChangeView = _b.onChangeView;\n var onNext = React.useCallback(function () {\n // This needs to give me unassignedIds to procced.\n inheritUnassignedAcinControlReasonCodesMutation({\n variables: {\n dataMatcherId: dataMatcherId,\n unassignedAcinControlIds: unassignedIds\n }\n });\n }, [dataMatcherId, inheritUnassignedAcinControlReasonCodesMutation, unassignedIds]);\n var onSkip = React.useCallback(function () {\n if (unassignedIds.length) {\n onShowUnassignedNetworkContolModal();\n } else {\n onChangeView('summary');\n }\n onCloseInheritReasonCodesModal();\n }, [onChangeView, onCloseInheritReasonCodesModal, onShowUnassignedNetworkContolModal, unassignedIds.length]);\n var skipButton = {\n label: 'Skip',\n onClick: onSkip\n };\n var confirmButton = {\n label: 'Confirm',\n onClick: onNext\n };\n return /*#__PURE__*/React.createElement(ReasonCodeModal, {\n title: \"Would you like to inherit any previously assigned missing codes?\",\n show: showInheritReasonCodesModal,\n \"data-testid\": generate(['controls-workflow--unassigned-network-matching-modal'], props),\n className: className,\n onClose: onCloseInheritReasonCodesModal,\n useScrollContent: false,\n footerButtonPrimary: skipButton,\n footerButtonSecondary: confirmButton\n }, /*#__PURE__*/React.createElement(Alert, {\n status: \"warning\",\n title: \"Pressing skip will overwrite all previously assigned Missing codes as Preliminary Missing\"\n }));\n};\nvar InheritReasonCodesModal$1 = styled(InheritReasonCodesModal)(templateObject_1$26 || (templateObject_1$26 = __makeTemplateObject([\"\"], [\"\"])));\nvar UnassignedNetworkControls$2 = styled(UnassignedNetworkControls$1)(templateObject_2$v || (templateObject_2$v = __makeTemplateObject([\"\"], [\"\"])));\nvar UnassignedNetworkControlsHeader$2 = styled(UnassignedNetworkControlsHeader$1)(templateObject_3$o || (templateObject_3$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$26, templateObject_2$v, templateObject_3$o;\nvar ControlsWorkflow$1 = function (props) {\n var className = props.className,\n data = props.data,\n dataMatcherId = props.dataMatcherId,\n onReasonCodesInherited = props.onReasonCodesInherited,\n availableFilters = props.availableFilters,\n setClientFilters = props.setClientFilters,\n activeClientFilters = props.activeClientFilters;\n var history = useHistory();\n var _a = useRouteMatch(),\n url = _a.url,\n path = _a.path;\n var _b = useMatching(),\n view = _b.view,\n onSetIsAllAcinAssigned = _b.onSetIsAllAcinAssigned,\n onChangeView = _b.onChangeView,\n onSetCountInfo = _b.onSetCountInfo,\n userType = _b.userType,\n showUnassignedNetworkModal = _b.showUnassignedNetworkModal;\n var counts = React.useMemo(function () {\n var missing = __spreadArray([], __read(data.controlView.matchedMissingAcinControls || []), false).reduce(function (acc, item) {\n if (!item) {\n return acc;\n }\n return __spreadArray(__spreadArray([], __read(acc), false), [item], false);\n }, []); // Get count info for all the rows from list view\n\n return getCountInfo(__spreadArray(__spreadArray([], __read(data.controlView.controls.nodes), false), __read(missing), false));\n }, [data.controlView.controls.nodes, data.controlView.matchedMissingAcinControls]);\n var unassignedAcinControls = useGetUnassignedAcinControlsQuery({\n fetchPolicy: 'cache-only',\n variables: {\n dataMatcherId: dataMatcherId\n }\n }).data;\n var unassignedAcinControlIds = (unassignedAcinControls === null || unassignedAcinControls === void 0 ? void 0 : unassignedAcinControls.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls.map(function (_a) {\n var id = _a.id;\n return id;\n })) || [];\n var totalUnassignedAcinControls = unassignedAcinControlIds.length; // When the modal closes,\n // check that the latest counts are 0 unmatched,\n // check that the latest unassigned acin controls is also 0\n // ONLY if that is the case (on close), redirect to summary page..... somehow...\n\n var modalOpenDataRef = React.useRef();\n React.useEffect(function () {\n if (showUnassignedNetworkModal === true && !modalOpenDataRef.current) {\n modalOpenDataRef.current = {\n counts: counts,\n totalUnassignedAcinControls: totalUnassignedAcinControls\n };\n } else if (modalOpenDataRef.current) {\n if (modalOpenDataRef.current.counts !== counts || modalOpenDataRef.current.totalUnassignedAcinControls !== totalUnassignedAcinControls) {\n if (counts.unmatched === 0 && totalUnassignedAcinControls === 0 && !showUnassignedNetworkModal) {\n modalOpenDataRef.current = null;\n onChangeView('summary');\n }\n }\n }\n }, [showUnassignedNetworkModal, counts, totalUnassignedAcinControls, onChangeView]); // If you are the approver, you must only see the summary page\n\n React.useEffect(function () {\n if (userType === IDataMatcherAssignedTo.Approver) {\n onChangeView('summary');\n }\n }, [userType, onChangeView]); // const totalUnmatched = counts.unmatched + (totalUnassignedAcinControls || 0);\n // Commenting this out so i can run a build, but its not used so can probably be remmoved soon\n\n React.useEffect(function () {}, [counts.unmatched, onChangeView]);\n /**\r\n * Update the provider if there are any unmatched acin controls\r\n */\n\n React.useEffect(function () {\n if (totalUnassignedAcinControls === 0) {\n onSetIsAllAcinAssigned(true);\n } else {\n onSetIsAllAcinAssigned(false);\n }\n }, [totalUnassignedAcinControls, onSetIsAllAcinAssigned]);\n React.useEffect(function () {\n onSetCountInfo(counts);\n }, [onSetCountInfo, counts]);\n /**\r\n * When the view changes, then change to the specified URL\r\n */\n\n React.useEffect(function () {\n history.push(\"\".concat(url, \"/\").concat(view));\n }, [view, history, url]);\n return /*#__PURE__*/React.createElement(ControlsWorkflow, {\n \"data-testid\": generate(['controls-workflow'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {\n path: path,\n exact: true\n }, /*#__PURE__*/React.createElement(Redirect, {\n to: \"\".concat(path, \"/overview\")\n })), /*#__PURE__*/React.createElement(Route, {\n path: \"\".concat(path, \"/overview\"),\n exact: true\n }, /*#__PURE__*/React.createElement(ControlView$1, {\n data: data.controlView,\n setClientFilters: setClientFilters,\n activeClientFilters: activeClientFilters,\n availableFilters: availableFilters\n })), /*#__PURE__*/React.createElement(Route, {\n path: \"\".concat(path, \"/summary\"),\n exact: true\n }, /*#__PURE__*/React.createElement(SummaryView$1, {\n data: data.summaryView\n }))), /*#__PURE__*/React.createElement(ControlsWorkflowMatchingModal$2, {\n activeClientFilters: activeClientFilters,\n dataMatcherId: dataMatcherId\n }), /*#__PURE__*/React.createElement(InheritReasonCodesModal$1, {\n unassignedIds: unassignedAcinControlIds,\n dataMatcherId: dataMatcherId,\n onReasonCodesInherited: onReasonCodesInherited\n }), /*#__PURE__*/React.createElement(UnassignedNetworkControls$2, {\n dataMatcherId: dataMatcherId\n }));\n};\nvar ControlsWorkflow$2 = styled(ControlsWorkflow$1)(templateObject_1$27 || (templateObject_1$27 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$27;\nvar Header$4 = function (props) {\n var _a, _b;\n var className = props.className,\n onBackClick = props.onBackClick,\n title = props.title,\n dataMatcherId = props.dataMatcherId,\n availableSortInfo = props.availableSortInfo,\n activeFilters = props.activeFilters,\n onRemoveFilter = props.onRemoveFilter;\n var _c = useMatching(),\n displayCount = _c.displayCount,\n searchTerm = _c.searchTerm,\n onChangeSearchTerm = _c.onChangeSearchTerm,\n countInfo = _c.countInfo,\n toggleResults = _c.toggleResults,\n onSetToggleResults = _c.onSetToggleResults,\n userType = _c.userType,\n view = _c.view,\n onSetActiveSort = _c.onSetActiveSort,\n getActiveSort = _c.getActiveSort;\n var toggleDrawer = useDrawer().toggleDrawer;\n var displayTotal = countInfo.totalResults;\n var hasFeedbackFromApprover = countInfo.approved > 0 || countInfo.rejected > 0;\n if (view === 'overview' && userType === IDataMatcherAssignedTo.Matcher) {\n if (hasFeedbackFromApprover) {\n displayTotal = countInfo.rejected - countInfo.rejectedUnassigned + (countInfo.matched - countInfo.matchedUnassigned) + (countInfo.approved - countInfo.approvedUnassigned) + countInfo.unmatched;\n }\n }\n var renderToggle = function () {\n if (view === 'overview' && userType === IDataMatcherAssignedTo.Matcher) {\n var totalMatchesNotUnassigned = countInfo.matched - countInfo.matchedUnassigned;\n var totalMatchesAndApproved = countInfo.matched - countInfo.matchedUnassigned + (countInfo.approved - countInfo.approvedUnassigned);\n var label_1 = hasFeedbackFromApprover ? \"Show Resolved Matches (\".concat(totalMatchesAndApproved, \")\") : \"Show saved matches (\".concat(totalMatchesNotUnassigned, \")\");\n return function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ToggleSwitch, {\n label: function () {\n return /*#__PURE__*/React.createElement(\"span\", null, label_1);\n },\n isChecked: toggleResults,\n onChange: function (value) {\n return onSetToggleResults(value);\n }\n }));\n };\n }\n if (view === 'summary' && userType === IDataMatcherAssignedTo.Matcher) {\n var total_1 = countInfo.approved + countInfo.matched;\n return function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ToggleSwitch, {\n label: function () {\n return /*#__PURE__*/React.createElement(\"span\", null, \"Show Resolved Matches (\", total_1, \")\");\n },\n isChecked: toggleResults,\n onChange: function (value) {\n return onSetToggleResults(value);\n }\n }));\n };\n }\n if (view === 'summary' && userType === IDataMatcherAssignedTo.Approver) {\n var total_2 = countInfo.approved + countInfo.rejected;\n return function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ToggleSwitch, {\n label: function () {\n return /*#__PURE__*/React.createElement(\"span\", null, \"Show Resolved Matches (\", total_2, \")\");\n },\n isChecked: toggleResults,\n onChange: function (value) {\n return onSetToggleResults(value);\n }\n }));\n };\n }\n return undefined;\n };\n var getDisplayContext = function () {\n var isPlural = displayTotal > 1; // if (view === 'overview' && userType === IDataMatcherAssignedTo.Matcher && hasFeedbackFromApprover) {\n // return isPlural ? 'Rejected Matches' : 'Rejected Match';\n // }\n\n if (view === 'overview' && userType === IDataMatcherAssignedTo.Matcher) {\n return isPlural ? 'Controls' : 'Control';\n }\n if (view === 'summary' && userType === IDataMatcherAssignedTo.Approver) {\n return isPlural ? 'Amended Matches' : 'Amended Match';\n }\n return isPlural ? 'Matches' : 'Match';\n };\n var onChangeSort = function (value) {\n var _a;\n var foundSort = (_a = availableSortInfo.get(view)) === null || _a === void 0 ? void 0 : _a.available.find(function (item) {\n return \"\".concat(item.field, \"-\").concat(item.direction) === value;\n });\n if (foundSort) {\n onSetActiveSort({\n field: foundSort.field,\n direction: foundSort.direction\n });\n }\n };\n var sortOptions = (((_a = availableSortInfo.get(view)) === null || _a === void 0 ? void 0 : _a.available) || []).map(function (item) {\n return {\n label: item.label,\n value: \"\".concat(item.field, \"-\").concat(item.direction)\n };\n });\n var defaultSort = (_b = availableSortInfo.get(view)) === null || _b === void 0 ? void 0 : _b.sort;\n var selectedSort = getActiveSort();\n var sort = selectedSort || defaultSort;\n var activeSort = sort ? \"\".concat(sort.field, \"-\").concat(sort.direction) : null;\n var toggleFilterDrawer = function () {\n toggleDrawer('filters');\n };\n var filterConfig = {\n count: activeFilters.length,\n onClick: toggleFilterDrawer,\n items: activeFilters,\n onDelete: onRemoveFilter\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PageHeader, {\n className: className,\n variant: \"parent\",\n \"data-testid\": generate(['data-matching__header'], props),\n actionsBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderActionsBar, {\n backLabel: \"Back to Data Connections\",\n onBackClick: onBackClick,\n renderActions: function () {\n return /*#__PURE__*/React.createElement(UnassignedNetworkControlsHeader$2, {\n dataMatcherId: dataMatcherId\n });\n }\n });\n },\n titleBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderTitleBar, {\n variant: \"child\",\n mainTitleText: title,\n subtitleText: displayTotal ? \"Displaying \".concat(displayCount, \" of \").concat(displayTotal, \" \").concat(getDisplayContext()) : undefined\n });\n },\n toolBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderToolBar, {\n searchConfig: {\n placeholder: 'Search by Control Name, Control Code or Description',\n onChange: function (e) {\n return onChangeSearchTerm(e.target.value);\n },\n value: searchTerm\n },\n renderSort: sortOptions.length > 0 ? function () {\n return /*#__PURE__*/React.createElement(HeaderSort, {\n value: activeSort,\n options: sortOptions,\n onChange: onChangeSort\n });\n } : undefined,\n renderDataToggle: renderToggle(),\n filterConfig: view === 'overview' ? filterConfig : undefined\n });\n }\n }));\n};\nvar SubmitDataMatcherFragmentDoc = gql(templateObject_1$28 || (templateObject_1$28 = __makeTemplateObject([\"\\n fragment SubmitDataMatcher on DataMatcher {\\n id\\n assignedTo\\n matchingStatus\\n }\\n\"], [\"\\n fragment SubmitDataMatcher on DataMatcher {\\n id\\n assignedTo\\n matchingStatus\\n }\\n\"])));\nvar templateObject_1$28;\nvar SubmitDataMatcherDocument = gql(templateObject_1$29 || (templateObject_1$29 = __makeTemplateObject([\"\\n mutation submitDataMatcher($dataMatcherId: ID!) {\\n submitDataMatcher(dataMatcherId: $dataMatcherId) {\\n ...SubmitDataMatcher\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation submitDataMatcher($dataMatcherId: ID!) {\\n submitDataMatcher(dataMatcherId: $dataMatcherId) {\\n ...SubmitDataMatcher\\n }\\n }\\n \", \"\\n\"])), SubmitDataMatcherFragmentDoc);\n/**\r\n * __useSubmitDataMatcherMutation__\r\n *\r\n * To run a mutation, you first call `useSubmitDataMatcherMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useSubmitDataMatcherMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [submitDataMatcherMutation, { data, loading, error }] = useSubmitDataMatcherMutation({\r\n * variables: {\r\n * dataMatcherId: // value for 'dataMatcherId'\r\n * },\r\n * });\r\n */\n\nfunction useSubmitDataMatcherMutation(baseOptions) {\n return useMutation(SubmitDataMatcherDocument, baseOptions);\n}\nvar templateObject_1$29;\nvar GetUnresolvedMatchingInfoDocument = gql(templateObject_1$2a || (templateObject_1$2a = __makeTemplateObject([\"\\n query getUnresolvedMatchingInfo($id: String!) {\\n getUnresolvedMatchingInfo(id: $id) {\\n remainingApprovers {\\n name\\n }\\n nextWorkflow\\n }\\n }\\n\"], [\"\\n query getUnresolvedMatchingInfo($id: String!) {\\n getUnresolvedMatchingInfo(id: $id) {\\n remainingApprovers {\\n name\\n }\\n nextWorkflow\\n }\\n }\\n\"])));\nfunction useGetUnresolvedMatchingInfoLazyQuery(baseOptions) {\n return useLazyQuery(GetUnresolvedMatchingInfoDocument, baseOptions);\n}\nvar templateObject_1$2a;\nvar Footer$3 = function (props) {\n var className = props.className,\n dataMatcherId = props.dataMatcherId,\n onExit = props.onExit;\n var _a = useMatching(),\n totalSelected = _a.totalSelected,\n selected = _a.selected,\n onShowMatchingModal = _a.onShowMatchingModal,\n onShowUnassignedNetworkContolModal = _a.onShowUnassignedNetworkContolModal,\n onShowInheritReasonCodesModal = _a.onShowInheritReasonCodesModal,\n countInfo = _a.countInfo,\n view = _a.view,\n userType = _a.userType,\n isAllAcinAssigned = _a.isAllAcinAssigned;\n var activeTheme = useThemeProvider().activeTheme;\n var _b = __read(useSubmitDataMatcherMutation(), 1),\n submitDataMatcher = _b[0];\n var userIsMatcher = userType === IDataMatcherAssignedTo.Matcher;\n var userIsApprover = userType === IDataMatcherAssignedTo.Approver;\n var noMatchedControls = countInfo.matched === 0;\n var noUnmatchedControls = countInfo.unmatched === 0;\n var noUnapprovedMatches = countInfo.unapproved === 0;\n var noRejections = countInfo.rejected === 0;\n var onEditClick = function () {\n if (selected.size > 0) {\n var firstItem = selected.get(__spreadArray([], __read(selected.keys()), false)[0]);\n if ((firstItem === null || firstItem === void 0 ? void 0 : firstItem.__typename) === 'DataMatcherAcinControl') {\n onShowUnassignedNetworkContolModal();\n } else if ((firstItem === null || firstItem === void 0 ? void 0 : firstItem.__typename) === 'DataMatcherClientControl') {\n onShowMatchingModal();\n }\n }\n };\n var _c = __read(useGetUnresolvedMatchingInfoLazyQuery({\n fetchPolicy: 'no-cache',\n onCompleted: function () {\n return onUnresolvedMatchingCompletion();\n }\n }), 2),\n getUnresolvedMatchingInfo = _c[0],\n _d = _c[1],\n unresolvedLoading = _d.loading,\n unresolvedData = _d.data;\n var _e = __read(useGetUnassignedAcinControlsLazyQuery({\n fetchPolicy: 'no-cache',\n onCompleted: function () {\n return onUnassignedFlow();\n }\n }), 2),\n getUnassignedAcinControls = _e[0],\n unassignedAcinControlsData = _e[1].data;\n var nextWorkflow = unresolvedData === null || unresolvedData === void 0 ? void 0 : unresolvedData.getUnresolvedMatchingInfo.nextWorkflow;\n var nextWorkflowIsDashboard = nextWorkflow === IApprovalWorkflow.Dashboard;\n var nextWorkflowIsSubmitReview = nextWorkflow === IApprovalWorkflow.SubmitReview;\n var nextWorkflowIsUnassigned = nextWorkflow === IApprovalWorkflow.Unassigned;\n var onSubmit = function () {\n submitDataMatcher({\n variables: {\n dataMatcherId: dataMatcherId\n }\n }).then(function (res) {\n if (res.data) {\n props.onSubmit(res.data.submitDataMatcher);\n }\n });\n };\n React.useEffect(function () {}, [dataMatcherId]);\n var onCheckForThings = function () {\n getUnresolvedMatchingInfo({\n variables: {\n id: dataMatcherId\n }\n });\n };\n var onUnassignedFlow = function () {\n // If no Unassigned Controls, submit as is, otherwise, begin Unassigned flow\n if ((unassignedAcinControlsData === null || unassignedAcinControlsData === void 0 ? void 0 : unassignedAcinControlsData.getDataMatchingControlsWorkflowUnassignedAcinControls.acinControls.length) === 0) {\n onSubmit();\n } else {\n onShowInheritReasonCodesModal();\n }\n };\n var onUnresolvedMatchingCompletion = function () {\n if (nextWorkflowIsDashboard) {\n // Take them to the dashboard, tell them about the other users\n onExit({\n id: dataMatcherId,\n remainingApprovers: unresolvedData === null || unresolvedData === void 0 ? void 0 : unresolvedData.getUnresolvedMatchingInfo.remainingApprovers.map(function (user) {\n return user.name;\n })\n });\n }\n if (nextWorkflowIsSubmitReview) {\n // Take them to the dashboard, tell them there is unresolved feedback elsewhere\n onExit({\n id: dataMatcherId,\n remainingApprovers: undefined\n });\n onSubmit();\n }\n if (nextWorkflowIsUnassigned) {\n getUnassignedAcinControls({\n variables: {\n dataMatcherId: dataMatcherId\n }\n });\n }\n };\n return /*#__PURE__*/React.createElement(Footer$2, {\n \"data-testid\": generate(['data-matching__footer'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(View, null, totalSelected, \" Selected\"), /*#__PURE__*/React.createElement(\"div\", null, userIsMatcher ? /*#__PURE__*/React.createElement(Button, {\n variant: noUnmatchedControls ? 'secondary' : 'primary',\n disabled: totalSelected === 0,\n label: \"Edit Matches\",\n onClick: function () {\n return onEditClick();\n }\n }) : null, userIsApprover ? /*#__PURE__*/React.createElement(Button, {\n variant: noMatchedControls ? 'secondary' : 'primary',\n disabled: totalSelected === 0,\n label: \"Review Matches\",\n onClick: function () {\n return onEditClick();\n }\n }) : null, userIsMatcher && noUnmatchedControls && noRejections && view === 'overview' ? /*#__PURE__*/React.createElement(FooterNextButton, {\n variant: \"primary\",\n label: \"Send For Approval\",\n onClick: onSubmit,\n disabled: totalSelected > 0\n }) : null, userIsApprover && noMatchedControls && isAllAcinAssigned && view === 'summary' ? /*#__PURE__*/React.createElement(FooterNextButton, {\n variant: \"primary\",\n label: \"Submit Review\",\n onClick: onCheckForThings\n }) : null, userIsApprover && !noRejections && view === 'summary' || userIsApprover && noUnapprovedMatches && !isAllAcinAssigned && view === 'summary' ? /*#__PURE__*/React.createElement(FooterNextButton, {\n variant: \"primary\",\n label: \"Submit Feedback\",\n onClick: onCheckForThings,\n disabled: unresolvedLoading\n }) : null));\n};\nvar DataMatching$2 = function (props) {\n var _a, _b, _c, _d, _e, _f, _g;\n var className = props.className,\n onBackClick = props.onBackClick,\n dataMatcherId = props.dataMatcherId,\n onSubmit = props.onSubmit,\n onExit = props.onExit;\n var contentRef = React.useRef(null);\n var _h = __read(React.useState(0), 2),\n topOffset = _h[0],\n setTopOffset = _h[1];\n var _j = __read(React.useState({}), 2),\n sortInput = _j[0],\n setSortInput = _j[1];\n var _k = __read(React.useState(false), 2),\n reasonCodesInherited = _k[0],\n setReasonCodesInherited = _k[1];\n var footerOffset = 88;\n var _l = useSetFilters(),\n clientControlFilters = _l.filters,\n setClientFilters = _l.setFilters,\n onRemove = _l.onRemove,\n list = _l.list;\n var _m = useGetDataMatcherByIdQuery({\n fetchPolicy: 'network-only',\n variables: {\n id: dataMatcherId,\n controlSortInput: sortInput.overview,\n summarySortInput: sortInput.summary,\n filterInput: clientControlFilters\n }\n }),\n currentData = _m.data,\n previousData = _m.previousData,\n loading = _m.loading,\n refetch = _m.refetch;\n var onRemoveClientFilter = React.useCallback(function (item) {\n onRemove(item);\n }, [onRemove]);\n var onReasonCodesInherited = function () {\n return setReasonCodesInherited(true);\n };\n React.useEffect(function () {\n refetch();\n }, [reasonCodesInherited, refetch, onExit]);\n var data = loading ? previousData : currentData;\n var onSortChange = React.useCallback(function (view, value) {\n var _a;\n setSortInput(__assign(__assign({}, sortInput), (_a = {}, _a[view] = value, _a)));\n }, [sortInput, setSortInput]);\n React.useEffect(function () {\n if (contentRef.current) {\n var top_1 = contentRef.current.getBoundingClientRect().top || 0;\n setTopOffset(top_1);\n }\n }, [contentRef]);\n var getAvailableSortInfo = React.useCallback(function () {\n var _a, _b, _c, _d;\n var sortInfoMap = new Map();\n sortInfoMap.set('overview', (_b = (_a = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _a === void 0 ? void 0 : _a.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.sortInfo);\n sortInfoMap.set('summary', (_d = (_c = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _c === void 0 ? void 0 : _c.nextWorkflow) === null || _d === void 0 ? void 0 : _d.summaryView.sortInfo);\n return sortInfoMap;\n }, [(_b = (_a = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _a === void 0 ? void 0 : _a.nextWorkflow) === null || _b === void 0 ? void 0 : _b.controlView.sortInfo, (_d = (_c = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _c === void 0 ? void 0 : _c.nextWorkflow) === null || _d === void 0 ? void 0 : _d.summaryView.sortInfo]);\n var renderWorkflow = function () {\n var _a, _b;\n switch ((_b = (_a = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _a === void 0 ? void 0 : _a.nextWorkflow) === null || _b === void 0 ? void 0 : _b.__typename) {\n case 'DataMatchingControlsWorkflow':\n return /*#__PURE__*/React.createElement(ControlsWorkflow$2, {\n data: data.getDataMatcherById.nextWorkflow,\n dataMatcherId: data.getDataMatcherById.id,\n onReasonCodesInherited: onReasonCodesInherited,\n availableFilters: data.getDataMatcherById.availableFilters,\n setClientFilters: setClientFilters,\n activeClientFilters: clientControlFilters\n });\n default:\n return null;\n }\n };\n return /*#__PURE__*/React.createElement(FiltersProvider, null, /*#__PURE__*/React.createElement(MatchingProvider, {\n userType: (_e = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _e === void 0 ? void 0 : _e.assignedTo,\n onSortChange: onSortChange\n }, /*#__PURE__*/React.createElement(DataMatching$1, {\n \"data-testid\": generate(['data-matching'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header$4, {\n dataMatcherId: dataMatcherId,\n title: \"\".concat((_f = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _f === void 0 ? void 0 : _f.account.name, \" | \").concat((_g = data === null || data === void 0 ? void 0 : data.getDataMatcherById) === null || _g === void 0 ? void 0 : _g.riskInventory.name),\n onBackClick: onBackClick,\n availableSortInfo: getAvailableSortInfo(),\n activeFilters: list,\n onRemoveFilter: onRemoveClientFilter\n }), /*#__PURE__*/React.createElement(Workflow, null, /*#__PURE__*/React.createElement(Content$1, {\n ref: contentRef,\n style: {\n height: \"calc(100vh - \".concat(topOffset + footerOffset, \"px)\")\n }\n }, loading ? /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }) : null, renderWorkflow()), /*#__PURE__*/React.createElement(Footer$3, {\n dataMatcherId: dataMatcherId,\n onSubmit: onSubmit,\n onExit: onExit,\n onBackClick: onBackClick\n })))));\n};\nvar DataMatching$3 = styled(DataMatching$2)(templateObject_1$2b || (templateObject_1$2b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2b;\nvar DashboardCard = styled.div(templateObject_2$w || (templateObject_2$w = __makeTemplateObject([\"\\n overflow: hidden;\\n position: relative;\\n background-color: \", \";\\n color: \", \";\\n height: \", \";\\n padding: 16px;\\n width: auto;\\n max-width: \", \";\\n display: flex;\\n flex: 1 1 0;\\n flex-direction: column;\\n text-align: center;\\n align-items: center;\\n justify-content: center;\\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 6px 0px;\\n font-size: \", \";\\n border-radius: 4px;\\n cursor: pointer;\\n transition: background-color 0.3s ease-out;\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n overflow: hidden;\\n position: relative;\\n background-color: \", \";\\n color: \", \";\\n height: \", \";\\n padding: 16px;\\n width: auto;\\n max-width: \", \";\\n display: flex;\\n flex: 1 1 0;\\n flex-direction: column;\\n text-align: center;\\n align-items: center;\\n justify-content: center;\\n box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 6px 0px;\\n font-size: \", \";\\n border-radius: 4px;\\n cursor: pointer;\\n transition: background-color 0.3s ease-out;\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue(600).main;\n}, function (p) {\n return p.theme.colors.text.getValue(3);\n}, function (p) {\n return p.theme.spacing.getSize(30);\n}, function (p) {\n return p.theme.spacing.getSize(95);\n}, function (p) {\n return p.theme.type.getSize(2);\n}, function (p) {\n return p.theme.colors.accent1.getValue().main;\n}, function (p) {\n return p.isDisabled && css(templateObject_1$2c || (templateObject_1$2c = __makeTemplateObject([\"\\n cursor: not-allowed;\\n opacity: 0.8;\\n background-color: \", \";\\n color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"], [\"\\n cursor: not-allowed;\\n opacity: 0.8;\\n background-color: \", \";\\n color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n }, function (p) {\n return p.theme.colors.text.getValue(0);\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n });\n});\nvar IconWrapper = styled(View)(templateObject_4$k || (templateObject_4$k = __makeTemplateObject([\"\\n font-size: 100px;\\n position: absolute;\\n left: -20px;\\n top: -20px;\\n margin-bottom: 16px;\\n color: \", \";\\n opacity: 0.2;\\n\\n \", \"\\n\"], [\"\\n font-size: 100px;\\n position: absolute;\\n left: -20px;\\n top: -20px;\\n margin-bottom: 16px;\\n color: \", \";\\n opacity: 0.2;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.text.getValue(3);\n}, function (p) {\n return p.isDisabled && css(templateObject_3$p || (templateObject_3$p = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.text.getValue(0);\n });\n});\nvar templateObject_1$2c, templateObject_2$w, templateObject_3$p, templateObject_4$k;\nvar DashboardCard$1 = function (props) {\n var _a;\n var className = props.className,\n card = props.card,\n onClick = props.onClick;\n var id = card.id,\n label = card.label,\n icon = card.icon;\n var isDisabled = (_a = card.isDisabled) !== null && _a !== void 0 ? _a : false;\n return /*#__PURE__*/React.createElement(DashboardCard, {\n \"data-testid\": generate(['dashboard-card'], props),\n className: className,\n onClick: function () {\n return !isDisabled && onClick(id);\n },\n isDisabled: isDisabled\n }, icon && /*#__PURE__*/React.createElement(IconWrapper, {\n isDisabled: isDisabled\n }, icon()), label);\n};\nvar DashboardCard$2 = styled(DashboardCard$1)(templateObject_1$2d || (templateObject_1$2d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2d;\nvar Dashboard$3 = styled(PageContentLayout)(templateObject_1$2e || (templateObject_1$2e = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n padding-top: \", \";\\n gap: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: center;\\n padding-top: \", \";\\n gap: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(20);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$2e;\nvar Dashboard$4 = function (props) {\n var className = props.className,\n cards = props.cards,\n onCardClick = props.onCardClick;\n return /*#__PURE__*/React.createElement(Dashboard$3, {\n \"data-testid\": generate(['page--dashboard'], props),\n className: className\n }, cards.map(function (card) {\n return /*#__PURE__*/React.createElement(DashboardCard$2, {\n key: card.id,\n card: card,\n onClick: onCardClick\n });\n }));\n};\nvar Dashboard$5 = styled(Dashboard$4)(templateObject_1$2f || (templateObject_1$2f = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2f;\nvar ROUTES = {\n DASHBOARD: {\n id: 'dashboard',\n label: 'Dashboard',\n path: '/'\n },\n // Root routes for the prototype only\n PROTOTYPE: {\n id: 'proto',\n label: 'Prototype',\n path: '/prototype'\n }\n};\nvar getPathFromId = function (id) {\n var keyFound = Object.keys(ROUTES).find(function (routeKey) {\n return ROUTES[routeKey].id === id;\n });\n if (!keyFound) {\n return undefined;\n }\n return ROUTES[keyFound].path;\n};\nvar useBreadcumbsNavigation = function () {\n var history = useHistory();\n var handleNavigation = function (id) {\n var path = getPathFromId(id);\n if (path) {\n history.push(path);\n }\n };\n return {\n handleNavigation: handleNavigation\n };\n};\nvar TABS_IDS = {\n OVERVIEW: 'overview',\n FILE_STORAGE: 'file-storage',\n UPLOADER: 'uploader',\n JOBS: 'jobs'\n};\nvar tabs = [{\n title: 'Overview',\n id: TABS_IDS.OVERVIEW\n}, {\n title: 'Jobs',\n id: TABS_IDS.JOBS\n}, {\n title: 'Uploader',\n id: TABS_IDS.UPLOADER\n}, {\n title: 'File Storage',\n id: TABS_IDS.FILE_STORAGE\n}];\nvar TableContainer = styled(View)(templateObject_1$2g || (templateObject_1$2g = __makeTemplateObject([\"\\n th {\\n background-color: \", \";\\n font-weight: bolder;\\n }\\n th,\\n td {\\n padding: 3px 8px;\\n border: 1px solid #333;\\n text-align: left;\\n font-size: 12px;\\n vertical-align: middle;\\n }\\n\\n margin-bottom: 16px;\\n\"], [\"\\n th {\\n background-color: \", \";\\n font-weight: bolder;\\n }\\n th,\\n td {\\n padding: 3px 8px;\\n border: 1px solid #333;\\n text-align: left;\\n font-size: 12px;\\n vertical-align: middle;\\n }\\n\\n margin-bottom: 16px;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(4);\n});\nvar templateObject_1$2g;\nvar TableContainer$1 = styled(TableContainer)(templateObject_1$2h || (templateObject_1$2h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2h;\nvar PageTitle = styled(Text$1)(templateObject_1$2i || (templateObject_1$2i = __makeTemplateObject([\"\\n margin-bottom: 8px;\\n\"], [\"\\n margin-bottom: 8px;\\n\"])));\nvar templateObject_1$2i;\nvar PageTitle$1 = function (props) {\n var className = props.className,\n children = props.children;\n return /*#__PURE__*/React.createElement(PageTitle, {\n \"data-testid\": generate(['page-title'], props),\n className: className,\n size: 2,\n weight: 600\n }, children);\n};\nvar JOB_STATUS = {\n PROGRESS: 'PROGRESS',\n COMPLETED: 'COMPLETED'\n};\nvar CLUSTER_STATUS = {\n MATCHING: 'MATCHING',\n APPROVING: 'APPROVING',\n SECOND_APPROVING: 'SECOND_APPROVING',\n MATCHING_FINISHED: 'MATCHING_FINISHED'\n};\nvar CONTROL_STATUS_PROTOTYPE = {\n TO_MATCH: 'TO_MATCH',\n READY_FOR_APPROVAL: 'READY_FOR_APPROVAL',\n REQUIRES_SECOND_APPROVAL: 'REQUIRES_SECOND_APPROVAL',\n MATCHED: 'MATCHED'\n};\nvar SME_QUALITY = {\n HIGH: 'HIGH',\n LOW: 'LOW'\n};\nvar allAcinControls = [{\n id: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n code: '1800',\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity around fixing windows and benchmark calculation windows\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- P&L generated around fixing/benchmark windows that breach a predetermined materiality threshold\\n- Trades executed during the fixing/benchmark window which exceed a threshold percentage of trade volume\\n- Large trades booked after fixing / benchmark window with no client fix order\\n- Fixing orders not correctly routed to a segregated execution desk where appropriate\\n- Trades flagged in an exception report where notionals exceeded the threshold for market moving size and impact fixing\\n- Suspicious transactions which contribute to a benchmark\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '98A3F726-1D5F-4783-9F3B-0123BD173C1C',\n code: '1649',\n name: 'Penetration Testing Review',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review penetration testing activities and results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Instances where penetration testing was required but not performed or not performed to agreed scope [e.g. external applications, low rated risks, penetration testing conducted against non-live applications in scope for decommissioning]\\n\\n\\\\- Weaknesses, vulnerabilities, and misconfigurations identified in the in-scope services, systems, and applications by penetration testing that have not been addressed or there is no approved plan to address them\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'D4D99E5C-9599-4374-8F80-01527E5FE7E2',\n code: '1621',\n name: 'Intercompany Balances Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation \\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review intercompany balances and payments',\n identify: 'Identify breaks between intercompany balances and failed payments',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n code: '935',\n name: 'Stale Market Data Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review stale market data alerts [e.g. stale FX rates]\\n\\n',\n identify: 'Identify any stale market data that requires updating [In addition stale market data that the desk is not responsible for marking but may be using in pricing (e.g. interest rate data)]\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'DE7476E2-CD51-4296-AEAE-0162E5759940',\n code: '1419',\n name: 'Central Counter Party (CCP) Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reconciliations between Central Counter Party (CCP) [e.g. DTCC, LCH or ICE-Eu] statements/infrastructure [e.g. TradeServ, CDSClear] and internal records\\n\\n',\n identify: 'Identify unconfirmed transactions , alleged trades that require confirmation, incorrect trade economics and or aged breaks requiring investigation, resolution and escalation\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'E011E543-5C88-49A8-9A97-02011A98AE47',\n code: '1841',\n name: 'Suitability and Appropriateness Governance Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review issues around Suitability and Appropriateness post trade execution\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Governance meetings monitoring post trade issues that have not been held in the required timeframe\\n- Changes in client circumstances that have not been reflected in the relevant Suitability and Appropriateness documents [e.g. as part of on-going Due Diligence]\\n- Annual reviews of executed transactions that have not met Suitability and Appropriateness requirements as per company policy and have not been stored in the correct system of record\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4282AD95-ED74-4251-BE05-02A2EC515BA5',\n code: '946',\n name: 'Proxy Pricing Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Real time',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor proxies used for pricing [e.g. where products quoted on exchange are longer than the trading hours of the market in the underlying asset and a proxy instrument is used]',\n identify: 'Identify unsuitable proxies [e.g. an expired futures contract, pricing snapshot fixings are not populated by current values]',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'B4FD8CF1-3CD3-4A57-8EB0-02D8EF1752EB',\n code: '1114',\n name: 'Vessel Location Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor vessel locations\\n\\n',\n identify: 'Identify one or more of the following\\n\\n\\\\- Vessels passing through high risk piracy areas\\n\\n\\\\- Vessels passing through war zones\\n\\n- Vessels requiring additional precautions [e.g. due to severe weather, requiring armed guards, required to join protected convoys]\\n\\n',\n risks: [{\n code: 'R100201',\n name: 'External theft or robbery'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'F3774DC4-3916-4334-B31C-031978C269DB',\n code: '1398',\n name: 'Contract Compare Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the comparison of outstanding borrows and loans against contracts booked by counterparties ',\n identify: 'Identify breaks which require resolution with counterparties or Front Office',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '4F7F2816-83AE-41F0-A5B1-0437F6C253BA',\n code: '1075',\n name: 'Mandatory Training Review (IT)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Investigate rationale for any late, missing or incomplete tasks\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review mandatory training completion status [e.g. training report or examination results]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Incomplete or overdue IT mandated training [e.g., information security training, IT security training, cyber security training, IT change management, disaster recovery training, business continuity training, IT product manager training]\\n\\n\\\\- Role specific training that has not been completed [e.g., privileged user training,\\u00a0IT incident management training, training specific to algorithmic trading]\\n\\n\\\\- New joiners and/or movers who have not yet received or completed the necessary training in a timely manner\\n\\n\\\\- Incomplete and overdue training that has not been escalated or investigated and subsequently justified [e.g. maternity leave, long term sick]\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R210102',\n name: 'External data theft or data manipulation'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '2C5AB0A4-659F-4D66-97EB-04472AEB201F',\n code: '28',\n name: 'T+1 P&L Analysis Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n3\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review T+1 P&L reports provided by Middle Office [e.g. actual P&L and P&L attribution analysis]\\n\\n',\n identify: 'Identify one or more of the following in the P&L analysis:\\n\\n\\\\- Inaccurate actual P&L which cannot be signed off\\n\\n\\\\- Differences between estimate and actual P&L which require trader commentary\\n\\n\\\\- Inaccurate P&L attribution analysis which cannot be signed off\\n\\n\\\\- Revenue above defined thresholds which requires trader commentary\\n\\n',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'FF9111ED-0250-46D9-9C97-0525C38009EF',\n code: '1420',\n name: 'Client Static Data Completeness & Accuracy Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review static data captured in the firms systems vs. the source information [e.g. email request, data submission template] and between the firms different systems\\n\\n',\n identify: 'Identify instances of inappropriate processing of static requests [e.g. incomplete mandatory information, missing standard settlement instructions (SSI), missing or incorrect tax identifiers and flags, email confirmation not sent to client servicing team, system enforced 4-eye control not completed, differences between internal systems]\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n code: '1062',\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of eTrading order lifecycle processing alerts generated by IT\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Orders not feeding P&L or risk systems\\n\\n\\\\- Orders feeding P&L or risk systems with inaccurate data points\\n\\n\\\\- Acks, Rejects or Cancels not received or processed correctly\\n\\n\\\\- eTrading flow which does not capture sufficient data to enable reconstruction of trade flow for client visibility\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4365593D-58D6-4998-A87E-05A06D0C63C4',\n code: '1125',\n name: 'Physical Incident Jurisdiction Legal Liability Matrix Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review jurisdiction legal liability matrix for physical incidents\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Exposure to jurisdictions with high legal liability risks for physical incidents\\n\\n\\\\- Jurisdictions with incorrect legal liability classification [e.g.\\u00a0low-risk when liability matrix suggests high risk jurisdiction]\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R170103',\n name: 'Litigation with third parties'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'E8BDC9BC-DD5F-4D5C-BA05-05EE296F62E8',\n code: '1622',\n name: 'External Financial Statement Disclosure Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n5. Amend inaccurate / incomplete or stale data or documentation\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review external Financial Statement disclosures for completeness and accuracy\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Discrepancies identified during reconciliation of reports not resolved, documented and reviewed again\\n\\n\\\\- Financial Statement disclosures not reconciled between drafts and final statements\\n\\n\\\\- Financial Statement disclosures not\\u00a0verified to be accurate and complete\\n\\n\\\\- Financial Statement disclosures submitted to the Board not reviewed by management and signed-off\\n\\n\\\\- Reporting requirement changes not communicated and actioned\\n\\n\\\\- External financial reports not submitted prior to the required deadline\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '755216D6-358F-47AE-B9AB-05FA199199B5',\n code: '1792',\n name: 'Leavers and Movers Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n',\n review: 'Review offboarding activities for leavers and transfers out of the team/function\\n\\n',\n identify: 'Identify one of more of the following:\\n\\n- Inappropriate access to systems/role-based permissions within systems not yet removed for leavers or updated for movers (e.g., mailbox, trading systems, payment systems, applications, shared drives, cloud storage, SharePoint, research systems, virtual data rooms, external third-party platforms, research publishing systems, chatrooms, and phone lines)\\n- Inappropriate access to offices or facilities not yet removed\\n- Voice and electronic communication recording/surveillance systems not yet updated\\n- Equipment not yet returned (e.g., laptops, phones, smart access/identity cards)\\n- Documentation errors such as incorrect or missing leaver or transfer date.\\n- Relevant parties within the organization not notified of changes in access rights or responsibilities (i.e., IT and HR)\\n- Failure to report changes in status to regulatory bodies, vendors and or venues\\n- Responsibilities of leaver/mover not appropriately reassigned (e.g., supervision of personnel, approval of Personal Account dealing, reassignment of books/positions, responsibilities, and open actions of the leaver/mover)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210103',\n name: 'Theft of intellectual property '\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B6B4E05F-17CB-44CD-BD4F-065991FB3CE7',\n code: '1698',\n name: 'Wrong Way Risk Monitoring (Risk)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor positions for wrong way risk [e.g. where there is a material relationship between the reference entity and the seller. E.g. Buying credit default swap protection on a French bank from another French bank]\\n\\n',\n identify: 'Identify deviation outside of pre-defined thresholds\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '60A592D6-15DE-42DD-A7B2-07366D5CD6B2',\n code: '1620',\n name: 'Critical Data Element (CDE) Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review data elements which have been designated as critical for the relevant process/function/report\\n\\n',\n identify: 'Identify insufficient controls or documentation relating to the critical data element (CDE) or where the CDE is being calculated, populated or used in an inaccurate or inappropriate manner\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R220104',\n name: 'Inaccurate balance sheet'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '8F5602E4-EBEF-46CB-BCE0-0763642CB189',\n code: '1472',\n name: 'Transaction Reporting Completeness Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review transaction reporting to be sent to the Regulator\\n\\n',\n identify: 'Identify incomplete, inaccurate or delayed transaction reports\\n\\n',\n risks: [{\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9F096063-1EBB-4114-ACF5-07DF88117B4F',\n code: '1210',\n name: 'Voice Surveillance Management Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review employees subject to surveillance and associated voice communication channels/devices/logs\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Employees performing regulated activities not captured in voice surveillance population [e.g., SWAP dealers, Associated Persons]\\n- Voice surveillance population not updated to reflect employee mobility [e.g., joiners, movers and leavers]\\n- Communication channels not approved and captured within surveillance inventory [e.g., phone lines, zoom calls, external private wires, call forwarding]\\n- Voice recording retention periods not in line with regulatory obligations [e.g Rule 17a-4 of the Securities Exchange Act of 1934, SYSC 9.1 General rules on record-keeping]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R230101',\n name: 'Electronic data record keeping failure (storage, retention or destruction)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '77008A8F-A2FB-4128-87E3-0861318D68C0',\n code: '1718',\n name: 'Account Interest Rate Suppression Flag Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the application of customer account interest rate suppression flags',\n identify: 'Identify one or more of the following:\\n- Customer accounts where interest suppression should have been applied but has not been\\n- Volumes of interest rate suppression outside of defined thresholds\\n- Erroneously applied interest suppression flags [e.g. flags permanently applied to active accounts]\\n- Customer accounts that have gone through a transfer process and not retained the interest suppression flag',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140322',\n name: 'Product pricing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'D3A74C2B-5B94-440B-A17A-091E9FF0F925',\n code: '1204',\n name: 'Know Your Customer (KYC) Ongoing (trading activity) Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: \"Review clients' trading activity, profile, relevant regulatory announcements and news\\n\\n\",\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\-Identified breaches of established protocol [e.g. trading with ineligible clients] that have not been escalated and reported\\n\\n\\\\- Client trading activities that have not been stopped or restricted when a client does not provide required documentation or when periodic reviews and refresh of client information was not performed\\n\\n\\\\- Client trading acitivity that has not been monitored pertaining to financial crime, money laundering and terrorist financing\\n\\n\\\\-Executed transactions that have not been assessed regarding eligibility/classification status of client\\n\\n\\\\- Clients unwilling to repaper [i.e. agree to updated documentation] that have not had their transactions unwound\\n\\n\\\\-Client trading activity that has not been monitored [e.g.exceeding a daily volume threshold, actual versus expected trading activity] which requires a client classification change for KYC [e.g. Professional Customer classification]\\n\\n\\\\- Post transactions reviews that have not been performed to regaularly scan clients against watch lists\\u00a0[e.g. OFAC, Worldcheck, inernal DNDBW (Do Not Do Business With)]\\n\\n\\\\-Clients that have not been regularly scanned against ineligible client list [e.g. sanctions list,\\u00a0OFAC, DNDBW, Worldcheck] and any instances where matches have not been escalated\\n\\n\\\\- Refresh of client KYC documentation that has not been instigated to address identified KYC deficiencies\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n code: '774',\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Halt trading or further business until all approvals are obtained\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review due diligence performed for prospective Direct Electronic Access (DEA) clients or refreshed due diligence performed for existing clients\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Clients who cannot be approved for DEA or should have DEA rights removed as they have inadequate governance, regulatory authorisations, risk management procedures or controls [e.g. Insufficient kill switches, pre-trade controls or real-time monitoring]\\n- Clients who lack sufficient numbers of staff with the required knowledge and technical skills to be approved or reapproved for Direct Electronic Access (DEA)\\u00a0\\n- Client who cannot be approved for DEA or should have DEA rights removed as their trading intentions or strategies are not in line with the risk appetite of the bank\\n- Clients who are overdue for their periodic DEA due diligence recertification as required by relevant regulation [e.g. At least annual recertification as required by RTS 6 Article 23]\\n- DEA due diligence processes which are insufficient to enable the bank to determine whether the client is suitable for DEA, and require enhancing\\n- Clients who intend to sub-delegate DEA to their own clients but do not have a suitable due diligence framework in place to assess the appropriateness of the sub-delegation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D905769C-E335-4E62-AE25-0957C31A1BDE',\n code: '1685',\n name: 'Approximate Booking Population Completeness And Accuracy Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Amend inaccurate / incomplete or stale data or documentation\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the population of approximately booked trades and underlying trade details within respective trading systems [e.g. as documented in the Approximate Booking Log]\\n\\n',\n identify: 'Identify discrepancies related to the post-trade approximate booking population regarding completeness of the trade population, accuracy of the underlying trade detail or justifications related to the booking. [e.g. not all approximated trades are correctly captured in the trading system, approximated trade economics are captured without sufficient level of detail, metrics monitoring the approximated trade economics require escalation, justification for an approximate booking is not aligned with the approximate booking category or incomplete commentary has been provided as part of the booking]\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6F812959-B378-474E-BFFE-09FADF20BE6A',\n code: '539',\n name: 'Wall Crossing Approval Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review public side employees required to assist in a private side transaction',\n identify: 'Identify employees not formally Wall Crossed before being provided with any Material Price Sensitive Information',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E7F71744-0625-4B5E-B306-0A0947A66C43',\n code: '1553',\n name: 'Sanctions Infrastructure Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review sanctions infrastructure including thresholds and parameters of screening logic, sanction filter installations, the messages and transactions filtered\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Screening logic not in line with business risk appetite as defined by sanctions and AML policy\\n- Missed or incomplete screening filter installations [including local and international sanction filter upgrades]\\n- Filtering of messages and transactions not performing as it should\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n code: '715',\n name: 'eTrading Unhedged Risk Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of eTrading risk accumulation\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Unhedged risk in breach of internal limits [e.g., market risk goes above agreed risk threshold]\\n\\n\\\\- Auto hedger activity which is delayed compared to real time risk by more than defined thresholds [e.g., if auto hedger delays exceeds 30 seconds compared to real-time risk, manual intervention initiated]\\n\\n\\\\- Positions which aren't being hedged as expected that indicate unintended behaviour of the algorithm [e.g., hedgers that are intended to hedge straight out but have started accumulating risk before doing so]\\n\\n\",\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0B636D2D-7E6A-4BDC-A602-0B28BB9A4063',\n code: '1597',\n name: 'Risk Capital Calculation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review capital calculations [e.g. based on Internal losses, gross capital, expected loss, qualitative adjustments etc]',\n identify: 'Identify inaccurate, incomplete calculations or not performed in line with procedures',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'FD943576-30A4-40BA-A261-0B5326C24CBB',\n code: '501',\n name: 'Voice Surveillance Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review voice recorded calls and associated communication surveillance alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Calls and or alerts indicating a breach of regulatory and legal obligations [e.g., collusive and anti-competitive practices, rate fixing, price manipulation, misleading information, inappropriate disclosures]\\n- Calls and or alerts containing sensitive client information or material non public information\\n- Calls and or alert breaches which have not been communicated to relevant business areas for approval or escalation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'DD84FECE-E7FB-4B65-9BF7-0B6B91592A74',\n code: '902',\n name: 'Benchmark Contribution Surveillance',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor benchmark contribution surveillance alerts for potential market abuse or manipulation\\n\\n',\n identify: 'Identify suspicious activity [If a supervised entity is a user of a Benchmark and has suspicions that either the Administrator, Contributors or other Users are manipulating input prices to the Benchmarks and thereby affecting the published Benchmark levels then they should report it via a Suspicious Transaction and Order Report (STOR).\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A76A9339-8A00-4906-91CE-0BFC7135CE4F',\n code: '1773',\n name: 'Trade Affirmation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Investigate rationale for any late, missing or incomplete tasks\\n4. Inform counterparty on the other side of the trade\\n5. Inform client of the circumstances of the event or issue\\n6. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n<!-- -->\\n\\n',\n review: 'Review new or amended trades requiring affirmation and affirmable events\\n\\n',\n identify: 'Identify one or more of the following in relation to affirmations:\\n\\n- Incomplete, inaccurate or legally non-binding trade economics\\n- New or amended trades or events where affirmations have not been issued\\n- Trades pending affirmation in firm\\u2019s systems\\n- Unauthorised manual transaction affirmations\\n- Manual affirmations using incorrect templates\\u00a0\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '2F5BF72F-D5BB-41C5-A79D-0C1F0A8089A7',\n code: '1427',\n name: 'Collateral Value Amendment Review ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the calculated amended collateral value\\n\\n',\n identify: 'Identify collateral data entry errors\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '33751EF6-A06F-4E2A-8425-0C6C0F1C9D37',\n code: '1663',\n name: 'Post-Trade Personal Account Dealing Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review all executed personal account dealing trades [e.g. manual trade confirms, electronic trade confirms, account statements]\\n\\n',\n identify: 'Identify one or more of the following in trade data:\\n\\n<br>\\n\\n\\\\- Executed trades/transactions without pre-approval for those security types that require pre-approval\\n\\n\\\\- Executed trades/transactions executed outside pre-approval trade period [e.g. 24 hours from approval]\\n\\n\\\\- Executed trades/transactions where minimum holding period is not met\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'BF1592D0-C9AF-4CC8-9D48-0CC9A15B2204',\n code: '523',\n name: 'Counterparty Onboarding Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review counterparty due diligence\\n\\n',\n identify: 'Identify potential counterparties that do not meet onboarding requirements or deemed to be high risk [e.g. certain criteria of suitability, profitability, politically exposed person etc.]\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0A59A79C-814A-4401-9926-0D83C3924E95',\n code: '1761',\n name: 'System Access Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review employee access to firm systems\\n\\n',\n identify: 'Identify inappropriate system access that requires removal\\n\\n',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R140322',\n name: 'Product pricing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '49609BA6-D3ED-42F7-9635-0E11834C827A',\n code: '1575',\n name: 'Critical Data Element (CDE) Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review critical data elements (CDE) and sources\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Instances of critical data that has not been reviewed for quality, accuracy and completeness in the required timeframe\\n\\n\\\\- Critical data elements (CDE) where an alternative source has not been identified\\n\\n\\\\- CDE and data types that have not been tested and evaluated as required\\n\\n\\\\- Data quality exception reports that have not been produced to identify process inaccuracies or gaps for remediation\\n\\n\\\\- Fixes suggested by data quality exception reports that have not been tested in a suitable manner to ensure data issues are remediated\\n\\n\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'B9A34946-121F-486E-8312-0F6AFE05140D',\n code: '1517',\n name: 'Client Assets Breach Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all client asset breaches\\n\\n\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Client asset breaches not documented and sent to client/regulator within required timeframe\\u00a0[including CASS submissions by vendors]\\n\\n\\\\- Client asset breaches that have not been escalated to management\\n\\n\\\\- Client asset breaches without appropriate remediation and monitoring plans\\n\\n\\n\\n\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'F3E4E9F6-7F25-4B03-9264-0FDC3C2E4FE5',\n code: '1461',\n name: 'System Break Investigation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reconciliation breaks between systems. These can be between two or more internal systems or between internal and external systems [e.g. central counterparty clearing houses (CCP)]\\n\\n',\n identify: 'Identify aged breaks between systems [e.g. unresolved, not reported]\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'FD6EDC20-13D3-4464-ABBA-101714196632',\n code: '1601',\n name: 'Stress Testing Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review stress testing report highlighting stress limit utilisation levels and breaches [Inadequate or insufficient stress testing may lead to the entity unable to quickly respond to unforeseen shocks or events either internally or externally, resulting in financial loss and reputational damage]\\n\\n',\n identify: 'Identify stress limit utilisation level breaches [e.g. where algorithm /eTrading platform has failed a stress test running high messaging volumes]\\n\\n',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'ETRISK',\n name: 'eTrading Risk'\n }, {\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'B7EE081B-512F-486C-9EA7-102F1EADBA9A',\n code: '773',\n name: 'eTrading Trade Flow Validation - Order-to-Trade Ratio Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of the eTrading Order to Trade Ratio (OTR)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Order to trade ratio in breach of internal thresholds\\n\\n\\\\- Order to trade ratio in breach of venue-specific requirements, including across specified timeframes [e.g. Deutsche Boerse can impose fines or suspend members if OTR limits are breached]\\n\\n',\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '77F71D9A-48F8-4C3B-8DB7-138DA290E320',\n code: '914',\n name: 'New Issue Price Stabilisation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor price stabilisation activity for new issues [e.g. stabilisation may only be used to support the price and not to increase the price in excess of the issuance price, stabilisation to be conducted only during the timeframe permitted]',\n identify: 'Identify exceptions to jurisdiction rules\\r\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '787BC173-9BBF-48EB-A434-13C05195652C',\n code: '428',\n name: 'Benchmark Third-Party Service Provider Monitoring',\n type: 'Detect',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Define next steps with relevant parties\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor the metrics agreed in the outsourcing contract between the benchmark administrator and the third-party service provider',\n identify: 'Identify deviations from agreed thresholds and governance issues',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'A593F2C5-BCA9-4753-B5DF-13C6D51EC354',\n code: '1851',\n name: 'Front Office (FO) Know Your Customer (KYC) Ad hoc / periodic client due diligence review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review client KYC due diligence',\n identify: \"Identify one or more of the following:\\n\\n-Regular reviews of client documentation to meet KYC requirements to classify clients' status which have not been performed \\n-Attestations of client AML risk ratings that have not been completed within the appropriate time frame\\n- Client circumstance changes that have not been captured during regular KYC due diligence\\n- Absence of submitions of identified Politically Exposed Persons (PEPs) to the apropriate high risk assessment team\\n- Client trading activities that have not been stopped or restricted when client does not provide required documentation or when periodic reviews and refresh of client information was not performed\\n-Clients with activity falling outside acceptable risk appetite that have not been proposed to be offboarded\",\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '93E885A7-2720-4245-AD47-143B7CBF6B1A',\n code: '1026',\n name: 'Pricing Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform counterparty on the other side of the trade\\r\\n3. Define next steps with relevant parties\\r\\n4. Amend inaccurate / incomplete or stale data or documentation\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review client account pricing levels',\n identify: 'Identify securities in a client account that are not priced or incorrectly priced [e.g. comparing client-level positions with client-level pricing to ensure no positions are missing pricing, comparing client-level pricing with historical financing costs to identify where pricing schedules need to change due to increased borrow rates etc.]',\n risks: [{\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '91AD476F-49C7-4153-BD58-14664649F9ED',\n code: '1201',\n name: 'Trader Mandate Breach Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Define next steps with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n<!-- -->\\n\\n',\n review: 'Review trader mandate breaches\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Trades executed on any products or tenors not within the trader's mandate\\n- Trades executed on products not on the permitted product list\\n- Trades booked on unauthorised legal entities\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '631818DD-A7F5-4EC2-B164-146884BDCB4A',\n code: '1253',\n name: 'Physical Seating Arrangement Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review physical seating arrangements\\n\\n',\n identify: 'Identify seating arrangements in breach of information barrier standards\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'EA5B7BB9-B685-440C-9C28-149716692AD0',\n code: '1272',\n name: 'Short Sale Approval',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Determine circumstance of breach or deviation\\r\\n3. Define next steps with relevant parties \\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all short sales in markets where naked short selling is prohibited or restricted',\n identify: 'Identify appropriate approval or confirmation that security will be available for settlement date e.g. Locate in the US market',\n risks: [{\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: '6322BF48-3595-4BBB-A6D5-150DCB551339',\n code: '1449',\n name: 'End of Day Triparty Collateral Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review triparty booking reports\\n\\n',\n identify: 'Identify collateral booking or allocation breaks without justification\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '277DEC70-CE5E-40F3-9760-150F927C035E',\n code: '1418',\n name: 'Unrecognised Statement review\\r\\n\\r\\n\\r\\n\\r\\n',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all mismatches between accounts on statements received from agent banks/depots and accounts set up in firm systems\\n\\n',\n identify: 'Identify the reason for the exception\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'CED1241F-BBC5-4A90-9AA1-152CFFEC73E4',\n code: '1742',\n name: 'Repayment Plan Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Agree timeframe for completion with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review customer repayment plans\\n\\n',\n identify: 'Identify one or more of the following in customer repayment plans:\\n\\n- Repayment plans where sound judgement has not been applied and the plan will lead to poor customer treatment outside of policy\\n- Customers offered repayment plans for which they are not eligible [e.g. based payment due date, repayment percentages, repayments terms, minimum payment amounts outside of policy, or delinquency cycles]\\n- Customer where a repayment plan has been agreed but it has not been correctly set up in the system\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '275C4676-D9D0-4766-94CC-153884EA06DA',\n code: '1469',\n name: 'Liquidity Balances Monitoring review ',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review outcome of liquidity balance monitoring [including timeframe of funding actions required, breaches of limits]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Funding forecasts not provided/identified in the correct timeframe\\n\\n\\\\- Funding requirements not reconciled with appropriate sources\\n\\n\\\\- Manual Adjustments in funding projections not reviewed and approved prior to providing forecast data\\n\\n\\\\- Breaches of agreed/pre-defined limits on book balances after review of the flows in the required timeframe [e.g. end of day]\\n\\n\\\\- Minimum balances of cash and Total Liquid Assets not maintained as per policy\\u00a0and regulatory requirements\\n\\n\\\\- Surplus/shortfall in liquidity balances that have not been reported to relevant business areas for resolution [e.g. Treasury Funding team]\\n\\n\\\\- Required actions [i.e. buy/sell, borrow/deposit instructions] that have not been instigated when there are balance surpluses/shortfalls\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'CD2906D5-DD1E-4813-AFC3-16126F0FD4AC',\n code: '1733',\n name: 'Governance Meetings Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review key issues and metrics presented to the meeting body [e.g. commercial performance and customer behaviours, complaint themes, trends and shared learnings etc.] from or by the various front to back functions',\n identify: 'Identify one or more of the following: \\n- Projects and actions failing to meet agreed timelines and requiring escalation\\n- Degradation in business area performance or service which requires action to address \\n- Issues impacting customer outcomes which require discussion\\n- Customer complaint trends breaching thresholds',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R140322',\n name: 'Product pricing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '1CF3E0AF-16E7-4A8B-B3C3-161E0B7E0091',\n code: '1435',\n name: 'Client Sensitive Information Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review email communications containing sensitive client information\\n\\n',\n identify: 'Identify communications where client sensitive information has not been through a 4-eye review [including checking whether client sensitive information has been shared/leaked to an unauthorised third party or the wrong client, outgoing emails with attachments not printed and reviewed].\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EC3E31B5-DF09-497D-8C18-162799168B71',\n code: '1408',\n name: 'Cheque Payment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review payments to be sent to external and internal parties by cheques\\n\\n',\n identify: 'Identify duplicate cheques or differences between payments to be made and details received from external counterparties [e.g. counterparty, date, amount, currency etc.]\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '18A833D8-94E8-481A-AD9C-16BBFC787D9D',\n code: '1819',\n name: 'Training Material Content Review (Compliance)',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all mandatory training materials\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Internal and third party training material that does not reflect Group lead regulatory and/or local regulatory obligations [E.g. Sanctions and Embargoes, Anti-money Laundering (AML), Anti-bribery & corruption (ABC), Anti-terrorist financing (ATF), Information Security]\\n- Internal and third party training material that does not align with products and services sold by employees\\n- Missing documentation and training procedures relating to products and services\\n- Training content that has not been evaluated for quality [e.g. training survey]\\n- Remediation to training content that remains unactioned [e.g. including errors against regulations referenced in training courses, training content that contradicts the firm's policy, incorrect answers to training questions that are not escalated and changed]\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '024D9F1D-1FBC-46E5-8994-16BCCDB8813A',\n code: '1520',\n name: 'End-User Computing (EUC) Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the End User computing (EUC)/End-User Developed Application (EUDA) inventory for the relevant business area\\n\\n',\n identify: 'Identify missing, late, incomplete EUC/EUDA reviews, those to be moved to a platform or those requiring decommissioning\\n\\n',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '23EE5823-E233-4AD2-876F-177FC08673E3',\n code: '918',\n name: 'New Issue Post Allocation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new issue allocations [e.g., Initial Public Offerings (IPOs), debt issues etc.]\\n\\n',\n identify: 'Identify one or more instances of the below:\\n\\n- missing justification for outliers of allocations and, or allocations above a threshold\\u200b\\n- missing justifications or approvals for the top x% of allocations in terms of aggregate dollar size of the deal \\u200b\\n- missing justification and approval for top x% of allocations in terms of percentage of allocation \\u200b\\n- missing justification / approval for allocations that exceed x% of issuance to internal dealing desks\\u200b\\n- missing justification or approval to manual changes made to allotment amount after the allocation was approved\\u200b\\n- missing evidence and or not stored in the appropriate local drives /\\u00a0uploaded into the appropriate system / folder\\u200b\\n- multiple allocations to a client\\u00a0e.g request distributors (Prime Brokers, local brokers etc.) to make due inquiries of their underlying accounts and identify where multiple allocation applications are detected\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '4C84190E-DE33-4063-A9CC-17A0B5303B90',\n code: '1705',\n name: 'eTrading Third-Party Provider Due Diligence Questionnaire Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Complete and / or request completion of outstanding tasks or approvals\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the inventory of third-party software or hardware providers which are used as part of the eTrading infrastructure\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Third-party hardware or software providers without completed or up-to-date third-party due diligence questionnaires (DDQs)\\n- DDQ responses which indicate that the use of the third-party hardware or software by the bank would mean that the bank is unable to meet its regulatory obligations [e.g. RTS 6 Article 4 states that the firm shall have sufficient knowledge and documentation in relation to any IT outsourcing and procurement]\\n- Third-party hardware or software providers with completed due diligence questionnaires but who are lacking appropriate supporting evidence [e.g. Testing evidence to support the responses in the DDQ]\\n- Completed DDQs which have not been through the required review and challenge from supporting functions [e.g. eTrading Risk or eTrading Compliance]\\n- DDQ content which is out-of-date and requires updating prior to sending to third-parties\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '3062CC8C-2DBB-461B-BA31-17E9D6BA90E6',\n code: '1568',\n name: 'Annual Self Assessment Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review annual self assessments [e.g. compliance with risk appetite, strength of controls and monitoring etc.]\\n\\n',\n identify: 'Identify gaps or deficiencies requiring remediation\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '4837E43F-4A74-47BA-A1E8-1846392BFCBA',\n code: '1542',\n name: 'Securities Lending Reconciliation',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review reconciliations between external securities lending systems and internal books and records',\n identify: 'Identify breaks which require escalation to securities lending teams for resolution',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0D4FB01A-8921-4676-B60C-189D6FE4AD2B',\n code: '1416',\n name: 'Instrument Exceptions Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instrument pricing data and static data that has failed validation checks\\n\\n',\n identify: 'Identify severity and age of exceptions, including lack of sufficient monitoring or lack of exception queue clearance [e.g. missing closing price or other price snap, stale prices, failed vendor price feeds]\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '31A78D50-05A2-4A30-A4A1-191807596C97',\n code: '1769',\n name: 'Darkpool Access Controls Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor Dark pool participants access and historic access requests\\n\\n',\n identify: 'Identify one of more of the following in the darkpool access requests:\\n\\n- Participants with inappropriate access to the darkpool\\n- Participants granted access to darkpool order and execution data by an inappropriate approver.\\n- Participants without updated approved access within a pre-defined time period (e.g. annually)\\n- Participant list containing authorised users which is not valid or up to date\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '45C26B68-07E3-4F6F-B87D-195A4F06439A',\n code: '1361',\n name: 'Business Continuity Plan Documented',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review existence and status of business continuity plans (BCP) for relevant business area [e.g. These typically document the critical infrastructure required to run the Business, critical team member contacts, location of an alternative site, available number of desks with desk location details etc.]',\n identify: 'Identify any BCP plan which has not been updated for recent notable events or is missing',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n code: '1833',\n name: 'eTrading Executed Orders Limit Review',\n description: '',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review eTrading aggregated executed orders across all applicable dimensions [e.g. Quantity, Order / quote size, notional or risk]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Aggregated values of executed orders across any dimension which have breached defined limits [e.g. The notional of all executed orders exceeds a defined value]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A7C1008F-924A-4AE2-A27B-197B63C98EFB',\n code: '1625',\n name: 'Reference Data Change Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review requested or performed changes to reference data',\n identify: 'Identify inappropriate or unauthorised changes to finance reference data',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '9F19615F-F254-4791-9D2F-19A6F5CA7EF1',\n code: '1502',\n name: 'KYC Sample Testing Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Know Your Customer (KYC) due diligence testing samples\\n\\n',\n identify: 'Identify incomplete, inaccurate or untimely Know Your Customer (KYC) due diligence\\n\\n',\n risks: [{\n code: 'R140102',\n name: 'Client account set up or maintenance error'\n }, {\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '7115158D-D329-4F7B-BB29-19C1BDC82098',\n code: '1001',\n name: 'Tap Issuance Surveillance Monitoring',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review surveillance of Tap Issuance personnel [A Tap issue is a procedure that allows borrowers (issuers) to sell bonds or other short-term debt instruments from past issues e.g. the issuing bank front running of outstanding issues or not handling the Tap mandate according to market standards]',\n identify: 'Identify where there is inappropriate sharing of private information',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }]\n}, {\n id: '36F5214E-A5D8-4A1B-969C-1A1C7BE5C87F',\n code: '1736',\n name: 'Mandatory Training Review',\n type: 'Detect',\n automation: null,\n frequency: 'Annually',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review training report results for the relevant business area [e.g. market abuse, anti-bribery and corruption etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Missed or delayed training\\n- Incomplete training modules not escalated to senior management\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R140321',\n name: 'Failure to apply customer debit or credit payments accurately or on time'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '1080D672-9877-4551-975E-1A3E144D6069',\n code: '884',\n name: 'Client Tiering Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review existing client tiering and proposed reassignments [where tiering levels change pricing spreads shown to clients]\\n\\n',\n identify: 'Identify unauthorised or unjustified changes to client tiering [Traders or salespersons inappropriately pricing products etc]\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160404',\n name: 'Excessive charges or fees'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D9874474-6807-411B-A45E-1A7B55575A82',\n code: '1722',\n name: 'Collections Strategy Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review collection strategies',\n identify: 'Identify one more of the following: \\n- Inappropriate proposed changes to collection strategies\\n- Collection strategies which are producing unexpected or undesirable customer outcomes',\n risks: [{\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'DD2482B2-F9BF-48F5-845F-1AB1F3079196',\n code: '1581',\n name: 'Impairment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review impairments [e.g. provisions for loans]\\n\\n',\n identify: 'Identify overdue testing and inaccurate impairments impacting or not adequately disclosed in financial statements [e.g. for defaulted counterparties a quarterly impairment test is performed to assess whether any credit loss provisions are booked]\\n\\n',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n code: '772',\n name: 'eTrading Credit Risk Limit Monitoring',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review incoming client orders or Requests for Quotes (RFQs) against client limits [Across relevant trading dimensions e.g. per algorithm, trading desk, venue limits etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Intraday utilisation of credit limits that breaches defined thresholds [e.g. 80% of the total client limit]\\n- Intraday utilisation of credit limits that breach the total client limit and requires action to reduce exposure to the client to within tolerance\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '9E0BDFFB-8DDF-47B1-AC6C-1BA000B1E9CE',\n code: '1146',\n name: 'Warehouse Inspection Results Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review warehouse inspection results\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Deviations from expected physical security and security protocols\\n\\n\\\\- Deviations from expected legal certification/documentation\\n\\n\\\\- Deviations from expected\\u00a0maintenance protocols\\n\\n\\\\- Deviations from expected ability to move/sell product from the location\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R120301',\n name: 'Breach of health and safety standards'\n }, {\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }, {\n code: 'R120101',\n name: \"Physical property damages (firm's)\"\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'EADBAA37-D4D1-43A1-8732-1BB941305E0F',\n code: '1721',\n name: 'Chaps Payment Authorisation',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3, Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review source documentation and proposed payment details for CHAPS payments',\n identify: 'Identify erroneous CHAPS payments',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R140321',\n name: 'Failure to apply customer debit or credit payments accurately or on time'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '2D2B40DC-5C04-499D-87AF-1C4D6AC34904',\n code: '1406',\n name: 'Customer Call-Back Segregation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all (or a sample) of customer call-backs performed [e.g. changes to settlement instructions]\\n\\n',\n identify: 'Identify all cases where the call-back was made by the same person who updated firm systems\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9C992CCD-E931-409E-A619-1C721C383769',\n code: '1358',\n name: 'Order Lifecycle Integrity Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review order lifecycle processing alerts provided by IT or platforms\\r\\n\\r\\n \\r\\n',\n identify: 'Identify deviations from expectations, alerts or failed transmissions ',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '59933BDC-EA09-41CC-B33D-1D0C24BF5099',\n code: '1707',\n name: 'Research Analyst Compensation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review decisions made as part of research compensation programs, benefit structures and incentive plans\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Research analyst compensation decisions not consistent with applicable law or internal policies and procedures[e.g. research analyst compensation is based on banking revenues generated due to the influence of analyst research recommendations]\\n- Unreviewed or unapproved research analyst incentive compensation pools\\n- Unapproved research analyst compensation and benefit structures\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090201',\n name: 'Incentive, compensation and benefit structure failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '7419BC02-9511-4305-A1BB-1EB2A374C7FA',\n code: '1067',\n name: 'Disaster Recovery Plan Testing Results Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Disaster Recovery Plan Testing results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Disaster Recovery Plans that have not been tested as per the Business Continuity Management testing calendar\\n- Disaster Recovery Plan tests that do not cover all required applications and services identified in the Business Impact Analysis document\\n- Disaster Recovery Plan tests that do not cover suitable scenarios [e.g.\\u00a0critical process or systems, unavailability of premises, disruption of IT applications] \\n- Applications supporting critical business services not being able to failover to alternate data centre/servers to ensure business is resumed for an extended period\\n- Business functions with a defined recovery time that have not been tested in terms of work transfer strategies [e.g. work transfer recovery location] \\n- Incomplete Disaster Recovery testing requirements [e.g. applications not tested from the disaster recovery location, technical recovery plans, alternate premises etc.]\\n- Evidence of completion of Disaster Recovery testing that has not been recorded in the relevant system\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'B419E937-3EC4-4CBB-B2EF-1EBE729927E1',\n code: '1481',\n name: 'Aged Failed Trade Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review aged failed trades, their payables and receivables\\n\\n',\n identify: 'Identify fails still outstanding, requiring follow-up and escalation\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'CBCB87D6-DE5A-41FE-A5DB-1ED654EF56E7',\n code: '1147',\n name: 'Third Party Transportation Procedures And Standards Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review third party transportation procedures and standards prior to transportation\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\-\\u00a0Missing third party transportation procedures or standards\\n\\n\\\\- Inadequate transport procedures standards that may pose a risk to the product during transport [E.g. incorrect or inadequate container type, old or inadequate vessel]\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'E52636E9-45E3-4751-ACD8-1EE4BABFB40A',\n code: '1852',\n name: 'Third Party Service Provider Due Diligence Review ',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n\\n2. Define next steps with relevant parties \\n\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Third-Party Due Diligence Documents',\n identify: 'Identify one or more of the following:\\n\\n- Periodic refresh or new due diligence/ Risk Assessment on Third Party Service Provider not completed or refreshed within required time specified in policies or procedures [e.g. Before onboarding, Annually]\\n- Issues arising from the Third Party Service provide due diligence/ Risk Assessment requiring resolution or escalation not resolved or escalated to the appropriate governance forum\\n- Service Level Agreements (SLA) not aligned with contracts\\n- Service Level Agreements (SLA), Key Performance Indicators (KPIs) and Key Risk Indicators (KRIs) and their associated thresholds not reviewed for their appropriateness [e.g. Change in business, change in volumes, change in regulation]\\n- Site visits, where required, not completed in line with policy or procedures\\n- Service Auditor Reports (SOC1 Type II, ISAE3402, AAF01/20) not supplied, supplied with qualification or supplied highlighting control weakness at the Third party service provider/ outsource service provider not reported, explained or previously escalated in normal service monitoring',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '407BBDD7-D0C6-4132-B02F-1F5F727EC388',\n code: '660',\n name: 'Complaints Log Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n<!-- -->\\n\\n',\n review: 'Review the complaints log\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Complaints not recorded in accordance with regulatory requirements or internal time frames\\n- Complaints logged using incorrect template\\n- Complaints with missing or incorrect details [e.g. No complaint owner or clearly defined roles and responsibilities etc]\\n- Complaints not appropriately tracked, reported or logged through to resolution\\n- Complaints without an appropriate remediation plan in place\\n- Complaints closed/marked as resolved with inappropriate redress [e.g. unapproved monetary redress or discounted service period]\\n- Aged complaints that breach internal timeliness thresholds and require further escalation\\n- No attempt has been made to identify trends in complaint types or volumes\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '42B5E453-4194-4F89-AA38-1F78A8404454',\n code: '1009',\n name: 'Permanently Wall Crossed Investors Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review permanently wall crossed investors [When an investor is wall-crossed, it restricts any transactions they may want to do in the portfolio that is covered by the MNPI rules, it temporarily freezes their trading activities]',\n identify: 'Identify scenarios where permanent wall crossing designations are no longer appropriate',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'DA208463-5058-4651-B63A-1F85FBBA1747',\n code: '1252',\n name: 'Authorised Remote Bookers Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the list of authorised remote bookers and their associated permissions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Individuals provided with remote booking access who were not approved by the Remote Booking Officer\\n- Remote Booking permissions that have been authorised without suitable justification\\n- Individuals designated as remote bookers outside of normal policy requirements and without justification commentary\\n- Individuals with Remote Booking permissions no longer justified by usage\\n- Individuals with incorrect or inappropriate remote booking capabilities for specific businesses or products\\n- Unauthorised additions or deletions to the list of authorised Remote Bookers\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R160314',\n name: 'Inappropriate remote trading or trade booking'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '68D3426F-A3EE-4036-8255-1FE49F804D81',\n code: '1471',\n name: 'Segregation of Duties Review',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review implementation of segregation of duties principles across various parts of the end-to-end transaction process [e.g. payment processing, settlements, funds release, trade execution, static data maintenance]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Roles and duties which have not been appropriately segregated\\n- Failure of systems and automations that should enforce segregation between inputter and approver\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '02E65C3D-D392-4A20-8AA9-20EC7470DF2A',\n code: '1751',\n name: 'Business Performance Forecasting Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review actual versus forecast metrics\\n\\n',\n identify: 'Identify where tactical or strategic adjustments are required [e.g. capacity planning]\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '70C8F3DA-4334-47C3-9B16-21E30F965BFE',\n code: '1627',\n name: 'Month End Error Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review errors generated when completing period-end close processes',\n identify: 'Identify data which may result in inaccurate general ledger balances',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'A7DD9B51-B4EB-4F7A-9CC9-22901983F5BB',\n code: '1767',\n name: 'Darkpool Compliance - Activity Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor trading activity in the dark pool through trade records, communications between participants and exception reports\\n\\n',\n identify: 'Identify instances of regulatory non-compliance through any of the following darkpool activity:\\n\\n- Trading activity from clients granted access to the darkpool that are not certified as Institutional Professional Investors. (e.g. non-compliance with MiFID II Article 25)\\n- Trading activity that does not comply with requirements set out in darkpool operating procedures\\n- Trading activity that exceeds a frequency and substantiality threshold in system not registered as a darkpool\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '591BF18A-4549-449A-B28D-2345ED87448D',\n code: '1785',\n name: 'Volcker Rule - Scope and Exemptions Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review details of reports relating to Volcker activities and associated exemptions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Trades between a book without a Trading outside of the United States (TOTUS) exemption and a book with the TOTUS exemption where the books are owned by the same trader\\n- Transactions booked using the Underwriting Exemption that are in breach of the requirements for the exemption [e.g. the desk underwriting a position that is not related to the intended distribution of those securities]\\n- Desks with Risk Mitigating Hedging Exemptions where analysis suggests the hedge is not in compliance with the regulations or where the hedge is no longer effective\\n- Activity in investment funds which have been incorrectly deemed out of scope of Volcker rules\\n- Desks granted a TOTUS exemption that have breached compliance with Volcker rules [e.g. a US-based trader booking into a book with a TOTUS exemption, use of counterparties who are not eligigle for the TOTUS exemption, other trading activity where US staff were involved and could be considered in breach of the TOTUS exemption]\\n- Desks with a Riskless Principal designation that can no longer be designated as conducting Riskless Principal activity\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190406',\n name: 'Breach of the Volcker requirements of the Dodd-Frank Act'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '8B7D64DD-9D5E-437E-991A-23A5F17F8C41',\n code: '1120',\n name: 'Oil Additives Pre-Blending Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed new oil blending additives prior to blending\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n- Additives with adverse effects\\n- Additives that are banned in certain jurisdictions due to causing environmental or detrimental effects on engines\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '195F6554-1FFD-4E79-B125-242068EA0881',\n code: '1064',\n name: 'eTrading Activity Training Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review eTrading training materials and the population of staff subject to training requirements\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\-\\u00a0eTrading training materials that are out of date and require updating to capture changes in eTrading business processes, governance frameworks or regulatory requirements\\n\\n\\\\- Staff who have been incorrectly deemed out of scope for eTrading training requirements\\n\\n',\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '3C4DEDA7-4A7A-4B0E-8AAD-242CDA490C13',\n code: '996',\n name: 'Deal File Checklist Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. 3, Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the deal file checklist and evidence [e.g. conflict clearance, mandate review, KYC checks etc.]\\n\\n',\n identify: 'Identify incomplete checklists or inadequate deal file evidence\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '5F681684-B35B-414F-883D-24D8F982409B',\n code: '1365',\n name: 'eTrading SEC Regulation ATS Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree timeframe for completion with relevant parties\\n4. Confirm a valid justification is provided and recorded for exception(s) including ongoing monitoring of that exception\\n\\n<!-- -->\\n\\n',\n review: 'Review supervisory alerts relating to the requirements of the Securities and Exchange Commission (SEC) Alternative Trading Systems (ATS) regulation [e.g. record keeping, quarterly report, notice requirement, order display and execution access, protection of confidential information etc.]\\n\\n',\n identify: 'Identify where ATS activity and reporting is not in compliance with the SEC ATS regulation requirements\\n\\n',\n risks: [{\n code: 'R230101',\n name: 'Electronic data record keeping failure (storage, retention or destruction)'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R230102',\n name: 'Physical record keeping failure (storage, retention or destruction)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n code: '1588',\n name: 'Model Approval Review (Risk)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new or amended model approvals',\n identify: 'Identify missing new model approvals / rejections / proposed amendments ',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }, {\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '6005721B-D1C0-4AEA-A099-2514077EBFF2',\n code: '1683',\n name: 'Legal Documentation Review (Legal)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all legal documentation for open deals from lawyers including executed documents sent to clients\\n\\n',\n identify: 'Identify missing, inadequate, unapproved legal documentation [product, service] or any executed documents not matching client version\\n\\n',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Legal',\n name: 'Legal'\n }]\n}, {\n id: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n code: '1590',\n name: 'Model Performance Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review model performance\\n\\n',\n identify: 'Identify models not performing as intended or not being used in accordance with restrictions set during approval\\n\\n',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n code: '711',\n name: 'eTrading Desk Procedures Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all eTrading procedure documentation [e.g. procedures for kill switch activation, Direct Electronic Access (DEA), change control, risk management]\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- eTrading procedures that no longer reflect the business environment or regulatory requirements/guidance and require updating\\n\\n\\\\- Proposed updates to eTrading procedures that are erroneous and cannot be signed off\\n\\n\\\\- eTrading procedures that do not reflect the latest compliance standards or policies and require updating\\n\\n\\\\- eTrading procedures that haven't been reviewed and/or refreshed within the required timeframe\\n\\n\",\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '271440BF-2EF5-4DDB-9B55-2793E59EB797',\n code: '1809',\n name: 'Broker Trade Matching Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade bookings, unmatched trades, reconciliations, and discrepancies across broker confirmations and internal systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Breaks between trade booking and broker confirmations\\n- Trades allocated to incorrect client accounts\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A86A6494-828B-48EF-9266-27AD926D2517',\n code: '1629',\n name: 'End-User Computing (EUC) Register Review (Finance)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the End-User Computing (EUC) / End-User Developed Applications (EUDA) register\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n<br>\\n\\n\\\\- End-user computing (EUC), End User Developed Applications (EUDA), Critical or Complex Spreadsheets (CSs) required to support business processes not included in the EUC/EUDA register/inventory\\n\\n\\\\- EUC/EUDA/CSs on the register/inventory with missing, incorrect, or out date registered attributes [e.g. Owner, Description, Location, Risk Assessment results, Business Unit, Information classification, Documentation location, Active/Decommissioned status]\\n\\n\\\\- High risk EUC/EUDA/CSs without migration plans to move to Technology or dispensation to remain as EUC/EUDA/CSs\\n\\n\\\\- EUC/EUDA/CSs where configuration does not meet firm-wide EUC/EUDA standards [e.g. Software version, Version control, Retention, Access controls, Cell and Sheet Protection, Change control, Back-up approach, Data integrity checks, Availability during BCP event, Decommissioned date]\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '47151F03-6400-42B6-986C-27CD9698B109',\n code: '1007',\n name: 'New Issue Term Sheet Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review details of the New Issue Term Sheet [e.g. maturity date, selling restrictions, legal jurisdiction, fixed vs floating rate etc.]',\n identify: 'Identify where the term sheet does not reconcile to the mandate',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'A3053F3E-5B45-4097-BC24-281F9CD70CA7',\n code: '1232',\n name: 'Benchmark Third-Party Service Provider Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review benchmark third-party service provider contractual arrangements, the results of due diligence site visits, KPIs or escalation processes\\n\\n',\n identify: 'Identify deviations from contractual arrangements\\n\\n',\n risks: [{\n code: 'R170201',\n name: 'Contractual rights or obligation failures'\n }, {\n code: 'R200102',\n name: 'Third-party documentation deficiencies'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F2D35882-C1CA-4CF0-BEB9-28D729D77A92',\n code: '1606',\n name: 'Financial Forecast And Planning Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n4\\\\. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review financial forecasts and associated reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Financial forecasts that have not been reviewed and signed off by management in the required time frame\\n\\n\\\\- Differences between estimate and actual forecast that have not been explained [e.g., key drivers for material movements]\\n\\n\\\\- Underlying financial planning assumptions not reviewed or justified\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '92A6B2DC-8C50-4DD7-AAF9-292616F155CD',\n code: '995',\n name: 'Transaction Documentation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review product relevant transaction documentation [e.g. prospectus, legal opinions, loan agreements, confidentiality agreement, details sent to clients etc.]\\n\\n',\n identify: 'Identify missing documentation or inappropriate terms and conditions\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: '0DFA93FC-52E4-425A-8E62-292FB3674500',\n code: '1713',\n name: 'Research Billing Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reports detailing Research payment and billing discrepancies [e.g. amount requested per client invoices sent vs payments received from clients, invoices older than a defined threshold]\\n\\n',\n identify: 'Identify where payment for Research has not been received [e.g. aged invoices] or is inaccurate, where billing has not been initiated, or where Research fees have been calculated incorrectly\\n\\n',\n risks: [{\n code: 'R140306',\n name: 'Fee collection failure'\n }, {\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: 'C040C572-E88D-4B4B-BB2D-2939EB81DD91',\n code: '1351',\n name: 'Trade Error Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trade error details, root cause, values and remediation steps',\n identify: 'Identify any factual errors, missed regulatory or client reporting',\n risks: [{\n code: 'R140207',\n name: 'Trade allocation error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '70038154-E883-4E1C-AEB7-294C0130D670',\n code: '1413',\n name: 'Suspicious Transactions Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of suspicious and / or irregular activity\\n\\n2\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n4\\\\. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review suspicious transaction alerts and activity\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Transaction Surveillance Alerts not reviewed and actioned or escalated in a timely manner\\n- Unacknowledged internal escalation of Suspicious Activity/ Suspicious Transaction Reporting\\n- Suspicious Transaction and Order Report (STOR), Suspicious Activity Reports (SARs) or Suspicious Transaction Report (STR) that have not been filed with the relevant national agency\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '48DBC277-2FC7-4C2B-A560-296DF0A01C0F',\n code: '103',\n name: 'Dormant Trading Book Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n2. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review dormant trading books and associated reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Dormant trading books without the required dispensation or approval to remain dormant rather than be closed\\n- Trading books which have now passed dormancy thresholds and require flagging as dormant or to begin the book closure process\\n- Transactions erroneously booked into dormant books which require rebooking into live books\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '601FA1E9-B34A-4A87-A4E1-29756DA5FAF9',\n code: '1595',\n name: 'Regulatory Reporting Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review the preparation, completeness and timely submission of regulatory reports\\n\\n',\n identify: 'Identify incomplete, inaccurate, unapproved or delayed reports\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '98F9F1E4-3599-4012-BDA7-29D1897FE5F4',\n code: '1103',\n name: 'Demurrage Timebars Monitoring ',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor demurrage timebars for vessels loading and discharging physical commodities\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Approaching claims for demurrage\\n\\n\\\\- Notifications related to demurrage\\n\\n',\n risks: [{\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '09F0DBFD-C679-49FB-836F-2A1D47207152',\n code: '1277',\n name: 'Commission Rate Data Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review broker commission rates stored in trading platform against agreed rates.',\n identify: 'Identify any errors in commission rates',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'CF1542B2-7137-44D0-866B-2A765FEFCF61',\n code: '1815',\n name: 'Business Impact Assessment (BIA) Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Buisness Impact Assessment (BIA)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- BIAs that have not identified all critical business processes and associated dependencies [e.g. premises, staff, IT applications, internal business services and services provided by third-parties)\\n- BIAs that do not consider mandated business and or cyber scenarios\\n- BIA that have not assessed a \"Maximum Tolerable Period of Disruption\" (MTPD) and or \"Recovery Time Objective\" (RTO) to ensure recovery of critical processes is achievable within a defined number of days\\n- BIAs that contain Business continuity strategies that do not adequately address the identified business and or cyber scenarios [e.g. Unapproved recovery actions in case of Denial of access (DoA) to primary premises and business applications, unavailability of staff etc.]\\n- BIAs without senior management or process owner approval\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'DAFA4DFC-399B-4642-BFAD-2AA99145231A',\n code: '1647',\n name: 'IT Post-Deployment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review IT changes post-deployment\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Changes deployed to Production with no pre-deployment approval\\n\\n\\\\-\\u00a0Unapproved changes at the Production deployment stage\\n\\n\\\\-\\u00a0Changes deployed in Production that are missing approvals\\n\\n\\\\- Incidents resulting from inappropriate deployment of changes to Production [e.g. New releases are not installed at every server as per the deployment plan, installed versions do not all operate correctly, newly added servers not explicitly checked]\\n\\n\\\\- Deployment failures that do not have a ticket raised for remediation\\n\\n\\\\- Changes deployed to Production that have not been reviewed, validated and closed by the change requestor within the defined timeframe from the date of implementation\\n\\n\\\\- Instances where the approved back-out plan was not followed after a deployment failure\\n\\n\\\\- Changes that have not been sample tested to ensure what was deployed to Production reconciles to what has been tested and approved under the change request.\\n\\n\\\\- Unsuccessful changes redeployed to Production with no documented details of status and impact to applications and systems\\n\\n',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '47E8C9D4-71F7-49BE-99C6-2AB861C016E0',\n code: '1092',\n name: 'Title Documentation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review title documents [e.g. Bills of Lading]\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Ambiguous or incorrect title documents relating to the commodity inventory purchased and stored [e.g. blank endorsed Bill of Lading instead of being made out to the correct name of the buyer]\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'DA3138F8-EDEB-4B40-882D-2AD0039A2B44',\n code: '1360',\n name: 'Business Continuity Plan Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks \\r\\n2. Complete and / or request completion of outstanding tasks or approvals \\r\\n3. Agree timeframe for completion with relevant parties\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review relevant Business Continuity Plans (BCP) [BCP include a formalised communication plan to inform and protect wherever possible impacted individuals (incl. customers), market participants and supervisory bodies]',\n identify: 'Identify missing, inadequate or not signed-off BCPs ',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '959DECFB-51EA-4E5F-A31E-2B2C8C14568E',\n code: '919',\n name: 'Indication of Interest Review',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review indication of Interest communications (IOI) [IOI is a non-binding expression of interest in buying or selling a security typically used for large trades to assess liquidity in a stock without placing an order in the order book]\\n\\n',\n identify: 'Identify non-genuine / suspicious IOI communications [e.g. giving the false impression of interest in buying a stock in order to increase the price and then selling an existing position, where actual number of communicated shares traded exceeds actual volume etc. ]\\n\\n',\n risks: [{\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '27AE18CA-C800-4366-985A-2B6ECD7C5934',\n code: '869',\n name: 'Brokerage Charges Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review brokerage charges\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Unusually high charges or volume of activity with particular brokers (e.g. indicative of wash trades)\\n- Trading activity with unapproved brokers\\n- Broker charges not in line with expected costs (e.g. internal calculations based on agreed rates)\\n- Other unusual brokerage charges that may indicate market misconduct or a breach of <span style=\"color: rgb(44, 44, 45);\">anti-bribery or anti-corruption laws & regulations</span>\\n\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2DB549F9-7C1C-4D5E-B784-2BC5D4E8A88D',\n code: '1437',\n name: 'Collateral Requirements Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review current collateral requirements and amounts held [e.g. held at an exchange]\\n\\n',\n identify: 'Identify projected or actual shortfall or excess in collateral\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '45B3775C-9CFF-4750-8CE1-2C3141B70F99',\n code: '1008',\n name: 'Jumbo Deal Conflict of Interest Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review status of Jumbo Deal team typically when a deal greater than $2-3 billion is taken on [e.g. secure area access, deal wall-crossing status]',\n identify: 'Identify where appropriate conflict of interest and Material Non-Public Information safeguards are not in place',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'C1E77290-D2A7-4350-BC34-2CD34DE17D0D',\n code: '1174',\n name: 'Segregation of Client and bank Treasury Bill Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Define next steps with relevant parties monitored as required\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review bids placed by the bank and clients in Treasury bill auctions',\n identify: 'Identify where a conflict of interest has led to inferior outcomes for clients [e.g. Where the same staff are taking client bids and providing bids on behalf of the bank allowing them to use this information to the Banks advantage, bids for the bank provided before client levels but changed after client bids have been received]',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '54DD7916-2CF1-446B-86A6-2CE04CA92D31',\n code: '37',\n name: 'End-User Computing (EUC) Register Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Define next steps with relevant parties\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the End-User Computing (EUC) / End-User Developed Applications (EUDA) register\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n<br>\\n\\n\\\\- End-user computing (EUC), End User Developed Applications (EUDA), Critical or Complex Spreadsheets (CSs) required to support business processes not included in the EUC/EUDA register/inventory\\n\\n\\\\- EUC/EUDA/CSs on the register/inventory with missing, incorrect, or out date registered attributes [e.g. Owner, Description, Location, Risk Assessment results, Business Unit, Information classification, Documentation location]\\n\\n\\\\- High risk EUC/EUDA/CSs without migration plans to move to Technology or dispensation to remain as EUC/EUDA/CSs\\n\\n\\\\- EUC/EUDA/CSs where configuration does not meet firm-wide EUC/EUDA standards [e.g. Software version, Version control, Retention, Access controls, Cell and Sheet Protection, Change control, Back-up approach, Data integrity checks, Availability during BCP event ]\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R240103',\n name: 'Inappropriate use of models'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A190A572-1948-417C-82CF-2D33E92E42C1',\n code: '1490',\n name: 'Term Sheet Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Inform client of the circumstances of the event or issue\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review term sheets and deal details agreed with the client\\n\\n',\n identify: 'Identify discrepancies between the term sheet and economic terms agreed with the client\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n code: '771',\n name: 'eTrading Adverse Market Movement Review',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of market conditions and market movements\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Market activity indicative of gapped markets that may require suspension or restriction of order submission [e.g. The price of an instrument has moved by more than 4 standard deviations of a recent price-time series]\\n\\n\\\\- Adverse or favorable price moves that require manual review before continuing trading\\n\\n\\\\- Rapid increases in volatility which require a reduction in maximum trade size\\n\\n\\\\- Messages from trading venues indicating disorderly markets that require the suspension of algorithmic trading\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4B525F91-D2E5-457E-B6FB-2D9AE753E3B1',\n code: '1170',\n name: 'Prepayment Risk Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Define next steps with relevant parties monitored as required\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review prepayment models used to predict prepayment risk [Prepayment risk is the risk of loss to the lender due to early repayment by the borrower of all of a fixed rate loan before the end of the fixed rate period]',\n identify: 'Identify where models need to be refined to improve the risk management process',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '3B2BB6EC-2280-46C2-9964-2E4EE5D04C5A',\n code: '1430',\n name: 'Availability of Funds Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Define next steps with relevant parties\\r\\n3.Agree time-frame for completion with relevant parties\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the availability of funds for a client payment [i.e. available balances and credit limits]',\n identify: 'Identify payments without sufficient available funds',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '66830ABB-5273-453F-9D28-2E55E2176548',\n code: '1227',\n name: 'Market Making Agreement Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review <span style=\"color: rgb(44, 44, 45);\">market making agreements related to </span>\\n\\ntrading activity\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Missing market making agreements.\\n\\n\\\\- Differences between internal records of market making activity and external records (e.g. Nasdaq records)\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }]\n}, {\n id: '7506D876-159F-476B-9C96-2E9DEE93D904',\n code: '1198',\n name: 'Credit Risk Limits Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review credit risk limits versus the banks risk appetite, as updated for relevant market announcements [e.g. credit downgrade, profit warning etc.]\\n\\n',\n identify: 'Identify credit risk limits requiring update\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4E5F3141-85C9-48AA-A4C8-2EE1C6D29A6B',\n code: '1770',\n name: 'Client Transaction Surveillance Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated, and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client transactions alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Valid alerts indicative of unusual patterns, suspicious transaction activity or changes in client transaction behaviour\\n- Transactions indicative of money laundering or terrorist financing\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'BE7FAE9B-BEE4-4AA9-83EB-2F67C8DF7E2B',\n code: '1550',\n name: 'Washbook Reconciliation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Washbook reconciliation breaks [e.g. non flat books]',\n identify: 'Identify breaks which require intervention, follow-up with counterparties or escalation',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9E5881E3-3978-4092-A5B7-2FFAE849D2A5',\n code: '955',\n name: 'Rebate Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review rebate rates in the trading system [Fund management fee charged on funds are often rebated back to the trading desk which are incorporated into product pricing. Using incorrect rebate rates results in erroneous pricing and potential losses.]',\n identify: 'Identify rebate rates different to those provided',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '98380EA0-7F0C-402B-A605-306CEA3DCFDA',\n code: '709',\n name: 'eTrading Algorithm Venue Registration Review',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n\\n<!-- -->\\n\\n',\n review: 'Review eTrading algorithms venue registrations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Active algorithms not registered with venue\\n\\n\\\\- New algorithms venue registrations containing incorrect/partial algorithm information [e.g., missing or incorrect attributes like owner, long code, short code]\\n\\n\\\\- New algorithm registrations that do not comply with venue requirements\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '937A256C-3A75-4451-89A7-3093B6AD1167',\n code: '1758',\n name: 'PPI Statement Generation Reconciliation Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review annual PPI statements\\n\\n',\n identify: 'Identify incorrect or missing accounts\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '0385F16C-B625-49C0-9F14-30BF7795D89D',\n code: '1689',\n name: 'Regulation W Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all trades, covered transactions and low quality assets purchased/traded with affiliates',\n identify: 'Identify all affiliate trades, covered transactions and low quality asset purchases breaching Regulation W quantitative limits [e.g. without an exemption/approval or further escalation, traded instrument prices for buy and sell transactions not in line with market prices]',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '82657E7D-1737-4EC7-9033-30DC850F4A36',\n code: '1835',\n name: 'Data Recovery Plan Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review data recovery and restoration plans of IT services and applications\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Data integrity recovery plans not tested or validated as per the required timescales\\n- Missing or inadequate Data Centre Recovery Plans (DRP)\\n- Data backups not retained in the expected location [e.g. backup data < x days to be kept onsite and offsite, backup data > x days to be kept separate from the primary data source]\\n- Data backups retained longer than the agreed timeframes or not used for the agreed recovery purposes\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '954C2678-B986-4514-83B8-30F48EA82A83',\n code: '991',\n name: 'Permanently Wall Crossed Employee Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review permanently wall crossed employees [e.g. public to private side]',\n identify: 'Identify issues with the completeness and accuracy of the permanently wall crossed list',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '8B918F41-7400-4D76-8267-310DD129D5BB',\n code: '1428',\n name: 'Collateral Agreements and Amendments Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review collateral agreements and amendments\\u00a0(maker/checker review to golden source)\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\n\\n\\\\-\\u00a0New collateral agreements, amendments and terminations not registered/updated in appropriate collateral within the required timeframe [ i.e. golden source]\\n\\n\\\\- Amended collateral terms that have not had a '4 eye' check performed prior to manual input [e.g. maker/checker for segregated validation]\\n\\n\\\\- Agreements requiring new/amended parameters not negotiated with clients [e.g. threshold, minimum Transfer Amount, Independent Amount, admissible collaterals, Margin Call calculation frequency]\\n\\n\\\\- Exceptions not resolved prior to go live of client accounts\\n\\n\",\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '96EEC9B4-90C3-4A36-B904-31A8E466B358',\n code: '1711',\n name: 'Qualified Institutional Buyer Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review counterparty transactions subject to Regulation S or Rule 144A\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n- Transactions in Regulation S (Reg S) or 144A securities with investors who have not been classified as Qualified Institutional Buyers (QIBs) [e.g. Investors who are not sufficiently sophisticated to be deemed a QIB]\\n- Transactions in Regulation S or 144A securities with investors who have been classified as Qualified Institutional Buyers (QIBs) but are missing the required documentation [e.g. Lacking a QIB certificate on file within the firms KYC system of record, Non-US investors]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }]\n}, {\n id: '88367A51-6923-4801-B6B4-31CA2EAFA297',\n code: '1445',\n name: 'Collateral Haircut Amendments review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Ensure issue is handled appropriately e.g. disciplinary action, inform regulator\\n4. Define next steps with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review collateral haircut amendments\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Haircut updates not validated after application to client account\\n\\n\\\\- Amended haircuts not approved by secondary approver\\n\\n\\\\- Amendments not reconciled with source documentation in required time frame\\n\\n\\\\- Exceptions not communicated to relevant stakeholders and remedial actions not taken in the required timeframe [e.g. custodian haircuts applied are different to regulatory minimum requirements]\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '7359AEA8-CEF0-43F8-9025-31ED207FF5B5',\n code: '1492',\n name: 'Manual Transaction Entry Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review manually entered or amended transactions\\n\\n',\n identify: 'Identify input errors [e.g. inaccurate economic trade details]\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n code: '1077',\n name: 'eTrading Trade Flow Validation - Order State Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of orders not immediately filled, killed or cancelled\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Inactive orders not being executed in line with order instructions [e.g. order intends to trade every minute but trades every hour, WVOL order intended to trade as 1% of market volume but only trades as 0.01% of market volumes]\\n\\n\\\\- Working orders where expected status is different from actual status\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '031FBA10-8B1E-4F84-9A1F-33BFE01B62F8',\n code: '1167',\n name: 'Investment Portfolio Review ',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review securities in breach of Treasury investment policy [Treasury is responsible for the management of the investment portfolio by buying and selling securities in line with this investment policy]\\n\\n',\n identify: 'Identify securities in breach of the investment policy [e.g. the types of securities to hold (including own debt) ,tenor and concentration limits of allowable securities]\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '85C88F8E-254C-44DC-8E8C-33D71F7AE3CE',\n code: '1774',\n name: 'Activity in Customer Account Statement Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Investigate rationale for any late, missing or incomplete tasks\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review customer account activity statements [e.g. wire remittance, wire receipts, security movements and trade activity]\\n\\n',\n identify: 'Identify one or more of the following in relation to customer account activity statements:\\n\\n- activities that have not been validated\\n- activities that are missing from statements\\n- activities that do not match customer statements\\n- accounts where the business holds assets or cash on behalf of the customer but the statement of balances has not been distributed to them\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '2807C7D0-7821-4BE5-829D-342C27D27CCE',\n code: '1447',\n name: 'Trade Confirmation Processing Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n4. Investigate rationale for any late, missing or incomplete tasks\\n5. Inform counterparty on the other side of the trade\\n6. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n<!-- -->\\n\\n',\n review: 'Review trades uploaded, integrated or validated in FO and MO / BO systems as well as incoming and outgoing confirmations and manually drafted confirmations.\\n\\n',\n identify: 'Identify one or more of the following in relation to trade confirmations:\\n\\n- Confirmations that remain outstanding for a period greater than the agreed threshold or in breach of SEC rule 15a-6\\n- Confirmation issued using templates which are not updated or tailored to specific client, product or legal requirements\\n- Trade bookings that have not fed downstream confirmation systems\\n- Trade bookings with missing confirmations for a period greater than the agreed threshold\\n- Inaccurate trade details listed in confirmation documentation, either paper or electronic [e.g. value day, currency, volume, amount, buy/sell side, counterparty or price]\\n- Confirmations which have been processed incorrectly [e.g. confirmations signed by individual without appropriate signing authority]\\n- Exceptions to the confirmation process which require review, intervention or escalation with counterparties\\n- Confirmations issued to internal trades which failed settlement\\n- Confirmations that have not been through an independent 4-eye review process\\n- Static client data feeding confirmations systems don\\u2019t match client contact details\\n- Counterparty contracts that remain unconfirmed or unacknowledged with the client for a period greater than the agreed threshold\\n- Suppressed confirmations without appropriate rationale\\n- Drafted confirmations awaiting feedback from internal stakeholders [e.g. Legal] for a period greater than the agreed threshold\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140308',\n name: 'Inaccurate accrual of payables and receivables'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ETOPS',\n name: 'eTrading Operations'\n }, {\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A6A4A69E-E2A8-4219-8F08-348FCEDBB229',\n code: '1754',\n name: 'Letter Format Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review customer communications [e.g. letters and statements]',\n identify: \"Identify one or more of the following issues with letters, statements and notices to customers:\\n- Customer statements and letters that do not have the correct format or spacing and are not validated\\n- Customer is not able to view all elements of their statements in an appropriate manner\\n- Content of notices [e.g. Default Sums Notice (DSN), Notice of Arrears (NOA)] not matching the firm's system records and layout of notices that does not match the firm's master templates\",\n risks: [{\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '4EC8DA62-70D5-479D-ABAA-353FC991A55D',\n code: '1482',\n name: 'Manual Settlement Instruction Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed manual settlement payment instructions and standard settlement instructions (SSI) held in the firms systems',\n identify: 'Identify discrepancies between the proposed settlement instructions and existing SSIs',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '07F327B5-9282-4788-A5CF-3562ABB5E4D9',\n code: '1788',\n name: 'Non-Standard Trade Pre-approval Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed non-standard trades\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Non-standard trades with terms that require pre-approval [e.g. due to size, the client or counterparty, the length of extended settlement etc]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '982D2D77-5076-4D8B-8DEB-357150216EF4',\n code: '406',\n name: 'Benchmark Trading Conflict Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor benchmark contributions and related trades [e.g. Contribution Supervisors & Traders are to be two separate entities. A trading desk contributing to a benchmark should not trade an instrument referencing the same benchmark, surveillance of emails and recorded lines]',\n identify: 'Identify trades on a benchmark from desks which also contribute to that benchmark\\r\\n\\r\\n\\r\\n\\r\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F64F5801-352E-43A7-947F-35A81A04968E',\n code: '1473',\n name: 'Counterparty Fee & Commission Post Payment Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review that counterparty fees and commissions are charged appropriately\\n\\n',\n identify: 'Identify bookings where fees and commissions charged to counterparties are inaccurate, incorrect or untimely\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'E8C06383-A32E-40A2-A42D-35E5F710D4D6',\n code: '1752',\n name: 'Campaign Selection And Execution Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review customer or product campaigns\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Campaigns not yet signed off by all stakeholders as required by internal policy\\n- Proposed campaigns which do not reflect the original request\\n- Required campaign evidence and audit trail has not been saved down\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '7EB792AA-9C41-4C5B-AFB6-3639EFFD0D16',\n code: '1262',\n name: 'Mandate Breach Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Define next steps with relevant parties \\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n5. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed',\n review: 'Review mandate breaches',\n identify: 'Identify unapproved mandate breaches',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '8322EEB5-129A-4FD5-BC34-363F326BA6E8',\n code: '985',\n name: 'Transfer Pricing Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor inter-desk trades between Primary and Secondary trading desks',\n identify: 'Identify instances of off-market pricing [e.g. not in line with Bloomberg fair value, interdealer broker screens etc.]',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '89399DBC-3936-4BAC-BB4B-36656505D280',\n code: '1010',\n name: 'Roadshow Marketing and Disclaimers Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary ',\n review: 'Review roadshow marketing material and disclaimers pre-roadshow',\n identify: 'Identify all marketing materials and disclaimers to be used during the roadshow which may be unfair, unclear or misleading or do not adequately detail the risks involved in a manner that is appropriate and proportionate to the target client and risk profile',\n risks: [{\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '1E033154-FBE8-4ACC-808A-368FA29BD5B5',\n code: '1598',\n name: 'Risk Exception Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review risk exceptions and rejections [e.g. VaR calculation Issues, stale data etc.]',\n identify: 'Identify remedial actions not completed in a timely manner',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '40AAD37F-9F7C-46DB-9737-36A618DA91C5',\n code: '1516',\n name: 'Margin Call Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of reconciliations between the central depository balances and those held by counterparties ',\n identify: 'Identify breaks which require investigation or escalation',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '5B5F0207-A4E6-4ECA-BC3F-378EC9B5A1AE',\n code: '1641',\n name: 'IT Asset Disposal Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review damaged, expired and electronic media marked for disposal\\n\\n',\n identify: 'Identify media that has not been destroyed, securely disposed of or demagnetised appropriately to prevent data leakage\\n\\n',\n risks: [{\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'CDE158CE-24B7-4A60-B202-37B307F5D705',\n code: '1731',\n name: 'Economic Downturn Forecasting Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review economic downturn forecasts and mitigation plans\\n\\n',\n identify: 'Identify mitigation or impairment plan or actions that need revision\\n\\n',\n risks: [{\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'EAD7124C-3514-4B06-800B-37B5BD512041',\n code: '1661',\n name: 'Mandatory Training Review (Compliance)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review mandatory training completion status [e.g. training report or examination results].\\n\\n- Incomplete or overdue Group mandated training [E.g. Sanctions and Embargoes, Anti-money Laundering (AML), Anti-bribery & Corruption (ABC), Anti-terrorist financing (ATF), Information Security]Anti-money Laundering (AML), Anti-bribery & corruption (ABC), Anti-terrorist financing (ATF), Information Security]\\n- New joiners and/or movers who have not yet received or completed the necessary training in a timely manner.\\n- Incomplete and overdue training that has not been escalated and investigated.\\n- Product, service or role specific training that has not been completed [e.g. investment services, sale and distribution of new products, training specific to algorithmic trading, etc]\\n- Missing plan to deliver upcoming training as part of the annual book of work.\\n\\n<!-- -->\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- New joiners and/or movers who have not yet received or completed the necessary training in a timely manner.\\n- Incomplete and overdue training that has not been escalated and investigated.\\n- Product, service or role specific training that has not been completed [e.g. investment services, sale and distribituion of new products, training specific to algorithmic trading, etc]\\n- Missing plan to deliver upcoming training as part of the annual book of work.\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R160313',\n name: \"Inappropriate trading on employee's personal account\"\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '563C84F2-B4BD-4E68-8FD0-37BB799A56CE',\n code: '506',\n name: 'Investment Recommendations Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review inventory log of investment recommendations and related conflict of interest disclosure\\n\\n',\n identify: 'Identify investment recommendations and related conflict of interest disclosures that have not been logged [Under the EU Market Abuse Regulation investment recommendation distributed to 15 or more clients must be logged e.g. when the recommendation was made (and by whom), direction of recommendation (Buy / Sell / Hold), price at the time the recommendation was made , target price etc.]\\n\\n',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '0F7B914A-122F-4DB6-9FCD-37FDD9964513',\n code: '759',\n name: 'eTrading Trade Flow Validation - Unexpected Fills Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of eTrading fills\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Trades that are filled but do not match orders on the trading book\\n\\n\\\\- Erroneous fills caused by a replay of fills from a previous trading session\\n\\n\\\\- Erroneous fills caused by the misrouting of orders\\n\\n\\\\- Erroneous fills caused by the venue transmitting an order confirmation to an incorrect counterparty\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n code: '880',\n name: 'Market Data Jump Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review significant market data moves [changes to market data can be a result of input error as well as large market moves and can cause pricing errors, changes to risk measures (e.g. delta), affect client valuations etc.]\\n\\n',\n identify: 'Identify significant data moves impacting trading book positions\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A7829201-253B-4DB3-A794-38C7B17F7778',\n code: '1669',\n name: 'Written Communications Surveillance (Compliance)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Determine circumstance of suspicious and / or irregular activity\\n3. Define next steps with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor written communication as per bank policy\\n\\n',\n identify: 'Identify any written communication [e.g. e-mail, instant message, SMS] breaching regulatory and legal obligations [e.g. collusive and other anti-competitive behaviour, non-compete collusion, facilitating client misconduct, safeguard client information, insider trading etc]\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n code: '1037',\n name: 'Client Activity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review client trading activity',\n identify: 'Identify deviations from agreed trading strategy and portfolio diversification requirements [e.g. style drift, to ensure that the pre-agreed trading strategy and risk profile of the portfolio is maintained etc.]',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'EAEE3B03-0FD9-4F8B-BB40-3917B906E066',\n code: '1727',\n name: 'Customer Card Fulfilment Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the results of a reconciliation between card fulfilment requests and cards dispatched to customers',\n identify: 'Identify where fulfilment requests have not been processed and cards have not been sent to customers',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '711510AB-A08E-4D5A-8BCD-3926EA3168E2',\n code: '1168',\n name: 'Segregation of Trading Books Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties monitored as required\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review inappropriate use of trading books [e.g. classifying securities Held for Trading (HFT) as Available for sale (AFS) or Held to maturity (HTM) which may not be frequently reviewed and require different accounting treatment etc.]\\n\\n',\n identify: 'Identify where books need to be reclassified [e.g. from HTM to HFT] and prior financial statements need to be restated\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '0A157C92-5F64-4B54-8D92-392F8DB5E746',\n code: '1108',\n name: 'Structured Trade Set-up Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new structured trade instrument set-ups\\n\\n',\n identify: 'Identify products not set-up in line with legal documentation or where legal documentation needs correction\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'DA83BC84-392D-4782-8431-3B16FE96A670',\n code: '1423',\n name: 'Depository / Custodian Reconciliation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Depository / Custodian reconciliation breaks\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Missing reconciliations between internal system of record and external records or between internal system of record and external reports [e.g. Agent or Custodian, Central Security Depository (CSD), International Central Securities Depository (ICSD) such as Euroclear and Clearstream]\\n\\n\\\\- Depository / Custodian reconciliations not reconciling key attributes such as trade position, stock balances, cash balances etc\\n\\n\\\\- Unresolved reconciliation breaks with missing or inadequate justification or investigation results\\n\\n\\\\- Unresolved breaks not escalated according to policies and procedures\\n\\n\\\\- Unresolved breaks not escalated in a timely manner or to the relevant parties as per the firm's policies and procedures\\n\\n\\\\- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n\\n\",\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '5DA5FFA6-CE69-41EB-8105-3B61B831BF3C',\n code: '1508',\n name: 'Tax Reporting Preparation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review information uploaded to tax systems to enable accurate tax calculations (e.g. security information, client data, tax rate).\\n\\n',\n identify: 'Identify incorrect tax relevant data [e.g. inaccurate setup of static data in tax reporting systems, inaccurate setup rules for data extracts from relevant systems and incorrect implementation of required procedures to identify relevant reportable data]\\n\\n',\n risks: [{\n code: 'R220201',\n name: 'Inaccurate tax calculation, reporting, collection or payment'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '2610998E-2023-423A-A4F2-3B6BBF5AB221',\n code: '1681',\n name: 'Payroll Calculations Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Investigate rationale for any late, missing or incomplete tasks\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Payroll Calculations (including off-cycle payments)\\n\\n',\n identify: 'Identify one or more of the following in relation to payroll calculations:\\n\\n\\u2022 Incomplete or inaccurate data in the payroll system [eg: incorrect wage type amounts, changes to employee records, tax amounts, share vesting payment amount/date]\\n\\n\\u2022 Discrepancies in payroll reconciliations\\n\\n\\u2022 Returned payments, stop payments and other exception requests that do not have appropriate approval\\n\\n',\n risks: [{\n code: 'R090103',\n name: 'Breach of employment legislation'\n }, {\n code: 'R090204',\n name: 'Payroll or benefit delivery failure'\n }],\n riskInventories: [{\n code: 'HR',\n name: 'HR'\n }]\n}, {\n id: 'A55C55A1-71A7-4119-A9E1-3BEBA4C25685',\n code: '1712',\n name: 'Reputational Risk Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed transactions, activities and client relationships which have high or potentially high reputational risk\\n\\n',\n identify: 'Identify proposed transactions, activities and client relationships which cannot be approved due to reputational risk being outside of thresholds or where approval can only be granted with additional controls or conditions in place\\n\\n',\n risks: [{\n code: 'R180401',\n name: 'Know your customer (KYC) failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: 'F15490E3-6DFC-48DF-B860-3BFB6BCA0D08',\n code: '1648',\n name: 'Network Management Security Processes and Equipment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Network Management Security Processes, Equipment and configuration standards\\n\\n',\n identify: 'Identify inadequate or incorrect network security mechanisms or processes [e.g. out of date malware software or signatures, out of date intrusion detection signatures, incorrect workstation configurations, authentication process not being applied, missing equipment, incorrect access permission to network equipment and reference tables, incorrect or out of date firewall configuration, incorrect network segmentation configuration, incorrect network zoning, incorrect de-militarized zone (DMZ) configuration, sub-nets not being monitored correctly, unapproved network equipment]\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '9B355CA0-E088-41F2-88DD-3C0D4CB9BEEF',\n code: '1848',\n name: 'Over The Counter (OTC) Derivatives Mandatory Clearing Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Over The Counter (OTC) derivative transactions requiring mandatory clearing\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Over The Counter (OTC) derivative transactions marked as requiring mandatory clearing [e.g. trades which meet criteria under Dodd Frank / EMIR regulation or CFTC/ SEC Made Available to Trade (MAT) ] but not sent for Mandatory Clearing at Derivatives Clearing Organization (DCO)/ Central Counterparty Clearing (CCP)\\n- Missing investigation or escalation of exceptions\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1604A2EE-EC6A-4B66-89BF-3D00A96784D7',\n code: '994',\n name: 'Capital Allocation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new issuance proposal [e.g. proposed pricing, Return on equity, Utilisation of risk-weighted assets]',\n identify: 'Identify metrics which indicate that a deal is outside of capital allocation thresholds',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '7E6CA2B2-478F-4FD2-AEEE-3D12EB6DC584',\n code: '998',\n name: 'Deal-related Hedging Activity Monitoring',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required',\n review: 'Review hedging activity for upcoming deals [e.g. a cross-currency swap GBP to EUR, rate lock etc.]',\n identify: 'Identify hedging activity not in line with policy [e.g. inappropriate use of MNPI, deviations from tolerances]',\n risks: [{\n code: 'R140214',\n name: 'Hedging error'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '037C04F4-E47B-47F2-B5C4-3D159C73682F',\n code: '68',\n name: 'Dummy Counterparty Booking Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of suspicious and / or irregular activity\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review trades booked to dummy counterparties\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Dummy counterparty trade bookings that are not rebooked to the real counterparty by the end of day\\n- Unresolved aged dummy counterparty bookings\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '1C5051A8-ED39-4F33-9776-3D6FFC23247E',\n code: '1839',\n name: 'Privileged Access Request Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review privileged access request\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Requests for excessive access rights or excessive time for the stated purpose of the request [e.g. to resolve IT incident, ongoing privileged access]\\n- Insufficient information to support the privileged access request\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R161001',\n name: 'Misuse of privileged access rights'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '9CC344F2-8C70-4E68-9090-3DB804011439',\n code: '1744',\n name: 'Third-Party Payment Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review payments paid or collected by a third-party supplier of payment processing capabilities',\n identify: 'Identify one or more of the following:\\n- Incorrect file formats\\n- Unresolved failed payments\\n- Payments applied to or from incorrect accounts\\n- Delayed or unexecuted payments',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '6CCE3F1F-D528-46CA-8ADB-3EA9812B5ABE',\n code: '47',\n name: 'Internal Counterparty Trade Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades created, amended or closed with internal counterparties\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Unjustified or unrecognised internal counterparties\\n- Invalid internal counterparties bookings [e.g. not related to corporate actions etc]\\n- Trades consistently conducted between traders on different desks\\n- Levels of internal counterparties usage breaching internal thresholds\\n- IC's labelled dormant which have not been decommissioned\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0BFBCB9C-F9DF-4F51-81D9-3F1F48A2F086',\n code: '1271',\n name: 'Post-trade Allocation review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review daily post trade allocation reports',\n identify: 'Identify allocations that have not been made in an appropriate manner. Likely exceptions are for minimum economic sizes. \\r\\n\\r\\n',\n risks: [{\n code: 'R140207',\n name: 'Trade allocation error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '123D42B1-087A-4AF0-9CBA-3F43F2A99028',\n code: '1814',\n name: 'Complaints Metrics Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review complaint metrics\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Trends in complaints indicating a degradation in customer service [e.g. Customer service issues relating to specific products, regions, client set etc]\\n- Aged customer complaints metrics indicating a degradation in complaint management\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n code: '1816',\n name: 'eTrading Business Continuity Plan Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Algo-Trading Business Continuity Arrangements\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Missing governance framework to ensure the development and deployment of business continuity arrangements\\n- Business continuity arrangements for algorithmic trading system not documented in business continuity plans\\n- Missing or incomplete stress scenarios to ensure the resilience of algorithmic trading systems\\n- Missing procedures pertaining to the relocation of algorithmic trading systems to back-up sites\\n- Kill switch procedures not captured in business continuity plan\\n- Instances of impacted market conditions and outstanding orders and positions due to algorithmic trading systems shutting down\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '671CC155-EC69-480A-88AD-3F7BCDA728D5',\n code: '1464',\n name: 'Counterparty Fee & Commission Charge Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary \\r\\n',\n review: 'Review counterparty invoices or charges and payments made',\n identify: 'Identify payments to counterparties where invoices or charges deviate from the agreed rate card',\n risks: [{\n code: 'R160404',\n name: 'Excessive charges or fees'\n }, {\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }, {\n code: 'R140307',\n name: 'Inaccurate fee calculation or invoicing (unintentional)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '869BB97D-1D72-4C82-93F8-4036CFF024E2',\n code: '1393',\n name: 'Wire Payments Process and Release Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the timeliness and authorisation status of processed and released wire payments\\n\\n',\n identify: 'Identify wire payments that have been delayed or not undergone a 4-eye review [i.e. end-of-day reconciliation of manual wire payments, review of systemic queue]\\n\\n',\n risks: [{\n code: 'R100201',\n name: 'External theft or robbery'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'DA14A08C-1299-49EE-9D2F-4071BE520995',\n code: '1510',\n name: 'Forecast to Actual Cash Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review previously forecast trade movements vs. received agent statements\\n\\n',\n identify: 'Identify adjustments needed to the nostro balance due to the difference between forecast and actual trade movements on value date\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '6978D1F4-C801-44D8-B94F-40D8F8D6F856',\n code: '1719',\n name: 'Balance And Money Transfer Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\n2. Complete and / or request completion of outstanding tasks or approvals \\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required',\n review: 'Review balance transfers and money transfers',\n identify: 'Identify one or more of the following:\\n- Accounts that have not been charged the correct balance transfer fees\\n- Balance transfers sent to the same beneficiary account with the same transaction date and the same value\\n- Balance transfers fees applied to a customer\\u2019s account with the same value and same transaction date but don\\u2019t have the corresponding additional balance transfer',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R140321',\n name: 'Failure to apply customer debit or credit payments accurately or on time'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '51BC4D1D-D9B2-4039-8483-41335879B4A0',\n code: '784',\n name: 'Funds Due Diligence Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review due diligence on new funds used as an underlying product [e.g. capital base, ownership issues, investment mandate]\\n\\n',\n identify: 'Identify funds unsuitable for trading\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '99E3607A-E731-421A-9320-41404F9DD7D6',\n code: '1765',\n name: 'Customer Communication Fullfilment Insert Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '.',\n review: 'Review customer fulfilment communcations [e.g. statements, new and replacement cards, PINs]',\n identify: 'Identify customer fulfilment communications that have one or more of the following:\\n- missing required inserts\\n- incorrect inserts\\n[examples of inserts are revised terms and conditions, implications of persistent debt, implications of late payments]',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '467DBF09-AF66-41BE-B414-416FADA19963',\n code: '966',\n name: 'Funding Rates Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review funding rates provided by Treasury when pricing trades ',\n identify: 'Identify unexpected changes in funding rates [To also assess the P&L impact between the current rate and the level when the trade was initially executed to determine whether the trade needs to be unwound]',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '7694E17B-1604-4410-8C12-418ABBDF1E81',\n code: '1273',\n name: 'Annual Top 5 Broker Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review ranked brokerage and venue trading statistics by value ',\n identify: 'Identify top 5 brokers and venues by value',\n risks: [{\n code: 'R200102',\n name: 'Third-party documentation deficiencies'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'E2C6D1FB-7D44-4C06-970B-41AA00F4FDBA',\n code: '1383',\n name: 'New Trade P&L and Accounting Treatment Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n3. Define next steps with relevant parties\\n\\n<!-- -->\\n\\n',\n review: 'Review P&L and accounting treatment of new trades\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Inadequate commentary for new trade P&L above defined thresholds\\n\\n\\\\- Missing maker-checker review of new trade P&L that is above defined thresholds\\n\\n\\\\- Missing approval for trades or deals that have fees above defined thresholds\\n\\n\\\\- Missing documentation and checker review regarding accounting treatment of new trade P&L that is above defined thresholds\\n\\n\\\\- MIssing review of reserve calculations for new trades (e.g where the present value of annual fees embedded in the product have been taken upfront in the P&L)\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n code: '1586',\n name: 'Market Risk Limits Adherence (Risk)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity versus assigned market risk limits, including intra day limits, limit utilisation and temporarily approved limit extensions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Market risk limit breaches without pre-approval [e.g. risk sensitivities, exposure in terms of dollar value, VaR, underwriting Limits broken down by instrument, algorithm, market]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ETRISK',\n name: 'eTrading Risk'\n }, {\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'E3967405-0EDF-4703-892A-41E98BF148B6',\n code: '1005',\n name: 'Issuer Categorisation Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the Issuer categorisation list [e.g. a non-frequent issuer typically require less funding and so is more sensitive to their funding needs and requires more advice from the Origination team. This information is of a private nature so may fall under the MNPI (Material Non-Public Information) rules]',\n identify: 'Identify changes to Issuer status [e.g. frequent and non-frequent issuers]',\n risks: [{\n code: 'R180401',\n name: 'Know your customer (KYC) failure'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '504204A3-C3FF-4230-9719-42257FBD981C',\n code: '1783',\n name: 'Volcker Rule - Metrics Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review risk and finance metrics related to the Volcker rule\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Volcker limit utilisations or breaches which require escalation\\n- Changes to Volcker limits without sufficient or documented rationale\\n- Metrics for Risk and Position Limits [e.g. Net open positions, VAR, position limits, stress VAR] or Risk Factor Sensitivities [e.g. maturity, interest rates or volatility] which indicate excessive risk taking by trading desks\\n- Source of revenue metrics which indicate profits coming from proprietary positions rather than market making or hedging activity [e.g. Comprehensive P&L Attribution, prior positions and residual P&L; Inventory Ageing or Inventory Turnover metrics; Customer Facing Trade Ratio metrics]\\n- Volcker metrics with data quality issues\\n- Trading Assets and Liabilities positions breaching defined thresholds\\n- Reasonably Expected Near-term Demand [RENTD] analysis showing breaches of defined thresholds\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190406',\n name: 'Breach of the Volcker requirements of the Dodd-Frank Act'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n code: '765',\n name: 'eTrading Risk Control Limits Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n4\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review pre and post trade risk limits across proprietary and third-party platforms [e.g. Order capture limits, P&L and market risk limits, trading flow validation limits, adverse market protection limits]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Limit values that are not appropriately set given expected or actual activity levels\\n- Limit values that are not appropriately set given new or amended strategies or products\\n- Limit values that are not appropriately calibrated to external requirements [e.g. Regulatory or trading venue requirements or limits]\\u00a0\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160807',\n name: 'Market disruption'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R240202',\n name: 'Rogue algorithms (intentional)'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A6876B11-16E2-4E52-99DC-429B2CEC1CA0',\n code: '1414',\n name: 'Upcoming Derivatives Expiries Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review upcoming derivative expiries\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Incomplete, late or missing reviews of derivatives\\u00a0[e.g. Options, Futures, Swaptions etc.] expiring within a day, a week or other period as prescribed by firm policies and or procedures requiring action from Front Office and or Back office\\u00a0[e.g. Terminations, rolls, unwind, exercise, expiration, allocation amendments etc.]\\n\\n\\\\- Missing, inadequate or incorrect communication [e.g. wrong template, e-mail instead of verbally ] of upcoming derivatives expiries to Front Office and or Back Office\\n\\n\\n\\n\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1E578BF1-F21D-4A3F-89C8-42F6370539C2',\n code: '1693',\n name: 'MiFID II Costs and Charges Disclosures Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review ex-ante and ex-post costs and charges disclosures provided to clients\\n\\n',\n identify: 'Identify one or more of the following with respect to the ex-post or ex-ante costs and charges statements:\\n\\n- Statements that are not fair, not clear or are misleading\\n- Statements with completeness or accuracy issues\\n- Statements that have not been delivered to clients in line with frequency requirements as required by MiFID II\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160404',\n name: 'Excessive charges or fees'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '3B570ED2-081C-4122-9448-43AF6DBB1E83',\n code: '1523',\n name: 'End of Day Agency Trading Book Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review agency trading book end of day positions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Agency book positions that are not flat\\n- Flat positions where underlying trades have been booked against an error book/account\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '5FD1A0C3-903D-4020-8610-43CC9F485105',\n code: '1666',\n name: 'Firm Transaction Surveillance Alert Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review\\u00a0automated transaction surveillance alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- uninvestigated automated surveillance alerts\\n- uninvestigated escalated surveillance alerts\\n- valid alerts indicative of unusual patterns, suspicious transaction activity or changes in firm transaction behaviour [e.g., wash trades, front running, layering and spoofing, excessive volume at close, insider trading, disclosure of material non-public information (MNPI) etc.]\\n- transactions indicative of money laundering, bribery and corruption or terrorist financing\\n- Suspicious Transaction and Order Report (STOR), Suspicious Activity Reports (SARs) or Suspicious Transaction Report (STR) that have not been filed with the relevant national agency\\n- Breaches of Sanction and Embargo obligations that have not been filed with the relevant national agency\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n code: '1378',\n name: 'Model Inventory Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review models and analytical tools used by a lines of business or function\\n\\n',\n identify: 'Identify models or analytical tools which reach the definition of a model and require capturing in the firm model inventory.\\n\\n',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '406A19AC-1BA2-4B2A-9E91-44D83BDED7C1',\n code: '1763',\n name: 'Trade Ideas Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all trade ideas submitted to internal trade idea monitoring systems\\n\\n',\n identify: 'Identify inappropriate trade ideas and incomplete submissions [e.g. appropriate rationale not documented, in accordance with regulatory rules, submitted trade ideas that are contrary to pre-described guidelines etc.]\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: 'B1B3E7E0-DF98-4217-874C-45E7BF324D9C',\n code: '1366',\n name: 'Cross Trade Price Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed cross trades and current market price for the security',\n identify: 'Identify fair market price for the proposed cross trade',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'F1540D97-69B8-4D00-9269-4671BCC41BB8',\n code: '1789',\n name: 'Non-Standard Trade Suspicious Behaviour Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review non-standard trade reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Non-standard trades with suspicious patterns of behaviour or activity\\n- Non-standard trade and position reconciliation breaks indicative of suspicious activity\\n- Non-standard trades with incorrect or suspicious parameters [e.g. extended settlement, special instructions, higher mark-up, non-compliance with regulatory requirements etc.]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '7417363A-4953-4F49-8458-46827D39E9F8',\n code: '1498',\n name: 'KYC System Reconciliation',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review clients recorded in firm systems and their Know Your Customer (KYC) status',\n identify: 'Identify clients that do not have the applicable Know Your Customer (KYC) approvals in place',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'E990BFDA-A264-4421-ADC0-46B543237D19',\n code: '1777',\n name: 'Personal Account Dealing Certifications/Disclosures Review ',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Agree timeframe for completion with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all personal account dealing certifications/disclosures\\n\\n',\n identify: 'Identify the following:\\n\\n- Certifications/disclosures not completed in a timely manner\\n- New or previously undisclosed personal dealing accounts\\n- New or previously undisclosed related party dealing accounts\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'FE81DDF4-B0AD-4DB8-AC06-46CD4FF5DF91',\n code: '1643',\n name: 'IT Change Management Request Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review IT change requests, tickets and templates\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Change requests with insufficient or no rationale as to why they have been accelerated\\n\\n\\\\- Emergency change requests that have not been authorised or were approved outside of the agreed planned end date\\n\\n\\\\- Emergency changes created for non - emergency change scenarios\\n\\n\\\\- Instances where the emergency change process was initiated without a valid rationale\\n\\n\\\\- Change requests that are not in line with the firm's Group policy\\n\\n\\\\- Documentation around change requests such as change request tickets and requirement for change documents, is inadequate [e.g. does not include concise descriptions of changes, impact of the change and mitigating actions to reduce the impact]\\n\\n\\\\- IT change requests [including emergency change requests] without a valid rationale\\n\\n\",\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '0D33D60C-4A40-4D9E-9F72-473810DB4168',\n code: '678',\n name: 'New Product Approval',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new products, changes to existing product or target markets, and associated approvals [e.g. all due diligence is completed, legal documentation approved, conflicts of interest cleared, any limited trade restrictions imposed, for example a volume cap on a new trade payoff etc.]\\n\\n',\n identify: 'Identify missing new product approvals / rejections / proposed amendments\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EA42F9E6-0DCB-452A-BA12-4747AFAB61BA',\n code: '527',\n name: 'Know Your Customer (KYC) Check',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed trades versus KYC and Anti Money Laundering (AML) approvals',\n identify: 'Identify any proposed trades without an active KYC/AML review and sign-off in place ',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E1A01A63-838D-4135-B190-47D145D80A21',\n code: '1677',\n name: 'Employee Due Diligence Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Define next steps with relevant parties\\r\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\r\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator',\n review: 'Review all new hires and existing employees requiring background screening',\n identify: 'Identify any new hires or existing employees not selected or failed background screening [e.g. impacting reputational risk via social media etc]',\n risks: [{\n code: 'R090205',\n name: 'Recruitment, hiring and onboarding failure'\n }],\n riskInventories: [{\n code: 'HR',\n name: 'HR'\n }]\n}, {\n id: '542C9C13-100F-4D40-B614-47E4599CCC9F',\n code: '1738',\n name: 'Notice of Variation Approval Review',\n type: 'Detect',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review variations to terms and conditions and associated approvals\\n\\n',\n identify: 'Identify inaccurate changes to terms and conditions which cannot be approved and would lead to unenforceable contracts\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'FBBF49ED-2509-4B92-8959-482E97FC5B7D',\n code: '1545',\n name: 'System-Enforced Payment Process Stop Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review the list of stopped payments ',\n identify: 'Identify payments that should have been processed but have been erroneously stopped',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '44B93544-C8FF-4861-A89B-484152B6AD6C',\n code: '1817',\n name: 'Crisis Management Plan Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Crisis Management Plans\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Critical Business Services (CBS) without a documented Crisis Management Plan (CMP)\\n- Crisis Management Plans missing plan components [e.g. scenario checklists, crisis management communication plan, contact information lists of staff and vendors, workforce recovery plan]\\n- Changes to the Critical Business Services that have not been incorporated into the Crisis Management Plan (CMP) and or not appropriately reviewed or approved\\n- Building and Floor Evacuation plans that have not been tested within the agreed time frame or results from evacuation plans that have not been logged in the relevant Crisis Management Systems\\n- Business units that own critical processes without an implemented, maintained and tested crisis management structure\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '12025323-5404-4F16-864D-484E01A8533D',\n code: '710',\n name: 'eTrading Pre-deployment sign-off Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Define next steps with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review the sign-offs/approvals required for the pre-deployment of algorithms.\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Instances of missing sign-offs/approvals, or incorrect personnel performing sign-off/approval\\n\\n\\\\- Instances where approvals have not been sought in-line with firm policies and procedures\\n\\n',\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D030A399-6D71-4995-9BC8-48527D7AF6AA',\n code: '1830',\n name: 'Third-Party Performance Review (Technology)',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review third-party [e.g. vendors, suppliers, service providers] performance versus the service level agreement (SLA) [e.g. using metrics, due diligence questionnaires, periodic risk assessments or other means]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Events or issues indicative of a deficient or deteriorating control environment [e.g. qualified internal or external audit reports, fourth party performance degradation or failure, BCP test failure]\\n- Breaches or events outside of thresholds stipulated in the SLA\\n- Inadequately logged breaches\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '09E82D78-2B3D-484D-A95E-48D9F909188C',\n code: '1585',\n name: 'Market Data Quality Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review market data feed quality\\n\\n',\n identify: 'Identify completeness and accuracy errors with market data which may impact downstream consumers of the data\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '1D84F6A5-A77A-4837-BE22-49826270CE17',\n code: '897',\n name: 'Benchmark Methodology Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review benchmark calculation methodology and frequency\\n\\n',\n identify: 'Identify methodologies requiring an update [e.g. due to complaints, due to changes in economic reality, changes in data liquidity, macro factors]\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '714EF36B-39F6-43FE-ABE6-49C0F8B2C163',\n code: '701',\n name: 'eTrading Pre-Deployment Assessment & Approval Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Define next steps with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review the material change\\u00a0/ new algorithm assessment.\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- New algorithms or material changes to existing algorithms that have not followed the firm's material change and pre-deployment policies.\\n\\n\\\\- Instances of missing sign-offs/approvals, or incorrect personnel performing sign-off/approval.\\n\\n\",\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '61869C82-AA9B-4CE6-9BFA-4A03759E58D9',\n code: '907',\n name: 'Staffing Levels Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties\\n2. Agree timeframe for completion with relevant parties\\n3. Ensure supervisor is comfortable with mitigation actions and residual risk\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review staffing levels (including attrition)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Instances where staffing levels are not able to complete current and future work plans adequately\\n\\n\\\\- Instances where an assessment of resource and staffing volumes and capabilities has not been performed or documented [e.g. assessment to address existing expertise or hiring requirements]\\n\\n\\\\- Governance forums reviewing staff headcount (including attrition) that have not been held\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: '0F1F46FB-60D7-48EE-B082-4B0F3B9B0BEC',\n code: '1584',\n name: 'Manual Override Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Semi-Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instruments that have a manual market data override [e.g. applying zero implied volatility to a long Out-of-the-Money option position coming into expiry, so that the option has no Greeks i.e. the option premium has been written off and desk does not want to delta hedge the option any more]\\n\\n',\n identify: 'Identify market data overrides that introduce a mis-booking or pricing risk [intentional or not] and determine whether the manually overridden rates have been through a secondary (4-eyes) review and are periodically assessed\\n\\n',\n risks: [{\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n code: '60',\n name: 'Market Risk Limits Adherence',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity versus assigned market risk limits [including intra day limits, limit utilisation and temporarily approved limit extensions] and associated supervisory reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Market limit breaches without pre-approval [e.g., unauthorised trading]\\u00a0\\n- Market limit breaches that have not been appropriately explained by trader commentary\\n- Market limit breaches which have not been communicated to relevant business areas for approval or escalation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '093FF1E6-70EE-48EE-AE33-4B557CFDAA87',\n code: '1740',\n name: 'PPI Annual Statement Template Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the PPI statement template\\n\\n',\n identify: 'Identify one or more of the following in the PPI statement template:\\n\\n- Statements populated using an incorrect template\\n- Instances of template non-compliance with key regulatory requirements\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'DDB70C83-53E9-42AA-97FA-4B6D2FBB89A4',\n code: '971',\n name: 'US 15-a6 Registration Review ',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review list of non-US staff\\n\\n',\n identify: 'Identify non-US staff that may have direct dealings with US institutional investors [e.g. for the purposes of attending roadshows or investor meetings in the United States staff are expected to comply with Rule 15a-6 in order to be within the registration requirements of the US Securities Exchange Act.]\\n\\n',\n risks: [{\n code: 'R190301',\n name: 'Breach of cross-border activities or extra-territorial regulations'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: '7F08B26C-A694-41A6-9312-4BF5E923D67A',\n code: '1015',\n name: 'Market Commentary Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review market commentary disseminated externally by Sales and Trading staff\\n\\n',\n identify: 'Identify market commentary which does not comply with the content, disclaimer, distribution, or format requirements of the bank [e.g. commentary could be considered unfair or misleading, does not contain the required disclaimers, or is not provided within the approved commentary template]\\n\\n',\n risks: [{\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2ED10A69-FA18-4A95-A9E9-4CC9EA11C40C',\n code: '867',\n name: 'Unmatched Trades Review (Front Office)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review confirmation breaks between internal and external trade records or exception reports provided by Middle/Back Office\\n\\n',\n identify: 'Identify one or more of the following\\n\\n- Unmatched or mismatched trades details requiring amendment within the firm trading books or by the counterparty [e.g. differences with external records on trade date, quantity or price]\\n- Unaffirmed trades, unconfirmed trades and position breaks that require response from the counterparty\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '51DDAE71-319B-40F9-BEE0-4D02A44B9A2C',\n code: '543',\n name: 'Business Continuity Plan Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Business Continuity Plan\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Missing or inaccurate content in the business continuity plan (BCP) [e.g. purpose, scope and objectives of the BCP, roles and responsibilities, business continuity strategies, recovery processes and actions, required staff, systems, suppliers and buildings]\\n- Business continuity plans that do not reflect business changes since last review [e.g. systems, locations, staffing]\\n- Business continuity plans that that have not been approved or reviewed within required time by relevant business and relevant Business Continuity Coordinator\\n- Business recovery processes and actions that are not appropriately prioritized to meet\\u00a0Recovery Time Objectives (RTO) \\n- Business recovery processes and actions that are not feasible within the agreed Recovery Time Objectives (RTO) and sustainable for the defined timeframe [e.g. number of business days]\\n- Business recovery processes and actions that are not in line with risk appetite or do not meet legal and regulatory obligations\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6CBED77F-AC72-43F0-9A2D-4D63074C79BB',\n code: '1354',\n name: 'Unmatched Trades Review\\r\\n\\r\\n',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review unmatched trades',\n identify: 'Identify trades that require amendment within the firms trading books or by the counterparty [e.g. trade date, quantity, price etc.]',\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '3F5AEC9E-1D88-4880-B722-4DD9B8E7573D',\n code: '1128',\n name: 'Vessel Suitability Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review vessel parameters and logistical requirements for ports where the vessel will be calling\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Vessel parameters that do not meet the suitability requirements for the relevant physical commodity [e.g. vessel type, cargo type]\\n\\n\\\\- Vessel parameters that do not meet suitability requirements for all relevant ports [E.g. vessel size, port size, draft, speed, etc.]\\n\\n',\n risks: [{\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n code: '1592',\n name: 'Model Risk Reporting Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review model risk reporting and associated metrics\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\n\\n\\\\- Model risk reports that have not been reviewed and signed off by management\\n\\n\\\\- Model risk reporting exceptions that have not been appropriately explained by commentary\\n\\n\\\\- Model risk reports not in line with business specifications\\n\\n\\\\- Incomplete, inaccurate or delayed distribution of model risk metrics [e.g., KPI's or variances not explained]\\n\\n\",\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'B7F1B25C-371B-4827-8548-4F6CDD982871',\n code: '1462',\n name: 'Unallocated Settlement Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review unallocated transactions reports\\n\\n',\n identify: 'Identify transactions that are not verified as confirmed or settled when due\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '16DCF1E7-2C5E-484C-BFC6-4FBCC5D866E0',\n code: '1211',\n name: 'System Access Recertification Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Semi-Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and\\u00a0shared drives/data repositories [e.g. SharePoint, OneDrive, other cloud storage services] since the last review date to ensure they remain valid\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Employees who have inappropriate system access\\u00a0[e.g. joiners, movers, leavers]\\n- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n- Employees with access to shared drives, sharepoints or other data repositories not required for the role and function of the access holder\\n- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc]\\n- Missed or incomplete reviews\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A242BC4A-283C-4CBC-87A5-50113043A4BE',\n code: '74',\n name: 'Out-of-Hours Activity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of suspicious and / or irregular activity\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review out-of-hours activity reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Trading activity booked outside of normal working hours without appropriate rationale\\n- Access to firm systems outside of normal working hours which may be indicative of unauthorised activity\\n- Access to restricted areas outside of normal working hours which may be indicative of unauthorised activity\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C45AB73E-5082-44A2-B377-50396908F79A',\n code: '1149',\n name: 'Physical Delivery Confirmations Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review physical delivery confirmations\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Failed deliveries\\n\\n\\\\- Deliveries that may require an alternative supplier to fulfil commitments\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n code: '1702',\n name: 'eTrading Disablement Capability Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Agree time-frame for completion with relevant parties\\n\\n4\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review eTrading systems client disablement capabilities\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- eTrading systems which lack the functionality to immediately remove a client's ability to trade [e.g. via reducing client limits to zero or disabling a specific user profile or entitlements]\\n\\n\\\\- eTrading systems which lack functionality to cancel all open orders for clients who have been disabled\\n\\n\\\\- Staff who require disablement capabilities for their role but do not have the required access rights to trigger client disablement procedures\\n\\n\\\\- eTrading systems which lack sufficient documentation on client disablement processes\\n\\n\",\n risks: [{\n code: 'R140315',\n name: 'Customer off-boarding failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D0C56474-2C3C-4269-9C3B-51A2331F1CCC',\n code: '1599',\n name: 'Stress Scenario and Market Shocks Results Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Stress Scenario and Market Shocks Results',\n identify: 'Identify one or more of the following: \\n\\n- Changes to stress scenarios and market shocks used in internal and Regulatory driven stress testing [e.g OCC/FRB Comprehensive Capital Analysis and Review (CCAR), Bank of England Annual Scenario, European Banking Authority (EBA) stress test] which have not been communicated to relevant business areas for review and approval \\n- Scenarios without appropriate remediation plans [e.g., worsening scenario metrics without updated actions plans]',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '6FC96250-CACB-4692-9D79-51B29F3C0F32',\n code: '1644',\n name: 'Separation of Development, Test and Production Environments Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review segregation of IT environments\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Where IT environments [e.g. production, development, testing]\\u00a0are not physically segregated [e.g. separate servers, networks, databases, or other resources dedicated to each environment]\\n- Where IT environments [e.g. production, development, testing]\\u00a0are not logically segregated [e.g. software configurations and settings between the environments]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R210102',\n name: 'External data theft or data manipulation'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '5847AC53-026E-4AED-AEDE-51D98379DC5C',\n code: '1695',\n name: 'Policies, Procedures and Standards Review (Front Office)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review Policies, Procedures or Standards for the applicable Front Office business area\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Policies, procedures or standards which no longer accurately address regulatory requirements and require updating\\n- Policies, procedures or standards which no longer accurately address business requirements and require updating\\n- Policies, procedures or standards which have not been reviewed within the required timeframe and require review [e.g. missed annual refresh or documentation not refreshed in conjunction with new product releases]\\n- Policies, procedures or standards missing key data points [e.g. no accountable owner, no record retention details, no detail of previous reviewers and sign off, no version control]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R160807',\n name: 'Market disruption'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0597A459-3C1B-4207-8C74-5226CA3B23D7',\n code: '1446',\n name: 'Collateral Breach Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk',\n review: 'Monitor cash collateral and non-cash exposure reports',\n identify: 'Identify positions that are insufficiently collateralised',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '84F93C94-5966-48ED-8C90-52A1EA6CC03E',\n code: '1269',\n name: 'Research Payment Account Payment Approval',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed client and firm research consumption payment since last payment and against last payment',\n identify: 'Identify any gaps in consumed research that requires payment ',\n risks: [{\n code: 'R140306',\n name: 'Fee collection failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: '6DA74F45-6989-430A-B766-53343C7D929D',\n code: '1836',\n name: 'Data Recovery Plan Testing',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review testing of data recovery plans\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Data integrity recovery plans not tested or validated as per the required timescales\\n- Methodology used for data restoration testing that has not been validated\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '2C53C224-DD7C-43B0-AE58-534C131FD0A7',\n code: '1374',\n name: 'Product Control Governance Meetings',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review key product control issues and metrics presented to the meeting body [e.g. inventory valuation, Independent Price Verification (IPV), P&L review and sign-off, resolve significant inventory valuation issues, models, balance sheet forecasts, review new pricing functionalities and products, sign off policies and procedures, review significant unobservable prices/parameters, prudent valuations etc].',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '8B57072A-C76B-49DB-836B-53597F7E2CD7',\n code: '1350',\n name: 'Fee Calculation Review ',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review fee calculations against source data and fee schedules',\n identify: 'Identify any incorrect charges',\n risks: [{\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'CB862DD1-E4B8-4023-AA27-53BF8173BE60',\n code: '1362',\n name: 'Business Continuity Plan Testing (AM)',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review business continuity plans (BCP) to determine when testing was last conducted, when it is due and review the list of employees who will conduct BCP testing',\n identify: 'Identify any BCP tests not conducted within the required period ',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'AE3769B7-51CC-4B10-B745-5427ACB36AE2',\n code: '86',\n name: 'Record Keeping Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review alignment of Front Office eligible records to minimum standards as per the companies record keeping or data retention policy. [e.g. to record meeting minutes of relevant client face to face conversations where the purpose is to discuss a transaction or agreement to trade with the client, updating desk procedures etc]',\n identify: 'Identify any deviation and breach to record keeping and data retention minimum standards',\n risks: [{\n code: 'R230101',\n name: 'Electronic data record keeping failure (storage, retention or destruction)'\n }, {\n code: 'R230102',\n name: 'Physical record keeping failure (storage, retention or destruction)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F1AB8A77-2497-4BCD-ACB4-547026A8B267',\n code: '1485',\n name: 'Settlement Instruction Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed settlement payment instruction and standard settlement instructions (SSI) held in firm systems\\n\\n',\n identify: 'Identify discrepancies between the proposed settlement instructions and existing SSIs\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '366179F0-28E6-45D1-843E-54E4AF6C5EB7',\n code: '1400',\n name: 'Trade Details Feed Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Define next steps with relevant parties\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review trade details fed into internal systems',\n identify: 'Identify inaccurate economic trade details, missing approvals or where details have not fed into internal systems',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '269F4223-7DBE-4A2B-9A01-552C93CD0025',\n code: '1806',\n name: 'Joiners and Movers Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n\\n<!-- -->\\n\\n',\n review: 'Review onboarding activities for new joiners into the team/function and staff moving role within the firm\\n\\n',\n identify: 'Identify one of more of the following:\\n\\n- Access to relevant systems/role-based permissions within systems not yet set up for joiners or updated for movers/change in role\\n- Voice and electronic communication recording/surveillance systems not yet updated to reflect new joiner, movers/change in role\\n- Mandatory joiner training that has not been assigned. (e.g., compliance training, not enrolled in learning portal, has not received handovers/training books)\\n- Relevant policy and procedures that have not been read and signed/actioned (e.g., code of conduct, employee handbooks, conflict of interest disclosures/surveys, personal account dealing disclosures)\\n- Required licenses and registrations that have not been set up prior to starting role\\n- Required notification to regulatory bodies, vendors and or venues not yet sent\\n- Equipment not yet configured, issued, and logged (e.g., laptops, phones, smart access/identity cards)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R090205',\n name: 'Recruitment, hiring and onboarding failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E44CE862-0AE0-4C6F-971E-557FB5AB1FA4',\n code: '1017',\n name: 'New Margin Calculation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new margin calculation methodologies',\n identify: 'Identify methodologies not in line with internal policies [e.g. how the margin methodology is calculated, how the margin calculation is tested (back testing, data sets used, historical periods covered, shock-testing, comparisons to VaR) etc.]',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n code: '13',\n name: 'Cancelled or Amended Trades Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Determine circumstance of suspicious and / or irregular activity\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the details of supervisory reports relating to cancelled or amended trades',\n identify: 'Identify one or more of the following within cancelled or amended trading activity: \\n- Cancel or amend activity that is indicative of unauthorised, fraudulent or manipulative behaviour\\n- Cancels or amends requested by front office staff, or support function, where correct procedures were not followed or there is insufficient supporting evidence \\n- Complex trade amendments which do not reconcile to source documentation or the formal change request\\n- Cancel and amend activity performed by unauthorised personnel',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A0131883-DEC2-4B54-BB55-5662C09CEF37',\n code: '1467',\n name: 'Booking vs. Cash Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate',\n review: 'Review cash received [e.g. BIC or SWIFT] versus bookings made into firm systems',\n identify: 'Identify breaks that are unresolved or have not been escalated',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A6C5EE25-D8B9-4111-A7E2-56E24529C824',\n code: '1353',\n name: 'Governance Meetings Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review key issues and metrics presented to the meeting body [e.g. Best execution exceptions, control landscape, risk events, limit breaches, regulatory changes, new business etc.] from or by the various front to back functions.\\r\\n\\r\\n\\r\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference',\n risks: [{\n code: 'R140309',\n name: 'Error resolution failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'D964D897-2EC7-4A4A-B7D1-572E6EF4E8E3',\n code: '1617',\n name: 'Balance Sheet Substantiation Analytical Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n4. Amend inaccurate / incomplete or stale data or documentation\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of balance sheet substantiation, analytical review and variance analysis',\n identify: 'Identify instances where the balance sheet commentary does not explain variances beyond a defined threshold amount e.g. 80%',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '2F88E29E-D473-4937-9BAF-573DE24B7E74',\n code: '1782',\n name: 'Best Execution - Governance Forum Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Best Execution metrics and associated Best Execution management information presented at the business line or asset class governance forum\\n\\n',\n identify: 'Identify one or more of the following in relation to Best Execution:\\n\\n- Best Execution metrics by business lines, desks, algorithms, order routers, counterparties and venues that indicate a decline in customer outcomes\\n- Customer Complaint metrics that indicate an increase in complaints related to Best Execution\\n- Newly identified or ongoing issues that impact the ability of the firm to provide Best Execution without a remediation plan in place or on-target\\n- Significant breaches of Best Execution obligations that have been escalated to the forum and require an action plan to address\\n- Proposed changes to Best Execution policies, principles or frameworks that cannot be signed off\\n- Regulatory reports or other regulatory commitments which have not been fulfilled\\n- Results of Best Execution sample testing where Sales or Trading staff are unable to provide sufficient evidence that appropriate steps were taken to ensure Best Execution for the client\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'AB498B53-13B5-4E50-A36A-57DD2D60B3A7',\n code: '1697',\n name: 'System Access / Permission Changes Execution Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n3\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n',\n review: 'Review joiners, leavers and movers in relation to\\u00a0access rights and training prior to their start, leave or move date\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Access to systems/role-based permissions within systems not removed for movers/leavers within the timeframe specified [e.g. within 24 hours of last day in the office]\\n\\n\\\\- Access to offices or facilities not yet removed [e.g. building access card not disabled]\\n\\n\\\\-Any activity on accounts post employees leaving date [internal and external systems/platforms]\\n\\n\\\\- Access to systems/role-based permissions within systems not updated for joiners or movers (e.g., mailbox, trading systems, payment systems, applications, shared drives, cloud storage, SharePoint, research systems, external third-party platforms, research publishing systems, chatrooms, and phone lines)\\n\\n\\\\- System access granted without all the necessary approvals\\n\\n\\\\- Mandatory technology training that has not been completed [e.g. information security]\\n\\n',\n risks: [{\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R161002',\n name: 'Misuse of general access rights'\n }, {\n code: 'R210103',\n name: 'Theft of intellectual property '\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'C2A314C6-A894-46DF-80B1-58DEF82352E4',\n code: '1646',\n name: 'IT Open Incident Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor IT Open Incidents\\n\\n',\n identify: 'Identify open incidents that have not been resolved within required time-frame for their classification [e.g. major], have insufficient information/attributes or where inadequate resources have been mobilised to resolve the incident within the required time-frame\\n\\n',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'DE7EBB1A-D971-4E78-9D8F-59133DAEF180',\n code: '1431',\n name: 'Collateral Documentation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review collateral documentation\\n\\n',\n identify: 'Identify documentation that is not legally enforceable\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'ACDAA27C-3AD5-433C-9986-595E25812F6B',\n code: '1082',\n name: 'New Exchange Membership Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the firms membership category for the relevant exchange prior to trading\\n\\n',\n identify: 'Identify one or more of the following: -\\n\\n<br>\\n\\n\\\\- Invalid exchange membership [e.g. inactive]\\n\\n\\\\- Invalid exchange membership for selected product or categorisation\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '8A38A4B9-CBCD-4459-8EE0-599307E931A1',\n code: '983',\n name: 'Conflict of Interest (COI) Deal Review ',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review list of potential deals',\n identify: 'Identify where deals may create a conflict of interest [e.g. A bond financing for company A trying to take over company B who is also seeking to use the same bank to issue debt]',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: '48BBAD22-24D9-407D-8EDF-59EE5CDF7924',\n code: '937',\n name: 'Pre Market Open Index Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review index constituents and weightings [e.g. changes made to FTSE 100, ETF composition data]',\n identify: 'Identify underlying instruments requiring amendment',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n code: '1410',\n name: 'KYC Due Diligence Monitoring',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Define next steps with relevant parties\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor all client Know Your Customer (KYC) due diligence results ',\n identify: 'Identify missing information required from the client, clients who have not had their periodic Know Your Customer refresh, or where changes to client due diligence data require a change in relationship with the client [e.g. the bank cannot verify the legal persons associated with a client, obtain source of wealth or purpose of relationship data, a full review has not been completed within a suitable timeframe, or new data received causes the client to fail financial crime screening and is no longer within risk appetite or local laws]',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'D801B2BC-6AD6-4898-952F-5B2A9AA9E261',\n code: '1808',\n name: 'Internal Trade Matching Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review internal trade bookings and internal trade reconciliations across systems and platforms\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Unmatched trades which were booked independently by both sales and trading\\n- Unmatched trades between internal trading platform and blotters\\n- Unmatched trades across internal trading systems\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EA7984C4-9C92-4929-9AE6-5B404E3D1635',\n code: '1233',\n name: 'Benchmark Discretionary Contribution Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review submissions by benchmark contributors\\n\\n',\n identify: 'Identify where discretionary contributions are inadequately evidenced [e.g. missing benchmark prices or the use of proxy levels to determine the price contributed]\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '466A6150-DB37-43CE-A17F-5BF4E096D010',\n code: '1701',\n name: 'eTrading Regulatory Self Assessment Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review completed regulatory self-assessment outputs and supporting documentation [e.g. MiFID II RTS 6 Self-Assessment]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Self-assessments not completed within the timeframe required by regulation [ e.g. RTS 6 Article 9 requires the completion of the self-assessment on an annual basis]\\n- Self-assessment outcomes not supported by appropriate evidence or testing\\n- Self-assessments not performed across the full set of eTrading components [e.g. not all systems or algorithms included]\\n- Self-assessments not performed in line with regulatory expectations [e.g. Self-assessments which do not appropriately evaluate the banks algorithmic trading systems, trading algorithms and algorithmic trading strategies; the banks governance, accountability and approval framework; or the banks business continuity arrangements]\\n- Self-assessments that have not been signed off by required supporting functions [e.g. eTrading Compliance or Internal Audit]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0590746D-8D06-42A8-B84A-5CA166254FF2',\n code: '882',\n name: 'Stale Curves Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review stale curves [e.g. volatility, rates, borrow etc. to ensure they are accurate and in line with where the market is trading]\\n\\n',\n identify: 'Identify curves requiring updates\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n code: '944',\n name: 'Market Making Spread Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of market making spreads\\n\\n',\n identify: 'Identify quotes outside the maximum permitted marking-making spread parameters defined by the product terms\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n code: '1229',\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of orders sent for execution generated by automated trading systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Orders with duplicative order identifiers and characteristics [e.g. order size, price, client identifier, etc.]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C06FFF96-022C-4D1F-AA00-5D5780290C0B',\n code: '1607',\n name: 'Financial Reporting Verification Reviews',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\r\\n5. Amend inaccurate / incomplete or stale data or documentation\\r\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review verification checks for all in scope external reports, both financial and regulatory [e.g. verification checks may include edit check validations, cross report/schedule validations and consistency checks]',\n identify: 'Identify inconsistencies or inaccuracies in external reports',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '00338D7A-E1DF-4FD0-B13C-5DFB6E2384F5',\n code: '1368',\n name: 'Brokerage Rates Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review brokerage rates',\n identify: 'Identify brokerage commissions and fees no longer in line with market rates [e.g. by comparing rates charged by other brokers] ',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '98EC1B45-1E99-47DE-8334-5E06D6CEDA26',\n code: '1812',\n name: 'Customer Complaint Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review newly received customer complaints\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Complaints where there is a risk of litigation or regulatory action that require engagement with Legal or Compliance functions\\n- Complaints that require reporting to regulatory bodies\\n- Complaints not reported or escalated in a timely manner\\n- Complaints without an assigned owner\\n- Complaints where conflicts of interest require a reassigning of responsibilities in relation to the complaint [e.g. supervisor handling a complaint he/she is the subject of]\\n- Complaints that meet materiality thresholds that require additional escalation and faster resolution\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '017CA7E3-E7E7-42ED-8129-5E8B2BCE8C3A',\n code: '1144',\n name: 'Precious Metal Auction Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review submissions to Precious Metal Auctions [E.g. gold and silver auctions]\\n\\n',\n identify: \"Identify one or more of the following:-\\n\\n- Breaches of the exchange's code of conduct [E.g. lack of information barriers between firm and client submissions, inadequate order management and recording]\\n\\n<br>\\n\\n\",\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'EEFD07D1-B0BE-438D-9D21-5E9A6B961594',\n code: '1497',\n name: 'Client Static Data Verification Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new and amended client static data [including client account set-up]\\n\\n',\n identify: 'Identify changes to client static data that have been incorrectly applied or data that has not been subject to appropriate 4-eye verification [including appropriate manual verification for high risk changes]\\n\\n',\n risks: [{\n code: 'R140102',\n name: 'Client account set up or maintenance error'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '28105F78-227E-416D-B362-5EAE86E3BF0B',\n code: '1459',\n name: 'Client Documentation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client documentation obtained versus the firms documentary requirements\\n\\n',\n identify: 'Identify missing, inaccurate or incomplete documentation [e.g. DEA agreement, jurisdictional checks confirming electronic services are in accordance with regulation, specific requirements from liquidity providers]\\n\\n',\n risks: [{\n code: 'R230101',\n name: 'Electronic data record keeping failure (storage, retention or destruction)'\n }, {\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'ETOPS',\n name: 'eTrading Operations'\n }, {\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0F066111-B9FA-44E4-B66F-5EF7F390FFDF',\n code: '1560',\n name: 'Nostro and Depot Account Opening Review',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review all nostro and depot account opening confirmations [including unknown agent statements]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Nostro and depot accounts opened without business approval or agent bank confirmation\\n- Nostro and depot accounts that have been opened with incorrect account attributes [ e.g., Bank or Client, incorrect withholding tax levels, incorrect account type, names spelt incorrectly, incorrect legal entity]\\n- Nostro and depot accounts opened without internal system accounts being opened correctly [e.g., Agent bank statement feed not set up, agent account not added to reconciliation population]\\n- Nostro and depot accounts not included on reconciliation population database\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'BA6DB363-0AD6-425E-8290-5F4CD6C81159',\n code: '1352',\n name: 'Post Trade Investment Restriction Breach Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Define next steps with relevant parties \\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n5. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed',\n review: 'Review investment restriction breach reports',\n identify: 'Identify breaches or potential breaches of investment restrictions',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'AD60B875-FE72-4F7E-87BD-60448AA3AD6F',\n code: '1407',\n name: 'Client Signature Authorisation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instructions received bearing the clients signature or requiring multiple signatories\\n\\n',\n identify: 'Identify client accounts where the verification has not covered all of the required signatories or where the client signature does not match with the specimen signature(s) on file\\n\\n',\n risks: [{\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '250163E7-E3DA-4242-9EEC-604B84C1F1FF',\n code: '963',\n name: 'Collateral Valuation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: '<s><span class=\"ql-cursor\"></span></s>\\n\\nReview client and/or counterparty collateral positions and margin accounts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Collateral valuation outside of pre-defined range without justification or validated exception\\n- Incorrect collateral positions vs. external party records which may lead to incorrect margin loan calculations for clients\\n- Collateral posted\\u00a0by clients or counterparties that is contrary to any agreements (e.g. collateral type or valuation ranges)\\n- Collateral valuation volatility in excess of agreed thresholds\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B21D6638-0F8D-4A0C-A2FE-6067FE63D7BD',\n code: '1448',\n name: 'End of Day Collateral review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review end of day collateral reports\\n\\n',\n identify: 'Identify items that require escalation [including fails, under or over collateralisation beyond a pre-determined percentage threshold, exposures above a pre-determined cash value threshold]\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '28850FEC-EE27-4243-8C7F-60B6C1CB812B',\n code: '1684',\n name: 'Legal Template Review ',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all master agreement and relevant legal templates [e.g. negotiable contract templates provided by third parties, external vendors or clients and credit support annex templates etc]\\n\\n',\n identify: 'Identify legal templates not consistent with current applicable laws and regulations [e.g. may give rise to antitrust issues, unagreed negotiation authority scope, not consistent with EMIR and DFA margin requirements] or not using group agreed standardised legal clauses\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Legal',\n name: 'Legal'\n }]\n}, {\n id: '91D5B007-EA9F-4760-ACE5-60D0B1B7DAB4',\n code: '1421',\n name: 'Reference Data Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review completeness, accuracy and timeliness of amendments to instrument reference data\\n\\n',\n identify: 'Identify incorrectly applied or delayed amendments to instrument reference data [e.g. Incorrect Instrument name, Incorrect Industry Code, Incorrect Currency Code, Incorrect ISIN, SEDOL or CUSIP, Incorrect day count, Incorrect <span style=\"color: rgb(68, 68, 68);\">instrument type or sub-type]</span>\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R230103',\n name: 'Data maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9DE08277-6A57-45CE-B767-61438D3154DF',\n code: '1602',\n name: 'System Access Recertification Review (Risk)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and shared drives/data repositories [e.g. SharePoint, OneDrive, other cloud storage services] since the last review date to ensure they remain valid.\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n- Employees who have inappropriate system access [e.g. joiners, movers, leavers]\\n- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n- Employees with access to shared drives, sharepoints or other data repositories not required for the role and function of the access holder\\n- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc.]\\n- Missed or incomplete reviews\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'FB93624D-660B-441A-BE81-6163502CB3E9',\n code: '1267',\n name: 'Chatroom Surveillance Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Define next steps with relevant parties \\r\\n2. Amend inaccurate / incomplete or stale data or documentation \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the register of employees, multi-bank or dealer electronic chatrooms subject to surveillance ',\n identify: 'Identify any employees or chatroom not on the register who are required to be monitored, including employees or chatrooms that no longer need to be monitored',\n risks: [{\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'C0A64C8A-756C-4D2D-A278-61F9F89F0FCA',\n code: '1512',\n name: 'Sanction List Content Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Weekly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n\\r\\n',\n review: 'Review uploaded sanction lists',\n identify: 'Identify uploaded sanctions lists that are deficient (e.g. upload of wrong list, list not received from an authorised source, confirmation emails not dispatched)',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '896CDCED-6EFB-440C-BFEF-62307D691192',\n code: '1425',\n name: 'Standard Settlement Instructions (SSIs) Amendment Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review amendments to Standard Settlement Instructions (SSIs)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Standard Settlement Instructions (SSIs) amendment requests received on unauthenticated channels that have not been correctly authenticated [e.g. by call back]\\n\\n\\\\- SSI amendment requests not validated via signature verification\\n\\n\\\\- SSI amendment requests that differ from client source documentation or other golden source [e.g. Central Bank or Central Clearing Counterparty (CCP)]\\n\\n\\\\- Instances where maker-checker process has not been followed as part of the review and evidencing of the SSI amendment\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '728B42E8-749E-46D7-B525-6298931E4611',\n code: '1480',\n name: 'Aged Nostro Breaks Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Weekly',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review nostro reconciliation breaks and associated reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Aged nostro breaks not monitored or escalated for remediation [e.g., breaks over a certain number of days not escalated to Heads of Business, RAG status not applied for older breaks]\\n- Aged nostro breaks with inadequate commentary and rationale provided\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9D11BE08-8C3E-4DE3-B5D8-62B235C87065',\n code: '1557',\n name: 'Missed Trade Expiries Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades which have expired but remain live in trading systems and trade stores\\n\\n',\n identify: 'Identify missed expiries which require resolution\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '10AF3D59-4842-4187-AD2E-62C9420E1600',\n code: '1726',\n name: 'Customer Call Quality Assurance Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review a sample of customer call recordings',\n identify: 'Identify one or more of the following:\\n- Customer calls where a fair outcome was not achieved for the customer\\n- Customer calls where scripts have not been followed\\n- Customer calls where vulnerable customers have not been treated in line with regulatory requirements',\n risks: [{\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '464539A2-4450-4F64-8A5F-62FEEC65F0B3',\n code: '1493',\n name: 'Trade Settlement Amendment Input Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Real time',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Define next steps with relevant parties\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review amended trade Standard Settlement Instructions (SSI) input into systems and the counterpartys instructions',\n identify: 'Identify incorrect, inaccurate or untimely data',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n code: '1199',\n name: 'Market Risk Limits Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review market risk limits [e.g., trading limits] and associated risk limit metrics\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Risk limit thresholds requiring updates based on trading activity metrics including limit utilisation, market conditions or changes in firm's risk appetite\\n- Risk limit changes without documented explanation and/or appropriate business approval\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '19106475-CE5D-46DF-B01B-645ABB13E8F7',\n code: '1750',\n name: 'Business Continuity Plan Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks \\n2. Complete and / or request completion of outstanding tasks or approvals \\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review relevant Business Continuity Plans (BCPs)',\n identify: 'Identify one or more of the following:\\n- BCPs not refreshed and signed off in line with internal requirements\\n- Critical business services without a BCP in place',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'A213819F-030B-404B-A150-64874711FE3F',\n code: '1715',\n name: 'TRACE Reporting Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\u000b2. Amend inaccurate / incomplete or stale data or documentation\\u000b3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review details of a sample of transactions reported to FINRA via TRACE [Trade Reporting and Compliance Engine]\\n\\n',\n identify: 'Identify completeness, accuracy and timeliness issues with TRACE reporting [e.g. Trades not reported within required timelines, missing or inaccurate data points, eligible trades not reported etc.]\\n\\n',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: '67767BCE-11BE-4262-BA8D-6496A1BFE086',\n code: '1415',\n name: 'Rate Reset Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review swap rate resets\\n\\n',\n identify: 'Identify inconsistencies in swap rate resets [e.g. the incorrect number of trades in scope for rate resets, verification of the rate against external data, where cash flows do not match expectations]\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140209',\n name: 'Post settlement lifecycle event failure (inc. derivatives and corporate actions)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'BAFA63E9-AF21-4B8A-B3E5-651629A6BD24',\n code: '694',\n name: 'Outside Business Interest (OBI) Request Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n<!-- -->\\n\\n',\n review: 'Review all outside business interests requests [e.g. Company board membership, lecturing, director of a private company etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Outside business interests or activities which may present a conflict of interest to the firm or its clients and should not be approved\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '39A1BF82-FE84-4C2F-9B4C-667D1B65A680',\n code: '1611',\n name: 'External Report Data Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\r\\n5. Amend inaccurate / incomplete or stale data or documentation\\r\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of data reconciliations for external financial or regulatory reports [e.g. reports should be reconciled to a golden source at an appropriate level of granularity, where applicable reconciliation to the general ledger or sub-ledgers may be required]',\n identify: 'Identify inaccurate data in external regulatory or financial reports',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '2A8C3458-0EDA-4CED-A46C-66DEFB79191B',\n code: '132',\n name: 'Trading Book Opening Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review and approve requests for opening new trading books\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Trading books set up without appropriate approval\\n- Books opened in legal entities that could result in trading activity breaching regulatory requirements (e.g. Reg K)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'D9BD6DD0-2CE4-416F-A7AD-66E2E9AB2E03',\n code: '1820',\n name: 'Mandatory Training Review (Operations)',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the completion of mandatory training [E.g. Sanctions training, Anti-Briberery and Corruption (ABC) training , Anti Money Laundering (AML) training, Countering Terrorism Financing (CTF) training, Information Security training, Training required to obtain licenses and registrations, Role specific training, Business continuity training]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Incomplete, unassigned or overdue Group mandated training [E.g. Sanctions & Embargoes training, Anti-Bribery and Corruption (ABC) training , Anti Money Laundering (AML) training, Countering Terrorism Financing (CTF) training, Anti-Facilitation of Tax Evasion training, Information Security training, Client money/ Client assets (CASS) training ]\\n- Incomplete or overdue mandatory new joiner training\\n- Employees without appropriate training required for licenses, registrations or authorisations [E.g. remote booking license]\\n- Discrepancies in training completion records [E.g. Incomplete supervisory oversight of training records]\\n- Lack of timely follow-up and escalation for training completion issues\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '56CA5156-7F9B-4D17-9C29-66EF9AAB69C2',\n code: '1653',\n name: 'System Access Security Protocol Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Confirm exception(s) have a valid and recorded justification\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review system/application/EUC/platform access security protocols [e.g. password encryption, password setup, expiration criteria and lockout criteria, multi factor authentication, privilege access protocol, non-human credential/secrets loading and storage]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Systems where password protocols that do not meet firmwide standards\\u00a0[e.g. periodic change every 90 days, minimum password length, alpha-numeric character combinations, maximum unsuccessful log-in attempts, lockout duration, password history, inactivity expiration period, non-permitted words]\\n\\n\\\\- Privileged accounts that are not protected or where their passwords are not held using a secure, break glass procedure\\n\\n\\\\- Systems missing multi factor authentication [e.g. on high risk systems such as payments, access to non-public information, privileged access]\\n\\n\\\\- User sessions that do not auto lock or require re-authentication after a set period of inactivity\\n\\n\\\\- Unprotected or human readable embedded passwords/credentials [e.g. system to system interface accounts]\\n\\n\\\\- Unevaluated or unapproved firewalls\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'F01805F9-F2EF-43F4-8F36-6738B2C729E2',\n code: '1152',\n name: 'Client Financing Transaction Documentation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client financing transaction documentation\\n\\n',\n identify: \"Identify one or more of the following:-\\n\\n\\\\- Client financing transactions that require additional legal documentation\\n\\n\\\\-\\u00a0Missing market abuse intention confirmation from client\\n\\n\\\\- Accounting not reviewed by client's auditor\\n\\n\",\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'F90E2819-90F7-4D09-A133-675388218BB2',\n code: '990',\n name: 'Issuer Briefing Log Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Define next steps with relevant parties\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review log of all education, training and advisory services provided to Issuer staff [There is an advisory duty of care which rests on the Bank to ensure an issuers conduct and verbal communications are in accordance with the countrys market rules and legislation]',\n identify: 'Identify instances where insufficient education, training or advisory services were provided to Issuers',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'C7F1A709-9207-4F07-812E-675E8F76CC4F',\n code: '1682',\n name: 'Succession Planning Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Define next steps with relevant parties\\r\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review succession plans for all key senior roles\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n',\n identify: 'Identify succession plans that are incomplete [e.g. succession planning is documented for global Key Function Holder and Senior Leadership] or do not adhere to the firms planning and development standards or specific regulatory requirements',\n risks: [{\n code: 'R090102',\n name: 'Diversity or discrimination failure'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'HR',\n name: 'HR'\n }]\n}, {\n id: 'C8786D7D-83CB-4F47-85D8-6778B835A861',\n code: '1452',\n name: 'Inter-System Reconciliation Break Review (Collateral)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review collateral inter-system reconciliation breaks ',\n identify: 'Identify breaks which require intervention, follow-up with front office or escalation',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'DB702031-35EA-4E0F-9EA3-6791553550F9',\n code: '1206',\n name: 'Business Recovery Plan Testing',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Investigate rationale for any late, missing or incomplete tasks\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Agree timeframe for completion with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review Recovery Testing Results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Business continuity plans that have not been tested as per the Business Continuity Management testing calendar\\n- Business recovery plan tests that do not cover suitable scenarios [e.g.\\u00a0critical process or systems, unavailability of premises, disruption of IT applications, unavailability of staff]\\n- Business continuity plans only partially tested without suitable exemption or justification\\n- Issues identified from Business Recovery testing that have not been documented or resolved [e.g. issues identified from Denial of Access, Denial of Service and Call Tree Tests]\\n- Essential Recovery Personnel that have not been identified, notified of or trained on their roles and responsibilties\\n- Remote Access testing for eligible employees that has not been performed within the required timeframe\\n- Evidence of completion of Business Recovery testing that has not been approved and recorded in the relevant system\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n code: '904',\n name: 'Off-Market Trade Price Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review off-market trade prices [e.g. outside of set tolerance levels with reference to market traded prices]',\n identify: 'Identify irregular or suspicious off-market trade prices',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F2FBEDD7-6540-4D67-9E6E-67F227AEC190',\n code: '1432',\n name: 'Complaints Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client complaints received\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Client complaints that have not been appropriately recorded\\n- Client complaints that have not been escalated or resolved in a timely manner\\n- Critical complaints still outstanding\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '443BC098-9DBE-4E9C-8CC2-685E77FDDC34',\n code: '1429',\n name: 'Active Client Account Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades vs the list of inactive, dormant or delinquent client accounts\\n\\n',\n identify: 'Identify trading activity occurring with accounts on this list\\n\\n',\n risks: [{\n code: 'R140315',\n name: 'Customer off-boarding failure'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'C4510D60-C8BE-4C1D-89EF-687097A75EB8',\n code: '1579',\n name: 'Governance Meetings Review (Risk)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key issues and metrics presented to the meeting body [e.g. policies, procedures, change management, RCSA findings, stress testing results etc]\\n\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '16290FB6-EF1A-4BEB-BAE4-68BCDD11EEED',\n code: '1787',\n name: 'Extended Settlement Trade Review (Front Office)',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate 3. Define next steps with relevant parties 4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades with extended settlement terms\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Executed trades without pre-approval\\n- Trade details or settlement dates that differ to counterparty's' confirmations/affirmations (Middle/Back Office to notify Front Office)\\n- Trades that have not been confirmed within required time-frames\\n- Extended settlement dates that are inappropriate\\n- Trades executed contrary to policy (e.g. settlement terms too long, executed electronically when prohibited etc)\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '34832838-B5AF-46F9-82ED-691A66D1CAAD',\n code: '1027',\n name: 'Wire Transfer Monitoring',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Inform counterparty on the other side of the trade\\r\\n3. Define next steps with relevant parties\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review wire transfer requests',\n identify: 'Identify erroneous or suspicious requests [e.g. wire transfer is to a third-party, requests does not originate from one of the authorised signatories, second person review not conducted etc.]',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'A7D047DE-A065-4BFF-A26B-69332DA238EE',\n code: '1844',\n name: 'Middle Office Back Office (MOBO) Reconciliation Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of Middle Office Back Office (MOBO) system reconciliations',\n identify: 'Identify one or more of the following:\\n\\n- Middle Office Back Office (MOBO) system reconcilicialtions not reconciling key attributes and economics of each trade [e.g. price, quantity, notional, direction, trade date, settlement date, currency, risk, counterparty etc.]\\n- Unresolved breaks with missing or inadequate justification or investigation results\\n- Unresolved breaks not escalated according to policies and procedures\\n- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n- Absence of segregation of duties between individual or team entering the trade, and individual or team performing the reconciliation',\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '485018C0-1D4B-4EF1-A5A1-69477DACED64',\n code: '540',\n name: 'Supervisory Hierarchy Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the existing supervisory hierarchy and proposed changes to the supervisory hierarchy\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Inaccuracies in the supervisory hierarchy which require amendment [e.g. Hierarchies which do not reflect the supervisory structure over the business or where employees are aligned under incorrect Supervisors]\\n\\n\\\\- Proposed changes to the supervisory hierarchy or associated thresholds [e.g. Supervisor to employee ratios] which cannot be approved\\n\\n\\\\- Supervisory hierarchy structures which do not enable compliance with laws, regulations or firm policy\\n\\n\\\\- Supervisors who do not have the correct licensing or certifications as required for the employees they supervise\\n\\n\\\\- Organisational changes or new business initiatives which require a change in the Supervisory hierarchy\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160301',\n name: \"Non-compliance with firm's code of conduct\"\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'BB215543-12C3-46E2-A200-698073D96670',\n code: '1440',\n name: 'Manual Trade Confirmation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n4. Investigate rationale for any late, missing or incomplete tasks\\n5. Inform counterparty on the other side of the trade\\n6. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n<!-- -->\\n\\n',\n review: \"Review trades in the firm's trading platform that have been confirmed manually\\n\\n\",\n identify: 'Identify one or more of the following in relation to manual confirmations:\\n\\n- Manual confirmation which does not match trade booking details\\n- Manual confirmations which have not been tailored to specific client, product or legal requirements\\n- Manual confirmations which do not contain documented evidence of approval\\n- Manual confirmations issued based on inaccurately matched trades\\n- Queues of manual confirmations that have not been cleared in a timely manner [e.g events and actions stemming from manual confirmation queues that are not escalated and resolved]\\n- Manual confirmations that have not been through an independent 4-eye review process\\n- Manual confirmations indicating inappropriate or fictitious trading activity [e.g. unconfirmed trades posted to dummy counterparties]\\n- Manual confirmations containing inaccuracies identified through random sample-based testing\\n- Manual confirmations signed by individual without appropriate signing authority\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1CAA73CE-74AD-4160-A26E-69B713983FAD',\n code: '1699',\n name: 'System Access Recertification Review (Technology)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and shared drives/data repositories [e.g. SharePoint, OneDrive, other cloud storage services] since the last review date to ensure they remain valid\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Employees who have inappropriate system access [e.g. joiners, movers, leavers]\\n\\n\\\\- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n\\n\\\\- Employees with access to shared drives, sharepoints or other data repositories not required for the role and function of the access holder\\n\\n\\\\- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc]\\n\\n\\\\- Missed or incomplete reviews\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R161002',\n name: 'Misuse of general access rights'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '75EAE8B1-F8A1-4D39-8AB1-69CA73068AD9',\n code: '1217',\n name: 'Broker Onboarding Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all onboarding documentation for new brokers / intermediaries [including third party execution platforms]',\n identify: 'Identify new brokers or intermediaries without appropriate approvals or documentation',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '1AEC862D-CC30-4A26-B308-69F3DDA57CD8',\n code: '1260',\n name: 'Research Coverage Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Halt trading or further business until all approvals are obtained\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review upcoming research publications',\n identify: 'Identify publications that may give rise to conflicts of interest with upcoming and existing deals or transactions',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n code: '1823',\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \",\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals \\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all trade capture and order management systems used by the business',\n identify: \"Identify one or more of the following: \\n\\n- Trade capture or order management systems with an interface that allows manual trade capture or order entry but without size and price thresholds in place to prevent 'fat finger' errors\\n- Trade capture or order management systems that require an update to their 'fat finger' limits [e.g. In response to changes in business activity or system usage]\\n- Trade capture or order management systems which do not have dynamic 'fat finger' limits in place [E.g. Limits which react dynamically to changes to key metrics such as Average Daily Volume for the product/instrument being traded]\\n- Trade capture or order management systems which do not have appropriate 'fat finger' price collars in place [E.g. Collars which prevent manual entry of trades or orders that deviate from the market price by more than a defined threshold, or collars that prevent orders which would have an outsized market impact]\",\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '8AE75185-C76F-4EDB-BAC1-6A0789F878A7',\n code: '403',\n name: 'Benchmark Operating Procedures Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the procedure documentation for each benchmark [e.g. documentation containing the benchmark description, risk rating, purpose of the contribution, use of the output, submission process including systems used, timing of submissions, IT involvement, how conflicts of interest are managed retention period of submission and communication to relevant individuals, regulatory obligations and penalties for breaches]\\n\\n',\n identify: 'Identify gaps in the procedures against internal standards or administrator guidelines [e.g. where roles and responsibilities are unclear, conflicts of interest are not addressed, key controls are not documented]\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '76664AFF-2CBF-41AF-80ED-6A4607EE32F5',\n code: '1690',\n name: 'Privacy Notice Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all privacy notices',\n identify: 'Identify privacy notices that do not meet firmwide standard [e.g. not reviewed by Legal, not containing identity and contact detail information] and have not been sent out in a timely manner',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '60CCF859-BC46-4B2F-84A6-6A669811C9B0',\n code: '1275',\n name: 'New Broker Approval',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new broker/ venue proposal and associated approvals [e.g. all due diligence is completed]',\n identify: 'Identify missing broker approvals / rejections / proposed amendments ',\n risks: [{\n code: 'R200102',\n name: 'Third-party documentation deficiencies'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '1B8BC283-2858-4518-91A7-6A6FFAFDB71C',\n code: '15',\n name: 'Chatroom Administration Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Determine circumstance of breach or deviation\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the details of chatroom administration supervisory reports\\n\\n',\n identify: 'Identify one or more of the following in relation to chatrooms:\\n\\n- Multilateral or bilateral chatrooms which are not on the list of approved chatrooms\\n- Chatrooms that require closing because they have been inactive for longer than defined thresholds or approval has expired\\n- New or expanded chatroom access requests that cannot be approved as they lack appropriate business justification\\n- Chatrooms which do not have required participation and oversight from supervisors\\u00a0\\n- Internal persistent chatrooms with membership that violates information barrier requirements [e.g. an internal mover who retains access to chatrooms no longer required for their role]\\n- Chatroom activity indicative of potential unauthorised chatroom behaviour [e.g. Chatrooms which were opened and closed within one week, Chatrooms where the participant list does not align to the approved list of participants]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A91FEB17-B3B9-4FCC-AD45-6A82E045041E',\n code: '753',\n name: 'Mark Up Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trade pricing',\n identify: 'Identify trade pricing outside of mark up thresholds [e.g. levels that are unfair to clients]',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160404',\n name: 'Excessive charges or fees'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '3882100B-661D-4B91-A9AD-6B4BCBAD1DA5',\n code: '1671',\n name: 'Financial Product Monitoring [Greenwashing]',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review product sustainability criteria and marketing material ',\n identify: 'Identify any component of the product or sales material that inappropriately states its sustainability',\n risks: [{\n code: 'R250801',\n name: 'Mis-selling financial products (greenwashing)'\n }],\n riskInventories: [{\n code: 'ClimateForBanks',\n name: 'Climate For Banks'\n }, {\n code: 'CCR',\n name: 'Climate Risk'\n }]\n}, {\n id: '42C64E26-3178-4A8A-A6E6-6B56AE48D71B',\n code: '1256',\n name: 'Associated Persons (AP) Breach Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n3. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades flagged [e.g. alerts] as breaching Dodd-Frank Associated Persons rules\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Marketing, soliciting and/or execution of a Dodd-Frank eligible product by a non Associated Person [e.g., disqualified staff trading swaps]\\n- Non-US based Associated Person soliciting or trading swaps with US-based Clients\\n- Employees soliciting or executing trades without appropriate regulatory examinations\\n- Employees who market, solicit or execute trades without having completed the Statutory Disqualification Questionnaire (SDQ)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '64346B45-4FFC-4E5F-BA8D-6C5C804B1233',\n code: '982',\n name: 'Residual Primary Positions Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Syndicate Desk residual primary positions\\n\\n',\n identify: 'Identify conflicts of interest with Secondary Trading desks [e.g. where the Secondary Trading Desk holds the same position as the Primary Desk but the positions are valued at a different market price creating a P&L mis-match]\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'C6619DB6-0889-444D-AD90-6D3A5867D3ED',\n code: '1265',\n name: 'Suitability and Appropriateness Transaction review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Define next steps with relevant parties\\n\\n2\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n3\\\\. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review transactions in relation to Suitability and Appropriateness\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Suitability and Appropriateness reviews that have not been performed prior to trade execution [including high risk transactions]\\n- Trades that have been pre-approved as appropriate that have not been retained in the required system of record\\n- Requests for pre-approval of appropriate transactions that have not been submitted in the correct format\\n- Instances of transactions requiring escalation that have not been reviewed in the required timeframe\\n- Risk Disclosures that have not been sent to clients prior to trade date\\n- Suitability Acknowledgment documentation that has not been signed by the client prior to trade date\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4BFB0810-7912-438E-90BB-6D4490D9CC32',\n code: '1386',\n name: 'Prudent Valuation Adjustment Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review reported balance sheet for regulated entities',\n identify: 'Identify incomplete or inaccurate prudent valuation adjustments [e.g. unobservable inputs into pricing valuation, illiquid positions, RWA etc.]',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '8D55BABD-C175-4002-B5AC-6D47067D9709',\n code: '1091',\n name: 'Country Tax Assessment Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review country tax assessment\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Jurisdictions that may pose an irrecoverable tax risk prior to trading [e.g. purchasing physical metal outside of bond incurs VAT that is hard to recover from the tax authorities, purchase of physical commodity crystalises a irrecoverable tax liability]\\n\\n',\n risks: [{\n code: 'R220201',\n name: 'Inaccurate tax calculation, reporting, collection or payment'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'C8176134-A81D-49F7-B8D5-6DC56FCBC5D7',\n code: '763',\n name: 'eTrading Trade Flow Validation - Unmatched Trades Review',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of eTrading unmatched trades\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Trades that do not reconcile with the firms trading book positions [e.g. differences with external records on trade date, quantity or price] and require amendment in the firms trading books\\n\\n\\\\- Trades that do not reconcile with the firms trading book positions [e.g. differences with external records on trade date, quantity or price] and require escalation to a counterparty\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '457D7E51-AFB2-4125-9756-6DF2823284AF',\n code: '1357',\n name: 'Insider List Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary ',\n review: 'Review the insider list for new issue mandates or other events [e.g. take over]',\n identify: 'Identify instances where key personnel have not been appropriately captured in the insider list [e.g. Issuer - Treasurer or CFO involved in the transaction and Legal Department Representative ,Underwriter(s) - Origination, Syndication, Portfolio management, Trading, Legal and Compliance personnel]',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '1E32EE28-C8F2-4E19-9A81-6E90B102EFC8',\n code: '1604',\n name: 'System Access Recertification Review (Finance)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and shared drives/data repositories [e.g. SharePoint, OneDrive, other cloud storage services] since the last review date to ensure they remain valid\\n\\n<br>\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n- Employees who have inappropriate system access [e.g. joiners, movers, leavers]\\n- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n- Employees with access to shared drives, sharepoints or other data repositories not required for the role and function of the access holder\\n- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc.]\\n- Missed or incomplete reviews\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R161002',\n name: 'Misuse of general access rights'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '6271E64B-6AA9-4CF7-90B1-6EA2FF83FC3C',\n code: '873',\n name: 'Non-Deliverable Forward Fixing Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Non-Deliverable Forward (NDF) fixing dates between the bank and its counterparties\\n\\n',\n identify: 'Identify mismatches [e.g. due to short notice market holidays being announced by governments , there is scope for differences between each counterparties expectation of the NDF Fixing rate]\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '6A1C8BCB-C12D-4E01-B788-6F004F1448D2',\n code: '1251',\n name: 'eTrading Start of Day Readiness Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review status of eTrading systems and the production environment prior to market open\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- System updates or maintenance that need to be performed before the market opens\\n\\n\\\\- Runbooks that failed to identify and resolve system issues before the market opens\\n\\n\\\\- Problems with the soundness of the production environment that have not been escalated and resolved\\n\\n\\\\-eTrading system issues at start of business day that have not been resolved [e.g. unresolved connectivity issues with venues]\\n\\n',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'BD569B4E-96D1-47D3-A0B9-7035FCA6B0E3',\n code: '1780',\n name: 'Best Execution - Exception Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Perform root cause analysis\\n3. Define next steps with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the details of reports identifying potential failures to deliver Best Execution\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Executed trades where the price given to the client deviates from the reference market price without an appropriate rationale\\n- Executed trades with revenue for the bank that breaches defined thresholds where the root cause of the high revenue is that a client has not received the best possible execution\\n- Executed trades flagged by monitoring tools that represent genuine deviations from Best Execution policy\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F1693E1D-B2F3-4EC5-86F7-70CE0A0CB5E2',\n code: '1759',\n name: 'Pre-Release Testing & Approval Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review regression testing results against consumer and commercial cards and whether the implementation of changes to card systems impacts the way cards are designed to work [e.g. changes in interest charges and payment allocations]',\n identify: 'Identify one or more of the following as part of regression testing results:\\n- Any changes to the system logic around how interest rates are being charged or how payments are allocated that do not reflect the original request raised\\n- Changes that cannot be delivered as expected\\n- Changes where the final change design is not approved by both the change requestor and the change delivery manager\\n- Regression testing performed on cards post a major release where the test was not performed against the whole customer journey\\n- Failure to escalate and investigate issues on the back of Consumer or Commercial cards that failed regression testing\\n- Failure to adhere to Terms and Conditions post implementation of changes',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }, {\n code: 'R140322',\n name: 'Product pricing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'F6D255EB-A47F-4930-B15E-70D1A9024DF0',\n code: '891',\n name: 'Non-standard Trading Days Planning',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review eTrading platform parameters and relevant forward-planning procedures impacted by non-standard trading days [e.g. low volume days, high volume days, high volatility days, bank meeting days, elections].\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Deficiencies in forward planning [e.g. platform parameters requiring update, gap vs. procedure, staffing level, incorrect days for market events]\\n\\n\\\\- Contingency plans in place for planned market events (i.e. bank meetings, elections) in line with business policies.\\n\\n\\\\- Thresholds set and procedures in place for low and high-volume trading days.\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R150101',\n name: 'Hardware failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '60BD6C66-7AC4-4DCF-80F0-70E51862999F',\n code: '1626',\n name: 'Finance System Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of reconciliations between two or more Finance systems',\n identify: 'Identify errors in data completeness or accuracy between Finance systems',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'DF999496-B828-4B50-A7BD-711939D2749D',\n code: '1757',\n name: 'Portfolio Risk Strategy Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Escalate to appropriate risk committee for full review of risk appetite\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review portfolio risk strategies',\n identify: 'Identify one or more of the following issues:\\n- Lending decisions fall outside of risk appetite\\n- Changes to risk strategies are implemented without approval\\n- Credit risk data provided by the risk team is inaccurate and leads to incorrect decision making',\n risks: [{\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n code: '698',\n name: 'eTrading Alert Monitoring',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\n2. Determine circumstance of breach or deviation\\n3. Define next steps with relevant parties\\n4. Agree timeframe for completion with relevant parties\\n5. Confirm a valid justification is provided and recorded for exception(s) including ongoing monitoring of that exception\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of alerts generated by eTrading systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Alerts indicative of bank or client eTrading activity contributing to disorderly trading in the market that requires the activation of a kill switch\\n\\n\\\\- Alerts indicative of a breach of eTrading limits [e.g. Off-Market price limits, market risk limits, max message rate limits, aggregate order limits, unhedged limits] which require action by the desk\\n\\n\\\\- Alerts indicative of eTrading system health issues which require intervention to resolve [e.g. System latency alerts or application capacity threshold alerts, eTrading system connectivity alerts]\\n\\n\\\\- eTrading flow alerts which require intervention to resolve technical issues [e.g. Order lifecycle alerts, unmatched orders or unexpected fills]\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R150101',\n name: 'Hardware failure'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6D56D831-28DC-40F2-B095-72138E272BA4',\n code: '1506',\n name: 'FATCA Documentation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review client-related FATCA documentation',\n identify: 'Identify where FATCA documentation [e.g. FATCA Classification, global intermediary identification number (GIIN)] is not in line with regulatory requirements, internal or external data, past documentation, or has not been received in a timely manner or is missing for clients with US indicia',\n risks: [{\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'FF486E23-AED0-4D36-87E2-724E3C4ECB8D',\n code: '1349',\n name: 'Investment Restriction Rule Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review investment restrictions in the Investment Management Agreement and or Prospectus against the restrictions coded in the trading system or manual restriction list',\n identify: 'Identify any missing or erroneous investment restrictions',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '1F79238C-A5A5-496D-985E-7261180D4BE4',\n code: '1531',\n name: 'Fund NAV Breach Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review latest fund Net Asset Values and compare to prior values\\n\\n',\n identify: 'Identify changes in fund NAVs that are in excess of agreed thresholds\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '325C8898-F1D0-40DE-BAC7-732B7DB44B28',\n code: '1828',\n name: 'eTrading Periodic Algorithm Venue Registration Review',\n description: '',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Ensure regulatory registration / license / waiver /disclaimer is in place as required',\n review: 'Review eTrading algorithms venue registrations',\n identify: 'Identify one or more of the following during a periodic review:\\n\\n- Active algorithms not registered with venue\\n- Algorithms venue registrations containing incorrect/partial algorithm information [e.g., missing or incorrect attributes like owner, long code, short code]\\n- Registered algorithms that do not comply with venue requirements',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0EE976F1-FEF4-4723-A4AE-73564C95EA43',\n code: '1658',\n name: 'Client Classification and Validation Review (Compliance)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Halt trading or further business until all approvals are obtained\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review clients required regulatory classifications and associated documentation stored in internal systems versus defined market or product criteria [e.g. for MiFID retail/professional classification, Dodd-Frank, EMIR, FATCA, AEI, QI Regulations]\\n\\n',\n identify: 'Identify incorrectly classified clients [new or old] and missing or invalid documentation [e.g. self certification for Dodd-Frank or EMIR, Global Intermediary Identification Number for FATCA]\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'DA3BC77B-5AB7-4D45-8564-737DBE9C097B',\n code: '1004',\n name: 'Private Side Information Log Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the log of all private side issuer interactions [e.g. telephone calls, Bloomberg chat or minuted meeting to ensure dissemination of private information or the miss-categorisation of public information that is meant to be private at the time of receipt]',\n identify: 'Identify incomplete logs and misclassified information',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '7C7962D8-8B8C-4D57-B559-74FA5B3D96B4',\n code: '1578',\n name: 'End-User Computing (EUC) Register Review (Risk)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the End-User Computing (EUC) / End-User Developed Applications (EUDA) register\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n<br>\\n\\n\\\\- End-user computing (EUC), End User Developed Applications (EUDA), Critical or Complex Spreadsheets (CSs) required to support business processes not included in the EUC/EUDA register/inventory\\n\\n\\\\- EUC/EUDA/CSs on the register/inventory with missing, incorrect, or out date registered attributes [e.g. Owner, Description, Location, Risk Assessment results, Business Unit, Information classification, Documentation location, Active/Decommissioned status, Decommissioned date]\\n\\n\\\\- High risk EUC/EUDA/CSs without migration plans to move to Technology or dispensation to remain as EUC/EUDA/CSs\\n\\n\\\\- EUC/EUDA/CSs where configuration does not meet firm-wide EUC/EUDA standards [e.g. Software version, Version control, Retention, Access controls, Cell and Sheet Protection, Change control, Back-up approach, Data integrity checks, Availability during BCP event]\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n code: '89',\n name: 'Remote Trade Booking Activity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Remote trade booking activity [e.g. trade values, trade volumes, trade type, product types, booking trader permissions, remote booking regulatory obligations and internal policy obligations].\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Unauthorised Remote Booking activity [e.g.\\u00a0trading activity by remote bookers outside of trader mandates]\\n- Remote Booking activity not in line with local rules, regulations or internal policies and procedures\\n- Material\\u00a0Remote Booking/offshore activity that has not been reviewed or escalated [e.g. value, volume, or impact of remotely booked large transactions on the local balance sheet]\\n- Local activity in remote books that has not been reviewed by local Supervisors [e.g. insufficient documentation provided to Remote Managers such as incident reporting, P&L reports and undefined trading restrictions etc.]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160314',\n name: 'Inappropriate remote trading or trade booking'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '24FAAA18-5C4A-4B76-90A5-7554C5A80C96',\n code: '1458',\n name: 'SWIFT Messaging Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Determine circumstance of breach or deviation\\r\\n3. Define next steps with relevant parties\\r\\n4. Inform client of the circumstances of the event or issue\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review communications sent via SWIFT (Society for Worldwide Interbank Financial Telecommunication)',\n identify: 'Identify inaccurate, incomplete or other SWIFT message processing or data feed errors',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'BDCDD829-343E-4316-947B-7574C669B2EE',\n code: '1216',\n name: 'Non-Compliant Margin Trade Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade breaches for non-compliant margin trades (Initial and Variation margin)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Margin breaches [Initial and Variation] that have not been escalated\\u00a0to comply with uncleared margin rules [UMR]\\u00a0[(i.e. trades booked without appropriate legal documentation being in place]\\n\\n\\\\- Non-compliant margin trade breaches\\u00a0that have not been terminated or novated [i.e. replaced with an eligible legal entity] within required timeframe\\n\\n-Reported exception transactions that have not been compliant with margin regulations [e.g. Initial Margin posted following life cycle event]\\n\\n\\\\- Transactions in scope for Initial Margin Utilization (IMU) that are beyond acceptable regulatory and internal thresholds\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2EB7E5B2-3C43-471E-8A20-7642AA081FBF',\n code: '1679',\n name: 'MD Promotion Process Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review finalised promotion forms [e.g. Executive Committee or Sponsor approval/sign off for MD promotions has been obtained]\\n\\n',\n identify: 'Identify promotion forms without rationale around the final decision made or forms lacking the required validation checks against promotion criteria [e.g. employee tenure, performance indicators, impact of red flags, executive committee inputs etc.]\\n\\n',\n risks: [{\n code: 'R090205',\n name: 'Recruitment, hiring and onboarding failure'\n }],\n riskInventories: [{\n code: 'HR',\n name: 'HR'\n }]\n}, {\n id: '15371D74-8BA9-445D-90FE-766F90602E2C',\n code: '685',\n name: 'Research - Supervisory Analyst Pre-Distribution Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Research Report content, approvals and disclosures\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Research report content that does not meet Group standards, policies, procedures, or Supervisory Analyst handbook [e.g. missing mandatory report sections, missing date, biased, grammar, or spelling errors]\\n\\n\\\\- Research report that does not contain disclosures with respect to analyst's conflict of interest [e.g. Stock held in personal portfolio, Personal relations with management of research coverage company, not received undue influence or pressure to recommend]\\n\\n\\\\- Research report that does not contain disclosure with respect to firm's conflict of interest [e.g. Beneficial ownership or affiliate relationship with coverage company]\\n\\n\\\\- Research report that has not been checked against restricted or watch lists for list of issuers mentioned in the report\\n\\n\\\\- Research report, where required, that has not been reviewed by Control Room and or Compliance\\n\\n\\\\- Research report that contains incorrect or inappropriate manually overridden disclosures\\n\\n\",\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160809',\n name: 'Inappropriate distribution of research material (Inc. bundling)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFORES',\n name: 'Front Office Research'\n }]\n}, {\n id: 'BDE73BAC-1B98-4A91-9F91-77039BE8AF77',\n code: '9',\n name: 'Mandatory Block Leave Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n2. Complete and / or request completion of outstanding tasks or approvals \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review mandatory block leave reports for employees of the relevant business area',\n identify: 'Identify one or more of the following in relation to mandatory block leave:\\n- Employees who have not taken, or are not scheduled to take, their mandatory block leave by the end of the year\\n- Employees who have been identified as logging into firm systems whilst on mandatory block leave\\n- Employees who have been identified as entering a firm building whilst on mandatory block leave\\n- Employees who have been incorrectly flagged as in scope or out of scope of mandatory block leave policy',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R210103',\n name: 'Theft of intellectual property '\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A9E3C642-09D8-4CB6-BF9D-77B10A040AD6',\n code: '1739',\n name: 'Policies, Standards and Procedures Review',\n type: 'Detect',\n automation: null,\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review policies, standards and procedures\\n\\n',\n identify: 'Identify one or more of the following issues in policies, procedures or standards:\\n\\n- Policies which no longer capture all regulatory requirements\\n- Business procedures which do not accurately capture the latest business environment\\n- Use of out of date or decommissioned policies, procedures or standards\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'A19AEC7B-B51F-4080-9973-77F47258D054',\n code: '413',\n name: 'Index Documentation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review index documentation [e.g. index rebalanced dates, NAV publication times etc]\\n\\n',\n identify: 'Identify incomplete or missing documentation\\n\\n',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '59BCFBEC-AD3B-4F95-8B9C-78035874E401',\n code: '1402',\n name: 'Trade Lifecycle Event Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review current and future events impacting positions [e.g. corporate actions, option expiries, coupon payment dates etc.]\\n\\n',\n identify: 'Identify unactioned or inaccurately processed current or future events\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '750E1EDA-3F50-49D5-8907-784EA0D3E48D',\n code: '1417',\n name: 'Instrument Set-up Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new and amended instrument reference data or issuer data either manually or through system-enforced 4-eye validation\\n\\n',\n identify: 'Identify inaccurate, incomplete and unapproved instrument/issuer reference/static data\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n code: '1372',\n name: 'Model Usage Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review models used against model restrictions documentation',\n identify: 'Identify improper model usage [e.g. unapproved models, model usage that is inconsistent with documentation, performance issues etc.]',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'B03785D2-7E0B-4324-A9DE-791FA195CD44',\n code: '973',\n name: 'Third-Party Payments & Inducements',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review third-party invoices [e.g. to lawyers, brokers, rating agencies, distributors etc.]\\n\\n',\n identify: 'Identify irregular or suspicious invoices without business justification, prior to payment\\n\\n',\n risks: [{\n code: 'R160813',\n name: 'Giving or receiving inappropriate inducements'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6327E8E4-745B-4148-8249-79AC69BBA255',\n code: '1390',\n name: 'KYC Onboarding & Expansion Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Real time',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Complete and / or request completion of outstanding tasks or approvals\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new customer onboarding applications or existing customer applications for an expansion in products or services\\n\\n',\n identify: 'Identify applications or requests (for new customers or customers seeking an extension to products traded) which did not receive appropriate treatment [e.g. were erroneously approved, have missing or out of date documentation such as Dodd-Frank self-certification, are outside of the banks risk tolerance, did not have full due diligence performed, did not meet regulatory requirements]\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n code: '1692',\n name: 'Client System Access Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client access to firm applications and systems [e.g. Proprietary FX payment platforms or eTrading platforms or tools]\\n\\n',\n identify: 'Identify clients who have inappropriate or unauthorised system access and require their access removed [e.g. client users not listed on signed-off documentation from the client]\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R161002',\n name: 'Misuse of general access rights'\n }],\n riskInventories: [{\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'A52A9315-49FD-4791-B38A-7A638DD296F2',\n code: '1224',\n name: 'Pricing Attributes Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review product pricing attributes\\n\\n',\n identify: 'Identify incorrect attributes [e.g. insufficient term structure on volatility surface]\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0603E258-AC26-4B55-A4B4-7B4338DD170B',\n code: '1580',\n name: 'Illiquid Collateral Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n\\r\\n',\n review: 'Review lending or trades against less liquid collateral',\n identify: 'Identify collateral outside of thresholds or not in line with collateral agreements',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'F4EF7686-7915-4704-B03C-7B53743375C0',\n code: '1778',\n name: 'Best Execution - Regulatory Reporting Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the details of mandatory Best Execution reports [e.g. RTS 27 and RTS 28]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- RTS 28 reports with errors in the completeness or accuracy of the data\\n- RTS 27 reports with errors in the completeness or accuracy of the data\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '682554C9-1083-47BC-9D76-7B7A0B239FC7',\n code: '993',\n name: 'Transaction Underwriting Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new issuance proposal [e.g. financial status of the borrower, business model, organisation structure and operation, industry research, current portfolio of loan facilities and other debts, internal credit ratings, Stress testing and sensitivity analysis]',\n identify: 'Identify credit risk levels outside of risk appetite',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '2CC49BD4-A02D-440D-A259-7BC7B51D5934',\n code: '1395',\n name: 'Straight Through Processing (STP) Exception Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Perform root cause analysis\\r\\n3. Define next steps with relevant parties\\r\\n4. Amend inaccurate / incomplete or stale data or documentation\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review STP exception queues [e.g. Trades found in electronic platforms such as Bloomberg or Markitwire but not in internal trade stores]',\n identify: 'Identify trades in STP exception queues requiring further assessment, action or escalation',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n code: '1225',\n name: 'eTrading Client Onboarding Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new eTrading client set up and documentation in firm systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Clients with missing onboarding documentation [e.g. Clients without eTrading agreements in place or missing signed Terms of Business]\\n- Clients where their trade execution preferences have not been correctly set up in firm systems\\n- Clients with limits not set up or incorrectly set up in firm systems\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E498D52B-B1B2-42DE-B65A-7BEFA3C117EA',\n code: '1535',\n name: 'Non Standard Settlement Instruction Funds Transfer Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\n2. Determine circumstance of suspicious and / or irregular activity\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed non standard settlement payment instructions (SSI) held on group system\\n\\n',\n identify: 'Identify payment requests created for an illegitimate purpose\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '16A27AAA-7C22-44BF-BE7B-7C5906E0C174',\n code: '1822',\n name: 'eTrading Alert Effectiveness Metrics Review',\n description: '',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Agree timeframe for completion with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review metrics associated with eTrading alert generation, responsiveness and processing\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n- Where the percentage of alerts not delivered within 5 seconds as required by regulation is outside of thresholds [e.g. RTS 6 Article 16 requires alerts to be generated within 5 seconds]\\n- Where the percentage of alerts correctly closed with supporting evidence and in line with timeliness requirements falls below thresholds\\n- Business areas where the volume of alerts is disproportionately high and alert thresholds require recalibrating\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R150101',\n name: 'Hardware failure'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '32CC5516-E1AC-4DAB-8FCF-7C5DFC05D4BA',\n code: '1164',\n name: 'Exchange Open Interest (EOI) positions Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Exchange Open Interest (EOI) positions [ E.g. outstanding futures or options contracts that have not been settled or closed by offsetting transactions on a particular trading day]\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Concentrated positions on a particular prompt date [e.g. expiry date or delivery date] indicating a potential physical squeeze\\n\\n',\n risks: [{\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '47718FAB-7413-4D36-AFF8-7C7A44086A87',\n code: '1197',\n name: 'Open Tasks Check',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review the teams relevant sources of how they get their tasks [e.g. group inbox]\\n\\n',\n identify: 'Identify tasks not completed within the required timeframe\\n\\n',\n risks: [{\n code: 'R140309',\n name: 'Error resolution failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '8CE03DFC-6E04-4160-9163-7D558EDFDD4D',\n code: '1668',\n name: 'Voice Surveillance Review (Compliance) ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review voice recorded calls and associated communication surveillance alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Calls and or alerts indicating a breach of\\u00a0regulatory and legal obligations [e.g., collusive and anti-competitive practices, rate fixing, price manipulation, misleading information, inappropriate disclosures]\\n- Calls and or alerts containing sensitive client information or material non public information\\n- Calls and or alert breaches which have not been communicated to relevant business areas for approval or escalation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'B7AC6C3F-F217-428F-8A8D-7D8C959C4246',\n code: '1266',\n name: 'Transaction Advice Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review advice provided to clients on recent transactions\\n\\n',\n identify: 'Identify unfair or unreasonable advice\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: '25A25F35-69B0-4C84-82AC-7DB252BADA3A',\n code: '1030',\n name: 'Rehypothecation Attributes and Limits Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform counterparty on the other side of the trade\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review rehypothecation attributes and limits agreed with clients and limit utilisation\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- New/Amended rehypothecation attributes and limits not consistent with agreed legal documents\\n\\n\\\\- Client securities rehypothecated with no written consent from clients [i.e. co-mingling of securities with other client securities]\\n\\n\\\\-\\u00a0Rehypothecation limit breaches\\n\\n\\\\-\\u00a0Rehypothecated Limit breaches not reported as required\\n\\n\\\\-\\u00a0Rehypothecated collateral amounts not reported to clients in the agreed time frame\\n\\n\\\\- Received securities unfairly prioritised to firm accounts over client accounts\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'CBBE7EF1-C03D-450D-A0FF-7E12A57A53EE',\n code: '1706',\n name: 'Client Order Capture Completeness Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review accepted client orders\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Client orders not entered into order management systems within predefined timelines\\n- Trade order information not verified against available sources (e.g. email, chat etc)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '49936448-6210-4C55-83B6-7E1761B42DB0',\n code: '1488',\n name: 'Escalated Reconciliation Break Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Inform counterparty on the other side of the trade\\n\\n<!-- -->\\n\\n',\n review: 'Review assigned reconciliation breaks\\n\\n',\n identify: 'Identify breaks which require intervention, follow-up with counterparties or escalation\\n\\n',\n risks: [{\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0720A74F-D111-4C3D-9D68-7E8D8F56CAFA',\n code: '1392',\n name: 'Cash Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. 2\\\\.Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Inform counterparty on the other side of the trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Cash Reconciliation results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Cash reconciliations not performed in a timely manner\\n\\n\\\\- Cash reconciliation breaks or exceptions not investigated or sent to relevant business areas for remediation or explanation\\n\\n\\\\- Cash reconciliation breaks or exceptions without adequate root cause investigation and commentary where required\\n\\n\\\\- Missing or inadequate checker review of cash reconciliations\\n\\n\\\\- Unresolved breaks above defined age or value thresholds not escalated according to policies and procedures\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n code: '775',\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client Direct Electronic Access (DEA) trading activity\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Clients breaching thresholds indicating high levels of limit utilisation that requires escalation\\n- Client execution behaviour which deviates from preferences stated during onboarding or periodic due diligence refreshes\\n- Clients trading in instruments which they are not permitted to trade\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'CA9DA6F5-64D3-4353-80B2-7FBDDF40884F',\n code: '1404',\n name: 'Collateral Booking Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review collateral bookings\\r\\n',\n identify: 'Identify inaccurate collateral bookings [e.g. where they do not account for agreed haircuts]',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '20F5E9B5-9C6D-4BBC-B32D-7FDF0104B33B',\n code: '1263',\n name: 'Mandate Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review mandates\\n\\n',\n identify: 'Identify mandates requiring updates [e.g. based on experience, new products, instruments etc.]\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: 'C1207CD7-67B7-4887-8DDB-80F3E8800684',\n code: '1226',\n name: 'eTrading Data Distribution Review ',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review proposals for the sharing of eTrading client data with non-eTrading or eTrading functions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Client data that should not be shared with other areas of the firm as it would create a conflict of interest that cannot be mitigated\\n- Client data that should not be shared with other areas of the firm as it would be in breach of regulatory requirements or internal policy\\n- Client data that is proposed to be shared without sufficient justification or mitigating controls to prevent misuse\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '045D5DF2-82D0-4A7C-921B-8125FEC8D5D8',\n code: '1850',\n name: 'Marketing Material Approval Framework Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties \\n2. Amend inaccurate / incomplete or stale data or documentation \\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Marketing Material Approval Framework',\n identify: 'Identify one or more of the following:-\\n\\n- Framework policies, procedures and documents that are not aligned to regulatory requirements [e.g. to prevent unclear, unfair, not transparent, understandable or non-misleading information]\\n- Framework procedures that do not prescribe minimum review periods for marketing materials and templates\\n- Framework procedures that do not describe how dynamic disclosures should be used\\n- Framework procedures that do not describe roles and responsibilities and approval process for new and updated marketing material\\n- Framework procedures that do not prescribe marketing material document retention periods',\n risks: [{\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '3DA88C6F-C9AA-4F0E-A874-818EBA4D3F9B',\n code: '1704',\n name: 'eTrading Failover Capability Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Agree time-frame for completion with relevant parties\\n\\n4\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review eTrading systems failover capability and testing results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- eTrading systems which lack automatic failover or failsafe capabilities as required by regulation or internal resiliency policy\\n\\n\\\\- eTrading systems where the failover or failsafe capability has failed resiliency testing\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '243CA831-8316-4CD4-AFC5-81D3432A034E',\n code: '1639',\n name: 'Information Security Log Review ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary ',\n review: 'Review all information security log entries',\n identify: 'Identify information security logs not capturing security events [e.g. loss of Information, failure or malfunction, denial of service attacks]',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R160309',\n name: 'Use of unauthorised communication devices or methods'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '319BD00B-966D-4CA8-9D6C-8232AFB8C068',\n code: '1484',\n name: 'Nostro Cash Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Nostro Cash reconciliation breaks\\n\\n',\n identify: 'Identify cash balance/transaction differences/breaks between Nostro/Agent bank records and internal records which require intervention, follow-up with counterparties or internal escalation\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '8CEB462F-BEC3-413C-AED6-82D681CEFEFB',\n code: '1086',\n name: 'Inventory Reconciliation Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review inventory reconciliations\\n\\n',\n identify: \"Identify one or more of the following:-\\n\\n\\\\- Warehouse records and Bills of Lading\\u00a0not reconciled against firm's records\\n\\n\\\\- Unresolved breaks not escalated according to policies and procedures\\n\\n\\\\- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n\\n\",\n risks: [{\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R100201',\n name: 'External theft or robbery'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n code: '1228',\n name: 'eTrading Kill Switch Functionality Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Halt trading or further business until all approvals are obtained\\n\\n4\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review the results of kill switch testing\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Kill switches which do not activate within the timeframes required\\n- Kill switches where the functionality of the kill switch does not operate as intended or as documented in the procedures\\n- Kill switches which have failed scenario-based testing\\n- Kill switches that have been incorrectly excluded from the population for testing\\n- Kill switch activation procedures which require updating [e.g. Procedures do not reflect new or decommissioned activities, the full scope of data centres or servers applicable, or do not cover the re-enablement process]\\n- Kill switches with insufficient access rights [e.g. Where a Compliance or dedicated risk function does not have access to the kill switch functionality, or where traders or supervisors do not have access to kill switches within their business]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160802',\n name: 'Intentional mispricing'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '39C2ECF4-DF18-46E8-BC51-838F49A81A52',\n code: '1530',\n name: 'Corporate Action - FOBO reconciliation',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review corporate action internal reconciliations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Reconciliation breaks where corporate actions have not been correctly captured in Front Office, Middle Office and Risk systems [E.g. Announcement date, Record date, Ex date, Pay date, Entitlement]\\n\\n\\\\- Reconciliation breaks where corporate action cash [E.g. Dividend paid, Coupon paid, Redemption/Principal paid] has not correctly applied to Front Office, Middle Office and Risk systems\\n\\n\\\\- Hedge, Swap or other positions not reflecting corporate actions in their pricing or cash flow projections\\n\\n',\n risks: [{\n code: 'R140209',\n name: 'Post settlement lifecycle event failure (inc. derivatives and corporate actions)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9067FD90-7EC1-4508-B9C3-83D55AAE1300',\n code: '1074',\n name: 'Appropriate Staff Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n2. Define next steps with relevant parties \\r\\n3. Complete and / or request completion of outstanding tasks or approvals',\n review: 'Review Compliance staff experience to perform mandatory responsibilities related to Algorithmic Trading activity',\n identify: 'Identify where staff experience does not fulfil the duties and responsibilities of the firms Compliance function related to electronic trading activity [e.g.: understanding of platform operation, related applicable regulatory landscape incl. upcoming, governance & oversight mechanism, ability to contact key persons and senior managers if required]',\n risks: [{\n code: 'R090205',\n name: 'Recruitment, hiring and onboarding failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'A21E3B7B-A73B-465A-8876-83DD014699D8',\n code: '1650',\n name: 'Privileged Access Management Protocol review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review systems and infrastructure\\u00a0privileged access protocols\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Systems/infrastructure where privileged access rights/credentials are not controlled using a password vault solution or Privilege Access Management system (PAM)\\n\\n\\\\- Privileged access rights/credentials, not controlled by a password vault solution, are not suspended, modified or removed in a timely manner once no longer needed for purpose granted [e.g. break glass passwords not changed/revoked after authorised system reconfiguration]\\n\\n\\\\- Default System Accounts or Service Accounts that have not been disabled, renamed or their password suspended [e.g. Root, Admin, Administrator]\\n\\n\\\\- User accounts for users outside the organisation that have active privileged access rights/credentials [e.g. vendor support account with live network and application access]\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R161001',\n name: 'Misuse of privileged access rights'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '0330B6FC-8857-42FC-BF25-8407392735F6',\n code: '1385',\n name: 'Independent Price Verification Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results from month-end independent price validation.\\n\\n',\n identify: 'Identify mismarked positions (including those with manual overrides)\\n\\n',\n risks: [{\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '469DC463-6EC4-4D40-ACBB-841D12BBD093',\n code: '1554',\n name: 'Client Money and Assets Quality Assurance Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client money and assets procedures versus regulatory requirements [e.g. CASS, SEC Rule 15c3-3]\\n\\n',\n identify: 'Identify non-compliance with client money and assets requirements\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9C46FFBA-35B3-461B-83B8-8469B1022E25',\n code: '1373',\n name: 'Month End P&L Adjustments Validity Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review monthly P&L adjustments.\\n\\n',\n identify: 'Identify adjustments that fail to meet minimum standards [e.g. no ownership allocation or Front Office justification provided]\\n\\n',\n risks: [{\n code: 'R140314',\n name: 'Inaccurate accounting adjustments'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n code: '1801',\n name: 'Trade Surveillance - Trade Fill Rate Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client fills in trading activity executed by the desk\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Fill levels considered unfair or unreasonable based on the availability of the instrument in the prevailing market\\n- Triggered client stop loss orders which are not aligned with the day's trading activity\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'F45BF38C-1500-4125-BF91-855652B2D598',\n code: '1640',\n name: 'IT Alert Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of IT alert or failure\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Resolve IT alert e.g. abort job, restart job, restart service\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor all IT alerts\\n\\n',\n identify: 'Identify any alerts for failing hardware or software or potentially malicious activity [e.g. illegal, dangerous or undesirable traffic, unauthorized personnel activity, information security breaches, unauthorised network configuration changes, unauthorised devices or software, other potential cyber security events such as hacking or phishing]\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'B928B0AD-899B-4FFE-B143-856FBF548944',\n code: '1577',\n name: 'Distribution Lists Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review recipients on distribution lists\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Recipients who do not have legitimate reasons to receive distributed information [e.g. movers, leavers, or access giving rise to segregation of duties issues]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '47D31BD1-BAB3-487B-8CE6-85796206C84A',\n code: '1399',\n name: 'Fees and Billing Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review fee calculations [e.g. fees accrued at CCPs, counterparty accruals for Stock Loan activity]\\n\\n',\n identify: 'Identify issues with fee calculations which require amendment prior to payment\\n\\n',\n risks: [{\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }, {\n code: 'R140307',\n name: 'Inaccurate fee calculation or invoicing (unintentional)'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'FBE4849C-BF6A-4B3F-B07F-85A983D96964',\n code: '1556',\n name: 'Front Office Front Office (FOFO) Reconciliation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results of Front Office to Front Office (FOFO) system reconciliations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Front Office to Front Office (FOFO) system reconciliations not reconciling key attributes and economics of each trade [e.g. price, quantity, notional, direction, trade date, settlement date, currency, risk, counterparty etc.]\\n\\n\\\\- Unresolved breaks with missing or inadequate justification or investigation results\\n\\n\\\\- Unresolved breaks not escalated according to policies and procedures\\n\\n\\\\- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n\\n\\\\- Absence of segregation of duties between individual or team entering the trade, and individual or team performing the reconciliation\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '89ACBA9B-3D0B-4CD9-AD2E-86FFFCFF8B7D',\n code: '1559',\n name: 'Voluntary Corporate Actions Events Terms Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Determine circumstance of breach or deviation\\n4. Inform client of the circumstances of the event or issue\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review voluntary corporate actions event terms and responses\\n\\n',\n identify: 'Identify responses that are not captured or reconciled correctly or timely\\n\\n',\n risks: [{\n code: 'R140209',\n name: 'Post settlement lifecycle event failure (inc. derivatives and corporate actions)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1A4D23E8-35DC-4FCB-9536-87568587D07C',\n code: '1261',\n name: 'Transaction Reporting Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review transactions requiring reporting to regulators',\n identify: 'Identify erroneous or non reported transactions',\n risks: [{\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: 'F17DD67C-0DA5-4087-B4F3-87B08250D67C',\n code: '1483',\n name: 'Client Invoice Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Resolve internal data irregularity / system error\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review invoices prepared for submission to clients\\n\\n',\n identify: 'Identify incorrect fee charges or incorrect entries on invoices\\n\\n',\n risks: [{\n code: 'R160404',\n name: 'Excessive charges or fees'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n code: '703',\n name: 'eTrading Risk Control Limit Change Approval Review ',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review proposed eTrading limit change\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Proposed limit changes without appropriate rationale for approval [e.g., proposed change is greater than a defined threshold or proposed changes not based on genuine business need]\\n\\n\\\\- Proposed limit changes missing approvals from relevant supporting functions [e.g., Market risk, Credit risk, Technology or Compliance]\\n\\n\\\\- Proposed limit changes that have not been documented according to policy requirements\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '88F055B9-A4D4-4687-96C6-87F58693846F',\n code: '1000',\n name: 'Transaction Due Diligence Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review securities offering due diligence documentation [e.g. Information contained in selling documentation such as the prospectus, is accurate, fair and not misleading]',\n identify: 'Identify instances where appropriate due diligence has not been completed or documented',\n risks: [{\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '11F00399-56B4-4B48-8EE8-882269301AF5',\n code: '1102',\n name: 'Physical Commodity Quality Inspection Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review physical commodity quality inspection results\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Inspection results that fall outside of pre-defined thresholds\\n\\n',\n risks: [{\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'C39E681F-9247-4B2C-97D6-882D74A25FF2',\n code: '1096',\n name: 'Commodities Sanctions List Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review commodities sanctions and embargo lists and proposed trade\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Clients, or key staff at a client, who are subject to sanctions or embargoes\\n\\n\\\\- Proposed trade counterparties subject to sanctions or embargoes\\n\\n\\\\- Proposed trade countries of product origin or products subject to sanctions or embargoes\\n\\n\\\\- Proposed vessels or proposed transport routes subject to sanctions or embargoes\\n\\n',\n risks: [{\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '6BBBE969-4FEC-4144-B934-88402E31B47A',\n code: '1637',\n name: 'Governance Meetings Review (Technology)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Technology Governance Meetings',\n identify: 'Identify missing or out of data governance matters not in compliance with the terms of reference [e.g. IT Policies and Standards not reviewed, missing or late Performance Metrics, failed issue escalation, failed or delayed issue resolution, failed or delayed projects, inadequate budget monitoring]',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R160315',\n name: 'Failure to deal with regulator appropriately'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'C1B2A3D2-6F4C-4915-B50B-88C9413524C8',\n code: '874',\n name: 'Resting Order Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review unexecuted resting orders and orders still outstanding [e.g. good till cancelled, good till end of day, stop loss, VWAP etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Long standing resting orders which require re-confirmation with clients or cancellation\\n\\n\\\\- Resting orders not executed in line with client instructions\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n code: '1215',\n name: 'Restricted List Trade Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades executed in instruments, securities, products and with issuers and counterparties that are included in Restricted Lists\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Trades executed in instruments, counterparties or security issuers that are included in Restricted and/or Sanction Lists\\n- Trades executed on firm's own account while in possession of MNPI (Material Non Public Information).\\n- Generated alerts on the back of restricted stocks that have not been escalated and investigated in a timely manner.\\n- Instances where trading system does not allocate hard/soft blocks to restricted trades appropriately.\\n- Restricted Lists that have not been kept up to date [e.g. issuer/borrower names and securities no longer needed to be in the restricted list].\\u00a0\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '5380CC56-025C-4554-A7D2-8A1B027DDE39',\n code: '511',\n name: 'Cross-border Post-Travel Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n\\n3\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review travel records containing all cross-border business trips and associated reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Cross border travel which is approaching or has exceeded total permissible days allowed per policy\\n- Cross border travel activities not in line with pre-approved purpose of travel\\n- Travel licenses or registrations that have expired or nearing expiry which require renewal\\n- Unusual patterns or anomalies in employee travel which may indicate misconduct or breaches of local laws or regulations [e.g. Employees consistently not receiving required approvals or providing appropriate travel documentation]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190301',\n name: 'Breach of cross-border activities or extra-territorial regulations'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'AC0D45F4-EC4B-4273-AC9E-8A2A093D1B04',\n code: '1734',\n name: 'Illogical Status Code Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review exception reports identify illogical combinations in account status codes applied to customer accounts\\n\\n',\n identify: 'Identify one or more of the following impacting customer accounts:\\n\\n- Combinations of block and other status codes incorrectly applied to customer accounts\\n- Status code for interest rates incorrectly applied when they should be frozen\\n- Missing variable interest rates for customers with appropriate status code\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '4FC054F6-3342-4379-84C2-8A9F0E24023B',\n code: '1636',\n name: 'End-User Computing (EUC) Register Review (Technology)',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree timeframe for completion with relevant parties\\n4. Confirm a valid justification is provided and recorded for exception(s) including ongoing monitoring of that exception\\n\\n<!-- -->\\n\\n',\n review: 'Review all End-User Computing (EUC)/End-User Developed Application (EUDA) IT assets and EUC/EUDA Register/Inventory\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n<br>\\n\\n\\\\- End-user computing (EUC), End User Developed Applications (EUDA), Critical or Complex Spreadsheets (CSs) required to support business processes not included in the EUC/EUDA register/inventory\\n\\n\\\\- EUC/EUDA/CSs on the register/inventory with missing, incorrect, or out date registered attributes [e.g. Owner, Description, Location, Risk Assessment results, Business Unit, Information classification, Documentation location, Active/Decommissioned status, Decommissioned date]\\n\\n\\\\- High risk EUC/EUDA/CSs without migration plans to move to Technology or dispensation to remain as EUC/EUDA/CSs\\n\\n\\\\- EUC/EUDA/CSs where configuration does not meet firm-wide EUC/EUDA standards [e.g. Software version, Version control, Retention, Access controls, Cell and Sheet Protection, Change control, Back-up approach, Data integrity checks, Availability during BCP event]\\n\\n<br>\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '708DB4A3-4F4F-4625-948B-8B0D34C4DCFD',\n code: '500',\n name: 'Electronic Communications Surveillance Alert Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of suspicious and / or irregular activity\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review electronic communications surveillance alerts [e.g. Automated alerts generated through lexicon analysis or natural language processing rules and scenarios run across all electronic channels such as chatrooms, instant messaging or emails]\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\n\\n- Electronic communications which are indicative of collusive or anti-competitive behaviour\\n- Electronic communications which contain inappropriate or discriminatory language in violation of firm policy\\n- Electronic communications which are indicative of misrepresentation [e.g. When combining eComms and trade surveillance it is identified that a trader has misled a client on price, or it is suggested that the trader is sourcing a fill from a different counterparty when the fill has actually come from the traders' own inventory]\\n- Electronic communications which contain inappropriate sharing of client information\\n- Electronic communications which are indicative of the inappropriate sharing of non-public information [e.g. Draft Research reports]\\n- Electronic communications which are indicative of communication in breach of Non-Disclosure Agreements (NDAs)\\n- Electronic communications which are indicative of market abuse or other misconduct in violation of regulatory requirements or firm policy\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n code: '945',\n name: 'Market Making Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of market making quotes versus exchange continuity limits [e.g. Eurex rules requires market makers to provide two-way executable quotes for 95% of the trading period]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Market making activities requiring suspension due to exceptional circumstances (e.g. power outage, system issues)\\n- Quotes not meeting exchange parameters for spreads and minimum quantities\\n- Quotes outside the predefined price tolerance limits (e.g distance from last traded price, fair value etc.)\\n- Securities requiring deregistration as a market maker due to inability to provide continuous 2 way prices\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6C47109A-90BA-451A-80A8-8B183167BBB2',\n code: '1720',\n name: 'Base Rate Change Review',\n type: 'Detect',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review customer accounts and products which are impacted by base rate changes\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Base rate changes that have not been correctly applied to customer card pricing\\n- Customer accounts that have not been charged the base rate change communicate the previous month\\n- Standard product tariffs which have not been updated to reflect the new base rate\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }, {\n code: 'R140322',\n name: 'Product pricing error'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n code: '1083',\n name: 'Commodity Exchange Metrics Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review commodity exchange metrics [e.g. exchange open interest, warehouse inventory stock levels, warehouse stock movements, date spreads]\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Metrics indicative of trading activity being impacted by broader market conditions [e.g. supply and demand levels that may impact\\u00a0prices]\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '3266743B-5378-43FD-A5CE-8B7E9DC9C02F',\n code: '1426',\n name: 'Incomplete Trade Detail Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review failing or failed trades where missing economic detail is the root cause of the failure\\n\\n',\n identify: 'Identify the missing economic data required to resolve the failed or failing trade\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '42FB429A-4F22-4E01-950B-8C3747B1F4C3',\n code: '1137',\n name: 'Pipeline Vetting Documentation Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review pipeline vetting documentation\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Pipelines failing vetting criteria [e.g. Poor reputation of the operator and grid, environmental incidents etc.]\\n\\n',\n risks: [{\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }, {\n code: 'R120101',\n name: \"Physical property damages (firm's)\"\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '2AF902A1-D200-447E-9324-8C4879A90528',\n code: '1845',\n name: 'Conflict of Interest (COI) Disclosure Review ',\n description: '',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n\\n\\n3\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review Conflict of Interest (COI) Disclosures and Requests\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Employees [including new joiners and movers] that have not disclosed relevant Conflicts of Interest [such as outside business interests, personal account trading, private investments etc.] in the required time frame\\n\\n\\\\-Employees that have not disclosed Conflicts of Interest pertaining to securities trading accounts for themselves or immediate family members\\n\\n\\\\- Conflicts of Interest that have been submitted by employees but not reviewed in a timely manner by the relevant supervisors\\n\\n\\\\- Conflicts of Interest that cannot be appropriately managed but have not been rejected [e.g. instances where an employee conflict has been identified but has not been rejected and the employee continues to do business with clients]\\n\\n\\\\- Documentation of reviewed Conflicts of Interest that has not been retained in the appropriate system of record\\n\\n\\\\-\\u00a0Conflicts of Interest reviews not being performed ahead of investments made in third parties\\n\\n\\\\- Conflicts of interest training not provided to relevant business functions and completion of training is not documented\\n\\n\\\\- Instances where completion of conflicts of interest training has not been documented\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160812',\n name: 'Breach of gift and entertainment policy'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'F300926D-35DD-4133-A4FB-8C568112454D',\n code: '961',\n name: 'Securities Lending Disclosure Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Define next steps with relevant parties\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review approved ETF providers stock lending disclosures [ETF providers are not obliged to present daily data on how much of the portfolio is on loan or to which counterparties they are being loaned to. A lack of disclosure means an ETF trading desk has no visibility on the actual counterparty risk embedded in the fund]',\n identify: 'Identify providers where disclosure levels are no longer sufficient',\n risks: [{\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '80D8A3AE-2A3F-437C-BC6D-8C870C6CEA15',\n code: '1748',\n name: 'Vulnerable Customer Training Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks \\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Define next steps with relevant parties \\n4. Agree timeframe for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the results of training for employees who interact with vulnerable customers',\n identify: 'Identify one or more of following:\\n- Employees who have not completed their vulnerable customer training\\n- Third-party suppliers whose employees have not completed their vulnerable customer training \\n- Where vulnerable customer training is no longer considered fit for purpose and requires updating',\n risks: [{\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '50E2FDB9-0D51-42C6-890F-8CD7ACF2DE85',\n code: '975',\n name: 'Mandatory Training Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the completion of training. [E.g. Group Mandatory training, training required to obtain licenses and registrations]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Incomplete or overdue Group mandated training [E.g. Sanctions and Embargoes, Anti-money Laundering (AML), Anti-bribery & corruption (ABC), Anti-terrorist financing (ATF), Information Security]\\n- Employees without appropriate training required for licenses, registrations or authorisations [E.g. remote booking license]\\n- Discrepancies in training completion records [E.g. Incomplete supervisory oversight of training records]\\n- Lack of timely follow-up and escalation for training completion issues\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R160313',\n name: \"Inappropriate trading on employee's personal account\"\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n code: '1359',\n name: 'Restricted Securities - Trading Check (AM) ',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trades executed on restricted list securities',\n identify: 'Identify trades executed on products that are not included in a Permitted Product Lists or trades restricted due to conflicts of interest, sanctions etc.',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'E44843CD-F708-493C-9176-8DFA0DD1CA75',\n code: '1534',\n name: 'New Deal Capture Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new or amended deals or syndications\\n\\n',\n identify: 'Identify deals inaccurately captured in internal systems [e.g. booking does not match loan documentation, no credit approval in place, ticket details do not reconcile to prospectus etc.]\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '8C6D1635-616B-45C8-999D-8E004F6867E3',\n code: '1377',\n name: 'External Report Data Reconciliation Review (Product Control)',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results of data reconciliations for external financial or regulatory reports (Product Control)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Regulatory Reporting or Financial Reporting data reconciled against incorrect or inappropriate golden data source, general ledger or sub-ledger, or at an inappropriate level of granularity\\n\\n\\\\- Missing or inadequate\\u00a0investigation and resolution of reconciliation breaks\\n\\n\\\\- Missing maker-checker review of external report data reconciliation\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'D9B43802-EEB1-43E4-86CA-8E52D48583A2',\n code: '1367',\n name: 'End of Day Trade Review (AM)',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all blotters and pending orders at End of Day (EoD) (or transfer to next region)',\n identify: 'Identify any order not yet executed, orders is still in progress or trades not sent for settlement',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '3058CDF9-0F31-4424-8EA7-8F184A104823',\n code: '1513',\n name: 'Regulation Compliance Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: \"Review the firm's control environment vs regulatory requirements\\n\\n\",\n identify: 'Identify gaps or deficiencies in the control environment vs regulatory requirements\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }, {\n code: 'R190405',\n name: 'Breach of third party monitoring regulations'\n }, {\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1AB7C51E-95A4-42E9-9EC8-8F862054565A',\n code: '1619',\n name: 'Manual Adjustment Substantiation',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed manual adjustments',\n identify: 'Identify manual adjustments which have not been adequately prepared, evidenced or justified',\n risks: [{\n code: 'R140314',\n name: 'Inaccurate accounting adjustments'\n }, {\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '22A3B04C-7D45-45F6-8681-8F91BA034F71',\n code: '49',\n name: 'Late Trade Bookings Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review reporting of late trade bookings and their associated commentary and sign-off\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Late trades that have been missed or not considered as part of P&L reporting\\n- Trades booked late in the trading system due to lack of awareness around market cut-off deadlines\\n- Late booking activity which is indicative of misconduct or unauthorised trading\\n- Late trading activity which has not been reviewed or is missing appropriate justification\\n- Volume of late trade bookings that have breached the agreed threshold for misconduct over a defined period\\n- Late trade alerts not actioned by the Front Office Supervisor within the required timeframe\\n- Instances of late trade bookings that have not been escalated and resolved\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n code: '702',\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of sliced child orders split from a parent order when using an execution strategy\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Child orders where the aggregate of these child orders is greater than the parent order in either size, notional or risk\\n\\n\\\\- Child orders where the prices of the child orders go beyond the limit price of the parent order\\n\\n\\\\- Instances where the total number of child orders per parent order exceeds the maximum number of child orders allowed per parent order as defined by internal thresholds\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '786C20DD-7F79-41BD-98D6-915D9611610B',\n code: '1209',\n name: 'P&L Supervisory Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review P&L sign off activity and associated supervisory reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- P&L which has been signed off by inappropriate individuals [e.g. Traders below a specified corporate level]\\n- Overdue P&L sign offs that require escalation\\n- Differences between estimate and actual P&L that have not been appropriately explained by trader commentary\\n- P&L attribution analysis that has not been signed off or provided sufficient commentary by the trader\\n- P&L sign off statistics which indicate a downward trend in sign off timeliness\\n- P&L performance statistics which indicate an unexpected trend in P&L generation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '8F79ABC4-A584-4380-81C3-91EAC2776826',\n code: '419',\n name: 'Index Calculation Check',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the reconciliation between two separate calculations of the index\\n\\n',\n identify: 'Identify deviations from the intended Index output\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '747118F3-F08E-423D-9F95-922EE73D8FED',\n code: '1803',\n name: 'Supervisory Tasks Assignment Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the inventory of supervisory tasks assigned to Supervisors\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Supervisory tasks incorrectly assigned to Supervisors\\n- Supervisory tasks not assigned to in-scope Supervisors [e.g. Changes in people or products in-scope of the Supervisors remit that require new Supervisory tasks to be assigned]\\n- Proposed changes to Supervisory task assignment which cannot be approved [e.g. Due to the task still being required for the Supervisor to effectively perform their duties]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6D5BD806-551F-414D-9CFD-92AE6EB6D5D2',\n code: '1572',\n name: 'Counterparty Credit Rating Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation.\\n2. Halt trading or further business until all approvals are obtained\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review counterparty regulatory and internal initial and annual credit ratings\\n\\n',\n identify: 'Identify counterparty ratings that require amendment [e.g. inconsistencies between internal and regulatory ratings, where a regulatory rating has been updated but the internal rating has not and vice versa, where rating reviews are overdue etc.]\\n\\n',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'C1B06046-54AF-408E-8CF1-92D6498E20F0',\n code: '1442',\n name: 'Collateral Trade Failure Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n2. Investigate rationale for any late, missing or incomplete tasks\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review collateral failed trade reports',\n identify: 'Identify the cause of failure, the related stakeholder and unresolved failed collateral trades that require escalation',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '4F737968-644B-4DB0-8912-942C49BE9030',\n code: '1802',\n name: 'Value at Risk (VaR) Calculation Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Value at Risk (VaR) calculations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Incorrect calculation of VaR\\n- Day on day variance of VaR above agreed threshold\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '602B71CF-6C8E-4996-B833-94ABFD10C2FB',\n code: '1807',\n name: 'Supervisory Hierarchy Exception Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the details of supervisory hierarchy exception reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Existing employees or new joiners without an assigned Supervisor\\n- Supervisors without any employees under their supervision\\n- Supervisors being off-boarded who will require their employees to be transferred to another Supervisor\\n- Supervisors where the number of employees under their supervision breaches internal supervisory ratio thresholds\\n- Supervisory relationships in breach of internal rules [e.g. A private side employee being supervised by a public side Supervisor or vice versa]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160301',\n name: \"Non-compliance with firm's code of conduct\"\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '1D042989-D4C6-4D01-A806-94EBAD2DDC64',\n code: '1829',\n name: 'IT Software Asset Usage Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review software and application usage\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Usage outside of the rights permitted by the licences\\n- Continued use of software beyond a licence expiry\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '40B9C67A-8FF6-4AD3-A9A5-95AA35976B75',\n code: '1753',\n name: 'Debt Sale Accounts Reconciliation Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review reconciliations of Debt Sale accounts',\n identify: 'Identify one or more of the following Debt Sale reconciliation breaks: \\n- Discrepancies in volumes of final Sale Files selected for sale to a third party\\n- Discrepancies in the way customers are treated\\n- Discrepancies in terms of allocations of customers to Customer Financial Assistance (CFA) and Debt Collection Agencies',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'BD735BFC-AA9B-4AD2-B54C-95AC245B0D9A',\n code: '1686',\n name: 'Approximate Booking Pre-Trade Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n',\n review: 'Review proposed approximate bookings underlying\\u00a0details in trading systems for accuracy and completeness',\n identify: 'Identify pre-trade approximate booking trade details\\u00a0which do not satisfy the required accuracy and completeness criteria for a new booking [e.g. Approximate booking approval not aligned to approved approximate booking\\u00a0categories, unclear rationale for using an\\u00a0approximation, incomplete or inaccurate\\u00a0trade details included in the system.]',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '9AC8CDBD-635F-43C3-BB79-9626E4125BC8',\n code: '1634',\n name: 'Periodic Application and Hardware Capacity and Performance Assessment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Define next steps with relevant parties\\r\\n4. Agree timeframe for completion with relevant parties\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Application and Hardware Capacity and Performance Assessment Review',\n identify: 'Identify one or more of the following: \\n\\n- Incomplete application/trading system capacity and performance assessments \\n- Application/trading system capacity and performance assessments that do not consider relevant performance metrics [e.g., capacity utilisation, available processors, network speed, available memory, available disk] against current or future demand [e.g. a rolling 3 year horizon overlaid with expected growth in utilisation of the system across all drivers of growth such as clients, markets, instruments, algo, messaging, quote speed, quote capacity, order update rates etc.]\\n- Application/Trading system performance or capacity metrics without suitably defined thresholds [e.g. memory usage above 70%, disk capacity above 60%] for agreed time periods\\n- Known application/trading system performance or capacity issues without suitable remediation plan or insufficient progress on remediation plan',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '9E5C6A8A-7F9B-40B0-81BB-96714F3FF7FA',\n code: '1826',\n name: 'System Access Request Review (Operations)',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n\\n2. Amend inaccurate / incomplete or stale data or documentation\\n\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review employee requests for system access/permissions',\n identify: 'Identify one or more of the following:\\n\\n- System access requests not appropriately authorised\\n- System access requests not required for the role and function of the requestor [Internal or external 3rd party requests]\\n- System access and or permission/entitlement combination requests which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc]\\n- High value system access requests [e.g. payments] granted without an independent review of the request',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '8765AD3A-C2EB-4DE1-B04D-96A7A4EB4FDC',\n code: '1397',\n name: 'Late Trade /As-Of Trade Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n3\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review late trade / as-of trade bookings and their associated commentary and sign-off\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Trades that have not been booked and validated by the firm's agreed settlement date [e.g T+1] or remain open\\n- Late trades breaching the firm's relevant procedures when booked in Middle Office systems\\n- Late trades that have not been investigated or late trade investigation outcomes that have not been escalated to the relevant parties [e.g. Compliance, FO Supervisors etc.]\\n- Late trades which have not been reviewed or are missing appropriate commentary / sign-off\\n- Unprocessed late trades that have not been validated for more than the defined timeliness thresholds [trades outstanding > x number of days]\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R160315',\n name: 'Failure to deal with regulator appropriately'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A671F2C5-3223-49F3-943D-96AE513D758A',\n code: '1741',\n name: 'Pricing Change Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed changes to pricing and fee structures, including bespoke pricing',\n identify: 'Identify one or more of the following in pricing and fee setup :\\n- Unapproved changes in fee structures\\n- Unapproved changes in price points\\n- Missing documentation for bespoke rates [e.g. no rate review letter sent to customers]',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '542D932B-417B-48FB-AC1E-98602F1AC308',\n code: '1847',\n name: 'Front Office Middle Office (FOMO) Reconciliation Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n\\n2. Amend inaccurate / incomplete or stale data or documentation\\n\\n3. Complete and / or request completion of outstanding tasks or approvals\\n\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of Front Office Middle Office (FOMO) system reconciliations',\n identify: 'Identify one or more of the following:\\n- Front Office to Middle Office (FOMO) system reconcilicialtions not reconciling key attributes and economics of each trade [e.g. price, quantity, notional, direction, trade date, settlement date, currency, risk, counterparty etc.]\\n- Unresolved breaks with missing or inadequate justification or investigation results\\n- Unresolved breaks not escalated according to policies and procedures\\n- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n- Absence of segregation of duties between individual or team entering the trade, and individual or team performing the reconciliation',\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '3EFA24A6-4C08-4797-AAE6-987C102DB921',\n code: '878',\n name: 'Currency Pair Flag Review',\n type: 'Detect',\n automation: null,\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review currency pair flags to ensure they are correctly flagged as deliverable or as non-deliverable forward',\n identify: 'Identify incorrect flags',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'F9222CFB-B7A2-40D3-946B-98B02394EFA7',\n code: '1655',\n name: 'System Job Monitoring ',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of IT alert or failure\\n2. Resolve IT alert e.g. abort job, restart job, restart service\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor all system related jobs and associated alerts\\n\\n',\n identify: 'Identify system jobs not performing as required [e.g. failed backups, jobs not completing, failed batch files, failed interfaces, job not executed as agreed, failed alerts, queue capacity vs. utilisation, thread throughput, incoming message rate etc]\\n\\n',\n risks: [{\n code: 'R150101',\n name: 'Hardware failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '500E3301-82CD-4145-B98C-98DF0DADB868',\n code: '1786',\n name: 'Access-Related Segregation of Duties Review',\n description: '',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n4. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n<!-- -->\\n\\n',\n review: 'Review access rights to the IT environments\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Where access to IT environments is not segregated appropriately [e.g. production, development, testing]\\n- Unauthorised access to any of the IT environments\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R161001',\n name: 'Misuse of privileged access rights'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'FB5916BB-7065-4963-BDD3-999BF751BBF3',\n code: '1728',\n name: 'Customer Contact Training Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review training metrics for employees who are required to interact unsupervised with customers',\n identify: 'Identify staff who have failed training and require further assistance to perform their role effectively',\n risks: [{\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '845B09D6-660B-4B28-B329-99BE06362D44',\n code: '687',\n name: 'Research Client Access Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client access to research platforms or distribution lists\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Inappropriate client access to Research platform or distribution lists due to type of client\\u00a0[e.g. Client or investor is not classified as a Qualified Investor or is classified as Retail ]\\n\\n\\\\- Inappropriate client access to Research platform or distribution lists due to geographical location of client\\n\\n\\\\- Missing or incorrect\\u00a0Research client contact details in system of record\\n\\n\\\\- Research clients with user access entitlements to Research platform not in line with their contractual terms\\n\\n\\\\- Missing approval / validation from client relationship manager to onboard new research clients\\n\\n\\\\- Offboarded clients where client access to Research platform or distribution list has not been revoked or removed\\n\\n\\\\- Periodic review of research client access and or distribution lists has not been completed in required time frame\\n\\n',\n risks: [{\n code: 'R190301',\n name: 'Breach of cross-border activities or extra-territorial regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFORES',\n name: 'Front Office Research'\n }]\n}, {\n id: '31E3D77E-F748-4477-B117-99DC5AD590B0',\n code: '1709',\n name: 'Approved Distributor Due Diligence Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review findings from completed due diligence reviews [e.g. Details of the target market the distributor works with]\\n\\n',\n identify: 'Identify and escalate findings that require changes to distributor relationships [e.g. Findings that prevent distributor approval]\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R180401',\n name: 'Know your customer (KYC) failure'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n code: '1574',\n name: 'Credit Risk Limit Review (Risk)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all credit risk limits [e.g. counterparty, country, high risk, direct electronic access and algorithmic trading limits etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Credit limit reviews which have not been communicated to relevant business areas for approval\\n- Industry news or updates [e.g., rating announcements, stress testing results] not captured when assessing credit limits\\n- Credit limits requiring amendment due to change in firms risk appetite\\n- Unapproved changes to credit limits\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '5175D76F-25C6-4F3F-B111-9B433988038A',\n code: '1093',\n name: 'Exchange Limits Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Ongoing monitoring of exchange aggregate position limits [e.g. against the position limits specified by ESMA in relation to MiFID II]\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Aggregate exchange limit breaches without pre-approval [e.g., unauthorised trading]\\n\\n\\\\- Aggregate exchange tolerance limit breaches without pre-approval [e.g.,\\u00a070% of the limit set]\\n\\n\\\\- Aggregate exchange limit breaches that have not been appropriately explained by trader commentary\\n\\n\\\\- Aggregate exchange limit breaches which have not been communicated to relevant business areas for approval or escalation\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '1F8892AC-6E11-4BB4-A4FC-9BAE6BD563BB',\n code: '1714',\n name: 'Risk Retention Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review securitisation activity where the bank has acted as originator/sponsor\\n\\n',\n identify: 'Identify where the risk retained by the bank is less than defined thresholds [e.g. ESMAs Securitisation Regulation requires the originators of a securitisation to retain a net economic interest above defined thresholds]\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: '5A0F9483-D69F-482C-8534-9BCDAF339F5D',\n code: '78',\n name: 'Personal Account Trading Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trading on personal accounts by relevant employees [this includes the requirement for pre-approval to trade, the type of brokerage account used, and types of instruments permitted etc.]',\n identify: 'Identify unapproved trading, trades that breach company policy or that indicate suspicious behaviour',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160313',\n name: \"Inappropriate trading on employee's personal account\"\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '76C80398-E5E5-461D-8601-9BEB455A52D9',\n code: '1412',\n name: 'Client Classification and Validation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Halt trading or further business until all approvals are obtained\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review clients required regulatory classifications and associated documentation stored in internal systems versus defined market or product criteria [e.g. for MiFID retail/professional classification, Dodd-Frank, EMIR, FATCA, AEI, QI Regulations]\\n\\n',\n identify: 'Identify incorrectly classified clients [new or old] and missing or invalid documentation [e.g. self certification for Dodd-Frank or EMIR, Global Intermediary Identification Number for FATCA]\\n\\n',\n risks: [{\n code: 'R230101',\n name: 'Electronic data record keeping failure (storage, retention or destruction)'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0757C839-3C93-48F5-B625-9BFD4149D8D8',\n code: '1533',\n name: 'KYC System Update Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Know Your Customer (KYC) updates made to records held by the firm and the source documentation for those updates\\n\\n',\n identify: 'Identify incorrect, incomplete, or untimely input errors\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '4EADFB62-9847-4B43-A206-9C11C44A16A6',\n code: '917',\n name: 'Market Sounding Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the log and associated artefacts relating to market sounding communications conducted by the bank [e.g. the log of all market sounding activity, pre-approved scripts for each sounding, and call recordings]\\n\\n',\n identify: 'Identify where market soundings have not been performed in line with market sounding regulations, internal market sounding procedures, or have deviated from the pre-approved market sounding script [e.g. MAR Article 11 requires; obtaining the consent of the potential investor receiving the market sounding before disclosing inside information, explicitly informing the potential investor that they are obliged to keep that information confidential, and maintaining accurate records of all market sounding activity]\\n\\n',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'AACD12FC-9A29-4A94-AC4A-9D68CE612252',\n code: '1635',\n name: 'Data Encryption Lifecycle Management Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Agree timeframe for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review data encryption management life-cycle [including data in transit and at rest], physical access, logical access and user/role access to encryption keys\\n\\n',\n identify: 'Identify data that is not encrypted, masked, tokenized or protected by other access controls throughout the life cycle of that data, is using expired certificates/keys, is using certificates/keys with longer expiry life than permitted by policy, or requires non standard cryptographic tools\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '18E86723-DB49-4750-A0F6-9D6C4F7E7D0F',\n code: '1582',\n name: 'Key Controls Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key controls across business divisions\\n\\n',\n identify: 'Identify inadequate key control documentation [e.g. incomplete, not reviewed or approved, not updated with latest risk controls]\\n\\n',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '957F7F86-AD59-4B7C-A68F-9DCD8EF9B4B2',\n code: '908',\n name: 'Barriers and Trigger Events Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Define next steps with relevant parties\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review suspicious trading surveillance results for barrier and trigger events',\n identify: 'Identify trading that is in the favour of the trading desk and in detriment of the client [e.g. trading in a manner to influence the likelihood of a barrier or digital being hit]',\n risks: [{\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2EAA2889-9E45-444E-9B6D-9DF17BA63747',\n code: '1781',\n name: 'Best Execution - Execution Venue Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the list of execution venues used by the business\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Execution venues which, based on performance, cannot reasonably be expected to provide Best Execution and should be removed from the list of execution venues\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0866F600-8038-437E-B946-9F47AD7A2300',\n code: '1499',\n name: 'KYC Procedure and Training Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Real time',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the Know Your Customer (KYC) procedures and training content\\n\\n',\n identify: 'Identify KYC procedures or training content not aligned with regulatory changes or requirements\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EB09150A-64D8-487B-BC6C-9F5180BA4307',\n code: '1784',\n name: 'Volcker Rule - Volcker Programme Compliance Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review evidence and reports relating to the implementation, operation and effectiveness of the Volcker compliance programme\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Missing or inadequate processes that mean the CEO of the firm is unable to confirm that the bank is able to effectively establish, maintain, enforce, review, test or modify the Volcker compliance program\\n- Required changes to existing Volcker compliance processes that are not captured in remediation programmes\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190406',\n name: 'Breach of the Volcker requirements of the Dodd-Frank Act'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n code: '1824',\n name: 'eTrading Pre-Trade Price Tolerance Review',\n description: '',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review the prices of outgoing orders and quotes from eTrading systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Orders or quotes with prices outside of existing static or dynamic market price collars [e.g. Prices compared to an internal VWAP price plus an offset based on historical volatility to determine whether the price is too aggressive]\\n- Orders with aggressive prices that adversely impact market prices [e.g. By excessively cross the spread]\\n- Orders or quotes with prices outside of dynamic client-specific price collars [e.g. Collars based on a combination of client tiering level and product liquidity]\\n- Orders or quotes with prices which deviate from the market price by more than levels specified as acceptable by the venue rulebook\\n- Orders or quotes that deviate from the last traded price by more than defined thresholds\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n code: '1240',\n name: 'End of Day Trade Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trading books at End of Day (EoD) (or transfer to next region) for un-allocated trading risk, and temporary holding accounts used to facilitate filling of an order are flat [e.g. no rebook at average rate (RAR) trades]',\n identify: 'Identify client holding accounts that are not flat or where algorithm order is still in progress ',\n risks: [{\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'A21821EF-B1F1-4E8C-9F88-A0DE0D5FC9F0',\n code: '1453',\n name: 'Collateral Value Monitoring',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor changes in collateral value and margin triggers stipulated in client agreements',\n identify: 'Identify material changes in collateral values that will trigger a margin call or release',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '19AEFF79-ABB8-4007-8769-A13BD0170978',\n code: '1376',\n name: 'Critical Data Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review critical data fields used in systems\\n\\n',\n identify: 'Identify inaccurate or incomplete entries [e.g. data used for regulatory filings, FX rates feeding internal systems such as the general ledger etc.]\\n\\n',\n risks: [{\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'E1D43EE4-0AAA-4D72-889E-A14A2E7239D8',\n code: '1536',\n name: 'Non-Deliverable Forward Currency Pair Trade Booking Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trades booked as non-deliverable forwards\\n\\n',\n identify: 'Identify trades booked as non-deliverable forwards where settlement will be in the underlying currencies\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '752F9B3C-EC00-48E0-986B-A19E24FC6774',\n code: '1609',\n name: 'Financial and Regulatory Reporting Change Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Financial and Regulatory reporting changes\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Proposed changes to financial processes and procedures that have not been reviewed, updated and approved by relevant stakeholders.\\n\\n\\\\- Proposed changes to financial processes and procedures that have not been communicated to the relevant implementation owners in the appropriate timeframe\\n\\n\\\\- Reporting changes that have not been accurately documented or not documented in the appropriate system of record\\n\\n\\\\- New regulatory reporting changes that have not been validated by senior managers\\n\\n\\\\- Changes that were not implemented and communicated prior to financial and regulatory reporting being prepared\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'F4947F47-02DE-44E1-AC37-A24B0AE17221',\n code: '400',\n name: 'Benchmark Change Proposal Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed changes to benchmarks [e.g. new benchmark, changes to existing benchmark, cessation of or retirement from existing benchmark, new participation in a benchmark]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Proposals for new benchmarks or changes to existing benchmarks without the required business case or supporting documentation and approvals\\n- Unapproved changes to benchmark documentation\\n- Proposals to participate in the determination of a benchmark without the required controls and governance framework in place\\n- Ceasing or changing participation in the determination of a benchmark without approval\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'BD0F0896-C7F4-4EF8-B2BF-A2B12C982A16',\n code: '1454',\n name: 'Corporate Actions and Asset Servicing Events Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Define next steps with relevant parties\\r\\n3. Determine circumstance of breach or deviation\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all corporate action and asset servicing events',\n identify: 'Identify event details [e.g. ex-date, record date, pay date and event type] that have not been captured, communicated or processed correctly [i.e. are incomplete, inaccurate or untimely]',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '7A3270DC-B228-4D2C-923E-A3239AA79C25',\n code: '1356',\n name: 'Mandatory Training Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks \\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review training report results for the relevant business area [e.g. market abuse, Anti-bribery and corruption etc.]',\n identify: 'Identify missed or delayed training',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '18162F27-8CCC-4926-A0AC-A34BBECA3281',\n code: '1779',\n name: 'Best Execution - Scoping and Obligations Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all business areas of the bank, activities performed and products traded in the context of Best Execution regulation\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Business Lines which have not been correctly assessed as in or out of scope for Best Execution obligations\\n- Products that have not been correctly set up in firm systems with the correct Best Execution obligation settings\\n- Client interactions types not correctly classified as in or out of scope for Best Execution obligations\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C7D04B5D-D117-41DF-ACEB-A3A966A40C03',\n code: '1259',\n name: 'Acting as Sponsor Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Halt trading or further business until all approvals are obtained\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review transactions where the bank holds the role of sponsor',\n identify: 'Identify instances where the bank is unable to fulfil sponsor requirements [e.g. inadequate sponsor records, creates conflicts of interest, has not followed local jurisdiction rules such as UK Listing Authority sponsor requirements etc.]',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: '9710147D-91BA-44DB-A58D-A3D573853D26',\n code: '1652',\n name: 'IT Software Asset License Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review software and application licenses\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Software and applications with licences due to expire\\n- Software and applications with a pending licence recertification review\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '500AE240-8FF0-40C2-89C5-A411CCEF361B',\n code: '1171',\n name: 'Funds Transfer Pricing Monitoring ',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review transactions that have not been conducted at the Funds transfer pricing rates (FTP) between Treasury and other business lines [FTP rate is the rate Treasury buys funds from business units that gather deposits or otherwise attract funds and allocates them to the business units that make loans or acquire other assets]',\n identify: 'Identify incorrect funding rates or trades priced using incorrect rates',\n risks: [{\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '5649AF3F-2998-4D4C-9C90-A478A6E1693D',\n code: '1463',\n name: 'Transaction Processing Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor transaction processing queues, both automated and manual',\n identify: 'Identify fails and unusual activity [e.g. volumes or other activity spikes]',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '919865C9-C58A-4FB5-B270-A4B571428B29',\n code: '19',\n name: 'Marketing and Disclaimers',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review marketing material and disclaimers pre-distribution\\n\\n',\n identify: 'Identify all marketing materials and disclaimers distributed with clients or prospective clients which maybe unfair, unclear or misleading or does not adequately detail the risks involved in a manner that is appropriate and proportionate to the target client and risk profile\\n\\n',\n risks: [{\n code: 'R170104',\n name: 'Litigation with clients for unsatisfactory relationship management '\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '4D1F5063-0E90-414B-B5F7-A52CA53F2804',\n code: '1496',\n name: 'Sanctions Hits Filter Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n\\r\\n',\n review: 'Review transactions flagged as a potential sanction hit',\n identify: 'Identify false positive transactions and transactions that need escalation',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n code: '704',\n name: 'eTrading Algorithm Inventory Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the eTrading activity inventory documenting all algorithms and approved eTrading activity performed by the business\\n\\n',\n identify: 'Identify one or more of the following gaps in the eTrading activity inventory:\\n\\n- Any market-making, execution or risk management activities not documented in the inventory\\n- Algorithms documented in the inventory without the key data points required by regulation [e.g. No asset class, instrument or region applicability; missing or inaccurate data points relating to algo ID, algo owner, algo status, approval or retirement dates; no overview provided of the algo behaviour, restrictions on use, or link to wider supporting documentation]\\n- Algorithms with missing or insufficient supporting documentation [e.g. where the algorithms usage within the wider algorithmic trading system architecture is not clearly documented]\\n- Activity documented in the inventory without linkage to the corresponding controls, processes, strategies, systems and technology components, model usage details, analytical tools or vendor applications\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240202',\n name: 'Rogue algorithms (intentional)'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n code: '766',\n name: 'eTrading Trading Statistics Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review eTrading trading statistics [e.g. Statistics related to order fills,\\u00a0acknowledgements and cancellations, rejected trades, order-to-trade ratios]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n- Smart Router Reporting that indicates a deviation from expected ranges or a degradation in performance\\u00a0\\n- Execution Quality metrics outside of thresholds [E.g. Metrics that show a degradation in performance over time, or partial fill metrics which indicate a degradation in algorithm performance ]\\n- Trend analysis by strategy that indicates a degradation in performance [E.g. Where trades were rejected by the algorithm but should have been filled]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '654B48E2-8D3E-4598-A8C9-A5BBF6F146D1',\n code: '402',\n name: 'Benchmark Inventory Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the inventories of benchmarks administered, contributed to, used or retired\\n\\n',\n identify: 'Identify unapproved changes since the last review or updates not correctly applied to the benchmark inventory or in a timely manner\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EBB7766B-BD43-4C24-8BA9-A5BCBE971241',\n code: '1608',\n name: 'Finance Governance Forum Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review metrics, outstanding actions and issues at the appropriate governance forum [e.g. Key control indicators, key risk indicators, issues and actions, key items for supervisory review and sign off]\\n\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference\\n\\n',\n risks: [{\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n code: '1797',\n name: 'Trade Surveillance - Price Manipulation Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity and/or trade surveillance alerts on bid/offer price action\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Orders or quotes entered into the market at or near the bid or offer price without the intention to trade at those prices but to create the impression of demand (spoofing)\\n- Orders or quotes entered into the market at different prices above the offer price or below the bid price without the intention to trade at those prices but to create the impression of demand (layering)\\n- Orders or quotes entered into the market which are instantly reversed to manipulate prices (flipping)\\n- Trades which manipulate the closing price of a product (marking the close, ramping, hammering)\\n- Trades which aggressively manipulate price by moving the bid price up or down (advancing the bid, momentum ignition)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n code: '1140',\n name: 'Model Approval Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new model approvals',\n identify: 'Identify missing new model approvals / rejections / proposed amendments ',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n code: '1832',\n name: 'eTrading Outstanding Orders Limit Review',\n description: '',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review eTrading aggregated outstanding orders across all applicable dimensions [e.g. Quantity, Order / quote size, notional or risk]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Aggregated values of outstanding orders across any dimension which have breached defined limits [e.g. The notional of all outstanding orders exceeds a defined value]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F7595075-C9C9-4C79-9818-A616E07D2761',\n code: '1394',\n name: 'Payments Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review payments to be sent to external and internal parties',\n identify: 'Identify differences between payments to be made and details received from external counterparties [e.g. available balances, credit limits, amount, currency, duplicate payments, SSIs etc.] including manual payments',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '30A969B6-A33F-4290-B5F2-A6843BBB7B23',\n code: '1818',\n name: 'Crisis Management Plan Testing',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n2\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review Crisis Management Testing Procedures\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Issues identified from Crisis Management testing that have not been resolved [e.g. issues identified from Denial of Access, Denial of Service and Call Tree Tests]\\n- Failed tests that have not been retested within the defined timeframe\\n- Crisis management plan tests do not cover the necessary processes [e.g. unavailability of premises,disruption of IT applications, shortage of staff, disruption of critical services by vendors]\\n- Crisis management plans that have not been tested [e.g. through periodic simulation tests, gap analysis between testing program and business continuity procedures, call tree / notification tests]\\n- Crisis management plans that have not been tested as per the Business Continuity Management testing calendar\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C94ADFAF-D615-43A6-AE16-A6E64E945937',\n code: '1474',\n name: 'Regulatory Reporting Pre-Submission Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n',\n review: 'Review the preparation, completeness and timely submission of regulatory reports pre-submission',\n identify: 'Identify incomplete, inaccurate, unapproved or delayed reports',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A2F84E42-8FBA-422A-B11C-A6F3D7219C8E',\n code: '1716',\n name: 'Business Strategy Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\u000b3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the effectiveness of business strategy against defined targets and requirements\\n\\n',\n identify: 'Identify where business strategy is not developing in line with expectations [e.g. revenue or market share not increasing, products not developed sufficiently to support strategy, risks and challenges impeding strategy rollout etc.]\\n\\n',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: '724D7F20-FDCF-494F-B36D-A786795BFF35',\n code: '1387',\n name: 'Intercompany Transactions Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Intercompany transactions, balances and breaks [e.g. Specific intercompany breaks, data integrity of reported transactions]\\n\\n\\n\\n\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Intercompany reconciliations not performed in a timely manner\\n\\n\\\\- Breaks or exceptions arising from Intercompany reconciliations not investigated in a timely manner\\n\\n\\\\- Breaks or exceptions arising from Intercompany reconciliations not supported by appropriate rationale\\n\\n\\\\- Unresolved or aged breaks beyond defined thresholds not escalated according to policies and procedures\\n\\n\\\\- Intercompany reconciliations missing maker checker review\\n\\n\\\\- Intercompany Reconciliations not saved in appropriate location [eg sharepoint, shared drive etc]\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '9F9BB3B3-8556-406C-A9C4-A80335AF7EE0',\n code: '1268',\n name: 'Research Payment Account Budget Approval',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review proposed client by client annual research payment account budget and overall research payment budget',\n identify: 'Identify significant variances from previous research actual spend. ',\n risks: [{\n code: 'R160404',\n name: 'Excessive charges or fees'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: '3FEC8B85-9171-4EE1-AC3C-A88B1AAABEAC',\n code: '1436',\n name: 'Physical Asset Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review asset vault, documentation and systems to ensure physical assets such as physical stock are appropriately secured, retrievable and accurately accounted for\\n\\n',\n identify: 'Identify physical assets that have not undergone 4-eye review to ensure their appropriate storage, maintenance and alignment with records\\n\\n',\n risks: [{\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R230102',\n name: 'Physical record keeping failure (storage, retention or destruction)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'C3326A0F-2BEE-490F-B7EA-A9313D3DAA0D',\n code: '1388',\n name: 'Aged Confirmation Breaks Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n4. Investigate rationale for any late, missing or incomplete tasks\\n5. Inform counterparty on the other side of the trade\\n6. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n<!-- -->\\n\\n',\n review: \"Review incoming trade confirmations in the firm's trading platform, OTC contracts with counterparties and transactions pending confirmation.\\n\\n\",\n identify: 'Identify one or more of the following in relation to trade confirmations:\\n\\n- Aged trades requiring escalation that remain unconfirmed due to not having been agreed by or received from the counterparty\\n- Outstanding counterparty feedback for a period greater than the agreed threshold impacting timely affirmations and confirmations\\n- Unresolved or suppressed confirmations without up-to-date commentary for a period greater than the agreed threshold\\n- Confirmation breaks due to trades pending validation for a period greater than the agreed threshold\\n- Aged outstanding issues related to approving the confirmation template for a period greater than the agreed threshold\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '55212FBD-50FE-4A0C-91F5-A9469FFF174D',\n code: '1479',\n name: 'Failed Trade Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Define next steps with relevant parties\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trades which fail to settle on their contractual settlement date',\n identify: 'Identify fails which require intervention, follow-up with counterparties or escalation',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '4BBDE120-F01B-46C1-ADC9-A961FF2366D6',\n code: '1505',\n name: 'Reportable Data Authorisation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate',\n review: 'Review approval of tax reports prior to submission',\n identify: 'Identify tax reports that have not undergone a 4-eye review prior to submission',\n risks: [{\n code: 'R220201',\n name: 'Inaccurate tax calculation, reporting, collection or payment'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '986C1143-E8F0-4162-A4E0-A99478F6189C',\n code: '1504',\n name: 'Third-Party Performance Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n3\\\\. Define next steps with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<br>\\n\\n',\n review: 'Review third-party [e.g. vendors, suppliers, service providers] performance versus the service level agreement (SLA) [e.g. using metrics, due diligence questionnaires, periodic risk assessments or other means]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Events or issues indicative of a deficient or deteriorating control environment [e.g. qualified internal or external audit reports]\\n- Events or issues indicative of a deterioration in Operational Resilience [e.g. Important Business Service degradation, fourth party performance degradation, BCP test failure]\\n- Breaks, fails or CASS breaches outside of agreed thresholds\\n- Client account management activities not meeting the SLA criteria\\n- Transaction processing activities not meeting the SLA criteria\\n- Other qualitative or quantitative performance metrics not meeting the SLA criteria\\n- Inadequately logged loss events\\n- New loss events not yet apportioned between the firm and third party per the SLA\\n- Delays in agreed service issue remediation\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n code: '1796',\n name: 'Trade Surveillance - Collusive Conduct Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity and/or trade surveillance alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Transactions that do not alter the beneficial ownership or which intend to conceal or manipulate appearances (e.g. money pass, wash trading, creating a false impression of liquidity)\\n- Simultaneous opposite (buy vs sell) orders\\n- A Buy (sell) of currency pairs or financial instruments traded with interbank counterparties and subsequent sell (buy) of the same currency pair of financial instrument with the same counterparty on the same trade date\\n- Cross trades where price deviates from prevailing market prices beyond ranges set by local exchange rules and/or regulations\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '61FAAB29-2CF3-477D-97E7-AAAB7CFF73CD',\n code: '525',\n name: 'Client Classification Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Halt trading or further business until all approvals are obtained\\n3. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review client categorisations and waivers versus the products being sold [For clients and markets that are in scope for MiFID II, clients are categorised as a retail client, professional investor, or an eligible counterparty depending on the size of the clients portfolio, their knowledge and understanding of financial markets and products, and the number and size of transaction executed]\\n\\n',\n identify: 'Identify instances of retail clients being sold non retail products without the appropriate waiver documentation\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '10BAF442-477B-4414-9440-AAD1634F1C39',\n code: '1501',\n name: 'Client Tax Documentation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review client tax documentation',\n identify: 'Identify tax documentation which has not been processed correctly or is inadequately evidenced',\n risks: [{\n code: 'R140316',\n name: 'Customer on-boarding failure'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n code: '1799',\n name: 'Trade Surveillance - Large Order Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity and/or trade surveillance alerts for large trades, orders and quotes\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Unusually large trades by size or notional (market dominance)\\n- Orders executed above predefined thresholds set for that market\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '4374A4F5-7890-43BD-AF26-AC71BC497C6A',\n code: '1665',\n name: 'Regulatory Disclosure Review (Compliance)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review submitted regulatory disclosures [e.g. shareholding disclosures, positional disclosures, holdings and issuer disclosures]\\n\\n',\n identify: 'Identify incomplete, inaccurate, inconsistent, unapproved or missed regulatory disclosures [e.g. non disclosures for holdings that has increased over the agreed threshold, unapproved positional disclosures]\\n\\n',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'EB3B69C0-FF06-4E72-AEFA-ACB8FDCA0FB3',\n code: '1491',\n name: 'Client Instructions Authenticity Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review authenticity of client instructions received\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Instructions accepted with incomplete or missing verification of client instruction signature against sample/specimen signature held on relevant Group system of record\\n\\n\\\\- Absence of 4 eye review that signature verification has been performed\\n\\n\\\\- Call back not successfully completed if call back required\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'B520D4A4-6A9F-4D7E-BC19-ACE9323D81DF',\n code: '1749',\n name: 'Account Reopening Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree timeframe for completion with relevant parties\\n4. Confirm a valid justification is provided and recorded for exception(s) including ongoing monitoring of that exception',\n review: 'Review customer accounts that have been re-opened post-closure or post being assigned a blocked or dormant status code',\n identify: 'Identify customer accounts which have been incorrectly reopened and may not be enforceable',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'F363D5DD-A764-4A7E-AF23-AD2E4339087C',\n code: '1456',\n name: 'Counterparty Fee & Commission Pre Payment Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the appropriateness of payments to counterparties [including internal, external and brokers]\\n\\n',\n identify: 'Identify erroneous payments to counterparties or payments not in line with the product agreement\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '655A98CA-105E-4EFB-A690-ADA5F6BCA6DF',\n code: '1549',\n name: 'User Acceptance Testing Review (Operations)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review system changes prior to release [e.g. changes to eTrading platform pre-deployment\\n\\n',\n identify: 'Identify changes that do not pass user acceptance testing or have not been appropriately approved\\n\\n',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'ETOPS',\n name: 'eTrading Operations'\n }, {\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '64235885-1235-41E1-BC60-AE28FB23DB84',\n code: '879',\n name: 'Event Date Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review future events impacting positions [e.g. corporate actions, option expiries, coupon payment dates, rate resets etc.]\\n\\n',\n identify: 'Identify unactioned events\\n\\n',\n risks: [{\n code: 'R140209',\n name: 'Post settlement lifecycle event failure (inc. derivatives and corporate actions)'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A5A5BDE2-5657-475E-8474-AE5EC1E0C0D3',\n code: '1138',\n name: 'Storage Vetting Documentation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review storage vetting documentation\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Commodity storage operators failing vetting criteria [E.g. poor reputation of the operator and grid,\\u00a0environmental incidents]\\n\\n',\n risks: [{\n code: 'R120301',\n name: 'Breach of health and safety standards'\n }, {\n code: 'R140211',\n name: 'Physical commodity delivery error'\n }, {\n code: 'R120101',\n name: \"Physical property damages (firm's)\"\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '909CC80C-BDC7-4FF4-9A8D-AE9783BCC238',\n code: '1614',\n name: 'Risk Weighted Assets (RWA) Pack Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the Risk Weighted Assets (RWA) Pack\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Missing Risk Weighted Assets (RWA) numbers and or supporting calculations in the RWA pack\\n\\n\\\\- Missing metrics and or key drivers of changes in RWA beyond defined thresholds (% of RWA or $ value) from previous period to current period\\n\\n\\\\- Missing or Incomplete list of data sources used for calculating RWA\\n\\n\\\\- Absence of key stakeholders or suitable delegates in RWA review meeting\\n\\n\\\\- Whether the RWA review meeting has taken place within the prescribed time period after production of RWA numbers\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '7EBD4589-3A48-490C-BB83-AED679BF3EAF',\n code: '1526',\n name: 'Client Money and Assets Governance Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Complete and / or request completion of outstanding tasks or approvals \\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review client money and assets [e.g. CASS, MiFID, SEC Rule 15c3-3] policies and procedures',\n identify: 'Identify policies or procedures that require amendment',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '98888B9D-5B58-45C6-A604-AF14D1224C38',\n code: '1486',\n name: 'Settlement Queue Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all payment and settlement instructions queues and mailboxes end of day\\n\\n',\n identify: 'Identify payment or settlement instructions not sent for settlement\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A156E20D-D232-449F-BD0C-AF2215D97E6C',\n code: '1389',\n name: 'Statement Data Accuracy Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Investigate rationale for any late, missing or incomplete tasks\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reports measuring accuracy of customer statement data\\n\\n',\n identify: 'Identify one or more of the following instances:\\n\\n- discrepancies between the source data and customer statements [e.g. price movements breach the agreed thresholds, quantity, settled positions, account activity is evident but there are blank pages found in the customer statement which indicate otherwise]\\n- data that were transferred incorrectly from the source to the customer statement output and have not been escalated or investigated\\n- statements that were released to clients with incomplete data\\n- statements that were sent to clients before confirmation is received from traders\\n- manually drafted client valuation statements are inaccurate [e.g. Marked to Market valuations deviate from standard valuation template]\\n- statements that were not received per the expected timeline on the back of Nostro and Depot accounts and were not reinstated\\n- statements are sent to customers with an incorrectly accrued interest\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140101',\n name: 'Client reporting failures'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'BA39C740-5217-4B15-9D03-AFB6836D595F',\n code: '870',\n name: 'Brokerage Rates Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review brokerage rates\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Brokerage rates not in line with market rates or agreed levels\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'E3123EA8-E1C3-49C4-8C5D-AFFC311AF9F7',\n code: '1135',\n name: 'Inventory Loss Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review load and discharge quantities or quantity adjustments\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Material discrepancies between load and discharge quantities or quantity adjustments\\n\\n',\n risks: [{\n code: 'R100201',\n name: 'External theft or robbery'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '1AADD58B-CB48-4A92-A9DE-B0203C0D8009',\n code: '1645',\n name: 'IT Incident Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1\\\\. Investigate rationale for any late, missing or incomplete tasks\\n\\n\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n\\n\\n3\\\\. Agree timeframe for completion with relevant parties\\n\\n\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review IT incidents [e.g. cyber security, information security],\\u00a0IT Incident Response Plans and Incident Root Cause Analyses\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Extended service outages due to lack of automated IT incident alerts when critical thresholds are exceeded\\n\\n- Insufficient IT incident documentation [e.g. inadequate problem records, missing mandatory problem record fields]\\n\\n- Incidents mishandled due to untrained staff\\n\\n- Incident Root Cause Analysis is missing, inconclusive or conducted outside of agreed SLAs with no actions recorded for remediation\\n\\n- Insufficient root cause analysis and resolution leading to repetitive events\\n\\n- Major Incident Problem Records that have not been actioned and closed\\n\\n- Major cyber security incidents that have not been escalated or where the response was inadequate and not in line with IT Incident response procedures\\n\\n- Changes that caused IT Incidents which are not reported and monitored for the required timeframe\\n\\n',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '2C192A6F-D202-4062-BFEB-B0670ADC7A28',\n code: '114',\n name: 'Vendor SLA Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review vendor list versus service level agreements (SLAs)\\n\\n',\n identify: 'Identify any vendors without an SLA or those that no longer remain fit for purpose\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'E0745310-159A-4130-A037-B085E6E0BD1C',\n code: '885',\n name: 'Unauthorised Market Data Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Define next steps with relevant parties\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review live instruments using unauthorised market data for valuation purposes [e.g. derivatives desks trading complex products may require the temporary use of unofficial market data such as volatility surfaces for correct valuation and pricing]',\n identify: 'Identify instruments without valid justification',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'BB0D691F-5672-4BDD-999B-B0904FCD4F63',\n code: '1790',\n name: 'Training Material Content Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all training materials\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Training materials, policies, standards and procedures that are no longer up to date, relevant or not in line with current regulations\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }],\n riskInventories: [{\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '58A951A2-5125-4919-8771-B0F54261B8CE',\n code: '1235',\n name: 'Manual Benchmark Submission Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Ensure conduct issue is handled appropriately e.g. Disciplinary action, inform regulator\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review manual submissions to benchmark contributions',\n identify: 'Identify submissions not in line with market prices',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R140312',\n name: 'Erroneous benchmark submission (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EF6B4B36-11C7-4A1C-A780-B15E9ECE8131',\n code: '1737',\n name: 'Notice of Sums in Arrears (NOSIA) Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all system generated Notice of Sums in Arrears (NOSIA) and corresponding documentation including letters and statements',\n identify: 'Identify one or more of the following: \\n- NOSIA letters incorrectly generated \\n- NOSIA letters not sent out when a customer has missed two consecutive payments \\n- NOSIA letters/statements dispatched not matching the number of NOSIA requested \\n- Incorrectly formatted NOSIA statements\\n- Incorrect data on NOSIA statements ',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'D8875C0E-6319-49B3-8F89-B257E6E64663',\n code: '1667',\n name: 'System Access Recertification Review (Compliance)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and shared drives/data repositories [e.g. SharePoint, OneDrive, other cloud storage services] since the last review date to ensure they remain valid\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Employees who have inappropriate system access [e.g. joiners, movers, leavers]\\n\\n\\\\- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n\\n\\\\- Employees with access to shared drives, SharePoints or other data repositories not required for the role and function of the access holder\\n\\n\\\\- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc.]\\n\\n\\\\- Missed or incomplete reviews\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: 'CE25E226-7648-4A0B-957C-B283C3283C08',\n code: '1455',\n name: 'Suspense Account Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review suspense account reconciliation results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Suspense accounts that are not reviewed or reconciled\\n\\n\\\\- Suspense accounts that have a non-zero balance without appropriate justification\\n\\n\\\\- Suspense account reconciliation breaks that have not been investigated in a timely manner\\n\\n\\\\- Unresolved breaks that have not been escalated according to policies and procedures\\n\\n\\\\- Lack of segregation of duties between team performing the suspense account reconciliation and team that originates the transaction [e.g. Front Office]\\n\\n\\\\- Front Office staff have access rights beyond read-only to reconciliations\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n code: '714',\n name: 'eTrading Connectivity and Latency Metrics Monitoring',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Define next steps with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review eTrading Connectivity and Latency Metrics\\n\\n',\n identify: 'Identify one or more of the following\\n\\n<br>\\n\\n\\\\- Algorithms/eTrading systems reporting order/quote roundtrip time slower than approved latency threshold [e.g. Average latency by flow, Latency threshold breaches, Data time stamp difference threshold breach, Stale price threshold breach]\\n\\n\\\\- Algorithms/eTrading systems reporting missing or delayed heartbeats exceeding approved threshold between internal systems or external market venues/data feeds/price feeds\\n\\n\\\\- Algorithms/eTrading systems reporting latency or connection problems that have not automatically enabled kill switch for all activity or for the identified client/venue connection [e.g. stopping any auto hedge activity, turn off trades in the affected currency pair]\\n\\n\\\\- Algorithms/eTrading systems reporting data write delays to internal databases exceeding approved threshold\\n\\n\\\\- Maximum unfilled active orders threshold for that Algorithm is exceeded\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '5EBE5AE7-7150-41D8-8E99-B37BB328BBFF',\n code: '1250',\n name: 'Exchange Membership Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review exchange memberships\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Memberships that are no longer aligned with business plans\\n\\n- Memberships that are no longer aligned with risk appetite\\n\\n- Memberships that engage in speculative trading instead of trading on behalf of clients\\n\\n',\n risks: [{\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '2DF698C0-BEC4-4A41-B672-B38FC9DCF2B2',\n code: '1576',\n name: 'Data Quality Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review data quality [e.g. for own holding debt, maturity, ISIN, Fund NAV and performance, credit conversion factor VaR, etc.]\\n\\n',\n identify: 'Identify inaccurate data [e.g. used for capital calculations sent to regulators, ratings data, internal reports, failed scenario trades etc]\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '9FB444A2-F831-49D4-875E-B3D9618E1AFD',\n code: '1371',\n name: 'Manual Adjustment Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review manual adjustments [e.g. including fair value adjustments, credit value adjustments, risk weighted assets (RWA), FX Sell down etc.] ',\n identify: 'Identify inaccurate or unjustified FO or PC adjustments [temporary or permanent]',\n risks: [{\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'D55E4191-4DC7-4413-93A1-B4023074C503',\n code: '1254',\n name: 'Large Trade Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed trades\\n\\n',\n identify: 'Identify trades outside risk appetite or are a heightened risk\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2F0C35E1-3C2C-4E31-96B2-B40DA676B22C',\n code: '1403',\n name: 'Unrecognised Ledger Review\\r\\n',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review internal ledgers without a corresponding external statement\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- the reason for the ledgers existence [e.g. pending account closure, new account closure]\\n\\n\\\\- corresponding statements for existing ledgers\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'F7F0C1A3-CAC5-4965-9AD7-B47E9A8EFAE1',\n code: '1048',\n name: 'Basis Risk Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review positions for basis risk [e.g. contracts in differing currencies on the same reference entity, contracts with differing maturities in the same defined bucket]\\n\\n',\n identify: 'Identify one or more of the following: -\\n\\n\\\\- Identify deviation outside of pre-defined thresholds\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '3CFF1214-9A4F-442F-831C-B5744631257F',\n code: '83',\n name: 'Product Governance',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new traded products with appropriate functions [ e.g. to ensure the products are in-line with the current market conditions, target investor profile, have the appropriate risk classifications, follow country specific rules etc]\\n\\n',\n identify: 'Identify instances of potential mis-selling\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }, {\n code: 'R170104',\n name: 'Litigation with clients for unsatisfactory relationship management '\n }, {\n code: 'R160403',\n name: 'Mis-selling'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '9E47AF5A-AC55-402E-A9A5-B5B30FE46457',\n code: '1369',\n name: 'Joiners, Leavers & Movers Review (AM)',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Complete and / or request completion of outstanding tasks or approvals ',\n review: 'Review joiners, leavers and movers in relation to the required licenses, access rights, registration and training for the role prior to their start, leave or move date',\n identify: 'Identify individuals who do not have, or have not completed required licenses, registrations, training, or have incorrect access rights or where there are orphaned responsibilities [e.g. where a new supervisor has not been assigned after an employee has left]',\n risks: [{\n code: 'R090205',\n name: 'Recruitment, hiring and onboarding failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '147F2978-05F4-4D5F-B96E-B627B9F80CD8',\n code: '1503',\n name: 'Manual Settlement Instruction Call back Verification',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Call Backs for Manual Settlement Instructions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Instances where segregation of duties have not been carried out between person / team processing the manual settlement instruction, and person / team performing the call back.\\n\\n\\\\- Absence of a record / log of each call back made [customer name, customer phone number, date, time, name of employee who perfomal the call back]\\n\\n\\\\- Call backs that were not made on recorded phone lines\\n\\n\\\\- Appropriate record retention processes were not followed with respect to callback tapes/-recordings\\n\\n',\n risks: [{\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EF588858-3EC1-41D7-BF9D-B6738A88CE54',\n code: '1522',\n name: 'Aged Trades and Breaks Review (Trade Booking)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review aged trades and breaks\\n\\n',\n identify: 'Identify trades and breaks in breach of age thresholds which require follow up and escalation to management\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '08FF7647-6E3A-4F15-A4D1-B6811D376ECC',\n code: '1038',\n name: 'Net Asset Value Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review clients Net Asset Value (NAV) performance to determine their overall financial position\\n\\n',\n identify: 'Identify any decline in the NAV greater than a set threshold [e.g. discuss the reason for the decline with the client and agree a mitigation strategy. For example: The clients margin requirements could be increased to provide greater protection to the prime broker, the Prime Broker could issue a Termination Notice if it no longer believes that the client is financially stable]\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '391E7E83-FEE6-4CED-A24F-B6B6D72E38EB',\n code: '883',\n name: 'Market Data Override Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instruments that have a manual market data override\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Market data overrides which do not have required justifications or approvals\\n- Unapproved overrides not removed or remediated within the required timeframe\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '92A2E9CF-D423-4EA4-8907-B6BA2AE17379',\n code: '1375',\n name: 'GAAP Compliance Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results of reconciliation of general ledger balance sheet to a verifiable independent source [e.g. source system/file, database etc.]',\n identify: 'Identify entries that do not comply with Generally Accepted Accounting Principles (GAAP)',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'AA90CB7D-6A47-4F50-928F-B6F744224306',\n code: '1384',\n name: 'Independent Price Verification Trade Population Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review results from testing of the completeness and accuracy of the trade population subject to Independent Price Verification (IPV)',\n identify: 'Identify incomplete or inaccurate IPV processes',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'E65D4A74-D4C2-4379-9A2C-B7BC47242583',\n code: '1509',\n name: 'Tax Reporting Data Quality Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n4. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review tax data held for clients\\n\\n',\n identify: 'Identify where client data fails data quality standards [e.g. FATCA or CRS Classification is missing or invalid] or where mandatory fields are missing or incomplete and would not be sufficient for FATCA or CRS reporting requirements\\n\\n',\n risks: [{\n code: 'R220201',\n name: 'Inaccurate tax calculation, reporting, collection or payment'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '69A3E2C6-3521-4408-856F-B7EA0073D83A',\n code: '1623',\n name: 'Suspense Report Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review suspense breaks',\n identify: 'Identify suspense breaks requiring resolution or further escalation',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '6B5C15C9-245C-4B88-929B-B83AD16E6AB0',\n code: '1380',\n name: 'General Ledger (GL) Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review general ledger (GL) reconciliation results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- General Ledger (GL) reconciliations not performed in a timely manner\\n\\n\\\\- General Ledger (GL) reconciliation breaks or exceptions not communicated to relevant business areas for explanation, remediation or escalation\\n\\n\\\\- Unresolved or aged breaks beyond defined thresholds not escalated according to policies and procedures\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R140314',\n name: 'Inaccurate accounting adjustments'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '96ECC4BD-8A71-4B16-9943-B93BF1F63C1C',\n code: '695',\n name: 'Off-Premises Trade Surveillance',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review items flagged through off-premises trade surveillance\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Off-premises trade surveillance alerts not investigated, escalated or actioned within a predetermined period\\n- Off-premises trades conducted without pre-approval\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '39AC9E3D-F692-44E2-A1CF-B984040C0D7E',\n code: '1514',\n name: 'Balance Sheet Substantiation',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review ledger balances in the balance sheet\\n\\n',\n identify: 'Identify balances that have not been reconciled or cannot be verified against independent sources\\n\\n',\n risks: [{\n code: 'R220104',\n name: 'Inaccurate balance sheet'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'FA73721E-398C-4D0B-B5D0-B98B467CB511',\n code: '782',\n name: 'Option Barrier Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Resolve trade irregularity e.g. unwind, amend or exit trade\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor barrier level breach alerts [e.g. knock-in, knock-out etc.]\\n\\n',\n identify: 'Identify breaches that have not been actioned which could lead to incorrect risk management and client payoff\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F4DAE453-79E9-4BD8-96B9-B9B104596AF0',\n code: '1612',\n name: 'Balance Sheet Reconciliation And Substantiation Review ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Amend inaccurate / incomplete or stale data or documentation\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all balance sheet/general ledger accounts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Balance sheet/general ledger accounts which have not been included for reconciliation and substantiation\\n\\n\\n\\n\\\\- Reconciliation breaks and/or unsubstantiated balances which have not been communicated to relevant business areas for explanation, remediation or escalation [e.g., incorrectly netted transactions]\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n code: '746',\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of eTrading max overfill alerts\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Orders returning a filled or part-filled state after the order was marked for cancellation\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'BF1B8709-FB2D-4F23-B6DD-B9ED041D7295',\n code: '1439',\n name: 'Transaction Taxes Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the calculated amount(s) for transaction related taxes [e.g. Financial Transaction Tax, withholding tax, stamp duty, VAT etc.]\\n\\n',\n identify: 'Identify inaccurate, incomplete or late tax transactions posted to client accounts or inaccurate, incomplete or late aggregate transaction tax values being reported to tax authorities or, <span style=\"color: rgb(44, 44, 45);\">inaccurate or late transaction tax values</span>\\n\\npaid to tax authorities\\n\\n',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '46954458-90A7-457C-BE56-BA1BC56AB2A1',\n code: '1539',\n name: 'Rebate Rate Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the rebate rate agreed with counterparty\\n\\n',\n identify: 'Identify incorrect billing of counterparty due to the trade not reflecting the agreed rebate rate\\n\\n',\n risks: [{\n code: 'R140305',\n name: 'Inaccurate fee calculation'\n }, {\n code: 'R140307',\n name: 'Inaccurate fee calculation or invoicing (unintentional)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '834DB28A-3CEA-4BBC-A619-BB2BAADEDFAA',\n code: '1515',\n name: 'Instrument End Of Day Checklist Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the tasks on the instrument checklist\\n\\n',\n identify: 'Identify unapproved tasks on the instrument checklist\\n\\n',\n risks: [{\n code: 'R230103',\n name: 'Data maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '47DB00E3-1DBB-4B73-836E-BB93373CEB45',\n code: '1764',\n name: 'Research Rating Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\.Determine circumstance of breach or deviation\\n\\n1. Define next steps with relevant parties\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review changes in Research ratings and supporting documentation\\n\\n',\n identify: 'Identify unsupported material changes in research ratings [e.g. rating changes, earnings estimates, price targets, research reports produced, report pipeline and distribution of ratings on a regional and country basis.]\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '5C36D993-833C-4BDB-9E0E-BB98553151BB',\n code: '111',\n name: 'Senior Manager Regimes Documentation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review requirements for the Senior Manager (SM) Regimes for the relevant country. [Examples include the Senior Managers and Certification Regime in the UK (SMCR), the Banking Executive Accountability Regime in Australia (BEAR) and the Manager in Charge regime in Hong Kong (MIC)]',\n identify: 'Identify missing obligations not documented',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n code: '502',\n name: 'Trade Surveillance Alert Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade surveillance alerts and trader activity\\n\\n',\n identify: 'Identify the following:\\n\\n- Trading behaviour indicative of a breach of policies, laws and regulations covering employee conduct\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '8CE38425-77BA-4487-842F-BC700195441E',\n code: '94',\n name: 'Area Access Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all employee access to building, floors and restricted areas in conjunction with the requirements of their role\\n\\n',\n identify: 'Identify one or more of the following;\\n\\n- Employees with inappropriate access to restricted floors and areas within buildings, [e.g. the Corporate Finance department, Trading floor, public side employees with access to private side areas]\\n- Employees who have been given access to restricted areas without required approvals [e.g. unauthorised access to Control Room, unauthorised access to areas where Material Non-Public Information (MNPI) is available]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R100101',\n name: 'External fraud, forgery or account take over'\n }, {\n code: 'R100201',\n name: 'External theft or robbery'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R160301',\n name: \"Non-compliance with firm's code of conduct\"\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'BAC08838-5D66-48CC-B3E4-BD0E4BBF64E3',\n code: '1411',\n name: 'Custody Bank Requirements Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review custody banks responses to due diligence information requests\\n\\n',\n identify: 'Identify custody banks which are no longer within the firms risk appetite or who no longer comply with regulatory requirements\\n\\n',\n risks: [{\n code: 'R180401',\n name: 'Know your customer (KYC) failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '3FC9B0E2-4929-4D4C-88E1-BD2A605F6870',\n code: '1747',\n name: 'Vulnerable Customer Classification Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review vulnerable customer classification tags and associated trigger words',\n identify: 'Identify one or more of the following:\\n- Erroneous vulnerable customer classification tags based on trigger words\\n- Un-tagged accounts that should be tagged as vulnerable based on trigger words',\n risks: [{\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n code: '881',\n name: 'Market Data Permissioning Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review market data permissioning rights [e.g. to prevent accidental or unauthorised update of volatility, borrow curves etc.]\\r\\n\\r\\n',\n identify: 'Identify inappropriate or unintended access [e.g. FTSE trader having access rights to amend S&P curves]',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R161002',\n name: 'Misuse of general access rights'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'E71B70DD-AF2A-4BB3-8A9C-BD6A33792F44',\n code: '1657',\n name: 'Technology Change Approval Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review approvals of changes to IT systems and applications\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Hardware, software and code changes that have not been reviewed and approved by management\\n\\n\\\\-\\u00a0Changes deployed to Production with no approval or where approval granted by people acting beyond their authorisation\\n\\n\\\\- Changes made outside approved change windows without sufficient authorisation\\n\\n\\\\- Lack of documentation to evidence changes approved and signed off by management\\n\\n\\\\- Approved changes that were not implemented due to no action taken against them resulting in the change task expiring\\n\\n\\\\- Instances where change approvals were overridden inappropriately [e.g. approvers not authorised to override change approvals] and deployed to Production\\n\\n',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '993CA51D-7397-4E0A-B8BD-BD91EEF13424',\n code: '1213',\n name: 'Hoot Participation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Determine circumstance of breach or deviation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Hoot participation\\n\\n',\n identify: 'Identify inappropriate access [e.g. unapproved participants, approved participants with incorrect rights]\\n\\n',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '87B578C4-ACFE-4ABE-A7AC-BDA59358B48B',\n code: '949',\n name: 'Unobservable Prices Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review discretion based pricing parameters for illiquid products [e.g. inputs to the pricing or risk-management models that cannot directly be price-tested against market prices and are set with a degree of subjectivity and discretion]',\n identify: 'Identify those that exceed pre- defined ranges for unobservable prices',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'E13623EC-21F9-4069-9350-BDBB149000D5',\n code: '1100',\n name: 'Commodities Emergency Response Plan',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review commodities emergency response plan\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Missing Emergency Response Plans\\n\\n\\\\- Emergency Response Plans that have not been signed off per policy or procedure\\n\\n\\\\- Emergency Response Plans do not cover suitable scenarios [e.g. material physical incident such as an oil spill, warehouse explosion, loss or threat to life, hijacking etc.]\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n code: '748',\n name: 'eTrading Max P&L Per Period Monitoring',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review metrics reporting deviations in P&L within a specified time period against the tolerance limit\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- P&L exceeding threshold limits set by Front Office Supervisors.\\n\\n\\\\- P&L exceeding predetermined threshold within a specified time period [e.g. P&L exceeds threshold amount in a time-limited window].\\n\\n\\\\- P&L exceeding thresholds indicating malfunction with hedging mechanisms [e.g. Gross Hedge Flow exceeds Gross Client Flow for certain time period].\\n\\n',\n risks: [{\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C86AE4F2-0AAA-4275-B8BC-BEB136D44D8F',\n code: '1131',\n name: 'Cargo and Vessel Sanction Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: \"Review the cargo seller's and vessel owner's documentation prior to interaction [e.g. certificate of origin, vessel Q88 forms detailing vessel flag, vessel owner and details of last three voyages]\\n\\n\",\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Vessels or cargo that are subject to sanctions\\n\\n',\n risks: [{\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '1870DF93-C50D-41DB-B2EF-BEB8B51E5CB3',\n code: '1205',\n name: 'ESG Post Trade Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review executed trades versus the banks environment, social, governance (ESG) policy',\n identify: 'Identify executed trades that breach the ESG policy [e.g. climate change, sustainability, social concerns, human rights etc.]',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: '04EFC681-272B-4750-8235-BEFF46F52A81',\n code: '956',\n name: 'Fund Manager Trade Authorisation Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Determine circumstance of breach or deviation\\r\\n3. Define next steps with relevant parties\\r\\n4. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review fund manager authorisation documentation [Fund Managers may request a copy of the trade details prior to allowing the use of a fund in a structured product. This is generally to ascertain whether the structure of the product can result in a higher frequency of trading in the fund.]',\n identify: 'Identify trades where authorisation has not been obtained which could result in the product having to be cancelled after trading',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '391ADE61-5E5C-4D40-9AFF-BF2030919380',\n code: '1632',\n name: 'Own Debt Extinguishment Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review own debt analysis [e.g. Where debt issued by a legal entity is purchased by another legal entity within the group, US GAAP requires the de-recognition of this debt from financial statements]',\n identify: 'Identify own debt balances where an adjustment is required to be posted to de-recognise own debt from financial statements',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '18E97582-9260-47A5-87FA-BF8114850A57',\n code: '1651',\n name: 'Service Level Agreement (SLA) Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all service level agreements (SLAs)\\n\\n',\n identify: 'Identify any service level agreements (SLA) that are not valid/incomplete/appropriate for the application or service\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'B730B8D5-961E-4363-9566-BF85E46A9572',\n code: '1638',\n name: 'Information Security Incidents Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all Information security incidents\\n\\n',\n identify: 'Identify any information security incidents without appropriate analysis, reporting, resolution plan and escalation procedures\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '4E325DFE-F82B-4ADE-9A12-BFE2D82C8E6B',\n code: '1547',\n name: 'Trade Allocation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade allocations and pending trades which have yet to be allocated e.g. to ensure temporary holding accounts used to facilitate filling of an order are flat\\n\\n',\n identify: 'Identify trades not allocated per client instructions or where algorithm order is still in progress\\n\\n',\n risks: [{\n code: 'R140207',\n name: 'Trade allocation error'\n }],\n riskInventories: [{\n code: 'ETOPS',\n name: 'eTrading Operations'\n }, {\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n code: '1766',\n name: 'Darkpool Order Flow Activity Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1\\\\. Determine circumstance of suspicious and / or irregular activity\\n\\n2\\\\. Inform supervisor(s)\\u00a0and / or relevant governance function(s) and, or body as appropriate\\n\\n3\\\\. Define next steps with relevant parties\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Monitor the comprehensive overview of darkpool order flow activity, including detail on trade volume, price and participant information\\n\\n',\n identify: 'Identify one or more of the following in the trade data:\\n\\n- Notable spikes in matched principal trading activity\\n- Close Cross Price Check indicating suspicious trading activity\\n- Trajectory cross 5 min trade check indicating suspicious trading activity\\n- Volume check indicating suspicious trading activity\\n- Material Price Improvement check indicating adverse darkpool behaviour\\n- Midpoint quote move as a percentage of spread check indicating adverse darkpool behaviour\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n code: '757',\n name: 'eTrading Max Single Order Limit Review',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review eTrading orders submitted to the market\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Orders which breach maximum single order limits across applicable dimensions [e.g. Risk, Quote size, Notional, Quantity]\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'FFA7E7C0-F021-4286-BC1B-C20D6CDBEF57',\n code: '1746',\n name: 'Training & Competence (T&C) Framework Review',\n type: 'Detect',\n automation: null,\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the training & competence framework',\n identify: 'Identify one or more of the following:\\n- Documents, modules or other material that are out of date\\n- Documents, modules or other material that are no longer fit for purpose\\n- Deviations from regulatory requirements\\n- Updates that have not been communicated appropriately\\n- Inadequately evidenced reviews',\n risks: [{\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'C2ACA91B-9AB7-443F-A09C-C2821994C73F',\n code: '1610',\n name: 'Financial Reports Secondary Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n5. Amend inaccurate / incomplete or stale data or documentation\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review output from secondary review of financial reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Financial Report preparation and review duties not appropriately segregated\\n\\n\\\\- Segregated secondary reviews of financial reports/appendices not completed prior to a corporate reporting submission deadline [e.g. Cash Flow statements, Off Balance Sheet reporting]\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'D8878E9A-F5CA-4224-8F29-C2BA4208A092',\n code: '1035',\n name: 'Non-standard Contract Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Halt trading or further business until all approvals are obtained \\r\\n2. Determine circumstance of breach or deviation\\r\\n3. Define next steps with relevant parties\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review contracts prior to trade execution',\n identify: 'Identify contracts that do not correspond to industry standardised terms [e.g. as set out in the International Swaps and Derivative Association (ISDA) Definitions etc.]\\r\\n',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'FC0B1C01-BE69-41C0-81D5-C3430147E771',\n code: '1475',\n name: 'Withholding Tax Reporting and Calculation review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review data in tax systems for withholding tax calculations [e.g. security information, client data, tax rate, illogical balance reports]\\n\\n',\n identify: 'Identify instances of incorrect withholding tax calculations and reporting\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R220201',\n name: 'Inaccurate tax calculation, reporting, collection or payment'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '3A37E59C-8596-4295-88A5-C3557CC9DACD',\n code: '1670',\n name: 'TCFD Disclosure Framework Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review TCFD disclosure framework, policies, procedures and templates',\n identify: 'Identify any TCFD component not accurately included in firms current TCFD framework documents',\n risks: [{\n code: 'R250701',\n name: 'Failure to meet TCFD disclosure requirements'\n }],\n riskInventories: [{\n code: 'ClimateForBanks',\n name: 'Climate For Banks'\n }, {\n code: 'CCR',\n name: 'Climate Risk'\n }]\n}, {\n id: '2F4C64B5-11C5-4AF6-A8EA-C3D8359DAAF5',\n code: '1724',\n name: 'Complaint Handling Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all customer complaint process workflows and customer outcomes [e.g. complaint handling, complaint closure, complaint queues]',\n identify: 'Identify one or more of the following:\\n- Customer complaints not logged completely accurately or timely in the complaints management system\\n- Customer complaints not closed appropriately or not achieving fair outcomes for customers\\n- Customer complaints not handled in line with internal requirements',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '69EFF0FF-1BF1-4691-85E6-C42D901F7289',\n code: '1532',\n name: 'Intercompany Booking Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review intercompany bookings\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Unmatched intercompany trades or trades not booked in a timely manner\\n- Unresolved breaks not followed up in a pre determined time period\\n- Unsubstantiated intercompany booking\\n- Trades booked to incorrect intercompany booking code\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '7940FA52-500A-47BD-9B19-C4D03682A36F',\n code: '1450',\n name: 'Collateral Dispute Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Ensure issue is handled appropriately e.g. disciplinary action, inform regulator\\n4. Define next steps with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review collateral dispute reports\\n\\n',\n identify: 'Identify whether the dispute is resolved or whether the commentary and rating require updating for each outstanding collateral dispute\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EE7385BA-5A8F-4534-A7FD-C51F5B9AEE1D',\n code: '1033',\n name: 'Availability Feed Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review stock loan availability data feeds [internal and external feeds]',\n identify: 'Identify unreliable data feeds [To avoid potential over-lending where the Prime Broker has committed to lending more shares of a security than they have access to e.g. applying a haircut or excluding internal inventory from trading desks with frequent or large changes in their portfolios, excluding any data feed that is more than 24 hours old]',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }],\n riskInventories: [{\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '5DB3FB91-99D2-4652-83AD-C5CDA298BDF3',\n code: '1743',\n name: 'Third-Party Customer Call Quality Assurance Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review a sample of third-party customer call recordings',\n identify: 'Identify one or more of the following:\\n- Calls that have not met internal policy requirements or standards \\n- Calls which highlight that the call handler requires additional training \\n- Calls where vulnerable customers were not treated appropriately\\n- Calls where the customer did not receive a fair outcome',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'D5E4A05E-B183-4C7D-905E-C5D2215E7CBA',\n code: '1624',\n name: 'Derivatives Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reconciliation breaks pertaining to notional and mark to market derivative transactions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Reconciliation of derivative transactions [including on and off balance sheet transactions] that have not been performed [e.g. End of Day balance reconciliation of OTC derivative guarantees]\\n\\n\\\\- Financial statements and regulatory reports that were submitted inaccurately or in an incomplete manner due to unresolved derivative reconciliation breaks\\n\\n\\\\- Reconciliation breaks between derivative inventories and the relevant source systems [e.g. front office / back office system, general ledger etc.] that have not been documented in the appropriate system of record and for the appropriate legal entity\\n\\n\\\\-Intersystem reconciliations of derivative transactions that have not been performed in the correct timeframe\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '9EBFA563-618A-48B5-A233-C6155F5CAB1A',\n code: '1258',\n name: 'Sanction Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary \\r\\n ',\n review: 'Review sanction list prior to signing deal mandate [e.g. countries, individuals etc.]',\n identify: 'Identify those subject to sanctions',\n risks: [{\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: 'BE9E054A-2E95-4555-A985-C811992CDAFB',\n code: '120',\n name: 'Supervisory Tasks Completion Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Amend inaccurate / incomplete or stale data or documentation\\n\\n4\\\\. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review the status of supervisory tasks and associated metrics\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Supervisory tasks that have not been completed\\n- Supervisory tasks completed outside of timeliness thresholds\\n- Supervisory sign off rates which fall below defined thresholds\\n- Metrics indicating that Supervisors are inappropriately closing alerts or tasks\\n- Supervisory tasks where the data or management information provided to supervisors is incomplete, inaccurate or untimely\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'CCE2D58C-87C8-4A8F-A3C0-C832EBFF4DB7',\n code: '1274',\n name: 'Broker Performance Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n2. Define next steps with relevant parties\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review broker and venue performance statistics',\n identify: 'Identify failings in algo performance, communication, best execution or liquidity.',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: '0CF8A3EA-531A-4572-9F1E-C882B7904B9C',\n code: '131',\n name: 'Trading Book Access Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading book access per employee, including permissions to view, edit, book or amend trades\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Book access not in line with trader mandate\\n- Access combinations which could lead to unauthorised or improper activities [e.g. segregation of duties concerns, inappropriate access to sensitive information etc]\\n- Access permissions determined not appropriate to the role and function of the access holder\\n- Missed access reviews or those not completed within a pre-determined time frame\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '705C8305-7579-4221-A315-C892E815B9D5',\n code: '1600',\n name: 'Stale Data Review (Risk)',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Define next steps with relevant parties\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review data and data feeds',\n identify: 'Identify any stale data requiring updating',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'C0E8D43E-D990-4582-8F4C-C8B41BA162B4',\n code: '1691',\n name: 'Employee Expenses Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all employee expenses including travel\\n\\n',\n identify: 'Identify any employee and travel expense claims which are not in line with firmwide expense policy [e.g. unauthorised approval, receipts not matching expense claims, breach of spend threshold]\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: 'E06D9139-9A50-4DB1-BC14-C8DC2E18B6FF',\n code: '1088',\n name: 'Inventory Warehouse Limits review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review inventory warehouse metrics\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\-Inventory metrics that breach or exceeded insurance coverage [ E.g. warehouse location, commodity type, commodity tenor]\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '91E9CEE3-1599-443F-9E5A-C90934989F2E',\n code: '1654',\n name: 'System Architecture and Design Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Investigate rationale for any late, missing or incomplete tasks \\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review System architecture and design ',\n identify: 'Identify missing architectural documentation or IT elements [e.g. hardware, software, support tools, libraries] that deviate from firmwide IT requirements and standards [e.g. not complete, not accurate, unapproved configurations, no annual updates, no risk rating, no mitigation plans, no protection against cybersecurity threats]',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R210102',\n name: 'External data theft or data manipulation'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '275683B9-D12B-4487-9097-CA15DBEDBF2E',\n code: '1028',\n name: 'Asset Performance Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review pool of underlying asset performance [e.g. delinquency rates, overdue payments, losses or repossessions in the asset pool, collection ratios cumulative default rates etc.]',\n identify: 'Identify underperforming assets [To assist with mitigating actions to reduce exposure to non-performing credits]',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }]\n}, {\n id: 'F545BA45-27F9-44FE-B21B-CA2A67932C22',\n code: '1401',\n name: 'Operations Supervisor End of Day Task Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review tasks that require escalation or resolution by end of day\\n\\n',\n identify: 'Identify one or more of the following in end-of-day checks:\\n\\n- Delayed, incorrect or unusual payments [e.g. volume spikes]\\n- Failed or anomalous trades\\n- Erroneous unconfirmed, unmatched or alleged trades\\n- Delays and deviations in critical daily tasks, including tasks that feed downstream\\n- Queues required to be handed to next region that have not been confirmed as correctly handed over\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '37264B0E-4583-4F59-865B-CA8EE7459353',\n code: '1613',\n name: 'Business Change Management Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Agree timeframe for completion with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review change management actions, issues and key risk indicators (KRIs)',\n identify: 'Identify where change management programmes are not on track and require further escalation',\n risks: [{\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'AB9BA528-ACC5-4394-A8E7-CB4FE8FF2047',\n code: '754',\n name: 'eTrading Max Reject Rate Limit',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Real time',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of the eTrading reject rate\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Reject rates which exceed pre-defined limit thresholds over a given time period.\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'CFC741D5-59C4-4267-950C-CC792016C1D1',\n code: '1561',\n name: 'System Access Recertification Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n4\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n',\n review: 'Review employee access to applications, systems [including third party platforms] and\\u00a0shared drives/data repositories [e.g. sharepoints, one drive, other cloud storage services, etc.] since the last review date to ensure they remain valid\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n- Employees or former employee who have inappropriate system access [e.g. joiners, movers, leavers]\\n- Employees with role based system access permissions/entitlements not required for the role and function of the access holder within that system [e.g. permission or access from a previous role not required for current role]\\n- Employees with access to shared drives, sharepoints or other data repositories not required for the role and function of the access holder\\n- System access and or permission/entitlement combinations which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc]\\n- Missed or incomplete reviews\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R210401',\n name: 'Employee confidentiality or data protection breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160501',\n name: 'Inappropriate management of client accounts'\n }, {\n code: 'R090101',\n name: 'Inappropriate terminations and transfers'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R110202',\n name: 'Internal fraudulent use of client accounts or client account takeover'\n }, {\n code: 'R110203',\n name: 'Internal theft or robbery'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EDDF7AD1-9580-4614-B71C-CC8EE117B771',\n code: '1518',\n name: 'Non-STP Income Entitlement Review',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Agree time-frame for completion with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all instances or exceptions where dividend payments were not processed electronically without manual intervention\\n\\n',\n identify: 'Identify entitlements that have not been processed or paid to clients correctly or in a timely manner\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '71DB7301-252C-40A7-ACCE-CD20D10785FA',\n code: '1444',\n name: 'Specific Collateral Release Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Inform counterparty on the other side of the trade\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review specific collateral release documentation or alerts [e.g. for over-collateralisation, corporate action]\\r\\n',\n identify: 'Identify collateral to be released or cash payment to be made',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '694812F0-FA83-4055-AAE6-CD80CF3413B4',\n code: '988',\n name: 'Insider List Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary ',\n review: 'Review the insider list for new issue mandates or other events [e.g. take over]',\n identify: 'Identify instances where key personnel have not been appropriately captured in the insider list [e.g. Issuer - Treasurer or CFO involved in the transaction and Legal Department Representative ,Underwriter(s) - Origination, Syndication, Portfolio management, Trading, Legal and Compliance personnel]',\n risks: [{\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: '838D608F-4582-45AC-AE75-CE1E1B2108FF',\n code: '530',\n name: 'Trading Book Ownership Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading book static data and trading book recertification status\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Books with unassigned owner\\n- Inaccurate ownership [e.g. book not re-assigned post individual leaving the Firm]\\n- Missing or incorrect book data attributes\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C2DF3ADB-B36E-44CC-87DA-CE2FEA6D79A6',\n code: '1628',\n name: 'Netting Optimisation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review netting entries in the general ledger and internal systems',\n identify: 'Identify completeness and accuracy issues with netting data',\n risks: [{\n code: 'R220104',\n name: 'Inaccurate balance sheet'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '09132442-AC37-41C0-BB72-CF6C5CC892CC',\n code: '1391',\n name: 'Payment Processing Supervisory Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review payment process queues to assess completeness, accuracy and timeliness of processed payments ',\n identify: 'Identify queued tasks that may constitute exceptions that require additional monitoring [e.g. unusual payments, high volumes of unprocessed transactions and other adverse operating performance trends].',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'AB85ECC0-3CA2-40DA-B3C5-CF75ADAF5303',\n code: '1487',\n name: 'Inter-System Reconciliation Break Review (Settlements)',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review inter-system reconciliation breaks\\n\\n',\n identify: 'Identify breaks which require intervention, follow-up with front office or escalation\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '5956D090-20B8-4E51-8ACC-CFDEC91FA02F',\n code: '846',\n name: 'Fat Finger Safeguards ',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Semi-Annually',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review documentation of fat finger protection features within eTrading applications and associated Risk Management systems which have manual user entry fields [e.g. fat finger controls for order size, payment economics, exchange rates]',\n identify: 'Identify where graphical user interfaces (GUIs) which permit manual inputs do not contain controls over human input error',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'B57F181C-0C79-4CE6-B6F5-CFEE0F00C944',\n code: '538',\n name: 'Equities Short Selling Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n4\\\\. Consider whether there are any patterns of transactions, or other wrongdoing for which there is no apparent explanation and escalate as necessary\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review details of reports relevant to monitoring short-sale activity\\n\\n',\n identify: 'Identify one or more of the following in relation to short selling:\\n\\n- Short selling (on own or client account) without locates in place or invalid locates\\n- Short positions breaching limits\\n- Significant Net Short Positions not reported in accordance with local regulatory/market requirements\\n- Short positions in a security subject to a short sell ban\\n- Short positions not in compliance with the Market Making Exemption for that security\\n- Short sales in instruments subject to Compliance restrictions where an override was not obtained or inappropriate use was made of an override\\n- Short selling activity not in compliance with short selling activity for that region / jurisdiction (e.g. US Reg SHO, EU Short Selling Regulation, Monetary Authority of Singapore (MAS) Securities and Futures (Short Selling) Regulations)\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'ACSCASHEQ',\n name: 'Cash Equities'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '961A9283-D00A-4A38-986D-D02380628945',\n code: '1552',\n name: 'Aged Nostro and Depot Breaks Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review aged nostro and depot reconciliation breaks\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Aged breaks not followed up for resolution\\n- Aged breaks with missing commentary\\n- Aged breaks not escalated to senior management\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'DD829318-62F2-427F-80AD-D06C71EBAC43',\n code: '1703',\n name: 'eTrading Stress Test Plan And Results Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Semi-Annually',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Agree time-frame for completion with relevant parties\\r\\n4. Complete and / or request completion of outstanding tasks or approvals\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review eTrading stress testing plans and results [e.g., results of high message and trade volume tests]',\n identify: 'Identify one or more of the following: \\n\\n- eTrading platforms which have failed stress testing and require remediation activity\\n- Stress testing plans not in line with regulatory requirements [e.g. not running high message volume tests, not running high trade volume tests]\\n- Stress testing plans which have been prepared but not executed\\n- Stress testing results which have not been communicated to relevant business areas for review and approval',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n code: '25',\n name: 'Credit Risk Limits Adherence Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties \\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review credit risk limit usage by traders, including intra-day [e.g. counterparty, country etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Credit risk limit breaches without pre-approval\\n- Credit risk limit breaches without valid justification\\n- Credit risk limit breaches caused by counterparties with no set credit risk limit\\n- Breaches requiring remediation activity to reduce exposure\\n- Trends in credit usage indicative of conduct issues\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160810',\n name: 'Mismarked positions'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '402F6F01-D3BA-4E6F-B651-D1AB184E48C2',\n code: '1730',\n name: 'Customer Journey Monitoring',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor customer journeys and associated testing results',\n identify: 'Identify journey experiences and customer outcomes that do not meet expectations',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'EBAFEA81-0326-4F78-B3CF-D21ADC89C7B2',\n code: '872',\n name: 'Unofficial Instrument Review ',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Define next steps with relevant parties\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trades booked using an unofficial instrument [duplicate or an unofficial instrument may be needed in specific circumstances e.g. to model a complex transaction appropriately by using a different volatility surface etc.]',\n identify: 'Identify instruments without valid justification',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'BBB2AC30-0205-4040-B99D-D2B7FF4177C9',\n code: '1489',\n name: 'Standard Settlement Instruction (SSI) entry review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new Standard Settlement Instruction (SSIs) and amended SSIs entered into firm systems\\n\\n',\n identify: 'Identify instructions to update an SSI that were not from a verified source [e.g. SWIFT MT 671 Standing Settlement Instruction (SSI) Update Notification], not verified against a golden source [e.g. Central Bank Website, Exchange or CCP Website] or by call back, or discrepancies between the data entered and the authenticated instruction\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '3F74695E-E91F-46CB-8F05-D2F97D9C0EE1',\n code: '1660',\n name: 'Employee Licensing Review (Compliance)',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n\\n<!-- -->\\n\\n',\n review: 'Review employee licensing or registration status versus requirements for their role and renewal or expiry dates\\n\\n',\n identify: 'Identify employees who are not correctly licensed or registered as per local regulatory rules or in-house rules\\n\\n',\n risks: [{\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }, {\n code: 'ETCOM',\n name: 'eTrading Compliance'\n }]\n}, {\n id: 'A4925C20-19A1-4DCE-BACB-D305BC569736',\n code: '1381',\n name: 'Front Office Back Office (FOBO) Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results of Front Office Back Office (FOBO) system reconciliations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Front Office to Back Office (FOBO) system reconciliations not reconciling key attributes and economics of each trade [e.g. price, quantity, notional, direction, trade date, settlement date, currency, risk, counterparty etc.]\\n\\n\\\\- Unresolved breaks with missing or inadequate justification or investigation results\\n\\n\\\\- Unresolved breaks not escalated according to policies and procedures\\n\\n\\\\- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'F906CED0-757F-45D8-B24D-D332C3B7F922',\n code: '1370',\n name: 'P&L Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results of P&L reconciliation between general ledger and relevant systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Unexplained P&L balances above defined thresholds in month end financial results [e.g. where elements of P&L may be market moves, FX, new trade P&L, carry, reserve movements, interest income and expense, fees and commissions, price testing adjustments etc]\\n\\n\\\\- Missing documentation and or substantiation of P&L adjustments made in general ledger, sub-ledger and or other systems of record for the purpose of reconciling month end P&L data across systems\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: 'BC4DBCD7-01CD-4C20-BC98-D3C20A664272',\n code: '1775',\n name: 'New Joiner Personal Trading Account Disclosure Review ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Personal Trading Account Disclosures\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Overdue onboarding disclosures\\n- Overdue account disclosures and holding certificates [e.g., brokerage statements containing private investment accounts, trusts, investment clubs]\\n- Accounts or holdings that breach policy [e.g. securities that would not be authorised during tenure, unauthorised or restricted brokerages]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '6D76816D-DBA2-4D58-9F08-D492FE78929D',\n code: '1255',\n name: 'Pre-Trade Mid Market Mark (PTMMM) Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the application and disclosure of Pre-Trade Mid-Market Marks (PTMMM)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Eligible trades [e.g. Swaps defined as in-scope by Dodd-Frank Title VII/ CFTC regulations] that were incorrectly de-scoped from the requirement to disclose pre-trade mid-market marks (PTMMM)\\n\\n\\\\- Eligible trades for which the PTMMM [as required by Dodd Frank title VII / CFTC rule 17 CFR \\u00a7 23.431] was not disclosed to clients prior to trade execution\\n\\n\\\\- Eligible trades for which material economic terms [as required by Dodd Frank title VII / CFTC rule 17 CFR \\u00a7 23.431] were not disclosed to client prior to trade execution\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0790ECA2-FC8A-4B30-9DCB-D52E37F60873',\n code: '1569',\n name: 'Business Recovery Plan Review (Risk)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Business Continuity Plan\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Missing or inaccurate content in the business continuity plan (BCP) [e.g. purpose, scope and objectives of the BCP, roles and responsibilities, business continuity strategies, recovery processes and actions, required staff, systems, suppliers and buildings]\\n- Business continuity plans that do not reflect business changes since last review [e.g. systems, locations, staffing]\\n- Business continuity plans that that have not been approved or reviewed within required time by relevant business and relevant Business Continuity Coordinator\\n- Business recovery processes and actions that are not appropriately prioritized to meet\\u00a0Recovery Time Objectives (RTO) \\n- Business recovery processes and actions that are not feasible within the agreed Recovery Time Objectives (RTO) and sustainable for the defined timeframe [e.g. number of business days]\\n- Business recovery processes and actions that are not in line with risk appetite or do not meet legal and regulatory obligations\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '11DF7A6E-26A4-4771-AA30-D5A6C94ED320',\n code: '1451',\n name: 'Cash Collateral Interest Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n5. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n\\n<!-- -->\\n\\n',\n review: 'Review interest payable or receivable on cash collateral balances\\n\\n',\n identify: 'Identify cash collateral balances that require adjustments in collateral systems to reflect accrued interest payable or receivable\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '25D67CE8-23A0-4B5D-826B-D5BEA905419C',\n code: '1422',\n name: 'Transaction Capture Intersystem Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review intersystem transaction reconciliations\\n\\n',\n identify: 'Identify incomplete or inaccurately captured transactions that have not been escalated to the appropriate FO desk for amendment\\n\\n',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1129F1BE-E19C-400F-80CE-D5F13D760075',\n code: '1203',\n name: 'Employee Licensing Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Quarterly',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n\\n<!-- -->\\n\\n',\n review: 'Review employee licensing or registration status versus requirements for their role and renewal or expiry dates\\n\\n',\n identify: 'Identify employees who are not correctly licensed or registered as per local regulatory rules or in-house rules\\n\\n',\n risks: [{\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '335B4907-6E28-440A-A895-D68B92D95B91',\n code: '513',\n name: 'Gifts & Entertainment Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review gifts and entertainment requests, registers and associated reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Gift and entertainment requests, giving or receiving, not yet approved from the business [including additional approvals for exceptions from Compliance]\\n\\n\\\\- Gift and entertainment requests breaches that have not been escalated for review [e.g., regulatory or firm monetary limits]\\n\\n\\\\- Gift and entertainment that have not been recorded in the appropriate logs\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R160812',\n name: 'Breach of gift and entertainment policy'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'E3BF0ED3-E160-471B-8CF6-D6D92FD9D9F0',\n code: '700',\n name: 'Trader Mandate Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trader mandates\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Mandates not in line with roles and responsibilities of the trader\\n- Mandates requiring recertification due to changes in business demands and/or trader experience [e.g new products, instruments, markets etc.]\\n- Traders without mandates\\n- Unapproved or overdue mandate approvals\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'BA838148-315B-40F1-937E-D807EE0AFD60',\n code: '1438',\n name: 'Unclaimed Assets Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Weekly',\n action: '1. Define next steps with relevant parties\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review unclaimed assets [e.g. physical property, shares and funds] from source systems and reports\\n\\n',\n identify: 'Identify unclaimed assets where no due diligence has been performed to identify the owners of these assets or where such assets and property have not been safeguarded or disposed of in accordance with local law and regulatory requirements\\n\\n',\n risks: [{\n code: 'R140101',\n name: 'Client reporting failures'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A8B6B620-6069-4913-B459-D83C14E9B4B1',\n code: '1708',\n name: 'Data Breach Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review suspected data breach incidents within specified timeframe [e.g. Front Office supervisor reviews incidents within 24 hours of discovery]s',\n identify: 'Identify reported data breaches which violate Information Security policies and require further escalation',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }, {\n code: 'R210102',\n name: 'External data theft or data manipulation'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R210101',\n name: 'Internal data theft or data manipulation'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '72B20125-2CDC-411F-A17C-D8770BFC5C07',\n code: '1811',\n name: 'Joint Supervisory Oversight Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Ensure Supervisor is comfortable with mitigating actions and residual risk\\n4. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instances of employees requiring joint supervision [e.g. an employee with a Product Supervisor from a different location and a Local Supervisor in the same location/jurisdiction]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Joint Supervision arrangements which create conflicts of interests that cannot be mitigated [e.g. Research staff being supervised by non-research Supervisors]\\n- Instances of joint supervision where the oversight in place is not fulfilling requirements as per internal policy [e.g. Frequency of internal meetings, evidence and documentation not meeting required thresholds]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190301',\n name: 'Breach of cross-border activities or extra-territorial regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }, {\n code: 'R160301',\n name: \"Non-compliance with firm's code of conduct\"\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }]\n}, {\n id: '8D077066-93BA-43B3-8BD2-D9157E05D18F',\n code: '1755',\n name: 'Persistent Debt Communication Review',\n type: 'Detect',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Persistent Debt Strategy communications\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Communications sent to customer are inaccurate, not fit for purpose and without prior approval\\n- Eligibility and exclusion criteria for communications have not been reviewed and approved in terms of accuracy\\n- Amendments to existing Persistent Debt letters or new letters were not approved by the relevant departments\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }, {\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '63330DFC-2B65-400D-B24C-D9E03ADCA5F4',\n code: '1434',\n name: 'Large Payment Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Determine circumstance of suspicious and / or irregular activity\\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review client instructions and the processed payment for transactions above a predetermined threshold',\n identify: 'Identify inaccurate or incomplete instructions or instructions without appropriate seniority of sign-off',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'FB5F06FE-87EC-4288-B5C6-D9F296A584C1',\n code: '1022',\n name: 'Margin Call Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Agree time-frame for completion with relevant parties\\r\\n4. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\r\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n',\n review: 'Review the number of margin calls made to clients and the time taken to meet the call.',\n identify: 'Identify clients that require further investigation [e.g. meeting with the client to discover the root cause of the problem (e.g. client trading strategy has changed, client is in financial difficulty, clients Treasury or Operations function is not performing) and work on a solution]',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R180401',\n name: 'Know your customer (KYC) failure'\n }],\n riskInventories: [{\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '5F9C1E62-433B-4C42-882F-DA888A2C4296',\n code: '1543',\n name: 'Client Money and Asset Segregation Deficit Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Agree timeframe for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review segregation deficits [i.e. amount segregated vs market value of shares]\\n\\n',\n identify: 'Identify deficits that are not adequately explained or whose explanation does not align with the stock record\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n code: '1798',\n name: 'Trade Surveillance - Front Running Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity and/or trade surveillance alerts for large trades, orders and quotes\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Trades executed for the bank's own books or for clients' accounts that are executed prior to a large trade, unusual order flow or request for quote from another client and are in the same direction as that trade/order/quote\\n- Principal inventory hedge orders that were created while there was an open client order in the same financial instrument and in the same trade direction that could be executed at the same price or better\\n- Abnormal trading activity prior to large firm or client trades\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F78FF0ED-0AAC-46B9-AF94-DB99EF228CC7',\n code: '1478',\n name: 'Aged Breaks Resolution Monitoring',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor the resolution of aged breaks greater than an agreed threshold [e.g. 15 or 30 days]\\n\\n',\n identify: 'Identify unresolved breaks aged greater than the agreed threshold\\n\\n',\n risks: [{\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n code: '1791',\n name: 'Credit Risk Limits Adherence (Risk)',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review credit risk limit usage by traders, including intraday usage [e.g. counterparty, country etc.]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Credit risk limit breaches without pre-approval\\n- Credit risk limit breaches without valid justification\\n- Counterparties with no set credit risk limit\\n- Breaches requiring remediation activity to reduce exposure\\n- Trends in credit usage indicative of conduct issues\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'AC7B08EA-F77D-4C4A-9148-DC403FAD24DB',\n code: '1838',\n name: 'Privileged Access Leaver Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review privileged access rights/credentials for leavers\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Privileged access rights/credentials not removed for leavers within Group specified time period of them leaving post [e.g. within 24 hours]\\n- Multi factor equipment/applications not removed/suspended for leavers within Group specified time of them leaving post [e.g. within 24 hours]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R161001',\n name: 'Misuse of privileged access rights'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'F818AD1B-D5B4-4EDD-B724-DC4E271DE815',\n code: '1662',\n name: 'Outside Business Interest Certifications/Disclosures Review ',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Agree timeframe for completion with relevant parties\\u00a0\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\u00a0\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all Outside Business Interest (OBI) certifications/disclosures\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Incomplete or inaccurate certifications/disclosures\\n\\n\\\\- Certifications/disclosures not submitted in a timely manner\\n\\n\\\\- Any existing or new OBI that may present a real or perceived conflict of interest with role, department or the Group\\n\\n\\\\- OBIs where the employee should have resigned from the OBI to resolve the potential conflict but has not submitted their resignation within Group policy time limits [e.g. 30 or 60 days]\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n code: '1589',\n name: 'Model Change review (Risk)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review model changes\\n\\n',\n identify: 'Identify unapproved changes or those that introduce unexpected impact on valuations or risk\\n\\n',\n risks: [{\n code: 'R140401',\n name: 'Change execution failure'\n }, {\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n code: '1840',\n name: 'eTrading Algorithm Testing Methodology Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the pre-release testing methodology.\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Instances where pre-release testing has not been completed or has not been completed as per the requirements set out in the testing methodology [e.g. Stress Testing, Conformance Testing, UAT Testing]\\n- Deviations from the testing methodology which lack proper justification [e.g. arbitrary testing metrics with no explanation]\\n- Incorrect application or version of testing methodology used\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'FD2B4095-3A78-42BF-9F51-DD6C5645F26C',\n code: '1631',\n name: 'Hedge Accounting Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review hedge accounting relationships\\n\\n',\n identify: 'Identify errors with hedge accounting setups [e.g. internal trades used for hedge accounting purposes, derivatives forming part of a hedge accounting relationship being flagged for novation or compression, missing documentation relating to structure, testing and risk, where hedge effectiveness testing has failed etc.]\\n\\n',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: 'E65975D2-2A70-448A-A33B-DDAE4E27556A',\n code: '1222',\n name: 'Operational Risk Pre Go-live Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review algorithm / eTrading platform changes [e.g. significant change, new functionality, new system] pre go-live',\n identify: 'Identify where e-Trading platform changes fail to meet Operational Risk release standard sign off criteria [e.g. documentation, related controls, procedures, etc.]',\n risks: [{\n code: 'R140214',\n name: 'Hedging error'\n }],\n riskInventories: [{\n code: 'ETRISK',\n name: 'eTrading Risk'\n }, {\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'AB364A16-DCA6-41FB-9DA2-DE1499068783',\n code: '1500',\n name: 'KYC Completeness Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the completeness and accuracy of information in Know Your Customer (KYC) records\\n\\n',\n identify: 'Identify information missing from KYC records or other Customer Due Diligence (CCD) which will block client on-boarding completion [e.g. Missing Enhanced Due Diligence (EDD) where required]\\n\\n',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0E37AF0B-6ED8-45D6-9FAE-DEBC1E43F5C5',\n code: '1424',\n name: 'Front Office Back Office (FOBO) Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Perform root cause analysis\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review results of Front Office Back Office (FOBO) system reconciliations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Front Office to Back Office (FOBO) system reconciliations not reconciling key attributes and economics of each trade [e.g. price, quantity, notional, direction, trade date, settlement date, currency, risk, counterparty etc.]\\n\\n\\\\- Unresolved breaks with missing or inadequate justification or investigation results\\n\\n\\\\- Unresolved breaks not escalated according to policies and procedures\\n\\n\\\\- Aged unresolved breaks not presented and or discussed in periodic risk control meetings\\n\\n\\\\- Absence of segregation of duties between individual or team entering the trade, and individual or team performing the reconciliation\\n\\n',\n risks: [{\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n code: '1591',\n name: 'Model Revalidation Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Semi-Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review models\\n\\n',\n identify: 'Identify models missing revalidations or those not revalidated as fit for purpose\\n\\n',\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'D647D22D-E011-492F-BED9-DFAA07094141',\n code: '1587',\n name: 'Market Risk Limits Review (Risk)',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review market risk limit requests versus the banks risk appetite across proprietary and third-party platforms\\n\\n',\n identify: 'Identify inappropriate or missing limit thresholds [e.g. too conservative, too lenient, not in sync with risk appetite]\\n\\n',\n risks: [{\n code: 'R140214',\n name: 'Hedging error'\n }, {\n code: 'R140213',\n name: 'Limit breach'\n }, {\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'ETRISK',\n name: 'eTrading Risk'\n }, {\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '723255E5-8FF8-4042-9234-DFD47108143E',\n code: '1098',\n name: 'Commodities Insurance Coverage Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review commodities insurance policies\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Gaps in insurance coverage outside normal insurance policy or trade agreement that may require additional or separate insurance coverage [e.g. due to location, route, country, product etc.]\\n\\n',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '1BDC1985-BCF3-4B73-9772-E009E5445FE2',\n code: '1687',\n name: 'Client Trade Error Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review reported client trade errors which have been accommodated by the firm',\n identify: 'Identify client errors accommodated without appropriate rationale, approval or documentation [e.g. Client errors accommodated without approvals from appropriate Front Office and control functions, client errors not sent to Legal/Compliance for MiFID II Inducement Rules review or documenting in the Inducement Log etc.]',\n risks: [{\n code: 'R160813',\n name: 'Giving or receiving inappropriate inducements'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '30846731-DEC4-403A-8A6E-E0260D0728AA',\n code: '890',\n name: 'Last Look - Activity Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Last Look reports, trends and analysis\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Trend analysis indicating an increase in Last Look rejections\\n- Last Look metrics indicating behaviour not in compliance with internal Last Look policies, procedures, or external disclosures\\n- Trades subject to Last Look which were rejected inside of internal thresholds\\n- Trades subject to Last Look which were accepted outside of internal thresholds\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '5A221833-3330-4367-B6E1-E037F4213A2E',\n code: '992',\n name: 'Third-Party Agreement Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review agreements in place with Third-Party Introducing Agents [e.g. to facilitate new issue business in areas where the bank lacks origination resources or the expertise]\\n\\n',\n identify: 'Identify inappropriate Third-Parties or inappropriate agreements [e.g. engagement letter, non-disclosure agreements etc.]\\n\\n',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: '45F94C6D-74B0-42CD-8FD6-E0CF5D44E219',\n code: '665',\n name: 'Research - Periodic Template and Disclaimer Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Research templates and associated disclaimers within research reports prior to publication\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Boiler plate disclaimer wording that has not been updated to reflect revised regulation\\n\\n\\\\- Research report templates that have not been updated to reflect revised regulation\\n\\n\\\\- Proposed revisions to templates that have not been approved by Legal and or / Compliance\\n\\n\\\\- Disclaimer table that is inaccurate or out of date resulting in incorrect disclaimer for a particular country or client type\\n\\n\\n\\n',\n risks: [{\n code: 'R160809',\n name: 'Inappropriate distribution of research material (Inc. bundling)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFORES',\n name: 'Front Office Research'\n }]\n}, {\n id: 'DE380001-1EA4-4802-BFE0-E120CFC36497',\n code: '1558',\n name: 'Manual Lifecycle Event Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review reports highlighting upcoming manual lifecycle events\\n\\n',\n identify: 'Identify expiries, fixings or trade maturities which require action\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'EF707E96-EBB2-4381-A788-E13C14DC74A0',\n code: '1507',\n name: 'Change in Tax Circumstance Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review changes to client static data that potentially impacts tax reporting',\n identify: 'Identify where changes to client static data indicate that a change in tax circumstances are required for the client or new tax documentation is required',\n risks: [{\n code: 'R180303',\n name: 'Tax evasion facilitation'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '2B90E28F-855D-4316-89D2-E1B534A60ADD',\n code: '1768',\n name: 'Darkpool Compliance - Documentation Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review darkpool documentation, self-assessments, due-diligence questionnaires and regulatory submissions\\n\\n',\n identify: 'Identify instances of regulatory non-compliance through any of the following documents and regulatory submissions:\\n\\n- Darkpool procedures which do not accurately reflect how the darkpool operates in practice.\\n- Regulatory filings (e.g. SEC ATS-R or ATS-N forms) submitted in an untimely manner or submitted with inaccurate or incomplete darkpool trading data\\n- Darkpool due diligence documentation that is missing or incomplete\\n- Client crossing preference requests that were not properly documented, retained or communicated back to the client in writing\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: '2800105A-4D3A-4FD4-BAA6-E1BF9C927833',\n code: '1570',\n name: 'Business Recovery Plan Testing (Risk)',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Recovery Testing Results\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Business continuity plans that have not been tested as per the Business Continuity Management testing calendar\\n- Business recovery plan tests that do not cover suitable scenarios [e.g.\\u00a0critical process or systems, unavailability of premises, disruption of IT applications, unavailability of staff]\\n- Business continuity plans only partially tested without suitable exemption or justification\\n- Issues identified from Business Recovery testing that have not been documented or resolved [e.g. issues identified from Denial of Access, Denial of Service and Call Tree Tests]\\n- Essential Recovery Personnel that have not been identified, notified of or trained on their roles and responsibilties\\n- Remote Access testing for eligible employees that has not been performed within the required timeframe\\n- Evidence of completion of Business Recovery testing that has not been approved and recorded in the relevant system\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'A21B2AA2-1CBA-4A23-A5BF-E1EFC5A9FD3B',\n code: '830',\n name: 'IT Business Continuity Plan Review and Testing',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review IT Business Continuity Plans (BCP) and relevant BCP testing schedules and results\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Business continuity plans which contain incomplete or inaccurate information\\n\\n\\\\- Business Continuity plans that do not meet the firm's minimum testing requirements\\n\\n\\\\- Business Continuity plans relied on by third parties where they outsource activities to the bank that have not been formalised and reviewed [e.g. after a major change]\\n\\n\\\\- Business Continuity plans which are not in line with the firm's IT continuity requirements\\n\\n\\\\- Business Continuity plans which do not include details of critical third parties to better assess business impact of third party activities\\n\\n\\\\- Business Continuity plans for applications that are missing, outdated, not reviewed or not in line with the firm's Business Continuity policy\\n\\n\\\\- Business Continuity plans which do not consider appropriate events, scenarios and risk exposure criteria [e.g. impact, likelihood, etc.]\\n\\n\\\\- BCP tests not conducted within the required period and in accordance with firm's minimum standards for testing\\n\\n\\\\- Algo-trading systems with no business continuity arrangements in place or with arrangements that have not been tested\\n\\n\\\\- Discrepancies identified during business continuity testing with no action plans in place\\n\\n\",\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n code: '1633',\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Determine circumstance of IT alert or failure\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Resolve IT alert e.g. abort job, restart job, restart service\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor Hardware and Application capacity and performance metrics\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Application/Trading system performance or capacity metrics not being monitored or made available to management in a timely and manner [e.g., capacity utilisation, available processors, network speed, available memory, available disk]\\n- Application/Trading system performance or capacity metrics breaching or approaching agreed thresholds for agreed time periods\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R150301',\n name: 'Network failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '758AEB16-776F-456D-8A73-E2AD04F3A973',\n code: '1605',\n name: 'Financial Reporting Analytical Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Ensure regulatory registration / license / waiver /disclaimer is in place as required\\n5. Amend inaccurate / incomplete or stale data or documentation\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review analysis of regulatory reports\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Material or unexpected variances that have not been reviewed, analysed, explained and documented [e.g. unexplained quarter on quarter balance movements]\\n\\n\\\\- Thresholds that have not been reviewed in the required time frame\\n\\n\\\\- Analytical reviews that were not performed prior to financial statement submissions\\n\\n',\n risks: [{\n code: 'R220101',\n name: 'Failed mandatory accounting or financial reporting obligation'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '72A856E9-CE09-40D9-8320-E4F28D72F165',\n code: '979',\n name: 'Corporate Finance Transaction Documentation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all business process manuals and checklists related to corporate finance transactions',\n identify: 'Identify insufficient transaction documentation[e.g. ensuring documentation is in line with regulation, restricted access to folders and internal policies and procedures etc.]',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: 'B03D8F4B-BE70-4A85-8046-E4FEBAB4BAE9',\n code: '1020',\n name: 'Credit Movements Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Real time',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties\\r\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor for a sharp movement in the equity price of a bond issuer, reference entity or currency of the sovereign bond issuer [aims at giving an early warning of credit spread widening - in effect giving traders an opportunity to reduce exposures to deteriorating credits or sovereigns at an early point and mitigating losses]',\n identify: 'Identify deviation outside of pre-defined thresholds\\r\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '44C5F095-77FC-4BB0-93F2-E533DDBF4877',\n code: '1725',\n name: 'Complaints Management Data Review',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Define next steps with relevant parties\\n2. Agree time-frame for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review customer complaints data and management information',\n identify: 'Identify one or more of the following in the customer complaints data:\\n- Trends in customer complaints which may indicate a decline in business service or performance complaints for specific products\\n- An overall increase in the volume of customer complaints which breaches defined thresholds\\n- Customer complaints which have not been resolved in line with internal or regulatory requirements',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '83C17E42-D954-42A7-8C06-E5BEA2D06A18',\n code: '1723',\n name: 'Communication Template Regulatory Review',\n type: 'Detect',\n automation: null,\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation \\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the templates for all regulated customer correspondence [e.g. SMS, letters or e-mail to vulnerable customers]',\n identify: 'Identify one or more of the following: \\n- Templates not reviewed and approved in line with required timelines\\n- Templates that do not meet regulatory requirements\\n- Templates that have not been used for a given period and can be removed from the template library',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '98A42930-8921-42CC-BDBC-E695CBE09692',\n code: '1760',\n name: 'Role-Specific Training Review',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '.',\n review: 'Review completion of role-specific training, including training systems and results to determine staff competency levels depending on role [e.g. payment officers, settlements staff, legal copy staff, Customer Financial Assistance (CFA)]',\n identify: 'Identify one or more of the following instances post training delivery regarding in-scope staff:\\n- Staff that failed product training but are not locked out of the relevant retail systems and continue to fulfil customer journeys.\\n- Staff not aware of their responsibilities and accountabilities in line with the Senior Management Regime.\\n- Training modules that are non-compliant with the Training & Competence (T&C) scheme.\\n- New joiners with subpar competency levels that have not had additional training or coaching.\\n- Skill gaps across members of staff are not addressed or actioned effectively',\n risks: [{\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '4A34B747-B633-4D39-8E4D-E6BA68A0CEB8',\n code: '1257',\n name: 'Public and Private Designation Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review public and private designation',\n identify: 'Identify staff requiring a change in designation',\n risks: [{\n code: 'R210402',\n name: 'Client confidentiality or data protection breach'\n }],\n riskInventories: [{\n code: 'ACSDCM',\n name: 'Debt Capital Markets'\n }, {\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }, {\n code: 'MAA',\n name: 'Mergers and Acquisitions'\n }]\n}, {\n id: 'D91F6B63-4147-4E13-AB8C-E6E3BD72D6C5',\n code: '1732',\n name: 'Failed PPI Statement Issuance Review',\n type: 'Detect',\n automation: null,\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review PPI statement generation metrics',\n identify: 'Identify one or more of the following:\\n- Customers who should have been sent a PPI statement but have not been sent a statement\\n- Changes in year on year volume of PPI statement production which is outside of thresholds or expectations\\n- PPI statement volumes requested reconcile with PPI statement volumes produced',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '105A396F-7C0B-43DF-9FEC-E74A21314526',\n code: '1821',\n name: 'Last Look - Configuration Review',\n description: '',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Last Look configurable settings in trading systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Last Look holding period settings which require amendment [e.g. in response to changes in the complexities in the products being traded, or system and hardware changes]\\n- Last Look price improvement settings which require amendment\\n- Last Look symmetrical or asymmetrical tolerances which require amendment\\n- Last Look logic or tolerances that are not fair, transparent or in line with internal policy\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R160805',\n name: 'Market misconduct'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '0C5A1112-A21D-4E5A-93E5-E7B34DB9E5A7',\n code: '1729',\n name: 'Customer Interest Rate Oversight',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Agree time-frame for completion with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the interest applied to customer accounts',\n identify: 'Identify one or more of the following errors in interest application:\\n- Cash interest rate is lower than the standard card purchase interest rate\\n- The interest rate applied has been calculated incorrectly\\n- Personal interest rates applied to a customer account are greater than defined thresholds -correct refund applied when previously incorrect\\n- A customers standard rate does not equal the sum of the personal rate plus the latest base rate\\n- Accounts where interest has been charged but the balance was paid in full by the due date\\n- Accounts in collections where an interest rate has been erroneously increased',\n risks: [{\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'FFFEC17D-EFED-42DE-8BD7-E7F83CC1FED5',\n code: '1615',\n name: 'P&L and Risk Adjustments Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Amend inaccurate / incomplete or stale data or documentation\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review P&L adjustments',\n identify: 'Identify adjustments that fail to meet minimum standards [e.g. no ownership allocation or Front Office justification provided]',\n risks: [{\n code: 'R220102',\n name: 'Inaccurate external report'\n }, {\n code: 'R140311',\n name: 'Inaccurate metrics reported to senior management'\n }, {\n code: 'R140313',\n name: 'P&L error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '2F91C67F-0EC7-4F0D-B7FD-E7FD22014255',\n code: '1405',\n name: 'Manual Settlement Instruction Verification Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Manual Settlement Instruction\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Manual settlement instructions not verified against golden source or any other appropriate authoritative source held in bank's system of record\\n\\n\\\\- Manual settlement instructions not correctly entered from previously authenticated client instruction or internal manual voucher\\n\\n\\\\- Manual settlement instructions with missing or incorrect key economic details or settlement details [e.g. Amount, Currency, Value Date, Settlement Date, Beneficiary Name, Beneficiary Account number, Agent etc]\\n\\n\\\\- Rejections noted as part of maker checker review for a manual settlement instruction not escalated to management or appropriate risk control governance forum.\\n\\n\",\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140206',\n name: 'Trade capture error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0BA46345-405B-47A1-ACA6-E877656DCFF2',\n code: '1270',\n name: 'Allocation override approval',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review all proposed trade allocation overrides ',\n identify: 'Identify any proposed overrides that could create unfair outcomes for clients\\r\\n',\n risks: [{\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'D92A121E-C669-40B8-8B85-E8C22F719EB6',\n code: '1538',\n name: 'Pricing Data Accuracy Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Complete and / or request completion of outstanding tasks or approvals\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: \"Review pricing data held in the firm's systems vs source [e.g. external data provider system]\",\n identify: 'Identify pricing discrepancies beyond a pre-determined acceptable threshold',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '7B1E2749-1293-4A79-9485-E8C2880343E2',\n code: '1762',\n name: 'Third-Party Service Provider Review',\n type: 'Detect',\n automation: null,\n frequency: 'Annually',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review third-party contractual arrangements, the results of due diligence site visits and testing [e.g. BCP test results, third-party IT security testing results]\\n\\n',\n identify: 'Identify one or more of the following in third party contract assessments:\\n\\n- Contract has expired or will expire shortly and renewal is required\\n- Changes in the scope of services\\n- Inappropriate audit rights due to incorrect assessment of third party materiality\\n- Non-compliance with relevant regulations\\n- Contingency planning and BCP plans are either not reviewed or are insufficient\\n- Arrangements such as exits from current third party relationships or transitions to other third parties are not included in the contract\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: 'E38B0D0B-DAB1-4720-8183-E8D798380334',\n code: '1066',\n name: 'eTrading Material Change Management Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the management of material changes to existing algorithms.\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Instances where material changes to trading algorithms have not been performed in line with the firm's policies and procedures\\n\\n\\\\- Instances where material changes have been made without the necessary steps or approvals being performed in-line with the relevant policies and procedures\\n\\n\\\\- Instances where material changes have not been communicated to traders as well as to responsible person(s) within the compliance and risk functions\\n\\n\",\n risks: [{\n code: 'R240103',\n name: 'Inappropriate use of models'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '2C68CD14-A8EB-45D2-A43E-E8E4BEC8E6FD',\n code: '1476',\n name: 'Regulatory Reporting Post-Submission Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review the preparation, completeness and timely submission of regulatory reports post-submission\\n\\n',\n identify: 'Identify incomplete, inaccurate, unapproved or delayed reports or feedback from the regulator in relation to the submission requiring action\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '2E8A931D-9B81-4FDA-AEC5-E91AD2EFF47C',\n code: '1772',\n name: 'Trade Confirmation Reconciliation Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Determine circumstance of breach or deviation\\n3. Investigate rationale for any late, missing or incomplete tasks\\n4. Inform counterparty on the other side of the trade\\n\\n<!-- -->\\n\\n',\n review: 'Review trade confirmation reconciliation breaks between the firm\\u2019s systems and the broker or exchange records [e.g. via SWIFT or through broker mailbox]\\n\\n',\n identify: 'Identify one or more of the following in relation to confirmation reconciliations:\\n\\n- Breaks, missing trades or incorrect economics that have not been escalated and resolved in a timely manner\\n- Unmatched or mismatched trades details requiring amendment within the firm trading books or by the counterparty [e.g. trade date, quantity, price etc.]\\n- Trade details not in line with internal bookings\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0500A51E-C514-4A40-8D7C-E98F11A9021B',\n code: '1042',\n name: 'Derivatives Mandatory Clearing Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Over The Counter (OTC) derivative transactions requiring mandatory clearing\\n\\n',\n identify: 'Identify trades which have not been flagged as requiring mandatory clearing\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'ACSFOFX',\n name: 'Front Office FX'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EFC002CC-980F-4BF9-8AF8-E9970B67590D',\n code: '1202',\n name: 'Cross-border Pre-Travel Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Complete and / or request completion of outstanding tasks or approvals\\n\\n<!-- -->\\n\\n',\n review: 'Review employee requests for cross-border travel\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Travel requests which have not been communicated to all required stakeholders for approval\\n- Travel requests not in line with company policy which cannot be approved[e.g., impermissible country selected, exceeds total permissible days allowable per location]\\n- Travel requests that cannot be approved due to employees lacking the appropriate licenses, permits or registrations as required by the location or type of business being performed\\n- The traveller has not acknowledged (or refreshed previously acknowledged) local business restrictions and regulations imposed by the local jurisdiction to which they are travelling\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190301',\n name: 'Breach of cross-border activities or extra-territorial regulations'\n }, {\n code: 'R190201',\n name: 'Improper licensing, certification, registration or work permits '\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C16CDA91-28C1-46ED-9E8B-E9D10DB067CF',\n code: '1223',\n name: 'Executed Block Trade Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Define next steps with relevant parties\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review executed block trades and allocations\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Block trade details not reported to the exchange within the required time window\\n- Block trades not fully allocated across accounts\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140207',\n name: 'Trade allocation error'\n }, {\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B7D58463-C8AF-45F4-889E-EA9E7E602DF6',\n code: '1804',\n name: 'Supervisory Tasks Delegation Review',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review instances where Supervisory tasks have been delegated [e.g. In instances where the primary Supervisor is out of office]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Delegated supervisory tasks that have not been completed or were completed in an untimely manner\\n- Delegated supervisory tasks that have been completed incorrectly by the delegate\\n- Instances of supervisory tasks delegated inappropriately [e.g. Tasks not delegated in line with the delegation matrix or tasks delegated without sufficient justification for the delegation]\\n- Instances of supervisory task delegation in breach of internal policy [e.g. Delegation that has occurred for longer than policy allows]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6E55206C-9CAB-4DFD-89CB-EC091670FFEA',\n code: '1525',\n name: 'Client Assets Calculation Variance Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review current segregation calculation results versus previous calculations of failing trade valuations which are used in the calculation of client asset segregation\\n\\n',\n identify: 'Identify variances beyond internally agreed thresholds [e.g. >$5 million, >10%, >20%]\\n\\n',\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A8365CC0-DF0B-413E-AEB1-EC47DC2037FE',\n code: '1594',\n name: 'Policies, Standards and Procedures Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review policies, standards and procedures\\n\\n',\n identify: 'Identify policies, standards and procedures which require amendment\\n\\n',\n risks: [{\n code: 'R140212',\n name: 'Risk reporting error'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: 'EDBC270B-DF9B-4C72-ABB9-EC7BE1AEC674',\n code: '23',\n name: 'Front Office Conflict of Interest Register Governance Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1\\\\. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n2\\\\. Complete and / or request completion of outstanding tasks or approvals\\n\\n3\\\\. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n\\n4\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review the Front Office Conflicts of Interest (COI) register\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- Governance meetings reviewing actual or probable COI items that have not been held in the required timeframe and where exceptions have not been raised to reflect this.\\n\\n\\\\- Changes or updates to conflics of interest items that have not been escalated to or discussed at the relevant governance meetings\\n\\n\\\\- Formal attestations by business senior management that have not been performed to ensure COI Registers are accurate, complete and updated as required\\n\\n\\\\- Instances where updated COI Registers have not been reviewed or challenged\\n\\n\\\\- Material changes that have not been documented in conflict of interest registers [e.g. material change due to a new product or process]\\n\\n\\\\- Instances where no remediation plan has been activated for changes to business processes or controls that are documented in the conflicts of interest register\\n\\n- Conflicts of Interest that have been identified but not updated in the Register\\n\\n<br>\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160401',\n name: 'Unfair treatment of clients'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'EAE68456-9B0D-426E-842D-ECC4E03A3C3D',\n code: '1656',\n name: 'System Logging Configuration Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review system logging configuration\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n<br>\\n\\n\\\\- System security logging does not fully record login attempts [e.g. successful/ unsuccessful, workstation ID, user ID, time]\\n\\n\\\\- Inadequate privileged access rights logging [e.g. Logs do not contain date and time of privileged access rights/credentials assigned/revoked, Logs do not contain activity performed using privileged access rights/credentials]\\n\\n\\\\- System security logs that can be altered/deleted\\n\\n\\\\- System logging does not use a standard time source/code\\n\\n\\\\- System logging lacks the ability to produce near real-time security logs\\n\\n\\\\- System security logs cannot be sent via approved system mechanisms\\n\\n\\\\- System security log retention, including eTrading logs, are not retained for the Group or Regulatory required minimum required time\\n\\n',\n risks: [{\n code: 'R210501',\n name: 'Failure to handle proprietary data appropriately'\n }, {\n code: 'R210201',\n name: 'Unintended data loss'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'E6CD3F8F-F684-4DF9-A01E-ECE430948898',\n code: '1276',\n name: 'Trade Instruction Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Halt trading or further business until all approvals are obtained\\r\\n2. Define next steps with relevant parties\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review each new order.',\n identify: 'Identify authorisation is correct and trading parameters requested e.g. speed are appropriate for security and venue.',\n risks: [{\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'E78DEF91-7D28-418C-BF0C-ED52ED44A196',\n code: '769',\n name: 'eTrading Pre-Trade Price Sanity Monitoring ',\n type: 'Prevent',\n automation: null,\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Halt trading or further business until all approvals are obtained\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Ongoing monitoring of orders sent to venues',\n identify: 'Identify price deviation outside of pre-defined thresholds [e.g. outside of levels specified internally, X% of last quote, or by levels specified by the venue rulebook]',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: '5F6DE146-E330-46F5-86AA-ED8C25B448FA',\n code: '1162',\n name: 'Physical Commodity Location Premium Monitoring',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Monitor commodity location premiums\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\- Locations that require a different pricing structure due to commodity availability and associated premium\\n\\n',\n risks: [{\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R140310',\n name: 'Unintended positions'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: '86951343-F431-4E5A-9C1C-EE3A99129B9C',\n code: '1019',\n name: 'Client Margin Call Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1\\\\. Determine circumstance of breach or deviation\\n\\n2\\\\. Define next steps with relevant parties\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n4\\\\. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\n\\n5\\\\. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n',\n review: 'Review Client Margin Calls\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\- Margin calls that have not been executed on a timely basis\\n\\n\\\\- Margin calls where no sign off was provided\\n\\n\\\\- Client collateral valuations that fall outside agreed impact threshold [e.g. P&L impact > xUSD]\\n\\n\\\\- Incorrect calculations of margin call communicated to client\\n\\n\\\\- Margin call disputes that have not been followed up with the client and where no agreement was reached\\n\\n\\\\- High risk margin calls and margin call disputes that that have not been escalated to senior management in a timely manner\\n\\n\\\\- Documentation around margin reviews that has not been stored in the appropriate system of record\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '06FB3DA4-6FD2-4769-9558-EE5C80DCD6D8',\n code: '1710',\n name: 'Operational Risk Event Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review the details of identified operational risk events\\n\\n',\n identify: 'Identify where operational risk events (ORE) have not been handled in line with internal policies and procedures [e.g. ORE not categorised into the correct materiality categories based on size of realised loss / gain, or the size of the near miss event; ORE details not completely or accurately captured in the system of record; ORE not signed off in the system of record; ORE analysis and closure not completed in the system of record within required timelines or without required documentation, evidence and action plans]\\n\\n',\n risks: [{\n code: 'R140309',\n name: 'Error resolution failure'\n }, {\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B76BFFED-6EB4-4C1D-A4D8-EEAE85CF9779',\n code: '1176',\n name: 'Trade Surveillance - Auction Bid Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Ensure conduct issue is handled appropriately e.g. disciplinary action, inform regulator\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trading activity and/or trade surveillance alerts on auction bids\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Suspicious activity which may indicate collusion in competitive bids\\n- Bids not in line with the market price of comparable securities\\n- Auctions which may have a conflict of interest\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }]\n}, {\n id: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n code: '1825',\n name: 'eTrading Post-Trade Price Tolerance Review',\n description: '',\n type: 'Detect',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Review eTrading execution prices against reference prices\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Fills received outside of observed reference prices which indicate an off-market fill [e.g. Fills received outside of the observed best bid/offer price]\\n- Fills received which deviate from the limit price by more than defined thresholds\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'B84EDD2A-5096-4155-8E42-EF14BEB004EA',\n code: '1745',\n name: 'Third-Party Service Provider Monitoring',\n type: 'Detect',\n automation: null,\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties \\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Monitor the metrics agreed in the outsourcing contract between the firm and the third-party service provider',\n identify: 'Identify deviations from agreed thresholds and governance issues, including one or more of the following:\\n- IT service or infrastructure capacity and performance issues\\n- Deviations from the standards required for customer outcomes\\n- Deviations from local regulatory or legal requirements\\n- Deviations from other requirements as stipulated in service level agreements\\n- Debt collection services not performed in line with requirements',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }, {\n code: 'R130101',\n name: 'Business continuity management failure'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }, {\n code: 'R140319',\n name: 'Customer Service Delivery Failure'\n }, {\n code: 'R140320',\n name: 'Customer Transaction processing error'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '27BC2256-F662-449F-9A5E-EFBD68B90B53',\n code: '1470',\n name: 'Governance Meetings Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n\\n<!-- -->\\n\\n',\n review: 'Review key issues and metrics presented to the meeting body [e.g. Operations lifecycle events, control landscape, risk events, fails, breaks, regulatory changes, technology, people, new business, supervisory changes etc.] from or by the various front to back functions.\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Metrics that indicate outstanding aged trades (e.g. unresolved unconfirmed and unaffirmed exceptions)\\n- Regulatory requirements / reports which did not have required approval; or were not complied with or submitted by the relevant deadlines.\\n- Operational Functions and\\u00a0processes migrated to vendors failing the firm's control standards and SLAs.\\n- Regulatory requirement process failure which are subject to review and escalation (e.g.\\u00a0CASS breaches)\\n- Operations performance metrics that indicate a deterioration in performance and require escalation (e.g. risk events, KRIs over threshold etc)\\n- Legal and regulatory changes not embedded into business operations\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R190402',\n name: 'Breach of client money or client assets requirements'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R140208',\n name: 'Settlement failure'\n }, {\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '0D2BF08A-A03B-4EE6-ABDE-EFE9654EBEAD',\n code: '1700',\n name: 'User Acceptance Testing Review (Technology)',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review User Acceptance Testing\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- User Acceptance Testing that was not performed in the correct testing environment [UAT performed in Production instead of a segregated testing environment] or performed in an environment that did not closely resemble the Production environment\\n\\n\\\\- Criteria for user acceptance testing and gaps between testing criteria and testing results which are not formalised\\n\\n\\\\- User Acceptance Testing performed with no management approvals and sign-offs\\n\\n\\\\- Incomplete or missing documentation for User Acceptance Testing [e.g. missing JIRA tickets, lack of UAT documentation recorded online, test scripts]\\n\\n\\\\- User Acceptance Testing overall sign-off provided where there is no documented evidence that all individual sign-offs have been provided\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'FFF94339-FC9D-4E29-A9E4-F055AEA435EE',\n code: '1363',\n name: 'Pre Trade Investment Restriction Breach Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\r\\n3. Define next steps with relevant parties \\r\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n5. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed',\n review: 'Review investment restriction breach alert',\n identify: 'Identify breaches or potential breaches of investment restrictions',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: 'C57C4C8B-7F9E-4153-9525-F07A3BA4DD76',\n code: '1696',\n name: 'Primary Dealer Activity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review primary auction activity [e.g. review of client and in-house orders, bids and prices]\\n\\n',\n identify: 'Identify primary auction activity in violation of internal policies or procedures or regulatory requirements [e.g. Evidence of front-running or collusion during the auction, auction activity not appropriately documented etc.]\\n\\n',\n risks: [{\n code: 'R160201',\n name: 'Anti-competitive or anti-trust breaches (inc. collusion)'\n }],\n riskInventories: [{\n code: 'ACSFORATES',\n name: 'Front Office FI Rates'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A56CE773-8567-49ED-807F-F08CB7184DCF',\n code: '1466',\n name: 'Unapplied Funds Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review unapplied and incorrectly applied funds\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Funds received not applied to correct client accounts within time specified by regulation or policy [e.g. Client Asset Source Book (CASS) Regulation]\\n\\n\\\\- Unapplied funds not returned to the remitting bank with appropriate reason code within time specified by regulation or policy [e.g. Incorrect Account number, Closed Account, Blocked Account]\\n\\n\\\\- Funds applied to incorrect Bank department requiring correction\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'F9C596DD-774A-4F39-9EA9-F098793507B6',\n code: '699',\n name: 'eTrading Governance Forum Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key risk issues and eTrading / Algo metrics presented to the meeting body by the\\u00a0various front to back functions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Algo or Smart Order Router performance metrics which indicate a degradation in performance\\n- Operational risk events / losses that require escalation and remediation activity to resolve\\n- Risk and Control environment metrics which indicate that eTrading controls are not performing as required\\n- Remediation programs missing deadlines or not achieving expected outcomes\\n- Regulatory requirements or reports which are unable to be met or signed off\\n- Stress testing or new/changed algorithm testing results that cannot be signed off\\n- eTrading platform capacity or stability metrics which indicate that enhancements are needed to the eTrading environment\\n- Client eTrading parameters and tiering classifications that are erroneous and require updating\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'F9AEF963-1FD6-4124-8571-F09B23B5CAED',\n code: '1521',\n name: 'Corporate Action Allocation and Payment Instruction Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review cash payments / stock allocation made to clients for Corporate Action events\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Incorrect cash [e.g. dividend, coupon, interest, principal] or stock received for the corporate action from issuer or custodian prior to making disbursement to client\\n\\n\\\\- Disbursement to client from the time of receipt of cash or stock from issuer exceeds Corporate Action processing time specified by policies and procedures\\n\\n\\\\- Corporate Action disbursements authorised without reconciling actual cash or stock received from issuer vs expected cash or stock\\n\\n\\\\- Incorrectly or inappropriately authorised Corporate Action disbursements instructions sent to cash management team or payment team\\n\\n\\\\- Client accounts which have residual or fractional Corporate Action balances without appropriate rationale\\n\\n',\n risks: [{\n code: 'R140301',\n name: 'Payment error'\n }, {\n code: 'R140209',\n name: 'Post settlement lifecycle event failure (inc. derivatives and corporate actions)'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'DA3BE119-5F53-47C4-9320-F0C0D168E47D',\n code: '1735',\n name: 'Inter-System Account Reconciliation',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review inter-system account reconciliation breaks',\n identify: 'Identify one or more of the following: \\n- Break items requiring further escalation and senior management sign off\\n- Incorrect data held on banking systems',\n risks: [{\n code: 'R190407',\n name: 'Breach of card scheme rules'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '372F214A-C047-45D2-9ED2-F1E2C0CBB60D',\n code: '1834',\n name: 'IT Business Recovery Plan and Testing',\n description: '',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Annually',\n action: '1. Define next steps with relevant parties\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review resilience and recovery plans and capabilities of IT services and applications\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Test plans that do not effectively evaluate the resilience and recovery capabilities of IT services and applications\\n- Business recovery testing which is not performed against firm-mandated disruption events and scenarios [e.g. application failures, production crossovers, data centre recovery, loss of premises]\\n- Workforce recovery plans for loss of building which are not tested and evaluated for effectiveness.\\n- Business recovery plans which are not compliant with firm standards or do not reflect material changes to processes, systems and applications\\n- Instances where the RTO (Recovery Time Objective) and RPO (Recovery Point Objective) time as agreed with the business were not met during the business recovery test\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: 'C0FACE4B-6D2B-4382-81F1-F2586916AF53',\n code: '1011',\n name: 'Environmental, Social, and Governance (ESG) Pre-Deal Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Define next steps with relevant parties\\n2. Halt trading or further business until all approvals are obtained\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review, prior to deal execution, sectors, clients, companies etc. that do not conform to the banks environment, social, governance (ESG) policy\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Deals that have not been assessed for ESG risks\\n- Deals that would breach the ESG policy if executed [e.g. climate change, sustainability, social concerns, human rights etc.]\\n- Counterparties who do not meet the banks standards for ESG risk management practices\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160402',\n name: 'Client suitability failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '8AEECE80-01F2-403F-9901-F33D099B0529',\n code: '1583',\n name: 'Risk Limit Excess Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review risk limit excesses\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Limit excesses which have not been communicated to relevant business areas for approval\\n- Limit excesses without agreed and documented remediation plans\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140213',\n name: 'Limit breach'\n }],\n riskInventories: [{\n code: 'Risk',\n name: 'Risk'\n }]\n}, {\n id: '474F696F-5566-4822-949B-F383F473A780',\n code: '1551',\n name: 'Payment Queue Monitoring',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Real time',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n\\r\\n',\n review: 'Review payment queues prior to any daily cut-off time [e.g. for currencies]',\n identify: 'Identify payments required but not yet sent',\n risks: [{\n code: 'R140208',\n name: 'Settlement failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'E6FC7DA0-C611-4AB9-92E7-F3A945D3377B',\n code: '1810',\n name: 'Counterparty Trade Matching Review',\n description: '',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n5. Resolve trade irregularity e.g. unwind, amend or exit trade\\n6. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade data, unmatched trades, reconciliations, and discrepancies between trade booking systems and counterparties\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Discrepancies in trade bookings and settlement instructions between the bank and the counterparty\\n- Trades that remain unmatched or unreported by the client on the exchange platform by a specified timeframes.\\n- Any potential financial loss or delay on regulatory requirements due to unmatched deals.\\n- Discrepancies between trades in internal order management systems and the relevant clearing corporation.\\n- Unmatched trades and discrepancies in inter-system trade reconciliation reports\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'A054836F-723B-4D44-B588-F3EF2F00B17E',\n code: '1630',\n name: 'Period End Valuation Adjustments Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review period end valuation adjustments [PVA, FVA etc.]\\n\\n',\n identify: 'Identify inaccurate or unjustified adjustments\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Finance',\n name: 'Finance'\n }]\n}, {\n id: '8D28168D-90B2-470C-B66F-F3FCC03FD3C3',\n code: '1457',\n name: 'Corporate Actions Client Communication Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Agree time-frame for completion with relevant parties\\r\\n3. Inform client of the circumstances of the event or issue\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review communications provided to clients for corporate action and asset servicing events',\n identify: 'Identify corporate action events that have not been adequately communicated to the client [e.g. changes in entitlements should be highlighted to clients on a timely basis]',\n risks: [{\n code: 'R140101',\n name: 'Client reporting failures'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'F11B9B97-5464-4B29-AA87-F4A58DB8F300',\n code: '974',\n name: 'Research Unbundling Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review business services provided which are eligible to be defined as research [minor non-monetary benefits are excluded]\\n\\n',\n identify: 'Identify research costs and charges which have not been appropriately itemised or paid for [e.g. to increase transparency over costs and charges, allowing investment firms to demonstrate they are not induced to trade and therefore act in their clients best interests, research is not sent to non-paying clients etc.]\\n\\n',\n risks: [{\n code: 'R160809',\n name: 'Inappropriate distribution of research material (Inc. bundling)'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFORES',\n name: 'Front Office Research'\n }]\n}, {\n id: '2100E24C-1B6C-4484-9D1F-F5552E5B6844',\n code: '1264',\n name: 'Book Ownership Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Amend inaccurate / incomplete or stale data or documentation \\r\\n2. Complete and / or request completion of outstanding tasks or approvals \\r\\n3. Ensure closure of inappropriate client account, trading book, chatroom or subject of this control\\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review book static data and book recertification status',\n identify: 'Identify required updates in the trading book static data and any incomplete recertifications [e.g. book re-assigned post individual leaving the Firm]',\n risks: [{\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'ACSECM',\n name: 'Equity Capital Markets'\n }]\n}, {\n id: '886728CA-6730-4536-A4D3-F5A8B29BF2F0',\n code: '1056',\n name: 'Fixed Income Short Selling Activity Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review short positions in fixed income securities\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Short sales leading to uncovered positions due to inability to locate borrow\\n- Short positions not in line with the market making exemptions held by the bank that require reporting to the National Competent Authority\\n- Short selling books no longer exempt from regulatory reporting (e.g. the firm is no longer a market maker in a particular security)\\n- Short sales executed in violation of Reg SHO Rule 201 [e.g. Short sales executed at an impermissible price while the Price Test Restriction is in place]\\n- Short positions in EEA sovereign Credit Default Swaps (CDS) booked into market making books that are not legitimate market making activity\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190401',\n name: 'Exchange or market rule breach'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '45F0CB64-D666-4FCB-88AB-F67EBA7999D0',\n code: '1846',\n name: 'Standard Settlement Instruction (SSI) Call back Review',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n\\n2. Amend inaccurate / incomplete or stale data or documentation\\n\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Call Backs for Standard Settlement Instructions (SSI)',\n identify: 'Identify one or more of the following:\\n\\n- Call backs that were not made on recorded phone lines\\n- Call backs were not fully or accurately logged [e.g., missing customer name, customer phone number, date, time, name of employee who performs the call back]\\n- Call back was unsuccessful\\n- Instances where segregation of duties have not been carried out between person or team processing the standard settlement instruction, and person or team performing the call back\\n- Appropriate record retention processes were not followed with respect to callback recordings',\n risks: [{\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '1ACC2BE6-F26E-41DE-950E-F6AE08E81697',\n code: '1756',\n name: 'Persistent Debt Plan Review',\n type: 'Detect',\n automation: null,\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Define next steps with relevant parties\\n4. Agree timeframe for completion with relevant parties\\n5. Confirm a valid justification is provided and recorded for exception(s) including ongoing monitoring of that exception\\n\\n<!-- -->\\n\\n',\n review: 'Review Persistent Debt activity report\\n\\n',\n identify: 'Identify one or more of the following issues with the activity report:\\n\\n- Erroneous data quality rules resulting in Persistent Debt accounts treated incorrectly\\n- Instances of customers going off track with their plans or falling into forbearance due to Persistent Debt Activity Report being assessed incorrectly and as a result such indications we missed.\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160602',\n name: 'Customer communication content failure (unclear, unfair, misleading)'\n }, {\n code: 'R140318',\n name: 'Customer communication delivery failure (non delivery, untimely, wrong audience)'\n }, {\n code: 'R160405',\n name: 'Customer needs assessment, advice or product suitability failure'\n }, {\n code: 'R160406',\n name: 'Failure to identify and handle customers in financial difficulty'\n }, {\n code: 'R160407',\n name: 'Failure to treat customers in pre-arrears, arrears or default fairly'\n }, {\n code: 'R160408',\n name: 'Vulnerable customer identification or treatment failure'\n }],\n riskInventories: [{\n code: 'CARDS',\n name: 'Unsecured Lending - Cards'\n }]\n}, {\n id: '4FF494A2-60E1-4DBB-8E06-F6F6D91E621C',\n code: '1117',\n name: 'New Vessel Vetting Documentation Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Halt trading or further business until all approvals are obtained\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review new vessel vetting documentation\\n\\n',\n identify: 'Identify one or more of the following:-\\n\\n\\\\-Vessels failing vetting criteria [E.g.\\u00a0vessel age, owners, vessel reputation]\\n\\n',\n risks: [{\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }]\n}, {\n id: 'EC355719-5ADC-46BE-966F-F70DD4CFF07F',\n code: '1460',\n name: 'Transaction Documentation Review (Operations)',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Investigate rationale for any late, missing or incomplete tasks\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review transaction documentation pre and post trade [including regulatory notifications and adequate contractual terms for the trading activity]',\n identify: 'Identify errors, exceptions or non-compliance with regulations [e.g. Swiss & US Contractual Stay Protocols, non-compliant ISDA agreements under Dodd-Frank, EMIR]',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '87BF9013-48F7-40FD-8457-F720E52D5191',\n code: '1541',\n name: 'Sanctions White-List Testing Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Weekly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\r\\n\\r\\n',\n review: 'Review a sample of sanctions white-list entities and the firms white-list nomination procedure',\n identify: 'Identify white-list entries that did not follow the firms white-list nomination process',\n risks: [{\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n code: '742',\n name: 'eTrading Max Message Rate Limit',\n type: 'Prevent',\n automation: 'Automated',\n frequency: 'Event-Driven',\n action: '1\\\\.\\u00a0Halt or reduce order placement / quoting and generate alert\\n\\n2\\\\. Determine circumstance of breach or deviation\\n\\n3\\\\. Resolve trade irregularity e.g. unwind, amend or exit trade\\n\\n',\n review: 'Ongoing monitoring of the eTrading message rate\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Message rates which exceed pre-defined limit thresholds over a given time period.\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R140203',\n name: 'Order management error'\n }, {\n code: 'R240201',\n name: 'Rogue algorithms (unintentional)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ETFO',\n name: 'eTrading Front Office'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'C73B7544-9693-413A-BD5A-F7D17FF16EA3',\n code: '1837',\n name: 'Disaster Recovery Plan Review and Testing',\n description: '',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Annually',\n action: '1. Investigate rationale for any late, missing or incomplete tasks\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Disaster Recovery (DR) Plan and testing results\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Disaster Recovery plans that do not cover scenarios effectively [e.g. partial loss of trading desk(s), loss of premises]\\n- Results of extended failover testing of critical and regulatory applications which are not evidenced in the relevant Disaster Recovery portals\\n- Applications that did not fail over to the firm's disaster recovery solution successfully\\n- Testing of critical and regulatory application which was not performed or was conducted without using any of the acceptable Disaster Recovery testing scenarios [e.g. Extended failover, Full Loss Scenario, Individual Application Test]\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R130101',\n name: 'Business continuity management failure'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '8B032C8D-2FE6-4D87-A0A1-F7D71D50B801',\n code: '1200',\n name: 'New Product Restrictions',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n2. Define next steps with relevant parties\\n3. Ensure relevant individuals are aware of restrictions on their role and responsibilities until requirements are completed\\n\\n<!-- -->\\n\\n',\n review: 'Review adherence to any trade restrictions, limitations or other conditions imposed whilst attaining new product approval\\n\\n',\n identify: 'Identify conditions or restrictions raised as part of the Limited Trade Approval (LTA) and/ or Pre Trade Approval (PTA) which have not been adhered to\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '6DF5EB6C-3FC5-4CDE-8DC2-F81B40DC68FE',\n code: '980',\n name: 'Clear Desk Review ',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Weekly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review adherence to the Clear Desk Policy [e.g. through random floor-walks or video monitoring]',\n identify: 'Identify non-adherence to Clear Desk Policy [e.g. file cabinets not locked, documentation left visible on desks]',\n risks: [{\n code: 'R210501',\n name: 'Failure to handle proprietary data appropriately'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }, {\n code: 'R160102',\n name: \"Insider trading (on firm's account)\"\n }, {\n code: 'R160101',\n name: 'Insider trading (personal account or personal gain)'\n }, {\n code: 'R110101',\n name: 'Internal fraud, embezzlement or extortion against firm, client or third party'\n }, {\n code: 'R160304',\n name: 'Unlawful disclosure of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: '93B144DA-5F9D-4AD4-BFDF-F84A9E46C388',\n code: '1396',\n name: 'Trade Booking Accuracy and Completeness Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all trade/transaction capture and booking activity reconciliations\\n\\n',\n identify: 'Identify completeness, accuracy and timeliness issues with transaction capture and booking [e.g. blotter vs trade store recs, unmatched trade reports, trade activity vs P&L reports, bulk upload failures, middleware such as Markitwire vs Internal system recs, outstanding trades, rogue trades, inappropriate trades etc.]\\n\\n',\n risks: [{\n code: 'R140204',\n name: 'Execution error'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '55E71540-8357-4D55-93C7-F86B71D92711',\n code: '1208',\n name: 'Third-Party Service Performance Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Third-Party [e.g. vendors, suppliers, service providers] performance versus the service level agreement (SLA)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Third Party Supplier/ Outsourced Service Provider Key Risk Indicators (KRI) or Key Performance Indicators (KRI) metrics that are missing or not supplied within agreed timeframe [e.g. monthly, within X days of month end]\\n\\n\\\\- Third Party Supplier/ Outsourced Service Provider KRI or KPI qualitative or quantitative performance metrics not meeting or breaching thresholds or tolerance levels described in the Service Level Agreement (SLA) or contract\\n\\n\\\\- Breaches of performance thresholds or service levels <s>that have</s>\\n\\nnot <s>been</s>\\n\\ninvestigated and reported to the relevant stakeholders [e.g. third party stakeholder, internal stakeholders, governance committees]\\n\\n\\\\- Events or issues indicative of a deterioration in Operational Resilience [e.g. Important Business Service degradation, fourth party performance degradation, BCP test failure]\\n\\n\\\\- Third Party Supplier/ Outsourced Service Provider breaches of local regulatory or legal requirements\\n\\n\\\\- Action plans not created for performance breaches requiring corrective actions\\n\\n\\\\- Inadequate progress on corrective action plans\\n\\n',\n risks: [{\n code: 'R170201',\n name: 'Contractual rights or obligation failures'\n }, {\n code: 'R140204',\n name: 'Execution error'\n }, {\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }, {\n code: 'R140201',\n name: 'Pricing or valuation error'\n }, {\n code: 'R200101',\n name: 'Third-party or fourth-party service or performance failure'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '7C474340-50B7-4273-9F6E-F8A4E4BD05FD',\n code: '1528',\n name: 'Counterparty Exposure Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Determine circumstance of breach or deviation\\r\\n3. Inform counterparty on the other side of the trade\\r\\n4. Inform client of the circumstances of the event or issue\\r\\n5. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate',\n review: 'Review counterparty exposure reports',\n identify: 'Identify margin or exposure calculations that have changed and require additional margin to be called for',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: 'DE14E8D2-7C65-436E-91F3-F8DD41B137AA',\n code: '1664',\n name: 'Marketing Material Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Define next steps with relevant parties\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review Marketing Material\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Marketing materials, advertising materials or website content that do not comply with internal standards, policies or procedures\\n\\n\\\\- Marketing materials, advertising materials or website content that is not compliant with regulatory requirements [e.g. unclear, unfair, not transparent, not understandable, unsuitable for target market audience or contains misleading information]\\n\\n\\\\- Marketing materials, advertising materials or website content with missing or incorrect regulatory disclaimers\\n\\n',\n risks: [{\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '607B5576-F119-4BED-84E2-F8F5EE5393A2',\n code: '1831',\n name: 'System Access Request Review (Technology)',\n description: '',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review employee requests for system access/permissions\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- System access requests not appropriately authorised\\n- System access requests not required for the role and function of the requestor [Internal or external third-party requests]\\n- System access and or permission/entitlement combination requests which could allow unauthorised or improper activities [e.g. circumvention of segregation of duties control design, inappropriate access to sensitive information etc]\\n- High value system access requests granted without an independent review of the request\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R210601',\n name: 'Inappropriate access to accounts, data or systems'\n }, {\n code: 'R160303',\n name: 'Inappropriate use of material non public information (MNPI)'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '5AE6C487-46B3-4712-B52A-FA58123B835A',\n code: '1717',\n name: 'Research Coverage Initiation Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed initiation of research coverage\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Research coverage requests which would lead to conflicts of interest and should not be approved\\n- Research coverage not compliant with regulatory requirements\\n- Research coverage requests lacking commercial justification\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }]\n}, {\n id: 'BA9BD076-2EBE-47B0-822F-FA59172AD0FD',\n code: '415',\n name: 'Benchmarks Governance & Oversight Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\n2. Complete and / or request completion of outstanding tasks or approvals\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key issues and benchmark metrics presented to the meeting body [e.g. Benchmark inventory review, new & expired benchmark approval, conflicts of interest, third party oversight, policies & procedures, breaches etc]\\n\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '6BE03E06-BF09-40F3-A1B9-FAD35F89F591',\n code: '894',\n name: 'New Supervisor Training Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review adherence to new Front Office supervisor training requirements [including adequate communication to the supervisor of the new responsibilities and the supervisory framework]\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- New supervisors not completing mandatory supervisory training [e.g. Training set out in the firm\\'s <span style=\"color: rgb(44, 44, 45);\">FINRA Rule 3120 (Supervisory Control System) for the role, Dodd-Frank/Volcker supervisory training]</span>\\n\\n- New supervisors not passing mandatory supervisory training assessments\\n- Late completion of mandatory supervisory training\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R090202',\n name: 'Failure to manage or retain staff (including key staff) appropriately'\n }, {\n code: 'R160301',\n name: \"Non-compliance with firm's code of conduct\"\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: 'A5B196AA-9574-4344-B685-FAD44C8CA1F2',\n code: '1016',\n name: 'Margin Report Review',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform counterparty on the other side of the trade\\n3. Define next steps with relevant parties\\n4. Agree time-frame for completion with relevant parties\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review margin report calculation and distribution time\\n\\n',\n identify: 'Identify any delays to the calculation process resulting in a failure to distribute margin calculations to clients by the agreed cut-off time [delays expose the Bank to reputational and legal risk, as many Prime Brokerage clients require the margin calculation to perform their own internal Treasury operations, with delays potentially causing financial losses on the client side.]\\n\\n',\n risks: [{\n code: 'R140202',\n name: 'Collateral management failure'\n }],\n riskInventories: [{\n code: 'CAFOPRIME',\n name: 'Front Office Prime Services'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '3929E054-11E3-4332-8277-FB2039240D83',\n code: '1776',\n name: 'Pre-Trade Personal Account Dealing Request Review',\n type: 'Prevent',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all Pre-Trade Personal Account Dealing requests\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n- Pre-trade requests where trading could be in relation to material non public information or front running client trades\\n- Pre-trade requests for holdings not meeting minimum holding period\\n- Pre-trade requests for a security or security type on firm's restricted list\\n\\n<!-- -->\\n\\n\",\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '69182511-53D0-4EA4-9591-FB4DFB91494C',\n code: '1659',\n name: 'Compliance Governance Review ',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Define next steps with relevant parties\\n2. Confirm exception(s) have a valid and recorded justification and are monitored as required\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key issues and metrics on compliance/financial crime including anti-money laundering, sanctions, anti bribery and corruption[e.g. annual financial crime risk assessment review, development of training procedures, maintenance of user access rights to systems, unsolicited gifts etc]\\n\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference\\n\\n',\n risks: [{\n code: 'R180301',\n name: 'Breach of anti-bribery or anti-corruption laws & regulations'\n }, {\n code: 'R180101',\n name: 'Breach of anti-money laundering (AML) or counter terrorist financing (CTF) regulations'\n }, {\n code: 'R180201',\n name: 'Breach of financial sanctions or embargo orders'\n }],\n riskInventories: [{\n code: 'Compliance',\n name: 'Compliance'\n }]\n}, {\n id: '6E2E9FF1-94A6-4100-B0B1-FB89057A5D11',\n code: '682',\n name: 'Research Analyst Proposed Public Appearance Request Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Investigate rationale for any late, missing or incomplete tasks\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Complete and / or request completion of outstanding tasks or approvals\\n5. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review proposed public appearance or media engagement request\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\\\- Inadequate or missing supporting information supplied to support the appearance request\\n\\n\\\\- Missing approval from appropriate teams and or individuals [e.g. Compliance, Control Room, Media Relations, Press Office, Head of Research]\\n\\n\\\\- Appearance request not made through public appearance tracking system\\n\\n',\n risks: [{\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160601',\n name: 'Offer documents, prospectus or other marketing materials not suitable or incorrect'\n }],\n riskInventories: [{\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFORES',\n name: 'Front Office Research'\n }]\n}, {\n id: '092E8536-3612-4168-BA2D-FB93C5CC25F7',\n code: '1355',\n name: 'Best Execution (AM)',\n type: 'Detect',\n automation: 'Insufficient Network Data',\n frequency: 'Monthly',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Define next steps with relevant parties \\r\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate \\r\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review trade execution and trade cost data',\n identify: 'Identify deviations from best execution requirements [Traders are expected to consider execution factors e.g. Price of execution and depth of quote, size, costs associated, speed of execution etc.]',\n risks: [{\n code: 'R160302',\n name: 'Best execution failure'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }, {\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '579D43B1-3900-4AC0-B417-FBA68F5E73A0',\n code: '977',\n name: 'Restrictive Clause Review ',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\r\\n2. Amend inaccurate / incomplete or stale data or documentation\\r\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review Mandate and/or Engagement Letter [The FCA have placed an outright ban on the use of restrictive contractual clauses used by Firms which restrict a clients choice of future providers of primary market services]',\n identify: 'Identify where deviations from pre-approved templates have not been signed off by compliance and legal ',\n risks: [{\n code: 'R170101',\n name: 'Legal documentation deficiencies'\n }],\n riskInventories: [{\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }]\n}, {\n id: 'B50A3FE3-5A9E-400B-A37B-FBE1952E7589',\n code: '1494',\n name: 'Cancelled and Amended Trades Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of suspicious and / or irregular activity\\n2. Resolve trade irregularity e.g. unwind, amend or exit trade\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review cancelled and amended trades processed in trade booking systems\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n- Cancelled and/or amended trades resulting in incorrect client payments [e.g. duplicate payments, inaccurate payments]\\n- Manually processed cancels/amends that did not go through a 4-eye review\\n- Cancelled and/or amended trades made to late trades in settlement systems\\n- Amended trades without a corresponding termsheet\\n- Adjustments to cancels/amends which have not been validated\\n- Cancelled and/or amended trades that have not been communicated to the issuer\\n- Trades amended after the trade date or terminated early that have not been validated or have not received the authorised supervisory approvals\\n- Lack of justification/rationale around trades amended after the trade date or\\u00a0terminated early\\n- Trades that were not cancelled/amended correctly resulting in a P&L impact breaching the agreed impact threshold [e.g. P&L impact > xUSD]\\n\\n<!-- -->\\n\\n',\n risks: [{\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '03647ED8-0B1D-46D2-A6D2-FC214F4B8C83',\n code: '1166',\n name: 'Cash Management Execution Monitoring',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review cash balance in appropriate accounts at the end of each day and deposits with the central or reserve bank [cash balances would be reviewed at numerous levels: entitys central bank, group, and counterparty cash accounts and nostros]\\n\\n',\n identify: 'Identify late or unexpected material cash movements or systems issues which may result in funding obligations not being met [e.g. not maintaining the target balance in each account at end of day and the correct deposits with central or reserve bank]\\n\\n',\n risks: [{\n code: 'R140304',\n name: 'Failure to meet funding obligations'\n }],\n riskInventories: [{\n code: 'ACSFOTRS',\n name: 'Front Office Treasury'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: 'BBAA0400-97D9-482F-991C-FC68DCB83336',\n code: '1243',\n name: 'Operations Transaction Reporting Review',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Daily',\n action: '1. Amend inaccurate / incomplete or stale data or documentation\\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review the report pre submission for the inclusion and population of relevant fields [e.g. unique algo identifier, Venue, ISIN]',\n identify: 'Identify where are key fields are not included or populated [e.g. unique algo identifier, Venue, ISIN]',\n risks: [{\n code: 'R190404',\n name: 'Transaction or exposure reporting failure'\n }],\n riskInventories: [{\n code: 'AMTE',\n name: 'Asset Management - Trade Execution'\n }]\n}, {\n id: '77821A03-6F01-4DC3-B821-FC79A53CBC25',\n code: '865',\n name: 'Governance Meetings Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Monthly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals\\n2. Agree timeframe for completion with relevant parties\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review key issues and metrics presented to the meeting body [e.g. Best execution exceptions, conflicts of interest failures, conduct metrics, control landscape, risk events, limit breaches, regulatory changes, new business, supervisory changes etc.] from or by the various front to back functions.\\n\\n',\n identify: 'Identify issues that have not been appropriately addressed and reviewed in a timely manner and/ or without appropriate representation and/ or not in-line with the terms of reference\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }, {\n code: 'R160801',\n name: 'Breach of market abuse regulations'\n }, {\n code: 'R160305',\n name: 'Conflict of interest management failure'\n }, {\n code: 'R160502',\n name: 'Customer complaints resolution failure'\n }, {\n code: 'R200103',\n name: 'Intra-group service or performance failure'\n }, {\n code: 'R160806',\n name: 'Market manipulation'\n }, {\n code: 'R160701',\n name: 'Product failure (inc. actual versus claimed performance and outcome for customer)'\n }, {\n code: 'R190101',\n name: 'Regulatory change failure'\n }, {\n code: 'R190403',\n name: 'Regulatory reporting failure (exc. transactions or exposures)'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'CACFS',\n name: 'Corporate Finance Shared'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOSHD',\n name: 'Front Office Shared'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}, {\n id: '38D43DF0-06B4-4EBC-9780-FCADEFDBCD7F',\n code: '1642',\n name: 'IT Asset Vulnerability Scanning Results Review ',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of IT alert or failure\\n2. Define next steps with relevant parties\\n3. Complete and / or request completion of outstanding tasks or approvals\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review IT asset vulnerability scanning results [e.g. internet facing application penetration testing, perimeter/firewall/endpoint penetration testing, critical patch levels, IP configuration, unprotected endpoints]\\n\\n',\n identify: 'Identify unresolved or unremediated vulnerabilities [e.g. endpoints, internet facing applications, perimeter/firewall/endpoint or operating systems unprotected from malware or intrusion, critical security patches not yet applied, unprotected IP addresses or ports]\\n\\n',\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }],\n riskInventories: [{\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '1673AFA0-4979-4F16-9E40-FE9486A33E31',\n code: '1043',\n name: 'Trade Compression Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Quarterly',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Resolve trade irregularity e.g. unwind, amend or exit trade\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review trade compression (including e.g. risk impacts and source documents)\\n\\n',\n identify: 'Identify one or more of the following:\\n\\n\\n\\n\\\\-Impacted trades for compression that have not been reconciled against appropriate source documents for both input and output files [i.e. post compression transaction matches the expected outcome]\\n\\n\\\\-Targets for trade compressions that have not been agreed between business and relevant stakeholders [including vendors where applicable]\\n\\n\\\\- Risk impact for trade compressions that has not been reviewed and signed off by management\\n\\n\\\\- Trade compressions that have not been carried out within defined books and within an agreed time frame\\n\\n',\n risks: [{\n code: 'R140303',\n name: 'Reference data capture or maintenance error'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'ACSFOCOM',\n name: 'Front Office Commodities'\n }, {\n code: 'ACSFOEQD',\n name: 'Front Office Equity Derivatives'\n }, {\n code: 'ACSFOFI',\n name: 'Front Office FI Credit'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }]\n}, {\n id: '36E4F0A2-3F4A-43D5-AF81-FEDA05E2A86A',\n code: '1603',\n name: 'New Broker Approval (AM)',\n type: 'Prevent',\n automation: 'Insufficient Network Data',\n frequency: 'Quarterly',\n action: '1. Complete and / or request completion of outstanding tasks or approvals \\r\\n2. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary',\n review: 'Review new broker/ venue proposal and associated approvals [e.g. all due diligence is completed]\\r\\n\\r\\n\\r\\n\\r\\n',\n identify: 'Identify missing broker approvals / rejections / proposed amendments ',\n risks: [{\n code: 'R200102',\n name: 'Third-party documentation deficiencies'\n }],\n riskInventories: [{\n code: 'AM Trading - Demo',\n name: 'AM Trading - Demo'\n }]\n}, {\n id: 'FD9A9885-3B1E-4556-B099-FEF25A2D33BB',\n code: '1511',\n name: 'Position Breaks Reconciliation',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Amend inaccurate / incomplete or stale data or documentation\\n3. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review internal bookings versus street side bookings [e.g. exchange, brokers etc]\\n\\n',\n identify: 'Identify position breaks that require investigation\\n\\n',\n risks: [{\n code: 'R160312',\n name: 'Concealed trading or trade booking'\n }, {\n code: 'R160308',\n name: 'Unauthorised trading'\n }],\n riskInventories: [{\n code: 'Operations',\n name: 'Operations'\n }]\n}, {\n id: '032540E5-2919-428B-85C9-FEF42BE07118',\n code: '862',\n name: 'Pre-Release Testing Review',\n type: 'Prevent',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Determine circumstance of breach or deviation\\n2. Define next steps with relevant parties\\n3. Halt trading or further business until all approvals are obtained\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review system and application changes before being implemented into production\\n\\n',\n identify: \"Identify one or more of the following:\\n\\n\\\\- Changes proposed for release into production without testing, verification of test results [e.g.\\u00a0changes to internal, external and third-party developed applications], justifications or required approvals\\n\\n\\\\- Testing of changes to applications not conducted in an environment separate from the production environment\\n\\n\\\\- Pre-release testing results that have not been assessed in conjunction with the relevant business's residual risks\\n\\n\",\n risks: [{\n code: 'R210301',\n name: 'Cyber security breach'\n }, {\n code: 'R150301',\n name: 'Network failure'\n }, {\n code: 'R150201',\n name: 'Software failure'\n }],\n riskInventories: [{\n code: 'ETIT',\n name: 'eTrading IT'\n }, {\n code: 'Technology',\n name: 'Technology'\n }]\n}, {\n id: '898099C9-D208-47B8-AF40-FEF8064BC069',\n code: '1382',\n name: 'Daily P&L and Attribution Review',\n type: 'Detect',\n automation: 'Semi-Automated',\n frequency: 'Daily',\n action: '1. Determine circumstance of breach or deviation\\n2. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review all components of daily P&L reported by the Front Office [e.g. market moves (delta, gamma, vega etc.) , new trade P&L, carry, reserve movements, interest income and expense, fees and commissions, price testing adjustments, VAR etc.]\\n\\n',\n identify: 'Identify P&L in breach of minimum standards [e.g. not in line with GAAP, unexplained beyond defined thresholds, flash V formal P&L differences, missing commentaries, unsigned off reports etc.]\\n\\n',\n risks: [{\n code: 'R140313',\n name: 'P&L error'\n }],\n riskInventories: [{\n code: 'ProductControl',\n name: 'Product Control'\n }]\n}, {\n id: '4797B03C-287F-4A88-A85E-FF2193CA98F2',\n code: '412',\n name: 'Benchmark Supervision Review',\n type: 'Detect',\n automation: 'Manual',\n frequency: 'Event-Driven',\n action: '1. Inform supervisor(s) and / or relevant governance function(s) and, or body as appropriate\\n2. Agree timeframe for completion with relevant parties\\n3. Amend inaccurate / incomplete or stale data or documentation\\n4. Provide sign-off that review has been performed, logs / documentation / systems are updated and issue is resolved with evidence as necessary\\n\\n<!-- -->\\n\\n',\n review: 'Review supervision arrangements for each benchmark\\n\\n',\n identify: 'Identify benchmarks without an assigned supervisor and / or inadequate arrangements [e.g. contribution trader & supervisor are not the same individual, managing conflicts of interest, ensuring appropriate training received]\\n\\n',\n risks: [{\n code: 'R160811',\n name: 'Benchmark manipulation'\n }],\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Equities',\n name: 'Equities'\n }, {\n code: 'CAFOBMK',\n name: 'Front Office Benchmarks & Indices'\n }, {\n code: 'FX',\n name: 'FX'\n }, {\n code: 'Prime Services',\n name: 'Prime Services'\n }, {\n code: 'Rates',\n name: 'Rates'\n }]\n}];\nvar ACCOUNT_IDS = {\n CITI: 'CITI',\n JPM: 'JPM',\n ACCOUNT01: 'ACCOUNT01'\n};\nvar getAccounts = function () {\n return [\n // JPM account:\n {\n id: ACCOUNT_IDS.JPM,\n name: 'JPM'\n }, {\n id: ACCOUNT_IDS.ACCOUNT01,\n name: 'Account 01'\n }];\n};\nvar jpmData = [{\n riskInventories: [{\n code: 'Commodities',\n name: 'Commodities'\n }, {\n code: 'Credit',\n name: 'Credit'\n }, {\n code: 'Other ??',\n name: 'Other ??'\n }],\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-8F1740',\n id: 'JPM-CTRL-8F1740',\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. |\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month ..',\n risks: [{\n riskName: 'Inappropriate E-tradbing Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7070713043',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7070713043,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7063038349,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6720363498,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6712614894,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6654226184,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6630696654,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6555969119,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6502174735,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6477268338,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6435744166,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '269.1 Market_Dislocation',\n code: 'JPM-CTRL-B924BC',\n id: 'JPM-CTRL-B924BC',\n description: '269.1 Market Dislocation | Objective: To prevent the risk of streaming inaccurate bids / offers to clients in a market dislocation event by disabling pricing where observed changes in market prices materially differ from implied or expected price levels | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of market dislocations [e.g. gapped markets, rapid moves, or reversals]. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1797',\n topMatchCertainty: '0.6886364818',\n clusterId: 'review of controls for intraday market dislocations',\n items: [{\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6886364818,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6884281039,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '880',\n cfrequency: 'Daily',\n cid: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6517345309,\n name: 'Market Data Jump Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6455348134,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.644990623,\n name: 'Stale Market Data Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6393360496,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6386842728,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6360624433,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6346969008,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6344159842,\n name: 'Market Making Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '003.1 Procedure Management',\n code: 'JPM-CTRL-94874E',\n id: 'JPM-CTRL-94874E',\n description: \"003.1 Policy & Procedure Management |\\nObjective: To establish a program that oversees the creation and maintenance of procedures in accordance with the CIB and the ODG's requirements for any procedures written to support a control for an operational risk and/or to satisfy a Legal Obligation. |\\nDescription: Review:' Procedure Owners have to periodically review the procedures they own at least annually or off-cycle when required (e.g., when Change Management occurs).\\nIdentify: 'Procedure Owners must identify if the content of the procedure requires update, especially where control design mentioned in the procedures do not match the control in CORE and if those updates require stakeholder syndication and / or approval or should be retired.\\nAction: 'Document Owner (or their delegates) must update the content of the procedure (making sure that the Control related language accurately reflects the design of the control (e.g., the steps to execute the control in the LOB/Function are aligned with how the control was initially designed) obtain stakeholder review / feedback and approval as required and verify that the procedures have been published, communicated and retained in CORPORA (the CIB's procedures repository)\\nWhere a mismatch identified in control design in CORE V procedure , Document owner should initiate review of control with all control users and Markets Risk and Identification Team to ensure CORE updated.\\nSupervision: No prescribed supervisory step\\nGovernance: Each Function/LOB is required to Participate in the Policy Governance Forum (PGF) to promote consistent Firmwide standards and ensure that Document Owners promptly revier the procedures that they are responsible for and that any changes are properly syndicated and approved. |\\nSubstantiation: Sampleing Process - Pick one unique control from each RAS (so no control is duplicated) and 1 ESS (Emergency System Shutdown) procedure from each ECF\\n\\n1. Check that each LOB has a standing attendee (and delegate) and that they attend the CIB Policy Governance Forum\\n2. Confirm a procedure exists and covers each unique control in sample population\\n3. Confirm each procedure is in the CIB template format and has an identified owner\\n4. Confirm each procedure has been reviewed in prior 12 months\\n5. Where It was identified that a control design change and the CORE control did not match request evidence of control user agreement and CORE update of said control\\n6. E Trading -check ESS procedures and e-Trading activity inventory to ensure a review has been performed at the earlier of annually or upon any change in the activity inventory.\\n.\\n.\",\n risks: [{\n riskName: 'Inadequate Governance Framework',\n riskCode: 'JPM-RISK-9EFDB5'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Directive',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '711',\n topMatchCertainty: '0.6606936455',\n clusterId: '003.1 Procedure Management',\n items: [{\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6606936455,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1739',\n cfrequency: 'Annually',\n cid: 'A9E3C642-09D8-4CB6-BF9D-77B10A040AD6',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6362318993,\n name: 'Policies, Standards and Procedures Review'\n }, {\n ccode: '403',\n cfrequency: 'Event-Driven',\n cid: '8AE75185-C76F-4EDB-BAC1-6A0789F878A7',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2',\n score: 0.631771028,\n name: 'Benchmark Operating Procedures Review'\n }, {\n ccode: '1594',\n cfrequency: 'Monthly',\n cid: 'A8365CC0-DF0B-413E-AEB1-EC47DC2037FE',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6015946865,\n name: 'Policies, Standards and Procedures Review'\n }, {\n ccode: '1066',\n cfrequency: 'Event-Driven',\n cid: 'E38B0D0B-DAB1-4720-8183-E8D798380334',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2',\n score: 0.5999658704,\n name: 'eTrading Material Change Management Review'\n }, {\n ccode: '1695',\n cfrequency: 'Annually',\n cid: '5847AC53-026E-4AED-AEDE-51D98379DC5C',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.5974436402,\n name: 'Policies, Procedures and Standards Review (Front Office)'\n }, {\n ccode: '1222',\n cfrequency: 'Event-Driven',\n cid: 'E65975D2-2A70-448A-A33B-DDAE4E27556A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2',\n score: 0.572268188,\n name: 'Operational Risk Pre Go-live Review'\n }, {\n ccode: '701',\n cfrequency: 'Event-Driven',\n cid: '714EF36B-39F6-43FE-ABE6-49C0F8B2C163',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2',\n score: 0.5660316348,\n name: 'eTrading Pre-Deployment Assessment & Approval Review'\n }, {\n ccode: '979',\n cfrequency: 'Annually',\n cid: '72A856E9-CE09-40D9-8320-E4F28D72F165',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.55117625,\n name: 'Corporate Finance Transaction Documentation Review'\n }, {\n ccode: '1499',\n cfrequency: 'Real time',\n cid: '0866F600-8038-437E-B946-9F47AD7A2300',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5475125909,\n name: 'KYC Procedure and Training Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-4F8C8F',\n id: 'JPM-CTRL-4F8C8F',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Description (Control Execution Steps):\\n/ Review: Technology will review and invoke Emergency Shutdown activities to shut down a specific application or applications in order to stop unintended trading action. Emergency shutdown can include but not limited to: a) ineffective control environment design, a control failing to operate as intended, and failure to receive reconciliations from exchanges. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify: Technology will identify and terminate processes (cease trading) in the event of a software glitch, instability, erroneous trading, or other unforeseen circumstances. Emergency shutdown may include a combination of manual or technological processes. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nAction: Emergency shutdown may include a combination of manual or technological processes. Technology will work to invoke (Shutdown) and reenable (Recovery) of the relevant components when appropriate with the proper approvals (by authorized personnel). Approval to invoke Emergency Shutdown can be verbal with written approval obtained by end of the trading day. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nSupervise: Technology will contact the supervisors who would agree on the kill switch / emergency shutdown.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nGovern: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n| Objective: To prevent the risk of failing to execute transactions in line with client or firm intention / instructions as a result of miscommunication or trade input error (fat finger) and may include incorrect direction of order (buy vs sell). quantity of execution, execution price, selection of asset or security; by performing the appropriate process monitoring and oversight.\\n| Pre Trade\\nTransactional (ad-hoc)\\n| Control Sub- stantiation: 1\\tObtain list of non etrading activities (performed by Production Management and JPM ETI Network operations)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tSelect sample of activities\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tTest Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.7534196377',\n clusterId: 'technology to invoke emergency shutdown',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7534196377,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6182829738,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.5982068181,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.5834587216,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.582968235,\n name: 'End of Day Trade Review'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5672148466,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5652647018,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5648711324,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1414',\n cfrequency: 'Daily',\n cid: 'A6876B11-16E2-4E52-99DC-429B2CEC1CA0',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5622743964,\n name: 'Upcoming Derivatives Expiries Review'\n }, {\n ccode: '1367',\n cfrequency: 'Daily',\n cid: 'D9B43802-EEB1-43E4-86CA-8E52D48583A2',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5605637431,\n name: 'End of Day Trade Review (AM)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-C73565',\n id: 'JPM-CTRL-C73565',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nSubstantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.6938667297',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6938667297,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6932848096,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6693239808,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6654525399,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6627575755,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6602643132,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6587273479,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.64427948,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6388537288,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6357663274,\n name: 'Stale Market Data Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-21CB26',\n id: 'JPM-CTRL-21CB26',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7038550377',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7038550377,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6718111634,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6682972908,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6628668904,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6593797803,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6581751108,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6491162777,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6458505988,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '131',\n cfrequency: 'Quarterly',\n cid: '0CF8A3EA-531A-4572-9F1E-C882B7904B9C',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6449477077,\n name: 'Trading Book Access Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6445652843,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-BDCB4C',\n id: 'JPM-CTRL-BDCB4C',\n description: '267.1 E-Trading Order Capture Limits | Objective: To prevent the risks of E-Trading Activities distorting order books by:\\n\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. | Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7131481171',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7131481171,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7109025121,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6844792962,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6780543327,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6711819768,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6646549106,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6606932282,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6602925658,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6554979682,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6454191208,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-5D9AF8',\n id: 'JPM-CTRL-5D9AF8',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependencies\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilization (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilization is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7069196701',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7069196701,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6894081235,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6691767573,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6656678319,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6617535353,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6608507037,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6582613587,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6432796121,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6409063339,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6396184564,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-A0527A',\n id: 'JPM-CTRL-A0527A',\n description: '276.1 Executed Risk - Exposure Limit |\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk\\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.6895472407',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6895472407,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6887555122,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6846558452,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6810905933,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6742296219,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.656517446,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6543802619,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6536538005,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6509041786,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6490744948,\n name: 'eTrading Alert Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-A4B204',\n id: 'JPM-CTRL-A4B204',\n description: 'N/A\\n245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\nN/A\\nN/A\\nN/A\\nSubstantiation Process (Tests): 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1825',\n topMatchCertainty: '0.7005001903',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7005001903,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6937658191,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6742563844,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6715400815,\n name: 'Market Making Monitoring'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6672903895,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6660404205,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6626655459,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6619030833,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6594445109,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6555425525,\n name: 'Market Making Spread Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-4AFB37',\n id: 'JPM-CTRL-4AFB37',\n description: '276.1 Executed Risk - Exposure Limit |\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk\\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.6901592612',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6901592612,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6887406707,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6872096062,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6823923588,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6756631732,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6560769081,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6547663212,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6544225216,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6516478062,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6515290141,\n name: 'eTrading Alert Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '070.1 E-Trading Client On-Boarding',\n code: 'JPM-CTRL-39CFAC',\n id: 'JPM-CTRL-39CFAC',\n description: '070.1 E-Trading Client On-Boarding | Business Control Management\\n| Objective: To detect client enablement errors that may result in execution errors by capturing, implementing and documenting client execution preferences\\n| Description: \\n/ Review: Client execution preferences are documented in e-Trading Client Agreements (EMEA E Trading Annex to the Terms of Business / NA & APAC fully executed Electronic Access and Trading agreement).The ECS desk will review client executions against those client preferences performing variance analysis for where actual execution quality varied from the clients stated preferences.\\n/Identify: Identify exceptions where client preferences are not comply\\n/Action: The desk will investigate and take remedial action correcting the exception / preferencee setup. The ECS Desks will capture client preferences throughout the on-boarding process and amendments. \\n/Supervise: NA\\n/Govern: NA\\nPost Trade\\nDaily\\n|Substantiation: 1\\tObtain and review samples of client setup/amendment reports\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tObtain and review samples of exceptions relating to client executions vs preferences',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-F7949F'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1037',\n topMatchCertainty: '0.6452926993',\n clusterId: 'detection of client enablement errors in e - trading client on - boarding',\n items: [{\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6452926993,\n name: 'Client Activity Review'\n }, {\n ccode: '1225',\n cfrequency: 'Event-Driven',\n cid: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6440793872,\n name: 'eTrading Client Onboarding Review'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.633055985,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1687',\n cfrequency: 'Event-Driven',\n cid: '1BDC1985-BCF3-4B73-9772-E009E5445FE2',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6047616005,\n name: 'Client Trade Error Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6007036567,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5978905559,\n name: 'Client System Access Review'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5977649093,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '1706',\n cfrequency: 'Event-Driven',\n cid: 'CBBE7EF1-C03D-450D-A0FF-7E12A57A53EE',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5873589516,\n name: 'Client Order Capture Completeness Review'\n }, {\n ccode: '1204',\n cfrequency: 'Quarterly',\n cid: 'D3A74C2B-5B94-440B-A17A-091E9FF0F925',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5858474374,\n name: 'Know Your Customer (KYC) Ongoing (trading activity) Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5839104056,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '241.1 E-Trading Client Pricing Differentiation',\n code: 'JPM-CTRL-B9CC03',\n id: 'JPM-CTRL-B9CC03',\n description: \"241.1 E-Trading Client Pricing Differentiation | Business Control Management\\n| Description (Control Execution Steps) :\\n/Review: The E-Commerce Best Execution Committee reviews on a bi-monthly basis electronic trading desk's aggregated metrics containing:\\na. The number of liquidity charge amendments applied to clients at the highest and most relevant point of client aggregation (e.g. UCN, SPN, Account Group, CASSII, etc.) with individual client names or identifiers masked\\nb. The impact of differentiation changes (e.g. trade volumes, hit ratios, or yield data (P&L / volume)).\\n/Identify: The E-Commerce Best Execution Committee is required to identify any unexpected thematic changes or results where a newly applied tier is inappropriate or inaccurate\\n/Action: The E-Commerce Best Execution Committee is required to identify and track via the Committee any corrective actions from the review of CPD metrics\\n/Supervise: CIB Markets trading businesses are required to identify all activities for which CPD Guidelines are applicable and confirm that aggregated metrics are included in the E-Commerce Best Execution Committee.\\n/Govern: Updates to the CPD Guidelines must be reported into the Digital Markets & E-Commerce BCC\\n| Objective: To detect and address inappropriately differentiated liquidity charges for electronic trading activities that auto-price and auto-accept client transactions and the possible resulting reputational impact.\\nPost Trade\\nMonthly\\n| Substantiation: 1 Select 3 BEC decks and ensure that E Trading Client differentiation metrics are included\\n2 Check if there any corrective actions noted and that appropriate follow up has taken place\",\n risks: [{\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }, {\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }, {\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-D61397'\n }, {\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }, {\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1782',\n topMatchCertainty: '0.6900365949',\n clusterId: 'e - commerce best execution committee reviews',\n items: [{\n ccode: '1782',\n cfrequency: 'Monthly',\n cid: '2F88E29E-D473-4937-9BAF-573DE24B7E74',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.6900365949,\n name: 'Best Execution - Governance Forum Review'\n }, {\n ccode: '1779',\n cfrequency: 'Annually',\n cid: '18162F27-8CCC-4926-A0AC-A34BBECA3281',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6289047003,\n name: 'Best Execution - Scoping and Obligations Review '\n }, {\n ccode: '1780',\n cfrequency: 'Daily',\n cid: 'BD569B4E-96D1-47D3-A0B9-7035FCA6B0E3',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6154552698,\n name: 'Best Execution - Exception Review'\n }, {\n ccode: '884',\n cfrequency: 'Event-Driven',\n cid: '1080D672-9877-4551-975E-1A3E144D6069',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6111519933,\n name: 'Client Tiering Review'\n }, {\n ccode: '1778',\n cfrequency: 'Quarterly',\n cid: 'F4EF7686-7915-4704-B03C-7B53743375C0',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6101564765,\n name: 'Best Execution - Regulatory Reporting Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6058413386,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1355',\n cfrequency: 'Monthly',\n cid: '092E8536-3612-4168-BA2D-FB93C5CC25F7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.6050508022,\n name: 'Best Execution (AM)'\n }, {\n ccode: '1083',\n cfrequency: 'Daily',\n cid: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2',\n score: 0.5877477527,\n name: 'Commodity Exchange Metrics Review'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5836822987,\n name: 'Client Activity Review'\n }, {\n ccode: '1026',\n cfrequency: 'Daily',\n cid: '93E885A7-2720-4245-AD47-143B7CBF6B1A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5803931355,\n name: 'Pricing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '193.1 DEA Oversight',\n code: 'JPM-CTRL-A0E2FE',\n id: 'JPM-CTRL-A0E2FE',\n description: \"193.1 DEA Oversight | Objective: To prevent the risk of:\\n1. Client trading errors by ensuring that non-contractual documentation describing how E-Trading Activities operate is provided on a timely basis to clients and the content is clear and accurate\\n2. Providing direct electronic access to clients who lack sufficient numbers of staff with the necessary skills by ensuring appropriate due diligence of new and existing clients takes place\\n| Process: • Ensure that a due diligence assessment of prospective DEA clients is conducted to ensure that they meet the requirements set out in relevant regulation and relevant trading venue rules.\\n• Ensure that a periodic review of our DEA assessment process itself is performed and that a review of DEA clients is performed (using the DDQ). EMEA only: Due Diligence Questionnaire is completed for DEA (Direct Electronic Access) clients.\\n| Substantiation: 1. Verify that the annual review processes have been completed\\n2. Verify with BCM that a review of the annual review process itself has been performed and relevant changes implemented / planned\\n3. For a sample of DEA clients, obtain and review samples of Due Diligence Questionnaire; verify completeness and ensure that a completed DDQ has been returned by the client and that any noted concerns have been discussed with the client and remedial actions taken / planned\\n4. Review online approved activity details and confirm a process has been executed to identify risks inherent within that activity and confirm risk engagement in that activity and in defining controls\\n5. Review online 'Activity Controls' documentation for selected activities via the toolkit and confirm Front Office approval in establishing control value\\n6. For the listed controls, review the 'Control Category' field for the applicable values\\n7. Confirm that a process has been executed within the last 12 months to review control value settings\\nNA\\nNA\\nNA\",\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CE04BB'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CE04BB'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '774',\n topMatchCertainty: '0.7734670639',\n clusterId: 'ensuring compliance with non - contractual e - trading activities : a review of',\n items: [{\n ccode: '774',\n cfrequency: 'Annually',\n cid: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7734670639,\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7158011794,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1459',\n cfrequency: 'Event-Driven',\n cid: '28105F78-227E-416D-B362-5EAE86E3BF0B',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6282917857,\n name: 'Client Documentation Review'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6252723336,\n name: 'Client System Access Review'\n }, {\n ccode: '1658',\n cfrequency: 'Event-Driven',\n cid: '0EE976F1-FEF4-4723-A4AE-73564C95EA43',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6251378059,\n name: 'Client Classification and Validation Review (Compliance)'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6233578324,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '1225',\n cfrequency: 'Event-Driven',\n cid: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6214857697,\n name: 'eTrading Client Onboarding Review'\n }, {\n ccode: '1410',\n cfrequency: 'Event-Driven',\n cid: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6177526116,\n name: 'KYC Due Diligence Monitoring'\n }, {\n ccode: '1412',\n cfrequency: 'Event-Driven',\n cid: '76C80398-E5E5-461D-8601-9BEB455A52D9',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6120836735,\n name: 'Client Classification and Validation Review'\n }, {\n ccode: '525',\n cfrequency: 'Event-Driven',\n cid: '61FAAB29-2CF3-477D-97E7-AAAB7CFF73CD',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6060851216,\n name: 'Client Classification Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-0FD162',\n id: 'JPM-CTRL-0FD162',\n description: '245.1 Off Market Limits\\n| Objective: To prevent the risks of E-Trading Activities sending off-market orders / receiving off-market fills by:\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '904',\n topMatchCertainty: '0.7465596199',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7465596199,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7437992096,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7384297252,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7108287215,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.7098895907,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.7017720342,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6938138008,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.691190064,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6888192296,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6884396076,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '053.1 Third Party Relationship Oversight',\n code: 'JPM-CTRL-B3DA99',\n id: 'JPM-CTRL-B3DA99',\n description: \"053.1 Third Party Relationship Oversight | Objective: Ensure that third party supplier relationships are reviewed and managed in accordance with the Firmwide 3-phase TPO Lifecycle which manages selecting, onboarding, performance, risk monitoring and disengagement of suppliers. The review includes evidence of financial technical and operational controls to ensure they are commensurate with JPMC's expectations of a sound control environment | Process: Each LOB must ensure that its third party relationships are managed via the framework outlined in the Firmwide Third Party Oversight (TPO) Program. The Third Party Management Office (TPMO) is a specialist function which must be utilized to manage a LOB’s TPO program to the requirements detailed in the Global Supplier Management Policy and Third-Party Oversight Standards.\\nThe principles outlined in TPO Standards across the three phases of Third Party Engagement include:\\ni. On-boarding Phase:\\n• Evaluation of the appropriateness of outsourcing an activity\\n• Review and approval of all Supplier Engagements\\n• Implementation of the requirements set forth in the policy and standards for new engagements\\nii. Steady State Phase\\n• Confirmation that all required stakeholders are appropriately engaged\\n• Escalation of supplier risks and issues to LOB Control Committee\\n• Execution of the requirements set forth in the policy and standards for each supplier engagement\\n• Management and monitoring of supplier risks, controls, performance, and compliance with contract terms\\niii. Disengagement Phase\\n• Terminate contract, confirm data recovery and remove physical & logical access\\n\\nGlobal Commodities Group (GCG) engages various third party vendors to assist in the inspection, storage, transport and handling of physical Commodities as part of its operations. The business’ TPO process is an Approved alternate TPO process by Firmwide TPO Team. The Commodities Physical Committee provides oversight on matters related to management of third party vendors. Physical Risk Manager is primarily responsible to review the following for the entire vendor population.\\n(i) Existence of inventory in Physical Commodities Vendor Database\\n(ii) Review vendor engagement following the Physical Commodity Vendor Management Standard\\n(iii) Review Vendor MIS and escalate any issues to Physical Risk Committee\\n | Substantiation: i. Obtain inventory of Markets & IS supplier engagements from TPO\\nii. Depending on the number of engagements involved, review 35% of engagements with the relevant DM, focusing on;\\na) Review of key performance metrics\\nb) Review of any risks or issues raised for escalation to ES ( Engagement Supplier ) , TPMO or LOB Control Committee\\nc) Confirmation that issues raised have been recorded in Force for tracking purposes\\nFor Global Commodities TPO Process\\ni. Obtain the inventory from Physical Commodities Vendor database\\nii. Depending on the number of engagements involved, review 35% of engagements:\\na) Review of Physical Vendor MIS\\nb) Review of any risks or issues raised for escalation to Physical Risk Committee\\nc) Confirmation that issues raised are addressed by appropriate actions- ie FORCE\",\n risks: [{\n riskName: 'Inadequate Outsourcing Programs',\n riskCode: 'JPM-RISK-7CD34F'\n }, {\n riskName: 'Inadequate Governance Framework',\n riskCode: 'JPM-RISK-2C0128'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1830',\n topMatchCertainty: '0.6416447759',\n clusterId: '053.1 Third Party Relationship Oversight',\n items: [{\n ccode: '1830',\n cfrequency: 'Monthly',\n cid: 'D030A399-6D71-4995-9BC8-48527D7AF6AA',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6416447759,\n name: 'Third-Party Performance Review (Technology)'\n }, {\n ccode: '1504',\n cfrequency: 'Event-Driven',\n cid: '986C1143-E8F0-4162-A4E0-A99478F6189C',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6261951327,\n name: 'Third-Party Performance Review'\n }, {\n ccode: '1762',\n cfrequency: 'Annually',\n cid: '7B1E2749-1293-4A79-9485-E8C2880343E2',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B1',\n score: 0.6182834506,\n name: 'Third-Party Service Provider Review'\n }, {\n ccode: '1705',\n cfrequency: 'Annually',\n cid: '4C84190E-DE33-4063-A9CC-17A0B5303B90',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.6068864465,\n name: 'eTrading Third-Party Provider Due Diligence Questionnaire Review'\n }, {\n ccode: '1232',\n cfrequency: 'Annually',\n cid: 'A3053F3E-5B45-4097-BC24-281F9CD70CA7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.6047728062,\n name: 'Benchmark Third-Party Service Provider Review'\n }, {\n ccode: '992',\n cfrequency: 'Event-Driven',\n cid: '5A221833-3330-4367-B6E1-E037F4213A2E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.58786726,\n name: 'Third-Party Agreement Review'\n }, {\n ccode: '1745',\n cfrequency: 'Monthly',\n cid: 'B84EDD2A-5096-4155-8E42-EF14BEB004EA',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5823004842,\n name: 'Third-Party Service Provider Monitoring'\n }, {\n ccode: '1744',\n cfrequency: 'Monthly',\n cid: '9CC344F2-8C70-4E68-9090-3DB804011439',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5713056922,\n name: 'Third-Party Payment Review'\n }, {\n ccode: '973',\n cfrequency: 'Monthly',\n cid: 'B03785D2-7E0B-4324-A9DE-791FA195CD44',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5604203343,\n name: 'Third-Party Payments & Inducements'\n }, {\n ccode: '1208',\n cfrequency: 'Event-Driven',\n cid: '55E71540-8357-4D55-93C7-F86B71D92711',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5595181584,\n name: 'Third-Party Service Performance Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-38929D',\n id: 'JPM-CTRL-38929D',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7034840584',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7034840584,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6972640157,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.674190104,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6669287682,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6666814685,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6633389592,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6598668694,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6434186697,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6411257982,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6390919685,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '240.1 DEA Client Activity Monitoring',\n code: 'JPM-CTRL-EFDB4F',\n id: 'JPM-CTRL-EFDB4F',\n description: '240.1 DEA Client Activity Monitoring | Objective: To mitigate: \\n1. Operational risk and protect Firm and Client interests as well as the wider integrity of the markets by monitoring client DEA activity for disorderly trading\\n2. The risk of Clients incorrectly parameterizing E-Trading Strategies using, inappropriate e-trading activities or having insufficient market knowledge when trading DMA / DEA for execution in a given market | Process: Control Description\\nMonitoring of DEA clients actvity and limit utilization to ensure appropriate actions can be taken in case of unexpected trading behavior\\n\\nProcess Steps\\n1. Desk supervisors have access to monitoring tools (RiskOne) that allow them to see client activities in real time, including utiliation of post-trade controls\\n2. High control utilization creates alerts within the GUI that require attention:\\n (a) Unusual activity is escalated to ECS desk for review with client\\n (b) An action associated with the alert is logged by the supervisor and archived within RiskOne \\n3. Historical utilization is reviewed on a regular basis with 2LOD for right sizing of control values\\n4. Front Office/LOB are responsible for onboarding clients and reviewing their sophistication and market knowledge in the context of products and services sought. Documentation:\\n (a) EMEA: Clients are on boarded under the E Trading Annex to the Terms of Business; DEA product offerings are restricted to clients who have filled out a Due Diligence Questionnaire\\n (b) NA / APAC: Clients are on boarded with a fully executed Electronic Access and Trading \\n6. Front Office/LOB are responsible for communicating material changes to clients\\n7. Client executions are monitored against preferences and exceptions are identifed and reviewed\\n8. Desk supervisors have access to monitoring tools (RiskOne) that allow them to see client activities in real time, including utiliation of post-trade controls\\n9. High control utilization creates alerts within the GUI that require attention:\\n (a) Unusual activity is escalated to ECS desk for review with client\\n (b) An action associated with the alert is logged by the supervisor and archived within RiskOne \\n10. Historical utilization is reviewed on a regular basis with 2LOD for right sizing of control values | Substantiation: 1. Choose an example of a DEA client\\n\\n2. Reach out to the relevant BCM and ask for evidence that:\\n (a) RiskOne alerts are received for this client\\n (b) Esclations to the ECS desk, if necessary\\n (c) Evidence of the review of limits with the 2LoD',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-E7D145'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7681412101',\n clusterId: '240.1 DEA Client Activity Monitoring',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.7681412101,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '774',\n cfrequency: 'Annually',\n cid: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2',\n score: 0.6808669567,\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6200144887,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6093147397,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2',\n score: 0.5999432206,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.599730134,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.5971425176,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5926787853,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1770',\n cfrequency: 'Real time',\n cid: '4E5F3141-85C9-48AA-A4C8-2EE1C6D29A6B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5925926566,\n name: 'Client Transaction Surveillance Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5879416466,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-A0E14A',\n id: 'JPM-CTRL-A0E14A',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7149262428',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7149262428,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6648970246,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6628265977,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6607243419,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6588727832,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6496006846,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6451060772,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6417008638,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6348087192,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6304754615,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-01DF57',\n id: 'JPM-CTRL-01DF57',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7157689929',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7157689929,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6758875251,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6690728068,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6602613926,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6551122665,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6534513831,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6532446742,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6430540681,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6387889385,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1363',\n cfrequency: 'Event-Driven',\n cid: 'FFF94339-FC9D-4E29-A9E4-F055AEA435EE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6380876899,\n name: 'Pre Trade Investment Restriction Breach Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '070.1 E-Trading Client On-Boarding',\n code: 'JPM-CTRL-847B77',\n id: 'JPM-CTRL-847B77',\n description: '070.1 E-Trading Client On-Boarding | Business Control Management\\n| Description: \\n/ Review: Client execution preferences are documented in e-Trading Client Agreements (EMEA E Trading Annex to the Terms of Business / NA & APAC fully executed Electronic Access and Trading agreement).The ECS desk will review client executions against those client preferences performing variance analysis for where actual execution quality varied from the clients stated preferences.\\n/Identify: Identify exceptions where client preferences are not comply\\n/Action: The desk will investigate and take remedial action correcting the exception / preferencee setup. The ECS Desks will capture client preferences throughout the on-boarding process and amendments. \\n/Supervise: NA\\n/Govern: NA\\n| Objective: To detect client enablement errors that may result in execution errors by capturing, implementing and documenting client execution preferences\\nPost Trade\\nDaily\\n|Substantiation: 1\\tObtain and review samples of client setup/amendment reports\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tObtain and review samples of exceptions relating to client executions vs preferences',\n risks: [{\n riskName: 'Inadequate Client Account Set-up including profiling and onboarding',\n riskCode: 'JPM-RISK-D3B22C'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1037',\n topMatchCertainty: '0.6260671616',\n clusterId: 'detection of client enablement errors in e - trading client on - boarding',\n items: [{\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6260671616,\n name: 'Client Activity Review'\n }, {\n ccode: '1225',\n cfrequency: 'Event-Driven',\n cid: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6146647334,\n name: 'eTrading Client Onboarding Review'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6017591953,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5967444777,\n name: 'Client System Access Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5850840807,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5768260956,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '1204',\n cfrequency: 'Quarterly',\n cid: 'D3A74C2B-5B94-440B-A17A-091E9FF0F925',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5757943988,\n name: 'Know Your Customer (KYC) Ongoing (trading activity) Review'\n }, {\n ccode: '1782',\n cfrequency: 'Monthly',\n cid: '2F88E29E-D473-4937-9BAF-573DE24B7E74',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5754583478,\n name: 'Best Execution - Governance Forum Review'\n }, {\n ccode: '774',\n cfrequency: 'Annually',\n cid: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5704032183,\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5689394474,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '005.1 E Trading Activity Oversight & Governance',\n code: 'JPM-CTRL-79F3B1',\n id: 'JPM-CTRL-79F3B1',\n description: '005.1 E Trading Activity Oversight & Governance |Business Control Management\\n| Description (Control Execution Steps) : \\n/Review: ECFs, comprised of required attendees across 1LOD and 2LOD stakeholdres, are required to meet at least nine times over the course of a year and review required meeting content:\\n1.Prior meeting minutes including attendance, business update, and follow ups from prior meeting(s) \\n2.Pipeline of proposed changes to E-Trading Activities\\n3.Required metrics, including Control and Technology metrics \\n4.Results of the Annual Periodic Review requirements \\n5.Governance updates (including changes to Policies, Standards and Procedures) on an ad hoc basis, as relevant\\n6. Stakeholder updates\\n/Identify: The Electronic Control Forum Members are required to identify risks specific to E-Trading or deviations from defined E Trading Governance that require escalation\\n/Action: ECF Chairs (business heads and Business Controls Managers) are required to escalate identified risks to Digital Markets and E Commerce Business Control Committee, LOB-aligned Business Control Committee(s) (BCCs) and/or Business Control Forums (BCFs) and CORE. \\n/Supervise: NA\\n/Govern: NA\\n| Objective: To implement a system of governance and escalation of failure to implement a robust governance framework and escalation process for each LoBs Electronic Trading Activities that is clearly defined, provide information for timely decision making and comply with internal governance policies by establishing LoB Electronic Trading Control Forum (\"ECF\") to review and assess new and emerging risks\\nN/A (Directive)\\nMonthly\\n| Substantiation: 1\\tFor each LOB, select one quarter and obtain the list of dates during that quarter on which their LOB ECF took place and confirm that at least two meetings took place every three months.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tSelect two ECF decks per LOB and confirm that each of the mandatory items as listed in the ECF Procedures are included in the deck and that the mandatory attendees (or delegate) are recorded as having attended. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tRequest evidence if ECF Chairs have escalated identified risks to Digital Markets and E Commerce Business Control Committee.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Directive',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1608',\n topMatchCertainty: '0.6607470512',\n clusterId: '005.1 E Trading Activity Oversight & Governance',\n items: [{\n ccode: '1608',\n cfrequency: 'Event-Driven',\n cid: 'EBB7766B-BD43-4C24-8BA9-A5BCBE971241',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2',\n score: 0.6607470512,\n name: 'Finance Governance Forum Review'\n }, {\n ccode: '865',\n cfrequency: 'Monthly',\n cid: '77821A03-6F01-4DC3-B821-FC79A53CBC25',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6333666444,\n name: 'Governance Meetings Review'\n }, {\n ccode: '699',\n cfrequency: 'Monthly',\n cid: 'F9C596DD-774A-4F39-9EA9-F098793507B6',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.632681191,\n name: 'eTrading Governance Forum Review '\n }, {\n ccode: '1579',\n cfrequency: 'Monthly',\n cid: 'C4510D60-C8BE-4C1D-89EF-687097A75EB8',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6271162629,\n name: 'Governance Meetings Review (Risk)'\n }, {\n ccode: '1470',\n cfrequency: 'Monthly',\n cid: '27BC2256-F662-449F-9A5E-EFBD68B90B53',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6246215701,\n name: 'Governance Meetings Review (Operations)'\n }, {\n ccode: '1353',\n cfrequency: 'Monthly',\n cid: 'A6C5EE25-D8B9-4111-A7E2-56E24529C824',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6217349172,\n name: 'Governance Meetings Review'\n }, {\n ccode: '1165',\n cfrequency: 'Monthly',\n cid: '67DB14F0-9AB9-4A48-B335-55405BD9C462',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6032665968,\n name: 'Asset and Liability Governance Review'\n }, {\n ccode: '1379',\n cfrequency: 'Monthly',\n cid: 'D881AFDD-61F2-413B-851C-A1043D86CCBB',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5980414748,\n name: 'Policy Monitoring Review'\n }, {\n ccode: '1637',\n cfrequency: 'Monthly',\n cid: '6BBBE969-4FEC-4144-B934-88402E31B47A',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5974142551,\n name: 'Governance Meetings Review (Technology)'\n }, {\n ccode: '1374',\n cfrequency: 'Monthly',\n cid: '2C53C224-DD7C-43B0-AE58-534C131FD0A7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.5972490907,\n name: 'Product Control Governance Meetings'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-604C8C',\n id: 'JPM-CTRL-604C8C',\n description: '262.1 Order / Message Throttle Limit\\nWhat\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7045968175',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7045968175,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6809344292,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6781805158,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6741620898,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6644322276,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6589471698,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6547904611,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6441825032,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6437068582,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6412726045,\n name: 'Trade Surveillance - Price Manipulation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '270.1 Pilot Testing',\n code: 'JPM-CTRL-FA33E8',\n id: 'JPM-CTRL-FA33E8',\n description: null,\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-920839'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1588',\n topMatchCertainty: '0.5928733945',\n clusterId: 'model - based pilot testing of cib global markets',\n items: [{\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.5928733945,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.5877742171,\n name: 'Model Approval Review'\n }, {\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.5866965652,\n name: 'Model Usage Review'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.5808115005,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1700',\n cfrequency: 'Event-Driven',\n cid: '0D2BF08A-A03B-4EE6-ABDE-EFE9654EBEAD',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.5803820491,\n name: 'User Acceptance Testing Review (Technology)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.5589017272,\n name: 'Model Performance Review'\n }, {\n ccode: '1840',\n cfrequency: 'Event-Driven',\n cid: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.5581575036,\n name: 'eTrading Algorithm Testing Methodology Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5576044917,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5552401543,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5547758937,\n name: 'Model Inventory Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '269.1 Market Dislocation',\n code: 'JPM-CTRL-2BD9FE',\n id: 'JPM-CTRL-2BD9FE',\n description: '269.1 Market Dislocation | Objective: To prevent the risk of streaming inaccurate bids / offers to clients in a market dislocation event by disabling pricing where observed changes in market prices materially differ from implied or expected price levels\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of market dislocations [e.g. gapped markets, rapid moves, or reversals]. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nCitations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1797',\n topMatchCertainty: '0.7179602981',\n clusterId: 'review of controls for intraday market dislocations',\n items: [{\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.7179602981,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7026976943,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6658832431,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6630054116,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6611531377,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6592698693,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '880',\n cfrequency: 'Daily',\n cid: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6551433206,\n name: 'Market Data Jump Review'\n }, {\n ccode: '769',\n cfrequency: 'Event-Driven',\n cid: 'E78DEF91-7D28-418C-BF0C-ED52ED44A196',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6533723474,\n name: 'eTrading Pre-Trade Price Sanity Monitoring '\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.652749896,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6474810243,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-2DCC61',\n id: 'JPM-CTRL-2DCC61',\n description: '008.1 Client Risk Limits\\n| Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nIdentify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert\\n(2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.8201868534',\n clusterId: 'constraining client risk exposure to intraday e - trading',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.8201868534,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7939488888,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.7808027267,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.7804903984,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7559273839,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.7192953229,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.7010291219,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6989099383,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6981577873,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6922438741,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-4AC916',\n id: 'JPM-CTRL-4AC916',\n description: '277.1 Executed Risk - Flow Limit\\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nObjective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits\\nNA\\nNA\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1093',\n topMatchCertainty: '0.7059161067',\n clusterId: 'monitoring and monitoring of aggregate maximum trading activity with intraday e - trading',\n items: [{\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7059161067,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6989030838,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6971573234,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6968650222,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6923021674,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6869971156,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6866140366,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6842443943,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6781024337,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6769699454,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-9E6F97',\n id: 'JPM-CTRL-9E6F97',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependencies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilization (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilization is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7138729095',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7138729095,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7040309906,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6779609323,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6742184758,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.670548141,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6639915109,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6599866748,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6584171057,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6511709094,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6463884711,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-993BEC',\n id: 'JPM-CTRL-993BEC',\n description: '275.1 Profit & Loss Limit\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. | Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits. | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of realized P&L. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert].\\nNA\\nNA\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '703',\n topMatchCertainty: '0.6564659476',\n clusterId: 'monitoring and monitoring control value changes in intraday e - trading',\n items: [{\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6564659476,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6564193368,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6560274959,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6471259594,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6418177485,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6361861229,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6332669258,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6125509143,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.606528461,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5990404487,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-2C0875',\n id: 'JPM-CTRL-2C0875',\n description: '276.1 Executed Risk - Exposure Limit\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk\\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.6901749969',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6901749969,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6873012185,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.683752358,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6799554825,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6761505008,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.656534493,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.655847311,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6542761922,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6523637176,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6507077813,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '011.1 Independent Risk Function',\n code: 'JPM-CTRL-F86283',\n id: 'JPM-CTRL-F86283',\n description: '011.1 Independent Risk Function | Objective: To detect the risk of not establishing or maintaining a robust and adequately staffed e-Trading supervisory function with clearly defined roles & responsibilities that ensure alerts are timely identified, escalated and dispositioned in accordance with established procedures and protocols for incident management maintained and invoked in accordance with agreed protocols.\\n| Process: Review: Review ongoing monitoring of alerts generated by eTrading systems or platforms.\\n| Identify: Identify potential anomalies for review/challenge; these may be: issues related to order entry order quoting; or order execution generated by eTrading systems/platforms.\\n| Action: 1. Determine whether the alerts in question are necessary for escalation/challenge\\n2. Define next steps with relevant parties.\\n3. Agree timeframe for completion with relevant parties.\\n4. Affirm that a valid justification is provided and recorded for alerts presented in the escalation/challenge; including the ongoing monitoring of that exception as required by LOB specific procedures.\\n| Supervision: N/A\\n| Governance: Escalation to LOB ECF, further to LOC BCC / BCF as required by the nature of the alert.\\n| Substantiation: Sample size guidance: for alerts, 20 per LOB per test period, for ECF materials = 3 months per LOB. \\nA. Obtain copy of The procedures document and ensure it has been reviewed in the last 12 months and conforms to CIB procedure standards \\nB. Obtain evidence from relevant BCM team: \\na. For Cash EQ, i. Of the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nb. For F&O, i. i. obtain screen-grabs daily excel download of alerts and evidence of disposition of alerts by F&O ECS desk \\nOf the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nFor non-EQ, : obtain copies of alert emails generated and any follow-up email chain generated by that alert, ensure desk / second line engagement as relevant \\nC. Request 3 months ECF meeting materials demonstrating the reporting of alerts generated and trend analysis',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-0729BD'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Weekly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.7718083858',\n clusterId: 'escalation / challenge of e - trading alerts : review of',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7718083858,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7322109342,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7089672089,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.7041341662,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1822',\n cfrequency: 'Annually',\n cid: '16A27AAA-7C22-44BF-BE7B-7C5906E0C174',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.7035138011,\n name: 'eTrading Alert Effectiveness Metrics Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.7003620267,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6918921471,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6875573993,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6773031354,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1666',\n cfrequency: 'Daily',\n cid: '5FD1A0C3-903D-4020-8610-43CC9F485105',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6770241261,\n name: 'Firm Transaction Surveillance Alert Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-6F9290',\n id: 'JPM-CTRL-6F9290',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert\\n(2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n(3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7147366405',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7147366405,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7119098306,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6947719455,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6902604103,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6765592694,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.671261251,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6708975434,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6677501202,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6672485471,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6542212367,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '163.1 Last Look Monitoring and Reporting',\n code: 'JPM-CTRL-084E66',\n id: 'JPM-CTRL-084E66',\n description: \"163.1 Last Look Monitoring and Reporting | Objective: To detect the risk of tades being unreasonably rejected in the last look window as a result of asymetric price movement thresholds being implemented by validating that the 'Last Look' processing of client trade requests complies with the firm's disclosure to those clients\\n| Process: Control Description\\nLast Look Reporting is detective with manual follow up for flagged entries. It is expected to be in place for bilateral market making activities that stream indicative quotes to clients.\\nOut of scope: E-Trading order execution, automated Request For Quote (RFQ) and Central Limit Order Book (CLOB) market making.\\n\\nProcess Steps\\nValidate that the 'Last Look' processing of client trade requests complies with the firm's disclosure to clients with regards to the handling of price movements (sometimes referred to as 'Symmetry Reporting').\\n1. Report is designed to rely on reference prices and highlight unusual activity, including:\\n(a) Trades accepted outside of determined thresholds\\n(b) Trades rejected within determined thresholds\\n2. The report is configured to run at an expected frequency of once or more a day\\n3. Control Managers and Front Office staff receive the report and investigate.\\n4. Front office is responsible for taking corrective actions once a conclusion has been made (e.g. make a client whole after an off-market trade). The decision often involves commercial considerations.\\n| Substantiation: 1. Confirm the existence of bilateral market making activities that stream quotes and employ last look\\n2. For the identified activity, request 'Last Look' (sometimes called 'Symmetry') reporting for the activity from Control Management\\n3. Request Client Disclosure statements with specific 'Last Look' language.\\n4. Confirm the frequency is at minimum once per day and the report is consistent with the language in the client disclosure\\n5. Confirm report recipients include Control Management and Front Office\\n6. Request examples of investigation for flagged entries\\nNA\\nNA\\nNA\",\n risks: [{\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-0A1724'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '890',\n topMatchCertainty: '0.7482711673',\n clusterId: 'detecting and monitoring the risk of tades being unreasonably rejected',\n items: [{\n ccode: '890',\n cfrequency: 'Monthly',\n cid: '30846731-DEC4-403A-8A6E-E0260D0728AA',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7482711673,\n name: 'Last Look - Activity Monitoring'\n }, {\n ccode: '1821',\n cfrequency: 'Annually',\n cid: '105A396F-7C0B-43DF-9FEC-E74A21314526',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2',\n score: 0.7089268565,\n name: 'Last Look - Configuration Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B1',\n score: 0.621458292,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6152765155,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6055806875,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B1',\n score: 0.6047862172,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.6027163863,\n name: 'Client Activity Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5964413285,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5876963139,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1397',\n cfrequency: 'Daily',\n cid: '8765AD3A-C2EB-4DE1-B04D-96A7A4EB4FDC',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B1',\n score: 0.5860483646,\n name: 'Late Trade /As-Of Trade Review (Operations)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-C0C018',\n id: 'JPM-CTRL-C0C018',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7138857841',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7138857841,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6758267283,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6675669551,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6607668996,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6559384465,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6518812776,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6485011578,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6432260871,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6420631409,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6412588954,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '266.1 Small Flow Rollout',\n code: 'JPM-CTRL-2ECDCD',\n id: 'JPM-CTRL-2ECDCD',\n description: '266.1 Small Flow Rollout | Objective: To prevent E-Trading activities from creating disorderly trading conditions by vererifying that the intended functionality is working in a production environment as expected prior to full capacity. | Process: Control Description\\nThe 1LOD must present a plan for SFR as part of new E-Trading Activity approval process. At a minimum, the SFRs must detail:\\n1. Phases of adoption, target dates, and success criteria for promotion to each phase\\n2. Minimum controls applied to limit the flow during SFR phases. In situations where controls cannot be applied, the 1LOD must document how the flow will be limited (manually constrained).\\n\\nProcess Steps\\n1. The SFR should be documented within ECF Toolkit at the time of approval, including phases, success criteria and minimum controls.\\n2. When under an SFR, the 1LOD must communicate and escalate to the appropriate ECF in the following circumstances:\\na. Status of the SFR changes\\nb. Success criteria within a phase are not met within the defined timeframe\\nc. A proposed deviation of the SFR plan\\nd. Described SFR functionality does not work as expected \\n | Substantiation: 1. Choose a sample of E-Trading Activities that have been approved within the review window\\n2. Identify the Small Flow Rollout that was included within ECF Toolkit at the time of approval by selecting the Small Flow Rollout section of the Controls workflow for the Activity\\n3. Confirm with the ECF Chair if any esclations related to the SFR were raised to the ECF. If so, review the relevant ECF material and confirm the esclation was documented.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '891',\n topMatchCertainty: '0.5894194841',\n clusterId: 'a plan for small flow rollout to prevent disorderly trading in production',\n items: [{\n ccode: '891',\n cfrequency: 'Event-Driven',\n cid: 'F6D255EB-A47F-4930-B15E-70D1A9024DF0',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.5894194841,\n name: 'Non-standard Trading Days Planning'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.5869722366,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1766',\n cfrequency: 'Weekly',\n cid: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.5804637074,\n name: 'Darkpool Order Flow Activity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.5770540833,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1222',\n cfrequency: 'Event-Driven',\n cid: 'E65975D2-2A70-448A-A33B-DDAE4E27556A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.5741480589,\n name: 'Operational Risk Pre Go-live Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5730964541,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.5666947961,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '710',\n cfrequency: 'Event-Driven',\n cid: '12025323-5404-4F16-864D-484E01A8533D',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5630242229,\n name: 'eTrading Pre-deployment sign-off Review'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5614833832,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '1788',\n cfrequency: 'Event-Driven',\n cid: '07F327B5-9282-4788-A5CF-3562ABB5E4D9',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5600629449,\n name: 'Non-Standard Trade Pre-approval Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '163.1 Last Look Monitoring and Reporting',\n code: 'JPM-CTRL-AB6D7D',\n id: 'JPM-CTRL-AB6D7D',\n description: '163.1 Last Look Monitoring and Reporting | Objective: To detect the risk of tades being unreasonably rejected in the last look window as a result of asymetric price movement thresholds being implemented by validating that the ‘Last Look’ processing of client trade requests complies with the firm’s disclosure to those clients | Process: Control Description\\nLast Look Reporting is detective with manual follow up for flagged entries. It is expected to be in place for bilateral market making activities that stream indicative quotes to clients. \\nOut of scope: E-Trading order execution, automated Request For Quote (RFQ) and Central Limit Order Book (CLOB) market making.\\n\\nProcess Steps\\nValidate that the ‘Last Look’ processing of client trade requests complies with the firm’s disclosure to clients with regards to the handling of price movements (sometimes referred to as ‘Symmetry Reporting’).\\n1. Report is designed to rely on reference prices and highlight unusual activity, including:\\n (a) Trades accepted outside of determined thresholds\\n (b) Trades rejected within determined thresholds \\n2. The report is configured to run at an expected frequency of once or more a day\\n3. Control Managers and Front Office staff receive the report and investigate.\\n4. Front office is responsible for taking corrective actions once a conclusion has been made (e.g. make a client whole after an off-market trade). The decision often involves commercial considerations. | Substantiation: 1. Confirm the existence of bilateral market making activities that stream quotes and employ last look\\n2. For the identified activity, request ‘Last Look’ (sometimes called ‘Symmetry’) reporting for the activity from Control Management\\n3. Request Client Disclosure statements with specific ‘Last Look’ language.\\n4. Confirm the frequency is at minimum once per day and the report is consistent with the language in the client disclosure\\n5. Confirm report recipients include Control Management and Front Office\\n6. Request examples of investigation for flagged entries',\n risks: [{\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-0A1724'\n }, {\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-0A1724'\n }, {\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-0A1724'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '890',\n topMatchCertainty: '0.7416262627',\n clusterId: 'detecting and monitoring the risk of tades being unreasonably rejected',\n items: [{\n ccode: '890',\n cfrequency: 'Monthly',\n cid: '30846731-DEC4-403A-8A6E-E0260D0728AA',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7416262627,\n name: 'Last Look - Activity Monitoring'\n }, {\n ccode: '1821',\n cfrequency: 'Annually',\n cid: '105A396F-7C0B-43DF-9FEC-E74A21314526',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2',\n score: 0.7022349238,\n name: 'Last Look - Configuration Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B1',\n score: 0.629924953,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6257178783,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6226451993,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B1',\n score: 0.6129394174,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.6100646853,\n name: 'Client Activity Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6063583493,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5960080028,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5951109529,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-C836C8',\n id: 'JPM-CTRL-C836C8',\n description: '275.1 Profit & Loss Limit | Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits | Process: Control Description\\nPrevent P&L associated with E-Trading Activity from exceeding pre-defined risk appetite level\\n\\nProcess Steps\\n1. Front Office/ LoB are responsible for identifying the risks inherent within E-Trading Activities and for meeting E-Trading Risk Management (ETRM) control requirements in order that the exposure to those risks is constrained\\n2. Front Office are responsible for documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n3. Front Office / LoB are responsible for setting limit values for the control in accordance with:\\n(i) any applicable LoB SOPs setting out the limit setting methodology\\n(ii) any outer bounds set by ETRM\\n4. Front Office are responsible for monitoring activity levels against those limits and for raising limit values where E-Trading Activity is anticipated to exceed those limit values. Where limit values are raised, Front Office are responsible for recording those changes and for obtaining second line risk Approval, at a minimum where that change is expected to exceed the outer limit boundaries established by second line risk\\n5. Front Office are responsible for periodically (at least annually) reviewing limit values and for ensuring that those values are appropriately sized to actual / expected activity levels\\n6. Second line risk departments are responsible for monitoring any second line limits that establish outer boundary levels and for aggregating risk exposures where applicable / appropriate to do so and reporting excesses on second line limit.\\n|Substantiation: 1.Download full list of controls from ECF Toolkit. \\n2.Take 2 Activities where the \"Control Category\" value is the same as this CPS name. \\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6823327541',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6823327541,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6725489497,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.665263474,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6632139087,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6502147317,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6405872107,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6358805299,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6178819537,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.607121706,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5999943018,\n name: 'eTrading Unhedged Risk Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '296.1 Japan Securitized Investments onboarding',\n code: 'JPM-CTRL-F45879',\n id: 'JPM-CTRL-F45879',\n description: \"296.1 Japan Securitized Investments onboarding | Objective: Control Objectives Ensure that the risks related to verifying the identify of external users during set-up and subsequent client servicing requests are mitigated via manual means of authentication for those clients onboarded to JSI (Japan Securitized Investments) without the standard machine authentication protocols in place. | Process: JSI (Japan Securitized Investments) is a retail structured product pricing and execution platform for mainly Japanese regional securities firms. A subset of clients do not follow the standard machine authentication protocols, requiring manual processes for verifying the identify of external users during set-up and subsequent client servicing requests.\\n\\n1) As part of the onboarding process, the client provides Sales with a list of internal users including contact information, IP ranges and level of permissioning required. This is used for all subsequent communication by JPM Sales, Digital Markets Product and JPMM Help Desk. \\n2) Digital Markets Product sets up the list of permitted users with accounts using standard JPM access tools (IBID) on JPMM and enables permissions to access the JSI application.. \\n3) Digital Markets Product notifies the JPMM Authentication team to remove machine registration from the specified accounts. The range of IP addresses provided by the client is whitelisted by JPMM Authentication.\\n4) Once the account information has been created, Sales provides the client's username to the client over the phone using the contact information initially provided by the client. As per firm standards, the initially, temporary password is communicated separately by JPMM Help Desk, who contact the client using phone numbers received from the client during onboarding. An Alacrity ticket is logged by JPMM Help Desk.\\n5) Any subsequent changes to the client's passport will be managed by the JPMM Help Desk, with callbacks performed to authenticate the client. Alacrity tickets are logged for each interaction.\\n6) A semi-annual review is performed where the JPMM team produces and disseminates an exception report to the lines of business (Digital Markets) to review and confirm their exceptions. | Substantiation: 1) Contact Digital Markets Product and for all clients onboarded within the substantiation period and select a sample of 3 for testing\\n2) Ask JPMM Authentication for evidence showing the IP Whitelisting and Machine Registration process\\n3) Ask JPMM Help Desk for logs demonstrating the Call Back process was followed for the initial password set up\\n4) Confirm the sample were on the most recent exception report produced by JPMM and were confirmed by Digital Markets\",\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-F7949F'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1225',\n topMatchCertainty: '0.6433273554',\n clusterId: '296.1 Japan Securitized Investments onboarding',\n items: [{\n ccode: '1225',\n cfrequency: 'Event-Driven',\n cid: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6433273554,\n name: 'eTrading Client Onboarding Review'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6352725029,\n name: 'Client System Access Review'\n }, {\n ccode: '523',\n cfrequency: 'Event-Driven',\n cid: 'BF1592D0-C9AF-4CC8-9D48-0CC9A15B2204',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6300218701,\n name: 'Counterparty Onboarding Review'\n }, {\n ccode: '1217',\n cfrequency: 'Event-Driven',\n cid: '75EAE8B1-F8A1-4D39-8AB1-69CA73068AD9',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6262814403,\n name: 'Broker Onboarding Review'\n }, {\n ccode: '1498',\n cfrequency: 'Event-Driven',\n cid: '7417363A-4953-4F49-8458-46827D39E9F8',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.620488584,\n name: 'KYC System Reconciliation'\n }, {\n ccode: '525',\n cfrequency: 'Event-Driven',\n cid: '61FAAB29-2CF3-477D-97E7-AAAB7CFF73CD',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6107099056,\n name: 'Client Classification Review'\n }, {\n ccode: '1204',\n cfrequency: 'Quarterly',\n cid: 'D3A74C2B-5B94-440B-A17A-091E9FF0F925',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5985839963,\n name: 'Know Your Customer (KYC) Ongoing (trading activity) Review'\n }, {\n ccode: '1390',\n cfrequency: 'Real time',\n cid: '6327E8E4-745B-4148-8249-79AC69BBA255',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.591930449,\n name: 'KYC Onboarding & Expansion Review'\n }, {\n ccode: '1658',\n cfrequency: 'Event-Driven',\n cid: '0EE976F1-FEF4-4723-A4AE-73564C95EA43',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.583779633,\n name: 'Client Classification and Validation Review (Compliance)'\n }, {\n ccode: '1410',\n cfrequency: 'Event-Driven',\n cid: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5796567798,\n name: 'KYC Due Diligence Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-D99EC7',\n id: 'JPM-CTRL-D99EC7',\n description: '008.1 Client Risk Limits\\n| Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.8084154129',\n clusterId: 'constraining client risk exposure to intraday e - trading',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.8084154129,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7779364586,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7687964439,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7682464123,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7400134206,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.7159482837,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6879383922,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.686815083,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6836788058,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6835868955,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-3810BB',\n id: 'JPM-CTRL-3810BB',\n description: '300.1 Outstanding Risk\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\nObjective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by containing exposure of outstanding quotes/orders to within applicable limits.\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.7146699429',\n clusterId: '300.1 Outstanding Risk',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7146699429,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6837336421,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6807405353,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6727078557,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.655703783,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6525678635,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6523536444,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6484518647,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6434542537,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6422683597,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '159.1 E-Trading Stress testing',\n code: 'JPM-CTRL-B4D157',\n id: 'JPM-CTRL-B4D157',\n description: '159.1 E-Trading Stress testing | Who: Business Control Management\\n| Process:\\n- Review: 1. Stress test standards must be reviewed min annually. This must include review of Stress test documentation, R&R and include test scenarios and frequency. \\n2. Results of review must be documented, tracking any modification to the standard , be reviewed by key stakeholders and presented in ECF for approval\\n- Identify: 3. Stress Test must be performed at least annually.\\na. This must be documented and take into account. \\nb. Use case/test case. \\nc. Expected Impact to upstream/downstream systems, processes or jobs that need to be verified during the test.  \\nd. Potential impact to external processes or venues.\\n4. Tests need to be performed at min:\\na. Messaging volume tests- highest no of messages during last 6 months multiplied by 2\\nb. Trade volume tests- highest volume of trading reached during previous 6 months multiplied by 2\\n5. Testing Scope - should cover ability of electronic Trading system to handle peak messages and trades, Scenarios must cover kill functionality, Surveillance , Business Continuity, Pre Trade controls, Real time monitoring, Post Trade controls\\n- Action: FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval\\n- Supervision: No prescribed supervision\\n- Governance: Results must be presented at ECF (Electronic Control Forum).\\n| Objective: To prevent the risk of a critical trading application outage resulting from excessive  trading volume and message rates exceeding application, order routing or market connectivity layer tolerances through provision of sufficient capacity headroom to be able to accommodate higher message rates or any other parameters due to increased volume / market stress events (e.g. 2 x max message rate)\\nPre Trade\\nAnnually\\n| Substantiation Steps: \\n1) Request documentation for Stress Test standards review.  Ensure it includes Stress test documentation, R&R and include test scenarios and frequency. \\n2) Request ECF presentation to ensure results of above have been presented and ensure approval of any changes have been received as per minutes.\\n3) Request evidence of min annual stress test and ensure all elements mentioned in above process steps are  covered. This must also include any follow up actions \\n4) FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1601',\n topMatchCertainty: '0.7830222249',\n clusterId: 'review of stress test standards for e - commerce',\n items: [{\n ccode: '1601',\n cfrequency: 'Monthly',\n cid: 'FD6EDC20-13D3-4464-ABBA-101714196632',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7830222249,\n name: 'Stress Testing Review'\n }, {\n ccode: '1703',\n cfrequency: 'Semi-Annually',\n cid: 'DD829318-62F2-427F-80AD-D06C71EBAC43',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7742762566,\n name: 'eTrading Stress Test Plan And Results Review'\n }, {\n ccode: '1599',\n cfrequency: 'Quarterly',\n cid: 'D0C56474-2C3C-4269-9C3B-51A2331F1CCC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6892328262,\n name: 'Stress Scenario and Market Shocks Results Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6065400243,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5885911584,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5864069462,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.579423964,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1818',\n cfrequency: 'Annually',\n cid: '30A969B6-A33F-4290-B5F2-A6843BBB7B23',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5789332986,\n name: 'Crisis Management Plan Testing'\n }, {\n ccode: '1840',\n cfrequency: 'Event-Driven',\n cid: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5775346756,\n name: 'eTrading Algorithm Testing Methodology Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5763641,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '241.1 E-Trading Client Pricing Differentiation',\n code: 'JPM-CTRL-F85DD3',\n id: 'JPM-CTRL-F85DD3',\n description: \"241.1 E-Trading Client Pricing Differentiation | Business Control Management\\n| Description (Control Execution Steps) :\\n/Review: The E-Commerce Best Execution Committee reviews on a bi-monthly basis electronic trading desk's aggregated metrics containing:\\na. The number of liquidity charge amendments applied to clients at the highest and most relevant point of client aggregation (e.g. UCN, SPN, Account Group, CASSII, etc.) with individual client names or identifiers masked\\nb. The impact of differentiation changes (e.g. trade volumes, hit ratios, or yield data (P&L / volume)).\\n/Identify: The E-Commerce Best Execution Committee is required to identify any unexpected thematic changes or results where a newly applied tier is inappropriate or inaccurate\\n/Action: The E-Commerce Best Execution Committee is required to identify and track via the Committee any corrective actions from the review of CPD metrics\\n/Supervise: CIB Markets trading businesses are required to identify all activities for which CPD Guidelines are applicable and confirm that aggregated metrics are included in the E-Commerce Best Execution Committee.\\n/Govern: Updates to the CPD Guidelines must be reported into the Digital Markets & E-Commerce BCC\\n| Objective: To detect and address inappropriately differentiated liquidity charges for electronic trading activities that auto-price and auto-accept client transactions and the possible resulting reputational impact..\\nPost Trade\\nMonthly\\n| Substantiation: 1 Select 3 BEC decks and ensure that E Trading Client differentiation metrics are included\\n2 Check if there any corrective actions noted and that appropriate follow up has taken place\",\n risks: [{\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1782',\n topMatchCertainty: '0.6882528663',\n clusterId: 'e - commerce best execution committee reviews',\n items: [{\n ccode: '1782',\n cfrequency: 'Monthly',\n cid: '2F88E29E-D473-4937-9BAF-573DE24B7E74',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.6882528663,\n name: 'Best Execution - Governance Forum Review'\n }, {\n ccode: '1779',\n cfrequency: 'Annually',\n cid: '18162F27-8CCC-4926-A0AC-A34BBECA3281',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6291678548,\n name: 'Best Execution - Scoping and Obligations Review '\n }, {\n ccode: '1780',\n cfrequency: 'Daily',\n cid: 'BD569B4E-96D1-47D3-A0B9-7035FCA6B0E3',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6136235595,\n name: 'Best Execution - Exception Review'\n }, {\n ccode: '884',\n cfrequency: 'Event-Driven',\n cid: '1080D672-9877-4551-975E-1A3E144D6069',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6104972363,\n name: 'Client Tiering Review'\n }, {\n ccode: '1778',\n cfrequency: 'Quarterly',\n cid: 'F4EF7686-7915-4704-B03C-7B53743375C0',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6092933416,\n name: 'Best Execution - Regulatory Reporting Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6087073684,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1355',\n cfrequency: 'Monthly',\n cid: '092E8536-3612-4168-BA2D-FB93C5CC25F7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.6043889523,\n name: 'Best Execution (AM)'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5871448517,\n name: 'Client Activity Review'\n }, {\n ccode: '1083',\n cfrequency: 'Daily',\n cid: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.5864822865,\n name: 'Commodity Exchange Metrics Review'\n }, {\n ccode: '1026',\n cfrequency: 'Daily',\n cid: '93E885A7-2720-4245-AD47-143B7CBF6B1A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5796781182,\n name: 'Pricing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '174.1 RegReview Record / L&C Review Record',\n code: 'JPM-CTRL-A44831',\n id: 'JPM-CTRL-A44831',\n description: '174.1 RegReview Record / L&C Review Record\\nProcess: Review: Desk create request in ECF toolkit through workflow for new or changes in existing E-trading activities. Legal and Compliance review the draft documents.\\nIdentify: Legal and Compliance to Identify if New Activities or change in Existing E-trading activities are meeting approval requirements.\\nAction: Once the responses meet the requirements of Legal and Compliance, they record their approval within ECF Toolkit. ECF Toolkit will be updated accordingly (Adding/modifying E-Trading activities) including the regulatory workflow as required.\\nSupervision: N/A\\nGovernance: N/A\\nObjective: An integral part of the E-Trading Activity documentation that facilitates an engagement with Legal and Compliance to make certain the activities satisfy regulatory obligations, including prevention of market manipulation and other conduct risks.\\nN/A\\nTransactional (Ad-hoc)\\nSubstantiation steps: 1. Access the ECF Toolkit inventory of Activities for a selected LoB.\\n2. For the specified sample size of selected approved activity, view the Regulatory Workflow.\\n3. Confirm Legal and Compliance have approved within the audit trail new activities and updates.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Directive',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '132',\n topMatchCertainty: '0.6450002789',\n clusterId: '174.1 RegReview Record / L&C Review Record',\n items: [{\n ccode: '132',\n cfrequency: 'Event-Driven',\n cid: '2A8C3458-0EDA-4CED-A46C-66DEFB79191B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6450002789,\n name: 'Trading Book Opening Review'\n }, {\n ccode: '1460',\n cfrequency: 'Event-Driven',\n cid: 'EC355719-5ADC-46BE-966F-F70DD4CFF07F',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6409111619,\n name: 'Transaction Documentation Review (Operations)'\n }, {\n ccode: '1773',\n cfrequency: 'Daily',\n cid: 'A76A9339-8A00-4906-91CE-0BFC7135CE4F',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6275922656,\n name: 'Trade Affirmation Review'\n }, {\n ccode: '995',\n cfrequency: 'Event-Driven',\n cid: '92A6B2DC-8C50-4DD7-AAF9-292616F155CD',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6264793277,\n name: 'Transaction Documentation Review'\n }, {\n ccode: '1108',\n cfrequency: 'Event-Driven',\n cid: '0A157C92-5F64-4B54-8D92-392F8DB5E746',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6177425981,\n name: 'Structured Trade Set-up Review'\n }, {\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.617719233,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '956',\n cfrequency: 'Monthly',\n cid: '04EFC681-272B-4750-8235-BEFF46F52A81',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6093398333,\n name: 'Fund Manager Trade Authorisation Review'\n }, {\n ccode: '1276',\n cfrequency: 'Monthly',\n cid: 'E6CD3F8F-F684-4DF9-A01E-ECE430948898',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2',\n score: 0.6075820327,\n name: 'Trade Instruction Review'\n }, {\n ccode: '678',\n cfrequency: 'Event-Driven',\n cid: '0D33D60C-4A40-4D9E-9F72-473810DB4168',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6075287461,\n name: 'New Product Approval'\n }, {\n ccode: '1152',\n cfrequency: 'Event-Driven',\n cid: 'F01805F9-F2EF-43F4-8F36-6738B2C729E2',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6046918631,\n name: 'Client Financing Transaction Documentation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-6851AD',\n id: 'JPM-CTRL-6851AD',\n description: '277.1 Executed Risk - Flow Limit\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period.\\nIdentify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert].\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events.\\nGovernance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation: 1. Download full list of controls from ECF toolkit.\\n2. Use the link document which shows CPS name in toolkit to ensure you are looking at correct control.\\n3. Take 2 activities which have this control.\\n4. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n5. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported.\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6834127903',\n clusterId: 'monitoring and control of intraday e - trading activities',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6834127903,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6769900918,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6755635142,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6715598106,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6611794829,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6603037715,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.65364784,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6518557072,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6465566158,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6454833746,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-C16D11',\n id: 'JPM-CTRL-C16D11',\n description: '277.1 Executed Risk - Flow Limit\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits\\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6842367649',\n clusterId: 'monitoring and control of intraday e - trading activities',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6842367649,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6790079474,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6753317714,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6715676785,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6633292437,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6629000306,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6544167995,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.652538836,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6516512632,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6479564905,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-ADADAC',\n id: 'JPM-CTRL-ADADAC',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.712926209',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.712926209,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6748690009,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6667125225,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6600289941,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.655328095,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6513462663,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6484899521,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6424087882,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6410822272,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6396327019,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '270.1 Pilot Testing',\n code: 'JPM-CTRL-ECC6D2',\n id: 'JPM-CTRL-ECC6D2',\n description: null,\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1588',\n topMatchCertainty: '0.5980290174',\n clusterId: 'model - based pilot testing of cib global markets',\n items: [{\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.5980290174,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.5933554769,\n name: 'Model Usage Review'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.5900459886,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5894802213,\n name: 'Model Approval Review'\n }, {\n ccode: '1700',\n cfrequency: 'Event-Driven',\n cid: '0D2BF08A-A03B-4EE6-ABDE-EFE9654EBEAD',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.5801236629,\n name: 'User Acceptance Testing Review (Technology)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.5684841871,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5658812523,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5645728111,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1840',\n cfrequency: 'Event-Driven',\n cid: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.5605576634,\n name: 'eTrading Algorithm Testing Methodology Review'\n }, {\n ccode: '1818',\n cfrequency: 'Annually',\n cid: '30A969B6-A33F-4290-B5F2-A6843BBB7B23',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5578489304,\n name: 'Crisis Management Plan Testing'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-EF398D',\n id: 'JPM-CTRL-EF398D',\n description: '275.1 Profit & Loss Limit\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits\\n| Process: Control Description\\nPrevent P&L associated with E-Trading Activity from exceeding pre-defined risk appetite level\\nProcess Steps\\n1. Front Office/ LoB are responsible for identifying the risks inherent within E-Trading Activities and for meeting E-Trading Risk Management (ETRM) control requirements in order that the exposure to those risks is constrained\\n2. Front Office are responsible for documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n3. Front Office / LoB are responsible for setting limit values for the control in accordance with:\\n(i) any applicable LoB SOPs setting out the limit setting methodology\\n(ii) any outer bounds set by ETRM\\n4. Front Office are responsible for monitoring activity levels against those limits and for raising limit values where E-Trading Activity is anticipated to exceed those limit values. Where limit values are raised, Front Office are responsible for recording those changes and for obtaining second line risk Approval, at a minimum where that change is expected to exceed the outer limit boundaries established by second line risk\\n5. Front Office are responsible for periodically (at least annually) reviewing limit values and for ensuring that those values are appropriately sized to actual / expected activity levels\\n6. Second line risk departments are responsible for monitoring any second line limits that establish outer boundary levels and for aggregating risk exposures where applicable / appropriate to do so and reporting excesses on second line limit.\\n|Substantiation: 1.Download full list of controls from ECF Toolkit.\\n2.Take 2 Activities where the \"Control Category\" value is the same as this CPS name.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6699797511',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6699797511,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6690921783,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6604699492,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.651763618,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6470574737,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6367128491,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.624920547,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5976472497,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5957404375,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.584929049,\n name: 'Exchange Limits Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-2E1EA1',\n id: 'JPM-CTRL-2E1EA1',\n description: '277.1 Executed Risk - Flow Limit\\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nObjective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits\\nNA\\nNA\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1093',\n topMatchCertainty: '0.7059161067',\n clusterId: 'monitoring and monitoring of aggregate maximum trading activity with intraday e - trading',\n items: [{\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7059161067,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6989030838,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6971573234,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6968650222,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6923021674,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6869971156,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6866140366,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6842443943,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6781024337,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6769699454,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-FA376E',\n id: 'JPM-CTRL-FA376E',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Description (Control Execution Steps):\\nReview: Technology will review and invoke Emergency Shutdown activities to shut down a specific application or applications in order to stop unintended trading action. Emergency shutdown can include but not limited to: a) ineffective control environment design, a control failing to operate as intended, and failure to receive reconciliations from exchanges. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify: Technology will identify and terminate processes (cease trading) in the event of a software glitch, instability, erroneous trading, or other unforeseen circumstances. Emergency shutdown may include a combination of manual or technological processes. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nAction: Emergency shutdown may include a combination of manual or technological processes. Technology will work to invoke (Shutdown) and reenable (Recovery) of the relevant components when appropriate with the proper approvals (by authorized personnel). Approval to invoke Emergency Shutdown can be verbal with written approval obtained by end of the trading day. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nSupervise: Technology will contact the supervisors who would agree on the kill switch / emergency shutdown.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nGovern: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n| Objective: To prevent the risk of failing to execute transactions in line with client or firm intention / instructions as a result of miscommunication or trade input error (fat finger) and may include incorrect direction of order (buy vs sell). quantity of execution, execution price, selection of asset or security; by performing the appropriate process monitoring and oversight.\\n| Pre Trade\\n| Transactional (ad-hoc)\\n| Control Sub- stantiation:\\n\\n 1\\tObtain list of non etrading activities (performed by Production Management and JPM ETI Network operations)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tSelect sample of activities\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tTest Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.6821662784',\n clusterId: 'technology to invoke emergency shutdown',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6821662784,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6312357783,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.579233706,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5704862475,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.569799304,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5672548413,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5643508434,\n name: 'End of Day Trade Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5602359176,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5579047799,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5568445325,\n name: 'Trade Surveillance Alert Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-ABC99B',\n id: 'JPM-CTRL-ABC99B',\n description: '262.1 Order / Message Throttle Limit | Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market. | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n riaDescription: {\n review: 'Review descrip',\n identify: 'Identify descrip',\n action: 'Action descrip'\n },\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.704791069',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.704791069,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6769949794,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6763880849,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6650883555,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6630639434,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6577978134,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6522572041,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6441932321,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6395497322,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.63940835,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-DE2208',\n id: 'JPM-CTRL-DE2208',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by contraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6896402836',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6896402836,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6803300381,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6633865833,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6618613601,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6610702872,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6571452022,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6517823339,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.649808228,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6465646625,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6429826617,\n name: 'Trade Surveillance - Price Manipulation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-E5AA1E',\n id: 'JPM-CTRL-E5AA1E',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by contraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month ..',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6872298717',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6872298717,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6778764725,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6611809134,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6598224044,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6588479877,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.651961565,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6518859267,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.648625195,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.644466877,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6442460418,\n name: 'Exchange Limits Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '187.1 External Venue Approval & Enablement',\n code: 'JPM-CTRL-CB12A8',\n id: 'JPM-CTRL-CB12A8',\n description: '187.1 External Venue Approval & Enablement\\nObjective: Ensure relevant registrations of e-trading activities have taken place at relevant venues | Process: Based on the ECF Activity Approval Process:\\n1. Business / BCM identify that a registration at a venue needs to be added / amended\\n2. Not all venues may need to be changed\\n3. Approved new venues are noted at the relevant ECF\\n4. BA support team are notified of the amendment / addition to be made\\n5. BA support team process the change\\n6. Algo ID list is updated to reflect new / amended venues (NEW CONTROL)\\n7. Quarterly review of venue registration details (NEW CONTROL) Includes requirement to obtain any licenses that the activity needs to opeerate at the venue\\nSubstantiation: 1. Request ECF Meeting material\\na. Is the venue amendment noted?\\n2. Request list of activities registered per venue\\na. Are the venues listed for the activity correct\\nAlgo ID / venue mapping SharePoint list:-\\nhttps://sp.jpmchase.net/sites/spmcgmyj/Lists/Algo%20ID%20list/AllItems.aspx\\n3. Request data received from the venue\\na. Does this correspond to the JPMC data?-\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented\\n4. Request the most recent quarterly review\\na. Has this been reviewed by relevant stakeholders\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '709',\n topMatchCertainty: '0.7225093842',\n clusterId: 'regulation of e - trading activities at relevant venues',\n items: [{\n ccode: '709',\n cfrequency: 'Event-Driven',\n cid: '98380EA0-7F0C-402B-A605-306CEA3DCFDA',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7225093842,\n name: 'eTrading Algorithm Venue Registration Review'\n }, {\n ccode: '1828',\n cfrequency: 'Quarterly',\n cid: '325C8898-F1D0-40DE-BAC7-732B7DB44B28',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7105138302,\n name: 'eTrading Periodic Algorithm Venue Registration Review'\n }, {\n ccode: '37',\n cfrequency: 'Annually',\n cid: '54DD7916-2CF1-446B-86A6-2CE04CA92D31',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.5902609825,\n name: 'End-User Computing (EUC) Register Review'\n }, {\n ccode: '1250',\n cfrequency: 'Annually',\n cid: '5EBE5AE7-7150-41D8-8E99-B37BB328BBFF',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5889256001,\n name: 'Exchange Membership Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.5844914317,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5844662189,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '1082',\n cfrequency: 'Event-Driven',\n cid: 'ACDAA27C-3AD5-433C-9986-595E25812F6B',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.5817126632,\n name: 'New Exchange Membership Review'\n }, {\n ccode: '1660',\n cfrequency: 'Monthly',\n cid: '3F74695E-E91F-46CB-8F05-D2F97D9C0EE1',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5812148452,\n name: 'Employee Licensing Review (Compliance)'\n }, {\n ccode: '704',\n cfrequency: 'Annually',\n cid: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.575624764,\n name: 'eTrading Algorithm Inventory Review'\n }, {\n ccode: '1203',\n cfrequency: 'Quarterly',\n cid: '1129F1BE-E19C-400F-80CE-D5F13D760075',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5728055835,\n name: 'Employee Licensing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-46BB31',\n id: 'JPM-CTRL-46BB31',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.7090372443',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7090372443,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7087772489,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6705264449,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6671188474,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6641491055,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6623111367,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6618919969,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6549601555,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6468840241,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6408202648,\n name: 'IT Alert Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '171.1 High Volume Event Days Planning & Testing',\n code: 'JPM-CTRL-0AFE7A',\n id: 'JPM-CTRL-0AFE7A',\n description: '171.1 High Volume Event Days Planning & Testing | Objective: To prevent the risk of resiliency failure leading to disruption of key e-Trading business activities leading to residual unhedged positions, inability to process execution / fill messages and / or open unmanaged orders in market | Description (Control Execution Steps): Review : BCM / FO maintain and execute a set of event preparation procedures prior to events that may have significant impact on Markets (eg elections / re-balances / Non-Farm payroll). Prior to an event, BCM along with MR / CR / FO / Technology AppDev and PM will review the expected volumes / products / limits / control values etc that may be impacted by the event. Identify: The relevant stakeholders will identify further actions to be taken (eg increased server capacity, increased resources / support staff available, increased limits, amendments to control breach override protocols etc) or other factors to be considered eg client order review including GTC and stop-loss scenarios, known technology deficiencies, re-planning of known technology releases. Action: The agreed actions will be documented and undertaken (scenario dependant); post-event, procedures will be updated to include new / changed process steps based on lessons learned. | Substantuation Process (Tests): 1. Obtain from LOB BCM a list of all high volume event days that took place in the period under review.\\n2. Select 3 Events from the population per RAS and obtain evidence that at least one pre-event session per event took place.\\n3. Request event preparation procedures and event planning evidence for the sample from step 2. above.\\nSample Size Guidance: 3 per RAS',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '891',\n topMatchCertainty: '0.7306911945',\n clusterId: '171.1 High Volume Event Days Planning & Testing',\n items: [{\n ccode: '891',\n cfrequency: 'Event-Driven',\n cid: 'F6D255EB-A47F-4930-B15E-70D1A9024DF0',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7306911945,\n name: 'Non-standard Trading Days Planning'\n }, {\n ccode: '1710',\n cfrequency: 'Event-Driven',\n cid: '06FB3DA4-6FD2-4769-9558-EE5C80DCD6D8',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6742053032,\n name: 'Operational Risk Event Review'\n }, {\n ccode: '1402',\n cfrequency: 'Daily',\n cid: '59BCFBEC-AD3B-4F95-8B9C-78035874E401',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6637433171,\n name: 'Trade Lifecycle Event Review'\n }, {\n ccode: '879',\n cfrequency: 'Daily',\n cid: '64235885-1235-41E1-BC60-AE28FB23DB84',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6537739635,\n name: 'Event Date Review'\n }, {\n ccode: '1454',\n cfrequency: 'Event-Driven',\n cid: 'BD0F0896-C7F4-4EF8-B2BF-A2B12C982A16',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6387829781,\n name: 'Corporate Actions and Asset Servicing Events Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6207744479,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1414',\n cfrequency: 'Daily',\n cid: 'A6876B11-16E2-4E52-99DC-429B2CEC1CA0',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6149147153,\n name: 'Upcoming Derivatives Expiries Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6018201113,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6007207036,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1470',\n cfrequency: 'Monthly',\n cid: '27BC2256-F662-449F-9A5E-EFBD68B90B53',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5954654813,\n name: 'Governance Meetings Review (Operations)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '269.1 Market Dislocation',\n code: 'JPM-CTRL-6F8027',\n id: 'JPM-CTRL-6F8027',\n description: 'N/A\\n269.1 Market Dislocation | Objective: To prevent the risk of streaming inaccurate bids / offers to clients in a market dislocation event by disabling pricing where observed changes in market prices materially differ from implied or expected price levels | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of market dislocations [e.g. gapped markets, rapid moves, or reversals]. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nN/A\\nN/A\\nN/A\\nSubstantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1797',\n topMatchCertainty: '0.6994473338',\n clusterId: 'review of controls for intraday market dislocations',\n items: [{\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6994473338,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6927509308,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6550020576,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '880',\n cfrequency: 'Daily',\n cid: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6504817605,\n name: 'Market Data Jump Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6463896632,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.644067347,\n name: 'Stale Market Data Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6434661746,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6392045617,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '769',\n cfrequency: 'Event-Driven',\n cid: 'E78DEF91-7D28-418C-BF0C-ED52ED44A196',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6390370131,\n name: 'eTrading Pre-Trade Price Sanity Monitoring '\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6388888955,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '049.1 Waivers',\n code: 'JPM-CTRL-11BF68',\n id: 'JPM-CTRL-11BF68',\n description: \"049.1 Waivers | Objective: To detect the risk of erroneous or untimely estimations by obtaining and evidencing required approvals and/or authorizations of transactions and activities as directed in the firm's policies and procedures.| Description (Control Execution Steps): Identify: Model User reviews the model to ensure usage is in accordance the Firmwide Model Risk Policy. Identify: Model User identifies if a waiver is required to enable the use of an unapproved model or an unapproved use of a model. Action: Model User submits a waiver request in order to obtain pre-approvals from Model Governance Group (Model Manager and Model Risk Officer).\\nMM & MRO obtain final signoff from the Model Risk Governance and Review Firm Risk Executive (MRGR FRE).\\nSupervision: No prescribed step.\\nGovernance: Weekly waiver report produced by MGG /MO around waivers V Limits.\\nMonthly stats of waivers are produced by MGG for BCC\\nCitations (Policy / Procedure): https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B78B57760-2502-412B-BEA6-A2E156C53982%7D\\nhttps://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B03C0E185-861E-442D-A645-F151AFC32EAB%7D\\nSample Size Guidance: 20 Substantiation Process (Tests): 1.Review 20 waiver requests.\\n2.Confirm appropriate approvals and supportive documentation is in place.\\n3.Check weekly report is in place.\\n4. Review BCC to ensure waiver totals are contained in the monthly decks.\",\n risks: [{\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-920839'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-9AF848'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-09484C'\n }, {\n riskName: 'Inaccurate, incomplete or untimely internal management financial reporting',\n riskCode: 'JPM-RISK-9E282C'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-9AF848'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-09484C'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-920839'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1372',\n topMatchCertainty: '0.6600669026',\n clusterId: 'detecting and preventing erroneous and untimely estimations of risk',\n items: [{\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6600669026,\n name: 'Model Usage Review'\n }, {\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6472247243,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6398538351,\n name: 'Model Approval Review'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.619786799,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.5987904668,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.5956410766,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1592',\n cfrequency: 'Event-Driven',\n cid: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-e',\n score: 0.5830926299,\n name: 'Model Risk Reporting Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5634272695,\n name: 'Model Inventory Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.560790956,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1170',\n cfrequency: 'Quarterly',\n cid: '4B525F91-D2E5-457E-B6FB-2D9AE753E3B1',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5576412082,\n name: 'Prepayment Risk Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '049.1 Waivers',\n code: 'JPM-CTRL-B94CBF',\n id: 'JPM-CTRL-B94CBF',\n description: \"049.1 Waivers /Business Control Management\\nDescription (Control Execution Steps): Identify: Model User reviews the model to ensure usage is in accordance the Firmwide Model Risk Policy. Identify: Model User identifies if a waiver is required to enable the use of an unapproved model or an unapproved use of a model. Action: Model User submits a waiver request in order to obtain pre-approvals from Model Governance Group (Model Manager and Model Risk Officer). MM & MRO obtain final signoff from the Model Risk Governance and Review Firm Risk Executive (MRGR FRE). Supervision: No prescribed step. Governance: Weekly waiver report produced by MGG /MO around waivers V Limits. Monthly stats of waivers are produced by MGG for BCC Citations (Policy / Procedure): https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B78B57760-2502-412B-BEA6-A2E156C53982%7D https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B03C0E185-861E-442D-A645-F151AFC32EAB%7D\\nObjective: To detect the risk of erroneous or untimely estimations by obtaining and evidencing required approvals and/or authorizations of transactions and activities as directed in the firm's policies and procedures.\\nN/A\\nN/A\\nSample Size Guidance: 20 Substantiation Process (Tests): 1.Review 20 waiver requests. 2.Confirm appropriate approvals and supportive documentation is in place. 3.Check weekly report is in place. 4. Review BCC to ensure waiver totals are contained in the monthly decks.\",\n risks: [{\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1372',\n topMatchCertainty: '0.6929324269',\n clusterId: 'contract - based waiver request management for firmwide model risk management',\n items: [{\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6929324269,\n name: 'Model Usage Review'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6512246132,\n name: 'Model Approval Review'\n }, {\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6475257874,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.6363251209,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.6190246344,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.6107003689,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5964785218,\n name: 'Model Inventory Review'\n }, {\n ccode: '1592',\n cfrequency: 'Event-Driven',\n cid: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5764892697,\n name: 'Model Risk Reporting Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5706543326,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B1',\n score: 0.5495231748,\n name: 'Credit Risk Limit Review (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '193.1 DEA Oversight',\n code: 'JPM-CTRL-AF0B0C',\n id: 'JPM-CTRL-AF0B0C',\n description: \"193.1 DEA Oversight | Objective: To prevent the risk of:\\n1. Client trading errors by ensuring that non-contractual documentation describing how E-Trading Activities operate is provided on a timely basis to clients and the content is clear and accurate\\n2. Providing direct electronic access to clients who lack sufficient numbers of staff with the necessary skills by ensuring appropriate due diligence of new and existing clients takes place\\n| Substantiation: 1. Verify that the annual review processes have been completed\\n2. Verify with BCM that a review of the annual review process itself has been performed and relevant changes implemented / planned\\n3. For a sample of DEA clients, obtain and review samples of Due Diligence Questionnaire; verify completeness and ensure that a completed DDQ has been returned by the client and that any noted concerns have been discussed with the client and remedial actions taken / planned\\n4. Review online approved activity details and confirm a process has been executed to identify risks inherent within that activity and confirm risk engagement in that activity and in defining controls\\n5. Review online 'Activity Controls' documentation for selected activities via the toolkit and confirm Front Office approval in establishing control value\\n6. For the listed controls, review the 'Control Category' field for the applicable values\\n7. Confirm that a process has been executed within the last 12 months to review control value settings\\n| Process: • Ensure that a due diligence assessment of prospective DEA clients is conducted to ensure that they meet the requirements set out in relevant regulation and relevant trading venue rules.\\n• Ensure that a periodic review of our DEA assessment process itself is performed and that a review of DEA clients is performed (using the DDQ). EMEA only: Due Diligence Questionnaire is completed for DEA (Direct Electronic Access) clients.\\nNA\\nNA\\nNA\",\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7853977084',\n clusterId: 'ensuring compliance with non - contractual e - trading activities : a review of',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7853977084,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '774',\n cfrequency: 'Annually',\n cid: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7829392552,\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6328688264,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '1658',\n cfrequency: 'Event-Driven',\n cid: '0EE976F1-FEF4-4723-A4AE-73564C95EA43',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6327903271,\n name: 'Client Classification and Validation Review (Compliance)'\n }, {\n ccode: '1410',\n cfrequency: 'Event-Driven',\n cid: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6327661276,\n name: 'KYC Due Diligence Monitoring'\n }, {\n ccode: '1459',\n cfrequency: 'Event-Driven',\n cid: '28105F78-227E-416D-B362-5EAE86E3BF0B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6237886548,\n name: 'Client Documentation Review'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.616807878,\n name: 'Client System Access Review'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6157857776,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1225',\n cfrequency: 'Event-Driven',\n cid: 'B75A810B-E78D-4399-BFEC-7BE256816A82',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6140353084,\n name: 'eTrading Client Onboarding Review'\n }, {\n ccode: '1412',\n cfrequency: 'Event-Driven',\n cid: '76C80398-E5E5-461D-8601-9BEB455A52D9',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6078720093,\n name: 'Client Classification and Validation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-20D097',\n id: 'JPM-CTRL-20D097',\n description: '262.1 Order / Message Throttle Limit |\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective\\n(2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months ...',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7125555873',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7125555873,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6895509362,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6854216456,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6781346202,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6726008058,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6702284217,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6597982049,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6510531306,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6491927505,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6483586431,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-41A341',\n id: 'JPM-CTRL-41A341',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7032060623',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7032060623,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.655444622,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.652507484,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.651448667,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6510605216,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6388061047,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6343992352,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6331974864,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6236397028,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.623190701,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-AB3F93',\n id: 'JPM-CTRL-AB3F93',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nSubstantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.6993572116',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6993572116,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6976773143,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6742159724,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6687614322,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6671490669,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6636897922,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6615075469,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6461178064,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6420022845,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6411715746,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '190.1 It Outsourcing and procurement',\n code: 'JPM-CTRL-71FE11',\n id: 'JPM-CTRL-71FE11',\n description: '190.1 It Outsourcing and procurement | Business Control Management\\n| Description:\\n/Review: Review of suppliers that will use the Due Diligence Questionnaire (DDQ)\\n/Identify: Identify in-scope vendor controls, procedures, or monitoring are relied upon to mitigate against market disruption and Vendor change management processes are relied upon\\n/Action: In-scope suppliers are required to complete the DDQ and refresh their responses annually (once each calendar year).\\nE-Trading BCM distributes questionnaire to vendors, review the responses with support as needed from SME teams (e.g. Technology), and escalates non-compliance by suppliers to relevant E-Trading Activity Owner(s)\\nE-Trading BCM has to confirm completeness of in-scope supplier DDQs. Relevant risk acceptances and gaps are identified and tracked to completion.\\n/Supervise: E-Trading BCM confirm in-scope suppliers with ECF Chairs.\\n/Govern: Approval and Annual Assessment Approval of completion of the annual process will be requested from the impacted E-Trading Activity owners, confirmation of approval will be provided to the relevant E-Trading Control Forums (ECF), and results incorporated into the MiFID II E-Trading Annual Self-Assessment.\\n| Objective: Ensure that JPMC remains fully responsible for our obligations to meet MiFID II and UK Regulation where we outsource or procure software or hardware used in algorithmic trading activities. Ensure JPMC has sufficient knowledge and necessary documentation to ensure effective compliance with the obligation in relation to any procured or outsourced hardware or software used in algorithmic trading.\\nPost Trade\\nAnnually\\n| Substantiation:\\n1 Request ECF Chair confirmation of in-scope suppliers\\n2 Confirm that DDQs have been distributed ,responses received and relevant gaps / risk acceptances have been raised\\n3 Request approval of the annual process and presentation to ECF',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1705',\n topMatchCertainty: '0.6588312984',\n clusterId: 'e - trading, vendor controls, and the due diligence question',\n items: [{\n ccode: '1705',\n cfrequency: 'Annually',\n cid: '4C84190E-DE33-4063-A9CC-17A0B5303B90',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.6588312984,\n name: 'eTrading Third-Party Provider Due Diligence Questionnaire Review'\n }, {\n ccode: '1709',\n cfrequency: 'Annually',\n cid: '31E3D77E-F748-4477-B117-99DC5AD590B0',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6248124242,\n name: 'Approved Distributor Due Diligence Review'\n }, {\n ccode: '1745',\n cfrequency: 'Monthly',\n cid: 'B84EDD2A-5096-4155-8E42-EF14BEB004EA',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.5917310119,\n name: 'Third-Party Service Provider Monitoring'\n }, {\n ccode: '428',\n cfrequency: 'Event-Driven',\n cid: '787BC173-9BBF-48EB-A434-13C05195652C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.5789862275,\n name: 'Benchmark Third-Party Service Provider Monitoring'\n }, {\n ccode: '1830',\n cfrequency: 'Monthly',\n cid: 'D030A399-6D71-4995-9BC8-48527D7AF6AA',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.5641360879,\n name: 'Third-Party Performance Review (Technology)'\n }, {\n ccode: '523',\n cfrequency: 'Event-Driven',\n cid: 'BF1592D0-C9AF-4CC8-9D48-0CC9A15B2204',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.5554141998,\n name: 'Counterparty Onboarding Review'\n }, {\n ccode: '1410',\n cfrequency: 'Event-Driven',\n cid: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2',\n score: 0.5547689199,\n name: 'KYC Due Diligence Monitoring'\n }, {\n ccode: '1232',\n cfrequency: 'Annually',\n cid: 'A3053F3E-5B45-4097-BC24-281F9CD70CA7',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B1',\n score: 0.5504602194,\n name: 'Benchmark Third-Party Service Provider Review'\n }, {\n ccode: '1762',\n cfrequency: 'Annually',\n cid: '7B1E2749-1293-4A79-9485-E8C2880343E2',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B1',\n score: 0.5443394184,\n name: 'Third-Party Service Provider Review'\n }, {\n ccode: '1000',\n cfrequency: 'Event-Driven',\n cid: '88F055B9-A4D4-4687-96C6-87F58693846F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5426596999,\n name: 'Transaction Due Diligence Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-62B6FD',\n id: 'JPM-CTRL-62B6FD',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Description (Control Execution Steps):\\n/ Review: The Emergency Shutdown procedures are reviewed at a minimum on an annual basis or in response to changes in the e-trading activity.\\n/ Identify: The review identifies new / amended / decommissioned e-trading activities (including new servers and data centres), associated scripts used on hosts to identify and terminate processes, related re-enablement procedures and designation of authorised personnel and associated roles and responsibilities.\\n/ Action: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n/ Governance: Presentation of completion to ECF.\\n| Objective: To prevent the risk of E-Trading Critical Activity Failure as a result of implementing electronic trading activities that fail to operate as expected resulting in hedging or other execution failures and in extremis runaway e-Trading activity.\\nPre Trade\\n| Annually\\n| Control Sub- stantiation: 1. Obtain list of e-trading activities from ECF Toolkit.\\n2. Select sample of 1 activity per LOB.\\n3. Test Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test.\\n4. ESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)\\n5. Invocation: Check via enquiry if any invocation occurred in the prior 12 months and if so request documentation and test to ensure all minimum requirements inclusive of risk management and trading resumption were adequately covered, that the invocation was presented at the ECF and that any actions / follow ups were documented (e.g as issues and action plans).\\n/ Sample Size Guidance: Presentation of completion to ECF.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.6659396887',\n clusterId: 'emergency shutdown procedures for e - trading',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6659396887,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6536720395,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6163080335,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.615468204,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6059994698,\n name: 'End of Day Trade Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6015322804,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5876284242,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1367',\n cfrequency: 'Daily',\n cid: 'D9B43802-EEB1-43E4-86CA-8E52D48583A2',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5872120261,\n name: 'End of Day Trade Review (AM)'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5853586197,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.58051759,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-132399',\n id: 'JPM-CTRL-132399',\n description: '245.1 Off Market Limits\\n| Objective: To prevent the risks of E-Trading Activities sending off-market orders / receiving off-market fills by:\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '904',\n topMatchCertainty: '0.7465596199',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7465596199,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7437992096,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7384297252,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7108287215,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.7098895907,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.7017720342,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6938138008,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.691190064,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6888192296,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6884396076,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-5EBCF4',\n id: 'JPM-CTRL-5EBCF4',\n description: '275.1 Profit & Loss Limit | Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of realized P&L. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. | Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month.\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '748',\n topMatchCertainty: '0.7084335685',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7084335685,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6543178558,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6542384028,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6534095407,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6517718434,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1382',\n cfrequency: 'Daily',\n cid: '898099C9-D208-47B8-AF40-FEF8064BC069',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.651239574,\n name: 'Daily P&L and Attribution Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6507971883,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6456102133,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6326708198,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6325545311,\n name: 'Trade Surveillance - Price Manipulation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-BBFE7C',\n id: 'JPM-CTRL-BBFE7C',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. |\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7124016881',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7124016881,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7100667357,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6904994845,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6814961433,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6741555333,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6674714684,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6654925942,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6635945439,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6624128222,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6526505351,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '505.1 E Trading Activity Controls Training APAC Eq',\n code: 'JPM-CTRL-EFD3C8',\n id: 'JPM-CTRL-EFD3C8',\n description: \"505.1 E Trading Activity Controls Training APAC Equities | Who: Business Control Management\\n| Process: Review: APAC E-Trading BCM/FDC BCM (Singapore) on an annual basis co-ordinate \\n•\\tReview of previous year's Asia Algo Trading Training content with Compliance, Algo Owners, Technology to ensure learning material is up to date, \\n•\\tReview of the population for recipients of this mandatory training. Sales, Trading, Technology, Risk, Compliance, Business Control Management & Legal will provide input into the list of persons to undertake the training. In addition E-Trading BCM performed secondary cross check against - OMS users, Pyxis users & ECF toolkit users\\n| Identify: AAPAC E-Trading BCM/FDC BCM (Singapore) will identify any changes required to the training materials or additions/deletions/exemptions to the population to undergo this training.\\n| Action: APAC E-Trading BCM/FDC BCM (Singapore) will action any changes to population to undertake training or changes to training. They will then send both to the Training Team to onboard. \\n| Governance: N/a as falls within the mandatory training scope \\n| Supervision: N/a as falls within the mandatory training scope\\n| Objective: To prevent the risk of not establishing and operating a robust e-Trading governance program with overall responsibility for identifying new and emerging e-Trading risks, approving and reviewing new and existing activities and control values, maintaining and reviewing inventories of critical activities and supporting components, overseeing access and reviewing key operating and risk / control metrics by providing training to Equities APAC for e trading actvities they partake in\\n| Where: Pre Trade\\nWhen: Annually\\n| Substantiation: Request evidence X APAC equities of annual review of Asia Algo training doc and also the population of recipients. Check that reviewers in Review section attended meetings inclusive of secondary check by E trading BCM and minutes of any actions were obtained. \\nFor any changes required check evidence that those changes occurred and that the confirmed training doc and list of participants were provided to the training team to onboard.\",\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-0729BD'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1661',\n topMatchCertainty: '0.7246846557',\n clusterId: '505.1 E Trading Activity Controls Training APAC Eq',\n items: [{\n ccode: '1661',\n cfrequency: 'Annually',\n cid: 'EAD7124C-3514-4B06-800B-37B5BD512041',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7246846557,\n name: 'Mandatory Training Review (Compliance)'\n }, {\n ccode: '1820',\n cfrequency: 'Monthly',\n cid: 'D9BD6DD0-2CE4-416F-A7AD-66E2E9AB2E03',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6892901063,\n name: 'Mandatory Training Review (Operations)'\n }, {\n ccode: '1819',\n cfrequency: 'Annually',\n cid: '18A833D8-94E8-481A-AD9C-16BBFC787D9D',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6813091636,\n name: 'Training Material Content Review (Compliance)'\n }, {\n ccode: '1736',\n cfrequency: 'Annually',\n cid: '36F5214E-A5D8-4A1B-969C-1A1C7BE5C87F',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6743089557,\n name: 'Mandatory Training Review'\n }, {\n ccode: '1064',\n cfrequency: 'Annually',\n cid: '195F6554-1FFD-4E79-B125-242068EA0881',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6680079103,\n name: 'eTrading Activity Training Review'\n }, {\n ccode: '975',\n cfrequency: 'Event-Driven',\n cid: '50E2FDB9-0D51-42C6-890F-8CD7ACF2DE85',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6619725823,\n name: 'Mandatory Training Review'\n }, {\n ccode: '1356',\n cfrequency: 'Event-Driven',\n cid: '7A3270DC-B228-4D2C-923E-A3239AA79C25',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6605195403,\n name: 'Mandatory Training Review'\n }, {\n ccode: '1075',\n cfrequency: 'Annually',\n cid: '4F7F2816-83AE-41F0-A5B1-0437F6C253BA',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6583442092,\n name: 'Mandatory Training Review (IT)'\n }, {\n ccode: '1790',\n cfrequency: 'Event-Driven',\n cid: 'BB0D691F-5672-4BDD-999B-B0904FCD4F63',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6515884399,\n name: 'Training Material Content Review'\n }, {\n ccode: '1748',\n cfrequency: 'Annually',\n cid: '80D8A3AE-2A3F-437C-BC6D-8C870C6CEA15',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6371323466,\n name: 'Vulnerable Customer Training Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-A33B86',\n id: 'JPM-CTRL-A33B86',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) orders not immediately filled killed or cancelled (2) sliced child orders split from a parent order when using an execution strategy (3) max overfill alerts (4) unexpected fills (5) unmatched trades (6) Order to Trade Ratio (OTR) to ensure the ratio is in line with venue requirements, including specified timeframes (7) order lifecycle processing alerts provided by IT (8) execution parameters agreed with clients on orders submitted (9) orders with duplicative order identifiers and characteristics.\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1077',\n topMatchCertainty: '0.74508816',\n clusterId: 'monitoring and monitoring of e - trading activities',\n items: [{\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.74508816,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.727530539,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7163586617,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.7127946019,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '773',\n cfrequency: 'Event-Driven',\n cid: 'B7EE081B-512F-486C-9EA7-102F1EADBA9A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6878549457,\n name: 'eTrading Trade Flow Validation - Order-to-Trade Ratio Monitoring'\n }, {\n ccode: '759',\n cfrequency: 'Event-Driven',\n cid: '0F7B914A-122F-4DB6-9FCD-37FDD9964513',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6862766147,\n name: 'eTrading Trade Flow Validation - Unexpected Fills Review'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6857313514,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6852703094,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '766',\n cfrequency: 'Monthly',\n cid: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6763882637,\n name: 'eTrading Trading Statistics Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6691368222,\n name: 'Trade Surveillance - Large Order Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-FA6383',\n id: 'JPM-CTRL-FA6383',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\n\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert\\n(2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n(3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7240783572',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7240783572,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7191343904,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.694747746,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.68648386,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6825699806,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6814138889,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6756404042,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6741306186,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6653990746,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6609342694,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-EF8FC4',\n id: 'JPM-CTRL-EF8FC4',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n(1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7143779397',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7143779397,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6641718745,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6630551815,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6612026095,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6598822474,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6470758915,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6449221373,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6419294477,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6329927444,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6316683888,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-EA3172',\n id: 'JPM-CTRL-EA3172',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert].\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events.\\nGovernance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7037184834',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7037184834,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6574639082,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6556114554,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6526834369,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6508722901,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6385160089,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6316719055,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6298513412,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6252721548,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6237154603,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-24CB31',\n id: 'JPM-CTRL-24CB31',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) orders not immediately filled killed or cancelled (2) sliced child orders split from a parent order when using an execution strategy (3) max overfill alerts (4) unexpected fills (5) unmatched trades (6) Order to Trade Ratio (OTR) to ensure the ratio is in line with venue requirements, including specified timeframes (7) order lifecycle processing alerts provided by IT (8) execution parameters agreed with clients on orders submitted (9) orders with duplicative order identifiers and characteristics.\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1077',\n topMatchCertainty: '0.7600064874',\n clusterId: 'monitoring and monitoring of e - trading activities',\n items: [{\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7600064874,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7439305186,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7249221802,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.720282793,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7018094063,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '759',\n cfrequency: 'Event-Driven',\n cid: '0F7B914A-122F-4DB6-9FCD-37FDD9964513',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6947331429,\n name: 'eTrading Trade Flow Validation - Unexpected Fills Review'\n }, {\n ccode: '773',\n cfrequency: 'Event-Driven',\n cid: 'B7EE081B-512F-486C-9EA7-102F1EADBA9A',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6939983368,\n name: 'eTrading Trade Flow Validation - Order-to-Trade Ratio Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6926147342,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '766',\n cfrequency: 'Monthly',\n cid: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6893703341,\n name: 'eTrading Trading Statistics Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6891655326,\n name: 'Trade Surveillance - Large Order Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-CE2FAF',\n id: 'JPM-CTRL-CE2FAF',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7019639015',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7019639015,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6934441924,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6712842584,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6639749408,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6636484265,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6607288718,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6582579613,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6416258812,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6367624402,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6358332038,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-8E2CE2',\n id: 'JPM-CTRL-8E2CE2',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7078239322',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7078239322,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6959760785,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6713643074,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6655352712,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6650558114,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6593806148,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6585794091,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6430351138,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6407783031,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.637127161,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-B00C37',\n id: 'JPM-CTRL-B00C37',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7094199657',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7094199657,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.663143456,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6593741775,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6589520574,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6574216485,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6451714635,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6412377357,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.639549315,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6299764514,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6288154721,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '269.1 Market Dislocation',\n code: 'JPM-CTRL-CE7DCB',\n id: 'JPM-CTRL-CE7DCB',\n description: '269.1 Market Dislocation | Objective: To prevent the risk of streaming inaccurate bids / offers to clients in a market dislocation event by disabling pricing where observed changes in market prices materially differ from implied or expected price levels | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of market dislocations [e.g. gapped markets, rapid moves, or reversals]. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '771',\n topMatchCertainty: '0.6957188249',\n clusterId: 'review of controls for intraday market dislocations',\n items: [{\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6957188249,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6931445003,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '880',\n cfrequency: 'Daily',\n cid: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6586046815,\n name: 'Market Data Jump Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.649138689,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6479856968,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6429371834,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.642647028,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.640960753,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6401508451,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6395440102,\n name: 'eTrading Alert Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-E46FC1',\n id: 'JPM-CTRL-E46FC1',\n description: '245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by: \\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-356043'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '904',\n topMatchCertainty: '0.7470700145',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7470700145,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7330412269,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7210071683,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7042617798,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6989191175,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6902194619,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6793324947,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.677587986,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6770865917,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6760169864,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '014.1 Trade / Order Capture Limits',\n code: 'JPM-CTRL-912CEF',\n id: 'JPM-CTRL-912CEF',\n description: '014.1 Trade / Order Capture Limits | Objective: CONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN',\n risks: [{\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-BE96DC'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-BE96DC'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }, {\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7721762657',\n clusterId: 'control to rewrite limits',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7721762657,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7287435532,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7262379527,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6963831782,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6846782565,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6737827659,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6671695113,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6664424539,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.659478724,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6586441398,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '241.1 E-Trading Client Pricing Differentiation',\n code: 'JPM-CTRL-85DE89',\n id: 'JPM-CTRL-85DE89',\n description: \"241.1 E-Trading Client Pricing Differentiation | Business Control Management\\n| Description (Control Execution Steps) : \\n/Review: The E-Commerce Best Execution Committee reviews on a bi-monthly basis electronic trading desk's aggregated metrics containing: \\na. The number of liquidity charge amendments applied to clients at the highest and most relevant point of client aggregation (e.g. UCN, SPN, Account Group, CASSII, etc.) with individual client names or identifiers masked\\nb. The impact of differentiation changes (e.g. trade volumes, hit ratios, or yield data (P&L / volume)).\\n/Identify: The E-Commerce Best Execution Committee is required to identify any unexpected thematic changes or results where a newly applied tier is inappropriate or inaccurate\\n/Action: The E-Commerce Best Execution Committee is required to identify and track via the Committee any corrective actions from the review of CPD metrics\\n/Supervise: CIB Markets trading businesses are required to identify all activities for which CPD Guidelines are applicable and confirm that aggregated metrics are included in the E-Commerce Best Execution Committee.\\n/Govern: Updates to the CPD Guidelines must be reported into the Digital Markets & E-Commerce BCC\\n| Objective: To detect and address inappropriately differentiated liquidity charges for electronic trading activities that auto-price and auto-accept client transactions and the possible resulting reputational impact.\\nPost Trade\\nMonthly\\n| Substantiation: 1\\tSelect 3 BEC decks and ensure that E Trading Client differentiation metrics are included\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tCheck if there any corrective actions noted and that appropriate follow up has taken place\",\n risks: [{\n riskName: 'Unfair Pricing and Fees',\n riskCode: 'JPM-RISK-C146CF'\n }],\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1782',\n topMatchCertainty: '0.690132916',\n clusterId: 'e - commerce best execution committee reviews',\n items: [{\n ccode: '1782',\n cfrequency: 'Monthly',\n cid: '2F88E29E-D473-4937-9BAF-573DE24B7E74',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.690132916,\n name: 'Best Execution - Governance Forum Review'\n }, {\n ccode: '1779',\n cfrequency: 'Annually',\n cid: '18162F27-8CCC-4926-A0AC-A34BBECA3281',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6374734044,\n name: 'Best Execution - Scoping and Obligations Review '\n }, {\n ccode: '1780',\n cfrequency: 'Daily',\n cid: 'BD569B4E-96D1-47D3-A0B9-7035FCA6B0E3',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6222865582,\n name: 'Best Execution - Exception Review'\n }, {\n ccode: '884',\n cfrequency: 'Event-Driven',\n cid: '1080D672-9877-4551-975E-1A3E144D6069',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6194108129,\n name: 'Client Tiering Review'\n }, {\n ccode: '1778',\n cfrequency: 'Quarterly',\n cid: 'F4EF7686-7915-4704-B03C-7B53743375C0',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6172711253,\n name: 'Best Execution - Regulatory Reporting Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6157497764,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '1355',\n cfrequency: 'Monthly',\n cid: '092E8536-3612-4168-BA2D-FB93C5CC25F7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B1',\n score: 0.6097251773,\n name: 'Best Execution (AM)'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5954958797,\n name: 'Client Activity Review'\n }, {\n ccode: '1083',\n cfrequency: 'Daily',\n cid: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.5928489566,\n name: 'Commodity Exchange Metrics Review'\n }, {\n ccode: '1026',\n cfrequency: 'Daily',\n cid: '93E885A7-2720-4245-AD47-143B7CBF6B1A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5908879638,\n name: 'Pricing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-791D0B',\n id: 'JPM-CTRL-791D0B',\n description: '262.1 Order / Message Throttle Limit |\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert].\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events.\\nGovernance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7035266757',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7035266757,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6808719635,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6777229309,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6736386418,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6640176177,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.658880949,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.655035913,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6449818015,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6435475945,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6413009167,\n name: 'Trade Surveillance - Price Manipulation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '049.1 Waivers',\n code: 'JPM-CTRL-84E6A2',\n id: 'JPM-CTRL-84E6A2',\n description: \"049.1 Waivers /Business Control Management\\nObjective: To detect the risk of erroneous or untimely estimations by obtaining and evidencing required approvals and/or authorizations of transactions and activities as directed in the firm's policies and procedures.\\nDescription (Control Execution Steps): Identify: Model User reviews the model to ensure usage is in accordance the Firmwide Model Risk Policy. Identify: Model User identifies if a waiver is required to enable the use of an unapproved model or an unapproved use of a model. Action: Model User submits a waiver request in order to obtain pre-approvals from Model Governance Group (Model Manager and Model Risk Officer). MM & MRO obtain final signoff from the Model Risk Governance and Review Firm Risk Executive (MRGR FRE). Supervision: No prescribed step. Governance: Weekly waiver report produced by MGG /MO around waivers V Limits. Monthly stats of waivers are produced by MGG for BCC Citations (Policy / Procedure): https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B78B57760-2502-412B-BEA6-A2E156C53982%7D https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B03C0E185-861E-442D-A645-F151AFC32EAB%7D\\nN/A\\nN/A\\nSample Size Guidance: 20 Substantiation Process (Tests): 1.Review 20 waiver requests. 2.Confirm appropriate approvals and supportive documentation is in place. 3.Check weekly report is in place. 4. Review BCC to ensure waiver totals are contained in the monthly decks.\",\n risks: [{\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1372',\n topMatchCertainty: '0.6905856133',\n clusterId: 'detecting and preventing erroneous and untimely estimations of risk',\n items: [{\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6905856133,\n name: 'Model Usage Review'\n }, {\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6760270596,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6628950238,\n name: 'Model Approval Review'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.6522875428,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.6164969802,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.6161064506,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5965650082,\n name: 'Model Inventory Review'\n }, {\n ccode: '1592',\n cfrequency: 'Event-Driven',\n cid: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5945872664,\n name: 'Model Risk Reporting Review'\n }, {\n ccode: '1170',\n cfrequency: 'Quarterly',\n cid: '4B525F91-D2E5-457E-B6FB-2D9AE753E3B1',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5628156066,\n name: 'Prepayment Risk Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-e',\n score: 0.5447371602,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-334B6F',\n id: 'JPM-CTRL-334B6F',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7054727674',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7054727674,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6590511799,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6571643949,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6566672325,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6536080837,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6387940049,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6368040442,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6341979504,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6266656518,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6232264638,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '014.1 Trade / Order Capture Limits',\n code: 'JPM-CTRL-FE036A',\n id: 'JPM-CTRL-FE036A',\n description: '014.1 Trade / Order Capture Limits | Objective: CONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN\\nCONTROL TO BE REWRITTEN',\n risks: [{\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-BE96DC'\n }],\n type: 'Preventative',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7800719142',\n clusterId: 'control to rewrite limits',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7800719142,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7372279167,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7308200002,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.7053135037,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6921264529,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6863143444,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6817108989,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6762319207,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6714884639,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.663508594,\n name: 'Market Risk Limits Adherence (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '159.1 E-Trading Stress testing',\n code: 'JPM-CTRL-002034',\n id: 'JPM-CTRL-002034',\n description: '159.1 E-Trading Stress testing | Who: Business Control Management\\n| Process:\\n- Review: 1. Stress test standards must be reviewed min annually. This must include review of Stress test documentation, R&R and include test scenarios and frequency.\\n2. Results of review must be documented, tracking any modification to the standard , be reviewed by key stakeholders and presented in ECF for approval\\n- Identify: 3. Stress Test must be performed at least annually.\\na. This must be documented and take into account.\\nb. Use case/test case.\\nc. Expected Impact to upstream/downstream systems, processes or jobs that need to be verified during the test. \\nd. Potential impact to external processes or venues.\\n4. Tests need to be performed at min:\\na. Messaging volume tests- highest no of messages during last 6 months multiplied by 2\\nb. Trade volume tests- highest volume of trading reached during previous 6 months multiplied by 2\\n5. Testing Scope - should cover ability of electronic Trading system to handle peak messages and trades, Scenarios must cover kill functionality, Surveillance , Business Continuity, Pre Trade controls, Real time monitoring, Post Trade controls\\n- Action: FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval\\n- Supervision: No prescribed supervision\\n- Governance: Results must be presented at ECF (Electronic Control Forum).\\n| Objective: To prevent the risk of a critical trading application outage resulting from excessive trading volume and message rates exceeding application, order routing or market connectivity layer tolerances through provision of sufficient capacity headroom to be able to accommodate higher message rates or any other parameters due to increased volume / market stress events (e.g. 2 x max message rate)\\nPre Trade\\nAnnually\\n| Substantiation Steps:\\n1) Request documentation for Stress Test standards review. Ensure it includes Stress test documentation, R&R and include test scenarios and frequency.\\n2) Request ECF presentation to ensure results of above have been presented and ensure approval of any changes have been received as per minutes.\\n3) Request evidence of min annual stress test and ensure all elements mentioned in above process steps are covered. This must also include any follow up actions\\n4) FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1601',\n topMatchCertainty: '0.7761423588',\n clusterId: 'review of stress test standards for e - commerce',\n items: [{\n ccode: '1601',\n cfrequency: 'Monthly',\n cid: 'FD6EDC20-13D3-4464-ABBA-101714196632',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7761423588,\n name: 'Stress Testing Review'\n }, {\n ccode: '1703',\n cfrequency: 'Semi-Annually',\n cid: 'DD829318-62F2-427F-80AD-D06C71EBAC43',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7676874995,\n name: 'eTrading Stress Test Plan And Results Review'\n }, {\n ccode: '1599',\n cfrequency: 'Quarterly',\n cid: 'D0C56474-2C3C-4269-9C3B-51A2331F1CCC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6910069585,\n name: 'Stress Scenario and Market Shocks Results Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6046774983,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5870411992,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5835101604,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1818',\n cfrequency: 'Annually',\n cid: '30A969B6-A33F-4290-B5F2-A6843BBB7B23',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.5833194852,\n name: 'Crisis Management Plan Testing'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5826413631,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1840',\n cfrequency: 'Event-Driven',\n cid: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5774108768,\n name: 'eTrading Algorithm Testing Methodology Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.568693161,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '167.1 E-Trading Activity Approval',\n code: 'JPM-CTRL-A52834',\n id: 'JPM-CTRL-A52834',\n description: '167.1 E-Trading Activity Approval | Business Control Management\\n| Description (Control Execution Steps) :\\n/Review: Relevant stakeholders e.g. Front Office, Technology, Market Risk, Credit Risk, CCOR review E-Trading activities in the ECF toolkit submitted for approval \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n/Identify: Stakeholders identify whether their approval requirements have been met \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n/Action: Relevant stakeholders approve new Activities or changes requiring approval to existing Activities via in ECF Toolkit workflow. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n/Supervise: All approvals are included in the Pipeline slide within ECF materials \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n/ Govern: The ECF Chair will ensure all approvals are included in the Pipeline slide within ECF materials\\n| Objective: To prevent the risk of implementing E-Trading Activities that fail to operate as expected by producing supporting documentation and engaging stakeholders and obtaining their approval to implement those activities prior to trading commencing.\\nPre Trade\\nTransactional (ad-hoc)\\n| Substantiation:\\n1\\tDown the inventory audit trail from ECF Toolkit to identify approvals within the sample timeframe\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tRelevant ECF decks and confirm sample approvals were included in the Pipeline slide of in the ECF deck.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1712',\n topMatchCertainty: '0.6175071597',\n clusterId: 'necessary and sufficient parts of e - trading activities in the ecf tool',\n items: [{\n ccode: '1712',\n cfrequency: 'Event-Driven',\n cid: 'A55C55A1-71A7-4119-A9E1-3BEBA4C25685',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6175071597,\n name: 'Reputational Risk Review'\n }, {\n ccode: '704',\n cfrequency: 'Annually',\n cid: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.612139523,\n name: 'eTrading Algorithm Inventory Review'\n }, {\n ccode: '956',\n cfrequency: 'Monthly',\n cid: '04EFC681-272B-4750-8235-BEFF46F52A81',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6064484715,\n name: 'Fund Manager Trade Authorisation Review'\n }, {\n ccode: '1074',\n cfrequency: 'Event-Driven',\n cid: '9067FD90-7EC1-4508-B9C3-83D55AAE1300',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6057741046,\n name: 'Appropriate Staff Review'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5994305015,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1222',\n cfrequency: 'Event-Driven',\n cid: 'E65975D2-2A70-448A-A33B-DDAE4E27556A',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.5923830867,\n name: 'Operational Risk Pre Go-live Review'\n }, {\n ccode: '1447',\n cfrequency: 'Daily',\n cid: '2807C7D0-7821-4BE5-829D-342C27D27CCE',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5919904113,\n name: 'Trade Confirmation Processing Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5918635726,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1254',\n cfrequency: 'Event-Driven',\n cid: 'D55E4191-4DC7-4413-93A1-B4023074C503',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5903104544,\n name: 'Large Trade Review'\n }, {\n ccode: '678',\n cfrequency: 'Event-Driven',\n cid: '0D33D60C-4A40-4D9E-9F72-473810DB4168',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5899785161,\n name: 'New Product Approval'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-2D917B',\n id: 'JPM-CTRL-2D917B',\n description: '245.1 Off Market Limits\\n| Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing|\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action\\n[e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite\\n(2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7308664322',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7308664322,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.72726053,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7117314339,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7039544582,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6899673343,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6877922416,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6779530644,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6740233302,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6731169224,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6726257205,\n name: 'Market Making Spread Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-2FD2CB',\n id: 'JPM-CTRL-2FD2CB',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7144433856',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7144433856,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7124428153,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6871370673,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6779279113,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6712110639,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6653696895,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6612043977,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6610963345,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6581556201,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6473326087,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-8AFC6B',\n id: 'JPM-CTRL-8AFC6B',\n description: '245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7224674821',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7224674821,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7180418968,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6995360851,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6929254532,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6861640811,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6796520352,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6710388064,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6689751744,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6684238911,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.668210268,\n name: 'Market Risk Limits Adherence (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '269.1 Market Dislocation',\n code: 'JPM-CTRL-134BA1',\n id: 'JPM-CTRL-134BA1',\n description: '269.1 Market Dislocation\\n| Objective: To prevent the risk of streaming inaccurate bids / offers to clients in a market dislocation event by disabling pricing where observed changes in market prices materially differ from implied or expected price levels\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of market dislocations [e.g. gapped markets, rapid moves, or reversals]. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\nCitations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1797',\n topMatchCertainty: '0.6901565194',\n clusterId: 'review of controls for intraday market dislocations',\n items: [{\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6901565194,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6887097359,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6462103128,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '880',\n cfrequency: 'Daily',\n cid: '2E62742F-25DB-46FF-B6BA-38443527B57F',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6441597342,\n name: 'Market Data Jump Review'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6439287066,\n name: 'Stale Market Data Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6423146725,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6361677647,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6351333261,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6340693831,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6333515644,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '049.1 Waivers',\n code: 'JPM-CTRL-B5DC4E',\n id: 'JPM-CTRL-B5DC4E',\n description: \"049.1 Waivers /Business Control Management\\nDescription (Control Execution Steps): Identify: Model User reviews the model to ensure usage is in accordance the Firmwide Model Risk Policy. Identify: Model User identifies if a waiver is required to enable the use of an unapproved model or an unapproved use of a model. Action: Model User submits a waiver request in order to obtain pre-approvals from Model Governance Group (Model Manager and Model Risk Officer). MM & MRO obtain final signoff from the Model Risk Governance and Review Firm Risk Executive (MRGR FRE). Supervision: No prescribed step. Governance: Weekly waiver report produced by MGG /MO around waivers V Limits. Monthly stats of waivers are produced by MGG for BCC Citations (Policy / Procedure): https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B78B57760-2502-412B-BEA6-A2E156C53982%7D https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B03C0E185-861E-442D-A645-F151AFC32EAB%7D\\nObjective: To detect the risk of erroneous or untimely estimations by obtaining and evidencing required approvals and/or authorizations of transactions and activities as directed in the firm's policies and procedures.\\nNA\\nNA\\nSample Size Guidance: 20 Substantiation Process (Tests): 1.Review 20 waiver requests. 2.Confirm appropriate approvals and supportive documentation is in place. 3.Check weekly report is in place. 4. Review BCC to ensure waiver totals are contained in the monthly decks.\",\n risks: [{\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }, {\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1372',\n topMatchCertainty: '0.701590836',\n clusterId: 'contract - based waiver request management for firmwide model risk management',\n items: [{\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.701590836,\n name: 'Model Usage Review'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6526113749,\n name: 'Model Approval Review'\n }, {\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6509844661,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.6324138045,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.6180958748,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.615539968,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5964518785,\n name: 'Model Inventory Review'\n }, {\n ccode: '1592',\n cfrequency: 'Event-Driven',\n cid: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-e',\n score: 0.574141264,\n name: 'Model Risk Reporting Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5447120667,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1170',\n cfrequency: 'Quarterly',\n cid: '4B525F91-D2E5-457E-B6FB-2D9AE753E3B1',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5300364494,\n name: 'Prepayment Risk Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '011.1 Independent Risk Function',\n code: 'JPM-CTRL-18D5DF',\n id: 'JPM-CTRL-18D5DF',\n description: '011.1 Independent Risk Function | Objective: To detect the risk of not establishing or maintaining a robust and adequately staffed e-Trading supervisory function with clearly defined roles & responsibilities that ensure alerts are timely identified, escalated and disposition-ed in accordance with established procedures and protocols for incident management maintained and invoked in accordance with agreed protocols.\\n| Process: Review: Review ongoing monitoring of alerts generated by eTrading systems or platforms.\\n| Identify: Identify potential anomalies for review/challenge; these may be: issues related to order entry order quoting; or order execution generated by E-trading systems/platforms.\\n| Action: 1. Determine whether the alerts in question are necessary for escalation/challenge\\n2. Define next steps with relevant parties.\\n3. Agree timeframe for completion with relevant parties.\\n4. Affirm that a valid justification is provided and recorded for alerts presented in the escalation/challenge; including the ongoing monitoring of that exception as required by LOB specific procedures.\\n| Supervision: N/A\\n| Governance: Escalation to LOB ECF, further to LOC BCC / BCF as required by the nature of the alert.\\n| Substantiation: Sample size guidance: for alerts, 20 per LOB per test period, for ECF materials = 3 months per LOB. \\nA. Obtain copy of The procedures document and ensure it has been reviewed in the last 12 months and conforms to CIB procedure standards \\nB. Obtain evidence from relevant BCM team: \\na. For Cash EQ, i. Of the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nb. For F&O, i. i. obtain screen-grabs daily excel download of alerts and evidence of disposition of alerts by F&O ECS desk \\nOf the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nFor non-EQ, : obtain copies of alert emails generated and any follow-up email chain generated by that alert, ensure desk / second line engagement as relevant \\nC. Request 3 months ECF meeting materials demonstrating the reporting of alerts generated and trend analysis',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-0729BD'\n }],\n type: 'Detective',\n frequency: 'Weekly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.7699542046',\n clusterId: 'escalation / challenge of e - trading alerts : review of',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7699542046,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.72845608,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7024652362,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.7004725933,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1822',\n cfrequency: 'Annually',\n cid: '16A27AAA-7C22-44BF-BE7B-7C5906E0C174',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6984653473,\n name: 'eTrading Alert Effectiveness Metrics Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6965793967,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6871216893,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6788958907,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6741407514,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.6698191166,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-D43925',\n id: 'JPM-CTRL-D43925',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by contraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 mont',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6854879856',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6854879856,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.673420608,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6593441963,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6562955379,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6554677486,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6495581269,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.648575902,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6454508901,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.642857492,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6423304677,\n name: 'Market Risk Limits Review (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '559.1 Market Making Agreements APAC',\n code: 'JPM-CTRL-C60711',\n id: 'JPM-CTRL-C60711',\n description: '559.1 Market Making Agreements APAC | BCM.\\nTo detect the risk of not establishing a robust governance program that effectively oversees electronic trading risks and controls in accordance with regulatory expectations by benchmarking\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t.\\nReview:\"I) Option Market Making (Hong Kong): Review the weekly quote performance report produced by Middle Office\\nII) Warrant Business (Hong Kong and Thailand): Review quote performance report on monthly basis generated by EMM\\nIII) ETF (Japan): Review the ETF quote performance reports provided by TSE and produce a monthly summary report\\n\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify:\"I) Identify from the weekly report whether there are breaches/issues in meeting the market making obligations for quote performance \\nII) Identify from the monthly quote performance report whether there is breaches/issues in meeting the market making obligations for quote performance\\nIII) Identify from the TSE report whether there is breaches/issues in meeting the market making obligations for quote performance\\n\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nAction:\"I) If the desk expect that may potentially not meet the obligations, desk will take appropriate action, including decision to surrender the permit or change the quoting obligation \\nII) Monthly report will be submitted to Exchanges by Legal in Hong Kong and Middle Office in Thailand, the rationale will be specified in the report if any product not meeting the obligation\\nIII) Monthly report will be submitted to Compliance by front office, the rationale will be specified in the report if any product not meeting the obligation,\\n\\n\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nSupervise:\"I) Nil\\nII) Nil\\nIII) Nil\\n\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nGovern:\"I) Any breaches will be reported to the Quarterly Hong Kong Option Market Making Forum \\nII) Any breaches will be reported to the Monthly Warrant/CBBC governance meeting\\nIII) Any breaches will be reported to the Monthly Japan Equities governance meeting\"\\nPost Trade\\nMonthly\\n1\\tObtain samples of the weekly quote perfromance report (Option Market Making Hong Kong), monthly quote perfromance report (Warrant Business Hong Kong) and monthly quote perfromance reports (ETF Japan)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tCheck if breaches in market making obligations have been identified in each of the 3 reports\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tCheck that any instances of the desk potentially not meeting obligations have been actioned by either decision to surrender permit, or change quoting obligation\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tCheck if monthly reports have been submitted to Exchanges by Legal team in Hong Kong, and by Middle Office in Thailand along with the rationales specified\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n5\\tCheck that monthly report has been submitted to Compliance by FO along with rationale\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n6\\tCheck all breaches have been included in submissions to Quarterly Hong Kong Market Making forum, Monthly Warrant/CBBC governance meetings and monthly Japan Equities governance meeting',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '945',\n topMatchCertainty: '0.6925866008',\n clusterId: '559.1 Market Making Agreements APAC',\n items: [{\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6925866008,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B1',\n score: 0.627127707,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2',\n score: 0.6228683591,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6069765687,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2',\n score: 0.5896829367,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.5830017924,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1274',\n cfrequency: 'Quarterly',\n cid: 'CCE2D58C-87C8-4A8F-A3C0-C832EBFF4DB7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5743064284,\n name: 'Broker Performance Review'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.569743216,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.5690798163,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '700',\n cfrequency: 'Monthly',\n cid: 'E3BF0ED3-E160-471B-8CF6-D6D92FD9D9F0',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B1',\n score: 0.568772316,\n name: 'Trader Mandate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-8C0570',\n id: 'JPM-CTRL-8C0570',\n description: '275.1 Profit & Loss Limit\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits\\n| Process: Control Description\\nPrevent P&L associated with E-Trading Activity from exceeding pre-defined risk appetite level\\n\\nProcess Steps\\n1. Front Office/ LoB are responsible for identifying the risks inherent within E-Trading Activities and for meeting E-Trading Risk Management (ETRM) control requirements in order that the exposure to those risks is constrained\\n2. Front Office are responsible for documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n3. Front Office / LoB are responsible for setting limit values for the control in accordance with:\\n(i) any applicable LoB SOPs setting out the limit setting methodology\\n(ii) any outer bounds set by ETRM\\n4. Front Office are responsible for monitoring activity levels against those limits and for raising limit values where E-Trading Activity is anticipated to exceed those limit values. Where limit values are raised, Front Office are responsible for recording those changes and for obtaining second line risk Approval, at a minimum where that change is expected to exceed the outer limit boundaries established by second line risk\\n5. Front Office are responsible for periodically (at least annually) reviewing limit values and for ensuring that those values are appropriately sized to actual / expected activity levels\\n6. Second line risk departments are responsible for monitoring any second line limits that establish outer boundary levels and for aggregating risk exposures where applicable / appropriate to do so and reporting excesses on second line limit.\\n|Substantiation: 1.Download full list of controls from ECF Toolkit.\\n2.Take 2 Activities where the \"Control Category\" value is the same as this CPS name.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6701640487',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6701640487,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6694714427,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6605379581,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6522231102,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.649459064,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6370610595,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6250107884,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5981717706,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5952744484,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.584692359,\n name: 'Exchange Limits Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '011.1 Independent Risk Function',\n code: 'JPM-CTRL-629479',\n id: 'JPM-CTRL-629479',\n description: '011.1 Independent Risk Function | Objective: To detect the risk of not establishing or maintaining a robust and adequately staffed e-Trading supervisory function with clearly defined roles & responsibilities that ensure alerts are timely identified, escalated and disposition-ed in accordance with established procedures and protocols for incident management maintained and invoked in accordance with agreed protocols.\\n| Process: Review: Review ongoing monitoring of alerts generated by eTrading systems or platforms.\\n| Identify: Identify potential anomalies for review/challenge; these may be: issues related to order entry order quoting; or order execution generated by eTrading systems/platforms.\\n| Action: 1. Determine whether the alerts in question are necessary for escalation/challenge\\n2. Define next steps with relevant parties.\\n3. Agree timeframe for completion with relevant parties.\\n4. Affirm that a valid justification is provided and recorded for alerts presented in the escalation/challenge; including the ongoing monitoring of that exception as required by LOB specific procedures.\\n| Supervision: N/A\\n| Governance: Escalation to LOB ECF, further to LOC BCC / BCF as required by the nature of the alert.\\n| Substantiation: Sample size guidance: for alerts, 20 per LOB per test period, for ECF materials = 3 months per LOB. \\nA. Obtain copy of The procedures document and ensure it has been reviewed in the last 12 months and conforms to CIB procedure standards \\nB. Obtain evidence from relevant BCM team: \\na. For Cash EQ, i. Of the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nb. For F&O, i. i. obtain screen-grabs daily excel download of alerts and evidence of disposition of alerts by F&O ECS desk \\nOf the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nFor non-EQ, : obtain copies of alert emails generated and any follow-up email chain generated by that alert, ensure desk / second line engagement as relevant \\nC. Request 3 months ECF meeting materials demonstrating the reporting of alerts generated and trend analysis',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-0729BD'\n }],\n type: 'Detective',\n frequency: 'Weekly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.774304688',\n clusterId: 'escalation / challenge of e - trading alerts : review of',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.774304688,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7305566669,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7100250125,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.7047352195,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1822',\n cfrequency: 'Annually',\n cid: '16A27AAA-7C22-44BF-BE7B-7C5906E0C174',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.7042782903,\n name: 'eTrading Alert Effectiveness Metrics Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.7034349442,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6956865191,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6882565618,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6801419854,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1666',\n cfrequency: 'Daily',\n cid: '5FD1A0C3-903D-4020-8610-43CC9F485105',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6768531799,\n name: 'Firm Transaction Surveillance Alert Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-0458B0',\n id: 'JPM-CTRL-0458B0',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) orders not immediately filled killed or cancelled (2) sliced child orders split from a parent order when using an execution strategy (3) max overfill alerts (4) unexpected fills (5) unmatched trades (6) Order to Trade Ratio (OTR) to ensure the ratio is in line with venue requirements, including specified timeframes (7) order lifecycle processing alerts provided by IT (8) execution parameters agreed with clients on orders submitted (9) orders with duplicative order identifiers and characteristics.\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1077',\n topMatchCertainty: '0.7600064874',\n clusterId: 'monitoring and monitoring of e - trading activities',\n items: [{\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7600064874,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7439305186,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7249221802,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.720282793,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7018094063,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '759',\n cfrequency: 'Event-Driven',\n cid: '0F7B914A-122F-4DB6-9FCD-37FDD9964513',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6947331429,\n name: 'eTrading Trade Flow Validation - Unexpected Fills Review'\n }, {\n ccode: '773',\n cfrequency: 'Event-Driven',\n cid: 'B7EE081B-512F-486C-9EA7-102F1EADBA9A',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6939983368,\n name: 'eTrading Trade Flow Validation - Order-to-Trade Ratio Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6926147342,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '766',\n cfrequency: 'Monthly',\n cid: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6893703341,\n name: 'eTrading Trading Statistics Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6891655326,\n name: 'Trade Surveillance - Large Order Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-53CFC4',\n id: 'JPM-CTRL-53CFC4',\n description: '008.1 Client Risk Limits | Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.8118982315',\n clusterId: 'constraining client risk exposure to intraday e - trading',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.8118982315,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7897010446,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.7770816684,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.7753164172,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7527580857,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.7128598094,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6975529194,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6926558018,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6916864514,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6867188811,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-857366',\n id: 'JPM-CTRL-857366',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by contraining exposure of outstanding quotes/orders to within applicable limits.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.711601913',\n clusterId: '300.1 Outstanding Risk',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.711601913,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6837286949,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6781598926,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6675889492,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6603670716,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6574397683,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6563810706,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6556572318,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6530303955,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6489554048,\n name: 'Market Risk Limits Adherence (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '160.1 E-Trading Activity Inventory',\n code: 'JPM-CTRL-DA93EB',\n id: 'JPM-CTRL-DA93EB',\n description: '160.1 E-Trading Activity Inventory | Objective: To provide direction over the controls covering each LoBs electronic trading activities by maintaining an inventory of all approved E-Trading Activity, including documentation describing the activity and corresponding control and the association of those activities to activity classes and CORE processes and sub-processes, applications / technology components, manual / non-standard processes, relevant user& analytical tools and vendors | Process: In accordance with the Electronic Trading Policy – CIB Global, ECF Chairs are expected to govern and maintain an inventory of automated execution, market making, and risk management trading activities. 1. Based on the ECF Activity Approval Process:\\n1. Business and delegated first line teams like BCM or Technology fill out or update the four required online Toolkit workflows (Activity / Controls / Technology / Regulatory)\\n2. Changes that require approval may require only a subset of the forms to be changed.\\n3. The approved inventory is included in ECF materials\\n4. The ECF inventory (maintained on the online toolkit) contains the updated / approved activity.\\n5. E-Trading Activity to be periodically reviewed (at least annually) to confirm completeness\\n | Substantiation: 1. Request ECF Meeting material\\na. Is the inventory of Activity listed in each deck?\\n2. Request online toolkit inventory data\\na. Are the activities listed in the toolkit in the approved status \\n3. Is the activity listing consistent with the meeting',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '704',\n topMatchCertainty: '0.6896524429',\n clusterId: '160.1 E-Trading Activity Inventory',\n items: [{\n ccode: '704',\n cfrequency: 'Annually',\n cid: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6896524429,\n name: 'eTrading Algorithm Inventory Review'\n }, {\n ccode: '1074',\n cfrequency: 'Event-Driven',\n cid: '9067FD90-7EC1-4508-B9C3-83D55AAE1300',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6125040054,\n name: 'Appropriate Staff Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-e',\n score: 0.5988007188,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B1',\n score: 0.5801647305,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.5794130564,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5786852837,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '1083',\n cfrequency: 'Daily',\n cid: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2',\n score: 0.5708200932,\n name: 'Commodity Exchange Metrics Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B1',\n score: 0.5703081489,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B1',\n score: 0.5700463653,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.567042172,\n name: 'eTrading Business Continuity Plan Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '014.1 Trade / Order Capture Limits',\n code: 'JPM-CTRL-E1CBDD',\n id: 'JPM-CTRL-E1CBDD',\n description: '014.1 Trade / Order Capture Limits | Objective: To mitigate operational risk and protect Firm and Client interests as well as the wider integrity of the markets when capturing transaction or order detail in trading applications where there is a risk of human input error through incorrect key strokes. | Process: 1. Applications with business pre-trade capabilities that include Request Capture and Execution and which have a user GUI permitting manual order or trade entry are should maintain maximum order value and price collar limits.\\n2. Maximum Order Value limits should automatically prevent uncommonly large order values from being entered into the order book or captured in trading book’s risk or post transaction processing and may be basic or more advanced in their construction\\na. Basic Limits establish the maximum quantity for order / transaction size that can be entered into a trading application before the user is either notified / Alerted that the size is exceptional or prevented from entering that order / transaction\\nb. Advanced Limits establish maximum order / transaction quantities dynamically for example in relation to the average daily volume (ADV) of the relevant asset symbol\\n3. Price Collar limits should automatically prevent orders / transactions from being entered into trading applications that do not meet set price parameters and should cover all prices and rates that are used to establish the order / transactions value. \\na. Basic Price Collar limits should check the price / rate being entered against the current market price / rate and either notify / Alert users where the entry price deviates from the market price by pre-established thresholds or prevent users from completing the entry of that order / transaction. \\nb. Advanced Price Collar limits may be implemented in order / risk management systems that interface with execution venues and differentiate passive / aggressive orders and / or calculate market impact of an order.\\n4. Monitoring, Oversight & Governance each LoB that has applications with pre-trade Request Capture and Execution capabilities that permit manual trade / order entry should have processes to identify where Maximum Order Value and Price Collar Limits are required, set, amend and review control tolerances / value levels and to monitor and disposition alerts and notifications\\na. Front Office/ LOB should have a process to identify applications with pre-trade Request Capture and Execution capabilities that permit manual trade / order entry and agree appropriate controls (with Second Line when appropriate) in order that the operational risks of human input error through incorrect key strokes are constrained\\nb. Front Office / LOBs are should implement Maximum Order Value and Price Collar limits as appropriate and establish tolerance / control values for those identified limits with the assistance of Second Line as appropriate\\nc. Front Office / LoB should have processes to record those tolerances / control values \\nd. Front Office / LoB should have a process to monitor alerts and notifications and to amend control values where client activity is anticipated to exceed those values. Where control values are raised, Front Office / LoB should have processes to record that change and obtain second line approvals where required to do so (for example where the activity may subsequently exceed EOD limits established by Risk)\\ne. Front Office / LoB should have a process to periodically (at least annually) review control values and for ensure that those values are appropriately sized to constrain operational risk. 1. Front Office/ LOB are responsible for identifying the risks inherent within e-Trading activities and for agreeing appropriate limit controls with the relevant second line risk department in order that the exposure to those risks is constrained within risk appetite and any outer limit bounds established by the second line\\n2. Front Office / | Truncated due to length',\n risks: [{\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7528956532',\n clusterId: 'trade / order capture limits in trading applications',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7528956532,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.697006762,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6840850711,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6698053479,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.650529325,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.648455441,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6396782994,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6386579871,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6317791343,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6309689283,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-C1D608',\n id: 'JPM-CTRL-C1D608',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months ..',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7032060623',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7032060623,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.655444622,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.652507484,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.651448667,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6510605216,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6388061047,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6343992352,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6331974864,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6236397028,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.623190701,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-A68ED5',\n id: 'JPM-CTRL-A68ED5',\n description: '276.1 Executed Risk - Exposure Limit |\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk\\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month ...',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.688934505',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.688934505,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6883969903,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6835021973,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6783478856,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6761536598,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6533808708,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6516661644,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6504064798,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6502245069,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6496445537,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-7777CE',\n id: 'JPM-CTRL-7777CE',\n description: '276.1 Executed Risk - Exposure Limit | Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk \\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.6914438605',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6914438605,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6893572807,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6868231893,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6815660596,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6783048511,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.658532083,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6575943828,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6542468667,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6539517045,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6533272266,\n name: 'eTrading Alert Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-2543F3',\n id: 'JPM-CTRL-2543F3',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependencies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilization (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilization is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7071763873',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7071763873,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6895973682,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6661421657,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.665838778,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6618377566,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6601464748,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6580075622,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6454507709,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6409707069,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6385810375,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-E1790A',\n id: 'JPM-CTRL-E1790A',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by constraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6943708062',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6943708062,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6778557897,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6666586995,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6613038182,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6583387852,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6530703902,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6530124545,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6494185925,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6476944089,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6470932961,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '276.1 Executed Risk - Exposure Limit',\n code: 'JPM-CTRL-61E699',\n id: 'JPM-CTRL-61E699',\n description: '276.1 Executed Risk - Exposure Limit | Objective: To prevent the risks of E-Trading Activities distorting order books by placing exposure limits on those order books, or accumulating market risk exposure in excess of risk\\n| Process: Review: Reviewing and/or Monitoring of realized net / gross risk exposure [e.g. delta, DV01, vega]\\n/ identify: Identifying Intraday utilization against a pre-defined thresholds and when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '60',\n topMatchCertainty: '0.6887385249',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6887385249,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6865310669,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6853516698,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6793987751,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6770560741,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.655162394,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6550459266,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6526836753,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6517017484,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6509333253,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-2572F6',\n id: 'JPM-CTRL-2572F6',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by containing exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6887326241',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6887326241,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6755360961,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6615002155,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6580839157,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6569998264,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6504012942,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6489464641,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6457837224,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6435198784,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.643273294,\n name: 'Exchange Limits Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-D36EB0',\n id: 'JPM-CTRL-D36EB0',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Objective:To prevent the risk of failing to execute transactions in line with client or firm intention / instructions as a result of miscommunication or trade input error (fat finger) and may include incorrect direction of order (buy vs sell). quantity of execution, execution price, selection of asset or security; by performing the appropriate process monitoring and oversight.\\n| Description (Control Execution Steps):\\n/ Review: Technology will review and invoke Emergency Shutdown activities to shut down a specific application or applications in order to stop unintended trading action. Emergency shutdown can include but not limited to: a) ineffective control environment design, a control failing to operate as intended, and failure to receive reconciliations from exchanges. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify: Technology will identify and terminate processes (cease trading) in the event of a software glitch, instability, erroneous trading, or other unforeseen circumstances. Emergency shutdown may include a combination of manual or technological processes. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nAction: Emergency shutdown may include a combination of manual or technological processes. Technology will work to invoke (Shutdown) and reenable (Recovery) of the relevant components when appropriate with the proper approvals (by authorized personnel). Approval to invoke Emergency Shutdown can be verbal with written approval obtained by end of the trading day. \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nSupervise: Technology will contact the supervisors who would agree on the kill switch / emergency shutdown.\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nGovern: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n| Pre Trade\\nTransactional (ad-hoc)\\n| Control Substantiation:\\n1\\tObtain list of non etrading activities (performed by Production Management and JPM ETI Network operations)\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tSelect sample of activities\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tTest Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.7555825114',\n clusterId: 'technology to invoke emergency shutdown',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7555825114,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6267494559,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.5957793593,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.5885395408,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5736989975,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.571621418,\n name: 'End of Day Trade Review'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5711161494,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5687234998,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5640051961,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5625298619,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-CFEABB',\n id: 'JPM-CTRL-CFEABB',\n description: '262.1 Order / Message Throttle Limit |\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective\\n(2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7149651647',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7149651647,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6658912301,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6648370624,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6630692482,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6587592959,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6500801444,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6442527175,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6423717141,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6343453526,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6325805783,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '014.1 Trade / Order Capture Limits',\n code: 'JPM-CTRL-77F331',\n id: 'JPM-CTRL-77F331',\n description: \"14.1 Trade / Order Capture Limits | Objective: To mitigate operational risk and protect Firm and Client interests as well as the wider integrity of the markets when capturing transaction or order detail in trading applications where there is a risk of human input error through incorrect key strokes.\\n| Process: 1. Applications with business pre-trade capabilities that include Request Capture and Execution and which have a user GUI permitting manual order or trade entry are should maintain maximum order value and price collar limits.\\n2. Maximum Order Value limits should automatically prevent uncommonly large order values from being entered into the order book or captured in trading book's risk or post transaction processing and may be basic or more advanced in their construction\\na. Basic Limits establish the maximum quantity for order / transaction size that can be entered into a trading application before the user is either notified / Alerted that the size is exceptional or prevented from entering that order / transaction\\nb. Advanced Limits establish maximum order / transaction quantities dynamically for example in relation to the average daily volume (ADV) of the relevant asset symbol\\n3. Price Collar limits should automatically prevent orders / transactions from being entered into trading applications that do not meet set price parameters and should cover all prices and rates that are used to establish the order / transactions value.\\na. Basic Price Collar limits should check the price / rate being entered against the current market price / rate and either notify / Alert users where the entry price deviates from the market price by pre-established thresholds or prevent users from completing the entry of that order / transaction.\\nb. Advanced Price Collar limits may be implemented in order / risk management systems that interface with execution venues and differentiate passive / aggressive orders and / or calculate market impact of an order.\\n4. Monitoring, Oversight & Governance each LoB that has applications with pre-trade Request Capture and Execution capabilities that permit manual trade / order entry should have processes to identify where Maximum Order Value and Price Collar Limits are required, set, amend and review control tolerances / value levels and to monitor and disposition alerts and notifications\\na. Front Office/ LOB should have a process to identify applications with pre-trade Request Capture and Execution capabilities that permit manual trade / order entry and agree appropriate controls (with Second Line when appropriate) in order that the operational risks of human input error through incorrect key strokes are constrained\\nb. Front Office / LOBs are should implement Maximum Order Value and Price Collar limits as appropriate and establish tolerance / control values for those identified limits with the assistance of Second Line as appropriate\\nc. Front Office / LoB should have processes to record those tolerances / control values\\nd. Front Office / LoB should have a process to monitor alerts and notifications and to amend control values where client activity is anticipated to exceed those values. Where control values are raised, Front Office / LoB should have processes to record that change and obtain second line approvals where required to do so (for example where the activity may subsequently exceed EOD limits established by Risk)\\ne. Front Office / LoB should have a process to periodically (at least annually) review control values and for ensure that those values are appropriately sized to constrain operational risk. 1. Front Office/ LOB are responsible for identifying the risks inherent within e-Trading activities and for agreeing appropriate limit controls with the relevant second line risk department in order that the exposure to those risks is constrained within risk appetite and any outer limit bounds established by the second line\\n2. Front Office / | Truncated due to length\\nNA\\nNA\\nNA\\nNA\",\n risks: [{\n riskName: 'Inaccurate or Untimely Transaction Execution, Trade Capture and Confirmation',\n riskCode: 'JPM-RISK-D81F39'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1823',\n topMatchCertainty: '0.7372716069',\n clusterId: 'trade / order capture limits in trading applications',\n items: [{\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7372716069,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6611737609,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6598662734,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6523439288,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6204240322,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6196063161,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.616366446,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6136072278,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6070222259,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6057819724,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '187.1 External Venue Approval & Enablement',\n code: 'JPM-CTRL-5926AC',\n id: 'JPM-CTRL-5926AC',\n description: '187.1 External Venue Approval & Enablement | Objective: Ensure relevant registrations of e-trading activities have taken place at relevant venues | Process: Based on the ECF Activity Approval Process:\\n1. Business / BCM identify that a registration at a venue needs to be added / amended\\n2. Not all venues may need to be changed\\n3. Approved new venues are noted at the relevant ECF\\n4. BA support team are notified of the amendment / addition to be made\\n5. BA support team process the change\\n6. Algo ID list is updated to reflect new / amended venues (NEW CONTROL)\\n7. Quarterly review of venue registration details (NEW CONTROL) Includes requirement to obtain any licenses that the activity needs to opeerate at the venue\\n| Substantiation: 1. Request ECF Meeting material\\na. Is the venue amendment noted?\\n2. Request list of activities registered per venue\\na. Are the venues listed for the activity correct\\nAlgo ID / venue mapping sharepoint list:-\\nhttps://sp.jpmchase.net/sites/spmcgmyj/Lists/Algo%20ID%20list/AllItems.aspx\\n\\n3. Request data received from the venue\\na. Does this correspond to the JPMC data?-\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented\\n\\n4. Request the most recent quarterly review\\na. Has this been reviewed by relevant stakeholders\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '709',\n topMatchCertainty: '0.7215459943',\n clusterId: 'regulation of e - trading activities at relevant venues',\n items: [{\n ccode: '709',\n cfrequency: 'Event-Driven',\n cid: '98380EA0-7F0C-402B-A605-306CEA3DCFDA',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7215459943,\n name: 'eTrading Algorithm Venue Registration Review'\n }, {\n ccode: '1828',\n cfrequency: 'Quarterly',\n cid: '325C8898-F1D0-40DE-BAC7-732B7DB44B28',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7086463571,\n name: 'eTrading Periodic Algorithm Venue Registration Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.5887022614,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '1660',\n cfrequency: 'Monthly',\n cid: '3F74695E-E91F-46CB-8F05-D2F97D9C0EE1',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.587123394,\n name: 'Employee Licensing Review (Compliance)'\n }, {\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.5862076879,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '1250',\n cfrequency: 'Annually',\n cid: '5EBE5AE7-7150-41D8-8E99-B37BB328BBFF',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5861059427,\n name: 'Exchange Membership Review'\n }, {\n ccode: '37',\n cfrequency: 'Annually',\n cid: '54DD7916-2CF1-446B-86A6-2CE04CA92D31',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5831283927,\n name: 'End-User Computing (EUC) Register Review'\n }, {\n ccode: '1082',\n cfrequency: 'Event-Driven',\n cid: 'ACDAA27C-3AD5-433C-9986-595E25812F6B',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5805678368,\n name: 'New Exchange Membership Review'\n }, {\n ccode: '1203',\n cfrequency: 'Quarterly',\n cid: '1129F1BE-E19C-400F-80CE-D5F13D760075',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5783262253,\n name: 'Employee Licensing Review'\n }, {\n ccode: '1470',\n cfrequency: 'Monthly',\n cid: '27BC2256-F662-449F-9A5E-EFBD68B90B53',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5741430521,\n name: 'Governance Meetings Review (Operations)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-CD2785',\n id: 'JPM-CTRL-CD2785',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependencies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilization (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7049524188',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7049524188,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6926218867,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6651835442,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6650370955,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6633406878,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6595659852,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6573656201,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6454399824,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6413269043,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6367685795,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-FDD497',\n id: 'JPM-CTRL-FDD497',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by constraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1799',\n topMatchCertainty: '0.6896105409',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.6896105409,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6891778111,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6764948368,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6697202325,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6626420617,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.660694778,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6569271088,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6536528468,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6501350999,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6483909488,\n name: 'Trade Surveillance - Price Manipulation Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-2F327B',\n id: 'JPM-CTRL-2F327B',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by: \\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert\\n(2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n(3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7240783572',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7240783572,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7191343904,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.694747746,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.68648386,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6825699806,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6814138889,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6756404042,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6741306186,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6653990746,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6609342694,\n name: 'Market Risk Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-755B2C',\n id: 'JPM-CTRL-755B2C',\n description: '275.1 Profit & Loss Limit\\nSupervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. | Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nWhy\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits. | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of realized P&L. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert].\\nNA\\nNA\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month. .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6547469497',\n clusterId: 'monitoring and monitoring control value changes in intraday e - trading',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6547469497,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6540575624,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6539289951,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6451861262,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6383900046,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6322339177,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6309489608,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6092602015,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.605305016,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5998767614,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-698BF3',\n id: 'JPM-CTRL-698BF3',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1077',\n topMatchCertainty: '0.7401102185',\n clusterId: 'controls for the risk of e - trading activities',\n items: [{\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7401102185,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7341358066,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7119543552,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6894047856,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6809530258,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6786313653,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.67800951,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6765816808,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6734083295,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1766',\n cfrequency: 'Weekly',\n cid: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6679074168,\n name: 'Darkpool Order Flow Activity Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-747ECB',\n id: 'JPM-CTRL-747ECB',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Description (Control Execution Steps): \\n/ Review: The Emergency Shutdown procedures are reviewed at a minimum on an annual basis or in response to changes in the e-trading activity.\\n/ Identify: The review identifies new / amended / decommissioned e-trading activities (including new servers and data centres), associated scripts used on hosts to identify and terminate processes, related re-enablement procedures and designation of authorised personnel and associated roles and responsibilities.\\n/ Action: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n/ Governance: Presentation of completion to ECF.\\n| Objective: To prevent the risk of E-Trading Critical Activity Failure as a result of implementing electronic trading activities that fail to operate as expected resulting in hedging or other execution failures and in extremis runaway e-Trading activity.\\n| Pre Trade\\n| Annually\\n| Control Sub- stantiation: 1. Obtain list of e-trading activities from ECF Toolkit.\\n2. Select sample of 1 activity per LOB.\\n3. Test Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test.\\n4. ESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)\\n5. Invocation: Check via enquiry if any invocation occurred in the prior 12 months and if so request documentation and test to ensure all minimum requirements inclusive of risk management and trading resumption were adequately covered, that the invocation was presented at the ECF and that any actions / follow ups were documented (e.g as issues and action plans).\\n/ Sample Size Guidance: Presentation of completion to ECF.\"',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.6669294834',\n clusterId: 'emergency shutdown procedures for e - trading',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6669294834,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6545886993,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6173835397,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6159875989,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.606369257,\n name: 'End of Day Trade Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6028062105,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5884318352,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1367',\n cfrequency: 'Daily',\n cid: 'D9B43802-EEB1-43E4-86CA-8E52D48583A2',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5873348713,\n name: 'End of Day Trade Review (AM)'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.585706532,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5808147788,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-25F14D',\n id: 'JPM-CTRL-25F14D',\n description: '277.1 Executed Risk - Flow Limit | Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits \\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.7122540474',\n clusterId: 'monitoring and control of intraday e - trading activities',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7122540474,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.697214663,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6968515515,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6952603459,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6945007443,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6896842122,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6869066358,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6842680573,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6834401488,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6765226722,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '194.1 Algo ID and Market Making / HFT Monitoring',\n code: 'JPM-CTRL-7E3E8A',\n id: 'JPM-CTRL-7E3E8A',\n description: '194.1 Algo ID and Market Making / High Frequency Trading Monitoring | Business Control Management\\n| Description: \\n/Review: E-Trading Activities (\"algos\") that interact with EEA regulated markets, MTFs and OTFs are reviewed by BA BCM to confirm they are registered on the venues they transact on (\"algo id\" short codes), using daily reconciliation where available (Equities and F&O), venue notifications, and annual three-way reconciliation. In addition, E-Trading Activities are reviewed by LOB BCM on a monthly basis for determination whether they meet the definition of high frequency trading, using daily message rate calculations for each algo ID for each venue. \\n/Identify: The review process for algo IDs will identify where the registration of algos on a venue or the internally maintained inventory of algo IDs is incomplete. The HFT assessment will identify whether the message rates exceeds the HFT thresholds for any algo ID and venue combination over the month and other necessary conditions (principal trading, low lateny infrastructure, and liquid products) are met. \\n/Action: Where unregistered algo IDs are identified, the BA Access team in BCM will reach out to the LOB BCM to collect necessary information to complete the registration via the defined process for the relevant venue, and update the internal inventory. Where algos that meet the requirement of HFT and the JPM has not previously notified the NCA of the relevant venue that it is engaged in HFT within its jurisdiction, the relevant LOB ECF will be informed with appropriate action agreed by ECF Stakeholders.\\n/Supervision: NA\\n/Governance: The relevant ECF for each LOB supervises the algo registration and HFT monitoring processes, with necessary escalations reported into the ECF for disposition.\\n| Objective: To enable EEA Venues to identify which of the Firm\\'s e-trading activities is responsible for any individual order sent to the venue; and to enable EEA NCAs to know which investment firms are engaging in principal, algorithmic high frequency trading (\"HFT\") activities in their jurisdictions.\\nPost-Trade\\nDaily\\n| Substantiation:\\n1. Obtain the evidence per relevant ECF of the annual reconciliation process for the algo ID inventory, including presentation of materials to LOB ECF.\\n2. Obtain a sample of three instances of monthly message rate monitoring reports for the HFT assessment.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Daily',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1227',\n topMatchCertainty: '0.6486551166',\n clusterId: '194.1 Algo ID and Market Making / HFT Monitoring',\n items: [{\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6486551166,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '1828',\n cfrequency: 'Quarterly',\n cid: '325C8898-F1D0-40DE-BAC7-732B7DB44B28',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6407540441,\n name: 'eTrading Periodic Algorithm Venue Registration Review'\n }, {\n ccode: '709',\n cfrequency: 'Event-Driven',\n cid: '98380EA0-7F0C-402B-A605-306CEA3DCFDA',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2',\n score: 0.6364322901,\n name: 'eTrading Algorithm Venue Registration Review'\n }, {\n ccode: '1083',\n cfrequency: 'Daily',\n cid: '7A73F70B-F3C9-49A6-87CD-8B27AB39D406',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6241748929,\n name: 'Commodity Exchange Metrics Review'\n }, {\n ccode: '763',\n cfrequency: 'Event-Driven',\n cid: 'C8176134-A81D-49F7-B8D5-6DC56FCBC5D7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6182719469,\n name: 'eTrading Trade Flow Validation - Unmatched Trades Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.6141701341,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '704',\n cfrequency: 'Annually',\n cid: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6136088967,\n name: 'eTrading Algorithm Inventory Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2',\n score: 0.6092229486,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1810',\n cfrequency: 'Daily',\n cid: 'E6FC7DA0-C611-4AB9-92E7-F3A945D3377B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B1',\n score: 0.6080208421,\n name: 'Counterparty Trade Matching Review'\n }, {\n ccode: '1447',\n cfrequency: 'Daily',\n cid: '2807C7D0-7821-4BE5-829D-342C27D27CCE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6066932678,\n name: 'Trade Confirmation Processing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-EB3070',\n id: 'JPM-CTRL-EB3070',\n description: '008.1 Client Risk Limits\\n| Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying\\n(1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.7998044491',\n clusterId: 'constraining client risk exposure to intraday e - trading',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7998044491,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7686455846,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7602317333,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7477232814,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7369479537,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6872683167,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6856555939,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6749141216,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6601476073,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6569096446,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '011.1 Independent Risk Function',\n code: 'JPM-CTRL-618994',\n id: 'JPM-CTRL-618994',\n description: '011.1 Independent Risk Function | Objective: To detect the risk of not establishing or maintaining a robust and adequately staffed e-Trading supervisory function with clearly defined roles & responsibilities that ensure alerts are timely identified, escalated and dispositioned in accordance with established procedures and protocols for incident management maintained and invoked in accordance with agreed protocols.\\n| Process: Review: Review ongoing monitoring of alerts generated by eTrading systems or platforms.\\n| Identify: Identify potential anomalies for review/challenge; these may be: issues related to order entry order quoting; or order execution generated by eTrading systems/platforms.\\n| Action: 1. Determine whether the alerts in question are necessary for escalation/challenge\\n2. Define next steps with relevant parties. \\n3. Agree timeframe for completion with relevant parties. \\n4. Affirm that a valid justification is provided and recorded for alerts presented in the escalation/challenge; including the ongoing monitoring of that exception as required by LOB specific procedures.\\n| Supervision: N/A\\n| Governance: Escalation to LOB ECF, further to LOC BCC / BCF as required by the nature of the alert.\\n| Substantiation: Sample size guidance: for alerts, 20 per LOB per test period, for ECF materials = 3 months per LOB. \\nA. Obtain copy of The procedures document and ensure it has been reviewed in the last 12 months and conforms to CIB procedure standards \\nB. Obtain evidence from relevant BCM team: \\na. For Cash EQ, i. Of the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nb. For F&O, i. i. obtain screen-grabs daily excel download of alerts and evidence of disposition of alerts by F&O ECS desk \\nOf the generation of alerts from EDA, covering the requested period and covering the alerts as defined in the SOP\\nii. Of the evidence showing the review of alerts generated in EDA and the follow-up/escalation where relevant \\nFor non-EQ, : obtain copies of alert emails generated and any follow-up email chain generated by that alert, ensure desk / second line engagement as relevant \\nC. Request 3 months ECF meeting materials demonstrating the reporting of alerts generated and trend analysis',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-DBA4F4'\n }],\n type: 'Detective',\n frequency: 'Weekly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '698',\n topMatchCertainty: '0.7814024091',\n clusterId: 'escalation / challenge of e - trading alerts : review of',\n items: [{\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7814024091,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.734064281,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.7053527236,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.7025148273,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1822',\n cfrequency: 'Annually',\n cid: '16A27AAA-7C22-44BF-BE7B-7C5906E0C174',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.7014229894,\n name: 'eTrading Alert Effectiveness Metrics Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6976142526,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6866272092,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6815969944,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6722397804,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1666',\n cfrequency: 'Daily',\n cid: '5FD1A0C3-903D-4020-8610-43CC9F485105',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.669314146,\n name: 'Firm Transaction Surveillance Alert Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-E037A3',\n id: 'JPM-CTRL-E037A3',\n description: '245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '904',\n topMatchCertainty: '0.7395170331',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7395170331,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7335665822,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7266599536,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7120354772,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.7081109881,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6994423866,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6840097308,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6817441583,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6807569861,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6800966263,\n name: 'Trade Surveillance - Large Order Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '277.1 Executed Risk - Flow Limit',\n code: 'JPM-CTRL-8E266F',\n id: 'JPM-CTRL-8E266F',\n description: '277.1 Executed Risk - Flow Limit | Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining risk that can be accumulated through intraday e-trading activities to within the applicable limits\\n| Process: Review: Reviewing and/or Monitoring of aggregate maximum trading activity by accumulated orders quote size, notional or risk over a pre-defined time period\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1093',\n topMatchCertainty: '0.7085373998',\n clusterId: 'monitoring and control of intraday e - trading activities',\n items: [{\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7085373998,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7083852887,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6969458461,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6915854812,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6910731196,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.689021349,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6858528256,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6855319142,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6778188348,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6773636937,\n name: 'eTrading Outstanding Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-7B80A5',\n id: 'JPM-CTRL-7B80A5',\n description: '245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by: a. Preventing outgoing order / quotes from exceeding a defined band around a reference price b. Preventing streaming of inaccurate or off-market quotes c. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.  2. Take 2 activities which have this control . 3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal. 4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported 5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months 6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Prohibited Competition and/or Antitrust',\n riskCode: 'JPM-RISK-FA88EB'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7292916179',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7292916179,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7259583473,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7084241509,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.7025215626,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6900276542,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6870152354,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6768890023,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6741120219,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.673786819,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6733084321,\n name: 'Market Making Spread Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-986852',\n id: 'JPM-CTRL-986852',\n description: '008.1 Client Risk Limits\\nIdentify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\n| Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\nNA\\nNA\\n| Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.7717900276',\n clusterId: '008.1 Client Risk Limits',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7717900276,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7547147274,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.7443996072,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.727327168,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7210752368,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.7130076885,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.7075946331,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.707101047,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.7069002986,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.7010813355,\n name: 'Market Risk Limits Review (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-9A4030',\n id: 'JPM-CTRL-9A4030',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependencies\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7059351802',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7059351802,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6904737353,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6665258408,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6640562415,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6614430547,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.657561481,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6563931108,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6423951387,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6366045475,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6364856958,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '266.1 Small Flow Rollout',\n code: 'JPM-CTRL-4CC076',\n id: 'JPM-CTRL-4CC076',\n description: '266.1 Small Flow Rollout\\nObjective: To prevent E-Trading activities from creating disorderly trading conditions by vererifying that the intended functionality is working in a production environment as expected prior to full capacity. | Process: Control Description\\nThe 1LOD must present a plan for SFR as part of new E-Trading Activity approval process. At a minimum, the SFRs must detail:\\n1. Phases of adoption, target dates, and success criteria for promotion to each phase\\n2. Minimum controls applied to limit the flow during SFR phases. In situations where controls cannot be applied, the 1LOD must document how the flow will be limited (manually constrained).\\nProcess Steps\\n1. The SFR should be documented within ECF Toolkit at the time of approval, including phases, success criteria and minimum controls.\\n2. When under an SFR, the 1LOD must communicate and escalate to the appropriate ECF in the following circumstances:\\na. Status of the SFR changes\\nb. Success criteria within a phase are not met within the defined timeframe\\nc. A proposed deviation of the SFR plan\\nd. Described SFR functionality does not work as expected\\nNA\\nNA\\n| Substantiation: 1. Choose a sample of E-Trading Activities that have been approved within the review window\\n2. Identify the Small Flow Rollout that was included within ECF Toolkit at the time of approval by selecting the Small Flow Rollout section of the Controls workflow for the Activity\\n3. Confirm with the ECF Chair if any escalations related to the SFR were raised to the ECF. If so, review the relevant ECF material and confirm the escalation was documented.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '771',\n topMatchCertainty: '0.5987362266',\n clusterId: 'a plan for small flow rollout to prevent disorderly trading in production',\n items: [{\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.5987362266,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1276',\n cfrequency: 'Monthly',\n cid: 'E6CD3F8F-F684-4DF9-A01E-ECE430948898',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.5813162923,\n name: 'Trade Instruction Review'\n }, {\n ccode: '1788',\n cfrequency: 'Event-Driven',\n cid: '07F327B5-9282-4788-A5CF-3562ABB5E4D9',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.5791863799,\n name: 'Non-Standard Trade Pre-approval Review'\n }, {\n ccode: '1766',\n cfrequency: 'Weekly',\n cid: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5780023932,\n name: 'Darkpool Order Flow Activity Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.5772345662,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.57705158,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '710',\n cfrequency: 'Event-Driven',\n cid: '12025323-5404-4F16-864D-484E01A8533D',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.5722794533,\n name: 'eTrading Pre-deployment sign-off Review'\n }, {\n ccode: '1549',\n cfrequency: 'Event-Driven',\n cid: '655A98CA-105E-4EFB-A690-ADA5F6BCA6DF',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.571999073,\n name: 'User Acceptance Testing Review (Operations)'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5705949664,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }, {\n ccode: '862',\n cfrequency: 'Event-Driven',\n cid: '032540E5-2919-428B-85C9-FEF42BE07118',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5688550472,\n name: 'Pre-Release Testing Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-BA65FB',\n id: 'JPM-CTRL-BA65FB',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\nactivities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7121115327',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7121115327,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.67637676,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6687088013,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6608056426,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6549082398,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6499052644,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6494743228,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6451590657,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6427282691,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6393945813,\n name: 'Trade Surveillance - Large Order Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-77343C',\n id: 'JPM-CTRL-77343C',\n description: '245.1 Off Market Limits | Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month\\nNA\\nNA\\nNA',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7308006287',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7308006287,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7256215215,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7041347027,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6991516948,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6923802495,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6872811913,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6804928184,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6763312817,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6751403213,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6731721759,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-7C9A65',\n id: 'JPM-CTRL-7C9A65',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) orders not immediately filled killed or cancelled (2) sliced child orders split from a parent order when using an execution strategy (3) max overfill alerts (4) unexpected fills (5) unmatched trades (6) Order to Trade Ratio (OTR) to ensure the ratio is in line with venue requirements, including specified timeframes (7) order lifecycle processing alerts provided by IT (8) execution parameters agreed with clients on orders submitted (9) orders with duplicative order identifiers and characteristics\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1077',\n topMatchCertainty: '0.7592155337',\n clusterId: 'monitoring and monitoring of e - trading activities',\n items: [{\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7592155337,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.7431459427,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7225503922,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.721160233,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7036640048,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '773',\n cfrequency: 'Event-Driven',\n cid: 'B7EE081B-512F-486C-9EA7-102F1EADBA9A',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6968029141,\n name: 'eTrading Trade Flow Validation - Order-to-Trade Ratio Monitoring'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.69454211,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '759',\n cfrequency: 'Event-Driven',\n cid: '0F7B914A-122F-4DB6-9FCD-37FDD9964513',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6924271584,\n name: 'eTrading Trade Flow Validation - Unexpected Fills Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6910706162,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '766',\n cfrequency: 'Monthly',\n cid: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6890309453,\n name: 'eTrading Trading Statistics Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-265F02',\n id: 'JPM-CTRL-265F02',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.702603817',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.702603817,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6941971183,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6707779765,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6641098857,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6633263826,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6613926291,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6587931514,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6406000257,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6375383139,\n name: 'Stale Market Data Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6347288489,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '008.1 Client Risk Limits',\n code: 'JPM-CTRL-BB532F',\n id: 'JPM-CTRL-BB532F',\n description: '008.1 Client Risk Limits | Objective: To constrain counterparty and client credit risk exposure that can be accumulated through intraday e-trading activities to within the applicable limits established by the second line | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) incoming client orders / RFQs against available credit limit. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. | Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '772',\n topMatchCertainty: '0.8120241165',\n clusterId: 'constraining client risk exposure to intraday e - trading',\n items: [{\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.8120241165,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '25',\n cfrequency: 'Daily',\n cid: '9D5762F2-148D-4F6D-984C-D0CF1FB1F07B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7896379828,\n name: 'Credit Risk Limits Adherence Review'\n }, {\n ccode: '1791',\n cfrequency: 'Daily',\n cid: 'F30EB6B8-AE30-4026-AD01-DBDDF4F545F1',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.7770614624,\n name: 'Credit Risk Limits Adherence (Risk)'\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.7744125724,\n name: 'Credit Risk Limit Review (Risk)'\n }, {\n ccode: '1198',\n cfrequency: 'Event-Driven',\n cid: '7506D876-159F-476B-9C96-2E9DEE93D904',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.7516165376,\n name: 'Credit Risk Limits Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.7121186852,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6954528689,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6917266846,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6903684735,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6862788796,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-04D603',\n id: 'JPM-CTRL-04D603',\n description: '245.1 Off Market Limits\\nObjective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by: a. Preventing outgoing order / quotes from exceeding a defined band around a reference price b. Preventing streaming of inaccurate or off-market quotes c. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached.\\nAction: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events.\\nGovernance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.|\\nSubstantiation Process (Tests): 1.Download full list of controls from ECF toolkit. 2. Take 2 activities which have this control . 3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal. 4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported 5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months 6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7230920196',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7230920196,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7161569595,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7085079551,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6910284162,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6895122528,\n name: 'Market Making Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6829233766,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6709191203,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.669080019,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6677293181,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6661302447,\n name: 'Market Risk Limits Adherence (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-569B89',\n id: 'JPM-CTRL-569B89',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the la ..',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7128427625',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7128427625,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6752486825,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6674033999,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6601943374,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6550851464,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6509814858,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6484501362,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6423504353,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6410925388,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6403324008,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-2893FD',\n id: 'JPM-CTRL-2893FD',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach].\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control.\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported.\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months.\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Detective',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7133469582',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.7133469582,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6726288795,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B1',\n score: 0.6653458476,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6605883241,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.655987978,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.6524176598,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6486880779,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B1',\n score: 0.6434016824,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.6425266266,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6414615512,\n name: 'eTrading Credit Risk Limit Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '267.1 E-Trading Order Capture Limits',\n code: 'JPM-CTRL-CAEE83',\n id: 'JPM-CTRL-CAEE83',\n description: '267.1 E-Trading Order Capture Limits\\n| Objective: To prevent the risks of E-Trading Activities distorting order books by:\\na. Constraining the size of single orders that can be submitted to the market (order books) to within established limits.\\nDescription (Control Execution Steps): Review: Reviewing and/or Monitoring of maximum single order quote size, notional or risk of trades. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert\\n(3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels\\n(4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. |\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '757',\n topMatchCertainty: '0.7070713043',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7070713043,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7063038349,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6720363498,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6712614894,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6654226184,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6630696654,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6555969119,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6502174735,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6477268338,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.6435744166,\n name: 'Trade Surveillance - Front Running Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '167.1 E-Trading Activity Approval',\n code: 'JPM-CTRL-2169F2',\n id: 'JPM-CTRL-2169F2',\n description: '167.1 E-Trading Activity Approval | Business Control Management\\n| Description (Control Execution Steps) :\\n/Review: Relevant stakeholders e.g. Front Office, Technology, Market Risk, Credit Risk, CCOR review E-Trading activities in the ECF toolkit submitted for approval\\n/Identify: Stakeholders identify whether their approval requirements have been met\\n/Action: Relevant stakeholders approve new Activities or changes requiring approval to existing Activities via in ECF Toolkit workflow.\\n/Supervise: All approvals are included in the Pipeline slide within ECF materials\\n/ Govern: The ECF Chair will ensure all approvals are included in the Pipeline slide within ECF materials\\n| Objective: To prevent the risk of implementing E-Trading Activities that fail to operate as expected by producing supporting documentation and engaging stakeholders and obtaining their approval to implement those activities prior to trading commencing.\\nPre Trade\\nTransactional (ad-hoc)\\n| Substantiation:\\n1 Down the inventory audit trail from ECF Toolkit to identify approvals within the sample timeframe\\n2 Relevant ECF decks and confirm sample approvals were included in the Pipeline slide of in the ECF deck.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1712',\n topMatchCertainty: '0.6121225953',\n clusterId: 'necessary and sufficient parts of e - trading activities in the ecf tool',\n items: [{\n ccode: '1712',\n cfrequency: 'Event-Driven',\n cid: 'A55C55A1-71A7-4119-A9E1-3BEBA4C25685',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6121225953,\n name: 'Reputational Risk Review'\n }, {\n ccode: '1074',\n cfrequency: 'Event-Driven',\n cid: '9067FD90-7EC1-4508-B9C3-83D55AAE1300',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B1',\n score: 0.6061344147,\n name: 'Appropriate Staff Review'\n }, {\n ccode: '704',\n cfrequency: 'Annually',\n cid: 'B03BE1DF-D00E-4B1F-8645-A5487DECEC2F',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6014499068,\n name: 'eTrading Algorithm Inventory Review'\n }, {\n ccode: '956',\n cfrequency: 'Monthly',\n cid: '04EFC681-272B-4750-8235-BEFF46F52A81',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6006145477,\n name: 'Fund Manager Trade Authorisation Review'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5957081318,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.5879606605,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '1222',\n cfrequency: 'Event-Driven',\n cid: 'E65975D2-2A70-448A-A33B-DDAE4E27556A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.5871238708,\n name: 'Operational Risk Pre Go-live Review'\n }, {\n ccode: '1447',\n cfrequency: 'Daily',\n cid: '2807C7D0-7821-4BE5-829D-342C27D27CCE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5822648406,\n name: 'Trade Confirmation Processing Review'\n }, {\n ccode: '678',\n cfrequency: 'Event-Driven',\n cid: '0D33D60C-4A40-4D9E-9F72-473810DB4168',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.5810982585,\n name: 'New Product Approval'\n }, {\n ccode: '1254',\n cfrequency: 'Event-Driven',\n cid: 'D55E4191-4DC7-4413-93A1-B4023074C503',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.5792782903,\n name: 'Large Trade Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '159.1 E-Trading Stress testing',\n code: 'JPM-CTRL-FEC36D',\n id: 'JPM-CTRL-FEC36D',\n description: '159.1 E-Trading Stress testing | Who: Business Control Management\\n| Process:\\n- Review: 1. Stress test standards must be reviewed min annually. This must include review of Stress test documentation, R&R and include test scenarios and frequency.\\n2. Results of review must be documented, tracking any modification to the standard , be reviewed by key stakeholders and presented in ECF for approval\\n- Identify: 3. Stress Test must be performed at least annually.\\na. This must be documented and take into account.\\nb. Use case/test case.\\nc. Expected Impact to upstream/downstream systems, processes or jobs that need to be verified during the test.\\nd. Potential impact to external processes or venues.\\n4. Tests need to be performed at min:\\na. Messaging volume tests- highest no of messages during last 6 months multiplied by 2\\nb. Trade volume tests- highest volume of trading reached during previous 6 months multiplied by 2\\n5. Testing Scope - should cover ability of electronic Trading system to handle peak messages and trades, Scenarios must cover kill functionality, Surveillance , Business Continuity, Pre Trade controls, Real time monitoring, Post Trade controls\\n- Action: FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval\\n- Supervision: No prescribed supervision\\n- Governance: Results must be presented at ECF (Electronic Control Forum).\\n| Objective: To prevent the risk of a critical trading application outage resulting from excessive trading volume and message rates exceeding application, order routing or market connectivity layer tolerances through provision of sufficient capacity headroom to be able to accommodate higher message rates or any other parameters due to increased volume / market stress events (e.g. 2 x max message rate)\\nPre Trade\\nAnnually\\n| Substantiation Steps:\\n1) Request documentation for Stress Test standards review. Ensure it includes Stress test documentation, R&R and include test scenarios and frequency.\\n2) Request ECF presentation to ensure results of above have been presented and ensure approval of any changes have been received as per minutes.\\n3) Request evidence of min annual stress test and ensure all elements mentioned in above process steps are covered. This must also include any follow up actions\\n4) FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1601',\n topMatchCertainty: '0.7754833698',\n clusterId: 'review of stress test standards for e - commerce',\n items: [{\n ccode: '1601',\n cfrequency: 'Monthly',\n cid: 'FD6EDC20-13D3-4464-ABBA-101714196632',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7754833698,\n name: 'Stress Testing Review'\n }, {\n ccode: '1703',\n cfrequency: 'Semi-Annually',\n cid: 'DD829318-62F2-427F-80AD-D06C71EBAC43',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7641103864,\n name: 'eTrading Stress Test Plan And Results Review'\n }, {\n ccode: '1599',\n cfrequency: 'Quarterly',\n cid: 'D0C56474-2C3C-4269-9C3B-51A2331F1CCC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6884480119,\n name: 'Stress Scenario and Market Shocks Results Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6040591598,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.584017992,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5831623673,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.5828437805,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1818',\n cfrequency: 'Annually',\n cid: '30A969B6-A33F-4290-B5F2-A6843BBB7B23',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.5795328021,\n name: 'Crisis Management Plan Testing'\n }, {\n ccode: '1840',\n cfrequency: 'Event-Driven',\n cid: '20F5C0BA-525C-41C4-A768-DD0EA40B64D6',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5747720599,\n name: 'eTrading Algorithm Testing Methodology Review'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5690540671,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-9F776F',\n id: 'JPM-CTRL-9F776F',\n description: '275.1 Profit & Loss Limit\\n| Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits\\n| Process: Control Description\\nPrevent P&L associated with E-Trading Activity from exceeding pre-defined risk appetite level\\nProcess Steps\\n1. Front Office/ LoB are responsible for identifying the risks inherent within E-Trading Activities and for meeting E-Trading Risk Management (ETRM) control requirements in order that the exposure to those risks is constrained\\n2. Front Office are responsible for documenting the controls within ECF Toolkit as part of the approval process for the Activity\\n3. Front Office / LoB are responsible for setting limit values for the control in accordance with:\\n(i) any applicable LoB SOPs setting out the limit setting methodology\\n(ii) any outer bounds set by ETRM\\n4. Front Office are responsible for monitoring activity levels against those limits and for raising limit values where E-Trading Activity is anticipated to exceed those limit values. Where limit values are raised, Front Office are responsible for recording those changes and for obtaining second line risk Approval, at a minimum where that change is expected to exceed the outer limit boundaries established by second line risk\\n5. Front Office are responsible for periodically (at least annually) reviewing limit values and for ensuring that those values are appropriately sized to actual / expected activity levels\\n6. Second line risk departments are responsible for monitoring any second line limits that establish outer boundary levels and for aggregating risk exposures where applicable / appropriate to do so and reporting excesses on second line limit.\\n|Substantiation: 1.Download full list of controls from ECF Toolkit.\\n2.Take 2 Activities where the \"Control Category\" value is the same as this CPS name.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1199',\n topMatchCertainty: '0.6713330746',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.6713330746,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6705937386,\n name: 'Market Risk Limits Adherence (Risk)'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6627404094,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6542289853,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6512463689,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6384752393,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '1583',\n cfrequency: 'Daily',\n cid: '8AEECE80-01F2-403F-9901-F33D099B0529',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6246424317,\n name: 'Risk Limit Excess Review'\n }, {\n ccode: '715',\n cfrequency: 'Real time',\n cid: 'E70B4629-06A3-4040-A44E-0A4CF4F710A5',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6007312536,\n name: 'eTrading Unhedged Risk Monitoring'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.5980113149,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5899376869,\n name: 'Exchange Limits Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '561.1 Market Making Agreements EMEA',\n code: 'JPM-CTRL-92A1F7',\n id: 'JPM-CTRL-92A1F7',\n description: '561.1 Market Making Agreements EMEA| BCM.\\nReview: Review trading behavior to observe levels of trading activity.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify: Identify whether levels of trading activity give rise to an obligation to enter into a market making agreement.\\n\\nAction: Where the MiFID II triggers are met, a market making agreement should be entered into.\\n\\nSupervise: NIL\\n\\nGovern: Report at EMEA Equities ECF of trading activity.\\nTo detect the risk of not establishing a robust governance program that effectively oversees electronic trading risks and controls in accordance with regulatory expectations by benchmarking\\nPost Trade\\nMonthly\\n1\\tRequest 3 samples of PM100 and PM300 reports as well as the Quote Opening Report\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tCheck all instances where designated sponsor obligations were to be met have been violated, based on flags in the reports\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tFrom the reports, also check for securities with unopened quotes and any issues with market making quotes\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tCheck if all instances where MiFiD II triggers were met, a market making agreement was entered into, and the EMEA Cash desk were sent any exceptions and reports informing the desk to manually open quote where required\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n5\\tCheck 3 sample of EMEA Equities ECF to ensure any exceptions were included in reporting \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n6\\tCheck exceptions were recorded in DMS and signed of yb Cash desk head\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n7\\tCheck 3 samples of EMEA Equities BCF to ensure exceptions were reported',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1227',\n topMatchCertainty: '0.7098481655',\n clusterId: '561.1 Market Making Agreements EMEA',\n items: [{\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.7098481655,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6999731064,\n name: 'Market Making Monitoring'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.648986578,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6422895193,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '700',\n cfrequency: 'Monthly',\n cid: 'E3BF0ED3-E160-471B-8CF6-D6D92FD9D9F0',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.6299354434,\n name: 'Trader Mandate Review'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6195592284,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1201',\n cfrequency: 'Daily',\n cid: '91AD476F-49C7-4153-BD58-14664649F9ED',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6164385676,\n name: 'Trader Mandate Breach Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6064214706,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.6028487682,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.6021006703,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '262.1 Order / Message Throttle Limit',\n code: 'JPM-CTRL-F930BF',\n id: 'JPM-CTRL-F930BF',\n description: '262.1 Order / Message Throttle Limit\\n| Objective: To prevent E-Trading Activities generating excessive order / message activity levels that may result in disorderly trading conditions by limiting (\"throttling\") the rate at which new and / or cancelled messages are sent to the market.\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of max order / message rate per pre-defined time period. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert\\n(5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for\\n(1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure.\\nSubstantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 months ..',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '742',\n topMatchCertainty: '0.7079305053',\n clusterId: 'electronic trading control ( e - trading ) tools and controls : review of',\n items: [{\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7079305053,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6598015428,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B1',\n score: 0.6580765843,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6573576927,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.6551666856,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1823',\n cfrequency: 'Annually',\n cid: 'B3D1A1F0-BEBF-404D-A1AA-69F63FE1584B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6392399669,\n name: \"Trade / Order Capture - Manual Entry ('Fat Finger') Limits Review \"\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6376757026,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6368847489,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6262587309,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.625755012,\n name: 'eTrading Executed Orders Limit Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '190.1 It Outsourcing and procurement',\n code: 'JPM-CTRL-9AC7AB',\n id: 'JPM-CTRL-9AC7AB',\n description: '190.1 It Outsourcing and procurement | Business Control Management\\n| Description:\\n/Review: Review of suppliers that will use the Due Diligence Questionnaire (DDQ) \\n/Identify: Identify in-scope vendor controls, procedures, or monitoring are relied upon to mitigate against market disruption and Vendor change management processes are relied upon\\n/Action: In-scope suppliers are required to complete the DDQ and refresh their responses annually (once each calendar year).\\nE-Trading BCM distributes questionnaire to vendors, review the responses with support as needed from SME teams (e.g. Technology), and escalates non-compliance by suppliers to relevant E-Trading Activity Owner(s)\\nE-Trading BCM has to confirm completeness of in-scope supplier DDQs. Relevant risk acceptances and gaps are identified and tracked to completion.\\n/Supervise: E-Trading BCM confirm in-scope suppliers with ECF Chairs.\\n/Govern: Approval and Annual Assessment Approval of completion of the annual process will be requested from the impacted E-Trading Activity owners, confirmation of approval will be provided to the relevant E-Trading Control Forums (ECF), and results incorporated into the MiFID II E-Trading Annual Self-Assessment.\\n| Objective: Ensure that JPMC remains fully responsible for our obligations to meet MiFID II and UK Regulation where we outsource or procure software or hardware used in algorithmic trading activities. Ensure JPMC has sufficient knowledge and necessary documentation to ensure effective compliance with the obligation in relation to any procured or outsourced hardware or software used in algorithmic trading.\\nPost Trade\\nAnnually\\n| Substantiation:\\n1\\tRequest ECF Chair confirmation of in-scope suppliers\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tConfirm that DDQs have been distributed ,responses received and relevant gaps / risk acceptances have been raised\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tRequest approval of the annual process and presentation to ECF',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1705',\n topMatchCertainty: '0.6588312984',\n clusterId: 'e - trading, vendor controls, and the due diligence question',\n items: [{\n ccode: '1705',\n cfrequency: 'Annually',\n cid: '4C84190E-DE33-4063-A9CC-17A0B5303B90',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.6588312984,\n name: 'eTrading Third-Party Provider Due Diligence Questionnaire Review'\n }, {\n ccode: '1709',\n cfrequency: 'Annually',\n cid: '31E3D77E-F748-4477-B117-99DC5AD590B0',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6248124242,\n name: 'Approved Distributor Due Diligence Review'\n }, {\n ccode: '1745',\n cfrequency: 'Monthly',\n cid: 'B84EDD2A-5096-4155-8E42-EF14BEB004EA',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.5917310119,\n name: 'Third-Party Service Provider Monitoring'\n }, {\n ccode: '428',\n cfrequency: 'Event-Driven',\n cid: '787BC173-9BBF-48EB-A434-13C05195652C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.5789862275,\n name: 'Benchmark Third-Party Service Provider Monitoring'\n }, {\n ccode: '1830',\n cfrequency: 'Monthly',\n cid: 'D030A399-6D71-4995-9BC8-48527D7AF6AA',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.5641360879,\n name: 'Third-Party Performance Review (Technology)'\n }, {\n ccode: '523',\n cfrequency: 'Event-Driven',\n cid: 'BF1592D0-C9AF-4CC8-9D48-0CC9A15B2204',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.5554141998,\n name: 'Counterparty Onboarding Review'\n }, {\n ccode: '1410',\n cfrequency: 'Event-Driven',\n cid: '42D6ABC2-8DD5-4429-815F-5A45A6581689',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2',\n score: 0.5547689199,\n name: 'KYC Due Diligence Monitoring'\n }, {\n ccode: '1232',\n cfrequency: 'Annually',\n cid: 'A3053F3E-5B45-4097-BC24-281F9CD70CA7',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B1',\n score: 0.5504602194,\n name: 'Benchmark Third-Party Service Provider Review'\n }, {\n ccode: '1762',\n cfrequency: 'Annually',\n cid: '7B1E2749-1293-4A79-9485-E8C2880343E2',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B1',\n score: 0.5443394184,\n name: 'Third-Party Service Provider Review'\n }, {\n ccode: '1000',\n cfrequency: 'Event-Driven',\n cid: '88F055B9-A4D4-4687-96C6-87F58693846F',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2',\n score: 0.5426596999,\n name: 'Transaction Due Diligence Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '275.1 Profit & Loss Limit',\n code: 'JPM-CTRL-7BDC0D',\n id: 'JPM-CTRL-7BDC0D',\n description: '275.1 Profit & Loss Limit | Objective: To prevent the risk of accumulating market risk exposure in excess of appetite and of failing to hedge or lay off risk in excess of appetite by constraining P&L that can be accumulated through intraday e-trading activities to within the applicable loss limits. | Description (Control Execution Steps): Review: Reviewing and/or Monitoring of realized P&L. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels. | Citations (Policy / Procedure): Electronic Trading - Risk Management Standard | E-Trading Control Forum Procedure. | Substantuation Process (Tests): 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '748',\n topMatchCertainty: '0.7099003792',\n clusterId: 'constraining intraday e - trading risk',\n items: [{\n ccode: '748',\n cfrequency: 'Event-Driven',\n cid: 'B3F9D82D-E9FF-4CC3-8CBB-BE14901643AB',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7099003792,\n name: 'eTrading Max P&L Per Period Monitoring'\n }, {\n ccode: '1209',\n cfrequency: 'Daily',\n cid: '786C20DD-7F79-41BD-98D6-915D9611610B',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6647470593,\n name: 'P&L Supervisory Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6493276954,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1382',\n cfrequency: 'Daily',\n cid: '898099C9-D208-47B8-AF40-FEF8064BC069',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.64372015,\n name: 'Daily P&L and Attribution Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6333165765,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '1373',\n cfrequency: 'Monthly',\n cid: '9C46FFBA-35B3-461B-83B8-8469B1022E25',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6325221658,\n name: 'Month End P&L Adjustments Validity Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6291080117,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6284458637,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B1',\n score: 0.6234455109,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6232382655,\n name: 'Market Risk Limits Adherence'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '049.1 Waivers',\n code: 'JPM-CTRL-2643E7',\n id: 'JPM-CTRL-2643E7',\n description: \"049.1 Waivers /Business Control Management\\nDescription (Control Execution Steps): Identify: Model User reviews the model to ensure usage is in accordance the Firmwide Model Risk Policy. Identify: Model User identifies if a waiver is required to enable the use of an unapproved model or an unapproved use of a model. Action: Model User submits a waiver request in order to obtain pre-approvals from Model Governance Group (Model Manager and Model Risk Officer). MM & MRO obtain final signoff from the Model Risk Governance and Review Firm Risk Executive (MRGR FRE). Supervision: No prescribed step. Governance: Weekly waiver report produced by MGG /MO around waivers V Limits. Monthly stats of waivers are produced by MGG for BCC Citations (Policy / Procedure): https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B78B57760-2502-412B-BEA6-A2E156C53982%7D https://dogma.gaiacloud.jpmchase.net/#/docDownload/%7B03C0E185-861E-442D-A645-F151AFC32EAB%7D\\nObjective: To detect the risk of erroneous or untimely estimations by obtaining and evidencing required approvals and/or authorizations of transactions and activities as directed in the firm's policies and procedures.\\nN/A\\nN/A\\nSample Size Guidance: 20 Substantiation Process (Tests): 1.Review 20 waiver requests. 2.Confirm appropriate approvals and supportive documentation is in place. 3.Check weekly report is in place. 4. Review BCC to ensure waiver totals are contained in the monthly decks.\",\n risks: [{\n riskName: 'Inaccurate, Incomplete or Untimely Estimation',\n riskCode: 'JPM-RISK-3736BE'\n }],\n type: 'Directive',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1372',\n topMatchCertainty: '0.693004787',\n clusterId: 'contract - based waiver request management for firmwide model risk management',\n items: [{\n ccode: '1372',\n cfrequency: 'Monthly',\n cid: 'CA420A8F-080E-4A06-9ED0-79155D527706',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.693004787,\n name: 'Model Usage Review'\n }, {\n ccode: '1140',\n cfrequency: 'Monthly',\n cid: '2F2998A7-8D54-4DF1-ADA4-A5CBFF7521AF',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.650611639,\n name: 'Model Approval Review'\n }, {\n ccode: '1588',\n cfrequency: 'Event-Driven',\n cid: 'D06E9DB3-D0E2-494D-9991-24F37A806C8D',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6467311382,\n name: 'Model Approval Review (Risk)'\n }, {\n ccode: '1589',\n cfrequency: 'Event-Driven',\n cid: '9B486A5F-28F9-4770-99C1-DCA264891C89',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.63557899,\n name: 'Model Change review (Risk)'\n }, {\n ccode: '1590',\n cfrequency: 'Event-Driven',\n cid: '4FBC3272-BFD0-485A-B3BF-25B38742C597',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6189220548,\n name: 'Model Performance Review'\n }, {\n ccode: '1591',\n cfrequency: 'Semi-Annually',\n cid: '8E6E38E4-28EE-4D61-B1F2-DF951235E4F1',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2',\n score: 0.6101720929,\n name: 'Model Revalidation Review'\n }, {\n ccode: '1378',\n cfrequency: 'Monthly',\n cid: 'B18AA655-A3E8-4600-97B2-44C38D6E7E0D',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5963833928,\n name: 'Model Inventory Review'\n }, {\n ccode: '1592',\n cfrequency: 'Event-Driven',\n cid: '50DAE8F0-249F-44FC-9973-4E0AB7FB56A7',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5761160851,\n name: 'Model Risk Reporting Review'\n }, {\n ccode: '703',\n cfrequency: 'Event-Driven',\n cid: '9036BD2F-9026-414A-8041-87F1DC69FE88',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-e',\n score: 0.5707040429,\n name: 'eTrading Risk Control Limit Change Approval Review '\n }, {\n ccode: '1574',\n cfrequency: 'Event-Driven',\n cid: '6FF8E977-6EC1-4515-8454-99E322A8E5E2',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-e',\n score: 0.5493147969,\n name: 'Credit Risk Limit Review (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '303.1 Trade Flow Validation Monitoring',\n code: 'JPM-CTRL-F37F7C',\n id: 'JPM-CTRL-F37F7C',\n description: '303.1 Trade Flow Validation Monitoring | Objective: To prevent the risk of E-Trading Activities processing requests / orders that fail to operate in accordance with expected data flows / logic.\\n/ Identify: Identify any of the following: (1) inactive orders not being executed in line with order instructions (2) where the aggregate of child orders is greater than the parent order or child order prices go beyond the limit price of the parent order (3) deviation outside of pre-defined thresholds (4) trades that are filled but do not match orders on the trading book (5) trades that do not reconcile with the firms trading book positions (6) utilization outside of pre-defined thresholds (7) deviations from expectations (8) orders where client order execution parameters have not been adhered to (9) orders with duplicative order identifiers and characteristics.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) orders not immediately filled killed or cancelled (2) sliced child orders split from a parent order when using an execution strategy (3) max overfill alerts (4) unexpected fills (5) unmatched trades (6) Order to Trade Ratio (OTR) to ensure the ratio is in line with venue requirements, including specified timeframes (7) order lifecycle processing alerts provided by IT (8) execution parameters agreed with clients on orders submitted (9) orders with duplicative order identifiers and characteristics.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop placement of child orders for parent order until assessed and/or remediated]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1229',\n topMatchCertainty: '0.7457740903',\n clusterId: 'controls for the risk of e - trading activities',\n items: [{\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7457740903,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7452529073,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7267198563,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '746',\n cfrequency: 'Event-Driven',\n cid: '2FF8D680-154D-49D2-8686-B9D53DBD0249',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6850226521,\n name: 'eTrading Trade Flow Validation - Max Overfills Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6796200275,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.6765602231,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6764214635,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.6759078503,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '702',\n cfrequency: 'Event-Driven',\n cid: 'E8C43B1D-0F0E-43FA-81DB-90EDB309C5D7',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-e',\n score: 0.6731476188,\n name: 'eTrading Trade Flow Validation - Parent / Child Order Monitoring'\n }, {\n ccode: '1766',\n cfrequency: 'Weekly',\n cid: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6729303002,\n name: 'Darkpool Order Flow Activity Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '504.1 EMM direct routing access removal',\n code: 'JPM-CTRL-D8BB3D',\n id: 'JPM-CTRL-D8BB3D',\n description: '504.1 EMM direct routing access removal | Who: Business Control Management\\n| Process: Review: N/a owned by compliance\\n| Identify: N/a owned by compliance \\n| Action: N/a\\n| Supervision: Compliance during the Annual Market Access Testing detects the ability where traders using the EMM Trading Order Management System in the US have the capability in the system to create and represent a client order without receiving it from a Sales Order Management System . Compliance will notify the supervisor of the trader when above is found . Supervisor will engage tech to have functionality removed and communicate to trader not to use this functionality\\n| Governance: Where issues are identified an issue and action plan would be presented in BCF/BCC\\n| Objective: To detect the risk that Single Stock Flow and Index Traders US traders can route a customer s order to the market via EMM prior to the order being accepted or entered in Stride which could result in the pre-trade customer limits being circumvented (OTD notional limits) by removal of access once identified by Compliance during their annual Market access testing.\\n| Where: Post Trade\\n| When: Annually\\n| Substantiation: Request evidence of results of the compliance test.\\nWhere compliance advise the supervisor of inappropriate EMM access, request evidence of that access being removed and communication to the trader.\\nIf issues are found request details and check BCF/BCC',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-0729BD'\n }],\n type: 'Detective',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.6218774319',\n clusterId: '504.1 EMM direct routing access removal',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6218774319,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '131',\n cfrequency: 'Quarterly',\n cid: '0CF8A3EA-531A-4572-9F1E-C882B7904B9C',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2',\n score: 0.5804949403,\n name: 'Trading Book Access Review'\n }, {\n ccode: '1692',\n cfrequency: 'Annually',\n cid: '69CD9CC3-1FC4-472A-9C4E-79CF197BE1B3',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B1',\n score: 0.5612270832,\n name: 'Client System Access Review'\n }, {\n ccode: '1702',\n cfrequency: 'Annually',\n cid: '139F0487-80A1-4D5A-9453-50E92D0BD040',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-e',\n score: 0.5564343929,\n name: 'eTrading Disablement Capability Review'\n }, {\n ccode: '774',\n cfrequency: 'Annually',\n cid: '0BEDFB1A-691A-40BA-BFD0-0954B12F7088',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-e',\n score: 0.5508777499,\n name: 'eTrading Direct Electronic Access Client Suitability Questionnaire Review'\n }, {\n ccode: '1201',\n cfrequency: 'Daily',\n cid: '91AD476F-49C7-4153-BD58-14664649F9ED',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5465083718,\n name: 'Trader Mandate Breach Review'\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2',\n score: 0.5430617929,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2',\n score: 0.5429022908,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.5353071094,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5328755975,\n name: 'Remote Trade Booking Activity Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '187.1 External Venue Approval & Enablement',\n code: 'JPM-CTRL-E46C96',\n id: 'JPM-CTRL-E46C96',\n description: '187.1 External Venue Approval & Enablement\\n| Objective: Ensure relevant registrations of e-trading activities have taken place at relevant venues | Process: Based on the ECF Activity Approval Process:\\n1. Business / BCM identify that a registration at a venue needs to be added / amended\\n2. Not all venues may need to be changed\\n3. Approved new venues are noted at the relevant ECF\\n4. BA support team are notified of the amendment / addition to be made\\n5. BA support team process the change\\n6. Algo ID list is updated to reflect new / amended venues (NEW CONTROL)\\n7. Quarterly review of venue registration details (NEW CONTROL) Includes requirement to obtain any licenses that the activity needs to opeerate at the venue\\nNA\\nNA\\nNA\\n| Substantiation: 1. Request ECF Meeting material\\na. Is the venue amendment noted?\\n2. Request list of activities registered per venue\\na. Are the venues listed for the activity correct\\nAlgo ID / venue mapping sharepoint list:-\\nhttps://sp.jpmchase.net/sites/spmcgmyj/Lists/Algo%20ID%20list/AllItems.aspx\\n\\n3. Request data received from the venue\\na. Does this correspond to the JPMC data?-\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented\\n\\n4. Request the most recent quarterly review\\na. Has this been reviewed by relevant stakeholders\\nNEW CONTROL - requested received from Compliance in Q4 2018 for this to be implemented',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '709',\n topMatchCertainty: '0.7234304547',\n clusterId: 'regulation of e - trading activities at relevant venues',\n items: [{\n ccode: '709',\n cfrequency: 'Event-Driven',\n cid: '98380EA0-7F0C-402B-A605-306CEA3DCFDA',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7234304547,\n name: 'eTrading Algorithm Venue Registration Review'\n }, {\n ccode: '1828',\n cfrequency: 'Quarterly',\n cid: '325C8898-F1D0-40DE-BAC7-732B7DB44B28',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.7124924064,\n name: 'eTrading Periodic Algorithm Venue Registration Review'\n }, {\n ccode: '1250',\n cfrequency: 'Annually',\n cid: '5EBE5AE7-7150-41D8-8E99-B37BB328BBFF',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.5945628285,\n name: 'Exchange Membership Review'\n }, {\n ccode: '37',\n cfrequency: 'Annually',\n cid: '54DD7916-2CF1-446B-86A6-2CE04CA92D31',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.5899915099,\n name: 'End-User Computing (EUC) Register Review'\n }, {\n ccode: '89',\n cfrequency: 'Monthly',\n cid: '60D491FF-3302-4F28-8FFB-750B6F0B5D07',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.5870572329,\n name: 'Remote Trade Booking Activity Review'\n }, {\n ccode: '1082',\n cfrequency: 'Event-Driven',\n cid: 'ACDAA27C-3AD5-433C-9986-595E25812F6B',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.5864053369,\n name: 'New Exchange Membership Review'\n }, {\n ccode: '1660',\n cfrequency: 'Monthly',\n cid: '3F74695E-E91F-46CB-8F05-D2F97D9C0EE1',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5860910416,\n name: 'Employee Licensing Review (Compliance)'\n }, {\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5799800754,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '1203',\n cfrequency: 'Quarterly',\n cid: '1129F1BE-E19C-400F-80CE-D5F13D760075',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5782694817,\n name: 'Employee Licensing Review'\n }, {\n ccode: '1662',\n cfrequency: 'Event-Driven',\n cid: 'F818AD1B-D5B4-4EDD-B724-DC4E271DE815',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5738947988,\n name: 'Outside Business Interest Certifications/Disclosures Review '\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '302.1 System Dependency Monitoring',\n code: 'JPM-CTRL-F81342',\n id: 'JPM-CTRL-F81342',\n description: '302.1 System Dependency Monitoring | Objective: To prevent the risk of E-Trading Activities not being aware of failures in system dependecies\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) stale market data (2) latency alerts indicative of service degradation or latency concerns (3) E-Trading systems and order message flow (4) Hardware estate capacity metrics across the platform (5) transaction volume against defined system capacity metrics and historical utilisation (6) system heartbeat / health status alerts to indicate whether an application is operating as intended (7) Monitor latency alerts indicative of service degradation or latency concerns\\n/ Identify: Identify any of the following: (1) E-Trading data feeds, orders and systems impacted (2) operational and systematic failures within and between order flow and messaging systems (3) where Hardware estate capacity may be inadequate (4) where system capacity utilisation is insufficient for transactional volumes (5) exceptions of heartbeat alerts not reviewed within the firms stipulated timeframe\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Stop trading / pricing until assessed and/or remediated (2) Amend inaccurate / incomplete or stale data or documentation]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '714',\n topMatchCertainty: '0.7053400874',\n clusterId: 'monitoring and monitoring system dependencies in e - trading systems',\n items: [{\n ccode: '714',\n cfrequency: 'Event-Driven',\n cid: '1B671CD6-E982-4544-B4EB-B358AE0F6D96',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7053400874,\n name: 'eTrading Connectivity and Latency Metrics Monitoring'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6932640076,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1358',\n cfrequency: 'Event-Driven',\n cid: '9C992CCD-E931-409E-A619-1C721C383769',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6698195338,\n name: 'Order Lifecycle Integrity Review'\n }, {\n ccode: '1633',\n cfrequency: 'Real time',\n cid: 'E0518FCD-38DD-47DA-829A-E288A403B658',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6636422873,\n name: 'Application and Hardware Capacity and Performance Metrics Monitoring'\n }, {\n ccode: '1062',\n cfrequency: 'Event-Driven',\n cid: 'AFF2E50B-C14F-48A5-9EA1-0584B1587566',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-e',\n score: 0.6626730561,\n name: 'eTrading Trade Flow Validation - Order Lifecycle Integrity Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-e',\n score: 0.6574106812,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B1',\n score: 0.6568976045,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '935',\n cfrequency: 'Daily',\n cid: 'CB947161-0A12-4F79-AF0A-015D5F73F446',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.6404922605,\n name: 'Stale Market Data Review'\n }, {\n ccode: '1640',\n cfrequency: 'Real time',\n cid: 'F45BF38C-1500-4125-BF91-855652B2D598',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6390399933,\n name: 'IT Alert Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6352881789,\n name: 'eTrading Adverse Market Movement Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '159.1 E-Trading Stress testing',\n code: 'JPM-CTRL-D05EAC',\n id: 'JPM-CTRL-D05EAC',\n description: '159.1 E-Trading Stress testing | Who: Business Control Management\\n| Objective: To prevent the risk of a critical trading application outage resulting from excessive trading volume and message rates exceeding application, order routing or market connectivity layer tolerances through provision of sufficient capacity headroom to be able to accommodate higher message rates or any other parameters due to increased volume / market stress events (e.g. 2 x max message rate)\\n| Process:\\n- Review: 1. Stress test standards must be reviewed min annually. This must include review of Stress test documentation, R&R and include test scenarios and frequency.\\n2. Results of review must be documented, tracking any modification to the standard , be reviewed by key stakeholders and presented in ECF for approval\\n- Identify: 3. Stress Test must be performed at least annually.\\na. This must be documented and take into account.\\nb. Use case/test case.\\nc. Expected Impact to upstream/downstream systems, processes or jobs that need to be verified during the test. \\nd. Potential impact to external processes or venues.\\n4. Tests need to be performed at min:\\na. Messaging volume tests- highest no of messages during last 6 months multiplied by 2\\nb. Trade volume tests- highest volume of trading reached during previous 6 months multiplied by 2\\n5. Testing Scope - should cover ability of electronic Trading system to handle peak messages and trades, Scenarios must cover kill functionality, Surveillance , Business Continuity, Pre Trade controls, Real time monitoring, Post Trade controls\\n- Action: FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval\\n- Supervision: No prescribed supervision\\n- Governance: Results must be presented at ECF (Electronic Control Forum).\\nPre Trade\\nAnnually\\n| Substantiation Steps:\\n1) Request documentation for Stress Test standards review. Ensure it includes Stress test documentation, R&R and include test scenarios and frequency.\\n2) Request ECF presentation to ensure results of above have been presented and ensure approval of any changes have been received as per minutes.\\n3) Request evidence of min annual stress test and ensure all elements mentioned in above process steps are covered. This must also include any follow up actions\\n4) FO and BCM must review Stress test plan and also Stress test Results and evidence must be captured of approval',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1601',\n topMatchCertainty: '0.7732227445',\n clusterId: '159.1 E-Trading Stress testing',\n items: [{\n ccode: '1601',\n cfrequency: 'Monthly',\n cid: 'FD6EDC20-13D3-4464-ABBA-101714196632',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7732227445,\n name: 'Stress Testing Review'\n }, {\n ccode: '1703',\n cfrequency: 'Semi-Annually',\n cid: 'DD829318-62F2-427F-80AD-D06C71EBAC43',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2-d',\n score: 0.7519504428,\n name: 'eTrading Stress Test Plan And Results Review'\n }, {\n ccode: '1599',\n cfrequency: 'Quarterly',\n cid: 'D0C56474-2C3C-4269-9C3B-51A2331F1CCC',\n ctype: 'Prevent',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6697745919,\n name: 'Stress Scenario and Market Shocks Results Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6123036742,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '1587',\n cfrequency: 'Event-Driven',\n cid: 'D647D22D-E011-492F-BED9-DFAA07094141',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B2-d',\n score: 0.600071907,\n name: 'Market Risk Limits Review (Risk)'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2',\n score: 0.5977122188,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5932715535,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-e',\n score: 0.5908014178,\n name: 'eTrading Risk Control Limits Review'\n }, {\n ccode: '742',\n cfrequency: 'Event-Driven',\n cid: '15A448E4-43A3-4FB4-BA19-F777DA2D3BDC',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5892705917,\n name: 'eTrading Max Message Rate Limit'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5845122337,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '196.1 Market Making agreements',\n code: 'JPM-CTRL-A4A682',\n id: 'JPM-CTRL-A4A682',\n description: '196.1 Market Making agreements | Objective: To prevent the risk of failing to establish and maintain e-Trading legal agreements by ensuring that market making agreements are entered into with engagement from all relevant stakeholders. |Description (Control Execution Steps): Review : Review trading behavior to observe levels of trading activity. Identify: Identify whether levels of trading activity give rise to an obligation to enter into a market making agreement. Action: Where the MiFID II triggers are met, a market making agreement should be entered into. Governance: report at ECF of trading activity. | Control Sub- stantiation: Sample Size Guidance: 2 ECF decks per LOB Substantuation Process (Tests): 1. obtain two ECF decks per LOB to ensure that Market Making statistics are being presented\\n2. identify if a market making agreement needs to be entered into\\n3. confirm that an agreement has been entered inot',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1227',\n topMatchCertainty: '0.7365970612',\n clusterId: '196.1 Market Making agreements',\n items: [{\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B1',\n score: 0.7365970612,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 2,\n reason_code: 'B2',\n score: 0.6416601539,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6346191764,\n name: 'Market Making Monitoring'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6063936353,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '766',\n cfrequency: 'Monthly',\n cid: 'B684F9F4-5E40-4DE3-A905-A58DE1282D6A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B1',\n score: 0.5979757905,\n name: 'eTrading Trading Statistics Review'\n }, {\n ccode: '700',\n cfrequency: 'Monthly',\n cid: 'E3BF0ED3-E160-471B-8CF6-D6D92FD9D9F0',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B1',\n score: 0.5926803946,\n name: 'Trader Mandate Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.589197576,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5882108808,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5845873952,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1801',\n cfrequency: 'Daily',\n cid: 'B7DB61F3-04A2-42BC-970D-84CF4B5B7320',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5838931799,\n name: 'Trade Surveillance - Trade Fill Rate Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '069.1 Darkpool Administration',\n code: 'JPM-CTRL-7929CB',\n id: 'JPM-CTRL-7929CB',\n description: '069.1 Darkpool Administration | Objective: To prevent Risk of inaccurate, untimely or incomplete processing of customer orders; errors in capturing client executing preferences and / or executing or processing orders consistent with those preferences or in a manner that is otherwise inconsistent with client instructions; failing to execute or process client transactions in an orderly or fair manner or failing to comply with best execution requirements By performing reviews of all ATS procedures on a monthly basis to identify any changes and to take action to resolve.\\n| Process: Review: The Supervisor and/or delegate should review material ATS procedures, including Trade Reporting Facility reporting requirements and methods of accessing the ATS. Additionally, the Supervisor and/or delegate should review non-material ATS procedures including desks and/or affiliates that can route orders to the ATS. This review should occur monthly.\\n/ Identify: The supervisor and/or delegate should notify 1LOD monthly that the review is complete, along with the identification of changes.\\n/ Action: Any issues discovered that the Supervisor and/or delegate believes will lead to material changes in how the ATS operates, trades are reported, or clients are interacted with should be promptly escalated to the Information Technology, Legal or Compliance Departments for remediation. The Legal and Compliance Departments will file the required SEC and SRO documents.\\n/ Supervision: These reviews should be documented at least monthly and stored in DMS.\\n/ Governance: Material changes would be documented in the filing of the ATS-N. Filing will be done by LOB Compliance with BCMs (Tim Gola / Gabriela Szymula)\\n| Substantiation: 1.\\tCheck DMS for review evidence .\\n2.\\tWhere changes identified check that escalation occurred to teams in action section.\\n3.\\tWhere material changes identified request evidence of ATS-N filing occurred.',\n risks: [{\n riskName: 'Client Order-Handling',\n riskCode: 'JPM-RISK-861476'\n }],\n type: 'Preventative',\n frequency: 'Monthly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1767',\n topMatchCertainty: '0.7290465832',\n clusterId: '069.1 Darkpool Administration',\n items: [{\n ccode: '1767',\n cfrequency: 'Event-Driven',\n cid: 'A7DD9B51-B4EB-4F7A-9CC9-22901983F5BB',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2',\n score: 0.7290465832,\n name: 'Darkpool Compliance - Activity Review'\n }, {\n ccode: '1768',\n cfrequency: 'Monthly',\n cid: '2B90E28F-855D-4316-89D2-E1B534A60ADD',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.6987771988,\n name: 'Darkpool Compliance - Documentation Review'\n }, {\n ccode: '1766',\n cfrequency: 'Weekly',\n cid: '421E634A-B0DD-47D1-BA83-C171A3D2A0AB',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2',\n score: 0.6967110634,\n name: 'Darkpool Order Flow Activity Review'\n }, {\n ccode: '1769',\n cfrequency: 'Quarterly',\n cid: '31A78D50-05A2-4A30-A4A1-191807596C97',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.653727591,\n name: 'Darkpool Access Controls Review'\n }, {\n ccode: '1365',\n cfrequency: 'Event-Driven',\n cid: '5F681684-B35B-414F-883D-24D8F982409B',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6150622964,\n name: 'eTrading SEC Regulation ATS Monitoring'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5877479911,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5863593221,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '1037',\n cfrequency: 'Daily',\n cid: '13245685-AB8E-4742-9D7B-38D6C7DFE847',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.5706102252,\n name: 'Client Activity Review'\n }, {\n ccode: '1434',\n cfrequency: 'Daily',\n cid: '63330DFC-2B65-400D-B24C-D9E03ADCA5F4',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2-d',\n score: 0.5700831413,\n name: 'Large Payment Review'\n }, {\n ccode: '1276',\n cfrequency: 'Monthly',\n cid: 'E6CD3F8F-F684-4DF9-A01E-ECE430948898',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.5691940784,\n name: 'Trade Instruction Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '245.1 Off Market Limits',\n code: 'JPM-CTRL-686C09',\n id: 'JPM-CTRL-686C09',\n description: '245.1 Off Market Limits\\n| Objective: To prevent the risks of E-Trading Activities sending off-market orders / recieiving off-market fills by:\\n\\na. Preventing outgoing order / quotes from exceeding a defined band around a reference price\\nb. Preventing streaming of inaccurate or off-market quotes\\nc. Comparing orders / fills received to currently observed best bid/offer to identify off-market pricing|\\n| Description (Control Execution Steps): Review: Reviewing and/or Monitoring of any of the following: (1) order /quote prices vs. existing price collars (2) aggressive trades from excessively crossing the spread and thus adversely moving the market price (3) execution prices against the current reference price to ensure those are within acceptable bounds. Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached. Action: In the event that control utilization hits limit take pre-defined action\\n[e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]. Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite\\n(2) responding to intraday control events. Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels.\\n| Substantiation Process (Tests): 1.Download full list of controls from ECF toolkit. \\n2. Take 2 activities which have this control .\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-83D7DA'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1824',\n topMatchCertainty: '0.7262510657',\n clusterId: 'monitoring and monitoring limit values in e - trading activities',\n items: [{\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.7262510657,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }, {\n ccode: '1825',\n cfrequency: 'Event-Driven',\n cid: '4F8693EC-13AC-4656-976B-EEFFDF4A166D',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-e',\n score: 0.7201253772,\n name: 'eTrading Post-Trade Price Tolerance Review'\n }, {\n ccode: '904',\n cfrequency: 'Event-Driven',\n cid: 'A53AC44B-79FB-4043-B169-67CEE808A672',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.7121446133,\n name: 'Off-Market Trade Price Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2',\n score: 0.6940883994,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1797',\n cfrequency: 'Daily',\n cid: '6772120D-D29E-4FE0-B372-A5BFF9F14221',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6925532818,\n name: 'Trade Surveillance - Price Manipulation Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6879832149,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1199',\n cfrequency: 'Event-Driven',\n cid: 'C5A15A53-0014-48F1-A74B-63D547ADF7B7',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-e',\n score: 0.6762997508,\n name: 'Market Risk Limits Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2',\n score: 0.6748383641,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6719021797,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '1586',\n cfrequency: 'Daily',\n cid: 'E3709567-AE29-48F8-8CAB-41D605FB3085',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6717210412,\n name: 'Market Risk Limits Adherence (Risk)'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '300.1 Outstanding Risk',\n code: 'JPM-CTRL-13CA0C',\n id: 'JPM-CTRL-13CA0C',\n description: '300.1 Outstanding Risk | Objective: To prevent the risk of E-Trading Activities accumulating potential market risk exposure in excess of appetite by contraining exposure of outstanding quotes/orders to within applicable limits.\\n| Process: Review: Reviewing and/or Monitoring of aggregate outstanding order / quote size, notional or risk\\n/ Identify: Identifying (1) intraday utilization against a pre-defined thresholds and (2) when tolerance levels are breached\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Constrain order placement / quoting and generate alert (2) Stop order placement / quoting and generate alert (3) Re-route to desk and generate alert (4) Reject order / quote and generate alert (5) Cancel outstanding orders and generate alert]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control events\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels (4) reporting Control Value Change and Control Value Breach metrics to the E-Trading Control Forum (ECF) on a monthly basis and (5) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n| Substantiation: 1.Download full list of controls from ECF toolkit.\\n2. Take 2 activities which have this control.\\n3. Check in Toolkit to ensure that the control workflow status shows these Controls have been approved by Business, ETRM (Credit, Market, and Operational Risk), Technology, Compliance, and Legal.\\n4. Review ECF materials for \"Control Metrics\" section to confirm should any limit value changes and limit breaches have occurred within the period that they are reported\\n5. Review ECF materials for \"Periodic Review\" section to confirm that the Control Value Settings review has been performed within the last 12 months\\n6. Review ECF materials for \"Periodic Review\" section to confirm that the Activity review has been performed within the last 12 month .',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1832',\n topMatchCertainty: '0.6897592545',\n clusterId: 'preventing the risk of e - trading activities using control value settings',\n items: [{\n ccode: '1832',\n cfrequency: 'Event-Driven',\n cid: 'E5C03A63-1354-48DA-AE76-A5F6DE9CE212',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B1',\n score: 0.6897592545,\n name: 'eTrading Outstanding Orders Limit Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6832787991,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6710362434,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1798',\n cfrequency: 'Event-Driven',\n cid: '30CC1DE5-877F-489E-B973-DABC0287B83E',\n ctype: 'Detect',\n position: 4,\n reason_code: 'B2-e',\n score: 0.6693170667,\n name: 'Trade Surveillance - Front Running Review'\n }, {\n ccode: '1833',\n cfrequency: 'Event-Driven',\n cid: '5E6BCB0B-BF14-4B26-B394-197227F2A239',\n ctype: 'Prevent',\n position: 5,\n reason_code: 'B1',\n score: 0.6645083427,\n name: 'eTrading Executed Orders Limit Review'\n }, {\n ccode: '772',\n cfrequency: 'Event-Driven',\n cid: 'EB0812D1-640F-4D9F-8DC6-1B6C5CF32C7F',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B1',\n score: 0.6642022133,\n name: 'eTrading Credit Risk Limit Monitoring'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 7,\n reason_code: 'B2-d',\n score: 0.6556864381,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6532763839,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6505690217,\n name: 'Market Making Monitoring'\n }, {\n ccode: '1824',\n cfrequency: 'Event-Driven',\n cid: 'EAB3D6C0-1FA5-4926-AD2E-A036A13BE2AC',\n ctype: 'Prevent',\n position: 10,\n reason_code: 'B1',\n score: 0.6459549665,\n name: 'eTrading Pre-Trade Price Tolerance Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '012.1 Emergency Shutdown / Kill Switches',\n code: 'JPM-CTRL-073507',\n id: 'JPM-CTRL-073507',\n description: '| 012.1 Emergency Shutdown / Kill Switches\\n| Description (Control Execution Steps):\\n/ Review: The Emergency Shutdown procedures are reviewed at a minimum on an annual basis or in response to changes in the e-trading activity.\\n/ Identify: The review identifies new / amended / decommissioned e-trading activities (including new servers and data centres), associated scripts used on hosts to identify and terminate processes, related re-enablement procedures and designation of authorised personnel and associated roles and responsibilities.\\n/ Action: The Emergency shutdown procedures are tested at least annually and include steps to identify existing / open orders and cancel those orders on external venues and the ability to resume trading following approval from relevant stakeholders (ie Business Management, Technology Management, ETRM).\\n/ Governance: Presentation of completion to ECF.\\n| Objective: To prevent the risk of E-Trading Critical Activity Failure as a result of implementing electronic trading activities that fail to operate as expected resulting in hedging or other execution failures and in extremis runaway e-Trading activity.\\n| Pre Trade\\n| Annually\\n| Control Sub- stantiation: 1. Obtain list of e-trading activities from ECF Toolkit.\\n2. Select sample of 1 activity per LOB.\\n3. Test Plan: Confirm that a documented test plan exists, includes the expected attributes and that the plan has been presented & agreed by the Business / ECF or in ECF (as applicable) of each annual ESS test.\\n4. ESS Testing: Check that Emergency Shutdown invocation and recovery procedures have been tested at least annually, that the tests cover the minimum documented requirements, that the results of the test were presented to the business or in ECF (as applicable) and that any issues / actions were documented and followed up (e.g. as Issues / Action Plans)\\n5. Invocation: Check via enquiry if any invocation occurred in the prior 12 months and if so request documentation and test to ensure all minimum requirements inclusive of risk management and trading resumption were adequately covered, that the invocation was presented at the ECF and that any actions / follow ups were documented (e.g as issues and action plans).\\n/ Sample Size Guidance: Presentation of completion to ECF.',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-CFED67'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-8DA6F8'\n }],\n type: 'Preventative',\n frequency: 'Annually',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1228',\n topMatchCertainty: '0.6656072736',\n clusterId: 'emergency shutdown procedures for e - trading',\n items: [{\n ccode: '1228',\n cfrequency: 'Semi-Annually',\n cid: '35DBD089-3EA3-440F-9FF3-831A76ED3937',\n ctype: 'Prevent',\n position: 1,\n reason_code: 'B2-d',\n score: 0.6656072736,\n name: 'eTrading Kill Switch Functionality Review'\n }, {\n ccode: '698',\n cfrequency: 'Event-Driven',\n cid: 'F76D02AF-DE9F-45CE-B880-71E6231261A5',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.654579401,\n name: 'eTrading Alert Monitoring'\n }, {\n ccode: '1816',\n cfrequency: 'Annually',\n cid: 'DAFA95F6-0EDA-48DE-86BC-3F59E65F200D',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6171558499,\n name: 'eTrading Business Continuity Plan Review'\n }, {\n ccode: '711',\n cfrequency: 'Annually',\n cid: '3F7CC165-511A-42E5-88A9-2664D7F9DC55',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B1',\n score: 0.6170191169,\n name: 'eTrading Desk Procedures Review'\n }, {\n ccode: '1240',\n cfrequency: 'Daily',\n cid: '609AC9A6-2A7E-4F36-9732-A0C99F68522A',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6056858301,\n name: 'End of Day Trade Review'\n }, {\n ccode: '1229',\n cfrequency: 'Event-Driven',\n cid: '64D19ED8-9FBA-4C4E-8DD5-5CF8B582F8CE',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6019387841,\n name: 'eTrading Trade Flow Validation - Duplicate Order Monitoring'\n }, {\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.5877325535,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1367',\n cfrequency: 'Daily',\n cid: 'D9B43802-EEB1-43E4-86CA-8E52D48583A2',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B2-d',\n score: 0.5865775943,\n name: 'End of Day Trade Review (AM)'\n }, {\n ccode: '13',\n cfrequency: 'Daily',\n cid: '30C7EB49-2105-44A4-A2B1-56345043A4D3',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.5848743916,\n name: 'Cancelled or Amended Trades Review'\n }, {\n ccode: '1077',\n cfrequency: 'Event-Driven',\n cid: 'B8190B31-C6A5-4D0D-A0F4-326F684E461D',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.5805501938,\n name: 'eTrading Trade Flow Validation - Order State Monitoring'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '301.1 Trade Permissions Monitoring',\n code: 'JPM-CTRL-144FD8',\n id: 'JPM-CTRL-144FD8',\n description: '301.1 Trade Permissions Monitoring | Objective: To prevent the risk of E-Trading Activities receiving and processing requests / orders that fail to operate in accordance with expected logic and regulatory requirements.\\n| Process: Review: Reviewing and/or Monitoring of any of the following: (1) what can be traded and when (2) trader entitlements.\\n/ Identify: Identify any of the following: (1) trading activity on prohibited instrument.\\n/ Action: In the event that control utilization hits limit take pre-defined action [e.g. (1) Prevent trade booking for the prohibited instrument (2) Determine circumstance of breach]\\n/ Supervision: Front Office are responsible for (1) adjusting limit values in response to changes to historical utilization or risk appetite (2) responding to intraday control\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels\\n/ Governance: Front Office are responsible for (1) control design and function to meet the control objective (2) documenting the controls within ECF Toolkit as part of the approval process for the Activity (3) setting limit values for the control appropriately sized to actual / expected activity levels and (4) reviewing limit values semi-annually [e.g. 2x per year] to confirm that the values are appropriately sized to actual / expected activity levels',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }, {\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-65C14D'\n }],\n type: 'Preventative',\n frequency: 'Transactional (Ad Hoc)',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '775',\n topMatchCertainty: '0.7167470455',\n clusterId: 'monitoring and monitoring trade - offs in trading and processing',\n items: [{\n ccode: '775',\n cfrequency: 'Event-Driven',\n cid: 'C85E0BB9-9F48-4D93-B76C-7F0115DE157C',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-e',\n score: 0.7167470455,\n name: 'eTrading Direct Electronic Access Trading Activity Monitoring'\n }, {\n ccode: '1215',\n cfrequency: 'Daily',\n cid: 'C1E67FA4-FEAE-4205-BD45-88F10725097A',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2',\n score: 0.6903791428,\n name: 'Restricted List Trade Review'\n }, {\n ccode: '1359',\n cfrequency: 'Event-Driven',\n cid: 'EA9E0C31-630F-4550-B2E4-8D8E260524F5',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-e',\n score: 0.6824235916,\n name: 'Restricted Securities - Trading Check (AM) '\n }, {\n ccode: '881',\n cfrequency: 'Monthly',\n cid: '7994BDE7-CA2F-4AA4-A55C-BD5E5600C185',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2-d',\n score: 0.6672757268,\n name: 'Market Data Permissioning Review'\n }, {\n ccode: '1796',\n cfrequency: 'Daily',\n cid: 'BABBAA52-ECC0-4D00-9365-AA0A23B37EA9',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2',\n score: 0.6584288478,\n name: 'Trade Surveillance - Collusive Conduct Review'\n }, {\n ccode: '1093',\n cfrequency: 'Real time',\n cid: '5175D76F-25C6-4F3F-B111-9B433988038A',\n ctype: 'Prevent',\n position: 6,\n reason_code: 'B2-d',\n score: 0.6576030254,\n name: 'Exchange Limits Monitoring'\n }, {\n ccode: '1201',\n cfrequency: 'Daily',\n cid: '91AD476F-49C7-4153-BD58-14664649F9ED',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2',\n score: 0.6540580392,\n name: 'Trader Mandate Breach Review'\n }, {\n ccode: '1363',\n cfrequency: 'Event-Driven',\n cid: 'FFF94339-FC9D-4E29-A9E4-F055AEA435EE',\n ctype: 'Prevent',\n position: 8,\n reason_code: 'B1',\n score: 0.6508535743,\n name: 'Pre Trade Investment Restriction Breach Review'\n }, {\n ccode: '502',\n cfrequency: 'Daily',\n cid: '4D1EE960-EA20-4C86-9541-BBE2824EC250',\n ctype: 'Detect',\n position: 9,\n reason_code: 'B2',\n score: 0.6463863254,\n name: 'Trade Surveillance Alert Review'\n }, {\n ccode: '765',\n cfrequency: 'Annually',\n cid: '28A65DC2-8BBF-4128-BA32-422E916278CB',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2',\n score: 0.6454502344,\n name: 'eTrading Risk Control Limits Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}, {\n name: '560.1 Market Making Agreements NA',\n code: 'JPM-CTRL-7DE565',\n id: 'JPM-CTRL-7DE565',\n description: '560.1 Market Making Agreements NA| BCM.\\nTo detect the risk of not establishing a robust governance program that effectively oversees electronic trading risks and controls in accordance with regulatory expectations by benchmarking\\nReview:\"\\nBCM Review for Firm trading activity having exceeded one percent of the market\\'s trading volume during the last calendar quarter using the One Percent report produced each quarter by Compliance Operate.\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nIdentify:BCM identify those exchange traded securities where we have traded as Principal, have traded more than three days during the calendar quarter and which have not traded on only one side of the market to ensure two sided quotes. OTC securities are to be excluded\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nAction:\"\\nSend an email to the Market Making desk with a copy to Compliance and instruct them to register the Firm as Market Maker in those securities identified. Wait to receive a confirmation from the Desk that this has been completed. Once completed, we are now a market maker with NASDAQ in those securities. Follow-up as needed. \\nDocument findings in Desk Management System. The securities will be on Fidessa\\'s Market Making list.\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nSupervise:\"\\nThe documentation in Desk Management System is sufficient for Supervision.\"\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\nGovern:\"\\nNotifications are given to the Desk Supervisors via Desk Management System that we have satisfied the One Percent Rule for the calendar quarter.\"\\nPost Trade\\nQuarterly\\n1\\tRequest 2 samples of the One Percent report\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n2\\tCheck if exchange traded securities where JPM have traded ass Principal have been identified\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n3\\tCheck that exchange traded securities traded more than three days during the quarter have been identified\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n4\\tCheck Marking Making Desk and Compliance have been sent emails with regards to securities identified in the above points\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n5\\tCheck for confirmations received from the desk\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n6\\tCheck DMS has been updated and signed off for securities identified\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n7\\tCheck desk supervisors have been notified via DMS',\n risks: [{\n riskName: 'Inappropriate E-trading Activity Design/Implementation or Inadequate Governance/Control Framework',\n riskCode: 'JPM-RISK-B35753'\n }],\n type: 'Detective',\n frequency: 'Quarterly',\n automation: 'Manual',\n status: 'TO_MATCH',\n topMatch: '1227',\n topMatchCertainty: '0.7022490501',\n clusterId: '560.1 Market Making Agreements NA',\n items: [{\n ccode: '1227',\n cfrequency: 'Monthly',\n cid: '66830ABB-5273-453F-9D28-2E55E2176548',\n ctype: 'Detect',\n position: 1,\n reason_code: 'B2-d',\n score: 0.7022490501,\n name: 'Market Making Agreement Review'\n }, {\n ccode: '945',\n cfrequency: 'Real time',\n cid: 'E65A6318-A62D-4232-9CEB-8B13B8F78A4C',\n ctype: 'Detect',\n position: 2,\n reason_code: 'B2-d',\n score: 0.6273064613,\n name: 'Market Making Monitoring'\n }, {\n ccode: '944',\n cfrequency: 'Real time',\n cid: '73ADBA68-3C77-43BF-B817-5CAD3295861E',\n ctype: 'Detect',\n position: 3,\n reason_code: 'B2-d',\n score: 0.6152513623,\n name: 'Market Making Spread Monitoring'\n }, {\n ccode: '771',\n cfrequency: 'Event-Driven',\n cid: 'EA02214E-38B4-4696-B8E3-2D3A62B91C39',\n ctype: 'Prevent',\n position: 4,\n reason_code: 'B2',\n score: 0.6098310351,\n name: 'eTrading Adverse Market Movement Review'\n }, {\n ccode: '700',\n cfrequency: 'Monthly',\n cid: 'E3BF0ED3-E160-471B-8CF6-D6D92FD9D9F0',\n ctype: 'Detect',\n position: 5,\n reason_code: 'B2-d',\n score: 0.5969507694,\n name: 'Trader Mandate Review'\n }, {\n ccode: '60',\n cfrequency: 'Daily',\n cid: 'A98D1E88-D9B1-4B5B-9B10-4B5270BB0F2B',\n ctype: 'Detect',\n position: 6,\n reason_code: 'B2-d',\n score: 0.5820810795,\n name: 'Market Risk Limits Adherence'\n }, {\n ccode: '1800',\n cfrequency: 'Daily',\n cid: '1FBB0C88-C678-469C-8DC3-0003C729175E',\n ctype: 'Detect',\n position: 7,\n reason_code: 'B2-d',\n score: 0.5810833573,\n name: 'Trade Surveillance - Benchmark and Fixing Window Activity Review'\n }, {\n ccode: '1799',\n cfrequency: 'Daily',\n cid: '4FFD2287-4B11-407C-99E0-AC64271D6C11',\n ctype: 'Detect',\n position: 8,\n reason_code: 'B2-d',\n score: 0.579862237,\n name: 'Trade Surveillance - Large Order Review'\n }, {\n ccode: '757',\n cfrequency: 'Event-Driven',\n cid: 'AC60F190-864C-42C5-AE68-C1998B020E91',\n ctype: 'Prevent',\n position: 9,\n reason_code: 'B2',\n score: 0.5790172219,\n name: 'eTrading Max Single Order Limit Review'\n }, {\n ccode: '1201',\n cfrequency: 'Daily',\n cid: '91AD476F-49C7-4153-BD58-14664649F9ED',\n ctype: 'Detect',\n position: 10,\n reason_code: 'B2-d',\n score: 0.5728134513,\n name: 'Trader Mandate Breach Review'\n }],\n cdq: 0.95,\n controlQuality: 0.8,\n ldq: null,\n matchedControls: []\n}];\nvar generateJobs = function (account) {\n switch (account.id) {\n case ACCOUNT_IDS.JPM:\n return [{\n id: \"\".concat(ACCOUNT_IDS.JPM, \"_8E9556F2\"),\n name: 'eTrading Front Office',\n account: account,\n numberOfControls: jpmData.length,\n status: JOB_STATUS.PROGRESS,\n fileLoaded: '2024-02-21 17:44:58',\n numberOfRisks: 0\n }];\n case ACCOUNT_IDS.ACCOUNT01:\n return [];\n default:\n throw new Error(\"Error getControlsByClusterId, accountId: \".concat(account.id));\n }\n};\nvar jpmClusters = [{\n id: '003.1 Procedure Management',\n name: '003.1 Procedure Management',\n numberOfControls: 1,\n uuid: 'CL6a83d1'\n}, {\n id: 'technology to invoke emergency shutdown',\n name: 'technology to invoke emergency shutdown',\n numberOfControls: 3,\n uuid: 'CL5b153e'\n}, {\n id: 'review of controls for intraday market dislocations',\n name: 'review of controls for intraday market dislocations',\n numberOfControls: 5,\n uuid: 'CLd6223f'\n}, {\n id: 'monitoring and monitoring system dependencies in e - trading systems',\n name: 'monitoring and monitoring system dependencies in e - trading systems',\n numberOfControls: 13,\n uuid: 'CLf7101e'\n}, {\n id: 'preventing the risk of e - trading activities using control value settings',\n name: 'preventing the risk of e - trading activities using control value settings',\n numberOfControls: 21,\n uuid: 'CLe91fb7'\n}, {\n id: 'monitoring and monitoring trade - offs in trading and processing',\n name: 'monitoring and monitoring trade - offs in trading and processing',\n numberOfControls: 8,\n uuid: 'CLc4588d'\n}, {\n id: 'monitoring and monitoring limit values in e - trading activities',\n name: 'monitoring and monitoring limit values in e - trading activities',\n numberOfControls: 11,\n uuid: 'CL2d7b20'\n}, {\n id: 'detection of client enablement errors in e - trading client on - boarding',\n name: 'detection of client enablement errors in e - trading client on - boarding',\n numberOfControls: 2,\n uuid: 'CLa1eef0'\n}, {\n id: 'e - commerce best execution committee reviews',\n name: 'e - commerce best execution committee reviews',\n numberOfControls: 3,\n uuid: 'CLbfd92c'\n}, {\n id: 'ensuring compliance with non - contractual e - trading activities : a review of',\n name: 'ensuring compliance with non - contractual e - trading activities : a review of',\n numberOfControls: 2,\n uuid: 'CL3fadd0'\n}, {\n id: '053.1 Third Party Relationship Oversight',\n name: '053.1 Third Party Relationship Oversight',\n numberOfControls: 1,\n uuid: 'CLc2123d'\n}, {\n id: '240.1 DEA Client Activity Monitoring',\n name: '240.1 DEA Client Activity Monitoring',\n numberOfControls: 1,\n uuid: 'CL53f018'\n}, {\n id: 'electronic trading control ( e - trading ) tools and controls : review of',\n name: 'electronic trading control ( e - trading ) tools and controls : review of',\n numberOfControls: 13,\n uuid: 'CLb53482'\n}, {\n id: '005.1 E Trading Activity Oversight & Governance',\n name: '005.1 E Trading Activity Oversight & Governance',\n numberOfControls: 1,\n uuid: 'CL63ada9'\n}, {\n id: 'model - based pilot testing of cib global markets',\n name: 'model - based pilot testing of cib global markets',\n numberOfControls: 2,\n uuid: 'CL1bdc41'\n}, {\n id: 'constraining client risk exposure to intraday e - trading',\n name: 'constraining client risk exposure to intraday e - trading',\n numberOfControls: 5,\n uuid: 'CL27fa8e'\n}, {\n id: 'monitoring and monitoring of aggregate maximum trading activity with intraday e - trading',\n name: 'monitoring and monitoring of aggregate maximum trading activity with intraday e - trading',\n numberOfControls: 2,\n uuid: 'CLbd0daf'\n}, {\n id: 'monitoring and monitoring control value changes in intraday e - trading',\n name: 'monitoring and monitoring control value changes in intraday e - trading',\n numberOfControls: 2,\n uuid: 'CLc110fe'\n}, {\n id: 'escalation / challenge of e - trading alerts : review of',\n name: 'escalation / challenge of e - trading alerts : review of',\n numberOfControls: 4,\n uuid: 'CL361f0e'\n}, {\n id: 'detecting and monitoring the risk of tades being unreasonably rejected',\n name: 'detecting and monitoring the risk of tades being unreasonably rejected',\n numberOfControls: 2,\n uuid: 'CL324c5c'\n}, {\n id: 'a plan for small flow rollout to prevent disorderly trading in production',\n name: 'a plan for small flow rollout to prevent disorderly trading in production',\n numberOfControls: 2,\n uuid: 'CL5ebdcd'\n}, {\n id: 'constraining intraday e - trading risk',\n name: 'constraining intraday e - trading risk',\n numberOfControls: 6,\n uuid: 'CLcc5434'\n}, {\n id: '296.1 Japan Securitized Investments onboarding',\n name: '296.1 Japan Securitized Investments onboarding',\n numberOfControls: 1,\n uuid: 'CLec244d'\n}, {\n id: '300.1 Outstanding Risk',\n name: '300.1 Outstanding Risk',\n numberOfControls: 2,\n uuid: 'CL82254f'\n}, {\n id: 'review of stress test standards for e - commerce',\n name: 'review of stress test standards for e - commerce',\n numberOfControls: 3,\n uuid: 'CL33f500'\n}, {\n id: '174.1 RegReview Record / L&C Review Record',\n name: '174.1 RegReview Record / L&C Review Record',\n numberOfControls: 1,\n uuid: 'CL2bc56c'\n}, {\n id: 'monitoring and control of intraday e - trading activities',\n name: 'monitoring and control of intraday e - trading activities',\n numberOfControls: 4,\n uuid: 'CLbfaf51'\n}, {\n id: 'regulation of e - trading activities at relevant venues',\n name: 'regulation of e - trading activities at relevant venues',\n numberOfControls: 3,\n uuid: 'CL8635cd'\n}, {\n id: '171.1 High Volume Event Days Planning & Testing',\n name: '171.1 High Volume Event Days Planning & Testing',\n numberOfControls: 1,\n uuid: 'CL936206'\n}, {\n id: 'detecting and preventing erroneous and untimely estimations of risk',\n name: 'detecting and preventing erroneous and untimely estimations of risk',\n numberOfControls: 2,\n uuid: 'CLe98747'\n}, {\n id: 'contract - based waiver request management for firmwide model risk management',\n name: 'contract - based waiver request management for firmwide model risk management',\n numberOfControls: 3,\n uuid: 'CL71fe44'\n}, {\n id: 'e - trading, vendor controls, and the due diligence question',\n name: 'e - trading, vendor controls, and the due diligence question',\n numberOfControls: 2,\n uuid: 'CLad375d'\n}, {\n id: 'emergency shutdown procedures for e - trading',\n name: 'emergency shutdown procedures for e - trading',\n numberOfControls: 3,\n uuid: 'CLfa6970'\n}, {\n id: '505.1 E Trading Activity Controls Training APAC Eq',\n name: '505.1 E Trading Activity Controls Training APAC Eq',\n numberOfControls: 1,\n uuid: 'CLf280b9'\n}, {\n id: 'monitoring and monitoring of e - trading activities',\n name: 'monitoring and monitoring of e - trading activities',\n numberOfControls: 4,\n uuid: 'CL7cb4ae'\n}, {\n id: 'control to rewrite limits',\n name: 'control to rewrite limits',\n numberOfControls: 2,\n uuid: 'CLac0ca0'\n}, {\n id: 'necessary and sufficient parts of e - trading activities in the ecf tool',\n name: 'necessary and sufficient parts of e - trading activities in the ecf tool',\n numberOfControls: 2,\n uuid: 'CL813397'\n}, {\n id: '559.1 Market Making Agreements APAC',\n name: '559.1 Market Making Agreements APAC',\n numberOfControls: 1,\n uuid: 'CLc4af53'\n}, {\n id: '160.1 E-Trading Activity Inventory',\n name: '160.1 E-Trading Activity Inventory',\n numberOfControls: 1,\n uuid: 'CLdb463e'\n}, {\n id: 'trade / order capture limits in trading applications',\n name: 'trade / order capture limits in trading applications',\n numberOfControls: 2,\n uuid: 'CL7de339'\n}, {\n id: 'controls for the risk of e - trading activities',\n name: 'controls for the risk of e - trading activities',\n numberOfControls: 2,\n uuid: 'CL96989c'\n}, {\n id: '194.1 Algo ID and Market Making / HFT Monitoring',\n name: '194.1 Algo ID and Market Making / HFT Monitoring',\n numberOfControls: 1,\n uuid: 'CL304122'\n}, {\n id: '008.1 Client Risk Limits',\n name: '008.1 Client Risk Limits',\n numberOfControls: 1,\n uuid: 'CLa21ac2'\n}, {\n id: '561.1 Market Making Agreements EMEA',\n name: '561.1 Market Making Agreements EMEA',\n numberOfControls: 1,\n uuid: 'CL9d8c28'\n}, {\n id: '504.1 EMM direct routing access removal',\n name: '504.1 EMM direct routing access removal',\n numberOfControls: 1,\n uuid: 'CL3f22c3'\n}, {\n id: '159.1 E-Trading Stress testing',\n name: '159.1 E-Trading Stress testing',\n numberOfControls: 1,\n uuid: 'CL634f93'\n}, {\n id: '196.1 Market Making agreements',\n name: '196.1 Market Making agreements',\n numberOfControls: 1,\n uuid: 'CLdc79ee'\n}, {\n id: '069.1 Darkpool Administration',\n name: '069.1 Darkpool Administration',\n numberOfControls: 1,\n uuid: 'CL2242a4'\n}, {\n id: '560.1 Market Making Agreements NA',\n name: '560.1 Market Making Agreements NA',\n numberOfControls: 1,\n uuid: 'CL21e867'\n}];\nvar getClusters = function (accountId) {\n switch (accountId) {\n case ACCOUNT_IDS.JPM:\n return jpmClusters.map(function (item) {\n return {\n id: \"\".concat(ACCOUNT_IDS.JPM, \"_\").concat(item.uuid),\n clusterId: item.id,\n name: item.name,\n numberOfControls: item.numberOfControls,\n status: CLUSTER_STATUS.MATCHING,\n matcher: [],\n approver: []\n };\n });\n case ACCOUNT_IDS.ACCOUNT01:\n return [];\n default:\n throw new Error(\"Error getControlsByClusterId, accountId: \".concat(accountId));\n }\n};\nvar getControlsByClusterId = function (id, clusterId) {\n var accountId = id.split('_')[0];\n switch (accountId) {\n case ACCOUNT_IDS.JPM:\n return jpmData.filter(function (control) {\n return control.clusterId === clusterId;\n });\n case ACCOUNT_IDS.ACCOUNT01:\n return [];\n default:\n throw new Error(\"Error getControlsByClusterId, accountId: \".concat(accountId));\n }\n};\nvar generateStore = function () {\n var newAccounts = getAccounts();\n var newJobs = newAccounts.reduce(function (acc, current) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[current.id] = generateJobs(current), _a));\n }, {});\n var newClusters = Object.keys(newJobs).reduce(function (acc, accKey) {\n var clusters = newJobs[accKey].reduce(function (jobAcc, job) {\n var _a;\n var clustersPerAccount = getClusters(accKey);\n return __assign(__assign({}, jobAcc), (_a = {}, _a[job.id] = clustersPerAccount, _a));\n }, {});\n return __assign(__assign({}, acc), clusters);\n }, {});\n var newControls = Object.keys(newClusters).reduce(function (acc, clusterKey) {\n var controls = newClusters[clusterKey].reduce(function (controlAcc, cluster) {\n var _a;\n var clusterId = cluster.clusterId;\n return __assign(__assign({}, controlAcc), (_a = {}, _a[cluster.id] = getControlsByClusterId(cluster.id, clusterId), _a));\n }, {});\n return __assign(__assign({}, acc), controls);\n }, {});\n return {\n accounts: newAccounts,\n jobs: newJobs,\n clusters: newClusters,\n controls: newControls\n };\n};\nvar MODE = {\n APPROVING: 'APPROVING',\n MATCHING: 'MATCHING'\n};\nvar INITIAL_STATE$3 = {\n accounts: [],\n jobs: {},\n clusters: {},\n controls: {},\n selectedControls: [],\n selectedIds: [],\n clustersIdsReadyForApproval: [],\n mode: '',\n onResetSelectedControls: function () {},\n onSetSelectedControls: function () {},\n onSetSelectedIds: function () {},\n onUpdateControls: function () {},\n onSetClustersIdsForApproval: function () {},\n onSetMode: function () {}\n};\nvar Context$1 = /*#__PURE__*/React.createContext(INITIAL_STATE$3);\nvar useConnect = function () {\n return React.useContext(Context$1);\n};\nvar ConnectProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState([]), 2),\n accounts = _b[0],\n setAccounts = _b[1];\n var _c = __read(React.useState({}), 2),\n jobs = _c[0],\n setJobs = _c[1];\n var _d = __read(React.useState({}), 2),\n clusters = _d[0],\n setClusters = _d[1];\n var _e = __read(React.useState({}), 2),\n controls = _e[0],\n setControls = _e[1];\n var _f = __read(React.useState([]), 2),\n selectedControls = _f[0],\n setSelectedControls = _f[1];\n var _g = __read(React.useState([]), 2),\n selectedIds = _g[0],\n setSelectedIds = _g[1];\n var _h = __read(React.useState([]), 2),\n clustersIdsReadyForApproval = _h[0],\n setClustersIdsReadyForApproval = _h[1];\n var _j = __read(React.useState(MODE.MATCHING), 2),\n mode = _j[0],\n setMode = _j[1];\n var onInitStorage = React.useCallback(function () {\n if (accounts.length === 0 || Object.keys(jobs).length === 0 || Object.keys(clusters).length === 0 || Object.keys(controls).length === 0) {\n var _a = generateStore(),\n accounts_1 = _a.accounts,\n jobs_1 = _a.jobs,\n clusters_1 = _a.clusters,\n controls_1 = _a.controls;\n setAccounts(accounts_1);\n setJobs(jobs_1);\n setClusters(clusters_1);\n setControls(controls_1);\n }\n }, [accounts, clusters, controls, jobs]);\n React.useEffect(function () {\n onInitStorage();\n }, [onInitStorage]);\n var onSetSelectedControls = React.useCallback(function (controls) {\n setSelectedControls(controls);\n }, []);\n var onResetSelectedControls = React.useCallback(function () {\n setSelectedControls([]);\n setSelectedIds([]);\n }, []);\n var onSetSelectedIds = React.useCallback(function (ids) {\n setSelectedIds(ids);\n }, []);\n var onUpdateControls = React.useCallback(function (clusterId, control, acinMatches) {\n var _a;\n function updateControl(sel) {\n if (sel.id === control.id) {\n return __assign(__assign({}, sel), {\n matchedControls: acinMatches,\n status: CONTROL_STATUS_PROTOTYPE.READY_FOR_APPROVAL,\n ldq: control.ldq,\n quality: control.quality\n });\n }\n return sel;\n }\n var newControls = __assign(__assign({}, controls), (_a = {}, _a[clusterId] = controls[clusterId].map(updateControl), _a));\n var newSelected = selectedControls.map(updateControl);\n setControls(newControls);\n setSelectedControls(newSelected);\n }, [controls, selectedControls]);\n var onSetClustersIdsForApproval = React.useCallback(function (id) {\n if (!clustersIdsReadyForApproval.includes(id)) {\n setClustersIdsReadyForApproval(__spreadArray(__spreadArray([], __read(clustersIdsReadyForApproval), false), [id], false));\n }\n }, [clustersIdsReadyForApproval]);\n return /*#__PURE__*/React.createElement(Context$1.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$3), {\n accounts: accounts,\n jobs: jobs,\n clusters: clusters,\n controls: controls,\n selectedControls: selectedControls,\n selectedIds: selectedIds,\n clustersIdsReadyForApproval: clustersIdsReadyForApproval,\n onSetSelectedControls: onSetSelectedControls,\n onResetSelectedControls: onResetSelectedControls,\n onSetSelectedIds: onSetSelectedIds,\n onUpdateControls: onUpdateControls,\n onSetClustersIdsForApproval: onSetClustersIdsForApproval,\n mode: mode,\n onSetMode: setMode\n })\n }, children);\n};\nvar getAccountById = function (id, accounts) {\n var foundAccount = accounts.find(function (acc) {\n return acc.id === id;\n });\n if (!foundAccount) return null;\n return foundAccount;\n};\nvar transformControlStatusPrototype = function (status) {\n switch (status) {\n case CONTROL_STATUS_PROTOTYPE.MATCHED:\n return 'Matched';\n case CONTROL_STATUS_PROTOTYPE.READY_FOR_APPROVAL:\n return 'Ready for Approval';\n case CONTROL_STATUS_PROTOTYPE.REQUIRES_SECOND_APPROVAL:\n return 'Requires 2nd Approval';\n case CONTROL_STATUS_PROTOTYPE.TO_MATCH:\n default:\n return 'To Match';\n }\n};\nvar CONTROL_STATUS = {\n TO_CONNECT: 'TO_CONNECT',\n READY_FOR_APPROVAL: 'READY_FOR_APPROVAL',\n IN_PROGRESS: 'IN_PROGRESS',\n SKIPPED: 'SKIPPED',\n COMPLETED: 'COMPLETED'\n};\nvar transformControlStatus = function (status) {\n switch (status) {\n case CONTROL_STATUS.SKIPPED:\n return 'Skipped';\n case CONTROL_STATUS.IN_PROGRESS:\n return 'In Progress';\n case CONTROL_STATUS.COMPLETED:\n return 'Completed';\n case CONTROL_STATUS.READY_FOR_APPROVAL:\n return 'Ready for Approval';\n case CONTROL_STATUS.TO_CONNECT:\n return 'To Connect';\n default:\n return '-';\n }\n};\nvar scoreToPercentage = function (score) {\n if (typeof score === 'string') {\n var number = parseFloat(score);\n if (isNaN(number)) {\n return '-';\n }\n return \"\".concat(Math.round(number * 100), \"%\");\n }\n return \"\".concat(Math.round(score * 100), \"%\");\n};\nfunction getRadioListItems(selectedControls) {\n return selectedControls.map(function (control, idx) {\n return {\n id: control.id,\n status: transformControlStatusPrototype(control.status),\n label: control.name\n };\n });\n}\nvar transformTopTenAcinToCheckListItem = function (items) {\n var _a;\n return (_a = items === null || items === void 0 ? void 0 : items.map(function (item) {\n var _a;\n return {\n id: item.cid,\n name: (_a = item.name) !== null && _a !== void 0 ? _a : item.ccode,\n code: item.ccode,\n score: item.score ? scoreToPercentage(item.score) : undefined,\n riskInventories: item.riskInventories\n };\n })) !== null && _a !== void 0 ? _a : [];\n};\nvar transformAcinToCheckListItem = function (items) {\n var _a;\n return (_a = items === null || items === void 0 ? void 0 : items.map(function (item) {\n return {\n id: item.id,\n name: item.name,\n code: item.code,\n riskInventories: item.riskInventories\n };\n })) !== null && _a !== void 0 ? _a : [];\n};\nvar getAcinControlList = function (control) {\n var items = transformTopTenAcinToCheckListItem(control === null || control === void 0 ? void 0 : control.items);\n var matches = transformAcinToCheckListItem(control === null || control === void 0 ? void 0 : control.matchedControls);\n var matchedIds = control === null || control === void 0 ? void 0 : control.matchedControls.map(function (match) {\n return match.id;\n });\n var itemsIds = control === null || control === void 0 ? void 0 : control.items.map(function (item) {\n return item.cid;\n });\n if (!itemsIds || itemsIds.length === 0) return [];\n if (matchedIds && matchedIds.length > 0) {\n var itemsNotIntoMatch = items.filter(function (item) {\n return !matchedIds.includes(item.id);\n });\n var itemsIntoMatch = items.filter(function (item) {\n return matchedIds.includes(item.id);\n });\n var matchesNotIntoItems = matches.filter(function (match) {\n return !itemsIds.includes(match.id);\n });\n return __spreadArray(__spreadArray(__spreadArray([], __read(matchesNotIntoItems), false), __read(itemsIntoMatch), false), __read(itemsNotIntoMatch), false);\n }\n return items;\n};\nvar defaultSelected = function (selected) {\n var _a;\n return (_a = selected[0]) !== null && _a !== void 0 ? _a : [];\n};\nvar getAcinControl = function (id) {\n return allAcinControls.find(function (acinControl) {\n return acinControl.id === id;\n });\n};\nvar getAdditionalAcinControls = function (ids) {\n return allAcinControls.reduce(function (acc, acinControl) {\n if (ids.includes(acinControl.id)) {\n return __spreadArray(__spreadArray([], __read(acc), false), [{\n cid: acinControl.id,\n name: acinControl.name,\n ccode: acinControl.code\n }], false);\n }\n return acc;\n }, []);\n};\nvar getAllAcinMatches = function (ids) {\n return allAcinControls.filter(function (acinControl) {\n return ids.includes(acinControl.id);\n });\n};\nvar getSearchResults = function (searchText) {\n return allAcinControls.filter(function (acin) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n return ((_b = (_a = acin.code) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes(searchText.toLowerCase())) || ((_d = (_c = acin.name) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes(searchText.toLowerCase())) || ((_f = (_e = acin.action) === null || _e === void 0 ? void 0 : _e.toLowerCase()) === null || _f === void 0 ? void 0 : _f.includes(searchText.toLowerCase())) || ((_h = (_g = acin.review) === null || _g === void 0 ? void 0 : _g.toLowerCase()) === null || _h === void 0 ? void 0 : _h.includes(searchText.toLowerCase())) || ((_k = (_j = acin.identify) === null || _j === void 0 ? void 0 : _j.toLowerCase()) === null || _k === void 0 ? void 0 : _k.includes(searchText.toLowerCase()));\n });\n};\nvar headers = [{\n id: 'code',\n text: 'Control Code'\n}, {\n id: 'controlName',\n text: 'Control Name'\n}, {\n id: 'status',\n text: 'Status'\n}, {\n id: 'topMatchCode',\n text: 'Top Match'\n}, {\n id: 'topMatchCertainty',\n text: 'Top Match Certainty'\n}, {\n id: 'cdq',\n text: 'CDQ'\n}, {\n id: 'smeQuality',\n text: 'SME Quality'\n}, {\n id: 'ldq',\n text: 'LQD'\n}, {\n id: 'matchedControls',\n text: 'Matched Controls'\n}];\nvar transformControlsIntoRows = function (controls) {\n return controls.map(function (control) {\n var _a;\n var matchedControlsText = '-';\n if ((control === null || control === void 0 ? void 0 : control.matchedControls.length) > 0) {\n matchedControlsText = control === null || control === void 0 ? void 0 : control.matchedControls.map(function (match) {\n return match.code;\n }).join(', ');\n } else {\n if (control.status !== CONTROL_STATUS_PROTOTYPE.TO_MATCH) {\n matchedControlsText = 'Is Unique';\n }\n }\n var cells = [{\n id: 'code',\n text: control.code\n }, {\n id: 'controlName',\n text: control.name\n }, {\n id: 'status',\n text: transformControlStatusPrototype(control.status)\n }, {\n id: 'topMatchCode',\n text: control.topMatch\n }, {\n id: 'topMatchCertainty',\n text: scoreToPercentage(control.topMatchCertainty)\n }, {\n id: 'cdq',\n text: scoreToPercentage(control.cdq)\n }, {\n id: 'smeQuality',\n text: control.quality\n }, {\n id: 'ldq',\n text: (_a = control === null || control === void 0 ? void 0 : control.ldq) !== null && _a !== void 0 ? _a : '-'\n }, {\n id: 'matchedControls',\n text: matchedControlsText\n }];\n return {\n id: control.id,\n cells: cells\n };\n });\n};\nvar SELECT_ALL = 'SELECT_ALL';\nvar getSelectedControls = function (id, selectedIds, allControls, selectedControls) {\n var newSelectedIds = [];\n var newSelectedControls = [];\n if (id === SELECT_ALL) {\n if (selectedIds.includes(SELECT_ALL)) {\n newSelectedIds = [];\n newSelectedControls = [];\n } else {\n newSelectedIds = [SELECT_ALL];\n newSelectedControls = allControls;\n }\n } else {\n if (selectedIds.includes(SELECT_ALL)) {\n var allIds = allControls.map(function (c) {\n return c.id;\n }).filter(function (controlId) {\n return controlId !== id;\n });\n newSelectedIds = allIds;\n newSelectedControls = allControls.filter(function (control) {\n return control.id !== id;\n });\n } else if (selectedIds.includes(id)) {\n newSelectedIds = selectedIds.filter(function (sel) {\n return sel !== id;\n });\n newSelectedControls = selectedControls.filter(function (control) {\n return control.id !== id;\n });\n } else if (selectedIds.length < allControls.length - 1) {\n var findControl = allControls.find(function (control) {\n return control.id === id;\n });\n if (findControl) {\n newSelectedIds = __spreadArray(__spreadArray([], __read(selectedIds), false), [id], false);\n newSelectedControls = __spreadArray(__spreadArray([], __read(selectedControls), false), [findControl], false);\n }\n } else {\n newSelectedIds = [SELECT_ALL];\n newSelectedControls = allControls;\n }\n }\n return {\n newSelectedControls: newSelectedControls,\n newSelectedIds: newSelectedIds\n };\n};\nvar Link = styled(Link$2)(templateObject_1$2j || (templateObject_1$2j = __makeTemplateObject([\"\\n text-decoration: underline;\\n\"], [\"\\n text-decoration: underline;\\n\"])));\nvar templateObject_1$2j;\nvar Link$1 = function (props) {\n var className = props.className,\n children = props.children,\n onClick = props.onClick,\n size = props.size;\n return /*#__PURE__*/React.createElement(Link, {\n \"data-testid\": generate(['link'], props),\n className: className,\n onClick: onClick,\n size: size\n }, children);\n};\nvar Cluster = styled(View)(templateObject_1$2k || (templateObject_1$2k = __makeTemplateObject([\"\"], [\"\"])));\nvar Content$3 = styled(View)(templateObject_2$x || (templateObject_2$x = __makeTemplateObject([\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"], [\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"])));\nvar Actions = styled(View)(templateObject_3$q || (templateObject_3$q = __makeTemplateObject([\"\\n \", \" {\\n margin-right: 8px;\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"], [\"\\n \", \" {\\n margin-right: 8px;\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"])), Button);\nvar Checkbox = styled(Checkbox$4)(templateObject_4$l || (templateObject_4$l = __makeTemplateObject([\"\\n cursor: pointer;\\n\"], [\"\\n cursor: pointer;\\n\"])));\nvar templateObject_1$2k, templateObject_2$x, templateObject_3$q, templateObject_4$l;\nvar Cluster$1 = function (props) {\n var className = props.className;\n var history = useHistory();\n var location = useLocation();\n var _a = useParams(),\n id = _a.id,\n jobId = _a.jobId,\n clusterId = _a.clusterId;\n var handleNavigation = useBreadcumbsNavigation().handleNavigation;\n var _b = useConnect(),\n accounts = _b.accounts,\n controls = _b.controls,\n selectedControls = _b.selectedControls,\n selectedIds = _b.selectedIds,\n onSetSelectedControls = _b.onSetSelectedControls,\n onSetSelectedIds = _b.onSetSelectedIds,\n onResetSelectedControls = _b.onResetSelectedControls;\n var currentAccount = getAccountById(id, accounts);\n var _c = __read(React.useState([]), 2),\n tableRows = _c[0],\n setTableRows = _c[1];\n var _d = __read(React.useState([]), 2),\n currentCluster = _d[0],\n setCurrentCluster = _d[1];\n React.useEffect(function () {\n if (controls && controls[clusterId]) {\n var newTableRows = transformControlsIntoRows(controls[clusterId]);\n setCurrentCluster(controls[clusterId]);\n setTableRows(newTableRows);\n }\n }, [clusterId, controls]);\n var handleBreadcrumbNav = function (item) {\n onResetSelectedControls();\n if (item.id === 'jobs') {\n history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.JOBS));\n } else if (item.id === jobId) {\n history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.JOBS, \"/\").concat(jobId));\n } else if (item.id === id) {\n history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.OVERVIEW));\n } else {\n handleNavigation(item.id);\n }\n };\n var handleSelectControls = function (id) {\n var _a = getSelectedControls(id, selectedIds, currentCluster, selectedControls),\n newSelectedIds = _a.newSelectedIds,\n newSelectedControls = _a.newSelectedControls;\n onSetSelectedIds(newSelectedIds);\n onSetSelectedControls(newSelectedControls);\n };\n var handleStartMatching = function () {\n history.push(location.pathname + '/matching');\n };\n var isNotReadyForApproval = function () {\n return currentCluster.some(function (c) {\n return c.status === CONTROL_STATUS_PROTOTYPE.TO_MATCH;\n });\n };\n return /*#__PURE__*/React.createElement(Cluster, {\n \"data-testid\": generate(['page--cluster'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Breadcrumbs, {\n onClick: handleBreadcrumbNav,\n items: [{\n label: 'Tools',\n id: ROUTES.DASHBOARD.id\n }, {\n label: 'Prototype',\n id: ROUTES.PROTOTYPE.id\n }, {\n label: \"\".concat(currentAccount ? currentAccount.name : 'Account not Found'),\n id: id\n }, {\n label: 'Jobs',\n id: 'jobs'\n }, {\n label: jobId,\n id: jobId\n }, {\n label: clusterId,\n id: clusterId\n }]\n }), /*#__PURE__*/React.createElement(Content$3, null, /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n onResetSelectedControls();\n history.goBack();\n }\n }, \"Go back to all clusters\"), /*#__PURE__*/React.createElement(PageTitle$1, null, \"Cluster \", clusterId), tableRows && tableRows.length > 0 && /*#__PURE__*/React.createElement(TableContainer$1, null, /*#__PURE__*/React.createElement(\"table\", null, /*#__PURE__*/React.createElement(\"thead\", null, /*#__PURE__*/React.createElement(\"tr\", null, /*#__PURE__*/React.createElement(\"th\", null, /*#__PURE__*/React.createElement(Checkbox, {\n isChecked: selectedIds.includes(SELECT_ALL),\n size: \"small\",\n onChange: function () {\n return handleSelectControls(SELECT_ALL);\n }\n })), headers.map(function (header) {\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id\n }, header.text);\n }))), /*#__PURE__*/React.createElement(\"tbody\", null, tableRows.map(function (row) {\n var controlId = row.id;\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: controlId\n }, /*#__PURE__*/React.createElement(\"td\", null, /*#__PURE__*/React.createElement(Checkbox, {\n size: \"small\",\n isChecked: selectedIds.includes(SELECT_ALL) || selectedIds.includes(controlId),\n onChange: function () {\n return handleSelectControls(controlId);\n }\n })), row.cells.map(function (cell) {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: cell.id\n }, cell.text);\n }));\n })))), /*#__PURE__*/React.createElement(Actions, null, /*#__PURE__*/React.createElement(Button, {\n disabled: selectedControls.length === 0,\n onClick: handleStartMatching,\n label: \"Start Matching\",\n size: \"small\",\n variant: \"primary\"\n }), /*#__PURE__*/React.createElement(Button, {\n disabled: isNotReadyForApproval(),\n label: \"Submit For Approval\",\n size: \"small\",\n variant: \"secondary\"\n }))));\n};\nvar Connect = styled(View)(templateObject_1$2l || (templateObject_1$2l = __makeTemplateObject([\"\\n height: calc(100vh - 32px);\\n\"], [\"\\n height: calc(100vh - 32px);\\n\"])));\nvar Ul = styled.ul(templateObject_2$y || (templateObject_2$y = __makeTemplateObject([\"\\n margin: 8px 0 8px 16px;\\n list-style: disc;\\n\"], [\"\\n margin: 8px 0 8px 16px;\\n list-style: disc;\\n\"])));\nvar Li = styled.li(templateObject_3$r || (templateObject_3$r = __makeTemplateObject([\"\\n margin: 8px 0;\\n\"], [\"\\n margin: 8px 0;\\n\"])));\nvar templateObject_1$2l, templateObject_2$y, templateObject_3$r;\nvar Connect$1 = function (props) {\n var className = props.className;\n var handleNavigation = useBreadcumbsNavigation().handleNavigation;\n var accounts = useConnect().accounts;\n return /*#__PURE__*/React.createElement(Connect, {\n \"data-testid\": generate(['page--connect'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Breadcrumbs, {\n onClick: function (item) {\n return handleNavigation(item.id);\n },\n items: [{\n label: 'Tools',\n id: ROUTES.DASHBOARD.id\n }, {\n label: 'Protoype',\n id: ROUTES.PROTOTYPE.id\n }]\n }), /*#__PURE__*/React.createElement(PageTitle$1, null, \"All Clients\"), /*#__PURE__*/React.createElement(Ul, null, accounts.map(function (account) {\n var id = account.id;\n return /*#__PURE__*/React.createElement(Li, {\n key: id\n }, /*#__PURE__*/React.createElement(Link$3, {\n to: \"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/overview\")\n }, account.name));\n })));\n};\nvar ConnectMenu = styled(View)(templateObject_1$2m || (templateObject_1$2m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2m;\nvar ConnectMenu$1 = function (props) {\n var className = props.className,\n activeTab = props.activeTab,\n lastBreadcrumbItem = props.lastBreadcrumbItem,\n currentAccount = props.currentAccount;\n var history = useHistory();\n var handleNavigation = useBreadcumbsNavigation().handleNavigation;\n var id = currentAccount.id;\n var handleBreadcrumbNav = function (item) {\n if (item.id === id) {\n history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.OVERVIEW));\n } else {\n handleNavigation(item.id);\n }\n };\n var getBreadcrumbs = function () {\n var breadcrumbs = [{\n label: 'Tools',\n id: ROUTES.DASHBOARD.id\n }, {\n label: 'Prototype',\n id: ROUTES.PROTOTYPE.id\n }, {\n label: \"\".concat(currentAccount.name),\n id: id\n }];\n if (lastBreadcrumbItem) {\n return __spreadArray(__spreadArray([], __read(breadcrumbs), false), [lastBreadcrumbItem], false);\n }\n return breadcrumbs;\n };\n var handleTabClick = function (tabId) {\n switch (tabId) {\n case TABS_IDS.JOBS:\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.JOBS));\n case TABS_IDS.UPLOADER:\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.UPLOADER));\n case TABS_IDS.FILE_STORAGE:\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.FILE_STORAGE));\n case TABS_IDS.OVERVIEW:\n default:\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/\").concat(TABS_IDS.OVERVIEW));\n }\n };\n return /*#__PURE__*/React.createElement(ConnectMenu, {\n \"data-testid\": generate(['connect-menu'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Breadcrumbs, {\n onClick: handleBreadcrumbNav,\n items: getBreadcrumbs()\n }), /*#__PURE__*/React.createElement(TabGroup, {\n variant: \"primary\",\n activeId: activeTab,\n onClick: handleTabClick,\n tabs: tabs\n }));\n};\nvar ConnectClient = styled(View)(templateObject_1$2n || (templateObject_1$2n = __makeTemplateObject([\"\"], [\"\"])));\nvar Content$4 = styled(View)(templateObject_2$z || (templateObject_2$z = __makeTemplateObject([\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"], [\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"])));\nvar templateObject_1$2n, templateObject_2$z;\nvar ConnectClient$1 = function (props) {\n var className = props.className;\n var id = useParams().id;\n var accounts = useConnect().accounts;\n var currentAccount = getAccountById(id, accounts);\n var renderContent = function () {\n if (!currentAccount) {\n return /*#__PURE__*/React.createElement(Content$4, null, /*#__PURE__*/React.createElement(PageTitle$1, null, \"Error, account not found!\"));\n }\n return /*#__PURE__*/React.createElement(Content$4, null, /*#__PURE__*/React.createElement(PageTitle$1, null, currentAccount.name, \" - Overview\"), /*#__PURE__*/React.createElement(Text$1, {\n size: 1\n }, \"This is the overview page for Account: \", currentAccount.name));\n };\n return /*#__PURE__*/React.createElement(ConnectClient, {\n \"data-testid\": generate(['page--connect-client'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ConnectMenu$1, {\n activeTab: TABS_IDS.OVERVIEW,\n currentAccount: currentAccount || {\n id: 'not-found',\n name: 'Account Not Found'\n }\n }), renderContent());\n};\nvar ConnectFileStorage = styled(View)(templateObject_1$2o || (templateObject_1$2o = __makeTemplateObject([\"\"], [\"\"])));\nvar Content$5 = styled(View)(templateObject_2$A || (templateObject_2$A = __makeTemplateObject([\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"], [\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"])));\nvar templateObject_1$2o, templateObject_2$A;\nvar GetFoldersAndFilesDocument = gql(templateObject_1$2p || (templateObject_1$2p = __makeTemplateObject([\"\\n query getFoldersAndFiles($accountCode: String!) {\\n getFoldersAndFiles(accountCode: $accountCode) {\\n id\\n name\\n isFolder\\n }\\n }\\n\"], [\"\\n query getFoldersAndFiles($accountCode: String!) {\\n getFoldersAndFiles(accountCode: $accountCode) {\\n id\\n name\\n isFolder\\n }\\n }\\n\"])));\n/**\r\n * __useGetFoldersAndFilesQuery__\r\n *\r\n * To run a query within a React component, call `useGetFoldersAndFilesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetFoldersAndFilesQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetFoldersAndFilesQuery({\r\n * variables: {\r\n * accountCode: // value for 'accountCode'\r\n * },\r\n * });\r\n */\n\nfunction useGetFoldersAndFilesQuery(baseOptions) {\n return useQuery(GetFoldersAndFilesDocument, baseOptions);\n}\nvar templateObject_1$2p;\nvar DownloadFileDocument = gql(templateObject_1$2q || (templateObject_1$2q = __makeTemplateObject([\"\\n query downloadFile($fileName: String!) {\\n getDownloadUrl(fileName: $fileName)\\n }\\n\"], [\"\\n query downloadFile($fileName: String!) {\\n getDownloadUrl(fileName: $fileName)\\n }\\n\"])));\nfunction useDownloadFileLazyQuery(baseOptions) {\n return useLazyQuery(DownloadFileDocument, baseOptions);\n}\nvar templateObject_1$2q;\nvar FileBrowser = function (_a) {\n var accountCode = _a.accountCode;\n var _b = __read(useState('/'), 2),\n folderPrefix = _b[0],\n setKeyPrefix = _b[1];\n var _c = __read(useState([null, null]), 2),\n files = _c[0],\n setFiles = _c[1];\n var _d = __read(useState(), 2),\n selectedFile = _d[0],\n setSelectedFile = _d[1];\n var _e = useGetFoldersAndFilesQuery({\n variables: {\n accountCode: accountCode\n }\n }),\n data = _e.data,\n loading = _e.loading,\n error = _e.error;\n var _f = __read(useDownloadFileLazyQuery(), 2),\n downloadFile = _f[0],\n _g = _f[1],\n downloadData = _g.data,\n loadingDownload = _g.loading,\n errorDownloading = _g.error;\n useEffect(function () {\n if (downloadData === null || downloadData === void 0 ? void 0 : downloadData.getDownloadUrl) {\n var blob = new Blob([downloadData === null || downloadData === void 0 ? void 0 : downloadData.getDownloadUrl]);\n saveAs(blob, selectedFile || 'defaultfile.txt');\n }\n }, [downloadData, selectedFile]);\n React.useEffect(function () {\n var _a;\n if (folderPrefix !== '/') {\n var filteredData = (_a = data === null || data === void 0 ? void 0 : data.getFoldersAndFiles) === null || _a === void 0 ? void 0 : _a.filter(function (item) {\n var fileParent = path.dirname((item === null || item === void 0 ? void 0 : item.name) || '');\n return !(item === null || item === void 0 ? void 0 : item.isFolder) && folderPrefix.replace(/\\/*$/, '') === fileParent;\n });\n var mappedData = (filteredData === null || filteredData === void 0 ? void 0 : filteredData.map(function (item) {\n return {\n id: (item === null || item === void 0 ? void 0 : item.id) || '',\n name: path.basename((item === null || item === void 0 ? void 0 : item.name) || '')\n };\n })) || [];\n setFiles(mappedData);\n }\n }, [folderPrefix, data]);\n React.useEffect(function () {\n if (folderPrefix === '/') {\n var chongFiles_1 = [];\n var filesData = (data === null || data === void 0 ? void 0 : data.getFoldersAndFiles) || [];\n filesData.map(function (item) {\n (item === null || item === void 0 ? void 0 : item.isFolder) && chongFiles_1.push({\n id: (item === null || item === void 0 ? void 0 : item.name) || '',\n name: path.basename((item === null || item === void 0 ? void 0 : item.name) || ''),\n isDir: item === null || item === void 0 ? void 0 : item.isFolder\n });\n return item;\n });\n filesData && setFiles(chongFiles_1);\n }\n }, [data, accountCode, folderPrefix]);\n var folderChain = React.useMemo(function () {\n var folderChain;\n if (folderPrefix === '/') {\n folderChain = [];\n } else {\n var currentPrefix_1 = '';\n folderChain = folderPrefix.replace(/\\/*$/, '').split('/').map(function (prefixPart) {\n currentPrefix_1 = currentPrefix_1 ? path.join(currentPrefix_1, prefixPart) : prefixPart;\n return {\n id: currentPrefix_1,\n name: prefixPart,\n isDir: true\n };\n });\n }\n folderChain.unshift({\n id: '/',\n name: accountCode,\n isDir: true\n });\n return folderChain;\n }, [folderPrefix, accountCode]);\n var handleFileAction = useCallback(function (data) {\n if (data.id === ChonkyActions.OpenFiles.id) {\n if (data.payload.files && data.payload.files.length !== 1) return;\n if (!data.payload.targetFile || !data.payload.targetFile.isDir) return;\n var newPrefix = \"\".concat(data.payload.targetFile.id.replace(/\\/*$/, ''), \"/\");\n setKeyPrefix(newPrefix);\n }\n if (data.id === ChonkyActions.DownloadFiles.id) {\n var fileToDownload = accountCode + '-' + folderPrefix + data.state.selectedFilesForAction[0].name;\n setSelectedFile(data.state.selectedFilesForAction[0].name);\n downloadFile({\n variables: {\n fileName: fileToDownload\n }\n });\n }\n }, [setKeyPrefix, folderPrefix, downloadFile, accountCode]);\n var actionsToDisable = [ChonkyActions.SelectAllFiles.id, ChonkyActions.OpenSelection.id];\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: 600\n }\n }, (loading || loadingDownload) && /*#__PURE__*/React.createElement(Loading, null), (error || errorDownloading) && /*#__PURE__*/React.createElement(Text$1, null, \"Error!\", error || errorDownloading), /*#__PURE__*/React.createElement(FullFileBrowser, {\n files: files,\n disableDefaultFileActions: actionsToDisable,\n fileActions: [ChonkyActions.DownloadFiles],\n onFileAction: handleFileAction,\n folderChain: folderChain\n }));\n};\nsetChonkyDefaults({\n iconComponent: ChonkyIconFA\n});\nvar ConnectFileStorage$1 = function (props) {\n var className = props.className;\n var id = useParams().id;\n var accounts = useConnect().accounts;\n var currentAccount = getAccountById(id, accounts);\n return /*#__PURE__*/React.createElement(ConnectFileStorage, {\n \"data-testid\": generate(['page--connect-file-storage'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ConnectMenu$1, {\n activeTab: TABS_IDS.FILE_STORAGE,\n currentAccount: currentAccount || {\n id: 'not-found',\n name: 'Account Not Found'\n },\n lastBreadcrumbItem: {\n label: 'File Storage',\n id: TABS_IDS.FILE_STORAGE\n }\n }), /*#__PURE__*/React.createElement(Content$5, null, /*#__PURE__*/React.createElement(PageTitle$1, null, \"Account \", currentAccount ? currentAccount.name : 'Account Not Found', \" - File Storage\"), /*#__PURE__*/React.createElement(FileBrowser, {\n accountCode: (currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.id) || ''\n })));\n};\nvar transformClusterStatus = function (status) {\n switch (status) {\n case CLUSTER_STATUS.MATCHING:\n return 'Matching';\n case CLUSTER_STATUS.MATCHING_FINISHED:\n return 'Finished';\n case CLUSTER_STATUS.SECOND_APPROVING:\n return '2nd Approving';\n case CLUSTER_STATUS.APPROVING:\n default:\n return 'Approving';\n }\n};\nvar headers$1 = [{\n id: 'id',\n text: 'Cluster Id'\n}, {\n id: 'name',\n text: 'Cluster Name'\n}, {\n id: 'numberOfControls',\n text: '# of Controls'\n}, {\n id: 'status',\n text: 'Status'\n}, {\n id: 'matcher',\n text: 'Matcher'\n}, {\n id: 'approver',\n text: 'Approver'\n}, {\n id: 'secondApprover',\n text: '2nd Approver'\n} // Checker (Select names of checker)\n];\nvar transformClustersIntoRows = function (clusters) {\n return clusters.map(function (cluster) {\n var cells = [{\n id: 'id',\n text: cluster.id.toUpperCase()\n }, {\n id: 'name',\n text: cluster.name\n }, {\n id: 'numberOfControls',\n text: cluster.numberOfControls\n }, {\n id: 'status',\n text: transformClusterStatus(cluster.status)\n }, {\n id: 'matcher',\n text: cluster.matcher.length > 0 ? cluster.matcher[0] : '-'\n }, {\n id: 'approver',\n text: cluster.approver.length > 0 ? cluster.approver[0] : '-'\n }, {\n id: 'secondApprover',\n text: cluster.approver.length === 1 ? cluster.approver[1] : '-'\n } // Checker (Select names of checker)\n ];\n return {\n id: cluster.id,\n cells: cells\n };\n });\n};\nvar getJobById = function (id, jobs) {\n var foundJob = jobs.find(function (job) {\n return job.account.id === id;\n });\n if (!foundJob) return null;\n return foundJob;\n};\nvar ConnectJob = styled(View)(templateObject_1$2r || (templateObject_1$2r = __makeTemplateObject([\"\"], [\"\"])));\nvar Content$6 = styled(View)(templateObject_2$B || (templateObject_2$B = __makeTemplateObject([\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"], [\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"])));\nvar templateObject_1$2r, templateObject_2$B;\nvar ConnectJob$1 = function (props) {\n var className = props.className;\n var history = useHistory();\n var _a = useParams(),\n id = _a.id,\n jobId = _a.jobId;\n var _b = useConnect(),\n accounts = _b.accounts,\n clusters = _b.clusters,\n jobs = _b.jobs;\n var currentAccount = getAccountById(id, accounts);\n var handleNavigation = useBreadcumbsNavigation().handleNavigation;\n var _c = __read(React.useState([]), 2),\n tableRows = _c[0],\n setTableRows = _c[1];\n var _d = __read(React.useState(null), 2),\n currentJob = _d[0],\n setCurrentJob = _d[1];\n React.useEffect(function () {\n if (jobId && clusters && clusters[jobId]) {\n var newTableRows = transformClustersIntoRows(clusters[jobId]);\n setTableRows(newTableRows);\n var newCurrentJob = getJobById(id, jobs[id]);\n setCurrentJob(newCurrentJob);\n }\n }, [clusters, id, jobId, jobs]);\n if (!currentAccount) {\n return /*#__PURE__*/React.createElement(ConnectJob, {\n \"data-testid\": generate(['page--connect-job'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Content$6, null, /*#__PURE__*/React.createElement(PageTitle$1, null, \"Error - Job Page for Account id \", id, \" Not Found\"), /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n return history.goBack();\n }\n }, \"Go back to all accounts\")));\n }\n return /*#__PURE__*/React.createElement(ConnectJob, {\n \"data-testid\": generate(['page--connect-job'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Content$6, null, /*#__PURE__*/React.createElement(Breadcrumbs, {\n onClick: function (item) {\n return handleNavigation(item.id);\n },\n items: [{\n label: 'Tools',\n id: ROUTES.DASHBOARD.id\n }, {\n label: 'Prototype',\n id: ROUTES.PROTOTYPE.id\n }]\n }), /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n return history.goBack();\n }\n }, \"Go back to all jobs\"), /*#__PURE__*/React.createElement(PageTitle$1, null, \"All Clusters \", currentJob && '(' + currentJob.numberOfControls + ')'), tableRows && tableRows.length > 0 && /*#__PURE__*/React.createElement(TableContainer$1, null, /*#__PURE__*/React.createElement(\"table\", null, /*#__PURE__*/React.createElement(\"thead\", null, /*#__PURE__*/React.createElement(\"tr\", null, /*#__PURE__*/React.createElement(\"th\", null, \"# row\"), headers$1.map(function (header) {\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id\n }, header.text);\n }))), /*#__PURE__*/React.createElement(\"tbody\", null, tableRows.map(function (row, i) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: row.id\n }, /*#__PURE__*/React.createElement(\"td\", null, i + 1), row.cells.map(function (cell, idx) {\n if (idx === 0) {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: cell.id\n }, /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/jobs/\").concat(jobId, \"/\").concat(row.id));\n }\n }, cell.text));\n }\n return /*#__PURE__*/React.createElement(\"td\", {\n key: cell.id\n }, cell.text);\n }));\n }))))));\n};\nvar transformJobStatus = function (status) {\n switch (status) {\n case JOB_STATUS.COMPLETED:\n return 'Completed';\n case JOB_STATUS.PROGRESS:\n return 'In Progress';\n default:\n return 'To Match';\n }\n};\nvar headers$2 = [{\n id: 'jobId',\n text: 'Job Id'\n}, {\n id: 'name',\n text: 'Job Name'\n}, {\n id: 'status',\n text: 'Matching Status'\n}, {\n id: 'numberOfControls',\n text: '# of Controls'\n}, {\n id: 'numberOfRisks',\n text: '# of Risks'\n}, {\n id: 'fileLoaded',\n text: 'File Loaded'\n}];\nvar transformJobsIntoRows = function (jobs) {\n return jobs.map(function (job) {\n var cells = [{\n id: 'jobId',\n text: job.id\n }, {\n id: 'name',\n text: job.name.toUpperCase()\n }, {\n id: 'status',\n text: transformJobStatus(job.status)\n }, {\n id: 'numberOfControls',\n text: job.numberOfControls\n }, {\n id: 'numberOfRisks',\n text: job.numberOfRisks\n }, {\n id: 'fileLoaded',\n text: job.fileLoaded\n }];\n return {\n id: job.id,\n cells: cells\n };\n });\n};\nvar ConnectJobs = styled(View)(templateObject_1$2s || (templateObject_1$2s = __makeTemplateObject([\"\"], [\"\"])));\nvar Content$7 = styled(View)(templateObject_2$C || (templateObject_2$C = __makeTemplateObject([\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"], [\"\\n background-color: #f6f6f6;\\n padding: 16px;\\n min-height: 680px;\\n\"])));\nvar templateObject_1$2s, templateObject_2$C;\nvar ConnectJobs$1 = function (props) {\n var className = props.className;\n var history = useHistory();\n var id = useParams().id;\n var _a = useConnect(),\n accounts = _a.accounts,\n jobs = _a.jobs;\n var currentAccount = getAccountById(id, accounts);\n var _b = __read(React.useState([]), 2),\n tableRows = _b[0],\n setTableRows = _b[1];\n React.useEffect(function () {\n if (currentAccount && jobs && jobs[currentAccount.id]) {\n var newTableRows = transformJobsIntoRows(jobs[currentAccount.id]);\n setTableRows(newTableRows);\n }\n }, [jobs, currentAccount]);\n return /*#__PURE__*/React.createElement(ConnectJobs, {\n \"data-testid\": generate(['page--connect-jobs'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ConnectMenu$1, {\n activeTab: TABS_IDS.JOBS,\n currentAccount: currentAccount || {\n id: 'not-found',\n name: 'Account Not Found'\n },\n lastBreadcrumbItem: {\n label: 'Jobs',\n id: TABS_IDS.JOBS\n }\n }), /*#__PURE__*/React.createElement(Content$7, null, /*#__PURE__*/React.createElement(PageTitle$1, null, \"All Jobs for Account: \", currentAccount ? currentAccount.name : 'Account Not Found'), tableRows && tableRows.length > 0 && /*#__PURE__*/React.createElement(TableContainer$1, null, /*#__PURE__*/React.createElement(\"table\", null, /*#__PURE__*/React.createElement(\"thead\", null, /*#__PURE__*/React.createElement(\"tr\", null, headers$2.map(function (header) {\n return /*#__PURE__*/React.createElement(\"th\", {\n key: header.id\n }, header.text);\n }))), /*#__PURE__*/React.createElement(\"tbody\", null, tableRows.map(function (row) {\n return /*#__PURE__*/React.createElement(\"tr\", {\n key: row.id\n }, row.cells.map(function (cell) {\n if (cell.id === 'name') {\n return /*#__PURE__*/React.createElement(\"td\", {\n key: cell.id\n }, /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n return history.push(\"\".concat(ROUTES.PROTOTYPE.path, \"/\").concat(id, \"/jobs/\").concat(row.id));\n }\n }, cell.text));\n }\n return /*#__PURE__*/React.createElement(\"td\", {\n key: cell.id\n }, cell.text);\n }));\n }))))));\n};\nvar TAG_VARIANT = {\n default: 'default',\n accent: 'accent',\n success: 'success',\n alert: 'alert'\n}; // This named style should be the wrapper for the component i.e. the module\n\nvar Tag = styled(View)(templateObject_5$d || (templateObject_5$d = __makeTemplateObject([\"\\n padding: 0 8px;\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-radius: 2px;\\n border-radius: 12px;\\n font-size: \", \";\\n -webkit-transition: background-color 0.2s linear, border-color 0.2s linear;\\n transition: background-color 0.2s linear, border-color 0.2s linear;\\n cursor: pointer;\\n\\n \", \"\\n\"], [\"\\n padding: 0 8px;\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-radius: 2px;\\n border-radius: 12px;\\n font-size: \", \";\\n -webkit-transition: background-color 0.2s linear, border-color 0.2s linear;\\n transition: background-color 0.2s linear, border-color 0.2s linear;\\n cursor: pointer;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n switch (p.variant) {\n case TAG_VARIANT.accent:\n {\n return css(templateObject_1$2t || (templateObject_1$2t = __makeTemplateObject([\"\\n background: #0099db;\\n color: #ffffff;\\n \"], [\"\\n background: #0099db;\\n color: #ffffff;\\n \"])));\n }\n case TAG_VARIANT.success:\n {\n return css(templateObject_2$D || (templateObject_2$D = __makeTemplateObject([\"\\n background: #31a582;\\n color: #ffffff;\\n \"], [\"\\n background: #31a582;\\n color: #ffffff;\\n \"])));\n }\n case TAG_VARIANT.alert:\n {\n return css(templateObject_3$s || (templateObject_3$s = __makeTemplateObject([\"\\n background: #e58080;\\n color: #000000;\\n \"], [\"\\n background: #e58080;\\n color: #000000;\\n \"])));\n }\n case TAG_VARIANT.default:\n default:\n {\n return css(templateObject_4$m || (templateObject_4$m = __makeTemplateObject([\"\\n background: #ebebeb;\\n color: #000000;\\n \"], [\"\\n background: #ebebeb;\\n color: #000000;\\n \"])));\n }\n }\n});\nvar TagContent = styled.div(templateObject_6$b || (templateObject_6$b = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n height: 24px;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n height: 24px;\\n\"])));\nvar TagIconWrapper = styled.div(templateObject_7$9 || (templateObject_7$9 = __makeTemplateObject([\"\\n font-size: 1.4rem;\\n align-items: center;\\n display: flex;\\n margin-right: 4px;\\n\"], [\"\\n font-size: 1.4rem;\\n align-items: center;\\n display: flex;\\n margin-right: 4px;\\n\"])));\nvar templateObject_1$2t, templateObject_2$D, templateObject_3$s, templateObject_4$m, templateObject_5$d, templateObject_6$b, templateObject_7$9;\nvar Tag$1 = function (props) {\n var className = props.className,\n children = props.children,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a,\n icon = props.icon;\n var getColor = function () {\n switch (variant) {\n case TAG_VARIANT.alert:\n return '#CC0000';\n case TAG_VARIANT.success:\n return '#31a582';\n case TAG_VARIANT.accent:\n return '#f2f2f2';\n case TAG_VARIANT.default:\n default:\n return undefined;\n }\n };\n return /*#__PURE__*/React.createElement(Tag, {\n \"data-testid\": generate(['tag'], props),\n className: className,\n variant: variant\n }, /*#__PURE__*/React.createElement(TagContent, null, icon && /*#__PURE__*/React.createElement(TagIconWrapper, null, icon(getColor())), children));\n};\nvar RadioList = styled(View)(templateObject_1$2u || (templateObject_1$2u = __makeTemplateObject([\"\"], [\"\"])));\nvar RadioListItemLabel = styled.label(templateObject_3$t || (templateObject_3$t = __makeTemplateObject([\"\\n padding: 6px 8px;\\n display: block;\\n border-bottom: 1px solid #c1c1c1;\\n cursor: pointer;\\n &:hover {\\n background-color: #e5f5fb;\\n }\\n \", \"\\n\"], [\"\\n padding: 6px 8px;\\n display: block;\\n border-bottom: 1px solid #c1c1c1;\\n cursor: pointer;\\n &:hover {\\n background-color: #e5f5fb;\\n }\\n \", \"\\n\"])), function (p) {\n return p.isInspected && css(templateObject_2$E || (templateObject_2$E = __makeTemplateObject([\"\\n background-color: #ccebf8;\\n &:hover {\\n background-color: #ccebf8;\\n }\\n \"], [\"\\n background-color: #ccebf8;\\n &:hover {\\n background-color: #ccebf8;\\n }\\n \"])));\n});\nvar RadioListItemTag = styled(Tag$1)(templateObject_4$n || (templateObject_4$n = __makeTemplateObject([\"\\n margin-left: 6px;\\n margin-right: 6px;\\n\"], [\"\\n margin-left: 6px;\\n margin-right: 6px;\\n\"])));\nvar Radio = styled.span(templateObject_5$e || (templateObject_5$e = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar RadioListItemText = styled.span(templateObject_6$c || (templateObject_6$c = __makeTemplateObject([\"\\n padding-top: 6px;\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"], [\"\\n padding-top: 6px;\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\nvar CopyAction = styled.span(templateObject_7$a || (templateObject_7$a = __makeTemplateObject([\"\\n font-size: 12px;\\n color: \", \";\\n transition: color 0.2s ease-out;\\n\\n &:hover {\\n color: \", \";\\n transition: color 0.2s ease-out;\\n text-decoration: underline;\\n }\\n\"], [\"\\n font-size: 12px;\\n color: \", \";\\n transition: color 0.2s ease-out;\\n\\n &:hover {\\n color: \", \";\\n transition: color 0.2s ease-out;\\n text-decoration: underline;\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n});\nvar templateObject_1$2u, templateObject_2$E, templateObject_3$t, templateObject_4$n, templateObject_5$e, templateObject_6$c, templateObject_7$a;\nvar RadioList$1 = function (props) {\n var className = props.className,\n items = props.items,\n selectedId = props.selectedId,\n onClick = props.onClick;\n var handleClick = function (e, id) {\n e.stopPropagation();\n if (selectedId !== id) {\n onClick(id);\n }\n };\n return /*#__PURE__*/React.createElement(RadioList, {\n \"data-testid\": generate(['radio-list'], props),\n className: className\n }, items.map(function (item) {\n var id = item.id;\n var isSelected = id === selectedId;\n return /*#__PURE__*/React.createElement(RadioListItemLabel, {\n key: id,\n onClick: function (e) {\n return handleClick(e, id);\n },\n isInspected: isSelected\n }, /*#__PURE__*/React.createElement(Radio, null, /*#__PURE__*/React.createElement(Radio$2, {\n onChange: function (_, e) {\n return handleClick(e, id);\n },\n isChecked: isSelected\n }), /*#__PURE__*/React.createElement(RadioListItemTag, {\n variant: item.status === transformControlStatusPrototype(CONTROL_STATUS_PROTOTYPE.MATCHED) ? TAG_VARIANT.accent : TAG_VARIANT.default\n }, item.status)), /*#__PURE__*/React.createElement(RadioListItemText, null, item.label));\n }));\n};\nvar List = styled.ul(templateObject_1$2v || (templateObject_1$2v = __makeTemplateObject([\"\\n list-style: disc;\\n margin-left: 12px;\\n\"], [\"\\n list-style: disc;\\n margin-left: 12px;\\n\"])));\nvar ListItem = styled.li(templateObject_2$F || (templateObject_2$F = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2v, templateObject_2$F;\nvar List$1 = function (props) {\n var className = props.className,\n items = props.items;\n return /*#__PURE__*/React.createElement(List, {\n \"data-testid\": generate(['list'], props),\n className: className\n }, items === null || items === void 0 ? void 0 : items.map(function (item) {\n return /*#__PURE__*/React.createElement(ListItem, {\n key: item.id\n }, item.name);\n }));\n};\nvar SME_QUALITY_OPTIONS = {\n PROCESS: 'PROCESS',\n ATTESTATION: 'ATTESTATION',\n SAMPLE_BASED_MONIT: 'SAMPLE_BASED_MONIT',\n REQUIREMENT: 'REQUIREMENT',\n STATEMENT: 'STATEMENT',\n MISS_INCOMP: 'MISS_INCOMP',\n UNCLEAR: 'UNCLEAR'\n};\nvar transformSmeQuality = function (key) {\n switch (key) {\n case SME_QUALITY_OPTIONS.PROCESS:\n return 'Process';\n case SME_QUALITY_OPTIONS.ATTESTATION:\n return 'Attestation';\n case SME_QUALITY_OPTIONS.SAMPLE_BASED_MONIT:\n return 'Sample Based Monit.';\n case SME_QUALITY_OPTIONS.REQUIREMENT:\n return 'Requirement';\n case SME_QUALITY_OPTIONS.STATEMENT:\n return 'Statement';\n case SME_QUALITY_OPTIONS.UNCLEAR:\n return 'Unclear';\n case SME_QUALITY_OPTIONS.MISS_INCOMP:\n default:\n return 'Miss/Incomp.';\n }\n};\nvar lowQualityOptions = Object.keys(SME_QUALITY_OPTIONS).map(function (key) {\n return {\n value: key,\n label: transformSmeQuality(key)\n };\n});\nvar QualitySelector = styled(View)(templateObject_1$2w || (templateObject_1$2w = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar RadioLabel = styled.label(templateObject_2$G || (templateObject_2$G = __makeTemplateObject([\"\\n display: flex;\\n cursor: pointer;\\n margin-right: 6px;\\n font-size: \", \";\\n\\n \", \" {\\n margin-left: 8px;\\n margin-right: 6px;\\n }\\n\"], [\"\\n display: flex;\\n cursor: pointer;\\n margin-right: 6px;\\n font-size: \", \";\\n\\n \", \" {\\n margin-left: 8px;\\n margin-right: 6px;\\n }\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, Radio$2);\nvar SelectWrapper = styled.span(templateObject_3$u || (templateObject_3$u = __makeTemplateObject([\"\\n display: block;\\n width: 150px;\\n\"], [\"\\n display: block;\\n width: 150px;\\n\"])));\nvar templateObject_1$2w, templateObject_2$G, templateObject_3$u;\nvar QualitySelector$1 = function (props) {\n var className = props.className,\n smeQuality = props.smeQuality,\n setSmeQuality = props.setSmeQuality,\n setLdq = props.setLdq,\n ldq = props.ldq;\n var handleHighQuality = function () {\n setSmeQuality(SME_QUALITY.HIGH);\n };\n var handleLowQuality = function () {\n setSmeQuality(SME_QUALITY.LOW);\n };\n return /*#__PURE__*/React.createElement(QualitySelector, {\n \"data-testid\": generate(['quality-selector'], props),\n className: className\n }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RadioLabel, {\n onClick: handleHighQuality\n }, /*#__PURE__*/React.createElement(Radio$2, {\n onChange: handleHighQuality,\n isChecked: smeQuality === SME_QUALITY.HIGH\n }), \"High Qual.\"), /*#__PURE__*/React.createElement(RadioLabel, {\n onClick: handleLowQuality\n }, /*#__PURE__*/React.createElement(Radio$2, {\n onChange: handleLowQuality,\n isChecked: smeQuality === SME_QUALITY.LOW\n }), \" Low Qual.\"), smeQuality === SME_QUALITY.LOW && /*#__PURE__*/React.createElement(SelectWrapper, null, /*#__PURE__*/React.createElement(Select$1, {\n options: lowQualityOptions,\n value: ldq !== null && ldq !== void 0 ? ldq : '',\n onChange: function (value) {\n setLdq(\"\".concat(value));\n }\n }))));\n};\nvar Inventories = styled(View)(templateObject_1$2x || (templateObject_1$2x = __makeTemplateObject([\"\\n \", \" {\\n margin-right: 6px;\\n\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"], [\"\\n \", \" {\\n margin-right: 6px;\\n\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"])), Tag);\nvar templateObject_1$2x;\nvar getHasInventory = function (currentInventory, inventories) {\n return !!(inventories === null || inventories === void 0 ? void 0 : inventories.find(function (item) {\n return item.code === currentInventory.code;\n }));\n};\nvar getHasAtLeastOneInventory = function (currentInventories, inventories) {\n return currentInventories === null || currentInventories === void 0 ? void 0 : currentInventories.some(function (current) {\n return getHasInventory(current, inventories);\n });\n};\nvar Inventories$1 = function (props) {\n var className = props.className,\n riskInventories = props.riskInventories,\n inventories = props.inventories;\n var renderTagInventories = function () {\n if (!riskInventories) return null;\n return riskInventories.map(function (current) {\n var hasInventory = getHasInventory(current, inventories);\n return /*#__PURE__*/React.createElement(Tag$1, {\n key: current.code,\n variant: hasInventory ? TAG_VARIANT.success : TAG_VARIANT.default\n }, current.name);\n });\n };\n return /*#__PURE__*/React.createElement(Inventories, {\n \"data-testid\": generate(['inventories'], props),\n className: className\n }, renderTagInventories());\n};\nvar ClientControlDetails = styled(View)(templateObject_1$2y || (templateObject_1$2y = __makeTemplateObject([\"\"], [\"\"])));\nvar CDQ = styled.span(templateObject_2$H || (templateObject_2$H = __makeTemplateObject([\"\\n font-size: \", \";\\n color: \", \";\\n\"], [\"\\n font-size: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(2);\n}, function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar AccordionHeading = styled(Heading$6)(templateObject_3$v || (templateObject_3$v = __makeTemplateObject([\"\\n font-weight: bolder;\\n display: flex;\\n\"], [\"\\n font-weight: bolder;\\n display: flex;\\n\"])));\nvar CardDescription = styled(Card$3)(templateObject_4$o || (templateObject_4$o = __makeTemplateObject([\"\\n margin-top: 4px;\\n\"], [\"\\n margin-top: 4px;\\n\"])));\nvar CardHeading = styled(Heading$6)(templateObject_5$f || (templateObject_5$f = __makeTemplateObject([\"\\n font-weight: bolder;\\n display: flex;\\n padding-bottom: 12px;\\n\\n & > div:first-child,\\n & > a:first-child {\\n margin-right: 12px;\\n }\\n\"], [\"\\n font-weight: bolder;\\n display: flex;\\n padding-bottom: 12px;\\n\\n & > div:first-child,\\n & > a:first-child {\\n margin-right: 12px;\\n }\\n\"])));\nvar Heading$2 = styled(Heading$6)(templateObject_6$d || (templateObject_6$d = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\"], [\"\\n margin-bottom: 10px;\\n\"])));\nvar Content$8 = styled(View)(templateObject_7$b || (templateObject_7$b = __makeTemplateObject([\"\\n font-size: 13px;\\n line-height: 1.4;\\n\"], [\"\\n font-size: 13px;\\n line-height: 1.4;\\n\"])));\nvar Description$1 = styled(View)(templateObject_8$7 || (templateObject_8$7 = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\"], [\"\\n margin-bottom: 10px;\\n\"])));\nvar ControlInfo = styled(View)(templateObject_9$6 || (templateObject_9$6 = __makeTemplateObject([\"\\n display: block;\\n\"], [\"\\n display: block;\\n\"])));\nvar ControlQuality = styled(View)(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n height: 40px;\\n margin-bottom: 8px;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n height: 40px;\\n margin-bottom: 8px;\\n\"])));\nvar TextHeading = styled(View)(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar InventoriesWrapper = styled(View)(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject([\"\\n & > div {\\n :not(:last-child) {\\n margin-right: 6px;\\n }\\n }\\n\"], [\"\\n & > div {\\n :not(:last-child) {\\n margin-right: 6px;\\n }\\n }\\n\"])));\nvar DescriptionItem = styled.div(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\\n \", \" {\\n p {\\n font-size: 13px;\\n line-height: 1.4;\\n\\n &:not(:first-of-type) {\\n margin-top: 6px;\\n }\\n }\\n }\\n\"], [\"\\n margin-bottom: 10px;\\n\\n \", \" {\\n p {\\n font-size: 13px;\\n line-height: 1.4;\\n\\n &:not(:first-of-type) {\\n margin-top: 6px;\\n }\\n }\\n }\\n\"])), Markdown);\nvar BoldText = styled.div(templateObject_14$3 || (templateObject_14$3 = __makeTemplateObject([\"\\n font-weight: bolder;\\n\"], [\"\\n font-weight: bolder;\\n\"])));\nvar templateObject_1$2y, templateObject_2$H, templateObject_3$v, templateObject_4$o, templateObject_5$f, templateObject_6$d, templateObject_7$b, templateObject_8$7, templateObject_9$6, templateObject_10$3, templateObject_11$3, templateObject_12$3, templateObject_13$3, templateObject_14$3;\nvar ClientControlDetails$1 = function (props) {\n var className = props.className,\n control = props.control,\n acinInventories = props.acinInventories,\n smeQuality = props.smeQuality,\n setSmeQuality = props.setSmeQuality,\n ldq = props.ldq,\n setLdq = props.setLdq;\n var name = control.name,\n cdq = control.cdq,\n riskInventories = control.riskInventories,\n riaDescription = control.riaDescription,\n description = control.description,\n type = control.type,\n automation = control.automation,\n frequency = control.frequency,\n risks = control.risks,\n id = control.id;\n var _a = __read(React.useState(false), 2),\n showRia = _a[0],\n setShowRia = _a[1];\n React.useEffect(function () {\n setShowRia(false);\n }, [id]);\n return /*#__PURE__*/React.createElement(ClientControlDetails, {\n \"data-testid\": generate(['client-control-details'], props),\n className: className\n }, control && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ControlQuality, null, /*#__PURE__*/React.createElement(Text$1, null, \"CDQ: \", /*#__PURE__*/React.createElement(CDQ, null, scoreToPercentage(cdq))), /*#__PURE__*/React.createElement(QualitySelector$1, {\n smeQuality: smeQuality,\n setSmeQuality: setSmeQuality,\n ldq: ldq,\n setLdq: setLdq\n })), /*#__PURE__*/React.createElement(Heading$2, {\n size: 1\n }, name), /*#__PURE__*/React.createElement(InventoriesWrapper, null, /*#__PURE__*/React.createElement(Inventories$1, {\n riskInventories: riskInventories,\n inventories: acinInventories\n })), /*#__PURE__*/React.createElement(CardDescription, null, !showRia ? /*#__PURE__*/React.createElement(CardHeading, null, /*#__PURE__*/React.createElement(TextHeading, null, \"Control Description \"), riaDescription && /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n return setShowRia(true);\n }\n }, \"RIA Summary\")) : /*#__PURE__*/React.createElement(CardHeading, null, riaDescription && /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n return setShowRia(false);\n }\n }, \"Control Description\"), /*#__PURE__*/React.createElement(TextHeading, null, \"RIA Summary \")), /*#__PURE__*/React.createElement(Content$8, null, showRia && riaDescription && /*#__PURE__*/React.createElement(Description$1, null, riaDescription.review && /*#__PURE__*/React.createElement(DescriptionItem, null, /*#__PURE__*/React.createElement(BoldText, null, \"Review:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: riaDescription.review\n })), riaDescription.identify && /*#__PURE__*/React.createElement(DescriptionItem, null, /*#__PURE__*/React.createElement(BoldText, null, \"Identify:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: riaDescription.identify\n })), riaDescription.action && /*#__PURE__*/React.createElement(DescriptionItem, null, /*#__PURE__*/React.createElement(BoldText, null, \"Action:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: riaDescription.action\n }))), !showRia && /*#__PURE__*/React.createElement(Description$1, null, description ? description : 'No description available for this client control'), /*#__PURE__*/React.createElement(ControlInfo, null, /*#__PURE__*/React.createElement(Tag$1, null, type)), /*#__PURE__*/React.createElement(ControlInfo, null, /*#__PURE__*/React.createElement(Tag$1, null, automation)), /*#__PURE__*/React.createElement(ControlInfo, null, /*#__PURE__*/React.createElement(Tag$1, null, frequency)))), /*#__PURE__*/React.createElement(Accordion$2, {\n header: function () {\n return /*#__PURE__*/React.createElement(TextHeading, null, \"Client Risks\");\n }\n }, /*#__PURE__*/React.createElement(Content$8, null, risks && /*#__PURE__*/React.createElement(List$1, {\n items: risks.map(function (risk) {\n return {\n id: risk.riskCode,\n name: risk.riskName\n };\n })\n })))));\n};\nvar CheckList = styled(View)(templateObject_1$2z || (templateObject_1$2z = __makeTemplateObject([\"\"], [\"\"])));\nvar CheckListItem = styled.div(templateObject_3$w || (templateObject_3$w = __makeTemplateObject([\"\\n padding: 6px 8px;\\n display: block;\\n border-bottom: 1px solid #c1c1c1;\\n cursor: pointer;\\n &:hover {\\n background-color: #e5f5fb;\\n }\\n \", \"\\n\"], [\"\\n padding: 6px 8px;\\n display: block;\\n border-bottom: 1px solid #c1c1c1;\\n cursor: pointer;\\n &:hover {\\n background-color: #e5f5fb;\\n }\\n \", \"\\n\"])), function (p) {\n return p.isInspected && css(templateObject_2$I || (templateObject_2$I = __makeTemplateObject([\"\\n background-color: #ccebf8;\\n &:hover {\\n background-color: #ccebf8;\\n }\\n \"], [\"\\n background-color: #ccebf8;\\n &:hover {\\n background-color: #ccebf8;\\n }\\n \"])));\n});\nvar Checkbox$1 = styled(Checkbox$4)(templateObject_4$p || (templateObject_4$p = __makeTemplateObject([\"\\n margin-right: 6px;\\n\"], [\"\\n margin-right: 6px;\\n\"])));\nvar CheckboxWrapper = styled(View)(templateObject_5$g || (templateObject_5$g = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar CheckListItemText = styled.span(templateObject_6$e || (templateObject_6$e = __makeTemplateObject([\"\\n padding-top: 6px;\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"], [\"\\n padding-top: 6px;\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\nvar Text = styled.span(templateObject_7$c || (templateObject_7$c = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(0);\n});\nvar SmallText = styled.span(templateObject_8$8 || (templateObject_8$8 = __makeTemplateObject([\"\\n margin-left: 8px;\\n\\n color: \", \";\\n font-size: \", \";\\n\"], [\"\\n margin-left: 8px;\\n\\n color: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar Dot = styled.span(templateObject_9$7 || (templateObject_9$7 = __makeTemplateObject([\"\\n margin: 0 6px;\\n width: 12px;\\n height: 12px;\\n display: block;\\n background-color: #31a582;\\n border-radius: 6px;\\n\"], [\"\\n margin: 0 6px;\\n width: 12px;\\n height: 12px;\\n display: block;\\n background-color: #31a582;\\n border-radius: 6px;\\n\"])));\nvar templateObject_1$2z, templateObject_2$I, templateObject_3$w, templateObject_4$p, templateObject_5$g, templateObject_6$e, templateObject_7$c, templateObject_8$8, templateObject_9$7;\nvar CheckList$1 = function (props) {\n var className = props.className,\n items = props.items,\n inspectedId = props.inspectedId,\n checkedIds = props.checkedIds,\n onInspect = props.onInspect,\n onChange = props.onChange,\n matchedIds = props.matchedIds,\n clientInventories = props.clientInventories;\n return /*#__PURE__*/React.createElement(CheckList, {\n \"data-testid\": generate(['check-list'], props),\n className: className\n }, items.map(function (item) {\n var id = item.id;\n var isInspected = inspectedId ? inspectedId === id : false;\n var atLeastOneInventory = getHasAtLeastOneInventory(item.riskInventories, clientInventories);\n var isChecked = checkedIds.includes(id);\n return /*#__PURE__*/React.createElement(CheckListItem, {\n key: id,\n isInspected: isInspected,\n onClick: function () {\n return onInspect(id);\n },\n \"data-testid\": generate([\"item--\".concat(id), isChecked ? 'item--checked' : null, isInspected ? 'item--inspected' : null])\n }, /*#__PURE__*/React.createElement(CheckboxWrapper, null, /*#__PURE__*/React.createElement(Checkbox$1, {\n size: \"small\",\n isChecked: isChecked,\n onChange: function () {\n onChange(id);\n }\n }), item.score && /*#__PURE__*/React.createElement(Badge$1, {\n variant: \"default\"\n }, item.score), item.code && /*#__PURE__*/React.createElement(Text, null, item.code), atLeastOneInventory && /*#__PURE__*/React.createElement(Text, {\n \"data-testid\": \"item-has-inventory\"\n }, /*#__PURE__*/React.createElement(Dot, null)), (matchedIds === null || matchedIds === void 0 ? void 0 : matchedIds.includes(item.id)) && /*#__PURE__*/React.createElement(SmallText, null, \"Currently Matched\")), item.name && /*#__PURE__*/React.createElement(CheckListItemText, null, item.name));\n }));\n};\nvar AcinControlDetails = styled(View)(templateObject_1$2A || (templateObject_1$2A = __makeTemplateObject([\"\"], [\"\"])));\nvar Certainty = styled.span(templateObject_2$J || (templateObject_2$J = __makeTemplateObject([\"\\n font-size: \", \";\\n color: \", \";\\n margin-left: 6px;\\n\"], [\"\\n font-size: \", \";\\n color: \", \";\\n margin-left: 6px;\\n\"])), function (p) {\n return p.theme.type.getSize(2);\n}, function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar TextHeading$1 = styled(Heading$6)(templateObject_3$x || (templateObject_3$x = __makeTemplateObject([\"\\n font-weight: bolder;\\n\"], [\"\\n font-weight: bolder;\\n\"])));\nvar CardHeading$1 = styled(Heading$6)(templateObject_4$q || (templateObject_4$q = __makeTemplateObject([\"\\n font-weight: bolder;\\n display: flex;\\n padding-bottom: 12px;\\n\\n & > div:first-child,\\n & > a:first-child {\\n margin-right: 12px;\\n }\\n\"], [\"\\n font-weight: bolder;\\n display: flex;\\n padding-bottom: 12px;\\n\\n & > div:first-child,\\n & > a:first-child {\\n margin-right: 12px;\\n }\\n\"])));\nvar Heading$3 = styled(Heading$6)(templateObject_5$h || (templateObject_5$h = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\"], [\"\\n margin-bottom: 10px;\\n\"])));\nvar AcinControlHeader = styled(View)(templateObject_6$f || (templateObject_6$f = __makeTemplateObject([\"\\n height: 40px;\\n margin-bottom: 8px;\\n display: flex;\\n align-items: center;\\n\"], [\"\\n height: 40px;\\n margin-bottom: 8px;\\n display: flex;\\n align-items: center;\\n\"])));\nvar Content$9 = styled(View)(templateObject_7$d || (templateObject_7$d = __makeTemplateObject([\"\\n font-size: 13px;\\n line-height: 1.4;\\n\"], [\"\\n font-size: 13px;\\n line-height: 1.4;\\n\"])));\nvar ControlInfo$1 = styled(View)(templateObject_8$9 || (templateObject_8$9 = __makeTemplateObject([\"\\n display: block;\\n\"], [\"\\n display: block;\\n\"])));\nvar CardDescription$1 = styled(Card$3)(templateObject_9$8 || (templateObject_9$8 = __makeTemplateObject([\"\\n margin-top: 4px;\\n\"], [\"\\n margin-top: 4px;\\n\"])));\nvar Description$2 = styled.div(templateObject_10$4 || (templateObject_10$4 = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\"], [\"\\n margin-bottom: 10px;\\n\"])));\nvar DescriptionItem$1 = styled.div(templateObject_11$4 || (templateObject_11$4 = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\\n \", \" {\\n p {\\n font-size: 13px;\\n line-height: 1.4;\\n\\n &:not(:first-of-type) {\\n margin-top: 6px;\\n }\\n }\\n }\\n\"], [\"\\n margin-bottom: 10px;\\n\\n \", \" {\\n p {\\n font-size: 13px;\\n line-height: 1.4;\\n\\n &:not(:first-of-type) {\\n margin-top: 6px;\\n }\\n }\\n }\\n\"])), Markdown);\nvar BoldText$1 = styled.span(templateObject_12$4 || (templateObject_12$4 = __makeTemplateObject([\"\\n font-weight: bolder;\\n\"], [\"\\n font-weight: bolder;\\n\"])));\nvar NoMatch = styled(View)(templateObject_13$4 || (templateObject_13$4 = __makeTemplateObject([\"\\n text-align: center;\\n line-height: 1.5;\\n padding-top: \", \";\\n\"], [\"\\n text-align: center;\\n line-height: 1.5;\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(22);\n});\nvar InventoriesWrapper$1 = styled(View)(templateObject_14$4 || (templateObject_14$4 = __makeTemplateObject([\"\\n & > div {\\n :not(:last-child) {\\n margin-right: 6px;\\n }\\n }\\n\"], [\"\\n & > div {\\n :not(:last-child) {\\n margin-right: 6px;\\n }\\n }\\n\"])));\nvar templateObject_1$2A, templateObject_2$J, templateObject_3$x, templateObject_4$q, templateObject_5$h, templateObject_6$f, templateObject_7$d, templateObject_8$9, templateObject_9$8, templateObject_10$4, templateObject_11$4, templateObject_12$4, templateObject_13$4, templateObject_14$4;\nvar AcinControlDetails$1 = function (props) {\n var className = props.className,\n control = props.control,\n score = props.score,\n clientInventories = props.clientInventories,\n hasSearch = props.hasSearch;\n if (!control) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, !hasSearch && /*#__PURE__*/React.createElement(NoMatch, {\n \"data-testid\": \"control-is-unique\"\n }, \"This control is \", /*#__PURE__*/React.createElement(BoldText$1, null, \"unique\"), \" to client \", /*#__PURE__*/React.createElement(\"br\", null), \"and there's no matching Index Control.\"));\n }\n var code = control.code,\n name = control.name,\n action = control.action,\n identify = control.identify,\n review = control.review,\n riskInventories = control.riskInventories,\n type = control.type,\n automation = control.automation,\n frequency = control.frequency,\n risks = control.risks;\n var noDescription = !action && !identify && !review;\n return /*#__PURE__*/React.createElement(AcinControlDetails, {\n \"data-testid\": generate(['acin-control-details'], props),\n className: className\n }, /*#__PURE__*/React.createElement(AcinControlHeader, {\n \"data-testid\": \"acin-control-details-code\"\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"span\", null, code), score && /*#__PURE__*/React.createElement(React.Fragment, null, ' | ', \"Certainty:\", /*#__PURE__*/React.createElement(Certainty, null, score)))), /*#__PURE__*/React.createElement(Heading$3, {\n size: 1\n }, name), /*#__PURE__*/React.createElement(InventoriesWrapper$1, null, /*#__PURE__*/React.createElement(Inventories$1, {\n riskInventories: riskInventories,\n inventories: clientInventories\n })), /*#__PURE__*/React.createElement(CardDescription$1, null, /*#__PURE__*/React.createElement(CardHeading$1, null, /*#__PURE__*/React.createElement(TextHeading$1, null, \"Control Description \")), /*#__PURE__*/React.createElement(Content$9, null, /*#__PURE__*/React.createElement(Description$2, null, review && /*#__PURE__*/React.createElement(DescriptionItem$1, null, /*#__PURE__*/React.createElement(BoldText$1, null, \"Review:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: review\n })), identify && /*#__PURE__*/React.createElement(DescriptionItem$1, null, /*#__PURE__*/React.createElement(BoldText$1, null, \"Identify:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: identify\n })), action && /*#__PURE__*/React.createElement(DescriptionItem$1, null, /*#__PURE__*/React.createElement(BoldText$1, null, \"Action:\"), /*#__PURE__*/React.createElement(Markdown, {\n content: action\n })), noDescription && 'No description available for this Acin control'), type && /*#__PURE__*/React.createElement(ControlInfo$1, null, /*#__PURE__*/React.createElement(Tag$1, null, type)), automation && /*#__PURE__*/React.createElement(ControlInfo$1, null, /*#__PURE__*/React.createElement(Tag$1, null, automation)), frequency && /*#__PURE__*/React.createElement(ControlInfo$1, null, /*#__PURE__*/React.createElement(Tag$1, null, frequency)))), /*#__PURE__*/React.createElement(Accordion$2, {\n header: function () {\n return /*#__PURE__*/React.createElement(TextHeading$1, null, \"Index Risks\");\n }\n }, /*#__PURE__*/React.createElement(Content$9, null, risks && /*#__PURE__*/React.createElement(List$1, {\n items: risks.map(function (risk) {\n return {\n id: risk.code,\n name: risk.name\n };\n })\n }))));\n};\nvar AcinControlDetails$2 = styled(AcinControlDetails$1)(templateObject_1$2B || (templateObject_1$2B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2B;\nvar ControlMatching = styled(View)(templateObject_1$2C || (templateObject_1$2C = __makeTemplateObject([\"\\n height: 100vh;\\n\"], [\"\\n height: 100vh;\\n\"])));\nvar ArrowLeft = styled(IconChevronLeft)(templateObject_2$K || (templateObject_2$K = __makeTemplateObject([\"\\n margin-right: 8px;\\n\"], [\"\\n margin-right: 8px;\\n\"])));\nvar ControlMatchingContent = styled(View)(templateObject_3$y || (templateObject_3$y = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n height: calc(100vh - 60px);\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n height: calc(100vh - 60px);\\n\"])));\nvar ClientControls = styled(View)(templateObject_4$r || (templateObject_4$r = __makeTemplateObject([\"\\n min-width: 290px;\\n width: 290px;\\n overflow-y: auto;\\n\"], [\"\\n min-width: 290px;\\n width: 290px;\\n overflow-y: auto;\\n\"])));\nvar ClientControlDetails$2 = styled(View)(templateObject_5$i || (templateObject_5$i = __makeTemplateObject([\"\\n width: 50%;\\n background-color: #f6f6f6;\\n padding: 10px 4px 10px 8px;\\n overflow-y: auto;\\n\"], [\"\\n width: 50%;\\n background-color: #f6f6f6;\\n padding: 10px 4px 10px 8px;\\n overflow-y: auto;\\n\"])));\nvar AcinControlDetails$3 = styled(View)(templateObject_6$g || (templateObject_6$g = __makeTemplateObject([\"\\n width: 50%;\\n background-color: #f6f6f6;\\n padding: 10px 8px 10px 4px;\\n overflow-y: auto;\\n\"], [\"\\n width: 50%;\\n background-color: #f6f6f6;\\n padding: 10px 8px 10px 4px;\\n overflow-y: auto;\\n\"])));\nvar AcinControls = styled(View)(templateObject_7$e || (templateObject_7$e = __makeTemplateObject([\"\\n width: 290px;\\n min-width: 290px;\\n overflow-y: auto;\\n\"], [\"\\n width: 290px;\\n min-width: 290px;\\n overflow-y: auto;\\n\"])));\nvar ControlMatchingActions = styled(View)(templateObject_8$a || (templateObject_8$a = __makeTemplateObject([\"\\n display: flex;\\n justify-content: flex-end;\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 10px;\\n box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 16px;\\n background-color: #fff;\\n align-items: center;\\n\\n \", \" {\\n margin-right: 8px;\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"], [\"\\n display: flex;\\n justify-content: flex-end;\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n padding: 10px;\\n box-shadow: rgba(0, 0, 0, 0.3) 0px 0px 16px;\\n background-color: #fff;\\n align-items: center;\\n\\n \", \" {\\n margin-right: 8px;\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"])), Button);\nvar BackLinkWrapper = styled(View)(templateObject_9$9 || (templateObject_9$9 = __makeTemplateObject([\"\\n padding: 10px 8px;\\n\"], [\"\\n padding: 10px 8px;\\n\"]))); // Search\n\nvar SearchWrapper$1 = styled(View)(templateObject_10$5 || (templateObject_10$5 = __makeTemplateObject([\"\\n padding: 10px 8px;\\n\"], [\"\\n padding: 10px 8px;\\n\"])));\nvar NoSearchResults = styled(View)(templateObject_11$5 || (templateObject_11$5 = __makeTemplateObject([\"\\n padding: 10px 8px;\\n display: flex;\\n align-items: center;\\n\"], [\"\\n padding: 10px 8px;\\n display: flex;\\n align-items: center;\\n\"])));\nvar IconAlertError = styled(IconAlertError$2)(templateObject_12$5 || (templateObject_12$5 = __makeTemplateObject([\"\\n margin-right: 6px;\\n\"], [\"\\n margin-right: 6px;\\n\"])));\nvar LinkWrapper = styled(View)(templateObject_13$5 || (templateObject_13$5 = __makeTemplateObject([\"\\n margin-right: 24px;\\n\"], [\"\\n margin-right: 24px;\\n\"])));\nvar ActionLink = styled(Link$1)(templateObject_14$5 || (templateObject_14$5 = __makeTemplateObject([\"\\n margin-left: 12px;\\n &:first-child {\\n margin-left: 0;\\n }\\n\"], [\"\\n margin-left: 12px;\\n &:first-child {\\n margin-left: 0;\\n }\\n\"])));\nvar templateObject_1$2C, templateObject_2$K, templateObject_3$y, templateObject_4$r, templateObject_5$i, templateObject_6$g, templateObject_7$e, templateObject_8$a, templateObject_9$9, templateObject_10$5, templateObject_11$5, templateObject_12$5, templateObject_13$5, templateObject_14$5;\nvar ControlMatching$1 = function (props) {\n var _a, _b, _c;\n var className = props.className;\n var clusterId = useParams().clusterId;\n var history = useHistory();\n var _d = useConnect(),\n selectedControls = _d.selectedControls,\n onUpdateControls = _d.onUpdateControls,\n mode = _d.mode; // client controls\n\n var _e = __read(React.useState(getRadioListItems(selectedControls)), 2),\n clientControlsList = _e[0],\n setClientControlsList = _e[1];\n var _f = __read(React.useState(defaultSelected(selectedControls)), 2),\n currentClientControl = _f[0],\n setCurrentClientControl = _f[1]; // SME quality\n\n var _g = __read(React.useState(SME_QUALITY.HIGH), 2),\n smeQuality = _g[0],\n setSmeQuality = _g[1];\n var _h = __read(React.useState(null), 2),\n ldq = _h[0],\n setLdq = _h[1]; // acin controls\n\n var _j = __read(React.useState([]), 2),\n acinControlsList = _j[0],\n setAcinControlsList = _j[1];\n var _k = __read(React.useState(null), 2),\n currentAcinControl = _k[0],\n setCurrentAcinControl = _k[1];\n var _l = __read(React.useState([]), 2),\n acinControlsIdsChecked = _l[0],\n setAcinControlsIdsChecked = _l[1]; // search\n\n var _m = __read(React.useState(''), 2),\n searchText = _m[0],\n setSearchText = _m[1];\n var _o = __read(React.useState(null), 2),\n searchedResults = _o[0],\n setSearchedResults = _o[1]; // combined acin and search result ids checked\n\n var _p = __read(React.useState([]), 2),\n acinAndSearchIdsChecked = _p[0],\n setAcinAndSearchIdsChecked = _p[1]; // last match\n\n var _q = __read(React.useState(null), 2),\n lastMatch = _q[0],\n setLastMatch = _q[1];\n var preselectAcinControl = React.useCallback(function (foundAcin) {\n if (foundAcin && (currentClientControl.status === CONTROL_STATUS_PROTOTYPE.TO_MATCH || currentClientControl.status !== CONTROL_STATUS_PROTOTYPE.TO_MATCH && currentClientControl.matchedControls.length > 0)) {\n setCurrentAcinControl(foundAcin);\n } else {\n setCurrentAcinControl(null);\n }\n }, [(_a = currentClientControl === null || currentClientControl === void 0 ? void 0 : currentClientControl.matchedControls) === null || _a === void 0 ? void 0 : _a.length, currentClientControl.status]);\n React.useEffect(function () {\n if (searchedResults && acinAndSearchIdsChecked) {\n setAcinAndSearchIdsChecked(acinControlsIdsChecked);\n }\n }, [acinAndSearchIdsChecked, acinControlsIdsChecked, searchedResults]);\n React.useEffect(function () {\n var _a;\n if (searchText) {\n // get search results\n var results = getSearchResults(searchText); // transform search results into checkboxes list\n\n var acinResultList = transformAcinToCheckListItem(results);\n setSearchedResults(acinResultList); // preselect first acin control\n\n if (acinResultList.length > 0) {\n var acinControl = getAcinControl(acinResultList[0].id);\n preselectAcinControl(acinControl);\n } else {\n setCurrentAcinControl(null);\n }\n } else {\n setSearchedResults(null);\n var foundAcin = getAcinControl((_a = acinControlsList[0]) === null || _a === void 0 ? void 0 : _a.id);\n preselectAcinControl(foundAcin); // reset\n\n setAcinAndSearchIdsChecked([]);\n }\n }, [acinControlsList, preselectAcinControl, searchText]);\n React.useEffect(function () {\n if (selectedControls.length > 0) {\n // set client control radio list:\n setClientControlsList(getRadioListItems(selectedControls)); // preselect matched controls:\n\n var currentAcinControlIds = currentClientControl.matchedControls.map(function (acinControl) {\n return acinControl.id;\n });\n setAcinControlsIdsChecked(currentAcinControlIds);\n if (currentClientControl.quality) {\n setSmeQuality(currentClientControl.quality);\n }\n if (currentClientControl.ldq) {\n setLdq(currentClientControl.ldq);\n } // set acin top ten checkbox list:\n\n var acinList = getAcinControlList(currentClientControl);\n setAcinControlsList(acinList);\n var foundAcin = getAcinControl(acinList[0].id);\n preselectAcinControl(foundAcin);\n } else {\n history.goBack();\n }\n }, [currentClientControl, currentClientControl.items, currentClientControl.matchedControls, history, preselectAcinControl, selectedControls]);\n var handleSmeQuality = function (value) {\n if (value === SME_QUALITY.HIGH) {\n setLdq(null);\n }\n setSmeQuality(value);\n };\n var resetSMEQuality = function () {\n handleSmeQuality(SME_QUALITY.HIGH);\n };\n var handleCurrentClientControl = function (id) {\n if (currentClientControl.id === id) return;\n var foundControl = selectedControls.find(function (sel) {\n return sel.id === id;\n });\n if (foundControl) {\n setCurrentClientControl(foundControl);\n resetSMEQuality();\n handleClearSearch();\n }\n };\n var handleCopyMatch = function () {\n if (!lastMatch) return;\n var lastMatchedIds = lastMatch.map(function (acinControl) {\n return acinControl.id;\n });\n setAcinControlsIdsChecked(lastMatchedIds); // set additional Acin into list:\n\n var additionalIds = lastMatchedIds.filter(function (lastId) {\n var exist = true;\n currentClientControl === null || currentClientControl === void 0 ? void 0 : currentClientControl.items.forEach(function (sel) {\n if (sel.cid === lastId) {\n exist = false;\n }\n });\n return exist;\n });\n if (additionalIds.length > 0) {\n var additionalAcinControls = getAdditionalAcinControls(additionalIds);\n var allAcinControls = __spreadArray(__spreadArray([], __read(additionalAcinControls), false), __read(currentClientControl.items), false);\n var acinList = transformTopTenAcinToCheckListItem(allAcinControls);\n setAcinControlsList(acinList);\n var foundAcin = getAcinControl(acinList[0].id);\n if (foundAcin) {\n setCurrentAcinControl(foundAcin);\n }\n } else {\n var firstMatchedAcinId_1 = lastMatchedIds[0];\n var firstAcinControl = acinControlsList.find(function (acinControl) {\n return acinControl.id === firstMatchedAcinId_1;\n });\n if (firstAcinControl) {\n setCurrentAcinControl(firstAcinControl);\n }\n }\n setSearchText('');\n };\n var handleChangeAcinControl = function (id) {\n if (acinControlsIdsChecked.includes(id)) {\n setAcinControlsIdsChecked(acinControlsIdsChecked.filter(function (acinId) {\n return acinId !== id;\n }));\n } else {\n setAcinControlsIdsChecked(__spreadArray(__spreadArray([], __read(acinControlsIdsChecked), false), [id], false));\n }\n };\n var handleChangeSearchedResults = function (id) {\n if (acinControlsIdsChecked.includes(id)) {\n setAcinControlsIdsChecked(acinControlsIdsChecked.filter(function (acinId) {\n return acinId !== id;\n })); // if current id (now unchecked) is not inside the top ten matches\n\n if (!currentClientControl.items.find(function (item) {\n return item.cid === id;\n })) {\n // REMOVE it from the acinControlsList\n var acinList = acinControlsList.filter(function (list) {\n return list.id !== id;\n });\n setAcinControlsList(acinList);\n }\n } else {\n setAcinControlsIdsChecked(__spreadArray(__spreadArray([], __read(acinControlsIdsChecked), false), [id], false)); // if current id (now checked) is not inside the top ten matches\n\n if (!currentClientControl.items.find(function (item) {\n return item.cid === id;\n })) {\n var acinControl = getAcinControl(id);\n if (acinControl) {\n var acinItem = transformAcinToCheckListItem([acinControl]); // ADD it on top of the acinControlsList:\n\n var acinList = __spreadArray(__spreadArray([], __read(acinItem), false), __read(acinControlsList), false);\n setAcinControlsList(acinList);\n }\n }\n }\n };\n var handleInspectAcinControl = function (id) {\n var foundAcin = getAcinControl(id);\n if (foundAcin) {\n setCurrentAcinControl(foundAcin);\n }\n };\n var getNextClientControlTodo = function () {\n var nextIndex = selectedControls.findIndex(function (sel) {\n return sel.id === currentClientControl.id;\n }) + 1;\n if (nextIndex === selectedControls.length) {\n return null;\n }\n return selectedControls[nextIndex];\n };\n var getPrevClientControl = function () {\n var index = selectedControls.findIndex(function (sel) {\n return sel.id === currentClientControl.id;\n }) - 1;\n if (index === -1) {\n return selectedControls[selectedControls.length - 1];\n }\n return selectedControls[index];\n };\n var goToNextClientControl = function () {\n var nextClientControl = getNextClientControlTodo();\n if (nextClientControl) {\n handleCurrentClientControl(nextClientControl.id);\n resetSMEQuality();\n } else {\n history.goBack();\n }\n };\n var onMatchAndNext = function () {\n var acinMatches = getAllAcinMatches(acinControlsIdsChecked);\n var updatedCurrentClientControl = __assign(__assign({}, currentClientControl), {\n quality: smeQuality,\n ldq: ldq\n });\n setLastMatch(acinMatches);\n onUpdateControls(clusterId, updatedCurrentClientControl, acinMatches);\n goToNextClientControl();\n };\n var onNoMatchAndNext = function () {\n var updatedCurrentClientControl = __assign(__assign({}, currentClientControl), {\n quality: smeQuality,\n ldq: ldq\n });\n onUpdateControls(clusterId, updatedCurrentClientControl, []);\n goToNextClientControl();\n };\n var getMatchAndNextDisabled = function () {\n // no acinControlsIdsChecked => button disabled\n if (acinControlsIdsChecked.length === 0) return true; // \"smeQuality\" is LOW && \"ldq\" is not selected => button disabled\n\n if (smeQuality === SME_QUALITY.LOW && ldq === null) {\n return true;\n } // matchedControls and acinControlsIdsChecked have same length\n\n var matchedControls = currentClientControl.matchedControls;\n if (matchedControls.length > 0 && matchedControls.length === acinControlsIdsChecked.length) {\n // if smeQuality changed => button enabled\n if (currentClientControl.quality !== smeQuality) {\n return false;\n } // if every ids selected are the same as matchedControls ids => button disabled\n\n return matchedControls.every(function (match) {\n return acinControlsIdsChecked.includes(match.id);\n });\n } // some selected ids changed => then button enabled\n\n return false;\n };\n var getUniqueDisabled = function () {\n return acinControlsIdsChecked.length > 0;\n };\n var handleSearch = function (event) {\n setSearchText(event.target.value);\n };\n var handleClearSearch = function () {\n setSearchText('');\n var foundAcin = getAcinControl(acinControlsList[0].id);\n preselectAcinControl(foundAcin);\n };\n var handlePrev = function () {\n var prevControl = getPrevClientControl();\n handleCurrentClientControl(prevControl.id);\n resetSMEQuality();\n };\n var handleNext = function () {\n var nextClientControl = getNextClientControlTodo();\n if (nextClientControl) {\n handleCurrentClientControl(nextClientControl.id);\n } else {\n setCurrentClientControl(defaultSelected(selectedControls));\n }\n resetSMEQuality();\n };\n return /*#__PURE__*/React.createElement(ControlMatching, {\n \"data-testid\": generate(['page--control-matching'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ControlMatchingContent, null, /*#__PURE__*/React.createElement(ClientControls, null, /*#__PURE__*/React.createElement(BackLinkWrapper, null, /*#__PURE__*/React.createElement(Link$1, {\n onClick: function () {\n return history.goBack();\n }\n }, /*#__PURE__*/React.createElement(ArrowLeft, null), \" Back to All Controls\")), currentClientControl && clientControlsList && /*#__PURE__*/React.createElement(RadioList$1, {\n onClick: handleCurrentClientControl,\n items: clientControlsList,\n selectedId: currentClientControl.id\n })), /*#__PURE__*/React.createElement(ClientControlDetails$2, null, /*#__PURE__*/React.createElement(ClientControlDetails$1, {\n control: currentClientControl,\n smeQuality: smeQuality,\n setSmeQuality: handleSmeQuality,\n ldq: ldq,\n setLdq: setLdq,\n acinInventories: currentAcinControl === null || currentAcinControl === void 0 ? void 0 : currentAcinControl.riskInventories\n })), /*#__PURE__*/React.createElement(AcinControlDetails$3, null, /*#__PURE__*/React.createElement(AcinControlDetails$2, {\n hasSearch: !!searchText,\n control: currentAcinControl,\n clientInventories: currentClientControl.riskInventories,\n score: (_b = acinControlsList.find(function (acin) {\n return acin.id === (currentAcinControl === null || currentAcinControl === void 0 ? void 0 : currentAcinControl.id);\n })) === null || _b === void 0 ? void 0 : _b.score\n })), /*#__PURE__*/React.createElement(AcinControls, null, /*#__PURE__*/React.createElement(SearchWrapper$1, null, /*#__PURE__*/React.createElement(SearchBar, {\n onSearch: handleSearch,\n onClear: handleClearSearch,\n searchInput: searchText,\n placeholder: \"Search Acin Control by Code or Name\"\n })), !searchedResults ? /*#__PURE__*/React.createElement(CheckList$1, {\n inspectedId: currentAcinControl === null || currentAcinControl === void 0 ? void 0 : currentAcinControl.id,\n items: acinControlsList,\n checkedIds: acinControlsIdsChecked,\n onInspect: handleInspectAcinControl,\n onChange: handleChangeAcinControl,\n matchedIds: (_c = currentClientControl === null || currentClientControl === void 0 ? void 0 : currentClientControl.matchedControls) === null || _c === void 0 ? void 0 : _c.map(function (match) {\n return match.id;\n }),\n clientInventories: currentClientControl.riskInventories\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, searchedResults.length > 0 ? /*#__PURE__*/React.createElement(CheckList$1, {\n inspectedId: currentAcinControl === null || currentAcinControl === void 0 ? void 0 : currentAcinControl.id,\n items: searchedResults,\n checkedIds: acinAndSearchIdsChecked,\n onInspect: handleInspectAcinControl,\n onChange: handleChangeSearchedResults,\n matchedIds: currentClientControl === null || currentClientControl === void 0 ? void 0 : currentClientControl.matchedControls.map(function (match) {\n return match.id;\n }),\n clientInventories: currentClientControl.riskInventories\n }) : /*#__PURE__*/React.createElement(NoSearchResults, null, /*#__PURE__*/React.createElement(IconAlertError, null), \"No Acin Control Found.\")))), /*#__PURE__*/React.createElement(ControlMatchingActions, null, mode === MODE.MATCHING && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinkWrapper, null, /*#__PURE__*/React.createElement(ActionLink, {\n onClick: handlePrev\n }, \"Previous\"), /*#__PURE__*/React.createElement(ActionLink, {\n onClick: handleNext\n }, \"Next\")), /*#__PURE__*/React.createElement(Button, {\n onClick: handleCopyMatch,\n disabled: !lastMatch,\n variant: \"secondary\",\n label: \"Copy Last Match\"\n }), /*#__PURE__*/React.createElement(Button, {\n onClick: onNoMatchAndNext,\n disabled: getUniqueDisabled(),\n variant: \"primary\",\n label: \"Unique & Next\"\n }), /*#__PURE__*/React.createElement(Button, {\n onClick: onMatchAndNext,\n disabled: getMatchAndNextDisabled(),\n variant: \"primary\",\n label: \"Match & Next\"\n })), mode === MODE.APPROVING && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(LinkWrapper, null, /*#__PURE__*/React.createElement(ActionLink, {\n onClick: handlePrev\n }, \"Previous\"), /*#__PURE__*/React.createElement(ActionLink, {\n onClick: handleNext\n }, \"Next\")), /*#__PURE__*/React.createElement(Button, {\n variant: \"primary\",\n label: \"Reject\"\n }), /*#__PURE__*/React.createElement(Button, {\n variant: \"primary\",\n label: \"Approve & Next\"\n }))));\n};\nvar DataTable$3 = styled(Card$3)(templateObject_1$2D || (templateObject_1$2D = __makeTemplateObject([\"\"], [\"\"])));\nvar TableTitle = styled(Heading$6)(templateObject_3$z || (templateObject_3$z = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n return !p.hasPagination && css(templateObject_2$L || (templateObject_2$L = __makeTemplateObject([\"\\n margin-bottom: 16px;\\n \"], [\"\\n margin-bottom: 16px;\\n \"])));\n});\nvar templateObject_1$2D, templateObject_2$L, templateObject_3$z;\nvar DataTable$4 = function (props) {\n var children = props.children,\n className = props.className,\n table = props.table,\n _a = props.hasPagination,\n hasPagination = _a === void 0 ? false : _a;\n var renderTable = function () {\n if (!table) return null;\n var tableHeading = /*#__PURE__*/React.createElement(TableTitle, {\n hasPagination: hasPagination,\n size: 2\n }, table.title);\n var tableComponent = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DataTable$6, {\n headers: table.headers,\n rows: table.rows,\n size: \"small\",\n variation: \"secondary\",\n preventWrapping: true\n }), children);\n if (table.rows.length === 0) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, tableHeading, /*#__PURE__*/React.createElement(Alert, {\n title: \"No Results Found\",\n status: \"info\"\n }));\n }\n if (!hasPagination) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, tableHeading, tableComponent);\n }\n return /*#__PURE__*/React.createElement(Pagination, {\n title: tableHeading\n }, tableComponent);\n };\n return /*#__PURE__*/React.createElement(DataTable$3, {\n \"data-testid\": generate(['data-table'], props),\n className: className\n }, renderTable());\n};\nvar DataTable$5 = styled(DataTable$4)(templateObject_1$2E || (templateObject_1$2E = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2E;\nvar GetAccountsDocument = gql(templateObject_1$2F || (templateObject_1$2F = __makeTemplateObject([\"\\n query getAccounts {\\n getAccounts {\\n id\\n name\\n code\\n }\\n }\\n\"], [\"\\n query getAccounts {\\n getAccounts {\\n id\\n name\\n code\\n }\\n }\\n\"])));\n/**\r\n * __useGetAccountsQuery__\r\n *\r\n * To run a query within a React component, call `useGetAccountsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAccountsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAccountsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetAccountsQuery(baseOptions) {\n return useQuery(GetAccountsDocument, baseOptions);\n}\nvar templateObject_1$2F;\nvar getAccountData = function (accounts, onAccountClick) {\n if (!accounts || accounts.length === 0) return null;\n var headers = [{\n key: 'accountCode',\n label: 'Account Code'\n }, {\n key: 'accountName',\n label: 'Account Name'\n }];\n var rows = accounts.map(function (acc) {\n var _a;\n return {\n accountCode: /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n onAccountClick && onAccountClick(acc);\n }\n }, (_a = acc.code) !== null && _a !== void 0 ? _a : acc.id),\n accountName: acc.name\n };\n });\n return {\n title: 'All Clients',\n headers: headers,\n rows: rows\n };\n};\nvar AccountRoute = styled(View)(templateObject_1$2G || (templateObject_1$2G = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2G;\nvar AccountRoute$1 = function (props) {\n var className = props.className,\n onAccountClick = props.onAccountClick;\n var _a = __read(React.useState(null), 2),\n table = _a[0],\n setTable = _a[1];\n var _b = useGetAccountsQuery(),\n data = _b.data,\n loading = _b.loading,\n error = _b.error;\n React.useEffect(function () {\n if (!loading && !error && data) {\n var table_1 = getAccountData(data.getAccounts, onAccountClick);\n setTable(table_1);\n }\n }, [data, loading, error, onAccountClick]);\n return /*#__PURE__*/React.createElement(AccountRoute, {\n \"data-testid\": generate(['page--account-route'], props),\n className: className\n }, /*#__PURE__*/React.createElement(PageContentLayout, null, table && /*#__PURE__*/React.createElement(DataTable$5, {\n table: table\n })));\n};\nvar AccountRoute$2 = styled(AccountRoute$1)(templateObject_1$2H || (templateObject_1$2H = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2H;\nvar GetUploadUrlDocument = gql(templateObject_1$2I || (templateObject_1$2I = __makeTemplateObject([\"\\n query getUploadUrl {\\n getUploadUrl\\n }\\n\"], [\"\\n query getUploadUrl {\\n getUploadUrl\\n }\\n\"])));\n/**\r\n * __useGetUploadUrlQuery__\r\n *\r\n * To run a query within a React component, call `useGetUploadUrlQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUploadUrlQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUploadUrlQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetUploadUrlQuery(baseOptions) {\n return useQuery(GetUploadUrlDocument, baseOptions);\n}\nvar templateObject_1$2I;\nvar FileUploader = styled(View)(templateObject_1$2J || (templateObject_1$2J = __makeTemplateObject([\"\"], [\"\"])));\nvar NotificationWrapper = styled(View)(templateObject_2$M || (templateObject_2$M = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n\"])));\nvar ErrorWrapper$1 = styled(View)(templateObject_3$A || (templateObject_3$A = __makeTemplateObject([\"\\n height: 200px;\\n width: 100%;\\n border: 1px dashed \", \";\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n padding: 0 \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n\"], [\"\\n height: 200px;\\n width: 100%;\\n border: 1px dashed \", \";\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n padding: 0 \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(20);\n});\nvar templateObject_1$2J, templateObject_2$M, templateObject_3$A;\nvar addTimestampToFilename = function (fileName, timestamp) {\n if (timestamp === void 0) {\n timestamp = new Date().getTime().toString();\n }\n var name = fileName.substring(0, fileName.lastIndexOf('.'));\n var extension = fileName.substring(fileName.lastIndexOf('.'));\n return \"\".concat(name, \"-\").concat(timestamp).concat(extension);\n};\n\n// on toaster messages and inside the uploader:\n\nvar supportedTypes = '.csv,.txt,.xls,.xlsx,.xml,.json';\nvar supportedTypesUserMessage = 'CSV, TXT, XLS, XLSX, XML, JSON';\nvar FileUploader$1 = function (props) {\n var className = props.className;\n var accessToken = useAuth().accessToken;\n var _a = useToaster(),\n onAddToast = _a.onAddToast,\n toasts = _a.toasts;\n var _b = __read(React.useState(null), 2),\n files = _b[0],\n setFiles = _b[1];\n var _c = __read(React.useState(0), 2),\n percentage = _c[0],\n setPercentage = _c[1];\n var _d = __read(React.useState(UPLOAD_STATUS.DEFAULT), 2),\n fileStatus = _d[0],\n setFileStatus = _d[1];\n var _e = useGetUploadUrlQuery(),\n data = _e.data,\n loading = _e.loading,\n error = _e.error;\n React.useEffect(function () {\n if (files && files.length > 0) {\n if (percentage >= 0 && percentage < 100) {\n setFileStatus(UPLOAD_STATUS.LOADING);\n }\n } else {\n setFileStatus(UPLOAD_STATUS.DEFAULT);\n }\n }, [files, percentage]);\n React.useEffect(function () {\n if (toasts && toasts.length === 0 && fileStatus === UPLOAD_STATUS.ERROR) {\n onClear();\n }\n }, [fileStatus, toasts]);\n var onClear = function () {\n setPercentage(0);\n setFileStatus(UPLOAD_STATUS.DEFAULT);\n setFiles(null);\n };\n var uploadFile = function (uploadFile) {\n return __awaiter(void 0, void 0, void 0, function () {\n var urlPath, fileName, url, fileData, _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n urlPath = data === null || data === void 0 ? void 0 : data.getUploadUrl;\n if (!urlPath) {\n throw new Error('upload error');\n }\n fileName = addTimestampToFilename(uploadFile.name);\n url = \"\".concat(urlPath, \"&fileName=\").concat(fileName);\n _b = (_a = Buffer).from;\n return [4\n /*yield*/, uploadFile.arrayBuffer()];\n case 1:\n fileData = _b.apply(_a, [_c.sent()]);\n setFiles([uploadFile]);\n return [4\n /*yield*/, axios.put(\"\".concat(url), fileData, {\n headers: {\n 'Content-Type': uploadFile.type,\n 'x-ms-blob-type': 'BlockBlob',\n 'x-ms-blob-content-type': uploadFile.type,\n Authorization: \"Bearer \".concat(accessToken)\n },\n maxBodyLength: Infinity,\n maxContentLength: Infinity,\n onUploadProgress: function (progressEvent) {\n var percentCompleted = Math.round(progressEvent.loaded * 100 / (progressEvent.total || 100));\n setPercentage(percentCompleted);\n }\n }).then(function () {\n onAddToast({\n id: \"uploadingFiles\",\n title: 'File Upload',\n message: \"Your file \".concat(uploadFile.name, \" has been uploaded successfully\"),\n status: 'success',\n onCloseCallback: onClear\n });\n setFileStatus(UPLOAD_STATUS.SUCCESS);\n }).catch(function () {\n var filename = uploadFile.name ? \"\\\"\".concat(uploadFile.name, \"\\\"\") : 'Your file';\n onAddToast({\n id: \"uploadingFilesFailed\",\n title: 'File Upload Failed',\n message: \"\".concat(filename, \" failed to upload. Please try again later.\"),\n status: 'error',\n onCloseCallback: onClear\n });\n setFileStatus(UPLOAD_STATUS.ERROR);\n })];\n case 2:\n _c.sent();\n return [2\n /*return*/];\n }\n });\n });\n };\n var onAddFiles = function (files) {\n setFileStatus(UPLOAD_STATUS.DEFAULT);\n uploadFile(files[0]);\n };\n return /*#__PURE__*/React.createElement(FileUploader, {\n \"data-testid\": generate(['file-uploader'], props),\n className: className\n }, loading && /*#__PURE__*/React.createElement(Loading, null), error && /*#__PURE__*/React.createElement(ErrorWrapper$1, null, /*#__PURE__*/React.createElement(Notification, {\n title: \"Upload not available\",\n message: /*#__PURE__*/React.createElement(React.Fragment, null, \"Please refresh the page or try again later.\"),\n status: \"error\"\n })), !loading && !error && /*#__PURE__*/React.createElement(DragDropUpload, {\n onDropRejected: function () {\n onAddToast({\n id: \"filetypeNotValid\",\n title: 'File Type Error',\n message: \"This file type is not allowed. Supported types: \".concat(supportedTypesUserMessage),\n status: 'error',\n onCloseCallback: onClear\n });\n },\n status: fileStatus,\n uploadMessage: \"Supported Formats: \".concat(supportedTypesUserMessage, \" (Maximum File Size 500 MB)\"),\n supportedTypes: supportedTypes,\n maxFiles: 1,\n onAddFiles: onAddFiles,\n onClearFiles: onClear,\n renderProgress: files ? function () {\n return /*#__PURE__*/React.createElement(UploadingContent, {\n status: fileStatus,\n isLargeUpload: false,\n hideUploadStatusWithNotification: true,\n onClose: onClear,\n percentage: percentage,\n files: files.map(function (item) {\n return item.name;\n })\n });\n } : undefined\n }));\n};\nvar FileUploader$2 = styled(FileUploader$1)(templateObject_1$2K || (templateObject_1$2K = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2K;\nvar UploadRoute = styled(View)(templateObject_1$2L || (templateObject_1$2L = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2L;\nvar UploadRoute$1 = function (props) {\n var className = props.className;\n return /*#__PURE__*/React.createElement(UploadRoute, {\n \"data-testid\": generate(['page--uploader'], props),\n className: className\n }, /*#__PURE__*/React.createElement(PageContentLayout, null, /*#__PURE__*/React.createElement(FileUploader$2, null)));\n};\nvar UploadRoute$2 = styled(UploadRoute$1)(templateObject_1$2M || (templateObject_1$2M = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2M;\nvar MatchingRiskFragmentDoc = gql(templateObject_1$2N || (templateObject_1$2N = __makeTemplateObject([\"\\n fragment MatchingRisk on MatchingRisk {\\n code\\n name\\n }\\n\"], [\"\\n fragment MatchingRisk on MatchingRisk {\\n code\\n name\\n }\\n\"])));\nvar templateObject_1$2N;\nvar MatchingIndicesFragmentDoc = gql(templateObject_1$2O || (templateObject_1$2O = __makeTemplateObject([\"\\n fragment MatchingIndices on MatchingIndices {\\n code\\n name\\n }\\n\"], [\"\\n fragment MatchingIndices on MatchingIndices {\\n code\\n name\\n }\\n\"])));\nvar templateObject_1$2O;\nvar MatchingRiaDescriptionFragmentDoc = gql(templateObject_1$2P || (templateObject_1$2P = __makeTemplateObject([\"\\n fragment MatchingRiaDescription on MatchingRiaDescription {\\n review\\n identify\\n action\\n }\\n\"], [\"\\n fragment MatchingRiaDescription on MatchingRiaDescription {\\n review\\n identify\\n action\\n }\\n\"])));\nvar templateObject_1$2P;\nvar MatchingControlFragmentDoc = gql(templateObject_1$2Q || (templateObject_1$2Q = __makeTemplateObject([\"\\n fragment MatchingControl on MatchingControl {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n ...MatchingRiaDescription\\n }\\n risks {\\n ...MatchingRisk\\n }\\n indices {\\n ...MatchingIndices\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment MatchingControl on MatchingControl {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n ...MatchingRiaDescription\\n }\\n risks {\\n ...MatchingRisk\\n }\\n indices {\\n ...MatchingIndices\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), MatchingRiaDescriptionFragmentDoc, MatchingRiskFragmentDoc, MatchingIndicesFragmentDoc);\nvar templateObject_1$2Q;\nvar SuggestedMatchFragmentDoc = gql(templateObject_1$2R || (templateObject_1$2R = __makeTemplateObject([\"\\n fragment SuggestedMatch on SuggestedMatch {\\n control {\\n ...MatchingControl\\n }\\n certainty\\n }\\n \", \"\\n\"], [\"\\n fragment SuggestedMatch on SuggestedMatch {\\n control {\\n ...MatchingControl\\n }\\n certainty\\n }\\n \", \"\\n\"])), MatchingControlFragmentDoc);\nvar templateObject_1$2R;\nvar GetMatchingJobControlsDocument = gql(templateObject_1$2S || (templateObject_1$2S = __makeTemplateObject([\"\\n query getMatchingJobControls($input: MatchingJobControlsInput!) {\\n getMatchingJobControls(input: $input) {\\n controls {\\n id\\n code\\n name\\n description\\n status\\n quality\\n suggestedQualityScore\\n controlType\\n frequency\\n automation\\n risks {\\n ...MatchingRisk\\n }\\n indices {\\n ...MatchingIndices\\n }\\n suggestedMatches {\\n ...SuggestedMatch\\n }\\n proposedMatches {\\n ...MatchingControl\\n }\\n matched {\\n ...MatchingControl\\n }\\n matchedAt\\n matcher {\\n id\\n name\\n }\\n approver {\\n id\\n name\\n }\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n query getMatchingJobControls($input: MatchingJobControlsInput!) {\\n getMatchingJobControls(input: $input) {\\n controls {\\n id\\n code\\n name\\n description\\n status\\n quality\\n suggestedQualityScore\\n controlType\\n frequency\\n automation\\n risks {\\n ...MatchingRisk\\n }\\n indices {\\n ...MatchingIndices\\n }\\n suggestedMatches {\\n ...SuggestedMatch\\n }\\n proposedMatches {\\n ...MatchingControl\\n }\\n matched {\\n ...MatchingControl\\n }\\n matchedAt\\n matcher {\\n id\\n name\\n }\\n approver {\\n id\\n name\\n }\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), MatchingRiskFragmentDoc, MatchingIndicesFragmentDoc, SuggestedMatchFragmentDoc, MatchingControlFragmentDoc);\n/**\r\n * __useGetMatchingJobControlsQuery__\r\n *\r\n * To run a query within a React component, call `useGetMatchingJobControlsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetMatchingJobControlsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetMatchingJobControlsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetMatchingJobControlsQuery(baseOptions) {\n return useQuery(GetMatchingJobControlsDocument, baseOptions);\n}\nfunction useGetMatchingJobControlsLazyQuery(baseOptions) {\n return useLazyQuery(GetMatchingJobControlsDocument, baseOptions);\n}\nvar templateObject_1$2S;\n\n/**\r\n * getFilterValues function\r\n *\r\n * @param string => controls codes expected separated by a comma: i.e. \"1,2,3\"\r\n * @returns FilterValues[] => i.e. [{value: \"1\"}, {value: \"2\"}, {value: \"3\"}]\r\n */\nvar getFilterValues = function (codes) {\n if (!codes || codes.length === 0) return [];\n return codes.split(',').map(function (code) {\n return {\n value: code\n };\n });\n};\nvar CODES_KEY = 'code';\nvar CLUSTER_ID_KEY = 'clusterId';\nvar createParams = function (controls, clusterId) {\n var codes = controls.map(function (c) {\n return c.code;\n }).join(',');\n var clusterIdParam = clusterId ? \"&\".concat(CLUSTER_ID_KEY, \"=\").concat(clusterId) : '';\n return codes.length > 0 ? \"?\".concat(CODES_KEY, \"=\").concat(codes).concat(clusterIdParam) : '';\n};\nvar INITIAL_STATE$4 = {\n controls: [],\n setControls: function () {},\n unclearQualityDescriptorId: null,\n setUnclearQualityDescriptorId: function () {},\n quality: IMatchingJobQualityLevel.Clear,\n setQuality: function () {},\n isLoading: false,\n error: undefined,\n resetError: function () {},\n jobStatus: '',\n setJobStatus: function () {},\n clusterId: null,\n setClusterId: function () {}\n};\nvar Context$2 = /*#__PURE__*/React.createContext(INITIAL_STATE$4);\nvar useMatching$1 = function () {\n return React.useContext(Context$2);\n};\nvar MatchingProvider$1 = function (props) {\n var children = props.children,\n accountCode = props.accountCode,\n jobId = props.jobId;\n var getParams = useQueryParams().get;\n var _a = __read(React.useState(''), 2),\n jobStatus = _a[0],\n setJobStatus = _a[1];\n var _b = __read(React.useState([]), 2),\n controls = _b[0],\n setControls = _b[1];\n var _c = __read(React.useState(undefined), 2),\n queryError = _c[0],\n setQueryError = _c[1];\n var _d = __read(React.useState(IMatchingJobQualityLevel.Clear), 2),\n quality = _d[0],\n setQuality = _d[1];\n var _e = __read(React.useState(null), 2),\n unclearQualityDescriptorId = _e[0],\n setUnclearQualityDescriptorId = _e[1];\n var _f = __read(React.useState(null), 2),\n clusterId = _f[0],\n setClusterId = _f[1];\n var _g = __read(useGetMatchingJobControlsLazyQuery({\n onError: function (error) {\n setQueryError(error);\n }\n }), 2),\n getMatchingJobControls = _g[0],\n _h = _g[1],\n loading = _h.loading,\n data = _h.data,\n error = _h.error;\n React.useEffect(function () {\n // IF user copy and paste a url with params\n // 1. Read url params and load into the provider the controls from the APIs\n var codes, clusterId;\n if (getParams) {\n codes = getParams(CODES_KEY);\n clusterId = getParams(CLUSTER_ID_KEY);\n } // call API only if:\n // 1. controls do not exist\n // 2. control codes exist in the url params (i.e. \"?codes=1,2,3\")\n // 3. loading is false\n\n if (controls.length === 0 && codes && !loading && !error) {\n var filterValues = getFilterValues(codes);\n if (filterValues.length > 0) {\n getMatchingJobControls({\n variables: {\n input: {\n accountCode: accountCode,\n matchingJobId: jobId,\n filters: {\n groups: [{\n groupKey: CODES_KEY,\n filterValues: filterValues\n }]\n }\n }\n }\n });\n }\n if (clusterId) {\n setClusterId(clusterId);\n }\n }\n }, [accountCode, controls, getParams, getMatchingJobControls, jobId, loading, error]);\n React.useEffect(function () {\n var _a, _b, _c;\n if (((_a = data === null || data === void 0 ? void 0 : data.getMatchingJobControls) === null || _a === void 0 ? void 0 : _a.controls) && ((_b = data === null || data === void 0 ? void 0 : data.getMatchingJobControls) === null || _b === void 0 ? void 0 : _b.controls.length) > 0) {\n setControls((_c = data === null || data === void 0 ? void 0 : data.getMatchingJobControls) === null || _c === void 0 ? void 0 : _c.controls);\n }\n }, [data]);\n return /*#__PURE__*/React.createElement(Context$2.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$4), {\n controls: controls,\n setControls: setControls,\n isLoading: loading,\n error: queryError,\n resetError: function () {\n return setQueryError(undefined);\n },\n quality: quality,\n setQuality: setQuality,\n unclearQualityDescriptorId: unclearQualityDescriptorId,\n setUnclearQualityDescriptorId: setUnclearQualityDescriptorId,\n jobStatus: jobStatus,\n setJobStatus: setJobStatus,\n clusterId: clusterId,\n setClusterId: setClusterId\n })\n }, children);\n};\nvar MatchingProvider$2 = styled(MatchingProvider$1)(templateObject_1$2T || (templateObject_1$2T = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2T;\nvar jobTable = {\n title: 'All Jobs',\n headers: [{\n key: 'id',\n label: 'Job Id',\n width: '270px'\n }, {\n key: 'name',\n label: 'Job Name'\n }, {\n key: 'status',\n label: 'Status',\n width: '145px'\n }, {\n key: 'numberOfControls',\n label: '# of Controls',\n width: '110px'\n }, {\n key: 'numberOfRisks',\n label: '# of Risks',\n width: '110px'\n }, {\n key: 'fileUploaded',\n label: 'File Uploaded',\n width: '110px'\n }],\n rows: []\n};\nvar getJobTable = function (jobs, onJobClick) {\n if (!jobs || jobs.length === 0) return jobTable;\n var rows = jobs.map(function (job) {\n var _a, _b, _c, _d;\n var formattedDate = (job === null || job === void 0 ? void 0 : job.fileUploaded) ? format(new Date(job.fileUploaded), 'dd MMM yyyy') : '-';\n return {\n id: /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n onJobClick && onJobClick(job);\n }\n }, job === null || job === void 0 ? void 0 : job.matchingJobId),\n name: (_a = job === null || job === void 0 ? void 0 : job.matchingJobName) !== null && _a !== void 0 ? _a : '-',\n status: /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"filled\",\n variant: \"default\",\n size: \"small\",\n text: (_b = job === null || job === void 0 ? void 0 : job.matchingStatus) !== null && _b !== void 0 ? _b : '-'\n }),\n numberOfControls: (_c = job === null || job === void 0 ? void 0 : job.numberOfControls) !== null && _c !== void 0 ? _c : '-',\n numberOfRisks: (_d = job === null || job === void 0 ? void 0 : job.numberOfRisks) !== null && _d !== void 0 ? _d : '-',\n fileUploaded: formattedDate\n };\n });\n return __assign(__assign({}, jobTable), {\n rows: rows\n });\n};\nvar GetMatchingJobsDocument = gql(templateObject_1$2U || (templateObject_1$2U = __makeTemplateObject([\"\\n query getMatchingJobs($input: MatchingJobsInput!) {\\n getMatchingJobs(input: $input) {\\n matchingJobs {\\n matchingJobId\\n matchingJobName\\n matchingStatus\\n numberOfControls\\n numberOfRisks\\n fileUploaded\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n\"], [\"\\n query getMatchingJobs($input: MatchingJobsInput!) {\\n getMatchingJobs(input: $input) {\\n matchingJobs {\\n matchingJobId\\n matchingJobName\\n matchingStatus\\n numberOfControls\\n numberOfRisks\\n fileUploaded\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetMatchingJobsQuery__\r\n *\r\n * To run a query within a React component, call `useGetMatchingJobsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetMatchingJobsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetMatchingJobsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetMatchingJobsQuery(baseOptions) {\n return useQuery(GetMatchingJobsDocument, baseOptions);\n}\nvar templateObject_1$2U;\nvar JobsRoute = styled(View)(templateObject_1$2V || (templateObject_1$2V = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2V;\nvar JobsRoute$1 = function (props) {\n var className = props.className,\n accountCode = props.accountCode,\n onJobClick = props.onJobClick;\n var _a = usePagination(),\n activePage = _a.activePage,\n itemsPerPage = _a.itemsPerPage,\n onSetTotalResults = _a.onSetTotalResults,\n onSetTotalPages = _a.onSetTotalPages,\n onSetRange = _a.onSetRange;\n var setJobStatus = useMatching$1().setJobStatus;\n var _b = __read(React.useState(null), 2),\n table = _b[0],\n setTable = _b[1];\n var _c = useGetMatchingJobsQuery({\n variables: {\n input: {\n accountCode: accountCode,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n }\n }\n }\n }),\n data = _c.data,\n loading = _c.loading,\n error = _c.error;\n var handleJobClick = React.useCallback(function (job) {\n if (!job) return;\n setJobStatus(job.matchingStatus);\n onJobClick(job.matchingJobId);\n }, [onJobClick, setJobStatus]);\n React.useEffect(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n if (!loading && !error && data) {\n var table_1 = getJobTable((_a = data.getMatchingJobs) === null || _a === void 0 ? void 0 : _a.matchingJobs, handleJobClick);\n setTable(table_1);\n onSetRange((_d = (_c = (_b = data.getMatchingJobs) === null || _b === void 0 ? void 0 : _b.pagination) === null || _c === void 0 ? void 0 : _c.range) !== null && _d !== void 0 ? _d : '');\n onSetTotalPages((_g = (_f = (_e = data.getMatchingJobs) === null || _e === void 0 ? void 0 : _e.pagination) === null || _f === void 0 ? void 0 : _f.totalPages) !== null && _g !== void 0 ? _g : 1);\n onSetTotalResults((_k = (_j = (_h = data.getMatchingJobs) === null || _h === void 0 ? void 0 : _h.pagination) === null || _j === void 0 ? void 0 : _j.totalResults) !== null && _k !== void 0 ? _k : 0);\n }\n }, [data, loading, error, onJobClick, onSetRange, onSetTotalPages, onSetTotalResults, handleJobClick]);\n return /*#__PURE__*/React.createElement(JobsRoute, {\n \"data-testid\": generate(['page--jobs-route'], props),\n className: className\n }, /*#__PURE__*/React.createElement(PageContentLayout, null, table && /*#__PURE__*/React.createElement(DataTable$5, {\n table: table,\n hasPagination: true\n })));\n};\nvar JobsRoute$2 = styled(JobsRoute$1)(templateObject_1$2W || (templateObject_1$2W = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2W;\nvar AllControls = styled(View)(templateObject_1$2X || (templateObject_1$2X = __makeTemplateObject([\"\\n position: relative;\\n min-height: 300px;\\n\"], [\"\\n position: relative;\\n min-height: 300px;\\n\"])));\nvar Checkbox$2 = styled(Checkbox$4)(templateObject_2$N || (templateObject_2$N = __makeTemplateObject([\"\\n /* TODO: move commont pointer style to ui-core */\\n cursor: pointer;\\n\"], [\"\\n /* TODO: move commont pointer style to ui-core */\\n cursor: pointer;\\n\"])));\nvar templateObject_1$2X, templateObject_2$N;\nvar TOOLS_PERMISSIONS = {\n // Assign Clusters, Controls\n ASSIGN_CONNECTION: 'assign:connection',\n // User that can change Matches on All Controls\n EDIT_CONNECTION: 'edit:connection',\n // Read Job, Clusters and Controls\n READ_CONNECTION: 'read:connection'\n};\nvar addSelectAllToHeaders = function (headers, controls, onSelect, allControlSelected) {\n var isChecked = allControlSelected ? allControlSelected.length === controls.length : false;\n return __spreadArray([{\n key: 'select',\n label: /*#__PURE__*/React.createElement(Checkbox$2, {\n size: \"small\",\n onChange: function () {\n return onSelect(controls);\n },\n isChecked: isChecked\n }),\n width: '20px'\n }], __read(headers), false);\n};\nvar addSelectToRow = function (row, control, onSelect, allControlSelected) {\n var isChecked = allControlSelected ? !!allControlSelected.find(function (selected) {\n return selected.id === control.id;\n }) : false;\n return __assign(__assign({}, row), {\n select: /*#__PURE__*/React.createElement(Checkbox$2, {\n size: \"small\",\n onChange: function () {\n return onSelect(control);\n },\n isChecked: isChecked\n })\n });\n};\nvar getControlsTable = function (controls, onControlClick, onSelect, allControlSelected) {\n if (!controls || controls.length === 0) return null;\n var headers = [{\n key: 'code',\n label: 'Code',\n width: '90px'\n }, {\n key: 'name',\n label: 'Name',\n width: '200px'\n }, {\n key: 'status',\n label: 'Matching Status',\n width: '130px'\n }, {\n key: 'quality',\n label: 'CQ',\n width: '60px',\n maxWidth: '60px'\n }, {\n key: 'type',\n label: 'Control Type',\n width: '120px',\n maxWidth: '120px'\n }, {\n key: 'frequency',\n label: 'Frequency',\n width: '130px'\n }, {\n key: 'automation',\n label: 'Automation',\n width: '130px'\n }, {\n key: 'matched',\n label: 'Matched',\n width: '120px',\n maxWidth: '120px'\n }, {\n key: 'topMatch',\n label: 'Top Match',\n width: '90px'\n }, {\n key: 'topMatchCertainty',\n label: 'Top Match Certainty',\n width: '115px'\n }, {\n key: 'updatedAt',\n label: 'Updated At',\n width: '100px'\n }];\n if (onSelect && controls) {\n headers = addSelectAllToHeaders(headers, controls, onSelect, allControlSelected);\n }\n var rows = controls.map(function (control) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var topMatch = control.suggestedMatches && ((_a = control.suggestedMatches) === null || _a === void 0 ? void 0 : _a.length) > 0 ? control.suggestedMatches[0] : null;\n var matches = (_c = (_b = control.matched) === null || _b === void 0 ? void 0 : _b.map(function (match) {\n return match.code;\n }).join(', ')) !== null && _c !== void 0 ? _c : '-';\n var row = {\n id: control.id,\n code: onControlClick ? /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n onControlClick && onControlClick(control);\n }\n }, control.code) : control.code,\n name: control.name,\n status: /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"filled\",\n variant: \"default\",\n size: \"small\",\n text: transformControlStatus(control === null || control === void 0 ? void 0 : control.status)\n }),\n quality: (_d = control.quality) !== null && _d !== void 0 ? _d : '-',\n type: (_e = control.controlType) !== null && _e !== void 0 ? _e : '-',\n frequency: (_f = control.frequency) !== null && _f !== void 0 ? _f : '-',\n automation: (_g = control.automation) !== null && _g !== void 0 ? _g : '-',\n matched: matches,\n topMatch: topMatch ? (_j = (_h = topMatch === null || topMatch === void 0 ? void 0 : topMatch.control) === null || _h === void 0 ? void 0 : _h.code) !== null && _j !== void 0 ? _j : '-' : '-',\n topMatchCertainty: topMatch ? \"\".concat(topMatch.certainty) : '-',\n updatedAt: (_k = control.matchedAt) !== null && _k !== void 0 ? _k : '-'\n };\n if (onSelect) {\n row = addSelectToRow(row, control, onSelect, allControlSelected);\n }\n return row;\n });\n return {\n title: 'All Controls',\n headers: headers,\n rows: rows\n };\n};\nvar getSelectedControls$1 = function (controlsSelected, controls) {\n var newControlSelected = [];\n if (Array.isArray(controls)) {\n // click on Select all\n if (!controlsSelected || controlsSelected.length !== controls.length) {\n // not all controls are selected => then replace all selected with the controls\n newControlSelected = controls;\n } else {\n // all controls are selected => then remove all\n newControlSelected = [];\n }\n } else {\n // click on One control\n if (controlsSelected.length === 0) {\n newControlSelected = [controls];\n } else {\n var foundControlIndex = controlsSelected.findIndex(function (selected) {\n return selected.id === controls.id;\n });\n if (foundControlIndex > -1) {\n // is checked => find the control and remove it\n newControlSelected = __spreadArray(__spreadArray([], __read(controlsSelected === null || controlsSelected === void 0 ? void 0 : controlsSelected.slice(0, foundControlIndex)), false), __read(controlsSelected === null || controlsSelected === void 0 ? void 0 : controlsSelected.slice(foundControlIndex + 1)), false);\n } else {\n // is not checked => add the control to checked\n newControlSelected = __spreadArray(__spreadArray([], __read(controlsSelected), false), [controls], false);\n }\n }\n }\n return newControlSelected;\n};\nvar getIsReadOnly = function (jobStatus, userPermission) {\n if (!userPermission || jobStatus !== 'COMPLETED') return true;\n return !userPermission.includes(TOOLS_PERMISSIONS.EDIT_CONNECTION);\n};\nvar AllControls$1 = function (props) {\n var className = props.className,\n accountCode = props.accountCode,\n jobId = props.jobId,\n onControlClick = props.onControlClick,\n onStartMatching = props.onStartMatching;\n var _a = usePagination(),\n activePage = _a.activePage,\n itemsPerPage = _a.itemsPerPage,\n onSetTotalResults = _a.onSetTotalResults,\n onSetTotalPages = _a.onSetTotalPages,\n onSetRange = _a.onSetRange;\n var _b = useMatching$1(),\n setControls = _b.setControls,\n allControlSelected = _b.controls,\n jobStatus = _b.jobStatus;\n var user = useAuth().user;\n var isReadOnly = getIsReadOnly(jobStatus, user === null || user === void 0 ? void 0 : user.permissions);\n var _c = __read(React.useState(null), 2),\n table = _c[0],\n setTable = _c[1];\n var _d = useGetMatchingJobControlsQuery({\n variables: {\n input: {\n accountCode: accountCode,\n matchingJobId: jobId,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n }\n }\n }\n }),\n data = _d.data,\n error = _d.error,\n loading = _d.loading;\n var handleSelectControl = React.useCallback(function (controls) {\n var newControls = getSelectedControls$1(allControlSelected, controls);\n setControls(newControls);\n }, [allControlSelected, setControls]);\n React.useEffect(function () {\n var _a, _b, _c;\n var matchingJobControls = data === null || data === void 0 ? void 0 : data.getMatchingJobControls.controls;\n var pagination = data === null || data === void 0 ? void 0 : data.getMatchingJobControls.pagination;\n if (!loading && matchingJobControls) {\n var table_1 = getControlsTable(matchingJobControls, onControlClick, isReadOnly ? undefined : handleSelectControl, allControlSelected);\n setTable(table_1);\n onSetRange((_a = pagination === null || pagination === void 0 ? void 0 : pagination.range) !== null && _a !== void 0 ? _a : '');\n onSetTotalPages((_b = pagination === null || pagination === void 0 ? void 0 : pagination.totalPages) !== null && _b !== void 0 ? _b : 1);\n onSetTotalResults((_c = pagination === null || pagination === void 0 ? void 0 : pagination.totalResults) !== null && _c !== void 0 ? _c : 0);\n }\n }, [allControlSelected, data, handleSelectControl, isReadOnly, loading, onControlClick, onSetRange, onSetTotalPages, onSetTotalResults]);\n var renderTable = function () {\n if (loading) {\n return /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n });\n }\n if (error || (table === null || table === void 0 ? void 0 : table.rows.length) === 0) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: true\n });\n }\n return /*#__PURE__*/React.createElement(DataTable$5, {\n table: table,\n hasPagination: true\n }, !isReadOnly && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"br\", null), /*#__PURE__*/React.createElement(Button, {\n label: \"Change Match\",\n disabled: !allControlSelected || allControlSelected.length === 0,\n onClick: function () {\n return allControlSelected && onStartMatching(allControlSelected);\n },\n variant: \"primary\",\n size: \"small\"\n })));\n };\n return /*#__PURE__*/React.createElement(AllControls, {\n \"data-testid\": generate(['all-controls'], props),\n className: className\n }, renderTable());\n};\nvar AllControls$2 = styled(AllControls$1)(templateObject_1$2Y || (templateObject_1$2Y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2Y;\nvar transformFloatToPercentage = function (score) {\n if (!score) return '-';\n return \"\".concat(Math.round(score * 100), \"%\");\n};\nvar getControlsByClusterIdTable = function (clusterId, controls, onSelect, allControlSelected) {\n var headers = [{\n key: 'code',\n label: 'Code',\n width: '50px'\n }, {\n key: 'name',\n label: 'Name',\n width: '180px'\n }, {\n key: 'status',\n label: 'Status',\n width: '140px'\n }, {\n key: 'cq',\n label: 'CQ',\n width: '50px'\n }, {\n key: 'matcher',\n label: 'Matcher',\n width: '145px'\n }, {\n key: 'approver',\n label: 'Approver',\n width: '110px'\n }, {\n key: 'controlType',\n label: 'Type',\n width: '90px'\n }, {\n key: 'frequency',\n label: 'Frequency',\n width: '90px'\n }, {\n key: 'automation',\n label: 'Automation',\n width: '90px'\n }, {\n key: 'matchedTo',\n label: 'Matched To'\n }, {\n key: 'suggestedMatch',\n label: 'AcME Match'\n }, {\n key: 'certainty',\n label: 'Certainty'\n }, {\n key: 'updatedAt',\n label: 'Updated At'\n }];\n var table = {\n title: \"Controls By Cluster Id: \".concat(clusterId),\n headers: headers,\n rows: []\n };\n if (!controls || controls.length === 0) return table;\n if (onSelect) {\n headers = addSelectAllToHeaders(headers, controls, onSelect, allControlSelected);\n }\n var rows = controls.map(function (control) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var topMatch = control.suggestedMatches && ((_a = control.suggestedMatches) === null || _a === void 0 ? void 0 : _a.length) > 0 ? control.suggestedMatches[0] : null;\n var topMatchCode = (_b = topMatch === null || topMatch === void 0 ? void 0 : topMatch.control.code) !== null && _b !== void 0 ? _b : '-';\n var topMatchCertainty = transformFloatToPercentage(topMatch === null || topMatch === void 0 ? void 0 : topMatch.certainty);\n var matches = (_d = (_c = control.matched) === null || _c === void 0 ? void 0 : _c.map(function (match) {\n return match.code;\n }).join(', ')) !== null && _d !== void 0 ? _d : '-';\n var row = {\n id: control.id,\n code: control.code,\n name: control.name,\n status: /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"filled\",\n variant: \"default\",\n size: \"small\",\n text: control.status\n }),\n cq: transformFloatToPercentage(control.suggestedQualityScore),\n matcher: (_f = (_e = control === null || control === void 0 ? void 0 : control.matcher) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : '-',\n approver: (_h = (_g = control === null || control === void 0 ? void 0 : control.approver) === null || _g === void 0 ? void 0 : _g.name) !== null && _h !== void 0 ? _h : '-',\n controlType: (_j = control === null || control === void 0 ? void 0 : control.controlType) !== null && _j !== void 0 ? _j : '-',\n frequency: (_k = control.frequency) !== null && _k !== void 0 ? _k : '-',\n automation: (_l = control.automation) !== null && _l !== void 0 ? _l : '-',\n matchedTo: matches,\n suggestedMatch: topMatchCode,\n certainty: topMatchCertainty,\n updatedAt: (_m = control.matchedAt) !== null && _m !== void 0 ? _m : '-'\n };\n if (onSelect) {\n row = addSelectToRow(row, control, onSelect, allControlSelected);\n }\n return row;\n });\n return __assign(__assign({}, table), {\n headers: headers,\n rows: rows\n });\n};\nvar ControlsByClusterId = styled(View)(templateObject_1$2Z || (templateObject_1$2Z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2Z;\nvar ControlsByClusterId$1 = function (props) {\n var className = props.className,\n clusterId = props.clusterId,\n accountCode = props.accountCode,\n jobId = props.jobId,\n backToClusters = props.backToClusters,\n onStartMatching = props.onStartMatching;\n var _a = usePagination(),\n activePage = _a.activePage,\n itemsPerPage = _a.itemsPerPage,\n onSetTotalResults = _a.onSetTotalResults,\n onSetTotalPages = _a.onSetTotalPages,\n onSetRange = _a.onSetRange;\n var _b = useMatching$1(),\n setSelectedControls = _b.setControls,\n selectedControls = _b.controls;\n var _c = __read(React.useState(null), 2),\n table = _c[0],\n setTable = _c[1];\n var _d = useGetMatchingJobControlsQuery({\n skip: !clusterId,\n variables: {\n input: {\n accountCode: accountCode,\n matchingJobId: jobId,\n clusterId: clusterId,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n }\n }\n }\n }),\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n var handleSelect = React.useCallback(function (controls) {\n var newControls = getSelectedControls$1(selectedControls, controls);\n setSelectedControls(newControls);\n }, [selectedControls, setSelectedControls]);\n React.useEffect(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n var controls = (_a = data === null || data === void 0 ? void 0 : data.getMatchingJobControls) === null || _a === void 0 ? void 0 : _a.controls;\n if (!loading && !error && controls) {\n var table_1 = getControlsByClusterIdTable(clusterId, controls, handleSelect, selectedControls);\n setTable(table_1);\n onSetRange((_d = (_c = (_b = data.getMatchingJobControls) === null || _b === void 0 ? void 0 : _b.pagination) === null || _c === void 0 ? void 0 : _c.range) !== null && _d !== void 0 ? _d : '');\n onSetTotalPages((_g = (_f = (_e = data.getMatchingJobControls) === null || _e === void 0 ? void 0 : _e.pagination) === null || _f === void 0 ? void 0 : _f.totalPages) !== null && _g !== void 0 ? _g : 1);\n onSetTotalResults((_k = (_j = (_h = data.getMatchingJobControls) === null || _h === void 0 ? void 0 : _h.pagination) === null || _j === void 0 ? void 0 : _j.totalResults) !== null && _k !== void 0 ? _k : 0);\n }\n }, [clusterId, data, error, handleSelect, loading, onSetRange, onSetTotalPages, onSetTotalResults, selectedControls]);\n return /*#__PURE__*/React.createElement(ControlsByClusterId, {\n \"data-testid\": generate(['controls-by-cluster-id'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Link$1, {\n onClick: backToClusters\n }, \"Back to All Clusters\"), table && /*#__PURE__*/React.createElement(DataTable$5, {\n table: table,\n hasPagination: true\n }, /*#__PURE__*/React.createElement(\"br\", null), /*#__PURE__*/React.createElement(Button, {\n label: \"Start Matching\",\n disabled: selectedControls.length === 0,\n onClick: function () {\n return selectedControls && onStartMatching(selectedControls);\n },\n variant: \"primary\",\n size: \"small\"\n })));\n};\nvar ControlsByClusterId$2 = styled(ControlsByClusterId$1)(templateObject_1$2_ || (templateObject_1$2_ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2_;\nvar Clusters = styled(View)(templateObject_1$2$ || (templateObject_1$2$ = __makeTemplateObject([\"\\n position: relative;\\n min-height: 300px;\\n\"], [\"\\n position: relative;\\n min-height: 300px;\\n\"])));\nvar Checkbox$3 = styled(Checkbox$4)(templateObject_2$O || (templateObject_2$O = __makeTemplateObject([\"\\n /* TODO: move common pointer style to ui-core */\\n cursor: pointer;\\n\"], [\"\\n /* TODO: move common pointer style to ui-core */\\n cursor: pointer;\\n\"])));\nvar templateObject_1$2$, templateObject_2$O;\nvar joinUsersNames = function (users) {\n if (!users || users.length === 0) return '-';\n return users.map(function (user) {\n return user.name;\n }).join(', ');\n};\nvar getControlsTable$1 = function (clusters, onClusterClick, handleSelectCluster, allClusterSelected, canAssignUsers) {\n if (canAssignUsers === void 0) {\n canAssignUsers = false;\n }\n if (!clusters || clusters.length === 0) return null;\n var headers = [{\n key: 'idRow',\n label: 'Id',\n width: '90px'\n }, {\n key: 'name',\n label: 'Name',\n width: '250px'\n }, {\n key: 'status',\n label: 'Status',\n width: '120px',\n maxWidth: '120px'\n }, {\n key: 'numberOfControls',\n label: '# of Controls',\n width: '60px',\n maxWidth: '60px'\n }, {\n key: 'matchers',\n label: 'Matchers',\n width: '130px'\n }, {\n key: 'approvers',\n label: 'Approvers',\n width: '130px'\n }];\n if (canAssignUsers) {\n var isChecked = allClusterSelected ? allClusterSelected.length === clusters.length : false;\n headers = __spreadArray([{\n key: 'select',\n label: /*#__PURE__*/React.createElement(Checkbox$3, {\n size: \"small\",\n onChange: function () {\n return handleSelectCluster(clusters);\n },\n isChecked: isChecked\n }),\n width: '35px',\n minWidth: '35px'\n }], __read(headers), false);\n }\n var rows = clusters.map(function (cluster) {\n var id = cluster.id;\n var row = {\n id: id,\n idRow: onClusterClick ? /*#__PURE__*/React.createElement(Link$1, {\n size: -1,\n onClick: function () {\n onClusterClick && onClusterClick(cluster);\n }\n }, cluster.id) : cluster.id,\n name: cluster.name,\n status: /*#__PURE__*/React.createElement(Badge$1, {\n appearance: \"filled\",\n variant: \"default\",\n size: \"small\",\n text: cluster === null || cluster === void 0 ? void 0 : cluster.status\n }),\n numberOfControls: cluster.numberOfControls,\n matchers: joinUsersNames(cluster.matchers),\n approvers: joinUsersNames(cluster.approvers)\n };\n if (canAssignUsers) {\n var isChecked = allClusterSelected ? !!allClusterSelected.find(function (selected) {\n return selected.id === cluster.id;\n }) : false;\n row = __assign(__assign({}, row), {\n select: /*#__PURE__*/React.createElement(Checkbox$3, {\n size: \"small\",\n onChange: function () {\n return handleSelectCluster(cluster);\n },\n isChecked: isChecked\n })\n });\n }\n return row;\n });\n return {\n title: 'Clusters',\n headers: headers,\n rows: rows\n };\n};\nvar GetConnectionUsersDocument = gql(templateObject_1$30 || (templateObject_1$30 = __makeTemplateObject([\"\\n query getConnectionUsers {\\n getConnectionUsers {\\n users {\\n id\\n name\\n email\\n }\\n }\\n }\\n\"], [\"\\n query getConnectionUsers {\\n getConnectionUsers {\\n users {\\n id\\n name\\n email\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetConnectionUsersQuery__\r\n *\r\n * To run a query within a React component, call `useGetConnectionUsersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetConnectionUsersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetConnectionUsersQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetConnectionUsersQuery(baseOptions) {\n return useQuery(GetConnectionUsersDocument, baseOptions);\n}\nvar templateObject_1$30;\nvar MatchersAndApproversModal = styled(View)(templateObject_1$31 || (templateObject_1$31 = __makeTemplateObject([\"\"], [\"\"])));\nvar ModalContent = styled(View)(templateObject_2$P || (templateObject_2$P = __makeTemplateObject([\"\\n height: \", \";\\n\"], [\"\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(80);\n});\nvar MultiSelectWrapper = styled(View)(templateObject_3$B || (templateObject_3$B = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar MultiSelectHeading = styled(Text$1)(templateObject_4$s || (templateObject_4$s = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$31, templateObject_2$P, templateObject_3$B, templateObject_4$s;\nvar MatchersAndApproversModal$1 = function (props) {\n var className = props.className,\n showModal = props.showModal,\n onClose = props.onClose,\n onAssign = props.onAssign;\n var _a = __read(React.useState([]), 2),\n users = _a[0],\n setUsers = _a[1];\n var _b = __read(React.useState([]), 2),\n selectedMatchers = _b[0],\n setSelectedMatchers = _b[1];\n var _c = __read(React.useState([]), 2),\n selectedApprovers = _c[0],\n setSelectedApprovers = _c[1];\n var _d = useGetConnectionUsersQuery({\n skip: !showModal\n }),\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n React.useEffect(function () {\n if (!loading && data) {\n var users_1 = data.getConnectionUsers.users.map(function (user) {\n return {\n id: user.id,\n label: user.name,\n sublabel: user.email\n };\n });\n setUsers(users_1);\n }\n }, [data, loading]);\n var handleAssign = function () {\n var users = {\n matchersIds: selectedMatchers.map(function (m) {\n return m.id;\n }),\n approversIds: selectedApprovers.map(function (a) {\n return a.id;\n })\n };\n onAssign(users);\n };\n var renderContent = function () {\n if (loading) return /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n });\n if (error || users.length === 0) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: 'Users list not currently not available'\n }\n });\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MultiSelectWrapper, null, /*#__PURE__*/React.createElement(MultiSelectHeading, null, \"Select Matchers:\"), /*#__PURE__*/React.createElement(MultiSelect, {\n options: users,\n onSelect: setSelectedMatchers\n })), /*#__PURE__*/React.createElement(MultiSelectWrapper, null, /*#__PURE__*/React.createElement(MultiSelectHeading, null, \"Select Approvers:\"), /*#__PURE__*/React.createElement(MultiSelect, {\n options: users,\n onSelect: setSelectedApprovers\n })));\n };\n return /*#__PURE__*/React.createElement(MatchersAndApproversModal, {\n \"data-testid\": generate(['matchers-and-approvers-modal'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Modal, {\n show: showModal,\n onClose: onClose,\n title: \"Matchers & Approvers Assignment\",\n footerButtonPrimary: {\n label: 'Assign Matchers & Approvers',\n onClick: handleAssign,\n disabled: selectedMatchers.length === 0 || selectedApprovers.length === 0\n }\n }, /*#__PURE__*/React.createElement(ModalContent, null, renderContent())));\n};\nvar MatchersAndApproversModal$2 = styled(MatchersAndApproversModal$1)(templateObject_1$32 || (templateObject_1$32 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$32;\nvar UpdateClustersAssigneesDocument = gql(templateObject_1$33 || (templateObject_1$33 = __makeTemplateObject([\"\\n mutation updateClustersAssignees($input: EntityAssigneesInput!) {\\n updateEntityAssignees(input: $input) {\\n type\\n entity {\\n id\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n }\\n }\\n\"], [\"\\n mutation updateClustersAssignees($input: EntityAssigneesInput!) {\\n updateEntityAssignees(input: $input) {\\n type\\n entity {\\n id\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useUpdateClustersAssigneesMutation__\r\n *\r\n * To run a mutation, you first call `useUpdateClustersAssigneesMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useUpdateClustersAssigneesMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [updateClustersAssigneesMutation, { data, loading, error }] = useUpdateClustersAssigneesMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useUpdateClustersAssigneesMutation(baseOptions) {\n return useMutation(UpdateClustersAssigneesDocument, baseOptions);\n}\nvar templateObject_1$33;\nvar updateClusterFragment = gql(templateObject_1$34 || (templateObject_1$34 = __makeTemplateObject([\"\\n fragment updateClusterFragment on MatchingJobCluster {\\n id\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n\"], [\"\\n fragment updateClusterFragment on MatchingJobCluster {\\n id\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n\"])));\nvar templateObject_1$34;\nvar AssignActions = styled(View)(templateObject_1$35 || (templateObject_1$35 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n margin-top: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, Button, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$35;\nvar AssignActions$1 = function (props) {\n var className = props.className,\n accountCode = props.accountCode,\n jobId = props.jobId,\n selectedClusters = props.selectedClusters;\n var _a = __read(React.useState(false), 2),\n showAssignModal = _a[0],\n setShowAssignModal = _a[1];\n var _b = __read(React.useState(false), 2),\n distributeAllClusters = _b[0],\n setDistributeAllClusters = _b[1];\n var _c = __read(useUpdateClustersAssigneesMutation({\n update: function (cache, _a) {\n var data = _a.data;\n cache.modify({\n fields: {\n getMatchingJobClusters: function (existingData) {\n if (existingData === void 0) {\n existingData = {};\n }\n var updateEntityAssignees = data === null || data === void 0 ? void 0 : data.updateEntityAssignees;\n if (!updateEntityAssignees || updateEntityAssignees.entity.length === 0) return existingData;\n var newClustersRefs = updateEntityAssignees.entity.map(function (entity) {\n var clusterId = 'MatchingJobCluster:' + entity.id;\n return cache.writeFragment({\n id: clusterId,\n data: {\n id: entity.id,\n matchers: entity.matchers,\n approvers: entity.approvers\n },\n fragment: updateClusterFragment\n });\n });\n return __assign(__assign({}, existingData), {\n clusters: existingData.clusters.map(function (current) {\n var _a;\n return (_a = newClustersRefs.find(function (rep) {\n return rep && rep.__ref === current.__ref;\n })) !== null && _a !== void 0 ? _a : current;\n })\n });\n }\n }\n });\n },\n onCompleted: function () {\n setShowAssignModal(false);\n }\n }), 1),\n updateClusterAssignees = _c[0];\n var handleAssignment = function (users) {\n if (distributeAllClusters) {\n updateClusterAssignees({\n variables: {\n input: {\n accountCode: accountCode,\n jobId: jobId,\n type: IEntityAssigneesType.Cluster,\n matchersIds: users.matchersIds,\n approversIds: users.approversIds\n }\n }\n });\n } else {\n updateClusterAssignees({\n variables: {\n input: {\n accountCode: accountCode,\n jobId: jobId,\n type: IEntityAssigneesType.Cluster,\n ids: selectedClusters.map(function (cluster) {\n return cluster.id;\n }),\n matchersIds: users.matchersIds,\n approversIds: users.approversIds\n }\n }\n });\n }\n };\n return /*#__PURE__*/React.createElement(AssignActions, {\n \"data-testid\": generate(['clusters'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Button, {\n label: \"Distribute All Clusters\",\n disabled: selectedClusters.length > 0,\n onClick: function () {\n setDistributeAllClusters(true);\n setShowAssignModal(true);\n },\n variant: \"link\",\n size: \"small\"\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"Assign Cluster\",\n disabled: selectedClusters.length === 0,\n onClick: function () {\n setShowAssignModal(true);\n },\n variant: \"primary\",\n size: \"small\"\n }), /*#__PURE__*/React.createElement(MatchersAndApproversModal$2, {\n onAssign: handleAssignment,\n showModal: showAssignModal,\n onClose: function () {\n setDistributeAllClusters(false);\n setShowAssignModal(false);\n }\n }));\n};\nvar GetMatchingJobClustersDocument = gql(templateObject_1$36 || (templateObject_1$36 = __makeTemplateObject([\"\\n query getMatchingJobClusters($input: MatchingJobClustersInput!) {\\n getMatchingJobClusters(input: $input) {\\n clusters {\\n id\\n name\\n status\\n numberOfControls\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n\"], [\"\\n query getMatchingJobClusters($input: MatchingJobClustersInput!) {\\n getMatchingJobClusters(input: $input) {\\n clusters {\\n id\\n name\\n status\\n numberOfControls\\n matchers {\\n id\\n name\\n }\\n approvers {\\n id\\n name\\n }\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n range\\n hasNextPage\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetMatchingJobClustersQuery__\r\n *\r\n * To run a query within a React component, call `useGetMatchingJobClustersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetMatchingJobClustersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetMatchingJobClustersQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useGetMatchingJobClustersQuery(baseOptions) {\n return useQuery(GetMatchingJobClustersDocument, baseOptions);\n}\nvar templateObject_1$36;\nvar Clusters$1 = function (props) {\n var className = props.className,\n accountCode = props.accountCode,\n jobId = props.jobId,\n onStartMatching = props.onStartMatching;\n var checkPermission = useAuth().checkPermission;\n var _a = useMatching$1(),\n clusterId = _a.clusterId,\n setClusterId = _a.setClusterId,\n setControls = _a.setControls;\n var _b = usePagination(),\n activePage = _b.activePage,\n itemsPerPage = _b.itemsPerPage,\n onSetTotalResults = _b.onSetTotalResults,\n onSetTotalPages = _b.onSetTotalPages,\n onSetRange = _b.onSetRange;\n var _c = __read(React.useState(null), 2),\n table = _c[0],\n setTable = _c[1];\n var _d = __read(React.useState([]), 2),\n selectedClusters = _d[0],\n setSelectedClusters = _d[1];\n var canAssignUsers = checkPermission(TOOLS_PERMISSIONS.ASSIGN_CONNECTION);\n var _e = useGetMatchingJobClustersQuery({\n variables: {\n input: {\n accountCode: accountCode,\n matchingJobId: jobId,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n }\n }\n }\n }),\n loading = _e.loading,\n data = _e.data,\n error = _e.error;\n var onClusterClick = React.useCallback(function (cluster) {\n if (cluster) {\n setClusterId(cluster === null || cluster === void 0 ? void 0 : cluster.id);\n }\n }, [setClusterId]);\n var handleSelectCluster = useCallback(function (cluster) {\n if (Array.isArray(cluster)) {\n if (selectedClusters.length !== cluster.length) {\n setSelectedClusters(cluster);\n } else {\n setSelectedClusters([]);\n }\n } else {\n if (selectedClusters.length === 0) {\n setSelectedClusters([cluster]);\n } else {\n var index = selectedClusters.findIndex(function (selected) {\n return selected.id === cluster.id;\n });\n if (index === -1) {\n setSelectedClusters(__spreadArray(__spreadArray([], __read(selectedClusters), false), [cluster], false));\n } else {\n setSelectedClusters(__spreadArray(__spreadArray([], __read(selectedClusters.slice(0, index)), false), __read(selectedClusters.slice(index + 1)), false));\n }\n }\n }\n }, [selectedClusters]);\n React.useEffect(function () {\n var _a, _b, _c;\n var clusters = data === null || data === void 0 ? void 0 : data.getMatchingJobClusters.clusters;\n var pagination = data === null || data === void 0 ? void 0 : data.getMatchingJobClusters.pagination;\n if (!loading && clusters) {\n var table_1 = getControlsTable$1(clusters, onClusterClick, handleSelectCluster, selectedClusters, canAssignUsers);\n setTable(table_1);\n onSetRange((_a = pagination === null || pagination === void 0 ? void 0 : pagination.range) !== null && _a !== void 0 ? _a : '');\n onSetTotalPages((_b = pagination === null || pagination === void 0 ? void 0 : pagination.totalPages) !== null && _b !== void 0 ? _b : 1);\n onSetTotalResults((_c = pagination === null || pagination === void 0 ? void 0 : pagination.totalResults) !== null && _c !== void 0 ? _c : 0);\n }\n }, [canAssignUsers, data, handleSelectCluster, loading, onClusterClick, onSetRange, onSetTotalPages, onSetTotalResults, selectedClusters]);\n var renderClustersTable = function () {\n if (loading) {\n return /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n });\n }\n if (error || (table === null || table === void 0 ? void 0 : table.rows.length) === 0) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: true\n });\n }\n if (clusterId) {\n return /*#__PURE__*/React.createElement(ControlsByClusterId$2, {\n onStartMatching: onStartMatching,\n accountCode: accountCode,\n jobId: jobId,\n clusterId: clusterId,\n backToClusters: function () {\n setControls([]);\n setClusterId(null);\n }\n });\n }\n return /*#__PURE__*/React.createElement(DataTable$5, {\n table: table,\n hasPagination: true\n }, canAssignUsers && /*#__PURE__*/React.createElement(AssignActions$1, {\n accountCode: accountCode,\n jobId: jobId,\n selectedClusters: selectedClusters\n }));\n };\n return /*#__PURE__*/React.createElement(Clusters, {\n \"data-testid\": generate(['clusters'], props),\n className: className\n }, renderClustersTable());\n};\nvar Clusters$2 = styled(Clusters$1)(templateObject_1$37 || (templateObject_1$37 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$37;\nvar ControlJobRoute = styled(View)(templateObject_1$38 || (templateObject_1$38 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$38;\nvar TABS = {\n ALL_CONTROLS: 'allControls',\n CLUSTERS: 'clusters',\n UNMATCHED: 'unmatched'\n};\nvar tabs$1 = [{\n id: TABS.ALL_CONTROLS,\n title: 'All Controls'\n}, {\n id: TABS.CLUSTERS,\n title: 'Clusters'\n}, {\n id: TABS.UNMATCHED,\n title: 'Unmatched Index Controls'\n}];\nvar ControlJobRoute$1 = function (props) {\n var className = props.className,\n accountCode = props.accountCode,\n jobId = props.jobId,\n onControlClick = props.onControlClick,\n onNavigate = props.onNavigate;\n var clusterId = useMatching$1().clusterId;\n var _a = __read(React.useState(function () {\n return clusterId ? TABS.CLUSTERS : TABS.ALL_CONTROLS;\n }), 2),\n activeTabId = _a[0],\n setActiveTabId = _a[1];\n var handleStartMatching = function (controls) {\n if (onNavigate) {\n var params = createParams(controls, clusterId);\n onNavigate(params);\n }\n };\n var renderTabContent = function () {\n switch (activeTabId) {\n case TABS.CLUSTERS:\n return /*#__PURE__*/React.createElement(Clusters$2, {\n accountCode: accountCode,\n jobId: jobId,\n onStartMatching: handleStartMatching\n });\n case TABS.UNMATCHED:\n return 'WIP: Unmatched Index Controls Component';\n case TABS.ALL_CONTROLS:\n default:\n {\n return /*#__PURE__*/React.createElement(AllControls$2, {\n onStartMatching: handleStartMatching,\n onControlClick: onControlClick,\n accountCode: accountCode,\n jobId: jobId\n });\n }\n }\n };\n return /*#__PURE__*/React.createElement(ControlJobRoute, {\n \"data-testid\": generate(['page--control-job-route'], props),\n className: className\n }, /*#__PURE__*/React.createElement(PaginationProvider, null, /*#__PURE__*/React.createElement(TabGroup, {\n variant: \"primary\",\n activeId: activeTabId,\n tabs: tabs$1,\n onClick: function (id) {\n return setActiveTabId(id);\n }\n }), renderTabContent()));\n};\nvar ControlJobRoute$2 = styled(ControlJobRoute$1)(templateObject_1$39 || (templateObject_1$39 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$39;\nvar purple = {\n 0: '#F6F6FB',\n 50: '#ECECF6',\n 100: '#D9DAED',\n 150: '#C6C7E4',\n 200: '#B3B4DB',\n 250: '#A0A1D3',\n 300: '#8E8FCA',\n 350: '#7B7CC1',\n 400: '#6869B8',\n 450: '#5557AF',\n 500: '#4244A6',\n 550: '#3B3D95'\n};\nvar boxShadowVerticalBoxes = '0px 3px 6px 0px #0000001a';\nvar boxShadowTopBorder = '0px -3px 6px 0px #0000001a';\n\n/**\r\n * Theme colours or borders variation for tools app\r\n * Temporary theme to override common styles from ui-core\r\n *\r\n */\nvar toolsTheme = {\n shadows: {\n boxShadowVerticalBoxes: boxShadowVerticalBoxes,\n boxShadowTopBorder: boxShadowTopBorder\n },\n colours: {\n accent1: purple\n }\n};\nvar colours = toolsTheme.colours;\nvar backgroundColor = colours.accent1[0]; // This named style should be the wrapper for the component i.e. the module\n\nvar RadioList$2 = styled(View)(templateObject_1$3a || (templateObject_1$3a = __makeTemplateObject([\"\"], [\"\"])));\nvar RadioListItemLabel$1 = styled.label(templateObject_3$C || (templateObject_3$C = __makeTemplateObject([\"\\n padding: \", \";\\n display: block;\\n border-bottom: 1px solid \", \";\\n cursor: pointer;\\n &:hover {\\n background-color: \", \";\\n }\\n \", \"\\n\"], [\"\\n padding: \", \";\\n display: block;\\n border-bottom: 1px solid \", \";\\n cursor: pointer;\\n &:hover {\\n background-color: \", \";\\n }\\n \", \"\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(1.5), \" \").concat(p.theme.spacing.getSize(2));\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, backgroundColor, function (p) {\n return p.isInspected && css(templateObject_2$Q || (templateObject_2$Q = __makeTemplateObject([\"\\n background-color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"], [\"\\n background-color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"])), backgroundColor, backgroundColor);\n});\nvar Badge = styled(Badge$1)(templateObject_4$t || (templateObject_4$t = __makeTemplateObject([\"\\n margin-left: 6px;\\n\"], [\"\\n margin-left: 6px;\\n\"])));\nvar Radio$1 = styled.span(templateObject_5$j || (templateObject_5$j = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar RadioListItemText$1 = styled.span(templateObject_6$h || (templateObject_6$h = __makeTemplateObject([\"\\n padding-top: \", \";\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"], [\"\\n padding-top: \", \";\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar CopyAction$1 = styled.span(templateObject_7$f || (templateObject_7$f = __makeTemplateObject([\"\\n font-size: 12px;\\n color: \", \";\\n transition: color 0.2s ease-out;\\n\\n &:hover {\\n color: \", \";\\n transition: color 0.2s ease-out;\\n text-decoration: underline;\\n }\\n\"], [\"\\n font-size: 12px;\\n color: \", \";\\n transition: color 0.2s ease-out;\\n\\n &:hover {\\n color: \", \";\\n transition: color 0.2s ease-out;\\n text-decoration: underline;\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n});\nvar templateObject_1$3a, templateObject_2$Q, templateObject_3$C, templateObject_4$t, templateObject_5$j, templateObject_6$h, templateObject_7$f;\nvar RadioList$3 = function (props) {\n var className = props.className,\n items = props.items,\n selectedId = props.selectedId,\n onClick = props.onClick;\n var handleClick = function (e, item) {\n e.stopPropagation();\n if (selectedId !== item.id) {\n onClick(item);\n }\n };\n return /*#__PURE__*/React.createElement(RadioList$2, {\n \"data-testid\": generate(['radio-list'], props),\n className: className\n }, items.map(function (item) {\n var id = item.id;\n var isSelected = id === selectedId;\n return /*#__PURE__*/React.createElement(RadioListItemLabel$1, {\n key: id,\n onClick: function (e) {\n return handleClick(e, item);\n },\n isInspected: isSelected\n }, /*#__PURE__*/React.createElement(Radio$1, null, /*#__PURE__*/React.createElement(Radio$2, {\n onChange: function (_, e) {\n return handleClick(e, item);\n },\n isChecked: isSelected\n }), /*#__PURE__*/React.createElement(Badge, {\n size: \"small\",\n text: item.status,\n variant: \"default\"\n })), /*#__PURE__*/React.createElement(RadioListItemText$1, null, item.name));\n }));\n};\nvar GetUnclearQualityDescriptorsDocument = gql(templateObject_1$3b || (templateObject_1$3b = __makeTemplateObject([\"\\n query getUnclearQualityDescriptors {\\n getUnclearQualityDescriptors {\\n unclearQualityDescriptors {\\n id\\n description\\n }\\n }\\n }\\n\"], [\"\\n query getUnclearQualityDescriptors {\\n getUnclearQualityDescriptors {\\n unclearQualityDescriptors {\\n id\\n description\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetUnclearQualityDescriptorsQuery__\r\n *\r\n * To run a query within a React component, call `useGetUnclearQualityDescriptorsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUnclearQualityDescriptorsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUnclearQualityDescriptorsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetUnclearQualityDescriptorsQuery(baseOptions) {\n return useQuery(GetUnclearQualityDescriptorsDocument, baseOptions);\n}\nvar templateObject_1$3b;\nvar UnclearQualityDropdown = styled(View)(templateObject_1$3c || (templateObject_1$3c = __makeTemplateObject([\"\"], [\"\"])));\nvar Select = styled(Select$1)(templateObject_2$R || (templateObject_2$R = __makeTemplateObject([\"\\n width: \", \";\\n max-width: \", \";\\n\"], [\"\\n width: \", \";\\n max-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(40);\n}, function (p) {\n return p.theme.spacing.getSize(40);\n});\nvar templateObject_1$3c, templateObject_2$R;\nvar UnclearQualityDropdown$1 = function (props) {\n var className = props.className;\n var _a = useMatching$1(),\n unclearQualityDescriptorId = _a.unclearQualityDescriptorId,\n setUnclearQualityDescriptorId = _a.setUnclearQualityDescriptorId;\n var _b = __read(React.useState([]), 2),\n options = _b[0],\n setOptions = _b[1];\n var _c = useGetUnclearQualityDescriptorsQuery(),\n data = _c.data,\n loading = _c.loading;\n React.useEffect(function () {\n var _a;\n var unclearQualityDescriptors = (_a = data === null || data === void 0 ? void 0 : data.getUnclearQualityDescriptors) === null || _a === void 0 ? void 0 : _a.unclearQualityDescriptors;\n if (!loading && unclearQualityDescriptors && options.length === 0) {\n var newOptions = unclearQualityDescriptors.map(function (option) {\n return {\n value: option.id,\n label: option.description\n };\n });\n setOptions(newOptions);\n }\n }, [data, loading, options.length]);\n var handleSetUnclearQuality = function (value) {\n setUnclearQualityDescriptorId(\"\".concat(value));\n };\n return /*#__PURE__*/React.createElement(UnclearQualityDropdown, {\n \"data-testid\": generate(['unclear-quality-dropdown'], props),\n className: className\n }, options.length > 0 && /*#__PURE__*/React.createElement(Select, {\n options: options,\n value: unclearQualityDescriptorId,\n onChange: handleSetUnclearQuality\n }));\n};\nvar UnclearQualityDropdown$2 = styled(UnclearQualityDropdown$1)(templateObject_1$3d || (templateObject_1$3d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3d;\nvar RisksList = styled(View)(templateObject_1$3e || (templateObject_1$3e = __makeTemplateObject([\"\"], [\"\"])));\nvar List$2 = styled.ul(templateObject_2$S || (templateObject_2$S = __makeTemplateObject([\"\\n list-style: disc;\\n margin-left: \", \";\\n\"], [\"\\n list-style: disc;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ListItem$1 = styled.li(templateObject_3$D || (templateObject_3$D = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar templateObject_1$3e, templateObject_2$S, templateObject_3$D;\nvar RisksList$1 = function (props) {\n var className = props.className,\n risks = props.risks;\n return /*#__PURE__*/React.createElement(RisksList, {\n \"data-testid\": generate(['risks-list'], props),\n className: className\n }, risks && risks.length > 0 ? /*#__PURE__*/React.createElement(List$2, null, risks.map(function (r) {\n return /*#__PURE__*/React.createElement(ListItem$1, {\n key: r.code\n }, r.name);\n })) : /*#__PURE__*/React.createElement(Text$1, null, \"No risks available for this control\"));\n};\nvar CompareIndices = styled(View)(templateObject_1$3f || (templateObject_1$3f = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n margin-bottom: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n margin-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, Badge$1, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar templateObject_1$3f;\nvar CompareIndices$1 = function (props) {\n var className = props.className,\n indices = props.indices,\n compareIndices = props.compareIndices;\n if (!indices || indices.length === 0) return null;\n return /*#__PURE__*/React.createElement(CompareIndices, {\n \"data-testid\": generate(['compare-indices'], props),\n className: className\n }, indices === null || indices === void 0 ? void 0 : indices.map(function (index) {\n var name = index.name;\n var variant = 'default';\n if (compareIndices === null || compareIndices === void 0 ? void 0 : compareIndices.find(function (compare) {\n return compare.name === name;\n })) {\n variant = 'success';\n }\n return /*#__PURE__*/React.createElement(Badge$1, {\n key: name,\n size: \"small\",\n variant: variant,\n text: name,\n \"data-testid\": generateCypressId(\"badge--\".concat(name))\n });\n }));\n};\nvar CompareIndices$2 = styled(CompareIndices$1)(templateObject_1$3g || (templateObject_1$3g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3g;\nvar RiaDescription = styled(View)(templateObject_1$3h || (templateObject_1$3h = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar RIAText = styled(Text$1)(templateObject_2$T || (templateObject_2$T = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\nvar MarkdownText = styled(Markdown)(templateObject_3$E || (templateObject_3$E = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n font-size: \", \";\\n\\n & p {\\n font-size: \", \";\\n }\\n\"], [\"\\n margin-bottom: \", \";\\n font-size: \", \";\\n\\n & p {\\n font-size: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar templateObject_1$3h, templateObject_2$T, templateObject_3$E;\nvar RiaDescription$1 = function (props) {\n var className = props.className,\n riaDescription = props.riaDescription;\n var renderRia = function () {\n if (!riaDescription) return /*#__PURE__*/React.createElement(RIAText, null, \"RIA Summary currently not available for this control\");\n var review = riaDescription.review,\n identify = riaDescription.identify,\n action = riaDescription.action;\n return /*#__PURE__*/React.createElement(React.Fragment, null, review && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RIAText, {\n weight: 600\n }, \"Review:\"), /*#__PURE__*/React.createElement(MarkdownText, {\n content: review\n })), identify && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RIAText, {\n weight: 600\n }, \"Identify:\"), /*#__PURE__*/React.createElement(MarkdownText, {\n content: identify\n })), action && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RIAText, {\n weight: 600\n }, \"Actions:\"), /*#__PURE__*/React.createElement(MarkdownText, {\n content: action\n })));\n };\n return /*#__PURE__*/React.createElement(RiaDescription, {\n \"data-testid\": generate(['ria-description'], props),\n className: className\n }, renderRia());\n};\nvar RiaDescription$2 = styled(RiaDescription$1)(templateObject_1$3i || (templateObject_1$3i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3i;\nvar ClientControlDetails$3 = styled(View)(templateObject_1$3j || (templateObject_1$3j = __makeTemplateObject([\"\"], [\"\"])));\nvar Quality = styled(View)(templateObject_2$U || (templateObject_2$U = __makeTemplateObject([\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\\n \", \" {\\n margin-bottom: \", \";\\n margin-top: \", \";\\n margin-right: \", \";\\n }\\n\"], [\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\\n \", \" {\\n margin-bottom: \", \";\\n margin-top: \", \";\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(16);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, Text$1, function (p) {\n return p.theme.spacing.getSize(1);\n}, TabGroup, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Heading$4 = styled(Text$1)(templateObject_3$F || (templateObject_3$F = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DescriptionText = styled(Text$1)(templateObject_4$u || (templateObject_4$u = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n font-size: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar DetailsWrapper = styled(View)(templateObject_5$k || (templateObject_5$k = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Details = styled(Badge$1)(templateObject_6$i || (templateObject_6$i = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar AccordionContent = styled(View)(templateObject_7$g || (templateObject_7$g = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(0);\n});\nvar Accordion = styled(Accordion$2)(templateObject_8$b || (templateObject_8$b = __makeTemplateObject([\"\\n box-shadow: none;\\n margin-top: \", \";\\n\"], [\"\\n box-shadow: none;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$3j, templateObject_2$U, templateObject_3$F, templateObject_4$u, templateObject_5$k, templateObject_6$i, templateObject_7$g, templateObject_8$b;\nvar ACTIVE_DESC = {\n DESCRIPTION: 'DESCRIPTION',\n RIA: 'RIA'\n};\nvar descriptionTabs = [{\n id: ACTIVE_DESC.DESCRIPTION,\n title: 'Description'\n}, {\n id: ACTIVE_DESC.RIA,\n title: 'RIA Summary'\n}];\nvar ClientControlDetails$4 = function (props) {\n var className = props.className,\n control = props.control,\n compareIndices = props.compareIndices;\n var _a = __read(React.useState(ACTIVE_DESC.DESCRIPTION), 2),\n activeDescription = _a[0],\n setActiveDescription = _a[1];\n var _b = useMatching$1(),\n quality = _b.quality,\n setQuality = _b.setQuality,\n setUnclearQualityDescriptorId = _b.setUnclearQualityDescriptorId;\n React.useEffect(function () {\n if (control && control.quality) {\n setQuality(control.quality);\n }\n }, [control, setQuality]);\n var handleQuality = function (id) {\n setQuality(id);\n if (id === IMatchingJobQualityLevel.Clear) {\n setUnclearQualityDescriptorId(null);\n }\n };\n if (!control) {\n return null;\n }\n return /*#__PURE__*/React.createElement(ClientControlDetails$3, {\n \"data-testid\": generate(['client-control-details'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Quality, null, /*#__PURE__*/React.createElement(Text$1, null, \"CDQ:\"), ' ', (control === null || control === void 0 ? void 0 : control.suggestedQualityScore) && /*#__PURE__*/React.createElement(Text$1, {\n weight: 600\n }, transformFloatToPercentage(control === null || control === void 0 ? void 0 : control.suggestedQualityScore)), /*#__PURE__*/React.createElement(TabGroup, {\n size: \"small\",\n onClick: handleQuality,\n variant: \"sub\",\n activeId: quality,\n tabs: [{\n id: IMatchingJobQualityLevel.Clear,\n title: IMatchingJobQualityLevel.Clear\n }, {\n id: IMatchingJobQualityLevel.Unclear,\n title: IMatchingJobQualityLevel.Unclear\n }]\n }), quality === IMatchingJobQualityLevel.Unclear && /*#__PURE__*/React.createElement(UnclearQualityDropdown$2, null)), /*#__PURE__*/React.createElement(CompareIndices$2, {\n indices: control === null || control === void 0 ? void 0 : control.indices,\n compareIndices: compareIndices\n }), /*#__PURE__*/React.createElement(Heading$4, {\n size: 1,\n weight: 600\n }, control.name), /*#__PURE__*/React.createElement(TabGroup, {\n size: \"small\",\n onClick: function (id) {\n setActiveDescription(id);\n },\n variant: \"sub\",\n activeId: activeDescription,\n tabs: descriptionTabs\n }), activeDescription === ACTIVE_DESC.DESCRIPTION ? /*#__PURE__*/React.createElement(DescriptionText, null, control.description) : /*#__PURE__*/React.createElement(RiaDescription$2, {\n riaDescription: control.riaDescription\n }), /*#__PURE__*/React.createElement(DetailsWrapper, null, control.automation && /*#__PURE__*/React.createElement(Details, {\n size: \"small\",\n variant: \"default\",\n text: control.automation\n }), control.controlType && /*#__PURE__*/React.createElement(Details, {\n size: \"small\",\n variant: \"default\",\n text: control.controlType\n }), control.frequency && /*#__PURE__*/React.createElement(Details, {\n size: \"small\",\n variant: \"default\",\n text: control.frequency\n })), /*#__PURE__*/React.createElement(Accordion, {\n state: \"info\",\n defaultOpen: true,\n header: function () {\n return /*#__PURE__*/React.createElement(Text$1, null, \"Client Risks\");\n }\n }, /*#__PURE__*/React.createElement(AccordionContent, null, /*#__PURE__*/React.createElement(RisksList$1, {\n risks: control.risks\n }))));\n};\nvar ClientControlDetails$5 = styled(ClientControlDetails$4)(templateObject_1$3k || (templateObject_1$3k = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3k;\nvar colours$1 = toolsTheme.colours;\nvar backgroundColor$1 = colours$1.accent1[0]; // This named style should be the wrapper for the component i.e. the module\n\nvar ControlsCheckList = styled(View)(templateObject_1$3l || (templateObject_1$3l = __makeTemplateObject([\"\"], [\"\"])));\nvar ControlItem = styled(View)(templateObject_3$G || (templateObject_3$G = __makeTemplateObject([\"\\n padding: \", \";\\n display: block;\\n border-bottom: 1px solid \", \";\\n cursor: pointer;\\n &:hover {\\n background-color: \", \";\\n }\\n \", \"\\n\"], [\"\\n padding: \", \";\\n display: block;\\n border-bottom: 1px solid \", \";\\n cursor: pointer;\\n &:hover {\\n background-color: \", \";\\n }\\n \", \"\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(1.5), \" \").concat(p.theme.spacing.getSize(2));\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, backgroundColor$1, function (p) {\n return p.isInspected && css(templateObject_2$V || (templateObject_2$V = __makeTemplateObject([\"\\n background-color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"], [\"\\n background-color: \", \";\\n &:hover {\\n background-color: \", \";\\n }\\n \"])), backgroundColor$1, backgroundColor$1);\n});\nvar ControlInfoWrapper = styled(View)(templateObject_4$v || (templateObject_4$v = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n \", \" {\\n cursor: pointer;\\n }\\n\"], [\"\\n display: flex;\\n align-items: center;\\n \", \" {\\n cursor: pointer;\\n }\\n\"])), Checkbox$4);\nvar ControlCertainty = styled(Badge$1)(templateObject_5$l || (templateObject_5$l = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1.5);\n});\nvar ControlCode$3 = styled(Text$1)(templateObject_6$j || (templateObject_6$j = __makeTemplateObject([\"\\n margin-left: \", \";\\n font-size: \", \";\\n\"], [\"\\n margin-left: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1.5);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar ControlName = styled(Text$1)(templateObject_7$h || (templateObject_7$h = __makeTemplateObject([\"\\n margin-top: \", \";\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"], [\"\\n margin-top: \", \";\\n display: block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar templateObject_1$3l, templateObject_2$V, templateObject_3$G, templateObject_4$v, templateObject_5$l, templateObject_6$j, templateObject_7$h;\nvar ControlsCheckList$1 = function (props) {\n var className = props.className,\n controls = props.controls,\n _a = props.selectedControls,\n selectedControls = _a === void 0 ? [] : _a,\n onSelectControl = props.onSelectControl,\n inspectedId = props.inspectedId,\n onInspectControl = props.onInspectControl;\n if (!(controls === null || controls === void 0 ? void 0 : controls.length)) return null;\n return /*#__PURE__*/React.createElement(ControlsCheckList, {\n \"data-testid\": generate(['controls-check-list'], props),\n className: className\n }, controls.map(function (control) {\n var id = control.id;\n var isInspected = inspectedId ? inspectedId === id : false;\n var isChecked = selectedControls.includes(id);\n return /*#__PURE__*/React.createElement(ControlItem, {\n key: id,\n isInspected: isInspected,\n onClick: function () {\n return inspectedId !== id && onInspectControl(id);\n },\n \"data-testid\": generate([\"check-list-item--\".concat(id), isInspected ? 'is-inspected' : null])\n }, /*#__PURE__*/React.createElement(ControlInfoWrapper, null, /*#__PURE__*/React.createElement(Checkbox$4, {\n size: \"small\",\n isChecked: isChecked,\n onChange: function () {\n onSelectControl(id);\n }\n }), (control === null || control === void 0 ? void 0 : control.certainty) && /*#__PURE__*/React.createElement(ControlCertainty, {\n variant: \"default\",\n text: control.certainty\n }), /*#__PURE__*/React.createElement(ControlCode$3, {\n weight: 600\n }, control.code)), /*#__PURE__*/React.createElement(ControlName, null, control.name));\n }));\n};\nvar ControlsCheckList$2 = styled(ControlsCheckList$1)(templateObject_1$3m || (templateObject_1$3m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3m;\nvar SearchMatchingControlsDocument = gql(templateObject_1$3n || (templateObject_1$3n = __makeTemplateObject([\"\\n query searchMatchingControls($input: SearchMatchingControlsInput!) {\\n searchMatchingControls(input: $input) {\\n controls {\\n ...MatchingControl\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n query searchMatchingControls($input: SearchMatchingControlsInput!) {\\n searchMatchingControls(input: $input) {\\n controls {\\n ...MatchingControl\\n }\\n }\\n }\\n \", \"\\n\"])), MatchingControlFragmentDoc);\nfunction useSearchMatchingControlsLazyQuery(baseOptions) {\n return useLazyQuery(SearchMatchingControlsDocument, baseOptions);\n}\nvar templateObject_1$3n;\nvar useControlsSearch = function () {\n var _a = __read(React.useState(''), 2),\n searchText = _a[0],\n setSearchText = _a[1];\n var debouncedSearchText = useDebounce$1(searchText, 300);\n var _b = __read(React.useState([]), 2),\n resultsList = _b[0],\n setResultsList = _b[1];\n var _c = __read(React.useState([]), 2),\n controls = _c[0],\n setControls = _c[1];\n var _d = __read(useSearchMatchingControlsLazyQuery({\n onCompleted: function (controlsData) {\n var _a;\n var controls = (_a = controlsData === null || controlsData === void 0 ? void 0 : controlsData.searchMatchingControls) === null || _a === void 0 ? void 0 : _a.controls;\n if (controls && controls.length > 0) {\n var results = controls.map(function (control) {\n return {\n id: control.id,\n code: control.code,\n name: control.name\n };\n });\n setResultsList(results);\n setControls(controls);\n } else {\n setResultsList([]);\n setControls([]);\n }\n },\n fetchPolicy: 'network-only'\n }), 2),\n searchControls = _d[0],\n _e = _d[1],\n loading = _e.loading,\n error = _e.error;\n React.useEffect(function () {\n if (debouncedSearchText) {\n searchControls({\n variables: {\n input: {\n searchTerm: debouncedSearchText\n }\n }\n });\n }\n }, [debouncedSearchText, searchControls]);\n var onResetSearch = function () {\n setControls([]);\n setResultsList([]);\n };\n return {\n onResetSearch: onResetSearch,\n controls: controls,\n resultsList: resultsList,\n loading: loading,\n error: error,\n setSearchText: setSearchText,\n searchText: searchText,\n debouncedSearchText: debouncedSearchText\n };\n};\nvar AcinControlsList = styled(View)(templateObject_1$3o || (templateObject_1$3o = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchWrapper$2 = styled(View)(templateObject_2$W || (templateObject_2$W = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(3), \" \").concat(p.theme.spacing.getSize(3));\n});\nvar NoSearchResults$1 = styled(View)(templateObject_3$H || (templateObject_3$H = __makeTemplateObject([\"\\n align-items: center;\\n display: flex;\\n padding: \", \";\\n\"], [\"\\n align-items: center;\\n display: flex;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar IconAlertError$1 = styled(IconAlertError$2)(templateObject_4$w || (templateObject_4$w = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar SkeletonLoaderWrap = styled(View)(templateObject_5$m || (templateObject_5$m = __makeTemplateObject([\"\\n padding: 0 \", \";\\n\"], [\"\\n padding: 0 \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar SkeletonLoaderButton = styled(SkeletonLoader)(templateObject_6$k || (templateObject_6$k = __makeTemplateObject([\"\\n min-width: \", \";\\n height: \", \";\\n\"], [\"\\n min-width: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(50);\n}, function (p) {\n return p.theme.spacing.getSize(13.675);\n});\nvar templateObject_1$3o, templateObject_2$W, templateObject_3$H, templateObject_4$w, templateObject_5$m, templateObject_6$k;\nvar AcinControlsList$1 = function (props) {\n var className = props.className,\n inspectedId = props.inspectedId,\n selectedControls = props.selectedControls,\n onInspectedControl = props.onInspectedControl,\n onSelectControl = props.onSelectControl;\n var _a = useControlsSearch(),\n onResetSearch = _a.onResetSearch,\n controls = _a.controls,\n resultsList = _a.resultsList,\n loading = _a.loading,\n error = _a.error,\n setSearchText = _a.setSearchText,\n searchText = _a.searchText,\n debouncedSearchText = _a.debouncedSearchText;\n var handleSearch = function (event) {\n setSearchText(event.target.value);\n onResetSearch();\n onInspectedControl(undefined);\n };\n var handleClearSearch = function () {\n setSearchText('');\n onResetSearch();\n onInspectedControl(undefined);\n };\n var handleInspectedControl = function (id) {\n var control = controls === null || controls === void 0 ? void 0 : controls.find(function (control) {\n return control.id === id;\n });\n if (control) {\n onInspectedControl(control);\n }\n };\n var handleSelectControl = function (id) {\n var control = controls.find(function (current) {\n return current.id === id;\n });\n if (control) {\n onSelectControl(control);\n }\n };\n React.useEffect(function () {\n if (controls && controls.length > 0 && !inspectedId && !loading) {\n onInspectedControl(controls[0]);\n }\n }, [controls, onInspectedControl, inspectedId, loading]);\n var renderSearchResultsList = function () {\n if (!searchText || searchText !== debouncedSearchText) {\n if (!selectedControls || selectedControls.length === 0) return null;\n return /*#__PURE__*/React.createElement(ControlsCheckList$2, {\n controls: selectedControls,\n selectedControls: selectedControls.map(function (control) {\n return control.id;\n }),\n inspectedId: inspectedId,\n onInspectControl: handleInspectedControl,\n onSelectControl: handleSelectControl\n });\n }\n if (loading) return Array.from({\n length: 3\n }, function (_, idx) {\n return /*#__PURE__*/React.createElement(SkeletonLoaderWrap, {\n key: idx\n }, /*#__PURE__*/React.createElement(SkeletonLoaderButton, null));\n });\n if (error) {\n return /*#__PURE__*/React.createElement(NoSearchResults$1, null, /*#__PURE__*/React.createElement(IconAlertError$1, null), \"Something went wrong. Clear the search input and try again\");\n }\n if (resultsList && resultsList.length === 0) {\n return /*#__PURE__*/React.createElement(NoSearchResults$1, null, /*#__PURE__*/React.createElement(IconAlertError$1, null), \"No Index Control Found.\");\n }\n return /*#__PURE__*/React.createElement(ControlsCheckList$2, {\n controls: resultsList,\n selectedControls: selectedControls.map(function (control) {\n return control.id;\n }),\n inspectedId: inspectedId,\n onInspectControl: handleInspectedControl,\n onSelectControl: handleSelectControl\n });\n };\n return /*#__PURE__*/React.createElement(AcinControlsList, {\n \"data-testid\": generate(['acin-controls-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SearchWrapper$2, null, /*#__PURE__*/React.createElement(SearchBar, {\n onSearch: handleSearch,\n onClear: handleClearSearch,\n searchInput: searchText,\n placeholder: \"Search Acin Control by Code or Name\"\n })), renderSearchResultsList());\n};\nvar AcinControlsList$2 = styled(AcinControlsList$1)(templateObject_1$3p || (templateObject_1$3p = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3p;\nvar AcinControlDetails$4 = styled(View)(templateObject_1$3q || (templateObject_1$3q = __makeTemplateObject([\"\"], [\"\"])));\nvar NoControl = styled(View)(templateObject_2$X || (templateObject_2$X = __makeTemplateObject([\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n justify-content: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(16);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, Text$1, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Code = styled(View)(templateObject_3$I || (templateObject_3$I = __makeTemplateObject([\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n min-height: \", \";\\n padding-top: \", \";\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n flex-wrap: wrap;\\n align-items: center;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(16);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, Text$1, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Heading$5 = styled(Text$1)(templateObject_4$x || (templateObject_4$x = __makeTemplateObject([\"\"], [\"\"])));\nvar DescriptionText$1 = styled(Text$1)(templateObject_5$n || (templateObject_5$n = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar DetailsWrapper$1 = styled(View)(templateObject_6$l || (templateObject_6$l = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Details$1 = styled(Badge$1)(templateObject_7$i || (templateObject_7$i = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar AccordionContent$1 = styled(View)(templateObject_8$c || (templateObject_8$c = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(0);\n});\nvar Accordion$1 = styled(Accordion$2)(templateObject_9$a || (templateObject_9$a = __makeTemplateObject([\"\\n box-shadow: none;\\n margin-top: \", \";\\n\"], [\"\\n box-shadow: none;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$3q, templateObject_2$X, templateObject_3$I, templateObject_4$x, templateObject_5$n, templateObject_6$l, templateObject_7$i, templateObject_8$c, templateObject_9$a;\nvar AcinControlDetails$5 = function (props) {\n var className = props.className,\n control = props.control,\n compareIndices = props.compareIndices,\n certainty = props.certainty;\n return /*#__PURE__*/React.createElement(AcinControlDetails$4, {\n \"data-testid\": generate(['acin-control-details'], props),\n className: className\n }, !control ? /*#__PURE__*/React.createElement(NoControl, {\n \"data-testid\": \"wrapper-no-control-details\"\n }, /*#__PURE__*/React.createElement(Text$1, null, \"No Control Selected\")) : /*#__PURE__*/React.createElement(View, {\n \"data-testid\": \"wrapper-control-details\"\n }, /*#__PURE__*/React.createElement(Code, null, /*#__PURE__*/React.createElement(Text$1, null, control.code), certainty && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Text$1, null, \"| Certainty:\"), /*#__PURE__*/React.createElement(Text$1, {\n weight: 600\n }, transformFloatToPercentage(certainty)))), /*#__PURE__*/React.createElement(CompareIndices$2, {\n indices: control === null || control === void 0 ? void 0 : control.indices,\n compareIndices: compareIndices\n }), /*#__PURE__*/React.createElement(Heading$5, {\n size: 1,\n weight: 600\n }, control.name), /*#__PURE__*/React.createElement(RiaDescription$2, {\n riaDescription: control === null || control === void 0 ? void 0 : control.riaDescription\n }), /*#__PURE__*/React.createElement(DetailsWrapper$1, null, control.automation && /*#__PURE__*/React.createElement(Details$1, {\n size: \"small\",\n variant: \"default\",\n text: control.automation\n }), control.controlType && /*#__PURE__*/React.createElement(Details$1, {\n size: \"small\",\n variant: \"default\",\n text: control.controlType\n }), control.frequency && /*#__PURE__*/React.createElement(Details$1, {\n size: \"small\",\n variant: \"default\",\n text: control.frequency\n })), /*#__PURE__*/React.createElement(Accordion$1, {\n state: \"info\",\n defaultOpen: true,\n header: function () {\n return /*#__PURE__*/React.createElement(Text$1, null, \"Index Risks\");\n }\n }, /*#__PURE__*/React.createElement(AccordionContent$1, null, /*#__PURE__*/React.createElement(RisksList$1, {\n risks: control.risks\n })))));\n};\nvar AcinControlDetails$6 = styled(AcinControlDetails$5)(templateObject_1$3r || (templateObject_1$3r = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3r;\nvar UpdateMatchingJobControlFragmentDoc = gql(templateObject_1$3s || (templateObject_1$3s = __makeTemplateObject([\"\\n fragment UpdateMatchingJobControl on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n ...MatchingControl\\n }\\n matched {\\n ...MatchingControl\\n }\\n matchedAt\\n }\\n \", \"\\n\"], [\"\\n fragment UpdateMatchingJobControl on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n ...MatchingControl\\n }\\n matched {\\n ...MatchingControl\\n }\\n matchedAt\\n }\\n \", \"\\n\"])), MatchingControlFragmentDoc);\nvar UpdateMatchingJobControlMutationFragmentDoc = gql(templateObject_2$Y || (templateObject_2$Y = __makeTemplateObject([\"\\n fragment UpdateMatchingJobControlMutation on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matched {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matchedAt\\n }\\n\"], [\"\\n fragment UpdateMatchingJobControlMutation on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matched {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matchedAt\\n }\\n\"])));\nvar templateObject_1$3s, templateObject_2$Y;\nvar UpdateMatchingJobControlDocument = gql(templateObject_1$3t || (templateObject_1$3t = __makeTemplateObject([\"\\n mutation updateMatchingJobControl($input: UpdateMatchingJobControlInput!) {\\n updateMatchingJobControl(input: $input) {\\n ...UpdateMatchingJobControl\\n }\\n }\\n \", \"\\n\"], [\"\\n mutation updateMatchingJobControl($input: UpdateMatchingJobControlInput!) {\\n updateMatchingJobControl(input: $input) {\\n ...UpdateMatchingJobControl\\n }\\n }\\n \", \"\\n\"])), UpdateMatchingJobControlFragmentDoc);\n/**\r\n * __useUpdateMatchingJobControlMutation__\r\n *\r\n * To run a mutation, you first call `useUpdateMatchingJobControlMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useUpdateMatchingJobControlMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [updateMatchingJobControlMutation, { data, loading, error }] = useUpdateMatchingJobControlMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useUpdateMatchingJobControlMutation(baseOptions) {\n return useMutation(UpdateMatchingJobControlDocument, baseOptions);\n}\nvar templateObject_1$3t;\nvar UpdateMatchingJobControlFragment = gql(templateObject_1$3u || (templateObject_1$3u = __makeTemplateObject([\"\\n fragment UpdateMatchingJobControlFragment on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matched {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matchedAt\\n }\\n\"], [\"\\n fragment UpdateMatchingJobControlFragment on MatchingJobControl {\\n id\\n status\\n quality\\n proposedMatches {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matched {\\n id\\n code\\n name\\n description\\n controlType\\n frequency\\n automation\\n riaDescription {\\n review\\n identify\\n action\\n }\\n risks {\\n code\\n name\\n }\\n indices {\\n code\\n name\\n }\\n }\\n matchedAt\\n }\\n\"])));\nvar templateObject_1$3u;\nvar shadows = toolsTheme.shadows;\nvar boxShadowVerticalBoxes$1 = shadows.boxShadowVerticalBoxes,\n boxShadowTopBorder$1 = shadows.boxShadowTopBorder; // This named style should be the wrapper for the component i.e. the module\n\nvar MatchingJobScreen = styled(View)(templateObject_1$3v || (templateObject_1$3v = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar MatchingJobScreenContent = styled(View)(templateObject_2$Z || (templateObject_2$Z = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n height: calc(100vh - 50px);\\n background-color: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n height: calc(100vh - 50px);\\n background-color: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar ClientControlsList = styled(View)(templateObject_3$J || (templateObject_3$J = __makeTemplateObject([\"\\n box-shadow: \", \";\\n width: 290px;\\n min-width: 290px;\\n padding-bottom: \", \";\\n background-color: \", \";\\n overflow-y: auto;\\n\"], [\"\\n box-shadow: \", \";\\n width: 290px;\\n min-width: 290px;\\n padding-bottom: \", \";\\n background-color: \", \";\\n overflow-y: auto;\\n\"])), boxShadowVerticalBoxes$1, function (p) {\n return p.theme.spacing.getSize(20);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n});\nvar BackLinkWrapper$1 = styled(Link$2)(templateObject_4$y || (templateObject_4$y = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(3), \" \").concat(p.theme.spacing.getSize(2));\n});\nvar ArrowLeft$1 = styled(IconChevronLeft)(templateObject_5$o || (templateObject_5$o = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ClientControlDetails$6 = styled(View)(templateObject_6$m || (templateObject_6$m = __makeTemplateObject([\"\\n width: 50%;\\n padding: \", \";\\n margin: \", \";\\n background-color: \", \";\\n box-shadow: \", \";\\n overflow-y: auto;\\n\"], [\"\\n width: 50%;\\n padding: \", \";\\n margin: \", \";\\n background-color: \", \";\\n box-shadow: \", \";\\n overflow-y: auto;\\n\"])), function (p) {\n return \"0 \".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(20));\n}, function (p) {\n return \"0 \".concat(p.theme.spacing.getSize(1), \" 0 \").concat(p.theme.spacing.getSize(2));\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, boxShadowVerticalBoxes$1);\nvar AcinControlDetails$7 = styled(View)(templateObject_7$j || (templateObject_7$j = __makeTemplateObject([\"\\n width: 50%;\\n padding: \", \";\\n margin: \", \";\\n overflow-y: auto;\\n background-color: \", \";\\n box-shadow: \", \";\\n\"], [\"\\n width: 50%;\\n padding: \", \";\\n margin: \", \";\\n overflow-y: auto;\\n background-color: \", \";\\n box-shadow: \", \";\\n\"])), function (p) {\n return \"0 \".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(20));\n}, function (p) {\n return \"0 \".concat(p.theme.spacing.getSize(2), \" 0 \").concat(p.theme.spacing.getSize(1));\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, boxShadowVerticalBoxes$1);\nvar AcinControlsList$3 = styled(View)(templateObject_8$d || (templateObject_8$d = __makeTemplateObject([\"\\n background-color: \", \";\\n box-shadow: \", \";\\n width: 290px;\\n min-width: 290px;\\n padding-bottom: \", \";\\n overflow-y: auto;\\n\"], [\"\\n background-color: \", \";\\n box-shadow: \", \";\\n width: 290px;\\n min-width: 290px;\\n padding-bottom: \", \";\\n overflow-y: auto;\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, boxShadowVerticalBoxes$1, function (p) {\n return p.theme.spacing.getSize(20);\n});\nvar MatchingJobScreenActions = styled(View)(templateObject_9$b || (templateObject_9$b = __makeTemplateObject([\"\\n box-shadow: \", \";\\n background-color: \", \";\\n bottom: 0;\\n display: flex;\\n left: 0;\\n padding: \", \";\\n position: fixed;\\n right: 0;\\n justify-content: flex-end;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n box-shadow: \", \";\\n background-color: \", \";\\n bottom: 0;\\n display: flex;\\n left: 0;\\n padding: \", \";\\n position: fixed;\\n right: 0;\\n justify-content: flex-end;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), boxShadowTopBorder$1, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, function (p) {\n return p.theme.spacing.getSize(2.5);\n}, Button, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ActionLink$1 = styled(Link$2)(templateObject_10$6 || (templateObject_10$6 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ActionText = styled.span(templateObject_11$6 || (templateObject_11$6 = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-right: \", \";\\n\"], [\"\\n margin-left: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar AlertWrapper = styled(View)(templateObject_12$6 || (templateObject_12$6 = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n right: \", \";\\n\"], [\"\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar templateObject_1$3v, templateObject_2$Z, templateObject_3$J, templateObject_4$y, templateObject_5$o, templateObject_6$m, templateObject_7$j, templateObject_8$d, templateObject_9$b, templateObject_10$6, templateObject_11$6, templateObject_12$6;\nvar defaultInspectedControl = function (controls) {\n return function () {\n return controls.length > 0 ? controls[0] : null;\n };\n};\nvar MatchingJobScreen$1 = function (props) {\n var className = props.className;\n var history = useHistory();\n var _a = useMatching$1(),\n controls = _a.controls,\n setControls = _a.setControls,\n error = _a.error,\n resetError = _a.resetError,\n quality = _a.quality,\n unclearQualityDescriptorId = _a.unclearQualityDescriptorId,\n setQuality = _a.setQuality,\n setUnclearQualityDescriptorId = _a.setUnclearQualityDescriptorId;\n var _b = __read(React.useState(null), 2),\n inspectedControl = _b[0],\n setInspectedControl = _b[1];\n var _c = __read(React.useState(undefined), 2),\n inspectedMatch = _c[0],\n setInspectedMatch = _c[1];\n var _d = __read(React.useState([]), 2),\n selectedMatches = _d[0],\n setSelectedMatches = _d[1];\n var _e = __read(React.useState([]), 2),\n lastMatch = _e[0],\n setLastMatch = _e[1];\n var _f = __read(useUpdateMatchingJobControlMutation({\n update: function (cache, _a) {\n var data = _a.data;\n cache.modify({\n fields: {\n getMatchingJobControls: function (existingData) {\n if (existingData === void 0) {\n existingData = {};\n }\n var currentControl = data === null || data === void 0 ? void 0 : data.updateMatchingJobControl;\n if (!currentControl) return existingData;\n var newControl = cache.writeFragment({\n id: cache.identify(currentControl),\n data: {\n id: currentControl.id,\n status: currentControl.status,\n quality: currentControl.quality,\n proposedMatches: currentControl.proposedMatches,\n matched: currentControl.matched,\n matchedAt: currentControl.matchedAt\n },\n fragment: UpdateMatchingJobControlFragment\n });\n return __assign(__assign({}, existingData), {\n controls: __spreadArray([], __read(existingData.controls.map(function (c) {\n return c.__ref === (newControl === null || newControl === void 0 ? void 0 : newControl.__ref) ? newControl : c;\n })), false)\n });\n }\n }\n });\n },\n onCompleted: function (data) {\n var updatedControlData = data.updateMatchingJobControl;\n if (!updatedControlData) return;\n var updatedControls = controls.map(function (control) {\n return control.id === updatedControlData.id ? __assign(__assign({}, control), updatedControlData) : control;\n });\n setControls(updatedControls);\n setSelectedMatches([]);\n handleNext(true);\n }\n }), 1),\n updateControl = _f[0];\n React.useEffect(function () {\n var _a;\n if (controls.length > 0 && !inspectedControl) {\n setInspectedControl(defaultInspectedControl(controls));\n }\n if (inspectedControl) {\n setSelectedMatches((_a = inspectedControl === null || inspectedControl === void 0 ? void 0 : inspectedControl.proposedMatches) !== null && _a !== void 0 ? _a : []);\n if (inspectedControl === null || inspectedControl === void 0 ? void 0 : inspectedControl.quality) {\n setQuality(inspectedControl === null || inspectedControl === void 0 ? void 0 : inspectedControl.quality);\n if (inspectedControl.quality === IMatchingJobQualityLevel.Clear) {\n setUnclearQualityDescriptorId(null);\n }\n }\n }\n }, [controls, inspectedControl, setQuality, setUnclearQualityDescriptorId]);\n var handlePrev = function () {\n if (!inspectedControl) return;\n var index = controls.findIndex(function (control) {\n return control.id === inspectedControl.id;\n });\n if (index === 0) {\n setInspectedControl(controls[controls.length - 1]);\n } else {\n setInspectedControl(controls[index - 1]);\n }\n };\n var handleNext = function (exitMatchingScreen) {\n if (exitMatchingScreen === void 0) {\n exitMatchingScreen = false;\n }\n if (!inspectedControl) return;\n var index = controls.findIndex(function (control) {\n return control.id === inspectedControl.id;\n });\n if (index < controls.length - 1) {\n // inspect next client control\n setInspectedControl(controls[index + 1]);\n } else if (!exitMatchingScreen) {\n // inspect first client control\n setInspectedControl(controls[0]);\n } else {\n // exist matching screen\n history.goBack();\n }\n };\n var handleClientControl = function (control) {\n var _a;\n setInspectedControl(control);\n setSelectedMatches((_a = control.proposedMatches) !== null && _a !== void 0 ? _a : []);\n };\n var handleInspectedControl = function (control) {\n setInspectedMatch(control);\n };\n var handleSelectControl = function (control) {\n if (selectedMatches.length > 0) {\n var index = selectedMatches.findIndex(function (current) {\n return current.id === control.id;\n });\n if (index > -1) {\n setSelectedMatches(__spreadArray(__spreadArray([], __read(selectedMatches.slice(0, index)), false), __read(selectedMatches.slice(index + 1)), false));\n } else {\n setSelectedMatches(__spreadArray(__spreadArray([], __read(selectedMatches), false), [control], false));\n }\n } else if (selectedMatches.length === 0) {\n setSelectedMatches([control]);\n }\n };\n var isLastMatchDisabled = function () {\n return lastMatch.length === 0;\n };\n var isMatchAndNextDisabled = function () {\n if (quality === IMatchingJobQualityLevel.Unclear && !unclearQualityDescriptorId) return true;\n return selectedMatches.length === 0;\n };\n var isUniqueAndNextDisabled = function () {\n if (quality === IMatchingJobQualityLevel.Unclear && !unclearQualityDescriptorId) return true;\n return selectedMatches.length > 0;\n };\n var handleMatch = function () {\n if (!inspectedControl) return;\n updateControl({\n variables: {\n input: {\n id: inspectedControl.id,\n proposed: {\n matchedIds: selectedMatches.map(function (match) {\n return match.id;\n }),\n quality: {\n level: quality,\n descriptorId: unclearQualityDescriptorId\n }\n }\n }\n }\n });\n setLastMatch(selectedMatches);\n };\n var handleUnique = function () {\n if (!inspectedControl) return;\n updateControl({\n variables: {\n input: {\n id: inspectedControl.id,\n proposed: {\n matchedIds: [],\n quality: {\n level: quality,\n descriptorId: unclearQualityDescriptorId\n }\n }\n }\n }\n });\n };\n var handleSkip = function () {\n if (!inspectedControl) return;\n updateControl({\n variables: {\n input: {\n id: inspectedControl.id,\n proposed: {\n matchedIds: null,\n quality: null\n }\n }\n }\n });\n };\n var handleCopyLastMatch = function () {\n setSelectedMatches(lastMatch);\n };\n return /*#__PURE__*/React.createElement(MatchingJobScreen, {\n \"data-testid\": generate(['page--matching-job-screen'], props),\n className: className\n }, /*#__PURE__*/React.createElement(MatchingJobScreenContent, null, /*#__PURE__*/React.createElement(ClientControlsList, null, /*#__PURE__*/React.createElement(BackLinkWrapper$1, {\n onClick: function () {\n return history.goBack();\n }\n }, /*#__PURE__*/React.createElement(ArrowLeft$1, null), \" Back to All Controls\"), /*#__PURE__*/React.createElement(RadioList$3, {\n onClick: handleClientControl,\n items: controls,\n selectedId: inspectedControl && inspectedControl.id\n })), /*#__PURE__*/React.createElement(ClientControlDetails$6, null, /*#__PURE__*/React.createElement(ClientControlDetails$5, {\n key: inspectedControl && inspectedControl.id,\n control: inspectedControl,\n compareIndices: [{\n code: 'FX',\n name: 'FX'\n }]\n })), /*#__PURE__*/React.createElement(AcinControlDetails$7, null, /*#__PURE__*/React.createElement(AcinControlDetails$6, {\n control: inspectedMatch,\n compareIndices: [{\n code: 'FX',\n name: 'FX'\n }]\n })), /*#__PURE__*/React.createElement(AcinControlsList$3, null, /*#__PURE__*/React.createElement(AcinControlsList$2, {\n inspectedId: inspectedMatch ? inspectedMatch.id : '',\n selectedControls: selectedMatches,\n onInspectedControl: handleInspectedControl,\n onSelectControl: handleSelectControl\n }))), /*#__PURE__*/React.createElement(MatchingJobScreenActions, null, /*#__PURE__*/React.createElement(ActionLink$1, {\n disabled: controls.length === 0,\n onClick: handlePrev\n }, /*#__PURE__*/React.createElement(IconChevronLeft, null), /*#__PURE__*/React.createElement(ActionText, null, \"Previous\")), /*#__PURE__*/React.createElement(ActionLink$1, {\n disabled: controls.length === 0,\n onClick: function () {\n return handleNext();\n }\n }, /*#__PURE__*/React.createElement(ActionText, null, \"Next\"), /*#__PURE__*/React.createElement(IconChevronRight, null)), /*#__PURE__*/React.createElement(Button, {\n size: \"small\",\n variant: \"secondary\",\n label: \"Copy Last Match\",\n disabled: isLastMatchDisabled(),\n onClick: handleCopyLastMatch\n }), /*#__PURE__*/React.createElement(Button, {\n size: \"small\",\n variant: \"primary\",\n label: \"Skip\",\n onClick: handleSkip\n }), /*#__PURE__*/React.createElement(Button, {\n size: \"small\",\n variant: \"primary\",\n label: \"Unique & Next\",\n disabled: isUniqueAndNextDisabled(),\n onClick: handleUnique\n }), /*#__PURE__*/React.createElement(Button, {\n size: \"small\",\n variant: \"primary\",\n label: \"Match & Next\",\n disabled: isMatchAndNextDisabled(),\n onClick: handleMatch\n })), error && /*#__PURE__*/React.createElement(AlertWrapper, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Ops. Something wrong happened on retrieving the controls selected. Please go back to all controls and select them from the table\",\n onClose: function () {\n return resetError();\n }\n })));\n};\nvar MatchingJobScreen$2 = styled(MatchingJobScreen$1)(templateObject_1$3w || (templateObject_1$3w = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3w;\nvar DashboardRoute = Dashboard$5;\nexport { AccountRoute$2 as AccountRoute, CLUSTER_STATUS, CONTROL_STATUS_PROTOTYPE, Cluster$1 as Cluster, Connect$1 as Connect, ConnectClient$1 as ConnectClient, ConnectFileStorage$1 as ConnectFileStorage, ConnectJob$1 as ConnectJob, ConnectJobs$1 as ConnectJobs, ConnectProvider, Context$1 as Context, ControlJobRoute$2 as ControlJobRoute, ControlMatching$1 as ControlMatching, Dashboard$2 as Dashboard, DashboardRoute, DataMatching$3 as DataMatching, FileUploader$2 as FileUploader, INITIAL_STATE$3 as INITIAL_STATE, JOB_STATUS, JobsRoute$2 as JobsRoute, MODE, MatchingJobScreen$2 as MatchingJobScreen, MatchingProvider$2 as MatchingProvider, SME_QUALITY, UploadRoute$2 as UploadRoute, typePolicies, useConnect, useMatching$1 as useMatching };\n//# sourceMappingURL=index.js.map","import styled from 'styled-components';\nimport React from 'react';\nimport { gql, useQuery, useMutation } from '@apollo/client';\nimport { useToaster, DropdownMenu, generate, Modal, View, Heading, Select, themeHelpers, theme, Text, WideLogo, ThemeProvider, ToggleSwitch, InfoText, InputGroup } from '@acin/ui-core';\nimport { exportComponentAsPNG, exportComponentAsJPEG, exportComponentAsPDF } from 'react-component-export-image';\nimport { format } from 'date-fns';\n\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***************************************************************************** */\n\nvar __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};\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar GetDownloadFileByIdsDocument = gql(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n query getDownloadFileByIds($ids: [ID!]!) {\\n getDownloadFileByIds(ids: $ids) {\\n id\\n fileURL\\n status\\n }\\n }\\n\"], [\"\\n query getDownloadFileByIds($ids: [ID!]!) {\\n getDownloadFileByIds(ids: $ids) {\\n id\\n fileURL\\n status\\n }\\n }\\n\"])));\n/**\r\n * __useGetDownloadFileByIdsQuery__\r\n *\r\n * To run a query within a React component, call `useGetDownloadFileByIdsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetDownloadFileByIdsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetDownloadFileByIdsQuery({\r\n * variables: {\r\n * ids: // value for 'ids'\r\n * },\r\n * });\r\n */\nfunction useGetDownloadFileByIdsQuery(baseOptions) {\n return useQuery(GetDownloadFileByIdsDocument, baseOptions);\n}\nvar templateObject_1;\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Default\"] = \"DEFAULT\";\n IUiTheme[\"Dark\"] = \"DARK\";\n})(IUiTheme || (IUiTheme = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n})(ITableVariant || (ITableVariant = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n})(IFilterType || (IFilterType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Positive\"] = \"POSITIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n})(ISentiment || (ISentiment = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n IInsightMetricType[\"All\"] = \"ALL\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n})(IInsightType || (IInsightType = {}));\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n ITableHeaderType[\"Inner\"] = \"INNER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n ITableRowType[\"Child\"] = \"CHILD\";\n})(ITableRowType || (ITableRowType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IGlobalSearchResultType;\n(function (IGlobalSearchResultType) {\n IGlobalSearchResultType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultType[\"RegAlert\"] = \"REG_ALERT\";\n IGlobalSearchResultType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n})(IGlobalSearchResultType || (IGlobalSearchResultType = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Trading\"] = \"TRADING\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n})(IProductType || (IProductType = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Private\"] = \"PRIVATE\";\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n})(IReadPermission || (IReadPermission = {}));\nvar useOldDownload = function () {\n var _a = __read(React.useState([]), 2),\n polling = _a[0],\n setPolling = _a[1];\n var _b = __read(React.useState([]), 2),\n completed = _b[0],\n setCompleted = _b[1];\n var onAddToast = useToaster().onAddToast;\n var onAddDownload = React.useCallback(function (id) {\n setPolling(__spread(polling, [id]));\n onAddToast({\n id: id + \"-started\",\n title: 'Your Download has Started',\n message: 'Once complete, the file will be on your computer (often in the downloads folder).',\n status: 'success'\n });\n }, [polling, onAddToast]);\n var onAddComplete = React.useCallback(function (file) {\n setPolling(polling.filter(function (id) {\n return id !== file.id;\n }));\n setCompleted(__spread(completed, [file]));\n if (file.status === IDownloadStatus.Failed) {\n onAddToast({\n id: file.id + \"-failed\",\n title: 'Download failed',\n message: 'The download was unable to complete. Please try again later.',\n status: 'error'\n });\n } else if (file.status === IDownloadStatus.Complete && file.fileURL) {\n // Trigger the download in the BG\n var newWindow = window.open(file.fileURL, '_blank');\n if (!newWindow || newWindow.closed || typeof newWindow.closed == 'undefined') {\n // If the popup is blocked, show a download button\n onAddToast({\n id: file.id + \"-complete\",\n title: 'Download Blocked',\n message: 'Pop-ups have been disabled for this browser. Please enable pop-ups for this site to allow future downloads.',\n status: 'warning',\n actionPrimary: {\n label: 'Download Now',\n onClick: function () {\n return window.open(file.fileURL, '_blank');\n }\n }\n });\n } else {\n // If we can auto download then just say it is complete?\n onAddToast({\n id: file.id + \"-complete\",\n title: 'Download Complete',\n hideCloseButton: false,\n status: 'success'\n });\n }\n }\n }, [polling, completed, onAddToast]);\n var onError = React.useCallback(function (id, error) {\n onAddToast({\n id: id + \"-error\",\n title: error.title,\n message: error.message,\n status: 'error'\n });\n }, [onAddToast]);\n var onRemoveComplete = React.useCallback(function (file) {\n setCompleted(completed.filter(function (item) {\n return item.id !== file.id;\n }));\n }, [completed]);\n return {\n onAddDownload: onAddDownload,\n onAddComplete: onAddComplete,\n onRemoveComplete: onRemoveComplete,\n onError: onError,\n polling: polling,\n completed: completed\n };\n};\nvar GetAllCalibrateDownloadsDocument = gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n query getAllCalibrateDownloads {\\n getAllCalibrateDownloads {\\n id\\n filename\\n type\\n status\\n progressPercentage\\n fileURL\\n }\\n }\\n\"], [\"\\n query getAllCalibrateDownloads {\\n getAllCalibrateDownloads {\\n id\\n filename\\n type\\n status\\n progressPercentage\\n fileURL\\n }\\n }\\n\"])));\n/**\r\n * __useGetAllCalibrateDownloadsQuery__\r\n *\r\n * To run a query within a React component, call `useGetAllCalibrateDownloadsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAllCalibrateDownloadsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAllCalibrateDownloadsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\nfunction useGetAllCalibrateDownloadsQuery(baseOptions) {\n return useQuery(GetAllCalibrateDownloadsDocument, baseOptions);\n}\nvar templateObject_1$1;\nvar GenerateCalibrateDownloadDocument = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n mutation generateCalibrateDownload($input: CalibrateReportInput!) {\\n generateCalibrateDownload(input: $input) {\\n id\\n }\\n }\\n\"], [\"\\n mutation generateCalibrateDownload($input: CalibrateReportInput!) {\\n generateCalibrateDownload(input: $input) {\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useGenerateCalibrateDownloadMutation__\r\n *\r\n * To run a mutation, you first call `useGenerateCalibrateDownloadMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGenerateCalibrateDownloadMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [generateCalibrateDownloadMutation, { data, loading, error }] = useGenerateCalibrateDownloadMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGenerateCalibrateDownloadMutation(baseOptions) {\n return useMutation(GenerateCalibrateDownloadDocument, baseOptions);\n}\nvar templateObject_1$2;\nvar getAtLeastOneDownloadStatus = function (allCalibrateDownloads, status) {\n if (allCalibrateDownloads.length === 0) return false;\n return allCalibrateDownloads.some(function (download) {\n return download.status === status;\n });\n};\nvar MarkCalibrateDownloadAsReadDocument = gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n mutation markCalibrateDownloadAsRead($id: ID!) {\\n markCalibrateDownloadAsRead(id: $id) {\\n id\\n status\\n }\\n }\\n\"], [\"\\n mutation markCalibrateDownloadAsRead($id: ID!) {\\n markCalibrateDownloadAsRead(id: $id) {\\n id\\n status\\n }\\n }\\n\"])));\n/**\r\n * __useMarkCalibrateDownloadAsReadMutation__\r\n *\r\n * To run a mutation, you first call `useMarkCalibrateDownloadAsReadMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useMarkCalibrateDownloadAsReadMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [markCalibrateDownloadAsReadMutation, { data, loading, error }] = useMarkCalibrateDownloadAsReadMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useMarkCalibrateDownloadAsReadMutation(baseOptions) {\n return useMutation(MarkCalibrateDownloadAsReadDocument, baseOptions);\n}\nvar templateObject_1$3;\nvar DeleteCalibrateDownloadDocument = gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n mutation deleteCalibrateDownload($id: ID!) {\\n deleteCalibrateDownload(id: $id) {\\n id\\n }\\n }\\n\"], [\"\\n mutation deleteCalibrateDownload($id: ID!) {\\n deleteCalibrateDownload(id: $id) {\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useDeleteCalibrateDownloadMutation__\r\n *\r\n * To run a mutation, you first call `useDeleteCalibrateDownloadMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDeleteCalibrateDownloadMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [deleteCalibrateDownloadMutation, { data, loading, error }] = useDeleteCalibrateDownloadMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\nfunction useDeleteCalibrateDownloadMutation(baseOptions) {\n return useMutation(DeleteCalibrateDownloadDocument, baseOptions);\n}\nvar templateObject_1$4;\n\n// check for downloads every 2.5 seconds:\nvar POLL_INTERVAL = 2500;\nvar useGetAllCalibrateDownloads = function () {\n var _a = __read(React.useState([]), 2),\n allCalibrateDownloads = _a[0],\n setAllCalibrateDownloads = _a[1];\n var _b = __read(React.useState(false), 2),\n oneInProgress = _b[0],\n setOneInProgress = _b[1];\n var _c = __read(React.useState(false), 2),\n oneFailed = _c[0],\n setOneFailed = _c[1];\n var _d = __read(React.useState(false), 2),\n oneProcessed = _d[0],\n setOneProcessed = _d[1];\n var _e = __read(React.useState(false), 2),\n showCalibrateDownloads = _e[0],\n setShowCalibrateDownloads = _e[1];\n var _f = __read(React.useState(false), 2),\n queryError = _f[0],\n setQueryError = _f[1];\n var onAddToast = useToaster().onAddToast;\n var _g = useGetAllCalibrateDownloadsQuery(),\n data = _g.data,\n error = _g.error,\n stopPolling = _g.stopPolling,\n startPolling = _g.startPolling,\n refetch = _g.refetch;\n var _h = __read(useGenerateCalibrateDownloadMutation({\n onError: function () {\n onAddToast({\n id: 'error',\n title: 'Error',\n message: 'An Error occurred. Try again later.',\n status: 'warning'\n });\n },\n onCompleted: function () {\n refetchAllCalibrateDownloads();\n setShowCalibrateDownloads(true);\n }\n }), 1),\n createCalibrateDownloadMutation = _h[0];\n var _j = __read(useMarkCalibrateDownloadAsReadMutation(), 1),\n markCalibrateAsDownloadedMutation = _j[0];\n var _k = __read(useDeleteCalibrateDownloadMutation({\n onError: function () {\n onAddToast({\n id: 'error',\n title: 'Error',\n message: 'An Error occurred. Try again later.',\n status: 'warning'\n });\n },\n onCompleted: function (data) {\n var id = data.deleteCalibrateDownload.id;\n onAddToast({\n id: id + \"-deleted\",\n title: 'Download Deleted',\n message: 'Your download has been deleted succesfully.',\n status: 'success'\n });\n refetchAllCalibrateDownloads();\n }\n }), 1),\n deleteCalibrateDownload = _k[0];\n var refetchAllCalibrateDownloads = function () {\n setQueryError(false);\n refetch();\n };\n React.useEffect(function () {\n if (data === null || data === void 0 ? void 0 : data.getAllCalibrateDownloads) {\n setAllCalibrateDownloads(data.getAllCalibrateDownloads);\n }\n }, [data]);\n React.useEffect(function () {\n var atLeastOneDownloadInProgress = getAtLeastOneDownloadStatus(allCalibrateDownloads, ICalibrateDownloadFileStatus.Progress);\n var atLeastOneDownloadFailed = getAtLeastOneDownloadStatus(allCalibrateDownloads, ICalibrateDownloadFileStatus.Failure);\n var atLeastOneDownloadProcessed = getAtLeastOneDownloadStatus(allCalibrateDownloads, ICalibrateDownloadFileStatus.Processed);\n if (allCalibrateDownloads.length > 0) {\n if (atLeastOneDownloadInProgress) {\n startPolling(POLL_INTERVAL);\n } else {\n stopPolling();\n }\n }\n if (error) {\n setQueryError(true);\n } else {\n setQueryError(false);\n }\n setOneInProgress(atLeastOneDownloadInProgress);\n setOneFailed(atLeastOneDownloadFailed);\n setOneProcessed(atLeastOneDownloadProcessed);\n }, [allCalibrateDownloads, error, oneInProgress, startPolling, stopPolling]);\n React.useEffect(function () {\n if (queryError) {\n stopPolling();\n }\n }, [queryError, stopPolling]);\n return {\n getAllCalibrateDownloadsError: error,\n allCalibrateDownloads: allCalibrateDownloads,\n oneCalibrateDownloadProcessed: oneProcessed,\n oneCalibrateDownloadInProgress: oneInProgress,\n oneCalibrateDownloadFailed: oneFailed,\n showCalibrateDownloads: showCalibrateDownloads,\n setShowCalibrateDownloads: setShowCalibrateDownloads,\n createCalibrateDownload: function (input) {\n createCalibrateDownloadMutation({\n variables: {\n input: input\n }\n });\n },\n markCalibrateAsDownloaded: function (id) {\n markCalibrateAsDownloadedMutation({\n variables: {\n id: id\n }\n });\n },\n deleteCalibrateDownload: function (id) {\n deleteCalibrateDownload({\n variables: {\n id: id\n }\n });\n }\n };\n};\nvar INITIAL_STATE = {\n onAddDownload: function () {},\n onAddComplete: function () {},\n onRemoveComplete: function () {},\n onError: function () {},\n polling: [],\n completed: [],\n allCalibrateDownloads: [],\n oneCalibrateDownloadProcessed: false,\n oneCalibrateDownloadInProgress: false,\n oneCalibrateDownloadFailed: false,\n showCalibrateDownloads: false,\n setShowCalibrateDownloads: function () {},\n getAllCalibrateDownloadsError: undefined,\n createCalibrateDownload: function () {},\n markCalibrateAsDownloaded: function () {},\n deleteCalibrateDownload: function () {}\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar useDownload = function () {\n return React.useContext(Context);\n};\nvar DownloadProvider = function (_a) {\n var children = _a.children;\n var _b = useOldDownload(),\n onAddDownload = _b.onAddDownload,\n onAddComplete = _b.onAddComplete,\n onRemoveComplete = _b.onRemoveComplete,\n onError = _b.onError,\n polling = _b.polling,\n completed = _b.completed;\n var _c = useGetAllCalibrateDownloads(),\n allCalibrateDownloads = _c.allCalibrateDownloads,\n oneCalibrateDownloadProcessed = _c.oneCalibrateDownloadProcessed,\n oneCalibrateDownloadInProgress = _c.oneCalibrateDownloadInProgress,\n oneCalibrateDownloadFailed = _c.oneCalibrateDownloadFailed,\n showCalibrateDownloads = _c.showCalibrateDownloads,\n setShowCalibrateDownloads = _c.setShowCalibrateDownloads,\n getAllCalibrateDownloadsError = _c.getAllCalibrateDownloadsError,\n createCalibrateDownload = _c.createCalibrateDownload,\n markCalibrateAsDownloaded = _c.markCalibrateAsDownloaded,\n deleteCalibrateDownload = _c.deleteCalibrateDownload;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n onAddDownload: onAddDownload,\n onAddComplete: onAddComplete,\n onRemoveComplete: onRemoveComplete,\n onError: onError,\n polling: polling,\n completed: completed,\n allCalibrateDownloads: allCalibrateDownloads,\n oneCalibrateDownloadProcessed: oneCalibrateDownloadProcessed,\n oneCalibrateDownloadInProgress: oneCalibrateDownloadInProgress,\n oneCalibrateDownloadFailed: oneCalibrateDownloadFailed,\n showCalibrateDownloads: showCalibrateDownloads,\n setShowCalibrateDownloads: setShowCalibrateDownloads,\n getAllCalibrateDownloadsError: getAllCalibrateDownloadsError,\n createCalibrateDownload: createCalibrateDownload,\n markCalibrateAsDownloaded: markCalibrateAsDownloaded,\n deleteCalibrateDownload: deleteCalibrateDownload\n })\n }, children);\n};\nvar Download = function () {\n var _a = useDownload(),\n polling = _a.polling,\n onAddComplete = _a.onAddComplete,\n onError = _a.onError;\n var _b = useGetDownloadFileByIdsQuery({\n skip: polling.length === 0,\n variables: {\n ids: polling\n },\n pollInterval: 3000\n }),\n data = _b.data,\n error = _b.error;\n // Get the list of completed jobs, and remove them from the list of polling\n React.useEffect(function () {\n if (error) {\n onError(polling[0], {\n title: error.name,\n message: error.message\n });\n }\n if (data) {\n var completedFiles = data.getDownloadFileByIds.filter(function (item) {\n return [IDownloadStatus.Complete, IDownloadStatus.Failed].includes(item.status);\n });\n completedFiles.forEach(function (item) {\n onAddComplete(item);\n });\n }\n }, [data, onAddComplete, onError, error, polling]);\n return null;\n};\nvar Download$1 = styled(Download)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DownloadFileType = styled(DropdownMenu)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6;\nvar downloadOptions = [{\n label: 'Download as CSV'\n}, {\n label: 'Download as Excel'\n}];\nvar DownloadFileType$1 = function (props) {\n var className = props.className,\n onClose = props.onClose,\n onDownload = props.onDownload;\n var onClick = function (item, onClose) {\n onClose();\n switch (item.label) {\n case 'Download as CSV':\n onDownload(IDownloadFileType.Csv);\n break;\n case 'Download as Excel':\n onDownload(IDownloadFileType.Excel);\n }\n };\n return /*#__PURE__*/React.createElement(DownloadFileType, {\n \"data-testid\": generate(['download-file-type'], props),\n className: className,\n items: downloadOptions,\n onClick: function (item) {\n return onClick(item, onClose);\n }\n });\n};\nvar DownloadFileType$2 = styled(DownloadFileType$1)(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$7;\nvar INITIAL_STATE$1 = {\n triggerDownload: false,\n containerRef: null,\n downloadImage: function (fileName, format) {},\n resetTrigger: function () {},\n showPreview: false,\n onUpdateShowPreview: function () {}\n};\nvar Context$1 = /*#__PURE__*/React.createContext(INITIAL_STATE$1);\nvar useDownloadImage = function () {\n return React.useContext(Context$1);\n};\nvar DownloadImageProvider = function (_a) {\n var children = _a.children;\n var containerRef = React.useRef(null);\n var _b = __read(React.useState(false), 2),\n showPreview = _b[0],\n setShowPreview = _b[1];\n var onUpdateShowPreview = React.useCallback(function (show) {\n setShowPreview(show);\n }, [setShowPreview]);\n var downloadImage = function (fileName, format) {\n switch (format) {\n case 'pdf':\n exportComponentAsPDF(containerRef, {\n fileName: fileName\n });\n break;\n case 'jpeg':\n exportComponentAsJPEG(containerRef, {\n fileName: fileName\n });\n break;\n default:\n case 'png':\n exportComponentAsPNG(containerRef, {\n fileName: fileName\n });\n }\n };\n return /*#__PURE__*/React.createElement(Context$1.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$1), {\n downloadImage: downloadImage,\n containerRef: containerRef,\n showPreview: showPreview,\n onUpdateShowPreview: onUpdateShowPreview\n })\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar DownloadImage = styled.div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$8;\nvar DownloadImage$1 = function (props) {\n var className = props.className,\n children = props.children;\n var containerRef = useDownloadImage().containerRef;\n return /*#__PURE__*/React.createElement(DownloadImage, {\n \"data-testid\": generate(['download-image'], props),\n className: className,\n ref: containerRef\n }, children);\n};\nvar DownloadImage$2 = styled(DownloadImage$1)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar DownloadImageProvider$1 = DownloadImageProvider;\nvar useDownloadImage$1 = useDownloadImage;\nvar templateObject_1$9;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DownloadImagePreview = styled(Modal)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\\n [data-testid='modal__body'] {\\n overflow-y: hidden;\\n\\n & > div {\\n display: flex;\\n flex-grow: 1;\\n }\\n }\\n\"], [\"\\n [data-testid='modal__body'] {\\n overflow-y: hidden;\\n\\n & > div {\\n display: flex;\\n flex-grow: 1;\\n }\\n }\\n\"])));\nvar Viewport = styled(View)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n height: 100%;\\n overflow: auto;\\n width: 100%;\\n height: calc(100% - \", \");\\n padding: 10px;\\n box-sizing: border-box;\\n background-image: \", \";\\n position: relative;\\n\"], [\"\\n height: 100%;\\n overflow: auto;\\n width: 100%;\\n height: calc(100% - \", \");\\n padding: 10px;\\n box-sizing: border-box;\\n background-image: \", \";\\n position: relative;\\n\"])), function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return \"url(\\\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23D4C9C8FF' stroke-width='4' stroke-dasharray='6%2c 14' stroke-dashoffset='63' stroke-linecap='square'/%3e%3c/svg%3e\\\")\";\n});\nvar Menu = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: calc(20% - \", \");\\n position: fixed;\\n padding-right: \", \";\\n\"], [\"\\n width: calc(20% - \", \");\\n position: fixed;\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar PreviewArea = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: 80%;\\n margin-left: 20%;\\n\"], [\"\\n width: 80%;\\n margin-left: 20%;\\n\"])));\nvar Title = styled(Heading)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Separator = styled.hr(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n border-width: 1px 0 0;\\n border-color: \", \";\\n margin: \", \" 0;\\n\"], [\"\\n border-width: 1px 0 0;\\n border-color: \", \";\\n margin: \", \" 0;\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(2);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Content = styled(View)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: 'space-between';\\n flex-direction: 'row';\\n width: 100%;\\n overflow: hidden;\\n align-items: stretch;\\n\"], [\"\\n display: flex;\\n justify-content: 'space-between';\\n flex-direction: 'row';\\n width: 100%;\\n overflow: hidden;\\n align-items: stretch;\\n\"])));\nvar Dropdown = styled(Select)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\"], [\"\"])));\nvar TooltipTrigger = styled.div(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n display: inline-block;\\n margin-left: \", \";\\n\"], [\"\\n display: inline-block;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar MenuItem = styled(View)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$a, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;\nvar containerBackground = themeHelpers.containerBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar Template = styled(View)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\\n padding: \", \";\\n \", \";\\n\"], [\"\\n padding: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return containerBackground(theme);\n});\nvar Header = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar Strong = styled(Text)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n display: inline-flex;\\n\"], [\"\\n display: inline-flex;\\n\"])));\nvar Info = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Time = styled(Text)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Logo = styled(WideLogo)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Disclaimer = styled(Text)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$b, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1, templateObject_6$1, templateObject_7$1;\nvar Template$1 = function (props) {\n var className = props.className,\n children = props.children,\n showAcinLogo = props.showAcinLogo,\n showTimestamp = props.showTimestamp;\n var today = new Date();\n return /*#__PURE__*/React.createElement(ThemeProvider, {\n theme: theme\n }, /*#__PURE__*/React.createElement(DownloadImage$2, null, /*#__PURE__*/React.createElement(Template, {\n \"data-testid\": generate(['template'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(Info, null, showTimestamp && ( /*#__PURE__*/React.createElement(Time, null, \"Image downloaded on\", ' ', /*#__PURE__*/React.createElement(Strong, {\n weight: 600\n }, format(today, 'do MMMM yyyy'), \" at \", format(today, 'hh:mm a'))))), showAcinLogo && /*#__PURE__*/React.createElement(Logo, {\n variant: \"dark\",\n width: 140,\n height: 40\n })), children, /*#__PURE__*/React.createElement(Disclaimer, null, \"All information is strictly for internal use only and not to be reproduced without explicit consent from Acin Ltd.\"))));\n};\nvar DownloadImagePreview$1 = function (props) {\n var className = props.className,\n children = props.children,\n _a = props.fileName,\n fileName = _a === void 0 ? 'image' : _a,\n configurationOptions = props.configurationOptions,\n showPreview = props.showPreview;\n var _b = __read(React.useState('png'), 2),\n formatOption = _b[0],\n setFormatOption = _b[1];\n var _c = __read(React.useState(true), 2),\n showTimestamp = _c[0],\n setShowTimestamp = _c[1];\n var _d = useDownloadImage$1(),\n downloadImage = _d.downloadImage,\n showPreviewFromProvider = _d.showPreview,\n onUpdateShowPreview = _d.onUpdateShowPreview;\n var formatOptions = [{\n label: 'PNG',\n value: 'png'\n }, {\n label: 'JPEG',\n value: 'jpeg'\n }];\n var getFileFormat = function () {\n switch (formatOption) {\n case 'jpeg':\n return 'jpeg';\n case 'png':\n return 'png';\n }\n };\n var formatFileName = function () {\n return fileName + \".\" + getFileFormat();\n };\n var handleDownload = function () {\n downloadImage(formatFileName(), getFileFormat());\n onUpdateShowPreview(false);\n };\n return /*#__PURE__*/React.createElement(DownloadImagePreview, {\n \"data-testid\": generate(['download-image-preview'], props),\n className: className,\n show: showPreview || showPreviewFromProvider,\n title: \"Preview Download\",\n size: \"fullscreen\",\n onClose: function () {\n return onUpdateShowPreview(false);\n },\n footerButtonPrimary: {\n label: 'Download',\n onClick: function () {\n return handleDownload();\n }\n },\n useScrollContent: false\n }, /*#__PURE__*/React.createElement(Content, null, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement(Title, {\n size: 1\n }, \"Configuration Options\"), configurationOptions === null || configurationOptions === void 0 ? void 0 : configurationOptions.map(function (option, index) {\n return /*#__PURE__*/React.createElement(MenuItem, {\n key: index\n }, option);\n }), /*#__PURE__*/React.createElement(MenuItem, null, /*#__PURE__*/React.createElement(ToggleSwitch, {\n \"data-testid\": \"show-date-and-time is-checked--\" + showTimestamp,\n isChecked: showTimestamp,\n onChange: function () {\n return setShowTimestamp(!showTimestamp);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: \"This will show the time and date the image was prepared\"\n }, /*#__PURE__*/React.createElement(Text, null, \"Show date and time\"));\n }\n })), /*#__PURE__*/React.createElement(InputGroup, {\n label: \"Download image as...\",\n isRequired: true\n }, /*#__PURE__*/React.createElement(Dropdown, {\n options: formatOptions,\n value: formatOption,\n onChange: function (item) {\n return setFormatOption(item);\n },\n \"data-testid\": \"image-file-format\"\n }))), /*#__PURE__*/React.createElement(PreviewArea, null, /*#__PURE__*/React.createElement(Title, {\n size: 1\n }, \"Preview\"), /*#__PURE__*/React.createElement(Viewport, null, /*#__PURE__*/React.createElement(Template$1, {\n showAcinLogo: true,\n showTimestamp: showTimestamp\n }, children)))));\n};\nvar DownloadImagePreview$2 = styled(DownloadImagePreview$1)(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$c;\nexport { Download$1 as Download, DownloadFileType$2 as DownloadFileType, DownloadImage$2 as DownloadImage, DownloadImagePreview$2 as DownloadImagePreview, DownloadImageProvider$1 as DownloadImageProvider, DownloadProvider, useDownload, useDownloadImage$1 as useDownloadImage };","import React from 'react';\nimport { set, remove, get } from 'local-storage';\nimport { useQueryParams, View, Heading, Button, Drawer as Drawer$1, generate, AutosuggestTags, TagList, Link, Text, Input, IconSearch, Checkbox, Alert, RangeSliderInput, InfoText, IconAlertError, IconButton, IconClose, IconAlertInformationFilled, ToggleSwitch, CheckList, themeHelpers, SkeletonLoader, useThemeProvider, ErrorMessage, IconChevronLeft, useTarget, FilterButton as FilterButton$3, DropdownContent, useWindowSize, ThirdTier, useDrawer, Confirmation, IconChevronRight } from '@acin/ui-core';\nimport styled, { css } from 'styled-components';\nimport { kebabCase } from 'lodash';\nimport { useDebounce } from 'usehooks-ts';\nimport { gql, useQuery } from '@apollo/client';\n\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***************************************************************************** */\n\nvar __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};\nfunction __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n 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 {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n IFilterType[\"ListLevel\"] = \"LIST_LEVEL\";\n})(IFilterType || (IFilterType = {}));\nvar flattenTags = function (filters, filterGroups) {\n if (!filters) return [];\n return ((filters === null || filters === void 0 ? void 0 : filters.groups) || []).reduce(function (acc, item) {\n var inputType = filterGroups === null || filterGroups === void 0 ? void 0 : filterGroups.find(function (group) {\n return group.key === item.groupKey;\n });\n if (inputType && inputType.filterInput.__typename === 'FilterRangeInputType') {\n return __spread(acc, [getRangeFilterTagItem(item, inputType.filterInput)]);\n }\n return __spread(acc, item.filterValues.map(function (a) {\n return {\n id: a.value,\n label: a.label || a.value,\n groupKey: item.groupKey\n };\n }));\n }, []);\n};\nvar getRangeFilterTagItem = function (item, filterRangeInputType) {\n var prefix = \"\" + filterRangeInputType.tagLabel;\n var unit = filterRangeInputType.tagUnit;\n var min = item.filterValues[0].value;\n var max = item.filterValues[1].value;\n var label = min === max ? prefix + \": \" + max + unit : prefix + \": \" + min + unit + \" - \" + max + unit;\n return {\n id: label,\n label: label,\n groupKey: item.groupKey,\n filterType: filterRangeInputType.inputType\n };\n};\nvar removeFilter = function (filters, groupKey, value, filterType) {\n // Remove the filter from this list, and remove the group if nothing left\n var newFilterGroups = __spread(filters.groups || []).reduce(function (acc, item) {\n if (groupKey === item.groupKey) {\n var newGroup = __assign(__assign({}, item), {\n filterValues: filterType === IFilterGroupInputType.Range ? [] // remove all filterValues for IFilterGroupInputType.Range\n : item.filterValues.filter(function (filter) {\n return filter.value !== value;\n })\n });\n return newGroup.filterValues.length === 0 ? acc : __spread(acc, [newGroup]);\n }\n return __spread(acc, [item]);\n }, []);\n return __assign({}, newFilterGroups.length === 0 ? {} : {\n groups: newFilterGroups\n });\n};\nvar payloadToInput = function (input) {\n var _a;\n if (!input) return undefined;\n return {\n groups: (_a = input.groups) === null || _a === void 0 ? void 0 : _a.map(function (item) {\n return {\n groupKey: item.groupKey,\n filterValues: item.filterValues.map(function (filter) {\n return {\n value: filter.value,\n label: filter.label\n };\n })\n };\n })\n };\n};\nvar hasFilters = function (filters) {\n if (!filters || Object.keys(filters).length === 0 || (filters.groups || []).length === 0) return false;\n return true;\n};\n\n// This is the key we use to store the filters to local storage\nvar cacheKey = '@acin/filters';\nvar getDataMap = function () {\n var data = get(cacheKey);\n return new Map(Object.keys(data || {}).map(function (item) {\n return [item, data[item]];\n }));\n};\nvar setDataMap = function (dataMap) {\n var flat = __spread(dataMap).reduce(function (acc, item) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[item[0]] = item[1], _a));\n }, {});\n return set(cacheKey, flat);\n};\nvar saveFilters = function (key, input) {\n var dataMap = getDataMap();\n if (input && Object.keys(input).length > 0) {\n dataMap.set(key, input);\n } else {\n dataMap.delete(key);\n }\n if (dataMap.size === 0) {\n clearSavedFilters();\n } else {\n return setDataMap(dataMap);\n }\n};\nvar getSavedFilters = function (key) {\n var dataMap = getDataMap();\n return dataMap.get(key);\n};\nvar clearSavedFilters = function () {\n remove(cacheKey);\n};\n/**\r\n * Get the filters from the local storage\r\n */\nvar useFilterStore = function (key) {\n var _a = __read(React.useState(null), 2),\n filters = _a[0],\n setFilters = _a[1];\n // Get the latest filter object from local storage\n var value = key && getSavedFilters(key);\n // Deep compare as strings, and store.\n if (value && JSON.stringify(value) !== JSON.stringify(filters)) {\n setFilters(value);\n }\n // Store the filters to local storage and save the state.\n var storeFilters = React.useCallback(function (input) {\n setFilters(input || null);\n key && saveFilters(key, input);\n }, [key]);\n return [filters, storeFilters];\n};\nvar getAppliedFilters = function (allFilters) {\n var e_1, _a;\n if (!allFilters || allFilters.length === 0) return undefined;\n var groups = [];\n try {\n for (var allFilters_1 = __values(allFilters), allFilters_1_1 = allFilters_1.next(); !allFilters_1_1.done; allFilters_1_1 = allFilters_1.next()) {\n var filter = allFilters_1_1.value;\n var attributes = filter.attributes;\n if (attributes.__typename === 'FilterListVariant') {\n if (attributes.appliedFilters && attributes.appliedFilters.length > 0) {\n groups = __spread(groups, [{\n groupKey: filter.code,\n filterValues: attributes.appliedFilters.map(function (appliedFilter) {\n var newFilterValue = {\n value: appliedFilter.value\n };\n appliedFilter.label && (newFilterValue.label = appliedFilter.label);\n appliedFilter.sublabel && (newFilterValue.sublabel = appliedFilter.sublabel);\n return newFilterValue;\n })\n }]);\n }\n } else if (attributes.__typename === 'FilterRangeVariant') {\n if (attributes.activeRange && Object.keys(attributes.activeRange).length > 0) {\n var min = {\n label: 'min',\n value: \"\" + attributes.activeRange.min\n };\n var max = {\n label: 'max',\n value: \"\" + attributes.activeRange.max\n };\n groups = __spread(groups, [{\n groupKey: filter.code,\n filterValues: [min, max]\n }]);\n }\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (allFilters_1_1 && !allFilters_1_1.done && (_a = allFilters_1.return)) _a.call(allFilters_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return groups.length === 0 ? undefined : {\n groups: groups\n };\n};\nvar applyActiveFiltersToAllFilters = function (activeFilters, allFilters) {\n return allFilters.map(function (originalFilter) {\n var _a, _b, _c;\n var appliedFilters = (_b = (_a = activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups) === null || _a === void 0 ? void 0 : _a.find(function (group) {\n return group.groupKey === originalFilter.code;\n })) === null || _b === void 0 ? void 0 : _b.filterValues;\n var result = JSON.parse(JSON.stringify(originalFilter));\n switch ((_c = result === null || result === void 0 ? void 0 : result.attributes) === null || _c === void 0 ? void 0 : _c.__typename) {\n case 'FilterListVariant':\n {\n if (appliedFilters) {\n result.attributes.appliedFilters = __spread(appliedFilters);\n result.attributes.appliedFiltersCount = appliedFilters.length;\n } else {\n result.attributes.appliedFilters = [];\n result.attributes.appliedFiltersCount = 0;\n }\n break;\n }\n case 'FilterRangeVariant':\n {\n if (appliedFilters) {\n var minPayload = appliedFilters.find(function (appliedFilters) {\n return appliedFilters.label === 'min';\n });\n var maxPayload = appliedFilters.find(function (appliedFilters) {\n return appliedFilters.label === 'max';\n });\n var min = Number(minPayload === null || minPayload === void 0 ? void 0 : minPayload.value) || result.attributes.range.min;\n var max = Number(maxPayload === null || maxPayload === void 0 ? void 0 : maxPayload.value) || result.attributes.range.max;\n result.attributes.activeRange = {\n min: min,\n max: max\n };\n } else {\n result.attributes.activeRange = null;\n }\n break;\n }\n }\n return result;\n });\n};\nvar filterPayloadToFilterInput = function (filterPayload) {\n var _a;\n if (!filterPayload) return;\n return {\n groups: (_a = filterPayload.groups) === null || _a === void 0 ? void 0 : _a.map(function (group) {\n return {\n groupKey: group.groupKey,\n filterValues: group.filterValues.map(function (filterValue) {\n return {\n value: filterValue.value,\n label: filterValue.label\n };\n })\n };\n })\n };\n};\nvar useFilterQueryParams = function () {\n var _a = useQueryParams(),\n get = _a.get,\n updateQuery = _a.updateQuery;\n var _b = __read(React.useState(null), 2),\n filters = _b[0],\n setFilters = _b[1];\n var filterString = get('filters');\n var ref = React.useRef(null);\n React.useEffect(function () {\n if (filterString && ref.current !== filterString) {\n var data = JSON.parse(window.atob(filterString));\n setFilters(data);\n ref.current = filterString;\n } else if (ref.current !== null) {\n setFilters(null);\n ref.current = null;\n }\n }, [filterString, setFilters]);\n var updateFilters = React.useCallback(function (input, data) {\n updateQuery(__assign(__assign({}, data), {\n filters: hasFilters(input) ? window.btoa(JSON.stringify(input)) : undefined\n }));\n }, [updateQuery]);\n return {\n updateFilters: updateFilters,\n filters: filters\n };\n};\n/**\r\n * Get the filters from the Query Params or the local storage\r\n * @description Get and set the filters from the query parms and local storage\r\n */\nvar useSetFilters = function (storeKey, useQueryParams) {\n // Priority for filters\n // 1) Query param\n // 2) Local storage\n // 3) if storekey is not provided then do not use local storage\n // 4) nothing\n if (useQueryParams === void 0) {\n useQueryParams = false;\n }\n var _a = useFilterQueryParams(),\n paramFilters = _a.filters,\n updateFilters = _a.updateFilters;\n var _b = __read(React.useState(), 2),\n filters = _b[0],\n setFilters = _b[1];\n var _c = __read(useFilterStore(storeKey), 2),\n sessionFilters = _c[0],\n storeSessionFilters = _c[1];\n var _d = __read(React.useState(), 2),\n defaultFilters = _d[0],\n setDefaultFilters = _d[1];\n var ref = React.useRef(null);\n var _e = __read(React.useState(), 2),\n filterGroups = _e[0],\n setFilterGroups = _e[1];\n /**\r\n * Set the filters from session / params into state\r\n */\n React.useEffect(function () {\n if (paramFilters && JSON.stringify(paramFilters) !== ref.current) {\n setFilters(paramFilters);\n ref.current = JSON.stringify(paramFilters);\n } else if (storeKey && sessionFilters && JSON.stringify(sessionFilters) !== ref.current) {\n setFilters(sessionFilters);\n ref.current = JSON.stringify(sessionFilters);\n } else if (paramFilters === null && sessionFilters === null) {\n setFilters(null);\n ref.current = null;\n }\n }, [paramFilters, sessionFilters, storeKey]);\n /**\r\n * Set the filters and update session and query params\r\n */\n var onSetFilters = React.useCallback(function (input) {\n storeKey && storeSessionFilters(input);\n if (input && useQueryParams) {\n updateFilters(input);\n } else if (input && !useQueryParams) {\n setFilters(input);\n }\n }, [storeKey, storeSessionFilters, updateFilters, useQueryParams]);\n /**\r\n * Set the default filters\r\n */\n var onSetDefault = React.useCallback(function (data) {\n setDefaultFilters(data);\n }, [setDefaultFilters]);\n /**\r\n * Set the filter groups\r\n */\n var onSetFilterGroups = React.useCallback(function (filterGroups) {\n setFilterGroups(filterGroups);\n }, [setFilterGroups]);\n /**\r\n * Remove a filter\r\n */\n var onRemove = React.useCallback(function (item) {\n var allFilters = filters || defaultFilters;\n if (allFilters) {\n onSetFilters(removeFilter(allFilters, item.groupKey, item.id, item.filterType));\n }\n }, [onSetFilters, filters, defaultFilters]);\n var activeFilters = filters || defaultFilters;\n return {\n filters: activeFilters,\n list: flattenTags(activeFilters, filterGroups),\n defaultFilters: defaultFilters,\n setFilters: onSetFilters,\n setDefault: onSetDefault,\n setFilterGroups: onSetFilterGroups,\n filterInput: filters ? activeFilters : null,\n loading: filters === undefined,\n onRemove: onRemove,\n /* Clear all filters */\n onClearAllFilters: function () {\n return setFilters(null);\n }\n };\n};\n/**\r\n * set allFilters V2 and change the applied filters based on activeFilters\r\n */\nvar useFiltersV2 = function (filters, initialAppliedFiltersPayload) {\n var _a = __read(React.useState([]), 2),\n allFilters = _a[0],\n setAllFilters = _a[1];\n var _b = __read(React.useState(), 2),\n initialActiveFilters = _b[0],\n setInitialActiveFilters = _b[1];\n var _c = __read(React.useState(), 2),\n activeFilters = _c[0],\n setActiveFilters = _c[1];\n React.useEffect(function () {\n if (filters) {\n var initialAppliedFilters = filterPayloadToFilterInput(initialAppliedFiltersPayload);\n var newAllFilters = applyActiveFiltersToAllFilters(initialAppliedFilters, filters);\n setAllFilters(newAllFilters);\n setInitialActiveFilters(initialAppliedFilters);\n setActiveFilters(initialAppliedFilters);\n }\n }, [filters, initialAppliedFiltersPayload]);\n React.useEffect(function () {\n if (!filters || filters.length === 0) {\n return;\n }\n var newAllFilters = applyActiveFiltersToAllFilters(activeFilters, filters);\n setAllFilters(newAllFilters);\n }, [activeFilters, filters]);\n return {\n allFilters: allFilters,\n initialActiveFilters: initialActiveFilters,\n setInitialActiveFilters: setInitialActiveFilters,\n activeFilters: activeFilters,\n setActiveFilters: setActiveFilters\n };\n};\n\n/**\r\n * Merge the groups values and remove duplicate labels\r\n */\nvar mergeGroup = function (groupMap, item) {\n var existing = groupMap.get(item.groupKey);\n var values = new Map(existing || []);\n item.filterValues.forEach(function (value) {\n if (!values.has(value.value)) {\n values.set(value.value, value.label);\n }\n });\n return values;\n};\n/**\r\n * Merge the filter inputs\r\n */\nvar mergeFilterInputs = function (a, b) {\n var _a, _b;\n var mergeA = a || {};\n var mergeB = b || {};\n var groupMap = new Map();\n (_a = mergeA.groups) === null || _a === void 0 ? void 0 : _a.forEach(function (item) {\n groupMap.set(item.groupKey, mergeGroup(groupMap, item));\n });\n (_b = mergeB.groups) === null || _b === void 0 ? void 0 : _b.forEach(function (item) {\n groupMap.set(item.groupKey, mergeGroup(groupMap, item));\n });\n return {\n groups: __spread(groupMap).map(function (item) {\n return {\n groupKey: item[0],\n filterValues: __spread(item[1]).map(function (item) {\n return {\n value: item[0],\n label: item[1] || undefined\n };\n })\n };\n })\n };\n};\nvar mergeActiveFiltersAndFilterGroup = function (activeFilters, filter) {\n var newGroupKey = filter.groupKey;\n if ((filter === null || filter === void 0 ? void 0 : filter.filterValues.length) === 0) {\n if (activeFilters && Object.keys(activeFilters).length && (activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups) && (activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups.length) > 1) {\n var prevFilters = activeFilters.groups.filter(function (group) {\n return !(group.groupKey === newGroupKey);\n });\n return {\n groups: prevFilters\n };\n }\n return null;\n }\n var newGroup = {\n groupKey: newGroupKey,\n filterValues: filter.filterValues.map(function (filterValue) {\n var newFilterValue = {\n value: filterValue.value\n };\n // add label and sublabel only if they are not null\n filterValue.label && (newFilterValue.label = filterValue.label);\n filterValue.sublabel && (newFilterValue.sublabel = filterValue.sublabel);\n return newFilterValue;\n })\n };\n filter.label && (newGroup.label = filter.label);\n // combine activeFilters groups adding the new group\n var newActiveFilters = {\n groups: [newGroup]\n };\n if (activeFilters && Object.keys(activeFilters).length && (activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups)) {\n var prevFilters = activeFilters.groups.filter(function (group) {\n return !(group.groupKey === newGroupKey);\n });\n newActiveFilters = {\n groups: __spread(prevFilters, [newGroup])\n };\n }\n return newActiveFilters;\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar Filters = styled(View)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterFooter = styled(View)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar ResetWrapper = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar SubTitle = styled(Heading)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\nvar INITIAL_STATE = {\n filters: new Map(),\n isDirty: false,\n onChange: function (key, data) {},\n onResetFilters: function () {},\n onSetFilters: function () {},\n totalFilters: 0\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar useFilters = function () {\n return React.useContext(Context);\n};\nvar FiltersProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(new Map()), 2),\n filters = _b[0],\n setFilters = _b[1];\n var _c = __read(React.useState(false), 2),\n isDirty = _c[0],\n setIsDirty = _c[1];\n var _d = __read(React.useState(0), 2),\n totalFilters = _d[0],\n setTotalFilters = _d[1];\n var onChange = React.useCallback(function (key, data) {\n var activeFilters = new Map(__spread(filters));\n activeFilters.set(key, data);\n // Remove the record if there are no filters\n if (data.length === 0) {\n activeFilters.delete(key);\n }\n setFilters(new Map(__spread(activeFilters)));\n setIsDirty(true);\n }, [filters]);\n /**\r\n * Keep track of the total amount of filters\r\n */\n React.useEffect(function () {\n var total = __spread(filters).reduce(function (acc, item) {\n return acc + item[1].length;\n }, 0);\n setTotalFilters(total);\n }, [filters, setTotalFilters]);\n var onResetFilters = React.useCallback(function () {\n setFilters(new Map());\n setIsDirty(true);\n }, []);\n var onSetFilters = React.useCallback(function (data, clearDirty) {\n if (clearDirty === void 0) {\n clearDirty = true;\n }\n setFilters(data);\n if (clearDirty) {\n setIsDirty(false);\n }\n }, []);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n isDirty: isDirty,\n filters: filters,\n totalFilters: totalFilters,\n onChange: onChange,\n onSetFilters: onSetFilters,\n onResetFilters: onResetFilters\n })\n }, children);\n};\nvar transformToInput = function (item) {\n return {\n groupKey: item[0],\n filterValues: item[1]\n };\n};\n/**\r\n * @param onApplyFilters - (required) - (filters: IFilterInput) => void - Function triggered when filters are applied\r\n * @param onCancel - (required) - () => void - Function triggered on cancel\r\n * @param applyLabel - (optional) - string\r\n * @param minFilters - (optional) - number\r\n */\nvar FilterFooter$1 = function (_a) {\n var onCancel = _a.onCancel,\n onApplyFilters = _a.onApplyFilters,\n _b = _a.applyLabel,\n applyLabel = _b === void 0 ? 'Apply Filters' : _b,\n minFilters = _a.minFilters;\n var _c = useFilters(),\n isDirty = _c.isDirty,\n filters = _c.filters,\n totalFilters = _c.totalFilters;\n var onApply = function () {\n var filterGroups = __spread(filters).map(transformToInput);\n onApplyFilters(__assign({}, filterGroups.length ? {\n groups: filterGroups\n } : {}));\n };\n var myMinFiltersDisabled = minFilters != null ? totalFilters < minFilters : false;\n return /*#__PURE__*/React.createElement(FilterFooter, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Cancel\",\n variant: \"borderless\",\n onClick: onCancel\n }), /*#__PURE__*/React.createElement(Button, {\n label: applyLabel,\n variant: \"primary\",\n disabled: !isDirty || myMinFiltersDisabled,\n onClick: onApply\n }));\n};\n\n/**\r\n * @param children - (required)\r\n * @param onApplyFilters - (required) - (filters: IFilterInput) => void - Function triggered when filters are applied\r\n * @param onCancel - (required) - () => void - Function triggered on cancel\r\n * @param drawerName - (optional) - string\r\n * @param withOverlay - (optional) - boolean\r\n * @param title - (optional) - string\r\n * @param applyLabel - (optional) - string\r\n * @param width - (optional) - number - Drawer width\r\n * @param minFilters - (optional) - number\r\n */\nvar FilterDrawer = function (props) {\n var children = props.children,\n drawerName = props.drawerName,\n onCancel = props.onCancel,\n onApplyFilters = props.onApplyFilters,\n _a = props.withOverlay,\n withOverlay = _a === void 0 ? true : _a,\n _b = props.title,\n title = _b === void 0 ? 'Filters' : _b,\n applyLabel = props.applyLabel,\n width = props.width,\n minFilters = props.minFilters;\n return /*#__PURE__*/React.createElement(Drawer$1, {\n \"data-testid\": generate(['filters-drawer'], props),\n label: title,\n withClose: true,\n drawerName: drawerName,\n renderFooter: function () {\n return /*#__PURE__*/React.createElement(FilterFooter$1, {\n onCancel: onCancel,\n onApplyFilters: onApplyFilters,\n minFilters: minFilters,\n applyLabel: applyLabel\n });\n },\n withOverlay: withOverlay,\n width: width\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar FilterGroup = styled(View)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n :not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n :not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar Title = styled(Heading)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1, templateObject_2$1;\nvar Dropdown = function (props) {\n var className = props.className,\n input = props.input,\n activeFilters = props.activeFilters,\n onChange = props.onChange;\n // Build out the right shape for the autosuggest tags\n var options = input.options.map(function (value) {\n return {\n id: value.key,\n label: value.label,\n code: value.code || ''\n };\n });\n // Create a map to be more efficient with lookup for labels for active items\n var optionsMap = new Map(options.map(function (a) {\n return [a.id, a];\n }));\n var activeFilterOptions = activeFilters.map(function (item) {\n var optionLabel = optionsMap.get(item.value);\n return {\n id: item.value,\n label: item.label ? item.label : (optionLabel === null || optionLabel === void 0 ? void 0 : optionLabel.label) || ''\n };\n });\n var onAdd = function (value) {\n var formattedValues = activeFilterOptions.map(function (a) {\n return {\n value: a.id,\n label: a.label\n };\n });\n onChange(__spread(formattedValues, [{\n value: value.id,\n label: value.label\n }]));\n };\n var onRemove = function (value) {\n var formattedValues = activeFilterOptions.map(function (a) {\n return {\n value: a.id,\n label: a.label\n };\n });\n onChange(formattedValues.filter(function (a) {\n return a.value !== value.id;\n }));\n };\n return /*#__PURE__*/React.createElement(AutosuggestTags, {\n \"data-testid\": generate(['filter-group__dropdown'], props),\n className: className,\n items: options,\n onAdd: onAdd,\n onRemove: onRemove,\n activeItems: activeFilterOptions,\n placeholder: input.placeholder || undefined\n });\n};\nvar Tags = function (props) {\n var className = props.className,\n input = props.input,\n activeFilters = props.activeFilters,\n onChange = props.onChange;\n // This map will help us lookup labels and active states\n var activeFilterMap = new Map(activeFilters.map(function (item) {\n return [item.value, item];\n }));\n var options = input.options.map(function (value) {\n var activeItem = activeFilterMap.get(value.key);\n return {\n id: value.key,\n label: activeItem && activeItem.label ? activeItem.label : value.label,\n state: activeItem ? 'selected' : 'unselected'\n };\n });\n var onClick = function (value) {\n var optionsMap = new Map(options.map(function (a) {\n return [a.id, a];\n }));\n // Remap these so we can get the latest labels if they have changed (except overidden)\n var currentRemappedFilters = activeFilters.map(function (a) {\n return {\n value: a.value,\n label: optionsMap.get(a.value).label\n };\n });\n if (activeFilterMap.has(value.id)) {\n onChange(currentRemappedFilters.filter(function (a) {\n return a.value !== value.id;\n }));\n } else {\n onChange(__spread(currentRemappedFilters, [{\n value: value.id,\n label: optionsMap.get(value.id).label\n }]));\n }\n };\n return /*#__PURE__*/React.createElement(TagList, {\n \"data-testid\": generate(['filter-group__tags'], props),\n className: className,\n items: options,\n variant: \"Filter Panel\",\n onClick: onClick\n });\n};\nvar CheckboxList = styled(View)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar ListItem = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar List = styled(View)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n \", \" {\\n :not(:first-child) {\\n margin-top: 12px;\\n }\\n }\\n\"], [\"\\n \", \" {\\n :not(:first-child) {\\n margin-top: 12px;\\n }\\n }\\n\"])), ListItem);\nvar Header = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n \", \" {\\n line-height: normal;\\n }\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n \", \" {\\n line-height: normal;\\n }\\n\"])), Link);\nvar SearchBarWrapper = styled(View)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin: \", \" 0;\\n\"], [\"\\n margin: \", \" 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$2, templateObject_2$2, templateObject_3$1, templateObject_4$1, templateObject_5;\nvar CheckboxList$1 = function (props) {\n var className = props.className,\n input = props.input,\n activeFilters = props.activeFilters,\n onChange = props.onChange,\n itemType = props.itemType;\n var _a = __read(React.useState(''), 2),\n searchVal = _a[0],\n setSearchVal = _a[1];\n var _b = __read(React.useState(input), 2),\n filteredOptions = _b[0],\n setFilteredOptions = _b[1];\n var placeholderText = \"Search for a \" + itemType;\n var onSearch = React.useCallback(function (searchVal) {\n var searchRegex = new RegExp(\"\" + searchVal, 'i');\n var options = input.options.filter(function (_a) {\n var label = _a.label,\n code = _a.code;\n return searchRegex.test(label) || code && searchRegex.test(code);\n });\n var searchFilters = __assign(__assign({}, input), {\n options: options\n });\n setFilteredOptions(searchFilters);\n onChange(activeFilters.filter(function (_a) {\n var value = _a.value;\n return !!searchFilters.options.find(function (_a) {\n var key = _a.key;\n return key === value;\n });\n }));\n }, [activeFilters, input, onChange]);\n var handleSearch = function (e) {\n setSearchVal(e.target.value);\n onSearch(e.target.value);\n };\n // This map will help us lookup labels and active states\n var activeFilterMap = new Map(activeFilters.map(function (item) {\n return [item.value, item];\n }));\n var onClick = function (item, value) {\n var newMap = new Map(activeFilterMap);\n if (value) {\n newMap.set(item.key, {\n value: item.key,\n label: item.label\n });\n onChange(__spread(newMap).map(function (item) {\n return item[1];\n }));\n } else {\n newMap.delete(item.key);\n onChange(__spread(newMap).map(function (item) {\n return item[1];\n }));\n }\n };\n var onClear = function () {\n onChange([]);\n };\n var onSelectAll = function () {\n onChange(filteredOptions.options.map(function (item) {\n return {\n value: item.key,\n label: item.label\n };\n }));\n };\n var isAllSelected = activeFilterMap.size === filteredOptions.options.length;\n var isIndeterminate = activeFilterMap.size > 0 && !isAllSelected;\n return /*#__PURE__*/React.createElement(CheckboxList, {\n \"data-testid\": generate(['filter-group__checkbox-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(Text, null, \"Displaying \", filteredOptions.options.length, \" of \", input.options.length), /*#__PURE__*/React.createElement(Link, {\n onClick: onClear,\n disabled: activeFilterMap.size === 0\n }, \"Clear Selected (\", activeFilterMap.size, \")\")), /*#__PURE__*/React.createElement(SearchBarWrapper, null, /*#__PURE__*/React.createElement(Input, {\n type: \"search\",\n value: searchVal,\n placeholder: placeholderText,\n onChange: handleSearch,\n leftAddon: function () {\n return /*#__PURE__*/React.createElement(IconSearch, null);\n }\n })), /*#__PURE__*/React.createElement(List, null, !!filteredOptions.options.length ? ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {\n key: \"select-all\",\n size: \"small\",\n isChecked: isAllSelected || isIndeterminate,\n isIndeterminate: isIndeterminate,\n onChange: isAllSelected ? onClear : onSelectAll,\n label: function () {\n return /*#__PURE__*/React.createElement(Text, {\n weight: 500,\n variant: \"secondary\"\n }, \"Select All\");\n }\n }), filteredOptions.options.map(function (item) {\n return /*#__PURE__*/React.createElement(ListItem, {\n key: item.key\n }, /*#__PURE__*/React.createElement(Checkbox, {\n size: \"small\",\n isChecked: activeFilterMap.has(item.key),\n onChange: function (value) {\n return onClick(item, value);\n },\n label: function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, item.label);\n }\n }));\n }))) : ( /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No filters available\"\n }))));\n};\nvar RangeFilter = function (props) {\n var className = props.className,\n headerLabel = props.headerLabel,\n input = props.input,\n inputRange = props.inputRange,\n onChange = props.onChange;\n var range = React.useMemo(function () {\n if (inputRange && inputRange.length === 2) {\n return {\n min: Number(inputRange[0].value),\n max: Number(inputRange[1].value)\n };\n }\n return {\n min: input.range.min,\n max: input.range.max\n };\n }, [input.range.max, input.range.min, inputRange]);\n var onRangeChange = React.useCallback(function (sliderRange) {\n if (sliderRange.min !== range.min || sliderRange.max !== range.max) {\n var rangefilters = [{\n label: 'min',\n value: sliderRange.min.toString()\n }, {\n label: 'max',\n value: sliderRange.max.toString()\n }];\n onChange(rangefilters);\n }\n }, [onChange, range.max, range.min]);\n return /*#__PURE__*/React.createElement(RangeSliderInput, {\n className: className,\n min: input.range.min,\n max: input.range.max,\n defaultRange: range,\n range: range,\n header: function () {\n return /*#__PURE__*/React.createElement(InfoText, {\n tooltipContent: input.description\n }, /*#__PURE__*/React.createElement(Text, null, headerLabel));\n },\n onRangeChange: onRangeChange\n });\n};\nvar FilterGroup$1 = function (props) {\n var className = props.className,\n item = props.item,\n activeFilters = props.activeFilters,\n onChange = props.onChange,\n hideLabel = props.hideLabel;\n var onChangeHandler = React.useCallback(function (items) {\n onChange(items);\n }, [onChange]);\n var renderInputType = function () {\n switch (item.filterInput.__typename) {\n case 'FilterDropdownInputType':\n return /*#__PURE__*/React.createElement(Dropdown, {\n input: item.filterInput,\n onChange: onChangeHandler,\n activeFilters: activeFilters\n });\n case 'FilterTagsInputType':\n return /*#__PURE__*/React.createElement(Tags, {\n input: item.filterInput,\n onChange: onChangeHandler,\n activeFilters: activeFilters\n });\n case 'FilterCheckboxListInputType':\n return /*#__PURE__*/React.createElement(CheckboxList$1, {\n input: item.filterInput,\n onChange: onChangeHandler,\n activeFilters: activeFilters,\n itemType: item.label\n });\n case 'FilterRangeInputType':\n return /*#__PURE__*/React.createElement(RangeFilter, {\n headerLabel: item.label,\n input: item.filterInput,\n inputRange: activeFilters,\n onChange: onChangeHandler\n });\n }\n };\n var isLabelVisible = item.label && item.filterInput.__typename !== 'FilterRangeInputType' && !hideLabel;\n return /*#__PURE__*/React.createElement(FilterGroup, {\n \"data-testid\": generate(['filter-group', \"filter-group--\" + kebabCase(item.key)], props),\n className: className\n }, isLabelVisible ? /*#__PURE__*/React.createElement(Title, {\n weight: 500\n }, item.label) : null, renderInputType());\n};\nvar FilterGroup$2 = styled(FilterGroup$1)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3;\n\n/**\r\n * @param className - (optional) - string - Enables styled-components mounting\r\n * @param availableFilters - (optional) - IFiltersFragment\r\n * @param drawerName - (optional) - string\r\n * @param activeFilters - (optional) - IFilterInput\r\n * @param withReset - (optional) - boolean\r\n * @param subTitle - (optional) - string\r\n * @param hideLabel - (optional) - boolean\r\n */\nvar FilterContent = function (props) {\n var availableFilters = props.availableFilters,\n activeFilters = props.activeFilters,\n className = props.className,\n _a = props.withReset,\n withReset = _a === void 0 ? true : _a,\n subTitle = props.subTitle,\n hideLabel = props.hideLabel;\n var _b = useFilters(),\n filters = _b.filters,\n onSetFilters = _b.onSetFilters,\n onChange = _b.onChange,\n onResetFilters = _b.onResetFilters;\n // When we mount, we want to set the active filters in the provider\n React.useEffect(function () {\n if (activeFilters) {\n var activeFilterMap = ((activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.groups) || []).map(function (group) {\n return [group.groupKey, group.filterValues];\n });\n onSetFilters(new Map(activeFilterMap));\n } else {\n onSetFilters(new Map());\n }\n }, [activeFilters, onSetFilters]);\n return /*#__PURE__*/React.createElement(Filters, {\n \"data-testid\": generate(['filters'], props),\n className: className\n }, subTitle ? /*#__PURE__*/React.createElement(SubTitle, {\n weight: 500\n }, subTitle) : null, /*#__PURE__*/React.createElement(View, null, availableFilters.groups.map(function (group) {\n return /*#__PURE__*/React.createElement(FilterGroup$2, {\n key: group.key,\n onChange: function (items) {\n return onChange(group.key, items);\n },\n item: group,\n activeFilters: filters.get(group.key) || [],\n hideLabel: hideLabel\n });\n }), withReset ? ( /*#__PURE__*/React.createElement(ResetWrapper, null, /*#__PURE__*/React.createElement(Link, {\n \"data-testid\": generate(['filters__reset'], props),\n onClick: onResetFilters,\n disabled: filters.size === 0\n }, \"Reset All Filters\"))) : null));\n};\nvar Filters$1 = function (props) {\n var availableFilters = props.availableFilters,\n onApply = props.onApply,\n _a = props.drawerName,\n drawerName = _a === void 0 ? 'filters' : _a,\n activeFilters = props.activeFilters,\n onCancel = props.onCancel,\n withOverlay = props.withOverlay,\n title = props.title,\n subTitle = props.subTitle,\n applyLabel = props.applyLabel,\n renderNoResults = props.renderNoResults,\n withReset = props.withReset,\n width = props.width,\n minFilters = props.minFilters;\n var noResults = renderNoResults ? renderNoResults() : /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No filters available\"\n });\n return /*#__PURE__*/React.createElement(FilterDrawer, {\n \"data-testid\": generate([], props),\n drawerName: drawerName,\n onApplyFilters: onApply,\n onCancel: onCancel,\n withOverlay: withOverlay,\n title: title,\n applyLabel: applyLabel,\n width: width,\n minFilters: minFilters\n }, availableFilters ? ( /*#__PURE__*/React.createElement(FilterContent, {\n availableFilters: availableFilters,\n activeFilters: activeFilters,\n withReset: withReset,\n subTitle: subTitle\n })) : noResults);\n};\n\n/**\r\n * @param className - (optional) - string - Enables styled-components mounting\r\n * @param availableFilters - (optional) - IFiltersFragment\r\n * @param onApply - (required) - (filters: IFilterInput) => void - Function triggered when filters are applied\r\n * @param onCancel - (required) - () => void - Function triggered on cancel\r\n * @param drawerName - (optional) - string\r\n * @param activeFilters - (optional) - IFilterInput\r\n * @param withOverlay - (optional) - boolean\r\n * @param title - (optional) - string\r\n * @param subTitle - (optional) - string\r\n * @param applyLabel - (optional) - string\r\n * @param renderNoResults - (optional) - () => React.ReactElement;\r\n * @param withReset - (optional) - boolean\r\n * @param width - (optional) - number - Drawer width\r\n * @param minFilters - (optional) - number\r\n */\nvar Filters$2 = styled(Filters$1)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$4;\nvar INITIAL_STATE$1 = {\n searchTerm: '',\n onUpdate: function () {},\n onClear: function () {}\n};\nvar Context$1 = /*#__PURE__*/React.createContext(INITIAL_STATE$1);\nvar useSearch = function () {\n return React.useContext(Context$1);\n};\nvar SearchProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(''), 2),\n searchTerm = _b[0],\n setSearchTerm = _b[1];\n var onUpdate = function (term) {\n setSearchTerm(term);\n };\n var onClear = function () {\n setSearchTerm('');\n };\n return /*#__PURE__*/React.createElement(Context$1.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$1), {\n searchTerm: searchTerm,\n onUpdate: onUpdate,\n onClear: onClear\n })\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar FilterMenu = styled(View)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n box-shadow: 0 0 6px \", \";\\n max-width: \", \";\\n width: \", \";\\n background-color: \", \";\\n overflow: hidden;\\n\"], [\"\\n border: 1px solid \", \";\\n box-shadow: 0 0 6px \", \";\\n max-width: \", \";\\n width: \", \";\\n background-color: \", \";\\n overflow: hidden;\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return p.theme.spacing.getSize(114);\n}, function (p) {\n return p.theme.spacing.getSize(114);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n});\nvar Container = styled(View)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n padding: \", \";\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n padding: \", \";\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n});\nvar BoldLabel = styled(Text)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n font-weight: 600;\\n color: \", \";\\n\"], [\"\\n font-weight: 600;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar templateObject_1$5, templateObject_2$3, templateObject_3$2;\nvar Header$1 = styled(Container)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(3);\n});\nvar Icon = styled(IconAlertError)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\\n display: inline;\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n display: inline;\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.info.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar InfoMessage = styled(Text)(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n margin-top: \", \";\\n color: \", \";\\n\"], [\"\\n margin-top: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar SearchField = styled(Input)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchIcon = styled(IconSearch)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6, templateObject_2$4, templateObject_3$3, templateObject_4$2, templateObject_5$1;\nvar Header$2 = function (props) {\n var searchPlaceholder = props.searchPlaceholder,\n info = props.info;\n var _a = useSearch(),\n searchTerm = _a.searchTerm,\n onUpdate = _a.onUpdate,\n onClear = _a.onClear;\n var renderSearch = function () {\n if (searchPlaceholder) {\n return /*#__PURE__*/React.createElement(SearchField, {\n \"data-testid\": generate(['search-input'], props),\n value: searchTerm,\n leftAddon: function () {\n return /*#__PURE__*/React.createElement(SearchIcon, null);\n },\n rightAddon: function () {\n return searchTerm ? ( /*#__PURE__*/React.createElement(IconButton, {\n label: \"Clear\",\n onClick: onClear,\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconClose, null);\n }\n })) : ( /*#__PURE__*/React.createElement(React.Fragment, null));\n },\n placeholder: searchPlaceholder,\n onChange: function (event) {\n return onUpdate(event.target.value);\n }\n });\n }\n return undefined;\n };\n var renderInfo = function () {\n if (info) {\n return /*#__PURE__*/React.createElement(InfoMessage, {\n \"data-testid\": generate(['info-message'], props)\n }, /*#__PURE__*/React.createElement(Icon, null), info);\n }\n return undefined;\n };\n return /*#__PURE__*/React.createElement(Header$1, {\n \"data-testid\": generate(['filter-menu-header'])\n }, renderSearch(), renderInfo());\n};\nvar Footer = styled(Container)(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: flex-end;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: flex-end;\\n\"])));\nvar templateObject_1$7;\nvar Footer$1 = function (props) {\n var onReset = props.onReset,\n onApply = props.onApply,\n disableApplyButton = props.disableApplyButton,\n disableResetButton = props.disableResetButton,\n variant = props.variant;\n var renderResetButtonText = function () {\n switch (variant) {\n case IFilterType.Range:\n return 'Remove Filter';\n case IFilterType.RadioList:\n case IFilterType.List:\n case IFilterType.ListLevel:\n case IFilterType.GroupList:\n default:\n return 'Cancel';\n }\n };\n var renderApplyButtonText = function () {\n switch (variant) {\n case IFilterType.RadioList:\n return 'Apply';\n case IFilterType.Range:\n case IFilterType.List:\n case IFilterType.ListLevel:\n case IFilterType.GroupList:\n default:\n return 'Apply Changes';\n }\n };\n return /*#__PURE__*/React.createElement(Footer, {\n \"data-testid\": generate(['filter-menu-footer'])\n }, /*#__PURE__*/React.createElement(Button, {\n \"data-testid\": \"filter-menu-footer--reset-button\",\n variant: \"borderless\",\n onClick: onReset,\n disabled: disableResetButton,\n label: renderResetButtonText()\n }), /*#__PURE__*/React.createElement(Button, {\n \"data-testid\": \"filter-menu-footer--apply-button\",\n variant: \"primary\",\n onClick: onApply,\n disabled: disableApplyButton,\n label: renderApplyButtonText()\n }));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar List$1 = styled(View)(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar ListsWrapper = styled(View)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n if (p.variant === IFilterType.RadioList) {\n return css(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\\n min-height: \", \";\\n max-height: \", \";\\n \"], [\"\\n min-height: \", \";\\n max-height: \", \";\\n \"])), p.numberItems ? p.theme.spacing.getSize(p.numberItems * 10) : MAX_HEIGHT, p.numberItems ? p.theme.spacing.getSize(p.numberItems * 10) : MAX_HEIGHT);\n } else {\n return css(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n min-height: \", \";\\n max-height: \", \";\\n \"], [\"\\n min-height: \", \";\\n max-height: \", \";\\n \"])), p.numberItems ? p.theme.spacing.getSize((p.numberItems + 2) * 10) : MAX_HEIGHT, p.numberItems ? p.theme.spacing.getSize((p.numberItems + 2) * 10) : MAX_HEIGHT);\n }\n});\nvar SelectAllCheckbox = styled(View)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n display: flex;\\n padding: \", \";\\n\"], [\"\\n display: flex;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2) + \" 0 \" + p.theme.spacing.getSize(2) + \" \" + p.theme.spacing.getSize(2);\n});\nvar CheckListWrapper = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar NoResults = styled(View)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n padding-top: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n padding-top: \", \";\\n padding-left: \", \";\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar IconInfo = styled(IconAlertInformationFilled)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.info.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar FiltersWrapper = styled(View)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\"], [\"\"])));\nvar Filters$3 = styled(View)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-bottom: \", \";\\n \", \"\\n\"], [\"\\n margin-left: \", \";\\n margin-bottom: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return !p.isVirtualised && css(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n max-height: \", \";\\n overflow-y: scroll;\\n \"], [\"\\n max-height: \", \";\\n overflow-y: scroll;\\n \"])), function (p) {\n return p.theme.spacing.getSize(60);\n });\n});\nvar templateObject_1$8, templateObject_2$5, templateObject_3$4, templateObject_4$3, templateObject_5$2, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11;\n\n/**\r\n * getNumberItems - function that return number of items in single list or undefined\r\n *\r\n * @param isVirtualised - (required) boolean\r\n * @param filters - (required) IFilterGroupV2[]\r\n * @returns number || undefined\r\n * - number - if \"availableFilters > 8\" returns 8\r\n * - number - specific number of filters when \"availableFilters <= 8\"\r\n * - undefined - if there are more than one list of \"availableFilters\"\r\n */\nvar getNumberItems = function (isVirtualised, filters) {\n var _a, _b, _c;\n if (((_a = filters[0]) === null || _a === void 0 ? void 0 : _a.availableFilters.length) === 0 || !isVirtualised) return undefined;\n if (((_b = filters[0]) === null || _b === void 0 ? void 0 : _b.availableFilters.length) > 8) return 8;\n return (_c = filters[0]) === null || _c === void 0 ? void 0 : _c.availableFilters.length;\n};\n/**\r\n * getIsVirtualised - function that return a boolean based on filters length\r\n *\r\n * @param filters - (required) IFilterGroupV2[]\r\n * @returns boolean\r\n * - true - for one single available filters list\r\n * - false - if zero or more than one available filters list\r\n */\nvar getIsVirtualised = function (filters) {\n return filters.length === 1;\n};\n/**\r\n * selectFilters - function that loops through filter lists to get the selected ids\r\n *\r\n * @param filters - (required) IFilterPayloadValue[]\r\n * @returns selectedIds\r\n * - empty object when no filters are applied yet => {}\r\n * - an object with key the filter value to be initialised to true => {'filter-0': true}\r\n */\nvar selectFilters = function (filters) {\n var e_1, _a;\n // ATTENTION: Do not refactor this to a reduce because it will slow down performances\n // this function is faster in creating the selectedIds object (with 10.000 items less than 1 ms, same with 200.000 items)\n // while with the previous version with a reduce it was taking 3 seconds with 10.000 items and exponentially slower\n var result = {};\n try {\n for (var filters_1 = __values(filters), filters_1_1 = filters_1.next(); !filters_1_1.done; filters_1_1 = filters_1.next()) {\n var item = filters_1_1.value;\n result[item.value] = true;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (filters_1_1 && !filters_1_1.done && (_a = filters_1.return)) _a.call(filters_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n return result;\n};\n/**\r\n * removeSelectedFilters - function that loops through filter lists to uncheck selected ids\r\n *\r\n * @param filters - (required) IFilterPayloadValue[]\r\n * @returns selectedIds - changing all [filter.values] to false => {'filter-0': false}\r\n */\nvar removeSelectedFilters = function (filters) {\n var e_2, _a;\n var result = {};\n try {\n for (var filters_2 = __values(filters), filters_2_1 = filters_2.next(); !filters_2_1.done; filters_2_1 = filters_2.next()) {\n var item = filters_2_1.value;\n result[item.value] = false;\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (filters_2_1 && !filters_2_1.done && (_a = filters_2.return)) _a.call(filters_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n return result;\n};\n/**\r\n * selectAllFilters - function that select all filters available\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns selectedIds - SelectedIdsType\r\n */\nvar selectAllFilters = function (filters) {\n var e_3, _a;\n var selected = {};\n try {\n for (var filters_3 = __values(filters), filters_3_1 = filters_3.next(); !filters_3_1.done; filters_3_1 = filters_3.next()) {\n var item = filters_3_1.value;\n selected = __assign(__assign({}, selected), selectFilters(item.availableFilters));\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (filters_3_1 && !filters_3_1.done && (_a = filters_3.return)) _a.call(filters_3);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n return selected;\n};\n/**\r\n * getMatchedFilters - function that loops through all filter lists to find labels or sublabels that will match the searched term\r\n *\r\n * @param searchTerm - (required) string - the searched term user will type into the search input\r\n * @param filters - (required) IFilterGroupV2[] - all avaliable filters\r\n * @returns IFilterPayloadValue[] => it will return\r\n */\nvar getMatchedFilters = function (searchTerm, filters) {\n if (filters.length === 0) return [];\n var allMatchedFilters = filters.reduce(function (acc, filter) {\n var filterLabel = filter.label;\n var matchedFilters = filter.availableFilters.reduce(function (matchedAcc, item) {\n var _a, _b;\n if (((_a = item === null || item === void 0 ? void 0 : item.label) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(searchTerm.toLowerCase())) || ((_b = item === null || item === void 0 ? void 0 : item.sublabel) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes(searchTerm.toLowerCase()))) {\n return __spread(matchedAcc, [{\n value: item.value,\n label: item.label,\n sublabel: filterLabel || (item === null || item === void 0 ? void 0 : item.sublabel)\n }]);\n }\n return matchedAcc;\n }, []);\n return __spread(acc, matchedFilters);\n }, []);\n return allMatchedFilters;\n};\n/**\r\n * getSelectedIds - function that transform the selectedIds into an array of strings based on the object key\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @returns string[]\r\n */\nvar getSelectedIds = function (selectedIds) {\n return Object.keys(selectedIds).filter(function (key) {\n return selectedIds[key] === true;\n });\n};\n/**\r\n * getTotalSelectedIds - function that return number of selectedIds\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @returns number\r\n */\nvar getTotalSelectedIds = function (selectedIds) {\n return getSelectedIds(selectedIds).length;\n};\n/**\r\n * shouldDisableApplyButton function\r\n *\r\n * @param appliedFilters - (required) - IFilterPayloadValue[]\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @returns boolean\r\n * - true when appliedFilters are equal to all selectedIds\r\n * - false when appliedFilters are NOT equal to all selectedIds\r\n */\nvar shouldDisableApplyButton = function (appliedFilters, selectedIds) {\n var selectedIdsArray = getSelectedIds(selectedIds);\n if (appliedFilters.length !== selectedIdsArray.length) {\n return false;\n }\n var sameIdsSelected = appliedFilters.every(function (filter) {\n return selectedIdsArray.includes(filter.value);\n });\n return sameIdsSelected;\n};\n/**\r\n * getSelectedFilters - function that filters all available filters to return only the current selected ids\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns IFilterGroupV2[]\r\n */\nvar getSelectedFilters = function (selectedIds, filters) {\n if (Object.keys(selectedIds).every(function (key) {\n return selectedIds[key] === false;\n })) return [];\n var allSelected = filters.map(function (filter) {\n var newAvailableFilters = filter.availableFilters.filter(function (availableFilter) {\n return selectedIds[availableFilter.value] === true;\n });\n return __assign(__assign({}, filter), {\n availableFilters: newAvailableFilters\n });\n });\n return allSelected;\n};\n/**\r\n * allFiltersChecked - function that check that every selected id for filter list is checked\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns boolean\r\n * - true: all filters are selected\r\n * - false: at least one filter is not selected\r\n */\nvar allFiltersChecked = function (filters, selectedIds) {\n return filters.every(function (item) {\n return selectedIds[item.value] === true;\n });\n};\n/**\r\n * someFiltersChecked - function that some selected id for filter list is checked\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns boolean\r\n * - true: at least one filter is selected\r\n * - false: none is selected\r\n */\nvar someFiltersChecked = function (filters, selectedIds) {\n return filters.some(function (item) {\n return selectedIds[item.value] === true;\n });\n};\n/**\r\n * areAllFiltersChecked - function that check if filters are all selected\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns boolean\r\n * - true: all filters are selected\r\n * - false: at least one filter is not selected\r\n */\nvar areAllFiltersChecked = function (filters, selectedIds) {\n var result = filters.map(function (filter) {\n return allFiltersChecked(filter.availableFilters, selectedIds);\n });\n return result.every(function (item) {\n return item === true;\n });\n};\n/**\r\n * atLeastOneFilterChecked - function that check if at least one filter is selected\r\n *\r\n * @param selectedIds - (required) - SelectedIdsType\r\n * @param filters - (required) - IFilterGroupV2[]\r\n * @returns boolean\r\n * - true: at least one filter is selected\r\n * - false: all filters are not selected\r\n */\nvar atLeastOneFilterChecked = function (filters, selectedIds) {\n var result = filters.map(function (filter) {\n return filter.availableFilters.some(function (item) {\n return selectedIds[item.value] === true;\n });\n });\n return result.some(function (item) {\n return item === true;\n });\n};\n/**\r\n * areRangeEquals - function that check if ranges are equals\r\n *\r\n * @param firstRange - (optional) - IFilterRange\r\n * @param secondRange - (optional) - IFilterRange\r\n * @returns boolean\r\n */\nvar areRangeEquals = function (firstRange, secondRange) {\n return (firstRange === null || firstRange === void 0 ? void 0 : firstRange.min) === (secondRange === null || secondRange === void 0 ? void 0 : secondRange.min) && (firstRange === null || firstRange === void 0 ? void 0 : firstRange.max) === (secondRange === null || secondRange === void 0 ? void 0 : secondRange.max);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ShowSelectedToggle = styled(View)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\\n padding: \", \";\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n padding: \", \";\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2) + \" 0 \" + p.theme.spacing.getSize(2) + \" \" + p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n});\nvar templateObject_1$9;\nvar ShowSelectedToggle$1 = function (props) {\n var isChecked = props.isChecked,\n onToggle = props.onToggle,\n totalSelected = props.totalSelected;\n return /*#__PURE__*/React.createElement(ShowSelectedToggle, null, /*#__PURE__*/React.createElement(ToggleSwitch, {\n isChecked: isChecked,\n onChange: onToggle,\n label: function () {\n return /*#__PURE__*/React.createElement(BoldLabel, null, \"Show Selected Only (\" + totalSelected + \")\");\n },\n disabled: totalSelected === 0 && !isChecked\n }));\n};\n\n// Minimum 8 items visible => 320 = 40px item height x 8 items\nvar MAX_HEIGHT = 320;\nvar List$2 = function (props) {\n var filters = props.filters,\n appliedFilters = props.appliedFilters,\n onApply = props.onApply,\n onReset = props.onReset,\n variant = props.variant;\n var isVirtualised = getIsVirtualised(filters);\n var searchTerm = useSearch().searchTerm;\n var debouncedSearchTerm = useDebounce(searchTerm, 200);\n var _a = __read(React.useState([]), 2),\n searchedResults = _a[0],\n setSearchedResults = _a[1];\n var _b = __read(React.useState(false), 2),\n allSearchedSelected = _b[0],\n setAllSearchedSelected = _b[1];\n var _c = __read(React.useState(false), 2),\n atLeastOneSearchedSelected = _c[0],\n setAtLeastOneSearchedSelected = _c[1];\n var _d = __read(React.useState(selectFilters(appliedFilters)), 2),\n selectedIds = _d[0],\n setSelectedIds = _d[1];\n var _e = __read(React.useState(selectedIds), 2),\n temporarySelectedIds = _e[0],\n setTemporarySelectedIds = _e[1];\n var _f = __read(React.useState(getTotalSelectedIds(selectedIds)), 2),\n totalSelected = _f[0],\n setTotalSelected = _f[1];\n var _g = __read(React.useState(false), 2),\n showSelected = _g[0],\n setShowSelected = _g[1];\n var _h = __read(React.useState(filters), 2),\n allFilters = _h[0],\n setAllFilters = _h[1];\n var _j = __read(React.useState(areAllFiltersChecked(filters, selectedIds)), 2),\n allFiltersSelected = _j[0],\n setAllFiltersSelected = _j[1];\n var _k = __read(React.useState(atLeastOneFilterChecked(filters, selectedIds)), 2),\n atLeastOneSelected = _k[0],\n setAtLeastOneSelected = _k[1];\n var _l = __read(React.useState(true), 2),\n disableApplyButton = _l[0],\n setDisableApplyButton = _l[1];\n var handleChecboxChange = function (id) {\n var _a, _b;\n if (variant === IFilterType.GroupList || variant === IFilterType.List) {\n setSelectedIds(__assign(__assign({}, selectedIds), (_a = {}, _a[id] = selectedIds[id] ? !selectedIds[id] : true, _a)));\n } else if (variant === IFilterType.RadioList) {\n setSelectedIds((_b = {}, _b[id] = true, _b));\n }\n };\n var handleOnApply = function () {\n var filterValues = [];\n filters.forEach(function (filter) {\n filterValues = __spread(filterValues, filter.availableFilters.filter(function (item) {\n return selectedIds[item.value] === true;\n }));\n });\n onApply(filterValues);\n };\n var applyButton = function (appliedFilters, selectedIds) {\n setDisableApplyButton(shouldDisableApplyButton(appliedFilters, selectedIds));\n };\n var handleToggleSelected = function () {\n setShowSelected(!showSelected);\n };\n var handleSelectAllFilters = function (status) {\n if (showSelected) {\n if (atLeastOneSelected && !allFiltersSelected && status === false || status === true) {\n var allSelectedFilters = getSelectedFilters(temporarySelectedIds, filters);\n setSelectedIds(selectAllFilters(allSelectedFilters));\n } else {\n setSelectedIds({});\n }\n } else {\n if (atLeastOneSelected && !allFiltersSelected && status === false || status === true) {\n setSelectedIds(selectAllFilters(filters));\n } else {\n setSelectedIds({});\n }\n }\n };\n var handlePartialSelect = function (status) {\n if (atLeastOneSearchedSelected && !allSearchedSelected && status === false || status === true) {\n setSelectedIds(__assign(__assign({}, selectedIds), selectFilters(searchedResults)));\n } else {\n setSelectedIds(__assign(__assign({}, selectedIds), removeSelectedFilters(searchedResults)));\n }\n };\n React.useEffect(function () {\n applyButton(appliedFilters, selectedIds);\n setTotalSelected(getTotalSelectedIds(selectedIds));\n if (showSelected) {\n var allSelectedFilters = getSelectedFilters(temporarySelectedIds, filters);\n setAtLeastOneSelected(atLeastOneFilterChecked(allSelectedFilters, selectedIds));\n setAllFiltersSelected(areAllFiltersChecked(allSelectedFilters, selectedIds));\n setAllFilters(allSelectedFilters);\n } else {\n setAllFilters(filters);\n setAllFiltersSelected(areAllFiltersChecked(filters, selectedIds));\n setAtLeastOneSelected(atLeastOneFilterChecked(filters, selectedIds));\n setTemporarySelectedIds(selectedIds);\n }\n }, [selectedIds, appliedFilters, filters, showSelected, temporarySelectedIds]);\n // Debounced Search useEffect\n React.useEffect(function () {\n if (debouncedSearchTerm && debouncedSearchTerm.length > 0) {\n var results = getMatchedFilters(debouncedSearchTerm, filters);\n setSearchedResults(results);\n setAllSearchedSelected(allFiltersChecked(results, selectedIds));\n setAtLeastOneSearchedSelected(someFiltersChecked(results, selectedIds));\n } else {\n setSearchedResults([]);\n setAllSearchedSelected(false);\n setAtLeastOneSearchedSelected(false);\n }\n }, [filters, debouncedSearchTerm, selectedIds]);\n var showNoResultMessage = debouncedSearchTerm.length > 0 && searchedResults.length === 0;\n var showSearchedResultList = debouncedSearchTerm.length > 0 && searchedResults.length > 0;\n var showFilters = debouncedSearchTerm.length === 0 && allFilters && allFilters.length > 0;\n var notRadioList = variant !== IFilterType.RadioList;\n var showToggle = debouncedSearchTerm.length === 0 && notRadioList;\n var numberItems = getNumberItems(isVirtualised, filters);\n return /*#__PURE__*/React.createElement(List$1, {\n \"data-testid\": generate(['filter-menu-list'], props)\n }, /*#__PURE__*/React.createElement(ListsWrapper, {\n numberItems: numberItems,\n variant: variant\n }, showNoResultMessage && ( /*#__PURE__*/React.createElement(NoResults, {\n \"data-testid\": \"filter-menu-list--no-results\"\n }, /*#__PURE__*/React.createElement(IconInfo, {\n \"data-testid\": \"filter-menu-list--no-results-icon\"\n }), \" No Matches Found.\")), showToggle && ( /*#__PURE__*/React.createElement(ShowSelectedToggle$1, {\n isChecked: showSelected,\n onToggle: handleToggleSelected,\n totalSelected: totalSelected\n })), showSearchedResultList && ( /*#__PURE__*/React.createElement(FiltersWrapper, {\n \"data-testid\": \"filter-menu-list--searched-results\"\n }, notRadioList && ( /*#__PURE__*/React.createElement(SelectAllCheckbox, null, /*#__PURE__*/React.createElement(Checkbox, {\n label: function () {\n return /*#__PURE__*/React.createElement(BoldLabel, null, \"Select All Searched Results\");\n },\n isIndeterminate: atLeastOneSearchedSelected && !allSearchedSelected,\n isChecked: atLeastOneSearchedSelected || allSearchedSelected,\n size: \"small\",\n onChange: handlePartialSelect,\n \"data-testid\": \"filter-menu-list--select-all-searched-results\"\n }))), /*#__PURE__*/React.createElement(Filters$3, {\n isVirtualised: isVirtualised\n }, /*#__PURE__*/React.createElement(CheckList, {\n selectedIds: selectedIds,\n items: searchedResults,\n onSelect: handleChecboxChange,\n isVirtualised: true,\n maxHeight: isVirtualised ? MAX_HEIGHT : undefined,\n variant: variant === IFilterType.RadioList ? 'radio' : 'checkbox'\n })))), showFilters && ( /*#__PURE__*/React.createElement(FiltersWrapper, {\n \"data-testid\": \"filter-menu-list--all-filters\"\n }, notRadioList && ( /*#__PURE__*/React.createElement(SelectAllCheckbox, null, /*#__PURE__*/React.createElement(Checkbox, {\n label: function () {\n return /*#__PURE__*/React.createElement(BoldLabel, null, \"Select All\");\n },\n isIndeterminate: atLeastOneSelected && !allFiltersSelected,\n isChecked: atLeastOneSelected || allFiltersSelected,\n size: \"small\",\n \"data-testid\": \"filter-menu-list--select-all\",\n onChange: handleSelectAllFilters\n }))), /*#__PURE__*/React.createElement(Filters$3, {\n isVirtualised: isVirtualised\n }, allFilters.map(function (_a, index) {\n var label = _a.label,\n availableFilters = _a.availableFilters;\n if (availableFilters.length === 0) return null;\n return /*#__PURE__*/React.createElement(CheckListWrapper, {\n \"data-testid\": \"filter-menu-list--available-filter-\" + index,\n key: label || index\n }, /*#__PURE__*/React.createElement(CheckList, {\n collapsible: label ? true : false,\n selectedIds: selectedIds,\n items: availableFilters,\n onSelect: handleChecboxChange,\n listTitle: label || undefined,\n isExpanded: showSelected,\n isVirtualised: isVirtualised,\n maxHeight: isVirtualised ? MAX_HEIGHT : undefined,\n variant: variant === IFilterType.RadioList ? 'radio' : 'checkbox'\n }));\n }))))), /*#__PURE__*/React.createElement(Footer$1, {\n onApply: handleOnApply,\n onReset: onReset,\n variant: variant,\n disableApplyButton: disableApplyButton\n }));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar Range = styled(View)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\"], [\"\"])));\nvar RangeWrapper = styled(View)(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$a, templateObject_2$6;\nvar Range$1 = function (props) {\n var range = props.range,\n activeRange = props.activeRange,\n onApply = props.onApply;\n var _a = __read(React.useState(true), 2),\n disableApplyButton = _a[0],\n setDisableApplyButton = _a[1];\n var _b = __read(React.useState(true), 2),\n disableResetButton = _b[0],\n setDisableResetButton = _b[1];\n var _c = __read(React.useState(activeRange || range), 2),\n selectedRange = _c[0],\n setSelectedRange = _c[1];\n var handleRange = function (newRange) {\n setSelectedRange(newRange);\n };\n var handleOnApply = function () {\n if (!selectedRange) return;\n var minValue = {\n label: 'min',\n value: \"\" + selectedRange.min\n };\n var maxValue = {\n label: 'max',\n value: \"\" + selectedRange.max\n };\n var filterValues = [minValue, maxValue];\n onApply(filterValues);\n };\n var handleOnReset = function () {\n setSelectedRange(undefined);\n onApply([]);\n };\n var resetButton = function (activeRange) {\n return !activeRange ? setDisableResetButton(true) : setDisableResetButton(false);\n };\n var applyButton = function (selectedRange, range, activeRange) {\n if (activeRange === undefined && areRangeEquals(selectedRange, range)) {\n setDisableApplyButton(true);\n } else if (areRangeEquals(selectedRange, activeRange)) {\n setDisableApplyButton(true);\n } else {\n setDisableApplyButton(false);\n }\n };\n React.useEffect(function () {\n resetButton(activeRange);\n applyButton(selectedRange, range, activeRange);\n }, [selectedRange, range, activeRange]);\n return /*#__PURE__*/React.createElement(Range, {\n \"data-testid\": generate(['filter-menu-range'], props)\n }, /*#__PURE__*/React.createElement(RangeWrapper, null, /*#__PURE__*/React.createElement(RangeSliderInput, {\n header: function () {\n return null;\n },\n min: range.min,\n max: range.max,\n range: selectedRange,\n onRangeChange: handleRange\n })), /*#__PURE__*/React.createElement(Footer$1, {\n onApply: handleOnApply,\n onReset: handleOnReset,\n variant: IFilterType.Range,\n disableApplyButton: disableApplyButton,\n disableResetButton: disableResetButton\n }));\n};\nvar FilterMenu$1 = function (props) {\n var className = props.className,\n variant = props.variant,\n info = props.info,\n searchPlaceholder = props.searchPlaceholder,\n _a = props.filters,\n filters = _a === void 0 ? [] : _a,\n _b = props.appliedFilters,\n appliedFilters = _b === void 0 ? [] : _b,\n range = props.range,\n activeRange = props.activeRange,\n onClose = props.onClose,\n onApplyChange = props.onApplyChange,\n groupKey = props.groupKey;\n var onClear = useSearch().onClear;\n var handleClose = function () {\n onClear();\n onClose();\n };\n var handleApplyChanges = function (filterValues) {\n onApplyChange({\n groupKey: groupKey,\n filterValues: filterValues\n });\n onClose();\n };\n var renderContent = function () {\n if (variant === IFilterType.List || variant === IFilterType.RadioList) {\n return /*#__PURE__*/React.createElement(List$2, {\n filters: filters,\n appliedFilters: appliedFilters,\n onApply: handleApplyChanges,\n onReset: handleClose,\n variant: variant\n });\n }\n if (variant === IFilterType.Range) {\n if (!range) return;\n return /*#__PURE__*/React.createElement(Range$1, {\n range: range,\n activeRange: activeRange,\n onApply: handleApplyChanges\n });\n }\n };\n var showHeader = !!info || !!searchPlaceholder;\n return /*#__PURE__*/React.createElement(FilterMenu, {\n \"data-testid\": generate(['filter-menu'], props),\n className: className\n }, showHeader && /*#__PURE__*/React.createElement(Header$2, {\n searchPlaceholder: searchPlaceholder,\n info: info\n }), renderContent());\n};\n\n/**\r\n * @param variant - (required) - IFilterType - \"LIST\" | \"RANGE\"\r\n * @param onClose - (required) - () => void\r\n * @param onApplyChange - (required) - (filterInput: IFilterPayloadInputGroup) => void;\r\n * @param groupKey - (required) - string;\r\n * @param className - (optional) - string\r\n * @param isOpen - (optional) - boolean\r\n * @param info - (optional) - string\r\n * @param searchPlaceholder - (optional) - string\r\n * @param filters - (optional) - IFilterGroupV2[]\r\n * @param appliedFilters - (optional) - IFilterPayloadValue[]\r\n * @param range - (optional) - IFilterRange\r\n * @param activeRange - (optional) - IFilterRange\r\n */\nvar FilterMenu$2 = styled(FilterMenu$1)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$b;\n\n// This named style should be the wrapper for the component i.e. the module\nvar FilterButton = styled(View)(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n display: inline-block;\\n \", \"\\n\"], [\"\\n display: inline-block;\\n \", \"\\n\"])), function (p) {\n return p.fullWidth && css(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n display: block;\\n width: 100%;\\n \"], [\"\\n display: block;\\n width: 100%;\\n \"])));\n});\nvar ButtonWrapper = styled.div(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\\n width: 100%;\\n display: block;\\n\"], [\"\\n width: 100%;\\n display: block;\\n\"])));\nvar templateObject_1$c, templateObject_2$7, templateObject_3$5;\n\n// This named style should be the wrapper for the component i.e. the module\nvar FilterFolderMenu = styled(FilterMenu)(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$d;\nvar MAX_HEIGHT$1 = {\n EIGHT_FILTERS: 280,\n NINE_FILTERS: 320\n};\n// This named style should be the wrapper for the component i.e. the module\nvar FolderList = styled(View)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterList = styled.div(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\\n min-height: \", \";\\n\"], [\"\\n min-height: \", \";\\n\"])), function () {\n return MAX_HEIGHT$1.NINE_FILTERS + \"px\";\n});\nvar CheckListWrapper$1 = styled.div(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar LevelBack = styled.div(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n cursor: pointer;\\n border-bottom: 1px solid \", \";\\n background: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n cursor: pointer;\\n border-bottom: 1px solid \", \";\\n background: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar LevelBackText = styled(Text)(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar ErrorWrapper = styled(View)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n padding: \", \";\\n padding-left: \", \";\\n margin-left: \", \";\\n min-height: \", \";\\n\"], [\"\\n padding: \", \";\\n padding-left: \", \";\\n margin-left: \", \";\\n min-height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function () {\n return MAX_HEIGHT$1.NINE_FILTERS + \"px\";\n});\nvar LoadingWrapper = styled(View)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$e, templateObject_2$8, templateObject_3$6, templateObject_4$4, templateObject_5$3, templateObject_6$1, templateObject_7$1;\nvar CHECKBOX_STATUS = {\n CHECKED: 'CHECKED',\n UNCHECKED: 'UNCHECKED',\n INDETERMINATE: 'INDETERMINATE'\n};\nfunction getCheckboxStatus(id, checked, indeterminate) {\n if (!!checked[id] && !indeterminate[id]) {\n return CHECKBOX_STATUS.CHECKED;\n } else if (!!checked[id] && !!indeterminate[id]) {\n return CHECKBOX_STATUS.INDETERMINATE;\n }\n return CHECKBOX_STATUS.UNCHECKED;\n}\nfunction removeAllSelectedChildren(selected, filterClicked) {\n if (selected.length === 0 || !filterClicked.value) return [];\n return selected.filter(function (sel) {\n return !(sel.parentIds && sel.parentIds.includes(filterClicked.value));\n });\n}\nfunction getAllFiltersChecked(checked, indeterminate, filters) {\n return filters.filter(function (f) {\n return getCheckboxStatus(f.value, checked, indeterminate) === CHECKBOX_STATUS.CHECKED;\n });\n}\nfunction getChildrenIds(newSelected, filterClicked) {\n return newSelected === null || newSelected === void 0 ? void 0 : newSelected.reduce(function (acc, sel) {\n if (sel.parentIds && sel.parentIds.includes(filterClicked.value)) {\n return __spread(acc, [sel.value]);\n }\n return acc;\n }, []);\n}\nfunction atLeastOneSiblingChecked(idClicked, checked, indeterminate, filters) {\n if (!filters) return false;\n var siblingIds = filters === null || filters === void 0 ? void 0 : filters.reduce(function (acc, filter) {\n if (filter.value !== idClicked) {\n return __spread(acc, [filter.value]);\n }\n return acc;\n }, []);\n if (siblingIds && (siblingIds === null || siblingIds === void 0 ? void 0 : siblingIds.length) > 0) {\n return siblingIds.some(function (currentId) {\n var status = getCheckboxStatus(currentId, checked, indeterminate);\n return status === CHECKBOX_STATUS.CHECKED;\n });\n }\n return false;\n}\nfunction areAllSiblingsChecked(idClicked, checked, indeterminate, filters) {\n if (!filters) return true;\n var siblingIds = filters === null || filters === void 0 ? void 0 : filters.reduce(function (acc, filter) {\n if (filter.value !== idClicked) {\n return __spread(acc, [filter.value]);\n }\n return acc;\n }, []);\n if (siblingIds && (siblingIds === null || siblingIds === void 0 ? void 0 : siblingIds.length) > 0) {\n return siblingIds.every(function (currentId) {\n var status = getCheckboxStatus(currentId, checked, indeterminate);\n return status === CHECKBOX_STATUS.CHECKED;\n });\n }\n return true;\n}\nfunction getSelectedAndCheckedOnUncheck(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy) {\n var updatedChecked = __assign({}, newChecked);\n var updatedIndeterminate = __assign({}, newIndeterminate);\n var selectedToAdd = [];\n var selectedToRemove = [];\n var lastIndex = parentIds.length;\n var _loop_1 = function (currentLevel) {\n var _a, _b;\n var parentId = parentIds[currentLevel - 1];\n var parentKey = currentLevel <= 1 ? '0' : currentLevel - 1 + \"|\" + parentIds[currentLevel - 2];\n var parentFilters = flattenHierarchy[parentKey];\n var parent_1 = parentFilters === null || parentFilters === void 0 ? void 0 : parentFilters.find(function (f) {\n return f.value === parentId;\n });\n var currentId = currentLevel < lastIndex ? parentIds[currentLevel] : id;\n var currentSiblingKey = currentLevel + \"|\" + parentId;\n var levelFilters = currentLevel === lastIndex ? filters : flattenHierarchy[currentSiblingKey];\n if (atLeastOneSiblingChecked(currentId, updatedChecked, updatedIndeterminate, levelFilters) && parent_1) {\n var allSiblingChecked = getAllFiltersChecked(updatedChecked, updatedIndeterminate, levelFilters);\n selectedToAdd = __spread(selectedToAdd, allSiblingChecked);\n selectedToRemove = __spread(selectedToRemove, [parent_1]);\n if (currentLevel < lastIndex) {\n selectedToAdd = selectedToAdd.filter(function (f) {\n return f.value !== currentId;\n });\n }\n updatedChecked = __assign(__assign({}, updatedChecked), (_a = {}, _a[parent_1.value] = true, _a));\n updatedIndeterminate = __assign(__assign({}, updatedIndeterminate), (_b = {}, _b[parent_1.value] = true, _b));\n }\n };\n for (var currentLevel = lastIndex; currentLevel > 0; currentLevel--) {\n _loop_1(currentLevel);\n }\n return {\n selectedToAdd: selectedToAdd,\n selectedToRemove: selectedToRemove,\n updatedChecked: updatedChecked,\n updatedIndeterminate: updatedIndeterminate\n };\n}\nfunction getSelectedAndCheckedOnCheck(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy) {\n var updatedChecked = __assign({}, newChecked);\n var updatedIndeterminate = __assign({}, newIndeterminate);\n var selectedToAdd = [];\n var selectedToRemove = [];\n var lastIndex = parentIds.length;\n var _loop_2 = function (currentLevel) {\n var _a, _b, _c, _d;\n var parentId = parentIds[currentLevel - 1];\n var parentKey = currentLevel <= 1 ? '0' : currentLevel - 1 + \"|\" + parentIds[currentLevel - 2];\n var parentFilters = flattenHierarchy[parentKey];\n var parent_2 = parentFilters === null || parentFilters === void 0 ? void 0 : parentFilters.find(function (f) {\n return f.value === parentId;\n });\n var currentId = currentLevel < lastIndex ? parentIds[currentLevel] : id;\n var currentSiblingKey = currentLevel + \"|\" + parentId;\n var levelFilters = currentLevel === lastIndex ? filters : flattenHierarchy[currentSiblingKey];\n var status_1 = getCheckboxStatus(currentId, updatedChecked, updatedIndeterminate);\n if (status_1 === CHECKBOX_STATUS.CHECKED && areAllSiblingsChecked(currentId, updatedChecked, updatedIndeterminate, levelFilters) && parent_2) {\n selectedToAdd = __spread(selectedToAdd, [parent_2]);\n selectedToRemove = __spread(selectedToRemove, levelFilters);\n if (currentLevel < lastIndex) {\n selectedToAdd = selectedToAdd.filter(function (f) {\n return f.value !== currentId;\n });\n }\n updatedChecked = __assign(__assign({}, updatedChecked), (_a = {}, _a[parent_2.value] = true, _a));\n updatedIndeterminate = __assign(__assign({}, updatedIndeterminate), (_b = {}, _b[parent_2.value] = false, _b));\n } else if (parent_2) {\n updatedChecked = __assign(__assign({}, updatedChecked), (_c = {}, _c[parent_2.value] = true, _c));\n updatedIndeterminate = __assign(__assign({}, updatedIndeterminate), (_d = {}, _d[parent_2.value] = true, _d));\n }\n };\n for (var currentLevel = lastIndex; currentLevel > 0; currentLevel--) {\n _loop_2(currentLevel);\n }\n return {\n selectedToAdd: selectedToAdd,\n selectedToRemove: selectedToRemove,\n updatedChecked: updatedChecked,\n updatedIndeterminate: updatedIndeterminate\n };\n}\nfunction getSelectedAndCheckedOnIndeterminate(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy) {\n var updatedChecked = __assign({}, newChecked);\n var updatedIndeterminate = __assign({}, newIndeterminate);\n var selectedToAdd = [];\n var selectedToRemove = [];\n var lastIndex = parentIds.length;\n var _loop_3 = function (currentLevel) {\n var _a, _b;\n var parentId = parentIds[currentLevel - 1];\n var parentKey = currentLevel <= 1 ? '0' : currentLevel - 1 + \"|\" + parentIds[currentLevel - 2];\n var parentFilters = flattenHierarchy[parentKey];\n var parent_3 = parentFilters === null || parentFilters === void 0 ? void 0 : parentFilters.find(function (f) {\n return f.value === parentId;\n });\n var currentId = currentLevel < lastIndex ? parentIds[currentLevel] : id;\n var currentSiblingKey = currentLevel + \"|\" + parentId;\n var levelFilters = currentLevel === lastIndex ? filters : flattenHierarchy[currentSiblingKey];\n if (areAllSiblingsChecked(currentId, updatedChecked, updatedIndeterminate, levelFilters) && parent_3) {\n selectedToAdd = __spread(selectedToAdd, [parent_3]);\n selectedToRemove = __spread(selectedToRemove, levelFilters);\n if (currentLevel < lastIndex) {\n selectedToAdd = selectedToAdd.filter(function (f) {\n return f.value !== currentId;\n });\n }\n updatedChecked = __assign(__assign({}, updatedChecked), (_a = {}, _a[parent_3.value] = true, _a));\n updatedIndeterminate = __assign(__assign({}, updatedIndeterminate), (_b = {}, _b[parent_3.value] = false, _b));\n }\n };\n for (var currentLevel = lastIndex; currentLevel > 0; currentLevel--) {\n _loop_3(currentLevel);\n }\n return {\n selectedToAdd: selectedToAdd,\n selectedToRemove: selectedToRemove,\n updatedChecked: updatedChecked,\n updatedIndeterminate: updatedIndeterminate\n };\n}\nfunction getAtLeastOneChildSelected(selected, filter) {\n return selected.find(function (sel) {\n return sel.parentIds && filter.parentIds && sel.parentIds.join('').startsWith(filter.parentIds.join('') + filter.value);\n });\n}\n/**\r\n * getFilterLevelStatus function will read current filters loaded and selected\r\n * to determine if checkboxes need to update their status\r\n *\r\n * it will not change the selected\r\n */\nfunction getFilterLevelStatus(checked, indeterminate, selected, filters, currentParent) {\n if (selected.length === 0) {\n // CASE 1: no filters are selected\n // => RESET checked and indeterminate values\n return {\n newChecked: {},\n newIndeterminate: {}\n };\n }\n var newChecked = __assign({}, checked);\n var newIndeterminate = __assign({}, indeterminate);\n if (currentParent) {\n var currentParentStatus = getCheckboxStatus(currentParent.value, checked, indeterminate);\n if (currentParentStatus === CHECKBOX_STATUS.CHECKED) {\n // CASE 2: currentParent exists and is CHECKED\n // => check all filter ids (that are the children)\n filters.forEach(function (filter) {\n var value = filter === null || filter === void 0 ? void 0 : filter.value;\n newChecked[value] = true;\n newIndeterminate[value] = false;\n });\n } else if (currentParentStatus === CHECKBOX_STATUS.INDETERMINATE || currentParentStatus === CHECKBOX_STATUS.UNCHECKED) {\n filters.forEach(function (filter) {\n var _a, _b, _c, _d, _e, _f;\n var value = filter === null || filter === void 0 ? void 0 : filter.value;\n var isCurrentSelected = selected.find(function (sel) {\n return sel.value === value;\n });\n if (isCurrentSelected) {\n // CASE 3.1 currentParent exists and is UNCHECKED and currentFilter is into selected\n // CASE 3.2 currentParent exists and is INDETERMINATE and currentFilter is into selected\n // => then current should be CHECKED\n newChecked = __assign(__assign({}, newChecked), (_a = {}, _a[value] = true, _a));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_b = {}, _b[value] = false, _b));\n } else {\n var atLeastOneChildSelected = getAtLeastOneChildSelected(selected, filter);\n if (atLeastOneChildSelected) {\n // CASE 4.1 currentParent exists and is UNCHECKED\n // and currentFilter has at least one children selected\n // => then currentFilter should be INDETERMINATE\n // CASE 4.2 currentParent exists and is INDETERMINATE\n // and currentFilter has at least one children selected\n // => then currentFilter should be INDETERMINATE\n newChecked = __assign(__assign({}, newChecked), (_c = {}, _c[value] = true, _c));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_d = {}, _d[value] = true, _d));\n } else {\n // CASE 5.1 currentParent exists and is UNCHECKED\n // currentFilter does not have any children selected\n // => then currentFilter should be UNCHECKED\n // CASE 5.2 currentParent exists and is INDETERMINATE\n // currentFilter does not have any children selected\n // => then currentFilter should be UNCHECKED\n newChecked = __assign(__assign({}, newChecked), (_e = {}, _e[value] = false, _e));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_f = {}, _f[value] = false, _f));\n }\n }\n });\n }\n } else {\n filters.forEach(function (filter) {\n var _a, _b, _c, _d;\n var isCurrentSelected = selected.find(function (sel) {\n return sel.value === filter.value;\n });\n if (isCurrentSelected) {\n // CASE 6: currentFilter does not have a currentParent and is found into the selected\n // => then currentFilter should be CHECKED\n newChecked = __assign(__assign({}, newChecked), (_a = {}, _a[filter === null || filter === void 0 ? void 0 : filter.value] = true, _a));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_b = {}, _b[filter === null || filter === void 0 ? void 0 : filter.value] = false, _b));\n } else {\n var atLeastOneChildSelected = selected.find(function (sel) {\n return sel.parentIds && sel.parentIds.join('').startsWith(filter.value);\n });\n if (atLeastOneChildSelected) {\n // CASE 7: currentFilter does not have a currentParent, it is NOT found into the selected\n // at least one child is found into the selected\n // => then currentFilter should be INDETERMINATE\n newChecked = __assign(__assign({}, newChecked), (_c = {}, _c[filter === null || filter === void 0 ? void 0 : filter.value] = true, _c));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_d = {}, _d[filter === null || filter === void 0 ? void 0 : filter.value] = true, _d));\n }\n }\n });\n }\n return {\n newChecked: newChecked,\n newIndeterminate: newIndeterminate\n };\n}\n/**\r\n * getNewSelected function will get triggered on checkbox click and it will return\r\n * newChecked, newIndeterminate and newSelected information\r\n *\r\n * in some cases if it doesn't have the children ids it cannot put them in the correct checked, unchecked status\r\n * and this will be handle by the getFilterLevelStatus function\r\n */\nfunction getNewSelected(id, checked, indeterminate, selected, filters, flattenHierarchy) {\n var _a, _b, _c, _d, _e, _f;\n var _g;\n var newChecked = __assign({}, checked);\n var newIndeterminate = __assign({}, indeterminate);\n var newSelected = __spread(selected);\n var filterClicked = filters === null || filters === void 0 ? void 0 : filters.find(function (filter) {\n return filter.value === id;\n });\n // getNewSelected function will get called only after user clicks on a filter\n // filterClicked should always be found inside the filters, however in the case is not\n // as fallback we return the current checked, indeterminate and selected status:\n if (!filterClicked) return {\n newChecked: newChecked,\n newIndeterminate: newIndeterminate,\n newSelected: newSelected\n };\n var parentIds = (_g = filterClicked.parentIds) !== null && _g !== void 0 ? _g : [];\n var filterClickedStatus = getCheckboxStatus(id, checked, indeterminate);\n if (filterClickedStatus === CHECKBOX_STATUS.CHECKED) {\n // CASE 1 => user clicks on CHECKED filter\n // 1.1. REMOVE filterClicked from 'checked', 'indeterminate' and 'selected'\n newChecked = __assign(__assign({}, newChecked), (_a = {}, _a[id] = false, _a));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_b = {}, _b[id] = false, _b));\n newSelected = newSelected.filter(function (sel) {\n return sel.value !== id;\n });\n // 1.2. REMOVE all children from 'checked', 'indeterminate' and 'selected'\n if (!!(filterClicked === null || filterClicked === void 0 ? void 0 : filterClicked.hasChildren)) {\n var childrenSelectedIds = getChildrenIds(newSelected, filterClicked);\n if (childrenSelectedIds) {\n childrenSelectedIds.forEach(function (childId) {\n var _a, _b;\n newChecked = __assign(__assign({}, newChecked), (_a = {}, _a[childId] = false, _a));\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_b = {}, _b[childId] = false, _b));\n });\n }\n newSelected = removeAllSelectedChildren(newSelected, filterClicked);\n }\n // 1.3 handle parentIds\n if (parentIds.length > 0 && filters && flattenHierarchy) {\n var _h = getSelectedAndCheckedOnUncheck(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy),\n selectedToAdd = _h.selectedToAdd,\n selectedToRemove = _h.selectedToRemove,\n updatedChecked = _h.updatedChecked,\n updatedIndeterminate = _h.updatedIndeterminate;\n // 1.3.1 UPDATE 'checked' and 'indeterminate' with the parent ids for filterClicked\n newChecked = updatedChecked;\n newIndeterminate = updatedIndeterminate;\n // 1.3.2 ADD selectedToAdd\n // selectedToAdd: contains all filters on each levels that should be added into 'selected'\n // i.e. if all filterClicked' sibling are selected then when user remove one filter we shuold add to 'selected' all sibling checked\n selectedToAdd.forEach(function (filter) {\n var found = newSelected.findIndex(function (item) {\n return item.value === filter.value;\n });\n if (found === -1) {\n newSelected.push(filter);\n }\n });\n // 1.3.3 REMOVE selectedToRemove\n // selectedToRemove: contains all previous filters selected at each level that should be removed from 'selected'\n // i.e. if all filterClicked' sibling are selected then when user remove one filter we shuold remove from the 'selected' its parent\n // that from fully selected it should be partially selected\n selectedToRemove.forEach(function (filter) {\n newSelected = newSelected.filter(function (sel) {\n return sel.value !== filter.value;\n });\n });\n }\n } else if (filterClickedStatus === CHECKBOX_STATUS.INDETERMINATE) {\n // CASE 2 => user clicks on INDETERMINATE filter\n // 2.1. ADD filterClicked into 'checked' and 'selected'\n newChecked = __assign(__assign({}, newChecked), (_c = {}, _c[id] = true, _c));\n // indeterminate should now be false:\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_d = {}, _d[id] = false, _d));\n newSelected.push(filterClicked);\n // 2.2. REMOVE all children from 'selected'\n // (clean up the selected and we send only the current filterClicked that is the parent)\n newSelected = removeAllSelectedChildren(newSelected, filterClicked);\n // 2.3 handle parentIds\n if (parentIds.length > 0 && filters && flattenHierarchy) {\n var _j = getSelectedAndCheckedOnIndeterminate(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy),\n selectedToAdd = _j.selectedToAdd,\n selectedToRemove = _j.selectedToRemove,\n updatedChecked = _j.updatedChecked,\n updatedIndeterminate = _j.updatedIndeterminate;\n // 2.3.1 UPDATE 'checked' and 'indeterminate' with the parent ids for filterClicked\n newChecked = updatedChecked;\n newIndeterminate = updatedIndeterminate;\n // 2.3.2 ADD selectedToAdd\n // selectedToAdd: contains all filters on each levels that should be added into 'selected'\n // i.e. if all filterClicked' sibling are selected then when user clicks on INDETERMINATE filter\n // we should add the parent filter to the 'selected'\n selectedToAdd.forEach(function (filter) {\n var found = newSelected.findIndex(function (item) {\n return item.value === filter.value;\n });\n if (found === -1) {\n newSelected.push(filter);\n }\n });\n // 2.3.3 REMOVE selectedToRemove\n // selectedToRemove: contains all previous selected at each level that should be removed\n // i.e. if all filterClicked' sibling are selected then when user clicks on INDETERMINATE filter\n // we should remove all sibling from the 'selected'\n selectedToRemove.forEach(function (filter) {\n newSelected = newSelected.filter(function (sel) {\n return sel.value !== filter.value;\n });\n });\n }\n } else if (filterClickedStatus === CHECKBOX_STATUS.UNCHECKED) {\n // CASE 3 => user clicks on UNCHECKED filter\n // 3.1. ADD filterClicked into 'checked' and 'selected'\n newChecked = __assign(__assign({}, newChecked), (_e = {}, _e[id] = true, _e));\n // 'indeterminate' value should be false\n newIndeterminate = __assign(__assign({}, newIndeterminate), (_f = {}, _f[id] = false, _f));\n newSelected.push(filterClicked);\n // 3.2. REMOVE all children from 'selected'\n newSelected = removeAllSelectedChildren(newSelected, filterClicked);\n // 3.3 handle parentIds\n if (parentIds.length > 0 && filters && flattenHierarchy) {\n var _k = getSelectedAndCheckedOnCheck(id, parentIds, newChecked, newIndeterminate, filters, flattenHierarchy),\n selectedToAdd = _k.selectedToAdd,\n selectedToRemove = _k.selectedToRemove,\n updatedChecked = _k.updatedChecked,\n updatedIndeterminate = _k.updatedIndeterminate;\n // 3.3.1 UPDATE 'checked' and 'indeterminate' with the parent ids for filterClicked\n newChecked = updatedChecked;\n newIndeterminate = updatedIndeterminate;\n // 3.3.2 ADD selectedToAdd\n // selectedToAdd: contains all filters on each levels that should be added into 'selected'\n // i.e. if all filterClicked' sibling are selected then when user clicks on UNCHECKED filter\n // we should add the parent filter to the 'selected'\n selectedToAdd.forEach(function (filter) {\n var found = newSelected.findIndex(function (item) {\n return item.value === filter.value;\n });\n if (found === -1) {\n newSelected.push(filter);\n }\n });\n // 3.3.3 REMOVE selectedToRemove\n // selectedToRemove: contains all previous selected at each level that should be removed\n // i.e. if all filterClicked' sibling are selected then when user clicks on UNCHECKED filter\n // we should remove all sibling from the 'selected'\n selectedToRemove.forEach(function (filter) {\n newSelected = newSelected.filter(function (sel) {\n return sel.value !== filter.value;\n });\n });\n }\n }\n return {\n newChecked: newChecked,\n newIndeterminate: newIndeterminate,\n newSelected: newSelected\n };\n}\nfunction transformSelectedToFilterInputGroups(selected, prevAppliedFilters) {\n var prevGroupKeysApplied = __spread(new Set(prevAppliedFilters === null || prevAppliedFilters === void 0 ? void 0 : prevAppliedFilters.map(function (f) {\n return f.code;\n })));\n if (selected.length === 0 && prevGroupKeysApplied.length === 0) return [];\n var codes = [];\n var filterInputGroups = [];\n selected.forEach(function (sel) {\n var selectedCode = sel.code;\n if (selectedCode) {\n if (codes.includes(selectedCode)) {\n var groupIndex = filterInputGroups.findIndex(function (group) {\n return group.groupKey === selectedCode;\n });\n if (groupIndex !== -1) {\n filterInputGroups[groupIndex].filterValues.push({\n value: sel.value\n });\n }\n } else {\n codes.push(selectedCode);\n filterInputGroups.push({\n groupKey: selectedCode,\n filterValues: [{\n value: sel.value\n }]\n });\n }\n }\n });\n // if we have applied filters that has been removed from the selected then we should\n // remove these previous applied filters keys from the new request on apply changes:\n // here we create the filterGroup with previous \"groupKey\" and empty array for \"filterValues\"\n prevGroupKeysApplied.forEach(function (prevGroupKey) {\n if (!filterInputGroups.find(function (filterInput) {\n return filterInput.groupKey === prevGroupKey;\n })) {\n filterInputGroups.push({\n groupKey: prevGroupKey,\n filterValues: []\n });\n }\n });\n return filterInputGroups;\n}\nfunction compareSelectedAndAppliedFilters(selected, appliedFilters) {\n if (!appliedFilters && selected.length > 0) return false;\n if (appliedFilters && appliedFilters.length !== selected.length) return false;\n var sameFilters = true;\n appliedFilters === null || appliedFilters === void 0 ? void 0 : appliedFilters.forEach(function (applied) {\n var found = selected.find(function (sel) {\n return sel.value === applied.value;\n });\n if (!found) {\n sameFilters = false;\n }\n });\n return sameFilters;\n}\nvar GetFilterLevelDocument = gql(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n query getFilterLevel($input: FilterLevelInput!) {\\n getFilterLevel(input: $input) {\\n filters {\\n value\\n code\\n label\\n sublabel\\n parentIds\\n hasChildren\\n lastLevelFilterCount\\n }\\n }\\n }\\n\"], [\"\\n query getFilterLevel($input: FilterLevelInput!) {\\n getFilterLevel(input: $input) {\\n filters {\\n value\\n code\\n label\\n sublabel\\n parentIds\\n hasChildren\\n lastLevelFilterCount\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetFilterLevelQuery__\r\n *\r\n * To run a query within a React component, call `useGetFilterLevelQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetFilterLevelQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetFilterLevelQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetFilterLevelQuery(baseOptions) {\n return useQuery(GetFilterLevelDocument, baseOptions);\n}\nvar templateObject_1$f;\nvar useNavigateHierarchy = function () {\n var _a, _b;\n var _c = __read(React.useState(0), 2),\n initialScrollOffset = _c[0],\n setInitialOffset = _c[1];\n var _d = __read(React.useState(0), 2),\n currentScrollPosition = _d[0],\n setCurrentScrollPosition = _d[1];\n var _e = __read(React.useState([]), 2),\n allPrevScrollPositions = _e[0],\n setAllPrevScrollPositions = _e[1];\n var _f = __read(React.useState([]), 2),\n allParents = _f[0],\n setAllParents = _f[1];\n var _g = __read(React.useState(null), 2),\n currentParent = _g[0],\n setCurrentParent = _g[1];\n var _h = __read(React.useState(null), 2),\n flattenHierarchy = _h[0],\n setFlattenHierarchy = _h[1];\n var _j = __read(React.useState({\n groupKey: '',\n id: null\n }), 2),\n variables = _j[0],\n setVariables = _j[1];\n var _k = useGetFilterLevelQuery({\n skip: !variables.groupKey,\n variables: {\n input: __assign({}, variables)\n }\n }),\n loading = _k.loading,\n data = _k.data,\n error = _k.error;\n React.useEffect(function () {\n var _a;\n if (((_a = data === null || data === void 0 ? void 0 : data.getFilterLevel) === null || _a === void 0 ? void 0 : _a.filters) && !loading) {\n setFlattenHierarchy(function (prevState) {\n var _a;\n var _b, _c;\n var newHierarchy = prevState;\n if (!newHierarchy) {\n var firstLevel = (_b = data === null || data === void 0 ? void 0 : data.getFilterLevel) === null || _b === void 0 ? void 0 : _b.filters;\n newHierarchy = {\n 0: firstLevel\n };\n }\n if (allParents && (allParents === null || allParents === void 0 ? void 0 : allParents.length) > 0) {\n var level = allParents.length;\n var newKey = level + \"|\" + variables.id;\n if (!Object.keys(newHierarchy).includes(level + \"|\" + variables.id)) {\n newHierarchy = __assign(__assign({}, newHierarchy), (_a = {}, _a[newKey] = (_c = data === null || data === void 0 ? void 0 : data.getFilterLevel) === null || _c === void 0 ? void 0 : _c.filters, _a));\n }\n }\n return newHierarchy;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = data === null || data === void 0 ? void 0 : data.getFilterLevel) === null || _a === void 0 ? void 0 : _a.filters, loading]);\n React.useEffect(function () {\n if (allParents) {\n var newCurrentParent = allParents[allParents.length - 1];\n setCurrentParent(newCurrentParent);\n } else {\n setCurrentParent(null);\n }\n }, [allParents]);\n var goBack = function () {\n if (allParents === null || allParents === void 0 ? void 0 : allParents.length) {\n var prevInitialOffset = allPrevScrollPositions[(allParents === null || allParents === void 0 ? void 0 : allParents.length) - 1];\n setInitialOffset(prevInitialOffset);\n } else {\n setInitialOffset(0);\n }\n setCurrentScrollPosition(0);\n setAllParents(__spread(allParents === null || allParents === void 0 ? void 0 : allParents.slice(0, (allParents === null || allParents === void 0 ? void 0 : allParents.length) - 1)));\n };\n var onInspect = function (filter) {\n if (allParents && filter) {\n setAllParents(__spread(allParents, [filter]));\n } else if (filter) {\n setAllParents([filter]);\n }\n if (allParents && (allParents === null || allParents === void 0 ? void 0 : allParents.length) > 0) {\n setAllPrevScrollPositions(__spread(allPrevScrollPositions, [currentScrollPosition]));\n } else {\n setAllPrevScrollPositions([currentScrollPosition]);\n }\n setInitialOffset(0);\n setCurrentScrollPosition(0);\n };\n var onScroll = function (e) {\n setCurrentScrollPosition(e.scrollOffset);\n };\n return {\n loading: loading,\n error: error,\n filters: (_b = data === null || data === void 0 ? void 0 : data.getFilterLevel) === null || _b === void 0 ? void 0 : _b.filters,\n allParents: allParents,\n currentParent: currentParent,\n flattenHierarchy: flattenHierarchy,\n setVariables: setVariables,\n onInspect: onInspect,\n goBack: goBack,\n onScroll: onScroll,\n initialScrollOffset: initialScrollOffset\n };\n};\nvar getFieldColor = themeHelpers.getFieldColor;\n// This named style should be the wrapper for the component i.e. the module\nvar FolderListSkeleton = styled(View)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\"], [\"\"])));\nvar FolderListSkeletonItem = styled(View)(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar FolderListSkeletonCheckbox = styled(View)(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n border: 1px solid \", \";\\n background: \", \";\\n margin: \", \";\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n border: 1px solid \", \";\\n background: \", \";\\n margin: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return getFieldColor(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(3) + \" 0\";\n});\nvar SkeletonWrapper = styled(View)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2) + \" \" + p.theme.spacing.getSize(4);\n});\nvar SkeletonLoaderLine = styled(SkeletonLoader)(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-left: \", \";\\n min-width: \", \";\\n height: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-left: \", \";\\n min-width: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(96);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$g, templateObject_2$9, templateObject_3$7, templateObject_4$5, templateObject_5$4;\nvar FolderListSkeleton$1 = function () {\n var activeTheme = useThemeProvider().activeTheme;\n var getLoadingSkeleton = function (n) {\n return Array.from({\n length: n\n }, function (_, idx) {\n return /*#__PURE__*/React.createElement(FolderListSkeletonItem, {\n key: idx\n }, /*#__PURE__*/React.createElement(FolderListSkeletonCheckbox, {\n activeTheme: activeTheme\n }), /*#__PURE__*/React.createElement(SkeletonLoaderLine, null));\n });\n };\n return /*#__PURE__*/React.createElement(FolderListSkeleton, {\n \"data-testid\": \"folder-list-skeleton\"\n }, getLoadingSkeleton(6));\n};\nvar FolderList$1 = function (props) {\n var className = props.className,\n code = props.code,\n appliedFilters = props.appliedFilters,\n onApplyFilters = props.onApplyFilters,\n onClose = props.onClose;\n var _a = useNavigateHierarchy(),\n loading = _a.loading,\n error = _a.error,\n filters = _a.filters,\n allParents = _a.allParents,\n currentParent = _a.currentParent,\n flattenHierarchy = _a.flattenHierarchy,\n setVariables = _a.setVariables,\n onInspect = _a.onInspect,\n goBack = _a.goBack,\n onScroll = _a.onScroll,\n initialScrollOffset = _a.initialScrollOffset;\n // current filter selection\n var _b = __read(React.useState(appliedFilters !== null && appliedFilters !== void 0 ? appliedFilters : []), 2),\n currentSelected = _b[0],\n setCurrentSelected = _b[1];\n // only visual changes on checkboxes\n var _c = __read(React.useState(function () {\n if (!appliedFilters || appliedFilters.length === 0) return {};\n return appliedFilters.reduce(function (acc, item) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[item.value] = true, _a));\n }, {});\n }), 2),\n checked = _c[0],\n setChecked = _c[1];\n var _d = __read(React.useState({}), 2),\n indeterminate = _d[0],\n setIndeterminate = _d[1];\n var _e = __read(React.useState(true), 2),\n isApplyDisabled = _e[0],\n setIsApplyDisabled = _e[1];\n React.useEffect(function () {\n if (allParents.length > 0) {\n var newCurrentParent = allParents[allParents.length - 1];\n if (newCurrentParent.code) {\n setVariables({\n groupKey: newCurrentParent.code,\n id: newCurrentParent.value\n });\n }\n } else {\n setVariables({\n groupKey: code,\n id: null\n });\n }\n }, [allParents, code, setVariables]);\n React.useEffect(function () {\n if (filters) {\n var _a = getFilterLevelStatus(checked, indeterminate, currentSelected, filters, currentParent),\n newChecked = _a.newChecked,\n newIndeterminate = _a.newIndeterminate;\n setChecked(newChecked);\n setIndeterminate(newIndeterminate);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters]);\n var handleSelect = function (id) {\n var _a = getNewSelected(id, checked, indeterminate, currentSelected, filters, flattenHierarchy),\n newChecked = _a.newChecked,\n newIndeterminate = _a.newIndeterminate,\n newSelected = _a.newSelected;\n setCurrentSelected(newSelected);\n setChecked(newChecked);\n setIndeterminate(newIndeterminate);\n var newIsApplyDisabled = compareSelectedAndAppliedFilters(newSelected, appliedFilters);\n setIsApplyDisabled(newIsApplyDisabled);\n };\n var handleApply = function () {\n onApplyFilters(currentSelected);\n };\n var handleReset = function () {\n onClose();\n };\n var noData = !loading && !error && filters && filters.length === 0;\n return /*#__PURE__*/React.createElement(FolderList, {\n \"data-testid\": generate(['filter-folder-menu'], props),\n className: className\n }, (error || noData) && ( /*#__PURE__*/React.createElement(ErrorWrapper, null, /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: {\n title: 'No filters have been found',\n status: 'error'\n }\n }))), !error && !noData && ( /*#__PURE__*/React.createElement(FilterList, {\n \"data-testid\": \"filter-menu-list--level\"\n }, currentParent && ( /*#__PURE__*/React.createElement(LevelBack, {\n onClick: goBack\n }, /*#__PURE__*/React.createElement(IconChevronLeft, null), ' ', /*#__PURE__*/React.createElement(LevelBackText, null, \"Back to '\" + currentParent.label + \"'\"))), loading && ( /*#__PURE__*/React.createElement(LoadingWrapper, null, /*#__PURE__*/React.createElement(FolderListSkeleton$1, null))), !loading && filters && ( /*#__PURE__*/React.createElement(CheckListWrapper$1, null, /*#__PURE__*/React.createElement(CheckList, {\n key: currentParent ? currentParent.code + \"-\" + initialScrollOffset : code + \"-\" + initialScrollOffset,\n variant: \"checkbox\",\n selectedIds: checked,\n indeterminateIds: indeterminate,\n items: filters,\n onSelect: handleSelect,\n onInspect: onInspect,\n isVirtualised: true,\n maxHeight: currentParent ? MAX_HEIGHT$1.EIGHT_FILTERS : MAX_HEIGHT$1.NINE_FILTERS,\n onScroll: onScroll,\n initialScrollOffset: initialScrollOffset\n }))))), /*#__PURE__*/React.createElement(Footer$1, {\n onApply: handleApply,\n onReset: handleReset,\n disableApplyButton: isApplyDisabled,\n variant: IFilterType.ListLevel\n }));\n};\nvar FilterFolderMenu$1 = function (props) {\n var className = props.className,\n groupKey = props.groupKey,\n searchPlaceholder = props.searchPlaceholder,\n info = props.info,\n appliedFilters = props.appliedFilters,\n onClose = props.onClose,\n onApplyChange = props.onApplyChange;\n var handleApplyFilters = function (selected) {\n var filterGroups = transformSelectedToFilterInputGroups(selected, appliedFilters);\n onApplyChange(filterGroups);\n };\n return /*#__PURE__*/React.createElement(FilterFolderMenu, {\n \"data-testid\": generate(['filter-folder-menu'], props),\n className: className\n }, (searchPlaceholder || info) && /*#__PURE__*/React.createElement(Header$2, {\n searchPlaceholder: searchPlaceholder,\n info: info\n }), /*#__PURE__*/React.createElement(FolderList$1, {\n code: groupKey,\n appliedFilters: appliedFilters,\n onApplyFilters: handleApplyFilters,\n onClose: onClose\n }));\n};\nvar FilterFolderMenu$2 = styled(FilterFolderMenu$1)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$h;\nvar FilterButton$1 = function (props) {\n var className = props.className,\n label = props.label,\n variant = props.variant,\n info = props.info,\n searchPlaceholder = props.searchPlaceholder,\n filters = props.filters,\n appliedFiltersCount = props.appliedFiltersCount,\n appliedFilters = props.appliedFilters,\n appliedFiltersLevel = props.appliedFiltersLevel,\n onApplyChange = props.onApplyChange,\n range = props.range,\n activeRange = props.activeRange,\n _a = props.fullWidth,\n fullWidth = _a === void 0 ? false : _a,\n groupKey = props.groupKey,\n _b = props.disabled,\n disabled = _b === void 0 ? false : _b,\n _c = props.insideDrawer,\n insideDrawer = _c === void 0 ? false : _c;\n var triggerRef = React.useRef(null);\n var triggerEl = useTarget(triggerRef);\n var _d = __read(React.useState(false), 2),\n isOpen = _d[0],\n setIsOpen = _d[1];\n var onClear = useSearch().onClear;\n var isList = [IFilterType.List, IFilterType.RadioList, IFilterType.ListLevel].includes(variant);\n var isSingleChoice = isList && (filters === null || filters === void 0 ? void 0 : filters.length) === 1 && filters[0].availableFilters.length === 1;\n var isDisabled = disabled || isSingleChoice;\n var handleClick = function () {\n setIsOpen(!isOpen);\n onClear();\n };\n var getFilterLabel = function () {\n var filterLabel = label;\n if (variant === IFilterType.List || variant === IFilterType.ListLevel) {\n if (appliedFiltersCount && appliedFiltersCount > 0) {\n filterLabel = label + \" (\" + appliedFiltersCount + \")\";\n }\n } else if (variant === IFilterType.Range) {\n if (activeRange && Object.keys(activeRange).length > 0) {\n filterLabel = label + \" (1)\";\n }\n } else if (variant === IFilterType.RadioList) {\n filterLabel = label + \":\";\n }\n return filterLabel;\n };\n var getInnerLabel = function () {\n if (appliedFilters && appliedFilters.length > 0) {\n return appliedFilters[0].label;\n }\n return 'Please Select';\n };\n var renderFilterMenu = function () {\n if (variant === IFilterType.ListLevel) {\n return /*#__PURE__*/React.createElement(FilterFolderMenu$2, {\n info: info,\n searchPlaceholder: searchPlaceholder,\n groupKey: groupKey,\n appliedFilters: appliedFiltersLevel,\n onClose: handleClick,\n onApplyChange: onApplyChange\n });\n }\n return /*#__PURE__*/React.createElement(FilterMenu$2, {\n info: info,\n searchPlaceholder: searchPlaceholder,\n variant: variant,\n range: range,\n activeRange: activeRange,\n groupKey: groupKey,\n filters: filters,\n appliedFilters: appliedFilters,\n onClose: handleClick,\n onApplyChange: onApplyChange\n });\n };\n return /*#__PURE__*/React.createElement(FilterButton, {\n fullWidth: fullWidth,\n \"data-testid\": generate(['filter-button-with-dropdown'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ButtonWrapper, {\n ref: triggerRef\n }, variant === IFilterType.RadioList ? ( /*#__PURE__*/React.createElement(FilterButton$3, {\n label: getFilterLabel(),\n innerLabel: getInnerLabel(),\n variant: variant === IFilterType.RadioList ? 'secondary' : 'primary',\n onClick: handleClick,\n isOpen: isOpen,\n disabled: isDisabled\n })) : ( /*#__PURE__*/React.createElement(FilterButton$3, {\n label: getFilterLabel(),\n onClick: handleClick,\n isOpen: isOpen,\n disabled: isDisabled\n }))), isOpen && ( /*#__PURE__*/React.createElement(React.Fragment, null, insideDrawer ? ( /*#__PURE__*/React.createElement(\"div\", {\n \"data-testid\": generate(['filter-dropdown'], props)\n }, renderFilterMenu())) : ( /*#__PURE__*/React.createElement(DropdownContent, {\n \"data-testid\": generate(['filter-dropdown'], props),\n triggerEl: triggerEl,\n onClose: handleClick,\n forceBottom: true\n }, renderFilterMenu())))));\n};\n\n/**\r\n * @param className - (optional) string;\r\n * @param label - (required) - string;\r\n * @param variant - (required) - IFilterType;\r\n * @param groupKey - (required) - string;\r\n * @param info - (optional) string;\r\n * @param searchPlaceholder - (optional) string;\r\n * @param filters - (optional) IFilterGroupV2[];\r\n * @param appliedFilters - (optional) IFilterPayloadValue[];\r\n * @param onApplyChange - (required) - (filterInput: IFilterPayloadInputGroup) => void;\r\n * @param range - (optional) IFilterRange;\r\n * @param activeRange - (optional) IFilterRange;\r\n * @param fullWidth - (optional) - boolean\r\n */\nvar FilterButton$2 = styled(FilterButton$1)(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$i;\nvar getDefaultExposedFilters = function (num) {\n return num ? Array.from({\n length: num\n }, function () {\n return true;\n }) : [];\n};\nvar getExposedFilters = function (allFilters, exposedFilterIds) {\n if (!exposedFilterIds || exposedFilterIds.length === 0) return [];\n return allFilters.filter(function (filters) {\n return exposedFilterIds.includes(filters.id);\n });\n};\nvar getShowExposedFilters = function (parentWidth, leftChildrenWidths, rightWidth) {\n var showExposedFilters = [];\n leftChildrenWidths.forEach(function (_, idx, children) {\n var currentTotalLeft = children.slice(0, idx + 1).reduce(function (acc, currentChild) {\n return acc + currentChild;\n }, 0);\n if (parentWidth < currentTotalLeft + rightWidth) {\n showExposedFilters[idx] = false;\n } else {\n showExposedFilters[idx] = true;\n }\n });\n return showExposedFilters;\n};\nvar getAppliedFiltersCount = function (filters) {\n var appliedCount = filters.reduce(function (acc, filter) {\n var count = acc;\n if (filter.attributes.__typename === 'FilterListVariant' && filter.attributes.appliedFilters) {\n count = acc + filter.attributes.appliedFilters.length;\n }\n if (filter.attributes.__typename === 'FilterRangeVariant') {\n if (filter.attributes.activeRange && Object.keys(filter.attributes.activeRange).length > 0) {\n count = acc + 1;\n }\n }\n return count;\n }, 0);\n return appliedCount;\n};\nvar getCurrentVisibleFilters = function (exposedFilters, showExposedFilters) {\n return showExposedFilters.reduce(function (acc, isVisible, idx) {\n if (isVisible) return __spread(acc, [exposedFilters[idx]]);\n return acc;\n }, []);\n};\nvar getVisibleCount = function (exposedFilters, showExposedFilters) {\n var currentExposed = getCurrentVisibleFilters(exposedFilters, showExposedFilters);\n return getAppliedFiltersCount(currentExposed);\n};\nvar getHiddenCount = function (allFilters, exposedFilters, showExposedFilters) {\n var currentExposed = getCurrentVisibleFilters(exposedFilters, showExposedFilters);\n var currentHidden = allFilters.reduce(function (acc, filter) {\n if (currentExposed.find(function (current) {\n return (current === null || current === void 0 ? void 0 : current.id) === (filter === null || filter === void 0 ? void 0 : filter.id);\n })) return acc;\n return __spread(acc, [filter]);\n }, []);\n return getAppliedFiltersCount(currentHidden);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ExposedFilterList = styled.div(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\\n display: block;\\n flex: 1;\\n\"], [\"\\n display: block;\\n flex: 1;\\n\"])));\nvar ExposedFilterListContent = styled.div(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"])));\nvar ExposedFilterButtons = styled.div(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar ExposedFilterWrapper = styled(View)(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject([\"\\n padding-right: 16px;\\n flex: 0 0 auto;\\n display: inline-block;\\n\\n \", \"\\n\"], [\"\\n padding-right: 16px;\\n flex: 0 0 auto;\\n display: inline-block;\\n\\n \", \"\\n\"])), function (p) {\n return !p.showFilterButton && css(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject([\"\\n display: none;\\n \"], [\"\\n display: none;\\n \"])));\n});\nvar ExposedFilterAllFilters = styled.div(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$j, templateObject_2$a, templateObject_3$8, templateObject_4$6, templateObject_5$5, templateObject_6$2;\nvar ExposedFilterListContent$1 = function (props) {\n var allFilters = props.allFilters,\n exposedFilterIds = props.exposedFilterIds,\n onAllFilterClick = props.onAllFilterClick,\n onApplyChange = props.onApplyChange,\n parentWidth = props.parentWidth;\n var _a = __read(React.useState([]), 2),\n exposedFilters = _a[0],\n setExposedFilters = _a[1];\n var _b = __read(React.useState(0), 2),\n appliedVisibleCount = _b[0],\n setAppliedVisibleCount = _b[1];\n var _c = __read(React.useState(0), 2),\n appliedHiddenCount = _c[0],\n setAppliedHiddenCount = _c[1];\n var leftRef = React.useRef(null);\n var rightRef = React.useRef(null);\n var _d = __read(React.useState([]), 2),\n leftChildrenWidths = _d[0],\n setLeftChildrenWidths = _d[1];\n var _e = __read(React.useState(undefined), 2),\n rightWidth = _e[0],\n setRightWidth = _e[1];\n var _f = __read(React.useState([]), 2),\n showExposedFilters = _f[0],\n setShowExposedFilters = _f[1];\n React.useEffect(function () {\n var newExposedFilters = getExposedFilters(allFilters, exposedFilterIds);\n var newShowExposedFilters = getDefaultExposedFilters(newExposedFilters.length);\n setExposedFilters(newExposedFilters);\n setShowExposedFilters(newShowExposedFilters);\n }, [allFilters, exposedFilterIds]);\n React.useEffect(function () {\n var visibleCount = getVisibleCount(exposedFilters, showExposedFilters);\n var hiddenCount = getHiddenCount(allFilters, exposedFilters, showExposedFilters);\n setAppliedVisibleCount(visibleCount);\n setAppliedHiddenCount(hiddenCount);\n }, [allFilters, exposedFilters, showExposedFilters]);\n React.useEffect(function () {\n if (leftRef && (leftRef === null || leftRef === void 0 ? void 0 : leftRef.current) && exposedFilters.length > 0) {\n var childrenWidths = Array.from(leftRef.current.children).map(function (child) {\n return child.getBoundingClientRect().width;\n });\n setLeftChildrenWidths(childrenWidths);\n }\n }, [leftRef, exposedFilters]);\n React.useEffect(function () {\n if (rightRef && (rightRef === null || rightRef === void 0 ? void 0 : rightRef.current)) {\n setRightWidth(rightRef.current.getBoundingClientRect().width);\n }\n }, [rightRef, appliedVisibleCount]);\n React.useEffect(function () {\n if (parentWidth && rightWidth && leftChildrenWidths.length > 0) {\n setShowExposedFilters(getShowExposedFilters(parentWidth, leftChildrenWidths, rightWidth));\n }\n }, [leftChildrenWidths, parentWidth, rightWidth]);\n var noExposedFilters = exposedFilters.length === 0;\n var getAllFiltersLabel = function () {\n if (appliedVisibleCount === 0 && appliedHiddenCount === 0) return 'All Filters';\n if (appliedVisibleCount > 0 && appliedHiddenCount === 0) return \"All Filters (\" + appliedVisibleCount + \")\";\n return \"All Filters (+\" + appliedHiddenCount + \")\";\n };\n return /*#__PURE__*/React.createElement(ExposedFilterListContent, null, /*#__PURE__*/React.createElement(ExposedFilterButtons, {\n ref: leftRef\n }, exposedFilters.length > 0 && exposedFilters.map(function (filter, idx) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var component = null;\n if (((_a = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _a === void 0 ? void 0 : _a.__typename) === 'FilterListLevelVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n \"data-testid\": \"exposed-filter--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n searchPlaceholder: ((_b = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _b === void 0 ? void 0 : _b.searchPlaceholder) || undefined,\n appliedFiltersCount: (_c = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _c === void 0 ? void 0 : _c.appliedFiltersCount,\n appliedFiltersLevel: (_d = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _d === void 0 ? void 0 : _d.appliedFilters,\n onApplyChange: onApplyChange\n });\n } else if (((_e = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _e === void 0 ? void 0 : _e.__typename) === 'FilterListVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n \"data-testid\": \"exposed-filter--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n searchPlaceholder: ((_f = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _f === void 0 ? void 0 : _f.searchPlaceholder) || undefined,\n filters: (_g = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _g === void 0 ? void 0 : _g.filterGroups,\n appliedFiltersCount: (_h = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _h === void 0 ? void 0 : _h.appliedFiltersCount,\n appliedFilters: (_j = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _j === void 0 ? void 0 : _j.appliedFilters,\n onApplyChange: onApplyChange\n });\n } else if (((_k = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _k === void 0 ? void 0 : _k.__typename) === 'FilterRangeVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n \"data-testid\": \"exposed-filter--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n range: (_l = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _l === void 0 ? void 0 : _l.range,\n activeRange: ((_m = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _m === void 0 ? void 0 : _m.activeRange) || undefined,\n onApplyChange: onApplyChange\n });\n }\n return component && ( /*#__PURE__*/React.createElement(ExposedFilterWrapper, {\n key: filter.id,\n \"data-testid\": \"exposed-filter-wrapper\",\n showFilterButton: showExposedFilters[idx]\n }, component));\n })), onAllFilterClick && ( /*#__PURE__*/React.createElement(ExposedFilterAllFilters, {\n ref: rightRef\n }, /*#__PURE__*/React.createElement(Button, {\n \"data-testid\": \"all-filters-button\",\n label: getAllFiltersLabel(),\n variant: \"borderless\",\n onClick: onAllFilterClick,\n disabled: noExposedFilters\n }))));\n};\nvar ExposedFilterList$1 = function (props) {\n var className = props.className,\n allFilters = props.allFilters,\n exposedFilterIds = props.exposedFilterIds,\n onAllFilterClick = props.onAllFilterClick,\n onApplyChange = props.onApplyChange;\n var _a = __read(useWindowSize(), 1),\n windowWidth = _a[0];\n var parentRef = React.useRef(null);\n var _b = __read(React.useState(undefined), 2),\n parentWidth = _b[0],\n setParentWidth = _b[1];\n React.useEffect(function () {\n if (parentRef && parentRef.current) {\n var parent_1 = parentRef.current.getBoundingClientRect().width;\n setParentWidth(parent_1);\n }\n }, [windowWidth]);\n return /*#__PURE__*/React.createElement(ExposedFilterList, {\n ref: parentRef,\n \"data-testid\": generate(['exposed-filter-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ExposedFilterListContent$1, {\n parentWidth: parentWidth,\n className: className,\n allFilters: allFilters,\n exposedFilterIds: exposedFilterIds,\n onAllFilterClick: onAllFilterClick,\n onApplyChange: onApplyChange\n }));\n};\n\n/**\r\n * @param className?: string;\r\n * @param allFilters: IFilterV2[];\r\n * @param exposedFilterIds?: string[];\r\n * @param onAllFilterClick?: () => void;\r\n * @param onApplyChange: (filterInput: IFilterPayloadInputGroup | IFilterPayloadInputGroup[]) => void;\r\n */\nvar ExposedFilterList$2 = styled(ExposedFilterList$1)(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$k;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DrawerFooter = styled(View)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar templateObject_1$l;\n\n/**\r\n * @param children - (required)\r\n * @param onCancel - (required) - () => void - Function triggered on cancel\r\n * @param onClearFilters - (required) - () => void - Function triggered to clear all filters\r\n * @param disableClearFilters - (optional) - boolean - Clear All Filter button disabled\r\n * @param drawerName - (optional) - string\r\n * @param withOverlay - (optional) - boolean\r\n * @param title - (optional) - string\r\n * @param width - (optional) - number - Drawer width\r\n */\nvar Drawer = function (props) {\n var children = props.children,\n drawerName = props.drawerName,\n onCancel = props.onCancel,\n onClearFilters = props.onClearFilters,\n _a = props.disableClearFilters,\n disableClearFilters = _a === void 0 ? false : _a,\n _b = props.withOverlay,\n withOverlay = _b === void 0 ? true : _b,\n _c = props.title,\n title = _c === void 0 ? 'Filters' : _c,\n width = props.width;\n return /*#__PURE__*/React.createElement(Drawer$1, {\n \"data-testid\": generate(['filters-drawer'], props),\n label: title,\n withClose: true,\n drawerName: drawerName,\n renderFooter: function () {\n return /*#__PURE__*/React.createElement(DrawerFooter, null, onClearFilters && ( /*#__PURE__*/React.createElement(Button, {\n variant: \"borderless\",\n label: \"Clear All Filters\",\n onClick: onClearFilters,\n disabled: disableClearFilters\n })), /*#__PURE__*/React.createElement(Button, {\n variant: \"secondary\",\n label: \"Close\",\n onClick: onCancel\n }));\n },\n withOverlay: withOverlay,\n width: width\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar FilterList$1 = styled(View)(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterWrapper = styled(View)(templateObject_2$b || (templateObject_2$b = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$m, templateObject_2$b;\nvar FilterList$2 = function (props) {\n var className = props.className,\n filters = props.filters,\n onApplyChange = props.onApplyChange,\n _a = props.fullWidth,\n fullWidth = _a === void 0 ? false : _a,\n _b = props.insideDrawer,\n insideDrawer = _b === void 0 ? false : _b;\n return /*#__PURE__*/React.createElement(FilterList$1, {\n \"data-testid\": generate(['filter-list'], props),\n className: className\n }, filters.map(function (filter) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n var component = null;\n if (((_a = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _a === void 0 ? void 0 : _a.__typename) === 'FilterListLevelVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n insideDrawer: insideDrawer,\n fullWidth: fullWidth,\n \"data-testid\": \"filter-list--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n searchPlaceholder: ((_b = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _b === void 0 ? void 0 : _b.searchPlaceholder) || undefined,\n appliedFiltersCount: (_c = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _c === void 0 ? void 0 : _c.appliedFiltersCount,\n appliedFiltersLevel: (_d = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _d === void 0 ? void 0 : _d.appliedFilters,\n onApplyChange: onApplyChange\n });\n } else if (((_e = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _e === void 0 ? void 0 : _e.__typename) === 'FilterListVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n insideDrawer: insideDrawer,\n fullWidth: fullWidth,\n \"data-testid\": \"filter-list--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n searchPlaceholder: ((_f = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _f === void 0 ? void 0 : _f.searchPlaceholder) || undefined,\n filters: (_g = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _g === void 0 ? void 0 : _g.filterGroups,\n appliedFiltersCount: (_h = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _h === void 0 ? void 0 : _h.appliedFiltersCount,\n appliedFilters: (_j = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _j === void 0 ? void 0 : _j.appliedFilters,\n onApplyChange: onApplyChange\n });\n } else if (((_k = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _k === void 0 ? void 0 : _k.__typename) === 'FilterRangeVariant') {\n component = /*#__PURE__*/React.createElement(FilterButton$2, {\n insideDrawer: insideDrawer,\n fullWidth: fullWidth,\n \"data-testid\": \"filter-list--\" + filter.id,\n label: filter.label,\n variant: filter.type,\n info: (filter === null || filter === void 0 ? void 0 : filter.info) || undefined,\n groupKey: filter.code,\n range: (_l = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _l === void 0 ? void 0 : _l.range,\n activeRange: ((_m = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _m === void 0 ? void 0 : _m.activeRange) || undefined,\n onApplyChange: onApplyChange\n });\n }\n return component && ( /*#__PURE__*/React.createElement(FilterWrapper, {\n key: filter.id,\n \"data-testid\": \"exposed-filter-wrapper\"\n }, component));\n }));\n};\n\n/**\r\n * @param filters - (required) - IFilterV2[];\r\n * @param onApplyChange - (required) - (filterInput: IFilterPayloadInputGroup) => void;\r\n * @param onClose - (required) - () => void;\r\n * @param fullWidth - (optional) - boolean;\r\n * @param className - (optional) - string;\r\n */\nvar FilterList$3 = styled(FilterList$2)(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$n;\nvar AllFilters = styled(ThirdTier)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$o;\nvar atLeastOneFilterApplied = function (allFilters) {\n var atLeastOneApplied = true;\n allFilters.forEach(function (filter) {\n var _a, _b, _c, _d, _e;\n if (((_a = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _a === void 0 ? void 0 : _a.__typename) === 'FilterListVariant') {\n if (((_c = (_b = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _b === void 0 ? void 0 : _b.appliedFilters) === null || _c === void 0 ? void 0 : _c.length) > 0) {\n atLeastOneApplied = false;\n }\n }\n if (((_d = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _d === void 0 ? void 0 : _d.__typename) === 'FilterRangeVariant') {\n if (Object.keys(((_e = filter === null || filter === void 0 ? void 0 : filter.attributes) === null || _e === void 0 ? void 0 : _e.activeRange) || {}).length > 0) {\n atLeastOneApplied = false;\n }\n }\n });\n return atLeastOneApplied;\n};\nvar AllFilters$1 = function (props) {\n var className = props.className,\n allFilters = props.allFilters,\n exposedFilterIds = props.exposedFilterIds,\n onApplyChange = props.onApplyChange,\n onClearFilters = props.onClearFilters;\n var toggleDrawer = useDrawer().toggleDrawer;\n var _a = __read(React.useState(false), 2),\n showModal = _a[0],\n setShowModal = _a[1];\n var handleDrawerClose = function () {\n toggleDrawer('filters');\n };\n var handleClearFilters = function () {\n setShowModal(true);\n };\n var handleConfirmation = function (confirmed) {\n setShowModal(false);\n if (confirmed) {\n toggleDrawer('filters');\n onClearFilters();\n }\n };\n var renderList = function () {\n if (allFilters.length > 0) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Confirmation, {\n open: showModal,\n close: handleConfirmation,\n title: \"Are you sure?\",\n message: \"Your action will remove all applied filters.\",\n cancelText: \"No, Cancel\",\n submitText: \"Yes, Clear Filters\"\n }), /*#__PURE__*/React.createElement(FilterList$3, {\n fullWidth: true,\n filters: allFilters,\n onApplyChange: onApplyChange,\n onClose: handleDrawerClose,\n insideDrawer: true\n }));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(AllFilters, {\n \"data-testid\": generate(['all-filters'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SearchProvider, null, /*#__PURE__*/React.createElement(ExposedFilterList$2, {\n allFilters: allFilters,\n exposedFilterIds: exposedFilterIds,\n onApplyChange: onApplyChange,\n onAllFilterClick: handleDrawerClose\n }), /*#__PURE__*/React.createElement(Drawer, {\n disableClearFilters: atLeastOneFilterApplied(allFilters),\n title: \"Filters\",\n drawerName: \"filters\",\n onCancel: handleDrawerClose,\n onClearFilters: handleClearFilters\n }, renderList())));\n};\n\n/**\r\n * @param className?: string;\r\n * @param allFilters: IFilterV2[];\r\n * @param exposedFilterIds?: string[];\r\n * @param onApplyChange: (filterInput: IFilterPayloadInputGroup | IFilterPayloadInputGroup[]) => void;\r\n * @param onClearFilters: () => void;\r\n */\nvar AllFilters$2 = styled(AllFilters$1)(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$p;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ConfiguratorFilterList = styled(View)(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar IconWrapper = styled(View)(templateObject_2$c || (templateObject_2$c = __makeTemplateObject([\"\\n margin: 0 6px;\\n\"], [\"\\n margin: 0 6px;\\n\"])));\nvar templateObject_1$q, templateObject_2$c;\nvar ConfiguratorFilterList$1 = function (props) {\n var className = props.className,\n filters = props.filters,\n onApplyChange = props.onApplyChange;\n return /*#__PURE__*/React.createElement(ConfiguratorFilterList, {\n \"data-testid\": generate(['configurator-filter-list'], props),\n className: className\n }, filters.map(function (filter, index) {\n var _a;\n if (filter.attributes.__typename === 'FilterListVariant') {\n var lastFilter = index === filters.length - 1;\n var isDisabled = true;\n if (filter.attributes.filterGroups && filter.attributes.filterGroups.length > 0) {\n isDisabled = false;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, {\n key: filter.id\n }, /*#__PURE__*/React.createElement(FilterButton$2, {\n label: filter.label,\n variant: filter.type,\n info: filter.info || '',\n searchPlaceholder: ((_a = filter.attributes) === null || _a === void 0 ? void 0 : _a.searchPlaceholder) || undefined,\n filters: filter.attributes.filterGroups,\n appliedFiltersCount: filter.attributes.appliedFiltersCount,\n appliedFilters: filter.attributes.appliedFilters,\n onApplyChange: onApplyChange,\n groupKey: filter.code,\n disabled: isDisabled\n }), !lastFilter && ( /*#__PURE__*/React.createElement(IconWrapper, null, /*#__PURE__*/React.createElement(IconChevronRight, null))));\n }\n return null;\n }));\n};\nvar ConfiguratorFilterList$2 = styled(ConfiguratorFilterList$1)(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$r;\nexport { AllFilters$2 as AllFilters, ConfiguratorFilterList$2 as ConfiguratorFilterList, Context, FilterButton$2 as FilterButton, FilterContent, FilterFolderMenu$2 as FilterFolderMenu, FilterFooter$1 as FilterFooter, Filters$2 as Filters, FiltersProvider, IFilterGroupInputType, IFilterType, INITIAL_STATE, applyActiveFiltersToAllFilters, clearSavedFilters, filterPayloadToFilterInput, flattenTags, getAppliedFilters, getSavedFilters, hasFilters, mergeActiveFiltersAndFilterGroup, mergeFilterInputs, payloadToInput, removeFilter, saveFilters, useFilterQueryParams, useFilterStore, useFilters, useFiltersV2, useSetFilters };","import styled from 'styled-components';\nimport React from 'react';\nimport { useDrawer, View, Button, Drawer, generate, Loading } from '@acin/ui-core';\nimport { useLocation } from 'react-router-dom';\nimport * as Apollo from '@apollo/client';\nimport { gql } from '@apollo/client';\n\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***************************************************************************** */\n\nvar __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};\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\ntypeof 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};\nvar InspectorIdType;\n(function (InspectorIdType) {\n InspectorIdType[\"Control\"] = \"Control\";\n})(InspectorIdType || (InspectorIdType = {}));\n/**\r\n * Set the reviewer matches\r\n */\nvar onInspect = function (item) {\n return {\n type: 'OnInspect',\n item: item\n };\n};\nvar onSetHeader = function (header) {\n return {\n type: 'OnSetHeader',\n header: header || null\n };\n};\nvar onClear = function () {\n return {\n type: 'OnClear'\n };\n};\nvar INITIAL_STATE$1 = {\n headerLabel: null,\n inspect: null\n};\nvar reducer = function (state, action) {\n if (state === void 0) {\n state = INITIAL_STATE$1;\n }\n switch (action.type) {\n case 'OnClear':\n {\n return __assign({}, INITIAL_STATE$1);\n }\n case 'OnInspect':\n {\n return __assign(__assign({}, state), {\n inspect: action.item\n });\n }\n case 'OnSetHeader':\n {\n return __assign(__assign({}, state), {\n headerLabel: action.header\n });\n }\n default:\n return state;\n }\n};\nvar INITIAL_STATE = {\n onInspect: function () {},\n onSetHeader: function () {},\n onClear: function () {},\n inspect: null,\n headerLabel: null,\n isOpen: false\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar DRAWER_NAME = 'inspector';\nvar useInspector = function () {\n return React.useContext(Context);\n};\nfunction usePrevious(value) {\n var ref = React.useRef();\n React.useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n}\nvar InspectorProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useReducer(reducer, INITIAL_STATE$1), 2),\n _c = _b[0],\n headerLabel = _c.headerLabel,\n inspect = _c.inspect,\n dispatch = _b[1];\n var _d = useDrawer(),\n isOpen = _d.isOpen,\n setDrawerState = _d.setDrawerState;\n var location = useLocation();\n var prevLocation = usePrevious(location.pathname);\n var isInspectorOpen = isOpen(DRAWER_NAME);\n var handleOnSetHeader = React.useCallback(function (label) {\n dispatch(onSetHeader(label));\n }, []);\n var handleOnInspect = React.useCallback(function (data) {\n dispatch(onInspect(data));\n setDrawerState(true, DRAWER_NAME);\n }, [setDrawerState]);\n var handleOnClear = React.useCallback(function () {\n dispatch(onClear());\n setDrawerState(false, DRAWER_NAME);\n }, [setDrawerState]);\n React.useEffect(function () {\n if (location.pathname !== prevLocation) {\n handleOnClear();\n }\n }, [location.pathname, prevLocation, handleOnClear]);\n /**\r\n * On Close, we need to clear out the data\r\n */\n React.useEffect(function () {\n if (isInspectorOpen === false) {\n dispatch(onSetHeader(null));\n }\n }, [isInspectorOpen]);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n inspect: inspect,\n headerLabel: headerLabel,\n onSetHeader: handleOnSetHeader,\n onInspect: handleOnInspect,\n onClear: handleOnClear,\n isOpen: isInspectorOpen\n })\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar InspectorContent$1 = styled(View)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar LoadingWrapper = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n height: calc(100vh - 200px);\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n height: calc(100vh - 200px);\\n align-items: center;\\n\"])));\nvar Footer = styled(View)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar templateObject_1$3, templateObject_2$1, templateObject_3$1;\nvar InspectorFooter = function (props) {\n var onClear = props.onClear;\n var inspect = useInspector().inspect;\n var onView = function () {\n if ((inspect === null || inspect === void 0 ? void 0 : inspect.idType) === 'Control') {\n window.open(\"/calibrate/control/\".concat(inspect === null || inspect === void 0 ? void 0 : inspect.id));\n }\n };\n return /*#__PURE__*/React.createElement(Footer, null, /*#__PURE__*/React.createElement(Button, {\n label: \"Close\",\n variant: \"borderless\",\n onClick: onClear\n }), /*#__PURE__*/React.createElement(Button, {\n label: \"View Full Details\",\n variant: \"primary\",\n onClick: onView\n }));\n};\nvar InspectorDrawer = function (props) {\n var children = props.children,\n drawerName = props.drawerName;\n var _a = useInspector(),\n headerLabel = _a.headerLabel,\n onClear = _a.onClear,\n isOpen = _a.isOpen;\n return /*#__PURE__*/React.createElement(Drawer, {\n \"data-testid\": generate(['inspector-drawer'], props),\n label: headerLabel || '',\n withClose: true,\n drawerName: drawerName,\n renderFooter: function () {\n return /*#__PURE__*/React.createElement(InspectorFooter, {\n onClear: onClear\n });\n },\n withOverlay: false,\n width: 772\n }, isOpen ? children : null);\n};\nvar ControlInspectorViewClientControlFragmentDoc = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n fragment ControlInspectorViewClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n totalRelatedRiskInventories\\n reasonCode {\\n clientFacingName\\n }\\n }\\n\"], [\"\\n fragment ControlInspectorViewClientControl on ClientControl {\\n id\\n title\\n optionalDescription: description\\n optionalControlType: controlType\\n optionalControlOwner: controlOwner\\n optionalControlFrequency: controlFrequency\\n totalRelatedRiskInventories\\n reasonCode {\\n clientFacingName\\n }\\n }\\n\"])));\nvar AcinControlNetworkSignalScoreFragmentDoc = gql(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n fragment AcinControlNetworkSignalScore on NetworkSignalScore {\\n score\\n total\\n highlight\\n }\\n\"], [\"\\n fragment AcinControlNetworkSignalScore on NetworkSignalScore {\\n score\\n total\\n highlight\\n }\\n\"])));\nvar ControlInspectorViewCompareAcinControlFragmentDoc = gql(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareAcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n totalRelatedRiskInventories\\n totalRelatedRegulations\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n reasonCode {\\n clientFacingName\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareAcinControl on AcinControl {\\n id\\n title\\n review\\n identify\\n actions\\n controlType\\n controlOwner\\n controlFrequency\\n totalRelatedRiskInventories\\n totalRelatedRegulations\\n nss {\\n ...AcinControlNetworkSignalScore\\n }\\n reasonCode {\\n clientFacingName\\n }\\n }\\n \", \"\\n\"])), AcinControlNetworkSignalScoreFragmentDoc);\nvar ControlInspectorViewAlertMessageFragmentDoc = gql(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n fragment ControlInspectorViewAlertMessage on AlertMessage {\\n title\\n message\\n type\\n }\\n\"], [\"\\n fragment ControlInspectorViewAlertMessage on AlertMessage {\\n title\\n message\\n type\\n }\\n\"])));\nvar ControlInspectorViewCompareControlOneToOneFragmentDoc = gql(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareControlOneToOne on CompareControlOneToOne {\\n id\\n controlA {\\n ...ControlInspectorViewClientControl\\n }\\n controlB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareControlOneToOne on CompareControlOneToOne {\\n id\\n controlA {\\n ...ControlInspectorViewClientControl\\n }\\n controlB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), ControlInspectorViewClientControlFragmentDoc, ControlInspectorViewCompareAcinControlFragmentDoc, ControlInspectorViewAlertMessageFragmentDoc);\nvar ControlInspectorViewCompareControlOneToManyFragmentDoc = gql(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareControlOneToMany on CompareControlOneToMany {\\n id\\n controlA {\\n ...ControlInspectorViewClientControl\\n }\\n controlsB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareControlOneToMany on CompareControlOneToMany {\\n id\\n controlA {\\n ...ControlInspectorViewClientControl\\n }\\n controlsB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), ControlInspectorViewClientControlFragmentDoc, ControlInspectorViewCompareAcinControlFragmentDoc, ControlInspectorViewAlertMessageFragmentDoc);\nvar ControlInspectorViewCompareControlManyToOneFragmentDoc = gql(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareControlManyToOne on CompareControlManyToOne {\\n id\\n controlsA {\\n ...ControlInspectorViewClientControl\\n }\\n controlB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareControlManyToOne on CompareControlManyToOne {\\n id\\n controlsA {\\n ...ControlInspectorViewClientControl\\n }\\n controlB {\\n ...ControlInspectorViewCompareAcinControl\\n }\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n\"])), ControlInspectorViewClientControlFragmentDoc, ControlInspectorViewCompareAcinControlFragmentDoc, ControlInspectorViewAlertMessageFragmentDoc);\nvar ControlInspectorViewCompareEmptyFragmentDoc = gql(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareEmpty on CompareEmpty {\\n id\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareEmpty on CompareEmpty {\\n id\\n message {\\n ...ControlInspectorViewAlertMessage\\n }\\n }\\n \", \"\\n\"])), ControlInspectorViewAlertMessageFragmentDoc);\nvar ControlInspectorViewCompareControlFragmentDoc = gql(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n fragment ControlInspectorViewCompareControl on CompareControl {\\n ... on CompareControlOneToOne {\\n ...ControlInspectorViewCompareControlOneToOne\\n }\\n ... on CompareControlOneToMany {\\n ...ControlInspectorViewCompareControlOneToMany\\n }\\n ... on CompareControlManyToOne {\\n ...ControlInspectorViewCompareControlManyToOne\\n }\\n ... on CompareEmpty {\\n ...ControlInspectorViewCompareEmpty\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"], [\"\\n fragment ControlInspectorViewCompareControl on CompareControl {\\n ... on CompareControlOneToOne {\\n ...ControlInspectorViewCompareControlOneToOne\\n }\\n ... on CompareControlOneToMany {\\n ...ControlInspectorViewCompareControlOneToMany\\n }\\n ... on CompareControlManyToOne {\\n ...ControlInspectorViewCompareControlManyToOne\\n }\\n ... on CompareEmpty {\\n ...ControlInspectorViewCompareEmpty\\n }\\n }\\n \", \"\\n \", \"\\n \", \"\\n \", \"\\n\"])), ControlInspectorViewCompareControlOneToOneFragmentDoc, ControlInspectorViewCompareControlOneToManyFragmentDoc, ControlInspectorViewCompareControlManyToOneFragmentDoc, ControlInspectorViewCompareEmptyFragmentDoc);\nvar InspectorResultFragmentDoc = gql(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n fragment InspectorResult on InspectorPage {\\n content {\\n ... on ControlInspectorView {\\n id\\n compare {\\n ...ControlInspectorViewCompareControl\\n }\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n fragment InspectorResult on InspectorPage {\\n content {\\n ... on ControlInspectorView {\\n id\\n compare {\\n ...ControlInspectorViewCompareControl\\n }\\n }\\n }\\n }\\n \", \"\\n\"])), ControlInspectorViewCompareControlFragmentDoc);\nvar templateObject_1$2, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;\nvar defaultOptions = {};\nvar InspectDocument = gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n query inspect($input: InspectorInput!) {\\n inspect(input: $input) {\\n ...InspectorResult\\n }\\n }\\n \", \"\\n\"], [\"\\n query inspect($input: InspectorInput!) {\\n inspect(input: $input) {\\n ...InspectorResult\\n }\\n }\\n \", \"\\n\"])), InspectorResultFragmentDoc);\n/**\r\n * __useInspectQuery__\r\n *\r\n * To run a query within a React component, call `useInspectQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useInspectQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useInspectQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useInspectQuery(baseOptions) {\n var options = __assign(__assign({}, defaultOptions), baseOptions);\n return Apollo.useQuery(InspectDocument, options);\n}\nvar templateObject_1$1;\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n})(IFilterType || (IFilterType = {}));\nvar IGlobalSearchResultType;\n(function (IGlobalSearchResultType) {\n IGlobalSearchResultType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n IGlobalSearchResultType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultType[\"RegAlert\"] = \"REG_ALERT\";\n})(IGlobalSearchResultType || (IGlobalSearchResultType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"All\"] = \"ALL\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n})(IInsightType || (IInsightType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n IProductType[\"Trading\"] = \"TRADING\";\n})(IProductType || (IProductType = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n IReadPermission[\"Private\"] = \"PRIVATE\";\n})(IReadPermission || (IReadPermission = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Positive\"] = \"POSITIVE\";\n})(ISentiment || (ISentiment = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Inner\"] = \"INNER\";\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Child\"] = \"CHILD\";\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n})(ITableRowType || (ITableRowType = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n})(ITableVariant || (ITableVariant = {}));\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Dark\"] = \"DARK\";\n IUiTheme[\"Default\"] = \"DEFAULT\";\n})(IUiTheme || (IUiTheme = {}));\nvar InspectorContent = function (props) {\n var className = props.className,\n renderContent = props.renderContent;\n var _a = useInspector(),\n onSetHeader = _a.onSetHeader,\n inspect = _a.inspect;\n var _b = useInspectQuery({\n variables: {\n input: {\n id: (inspect === null || inspect === void 0 ? void 0 : inspect.id) || '',\n idType: (inspect === null || inspect === void 0 ? void 0 : inspect.idType) || IInspectorIdType.Control\n }\n }\n }),\n data = _b.data,\n loading = _b.loading;\n var view = !loading && data && inspect && data.inspect && data.inspect.content && data.inspect.content.__typename ? renderContent({\n typename: data.inspect.content.__typename,\n data: data.inspect,\n inspect: inspect\n }) : null;\n React.useEffect(function () {\n if (view === null || view === void 0 ? void 0 : view.title) {\n onSetHeader(view.title);\n }\n }, [view === null || view === void 0 ? void 0 : view.title, onSetHeader]);\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, null, /*#__PURE__*/React.createElement(Loading, {\n withOverlay: true\n }));\n }\n if (!loading && (data === null || data === void 0 ? void 0 : data.inspect.content)) {\n return /*#__PURE__*/React.createElement(InspectorContent$1, {\n \"data-testid\": generate(['inspector'], props),\n className: className\n }, view === null || view === void 0 ? void 0 : view.content);\n }\n return null;\n};\nvar Inspector$1 = function (props) {\n var renderContent = props.renderContent;\n return /*#__PURE__*/React.createElement(InspectorDrawer, {\n drawerName: DRAWER_NAME\n }, /*#__PURE__*/React.createElement(InspectorContent, {\n \"data-testid\": generate(['inspector-content'], props),\n renderContent: renderContent\n }));\n};\nvar Inspector = styled(Inspector$1)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1;\nexport { Context, DRAWER_NAME, INITIAL_STATE, Inspector, InspectorProvider, useInspector };","import styled from 'styled-components';\nimport React from 'react';\nimport { View, Select, Text, generate, Pagination as Pagination$3 } from '@acin/ui-core';\n\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***************************************************************************** */\n\nvar __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};\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar ItemsPerPage = styled(View)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"])));\nvar Dropdown = styled(Select)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: \", \";\\n\"], [\"\\n width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(20);\n});\nvar Label = styled(Text)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1, templateObject_2, templateObject_3;\nvar ItemsPerPage$1 = function (props) {\n var className = props.className,\n _a = props.itemName,\n itemName = _a === void 0 ? 'Item' : _a,\n itemNamePlural = props.itemNamePlural,\n _b = props.options,\n options = _b === void 0 ? [{\n label: '25',\n value: 25\n }] : _b,\n onChange = props.onChange,\n activeOption = props.activeOption;\n var getItemName = function () {\n return itemNamePlural ? itemNamePlural : itemName + \"s\";\n };\n var singleOption = options.length < 2;\n return /*#__PURE__*/React.createElement(ItemsPerPage, {\n \"data-testid\": generate(['items-per-page'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Label, null, getItemName(), \" per Page:\"), /*#__PURE__*/React.createElement(Dropdown, {\n onChange: onChange,\n options: options,\n value: activeOption,\n disabled: singleOption\n }));\n};\nvar ItemsPerPage$2 = styled(ItemsPerPage$1)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ResultsCount = styled(View)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar Label$1 = styled(Text)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$2, templateObject_2$1;\nvar ResultsCount$1 = function (props) {\n var className = props.className,\n range = props.range,\n total = props.total;\n var renderResults = function () {\n if (range && total) {\n return \"Results: \" + range + \" of \" + total;\n }\n return 'No Results';\n };\n return /*#__PURE__*/React.createElement(ResultsCount, {\n \"data-testid\": generate(['results-count'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Label$1, null, renderResults()));\n};\nvar ResultsCount$2 = styled(ResultsCount$1)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3;\nvar INITIAL_STATE = {\n totalResults: 0,\n totalPages: 1,\n activePage: 1,\n itemsPerPage: 25,\n range: '',\n onSetTotalResults: function () {},\n onSetTotalPages: function () {},\n onSetActivePage: function () {},\n onSetRange: function () {},\n onSetItemsPerPage: function () {}\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar usePagination = function () {\n return React.useContext(Context);\n};\nvar PaginationProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(INITIAL_STATE.totalResults), 2),\n totalResults = _b[0],\n setTotalResults = _b[1];\n var _c = __read(React.useState(INITIAL_STATE.totalPages), 2),\n totalPages = _c[0],\n setTotalPages = _c[1];\n var _d = __read(React.useState(INITIAL_STATE.activePage), 2),\n activePage = _d[0],\n setActivePage = _d[1];\n var _e = __read(React.useState(INITIAL_STATE.itemsPerPage), 2),\n itemsPerPage = _e[0],\n setItemsPerPage = _e[1];\n var _f = __read(React.useState(INITIAL_STATE.range), 2),\n range = _f[0],\n setRange = _f[1];\n var onSetTotalResults = React.useCallback(function (data) {\n setTotalResults(data);\n }, []);\n var onSetTotalPages = React.useCallback(function (data) {\n setTotalPages(data);\n }, []);\n var onSetActivePage = React.useCallback(function (data) {\n setActivePage(data);\n }, []);\n var onSetRange = React.useCallback(function (data) {\n setRange(data);\n }, []);\n var onSetItemsPerPage = React.useCallback(function (data) {\n setItemsPerPage(data);\n }, []);\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n totalResults: totalResults,\n totalPages: totalPages,\n activePage: activePage,\n itemsPerPage: itemsPerPage,\n range: range,\n onSetTotalResults: onSetTotalResults,\n onSetTotalPages: onSetTotalPages,\n onSetActivePage: onSetActivePage,\n onSetRange: onSetRange,\n onSetItemsPerPage: onSetItemsPerPage\n })\n }, children);\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar Pagination = styled(View)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar Container = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n\"])));\nvar Header = styled(Container)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Title = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\"], [\"\"])));\nvar Footer = styled(Container)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MockItem = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n background: \", \";\\n padding: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n background: \", \";\\n padding: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$4, templateObject_2$2, templateObject_3$1, templateObject_4, templateObject_5, templateObject_6;\nvar defaultOptions = [{\n label: '25',\n value: 25\n}, {\n label: '50',\n value: 50\n}, {\n label: '100',\n value: 100\n}];\nvar Header$1 = function (props) {\n var className = props.className,\n title = props.title,\n itemName = props.itemName,\n itemNamePlural = props.itemNamePlural,\n options = props.options;\n var _a = usePagination(),\n onSetItemsPerPage = _a.onSetItemsPerPage,\n itemsPerPage = _a.itemsPerPage,\n onSetActivePage = _a.onSetActivePage;\n var onChangeItemsPerPage = function (value) {\n onSetActivePage(1);\n onSetItemsPerPage(value);\n };\n return /*#__PURE__*/React.createElement(Header, {\n \"data-testid\": generate(['pagination--header'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Title, null, title && title), /*#__PURE__*/React.createElement(ItemsPerPage$2, {\n options: options || defaultOptions,\n onChange: function (value) {\n return onChangeItemsPerPage(value);\n },\n activeOption: itemsPerPage,\n itemName: itemName,\n itemNamePlural: itemNamePlural\n }));\n};\nvar Footer$1 = function (props) {\n var className = props.className;\n var _a = usePagination(),\n totalResults = _a.totalResults,\n range = _a.range,\n activePage = _a.activePage,\n totalPages = _a.totalPages,\n onSetActivePage = _a.onSetActivePage;\n return /*#__PURE__*/React.createElement(Footer, {\n \"data-testid\": generate(['pagination--footer'], props),\n className: className\n }, /*#__PURE__*/React.createElement(ResultsCount$2, {\n range: range,\n total: totalResults\n }), /*#__PURE__*/React.createElement(Pagination$3, {\n onClick: function (value) {\n return onSetActivePage(value);\n },\n active: activePage,\n length: totalPages\n }));\n};\nvar Pagination$1 = function (props) {\n var className = props.className,\n children = props.children,\n title = props.title,\n options = props.options;\n return /*#__PURE__*/React.createElement(Pagination, {\n \"data-testid\": generate(['pagination'], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header$1, {\n title: title,\n options: options\n }), children, /*#__PURE__*/React.createElement(Footer$1, null));\n};\nvar Pagination$2 = styled(Pagination$1)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\n// Export fragment / input etc.\n\nexport { Context, INITIAL_STATE, ItemsPerPage$2 as ItemsPerPage, Pagination$2 as Pagination, PaginationProvider, ResultsCount$2 as ResultsCount, usePagination };","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import styled, { css } from 'styled-components';\nimport React from 'react';\nimport { themeHelpers, Card, View, Button, Link, Heading, Text, Favourite, useThemeProvider, generate, Loading, DataTable, ErrorMessage, useDrawer, CompactHeader, FirstTier, ThirdTier, IconButton, LinkList, Alert, Select, ChartLegend, Markdown, IconDownload, PageWrapper, SecondTier } from '@acin/ui-core';\nimport * as Apollo from '@apollo/client';\nimport { gql } from '@apollo/client';\nimport { isValid, parseISO, format } from 'date-fns';\nimport { usePagination, Pagination, PaginationProvider } from '@acin/pagination';\nimport { flattenTags, FiltersProvider, Filters, mergeFilterInputs } from '@acin/filters';\nimport { ISortDirection as ISortDirection$1, ReportDrawer, TableHeader, TableRow } from '@acin/acin-terminal-risks-and-controls';\nimport { VerticalRefresherChart, RefresherChart, DonutChart } from '@acin/acin-charts';\nimport { useAuth } from '@acin/user-accounts';\nimport { useDownload } from '@acin/download';\n\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***************************************************************************** */\n\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar nestedContainerBackground = themeHelpers.nestedContainerBackground,\n containerBackground = themeHelpers.containerBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligence$2 = styled(Card)(templateObject_1$M || (templateObject_1$M = __makeTemplateObject([\"\\n height: 100%;\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n height: 100%;\\n padding: \", \";\\n display: flex;\\n flex-direction: column;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar Header$2 = styled(View)(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar Feed = styled(View)(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject([\"\\n display: flex;\\n overflow-y: auto;\\n flex: 1 1 auto;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n overflow-y: auto;\\n flex: 1 1 auto;\\n flex-direction: column;\\n\"])));\nvar ViewAll = styled(Button)(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar colorVariant = function (theme, variant) {\n switch (variant) {\n default:\n case 'network-update':\n return css(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n });\n case 'network-scenario':\n return css(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.info.getValue().main;\n });\n case 'regulatory-alert':\n return css(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.warning.getValue().main;\n });\n }\n};\nvar RiskIntelligenceCard$1 = styled(View)(templateObject_8$3 || (templateObject_8$3 = __makeTemplateObject([\"\\n position: relative;\\n flex: 1;\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n border-radius: \", \";\\n \", \";\\n\\n \", \"\\n\\n &:before {\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n left: \", \";\\n width: \", \";\\n border-radius: 2px;\\n content: '';\\n display: block;\\n \", \";\\n }\\n\\n &:hover,\\n &:focus,\\n &:active {\\n outline: \", \";\\n outline-offset: -2px;\\n }\\n\"], [\"\\n position: relative;\\n flex: 1;\\n display: flex;\\n flex-direction: row;\\n align-items: stretch;\\n border-radius: \", \";\\n \", \";\\n\\n \", \"\\n\\n &:before {\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n left: \", \";\\n width: \", \";\\n border-radius: 2px;\\n content: '';\\n display: block;\\n \", \";\\n }\\n\\n &:hover,\\n &:focus,\\n &:active {\\n outline: \", \";\\n outline-offset: -2px;\\n }\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.isNested && nestedContainerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return colorVariant(p.theme, p.variant);\n}, function (p) {\n return p.theme.colors.primary.getValue(600).main + \" solid 2px\";\n});\nvar NavigationWrapper = styled(Link)(templateObject_9$3 || (templateObject_9$3 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n justify-content: start;\\n align-items: flex-start;\\n flex: 1 auto;\\n padding: \", \";\\n padding-left: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: start;\\n align-items: flex-start;\\n flex: 1 auto;\\n padding: \", \";\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Title$3 = styled(Heading)(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(0);\n});\nvar Details = styled(Text)(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DetailsWrapper = styled(View)(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nstyled(View)(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject([\"\\n position: relative;\\n\\n &:after {\\n content: '|';\\n margin-right: \", \";\\n margin-left: \", \";\\n color: \", \";\\n }\\n\"], [\"\\n position: relative;\\n\\n &:after {\\n content: '|';\\n margin-right: \", \";\\n margin-left: \", \";\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar Description = styled(Text)(templateObject_14$2 || (templateObject_14$2 = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Label = styled(Text)(templateObject_15$2 || (templateObject_15$2 = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Content$3 = styled(Text)(templateObject_16$2 || (templateObject_16$2 = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n white-space: nowrap;\\n\\n &:not(:last-child):after {\\n content: '|';\\n margin-left: \", \";\\n color: \", \";\\n }\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n white-space: nowrap;\\n\\n &:not(:last-child):after {\\n content: '|';\\n margin-left: \", \";\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar Wrapper$1 = styled(View)(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n flex-wrap: wrap;\\n\"])));\nstyled(View)(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n\"])));\nvar Star = styled(Favourite)(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n padding-top: \", \";\\n padding-right: \", \";\\n align-items: start;\\n\"], [\"\\n padding-top: \", \";\\n padding-right: \", \";\\n align-items: start;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar CardWrapper = styled(View)(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar templateObject_1$M, templateObject_2$a, templateObject_3$7, templateObject_4$6, templateObject_5$4, templateObject_6$4, templateObject_7$3, templateObject_8$3, templateObject_9$3, templateObject_10$3, templateObject_11$3, templateObject_12$2, templateObject_13$2, templateObject_14$2, templateObject_15$2, templateObject_16$2, templateObject_17, templateObject_18, templateObject_19, templateObject_20;\nvar DashboardRiskIntelligenceNetworkScenarioFragmentDoc = gql(templateObject_1$L || (templateObject_1$L = __makeTemplateObject([\"\\n fragment DashboardRiskIntelligenceNetworkScenario on RiskIntelligenceNetworkScenario {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"], [\"\\n fragment DashboardRiskIntelligenceNetworkScenario on RiskIntelligenceNetworkScenario {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"])));\nvar templateObject_1$L;\nvar DashboardRiskIntelligenceNetworkRegulatoryAlertFragmentDoc = gql(templateObject_1$K || (templateObject_1$K = __makeTemplateObject([\"\\n fragment DashboardRiskIntelligenceNetworkRegulatoryAlert on RiskIntelligenceRegulatoryAlert {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"], [\"\\n fragment DashboardRiskIntelligenceNetworkRegulatoryAlert on RiskIntelligenceRegulatoryAlert {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"])));\nvar templateObject_1$K;\nvar DashboardRiskIntelligenceNetworkUpdateFragmentDoc = gql(templateObject_1$J || (templateObject_1$J = __makeTemplateObject([\"\\n fragment DashboardRiskIntelligenceNetworkUpdate on RiskIntelligenceNetworkUpdate {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n status\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"], [\"\\n fragment DashboardRiskIntelligenceNetworkUpdate on RiskIntelligenceNetworkUpdate {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n status\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"])));\nvar templateObject_1$J;\nvar DashboardRiskIntelligenceRelatedRiskIntelligenceFragmentDoc = gql(templateObject_1$I || (templateObject_1$I = __makeTemplateObject([\"\\n fragment DashboardRiskIntelligenceRelatedRiskIntelligence on RelatedRiskIntelligence {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n hasAnalyticsData\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"], [\"\\n fragment DashboardRiskIntelligenceRelatedRiskIntelligence on RelatedRiskIntelligence {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n hasAnalyticsData\\n favourite\\n impact {\\n totalImpactedRisks\\n totalImpactedControls\\n }\\n}\\n \"])));\nvar templateObject_1$I;\nvar DashboardRiskIntelligenceFragmentDoc = gql(templateObject_1$H || (templateObject_1$H = __makeTemplateObject([\"\\n fragment DashboardRiskIntelligence on RiskIntelligence {\\n ... on RiskIntelligenceNetworkScenario {\\n ...DashboardRiskIntelligenceNetworkScenario\\n }\\n ... on RiskIntelligenceRegulatoryAlert {\\n ...DashboardRiskIntelligenceNetworkRegulatoryAlert\\n }\\n ... on RiskIntelligenceNetworkUpdate {\\n status\\n ...DashboardRiskIntelligenceNetworkUpdate\\n }\\n ... on RelatedRiskIntelligence {\\n ...DashboardRiskIntelligenceRelatedRiskIntelligence\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\"], [\"\\n fragment DashboardRiskIntelligence on RiskIntelligence {\\n ... on RiskIntelligenceNetworkScenario {\\n ...DashboardRiskIntelligenceNetworkScenario\\n }\\n ... on RiskIntelligenceRegulatoryAlert {\\n ...DashboardRiskIntelligenceNetworkRegulatoryAlert\\n }\\n ... on RiskIntelligenceNetworkUpdate {\\n status\\n ...DashboardRiskIntelligenceNetworkUpdate\\n }\\n ... on RelatedRiskIntelligence {\\n ...DashboardRiskIntelligenceRelatedRiskIntelligence\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\\n\", \"\"])), DashboardRiskIntelligenceNetworkScenarioFragmentDoc, DashboardRiskIntelligenceNetworkRegulatoryAlertFragmentDoc, DashboardRiskIntelligenceNetworkUpdateFragmentDoc, DashboardRiskIntelligenceRelatedRiskIntelligenceFragmentDoc);\nvar templateObject_1$H;\nvar GetRiskIntelligenceDocument = gql(templateObject_1$G || (templateObject_1$G = __makeTemplateObject([\"\\n query getRiskIntelligence($input: RiskIntelligenceInput) {\\n getRiskIntelligence(input: $input) {\\n nodes {\\n ...DashboardRiskIntelligence\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getRiskIntelligence($input: RiskIntelligenceInput) {\\n getRiskIntelligence(input: $input) {\\n nodes {\\n ...DashboardRiskIntelligence\\n }\\n }\\n}\\n \", \"\"])), DashboardRiskIntelligenceFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceDocument, baseOptions);\n}\nvar templateObject_1$G;\nvar ToggleRiskIntelligenceFavouriteDocument = gql(templateObject_1$F || (templateObject_1$F = __makeTemplateObject([\"\\n mutation toggleRiskIntelligenceFavourite($id: ID!, $favourite: Boolean!) {\\n toggleRiskIntelligenceFavourite(id: $id, favourite: $favourite) {\\n id\\n favourite\\n }\\n}\\n \"], [\"\\n mutation toggleRiskIntelligenceFavourite($id: ID!, $favourite: Boolean!) {\\n toggleRiskIntelligenceFavourite(id: $id, favourite: $favourite) {\\n id\\n favourite\\n }\\n}\\n \"])));\n/**\r\n * __useToggleRiskIntelligenceFavouriteMutation__\r\n *\r\n * To run a mutation, you first call `useToggleRiskIntelligenceFavouriteMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useToggleRiskIntelligenceFavouriteMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [toggleRiskIntelligenceFavouriteMutation, { data, loading, error }] = useToggleRiskIntelligenceFavouriteMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * favourite: // value for 'favourite'\r\n * },\r\n * });\r\n */\nfunction useToggleRiskIntelligenceFavouriteMutation(baseOptions) {\n return Apollo.useMutation(ToggleRiskIntelligenceFavouriteDocument, baseOptions);\n}\nvar templateObject_1$F;\nfunction validateDate(publishDate) {\n var dateIsValid = isValid(new Date(publishDate));\n if (!dateIsValid) {\n return null;\n }\n return parseISO(publishDate);\n}\nvar renderImpacted = function (impactedData) {\n var showImpacted = ((impactedData === null || impactedData === void 0 ? void 0 : impactedData.totalImpactedRisks) || (impactedData === null || impactedData === void 0 ? void 0 : impactedData.totalImpactedControls)) > 0;\n return showImpacted ? ( /*#__PURE__*/React.createElement(Wrapper$1, {\n \"data-testid\": \"impacted-risks-and-controls\"\n }, /*#__PURE__*/React.createElement(Label, {\n size: -1,\n weight: 500\n }, \"Impacted:\"), impactedData.totalImpactedRisks ? ( /*#__PURE__*/React.createElement(Content$3, {\n size: -1,\n weight: 500\n }, impactedData.totalImpactedRisks > 1 ? \" \" + impactedData.totalImpactedRisks + \" Network Risks\" : ' 1 Network Risk')) : null, impactedData.totalImpactedControls ? ( /*#__PURE__*/React.createElement(Content$3, {\n size: -1,\n weight: 500\n }, impactedData.totalImpactedControls > 1 ? \" \" + impactedData.totalImpactedControls + \" Network Controls\" : ' 1 Network Control')) : null)) : null;\n};\nvar NetworkScenario = function (props) {\n var item = props.item,\n showFavourite = props.showFavourite,\n onNavigate = props.onNavigate,\n isNested = props.isNested;\n var id = item.id,\n favourite = item.favourite;\n var activeTheme = useThemeProvider().activeTheme;\n var date = validateDate(item.publishDate);\n var _a = __read(useToggleRiskIntelligenceFavouriteMutation(), 1),\n mutation = _a[0];\n var toggleFavourite = function () {\n mutation({\n variables: {\n id: id,\n favourite: !favourite\n },\n optimisticResponse: {\n __typename: 'Mutation',\n toggleRiskIntelligenceFavourite: {\n id: id,\n favourite: !favourite,\n __typename: 'RiskIntelligenceNetworkScenario'\n }\n }\n });\n };\n var handleOnNavigate = function () {\n if (onNavigate && item.__typename) {\n onNavigate(item.id, item.__typename);\n }\n };\n return /*#__PURE__*/React.createElement(RiskIntelligenceCard$1, {\n \"data-testid\": generate(['risk-intelligence--network-scenario'], props),\n variant: \"network-scenario\",\n activeTheme: activeTheme,\n isNested: isNested\n }, /*#__PURE__*/React.createElement(NavigationWrapper, {\n noStyle: true,\n onClick: handleOnNavigate\n }, /*#__PURE__*/React.createElement(DetailsWrapper, null, /*#__PURE__*/React.createElement(Details, {\n size: -1,\n weight: 400\n }, \"Network Scenario | \", date && format(date, 'ccc d MMM yyyy, kk:mm'))), /*#__PURE__*/React.createElement(Title$3, {\n size: 0,\n weight: 500\n }, item.title), /*#__PURE__*/React.createElement(Description, {\n size: -1,\n \"data-testid\": \"network-scenario-description\"\n }, item.description), renderImpacted(item.impact)), showFavourite && /*#__PURE__*/React.createElement(Star, {\n onClick: toggleFavourite,\n value: favourite\n }));\n};\nvar RegulatoryAlert = function (props) {\n var item = props.item,\n showFavourite = props.showFavourite,\n onNavigate = props.onNavigate,\n isNested = props.isNested;\n var activeTheme = useThemeProvider().activeTheme;\n var id = item.id,\n favourite = item.favourite;\n var date = validateDate(item.publishDate);\n var _a = __read(useToggleRiskIntelligenceFavouriteMutation(), 1),\n mutation = _a[0];\n var toggleFavourite = function () {\n mutation({\n variables: {\n id: id,\n favourite: !favourite\n },\n optimisticResponse: {\n __typename: 'Mutation',\n toggleRiskIntelligenceFavourite: {\n id: id,\n favourite: !favourite,\n __typename: 'RiskIntelligenceRegulatoryAlert'\n }\n }\n });\n };\n var handleOnNavigate = function () {\n if (onNavigate && item.__typename) {\n onNavigate(item.id, item.__typename);\n }\n };\n return /*#__PURE__*/React.createElement(RiskIntelligenceCard$1, {\n \"data-testid\": generate(['risk-intelligence--regulatory-alert'], props),\n variant: \"regulatory-alert\",\n activeTheme: activeTheme,\n isNested: isNested\n }, /*#__PURE__*/React.createElement(NavigationWrapper, {\n noStyle: true,\n onClick: handleOnNavigate\n }, /*#__PURE__*/React.createElement(DetailsWrapper, null, /*#__PURE__*/React.createElement(Details, {\n size: -1,\n weight: 400\n }, \"Regulatory Alert | \", date && format(date, 'ccc d MMM yyyy, kk:mm'))), /*#__PURE__*/React.createElement(Title$3, {\n size: 0,\n weight: 500\n }, item.title), /*#__PURE__*/React.createElement(Description, {\n size: -1,\n \"data-testid\": \"regulatory-alert-description\"\n }, item.description)), showFavourite && /*#__PURE__*/React.createElement(Star, {\n onClick: toggleFavourite,\n value: favourite\n }));\n};\nvar NetworkUpdate = function (props) {\n var item = props.item,\n showFavourite = props.showFavourite,\n onNavigate = props.onNavigate,\n isNested = props.isNested;\n var id = item.id,\n favourite = item.favourite;\n var activeTheme = useThemeProvider().activeTheme;\n var date = validateDate(item.publishDate);\n var _a = __read(useToggleRiskIntelligenceFavouriteMutation(), 1),\n mutation = _a[0];\n var toggleFavourite = function () {\n mutation({\n variables: {\n id: id,\n favourite: !favourite\n },\n optimisticResponse: {\n __typename: 'Mutation',\n toggleRiskIntelligenceFavourite: {\n id: id,\n favourite: !favourite,\n __typename: 'RiskIntelligenceNetworkUpdate'\n }\n }\n });\n };\n var handleOnNavigate = function () {\n if (onNavigate && item.__typename) {\n onNavigate(item.id, item.__typename);\n }\n };\n return /*#__PURE__*/React.createElement(RiskIntelligenceCard$1, {\n \"data-testid\": generate(['risk-intelligence--network-update'], props),\n variant: \"network-update\",\n activeTheme: activeTheme,\n isNested: isNested\n }, /*#__PURE__*/React.createElement(NavigationWrapper, {\n noStyle: true,\n onClick: handleOnNavigate\n }, /*#__PURE__*/React.createElement(DetailsWrapper, null, /*#__PURE__*/React.createElement(Details, {\n size: -1,\n weight: 400\n }, \"Network Update | \", date && format(date, 'ccc d MMM yyyy, kk:mm'))), /*#__PURE__*/React.createElement(Title$3, {\n size: 0,\n weight: 500\n }, item.title), /*#__PURE__*/React.createElement(Description, {\n size: -1,\n \"data-testid\": \"network-update-description\"\n }, item.description), renderImpacted(item.impact)), showFavourite && /*#__PURE__*/React.createElement(Star, {\n onClick: toggleFavourite,\n value: favourite\n }));\n};\nvar RiskIntelligenceCard = function (props) {\n var showFavourite = props.showFavourite,\n item = props.item,\n onNavigate = props.onNavigate,\n isNested = props.isNested;\n var renderCard = function () {\n switch (item === null || item === void 0 ? void 0 : item.__typename) {\n case 'RiskIntelligenceNetworkScenario':\n return /*#__PURE__*/React.createElement(NetworkScenario, {\n key: item.id,\n item: item,\n showFavourite: showFavourite,\n onNavigate: onNavigate,\n isNested: isNested\n });\n case 'RiskIntelligenceRegulatoryAlert':\n return /*#__PURE__*/React.createElement(RegulatoryAlert, {\n key: item.id,\n item: item,\n showFavourite: showFavourite,\n onNavigate: onNavigate,\n isNested: isNested\n });\n case 'RiskIntelligenceNetworkUpdate':\n return /*#__PURE__*/React.createElement(NetworkUpdate, {\n key: item.id,\n item: item,\n showFavourite: showFavourite,\n onNavigate: onNavigate,\n isNested: isNested\n });\n }\n };\n return /*#__PURE__*/React.createElement(CardWrapper, {\n \"data-testid\": generate(['risk-intelligence-card'], props)\n }, renderCard());\n};\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Default\"] = \"DEFAULT\";\n IUiTheme[\"Dark\"] = \"DARK\";\n})(IUiTheme || (IUiTheme = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n})(ITableVariant || (ITableVariant = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IEntityAssigneesType;\n(function (IEntityAssigneesType) {\n IEntityAssigneesType[\"Control\"] = \"CONTROL\";\n IEntityAssigneesType[\"Cluster\"] = \"CLUSTER\";\n})(IEntityAssigneesType || (IEntityAssigneesType = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IMatchingJobControlAction;\n(function (IMatchingJobControlAction) {\n IMatchingJobControlAction[\"Approved\"] = \"APPROVED\";\n IMatchingJobControlAction[\"AutoMatched\"] = \"AUTO_MATCHED\";\n IMatchingJobControlAction[\"Proposed\"] = \"PROPOSED\";\n IMatchingJobControlAction[\"Inherited\"] = \"INHERITED\";\n})(IMatchingJobControlAction || (IMatchingJobControlAction = {}));\nvar IMatchingJobControlStatus;\n(function (IMatchingJobControlStatus) {\n IMatchingJobControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobControlStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobControlStatus[\"PreConnected\"] = \"PRE_CONNECTED\";\n IMatchingJobControlStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobControlStatus[\"Approved\"] = \"APPROVED\";\n})(IMatchingJobControlStatus || (IMatchingJobControlStatus = {}));\nvar IMatchingJobQualityLevel;\n(function (IMatchingJobQualityLevel) {\n IMatchingJobQualityLevel[\"Clear\"] = \"CLEAR\";\n IMatchingJobQualityLevel[\"Unclear\"] = \"UNCLEAR\";\n})(IMatchingJobQualityLevel || (IMatchingJobQualityLevel = {}));\nvar IMatchingJobStatus;\n(function (IMatchingJobStatus) {\n IMatchingJobStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobStatus || (IMatchingJobStatus = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar IUnmatchedIndexControlStatus;\n(function (IUnmatchedIndexControlStatus) {\n IUnmatchedIndexControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IUnmatchedIndexControlStatus[\"Missing\"] = \"MISSING\";\n})(IUnmatchedIndexControlStatus || (IUnmatchedIndexControlStatus = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n IFilterType[\"ListLevel\"] = \"LIST_LEVEL\";\n})(IFilterType || (IFilterType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Positive\"] = \"POSITIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n})(ISentiment || (ISentiment = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n IInsightMetricType[\"All\"] = \"ALL\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n})(IInsightType || (IInsightType = {}));\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar IControlQualityScore;\n(function (IControlQualityScore) {\n IControlQualityScore[\"Unclear\"] = \"UNCLEAR\";\n IControlQualityScore[\"Clear\"] = \"CLEAR\";\n})(IControlQualityScore || (IControlQualityScore = {}));\nvar IDataQualityInputTextVariant;\n(function (IDataQualityInputTextVariant) {\n IDataQualityInputTextVariant[\"Control\"] = \"CONTROL\";\n IDataQualityInputTextVariant[\"Policy\"] = \"POLICY\";\n IDataQualityInputTextVariant[\"Regulation\"] = \"REGULATION\";\n})(IDataQualityInputTextVariant || (IDataQualityInputTextVariant = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n ITableHeaderType[\"Inner\"] = \"INNER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n ITableRowType[\"Child\"] = \"CHILD\";\n})(ITableRowType || (ITableRowType = {}));\nvar IRiskIntelligenceAlertInsightType;\n(function (IRiskIntelligenceAlertInsightType) {\n IRiskIntelligenceAlertInsightType[\"BusinessLine\"] = \"BUSINESS_LINE\";\n IRiskIntelligenceAlertInsightType[\"Index\"] = \"INDEX\";\n})(IRiskIntelligenceAlertInsightType || (IRiskIntelligenceAlertInsightType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IGlobalSearchResultAssetType;\n(function (IGlobalSearchResultAssetType) {\n IGlobalSearchResultAssetType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultAssetType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultAssetType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultAssetType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultAssetType[\"RegAlert\"] = \"REG_ALERT\";\n IGlobalSearchResultAssetType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultAssetType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n IGlobalSearchResultAssetType[\"Report\"] = \"REPORT\";\n IGlobalSearchResultAssetType[\"ReportBuilder\"] = \"REPORT_BUILDER\";\n})(IGlobalSearchResultAssetType || (IGlobalSearchResultAssetType = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Trading\"] = \"TRADING\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n})(IProductType || (IProductType = {}));\nvar IPageCode;\n(function (IPageCode) {\n IPageCode[\"ClientControls\"] = \"CLIENT_CONTROLS\";\n IPageCode[\"ClientControlsQuality\"] = \"CLIENT_CONTROLS_QUALITY\";\n IPageCode[\"AcinControls\"] = \"ACIN_CONTROLS\";\n IPageCode[\"JointControls\"] = \"JOINT_CONTROLS\";\n})(IPageCode || (IPageCode = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Private\"] = \"PRIVATE\";\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n})(IReadPermission || (IReadPermission = {}));\nvar IReportType;\n(function (IReportType) {\n IReportType[\"HorizontalBar\"] = \"HORIZONTAL_BAR\";\n IReportType[\"HorizontalBarDataVis\"] = \"HORIZONTAL_BAR_DATA_VIS\";\n IReportType[\"HorizontalBarInsightCodes\"] = \"HORIZONTAL_BAR_INSIGHT_CODES\";\n IReportType[\"HorizontalBarInsightCodesStacked\"] = \"HORIZONTAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"VerticalBar\"] = \"VERTICAL_BAR\";\n IReportType[\"VerticalBarDataVis\"] = \"VERTICAL_BAR_DATA_VIS\";\n IReportType[\"VerticalBarInsightCodes\"] = \"VERTICAL_BAR_INSIGHT_CODES\";\n IReportType[\"VerticalBarInsightCodesStacked\"] = \"VERTICAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"Table\"] = \"TABLE\";\n IReportType[\"TableDataVis\"] = \"TABLE_DATA_VIS\";\n IReportType[\"TableInsightCodes\"] = \"TABLE_INSIGHT_CODES\";\n IReportType[\"TableInsightCodesStacked\"] = \"TABLE_INSIGHT_CODES_STACKED\";\n IReportType[\"OverTimeDataVis\"] = \"OVER_TIME_DATA_VIS\";\n IReportType[\"OverTimeInsightCodes\"] = \"OVER_TIME_INSIGHT_CODES\";\n IReportType[\"PieChartInsightCodes\"] = \"PIE_CHART_INSIGHT_CODES\";\n})(IReportType || (IReportType = {}));\nvar RiskIntelligence$1 = function (props) {\n var className = props.className,\n onNavigate = props.onNavigate,\n showFavourite = props.showFavourite,\n _a = props.isNested,\n isNested = _a === void 0 ? true : _a,\n onClickViewAll = props.onClickViewAll;\n var _b = useGetRiskIntelligenceQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n input: {\n sorting: {\n field: 'publishDate',\n direction: ISortDirection.Desc\n }\n }\n }\n }),\n data = _b.data,\n loading = _b.loading;\n return /*#__PURE__*/React.createElement(RiskIntelligence$2, {\n \"data-testid\": generate(['risk-intelligence'], props),\n className: className\n }, loading ? ( /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n })) : ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Header$2, null, /*#__PURE__*/React.createElement(Title$3, {\n size: 2\n }, \"Risk Intelligence\"), /*#__PURE__*/React.createElement(ViewAll, {\n variant: \"link\",\n label: \"View All\",\n onClick: onClickViewAll\n })), /*#__PURE__*/React.createElement(Feed, null, data === null || data === void 0 ? void 0 : data.getRiskIntelligence.nodes.map(function (item) {\n return /*#__PURE__*/React.createElement(RiskIntelligenceCard, {\n onNavigate: onNavigate,\n item: item,\n showFavourite: showFavourite,\n isNested: isNested\n });\n })))));\n};\nvar RiskIntelligence = styled(RiskIntelligence$1)(templateObject_1$E || (templateObject_1$E = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$E;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligenceTable$2 = styled(View)(templateObject_1$D || (templateObject_1$D = __makeTemplateObject([\"\\n display: center;\\n overflow-x: auto;\\n overflow-y: none;\\n flex: flex-start;\\n\"], [\"\\n display: center;\\n overflow-x: auto;\\n overflow-y: none;\\n flex: flex-start;\\n\"])));\nvar Table$2 = styled(DataTable)(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n min-width: \", \";\\n display: flex;\\n justify-content: left;\\n width: 100%;\\n\"], [\"\\n min-width: \", \";\\n display: flex;\\n justify-content: left;\\n width: 100%;\\n\"])), function (p) {\n return p.theme.spacing.getSize(199);\n});\nvar LoadingWrapper$3 = styled(View)(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$D, templateObject_2$9, templateObject_3$6;\nvar RiskIntelligenceTableRowFragmentDoc = gql(templateObject_1$C || (templateObject_1$C = __makeTemplateObject([\"\\n fragment RiskIntelligenceTableRow on RiskIntelligence {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedControls\\n totalImpactedRisks\\n }\\n}\\n \"], [\"\\n fragment RiskIntelligenceTableRow on RiskIntelligence {\\n id\\n title\\n type\\n createdAt\\n publishDate\\n description\\n favourite\\n impact {\\n totalImpactedControls\\n totalImpactedRisks\\n }\\n}\\n \"])));\nvar templateObject_1$C;\nvar GetRiskIntelligenceTableDocument = gql(templateObject_1$B || (templateObject_1$B = __makeTemplateObject([\"\\n query getRiskIntelligenceTable($input: RiskIntelligenceInput) {\\n getRiskIntelligence(input: $input) {\\n nodes {\\n ...RiskIntelligenceTableRow\\n }\\n activeSorting {\\n field\\n direction\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n range\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getRiskIntelligenceTable($input: RiskIntelligenceInput) {\\n getRiskIntelligence(input: $input) {\\n nodes {\\n ...RiskIntelligenceTableRow\\n }\\n activeSorting {\\n field\\n direction\\n }\\n pagination {\\n page\\n pageSize\\n totalResults\\n totalPages\\n hasNextPage\\n range\\n }\\n }\\n}\\n \", \"\"])), RiskIntelligenceTableRowFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceTableQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceTableDocument, baseOptions);\n}\nvar templateObject_1$B;\nvar ToggleRiskIntelligenceTableRowFavouriteDocument = gql(templateObject_1$A || (templateObject_1$A = __makeTemplateObject([\"\\n mutation toggleRiskIntelligenceTableRowFavourite($id: ID!, $favourite: Boolean!) {\\n toggleRiskIntelligenceFavourite(id: $id, favourite: $favourite) {\\n id\\n favourite\\n }\\n}\\n \"], [\"\\n mutation toggleRiskIntelligenceTableRowFavourite($id: ID!, $favourite: Boolean!) {\\n toggleRiskIntelligenceFavourite(id: $id, favourite: $favourite) {\\n id\\n favourite\\n }\\n}\\n \"])));\n/**\r\n * __useToggleRiskIntelligenceTableRowFavouriteMutation__\r\n *\r\n * To run a mutation, you first call `useToggleRiskIntelligenceTableRowFavouriteMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useToggleRiskIntelligenceTableRowFavouriteMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [toggleRiskIntelligenceTableRowFavouriteMutation, { data, loading, error }] = useToggleRiskIntelligenceTableRowFavouriteMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * favourite: // value for 'favourite'\r\n * },\r\n * });\r\n */\nfunction useToggleRiskIntelligenceTableRowFavouriteMutation(baseOptions) {\n return Apollo.useMutation(ToggleRiskIntelligenceTableRowFavouriteDocument, baseOptions);\n}\nvar templateObject_1$A;\nvar TextAlignment;\n(function (TextAlignment) {\n TextAlignment[\"Left\"] = \"left\";\n TextAlignment[\"Right\"] = \"right\";\n TextAlignment[\"Center\"] = \"center\";\n})(TextAlignment || (TextAlignment = {}));\nvar RiskIntelligenceTable$1 = function (props) {\n var _a, _b, _c, _d, _e, _f;\n var className = props.className,\n onNavigate = props.onNavigate,\n activeFilters = props.activeFilters;\n var _g = __read(React.useState({\n direction: ISortDirection$1.Desc,\n field: 'favourite'\n }), 2),\n activeSort = _g[0],\n setActiveSort = _g[1];\n var _h = usePagination(),\n activePage = _h.activePage,\n itemsPerPage = _h.itemsPerPage,\n onSetTotalResults = _h.onSetTotalResults,\n onSetTotalPages = _h.onSetTotalPages,\n onSetRange = _h.onSetRange;\n var _j = useGetRiskIntelligenceTableQuery({\n variables: {\n input: {\n filters: activeFilters === null || activeFilters === void 0 ? void 0 : activeFilters.filters,\n pagination: {\n page: activePage,\n pageSize: Number(itemsPerPage)\n },\n sorting: activeSort\n }\n }\n }),\n data = _j.data,\n loading = _j.loading,\n error = _j.error;\n React.useEffect(function () {\n var _a, _b, _c, _d;\n onSetTotalResults(((_a = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.pagination) === null || _a === void 0 ? void 0 : _a.totalResults) || 0);\n onSetRange(((_c = (_b = data === null || data === void 0 ? void 0 : data.getRiskIntelligence) === null || _b === void 0 ? void 0 : _b.pagination) === null || _c === void 0 ? void 0 : _c.range) || '');\n onSetTotalPages(((_d = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.pagination) === null || _d === void 0 ? void 0 : _d.totalPages) || 1);\n }, [(_b = (_a = data === null || data === void 0 ? void 0 : data.getRiskIntelligence) === null || _a === void 0 ? void 0 : _a.pagination) === null || _b === void 0 ? void 0 : _b.range, (_c = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.pagination) === null || _c === void 0 ? void 0 : _c.totalPages, (_d = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.pagination) === null || _d === void 0 ? void 0 : _d.totalResults, onSetRange, onSetTotalPages, onSetTotalResults]);\n var _k = __read(useToggleRiskIntelligenceTableRowFavouriteMutation(), 1),\n mutation = _k[0];\n var toggleFavourite = function (id, favourite) {\n mutation({\n variables: {\n id: id,\n favourite: !favourite\n }\n });\n };\n var colWidth = '140px';\n var headers = [{\n key: 'favourite',\n label: '',\n sortable: true\n }, {\n key: 'title',\n label: 'Intelligence Name',\n sortable: true\n }, {\n key: 'type',\n label: 'Intelligence Type',\n width: colWidth,\n sortable: true\n }, {\n key: 'totalImpactedRisks',\n label: 'Impacted Risks',\n width: '140px',\n alignContent: TextAlignment.Right,\n sortable: true\n }, {\n key: 'totalImpactedControls',\n label: 'Impacted Controls',\n width: '160px',\n alignContent: TextAlignment.Right,\n sortable: true\n }, {\n key: 'publishDate',\n label: 'Date Published',\n width: colWidth,\n sortable: true\n }];\n var rows = React.useMemo(function () {\n return data === null || data === void 0 ? void 0 : data.getRiskIntelligence.nodes.map(function (item) {\n var date = validateDate(item.publishDate);\n return {\n favourite: item.favourite,\n id: item.id,\n title: item.title,\n type: item.type && item.type.replace(/([A-Z])/g, ' $1').trim(),\n totalImpactedRisks: item.impact && item.impact.totalImpactedRisks,\n totalImpactedControls: item.impact && item.impact.totalImpactedControls,\n publishDate: date ? format(date, 'd MMM yy') : 'Invalid Date'\n };\n });\n }, [data === null || data === void 0 ? void 0 : data.getRiskIntelligence.nodes]);\n var hasServerError = !loading && error;\n var hasNoData = !loading && (rows === null || rows === void 0 ? void 0 : rows.length) === 0;\n var hasData = !loading && !error && rows && rows.length > 0;\n var onRowClick = function (id) {\n var _a;\n var type = (_a = rows === null || rows === void 0 ? void 0 : rows.find(function (row) {\n return row.id === id;\n })) === null || _a === void 0 ? void 0 : _a.type;\n var matchType = function (type) {\n switch (type) {\n default:\n case 'Network Scenario':\n return 'RiskIntelligenceNetworkScenario';\n case 'Regulatory Alert':\n return 'RiskIntelligenceRegulatoryAlert';\n case 'Network Update':\n return 'RiskIntelligenceNetworkUpdate';\n }\n };\n if (type !== undefined) {\n onNavigate(id, matchType(type));\n }\n };\n var handleSort = React.useCallback(function (key, direction) {\n setActiveSort({\n direction: direction === 'ASC' ? ISortDirection$1.Asc : ISortDirection$1.Desc,\n field: key\n });\n }, []);\n var renderHeading = function () {\n return /*#__PURE__*/React.createElement(Heading, {\n size: 2,\n weight: 500\n }, \"View all Risk Intelligence\");\n };\n var noData = {\n title: 'No Risk Intelligence',\n message: 'Unable to find any Risk Intelligence'\n };\n return /*#__PURE__*/React.createElement(RiskIntelligenceTable$2, {\n \"data-testid\": generate(['risk-intelligence-table'], props),\n className: className\n }, loading && ( /*#__PURE__*/React.createElement(LoadingWrapper$3, {\n \"data-testid\": \"loading-wrapper\"\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }))), (hasServerError || hasNoData) && /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: noData\n }), hasData && ( /*#__PURE__*/React.createElement(Pagination, {\n title: renderHeading()\n }, /*#__PURE__*/React.createElement(Table$2, {\n headers: headers,\n rows: rows || [],\n onRowClick: onRowClick,\n preventWrapping: true,\n showFavourite: true,\n onFavourite: toggleFavourite,\n activeSorting: {\n key: ((_e = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.activeSorting) === null || _e === void 0 ? void 0 : _e.field) || 'favourite',\n direction: ((_f = data === null || data === void 0 ? void 0 : data.getRiskIntelligence.activeSorting) === null || _f === void 0 ? void 0 : _f.direction) || ISortDirection$1.Asc\n },\n onSort: handleSort\n }))));\n};\nvar RiskIntelligenceTable = styled(RiskIntelligenceTable$1)(templateObject_1$z || (templateObject_1$z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$z;\nvar FilterRangeFragmentDoc = gql(templateObject_1$y || (templateObject_1$y = __makeTemplateObject([\"\\n fragment FilterRange on FilterRange {\\n min\\n max\\n}\\n \"], [\"\\n fragment FilterRange on FilterRange {\\n min\\n max\\n}\\n \"])));\nvar FilterRangeInputTypeFragmentDoc = gql(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\\n fragment FilterRangeInputType on FilterRangeInputType {\\n inputType\\n tagLabel\\n tagUnit\\n range {\\n ...FilterRange\\n }\\n description\\n}\\n \", \"\"], [\"\\n fragment FilterRangeInputType on FilterRangeInputType {\\n inputType\\n tagLabel\\n tagUnit\\n range {\\n ...FilterRange\\n }\\n description\\n}\\n \", \"\"])), FilterRangeFragmentDoc);\nvar templateObject_1$y, templateObject_2$8;\nvar GetRiskIntelligenceHubFiltersDocument = gql(templateObject_1$x || (templateObject_1$x = __makeTemplateObject([\"\\n query getRiskIntelligenceHubFilters {\\n getRiskIntelligenceHubFilters {\\n availableFilters {\\n groups {\\n key\\n label\\n filterInput {\\n ... on FilterDropdownInputType {\\n options {\\n key\\n label\\n }\\n placeholder\\n }\\n ... on FilterTagsInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterCheckboxListInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterRangeInputType {\\n ...FilterRangeInputType\\n }\\n }\\n }\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getRiskIntelligenceHubFilters {\\n getRiskIntelligenceHubFilters {\\n availableFilters {\\n groups {\\n key\\n label\\n filterInput {\\n ... on FilterDropdownInputType {\\n options {\\n key\\n label\\n }\\n placeholder\\n }\\n ... on FilterTagsInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterCheckboxListInputType {\\n options {\\n key\\n label\\n }\\n }\\n ... on FilterRangeInputType {\\n ...FilterRangeInputType\\n }\\n }\\n }\\n }\\n }\\n}\\n \", \"\"])), FilterRangeInputTypeFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceHubFiltersQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceHubFiltersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceHubFiltersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceHubFiltersQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceHubFiltersQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceHubFiltersDocument, baseOptions);\n}\nvar templateObject_1$x;\nvar pageBackground$1 = themeHelpers.pageBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelHub$2 = styled(View)(templateObject_1$w || (templateObject_1$w = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: 100vh;\\n \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: 100vh;\\n \", \";\\n\"])), function (p) {\n return pageBackground$1(p.activeTheme);\n});\nvar Content$2 = styled(View)(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar Section = styled(View)(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n column-gap: \", \";\\n align-content: space-between;\\n padding: \", \";\\n\\n \", \"\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n column-gap: \", \";\\n align-content: space-between;\\n padding: \", \";\\n\\n \", \"\\n\\n &:not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n if (p.paddingTop && p.paddingBottom) {\n return css(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\\n padding-top: \", \";\\n padding-bottom: \", \";\\n \"], [\"\\n padding-top: \", \";\\n padding-bottom: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n });\n } else if (p.paddingTop) {\n return css(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n padding-top: \", \";\\n \"], [\"\\n padding-top: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n } else if (p.paddingBottom) {\n return css(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n \"], [\"\\n padding-bottom: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n }\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nstyled(View)(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject([\"\\n max-width: 50%;\\n flex-grow: 1;\\n align-items: stretch;\\n display: flex;\\n\"], [\"\\n max-width: 50%;\\n flex-grow: 1;\\n align-items: stretch;\\n display: flex;\\n\"])));\nvar AllRiskIntelligence = styled(Card)(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject([\"\\n width: 100%;\\n min-height: \", \";\\n padding: \", \";\\n\"], [\"\\n width: 100%;\\n min-height: \", \";\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(75);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nstyled(Heading)(templateObject_9$2 || (templateObject_9$2 = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.accent1.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nstyled(Text)(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar ChartArea = styled(Section)(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject([\"\\n height: 60vh;\\n min-height: 450px;\\n max-height: 580px;\\n\"], [\"\\n height: 60vh;\\n min-height: 450px;\\n max-height: 580px;\\n\"])));\nvar templateObject_1$w, templateObject_2$7, templateObject_3$5, templateObject_4$5, templateObject_5$3, templateObject_6$3, templateObject_7$2, templateObject_8$2, templateObject_9$2, templateObject_10$2, templateObject_11$2;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RegulatoryFinesOverTime$2 = styled(Card)(templateObject_1$v || (templateObject_1$v = __makeTemplateObject([\"\\n /* leave here incase they wish to return to 50/50\\n flex-grow: 1;\\n flex-basis: 0;\\n overflow: auto; */\\n width: 768px;\\n\"], [\"\\n /* leave here incase they wish to return to 50/50\\n flex-grow: 1;\\n flex-basis: 0;\\n overflow: auto; */\\n width: 768px;\\n\"])));\nvar LoadingWrapper$2 = styled(View)(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar Title$2 = styled(Heading)(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ChartHolder$1 = styled(View)(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n height: calc(100% - 40px);\\n overflow: hidden;\\n\"], [\"\\n height: calc(100% - 40px);\\n overflow: hidden;\\n\"])));\nvar templateObject_1$v, templateObject_2$6, templateObject_3$4, templateObject_4$4;\nvar TableRefresherBarChartFragmentFragmentDoc = gql(templateObject_1$u || (templateObject_1$u = __makeTemplateObject([\"\\n fragment TableRefresherBarChartFragment on TableRefresherBarChart {\\n id\\n chartTitle\\n data {\\n id\\n name\\n showName\\n secondaryValue {\\n text\\n isAcin\\n }\\n values {\\n key\\n name\\n total\\n percentage\\n id\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n info {\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n negativeKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n positiveKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n valueHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n secondaryHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n}\\n \"], [\"\\n fragment TableRefresherBarChartFragment on TableRefresherBarChart {\\n id\\n chartTitle\\n data {\\n id\\n name\\n showName\\n secondaryValue {\\n text\\n isAcin\\n }\\n values {\\n key\\n name\\n total\\n percentage\\n id\\n info {\\n id\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n info {\\n filters {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n configuration {\\n groupKey\\n filterValues {\\n value\\n label\\n }\\n }\\n label\\n }\\n }\\n negativeKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n positiveKeys {\\n key\\n label\\n key\\n description\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n nameHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n valueHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n secondaryHeader {\\n key\\n name\\n sortable\\n direction\\n }\\n}\\n \"])));\nvar templateObject_1$u;\nvar GetRegulatoryFinesOverTimeByRiskDocument = gql(templateObject_1$t || (templateObject_1$t = __makeTemplateObject([\"\\n query getRegulatoryFinesOverTimeByRisk($input: RegulatoryFinesInput!) {\\n getRegulatoryFinesOverTimeByRisk(input: $input) {\\n yAxisLabel\\n chart {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n }\\n \", \"\\n\"], [\"\\n query getRegulatoryFinesOverTimeByRisk($input: RegulatoryFinesInput!) {\\n getRegulatoryFinesOverTimeByRisk(input: $input) {\\n yAxisLabel\\n chart {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n }\\n \", \"\\n\"])), TableRefresherBarChartFragmentFragmentDoc);\n/**\r\n * __useGetRegulatoryFinesOverTimeByRiskQuery__\r\n *\r\n * To run a query within a React component, call `useGetRegulatoryFinesOverTimeByRiskQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRegulatoryFinesOverTimeByRiskQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRegulatoryFinesOverTimeByRiskQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRegulatoryFinesOverTimeByRiskQuery(baseOptions) {\n return Apollo.useQuery(GetRegulatoryFinesOverTimeByRiskDocument, baseOptions);\n}\nvar templateObject_1$t;\nvar RegulatoryFinesOverTime$1 = function (props) {\n var className = props.className,\n setQuickFilterFromChart = props.setQuickFilterFromChart,\n onRowClick = props.onRowClick,\n selectedItem = props.selectedItem,\n filters = props.filters;\n var _a = useGetRegulatoryFinesOverTimeByRiskQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n input: {\n filters: filters\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n var chart = data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.chart;\n var hasData = !loading && !error && (data && chart) !== undefined;\n var hasNoData = !loading && !error && chart === undefined;\n var hasServerError = !loading && error !== undefined;\n var noData = {\n title: 'Empty Response',\n message: 'No Regulatory Fine data could be found for this period.'\n };\n return /*#__PURE__*/React.createElement(RegulatoryFinesOverTime$2, {\n \"data-testid\": generate(['regulatory-fines-over-time'], props),\n className: className\n }, loading && ( /*#__PURE__*/React.createElement(LoadingWrapper$2, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))), (hasServerError || hasNoData) && /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: noData\n }), hasData && (data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.chart) && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Title$2, {\n size: 2\n }, data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.chart.chartTitle), /*#__PURE__*/React.createElement(ChartHolder$1, null, /*#__PURE__*/React.createElement(VerticalRefresherChart, {\n enableDrillDown: true,\n onRowClick: function (item) {\n onRowClick && onRowClick(item);\n },\n selected: selectedItem,\n id: (data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.chart.id) || 'vertical-refresher-chart-id',\n data: data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.chart,\n setActiveItem: function (item) {\n setQuickFilterFromChart && setQuickFilterFromChart(item);\n },\n onValueClick: undefined,\n // chartHeight={480}\n showYAxis: true,\n yAxisLabel: data === null || data === void 0 ? void 0 : data.getRegulatoryFinesOverTimeByRisk.yAxisLabel,\n useMinHeights: true,\n fillParentHeight: true,\n columnWidth: 42\n })))));\n};\nvar RegulatoryFinesOverTime = styled(RegulatoryFinesOverTime$1)(templateObject_1$s || (templateObject_1$s = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$s;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RegulatoryFinesByAcinControl$2 = styled(Card)(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\\n flex-grow: 1;\\n flex-basis: 0;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n\"], [\"\\n flex-grow: 1;\\n flex-basis: 0;\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n\"])));\nvar LoadingWrapper$1 = styled(View)(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar Title$1 = styled(Heading)(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ChartHolder = styled(View)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n display: flex;\\n height: calc(100% - 48px);\\n flex-grow: 1;\\n width: 100%;\\n flex: 1;\\n\\n & > div {\\n width: 100%;\\n }\\n\"], [\"\\n display: flex;\\n height: calc(100% - 48px);\\n flex-grow: 1;\\n width: 100%;\\n flex: 1;\\n\\n & > div {\\n width: 100%;\\n }\\n\"])));\nvar templateObject_1$r, templateObject_2$5, templateObject_3$3, templateObject_4$3;\nvar GetRegulatoryFinesByAcinControlsDocument = gql(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\\n query getRegulatoryFinesByAcinControls($input: RegulatoryFinesInput!) {\\n getRegulatoryFinesByAcinControls(input: $input) {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n \", \"\\n\"], [\"\\n query getRegulatoryFinesByAcinControls($input: RegulatoryFinesInput!) {\\n getRegulatoryFinesByAcinControls(input: $input) {\\n ...TableRefresherBarChartFragment\\n }\\n }\\n \", \"\\n\"])), TableRefresherBarChartFragmentFragmentDoc);\n/**\r\n * __useGetRegulatoryFinesByAcinControlsQuery__\r\n *\r\n * To run a query within a React component, call `useGetRegulatoryFinesByAcinControlsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRegulatoryFinesByAcinControlsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRegulatoryFinesByAcinControlsQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRegulatoryFinesByAcinControlsQuery(baseOptions) {\n return Apollo.useQuery(GetRegulatoryFinesByAcinControlsDocument, baseOptions);\n}\nvar templateObject_1$q;\nvar RegulatoryFinesByAcinControl$1 = function (props) {\n var className = props.className,\n filters = props.filters,\n configuration = props.configuration,\n onRowClick = props.onRowClick,\n onClickQuickFilter = props.onClickQuickFilter,\n activeItemId = props.activeItemId;\n var _a = useGetRegulatoryFinesByAcinControlsQuery({\n fetchPolicy: 'cache-and-network',\n variables: {\n input: {\n configuration: configuration,\n filters: filters\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n var chart = data === null || data === void 0 ? void 0 : data.getRegulatoryFinesByAcinControls;\n var hasData = !loading && !error && (data && chart) !== undefined;\n var hasNoData = !loading && !error && chart === undefined;\n var hasServerError = !loading && error !== undefined;\n var noData = {\n title: 'Empty Response',\n message: 'No controls could be found.'\n };\n return /*#__PURE__*/React.createElement(RegulatoryFinesByAcinControl$2, {\n \"data-testid\": generate(['regulatory-fines-by-acin-control'], props),\n className: className\n }, loading && ( /*#__PURE__*/React.createElement(LoadingWrapper$1, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\",\n withOverlay: true\n }))), (hasServerError || hasNoData) && /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error,\n noData: noData\n }), hasData && chart && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Title$1, {\n size: 2\n }, \"Total Regulatory Fines Value Grouped by Acin Controls\"), /*#__PURE__*/React.createElement(ChartHolder, null, /*#__PURE__*/React.createElement(RefresherChart, {\n id: data === null || data === void 0 ? void 0 : data.getRegulatoryFinesByAcinControls.id,\n data: data === null || data === void 0 ? void 0 : data.getRegulatoryFinesByAcinControls,\n fillParentHeight: true,\n rowHeight: \"small\",\n largestFirst: true,\n useNameOverTotal: true,\n showAcinLogoOnRows: true,\n onRowClick: onRowClick,\n activeItemId: activeItemId,\n setActiveItem: onClickQuickFilter,\n firstColumnWidth: 400\n })))));\n};\nvar RegulatoryFinesByAcinControl = styled(RegulatoryFinesByAcinControl$1)(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$p;\nvar RiskIntelHub$1 = function (props) {\n var _a;\n var className = props.className,\n onNavigateRiskIntel = props.onNavigateRiskIntel,\n onNavigateControlRisk = props.onNavigateControlRisk;\n var _b = useDrawer(),\n toggleDrawer = _b.toggleDrawer,\n setDrawerState = _b.setDrawerState,\n isOpen = _b.isOpen;\n var drawerName = 'control-page';\n var _c = __read(React.useState(undefined), 2),\n controlId = _c[0],\n setControlId = _c[1];\n var _d = __read(React.useState(undefined), 2),\n insightById = _d[0],\n setInsightById = _d[1];\n var _e = __read(React.useState(undefined), 2),\n controlInstanceId = _e[0],\n setControlInstanceId = _e[1];\n var _f = __read(React.useState('overview'), 2),\n selectedTab = _f[0],\n setSelectedTab = _f[1];\n var filtersData = useGetRiskIntelligenceHubFiltersQuery().data;\n var activeTheme = useThemeProvider().activeTheme;\n var _g = __read(React.useState(), 2),\n activeFilters = _g[0],\n setActive = _g[1];\n var _h = __read(React.useState(), 2),\n quickFilterFromChartA = _h[0],\n setQuickFilterFromChartA = _h[1];\n var _j = __read(React.useState(), 2),\n quickFilterFromChartB = _j[0],\n setQuickFilterFromChartB = _j[1];\n var _k = __read(React.useState(), 2),\n clickedRow = _k[0],\n setClickedRow = _k[1];\n var activeFiltersList = activeFilters ? flattenTags(activeFilters) : [];\n var filterCount = activeFiltersList && activeFiltersList.length;\n var filterLabel = filterCount > 0 ? \"Filters (\" + filterCount + \")\" : 'Filters';\n var toggleFilterDrawer = function () {\n toggleDrawer('filters');\n };\n var onApply = function (filters) {\n setActive(filters);\n toggleFilterDrawer();\n };\n var combinedFilters = function () {\n var _a, _b;\n var quickFilterA = (_a = quickFilterFromChartA === null || quickFilterFromChartA === void 0 ? void 0 : quickFilterFromChartA.info) === null || _a === void 0 ? void 0 : _a.filters;\n var quickFilterB = (_b = quickFilterFromChartB === null || quickFilterFromChartB === void 0 ? void 0 : quickFilterFromChartB.info) === null || _b === void 0 ? void 0 : _b.filters;\n var isQuickFilterAEmpty = !quickFilterA || quickFilterA.length === 0 || quickFilterA[0].filterValues.length === 0;\n var isQuickFilterBEmpty = !quickFilterB || quickFilterB.length === 0 || quickFilterB[0].filterValues.length === 0;\n if (isQuickFilterAEmpty && isQuickFilterBEmpty) {\n return activeFilters;\n }\n var combinedGroups = __spread(isQuickFilterAEmpty ? [] : quickFilterA || [], isQuickFilterBEmpty ? [] : quickFilterB || []);\n var quickFilterShape = {\n groups: combinedGroups\n };\n return mergeFilterInputs(activeFilters, quickFilterShape);\n };\n var riskIntelligenceFiltersShape = {\n filters: combinedFilters()\n };\n var handleReset = function () {\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n };\n var handleCloseDrawer = function () {\n if (isOpen(drawerName)) {\n handleReset();\n setDrawerState(false, drawerName);\n }\n };\n var handleInsightByIdChange = function (value) {\n setInsightById(value);\n setControlInstanceId(undefined);\n };\n var handleControlInstanceIdChange = function (value) {\n setControlInstanceId(value);\n };\n var handleInspectRow = function (id, type, tab, businessOrgId, riskInventoryId) {\n if (tab && businessOrgId) {\n setInsightById('BUSINESS_ORG');\n setSelectedTab(tab);\n setControlInstanceId(businessOrgId);\n } else if (tab && riskInventoryId) {\n setInsightById('INDEX');\n setSelectedTab(tab);\n setControlInstanceId(riskInventoryId);\n } else {\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n }\n setControlId(id);\n toggleDrawer(drawerName);\n };\n var handleChangeTab = function (tab) {\n setSelectedTab(tab);\n };\n return /*#__PURE__*/React.createElement(RiskIntelHub$2, {\n \"data-testid\": generate(['risk-intel-hub'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(FiltersProvider, null, /*#__PURE__*/React.createElement(Filters, {\n onApply: onApply,\n availableFilters: (filtersData === null || filtersData === void 0 ? void 0 : filtersData.getRiskIntelligenceHubFilters.availableFilters) || undefined,\n activeFilters: activeFilters,\n onCancel: toggleFilterDrawer\n }), /*#__PURE__*/React.createElement(CompactHeader, {\n firstTier: /*#__PURE__*/React.createElement(FirstTier, {\n title: \"Risk Intelligence\",\n variation: \"parent\"\n }),\n thirdTier: /*#__PURE__*/React.createElement(ThirdTier, {\n filters: {\n label: filterLabel,\n onClick: function () {\n return toggleFilterDrawer && toggleFilterDrawer();\n }\n }\n })\n }), /*#__PURE__*/React.createElement(Content$2, null, /*#__PURE__*/React.createElement(ChartArea, {\n paddingBottom: true\n }, /*#__PURE__*/React.createElement(RegulatoryFinesOverTime, {\n onRowClick: setClickedRow,\n setQuickFilterFromChart: setQuickFilterFromChartA,\n selectedItem: clickedRow,\n filters: activeFilters\n }), /*#__PURE__*/React.createElement(RegulatoryFinesByAcinControl, {\n filters: activeFilters,\n onRowClick: function (item) {\n return handleInspectRow((item === null || item === void 0 ? void 0 : item.id) || '', 'AcinControl', selectedTab, insightById);\n },\n onClickQuickFilter: setQuickFilterFromChartB,\n activeItemId: ((_a = quickFilterFromChartB === null || quickFilterFromChartB === void 0 ? void 0 : quickFilterFromChartB.info) === null || _a === void 0 ? void 0 : _a.id) || undefined\n })), /*#__PURE__*/React.createElement(Section, {\n paddingTop: true\n }, /*#__PURE__*/React.createElement(AllRiskIntelligence, null, /*#__PURE__*/React.createElement(PaginationProvider, null, /*#__PURE__*/React.createElement(RiskIntelligenceTable, {\n onNavigate: onNavigateRiskIntel,\n activeFilters: riskIntelligenceFiltersShape\n }))))), /*#__PURE__*/React.createElement(ReportDrawer, {\n drawerName: drawerName,\n controlId: controlId !== null && controlId !== void 0 ? controlId : '',\n controlInstanceId: controlInstanceId,\n insightById: insightById !== null && insightById !== void 0 ? insightById : '',\n selectedTab: selectedTab !== null && selectedTab !== void 0 ? selectedTab : '',\n onCloseDrawer: handleCloseDrawer,\n onNavigate: onNavigateControlRisk,\n onChangeTab: handleChangeTab,\n onInsightByIdChange: handleInsightByIdChange,\n onControlInstanceIdChange: handleControlInstanceIdChange\n })));\n};\nvar RiskIntelHub = styled(RiskIntelHub$1)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$o;\nvar pageBackground = themeHelpers.pageBackground;\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligenceAlert$2 = styled(View)(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\"], [\"\"])));\nvar Container$1 = styled(View)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n gap: \", \";\\n padding: \", \";\\n \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n gap: \", \";\\n padding: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return pageBackground(p.activeTheme);\n});\nvar OverviewContainer = styled(Container$1)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n flex-direction: row;\\n height: 100%;\\n\"], [\"\\n flex-direction: row;\\n height: 100%;\\n\"])));\nvar DataMappingContainer = styled(Container$1)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"], [\"\\n flex-direction: column;\\n flex-grow: 1;\\n height: 100%;\\n\"])));\nvar Sidebar = styled(View)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n width: 33.3%;\\n\"], [\"\\n width: 33.3%;\\n\"])));\nvar Body = styled(View)(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n width: 66.6%;\\n\"], [\"\\n width: 66.6%;\\n\"])));\nvar Charts = styled(View)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n gap: \", \";\\n margin-bottom: \", \";\\n flex-grow: 1;\\n align-items: stretch;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n gap: \", \";\\n margin-bottom: \", \";\\n flex-grow: 1;\\n align-items: stretch;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Summary = styled(View)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar LoadingWrapper = styled(View)(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n padding-top: \", \";\\n\"], [\"\\n position: relative;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(25);\n});\nvar Table$1 = styled(Card)(templateObject_10$1 || (templateObject_10$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Title = styled(Heading)(templateObject_11$1 || (templateObject_11$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Header$1 = styled(View)(templateObject_12$1 || (templateObject_12$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n margin-bottom: \", \";\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Actions = styled(View)(templateObject_13$1 || (templateObject_13$1 = __makeTemplateObject([\"\\n margin-left: \", \";\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"], [\"\\n margin-left: \", \";\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Download = styled(IconButton)(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ChartWrapper = styled(View)(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n flex-grow: 1;\\n justify-content: center;\\n width: calc(50% - 8px);\\n\"], [\"\\n position: relative;\\n display: flex;\\n flex-grow: 1;\\n justify-content: center;\\n width: calc(50% - 8px);\\n\"])));\nvar TableWrapper = styled(View)(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject([\"\\n position: relative;\\n justify-content: center;\\n min-height: 400px;\\n\"], [\"\\n position: relative;\\n justify-content: center;\\n min-height: 400px;\\n\"])));\nvar templateObject_1$n, templateObject_2$4, templateObject_3$2, templateObject_4$2, templateObject_5$2, templateObject_6$2, templateObject_7$1, templateObject_8$1, templateObject_9$1, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16$1;\nvar GetRiskIntelligenceAlertDocument = gql(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\\n query getRiskIntelligenceAlert($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlert(input: $input) {\\n title\\n }\\n}\\n \"], [\"\\n query getRiskIntelligenceAlert($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlert(input: $input) {\\n title\\n }\\n}\\n \"])));\n/**\r\n * __useGetRiskIntelligenceAlertQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertDocument, baseOptions);\n}\nvar templateObject_1$m;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligenceAlertRelatedData$2 = styled(View)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\"], [\"\"])));\nvar Container = styled(Card)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$l, templateObject_2$3;\nvar SourceFragmentDoc = gql(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\\n fragment Source on RiskIntelligenceSource {\\n label\\n url\\n}\\n \"], [\"\\n fragment Source on RiskIntelligenceSource {\\n label\\n url\\n}\\n \"])));\nvar templateObject_1$k;\nvar RegulationFragmentDoc = gql(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\\n fragment Regulation on RiskIntelligenceRegulation {\\n regulator {\\n id\\n name\\n }\\n regulation {\\n id\\n name\\n }\\n regulationArticles {\\n id\\n name\\n }\\n}\\n \"], [\"\\n fragment Regulation on RiskIntelligenceRegulation {\\n regulator {\\n id\\n name\\n }\\n regulation {\\n id\\n name\\n }\\n regulationArticles {\\n id\\n name\\n }\\n}\\n \"])));\nvar templateObject_1$j;\nvar GetRiskIntelligenceAlertRelatedDataDocument = gql(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertRelatedData($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertRelatedData(input: $input) {\\n fine\\n sources {\\n ...Source\\n }\\n regulations {\\n ...Regulation\\n }\\n indexRisks {\\n name\\n id\\n code\\n }\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n query getRiskIntelligenceAlertRelatedData($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertRelatedData(input: $input) {\\n fine\\n sources {\\n ...Source\\n }\\n regulations {\\n ...Regulation\\n }\\n indexRisks {\\n name\\n id\\n code\\n }\\n }\\n}\\n \", \"\\n\", \"\"])), SourceFragmentDoc, RegulationFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceAlertRelatedDataQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertRelatedDataQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertRelatedDataQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertRelatedDataQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertRelatedDataQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertRelatedDataDocument, baseOptions);\n}\nvar templateObject_1$i;\nvar isDarkMode = themeHelpers.isDarkMode;\nvar Sources$1 = styled(View)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar SectionHeading = styled(Heading)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.info.getValue().main;\n});\nvar SourceLinks = styled(LinkList)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\\n \", \" {\\n font-weight: 400;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid\\n \", \";\\n }\\n }\\n\"], [\"\\n margin-top: \", \";\\n\\n \", \" {\\n font-weight: 400;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid\\n \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, Link, function (p) {\n return isDarkMode(p.activeTheme) ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue();\n});\nvar Regulations$1 = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar RegulationItem$1 = styled(View)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar RegulationGroup = styled(View)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar Regulator = styled(Text)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n color: \", \";\\n padding-right: 8px;\\n\"], [\"\\n color: \", \";\\n padding-right: 8px;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar RegulationName = styled(Text)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n color: \", \";\\n padding-left: 8px;\\n\"], [\"\\n color: \", \";\\n padding-left: 8px;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar RegulationArticles = styled(View)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar ArticleItem = styled(Text)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nstyled(View)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nstyled(View)(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n padding: \", \" 0;\\n\\n &:first-child {\\n padding-top: \", \";\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid\\n \", \";\\n }\\n\"], [\"\\n padding: \", \" 0;\\n\\n &:first-child {\\n padding-top: \", \";\\n }\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid\\n \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return isDarkMode(p.activeTheme) ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue();\n});\nstyled(Text)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n color: \", \";\\n top: 2px;\\n position: relative;\\n\"], [\"\\n color: \", \";\\n top: 2px;\\n position: relative;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nstyled(Button)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n background-color: \", \";\\n color: \", \";\\n\"], [\"\\n background-color: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.colors.text.getValue(3);\n});\nstyled(View)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\"], [\"\"])));\nstyled(Text)(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n color: \", \";\\n margin-top: \", \";\\n\"], [\"\\n color: \", \";\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$h, templateObject_2$2, templateObject_3$1, templateObject_4$1, templateObject_5$1, templateObject_6$1, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16;\nvar RegulationItem = function (props) {\n var regulationArticles = props.regulationArticles,\n regulationName = props.regulationName,\n regulator = props.regulator;\n return /*#__PURE__*/React.createElement(RegulationItem$1, {\n \"data-testid\": generate(['regulation-item'], props)\n }, /*#__PURE__*/React.createElement(RegulationGroup, null, /*#__PURE__*/React.createElement(Regulator, {\n weight: 500\n }, regulator), \" |\", ' ', /*#__PURE__*/React.createElement(RegulationName, {\n weight: 500\n }, regulationName)), /*#__PURE__*/React.createElement(RegulationArticles, null, (regulationArticles || []).map(function (item) {\n return /*#__PURE__*/React.createElement(ArticleItem, {\n key: item,\n weight: 500,\n size: -1\n }, item);\n })));\n};\nvar Regulations = function (props) {\n var regulations = props.regulations;\n if (regulations.length === 0) return null;\n var itemCount = regulations.length;\n var isPlural = itemCount > 1;\n var headingText = 'Regulation Reference';\n var heading = itemCount + \" \" + headingText + (isPlural ? 's' : '');\n if (itemCount === 0) {\n return null;\n }\n return /*#__PURE__*/React.createElement(Regulations$1, {\n \"data-testid\": generate(['regulations'], props)\n }, /*#__PURE__*/React.createElement(SectionHeading, {\n size: 2,\n weight: 500\n }, heading), regulations.map(function (item, index) {\n var _a, _b;\n return /*#__PURE__*/React.createElement(RegulationItem, {\n key: index,\n regulationArticles: item.regulationArticles.map(function (item) {\n return item.name;\n }),\n regulationName: (_a = item.regulation) === null || _a === void 0 ? void 0 : _a.name,\n regulator: (_b = item.regulator) === null || _b === void 0 ? void 0 : _b.name\n });\n }));\n};\nvar Sources = function (props) {\n var sources = props.sources;\n var activeTheme = useThemeProvider().activeTheme;\n if (sources.length === 0) {\n return null;\n }\n var heading = sources.length + \" Confirmed Sources\" || null;\n var linkData = sources.map(function (item) {\n return {\n label: item.label || item.url,\n href: item.url,\n newWindow: true\n };\n });\n return /*#__PURE__*/React.createElement(Sources$1, {\n \"data-testid\": generate(['sources'], props)\n }, /*#__PURE__*/React.createElement(SectionHeading, {\n size: 2,\n weight: 500\n }, heading), /*#__PURE__*/React.createElement(SourceLinks, {\n links: linkData,\n activeTheme: activeTheme\n }));\n};\nvar Risks = function (props) {\n var risks = props.risks,\n onClickRisk = props.onClickRisk;\n var activeTheme = useThemeProvider().activeTheme;\n if (risks.length === 0) {\n return null;\n }\n var isPlural = risks.length > 1;\n var heading = risks.length + \" Index \" + (isPlural ? 'Risks' : 'Risk') || null;\n var linkData = risks.map(function (item) {\n return {\n label: item.name,\n id: item.id\n };\n });\n return /*#__PURE__*/React.createElement(Sources$1, {\n \"data-testid\": generate(['risks'], props)\n }, /*#__PURE__*/React.createElement(SectionHeading, {\n size: 2,\n weight: 500\n }, heading), /*#__PURE__*/React.createElement(SourceLinks, {\n onClick: function (item) {\n return onClickRisk(item.id);\n },\n links: linkData,\n activeTheme: activeTheme\n }));\n};\nvar RiskIntelligenceAlertRelatedData$1 = function (props) {\n var _a, _b, _c;\n var className = props.className,\n id = props.id,\n onClickRisk = props.onClickRisk;\n var _d = useGetRiskIntelligenceAlertRelatedDataQuery({\n variables: {\n input: {\n id: id\n }\n }\n }),\n data = _d.data,\n error = _d.error,\n loading = _d.loading;\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n var showSources = ((_a = data.getRiskIntelligenceAlertRelatedData.sources) === null || _a === void 0 ? void 0 : _a.length) > 0;\n var showRegulations = ((_b = data.getRiskIntelligenceAlertRelatedData.regulations) === null || _b === void 0 ? void 0 : _b.length) > 0;\n var showRisks = ((_c = data.getRiskIntelligenceAlertRelatedData.indexRisks) === null || _c === void 0 ? void 0 : _c.length) > 0;\n return /*#__PURE__*/React.createElement(RiskIntelligenceAlertRelatedData$2, {\n \"data-testid\": generate(['risk-intelligence-alert-related-data'], props),\n className: className\n }, data.getRiskIntelligenceAlertRelatedData.fine && ( /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(SectionHeading, {\n size: 2,\n \"data-testid\": \"fine-value\"\n }, data.getRiskIntelligenceAlertRelatedData.fine, \" Fine Value\"))), showSources && ( /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Sources, {\n sources: data.getRiskIntelligenceAlertRelatedData.sources\n }))), showRegulations && ( /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Regulations, {\n regulations: data.getRiskIntelligenceAlertRelatedData.regulations\n }))), showRisks && ( /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Risks, {\n risks: data.getRiskIntelligenceAlertRelatedData.indexRisks,\n onClickRisk: onClickRisk\n }))), !showRisks && !data.getRiskIntelligenceAlertRelatedData.fine && !showSources && !showRegulations && ( /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No related data available for this alert\"\n })));\n};\nvar RiskIntelligenceAlertRelatedData = styled(RiskIntelligenceAlertRelatedData$1)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$g;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligenceAlertChart$2 = styled(Card)(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n flex-grow: 1;\\n\"], [\"\\n flex-grow: 1;\\n\"])));\nvar Content$1 = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar Wrapper = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: 50%;\\n\"], [\"\\n width: 50%;\\n\"])));\nvar Header = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n\"])));\nvar Info = styled(Alert)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Desc = styled(Text)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n margin: \", \" 0 \", \";\\n\"], [\"\\n margin: \", \" 0 \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$f, templateObject_2$1, templateObject_3, templateObject_4, templateObject_5, templateObject_6;\nvar chartData = function (data) {\n var chart = data.values.map(function (item) {\n var _a, _b;\n return {\n label: item.label,\n value: item.value,\n colorPalette: {\n paletteIndex: ((_a = item.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || 0,\n shade: ((_b = item.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) || undefined\n }\n };\n });\n var legend = chart === null || chart === void 0 ? void 0 : chart.map(function (item) {\n return {\n label: item.value + \" \" + item.label,\n colorPalette: item.colorPalette\n };\n });\n return {\n chart: chart,\n legend: legend\n };\n};\nvar RiskIntelligenceAlertChart$1 = function (props) {\n var className = props.className,\n title = props.title,\n data = props.data,\n id = props.id,\n onExploreClick = props.onExploreClick,\n insightOptions = props.insightOptions,\n onChangeInsight = props.onChangeInsight,\n activeInsight = props.activeInsight,\n hideExplore = props.hideExplore,\n description = props.description;\n var user = useAuth().user;\n var _a = chartData(data),\n chart = _a.chart,\n legend = _a.legend;\n var noValues = chart.length === 0;\n var renderInfo = function () {\n return /*#__PURE__*/React.createElement(Info, {\n status: \"info\",\n title: \"No \" + title + \" associated with this alert\"\n });\n };\n return /*#__PURE__*/React.createElement(RiskIntelligenceAlertChart$2, {\n \"data-testid\": generate([\"risk-intelligence-alert-chart--\" + title.toLowerCase()], props),\n className: className\n }, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(Heading, {\n size: 2\n }, ((user === null || user === void 0 ? void 0 : user.accountName) ? user.accountName : 'Your') + \" \" + title), !hideExplore && !noValues && /*#__PURE__*/React.createElement(Button, {\n label: \"Explore\",\n variant: \"borderless\",\n onClick: onExploreClick\n }), insightOptions && onChangeInsight && activeInsight && ( /*#__PURE__*/React.createElement(Select, {\n value: activeInsight,\n onChange: onChangeInsight,\n options: insightOptions\n }))), description && /*#__PURE__*/React.createElement(Desc, null, description), /*#__PURE__*/React.createElement(Content$1, null, noValues ? renderInfo() : ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(DonutChart, {\n id: id,\n data: chart,\n useTransitions: false\n })), /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(ChartLegend, {\n \"data-testid\": id + \"--key\",\n items: legend,\n variant: \"stacked\"\n }))))));\n};\nvar RiskIntelligenceAlertChart = styled(RiskIntelligenceAlertChart$1)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$e;\nvar GetRiskIntelligenceAlertControlsChartDocument = gql(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertControlsChart($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertControlsChart(input: $input) {\\n colorPaletteName\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n}\\n \"], [\"\\n query getRiskIntelligenceAlertControlsChart($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertControlsChart(input: $input) {\\n colorPaletteName\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n}\\n \"])));\n/**\r\n * __useGetRiskIntelligenceAlertControlsChartQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertControlsChartQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertControlsChartQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertControlsChartQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertControlsChartQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertControlsChartDocument, baseOptions);\n}\nvar templateObject_1$d;\nvar ControlsChart = function (props) {\n var id = props.id,\n onExploreClick = props.onExploreClick;\n var insightOptions = [{\n label: 'Insight by: Index',\n value: IRiskIntelligenceAlertInsightType.Index\n }, {\n label: 'Insight by: Business Line',\n value: IRiskIntelligenceAlertInsightType.BusinessLine\n }];\n var _a = useGetRiskIntelligenceAlertControlsChartQuery({\n variables: {\n input: {\n id: id,\n insightBy: IRiskIntelligenceAlertInsightType.Index\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n return /*#__PURE__*/React.createElement(RiskIntelligenceAlertChart, {\n title: \"Controls\",\n data: data.getRiskIntelligenceAlertControlsChart,\n id: \"controls-\" + id,\n onExploreClick: onExploreClick,\n insightOptions: insightOptions,\n hideExplore: data.getRiskIntelligenceAlertControlsChart.values.length === 0,\n description: \"Summary of your alignment to the Index Controls tagged to this risk intelligence alert.\"\n });\n};\nvar GetRiskIntelligenceAlertRisksChartDocument = gql(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertRisksChart($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertRisksChart(input: $input) {\\n colorPaletteName\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n}\\n \"], [\"\\n query getRiskIntelligenceAlertRisksChart($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertRisksChart(input: $input) {\\n colorPaletteName\\n values {\\n label\\n value\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n}\\n \"])));\n/**\r\n * __useGetRiskIntelligenceAlertRisksChartQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertRisksChartQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertRisksChartQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertRisksChartQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertRisksChartQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertRisksChartDocument, baseOptions);\n}\nvar templateObject_1$c;\nvar RisksChart = function (props) {\n var id = props.id,\n onExploreClick = props.onExploreClick;\n var _a = useGetRiskIntelligenceAlertRisksChartQuery({\n variables: {\n input: {\n id: id\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n return /*#__PURE__*/React.createElement(RiskIntelligenceAlertChart, {\n title: \"Risks\",\n data: data.getRiskIntelligenceAlertRisksChart,\n id: \"risks-\" + id,\n onExploreClick: onExploreClick,\n hideExplore: data.getRiskIntelligenceAlertRisksChart.values.length === 0,\n description: \"Summary of your alignment to the Index Risks tagged to this risk intelligence alert.\"\n });\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar RiskIntelligenceAlertSummary$2 = styled(Card)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\"], [\"\"])));\nvar Content = styled(Markdown)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$b, templateObject_2;\nvar GetRiskIntelligenceAlertSummaryDocument = gql(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertSummary($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertSummary(input: $input)\\n}\\n \"], [\"\\n query getRiskIntelligenceAlertSummary($input: RiskIntelligenceAlertInput!) {\\n getRiskIntelligenceAlertSummary(input: $input)\\n}\\n \"])));\n/**\r\n * __useGetRiskIntelligenceAlertSummaryQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertSummaryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertSummaryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertSummaryQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertSummaryQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertSummaryDocument, baseOptions);\n}\nvar templateObject_1$a;\nvar RiskIntelligenceAlertSummary$1 = function (props) {\n var className = props.className,\n id = props.id;\n var _a = useGetRiskIntelligenceAlertSummaryQuery({\n variables: {\n input: {\n id: id\n }\n }\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n return /*#__PURE__*/React.createElement(RiskIntelligenceAlertSummary$2, {\n \"data-testid\": generate(['risk-intelligence-alert-summary'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SectionHeading, {\n size: 2\n }, \"Summary\"), /*#__PURE__*/React.createElement(Content, {\n content: data.getRiskIntelligenceAlertSummary\n }));\n};\nvar RiskIntelligenceAlertSummary = styled(RiskIntelligenceAlertSummary$1)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$9;\nvar VirtualisedTableCellFragmentDoc = gql(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n fragment VirtualisedTableCell on TableCell {\\n id\\n key\\n text\\n info {\\n showAcinLogo\\n isAcin\\n isLink\\n id\\n entityId\\n type\\n businessOrgId\\n riskInventoryId\\n }\\n content {\\n ... on TableInsightCategory {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n ... on NetworkSignalScore {\\n score\\n total\\n }\\n ... on TableInsightCounts {\\n nodes {\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n ... on TableControlQualityScore {\\n controlQualityScore\\n }\\n }\\n}\\n \"], [\"\\n fragment VirtualisedTableCell on TableCell {\\n id\\n key\\n text\\n info {\\n showAcinLogo\\n isAcin\\n isLink\\n id\\n entityId\\n type\\n businessOrgId\\n riskInventoryId\\n }\\n content {\\n ... on TableInsightCategory {\\n id\\n label\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n ... on NetworkSignalScore {\\n score\\n total\\n }\\n ... on TableInsightCounts {\\n nodes {\\n count\\n colorPalette {\\n paletteIndex\\n shade\\n }\\n }\\n }\\n ... on TableControlQualityScore {\\n controlQualityScore\\n }\\n }\\n}\\n \"])));\nvar templateObject_1$8;\nvar VirtualisedTableHeadersFragmentDoc = gql(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\\n fragment VirtualisedTableHeaders on TableHeader {\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"], [\"\\n fragment VirtualisedTableHeaders on TableHeader {\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"])), VirtualisedTableCellFragmentDoc);\nvar templateObject_1$7;\nvar VirtualisedTableChildRowFragmentDoc = gql(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\\n fragment VirtualisedTableChildRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"], [\"\\n fragment VirtualisedTableChildRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n}\\n \", \"\"])), VirtualisedTableCellFragmentDoc);\nvar templateObject_1$6;\nvar VirtualisedTableParentRowFragmentDoc = gql(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\\n fragment VirtualisedTableParentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableChildRow\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"], [\"\\n fragment VirtualisedTableParentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableChildRow\\n }\\n }\\n}\\n \", \"\\n\", \"\\n\", \"\"])), VirtualisedTableCellFragmentDoc, VirtualisedTableHeadersFragmentDoc, VirtualisedTableChildRowFragmentDoc);\nvar templateObject_1$5;\nvar VirtualisedTableGrandparentRowFragmentDoc = gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n fragment VirtualisedTableGrandparentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n rows {\\n ...VirtualisedTableParentRow\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment VirtualisedTableGrandparentRow on TableRow {\\n id\\n variant\\n cells {\\n ...VirtualisedTableCell\\n }\\n rows {\\n ...VirtualisedTableParentRow\\n }\\n}\\n \", \"\\n\", \"\"])), VirtualisedTableCellFragmentDoc, VirtualisedTableParentRowFragmentDoc);\nvar templateObject_1$4;\nvar TableFragmentDoc = gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n fragment Table on Table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableGrandparentRow\\n }\\n}\\n \", \"\\n\", \"\"], [\"\\n fragment Table on Table {\\n headers {\\n ...VirtualisedTableHeaders\\n }\\n rows {\\n ...VirtualisedTableGrandparentRow\\n }\\n}\\n \", \"\\n\", \"\"])), VirtualisedTableHeadersFragmentDoc, VirtualisedTableGrandparentRowFragmentDoc);\nvar templateObject_1$3;\nvar GetRiskIntelligenceAlertRisksTableDocument = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertRisksTable($input: TableInput!) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getRiskIntelligenceAlertRisksTable($input: TableInput!) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n }\\n}\\n \", \"\"])), TableFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceAlertRisksTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertRisksTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertRisksTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertRisksTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertRisksTableQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertRisksTableDocument, baseOptions);\n}\nvar templateObject_1$2;\nvar TableConfigurationHeaderKeys;\n(function (TableConfigurationHeaderKeys) {\n TableConfigurationHeaderKeys[\"CONTROL_CODE_AND_NAME\"] = \"CONTROL_CODE_AND_NAME\";\n TableConfigurationHeaderKeys[\"CONTROL_OWNER\"] = \"CONTROL_OWNER\";\n TableConfigurationHeaderKeys[\"CONTROL_TYPE\"] = \"CONTROL_TYPE\";\n TableConfigurationHeaderKeys[\"CONTROL_FREQUENCY\"] = \"CONTROL_FREQUENCY\";\n TableConfigurationHeaderKeys[\"CONTROL_AUTOMATION\"] = \"CONTROL_AUTOMATION\";\n TableConfigurationHeaderKeys[\"INSIGHT_CATEGORY\"] = \"INSIGHT_CATEGORY\";\n TableConfigurationHeaderKeys[\"INSIGHT_CATEGORY_COUNT\"] = \"INSIGHT_CATEGORY_COUNT\";\n TableConfigurationHeaderKeys[\"INSIGHT_SUB_CATEGORY\"] = \"INSIGHT_SUB_CATEGORY\";\n TableConfigurationHeaderKeys[\"NSS_SCORE\"] = \"NSS_SCORE\";\n TableConfigurationHeaderKeys[\"NETWORK_INVENTORY\"] = \"NETWORK_INVENTORY\";\n TableConfigurationHeaderKeys[\"SOURCE\"] = \"SOURCE\";\n TableConfigurationHeaderKeys[\"BUSINESS_ORGANISATION\"] = \"BUSINESS_ORGANISATION\";\n TableConfigurationHeaderKeys[\"MATCHED_TO\"] = \"MATCHED_TO\";\n TableConfigurationHeaderKeys[\"CONTROL_QUALITY_SCORE\"] = \"CONTROL_QUALITY_SCORE\";\n TableConfigurationHeaderKeys[\"RISK_CODE_AND_NAME\"] = \"RISK_CODE_AND_NAME\";\n TableConfigurationHeaderKeys[\"INDEX_RISK_CODE_AND_NAME\"] = \"INDEX_RISK_CODE_AND_NAME\";\n})(TableConfigurationHeaderKeys || (TableConfigurationHeaderKeys = {}));\nvar controlsCellWidthsDefault = [{\n key: TableConfigurationHeaderKeys.MATCHED_TO,\n minWidth: 432,\n percentage: '34%'\n}, {\n key: TableConfigurationHeaderKeys.NETWORK_INVENTORY,\n minWidth: 120,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.NSS_SCORE,\n minWidth: 96,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 120,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME,\n minWidth: 432,\n percentage: '36%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_QUALITY_SCORE,\n minWidth: 96,\n percentage: '8%'\n}];\nvar controlsCellWidthsBusLine = [{\n key: TableConfigurationHeaderKeys.MATCHED_TO,\n minWidth: 432,\n percentage: '24%'\n}, {\n key: TableConfigurationHeaderKeys.NSS_SCORE,\n minWidth: 96,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 120,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_SUB_CATEGORY,\n minWidth: 129,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.BUSINESS_ORGANISATION,\n minWidth: 129,\n percentage: '10%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME,\n minWidth: 432,\n percentage: '26%'\n}, {\n key: TableConfigurationHeaderKeys.CONTROL_QUALITY_SCORE,\n minWidth: 96,\n percentage: '8%'\n}];\nvar risksCellWidths = [{\n key: TableConfigurationHeaderKeys.INDEX_RISK_CODE_AND_NAME,\n minWidth: 480,\n percentage: '40%'\n}, {\n key: TableConfigurationHeaderKeys.NETWORK_INVENTORY,\n minWidth: 240,\n percentage: '20%'\n}, {\n key: TableConfigurationHeaderKeys.INSIGHT_CATEGORY,\n minWidth: 240,\n percentage: '20%'\n}, {\n key: TableConfigurationHeaderKeys.RISK_CODE_AND_NAME,\n minWidth: 480,\n percentage: '40%'\n}];\nvar Table = function (props) {\n var tableHeader = props.tableHeader,\n tableBody = props.tableBody,\n variant = props.variant,\n onInspectRow = props.onInspectRow,\n inspectedRow = props.inspectedRow,\n insightOptions = props.insightOptions,\n onChangeInsight = props.onChangeInsight,\n activeInsight = props.activeInsight,\n onDownload = props.onDownload;\n var isControls = variant === 'controls';\n if ((tableBody === null || tableBody === void 0 ? void 0 : tableBody.rows.length) === 0) {\n return null;\n }\n var controlsCellWidths = activeInsight === IRiskIntelligenceAlertInsightType.Index ? controlsCellWidthsDefault : controlsCellWidthsBusLine;\n return /*#__PURE__*/React.createElement(Table$1, null, /*#__PURE__*/React.createElement(Header$1, null, /*#__PURE__*/React.createElement(Title, {\n size: 2\n }, isControls ? 'Controls' : 'Risks'), /*#__PURE__*/React.createElement(Actions, null, insightOptions && onChangeInsight && activeInsight && ( /*#__PURE__*/React.createElement(Select, {\n value: activeInsight,\n onChange: onChangeInsight,\n options: insightOptions\n })), /*#__PURE__*/React.createElement(Download, {\n \"data-testid\": \"download-\" + (isControls ? 'controls' : 'risks') + \"-table\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDownload, null);\n },\n label: \"Download\",\n onClick: onDownload\n }))), (tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.cells) && ( /*#__PURE__*/React.createElement(TableHeader, {\n cells: tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.cells,\n cellsWidths: isControls ? controlsCellWidths : risksCellWidths,\n minRowWidth: 1200,\n variant: ITableHeaderType.Outer\n })), tableBody === null || tableBody === void 0 ? void 0 : tableBody.rows.map(function (row) {\n var _a;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableRow, {\n cellsWidths: isControls ? controlsCellWidths : risksCellWidths,\n minRowWidth: 1200,\n id: row.id,\n variant: ITableRowType.Grandparent,\n cells: row.cells\n }), (_a = row.rows) === null || _a === void 0 ? void 0 : _a.map(function (childRow) {\n return /*#__PURE__*/React.createElement(TableRow, {\n cellsWidths: isControls ? controlsCellWidths : risksCellWidths,\n minRowWidth: 1200,\n id: childRow.id,\n variant: ITableRowType.Parent,\n cells: childRow.cells,\n onInspect: onInspectRow,\n inspectedRow: inspectedRow\n });\n }));\n }));\n};\nvar RisksTable = function (props) {\n var id = props.id;\n var createCalibrateDownload = useDownload().createCalibrateDownload;\n var risksConfig = {\n configuration: [{\n groupKey: 'DATA_TYPE',\n filterValues: [{\n value: 'RISKS',\n label: 'Risks'\n }]\n }, {\n groupKey: 'SOURCE',\n filterValues: [{\n value: 'NETWORK',\n label: 'DEMO & Acin Index Controls'\n }]\n }, {\n groupKey: 'GROUP_BY',\n filterValues: [{\n value: 'RISK_INTELLIGENCE_ALERT',\n label: 'Regulators & Regulations'\n }]\n }, {\n groupKey: 'INSIGHT_BY',\n filterValues: [{\n value: 'NETWORK_INVENTORY',\n label: 'Insights by Acin Index'\n }]\n }],\n filters: {\n groups: [{\n groupKey: 'RISK_INTELLIGENCE_ALERT',\n filterValues: [{\n label: 'Risk Intelligence Alert',\n value: id\n }]\n }]\n },\n variant: ITableVariant.Distinct,\n pagination: {\n page: 1,\n pageSize: 1,\n subPage: 1,\n subPageSize: 500\n }\n };\n var _a = useGetRiskIntelligenceAlertRisksTableQuery({\n variables: {\n input: risksConfig\n },\n fetchPolicy: 'no-cache'\n }),\n data = _a.data,\n loading = _a.loading,\n error = _a.error;\n var handleCreateDownload = function () {\n var input = {\n title: \"Distinct Risks by Risk Intelligence Alert with Insights\",\n configuration: risksConfig.configuration,\n variant: risksConfig.variant,\n filters: risksConfig.filters\n };\n createCalibrateDownload(input);\n };\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(TableWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n var tableHeader = data.getTable.table.headers;\n if (tableHeader) {\n return /*#__PURE__*/React.createElement(Table, {\n tableHeader: tableHeader,\n tableBody: data.getTable.table,\n variant: \"risks\",\n onDownload: handleCreateDownload\n });\n }\n return null;\n};\nvar GetRiskIntelligenceAlertControlsTableDocument = gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\\n query getRiskIntelligenceAlertControlsTable($input: TableInput!) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n }\\n}\\n \", \"\"], [\"\\n query getRiskIntelligenceAlertControlsTable($input: TableInput!) {\\n getTable(input: $input) {\\n id\\n title\\n table {\\n ...Table\\n }\\n }\\n}\\n \", \"\"])), TableFragmentDoc);\n/**\r\n * __useGetRiskIntelligenceAlertControlsTableQuery__\r\n *\r\n * To run a query within a React component, call `useGetRiskIntelligenceAlertControlsTableQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRiskIntelligenceAlertControlsTableQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRiskIntelligenceAlertControlsTableQuery({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\nfunction useGetRiskIntelligenceAlertControlsTableQuery(baseOptions) {\n return Apollo.useQuery(GetRiskIntelligenceAlertControlsTableDocument, baseOptions);\n}\nvar templateObject_1$1;\nvar ControlsTable = function (props) {\n var id = props.id,\n onInspectRow = props.onInspectRow,\n inspectedRow = props.inspectedRow;\n var _a = __read(React.useState(IRiskIntelligenceAlertInsightType.Index), 2),\n insightChoice = _a[0],\n setInsightChoice = _a[1];\n var createCalibrateDownload = useDownload().createCalibrateDownload;\n var onChangeInsight = function (value) {\n value === 'INDEX' ? setInsightChoice(IRiskIntelligenceAlertInsightType.Index) : setInsightChoice(IRiskIntelligenceAlertInsightType.BusinessLine);\n };\n var insightOptions = [{\n label: 'Firm Level Insight',\n value: IRiskIntelligenceAlertInsightType.Index\n }, {\n label: 'Business Line Level Insight',\n value: IRiskIntelligenceAlertInsightType.BusinessLine\n }];\n var controlsConfig = {\n configuration: [{\n groupKey: 'DATA_TYPE',\n filterValues: [{\n value: 'CONTROLS',\n label: 'Controls'\n }]\n }, {\n groupKey: 'SOURCE',\n filterValues: [{\n value: 'NETWORK',\n label: 'DEMO & Acin Index Controls'\n }]\n }, {\n groupKey: 'GROUP_BY',\n filterValues: [{\n value: 'RISK_INTELLIGENCE_ALERT',\n label: 'Regulators & Regulations'\n }]\n }, {\n groupKey: 'INSIGHT_BY',\n filterValues: [{\n value: insightChoice === 'INDEX' ? 'NETWORK_INVENTORY' : 'CLIENT_BUSINESS_LINE_INSIGHT_CODE',\n label: insightChoice === 'INDEX' ? 'Insights by Acin Index' : 'Insights by Business Line'\n }]\n }],\n filters: {\n groups: [{\n groupKey: 'RISK_INTELLIGENCE_ALERT',\n filterValues: [{\n label: 'Risk Intelligence Alert',\n value: id\n }]\n }]\n },\n variant: insightChoice === 'INDEX' ? ITableVariant.Distinct : ITableVariant.Instance,\n pagination: {\n page: 1,\n pageSize: 1,\n subPage: 1,\n subPageSize: 500\n }\n };\n var _b = useGetRiskIntelligenceAlertControlsTableQuery({\n variables: {\n input: controlsConfig\n },\n fetchPolicy: 'no-cache'\n }),\n data = _b.data,\n loading = _b.loading,\n error = _b.error;\n var handleCreateDownload = function () {\n var input = {\n title: \"Distinct Controls by Risk Intelligence Alert with Insights\",\n configuration: controlsConfig.configuration,\n variant: controlsConfig.variant,\n filters: controlsConfig.filters\n };\n createCalibrateDownload(input);\n };\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(TableWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n var tableHeader = data.getTable.table.headers;\n if (tableHeader) {\n return /*#__PURE__*/React.createElement(Table, {\n tableHeader: tableHeader,\n tableBody: data.getTable.table,\n variant: \"controls\",\n onInspectRow: onInspectRow,\n inspectedRow: inspectedRow,\n onChangeInsight: onChangeInsight,\n insightOptions: insightOptions,\n activeInsight: insightChoice,\n onDownload: handleCreateDownload\n });\n }\n return null;\n};\nvar getTab = function (tableVariant, cellKey) {\n if (tableVariant === ITableVariant.Distinct) {\n switch (cellKey) {\n case TableConfigurationHeaderKeys.NETWORK_INVENTORY:\n case TableConfigurationHeaderKeys.MATCHED_TO:\n case TableConfigurationHeaderKeys.BUSINESS_ORGANISATION:\n // Distinct Table should go to \"network-match\" tab\n // for cells MATCHED_TO and BUSINESS_ORGANISATION\n return 'network-match';\n case TableConfigurationHeaderKeys.CONTROL_CODE_AND_NAME:\n default:\n // Distinct Table should go to \"overview\" tab for cell CONTROL_CODE_AND_NAME\n return 'overview';\n }\n }\n // Instance Table should go to \"network-match\" tab\n return 'network-match';\n};\nvar RiskIntelligenceAlert$1 = function (props) {\n var className = props.className,\n id = props.id,\n onNavigate = props.onNavigate;\n var _a = __read(React.useState('overview'), 2),\n activeTab = _a[0],\n setActiveTab = _a[1];\n var activeTheme = useThemeProvider().activeTheme;\n // drawer and selected id to inspect:\n var _b = useDrawer(),\n toggleDrawer = _b.toggleDrawer,\n setDrawerState = _b.setDrawerState,\n isOpen = _b.isOpen;\n var drawerName = 'control-page';\n var _c = __read(React.useState(undefined), 2),\n inspectedRow = _c[0],\n setInspectedRow = _c[1];\n var _d = __read(React.useState(undefined), 2),\n controlId = _d[0],\n setControlId = _d[1];\n var _e = __read(React.useState(undefined), 2),\n insightById = _e[0],\n setInsightById = _e[1];\n var _f = __read(React.useState(undefined), 2),\n controlInstanceId = _f[0],\n setControlInstanceId = _f[1];\n var _g = __read(React.useState('overview'), 2),\n selectedTab = _g[0],\n setSelectedTab = _g[1];\n var _h = useGetRiskIntelligenceAlertQuery({\n variables: {\n input: {\n id: id\n }\n }\n }),\n data = _h.data,\n loading = _h.loading,\n error = _h.error;\n var risksData = useGetRiskIntelligenceAlertRisksChartQuery({\n variables: {\n input: {\n id: id\n }\n }\n }).data;\n var controlsData = useGetRiskIntelligenceAlertControlsChartQuery({\n variables: {\n input: {\n id: id\n }\n }\n }).data;\n var tabs = (controlsData === null || controlsData === void 0 ? void 0 : controlsData.getRiskIntelligenceAlertControlsChart.values.length) === 0 && (risksData === null || risksData === void 0 ? void 0 : risksData.getRiskIntelligenceAlertRisksChart.values.length) === 0 ? [{\n title: 'Overview',\n id: 'overview'\n }] : [{\n title: 'Overview',\n id: 'overview'\n }, {\n title: 'Read Across',\n id: 'read-across'\n }];\n if (error || !data) {\n return /*#__PURE__*/React.createElement(ErrorMessage, {\n error: error\n });\n }\n if (loading) {\n return /*#__PURE__*/React.createElement(LoadingWrapper, {\n \"data-testid\": generate(['loading-wrapper'], props)\n }, /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }));\n }\n var handleInspectRow = function (cellKey, cellInfo, rowId) {\n var id = cellInfo.entityId;\n var tab = getTab(ITableVariant.Distinct, cellKey);\n if (tab && cellInfo.businessOrgId) {\n setInsightById('BUSINESS_ORG');\n setSelectedTab(tab);\n setControlInstanceId(cellInfo.businessOrgId);\n } else if (tab && cellInfo.riskInventoryId) {\n setInsightById('INDEX');\n setSelectedTab(tab);\n setControlInstanceId(cellInfo.riskInventoryId);\n } else {\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n }\n setControlId(id);\n setInspectedRow(rowId);\n toggleDrawer(drawerName);\n };\n var overviewPage = /*#__PURE__*/React.createElement(OverviewContainer, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(Sidebar, null, /*#__PURE__*/React.createElement(RiskIntelligenceAlertRelatedData, {\n onClickRisk: function (id) {\n return id && onNavigate(id, 'AcinRisk');\n },\n id: id\n })), /*#__PURE__*/React.createElement(Body, null, /*#__PURE__*/React.createElement(Charts, null, /*#__PURE__*/React.createElement(ChartWrapper, null, /*#__PURE__*/React.createElement(RisksChart, {\n id: id,\n onExploreClick: function () {\n return setActiveTab('read-across');\n }\n })), /*#__PURE__*/React.createElement(ChartWrapper, null, /*#__PURE__*/React.createElement(ControlsChart, {\n id: id,\n onExploreClick: function () {\n return setActiveTab('read-across');\n }\n }))), /*#__PURE__*/React.createElement(Summary, null, /*#__PURE__*/React.createElement(RiskIntelligenceAlertSummary, {\n id: id\n }))));\n var dataMappingPage = /*#__PURE__*/React.createElement(DataMappingContainer, {\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(RisksTable, {\n id: id\n }), /*#__PURE__*/React.createElement(ControlsTable, {\n id: id,\n onInspectRow: handleInspectRow,\n inspectedRow: inspectedRow\n }));\n var handleReset = function () {\n setInspectedRow(undefined);\n setInsightById(undefined);\n setControlInstanceId(undefined);\n setSelectedTab('overview');\n };\n var handleInsightByIdChange = function (value) {\n setInsightById(value);\n setControlInstanceId(undefined);\n };\n var handleControlInstanceIdChange = function (value) {\n setControlInstanceId(value);\n };\n var handleChangeTab = function (tab) {\n setSelectedTab(tab);\n };\n var handleCloseDrawer = function () {\n if (isOpen(drawerName)) {\n handleReset();\n setDrawerState(false, drawerName);\n }\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RiskIntelligenceAlert$2, {\n \"data-testid\": generate(['risk-intelligence-alert'], props),\n className: className\n }, /*#__PURE__*/React.createElement(PageWrapper, {\n \"data-testid\": generate([], props),\n header: /*#__PURE__*/React.createElement(CompactHeader, {\n firstTier: /*#__PURE__*/React.createElement(FirstTier, {\n title: data.getRiskIntelligenceAlert.title\n }),\n secondTier: /*#__PURE__*/React.createElement(SecondTier, {\n activeTab: activeTab,\n onTabClick: setActiveTab,\n tabs: tabs\n })\n }),\n hasTabs: true\n }, activeTab === 'overview' ? overviewPage : dataMappingPage)), /*#__PURE__*/React.createElement(ReportDrawer, {\n drawerName: drawerName,\n controlId: controlId !== null && controlId !== void 0 ? controlId : '',\n controlInstanceId: controlInstanceId,\n insightById: insightById !== null && insightById !== void 0 ? insightById : '',\n selectedTab: selectedTab !== null && selectedTab !== void 0 ? selectedTab : '',\n onCloseDrawer: handleCloseDrawer,\n onNavigate: onNavigate,\n onChangeTab: handleChangeTab,\n onInsightByIdChange: handleInsightByIdChange,\n onControlInstanceIdChange: handleControlInstanceIdChange\n }));\n};\nvar RiskIntelligenceAlert = styled(RiskIntelligenceAlert$1)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1;\nvar typePolicies = {\n // We dont want to normalize on the id of this value, as each chart may have the same id come back for each row,\n // and if using cache, it will never update\n TableRefresherBarChartGroup: {\n keyFields: false\n },\n // Each count of these reports will change so the ID is not useful.\n RiskIntelligenceAnalysisReport: {\n keyFields: false\n },\n // The filters change the results, so the id is not so useful.\n RiskIntelligenceAnalysisPage: {\n keyFields: false\n },\n RiskIntelligenceAnalyticsControlListPage: {\n fields: {\n groups: {\n merge: false\n }\n }\n },\n RiskIntelligenceAnalyticsControlListGroup: {\n fields: {\n blocks: {\n merge: false\n }\n }\n }\n};\nexport { RiskIntelHub, RiskIntelligence, RiskIntelligenceAlert, typePolicies };","import React__default, { isValidElement, useRef, useLayoutEffect, useEffect, useReducer, cloneElement, useState, createElement } from 'react';\nimport cx from 'clsx';\nimport { render } from 'react-dom';\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction isNum(v) {\n return typeof v === 'number' && !isNaN(v);\n}\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\nfunction isStr(v) {\n return typeof v === 'string';\n}\nfunction isFn(v) {\n return typeof v === 'function';\n}\nfunction parseClassName(v) {\n return isStr(v) || isFn(v) ? v : null;\n}\nfunction isToastIdValid(toastId) {\n return toastId === 0 || toastId;\n}\nfunction getAutoCloseDelay(toastAutoClose, containerAutoClose) {\n return toastAutoClose === false || isNum(toastAutoClose) && toastAutoClose > 0 ? toastAutoClose : containerAutoClose;\n}\nvar canUseDom = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction canBeRendered(content) {\n return isValidElement(content) || isStr(content) || isFn(content) || isNum(content);\n}\nvar POSITION = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\nvar TYPE = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default',\n DARK: 'dark'\n};\n\n/**\r\n * Used to collapse toast after exit animation\r\n */\nfunction collapseToast(node, done, duration\n/* COLLAPSE_DURATION */) {\n if (duration === void 0) {\n duration = 300;\n }\n var height = node.scrollHeight;\n var style = node.style;\n requestAnimationFrame(function () {\n style.minHeight = 'initial';\n style.height = height + 'px';\n style.transition = \"all \" + duration + \"ms\";\n requestAnimationFrame(function () {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration);\n });\n });\n}\n\n/**\r\n * Css animation that just work.\r\n * You could use animate.css for instance\r\n *\r\n *\r\n * ```\r\n * cssTransition({\r\n * enter: \"animate__animated animate__bounceIn\",\r\n * exit: \"animate__animated animate__bounceOut\"\r\n * })\r\n * ```\r\n *\r\n */\n\nfunction cssTransition(_ref) {\n var enter = _ref.enter,\n exit = _ref.exit,\n _ref$appendPosition = _ref.appendPosition,\n appendPosition = _ref$appendPosition === void 0 ? false : _ref$appendPosition,\n _ref$collapse = _ref.collapse,\n collapse = _ref$collapse === void 0 ? true : _ref$collapse,\n _ref$collapseDuration = _ref.collapseDuration,\n collapseDuration = _ref$collapseDuration === void 0 ? 300 : _ref$collapseDuration;\n return function ToastTransition(_ref2) {\n var children = _ref2.children,\n position = _ref2.position,\n preventExitTransition = _ref2.preventExitTransition,\n done = _ref2.done,\n nodeRef = _ref2.nodeRef,\n isIn = _ref2.isIn;\n var enterClassName = appendPosition ? enter + \"--\" + position : enter;\n var exitClassName = appendPosition ? exit + \"--\" + position : exit;\n var baseClassName = useRef();\n var animationStep = useRef(0\n /* Enter */);\n useLayoutEffect(function () {\n onEnter();\n }, []);\n useEffect(function () {\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n function onEnter() {\n var node = nodeRef.current;\n baseClassName.current = node.className;\n node.className += \" \" + enterClassName;\n node.addEventListener('animationend', onEntered);\n }\n function onEntered() {\n var node = nodeRef.current;\n node.removeEventListener('animationend', onEntered);\n if (animationStep.current === 0\n /* Enter */) {\n node.className = baseClassName.current;\n }\n }\n function onExit() {\n animationStep.current = 1\n /* Exit */;\n var node = nodeRef.current;\n node.className += \" \" + exitClassName;\n node.addEventListener('animationend', onExited);\n }\n function onExited() {\n var node = nodeRef.current;\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n }\n return React__default.createElement(React__default.Fragment, null, children);\n };\n}\nvar eventManager = {\n list: /*#__PURE__*/new Map(),\n emitQueue: /*#__PURE__*/new Map(),\n on: function on(event, callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event).push(callback);\n return this;\n },\n off: function off(event, callback) {\n if (callback) {\n var cb = this.list.get(event).filter(function (cb) {\n return cb !== callback;\n });\n this.list.set(event, cb);\n return this;\n }\n this.list[\"delete\"](event);\n return this;\n },\n cancelEmit: function cancelEmit(event) {\n var timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach(clearTimeout);\n this.emitQueue[\"delete\"](event);\n }\n return this;\n },\n /**\r\n * Enqueue the event at the end of the call stack\r\n * Doing so let the user call toast as follow:\r\n * toast('1')\r\n * toast('2')\r\n * toast('3')\r\n * Without setTimemout the code above will not work\r\n */\n emit: function emit(event) {\n var _this = this;\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 this.list.has(event) && this.list.get(event).forEach(function (callback) {\n var timer = setTimeout(function () {\n // @ts-ignore\n callback.apply(void 0, args);\n }, 0);\n _this.emitQueue.has(event) || _this.emitQueue.set(event, []);\n _this.emitQueue.get(event).push(timer);\n });\n }\n};\n\n/**\r\n * `useKeeper` is a helper around `useRef`.\r\n *\r\n * You don't need to access the `.current`property to get the value\r\n * If refresh is set to true. The ref will be updated every render\r\n */\n\nfunction useKeeper(arg, refresh) {\n if (refresh === void 0) {\n refresh = false;\n }\n var ref = useRef(arg);\n useEffect(function () {\n if (refresh) ref.current = arg;\n });\n return ref.current;\n}\nfunction reducer(state, action) {\n switch (action.type) {\n case 0\n /* ADD */:\n return [].concat(state, [action.toastId]).filter(function (id) {\n return id !== action.staleId;\n });\n case 1\n /* REMOVE */:\n return isToastIdValid(action.toastId) ? state.filter(function (id) {\n return id !== action.toastId;\n }) : [];\n }\n}\nfunction useToastContainer(props) {\n var _useReducer = useReducer(function (x) {\n return x + 1;\n }, 0),\n forceUpdate = _useReducer[1];\n var _useReducer2 = useReducer(reducer, []),\n toast = _useReducer2[0],\n dispatch = _useReducer2[1];\n var containerRef = useRef(null);\n var toastCount = useKeeper(0);\n var queue = useKeeper([]);\n var collection = useKeeper({});\n var instance = useKeeper({\n toastKey: 1,\n displayedToast: 0,\n props: props,\n containerId: null,\n isToastActive: isToastActive,\n getToast: function getToast(id) {\n return collection[id] || null;\n }\n });\n useEffect(function () {\n instance.containerId = props.containerId;\n eventManager.cancelEmit(3\n /* WillUnmount */).on(0\n /* Show */, buildToast).on(1\n /* Clear */, function (toastId) {\n return containerRef.current && removeToast(toastId);\n }).on(5\n /* ClearWaitingQueue */, clearWaitingQueue).emit(2\n /* DidMount */, instance);\n return function () {\n return eventManager.emit(3\n /* WillUnmount */, instance);\n };\n }, []);\n useEffect(function () {\n instance.isToastActive = isToastActive;\n instance.displayedToast = toast.length;\n eventManager.emit(4\n /* Change */, toast.length, props.containerId);\n }, [toast]);\n useEffect(function () {\n instance.props = props;\n });\n function isToastActive(id) {\n return toast.indexOf(id) !== -1;\n }\n function clearWaitingQueue(_ref) {\n var containerId = _ref.containerId;\n var limit = instance.props.limit;\n if (limit && (!containerId || instance.containerId === containerId)) {\n toastCount -= queue.length;\n queue = [];\n }\n }\n function removeToast(toastId) {\n dispatch({\n type: 1\n /* REMOVE */,\n\n toastId: toastId\n });\n }\n function dequeueToast() {\n var _queue$shift = queue.shift(),\n toastContent = _queue$shift.toastContent,\n toastProps = _queue$shift.toastProps,\n staleId = _queue$shift.staleId;\n appendToast(toastContent, toastProps, staleId);\n }\n /**\r\n * check if a container is attached to the dom\r\n * check for multi-container, build only if associated\r\n * check for duplicate toastId if no update\r\n */\n\n function isNotValid(_ref2) {\n var containerId = _ref2.containerId,\n toastId = _ref2.toastId,\n updateId = _ref2.updateId;\n return !containerRef.current || instance.props.enableMultiContainer && containerId !== instance.props.containerId || collection[toastId] && updateId == null ? true : false;\n } // this function and all the function called inside needs to rely on ref(`useKeeper`)\n\n function buildToast(content, _ref3) {\n var delay = _ref3.delay,\n staleId = _ref3.staleId,\n options = _objectWithoutPropertiesLoose(_ref3, [\"delay\", \"staleId\"]);\n if (!canBeRendered(content) || isNotValid(options)) return;\n var toastId = options.toastId,\n updateId = options.updateId;\n var props = instance.props;\n var closeToast = function closeToast() {\n return removeToast(toastId);\n };\n var isNotAnUpdate = options.updateId == null;\n if (isNotAnUpdate) toastCount++;\n var toastProps = {\n toastId: toastId,\n updateId: updateId,\n isIn: false,\n key: options.key || instance.toastKey++,\n type: options.type,\n closeToast: closeToast,\n closeButton: options.closeButton,\n rtl: props.rtl,\n position: options.position || props.position,\n transition: options.transition || props.transition,\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(options.bodyClassName || props.bodyClassName),\n style: options.style || props.toastStyle,\n bodyStyle: options.bodyStyle || props.bodyStyle,\n onClick: options.onClick || props.onClick,\n pauseOnHover: isBool(options.pauseOnHover) ? options.pauseOnHover : props.pauseOnHover,\n pauseOnFocusLoss: isBool(options.pauseOnFocusLoss) ? options.pauseOnFocusLoss : props.pauseOnFocusLoss,\n draggable: isBool(options.draggable) ? options.draggable : props.draggable,\n draggablePercent: isNum(options.draggablePercent) ? options.draggablePercent : props.draggablePercent,\n draggableDirection: options.draggableDirection || props.draggableDirection,\n closeOnClick: isBool(options.closeOnClick) ? options.closeOnClick : props.closeOnClick,\n progressClassName: parseClassName(options.progressClassName || props.progressClassName),\n progressStyle: options.progressStyle || props.progressStyle,\n autoClose: getAutoCloseDelay(options.autoClose, props.autoClose),\n hideProgressBar: isBool(options.hideProgressBar) ? options.hideProgressBar : props.hideProgressBar,\n progress: options.progress,\n role: isStr(options.role) ? options.role : props.role,\n deleteToast: function deleteToast() {\n removeFromCollection(toastId);\n }\n };\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose; // tweak for vertical dragging\n\n if (toastProps.draggableDirection === \"y\"\n /* Y */ && toastProps.draggablePercent === 80\n /* DRAGGABLE_PERCENT */) {\n toastProps.draggablePercent *= 1.5;\n }\n var closeButton = props.closeButton;\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n closeButton = canBeRendered(props.closeButton) ? props.closeButton : true;\n }\n toastProps.closeButton = closeButton;\n var toastContent = content;\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content, {\n closeToast: closeToast,\n toastProps: toastProps\n });\n } else if (isFn(content)) {\n toastContent = content({\n closeToast: closeToast,\n toastProps: toastProps\n });\n } // not handling limit + delay by design. Waiting for user feedback first\n\n if (props.limit && props.limit > 0 && toastCount > props.limit && isNotAnUpdate) {\n queue.push({\n toastContent: toastContent,\n toastProps: toastProps,\n staleId: staleId\n });\n } else if (isNum(delay) && delay > 0) {\n setTimeout(function () {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n function appendToast(content, toastProps, staleId) {\n var toastId = toastProps.toastId;\n if (staleId) delete collection[staleId];\n collection[toastId] = {\n content: content,\n props: toastProps\n };\n dispatch({\n type: 0\n /* ADD */,\n\n toastId: toastId,\n staleId: staleId\n });\n }\n function removeFromCollection(toastId) {\n delete collection[toastId];\n var queueLen = queue.length;\n toastCount = isToastIdValid(toastId) ? toastCount - 1 : toastCount - instance.displayedToast;\n if (toastCount < 0) toastCount = 0;\n if (queueLen > 0) {\n var freeSlot = isToastIdValid(toastId) ? 1 : instance.props.limit;\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n var toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n for (var i = 0; i < toDequeue; i++) {\n dequeueToast();\n }\n }\n } else {\n forceUpdate();\n }\n }\n function getToastToRender(cb) {\n var toastToRender = {};\n var toastList = props.newestOnTop ? Object.keys(collection).reverse() : Object.keys(collection);\n for (var i = 0; i < toastList.length; i++) {\n var _toast = collection[toastList[i]];\n var position = _toast.props.position;\n toastToRender[position] || (toastToRender[position] = []);\n toastToRender[position].push(_toast);\n }\n return Object.keys(toastToRender).map(function (p) {\n return cb(p, toastToRender[p]);\n });\n }\n return {\n getToastToRender: getToastToRender,\n collection: collection,\n containerRef: containerRef,\n isToastActive: isToastActive\n };\n}\nfunction getX(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientX : e.clientX;\n}\nfunction getY(e) {\n return e.targetTouches && e.targetTouches.length >= 1 ? e.targetTouches[0].clientY : e.clientY;\n}\nfunction useToast(props) {\n var _useState = useState(true),\n isRunning = _useState[0],\n setIsRunning = _useState[1];\n var _useState2 = useState(false),\n preventExitTransition = _useState2[0],\n setPreventExitTransition = _useState2[1];\n var toastRef = useRef(null);\n var drag = useKeeper({\n start: 0,\n x: 0,\n y: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null\n });\n var syncProps = useKeeper(props, true);\n var autoClose = props.autoClose,\n pauseOnHover = props.pauseOnHover,\n closeToast = props.closeToast,\n onClick = props.onClick,\n closeOnClick = props.closeOnClick;\n useEffect(function () {\n if (isFn(props.onOpen)) props.onOpen(isValidElement(props.children) && props.children.props);\n return function () {\n if (isFn(syncProps.onClose)) syncProps.onClose(isValidElement(syncProps.children) && syncProps.children.props);\n };\n }, []);\n useEffect(function () {\n props.draggable && bindDragEvents();\n return function () {\n props.draggable && unbindDragEvents();\n };\n }, [props.draggable]);\n useEffect(function () {\n props.pauseOnFocusLoss && bindFocusEvents();\n return function () {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n function onDragStart(e) {\n if (props.draggable) {\n var toast = toastRef.current;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.x = getX(e.nativeEvent);\n drag.y = getY(e.nativeEvent);\n if (props.draggableDirection === \"x\"\n /* X */) {\n drag.start = drag.x;\n drag.removalDistance = toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = drag.y;\n drag.removalDistance = toast.offsetHeight * (props.draggablePercent / 100);\n }\n }\n }\n function onDragTransitionEnd() {\n if (drag.boundingRect) {\n var _drag$boundingRect = drag.boundingRect,\n top = _drag$boundingRect.top,\n bottom = _drag$boundingRect.bottom,\n left = _drag$boundingRect.left,\n right = _drag$boundingRect.right;\n if (props.pauseOnHover && drag.x >= left && drag.x <= right && drag.y >= top && drag.y <= bottom) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n function playToast() {\n setIsRunning(true);\n }\n function pauseToast() {\n setIsRunning(false);\n }\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n function bindDragEvents() {\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n function onDragMove(e) {\n if (drag.canDrag) {\n e.preventDefault();\n var toast = toastRef.current;\n if (isRunning) pauseToast();\n drag.x = getX(e);\n drag.y = getY(e);\n if (props.draggableDirection === \"x\"\n /* X */) {\n drag.delta = drag.x - drag.start;\n } else {\n drag.delta = drag.y - drag.start;\n } // prevent false positif during a toast click\n\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n toast.style.transform = \"translate\" + props.draggableDirection + \"(\" + drag.delta + \"px)\";\n toast.style.opacity = \"\" + (1 - Math.abs(drag.delta / drag.removalDistance));\n }\n }\n function onDragEnd() {\n var toast = toastRef.current;\n if (drag.canDrag) {\n drag.canDrag = false;\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = \"translate\" + props.draggableDirection + \"(0)\";\n toast.style.opacity = '1';\n }\n }\n var eventHandlers = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n } // prevent toast from closing when user drags the toast\n\n if (closeOnClick) {\n eventHandlers.onClick = function (e) {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n return {\n playToast: playToast,\n pauseToast: pauseToast,\n isRunning: isRunning,\n preventExitTransition: preventExitTransition,\n toastRef: toastRef,\n eventHandlers: eventHandlers\n };\n}\nfunction CloseButton(_ref) {\n var closeToast = _ref.closeToast,\n type = _ref.type,\n _ref$ariaLabel = _ref.ariaLabel,\n ariaLabel = _ref$ariaLabel === void 0 ? 'close' : _ref$ariaLabel;\n return createElement(\"button\", {\n className: \"Toastify\"\n /* CSS_NAMESPACE */ + \"__close-button \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__close-button--\" + type,\n type: \"button\",\n onClick: function onClick(e) {\n e.stopPropagation();\n closeToast(e);\n },\n \"aria-label\": ariaLabel\n }, createElement(\"svg\", {\n \"aria-hidden\": \"true\",\n viewBox: \"0 0 14 16\"\n }, createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z\"\n })));\n}\nfunction ProgressBar(_ref) {\n var _cx, _animationEvent;\n var delay = _ref.delay,\n isRunning = _ref.isRunning,\n closeToast = _ref.closeToast,\n type = _ref.type,\n hide = _ref.hide,\n className = _ref.className,\n userStyle = _ref.style,\n controlledProgress = _ref.controlledProgress,\n progress = _ref.progress,\n rtl = _ref.rtl,\n isIn = _ref.isIn;\n var style = _extends({}, userStyle, {\n animationDuration: delay + \"ms\",\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1\n });\n if (controlledProgress) style.transform = \"scaleX(\" + progress + \")\";\n var defaultClassName = cx(\"Toastify\"\n /* CSS_NAMESPACE */ + \"__progress-bar\", controlledProgress ? \"Toastify\"\n /* CSS_NAMESPACE */ + \"__progress-bar--controlled\" : \"Toastify\"\n /* CSS_NAMESPACE */ + \"__progress-bar--animated\", \"Toastify\"\n /* CSS_NAMESPACE */ + \"__progress-bar--\" + type, (_cx = {}, _cx[\"Toastify\"\n /* CSS_NAMESPACE */ + \"__progress-bar--rtl\"] = rtl, _cx));\n var classNames = isFn(className) ? className({\n rtl: rtl,\n type: type,\n defaultClassName: defaultClassName\n }) : cx(defaultClassName, className); // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n\n var animationEvent = (_animationEvent = {}, _animationEvent[controlledProgress && progress >= 1 ? 'onTransitionEnd' : 'onAnimationEnd'] = controlledProgress && progress < 1 ? null : function () {\n isIn && closeToast();\n }, _animationEvent); // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return createElement(\"div\", Object.assign({\n role: \"progressbar\",\n \"aria-hidden\": hide ? 'true' : 'false',\n \"aria-label\": \"notification timer\",\n className: classNames,\n style: style\n }, animationEvent));\n}\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\nvar Toast = function Toast(props) {\n var _cx;\n var _useToast = useToast(props),\n isRunning = _useToast.isRunning,\n preventExitTransition = _useToast.preventExitTransition,\n toastRef = _useToast.toastRef,\n eventHandlers = _useToast.eventHandlers;\n var closeButton = props.closeButton,\n children = props.children,\n autoClose = props.autoClose,\n onClick = props.onClick,\n type = props.type,\n hideProgressBar = props.hideProgressBar,\n closeToast = props.closeToast,\n Transition = props.transition,\n position = props.position,\n className = props.className,\n style = props.style,\n bodyClassName = props.bodyClassName,\n bodyStyle = props.bodyStyle,\n progressClassName = props.progressClassName,\n progressStyle = props.progressStyle,\n updateId = props.updateId,\n role = props.role,\n progress = props.progress,\n rtl = props.rtl,\n toastId = props.toastId,\n deleteToast = props.deleteToast,\n isIn = props.isIn;\n var defaultClassName = cx(\"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast\", \"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast--\" + type, (_cx = {}, _cx[\"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast--rtl\"] = rtl, _cx));\n var cssClasses = isFn(className) ? className({\n rtl: rtl,\n position: position,\n type: type,\n defaultClassName: defaultClassName\n }) : cx(defaultClassName, className);\n var isProgressControlled = !!progress;\n function renderCloseButton(closeButton) {\n if (!closeButton) return;\n var props = {\n closeToast: closeToast,\n type: type\n };\n if (isFn(closeButton)) return closeButton(props);\n if (isValidElement(closeButton)) return cloneElement(closeButton, props);\n }\n return createElement(Transition, {\n isIn: isIn,\n done: deleteToast,\n position: position,\n preventExitTransition: preventExitTransition,\n nodeRef: toastRef\n }, createElement(\"div\", Object.assign({\n id: toastId,\n onClick: onClick,\n className: cssClasses\n }, eventHandlers, {\n style: style,\n ref: toastRef\n }), createElement(\"div\", Object.assign({}, isIn && {\n role: role\n }, {\n className: isFn(bodyClassName) ? bodyClassName({\n type: type\n }) : cx(\"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast-body\", bodyClassName),\n style: bodyStyle\n }), children), renderCloseButton(closeButton), (autoClose || isProgressControlled) && createElement(ProgressBar, Object.assign({}, updateId && !isProgressControlled ? {\n key: \"pb-\" + updateId\n } : {}, {\n rtl: rtl,\n delay: autoClose,\n isRunning: isRunning,\n isIn: isIn,\n closeToast: closeToast,\n hide: hideProgressBar,\n type: type,\n style: progressStyle,\n className: progressClassName,\n controlledProgress: isProgressControlled,\n progress: progress\n }))));\n};\nvar Bounce = /*#__PURE__*/cssTransition({\n enter: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__bounce-enter\",\n exit: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__bounce-exit\",\n appendPosition: true\n});\nvar Slide = /*#__PURE__*/cssTransition({\n enter: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__slide-enter\",\n exit: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__slide-exit\",\n appendPosition: true\n});\nvar Zoom = /*#__PURE__*/cssTransition({\n enter: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__zoom-enter\",\n exit: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__zoom-exit\"\n});\nvar Flip = /*#__PURE__*/cssTransition({\n enter: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__flip-enter\",\n exit: \"Toastify\"\n /* CSS_NAMESPACE */ + \"--animate \" + \"Toastify\"\n /* CSS_NAMESPACE */ + \"__flip-exit\"\n});\nvar ToastContainer = function ToastContainer(props) {\n var _useToastContainer = useToastContainer(props),\n getToastToRender = _useToastContainer.getToastToRender,\n containerRef = _useToastContainer.containerRef,\n isToastActive = _useToastContainer.isToastActive;\n var className = props.className,\n style = props.style,\n rtl = props.rtl,\n containerId = props.containerId;\n function getClassName(position) {\n var _cx;\n var defaultClassName = cx(\"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast-container\", \"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast-container--\" + position, (_cx = {}, _cx[\"Toastify\"\n /* CSS_NAMESPACE */ + \"__toast-container--rtl\"] = rtl, _cx));\n return isFn(className) ? className({\n position: position,\n rtl: rtl,\n defaultClassName: defaultClassName\n }) : cx(defaultClassName, parseClassName(className));\n }\n return createElement(\"div\", {\n ref: containerRef,\n className: \"Toastify\"\n /* CSS_NAMESPACE */,\n\n id: containerId\n }, getToastToRender(function (position, toastList) {\n var containerStyle = toastList.length === 0 ? _extends({}, style, {\n pointerEvents: 'none'\n }) : _extends({}, style);\n return createElement(\"div\", {\n className: getClassName(position),\n style: containerStyle,\n key: \"container-\" + position\n }, toastList.map(function (_ref) {\n var content = _ref.content,\n toastProps = _ref.props;\n return createElement(Toast, Object.assign({}, toastProps, {\n isIn: isToastActive(toastProps.toastId),\n key: \"toast-\" + toastProps.key,\n closeButton: toastProps.closeButton === true ? CloseButton : toastProps.closeButton\n }), content);\n }));\n }));\n};\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: 80\n /* DRAGGABLE_PERCENT */,\n\n draggableDirection: \"x\"\n /* X */,\n\n role: 'alert'\n};\nvar containers = /*#__PURE__*/new Map();\nvar latestInstance;\nvar containerDomNode;\nvar containerConfig;\nvar queue = [];\nvar lazy = false;\n/**\r\n * Check whether any container is currently mounted in the DOM\r\n */\n\nfunction isAnyContainerMounted() {\n return containers.size > 0;\n}\n/**\r\n * Get the toast by id, given it's in the DOM, otherwise returns null\r\n */\n\nfunction getToast(toastId, _ref) {\n var containerId = _ref.containerId;\n var container = containers.get(containerId || latestInstance);\n if (!container) return null;\n return container.getToast(toastId);\n}\n/**\r\n * Generate a random toastId\r\n */\n\nfunction generateToastId() {\n return Math.random().toString(36).substr(2, 9);\n}\n/**\r\n * Generate a toastId or use the one provided\r\n */\n\nfunction getToastId(options) {\n if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n return options.toastId;\n }\n return generateToastId();\n}\n/**\r\n * If the container is not mounted, the toast is enqueued and\r\n * the container lazy mounted\r\n */\n\nfunction dispatchToast(content, options) {\n if (isAnyContainerMounted()) {\n eventManager.emit(0\n /* Show */, content, options);\n } else {\n queue.push({\n content: content,\n options: options\n });\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(createElement(ToastContainer, Object.assign({}, containerConfig)), containerDomNode);\n }\n }\n return options.toastId;\n}\n/**\r\n * Merge provided options with the defaults settings and generate the toastId\r\n */\n\nfunction mergeOptions(type, options) {\n return _extends({}, options, {\n type: options && options.type || type,\n toastId: getToastId(options)\n });\n}\nvar createToastByType = function createToastByType(type) {\n return function (content, options) {\n return dispatchToast(content, mergeOptions(type, options));\n };\n};\nvar toast = function toast(content, options) {\n return dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n};\ntoast.success = /*#__PURE__*/createToastByType(TYPE.SUCCESS);\ntoast.info = /*#__PURE__*/createToastByType(TYPE.INFO);\ntoast.error = /*#__PURE__*/createToastByType(TYPE.ERROR);\ntoast.warning = /*#__PURE__*/createToastByType(TYPE.WARNING);\ntoast.dark = /*#__PURE__*/createToastByType(TYPE.DARK);\ntoast.warn = toast.warning;\n/**\r\n * Remove toast programmaticaly\r\n */\n\ntoast.dismiss = function (id) {\n return eventManager.emit(1\n /* Clear */, id);\n};\n/**\r\n * Clear waiting queue when limit is used\r\n */\n\ntoast.clearWaitingQueue = function (params) {\n if (params === void 0) {\n params = {};\n }\n return eventManager.emit(5\n /* ClearWaitingQueue */, params);\n};\n/**\r\n * return true if one container is displaying the toast\r\n */\n\ntoast.isActive = function (id) {\n var isToastActive = false;\n containers.forEach(function (container) {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n return isToastActive;\n};\ntoast.update = function (toastId, options) {\n if (options === void 0) {\n options = {};\n }\n\n // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n setTimeout(function () {\n var toast = getToast(toastId, options);\n if (toast) {\n var oldOptions = toast.props,\n oldContent = toast.content;\n var nextOptions = _extends({}, oldOptions, options, {\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n });\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n var content = nextOptions.render || oldContent;\n delete nextOptions.render;\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n/**\r\n * Used for controlled progress bar.\r\n */\n\ntoast.done = function (id) {\n toast.update(id, {\n progress: 1\n });\n};\n/**\r\n * Track changes. The callback get the number of toast displayed\r\n *\r\n */\n\ntoast.onChange = function (callback) {\n if (isFn(callback)) {\n eventManager.on(4\n /* Change */, callback);\n }\n return function () {\n isFn(callback) && eventManager.off(4\n /* Change */, callback);\n };\n};\n/**\r\n * Configure the ToastContainer when lazy mounted\r\n */\n\ntoast.configure = function (config) {\n if (config === void 0) {\n config = {};\n }\n lazy = true;\n containerConfig = config;\n};\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n/**\r\n * Wait until the ToastContainer is mounted to dispatch the toast\r\n * and attach isActive method\r\n */\n\neventManager.on(2\n/* DidMount */, function (containerInstance) {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n queue.forEach(function (item) {\n eventManager.emit(0\n /* Show */, item.content, item.options);\n });\n queue = [];\n}).on(3\n/* WillUnmount */, function (containerInstance) {\n containers[\"delete\"](containerInstance.containerId || containerInstance);\n if (containers.size === 0) {\n eventManager.off(0\n /* Show */).off(1\n /* Clear */).off(5\n /* ClearWaitingQueue */);\n }\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n});\nexport { Bounce, Flip, Slide, ToastContainer, Zoom, collapseToast, cssTransition, toast, useToast, useToastContainer };\n//# sourceMappingURL=react-toastify.esm.js.map","import styled from 'styled-components';\nimport React, { useState, useEffect, useMemo } from 'react';\nimport { PageHeader, generate, PageHeaderTitleBar, Button, PageHeaderTabsBar, DropdownMenu, View, Card, Modal, Validation, Text, Input, Heading, Loading, Checkbox, Alert, IconKebabVertical, ListItem, List, Select, Label, Table, THead, Row, HeadCell, TBody, Cell, IconButton, confirmationModal, PageHeaderToolBar, PageHeaderCondensed } from '@acin/ui-core';\nimport { toast, ToastContainer } from 'react-toastify';\nimport { gql, useQuery, useMutation } from '@apollo/client';\nimport 'react-toastify/dist/ReactToastify.css';\n\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***************************************************************************** */\n\nvar __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};\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar AccountHeader = styled(PageHeader)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1;\nvar AccountHeader$1 = function (props) {\n var tabsBarItems = props.tabsBarItems,\n setActiveTab = props.setActiveTab,\n activeTab = props.activeTab,\n searchToolBar = props.searchToolBar,\n setAddAccountModal = props.setAddAccountModal,\n setAddUserModal = props.setAddUserModal;\n var dropdownContentCom = function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function (item) {\n item.action();\n onClose();\n },\n items: [{\n label: 'Add New Account',\n id: 'account',\n action: function () {\n setAddAccountModal && setAddAccountModal();\n }\n }, {\n label: 'Add New User',\n id: 'user',\n action: function () {\n setAddUserModal && setAddUserModal();\n }\n }]\n });\n };\n return /*#__PURE__*/React.createElement(AccountHeader, {\n \"data-testid\": generate(['account-header'], props),\n titleBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderTitleBar, {\n mainTitleText: \"Manage Accounts\",\n variant: \"parent\",\n renderCta: function () {\n return /*#__PURE__*/React.createElement(Button, {\n dropdownContent: dropdownContentCom,\n variant: \"secondary\",\n label: \"Add New\",\n onClick: function () {\n return toast('add');\n }\n });\n }\n });\n },\n variant: \"parent\",\n toolBar: searchToolBar,\n tabsBar: function () {\n return /*#__PURE__*/React.createElement(PageHeaderTabsBar, {\n onClick: function (item) {\n return setActiveTab(item);\n },\n activeId: activeTab,\n items: tabsBarItems\n });\n }\n });\n};\nvar AccountList = styled(View)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar ListWrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"])));\nvar TableContentView = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n padding: \", \";\\n min-height: \", \";\\n position: relative;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n padding: \", \";\\n min-height: \", \";\\n position: relative;\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(90);\n});\nvar CardWithMargin = styled(Card)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n margin-bottom: 10px;\\n\"], [\"\\n margin-bottom: 10px;\\n\"])));\nvar AccountLabel = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n display: inline-flex;\\n margin-left: 10px;\\n\"], [\"\\n display: inline-flex;\\n margin-left: 10px;\\n\"])));\nvar AddUser = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: flex-end;\\n margin: 10px 0;\\n\"], [\"\\n display: flex;\\n justify-content: flex-end;\\n margin: 10px 0;\\n\"])));\nvar FadedModal = styled(Modal)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\"], [\"\"])));\nvar ErroMessage = styled(Validation)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n margin: 10px 0;\\n padding: 10px;\\n\"], [\"\\n margin: 10px 0;\\n padding: 10px;\\n\"])));\nvar TotalMessageDisplay = styled(Text)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n padding: 10px 0;\\n\"], [\"\\n padding: 10px 0;\\n\"])));\nvar ModalSubMessage = styled.div(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n padding-bottom: 10px;\\n border-bottom: solid 1px #ddd;\\n margin-bottom: 20px;\\n\"], [\"\\n padding-bottom: 10px;\\n border-bottom: solid 1px #ddd;\\n margin-bottom: 20px;\\n\"])));\nvar FormItemContainer = styled.div(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n padding: 10px 0px;\\n\"], [\"\\n padding: 10px 0px;\\n\"])));\nvar templateObject_1$1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11;\nvar GetAccountsDocument = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n query getAccounts {\\n getAccounts {\\n id\\n name\\n status\\n code\\n users {\\n name\\n }\\n permittedRiskInventories {\\n name\\n id\\n }\\n }\\n }\\n\"], [\"\\n query getAccounts {\\n getAccounts {\\n id\\n name\\n status\\n code\\n users {\\n name\\n }\\n permittedRiskInventories {\\n name\\n id\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetAccountsQuery__\r\n *\r\n * To run a query within a React component, call `useGetAccountsQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAccountsQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAccountsQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetAccountsQuery(baseOptions) {\n return useQuery(GetAccountsDocument, baseOptions);\n}\nvar templateObject_1$2;\nvar AccountUsersModal = styled(Modal)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar CreateNewUserPanel = styled.div(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n background-color: #f7f7f7;\\n padding: 10px;\\n margin: 10px 0;\\n\"], [\"\\n background-color: #f7f7f7;\\n padding: 10px;\\n margin: 10px 0;\\n\"])));\nvar UserInfoInputGroup = styled.div(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar UserPanel = styled.div(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n border-bottom: solid 1px #dddddd;\\n padding: 10px;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n border-bottom: solid 1px #dddddd;\\n padding: 10px;\\n\"])));\nvar InputItem = styled(Input)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n margin-right: 5px;\\n width: 200px;\\n\"], [\"\\n margin-right: 5px;\\n width: 200px;\\n\"])));\nvar ActionsButton = styled(Button)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1, templateObject_6$1;\nvar GetAccountDocument = gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n query getAccount($id: ID!) {\\n getAccount(id: $id) {\\n id\\n name\\n users {\\n id\\n name\\n email\\n }\\n }\\n }\\n\"], [\"\\n query getAccount($id: ID!) {\\n getAccount(id: $id) {\\n id\\n name\\n users {\\n id\\n name\\n email\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetAccountQuery__\r\n *\r\n * To run a query within a React component, call `useGetAccountQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAccountQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAccountQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useGetAccountQuery(baseOptions) {\n return useQuery(GetAccountDocument, baseOptions);\n}\nvar GetUserDocument = gql(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n query getUser($id: ID!) {\\n getUser(id: $id) {\\n id\\n name\\n account {\\n id\\n name\\n }\\n }\\n }\\n\"], [\"\\n query getUser($id: ID!) {\\n getUser(id: $id) {\\n id\\n name\\n account {\\n id\\n name\\n }\\n }\\n }\\n\"])));\nvar templateObject_1$4, templateObject_2$2;\nvar AddUserDocument = gql(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\\n mutation addUser($input: AddUserInput!) {\\n addUser(input: $input) {\\n name\\n firstName\\n lastName\\n id\\n }\\n }\\n\"], [\"\\n mutation addUser($input: AddUserInput!) {\\n addUser(input: $input) {\\n name\\n firstName\\n lastName\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useAddUserMutation__\r\n *\r\n * To run a mutation, you first call `useAddUserMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useAddUserMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [addUserMutation, { data, loading, error }] = useAddUserMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useAddUserMutation(baseOptions) {\n return useMutation(AddUserDocument, baseOptions);\n}\nvar RemoveUserDocument = gql(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n mutation removeUser($id: ID!) {\\n removeUser(id: $id)\\n }\\n\"], [\"\\n mutation removeUser($id: ID!) {\\n removeUser(id: $id)\\n }\\n\"])));\n/**\r\n * __useRemoveUserMutation__\r\n *\r\n * To run a mutation, you first call `useRemoveUserMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRemoveUserMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [removeUserMutation, { data, loading, error }] = useRemoveUserMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useRemoveUserMutation(baseOptions) {\n return useMutation(RemoveUserDocument, baseOptions);\n}\nvar UpdateUserDocument = gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n mutation updateUser($id: ID!, $input: UpdateUserInput!) {\\n updateUser(id: $id, input: $input) {\\n id\\n firstName\\n lastName\\n name\\n }\\n }\\n\"], [\"\\n mutation updateUser($id: ID!, $input: UpdateUserInput!) {\\n updateUser(id: $id, input: $input) {\\n id\\n firstName\\n lastName\\n name\\n }\\n }\\n\"])));\n/**\r\n * __useUpdateUserMutation__\r\n *\r\n * To run a mutation, you first call `useUpdateUserMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useUpdateUserMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [updateUserMutation, { data, loading, error }] = useUpdateUserMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useUpdateUserMutation(baseOptions) {\n return useMutation(UpdateUserDocument, baseOptions);\n}\nvar InviteUserDocument = gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n mutation inviteUser($input: UserInvitationInput!) {\\n sendUserInvitation(input: $input)\\n }\\n\"], [\"\\n mutation inviteUser($input: UserInvitationInput!) {\\n sendUserInvitation(input: $input)\\n }\\n\"])));\n/**\r\n * __useInviteUserMutation__\r\n *\r\n * To run a mutation, you first call `useInviteUserMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useInviteUserMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [inviteUserMutation, { data, loading, error }] = useInviteUserMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useInviteUserMutation(baseOptions) {\n return useMutation(InviteUserDocument, baseOptions);\n}\nvar templateObject_1$5, templateObject_2$3, templateObject_3$2, templateObject_4$2;\nvar UserManagment = styled(Modal)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar UserTitle = styled(Heading)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar AccountContainer = styled('div')(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n padding: 10px;\\n\"], [\"\\n padding: 10px;\\n\"])));\nvar RoleContentContainer = styled('div')(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar LoadingContent = styled(Loading)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n padding: 10px;\\n\"], [\"\\n padding: 10px;\\n\"])));\nvar RoleCheckBox = styled(Checkbox)(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n margin: 5px 0;\\n\"], [\"\\n margin: 5px 0;\\n\"])));\nvar RoleLabelName = styled(Text)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n margin-left: 10px;\\n\"], [\"\\n margin-left: 10px;\\n\"])));\nvar CounterText = styled(Text)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2, templateObject_6$2, templateObject_7$1, templateObject_8$1;\nvar GetRolesQueryDocument = gql(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\\n query getRolesQuery($getRolesUserId: ID) {\\n getRoles(userId: $getRolesUserId) {\\n name\\n description\\n id\\n }\\n }\\n\"], [\"\\n query getRolesQuery($getRolesUserId: ID) {\\n getRoles(userId: $getRolesUserId) {\\n name\\n description\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useGetRolesQueryQuery__\r\n *\r\n * To run a query within a React component, call `useGetRolesQueryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetRolesQueryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetRolesQueryQuery({\r\n * variables: {\r\n * getRolesUserId: // value for 'getRolesUserId'\r\n * },\r\n * });\r\n */\n\nfunction useGetRolesQueryQuery(baseOptions) {\n return useQuery(GetRolesQueryDocument, baseOptions);\n}\nvar GetUserByIdQueryDocument = gql(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\\n query getUserByIdQuery($getUserById: ID!) {\\n getUser(id: $getUserById) {\\n name\\n firstName\\n lastName\\n email\\n account {\\n name\\n }\\n }\\n }\\n\"], [\"\\n query getUserByIdQuery($getUserById: ID!) {\\n getUser(id: $getUserById) {\\n name\\n firstName\\n lastName\\n email\\n account {\\n name\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetUserByIdQueryQuery__\r\n *\r\n * To run a query within a React component, call `useGetUserByIdQueryQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUserByIdQueryQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUserByIdQueryQuery({\r\n * variables: {\r\n * getUserById: // value for 'getUserById'\r\n * },\r\n * });\r\n */\n\nfunction useGetUserByIdQueryQuery(baseOptions) {\n return useQuery(GetUserByIdQueryDocument, baseOptions);\n}\nvar templateObject_1$7, templateObject_2$5;\nvar AssignRoleToUserMutationDocument = gql(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n mutation assignRoleToUserMutation($assignRoleToUserUserId: ID!, $assignRoleToUserRoles: [String!]!) {\\n assignRoleToUser(userId: $assignRoleToUserUserId, roles: $assignRoleToUserRoles)\\n }\\n\"], [\"\\n mutation assignRoleToUserMutation($assignRoleToUserUserId: ID!, $assignRoleToUserRoles: [String!]!) {\\n assignRoleToUser(userId: $assignRoleToUserUserId, roles: $assignRoleToUserRoles)\\n }\\n\"])));\n/**\r\n * __useAssignRoleToUserMutationMutation__\r\n *\r\n * To run a mutation, you first call `useAssignRoleToUserMutationMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useAssignRoleToUserMutationMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [assignRoleToUserMutationMutation, { data, loading, error }] = useAssignRoleToUserMutationMutation({\r\n * variables: {\r\n * assignRoleToUserUserId: // value for 'assignRoleToUserUserId'\r\n * assignRoleToUserRoles: // value for 'assignRoleToUserRoles'\r\n * },\r\n * });\r\n */\n\nfunction useAssignRoleToUserMutationMutation(baseOptions) {\n return useMutation(AssignRoleToUserMutationDocument, baseOptions);\n}\nvar RemoveRolesFromUserMutationDocument = gql(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\\n mutation RemoveRolesFromUserMutation($removeRolesFromUserUserId: ID!, $removeRolesFromUserRoles: [String!]!) {\\n removeRolesFromUser(userId: $removeRolesFromUserUserId, roles: $removeRolesFromUserRoles)\\n }\\n\"], [\"\\n mutation RemoveRolesFromUserMutation($removeRolesFromUserUserId: ID!, $removeRolesFromUserRoles: [String!]!) {\\n removeRolesFromUser(userId: $removeRolesFromUserUserId, roles: $removeRolesFromUserRoles)\\n }\\n\"])));\n/**\r\n * __useRemoveRolesFromUserMutationMutation__\r\n *\r\n * To run a mutation, you first call `useRemoveRolesFromUserMutationMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useRemoveRolesFromUserMutationMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [removeRolesFromUserMutationMutation, { data, loading, error }] = useRemoveRolesFromUserMutationMutation({\r\n * variables: {\r\n * removeRolesFromUserUserId: // value for 'removeRolesFromUserUserId'\r\n * removeRolesFromUserRoles: // value for 'removeRolesFromUserRoles'\r\n * },\r\n * });\r\n */\n\nfunction useRemoveRolesFromUserMutationMutation(baseOptions) {\n return useMutation(RemoveRolesFromUserMutationDocument, baseOptions);\n}\nvar templateObject_1$8, templateObject_2$6;\nvar UserManagementModal = function (props) {\n var className = props.className,\n showAccount = props.showAccount,\n userId = props.userId,\n closeFunc = props.closeFunc;\n var _a = useGetRolesQueryQuery({\n variables: {\n getRolesUserId: userId\n },\n fetchPolicy: 'no-cache'\n }),\n userRoleData = _a.data,\n refetch = _a.refetch;\n var _b = __read(React.useState([]), 2),\n selectedRoles = _b[0],\n setSelectedRole = _b[1];\n var _c = useGetUserByIdQueryQuery({\n variables: {\n getUserById: userId\n }\n }),\n data = _c.data,\n loading = _c.loading,\n error = _c.error;\n var _d = __read(useAssignRoleToUserMutationMutation(), 1),\n assignRoleToUserMutationMutation = _d[0];\n var _e = __read(useRemoveRolesFromUserMutationMutation(), 1),\n removeRolesFromUserMutationMutation = _e[0];\n React.useEffect(function () {\n var _a;\n var userSelectedRolesId = ((_a = userRoleData === null || userRoleData === void 0 ? void 0 : userRoleData.getRoles) === null || _a === void 0 ? void 0 : _a.map(function (_a) {\n var id = _a.id;\n return id;\n })) || [];\n setSelectedRole(userSelectedRolesId);\n }, [userRoleData, userId]);\n var rolesData = useGetRolesQueryQuery().data;\n var content;\n if (error) {\n content = /*#__PURE__*/React.createElement(\"div\", null, \"There was an error fetching user info\");\n }\n if (loading) {\n content = /*#__PURE__*/React.createElement(LoadingContent, null);\n }\n var addRemoveRole = function (selectedRoleId) {\n if (selectedRoles.includes(selectedRoleId)) {\n var newRoles = selectedRoles.filter(function (i) {\n return i !== selectedRoleId;\n });\n setSelectedRole(newRoles);\n removeRolesFromUserMutationMutation({\n variables: {\n removeRolesFromUserUserId: userId,\n removeRolesFromUserRoles: [selectedRoleId]\n }\n });\n toast(\"Removed Role for User\");\n } else {\n setSelectedRole(__spread(selectedRoles, [selectedRoleId]));\n assignRoleToUserMutationMutation({\n variables: {\n assignRoleToUserRoles: [selectedRoleId],\n assignRoleToUserUserId: userId\n }\n });\n toast(\"Added Role to User\");\n }\n refetch();\n };\n var availablePermissions = (rolesData === null || rolesData === void 0 ? void 0 : rolesData.getRoles) ? rolesData === null || rolesData === void 0 ? void 0 : rolesData.getRoles.map(function (_a) {\n var name = _a.name,\n description = _a.description,\n id = _a.id;\n return /*#__PURE__*/React.createElement(RoleContentContainer, {\n key: id\n }, /*#__PURE__*/React.createElement(RoleCheckBox, {\n key: id,\n isChecked: selectedRoles.includes(id),\n onChange: function (state) {\n return addRemoveRole(id);\n }\n }), /*#__PURE__*/React.createElement(RoleLabelName, null, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n fontWeight: 'bold'\n }\n }, name), \" \", description));\n }) : /*#__PURE__*/React.createElement(Alert, {\n status: \"info\",\n title: \"No User Roles Available\",\n message: \"Contact your administrator\"\n });\n content = /*#__PURE__*/React.createElement(AccountContainer, null, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(CounterText, null, \"Selected (\", selectedRoles.length, \")\"), availablePermissions));\n return /*#__PURE__*/React.createElement(UserManagment, {\n show: showAccount,\n title: (data === null || data === void 0 ? void 0 : data.getUser.name) + \"'s Permissions\",\n size: \"large\",\n closeButtonLabel: \"Close\",\n onClose: function () {\n return closeFunc();\n },\n \"data-testid\": generate(['user-managment'], props),\n className: className\n }, content);\n};\nvar UserManagementModal$1 = styled(UserManagementModal)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$9;\nvar AccountUsersModal$1 = function (props) {\n var _a, _b, _c;\n var className = props.className,\n show = props.show,\n accountId = props.accountId,\n onCloseFunc = props.onCloseFunc;\n var _d = __read(React.useState(show || false), 2),\n showModal = _d[0],\n setShowModal = _d[1];\n var _e = __read(React.useState(''), 2),\n nameUser = _e[0],\n setNameUser = _e[1];\n var _f = __read(React.useState(''), 2),\n lastName = _f[0],\n setLastName = _f[1];\n var _g = __read(React.useState(''), 2),\n emailAddress = _g[0],\n setEmailAddress = _g[1];\n var _h = __read(React.useState(false), 2),\n showUserAccount = _h[0],\n toggleShowAccount = _h[1];\n var _j = __read(React.useState(''), 2),\n selectedUser = _j[0],\n setUserAccount = _j[1];\n var _k = useGetAccountQuery({\n variables: {\n id: accountId\n },\n fetchPolicy: 'no-cache'\n }),\n data = _k.data,\n error = _k.error,\n loading = _k.loading,\n refetch = _k.refetch;\n var _l = __read(useAddUserMutation({\n variables: {\n input: {\n firstName: nameUser,\n lastName: lastName,\n email: emailAddress,\n accountId: accountId\n }\n }\n }), 2),\n addUserMutation = _l[0],\n _m = _l[1],\n addUserLoading = _m.loading,\n addUserError = _m.error;\n var _o = __read(useRemoveUserMutation(), 2),\n removeUserMutation = _o[0],\n _p = _o[1],\n removeUserData = _p.data,\n loadingRemove = _p.loading,\n errorDelete = _p.error;\n var _q = __read(useInviteUserMutation(), 1),\n inviteUserMutation = _q[0];\n React.useEffect(function () {\n setShowModal(show);\n }, [accountId, show]);\n var resetCreateUser = function () {\n setNameUser('');\n setEmailAddress('');\n };\n var userPanel = function (user) {\n return /*#__PURE__*/React.createElement(UserPanel, {\n key: user.id\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"div\", null, user.name), /*#__PURE__*/React.createElement(\"div\", null, user.email)), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n position: 'relative'\n }\n }, /*#__PURE__*/React.createElement(ActionsButton, {\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function (item) {\n if (item.label === 'Remove User') {\n removeUserMutation({\n variables: {\n id: user.id\n },\n refetchQueries: [{\n query: GetAccountDocument,\n variables: {\n id: accountId\n }\n }],\n update: function () {\n if (errorDelete) {\n toast('there was an error removing user');\n }\n if (removeUserData) {\n toast('User is removed');\n }\n refetch();\n }\n });\n }\n if (item.label === 'Resend Invitation') {\n inviteUserMutation({\n variables: {\n input: {\n email: user.email\n }\n },\n update: function () {\n toast('Re-Invitation has been sent');\n }\n });\n }\n if (item.label === 'Roles and Permissions') {\n setUserAccount(user.id);\n toggleShowAccount(true);\n }\n onClose();\n },\n items: [{\n label: 'Roles and Permissions'\n }, {\n label: 'Resend Invitation'\n }, {\n label: 'Remove User'\n }]\n });\n },\n label: \"Actions\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconKebabVertical, null);\n }\n })));\n };\n var userList = (_a = data === null || data === void 0 ? void 0 : data.getAccount) === null || _a === void 0 ? void 0 : _a.users.map(function (user) {\n return userPanel(user);\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, show && /*#__PURE__*/React.createElement(AccountUsersModal, {\n size: \"large\",\n onClose: function () {\n setShowModal(false);\n onCloseFunc(false);\n },\n show: showModal,\n \"data-testid\": generate(['account-users-modal'], props),\n className: className,\n title: ((_b = data === null || data === void 0 ? void 0 : data.getAccount) === null || _b === void 0 ? void 0 : _b.name) || ''\n }, /*#__PURE__*/React.createElement(CreateNewUserPanel, null, /*#__PURE__*/React.createElement(Heading, {\n \"data-testid\": \"onboarding-title\"\n }, \"Onboarding User\"), loading && /*#__PURE__*/React.createElement(Loading, null), addUserError ? /*#__PURE__*/React.createElement(\"p\", null, \"Error! \", addUserError.message) : null, /*#__PURE__*/React.createElement(UserInfoInputGroup, null, /*#__PURE__*/React.createElement(InputItem, {\n type: \"text\",\n value: emailAddress,\n placeholder: \"User E-mail\",\n onChange: function (e) {\n return setEmailAddress(e.target.value);\n }\n }), /*#__PURE__*/React.createElement(InputItem, {\n type: \"text\",\n value: nameUser,\n placeholder: \"First name of User\",\n onChange: function (e) {\n return setNameUser(e.target.value);\n }\n }), /*#__PURE__*/React.createElement(InputItem, {\n type: \"text\",\n value: nameUser,\n placeholder: \"Last name of User\",\n onChange: function (e) {\n return setLastName(e.target.value);\n }\n }), /*#__PURE__*/React.createElement(Button, {\n onClick: function () {\n addUserMutation({\n refetchQueries: [{\n query: GetAccountDocument,\n variables: {\n id: accountId\n }\n }],\n update: function () {\n refetch();\n toast('User has been created, successfully');\n }\n });\n resetCreateUser();\n },\n label: \"Onboard new user\",\n variant: \"primary\",\n disabled: emailAddress.length === 0 || nameUser.length === 0\n }, \"OnBoard User\"))), /*#__PURE__*/React.createElement(Heading, {\n size: 2,\n weight: 300,\n variant: \"secondary\"\n }, \"Assigned Users\"), addUserLoading || loadingRemove ? /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }) : null, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n height: 150,\n overflow: 'auto'\n }\n }, userList, error ? /*#__PURE__*/React.createElement(\"p\", null, \"Oh no! \", error.message) : null, ((_c = data === null || data === void 0 ? void 0 : data.getAccount) === null || _c === void 0 ? void 0 : _c.users.length) === 0 ? /*#__PURE__*/React.createElement(\"p\", null, \"No Users available yet\") : null)), showUserAccount && /*#__PURE__*/React.createElement(UserManagementModal$1, {\n userId: selectedUser,\n showAccount: showUserAccount,\n closeFunc: function () {\n setUserAccount('');\n toggleShowAccount(false);\n }\n }));\n};\nvar AccountUsersModal$2 = styled(AccountUsersModal$1)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$a;\nvar AccountRIsModal = styled(Modal)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\"], [\"\"])));\nvar AccountListingName = styled(Heading)(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n margin: 5px 0px;\\n\"], [\"\\n margin: 5px 0px;\\n\"])));\nvar RIContent = styled.div(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n margin-bottom: 20px;\\n\"], [\"\\n margin-bottom: 20px;\\n\"])));\nvar RIListItem = styled.div(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n margin: 10px 0;\\n\"], [\"\\n margin: 10px 0;\\n\"])));\nvar RIMessage = styled.div(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\\n border-bottom: solid 1px #dddddd;\\n padding-bottom: 10px;\\n margin-bottom: 10px;\\n\"], [\"\\n border-bottom: solid 1px #dddddd;\\n padding-bottom: 10px;\\n margin-bottom: 10px;\\n\"])));\nvar RICheckBox = styled(Checkbox)(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject([\"\\n margin: 10px 0;\\n\"], [\"\\n margin: 10px 0;\\n\"])));\nvar templateObject_1$b, templateObject_2$7, templateObject_3$4, templateObject_4$4, templateObject_5$3, templateObject_6$3;\nvar AccountRiskInventoriesDocument = gql(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\\n query accountRiskInventories($id: ID!) {\\n getAccount(id: $id) {\\n name\\n code\\n permittedRiskInventories {\\n id\\n name\\n description\\n }\\n }\\n }\\n\"], [\"\\n query accountRiskInventories($id: ID!) {\\n getAccount(id: $id) {\\n name\\n code\\n permittedRiskInventories {\\n id\\n name\\n description\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useAccountRiskInventoriesQuery__\r\n *\r\n * To run a query within a React component, call `useAccountRiskInventoriesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useAccountRiskInventoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useAccountRiskInventoriesQuery({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useAccountRiskInventoriesQuery(baseOptions) {\n return useQuery(AccountRiskInventoriesDocument, baseOptions);\n}\nvar templateObject_1$c;\nvar AccountRIsModal$1 = function (props) {\n var _a, _b;\n var className = props.className,\n show = props.show,\n onCloseFunc = props.onCloseFunc,\n accountId = props.accountId;\n var _c = useAccountRiskInventoriesQuery({\n variables: {\n id: accountId\n }\n }),\n data = _c.data,\n loading = _c.loading;\n var listItems = data === null || data === void 0 ? void 0 : data.getAccount.permittedRiskInventories.map(function (_a) {\n var id = _a.id,\n name = _a.name;\n return /*#__PURE__*/React.createElement(ListItem, {\n key: id\n }, /*#__PURE__*/React.createElement(Heading, {\n weight: 500\n }, name));\n });\n var content;\n if (loading) {\n content = /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n });\n }\n if (((_a = data === null || data === void 0 ? void 0 : data.getAccount.permittedRiskInventories) === null || _a === void 0 ? void 0 : _a.length) === 0) {\n content = /*#__PURE__*/React.createElement(Heading, null, \"Account has no assigned inventories\");\n } else {\n content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RIMessage, null, /*#__PURE__*/React.createElement(Heading, {\n variant: \"default\",\n size: 0\n }, \"The following \", (_b = data === null || data === void 0 ? void 0 : data.getAccount.permittedRiskInventories) === null || _b === void 0 ? void 0 : _b.length, \" inventories are attached to this account\")), /*#__PURE__*/React.createElement(List, null, listItems));\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, show && /*#__PURE__*/React.createElement(AccountRIsModal, {\n show: show,\n size: \"small\",\n onClose: function () {\n return onCloseFunc(false);\n },\n \"data-testid\": generate(['account-r-is-modal'], props),\n className: className,\n title: \"\" + (data === null || data === void 0 ? void 0 : data.getAccount.name),\n closeButtonLabel: \"Close\",\n useScrollContent: true\n }, /*#__PURE__*/React.createElement(RIContent, null, content)));\n};\nvar AccountRIsModal$2 = styled(AccountRIsModal$1)(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$d;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\n/** Built-in value references. */\nvar Symbol$1 = root.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$1 ? Symbol$1.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 try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto$1 = 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$1 = objectProto$1.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$1.call(value);\n}\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag$1 = Symbol$1 ? Symbol$1.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$1 && symToStringTag$1 in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\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\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\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\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\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\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\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$1 = Function.prototype,\n objectProto$2 = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString$1 = funcProto$1.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' + funcToString$1.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\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\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\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\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\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 return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\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\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\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER$1 = 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' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\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\n/** Used for built-in method references. */\nvar objectProto$3 = 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$3;\n return value === proto;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\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\n/** Used for built-in method references. */\nvar objectProto$4 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$2 = objectProto$4.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto$4.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 () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty$2.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\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\n/** `Object#toString` result references. */\nvar argsTag$1 = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag$1 = '[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]';\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] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag$1] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[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) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\n/** Detect free variable `exports`. */\nvar freeExports$1 = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule$1 = freeExports$1 && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports$1 && 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$1 && freeModule$1.require && freeModule$1.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n\n/* Node.js helper references. */\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\n/** Used for built-in method references. */\nvar objectProto$5 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$3 = objectProto$5.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 for (var key in value) {\n if ((inherited || hasOwnProperty$3.call(value, key)) && !(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 result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/** Used for built-in method references. */\nvar objectProto$6 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$4 = objectProto$6.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$4.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\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\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\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\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\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$7 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$5 = objectProto$7.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$5.call(data, key) ? data[key] : undefined;\n}\n\n/** Used for built-in method references. */\nvar objectProto$8 = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$6 = objectProto$8.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$6.call(data, key);\n}\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$1 = '__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$1 : value;\n return this;\n}\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 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\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\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\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 if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n/**\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 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\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, '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\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' ? value !== '__proto__' : value === null;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function () {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\n/** Used as references for various `Number` constants. */\nvar INFINITY$1 = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY$1 ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\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\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 this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\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\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\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 while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * 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\n/** Used for built-in method references. */\nvar objectProto$9 = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable$1 = objectProto$9.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$1.call(object, symbol);\n });\n};\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\n/* Built-in method references that are verified to be native. */\nvar Promise$1 = getNative(root, 'Promise');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\n/** `Object#toString` result references. */\nvar mapTag$1 = '[object Map]',\n objectTag$1 = '[object Object]',\n promiseTag = '[object Promise]',\n setTag$1 = '[object Set]',\n weakMapTag$1 = '[object WeakMap]';\nvar dataViewTag$1 = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise$1),\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$1 || Map && getTag(new Map()) != mapTag$1 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set && getTag(new Set()) != setTag$1 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {\n getTag = function (value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag$1 ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag$1;\n case mapCtorString:\n return mapTag$1;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag$1;\n case weakMapCtorString:\n return weakMapTag$1;\n }\n }\n return result;\n };\n}\nvar getTag$1 = getTag;\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED$2 = '__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$2);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\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\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 while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\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 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 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 if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : 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) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$1 = 1,\n COMPARE_UNORDERED_FLAG$1 = 2;\n\n/** `Object#toString` result references. */\nvar boolTag$1 = '[object Boolean]',\n dateTag$1 = '[object Date]',\n errorTag$1 = '[object Error]',\n mapTag$2 = '[object Map]',\n numberTag$1 = '[object Number]',\n regexpTag$1 = '[object RegExp]',\n setTag$2 = '[object Set]',\n stringTag$1 = '[object String]',\n symbolTag$1 = '[object Symbol]';\nvar arrayBufferTag$1 = '[object ArrayBuffer]',\n dataViewTag$2 = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto$1 = Symbol$1 ? Symbol$1.prototype : undefined,\n symbolValueOf = symbolProto$1 ? symbolProto$1.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$2:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag$1:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n case boolTag$1:\n case dateTag$1:\n case numberTag$1:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n case errorTag$1:\n return object.name == other.name && object.message == other.message;\n case regexpTag$1:\n case stringTag$1:\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 case mapTag$2:\n var convert = mapToArray;\n case setTag$2:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1;\n convert || (convert = setToArray);\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$1;\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 case symbolTag$1:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$2 = 1;\n\n/** Used for built-in method references. */\nvar objectProto$a = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$7 = objectProto$a.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$2,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\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$7.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 var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\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 && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$3 = 1;\n\n/** `Object#toString` result references. */\nvar argsTag$2 = '[object Arguments]',\n arrayTag$1 = '[object Array]',\n objectTag$2 = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto$b = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$8 = objectProto$b.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$1 : getTag$1(object),\n othTag = othIsArr ? arrayTag$1 : getTag$1(other);\n objTag = objTag == argsTag$2 ? objectTag$2 : objTag;\n othTag = othTag == argsTag$2 ? objectTag$2 : othTag;\n var objIsObj = objTag == objectTag$2,\n othIsObj = othTag == objectTag$2,\n isSameTag = objTag == othTag;\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) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG$3)) {\n var objIsWrapped = objIsObj && hasOwnProperty$8.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty$8.call(other, '__wrapped__');\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.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\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$4 = 1,\n COMPARE_UNORDERED_FLAG$2 = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$4 | COMPARE_UNORDERED_FLAG$2, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG$5 = 1,\n COMPARE_UNORDERED_FLAG$3 = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$5 | COMPARE_UNORDERED_FLAG$3);\n };\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function (value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function (collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n return func(collection, setter, baseIteratee(iteratee), accumulator);\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto$c = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$9 = objectProto$c.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function (result, value, key) {\n if (hasOwnProperty$9.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\nvar UserInventoryModal = styled(Modal)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\"], [\"\"])));\nvar AvailableCheckBox = styled(Checkbox)(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar AccountSelectionBox = styled('div')(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar InventoryName = styled(Text)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n margin-right: 10px;\\n\"], [\"\\n margin-right: 10px;\\n\"])));\nvar SelectAllButton = styled(Button)(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar SelectAccount = styled(Select)(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$e, templateObject_2$8, templateObject_3$5, templateObject_4$5, templateObject_5$4, templateObject_6$4;\nvar GetUserSelectedInventoriesDocument = gql(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n query getUserSelectedInventories($accountId: ID!, $userId: ID!) {\\n getUserInventoriesBySource(accountId: $accountId, userId: $userId) {\\n name\\n id\\n }\\n }\\n\"], [\"\\n query getUserSelectedInventories($accountId: ID!, $userId: ID!) {\\n getUserInventoriesBySource(accountId: $accountId, userId: $userId) {\\n name\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useGetUserSelectedInventoriesQuery__\r\n *\r\n * To run a query within a React component, call `useGetUserSelectedInventoriesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUserSelectedInventoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUserSelectedInventoriesQuery({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * userId: // value for 'userId'\r\n * },\r\n * });\r\n */\n\nfunction useGetUserSelectedInventoriesQuery(baseOptions) {\n return useQuery(GetUserSelectedInventoriesDocument, baseOptions);\n}\nvar GetAccountInventoriesDocument = gql(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n query getAccountInventories($accountId: ID!) {\\n getAccount(id: $accountId) {\\n permittedRiskInventories {\\n name\\n id\\n }\\n }\\n }\\n\"], [\"\\n query getAccountInventories($accountId: ID!) {\\n getAccount(id: $accountId) {\\n permittedRiskInventories {\\n name\\n id\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetAccountInventoriesQuery__\r\n *\r\n * To run a query within a React component, call `useGetAccountInventoriesQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAccountInventoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAccountInventoriesQuery({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * },\r\n * });\r\n */\n\nfunction useGetAccountInventoriesQuery(baseOptions) {\n return useQuery(GetAccountInventoriesDocument, baseOptions);\n}\nvar templateObject_1$f, templateObject_2$9;\nvar AddInventoryToUserDocument = gql(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\\n mutation addInventoryToUser($userId: ID!, $accountId: ID!, $inventoryIds: [String!]!) {\\n assignRiskInventory(userId: $userId, accountId: $accountId, inventoryIds: $inventoryIds)\\n }\\n\"], [\"\\n mutation addInventoryToUser($userId: ID!, $accountId: ID!, $inventoryIds: [String!]!) {\\n assignRiskInventory(userId: $userId, accountId: $accountId, inventoryIds: $inventoryIds)\\n }\\n\"])));\n/**\r\n * __useAddInventoryToUserMutation__\r\n *\r\n * To run a mutation, you first call `useAddInventoryToUserMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useAddInventoryToUserMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [addInventoryToUserMutation, { data, loading, error }] = useAddInventoryToUserMutation({\r\n * variables: {\r\n * userId: // value for 'userId'\r\n * accountId: // value for 'accountId'\r\n * inventoryIds: // value for 'inventoryIds'\r\n * },\r\n * });\r\n */\n\nfunction useAddInventoryToUserMutation(baseOptions) {\n return useMutation(AddInventoryToUserDocument, baseOptions);\n}\nvar templateObject_1$g;\nvar UserInventoryModal$1 = function (props) {\n var _a;\n var className = props.className,\n showModal = props.showModal,\n onCloseFunc = props.onCloseFunc,\n selectedUser = props.selectedUser;\n var _b = __read(useState(selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.accountId), 2),\n selectedAccountId = _b[0],\n setCurrentAccountId = _b[1];\n var preSelectedData = useGetUserSelectedInventoriesQuery({\n variables: {\n accountId: selectedAccountId,\n userId: selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.id\n },\n fetchPolicy: 'no-cache'\n }).data;\n var _c = __read(useAddInventoryToUserMutation(), 2),\n addInventoryToUserMutation = _c[0],\n _d = _c[1],\n addLoading = _d.loading,\n addError = _d.error;\n var _e = __read(useState([]), 2),\n selectedInventories = _e[0],\n setSelectedInventories = _e[1];\n var _f = __read(useState(false), 2),\n selectedAll = _f[0],\n setSelectAll = _f[1];\n var accountsData = useGetAccountsQuery().data;\n var _g = useGetAccountInventoriesQuery({\n variables: {\n accountId: selectedAccountId\n }\n }),\n data = _g.data,\n loadingAvailableInventories = _g.loading;\n useEffect(function () {\n var _a;\n var preSelectedIds = ((_a = preSelectedData === null || preSelectedData === void 0 ? void 0 : preSelectedData.getUserInventoriesBySource) === null || _a === void 0 ? void 0 : _a.map(function (item) {\n return item.id;\n })) || [];\n setSelectedInventories(preSelectedIds);\n }, [selectedAccountId, preSelectedData]);\n var availableRiskInventories = !loadingAvailableInventories && (data === null || data === void 0 ? void 0 : data.getAccount.permittedRiskInventories);\n var emailSplit = ((_a = selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.email) === null || _a === void 0 ? void 0 : _a.split('@')) || '';\n var userIsAcin = emailSplit && emailSplit[emailSplit.length - 1].toLowerCase() === 'acin.com'; //filter account based on user email and accountName\n\n var filterAccounts = (accountsData === null || accountsData === void 0 ? void 0 : accountsData.getAccounts) || [];\n if (!userIsAcin) {\n filterAccounts = accountsData === null || accountsData === void 0 ? void 0 : accountsData.getAccounts.filter(function (account) {\n return account.id === (selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.account.id) || account.code === 'ACIN';\n });\n }\n var accountOptions = (filterAccounts === null || filterAccounts === void 0 ? void 0 : filterAccounts.map(function (account) {\n return {\n label: account.name,\n value: account.id\n };\n })) || [];\n var setSelectedOption = function (value) {\n if (!selectedInventories.includes(value)) {\n setSelectedInventories(__spread(selectedInventories, [value]));\n } else {\n var selectedItem = selectedInventories.filter(function (item) {\n return item !== value;\n });\n setSelectedInventories(selectedItem);\n }\n };\n var selectAllButton = function () {\n var ids = availableRiskInventories === null || availableRiskInventories === void 0 ? void 0 : availableRiskInventories.map(function (item) {\n return item.id;\n });\n setSelectedInventories(ids);\n setSelectAll(true);\n };\n var unSelectAllButton = function () {\n setSelectedInventories([]);\n setSelectAll(false);\n };\n return /*#__PURE__*/React.createElement(UserInventoryModal, {\n title: (selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.name) + \"'s Inventories\",\n show: showModal,\n \"data-testid\": generate(['user-inventory-modal'], props),\n className: className,\n closeButtonLabel: \"Cancel\",\n onClose: function () {\n return onCloseFunc && onCloseFunc();\n },\n footerButtonPrimary: {\n label: 'Save Changes',\n disabled: addLoading,\n onClick: function () {\n addInventoryToUserMutation({\n variables: {\n userId: selectedUser === null || selectedUser === void 0 ? void 0 : selectedUser.id,\n accountId: selectedAccountId,\n inventoryIds: selectedInventories\n },\n update: function () {\n toast('Updated');\n onCloseFunc();\n }\n });\n }\n }\n }, /*#__PURE__*/React.createElement(AccountSelectionBox, null, /*#__PURE__*/React.createElement(SelectAccount, {\n value: selectedAccountId,\n placeholder: \"Select an account\",\n options: accountOptions,\n onChange: function (value) {\n setCurrentAccountId(value);\n }\n }), /*#__PURE__*/React.createElement(InventoryName, {\n size: 0,\n weight: 300\n }, \"Selected (\", selectedInventories.length, \") inventories\", ' ')), addError && /*#__PURE__*/React.createElement(\"p\", null, addError), !selectedAll ? /*#__PURE__*/React.createElement(SelectAllButton, {\n onClick: function () {\n return selectAllButton();\n },\n label: \"Select All\",\n variant: \"link\"\n }) : /*#__PURE__*/React.createElement(SelectAllButton, {\n onClick: function () {\n return unSelectAllButton();\n },\n variant: \"link\",\n label: \"Un-Select All\"\n }), availableRiskInventories && availableRiskInventories.map(function (_a) {\n var id = _a.id,\n name = _a.name;\n return /*#__PURE__*/React.createElement(\"div\", {\n key: id,\n style: {\n display: 'flex',\n gap: '10px',\n margin: \"10px 0\"\n }\n }, /*#__PURE__*/React.createElement(AvailableCheckBox, {\n isChecked: selectedInventories.includes(id),\n onChange: function (value) {\n setSelectedOption(id);\n },\n key: id\n }), /*#__PURE__*/React.createElement(InventoryName, {\n ellipsis: true,\n size: 0,\n weight: 500\n }, name));\n }));\n};\nvar UserInventoryModal$2 = styled(UserInventoryModal$1)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$h;\nvar EditUserModal = function (props) {\n var showUserModal = props.showUserModal,\n refetchCallBack = props.refetchCallBack,\n toggleShowUserModal = props.toggleShowUserModal,\n selectedUser = props.selectedUser;\n var _a = __read(React.useState(selectedUser.firstName), 2),\n nameUser = _a[0],\n setNameUser = _a[1];\n var _b = __read(React.useState(selectedUser.lastName), 2),\n nameLastName = _b[0],\n setLastNameUser = _b[1];\n var _c = __read(React.useState(selectedUser.account.id), 2),\n accountId = _c[0],\n setAccountId = _c[1];\n var account = useGetAccountsQuery().data;\n var _d = __read(useUpdateUserMutation({\n variables: {\n id: selectedUser.id,\n input: {\n firstName: nameUser,\n lastName: nameLastName,\n accountId: accountId\n }\n }\n }), 2),\n updateUserMutation = _d[0],\n _e = _d[1],\n addUserLoading = _e.loading,\n addUserError = _e.error;\n var accountsOptions = account.getAccounts.map(function (item) {\n return {\n label: item.name,\n value: item.id\n };\n });\n return /*#__PURE__*/React.createElement(FadedModal, {\n closeButtonLabel: \"Cancel\",\n onClose: function () {\n return toggleShowUserModal(false);\n },\n footerButtonPrimary: {\n label: 'Edit User',\n disabled: addUserLoading || nameUser.length === 0,\n onClick: function () {\n updateUserMutation({\n update: function () {\n refetchCallBack && refetchCallBack();\n toast('User is updated');\n }\n });\n toggleShowUserModal(false);\n }\n },\n className: \"user-faded-modal\",\n show: showUserModal,\n title: \"Update User\"\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(ModalSubMessage, null, /*#__PURE__*/React.createElement(Text, null, \"Update a user on the Acin database\")), addUserError ? /*#__PURE__*/React.createElement(Validation, {\n errors: [addUserError.message]\n }) : null, /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Email: \", selectedUser.email)), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"First Name\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: nameUser,\n placeholder: \"Firstname of user\",\n onChange: function (e) {\n return setNameUser(e.target.value);\n }\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Surname\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: nameLastName,\n placeholder: \"Surname of user\",\n onChange: function (e) {\n return setLastNameUser(e.target.value);\n }\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Assigned to Account\"), /*#__PURE__*/React.createElement(Select, {\n options: accountsOptions,\n placeholder: \"Select Account\",\n value: accountId,\n onChange: function (value) {\n return setAccountId(value.toString());\n }\n }))));\n};\nvar UserTableView = function (props) {\n var data = props.data,\n totalUsers = props.totalUsers;\n var _a = __read(React.useState(false), 2),\n showUserAccount = _a[0],\n toggleShowAccount = _a[1];\n var _b = __read(React.useState(false), 2),\n showEditUserModal = _b[0],\n toggleShowUserModal = _b[1];\n var _c = __read(React.useState(), 2),\n selectedUser = _c[0],\n setUserAccount = _c[1];\n var _d = __read(React.useState(false), 2),\n showUserInventoryModal = _d[0],\n toggleShowInventoryModal = _d[1];\n var _e = __read(useRemoveUserMutation(), 1),\n removeUserMutation = _e[0];\n var _f = __read(useInviteUserMutation(), 1),\n inviteUserMutation = _f[0];\n var userInventoriesInfo = function (data) {\n var groupedItems = groupBy(data, function (item) {\n return item.accountName;\n });\n var groupedContent = [];\n for (var key in groupedItems) {\n if (Object.prototype.hasOwnProperty.call(groupedItems, key)) {\n var elements = groupedItems[key] || [];\n groupedContent.push( /*#__PURE__*/React.createElement(Text, {\n key: key,\n size: 0\n }, key, \" (\", elements.length, \" inventories)\"));\n }\n }\n return groupedContent;\n };\n var rowTable = function (list) {\n return list.map(function (user) {\n return /*#__PURE__*/React.createElement(Row, {\n key: user.id\n }, /*#__PURE__*/React.createElement(Cell, null, user.firstName), /*#__PURE__*/React.createElement(Cell, null, user.lastName), /*#__PURE__*/React.createElement(Cell, null, user.email), /*#__PURE__*/React.createElement(Cell, null, user.account.name), /*#__PURE__*/React.createElement(Cell, null, userInventoriesInfo(user.permittedRiskInventories), \" \"), /*#__PURE__*/React.createElement(Cell, null, user.lastLogin), /*#__PURE__*/React.createElement(Cell, null, /*#__PURE__*/React.createElement(IconButton, {\n label: \"Menu\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconKebabVertical, null);\n },\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function (item) {\n item.action();\n onClose();\n },\n items: [{\n label: 'Edit User',\n id: 'editUser',\n action: function () {\n setUserAccount(user);\n toggleShowUserModal(true);\n }\n }, {\n label: 'Edit Permissions',\n id: 'edit',\n action: function () {\n setUserAccount(user);\n toggleShowAccount(true);\n }\n }, {\n label: 'Resend Invitation',\n id: 'resend',\n action: function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var res;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/, confirmationModal({\n title: 'Are you sure?',\n message: \"You are about to resend an invitation to \" + user.name,\n submitText: 'Yes, Resend',\n cancelText: 'No, Cancel'\n })];\n case 1:\n res = _a.sent();\n res && inviteUserMutation({\n variables: {\n input: {\n email: user.email\n }\n },\n update: function () {\n toast('Re-Invitation has been sent');\n }\n });\n return [2\n /*return*/];\n }\n });\n });\n }\n }, {\n label: 'Remove User',\n id: 'remove',\n action: function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var confirmationRes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/, confirmationModal({\n title: 'Are you sure?',\n message: \"This user (\" + user.name + \"), including all data and permissions, will be deleted immediately.\\n You cannot undo this action\",\n submitText: 'Yes, Delete',\n cancelText: 'No, Cancel'\n })];\n case 1:\n confirmationRes = _a.sent();\n if (confirmationRes) {\n removeUserMutation({\n variables: {\n id: user.id\n },\n update: function () {\n toast('User is removed, reloading users');\n window.location.reload();\n }\n });\n }\n return [2\n /*return*/];\n }\n });\n });\n }\n }, {\n label: 'Edit Inventories',\n id: 'assign',\n action: function () {\n setUserAccount(__assign(__assign({}, user), {\n accountId: user.account.id\n }));\n toggleShowInventoryModal(true);\n }\n }]\n });\n }\n })));\n });\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TotalMessageDisplay, {\n variant: \"secondary\",\n weight: 300\n }, \"Displaying \", data.length, \" of \", totalUsers), /*#__PURE__*/React.createElement(Table, null, /*#__PURE__*/React.createElement(THead, null, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(HeadCell, null, \"First Name\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Last Name\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Email\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Default Account\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Selected Inventories\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Last Log In\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Actions\"))), /*#__PURE__*/React.createElement(TBody, null, rowTable(data))), data.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n margin: \"10px 0px\"\n }\n }, /*#__PURE__*/React.createElement(Alert, {\n status: \"warning\",\n title: \"No Results found\",\n message: \"User list is empty or your filter selection maybe restrictive.\"\n })), showUserAccount && /*#__PURE__*/React.createElement(UserManagementModal$1, {\n userId: selectedUser.id,\n showAccount: showUserAccount,\n closeFunc: function () {\n toggleShowAccount(false);\n }\n }), showUserInventoryModal && /*#__PURE__*/React.createElement(UserInventoryModal$2, {\n selectedUser: selectedUser,\n onCloseFunc: function () {\n toggleShowInventoryModal(false);\n },\n showModal: showUserInventoryModal\n }), showEditUserModal && /*#__PURE__*/React.createElement(EditUserModal, {\n showUserModal: showEditUserModal,\n selectedUser: selectedUser,\n toggleShowUserModal: toggleShowUserModal\n }));\n};\nvar CreateAccountDocument = gql(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\\n mutation createAccount($input: AddAccountInput) {\\n addAccount(input: $input) {\\n name\\n id\\n }\\n }\\n\"], [\"\\n mutation createAccount($input: AddAccountInput) {\\n addAccount(input: $input) {\\n name\\n id\\n }\\n }\\n\"])));\n/**\r\n * __useCreateAccountMutation__\r\n *\r\n * To run a mutation, you first call `useCreateAccountMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useCreateAccountMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [createAccountMutation, { data, loading, error }] = useCreateAccountMutation({\r\n * variables: {\r\n * input: // value for 'input'\r\n * },\r\n * });\r\n */\n\nfunction useCreateAccountMutation(baseOptions) {\n return useMutation(CreateAccountDocument, baseOptions);\n}\nvar DeleteAccountDocument = gql(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\\n mutation deleteAccount($id: ID!) {\\n removeAccount(id: $id)\\n }\\n\"], [\"\\n mutation deleteAccount($id: ID!) {\\n removeAccount(id: $id)\\n }\\n\"])));\n/**\r\n * __useDeleteAccountMutation__\r\n *\r\n * To run a mutation, you first call `useDeleteAccountMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useDeleteAccountMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [deleteAccountMutation, { data, loading, error }] = useDeleteAccountMutation({\r\n * variables: {\r\n * id: // value for 'id'\r\n * },\r\n * });\r\n */\n\nfunction useDeleteAccountMutation(baseOptions) {\n return useMutation(DeleteAccountDocument, baseOptions);\n}\nvar UpdateAccountDocument = gql(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\\n mutation updateAccount($id: ID!, $input: UpdateAccountInput) {\\n updateAccount(id: $id, input: $input) {\\n id\\n name\\n }\\n }\\n\"], [\"\\n mutation updateAccount($id: ID!, $input: UpdateAccountInput) {\\n updateAccount(id: $id, input: $input) {\\n id\\n name\\n }\\n }\\n\"])));\nvar templateObject_1$i, templateObject_2$a, templateObject_3$6;\nvar ChangeDefaultAccountDocument = gql(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\\n mutation changeDefaultAccount($accountId: ID!) {\\n changeDefaultAccount(accountId: $accountId) {\\n id\\n name\\n }\\n }\\n\"], [\"\\n mutation changeDefaultAccount($accountId: ID!) {\\n changeDefaultAccount(accountId: $accountId) {\\n id\\n name\\n }\\n }\\n\"])));\n/**\r\n * __useChangeDefaultAccountMutation__\r\n *\r\n * To run a mutation, you first call `useChangeDefaultAccountMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useChangeDefaultAccountMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [changeDefaultAccountMutation, { data, loading, error }] = useChangeDefaultAccountMutation({\r\n * variables: {\r\n * accountId: // value for 'accountId'\r\n * },\r\n * });\r\n */\n\nfunction useChangeDefaultAccountMutation(baseOptions) {\n return useMutation(ChangeDefaultAccountDocument, baseOptions);\n}\nvar templateObject_1$j;\nvar AccountTableView = function (props) {\n var _a = __read(useDeleteAccountMutation(), 2),\n deleteAccountMutation = _a[0],\n errorDelete = _a[1].error;\n var _b = __read(useChangeDefaultAccountMutation(), 2),\n changeDefaultAccountMutation = _b[0],\n errorChanging = _b[1].error;\n var data = props.data,\n showUsersModalAction = props.showUsersModalAction,\n showRIModelAction = props.showRIModelAction,\n totalAccounts = props.totalAccounts;\n var rowTableItems = function (list) {\n return list && list.map(function (item) {\n var totalUsers = item.users.length;\n var totalRiskInventories = item.permittedRiskInventories.length;\n return /*#__PURE__*/React.createElement(Row, {\n key: item.id\n }, /*#__PURE__*/React.createElement(Cell, null, item.name), /*#__PURE__*/React.createElement(Cell, null, item.code), /*#__PURE__*/React.createElement(Cell, null, /*#__PURE__*/React.createElement(Button, {\n label: totalRiskInventories + \" Inventories\",\n variant: \"borderless\",\n onClick: function () {\n return showRIModelAction(item.id);\n }\n })), /*#__PURE__*/React.createElement(Cell, null, /*#__PURE__*/React.createElement(Button, {\n label: totalUsers + \" Users\",\n variant: \"borderless\",\n onClick: function () {\n return showUsersModalAction(item.name);\n }\n })), /*#__PURE__*/React.createElement(Cell, null, item.status ? 'true' : 'false'), /*#__PURE__*/React.createElement(Cell, null, /*#__PURE__*/React.createElement(IconButton, {\n label: \"Menu\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconKebabVertical, null);\n },\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React.createElement(DropdownMenu, {\n onClick: function (item) {\n item.action();\n onClose();\n },\n items: [{\n label: \"View Platform as \" + item.name,\n id: 'viewAsa',\n action: function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var confirmationRes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/, confirmationModal({\n title: 'Changing default Account?',\n message: \"You are about to change your default account to \" + item.name + \".\\n This will affect the available data displayed to you\",\n submitText: 'Yes, Change',\n cancelText: 'No, Cancel'\n })];\n case 1:\n confirmationRes = _a.sent();\n if (confirmationRes) {\n changeDefaultAccountMutation({\n variables: {\n accountId: item.id\n },\n update: function () {\n // take to user to homepage\n window.location.replace('/?account-changed=true');\n }\n });\n }\n return [2\n /*return*/];\n }\n });\n });\n }\n }, {\n label: 'Remove Account',\n id: 'remove',\n action: function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var confirmationRes;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/, confirmationModal({\n title: 'Are you sure?',\n message: \"You are about to soft delete account \" + item.name,\n submitText: 'Yes, Delete',\n cancelText: 'No, Cancel'\n })];\n case 1:\n confirmationRes = _a.sent();\n if (confirmationRes) {\n deleteAccountMutation({\n variables: {\n id: item.id\n },\n update: function () {\n //refetchCallBack();\n toast('Account is de-activated and removed');\n }\n });\n }\n return [2\n /*return*/];\n }\n });\n });\n }\n }]\n });\n }\n })));\n });\n };\n var errorContent;\n if (errorDelete) {\n errorContent = /*#__PURE__*/React.createElement(ErroMessage, {\n errors: ['There was an error soft-deleting this account', \"\" + errorDelete]\n });\n }\n if (errorChanging) {\n errorContent = /*#__PURE__*/React.createElement(ErroMessage, {\n errors: ['There was an error changing default account', \"\" + errorChanging]\n });\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, errorContent, /*#__PURE__*/React.createElement(TotalMessageDisplay, {\n variant: \"secondary\",\n weight: 300\n }, \"Displaying \", data.length, \" of \", totalAccounts), /*#__PURE__*/React.createElement(Table, null, /*#__PURE__*/React.createElement(THead, null, /*#__PURE__*/React.createElement(Row, null, /*#__PURE__*/React.createElement(HeadCell, null, \"Account Name\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Account Code\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Inventory Count\"), /*#__PURE__*/React.createElement(HeadCell, null, \"User Count\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Active\"), /*#__PURE__*/React.createElement(HeadCell, null, \"Actions\"))), /*#__PURE__*/React.createElement(TBody, null, rowTableItems(data))), data.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n margin: \"10px 0px\"\n }\n }, /*#__PURE__*/React.createElement(Alert, {\n status: \"warning\",\n title: \"No Results found\",\n message: \"Account list is empty or your filter selection maybe restrictive.\"\n })));\n};\nvar AddAccountModal = function (props) {\n var _a = __read(useCreateAccountMutation(), 2),\n createAccountMutation = _a[0],\n _b = _a[1],\n dataCreateAccount = _b.data,\n loadingCreatAccount = _b.loading,\n errorCreateAccount = _b.error;\n var toggleShowAddModal = props.toggleShowAddModal,\n showAddModal = props.showAddModal,\n refetchCallBack = props.refetchCallBack;\n var _c = __read(useState(''), 2),\n createAccountVal = _c[0],\n setCreateAccountVal = _c[1];\n var _d = __read(useState(''), 2),\n codeValue = _d[0],\n setCodeValue = _d[1];\n var checkCodeValue = function (value) {\n if (/\\s/.test(value)) {\n alert('No spaces allowed');\n return;\n }\n setCodeValue(value);\n };\n return /*#__PURE__*/React.createElement(FadedModal, {\n closeButtonLabel: \"Cancel\",\n onClose: function () {\n return toggleShowAddModal(false);\n },\n footerButtonPrimary: {\n label: 'Submit',\n disabled: loadingCreatAccount || createAccountVal.length === 0 || codeValue.length === 0,\n onClick: function () {\n createAccountMutation({\n variables: {\n input: {\n name: createAccountVal,\n code: codeValue\n }\n },\n update: function () {\n toggleShowAddModal(false);\n refetchCallBack && refetchCallBack();\n toast('New Account created');\n }\n });\n }\n },\n className: \"accounts-faded-modal\",\n show: showAddModal,\n title: \"Add New Account\"\n }, /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(ModalSubMessage, null, /*#__PURE__*/React.createElement(Text, null, \"Add a new account to the Acin database\")), errorCreateAccount ? /*#__PURE__*/React.createElement(Validation, {\n errors: [\"\" + errorCreateAccount.message]\n }) : null, loadingCreatAccount && /*#__PURE__*/React.createElement(Loading, null), dataCreateAccount && dataCreateAccount.addAccount ? /*#__PURE__*/React.createElement(Alert, {\n status: \"success\",\n message: \"Account is created\",\n title: \"Created\"\n }) : null, /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Account Name\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: createAccountVal,\n onChange: function (e) {\n return setCreateAccountVal(e.target.value);\n },\n placeholder: \"eg. UK BANK\"\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Account Code\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: codeValue,\n onChange: function (e) {\n return checkCodeValue(e.target.value);\n },\n placeholder: \"eg. UKBANK (no spaces)\"\n }))));\n};\nvar GetUsersDocument = gql(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\\n query getUsers {\\n getUsers {\\n name\\n firstName\\n lastName\\n id\\n auth0Id\\n lastLogin\\n email\\n account {\\n id\\n name\\n }\\n permittedRiskInventories {\\n name\\n accountName\\n }\\n }\\n }\\n\"], [\"\\n query getUsers {\\n getUsers {\\n name\\n firstName\\n lastName\\n id\\n auth0Id\\n lastLogin\\n email\\n account {\\n id\\n name\\n }\\n permittedRiskInventories {\\n name\\n accountName\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useGetUsersQuery__\r\n *\r\n * To run a query within a React component, call `useGetUsersQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetUsersQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetUsersQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useGetUsersQuery(baseOptions) {\n return useQuery(GetUsersDocument, baseOptions);\n}\nvar GetUserPermittedRiDocument = gql(templateObject_2$b || (templateObject_2$b = __makeTemplateObject([\"\\n query getUserPermittedRI($id: ID!) {\\n getUser(id: $id) {\\n account {\\n permittedRiskInventories {\\n name\\n description\\n }\\n }\\n }\\n }\\n\"], [\"\\n query getUserPermittedRI($id: ID!) {\\n getUser(id: $id) {\\n account {\\n permittedRiskInventories {\\n name\\n description\\n }\\n }\\n }\\n }\\n\"])));\nvar templateObject_1$k, templateObject_2$b;\nvar emailIsValid = function (email) {\n if (!email) return false;\n return /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(email);\n};\nvar AddUserModal = function (props) {\n var showUserModal = props.showUserModal,\n refetchCallBack = props.refetchCallBack,\n toggleShowUserModal = props.toggleShowUserModal,\n accounts = props.accounts;\n var _a = __read(React.useState(''), 2),\n nameUser = _a[0],\n setNameUser = _a[1];\n var _b = __read(React.useState(''), 2),\n nameLastName = _b[0],\n setLastNameUser = _b[1];\n var _c = __read(React.useState(''), 2),\n emailAddress = _c[0],\n setEmailAddress = _c[1];\n var _d = __read(React.useState(''), 2),\n accountId = _d[0],\n setAccountId = _d[1];\n var _e = __read(useAddUserMutation({\n variables: {\n input: {\n firstName: nameUser,\n lastName: nameLastName,\n email: emailAddress,\n accountId: accountId\n }\n }\n }), 2),\n addUserMutation = _e[0],\n _f = _e[1],\n addUserLoading = _f.loading,\n addUserError = _f.error;\n var resetCreateUser = function () {\n setNameUser('');\n setLastNameUser('');\n setEmailAddress('');\n setAccountId('');\n };\n var accountsOptions = accounts === null || accounts === void 0 ? void 0 : accounts.map(function (item) {\n return {\n label: item.name,\n value: item.id\n };\n });\n return /*#__PURE__*/React.createElement(FadedModal, {\n closeButtonLabel: \"Cancel\",\n onClose: function () {\n return toggleShowUserModal(false);\n },\n footerButtonPrimary: {\n label: 'Add User',\n disabled: addUserLoading || nameUser.length === 0 || emailAddress.length === 0,\n onClick: function () {\n if (!emailIsValid(emailAddress)) {\n return toast('Enter a valid Email Address');\n }\n addUserMutation({\n update: function () {\n refetchCallBack && refetchCallBack();\n toast('User is Created');\n }\n });\n resetCreateUser();\n }\n },\n className: \"user-faded-modal\",\n show: showUserModal,\n title: \"Add New User\"\n }, /*#__PURE__*/React.createElement(\"div\", null, addUserLoading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), /*#__PURE__*/React.createElement(ModalSubMessage, null, /*#__PURE__*/React.createElement(Text, null, \"Add a new user to the Acin database\")), addUserError ? /*#__PURE__*/React.createElement(Validation, {\n errors: [addUserError.message]\n }) : null, /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"First Name\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: nameUser,\n placeholder: \"FirstName of User\",\n onChange: function (e) {\n return setNameUser(e.target.value);\n }\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Surname\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: nameLastName,\n placeholder: \"Enter SurName\",\n onChange: function (e) {\n return setLastNameUser(e.target.value);\n }\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"User Email Address\"), /*#__PURE__*/React.createElement(Input, {\n type: \"text\",\n value: emailAddress,\n placeholder: \"User E-mail\",\n onChange: function (e) {\n return setEmailAddress(e.target.value);\n }\n })), /*#__PURE__*/React.createElement(FormItemContainer, null, /*#__PURE__*/React.createElement(Label, null, \"Assigned to Account\"), /*#__PURE__*/React.createElement(Select, {\n options: accountsOptions,\n placeholder: \"Select Account\",\n value: accountId,\n onChange: function (value) {\n return setAccountId(value.toString());\n }\n }))));\n};\nvar AccountList$1 = function (props) {\n var className = props.className;\n var _a = __read(useState(\"1\"), 2),\n activeTab = _a[0],\n setActiveTab = _a[1];\n var _b = useGetAccountsQuery(),\n data = _b.data,\n loading = _b.loading,\n refetchAccounts = _b.refetch;\n var _c = useGetUsersQuery(),\n usersData = _c.data,\n refetchUsers = _c.refetch;\n var users = useMemo(function () {\n return (usersData === null || usersData === void 0 ? void 0 : usersData.getUsers) || [];\n }, [usersData === null || usersData === void 0 ? void 0 : usersData.getUsers]);\n var accounts = useMemo(function () {\n return (data === null || data === void 0 ? void 0 : data.getAccounts) || [];\n }, [data === null || data === void 0 ? void 0 : data.getAccounts]);\n var _d = __read(React.useState(false), 2),\n showAddModal = _d[0],\n toggleShowAddModal = _d[1];\n var _e = __read(React.useState(false), 2),\n showAccountModal = _e[0],\n toggleShowAccountModal = _e[1];\n var _f = __read(React.useState(false), 2),\n showAddUserModal = _f[0],\n toggleShowAddUserModal = _f[1];\n var _g = __read(React.useState(''), 2),\n selectedAccount = _g[0],\n setSelectedAccount = _g[1];\n var _h = __read(React.useState(''), 2),\n searchText = _h[0],\n onSearchChange = _h[1];\n var _j = __read(React.useState(false), 2),\n showRIModal = _j[0],\n toggleShowRIModal = _j[1];\n var _k = __read(React.useState(accounts), 2),\n filteredAccounts = _k[0],\n setFilteredAccounts = _k[1];\n var _l = __read(React.useState(users), 2),\n filterdUsers = _l[0],\n setFilteredUsers = _l[1];\n var _m = __read(React.useState(accounts.length), 2),\n accountsTotalDisplay = _m[0],\n setAccountsTotalDisplay = _m[1];\n var _o = __read(React.useState(users.length), 2),\n usersTotalDisplay = _o[0],\n setUsersTotalDisplay = _o[1];\n useEffect(function () {\n var newAccounts, newUsers, newAccountsTotal, newUsersTotal;\n if (searchText === '') {\n newAccounts = accounts;\n newUsers = users;\n newAccountsTotal = newAccounts.length;\n newUsersTotal = newUsers.length;\n } else {\n newAccounts = accounts.filter(function (item) {\n return item.name.toLowerCase().includes(searchText.toLowerCase());\n });\n newUsers = users.filter(function (item) {\n return item.name.includes(searchText) || item.email.includes(searchText) || item.account.name.includes(searchText);\n });\n newAccountsTotal = newAccounts.length + \" of \" + accounts.length;\n newUsersTotal = newUsers.length + \" of \" + users.length;\n }\n setFilteredAccounts(newAccounts);\n setFilteredUsers(newUsers);\n setAccountsTotalDisplay(newAccountsTotal);\n setUsersTotalDisplay(newUsersTotal);\n }, [searchText, accounts, users]);\n var showRIModalAction = function (accountId) {\n setSelectedAccount(accountId);\n toggleShowRIModal(true);\n };\n var showUsersModalAction = function (accountName) {\n setActiveTab('2');\n onSearchChange(accountName);\n };\n var tabsBarItems = [{\n id: '1',\n label: \"Accounts (\" + accountsTotalDisplay + \")\",\n content: /*#__PURE__*/React.createElement(AccountTableView, {\n showUsersModalAction: showUsersModalAction,\n showRIModelAction: showRIModalAction,\n data: filteredAccounts,\n totalAccounts: accounts.length\n })\n }, {\n id: '2',\n label: \"Users (\" + usersTotalDisplay + \")\",\n content: /*#__PURE__*/React.createElement(UserTableView, {\n totalUsers: users.length,\n data: filterdUsers\n })\n }];\n var pageHeaderToolBarItem = function () {\n return /*#__PURE__*/React.createElement(PageHeaderToolBar, {\n searchConfig: {\n placeholder: 'Search by Account Name, User Name or Email',\n value: searchText,\n onChange: function (e) {\n return onSearchChange(e.target.value);\n }\n }\n });\n };\n return /*#__PURE__*/React.createElement(AccountList, {\n \"data-testid\": generate(['account-list'], props),\n className: className\n }, /*#__PURE__*/React.createElement(AccountHeader$1, {\n searchToolBar: pageHeaderToolBarItem,\n activeTab: activeTab,\n setActiveTab: setActiveTab,\n tabsBarItems: tabsBarItems,\n setAddAccountModal: function () {\n return toggleShowAddModal(true);\n },\n setAddUserModal: function () {\n return toggleShowAddUserModal(true);\n }\n }), /*#__PURE__*/React.createElement(TableContentView, null, loading ? /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }) : tabsBarItems.find(function (item) {\n return item.id === activeTab;\n }).content), showAddModal && /*#__PURE__*/React.createElement(AddAccountModal, {\n showAddModal: showAddModal,\n refetchCallBack: refetchAccounts,\n toggleShowAddModal: toggleShowAddModal\n }), showAccountModal && /*#__PURE__*/React.createElement(AccountUsersModal$2, {\n accountId: selectedAccount,\n onCloseFunc: function (state) {\n return toggleShowAccountModal(state);\n },\n show: showAccountModal\n }), showRIModal && /*#__PURE__*/React.createElement(AccountRIsModal$2, {\n show: showRIModal,\n onCloseFunc: function (state) {\n return toggleShowRIModal(state);\n },\n accountId: selectedAccount\n }), showAddUserModal && /*#__PURE__*/React.createElement(AddUserModal, {\n showUserModal: showAddUserModal,\n accounts: accounts,\n refetchCallBack: refetchUsers,\n toggleShowUserModal: toggleShowAddUserModal\n }), /*#__PURE__*/React.createElement(ToastContainer, {\n toastStyle: {\n borderRadius: 0,\n background: '#000',\n color: '#ffffff',\n padding: 10\n },\n position: \"bottom-right\",\n hideProgressBar: true,\n draggable: false\n }));\n};\nvar AccountList$2 = styled(AccountList$1)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$l;\nvar UserAccountModal = styled(Modal)(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\"], [\"\"])));\nvar InfoContent = styled.div(templateObject_2$c || (templateObject_2$c = __makeTemplateObject([\"\\n display: flex;\\n gap: 10px;\\n\"], [\"\\n display: flex;\\n gap: 10px;\\n\"])));\nvar templateObject_1$m, templateObject_2$c;\nvar MyAccountDocument = gql(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\\n query MyAccount {\\n me {\\n id\\n name\\n firstName\\n lastName\\n email\\n account {\\n name\\n permittedRiskInventories {\\n name\\n }\\n }\\n permittedRiskInventories {\\n name\\n accountName\\n }\\n }\\n }\\n\"], [\"\\n query MyAccount {\\n me {\\n id\\n name\\n firstName\\n lastName\\n email\\n account {\\n name\\n permittedRiskInventories {\\n name\\n }\\n }\\n permittedRiskInventories {\\n name\\n accountName\\n }\\n }\\n }\\n\"])));\n/**\r\n * __useMyAccountQuery__\r\n *\r\n * To run a query within a React component, call `useMyAccountQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useMyAccountQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useMyAccountQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\n\nfunction useMyAccountQuery(baseOptions) {\n return useQuery(MyAccountDocument, baseOptions);\n}\nvar templateObject_1$n;\nvar UserAccountModal$1 = function (props) {\n var className = props.className,\n show = props.show,\n _a = props.showInventories,\n showInventories = _a === void 0 ? false : _a,\n onClose = props.onClose;\n var _b = useMyAccountQuery(),\n data = _b.data,\n loading = _b.loading;\n var noAccountContent = /*#__PURE__*/React.createElement(Alert, {\n status: \"warning\",\n title: \"\",\n message: \"User information not available\"\n });\n var inventories = data === null || data === void 0 ? void 0 : data.me.permittedRiskInventories.map(function (ri, i) {\n return /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n style: {\n display: 'flex',\n justifyContent: 'space-between'\n }\n }, /*#__PURE__*/React.createElement(Text, {\n size: -1\n }, ri.name), /*#__PURE__*/React.createElement(Text, {\n size: -1\n }, ri.accountName));\n });\n var accountContent = /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(InfoContent, null, /*#__PURE__*/React.createElement(Text, null, \"Name:\"), \" \", /*#__PURE__*/React.createElement(Text, {\n weight: 500\n }, data === null || data === void 0 ? void 0 : data.me.name)), /*#__PURE__*/React.createElement(InfoContent, null, /*#__PURE__*/React.createElement(Text, null, \"Account:\"), \" \", /*#__PURE__*/React.createElement(Text, {\n weight: 500\n }, data === null || data === void 0 ? void 0 : data.me.account.name)), /*#__PURE__*/React.createElement(InfoContent, null, /*#__PURE__*/React.createElement(Text, null, \"Email:\"), \" \", /*#__PURE__*/React.createElement(Text, {\n weight: 500\n }, data === null || data === void 0 ? void 0 : data.me.email)), showInventories && /*#__PURE__*/React.createElement(\"div\", {\n style: {\n borderTop: \"solid 1px #ddd\",\n margin: \"10px 0\",\n padding: \"10px 0\"\n }\n }, /*#__PURE__*/React.createElement(Heading, {\n weight: 500\n }, \"Permitted Risk Inventories\"), /*#__PURE__*/React.createElement(\"div\", {\n style: {\n marginTop: 10\n }\n }, inventories)), inventories && inventories.length === 0 && /*#__PURE__*/React.createElement(Alert, {\n status: \"warning\",\n title: \"Empty\",\n message: \"No inventories\"\n }));\n return /*#__PURE__*/React.createElement(UserAccountModal, {\n title: \"Account Settings\",\n show: show,\n onClose: function () {\n return onClose();\n },\n \"data-testid\": generate(['user-account'], props),\n className: className,\n size: \"small\"\n }, loading && /*#__PURE__*/React.createElement(Loading, {\n position: \"absolute\"\n }), (data === null || data === void 0 ? void 0 : data.me) ? accountContent : noAccountContent);\n};\nvar UserAccountModal$2 = styled(UserAccountModal$1)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$o;\nvar NoAccessPage = styled(View)(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\\n padding-top: \", \";\\n\"], [\"\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(15);\n});\nvar templateObject_1$p;\nvar NoAccessPage$1 = function (props) {\n var className = props.className,\n hasAccount = props.hasAccount,\n _a = props.accountName,\n accountName = _a === void 0 ? 'Demo' : _a,\n _b = props.userName,\n userName = _b === void 0 ? 'Guest' : _b;\n var hasAccountContent = /*#__PURE__*/React.createElement(PageHeaderCondensed, {\n variant: \"child\",\n title: userName + \"'s Dashboard | \" + accountName\n });\n var noAccessContent = /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"No Access to Platform\",\n message: \"Please contact your system administrator for access\"\n });\n return /*#__PURE__*/React.createElement(NoAccessPage, {\n \"data-testid\": generate(['no-access-page'], props),\n className: className\n }, hasAccount && hasAccountContent, /*#__PURE__*/React.createElement(\"div\", {\n style: {\n paddingTop: 66,\n padding: 10\n }\n }, noAccessContent));\n};\nvar NoAccessPage$2 = styled(NoAccessPage$1)(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$q;\nexport { AccountList$2 as AccountList, NoAccessPage$2 as NoAccessPage, UserAccountModal$2 as UserAccountModal };","import React__default, { createElement, PureComponent } from 'react';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __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};\nfunction __rest(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}\nfunction __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++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nvar hexGen = function (len) {\n if (len === void 0) {\n len = 12;\n }\n var maxlen = 8;\n var min = Math.pow(16, Math.min(len, maxlen) - 1);\n var max = Math.pow(16, Math.min(len, maxlen)) - 1;\n var n = Math.floor(Math.random() * (max - min + 1)) + min;\n var r = n.toString(16);\n while (r.length < len) {\n r = r + hexGen(len - maxlen);\n }\n return r;\n};\nvar Factory = /** @class */function (_super) {\n __extends(Factory, _super);\n function Factory() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.defaultOptions = {\n exitTimeout: 500,\n enterTimeout: 50\n };\n _this.state = {\n instances: {},\n hashStack: []\n };\n _this.factoryRef = function (node) {\n _this.factoryContainer = node;\n };\n _this.getInstanceChildren = function () {\n var keys = Object.keys(_this.state.instances);\n var mapKeys = keys.map(function (key) {\n var _a = _this.state.instances[key],\n Component = _a.Component,\n props = _a.props,\n resolve = _a.resolve;\n var isOpen = Boolean(_this.state.hashStack.find(function (h) {\n return h === key;\n }));\n return createElement(Component, __assign({}, props, {\n key: key,\n isOpen: isOpen,\n onResolve: resolve,\n // legacy API\n close: resolve,\n open: isOpen\n }));\n });\n return mapKeys;\n };\n _this.create = function (Component, options) {\n if (options === void 0) {\n options = {};\n }\n return function (props) {\n return new Promise(function (promiseResolve) {\n var _a, _b;\n var hash = props && props.instanceId || hexGen();\n var instanceOptions = __assign(__assign({}, _this.defaultOptions), options);\n var _c = _this.props,\n isAppendIntances = _c.isAppendIntances,\n onOpen = _c.onOpen,\n onResolve = _c.onResolve;\n var resolve = function (value) {\n _this.remove(hash);\n promiseResolve(value);\n onResolve && onResolve(value, hash);\n };\n var instance = __assign({\n Component: Component,\n props: __assign(__assign({}, instanceOptions), props),\n resolve: resolve\n }, instanceOptions);\n var instances = isAppendIntances ? __assign(__assign({}, _this.state.instances), (_a = {}, _a[hash] = instance, _a)) : __assign((_b = {}, _b[hash] = instance, _b), _this.state.instances);\n _this.setState({\n instances: instances\n }, function () {\n setTimeout(function () {\n _this.setState({\n hashStack: __spreadArrays(_this.state.hashStack, [hash])\n });\n }, instanceOptions.enterTimeout);\n });\n onOpen && onOpen(hash, instance);\n });\n };\n };\n _this.omitState = function (hash) {\n var _a = _this.state.instances,\n _b = hash,\n _ = _a[_b],\n instances = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n _this.setState({\n instances: instances\n }, function () {\n var onRemove = _this.props.onRemove;\n onRemove && onRemove(hash);\n });\n };\n _this.remove = function (hash) {\n var _a = _this.state,\n _b = hash,\n target = _a.instances[_b];\n var exitTimeout = target && target.exitTimeout;\n _this.setState({\n hashStack: _this.state.hashStack.filter(function (h) {\n return h !== hash;\n })\n }, function () {\n setTimeout(_this.omitState, exitTimeout, hash);\n });\n };\n _this.getInstance = function (hash) {\n return _this.state.instances[hash];\n };\n _this.resolve = function (hash, value) {\n var instance = _this.state.instances[hash];\n if (instance) return instance.resolve(value);\n };\n _this.resolveAll = function () {\n Object.values(_this.state.instances).forEach(function (instance) {\n return instance.resolve();\n });\n };\n return _this;\n }\n Factory.prototype.componentWillUnmount = function () {\n this.resolveAll();\n };\n Factory.prototype.render = function () {\n return createElement(\"div\", {\n ref: this.factoryRef\n }, this.getInstanceChildren());\n };\n return Factory;\n}(PureComponent);\nvar defaultScope = 'stack';\nvar factoryStack = {};\nif (typeof window !== 'undefined') {\n if (!window.factoryStack) {\n window.factoryStack = {};\n }\n factoryStack = window.factoryStack;\n}\nvar PromiseController = /** @class */function (_super) {\n __extends(PromiseController, _super);\n function PromiseController() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getInstance = function (id) {\n return _this.factoryRef.getInstance(id);\n };\n _this.hasInstance = function (id) {\n return Boolean(_this.getInstance(id));\n };\n _this.resolveAll = function () {\n return _this.factoryRef.resolveAll();\n };\n _this.resolve = function (id, val) {\n return _this.factoryRef.resolve(id, val);\n };\n _this.registerRef = function (node) {\n var _a = _this.props.scope,\n scope = _a === void 0 ? defaultScope : _a;\n if (node) {\n factoryStack[scope] = node;\n _this.factoryRef = node;\n }\n };\n return _this;\n }\n PromiseController.prototype.render = function () {\n var _a = this.props,\n scope = _a.scope,\n rest = __rest(_a, [\"scope\"]);\n return React__default.createElement(Factory, __assign({}, rest, {\n ref: this.registerRef\n }));\n };\n PromiseController.defaultProps = {\n scope: defaultScope\n };\n return PromiseController;\n}(React__default.Component);\nvar createModal = function (Component, options) {\n return function (props) {\n return factoryStack[options && options.scope || defaultScope].create(Component, options)(props);\n };\n};\nexport default PromiseController;\nexport { createModal, hexGen };\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZXhHZW4udHMiLCIuLi9zcmMvRmFjdG9yeS50c3giLCIuLi9zcmMvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEhleCA9IHN0cmluZztcblxuY29uc3QgaGV4R2VuID0gKGxlbjogbnVtYmVyID0gMTIpOiBIZXggPT4ge1xuICBjb25zdCBtYXhsZW4gPSA4XG4gIGNvbnN0IG1pbiA9IE1hdGgucG93KDE2LCBNYXRoLm1pbihsZW4sIG1heGxlbikgLSAxKVxuICBjb25zdCBtYXggPSBNYXRoLnBvdygxNiwgTWF0aC5taW4obGVuLCBtYXhsZW4pKSAtIDFcbiAgY29uc3QgbiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW5cbiAgbGV0IHIgPW4udG9TdHJpbmcoMTYpXG4gIHdoaWxlIChyLmxlbmd0aCA8IGxlbikge1xuICAgIHIgPSByICsgaGV4R2VuKGxlbiAtIG1heGxlbilcbiAgfVxuICByZXR1cm4gclxufVxuXG5leHBvcnQgZGVmYXVsdCBoZXhHZW5cbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGhleEdlbiwgeyBIZXggfSBmcm9tICcuL2hleEdlbidcblxuZXhwb3J0IHR5cGUgRmFjdG9yeU9wdGlvbnMgPSB7XG4gIGV4aXRUaW1lb3V0PzogbnVtYmVyXG4gIGVudGVyVGltZW91dD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBJbnN0YW5jZUlkID0gSGV4IHwgc3RyaW5nXG5leHBvcnQgdHlwZSBDb21wb25lbnQgPSBSZWFjdC5Db21wb25lbnRUeXBlPGFueT5cblxuZXhwb3J0IHR5cGUgUmVzb2x2ZXIgPSAodmFsdWU/OiBhbnkpID0+IHZvaWRcblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZSBleHRlbmRzIEZhY3RvcnlPcHRpb25zIHtcbiAgQ29tcG9uZW50OiBDb21wb25lbnRcbiAgcHJvcHM6IEZhY3RvcnlPcHRpb25zICYgYW55XG4gIHJlc29sdmU6IFJlc29sdmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeVByb3BzIHtcbiAgaXNBcHBlbmRJbnRhbmNlcz86IGJvb2xlYW5cbiAgb25PcGVuPzogKGlkPzogSGV4LCBpbnN0YW5jZT86IEluc3RhbmNlKSA9PiB2b2lkXG4gIG9uUmVzb2x2ZT86IChyZXN1bHQ/OiBhbnksIGlkPzogSW5zdGFuY2VJZCkgPT4gdm9pZFxuICBvblJlbW92ZT86IChpZD86IEluc3RhbmNlSWQpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgRmFjdG9yeVN0YXRlID0ge1xuICBpbnN0YW5jZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBJbnN0YW5jZVxuICB9XG4gIGhhc2hTdGFjazogSGV4W11cbn1cblxuY2xhc3MgRmFjdG9yeSBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8RmFjdG9yeVByb3BzLCBGYWN0b3J5U3RhdGU+IHtcbiAgcHVibGljIGZhY3RvcnlDb250YWluZXI/OiBIVE1MRGl2RWxlbWVudCB8IG51bGxcblxuICBwcml2YXRlIGRlZmF1bHRPcHRpb25zOiBGYWN0b3J5T3B0aW9ucyA9IHtcbiAgICBleGl0VGltZW91dDogNTAwLFxuICAgIGVudGVyVGltZW91dDogNTBcbiAgfVxuXG4gIHN0YXRlOiBGYWN0b3J5U3RhdGUgPSB7XG4gICAgaW5zdGFuY2VzOiB7fSxcbiAgICBoYXNoU3RhY2s6IFtdXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnJlc29sdmVBbGwoKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiA8ZGl2IHJlZj17dGhpcy5mYWN0b3J5UmVmfT57dGhpcy5nZXRJbnN0YW5jZUNoaWxkcmVuKCl9PC9kaXY+XG4gIH1cblxuICBwcml2YXRlIGZhY3RvcnlSZWYgPSAobm9kZTogSFRNTERpdkVsZW1lbnQpID0+IHtcbiAgICB0aGlzLmZhY3RvcnlDb250YWluZXIgPSBub2RlXG4gIH1cblxuICBwcml2YXRlIGdldEluc3RhbmNlQ2hpbGRyZW4gPSAoKSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuc3RhdGUuaW5zdGFuY2VzKVxuXG4gICAgY29uc3QgbWFwS2V5cyA9IGtleXMubWFwKGtleSA9PiB7XG4gICAgICBjb25zdCB7IENvbXBvbmVudCwgcHJvcHMsIHJlc29sdmUgfSA9IHRoaXMuc3RhdGUuaW5zdGFuY2VzW2tleV1cblxuICAgICAgY29uc3QgaXNPcGVuID0gQm9vbGVhbih0aGlzLnN0YXRlLmhhc2hTdGFjay5maW5kKGggPT4gaCA9PT0ga2V5KSlcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbXBvbmVudFxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgICBpc09wZW49e2lzT3Blbn1cbiAgICAgICAgICBvblJlc29sdmU9e3Jlc29sdmV9XG4gICAgICAgICAgLy8gbGVnYWN5IEFQSVxuICAgICAgICAgIGNsb3NlPXtyZXNvbHZlfVxuICAgICAgICAgIG9wZW49e2lzT3Blbn1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9KVxuXG4gICAgcmV0dXJuIG1hcEtleXNcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGUgPSAoQ29tcG9uZW50OiBDb21wb25lbnQsIG9wdGlvbnM6IGFueSA9IHt9KSA9PiAocHJvcHM6IGFueSkgPT5cbiAgICBuZXcgUHJvbWlzZShwcm9taXNlUmVzb2x2ZSA9PiB7XG4gICAgICBjb25zdCBoYXNoID0gKHByb3BzICYmIHByb3BzLmluc3RhbmNlSWQpIHx8IGhleEdlbigpXG5cbiAgICAgIGNvbnN0IGluc3RhbmNlT3B0aW9ucyA9IHsgLi4udGhpcy5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9XG5cbiAgICAgIGNvbnN0IHsgaXNBcHBlbmRJbnRhbmNlcywgb25PcGVuLCBvblJlc29sdmUgfSA9IHRoaXMucHJvcHNcblxuICAgICAgY29uc3QgcmVzb2x2ZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlKGhhc2gpXG4gICAgICAgIHByb21pc2VSZXNvbHZlKHZhbHVlKVxuICAgICAgICBvblJlc29sdmUgJiYgb25SZXNvbHZlKHZhbHVlLCBoYXNoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IHtcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogeyAuLi5pbnN0YW5jZU9wdGlvbnMsIC4uLnByb3BzIH0sXG4gICAgICAgIHJlc29sdmUsXG4gICAgICAgIC4uLmluc3RhbmNlT3B0aW9uc1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbnN0YW5jZXMgPSBpc0FwcGVuZEludGFuY2VzXG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZS5pbnN0YW5jZXMsXG4gICAgICAgICAgICBbaGFzaF06IGluc3RhbmNlXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIFtoYXNoXTogaW5zdGFuY2UsXG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLmluc3RhbmNlc1xuICAgICAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbmNlc1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGFzaFN0YWNrOiBbLi4udGhpcy5zdGF0ZS5oYXNoU3RhY2ssIGhhc2hdIH0pXG4gICAgICAgICAgfSwgaW5zdGFuY2VPcHRpb25zLmVudGVyVGltZW91dClcbiAgICAgICAgfVxuICAgICAgKVxuXG4gICAgICBvbk9wZW4gJiYgb25PcGVuKGhhc2gsIGluc3RhbmNlKVxuICAgIH0pXG5cbiAgcHJpdmF0ZSBvbWl0U3RhdGUgPSAoaGFzaDogSW5zdGFuY2VJZCkgPT4ge1xuICAgIGNvbnN0IHsgW2hhc2hdOiBfLCAuLi5pbnN0YW5jZXMgfSA9IHRoaXMuc3RhdGUuaW5zdGFuY2VzXG5cbiAgICB0aGlzLnNldFN0YXRlKHsgaW5zdGFuY2VzIH0sICgpID0+IHtcbiAgICAgIGNvbnN0IHsgb25SZW1vdmUgfSA9IHRoaXMucHJvcHNcblxuICAgICAgb25SZW1vdmUgJiYgb25SZW1vdmUoaGFzaClcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmUgPSAoaGFzaDogSW5zdGFuY2VJZCk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGluc3RhbmNlczogeyBbaGFzaF06IHRhcmdldCB9XG4gICAgfSA9IHRoaXMuc3RhdGVcbiAgICBjb25zdCBleGl0VGltZW91dCA9IHRhcmdldCAmJiB0YXJnZXQuZXhpdFRpbWVvdXRcbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBoYXNoU3RhY2s6IHRoaXMuc3RhdGUuaGFzaFN0YWNrLmZpbHRlcihoID0+IGggIT09IGhhc2gpXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMub21pdFN0YXRlLCBleGl0VGltZW91dCwgaGFzaClcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0SW5zdGFuY2UgPSAoaGFzaDogSW5zdGFuY2VJZCk6IEluc3RhbmNlIHwgdW5kZWZpbmVkID0+XG4gICAgdGhpcy5zdGF0ZS5pbnN0YW5jZXNbaGFzaF1cblxuICBwdWJsaWMgcmVzb2x2ZSA9IChoYXNoOiBJbnN0YW5jZUlkLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnN0YXRlLmluc3RhbmNlc1toYXNoXVxuXG4gICAgaWYgKGluc3RhbmNlKSByZXR1cm4gaW5zdGFuY2UucmVzb2x2ZSh2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlQWxsID0gKCkgPT4ge1xuICAgIE9iamVjdC52YWx1ZXModGhpcy5zdGF0ZS5pbnN0YW5jZXMpLmZvckVhY2goaW5zdGFuY2UgPT4gaW5zdGFuY2UucmVzb2x2ZSgpKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZhY3RvcnlcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCBNb2RhbEZhY3RvcnksIHsgRmFjdG9yeVByb3BzLCBJbnN0YW5jZUlkIH0gZnJvbSAnLi9GYWN0b3J5J1xuXG5pbXBvcnQgaGV4R2VuIGZyb20gJy4vaGV4R2VuJ1xuXG5leHBvcnQgdHlwZSBTY29wZSA9IHN0cmluZ1xuXG50eXBlIEluamVjdGVkTW9kYWxQcm9wczxSZXN1bHQ+ID0ge1xuICBpc09wZW4/OiBib29sZWFuXG4gIG9uUmVzb2x2ZT86IChyZXN1bHQ6IFJlc3VsdCkgPT4gdm9pZFxuICBpbnN0YW5jZUlkPzogSW5zdGFuY2VJZFxuXG4gIC8vIGxlZ2FjeVxuICBvcGVuPzogYm9vbGVhblxuICBjbG9zZT86IChyZXN1bHQ6IFJlc3VsdCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBNb2RhbE9wdGlvbnMgPSB7XG4gIHNjb3BlPzogU2NvcGVcbiAgZXhpdFRpbWVvdXQ/OiBudW1iZXJcbiAgZW50ZXJUaW1lb3V0PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udHJvbGxlclByb3BzTW9kZWwgZXh0ZW5kcyBGYWN0b3J5UHJvcHMge1xuICBzY29wZT86IFNjb3BlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTW9kYWxNb2RlbCB7XG4gIDxUIGV4dGVuZHMgSW5qZWN0ZWRNb2RhbFByb3BzPFJlc3VsdD4sIFJlc3VsdCA9IGFueT4oXG4gICAgQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFQ+LFxuICAgIG9wdGlvbnM/OiBNb2RhbE9wdGlvbnNcbiAgKTogKFxuICAgIHByb3BzPzogT21pdDxULCAnaXNPcGVuJyB8ICdvblJlc29sdmUnIHwgJ29wZW4nIHwgJ2Nsb3NlJz5cbiAgKSA9PiBQcm9taXNlPFJlc3VsdD5cbn1cblxuaW50ZXJmYWNlIEZhY3RvcnlTdGFja01vZGVsIHtcbiAgW2tleTogc3RyaW5nXTogYW55XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZmFjdG9yeVN0YWNrOiBGYWN0b3J5U3RhY2tNb2RlbFxuICB9XG59XG5cbmNvbnN0IGRlZmF1bHRTY29wZTogU2NvcGUgPSAnc3RhY2snXG5cbmxldCBmYWN0b3J5U3RhY2s6IEZhY3RvcnlTdGFja01vZGVsID0ge31cblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIGlmICghd2luZG93LmZhY3RvcnlTdGFjaykge1xuICAgIHdpbmRvdy5mYWN0b3J5U3RhY2sgPSB7fVxuICB9XG5cbiAgZmFjdG9yeVN0YWNrID0gd2luZG93LmZhY3RvcnlTdGFja1xufVxuXG5jbGFzcyBQcm9taXNlQ29udHJvbGxlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxDb250cm9sbGVyUHJvcHNNb2RlbD4ge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIHNjb3BlOiBkZWZhdWx0U2NvcGVcbiAgfVxuXG4gIGZhY3RvcnlSZWYhOiBNb2RhbEZhY3RvcnlcblxuICBwdWJsaWMgZ2V0SW5zdGFuY2UgPSAoaWQ6IEluc3RhbmNlSWQpID0+IHRoaXMuZmFjdG9yeVJlZi5nZXRJbnN0YW5jZShpZClcbiAgcHVibGljIGhhc0luc3RhbmNlID0gKGlkOiBJbnN0YW5jZUlkKTogYm9vbGVhbiA9PlxuICAgIEJvb2xlYW4odGhpcy5nZXRJbnN0YW5jZShpZCkpXG5cbiAgcHVibGljIHJlc29sdmVBbGwgPSAoKSA9PiB0aGlzLmZhY3RvcnlSZWYucmVzb2x2ZUFsbCgpXG4gIHB1YmxpYyByZXNvbHZlID0gKGlkOiBJbnN0YW5jZUlkLCB2YWw6IGFueSkgPT5cbiAgICB0aGlzLmZhY3RvcnlSZWYucmVzb2x2ZShpZCwgdmFsKVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHNjb3BlLCAuLi5yZXN0IH0gPSB0aGlzLnByb3BzXG4gICAgcmV0dXJuIDxNb2RhbEZhY3Rvcnkgey4uLnJlc3R9IHJlZj17dGhpcy5yZWdpc3RlclJlZn0gLz5cbiAgfVxuXG4gIHJlZ2lzdGVyUmVmID0gKG5vZGU6IE1vZGFsRmFjdG9yeSkgPT4ge1xuICAgIGNvbnN0IHsgc2NvcGUgPSBkZWZhdWx0U2NvcGUgfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChub2RlKSB7XG4gICAgICBmYWN0b3J5U3RhY2tbc2NvcGVdID0gbm9kZVxuICAgICAgdGhpcy5mYWN0b3J5UmVmID0gbm9kZVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBjcmVhdGVNb2RhbDogQ3JlYXRlTW9kYWxNb2RlbCA9IChDb21wb25lbnQsIG9wdGlvbnMpID0+IHByb3BzID0+XG4gIGZhY3RvcnlTdGFja1sob3B0aW9ucyAmJiBvcHRpb25zLnNjb3BlKSB8fCBkZWZhdWx0U2NvcGVdLmNyZWF0ZShcbiAgICBDb21wb25lbnQsXG4gICAgb3B0aW9uc1xuICApKHByb3BzKVxuXG5leHBvcnQgZGVmYXVsdCBQcm9taXNlQ29udHJvbGxlclxuXG5leHBvcnQgeyBjcmVhdGVNb2RhbCwgaGV4R2VuIH1cbiJdLCJuYW1lcyI6WyJSZWFjdC5jcmVhdGVFbGVtZW50IiwiUmVhY3QuUHVyZUNvbXBvbmVudCIsIlJlYWN0IiwiTW9kYWxGYWN0b3J5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sTUFBTSxHQUFHLFVBQUMsR0FBZ0I7SUFBaEIsb0JBQUEsRUFBQSxRQUFnQjtJQUM5QixJQUFNLE1BQU0sR0FBRyxDQUFDLENBQUE7SUFDaEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDbkQsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFB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","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);","var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { canUseDOM } from './utils';\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n function Portal() {\n _classCallCheck(this, Portal);\n return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));\n }\n _createClass(Portal, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n }\n }, {\n key: 'render',\n value: function render() {\n if (!canUseDOM) {\n return null;\n }\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n return ReactDOM.createPortal(this.props.children, this.props.node || this.defaultNode);\n }\n }]);\n return Portal;\n}(React.Component);\nPortal.propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\nexport default Portal;","var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\n// This file is a fallback for a consumer who is not yet on React 16\n// as createPortal was introduced in React 16\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n function Portal() {\n _classCallCheck(this, Portal);\n return _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).apply(this, arguments));\n }\n _createClass(Portal, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.renderPortal();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(props) {\n this.renderPortal();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n ReactDOM.unmountComponentAtNode(this.defaultNode || this.props.node);\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n this.portal = null;\n }\n }, {\n key: 'renderPortal',\n value: function renderPortal(props) {\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n var children = this.props.children;\n // https://gist.github.com/jimfb/d99e0678e9da715ccf6454961ef04d1b\n if (typeof this.props.children.type === 'function') {\n children = React.cloneElement(this.props.children);\n }\n this.portal = ReactDOM.unstable_renderSubtreeIntoContainer(this, children, this.props.node || this.defaultNode);\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n return Portal;\n}(React.Component);\nexport default Portal;\nPortal.propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};","import ReactDOM from 'react-dom';\nimport Portalv4 from './Portal';\nimport LegacyPortal from './LegacyPortal';\nvar Portal = void 0;\nif (ReactDOM.createPortal) {\n Portal = Portalv4;\n} else {\n Portal = LegacyPortal;\n}\nexport default Portal;","var supportsPassiveEvents;\nfunction arePassiveEventsSupported() {\n if (supportsPassiveEvents !== undefined) {\n return supportsPassiveEvents;\n }\n var passive = false;\n var options = {\n // @ts-ignore: this is a temporary object, it doesn't have to return anything\n get passive() {\n passive = true;\n }\n };\n var noop = function noop() {};\n window.addEventListener('t', noop, options);\n window.removeEventListener('t', noop, options);\n supportsPassiveEvents = passive;\n return passive;\n}\nexport default arePassiveEventsSupported;","import { useLayoutEffect } from 'react';\nvar index = useLayoutEffect;\nexport default index;","import * as React from 'react';\nimport useIsomorphicLayoutEffect from 'use-isomorphic-layout-effect';\nvar useLatest = function useLatest(value) {\n var ref = React.useRef(value);\n useIsomorphicLayoutEffect(function () {\n ref.current = value;\n });\n return ref;\n};\nexport { useLatest as default };","import { useEffect } from 'react';\nimport arePassiveEventsSupported from 'are-passive-events-supported';\nimport useLatest from 'use-latest';\nvar MOUSEDOWN = 'mousedown';\nvar TOUCHSTART = 'touchstart';\nvar events = [MOUSEDOWN, TOUCHSTART];\nvar getOptions = function getOptions(event) {\n if (event !== TOUCHSTART) {\n return;\n }\n if (arePassiveEventsSupported()) {\n return {\n passive: true\n };\n }\n};\nfunction useOnClickOutside(ref, handler) {\n var handlerRef = useLatest(handler);\n useEffect(function () {\n if (!handler) {\n return;\n }\n var listener = function listener(event) {\n if (!ref.current || !handlerRef.current || ref.current.contains(event.target)) {\n return;\n }\n handlerRef.current(event);\n };\n events.forEach(function (event) {\n document.addEventListener(event, listener, getOptions(event));\n });\n return function () {\n events.forEach(function (event) {\n document.removeEventListener(event, listener, getOptions(event));\n });\n };\n }, [!handler]);\n}\nexport default useOnClickOutside;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}","import getWindow from \"./getWindow.js\";\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument :\n // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot ||\n // step into the shadow DOM of the parent of a slotted node\n element.parentNode || (\n // DOM Element detected\n isShadowRoot(element) ? element.host : null) ||\n // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList :\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n var noopFn = function noopFn() {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n offsetParent = offsetParent;\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height :\n // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width :\n // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n var _basePlacement = getBasePlacement(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\") break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets) {\n return;\n }\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === 'x' ? top : left;\n var _altSide = mainAxis === 'x' ? bottom : right;\n var _offset = popperOffsets[altAxis];\n var _len = altAxis === 'y' ? 'height' : 'width';\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\nfunction arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n if (!arrowElement || !popperOffsets) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\nimport { createPopper, applyStyles } from '@popperjs/core';\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n if (Array.isArray(value)) {\n return value;\n }\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n if (!offsetData) {\n return true;\n }\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n while (target) {\n var _target$getRootNode;\n if (parent.contains(target)) {\n return true;\n }\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n return false;\n}\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n currentInput.isTouch = true;\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ?\n// @ts-ignore\n!!window.msCrypto : false;\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\nfunction getFormattedMessage(message) {\n return [getDevMessage(message),\n // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;',\n // message\n 'line-height: 1.5',\n // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n visitedMessages.add(message);\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n visitedMessages.add(message);\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n if (name) {\n var _name;\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n if (!valueAsString) {\n return acc;\n }\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n if (plugins === void 0) {\n plugins = [];\n }\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\nfunction createArrowElement(value) {\n var arrow = div();\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n return arrow;\n}\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n if (shouldInvokePropsHook) {\n var _instance$props;\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n if (!aria.content) {\n return;\n }\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n function onTouchMove() {\n didTouchMove = true;\n }\n function onTouchStart() {\n didTouchMove = false;\n }\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n if (duration === 0) {\n return callback();\n }\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n on(eventType, onTrigger);\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n function onTrigger(event) {\n var _lastTriggerEvent;\n var shouldScheduleClickHide = false;\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n return null;\n }).filter(Boolean);\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n if (shouldBail) {\n return;\n }\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n scheduleHide(event);\n }\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n scheduleHide(event);\n }\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n addDocumentPress();\n var delay = getDelay(true);\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n var delay = getDelay(false);\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n function enable() {\n instance.state.isEnabled = true;\n }\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n if (instance.state.isDestroyed) {\n return;\n }\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n handleAriaExpandedAttribute();\n handleStyles();\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n invokeHook('onShow', [instance], false);\n if (instance.props.onShow(instance) === false) {\n return;\n }\n instance.state.isVisible = true;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n handleStyles();\n addDocumentPress();\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n setTransitionDuration([box, content], 0);\n }\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n mount();\n }\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n invokeHook('onHide', [instance], false);\n if (instance.props.onHide(instance) === false) {\n return;\n }\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n if (instance.state.isVisible) {\n instance.hide();\n }\n if (!instance.state.isMounted) {\n return;\n }\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n if (instance.state.isDestroyed) {\n return;\n }\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n if (instance) {\n acc.push(instance);\n }\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\nvar hideAll = function hideAll(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n excludedReferenceOrInstance = _ref.exclude,\n duration = _ref.duration;\n mountedInstances.forEach(function (instance) {\n var isExcluded = false;\n if (excludedReferenceOrInstance) {\n isExcluded = isReferenceElement(excludedReferenceOrInstance) ? instance.reference === excludedReferenceOrInstance : instance.popper === excludedReferenceOrInstance.popper;\n }\n if (!isExcluded) {\n var originalDuration = instance.props.duration;\n instance.setProps({\n duration: duration\n });\n instance.hide();\n if (!instance.state.isDestroyed) {\n instance.setProps({\n duration: originalDuration\n });\n }\n }\n });\n};\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nvar applyStylesModifier = Object.assign({}, applyStyles, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n }\n});\nvar createSingleton = function createSingleton(tippyInstances, optionalProps) {\n var _optionalProps$popper;\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!Array.isArray(tippyInstances), ['The first argument passed to createSingleton() must be an array of', 'tippy instances. The passed value was', String(tippyInstances)].join(' '));\n }\n var individualInstances = tippyInstances;\n var references = [];\n var triggerTargets = [];\n var currentTarget;\n var overrides = optionalProps.overrides;\n var interceptSetPropsCleanups = [];\n var shownOnCreate = false;\n function setTriggerTargets() {\n triggerTargets = individualInstances.map(function (instance) {\n return normalizeToArray(instance.props.triggerTarget || instance.reference);\n }).reduce(function (acc, item) {\n return acc.concat(item);\n }, []);\n }\n function setReferences() {\n references = individualInstances.map(function (instance) {\n return instance.reference;\n });\n }\n function enableInstances(isEnabled) {\n individualInstances.forEach(function (instance) {\n if (isEnabled) {\n instance.enable();\n } else {\n instance.disable();\n }\n });\n }\n function interceptSetProps(singleton) {\n return individualInstances.map(function (instance) {\n var originalSetProps = instance.setProps;\n instance.setProps = function (props) {\n originalSetProps(props);\n if (instance.reference === currentTarget) {\n singleton.setProps(props);\n }\n };\n return function () {\n instance.setProps = originalSetProps;\n };\n });\n } // have to pass singleton, as it maybe undefined on first call\n\n function prepareInstance(singleton, target) {\n var index = triggerTargets.indexOf(target); // bail-out\n\n if (target === currentTarget) {\n return;\n }\n currentTarget = target;\n var overrideProps = (overrides || []).concat('content').reduce(function (acc, prop) {\n acc[prop] = individualInstances[index].props[prop];\n return acc;\n }, {});\n singleton.setProps(Object.assign({}, overrideProps, {\n getReferenceClientRect: typeof overrideProps.getReferenceClientRect === 'function' ? overrideProps.getReferenceClientRect : function () {\n var _references$index;\n return (_references$index = references[index]) == null ? void 0 : _references$index.getBoundingClientRect();\n }\n }));\n }\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n var plugin = {\n fn: function fn() {\n return {\n onDestroy: function onDestroy() {\n enableInstances(true);\n },\n onHidden: function onHidden() {\n currentTarget = null;\n },\n onClickOutside: function onClickOutside(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n currentTarget = null;\n }\n },\n onShow: function onShow(instance) {\n if (instance.props.showOnCreate && !shownOnCreate) {\n shownOnCreate = true;\n prepareInstance(instance, references[0]);\n }\n },\n onTrigger: function onTrigger(instance, event) {\n prepareInstance(instance, event.currentTarget);\n }\n };\n }\n };\n var singleton = tippy(div(), Object.assign({}, removeProperties(optionalProps, ['overrides']), {\n plugins: [plugin].concat(optionalProps.plugins || []),\n triggerTarget: triggerTargets,\n popperOptions: Object.assign({}, optionalProps.popperOptions, {\n modifiers: [].concat(((_optionalProps$popper = optionalProps.popperOptions) == null ? void 0 : _optionalProps$popper.modifiers) || [], [applyStylesModifier])\n })\n }));\n var originalShow = singleton.show;\n singleton.show = function (target) {\n originalShow(); // first time, showOnCreate or programmatic call with no params\n // default to showing first instance\n\n if (!currentTarget && target == null) {\n return prepareInstance(singleton, references[0]);\n } // triggered from event (do nothing as prepareInstance already called by onTrigger)\n // programmatic call with no params when already visible (do nothing again)\n\n if (currentTarget && target == null) {\n return;\n } // target is index of instance\n\n if (typeof target === 'number') {\n return references[target] && prepareInstance(singleton, references[target]);\n } // target is a child tippy instance\n\n if (individualInstances.indexOf(target) >= 0) {\n var ref = target.reference;\n return prepareInstance(singleton, ref);\n } // target is a ReferenceElement\n\n if (references.indexOf(target) >= 0) {\n return prepareInstance(singleton, target);\n }\n };\n singleton.showNext = function () {\n var first = references[0];\n if (!currentTarget) {\n return singleton.show(0);\n }\n var index = references.indexOf(currentTarget);\n singleton.show(references[index + 1] || first);\n };\n singleton.showPrevious = function () {\n var last = references[references.length - 1];\n if (!currentTarget) {\n return singleton.show(last);\n }\n var index = references.indexOf(currentTarget);\n var target = references[index - 1] || last;\n singleton.show(target);\n };\n var originalSetProps = singleton.setProps;\n singleton.setProps = function (props) {\n overrides = props.overrides || overrides;\n originalSetProps(props);\n };\n singleton.setInstances = function (nextInstances) {\n enableInstances(true);\n interceptSetPropsCleanups.forEach(function (fn) {\n return fn();\n });\n individualInstances = nextInstances;\n enableInstances(false);\n setReferences();\n setTriggerTargets();\n interceptSetPropsCleanups = interceptSetProps(singleton);\n singleton.setProps({\n triggerTarget: triggerTargets\n });\n };\n interceptSetPropsCleanups = interceptSetProps(singleton);\n return singleton;\n};\nvar BUBBLING_EVENTS_MAP = {\n mouseover: 'mouseenter',\n focusin: 'focus',\n click: 'click'\n};\n/**\n * Creates a delegate instance that controls the creation of tippy instances\n * for child elements (`target` CSS selector).\n */\n\nfunction delegate(targets, props) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(!(props && props.target), ['You must specity a `target` prop indicating a CSS selector string matching', 'the target elements that should receive a tippy.'].join(' '));\n }\n var listeners = [];\n var childTippyInstances = [];\n var disabled = false;\n var target = props.target;\n var nativeProps = removeProperties(props, ['target']);\n var parentProps = Object.assign({}, nativeProps, {\n trigger: 'manual',\n touch: false\n });\n var childProps = Object.assign({\n touch: defaultProps.touch\n }, nativeProps, {\n showOnCreate: true\n });\n var returnValue = tippy(targets, parentProps);\n var normalizedReturnValue = normalizeToArray(returnValue);\n function onTrigger(event) {\n if (!event.target || disabled) {\n return;\n }\n var targetNode = event.target.closest(target);\n if (!targetNode) {\n return;\n } // Get relevant trigger with fallbacks:\n // 1. Check `data-tippy-trigger` attribute on target node\n // 2. Fallback to `trigger` passed to `delegate()`\n // 3. Fallback to `defaultProps.trigger`\n\n var trigger = targetNode.getAttribute('data-tippy-trigger') || props.trigger || defaultProps.trigger; // @ts-ignore\n\n if (targetNode._tippy) {\n return;\n }\n if (event.type === 'touchstart' && typeof childProps.touch === 'boolean') {\n return;\n }\n if (event.type !== 'touchstart' && trigger.indexOf(BUBBLING_EVENTS_MAP[event.type]) < 0) {\n return;\n }\n var instance = tippy(targetNode, childProps);\n if (instance) {\n childTippyInstances = childTippyInstances.concat(instance);\n }\n }\n function on(node, eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n }\n function addEventListeners(instance) {\n var reference = instance.reference;\n on(reference, 'touchstart', onTrigger, TOUCH_OPTIONS);\n on(reference, 'mouseover', onTrigger);\n on(reference, 'focusin', onTrigger);\n on(reference, 'click', onTrigger);\n }\n function removeEventListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n function applyMutations(instance) {\n var originalDestroy = instance.destroy;\n var originalEnable = instance.enable;\n var originalDisable = instance.disable;\n instance.destroy = function (shouldDestroyChildInstances) {\n if (shouldDestroyChildInstances === void 0) {\n shouldDestroyChildInstances = true;\n }\n if (shouldDestroyChildInstances) {\n childTippyInstances.forEach(function (instance) {\n instance.destroy();\n });\n }\n childTippyInstances = [];\n removeEventListeners();\n originalDestroy();\n };\n instance.enable = function () {\n originalEnable();\n childTippyInstances.forEach(function (instance) {\n return instance.enable();\n });\n disabled = false;\n };\n instance.disable = function () {\n originalDisable();\n childTippyInstances.forEach(function (instance) {\n return instance.disable();\n });\n disabled = true;\n };\n addEventListeners(instance);\n }\n normalizedReturnValue.forEach(applyMutations);\n return returnValue;\n}\nvar animateFill = {\n name: 'animateFill',\n defaultValue: false,\n fn: function fn(instance) {\n var _instance$props$rende;\n\n // @ts-ignore\n if (!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy)) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(instance.props.animateFill, 'The `animateFill` plugin requires the default render function.');\n }\n return {};\n }\n var _getChildren = getChildren(instance.popper),\n box = _getChildren.box,\n content = _getChildren.content;\n var backdrop = instance.props.animateFill ? createBackdropElement() : null;\n return {\n onCreate: function onCreate() {\n if (backdrop) {\n box.insertBefore(backdrop, box.firstElementChild);\n box.setAttribute('data-animatefill', '');\n box.style.overflow = 'hidden';\n instance.setProps({\n arrow: false,\n animation: 'shift-away'\n });\n }\n },\n onMount: function onMount() {\n if (backdrop) {\n var transitionDuration = box.style.transitionDuration;\n var duration = Number(transitionDuration.replace('ms', '')); // The content should fade in after the backdrop has mostly filled the\n // tooltip element. `clip-path` is the other alternative but is not\n // well-supported and is buggy on some devices.\n\n content.style.transitionDelay = Math.round(duration / 10) + \"ms\";\n backdrop.style.transitionDuration = transitionDuration;\n setVisibilityState([backdrop], 'visible');\n }\n },\n onShow: function onShow() {\n if (backdrop) {\n backdrop.style.transitionDuration = '0ms';\n }\n },\n onHide: function onHide() {\n if (backdrop) {\n setVisibilityState([backdrop], 'hidden');\n }\n }\n };\n }\n};\nfunction createBackdropElement() {\n var backdrop = div();\n backdrop.className = BACKDROP_CLASS;\n setVisibilityState([backdrop], 'hidden');\n return backdrop;\n}\nvar mouseCoords = {\n clientX: 0,\n clientY: 0\n};\nvar activeInstances = [];\nfunction storeMouseCoords(_ref) {\n var clientX = _ref.clientX,\n clientY = _ref.clientY;\n mouseCoords = {\n clientX: clientX,\n clientY: clientY\n };\n}\nfunction addMouseCoordsListener(doc) {\n doc.addEventListener('mousemove', storeMouseCoords);\n}\nfunction removeMouseCoordsListener(doc) {\n doc.removeEventListener('mousemove', storeMouseCoords);\n}\nvar followCursor = {\n name: 'followCursor',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n var doc = getOwnerDocument(instance.props.triggerTarget || reference);\n var isInternalUpdate = false;\n var wasFocusEvent = false;\n var isUnmounted = true;\n var prevProps = instance.props;\n function getIsInitialBehavior() {\n return instance.props.followCursor === 'initial' && instance.state.isVisible;\n }\n function addListener() {\n doc.addEventListener('mousemove', onMouseMove);\n }\n function removeListener() {\n doc.removeEventListener('mousemove', onMouseMove);\n }\n function unsetGetReferenceClientRect() {\n isInternalUpdate = true;\n instance.setProps({\n getReferenceClientRect: null\n });\n isInternalUpdate = false;\n }\n function onMouseMove(event) {\n // If the instance is interactive, avoid updating the position unless it's\n // over the reference element\n var isCursorOverReference = event.target ? reference.contains(event.target) : true;\n var followCursor = instance.props.followCursor;\n var clientX = event.clientX,\n clientY = event.clientY;\n var rect = reference.getBoundingClientRect();\n var relativeX = clientX - rect.left;\n var relativeY = clientY - rect.top;\n if (isCursorOverReference || !instance.props.interactive) {\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n var rect = reference.getBoundingClientRect();\n var x = clientX;\n var y = clientY;\n if (followCursor === 'initial') {\n x = rect.left + relativeX;\n y = rect.top + relativeY;\n }\n var top = followCursor === 'horizontal' ? rect.top : y;\n var right = followCursor === 'vertical' ? rect.right : x;\n var bottom = followCursor === 'horizontal' ? rect.bottom : y;\n var left = followCursor === 'vertical' ? rect.left : x;\n return {\n width: right - left,\n height: bottom - top,\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n }\n });\n }\n }\n function create() {\n if (instance.props.followCursor) {\n activeInstances.push({\n instance: instance,\n doc: doc\n });\n addMouseCoordsListener(doc);\n }\n }\n function destroy() {\n activeInstances = activeInstances.filter(function (data) {\n return data.instance !== instance;\n });\n if (activeInstances.filter(function (data) {\n return data.doc === doc;\n }).length === 0) {\n removeMouseCoordsListener(doc);\n }\n }\n return {\n onCreate: create,\n onDestroy: destroy,\n onBeforeUpdate: function onBeforeUpdate() {\n prevProps = instance.props;\n },\n onAfterUpdate: function onAfterUpdate(_, _ref2) {\n var followCursor = _ref2.followCursor;\n if (isInternalUpdate) {\n return;\n }\n if (followCursor !== undefined && prevProps.followCursor !== followCursor) {\n destroy();\n if (followCursor) {\n create();\n if (instance.state.isMounted && !wasFocusEvent && !getIsInitialBehavior()) {\n addListener();\n }\n } else {\n removeListener();\n unsetGetReferenceClientRect();\n }\n }\n },\n onMount: function onMount() {\n if (instance.props.followCursor && !wasFocusEvent) {\n if (isUnmounted) {\n onMouseMove(mouseCoords);\n isUnmounted = false;\n }\n if (!getIsInitialBehavior()) {\n addListener();\n }\n }\n },\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n mouseCoords = {\n clientX: event.clientX,\n clientY: event.clientY\n };\n }\n wasFocusEvent = event.type === 'focus';\n },\n onHidden: function onHidden() {\n if (instance.props.followCursor) {\n unsetGetReferenceClientRect();\n removeListener();\n isUnmounted = true;\n }\n }\n };\n }\n};\nfunction getProps(props, modifier) {\n var _props$popperOptions;\n return {\n popperOptions: Object.assign({}, props.popperOptions, {\n modifiers: [].concat((((_props$popperOptions = props.popperOptions) == null ? void 0 : _props$popperOptions.modifiers) || []).filter(function (_ref) {\n var name = _ref.name;\n return name !== modifier.name;\n }), [modifier])\n })\n };\n}\nvar inlinePositioning = {\n name: 'inlinePositioning',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference;\n function isEnabled() {\n return !!instance.props.inlinePositioning;\n }\n var placement;\n var cursorRectIndex = -1;\n var isInternalUpdate = false;\n var triedPlacements = [];\n var modifier = {\n name: 'tippyInlinePositioning',\n enabled: true,\n phase: 'afterWrite',\n fn: function fn(_ref2) {\n var state = _ref2.state;\n if (isEnabled()) {\n if (triedPlacements.indexOf(state.placement) !== -1) {\n triedPlacements = [];\n }\n if (placement !== state.placement && triedPlacements.indexOf(state.placement) === -1) {\n triedPlacements.push(state.placement);\n instance.setProps({\n // @ts-ignore - unneeded DOMRect properties\n getReferenceClientRect: function getReferenceClientRect() {\n return _getReferenceClientRect(state.placement);\n }\n });\n }\n placement = state.placement;\n }\n }\n };\n function _getReferenceClientRect(placement) {\n return getInlineBoundingClientRect(getBasePlacement(placement), reference.getBoundingClientRect(), arrayFrom(reference.getClientRects()), cursorRectIndex);\n }\n function setInternalProps(partialProps) {\n isInternalUpdate = true;\n instance.setProps(partialProps);\n isInternalUpdate = false;\n }\n function addModifier() {\n if (!isInternalUpdate) {\n setInternalProps(getProps(instance.props, modifier));\n }\n }\n return {\n onCreate: addModifier,\n onAfterUpdate: addModifier,\n onTrigger: function onTrigger(_, event) {\n if (isMouseEvent(event)) {\n var rects = arrayFrom(instance.reference.getClientRects());\n var cursorRect = rects.find(function (rect) {\n return rect.left - 2 <= event.clientX && rect.right + 2 >= event.clientX && rect.top - 2 <= event.clientY && rect.bottom + 2 >= event.clientY;\n });\n var index = rects.indexOf(cursorRect);\n cursorRectIndex = index > -1 ? index : cursorRectIndex;\n }\n },\n onHidden: function onHidden() {\n cursorRectIndex = -1;\n }\n };\n }\n};\nfunction getInlineBoundingClientRect(currentBasePlacement, boundingRect, clientRects, cursorRectIndex) {\n // Not an inline element, or placement is not yet known\n if (clientRects.length < 2 || currentBasePlacement === null) {\n return boundingRect;\n } // There are two rects and they are disjoined\n\n if (clientRects.length === 2 && cursorRectIndex >= 0 && clientRects[0].left > clientRects[1].right) {\n return clientRects[cursorRectIndex] || boundingRect;\n }\n switch (currentBasePlacement) {\n case 'top':\n case 'bottom':\n {\n var firstRect = clientRects[0];\n var lastRect = clientRects[clientRects.length - 1];\n var isTop = currentBasePlacement === 'top';\n var top = firstRect.top;\n var bottom = lastRect.bottom;\n var left = isTop ? firstRect.left : lastRect.left;\n var right = isTop ? firstRect.right : lastRect.right;\n var width = right - left;\n var height = bottom - top;\n return {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n case 'left':\n case 'right':\n {\n var minLeft = Math.min.apply(Math, clientRects.map(function (rects) {\n return rects.left;\n }));\n var maxRight = Math.max.apply(Math, clientRects.map(function (rects) {\n return rects.right;\n }));\n var measureRects = clientRects.filter(function (rect) {\n return currentBasePlacement === 'left' ? rect.left === minLeft : rect.right === maxRight;\n });\n var _top = measureRects[0].top;\n var _bottom = measureRects[measureRects.length - 1].bottom;\n var _left = minLeft;\n var _right = maxRight;\n var _width = _right - _left;\n var _height = _bottom - _top;\n return {\n top: _top,\n bottom: _bottom,\n left: _left,\n right: _right,\n width: _width,\n height: _height\n };\n }\n default:\n {\n return boundingRect;\n }\n }\n}\nvar sticky = {\n name: 'sticky',\n defaultValue: false,\n fn: function fn(instance) {\n var reference = instance.reference,\n popper = instance.popper;\n function getReference() {\n return instance.popperInstance ? instance.popperInstance.state.elements.reference : reference;\n }\n function shouldCheck(value) {\n return instance.props.sticky === true || instance.props.sticky === value;\n }\n var prevRefRect = null;\n var prevPopRect = null;\n function updatePosition() {\n var currentRefRect = shouldCheck('reference') ? getReference().getBoundingClientRect() : null;\n var currentPopRect = shouldCheck('popper') ? popper.getBoundingClientRect() : null;\n if (currentRefRect && areRectsDifferent(prevRefRect, currentRefRect) || currentPopRect && areRectsDifferent(prevPopRect, currentPopRect)) {\n if (instance.popperInstance) {\n instance.popperInstance.update();\n }\n }\n prevRefRect = currentRefRect;\n prevPopRect = currentPopRect;\n if (instance.state.isMounted) {\n requestAnimationFrame(updatePosition);\n }\n }\n return {\n onMount: function onMount() {\n if (instance.props.sticky) {\n updatePosition();\n }\n }\n };\n }\n};\nfunction areRectsDifferent(rectA, rectB) {\n if (rectA && rectB) {\n return rectA.top !== rectB.top || rectA.right !== rectB.right || rectA.bottom !== rectB.bottom || rectA.left !== rectB.left;\n }\n return true;\n}\ntippy.setDefaultProps({\n render: render\n});\nexport default tippy;\nexport { animateFill, createSingleton, delegate, followCursor, hideAll, inlinePositioning, ROUND_ARROW as roundArrow, sticky };\n//# sourceMappingURL=tippy.esm.js.map","import tippy, { createSingleton } from 'tippy.js';\nexport { default as tippy } from 'tippy.js';\nimport React, { useLayoutEffect, useEffect, useRef, useState, cloneElement, useMemo, forwardRef as forwardRef$1 } from 'react';\nimport { createPortal } from 'react-dom';\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nfunction preserveRef(ref, node) {\n if (ref) {\n if (typeof ref === 'function') {\n ref(node);\n }\n if ({}.hasOwnProperty.call(ref, 'current')) {\n ref.current = node;\n }\n }\n}\nfunction ssrSafeCreateDiv() {\n return isBrowser && document.createElement('div');\n}\nfunction toDataAttributes(attrs) {\n var dataAttrs = {\n 'data-placement': attrs.placement\n };\n if (attrs.referenceHidden) {\n dataAttrs['data-reference-hidden'] = '';\n }\n if (attrs.escaped) {\n dataAttrs['data-escaped'] = '';\n }\n return dataAttrs;\n}\nfunction deepEqual(x, y) {\n if (x === y) {\n return true;\n } else if (typeof x === 'object' && x != null && typeof y === 'object' && y != null) {\n if (Object.keys(x).length !== Object.keys(y).length) {\n return false;\n }\n for (var prop in x) {\n if (y.hasOwnProperty(prop)) {\n if (!deepEqual(x[prop], y[prop])) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\nfunction uniqueByShape(arr) {\n var output = [];\n arr.forEach(function (item) {\n if (!output.find(function (outputItem) {\n return deepEqual(item, outputItem);\n })) {\n output.push(item);\n }\n });\n return output;\n}\nfunction deepPreserveProps(instanceProps, componentProps) {\n var _instanceProps$popper, _componentProps$poppe;\n return Object.assign({}, componentProps, {\n popperOptions: Object.assign({}, instanceProps.popperOptions, componentProps.popperOptions, {\n modifiers: uniqueByShape([].concat(((_instanceProps$popper = instanceProps.popperOptions) == null ? void 0 : _instanceProps$popper.modifiers) || [], ((_componentProps$poppe = componentProps.popperOptions) == null ? void 0 : _componentProps$poppe.modifiers) || []))\n })\n });\n}\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\nfunction useMutableBox(initialValue) {\n // Using refs instead of state as it's recommended to not store imperative\n // values in state due to memory problems in React(?)\n var ref = useRef();\n if (!ref.current) {\n ref.current = typeof initialValue === 'function' ? initialValue() : initialValue;\n }\n return ref.current;\n}\nfunction updateClassName(box, action, classNames) {\n classNames.split(/\\s+/).forEach(function (name) {\n if (name) {\n box.classList[action](name);\n }\n });\n}\nvar classNamePlugin = {\n name: 'className',\n defaultValue: '',\n fn: function fn(instance) {\n var box = instance.popper.firstElementChild;\n var isDefaultRenderFn = function isDefaultRenderFn() {\n var _instance$props$rende;\n return !!((_instance$props$rende = instance.props.render) == null ? void 0 : _instance$props$rende.$$tippy);\n };\n function add() {\n if (instance.props.className && !isDefaultRenderFn()) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['@tippyjs/react: Cannot use `className` prop in conjunction with', '`render` prop. Place the className on the element you are', 'rendering.'].join(' '));\n }\n return;\n }\n updateClassName(box, 'add', instance.props.className);\n }\n function remove() {\n if (isDefaultRenderFn()) {\n updateClassName(box, 'remove', instance.props.className);\n }\n }\n return {\n onCreate: add,\n onBeforeUpdate: remove,\n onAfterUpdate: add\n };\n }\n};\nfunction TippyGenerator(tippy) {\n function Tippy(_ref) {\n var children = _ref.children,\n content = _ref.content,\n visible = _ref.visible,\n singleton = _ref.singleton,\n render = _ref.render,\n reference = _ref.reference,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$ignoreAttributes = _ref.ignoreAttributes,\n ignoreAttributes = _ref$ignoreAttributes === void 0 ? true : _ref$ignoreAttributes,\n __source = _ref.__source,\n __self = _ref.__self,\n restOfNativeProps = _objectWithoutPropertiesLoose(_ref, [\"children\", \"content\", \"visible\", \"singleton\", \"render\", \"reference\", \"disabled\", \"ignoreAttributes\", \"__source\", \"__self\"]);\n var isControlledMode = visible !== undefined;\n var isSingletonMode = singleton !== undefined;\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n var _useState2 = useState({}),\n attrs = _useState2[0],\n setAttrs = _useState2[1];\n var _useState3 = useState(),\n singletonContent = _useState3[0],\n setSingletonContent = _useState3[1];\n var mutableBox = useMutableBox(function () {\n return {\n container: ssrSafeCreateDiv(),\n renders: 1\n };\n });\n var props = Object.assign({\n ignoreAttributes: ignoreAttributes\n }, restOfNativeProps, {\n content: mutableBox.container\n });\n if (isControlledMode) {\n if (process.env.NODE_ENV !== 'production') {\n ['trigger', 'hideOnClick', 'showOnCreate'].forEach(function (nativeStateProp) {\n if (props[nativeStateProp] !== undefined) {\n console.warn([\"@tippyjs/react: Cannot specify `\" + nativeStateProp + \"` prop in\", \"controlled mode (`visible` prop)\"].join(' '));\n }\n });\n }\n props.trigger = 'manual';\n props.hideOnClick = false;\n }\n if (isSingletonMode) {\n disabled = true;\n }\n var computedProps = props;\n var plugins = props.plugins || [];\n if (render) {\n computedProps = Object.assign({}, props, {\n plugins: isSingletonMode && singleton.data != null ? [].concat(plugins, [{\n fn: function fn() {\n return {\n onTrigger: function onTrigger(instance, event) {\n var node = singleton.data.children.find(function (_ref2) {\n var instance = _ref2.instance;\n return instance.reference === event.currentTarget;\n });\n instance.state.$$activeSingletonInstance = node.instance;\n setSingletonContent(node.content);\n }\n };\n }\n }]) : plugins,\n render: function render() {\n return {\n popper: mutableBox.container\n };\n }\n });\n }\n var deps = [reference].concat(children ? [children.type] : []); // CREATE\n\n useIsomorphicLayoutEffect(function () {\n var element = reference;\n if (reference && reference.hasOwnProperty('current')) {\n element = reference.current;\n }\n var instance = tippy(element || mutableBox.ref || ssrSafeCreateDiv(), Object.assign({}, computedProps, {\n plugins: [classNamePlugin].concat(props.plugins || [])\n }));\n mutableBox.instance = instance;\n if (disabled) {\n instance.disable();\n }\n if (visible) {\n instance.show();\n }\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps,\n setSingletonContent: setSingletonContent\n });\n }\n setMounted(true);\n return function () {\n instance.destroy();\n singleton == null ? void 0 : singleton.cleanup(instance);\n };\n }, deps); // UPDATE\n\n useIsomorphicLayoutEffect(function () {\n var _instance$popperInsta;\n\n // Prevent this effect from running on 1st render\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n var instance = mutableBox.instance;\n instance.setProps(deepPreserveProps(instance.props, computedProps)); // Fixes #264\n\n (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.forceUpdate();\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n if (isControlledMode) {\n if (visible) {\n instance.show();\n } else {\n instance.hide();\n }\n }\n if (isSingletonMode) {\n singleton.hook({\n instance: instance,\n content: content,\n props: computedProps,\n setSingletonContent: setSingletonContent\n });\n }\n });\n useIsomorphicLayoutEffect(function () {\n var _instance$props$poppe;\n if (!render) {\n return;\n }\n var instance = mutableBox.instance;\n instance.setProps({\n popperOptions: Object.assign({}, instance.props.popperOptions, {\n modifiers: [].concat((((_instance$props$poppe = instance.props.popperOptions) == null ? void 0 : _instance$props$poppe.modifiers) || []).filter(function (_ref3) {\n var name = _ref3.name;\n return name !== '$$tippyReact';\n }), [{\n name: '$$tippyReact',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref4) {\n var _state$modifiersData;\n var state = _ref4.state;\n var hideData = (_state$modifiersData = state.modifiersData) == null ? void 0 : _state$modifiersData.hide; // WARNING: this is a high-risk path that can cause an infinite\n // loop. This expression _must_ evaluate to false when required\n\n if (attrs.placement !== state.placement || attrs.referenceHidden !== (hideData == null ? void 0 : hideData.isReferenceHidden) || attrs.escaped !== (hideData == null ? void 0 : hideData.hasPopperEscaped)) {\n setAttrs({\n placement: state.placement,\n referenceHidden: hideData == null ? void 0 : hideData.isReferenceHidden,\n escaped: hideData == null ? void 0 : hideData.hasPopperEscaped\n });\n }\n state.attributes.popper = {};\n }\n }])\n })\n });\n }, [attrs.placement, attrs.referenceHidden, attrs.escaped].concat(deps));\n return /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n mutableBox.ref = node;\n preserveRef(children.ref, node);\n }\n }) : null, mounted && /*#__PURE__*/createPortal(render ? render(toDataAttributes(attrs), singletonContent, mutableBox.instance) : content, mutableBox.container));\n }\n return Tippy;\n}\nfunction useSingletonGenerator(createSingleton) {\n return function useSingleton(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$disabled = _ref.disabled,\n disabled = _ref$disabled === void 0 ? false : _ref$disabled,\n _ref$overrides = _ref.overrides,\n overrides = _ref$overrides === void 0 ? [] : _ref$overrides;\n var _useState = useState(false),\n mounted = _useState[0],\n setMounted = _useState[1];\n var mutableBox = useMutableBox({\n children: [],\n renders: 1\n });\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n setMounted(true);\n return;\n }\n var children = mutableBox.children,\n sourceData = mutableBox.sourceData;\n if (!sourceData) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['@tippyjs/react: The `source` variable from `useSingleton()` has', 'not been passed to a <Tippy /> component.'].join(' '));\n }\n return;\n }\n var instance = createSingleton(children.map(function (child) {\n return child.instance;\n }), Object.assign({}, sourceData.props, {\n popperOptions: sourceData.instance.props.popperOptions,\n overrides: overrides,\n plugins: [classNamePlugin].concat(sourceData.props.plugins || [])\n }));\n mutableBox.instance = instance;\n if (disabled) {\n instance.disable();\n }\n return function () {\n instance.destroy();\n mutableBox.children = children.filter(function (_ref2) {\n var instance = _ref2.instance;\n return !instance.state.isDestroyed;\n });\n };\n }, [mounted]);\n useIsomorphicLayoutEffect(function () {\n if (!mounted) {\n return;\n }\n if (mutableBox.renders === 1) {\n mutableBox.renders++;\n return;\n }\n var children = mutableBox.children,\n instance = mutableBox.instance,\n sourceData = mutableBox.sourceData;\n if (!(instance && sourceData)) {\n return;\n }\n var _sourceData$props = sourceData.props,\n content = _sourceData$props.content,\n props = _objectWithoutPropertiesLoose(_sourceData$props, [\"content\"]);\n instance.setProps(deepPreserveProps(instance.props, Object.assign({}, props, {\n overrides: overrides\n })));\n instance.setInstances(children.map(function (child) {\n return child.instance;\n }));\n if (disabled) {\n instance.disable();\n } else {\n instance.enable();\n }\n });\n return useMemo(function () {\n var source = {\n data: mutableBox,\n hook: function hook(data) {\n mutableBox.sourceData = data;\n mutableBox.setSingletonContent = data.setSingletonContent;\n },\n cleanup: function cleanup() {\n mutableBox.sourceData = null;\n }\n };\n var target = {\n hook: function hook(data) {\n var _mutableBox$instance, _mutableBox$instance2;\n mutableBox.children = mutableBox.children.filter(function (_ref3) {\n var instance = _ref3.instance;\n return data.instance !== instance;\n });\n mutableBox.children.push(data);\n if (((_mutableBox$instance = mutableBox.instance) == null ? void 0 : _mutableBox$instance.state.isMounted) && ((_mutableBox$instance2 = mutableBox.instance) == null ? void 0 : _mutableBox$instance2.state.$$activeSingletonInstance) === data.instance) {\n mutableBox.setSingletonContent == null ? void 0 : mutableBox.setSingletonContent(data.content);\n }\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n },\n cleanup: function cleanup(instance) {\n mutableBox.children = mutableBox.children.filter(function (data) {\n return data.instance !== instance;\n });\n if (mutableBox.instance && !mutableBox.instance.state.isDestroyed) {\n mutableBox.instance.setInstances(mutableBox.children.map(function (child) {\n return child.instance;\n }));\n }\n }\n };\n return [source, target];\n }, []);\n };\n}\nvar forwardRef = function (Tippy, defaultProps) {\n return /*#__PURE__*/forwardRef$1(function TippyWrapper(_ref, _ref2) {\n var children = _ref.children,\n props = _objectWithoutPropertiesLoose(_ref, [\"children\"]);\n return /*#__PURE__*/(\n // If I spread them separately here, Babel adds the _extends ponyfill for\n // some reason\n React.createElement(Tippy, Object.assign({}, defaultProps, props), children ? /*#__PURE__*/cloneElement(children, {\n ref: function ref(node) {\n preserveRef(_ref2, node);\n preserveRef(children.ref, node);\n }\n }) : null)\n );\n });\n};\nvar useSingleton = /*#__PURE__*/useSingletonGenerator(createSingleton);\nvar index = /*#__PURE__*/forwardRef( /*#__PURE__*/TippyGenerator(tippy));\nexport default index;\nexport { useSingleton };\n//# sourceMappingURL=tippy-react.esm.js.map","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport React, { useState, useCallback, forwardRef, useRef, useEffect, useImperativeHandle, useMemo } from 'react';\nconst is = {\n arr: Array.isArray,\n obj: a => Object.prototype.toString.call(a) === '[object Object]',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === void 0,\n nul: a => a === null,\n set: a => a instanceof Set,\n map: a => a instanceof Map,\n equ(a, b) {\n if (typeof a !== typeof b) return false;\n if (is.str(a) || is.num(a)) return a === b;\n if (is.obj(a) && is.obj(b) && Object.keys(a).length + Object.keys(b).length === 0) return true;\n let i;\n for (i in a) if (!(i in b)) return false;\n for (i in b) if (a[i] !== b[i]) return false;\n return is.und(i) ? a === b : true;\n }\n};\nfunction merge(target, lowercase) {\n if (lowercase === void 0) {\n lowercase = true;\n }\n return object => (is.arr(object) ? object : Object.keys(object)).reduce((acc, element) => {\n const key = lowercase ? element[0].toLowerCase() + element.substring(1) : element;\n acc[key] = target(key);\n return acc;\n }, target);\n}\nfunction useForceUpdate() {\n const _useState = useState(false),\n f = _useState[1];\n const forceUpdate = useCallback(() => f(v => !v), []);\n return forceUpdate;\n}\nfunction withDefault(value, defaultValue) {\n return is.und(value) || is.nul(value) ? defaultValue : value;\n}\nfunction toArray(a) {\n return !is.und(a) ? is.arr(a) ? a : [a] : [];\n}\nfunction callProp(obj) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return is.fun(obj) ? obj(...args) : obj;\n}\nfunction getForwardProps(props) {\n const to = props.to,\n from = props.from,\n config = props.config,\n onStart = props.onStart,\n onRest = props.onRest,\n onFrame = props.onFrame,\n children = props.children,\n reset = props.reset,\n reverse = props.reverse,\n force = props.force,\n immediate = props.immediate,\n delay = props.delay,\n attach = props.attach,\n destroyed = props.destroyed,\n interpolateTo = props.interpolateTo,\n ref = props.ref,\n lazy = props.lazy,\n forward = _objectWithoutPropertiesLoose(props, [\"to\", \"from\", \"config\", \"onStart\", \"onRest\", \"onFrame\", \"children\", \"reset\", \"reverse\", \"force\", \"immediate\", \"delay\", \"attach\", \"destroyed\", \"interpolateTo\", \"ref\", \"lazy\"]);\n return forward;\n}\nfunction interpolateTo(props) {\n const forward = getForwardProps(props);\n if (is.und(forward)) return _extends({\n to: forward\n }, props);\n const rest = Object.keys(props).reduce((a, k) => !is.und(forward[k]) ? a : _extends({}, a, {\n [k]: props[k]\n }), {});\n return _extends({\n to: forward\n }, rest);\n}\nfunction handleRef(ref, forward) {\n if (forward) {\n // If it's a function, assume it's a ref callback\n if (is.fun(forward)) forward(ref);else if (is.obj(forward)) {\n forward.current = ref;\n }\n }\n return ref;\n}\nclass Animated {\n constructor() {\n this.payload = void 0;\n this.children = [];\n }\n getAnimatedValue() {\n return this.getValue();\n }\n getPayload() {\n return this.payload || this;\n }\n attach() {}\n detach() {}\n getChildren() {\n return this.children;\n }\n addChild(child) {\n if (this.children.length === 0) this.attach();\n this.children.push(child);\n }\n removeChild(child) {\n const index = this.children.indexOf(child);\n this.children.splice(index, 1);\n if (this.children.length === 0) this.detach();\n }\n}\nclass AnimatedArray extends Animated {\n constructor() {\n super(...arguments);\n this.payload = [];\n this.attach = () => this.payload.forEach(p => p instanceof Animated && p.addChild(this));\n this.detach = () => this.payload.forEach(p => p instanceof Animated && p.removeChild(this));\n }\n}\nclass AnimatedObject extends Animated {\n constructor() {\n super(...arguments);\n this.payload = {};\n this.attach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.addChild(this));\n this.detach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.removeChild(this));\n }\n getValue(animated) {\n if (animated === void 0) {\n animated = false;\n }\n const payload = {};\n for (const key in this.payload) {\n const value = this.payload[key];\n if (animated && !(value instanceof Animated)) continue;\n payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;\n }\n return payload;\n }\n getAnimatedValue() {\n return this.getValue(true);\n }\n}\nlet applyAnimatedValues;\nfunction injectApplyAnimatedValues(fn, transform) {\n applyAnimatedValues = {\n fn,\n transform\n };\n}\nlet colorNames;\nfunction injectColorNames(names) {\n colorNames = names;\n}\nlet requestFrame = cb => typeof window !== 'undefined' ? window.requestAnimationFrame(cb) : -1;\nlet cancelFrame = id => {\n typeof window !== 'undefined' && window.cancelAnimationFrame(id);\n};\nfunction injectFrame(raf, caf) {\n requestFrame = raf;\n cancelFrame = caf;\n}\nlet interpolation;\nfunction injectStringInterpolator(fn) {\n interpolation = fn;\n}\nlet now = () => Date.now();\nfunction injectNow(nowFn) {\n now = nowFn;\n}\nlet defaultElement;\nfunction injectDefaultElement(el) {\n defaultElement = el;\n}\nlet animatedApi = node => node.current;\nfunction injectAnimatedApi(fn) {\n animatedApi = fn;\n}\nlet createAnimatedStyle;\nfunction injectCreateAnimatedStyle(factory) {\n createAnimatedStyle = factory;\n}\nlet manualFrameloop;\nfunction injectManualFrameloop(callback) {\n manualFrameloop = callback;\n}\nvar Globals = /*#__PURE__*/Object.freeze({\n get applyAnimatedValues() {\n return applyAnimatedValues;\n },\n injectApplyAnimatedValues: injectApplyAnimatedValues,\n get colorNames() {\n return colorNames;\n },\n injectColorNames: injectColorNames,\n get requestFrame() {\n return requestFrame;\n },\n get cancelFrame() {\n return cancelFrame;\n },\n injectFrame: injectFrame,\n get interpolation() {\n return interpolation;\n },\n injectStringInterpolator: injectStringInterpolator,\n get now() {\n return now;\n },\n injectNow: injectNow,\n get defaultElement() {\n return defaultElement;\n },\n injectDefaultElement: injectDefaultElement,\n get animatedApi() {\n return animatedApi;\n },\n injectAnimatedApi: injectAnimatedApi,\n get createAnimatedStyle() {\n return createAnimatedStyle;\n },\n injectCreateAnimatedStyle: injectCreateAnimatedStyle,\n get manualFrameloop() {\n return manualFrameloop;\n },\n injectManualFrameloop: injectManualFrameloop\n});\n\n/**\n * Wraps the `style` property with `AnimatedStyle`.\n */\n\nclass AnimatedProps extends AnimatedObject {\n constructor(props, callback) {\n super();\n this.update = void 0;\n this.payload = !props.style ? props : _extends({}, props, {\n style: createAnimatedStyle(props.style)\n });\n this.update = callback;\n this.attach();\n }\n}\nconst isFunctionComponent = val => is.fun(val) && !(val.prototype instanceof React.Component);\nconst createAnimatedComponent = Component => {\n const AnimatedComponent = forwardRef((props, ref) => {\n const forceUpdate = useForceUpdate();\n const mounted = useRef(true);\n const propsAnimated = useRef(null);\n const node = useRef(null);\n const attachProps = useCallback(props => {\n const oldPropsAnimated = propsAnimated.current;\n const callback = () => {\n let didUpdate = false;\n if (node.current) {\n didUpdate = applyAnimatedValues.fn(node.current, propsAnimated.current.getAnimatedValue());\n }\n if (!node.current || didUpdate === false) {\n // If no referenced node has been found, or the update target didn't have a\n // native-responder, then forceUpdate the animation ...\n forceUpdate();\n }\n };\n propsAnimated.current = new AnimatedProps(props, callback);\n oldPropsAnimated && oldPropsAnimated.detach();\n }, []);\n useEffect(() => () => {\n mounted.current = false;\n propsAnimated.current && propsAnimated.current.detach();\n }, []);\n useImperativeHandle(ref, () => animatedApi(node, mounted, forceUpdate));\n attachProps(props);\n const _getValue = propsAnimated.current.getValue(),\n scrollTop = _getValue.scrollTop,\n scrollLeft = _getValue.scrollLeft,\n animatedProps = _objectWithoutPropertiesLoose(_getValue, [\"scrollTop\", \"scrollLeft\"]); // Functions cannot have refs, see:\n // See: https://github.com/react-spring/react-spring/issues/569\n\n const refFn = isFunctionComponent(Component) ? undefined : childRef => node.current = handleRef(childRef, ref);\n return React.createElement(Component, _extends({}, animatedProps, {\n ref: refFn\n }));\n });\n return AnimatedComponent;\n};\nlet active = false;\nconst controllers = new Set();\nconst update = () => {\n if (!active) return false;\n let time = now();\n for (let controller of controllers) {\n let isActive = false;\n for (let configIdx = 0; configIdx < controller.configs.length; configIdx++) {\n let config = controller.configs[configIdx];\n let endOfAnimation, lastTime;\n for (let valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {\n let animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude\n\n if (animation.done) continue;\n let from = config.fromValues[valIdx];\n let to = config.toValues[valIdx];\n let position = animation.lastPosition;\n let isAnimated = to instanceof Animated;\n let velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;\n if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state\n\n if (config.immediate) {\n animation.setValue(to);\n animation.done = true;\n continue;\n } // Break animation when string values are involved\n\n if (typeof from === 'string' || typeof to === 'string') {\n animation.setValue(to);\n animation.done = true;\n continue;\n }\n if (config.duration !== void 0) {\n /** Duration easing */\n position = from + config.easing((time - animation.startTime) / config.duration) * (to - from);\n endOfAnimation = time >= animation.startTime + config.duration;\n } else if (config.decay) {\n /** Decay easing */\n position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - animation.startTime)));\n endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;\n if (endOfAnimation) to = position;\n } else {\n /** Spring easing */\n lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;\n velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.\n\n if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/\n\n let numSteps = Math.floor(time - lastTime);\n for (let i = 0; i < numSteps; ++i) {\n let force = -config.tension * (position - to);\n let damping = -config.friction * velocity;\n let acceleration = (force + damping) / config.mass;\n velocity = velocity + acceleration * 1 / 1000;\n position = position + velocity * 1 / 1000;\n } // Conditions for stopping the spring animation\n\n let isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;\n let isVelocity = Math.abs(velocity) <= config.precision;\n let isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;\n endOfAnimation = isOvershooting || isVelocity && isDisplacement;\n animation.lastVelocity = velocity;\n animation.lastTime = time;\n } // Trails aren't done until their parents conclude\n\n if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;\n if (endOfAnimation) {\n // Ensure that we end up with a round value\n if (animation.value !== to) position = to;\n animation.done = true;\n } else isActive = true;\n animation.setValue(position);\n animation.lastPosition = position;\n } // Keep track of updated values only when necessary\n\n if (controller.props.onFrame) controller.values[config.name] = config.interpolation.getValue();\n } // Update callbacks in the end of the frame\n\n if (controller.props.onFrame) controller.props.onFrame(controller.values); // Either call onEnd or next frame\n\n if (!isActive) {\n controllers.delete(controller);\n controller.stop(true);\n }\n } // Loop over as long as there are controllers ...\n\n if (controllers.size) {\n if (manualFrameloop) manualFrameloop();else requestFrame(update);\n } else {\n active = false;\n }\n return active;\n};\nconst start = controller => {\n if (!controllers.has(controller)) controllers.add(controller);\n if (!active) {\n active = true;\n if (manualFrameloop) requestFrame(manualFrameloop);else requestFrame(update);\n }\n};\nconst stop = controller => {\n if (controllers.has(controller)) controllers.delete(controller);\n};\nfunction createInterpolator(range, output, extrapolate) {\n if (typeof range === 'function') {\n return range;\n }\n if (Array.isArray(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n if (interpolation && typeof range.output[0] === 'string') {\n return interpolation(range);\n }\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n const easing = config.easing || (t => t);\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n}\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input; // Extrapolate\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range\n\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing\n\n result = easing(result); // Output Range\n\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n return i - 1;\n}\nclass AnimatedInterpolation extends AnimatedArray {\n constructor(parents, range, output, extrapolate) {\n super();\n this.calc = void 0;\n this.payload = parents instanceof AnimatedArray && !(parents instanceof AnimatedInterpolation) ? parents.getPayload() : Array.isArray(parents) ? parents : [parents];\n this.calc = createInterpolator(range, output, extrapolate);\n }\n getValue() {\n return this.calc(...this.payload.map(value => value.getValue()));\n }\n updateConfig(range, output, extrapolate) {\n this.calc = createInterpolator(range, output, extrapolate);\n }\n interpolate(range, output, extrapolate) {\n return new AnimatedInterpolation(this, range, output, extrapolate);\n }\n}\nconst interpolate$1 = (parents, range, output) => parents && new AnimatedInterpolation(parents, range, output);\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\n\n/** API\n * useChain(references, timeSteps, timeFrame)\n */\n\nfunction useChain(refs, timeSteps, timeFrame) {\n if (timeFrame === void 0) {\n timeFrame = 1000;\n }\n const previous = useRef();\n useEffect(() => {\n if (is.equ(refs, previous.current)) refs.forEach(_ref => {\n let current = _ref.current;\n return current && current.start();\n });else if (timeSteps) {\n refs.forEach((_ref2, index) => {\n let current = _ref2.current;\n if (current) {\n const ctrls = current.controllers;\n if (ctrls.length) {\n const t = timeFrame * timeSteps[index];\n ctrls.forEach(ctrl => {\n ctrl.queue = ctrl.queue.map(e => _extends({}, e, {\n delay: e.delay + t\n }));\n ctrl.start();\n });\n }\n }\n });\n } else refs.reduce((q, _ref3, rI) => {\n let current = _ref3.current;\n return q = q.then(() => current.start());\n }, Promise.resolve());\n previous.current = refs;\n });\n}\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an AnimatedValue is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction addAnimatedStyles(node, styles) {\n if ('update' in node) {\n styles.add(node);\n } else {\n node.getChildren().forEach(child => addAnimatedStyles(child, styles));\n }\n}\nclass AnimatedValue extends Animated {\n constructor(_value) {\n var _this;\n super();\n _this = this;\n this.animatedStyles = new Set();\n this.value = void 0;\n this.startPosition = void 0;\n this.lastPosition = void 0;\n this.lastVelocity = void 0;\n this.startTime = void 0;\n this.lastTime = void 0;\n this.done = false;\n this.setValue = function (value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n _this.value = value;\n if (flush) _this.flush();\n };\n this.value = _value;\n this.startPosition = _value;\n this.lastPosition = _value;\n }\n flush() {\n if (this.animatedStyles.size === 0) {\n addAnimatedStyles(this, this.animatedStyles);\n }\n this.animatedStyles.forEach(animatedStyle => animatedStyle.update());\n }\n clearStyles() {\n this.animatedStyles.clear();\n }\n getValue() {\n return this.value;\n }\n interpolate(range, output, extrapolate) {\n return new AnimatedInterpolation(this, range, output, extrapolate);\n }\n}\nclass AnimatedValueArray extends AnimatedArray {\n constructor(values) {\n super();\n this.payload = values.map(n => new AnimatedValue(n));\n }\n setValue(value, flush) {\n if (flush === void 0) {\n flush = true;\n }\n if (Array.isArray(value)) {\n if (value.length === this.payload.length) {\n value.forEach((v, i) => this.payload[i].setValue(v, flush));\n }\n } else {\n this.payload.forEach(p => p.setValue(value, flush));\n }\n }\n getValue() {\n return this.payload.map(v => v.getValue());\n }\n interpolate(range, output) {\n return new AnimatedInterpolation(this, range, output);\n }\n}\nlet G = 0;\nclass Controller {\n constructor() {\n this.id = void 0;\n this.idle = true;\n this.hasChanged = false;\n this.guid = 0;\n this.local = 0;\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.values = {};\n this.configs = [];\n this.listeners = [];\n this.queue = [];\n this.localQueue = void 0;\n this.getValues = () => this.interpolations;\n this.id = G++;\n }\n /** update(props)\n * This function filters input props and creates an array of tasks which are executed in .start()\n * Each task is allowed to carry a delay, which means it can execute asnychroneously */\n\n update(args) {\n //this._id = n + this.id\n if (!args) return this; // Extract delay and the to-prop from props\n\n const _ref = interpolateTo(args),\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay,\n to = _ref.to,\n props = _objectWithoutPropertiesLoose(_ref, [\"delay\", \"to\"]);\n if (is.arr(to) || is.fun(to)) {\n // If config is either a function or an array queue it up as is\n this.queue.push(_extends({}, props, {\n delay,\n to\n }));\n } else if (to) {\n // Otherwise go through each key since it could be delayed individually\n let ops = {};\n Object.entries(to).forEach(_ref2 => {\n let k = _ref2[0],\n v = _ref2[1];\n\n // Fetch delay and create an entry, consisting of the to-props, the delay, and basic props\n const entry = _extends({\n to: {\n [k]: v\n },\n delay: callProp(delay, k)\n }, props);\n const previous = ops[entry.delay] && ops[entry.delay].to;\n ops[entry.delay] = _extends({}, ops[entry.delay], entry, {\n to: _extends({}, previous, entry.to)\n });\n });\n this.queue = Object.values(ops);\n } // Sort queue, so that async calls go last\n\n this.queue = this.queue.sort((a, b) => a.delay - b.delay); // Diff the reduced props immediately (they'll contain the from-prop and some config)\n\n this.diff(props);\n return this;\n }\n /** start(onEnd)\n * This function either executes a queue, if present, or starts the frameloop, which animates */\n\n start(onEnd) {\n // If a queue is present we must excecute it\n if (this.queue.length) {\n this.idle = false; // Updates can interrupt trailing queues, in that case we just merge values\n\n if (this.localQueue) {\n this.localQueue.forEach(_ref3 => {\n let _ref3$from = _ref3.from,\n from = _ref3$from === void 0 ? {} : _ref3$from,\n _ref3$to = _ref3.to,\n to = _ref3$to === void 0 ? {} : _ref3$to;\n if (is.obj(from)) this.merged = _extends({}, from, this.merged);\n if (is.obj(to)) this.merged = _extends({}, this.merged, to);\n });\n } // The guid helps us tracking frames, a new queue over an old one means an override\n // We discard async calls in that caseÍ\n\n const local = this.local = ++this.guid;\n const queue = this.localQueue = this.queue;\n this.queue = []; // Go through each entry and execute it\n\n queue.forEach((_ref4, index) => {\n let delay = _ref4.delay,\n props = _objectWithoutPropertiesLoose(_ref4, [\"delay\"]);\n const cb = finished => {\n if (index === queue.length - 1 && local === this.guid && finished) {\n this.idle = true;\n if (this.props.onRest) this.props.onRest(this.merged);\n }\n if (onEnd) onEnd();\n }; // Entries can be delayed, ansyc or immediate\n\n let async = is.arr(props.to) || is.fun(props.to);\n if (delay) {\n setTimeout(() => {\n if (local === this.guid) {\n if (async) this.runAsync(props, cb);else this.diff(props).start(cb);\n }\n }, delay);\n } else if (async) this.runAsync(props, cb);else this.diff(props).start(cb);\n });\n } // Otherwise we kick of the frameloop\n else {\n if (is.fun(onEnd)) this.listeners.push(onEnd);\n if (this.props.onStart) this.props.onStart();\n start(this);\n }\n return this;\n }\n stop(finished) {\n this.listeners.forEach(onEnd => onEnd(finished));\n this.listeners = [];\n return this;\n }\n /** Pause sets onEnd listeners free, but also removes the controller from the frameloop */\n\n pause(finished) {\n this.stop(true);\n if (finished) stop(this);\n return this;\n }\n runAsync(_ref5, onEnd) {\n var _this = this;\n let delay = _ref5.delay,\n props = _objectWithoutPropertiesLoose(_ref5, [\"delay\"]);\n const local = this.local; // If \"to\" is either a function or an array it will be processed async, therefor \"to\" should be empty right now\n // If the view relies on certain values \"from\" has to be present\n\n let queue = Promise.resolve(undefined);\n if (is.arr(props.to)) {\n for (let i = 0; i < props.to.length; i++) {\n const index = i;\n const fresh = _extends({}, props, interpolateTo(props.to[index]));\n if (is.arr(fresh.config)) fresh.config = fresh.config[index];\n queue = queue.then(() => {\n //this.stop()\n if (local === this.guid) return new Promise(r => this.diff(fresh).start(r));\n });\n }\n } else if (is.fun(props.to)) {\n let index = 0;\n let last;\n queue = queue.then(() => props.to(\n // next(props)\n p => {\n const fresh = _extends({}, props, interpolateTo(p));\n if (is.arr(fresh.config)) fresh.config = fresh.config[index];\n index++; //this.stop()\n\n if (local === this.guid) return last = new Promise(r => this.diff(fresh).start(r));\n return;\n },\n // cancel()\n function (finished) {\n if (finished === void 0) {\n finished = true;\n }\n return _this.stop(finished);\n }).then(() => last));\n }\n queue.then(onEnd);\n }\n diff(props) {\n this.props = _extends({}, this.props, props);\n let _this$props = this.props,\n _this$props$from = _this$props.from,\n from = _this$props$from === void 0 ? {} : _this$props$from,\n _this$props$to = _this$props.to,\n to = _this$props$to === void 0 ? {} : _this$props$to,\n _this$props$config = _this$props.config,\n config = _this$props$config === void 0 ? {} : _this$props$config,\n reverse = _this$props.reverse,\n attach = _this$props.attach,\n reset = _this$props.reset,\n immediate = _this$props.immediate; // Reverse values when requested\n\n if (reverse) {\n var _ref6 = [to, from];\n from = _ref6[0];\n to = _ref6[1];\n } // This will collect all props that were ever set, reset merged props when necessary\n\n this.merged = _extends({}, from, this.merged, to);\n this.hasChanged = false; // Attachment handling, trailed springs can \"attach\" themselves to a previous spring\n\n let target = attach && attach(this); // Reduces input { name: value } pairs into animated values\n\n this.animations = Object.entries(this.merged).reduce((acc, _ref7) => {\n let name = _ref7[0],\n value = _ref7[1];\n // Issue cached entries, except on reset\n let entry = acc[name] || {}; // Figure out what the value is supposed to be\n\n const isNumber = is.num(value);\n const isString = is.str(value) && !value.startsWith('#') && !/\\d/.test(value) && !colorNames[value];\n const isArray = is.arr(value);\n const isInterpolation = !isNumber && !isArray && !isString;\n let fromValue = !is.und(from[name]) ? from[name] : value;\n let toValue = isNumber || isArray ? value : isString ? value : 1;\n let toConfig = callProp(config, name);\n if (target) toValue = target.animations[name].parent;\n let parent = entry.parent,\n interpolation$$1 = entry.interpolation,\n toValues = toArray(target ? toValue.getPayload() : toValue),\n animatedValues;\n let newValue = value;\n if (isInterpolation) newValue = interpolation({\n range: [0, 1],\n output: [value, value]\n })(1);\n let currentValue = interpolation$$1 && interpolation$$1.getValue(); // Change detection flags\n\n const isFirst = is.und(parent);\n const isActive = !isFirst && entry.animatedValues.some(v => !v.done);\n const currentValueDiffersFromGoal = !is.equ(newValue, currentValue);\n const hasNewGoal = !is.equ(newValue, entry.previous);\n const hasNewConfig = !is.equ(toConfig, entry.config); // Change animation props when props indicate a new goal (new value differs from previous one)\n // and current values differ from it. Config changes trigger a new update as well (though probably shouldn't?)\n\n if (reset || hasNewGoal && currentValueDiffersFromGoal || hasNewConfig) {\n // Convert regular values into animated values, ALWAYS re-use if possible\n if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedValueArray(fromValue);else if (isInterpolation) {\n let prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);\n prev = prev !== void 0 && !reset ? prev : fromValue;\n if (entry.parent) {\n parent = entry.parent;\n parent.setValue(0, false);\n } else parent = new AnimatedValue(0);\n const range = {\n output: [prev, value]\n };\n if (entry.interpolation) {\n interpolation$$1 = entry.interpolation;\n entry.interpolation.updateConfig(range);\n } else interpolation$$1 = parent.interpolate(range);\n }\n toValues = toArray(target ? toValue.getPayload() : toValue);\n animatedValues = toArray(parent.getPayload());\n if (reset && !isInterpolation) parent.setValue(fromValue, false);\n this.hasChanged = true; // Reset animated values\n\n animatedValues.forEach(value => {\n value.startPosition = value.value;\n value.lastPosition = value.value;\n value.lastVelocity = isActive ? value.lastVelocity : undefined;\n value.lastTime = isActive ? value.lastTime : undefined;\n value.startTime = now();\n value.done = false;\n value.animatedStyles.clear();\n }); // Set immediate values\n\n if (callProp(immediate, name)) {\n parent.setValue(isInterpolation ? toValue : value, false);\n }\n return _extends({}, acc, {\n [name]: _extends({}, entry, {\n name,\n parent,\n interpolation: interpolation$$1,\n animatedValues,\n toValues,\n previous: newValue,\n config: toConfig,\n fromValues: toArray(parent.getValue()),\n immediate: callProp(immediate, name),\n initialVelocity: withDefault(toConfig.velocity, 0),\n clamp: withDefault(toConfig.clamp, false),\n precision: withDefault(toConfig.precision, 0.01),\n tension: withDefault(toConfig.tension, 170),\n friction: withDefault(toConfig.friction, 26),\n mass: withDefault(toConfig.mass, 1),\n duration: toConfig.duration,\n easing: withDefault(toConfig.easing, t => t),\n decay: toConfig.decay\n })\n });\n } else {\n if (!currentValueDiffersFromGoal) {\n // So ... the current target value (newValue) appears to be different from the previous value,\n // which normally constitutes an update, but the actual value (currentValue) matches the target!\n // In order to resolve this without causing an animation update we silently flag the animation as done,\n // which it technically is. Interpolations also needs a config update with their target set to 1.\n if (isInterpolation) {\n parent.setValue(1, false);\n interpolation$$1.updateConfig({\n output: [newValue, newValue]\n });\n }\n parent.done = true;\n this.hasChanged = true;\n return _extends({}, acc, {\n [name]: _extends({}, acc[name], {\n previous: newValue\n })\n });\n }\n return acc;\n }\n }, this.animations);\n if (this.hasChanged) {\n // Make animations available to frameloop\n this.configs = Object.values(this.animations);\n this.values = {};\n this.interpolations = {};\n for (let key in this.animations) {\n this.interpolations[key] = this.animations[key].interpolation;\n this.values[key] = this.animations[key].interpolation.getValue();\n }\n }\n return this;\n }\n destroy() {\n this.stop();\n this.props = {};\n this.merged = {};\n this.animations = {};\n this.interpolations = {};\n this.values = {};\n this.configs = [];\n this.local = 0;\n }\n}\n\n/** API\n * const props = useSprings(number, [{ ... }, { ... }, ...])\n * const [props, set] = useSprings(number, (i, controller) => ({ ... }))\n */\n\nconst useSprings = (length, props) => {\n const mounted = useRef(false);\n const ctrl = useRef();\n const isFn = is.fun(props); // The controller maintains the animation values, starts and stops animations\n\n const _useMemo = useMemo(() => {\n // Remove old controllers\n if (ctrl.current) {\n ctrl.current.map(c => c.destroy());\n ctrl.current = undefined;\n }\n let ref;\n return [new Array(length).fill().map((_, i) => {\n const ctrl = new Controller();\n const newProps = isFn ? callProp(props, i, ctrl) : props[i];\n if (i === 0) ref = newProps.ref;\n ctrl.update(newProps);\n if (!ref) ctrl.start();\n return ctrl;\n }), ref];\n }, [length]),\n controllers = _useMemo[0],\n ref = _useMemo[1];\n ctrl.current = controllers; // The hooks reference api gets defined here ...\n\n const api = useImperativeHandle(ref, () => ({\n start: () => Promise.all(ctrl.current.map(c => new Promise(r => c.start(r)))),\n stop: finished => ctrl.current.forEach(c => c.stop(finished)),\n get controllers() {\n return ctrl.current;\n }\n })); // This function updates the controllers\n\n const updateCtrl = useMemo(() => updateProps => ctrl.current.map((c, i) => {\n c.update(isFn ? callProp(updateProps, i, c) : updateProps[i]);\n if (!ref) c.start();\n }), [length]); // Update controller if props aren't functional\n\n useEffect(() => {\n if (mounted.current) {\n if (!isFn) updateCtrl(props);\n } else if (!ref) ctrl.current.forEach(c => c.start());\n }); // Update mounted flag and destroy controller on unmount\n\n useEffect(() => (mounted.current = true, () => ctrl.current.forEach(c => c.destroy())), []); // Return animated props, or, anim-props + the update-setter above\n\n const propValues = ctrl.current.map(c => c.getValues());\n return isFn ? [propValues, updateCtrl, finished => ctrl.current.forEach(c => c.pause(finished))] : propValues;\n};\n\n/** API\n * const props = useSpring({ ... })\n * const [props, set] = useSpring(() => ({ ... }))\n */\n\nconst useSpring = props => {\n const isFn = is.fun(props);\n const _useSprings = useSprings(1, isFn ? props : [props]),\n result = _useSprings[0],\n set = _useSprings[1],\n pause = _useSprings[2];\n return isFn ? [result[0], set, pause] : result;\n};\n\n/** API\n * const trails = useTrail(number, { ... })\n * const [trails, set] = useTrail(number, () => ({ ... }))\n */\n\nconst useTrail = (length, props) => {\n const mounted = useRef(false);\n const isFn = is.fun(props);\n const updateProps = callProp(props);\n const instances = useRef();\n const _useSprings = useSprings(length, (i, ctrl) => {\n if (i === 0) instances.current = [];\n instances.current.push(ctrl);\n return _extends({}, updateProps, {\n config: callProp(updateProps.config, i),\n attach: i > 0 && (() => instances.current[i - 1])\n });\n }),\n result = _useSprings[0],\n set = _useSprings[1],\n pause = _useSprings[2]; // Set up function to update controller\n\n const updateCtrl = useMemo(() => props => set((i, ctrl) => {\n const last = props.reverse ? i === 0 : length - 1 === i;\n const attachIdx = props.reverse ? i + 1 : i - 1;\n const attachController = instances.current[attachIdx];\n return _extends({}, props, {\n config: callProp(props.config || updateProps.config, i),\n attach: attachController && (() => attachController)\n });\n }), [length, updateProps.reverse]); // Update controller if props aren't functional\n\n useEffect(() => void (mounted.current && !isFn && updateCtrl(props))); // Update mounted flag and destroy controller on unmount\n\n useEffect(() => void (mounted.current = true), []);\n return isFn ? [result, updateCtrl, pause] : result;\n};\n\n/** API\n * const transitions = useTransition(items, itemKeys, { ... })\n * const [transitions, update] = useTransition(items, itemKeys, () => ({ ... }))\n */\n\nlet guid = 0;\nconst ENTER = 'enter';\nconst LEAVE = 'leave';\nconst UPDATE = 'update';\nconst mapKeys = (items, keys) => (typeof keys === 'function' ? items.map(keys) : toArray(keys)).map(String);\nconst get = props => {\n let items = props.items,\n _props$keys = props.keys,\n keys = _props$keys === void 0 ? item => item : _props$keys,\n rest = _objectWithoutPropertiesLoose(props, [\"items\", \"keys\"]);\n items = toArray(items !== void 0 ? items : null);\n return _extends({\n items,\n keys: mapKeys(items, keys)\n }, rest);\n};\nfunction useTransition(input, keyTransform, config) {\n const props = _extends({\n items: input,\n keys: keyTransform || (i => i)\n }, config);\n const _get = get(props),\n _get$lazy = _get.lazy,\n lazy = _get$lazy === void 0 ? false : _get$lazy,\n _get$unique = _get.unique,\n _get$reset = _get.reset,\n reset = _get$reset === void 0 ? false : _get$reset,\n enter = _get.enter,\n leave = _get.leave,\n update = _get.update,\n onDestroyed = _get.onDestroyed,\n keys = _get.keys,\n items = _get.items,\n onFrame = _get.onFrame,\n _onRest = _get.onRest,\n onStart = _get.onStart,\n ref = _get.ref,\n extra = _objectWithoutPropertiesLoose(_get, [\"lazy\", \"unique\", \"reset\", \"enter\", \"leave\", \"update\", \"onDestroyed\", \"keys\", \"items\", \"onFrame\", \"onRest\", \"onStart\", \"ref\"]);\n const forceUpdate = useForceUpdate();\n const mounted = useRef(false);\n const state = useRef({\n mounted: false,\n first: true,\n deleted: [],\n current: {},\n transitions: [],\n prevProps: {},\n paused: !!props.ref,\n instances: !mounted.current && new Map(),\n forceUpdate\n });\n useImperativeHandle(props.ref, () => ({\n start: () => Promise.all(Array.from(state.current.instances).map(_ref => {\n let c = _ref[1];\n return new Promise(r => c.start(r));\n })),\n stop: finished => Array.from(state.current.instances).forEach(_ref2 => {\n let c = _ref2[1];\n return c.stop(finished);\n }),\n get controllers() {\n return Array.from(state.current.instances).map(_ref3 => {\n let c = _ref3[1];\n return c;\n });\n }\n })); // Update state\n\n state.current = diffItems(state.current, props);\n if (state.current.changed) {\n // Update state\n state.current.transitions.forEach(transition => {\n const slot = transition.slot,\n from = transition.from,\n to = transition.to,\n config = transition.config,\n trail = transition.trail,\n key = transition.key,\n item = transition.item;\n if (!state.current.instances.has(key)) state.current.instances.set(key, new Controller()); // update the map object\n\n const ctrl = state.current.instances.get(key);\n const newProps = _extends({}, extra, {\n to,\n from,\n config,\n ref,\n onRest: values => {\n if (state.current.mounted) {\n if (transition.destroyed) {\n // If no ref is given delete destroyed items immediately\n if (!ref && !lazy) cleanUp(state, key);\n if (onDestroyed) onDestroyed(item);\n } // A transition comes to rest once all its springs conclude\n\n const curInstances = Array.from(state.current.instances);\n const active = curInstances.some(_ref4 => {\n let c = _ref4[1];\n return !c.idle;\n });\n if (!active && (ref || lazy) && state.current.deleted.length > 0) cleanUp(state);\n if (_onRest) _onRest(item, slot, values);\n }\n },\n onStart: onStart && (() => onStart(item, slot)),\n onFrame: onFrame && (values => onFrame(item, slot, values)),\n delay: trail,\n reset: reset && slot === ENTER // Update controller\n });\n ctrl.update(newProps);\n if (!state.current.paused) ctrl.start();\n });\n }\n useEffect(() => {\n state.current.mounted = mounted.current = true;\n return () => {\n state.current.mounted = mounted.current = false;\n Array.from(state.current.instances).map(_ref5 => {\n let c = _ref5[1];\n return c.destroy();\n });\n state.current.instances.clear();\n };\n }, []);\n return state.current.transitions.map(_ref6 => {\n let item = _ref6.item,\n slot = _ref6.slot,\n key = _ref6.key;\n return {\n item,\n key,\n state: slot,\n props: state.current.instances.get(key).getValues()\n };\n });\n}\nfunction cleanUp(state, filterKey) {\n const deleted = state.current.deleted;\n for (let _ref7 of deleted) {\n let key = _ref7.key;\n const filter = t => t.key !== key;\n if (is.und(filterKey) || filterKey === key) {\n state.current.instances.delete(key);\n state.current.transitions = state.current.transitions.filter(filter);\n state.current.deleted = state.current.deleted.filter(filter);\n }\n }\n state.current.forceUpdate();\n}\nfunction diffItems(_ref8, props) {\n let first = _ref8.first,\n prevProps = _ref8.prevProps,\n state = _objectWithoutPropertiesLoose(_ref8, [\"first\", \"prevProps\"]);\n let _get2 = get(props),\n items = _get2.items,\n keys = _get2.keys,\n initial = _get2.initial,\n from = _get2.from,\n enter = _get2.enter,\n leave = _get2.leave,\n update = _get2.update,\n _get2$trail = _get2.trail,\n trail = _get2$trail === void 0 ? 0 : _get2$trail,\n unique = _get2.unique,\n config = _get2.config,\n _get2$order = _get2.order,\n order = _get2$order === void 0 ? [ENTER, LEAVE, UPDATE] : _get2$order;\n let _get3 = get(prevProps),\n _keys = _get3.keys,\n _items = _get3.items;\n let current = _extends({}, state.current);\n let deleted = [...state.deleted]; // Compare next keys with current keys\n\n let currentKeys = Object.keys(current);\n let currentSet = new Set(currentKeys);\n let nextSet = new Set(keys);\n let added = keys.filter(item => !currentSet.has(item));\n let removed = state.transitions.filter(item => !item.destroyed && !nextSet.has(item.originalKey)).map(i => i.originalKey);\n let updated = keys.filter(item => currentSet.has(item));\n let delay = -trail;\n while (order.length) {\n const changeType = order.shift();\n switch (changeType) {\n case ENTER:\n {\n added.forEach((key, index) => {\n // In unique mode, remove fading out transitions if their key comes in again\n if (unique && deleted.find(d => d.originalKey === key)) deleted = deleted.filter(t => t.originalKey !== key);\n const keyIndex = keys.indexOf(key);\n const item = items[keyIndex];\n const slot = first && initial !== void 0 ? 'initial' : ENTER;\n current[key] = {\n slot,\n originalKey: key,\n key: unique ? String(key) : guid++,\n item,\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),\n to: callProp(enter, item)\n };\n });\n break;\n }\n case LEAVE:\n {\n removed.forEach(key => {\n const keyIndex = _keys.indexOf(key);\n const item = _items[keyIndex];\n const slot = LEAVE;\n deleted.unshift(_extends({}, current[key], {\n slot,\n destroyed: true,\n left: _keys[Math.max(0, keyIndex - 1)],\n right: _keys[Math.min(_keys.length, keyIndex + 1)],\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n to: callProp(leave, item)\n }));\n delete current[key];\n });\n break;\n }\n case UPDATE:\n {\n updated.forEach(key => {\n const keyIndex = keys.indexOf(key);\n const item = items[keyIndex];\n const slot = UPDATE;\n current[key] = _extends({}, current[key], {\n item,\n slot,\n trail: delay = delay + trail,\n config: callProp(config, item, slot),\n to: callProp(update, item)\n });\n });\n break;\n }\n }\n }\n let out = keys.map(key => current[key]); // This tries to restore order for deleted items by finding their last known siblings\n // only using the left sibling to keep order placement consistent for all deleted items\n\n deleted.forEach(_ref9 => {\n let left = _ref9.left,\n right = _ref9.right,\n item = _objectWithoutPropertiesLoose(_ref9, [\"left\", \"right\"]);\n let pos; // Was it the element on the left, if yes, move there ...\n\n if ((pos = out.findIndex(t => t.originalKey === left)) !== -1) pos += 1; // And if nothing else helps, move it to the start ¯\\_(ツ)_/¯\n\n pos = Math.max(0, pos);\n out = [...out.slice(0, pos), item, ...out.slice(pos)];\n });\n return _extends({}, state, {\n changed: added.length || removed.length || updated.length,\n first: first && added.length === 0,\n transitions: out,\n current,\n deleted,\n prevProps: props\n });\n}\nclass AnimatedStyle extends AnimatedObject {\n constructor(style) {\n if (style === void 0) {\n style = {};\n }\n super();\n if (style.transform && !(style.transform instanceof Animated)) {\n style = applyAnimatedValues.transform(style);\n }\n this.payload = style;\n }\n}\n\n// http://www.w3.org/TR/css3-color/#svg-color\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\n// const INTEGER = '[-+]?\\\\d+';\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\nfunction call() {\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\n/*\nhttps://github.com/react-community/normalize-css-color\n\nBSD 3-Clause License\n\nCopyright (c) 2016, React Community\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder 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\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\nfunction normalizeColor(color) {\n let match;\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n } // Ordered based on occurrences on Facebook codebase\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n if (colors.hasOwnProperty(color)) return colors[color];\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 |\n // r\n parse255(match[2]) << 16 |\n // g\n parse255(match[3]) << 8 |\n // b\n 0x000000ff) >>>\n // a\n 0;\n }\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 |\n // r\n parse255(match[2]) << 16 |\n // g\n parse255(match[3]) << 8 |\n // b\n parse1(match[4])) >>>\n // a\n 0;\n }\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] +\n // r\n match[2] + match[2] +\n // g\n match[3] + match[3] +\n // b\n 'ff',\n // a\n 16) >>> 0;\n } // https://drafts.csswg.org/css-color-4/#hex-notation\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] +\n // r\n match[2] + match[2] +\n // g\n match[3] + match[3] +\n // b\n match[4] + match[4],\n // a\n 16) >>> 0;\n }\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]),\n // h\n parsePercentage(match[2]),\n // s\n parsePercentage(match[3]) // l\n ) | 0x000000ff) >>>\n // a\n 0;\n }\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]),\n // h\n parsePercentage(match[2]),\n // s\n parsePercentage(match[3]) // l\n ) | parse1(match[4])) >>>\n // a\n 0;\n }\n return null;\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\nfunction parsePercentage(str) {\n // parseFloat conveniently ignores the final %\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n} // Problem: https://github.com/animatedjs/animated/pull/102\n// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662\n\nconst stringShapeRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g; // Covers rgb, rgba, hsl, hsla\n// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e\n\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi; // Covers color names (transparent, blue, etc.)\n\nconst colorNamesRegex = new RegExp(\"(\".concat(Object.keys(colors).join('|'), \")\"), 'g');\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n * 0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows\n */\n\nconst createStringInterpolator = config => {\n // Replace colors with rgba\n const outputRange = config.output.map(rangeValue => rangeValue.replace(colorRegex, colorToRgba)).map(rangeValue => rangeValue.replace(colorNamesRegex, colorToRgba));\n const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n value.match(stringShapeRegex).forEach((number, i) => outputRanges[i].push(+number));\n });\n const interpolations = outputRange[0].match(stringShapeRegex).map((_value, i) => createInterpolator(_extends({}, config, {\n output: outputRanges[i]\n })));\n return input => {\n let i = 0;\n return outputRange[0] // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n .replace(stringShapeRegex, () => interpolations[i++](input)) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to\n // round the opacity (4th column).\n .replace(/rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi, (_, p1, p2, p3, p4) => \"rgba(\".concat(Math.round(p1), \", \").concat(Math.round(p2), \", \").concat(Math.round(p3), \", \").concat(p4, \")\"));\n };\n};\nlet isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\nconst prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1);\nconst prefixes = ['Webkit', 'Ms', 'Moz', 'O'];\nisUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => {\n prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]);\n return acc;\n}, isUnitlessNumber);\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n if (value == null || typeof value === 'boolean' || value === '') return '';\n if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n\n return ('' + value).trim();\n}\nconst attributeCache = {};\ninjectCreateAnimatedStyle(style => new AnimatedStyle(style));\ninjectDefaultElement('div');\ninjectStringInterpolator(createStringInterpolator);\ninjectColorNames(colors);\ninjectApplyAnimatedValues((instance, props) => {\n if (instance.nodeType && instance.setAttribute !== undefined) {\n const style = props.style,\n children = props.children,\n scrollTop = props.scrollTop,\n scrollLeft = props.scrollLeft,\n attributes = _objectWithoutPropertiesLoose(props, [\"style\", \"children\", \"scrollTop\", \"scrollLeft\"]);\n const filter = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';\n if (scrollTop !== void 0) instance.scrollTop = scrollTop;\n if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value\n\n if (children !== void 0) instance.textContent = children; // Set styles ...\n\n for (let styleName in style) {\n if (!style.hasOwnProperty(styleName)) continue;\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty);\n if (styleName === 'float') styleName = 'cssFloat';\n if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue;\n } // Set attributes ...\n\n for (let name in attributes) {\n // Attributes are written in dash case\n const dashCase = filter ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase()));\n if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]);\n }\n return;\n } else return false;\n}, style => style);\nconst domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr',\n// SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n// Extend animated with all the available THREE elements\nconst apply = merge(createAnimatedComponent, false);\nconst extendedAnimated = apply(domElements);\nexport { apply, config, update, extendedAnimated as animated, extendedAnimated as a, interpolate$1 as interpolate, Globals, useSpring, useTrail, useTransition, useChain, useSprings };","var __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nimport { css, createGlobalStyle } from 'styled-components';\n// prettier-ignore\nexport var reset = css(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n/* http://meyerweb.com/eric/tools/css/reset/\\n v5.0.1 | 20191019\\n License: none (public domain)\\n*/\\n\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, menu, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed,\\nfigure, figcaption, footer, header, hgroup,\\nmain, menu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n/* HTML5 display-role reset for older browsers */\\narticle, aside, details, figcaption, figure,\\nfooter, header, hgroup, main, menu, nav, section {\\n display: block;\\n}\\n/* HTML5 hidden-attribute fix for newer browsers */\\n*[hidden] {\\n display: none;\\n}\\nbody {\\n line-height: 1;\\n}\\nmenu, ol, ul {\\n list-style: none;\\n}\\nblockquote, q {\\n quotes: none;\\n}\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: '';\\n content: none;\\n}\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\"], [\"\\n/* http://meyerweb.com/eric/tools/css/reset/\\n v5.0.1 | 20191019\\n License: none (public domain)\\n*/\\n\\nhtml, body, div, span, applet, object, iframe,\\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\\na, abbr, acronym, address, big, cite, code,\\ndel, dfn, em, img, ins, kbd, q, s, samp,\\nsmall, strike, strong, sub, sup, tt, var,\\nb, u, i, center,\\ndl, dt, dd, menu, ol, ul, li,\\nfieldset, form, label, legend,\\ntable, caption, tbody, tfoot, thead, tr, th, td,\\narticle, aside, canvas, details, embed,\\nfigure, figcaption, footer, header, hgroup,\\nmain, menu, nav, output, ruby, section, summary,\\ntime, mark, audio, video {\\n margin: 0;\\n padding: 0;\\n border: 0;\\n font-size: 100%;\\n font: inherit;\\n vertical-align: baseline;\\n}\\n/* HTML5 display-role reset for older browsers */\\narticle, aside, details, figcaption, figure,\\nfooter, header, hgroup, main, menu, nav, section {\\n display: block;\\n}\\n/* HTML5 hidden-attribute fix for newer browsers */\\n*[hidden] {\\n display: none;\\n}\\nbody {\\n line-height: 1;\\n}\\nmenu, ol, ul {\\n list-style: none;\\n}\\nblockquote, q {\\n quotes: none;\\n}\\nblockquote:before, blockquote:after,\\nq:before, q:after {\\n content: '';\\n content: none;\\n}\\ntable {\\n border-collapse: collapse;\\n border-spacing: 0;\\n}\\n\"])));\nexport var Reset = createGlobalStyle(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\", \"\"], [\"\", \"\"])), reset);\nexport default reset;\nvar templateObject_1, templateObject_2;","/*! @license DOMPurify 3.2.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\nif (!construct) {\n construct = function construct(Func, args) {\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return construct(func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*}/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.2.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ;else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ;else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ;else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ;else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ;else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ;else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ;else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {}\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint) {\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map","export var COMMON_MIME_TYPES = new Map([\n// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types\n['aac', 'audio/aac'], ['abw', 'application/x-abiword'], ['arc', 'application/x-freearc'], ['avif', 'image/avif'], ['avi', 'video/x-msvideo'], ['azw', 'application/vnd.amazon.ebook'], ['bin', 'application/octet-stream'], ['bmp', 'image/bmp'], ['bz', 'application/x-bzip'], ['bz2', 'application/x-bzip2'], ['cda', 'application/x-cdf'], ['csh', 'application/x-csh'], ['css', 'text/css'], ['csv', 'text/csv'], ['doc', 'application/msword'], ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'], ['eot', 'application/vnd.ms-fontobject'], ['epub', 'application/epub+zip'], ['gz', 'application/gzip'], ['gif', 'image/gif'], ['htm', 'text/html'], ['html', 'text/html'], ['ico', 'image/vnd.microsoft.icon'], ['ics', 'text/calendar'], ['jar', 'application/java-archive'], ['jpeg', 'image/jpeg'], ['jpg', 'image/jpeg'], ['js', 'text/javascript'], ['json', 'application/json'], ['jsonld', 'application/ld+json'], ['mid', 'audio/midi'], ['midi', 'audio/midi'], ['mjs', 'text/javascript'], ['mp3', 'audio/mpeg'], ['mp4', 'video/mp4'], ['mpeg', 'video/mpeg'], ['mpkg', 'application/vnd.apple.installer+xml'], ['odp', 'application/vnd.oasis.opendocument.presentation'], ['ods', 'application/vnd.oasis.opendocument.spreadsheet'], ['odt', 'application/vnd.oasis.opendocument.text'], ['oga', 'audio/ogg'], ['ogv', 'video/ogg'], ['ogx', 'application/ogg'], ['opus', 'audio/opus'], ['otf', 'font/otf'], ['png', 'image/png'], ['pdf', 'application/pdf'], ['php', 'application/x-httpd-php'], ['ppt', 'application/vnd.ms-powerpoint'], ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'], ['rar', 'application/vnd.rar'], ['rtf', 'application/rtf'], ['sh', 'application/x-sh'], ['svg', 'image/svg+xml'], ['swf', 'application/x-shockwave-flash'], ['tar', 'application/x-tar'], ['tif', 'image/tiff'], ['tiff', 'image/tiff'], ['ts', 'video/mp2t'], ['ttf', 'font/ttf'], ['txt', 'text/plain'], ['vsd', 'application/vnd.visio'], ['wav', 'audio/wav'], ['weba', 'audio/webm'], ['webm', 'video/webm'], ['webp', 'image/webp'], ['woff', 'font/woff'], ['woff2', 'font/woff2'], ['xhtml', 'application/xhtml+xml'], ['xls', 'application/vnd.ms-excel'], ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'], ['xml', 'application/xml'], ['xul', 'application/vnd.mozilla.xul+xml'], ['zip', 'application/zip'], ['7z', 'application/x-7z-compressed'],\n// Others\n['mkv', 'video/x-matroska'], ['mov', 'video/quicktime'], ['msg', 'application/vnd.ms-outlook']]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') {\n // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string' ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0 ? webkitRelativePath : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.').pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n// Thumbnail cache files for macOS and Windows\n'.DS_Store', 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n *\n * EXPERIMENTAL: A list of https://developer.mozilla.org/en-US/docs/Web/API/FileSystemHandle objects can also be passed as an arg\n * and a list of File objects will be returned.\n *\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (isObject(evt) && isDataTransfer(evt)) {\n return [2 /*return*/, getDataTransferFiles(evt.dataTransfer, evt.type)];\n } else if (isChangeEvt(evt)) {\n return [2 /*return*/, getInputFiles(evt)];\n } else if (Array.isArray(evt) && evt.every(function (item) {\n return 'getFile' in item && typeof item.getFile === 'function';\n })) {\n return [2 /*return*/, getFsHandleFiles(evt)];\n }\n return [2 /*return*/, []];\n });\n });\n}\nfunction isDataTransfer(value) {\n return isObject(value.dataTransfer);\n}\nfunction isChangeEvt(value) {\n return isObject(value) && isObject(value.target);\n}\nfunction isObject(v) {\n return typeof v === 'object' && v !== null;\n}\nfunction getInputFiles(evt) {\n return fromList(evt.target.files).map(function (file) {\n return toFileWithPath(file);\n });\n}\n// Ee expect each handle to be https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileHandle\nfunction getFsHandleFiles(handles) {\n return __awaiter(this, void 0, void 0, function () {\n var files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, Promise.all(handles.map(function (h) {\n return h.getFile();\n }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, files.map(function (file) {\n return toFileWithPath(file);\n })];\n }\n });\n });\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (dt === null) {\n return [2 /*return*/, []];\n }\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items).filter(function (item) {\n return item.kind === 'file';\n });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2:\n return [2 /*return*/, noIgnoredFiles(fromList(dt.files).map(function (file) {\n return toFileWithPath(file);\n }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) {\n return FILES_TO_IGNORE.indexOf(file.name) === -1;\n });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n if (items === null) {\n return [];\n }\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) {\n return __spread(acc, Array.isArray(files) ? flatten(files) : [files]);\n }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) {\n return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3,, 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4:\n return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6:\n return [2 /*return*/];\n }\n });\n });\n }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nimport accepts from 'attr-accept'; // Error codes\n\nexport var FILE_INVALID_TYPE = 'file-invalid-type';\nexport var FILE_TOO_LARGE = 'file-too-large';\nexport var FILE_TOO_SMALL = 'file-too-small';\nexport var TOO_MANY_FILES = 'too-many-files';\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(', ')) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" \").concat(maxSize === 1 ? 'byte' : 'bytes')\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" \").concat(minSize === 1 ? 'byte' : 'bytes')\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: 'Too many files'\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === 'application/x-moz-file' || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n return [true, null];\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === 'function') {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== 'undefined') {\n return event.cancelBubble;\n }\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === 'object' && item !== null && item.kind === 'file';\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function (event) {\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 return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n return isPropagationStopped(event);\n });\n };\n}\n/**\n * canUseFileSystemAccessAPI checks if the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API)\n * is supported by the browser.\n * @returns {boolean}\n */\n\nexport function canUseFileSystemAccessAPI() {\n return 'showOpenFilePicker' in window;\n}\n/**\n * filePickerOptionsTypes returns the {types} option for https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n * based on the accept attr (see https://github.com/react-dropzone/attr-accept)\n * E.g: converts ['image/*', 'text/*'] to {'image/*': [], 'text/*': []}\n * @param {string|string[]} accept\n */\n\nexport function filePickerOptionsTypes(accept) {\n accept = typeof accept === 'string' ? accept.split(',') : accept;\n return [{\n description: 'everything',\n // TODO: Need to handle filtering more elegantly than this!\n accept: Array.isArray(accept) // Accept just MIME types as per spec\n // NOTE: accept can be https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers\n ? accept.filter(function (item) {\n return item === 'audio/*' || item === 'video/*' || item === 'image/*' || item === 'text/*' || /\\w+\\/[-+.\\w]+/g.test(item);\n }).reduce(function (a, b) {\n return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, b, []));\n }, {}) : {}\n }];\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"role\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromEvent } from 'file-selector';\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, filePickerOptionsTypes, canUseFileSystemAccessAPI, isEvtWithFiles, isIeOrEdge, isPropagationStopped, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from './utils/index';\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * <Dropzone>\n * {({getRootProps, getInputProps}) => (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag 'n' drop some files here, or click to select files</p>\n * </div>\n * )}\n * </Dropzone>\n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = 'Dropzone'; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null,\n useFsAccessApi: false\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n /**\n * Cb for when opening the file dialog\n */\n onFileDialogOpen: PropTypes.func,\n /**\n * Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n */\n useFsAccessApi: PropTypes.bool,\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n /**\n * Custom validation function\n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise<File[]>)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n * <div {...getRootProps()}>\n * <input {...getInputProps()} />\n * <p>Drag and drop some files here, or click to select files</p>\n * </div>\n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {boolean} [props.useFsAccessApi] Set to true to use the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API\n * to open the file picker instead of using an `<input type=\"file\">` click event.\n * @param {Function} [props.onFileDialogOpen] Cb for when opening the file dialog\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n onFileDialogOpen = _defaultProps$options.onFileDialogOpen,\n useFsAccessApi = _defaultProps$options.useFsAccessApi,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n var onFileDialogOpenCb = useMemo(function () {\n return typeof onFileDialogOpen === 'function' ? onFileDialogOpen : noop;\n }, [onFileDialogOpen]);\n var onFileDialogCancelCb = useMemo(function () {\n return typeof onFileDialogCancel === 'function' ? onFileDialogCancel : noop;\n }, [onFileDialogCancel]);\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles; // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n if (!files.length) {\n dispatch({\n type: 'closeDialog'\n });\n onFileDialogCancelCb();\n }\n }\n }, 300);\n }\n };\n useEffect(function () {\n if (useFsAccessApi && canUseFileSystemAccessAPI()) {\n return function () {};\n }\n window.addEventListener('focus', onWindowFocus, false);\n return function () {\n window.removeEventListener('focus', onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancelCb, useFsAccessApi]);\n var dragTargetsRef = useRef([]);\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', onDocumentDrop, false);\n }\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: 'setDraggedFiles'\n });\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = 'copy';\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n }\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n dragTargetsRef.current = targets;\n if (targets.length > 0) {\n return;\n }\n dispatch({\n isDragActive: false,\n type: 'setDraggedFiles',\n draggedFiles: []\n });\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var setFiles = useCallback(function (files, event) {\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n var customErrors = validator ? validator(file) : null;\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: 'setFiles'\n });\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n }, [dispatch, multiple, accept, minSize, maxSize, maxFiles, onDrop, onDropAccepted, onDropRejected, validator]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n setFiles(files, event);\n });\n }\n dispatch({\n type: 'reset'\n });\n }, [getFilesFromEvent, setFiles, noDragEventsBubbling]); // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n if (useFsAccessApi && canUseFileSystemAccessAPI()) {\n dispatch({\n type: 'openDialog'\n });\n onFileDialogOpenCb(); // https://developer.mozilla.org/en-US/docs/Web/API/window/showOpenFilePicker\n\n var opts = {\n multiple: multiple,\n types: filePickerOptionsTypes(accept)\n };\n window.showOpenFilePicker(opts).then(function (handles) {\n return getFilesFromEvent(handles);\n }).then(function (files) {\n return setFiles(files, null);\n }).catch(function (e) {\n return onFileDialogCancelCb(e);\n }).finally(function () {\n return dispatch({\n type: 'closeDialog'\n });\n });\n return;\n }\n if (inputRef.current) {\n dispatch({\n type: 'openDialog'\n });\n onFileDialogOpenCb();\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch, onFileDialogOpenCb, onFileDialogCancelCb, useFsAccessApi, setFiles, accept, multiple]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n if (event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, inputRef, openFileDialog]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: 'focus'\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: 'blur'\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [inputRef, noClick, openFileDialog]);\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,\n role = _ref2.role,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb)),\n role: typeof role === 'string' && role !== '' ? role : 'button'\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: 'file',\n style: {\n display: 'none'\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, inputRef);\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case 'focus':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n case 'blur':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n case 'openDialog':\n return _objectSpread(_objectSpread({}, initialState), {}, {\n isFileDialogActive: true\n });\n case 'closeDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n case 'setDraggedFiles':\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n case 'setFiles':\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n case 'reset':\n return _objectSpread({}, initialState);\n default:\n return state;\n }\n}\nfunction noop() {}\nexport { ErrorCode } from './utils';","import styled, { css, ThemeProvider as ThemeProvider$2, useTheme, createGlobalStyle, keyframes } from 'styled-components';\nimport * as React from 'react';\nimport React__default, { useState, useRef, useEffect } from 'react';\nimport { createMemoryHistory, createBrowserHistory } from 'history';\nimport { Router as Router$1, Route, Redirect, useLocation, useHistory } from 'react-router-dom';\nimport ModalFactory, { createModal } from 'react-modal-promise';\nimport { Portal } from 'react-portal';\nimport useOnClickOutside from 'use-onclickoutside';\nimport Tippy from '@tippyjs/react';\nimport { Scrollbars } from 'react-custom-scrollbars';\nimport { animated, useTransition, config, useSpring } from 'react-spring';\nimport reset from 'styled-reset';\nimport { UnmountClosed, Collapse as Collapse$2 } from 'react-collapse';\nimport { useImage } from 'react-image';\nimport DOMPurify from 'dompurify';\nimport { BounceLoader } from 'react-spinners';\nimport { useDropzone } from 'react-dropzone';\nimport { orderBy, debounce as debounce$2 } from 'lodash';\nimport ReactAutosuggest from 'react-autosuggest';\nimport { format } from 'date-fns';\nimport unified from 'unified';\nimport markdown from 'remark-parse';\nimport remark2react from 'remark-react';\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton';\nimport Carousel$2, { Dots, arrowsPlugin } from '@brainhubeu/react-carousel';\nimport '@brainhubeu/react-carousel/lib/style.css';\nimport { FixedSizeList } from 'react-window';\n\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***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nvar __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};\nfunction __rest(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}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __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}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\ntypeof 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};\nvar PRIMARY$3 = {\n 100: '#F2FAFD',\n 500: '#0099db',\n 600: '#008ac5',\n 700: '#007aaf'\n};\nvar ACCENT1$3 = {\n 100: '#F6F6FB',\n 500: '#4244A6',\n 600: '#353786',\n 700: '#2A2B6A'\n};\nvar ACCENT2$3 = {\n 100: '#F5FAFA',\n 500: '#39A2A2',\n 600: '#339292',\n 700: '#2E8282'\n};\nvar ERROR$3 = {\n 100: '#FCF2F2',\n 500: '#CC0000',\n 600: '#B80000',\n 700: '#A30000'\n};\nvar WARNING$3 = {\n 100: '#FFF9F5',\n 500: '#F99132',\n 600: '#E0832D',\n 700: '#C77428'\n};\nvar SUCCESS$3 = {\n 100: '#F5FBF9',\n 500: '#31A582',\n 600: '#2C9575',\n 700: '#278468'\n};\nvar INFO$3 = {\n 100: '#F3F7FA',\n 500: '#0A5C98',\n 600: '#095389',\n 700: '#084A7A'\n};\nvar GREYS$1 = {\n 50: '#FFFFFF',\n 100: '#F8F8F8',\n 200: '#EEEEEE',\n 250: '#E0E0E0',\n 300: '#BFBFBF',\n 500: '#7D7D7D',\n 700: '#585858',\n 800: '#2C2C2D',\n 900: '#272727'\n};\nvar BLUES$1 = {\n 200: '#BDBDE5',\n 250: '#ACADDF',\n 300: '#9B9CD8',\n 350: '#8B8CD2',\n 400: '#7A7CCB',\n 450: '#696BC5',\n 500: '#595BBE',\n 550: '#5052AB',\n 600: '#474998',\n 650: '#3E4085',\n 700: '#353672',\n 750: '#2C2D5F',\n 800: '#24244C'\n};\nvar DATAVIS$1 = [BLUES$1, {\n 500: '#39A2A2'\n}, {\n 500: '#A12E6E'\n}, {\n 500: '#D7811E'\n}, {\n 500: '#E5B406'\n}, {\n 500: '#59748D'\n}];\nvar PRIMARY$2 = {\n 0: '#F2FAFD',\n 50: '#E5F5FB',\n 100: '#CCEBF8',\n 150: '#B3E0F4',\n 200: '#99D6F1',\n 250: '#80CCED',\n 300: '#66C2E9',\n 350: '#4DB8E6',\n 400: '#33ADE2',\n 450: '#1AA3DF',\n 500: '#0099DB',\n 550: '#008AC5',\n 600: '#007AAF',\n 650: '#006B99',\n 700: '#005C83',\n 750: '#004C6D',\n 800: '#003D58',\n 850: '#002E42',\n 900: '#001F2C',\n 950: '#000F16'\n};\nvar ACCENT1$2 = {\n 0: '#F6F6FB',\n 50: '#ECECF6',\n 100: '#D9DAED',\n 150: '#C6C7E4',\n 200: '#B3B4DB',\n 250: '#A0A1D3',\n 300: '#8E8FCA',\n 350: '#7B7CC1',\n 400: '#6869B8',\n 450: '#5557AF',\n 500: '#4244A6',\n 550: '#3B3D95',\n 600: '#353685',\n 650: '#2E3074',\n 700: '#282964',\n 750: '#212253',\n 800: '#1A1B42',\n 850: '#141432',\n 900: '#0D0E21',\n 950: '#070711'\n};\nvar ACCENT2$2 = {\n 0: '#F5FAFA',\n 50: '#EBF6F6',\n 100: '#D7ECEC',\n 150: '#C4E3E3',\n 200: '#B0DADA',\n 250: '#9CD0D0',\n 300: '#88C7C7',\n 350: '#74BEBE',\n 400: '#61B5B5',\n 450: '#4DABAB',\n 500: '#39A2A2',\n 550: '#339292',\n 600: '#2E8282',\n 650: '#287171',\n 700: '#226161',\n 750: '#1C5151',\n 800: '#174141',\n 850: '#113131',\n 900: '#0B2020',\n 950: '#090913'\n};\nvar ERROR$2 = {\n 0: '#FCF2F2',\n 50: '#FAE5E5',\n 100: '#F5CCCC',\n 150: '#F0B3B3',\n 200: '#EB9999',\n 250: '#E58080',\n 300: '#E06666',\n 350: '#DB4D4D',\n 400: '#D63333',\n 450: '#D11A1A',\n 500: '#CC0000',\n 550: '#B80000',\n 600: '#A30000',\n 650: '#8F0000',\n 700: '#7A0000',\n 750: '#660000',\n 800: '#520000',\n 850: '#3D0000',\n 900: '#290000',\n 950: '#140000'\n};\nvar WARNING$2 = {\n 0: '#FFFAF5',\n 50: '#FEF4EA',\n 100: '#FEE9D6',\n 150: '#FDDEC1',\n 200: '#FCD3AD',\n 250: '#FCC898',\n 300: '#FBBD84',\n 350: '#FBB26F',\n 400: '#FAA75B',\n 450: '#F99C46',\n 500: '#F99132',\n 550: '#E0832D',\n 600: '#C77428',\n 650: '#AE6623',\n 700: '#95571E',\n 750: '#7C4919',\n 800: '#633A14',\n 850: '#4B2C0F',\n 900: '#321D0A',\n 950: '#190F05'\n};\nvar SUCCESS$2 = {\n 0: '#F5FAF9',\n 50: '#EAF6F2',\n 100: '#D6EDE6',\n 150: '#C1E4D9',\n 200: '#ADDBCD',\n 250: '#98D2C0',\n 300: '#84C9B4',\n 350: '#6FC0A7',\n 400: '#5BB79B',\n 450: '#46AE8E',\n 500: '#31A582',\n 550: '#2C9575',\n 600: '#278468',\n 650: '#23735B',\n 700: '#1E634E',\n 750: '#195241',\n 800: '#144234',\n 850: '#0F3127',\n 900: '#0A211A',\n 950: '#05100D'\n};\nvar INFO$2 = {\n 0: '#F3F7FA',\n 50: '#E7EFF5',\n 100: '#CEDEEA',\n 150: '#B6CEE0',\n 200: '#9DBED6',\n 250: '#84ADCB',\n 300: '#6C9DC1',\n 350: '#548DB7',\n 400: '#3B7DAD',\n 450: '#236CA2',\n 500: '#0A5C98',\n 550: '#095389',\n 600: '#084A7A',\n 650: '#07406A',\n 700: '#06375B',\n 750: '#052E4C',\n 800: '#04253D',\n 850: '#031C2E',\n 900: '#02121E',\n 950: '#01090F'\n};\n// For use in No Data donut chart and in refresher chart\nvar NODATA$1 = {\n 500: GREYS$1[200],\n 700: GREYS$1[300]\n};\nvar INSIGHT_CODES$1 = {\n 400: '#ED6E56',\n 500: '#9761B8',\n 600: '#E5B406',\n 700: '#A12E6E',\n 800: '#2D6FB4',\n 900: '#6D8193'\n};\nvar DATAVIS_WITH_MEANING$1 = [PRIMARY$2, WARNING$2, ERROR$2, ACCENT1$2, ACCENT2$2, INFO$2, SUCCESS$2, NODATA$1, INSIGHT_CODES$1 // 8\n];\n\n/** Theme Builder */\nvar buildValueLookup$1 = function (values) {\n return {\n values: values,\n getValue: function (index) {\n if (index === void 0) {\n index = 0;\n }\n return values[index] || values[0];\n }\n };\n};\nvar buildPaletteValueLookup$1 = function (values) {\n return {\n values: values,\n getValue: function (key) {\n if (key === void 0) {\n key = 500;\n }\n return {\n main: values[key] || values[500],\n context: Number(key) <= 100 ? GREYS$1[900] : GREYS$1[50]\n };\n }\n };\n};\nvar getValueDataVis$1 = function (values) {\n return function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var main = values[0][500];\n var valueIndex = values[index];\n if (valueIndex) {\n main = values[index][key] || values[0][500];\n }\n return {\n main: main,\n context: Number(key) <= 100 ? GREYS$1[900] : GREYS$1[50]\n };\n };\n};\nvar getValueDataVisWithMeaning$1 = function (values) {\n return function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var main = values[7][700]; // default \"NoData\"\n var valueIndex = values[index];\n if (valueIndex) {\n main = values[index][key] || values[0][500]; // specific value || default \"Primary\"\n }\n return {\n main: main,\n context: Number(key) <= 100 ? GREYS$1[900] : GREYS$1[50]\n };\n };\n};\nvar buildDataVisLookup$1 = function (values) {\n return {\n values: values,\n getValue: getValueDataVis$1(values),\n getNextValue: function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var initialValue = values[index][key];\n var paletteKeys = Object.keys(values[index]).map(Number);\n var nextValuePaletteKey = paletteKeys[paletteKeys.indexOf(key) + 1];\n var nextValue = values[index][nextValuePaletteKey];\n return {\n main: nextValue || initialValue,\n context: Number(key) <= 100 ? GREYS$1[900] : GREYS$1[50]\n };\n }\n };\n};\nvar buildDataVisWithMeaningLookup$1 = function (values) {\n return {\n values: values,\n getValue: getValueDataVisWithMeaning$1(values),\n getNextValue: function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var initialValue = values[index][key];\n var paletteKeys = Object.keys(values[index]).map(Number);\n var nextValuePaletteKey = paletteKeys[paletteKeys.indexOf(key) + 1];\n var nextValue = values[index][nextValuePaletteKey];\n return {\n main: nextValue || initialValue,\n context: Number(key) <= 100 ? GREYS$1[900] : GREYS$1[50]\n };\n }\n };\n};\n// This is the theme colours\nvar colors$1 = {\n primary: buildPaletteValueLookup$1(PRIMARY$3),\n accent1: buildPaletteValueLookup$1(ACCENT1$3),\n accent2: buildPaletteValueLookup$1(ACCENT2$3),\n error: buildPaletteValueLookup$1(ERROR$3),\n warning: buildPaletteValueLookup$1(WARNING$3),\n success: buildPaletteValueLookup$1(SUCCESS$3),\n info: buildPaletteValueLookup$1(INFO$3),\n text: buildValueLookup$1([GREYS$1[800], GREYS$1[700], GREYS$1[300], GREYS$1[50], GREYS$1[250], GREYS$1[100], GREYS$1[500]]),\n placeholder: GREYS$1[500],\n borders: buildValueLookup$1([GREYS$1[500], GREYS$1[300], GREYS$1[100], GREYS$1[200]]),\n backgrounds: buildValueLookup$1([GREYS$1[200], GREYS$1[100], GREYS$1[50]]),\n overlay: GREYS$1[800],\n navBackground: GREYS$1[900],\n shadow: 'rgba(0, 0, 0, 0.1)',\n shadowStrong: 'rgba(0, 0, 0, 0.6)',\n dataVis: buildDataVisLookup$1(DATAVIS$1),\n dataVisWithMeaning: buildDataVisWithMeaningLookup$1(DATAVIS_WITH_MEANING$1),\n fade: {\n from: 'rgba(255, 255, 255, 1)',\n to: 'rgba(255, 255, 255, 0.5)'\n }\n};\nvar typeScale = new Map([[-2, {\n size: 0.714,\n lineHeight: 1.4\n}], [-1, {\n size: 0.857,\n lineHeight: 1.667\n}], [0, {\n size: 1,\n lineHeight: 1.571\n}], [1, {\n size: 1.143,\n lineHeight: 1.5\n}], [2, {\n size: 1.429,\n lineHeight: 1.4\n}], [3, {\n size: 1.857,\n lineHeight: 1.346\n}], [4, {\n size: 2.286,\n lineHeight: 1.313\n}] // 32 px -> 42px\n]);\n// This is the typography theme\nvar type = {\n sizes: Array.from(typeScale).map(function (a) {\n return a[1];\n }),\n lineHeight: typeScale.get(0).lineHeight,\n fonts: {\n body: 'sans-serif',\n heading: 'sans-serif'\n },\n getSize: function (value) {\n if (value === void 0) {\n value = 0;\n }\n var item = typeScale.get(value) || typeScale.get(0);\n return \"\".concat(item === null || item === void 0 ? void 0 : item.size, \"rem\");\n },\n getLineHeight: function (value) {\n if (value === void 0) {\n value = 0;\n }\n var item = typeScale.get(value) || typeScale.get(0);\n return \"\".concat(item === null || item === void 0 ? void 0 : item.lineHeight);\n }\n};\nvar base = 4;\n// This is the spacing theme\nvar spacing = {\n base: base,\n getSize: function (value) {\n if (value === void 0) {\n value = 1;\n }\n return \"\".concat(base * value, \"px\");\n },\n borderRadius: \"\".concat(base / 2, \"px\")\n};\n\n// This is the theme colours\nvar template = {\n // These sizes relate to the amount of spacing (i.e. passes through to the getSize function)\n layout: {\n verticalNav: 22,\n horizontalNav: 14 // 56px\n },\n modal: {\n header: 17,\n footer: 18,\n padding: 28 // 112px\n },\n drawer: {\n header: 25,\n footer: 25\n }\n};\nvar allLayers = ['base', 'avatar', 'loading', 'dropdown', 'nav', 'overlay', 'drawer', 'modal', 'tooltip', 'toaster'];\nvar baseLevel = 1000;\nvar getLayerIndex = function (layer, name) {\n var index = allLayers.indexOf(name);\n var value = index !== -1 ? index : 0;\n return layer * baseLevel + value;\n};\nvar getNextLayer = function (layer, name) {\n return {\n currentLayer: layer + 1,\n zIndex: getLayerIndex(layer + 1, name)\n };\n};\n// This is the theme colours\nvar layers = {\n values: {\n currentLayer: 0,\n zIndex: 0\n },\n getLayerIndex: getLayerIndex,\n getNextLayer: getNextLayer\n};\nvar theme = {\n name: 'default',\n colors: colors$1,\n type: type,\n spacing: spacing,\n template: template,\n layers: layers\n};\nvar boxShadow = css(templateObject_1$3x || (templateObject_1$3x = __makeTemplateObject([\"\\n box-shadow: 0 0 6px \", \";\\n\"], [\"\\n box-shadow: 0 0 6px \", \";\\n\"])), function (p) {\n return p.theme.colors.shadow;\n});\nvar boxShadow2 = css(templateObject_2$1S || (templateObject_2$1S = __makeTemplateObject([\"\\n box-shadow: 0 0 \", \" \", \";\\n\"], [\"\\n box-shadow: 0 0 \", \" \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.shadow;\n});\nvar boxShadow3 = css(templateObject_3$1q || (templateObject_3$1q = __makeTemplateObject([\"\\n box-shadow: 0 0 \", \" \", \";\\n\"], [\"\\n box-shadow: 0 0 \", \" \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.shadowStrong;\n});\nvar zIndex = function (_a) {\n var theme = _a.theme;\n return theme.layers.values.zIndex;\n};\nvar overlayStyling = css(templateObject_4$17 || (templateObject_4$17 = __makeTemplateObject([\"\\n position: fixed;\\n will-change: transform;\\n background: rgba(44, 44, 45, 0.8);\\n transition: opacity 0.3s ease;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: \", \";\\n\"], [\"\\n position: fixed;\\n will-change: transform;\\n background: rgba(44, 44, 45, 0.8);\\n transition: opacity 0.3s ease;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: \", \";\\n\"])), zIndex);\nvar sidebarWidth = function () {\n return theme.spacing.getSize(22);\n};\nfunction isDarkMode$4(activeTheme) {\n return activeTheme.name === 'dark';\n}\n// Dark Mode operators\nvar getBorderColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.borders.getValue(1) // Dark mode #14171D\n : activeTheme.colors.borders.getValue(2);\n}; // Light mode #F8F8F8\nvar getPageBackgroundColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue(2) // Dark mode #14171D\n : activeTheme.colors.backgrounds.getValue(1);\n}; // Light mode #EEEEEE\nvar getContainerColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue(1) // Dark mode #1F2329\n : activeTheme.colors.backgrounds.getValue(2);\n}; // Light mode #FFFFFF\nvar getNestedContainerColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue() // Dark mode #252B37\n : activeTheme.colors.backgrounds.getValue(1);\n}; // Light mode #EEEEEE\nvar getDrawerColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue(1) // Dark mode #252B37\n : activeTheme.colors.backgrounds.getValue(2);\n}; // Light mode #FFFFFF\nvar getTooltipColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue(2) // Dark mode #14171D\n : activeTheme.colors.navBackground;\n};\nvar getContrastTextColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.text.getValue() : activeTheme.colors.primary.getValue().context;\n};\nvar getShadowStrongColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.backgrounds.getValue(2) : activeTheme.colors.shadowStrong;\n};\nvar getFieldColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? 'transparent' : activeTheme.colors.backgrounds.getValue(2);\n};\nvar getDisabledFieldColor = function (activeTheme) {\n return isDarkMode$4(activeTheme) ? activeTheme.colors.borders.getValue(1) : activeTheme.colors.backgrounds.getValue();\n};\n// Dark Mode Mixins\nvar pageBackground = function (activeTheme) {\n return css(templateObject_5$X || (templateObject_5$X = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), getPageBackgroundColor(activeTheme));\n};\nvar containerBackground = function (activeTheme) {\n return css(templateObject_6$N || (templateObject_6$N = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), getContainerColor(activeTheme));\n};\nvar nestedContainerBackground = function (activeTheme) {\n return css(templateObject_7$D || (templateObject_7$D = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), getNestedContainerColor(activeTheme));\n};\nvar drawerBackground = function (activeTheme) {\n return css(templateObject_8$w || (templateObject_8$w = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), getDrawerColor(activeTheme));\n};\nvar tooltipBackground = function (activeTheme) {\n return css(templateObject_9$t || (templateObject_9$t = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), getTooltipColor(activeTheme));\n};\nvar boxShadowForDarkMode = function (activeTheme) {\n return css(templateObject_10$o || (templateObject_10$o = __makeTemplateObject([\"\\n box-shadow: 0 0 \", \" \", \";\\n\"], [\"\\n box-shadow: 0 0 \", \" \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n }, getShadowStrongColor(activeTheme));\n};\nvar contrastTextColor = function (activeTheme) {\n return css(templateObject_11$i || (templateObject_11$i = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), getContrastTextColor(activeTheme));\n};\n// Media Queries\nvar getMediaSize = function (size) {\n return \"(min-width: \".concat(size, \"px)\");\n};\nvar mediaQueryBreakpoints = {\n xlarge: 2000,\n large: 1400,\n medium: 1000,\n small: 900,\n xsmall: 700\n};\nvar mediaQuerySizes = {\n xlarge: getMediaSize(mediaQueryBreakpoints.xlarge),\n large: getMediaSize(mediaQueryBreakpoints.large),\n medium: getMediaSize(mediaQueryBreakpoints.medium),\n small: getMediaSize(mediaQueryBreakpoints.small),\n xsmall: getMediaSize(mediaQueryBreakpoints.xsmall)\n};\nvar getColorLibrary = function (colorPaletteName, activeTheme) {\n switch (colorPaletteName) {\n default:\n case 'dataVis':\n return activeTheme.colors.dataVis;\n case 'dataVisWithMeaning':\n return activeTheme.colors.dataVisWithMeaning;\n }\n};\nvar getPaletteColours = function (colorPaletteName, activeTheme, colorPalettes) {\n if (!colorPalettes || colorPalettes.length === 0) return null;\n var colors = getColorLibrary(colorPaletteName, activeTheme);\n return colorPalettes.map(function (colorPalette) {\n return colors.getValue((colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.paletteIndex) || 0, (colorPalette === null || colorPalette === void 0 ? void 0 : colorPalette.shade) || 500).main;\n });\n};\nvar templateObject_1$3x, templateObject_2$1S, templateObject_3$1q, templateObject_4$17, templateObject_5$X, templateObject_6$N, templateObject_7$D, templateObject_8$w, templateObject_9$t, templateObject_10$o, templateObject_11$i;\nvar PRIMARY$1 = {\n 100: '#0D1F26',\n 500: '#55CCFF',\n 600: '#4CB8E5',\n 700: '#44A3CC'\n};\nvar ACCENT1$1 = {\n 100: '#26252B',\n 500: '#9584FC',\n 600: '#8677E3',\n 700: '#2A2B6A'\n};\nvar ACCENT2$1 = {\n 100: '#0D1F1F',\n 500: '#54CECE',\n 600: '#4CB9B9',\n 700: '#43A5A5'\n};\nvar ERROR$1 = {\n 100: '#260D0D',\n 500: '#FF5858',\n 600: '#E54F4F',\n 700: '#CC4646'\n};\nvar WARNING$1 = {\n 100: '#261D0E',\n 500: '#FFBF5F',\n 600: '#E5AC55',\n 700: '#CC994C'\n};\nvar SUCCESS$1 = {\n 100: '#04241A',\n 500: '#1CEFAF',\n 600: '#19D79D',\n 700: '#16BF8C'\n};\nvar INFO$1 = {\n 100: '#041826',\n 500: '#1B9FFF',\n 600: '#188FE5',\n 700: '#167FCC'\n};\nvar GREYS = {\n 50: '#14171D',\n 100: '#1F2329',\n 200: '#252B37',\n 300: '#36434F',\n 500: '#707C89',\n 700: '#ABB4BE',\n 800: '#E0E0E0',\n 900: '#252B37' // 272727\n};\n// // These BLUES have not yet changed for dark mode\nvar BLUES = {\n 200: '#BDBDE5',\n 250: '#ACADDF',\n 300: '#9B9CD8',\n 350: '#8B8CD2',\n 400: '#7A7CCB',\n 450: '#696BC5',\n 500: '#595BBE',\n 550: '#5052AB',\n 600: '#474998',\n 650: '#3E4085',\n 700: '#353672',\n 750: '#2C2D5F',\n 800: '#24244C'\n};\nvar DATAVIS = [BLUES, {\n 500: '#54CECE'\n}, {\n 500: '#FF5EB7'\n}, {\n 500: '#FFA133'\n}, {\n 500: '#FFE070'\n}, {\n 500: '#ABD5FC'\n} // '#59748D\n];\nvar PRIMARY = {\n 0: '#F2FAFD',\n 50: '#E5F5FB',\n 100: '#CCEBF8',\n 150: '#B3E0F4',\n 200: '#99D6F1',\n 250: '#80CCED',\n 300: '#66C2E9',\n 350: '#4DB8E6',\n 400: '#33ADE2',\n 450: '#1AA3DF',\n 500: '#0099DB',\n 550: '#008AC5',\n 600: '#007AAF',\n 650: '#006B99',\n 700: '#005C83',\n 750: '#004C6D',\n 800: '#003D58',\n 850: '#002E42',\n 900: '#001F2C',\n 950: '#000F16'\n};\nvar ACCENT1 = {\n 0: '#F6F6FB',\n 50: '#ECECF6',\n 100: '#D9DAED',\n 150: '#C6C7E4',\n 200: '#B3B4DB',\n 250: '#A0A1D3',\n 300: '#8E8FCA',\n 350: '#7B7CC1',\n 400: '#6869B8',\n 450: '#5557AF',\n 500: '#4244A6',\n 550: '#3B3D95',\n 600: '#353685',\n 650: '#2E3074',\n 700: '#282964',\n 750: '#212253',\n 800: '#1A1B42',\n 850: '#141432',\n 900: '#0D0E21',\n 950: '#070711'\n};\nvar ACCENT2 = {\n 0: '#F5FAFA',\n 50: '#EBF6F6',\n 100: '#D7ECEC',\n 150: '#C4E3E3',\n 200: '#B0DADA',\n 250: '#9CD0D0',\n 300: '#88C7C7',\n 350: '#74BEBE',\n 400: '#61B5B5',\n 450: '#4DABAB',\n 500: '#39A2A2',\n 550: '#339292',\n 600: '#2E8282',\n 650: '#287171',\n 700: '#226161',\n 750: '#1C5151',\n 800: '#174141',\n 850: '#113131',\n 900: '#0B2020',\n 950: '#090913'\n};\nvar ERROR = {\n 0: '#FCF2F2',\n 50: '#FAE5E5',\n 100: '#F5CCCC',\n 150: '#F0B3B3',\n 200: '#EB9999',\n 250: '#E58080',\n 300: '#E06666',\n 350: '#DB4D4D',\n 400: '#D63333',\n 450: '#D11A1A',\n 500: '#CC0000',\n 550: '#B80000',\n 600: '#A30000',\n 650: '#8F0000',\n 700: '#7A0000',\n 750: '#660000',\n 800: '#520000',\n 850: '#3D0000',\n 900: '#290000',\n 950: '#140000'\n};\nvar WARNING = {\n 0: '#FFFAF5',\n 50: '#FEF4EA',\n 100: '#FEE9D6',\n 150: '#FDDEC1',\n 200: '#FCD3AD',\n 250: '#FCC898',\n 300: '#FBBD84',\n 350: '#FBB26F',\n 400: '#FAA75B',\n 450: '#F99C46',\n 500: '#F99132',\n 550: '#E0832D',\n 600: '#C77428',\n 650: '#AE6623',\n 700: '#95571E',\n 750: '#7C4919',\n 800: '#633A14',\n 850: '#4B2C0F',\n 900: '#321D0A',\n 950: '#190F05'\n};\nvar SUCCESS = {\n 0: '#F5FAF9',\n 50: '#EAF6F2',\n 100: '#D6EDE6',\n 150: '#C1E4D9',\n 200: '#ADDBCD',\n 250: '#98D2C0',\n 300: '#84C9B4',\n 350: '#6FC0A7',\n 400: '#5BB79B',\n 450: '#46AE8E',\n 500: '#31A582',\n 550: '#2C9575',\n 600: '#278468',\n 650: '#23735B',\n 700: '#1E634E',\n 750: '#195241',\n 800: '#144234',\n 850: '#0F3127',\n 900: '#0A211A',\n 950: '#05100D'\n};\nvar INFO = {\n 0: '#F3F7FA',\n 50: '#E7EFF5',\n 100: '#CEDEEA',\n 150: '#B6CEE0',\n 200: '#9DBED6',\n 250: '#84ADCB',\n 300: '#6C9DC1',\n 350: '#548DB7',\n 400: '#3B7DAD',\n 450: '#236CA2',\n 500: '#0A5C98',\n 550: '#095389',\n 600: '#084A7A',\n 650: '#07406A',\n 700: '#06375B',\n 750: '#052E4C',\n 800: '#04253D',\n 850: '#031C2E',\n 900: '#02121E',\n 950: '#01090F'\n};\n// For use in No Data donut chart and in refresher chart\nvar NODATA = {\n 500: GREYS[300],\n 700: GREYS[500]\n};\nvar INSIGHT_CODES = {\n 400: '#ED6E56',\n 500: '#BD76E8',\n 600: '#E5B406',\n 700: '#A12E6E',\n 800: '#2D6FB4',\n 900: '#6D8193'\n};\nvar DATAVIS_WITH_MEANING = [PRIMARY, WARNING, ERROR, ACCENT1, ACCENT2, INFO, SUCCESS, NODATA, INSIGHT_CODES // 8\n];\n\n/** Theme Builder */\nvar buildValueLookup = function (values) {\n return {\n values: values,\n getValue: function (index) {\n if (index === void 0) {\n index = 0;\n }\n return values[index] || values[0];\n }\n };\n};\nvar buildPaletteValueLookup = function (values) {\n return {\n values: values,\n getValue: function (key) {\n if (key === void 0) {\n key = 500;\n }\n return {\n main: values[key] || values[500],\n context: Number(key) <= 100 ? GREYS[900] : GREYS[50]\n };\n }\n };\n};\nvar getValueDataVis = function (values) {\n return function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var main = values[0][500];\n var valueIndex = values[index];\n if (valueIndex) {\n main = values[index][key] || values[0][500];\n }\n return {\n main: main,\n context: Number(key) <= 100 ? GREYS[900] : GREYS[50]\n };\n };\n};\nvar getValueDataVisWithMeaning = function (values) {\n return function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var main = values[7][700]; // default \"NoData\"\n var valueIndex = values[index];\n if (valueIndex) {\n main = values[index][key] || values[0][500]; // specific value || default \"Primary\"\n }\n return {\n main: main,\n context: Number(key) <= 100 ? GREYS[900] : GREYS[50]\n };\n };\n};\nvar buildDataVisLookup = function (values) {\n return {\n values: values,\n getValue: getValueDataVis(values),\n getNextValue: function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var initialValue = values[index][key];\n var paletteKeys = Object.keys(values[index]).map(Number);\n var nextValuePaletteKey = paletteKeys[paletteKeys.indexOf(key) + 1];\n var nextValue = values[index][nextValuePaletteKey];\n return {\n main: nextValue || initialValue,\n context: Number(key) <= 100 ? GREYS[900] : GREYS[50]\n };\n }\n };\n};\nvar buildDataVisWithMeaningLookup = function (values) {\n return {\n values: values,\n getValue: getValueDataVisWithMeaning(values),\n getNextValue: function (index, key) {\n if (index === void 0) {\n index = 0;\n }\n if (key === void 0) {\n key = 500;\n }\n var initialValue = values[index][key];\n var paletteKeys = Object.keys(values[index]).map(Number);\n var nextValuePaletteKey = paletteKeys[paletteKeys.indexOf(key) + 1];\n var nextValue = values[index][nextValuePaletteKey];\n return {\n main: nextValue || initialValue,\n context: Number(key) <= 100 ? GREYS[900] : GREYS[50]\n };\n }\n };\n};\n// This is the theme colours\nvar colors = {\n primary: buildPaletteValueLookup(PRIMARY$1),\n accent1: buildPaletteValueLookup(ACCENT1$1),\n accent2: buildPaletteValueLookup(ACCENT2$1),\n error: buildPaletteValueLookup(ERROR$1),\n warning: buildPaletteValueLookup(WARNING$1),\n success: buildPaletteValueLookup(SUCCESS$1),\n info: buildPaletteValueLookup(INFO$1),\n text: buildValueLookup([GREYS[800], GREYS[700], GREYS[300], GREYS[50], GREYS[500]]),\n placeholder: GREYS[500],\n borders: buildValueLookup([GREYS[500], GREYS[300], GREYS[100], GREYS[200]]),\n backgrounds: buildValueLookup([GREYS[200], GREYS[100], GREYS[50] // #14171D\n ]),\n overlay: GREYS[800],\n navBackground: GREYS[900],\n shadow: 'transparent',\n shadowStrong: 'transparent',\n dataVis: buildDataVisLookup(DATAVIS),\n dataVisWithMeaning: buildDataVisWithMeaningLookup(DATAVIS_WITH_MEANING),\n fade: {\n from: 'rgba(18, 18, 18, 1)',\n to: 'rgba(18, 18, 18, 0.5)'\n }\n};\nvar darkTheme = __assign(__assign({}, theme), {\n name: 'dark',\n colors: colors\n});\nvar themeHelpers = {\n zIndex: zIndex,\n sidebarWidth: sidebarWidth,\n getPageBackgroundColor: getPageBackgroundColor,\n getContainerColor: getContainerColor,\n getNestedContainerColor: getNestedContainerColor,\n getDrawerColor: getDrawerColor,\n getTooltipColor: getTooltipColor,\n getContrastTextColor: getContrastTextColor,\n getShadowStrongColor: getShadowStrongColor,\n getFieldColor: getFieldColor,\n getDisabledFieldColor: getDisabledFieldColor,\n pageBackground: pageBackground,\n containerBackground: containerBackground,\n nestedContainerBackground: nestedContainerBackground,\n tooltipBackground: tooltipBackground,\n contrastTextColor: contrastTextColor,\n boxShadowForDarkMode: boxShadowForDarkMode,\n mediaQueryBreakpoints: mediaQueryBreakpoints,\n mediaQuerySizes: mediaQuerySizes,\n getColorLibrary: getColorLibrary,\n getPaletteColours: getPaletteColours,\n isDarkMode: isDarkMode$4,\n overlayStyling: overlayStyling\n};\nvar isTest = process.env.NODE_ENV === 'test';\nvar isStorybook = process.env.STORYBOOK === 'true';\nvar history = isTest || isStorybook ? createMemoryHistory({\n initialEntries: ['/']\n}) : createBrowserHistory();\nvar Router = function (_a) {\n var children = _a.children,\n history$1 = _a.history;\n return /*#__PURE__*/React__default.createElement(Router$1, {\n history: history$1 || history\n }, children);\n};\nvar PrivateRoute = function (props) {\n var children = props.children,\n isAuthenticated = props.isAuthenticated,\n redirectPath = props.redirectPath,\n rest = __rest(props, [\"children\", \"isAuthenticated\", \"redirectPath\"]);\n return /*#__PURE__*/React__default.createElement(Route, __assign({}, rest, {\n render: function (_a) {\n var location = _a.location;\n return isAuthenticated ? children : ( /*#__PURE__*/React__default.createElement(Redirect, {\n to: {\n pathname: redirectPath,\n state: {\n from: location\n }\n }\n }));\n }\n }));\n};\nvar handleUpdateQuery = function (query, data) {\n Object.keys(data).forEach(function (key) {\n if (Array.isArray(data[key])) {\n var values = data[key];\n values.forEach(function (item, index) {\n if (index === 0) {\n query.set(key, item);\n } else {\n query.append(key, item);\n }\n });\n } else {\n var value = data[key];\n if (value === null || value === undefined) {\n query.delete(key);\n } else {\n query.set(key, value);\n }\n }\n });\n return query.toString();\n};\nvar useQueryParams = function () {\n var location = useLocation();\n var history = useHistory();\n var query = new URLSearchParams(location.search);\n var memoQuery = React__default.useCallback(function () {\n return new URLSearchParams(location.search);\n }, [location.search]);\n var pushQueryParams = React__default.useCallback(function (params) {\n history.push(\"\".concat(location.pathname, \"?\").concat(params));\n }, [history, location.pathname]);\n var updateQuery = React__default.useCallback(function (data) {\n var query = new URLSearchParams(location.search);\n var params = handleUpdateQuery(query, data);\n pushQueryParams(params);\n }, [pushQueryParams, location.search]);\n var get = React__default.useCallback(function (key) {\n var _a;\n var query = new URLSearchParams(location.search);\n return (_a = query.get(key)) !== null && _a !== void 0 ? _a : undefined;\n }, [location.search]);\n var getAll = React__default.useCallback(function (key) {\n var query = new URLSearchParams(location.search);\n return query.getAll(key);\n }, [location.search]);\n var set = React__default.useCallback(function (key, value) {\n var query = new URLSearchParams(location.search);\n return query.set(key, value);\n }, [location.search]);\n return {\n query: query,\n memoQuery: memoQuery,\n get: get,\n getAll: getAll,\n set: set,\n updateQuery: updateQuery,\n pushQueryParams: pushQueryParams\n };\n};\nvar INITIAL_STATE$2 = {\n isOpen: function () {\n return false;\n },\n setDrawerState: function () {\n return null;\n },\n toggleDrawer: function (name) {\n return null;\n }\n};\nvar Context$2 = /*#__PURE__*/React__default.createContext(INITIAL_STATE$2);\nvar useDrawer = function () {\n return React__default.useContext(Context$2);\n};\nvar DrawerProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React__default.useState({\n default: false\n }), 2),\n isOpen = _b[0],\n setIsopen = _b[1];\n var handleSetDrawerState = React__default.useCallback(function (value, name) {\n var _a;\n if (name === void 0) {\n name = 'default';\n }\n // only update the state if a value has changed.\n if (isOpen[name] !== value) {\n // We can only show a single drawer at once. so set all to closed\n var allClosed = Object.keys(isOpen).reduce(function (acc, key) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[key] = false, _a));\n }, {});\n setIsopen(__assign(__assign({}, allClosed), (_a = {}, _a[name] = value, _a)));\n }\n }, [setIsopen, isOpen]);\n var handleToggleDrawer = React__default.useCallback(function (name) {\n var _a;\n if (name === void 0) {\n name = 'default';\n }\n // We can only show a single drawer at once. so set all to closed\n var allClosed = Object.keys(isOpen).reduce(function (acc, key) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[key] = false, _a));\n }, {});\n setIsopen(__assign(__assign({}, allClosed), (_a = {}, _a[name] = !isOpen[name], _a)));\n }, [setIsopen, isOpen]);\n return /*#__PURE__*/React__default.createElement(Context$2.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$2), {\n isOpen: function (name) {\n if (name === void 0) {\n name = 'default';\n }\n return isOpen[name];\n },\n setDrawerState: handleSetDrawerState,\n toggleDrawer: handleToggleDrawer\n })\n }, children);\n};\nvar generate = function (ids, props) {\n var testId = (props || {})[\"data-testid\"];\n var tags = __spreadArray(__spreadArray([], __read(ids), false), [testId], false).filter(Boolean).join(' ');\n return tags.length ? tags : undefined;\n};\nvar getVariant = function (variant) {\n switch (variant) {\n case 'primary':\n return css(templateObject_1$3w || (templateObject_1$3w = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n });\n case 'secondary':\n return css(templateObject_2$1R || (templateObject_2$1R = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.text.getValue(1);\n });\n case 'context':\n return css(templateObject_3$1p || (templateObject_3$1p = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.text.getValue(3);\n });\n default:\n case 'default':\n return css(templateObject_4$16 || (templateObject_4$16 = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.text.getValue();\n });\n }\n};\nvar getSizeAndLineHeight = function (size, inline) {\n return css(templateObject_5$W || (templateObject_5$W = __makeTemplateObject([\"\\n font-size: \", \";\\n line-height: \", \";\\n \"], [\"\\n font-size: \", \";\\n line-height: \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(size);\n }, function (p) {\n return p.theme.type.getLineHeight(size);\n });\n};\nvar getWeight = function (weight) {\n return css(templateObject_6$M || (templateObject_6$M = __makeTemplateObject([\"\\n font-weight: \", \";\\n \"], [\"\\n font-weight: \", \";\\n \"])), weight || 400);\n};\nvar Text$3 = styled.div(templateObject_10$n || (templateObject_10$n = __makeTemplateObject([\"\\n display: \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n display: \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.inline ? 'inline' : 'block';\n}, function (p) {\n return getSizeAndLineHeight(p.size);\n}, function (p) {\n return getVariant(p.variant);\n}, function (p) {\n return getWeight(p.weight);\n}, function (p) {\n return p.clamp && css(templateObject_7$C || (templateObject_7$C = __makeTemplateObject([\"\\n display: -webkit-box;\\n -webkit-line-clamp: \", \";\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n \"], [\"\\n display: -webkit-box;\\n -webkit-line-clamp: \", \";\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n \"])), p.clamp);\n}, function (p) {\n return p.color && css(templateObject_8$v || (templateObject_8$v = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.color);\n}, function (p) {\n return p.ellipsis ? css(templateObject_9$s || (templateObject_9$s = __makeTemplateObject([\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: inline-block;\\n max-width: 100%;\\n \"], [\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: inline-block;\\n max-width: 100%;\\n \"]))) : undefined;\n});\nvar templateObject_1$3w, templateObject_2$1R, templateObject_3$1p, templateObject_4$16, templateObject_5$W, templateObject_6$M, templateObject_7$C, templateObject_8$v, templateObject_9$s, templateObject_10$n;\nvar Text$2 = function (props) {\n var variant = props.variant,\n size = props.size,\n weight = props.weight,\n className = props.className,\n _a = props.ellipsis,\n ellipsis = _a === void 0 ? false : _a,\n children = props.children,\n color = props.color,\n reference = props.reference,\n _b = props.hideTitleOnEllipsis,\n hideTitleOnEllipsis = _b === void 0 ? false : _b,\n _c = props.inline,\n inline = _c === void 0 ? false : _c,\n clamp = props.clamp;\n var textRef = React__default.useRef(null);\n var _d = __read(React__default.useState(''), 2),\n rawText = _d[0],\n setRawText = _d[1];\n React__default.useEffect(function () {\n if ((ellipsis || clamp) && textRef && textRef.current) {\n var hasVerticalOverflow = textRef.current.scrollHeight - textRef.current.clientHeight;\n var hasHorizontalOverflow = textRef.current.scrollWidth - textRef.current.clientWidth;\n if (hasVerticalOverflow || hasHorizontalOverflow) {\n setRawText(textRef.current.innerText);\n }\n }\n }, [textRef, ellipsis, clamp]);\n return /*#__PURE__*/React__default.createElement(Text$3, {\n inline: inline,\n title: (ellipsis || clamp) && !hideTitleOnEllipsis ? rawText : undefined,\n \"data-testid\": generate([], props),\n ellipsis: ellipsis,\n variant: variant,\n size: size,\n weight: weight,\n className: className,\n color: color,\n clamp: clamp,\n ref: reference || textRef\n }, children);\n};\n\n/**\r\n @param className - (optional) - string\r\n @param reference - (optional) - React.RefObject<HTMLDivElement> | null\r\n @param hideTitleOnEllipsis - (optional) - boolean\r\n @param size - (optional) - number\r\n @param variant - (optional) - TextVariant\r\n @param weight - (optional) - TextWeight\r\n @param ellipsis - (optional) - boolean\r\n @param color - (optional) - string\r\n @param inline - (optional) - boolean\r\n @param clamp - (optional) - number\r\n */\nvar Text$1 = styled(Text$2)(templateObject_1$3v || (templateObject_1$3v = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3v;\nvar Card$2 = styled.div(templateObject_1$3u || (templateObject_1$3u = __makeTemplateObject([\"\\n \", \";\\n padding: \", \";\\n border-radius: \", \";\\n position: relative;\\n color: \", \";\\n \", \";\\n\"], [\"\\n \", \";\\n padding: \", \";\\n border-radius: \", \";\\n position: relative;\\n color: \", \";\\n \", \";\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, boxShadow);\nvar templateObject_1$3u;\nvar View$2 = styled.div(templateObject_1$3t || (templateObject_1$3t = __makeTemplateObject([\"\\n // Sets fallback text colour\\n color: \", \";\\n\"], [\"\\n // Sets fallback text colour\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$3t;\nvar sizeVariant$4 = function (size) {\n switch (size) {\n case 'extraSmall':\n return css(templateObject_1$3s || (templateObject_1$3s = __makeTemplateObject([\"\\n font-size: 0.6em;\\n \"], [\"\\n font-size: 0.6em;\\n \"])));\n case 'small':\n return css(templateObject_2$1Q || (templateObject_2$1Q = __makeTemplateObject([\"\\n font-size: 0.8em;\\n \"], [\"\\n font-size: 0.8em;\\n \"])));\n case 'medium':\n return css(templateObject_3$1o || (templateObject_3$1o = __makeTemplateObject([\"\\n font-size: 1.25em;\\n \"], [\"\\n font-size: 1.25em;\\n \"])));\n case 'large':\n return css(templateObject_4$15 || (templateObject_4$15 = __makeTemplateObject([\"\\n font-size: 1.5em;\\n \"], [\"\\n font-size: 1.5em;\\n \"])));\n default:\n case 'default':\n return css(templateObject_5$V || (templateObject_5$V = __makeTemplateObject([\"\\n font-size: 1em;\\n \"], [\"\\n font-size: 1em;\\n \"])));\n }\n};\nvar IconWrapper$4 = styled.div(templateObject_7$B || (templateObject_7$B = __makeTemplateObject([\"\\n display: inline-flex;\\n vertical-align: middle;\\n \", \";\\n \", \"\\n\\n svg {\\n fill: currentcolor;\\n stroke: currentcolor;\\n shape-rendering: inherit;\\n stroke-width: 0;\\n }\\n\"], [\"\\n display: inline-flex;\\n vertical-align: middle;\\n \", \";\\n \", \"\\n\\n svg {\\n fill: currentcolor;\\n stroke: currentcolor;\\n shape-rendering: inherit;\\n stroke-width: 0;\\n }\\n\"])), function (p) {\n return sizeVariant$4(p.size);\n}, function (p) {\n return p.color && css(templateObject_6$L || (templateObject_6$L = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.color);\n});\nvar templateObject_1$3s, templateObject_2$1Q, templateObject_3$1o, templateObject_4$15, templateObject_5$V, templateObject_6$L, templateObject_7$B;\nvar sizeVariant$3 = function (theme, size) {\n switch (size) {\n case 'small':\n return css(templateObject_1$3r || (templateObject_1$3r = __makeTemplateObject([\"\\n height: \", \";\\n padding: 0 \", \";\\n \"], [\"\\n height: \", \";\\n padding: 0 \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(8);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n });\n default:\n case 'default':\n return css(templateObject_2$1P || (templateObject_2$1P = __makeTemplateObject([\"\\n height: \", \";\\n padding: 0 \", \";\\n \"], [\"\\n height: \", \";\\n padding: 0 \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(10);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n });\n }\n};\nvar colorVariant = function (activeTheme, variant) {\n switch (variant) {\n case 'link':\n return css(templateObject_3$1n || (templateObject_3$1n = __makeTemplateObject([\"\\n background-color: transparent;\\n color: \", \";\\n display: inline-flex;\\n padding: 0;\\n cursor: pointer;\\n\\n &:hover {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:active {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n \"], [\"\\n background-color: transparent;\\n color: \", \";\\n display: inline-flex;\\n padding: 0;\\n cursor: pointer;\\n\\n &:hover {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:active {\\n text-decoration: underline;\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n }, function (p) {\n return p.theme.colors.text.getValue(2);\n });\n case 'borderless':\n return css(templateObject_4$14 || (templateObject_4$14 = __makeTemplateObject([\"\\n background-color: transparent;\\n color: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n \"], [\"\\n background-color: transparent;\\n color: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue(100).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(100).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n }, function (p) {\n return p.theme.colors.text.getValue(2);\n });\n case 'primary':\n return css(templateObject_5$U || (templateObject_5$U = __makeTemplateObject([\"\\n background-color: \", \";\\n color: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\\n &:disabled {\\n background-color: \", \";\\n color: \", \";\\n }\\n \"], [\"\\n background-color: \", \";\\n color: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n &:active {\\n background-color: \", \";\\n }\\n\\n &:disabled {\\n background-color: \", \";\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().context;\n }, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n }, function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, function (p) {\n return p.theme.colors.text.getValue(2);\n });\n case 'secondary':\n return css(templateObject_6$K || (templateObject_6$K = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n\\n &:hover {\\n border-color: \", \";\\n color: \", \";\\n }\\n\\n &:active {\\n border-color: \", \";\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n border-color: \", \";\\n }\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n\\n &:hover {\\n border-color: \", \";\\n color: \", \";\\n }\\n\\n &:active {\\n border-color: \", \";\\n color: \", \";\\n }\\n\\n &:disabled {\\n color: \", \";\\n border-color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().main;\n }, containerBackground(activeTheme), function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n }, function (p) {\n return p.theme.colors.text.getValue(2);\n }, function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n case 'default':\n default:\n return css(templateObject_7$A || (templateObject_7$A = __makeTemplateObject([\"\\n background-color: \", \";\\n color: \", \";\\n\\n &:disabled {\\n background-color: \", \";\\n color: \", \";\\n }\\n \"], [\"\\n background-color: \", \";\\n color: \", \";\\n\\n &:disabled {\\n background-color: \", \";\\n color: \", \";\\n }\\n \"])), function (p) {\n return isDarkMode$4(activeTheme) ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue(1);\n }, function (p) {\n return p.theme.colors.text.getValue();\n }, function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, function (p) {\n return p.theme.colors.text.getValue(2);\n });\n }\n};\nvar Label$7 = styled.span(templateObject_8$u || (templateObject_8$u = __makeTemplateObject([\"\"], [\"\"])));\nvar BaseButtonStyle = css(templateObject_9$r || (templateObject_9$r = __makeTemplateObject([\"\\n display: inline-flex;\\n align-items: center;\\n border: 0;\\n outline: 0;\\n transition: 0.25s all ease-in-out;\\n cursor: pointer;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n border-radius: \", \";\\n position: relative;\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n\"], [\"\\n display: inline-flex;\\n align-items: center;\\n border: 0;\\n outline: 0;\\n transition: 0.25s all ease-in-out;\\n cursor: pointer;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n font-size: \", \";\\n border-radius: \", \";\\n position: relative;\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n\"])), function (p) {\n return p.theme.type.getSize(0);\n}, function (p) {\n return p.theme.spacing.getSize(0.5);\n});\nvar Button$3 = styled.button(templateObject_13$c || (templateObject_13$c = __makeTemplateObject([\"\\n \", \"\\n \", \";\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n \", \"\\n \", \";\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n\"])), BaseButtonStyle, function (p) {\n return sizeVariant$3(p.theme, p.size);\n}, function (p) {\n return colorVariant(p.activeTheme, p.variant);\n}, function (p) {\n return p.isLoading ? css(templateObject_10$m || (templateObject_10$m = __makeTemplateObject([\"\\n \", \" {\\n opacity: 0;\\n }\\n \"], [\"\\n \", \" {\\n opacity: 0;\\n }\\n \"])), Label$7) : undefined;\n}, function (p) {\n return p.iconPosition === 'left' ? css(templateObject_11$h || (templateObject_11$h = __makeTemplateObject([\"\\n \", \" {\\n margin-right: \", \";\\n }\\n \"], [\"\\n \", \" {\\n margin-right: \", \";\\n }\\n \"])), IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(2);\n }) : css(templateObject_12$f || (templateObject_12$f = __makeTemplateObject([\"\\n \", \" {\\n margin-left: \", \";\\n }\\n \"], [\"\\n \", \" {\\n margin-left: \", \";\\n }\\n \"])), IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar Loading$3 = styled.span(templateObject_14$a || (templateObject_14$a = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: block;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 2em;\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n display: block;\\n height: 100%;\\n width: 100%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n font-size: 2em;\\n\"])));\nvar templateObject_1$3r, templateObject_2$1P, templateObject_3$1n, templateObject_4$14, templateObject_5$U, templateObject_6$K, templateObject_7$A, templateObject_8$u, templateObject_9$r, templateObject_10$m, templateObject_11$h, templateObject_12$f, templateObject_13$c, templateObject_14$a;\nvar sizeVariant$2 = function (theme, size, customWidth) {\n if (customWidth) {\n return css(templateObject_1$3q || (templateObject_1$3q = __makeTemplateObject([\"\\n width: 100%;\\n max-width: \", \"px;\\n \"], [\"\\n width: 100%;\\n max-width: \", \"px;\\n \"])), customWidth);\n }\n switch (size) {\n case 'medium':\n return css(templateObject_2$1O || (templateObject_2$1O = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), theme.spacing.getSize(150));\n case 'large':\n return css(templateObject_3$1m || (templateObject_3$1m = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), theme.spacing.getSize(220));\n case 'fullscreen':\n return css(templateObject_4$13 || (templateObject_4$13 = __makeTemplateObject([\"\\n max-width: none;\\n max-height: none;\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n max-width: none;\\n max-height: none;\\n height: \", \";\\n width: \", \";\\n \"])), \"calc(100vh - \".concat(theme.spacing.getSize(8), \")\"), \"calc(100% - \".concat(theme.spacing.getSize(8), \")\"));\n case 'small':\n default:\n return css(templateObject_5$T || (templateObject_5$T = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), theme.spacing.getSize(120));\n }\n};\nvar Modal$2 = styled(Card$2)(templateObject_7$z || (templateObject_7$z = __makeTemplateObject([\"\\n padding: 0;\\n display: flex;\\n flex-direction: column;\\n box-sizing: border-box;\\n \", \"\\n max-height: calc(100vh - \", \");\\n max-width: calc(100vw - \", \");\\n min-width: 400px;\\n \", \";\\n z-index: \", \";\\n \", \";\\n\\n \", \"\\n\"], [\"\\n padding: 0;\\n display: flex;\\n flex-direction: column;\\n box-sizing: border-box;\\n \", \"\\n max-height: calc(100vh - \", \");\\n max-width: calc(100vw - \", \");\\n min-width: 400px;\\n \", \";\\n z-index: \", \";\\n \", \";\\n\\n \", \"\\n\"])), boxShadow3, function (p) {\n return p.theme.spacing.getSize(p.theme.template.modal.padding * 2);\n}, function (p) {\n return p.theme.spacing.getSize(p.theme.template.modal.padding * 2);\n}, function (p) {\n return sizeVariant$2(p.theme, p.size, p.customWidth);\n}, zIndex, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return !p.noMinHeight && css(templateObject_6$J || (templateObject_6$J = __makeTemplateObject([\"\\n min-height: \", \";\\n \"], [\"\\n min-height: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(56);\n });\n});\nvar Header$7 = styled(View$2)(templateObject_8$t || (templateObject_8$t = __makeTemplateObject([\"\\n box-sizing: border-box;\\n display: flex;\\n align-items: flex-end;\\n padding: \", \" \", \";\\n\"], [\"\\n box-sizing: border-box;\\n display: flex;\\n align-items: flex-end;\\n padding: \", \" \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\n// Header close button\nvar Close$2 = styled(View$2)(templateObject_9$q || (templateObject_9$q = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"], [\"\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Body$1 = styled(View$2)(templateObject_10$l || (templateObject_10$l = __makeTemplateObject([\"\\n display: flex;\\n flex-grow: 1;\\n // Avoid temptation to use align-items: center here, as this looks nice for small modals, but not suitable for full screens\\n\"], [\"\\n display: flex;\\n flex-grow: 1;\\n // Avoid temptation to use align-items: center here, as this looks nice for small modals, but not suitable for full screens\\n\"])));\n// Padding and scroll (if useScroll is off)\nvar BodyContent = styled(View$2)(templateObject_12$e || (templateObject_12$e = __makeTemplateObject([\"\\n padding: 0 \", \";\\n min-width: 100%;\\n\\n \", \"\\n\"], [\"\\n padding: 0 \", \";\\n min-width: 100%;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.useScroll && css(templateObject_11$g || (templateObject_11$g = __makeTemplateObject([\"\\n height: 100%;\\n overflow-y: auto;\\n max-height: 100%;\\n box-sizing: border-box;\\n \"], [\"\\n height: 100%;\\n overflow-y: auto;\\n max-height: 100%;\\n box-sizing: border-box;\\n \"])));\n});\nvar ButtonGroup$3 = styled(View$2)(templateObject_13$b || (templateObject_13$b = __makeTemplateObject([\"\\n flex: 1;\\n white-space: nowrap;\\n\\n \", \" {\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"], [\"\\n flex: 1;\\n white-space: nowrap;\\n\\n \", \" {\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"])), Button$3, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar LeftButtons = styled(ButtonGroup$3)(templateObject_14$9 || (templateObject_14$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar RightButtons = styled(ButtonGroup$3)(templateObject_15$9 || (templateObject_15$9 = __makeTemplateObject([\"\\n text-align: right;\\n margin-left: \", \";\\n\"], [\"\\n text-align: right;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Footer$5 = styled(View$2)(templateObject_16$7 || (templateObject_16$7 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-end;\\n width: 100%;\\n box-sizing: border-box;\\n padding: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-end;\\n width: 100%;\\n box-sizing: border-box;\\n padding: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, Button$3, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Cancel = styled(View$2)(templateObject_17$6 || (templateObject_17$6 = __makeTemplateObject([\"\\n margin-right: auto;\\n\"], [\"\\n margin-right: auto;\\n\"])));\nvar ModalWrapper = styled.div(templateObject_18$5 || (templateObject_18$5 = __makeTemplateObject([\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: \", \";\\n align-items: center;\\n justify-content: center;\\n padding: \", \" 0;\\n z-index: \", \";\\n\"], [\"\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: \", \";\\n align-items: center;\\n justify-content: center;\\n padding: \", \" 0;\\n z-index: \", \";\\n\"])), function (p) {\n return p.layerModal ? 'flex !important' : 'flex';\n}, function (p) {\n return p.theme.spacing.getSize(28);\n}, function (p) {\n return p.layerModal ? 2000 : zIndex;\n});\nvar templateObject_1$3q, templateObject_2$1O, templateObject_3$1m, templateObject_4$13, templateObject_5$T, templateObject_6$J, templateObject_7$z, templateObject_8$t, templateObject_9$q, templateObject_10$l, templateObject_11$g, templateObject_12$e, templateObject_13$b, templateObject_14$9, templateObject_15$9, templateObject_16$7, templateObject_17$6, templateObject_18$5;\nvar sizeVariant$1 = function (size) {\n switch (size) {\n case 'tiny':\n return css(templateObject_1$3p || (templateObject_1$3p = __makeTemplateObject([\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n });\n case 'small':\n return css(templateObject_2$1N || (templateObject_2$1N = __makeTemplateObject([\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n });\n default:\n case 'default':\n return css(templateObject_3$1l || (templateObject_3$1l = __makeTemplateObject([\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n font-size: \", \";\\n height: \", \";\\n width: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n });\n }\n};\nvar IconButton$2 = styled.button(templateObject_6$I || (templateObject_6$I = __makeTemplateObject([\"\\n align-items: center;\\n border: 0;\\n outline: 0;\\n transition: 0.25s all ease-in-out;\\n cursor: pointer;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n background: transparent;\\n padding: 0;\\n display: flex;\\n justify-content: center;\\n border-radius: \", \";\\n color: \", \";\\n\\n \", \" {\\n margin: 0;\\n }\\n\\n \", \";\\n\\n &:disabled {\\n background: transparent;\\n cursor: not-allowed;\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n align-items: center;\\n border: 0;\\n outline: 0;\\n transition: 0.25s all ease-in-out;\\n cursor: pointer;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n background: transparent;\\n padding: 0;\\n display: flex;\\n justify-content: center;\\n border-radius: \", \";\\n color: \", \";\\n\\n \", \" {\\n margin: 0;\\n }\\n\\n \", \";\\n\\n &:disabled {\\n background: transparent;\\n cursor: not-allowed;\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, IconWrapper$4, function (p) {\n return sizeVariant$1(p.size);\n}, function (p) {\n return p.theme.colors.text.getValue(2);\n}, function (p) {\n return p.variant === 'state' && css(templateObject_4$12 || (templateObject_4$12 = __makeTemplateObject([\"\\n &:hover {\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n\\n &:focus {\\n background: \", \";\\n }\\n \"], [\"\\n &:hover {\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n\\n &:focus {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, IconWrapper$4, function (p) {\n return p.theme.colors.text.getValue();\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n });\n}, function (p) {\n return p.variant === 'active' && css(templateObject_5$S || (templateObject_5$S = __makeTemplateObject([\"\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n &:hover {\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n \"], [\"\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n &:hover {\\n background: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n }, IconWrapper$4, function (p) {\n return p.theme.colors.primary.getValue(500).context;\n }, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n }, IconWrapper$4, function (p) {\n return p.theme.colors.primary.getValue(500).context;\n });\n});\nvar templateObject_1$3p, templateObject_2$1N, templateObject_3$1l, templateObject_4$12, templateObject_5$S, templateObject_6$I;\nvar DropdownContent$2 = styled.div(templateObject_3$1k || (templateObject_3$1k = __makeTemplateObject([\"\\n position: fixed;\\n will-change: transform;\\n opacity: \", \";\\n \", \"\\n transition: opacity 0.3s ease;\\n z-index: \", \";\\n color: \", \";\\n\"], [\"\\n position: fixed;\\n will-change: transform;\\n opacity: \", \";\\n \", \"\\n transition: opacity 0.3s ease;\\n z-index: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.show ? 1 : 0;\n}, function (p) {\n return p.fullWidth ? css(templateObject_1$3o || (templateObject_1$3o = __makeTemplateObject([\"\\n width: inherit;\\n \"], [\"\\n width: inherit;\\n \"]))) : css(templateObject_2$1M || (templateObject_2$1M = __makeTemplateObject([\"\\n min-width: max-content;\\n \"], [\"\\n min-width: max-content;\\n \"])));\n}, zIndex, function (p) {\n return p.theme.colors.text.getValue();\n});\nvar templateObject_1$3o, templateObject_2$1M, templateObject_3$1k;\nvar calculateOffset = function (contentSize, triggerHeight, canvasSize, padding, forceBottom) {\n if (padding === void 0) {\n padding = 0;\n }\n if (forceBottom === void 0) {\n forceBottom = false;\n }\n if (!contentSize) {\n return {\n right: 0,\n bottom: 0\n };\n }\n var contentRight = contentSize.right + padding;\n var contentBottom = contentSize.bottom + padding;\n var contentHeight = contentSize.height;\n var offsetRight = contentRight > canvasSize.width ? canvasSize.width - contentRight : 0;\n var isOffBottom = contentBottom > canvasSize.height;\n var offsetBottom = isOffBottom ? -(contentHeight + triggerHeight) : 0;\n return {\n right: Math.round(offsetRight),\n bottom: forceBottom ? 0 : Math.round(offsetBottom)\n };\n};\nvar validClickOutside = function (target, current, cb) {\n if (target && current && !current.contains(target)) {\n cb();\n }\n};\nvar getPosition = function (triggerDimensions, position) {\n var horizontal;\n var vertical;\n switch (position === null || position === void 0 ? void 0 : position.horizontal) {\n case 'center':\n horizontal = triggerDimensions.left + triggerDimensions.width / 2;\n break;\n case 'right':\n horizontal = triggerDimensions.right;\n break;\n default:\n case 'left':\n horizontal = triggerDimensions.left;\n break;\n }\n switch (position === null || position === void 0 ? void 0 : position.vertical) {\n case 'top':\n vertical = triggerDimensions.top;\n break;\n case 'center':\n vertical = triggerDimensions.top + triggerDimensions.height / 2;\n break;\n default:\n case 'bottom':\n vertical = triggerDimensions.bottom;\n break;\n }\n return {\n top: vertical,\n left: horizontal\n };\n};\nvar Layer$1 = function (props) {\n var children = props.children,\n name = props.name;\n // Overwrite the theme, with the new layer for z-index\n var theme = function () {\n return function (prevTheme) {\n return __assign(__assign({}, prevTheme), {\n layers: __assign(__assign({}, prevTheme.layers), {\n values: __assign({}, prevTheme.layers.getNextLayer(prevTheme.layers.values.currentLayer, name))\n })\n });\n };\n };\n return /*#__PURE__*/React__default.createElement(ThemeProvider$2, {\n theme: theme()\n }, children);\n};\n\n/**\r\n * @param name - (required) - 'base' | 'nav' | 'avatar' | 'loading' | 'dropdown' | 'overlay' | 'modal' | 'tooltip' | 'drawer' | 'toaster'\r\n * @param className - (optional) - string\r\n */\nvar Layer = styled(Layer$1)(templateObject_1$3n || (templateObject_1$3n = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3n;\nvar DropdownContent$1 = function (props) {\n var children = props.children,\n triggerEl = props.triggerEl,\n _a = props.onClose,\n onClose = _a === void 0 ? function () {} : _a,\n location = props.location,\n className = props.className,\n isNested = props.isNested,\n _b = props.useTransform,\n useTransform = _b === void 0 ? true : _b,\n fullWidth = props.fullWidth,\n _c = props.forceBottom,\n forceBottom = _c === void 0 ? false : _c;\n var contentRef = React__default.useRef(null);\n // General position of the trigger element\n var _d = __read(React__default.useState({\n top: 0,\n left: 0,\n height: 0,\n width: 0\n }), 2),\n position = _d[0],\n setPosition = _d[1];\n // Size and position of offsets for ensuring the content doesnt go outside screen\n var _e = __read(React__default.useState({\n right: 0,\n bottom: 0,\n display: false\n }), 2),\n size = _e[0],\n setSize = _e[1];\n // Handle the click outside of the content\n useOnClickOutside(contentRef, function (event) {\n var target = event.target;\n // Validate that this click is not on the trigger's element\n validClickOutside(target, triggerEl, function () {\n onClose();\n });\n });\n // On scroll, or resize, close the dropdown content\n React__default.useEffect(function () {\n // Callback for Scroll and Resize event listener\n var onResizeOrScroll = function () {\n !forceBottom && onClose();\n };\n var onKeyDown = function (event) {\n if (event.key === 'Escape') {\n onClose();\n }\n };\n window.addEventListener('resize', onResizeOrScroll);\n window.addEventListener('scroll', onResizeOrScroll);\n window.addEventListener('keydown', onKeyDown);\n return function () {\n window.removeEventListener('resize', onResizeOrScroll);\n window.removeEventListener('scroll', onResizeOrScroll);\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [forceBottom, onClose]);\n // When we have the triggerEl, get its positions on the page.\n React__default.useEffect(function () {\n if (triggerEl) {\n var triggerRect = triggerEl.getBoundingClientRect();\n setPosition(__assign(__assign({}, getPosition(triggerRect, location)), {\n height: (triggerRect === null || triggerRect === void 0 ? void 0 : triggerRect.height) || 0,\n width: triggerRect.width\n }));\n }\n }, [triggerEl, location]);\n // When we get the contentRef mounted, or when the position changes\n // Calculate the offset for the positioning, and set the values to state\n React__default.useEffect(function () {\n var _a;\n var contentSize = (_a = contentRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();\n var offsets = calculateOffset(contentSize, position.height, {\n height: window.innerHeight,\n width: window.innerWidth\n }, 30,\n // Buffer for the edge of window\n forceBottom);\n setSize(__assign(__assign({}, offsets), {\n display: true\n }));\n }, [contentRef, forceBottom, position]);\n if (!triggerEl) return null;\n return /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"dropdown\"\n }, /*#__PURE__*/React__default.createElement(DropdownContent$2, {\n className: className,\n ref: contentRef,\n show: size.display,\n fullWidth: fullWidth,\n style: {\n top: isNested ? position.top - 4 : position.top,\n left: isNested ? position.left + 4 : position.left,\n width: fullWidth ? position.width : undefined,\n // TODO: Replace this isNested with a function that can be passed into DropdownContent as a prop which calculates the positions.\n transform: useTransform ? \"translate3d(\".concat(size.right, \"px, \").concat(size.bottom, \"px, 0)\") : undefined\n },\n \"data-testid\": generate(['dropdown__content'], props)\n }, children)));\n};\n\n/**\r\n * @param triggerEl - (required) - (EventTarget & HTMLElement) | undefined | null\r\n * @param onClose - (optional) - () => void\r\n * @param location - (optional) - Position\r\n * @param className - (optional) - string\r\n * @param isNested - (optional) - boolean\r\n * @param useTransform - (optional) - boolean\r\n * @param fullWidth - (optional) - boolean\r\n */\nvar DropdownContent = styled(DropdownContent$1)(templateObject_1$3m || (templateObject_1$3m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3m;\nfunction useTarget(triggerRef) {\n var _a = __read(React__default.useState(null), 2),\n trigger = _a[0],\n setTrigger = _a[1];\n React__default.useEffect(function () {\n if (triggerRef && triggerRef.current) {\n setTrigger(triggerRef.current);\n }\n }, [triggerRef]);\n return trigger;\n}\nvar IconButton$1 = function (props) {\n var className = props.className,\n icon = props.icon,\n disabled = props.disabled,\n label = props.label,\n dropdownContent = props.dropdownContent,\n _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n _b = props.variant,\n variant = _b === void 0 ? 'default' : _b,\n onClick = props.onClick,\n onMouseDown = props.onMouseDown;\n var _c = __read(useState(false), 2),\n isOpen = _c[0],\n setIsOpen = _c[1];\n var triggerRef = React__default.useRef(null);\n var triggerEl = useTarget(triggerRef);\n var onClose = function () {\n setIsOpen(false);\n };\n var handleClick = function (event) {\n if (dropdownContent) {\n setIsOpen(!isOpen);\n } else if (onClick) {\n onClick(event);\n }\n };\n var handleMouseDown = function (event) {\n if (onMouseDown && event) {\n onMouseDown(event);\n }\n };\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(IconButton$2, {\n \"data-testid\": generate(['icon-button', \"icon-button--\".concat(size)], props),\n ref: triggerRef,\n className: className,\n onClick: handleClick,\n onMouseDown: handleMouseDown,\n \"aria-pressed\": dropdownContent ? isOpen : undefined,\n disabled: disabled,\n title: label,\n size: size,\n variant: variant\n }, icon()), isOpen && dropdownContent && ( /*#__PURE__*/React__default.createElement(DropdownContent, {\n triggerEl: triggerEl,\n onClose: onClose\n }, dropdownContent(onClose))));\n};\n\n/**\r\n * @param icon - (required) - () => React.ReactElement\r\n * @param label - (required) - string\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n * @param onMouseDown - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n * @param dropdownContent - (optional) - (onClose: () => void) => {}\r\n * @param className - (optional) - string\r\n * @param disabled - (optional) - boolean\r\n * @param size - (optional) - SC.ButtonSize\r\n * @param variant - (optional) - SC.IconButtonVariant\r\n */\nvar IconButton = styled(IconButton$1)(templateObject_1$3l || (templateObject_1$3l = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3l;\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1j = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 23.5a.5.5 0 01-.5-.5V12.5H1a.5.5 0 010-1h10.5V1a.5.5 0 011 0v10.5H23a.5.5 0 010 1H12.5V23a.5.5 0 01-.5.5z\"\n }));\n};\nvar Icon$1l = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1j, null));\n};\nvar SvgAdd$1 = Icon$1l;\nvar MemoSvgAdd$1 = /*#__PURE__*/React.memo(SvgAdd$1);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1i = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23 11.811c.015 6.112-4.888 11.1-11 11.189A10.837 10.837 0 011 12.192C.983 6.078 5.887 1.089 12 1a10.838 10.838 0 0111 10.811zM12 6.505a.5.5 0 01.5.5v7a.5.5 0 01-1 0v-7a.5.5 0 01.5-.5zm-.005 8.995H11.981a.746.746 0 00-.73.773v.002a.755.755 0 00.752.725h.016a.746.746 0 00.73-.773v-.002a.755.755 0 00-.74-.725H11.996z\"\n }));\n};\nvar Icon$1k = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1i, null));\n};\nvar SvgAlertErrorFilled = Icon$1k;\nvar MemoSvgAlertErrorFilled = /*#__PURE__*/React.memo(SvgAlertErrorFilled);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1h = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.832 23.501a11.273 11.273 0 01-7.89-3.201 11.267 11.267 0 01-3.441-7.966L.5 12.195C.482 5.838 5.638.592 11.993.5l.176-.001c2.96 0 5.762 1.137 7.89 3.202a11.262 11.262 0 013.44 7.967l.001.142c.015 6.355-5.14 11.599-11.493 11.691h-.175zM12.008 1.5C6.197 1.584 1.484 6.38 1.5 12.19l.001.13a10.273 10.273 0 003.137 7.262 10.314 10.314 0 007.224 2.918l.131-.001c5.808-.084 10.521-4.879 10.507-10.688l-.001-.131a10.267 10.267 0 00-3.137-7.263 10.279 10.279 0 00-7.196-2.92l-.158.003z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 14.505a.5.5 0 01-.5-.5v-7a.5.5 0 011 0v7a.5.5 0 01-.5.5zM12.007 17.005a.754.754 0 01-.757-.727.762.762 0 01.208-.543.734.734 0 01.524-.23h.026c.415.027.723.34.735.729a.753.753 0 01-.208.542.74.74 0 01-.523.228l-.005.001z\"\n }));\n};\nvar Icon$1j = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1h, null));\n};\nvar SvgAlertError = Icon$1j;\nvar MemoSvgAlertError = /*#__PURE__*/React.memo(SvgAlertError);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1g = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 23c6.075 0 11-4.925 11-11S18.075 1 12 1 1 5.925 1 12s4.925 11 11 11zM9.5 9.004a.5.5 0 01.5-.5h1.5a1 1 0 011 1v6.5a.5.5 0 00.5.5h1.5a.5.5 0 010 1H13a1.5 1.5 0 01-1.5-1.5v-6.5H10a.5.5 0 01-.5-.5zm2.245-3.005a.75.75 0 100 1.5.75.75 0 000-1.5z\"\n }));\n};\nvar Icon$1i = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1g, null));\n};\nvar SvgAlertInformationFilled = Icon$1i;\nvar MemoSvgAlertInformationFilled = /*#__PURE__*/React.memo(SvgAlertInformationFilled);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1f = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 23.501c-6.341 0-11.5-5.159-11.5-11.5S5.659.501 12 .501s11.5 5.159 11.5 11.5-5.159 11.5-11.5 11.5zm0-22c-5.79 0-10.5 4.71-10.5 10.5s4.71 10.5 10.5 10.5 10.5-4.71 10.5-10.5-4.71-10.5-10.5-10.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 17.505c-.827 0-1.5-.673-1.5-1.5v-6.5H10a.5.5 0 010-1h1.5c.551 0 1 .449 1 1v6.5a.5.5 0 00.5.5h1.5a.5.5 0 010 1H13zM11.745 7.5a.75.75 0 110-1.5.75.75 0 010 1.5z\"\n }));\n};\nvar Icon$1h = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1f, null));\n};\nvar SvgAlertInformation = Icon$1h;\nvar MemoSvgAlertInformation = /*#__PURE__*/React.memo(SvgAlertInformation);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1e = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12 23c6.075 0 11-4.925 11-11S18.075 1 12 1 1 5.925 1 12s4.925 11 11 11zm6.297-16.403a.5.5 0 01.105.7l-7 9.5a.5.5 0 01-.714.093l-5-4a.5.5 0 11.624-.78l4.594 3.675 6.691-9.082a.5.5 0 01.7-.106z\"\n }));\n};\nvar Icon$1g = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1e, null));\n};\nvar SvgAlertSuccessFilled = Icon$1g;\nvar MemoSvgAlertSuccessFilled = /*#__PURE__*/React.memo(SvgAlertSuccessFilled);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1d = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 16.999a.504.504 0 01-.312-.109l-5-4a.501.501 0 01.624-.782l4.594 3.675 6.692-9.081a.5.5 0 11.805.594l-7 9.5a.499.499 0 01-.403.203z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 23.999c-6.617 0-12-5.383-12-12s5.383-12 12-12 12 5.383 12 12-5.383 12-12 12zm0-23c-6.065 0-11 4.935-11 11s4.935 11 11 11 11-4.935 11-11-4.935-11-11-11z\"\n }));\n};\nvar Icon$1f = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1d, null));\n};\nvar SvgAlertSuccess = Icon$1f;\nvar MemoSvgAlertSuccess = /*#__PURE__*/React.memo(SvgAlertSuccess);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1c = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.089 23.983a.903.903 0 01-.127-.008H2.03a1.065 1.065 0 01-1.18-.89 1.066 1.066 0 01.161-.758l10.091-20.18c.291-.583.722-.645.894-.645.214 0 .614.084.894.645l10.091 20.181a1.076 1.076 0 01-.269 1.454 1.064 1.064 0 01-.623.201zM1.891 22.805a.462.462 0 01-.041.067.067.067 0 00-.013.052.07.07 0 00.066.058.582.582 0 01.093-.008h20c.027 0 .054.002.081.007h.008c.02 0 .031-.004.042-.012a.069.069 0 00.016-.096.443.443 0 01-.041-.067L11.996 2.594 1.891 22.805z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.996 17.479a.5.5 0 01-.5-.5v-7a.5.5 0 011 0v7a.5.5 0 01-.5.5zM12.01 19.979a.758.758 0 01-.763-.725.756.756 0 01.207-.543.735.735 0 01.524-.231.765.765 0 01.768.726.756.756 0 01-.207.543.739.739 0 01-.524.231l-.005-.001z\"\n }));\n};\nvar Icon$1e = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1c, null));\n};\nvar SvgAlertWarning = Icon$1e;\nvar MemoSvgAlertWarning = /*#__PURE__*/React.memo(SvgAlertWarning);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1b = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,23.739c-0.032,0-0.064-0.001-0.096-0.003c-0.4-0.025-0.766-0.205-1.031-0.505L0.624,11.587\\n\\t\\tc-0.088-0.1-0.132-0.229-0.124-0.362c0.009-0.133,0.068-0.255,0.169-0.344c0.091-0.08,0.208-0.125,0.33-0.125\\n\\t\\tc0.144,0,0.281,0.062,0.375,0.17l10.125,11.502V0.757c0-0.276,0.224-0.5,0.5-0.5c0.276,0,0.5,0.224,0.5,0.5v21.669l10.125-11.499\\n\\t\\tc0.096-0.108,0.232-0.17,0.375-0.17c0.122,0,0.239,0.044,0.33,0.125c0.207,0.182,0.227,0.499,0.045,0.706L13.124,23.231\\n\\t\\tc-0.042,0.047-0.087,0.093-0.135,0.135C12.716,23.606,12.365,23.739,12,23.739z\"\n }));\n};\nvar Icon$1d = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1b, null));\n};\nvar SvgArrowDown$1 = Icon$1d;\nvar MemoSvgArrowDown$1 = /*#__PURE__*/React.memo(SvgArrowDown$1);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1a = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.5 23.999C12.2239 23.999 12 23.7751 12 23.499L12 12.499C12 12.2229 12.2239 11.999 12.5 11.999C12.7761 11.999 13 12.2229 13 12.499L13 23.499C13 23.7751 12.7761 23.999 12.5 23.999Z\",\n fill: \"#585858\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.8536 16.8526C16.6583 17.0478 16.3417 17.0478 16.1464 16.8526L12.5 13.2061L8.85355 16.8526C8.65829 17.0478 8.34171 17.0478 8.14645 16.8526C7.95118 16.6573 7.95118 16.3407 8.14645 16.1454L12.1464 12.1454C12.3417 11.9502 12.6583 11.9502 12.8536 12.1454L16.8536 16.1454C17.0488 16.3407 17.0488 16.6573 16.8536 16.8526Z\",\n fill: \"#585858\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 1.499C0 0.670572 0.671573 -0.0010004 1.5 -0.0010004H22.5C23.3284 -0.0010004 24 0.670573 24 1.499V6.499C24 7.32743 23.3284 7.999 22.5 7.999H1.5C0.671572 7.999 0 7.32743 0 6.499V1.499ZM1.5 0.999C1.22386 0.999 1 1.22286 1 1.499V6.499C1 6.77514 1.22386 6.999 1.5 6.999H22.5C22.7761 6.999 23 6.77514 23 6.499V1.499C23 1.22286 22.7761 0.999 22.5 0.999H1.5Z\",\n fill: \"#585858\"\n }));\n};\nvar Icon$1c = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1a, null));\n};\nvar SvgArrowUp$1 = Icon$1c;\nvar MemoSvgArrowUp$1 = /*#__PURE__*/React.memo(SvgArrowUp$1);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$19 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.5 11.999C12.7761 11.999 13 12.2229 13 12.499V23.499C13 23.7751 12.7761 23.999 12.5 23.999C12.2239 23.999 12 23.7751 12 23.499V12.499C12 12.2229 12.2239 11.999 12.5 11.999Z\",\n fill: \"#585858\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M8.14645 19.1454C8.34171 18.9502 8.65829 18.9502 8.85355 19.1454L12.5 22.7919L16.1464 19.1454C16.3417 18.9502 16.6583 18.9502 16.8536 19.1454C17.0488 19.3407 17.0488 19.6573 16.8536 19.8526L12.8536 23.8526C12.6583 24.0478 12.3417 24.0478 12.1464 23.8526L8.14645 19.8526C7.95118 19.6573 7.95118 19.3407 8.14645 19.1454Z\",\n fill: \"#585858\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M0 1.499C0 0.670572 0.671573 -0.0010004 1.5 -0.0010004H22.5C23.3284 -0.0010004 24 0.670573 24 1.499V6.499C24 7.32743 23.3284 7.999 22.5 7.999H1.5C0.671572 7.999 0 7.32743 0 6.499V1.499ZM1.5 0.999C1.22386 0.999 1 1.22286 1 1.499V6.499C1 6.77514 1.22386 6.999 1.5 6.999H22.5C22.7761 6.999 23 6.77514 23 6.499V1.499C23 1.22286 22.7761 0.999 22.5 0.999H1.5Z\",\n fill: \"#585858\"\n }));\n};\nvar Icon$1b = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$19, null));\n};\nvar SvgArrowDown = Icon$1b;\nvar MemoSvgArrowDown = /*#__PURE__*/React.memo(SvgArrowDown);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$18 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,23.744c-0.276,0-0.5-0.224-0.5-0.5V1.575l-10.125,11.5C1.28,13.182,1.143,13.244,1,13.244\\n\\t\\tc-0.122,0-0.239-0.044-0.33-0.125c-0.207-0.182-0.227-0.499-0.045-0.706L10.876,0.771c0.042-0.047,0.086-0.092,0.133-0.133\\n\\t\\tc0.256-0.225,0.576-0.352,0.927-0.368C11.952,0.267,11.974,0.263,12,0.263c0.012,0,0.028,0.001,0.043,0.004\\n\\t\\tc0.004-0.002,0.016-0.002,0.028-0.002c0.424,0.026,0.79,0.205,1.055,0.506l10.25,11.643c0.182,0.207,0.162,0.524-0.045,0.706\\n\\t\\tC23.239,13.2,23.121,13.244,23,13.244c-0.144,0-0.28-0.062-0.375-0.169L12.5,1.573v21.671C12.5,23.52,12.275,23.744,12,23.744z\"\n }));\n};\nvar Icon$1a = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$18, null));\n};\nvar SvgArrowUp = Icon$1a;\nvar MemoSvgArrowUp = /*#__PURE__*/React.memo(SvgArrowUp);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$17 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.504 24a.5.5 0 010-1H1v-4c0-.552.449-1 1-1h2c.551 0 1 .448 1 1v4h2v-9c0-.552.449-1 1-1h2c.551 0 1 .448 1 1v9h2v-7a1 1 0 011-1h2a1 1 0 011 1v7h2V9c0-.551.448-1 1-1h2c.552 0 1 .449 1 1v14h.504a.5.5 0 010 1h-23zM22 23V9h-2v14h2zm-6 0v-7h-2v7h2zm-6 0v-9H8v9h2zm-6 0v-4H2v4h2z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.004 13.5c-1.103 0-2-.897-2-2s.897-2 2-2c.42 0 .827.133 1.166.378l3.028-2.524a1.973 1.973 0 01-.194-.854c0-1.103.897-2 2-2a2.002 2.002 0 011.995 2.138l2.328.776a1.988 1.988 0 012.556-.708l3.31-3.861A1.996 1.996 0 0121.004 0c1.103 0 2 .897 2 2s-.897 2-2 2c-.42 0-.824-.132-1.163-.375l-3.199 3.732c.235.335.362.734.362 1.143 0 1.103-.897 2-2 2a2.002 2.002 0 01-1.995-2.139l-2.328-.776a1.991 1.991 0 01-2.843.537L4.81 10.646c.127.267.194.558.194.854 0 1.103-.897 2-2 2zm0-3c-.551 0-1 .449-1 1s.449 1 1 1 1-.449 1-1-.449-1-1-1zm12-3a1.001 1.001 0 000 2 1.001 1.001 0 000-2zm-6-2c-.551 0-1 .449-1 1s.449 1 1 1 1-.449 1-1-.449-1-1-1zm12-4.5a1.001 1.001 0 000 2 1.001 1.001 0 000-2z\"\n }));\n};\nvar Icon$19 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$17, null));\n};\nvar SvgAnalyticsGraphBar = Icon$19;\nvar MemoSvgAnalyticsGraphBar = /*#__PURE__*/React.memo(SvgAnalyticsGraphBar);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$16 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 11c-.552 0-1-.449-1-1V.5a.5.5 0 01.5-.5C19.29 0 24 4.71 24 10.5a.5.5 0 01-.5.5H14zm0-1h8.987A9.492 9.492 0 0014 1.013V10zM20.575 20.071a.5.5 0 01-.354-.146l-6.722-6.718c-.354-.354-.251-.697-.211-.793.041-.098.211-.414.712-.414h9.5a.5.5 0 01.5.499 10.536 10.536 0 01-3.072 7.426.497.497 0 01-.353.146zm-.009-1.216A9.614 9.614 0 0022.988 13h-8.28l5.858 5.855z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5 24C4.71 24 0 19.29 0 13.5S4.71 3 10.5 3c.275 0 .5.229.5.5V13c.01.177.093.371.225.52l6.699 6.698a.5.5 0 010 .708A10.434 10.434 0 0110.5 24zM10 4.013c-4.986.262-9 4.465-9 9.487 0 5.239 4.262 9.5 9.5 9.5a9.452 9.452 0 006.355-2.438L10.5 14.207a1.921 1.921 0 01-.499-1.179L10 4.013z\"\n }));\n};\nvar Icon$18 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$16, null));\n};\nvar SvgAnalyticsPie = Icon$18;\nvar MemoSvgAnalyticsPie = /*#__PURE__*/React.memo(SvgAnalyticsPie);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$15 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5 24.001c-.827 0-1.5-.673-1.5-1.5v-19c0-.827.673-1.5 1.5-1.5H5v-1.5a.5.5 0 011 0v1.5h12v-1.5a.5.5 0 011 0v1.5h3.5c.827 0 1.5.673 1.5 1.5v19c0 .827-.673 1.5-1.5 1.5h-21zm-.5-1.5a.5.5 0 00.5.5h21a.5.5 0 00.5-.5v-14.5H1v14.5zm22-15.5v-3.5a.5.5 0 00-.5-.5H19v2.5a.5.5 0 01-1 0v-2.5H6v2.5a.5.5 0 01-1 0v-2.5H1.5a.5.5 0 00-.5.5v3.5h22z\"\n }));\n};\nvar Icon$17 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$15, null));\n};\nvar SvgCalendar = Icon$17;\nvar MemoSvgCalendar = /*#__PURE__*/React.memo(SvgCalendar);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$14 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m14,10.5c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.28-1.28c.2-.2.51-.2.71,0s.2.51,0,.71l-1.28,1.28c-.1.1-.23.15-.35.15Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.01,7.5c-.07,0-.13-.01-.19-.04-.06-.02-.12-.06-.16-.11-.05-.04-.09-.1-.11-.16-.03-.06-.04-.13-.04-.19,0-.07,0-.13.04-.19.02-.07.06-.12.11-.17.04-.04.1-.08.16-.1.18-.08.4-.03.54.1.1.1.15.22.15.36,0,.06,0,.13-.04.19-.02.06-.06.12-.11.16-.09.1-.22.15-.35.15Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18.3,6.2c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71l1.01-1.01c.2-.2.51-.2.71,0s.2.51,0,.71l-1.01,1.01c-.1.1-.23.15-.35.15Z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"4.94\",\n y: \"11.5\",\n width: \"4.24\",\n height: \"1\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"14.82\",\n y: \"11.5\",\n width: \"4.24\",\n height: \"1\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"6.85\",\n y: \"3.61\",\n width: \"1\",\n height: \"7.49\",\n transform: \"translate(-3.04 7.35) rotate(-45)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"16.15\",\n y: \"12.9\",\n width: \"1\",\n height: \"7.49\",\n transform: \"translate(-6.89 16.65) rotate(-45)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"11.5\",\n y: \"14.82\",\n width: \"1\",\n height: \"4.24\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"11.5\",\n y: \"4.93\",\n width: \"1\",\n height: \"4.25\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.77,5.57c-.99,0-1.8-.81-1.8-1.8s.81-1.8,1.8-1.8,1.8.81,1.8,1.8-.81,1.8-1.8,1.8Zm0-2.59c-.44,0-.8.36-.8.8s.36.8.8.8.8-.36.8-.8-.36-.8-.8-.8Z\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"3.61\",\n y: \"16.15\",\n width: \"7.49\",\n height: \"1\",\n transform: \"translate(-9.62 10.07) rotate(-45)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,15.3c-1.82,0-3.3-1.48-3.3-3.3s1.48-3.3,3.3-3.3,3.3,1.48,3.3,3.3-1.48,3.3-3.3,3.3Zm0-5.59c-1.27,0-2.3,1.03-2.3,2.3s1.03,2.3,2.3,2.3,2.3-1.03,2.3-2.3-1.03-2.3-2.3-2.3Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,13.48c-.81,0-1.48-.66-1.48-1.48s.66-1.48,1.48-1.48,1.48.66,1.48,1.48-.66,1.48-1.48,1.48Zm0-1.96c-.26,0-.48.21-.48.48s.21.48.48.48.48-.21.48-.48-.21-.48-.48-.48Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,5.41c-1.49,0-2.71-1.21-2.71-2.71S10.51,0,12,0s2.71,1.21,2.71,2.71-1.21,2.71-2.71,2.71Zm0-4.41c-.94,0-1.71.77-1.71,1.71s.77,1.71,1.71,1.71,1.71-.77,1.71-1.71-.77-1.71-1.71-1.71Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m2.71,14.71C1.21,14.71,0,13.49,0,12s1.21-2.71,2.71-2.71,2.71,1.21,2.71,2.71-1.21,2.71-2.71,2.71Zm0-4.41c-.94,0-1.71.77-1.71,1.71s.77,1.71,1.71,1.71,1.71-.77,1.71-1.71-.77-1.71-1.71-1.71Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.29,14.71c-1.49,0-2.71-1.21-2.71-2.71s1.21-2.71,2.71-2.71,2.71,1.21,2.71,2.71-1.21,2.71-2.71,2.71Zm0-4.41c-.94,0-1.71.77-1.71,1.71s.77,1.71,1.71,1.71,1.71-.77,1.71-1.71-.77-1.71-1.71-1.71Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,24c-1.49,0-2.71-1.21-2.71-2.71s1.21-2.71,2.71-2.71,2.71,1.21,2.71,2.71-1.21,2.71-2.71,2.71Zm0-4.41c-.94,0-1.71.77-1.71,1.71s.77,1.71,1.71,1.71,1.71-.77,1.71-1.71-.77-1.71-1.71-1.71Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.77,22.03c-.99,0-1.8-.81-1.8-1.8s.81-1.8,1.8-1.8,1.8.81,1.8,1.8-.81,1.8-1.8,1.8Zm0-2.59c-.44,0-.8.36-.8.8s.36.8.8.8.8-.36.8-.8-.36-.8-.8-.8Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m20.23,5.57c-.99,0-1.8-.81-1.8-1.8s.81-1.8,1.8-1.8,1.8.81,1.8,1.8-.81,1.8-1.8,1.8Zm0-2.59c-.44,0-.8.36-.8.8s.36.8.8.8.8-.36.8-.8-.36-.8-.8-.8Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m20.23,22.03c-.99,0-1.8-.81-1.8-1.8s.81-1.8,1.8-1.8,1.8.81,1.8,1.8-.81,1.8-1.8,1.8Zm0-2.59c-.44,0-.8.36-.8.8s.36.8.8.8.8-.36.8-.8-.36-.8-.8-.8Z\"\n }));\n};\nvar Icon$16 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$14, null));\n};\nvar SvgCalibrate = Icon$16;\nvar MemoSvgCalibrate = /*#__PURE__*/React.memo(SvgCalibrate);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$13 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 14 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.333.437a1 1 0 01.23 1.395l-8.25 11.5a1 1 0 01-1.52.125l-3.25-3.25a1 1 0 011.414-1.415l2.417 2.417L11.938.667a1 1 0 011.395-.23z\"\n }));\n};\nvar Icon$15 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$13, null));\n};\nvar SvgCheck = Icon$15;\nvar MemoSvgCheck = /*#__PURE__*/React.memo(SvgCheck);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$12 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.04 18.867c-.286 0-.559-.123-.749-.336L.167 5.957a.499.499 0 11.749-.662l11.125 12.573L23.167 5.295a.501.501 0 01.706-.044.5.5 0 01.043.706L12.79 18.531a1.006 1.006 0 01-.75.336z\"\n }));\n};\nvar Icon$14 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$12, null));\n};\nvar SvgChevronDown = Icon$14;\nvar MemoSvgChevronDown = /*#__PURE__*/React.memo(SvgChevronDown);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$11 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.401 24a.497.497 0 01-.331-.125L5.495 12.748a1.002 1.002 0 01-.001-1.496L18.069.125a.502.502 0 01.707.044.5.5 0 01-.043.705L6.157 12l12.575 11.125a.501.501 0 01-.331.875z\"\n }));\n};\nvar Icon$13 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$11, null));\n};\nvar SvgChevronLeft = Icon$13;\nvar MemoSvgChevronLeft = /*#__PURE__*/React.memo(SvgChevronLeft);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$10 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.649 24a.5.5 0 01-.331-.874L17.893 12 5.318.875a.501.501 0 01.662-.75l12.576 11.126a1.003 1.003 0 01.001 1.496L5.98 23.875a.5.5 0 01-.331.125z\"\n }));\n};\nvar Icon$12 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$10, null));\n};\nvar SvgChevronRight = Icon$12;\nvar MemoSvgChevronRight = /*#__PURE__*/React.memo(SvgChevronRight);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$$ = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.535 18.873a.5.5 0 01-.375-.831L11.286 5.469a.998.998 0 011.498 0L23.91 18.042a.501.501 0 01-.374.831.5.5 0 01-.374-.168L12.035 6.131.91 18.705a.502.502 0 01-.375.168z\"\n }));\n};\nvar Icon$11 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$$, null));\n};\nvar SvgChevronUp = Icon$11;\nvar MemoSvgChevronUp = /*#__PURE__*/React.memo(SvgChevronUp);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$_ = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 21.5a.5.5 0 010-1c4.808 0 8.917-3.476 9.815-8.099a5.451 5.451 0 01-4.315 2.097c-3.033 0-5.5-2.467-5.5-5.5s2.467-5.5 5.5-5.5 5.5 2.467 5.5 5.5V10.5c0 6.065-4.935 11-11 11zm5.5-17.002c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5 4.5-2.019 4.5-4.5-2.019-4.5-4.5-4.5zM.5 21.5a.5.5 0 010-1c4.808 0 8.917-3.476 9.815-8.099A5.45 5.45 0 016 14.498c-3.033 0-5.5-2.467-5.5-5.5s2.467-5.5 5.5-5.5 5.5 2.467 5.5 5.5V10.5c0 6.065-4.935 11-11 11zM6 4.498c-2.481 0-4.5 2.019-4.5 4.5s2.019 4.5 4.5 4.5 4.5-2.019 4.5-4.5-2.019-4.5-4.5-4.5z\"\n }));\n};\nvar Icon$10 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$_, null));\n};\nvar SvgCloseQuote = Icon$10;\nvar MemoSvgCloseQuote = /*#__PURE__*/React.memo(SvgCloseQuote);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$Z = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.5 23.999a.5.5 0 01-.354-.146L12 12.706.854 23.853a.5.5 0 11-.708-.707L11.292 12 .147.853A.5.5 0 01.854.145L12 11.292 23.147.146a.5.5 0 11.708.707L12.707 11.999l11.146 11.146a.5.5 0 01-.353.854z\"\n }));\n};\nvar Icon$$ = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$Z, null));\n};\nvar SvgClose = Icon$$;\nvar MemoSvgClose = /*#__PURE__*/React.memo(SvgClose);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$Y = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.498,19c-0.827,0-1.5-0.673-1.5-1.5v-16c0-0.827,0.673-1.5,1.5-1.5h15c0.827,0,1.5,0.673,1.5,1.5v10\\n\\t\\tc0,0.276-0.224,0.5-0.5,0.5s-0.5-0.224-0.5-0.5v-10c0-0.276-0.224-0.5-0.5-0.5h-15c-0.276,0-0.5,0.224-0.5,0.5v16\\n\\t\\tc0,0.276,0.224,0.5,0.5,0.5h9.5c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H1.498z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.498,24c-0.134,0-0.259-0.052-0.354-0.147c-0.128-0.128-0.177-0.316-0.127-0.491l1.2-4.199\\n\\t\\tc0.004-0.014,0.013-0.038,0.02-0.051c-0.001,0.001-0.001,0.002-0.001,0.002c0,0,0.004-0.01,0.009-0.021\\n\\t\\tc0.028-0.06,0.06-0.108,0.1-0.147l7.179-7.179C20.018,11.272,20.677,11,21.377,11s1.359,0.273,1.854,0.768\\n\\t\\tc1.022,1.022,1.022,2.685,0,3.707l-7.179,7.179c-0.04,0.04-0.087,0.072-0.145,0.099c-0.008,0.003-0.034,0.014-0.042,0.017\\n\\t\\tc-0.013,0.006-0.014,0.007-0.028,0.011l-4.201,1.2C11.59,23.994,11.544,24,11.498,24z M12.226,22.772l2.517-0.719l-1.798-1.798\\n\\t\\tL12.226,22.772z M15.698,21.593l5.572-5.572l-2.293-2.293L13.405,19.3L15.698,21.593z M21.977,15.314l0.546-0.546\\n\\t\\tc0.632-0.632,0.632-1.661,0-2.293C22.218,12.169,21.811,12,21.377,12s-0.841,0.168-1.146,0.474l-0.546,0.546L21.977,15.314z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.998,5c-0.276,0-0.5-0.224-0.5-0.5S5.722,4,5.998,4h7c0.276,0,0.5,0.224,0.5,0.5S13.274,5,12.998,5H5.998z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.998,8c-0.276,0-0.5-0.224-0.5-0.5S3.722,7,3.998,7h9c0.276,0,0.5,0.224,0.5,0.5S13.274,8,12.998,8H3.998z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.998,11c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5h9c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H3.998z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.998,14c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5h6.5c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H3.998z\"\n }));\n};\nvar Icon$_ = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$Y, null));\n};\nvar SvgContentPaperEdit = Icon$_;\nvar MemoSvgContentPaperEdit = /*#__PURE__*/React.memo(SvgContentPaperEdit);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$X = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5 24C.673 24 0 23.327 0 22.5v-21C0 .673.673 0 1.5 0h21c.827 0 1.5.673 1.5 1.5v21c0 .827-.673 1.5-1.5 1.5h-21zm0-23a.5.5 0 00-.5.5v21a.5.5 0 00.5.5h21a.5.5 0 00.5-.5v-21a.5.5 0 00-.5-.5h-21z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 20a.5.5 0 01-.5-.5v-2.051c-1.155-.234-2-1.25-2-2.449s.845-2.215 2-2.449V4.5a.5.5 0 011 0v8.051c1.155.234 2 1.25 2 2.449s-.845 2.215-2 2.449V19.5a.5.5 0 01-.5.5zm0-6.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5zM6.5 20a.5.5 0 01-.5-.5v-7.051c-1.155-.234-2-1.25-2-2.449s.845-2.215 2-2.449V4.5a.5.5 0 011 0v3.051c1.155.234 2 1.25 2 2.449s-.845 2.215-2 2.449V19.5a.5.5 0 01-.5.5zm0-11.5C5.673 8.5 5 9.173 5 10s.673 1.5 1.5 1.5S8 10.827 8 10s-.673-1.5-1.5-1.5zM17.5 20a.5.5 0 01-.5-.5v-7.051c-1.155-.234-2-1.25-2-2.449s.845-2.215 2-2.449V4.5a.5.5 0 011 0v3.051c1.155.234 2 1.25 2 2.449s-.845 2.215-2 2.449V19.5a.5.5 0 01-.5.5zm0-11.5c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5S19 10.827 19 10s-.673-1.5-1.5-1.5z\"\n }));\n};\nvar Icon$Z = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$X, null));\n};\nvar SvgControls = Icon$Z;\nvar MemoSvgControls = /*#__PURE__*/React.memo(SvgControls);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$W = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5,22C0.673,22,0,21.327,0,20.5v-16C0,3.673,0.673,3,1.5,3h1.586C3.295,2.41,3.86,2,4.5,2h2c0,0,0-0.001,0-0.001\\n\\t\\tc0-1.103,0.897-2,2-2s2,0.897,2,2c0,0,0,0.001,0,0.001h2c0.64,0,1.205,0.41,1.414,1H15.5C16.327,3,17,3.673,17,4.5V8\\n\\t\\tc0,0.276-0.224,0.5-0.5,0.5S16,8.276,16,8V4.5C16,4.224,15.776,4,15.5,4H14v0.5C14,5.327,13.327,6,12.5,6h-8C3.673,6,3,5.327,3,4.5\\n\\t\\tV4H1.5C1.224,4,1,4.224,1,4.5v16C1,20.776,1.224,21,1.5,21h8c0.276,0,0.5,0.224,0.5,0.5S9.776,22,9.5,22H1.5z M4.5,3\\n\\t\\tC4.224,3,4,3.224,4,3.5v1C4,4.776,4.224,5,4.5,5h8C12.776,5,13,4.776,13,4.5v-1C13,3.224,12.776,3,12.5,3h-2.271\\n\\t\\tC9.873,3.612,9.211,3.999,8.5,3.999S7.127,3.612,6.771,3H4.5z M8.5,0.999c-0.551,0-1,0.449-1,1s0.449,1,1,1s1-0.449,1-1\\n\\t\\tS9.051,0.999,8.5,0.999z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5,24c-0.827,0-1.5-0.673-1.5-1.5V11c0-0.827,0.673-1.5,1.5-1.5h7.086c0.401,0,0.777,0.156,1.061,0.439l1.914,1.914\\n\\t\\tC22.84,12.133,23,12.519,23,12.914V22.5c0,0.827-0.673,1.5-1.5,1.5H12.5z M12.5,10.5c-0.276,0-0.5,0.224-0.5,0.5v11.5\\n\\t\\tc0,0.276,0.224,0.5,0.5,0.5h9c0.276,0,0.5-0.224,0.5-0.5v-9.586c0-0.132-0.053-0.26-0.146-0.353l-1.914-1.914\\n\\t\\tc-0.094-0.094-0.22-0.146-0.354-0.146H12.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5,14.999c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5h5c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H14.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5,17.999c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5h5c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H14.5z\"\n })));\n};\nvar Icon$Y = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$W, null));\n};\nvar SvgCopyPaste = Icon$Y;\nvar MemoSvgCopyPaste = /*#__PURE__*/React.memo(SvgCopyPaste);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$V = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.812 18.75a.5.5 0 010-1h5.833l-6.108-6.922a.536.536 0 00-.738-.054l-4.461 3.717a1.55 1.55 0 01-.98.352c-.434 0-.851-.185-1.143-.507L.876 6.082a.5.5 0 11.748-.664l7.336 8.25a.537.537 0 00.741.052l4.46-3.717a1.537 1.537 0 012.122.16l5.966 6.762v-4.654a.5.5 0 011 0v5.979c0 .015-.001.03-.004.045-.003.024-.008.042-.01.052a.483.483 0 01-.033.112l-.015.028a.497.497 0 01-.437.263h-6.938z\"\n }));\n};\nvar Icon$X = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$V, null));\n};\nvar SvgDataDecrease = Icon$X;\nvar MemoSvgDataDecrease = /*#__PURE__*/React.memo(SvgDataDecrease);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$U = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"title\", null, \"data-file-bars-search\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5,24C0.673,24,0,23.327,0,22.5v-21C0,0.673,0.673,0,1.5,0h13.29c0.398,0,0.784,0.16,1.064,0.439l3.7,3.707\\n c0.283,0.283,0.439,0.66,0.439,1.06V9.5c0,0.276-0.224,0.5-0.5,0.5s-0.5-0.224-0.5-0.5V5.207c0-0.133-0.052-0.259-0.146-0.354\\n l-3.7-3.707C15.053,1.053,14.924,1,14.792,1H1.5C1.224,1,1,1.224,1,1.5v21C1,22.776,1.224,23,1.5,23h11c0.276,0,0.5,0.224,0.5,0.5\\n S12.776,24,12.5,24H1.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.497,16c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5H4v-4c0-0.551,0.449-1,1-1h1c0.551,0,1,0.449,1,1v4h1V8\\n c0-0.551,0.449-1,1-1h1c0.551,0,1,0.449,1,1v4.5c0,0.276-0.224,0.5-0.5,0.5S10,12.776,10,12.5V8H9v7h0.497\\n c0.276,0,0.5,0.224,0.5,0.5S9.773,16,9.497,16H3.497z M6,15v-4H5l0,4H6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.497,24c-0.134,0-0.259-0.052-0.354-0.146l-2.938-2.938c-0.9,0.738-2.02,1.142-3.18,1.142\\n c-2.773,0-5.029-2.256-5.029-5.029S14.253,12,17.026,12s5.029,2.256,5.029,5.029c0,1.16-0.404,2.28-1.142,3.179l2.938,2.938\\n c0.094,0.094,0.146,0.22,0.146,0.354s-0.052,0.259-0.146,0.354S23.63,24,23.497,24z M17.026,13c-2.222,0-4.029,1.807-4.029,4.029\\n s1.807,4.029,4.029,4.029s4.029-1.807,4.029-4.029S19.247,13,17.026,13z\"\n })));\n};\nvar DataFileBarsSearch = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$U, null));\n};\nvar SvgAdd = DataFileBarsSearch;\nvar MemoSvgAdd = /*#__PURE__*/React.memo(SvgAdd);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$T = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.25 18.75a.5.5 0 01-.374-.833l7.336-8.25a1.542 1.542 0 012.122-.161l4.468 3.723a.538.538 0 00.738-.059l6.103-6.919h-5.83a.5.5 0 010-1h6.938c.023 0 .068.007.09.013a.343.343 0 01.086.02.47.47 0 01.094.051c.002 0 .032.015.062.042l.026.027a.408.408 0 01.051.068c.012.016.03.04.046.074.016.035.022.066.026.083a.64.64 0 01.02.123v5.979a.5.5 0 01-1 0V7.073l-5.963 6.761a1.544 1.544 0 01-1.148.515c-.353 0-.699-.124-.974-.349L9.7 10.277a.54.54 0 00-.741.059l-7.333 8.246a.507.507 0 01-.376.168z\"\n }));\n};\nvar Icon$W = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$T, null));\n};\nvar SvgDataIncrease = Icon$W;\nvar MemoSvgDataIncrease = /*#__PURE__*/React.memo(SvgDataIncrease);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$S = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 24c-.827 0-1.5-.673-1.5-1.5V4H.5a.5.5 0 010-1H7V1.5C7 .673 7.673 0 8.5 0h7c.827 0 1.5.673 1.5 1.5V3h6.5a.5.5 0 010 1H21v18.5c0 .827-.673 1.5-1.5 1.5h-15zM4 22.5a.5.5 0 00.5.5h15a.5.5 0 00.5-.5V4H4v18.5zM16 3V1.5a.5.5 0 00-.5-.5h-7a.5.5 0 00-.5.5V3h8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 19.5A.5.5 0 017 19V7a.5.5 0 011 0v12a.5.5 0 01-.5.5zM12 19.5a.5.5 0 01-.5-.5V7a.5.5 0 011 0v12a.5.5 0 01-.5.5zM16.5 19.5a.5.5 0 01-.5-.5V7a.5.5 0 011 0v12a.5.5 0 01-.5.5z\"\n }));\n};\nvar Icon$V = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$S, null));\n};\nvar SvgDelete = Icon$V;\nvar MemoSvgDelete = /*#__PURE__*/React.memo(SvgDelete);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$R = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.869,23.5c-1.858,0-3.369-1.511-3.369-3.369v-1.913c0-0.276,0.224-0.5,0.5-0.5s0.5,0.224,0.5,0.5v1.913\\n c0,1.306,1.063,2.369,2.369,2.369h16.262c1.306,0,2.368-1.063,2.369-2.369v-1.913c0-0.276,0.224-0.5,0.5-0.5s0.5,0.224,0.5,0.5\\n v1.913c0,1.857-1.512,3.368-3.369,3.369H3.869z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,18.608c-0.066,0-0.13-0.013-0.192-0.039c-0.061-0.025-0.116-0.062-0.163-0.109l-6.999-6.999\\n C4.552,11.367,4.5,11.242,4.5,11.108s0.052-0.259,0.146-0.354S4.866,10.608,5,10.608s0.259,0.052,0.354,0.146l6.146,6.146V1\\n c0-0.276,0.224-0.5,0.5-0.5c0.276,0,0.5,0.224,0.5,0.5v15.901l6.146-6.146c0.094-0.094,0.22-0.146,0.354-0.146\\n s0.259,0.052,0.354,0.146s0.146,0.22,0.146,0.354s-0.052,0.259-0.146,0.354l-7,7c-0.046,0.046-0.101,0.083-0.163,0.109\\n C12.13,18.595,12.066,18.608,12,18.608z\"\n })));\n};\nvar Icon$U = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$R, null));\n};\nvar SvgDownload = Icon$U;\nvar MemoSvgDownload = /*#__PURE__*/React.memo(SvgDownload);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$Q = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,23.984c-6.617,0-12-5.383-12-12s5.383-12,12-12c3.2,0,6.212,1.25,8.481,3.518c0.009,0.006,0.027,0.025,0.046,0.048\\n C22.767,5.814,24,8.809,24,11.984C24,18.601,18.617,23.984,12,23.984z M12,0.984c-6.065,0-11,4.935-11,11c0,6.066,4.935,11,11,11\\n s11-4.935,11-11c0-2.651-0.95-5.188-2.685-7.19l-0.913,2.281c-0.338,0.845-1.108,1.44-2.011,1.552l-2.129,0.269l0.546,1.09\\n l0.382,0.001c0.552,0,1,0.449,1,1.001c0,0.153-0.036,0.307-0.105,0.445l-1.585,3.172l0.001,2.441c0,0.744-0.328,1.444-0.9,1.92\\n l-1.9,1.58c-0.18,0.147-0.405,0.228-0.637,0.228c-0.297,0-0.576-0.129-0.765-0.354l-1.532-1.838\\n c-0.508-0.612-0.695-1.437-0.501-2.207l0.209-0.835l-0.779-1.557l-1.7-0.001c-1.112,0-2.074-0.715-2.395-1.779l-0.667-2.188\\n C3.835,9.686,3.91,9.335,4.133,9.075l1.725-2.022c0.476-0.558,1.169-0.878,1.901-0.878c0.164,0,0.329,0.016,0.49,0.049l1.3,0.26\\n l3.451,0V5.338c0-0.617-0.37-1.164-0.943-1.393l-0.283-0.113c-0.247-0.098-0.442-0.286-0.548-0.531\\n c-0.106-0.245-0.111-0.517-0.013-0.765c0.084-0.212,0.239-0.39,0.437-0.502l1.688-0.966C12.891,1.012,12.443,0.984,12,0.984z\\n M7.76,7.175c-0.44,0-0.856,0.192-1.142,0.526L4.892,9.726l0.665,2.188c0.193,0.639,0.77,1.069,1.437,1.069h1.701\\n c0.382,0.001,0.724,0.213,0.894,0.554l0.779,1.556c0.107,0.214,0.134,0.459,0.076,0.69l-0.209,0.836\\n c-0.117,0.463-0.005,0.958,0.3,1.324l1.529,1.835l1.896-1.58c0.343-0.286,0.54-0.705,0.54-1.152V14.6\\n c0.001-0.154,0.037-0.306,0.104-0.441l1.586-3.173l-0.382,0.001c-0.382,0-0.724-0.213-0.895-0.554l-0.546-1.09\\n c-0.051-0.104-0.084-0.213-0.097-0.324c-0.033-0.263,0.038-0.525,0.202-0.736s0.4-0.346,0.665-0.379l2.129-0.269\\n c0.542-0.068,1.004-0.425,1.207-0.931L19.556,4c-1.332-1.261-2.955-2.172-4.71-2.643l-2.7,1.545l0.283,0.115\\n C13.383,3.399,14,4.31,14,5.338v1.146c0,0.551-0.448,1-1,1H9.551c-0.067,0-0.132-0.007-0.195-0.019L8.053,7.204\\n C7.957,7.185,7.858,7.175,7.76,7.175z\"\n })));\n};\nvar Icon$T = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$Q, null));\n};\nvar SvgEarth = Icon$T;\nvar MemoSvgEarth = /*#__PURE__*/React.memo(SvgEarth);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$P = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.498 24a.498.498 0 01-.487-.614l1.517-6.465a.494.494 0 01.133-.239l.239-.239a2343716182.845 2343716182.845 0 0013.587-13.59l.015-.014L17.609.732A2.482 2.482 0 0119.376 0c.668 0 1.296.26 1.768.732l2.123 2.121c.472.471.731 1.099.732 1.768 0 .668-.26 1.296-.731 1.768l-.681.681-.021.026a.363.363 0 01-.035.03L21.16 8.497l-.025.03a.254.254 0 01-.034.028L7.587 22.067a.142.142 0 01-.024.025.174.174 0 01-.014.012l-.232.232a.494.494 0 01-.239.133L.611 23.986A.427.427 0 01.498 24zm.671-1.171l5.213-1.223-3.99-3.99-1.223 5.213zm6.046-1.804L20.073 8.169 15.84 3.916 2.974 16.783l4.241 4.242zM20.78 7.462l.719-.719L17.256 2.5l-.708.708 4.232 4.254zm1.426-1.426l.354-.353a1.504 1.504 0 000-2.122L20.438 1.44A1.486 1.486 0 0019.377 1a1.49 1.49 0 00-1.061.44l-.354.354 4.244 4.242z\"\n }));\n};\nvar Icon$S = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$P, null));\n};\nvar SvgEdit = Icon$S;\nvar MemoSvgEdit = /*#__PURE__*/React.memo(SvgEdit);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$O = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.527 23.247a.998.998 0 01-.592-.193L12.001 18.7l-5.937 4.354a1 1 0 01-1.538-1.12l2.393-7.188-5.711-4.734a1 1 0 01.644-1.765h6.795l2.415-6.843c.149-.397.526-.657.94-.657a1.002 1.002 0 01.935.648l2.417 6.852h6.794a1.001 1.001 0 01.65 1.76l-5.715 4.739 2.392 7.186a1.004 1.004 0 01-.948 1.315zM7.82 14.194c.158.13.22.349.155.543l-2.5 7.51 6.23-4.571a.497.497 0 01.592 0l6.23 4.571-2.5-7.51a.504.504 0 01.156-.543l5.973-4.952-7.154.005a.5.5 0 01-.471-.333L12 1.738 9.472 8.914a.5.5 0 01-.471.333H1.852l5.968 4.947z\"\n }));\n};\nvar Icon$R = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$O, null));\n};\nvar SvgFavouriteNo = Icon$R;\nvar MemoSvgFavouriteNo = /*#__PURE__*/React.memo(SvgFavouriteNo);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$N = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.074 1.398a1 1 0 011.872 0l.004.01 2.413 6.842h6.794a1 1 0 01.65 1.76l-.006.005-5.71 4.734 2.392 7.185a1 1 0 01-1.54 1.122l-5.934-4.354-5.941 4.357a1 1 0 01-1.534-1.122v-.003l2.393-7.185L1.21 10.01a1 1 0 01.65-1.76h6.795l2.42-6.852z\"\n }));\n};\nvar Icon$Q = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$N, null));\n};\nvar SvgFavouriteYes = Icon$Q;\nvar MemoSvgFavouriteYes = /*#__PURE__*/React.memo(SvgFavouriteYes);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$M = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.988 24c-.827 0-1.5-.673-1.5-1.5v-9.743L1.779 2.399A1.502 1.502 0 012.98 0h18.019A1.502 1.502 0 0122.2 2.399l-7.712 10.356V21c0 .469-.224.918-.6 1.2l-2 1.5c-.258.194-.578.3-.9.3zM2.98 1a.5.5 0 00-.4.8l7.809 10.493a.498.498 0 01.099.298V22.5a.5.5 0 00.8.4l2-1.5a.504.504 0 00.2-.4v-8.41c0-.107.035-.213.099-.299L21.399 1.8a.501.501 0 00-.4-.8H2.98z\"\n }));\n};\nvar Icon$P = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$M, null));\n};\nvar SvgFilter = Icon$P;\nvar MemoSvgFilter = /*#__PURE__*/React.memo(SvgFilter);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$L = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.499 24a.5.5 0 01-.5-.5V.5a.5.5 0 011 0v1.782l2.577-.793a10.328 10.328 0 018.451 1.075 9.322 9.322 0 007.45 1.025l2.422-.692a1.656 1.656 0 012.104 1.585v13.16c0 .733-.493 1.386-1.198 1.587l-3.052.873a10.332 10.332 0 01-8.249-1.135 9.327 9.327 0 00-7.632-.971L1 18.88v4.62a.502.502 0 01-.501.5zm6.115-7.416c1.913 0 3.785.53 5.413 1.532a9.334 9.334 0 007.45 1.025l3.052-.873a.652.652 0 00.473-.625V4.484a.653.653 0 00-.829-.625l-2.421.692a10.32 10.32 0 01-8.248-1.135 9.323 9.323 0 00-7.632-.971L1 3.328v14.506l2.577-.793a10.321 10.321 0 013.037-.457z\"\n }));\n};\nvar Icon$O = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$L, null));\n};\nvar SvgFlaggedNo = Icon$O;\nvar MemoSvgFlaggedNo = /*#__PURE__*/React.memo(SvgFlaggedNo);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$K = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 25 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 1a.5.5 0 00-1 0v23a.5.5 0 001 0v-4.62l2.872-.883a9.327 9.327 0 017.632.97 10.326 10.326 0 008.248 1.136l3.053-.873a1.65 1.65 0 001.198-1.587V4.983a1.652 1.652 0 00-2.102-1.586H22.4l-2.422.692a9.322 9.322 0 01-7.45-1.025A10.33 10.33 0 004.077 1.99L1.5 2.782V1z\"\n }));\n};\nvar Icon$N = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$K, null));\n};\nvar SvgFlaggedYes = Icon$N;\nvar MemoSvgFlaggedYes = /*#__PURE__*/React.memo(SvgFlaggedYes);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$J = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5 22.5C.673 22.5 0 21.827 0 21V3c0-.827.673-1.5 1.5-1.5H9a1.49 1.49 0 011.341.829l.948 1.894a.497.497 0 00.447.277H15V4c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v.5h1.5c.827 0 1.5.673 1.5 1.5v15c0 .827-.673 1.5-1.5 1.5h-21zm0-20A.5.5 0 001 3v18a.5.5 0 00.5.5h21a.5.5 0 00.5-.5V6a.5.5 0 00-.5-.5H21v7.293c0 .264-.107.522-.294.708a.992.992 0 01-.706.292.992.992 0 01-.708-.293L18 12.207 16.708 13.5A1 1 0 0115 12.793V5.5h-3.264a1.49 1.49 0 01-1.341-.83l-.948-1.893A.497.497 0 009 2.5H1.5zm15 1a.5.5 0 00-.5.5v8.793l1.646-1.646a.5.5 0 01.708-.001L20 12.792V4a.5.5 0 00-.5-.5h-3z\"\n }));\n};\nvar Icon$M = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$J, null));\n};\nvar SvgFolderClosed = Icon$M;\nvar MemoSvgFolderClosed = /*#__PURE__*/React.memo(SvgFolderClosed);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$I = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.1 21.5a1.506 1.506 0 01-1.471-1.2L.029 7.298A1.501 1.501 0 011.499 5.5H7.96c.711 0 1.329.505 1.471 1.2l.278 1.402c.047.23.253.398.49.398H14V8c0-.827.673-1.5 1.5-1.5h3c.827 0 1.5.673 1.5 1.5v.5h2.5a1.501 1.501 0 011.471 1.8l-1.495 9.974a1.517 1.517 0 01-1.475 1.226H4.1zm-2.601-15a.5.5 0 00-.49.6l2.6 13.002c.047.23.253.398.49.398H21a.501.501 0 00.491-.4l1.495-9.974c.06-.295-.111-.56-.385-.615a.432.432 0 00-.088-.01L20 9.5v7.293c0 .264-.107.522-.294.708a.996.996 0 01-1.414-.002L17 16.207 15.707 17.5a1 1 0 01-1.708-.707V9.5h-3.8a1.506 1.506 0 01-1.471-1.2L8.45 6.897a.5.5 0 00-.489-.397H1.499zm14.001 1a.5.5 0 00-.5.5v8.793l1.646-1.646a.5.5 0 01.708-.001L19 16.792V8a.5.5 0 00-.5-.5h-3z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5 7.5A.5.5 0 0122 7V4a.5.5 0 00-.5-.5h-18c-.276 0-.5.224-.5.5a.5.5 0 01-1 0c0-.827.673-1.5 1.5-1.5h18c.827 0 1.5.673 1.5 1.5v3a.5.5 0 01-.5.5z\"\n }));\n};\nvar Icon$L = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$I, null));\n};\nvar SvgFolderOpen = Icon$L;\nvar MemoSvgFolderOpen = /*#__PURE__*/React.memo(SvgFolderOpen);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$H = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m20.35,13.44c-.91,0-1.64-.74-1.64-1.64s.74-1.64,1.64-1.64,1.64.74,1.64,1.64-.74,1.64-1.64,1.64Zm0-2.29c-.35,0-.64.29-.64.64s.29.64.64.64.64-.29.64-.64-.29-.64-.64-.64Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,8.47c-.91,0-1.64-.74-1.64-1.64s.74-1.64,1.64-1.64,1.64.74,1.64,1.64-.74,1.64-1.64,1.64Zm0-2.29c-.35,0-.64.29-.64.64s.29.64.64.64.64-.29.64-.64-.29-.64-.64-.64Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.93,21.79c-.91,0-1.64-.74-1.64-1.64s.74-1.64,1.64-1.64,1.64.74,1.64,1.64-.74,1.64-1.64,1.64Zm0-2.29c-.35,0-.64.29-.64.64s.29.64.64.64.64-.29.64-.64-.29-.64-.64-.64Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,14.58c-.69,0-1.34-.27-1.82-.75s-.75-1.13-.75-1.82c0-.2.02-.39.07-.58.06-.27.33-.44.6-.38.27.06.44.33.38.6-.03.12-.04.24-.04.36,0,.42.16.82.46,1.12.6.6,1.63.6,2.23,0,.3-.3.46-.69.46-1.12s-.16-.82-.46-1.12c-.6-.6-1.63-.6-2.23,0-.2.2-.51.19-.71,0-.2-.2-.2-.51,0-.71.97-.97,2.67-.97,3.65,0,.49.49.75,1.13.75,1.82s-.27,1.34-.75,1.82-1.13.75-1.82.75Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,17.67c-1.51,0-2.94-.59-4.01-1.66-1.07-1.07-1.66-2.49-1.66-4.01,0-.67.12-1.33.35-1.96.1-.26.39-.39.64-.3.26.1.39.38.3.64-.19.52-.29,1.06-.29,1.62,0,1.25.49,2.42,1.37,3.3.88.88,2.05,1.37,3.3,1.37s2.42-.49,3.3-1.37,1.37-2.05,1.37-3.3-.49-2.42-1.37-3.3c-.63-.63-1.41-1.06-2.28-1.25-.27-.06-.44-.33-.38-.6.06-.27.32-.44.6-.38,1.05.23,2,.76,2.76,1.52,1.07,1.07,1.66,2.49,1.66,4.01s-.59,2.94-1.66,4.01-2.49,1.66-4.01,1.66Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m8.35,8.85c-.13,0-.26-.05-.35-.15-.2-.2-.2-.51,0-.71.76-.76,1.72-1.29,2.76-1.52.27-.06.54.11.6.38.06.27-.11.54-.38.6-.86.19-1.65.63-2.27,1.25-.1.1-.23.15-.35.15Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,20.85c-2.37,0-4.59-.92-6.26-2.59-1.67-1.67-2.59-3.9-2.59-6.26,0-1.15.22-2.27.65-3.33.1-.26.4-.38.65-.28.26.1.38.4.28.65-.38.94-.57,1.93-.57,2.95,0,2.1.82,4.07,2.3,5.55,1.48,1.48,3.45,2.3,5.55,2.3s4.07-.82,5.55-2.3c1.26-1.26,2.05-2.91,2.25-4.67.03-.27.28-.47.55-.44.27.03.47.28.44.55-.22,1.98-1.12,3.85-2.54,5.27-1.67,1.67-3.9,2.59-6.26,2.59Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m20.24,11.15c-.24,0-.45-.17-.49-.42-.26-1.63-1.02-3.11-2.2-4.29-1.22-1.22-2.77-1.99-4.48-2.23-.71-.1-1.45-.1-2.16,0-1.7.24-3.24,1.01-4.46,2.23-.2.2-.51.2-.71,0s-.2-.51,0-.71c1.38-1.38,3.12-2.24,5.03-2.51.81-.11,1.63-.11,2.44,0,1.9.26,3.69,1.15,5.05,2.51,1.32,1.32,2.18,2.99,2.48,4.83.04.27-.14.53-.41.57-.03,0-.05,0-.08,0Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.14,19.83c-.14,0-.29-.06-.39-.18-1.77-2.14-2.75-4.86-2.75-7.64,0-1.62.32-3.19.94-4.66.11-.25.4-.37.65-.27.25.11.37.4.27.65-.57,1.35-.86,2.79-.86,4.28,0,2.55.9,5.04,2.52,7.01.18.21.15.53-.07.7-.09.08-.21.12-.32.12Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,24c-2.75,0-5.43-.95-7.56-2.68-.21-.17-.25-.49-.07-.7.17-.21.49-.25.7-.07,1.95,1.58,4.41,2.46,6.93,2.46,2.94,0,5.7-1.14,7.78-3.22s3.22-4.84,3.22-7.78-1.14-5.7-3.22-7.78-4.84-3.22-7.78-3.22-5.7,1.14-7.78,3.22c-.2.2-.51.2-.71,0s-.2-.51,0-.71C5.78,1.25,8.79,0,12,0s6.22,1.25,8.49,3.51,3.51,5.28,3.51,8.49-1.25,6.22-3.51,8.49-5.28,3.51-8.49,3.51Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,12.5c-.13,0-.26-.05-.35-.15L2.12,2.83c-.2-.2-.2-.51,0-.71s.51-.2.71,0l9.53,9.53c.2.2.2.51,0,.71-.1.1-.23.15-.35.15Z\"\n }));\n};\nvar Icon$K = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$H, null));\n};\nvar SvgIntelligence = Icon$K;\nvar MemoSvgIntelligence = /*#__PURE__*/React.memo(SvgIntelligence);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$G = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2zM12 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2zM21 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2z\"\n }));\n};\nvar Icon$J = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$G, null));\n};\nvar SvgKebabHorizontal = Icon$J;\nvar MemoSvgKebabHorizontal = /*#__PURE__*/React.memo(SvgKebabHorizontal);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$F = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 6c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2zM12 15c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2zM12 24c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2z\"\n }));\n};\nvar Icon$I = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$F, null));\n};\nvar SvgKebabVertical = Icon$I;\nvar MemoSvgKebabVertical = /*#__PURE__*/React.memo(SvgKebabVertical);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$E = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"title\", null, \"legal-hammer\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.997,24.001c-0.551,0-1-0.448-1-1v-1.5c0-0.827,0.673-1.5,1.5-1.5h7c0.827,0,1.5,0.673,1.5,1.5v1.5c0,0.552-0.449,1-1,1\\n H0.997z M1.497,21.001c-0.276,0-0.5,0.224-0.5,0.5v1.5h8v-1.5c0-0.276-0.224-0.5-0.5-0.5H1.497z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.963,18.581c-0.521,0-1.015-0.199-1.389-0.56l-6.036-6.705l-1.408,1.408c0.517,0.688,0.463,1.667-0.16,2.29\\n c-0.33,0.33-0.77,0.512-1.238,0.512c-0.468,0-0.907-0.182-1.237-0.512l-4.6-4.6c-0.682-0.682-0.682-1.793,0-2.475\\n c0.33-0.33,0.77-0.512,1.238-0.512c0.383,0,0.747,0.122,1.048,0.347l4.975-4.975c-0.226-0.301-0.348-0.665-0.348-1.048\\n c0-0.468,0.182-0.907,0.513-1.237c0.33-0.33,0.769-0.512,1.237-0.512s0.907,0.182,1.238,0.512l4.6,4.6\\n c0.331,0.332,0.512,0.772,0.511,1.24c-0.001,0.468-0.184,0.907-0.516,1.236c-0.33,0.329-0.768,0.51-1.235,0.51\\n c-0.386-0.001-0.75-0.124-1.051-0.35l-1.407,1.407l6.68,6.012c0.772,0.798,0.778,2.024,0.025,2.803\\n C23.021,18.365,22.511,18.581,21.963,18.581z M21.292,17.326c0.168,0.161,0.409,0.257,0.666,0.257c0.276,0,0.533-0.109,0.724-0.306\\n c0.376-0.39,0.376-1,0-1.39l-6.694-6.023l-0.743,0.743L21.292,17.326z M7.132,8.426c-0.201,0-0.389,0.078-0.531,0.219\\n c-0.292,0.292-0.292,0.768,0,1.061l4.6,4.6c0.141,0.141,0.33,0.219,0.531,0.219c0.201,0,0.389-0.078,0.53-0.219\\n c0.292-0.292,0.292-0.769,0-1.061l-4.6-4.6C7.521,8.504,7.333,8.426,7.132,8.426z M12.436,12.003l4.949-4.949l-3.536-3.536\\n L8.9,8.467L12.436,12.003z M18.622,6.877c0.142,0.143,0.331,0.221,0.531,0.222c0.201,0,0.389-0.078,0.531-0.219\\n c0.142-0.141,0.22-0.33,0.221-0.53c0-0.2-0.077-0.389-0.219-0.531L15.087,1.22c-0.141-0.141-0.33-0.219-0.531-0.219\\n s-0.389,0.078-0.531,0.219c-0.142,0.142-0.22,0.33-0.22,0.53c0,0.2,0.078,0.389,0.22,0.531c0,0,0.172,0.171,0.177,0.176L18.446,6.7\\n c0.004,0.004,0.009,0.009,0.013,0.014L18.622,6.877z\"\n })));\n};\nvar Icon$H = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$E, null));\n};\nvar SvgLegalHammer = Icon$H;\nvar MemoSvgLegalHammer = /*#__PURE__*/React.memo(SvgLegalHammer);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$D = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 20c-.827 0-1.5-.673-1.5-1.5v-10C4 7.673 4.673 7 5.5 7h5a.5.5 0 010 1h-5a.5.5 0 00-.5.5v10a.5.5 0 00.5.5h10a.5.5 0 00.5-.5v-4.97a.5.5 0 011 0v4.97c0 .827-.673 1.5-1.5 1.5h-10z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5 17.014a.5.5 0 01-.354-.854L18.293 5.014H13.5a.5.5 0 010-1h6a.5.5 0 01.5.5v6a.5.5 0 01-1 0V5.721L7.854 16.867a.496.496 0 01-.354.147z\"\n }));\n};\nvar Icon$G = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$D, null));\n};\nvar SvgLinkOut = Icon$G;\nvar MemoSvgLinkOut = /*#__PURE__*/React.memo(SvgLinkOut);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$C = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.5 6.998c-1.379 0-2.5-1.121-2.5-2.5s1.121-2.5 2.5-2.5S5 3.12 5 4.498s-1.121 2.5-2.5 2.5zm0-4c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5S4 5.325 4 4.498s-.673-1.5-1.5-1.5zM8.5 4.998a.5.5 0 010-1h15a.5.5 0 010 1h-15zM2.5 14.998a2.503 2.503 0 01-2.5-2.5c0-1.379 1.121-2.5 2.5-2.5S5 11.12 5 12.498s-1.121 2.5-2.5 2.5zm0-4c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5zM8.5 12.998a.5.5 0 010-1h15a.5.5 0 010 1h-15zM2.5 22.998c-1.379 0-2.5-1.122-2.5-2.5s1.121-2.5 2.5-2.5S5 19.12 5 20.498s-1.121 2.5-2.5 2.5zm0-4c-.827 0-1.5.673-1.5 1.5s.673 1.5 1.5 1.5 1.5-.673 1.5-1.5-.673-1.5-1.5-1.5zM8.5 20.998a.5.5 0 010-1h15a.5.5 0 010 1h-15z\"\n }));\n};\nvar Icon$F = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$C, null));\n};\nvar SvgListBullets = Icon$F;\nvar MemoSvgListBullets = /*#__PURE__*/React.memo(SvgListBullets);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$B = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5 4.998a.5.5 0 010-1h17a.5.5 0 010 1h-17zM6.5 12.998a.5.5 0 010-1h17a.5.5 0 010 1h-17zM6.5 20.998a.5.5 0 010-1h17a.5.5 0 010 1h-17zM1.46 23a1.505 1.505 0 01-1.443-1.1c-.036-.129-.019-.263.047-.38a.496.496 0 01.435-.254c.224 0 .422.151.482.366A.5.5 0 101.465 21a.5.5 0 010-1 .5.5 0 10-.483-.63.502.502 0 01-.612.353.502.502 0 01-.353-.614 1.504 1.504 0 011.839-1.057 1.496 1.496 0 011.057 1.839 1.511 1.511 0 01-.331.609c.248.276.383.629.382 1.003A1.504 1.504 0 011.463 23H1.46zM.5 15a.503.503 0 01-.391-.813l1.688-2.109A.925.925 0 002 11.5a.5.5 0 00-1 0 .5.5 0 01-1 0 1.501 1.501 0 013 0c0 .435-.15.863-.421 1.203L1.54 14h.96a.5.5 0 010 1h-2zM1.468 6.998H.499a.5.5 0 010-1H1V3H.5a.5.5 0 010-1H1c.551 0 1 .449 1 1v2.998h.5a.5.5 0 010 1h-.97L1.5 7l-.032-.002z\"\n }));\n};\nvar Icon$E = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$B, null));\n};\nvar SvgListNumbers = Icon$E;\nvar MemoSvgListNumbers = /*#__PURE__*/React.memo(SvgListNumbers);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$A = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 15.998c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4zm0-7c-1.654 0-3 1.346-3 3s1.346 3 3 3 3-1.346 3-3-1.346-3-3-3zM14 14.998c-1.654 0-3-1.346-3-3s1.346-3 3-3 3 1.346 3 3-1.346 3-3 3zm0-5c-1.103 0-2 .897-2 2s.897 2 2 2 2-.897 2-2-.897-2-2-2zM22 13.998c-1.103 0-2-.897-2-2s.897-2 2-2 2 .897 2 2-.897 2-2 2zm0-3a1.001 1.001 0 000 2 1 1 0 000-2z\"\n }));\n};\nvar Icon$D = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$A, null));\n};\nvar SvgLoader = Icon$D;\nvar MemoSvgLoader = /*#__PURE__*/React.memo(SvgLoader);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$z = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"title\", null, \"location-target\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,16c-2.206,0-4-1.794-4-4s1.794-4,4-4s4,1.794,4,4S14.206,16,12,16z M12,9c-1.654,0-3,1.346-3,3c0,1.654,1.346,3,3,3\\n c1.654,0,3-1.346,3-3C15,10.346,13.654,9,12,9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,23.5c-0.276,0-0.5-0.224-0.5-0.5v-2.517c-4.291-0.25-7.733-3.692-7.983-7.983H1c-0.276,0-0.5-0.224-0.5-0.5\\n c0-0.276,0.224-0.5,0.5-0.5h2.517c0.25-4.291,3.692-7.733,7.983-7.983V1c0-0.276,0.224-0.5,0.5-0.5c0.276,0,0.5,0.224,0.5,0.5\\n v2.517c4.291,0.25,7.733,3.692,7.983,7.983H23c0.276,0,0.5,0.224,0.5,0.5c0,0.276-0.224,0.5-0.5,0.5h-2.517\\n c-0.25,4.291-3.692,7.733-7.983,7.983V23C12.5,23.276,12.276,23.5,12,23.5z M12,4.5c-4.135,0-7.5,3.365-7.5,7.5s3.365,7.5,7.5,7.5\\n s7.5-3.365,7.5-7.5S16.135,4.5,12,4.5z\"\n })));\n};\nvar Icon$C = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$z, null));\n};\nvar SvgLocationTarget = Icon$C;\nvar MemoSvgLocationTarget = /*#__PURE__*/React.memo(SvgLocationTarget);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$y = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5 23c-1.995 0-3.5-.86-3.5-2v-5.012a1.22 1.22 0 01.025-.232l-4.023-3.126-4.027 3.13c.016.075.024.151.025.227V21c0 1.14-1.505 2-3.5 2S1 22.14 1 21v-5.012c.012-1.133 1.513-1.986 3.5-1.986 1.221 0 2.322.34 2.948.9l3.739-2.906-3.732-2.902C6.829 9.657 5.726 10 4.5 10 2.505 10 1 9.14 1 8V2.991c.009-1.135 1.511-1.99 3.5-1.99s3.491.855 3.5 1.99V8c0 .077-.008.155-.023.234l4.026 3.128 4.021-3.125A1.199 1.199 0 0116 8V2.987c.012-1.133 1.513-1.986 3.5-1.986s3.488.853 3.5 1.987V8c0 1.14-1.505 2-3.5 2-1.224 0-2.326-.342-2.952-.904l-3.73 2.899 3.737 2.904c.627-.558 1.727-.898 2.946-.898 1.986 0 3.488.853 3.5 1.986L23 21c0 1.14-1.505 2-3.5 2zM17 21c0 .398.997 1 2.5 1s2.5-.602 2.5-1v-1.08c-.643.368-1.539.58-2.5.58s-1.857-.212-2.5-.58V21zM2 21c0 .398.997 1 2.5 1S7 21.398 7 21v-1.08c-.643.368-1.539.58-2.5.58s-1.857-.212-2.5-.58V21zm15-2.5c0 .398.997 1 2.5 1s2.5-.602 2.5-1v-1.079c-.643.368-1.539.58-2.5.58s-1.857-.212-2.5-.58V18.5zm-15 0c0 .398.997 1 2.5 1s2.5-.602 2.5-1v-1.079c-.643.368-1.539.58-2.5.58s-1.857-.212-2.5-.58V18.5zm17.5-3.499c-1.503 0-2.5.602-2.5 1s.997 1 2.5 1 2.5-.602 2.5-1-.997-1-2.5-1zm-15 0c-1.503 0-2.5.602-2.5 1s.997 1 2.5 1 2.5-.602 2.5-1-.997-1-2.5-1zM17 8c0 .398.997 1 2.5 1S22 8.398 22 8V6.92c-.643.368-1.539.58-2.5.58s-1.857-.212-2.5-.58V8zM2 8c0 .398.997 1 2.5 1S7 8.398 7 8V6.92c-.643.368-1.539.58-2.5.58S2.643 7.288 2 6.919V8zm15-2.5c0 .398.997 1 2.5 1s2.5-.602 2.5-1V4.42c-.643.368-1.539.58-2.5.58s-1.857-.211-2.5-.58V5.5zm-15 0c0 .398.997 1 2.5 1S7 5.898 7 5.5V4.42c-.643.368-1.539.58-2.5.58S2.643 4.789 2 4.42V5.5zm17.5-3.499c-1.503 0-2.5.602-2.5 1s.997 1 2.5 1 2.5-.602 2.5-1-.997-1-2.5-1zm-15 0c-1.503 0-2.5.602-2.5 1s.997 1 2.5 1 2.5-.602 2.5-1-.997-1-2.5-1z\"\n }));\n};\nvar Icon$B = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$y, null));\n};\nvar SvgMenuConnectData = Icon$B;\nvar MemoSvgMenuConnectData = /*#__PURE__*/React.memo(SvgMenuConnectData);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$x = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.7135 23.99H1.89921C0.849646 23.99 0 23.1404 0 22.0908V1.89921C0 0.849646 0.849646 0 1.89921 0H15.7135C16.763 0 17.6127 0.849646 17.6127 1.89921V8.70637C17.6127 8.98626 17.3928 9.20616 17.1129 9.20616C16.833 9.20616 16.6131 8.98626 16.6131 8.70637V1.89921C16.6131 1.39942 16.2032 0.999583 15.7135 0.999583H1.89921C1.39942 0.999583 0.999583 1.39942 0.999583 1.89921V22.0808C0.999583 22.5806 1.39942 22.9804 1.89921 22.9804H15.7135C16.2132 22.9804 16.6131 22.5706 16.6131 22.0808V18.9221C16.6131 18.6422 16.833 18.4223 17.1129 18.4223C17.3928 18.4223 17.6127 18.6422 17.6127 18.9221V22.0808C17.6127 23.1304 16.763 23.98 15.7135 23.98V23.99Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.77674 15.0637C6.87711 15.0637 6.15741 14.334 6.15741 13.4444C6.15741 12.5548 6.88711 11.8251 7.77674 11.8251C8.66636 11.8251 9.39606 12.5548 9.39606 13.4444C9.39606 14.334 8.66636 15.0637 7.77674 15.0637ZM7.77674 12.8147C7.43688 12.8147 7.15699 13.0945 7.15699 13.4344C7.15699 13.7743 7.43688 14.0541 7.77674 14.0541C8.11659 14.0541 8.39648 13.7743 8.39648 13.4344C8.39648 13.0945 8.11659 12.8147 7.77674 12.8147Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.77676 16.873C5.87755 16.873 4.3382 15.3336 4.3382 13.4344C4.3382 11.5352 5.87755 9.99583 7.77676 9.99583C9.67597 9.99583 11.2153 11.5352 11.2153 13.4344C11.2153 15.3336 9.67597 16.873 7.77676 16.873ZM7.77676 10.9954C6.42733 10.9954 5.33778 12.085 5.33778 13.4344C5.33778 14.7838 6.42733 15.8734 7.77676 15.8734C9.1262 15.8734 10.2157 14.7838 10.2157 13.4344C10.2157 12.085 9.1262 10.9954 7.77676 10.9954Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2719 11.6551C18.8521 11.6551 18.4623 11.4952 18.1724 11.1953C17.5627 10.5856 17.5627 9.596 18.1724 8.98626C18.4623 8.68638 18.8621 8.52645 19.2719 8.52645C19.6918 8.52645 20.0816 8.68638 20.3715 8.98626C20.6614 9.27613 20.8313 9.67597 20.8313 10.0858C20.8313 10.4956 20.6714 10.8955 20.3715 11.1853C20.0816 11.4752 19.6818 11.6451 19.2719 11.6451V11.6551ZM19.2719 9.53603C19.122 9.53603 18.9821 9.596 18.8721 9.70596C18.6522 9.92586 18.6522 10.2857 18.8721 10.5056C19.082 10.7155 19.4519 10.7155 19.6618 10.5056C19.7717 10.3957 19.8317 10.2557 19.8317 10.1058C19.8317 9.95585 19.7717 9.81591 19.6618 9.70596C19.5518 9.596 19.4119 9.54602 19.2619 9.53603H19.2719Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1208 14.504C21.7009 14.504 21.3111 14.344 21.0212 14.0441C20.4115 13.4344 20.4115 12.4448 21.0212 11.8351C21.3111 11.5352 21.7109 11.3753 22.1208 11.3753C22.5406 11.3753 22.9304 11.5352 23.2203 11.8351C23.5102 12.1249 23.6801 12.5248 23.6801 12.9346C23.6801 13.3444 23.5202 13.7443 23.2203 14.0342C22.9304 14.324 22.5306 14.494 22.1208 14.494V14.504ZM21.7209 12.5448C21.501 12.7647 21.501 13.1245 21.7209 13.3344C21.8309 13.4444 21.9708 13.5044 22.1208 13.5044C22.2707 13.5044 22.4106 13.4444 22.5206 13.3344C22.6305 13.2245 22.6905 13.0845 22.6905 12.9346C22.6905 12.7847 22.6305 12.6447 22.5206 12.5348C22.4106 12.4248 22.2707 12.3748 22.1208 12.3648C21.9708 12.3648 21.8309 12.4248 21.7209 12.5348V12.5448Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.6431 19.302C15.5635 19.302 14.5839 19.0221 13.8942 18.3224C11.6452 16.0733 13.7343 10.8155 15.7235 8.82632C16.5231 8.02666 17.9225 8.02666 18.7222 8.82632L18.8821 8.98626C19.0821 9.18617 19.0821 9.49604 18.8821 9.69596C18.6822 9.89588 18.3724 9.89588 18.1724 9.69596L18.0125 9.53603C17.5927 9.1162 16.853 9.1162 16.4232 9.53603C14.5639 11.3953 12.9846 16.0033 14.5939 17.6127C16.2033 19.222 20.8113 17.6526 22.6706 15.7834C22.8805 15.5735 23.0004 15.2936 23.0004 14.9938C23.0004 14.6939 22.8805 14.414 22.6706 14.2041L22.5106 14.0441C22.3107 13.8442 22.3107 13.5344 22.5106 13.3344C22.7105 13.1345 23.0204 13.1345 23.2203 13.3344L23.3803 13.4944C23.7801 13.8942 24 14.424 24 14.9938C24 15.5635 23.7801 16.0933 23.3803 16.4931C22.0008 17.8726 19.0621 19.292 16.6431 19.292V19.302Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4244 20.1816C13.0545 20.1816 12.7047 20.0417 12.4448 19.7718C12.1849 19.5119 12.035 19.162 12.035 18.7922C12.035 18.4223 12.1749 18.0725 12.4448 17.8126L13.3844 16.873C13.5843 16.6731 13.8942 16.6731 14.0941 16.873C14.294 17.0729 14.294 17.3828 14.0941 17.5827L13.1545 18.5223C13.0046 18.6722 13.0046 18.9221 13.1545 19.0721C13.3044 19.222 13.5643 19.222 13.7043 19.0721L14.6439 18.1324C14.8438 17.9325 15.1537 17.9325 15.3536 18.1324C15.5535 18.3324 15.5535 18.6422 15.3536 18.8422L14.414 19.7818C14.1541 20.0417 13.8042 20.1916 13.4344 20.1916L13.4244 20.1816Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.20657 22.0308C6.76717 22.0308 5.62764 21.4611 4.99791 20.4315C4.20824 19.142 4.31819 17.3128 5.28779 15.4236C5.41773 15.1737 5.71761 15.0837 5.95751 15.2037C6.2074 15.3336 6.29737 15.6335 6.17742 15.8734C5.37775 17.4227 5.2578 18.9321 5.84755 19.9017C6.29737 20.6314 7.10703 21.0212 8.20657 21.0212C10.9454 21.0212 12.3848 19.122 12.3948 19.102C12.5648 18.8821 12.8746 18.8322 13.0945 19.0021C13.3144 19.162 13.3644 19.4819 13.1945 19.7018C13.1245 19.7918 11.4352 22.0208 8.19657 22.0208L8.20657 22.0308Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.5052 3.96835H3.05875C2.77887 3.96835 2.55896 3.74844 2.55896 3.46856C2.55896 3.18867 2.77887 2.96876 3.05875 2.96876H11.5052C11.7851 2.96876 12.005 3.18867 12.005 3.46856C12.005 3.74844 11.7851 3.96835 11.5052 3.96835Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.7339 6.58725H3.05875C2.77887 6.58725 2.55896 6.36735 2.55896 6.08746C2.55896 5.80758 2.77887 5.58767 3.05875 5.58767H14.7439C15.0238 5.58767 15.2437 5.80758 15.2437 6.08746C15.2437 6.36735 15.0238 6.58725 14.7439 6.58725H14.7339Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4244 9.20616H3.05875C2.77887 9.20616 2.55896 8.98626 2.55896 8.70637C2.55896 8.42649 2.77887 8.20658 3.05875 8.20658H13.4244C13.7043 8.20658 13.9242 8.42649 13.9242 8.70637C13.9242 8.98626 13.7043 9.20616 13.4244 9.20616Z\"\n }));\n};\nvar Icon$A = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$x, null));\n};\nvar SvgMenuControlRewrite = Icon$A;\nvar MemoSvgMenuControlRewrite = /*#__PURE__*/React.memo(SvgMenuControlRewrite);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$w = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.5 21a.501.501 0 01-.407-.791l2.2-3.083a1.003 1.003 0 011.395-.232l1.211.906 2.701-3.6a.503.503 0 01.7-.1.496.496 0 01.1.7l-2.7 3.6c-.188.25-.487.4-.801.4a.988.988 0 01-.599-.2l-1.193-.893-2.199 3.083A.503.503 0 013.5 21zM17 11c-2.206 0-4-1.794-4-4s1.794-4 4-4a3.994 3.994 0 01.895.105 4.002 4.002 0 013.068 3.372.81.81 0 01.008.035c.002.012.002.026.002.04A4.004 4.004 0 0117 11zm0-7c-1.654 0-3 1.346-3 3s1.346 3 3 3a3.004 3.004 0 002.997-2.863l-2.936.359a.5.5 0 01-.549-.603l.634-2.888A1.842 1.842 0 0017 4zm.64 2.418l2.236-.273a2.994 2.994 0 00-1.752-1.925l-.484 2.198zM15 21a1 1 0 01-1-1v-6a1 1 0 011-1h5a1 1 0 011 1v6a1 1 0 01-1 1h-5zm0-1h5v-6h-5v6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.5 17a.5.5 0 010-1h2a.5.5 0 010 1h-2zM16.5 19a.5.5 0 010-1h1a.5.5 0 010 1h-1zM4 11c-.551 0-1-.449-1-1V4c0-.551.449-1 1-1h5c.551 0 1 .449 1 1v6c0 .551-.449 1-1 1H4zm0-1h5V4H4v6z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.5 6a.5.5 0 010-1h2a.5.5 0 010 1h-2zM5.5 8a.5.5 0 010-1h1a.5.5 0 010 1h-1z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5 24C.673 24 0 23.327 0 22.5v-21C0 .673.673 0 1.5 0h21c.827 0 1.5.673 1.5 1.5v21c0 .827-.673 1.5-1.5 1.5h-21zm0-23a.5.5 0 00-.5.5v21a.5.5 0 00.5.5h21a.5.5 0 00.5-.5v-21a.5.5 0 00-.5-.5h-21z\"\n }));\n};\nvar Icon$z = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$w, null));\n};\nvar SvgMenuDashboard = Icon$z;\nvar MemoSvgMenuDashboard = /*#__PURE__*/React.memo(SvgMenuDashboard);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$v = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.5 24c-.827 0-1.5-.673-1.5-1.5v-21C2 .673 2.673 0 3.5 0h13.293c.401 0 .777.156 1.061.439l3.707 3.707c.283.284.439.661.439 1.061V22.5c0 .827-.673 1.5-1.5 1.5h-17zm0-23a.5.5 0 00-.5.5v21a.5.5 0 00.5.5h17a.5.5 0 00.5-.5V5.207a.501.501 0 00-.146-.354l-3.707-3.707A.505.505 0 0016.793 1H3.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 7.5a.5.5 0 010-1h7a.5.5 0 010 1H6zM6 10.5a.5.5 0 010-1h12a.5.5 0 010 1H6zM6 13.5a.5.5 0 010-1h12a.5.5 0 010 1H6zM6 16.5a.5.5 0 010-1h12a.5.5 0 010 1H6zM6 19.5a.5.5 0 010-1h12a.5.5 0 010 1H6z\"\n }));\n};\nvar Icon$y = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$v, null));\n};\nvar SvgMenuDocuments = Icon$y;\nvar MemoSvgMenuDocuments = /*#__PURE__*/React.memo(SvgMenuDocuments);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$u = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.5 23.999a.5.5 0 01-.354-.146l-5.589-5.589A10.446 10.446 0 0110.5 21C4.71 21 0 16.29 0 10.5S4.71 0 10.5 0 21 4.71 21 10.5c0 2.621-.969 5.117-2.736 7.057l5.589 5.589a.5.5 0 01-.353.853zm-13-23c-5.238 0-9.5 4.262-9.5 9.5s4.262 9.5 9.5 9.5 9.5-4.262 9.5-9.5-4.262-9.5-9.5-9.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.5 15.999a.5.5 0 01-.5-.5v-4.5H5.5a.5.5 0 010-1H10v-4.5a.5.5 0 011 0v4.5h4.5a.5.5 0 010 1H11v4.5a.5.5 0 01-.5.5z\"\n }));\n};\nvar Icon$x = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$u, null));\n};\nvar SvgMenuExplorer = Icon$x;\nvar MemoSvgMenuExplorer = /*#__PURE__*/React.memo(SvgMenuExplorer);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$t = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.995 21.978C3.798 21.749.022 19.866.022 17.501V4.5c.002-2.565 4.301-4.499 10-4.499 5.701 0 10 1.935 10 4.5v4.5a.5.5 0 01-1 0V6.515c-1.626 1.526-5.042 2.486-9 2.486s-7.374-.96-9-2.486V8.5c0 1.865 4.206 3.5 9 3.5a.5.5 0 010 1c-3.958 0-7.374-.96-9-2.486v2.487c0 1.655 3.309 3.17 7.533 3.45a.501.501 0 01-.033.999l-.028-.001c-3.299-.219-6.068-1.137-7.473-2.445v2.497c0 1.724 3.599 3.284 8.022 3.479a.498.498 0 01.478.522.499.499 0 01-.499.478l-.027-.002zm1.027-20.977c-4.794 0-9 1.635-9 3.5s4.206 3.5 9 3.5 9-1.635 9-3.5-4.206-3.5-9-3.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.519 24.001c-3.584 0-6.5-2.916-6.5-6.5s2.916-6.5 6.5-6.5 6.5 2.916 6.5 6.5-2.916 6.5-6.5 6.5zm0-12c-3.033 0-5.5 2.467-5.5 5.5s2.467 5.5 5.5 5.5 5.5-2.467 5.5-5.5-2.467-5.5-5.5-5.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.687 20.43a1.236 1.236 0 01-.882-.366l-1.5-1.5a.5.5 0 11.708-.708l1.5 1.5a.24.24 0 00.175.074c.08 0 .153-.037.201-.1l2.905-3.874a.503.503 0 01.7-.1.496.496 0 01.1.7l-2.905 3.874c-.236.314-.61.5-1.002.5z\"\n }));\n};\nvar Icon$w = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$t, null));\n};\nvar SvgMenuMaintainData = Icon$w;\nvar MemoSvgMenuMaintainData = /*#__PURE__*/React.memo(SvgMenuMaintainData);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$s = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.021 22c-5.701 0-10-1.935-10-4.5v-13l.002-.029C.045 1.927 4.34.001 10.022.001c5.701 0 10 1.935 10 4.5l-.001.03v4.47a.5.5 0 01-1 0V6.516c-1.627 1.526-5.042 2.485-8.999 2.485-3.96 0-7.375-.96-9.001-2.487v1.987c0 1.865 4.206 3.5 9 3.5.339 0 .659-.007.977-.022h.001c.289 0 .509.209.522.477a.499.499 0 01-.476.523c-.333.015-.668.023-1.023.023-3.958 0-7.374-.96-9-2.486v2.486c0 1.865 4.206 3.5 9 3.5.342 0 .661-.007.977-.022l.029-.001c.265 0 .481.21.494.478a.499.499 0 01-.476.523c-.333.015-.668.023-1.023.023-3.958 0-7.374-.96-9-2.486V17.5c0 1.865 4.206 3.5 9 3.5.34 0 .668-.007.977-.021l.03-.001a.502.502 0 01.016 1c-.327.014-.672.022-1.025.022zm.001-20.999c-4.794 0-9 1.635-9 3.5s4.206 3.5 9 3.5c4.775 0 8.98-1.63 8.999-3.488l.001-.018c-.007-1.861-4.212-3.494-9-3.494z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.521 24c-.827 0-1.5-.673-1.5-1.5v-6c0-.827.673-1.5 1.5-1.5h.5v-1c0-1.654 1.346-3 3-3s3 1.346 3 3v1h.5c.827 0 1.5.673 1.5 1.5v6c0 .827-.673 1.5-1.5 1.5h-7zm0-8a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h7a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5h-7zm5.5-1v-1c0-1.103-.897-2-2-2s-2 .897-2 2l4 1z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.021 21.314c-.965 0-1.75-.785-1.75-1.75s.785-1.75 1.75-1.75 1.75.785 1.75 1.75-.785 1.75-1.75 1.75zm0-2.5a.75.75 0 100 1.5.75.75 0 000-1.5z\"\n }));\n};\nvar Icon$v = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$s, null));\n};\nvar SvgMenuManageAccounts = Icon$v;\nvar MemoSvgMenuManageAccounts = /*#__PURE__*/React.memo(SvgMenuManageAccounts);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$r = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 21.5c-.827 0-1.5-.673-1.5-1.5v-1.051a2.478 2.478 0 01-1.957-1.97 2.502 2.502 0 011.975-2.932L3.5 12V9.949a.99.99 0 01.78-.975 1.5 1.5 0 00.01-2.947.997.997 0 01-.79-.98V4c0-.827.673-1.5 1.5-1.5h10.051c.471 0 .876.328.975.78a1.5 1.5 0 002.946.011 1 1 0 01.969-.79H21c.827 0 1.5.673 1.5 1.5v16c0 .827-.673 1.5-1.5 1.5H5zm16-1a.5.5 0 00.5-.5v-7.5h-1.55a1 1 0 01-.976-.78 1.426 1.426 0 00-.056-.203l-.015-.042a1.416 1.416 0 00-.187-.352l-.028-.038a1.564 1.564 0 00-.154-.171 1.47 1.47 0 00-.111-.096c-.02-.015-.039-.03-.06-.044a1.479 1.479 0 00-.132-.084l-.045-.025a1.47 1.47 0 00-.162-.071l-.041-.015a1.528 1.528 0 00-.349-.076 1.911 1.911 0 00-.137-.006l-.055.002c-.033.001-.066.002-.099.006l-.057.008c-.039.006-.063.009-.087.014a1.507 1.507 0 00-.483.192c-.028.017-.05.03-.07.044a1.405 1.405 0 00-.262.232 1.287 1.287 0 00-.222.321 1.975 1.975 0 00-.065.147l-.019.053a1.57 1.57 0 00-.053.193 1 1 0 01-.97.79H13.5v1.549a2.807 2.807 0 01.686.248c.096.053.182.107.272.172l.073.054c.083.064.156.126.221.191l.07.074c.051.054.099.109.145.168.028.035.054.071.08.107l.032.043c.037.056.072.114.104.173.017.03.03.052.042.076.043.083.082.172.119.271l.022.06a2.52 2.52 0 01.139.818 2.463 2.463 0 01-.139.815l-.022.061a2.504 2.504 0 01-.52.835l-.018.02-.062.064a2.296 2.296 0 01-.291.241 2.39 2.39 0 01-.57.302c-.025.01-.051.018-.077.027-.12.041-.223.069-.324.089l.016 1.546H21zM4.5 14.051a.99.99 0 01-.78.975c-.82.16-1.354.95-1.196 1.761a1.496 1.496 0 001.185 1.185.997.997 0 01.79.983V20a.5.5 0 00.5.5h7.5v-1.551a.99.99 0 01.78-.975c.073-.014.139-.033.203-.055l.042-.014c.066-.024.128-.051.187-.082.06-.033.113-.067.164-.104l.043-.032c.047-.036.094-.075.137-.119l.03-.032c.034-.036.066-.073.095-.11l.046-.062c.029-.042.057-.085.083-.131l.023-.043c.027-.052.051-.107.072-.164l.015-.04a1.485 1.485 0 00.053-.772 1.52 1.52 0 00-.056-.203l-.012-.035a1.664 1.664 0 00-.073-.166l-.024-.044a1.412 1.412 0 00-.217-.293l-.045-.048a1.348 1.348 0 00-.128-.11l-.047-.035a1.474 1.474 0 00-.145-.092l-.024-.014a1.531 1.531 0 00-.172-.075l-.046-.016a1.498 1.498 0 00-.196-.054.998.998 0 01-.791-.984V12.5h-1.551a2.29 2.29 0 01-.115.394 2.361 2.361 0 01-.114.257l-.038.071a2.703 2.703 0 01-.221.33 2.876 2.876 0 01-.28.298 2.565 2.565 0 01-.253.203 2.93 2.93 0 01-.32.188 2.524 2.524 0 01-.694.226l-.052.008a1.894 1.894 0 01-.221.023l-.049.002-.073.003h-.019a2.695 2.695 0 01-.418-.038l-.055-.008a.574.574 0 01-.074-.02 2.994 2.994 0 01-.239-.066 2.964 2.964 0 01-.151-.058l-.035-.014a2.237 2.237 0 01-.141-.063 2.69 2.69 0 01-.202-.115.892.892 0 01-.076-.044l-.033-.024a2.225 2.225 0 01-.282-.23l-.02-.017a2.462 2.462 0 01-.306-.354 2.557 2.557 0 01-.172-.274 2.425 2.425 0 01-.131-.297l-.027-.075a2.66 2.66 0 01-.084-.306H4.5v1.551zM6.062 11.5a.99.99 0 01.964.78c.014.073.034.139.056.203l.015.043c.024.064.05.126.081.185.033.061.068.114.105.166l.029.04c.038.05.078.097.122.142l.031.028c.036.035.073.066.111.096l.059.044c.043.031.087.059.133.085l.042.023c.053.027.107.051.163.072l.041.015a1.474 1.474 0 00.347.076l.038.002c.034 0 .067.003.101.003.022 0 .082-.004.082-.004l.067-.004c.024-.002.047-.006.071-.01l.075-.012c.064-.013.126-.031.187-.052.018-.005.037-.013.055-.02a1.695 1.695 0 00.318-.17 1.578 1.578 0 00.151-.121 1.48 1.48 0 00.169-.18l.05-.066a1.26 1.26 0 00.083-.131l.024-.046c.026-.047.048-.098.068-.151l.018-.051a1.59 1.59 0 00.054-.194c.1-.46.51-.79.977-.79H12.5V9.949a2.242 2.242 0 01-.308-.084l-.079-.028a2.593 2.593 0 01-.294-.13l-.032-.019a2.599 2.599 0 01-.238-.151c-.029-.021-.057-.041-.085-.063a2.543 2.543 0 01-.202-.174c-.028-.027-.054-.055-.08-.083a2.45 2.45 0 01-.405-.57 2.535 2.535 0 01-.12-.27l-.023-.063a2.492 2.492 0 01-.127-.58l-.001-.025a2.456 2.456 0 01.001-.418c.019-.218.062-.414.129-.606l.02-.055c.04-.107.08-.197.124-.282l.035-.065a2.384 2.384 0 01.135-.215 2.675 2.675 0 01.232-.283l.018-.021.052-.054c.069-.067.142-.129.217-.188l.078-.058a2.523 2.523 0 01.272-.171 2.6 2.6 0 01.7-.248L12.502 3.5H5a.5.5 0 00-.5.5v1.051c1.337.26 2.221 1.575 1.957 2.928a2.49 2.49 0 01-1.975 1.975l.016 1.546h1.564zm11.445-2.003c.273 0 .545.047.808.138l.056.02a2.469 2.469 0 01.846.527c.035.032.054.049.071.067.063.065.125.136.19.22l.056.076a2.46 2.46 0 01.42.974l1.546-.016V4a.5.5 0 00-.5-.5h-1.051a2.461 2.461 0 01-1.052 1.577 2.49 2.49 0 01-1.875.38 2.489 2.489 0 01-1.975-1.975l-1.547.015v1.554a.99.99 0 01-.78.975 1.421 1.421 0 00-.2.055l-.052.019a1.86 1.86 0 00-.151.066l-.058.031a1.376 1.376 0 00-.266.194 1.69 1.69 0 00-.227.256.973.973 0 00-.052.083 1.485 1.485 0 00-.112.227l-.025.064a1.37 1.37 0 00-.05.183l-.022.144a1.465 1.465 0 00-.004.064l-.004.08a1.764 1.764 0 00.027.294c.012.062.03.128.055.202l.013.035c.022.059.046.114.074.167l.022.04a1.364 1.364 0 00.219.297l.042.045c.041.04.085.077.13.112l.046.034a1.446 1.446 0 00.343.183l.044.016c.064.022.129.041.197.054a.997.997 0 01.79.984V11.5h1.551c.016-.089.045-.195.085-.312l.021-.062c.035-.094.077-.189.125-.281l.039-.071a2.364 2.364 0 01.202-.304l.016-.02c.044-.056.09-.109.138-.16l.021-.022a2.319 2.319 0 01.256-.231c.035-.028.071-.054.107-.08a2.7 2.7 0 01.22-.139c.026-.015.053-.028.079-.041.1-.05.183-.088.27-.12l.051-.018c.099-.034.2-.062.311-.085.003-.002.017-.005.031-.008l.025-.004c.052-.01.113-.018.173-.025l.052-.007c.075-.007.15-.01.226-.01.004-.003.006-.003.009-.003z\"\n }));\n};\nvar Icon$u = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$r, null));\n};\nvar SvgModulePuzzle = Icon$u;\nvar MemoSvgModulePuzzle = /*#__PURE__*/React.memo(SvgModulePuzzle);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$q = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.504 24a.5.5 0 01-.452-.715l3.036-6.375a11.215 11.215 0 01-1.552-5.71 11.143 11.143 0 013.298-7.926A11.145 11.145 0 0112.754 0c2.115 0 4.161.583 5.939 1.685a11.16 11.16 0 015.016 6.979 11.16 11.16 0 01-1.388 8.482 11.157 11.157 0 01-6.979 5.016 11.189 11.189 0 01-8.246-1.246L.72 23.953A.529.529 0 01.504 24zM12.746 1a10.15 10.15 0 00-7.204 2.981 10.15 10.15 0 00-3.004 7.22 10.204 10.204 0 001.544 5.416c.09.145.101.324.027.479l-2.546 5.347 5.347-2.546a.501.501 0 01.479.026 10.192 10.192 0 007.725 1.265 10.163 10.163 0 006.357-4.569 10.165 10.165 0 001.264-7.726 10.16 10.16 0 00-4.569-6.357A10.213 10.213 0 0012.789 1l-.021.001L12.746 1z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8.754,\n cy: 9.75,\n r: 0.75\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16.754,\n cy: 9.75,\n r: 0.75\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.754 16c-1.654 0-3-1.346-3-3a.5.5 0 01.5-.5h5a.5.5 0 01.5.5c0 1.654-1.346 3-3 3zm-1.937-2.5c.223.872 1.012 1.5 1.937 1.5s1.714-.628 1.937-1.5h-3.874z\"\n }));\n};\nvar Icon$t = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$q, null));\n};\nvar SvgMoodHappy = Icon$t;\nvar MemoSvgMoodHappy = /*#__PURE__*/React.memo(SvgMoodHappy);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$p = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.978 13.999c-.067-.001-.133-.005-.2-.008h-.011a.274.274 0 01-.12-.006c-3.656-.221-6.578-3.269-6.645-6.946L5 6.999l.002-.031L5 6.853c0-1.23.34-2.442.982-3.506a.488.488 0 01.133-.211C7.366 1.223 9.455.053 11.71.005c.071-.005.161-.006.252-.006h.079A6.974 6.974 0 0119 6.92v.055h-.001l.001.024-.001.02a6.98 6.98 0 01-2.053 4.921 6.994 6.994 0 01-4.634 2.05l-.038.001a6.706 6.706 0 01-.292.007l-.004.001zm.048-1c.48-.66.891-1.331 1.224-2h-2.495c.333.669.743 1.34 1.223 2h.048zm2.319-2c-.277.622-.613 1.24-1 1.845a5.951 5.951 0 003.116-1.845h-2.116zm-6.755 0a6.052 6.052 0 003.058 1.825 13.891 13.891 0 01-.988-1.825H7.59zm9.599-1a6 6 0 00.788-2.5h-2.701a10.545 10.545 0 01-.537 2.5h2.45zm-3.498 0a9.567 9.567 0 00.608-2.5H9.707c.081.823.285 1.662.608 2.5h3.376zm-4.425 0a10.503 10.503 0 01-.536-2.5h-2.7c.087.879.368 1.736.821 2.5h2.415zm8.714-3.5a5.95 5.95 0 00-.77-2.5h-2.3c.249.807.383 1.646.4 2.5h2.67zm-3.642 0a7.945 7.945 0 00-.465-2.5h-3.742a7.926 7.926 0 00-.464 2.5h4.671zm-5.643 0a9.078 9.078 0 01.4-2.5H6.758a5.812 5.812 0 00-.745 2.5h2.682zm7.793-3.5a6.021 6.021 0 00-3.007-1.821 9.977 9.977 0 011.054 1.821h1.953zm-3.048 0a9.686 9.686 0 00-1.385-2h-.106a9.68 9.68 0 00-1.384 2h2.875zm-3.969 0a9.93 9.93 0 011.068-1.842 5.94 5.94 0 00-3.067 1.842h1.999zM12.086 21.199c-1.572 0-2.85-1.278-2.85-2.85s1.279-2.85 2.85-2.85c1.571 0 2.85 1.279 2.85 2.85s-1.279 2.85-2.85 2.85zm0-4.7c-1.02 0-1.85.83-1.85 1.85s.83 1.85 1.85 1.85 1.85-.83 1.85-1.85-.83-1.85-1.85-1.85zM4.694 21.199c-1.572 0-2.85-1.278-2.85-2.85s1.278-2.85 2.85-2.85 2.85 1.279 2.85 2.85-1.279 2.85-2.85 2.85zm0-4.7c-1.02 0-1.85.83-1.85 1.85s.83 1.85 1.85 1.85 1.85-.83 1.85-1.85-.83-1.85-1.85-1.85zM19.314 21.199c-1.572 0-2.85-1.278-2.85-2.85s1.278-2.85 2.85-2.85 2.85 1.279 2.85 2.85-1.279 2.85-2.85 2.85zm0-4.7c-1.02 0-1.85.83-1.85 1.85s.83 1.85 1.85 1.85 1.85-.83 1.85-1.85-.83-1.85-1.85-1.85z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.284 23.999a.497.497 0 01-.382-.186 4.19 4.19 0 00-6.514 0 .491.491 0 01-.388.186.501.501 0 01-.389-.814 5.19 5.19 0 017.687-.425 5.381 5.381 0 013.7-1.501 5.388 5.388 0 013.704 1.501c.127-.126.261-.246.399-.357a5.117 5.117 0 013.805-1.118 5.152 5.152 0 013.482 1.9.501.501 0 01-.779.628 4.153 4.153 0 00-3.265-1.558 4.13 4.13 0 00-2.617.927c-.232.187-.445.4-.632.632a.5.5 0 01-.772.007 4.355 4.355 0 00-3.326-1.561 4.352 4.352 0 00-3.324 1.561.503.503 0 01-.381.179l-.008-.001z\"\n }));\n};\nvar Icon$s = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$p, null));\n};\nvar SvgNetworkAdoption = Icon$s;\nvar MemoSvgNetworkAdoption = /*#__PURE__*/React.memo(SvgNetworkAdoption);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$o = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.499 21c-.827 0-1.5-.673-1.5-1.5v-16c0-.827.673-1.5 1.5-1.5h2.5V.5a.5.5 0 011 0V2h3V.5a.5.5 0 011 0V2h3V.5a.5.5 0 011 0V2h2.5c.827 0 1.5.673 1.5 1.5v5a.5.5 0 01-1 0v-5a.5.5 0 00-.5-.5h-2.5v1.5a.5.5 0 01-1 0V3h-3v1.5a.5.5 0 01-1 0V3h-3v1.5a.5.5 0 01-1 0V3h-2.5a.5.5 0 00-.5.5v16a.5.5 0 00.5.5h7a.5.5 0 010 1h-7z\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n cx: 17.499,\n cy: 20.75,\n r: 0.75\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.499 19a.5.5 0 01-.5-.5v-3a.5.5 0 011 0v3a.5.5 0 01-.5.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.443 23.997a1.43 1.43 0 01-1.281-2.094l5.055-9.635a1.45 1.45 0 012.556-.01l5.062 9.645c.233.443.214.982-.048 1.408a1.44 1.44 0 01-1.231.686H12.443zm5.055-11.5a.446.446 0 00-.396.238l-5.054 9.632a.426.426 0 00.014.419c.082.131.224.21.379.21h10.114a.451.451 0 00.382-.212.422.422 0 00.013-.417l-5.056-9.635a.446.446 0 00-.396-.235z\"\n }));\n};\nvar Icon$r = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$o, null));\n};\nvar SvgNotesWarning = Icon$r;\nvar MemoSvgNotesWarning = /*#__PURE__*/React.memo(SvgNotesWarning);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$n = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.5 20.001a.5.5 0 010-1c.551 0 1-.448 1-1v-6.5a8.456 8.456 0 018-8.483V.502a.5.5 0 011 0v2.516c4.505.259 8 3.94 8 8.483v6.5a1 1 0 001 1 .5.5 0 010 1h-19zm17.267-1a1.98 1.98 0 01-.267-1v-6.5c0-4.128-3.354-7.489-7.48-7.5l-.02.001-.02-.001c-4.126.011-7.48 3.372-7.48 7.5v6.5c0 .357-.093.699-.267 1h15.534zM12.006 24.004A2.994 2.994 0 019.06 21.6a.5.5 0 01.488-.6c.238 0 .444.168.491.4a1.995 1.995 0 001.966 1.603c.39 0 .77-.115 1.099-.334.446-.295.749-.746.855-1.269a.503.503 0 01.586-.391c.273.056.448.32.394.59a2.982 2.982 0 01-1.283 1.904 2.972 2.972 0 01-1.65.501z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 11.501a.5.5 0 01-.5-.5c0-1.53-.852-2.903-2.222-3.583a.497.497 0 01.222-.948c.077 0 .153.018.222.052a4.971 4.971 0 012.778 4.479.5.5 0 01-.5.5z\"\n }));\n};\nvar Icon$q = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$n, null));\n};\nvar SvgNotification = Icon$q;\nvar MemoSvgNotification = /*#__PURE__*/React.memo(SvgNotification);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$m = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask\",\n x: \"-.24\",\n y: \"-.24\",\n width: \"24.47\",\n height: \"24.47\",\n maskUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"custom\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"bg\",\n x: \"-.24\",\n y: \"-.24\",\n width: \"24.47\",\n height: \"24.47\"\n })))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1191\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1193\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1195\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g1201\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,24c-.1,0-.2,0-.31-.03-.07-.01-.14-.03-.21-.06C1.57,20.45,1.72,12.35,1.84,6.44c.01-.3.02-.55.02-.8.02-1.23,1-2.25,2.23-2.32,2.86-.16,5.08-1.1,6.98-2.94.53-.49,1.32-.49,1.84-.01,1.91,1.86,4.13,2.79,6.99,2.96,1.23.07,2.21,1.09,2.23,2.32,0,.25,0,.51.02.76,0,0,0,0,0,.01.11,5.92.26,14.03-9.65,17.5-.07.03-.14.04-.22.06-.09.02-.19.03-.29.03Zm0-23c-.09,0-.17.03-.24.1-2.07,2.02-4.49,3.04-7.61,3.22-.71.04-1.28.63-1.29,1.34,0,.26-.01.53-.02.8-.11,5.62-.25,13.3,8.98,16.52.14.03.21.03.28.02,9.31-3.25,9.17-10.93,9.06-16.55-.01-.27-.02-.53-.02-.79-.01-.71-.58-1.3-1.29-1.34-3.12-.17-5.54-1.2-7.62-3.23-.06-.06-.14-.09-.23-.09Z\"\n })))))), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g427\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"g433\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18.29,14.24c-.14,0-.27-.03-.4-.1l-1.5-.79-1.5.79s-.13.06-.17.07c-.14.04-.28.02-.4-.06-.12-.08-.2-.2-.23-.34l-.08-.49c-.05-.31.05-.63.28-.85l1.62-1.58-2.21-.26c-.31-.04-.58-.24-.72-.52l-.23-.46c-.06-.13-.07-.27-.02-.4.05-.13.16-.23.29-.28.03-.01.14-.04.18-.05l1.68-.24.75-1.52c.29-.59,1.25-.59,1.54,0l.75,1.52,1.68.24c.33.05.59.27.69.58.1.31.02.65-.22.88,0,0,0,0,0,0l-1.21,1.18.29,1.67c.05.33-.08.65-.34.84-.15.11-.33.17-.5.17Zm-1.9-1.91c.14,0,.28.03.4.1l1.31.69-.25-1.46c-.05-.28.04-.56.25-.76l1.07-1.04-1.47-.21c-.28-.04-.52-.22-.65-.47l-.66-1.33-.66,1.33c-.13.26-.37.43-.65.47l-.67.1,1.65.23c.36.05.66.3.77.65s.02.73-.24.98l-1.12,1.09.51-.27c.12-.07.26-.1.4-.1Zm2.45-.84h0s0,0,0,0Zm.88-1.47h0,0Zm-1.77-1.29h0s0,0,0,0Z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g437\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.71,14.24c-.18,0-.35-.06-.5-.17-.27-.19-.4-.52-.34-.84l.29-1.67-1.21-1.18c-.24-.23-.32-.57-.22-.88.1-.31.37-.54.69-.58l1.68-.24.75-1.52c.29-.59,1.25-.59,1.54,0l.75,1.52,1.68.24s.14.03.18.05c.13.05.24.15.29.28s.05.28-.02.41l-.23.46c-.14.28-.41.48-.72.52l-2.23.32,1.64,1.51c.23.22.33.54.28.85l-.08.49c-.02.14-.11.26-.23.34-.12.08-.27.1-.4.06-.04,0-.14-.05-.17-.07l-1.49-.79-1.5.79c-.13.07-.26.1-.4.1Zm-.87-4.38l1.06,1.04c.2.2.29.48.25.76l-.25,1.46,1.31-.69c.25-.13.55-.13.8,0l.55.29-1.16-1.11c-.26-.26-.36-.63-.24-.98.11-.35.41-.6.77-.65l1.6-.23-.62-.09c-.28-.04-.52-.22-.65-.47l-.66-1.33-.66,1.33c-.13.26-.37.43-.65.47l-1.47.21Z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"g449\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.57,16.5c-.2,0-.4-.06-.56-.18-.3-.22-.44-.58-.38-.94l.38-2.23-1.61-1.54c-.26-.26-.36-.63-.24-.98.11-.35.41-.6.77-.65l2.24-.32.97-2c.33-.66,1.39-.66,1.72,0l1,2.03,2.21.3c.36.05.66.3.77.65.11.35.02.73-.24.98l-1.62,1.58.39,2.19c.06.36-.08.72-.38.94-.3.22-.68.24-1.01.07l-1.98-1.04-1.98,1.04c-.14.07-.29.11-.45.11Zm2.39-8.41l-.93,2.03c-.14.28-.41.48-.72.52l-2.23.32,1.64,1.51c.23.22.33.54.28.85l-.38,2.23,2.15-1.21c.15-.08.32-.08.46,0l2.21,1.16-.44-2.18c-.05-.31.05-.63.28-.85l1.62-1.58-2.21-.26c-.31-.04-.58-.24-.72-.52l-1-2.03Z\"\n }))));\n};\nvar Icon$p = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$m, null));\n};\nvar SvgQuantify = Icon$p;\nvar MemoSvgQuantify = /*#__PURE__*/React.memo(SvgQuantify);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$l = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.005 22.012a9.98 9.98 0 01-5.392-1.581.5.5 0 01.54-.841 8.981 8.981 0 004.851 1.423h.001a9.035 9.035 0 006.575-2.851 8.942 8.942 0 002.424-6.448A8.982 8.982 0 0019 6.346v3.157a.5.5 0 11-1-.001v-4.5a.5.5 0 01.5-.5H23a.5.5 0 010 1h-3.399a9.972 9.972 0 012.403 6.178 9.937 9.937 0 01-2.693 7.165 10.04 10.04 0 01-7.306 3.167zM1 19.502a.5.5 0 010-1h3.396a9.965 9.965 0 01-2.404-6.173A9.932 9.932 0 014.68 5.164a10.042 10.042 0 017.313-3.17c1.891 0 3.736.534 5.334 1.544a.501.501 0 01-.267.923.498.498 0 01-.267-.078 8.97 8.97 0 00-4.8-1.389A9.043 9.043 0 005.41 5.846a8.945 8.945 0 00-2.418 6.45A8.975 8.975 0 005 17.664v-3.161a.5.5 0 011 0v4.5a.5.5 0 01-.5.5H1z\"\n }));\n};\nvar Icon$o = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$l, null));\n};\nvar SvgRefresh = Icon$o;\nvar MemoSvgRefresh = /*#__PURE__*/React.memo(SvgRefresh);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$k = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.977 23.17c-.401 0-.777-.156-1.061-.439L1.33 13.145a1.501 1.501 0 010-2.121l9.586-9.586a1.49 1.49 0 011.061-.439c.401 0 .777.156 1.061.439l9.586 9.586a1.501 1.501 0 010 2.121l-9.586 9.585c-.284.284-.661.44-1.061.44zm0-21.171a.5.5 0 00-.354.146L2.037 11.73a.5.5 0 000 .707l9.586 9.585c.089.088.217.139.354.139s.265-.051.354-.139l9.586-9.585a.5.5 0 000-.707L12.33 2.145a.497.497 0 00-.353-.146z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 14.61a.5.5 0 01-.5-.5v-7a.5.5 0 011 0v7a.5.5 0 01-.5.5zM12.015 17.11a.756.756 0 01-.765-.727.747.747 0 01.72-.772h.031c.41.011.731.332.744.729a.74.74 0 01-.2.533.74.74 0 01-.519.237h-.009-.002z\"\n }));\n};\nvar Icon$n = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$k, null));\n};\nvar SvgRisk = Icon$n;\nvar MemoSvgRisk = /*#__PURE__*/React.memo(SvgRisk);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$j = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5,24C0.673,24,0,23.327,0,22.5V5.414c0-0.401,0.156-0.777,0.439-1.061l3.914-3.914C4.637,0.156,5.013,0,5.414,0H22.5\\n\\t\\tC23.327,0,24,0.673,24,1.5v21c0,0.827-0.673,1.5-1.5,1.5H1.5z M22.5,23c0.276,0,0.5-0.224,0.5-0.5v-21C23,1.224,22.776,1,22.5,1H19\\n\\t\\tv5.5C19,7.327,18.327,8,17.5,8h-11C5.673,8,5,7.327,5,6.5V1.207L1.146,5.061C1.052,5.155,1,5.281,1,5.414V22.5\\n\\t\\tC1,22.776,1.224,23,1.5,23H3v-9.5C3,12.673,3.673,12,4.5,12h15c0.827,0,1.5,0.673,1.5,1.5V23H22.5z M20,23v-9.5\\n\\t\\tc0-0.276-0.224-0.5-0.5-0.5h-15C4.224,13,4,13.224,4,13.5V23H20z M6,6.5C6,6.776,6.224,7,6.5,7h11C17.776,7,18,6.776,18,6.5V1H6\\n\\t\\tV6.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5,6C14.224,6,14,5.776,14,5.5v-3C14,2.224,14.224,2,14.5,2h2C16.776,2,17,2.224,17,2.5v3C17,5.776,16.776,6,16.5,6\\n\\t\\tH14.5z M16,5V3h-1v2H16z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5,16C6.224,16,6,15.776,6,15.5S6.224,15,6.5,15H13c0.276,0,0.5,0.224,0.5,0.5S13.276,16,13,16H6.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.5,19C6.224,19,6,18.776,6,18.5S6.224,18,6.5,18h11c0.276,0,0.5,0.224,0.5,0.5S17.776,19,17.5,19H6.5z\"\n })));\n};\nvar Icon$m = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$j, null));\n};\nvar SvgSave = Icon$m;\nvar MemoSvgSave = /*#__PURE__*/React.memo(SvgSave);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$i = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.5 24a.5.5 0 01-.354-.146l-5.589-5.589A10.443 10.443 0 0110.5 21C4.71 21 0 16.29 0 10.5S4.71 0 10.5 0 21 4.71 21 10.5c0 2.621-.969 5.117-2.736 7.057l5.589 5.589A.5.5 0 0123.5 24zm-13-23C5.262 1 1 5.262 1 10.5S5.262 20 10.5 20s9.5-4.262 9.5-9.5S15.738 1 10.5 1z\"\n }));\n};\nvar Icon$l = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$i, null));\n};\nvar SvgSearch = Icon$l;\nvar MemoSvgSearch = /*#__PURE__*/React.memo(SvgSearch);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$h = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 19.5a.5.5 0 01-.5-.5v-2.586c-.59-.209-1-.774-1-1.414 0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5c0 .64-.41 1.205-1 1.414V19a.5.5 0 01-.5.5zm0-5a.5.5 0 100 1 .5.5 0 000-1z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 24c-.827 0-1.5-.673-1.5-1.5v-12C3 9.673 3.673 9 4.5 9H6V6c0-3.308 2.692-6 6-6s6 2.692 6 6v3h1.5c.827 0 1.5.673 1.5 1.5v12c0 .827-.673 1.5-1.5 1.5h-15zm0-14a.5.5 0 00-.5.5v12a.5.5 0 00.5.5h15a.5.5 0 00.5-.5v-12a.5.5 0 00-.5-.5h-15zM17 9V6c0-2.757-2.243-5-5-5S7 3.243 7 6v3h10z\"\n }));\n};\nvar Icon$k = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$h, null));\n};\nvar SvgSecurityLocked = Icon$k;\nvar MemoSvgSecurityLocked = /*#__PURE__*/React.memo(SvgSecurityLocked);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$g = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4.5 24c-.827 0-1.5-.673-1.5-1.5v-12C3 9.673 3.673 9 4.5 9H17V6c0-2.757-2.243-5-5-5S7 3.243 7 6a.5.5 0 01-1 0c0-3.308 2.692-6 6-6s6 2.692 6 6v3h1.5c.827 0 1.5.673 1.5 1.5v12c0 .827-.673 1.5-1.5 1.5h-15zm0-14a.5.5 0 00-.5.5v12a.5.5 0 00.5.5h15a.5.5 0 00.5-.5v-12a.5.5 0 00-.5-.5h-15z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 19.5a.5.5 0 01-.5-.5v-2.586c-.59-.209-1-.774-1-1.414 0-.827.673-1.5 1.5-1.5s1.5.673 1.5 1.5c0 .64-.41 1.205-1 1.414V19a.5.5 0 01-.5.5zm0-5a.5.5 0 100 1 .5.5 0 000-1z\"\n }));\n};\nvar Icon$j = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$g, null));\n};\nvar SvgSecurityUnlocked = Icon$j;\nvar MemoSvgSecurityUnlocked = /*#__PURE__*/React.memo(SvgSecurityUnlocked);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$f = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.667 24a.5.5 0 01-.5-.5V21h-.613c-1.93 0-3.5-1.57-3.5-3.5V15H1.167a.503.503 0 01-.475-.658c.248-.744.487-1.51.719-2.251C3.27 6.147 5.192 0 12.917 0c2.741 0 5.31 1.063 7.244 2.992a10.176 10.176 0 013.007 7.239 10.29 10.29 0 01-4.001 8.13V23.5a.5.5 0 01-.5.5h-10zm9.5-1v-4.889c0-.16.077-.311.206-.404a9.27 9.27 0 003.795-7.475A9.181 9.181 0 0019.455 3.7 9.183 9.183 0 0012.927 1h-.01c-6.99 0-8.72 5.532-10.551 11.39-.167.536-.336 1.075-.509 1.61h2.697a.5.5 0 01.5.5v3c0 1.378 1.121 2.5 2.5 2.5h1.113a.5.5 0 01.5.5V23h9z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.167 10.875c-.965 0-1.75-.785-1.75-1.75s.785-1.75 1.75-1.75 1.75.785 1.75 1.75-.785 1.75-1.75 1.75zm0-2.5a.75.75 0 100 1.5.75.75 0 000-1.5z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.167 15.25a1.604 1.604 0 01-1.542-1.144l-.369-1.21a.331.331 0 00-.387-.226l-1.227.284a1.626 1.626 0 01-1.933-1.222 1.616 1.616 0 01.395-1.456l.857-.924a.338.338 0 000-.456l-.857-.924a1.604 1.604 0 01-.434-1.156c.015-.431.196-.831.511-1.125a1.609 1.609 0 011.461-.396l1.229.285a.33.33 0 00.386-.223l.37-1.213a1.616 1.616 0 012.006-1.074c.517.156.918.558 1.074 1.074l.372 1.21a.33.33 0 00.386.226l1.222-.284a1.628 1.628 0 011.935 1.221 1.615 1.615 0 01-.393 1.455l-.859.925a.34.34 0 00.001.457l.858.924a1.618 1.618 0 01-1.182 2.717c-.119 0-.239-.013-.355-.04l-1.23-.285a.327.327 0 00-.386.224l-.37 1.213c-.124.41-.401.748-.78.951a1.623 1.623 0 01-.759.192zm-2.224-3.589c.581 0 1.104.389 1.271.945l.368 1.209a.606.606 0 00.583.433.612.612 0 00.583-.432l.369-1.212a1.334 1.334 0 011.57-.909l1.227.284a.614.614 0 00.582-1.022l-.859-.925a1.345 1.345 0 01-.001-1.815l.861-.926a.614.614 0 00.15-.555.621.621 0 00-.736-.466l-1.219.283a1.336 1.336 0 01-1.571-.91l-.372-1.214a.605.605 0 00-.87-.356.606.606 0 00-.295.361l-.369 1.212a1.334 1.334 0 01-1.569.909L9.418 6.27a.611.611 0 00-.553.151.61.61 0 00-.195.429.608.608 0 00.165.44l.859.927a1.341 1.341 0 010 1.816l-.858.926a.617.617 0 00-.152.556.62.62 0 00.736.465l1.223-.283c.098-.024.199-.036.3-.036z\"\n }));\n};\nvar Icon$i = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$f, null));\n};\nvar SvgSettingsHuman = Icon$i;\nvar MemoSvgSettingsHuman = /*#__PURE__*/React.memo(SvgSettingsHuman);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$e = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.001 24.003a2.4 2.4 0 01-.798-.138 2.366 2.366 0 01-1.442-1.442l-.45-1.265a1.366 1.366 0 00-.705-.781 1.36 1.36 0 00-1.18-.001l-1.212.577a2.353 2.353 0 01-1.813.098 2.36 2.36 0 01-1.353-1.213 2.362 2.362 0 010-2.053l.575-1.211a1.375 1.375 0 00-.78-1.885l-1.266-.45a2.353 2.353 0 01-1.349-1.217 2.358 2.358 0 01-.094-1.815 2.365 2.365 0 011.444-1.444l1.265-.45c.345-.123.622-.373.78-.705a1.37 1.37 0 00.001-1.18l-.576-1.212a2.377 2.377 0 012.141-3.4c.356 0 .703.079 1.027.234l1.211.575c.186.088.383.133.587.133a1.384 1.384 0 001.297-.911l.45-1.265A2.38 2.38 0 0112.795.141c.676.24 1.201.766 1.441 1.441l.45 1.265a1.367 1.367 0 001.293.915 1.38 1.38 0 00.592-.134l1.212-.578a2.346 2.346 0 011.02-.232c.912 0 1.754.53 2.146 1.351.311.65.311 1.396 0 2.047l-.578 1.213a1.367 1.367 0 00-.054 1.05 1.367 1.367 0 00.834.835l1.265.45a2.361 2.361 0 011.35 1.217 2.36 2.36 0 01.094 1.816 2.368 2.368 0 01-1.444 1.444l-1.265.45a1.367 1.367 0 00-.781.704 1.367 1.367 0 000 1.181l.577 1.21c.273.572.308 1.217.096 1.815a2.36 2.36 0 01-1.216 1.352 2.353 2.353 0 01-2.047 0l-1.212-.575a1.369 1.369 0 00-1.886.779l-.45 1.266a2.36 2.36 0 01-1.219 1.349 2.315 2.315 0 01-1.012.231zm-3.983-4.761c.353 0 .696.078 1.018.231a2.361 2.361 0 011.218 1.349l.45 1.265c.139.391.443.695.834.834a1.363 1.363 0 001.051-.053c.332-.158.583-.435.706-.781l.45-1.265a2.36 2.36 0 011.442-1.442 2.364 2.364 0 011.815.093l1.212.576a1.365 1.365 0 001.187 0c.331-.158.581-.436.703-.782a1.365 1.365 0 00-.055-1.051l-.578-1.211a2.36 2.36 0 010-2.04 2.36 2.36 0 011.348-1.218l1.265-.45a1.37 1.37 0 00.836-.836 1.365 1.365 0 00-.054-1.051 1.368 1.368 0 00-.781-.705l-1.265-.45a2.36 2.36 0 01-1.442-1.442 2.363 2.363 0 01.093-1.815l.578-1.213c.18-.377.18-.809 0-1.185a1.384 1.384 0 00-1.243-.782c-.205 0-.404.045-.59.134l-1.213.578a2.357 2.357 0 01-1.018.231 2.38 2.38 0 01-2.239-1.58l-.45-1.265a1.368 1.368 0 00-1.293-.913c-.581 0-1.103.367-1.297.914l-.45 1.265a2.37 2.37 0 01-2.24 1.577c-.353 0-.695-.078-1.017-.231l-1.213-.575a1.368 1.368 0 00-1.19-.001c-.331.159-.58.437-.702.783-.122.346-.102.719.057 1.05L4.528 7a2.354 2.354 0 01-.001 2.037 2.361 2.361 0 01-1.349 1.218l-1.265.45a1.37 1.37 0 00-.836.836c-.123.346-.104.719.054 1.051s.435.582.781.705l1.266.45a2.378 2.378 0 011.349 3.257l-.576 1.213a1.368 1.368 0 00-.001 1.19 1.377 1.377 0 001.24.781c.205 0 .405-.046.593-.136l1.212-.577a2.363 2.363 0 011.023-.233z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.999 17.002c-2.757 0-5-2.243-5-5s2.243-5 5-5 5 2.243 5 5-2.243 5-5 5zm0-9c-2.206 0-4 1.794-4 4s1.794 4 4 4 4-1.794 4-4-1.794-4-4-4z\"\n }));\n};\nvar Icon$h = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$e, null));\n};\nvar SvgSettings = Icon$h;\nvar MemoSvgSettings = /*#__PURE__*/React.memo(SvgSettings);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$d = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.501 24c-.827 0-1.5-.673-1.5-1.5v-13c0-.827.673-1.5 1.5-1.5h4a.5.5 0 010 1h-4a.5.5 0 00-.5.5v13a.5.5 0 00.5.5h13a.5.5 0 00.5-.5v-12a.5.5 0 011 0v12c0 .827-.673 1.5-1.5 1.5h-13z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.501 13a.495.495 0 01-.392-.19 7.457 7.457 0 01-1.607-4.286c0-.805.123-2.328.954-3.622C10.254 3.658 11.48 3 13.001 3h5V.5a.503.503 0 01.5-.5c.14 0 .275.06.37.163l5 5.5a.5.5 0 010 .673l-5 5.5a.503.503 0 01-.37.164.503.503 0 01-.5-.5V9h-5c-2 0-2 .508-2 1v2.5a.499.499 0 01-.5.5zm2.5-9c-2.583 0-3.5 2.424-3.5 4.5a6.47 6.47 0 00.5 2.183V10c0-1.758 1.442-2 3-2h5.5a.5.5 0 01.5.5v1.707L22.825 6l-3.824-4.207V3.5a.5.5 0 01-.5.5h-5.5z\"\n }));\n};\nvar Icon$g = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$d, null));\n};\nvar SvgShare = Icon$g;\nvar MemoSvgShare = /*#__PURE__*/React.memo(SvgShare);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$c = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M2.274 2.931h19.452a1 1 0 01.855 1.518l-9.725 16.069a1 1 0 01-1.712 0L1.419 4.449a1 1 0 01.855-1.518z\"\n }));\n};\nvar Icon$f = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$c, null));\n};\nvar SvgSortDown = Icon$f;\nvar MemoSvgSortDown = /*#__PURE__*/React.memo(SvgSortDown);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$b = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.76 21.035H2.308a1 1 0 01-.855-1.518l9.725-16.069a1 1 0 011.712 0l9.725 16.069a1 1 0 01-.855 1.518z\"\n }));\n};\nvar Icon$e = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$b, null));\n};\nvar SvgSortUp = Icon$e;\nvar MemoSvgSortUp = /*#__PURE__*/React.memo(SvgSortUp);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$a = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.5 24a.5.5 0 010-1H6V1H3.5a.5.5 0 010-1h2.97l.03-.002.031.002H13c3.308 0 6 2.692 6 6a5.993 5.993 0 01-2.976 5.182A6.502 6.502 0 0121 17.5c0 3.584-2.916 6.5-6.5 6.5h-11zm11-1c3.033 0 5.5-2.467 5.5-5.5S17.533 12 14.5 12H7v11h7.5zM13 11c2.757 0 5-2.243 5-5s-2.243-5-5-5H7v10h6z\"\n }));\n};\nvar Icon$d = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$a, null));\n};\nvar SvgTextBold = Icon$d;\nvar MemoSvgTextBold = /*#__PURE__*/React.memo(SvgTextBold);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$9 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5 23.998a.5.5 0 010-1h3.729l14.348-22H15.5a.5.5 0 010-1h8a.5.5 0 010 1h-3.729l-14.348 22H8.5a.5.5 0 010 1h-8z\"\n }));\n};\nvar Icon$c = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$9, null));\n};\nvar SvgTextItalic = Icon$c;\nvar MemoSvgTextItalic = /*#__PURE__*/React.memo(SvgTextItalic);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$8 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M.5 22.5A.5.5 0 010 22v-1.5c0-3.959 2.762-4.936 5.199-5.798.255-.09.51-.18.762-.273.074-.027.188-.172.266-.489.191-.779-.001-1.724-.108-1.862-.947-1.041-1.874-2.328-1.874-5.533C4.245 3.06 6.633 1.5 9 1.5s4.755 1.561 4.755 5.047c0 3.203-.927 4.491-1.876 5.536-.105.136-.297 1.078-.107 1.855.078.319.193.465.268.493.239.088.481.174.721.259C15.224 15.564 18 16.55 18 20.5V22a.5.5 0 01-.5.5H.5zm16.5-1v-1c0-3.244-2.013-3.958-4.561-4.863a55.223 55.223 0 01-.746-.268c-.302-.112-.701-.41-.892-1.193-.213-.872-.111-2.269.338-2.765.818-.9 1.616-2.017 1.616-4.864C12.755 4.089 11.281 2.5 9 2.5c-2.281 0-3.755 1.588-3.755 4.045 0 2.848.798 3.964 1.616 4.864.451.499.551 1.899.337 2.77-.191.78-.59 1.077-.89 1.188-.247.092-.496.18-.745.268l-.029.01C3.101 16.505 1 17.248 1 20.5v1h16zM20 22.5a.5.5 0 010-1h3v-.353c0-2.396-1.503-2.931-3.406-3.609l-.031-.011c-.182-.065-.364-.129-.545-.197-.257-.094-.599-.344-.758-.993-.173-.709-.087-1.81.289-2.222a4.635 4.635 0 001.207-3.591.502.502 0 010-.095 2.66 2.66 0 00-.604-1.96 2.666 2.666 0 00-2.063-.971l-.102.001c-.47 0-.934.109-1.34.316a.502.502 0 01-.673-.219.5.5 0 01.219-.672 3.93 3.93 0 011.776-.424l.122-.001a3.655 3.655 0 012.831 1.332c.616.744.912 1.682.834 2.643a5.635 5.635 0 01-1.469 4.316c-.062.102-.185.775-.054 1.309.05.206.116.283.135.294.178.066.36.13.541.195 1.928.687 4.091 1.457 4.091 4.559V22a.5.5 0 01-.5.5H20z\"\n }));\n};\nvar Icon$b = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$8, null));\n};\nvar SvgUserMultiple = Icon$b;\nvar MemoSvgUserMultiple = /*#__PURE__*/React.memo(SvgUserMultiple);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$7 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.869,23.501c-1.858,0-3.369-1.511-3.369-3.369v-1.913c0-0.276,0.224-0.5,0.5-0.5s0.5,0.224,0.5,0.5v1.913\\n\\t\\tc0,1.306,1.063,2.369,2.369,2.369h16.262c1.306,0,2.368-1.063,2.369-2.369v-1.913c0-0.276,0.224-0.5,0.5-0.5s0.5,0.224,0.5,0.5\\n\\t\\tv1.913c0,1.857-1.512,3.368-3.369,3.369H3.869z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12,18.608c-0.276,0-0.5-0.224-0.5-0.5V2.208L5.354,8.354C5.259,8.449,5.134,8.501,5,8.501S4.741,8.449,4.646,8.354\\n\\t\\tS4.5,8.134,4.5,8.001s0.052-0.259,0.146-0.354l7-7c0.046-0.046,0.101-0.083,0.162-0.108C11.87,0.514,11.934,0.501,12,0.501\\n\\t\\ts0.13,0.013,0.191,0.038c0.062,0.026,0.116,0.062,0.163,0.108l7,7c0.094,0.094,0.146,0.22,0.146,0.354s-0.052,0.259-0.146,0.354\\n\\t\\tS19.134,8.501,19,8.501s-0.259-0.052-0.354-0.146L12.5,2.208v15.901C12.5,18.384,12.276,18.608,12,18.608z\"\n })));\n};\nvar Icon$a = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$7, null));\n};\nvar SvgUpload = Icon$a;\nvar MemoSvgUpload = /*#__PURE__*/React.memo(SvgUpload);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$6 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.894 2.146c-.159-.318-.454-.645-.894-.645s-.735.327-.894.645L1.015 22.327a1.069 1.069 0 001.019 1.648h19.932a1.07 1.07 0 001.02-1.648L12.893 2.147zM12 9.48a.5.5 0 01.5.5v7a.5.5 0 11-1 0v-7a.5.5 0 01.5-.5zm-.005 9H11.981a.746.746 0 00-.73.773v.001a.755.755 0 00.752.726h.016a.746.746 0 00.73-.774v-.001a.755.755 0 00-.74-.726h-.014z\"\n }));\n};\nvar Icon$9 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$6, null));\n};\nvar SvgWarningFilled = Icon$9;\nvar MemoSvgWarningFilled = /*#__PURE__*/React.memo(SvgWarningFilled);\nvar SVG$5 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.1469 1.145C17.053 1.05191 16.9261 0.999764 16.7939 1L3.5 1C3.22386 1 3 1.22386 3 1.5V22.5C3 22.7761 3.22386 23 3.5 23H20.5C20.7761 23 21 22.7761 21 22.5V5.20711C21 5.20707 21 5.20714 21 5.20711C20.9999 5.07455 20.9473 4.94733 20.8535 4.85361L17.1469 1.145C17.1467 1.14484 17.1471 1.14517 17.1469 1.145ZM16.7926 1.60165e-06C17.1898 -0.000578411 17.571 0.156395 17.8526 0.436502L17.8537 0.437542L21.5605 4.14639C21.5606 4.14644 21.5605 4.14635 21.5605 4.14639C21.8417 4.42762 21.9999 4.80917 22 5.20689V22.5C22 23.3284 21.3284 24 20.5 24H3.5C2.67157 24 2 23.3284 2 22.5V1.5C2 0.671574 2.67157 1.60165e-06 3.5 1.60165e-06H16.7926Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.09282 8.11853C6.00676 8.18302 6 8.23413 6 8.24902V18.749C6 18.7632 6.00656 18.8144 6.093 18.8793C6.17953 18.9442 6.32184 18.999 6.5 18.999H17.5C17.6782 18.999 17.8205 18.9442 17.907 18.8793C17.9934 18.8144 18 18.7632 18 18.749V8.24902C18 8.23413 17.9932 8.18302 17.9072 8.11853C17.8208 8.05382 17.6785 7.99902 17.5 7.99902H6.5C6.32149 7.99902 6.17918 8.05382 6.09282 8.11853ZM5.49318 7.31827C5.76882 7.11172 6.12651 6.99902 6.5 6.99902H17.5C17.8735 6.99902 18.2312 7.11172 18.5068 7.31827C18.7828 7.52503 19 7.84892 19 8.24902V18.749C19 19.1488 18.7826 19.4726 18.507 19.6793C18.2315 19.8859 17.8738 19.999 17.5 19.999H6.5C6.12616 19.999 5.76847 19.8859 5.493 19.6793C5.21744 19.4726 5 19.1488 5 18.749V8.24902C5 7.84892 5.21724 7.52503 5.49318 7.31827Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 13.499C5 13.2229 5.22386 12.999 5.5 12.999H18.5C18.7761 12.999 19 13.2229 19 13.499C19 13.7752 18.7761 13.999 18.5 13.999H5.5C5.22386 13.999 5 13.7752 5 13.499Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 10.499C5 10.2229 5.22386 9.99902 5.5 9.99902H18.5C18.7761 9.99902 19 10.2229 19 10.499C19 10.7752 18.7761 10.999 18.5 10.999H5.5C5.22386 10.999 5 10.7752 5 10.499Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5 16.499C5 16.2229 5.22386 15.999 5.5 15.999H18.5C18.7761 15.999 19 16.2229 19 16.499C19 16.7752 18.7761 16.999 18.5 16.999H5.5C5.22386 16.999 5 16.7752 5 16.499Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.5 6.99902C9.77614 6.99902 10 7.22288 10 7.49902V19.499C10 19.7752 9.77614 19.999 9.5 19.999C9.22386 19.999 9 19.7752 9 19.499V7.49902C9 7.22288 9.22386 6.99902 9.5 6.99902Z\"\n }));\n};\nvar Icon$8 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$5, null));\n};\nvar SvgDocumentTableBased = Icon$8;\nvar MemoSvgDocumentTableBased = /*#__PURE__*/React.memo(SvgDocumentTableBased);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$4 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"1em\",\n height: \"1em\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5,19c-0.827,0-1.5-0.673-1.5-1.5V13h-4v4.5c0,0.827-0.673,1.5-1.5,1.5h-3C4.673,19,4,18.327,4,17.5V16H2.5\\n\\t\\tC1.673,16,1,15.327,1,14.5v-2H0.5C0.224,12.5,0,12.276,0,12c0-0.276,0.224-0.5,0.5-0.5H1v-2C1,8.673,1.673,8,2.5,8H4V6.5\\n\\t\\tC4,5.673,4.673,5,5.5,5h3C9.327,5,10,5.673,10,6.5V12h4V6.5C14,5.673,14.673,5,15.5,5h3C19.327,5,20,5.673,20,6.5V8h1.5\\n\\t\\tC22.327,8,23,8.673,23,9.5v2h0.5c0.276,0,0.5,0.224,0.5,0.5c0,0.276-0.224,0.5-0.5,0.5H23v2c0,0.827-0.673,1.5-1.5,1.5H20v1.5\\n\\t\\tc0,0.827-0.673,1.5-1.5,1.5H15.5z M15.5,6C15.224,6,15,6.224,15,6.5v11c0,0.276,0.224,0.5,0.5,0.5h3c0.276,0,0.5-0.224,0.5-0.5v-11\\n\\t\\tC19,6.224,18.776,6,18.5,6H15.5z M5.5,6C5.224,6,5,6.224,5,6.5v11C5,17.776,5.224,18,5.5,18h3C8.776,18,9,17.776,9,17.5v-11\\n\\t\\tC9,6.224,8.776,6,8.5,6H5.5z M21.5,15c0.276,0,0.5-0.224,0.5-0.5v-5C22,9.224,21.776,9,21.5,9H20L21.5,15z M2.5,9\\n\\t\\tC2.224,9,2,9.224,2,9.5v5C2,14.776,2.224,15,2.5,15H4V9H2.5z\"\n }));\n};\nvar Icon$7 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$4, null));\n};\nvar SvgDumbbell = Icon$7;\nvar MemoSvgDumbbell = /*#__PURE__*/React.memo(SvgDumbbell);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$3 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.5,22.997c-0.827,0-1.5-0.673-1.5-1.5v-20c0-0.827,0.673-1.5,1.5-1.5h20c0.827,0,1.5,0.673,1.5,1.5v20\\n c0,0.827-0.673,1.5-1.5,1.5H1.5z M21.5,21.997c0.276,0,0.5-0.224,0.5-0.5v-6.5H12v7H21.5z M1,21.497c0,0.276,0.224,0.5,0.5,0.5H11\\n v-7H1V21.497z M22,13.997v-7H12v7H22z M11,13.997v-7H1v7H11z M22,5.997v-4.5c0-0.276-0.224-0.5-0.5-0.5h-20\\n c-0.276,0-0.5,0.224-0.5,0.5v4.5H22z\"\n }));\n};\nvar Icon$6 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$3, null));\n};\nvar SvgTable = Icon$6;\nvar MemoSvgTable = /*#__PURE__*/React.memo(SvgTable);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$2 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1,24c-0.551,0-1-0.448-1-1V0.5C0,0.224,0.224,0,0.5,0S1,0.224,1,0.5V2h11.5C13.327,2,14,2.673,14,3.5v2\\n C14,6.327,13.327,7,12.5,7H1v2h11.5c0.827,0,1.5,0.673,1.5,1.5v2c0,0.827-0.673,1.5-1.5,1.5H1v2h17.5c0.827,0,1.5,0.673,1.5,1.5v2\\n c0,0.827-0.673,1.5-1.5,1.5H1v2h22.5c0.276,0,0.5,0.224,0.5,0.5S23.776,24,23.5,24H1z M18.5,20c0.276,0,0.5-0.224,0.5-0.5v-2\\n c0-0.276-0.224-0.5-0.5-0.5H1v3H18.5z M12.5,13c0.276,0,0.5-0.224,0.5-0.5v-2c0-0.276-0.224-0.5-0.5-0.5H1v3H12.5z M12.5,6\\n C12.776,6,13,5.776,13,5.5v-2C13,3.224,12.776,3,12.5,3H1v3H12.5z\"\n })));\n};\nvar Icon$5 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$2, null));\n};\nvar SvgAnalyticsBarsHorizontal = Icon$5;\nvar MemoSvgAnalyticsBarsHorizontal = /*#__PURE__*/React.memo(SvgAnalyticsBarsHorizontal);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG$1 = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"title\", null, \"analytics-bars\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.441,20c-0.276,0-0.5-0.224-0.5-0.5s0.224-0.5,0.5-0.5h0.5v-4c0-0.552,0.449-1,1-1h2c0.551,0,1,0.448,1,1v4h2v-9\\n\\t\\tc0-0.551,0.449-1,1-1h2c0.551,0,1,0.449,1,1v9h2v-7c0-0.551,0.448-1,1-1h2c0.552,0,1,0.449,1,1v7h2V5c0-0.551,0.448-1,1-1h2\\n\\t\\tc0.552,0,1,0.449,1,1v14h0.5c0.276,0,0.5,0.224,0.5,0.5s-0.224,0.5-0.5,0.5H0.441z M21.941,19V5h-2l0,14H21.941z M15.941,19v-7h-2\\n\\t\\tl0,7H15.941z M9.941,19v-9h-2l0,9H9.941z M3.941,19v-4h-2l0,4H3.941z\"\n })));\n};\nvar Icon$4 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG$1, null));\n};\nvar SvgAnalyticsBars = Icon$4;\nvar MemoSvgAnalyticsBars = /*#__PURE__*/React.memo(SvgAnalyticsBars);\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar SVG = function () {\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"1em\",\n height: \"1em\",\n viewBox: \"0 0 24 24\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"rotate(90, 12, 12)\"\n }, /*#__PURE__*/React.createElement(\"title\", null, \"merge\"), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5,23.999c-0.827,0-1.5-0.673-1.5-1.5v-3c0-0.827,0.673-1.5,1.5-1.5h0.977C20.223,15.175,17.866,13,15,13h-2.5v4.999h1\\n\\t\\tc0.827,0,1.5,0.673,1.5,1.5v3c0,0.827-0.673,1.5-1.5,1.5h-3c-0.827,0-1.5-0.673-1.5-1.5v-3c0-0.827,0.673-1.5,1.5-1.5h1V13H9\\n\\t\\tc-2.866,0-5.223,2.175-5.477,4.999H4.5c0.827,0,1.5,0.673,1.5,1.5v3c0,0.827-0.673,1.5-1.5,1.5h-3c-0.827,0-1.5-0.673-1.5-1.5v-3\\n\\t\\tc0-0.827,0.673-1.5,1.5-1.5h1.02C2.777,14.616,5.578,12,9,12h2.5V5.999h-1c-0.827,0-1.5-0.673-1.5-1.5v-3\\n\\t\\tc0-0.827,0.673-1.5,1.5-1.5h3c0.827,0,1.5,0.673,1.5,1.5v3c0,0.827-0.673,1.5-1.5,1.5h-1V12H15c3.422,0,6.223,2.616,6.479,5.999\\n\\t\\tH22.5c0.827,0,1.5,0.673,1.5,1.5v3c0,0.827-0.673,1.5-1.5,1.5H19.5z M19.5,18.999c-0.276,0-0.5,0.224-0.5,0.5v3\\n\\t\\tc0,0.276,0.224,0.5,0.5,0.5h3c0.276,0,0.5-0.224,0.5-0.5v-3c0-0.276-0.224-0.5-0.5-0.5h-1.479C21.014,19,21.007,19,21,19\\n\\t\\ts-0.014,0-0.021-0.001H19.5z M10.5,18.999c-0.276,0-0.5,0.224-0.5,0.5v3c0,0.276,0.224,0.5,0.5,0.5h3c0.276,0,0.5-0.224,0.5-0.5v-3\\n\\t\\tc0-0.276-0.224-0.5-0.5-0.5H10.5z M1.5,18.999c-0.276,0-0.5,0.224-0.5,0.5v3c0,0.276,0.224,0.5,0.5,0.5h3\\n\\t\\tc0.276,0,0.5-0.224,0.5-0.5v-3c0-0.276-0.224-0.5-0.5-0.5H3.021C3.014,19,3.007,19,3,19s-0.014,0-0.021-0.001H1.5z M10.5,0.999\\n\\t\\tc-0.276,0-0.5,0.224-0.5,0.5v3c0,0.276,0.224,0.5,0.5,0.5h3c0.276,0,0.5-0.224,0.5-0.5v-3c0-0.276-0.224-0.5-0.5-0.5H10.5z\"\n })));\n};\nvar Icon$3 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n color = props.color,\n className = props.className;\n return /*#__PURE__*/React.createElement(IconWrapper$4, {\n className: className,\n size: size,\n color: color,\n \"data-testid\": generate(['icon', \"icon--\".concat(size)], props),\n role: \"img\"\n }, /*#__PURE__*/React.createElement(SVG, null));\n};\nvar SvgMerge = Icon$3;\nvar MemoSvgMerge = /*#__PURE__*/React.memo(SvgMerge);\nvar sizeVariant = function (theme, size) {\n switch (size) {\n case 'x-small':\n return theme.spacing.getSize(3);\n // 12\n default:\n case 'small':\n return theme.spacing.getSize(4);\n // 16\n case 'medium':\n return theme.spacing.getSize(6);\n // 24\n case 'large':\n return theme.spacing.getSize(8);\n // 32\n case 'x-large':\n return theme.spacing.getSize(10);\n // 40\n }\n};\nvar Logo$2 = styled.div(templateObject_2$1L || (templateObject_2$1L = __makeTemplateObject([\"\\n display: inline-block;\\n height: \", \";\\n width: \", \";\\n\\n svg {\\n width: 100%;\\n }\\n\\n \", \"\\n\"], [\"\\n display: inline-block;\\n height: \", \";\\n width: \", \";\\n\\n svg {\\n width: 100%;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return sizeVariant(p.activeTheme, p.size);\n}, function (p) {\n return sizeVariant(p.activeTheme, p.size);\n}, function (p) {\n return p.onClick && css(templateObject_1$3k || (templateObject_1$3k = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n});\nvar WideLogo$2 = styled.div(templateObject_4$11 || (templateObject_4$11 = __makeTemplateObject([\"\\n display: inline-block;\\n height: 38px; // Necessary due to the additional space around the logo when with text\\n width: auto;\\n\\n svg {\\n height: 100%;\\n }\\n\\n \", \"\\n\"], [\"\\n display: inline-block;\\n height: 38px; // Necessary due to the additional space around the logo when with text\\n width: auto;\\n\\n svg {\\n height: 100%;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.onClick && css(templateObject_3$1j || (templateObject_3$1j = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n});\nvar templateObject_1$3k, templateObject_2$1L, templateObject_3$1j, templateObject_4$11;\nvar INITIAL_STATE$1 = {\n activeTheme: theme,\n setTheme: function () {\n return null;\n }\n};\nvar Context$1 = /*#__PURE__*/React__default.createContext(INITIAL_STATE$1);\nvar useThemeProvider = function () {\n return React__default.useContext(Context$1);\n};\nvar ThemeProvider$1 = function (_a) {\n var children = _a.children;\n var _b = __read(React__default.useState(INITIAL_STATE$1.activeTheme), 2),\n activeTheme = _b[0],\n setActiveTheme = _b[1];\n var handleSetActiveTheme = React__default.useCallback(function (value) {\n if (activeTheme.name === 'default') {\n setActiveTheme(darkTheme);\n } else {\n setActiveTheme(theme);\n }\n }, [setActiveTheme, activeTheme]);\n return /*#__PURE__*/React__default.createElement(Context$1.Provider, {\n value: __assign(__assign({}, INITIAL_STATE$1), {\n activeTheme: activeTheme,\n setTheme: handleSetActiveTheme\n })\n }, /*#__PURE__*/React__default.createElement(ThemeProvider$2, {\n theme: activeTheme\n }, children));\n};\nvar ThemeProvider = styled(ThemeProvider$1)(templateObject_1$3j || (templateObject_1$3j = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3j;\nvar Logo$1 = function (props) {\n var className = props.className,\n onClick = props.onClick,\n title = props.title,\n _a = props.size,\n size = _a === void 0 ? 'small' : _a;\n var activeTheme = useThemeProvider().activeTheme;\n var getSize = function () {\n switch (size) {\n case 'x-small':\n return 12;\n case 'medium':\n return 24;\n case 'large':\n return 32;\n case 'x-large':\n return 40;\n default:\n case 'small':\n return 16;\n }\n };\n var SVG = function () {\n return /*#__PURE__*/React__default.createElement(\"svg\", {\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 354.47 324\",\n width: getSize(),\n height: getSize()\n }, /*#__PURE__*/React__default.createElement(\"defs\", null, /*#__PURE__*/React__default.createElement(\"style\", null, \".cls-1{fill:#00aeef;}\")), /*#__PURE__*/React__default.createElement(\"circle\", {\n className: \"cls-1\",\n cx: \"24.01\",\n cy: \"161.61\",\n r: \"23.04\",\n transform: \"translate(-25.58 5.93) rotate(-9.22)\"\n }), /*#__PURE__*/React__default.createElement(\"circle\", {\n className: \"cls-1\",\n cx: \"331.15\",\n cy: \"161.61\",\n r: \"23.04\",\n transform: \"translate(55.12 405.71) rotate(-67.5)\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M100.79,62a23,23,0,0,0-23,23V238.4a23,23,0,0,0,46.07,0V85A23,23,0,0,0,100.79,62Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M177.58.36a23,23,0,0,0-23,23v99.83h0a23,23,0,0,0,46.08,0h0V23.39A23,23,0,0,0,177.58.36Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M177.58,177a23,23,0,0,0-23,23v99.82h0a23,23,0,1,0,46.08,0h0V200A23,23,0,0,0,177.58,177Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M254.37,62a23,23,0,0,0-23,23V238.4a23,23,0,0,0,46.07,0V85A23,23,0,0,0,254.37,62Z\"\n }));\n };\n return /*#__PURE__*/React__default.createElement(Logo$2, {\n \"data-testid\": generate(['logo', \"logo--\".concat(size)], props),\n className: className,\n onClick: onClick,\n role: \"button\",\n title: title,\n size: size,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(SVG, null));\n};\nvar WideLogo$1 = function (props) {\n var className = props.className,\n title = props.title,\n onClick = props.onClick,\n _a = props.variant,\n variant = _a === void 0 ? 'light' : _a,\n width = props.width,\n height = props.height;\n var SVG = function () {\n return /*#__PURE__*/React__default.createElement(\"svg\", {\n \"data-name\": \"Layer 1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1064 324\",\n width: width,\n height: height\n }, /*#__PURE__*/React__default.createElement(\"defs\", null, /*#__PURE__*/React__default.createElement(\"style\", null, \".cls-1{fill:#00aeef;}.cls-2{fill:#fff;}\")), /*#__PURE__*/React__default.createElement(\"circle\", {\n className: \"cls-1\",\n cx: \"24.01\",\n cy: \"161.61\",\n r: \"23.04\",\n transform: \"translate(-25.58 5.93) rotate(-9.22)\"\n }), /*#__PURE__*/React__default.createElement(\"circle\", {\n className: \"cls-1\",\n cx: \"331.15\",\n cy: \"161.61\",\n r: \"23.04\",\n transform: \"translate(55.12 405.71) rotate(-67.5)\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M100.79,62a23,23,0,0,0-23,23V238.4a23,23,0,0,0,46.07,0V85A23,23,0,0,0,100.79,62Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M177.58.36a23,23,0,0,0-23,23v99.83h0a23,23,0,0,0,46.08,0h0V23.39A23,23,0,0,0,177.58.36Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M177.58,177a23,23,0,0,0-23,23v99.82h0a23,23,0,1,0,46.08,0h0V200A23,23,0,0,0,177.58,177Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-1\",\n d: \"M254.37,62a23,23,0,0,0-23,23V238.4a23,23,0,0,0,46.07,0V85A23,23,0,0,0,254.37,62Z\"\n }), /*#__PURE__*/React__default.createElement(\"rect\", {\n className: \"cls-2\",\n x: \"829.16\",\n y: \"77.39\",\n width: \"36.95\",\n height: \"168.59\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M989.5,73.09C968,73.09,949.68,79.9,935,92.46V77.39h-37.3V246H935V132.27c13.28-16.5,30.85-25.47,47-25.47,27.26,0,43.76,16.5,43.76,47.35V246H1063V152C1063,103.22,1033.26,73.09,989.5,73.09Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M723.86,216.56c-30.31,0-53.75-24.57-53.75-54.88s23.44-54.88,53.75-54.88a54.88,54.88,0,0,1,48.71,29.58l30-15.47a88.6,88.6,0,1,0,0,81.54l-30-15.46A54.87,54.87,0,0,1,723.86,216.56Z\"\n }), /*#__PURE__*/React__default.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M571.7,91.28c-14.52-11.15-32.3-18.19-51.5-18.19-48.94,0-89.22,39.66-89.22,88.59s40.28,88.6,89.22,88.6c19.2,0,37-7,51.5-18.2V246h36.94V77.39H571.7Zm0,96.56c-9.07,20.09-29.19,28.72-51.5,28.72a54.88,54.88,0,0,1,0-109.76c22.31,0,42.43,8.63,51.5,28.73Z\"\n }), /*#__PURE__*/React__default.createElement(\"circle\", {\n className: \"cls-2\",\n cx: \"847.64\",\n cy: \"23.39\",\n r: \"23.04\",\n transform: \"translate(501.65 797.55) rotate(-67.5)\"\n }));\n };\n var SVGDark = function () {\n return /*#__PURE__*/React__default.createElement(\"svg\", {\n viewBox: \"0 0 73 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: width,\n height: height\n }, /*#__PURE__*/React__default.createElement(\"rect\", {\n width: \"72.2857\",\n height: \"22\",\n fill: \"url(#pattern0)\"\n }), /*#__PURE__*/React__default.createElement(\"defs\", null, /*#__PURE__*/React__default.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: \"1\",\n height: \"1\"\n }, /*#__PURE__*/React__default.createElement(\"use\", {\n xlinkHref: \"#image0_2589_1632\",\n transform: \"translate(0 -0.000268521) scale(0.00093985 0.00308808)\"\n })), /*#__PURE__*/React__default.createElement(\"image\", {\n id: \"image0_2589_1632\",\n width: \"1064\",\n height: \"324\",\n xlinkHref: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABCgAAAFECAYAAADlZg96AAAACXBIWXMAAAsSAAALEgHS3X78AAAgAElEQVR4nO3dy3Ubx9Y24MZZnhN/BKKHPRIdgegIRIwxEBWB6QhMRWAqAlMDjkFFYCoCUyMMDxnBB0aAf5W84QPRvIC4dFd1P89aWPa5SGw00Y2ut3btGszn8wpKMZjMDquqOqiqalhV1eEDh31dVdWsqqqr9O/z0XDmlwsAwEvV9fhFz53T6YXnTtiQgILsDSaz46qqjqqqervGsX6pquq8qqpLYQUAAE+p6/HiuTMFEnsvPFlf47nzXFgB6xFQkKXBZJaS6pN4vfTL4SF3KaSoqup0Phre+K0DAFD9HUps+7kz+ZSeO6fTC8+d8AICCrIzmMzSl8PpFr8g7vtQVdWZigoAgH6LiomzHT53foygwnMnrEBAQTYGk9l+lMW9aeCYblP53nw0vPYJAADol6iauGzwufN4Or248jGDpwkoyEI0v7zcYXr9mPfz0fDcpwAAoB/qenwQjS0bf+6cTi88d8IT/uPk0LZogvlnC18SyR+DyezUhwAAoPtiScdfbT131vVYQAFPEFDQqggn/mj5MH4TUgAAdFuEE20/d74TUsDjLPGgNYPJ7CAS7FxY7gEA0EEtLut4jOUe8AABBa2IbURvMvqSWPhJ40wAgO6Ihpjp+e5VZm/qZ40z4XuWeNCWNhpiruIywhMAALrhPMNwIjmP8AQIAgoaN5jMjhra0mkd6cvrxKcCAKB8dT1OO8W9zfSNpOdOfdBgiYCCNpxlftZPBpPZfgbHAQDAZnLv8/BLXY89d0IQUNCo2LUjxxK7ZXvSbACAssWuHbk/d1aeO+F/BBQ0rZQb8JFeFAAARStl2e47vSjgbwIKGhPbipaQYldRRXGUwXEAAPBCsa3o64LO23EGxwCtE1DQpNJuvAIKAIAylfbcKaCg9yoBBQ0rbcCfa8dnAACedljY+XltmQcIKGhI9HMoZXnHPwaTWWlfbgAAlLW8Y8FzJ70noKApB4We6VKPGwCgl+p6XOpA33MnvSegoCml3nCV2gEAlGW/0N9XqccNWyOgoCmlDvSV2gEAlEVAAYUSUAAAAACtE1AAAAAArRNQAAAAAK0TUAAAAACtE1AAAABdcl3oeyn1uGFrBBQAAECX3BT6XmYZHAO0SkABAAB0xnR6UWolwlUGxwCtElAAAABd86W09zOdXggo6D0BBQAA0DWXhb2fzxkcA7ROQAEAAHRNaQFFaccLOyGgAAAAOmU6vbgpqCrhTkABfxNQAAAAXXRWyHs6m04v7OBB71UCCgAAoIui6WTuzTLvCgpSYOcEFAAAQFedZP6+TlVPwP8IKAAAgE6aTi+uq6r6kOl7+zqdXqiegCUCCgAAoLOm04vTFAZk9v7S0o6jDI4DsiKgAAAAuu4wQoFcHMVOI8ASAQUAANBp0echl5DifTTwBO4RUAAAAJ0X/SjaDilSOHHu0wYPE1AAAAC9ECHFfgs9KVIo8pNwAp4moAAAAHojLfeYTi8OGtzd40sKRSIcAZ4goAAAAHondvf4KQKEXbitqmo0nV4cRg8M4Bk/OEEAAEAfLfpS1PU49aZIgcWbLZyGFEycWs4BLyegAAAAei121UhBRepPcRSvl4QVqadF+jvOLeWA9QkoAAAA/g4qbqqqOotXFZUVw6qqDh44P2nZRgojri3hgO0QUAAAADwgKiuSS+cHdk+TTAAAAKB1AgoAAACgdQIKAAAAoHUCCgAAAKB1AgoAAACgdQIKAAAAoHUCCgAAAKB1AgoAAACgdQIKAAAAoHUCCgAAAKB1AgoAAACgdQIKAAAAoHUCCgAAAKB1P/gV5GMwmR0uHczNfDS86fs5YbsGk9mwqqqDxV86Hw2vnGIAACAHAooWxCDxqKqqFEjsV1X15qGjGExm6R93VVVdV1WVBpKX89HwuuOnhy0ZTGYH8Rk7jFDi1f2/OT5jydelz9mVcAwAAGjaYD6fO+kNiQqJk6qq3m7wE2+rqjpPr5IGkYPJ7LSqqt8yOJSX+jIfDQ+3+1fuToRfx/E5+1cg8QJf4jN2Xsp7BwAAyiagaEAEE+cbDhgf8qmqqtMSggoBxW5FMHESr70t/rDb+IwJKgAAgJ3SJHOHBpPZ/mAySyXzf+4gnEjepbL8wWR2ks2bpnGDySwtF7qJAGib4UQVn9s/BpPZdSwZAQAA2AkBxY7EoPH6sf4SW5QGpL+nICRm0emJ9PseTGapsmGyg2DivtdVVf0lDAMAAHZFQLEDMYhrYtC4LAUhN2a5+yHCqKuoomnS7xGKAAAAbJWAYsti8PZ7Sz8+BSJXQopuWwonXrf0Rt8JKQAAgG0TUGxRNIJsekb7PiFFh2UQTiwIKQAAgK0SUGzJYDI7zmiXihRSXOpJ0UmXGYQTC+8ilAMAANiYgGIL0m4dVVWdZXZYr2JrUzoiwoBdN119qd9iG10AAICNCCi247zhhpirehu7iVC4WLKTS4XOfeeqdQAAgE394AxuJpZ25DarvSwNHvfno+Esn0NiDTlXw6RqnbRzjeUekKm6HqeQMwWJi3/ux6uK/7zq0rHbtGNU/PvNvdf1dHrhu4bi1fX4cOl6qZaum8W/rzop9dD1UkUvqdl0enHt0wLliXtEsvjn8j3iJd+pydd0P4h/T/eE2fJ363R6cfPMn++cwXw+d1lsYDCZ3cQALWcf5qNhq4PHWJ6QawXAU77MR8NWlzBECPZHm8ewoh/no2HvbqKQk7oeD+OB6SBe+w33rbmLB6zF66qPD1eUIYK7xXVy+MLwYVtu710z164ZyENdjxf3huV/tjHu+xKBxeIecdXlj4iAYgMFDRzTA2OrVRQCivUNJrPrjBpjPuXjfDQ8yffwoHuWHp4WrxwD87uYMU6vS4Mv2hKznocthhGruo3r5do1A82J0HL5PpHrPaKK0OIqJgI6FVgIKDZQ0MAxeT8fDVtbJiCgWE/0nvirrZ//Qnfz0VAvCtixuh6n3kJHGQcSz7mNHYnSQ9Vl3odKyZYCvKMCBhtPuV0K+FwzsCVRdXjUgXvEYiLgMu4TRS+3FFCsKXbu+G9Bh/x1PhoerPD/2wkBxXoGk1kKld619fPXMJqPhh6eYIvuPUC97di5vYsHqvNdzgDV9ThVPB7v6u9fUyrTVXW2ZRFKHMXvu5RJpJf63JWBSJPqepzjLPNJW71IMr0vVtPpxU6fuzv+nbpQ9D1Ck8z1lbY7xuu004JmmcUpbQvPo7ghAhtaqpQoKaR8qb14f+/qenwbDYHPd1DSvp95Q2s2sDTgyL1x+ba8jddZXY8vVVasLMfPRpuVp726L8Z36nGHQ4ll9+8RZyU15RVQrK/E7TsPDR7LEcs7SivfLi1QgazE7O9iVqvE5RubeBWVdr/V9fhzPFB1uhEYm4n14ifxTFZqafYmHgr4zlRVwN8ivDzp6Xdqde8e8SXuD9mPBQUU6ysxcTwQUBSltSU5G3gV29pq6AUvEM37jjteLfES32Z/YtB1Op1e5LzVMg2LmdATVTHfWQ74PpU2YwrbFGH/qe/U76T75ZsSvlf/k8ExFCf6T5TI7HZZSv2clXrc0LgUTMS66D89SD0oDbr+qOvxTayXpsfSZyB9FqqqmggnnpTuJX+le0uEn9ALKZio6/F59An0nfqw7L9XBRTrMQCjCaU+VJRY+QGNuhdMGGg9T1DRY0vBxB89LdNeV7q3/CmooOsEE2tZfK9md3+wxKNfPATTBFuNwiPiIeDU/Xhtiweq0+h+b9lih0UYdSqU2NgiqPjS5q4RsG1LPSZK3CkwF4v7w6e4P7Tew0YFBQDsWMzuXKqY2Jo0YJ3EzI+qrY5ZqjBSMbFdb2Lpx3ms0YdiRYB5I5zYmlR5chM9flqlggIAdsTszs4tBlwfo+mX3QsKFtfLmRLtnUvn96iux6mR5mnH3ysdE+HaubB/J/Yi/E87aR239Z2qggIAdiBmIa6FE434JZ3rHGZ+WE9dj09iNlQ40Yy92PHjRn8KShHL+/4rnNi5t1FN0cq9QQUFAGxRzAKfxxc8zXmVw8wPL2M2tHWvYv25KiSy5T7Rir24N3xoutJKBQUAbEnM4N8IJ1rV6swPq4uqiWuDjiwsqpBcN2Qlek24T7QnVVpdxuRLIwQUALCh9MUdTTAnMetAuxYzP2d+D/mJ6yU1wfzd9ZKVRTWFvhS0Lu4T59Es132iXSn4v2oqpBBQAMAGYheJa1UTWfqlrsfpd2PHgkzEDP2N2dCspRnTazt90Jb47F3pSZOV11GduPOdswQUALCmKFH/y1aIWXvtITcPMTP/p9nQIrzWeJY2LIX+r/0CsrMXlRQ7DSkEFADwQkulp787d/C0pSVQdrQpy2LLQUs+aNJfQsys7TykEFAAwAvEGkylp7CCeIi9sgSqaGnJx3mTTfKArO00pBBQAMCK4sv4RukpPG8pnHC9lO9dk03ygOztLKQQUADACmIt9pXSU3hebA2oVLtbFn0pdt4kDyjCTkIKAQUAPCMGW7YQhRXE9fKHc9VJr5pokgcUIz0XbXUJmIACAJ5gsAWrc730QiOd/IFivI4K060QUADAIwy2YHWul14RUgDLXsfuZhsTUADAAwy2YHWul14SUgDL3sV3wUYEFABwj8EWrM710mtCCmDZ2ab3AwEFACwx2ILVuV4QUgBLvjXN3OSECCgAIBhswepcLyxZhBT7Tgr0XupHcbruSRBQAMDfg60Dgy1YTVwvZ04XS1JIcbnN7QaBYv22blWVgAKA3osv0a1tkQVdFrPkVzEghWVpu8FLZwRYd6mHgAKAXovZvnODLXheXC+Xrhee8GZb2w0CRUtLPU5e+gYEFAD03WXM+gHPO3e9sIKtbDcIFO/0pcu+fvA7B6CvoonTm569/S9VVd3E67qqqll6TacX18/9wXjIWKwpXfz74p+p7P/V7g+ftsRM2Nse/QLu4hpZXCeLZWDX0+nF7Kk/GMtg9u9dH/s9u9/8Udfj61XuLZC55XvB4ruzmk4vnlwaeu87c/F9ediz78u96Fe0cmApoACgl+p6fJSaOHX8vd/FoOrba9OBQgzKlh/I/rXWvK7Hh/EgdhAPYkKLDojf6+8df5u3966Xm3X/oviziz//3XUSPW8Ol15dXi6TmmYePBfoQGa28t157zvzuzBjKbxI94CjjlempYqq01XvqQIKAHpnqe9EF93GgOjyudmdXYif+c/PjZnkxQNY1wdjndTx6+VrvLeNA7xVxc+5XuyCEoHFcVwjXQv0XsX5PcrgWOApd0v3gp03el0KL66WlkGk6+S4o5VW5/EM8CwBBQB91LUmf3fxns7bCCWeEjMm54sBblSuLF7CijKcd2zgvBiInG1SJbEtEVik5TMnEVacdOz6eJuWB02nF7alJUef47uz1d1nIrD49l0Zwf5x3Au6ch9IzXMPV3lGEVAA0Cuxjr4rsxO3MQt7XkoJdTwEfnsQjCZ6XZ0t6oT4HXWl70S6XlKZcbbVIBFWHC/Npp52JBxKM8SXOQRCECHl4rszu89kHNNpXDfHHboPnKyypbuAAoDeiNnJLqyjz36gtYo4/vOlWeN3+R91f8QsXhdmvb/E9ZJVddFT7s2mdmGAsveSEm/YkUUwcVZQqL+4D5x2oKIiVVPtPxcK2WYUgD4pfR19CibeT6cX+6WHE8vSrPF0epEGYT9WVfUpnyPrvbPCH4YX18tKZcW5Std6uubTe4n3VKo3UcEGTUvBxIe0e8Z0enFaYtPWdNyx+8fnDA5nE6fP/VkBBQC9EA/GpXbJXjxcHXQpmLgvzaosBRWlP4QVLXqFlLq049v10sEgbxFUfIj3WKLTqMyBpnwqOZhYlo5/Or1I9+ZRwfeAd7GE7VECCgA6Lx6In03tM/UlgoniH65WFUFFegj7ufAZ4yIVvmvHP9dLBseyE/HeDgoN8fY6smyI/KUden5KoXfXvjujl9NBvMcSPVlJJaAAoA9KLFVPsyO/Rnl6LxvLRVl+egj7mMHh9Mmp6yVvSyFeiTOpaR26XhTsyuJecNDU1sFtiPvcYaHLIo+f+h8FFAB0WjwIl1aq/jVmgXs/0xglrSdRTVFqSWsxotrol8IOO10vh328XpZmUr9kcDgv0dmlarSqV9+d8f14XGBI8SqWET5IQAFA15X2IPwpZn5sx7ckqin2CxyIlaa46yXCic7OlD4nqikOC6s0eqVhJlv2oa/fnYWGFAIKAPontucraWu+9/GgwQNitqjUktbsRbXRm4IO+UMX15evKyqN3hdUaXT6XLM8WEH6vP/c5b4zqygwpDh67PoXUADQSfHFV0qZ510081L2vIJ4EHuf/YGWp6QH/Pd9H5A8JO4hh4WEFHvPNcuDZyyWdBS7jfA2xXdjKVWGe49VUQgoAOiqk0Ia/d31vUR9HTEQE1JsSWHVE++FeY+Le8lhATvgfNKLgg0slndZDvm9o4J2vxJQANAPUT1RwsyccGIDQoqtKqEaQaXRiuKekus2hGlg+WMszzG4ZB2fLO96WJyTR/s7ZObBBuYCCgC6qITqCeHEFggpNldQ9cSJ62V1MVA5zCik+BIBk2CCTejV9Iy4T37I+iDDQ7t5CCgA6KLcqyeEE1sUIUURD2OZKqF6wrKONSzNprbZk+JLNDF0z2NT7gMrih49OVZQ3Xd4/78QUMDTlI5BYWLnjpyrJ4QTOxAPY3b3eKFCqid+NShZX1QrtNE4czmY0MSQTQknXq6Epa4qKGhNqaV8BhBQntxng4+FEztzUsiMUU5yL5VOa81L2Y0nW3HPaWpdumCCbRNOrCGuv9yD+1d1Pd5f/i8EFDSl1IDCGkkoSMwGv8r4iD9MpxeXGRxHJ0U5+3EhWyy2Lh4K32V8iF9tQ7k9MVj5dYc/Iu0cMBJMsGXCic2UsITvu2UeAgoaMR8NS/2iMssJZcl5MPM5liGwQzFT7DyvJufqiRQyHenSv11RjbLtGdXbGETuC2DZMuHEhmKJV+5VFAIKWvOlsFN/Ox8NBRRQiJgNfnDLqgzcFlBK3xkxCCvtO6cNOX8m7fSwOydxT9rUcjBhEMm2ffS52prcQ/uD5f8goKBJpaXqyhOhLDnv+22/9uYJhJ6Q+XKoz2bid2dpZ491CSbYtdR7xvKuLYmw93PGh/i6rsfDxX8QUNCk0h42fOlCWXJ9mPloPXbz4oHM1qOPyzXAuRMu7V4shXrp9XEXfXQEE+yS3jO7kXuz4X+qKAQUNGY+Guae3i27LbhvBvROXY8PMp0NvtUPoVVnGmY+KteKoxPVRs2Injir7HpzF2HGvj46NODQPWD7YqJkG0u7dkVAQWtK2SrMFzCUJdcZV0s7WhTn3haV99T1OIUTe1kd1N++mJlv3FMz1d8FE+5lNMHnbKdyrmYXUNCOqErIvXFZqp7wgARlyXE2+IulHVlQRfFvuVZPmBxoWNyj7nf4F0xAN+U8vtlf/IuAgjbkvrbU2lcoSMbLO9xLMhCDK6Hz93IMKD4L9FqzHAx9EkxAN0XvmVyXebxZ/IuAgsZFL4pfMz3zH/WegOLkONj6ZIvErBhohYyXd2iK15K4V42qqvpxOr2wLA26LdtxzmInDwEFrZiPhmcZNsz8qrwUipRjQOFeQq4OMzwugV7L0raufgfQC9n3ofhhm3/jYDLbj/Ujj335pcTmJmbQ4Tg+E68zOBNpveXRfDQ0a8DyvSzdKIcPnJHruJddO1vtirQ9h3vIMoMtcpZjQGEJDkAzcq4U/9aHYuOAYjCZHceX3Solg7/Fn7mL9CadoEuDwn5Kv/fBZHaYQUiRPo+HgrN+G0xmR3EfO1y1n0Hcy67ifuZe1o4cB1uqJ8hSpoGeZrIADUlLuOp6fJtp7671A4qYXTyJGfB11jGmP/MuXmeDySwl52cGiP2TQUixCCfMhPfQYDIbLt3L1rlRp3vZ23j9MZjMUnOxU/eyRuW2vOOL6gkypnoCgOtMA4pvXtSDIj3MDyazNDP036qqftlSk6W9+Lv+O5jMzmLAQI/ErPNhCz0pUs+JfeFEP8W97CYqu7Z1k34X97Jz97LGHGRyHAtneRwGPCi3gOJuOr0QUAA0K9exz7fvqJUDipjlvl4s09iRFFRcx8+iR1JIMR8Nj2J3jyb2q/8wHw0PlOT3z2AyOxhMZot72a462aeg4iaWwLEjGZarp8FWzs2nILfnK9cLQPOyXla3UkARM41/NlQKkn7Gn/Ez6ZnY3WM/9uHehS9pG635aOjz1UMRGPzV0KB2L5Z9qKbYndyqJ8wEk7vc+k+oOAJoXq4TtKttMxr9IXZZNfGY3+Jn0zNRTZEGkj9WVfVxSxUVKfD4aT4aaobZU2kJWQoMWnj3qZriSkixE7nNBvvOIlt1Pc7termdTi8ssQRoWMb33m8h+pMBRQQE7xo7pH97J6TorxQkzEfDk/lomAZ2owgZvq54Qm7j//++qqr/lwIPvSb6K+4jv7R4Al4LKXYipwoKgy1yl1vFkZ07ANpzm+u5f3QXjwzCiYUUUlQxo05PzUfDy+W1qvf6lBwsN3uZj4YeevjHYDI7yeRe9joeyHMbJJQsp3PpvkPu9jM7Pv0nANpzk+tOHg8GFBk90C+kkOI6+hPA/RDCwIAHRZD1e0Zn53VaapIqgzI4li7I6YvVYIvcqaAAIHv/WuKROtxn9kC/8HscG8CzYjlFjoPGXwaT2VEGx1G0uh4bbMHL5HTNfJ1OL+yiBdCebJelPtSDIucqBf0ogFWd7XAb0U3Z2WNzOZ0/gy1KkNP9UKAH0K4sn1vSBNR3AUVswfemvUN61us4RoBHxdKOnJap3ZcGCpZ5bCanHQk0xyRrGe7g4ZoB4CHD+xUUpwWcphKOEWhXCfeJE1UUnWGwBS/jmgHgQf8EFFGZkGUnz3teqaIAHhO9anKuBFtQRbEZFRSwuqx6ttiSF4DHLFdQlNS0TUABPKakQb97WQdMpxfW05O7rHq2ZHAMAGTqW0ARZcZvC/olvRlMZrnt5w3koaSw9ZXdidaWy3fAXQbHACXRUBaARy0qKErc8i63hk9Ay2Kwn+vOHY9RRbGeXJYkKlWnBDk9M6k4AuBRi4CixMG+gAK4r8SwVQUFAAC9Vy0FFCUul/BQD9xX4n2hhIaePE4FBbyMJR4APGoRUJT4gPw6g2MA8lLktp166hTNYAteRqgHwKP+49QAHVJqNYKA4gXqeux8AQB00H9K7iA/mMz0oQDoHwEFAEAH/afUkmgAAACgOyzxAAAAAFr3n/loWPJ+1BotAQAAQAcUXUExHw11TweWfS30bLiXvcB0elFysA4AwCMWAUWJD/W3GRwDkJciB/rz0VA1GNAXmtwC8KhFQHFT4CnyQA/cV+LMeqlVH/zNblLwMgIKAB61CChKfKhX4gvc514GAACFWgQUlwUefonHDOxQoU1/BRTrucvkOMwGU4Kcqk4PMjgGADL1LaCYj4Y3hZUZf41jBrjvU0Fn5G4+Ggpb15PLgOtVBscAz8mpP88wg2MAIFPLu3icFfRLOs/gGIA8lXR/EE50QF2PzQjD6lwvADxqOaC4zKhk9il3AgrgMbHMo5Rdfk4zOIZS5VRFZ5kHuctpicdeXY9VUQDwoH8CivloOCukiuIsjhXgMSUM/D9ZqraRnM6dGWFyl9tzk2sGgAf9595/eZb5zONtYUtRgBbMR8NUZfUl43N/p3piYzkFFLYaJXe5bc3umgHgQd8FFFGZcJLxqTpRPQGsKOd72anqiY3ldP7eZHAM8Kjp9EIFBQBFuF9BUUVH+Y8ZHvwn3e6BVc1HwzRj+GuGJ+zLfDRUCba5rGaE63psRpjc5VRV5noB4EH/Ciiqvx/sTzLbdjRtK3qcwXGQmcFkdjCYzA7Ty++G+yIIyGnb0bRM7SiD4yhezAjn1NjZPYjc5VRFsWf3GwAe8sMTZyU9bKVu+K9bPnNfPfgxmMz243NwGKWh//pcDib/PHt9jfLv9Pm9VErfbyncTEFWBveyNJg+skxtq64zWl5xpK8ImUvXy9uMDvEow94YALTswQqK6n/9KA5brqT4Fk54oO+vwWSWBpcpaPhvVVV/VFX1boWB5ut4CPs9/bnBZHYdf49tzfrrsOXy5ru4l3kY366czufruh7bbpScXWV2bKrJAPiXRwOK6vuQoo0H+y/Cif6KQOEmQolNZ0hfx99zM5jMTgUV/ZPuI/PR8LCl5R4paD0QTuxEbufUgIuc5Xa9CPUA+JcnA4rq+wf7Dw2evg/pZwon+id6SlxHoPBqyydgr6qq39JDmp4V/RS9bN432LvgYwStlhntRm4zwnolka3o25LbVvJCPQC+82xAsTAfDdPa2p92XE2R/u6f4mfRM4PJLDVn/auBXgEp+PhzMJnZSaGH5qPhefQx+bzDd58GAT+nhsOC1t2ZTi9uMmuU+VrjPzKXWxWFUA+A76wcUFSxbV9UU/y85aDiSzzMW6PdU4PJ7Dx6RjTpl+hPYclHz6SKhvloeLSDe1kKJt7PR8P9+WiY2+x+V+V2nk8yOAZ4TG7Xi1APgO+8KKBYSA/eEVT8FCXM65QM3saf/SmCCQ/zPRXhxLuW3n2q1rgSUvTT0r3sx7gfrdMU+C56W/wcwcR5389rw7Jr/FfXY/cTcpXjs5ZQD4B/PLXN6LOi2iF9sZwsbQO5H+XT9x/QZlFa+G37R2uyqdoPJxYWIYW+Jz0V96NvD8lxLzuI1368li3fy65VfbUutwHXXpStW0JGdqbTi+u6Ht/F5zQX7+p6fBI9MgDouY0CimXxgG/mkJVFD4i2w4mF1/H51bCr5+Jell6XfT8XJYgB1+0Omupu4kRAQcYuM/ruXUjXjP5jAKy3xAM2NZjMUhDwS2Yn8m006gTKklsVxau6Hmv+R66yXOZhaVS7nH8gFwIKGhf9HnKttvk9SvyBcuRY7XLmgZ9M5Xi97OlF0bpUjXZV12PbsAOtElDQhtPM1r/eZ6kSFGQ6vTDg4jkGXSF6PazTEHjXVNmz9a4AABAbSURBVFG0JPUAiWVyb9I27BFUmKwBWiGgoFFRnZDb0o773qSGmXkdEvCMzxmeoBMP+e2LGeE3fT8P9+QYxO/pQ9G8CIXun/d0vfy3rsfn7mFA0wQUNK2Uhw8PSVCWXKsoNMtsn/v5v+XaBPiXuh4fZHAcfXL2RFXrO0EF0DQBBY2J3hOl7JLxRi8KKMd0epFmhO8yPOC3dT22O1BLolmp6ol7ptOLm0yXeVRCveZEddEqO7oIKoDGCCho0lHmvSfus34cypLrrPC5tfXNe6R0nf/JNQh4Ez0R2KG4Pl661GcRVGgCDOyMgIImlTaLaNYTypJrg9s9zXdbsWj8x8NyDfSSUzP1O3e2wfWReond1PX4VFABbJuAgiaV1njylWUeUI7p9OKqqqrbTA/4rVnh5kQfg9/68n7XEbt5fMr08PYyD1CKFkufVlna8ZS9uMYEFcBWCShoxGAyOyhseceCZl1QlpxL+n/XAHD31ixd76ucz9PrtJQgg+PolLgHbfO8CiqArRJQ0JRSKxEMJqAsl5k2y1y48gC/c2nw9brj73Erouoo12aZVezqcZzBcXRC3HsudzRhtBxUqBYD1iagoCmlDvQt8YCCRNl6zrPCe0KK3dlS6Xrf5F6lcKbyaGuuGujLshfVYjfCJWAdAgp4moACypP7gOu1JQjbF4PYP7r2vnYttujNtXdLtRTq+T7eQNoitOHKohSE/CGoAF5KQAFAp0ynFzcZN/9beBsDBrYgwokr53JtuX8WvzXNVHm0nrjXtFVZJKgAXkRAAUAX5dwsc+GdkGJzO15X3xdnmfduqWL23/KoF2o5nFi2HFSUtqsb0CABBQCdU0gVRSWk2EwMVptYV99p0bulhB0zhBQvkFE4sSxdq3/W9fhKUAE8REABQFeVUEVRRUhh0PVCsazjxo4dW1NCFUUlpHheOjeZhhPL3kRQYStZ4DsCCgA6qaAqiioe1g26VrTUc8Kyji0pqIqiipDixu4e/7ZUVVTKbjYqyIDvCCgA6LLTQmaFK4Ou1USjvb+EE9s3nV6cZr6jx7LF7h5H+RxSu+LecV1QVdGn6fTiOoPjADIioACgs6KKoqQS4jTo+quuxycZHEtWlsrWbSW6W6UsjariepnU9bikY96JuGf8VVA/lrvCPmtAQwQUAHTdWUGzwgu/60vxP0tLOkopWy/WdHqRQqAvhR3/b3G97GdwLI2K4C7tYvN7YYd+FgEywHcEFAB0WqytL7Ei4U0s+ehtCXsMvk5jZlgzzOaUer1c9+l6ifeaBvlvMzicl7gtrLINaJCAAoDOm04v0gzj5wLf56KEvXezwzH4SuvTf8vgcHol+gJ8LPA99+J6Se8tqiYmhfZiOY7gGOBfBBQA9MVJQQ0z70uzw/9N1QRdX/ZR1+PDNMCMwVcp6+m7qKSGmfd18npZqii6LrBqYuHzdHpxlcehADkSUADQC7HeufSmbL/Fso/OBRVLwcSfMcCkRTHDfVz472BxvRTddHYpmLiJ91TqDjZ3HfhMATsmoACgN6bTi7MCGwDet9eVoCIGXsd1Pb4WTOQnZro/Ff429qLpbHHXS4eCiQVLO4BnCSgA6Jujgpd6LFsEFf+Xtt9MFQj5HNrTolriPAZef2iAmbWTgpd6LHu1FOydx84wWUrHFtfH/3UkmKhiacdlBscBZO4HvyAA+iTN4KVZ++hx0BVp+813dT1OA8k0CDiPRofZiKaX6XWot0Q5lq6XPzvylvaWrpev6VpJ10zbW15GYHIUSyC6dn3cWtoBrEpAAUDvpJm8uh6nXQp+6dh7fxXv6ZelsCKV6V81WVodZfQHEUYcWrpRtrTUo67HHzq4o0qq3Pk9loB8XVwvTTRxjGtkcX0cdTy0O7K0A1iVgAKAXppOL05iWURXlxf8E1ZUfw+Ivkb3/8XrZtNZ46UgYj9eB/FSIdEx0+nFaVwvXQ2bXsfrt7oeV9GrZvlaWTu0WLpOll99Wdb0a27VXEDeBBQA9Nlh9EHowhrv5ywGYO8W/78YiN3GOUhmMSC7bxFALBz05JzxvaP4fPQhgHqzHMbEtVLda7J7HdfMsuVrZdjz/iqfozExwMoEFAD0VqyvTyHFXz0+Da/uDTjftngsZCyul6NYNtTXgOrNI//O977qOwGswy4eAPRalB+/7/t5gFXE9XLiZPGEO1uKAusSUADQe9PpRerk/7Hv5wFWEdfLByeLRxzqOwGsS0ABANE0s6qqT84FPC81zXS98ID3wglgEwIKAAjT6cXxvSZ4wCPievns/BDeR3UNwNoEFADwvaNo8AY879j1QqqmEU4A2yCgAIAl0djt0KALnud6IcIJO3YAWyGgAIB7DLpgda6XXhNOAFsloACABxh0wepcL70knAC2TkABAI9YGnRpBAjPEFL0ykfhBLALAgoAeEIadE2nF0e2VITnxfVy4HrptPexLTPA1gkoAGAFMVv40bmC58X1IqToHluJAjsloACAFcWs4XvnC54XIYXrpRvuqqr6STgB7JqAAgBeIB7Qf4oHduAJcb387HopWuopcjCdXlz3/UQAuyegAIAXigf1fc0A4XnT6cWV5pnFSst0DqfTi5u+nwigGQIKAFjDUjNAfSnyZ2Dcsgj1DvWlKMqvaZlO7M4C0AgBBQBsIPpSjJSwZ+k2luNc9v1E5CBCvUVfCtdLvm6j38RZ308E0DwBBQBsaDq9uIwlH5+dy2x8tm4+T9GX4kBlS5Y+um6ANv3g7APA5qIM+qiux6mi4rSqqj2ntRVpZv44QiMyFT0NDup6nK6V3/yeWncb181Vz88D0DIVFACwRVEWrZqiHemc7wsnyjGdXpzGMpwvfT8XLVpUTQgngNapoACALVuqpjiqqioFFq+c451Ks78ngokyLRpoqj5q3Ne4bgQTQDZUUADAjqQB83R6kaopPmgKuDMfYvZXOFG4peojO+Ps1l3s0KFqAsiOgAIAdizK2A9ssbhVaTnHj+nc2gaxO2Knj1RJ8aNlHzvxMZZB2aEDyJKAol9u+34CANqSmgLGFos/Cio2kgatP0+nF0fRaJEOiuvlMP2uBRVb8SkCvROBHpAzAcV6Sr2xe5ArS6lbfNmaDJ4gqFjbIpg4VJbeH+l3LajYyCKYOBboASUQUKxhPhqWOgDzxVQWQRh02ANBhR4VDxNMcD+oEOw97S6WcggmgOLYxWN9qfPx68KO2cx2Wa5K3Bu+4AAPWhGDh+O6Hg/TP1NXfbt+fJMGoWexwwN8EyHVVV2PT+NaObbrxz9uY9egc8s4gFIJKNZ3VWBAYeapIPPR8GowKe75QvktrCkGFGlwcVbX48MYeL3r2fk0wGIlEeylgOKkrsfHcb286eHZS9USl3HNeM4DiiegWF/6EviloOO9NbNdpNSl/m1BB26bP9iCpVniNAA7ildJ94KXMMBiI9PpxXn6/NT1eD+uleMCJ5Fe6nNcN5fCPKBLBvP53C90TYPJbFZQWeHH+Wh40tYPH0xmpyUuV0gVAfPR8LCtHz6YzNJD1h9t/fw1/DgfDa11hR2IJSCLsOKw8LL2u6XBlWCTrVsKK446UllxF5NjQgmg0wQUGxhMZmcFVVG0OnAUUKxnMJkNo+lkCQORz/PR8CiD44BeiGUgi1cJA7CvS4MrFX00JsK9xbVyVFCPly8RSlypLgL6QkCxgcFkltL5/xZwqK0PHAUU6yvo3P2c+mZkcBzQS0uBxUG82hyE3UVj5qt4XZvxJRdLgcXB0j/bngi4jWvmWiAB9JmAYkODyey8gCZmrZfdCyjWV0gVRevnCfi3CC3245UGYcMtD8Zu4/60eKVB1Y1tDSlNhBYHS9fJ4jttm9VJi+BuFv+8ietFGAEQNMnc3KKBWa6Dx496ApRtPhrOIuD5PeM30lp/E+Bxzw18IsBYthikLVuED/8woKJrosLn6rEdz6Knxf69/3oRZixzvQBsQAXFFgwmsxRQTDI8tDSzdZAGuG0fiAqKzQ0ms+tMu5J/mI+GpxkcBwAAULD/+OVtbj4apqZfnzI8tOMcwgm25ijKQ3PyVTgBAABsg4Bie06iQ3ku3mtY2C2xVCenXTLultboAgAAbERAsSVRqXCYSUiR+k6cZ3AcbFmETu8zOK/fwgkVOgAAwLYIKLYok5Di1/loqGFhh0X41GZIsQgnrjt/sgEAgMYIKLZsKaT43PCPvotlHWcN/1xaECHFTy30pEjh275wAgAA2DYBxQ6kkGI+GqZeAb82NID8GjPalnX0SIQEacuzLw2967RbRxa7wgAAAN0joNihqGY42GE1xV0s6Tgwo91PEYalip1RbCu7CykA+cluHQAAwC4JKHYs7bwQ1RQ/b3Er0jQQ/RCl9pZ08G2r2/louB+9KbYVVKRg4ucUgAjAAACAXRvM53MnuUGDyWxYVdVx9Kl4+4KfnAadaQeHNBC9LPB9p9n33zI4lJf6EhUKRRlMZgdLn7PXLzj2FEpcxufsprT3DQAAlEtA0bIYSO7HUpD70lr/NHN9Xfq6fwFFeyIUO4jX8IEDSUHETWxhCgAA0IofnPZ2Ren8dcxaw9ZFuHUVLwAAgCzpQQEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAEAAAC0TkABAAAAtE5AAQAAALROQAFPu3Z+AAAAdk9AQVOuCj3TswyOAQAAoPMEFDTlptAzXWqwAgAAUBQBBY2Yj4YpoLgr8Gxb4gEAANAAAQVNuizsbH+dj4aWeAAAADRAQEGTSgsozjM4BgAAgF4QUNCY+Wh4Wdgyj9ICFQAAgGIJKGjaWSFn/FP0zQAAAKABAgqadlZIFUUpQQoAAEAnCChoVDSdzH3wn6on7N4BAADQoMF8Pne+adxgMksBwOsMz3yq7ti3ewcAAECzVFDQluNMz/yxcAIAAKB5AgpaEUso3md29j/GTiMAAAA0zBIPWjWYzM6rqnqXwW8h9Z3ItaoDAACg81RQ0KoIBT61fBjCCQAAgJYJKGhdhAO/tnQcwgkAAIAMWOJBNgaT2WFVVakHxF4Dx5R26ziZj4bnPgEAAADtU0FBNuaj4VXa4rOBJR9fqqo6EE4AAADkQwUFWYpqitOqqt5s8fhSMHEaQQgAAAAZEVCQtcFkdlBV1XG81ln6cRfLRs4FEwAAAPkSUFCMCCtSZcVBLAU5eCC0SFUSs6qqrququhJKAAAAlEFAAQAAALSrqqr/D3MnlIHqGkCaAAAAAElFTkSuQmCC\"\n })));\n };\n return /*#__PURE__*/React__default.createElement(WideLogo$2, {\n \"data-testid\": generate(['wide-logo'], props),\n className: className,\n role: onClick ? 'button' : 'img',\n title: title,\n onClick: onClick\n }, variant === 'light' ? /*#__PURE__*/React__default.createElement(SVG, null) : /*#__PURE__*/React__default.createElement(SVGDark, null));\n};\n\n/**\r\n @param className - (optional) - string\r\n @param onClick - (optional) - () => void\r\n @param title - (optional) - string\r\n @param variant - (optional) - 'light-text' | 'dark-text'\r\n @param size - (optional) - 'x-small' | 'small' | 'medium' | 'large' | 'x-large'\r\n */\nvar Logo = styled(Logo$1)(templateObject_1$3i || (templateObject_1$3i = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param className - (optional) - string\r\n @param title - (optional) - string\r\n @param onClick - (optional) - () => void\r\n @param variant - (optional) - 'light' | 'dark'\r\n */\nvar WideLogo = styled(WideLogo$1)(templateObject_2$1K || (templateObject_2$1K = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3i, templateObject_2$1K;\nvar TruncationWrapper = styled.div(templateObject_2$1J || (templateObject_2$1J = __makeTemplateObject([\"\\n display: \", \";\\n width: 100%;\\n overflow: hidden;\\n \", \";\\n\"], [\"\\n display: \", \";\\n width: 100%;\\n overflow: hidden;\\n \", \";\\n\"])), function (p) {\n return p.clamp ? '-webkit-box' : 'block';\n}, function (p) {\n return p.clamp && css(templateObject_1$3h || (templateObject_1$3h = __makeTemplateObject([\"\\n -webkit-line-clamp: \", \";\\n -webkit-box-orient: vertical;\\n \"], [\"\\n -webkit-line-clamp: \", \";\\n -webkit-box-orient: vertical;\\n \"])), p.clamp);\n});\nvar HeadingWithLogo = styled.div(templateObject_3$1i || (templateObject_3$1i = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\\n \", \" {\\n display: flex;\\n flex-shrink: 0;\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n\\n \", \" {\\n display: flex;\\n flex-shrink: 0;\\n }\\n\"])), Logo);\nvar HeadingWrapperLogo = styled.div(templateObject_4$10 || (templateObject_4$10 = __makeTemplateObject([\"\\n border-right: 1px solid \", \";\\n padding-right: \", \";\\n margin-right: \", \";\\n\"], [\"\\n border-right: 1px solid \", \";\\n padding-right: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$3h, templateObject_2$1J, templateObject_3$1i, templateObject_4$10;\nvar top$1 = 'top';\nvar bottom$1 = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top$1, bottom$1, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}\nfunction isElement$1(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\nfunction effect$2(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nvar applyStyles$1 = {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect$2,\n requires: ['computeStyles']\n};\nfunction getBasePlacement$1(placement) {\n return placement.split('-')[0];\n}\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\nfunction getUAString() {\n var uaData = navigator.userAgentData;\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\nfunction isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = isElement$1(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}\n\n// means it doesn't take into account transforms.\n\nfunction getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n return false;\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\nfunction getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement$1(element) ? element.ownerDocument :\n // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}\nfunction getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot ||\n // step into the shadow DOM of the parent of a slotted node\n element.parentNode || (\n // DOM Element detected\n isShadowRoot(element) ? element.host : null) ||\n // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\nfunction getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\nfunction within(min$1, value, max$1) {\n return max(min$1, min(value, max$1));\n}\nfunction withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\nfunction arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement$1(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n if (!arrowElement || !popperOffsets) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top$1 : left;\n var maxProp = axis === 'y' ? bottom$1 : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\nfunction effect$1(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\nvar arrow$1 = {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect$1,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top$1;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n offsetParent = offsetParent;\n if (placement === top$1 || (placement === left || placement === right) && variation === end) {\n sideY = bottom$1;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height :\n // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top$1 || placement === bottom$1) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width :\n // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement$1(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nvar computeStyles$1 = {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};\nvar passive = {\n passive: true\n};\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nvar eventListeners = {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};\nvar hash$1 = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash$1[matched];\n });\n}\nvar hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}\nfunction getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}\nfunction getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}\n\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList :\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement$1(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n return clippingParents.filter(function (clippingParent) {\n return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement$1(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top$1:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n case bottom$1:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n }\n }\n return offsets;\n}\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement$1(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom$1].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top$1, bottom$1].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n return overflowOffsets;\n}\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements$1.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements$1;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement$1(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement$1(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement$1(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement$1(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n var _basePlacement = getBasePlacement$1(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top$1, bottom$1].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom$1 : top$1;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\") break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\nvar flip$1 = {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return [top$1, right, bottom$1, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nvar hide$1 = {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement$1(placement);\n var invertDistance = [left, top$1].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nvar offset$1 = {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nvar popperOffsets$1 = {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};\nfunction getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement$1(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets) {\n return;\n }\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === 'y' ? top$1 : left;\n var altSide = mainAxis === 'y' ? bottom$1 : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min$1 = offset + overflow[mainSide];\n var max$1 = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === 'x' ? top$1 : left;\n var _altSide = mainAxis === 'x' ? bottom$1 : right;\n var _offset = popperOffsets[altAxis];\n var _len = altAxis === 'y' ? 'height' : 'width';\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [top$1, left].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nvar preventOverflow$1 = {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\nfunction getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\nfunction debounce$1(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n return pending;\n };\n}\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement$1(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce$1(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n var noopFn = function noopFn() {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nvar defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n/**!\n* tippy.js v6.3.7\n* (c) 2017-2021 atomiks\n* MIT License\n*/\n\nvar ROUND_ARROW = '<svg width=\"16\" height=\"6\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M0 6s1.796-.013 4.67-3.615C5.851.9 6.93.006 8 0c1.07-.006 2.148.887 3.343 2.385C14.233 6.005 16 6 16 6H0z\"></svg>';\nvar BOX_CLASS = \"tippy-box\";\nvar CONTENT_CLASS = \"tippy-content\";\nvar BACKDROP_CLASS = \"tippy-backdrop\";\nvar ARROW_CLASS = \"tippy-arrow\";\nvar SVG_ARROW_CLASS = \"tippy-svg-arrow\";\nvar TOUCH_OPTIONS = {\n passive: true,\n capture: true\n};\nvar TIPPY_DEFAULT_APPEND_TO = function TIPPY_DEFAULT_APPEND_TO() {\n return document.body;\n};\nfunction hasOwnProperty(obj, key) {\n return {}.hasOwnProperty.call(obj, key);\n}\nfunction getValueAtIndexOrReturn(value, index, defaultValue) {\n if (Array.isArray(value)) {\n var v = value[index];\n return v == null ? Array.isArray(defaultValue) ? defaultValue[index] : defaultValue : v;\n }\n return value;\n}\nfunction isType(value, type) {\n var str = {}.toString.call(value);\n return str.indexOf('[object') === 0 && str.indexOf(type + \"]\") > -1;\n}\nfunction invokeWithArgsOrReturn(value, args) {\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\nfunction debounce(fn, ms) {\n // Avoid wrapping in `setTimeout` if ms is 0 anyway\n if (ms === 0) {\n return fn;\n }\n var timeout;\n return function (arg) {\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn(arg);\n }, ms);\n };\n}\nfunction removeProperties(obj, keys) {\n var clone = Object.assign({}, obj);\n keys.forEach(function (key) {\n delete clone[key];\n });\n return clone;\n}\nfunction splitBySpaces(value) {\n return value.split(/\\s+/).filter(Boolean);\n}\nfunction normalizeToArray(value) {\n return [].concat(value);\n}\nfunction pushIfUnique(arr, value) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n}\nfunction unique(arr) {\n return arr.filter(function (item, index) {\n return arr.indexOf(item) === index;\n });\n}\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\nfunction arrayFrom(value) {\n return [].slice.call(value);\n}\nfunction removeUndefinedProps(obj) {\n return Object.keys(obj).reduce(function (acc, key) {\n if (obj[key] !== undefined) {\n acc[key] = obj[key];\n }\n return acc;\n }, {});\n}\nfunction div() {\n return document.createElement('div');\n}\nfunction isElement(value) {\n return ['Element', 'Fragment'].some(function (type) {\n return isType(value, type);\n });\n}\nfunction isNodeList(value) {\n return isType(value, 'NodeList');\n}\nfunction isMouseEvent(value) {\n return isType(value, 'MouseEvent');\n}\nfunction isReferenceElement(value) {\n return !!(value && value._tippy && value._tippy.reference === value);\n}\nfunction getArrayOfElements(value) {\n if (isElement(value)) {\n return [value];\n }\n if (isNodeList(value)) {\n return arrayFrom(value);\n }\n if (Array.isArray(value)) {\n return value;\n }\n return arrayFrom(document.querySelectorAll(value));\n}\nfunction setTransitionDuration(els, value) {\n els.forEach(function (el) {\n if (el) {\n el.style.transitionDuration = value + \"ms\";\n }\n });\n}\nfunction setVisibilityState(els, state) {\n els.forEach(function (el) {\n if (el) {\n el.setAttribute('data-state', state);\n }\n });\n}\nfunction getOwnerDocument(elementOrElements) {\n var _element$ownerDocumen;\n var _normalizeToArray = normalizeToArray(elementOrElements),\n element = _normalizeToArray[0]; // Elements created via a <template> have an ownerDocument with no reference to the body\n\n return element != null && (_element$ownerDocumen = element.ownerDocument) != null && _element$ownerDocumen.body ? element.ownerDocument : document;\n}\nfunction isCursorOutsideInteractiveBorder(popperTreeData, event) {\n var clientX = event.clientX,\n clientY = event.clientY;\n return popperTreeData.every(function (_ref) {\n var popperRect = _ref.popperRect,\n popperState = _ref.popperState,\n props = _ref.props;\n var interactiveBorder = props.interactiveBorder;\n var basePlacement = getBasePlacement(popperState.placement);\n var offsetData = popperState.modifiersData.offset;\n if (!offsetData) {\n return true;\n }\n var topDistance = basePlacement === 'bottom' ? offsetData.top.y : 0;\n var bottomDistance = basePlacement === 'top' ? offsetData.bottom.y : 0;\n var leftDistance = basePlacement === 'right' ? offsetData.left.x : 0;\n var rightDistance = basePlacement === 'left' ? offsetData.right.x : 0;\n var exceedsTop = popperRect.top - clientY + topDistance > interactiveBorder;\n var exceedsBottom = clientY - popperRect.bottom - bottomDistance > interactiveBorder;\n var exceedsLeft = popperRect.left - clientX + leftDistance > interactiveBorder;\n var exceedsRight = clientX - popperRect.right - rightDistance > interactiveBorder;\n return exceedsTop || exceedsBottom || exceedsLeft || exceedsRight;\n });\n}\nfunction updateTransitionEndListener(box, action, listener) {\n var method = action + \"EventListener\"; // some browsers apparently support `transition` (unprefixed) but only fire\n // `webkitTransitionEnd`...\n\n ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {\n box[method](event, listener);\n });\n}\n/**\n * Compared to xxx.contains, this function works for dom structures with shadow\n * dom\n */\n\nfunction actualContains(parent, child) {\n var target = child;\n while (target) {\n var _target$getRootNode;\n if (parent.contains(target)) {\n return true;\n }\n target = target.getRootNode == null ? void 0 : (_target$getRootNode = target.getRootNode()) == null ? void 0 : _target$getRootNode.host;\n }\n return false;\n}\nvar currentInput = {\n isTouch: false\n};\nvar lastMouseMoveTime = 0;\n/**\n * When a `touchstart` event is fired, it's assumed the user is using touch\n * input. We'll bind a `mousemove` event listener to listen for mouse input in\n * the future. This way, the `isTouch` property is fully dynamic and will handle\n * hybrid devices that use a mix of touch + mouse input.\n */\n\nfunction onDocumentTouchStart() {\n if (currentInput.isTouch) {\n return;\n }\n currentInput.isTouch = true;\n if (window.performance) {\n document.addEventListener('mousemove', onDocumentMouseMove);\n }\n}\n/**\n * When two `mousemove` event are fired consecutively within 20ms, it's assumed\n * the user is using mouse input again. `mousemove` can fire on touch devices as\n * well, but very rarely that quickly.\n */\n\nfunction onDocumentMouseMove() {\n var now = performance.now();\n if (now - lastMouseMoveTime < 20) {\n currentInput.isTouch = false;\n document.removeEventListener('mousemove', onDocumentMouseMove);\n }\n lastMouseMoveTime = now;\n}\n/**\n * When an element is in focus and has a tippy, leaving the tab/window and\n * returning causes it to show again. For mouse users this is unexpected, but\n * for keyboard use it makes sense.\n * TODO: find a better technique to solve this problem\n */\n\nfunction onWindowBlur() {\n var activeElement = document.activeElement;\n if (isReferenceElement(activeElement)) {\n var instance = activeElement._tippy;\n if (activeElement.blur && !instance.state.isVisible) {\n activeElement.blur();\n }\n }\n}\nfunction bindGlobalEventListeners() {\n document.addEventListener('touchstart', onDocumentTouchStart, TOUCH_OPTIONS);\n window.addEventListener('blur', onWindowBlur);\n}\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nvar isIE11 = isBrowser ?\n// @ts-ignore\n!!window.msCrypto : false;\nfunction createMemoryLeakWarning(method) {\n var txt = method === 'destroy' ? 'n already-' : ' ';\n return [method + \"() was called on a\" + txt + \"destroyed instance. This is a no-op but\", 'indicates a potential memory leak.'].join(' ');\n}\nfunction clean(value) {\n var spacesAndTabs = /[ \\t]{2,}/g;\n var lineStartWithSpaces = /^[ \\t]*/gm;\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n}\nfunction getDevMessage(message) {\n return clean(\"\\n %ctippy.js\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development-only message. It will be removed in production.\\n \");\n}\nfunction getFormattedMessage(message) {\n return [getDevMessage(message),\n // title\n 'color: #00C584; font-size: 1.3em; font-weight: bold;',\n // message\n 'line-height: 1.5',\n // footer\n 'color: #a6a095;'];\n} // Assume warnings and errors never have the same message\n\nvar visitedMessages;\nif (process.env.NODE_ENV !== \"production\") {\n resetVisitedMessages();\n}\nfunction resetVisitedMessages() {\n visitedMessages = new Set();\n}\nfunction warnWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console;\n visitedMessages.add(message);\n (_console = console).warn.apply(_console, getFormattedMessage(message));\n }\n}\nfunction errorWhen(condition, message) {\n if (condition && !visitedMessages.has(message)) {\n var _console2;\n visitedMessages.add(message);\n (_console2 = console).error.apply(_console2, getFormattedMessage(message));\n }\n}\nfunction validateTargets(targets) {\n var didPassFalsyValue = !targets;\n var didPassPlainObject = Object.prototype.toString.call(targets) === '[object Object]' && !targets.addEventListener;\n errorWhen(didPassFalsyValue, ['tippy() was passed', '`' + String(targets) + '`', 'as its targets (first) argument. Valid types are: String, Element,', 'Element[], or NodeList.'].join(' '));\n errorWhen(didPassPlainObject, ['tippy() was passed a plain object which is not supported as an argument', 'for virtual positioning. Use props.getReferenceClientRect instead.'].join(' '));\n}\nvar pluginProps = {\n animateFill: false,\n followCursor: false,\n inlinePositioning: false,\n sticky: false\n};\nvar renderProps = {\n allowHTML: false,\n animation: 'fade',\n arrow: true,\n content: '',\n inertia: false,\n maxWidth: 350,\n role: 'tooltip',\n theme: '',\n zIndex: 9999\n};\nvar defaultProps = Object.assign({\n appendTo: TIPPY_DEFAULT_APPEND_TO,\n aria: {\n content: 'auto',\n expanded: 'auto'\n },\n delay: 0,\n duration: [300, 250],\n getReferenceClientRect: null,\n hideOnClick: true,\n ignoreAttributes: false,\n interactive: false,\n interactiveBorder: 2,\n interactiveDebounce: 0,\n moveTransition: '',\n offset: [0, 10],\n onAfterUpdate: function onAfterUpdate() {},\n onBeforeUpdate: function onBeforeUpdate() {},\n onCreate: function onCreate() {},\n onDestroy: function onDestroy() {},\n onHidden: function onHidden() {},\n onHide: function onHide() {},\n onMount: function onMount() {},\n onShow: function onShow() {},\n onShown: function onShown() {},\n onTrigger: function onTrigger() {},\n onUntrigger: function onUntrigger() {},\n onClickOutside: function onClickOutside() {},\n placement: 'top',\n plugins: [],\n popperOptions: {},\n render: null,\n showOnCreate: false,\n touch: true,\n trigger: 'mouseenter focus',\n triggerTarget: null\n}, pluginProps, renderProps);\nvar defaultKeys = Object.keys(defaultProps);\nvar setDefaultProps = function setDefaultProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n validateProps(partialProps, []);\n }\n var keys = Object.keys(partialProps);\n keys.forEach(function (key) {\n defaultProps[key] = partialProps[key];\n });\n};\nfunction getExtendedPassedProps(passedProps) {\n var plugins = passedProps.plugins || [];\n var pluginProps = plugins.reduce(function (acc, plugin) {\n var name = plugin.name,\n defaultValue = plugin.defaultValue;\n if (name) {\n var _name;\n acc[name] = passedProps[name] !== undefined ? passedProps[name] : (_name = defaultProps[name]) != null ? _name : defaultValue;\n }\n return acc;\n }, {});\n return Object.assign({}, passedProps, pluginProps);\n}\nfunction getDataAttributeProps(reference, plugins) {\n var propKeys = plugins ? Object.keys(getExtendedPassedProps(Object.assign({}, defaultProps, {\n plugins: plugins\n }))) : defaultKeys;\n var props = propKeys.reduce(function (acc, key) {\n var valueAsString = (reference.getAttribute(\"data-tippy-\" + key) || '').trim();\n if (!valueAsString) {\n return acc;\n }\n if (key === 'content') {\n acc[key] = valueAsString;\n } else {\n try {\n acc[key] = JSON.parse(valueAsString);\n } catch (e) {\n acc[key] = valueAsString;\n }\n }\n return acc;\n }, {});\n return props;\n}\nfunction evaluateProps(reference, props) {\n var out = Object.assign({}, props, {\n content: invokeWithArgsOrReturn(props.content, [reference])\n }, props.ignoreAttributes ? {} : getDataAttributeProps(reference, props.plugins));\n out.aria = Object.assign({}, defaultProps.aria, out.aria);\n out.aria = {\n expanded: out.aria.expanded === 'auto' ? props.interactive : out.aria.expanded,\n content: out.aria.content === 'auto' ? props.interactive ? null : 'describedby' : out.aria.content\n };\n return out;\n}\nfunction validateProps(partialProps, plugins) {\n if (partialProps === void 0) {\n partialProps = {};\n }\n if (plugins === void 0) {\n plugins = [];\n }\n var keys = Object.keys(partialProps);\n keys.forEach(function (prop) {\n var nonPluginProps = removeProperties(defaultProps, Object.keys(pluginProps));\n var didPassUnknownProp = !hasOwnProperty(nonPluginProps, prop); // Check if the prop exists in `plugins`\n\n if (didPassUnknownProp) {\n didPassUnknownProp = plugins.filter(function (plugin) {\n return plugin.name === prop;\n }).length === 0;\n }\n warnWhen(didPassUnknownProp, [\"`\" + prop + \"`\", \"is not a valid prop. You may have spelled it incorrectly, or if it's\", 'a plugin, forgot to pass it in an array as props.plugins.', '\\n\\n', 'All props: https://atomiks.github.io/tippyjs/v6/all-props/\\n', 'Plugins: https://atomiks.github.io/tippyjs/v6/plugins/'].join(' '));\n });\n}\nvar innerHTML = function innerHTML() {\n return 'innerHTML';\n};\nfunction dangerouslySetInnerHTML(element, html) {\n element[innerHTML()] = html;\n}\nfunction createArrowElement(value) {\n var arrow = div();\n if (value === true) {\n arrow.className = ARROW_CLASS;\n } else {\n arrow.className = SVG_ARROW_CLASS;\n if (isElement(value)) {\n arrow.appendChild(value);\n } else {\n dangerouslySetInnerHTML(arrow, value);\n }\n }\n return arrow;\n}\nfunction setContent(content, props) {\n if (isElement(props.content)) {\n dangerouslySetInnerHTML(content, '');\n content.appendChild(props.content);\n } else if (typeof props.content !== 'function') {\n if (props.allowHTML) {\n dangerouslySetInnerHTML(content, props.content);\n } else {\n content.textContent = props.content;\n }\n }\n}\nfunction getChildren(popper) {\n var box = popper.firstElementChild;\n var boxChildren = arrayFrom(box.children);\n return {\n box: box,\n content: boxChildren.find(function (node) {\n return node.classList.contains(CONTENT_CLASS);\n }),\n arrow: boxChildren.find(function (node) {\n return node.classList.contains(ARROW_CLASS) || node.classList.contains(SVG_ARROW_CLASS);\n }),\n backdrop: boxChildren.find(function (node) {\n return node.classList.contains(BACKDROP_CLASS);\n })\n };\n}\nfunction render(instance) {\n var popper = div();\n var box = div();\n box.className = BOX_CLASS;\n box.setAttribute('data-state', 'hidden');\n box.setAttribute('tabindex', '-1');\n var content = div();\n content.className = CONTENT_CLASS;\n content.setAttribute('data-state', 'hidden');\n setContent(content, instance.props);\n popper.appendChild(box);\n box.appendChild(content);\n onUpdate(instance.props, instance.props);\n function onUpdate(prevProps, nextProps) {\n var _getChildren = getChildren(popper),\n box = _getChildren.box,\n content = _getChildren.content,\n arrow = _getChildren.arrow;\n if (nextProps.theme) {\n box.setAttribute('data-theme', nextProps.theme);\n } else {\n box.removeAttribute('data-theme');\n }\n if (typeof nextProps.animation === 'string') {\n box.setAttribute('data-animation', nextProps.animation);\n } else {\n box.removeAttribute('data-animation');\n }\n if (nextProps.inertia) {\n box.setAttribute('data-inertia', '');\n } else {\n box.removeAttribute('data-inertia');\n }\n box.style.maxWidth = typeof nextProps.maxWidth === 'number' ? nextProps.maxWidth + \"px\" : nextProps.maxWidth;\n if (nextProps.role) {\n box.setAttribute('role', nextProps.role);\n } else {\n box.removeAttribute('role');\n }\n if (prevProps.content !== nextProps.content || prevProps.allowHTML !== nextProps.allowHTML) {\n setContent(content, instance.props);\n }\n if (nextProps.arrow) {\n if (!arrow) {\n box.appendChild(createArrowElement(nextProps.arrow));\n } else if (prevProps.arrow !== nextProps.arrow) {\n box.removeChild(arrow);\n box.appendChild(createArrowElement(nextProps.arrow));\n }\n } else if (arrow) {\n box.removeChild(arrow);\n }\n }\n return {\n popper: popper,\n onUpdate: onUpdate\n };\n} // Runtime check to identify if the render function is the default one; this\n// way we can apply default CSS transitions logic and it can be tree-shaken away\n\nrender.$$tippy = true;\nvar idCounter = 1;\nvar mouseMoveListeners = []; // Used by `hideAll()`\n\nvar mountedInstances = [];\nfunction createTippy(reference, passedProps) {\n var props = evaluateProps(reference, Object.assign({}, defaultProps, getExtendedPassedProps(removeUndefinedProps(passedProps)))); // ===========================================================================\n // 🔒 Private members\n // ===========================================================================\n\n var showTimeout;\n var hideTimeout;\n var scheduleHideAnimationFrame;\n var isVisibleFromClick = false;\n var didHideDueToDocumentMouseDown = false;\n var didTouchMove = false;\n var ignoreOnFirstUpdate = false;\n var lastTriggerEvent;\n var currentTransitionEndListener;\n var onFirstUpdate;\n var listeners = [];\n var debouncedOnMouseMove = debounce(onMouseMove, props.interactiveDebounce);\n var currentTarget; // ===========================================================================\n // 🔑 Public members\n // ===========================================================================\n\n var id = idCounter++;\n var popperInstance = null;\n var plugins = unique(props.plugins);\n var state = {\n // Is the instance currently enabled?\n isEnabled: true,\n // Is the tippy currently showing and not transitioning out?\n isVisible: false,\n // Has the instance been destroyed?\n isDestroyed: false,\n // Is the tippy currently mounted to the DOM?\n isMounted: false,\n // Has the tippy finished transitioning in?\n isShown: false\n };\n var instance = {\n // properties\n id: id,\n reference: reference,\n popper: div(),\n popperInstance: popperInstance,\n props: props,\n state: state,\n plugins: plugins,\n // methods\n clearDelayTimeouts: clearDelayTimeouts,\n setProps: setProps,\n setContent: setContent,\n show: show,\n hide: hide,\n hideWithInteractivity: hideWithInteractivity,\n enable: enable,\n disable: disable,\n unmount: unmount,\n destroy: destroy\n }; // TODO: Investigate why this early return causes a TDZ error in the tests —\n // it doesn't seem to happen in the browser\n\n /* istanbul ignore if */\n\n if (!props.render) {\n if (process.env.NODE_ENV !== \"production\") {\n errorWhen(true, 'render() function has not been supplied.');\n }\n return instance;\n } // ===========================================================================\n // Initial mutations\n // ===========================================================================\n\n var _props$render = props.render(instance),\n popper = _props$render.popper,\n onUpdate = _props$render.onUpdate;\n popper.setAttribute('data-tippy-root', '');\n popper.id = \"tippy-\" + instance.id;\n instance.popper = popper;\n reference._tippy = instance;\n popper._tippy = instance;\n var pluginsHooks = plugins.map(function (plugin) {\n return plugin.fn(instance);\n });\n var hasAriaExpanded = reference.hasAttribute('aria-expanded');\n addListeners();\n handleAriaExpandedAttribute();\n handleStyles();\n invokeHook('onCreate', [instance]);\n if (props.showOnCreate) {\n scheduleShow();\n } // Prevent a tippy with a delay from hiding if the cursor left then returned\n // before it started hiding\n\n popper.addEventListener('mouseenter', function () {\n if (instance.props.interactive && instance.state.isVisible) {\n instance.clearDelayTimeouts();\n }\n });\n popper.addEventListener('mouseleave', function () {\n if (instance.props.interactive && instance.props.trigger.indexOf('mouseenter') >= 0) {\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n }\n });\n return instance; // ===========================================================================\n // 🔒 Private methods\n // ===========================================================================\n\n function getNormalizedTouchSettings() {\n var touch = instance.props.touch;\n return Array.isArray(touch) ? touch : [touch, 0];\n }\n function getIsCustomTouchBehavior() {\n return getNormalizedTouchSettings()[0] === 'hold';\n }\n function getIsDefaultRenderFn() {\n var _instance$props$rende;\n\n // @ts-ignore\n return !!((_instance$props$rende = instance.props.render) != null && _instance$props$rende.$$tippy);\n }\n function getCurrentTarget() {\n return currentTarget || reference;\n }\n function getDocument() {\n var parent = getCurrentTarget().parentNode;\n return parent ? getOwnerDocument(parent) : document;\n }\n function getDefaultTemplateChildren() {\n return getChildren(popper);\n }\n function getDelay(isShow) {\n // For touch or keyboard input, force `0` delay for UX reasons\n // Also if the instance is mounted but not visible (transitioning out),\n // ignore delay\n if (instance.state.isMounted && !instance.state.isVisible || currentInput.isTouch || lastTriggerEvent && lastTriggerEvent.type === 'focus') {\n return 0;\n }\n return getValueAtIndexOrReturn(instance.props.delay, isShow ? 0 : 1, defaultProps.delay);\n }\n function handleStyles(fromHide) {\n if (fromHide === void 0) {\n fromHide = false;\n }\n popper.style.pointerEvents = instance.props.interactive && !fromHide ? '' : 'none';\n popper.style.zIndex = \"\" + instance.props.zIndex;\n }\n function invokeHook(hook, args, shouldInvokePropsHook) {\n if (shouldInvokePropsHook === void 0) {\n shouldInvokePropsHook = true;\n }\n pluginsHooks.forEach(function (pluginHooks) {\n if (pluginHooks[hook]) {\n pluginHooks[hook].apply(pluginHooks, args);\n }\n });\n if (shouldInvokePropsHook) {\n var _instance$props;\n (_instance$props = instance.props)[hook].apply(_instance$props, args);\n }\n }\n function handleAriaContentAttribute() {\n var aria = instance.props.aria;\n if (!aria.content) {\n return;\n }\n var attr = \"aria-\" + aria.content;\n var id = popper.id;\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n var currentValue = node.getAttribute(attr);\n if (instance.state.isVisible) {\n node.setAttribute(attr, currentValue ? currentValue + \" \" + id : id);\n } else {\n var nextValue = currentValue && currentValue.replace(id, '').trim();\n if (nextValue) {\n node.setAttribute(attr, nextValue);\n } else {\n node.removeAttribute(attr);\n }\n }\n });\n }\n function handleAriaExpandedAttribute() {\n if (hasAriaExpanded || !instance.props.aria.expanded) {\n return;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n if (instance.props.interactive) {\n node.setAttribute('aria-expanded', instance.state.isVisible && node === getCurrentTarget() ? 'true' : 'false');\n } else {\n node.removeAttribute('aria-expanded');\n }\n });\n }\n function cleanupInteractiveMouseListeners() {\n getDocument().removeEventListener('mousemove', debouncedOnMouseMove);\n mouseMoveListeners = mouseMoveListeners.filter(function (listener) {\n return listener !== debouncedOnMouseMove;\n });\n }\n function onDocumentPress(event) {\n // Moved finger to scroll instead of an intentional tap outside\n if (currentInput.isTouch) {\n if (didTouchMove || event.type === 'mousedown') {\n return;\n }\n }\n var actualTarget = event.composedPath && event.composedPath()[0] || event.target; // Clicked on interactive popper\n\n if (instance.props.interactive && actualContains(popper, actualTarget)) {\n return;\n } // Clicked on the event listeners target\n\n if (normalizeToArray(instance.props.triggerTarget || reference).some(function (el) {\n return actualContains(el, actualTarget);\n })) {\n if (currentInput.isTouch) {\n return;\n }\n if (instance.state.isVisible && instance.props.trigger.indexOf('click') >= 0) {\n return;\n }\n } else {\n invokeHook('onClickOutside', [instance, event]);\n }\n if (instance.props.hideOnClick === true) {\n instance.clearDelayTimeouts();\n instance.hide(); // `mousedown` event is fired right before `focus` if pressing the\n // currentTarget. This lets a tippy with `focus` trigger know that it\n // should not show\n\n didHideDueToDocumentMouseDown = true;\n setTimeout(function () {\n didHideDueToDocumentMouseDown = false;\n }); // The listener gets added in `scheduleShow()`, but this may be hiding it\n // before it shows, and hide()'s early bail-out behavior can prevent it\n // from being cleaned up\n\n if (!instance.state.isMounted) {\n removeDocumentPress();\n }\n }\n }\n function onTouchMove() {\n didTouchMove = true;\n }\n function onTouchStart() {\n didTouchMove = false;\n }\n function addDocumentPress() {\n var doc = getDocument();\n doc.addEventListener('mousedown', onDocumentPress, true);\n doc.addEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.addEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.addEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n function removeDocumentPress() {\n var doc = getDocument();\n doc.removeEventListener('mousedown', onDocumentPress, true);\n doc.removeEventListener('touchend', onDocumentPress, TOUCH_OPTIONS);\n doc.removeEventListener('touchstart', onTouchStart, TOUCH_OPTIONS);\n doc.removeEventListener('touchmove', onTouchMove, TOUCH_OPTIONS);\n }\n function onTransitionedOut(duration, callback) {\n onTransitionEnd(duration, function () {\n if (!instance.state.isVisible && popper.parentNode && popper.parentNode.contains(popper)) {\n callback();\n }\n });\n }\n function onTransitionedIn(duration, callback) {\n onTransitionEnd(duration, callback);\n }\n function onTransitionEnd(duration, callback) {\n var box = getDefaultTemplateChildren().box;\n function listener(event) {\n if (event.target === box) {\n updateTransitionEndListener(box, 'remove', listener);\n callback();\n }\n } // Make callback synchronous if duration is 0\n // `transitionend` won't fire otherwise\n\n if (duration === 0) {\n return callback();\n }\n updateTransitionEndListener(box, 'remove', currentTransitionEndListener);\n updateTransitionEndListener(box, 'add', listener);\n currentTransitionEndListener = listener;\n }\n function on(eventType, handler, options) {\n if (options === void 0) {\n options = false;\n }\n var nodes = normalizeToArray(instance.props.triggerTarget || reference);\n nodes.forEach(function (node) {\n node.addEventListener(eventType, handler, options);\n listeners.push({\n node: node,\n eventType: eventType,\n handler: handler,\n options: options\n });\n });\n }\n function addListeners() {\n if (getIsCustomTouchBehavior()) {\n on('touchstart', onTrigger, {\n passive: true\n });\n on('touchend', onMouseLeave, {\n passive: true\n });\n }\n splitBySpaces(instance.props.trigger).forEach(function (eventType) {\n if (eventType === 'manual') {\n return;\n }\n on(eventType, onTrigger);\n switch (eventType) {\n case 'mouseenter':\n on('mouseleave', onMouseLeave);\n break;\n case 'focus':\n on(isIE11 ? 'focusout' : 'blur', onBlurOrFocusOut);\n break;\n case 'focusin':\n on('focusout', onBlurOrFocusOut);\n break;\n }\n });\n }\n function removeListeners() {\n listeners.forEach(function (_ref) {\n var node = _ref.node,\n eventType = _ref.eventType,\n handler = _ref.handler,\n options = _ref.options;\n node.removeEventListener(eventType, handler, options);\n });\n listeners = [];\n }\n function onTrigger(event) {\n var _lastTriggerEvent;\n var shouldScheduleClickHide = false;\n if (!instance.state.isEnabled || isEventListenerStopped(event) || didHideDueToDocumentMouseDown) {\n return;\n }\n var wasFocused = ((_lastTriggerEvent = lastTriggerEvent) == null ? void 0 : _lastTriggerEvent.type) === 'focus';\n lastTriggerEvent = event;\n currentTarget = event.currentTarget;\n handleAriaExpandedAttribute();\n if (!instance.state.isVisible && isMouseEvent(event)) {\n // If scrolling, `mouseenter` events can be fired if the cursor lands\n // over a new target, but `mousemove` events don't get fired. This\n // causes interactive tooltips to get stuck open until the cursor is\n // moved\n mouseMoveListeners.forEach(function (listener) {\n return listener(event);\n });\n } // Toggle show/hide when clicking click-triggered tooltips\n\n if (event.type === 'click' && (instance.props.trigger.indexOf('mouseenter') < 0 || isVisibleFromClick) && instance.props.hideOnClick !== false && instance.state.isVisible) {\n shouldScheduleClickHide = true;\n } else {\n scheduleShow(event);\n }\n if (event.type === 'click') {\n isVisibleFromClick = !shouldScheduleClickHide;\n }\n if (shouldScheduleClickHide && !wasFocused) {\n scheduleHide(event);\n }\n }\n function onMouseMove(event) {\n var target = event.target;\n var isCursorOverReferenceOrPopper = getCurrentTarget().contains(target) || popper.contains(target);\n if (event.type === 'mousemove' && isCursorOverReferenceOrPopper) {\n return;\n }\n var popperTreeData = getNestedPopperTree().concat(popper).map(function (popper) {\n var _instance$popperInsta;\n var instance = popper._tippy;\n var state = (_instance$popperInsta = instance.popperInstance) == null ? void 0 : _instance$popperInsta.state;\n if (state) {\n return {\n popperRect: popper.getBoundingClientRect(),\n popperState: state,\n props: props\n };\n }\n return null;\n }).filter(Boolean);\n if (isCursorOutsideInteractiveBorder(popperTreeData, event)) {\n cleanupInteractiveMouseListeners();\n scheduleHide(event);\n }\n }\n function onMouseLeave(event) {\n var shouldBail = isEventListenerStopped(event) || instance.props.trigger.indexOf('click') >= 0 && isVisibleFromClick;\n if (shouldBail) {\n return;\n }\n if (instance.props.interactive) {\n instance.hideWithInteractivity(event);\n return;\n }\n scheduleHide(event);\n }\n function onBlurOrFocusOut(event) {\n if (instance.props.trigger.indexOf('focusin') < 0 && event.target !== getCurrentTarget()) {\n return;\n } // If focus was moved to within the popper\n\n if (instance.props.interactive && event.relatedTarget && popper.contains(event.relatedTarget)) {\n return;\n }\n scheduleHide(event);\n }\n function isEventListenerStopped(event) {\n return currentInput.isTouch ? getIsCustomTouchBehavior() !== event.type.indexOf('touch') >= 0 : false;\n }\n function createPopperInstance() {\n destroyPopperInstance();\n var _instance$props2 = instance.props,\n popperOptions = _instance$props2.popperOptions,\n placement = _instance$props2.placement,\n offset = _instance$props2.offset,\n getReferenceClientRect = _instance$props2.getReferenceClientRect,\n moveTransition = _instance$props2.moveTransition;\n var arrow = getIsDefaultRenderFn() ? getChildren(popper).arrow : null;\n var computedReference = getReferenceClientRect ? {\n getBoundingClientRect: getReferenceClientRect,\n contextElement: getReferenceClientRect.contextElement || getCurrentTarget()\n } : reference;\n var tippyModifier = {\n name: '$$tippy',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: function fn(_ref2) {\n var state = _ref2.state;\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh.box;\n ['placement', 'reference-hidden', 'escaped'].forEach(function (attr) {\n if (attr === 'placement') {\n box.setAttribute('data-placement', state.placement);\n } else {\n if (state.attributes.popper[\"data-popper-\" + attr]) {\n box.setAttribute(\"data-\" + attr, '');\n } else {\n box.removeAttribute(\"data-\" + attr);\n }\n }\n });\n state.attributes.popper = {};\n }\n }\n };\n var modifiers = [{\n name: 'offset',\n options: {\n offset: offset\n }\n }, {\n name: 'preventOverflow',\n options: {\n padding: {\n top: 2,\n bottom: 2,\n left: 5,\n right: 5\n }\n }\n }, {\n name: 'flip',\n options: {\n padding: 5\n }\n }, {\n name: 'computeStyles',\n options: {\n adaptive: !moveTransition\n }\n }, tippyModifier];\n if (getIsDefaultRenderFn() && arrow) {\n modifiers.push({\n name: 'arrow',\n options: {\n element: arrow,\n padding: 3\n }\n });\n }\n modifiers.push.apply(modifiers, (popperOptions == null ? void 0 : popperOptions.modifiers) || []);\n instance.popperInstance = createPopper(computedReference, popper, Object.assign({}, popperOptions, {\n placement: placement,\n onFirstUpdate: onFirstUpdate,\n modifiers: modifiers\n }));\n }\n function destroyPopperInstance() {\n if (instance.popperInstance) {\n instance.popperInstance.destroy();\n instance.popperInstance = null;\n }\n }\n function mount() {\n var appendTo = instance.props.appendTo;\n var parentNode; // By default, we'll append the popper to the triggerTargets's parentNode so\n // it's directly after the reference element so the elements inside the\n // tippy can be tabbed to\n // If there are clipping issues, the user can specify a different appendTo\n // and ensure focus management is handled correctly manually\n\n var node = getCurrentTarget();\n if (instance.props.interactive && appendTo === TIPPY_DEFAULT_APPEND_TO || appendTo === 'parent') {\n parentNode = node.parentNode;\n } else {\n parentNode = invokeWithArgsOrReturn(appendTo, [node]);\n } // The popper element needs to exist on the DOM before its position can be\n // updated as Popper needs to read its dimensions\n\n if (!parentNode.contains(popper)) {\n parentNode.appendChild(popper);\n }\n instance.state.isMounted = true;\n createPopperInstance();\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n // Accessibility check\n warnWhen(instance.props.interactive && appendTo === defaultProps.appendTo && node.nextElementSibling !== popper, ['Interactive tippy element may not be accessible via keyboard', 'navigation because it is not directly after the reference element', 'in the DOM source order.', '\\n\\n', 'Using a wrapper <div> or <span> tag around the reference element', 'solves this by creating a new parentNode context.', '\\n\\n', 'Specifying `appendTo: document.body` silences this warning, but it', 'assumes you are using a focus management solution to handle', 'keyboard navigation.', '\\n\\n', 'See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity'].join(' '));\n }\n }\n function getNestedPopperTree() {\n return arrayFrom(popper.querySelectorAll('[data-tippy-root]'));\n }\n function scheduleShow(event) {\n instance.clearDelayTimeouts();\n if (event) {\n invokeHook('onTrigger', [instance, event]);\n }\n addDocumentPress();\n var delay = getDelay(true);\n var _getNormalizedTouchSe = getNormalizedTouchSettings(),\n touchValue = _getNormalizedTouchSe[0],\n touchDelay = _getNormalizedTouchSe[1];\n if (currentInput.isTouch && touchValue === 'hold' && touchDelay) {\n delay = touchDelay;\n }\n if (delay) {\n showTimeout = setTimeout(function () {\n instance.show();\n }, delay);\n } else {\n instance.show();\n }\n }\n function scheduleHide(event) {\n instance.clearDelayTimeouts();\n invokeHook('onUntrigger', [instance, event]);\n if (!instance.state.isVisible) {\n removeDocumentPress();\n return;\n } // For interactive tippies, scheduleHide is added to a document.body handler\n // from onMouseLeave so must intercept scheduled hides from mousemove/leave\n // events when trigger contains mouseenter and click, and the tip is\n // currently shown as a result of a click.\n\n if (instance.props.trigger.indexOf('mouseenter') >= 0 && instance.props.trigger.indexOf('click') >= 0 && ['mouseleave', 'mousemove'].indexOf(event.type) >= 0 && isVisibleFromClick) {\n return;\n }\n var delay = getDelay(false);\n if (delay) {\n hideTimeout = setTimeout(function () {\n if (instance.state.isVisible) {\n instance.hide();\n }\n }, delay);\n } else {\n // Fixes a `transitionend` problem when it fires 1 frame too\n // late sometimes, we don't want hide() to be called.\n scheduleHideAnimationFrame = requestAnimationFrame(function () {\n instance.hide();\n });\n }\n } // ===========================================================================\n // 🔑 Public methods\n // ===========================================================================\n\n function enable() {\n instance.state.isEnabled = true;\n }\n function disable() {\n // Disabling the instance should also hide it\n // https://github.com/atomiks/tippy.js-react/issues/106\n instance.hide();\n instance.state.isEnabled = false;\n }\n function clearDelayTimeouts() {\n clearTimeout(showTimeout);\n clearTimeout(hideTimeout);\n cancelAnimationFrame(scheduleHideAnimationFrame);\n }\n function setProps(partialProps) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('setProps'));\n }\n if (instance.state.isDestroyed) {\n return;\n }\n invokeHook('onBeforeUpdate', [instance, partialProps]);\n removeListeners();\n var prevProps = instance.props;\n var nextProps = evaluateProps(reference, Object.assign({}, prevProps, removeUndefinedProps(partialProps), {\n ignoreAttributes: true\n }));\n instance.props = nextProps;\n addListeners();\n if (prevProps.interactiveDebounce !== nextProps.interactiveDebounce) {\n cleanupInteractiveMouseListeners();\n debouncedOnMouseMove = debounce(onMouseMove, nextProps.interactiveDebounce);\n } // Ensure stale aria-expanded attributes are removed\n\n if (prevProps.triggerTarget && !nextProps.triggerTarget) {\n normalizeToArray(prevProps.triggerTarget).forEach(function (node) {\n node.removeAttribute('aria-expanded');\n });\n } else if (nextProps.triggerTarget) {\n reference.removeAttribute('aria-expanded');\n }\n handleAriaExpandedAttribute();\n handleStyles();\n if (onUpdate) {\n onUpdate(prevProps, nextProps);\n }\n if (instance.popperInstance) {\n createPopperInstance(); // Fixes an issue with nested tippies if they are all getting re-rendered,\n // and the nested ones get re-rendered first.\n // https://github.com/atomiks/tippyjs-react/issues/177\n // TODO: find a cleaner / more efficient solution(!)\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n // React (and other UI libs likely) requires a rAF wrapper as it flushes\n // its work in one\n requestAnimationFrame(nestedPopper._tippy.popperInstance.forceUpdate);\n });\n }\n invokeHook('onAfterUpdate', [instance, partialProps]);\n }\n function setContent(content) {\n instance.setProps({\n content: content\n });\n }\n function show() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('show'));\n } // Early bail-out\n\n var isAlreadyVisible = instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var isTouchAndTouchDisabled = currentInput.isTouch && !instance.props.touch;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 0, defaultProps.duration);\n if (isAlreadyVisible || isDestroyed || isDisabled || isTouchAndTouchDisabled) {\n return;\n } // Normalize `disabled` behavior across browsers.\n // Firefox allows events on disabled elements, but Chrome doesn't.\n // Using a wrapper element (i.e. <span>) is recommended.\n\n if (getCurrentTarget().hasAttribute('disabled')) {\n return;\n }\n invokeHook('onShow', [instance], false);\n if (instance.props.onShow(instance) === false) {\n return;\n }\n instance.state.isVisible = true;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'visible';\n }\n handleStyles();\n addDocumentPress();\n if (!instance.state.isMounted) {\n popper.style.transition = 'none';\n } // If flipping to the opposite side after hiding at least once, the\n // animation will use the wrong placement without resetting the duration\n\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh2 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh2.box,\n content = _getDefaultTemplateCh2.content;\n setTransitionDuration([box, content], 0);\n }\n onFirstUpdate = function onFirstUpdate() {\n var _instance$popperInsta2;\n if (!instance.state.isVisible || ignoreOnFirstUpdate) {\n return;\n }\n ignoreOnFirstUpdate = true; // reflow\n\n void popper.offsetHeight;\n popper.style.transition = instance.props.moveTransition;\n if (getIsDefaultRenderFn() && instance.props.animation) {\n var _getDefaultTemplateCh3 = getDefaultTemplateChildren(),\n _box = _getDefaultTemplateCh3.box,\n _content = _getDefaultTemplateCh3.content;\n setTransitionDuration([_box, _content], duration);\n setVisibilityState([_box, _content], 'visible');\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n pushIfUnique(mountedInstances, instance); // certain modifiers (e.g. `maxSize`) require a second update after the\n // popper has been positioned for the first time\n\n (_instance$popperInsta2 = instance.popperInstance) == null ? void 0 : _instance$popperInsta2.forceUpdate();\n invokeHook('onMount', [instance]);\n if (instance.props.animation && getIsDefaultRenderFn()) {\n onTransitionedIn(duration, function () {\n instance.state.isShown = true;\n invokeHook('onShown', [instance]);\n });\n }\n };\n mount();\n }\n function hide() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hide'));\n } // Early bail-out\n\n var isAlreadyHidden = !instance.state.isVisible;\n var isDestroyed = instance.state.isDestroyed;\n var isDisabled = !instance.state.isEnabled;\n var duration = getValueAtIndexOrReturn(instance.props.duration, 1, defaultProps.duration);\n if (isAlreadyHidden || isDestroyed || isDisabled) {\n return;\n }\n invokeHook('onHide', [instance], false);\n if (instance.props.onHide(instance) === false) {\n return;\n }\n instance.state.isVisible = false;\n instance.state.isShown = false;\n ignoreOnFirstUpdate = false;\n isVisibleFromClick = false;\n if (getIsDefaultRenderFn()) {\n popper.style.visibility = 'hidden';\n }\n cleanupInteractiveMouseListeners();\n removeDocumentPress();\n handleStyles(true);\n if (getIsDefaultRenderFn()) {\n var _getDefaultTemplateCh4 = getDefaultTemplateChildren(),\n box = _getDefaultTemplateCh4.box,\n content = _getDefaultTemplateCh4.content;\n if (instance.props.animation) {\n setTransitionDuration([box, content], duration);\n setVisibilityState([box, content], 'hidden');\n }\n }\n handleAriaContentAttribute();\n handleAriaExpandedAttribute();\n if (instance.props.animation) {\n if (getIsDefaultRenderFn()) {\n onTransitionedOut(duration, instance.unmount);\n }\n } else {\n instance.unmount();\n }\n }\n function hideWithInteractivity(event) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('hideWithInteractivity'));\n }\n getDocument().addEventListener('mousemove', debouncedOnMouseMove);\n pushIfUnique(mouseMoveListeners, debouncedOnMouseMove);\n debouncedOnMouseMove(event);\n }\n function unmount() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('unmount'));\n }\n if (instance.state.isVisible) {\n instance.hide();\n }\n if (!instance.state.isMounted) {\n return;\n }\n destroyPopperInstance(); // If a popper is not interactive, it will be appended outside the popper\n // tree by default. This seems mainly for interactive tippies, but we should\n // find a workaround if possible\n\n getNestedPopperTree().forEach(function (nestedPopper) {\n nestedPopper._tippy.unmount();\n });\n if (popper.parentNode) {\n popper.parentNode.removeChild(popper);\n }\n mountedInstances = mountedInstances.filter(function (i) {\n return i !== instance;\n });\n instance.state.isMounted = false;\n invokeHook('onHidden', [instance]);\n }\n function destroy() {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== \"production\") {\n warnWhen(instance.state.isDestroyed, createMemoryLeakWarning('destroy'));\n }\n if (instance.state.isDestroyed) {\n return;\n }\n instance.clearDelayTimeouts();\n instance.unmount();\n removeListeners();\n delete reference._tippy;\n instance.state.isDestroyed = true;\n invokeHook('onDestroy', [instance]);\n }\n}\nfunction tippy(targets, optionalProps) {\n if (optionalProps === void 0) {\n optionalProps = {};\n }\n var plugins = defaultProps.plugins.concat(optionalProps.plugins || []);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n validateTargets(targets);\n validateProps(optionalProps, plugins);\n }\n bindGlobalEventListeners();\n var passedProps = Object.assign({}, optionalProps, {\n plugins: plugins\n });\n var elements = getArrayOfElements(targets);\n /* istanbul ignore else */\n\n if (process.env.NODE_ENV !== \"production\") {\n var isSingleContentElement = isElement(passedProps.content);\n var isMoreThanOneReferenceElement = elements.length > 1;\n warnWhen(isSingleContentElement && isMoreThanOneReferenceElement, ['tippy() was passed an Element as the `content` prop, but more than', 'one tippy instance was created by this invocation. This means the', 'content element will only be appended to the last tippy instance.', '\\n\\n', 'Instead, pass the .innerHTML of the element, or use a function that', 'returns a cloned version of the element instead.', '\\n\\n', '1) content: element.innerHTML\\n', '2) content: () => element.cloneNode(true)'].join(' '));\n }\n var instances = elements.reduce(function (acc, reference) {\n var instance = reference && createTippy(reference, passedProps);\n if (instance) {\n acc.push(instance);\n }\n return acc;\n }, []);\n return isElement(targets) ? instances[0] : instances;\n}\ntippy.defaultProps = defaultProps;\ntippy.setDefaultProps = setDefaultProps;\ntippy.currentInput = currentInput;\n\n// every time the popper is destroyed (i.e. a new target), removing the styles\n// and causing transitions to break for singletons when the console is open, but\n// most notably for non-transform styles being used, `gpuAcceleration: false`.\n\nObject.assign({}, applyStyles$1, {\n effect: function effect(_ref) {\n var state = _ref.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n } // intentionally return no cleanup function\n // return () => { ... }\n }\n});\ntippy.setDefaultProps({\n render: render\n});\nfunction styleInject(css, ref) {\n if (ref === void 0) ref = {};\n var insertAt = ref.insertAt;\n if (!css || typeof document === 'undefined') {\n return;\n }\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\nvar css_248z$2 = \".tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{background-color:#333;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity;white-space:normal}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:\\\"\\\";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}\";\nstyleInject(css_248z$2);\nvar css_248z$1 = \".tippy-box[data-placement^=top]>.tippy-svg-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-svg-arrow:after,.tippy-box[data-placement^=top]>.tippy-svg-arrow>svg{top:16px;transform:rotate(180deg)}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:16px}.tippy-box[data-placement^=left]>.tippy-svg-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-svg-arrow:after,.tippy-box[data-placement^=left]>.tippy-svg-arrow>svg{left:11px;top:calc(50% - 3px);transform:rotate(90deg)}.tippy-box[data-placement^=right]>.tippy-svg-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-svg-arrow:after,.tippy-box[data-placement^=right]>.tippy-svg-arrow>svg{right:11px;top:calc(50% - 3px);transform:rotate(-90deg)}.tippy-svg-arrow{fill:#333;height:16px;text-align:initial;width:16px}.tippy-svg-arrow,.tippy-svg-arrow>svg{position:absolute}\";\nstyleInject(css_248z$1);\nvar Tooltip$2 = styled(View$2)(templateObject_1$3g || (templateObject_1$3g = __makeTemplateObject([\"\"], [\"\"])));\nvar TooltipContent = styled(Tippy)(templateObject_2$1I || (templateObject_2$1I = __makeTemplateObject([\"\\n \", \";\\n border-radius: \", \";\\n \", \"\\n max-width: \", \" !important; // Overwrite Tippy styles\\n position: relative;\\n padding: \", \" \", \";\\n\\n .tippy-content {\\n padding: 0;\\n max-width: \", \" !important; // Overwrite Tippy styles\\n\\n \", \" {\\n font-weight: initial !important;\\n color: \", \" !important;\\n font-size: \", \" !important;\\n }\\n }\\n\\n .tippy-svg-arrow {\\n fill: \", \";\\n }\\n\"], [\"\\n \", \";\\n border-radius: \", \";\\n \", \"\\n max-width: \", \" !important; // Overwrite Tippy styles\\n position: relative;\\n padding: \", \" \", \";\\n\\n .tippy-content {\\n padding: 0;\\n max-width: \", \" !important; // Overwrite Tippy styles\\n\\n \", \" {\\n font-weight: initial !important;\\n color: \", \" !important;\\n font-size: \", \" !important;\\n }\\n }\\n\\n .tippy-svg-arrow {\\n fill: \", \";\\n }\\n\"])), function (p) {\n return tooltipBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, boxShadow2, function (p) {\n return p.theme.spacing.getSize(70);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(62);\n}, Text$3, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context;\n}, function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return getTooltipColor(p.activeTheme);\n});\nvar TooltipWrapper$1 = styled(View$2)(templateObject_3$1h || (templateObject_3$1h = __makeTemplateObject([\"\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n\"], [\"\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n\"])));\nvar templateObject_1$3g, templateObject_2$1I, templateObject_3$1h;\nvar Tooltip$1 = function (props) {\n var className = props.className,\n position = props.position,\n content = props.content,\n disabled = props.disabled,\n children = props.children;\n var _a = __read(React__default.useState(false), 2),\n visible = _a[0],\n setVisible = _a[1];\n var activeTheme = useThemeProvider().activeTheme;\n var onMouseEnter = function () {\n visible ? setVisible(false) : setVisible(true);\n };\n var onMouseLeave = function () {\n visible ? setVisible(false) : setVisible(true);\n };\n var tooltipRef = React__default.useRef(null);\n return /*#__PURE__*/React__default.createElement(TooltipWrapper$1, {\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n ref: tooltipRef\n }, children(tooltipRef), !disabled && content && ( /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"tooltip\"\n }, /*#__PURE__*/React__default.createElement(Tooltip$2, {\n \"data-testid\": generate(['tooltip'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(TooltipContent, {\n reference: tooltipRef,\n placement: position || 'top',\n content: content,\n arrow: ROUND_ARROW,\n interactive: true,\n appendTo: document.body,\n activeTheme: activeTheme\n }))))));\n};\n\n/**\r\n * Wrapper component for showing a tooltip when hovering over content\r\n * @param children - (required) - (ref: React.Ref<HTMLDivElement>) => React.ReactNode - The content that when hovered over will show the tooltip\r\n * @param className - (optional) - String - Enables Mounting as a styled component\r\n * @param position - (optional) - ('top' | 'bottom' | 'left' | 'right') - Position of Tooltip\r\n * @param content - (optional) - (string | React.ReactElement) - The content shown in the tooltip\r\n * @param disabled - (optional) - boolean - Hides the tool tip content\r\n */\nvar Tooltip = styled(Tooltip$1)(templateObject_1$3f || (templateObject_1$3f = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3f;\nvar useWindowSize = function () {\n var _a = __read(React__default.useState([0, 0]), 2),\n size = _a[0],\n setSize = _a[1];\n React__default.useLayoutEffect(function () {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return function () {\n return window.removeEventListener('resize', updateSize);\n };\n }, []);\n return size;\n};\nvar Heading$3 = function (props) {\n var _a = props.size,\n size = _a === void 0 ? 0 : _a,\n variant = props.variant,\n weight = props.weight,\n children = props.children,\n className = props.className,\n color = props.color,\n ellipsis = props.ellipsis,\n clamp = props.clamp,\n withLogo = props.withLogo;\n var headingRef = React__default.useRef(null);\n var _b = __read(React__default.useState(false), 2),\n hasOverflow = _b[0],\n setHasOverflow = _b[1];\n var isTruncated = ellipsis && children && hasOverflow;\n var _c = __read(useWindowSize(), 1),\n windowWidth = _c[0];\n React__default.useEffect(function () {\n if (headingRef.current) {\n setHasOverflow(headingRef.current.offsetWidth < headingRef.current.scrollWidth);\n }\n }, [windowWidth]);\n var renderText = function () {\n var textComponent = /*#__PURE__*/React__default.createElement(Text$1, {\n className: className,\n \"data-testid\": generate(['heading', variant ? \"heading--\".concat(variant) : null], props),\n variant: variant,\n weight: weight,\n size: size + 0,\n color: color,\n clamp: clamp,\n ellipsis: ellipsis,\n reference: headingRef\n }, children);\n if (isTruncated) {\n return /*#__PURE__*/React__default.createElement(Tooltip, {\n content: /*#__PURE__*/React__default.createElement(\"div\", null, children)\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(TruncationWrapper, {\n ref: tooltipRef\n }, textComponent);\n });\n }\n return textComponent;\n };\n var getLogoSize = function () {\n switch (size) {\n case 0:\n return 'small';\n case 1:\n return 'medium';\n case 2:\n return 'medium';\n case 3:\n case 4:\n return 'large';\n }\n };\n var renderWithLogo = function () {\n return /*#__PURE__*/React__default.createElement(HeadingWithLogo, null, /*#__PURE__*/React__default.createElement(HeadingWrapperLogo, null, /*#__PURE__*/React__default.createElement(Logo, {\n size: getLogoSize()\n })), renderText());\n };\n return withLogo ? renderWithLogo() : renderText();\n};\n\n/**\r\n * @param size - (optional) - 0 | 1 | 2 | 3 | 4\r\n * @param withLogo - (optional) - boolean\r\n */\nvar Heading$2 = styled(Heading$3)(templateObject_1$3e || (templateObject_1$3e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3e;\nvar Button$2 = function (props) {\n var _a = __read(React__default.useState(false), 2),\n isOpen = _a[0],\n setIsOpen = _a[1];\n var dropdownContent = props.dropdownContent,\n label = props.label,\n _b = props.variant,\n variant = _b === void 0 ? 'default' : _b,\n className = props.className,\n disabled = props.disabled,\n _c = props.size,\n size = _c === void 0 ? 'default' : _c,\n icon = props.icon,\n _d = props.isLoading,\n isLoading = _d === void 0 ? false : _d,\n _e = props.iconPosition,\n iconPosition = _e === void 0 ? 'left' : _e,\n _f = props.fullWidthDropdown,\n fullWidthDropdown = _f === void 0 ? false : _f,\n onClick = props.onClick;\n var triggerRef = React__default.useRef(null);\n var triggerEl = useTarget(triggerRef);\n var activeTheme = useThemeProvider().activeTheme;\n var onClose = function () {\n setIsOpen(false);\n };\n var renderIcon = function () {\n if (icon !== undefined) {\n return icon();\n }\n };\n var handleClick = function (event) {\n if (dropdownContent) {\n setIsOpen(!isOpen);\n } else if (onClick) {\n onClick(event);\n }\n };\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$3, {\n className: className,\n ref: triggerRef,\n \"data-testid\": generate(['btn', \"btn--\".concat(variant), \"btn--size--\".concat(size), isLoading ? 'btn--loading' : null], props),\n variant: variant,\n type: \"button\",\n onClick: handleClick,\n \"aria-pressed\": dropdownContent ? isOpen : undefined,\n title: label,\n disabled: disabled,\n size: size,\n isLoading: isLoading,\n iconPosition: iconPosition,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Label$7, null, iconPosition === 'left' ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, renderIcon(), label)) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, label, renderIcon()))), isLoading ? ( /*#__PURE__*/React__default.createElement(Loading$3, null, /*#__PURE__*/React__default.createElement(MemoSvgLoader, null))) : null), isOpen && dropdownContent && ( /*#__PURE__*/React__default.createElement(DropdownContent, {\n triggerEl: triggerEl,\n onClose: onClose,\n fullWidth: fullWidthDropdown,\n useTransform: !fullWidthDropdown\n }, dropdownContent(onClose))));\n};\n\n/**\r\n * @param label - (required) - label: string;\r\n * @param variant - (optional) - SC.ButtonVariant\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n * @param dropdownContent - (optional) - (onClose: () => void) => {}\r\n * @param className - (optional) - string\r\n * @param disabled - (optional) - boolean\r\n * @param size - (optional) - SC.ButtonSize\r\n * @param icon - (optional) - () => React.ReactElement\r\n * @param isLoading - (optional) - boolean\r\n * @param iconPosition - (optional) - SC.IconPosition\r\n * @param fullWidthDropdown - (optional) - boolean\r\n */\nvar Button$1 = styled(Button$2)(templateObject_1$3d || (templateObject_1$3d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3d;\nvar ScrollableContent$2 = styled.div(templateObject_1$3c || (templateObject_1$3c = __makeTemplateObject([\"\\n position: relative;\\n box-sizing: border-box;\\n // Sets fallback text colour\\n color: \", \";\\n flex-grow: 1;\\n\"], [\"\\n position: relative;\\n box-sizing: border-box;\\n // Sets fallback text colour\\n color: \", \";\\n flex-grow: 1;\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar Content$6 = styled.div(templateObject_2$1H || (templateObject_2$1H = __makeTemplateObject([\"\"], [\"\"])));\nvar bottom = css(templateObject_3$1g || (templateObject_3$1g = __makeTemplateObject([\"\\n &:after {\\n opacity: 1;\\n }\\n\"], [\"\\n &:after {\\n opacity: 1;\\n }\\n\"])));\nvar top = css(templateObject_4$$ || (templateObject_4$$ = __makeTemplateObject([\"\\n &:before {\\n opacity: 1;\\n }\\n\"], [\"\\n &:before {\\n opacity: 1;\\n }\\n\"])));\nvar ScrollShadow = styled.div(templateObject_8$s || (templateObject_8$s = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n\\n &:after {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: -2px;\\n box-shadow: 0px -2px 2px \", \"; // Deliberate exception\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 2px;\\n }\\n\\n &:before {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: -2px;\\n box-shadow: 0px 2px 2px \", \"; // Deliberate exception\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 2px;\\n }\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n\\n &:after {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: -2px;\\n box-shadow: 0px -2px 2px \", \"; // Deliberate exception\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 2px;\\n }\\n\\n &:before {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: -2px;\\n box-shadow: 0px 2px 2px \", \"; // Deliberate exception\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 2px;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n return p.theme.colors.shadow;\n}, function (p) {\n switch (p.position) {\n case 'bottom':\n return css(templateObject_5$R || (templateObject_5$R = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), !p.hideBottom && bottom);\n case 'top':\n return css(templateObject_6$H || (templateObject_6$H = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), !p.hideTop && top);\n case 'both':\n return css(templateObject_7$y || (templateObject_7$y = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \"], [\"\\n \", \"\\n \", \"\\n \"])), !p.hideTop && top, !p.hideBottom && bottom);\n }\n});\nvar ScrollFade = styled.div(templateObject_12$d || (templateObject_12$d = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n\\n &:after {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(to bottom, \", \", \", \");\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 15%;\\n max-height: 26px;\\n }\\n\\n &:before {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n background: linear-gradient(to bottom, \", \", \", \");\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 15%;\\n max-height: 26px;\\n }\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n\\n &:after {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(to bottom, \", \", \", \");\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 15%;\\n max-height: 26px;\\n }\\n\\n &:before {\\n content: ' ';\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n background: linear-gradient(to bottom, \", \", \", \");\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n height: 15%;\\n max-height: 26px;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.fade.to;\n}, function (p) {\n return p.theme.colors.fade.from;\n}, function (p) {\n return p.theme.colors.fade.from;\n}, function (p) {\n return p.theme.colors.fade.to;\n}, function (p) {\n switch (p.position) {\n case 'bottom':\n return css(templateObject_9$p || (templateObject_9$p = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), !p.hideBottom && bottom);\n case 'top':\n return css(templateObject_10$k || (templateObject_10$k = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), !p.hideTop && top);\n case 'both':\n return css(templateObject_11$f || (templateObject_11$f = __makeTemplateObject([\"\\n \", \"\\n \", \"\\n \"], [\"\\n \", \"\\n \", \"\\n \"])), !p.hideTop && top, !p.hideBottom && bottom);\n }\n});\nvar templateObject_1$3c, templateObject_2$1H, templateObject_3$1g, templateObject_4$$, templateObject_5$R, templateObject_6$H, templateObject_7$y, templateObject_8$s, templateObject_9$p, templateObject_10$k, templateObject_11$f, templateObject_12$d;\nvar ScrollableContent$1 = function (props) {\n var className = props.className,\n children = props.children,\n fixedHeight = props.fixedHeight,\n _a = props.scrollable,\n scrollable = _a === void 0 ? true : _a,\n maxHeight = props.maxHeight,\n _b = props.minHeight,\n minHeight = _b === void 0 ? 20 : _b;\n var onHitEnd = props.onHitEnd,\n _c = props.hitEndPadding,\n hitEndPadding = _c === void 0 ? 100 : _c;\n var _d = props.bars,\n bars = _d === void 0 ? {\n type: 'FADE',\n showTop: false,\n showBottom: true,\n fixedTop: false,\n fixedBottom: false\n } : _d;\n var _e = bars || {\n showTop: false,\n showBottom: false,\n fixedTop: false,\n fixedBottom: false\n },\n _f = _e.showTop,\n showTop = _f === void 0 ? false : _f,\n _g = _e.showBottom,\n showBottom = _g === void 0 ? true : _g,\n _h = _e.fixedTop,\n fixedTop = _h === void 0 ? false : _h,\n _j = _e.fixedBottom,\n fixedBottom = _j === void 0 ? false : _j;\n var _k = __read(React__default.useState('none'), 2),\n gradientBarPosition = _k[0],\n setGradientBarPosition = _k[1];\n var handleInfiniteScroll = function (values) {\n if (onHitEnd) {\n var scrollTop = values.scrollTop,\n scrollHeight = values.scrollHeight,\n clientHeight = values.clientHeight;\n var pos = (scrollTop + hitEndPadding) / (scrollHeight - clientHeight);\n if (pos >= 1) {\n onHitEnd();\n }\n }\n };\n var onUpdate = function (values) {\n handleInfiniteScroll(values);\n if (!showTop && !showBottom || values.scrollHeight <= values.clientHeight) {\n if (gradientBarPosition !== 'none') {\n setGradientBarPosition('none');\n }\n return;\n }\n var position = gradientBarPosition;\n if (values.top > 0 && values.top < 1 && gradientBarPosition !== 'both') {\n position = 'both';\n }\n if (values.top === 1 && gradientBarPosition !== 'top') {\n position = 'top';\n }\n if (values.top === 0 && gradientBarPosition !== 'bottom') {\n position = 'bottom';\n }\n if (position !== gradientBarPosition) {\n setGradientBarPosition(position);\n }\n };\n var getBarsPositions = function () {\n var defaultPosition = {\n position: gradientBarPosition,\n hideTop: fixedTop ? false : !showTop,\n hideBottom: fixedBottom ? false : !showBottom\n };\n if (defaultPosition.position === 'both' || defaultPosition.position === 'none') return defaultPosition;\n if (fixedTop && fixedBottom) {\n defaultPosition = __assign(__assign({}, defaultPosition), {\n position: 'both'\n });\n }\n if (fixedTop && !fixedBottom) {\n defaultPosition = __assign(__assign({}, defaultPosition), {\n position: defaultPosition.position === 'bottom' ? 'both' : 'top'\n });\n }\n if (!fixedTop && fixedBottom) {\n defaultPosition = __assign(__assign({}, defaultPosition), {\n position: defaultPosition.position === 'top' ? 'both' : 'bottom'\n });\n }\n return defaultPosition;\n };\n var scrollBarProps = getBarsPositions();\n return /*#__PURE__*/React__default.createElement(ScrollableContent$2, {\n \"data-testid\": generate(['scrollable-content', \"scrollable-content__bar-\".concat(scrollBarProps.position)], props),\n className: className\n }, scrollable ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Scrollbars, {\n onUpdate: onUpdate,\n autoHeight: !fixedHeight,\n autoHeightMin: fixedHeight ? undefined : minHeight,\n autoHeightMax: fixedHeight ? undefined : maxHeight,\n style: fixedHeight ? {\n height: fixedHeight\n } : undefined,\n \"data-testid\": \"scrollable-content__content\"\n }, /*#__PURE__*/React__default.createElement(Content$6, {\n \"data-testid\": \"scrollable-content__content--scrollable\"\n }, children)), bars && bars.type === 'FADE' ? ( /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n React__default.createElement(ScrollFade, __assign({}, scrollBarProps))) : null, bars && bars.type === 'SHADOW' ? ( /*#__PURE__*/\n // eslint-disable-next-line react/jsx-props-no-spreading\n React__default.createElement(ScrollShadow, __assign({}, scrollBarProps))) : null)) : ( /*#__PURE__*/React__default.createElement(Content$6, {\n \"data-testid\": \"scrollable-content__content--non-scroll\"\n }, children)));\n};\n\n/**\r\n @param className - (optional) - string\r\n @param fixedHeight - (optional) - number | string\r\n @param scrollable - (optional) - boolean\r\n @param bars - (optional) - null | ScrollBarsConfig\r\n @param maxHeight - (optional) - string | number\r\n @param minHeight - (optional) - string | number\r\n @param onHitEnd - (optional) - () => void\r\n @param hitEndPadding - (optional) - number\r\n */\nvar ScrollableContent = styled(ScrollableContent$1)(templateObject_1$3b || (templateObject_1$3b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$3b;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Overlay$3 = styled.div(templateObject_1$3a || (templateObject_1$3a = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), overlayStyling);\nvar templateObject_1$3a;\nvar AnimatedOverlay = animated(Overlay$3);\nvar Overlay$2 = function (props) {\n var children = props.children,\n isOpen = props.isOpen,\n _a = props.onClick,\n onClick = _a === void 0 ? function () {} : _a;\n var transitions = useTransition(isOpen, null, {\n config: config.stiff,\n from: {\n opacity: 0\n },\n enter: {\n opacity: 1\n },\n leave: {\n opacity: 0\n }\n });\n return /*#__PURE__*/React__default.createElement(Portal, {\n node: document && document.getElementById('overlay')\n }, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"overlay\"\n }, transitions.map(function (_a) {\n var item = _a.item,\n key = _a.key,\n style = _a.props;\n return item && ( /*#__PURE__*/React__default.createElement(AnimatedOverlay, {\n key: key,\n onClick: onClick,\n \"data-testid\": generate(['overlay'], props),\n style: style\n }, /*#__PURE__*/React__default.createElement(Portal, {\n node: document && document.getElementById('modals')\n }, children)));\n })));\n};\n\n/**\r\n * @param isOpen - (required) - boolean\r\n * @param onClick - (optional) - () => void\r\n */\nvar Overlay$1 = styled(Overlay$2)(templateObject_1$39 || (templateObject_1$39 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$39;\nvar Modal$1 = function (props) {\n var show = props.show,\n children = props.children,\n onClose = props.onClose,\n className = props.className,\n title = props.title,\n _a = props.size,\n size = _a === void 0 ? 'small' : _a,\n customWidth = props.customWidth,\n footerButtonPrimary = props.footerButtonPrimary,\n footerButtonSecondary = props.footerButtonSecondary,\n closeButtonLabel = props.closeButtonLabel,\n _b = props.useScrollContent,\n useScrollContent = _b === void 0 ? true : _b,\n _c = props.scrollbarsConfig,\n scrollbarsConfig = _c === void 0 ? {\n type: 'SHADOW',\n showBottom: true,\n showTop: false\n } : _c,\n leftCustomButtons = props.leftCustomButtons,\n rightCustomButtons = props.rightCustomButtons,\n layerModal = props.layerModal,\n customHeader = props.customHeader,\n hideFooter = props.hideFooter;\n var hasClose = onClose !== undefined;\n var hasPrimaryButton = footerButtonPrimary !== undefined;\n var hasSecondaryButton = footerButtonSecondary !== undefined;\n var hasButtons = hasPrimaryButton || hasSecondaryButton;\n var theme = useTheme();\n var activeTheme = useThemeProvider().activeTheme;\n var renderCloseButton = function (style) {\n return /*#__PURE__*/React__default.createElement(Button$1, {\n variant: style,\n label: closeButtonLabel ? closeButtonLabel : 'Cancel',\n onClick: onClose\n });\n };\n var renderFooterButtons = function () {\n if (footerButtonPrimary && footerButtonSecondary) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"secondary\",\n label: footerButtonPrimary.label,\n onClick: footerButtonPrimary.onClick,\n icon: footerButtonPrimary.icon,\n disabled: footerButtonPrimary.disabled\n }), /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"secondary\",\n label: footerButtonSecondary.label,\n onClick: footerButtonSecondary.onClick,\n icon: footerButtonSecondary.icon,\n disabled: footerButtonSecondary.disabled\n }));\n }\n if (footerButtonPrimary && !footerButtonSecondary) {\n return /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"primary\",\n label: footerButtonPrimary.label,\n onClick: footerButtonPrimary.onClick,\n icon: footerButtonPrimary.icon,\n disabled: footerButtonPrimary.disabled\n });\n }\n };\n var renderFooterContents = function () {\n if (size === 'fullscreen' && (leftCustomButtons || rightCustomButtons)) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, leftCustomButtons && /*#__PURE__*/React__default.createElement(LeftButtons, null, leftCustomButtons()), rightCustomButtons && /*#__PURE__*/React__default.createElement(RightButtons, null, rightCustomButtons()));\n }\n if (hasButtons && hasClose) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Cancel, null, onClose !== null && renderCloseButton('borderless')), renderFooterButtons());\n } else if (!hasButtons && hasClose) {\n return renderCloseButton('primary');\n } else if (hasButtons && !hasClose) {\n return renderFooterButtons();\n } else {\n return null;\n }\n };\n var renderHeader = function () {\n if (customHeader) {\n return customHeader();\n }\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, title && ( /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 3,\n weight: 300\n }, title)), onClose && ( /*#__PURE__*/React__default.createElement(Close$2, null, /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"modal__close\",\n label: \"Close\",\n onClick: onClose,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n }))));\n };\n if (!show) return null;\n // For the scrollable content, we need to know the max size we can have\n var modalBodyPadding = 16;\n var modalPadding = theme.template.modal.padding * 2;\n var modalHeaderAndFooter = theme.template.modal.header + theme.template.modal.footer;\n var themePadding = theme.spacing.getSize(modalHeaderAndFooter + modalPadding + modalBodyPadding);\n var maxHeight = \"calc(100vh - \".concat(themePadding, \")\");\n var handleOverlayClick = function () {\n onClose && onClose();\n };\n var handleModalClick = function (e) {\n e.stopPropagation();\n };\n return /*#__PURE__*/React__default.createElement(Overlay$1, {\n isOpen: show,\n onClick: handleOverlayClick\n }, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"modal\"\n }, /*#__PURE__*/React__default.createElement(ModalWrapper, {\n layerModal: layerModal\n }, /*#__PURE__*/React__default.createElement(Modal$2, {\n onClick: handleModalClick,\n noMinHeight: !children,\n size: size,\n customWidth: customWidth,\n className: className,\n \"data-testid\": generate(['modal', \"modal--\".concat(customWidth ? \"custom-width-\".concat(customWidth) : size), \"active-theme--\".concat(activeTheme.name)], props),\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Header$7, {\n \"data-testid\": \"modal__header\"\n }, renderHeader()), children && ( /*#__PURE__*/React__default.createElement(Body$1, {\n \"data-testid\": \"modal__body\"\n }, useScrollContent ? ( /*#__PURE__*/React__default.createElement(ScrollableContent, {\n maxHeight: maxHeight,\n minHeight: 20,\n bars: scrollbarsConfig\n }, /*#__PURE__*/React__default.createElement(BodyContent, null, children))) : ( /*#__PURE__*/React__default.createElement(BodyContent, {\n useScroll: !useScrollContent\n }, children)))), !hideFooter && /*#__PURE__*/React__default.createElement(Footer$5, {\n \"data-testid\": \"modal__footer\"\n }, renderFooterContents())))));\n};\n\n/**\r\n @param show - (required) - boolean\r\n @param title - (required) - string\r\n @param customWidth - (optional) - number\r\n @param onClose - (optional) - () => void\r\n @param closeButtonLabel - (optional) - string\r\n @param className - (optional) - string\r\n @param footerButtonPrimary - (optional) - FooterButton\r\n @param footerButtonSecondary - (optional) - FooterButton\r\n @param useScrollContent - (optional) - boolean\r\n @param scrollbarsConfig - (optional) - null | ScrollBarsConfig\r\n @param leftCustomButtons - (optional) - () => React.ReactElement\r\n @param rightCustomButtons - (optional) - () => React.ReactElement\r\n */\nvar Modal = styled(Modal$1)(templateObject_1$38 || (templateObject_1$38 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$38;\n\n/**\r\n * @param className - (optional) - string\r\n * @param title - (optional) - string\r\n * @param message - (optional) - string\r\n * @param cancelText - (optional) - string\r\n * @param submitText - (optional) - string\r\n */\nvar Confirmation = function (props) {\n var className = props.className,\n _a = props.open,\n open = _a === void 0 ? false : _a,\n close = props.close,\n _b = props.title,\n title = _b === void 0 ? 'Are you sure?' : _b,\n message = props.message,\n _c = props.submitText,\n submitText = _c === void 0 ? 'Continue' : _c,\n _d = props.cancelText,\n cancelText = _d === void 0 ? 'Cancel' : _d;\n return /*#__PURE__*/React__default.createElement(Modal, {\n title: title,\n \"data-testid\": generate(['confirmation'], props),\n className: className,\n show: open,\n onClose: function () {\n return close();\n },\n footerButtonPrimary: {\n label: submitText,\n onClick: function () {\n return close(true);\n }\n },\n closeButtonLabel: cancelText\n }, /*#__PURE__*/React__default.createElement(Text$1, {\n weight: 300\n }, message));\n};\nvar confirmationModal = createModal(Confirmation);\nvar ConfirmationFactory = function () {\n return /*#__PURE__*/React__default.createElement(ModalFactory, null);\n};\nvar INITIAL_STATE = {\n onAddToast: function () {},\n onRemoveToast: function () {},\n toasts: []\n};\nvar Context = /*#__PURE__*/React__default.createContext(INITIAL_STATE);\nvar useToaster = function () {\n return React__default.useContext(Context);\n};\nvar shouldAutoClose = function (toast) {\n var _a = toast.hideCloseButton,\n hideCloseButton = _a === void 0 ? true : _a;\n // if any are present, then we must have a close button\n var showCloseButton = !!toast.message || !!toast.actionPrimary || !!toast.actionSecondary;\n // BUT if there is just a title (no message or actions), then the close is optional\n if (!toast.message && !toast.actionPrimary && !toast.actionSecondary) {\n showCloseButton = !hideCloseButton;\n }\n // Set the autoclose status before we override the close button visibility with optional flag\n return !showCloseButton;\n};\nvar ToasterProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React__default.useState(INITIAL_STATE.toasts), 2),\n toasts = _b[0],\n setToasts = _b[1];\n var onRemoveToast = React__default.useCallback(function (toast) {\n setToasts(toasts.filter(function (item) {\n return item.id !== toast.id;\n }));\n }, [toasts]);\n var onAddToast = React__default.useCallback(function (toast) {\n var autoClose = shouldAutoClose(toast);\n var newToast = autoClose ? __assign(__assign({}, toast), {\n removeAt: +new Date() + 3000\n }) : toast;\n setToasts(__spreadArray(__spreadArray([], __read(toasts), false), [newToast], false));\n }, [toasts]);\n React__default.useEffect(function () {\n var dismissableToasts = toasts.filter(function (item) {\n return !!item.removeAt;\n });\n var interval;\n if (dismissableToasts.length > 0) {\n interval = window.setInterval(function () {\n var toRemoveIds = dismissableToasts.reduce(function (acc, item) {\n if (item.removeAt && item.removeAt <= +new Date()) {\n return __spreadArray(__spreadArray([], __read(acc), false), [item.id], false);\n }\n return acc;\n }, []);\n if (toRemoveIds) {\n setToasts(toasts.filter(function (item) {\n return !toRemoveIds.includes(item.id);\n }));\n }\n }, 500);\n }\n return function () {\n if (interval) {\n clearInterval(interval);\n }\n };\n }, [toasts]);\n return /*#__PURE__*/React__default.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n onAddToast: onAddToast,\n onRemoveToast: onRemoveToast,\n toasts: toasts\n })\n }, children);\n};\nvar isDarkMode$3 = themeHelpers.isDarkMode;\nvar getScrollbarStyles = function (activeTheme) {\n return css(templateObject_3$1f || (templateObject_3$1f = __makeTemplateObject([\"\\n *::-webkit-scrollbar {\\n width: 7px;\\n height: 7px;\\n }\\n *::-webkit-scrollbar-thumb {\\n -webkit-border-radius: 6px;\\n border-radius: 6px;\\n background-color: transparent;\\n transition: background-color 1s;\\n }\\n *::-webkit-scrollbar-track {\\n background-color: transparent;\\n }\\n *::-webkit-scrollbar-corner {\\n background-color: transparent;\\n }\\n \", \"\\n \"], [\"\\n *::-webkit-scrollbar {\\n width: 7px;\\n height: 7px;\\n }\\n *::-webkit-scrollbar-thumb {\\n -webkit-border-radius: 6px;\\n border-radius: 6px;\\n background-color: transparent;\\n transition: background-color 1s;\\n }\\n *::-webkit-scrollbar-track {\\n background-color: transparent;\\n }\\n *::-webkit-scrollbar-corner {\\n background-color: transparent;\\n }\\n \", \"\\n \"])), isDarkMode$3(activeTheme) ?\n // dark mode:\n css(templateObject_1$37 || (templateObject_1$37 = __makeTemplateObject([\"\\n body::-webkit-scrollbar-track {\\n // #14171d;\\n background-color: \", \";\\n }\\n *:hover::-webkit-scrollbar-thumb {\\n // #36434F\\n background-color: \", \";\\n transition: background-color 1s ease-out;\\n }\\n \"], [\"\\n body::-webkit-scrollbar-track {\\n // #14171d;\\n background-color: \", \";\\n }\\n *:hover::-webkit-scrollbar-thumb {\\n // #36434F\\n background-color: \", \";\\n transition: background-color 1s ease-out;\\n }\\n \"])), activeTheme.colors.backgrounds.getValue(2), activeTheme.colors.borders.getValue(1)) :\n // light mode:\n css(templateObject_2$1G || (templateObject_2$1G = __makeTemplateObject([\"\\n *:hover::-webkit-scrollbar-thumb {\\n // #BFBFBF ( light design colour: #EEEEEE )\\n background-color: \", \";\\n transition: background-color 1s ease-out;\\n }\\n \"], [\"\\n *:hover::-webkit-scrollbar-thumb {\\n // #BFBFBF ( light design colour: #EEEEEE )\\n background-color: \", \";\\n transition: background-color 1s ease-out;\\n }\\n \"])), activeTheme.colors.borders.getValue(1)));\n};\nvar GlobalStyle = createGlobalStyle(templateObject_4$_ || (templateObject_4$_ = __makeTemplateObject([\"\\n \", \"\\n html {\\n font-size: 14px;\\n line-height: normal;\\n color: \", \";\\n font-family: sans-serif;\\n }\\n\\n body {\\n line-height: normal;\\n font-family: sans-serif;\\n }\\n \\n * {\\n box-sizing: border-box;\\n font-family: sans-serif;\\n }\\n\\n // Collapse animation\\n .ReactCollapse--collapse {\\n transition: height 200ms;\\n }\\n\\n // global scrollbar styles:\\n \", \"\\n\"], [\"\\n \", \"\\n html {\\n font-size: 14px;\\n line-height: normal;\\n color: \", \";\\n font-family: sans-serif;\\n }\\n\\n body {\\n line-height: normal;\\n font-family: sans-serif;\\n }\\n \\n * {\\n box-sizing: border-box;\\n font-family: sans-serif;\\n }\\n\\n // Collapse animation\\n .ReactCollapse--collapse {\\n transition: height 200ms;\\n }\\n\\n // global scrollbar styles:\\n \", \"\\n\"])), reset, theme === null || theme === void 0 ? void 0 : theme.colors.text.getValue(), function (p) {\n return getScrollbarStyles(p.activeTheme);\n});\nvar templateObject_1$37, templateObject_2$1G, templateObject_3$1f, templateObject_4$_;\n\n// We want to make sure when we show multiple modals, that we only show the last one in the set\n// This is useful for confirmation modal trigger inside a modal\nvar ModalsWrapper = styled.div(templateObject_1$36 || (templateObject_1$36 = __makeTemplateObject([\"\\n > *:not(:last-child) {\\n display: none;\\n }\\n\"], [\"\\n > *:not(:last-child) {\\n display: none;\\n }\\n\"])));\n// Keep the first overlay, as we dont want multiple to be visible\nvar OverlayWrapper$1 = styled.div(templateObject_2$1F || (templateObject_2$1F = __makeTemplateObject([\"\\n > *:not(:first-child) {\\n display: none;\\n }\\n\"], [\"\\n > *:not(:first-child) {\\n display: none;\\n }\\n\"])));\nvar Core = function (props) {\n var children = props.children,\n history = props.history;\n var modalRef = React__default.useRef(null);\n var _a = __read(React__default.useState(false), 2),\n loaded = _a[0],\n setLoaded = _a[1];\n var activeTheme = useThemeProvider().activeTheme;\n // We need to guarantee the rest of the components are rendered to the page, before\n // we load the children (else portals dont appear in the right place in storybook)\n React__default.useEffect(function () {\n if (modalRef) {\n setLoaded(true);\n }\n }, [modalRef]);\n return /*#__PURE__*/React__default.createElement(ThemeProvider, null, /*#__PURE__*/React__default.createElement(ToasterProvider, null, /*#__PURE__*/React__default.createElement(Router, {\n history: history\n }, /*#__PURE__*/React__default.createElement(DrawerProvider, null, /*#__PURE__*/React__default.createElement(GlobalStyle, {\n activeTheme: activeTheme\n }), /*#__PURE__*/React__default.createElement(ConfirmationFactory, null), /*#__PURE__*/React__default.createElement(OverlayWrapper$1, {\n id: \"overlay\"\n }), /*#__PURE__*/React__default.createElement(ModalsWrapper, {\n id: \"modals\",\n ref: modalRef\n }), loaded && children))));\n};\nvar templateObject_1$36, templateObject_2$1F;\nvar getInitials = function (any) {\n var matches = any.replace(/[^a-zA-Z- ]/g, '').match(/\\b\\w/g);\n if (!matches) return null;\n var initials = matches.slice(0, 2).join('').toUpperCase();\n return initials;\n};\nvar toSnakeCase = function (string) {\n if (string) {\n return string.replace(/\\W+/g, ' ').split(/ |\\B(?=[A-Z])/).map(function (word) {\n return word.toLowerCase();\n }).join('_');\n } else {\n return null;\n }\n};\nvar generateCypressId = function (id) {\n if (id === void 0) {\n id = '';\n }\n return id.split(' ').map(function (word) {\n return word.toLowerCase();\n }).join('-');\n};\n\n/**\r\n * Pendo trackEvent function - helper function to track events\r\n * @param eventName - (required) string\r\n * @param eventProperties - (required) EventProperties\r\n */\nvar trackPendoEvent = function (eventName, eventProperties) {\n window && window.pendo && window.pendo.track(eventName, __assign({}, eventProperties));\n};\nvar useHasOverflow = function () {\n var ref = React__default.useRef(null);\n var _a = __read(React__default.useState(false), 2),\n hasOverflow = _a[0],\n setHasOverflow = _a[1];\n React__default.useEffect(function () {\n if (ref && ref.current) {\n setHasOverflow(ref.current.offsetWidth < ref.current.scrollWidth);\n }\n }, [ref]);\n return {\n ref: ref,\n hasOverflow: hasOverflow\n };\n};\nvar isDarkMode$2 = themeHelpers.isDarkMode;\nvar Header$6 = styled.div(templateObject_2$1E || (templateObject_2$1E = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n\\n \", \"\\n\"])), function (p) {\n return p.isGroup && css(templateObject_1$35 || (templateObject_1$35 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n \"], [\"\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n });\n});\nvar variants = function (variant, activeTheme) {\n switch (variant) {\n case 'nested':\n return css(templateObject_3$1e || (templateObject_3$1e = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), activeTheme.colors.backgrounds.getValue(1));\n default:\n case 'default':\n return css(templateObject_4$Z || (templateObject_4$Z = __makeTemplateObject([\"\\n background: \", \";\\n \", \"\\n \"], [\"\\n background: \", \";\\n \", \"\\n \"])), isDarkMode$2(activeTheme) ? activeTheme.colors.backgrounds.getValue() : activeTheme.colors.backgrounds.getValue(2), boxShadow);\n }\n};\nvar ragVariants$1 = function (state) {\n if (!state) return null;\n return css(templateObject_5$Q || (templateObject_5$Q = __makeTemplateObject([\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 4px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 4px;\\n top: 0;\\n left: 0;\\n }\\n\\n background: \", \";\\n \"], [\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 4px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 4px;\\n top: 0;\\n left: 0;\\n }\\n\\n background: \", \";\\n \"])), function (p) {\n return p.theme.colors[state].getValue(500).main;\n }, function (p) {\n return p.theme.colors[state].getValue(100).main;\n });\n};\nvar Accordion$2 = styled.div(templateObject_7$x || (templateObject_7$x = __makeTemplateObject([\"\\n position: relative;\\n border-radius: \", \";\\n padding: \", \" \", \";\\n\\n \", \"\\n\\n \", \" {\\n min-height: \", \";\\n }\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n \", \";\\n \", \";\\n\"], [\"\\n position: relative;\\n border-radius: \", \";\\n padding: \", \" \", \";\\n\\n \", \"\\n\\n \", \" {\\n min-height: \", \";\\n }\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.isGroup && css(templateObject_6$G || (templateObject_6$G = __makeTemplateObject([\"\\n overflow: hidden;\\n padding: 0;\\n \", \"\\n \"], [\"\\n overflow: hidden;\\n padding: 0;\\n \", \"\\n \"])), boxShadow);\n}, Header$6, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return variants(p.variant, p.activeTheme);\n}, function (p) {\n return ragVariants$1(p.state);\n});\nvar HeaderContent = styled.div(templateObject_8$r || (templateObject_8$r = __makeTemplateObject([\"\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"], [\"\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"])));\nvar CheckWrapper$1 = styled.div(templateObject_9$o || (templateObject_9$o = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Toggle$1 = styled.div(templateObject_10$j || (templateObject_10$j = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n font-size: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n margin-right: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.type.getSize(1);\n});\nvar Content$5 = styled.div(templateObject_12$c || (templateObject_12$c = __makeTemplateObject([\"\\n border-radius: \", \";\\n padding-top: \", \";\\n\\n \", \"\\n\\n & > \", \" {\\n margin-left: \", \";\\n margin-right: \", \";\\n }\\n\"], [\"\\n border-radius: \", \";\\n padding-top: \", \";\\n\\n \", \"\\n\\n & > \", \" {\\n margin-left: \", \";\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.isGroup && css(templateObject_11$e || (templateObject_11$e = __makeTemplateObject([\"\\n padding: 0 \", \" \", \";\\n \"], [\"\\n padding: 0 \", \" \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n });\n}, Accordion$2, function (p) {\n return p.theme.spacing.getSize(-3);\n}, function (p) {\n return p.theme.spacing.getSize(-3);\n});\nvar templateObject_1$35, templateObject_2$1E, templateObject_3$1e, templateObject_4$Z, templateObject_5$Q, templateObject_6$G, templateObject_7$x, templateObject_8$r, templateObject_9$o, templateObject_10$j, templateObject_11$e, templateObject_12$c;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Label$6 = styled.label(templateObject_1$34 || (templateObject_1$34 = __makeTemplateObject([\"\\n display: flex;\\n font-size: \", \";\\n color: \", \";\\n font-weight: 500;\\n\"], [\"\\n display: flex;\\n font-size: \", \";\\n color: \", \";\\n font-weight: 500;\\n\"])), function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar templateObject_1$34;\nvar Label$5 = function (props) {\n var children = props.children,\n htmlFor = props.htmlFor,\n className = props.className,\n onClick = props.onClick;\n return /*#__PURE__*/React__default.createElement(Label$6, {\n className: className,\n htmlFor: htmlFor,\n \"data-testid\": generate(['label'], props),\n onClick: onClick\n }, children);\n};\n\n/**\r\n @param htmlFor - (optional) - string\r\n @param className - (optional) - string\r\n @param onClick - (optional) - (event: React.MouseEvent<HTMLLabelElement, MouseEvent>) => void\r\n */\nvar Label$4 = styled(Label$5)(templateObject_1$33 || (templateObject_1$33 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$33;\nvar View$1 = function (props) {\n var children = props.children,\n className = props.className,\n id = props.id,\n onClick = props.onClick;\n return /*#__PURE__*/React__default.createElement(View$2, {\n id: id,\n className: className,\n \"data-testid\": generate([], props),\n onClick: onClick\n }, children);\n};\n\n/**\r\n @param className - (optional) - string\r\n @param id - (optional) - string\r\n */\nvar View = styled(View$1)(templateObject_1$32 || (templateObject_1$32 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$32;\nvar LabelsWrapper$1 = styled(View)(templateObject_2$1D || (templateObject_2$1D = __makeTemplateObject([\"\\n position: relative;\\n margin-left: \", \";\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n margin-left: \", \";\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.ellipsis && css(templateObject_1$31 || (templateObject_1$31 = __makeTemplateObject([\"\\n overflow: hidden;\\n \"], [\"\\n overflow: hidden;\\n \"])));\n});\nvar Label$3 = styled(Label$4)(templateObject_3$1d || (templateObject_3$1d = __makeTemplateObject([\"\\n max-width: \", \";\\n display: inline-flex;\\n align-items: center;\\n cursor: \", \";\\n margin-right: \", \";\\n\"], [\"\\n max-width: \", \";\\n display: inline-flex;\\n align-items: center;\\n cursor: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.reducedWidth ? '90%' : '100%';\n}, function (p) {\n return p.disabled ? 'not-allowed' : 'pointer';\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar FirstLabel$1 = styled.div(templateObject_6$F || (templateObject_6$F = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 400;\\n \", \"\\n\\n \", \"\\n\"], [\"\\n color: \", \";\\n font-weight: 400;\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.hasSubLabel && css(templateObject_4$Y || (templateObject_4$Y = __makeTemplateObject([\"\\n font-weight: 500;\\n margin-bottom: \", \";\\n \"], [\"\\n font-weight: 500;\\n margin-bottom: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n });\n}, function (p) {\n return p.ellipsis && css(templateObject_5$P || (templateObject_5$P = __makeTemplateObject([\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"], [\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar SubLabel$1 = styled.div(templateObject_8$q || (templateObject_8$q = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 400;\\n font-size: \", \";\\n \", \"\\n\"], [\"\\n color: \", \";\\n font-weight: 400;\\n font-size: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.ellipsis && css(templateObject_7$w || (templateObject_7$w = __makeTemplateObject([\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"], [\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar StyledCheckbox = styled.div(templateObject_21$3 || (templateObject_21$3 = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n height: \", \";\\n width: \", \";\\n min-width: \", \";\\n align-items: center;\\n pointer-events: pointer;\\n\\n \", \"\\n\\n &:before {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: 0;\\n top: 0;\\n transition: all 0.25s ease-in-out;\\n }\\n\\n \", \" {\\n position: absolute;\\n top: 5px;\\n left: 5px;\\n \", \"\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n display: flex;\\n height: \", \";\\n width: \", \";\\n min-width: \", \";\\n align-items: center;\\n pointer-events: pointer;\\n\\n \", \"\\n\\n &:before {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n box-sizing: border-box;\\n display: block;\\n position: absolute;\\n left: 0;\\n top: 0;\\n transition: all 0.25s ease-in-out;\\n }\\n\\n \", \" {\\n position: absolute;\\n top: 5px;\\n left: 5px;\\n \", \"\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.size === 'small' && css(templateObject_9$n || (templateObject_9$n = __makeTemplateObject([\"\\n min-width: \", \";\\n \"], [\"\\n min-width: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, IconWrapper$4, function (p) {\n return contrastTextColor(p.activeTheme);\n}, function (p) {\n return p.isChecked ? css(templateObject_12$b || (templateObject_12$b = __makeTemplateObject([\"\\n &:before {\\n \", \"\\n }\\n \"], [\"\\n &:before {\\n \", \"\\n }\\n \"])), p.disabled ? css(templateObject_10$i || (templateObject_10$i = __makeTemplateObject([\"\\n background: \", \"; // is checked AND disabled....\\n border-color: \", \";\\n cursor: not-allowed;\\n\\n \", \" {\\n color: \", \";\\n }\\n \"], [\"\\n background: \", \"; // is checked AND disabled....\\n border-color: \", \";\\n cursor: not-allowed;\\n\\n \", \" {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, IconWrapper$4, isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue(1) : p.theme.colors.text.getValue(2)) : css(templateObject_11$d || (templateObject_11$d = __makeTemplateObject([\"\\n background: \", \";\\n border-color: \", \";\\n \"], [\"\\n background: \", \";\\n border-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().main;\n })) : css(templateObject_15$8 || (templateObject_15$8 = __makeTemplateObject([\"\\n &:before {\\n \", \"\\n }\\n \"], [\"\\n &:before {\\n \", \"\\n }\\n \"])), p.disabled ? css(templateObject_13$a || (templateObject_13$a = __makeTemplateObject([\"\\n background: \", \";\\n border-color: \", \";\\n cursor: not-allowed;\\n \"], [\"\\n background: \", \";\\n border-color: \", \";\\n cursor: not-allowed;\\n \"])), getDisabledFieldColor(p.activeTheme), function (p) {\n return p.theme.colors.borders.getValue(1);\n }) : css(templateObject_14$8 || (templateObject_14$8 = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n background: \", \";\\n \"], [\"\\n border: 1px solid \", \";\\n background: \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n }, getFieldColor(p.activeTheme)));\n}, function (p) {\n return p.isChecked && p.isIndeterminate &&\n // Indeterminate state\n css(templateObject_18$4 || (templateObject_18$4 = __makeTemplateObject([\"\\n &:before {\\n border: 1px solid \", \";\\n\\n \", \"\\n }\\n\\n &:after {\\n content: '';\\n height: 2px;\\n width: \", \";\\n border-radius: 1px;\\n background: \", \";\\n position: absolute;\\n left: 50%;\\n margin-left: -6px;\\n }\\n \"], [\"\\n &:before {\\n border: 1px solid \", \";\\n\\n \", \"\\n }\\n\\n &:after {\\n content: '';\\n height: 2px;\\n width: \", \";\\n border-radius: 1px;\\n background: \", \";\\n position: absolute;\\n left: 50%;\\n margin-left: -6px;\\n }\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(0);\n }, p.disabled ? css(templateObject_16$6 || (templateObject_16$6 = __makeTemplateObject([\"\\n background: \", \"};\\n \"], [\"\\n background: \", \"};\\n \"])), isDarkMode$4(p.activeTheme) ? p.theme.colors.borders.getValue(1) : p.theme.colors.backgrounds.getValue()) : css(templateObject_17$5 || (templateObject_17$5 = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), isDarkMode$4(p.activeTheme) ? 'transparent' : 'transparent'), function (p) {\n return p.theme.spacing.getSize(3);\n }, isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue(1) : p.theme.colors.borders.getValue(0));\n}, function (p) {\n return p.size && ['small'].includes(p.size) && css(templateObject_20$3 || (templateObject_20$3 = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n }\\n\\n \", \"\\n\\n \", \" {\\n top: 3px;\\n left: 3px;\\n font-size: \", \";\\n }\\n \"], [\"\\n height: \", \";\\n width: \", \";\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n }\\n\\n \", \"\\n\\n \", \" {\\n top: 3px;\\n left: 3px;\\n font-size: \", \";\\n }\\n \"])), p.theme.spacing.getSize(4), p.theme.spacing.getSize(4), p.theme.spacing.getSize(4), p.theme.spacing.getSize(4), p.isChecked && p.isIndeterminate && css(templateObject_19$3 || (templateObject_19$3 = __makeTemplateObject([\"\\n &:after {\\n width: \", \";\\n margin-left: -\", \";\\n }\\n \"], [\"\\n &:after {\\n width: \", \";\\n margin-left: -\", \";\\n }\\n \"])), p.theme.spacing.getSize(2), p.theme.spacing.getSize(1)), IconWrapper$4, function (p) {\n return p.theme.type.getSize(-2);\n });\n});\nvar errorState$5 = function (theme) {\n return css(templateObject_22$2 || (templateObject_22$2 = __makeTemplateObject([\"\\n & \", \" {\\n color: \", \";\\n\\n &:before {\\n border-color: \", \";\\n }\\n }\\n \"], [\"\\n & \", \" {\\n color: \", \";\\n\\n &:before {\\n border-color: \", \";\\n }\\n }\\n \"])), StyledCheckbox, theme.colors.error.getValue().main, theme.colors.error.getValue().main);\n};\nvar templateObject_1$31, templateObject_2$1D, templateObject_3$1d, templateObject_4$Y, templateObject_5$P, templateObject_6$F, templateObject_7$w, templateObject_8$q, templateObject_9$n, templateObject_10$i, templateObject_11$d, templateObject_12$b, templateObject_13$a, templateObject_14$8, templateObject_15$8, templateObject_16$6, templateObject_17$5, templateObject_18$4, templateObject_19$3, templateObject_20$3, templateObject_21$3, templateObject_22$2;\nvar Checkbox$1 = function (props) {\n var onChange = props.onChange,\n isChecked = props.isChecked,\n disabled = props.disabled,\n isIndeterminate = props.isIndeterminate,\n className = props.className,\n _a = props.size,\n size = _a === void 0 ? 'large' : _a,\n label = props.label,\n subLabel = props.subLabel,\n _b = props.ellipsis,\n ellipsis = _b === void 0 ? false : _b,\n _c = props.reducedWidth,\n reducedWidth = _c === void 0 ? false : _c;\n var handleOnChange = function (event) {\n if (onChange && !disabled) {\n onChange(!isChecked, event);\n }\n };\n var activeTheme = useThemeProvider().activeTheme;\n var checkbox = /*#__PURE__*/React__default.createElement(StyledCheckbox, {\n className: className,\n \"data-testid\": generate(['input', 'input--checkbox'], props),\n disabled: disabled,\n isChecked: isChecked,\n onClick: !!label ? undefined : handleOnChange,\n isIndeterminate: isIndeterminate,\n role: \"checkbox\",\n size: size,\n activeTheme: activeTheme\n }, isChecked && !isIndeterminate && /*#__PURE__*/React__default.createElement(MemoSvgCheck, {\n \"data-testid\": \"input--is-checked\"\n }));\n if (label) {\n var renderLabel = typeof label === 'string' ? label : label();\n var renderSubLabel = typeof subLabel === 'string' ? subLabel : subLabel && subLabel();\n return /*#__PURE__*/React__default.createElement(Label$3, {\n onClick: handleOnChange,\n disabled: disabled,\n reducedWidth: reducedWidth\n }, checkbox, /*#__PURE__*/React__default.createElement(LabelsWrapper$1, {\n ellipsis: ellipsis\n }, /*#__PURE__*/React__default.createElement(FirstLabel$1, {\n ellipsis: ellipsis,\n hasSubLabel: !!renderSubLabel\n }, renderLabel), subLabel && /*#__PURE__*/React__default.createElement(SubLabel$1, {\n ellipsis: ellipsis\n }, renderSubLabel)));\n }\n return checkbox;\n};\n\n/**\r\n * @param onChange - (required) - (value: boolean, event: React.MouseEvent<HTMLDivElement | HTMLLabelElement, MouseEvent>) => void\r\n * @param isChecked - (optional) - boolean\r\n * @param className - (optional) - string\r\n * @param isIndeterminate - (optional) - boolean\r\n * @param label - (optional) - () => React.ReactElement\r\n */\nvar Checkbox = styled(Checkbox$1)(templateObject_1$30 || (templateObject_1$30 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$30;\nvar LabelsWrapper = styled(View)(templateObject_2$1C || (templateObject_2$1C = __makeTemplateObject([\"\\n position: relative;\\n padding-left: \", \";\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n padding-left: \", \";\\n display: flex;\\n flex-direction: column;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.ellipsis && css(templateObject_1$2$ || (templateObject_1$2$ = __makeTemplateObject([\"\\n overflow: hidden;\\n \"], [\"\\n overflow: hidden;\\n \"])));\n});\nvar Label$2 = styled(Label$4)(templateObject_3$1c || (templateObject_3$1c = __makeTemplateObject([\"\\n max-width: 100%;\\n display: inline-flex;\\n align-items: center;\\n cursor: \", \";\\n\\n :not(:last-child) {\\n margin-right: \", \";\\n }\\n\"], [\"\\n max-width: 100%;\\n display: inline-flex;\\n align-items: center;\\n cursor: \", \";\\n\\n :not(:last-child) {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.disabled ? 'not-allowed' : 'pointer';\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar FirstLabel = styled.div(templateObject_6$E || (templateObject_6$E = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 400;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n color: \", \";\\n font-weight: 400;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.hasSubLabel && css(templateObject_4$X || (templateObject_4$X = __makeTemplateObject([\"\\n font-weight: 500;\\n margin-bottom: \", \";\\n \"], [\"\\n font-weight: 500;\\n margin-bottom: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(1);\n });\n}, function (p) {\n return p.ellipsis && css(templateObject_5$O || (templateObject_5$O = __makeTemplateObject([\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"], [\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar SubLabel = styled.div(templateObject_8$p || (templateObject_8$p = __makeTemplateObject([\"\\n color: \", \";\\n font-weight: 400;\\n font-size: \", \";\\n \", \"\\n\"], [\"\\n color: \", \";\\n font-weight: 400;\\n font-size: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.ellipsis && css(templateObject_7$v || (templateObject_7$v = __makeTemplateObject([\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"], [\"\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n padding-right: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar StyledRadio = styled.div(templateObject_15$7 || (templateObject_15$7 = __makeTemplateObject([\"\\n display: flex;\\n position: relative;\\n display: flex;\\n height: \", \";\\n width: \", \";\\n min-width: \", \";\\n background: 'transparent';\\n align-items: center;\\n opacity: \", \";\\n cursor: \", \";\\n // TODO: Determine a global theme-based opacity or treatment for disabled text / input and apply here instead.\\n\\n \", \"\\n\\n &:before,\\n &:after {\\n content: '';\\n border-radius: 100%;\\n display: block;\\n position: absolute;\\n transition: all 0.25s ease-in-out;\\n opacity: \", \";\\n // TODO: Determine a global theme-based opacity or treatment for disabled text / input and apply here instead.\\n }\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n box-sizing: border-box;\\n left: 0;\\n top: 0;\\n }\\n\\n &:after {\\n height: \", \";\\n width: \", \";\\n left: \", \";\\n top: \", \";\\n z-index: calc(\", \" + 1);\\n }\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n position: relative;\\n display: flex;\\n height: \", \";\\n width: \", \";\\n min-width: \", \";\\n background: 'transparent';\\n align-items: center;\\n opacity: \", \";\\n cursor: \", \";\\n // TODO: Determine a global theme-based opacity or treatment for disabled text / input and apply here instead.\\n\\n \", \"\\n\\n &:before,\\n &:after {\\n content: '';\\n border-radius: 100%;\\n display: block;\\n position: absolute;\\n transition: all 0.25s ease-in-out;\\n opacity: \", \";\\n // TODO: Determine a global theme-based opacity or treatment for disabled text / input and apply here instead.\\n }\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n box-sizing: border-box;\\n left: 0;\\n top: 0;\\n }\\n\\n &:after {\\n height: \", \";\\n width: \", \";\\n left: \", \";\\n top: \", \";\\n z-index: calc(\", \" + 1);\\n }\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.disabled ? 0.5 : 1;\n}, function (p) {\n return p.disabled ? 'not-allowed' : 'pointer';\n}, function (p) {\n return p.size === 'large' && css(templateObject_9$m || (templateObject_9$m = __makeTemplateObject([\"\\n min-width: \", \";\\n \"], [\"\\n min-width: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(6);\n });\n}, function (p) {\n return p.disabled ? 0.5 : 1;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, zIndex, function (p) {\n return p.size === 'large' && css(templateObject_10$h || (templateObject_10$h = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n }\\n\\n &:after {\\n height: \", \";\\n width: \", \";\\n left: \", \";\\n top: \", \";\\n }\\n \"], [\"\\n height: \", \";\\n width: \", \";\\n\\n &:before {\\n height: \", \";\\n width: \", \";\\n }\\n\\n &:after {\\n height: \", \";\\n width: \", \";\\n left: \", \";\\n top: \", \";\\n }\\n \"])), function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(6);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(1.5);\n }, function (p) {\n return p.theme.spacing.getSize(1.5);\n });\n}, function (p) {\n var _a;\n return ((_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.name) === 'dark' ? p.isChecked ? css(templateObject_11$c || (templateObject_11$c = __makeTemplateObject([\"\\n // Dark Mode Checked\\n &:before {\\n background: 'transparent';\\n border: 1px solid \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"], [\"\\n // Dark Mode Checked\\n &:before {\\n background: 'transparent';\\n border: 1px solid \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().main;\n }) : css(templateObject_12$a || (templateObject_12$a = __makeTemplateObject([\"\\n // Dark Mode Unchecked\\n &:before {\\n border: 1px solid \", \";\\n background: 'transparent';\\n }\\n\\n &:after {\\n background: 'transparent';\\n }\\n \"], [\"\\n // Dark Mode Unchecked\\n &:before {\\n border: 1px solid \", \";\\n background: 'transparent';\\n }\\n\\n &:after {\\n background: 'transparent';\\n }\\n \"])), function (p) {\n return p.theme.colors.text.getValue();\n }) : p.isChecked ? css(templateObject_13$9 || (templateObject_13$9 = __makeTemplateObject([\"\\n // Light Mode Checked\\n &:before {\\n background: \", \";\\n border-color: \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"], [\"\\n // Light Mode Checked\\n &:before {\\n background: \", \";\\n border-color: \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n }) : css(templateObject_14$7 || (templateObject_14$7 = __makeTemplateObject([\"\\n // Light Mode Unchecked\\n &:before {\\n border: 1px solid \", \";\\n background: \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"], [\"\\n // Light Mode Unchecked\\n &:before {\\n border: 1px solid \", \";\\n background: \", \";\\n }\\n\\n &:after {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n });\n});\nvar errorState$4 = function (theme) {\n return css(templateObject_16$5 || (templateObject_16$5 = __makeTemplateObject([\"\\n & \", \" {\\n color: \", \";\\n\\n &:before {\\n border-color: \", \";\\n }\\n }\\n \"], [\"\\n & \", \" {\\n color: \", \";\\n\\n &:before {\\n border-color: \", \";\\n }\\n }\\n \"])), StyledRadio, theme.colors.error.getValue().main, theme.colors.error.getValue().main);\n};\nvar templateObject_1$2$, templateObject_2$1C, templateObject_3$1c, templateObject_4$X, templateObject_5$O, templateObject_6$E, templateObject_7$v, templateObject_8$p, templateObject_9$m, templateObject_10$h, templateObject_11$c, templateObject_12$a, templateObject_13$9, templateObject_14$7, templateObject_15$7, templateObject_16$5;\nvar Radio$1 = function (props) {\n var onChange = props.onChange,\n isChecked = props.isChecked,\n disabled = props.disabled,\n className = props.className,\n _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n label = props.label,\n subLabel = props.subLabel,\n _b = props.ellipsis,\n ellipsis = _b === void 0 ? false : _b;\n var activeTheme = useThemeProvider().activeTheme;\n var handleOnChange = function (event) {\n if (onChange && !disabled) {\n onChange(!isChecked, event);\n }\n };\n var radio = /*#__PURE__*/React__default.createElement(StyledRadio, {\n className: className,\n \"data-testid\": generate(['input', 'input--radio', isChecked ? 'input-radio--is-checked' : ''], props),\n disabled: disabled,\n isChecked: isChecked,\n onClick: !!label ? undefined : handleOnChange,\n role: \"radio\",\n size: size,\n activeTheme: activeTheme\n });\n if (label) {\n var renderLabel = typeof label === 'string' ? label : label();\n var renderSubLabel = typeof subLabel === 'string' ? subLabel : subLabel && subLabel();\n return /*#__PURE__*/React__default.createElement(Label$2, {\n onClick: !disabled ? function (e) {\n return onChange(!isChecked, e);\n } : undefined,\n disabled: disabled\n }, radio, /*#__PURE__*/React__default.createElement(LabelsWrapper, {\n ellipsis: ellipsis\n }, /*#__PURE__*/React__default.createElement(FirstLabel, {\n ellipsis: ellipsis,\n hasSubLabel: !!renderSubLabel\n }, renderLabel), subLabel && /*#__PURE__*/React__default.createElement(SubLabel, {\n ellipsis: ellipsis\n }, renderSubLabel)));\n }\n return radio;\n};\n\n/**\r\n @param onChange - (required) - (value: boolean, event: React.MouseEvent<HTMLDivElement | HTMLLabelElement, MouseEvent>) => void\r\n @param isChecked - (optional) - boolean\r\n @param className - (optional) - string\r\n @param size - (optional) - 'default' | 'large'\r\n @param label - (optional) - () => React.ReactElement\r\n */\nvar Radio = styled(Radio$1)(templateObject_1$2_ || (templateObject_1$2_ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2_;\nvar Collapse$1 = function (props) {\n var isOpen = props.isOpen,\n children = props.children,\n className = props.className,\n _a = props.unmountOnClose,\n unmountOnClose = _a === void 0 ? false : _a,\n onRest = props.onRest,\n onWork = props.onWork;\n if (unmountOnClose) {\n return /*#__PURE__*/React__default.createElement(View, {\n \"data-testid\": generate(['collapse', \"collapse--\".concat(isOpen ? 'open' : 'closed')], props)\n }, /*#__PURE__*/React__default.createElement(UnmountClosed, {\n isOpened: isOpen,\n onRest: onRest,\n onWork: onWork\n }, children));\n }\n return /*#__PURE__*/React__default.createElement(View, {\n \"data-testid\": generate(['collapse', \"collapse--\".concat(isOpen ? 'open' : 'closed')], props)\n }, /*#__PURE__*/React__default.createElement(Collapse$2, {\n className: className,\n isOpened: isOpen,\n onRest: onRest,\n onWork: onWork\n }, children));\n};\n\n/**\r\n * @param isOpen - (required) - boolean\r\n * @param className - (optional) - string\r\n * @param unmountOnClose - (optional) - boolean\r\n * @param onWork - (optional) - (args: CallbackArgs) => void\r\n * @param onRest - (optional) - (args: CallbackArgs) => void\r\n */\nvar Collapse = styled(Collapse$1)(templateObject_1$2Z || (templateObject_1$2Z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2Z;\nvar Accordion$1 = function (props) {\n var header = props.header,\n defaultOpen = props.defaultOpen,\n children = props.children,\n onChange = props.onChange,\n isExpanded = props.isExpanded,\n className = props.className,\n state = props.state,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a,\n _b = props.unmountOnClose,\n unmountOnClose = _b === void 0 ? true : _b,\n isGroup = props.isGroup,\n isChecked = props.isChecked,\n isCheckDisabled = props.isCheckDisabled,\n onCheck = props.onCheck,\n _c = props.checkVariant,\n checkVariant = _c === void 0 ? 'checkbox' : _c,\n _d = props.animate,\n animate = _d === void 0 ? true : _d,\n onChangeHeight = props.onChangeHeight;\n var ref = React__default.useRef(null);\n var initialSize = React__default.useRef();\n var activeTheme = useThemeProvider().activeTheme;\n var initialDefaultOpen = defaultOpen || false;\n // If animate is on, and it is opened by default, and we have the check for the onChangeHeight prop,\n // then we need to start it off as false, and animate to the opened state.\n if (animate && defaultOpen && onChangeHeight) {\n initialDefaultOpen = false;\n }\n var _e = __read(React__default.useState(initialDefaultOpen), 2),\n isOpen = _e[0],\n setIsOpen = _e[1];\n /**\r\n * If we have animate on, we need to animate to the open state,\r\n * this will allow the collapse component to trigger the onWork to get its initial size\r\n */\n React__default.useEffect(function () {\n if (animate && defaultOpen && onChangeHeight) {\n setIsOpen(defaultOpen);\n }\n }, [onChangeHeight, defaultOpen, animate]);\n /**\r\n * When expand changes, set the internal sate\r\n */\n React__default.useEffect(function () {\n if (isExpanded !== undefined) {\n setIsOpen(isExpanded);\n }\n }, [isExpanded]);\n /**\r\n * When the compoent mounts, set its height and width to the ref\r\n */\n React__default.useEffect(function () {\n var _a;\n if (ref.current && initialSize.current === undefined) {\n var _b = ((_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || {},\n _c = _b.height,\n height = _c === void 0 ? 0 : _c,\n _d = _b.width,\n width = _d === void 0 ? 0 : _d;\n initialSize.current = {\n height: height,\n width: width\n };\n }\n }, [ref]);\n /**\r\n * On initial load, when we are animating, and the default state is closed\r\n * pass back the initial height of the component\r\n */\n React__default.useEffect(function () {\n if (initialSize.current && animate && !defaultOpen && onChangeHeight) {\n var height = initialSize.current.height;\n onChangeHeight(height);\n }\n }, [defaultOpen, animate, onChangeHeight]);\n var onClick = function (event) {\n if (onChange) {\n onChange(event, !isExpanded);\n } else {\n setIsOpen(!isOpen);\n }\n };\n /**\r\n * When we are not animating the accordion, pass back the height to the parent\r\n * when the open state changes\r\n */\n React__default.useEffect(function () {\n var _a;\n var height = (((_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect()) || {}).height;\n if (onChangeHeight && !animate && height !== undefined) {\n onChangeHeight(height);\n }\n }, [isOpen, animate, onChangeHeight]);\n var onWork = React__default.useCallback(function (args) {\n if (initialSize.current && animate) {\n var height = initialSize.current.height;\n var openHeight = height + args.contentHeight;\n var closeHeight = height;\n var animateTo = isOpen ? openHeight : closeHeight;\n if (onChangeHeight) {\n onChangeHeight(animateTo);\n }\n }\n }, [isOpen, animate, onChangeHeight]);\n return /*#__PURE__*/React__default.createElement(Accordion$2, {\n ref: ref,\n className: className,\n \"data-testid\": generate(['accordion', \"accordion--\".concat(isOpen ? 'open' : 'closed'), isGroup ? \"accordion--group\" : null, state ? \"accordion--\".concat(state) : null], props),\n variant: isGroup ? 'nested' : variant,\n state: state,\n isGroup: isGroup,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Header$6, {\n \"data-testid\": generate(['accordion__header']),\n isGroup: isGroup\n }, onCheck && checkVariant === 'checkbox' ? ( /*#__PURE__*/React__default.createElement(CheckWrapper$1, null, /*#__PURE__*/React__default.createElement(Checkbox, {\n disabled: isCheckDisabled,\n isChecked: isChecked,\n onChange: onCheck\n }))) : null, onCheck && checkVariant === 'radio' ? ( /*#__PURE__*/React__default.createElement(CheckWrapper$1, null, /*#__PURE__*/React__default.createElement(Radio, {\n disabled: isCheckDisabled,\n isChecked: isChecked,\n onChange: onCheck\n }))) : null, children ? ( /*#__PURE__*/React__default.createElement(Toggle$1, null, isOpen ? ( /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"accordion__close-button\",\n onClick: onClick,\n label: \"Close\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, null);\n },\n size: \"small\"\n })) : ( /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"accordion__open-button\",\n onClick: onClick,\n label: \"Open\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null);\n },\n size: \"small\"\n })))) : null, /*#__PURE__*/React__default.createElement(HeaderContent, null, header(isOpen))), children && !animate && isOpen ? ( /*#__PURE__*/React__default.createElement(Content$5, {\n \"data-testid\": generate(['accordion__content']),\n isGroup: isGroup\n }, children)) : null, children && animate ? ( /*#__PURE__*/React__default.createElement(Collapse, {\n isOpen: isOpen,\n unmountOnClose: unmountOnClose,\n onWork: onChangeHeight ? onWork : undefined\n }, /*#__PURE__*/React__default.createElement(Content$5, {\n \"data-testid\": generate(['accordion__content']),\n isGroup: isGroup\n }, children))) : null);\n};\n\n/**\r\n * @param header - (optional) - (isOpen: boolean) => React.ReactElement - Function to render Header element\r\n * @param defaultOpen - (optional) - boolean - Opens or closes the Accordian on initial render\r\n * @param isExpanded - (optional) - boolean - Sets expanded state making Accordian controlled\r\n * @param onChange - (optional) - (event: React.MouseEvent<HTMLButtonElement>, isExpanded: boolean) => void - Called when Accordian open/close button clicked\r\n * @param className - (optional) - string - Enables styled-components mounting\r\n * @param variant - (optional) - 'default' | 'nested' - Styling variant for nested or parent accordians\r\n * @param onCheck - (optional) - (value: boolean, event: React.MouseEvent<HTMLDivElement | HTMLLabelElement, MouseEvent>) => void - OnChange function for radiobuttons or checkboxes\r\n * @param isChecked - (optional) - boolean - Controlled state for radiobuttons or checkboxes\r\n * @param isCheckDisabled - (optional) - boolean - Disabled state for radio buttons or checkboxes\r\n * @param checkVariant - (optional) - 'checkbox' | 'radio' - Renders either radiobuttons or checkboxes in Accordian header\r\n * @param state - (optional) - 'info' | 'error' | 'success' | 'warning' - Styling state\r\n * @param unmountOnClose - (optional) - boolean - Unmounts react-collapse component when closed\r\n * @param isGroup - (optional) - boolean - Styling state for grouped accordians\r\n * @param onChangeHeight - (optional) - (height: number) => void - function called when accordian height is changed\r\n * @param animate - (optional) - boolean - Sets smooth expand and collapse animation on open/close\r\n */\nvar Accordion = styled(Accordion$1)(templateObject_1$2Y || (templateObject_1$2Y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2Y;\nvar AddonStyled = styled(View)(templateObject_1$2X || (templateObject_1$2X = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n z-index: calc(\", \" + 1);\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n z-index: calc(\", \" + 1);\\n\"])), zIndex);\nvar AddonWrapperStyled = styled(View)(templateObject_3$1b || (templateObject_3$1b = __makeTemplateObject([\"\\n width: 100%;\\n display: flex;\\n position: relative;\\n\\n & \", \" {\\n z-index: calc(\", \" + 1);\\n }\\n\\n /* Add some styles for the left and right addon buttons */\\n & \", \":first-child {\\n padding-left: \", \";\\n\\n \", \" {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border: 1px solid \", \";\\n margin-left: \", \";\\n }\\n }\\n\\n & \", \":last-child {\\n padding-right: \", \";\\n\\n \", \"\\n\\n \", \" {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n border: 1px solid \", \";\\n margin-right: \", \";\\n }\\n }\\n\\n &:after {\\n content: ' ';\\n display: block;\\n height: 100%;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n border: 1px solid \", \";\\n box-sizing: border-box;\\n z-index: \", \";\\n border-radius: \", \";\\n background: \", \";\\n }\\n\"], [\"\\n width: 100%;\\n display: flex;\\n position: relative;\\n\\n & \", \" {\\n z-index: calc(\", \" + 1);\\n }\\n\\n /* Add some styles for the left and right addon buttons */\\n & \", \":first-child {\\n padding-left: \", \";\\n\\n \", \" {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n border: 1px solid \", \";\\n margin-left: \", \";\\n }\\n }\\n\\n & \", \":last-child {\\n padding-right: \", \";\\n\\n \", \"\\n\\n \", \" {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n border: 1px solid \", \";\\n margin-right: \", \";\\n }\\n }\\n\\n &:after {\\n content: ' ';\\n display: block;\\n height: 100%;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n border: 1px solid \", \";\\n box-sizing: border-box;\\n z-index: \", \";\\n border-radius: \", \";\\n background: \", \";\\n }\\n\"])), AddonStyled, zIndex, AddonStyled, function (p) {\n return p.theme.spacing.getSize(3);\n}, Button$3, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(-3);\n}, AddonStyled, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.isSuccess && css(templateObject_2$1B || (templateObject_2$1B = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.theme.colors.success.getValue().main);\n}, Button$3, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(-3);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, zIndex, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return getFieldColor(p.activeTheme);\n});\nvar templateObject_1$2X, templateObject_2$1B, templateObject_3$1b;\nvar Addon$1 = function (props) {\n var children = props.children,\n leftAddon = props.leftAddon,\n rightAddon = props.rightAddon,\n className = props.className,\n isSuccess = props.isSuccess;\n var activeTheme = useThemeProvider().activeTheme;\n var renderAddon = function (item) {\n if (!item) return null;\n return /*#__PURE__*/React__default.createElement(AddonStyled, null, item());\n };\n return /*#__PURE__*/React__default.createElement(AddonWrapperStyled, {\n className: className,\n \"data-testid\": generate(['addon'], props),\n isSuccess: isSuccess,\n activeTheme: activeTheme\n }, renderAddon(leftAddon), children, isSuccess ? renderAddon(function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertSuccess, null);\n }) : renderAddon(rightAddon));\n};\n\n/**\r\n * @param isSuccess - (optional) - boolean -\r\n * @param errors (optional) - ValidationErrors -\r\n */\nvar Addon = styled(Addon$1)(templateObject_1$2W || (templateObject_1$2W = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2W;\nvar Avatar$2 = styled(View$2)(templateObject_1$2V || (templateObject_1$2V = __makeTemplateObject([\"\\n position: relative;\\n border-radius: 100%;\\n background-color: \", \";\\n color: \", \";\\n background-position: center;\\n background-size: cover;\\n background-repeat: no-repeat;\\n width: \", \";\\n min-width: \", \";\\n height: \", \";\\n min-height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: middle;\\n box-sizing: border-box;\\n border: 1px solid \", \";\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n border-radius: 100%;\\n background-color: \", \";\\n color: \", \";\\n background-position: center;\\n background-size: cover;\\n background-repeat: no-repeat;\\n width: \", \";\\n min-width: \", \";\\n height: \", \";\\n min-height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: middle;\\n box-sizing: border-box;\\n border: 1px solid \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.colors.primary.getValue().context;\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return getContainerColor(p.activeTheme);\n}, function (p) {\n return p.onClick && \"\\n cursor: pointer;\\n \";\n});\nvar Initials = styled.span(templateObject_2$1A || (templateObject_2$1A = __makeTemplateObject([\"\\n position: relative;\\n align-self: center;\\n letter-spacing: 1px;\\n\"], [\"\\n position: relative;\\n align-self: center;\\n letter-spacing: 1px;\\n\"])));\nvar OverlayWrapper = styled(View$2)(templateObject_3$1a || (templateObject_3$1a = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 1;\\n :before {\\n content: ' ';\\n position: absolute;\\n background: \", \";\\n height: 30px;\\n width: 30px;\\n border-radius: 100%;\\n top: 0;\\n left: 0;\\n opacity: 0.7;\\n z-index: 1;\\n }\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n z-index: 1;\\n :before {\\n content: ' ';\\n position: absolute;\\n background: \", \";\\n height: 30px;\\n width: 30px;\\n border-radius: 100%;\\n top: 0;\\n left: 0;\\n opacity: 0.7;\\n z-index: 1;\\n }\\n\"])), function (p) {\n return p.theme.colors.overlay;\n});\nvar OverlayContent = styled(View$2)(templateObject_4$W || (templateObject_4$W = __makeTemplateObject([\"\\n z-index: 2;\\n position: absolute;\\n height: 32px;\\n width: 32px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n top: -1px;\\n left: -1px;\\n font-size: \", \";\\n color: \", \";\\n\"], [\"\\n z-index: 2;\\n position: absolute;\\n height: 32px;\\n width: 32px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n top: -1px;\\n left: -1px;\\n font-size: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(1);\n}, function (p) {\n return p.theme.colors.text.getValue(3);\n});\nvar templateObject_1$2V, templateObject_2$1A, templateObject_3$1a, templateObject_4$W;\nvar Avatar$1 = function (props) {\n var _a = __read(React__default.useState(false), 2),\n isOpen = _a[0],\n setIsOpen = _a[1];\n var triggerRef = React__default.useRef(null);\n var triggerEl = useTarget(triggerRef);\n var image = props.image,\n name = props.name,\n dropdownContent = props.dropdownContent,\n className = props.className,\n onClick = props.onClick,\n overlayIcon = props.overlayIcon;\n var activeTheme = useThemeProvider().activeTheme;\n var noImage = !image;\n var hasAction = dropdownContent || onClick;\n var onClose = function () {\n setIsOpen(false);\n };\n var onAvatarClick = function (event) {\n if (dropdownContent) {\n setIsOpen(!isOpen);\n }\n if (onClick) {\n onClick(event);\n }\n };\n var renderInitials = function () {\n var result = getInitials(name);\n if (!result) {\n return null;\n }\n return /*#__PURE__*/React__default.createElement(Initials, {\n \"data-testid\": generate(['initials'], props)\n }, result);\n };\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Avatar$2, {\n className: className,\n ref: triggerRef,\n \"aria-label\": name,\n title: name,\n \"data-testid\": generate(['avatar'], props),\n style: {\n backgroundImage: \"url(\".concat(image, \")\")\n },\n onClick: hasAction ? onAvatarClick : undefined,\n role: hasAction ? 'button' : undefined,\n activeTheme: activeTheme\n }, noImage && renderInitials(), overlayIcon && ( /*#__PURE__*/React__default.createElement(OverlayWrapper, null, /*#__PURE__*/React__default.createElement(OverlayContent, null, overlayIcon)))), isOpen && dropdownContent && ( /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(DropdownContent, {\n triggerEl: triggerEl,\n onClose: onClose\n }, dropdownContent(onClose)))));\n};\n\n/**\r\n * @param name - (required) - string;\r\n * @param image - (optional) - string;\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n * @param dropdownContent - (optional) - (onClose: () => void) => {};\r\n * @param className - (optional) - string;\r\n * @param overlayIcon - (optional) - React.ReactElement;\r\n */\nvar Avatar = styled(Avatar$1)(templateObject_1$2U || (templateObject_1$2U = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2U;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Breadcrumbs$2 = styled(View)(templateObject_1$2T || (templateObject_1$2T = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n color: \", \";\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n color: \", \";\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$2T;\n\n// This named style should be the wrapper for the component i.e. the module\nvar BreadcrumbText = styled(Text$1)(templateObject_1$2S || (templateObject_1$2S = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n if (p.variantColor === 'inverted') {\n return p.theme.colors.text.getValue(4);\n }\n return p.activeTheme.name === 'default' ? p.activeTheme.colors.borders.getValue(1) : p.activeTheme.colors.text.getValue(0);\n});\nvar BreadcrumbLink = styled(Button$1)(templateObject_3$19 || (templateObject_3$19 = __makeTemplateObject([\"\\n height: auto;\\n margin-right: \", \";\\n position: relative;\\n \", \"\\n\"], [\"\\n height: auto;\\n margin-right: \", \";\\n position: relative;\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.variantColor === 'inverted' && css(templateObject_2$1z || (templateObject_2$1z = __makeTemplateObject([\"\\n color: \", \";\\n &:hover {\\n color: \", \";\\n }\\n \"], [\"\\n color: \", \";\\n &:hover {\\n color: \", \";\\n }\\n \"])), p.theme.colors.text.getValue(3), p.theme.colors.text.getValue(3));\n});\nvar BreadcrumbSeparator = styled(Text$1)(templateObject_4$V || (templateObject_4$V = __makeTemplateObject([\"\\n display: 'inline-flex';\\n padding-left: \", \";\\n padding-right: \", \";\\n color: \", \";\\n\"], [\"\\n display: 'inline-flex';\\n padding-left: \", \";\\n padding-right: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.activeTheme.name === 'default' ? p.activeTheme.colors.borders.getValue(1) : p.activeTheme.colors.text.getValue(0);\n});\nvar templateObject_1$2S, templateObject_2$1z, templateObject_3$19, templateObject_4$V;\nvar BreadcrumbItem = function (props) {\n var isLink = props.isLink,\n label = props.label,\n hasNextItem = props.hasNextItem,\n onClick = props.onClick,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a;\n var activeTheme = useThemeProvider().activeTheme;\n var testId = generate(['breadcrumb'], props);\n return isLink ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BreadcrumbLink, {\n \"data-testid\": testId,\n variant: \"link\",\n variantColor: variant,\n label: label,\n onClick: function () {\n return onClick && onClick();\n }\n }), hasNextItem && ( /*#__PURE__*/React__default.createElement(BreadcrumbSeparator, {\n \"data-testid\": \"breadcrumb-separator\",\n activeTheme: activeTheme\n }, \"/\")))) : ( /*#__PURE__*/React__default.createElement(BreadcrumbText, {\n \"data-testid\": testId,\n activeTheme: activeTheme,\n variantColor: variant\n }, label));\n};\nvar Breadcrumbs$1 = function (props) {\n var items = props.items,\n onClick = props.onClick,\n variant = props.variant;\n return /*#__PURE__*/React__default.createElement(Breadcrumbs$2, {\n \"data-testid\": generate(['breadcrumbs'], props)\n }, items.map(function (item, idx) {\n return /*#__PURE__*/React__default.createElement(BreadcrumbItem, {\n key: item.id,\n id: item.id,\n \"data-testid\": generateCypressId(\"breadcrumb--\".concat(item.label)),\n label: item.label,\n isLink: items.length !== idx + 1,\n onClick: function () {\n return onClick(item);\n },\n hasNextItem: items.length > idx + 1,\n variant: variant\n });\n }));\n};\n\n/**\r\n * @param items - (required) - Crumb[]\r\n * @param onClick - (required) - (item: Crumb, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar Breadcrumbs = styled(Breadcrumbs$1)(templateObject_1$2R || (templateObject_1$2R = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2R;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ButtonGroup$2 = styled.div(templateObject_3$18 || (templateObject_3$18 = __makeTemplateObject([\"\\n display: flex;\\n\\n &:not(:first-child) {\\n &:before {\\n content: ' ';\\n height: 100%;\\n width: 1px;\\n border-left: 1px solid \", \";\\n }\\n }\\n\\n \", \";\\n\"], [\"\\n display: flex;\\n\\n &:not(:first-child) {\\n &:before {\\n content: ' ';\\n height: 100%;\\n width: 1px;\\n border-left: 1px solid \", \";\\n }\\n }\\n\\n \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.vertical ? css(templateObject_1$2Q || (templateObject_1$2Q = __makeTemplateObject([\"\\n width: max-content;\\n flex-direction: column;\\n \", \":last-child {\\n border-top-right-radius: 0;\\n border-top-left-radius: 0;\\n }\\n \", \":first-child {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n \", \":not(:first-child):not(:last-child) {\\n border-radius: 0;\\n }\\n \"], [\"\\n width: max-content;\\n flex-direction: column;\\n \", \":last-child {\\n border-top-right-radius: 0;\\n border-top-left-radius: 0;\\n }\\n \", \":first-child {\\n border-bottom-left-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n \", \":not(:first-child):not(:last-child) {\\n border-radius: 0;\\n }\\n \"])), Button$3, Button$3, Button$3) : css(templateObject_2$1y || (templateObject_2$1y = __makeTemplateObject([\"\\n flex-direction: row;\\n \", \":not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n \", \":not(:first-child) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n }\\n \"], [\"\\n flex-direction: row;\\n \", \":not(:last-child) {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n }\\n \", \":not(:first-child) {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n }\\n \"])), Button$3, Button$3);\n});\nvar templateObject_1$2Q, templateObject_2$1y, templateObject_3$18;\nvar ButtonGroup$1 = function (props) {\n var children = props.children,\n vertical = props.vertical,\n className = props.className;\n var direction = vertical ? 'vertical' : 'horizontal';\n return /*#__PURE__*/React__default.createElement(ButtonGroup$2, {\n className: className,\n vertical: vertical,\n \"data-testid\": generate(['button-group', \"button-group--\".concat(direction)], props)\n }, children);\n};\n\n/**\r\n * @param vertical - (optional) - boolean\r\n * @param className - (optional) - string\r\n */\nvar ButtonGroup = styled(ButtonGroup$1)(templateObject_1$2P || (templateObject_1$2P = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2P;\nvar Card$1 = function (props) {\n var children = props.children,\n className = props.className,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Card$2, {\n className: className,\n \"data-testid\": generate(['card'], props),\n activeTheme: activeTheme,\n onClick: onClick\n }, children);\n};\n\n/**\r\n * @param className - (optional) - string\r\n */\nvar Card = styled(Card$1)(templateObject_1$2O || (templateObject_1$2O = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2O;\nvar Title$5 = styled.dt(templateObject_1$2N || (templateObject_1$2N = __makeTemplateObject([\"\\n font-weight: bold;\\n flex: 0 30%;\\n padding-right: \", \";\\n\"], [\"\\n font-weight: bold;\\n flex: 0 30%;\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Description$2 = styled.dd(templateObject_2$1x || (templateObject_2$1x = __makeTemplateObject([\"\\n flex: 0 70%;\\n\"], [\"\\n flex: 0 70%;\\n\"])));\nvar DefinitionList$2 = styled.dl(templateObject_3$17 || (templateObject_3$17 = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n max-width: fit-content;\\n\\n & > \", \", & > \", \" {\\n box-sizing: border-box;\\n padding: \", \" 0;\\n position: relative;\\n line-height: \", \";\\n\\n &:not(:first-of-type):before {\\n content: '';\\n height: 1px;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n background: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n max-width: fit-content;\\n\\n & > \", \", & > \", \" {\\n box-sizing: border-box;\\n padding: \", \" 0;\\n position: relative;\\n line-height: \", \";\\n\\n &:not(:first-of-type):before {\\n content: '';\\n height: 1px;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n background: \", \";\\n }\\n }\\n\"])), Title$5, Description$2, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n});\nvar templateObject_1$2N, templateObject_2$1x, templateObject_3$17;\nvar Item$3 = function (props) {\n var title = props.title,\n description = props.description;\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Title$5, null, title), /*#__PURE__*/React__default.createElement(Description$2, null, description));\n};\nvar DefinitionList$1 = function (props) {\n var items = props.items,\n className = props.className;\n return /*#__PURE__*/React__default.createElement(DefinitionList$2, {\n className: className,\n \"data-testid\": generate(['definition-list'], props)\n }, items.map(function (item) {\n var title = item.title,\n description = item.description;\n return /*#__PURE__*/React__default.createElement(Item$3, {\n key: title,\n title: title,\n description: description\n });\n }));\n};\n\n/**\r\n * @param items - (required) - ItemObj[];\r\n * @param className - (optional) - string;\r\n */\nvar DefinitionList = styled(DefinitionList$1)(templateObject_1$2M || (templateObject_1$2M = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2M;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DropdownMenu$2 = styled(Card$2)(templateObject_1$2L || (templateObject_1$2L = __makeTemplateObject([\"\\n padding: 0;\\n\"], [\"\\n padding: 0;\\n\"])));\nvar templateObject_1$2L;\nvar Menu$5 = styled.div(templateObject_1$2K || (templateObject_1$2K = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n justify-content: left;\\n min-width: 200px;\\n padding: \", \";\\n background: \", \";\\n border-radius: \", \";\\n\\n :focus {\\n outline: none;\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n justify-content: left;\\n min-width: 200px;\\n padding: \", \";\\n background: \", \";\\n border-radius: \", \";\\n\\n :focus {\\n outline: none;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n});\nvar menuItemHoverState = function (activeTheme) {\n return css(templateObject_2$1w || (templateObject_2$1w = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return isDarkMode$4(activeTheme) ? p.theme.colors.accent1.getValue(100).main : p.theme.colors.primary.getValue(100).main;\n });\n};\nvar menuItemStyles = function (activeTheme) {\n return css(templateObject_3$16 || (templateObject_3$16 = __makeTemplateObject([\"\\n background: transparent;\\n height: \", \";\\n padding: 0 \", \";\\n color: \", \";\\n text-align: left;\\n border-radius: \", \";\\n display: flex;\\n width: 100%;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n &:not(:focus):hover {\\n background: \", \";\\n color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n\\n &:focus {\\n \", \"\\n }\\n\"], [\"\\n background: transparent;\\n height: \", \";\\n padding: 0 \", \";\\n color: \", \";\\n text-align: left;\\n border-radius: \", \";\\n display: flex;\\n width: 100%;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n &:not(:focus):hover {\\n background: \", \";\\n color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n }\\n\\n &:focus {\\n \", \"\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n }, function (p) {\n return p.theme.spacing.getSize(2);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n }, function (p) {\n return p.theme.spacing.borderRadius;\n }, function (p) {\n return p.theme.spacing.getSize(0.5);\n }, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(500).context;\n }, Text$1, function (p) {\n return p.theme.colors.primary.getValue(500).context;\n }, menuItemHoverState(activeTheme));\n};\nvar MenuItem$2 = styled(Button$3)(templateObject_4$U || (templateObject_4$U = __makeTemplateObject([\"\\n \", \"\\n padding-right: \", \";\\n\"], [\"\\n \", \"\\n padding-right: \", \";\\n\"])), function (p) {\n return menuItemStyles(p.activeTheme);\n}, function (p) {\n return p.hasDropdown ? p.theme.spacing.getSize(8) : p.theme.spacing.getSize(2);\n});\nvar LeftIcon = styled.div(templateObject_5$N || (templateObject_5$N = __makeTemplateObject([\"\\n display: flex;\\n \", \" {\\n margin-right: \", \";\\n margin-left: 0;\\n }\\n\"], [\"\\n display: flex;\\n \", \" {\\n margin-right: \", \";\\n margin-left: 0;\\n }\\n\"])), IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar RightIcon$1 = styled.div(templateObject_6$D || (templateObject_6$D = __makeTemplateObject([\"\\n display: flex;\\n \", \" {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n\"], [\"\\n display: flex;\\n \", \" {\\n margin-left: \", \";\\n margin-right: 0;\\n }\\n\"])), IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DropdownChevron = styled.div(templateObject_7$u || (templateObject_7$u = __makeTemplateObject([\"\\n position: absolute;\\n right: 0;\\n\"], [\"\\n position: absolute;\\n right: 0;\\n\"])));\nvar LabelWrapper = styled.span(templateObject_8$o || (templateObject_8$o = __makeTemplateObject([\"\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n display: block;\\n\"], [\"\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n display: block;\\n\"])));\nvar templateObject_1$2K, templateObject_2$1w, templateObject_3$16, templateObject_4$U, templateObject_5$N, templateObject_6$D, templateObject_7$u, templateObject_8$o;\nvar MenuItem$1 = function (props) {\n var item = props.item,\n onClick = props.onClick,\n isFocus = props.isFocus,\n _a = props.setChildOpen,\n setChildOpen = _a === void 0 ? function () {} : _a;\n var dropdownContent = item.dropdownContent;\n var activeTheme = useThemeProvider().activeTheme;\n var _b = __read(React__default.useState(false), 2),\n isOpen = _b[0],\n setIsOpen = _b[1];\n var triggerRef = useRef(null);\n var triggerEl = useTarget(triggerRef);\n React__default.useEffect(function () {\n if (isFocus && triggerRef.current) {\n triggerRef.current.focus();\n }\n }, [isFocus, triggerRef]);\n var onClose = function () {\n var _a;\n setIsOpen(false);\n setChildOpen(false);\n // On close of child item, re-focus\n (_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n };\n var handleClick = function (event) {\n if (dropdownContent) {\n setIsOpen(!isOpen);\n setChildOpen(!isOpen);\n } else {\n onClick(item, event);\n setChildOpen(false);\n }\n };\n var onKeyDown = function (event) {\n if (event.key === 'Enter') {\n // if it is enter, then we dont want the propagation on higher up\n // as that will just open the drop down again\n event.stopPropagation();\n }\n };\n var iconPosition = item.iconPosition || 'left';\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MenuItem$2, {\n ref: triggerRef,\n onClick: handleClick,\n \"data-testid\": generate(['menu__item'], props),\n \"aria-pressed\": dropdownContent ? isOpen : undefined,\n hasDropdown: dropdownContent ? true : false,\n onKeyDown: onKeyDown,\n activeTheme: activeTheme\n }, item.icon ? ( /*#__PURE__*/React__default.createElement(LabelWrapper, null, iconPosition === 'left' ? ( /*#__PURE__*/React__default.createElement(LeftIcon, null, item.icon, item.label)) : ( /*#__PURE__*/React__default.createElement(RightIcon$1, null, item.label, item.icon)))) : ( /*#__PURE__*/React__default.createElement(LabelWrapper, null, item.label)), dropdownContent && ( /*#__PURE__*/React__default.createElement(DropdownChevron, null, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null)))), isOpen && dropdownContent && ( /*#__PURE__*/React__default.createElement(\"div\", null, /*#__PURE__*/React__default.createElement(DropdownContent, {\n \"data-testid\": generate(['menu__item--dropdown'], props),\n location: {\n vertical: 'top',\n horizontal: 'right'\n },\n triggerEl: triggerEl,\n onClose: onClose,\n isNested: true\n }, dropdownContent(onClose)))));\n};\nvar Menu$4 = function (props) {\n var items = props.items,\n onClick = props.onClick,\n className = props.className,\n autoFocus = props.autoFocus;\n var ref = React__default.useRef(null);\n var scrollbarsRef = React__default.useRef(null);\n var _a = __read(React__default.useState(null), 2),\n cursor = _a[0],\n setCursor = _a[1];\n var _b = __read(React__default.useState(false), 2),\n childOpen = _b[0],\n setChildOpen = _b[1];\n React__default.useEffect(function () {\n var _a;\n if (autoFocus && ref) {\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n }, [ref, autoFocus]);\n var MAX_ITEMS = 4;\n var SCROLLBAR_HEIGHT = 210;\n React__default.useEffect(function () {\n var _a;\n if (childOpen) {\n (_a = ref.current) === null || _a === void 0 ? void 0 : _a.blur();\n }\n }, [childOpen]);\n var showScroll = items.length > MAX_ITEMS;\n var renderItems = function () {\n return items.map(function (item, index) {\n return /*#__PURE__*/React__default.createElement(MenuItem$1, {\n setChildOpen: setChildOpen,\n isFocus: index === cursor,\n key: item.label,\n item: item,\n onClick: onClick\n });\n });\n };\n var onKeyDown = function (event) {\n if (childOpen) return;\n if (event.key === 'ArrowDown') {\n var newCursor = cursor === null ? 0 : cursor + 1;\n if (newCursor >= items.length - 1) {\n newCursor = items.length - 1;\n }\n setCursor(newCursor);\n } else if (event.key === 'ArrowUp') {\n var newCursor = cursor === null ? 0 : cursor - 1;\n if (newCursor <= 0) {\n newCursor = 0;\n }\n setCursor(newCursor);\n } else if (event.key === 'Enter') {\n if (cursor !== null) {\n onClick(items[cursor], event);\n }\n }\n };\n return /*#__PURE__*/React__default.createElement(Menu$5, {\n ref: ref,\n className: className,\n \"data-testid\": generate(['menu', \"\".concat(showScroll ? 'menu--with-scrollbars' : '')], props),\n onKeyDown: onKeyDown,\n tabIndex: -1\n }, showScroll ? ( /*#__PURE__*/React__default.createElement(Scrollbars, {\n ref: scrollbarsRef,\n style: {\n height: SCROLLBAR_HEIGHT,\n scrollBehavior: 'smooth'\n }\n }, renderItems())) : renderItems());\n};\n\n/**\r\n * @param items - (required) - T[]\r\n * @param onClick - (required) - (item: T, event: MenuSelectEvent) => void\r\n * @param className - (optional) - string\r\n * @param autoFocus - (optional) - boolean\r\n */\nvar Menu$3 = styled(Menu$4)(templateObject_1$2J || (templateObject_1$2J = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param item - (required) - T\r\n @param onClick - (required) - (item: T, event: React.MouseEvent<HTMLButtonElement>) => void\r\n @param isFocus - (optional) - boolean\r\n @param setChildOpen - (optional) - (isOpen: boolean) => void\r\n */\nvar MenuItem = styled(MenuItem$1)(templateObject_2$1v || (templateObject_2$1v = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2J, templateObject_2$1v;\nvar DropdownMenu$1 = function (props) {\n var items = props.items,\n onClick = props.onClick,\n className = props.className;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(DropdownMenu$2, {\n className: className,\n \"data-testid\": generate(['dropdown-menu'], props),\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Menu$3, {\n autoFocus: true,\n items: items,\n onClick: onClick\n }));\n};\n\n/**\r\n * @param className - (optional) - string\r\n */\nvar DropdownMenu = styled(DropdownMenu$1)(templateObject_1$2I || (templateObject_1$2I = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2I;\nvar Wrapper$4 = styled.div(templateObject_1$2H || (templateObject_1$2H = __makeTemplateObject([\"\"], [\"\"])));\nvar Image$2 = styled.img(templateObject_2$1u || (templateObject_2$1u = __makeTemplateObject([\"\\n max-width: 100%;\\n height: auto;\\n border-radius: \", \";\\n\"], [\"\\n max-width: 100%;\\n height: auto;\\n border-radius: \", \";\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n});\nvar ImagePlaceholder = styled.div(templateObject_3$15 || (templateObject_3$15 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n text-align: center;\\n font-size: \", \";\\n box-sizing: border-box;\\n background: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n padding: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n text-align: center;\\n font-size: \", \";\\n box-sizing: border-box;\\n background: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(3);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n}, function (p) {\n return p.theme.colors.borders.getValue();\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$2H, templateObject_2$1u, templateObject_3$15;\nvar EnhancedImage = function (props) {\n var src = props.src,\n alt = props.alt,\n imgPromise = props.imgPromise;\n var decoratedSrc = useImage({\n srcList: src,\n imgPromise: imgPromise\n }).src;\n return /*#__PURE__*/React__default.createElement(Image$2, {\n src: decoratedSrc,\n alt: alt,\n \"data-testid\": generate(['image__src'], props)\n });\n};\nvar ErrorBoundary = /** @class */function (_super) {\n __extends(ErrorBoundary, _super);\n function ErrorBoundary(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n hasError: false\n };\n return _this;\n }\n ErrorBoundary.getDerivedStateFromError = function () {\n return {\n hasError: true\n };\n };\n ErrorBoundary.prototype.render = function () {\n var hasError = this.state.hasError;\n var _a = this.props,\n children = _a.children,\n fallback = _a.fallback;\n if (hasError) {\n return fallback;\n }\n return children;\n };\n return ErrorBoundary;\n}(React__default.Component);\nvar Fallback = function (props) {\n var children = props.children;\n var _a = __read(React__default.useState(false), 2),\n show = _a[0],\n setShow = _a[1];\n React__default.useEffect(function () {\n var timeout = setTimeout(function () {\n return setShow(true);\n }, 100);\n return function () {\n clearTimeout(timeout);\n };\n }, []);\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, show && children);\n};\nvar Image$1 = function (props) {\n var src = props.src,\n maxWidth = props.maxWidth,\n alt = props.alt,\n imgPromise = props.imgPromise,\n className = props.className;\n return /*#__PURE__*/React__default.createElement(Wrapper$4, {\n className: className,\n style: {\n maxWidth: maxWidth\n },\n \"data-testid\": generate(['image'], props)\n }, /*#__PURE__*/React__default.createElement(ErrorBoundary, {\n fallback: /*#__PURE__*/React__default.createElement(ImagePlaceholder, {\n \"data-testid\": generate(['image__error'], props),\n style: {\n width: maxWidth,\n height: maxWidth\n }\n }, \"!\")\n }, /*#__PURE__*/React__default.createElement(React__default.Suspense, {\n fallback: /*#__PURE__*/React__default.createElement(Fallback, null, /*#__PURE__*/React__default.createElement(ImagePlaceholder, {\n \"data-testid\": generate(['image__loading'], props),\n style: {\n width: maxWidth,\n height: maxWidth\n }\n }, \"loading\"))\n }, /*#__PURE__*/React__default.createElement(EnhancedImage, {\n src: src,\n alt: alt,\n imgPromise: imgPromise\n }))));\n};\n\n/**\r\n * @param src - (required) - string;\r\n * @param maxWidth - (optional) - string\r\n * @param alt - (optional) - string\r\n * @param imgPromise - (optional) - (...args: any[]) => Promise<void>\r\n * @param className - (optional) - string\r\n */\nvar Image = styled(Image$1)(templateObject_1$2G || (templateObject_1$2G = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2G;\nstyled(AddonWrapperStyled)(templateObject_1$2F || (templateObject_1$2F = __makeTemplateObject([\"\"], [\"\"])));\nvar Input$3 = styled.input(templateObject_2$1t || (templateObject_2$1t = __makeTemplateObject([\"\\n height: \", \";\\n padding: 0 \", \";\\n border-radius: \", \";\\n color: \", \";\\n background: \", \";\\n font-size: \", \";\\n border: 1px solid \", \";\\n outline: 0;\\n width: 100%;\\n box-sizing: border-box;\\n transition: all 0.25s ease-in-out;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\\n \", \" & {\\n background: transparent;\\n z-index: calc(\", \" + 1);\\n border: 0;\\n border-radius: 0;\\n }\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n background: \", \";\\n color: \", \";\\n }\\n\\n &:hover {\\n border-color: 1px solid \", \";\\n }\\n\"], [\"\\n height: \", \";\\n padding: 0 \", \";\\n border-radius: \", \";\\n color: \", \";\\n background: \", \";\\n font-size: \", \";\\n border: 1px solid \", \";\\n outline: 0;\\n width: 100%;\\n box-sizing: border-box;\\n transition: all 0.25s ease-in-out;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\\n \", \" & {\\n background: transparent;\\n z-index: calc(\", \" + 1);\\n border: 0;\\n border-radius: 0;\\n }\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n background: \", \";\\n color: \", \";\\n }\\n\\n &:hover {\\n border-color: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return getFieldColor(p.activeTheme);\n}, function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, AddonWrapperStyled, zIndex, function (p) {\n return p.theme.colors.placeholder;\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar errorState$3 = function (theme) {\n return css(templateObject_3$14 || (templateObject_3$14 = __makeTemplateObject([\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"], [\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"])), Input$3, theme.colors.error.getValue().main);\n};\nvar templateObject_1$2F, templateObject_2$1t, templateObject_3$14;\nvar Input$2 = /*#__PURE__*/React__default.forwardRef(function (props, ref) {\n var id = props.id,\n placeholder = props.placeholder,\n _a = props.type,\n type = _a === void 0 ? 'text' : _a,\n value = props.value,\n onChange = props.onChange,\n leftAddon = props.leftAddon,\n rightAddon = props.rightAddon,\n className = props.className,\n disabled = props.disabled,\n isSuccess = props.isSuccess,\n autoFocus = props.autoFocus,\n restProps = __rest(props, [\"id\", \"placeholder\", \"type\", \"value\", \"onChange\", \"leftAddon\", \"rightAddon\", \"className\", \"disabled\", \"isSuccess\", \"autoFocus\"]) // Catch-all for extra props, applied carefully\n ;\n var hasAddon = leftAddon || rightAddon || isSuccess;\n var activeTheme = useThemeProvider().activeTheme;\n // Wrapper function to sanitize input\n var handleSanitizedChange = function (event) {\n var sanitizedValue = DOMPurify.sanitize(event.target.value);\n onChange(__assign(__assign({}, event), {\n target: __assign(__assign({}, event.target), {\n value: sanitizedValue\n })\n }));\n };\n var inputProps = {\n id: id,\n type: type,\n value: value,\n placeholder: placeholder,\n disabled: disabled,\n className: className,\n autoFocus: autoFocus,\n onChange: handleSanitizedChange,\n 'data-testid': generate(['input', \"input--\".concat(type)], props),\n ref: ref,\n activeTheme: activeTheme\n };\n if (hasAddon) {\n return /*#__PURE__*/React__default.createElement(Addon, {\n leftAddon: leftAddon,\n rightAddon: rightAddon,\n isSuccess: isSuccess,\n \"data-testid\": generate(['input', \"input-addon--\".concat(type)], props)\n }, /*#__PURE__*/React__default.createElement(Input$3, __assign({}, inputProps, restProps)));\n }\n return /*#__PURE__*/React__default.createElement(Input$3, __assign({}, inputProps, restProps));\n});\n\n/**\r\n * @param onChange - (required) - (event: React.ChangeEvent<HTMLInputElement>) => void\r\n * @param value - (required) - string\r\n * @param id - (optional) - string\r\n * @param placeholder - (optional) - string\r\n * @param type - (optional) - InputTypes\r\n * @param className - (optional) - string\r\n * @param disabled - (optional) - boolean\r\n */\nvar Input$1 = styled(Input$2)(templateObject_1$2E || (templateObject_1$2E = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2E;\nvar Textarea$2 = styled.textarea(templateObject_1$2D || (templateObject_1$2D = __makeTemplateObject([\"\\n width: 100%;\\n overflow: auto;\\n font-family: inherit;\\n border: 1px solid \", \";\\n color: \", \";\\n border-radius: \", \";\\n font-size: \", \";\\n line-height: \", \";\\n box-sizing: border-box;\\n resize: none;\\n padding: \", \";\\n min-height: \", \";\\n outline: 0;\\n transition: all 0.25s ease-in-out;\\n vertical-align: top;\\n \", \";\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n background: \", \";\\n color: \", \";\\n }\\n\\n &:hover {\\n border-color: 1px solid \", \";\\n }\\n\\n &:focus-visible {\\n outline: none;\\n }\\n\"], [\"\\n width: 100%;\\n overflow: auto;\\n font-family: inherit;\\n border: 1px solid \", \";\\n color: \", \";\\n border-radius: \", \";\\n font-size: \", \";\\n line-height: \", \";\\n box-sizing: border-box;\\n resize: none;\\n padding: \", \";\\n min-height: \", \";\\n outline: 0;\\n transition: all 0.25s ease-in-out;\\n vertical-align: top;\\n \", \";\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:disabled {\\n cursor: not-allowed;\\n background: \", \";\\n color: \", \";\\n }\\n\\n &:hover {\\n border-color: 1px solid \", \";\\n }\\n\\n &:focus-visible {\\n outline: none;\\n }\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.colors.placeholder;\n}, function (p) {\n return p.theme.colors.backgrounds.getValue();\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar errorState$2 = function (theme) {\n return css(templateObject_2$1s || (templateObject_2$1s = __makeTemplateObject([\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"], [\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"])), Textarea$2, theme.colors.error.getValue().main);\n};\nvar templateObject_1$2D, templateObject_2$1s;\nstyled.select(templateObject_1$2C || (templateObject_1$2C = __makeTemplateObject([\"\\n /* display: none; */\\n\"], [\"\\n /* display: none; */\\n\"])));\n// This named style should be the wrapper for the component i.e. the module\nvar Select$2 = styled(View$2)(templateObject_2$1r || (templateObject_2$1r = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar Dropdown = styled(Button$1)(templateObject_4$T || (templateObject_4$T = __makeTemplateObject([\"\\n width: 100%;\\n position: relative;\\n flex: 1;\\n display: block;\\n height: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n padding: 0 \", \" 0 \", \";\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n color: \", \";\\n outline: 0;\\n font-size: \", \";\\n box-sizing: border-box;\\n text-align: left;\\n padding-left: \", \";\\n background: \", \";\\n\\n \", \"\\n\\n \", \" {\\n top: 13px;\\n margin-right: 0;\\n position: absolute;\\n right: \", \";\\n font-size: 1em;\\n transform: rotate(0);\\n transition: transform 0.25s ease-in-out;\\n }\\n\\n &[aria-pressed='true'] \", \" {\\n transform: rotate(180deg);\\n }\\n\"], [\"\\n width: 100%;\\n position: relative;\\n flex: 1;\\n display: block;\\n height: \", \";\\n border: 1px solid \", \";\\n border-radius: \", \";\\n padding: 0 \", \" 0 \", \";\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n color: \", \";\\n outline: 0;\\n font-size: \", \";\\n box-sizing: border-box;\\n text-align: left;\\n padding-left: \", \";\\n background: \", \";\\n\\n \", \"\\n\\n \", \" {\\n top: 13px;\\n margin-right: 0;\\n position: absolute;\\n right: \", \";\\n font-size: 1em;\\n transform: rotate(0);\\n transition: transform 0.25s ease-in-out;\\n }\\n\\n &[aria-pressed='true'] \", \" {\\n transform: rotate(180deg);\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return getFieldColor(p.activeTheme);\n}, function (p) {\n return p.disabled && css(templateObject_3$13 || (templateObject_3$13 = __makeTemplateObject([\"\\n cursor: not-allowed;\\n background: \", \";\\n border-color: \", \";\\n \"], [\"\\n cursor: not-allowed;\\n background: \", \";\\n border-color: \", \";\\n \"])), getDisabledFieldColor(p.activeTheme), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n}, IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(3);\n}, IconWrapper$4);\nvar errorState$1 = function (theme) {\n return css(templateObject_5$M || (templateObject_5$M = __makeTemplateObject([\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"], [\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"])), Dropdown, theme.colors.error.getValue().main);\n};\nvar Clear = styled(IconButton)(templateObject_6$C || (templateObject_6$C = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n margin-right: 0;\\n\"], [\"\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n margin-right: 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2C, templateObject_2$1r, templateObject_3$13, templateObject_4$T, templateObject_5$M, templateObject_6$C;\nvar Datepicker$2 = styled(Input$3)(templateObject_1$2B || (templateObject_1$2B = __makeTemplateObject([\"\\n text-transform: uppercase;\\n font-family: inherit;\\n color: \", \";\\n position: relative;\\n\\n &::-webkit-calendar-picker-indicator {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n color: transparent;\\n background: transparent;\\n }\\n\"], [\"\\n text-transform: uppercase;\\n font-family: inherit;\\n color: \", \";\\n position: relative;\\n\\n &::-webkit-calendar-picker-indicator {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n width: auto;\\n height: auto;\\n color: transparent;\\n background: transparent;\\n }\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar errorState = function (theme) {\n return css(templateObject_2$1q || (templateObject_2$1q = __makeTemplateObject([\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"], [\"\\n & \", \" {\\n border-color: \", \";\\n }\\n \"])), Datepicker$2, theme.colors.error.getValue().main);\n};\nvar templateObject_1$2B, templateObject_2$1q;\nvar Error$2 = styled(View$2)(templateObject_1$2A || (templateObject_1$2A = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.error.getValue().main;\n});\n// This named style should be the wrapper for the component i.e. the module\nvar Validation$2 = styled(View$2)(templateObject_2$1p || (templateObject_2$1p = __makeTemplateObject([\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\"], [\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\"])), Error$2, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Icon$2 = styled(MemoSvgAlertError)(templateObject_3$12 || (templateObject_3$12 = __makeTemplateObject([\"\\n color: \", \";\\n font-size: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -1px;\\n\"], [\"\\n color: \", \";\\n font-size: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -1px;\\n\"])), function (p) {\n return p.theme.colors.error.getValue().main;\n}, function (p) {\n return p.theme.type.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$2A, templateObject_2$1p, templateObject_3$12;\nvar InfoText$3 = styled(Text$1)(templateObject_1$2z || (templateObject_1$2z = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar InfoWrapper = styled(View)(templateObject_2$1o || (templateObject_2$1o = __makeTemplateObject([\"\\n flex-direction: row;\\n\\n \", \" {\\n color: \", \";\\n size: \", \";\\n }\\n\"], [\"\\n flex-direction: row;\\n\\n \", \" {\\n color: \", \";\\n size: \", \";\\n }\\n\"])), Text$1, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar GroupLabel = styled(Label$4)(templateObject_3$11 || (templateObject_3$11 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar TextWrapper$2 = styled(View)(templateObject_4$S || (templateObject_4$S = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n flex-direction: row-reverse;\\n\\n \", \" {\\n margin-bottom: \", \";\\n order: 0;\\n flex: auto;\\n\\n &:only-child {\\n width: 100%;\\n }\\n }\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n flex-direction: row-reverse;\\n\\n \", \" {\\n margin-bottom: \", \";\\n order: 0;\\n flex: auto;\\n\\n &:only-child {\\n width: 100%;\\n }\\n }\\n\"])), Label$4, function (p) {\n return p.theme.spacing.getSize();\n});\nvar InputGroup$2 = styled(View)(templateObject_6$B || (templateObject_6$B = __makeTemplateObject([\"\\n \", \" {\\n margin-top: \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n \", \" {\\n margin-top: \", \";\\n }\\n\\n \", \"\\n\"])), Validation$2, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.hasErrors && css(templateObject_5$L || (templateObject_5$L = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \"], [\"\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \", \";\\n \"])), errorState$3(p.theme), errorState$2(p.theme), errorState$5(p.theme), errorState$4(p.theme), errorState$1(p.theme), errorState(p.theme));\n});\nvar ValidationRow = styled(View)(templateObject_7$t || (templateObject_7$t = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n padding-top: \", \";\\n min-height: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n padding-top: \", \";\\n min-height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar CharacterCount$1 = styled(View)(templateObject_8$n || (templateObject_8$n = __makeTemplateObject([\"\\n margin-left: auto;\\n white-space: nowrap;\\n padding-left: \", \";\\n margin-top: \", \";\\n color: \", \";\\n\"], [\"\\n margin-left: auto;\\n white-space: nowrap;\\n padding-left: \", \";\\n margin-top: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.isValid ? p.theme.colors.text.getValue(1) : p.theme.colors.error.getValue().main;\n});\nvar templateObject_1$2z, templateObject_2$1o, templateObject_3$11, templateObject_4$S, templateObject_5$L, templateObject_6$B, templateObject_7$t, templateObject_8$n;\nvar Error$1 = function (props) {\n var error = props.error;\n return /*#__PURE__*/React__default.createElement(Error$2, {\n \"data-testid\": generate(['validation__error'], props)\n }, /*#__PURE__*/React__default.createElement(Icon$2, null), error);\n};\nvar Validation$1 = function (props) {\n var _a = props.errors,\n errors = _a === void 0 ? [] : _a;\n if (!errors.length) return null;\n return /*#__PURE__*/React__default.createElement(Validation$2, {\n \"data-testid\": generate(['validation'], props)\n }, errors.map(function (item) {\n return /*#__PURE__*/React__default.createElement(Error$1, {\n key: item,\n error: item\n });\n }));\n};\n\n/**\r\n @param errors - (optional) - string[]\r\n @param className - (optional) - string\r\n */\nvar Validation = styled(Validation$1)(templateObject_1$2y || (templateObject_1$2y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2y;\nvar CharacterCount = function (props) {\n var typedCharacters = props.typedCharacters,\n maxCharacters = props.maxCharacters;\n var count = maxCharacters - typedCharacters;\n var isValid = count >= 0;\n return /*#__PURE__*/React__default.createElement(CharacterCount$1, {\n \"data-testid\": generate(['character-count', isValid ? 'valid' : 'invalid'], props),\n isValid: isValid\n }, \"\".concat(count, \" / \").concat(maxCharacters));\n};\nvar InputGroup$1 = function (props) {\n var children = props.children,\n label = props.label,\n id = props.id,\n _a = props.errors,\n errors = _a === void 0 ? [] : _a,\n className = props.className,\n renderInput = props.renderInput,\n isSuccess = props.isSuccess,\n isRequired = props.isRequired,\n renderInfo = props.renderInfo,\n characterCountProps = props.characterCountProps;\n var renderInfoText = function () {\n if (typeof renderInfo === 'string') {\n return /*#__PURE__*/React__default.createElement(InfoText$3, {\n size: -1\n }, renderInfo);\n }\n if (renderInfo) {\n return /*#__PURE__*/React__default.createElement(InfoWrapper, null, renderInfo());\n }\n if (!isRequired) {\n return /*#__PURE__*/React__default.createElement(InfoText$3, {\n size: -1\n }, \"Optional\");\n }\n };\n var hasErrors = errors.length > 0 || characterCountProps && characterCountProps.maxCharacters - characterCountProps.typedCharacters < 0;\n return /*#__PURE__*/React__default.createElement(InputGroup$2, {\n className: className,\n hasErrors: hasErrors,\n \"data-testid\": generate(['input-group'], props)\n }, /*#__PURE__*/React__default.createElement(TextWrapper$2, null, renderInfoText(), /*#__PURE__*/React__default.createElement(GroupLabel, {\n htmlFor: id\n }, label)), renderInput ? renderInput({\n errors: errors,\n isSuccess: isSuccess\n }) : children, /*#__PURE__*/React__default.createElement(ValidationRow, null, /*#__PURE__*/React__default.createElement(Validation, {\n errors: errors\n }), characterCountProps && ( /*#__PURE__*/React__default.createElement(CharacterCount, {\n typedCharacters: characterCountProps.typedCharacters,\n maxCharacters: characterCountProps.maxCharacters\n }))));\n};\n\n/**\r\n @param label - (required) - string | React.ReactElement\r\n @param id - (optional) - string\r\n @param errors - (optional) - ValidationErrors\r\n @param isSuccess - (optional) - boolean\r\n @param className - (optional) - string\r\n @param renderInput - (optional) - ({ errors, isSuccess }: { errors?: ValidationErrors; isSuccess?: boolean }) => React.ReactElement\r\n @param isRequired - (optional) - boolean\r\n @param renderInfo - (optional) - string | (() => React.ReactElement)\r\n @param characterCountProps - (optional) - CharacterCountProps\r\n */\nvar InputGroup = styled(InputGroup$1)(templateObject_1$2x || (templateObject_1$2x = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2x;\nvar Layout$2 = styled(View)(templateObject_1$2w || (templateObject_1$2w = __makeTemplateObject([\"\\n height: 100vh;\\n display: grid;\\n grid-template-columns: \", \" auto;\\n grid-template-rows: 100vh;\\n grid-template-areas: 'navigation content';\\n box-sizing: border-box;\\n\"], [\"\\n height: 100vh;\\n display: grid;\\n grid-template-columns: \", \" auto;\\n grid-template-rows: 100vh;\\n grid-template-areas: 'navigation content';\\n box-sizing: border-box;\\n\"])), function (p) {\n return p.theme.spacing.getSize(p.theme.template.layout.verticalNav);\n});\nvar Navigation$1 = styled(View)(templateObject_2$1n || (templateObject_2$1n = __makeTemplateObject([\"\\n grid-area: navigation;\\n box-sizing: border-box;\\n\"], [\"\\n grid-area: navigation;\\n box-sizing: border-box;\\n\"])));\nvar Content$4 = styled(View)(templateObject_3$10 || (templateObject_3$10 = __makeTemplateObject([\"\\n grid-area: content;\\n box-sizing: border-box;\\n\"], [\"\\n grid-area: content;\\n box-sizing: border-box;\\n\"])));\nvar templateObject_1$2w, templateObject_2$1n, templateObject_3$10;\nvar Layout$1 = function (props) {\n var renderNavigation = props.renderNavigation,\n renderContent = props.renderContent,\n className = props.className;\n return /*#__PURE__*/React__default.createElement(Layout$2, {\n className: className,\n \"data-testid\": generate(['layout'], props)\n }, /*#__PURE__*/React__default.createElement(Navigation$1, {\n \"data-testid\": generate(['layout__navigation'])\n }, renderNavigation()), /*#__PURE__*/React__default.createElement(Content$4, {\n \"data-testid\": generate(['layout__content'])\n }, renderContent()));\n};\n\n/**\r\n * @param renderNavigation - (required) - () => React.ReactNode\r\n * @param renderContent - (required) - () => React.ReactNode\r\n * @param className - (optional) - string\r\n */\nvar Layout = styled(Layout$1)(templateObject_1$2v || (templateObject_1$2v = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2v;\nvar ListItem = styled.li(templateObject_1$2u || (templateObject_1$2u = __makeTemplateObject([\"\"], [\"\"])));\nvar listVariant = function (variant) {\n switch (variant) {\n default:\n case 'unstyled':\n return css(templateObject_2$1m || (templateObject_2$1m = __makeTemplateObject([\"\\n list-style: none;\\n \"], [\"\\n list-style: none;\\n \"])));\n case 'bullet':\n return css(templateObject_3$$ || (templateObject_3$$ = __makeTemplateObject([\"\\n list-style: disc;\\n padding-left: \", \";\\n \"], [\"\\n list-style: disc;\\n padding-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n case 'inline':\n return css(templateObject_4$R || (templateObject_4$R = __makeTemplateObject([\"\\n \", \" {\\n display: inline-block;\\n margin-left: \", \";\\n margin-right: \", \";\\n &:first-child {\\n margin-left: 0;\\n }\\n &:last-child {\\n margin-right: 0;\\n }\\n &:not(:first-child) {\\n margin-top: 0;\\n }\\n }\\n \"], [\"\\n \", \" {\\n display: inline-block;\\n margin-left: \", \";\\n margin-right: \", \";\\n &:first-child {\\n margin-left: 0;\\n }\\n &:last-child {\\n margin-right: 0;\\n }\\n &:not(:first-child) {\\n margin-top: 0;\\n }\\n }\\n \"])), ListItem, function (p) {\n return p.theme.spacing.getSize(2);\n }, function (p) {\n return p.theme.spacing.getSize(2);\n });\n case 'ordered':\n return css(templateObject_5$K || (templateObject_5$K = __makeTemplateObject([\"\\n list-style: decimal;\\n padding-left: \", \";\\n \"], [\"\\n list-style: decimal;\\n padding-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(4);\n });\n }\n};\nvar List$2 = styled.ul(templateObject_6$A || (templateObject_6$A = __makeTemplateObject([\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n \", \";\\n\"], [\"\\n \", \":not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n \", \";\\n\"])), ListItem, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return listVariant(p.variant);\n});\nvar templateObject_1$2u, templateObject_2$1m, templateObject_3$$, templateObject_4$R, templateObject_5$K, templateObject_6$A;\nvar List$1 = function (props) {\n var children = props.children,\n _a = props.variant,\n variant = _a === void 0 ? 'unstyled' : _a,\n className = props.className;\n return /*#__PURE__*/React__default.createElement(List$2, {\n className: className,\n variant: variant,\n \"data-testid\": generate(['list', \"list--\".concat(variant)], props)\n }, children);\n};\n\n/**\r\n * @param variant - (optional) - SC.ListVariants\r\n * @param className - (optional) - string\r\n */\nvar List = styled(List$1)(templateObject_1$2t || (templateObject_1$2t = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2t;\nvar Link$2 = styled.a(templateObject_7$s || (templateObject_7$s = __makeTemplateObject([\"\\n /* primary styles */\\n display: inline-flex;\\n align-items: center;\\n \", \";\\n \", \";\\n cursor: pointer;\\n\\n \", \"\\n\\n /* list item styles */\\n \", \"\\n\\n \\n \", \"\\n\"], [\"\\n /* primary styles */\\n display: inline-flex;\\n align-items: center;\\n \", \";\\n \", \";\\n cursor: pointer;\\n\\n \", \"\\n\\n /* list item styles */\\n \", \"\\n\\n \\n \", \"\\n\"])), function (p) {\n return getSizeAndLineHeight(p.size);\n}, function (p) {\n return getWeight(p.weight);\n}, function (p) {\n switch (p.variant) {\n case 'secondary':\n return css(templateObject_1$2s || (templateObject_1$2s = __makeTemplateObject([\"\\n text-decoration: underline;\\n color: \", \";\\n \"], [\"\\n text-decoration: underline;\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.text.getValue(1);\n });\n case 'borderless':\n case 'primary':\n default:\n return css(templateObject_2$1l || (templateObject_2$1l = __makeTemplateObject([\"\\n text-decoration: none;\\n color: \", \";\\n &:hover {\\n text-decoration: underline;\\n }\\n \"], [\"\\n text-decoration: none;\\n color: \", \";\\n &:hover {\\n text-decoration: underline;\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n });\n }\n}, function (p) {\n return p.isListItem && css(templateObject_3$_ || (templateObject_3$_ = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n \"], [\"\\n display: flex;\\n justify-content: space-between;\\n \"])));\n}, function (p) {\n if (!p.disabled) {\n if (p.noStyle) {\n // no style:\n // link without underline and hover status\n return css(templateObject_4$Q || (templateObject_4$Q = __makeTemplateObject([\"\\n text-decoration: none;\\n color: \", \";\\n &:hover {\\n text-decoration: none;\\n color: \", \";\\n }\\n &:active {\\n color: \", \";\\n }\\n \"], [\"\\n text-decoration: none;\\n color: \", \";\\n &:hover {\\n text-decoration: none;\\n color: \", \";\\n }\\n &:active {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.text.getValue(1);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n });\n }\n return css(templateObject_5$J || (templateObject_5$J = __makeTemplateObject([\"\\n &:active {\\n color: \", \";\\n }\\n &:hover {\\n color: \", \";\\n }\\n \"], [\"\\n &:active {\\n color: \", \";\\n }\\n &:hover {\\n color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(600).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n });\n }\n return css(templateObject_6$z || (templateObject_6$z = __makeTemplateObject([\"\\n text-decoration: none;\\n color: \", \";\\n cursor: not-allowed;\\n &:hover,\\n &:focus {\\n text-decoration: none;\\n color: \", \";\\n }\\n \"], [\"\\n text-decoration: none;\\n color: \", \";\\n cursor: not-allowed;\\n &:hover,\\n &:focus {\\n text-decoration: none;\\n color: \", \";\\n }\\n \"])), p.theme.colors.placeholder, p.theme.colors.placeholder);\n});\nvar LinkAsButton = styled.a(templateObject_12$9 || (templateObject_12$9 = __makeTemplateObject([\"\\n \", \"\\n height: \", \";\\n padding: 0 \", \";\\n text-decoration: none;\\n \", \";\\n\\n /* disabled styles */\\n \", \"\\n\"], [\"\\n \", \"\\n height: \", \";\\n padding: 0 \", \";\\n text-decoration: none;\\n \", \";\\n\\n /* disabled styles */\\n \", \"\\n\"])), BaseButtonStyle, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return colorVariant(p.activeTheme, p.variant);\n}, function (p) {\n if (p.disabled) {\n var primaryDisabledStyles = css(templateObject_8$m || (templateObject_8$m = __makeTemplateObject([\"\\n text-decoration: none;\\n color: \", \";\\n background-color: \", \";\\n cursor: not-allowed;\\n &:hover,\\n &:focus {\\n text-decoration: none;\\n color: \", \";\\n background-color: \", \";\\n }\\n \"], [\"\\n text-decoration: none;\\n color: \", \";\\n background-color: \", \";\\n cursor: not-allowed;\\n &:hover,\\n &:focus {\\n text-decoration: none;\\n color: \", \";\\n background-color: \", \";\\n }\\n \"])), p.theme.colors.text.getValue(2), p.theme.colors.backgrounds.getValue(0), p.theme.colors.text.getValue(2), p.theme.colors.backgrounds.getValue(0));\n switch (p.variant) {\n case 'secondary':\n {\n return css(templateObject_9$l || (templateObject_9$l = __makeTemplateObject([\"\\n \", \"\\n background-color: transparent;\\n border-color: \", \";\\n &:hover,\\n &:focus {\\n background-color: transparent;\\n border-color: \", \";\\n }\\n \"], [\"\\n \", \"\\n background-color: transparent;\\n border-color: \", \";\\n &:hover,\\n &:focus {\\n background-color: transparent;\\n border-color: \", \";\\n }\\n \"])), primaryDisabledStyles, p.theme.colors.text.getValue(2), p.theme.colors.text.getValue(2));\n }\n case 'borderless':\n {\n return css(templateObject_10$g || (templateObject_10$g = __makeTemplateObject([\"\\n \", \"\\n background-color: transparent;\\n border-color: transparent;\\n &:hover,\\n &:focus {\\n background-color: transparent;\\n border-color: transparent;\\n }\\n \"], [\"\\n \", \"\\n background-color: transparent;\\n border-color: transparent;\\n &:hover,\\n &:focus {\\n background-color: transparent;\\n border-color: transparent;\\n }\\n \"])), primaryDisabledStyles);\n }\n default:\n case 'primary':\n {\n return css(templateObject_11$b || (templateObject_11$b = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), primaryDisabledStyles);\n }\n }\n }\n});\nvar RightIcon = styled.span(templateObject_13$8 || (templateObject_13$8 = __makeTemplateObject([\"\\n margin-left: \", \";\\n font-size: \", \";\\n\"], [\"\\n margin-left: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.type.getSize();\n});\nvar templateObject_1$2s, templateObject_2$1l, templateObject_3$_, templateObject_4$Q, templateObject_5$J, templateObject_6$z, templateObject_7$s, templateObject_8$m, templateObject_9$l, templateObject_10$g, templateObject_11$b, templateObject_12$9, templateObject_13$8;\nvar Link$1 = function (props) {\n var children = props.children,\n onClick = props.onClick,\n href = props.href,\n _a = props.newWindow,\n newWindow = _a === void 0 ? false : _a,\n className = props.className,\n _b = props.isListItem,\n isListItem = _b === void 0 ? false : _b,\n _c = props.disabled,\n disabled = _c === void 0 ? false : _c,\n _d = props.variant,\n variant = _d === void 0 ? 'primary' : _d,\n size = props.size,\n _e = props.weight,\n weight = _e === void 0 ? 400 : _e,\n icon = props.icon,\n _f = props.hideIcon,\n hideIcon = _f === void 0 ? false : _f,\n _g = props.asButton,\n asButton = _g === void 0 ? false : _g,\n _h = props.noStyle,\n noStyle = _h === void 0 ? false : _h;\n var activeTheme = useThemeProvider().activeTheme;\n var isClickable = Boolean((href || onClick) && !disabled);\n var target = newWindow ? '_blank' : undefined;\n var renderRightIcon = function () {\n if (hideIcon) {\n return /*#__PURE__*/React__default.createElement(RightIcon, null);\n }\n if (icon) {\n return /*#__PURE__*/React__default.createElement(RightIcon, null, icon());\n }\n if (variant === 'secondary' && !newWindow) {\n return /*#__PURE__*/React__default.createElement(RightIcon, null, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null));\n }\n if (newWindow) {\n return /*#__PURE__*/React__default.createElement(RightIcon, null, /*#__PURE__*/React__default.createElement(MemoSvgLinkOut, null));\n }\n if (isListItem) {\n return /*#__PURE__*/React__default.createElement(RightIcon, null, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null));\n }\n };\n var handleClick = function (e) {\n if (disabled) {\n e.preventDefault();\n } else if (onClick) {\n e.preventDefault();\n onClick(e);\n }\n };\n if (asButton && !isListItem) {\n return /*#__PURE__*/React__default.createElement(LinkAsButton, {\n className: className,\n \"data-testid\": generate(['link', 'link-as-button'], props),\n variant: variant,\n href: href,\n target: target,\n onClick: handleClick,\n disabled: !isClickable,\n isListItem: isListItem,\n size: size,\n weight: weight,\n activeTheme: activeTheme,\n noStyle: noStyle\n }, children);\n }\n if (!isClickable) {\n return /*#__PURE__*/React__default.createElement(Link$2, {\n as: \"span\",\n className: className,\n \"data-testid\": generate(['link', 'link--fake'], props),\n variant: variant,\n isListItem: isListItem,\n disabled: !isClickable,\n size: size,\n weight: weight,\n noStyle: noStyle\n }, children, renderRightIcon());\n }\n return /*#__PURE__*/React__default.createElement(Link$2, {\n className: className,\n \"data-testid\": generate(['link'], props),\n variant: variant,\n href: href,\n target: target,\n onClick: handleClick,\n disabled: !isClickable,\n isListItem: isListItem,\n size: size,\n weight: weight,\n noStyle: noStyle\n }, children, renderRightIcon());\n};\n\n/**\r\n * @param href - (optional) - string\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void\r\n * @param newWindow - (optional) - boolean\r\n * @param className - (optional) - string\r\n * @param isListItem - (optional) - boolean\r\n * @param disabled - (optional) - boolean\r\n * @param variant - (optional) - 'primary' | 'secondary'\r\n * @param size - (optional) - number\r\n * @param weight - (optional) - TextWeight\r\n * @param notClickable - (optional) - boolean\r\n * @param icon - (optional) - () => React.ReactElement\r\n * @param hideIcon - (optional) - () => boolean\r\n */\nvar Link = styled(Link$1)(templateObject_1$2r || (templateObject_1$2r = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2r;\nvar Panel$2 = styled(Card$2)(templateObject_1$2q || (templateObject_1$2q = __makeTemplateObject([\"\\n padding: 0;\\n \", \";\\n\\n \", \" {\\n font-size: \", \";\\n }\\n\"], [\"\\n padding: 0;\\n \", \";\\n\\n \", \" {\\n font-size: \", \";\\n }\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n}, IconButton$2, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar PanelSection = styled(View$2)(templateObject_4$P || (templateObject_4$P = __makeTemplateObject([\"\\n padding: \", \";\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n padding: \", \";\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.withBreaker && css(templateObject_2$1k || (templateObject_2$1k = __makeTemplateObject([\"\\n border-top: 1px solid \", \";\\n padding-top: \", \";\\n \"], [\"\\n border-top: 1px solid \", \";\\n padding-top: \", \";\\n \"])), p.theme.colors.borders.getValue(2), p.theme.spacing.getSize(6));\n}, function (p) {\n return p.noBottomPadding && css(templateObject_3$Z || (templateObject_3$Z = __makeTemplateObject([\"\\n padding-bottom: 0;\\n \"], [\"\\n padding-bottom: 0;\\n \"])));\n});\nvar Pretitle = styled(Text$3)(templateObject_5$I || (templateObject_5$I = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Subtitle = styled(Text$3)(templateObject_6$y || (templateObject_6$y = __makeTemplateObject([\"\\n color: \", \";\\n margin-top: \", \";\\n\"], [\"\\n color: \", \";\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Header$5 = styled(PanelSection)(templateObject_7$r || (templateObject_7$r = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: start;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: start;\\n\"])));\nvar Toolbar$3 = styled(View$2)(templateObject_8$l || (templateObject_8$l = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n margin-left: \", \";\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n margin-left: \", \";\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Title$4 = styled(View$2)(templateObject_9$k || (templateObject_9$k = __makeTemplateObject([\"\\n flex-direction: column;\\n overflow: hidden;\\n width: 100%;\\n\"], [\"\\n flex-direction: column;\\n overflow: hidden;\\n width: 100%;\\n\"])));\nvar Footer$4 = styled(PanelSection)(templateObject_10$f || (templateObject_10$f = __makeTemplateObject([\"\\n background: \", \";\\n padding: \", \";\\n\"], [\"\\n background: \", \";\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$2q, templateObject_2$1k, templateObject_3$Z, templateObject_4$P, templateObject_5$I, templateObject_6$y, templateObject_7$r, templateObject_8$l, templateObject_9$k, templateObject_10$f;\nvar Header$4 = function (props) {\n var className = props.className,\n renderTitle = props.renderTitle,\n withMenu = props.withMenu,\n _a = props.menuIcon,\n menuIcon = _a === void 0 ? function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgKebabVertical, null);\n } : _a,\n _b = props.menuLabel,\n menuLabel = _b === void 0 ? '' : _b,\n menuOnClick = props.menuOnClick,\n menuDropdownContent = props.menuDropdownContent,\n renderToolbar = props.renderToolbar,\n _c = props.noBottomPadding,\n noBottomPadding = _c === void 0 ? false : _c;\n return /*#__PURE__*/React__default.createElement(Header$5, {\n \"data-testid\": generate(['panel--header'], props),\n className: className,\n withBreaker: false,\n noBottomPadding: noBottomPadding\n }, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, renderTitle && renderTitle(), /*#__PURE__*/React__default.createElement(Toolbar$3, null, renderToolbar && renderToolbar(), withMenu && ( /*#__PURE__*/React__default.createElement(IconButton, {\n size: \"small\",\n label: menuLabel,\n icon: menuIcon,\n onClick: menuOnClick,\n dropdownContent: menuDropdownContent,\n variant: \"state\"\n })))));\n};\nvar Panel$1 = function (props) {\n var className = props.className,\n children = props.children,\n id = props.id,\n renderTitle = props.renderTitle,\n renderToolbar = props.renderToolbar,\n withMenu = props.withMenu,\n menuIcon = props.menuIcon,\n menuLabel = props.menuLabel,\n menuOnClick = props.menuOnClick,\n menuDropdownContent = props.menuDropdownContent,\n renderFooter = props.renderFooter,\n noBottomPaddingOnHeader = props.noBottomPaddingOnHeader;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Panel$2, {\n \"data-testid\": generate(['panel'], props),\n className: className,\n id: id,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Header$4, {\n renderTitle: renderTitle,\n renderToolbar: renderToolbar,\n withMenu: withMenu,\n menuIcon: menuIcon,\n menuLabel: menuLabel,\n menuOnClick: menuOnClick,\n menuDropdownContent: menuDropdownContent,\n noBottomPadding: noBottomPaddingOnHeader\n }), children, renderFooter && /*#__PURE__*/React__default.createElement(Footer$4, null, renderFooter()));\n};\nvar PanelTitle$1 = function (props) {\n var pretitleText = props.pretitleText,\n mainTitleText = props.mainTitleText,\n mainTitleSize = props.mainTitleSize,\n mainTitleOnClick = props.mainTitleOnClick,\n subtitleText = props.subtitleText,\n truncateMainTitle = props.truncateMainTitle,\n clampSubtitleText = props.clampSubtitleText;\n var titleConfig = function () {\n switch (mainTitleSize) {\n case undefined:\n default:\n case 'small':\n return {\n size: 0,\n weight: 300\n };\n case 'medium':\n return {\n size: 2,\n weight: 500\n };\n case 'large':\n return {\n size: 3,\n weight: 500\n };\n }\n };\n var renderHeading = function () {\n if (mainTitleText && mainTitleOnClick) {\n return /*#__PURE__*/React__default.createElement(Link, {\n noStyle: true,\n isListItem: true,\n onClick: mainTitleOnClick\n }, /*#__PURE__*/React__default.createElement(Heading$2, __assign({\n ellipsis: truncateMainTitle\n }, titleConfig()), mainTitleText));\n }\n return /*#__PURE__*/React__default.createElement(Heading$2, __assign({\n ellipsis: truncateMainTitle\n }, titleConfig()), mainTitleText);\n };\n return /*#__PURE__*/React__default.createElement(Title$4, null, pretitleText && ( /*#__PURE__*/React__default.createElement(Pretitle, {\n size: -2,\n weight: 300\n }, pretitleText)), mainTitleText && renderHeading(), subtitleText && ( /*#__PURE__*/React__default.createElement(Subtitle, {\n size: 1,\n weight: 300,\n clamp: clampSubtitleText\n }, subtitleText)));\n};\n\n/**\r\n @param className - (optional) - string\r\n @param renderTitle - (optional) - () => React.ReactElement\r\n @param renderToolbar - (optional) - () => React.ReactElement\r\n @param withMenu - (optional) - boolean\r\n @param menuIcon - (optional) - () => React.ReactElement\r\n @param menuLabel - (optional) - string\r\n @param menuOnClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param menuDropdownContent - (optional) - (onClose: () => void) => {}\r\n @param noBottomPadding - (optional) - boolean\r\n @param renderFooter - (optional) - () => React.ReactElement\r\n @param id - (optional) - string\r\n @param noBottomPaddingOnHeader - (optional) - boolean\r\n */\nvar Panel = styled(Panel$1)(templateObject_1$2p || (templateObject_1$2p = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param pretitleText - (optional) - ReactElement | string\r\n @param mainTitleText - (optional) - string\r\n @param mainTitleSize - (optional) - TitleSizes\r\n @param mainTitleOnClick - (optional) - (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void\r\n @param truncateMainTitle - (optional) - boolean\r\n @param subtitleText - (optional) - string\r\n @param clampSubtitleText - (optional) - number\r\n */\nvar PanelTitle = styled(PanelTitle$1)(templateObject_2$1j || (templateObject_2$1j = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2p, templateObject_2$1j;\nvar Select$1 = function (props) {\n var value = props.value,\n options = props.options,\n onChange = props.onChange,\n className = props.className,\n id = props.id,\n _a = props.placeholder,\n placeholder = _a === void 0 ? 'Please select' : _a,\n _b = props.disabled,\n disabled = _b === void 0 ? false : _b,\n fullWidthDropdown = props.fullWidthDropdown,\n clearable = props.clearable;\n var activeTheme = useThemeProvider().activeTheme;\n var getActiveOption = function () {\n return options.find(function (item) {\n return item.value === value;\n });\n };\n var getLabel = function () {\n var value = getActiveOption();\n return (value === null || value === void 0 ? void 0 : value.label) || placeholder;\n };\n var renderItem = function (item) {\n return {\n label: item.label,\n value: item.value\n };\n };\n return /*#__PURE__*/React__default.createElement(Select$2, {\n id: id,\n className: className\n }, /*#__PURE__*/React__default.createElement(Dropdown, {\n disabled: disabled,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null);\n },\n label: getLabel(),\n \"data-testid\": generate(['styled-select'], props),\n role: \"button\",\n fullWidthDropdown: fullWidthDropdown,\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React__default.createElement(DropdownMenu, {\n onClick: function (item, event) {\n onChange(item.value, event);\n onClose();\n },\n items: options.map(renderItem)\n });\n },\n activeTheme: activeTheme\n }), clearable && ( /*#__PURE__*/React__default.createElement(Clear, {\n \"data-testid\": generate(['clear-button'], props),\n label: \"\",\n onClick: function (e) {\n onChange('', e);\n },\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n })));\n};\n\n/**\r\n @param options - (required) - SelectOption[];\r\n @param value - (required) - SelectOptionValue | null;\r\n @param onChange - (required) - ( value: SelectOptionValue, event: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement> ) => void;\r\n @param id - (optional) - string\r\n @param placeholder - (optional) - string\r\n @param multiple - (optional) - boolean\r\n @param className - (optional) - string\r\n @param disabled - (optional) - boolean\r\n @param clearable - (optional) - boolean\r\n @param fullWidthDropdown - (optional) - boolean\r\n */\nvar Select = styled(Select$1)(templateObject_1$2o || (templateObject_1$2o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2o;\nvar groupVariant = function (variant) {\n switch (variant) {\n case 'primary':\n return css(templateObject_1$2n || (templateObject_1$2n = __makeTemplateObject([\"\\n background: transparent;\\n border-radius: \", \";\\n width: fit-content;\\n \"], [\"\\n background: transparent;\\n border-radius: \", \";\\n width: fit-content;\\n \"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(0.5), \" \").concat(p.theme.spacing.getSize(0.5), \" 0 0\");\n });\n case 'sub':\n return css(templateObject_2$1i || (templateObject_2$1i = __makeTemplateObject([\"\\n background: \", \";\\n border-radius: \", \";\\n width: fit-content;\\n \"], [\"\\n background: \", \";\\n border-radius: \", \";\\n width: fit-content;\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, function (p) {\n return p.theme.spacing.getSize(8);\n });\n default:\n case 'default':\n return css(templateObject_3$Y || (templateObject_3$Y = __makeTemplateObject([\"\\n white-space: nowrap;\\n overflow: hidden;\\n background: transparent;\\n display: inline-flex;\\n position: relative;\\n\\n &:after {\\n content: '';\\n position: absolute;\\n height: 1px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n background-color: \", \";\\n }\\n \"], [\"\\n white-space: nowrap;\\n overflow: hidden;\\n background: transparent;\\n display: inline-flex;\\n position: relative;\\n\\n &:after {\\n content: '';\\n position: absolute;\\n height: 1px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n background-color: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n }\n};\nvar tabVariant = function (theme, variant, size) {\n switch (variant) {\n case 'primary':\n return css(templateObject_4$O || (templateObject_4$O = __makeTemplateObject([\"\\n height: \", \";\\n padding: 0 \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n font-size: \", \";\\n color: \", \";\\n border: 0;\\n align-items: center;\\n &:hover {\\n background: \", \";\\n }\\n \"], [\"\\n height: \", \";\\n padding: 0 \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n font-size: \", \";\\n color: \", \";\\n border: 0;\\n align-items: center;\\n &:hover {\\n background: \", \";\\n }\\n \"])), function (p) {\n return size === 'small' ? p.theme.spacing.getSize(6) : p.theme.spacing.getSize(9);\n }, function (p) {\n return size === 'small' ? p.theme.spacing.getSize(3) : p.theme.spacing.getSize(4);\n }, function (p) {\n return \"\".concat(p.theme.spacing.getSize(0.5), \" \").concat(p.theme.spacing.getSize(0.5), \" 0 0\");\n }, function (p) {\n return size === 'small' ? p.theme.type.getSize(-1) : p.theme.type.getSize(1);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n }, function (p) {\n return p.theme.colors.info.getValue(100).main;\n });\n case 'sub':\n return css(templateObject_5$H || (templateObject_5$H = __makeTemplateObject([\"\\n height: \", \";\\n padding: 0 \", \";\\n font-size: \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n color: \", \";\\n border: 0;\\n align-items: center;\\n \"], [\"\\n height: \", \";\\n padding: 0 \", \";\\n font-size: \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n color: \", \";\\n border: 0;\\n align-items: center;\\n \"])), function (p) {\n return size === 'small' ? p.theme.spacing.getSize(6) : p.theme.spacing.getSize(9);\n }, function (p) {\n return size === 'small' ? p.theme.spacing.getSize(3) : p.theme.spacing.getSize(4);\n }, function (p) {\n return size === 'small' ? p.theme.type.getSize(-1) : p.theme.type.getSize(1);\n }, function (p) {\n return p.theme.spacing.getSize(8);\n }, function (p) {\n return p.theme.colors.text.getValue();\n });\n default:\n case 'default':\n return css(templateObject_6$x || (templateObject_6$x = __makeTemplateObject([\"\\n position: relative;\\n padding: 0 \", \";\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: top;\\n outline: 0;\\n border: 0;\\n background: none;\\n z-index: calc(\", \" + 1);\\n font-weight: 300;\\n font-size: \", \";\\n color: \", \";\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: 100%;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n position: absolute;\\n background-color: \", \";\\n transform: translateY(4px);\\n transition: 0.2s ease-in-out;\\n }\\n \"], [\"\\n position: relative;\\n padding: 0 \", \";\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: top;\\n outline: 0;\\n border: 0;\\n background: none;\\n z-index: calc(\", \" + 1);\\n font-weight: 300;\\n font-size: \", \";\\n color: \", \";\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: 100%;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n position: absolute;\\n background-color: \", \";\\n transform: translateY(4px);\\n transition: 0.2s ease-in-out;\\n }\\n \"])), function (p) {\n return size === 'small' ? p.theme.spacing.getSize(6) : p.theme.spacing.getSize(10);\n }, function (p) {\n return size === 'small' ? p.theme.spacing.getSize(8) : p.theme.spacing.getSize(10);\n }, zIndex, function (p) {\n return size === 'small' ? p.theme.type.getSize(-1) : p.theme.type.getSize(1);\n }, function (p) {\n return p.theme.colors.text.getValue();\n }, function (p) {\n return p.theme.spacing.getSize();\n }, function (p) {\n return p.theme.colors.info.getValue(500).main;\n });\n }\n};\nvar activeTab = function (theme, variant) {\n switch (variant) {\n case 'primary':\n return css(templateObject_7$q || (templateObject_7$q = __makeTemplateObject([\"\\n background: \", \";\\n color: \", \";\\n &:hover {\\n background: \", \";\\n }\\n \"], [\"\\n background: \", \";\\n color: \", \";\\n &:hover {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.info.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().context;\n }, function (p) {\n return p.theme.colors.info.getValue().main;\n });\n case 'sub':\n return css(templateObject_8$k || (templateObject_8$k = __makeTemplateObject([\"\\n background: \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.info.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().context;\n });\n default:\n case 'default':\n return css(templateObject_9$j || (templateObject_9$j = __makeTemplateObject([\"\\n font-weight: 500;\\n\\n &:after {\\n transform: translateY(0);\\n }\\n \"], [\"\\n font-weight: 500;\\n\\n &:after {\\n transform: translateY(0);\\n }\\n \"])));\n }\n};\nvar TabGroup$2 = styled.div(templateObject_10$e || (templateObject_10$e = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), function (p) {\n return groupVariant(p.variant);\n});\nvar Tab = styled.button(templateObject_11$a || (templateObject_11$a = __makeTemplateObject([\"\\n background-color: transparent;\\n \", \";\\n \", \"\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"], [\"\\n background-color: transparent;\\n \", \";\\n \", \"\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"])), function (p) {\n return tabVariant(p.theme, p.variant, p.size);\n}, function (p) {\n return p.isActive && activeTab(p.theme, p.variant);\n});\nvar templateObject_1$2n, templateObject_2$1i, templateObject_3$Y, templateObject_4$O, templateObject_5$H, templateObject_6$x, templateObject_7$q, templateObject_8$k, templateObject_9$j, templateObject_10$e, templateObject_11$a;\nvar TabGroup$1 = function (props) {\n var className = props.className,\n tabs = props.tabs,\n activeId = props.activeId,\n onClick = props.onClick,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a,\n _b = props.size,\n size = _b === void 0 ? 'default' : _b,\n _c = props.preventTabChange,\n preventTabChange = _c === void 0 ? false : _c;\n var _d = __read(React__default.useState(), 2),\n activeTab = _d[0],\n setActiveTab = _d[1];\n var activeTheme = useThemeProvider().activeTheme;\n React__default.useEffect(function () {\n var defaultTabs = tabs || [];\n if (activeId) {\n setActiveTab(activeId);\n } else if (defaultTabs.length > 0) {\n setActiveTab(defaultTabs[0].id);\n }\n }, [activeId, tabs]);\n var handleClick = function (id, event) {\n if (onClick) {\n onClick(id, event);\n }\n if (!preventTabChange) {\n setActiveTab(id);\n }\n };\n if (tabs && activeTab) {\n return /*#__PURE__*/React__default.createElement(TabGroup$2, {\n \"data-testid\": generate(['tab-group', \"variant--\".concat(variant)], props),\n className: className,\n variant: variant,\n activeTheme: activeTheme\n }, tabs.map(function (tab) {\n var id = tab.id,\n title = tab.title;\n return /*#__PURE__*/React__default.createElement(Tab, {\n \"data-testid\": generate(['tab', generateCypressId(\"tab-\".concat(id)), id === activeTab ? generateCypressId(\"tab-\".concat(id, \"--active\")) : null]),\n key: id,\n isActive: id === activeTab,\n onClick: function (e) {\n return handleClick(id, e);\n },\n variant: variant,\n size: size\n }, title);\n }));\n }\n return null;\n};\n\n/**\r\n @param className - (optional) - string\r\n @param variant - (optional) - SC.TabGroupVariant\r\n @param tabs - (optional) - TabItem[]\r\n @param activeId - (optional) - string | null\r\n @param onClick - (optional) - (id: string, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar TabGroup = styled(TabGroup$1)(templateObject_1$2m || (templateObject_1$2m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2m;\nvar Tabs$2 = styled(View)(templateObject_1$2l || (templateObject_1$2l = __makeTemplateObject([\"\"], [\"\"])));\nvar Nav = styled(TabGroup)(templateObject_2$1h || (templateObject_2$1h = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$2l, templateObject_2$1h;\nvar Tabs$1 = function (props) {\n var data = props.data,\n defaultActive = props.defaultActive,\n className = props.className,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a;\n var _b = __read(useState(defaultActive || data[0].id), 2),\n activeTab = _b[0],\n setActiveTab = _b[1];\n var activeContent = data.findIndex(function (tab) {\n return tab.id === activeTab;\n });\n var renderContent = function () {\n return data[activeContent].content();\n };\n return /*#__PURE__*/React__default.createElement(Tabs$2, {\n className: className,\n \"data-testid\": generate(['tabs'], props)\n }, /*#__PURE__*/React__default.createElement(Nav, {\n variant: variant,\n tabs: data,\n onClick: function (id) {\n return setActiveTab(id);\n },\n activeId: activeTab\n }), /*#__PURE__*/React__default.createElement(View, null, renderContent()));\n};\n\n/**\r\n @param data - (required) - Array<{ title: string; id: string; content: () => React.ReactElement;}>\r\n @param defaultActive - (optional) - string\r\n @param activeId - (optional) - string\r\n @param className - (optional) - string\r\n @param variant - (optional) - TabGroupVariant\r\n */\nvar Tabs = styled(Tabs$1)(templateObject_1$2k || (templateObject_1$2k = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2k;\nvar tagVariant = function (theme, variant, activeTheme, state) {\n switch (variant) {\n /* istanbul ignore next */\n default:\n case 'default':\n case 'Generic Filled':\n {\n if (state === 'unselected') {\n return css(templateObject_1$2j || (templateObject_1$2j = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"])), theme.colors.backgrounds.getValue(0), theme.colors.backgrounds.getValue(0), theme.colors.text.getValue(1), theme.colors.info.getValue(600).main, theme.colors.info.getValue(500).main, theme.colors.info.getValue(500).context);\n } else if (state === 'disabled') {\n return css(templateObject_2$1g || (templateObject_2$1g = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \"])), theme.colors.borders.getValue(0), theme.colors.borders.getValue(0), theme.colors.text.getValue(3));\n }\n // Default selected state\n return css(templateObject_3$X || (templateObject_3$X = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"])), theme.colors.info.getValue(500).main, theme.colors.info.getValue(500).main, theme.colors.info.getValue(500).context);\n }\n /* istanbul ignore next */\n //@ts-ignore Ignore 'inverse' here, as it is legacy introduced by naming changes..\n case 'inverse':\n case 'Generic Outline':\n {\n if (state === 'unselected') {\n return css(templateObject_4$N || (templateObject_4$N = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n\\n &:hover {\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n }\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n\\n &:hover {\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n }\\n \"])), theme.colors.backgrounds.getValue(0), theme.colors.text.getValue(1), containerBackground(activeTheme), theme.colors.info.getValue(600).main, theme.colors.info.getValue(600).main, containerBackground(activeTheme));\n } else if (state === 'disabled') {\n return css(templateObject_5$G || (templateObject_5$G = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"])), theme.colors.borders.getValue(0), theme.colors.borders.getValue(0), containerBackground(activeTheme));\n }\n // Default selected state\n return css(templateObject_6$w || (templateObject_6$w = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n \", \"\\n \"])), theme.colors.info.getValue().main, theme.colors.info.getValue().main, containerBackground(activeTheme));\n }\n case 'Filter Panel':\n {\n if (state === 'unselected') {\n return css(templateObject_7$p || (templateObject_7$p = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"])), theme.colors.backgrounds.getValue(0), theme.colors.backgrounds.getValue(0), theme.colors.text.getValue(1), theme.colors.accent2.getValue(600).main, theme.colors.accent2.getValue(600).main, theme.colors.accent2.getValue(600).context);\n } else if (state === 'disabled') {\n return css(templateObject_8$j || (templateObject_8$j = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"])), theme.colors.borders.getValue(2), theme.colors.borders.getValue(0), containerBackground(activeTheme));\n }\n // Default selected state\n return css(templateObject_9$i || (templateObject_9$i = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"])), theme.colors.accent2.getValue().main, theme.colors.accent2.getValue().main, theme.colors.accent2.getValue().context);\n }\n case 'Toolbar Filters':\n {\n if (state === 'unselected') {\n return css(templateObject_10$d || (templateObject_10$d = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n\\n &:hover {\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n }\\n \"])), theme.colors.backgrounds.getValue(0), theme.colors.backgrounds.getValue(0), theme.colors.text.getValue(1), theme.colors.primary.getValue(100).main, theme.colors.primary.getValue(100).main, theme.colors.text.getValue(1));\n } else if (state === 'disabled') {\n return css(templateObject_11$9 || (templateObject_11$9 = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"], [\"\\n border: 1px solid \", \";\\n color: \", \";\\n text-decoration: line-through;\\n \", \"\\n \"])), getContainerColor(activeTheme), theme.colors.borders.getValue(0), containerBackground(activeTheme));\n }\n // Default selected state (for some reason this is same as hover for this one.......)\n return css(templateObject_12$8 || (templateObject_12$8 = __makeTemplateObject([\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n border: 1px solid \", \";\\n color: \", \";\\n \"])), theme.colors.primary.getValue(100).main, theme.colors.primary.getValue(100).main, theme.colors.text.getValue(1));\n }\n }\n};\nvar Tag$2 = styled.span(templateObject_14$6 || (templateObject_14$6 = __makeTemplateObject([\"\\n color: \", \";\\n padding: \", \" \", \";\\n height: \", \";\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-radius: \", \";\\n font-size: \", \";\\n border-radius: 28px;\\n transition: background-color 0.2s linear, border-color 0.2s linear;\\n \", \";\\n \", \";\\n\"], [\"\\n color: \", \";\\n padding: \", \" \", \";\\n height: \", \";\\n display: inline-block;\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n border-radius: \", \";\\n font-size: \", \";\\n border-radius: 28px;\\n transition: background-color 0.2s linear, border-color 0.2s linear;\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(7);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return tagVariant(p.theme, p.variant || 'default', p.activeTheme, p.state || 'selected');\n}, function (p) {\n return p.onClick ? css(templateObject_13$7 || (templateObject_13$7 = __makeTemplateObject([\"\\n cursor: pointer;\\n \"], [\"\\n cursor: pointer;\\n \"]))) : undefined;\n});\nvar Text = styled.span(templateObject_15$6 || (templateObject_15$6 = __makeTemplateObject([\"\\n position: relative;\\n font-weight: 500;\\n display: flex;\\n transition: color 0.2s linear;\\n align-items: center;\\n\\n \", \" {\\n color: inherit;\\n margin-left: \", \";\\n }\\n\"], [\"\\n position: relative;\\n font-weight: 500;\\n display: flex;\\n transition: color 0.2s linear;\\n align-items: center;\\n\\n \", \" {\\n color: inherit;\\n margin-left: \", \";\\n }\\n\"])), IconButton, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2j, templateObject_2$1g, templateObject_3$X, templateObject_4$N, templateObject_5$G, templateObject_6$w, templateObject_7$p, templateObject_8$j, templateObject_9$i, templateObject_10$d, templateObject_11$9, templateObject_12$8, templateObject_13$7, templateObject_14$6, templateObject_15$6;\nvar Tag$1 = function (props) {\n var children = props.children,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a,\n state = props.state,\n onClick = props.onClick,\n onDelete = props.onDelete,\n className = props.className;\n var activeTheme = useThemeProvider().activeTheme;\n var handleDelete = function (e) {\n if (onDelete) {\n e.preventDefault();\n e.stopPropagation();\n onDelete(e);\n }\n };\n return /*#__PURE__*/React__default.createElement(Tag$2, {\n \"data-testid\": generate(['tag', state ? \"tag--\".concat(state) : null], props),\n variant: variant,\n state: state,\n className: className,\n onClick: onClick,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Text, null, children, onDelete && state !== 'disabled' ? ( /*#__PURE__*/React__default.createElement(IconButton, {\n label: \"Delete\",\n size: \"tiny\",\n onClick: handleDelete,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n })) : undefined));\n};\n\n/**\r\n @param children - (required) - string\r\n @param variant - (optional) - SC.TagVariants\r\n @param state - (optional) - SC.TagState\r\n @param className - (optional) - string\r\n @param onDelete - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar Tag = styled(Tag$1)(templateObject_1$2i || (templateObject_1$2i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2i;\nvar Textarea$1 = function (props) {\n var id = props.id,\n value = props.value,\n onChange = props.onChange,\n placeholder = props.placeholder,\n className = props.className,\n disabled = props.disabled;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Textarea$2, {\n id: id,\n \"data-testid\": generate(['textarea'], props),\n placeholder: placeholder,\n value: value,\n onChange: onChange,\n className: className,\n disabled: disabled,\n activeTheme: activeTheme\n });\n};\n\n/**\r\n @param value - (required) - string\r\n @param onChange - (required) - (event: React.ChangeEvent<HTMLTextAreaElement>) => void\r\n @param id - (optional) - string\r\n @param placeholder - (optional) - string\r\n @param className - (optional) - string\r\n @param disabled - (optional) - boolean\r\n */\nvar Textarea = styled(Textarea$1)(templateObject_1$2h || (templateObject_1$2h = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2h;\nvar Loading$2 = styled.div(templateObject_1$2g || (templateObject_1$2g = __makeTemplateObject([\"\\n z-index: calc(\", \" + 1);\\n\"], [\"\\n z-index: calc(\", \" + 1);\\n\"])), zIndex);\nvar CenterWrapper = styled.div(templateObject_3$W || (templateObject_3$W = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n width: 100%;\\n height: 100%;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n \", \"\\n\"])), function (p) {\n return p.withOverlay && css(templateObject_2$1f || (templateObject_2$1f = __makeTemplateObject([\"\\n :after {\\n content: ' ';\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n background-color: \", \";\\n opacity: 0.9;\\n z-index: \", \";\\n }\\n \"], [\"\\n :after {\\n content: ' ';\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n width: 100%;\\n background-color: \", \";\\n opacity: 0.9;\\n z-index: \", \";\\n }\\n \"])), p.theme.colors.backgrounds.getValue(), zIndex);\n});\nvar templateObject_1$2g, templateObject_2$1f, templateObject_3$W;\nvar Loading$1 = function (props) {\n var position = props.position,\n withOverlay = props.withOverlay,\n className = props.className,\n _a = props.delay,\n delay = _a === void 0 ? 500 : _a;\n var theme = useTheme();\n var _b = __read(useState(false), 2),\n show = _b[0],\n setShow = _b[1];\n useEffect(function () {\n var timeout = setTimeout(function () {\n return setShow(true);\n }, delay);\n return function () {\n clearTimeout(timeout);\n };\n }, [delay]);\n if (show) {\n switch (position) {\n case 'absolute':\n return /*#__PURE__*/React__default.createElement(Layer$1, {\n name: \"loading\"\n }, /*#__PURE__*/React__default.createElement(CenterWrapper, {\n className: className,\n withOverlay: withOverlay,\n \"data-testid\": generate(['loading', 'loading--with-overlay'], props)\n }, /*#__PURE__*/React__default.createElement(Loading$2, {\n className: className\n }, /*#__PURE__*/React__default.createElement(BounceLoader, {\n color: theme.colors.primary.getValue().main,\n size: 30\n }))));\n default:\n return /*#__PURE__*/React__default.createElement(Layer$1, {\n name: \"loading\"\n }, /*#__PURE__*/React__default.createElement(Loading$2, {\n className: className,\n \"data-testid\": generate(['loading'], props)\n }, /*#__PURE__*/React__default.createElement(BounceLoader, {\n color: theme.colors.primary.getValue().main,\n size: 30\n })));\n }\n }\n return null;\n};\n\n/**\r\n * @param position - (optional) - 'absolute'\r\n * @param withOverlay - (optional) - boolean\r\n * @param className - (optional) - string\r\n * @param delay - (optional) - number\r\n */\nvar Loading = styled(Loading$1)(templateObject_1$2f || (templateObject_1$2f = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2f;\nvar Popover$2 = styled.div(templateObject_1$2e || (templateObject_1$2e = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n background: \", \";\\n padding: \", \";\\n border-radius: \", \";\\n\"], [\"\\n border: 1px solid \", \";\\n background: \", \";\\n padding: \", \";\\n border-radius: \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue();\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n});\nvar templateObject_1$2e;\nvar Popover$1 = function (props) {\n var location = props.location,\n anchorEl = props.anchorEl,\n onClose = props.onClose,\n children = props.children,\n className = props.className;\n var contentRef = React__default.useRef(null);\n if (!anchorEl) return null;\n return /*#__PURE__*/React__default.createElement(DropdownContent, {\n className: className,\n \"data-testid\": generate(['popover'], props),\n triggerEl: anchorEl,\n onClose: onClose,\n location: location\n }, /*#__PURE__*/React__default.createElement(Popover$2, {\n ref: contentRef\n }, children));\n};\n\n/**\r\n @param onClose - (required) - () => void\r\n @param anchorEl - (optional) - EventTarget & HTMLElement\r\n @param location - (optional) - { vertical: 'top' | 'center' | 'bottom'; horizontal: 'left' | 'center' | 'right'; }\r\n @param className - (optional) - string\r\n */\nvar Popover = styled(Popover$1)(templateObject_1$2d || (templateObject_1$2d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2d;\nvar Drawer$2 = styled.div(templateObject_1$2c || (templateObject_1$2c = __makeTemplateObject([\"\\n position: fixed;\\n right: 0;\\n top: 0;\\n height: 100vh;\\n box-sizing: border-box;\\n will-change: auto;\\n border-radius: \", \" 0 0 \", \";\\n z-index: \", \";\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n \", \";\\n \", \";\\n\"], [\"\\n position: fixed;\\n right: 0;\\n top: 0;\\n height: 100vh;\\n box-sizing: border-box;\\n will-change: auto;\\n border-radius: \", \" 0 0 \", \";\\n z-index: \", \";\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n}, function (p) {\n return p.theme.spacing.getSize(0.5);\n}, zIndex, function (p) {\n return drawerBackground(p.activeTheme);\n}, function (p) {\n return boxShadowForDarkMode(p.activeTheme);\n});\nvar Header$3 = styled.div(templateObject_2$1e || (templateObject_2$1e = __makeTemplateObject([\"\\n padding: \", \";\\n height: 100px;\\n \", \" {\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n }\\n\"], [\"\\n padding: \", \";\\n height: 100px;\\n \", \" {\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n }\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(8), \" \").concat(p.theme.spacing.getSize(6), \" 0 \").concat(p.theme.spacing.getSize(6));\n}, IconButton$2, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar FooterActions = styled.div(templateObject_3$V || (templateObject_3$V = __makeTemplateObject([\"\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 \", \";\\n\"], [\"\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n padding: 0 \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar DrawerContent = styled.div(templateObject_4$M || (templateObject_4$M = __makeTemplateObject([\"\\n padding: 0 \", \";\\n\"], [\"\\n padding: 0 \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar DrawerContentWrapper = styled.div(templateObject_5$F || (templateObject_5$F = __makeTemplateObject([\"\\n height: calc(\\n 100vh -\\n \", \"\\n );\\n\"], [\"\\n height: calc(\\n 100vh -\\n \", \"\\n );\\n\"])), function (p) {\n return p.theme.spacing.getSize(p.theme.template.drawer.header + (p.withFooter ? p.theme.template.drawer.footer : 0));\n});\nvar templateObject_1$2c, templateObject_2$1e, templateObject_3$V, templateObject_4$M, templateObject_5$F;\nvar DrawerHeader = function (props) {\n var label = props.label,\n onClose = props.onClose,\n _a = props.withClose,\n withClose = _a === void 0 ? true : _a;\n return /*#__PURE__*/React__default.createElement(Header$3, null, label && ( /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 3,\n weight: 300\n }, label)), withClose && /*#__PURE__*/React__default.createElement(IconButton, {\n label: \"Close\",\n onClick: onClose,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n }));\n};\nvar AnimatedDrawer$1 = animated(Drawer$2);\nvar Drawer$1 = function (props) {\n var _a = props.width,\n width = _a === void 0 ? 520 : _a,\n withClose = props.withClose,\n label = props.label,\n children = props.children,\n className = props.className,\n _b = props.drawerName,\n drawerName = _b === void 0 ? 'default' : _b,\n renderFooter = props.renderFooter,\n _c = props.withOverlay,\n withOverlay = _c === void 0 ? true : _c;\n var _d = useDrawer(),\n isOpen = _d.isOpen,\n setDrawerState = _d.setDrawerState;\n // We only use this IF the we are not using the overlay\n var _e = __read(React__default.useState(false), 2),\n showContent = _e[0],\n setShowContent = _e[1];\n var activeTheme = useThemeProvider().activeTheme;\n var theme = useTheme();\n var withFooter = !!renderFooter;\n var scrollbarsConfig = undefined;\n if (withFooter) {\n scrollbarsConfig = {\n type: 'SHADOW',\n showBottom: true,\n showTop: false\n };\n }\n var maxHeightOffset = theme.spacing.getSize(theme.template.drawer.header + (withFooter ? theme.template.drawer.footer : 0));\n var shadowSize = 24;\n var thisDrawerOpen = isOpen(drawerName);\n var style = useSpring({\n config: {\n mass: 1,\n tension: 300,\n friction: 32\n },\n transform: \"translateX(-\".concat(thisDrawerOpen ? width + shadowSize : 0, \"px)\"),\n width: \"\".concat(width, \"px\"),\n right: \"-\".concat(width + shadowSize, \"px\"),\n onRest: function () {\n if (!withOverlay && thisDrawerOpen === false) {\n setShowContent(false);\n }\n },\n onStart: function () {\n if (!withOverlay && thisDrawerOpen === true) {\n setShowContent(true);\n }\n }\n });\n var renderContent = function () {\n return /*#__PURE__*/React__default.createElement(Layer, {\n name: \"drawer\"\n }, /*#__PURE__*/React__default.createElement(AnimatedDrawer$1, {\n className: className,\n style: style,\n \"data-testid\": generate(['drawer'], props),\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(DrawerHeader, {\n label: label,\n withClose: withClose,\n onClose: function () {\n return setDrawerState(false, drawerName);\n }\n }), /*#__PURE__*/React__default.createElement(DrawerContentWrapper, {\n withFooter: withFooter\n }, /*#__PURE__*/React__default.createElement(ScrollableContent, {\n maxHeight: \"calc(100vh - \".concat(maxHeightOffset, \")\"),\n minHeight: 20,\n bars: scrollbarsConfig\n }, !withOverlay && !showContent ? null : /*#__PURE__*/React__default.createElement(DrawerContent, null, children))), renderFooter && /*#__PURE__*/React__default.createElement(FooterActions, null, renderFooter())));\n };\n if (withOverlay) {\n return /*#__PURE__*/React__default.createElement(Overlay$1, {\n isOpen: thisDrawerOpen\n }, renderContent());\n }\n return renderContent();\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar PageDrawer$2 = styled(Drawer$2)(templateObject_1$2b || (templateObject_1$2b = __makeTemplateObject([\"\"], [\"\"])));\nvar PageDrawerContentWrapper = styled.div(templateObject_2$1d || (templateObject_2$1d = __makeTemplateObject([\"\\n height: 100vh;\\n\"], [\"\\n height: 100vh;\\n\"])));\nvar templateObject_1$2b, templateObject_2$1d;\nvar AnimatedDrawer = animated(PageDrawer$2);\nvar tranformWidth = function (width, percentage) {\n return Math.ceil(width * percentage / 100);\n};\nvar PageDrawer$1 = function (props) {\n var children = props.children,\n className = props.className,\n _a = props.drawerName,\n drawerName = _a === void 0 ? 'default' : _a,\n _b = props.percentageWidth,\n percentageWidth = _b === void 0 ? 80 : _b,\n _c = props.withOverlay,\n withOverlay = _c === void 0 ? false : _c,\n onOverlayClose = props.onOverlayClose;\n var _d = __read(useWindowSize(), 1),\n windowWidth = _d[0];\n var _e = useDrawer(),\n isOpen = _e.isOpen,\n setDrawerState = _e.setDrawerState;\n var activeTheme = useThemeProvider().activeTheme;\n var _f = __read(React__default.useState(1000), 2),\n width = _f[0],\n setWidth = _f[1];\n var thisDrawerOpen = isOpen(drawerName);\n React__default.useEffect(function () {\n var newWidth = tranformWidth(windowWidth, percentageWidth);\n setWidth(newWidth);\n }, [percentageWidth, windowWidth]);\n React__default.useEffect(function () {\n var _a;\n if (withOverlay) {\n var clickOnOverlay_1 = function () {\n setDrawerState(false, drawerName);\n onOverlayClose && onOverlayClose();\n };\n (_a = document.getElementById('overlay')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', clickOnOverlay_1);\n return function () {\n var _a;\n (_a = document.getElementById('overlay')) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', clickOnOverlay_1);\n };\n }\n }, [drawerName, onOverlayClose, setDrawerState, withOverlay]);\n var style = useSpring({\n config: {\n mass: 1,\n tension: 300,\n friction: 32\n },\n transform: \"translateX(\".concat(thisDrawerOpen ? \"-\".concat(width, \"px\") : '0px', \")\"),\n width: \"\".concat(width, \"px\"),\n right: \"-\".concat(width, \"px\")\n });\n var renderContent = function () {\n return /*#__PURE__*/React__default.createElement(Layer, {\n name: \"drawer\"\n }, /*#__PURE__*/React__default.createElement(AnimatedDrawer, {\n className: className,\n style: style,\n \"data-testid\": generate(['page-drawer'], props),\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(PageDrawerContentWrapper, null, thisDrawerOpen ? children : null)));\n };\n if (withOverlay) {\n return /*#__PURE__*/React__default.createElement(Overlay$1, {\n isOpen: thisDrawerOpen\n }, renderContent());\n }\n return renderContent();\n};\n\n/**\r\n * @param label - (required) - string\r\n * @param width - (optional) - number\r\n * @param withClose - (optional) - boolean\r\n * @param className - (optional) - string\r\n * @param drawerName - (optional) - string\r\n * @param renderFooter - (optional) - () => React.ReactElement\r\n * @param withOverlay - (optional) - boolean\r\n */\nvar Drawer = styled(Drawer$1)(templateObject_1$2a || (templateObject_1$2a = __makeTemplateObject([\"\"], [\"\"])));\nvar PageDrawer = styled(PageDrawer$1)(templateObject_2$1c || (templateObject_2$1c = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2a, templateObject_2$1c;\nvar MenuButtonTooltip = styled(View$2)(templateObject_1$29 || (templateObject_1$29 = __makeTemplateObject([\"\\n position: absolute;\\n z-index: 100001;\\n padding: \", \" \", \";\\n border-radius: \", \";\\n background: \", \";\\n color: \", \";\\n\"], [\"\\n position: absolute;\\n z-index: 100001;\\n padding: \", \" \", \";\\n border-radius: \", \";\\n background: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.backgrounds.getValue(0) : p.activeTheme.colors.overlay;\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(3);\n});\nvar MenuButton$2 = styled(Button$3)(templateObject_4$L || (templateObject_4$L = __makeTemplateObject([\"\\n background: transparent;\\n display: flex;\\n position: relative;\\n height: \", \";\\n padding: 0 \", \";\\n margin: \", \" 0;\\n width: 100%;\\n justify-content: left;\\n border-radius: 0;\\n color: \", \";\\n\\n \", \" {\\n width: \", \";\\n font-size: \", \";\\n margin-right: \", \";\\n margin-left: 0;\\n }\\n\\n &:before {\\n content: '';\\n height: 100%;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n background: \", \";\\n transition: transform 0.4s ease-in-out;\\n transform: translateX(-100%);\\n border-radius: 0 \", \" \", \" 0;\\n }\\n\\n &:hover:before {\\n transform: translateX(-95%);\\n }\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n background: transparent;\\n display: flex;\\n position: relative;\\n height: \", \";\\n padding: 0 \", \";\\n margin: \", \" 0;\\n width: 100%;\\n justify-content: left;\\n border-radius: 0;\\n color: \", \";\\n\\n \", \" {\\n width: \", \";\\n font-size: \", \";\\n margin-right: \", \";\\n margin-left: 0;\\n }\\n\\n &:before {\\n content: '';\\n height: 100%;\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n background: \", \";\\n transition: transform 0.4s ease-in-out;\\n transform: translateX(-100%);\\n border-radius: 0 \", \" \", \" 0;\\n }\\n\\n &:hover:before {\\n transform: translateX(-95%);\\n }\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.primary.getValue(500).context;\n}, IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.info.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.isCollapsed && css(templateObject_2$1b || (templateObject_2$1b = __makeTemplateObject([\"\\n &:hover:before {\\n transform: translateX(-90%);\\n }\\n \"], [\"\\n &:hover:before {\\n transform: translateX(-90%);\\n }\\n \"])));\n}, function (p) {\n return p.isActive && css(templateObject_3$U || (templateObject_3$U = __makeTemplateObject([\"\\n color: \", \";\\n\\n &:before,\\n &:hover:before {\\n transform: translateX(\", \");\\n }\\n \"], [\"\\n color: \", \";\\n\\n &:before,\\n &:hover:before {\\n transform: translateX(\", \");\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).context;\n }, function (p) {\n return p.theme.spacing.getSize(-4);\n });\n});\nvar Content$3 = styled(View$2)(templateObject_5$E || (templateObject_5$E = __makeTemplateObject([\"\\n color: \", \";\\n position: relative;\\n display: flex;\\n align-items: center;\\n \", \";\\n\"], [\"\\n color: \", \";\\n position: relative;\\n display: flex;\\n align-items: center;\\n \", \";\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().context;\n}, function (p) {\n return contrastTextColor(p.activeTheme);\n});\nvar ButtonText = styled(View$2)(templateObject_6$v || (templateObject_6$v = __makeTemplateObject([\"\\n transform: translateX(0);\\n opacity: 1;\\n transition: all 0.5s ease-in-out;\\n \", \";\\n\"], [\"\\n transform: translateX(0);\\n opacity: 1;\\n transition: all 0.5s ease-in-out;\\n \", \";\\n\"])), function (p) {\n return contrastTextColor(p.activeTheme);\n});\nvar templateObject_1$29, templateObject_2$1b, templateObject_3$U, templateObject_4$L, templateObject_5$E, templateObject_6$v;\nvar Header$2 = styled.div(templateObject_1$28 || (templateObject_1$28 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n height: \", \";\\n border-bottom: 1px solid \", \";\\n padding: 0 \", \";\\n box-sizing: border-box;\\n position: relative;\\n transition: all 0.5s ease-in-out;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n height: \", \";\\n border-bottom: 1px solid \", \";\\n padding: 0 \", \";\\n box-sizing: border-box;\\n position: relative;\\n transition: all 0.5s ease-in-out;\\n\"])), function (p) {\n return p.theme.spacing.getSize(26);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MainNav$2 = styled.div(templateObject_3$T || (templateObject_3$T = __makeTemplateObject([\"\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n background: \", \";\\n height: 100%;\\n z-index: \", \";\\n width: 100%;\\n max-width: \", \";\\n transition: max-width 0.5s ease-in-out;\\n\\n \", \"\\n\"], [\"\\n position: fixed;\\n left: 0;\\n top: 0;\\n bottom: 0;\\n background: \", \";\\n height: 100%;\\n z-index: \", \";\\n width: 100%;\\n max-width: \", \";\\n transition: max-width 0.5s ease-in-out;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.navBackground;\n}, zIndex, function (p) {\n return p.theme.spacing.getSize(70);\n}, function (p) {\n return p.isCollapsed && css(templateObject_2$1a || (templateObject_2$1a = __makeTemplateObject([\"\\n max-width: \", \";\\n\\n \", \" {\\n opacity: 0;\\n transform: translateX(100px);\\n }\\n \"], [\"\\n max-width: \", \";\\n\\n \", \" {\\n opacity: 0;\\n transform: translateX(100px);\\n }\\n \"])), sidebarWidth, ButtonText);\n});\nvar AcinLogo$1 = styled(Logo)(templateObject_4$K || (templateObject_4$K = __makeTemplateObject([\"\\n margin-left: \", \";\\n top: 0;\\n left: 0;\\n\"], [\"\\n margin-left: \", \";\\n top: 0;\\n left: 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar AcinLogoWide$1 = styled(WideLogo$1)(templateObject_6$u || (templateObject_6$u = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 7px;\\n opacity: 1;\\n transition: opacity 0.5s ease-in-out;\\n\\n \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 7px;\\n opacity: 1;\\n transition: opacity 0.5s ease-in-out;\\n\\n \", \";\\n\"])), function (p) {\n return p.isCollapsed && css(templateObject_5$D || (templateObject_5$D = __makeTemplateObject([\"\\n opacity: 0;\\n \"], [\"\\n opacity: 0;\\n \"])));\n});\nvar Toggle = styled.button(templateObject_8$i || (templateObject_8$i = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\\n transform: rotate(180deg);\\n transition: transform 0.5s ease-in-out;\\n background: \", \";\\n border-radius: 100%;\\n border: 0;\\n padding: 0;\\n outline: 0;\\n color: \", \";\\n font-size: 0.8rem;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n z-index: calc(\", \" + 1);\\n\\n \", \"\\n\"], [\"\\n height: \", \";\\n width: \", \";\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.25);\\n transform: rotate(180deg);\\n transition: transform 0.5s ease-in-out;\\n background: \", \";\\n border-radius: 100%;\\n border: 0;\\n padding: 0;\\n outline: 0;\\n color: \", \";\\n font-size: 0.8rem;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n cursor: pointer;\\n z-index: calc(\", \" + 1);\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(23);\n}, function (p) {\n return p.theme.spacing.getSize(-3);\n}, function (p) {\n return p.theme.colors.info.getValue().main;\n}, function (p) {\n return p.theme.colors.info.getValue().context;\n}, zIndex, function (p) {\n return p.isCollapsed && css(templateObject_7$o || (templateObject_7$o = __makeTemplateObject([\"\\n transform: rotate(0);\\n \"], [\"\\n transform: rotate(0);\\n \"])));\n});\nvar LogoHolder = styled.div(templateObject_9$h || (templateObject_9$h = __makeTemplateObject([\"\\n position: relative;\\n overflow: hidden;\\n\"], [\"\\n position: relative;\\n overflow: hidden;\\n\"])));\nvar templateObject_1$28, templateObject_2$1a, templateObject_3$T, templateObject_4$K, templateObject_5$D, templateObject_6$u, templateObject_7$o, templateObject_8$i, templateObject_9$h;\nvar Menu$2 = styled.div(templateObject_1$27 || (templateObject_1$27 = __makeTemplateObject([\"\\n width: 100%;\\n\"], [\"\\n width: 100%;\\n\"])));\nvar MenuGroup$1 = styled.div(templateObject_2$19 || (templateObject_2$19 = __makeTemplateObject([\"\\n padding: \", \" 0;\\n\\n :not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"], [\"\\n padding: \", \" 0;\\n\\n :not(:first-child) {\\n border-top: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n});\nvar GroupTitle = styled(Text$3)(templateObject_3$S || (templateObject_3$S = __makeTemplateObject([\"\\n \", \";\\n padding: 0 \", \";\\n padding-bottom: \", \";\\n overflow: hidden;\\n white-space: nowrap;\\n\"], [\"\\n \", \";\\n padding: 0 \", \";\\n padding-bottom: \", \";\\n overflow: hidden;\\n white-space: nowrap;\\n\"])), function (p) {\n return contrastTextColor(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$27, templateObject_2$19, templateObject_3$S;\nvar MenuButton$1 = function (props) {\n var className = props.className,\n label = props.label,\n icon = props.icon,\n _a = props.isActive,\n isActive = _a === void 0 ? false : _a,\n onClick = props.onClick,\n isCollapsed = props.isCollapsed,\n rePositionTooltip = props.rePositionTooltip;\n var activeTheme = useThemeProvider().activeTheme;\n var containerRef = React__default.useRef(null);\n var _b = __read(React__default.useState({\n top: 0,\n left: 0\n }), 2),\n position = _b[0],\n setPosition = _b[1];\n var _c = __read(React__default.useState(false), 2),\n showTooltip = _c[0],\n setShowTooltip = _c[1];\n React__default.useEffect(function () {\n if (containerRef && containerRef.current) {\n var triggerRect = containerRef.current.getBoundingClientRect();\n setPosition({\n top: triggerRect.top,\n left: triggerRect.left\n });\n }\n }, [containerRef, rePositionTooltip]);\n return /*#__PURE__*/React__default.createElement(MenuButton$2, {\n onClick: onClick,\n \"data-testid\": generate(['menu-button', \"\".concat(isActive ? 'menu-button--active' : '')], props),\n className: className,\n isActive: isActive,\n isCollapsed: isCollapsed,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Content$3, {\n activeTheme: activeTheme,\n ref: containerRef,\n onMouseOver: function () {\n return setShowTooltip(true);\n },\n onMouseLeave: function () {\n return setShowTooltip(false);\n }\n }, icon(), /*#__PURE__*/React__default.createElement(ButtonText, {\n activeTheme: activeTheme\n }, label), isCollapsed && showTooltip && ( /*#__PURE__*/React__default.createElement(Portal, null, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"tooltip\"\n }, /*#__PURE__*/React__default.createElement(MenuButtonTooltip, {\n style: {\n top: position.top,\n left: position.left + 60\n },\n activeTheme: activeTheme\n }, label))))));\n};\nvar MenuGroup = function (props) {\n var className = props.className,\n onClick = props.onClick,\n items = props.items,\n header = props.header,\n headerAbbr = props.headerAbbr,\n activeItem = props.activeItem,\n isCollapsed = props.isCollapsed,\n rePositionTooltip = props.rePositionTooltip;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(MenuGroup$1, {\n \"data-testid\": generate(['main-nav__menu__group'], props),\n className: className\n }, header && ( /*#__PURE__*/React__default.createElement(GroupTitle, {\n activeTheme: activeTheme,\n size: -1\n }, isCollapsed ? headerAbbr : header)), items.map(function (item) {\n return /*#__PURE__*/React__default.createElement(MenuButton$1, {\n key: item.label,\n label: item.label,\n icon: item.icon,\n isActive: item.id === activeItem,\n onClick: function () {\n return onClick(item);\n },\n isCollapsed: isCollapsed,\n rePositionTooltip: rePositionTooltip\n });\n }));\n};\nvar Menu$1 = function (props) {\n var className = props.className,\n onClick = props.onClick,\n items = props.items,\n activeItem = props.activeItem,\n isCollapsed = props.isCollapsed,\n rePositionTooltip = props.rePositionTooltip;\n return /*#__PURE__*/React__default.createElement(Menu$2, {\n \"data-testid\": generate(['main-nav__menu'], props),\n className: className\n }, items.map(function (group, index) {\n return /*#__PURE__*/React__default.createElement(MenuGroup, {\n key: index,\n header: group.header,\n headerAbbr: group.headerAbbr,\n items: group.items,\n activeItem: activeItem,\n onClick: onClick,\n isCollapsed: isCollapsed,\n rePositionTooltip: rePositionTooltip\n });\n }));\n};\nvar MainNav$1 = function (props) {\n var className = props.className,\n navigation = props.navigation,\n onNavigationClick = props.onNavigationClick,\n activeItem = props.activeItem,\n renderFooter = props.renderFooter,\n _a = props.isCollapsed,\n isCollapsed = _a === void 0 ? true : _a,\n onLogoClick = props.onLogoClick;\n var theme = useTheme();\n var contentHeight = \"calc(100% - \".concat(theme.spacing.getSize(62), \")\");\n var _b = __read(React__default.useState(isCollapsed), 2),\n collapsed = _b[0],\n setCollapsed = _b[1];\n var _c = __read(React__default.useState(false), 2),\n hasScrolled = _c[0],\n setHasScrolled = _c[1];\n var onMenuScroll = function () {\n setHasScrolled(function (prev) {\n return !prev;\n });\n };\n return /*#__PURE__*/React__default.createElement(Layer$1, {\n name: \"nav\"\n }, /*#__PURE__*/React__default.createElement(MainNav$2, {\n \"data-testid\": generate(['main-nav', \"main-nav--collapsed-\".concat(collapsed)], props),\n className: className,\n isCollapsed: collapsed\n }, /*#__PURE__*/React__default.createElement(Header$2, null, /*#__PURE__*/React__default.createElement(LogoHolder, null, /*#__PURE__*/React__default.createElement(AcinLogo$1, {\n size: \"x-large\",\n onClick: onLogoClick\n }), /*#__PURE__*/React__default.createElement(AcinLogoWide$1, {\n isCollapsed: collapsed,\n onClick: onLogoClick\n })), /*#__PURE__*/React__default.createElement(Toggle, {\n isCollapsed: collapsed,\n title: isCollapsed ? 'Expand menu' : 'Collapse menu',\n onClick: function () {\n return setCollapsed(!collapsed);\n }\n }, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null))), /*#__PURE__*/React__default.createElement(Scrollbars, {\n style: {\n height: contentHeight\n },\n onScroll: onMenuScroll\n }, /*#__PURE__*/React__default.createElement(Menu$1, {\n items: navigation,\n onClick: onNavigationClick,\n activeItem: activeItem,\n isCollapsed: collapsed,\n rePositionTooltip: hasScrolled\n })), renderFooter(collapsed)));\n};\nvar Footer$3 = styled.div(templateObject_1$26 || (templateObject_1$26 = __makeTemplateObject([\"\\n border-top: 1px solid \", \";\\n\"], [\"\\n border-top: 1px solid \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(0);\n});\nvar FooterUser = styled.div(templateObject_3$R || (templateObject_3$R = __makeTemplateObject([\"\\n color: \", \";\\n height: \", \";\\n padding: 0 \", \";\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n align-items: center;\\n box-sizing: border-box;\\n\\n justify-content: center;\\n\\n \", \"\\n\"], [\"\\n color: \", \";\\n height: \", \";\\n padding: 0 \", \";\\n display: flex;\\n flex-direction: row;\\n justify-content: start;\\n align-items: center;\\n box-sizing: border-box;\\n\\n justify-content: center;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().context;\n}, function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.isCollapsed && css(templateObject_2$18 || (templateObject_2$18 = __makeTemplateObject([\"\\n padding: 0 \", \";\\n \"], [\"\\n padding: 0 \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(6);\n });\n});\nvar User = styled.div(templateObject_4$J || (templateObject_4$J = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n max-width: calc(100% - \", \"); // 100% - settings area\\n flex: 1;\\n justify-content: start;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n width: 100%;\\n max-width: calc(100% - \", \"); // 100% - settings area\\n flex: 1;\\n justify-content: start;\\n align-items: center;\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar UserDetails = styled.div(templateObject_5$C || (templateObject_5$C = __makeTemplateObject([\"\\n padding: 0 \", \";\\n width: calc(100% - \", \");\\n box-sizing: border-box;\\n \", \" {\\n color: white;\\n }\\n\"], [\"\\n padding: 0 \", \";\\n width: calc(100% - \", \");\\n box-sizing: border-box;\\n \", \" {\\n color: white;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, Text$3);\nvar Name$1 = styled.div(templateObject_6$t || (templateObject_6$t = __makeTemplateObject([\"\"], [\"\"])));\nvar Company = styled.div(templateObject_7$n || (templateObject_7$n = __makeTemplateObject([\"\\n font-weight: 300;\\n\"], [\"\\n font-weight: 300;\\n\"])));\nvar MenuItemWrapper = styled.div(templateObject_8$h || (templateObject_8$h = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar DownloadListAbsolute = styled.div(templateObject_9$g || (templateObject_9$g = __makeTemplateObject([\"\\n padding: 0;\\n position: absolute;\\n right: -344px;\\n bottom: 0;\\n\"], [\"\\n padding: 0;\\n position: absolute;\\n right: -344px;\\n bottom: 0;\\n\"])));\nvar Item$2 = styled(MenuGroup)(templateObject_10$c || (templateObject_10$c = __makeTemplateObject([\"\\n padding: 0;\\n\"], [\"\\n padding: 0;\\n\"])));\nvar templateObject_1$26, templateObject_2$18, templateObject_3$R, templateObject_4$J, templateObject_5$C, templateObject_6$t, templateObject_7$n, templateObject_8$h, templateObject_9$g, templateObject_10$c;\nvar Footer$2 = function (props) {\n var className = props.className,\n user = props.user,\n menuItems = props.menuItems,\n items = props.items,\n onMenuClick = props.onMenuClick,\n onOpenSettings = props.onOpenSettings,\n onItemClick = props.onItemClick,\n isCollapsed = props.isCollapsed;\n if (!user) return null;\n var renderItems = function () {\n if (!items || items && items.length === 0) return null;\n return items.map(function (item) {\n return /*#__PURE__*/React__default.createElement(MenuItemWrapper, {\n key: item.id\n }, /*#__PURE__*/React__default.createElement(Item$2, {\n isCollapsed: isCollapsed,\n items: [{\n id: item.id,\n label: item.label,\n icon: item.icon\n }],\n onClick: function () {\n onItemClick && onItemClick(item);\n }\n }), (item === null || item === void 0 ? void 0 : item.showChildId) && (item === null || item === void 0 ? void 0 : item.child) && ( /*#__PURE__*/React__default.createElement(DownloadListAbsolute, null, item.child())));\n });\n };\n return /*#__PURE__*/React__default.createElement(Footer$3, {\n \"data-testid\": generate(['main-nav__footer'], props),\n className: className\n }, renderItems(), /*#__PURE__*/React__default.createElement(FooterUser, {\n isCollapsed: isCollapsed\n }, !isCollapsed && ( /*#__PURE__*/React__default.createElement(User, null, /*#__PURE__*/React__default.createElement(Avatar, {\n name: user.name,\n image: user.image\n }), /*#__PURE__*/React__default.createElement(UserDetails, null, /*#__PURE__*/React__default.createElement(Name$1, null, /*#__PURE__*/React__default.createElement(Text$1, {\n size: 1,\n ellipsis: true\n }, user.name)), /*#__PURE__*/React__default.createElement(Company, null, /*#__PURE__*/React__default.createElement(Text$1, {\n ellipsis: true\n }, user.accountName))))), /*#__PURE__*/React__default.createElement(View, null, menuItems && onMenuClick && ( /*#__PURE__*/React__default.createElement(IconButton, {\n onMouseDown: onOpenSettings,\n \"data-testid\": generate(['main-nav__footer__settings'], props),\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgSettings, {\n color: \"white\"\n });\n },\n label: \"Settings\",\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React__default.createElement(DropdownMenu, {\n onClick: function (item) {\n onClose();\n onMenuClick(item);\n },\n items: menuItems\n });\n }\n })))));\n};\n\n/**\r\n @param isCollapsed - (required) - boolean\r\n @param navigation - (required) - Array<{ header?: string; headerAbbr?: string; items: MenuItem[]; }>\r\n @param onNavigationClick - (required) - (item: MenuItem) => void\r\n @param renderFooter - (required) - (isCollapsed: boolean) => React.ReactElement\r\n @param activeItem - (optional) - string\r\n @param className - (optional) - string\r\n */\nvar MainNav = styled(MainNav$1)(templateObject_1$25 || (templateObject_1$25 = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param isCollapsed - (required) - boolean\r\n @param className - (optional) - string\r\n @param user - (optional) - { name: string; image?: string; accountName: string; }\r\n @param menuItems - (optional) - Array<{ id: string; label: string;} >\r\n @param onMenuClick - (optional) - (item: FooterMenuItem) => void\r\n */\nvar MainNavFooter = styled(Footer$2)(templateObject_2$17 || (templateObject_2$17 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$25, templateObject_2$17;\nvar UPLOAD_STATUS$3 = {\n DEFAULT: 'default',\n LOADING: 'loading',\n SUCCESS: 'success',\n ERROR: 'error',\n WARNING: 'warning'\n};\nvar borderColors = css(templateObject_1$24 || (templateObject_1$24 = __makeTemplateObject([\"\\n border: 1px dashed\\n \", \";\\n\"], [\"\\n border: 1px dashed\\n \", \";\\n\"])), function (p) {\n if (p.status === UPLOAD_STATUS$3.LOADING || p.isDragActive || p.isDragAccept) {\n return p.theme.colors.primary.getValue(600).main;\n }\n if (p.status === UPLOAD_STATUS$3.SUCCESS) {\n return p.theme.colors.success.getValue().main;\n }\n if (p.status === UPLOAD_STATUS$3.WARNING) {\n return p.theme.colors.warning.getValue().main;\n }\n return p.theme.colors.borders.getValue(1);\n});\n// This named style should be the wrapper for the component i.e. the module\nvar DragDropUpload$2 = styled.div(templateObject_2$16 || (templateObject_2$16 = __makeTemplateObject([\"\\n height: 200px;\\n width: 100%;\\n \", \"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n padding: 0 \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n\"], [\"\\n height: 200px;\\n width: 100%;\\n \", \"\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n position: relative;\\n padding: 0 \", \";\\n box-sizing: border-box;\\n cursor: pointer;\\n\"])), borderColors, function (p) {\n return p.theme.spacing.getSize(20);\n});\nvar Wrapper$3 = styled.div(templateObject_3$Q || (templateObject_3$Q = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: left;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: left;\\n align-items: center;\\n\"])));\nvar Message$2 = styled.div(templateObject_4$I || (templateObject_4$I = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar IconWrapper$3 = styled.div(templateObject_5$B || (templateObject_5$B = __makeTemplateObject([\"\\n color: \", \";\\n font-size: \", \";\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\"], [\"\\n color: \", \";\\n font-size: \", \";\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$24, templateObject_2$16, templateObject_3$Q, templateObject_4$I, templateObject_5$B;\nvar DefaultMessage = function (props) {\n var isDragAccept = props.isDragAccept,\n message = props.message,\n optionalText = props.optionalText;\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(IconWrapper$3, null, isDragAccept ? /*#__PURE__*/React__default.createElement(MemoSvgFolderOpen, null) : /*#__PURE__*/React__default.createElement(MemoSvgFolderClosed, null)), /*#__PURE__*/React__default.createElement(Message$2, null, /*#__PURE__*/React__default.createElement(Heading$3, {\n weight: 300,\n size: 2\n }, optionalText ? optionalText : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, \"Drag a file here or browse for a file to upload\")), message && /*#__PURE__*/React__default.createElement(Heading$3, {\n weight: 300\n }, message)));\n};\nvar UPLOAD_STATUS$2 = UPLOAD_STATUS$3;\nvar DragDropUpload$1 = function (props) {\n var onAddFiles = props.onAddFiles,\n renderProgress = props.renderProgress,\n className = props.className,\n supportedTypes = props.supportedTypes,\n _a = props.maxFiles,\n maxFiles = _a === void 0 ? 1 : _a,\n _b = props.status,\n status = _b === void 0 ? UPLOAD_STATUS$2.DEFAULT : _b,\n uploadMessage = props.uploadMessage,\n optionalText = props.optionalText,\n onDropRejected = props.onDropRejected;\n var disabled = status && [UPLOAD_STATUS$2.SUCCESS, UPLOAD_STATUS$2.LOADING].includes(status);\n var onDrop = React__default.useCallback(function (acceptedFiles) {\n if (acceptedFiles.length > 0) {\n onAddFiles(acceptedFiles);\n }\n }, [onAddFiles]);\n var _c = useDropzone({\n accept: supportedTypes,\n maxFiles: maxFiles,\n onDrop: onDrop,\n onDropRejected: onDropRejected,\n disabled: disabled,\n noClick: true,\n noKeyboard: true\n }),\n getRootProps = _c.getRootProps,\n getInputProps = _c.getInputProps,\n isDragActive = _c.isDragActive,\n isDragAccept = _c.isDragAccept,\n isDragReject = _c.isDragReject,\n open = _c.open;\n return /*#__PURE__*/React__default.createElement(DragDropUpload$2, __assign({}, getRootProps({\n isDragActive: isDragActive,\n isDragAccept: isDragAccept,\n isDragReject: isDragReject\n }), {\n status: status,\n \"data-testid\": generate(['drag-drop-upload', \"drag-drop-upload--\".concat(status)], props),\n className: className,\n onClick: !disabled ? function () {\n return open();\n } : undefined\n }), /*#__PURE__*/React__default.createElement(\"input\", __assign({}, getInputProps(), {\n disabled: disabled,\n \"data-testid\": \"drag-drop-upload__input\"\n })), renderProgress ? renderProgress() : ( /*#__PURE__*/React__default.createElement(Wrapper$3, null, /*#__PURE__*/React__default.createElement(DefaultMessage, {\n isDragAccept: isDragActive,\n message: uploadMessage,\n optionalText: optionalText\n }))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ProgressBar$3 = styled.div(templateObject_1$23 || (templateObject_1$23 = __makeTemplateObject([\"\\n background: \", \";\\n border-radius: \", \";\\n height: \", \";\\n width: 100%;\\n position: relative;\\n\"], [\"\\n background: \", \";\\n border-radius: \", \";\\n height: \", \";\\n width: 100%;\\n position: relative;\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n switch (p.size) {\n case 'xsmall':\n return p.theme.spacing.getSize(1);\n case 'small':\n return p.theme.spacing.getSize(2);\n default:\n case 'default':\n return p.theme.spacing.getSize(4);\n }\n});\nvar ProgressValue = styled.div(templateObject_2$15 || (templateObject_2$15 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n border-radius: \", \";\\n background: \", \";\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n height: 100%;\\n border-radius: \", \";\\n background: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.color;\n});\nvar templateObject_1$23, templateObject_2$15;\nvar AnimatedBar = animated(ProgressValue);\nvar Bar = function (props) {\n var data = props.data;\n var value = data.value,\n color = data.color;\n var style = useSpring({\n width: \"\".concat(value, \"%\")\n });\n return /*#__PURE__*/React__default.createElement(AnimatedBar, {\n style: style,\n color: color,\n \"data-testid\": generate(['progress-bar', \"progress-bar--\".concat(value)], props)\n });\n};\nvar ProgressBar$2 = function (props) {\n var className = props.className,\n _a = props.size,\n size = _a === void 0 ? 'default' : _a,\n data = props.data;\n var testIds = data.map(function (item) {\n return \"progress-bar--\".concat(item.value);\n });\n return /*#__PURE__*/React__default.createElement(ProgressBar$3, {\n \"data-testid\": generate(__spreadArray(['progress-bar'], __read(testIds), false), props),\n className: className,\n size: size\n }, data === null || data === void 0 ? void 0 : data.map(function (bar, index) {\n return /*#__PURE__*/React__default.createElement(Bar, {\n key: index,\n data: bar\n });\n }));\n};\n\n/**\r\n @param data - (required) - Array<{ color: string; value: number;}>\r\n @param className - (optional) string\r\n @param size - (optional) 'default' | 'small'\r\n */\nvar ProgressBar$1 = styled(ProgressBar$2)(templateObject_1$22 || (templateObject_1$22 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$22;\nvar UploadingContent$2 = styled.div(templateObject_1$21 || (templateObject_1$21 = __makeTemplateObject([\"\\n width: 100%;\\n box-sizing: border-box;\\n\"], [\"\\n width: 100%;\\n box-sizing: border-box;\\n\"])));\nvar FileListWrapper = styled.div(templateObject_2$14 || (templateObject_2$14 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n display: flex;\\n justify-content: space-between;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar FileList = styled.div(templateObject_3$P || (templateObject_3$P = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar FileListPercentage = styled.div(templateObject_4$H || (templateObject_4$H = __makeTemplateObject([\"\"], [\"\"])));\nvar CloseButtonWrapper = styled.div(templateObject_5$A || (templateObject_5$A = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"], [\"\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Warning = styled.div(templateObject_6$s || (templateObject_6$s = __makeTemplateObject([\"\\n display: flex;\\n color: \", \";\\n margin-top: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n display: flex;\\n color: \", \";\\n margin-top: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.warning.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, IconWrapper$4, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$21, templateObject_2$14, templateObject_3$P, templateObject_4$H, templateObject_5$A, templateObject_6$s;\n\n/* eslint-disable react/jsx-props-no-spreading */\nvar UPLOAD_STATUS$1 = UPLOAD_STATUS$3;\nvar UploadingContent$1 = function (props) {\n var theme = useTheme();\n var files = props.files,\n _a = props.percentage,\n percentage = _a === void 0 ? 0 : _a,\n isLargeUpload = props.isLargeUpload,\n _b = props.hideUploadStatusWithNotification,\n hideUploadStatusWithNotification = _b === void 0 ? false : _b,\n notification = props.notification,\n status = props.status,\n onClose = props.onClose;\n if (hideUploadStatusWithNotification && notification) {\n return /*#__PURE__*/React__default.createElement(UploadingContent$2, null, notification);\n }\n var handleClose = function (event) {\n // We need to stop the event hitting the file input\n // as this would trigger the upload picker when clicking close\n event.preventDefault();\n event.stopPropagation();\n onClose();\n };\n var progressBarData = {\n value: percentage,\n color: status === UPLOAD_STATUS$1.SUCCESS ? theme.colors.success.getValue().main : theme.colors.primary.getValue().main\n };\n return /*#__PURE__*/React__default.createElement(UploadingContent$2, {\n \"data-testid\": generate(['drag-drop-upload__upload_content', \"drag-drop-upload__upload_content--\".concat(status)], props)\n }, /*#__PURE__*/React__default.createElement(CloseButtonWrapper, null, /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"drag-drop-upload__close\",\n label: \"close\",\n size: \"small\",\n onClick: handleClose,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n })), notification || undefined, /*#__PURE__*/React__default.createElement(FileListWrapper, null, /*#__PURE__*/React__default.createElement(FileList, null, /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\"\n }, files.join(' | '))), percentage === 0 ? ( /*#__PURE__*/React__default.createElement(FileListPercentage, null, /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\"\n }, \"File Processing \", /*#__PURE__*/React__default.createElement(MemoSvgLoader, null)))) : ( /*#__PURE__*/React__default.createElement(FileListPercentage, null, /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\"\n }, percentage, \"%\")))), /*#__PURE__*/React__default.createElement(ProgressBar$1, {\n data: [progressBarData]\n }), isLargeUpload && ( /*#__PURE__*/React__default.createElement(Warning, null, /*#__PURE__*/React__default.createElement(MemoSvgAlertWarning, null), /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\",\n weight: 500\n }, \"Large File Detected.\"), \"\\u00A0\", /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\"\n }, \"This file may take a long time to upload.\", ' ', /*#__PURE__*/React__default.createElement(Link, {\n href: \"#\",\n newWindow: true\n }, \"How can I reduce the size?\")))));\n};\n\n/**\r\n * @param uploadMessage - (required) - string\r\n * @param onAddFiles - (required) - (files: File[]) => void\r\n * @param className - (optional) - string\r\n * @param supportedTypes - (optional) - string\r\n * @param maxFiles - (optional) - number\r\n * @param onClearFiles - (optional) - () => void\r\n * @param renderProgress - (optional) - () => React.ReactElement\r\n * @param status - (optional) - SC.Status\r\n */\nvar DragDropUpload = styled(DragDropUpload$1)(templateObject_1$20 || (templateObject_1$20 = __makeTemplateObject([\"\"], [\"\"])));\nvar UPLOAD_STATUS = UPLOAD_STATUS$3;\n/**\r\n * @param files - (required) - string[]\r\n * @param onClose - (required) - () => void\r\n * @param percentage - (optional) - number\r\n * @param isLargeUpload - (optional) - boolean\r\n * @param notification - (optional) - React.ReactElement\r\n * @param hideUploadStatusWithNotification - (optional) - boolean\r\n * @param status - (optional) - Status\r\n */\nvar UploadingContent = styled(UploadingContent$1)(templateObject_2$13 || (templateObject_2$13 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$20, templateObject_2$13;\nvar Notification$2 = styled.div(templateObject_4$G || (templateObject_4$G = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n switch (p.status) {\n case 'success':\n return css(templateObject_1$1$ || (templateObject_1$1$ = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.theme.colors.success.getValue().main);\n case 'error':\n return css(templateObject_2$12 || (templateObject_2$12 = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.theme.colors.error.getValue().main);\n case 'warning':\n return css(templateObject_3$O || (templateObject_3$O = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.theme.colors.warning.getValue().main);\n }\n});\nvar Header$1 = styled.div(templateObject_5$z || (templateObject_5$z = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n align-items: start;\\n \", \" {\\n margin-left: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n align-items: start;\\n \", \" {\\n margin-left: \", \";\\n }\\n\"])), Heading$2, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Message$1 = styled.div(templateObject_6$r || (templateObject_6$r = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1$, templateObject_2$12, templateObject_3$O, templateObject_4$G, templateObject_5$z, templateObject_6$r;\nvar Notification$1 = function (props) {\n var className = props.className,\n title = props.title,\n status = props.status,\n message = props.message;\n var getStatusIcon = function () {\n switch (status) {\n case 'success':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertSuccess, {\n size: \"large\"\n });\n case 'error':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertError, {\n size: \"large\"\n });\n case 'warning':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertWarning, {\n size: \"large\"\n });\n }\n };\n return /*#__PURE__*/React__default.createElement(Notification$2, {\n status: status,\n \"data-testid\": generate(['notification', \"notification--\".concat(status)], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Header$1, null, getStatusIcon(), /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 2,\n weight: 500\n }, title)), message && ( /*#__PURE__*/React__default.createElement(Message$1, null, /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 1,\n weight: 400,\n variant: \"secondary\"\n }, message))));\n};\n\n/**\r\n @param status - (required) - 'success' | 'error' | 'warning'\r\n @param title - (required) - string\r\n @param message - (optional) - React.ReactElement\r\n @param className - (optional) - string\r\n */\nvar Notification = styled(Notification$1)(templateObject_1$1_ || (templateObject_1$1_ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1_;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DataTable$2 = styled.div(templateObject_1$1Z || (templateObject_1$1Z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1Z;\nvar Favourite$2 = styled.button(templateObject_1$1Y || (templateObject_1$1Y = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n font-size: 1.3rem;\\n background: transparent;\\n border: 0;\\n padding: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n color: \", \";\\n\\n &:focus {\\n outline: 0;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"], [\"\\n height: \", \";\\n width: \", \";\\n font-size: 1.3rem;\\n background: transparent;\\n border: 0;\\n padding: 0;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n color: \", \";\\n\\n &:focus {\\n outline: 0;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar templateObject_1$1Y;\nvar Favourite$1 = function (props) {\n var className = props.className,\n value = props.value,\n onClick = props.onClick,\n id = props.id,\n _a = props.size,\n size = _a === void 0 ? 'default' : _a;\n return /*#__PURE__*/React__default.createElement(Favourite$2, {\n title: value ? 'Unfavourite' : 'Favourite',\n id: id,\n \"data-testid\": generate(['favourite', \"favourite--\".concat(value)], props),\n className: className,\n onClick: onClick\n }, value ? ( /*#__PURE__*/React__default.createElement(MemoSvgFavouriteYes, {\n size: size,\n \"data-testid\": \"icon--favourite-true\"\n })) : ( /*#__PURE__*/React__default.createElement(MemoSvgFavouriteNo, {\n size: size,\n \"data-testid\": \"icon--favourite-false\"\n })));\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param id - (optional) - string\r\n * @param value - (optional) - boolean\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar Favourite = styled(Favourite$1)(templateObject_1$1X || (templateObject_1$1X = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1X;\nvar Table$1 = styled.table(templateObject_1$1W || (templateObject_1$1W = __makeTemplateObject([\"\\n text-align: left;\\n line-height: \", \";\\n \", \";\\n width: 100%;\\n\"], [\"\\n text-align: left;\\n line-height: \", \";\\n \", \";\\n width: 100%;\\n\"])), function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.activeTheme && containerBackground(p.activeTheme);\n});\nvar THead$1 = styled.thead(templateObject_2$11 || (templateObject_2$11 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar TBody$1 = styled.tbody(templateObject_3$N || (templateObject_3$N = __makeTemplateObject([\"\\n border-top: 0;\\n box-sizing: border-box;\\n color: \", \";\\n\"], [\"\\n border-top: 0;\\n box-sizing: border-box;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar Cell$2 = styled.td(templateObject_10$b || (templateObject_10$b = __makeTemplateObject([\"\\n \", \"\\n vertical-align: middle;\\n color: inherit;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n \", \"\\n vertical-align: middle;\\n color: inherit;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n switch (p.size) {\n case 'extraSmall':\n return css(templateObject_4$F || (templateObject_4$F = __makeTemplateObject([\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"], [\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n }, p.theme.spacing.getSize(0.5), p.theme.spacing.getSize(1));\n case 'small':\n return css(templateObject_5$y || (templateObject_5$y = __makeTemplateObject([\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"], [\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n }, p.theme.spacing.getSize(1), p.theme.spacing.getSize(2));\n case 'large':\n default:\n return css(templateObject_6$q || (templateObject_6$q = __makeTemplateObject([\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"], [\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(0);\n }, p.theme.spacing.getSize(2), p.theme.spacing.getSize(2));\n }\n}, function (p) {\n return p.alignContent && css(templateObject_7$m || (templateObject_7$m = __makeTemplateObject([\"\\n text-align: \", \";\\n \"], [\"\\n text-align: \", \";\\n \"])), p.alignContent);\n}, function (p) {\n return p.width && css(templateObject_8$g || (templateObject_8$g = __makeTemplateObject([\"\\n max-width: \", \";\\n \"], [\"\\n max-width: \", \";\\n \"])), p.width);\n}, function (p) {\n return p.noWrap && css(templateObject_9$f || (templateObject_9$f = __makeTemplateObject([\"\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n max-width: 0px;\\n \"], [\"\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n max-width: 0px;\\n \"])));\n});\nvar SortIcon$1 = styled.span(templateObject_12$7 || (templateObject_12$7 = __makeTemplateObject([\"\\n margin-left: \", \";\\n \", \"\\n\"], [\"\\n margin-left: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.inactive && css(templateObject_11$8 || (templateObject_11$8 = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), p.theme.colors.text.getValue(2));\n});\nvar TextWrapper$1 = styled.div(templateObject_14$5 || (templateObject_14$5 = __makeTemplateObject([\"\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n\\n \", \"\\n\"], [\"\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n\\n \", \"\\n\"])), function (p) {\n return p.wrapText && css(templateObject_13$6 || (templateObject_13$6 = __makeTemplateObject([\"\\n white-space: pre-wrap;\\n \"], [\"\\n white-space: pre-wrap;\\n \"])));\n});\nvar FlexWrapper = styled(View)(templateObject_18$3 || (templateObject_18$3 = __makeTemplateObject([\"\\n display: flex;\\n font-weight: 600;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n font-weight: 600;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.justifyContent && css(templateObject_15$5 || (templateObject_15$5 = __makeTemplateObject([\"\\n justify-content: \", \";\\n \"], [\"\\n justify-content: \", \";\\n \"])), p.justifyContent);\n}, function (p) {\n switch (p.size) {\n case 'extraSmall':\n case 'small':\n return css(templateObject_16$4 || (templateObject_16$4 = __makeTemplateObject([\"\\n font-size: \", \";\\n \"], [\"\\n font-size: \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n });\n case 'large':\n default:\n return css(templateObject_17$4 || (templateObject_17$4 = __makeTemplateObject([\"\\n font-size: \", \";\\n \"], [\"\\n font-size: \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(0);\n });\n }\n});\nvar HeadCell$3 = styled.th(templateObject_26$1 || (templateObject_26$1 = __makeTemplateObject([\"\\n \", \"\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n font-weight: 500;\\n vertical-align: middle;\\n\\n \", \"\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n :hover {\\n \", \" {\\n transition: color 0.3s ease;\\n color: \", \";\\n }\\n }\\n\"], [\"\\n \", \"\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n font-weight: 500;\\n vertical-align: middle;\\n\\n \", \"\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n :hover {\\n \", \" {\\n transition: color 0.3s ease;\\n color: \", \";\\n }\\n }\\n\"])), function (p) {\n switch (p.size) {\n case 'extraSmall':\n return css(templateObject_19$2 || (templateObject_19$2 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n \"], [\"\\n padding: \", \" \", \";\\n \"])), p.theme.spacing.getSize(0.5), p.theme.spacing.getSize(1));\n case 'small':\n return css(templateObject_20$2 || (templateObject_20$2 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n \"], [\"\\n padding: \", \" \", \";\\n \"])), p.theme.spacing.getSize(1), p.theme.spacing.getSize(2));\n case 'large':\n default:\n return css(templateObject_21$2 || (templateObject_21$2 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n \"], [\"\\n padding: \", \" \", \";\\n \"])), p.theme.spacing.getSize(2), p.theme.spacing.getSize(2));\n }\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.positionRelative && css(templateObject_22$1 || (templateObject_22$1 = __makeTemplateObject([\"\\n position: relative;\\n \"], [\"\\n position: relative;\\n \"])));\n}, FlexWrapper, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.alignContent && css(templateObject_23$1 || (templateObject_23$1 = __makeTemplateObject([\"\\n text-align: \", \";\\n \"], [\"\\n text-align: \", \";\\n \"])), p.alignContent);\n}, function (p) {\n return p.width && css(templateObject_24$1 || (templateObject_24$1 = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), p.width);\n}, function (p) {\n return p.sortable && css(templateObject_25$1 || (templateObject_25$1 = __makeTemplateObject([\"\\n cursor: pointer;\\n \"], [\"\\n cursor: pointer;\\n \"])));\n}, SortIcon$1, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar Row$3 = styled.tr(templateObject_28$1 || (templateObject_28$1 = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n\\n \", \"\\n\"], [\"\\n border-bottom: 1px solid \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.isInteractive && css(templateObject_27$1 || (templateObject_27$1 = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n background: \", \";\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n});\nvar FavouriteCell$1 = styled(Cell$2)(templateObject_29$1 || (templateObject_29$1 = __makeTemplateObject([\"\\n padding: 0;\\n\"], [\"\\n padding: 0;\\n\"])));\nvar DeleteCell$1 = styled(Cell$2)(templateObject_30$1 || (templateObject_30$1 = __makeTemplateObject([\"\\n padding: 0;\\n\"], [\"\\n padding: 0;\\n\"])));\nvar Star$1 = styled(Favourite)(templateObject_31$1 || (templateObject_31$1 = __makeTemplateObject([\"\\n padding: \", \";\\n box-sizing: content-box;\\n\"], [\"\\n padding: \", \";\\n box-sizing: content-box;\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(2));\n});\nvar templateObject_1$1W, templateObject_2$11, templateObject_3$N, templateObject_4$F, templateObject_5$y, templateObject_6$q, templateObject_7$m, templateObject_8$g, templateObject_9$f, templateObject_10$b, templateObject_11$8, templateObject_12$7, templateObject_13$6, templateObject_14$5, templateObject_15$5, templateObject_16$4, templateObject_17$4, templateObject_18$3, templateObject_19$2, templateObject_20$2, templateObject_21$2, templateObject_22$1, templateObject_23$1, templateObject_24$1, templateObject_25$1, templateObject_26$1, templateObject_27$1, templateObject_28$1, templateObject_29$1, templateObject_30$1, templateObject_31$1;\n\n// This named style should be the wrapper for the component i.e. the module\nvar CardTable = styled(View)(templateObject_1$1V || (templateObject_1$1V = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n\"])));\nvar Row$2 = styled(View)(templateObject_3$M || (templateObject_3$M = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n align-items: stretch;\\n border-radius: \", \";\\n margin-top: \", \";\\n \", \"\\n \", \"\\n height: \", \";\\n align-items: center;\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n width: 100%;\\n align-items: stretch;\\n border-radius: \", \";\\n margin-top: \", \";\\n \", \"\\n \", \"\\n height: \", \";\\n align-items: center;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize();\n}, boxShadow, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.isInteractive && css(templateObject_2$10 || (templateObject_2$10 = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n background: \", \";\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n});\nvar Header = styled(View)(templateObject_4$E || (templateObject_4$E = __makeTemplateObject([\"\\n font-weight: 500;\\n display: flex;\\n width: 100%;\\n\"], [\"\\n font-weight: 500;\\n display: flex;\\n width: 100%;\\n\"])));\nvar Cell$1 = styled(View)(templateObject_12$6 || (templateObject_12$6 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n display: block;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \" \\n \\n \", \"\\n\"], [\"\\n padding: \", \" \", \";\\n display: block;\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \" \\n \\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.width && css(templateObject_5$x || (templateObject_5$x = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), p.width);\n}, function (p) {\n return p.maxWidth && css(templateObject_6$p || (templateObject_6$p = __makeTemplateObject([\"\\n max-width: \", \";\\n \"], [\"\\n max-width: \", \";\\n \"])), p.maxWidth);\n}, function (p) {\n return p.minWidth && css(templateObject_7$l || (templateObject_7$l = __makeTemplateObject([\"\\n min-width: \", \";\\n \"], [\"\\n min-width: \", \";\\n \"])), p.minWidth);\n}, function (p) {\n return p.alignContent && css(templateObject_8$f || (templateObject_8$f = __makeTemplateObject([\"\\n text-align: \", \";\\n \"], [\"\\n text-align: \", \";\\n \"])), p.alignContent);\n}, function (p) {\n return p.noWrap && css(templateObject_9$e || (templateObject_9$e = __makeTemplateObject([\"\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n \"], [\"\\n overflow: hidden;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n \"])));\n}, function (p) {\n switch (p.size) {\n case 'small':\n return css(templateObject_10$a || (templateObject_10$a = __makeTemplateObject([\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"], [\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(-1);\n }, p.theme.spacing.getSize(1), p.theme.spacing.getSize(2));\n case 'large':\n default:\n return css(templateObject_11$7 || (templateObject_11$7 = __makeTemplateObject([\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"], [\"\\n font-size: \", \";\\n padding: \", \" \", \";\\n \"])), function (p) {\n return p.theme.type.getSize(0);\n }, p.theme.spacing.getSize(3), p.theme.spacing.getSize(3));\n }\n});\nvar HeadCell$2 = styled(Cell$1)(templateObject_19$1 || (templateObject_19$1 = __makeTemplateObject([\"\\n font-weight: 500;\\n position: relative;\\n\\n \", \"\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n\\n \", \"\\n\\n :hover {\\n \", \" {\\n transition: color 0.3s ease;\\n color: \", \";\\n }\\n }\\n\"], [\"\\n font-weight: 500;\\n position: relative;\\n\\n \", \"\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\\n\\n \", \"\\n\\n :hover {\\n \", \" {\\n transition: color 0.3s ease;\\n color: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.alignRight && css(templateObject_13$5 || (templateObject_13$5 = __makeTemplateObject([\"\\n margin-left: auto;\\n \"], [\"\\n margin-left: auto;\\n \"])));\n}, FlexWrapper, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.alignContent && css(templateObject_14$4 || (templateObject_14$4 = __makeTemplateObject([\"\\n text-align: \", \";\\n \"], [\"\\n text-align: \", \";\\n \"])), p.alignContent);\n}, function (p) {\n return p.width && css(templateObject_15$4 || (templateObject_15$4 = __makeTemplateObject([\"\\n width: \", \";\\n \"], [\"\\n width: \", \";\\n \"])), p.width);\n}, function (p) {\n return p.maxWidth && css(templateObject_16$3 || (templateObject_16$3 = __makeTemplateObject([\"\\n max-width: \", \";\\n \"], [\"\\n max-width: \", \";\\n \"])), p.maxWidth);\n}, function (p) {\n return p.minWidth && css(templateObject_17$3 || (templateObject_17$3 = __makeTemplateObject([\"\\n min-width: \", \";\\n \"], [\"\\n min-width: \", \";\\n \"])), p.minWidth);\n}, function (p) {\n return p.sortable && css(templateObject_18$2 || (templateObject_18$2 = __makeTemplateObject([\"\\n cursor: pointer;\\n \"], [\"\\n cursor: pointer;\\n \"])));\n}, SortIcon$1, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar FavouriteCell = styled(Cell$1)(templateObject_20$1 || (templateObject_20$1 = __makeTemplateObject([\"\\n padding: 0;\\n\\n \", \" {\\n padding: \", \";\\n }\\n\"], [\"\\n padding: 0;\\n\\n \", \" {\\n padding: \", \";\\n }\\n\"])), Favourite, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar DeleteCell = styled(Cell$1)(templateObject_21$1 || (templateObject_21$1 = __makeTemplateObject([\"\\n padding: 0;\\n padding-right: \", \";\\n margin-left: auto;\\n border-left: 1px solid \", \";\\n padding-left: \", \";\\n\"], [\"\\n padding: 0;\\n padding-right: \", \";\\n margin-left: auto;\\n border-left: 1px solid \", \";\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$1V, templateObject_2$10, templateObject_3$M, templateObject_4$E, templateObject_5$x, templateObject_6$p, templateObject_7$l, templateObject_8$f, templateObject_9$e, templateObject_10$a, templateObject_11$7, templateObject_12$6, templateObject_13$5, templateObject_14$4, templateObject_15$4, templateObject_16$3, templateObject_17$3, templateObject_18$2, templateObject_19$1, templateObject_20$1, templateObject_21$1;\nvar HeadCell$1 = function (props) {\n var className = props.className,\n children = props.children,\n _a = props.sortable,\n sortable = _a === void 0 ? false : _a,\n direction = props.direction,\n _b = props.width,\n width = _b === void 0 ? 'auto' : _b,\n onClick = props.onClick,\n alignContent = props.alignContent,\n _c = props.size,\n size = _c === void 0 ? 'large' : _c,\n positionRelative = props.positionRelative,\n wrapText = props.wrapText,\n variant = props.variant,\n alignRight = props.alignRight,\n maxWidth = props.maxWidth,\n minWidth = props.minWidth;\n var _d = useHasOverflow(),\n ref = _d.ref,\n hasOverflow = _d.hasOverflow;\n var getSortArrow = function () {\n if (sortable && direction === 'ASC') {\n return /*#__PURE__*/React__default.createElement(SortIcon$1, null, /*#__PURE__*/React__default.createElement(MemoSvgSortDown, {\n size: \"small\"\n }));\n }\n if (sortable && direction === 'DESC') {\n return /*#__PURE__*/React__default.createElement(SortIcon$1, null, /*#__PURE__*/React__default.createElement(MemoSvgSortUp, {\n size: \"small\"\n }));\n }\n if (sortable) {\n return /*#__PURE__*/React__default.createElement(SortIcon$1, {\n inactive: true\n }, /*#__PURE__*/React__default.createElement(MemoSvgSortDown, {\n size: \"small\"\n }));\n }\n return null;\n };\n var extractText = function (node) {\n if (typeof node === 'string' || typeof node === 'number') {\n return node.toString();\n }\n if (Array.isArray(node)) {\n return node.map(extractText).join('');\n }\n if ( /*#__PURE__*/React__default.isValidElement(node) && node.props.children) {\n return extractText(node.props.children);\n }\n return '';\n };\n var renderChildren = function () {\n if (hasOverflow) {\n var tooltipText = children;\n if (Array.isArray(children)) {\n tooltipText = children.filter(function (child) {\n return typeof child === 'string';\n })[0];\n }\n return /*#__PURE__*/React__default.createElement(Tooltip, {\n content: /*#__PURE__*/React__default.createElement(\"div\", null, extractText(tooltipText))\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(TextWrapper$1, {\n maxWidth: width,\n ref: tooltipRef,\n wrapText: wrapText\n }, children);\n });\n }\n return /*#__PURE__*/React__default.createElement(TextWrapper$1, {\n maxWidth: \"auto\",\n ref: ref,\n wrapText: wrapText\n }, children);\n };\n if (variant === 'card') {\n return /*#__PURE__*/React__default.createElement(HeadCell$2, {\n className: className,\n \"data-testid\": generate(['head-cell'], props),\n width: width,\n sortable: sortable,\n onClick: sortable && onClick ? onClick : undefined,\n size: size,\n alignRight: alignRight,\n maxWidth: maxWidth,\n minWidth: minWidth\n }, /*#__PURE__*/React__default.createElement(FlexWrapper, {\n size: size,\n justifyContent: alignContent\n }, renderChildren(), getSortArrow()));\n } else {\n return /*#__PURE__*/React__default.createElement(HeadCell$3, {\n className: className,\n \"data-testid\": generate(['head-cell'], props),\n width: width,\n sortable: sortable,\n onClick: sortable && onClick ? onClick : undefined,\n size: size,\n positionRelative: positionRelative\n }, /*#__PURE__*/React__default.createElement(FlexWrapper, {\n size: size,\n justifyContent: alignContent\n }, renderChildren(), getSortArrow()));\n }\n};\nvar RowCell = function (props) {\n var className = props.className,\n children = props.children,\n _a = props.width,\n width = _a === void 0 ? 'auto' : _a,\n alignContent = props.alignContent,\n onClick = props.onClick,\n _b = props.size,\n size = _b === void 0 ? 'large' : _b,\n noWrap = props.noWrap,\n colSpan = props.colSpan,\n tooltipText = props.tooltipText,\n variant = props.variant,\n minWidth = props.minWidth,\n maxWidth = props.maxWidth;\n var _c = useHasOverflow(),\n ref = _c.ref,\n hasOverflow = _c.hasOverflow;\n var renderChildren = function () {\n if (!noWrap) {\n return children;\n }\n if (hasOverflow) {\n var text = tooltipText || children;\n return /*#__PURE__*/React__default.createElement(Tooltip, {\n content: /*#__PURE__*/React__default.createElement(React__default.Fragment, null, text)\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(TextWrapper$1, {\n maxWidth: width,\n ref: tooltipRef\n }, children);\n });\n }\n return /*#__PURE__*/React__default.createElement(TextWrapper$1, {\n maxWidth: width,\n ref: ref\n }, children);\n };\n if (variant === 'card') {\n return /*#__PURE__*/React__default.createElement(Cell$1, {\n size: size,\n alignContent: alignContent,\n noWrap: noWrap,\n onClick: onClick ? onClick : undefined,\n width: width,\n maxWidth: maxWidth,\n minWidth: minWidth\n }, renderChildren());\n } else {\n return /*#__PURE__*/React__default.createElement(Cell$2, {\n className: className,\n \"data-testid\": generate(['row-cell'], props),\n width: width,\n onClick: onClick ? onClick : undefined,\n size: size,\n alignContent: alignContent,\n colSpan: colSpan,\n noWrap: noWrap\n }, renderChildren());\n }\n};\n\n/**\r\n @param alignContent - (optional) - 'left' | 'right' | 'center'\r\n @param className - (optional) - string\r\n @param direction - (optional) - 'ASC' | 'DESC'\r\n @param onClick - (optional) - () => void\r\n @param size - (optional) - 'small' | 'large'\r\n @param sortable - (optional) - boolean\r\n @param width - (optional) - string\r\n */\nvar HeadCell = styled(HeadCell$1)(templateObject_1$1U || (templateObject_1$1U = __makeTemplateObject([\"\"], [\"\"])));\nvar Cell = styled(RowCell)(templateObject_2$$ || (templateObject_2$$ = __makeTemplateObject([\"\"], [\"\"])));\nvar Table = styled(Table$1)(templateObject_3$L || (templateObject_3$L = __makeTemplateObject([\"\"], [\"\"])));\nvar TBody = styled(TBody$1)(templateObject_4$D || (templateObject_4$D = __makeTemplateObject([\"\"], [\"\"])));\nvar THead = styled(THead$1)(templateObject_5$w || (templateObject_5$w = __makeTemplateObject([\"\"], [\"\"])));\nvar Row$1 = styled(Row$3)(templateObject_6$o || (templateObject_6$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1U, templateObject_2$$, templateObject_3$L, templateObject_4$D, templateObject_5$w, templateObject_6$o;\nvar Headers = function (props) {\n var headers = props.headers,\n _a = props.onSort,\n onSort = _a === void 0 ? function () {} : _a,\n showFavourite = props.showFavourite,\n _b = props.size,\n size = _b === void 0 ? 'large' : _b,\n _c = props.variant,\n variant = _c === void 0 ? 'default' : _c,\n showDelete = props.showDelete;\n var onClick = function (item) {\n var sortDir = item.direction === 'ASC' ? 'DESC' : 'ASC';\n onSort(item.key, !item.direction ? 'ASC' : sortDir);\n };\n var favourite = headers.find(function (header) {\n return header.key === 'favourite';\n });\n var cleanHeaders = function () {\n return headers.filter(function (header) {\n return header !== favourite;\n });\n };\n var renderCardVariant = function () {\n return /*#__PURE__*/React__default.createElement(Header, null, showFavourite && favourite && ( /*#__PURE__*/React__default.createElement(HeadCell, {\n sortable: favourite.sortable,\n width: \"40px\",\n onClick: function () {\n return onClick({\n key: favourite.key,\n direction: favourite.direction,\n label: favourite.label\n });\n },\n direction: favourite.direction,\n variant: \"card\"\n })), cleanHeaders().map(function (item) {\n return /*#__PURE__*/React__default.createElement(HeadCell, {\n key: item.key,\n onClick: function () {\n return onClick(item);\n },\n sortable: item.sortable,\n direction: item.direction,\n width: item.width,\n alignContent: item.alignContent,\n size: size,\n variant: \"card\",\n maxWidth: item.maxWidth,\n minWidth: item.minWidth\n }, item.label);\n }), showDelete && /*#__PURE__*/React__default.createElement(HeadCell, {\n width: \"40px\",\n variant: \"card\",\n alignRight: true\n }));\n };\n var renderDefault = function () {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, showFavourite && favourite && ( /*#__PURE__*/React__default.createElement(HeadCell, {\n sortable: favourite.sortable,\n width: \"40px\",\n onClick: function () {\n return onClick({\n key: favourite.key,\n direction: favourite.direction,\n label: favourite.label\n });\n },\n direction: favourite.direction,\n size: size\n })), cleanHeaders().map(function (item) {\n return /*#__PURE__*/React__default.createElement(HeadCell, {\n key: item.key,\n onClick: function () {\n return onClick(item);\n },\n sortable: item.sortable,\n direction: item.direction,\n width: item.width,\n alignContent: item.alignContent,\n size: size\n }, item.label);\n }));\n };\n return variant === 'card' ? renderCardVariant() : renderDefault();\n};\nvar Row = function (props) {\n var data = props.data,\n headers = props.headers,\n showFavourite = props.showFavourite,\n onFavourite = props.onFavourite,\n favouriteValue = props.favouriteValue,\n preventWrapping = props.preventWrapping,\n onRowClick = props.onRowClick,\n _a = props.size,\n size = _a === void 0 ? 'large' : _a,\n onDelete = props.onDelete,\n showDelete = props.showDelete,\n enableDelete = props.enableDelete,\n variant = props.variant;\n var activeTheme = useThemeProvider().activeTheme;\n var handleRowClick = function () {\n if (data.id && onRowClick) {\n return onRowClick(data.id.toString());\n }\n return undefined;\n };\n var cleanHeaders = function () {\n return headers.filter(function (header) {\n return header.key !== 'favourite' && header.key !== 'delete';\n });\n };\n var handleFavourite = function () {\n var hasValidId = typeof data.id === 'string';\n var hasValidFavourite = typeof data.favourite === 'boolean';\n var getFavouriteValue = typeof data.favourite === 'boolean' && data.favourite;\n if (hasValidId && hasValidFavourite && onFavourite) {\n return onFavourite(data.id.toString(), getFavouriteValue);\n }\n return undefined;\n };\n var handleDelete = function () {\n var hasValidId = typeof data.id === 'string';\n if (onDelete && hasValidId) {\n return onDelete(data.id.toString());\n }\n return undefined;\n };\n var getRowTestId = function () {\n if (data.id && showFavourite) {\n return \"row-id--\".concat(generateCypressId(\"\".concat(data.id)), \" favourite-button-\").concat(data.id);\n }\n return undefined;\n };\n if (variant === 'card') {\n return /*#__PURE__*/React__default.createElement(Row$2, {\n activeTheme: activeTheme,\n isInteractive: !!onRowClick,\n \"data-testid\": generate(['row', \"row-id--\".concat(generateCypressId(\"\".concat(data.id)))], props)\n }, showFavourite && ( /*#__PURE__*/React__default.createElement(FavouriteCell, null, /*#__PURE__*/React__default.createElement(Star$1, {\n size: \"medium\",\n onClick: handleFavourite,\n value: favouriteValue,\n \"data-testid\": getRowTestId()\n }))), cleanHeaders().map(function (item) {\n return /*#__PURE__*/React__default.createElement(Cell, {\n size: size,\n key: item.key,\n alignContent: item === null || item === void 0 ? void 0 : item.alignContent,\n noWrap: preventWrapping,\n onClick: handleRowClick,\n width: item.width,\n maxWidth: item.maxWidth,\n minWidth: item.minWidth,\n variant: \"card\"\n }, data[item.key] || '-');\n }), showDelete && ( /*#__PURE__*/React__default.createElement(DeleteCell, null, /*#__PURE__*/React__default.createElement(IconButton, {\n size: \"default\",\n \"data-testid\": \"delete-\".concat(data.id),\n label: \"Delete\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgDelete, null);\n },\n onClick: handleDelete,\n disabled: enableDelete\n }))));\n } else {\n return /*#__PURE__*/React__default.createElement(Row$1, {\n isInteractive: !!onRowClick,\n \"data-testid\": generate(['row', \"row-id--\".concat(generateCypressId(\"\".concat(data.id)))], props)\n }, showFavourite && ( /*#__PURE__*/React__default.createElement(FavouriteCell$1, null, /*#__PURE__*/React__default.createElement(Star$1, {\n onClick: handleFavourite,\n value: favouriteValue,\n \"data-testid\": getRowTestId()\n }))), cleanHeaders().map(function (item) {\n return /*#__PURE__*/React__default.createElement(Cell, {\n size: size,\n key: item.key,\n alignContent: item === null || item === void 0 ? void 0 : item.alignContent,\n noWrap: preventWrapping,\n onClick: handleRowClick\n }, data[item.key] || '-');\n }), showDelete && ( /*#__PURE__*/React__default.createElement(DeleteCell$1, null, /*#__PURE__*/React__default.createElement(IconButton, {\n size: \"small\",\n \"data-testid\": \"delete-\".concat(data.id),\n label: \"Delete\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgDelete, null);\n },\n onClick: handleDelete,\n disabled: enableDelete\n }))));\n }\n};\nvar createKey = function (item) {\n var key;\n if ((item === null || item === void 0 ? void 0 : item.id) && (typeof item.id === 'string' || typeof item.id === 'number')) {\n key = item.id;\n } else if ((item === null || item === void 0 ? void 0 : item.key) && (typeof item.key === 'string' || typeof item.key === 'number')) {\n key = item.key;\n }\n return key;\n};\nvar sortData = function (headers, originalRows) {\n var getSortedHeader = headers.find(function (item) {\n return item.sortable && !!item.direction;\n });\n if (getSortedHeader && getSortedHeader.direction) {\n return orderBy(originalRows, [getSortedHeader.key], [getSortedHeader.direction.toLowerCase()]);\n } else {\n return originalRows;\n }\n};\nvar DataTable$1 = function (props) {\n var className = props.className,\n headers = props.headers,\n rows = props.rows,\n _a = props.clientSort,\n clientSort = _a === void 0 ? false : _a,\n showFavourite = props.showFavourite,\n onFavourite = props.onFavourite,\n showDelete = props.showDelete,\n onDelete = props.onDelete,\n preventWrapping = props.preventWrapping,\n onRowClick = props.onRowClick,\n _b = props.size,\n size = _b === void 0 ? 'large' : _b,\n _c = props.variation,\n variation = _c === void 0 ? 'primary' : _c,\n activeSorting = props.activeSorting,\n rowTotal = props.rowTotal,\n onSort = props.onSort,\n variant = props.variant;\n var _d = __read(React__default.useState(null), 2),\n dataHeaders = _d[0],\n setDataHeaders = _d[1];\n var _e = __read(React__default.useState(null), 2),\n dataRows = _e[0],\n setDataRows = _e[1];\n var _f = __read(React__default.useState(false), 2),\n isLoaded = _f[0],\n setIsLoaded = _f[1];\n // Store the data from the props into state\n // as we might be sorting the values\n React__default.useEffect(function () {\n setDataHeaders(headers);\n if (activeSorting) {\n setDataHeaders(headers === null || headers === void 0 ? void 0 : headers.map(function (item) {\n return item.key === activeSorting.key ? __assign(__assign({}, item), {\n direction: activeSorting.direction\n }) : __assign(__assign({}, item), {\n direction: undefined\n });\n }));\n } else {\n setDataHeaders(headers);\n }\n setDataRows(rows);\n }, [headers, rows, activeSorting]);\n // If we are not using client sorting, then set the data to loaded.\n React__default.useEffect(function () {\n if (!clientSort) {\n setIsLoaded(true);\n }\n }, [clientSort]);\n // When the headers change, we need to sort the row data\n React__default.useEffect(function () {\n if (dataHeaders && clientSort) {\n setDataRows(sortData(dataHeaders, rows));\n setIsLoaded(true);\n }\n }, [dataHeaders, clientSort, rows]);\n // When sorting a column, just update the headers, as the sorting will happen in an effect\n var handleSort = function (key, direction) {\n if (clientSort) {\n if (dataHeaders) {\n setDataHeaders(dataHeaders === null || dataHeaders === void 0 ? void 0 : dataHeaders.map(function (item) {\n return item.key === key ? __assign(__assign({}, item), {\n direction: direction\n }) : __assign(__assign({}, item), {\n direction: undefined\n });\n }));\n }\n if (onSort) {\n onSort(key, direction);\n }\n } else if (onSort) {\n onSort(key, direction);\n }\n };\n // If we dont have the headers or data in state, dont render.\n // We also dont want to render if we are loading (i.e. sorted data on initial load)\n if (!dataHeaders || !dataRows || !isLoaded) return null;\n var isSecondarySize = variation === 'secondary' ? 'small' : size;\n if (variant === 'card') {\n return /*#__PURE__*/React__default.createElement(CardTable, {\n \"data-testid\": generate(['data-table', showFavourite ? 'favourite-column' : null, showDelete ? 'delete-column' : null], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Headers, {\n size: isSecondarySize,\n headers: dataHeaders,\n onSort: handleSort,\n showFavourite: showFavourite,\n variant: \"card\",\n showDelete: showDelete\n }), dataRows.map(function (item, index) {\n return /*#__PURE__*/React__default.createElement(Row, {\n size: size === 'small' ? 'small' : isSecondarySize,\n key: createKey(item) || index,\n headers: dataHeaders,\n data: item,\n showFavourite: showFavourite,\n favouriteValue: showFavourite && typeof item.favourite === 'boolean' ? item.favourite : false,\n onFavourite: onFavourite,\n onDelete: onDelete,\n showDelete: showDelete,\n preventWrapping: preventWrapping,\n onRowClick: onRowClick,\n enableDelete: showDelete && !(typeof item.canDelete === 'boolean' ? item.canDelete : false),\n variant: \"card\"\n });\n }));\n } else {\n return /*#__PURE__*/React__default.createElement(DataTable$2, {\n \"data-testid\": generate(['data-table', showFavourite ? 'favourite-column' : null, showDelete ? 'delete-column' : null], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(THead, null, /*#__PURE__*/React__default.createElement(Row$1, null, /*#__PURE__*/React__default.createElement(Headers, {\n size: isSecondarySize,\n headers: dataHeaders,\n onSort: handleSort,\n showFavourite: showFavourite\n }))), /*#__PURE__*/React__default.createElement(TBody, null, dataRows.map(function (item, index) {\n return /*#__PURE__*/React__default.createElement(Row, {\n size: size === 'small' ? 'small' : isSecondarySize,\n key: createKey(item) || index,\n headers: dataHeaders,\n data: item,\n showFavourite: showFavourite,\n favouriteValue: showFavourite && typeof item.favourite === 'boolean' ? item.favourite : false,\n onFavourite: onFavourite,\n onDelete: onDelete,\n showDelete: showDelete,\n preventWrapping: preventWrapping,\n onRowClick: onRowClick,\n enableDelete: showDelete && !(typeof item.canDelete === 'boolean' ? item.canDelete : false)\n });\n }), rowTotal && rowTotal.map(function (total, index) {\n return /*#__PURE__*/React__default.createElement(Row, {\n key: createKey(total) || index,\n size: size === 'small' ? 'small' : isSecondarySize,\n headers: dataHeaders,\n data: total,\n preventWrapping: preventWrapping\n });\n }))));\n }\n};\n\n/**\r\n * @param headers - (required) - DataHeader[];\r\n * @param rows - (required) - DataRow[];\r\n * @param className - (optional) - string;\r\n * @param onSort - (optional) - (key: string, direction: Direction) => void;\r\n * @param clientSort - (optional) - boolean;\r\n * @param showFavourite - (optional) - boolean;\r\n * @param favouriteValue - (optional) - boolean;\r\n * @param onFavourite - (optional) - (id: string, favourite: boolean) => void;\r\n * @param sortableFavourite - (optional) - boolean;\r\n * @param preventWrapping - (optional) - boolean;\r\n * @param onRowClick - (optional) - (id: string) => void;\r\n * @param size - (optional) - Table.Size;\r\n * @param variation - (optional) - Variation;\r\n */\nvar DataTable = styled(DataTable$1)(templateObject_1$1T || (templateObject_1$1T = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1T;\nstyled.input.attrs({\n type: 'checkbox'\n})(templateObject_1$1S || (templateObject_1$1S = __makeTemplateObject([\"\\n display: none;\\n\"], [\"\\n display: none;\\n\"])));\nvar InputLabel = styled(Label$6)(templateObject_2$_ || (templateObject_2$_ = __makeTemplateObject([\"\\n margin-left: 10px;\\n\"], [\"\\n margin-left: 10px;\\n\"])));\nvar ToggleSwitchWrapper = styled(View)(templateObject_3$K || (templateObject_3$K = __makeTemplateObject([\"\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n\"])));\n// This named style should be the wrapper for the component i.e. the module\nvar ToggleSwitch$2 = styled.div(templateObject_9$d || (templateObject_9$d = __makeTemplateObject([\"\\n position: relative;\\n padding-left: \", \";\\n min-height: \", \";\\n align-items: center;\\n display: inline-block;\\n cursor: pointer;\\n\\n &:before {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n display: block;\\n position: absolute;\\n left: 0;\\n top: \", \";\\n box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.24); // Deliberate exception\\n transition: all 0.25s ease-in-out;\\n \", \";\\n }\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n display: block;\\n position: absolute;\\n left: 0;\\n top: 2px;\\n background: \", \";\\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.24); // Deliberate exception\\n transition: all 0.25s ease-in-out;\\n transform: translateX(0);\\n }\\n\\n \", \";\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n padding-left: \", \";\\n min-height: \", \";\\n align-items: center;\\n display: inline-block;\\n cursor: pointer;\\n\\n &:before {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n display: block;\\n position: absolute;\\n left: 0;\\n top: \", \";\\n box-shadow: inset 0px 0px 4px rgba(0, 0, 0, 0.24); // Deliberate exception\\n transition: all 0.25s ease-in-out;\\n \", \";\\n }\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: \", \";\\n border-radius: \", \";\\n display: block;\\n position: absolute;\\n left: 0;\\n top: 2px;\\n background: \", \";\\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.24); // Deliberate exception\\n transition: all 0.25s ease-in-out;\\n transform: translateX(0);\\n }\\n\\n \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n var _a;\n return ((_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.name) === 'default' ? p.theme.colors.primary.getValue(500).context : p.theme.colors.text.getValue();\n}, function (p) {\n return p.isChecked ? css(templateObject_5$v || (templateObject_5$v = __makeTemplateObject([\"\\n &:before {\\n background-color: \", \";\\n }\\n\\n &:after {\\n transform: translateX(\", \");\\n }\\n\\n \", \"\\n \"], [\"\\n &:before {\\n background-color: \", \";\\n }\\n\\n &:after {\\n transform: translateX(\", \");\\n }\\n\\n \", \"\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n }, function (p) {\n return p.theme.spacing.getSize(4);\n }, p.disabled && css(templateObject_4$C || (templateObject_4$C = __makeTemplateObject([\"\\n &:before {\\n background-color: \", \";\\n }\\n &:after {\\n background: \", \";\\n }\\n \"], [\"\\n &:before {\\n background-color: \", \";\\n }\\n &:after {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.borders.getValue();\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n })) : css(templateObject_7$k || (templateObject_7$k = __makeTemplateObject([\"\\n &:before {\\n background-color: \", \";\\n }\\n\\n \", \"\\n \"], [\"\\n &:before {\\n background-color: \", \";\\n }\\n\\n \", \"\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n }, p.disabled && css(templateObject_6$n || (templateObject_6$n = __makeTemplateObject([\"\\n &:before {\\n background-color: \", \";\\n }\\n &:after {\\n background: \", \";\\n }\\n \"], [\"\\n &:before {\\n background-color: \", \";\\n }\\n &:after {\\n background: \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.backgrounds.getValue(0);\n }, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n }));\n}, function (p) {\n return p.disabled && css(templateObject_8$e || (templateObject_8$e = __makeTemplateObject([\"\\n cursor: not-allowed;\\n \"], [\"\\n cursor: not-allowed;\\n \"])));\n});\nvar templateObject_1$1S, templateObject_2$_, templateObject_3$K, templateObject_4$C, templateObject_5$v, templateObject_6$n, templateObject_7$k, templateObject_8$e, templateObject_9$d;\nvar ToggleSwitch$1 = function (props) {\n var label = props.label,\n onChange = props.onChange,\n isChecked = props.isChecked,\n disabled = props.disabled,\n className = props.className;\n var activeTheme = useThemeProvider().activeTheme;\n var toggleSwitch = /*#__PURE__*/React__default.createElement(ToggleSwitch$2, {\n className: className,\n \"data-testid\": generate(['input', 'toggle-switch'], props),\n disabled: disabled,\n isChecked: isChecked,\n onClick: !disabled ? function (e) {\n return onChange(!isChecked, e);\n } : undefined,\n role: \"checkbox\",\n activeTheme: activeTheme\n });\n if (!label) {\n return toggleSwitch;\n }\n // If we have a label, then wrap it here\n return /*#__PURE__*/React__default.createElement(ToggleSwitchWrapper, null, toggleSwitch, /*#__PURE__*/React__default.createElement(InputLabel, null, label()));\n};\n\n/**\r\n @param onChange - (required) - (status: boolean, event: React.MouseEvent<HTMLDivElement>) => void\r\n @param label - (optional) - () => React.ReactNode\r\n @param className - (optional) - string\r\n */\nvar ToggleSwitch = styled(ToggleSwitch$1)(templateObject_1$1R || (templateObject_1$1R = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1R;\nvar StatusIcon = styled.div(templateObject_1$1Q || (templateObject_1$1Q = __makeTemplateObject([\"\\n margin-right: \", \";\\n color: \", \";\\n\"], [\"\\n margin-right: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.error.values[500];\n});\nvar Alert$2 = styled.div(templateObject_3$J || (templateObject_3$J = __makeTemplateObject([\"\\n border: 2px solid \", \";\\n background: \", \";\\n border-radius: \", \";\\n padding: \", \";\\n min-height: \", \";\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n box-sizing: border-box;\\n position: relative;\\n\\n \", \"\\n\"], [\"\\n border: 2px solid \", \";\\n background: \", \";\\n border-radius: \", \";\\n padding: \", \";\\n min-height: \", \";\\n display: flex;\\n align-items: flex-start;\\n width: 100%;\\n box-sizing: border-box;\\n position: relative;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.error.values[500];\n}, function (p) {\n return p.theme.colors.error.values[100];\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n if (p.status && ['warning', 'success', 'info', 'error'].includes(p.status)) {\n return css(templateObject_2$Z || (templateObject_2$Z = __makeTemplateObject([\"\\n border-color: \", \";\\n background-color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n \"], [\"\\n border-color: \", \";\\n background-color: \", \";\\n\\n \", \" {\\n color: \", \";\\n }\\n \"])), p.theme.colors[p.status].values[500], p.theme.colors[p.status].values[100], StatusIcon, p.theme.colors[p.status].values[500]);\n }\n});\nvar Content$2 = styled.div(templateObject_4$B || (templateObject_4$B = __makeTemplateObject([\"\\n position: relative;\\n margin-right: \", \";\\n display: flex;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n position: relative;\\n margin-right: \", \";\\n display: flex;\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(7);\n}, Text$3, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Multiline = styled.div(templateObject_5$u || (templateObject_5$u = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n\"])));\nvar Close$1 = styled.div(templateObject_6$m || (templateObject_6$m = __makeTemplateObject([\"\\n position: absolute;\\n right: \", \";\\n\"], [\"\\n position: absolute;\\n right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1Q, templateObject_2$Z, templateObject_3$J, templateObject_4$B, templateObject_5$u, templateObject_6$m;\nvar Alert$1 = function (props) {\n var className = props.className,\n title = props.title,\n message = props.message,\n _a = props.status,\n status = _a === void 0 ? 'error' : _a,\n onClose = props.onClose,\n multiline = props.multiline;\n var getStatusIcon = function () {\n switch (status) {\n case 'warning':\n return /*#__PURE__*/React__default.createElement(MemoSvgWarningFilled, {\n size: \"large\"\n });\n case 'error':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertErrorFilled, {\n size: \"large\"\n });\n case 'success':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertSuccessFilled, {\n size: \"large\"\n });\n case 'info':\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertInformationFilled, {\n size: \"large\"\n });\n default:\n return /*#__PURE__*/React__default.createElement(MemoSvgAlertErrorFilled, {\n size: \"large\"\n });\n }\n };\n return /*#__PURE__*/React__default.createElement(Alert$2, {\n status: status,\n \"data-testid\": generate(['alert', \"alert--\".concat(status)], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(StatusIcon, null, getStatusIcon()), /*#__PURE__*/React__default.createElement(Content$2, null, multiline ? ( /*#__PURE__*/React__default.createElement(Multiline, null, /*#__PURE__*/React__default.createElement(Text$1, {\n weight: 600,\n inline: true\n }, title), message)) : ( /*#__PURE__*/React__default.createElement(Text$1, {\n weight: 400,\n inline: true\n }, /*#__PURE__*/React__default.createElement(Text$1, {\n weight: 600,\n inline: true\n }, title), message))), onClose && ( /*#__PURE__*/React__default.createElement(Close$1, null, /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"alert__close\",\n label: \"Close\",\n onClick: onClose,\n size: \"tiny\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n }\n }))));\n};\n\n/**\r\n * @param title - (required) - string - Main message displayed in the alert in bold\r\n * @param status - (required) - 'warning' | 'error' | 'success' | 'info' - Styling state for the alert\r\n * @param className - (optional) - string - Enables styled-components mounting\r\n * @param message - (optional) - string | React.ReactElement - Additional message after the title in normal text\r\n * @param onClose - (optional) - () => void - Function called when alert is closed\r\n */\nvar Alert = styled(Alert$1)(templateObject_1$1P || (templateObject_1$1P = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1P;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AvatarCluster$2 = styled.div(templateObject_1$1O || (templateObject_1$1O = __makeTemplateObject([\"\\n display: flex;\\n \", \" {\\n margin-left: -\", \";\\n z-index: \", \";\\n\\n &:nth-child(1) {\\n z-index: calc(\", \" - 1);\\n }\\n &:nth-child(2) {\\n z-index: calc(\", \" - 2);\\n }\\n &:nth-child(3) {\\n z-index: calc(\", \" - 3);\\n }\\n }\\n\"], [\"\\n display: flex;\\n \", \" {\\n margin-left: -\", \";\\n z-index: \", \";\\n\\n &:nth-child(1) {\\n z-index: calc(\", \" - 1);\\n }\\n &:nth-child(2) {\\n z-index: calc(\", \" - 2);\\n }\\n &:nth-child(3) {\\n z-index: calc(\", \" - 3);\\n }\\n }\\n\"])), Avatar, function (p) {\n return p.theme.spacing.getSize(2);\n}, zIndex, zIndex, zIndex, zIndex);\nvar MoreCounter = styled.div(templateObject_2$Y || (templateObject_2$Y = __makeTemplateObject([\"\\n display: flex;\\n align-self: center;\\n margin-left: \", \";\\n\"], [\"\\n display: flex;\\n align-self: center;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$1O, templateObject_2$Y;\nvar AvatarCluster$1 = function (props) {\n var className = props.className,\n avatars = props.avatars;\n var _a = __read(avatars),\n firstAvatar = _a[0],\n secondAvatar = _a[1],\n thirdAvatar = _a[2],\n more = _a.slice(3);\n return /*#__PURE__*/React__default.createElement(Layer, {\n name: \"avatar\"\n }, /*#__PURE__*/React__default.createElement(AvatarCluster$2, {\n \"data-testid\": generate(['avatar-cluster'], props),\n className: className\n }, firstAvatar, secondAvatar, thirdAvatar, more.length > 0 && ( /*#__PURE__*/React__default.createElement(MoreCounter, null, /*#__PURE__*/React__default.createElement(Text$1, {\n variant: \"secondary\",\n weight: 500\n }, \"+ \", more.length)))));\n};\n\n/**\r\n * @param avatars - (required) - React.ReactElement[];\r\n * @param className - (optional) - string;\r\n */\nvar AvatarCluster = styled(AvatarCluster$1)(templateObject_1$1N || (templateObject_1$1N = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1N;\n\n// This named style should be the wrapper for the component i.e. the module\nvar CardBoard$2 = styled.div(templateObject_1$1M || (templateObject_1$1M = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar CardBoardContent = styled(View)(templateObject_2$X || (templateObject_2$X = __makeTemplateObject([\"\\n display: grid;\\n grid-template-columns: 1fr 1fr 1fr 1fr;\\n gap: \", \" \", \";\\n grid-auto-flow: dense;\\n grid-template-columns: repeat(auto-fill, minmax(413px, 1fr));\\n\"], [\"\\n display: grid;\\n grid-template-columns: 1fr 1fr 1fr 1fr;\\n gap: \", \" \", \";\\n grid-auto-flow: dense;\\n grid-template-columns: repeat(auto-fill, minmax(413px, 1fr));\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar CardBoardItem$2 = styled(View)(templateObject_3$I || (templateObject_3$I = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n});\nvar templateObject_1$1M, templateObject_2$X, templateObject_3$I;\nvar CardBoard$1 = function (props) {\n var className = props.className,\n children = props.children,\n fixedHeight = props.fixedHeight,\n loadMore = props.loadMore,\n _a = props.hitEndPadding,\n hitEndPadding = _a === void 0 ? 500 : _a,\n _b = props.disableScrollableContent,\n disableScrollableContent = _b === void 0 ? false : _b;\n var resultsRef = React__default.useRef(null);\n var _c = __read(React__default.useState(null), 2),\n topOffset = _c[0],\n setTopOffset = _c[1];\n // Get the top offset for the component, so we know how tall to make the container\n React__default.useEffect(function () {\n var _a;\n var top = (_a = resultsRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().top;\n setTopOffset(top || 0);\n }, [resultsRef]);\n // Throttle the load more and only fire the leading event\n var throttleLoadMore;\n if (loadMore) {\n throttleLoadMore = debounce$2(loadMore, 500, {\n leading: true,\n trailing: false,\n maxWait: 1000\n });\n }\n return /*#__PURE__*/React__default.createElement(CardBoard$2, {\n ref: resultsRef,\n \"data-testid\": generate(['card-board'], props),\n className: className\n }, topOffset !== null ? ( /*#__PURE__*/React__default.createElement(ScrollableContent, {\n scrollable: !disableScrollableContent,\n fixedHeight: fixedHeight || \"calc(100vh - \".concat(topOffset, \"px)\"),\n onHitEnd: throttleLoadMore,\n hitEndPadding: hitEndPadding,\n bars: {\n type: 'SHADOW',\n fixedTop: true,\n showTop: true,\n showBottom: false\n }\n }, /*#__PURE__*/React__default.createElement(CardBoardContent, null, children))) : null);\n};\nvar CardBoardItem$1 = function (props) {\n var className = props.className,\n children = props.children;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(CardBoardItem$2, {\n \"data-testid\": generate(['card-board__item'], props),\n className: className,\n activeTheme: activeTheme\n }, children);\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param loadMore - (optional) - () => void\r\n * @param fixedHeight - (optional) - string\r\n * @param hitEndPadding - (optional) - number\r\n * @param disableScrollableContent - (optional) - boolean\r\n */\nvar CardBoard = styled(CardBoard$1)(templateObject_1$1L || (templateObject_1$1L = __makeTemplateObject([\"\"], [\"\"])));\nvar CardBoardItem = styled(CardBoardItem$1)(templateObject_2$W || (templateObject_2$W = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1L, templateObject_2$W;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Autosuggest$2 = styled.div(templateObject_1$1K || (templateObject_1$1K = __makeTemplateObject([\"\"], [\"\"])));\nvar Item$1 = styled.div(templateObject_2$V || (templateObject_2$V = __makeTemplateObject([\"\\n \", \"\\n padding: \", \";\\n \", \"\\n height: 100%;\\n\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n\"], [\"\\n \", \"\\n padding: \", \";\\n \", \"\\n height: 100%;\\n\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n display: block;\\n\"])), function (p) {\n return menuItemStyles(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.active ? menuItemHoverState(p.activeTheme) : null;\n});\nvar Wrapper$2 = styled(DropdownMenu$2)(templateObject_4$A || (templateObject_4$A = __makeTemplateObject([\"\\n width: inherit;\\n \", \"\\n\"], [\"\\n width: inherit;\\n \", \"\\n\"])), function (p) {\n return !p.fullWidth ? css(templateObject_3$H || (templateObject_3$H = __makeTemplateObject([\"\\n max-width: 600px;\\n \"], [\"\\n max-width: 600px;\\n \"]))) : null;\n});\nvar Container$1 = styled(Menu$5)(templateObject_5$t || (templateObject_5$t = __makeTemplateObject([\"\\n li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"], [\"\\n li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n});\nvar templateObject_1$1K, templateObject_2$V, templateObject_3$H, templateObject_4$A, templateObject_5$t;\nvar Autosuggest$1 = function (props) {\n var className = props.className,\n placeholder = props.placeholder,\n onSelect = props.onSelect,\n renderSuggestion = props.renderSuggestion,\n items = props.items,\n _a = props.clearOnSelect,\n clearOnSelect = _a === void 0 ? false : _a,\n onChangeProp = props.onChange,\n _b = props.onClear,\n onClear = _b === void 0 ? function () {} : _b,\n _c = props.remoteData,\n remoteData = _c === void 0 ? false : _c,\n _d = props.minLength,\n minLength = _d === void 0 ? 1 : _d,\n leftAddon = props.leftAddon,\n rightAddon = props.rightAddon,\n _e = props.fullWidth,\n fullWidth = _e === void 0 ? true : _e,\n renderInitialView = props.renderInitialView,\n _f = props.disabled,\n disabled = _f === void 0 ? false : _f;\n var _g = __read(React__default.useState(''), 2),\n value = _g[0],\n setValue = _g[1];\n var _h = __read(React__default.useState([]), 2),\n suggestions = _h[0],\n setSuggestions = _h[1];\n var autosuggestRef = React__default.useRef(null);\n var triggerRef = React__default.useRef(null);\n var triggerEl = useTarget(triggerRef);\n var activeTheme = useThemeProvider().activeTheme;\n /**\r\n * Update the suggestions internally or fire onChange to handle outside (api)\r\n */\n var onSuggestionsFetchRequested = function (request) {\n if (!remoteData) {\n var matches = items.filter(function (item) {\n var _a;\n var matchesLabel = item.label.toLowerCase().includes(request.value.toLowerCase());\n var matchesCode = ((_a = item.code) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(request.value.toLowerCase())) || false;\n return matchesLabel || matchesCode;\n });\n setSuggestions(matches);\n }\n if (onChangeProp) {\n onChangeProp(request.value);\n }\n };\n /**\r\n * Clear the suggestions\r\n */\n var onSuggestionsClearRequested = function () {\n if (!remoteData) {\n setSuggestions(items);\n }\n onClear();\n };\n /**\r\n * Get the suggestion value from the suggestion\r\n */\n var getSuggestionValue = function (suggestion) {\n return suggestion.label;\n };\n /**\r\n * Select the suggestion from the list, fire onSelect event\r\n */\n var onSuggestionSelected = function (event, params) {\n var suggestion = params.suggestion;\n onSelect(suggestion);\n if (clearOnSelect) {\n setValue('');\n // Not hugely happy we have to do this timeout to fix the blur issue on select\n // Keep an eye on the timeout value.\n // Increment below counter everytime we have to change this value to keep an eye on it\n // counter: (1)\n setTimeout(function () {\n var _a, _b;\n (_b = (_a = autosuggestRef.current) === null || _a === void 0 ? void 0 : _a.input) === null || _b === void 0 ? void 0 : _b.blur();\n }, 5);\n }\n };\n /**\r\n * On text input change update the state\r\n */\n var onChange = function (event, params) {\n setValue(params.newValue);\n };\n /**\r\n * Render the suggestion wrapper for styling\r\n */\n var localRenderSuggestion = function (suggestion, _a) {\n var isHighlighted = _a.isHighlighted;\n if (renderSuggestion) {\n return /*#__PURE__*/React__default.createElement(Item$1, {\n active: isHighlighted,\n activeTheme: activeTheme\n }, renderSuggestion(suggestion));\n } else {\n return /*#__PURE__*/React__default.createElement(Item$1, {\n active: isHighlighted,\n activeTheme: activeTheme\n }, suggestion.label);\n }\n };\n /**\r\n * Render the container for the suggestions\r\n */\n var renderSuggestionsContainer = function (_a) {\n var _b;\n var containerProps = _a.containerProps,\n children = _a.children,\n query = _a.query;\n if (!children) {\n if (((_b = autosuggestRef.current) === null || _b === void 0 ? void 0 : _b.state.isFocused) && query === '' && renderInitialView) {\n return /*#__PURE__*/React__default.createElement(DropdownContent, {\n triggerEl: triggerEl,\n useTransform: false,\n fullWidth: fullWidth\n }, /*#__PURE__*/React__default.createElement(Wrapper$2, {\n fullWidth: fullWidth,\n onMouseDown: function (e) {\n return e.preventDefault();\n },\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(ScrollableContent, {\n maxHeight: \"300px\"\n }, /*#__PURE__*/React__default.createElement(Container$1\n // eslint-disable-next-line react/jsx-props-no-spreading\n , __assign({}, containerProps), renderInitialView()))));\n }\n return null;\n }\n return /*#__PURE__*/React__default.createElement(DropdownContent, {\n triggerEl: triggerEl,\n useTransform: false,\n fullWidth: fullWidth\n }, /*#__PURE__*/React__default.createElement(Wrapper$2, {\n fullWidth: fullWidth,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(ScrollableContent, {\n maxHeight: \"300px\"\n }, /*#__PURE__*/React__default.createElement(Container$1\n // eslint-disable-next-line react/jsx-props-no-spreading\n , __assign({}, containerProps), children))));\n };\n return /*#__PURE__*/React__default.createElement(Autosuggest$2, {\n ref: triggerRef,\n \"data-testid\": generate(['autosuggest'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(ReactAutosuggest, {\n ref: autosuggestRef,\n suggestions: remoteData ? items : suggestions,\n onSuggestionsFetchRequested: onSuggestionsFetchRequested,\n onSuggestionsClearRequested: onSuggestionsClearRequested,\n onSuggestionSelected: onSuggestionSelected,\n getSuggestionValue: getSuggestionValue,\n renderSuggestion: localRenderSuggestion,\n renderSuggestionsContainer: renderSuggestionsContainer,\n shouldRenderSuggestions: function (value) {\n return value.length >= minLength;\n },\n renderInputComponent: function (inputProps) {\n // Fix for typings issue with ReactAutosuggest\n var onChange = inputProps.onChange;\n return /*#__PURE__*/React__default.createElement(Input$1\n // eslint-disable-next-line react/jsx-props-no-spreading\n , __assign({}, inputProps, {\n leftAddon: leftAddon,\n rightAddon: rightAddon,\n onChange: onChange,\n disabled: disabled,\n type: \"search\"\n }));\n },\n inputProps: {\n placeholder: placeholder,\n value: value,\n onChange: onChange\n }\n }));\n};\n\n/**\r\n @param items - (required) - T[]\r\n * @param className - (optional) - string;\r\n @param onSelect - (optional) - (value: T) => void;\r\n @param renderSuggestion - (optional) - (suggestion: T) => React.ReactElement;\r\n @param onChange - (optional) - (value: string) => void\r\n @param onClear - (optional) - () => void\r\n @param remoteData - (optional) - boolean\r\n @param placeholder - (optional) - string\r\n @param clearOnSelect - (optional) - boolean;\r\n @param minLength - (optional) - number;\r\n @param fullWidth - (optional) - boolean;\r\n @param renderInitialView - (optional) - () => React.ReactElement;\r\n @param disabled - (optional) - boolean\r\n */\nvar Autosuggest = styled(Autosuggest$1)(templateObject_1$1J || (templateObject_1$1J = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1J;\nvar TitleBar$1 = styled(View)(templateObject_1$1I || (templateObject_1$1I = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\\n &:last-child {\\n padding-bottom: \", \";\\n }\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\\n &:last-child {\\n padding-bottom: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar TitleWrapper$1 = styled(View)(templateObject_2$U || (templateObject_2$U = __makeTemplateObject([\"\\n flex-direction: column;\\n overflow: hidden;\\n width: 100%;\\n display: flex;\\n\"], [\"\\n flex-direction: column;\\n overflow: hidden;\\n width: 100%;\\n display: flex;\\n\"])));\nvar HeadingWrapper = styled(View)(templateObject_3$G || (templateObject_3$G = __makeTemplateObject([\"\\n display: flex;\\n align-items: flex-start;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"], [\"\\n display: flex;\\n align-items: flex-start;\\n margin-bottom: \", \";\\n\\n \", \" {\\n margin-right: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, Favourite, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar RenderedTitleWrapper = styled(View)(templateObject_4$z || (templateObject_4$z = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar ActionWrapper = styled(View)(templateObject_5$s || (templateObject_5$s = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n margin-left: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$1I, templateObject_2$U, templateObject_3$G, templateObject_4$z, templateObject_5$s;\nvar ToolBar$1 = styled(View)(templateObject_1$1H || (templateObject_1$1H = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n\"])));\nvar Primary = styled(View)(templateObject_2$T || (templateObject_2$T = __makeTemplateObject([\"\\n display: flex;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-start;\\n flex-grow: 3;\\n\\n & > *:not(:first-child) {\\n margin-left: \", \";\\n }\\n\"], [\"\\n display: flex;\\n overflow: hidden;\\n align-items: center;\\n justify-content: flex-start;\\n flex-grow: 3;\\n\\n & > *:not(:first-child) {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Secondary = styled(Primary)(templateObject_3$F || (templateObject_3$F = __makeTemplateObject([\"\\n flex-direction: row;\\n justify-content: flex-end;\\n flex-grow: 1;\\n overflow: visible;\\n & > *:not(:last-child) {\\n margin-left: \", \";\\n }\\n\"], [\"\\n flex-direction: row;\\n justify-content: flex-end;\\n flex-grow: 1;\\n overflow: visible;\\n & > *:not(:last-child) {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar FilterArea = styled(View)(templateObject_4$y || (templateObject_4$y = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\\n \", \" {\\n min-width: fit-content;\\n\\n &:not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\\n \", \" {\\n min-width: fit-content;\\n\\n &:not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n\"])), Button$1, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Search = styled(View)(templateObject_5$r || (templateObject_5$r = __makeTemplateObject([\"\\n display: flex;\\n min-width: \", \";\\n max-width: \", \";\\n flex-grow: 1;\\n\"], [\"\\n display: flex;\\n min-width: \", \";\\n max-width: \", \";\\n flex-grow: 1;\\n\"])), function (p) {\n return p.theme.spacing.getSize(40);\n}, function (p) {\n return p.theme.spacing.getSize(108);\n});\nvar templateObject_1$1H, templateObject_2$T, templateObject_3$F, templateObject_4$y, templateObject_5$r;\n\n// This named style should be the wrapper for the component i.e. the module\nvar PageHeader$2 = styled(View)(templateObject_1$1G || (templateObject_1$1G = __makeTemplateObject([\"\"], [\"\"])));\nvar Body = styled(View)(templateObject_2$S || (templateObject_2$S = __makeTemplateObject([\"\\n padding: \", \";\\n position: relative;\\n z-index: calc(\", \" + 1);\\n \", \";\\n \", \",\\n \", \" {\\n padding-bottom: \", \";\\n }\\n \", \";\\n\"], [\"\\n padding: \", \";\\n position: relative;\\n z-index: calc(\", \" + 1);\\n \", \";\\n \", \",\\n \", \" {\\n padding-bottom: \", \";\\n }\\n \", \";\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(8), \" \").concat(p.theme.spacing.getSize(6), \" 0\");\n}, zIndex, function (p) {\n return containerBackground(p.activeTheme);\n}, TitleBar$1, ToolBar$1, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? boxShadowForDarkMode(p.activeTheme) : boxShadow2;\n});\nvar Footer$1 = styled(View)(templateObject_3$E || (templateObject_3$E = __makeTemplateObject([\"\\n background: \", \";\\n box-sizing: content-box;\\n padding: \", \";\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n background: \", \";\\n box-sizing: content-box;\\n padding: \", \";\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return p.activeTheme.colors.backgrounds.getValue(2);\n}, function (p) {\n return \"\".concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(6));\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar templateObject_1$1G, templateObject_2$S, templateObject_3$E;\nvar PageHeader$1 = function (props) {\n var className = props.className,\n navBar = props.navBar,\n titleBar = props.titleBar,\n actionsBar = props.actionsBar,\n toolBar = props.toolBar,\n tabsBar = props.tabsBar,\n variant = props.variant;\n var isParent = variant === 'parent';\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(PageHeader$2, {\n \"data-testid\": generate(['page-header'], props),\n className: className\n }, navBar && navBar(), /*#__PURE__*/React__default.createElement(Body, {\n activeTheme: activeTheme\n }, actionsBar && actionsBar(), titleBar(), isParent && toolBar && toolBar(), tabsBar && tabsBar()), !isParent && toolBar && /*#__PURE__*/React__default.createElement(Footer$1, {\n activeTheme: activeTheme\n }, toolBar()));\n};\nvar NavBar$1 = styled(View)(templateObject_1$1F || (templateObject_1$1F = __makeTemplateObject([\"\\n white-space: nowrap;\\n overflow: hidden;\\n \", \";\\n box-sizing: content-box;\\n padding: \", \" \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n\"], [\"\\n white-space: nowrap;\\n overflow: hidden;\\n \", \";\\n box-sizing: content-box;\\n padding: \", \" \", \";\\n border-bottom: 1px solid \", \";\\n display: flex;\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.colors.borders.getValue(2);\n});\nvar templateObject_1$1F;\n\n// TODO: This is a placeholder version of the NavBar\n// NavBar is out of scope at this time\n// The actual version will render a collection of list items\nvar NavBar = function (props) {\n var className = props.className,\n children = props.children;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(NavBar$1, {\n \"data-testid\": generate(['nav-bar'], props),\n className: className,\n activeTheme: activeTheme\n }, children);\n};\nvar ActionsBar$1 = styled(View)(templateObject_1$1E || (templateObject_1$1E = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n overflow: hidden;\\n padding-bottom: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n white-space: nowrap;\\n overflow: hidden;\\n padding-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Actions$3 = styled(View)(templateObject_2$R || (templateObject_2$R = __makeTemplateObject([\"\\n \", \":not(:last-child) {\\n margin-right: \", \";\\n }\\n\"], [\"\\n \", \":not(:last-child) {\\n margin-right: \", \";\\n }\\n\"])), Button$3, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$1E, templateObject_2$R;\nvar ActionsBar = function (props) {\n var className = props.className,\n backLabel = props.backLabel,\n onBackClick = props.onBackClick,\n actions = props.actions,\n onClick = props.onClick,\n renderActions = props.renderActions;\n return /*#__PURE__*/React__default.createElement(ActionsBar$1, {\n \"data-testid\": generate(['actions-bar'], props),\n className: className\n }, backLabel && ( /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"borderless\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronLeft, null);\n },\n size: \"small\",\n onClick: onBackClick,\n label: backLabel\n })), /*#__PURE__*/React__default.createElement(Actions$3, null, renderActions ? renderActions() : null, actions === null || actions === void 0 ? void 0 : actions.map(function (action) {\n var label = action.label,\n disabled = action.disabled,\n dropdownContent = action.dropdownContent;\n return /*#__PURE__*/React__default.createElement(Button$1, {\n onClick: onClick ? function (event) {\n return onClick(action, event);\n } : undefined,\n variant: \"borderless\",\n size: \"small\",\n label: label,\n key: label,\n dropdownContent: dropdownContent,\n disabled: disabled\n });\n })));\n};\nvar TitleBar = function (props) {\n var className = props.className,\n mainTitleText = props.mainTitleText,\n subtitleText = props.subtitleText,\n renderFavourite = props.renderFavourite,\n variant = props.variant,\n renderCta = props.renderCta,\n acinLogo = props.acinLogo,\n badge = props.badge;\n var renderResultsLayout = function () {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TitleWrapper$1, null, typeof mainTitleText === 'string' ? ( /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 4,\n weight: 300,\n ellipsis: true\n }, mainTitleText)) : ( /*#__PURE__*/React__default.createElement(RenderedTitleWrapper, null, mainTitleText)), subtitleText && ( /*#__PURE__*/React__default.createElement(Text$1, {\n size: 0,\n weight: 500,\n ellipsis: true\n }, subtitleText))), renderCta && /*#__PURE__*/React__default.createElement(ActionWrapper, null, renderCta()));\n };\n var renderDetailLayout = function () {\n return /*#__PURE__*/React__default.createElement(TitleWrapper$1, null, /*#__PURE__*/React__default.createElement(HeadingWrapper, null, renderFavourite && renderFavourite(), typeof mainTitleText === 'string' ? ( /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 2,\n weight: 500,\n ellipsis: true,\n withLogo: acinLogo\n }, mainTitleText)) : ( /*#__PURE__*/React__default.createElement(RenderedTitleWrapper, null, mainTitleText))), subtitleText && ( /*#__PURE__*/React__default.createElement(Text$1, {\n size: 1,\n weight: 400,\n ellipsis: true\n }, subtitleText)), badge && badge());\n };\n var renderLayout = function () {\n switch (variant) {\n default:\n case 'parent':\n return renderResultsLayout();\n case 'child':\n return renderDetailLayout();\n }\n };\n return /*#__PURE__*/React__default.createElement(TitleBar$1, {\n \"data-testid\": generate(['title-bar'], props),\n className: className\n }, renderLayout());\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar TagList$2 = styled.div(templateObject_3$D || (templateObject_3$D = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n\\n \", \"\\n\\n \", \" {\\n flex-shrink: 0;\\n }\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n\\n \", \"\\n\\n \", \" {\\n flex-shrink: 0;\\n }\\n\"])), function (p) {\n return p.inline ? css(templateObject_1$1D || (templateObject_1$1D = __makeTemplateObject([\"\\n overflow: hidden;\\n height: \", \";\\n \", \" {\\n break-inside: avoid;\\n :not(:first-child) {\\n margin-left: \", \";\\n }\\n }\\n \"], [\"\\n overflow: hidden;\\n height: \", \";\\n \", \" {\\n break-inside: avoid;\\n :not(:first-child) {\\n margin-left: \", \";\\n }\\n }\\n \"])), function (p) {\n return p.theme.spacing.getSize(7);\n }, Tag, function (p) {\n return p.theme.spacing.getSize(2);\n }) : css(templateObject_2$Q || (templateObject_2$Q = __makeTemplateObject([\"\\n \", \" {\\n margin-bottom: \", \";\\n :not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n \"], [\"\\n \", \" {\\n margin-bottom: \", \";\\n :not(:last-child) {\\n margin-right: \", \";\\n }\\n }\\n \"])), Tag, function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(2);\n });\n}, Tag);\nvar templateObject_1$1D, templateObject_2$Q, templateObject_3$D;\nvar TagList$1 = function (props) {\n var className = props.className,\n _a = props.variant,\n variant = _a === void 0 ? 'default' : _a,\n onClick = props.onClick,\n onDelete = props.onDelete,\n items = props.items,\n _b = props.inline,\n inline = _b === void 0 ? false : _b;\n return /*#__PURE__*/React__default.createElement(TagList$2, {\n inline: inline,\n \"data-testid\": generate(['tag-list', inline ? 'tag-list--inline' : null], props),\n className: className\n }, items.map(function (item) {\n return /*#__PURE__*/React__default.createElement(Tag, {\n key: item.id,\n variant: variant,\n onDelete: onDelete ? function (e) {\n return onDelete(item, e);\n } : undefined,\n onClick: onClick ? function (e) {\n return onClick(item, e);\n } : undefined,\n state: item.state\n }, item.label);\n }));\n};\n\n/**\r\n @param id - (required) - string\r\n @param label - (required) - string\r\n @param state - (optional) - 'unselected' | 'selected' | 'disabled'\r\n */\nvar TagList = styled(TagList$1)(templateObject_1$1C || (templateObject_1$1C = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1C;\nvar ToolBar = function (props) {\n var className = props.className,\n renderLayoutToggle = props.renderLayoutToggle,\n renderDataToggle = props.renderDataToggle,\n renderDropdown = props.renderDropdown,\n renderSort = props.renderSort,\n renderReload = props.renderReload,\n filterConfig = props.filterConfig,\n searchConfig = props.searchConfig;\n var renderSearch = function (searchConfig) {\n var _a = searchConfig.placeholder,\n placeholder = _a === void 0 ? 'Search' : _a,\n onChange = searchConfig.onChange,\n _b = searchConfig.value,\n value = _b === void 0 ? '' : _b;\n return /*#__PURE__*/React__default.createElement(Search, null, /*#__PURE__*/React__default.createElement(Input$1, {\n type: \"search\",\n value: value,\n leftAddon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgSearch, null);\n },\n onChange: onChange,\n placeholder: placeholder\n }));\n };\n var renderFilterArea = function (filterConfig) {\n var count = filterConfig.count,\n onClick = filterConfig.onClick,\n onDelete = filterConfig.onDelete,\n items = filterConfig.items;\n return /*#__PURE__*/React__default.createElement(FilterArea, null, /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"secondary\",\n onClick: onClick,\n label: count ? \"Filter (\".concat(count, \")\") : 'Filter'\n }), /*#__PURE__*/React__default.createElement(TagList, {\n inline: true,\n items: items,\n variant: \"Toolbar Filters\",\n onDelete: onDelete\n }));\n };\n return /*#__PURE__*/React__default.createElement(ToolBar$1, {\n \"data-testid\": generate(['tool-bar'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Primary, null, searchConfig && renderSearch(searchConfig), renderLayoutToggle && renderLayoutToggle(), renderDropdown && renderDropdown(), filterConfig && renderFilterArea(filterConfig)), /*#__PURE__*/React__default.createElement(Secondary, null, renderReload && renderReload(), renderDataToggle && renderDataToggle(), renderSort && renderSort()));\n};\nvar TabsBar$1 = styled(View)(templateObject_1$1B || (templateObject_1$1B = __makeTemplateObject([\"\\n white-space: nowrap;\\n overflow: hidden;\\n \", \";\\n display: inline-flex;\\n position: relative;\\n\\n &:after {\\n content: '';\\n position: absolute;\\n height: 1px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n background-color: \", \";\\n }\\n\"], [\"\\n white-space: nowrap;\\n overflow: hidden;\\n \", \";\\n display: inline-flex;\\n position: relative;\\n\\n &:after {\\n content: '';\\n position: absolute;\\n height: 1px;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n background-color: \", \";\\n }\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nstyled.button(templateObject_3$C || (templateObject_3$C = __makeTemplateObject([\"\\n position: relative;\\n padding: 0 \", \";\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: top;\\n outline: 0;\\n border: 0;\\n background: none;\\n z-index: calc(\", \" + 1);\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: 100%;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n position: absolute;\\n background-color: \", \";\\n transform: translateY(4px);\\n transition: 0.2s ease-in-out;\\n\\n \", \"\\n }\\n\"], [\"\\n position: relative;\\n padding: 0 \", \";\\n height: \", \";\\n display: flex;\\n justify-content: center;\\n align-items: top;\\n outline: 0;\\n border: 0;\\n background: none;\\n z-index: calc(\", \" + 1);\\n\\n &:after {\\n content: '';\\n height: \", \";\\n width: 100%;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n position: absolute;\\n background-color: \", \";\\n transform: translateY(4px);\\n transition: 0.2s ease-in-out;\\n\\n \", \"\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, zIndex, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.isActive && css(templateObject_2$P || (templateObject_2$P = __makeTemplateObject([\"\\n transform: translateY(0);\\n \"], [\"\\n transform: translateY(0);\\n \"])));\n});\nvar templateObject_1$1B, templateObject_2$P, templateObject_3$C;\nvar TabsBar = function (props) {\n var className = props.className,\n items = props.items,\n activeId = props.activeId,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(TabsBar$1, {\n \"data-testid\": generate(['tabs-bar'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(TabGroup, {\n tabs: items.map(function (item) {\n return {\n id: item.id,\n title: item.label\n };\n }),\n activeId: activeId,\n variant: \"default\",\n onClick: onClick ? function (id, e) {\n return onClick(id, e);\n } : undefined\n }));\n};\nvar PageHeaderCondensed$2 = styled(View)(templateObject_1$1A || (templateObject_1$1A = __makeTemplateObject([\"\\n padding: \", \";\\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\\n display: flex;\\n justify-content: space-between;\\n max-height: \", \";\\n \", \";\\n\\n \", \" {\\n align-items: center;\\n overflow: hidden;\\n }\\n\\n \", \" {\\n position: relative;\\n top: 2px;\\n }\\n\"], [\"\\n padding: \", \";\\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\\n display: flex;\\n justify-content: space-between;\\n max-height: \", \";\\n \", \";\\n\\n \", \" {\\n align-items: center;\\n overflow: hidden;\\n }\\n\\n \", \" {\\n position: relative;\\n top: 2px;\\n }\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(4), \" \").concat(p.theme.spacing.getSize(6));\n}, function (p) {\n return p.theme.spacing.getSize(18);\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, Primary, Heading$2);\nvar templateObject_1$1A;\nvar PageHeaderCondensed$1 = function (props) {\n var className = props.className,\n title = props.title,\n variant = props.variant,\n renderCta = props.renderCta,\n renderFavourite = props.renderFavourite,\n _a = props.backLabel,\n backLabel = _a === void 0 ? 'Back' : _a,\n onBackClick = props.onBackClick,\n renderReload = props.renderReload,\n _b = props.menuLabel,\n menuLabel = _b === void 0 ? 'Menu' : _b,\n menuOnClick = props.menuOnClick,\n menuDropdownContent = props.menuDropdownContent;\n var isParent = variant === 'parent';\n var activeTheme = useThemeProvider().activeTheme;\n var renderParentLayout = function () {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 4,\n weight: 300,\n ellipsis: true\n }, title), renderCta && /*#__PURE__*/React__default.createElement(ActionWrapper, null, renderCta()));\n };\n var renderChildLayout = function () {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Primary, null, onBackClick && ( /*#__PURE__*/React__default.createElement(IconButton, {\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronLeft, null);\n },\n label: backLabel,\n onClick: onBackClick,\n size: \"small\",\n variant: \"default\"\n })), renderFavourite && renderFavourite(), /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 2,\n weight: 500,\n ellipsis: true\n }, title)), /*#__PURE__*/React__default.createElement(Secondary, null, renderReload && renderReload(), (menuOnClick || menuDropdownContent) && ( /*#__PURE__*/React__default.createElement(IconButton, {\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgKebabVertical, null);\n },\n label: menuLabel,\n onClick: menuOnClick,\n dropdownContent: menuDropdownContent,\n size: \"small\",\n variant: \"default\"\n }))));\n };\n return /*#__PURE__*/React__default.createElement(PageHeaderCondensed$2, {\n \"data-testid\": generate([\"page-header--condensed-\".concat(variant)], props),\n className: className,\n activeTheme: activeTheme\n }, isParent ? renderParentLayout() : renderChildLayout());\n};\nvar CompactHeaderProvider$2 = styled(View)(templateObject_1$1z || (templateObject_1$1z = __makeTemplateObject([\"\"], [\"\"])));\nvar Wrapper$1 = styled(View)(templateObject_3$B || (templateObject_3$B = __makeTemplateObject([\"\\n position: fixed;\\n top: 0;\\n left: 88px; // Temporary offset for terminal\\n right: 0;\\n transform: translateY(-110%);\\n transition: all 0.25s ease-in-out;\\n z-index: calc(\", \" + 1);\\n\\n \", \"\\n\"], [\"\\n position: fixed;\\n top: 0;\\n left: 88px; // Temporary offset for terminal\\n right: 0;\\n transform: translateY(-110%);\\n transition: all 0.25s ease-in-out;\\n z-index: calc(\", \" + 1);\\n\\n \", \"\\n\"])), zIndex, function (p) {\n return p.isVisible && css(templateObject_2$O || (templateObject_2$O = __makeTemplateObject([\"\\n transform: translateY(0);\\n \"], [\"\\n transform: translateY(0);\\n \"])));\n});\nvar templateObject_1$1z, templateObject_2$O, templateObject_3$B;\nvar CompactHeaderProvider$1 = function (props) {\n var className = props.className,\n _a = props.showAfter,\n showAfter = _a === void 0 ? 1000 : _a,\n renderHeader = props.renderHeader,\n children = props.children;\n var _b = __read(React__default.useState(false), 2),\n isVisible = _b[0],\n setIsVisible = _b[1];\n var _c = __read(React__default.useState(0), 2),\n scrollPosition = _c[0],\n setScrollPosition = _c[1];\n var handleScroll = function () {\n var position = window.scrollY;\n setScrollPosition(position);\n };\n React__default.useEffect(function () {\n window.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return function () {\n window.removeEventListener('scroll', handleScroll);\n if (scrollPosition >= showAfter) {\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n };\n }, [scrollPosition, setIsVisible, showAfter]);\n return /*#__PURE__*/React__default.createElement(CompactHeaderProvider$2, {\n \"data-testid\": generate(['compact-header-provider'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Wrapper$1, {\n isVisible: isVisible\n }, renderHeader()), children);\n};\n\n/**\r\n @param titleBar - (required) - () => React.ReactElement\r\n @param variant - (required) - PageHeaderVariant\r\n @param className - (optional) - string\r\n @param navBar - (optional) - () => React.ReactElement\r\n @param actionsBar - (optional) - () => React.ReactElement\r\n @param toolBar - (optional) - () => React.ReactElement\r\n @param tabsBar - (optional) - () => React.ReactElement\r\n */\nvar PageHeader = styled(PageHeader$1)(templateObject_1$1y || (templateObject_1$1y = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param className - (optional) string\r\n */\nvar PageHeaderNavBar = styled(NavBar)(templateObject_2$N || (templateObject_2$N = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param label - (required) - string\r\n @param disabled - (optional) - boolean\r\n @param dropdownContent - (optional) - (onClose: () => void) => {}\r\n */\nvar PageHeaderActionsBar = styled(ActionsBar)(templateObject_3$A || (templateObject_3$A = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param variant - (required) - PageHeaderVariant\r\n @param mainTitleText - (required) - string | React.ReactElement\r\n @param className - (optional) - string\r\n @param subtitleText - (optional) - string\r\n @param renderFavourite - (optional) - () => React.ReactElement\r\n @param renderCta - (optional) - () => React.ReactElement\r\n @param acinLogo - (optional) - boolean\r\n @param badge - (optional) - () => React.ReactElement\r\n */\nvar PageHeaderTitleBar = styled(TitleBar)(templateObject_4$x || (templateObject_4$x = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param className - (optional) - string\r\n @param renderSearch - (optional) - () => React.ReactElement\r\n @param renderLayoutToggle - (optional) - () => React.ReactElement\r\n @param renderDataToggle - (optional) - () => React.ReactElement\r\n @param renderDropdown - (optional) - () => React.ReactElement\r\n @param renderSort - (optional) - () => React.ReactElement\r\n @param renderReload - (optional) - () => React.ReactElement\r\n @param filterConfig - (optional) - FilterConfig\r\n @param searchConfig - (optional) - SearchConfig\r\n */\nvar PageHeaderToolBar = styled(ToolBar)(templateObject_5$q || (templateObject_5$q = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param items - (required) - TabItem[]\r\n @param activeId - (required) - string\r\n @param className - (optional) - string\r\n @param onClick - (optional) - (item: string, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar PageHeaderTabsBar = styled(TabsBar)(templateObject_6$l || (templateObject_6$l = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param title - (required) - string\r\n @param variant - (required) - PageHeaderVariant\r\n @param className - (optional) - string\r\n @param renderCta - (optional) - () => React.ReactElement\r\n @param renderFavourite - (optional) - () => React.ReactElement\r\n @param backLabel - (optional) - string\r\n @param onBackClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param renderReload - (optional) - () => React.ReactElement\r\n @param menuLabel - (optional) - string\r\n @param menuOnClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param menuDropdownContent - (optional) - (onClose: () => void) => {}\r\n */\nvar PageHeaderCondensed = styled(PageHeaderCondensed$1)(templateObject_7$j || (templateObject_7$j = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n @param renderHeader - (required) - () => React.ReactElement\r\n @param className - (optional) - string\r\n @param showAfter - (optional) - number\r\n */\nvar CompactHeaderProvider = styled(CompactHeaderProvider$1)(templateObject_8$d || (templateObject_8$d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1y, templateObject_2$N, templateObject_3$A, templateObject_4$x, templateObject_5$q, templateObject_6$l, templateObject_7$j, templateObject_8$d;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Toolbar$2 = styled(View)(templateObject_1$1x || (templateObject_1$1x = __makeTemplateObject([\"\\n \", \";\\n display: inline-flex;\\n border-radius: \", \";\\n border: 1px solid \", \";\\n overflow: hidden;\\n min-width: fit-content;\\n\"], [\"\\n \", \";\\n display: inline-flex;\\n border-radius: \", \";\\n border: 1px solid \", \";\\n overflow: hidden;\\n min-width: fit-content;\\n\"])), function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar Button = styled(IconButton)(templateObject_2$M || (templateObject_2$M = __makeTemplateObject([\"\\n color: \", \";\\n width: \", \";\\n height: \", \";\\n z-index: calc(\", \" + 1);\\n margin: -1px 0 -1px;\\n border-radius: 0;\\n\"], [\"\\n color: \", \";\\n width: \", \";\\n height: \", \";\\n z-index: calc(\", \" + 1);\\n margin: -1px 0 -1px;\\n border-radius: 0;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, zIndex);\nvar templateObject_1$1x, templateObject_2$M;\nvar Toolbar$1 = function (props) {\n var className = props.className,\n _a = props.activeIds,\n activeIds = _a === void 0 ? [] : _a,\n items = props.items,\n onClick = props.onClick,\n onMouseDown = props.onMouseDown;\n var activeTheme = useThemeProvider().activeTheme;\n var renderButton = function (item) {\n var isActive = activeIds.includes(item.id);\n return /*#__PURE__*/React__default.createElement(Button, {\n \"data-testid\": generate([\"icon-btn--\".concat(item.id), isActive ? \"icon-btn--\".concat(item.id, \"-active\") : null], props),\n key: item.id,\n label: item.label,\n icon: item.icon,\n onClick: onClick ? function (e) {\n return onClick(item.id, e);\n } : undefined,\n onMouseDown: onMouseDown ? function (e) {\n return onMouseDown(item.id, e);\n } : undefined,\n size: \"default\",\n variant: activeIds.includes(item.id) ? 'active' : 'default',\n \"aria-pressed\": activeIds.includes(item.id),\n disabled: item.disabled\n });\n };\n var renderButtonGroup = function (group, index) {\n if (Array.isArray(group)) {\n return /*#__PURE__*/React__default.createElement(ButtonGroup, {\n key: index\n }, group.map(renderButton));\n } else {\n return renderButton(group);\n }\n };\n return /*#__PURE__*/React__default.createElement(Toolbar$2, {\n \"data-testid\": generate(['toolbar'], props),\n className: className,\n activeTheme: activeTheme\n }, items.map(renderButtonGroup));\n};\n\n/**\r\n @param items - (required) - ({ id: string; icon: () => React.ReactElement; label: string;} | { id: string; icon: () => React.ReactElement; label: string;}[])[]\r\n @param className - (optional) - string\r\n @param activeIds - (optional) - string[]; // Array of all active id\r\n @param onClick - (optional) - (item: string, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param onMouseDown - (optional) - (item: string, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar Toolbar = styled(Toolbar$1)(templateObject_1$1w || (templateObject_1$1w = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1w;\n\n// This named style should be the wrapper for the component i.e. the module\nvar SortAction$2 = styled.button(templateObject_1$1v || (templateObject_1$1v = __makeTemplateObject([\"\\n border: none;\\n padding: 0;\\n background: transparent;\\n outline: none;\\n\\n color: \", \";\\n font-weight: 500;\\n cursor: pointer;\\n\\n &:hover,\\n &:active,\\n &:disabled {\\n background: transparent;\\n }\\n\"], [\"\\n border: none;\\n padding: 0;\\n background: transparent;\\n outline: none;\\n\\n color: \", \";\\n font-weight: 500;\\n cursor: pointer;\\n\\n &:hover,\\n &:active,\\n &:disabled {\\n background: transparent;\\n }\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar SortIcon = styled.span(templateObject_2$L || (templateObject_2$L = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$1v, templateObject_2$L;\nvar SortAction$1 = function (props) {\n var className = props.className,\n children = props.children,\n direction = props.direction,\n onClick = props.onClick;\n var getSortArrow = function () {\n if (direction === 'ASC') {\n return /*#__PURE__*/React__default.createElement(SortIcon, null, /*#__PURE__*/React__default.createElement(MemoSvgSortDown, {\n size: \"small\"\n }));\n } else {\n return /*#__PURE__*/React__default.createElement(SortIcon, null, /*#__PURE__*/React__default.createElement(MemoSvgSortUp, {\n size: \"small\"\n }));\n }\n };\n return /*#__PURE__*/React__default.createElement(SortAction$2, {\n \"data-testid\": generate(['sort-action', \"sort-action--\".concat(direction)], props),\n className: className,\n onClick: function (e) {\n return onClick(direction === 'ASC' ? 'DESC' : 'ASC', e);\n }\n }, children, getSortArrow());\n};\n\n/**\r\n @param direction - (required) - 'ASC' | 'DESC'\r\n @param onClick - (required) - (direction: 'ASC' | 'DESC', e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n @param className - (optional) - string\r\n */\nvar SortAction = styled(SortAction$1)(templateObject_1$1u || (templateObject_1$1u = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1u;\n\n// This named style should be the wrapper for the component i.e. the module\nvar rotate = keyframes(templateObject_1$1t || (templateObject_1$1t = __makeTemplateObject([\"\\n from {\\n transform: rotate(0deg);\\n }\\n\\n to {\\n transform: rotate(-360deg);\\n }\\n\"], [\"\\n from {\\n transform: rotate(0deg);\\n }\\n\\n to {\\n transform: rotate(-360deg);\\n }\\n\"])));\nvar LastUpdated$2 = styled.button(templateObject_4$w || (templateObject_4$w = __makeTemplateObject([\"\\n padding: 0;\\n border: 0;\\n font-size: \", \";\\n display: flex;\\n height: \", \";\\n align-items: center;\\n line-height: normal;\\n outline: 0;\\n background: none;\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n line-height: normal;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-left: \", \";\\n transform: rotate(0deg);\\n transition: transform 0.2s linear;\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n padding: 0;\\n border: 0;\\n font-size: \", \";\\n display: flex;\\n height: \", \";\\n align-items: center;\\n line-height: normal;\\n outline: 0;\\n background: none;\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n line-height: normal;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n }\\n\\n \", \" {\\n margin-left: \", \";\\n transform: rotate(0deg);\\n transition: transform 0.2s linear;\\n color: \", \";\\n }\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.type.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, Text$1, Text$1, function (p) {\n return p.theme.spacing.getSize();\n}, IconWrapper$4, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return getContrastTextColor(p.activeTheme);\n}, function (p) {\n return p.onClick && css(templateObject_2$K || (templateObject_2$K = __makeTemplateObject([\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"], [\"\\n &:hover {\\n cursor: pointer;\\n }\\n \"])));\n}, function (p) {\n return p.isLoading && css(templateObject_3$z || (templateObject_3$z = __makeTemplateObject([\"\\n opacity: 0.4;\\n\\n &:hover {\\n cursor: default;\\n }\\n\\n \", \" {\\n animation: \", \" 1s linear infinite;\\n }\\n \"], [\"\\n opacity: 0.4;\\n\\n &:hover {\\n cursor: default;\\n }\\n\\n \", \" {\\n animation: \", \" 1s linear infinite;\\n }\\n \"])), IconWrapper$4, rotate);\n});\nvar DataUpdated = styled(View)(templateObject_5$p || (templateObject_5$p = __makeTemplateObject([\"\\n display: inline-flex;\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n line-height: normal;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n }\\n\"], [\"\\n display: inline-flex;\\n\\n \", \" {\\n display: inline-flex;\\n align-items: center;\\n line-height: normal;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n }\\n\"])), Text$1, Text$1, function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$1t, templateObject_2$K, templateObject_3$z, templateObject_4$w, templateObject_5$p;\nvar LastUpdated$1 = function (props) {\n var className = props.className,\n timestamp = props.timestamp,\n isLoading = props.isLoading,\n onClick = props.onClick,\n _a = props.isReadOnly,\n isReadOnly = _a === void 0 ? false : _a;\n var activeTheme = useThemeProvider().activeTheme;\n var renderText = function () {\n return /*#__PURE__*/React__default.createElement(Text$1, {\n weight: 300\n }, isReadOnly ? 'Data Updated:' : 'Last Updated:', /*#__PURE__*/React__default.createElement(Text$1, {\n inline: true,\n weight: 400\n }, format(new Date(timestamp), 'd MMM yyyy, kk:mm')));\n };\n if (isReadOnly) {\n return /*#__PURE__*/React__default.createElement(DataUpdated, {\n className: className,\n \"data-testid\": generate(['data-updated'], props)\n }, renderText());\n }\n return /*#__PURE__*/React__default.createElement(LastUpdated$2, {\n \"data-testid\": generate(['last-updated'], props),\n className: className,\n isLoading: isLoading,\n onClick: !isLoading ? onClick : undefined,\n disabled: isLoading,\n activeTheme: activeTheme\n }, renderText(), /*#__PURE__*/React__default.createElement(MemoSvgRefresh, {\n size: \"large\"\n }));\n};\n\n/**\r\n @param timestamp - (required) - Date\r\n @param className - (optional) - string\r\n @param isLoading - (optional) - boolean\r\n @param isReadOnly - (optional) - boolean\r\n @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar LastUpdated = styled(LastUpdated$1)(templateObject_1$1s || (templateObject_1$1s = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1s;\n\n// This named style should be the wrapper for the component i.e. the module\nvar AutosuggestTags$2 = styled.div(templateObject_1$1r || (templateObject_1$1r = __makeTemplateObject([\"\"], [\"\"])));\nvar AutosuggestTagsList = styled.div(templateObject_2$J || (templateObject_2$J = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$1r, templateObject_2$J;\nvar AutosuggestTags$1 = function (props) {\n var className = props.className,\n _a = props.variant,\n variant = _a === void 0 ? 'Filter Panel' : _a,\n items = props.items,\n activeItems = props.activeItems,\n onRemove = props.onRemove,\n onAdd = props.onAdd,\n placeholder = props.placeholder;\n // Filter the old results out of the list?\n var activeIds = activeItems.map(function (item) {\n return item.id;\n });\n var filteredItems = items.filter(function (item) {\n return !activeIds.includes(item.id);\n });\n return /*#__PURE__*/React__default.createElement(AutosuggestTags$2, {\n \"data-testid\": generate(['autosuggest-tags'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Autosuggest, {\n minLength: 0,\n items: filteredItems,\n onSelect: onAdd,\n leftAddon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgSearch, null);\n },\n clearOnSelect: true,\n placeholder: placeholder\n }), /*#__PURE__*/React__default.createElement(AutosuggestTagsList, null, /*#__PURE__*/React__default.createElement(TagList, {\n variant: variant,\n items: activeItems,\n onDelete: onRemove\n })));\n};\n\n/**\r\n * @param items - (required) - AutoSuggestItemTag[]\r\n * @param activeItems - (required) - AutoSuggestItemTag[]\r\n * @param onRemove - (required) - (item: AutoSuggestItemTag) => void\r\n * @param onAdd - (required) - (item: AutoSuggestItemTag) => void\r\n * @param className - (optional) - string\r\n * @param variant - (optional) - TagVariants\r\n * @param placeholder - (optional) - string\r\n */\nvar AutosuggestTags = styled(AutosuggestTags$1)(templateObject_1$1q || (templateObject_1$1q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1q;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ShowMore$2 = styled.div(templateObject_1$1p || (templateObject_1$1p = __makeTemplateObject([\"\"], [\"\"])));\nvar LinkWrapper = styled.div(templateObject_2$I || (templateObject_2$I = __makeTemplateObject([\"\\n padding: \", \" 0;\\n\"], [\"\\n padding: \", \" 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar templateObject_1$1p, templateObject_2$I;\nvar ShowMoreButton$1 = function (props) {\n var getIsOpen = props.getIsOpen,\n onClick = props.onClick,\n _a = props.showLessLabel,\n showLessLabel = _a === void 0 ? 'Show less' : _a,\n _b = props.showMoreLabel,\n showMoreLabel = _b === void 0 ? 'Show more' : _b;\n return /*#__PURE__*/React__default.createElement(Link, {\n variant: \"secondary\",\n icon: function () {\n return getIsOpen() ? /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, null) : /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null);\n },\n onClick: onClick\n }, getIsOpen() ? showLessLabel : showMoreLabel);\n};\nvar CustomRenderStyles = css(templateObject_1$1o || (templateObject_1$1o = __makeTemplateObject([\"\\n h1,\\n h2,\\n h3,\\n h4 {\\n display: block;\\n line-height: \", \";\\n\\n &:not(:first-of-type) {\\n margin-top: \", \";\\n }\\n }\\n h1 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h2 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h3 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h4 {\\n color: \", \";\\n font-size: \", \";\\n }\\n p {\\n display: block;\\n color: \", \";\\n font-size: \", \";\\n line-height: \", \";\\n\\n &:not(:first-of-type) {\\n margin-top: \", \";\\n }\\n }\\n ol {\\n list-style: decimal;\\n padding-left: \", \";\\n color: \", \";\\n\\n & li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n }\\n ul {\\n list-style: disc;\\n padding-left: \", \";\\n color: \", \";\\n\\n & li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n }\\n table {\\n text-align: left;\\n line-height: \", \";\\n background-color: \", \";\\n width: 100%;\\n }\\n thead {\\n color: \", \";\\n }\\n tr {\\n border-bottom: 1px solid \", \";\\n }\\n th {\\n padding: \", \" \", \";\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n font-weight: 500;\\n }\\n tbody {\\n border-top: 0;\\n box-sizing: border-box;\\n color: \", \";\\n }\\n td {\\n padding: \", \" \", \";\\n }\\n strong {\\n font-weight: bold;\\n }\\n em {\\n font-style: italic;\\n }\\n\\n blockquote {\\n border-left: 2px solid #ccc;\\n padding-left: \", \";\\n margin: \", \";\\n }\\n\"], [\"\\n h1,\\n h2,\\n h3,\\n h4 {\\n display: block;\\n line-height: \", \";\\n\\n &:not(:first-of-type) {\\n margin-top: \", \";\\n }\\n }\\n h1 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h2 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h3 {\\n color: \", \";\\n font-size: \", \";\\n }\\n h4 {\\n color: \", \";\\n font-size: \", \";\\n }\\n p {\\n display: block;\\n color: \", \";\\n font-size: \", \";\\n line-height: \", \";\\n\\n &:not(:first-of-type) {\\n margin-top: \", \";\\n }\\n }\\n ol {\\n list-style: decimal;\\n padding-left: \", \";\\n color: \", \";\\n\\n & li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n }\\n ul {\\n list-style: disc;\\n padding-left: \", \";\\n color: \", \";\\n\\n & li {\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n }\\n table {\\n text-align: left;\\n line-height: \", \";\\n background-color: \", \";\\n width: 100%;\\n }\\n thead {\\n color: \", \";\\n }\\n tr {\\n border-bottom: 1px solid \", \";\\n }\\n th {\\n padding: \", \" \", \";\\n border-top: 1px solid \", \";\\n border-bottom: 1px solid \", \";\\n font-weight: 500;\\n }\\n tbody {\\n border-top: 0;\\n box-sizing: border-box;\\n color: \", \";\\n }\\n td {\\n padding: \", \" \", \";\\n }\\n strong {\\n font-weight: bold;\\n }\\n em {\\n font-style: italic;\\n }\\n\\n blockquote {\\n border-left: 2px solid #ccc;\\n padding-left: \", \";\\n margin: \", \";\\n }\\n\"])), function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.type.getSize(3);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.type.getSize(2);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.type.getSize(1);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.type.getSize(0);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.type.getSize(0);\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.text.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.type.lineHeight;\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\n// This named style should be the wrapper for the component i.e. the module\nvar Markdown$2 = styled(View)(templateObject_2$H || (templateObject_2$H = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), CustomRenderStyles);\nvar templateObject_1$1o, templateObject_2$H;\nvar Markdown$1 = function (props) {\n var className = props.className,\n content = props.content;\n var markdownContent = content && unified().use(markdown).use(remark2react).processSync(content).result;\n if (!content) return null;\n return /*#__PURE__*/React__default.createElement(Markdown$2, {\n \"data-testid\": generate(['markdown'], props),\n className: className\n }, markdownContent);\n};\nvar Markdown = styled(Markdown$1)(templateObject_1$1n || (templateObject_1$1n = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1n;\nvar ShowMore$1 = function (props) {\n var className = props.className,\n isExpanded = props.isExpanded,\n onChange = props.onChange,\n defaultOpen = props.defaultOpen,\n _a = props.showMoreLength,\n showMoreLength = _a === void 0 ? 303 : _a,\n showMoreLabel = props.showMoreLabel,\n showLessLabel = props.showLessLabel,\n text = props.text,\n _b = props.textSize,\n textSize = _b === void 0 ? -1 : _b,\n _c = props.showPreview,\n showPreview = _c === void 0 ? false : _c,\n children = props.children;\n var _d = __read(useState(defaultOpen || false), 2),\n isOpen = _d[0],\n setIsOpen = _d[1];\n var onClick = function () {\n if (onChange) {\n onChange(!isExpanded);\n } else {\n setIsOpen(!isOpen);\n }\n };\n var getIsOpen = function () {\n return isExpanded !== undefined ? isExpanded : isOpen;\n };\n var trimmedText = text === null || text === void 0 ? void 0 : text.substring(0, showMoreLength);\n var sentenceBroken = (trimmedText === null || trimmedText === void 0 ? void 0 : trimmedText.includes('.')) ? trimmedText === null || trimmedText === void 0 ? void 0 : trimmedText.substring(0, trimmedText === null || trimmedText === void 0 ? void 0 : trimmedText.lastIndexOf('.')) : trimmedText === null || trimmedText === void 0 ? void 0 : trimmedText.substring(0, trimmedText === null || trimmedText === void 0 ? void 0 : trimmedText.lastIndexOf(' '));\n var hasMoreText = text && (text === null || text === void 0 ? void 0 : text.length) > showMoreLength;\n var previewText = \"\".concat(sentenceBroken, \"...\");\n var renderText = function () {\n if (!getIsOpen() && showPreview && hasMoreText) {\n return /*#__PURE__*/React__default.createElement(Markdown, {\n content: previewText\n });\n }\n if (!getIsOpen() && !showPreview) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null);\n }\n return /*#__PURE__*/React__default.createElement(Markdown, {\n content: text\n });\n };\n return /*#__PURE__*/React__default.createElement(ShowMore$2, {\n \"data-testid\": generate(['show-more', \"show-more--\".concat(getIsOpen() ? 'open' : 'closed')], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Collapse, {\n isOpen: text ? true : getIsOpen()\n }, text && ( /*#__PURE__*/React__default.createElement(Text$1, {\n size: textSize,\n weight: 400,\n variant: \"secondary\"\n }, renderText())), getIsOpen() ? children : null), (hasMoreText || children) && ( /*#__PURE__*/React__default.createElement(LinkWrapper, null, /*#__PURE__*/React__default.createElement(ShowMoreButton$1, {\n getIsOpen: getIsOpen,\n onClick: onClick,\n showMoreLabel: showMoreLabel,\n showLessLabel: showLessLabel\n })))));\n};\n\n/**\r\n @param className - (optional) - string\r\n @param isExpanded - (optional) - boolean\r\n @param defaultOpen - (optional) - boolean\r\n @param showLessLabel - (optional) - string\r\n @param showMoreLabel - (optional) - string\r\n @param onChange - (optional) - (isExpanded: boolean) => void\r\n @param text - (optional) - string\r\n @param showPreview - (optional) - boolean\r\n @param showMoreLength - (optional) - number\r\n @param textSize - (optional) - number\r\n */\nvar ShowMore = styled(ShowMore$1)(templateObject_1$1m || (templateObject_1$1m = __makeTemplateObject([\"\"], [\"\"])));\nvar ShowMoreButton = styled(ShowMoreButton$1)(templateObject_2$G || (templateObject_2$G = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1m, templateObject_2$G;\nvar stateVariants = function (state) {\n if (!state) return null;\n return css(templateObject_1$1l || (templateObject_1$1l = __makeTemplateObject([\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 4px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 4px;\\n top: 0;\\n left: 0;\\n }\\n\\n background: \", \";\\n \"], [\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 4px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 4px;\\n top: 0;\\n left: 0;\\n }\\n\\n background: \", \";\\n \"])), function (p) {\n return p.theme.colors[state].getValue(500).main;\n }, function (p) {\n return p.theme.colors[state].getValue(100).main;\n });\n};\nvar DataCard$2 = styled(Card)(templateObject_2$F || (templateObject_2$F = __makeTemplateObject([\"\\n \", \";\\n \", \"\\n\\n \", \" {\\n align-items: initial;\\n color: \", \";\\n font-size: \", \";\\n height: auto;\\n margin-top: \", \";\\n\\n :hover {\\n color: \", \";\\n }\\n }\\n\"], [\"\\n \", \";\\n \", \"\\n\\n \", \" {\\n align-items: initial;\\n color: \", \";\\n font-size: \", \";\\n height: auto;\\n margin-top: \", \";\\n\\n :hover {\\n color: \", \";\\n }\\n }\\n\"])), function (p) {\n return stateVariants(p.state);\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, Button$1, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar TitleWrapper = styled(View)(templateObject_3$y || (templateObject_3$y = __makeTemplateObject([\"\\n display: flex;\\n align-items: flex-start;\\n\"], [\"\\n display: flex;\\n align-items: flex-start;\\n\"])));\nvar Title$3 = styled(Text$1)(templateObject_4$v || (templateObject_4$v = __makeTemplateObject([\"\\n font-weight: 300;\\n\"], [\"\\n font-weight: 300;\\n\"])));\nvar SubTitle = styled(Text$1)(templateObject_5$o || (templateObject_5$o = __makeTemplateObject([\"\\n font-weight: 500;\\n margin-left: \", \";\\n flex-grow: 1;\\n min-width: 0;\\n\\n \", \" {\\n margin-top: 0;\\n }\\n\"], [\"\\n font-weight: 500;\\n margin-left: \", \";\\n flex-grow: 1;\\n min-width: 0;\\n\\n \", \" {\\n margin-top: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, Button$1);\nvar CardLink = styled(Link)(templateObject_6$k || (templateObject_6$k = __makeTemplateObject([\"\\n color: unset !important; /* To override the chevron and play well with dark mode*/\\n\"], [\"\\n color: unset !important; /* To override the chevron and play well with dark mode*/\\n\"])));\nvar ContentWrapper = styled(View)(templateObject_7$i || (templateObject_7$i = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(p.condensed ? 2 : 3);\n});\nvar templateObject_1$1l, templateObject_2$F, templateObject_3$y, templateObject_4$v, templateObject_5$o, templateObject_6$k, templateObject_7$i;\nvar DataCard$1 = function (props) {\n var className = props.className,\n children = props.children,\n title = props.title,\n subTitle = props.subTitle,\n state = props.state,\n _a = props.condensed,\n condensed = _a === void 0 ? false : _a,\n href = props.href;\n var subTitleComp = /*#__PURE__*/React__default.createElement(SubTitle, {\n \"data-testid\": generate(['data-card__subTitle'], props)\n }, subTitle);\n var renderWithLink = href && typeof subTitle === 'string';\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(DataCard$2, {\n \"data-testid\": generate(['data-card', state ? \"data-card--\".concat(state) : null], props),\n className: className,\n state: state,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(TitleWrapper, {\n \"data-testid\": generate(['data-card__title-wrapper'], props)\n }, /*#__PURE__*/React__default.createElement(Title$3, {\n \"data-testid\": generate(['data-card__title'], props)\n }, title), subTitle && (renderWithLink ? ( /*#__PURE__*/React__default.createElement(CardLink, {\n href: href,\n variant: \"secondary\"\n }, subTitleComp)) : subTitleComp)), children && ( /*#__PURE__*/React__default.createElement(ContentWrapper, {\n condensed: condensed,\n \"data-testid\": generate(['data-card__content-wrapper'], props)\n }, children)));\n};\n\n/**\r\n * @param title - (required) - string | React.ReactElement\r\n * @param className - (optional) - string\r\n * @param subTitle - (optional) - string | React.ReactElement\r\n * @param state - (optional) - SC.State\r\n * @param condensed - (optional) - boolean\r\n * @param href - (optional) - string\r\n */\nvar DataCard = styled(DataCard$1)(templateObject_1$1k || (templateObject_1$1k = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1k;\n\n// This named style should be the wrapper for the component i.e. the module\nvar LinkList$2 = styled.div(templateObject_1$1j || (templateObject_1$1j = __makeTemplateObject([\"\\n \", \" {\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \"; /* TODO: This should be using Grey 200 though that is not a valid border colour at this time, reverted to nearest which is Grey 100 */\\n }\\n }\\n\"], [\"\\n \", \" {\\n &:not(:last-child) {\\n margin-bottom: \", \";\\n padding-bottom: \", \";\\n border-bottom: 1px solid \", \"; /* TODO: This should be using Grey 200 though that is not a valid border colour at this time, reverted to nearest which is Grey 100 */\\n }\\n }\\n\"])), Link$2, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(2);\n});\nvar TextWrapper = styled.div(templateObject_2$E || (templateObject_2$E = __makeTemplateObject([\"\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n\"], [\"\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n\"])));\nvar templateObject_1$1j, templateObject_2$E;\nvar LinkList$1 = function (props) {\n var className = props.className,\n links = props.links,\n onClick = props.onClick;\n return /*#__PURE__*/React__default.createElement(LinkList$2, {\n \"data-testid\": generate(['link-list'], props),\n className: className\n }, links.map(function (link) {\n var label = link.label,\n href = link.href,\n id = link.id,\n newWindow = link.newWindow,\n icon = link.icon;\n return /*#__PURE__*/React__default.createElement(Link, {\n variant: \"secondary\",\n key: id || label,\n href: href,\n newWindow: newWindow,\n isListItem: true,\n icon: icon,\n onClick: onClick ? function (e) {\n return onClick(link, e);\n } : undefined\n }, /*#__PURE__*/React__default.createElement(TextWrapper, null, label));\n }));\n};\n\n/**\r\n * @param links - (required) - Array<{ label: string; href?: string; id?: string; newWindow?: boolean; icon?: () => React.ReactElement; }>\r\n * @param className - (optional) - string\r\n * @param onClick - (optional) - (item: LinkListItem, event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void\r\n */\nvar LinkList = styled(LinkList$1)(templateObject_1$1i || (templateObject_1$1i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1i;\n\n// This named style should be the wrapper for the component i.e. the module\nvar InfoText$2 = styled.div(templateObject_1$1h || (templateObject_1$1h = __makeTemplateObject([\"\\n display: inline-flex;\\n max-width: 100%;\\n justify-content: start;\\n color: \", \";\\n\"], [\"\\n display: inline-flex;\\n max-width: 100%;\\n justify-content: start;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue();\n});\nvar Wrapper = styled.div(templateObject_2$D || (templateObject_2$D = __makeTemplateObject([\"\\n display: inline-flex;\\n margin-left: \", \";\\n font-size: \", \";\\n align-items: center;\\n\\n \", \" {\\n color: \", \";\\n }\\n\"], [\"\\n display: inline-flex;\\n margin-left: \", \";\\n font-size: \", \";\\n align-items: center;\\n\\n \", \" {\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.type.getSize(1);\n}, IconWrapper$4, function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar templateObject_1$1h, templateObject_2$D;\nvar InfoText$1 = function (props) {\n var className = props.className,\n children = props.children,\n tooltipContent = props.tooltipContent,\n icon = props.icon;\n return /*#__PURE__*/React__default.createElement(InfoText$2, {\n \"data-testid\": generate(['info-text'], props),\n className: className\n }, children, /*#__PURE__*/React__default.createElement(Tooltip, {\n content: tooltipContent\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(Wrapper, {\n ref: tooltipRef\n }, icon ? icon() : /*#__PURE__*/React__default.createElement(MemoSvgAlertInformation, null));\n }));\n};\n\n/**\r\n * @param tooltipContent - (required) - string | React.ReactElement\r\n * @param className - (optional) - string\r\n * @param icon - (optional) - () => React.ReactElement\r\n */\nvar InfoText = styled(InfoText$1)(templateObject_1$1g || (templateObject_1$1g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1g;\nvar TooltipWrapper = styled(InfoText)(templateObject_1$1f || (templateObject_1$1f = __makeTemplateObject([\"\\n white-space: pre;\\n\"], [\"\\n white-space: pre;\\n\"])));\nvar KeyText = styled(Text$1)(templateObject_2$C || (templateObject_2$C = __makeTemplateObject([\"\\n display: block;\\n color: \", \";\\n line-height: 2;\\n\"], [\"\\n display: block;\\n color: \", \";\\n line-height: 2;\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar Count = styled(KeyText)(templateObject_3$x || (templateObject_3$x = __makeTemplateObject([\"\\n display: inline-flex;\\n color: \", \";\\n margin-right: \", \";\\n\"], [\"\\n display: inline-flex;\\n color: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Key = styled.div(templateObject_8$c || (templateObject_8$c = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n align-items: stretch;\\n \", \";\\n\\n &:before {\\n content: '';\\n border-radius: \", \";\\n background: \", \";\\n position: absolute;\\n left: 0;\\n \", \";\\n }\\n\"], [\"\\n position: relative;\\n display: flex;\\n align-items: stretch;\\n \", \";\\n\\n &:before {\\n content: '';\\n border-radius: \", \";\\n background: \", \";\\n position: absolute;\\n left: 0;\\n \", \";\\n }\\n\"])), function (p) {\n if (p.size === 'small') {\n return css(templateObject_4$u || (templateObject_4$u = __makeTemplateObject([\"\\n padding-left: \", \";\\n \"], [\"\\n padding-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(5.5);\n });\n }\n if (p.size === 'default') {\n return css(templateObject_5$n || (templateObject_5$n = __makeTemplateObject([\"\\n padding-left: \", \";\\n \"], [\"\\n padding-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(8);\n });\n }\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n var _a, _b, _c;\n return ((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) !== undefined && ((_b = p.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) !== undefined ? p.theme.colors.dataVisWithMeaning.getValue(((_c = p.colorPalette) === null || _c === void 0 ? void 0 : _c.paletteIndex) || undefined, p.colorPalette.shade || undefined).main : isDarkMode$4(p.activeTheme) ? p.theme.colors.borders.getValue() : p.theme.colors.borders.getValue(1);\n}, function (p) {\n if (p.size === 'small') {\n return css(templateObject_6$j || (templateObject_6$j = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n top: 5px;\\n \"], [\"\\n height: \", \";\\n width: \", \";\\n top: 5px;\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, function (p) {\n return p.theme.spacing.getSize(3);\n });\n }\n if (p.size === 'default') {\n return css(templateObject_7$h || (templateObject_7$h = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n top: 2px;\\n \"], [\"\\n height: \", \";\\n width: \", \";\\n top: 2px;\\n \"])), function (p) {\n return p.theme.spacing.getSize(5);\n }, function (p) {\n return p.theme.spacing.getSize(5);\n });\n }\n});\nvar columnStyle = css(templateObject_9$c || (templateObject_9$c = __makeTemplateObject([\"\\n display: inline-flex;\\n flex-wrap: wrap;\\n\\n \", \" {\\n margin-bottom: \", \";\\n padding-right: \", \";\\n }\\n\"], [\"\\n display: inline-flex;\\n flex-wrap: wrap;\\n\\n \", \" {\\n margin-bottom: \", \";\\n padding-right: \", \";\\n }\\n\"])), Key, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar alignment = function (theme, alignment) {\n switch (alignment) {\n default:\n case 'left':\n return css(templateObject_10$9 || (templateObject_10$9 = __makeTemplateObject([\"\\n align-items: flex-start;\\n justify-content: flex-start;\\n \"], [\"\\n align-items: flex-start;\\n justify-content: flex-start;\\n \"])));\n case 'right':\n return css(templateObject_11$6 || (templateObject_11$6 = __makeTemplateObject([\"\\n align-items: flex-end;\\n justify-content: flex-end;\\n \"], [\"\\n align-items: flex-end;\\n justify-content: flex-end;\\n \"])));\n }\n};\nvar layoutVariant = function (theme, variant) {\n switch (variant) {\n default:\n case 'inline':\n return css(templateObject_12$5 || (templateObject_12$5 = __makeTemplateObject([\"\\n flex-direction: row;\\n\\n \", \":not(:last-child) {\\n margin-right: \", \";\\n }\\n \"], [\"\\n flex-direction: row;\\n\\n \", \":not(:last-child) {\\n margin-right: \", \";\\n }\\n \"])), Key, function (p) {\n return p.theme.spacing.getSize(8);\n });\n case 'stacked':\n return css(templateObject_13$4 || (templateObject_13$4 = __makeTemplateObject([\"\\n flex-direction: column;\\n\\n \", \" {\\n width: 100%;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n \"], [\"\\n flex-direction: column;\\n\\n \", \" {\\n width: 100%;\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n }\\n \"])), Key, function (p) {\n return p.theme.spacing.getSize(2);\n });\n case '2-columns':\n return css(templateObject_14$3 || (templateObject_14$3 = __makeTemplateObject([\"\\n \", \";\\n \", \" {\\n flex: 50%;\\n }\\n \"], [\"\\n \", \";\\n \", \" {\\n flex: 50%;\\n }\\n \"])), columnStyle, Key);\n case '3-columns':\n return css(templateObject_15$3 || (templateObject_15$3 = __makeTemplateObject([\"\\n \", \";\\n \", \" {\\n flex: 33%;\\n }\\n \"], [\"\\n \", \";\\n \", \" {\\n flex: 33%;\\n }\\n \"])), columnStyle, Key);\n case '4-columns':\n return css(templateObject_16$2 || (templateObject_16$2 = __makeTemplateObject([\"\\n \", \";\\n \", \" {\\n flex: 25%;\\n }\\n \"], [\"\\n \", \";\\n \", \" {\\n flex: 25%;\\n }\\n \"])), columnStyle, Key);\n }\n};\n// This named style should be the wrapper for the component i.e. the module\nvar ChartLegend$2 = styled.div(templateObject_17$2 || (templateObject_17$2 = __makeTemplateObject([\"\\n display: flex;\\n \", \";\\n \", \";\\n\\n /*\\n I moved this style from the actual KeyText, as the recent designs this is not needed.\\n This can remain here for preventing breaking changes (if using ChartLegendKey directly),\\n but this component needs to be looked at and spec'd out properly by design team.\\n */\\n \", \" {\\n margin-left: \", \";\\n }\\n\"], [\"\\n display: flex;\\n \", \";\\n \", \";\\n\\n /*\\n I moved this style from the actual KeyText, as the recent designs this is not needed.\\n This can remain here for preventing breaking changes (if using ChartLegendKey directly),\\n but this component needs to be looked at and spec'd out properly by design team.\\n */\\n \", \" {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return layoutVariant(p.theme, p.variant);\n}, function (p) {\n return alignment(p.theme, p.alignment);\n}, KeyText, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$1f, templateObject_2$C, templateObject_3$x, templateObject_4$u, templateObject_5$n, templateObject_6$j, templateObject_7$h, templateObject_8$c, templateObject_9$c, templateObject_10$9, templateObject_11$6, templateObject_12$5, templateObject_13$4, templateObject_14$3, templateObject_15$3, templateObject_16$2, templateObject_17$2;\nvar ChartLegendKey$1 = function (props) {\n var className = props.className,\n item = props.item,\n _a = props.textSize,\n textSize = _a === void 0 ? -1 : _a,\n showCount = props.showCount,\n _b = props.size,\n size = _b === void 0 ? 'default' : _b;\n var activeTheme = useThemeProvider().activeTheme;\n var hasCount = item.count !== undefined && showCount;\n var renderLabel = function () {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, hasCount && ( /*#__PURE__*/React__default.createElement(Count, {\n size: textSize,\n weight: 500\n }, item.count)), /*#__PURE__*/React__default.createElement(KeyText, {\n size: textSize,\n ellipsis: true,\n weight: !hasCount ? 500 : 400\n }, item.label));\n };\n if (item.description) {\n return /*#__PURE__*/React__default.createElement(Key, {\n \"data-testid\": generate(['chart-legend__key'], props),\n colorPalette: item.colorPalette,\n className: className,\n activeTheme: activeTheme,\n size: size\n }, /*#__PURE__*/React__default.createElement(TooltipWrapper, {\n children: renderLabel(),\n tooltipContent: item.description\n }));\n } else {\n return /*#__PURE__*/React__default.createElement(Key, {\n \"data-testid\": generate(['chart-legend__key'], props),\n className: className,\n colorPalette: item.colorPalette,\n activeTheme: activeTheme,\n size: size\n }, renderLabel());\n }\n};\nvar ChartLegend$1 = function (props) {\n var className = props.className,\n items = props.items,\n _a = props.variant,\n variant = _a === void 0 ? 'inline' : _a,\n _b = props.alignment,\n alignment = _b === void 0 ? 'left' : _b,\n _c = props.textSize,\n textSize = _c === void 0 ? 0 : _c,\n showCounts = props.showCounts;\n return /*#__PURE__*/React__default.createElement(ChartLegend$2, {\n \"data-testid\": generate(['chart-legend', \"variant--\".concat(variant)], props),\n className: className,\n variant: variant,\n alignment: alignment\n }, items.map(function (item) {\n return /*#__PURE__*/React__default.createElement(ChartLegendKey$1, {\n key: item.label,\n item: item,\n textSize: textSize,\n showCount: showCounts\n });\n }));\n};\n\n/**\r\n * @param items - (required) - Key[]\r\n * @param className - (optional) - string\r\n * @param variant - (optional) - SC.Layout\r\n * @param alignment - (optional) - SC.Alignment\r\n * @param textSize - (optional) - number\r\n * @param showCounts - (optional) - boolean\r\n */\nvar ChartLegend = styled(ChartLegend$1)(templateObject_1$1e || (templateObject_1$1e = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param item - (required) - Key\r\n * @param className - (optional) - string\r\n * @param textSize - (optional) - number\r\n * @param showCount - (optional) - boolean\r\n */\nvar ChartLegendKey = styled(ChartLegendKey$1)(templateObject_2$B || (templateObject_2$B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1e, templateObject_2$B;\nvar badgeSize = function (theme, size) {\n switch (size) {\n case 'small':\n return css(templateObject_1$1d || (templateObject_1$1d = __makeTemplateObject([\"\\n padding: 0 \", \";\\n height: \", \";\\n \"], [\"\\n padding: 0 \", \";\\n height: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n }, theme.spacing.getSize(4));\n case 'large':\n return css(templateObject_2$A || (templateObject_2$A = __makeTemplateObject([\"\\n padding: 0 \", \";\\n height: \", \";\\n \"], [\"\\n padding: 0 \", \";\\n height: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, theme.spacing.getSize(6));\n default:\n case 'medium':\n return css(templateObject_3$w || (templateObject_3$w = __makeTemplateObject([\"\\n padding: 0 \", \";\\n height: \", \";\\n \"], [\"\\n padding: 0 \", \";\\n height: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n }, theme.spacing.getSize(5));\n }\n};\nvar badgeVariant = function (activeTheme, variant, appearance) {\n if (appearance === 'filled') {\n switch (variant) {\n case 'accent1':\n return css(templateObject_4$t || (templateObject_4$t = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.accent1.getValue(500).main, activeTheme.colors.accent1.getValue(500).main);\n case 'accent2':\n return css(templateObject_5$m || (templateObject_5$m = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.accent2.getValue(500).main, activeTheme.colors.accent2.getValue(500).main);\n case 'dataVis':\n return css(templateObject_6$i || (templateObject_6$i = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.dataVis.getValue(4).main, activeTheme.colors.dataVis.getValue(4).main);\n case 'info':\n return css(templateObject_7$g || (templateObject_7$g = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.info.getValue(500).main, activeTheme.colors.info.getValue(500).main);\n case 'warning':\n return css(templateObject_8$b || (templateObject_8$b = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.warning.getValue(500).main, activeTheme.colors.warning.getValue(500).main);\n case 'error':\n return css(templateObject_9$b || (templateObject_9$b = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.error.getValue(500).main, activeTheme.colors.error.getValue(500).main);\n case 'primary':\n return css(templateObject_10$8 || (templateObject_10$8 = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.primary.getValue(500).main, activeTheme.colors.primary.getValue(500).main);\n case 'success':\n return css(templateObject_11$5 || (templateObject_11$5 = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.success.getValue(500).main, activeTheme.colors.success.getValue(500).main);\n case 'successDark':\n return css(templateObject_12$4 || (templateObject_12$4 = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n \"])), activeTheme.colors.success.getValue(700).main, activeTheme.colors.success.getValue(700).main);\n case 'neutral':\n return css(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject([\"\\n \", \";\\n border-color: \", \";\\n color: \", \";\\n \"], [\"\\n \", \";\\n border-color: \", \";\\n color: \", \";\\n \"])), containerBackground(activeTheme), activeTheme.colors.borders.getValue(1), activeTheme.colors.text.getValue(1));\n default:\n case 'default':\n return css(templateObject_14$2 || (templateObject_14$2 = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n color: \", \";\\n \"])), activeTheme.colors.backgrounds.getValue(1), activeTheme.colors.borders.getValue(2), activeTheme.colors.text.getValue(2));\n }\n }\n if (appearance === 'outlined') {\n var background = css(templateObject_15$2 || (templateObject_15$2 = __makeTemplateObject([\"\\n \", \"\\n \"], [\"\\n \", \"\\n \"])), containerBackground(activeTheme));\n switch (variant) {\n case 'accent1':\n return css(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.accent1.getValue(500).main, activeTheme.colors.accent1.getValue(500).main, background);\n case 'accent2':\n return css(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.accent2.getValue(500).main, activeTheme.colors.accent2.getValue(500).main, background);\n case 'dataVis':\n return css(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.dataVis.getValue(4).main, activeTheme.colors.dataVis.getValue(4).main, background);\n case 'info':\n return css(templateObject_19 || (templateObject_19 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.info.getValue(500).main, activeTheme.colors.info.getValue(500).main, background);\n case 'warning':\n return css(templateObject_20 || (templateObject_20 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.warning.getValue(500).main, activeTheme.colors.warning.getValue(500).main, background);\n case 'error':\n return css(templateObject_21 || (templateObject_21 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.error.getValue(500).main, activeTheme.colors.error.getValue(500).main, background);\n case 'primary':\n return css(templateObject_22 || (templateObject_22 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.primary.getValue(500).main, activeTheme.colors.primary.getValue(500).main, background);\n case 'success':\n return css(templateObject_23 || (templateObject_23 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.success.getValue(500).main, activeTheme.colors.success.getValue(500).main, background);\n case 'successDark':\n return css(templateObject_24 || (templateObject_24 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.success.getValue(700).main, activeTheme.colors.success.getValue(700).main, background);\n case 'neutral':\n return css(templateObject_25 || (templateObject_25 = __makeTemplateObject([\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"], [\"\\n border-color: \", \";\\n color: \", \" !important;\\n \", \"\\n \"])), activeTheme.colors.borders.getValue(1), activeTheme.colors.text.getValue(1), background);\n default:\n case 'default':\n return css(templateObject_26 || (templateObject_26 = __makeTemplateObject([\"\\n background-color: \", \";\\n border-color: \", \";\\n color: \", \" !important;\\n \"], [\"\\n background-color: \", \";\\n border-color: \", \";\\n color: \", \" !important;\\n \"])), activeTheme.colors.backgrounds.getValue(1), activeTheme.colors.borders.getValue(1), activeTheme.colors.text.getValue(1));\n }\n }\n if (appearance === 'borderless' || appearance === 'as-text') {\n switch (variant) {\n case 'accent1':\n return css(templateObject_27 || (templateObject_27 = __makeTemplateObject([\"\\n color: \", \";\\n border-color: transparent;\\n \"], [\"\\n color: \", \";\\n border-color: transparent;\\n \"])), activeTheme.colors.accent1.getValue(500).main);\n case 'accent2':\n return css(templateObject_28 || (templateObject_28 = __makeTemplateObject([\"\\n color: \", \";\\n border-color: transparent;\\n \"], [\"\\n color: \", \";\\n border-color: transparent;\\n \"])), activeTheme.colors.accent2.getValue(500).main);\n case 'dataVis':\n return css(templateObject_29 || (templateObject_29 = __makeTemplateObject([\"\\n background-color: \", \";\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n background-color: \", \";\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.dataVis.getValue(4).main, activeTheme.colors.dataVis.getValue(4).main);\n case 'info':\n return css(templateObject_30 || (templateObject_30 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.info.getValue(500).main);\n case 'warning':\n return css(templateObject_31 || (templateObject_31 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.warning.getValue(500).main);\n case 'error':\n return css(templateObject_32 || (templateObject_32 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.error.getValue(500).main);\n case 'primary':\n return css(templateObject_33 || (templateObject_33 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.primary.getValue(500).main);\n case 'success':\n return css(templateObject_34 || (templateObject_34 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.success.getValue(500).main);\n case 'successDark':\n return css(templateObject_35 || (templateObject_35 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.success.getValue(700).main);\n default:\n case 'neutral':\n case 'default':\n return css(templateObject_36 || (templateObject_36 = __makeTemplateObject([\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"], [\"\\n color: \", \" !important;\\n border-color: transparent;\\n \"])), activeTheme.colors.text.getValue(1));\n }\n }\n};\nvar textColor = function (activeTheme, variant, appearance) {\n switch (appearance) {\n default:\n case 'filled':\n {\n switch (variant) {\n case 'neutral':\n case 'default':\n return css(templateObject_37 || (templateObject_37 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.text.getValue(0));\n default:\n return css(templateObject_38 || (templateObject_38 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().context;\n });\n }\n }\n case 'borderless':\n case 'outlined':\n switch (variant) {\n case 'accent1':\n return css(templateObject_39 || (templateObject_39 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.accent1.getValue(500).main);\n case 'accent2':\n return css(templateObject_40 || (templateObject_40 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.accent2.getValue(500).main);\n case 'dataVis':\n return css(templateObject_41 || (templateObject_41 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.dataVis.getValue(4).main);\n case 'info':\n return css(templateObject_42 || (templateObject_42 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.info.getValue(500).main);\n case 'warning':\n return css(templateObject_43 || (templateObject_43 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.warning.getValue(500).main);\n case 'error':\n return css(templateObject_44 || (templateObject_44 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.error.getValue(500).main);\n case 'primary':\n return css(templateObject_45 || (templateObject_45 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.primary.getValue(500).main);\n case 'success':\n return css(templateObject_46 || (templateObject_46 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.success.getValue(500).main);\n case 'successDark':\n return css(templateObject_47 || (templateObject_47 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.success.getValue(700).main);\n default:\n case 'neutral':\n case 'default':\n return css(templateObject_48 || (templateObject_48 = __makeTemplateObject([\"\\n color: \", \" !important;\\n \"], [\"\\n color: \", \" !important;\\n \"])), activeTheme.colors.text.getValue(1));\n }\n }\n};\nvar Badge$3 = styled.div(templateObject_50 || (templateObject_50 = __makeTemplateObject([\"\\n display: flex;\\n width: fit-content;\\n border-radius: \", \";\\n color: \", \";\\n box-sizing: border-box;\\n border-width: 1px;\\n border-style: solid;\\n align-items: center;\\n \", \";\\n \", \";\\n\\n \", \";\\n\\n \", \" {\\n svg {\\n stroke-width: 1;\\n }\\n }\\n\\n \", \" + \", \" {\\n margin-left: \", \";\\n }\\n\"], [\"\\n display: flex;\\n width: fit-content;\\n border-radius: \", \";\\n color: \", \";\\n box-sizing: border-box;\\n border-width: 1px;\\n border-style: solid;\\n align-items: center;\\n \", \";\\n \", \";\\n\\n \", \";\\n\\n \", \" {\\n svg {\\n stroke-width: 1;\\n }\\n }\\n\\n \", \" + \", \" {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return p.theme.colors.text.getValue(3);\n}, function (p) {\n return badgeSize(p.theme, p.size);\n}, function (p) {\n return badgeVariant(p.activeTheme, p.variant, p.appearance);\n}, function (p) {\n return p.appearance === 'as-text' && css(templateObject_49 || (templateObject_49 = __makeTemplateObject([\"\\n background-color: transparent;\\n padding: 0;\\n \"], [\"\\n background-color: transparent;\\n padding: 0;\\n \"])));\n}, IconWrapper$4, IconWrapper$4, Text$1, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar BadgeText = styled(Text$1)(templateObject_53 || (templateObject_53 = __makeTemplateObject([\"\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n \", \"\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return textColor(p.activeTheme, p.badgeVariant, p.appearance);\n}, function (p) {\n return p.withIcon && css(templateObject_51 || (templateObject_51 = __makeTemplateObject([\"\\n margin-left: \", \";\\n \"], [\"\\n margin-left: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n}, function (p) {\n return p.withRightIcon && css(templateObject_52 || (templateObject_52 = __makeTemplateObject([\"\\n margin-right: \", \";\\n \"], [\"\\n margin-right: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(2);\n });\n});\nvar templateObject_1$1d, templateObject_2$A, templateObject_3$w, templateObject_4$t, templateObject_5$m, templateObject_6$i, templateObject_7$g, templateObject_8$b, templateObject_9$b, templateObject_10$8, templateObject_11$5, templateObject_12$4, templateObject_13$3, templateObject_14$2, templateObject_15$2, templateObject_16$1, templateObject_17$1, templateObject_18$1, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35, templateObject_36, templateObject_37, templateObject_38, templateObject_39, templateObject_40, templateObject_41, templateObject_42, templateObject_43, templateObject_44, templateObject_45, templateObject_46, templateObject_47, templateObject_48, templateObject_49, templateObject_50, templateObject_51, templateObject_52, templateObject_53;\nvar Badge$2 = function (props) {\n var className = props.className,\n _a = props.variant,\n variant = _a === void 0 ? 'primary' : _a,\n _b = props.appearance,\n appearance = _b === void 0 ? 'filled' : _b,\n text = props.text,\n icon = props.icon,\n rightIcon = props.rightIcon,\n _c = props.size,\n size = _c === void 0 ? 'medium' : _c,\n tooltipContent = props.tooltipContent;\n var isSmall = size === 'small';\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Badge$3, {\n \"data-testid\": generate(['badge', \"badge--\".concat(variant, \"-variant\"), \"badge--\".concat(appearance, \"-appearance\"), \"badge--\".concat(size, \"-size\")], props),\n className: className,\n variant: variant,\n appearance: appearance,\n size: size,\n activeTheme: activeTheme\n }, icon && icon(), text && ( /*#__PURE__*/React__default.createElement(Tooltip, {\n position: \"top\",\n content: tooltipContent\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(BadgeText, {\n reference: tooltipRef,\n weight: isSmall ? 400 : 500,\n size: isSmall ? -1 : 0,\n \"data-testid\": \"badge-text\",\n appearance: appearance,\n badgeVariant: variant,\n activeTheme: activeTheme,\n withIcon: !!icon,\n withRightIcon: !!rightIcon\n }, text);\n })), rightIcon && rightIcon());\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param variant - (optional) -SC.BadgeVariants\r\n * @param appearance - (optional) - SC.BadgeStyles\r\n * @param text - (optional) - string\r\n * @param size - (optional) - SC.BadgeSizes\r\n * @param icon - (optional) - () => React.ReactElement\r\n * @param tooltipContent - (optional) - string\r\n */\nvar Badge$1 = styled(Badge$2)(templateObject_1$1c || (templateObject_1$1c = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1c;\nvar SkeletonLoader$1 = function (props) {\n var className = props.className,\n delay = props.delay,\n count = props.count;\n var theme = useTheme();\n var _a = __read(React__default.useState(!delay), 2),\n shouldRender = _a[0],\n setShouldRender = _a[1];\n React__default.useEffect(function () {\n var timeout;\n if (delay) {\n timeout = window.setTimeout(function () {\n setShouldRender(true);\n }, delay);\n }\n return function () {\n if (timeout) {\n clearTimeout(timeout);\n }\n };\n }, [delay]);\n if (!shouldRender) return null;\n return /*#__PURE__*/React__default.createElement(SkeletonTheme, {\n color: theme.colors.backgrounds.getValue(0),\n highlightColor: theme.colors.backgrounds.getValue(1)\n }, /*#__PURE__*/React__default.createElement(Skeleton, {\n className: className,\n count: count\n }));\n};\n\n/**\r\n @param className - (optional) - string\r\n @param count - (optional) - number\r\n @param delay - (optional) - number\r\n */\nvar SkeletonLoader = styled(SkeletonLoader$1)(templateObject_1$1b || (templateObject_1$1b = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1b;\nvar AuthorBlock$2 = styled.div(templateObject_1$1a || (templateObject_1$1a = __makeTemplateObject([\"\\n display: flex;\\n align-items: flex-start;\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n align-items: flex-start;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar LogoSection = styled(View)(templateObject_2$z || (templateObject_2$z = __makeTemplateObject([\"\\n padding-top: \", \";\\n\"], [\"\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar AuthorSection = styled(View)(templateObject_3$v || (templateObject_3$v = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Date$1 = styled(Text$1)(templateObject_4$s || (templateObject_4$s = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$1a, templateObject_2$z, templateObject_3$v, templateObject_4$s;\nvar AuthorBlock$1 = function (props) {\n var className = props.className,\n authorTitle = props.authorTitle,\n date = props.date;\n return /*#__PURE__*/React__default.createElement(AuthorBlock$2, {\n \"data-testid\": generate(['author-block'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(LogoSection, null, /*#__PURE__*/React__default.createElement(Logo, {\n size: \"x-large\"\n })), /*#__PURE__*/React__default.createElement(AuthorSection, null, /*#__PURE__*/React__default.createElement(Heading$2, {\n weight: 400,\n size: 0\n }, authorTitle), /*#__PURE__*/React__default.createElement(Date$1, {\n weight: 300,\n size: 0\n }, format(new Date(date), 'd MMM yyyy, kk:mm'))));\n};\n\n/**\r\n * @param className - (optional) - string - Enables styled-components mounting\r\n @param authorTitle - (optional) - string - Name of Author;\r\n @param date - (optional) - string - Date of publishing;\r\n */\nvar AuthorBlock = styled(AuthorBlock$1)(templateObject_1$19 || (templateObject_1$19 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$19;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Toaster$2 = styled.div(templateObject_1$18 || (templateObject_1$18 = __makeTemplateObject([\"\\n position: fixed;\\n bottom: \", \";\\n right: \", \";\\n max-height: 100vh;\\n overflow: visible;\\n scroll-behavior: smooth;\\n padding-left: \", \";\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n z-index: \", \";\\n\"], [\"\\n position: fixed;\\n bottom: \", \";\\n right: \", \";\\n max-height: 100vh;\\n overflow: visible;\\n scroll-behavior: smooth;\\n padding-left: \", \";\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n z-index: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, zIndex);\nvar ragVariants = function (state) {\n if (!state) return null;\n return css(templateObject_2$y || (templateObject_2$y = __makeTemplateObject([\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 2px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 2px;\\n top: 0;\\n left: 0;\\n }\\n \"], [\"\\n :before {\\n content: ' ';\\n position: absolute;\\n border-left: 2px solid \", \";\\n border-radius: 2px 0px 0px 2px;\\n height: 100%;\\n width: 2px;\\n top: 0;\\n left: 0;\\n }\\n \"])), function (p) {\n return p.theme.colors[state].getValue(500).main;\n });\n};\nvar Toast$1 = styled.div(templateObject_3$u || (templateObject_3$u = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n padding: \", \";\\n position: relative;\\n border-radius: 2px;\\n \", \"\\n\\n \", \";\\n\\n :not(:last-child) {\\n margin-bottom: 10px;\\n }\\n\"], [\"\\n background-color: \", \";\\n width: \", \";\\n padding: \", \";\\n position: relative;\\n border-radius: 2px;\\n \", \"\\n\\n \", \";\\n\\n :not(:last-child) {\\n margin-bottom: 10px;\\n }\\n\"])), function (p) {\n return p.theme.colors.navBackground;\n}, function (p) {\n return p.size === 'large' ? p.theme.spacing.getSize(100) : p.theme.spacing.getSize(72);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, boxShadow2, function (p) {\n return ragVariants(p.status);\n});\nvar Close = styled(IconButton)(templateObject_4$r || (templateObject_4$r = __makeTemplateObject([\"\\n \", \" !important;\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"], [\"\\n \", \" !important;\\n position: absolute;\\n top: \", \";\\n right: \", \";\\n\"])), function (p) {\n return contrastTextColor(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ErrorIcon = styled(MemoSvgAlertError)(templateObject_5$l || (templateObject_5$l = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"])), function (p) {\n return p.theme.colors.error.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar SuccessIcon = styled(MemoSvgAlertSuccess)(templateObject_6$h || (templateObject_6$h = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"])), function (p) {\n return p.theme.colors.success.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar WarningIcon = styled(MemoSvgAlertWarning)(templateObject_7$f || (templateObject_7$f = __makeTemplateObject([\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"], [\"\\n color: \", \";\\n margin-right: \", \";\\n position: relative;\\n top: -2px;\\n\"])), function (p) {\n return p.theme.colors.warning.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Title$2 = styled(Text$1)(templateObject_8$a || (templateObject_8$a = __makeTemplateObject([\"\\n padding-right: \", \";\\n \", \" !important; // Seems to be getting overridden, so trying important\\n\"], [\"\\n padding-right: \", \";\\n \", \" !important; // Seems to be getting overridden, so trying important\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return contrastTextColor(p.activeTheme);\n});\nvar Message = styled(Text$1)(templateObject_9$a || (templateObject_9$a = __makeTemplateObject([\"\\n margin-top: \", \";\\n \", \" !important; // Seems to be getting overridden, so trying important\\n\"], [\"\\n margin-top: \", \";\\n \", \" !important; // Seems to be getting overridden, so trying important\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return contrastTextColor(p.activeTheme);\n});\nvar Actions$2 = styled(View)(templateObject_10$7 || (templateObject_10$7 = __makeTemplateObject([\"\\n margin-top: \", \";\\n display: flex;\\n justify-content: end;\\n flex-direction: row-reverse;\\n\"], [\"\\n margin-top: \", \";\\n display: flex;\\n justify-content: end;\\n flex-direction: row-reverse;\\n\"])), function (p) {\n return p.theme.spacing.getSize();\n});\nvar templateObject_1$18, templateObject_2$y, templateObject_3$u, templateObject_4$r, templateObject_5$l, templateObject_6$h, templateObject_7$f, templateObject_8$a, templateObject_9$a, templateObject_10$7;\nvar Toast = function (props) {\n var style = props.style,\n className = props.className,\n onClose = props.onClose,\n item = props.item;\n var _a = item.hideCloseButton,\n hideCloseButton = _a === void 0 ? true : _a,\n status = item.status,\n _b = item.size,\n size = _b === void 0 ? 'default' : _b,\n title = item.title,\n message = item.message,\n actionPrimary = item.actionPrimary,\n actionSecondary = item.actionSecondary;\n var toastRef = React__default.useRef(null);\n var activeTheme = useThemeProvider().activeTheme;\n // if any are present, then we must have a close button\n var showCloseButton = !!message || !!actionPrimary || !!actionSecondary;\n // BUT if there is just a title (no message or actions), then the close is optional\n if (!message && !actionPrimary && !actionSecondary) {\n showCloseButton = !hideCloseButton;\n }\n var handleClose = React__default.useCallback(function () {\n item.onCloseCallback && item.onCloseCallback();\n onClose(item);\n }, [item, onClose]);\n var renderIcon = function () {\n switch (status) {\n case 'success':\n return /*#__PURE__*/React__default.createElement(SuccessIcon, null);\n case 'warning':\n return /*#__PURE__*/React__default.createElement(WarningIcon, null);\n case 'error':\n return /*#__PURE__*/React__default.createElement(ErrorIcon, null);\n }\n };\n return /*#__PURE__*/React__default.createElement(Toast$1, {\n ref: toastRef,\n style: style,\n status: status,\n size: size,\n \"data-testid\": generate(['toaster__toast'], props),\n className: className\n }, showCloseButton && ( /*#__PURE__*/React__default.createElement(Close, {\n \"data-testid\": \"toaster__toast__close\",\n size: \"tiny\",\n label: \"Close\",\n onClick: handleClose,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n },\n activeTheme: activeTheme\n })), /*#__PURE__*/React__default.createElement(Title$2, {\n size: 1,\n weight: 500,\n activeTheme: activeTheme\n }, renderIcon(), title), message && ( /*#__PURE__*/React__default.createElement(Message, {\n size: 1,\n weight: 300,\n activeTheme: activeTheme\n }, message)), (actionPrimary || actionSecondary) && ( /*#__PURE__*/React__default.createElement(Actions$2, null, actionPrimary && ( /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"borderless\",\n label: actionPrimary.label,\n onClick: actionPrimary.onClick\n })), actionSecondary && ( /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"borderless\",\n label: actionSecondary.label,\n onClick: actionSecondary.onClick\n })))));\n};\nvar AnimatedToast = animated(Toast);\nvar Toaster$1 = function (props) {\n var className = props.className;\n var toastRef = React__default.useRef(null);\n var _a = useToaster(),\n toasts = _a.toasts,\n onRemoveToast = _a.onRemoveToast;\n var onClose = React__default.useCallback(function (toast) {\n onRemoveToast(toast);\n }, [onRemoveToast]);\n var transitions = useTransition(toasts, function (item) {\n return item.id;\n }, {\n from: {\n opacity: 0,\n transform: 'translate(100%, 0)'\n },\n enter: {\n opacity: 1,\n transform: 'translate(0%, 0)'\n },\n leave: {\n opacity: 0,\n transform: 'translate(0%, 0)'\n },\n config: config.stiff\n });\n // Keep the scroll at the bottom\n React__default.useEffect(function () {\n var _a, _b;\n (_a = toastRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({\n top: (_b = toastRef.current) === null || _b === void 0 ? void 0 : _b.scrollHeight,\n left: 0\n });\n }, [toasts]);\n return /*#__PURE__*/React__default.createElement(Layer, {\n name: \"toaster\"\n }, /*#__PURE__*/React__default.createElement(Toaster$2, {\n ref: toastRef,\n \"data-testid\": generate(['toaster'], props),\n className: className\n }, transitions.map(function (_a) {\n var item = _a.item,\n key = _a.key,\n style = _a.props;\n return item && /*#__PURE__*/React__default.createElement(AnimatedToast, {\n key: key,\n style: style,\n item: item,\n onClose: onClose\n });\n })));\n};\n\n/**\r\n * @param className - (optional) - string\r\n */\nvar Toaster = styled(Toaster$1)(templateObject_1$17 || (templateObject_1$17 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$17;\nvar BadgeScore$2 = styled(Badge$1)(templateObject_1$16 || (templateObject_1$16 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$16;\nvar BadgeScore$1 = function (props) {\n var className = props.className,\n score = props.score,\n icon = props.icon,\n tooltipContent = props.tooltipContent,\n size = props.size,\n renderAsText = props.renderAsText,\n text = props.text,\n _a = props.badgeVariant,\n badgeVariant = _a === void 0 ? 'neutral' : _a;\n var renderScores = function () {\n if (text) {\n return text;\n }\n var percentage = \"\".concat(Math.round(score.score), \"%\");\n if (score.total) {\n return \"\".concat(percentage, \" (\").concat(score.total, \")\");\n }\n return percentage;\n };\n return /*#__PURE__*/React__default.createElement(BadgeScore$2, {\n \"data-testid\": generate(['badge-score'], props),\n className: className,\n icon: icon,\n appearance: renderAsText ? 'as-text' : 'outlined',\n variant: badgeVariant,\n text: renderScores(),\n tooltipContent: tooltipContent,\n size: size\n });\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param score - (required) - { score: number; total?: number | null; highlight?: boolean }\r\n * @param icon - (required) - () => React.ReactElement\r\n * @param tooltipContent - (optional) - string\r\n * @param size - (optional) - BadgeSizes\r\n * @param renderAsText - (optional) - boolean\r\n * @param text - (optional) - string\r\n * @param badgeVariant - (optional) - BadgeVariants\r\n */\nvar BadgeScore = styled(BadgeScore$1)(templateObject_1$15 || (templateObject_1$15 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$15;\nvar Lock$2 = styled(View)(templateObject_1$14 || (templateObject_1$14 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"])));\nvar Overlay = styled(View)(templateObject_2$x || (templateObject_2$x = __makeTemplateObject([\"\\n background: \", \";\\n opacity: \", \";\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n\"], [\"\\n background: \", \";\\n opacity: \", \";\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n right: 0;\\n\"])), function (p) {\n return isDarkMode$4(p.activeTheme) ? p.theme.colors.navBackground : p.theme.colors.text.getValue();\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? 0.8 : 0.5;\n});\nvar statusStyling = function (reason, activeTheme) {\n switch (reason) {\n case 'locked':\n return css(templateObject_3$t || (templateObject_3$t = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), function (p) {\n return isDarkMode$4(activeTheme) ? p.theme.colors.info.getValue().main : p.theme.colors.warning.getValue().main;\n });\n case 'unavailable':\n return css(templateObject_4$q || (templateObject_4$q = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), function (p) {\n return isDarkMode$4(activeTheme) ? p.theme.colors.warning.getValue().main : p.theme.colors.info.getValue().main;\n });\n }\n};\nvar Status$1 = styled.button(templateObject_5$k || (templateObject_5$k = __makeTemplateObject([\"\\n padding: 0 \", \";\\n height: \", \";\\n color: \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: fit-content;\\n border: 0;\\n outline: 0;\\n font-size: \", \";\\n \", \";\\n z-index: 1;\\n \", \";\\n\\n & > *:first-child {\\n margin-right: \", \";\\n }\\n\\n span {\\n margin-left: \", \";\\n }\\n\"], [\"\\n padding: 0 \", \";\\n height: \", \";\\n color: \", \";\\n border-radius: \", \";\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: fit-content;\\n border: 0;\\n outline: 0;\\n font-size: \", \";\\n \", \";\\n z-index: 1;\\n \", \";\\n\\n & > *:first-child {\\n margin-right: \", \";\\n }\\n\\n span {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.theme.colors.backgrounds.getValue(2) : p.theme.colors.text.getValue(3);\n}, function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.theme.type.getSize(1);\n}, function (p) {\n return statusStyling(p.reason, p.activeTheme);\n}, boxShadow3, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$14, templateObject_2$x, templateObject_3$t, templateObject_4$q, templateObject_5$k;\nvar Lock$1 = function (props) {\n var className = props.className,\n reason = props.reason,\n _a = props.lockedContentText,\n lockedContentText = _a === void 0 ? 'Queries Locked' : _a,\n _b = props.unavailableContentText,\n unavailableContentText = _b === void 0 ? 'Data Unavailable' : _b;\n var isLocked = reason === 'locked';\n var activeTheme = useThemeProvider().activeTheme;\n var renderStatus = function () {\n if (isLocked) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MemoSvgSecurityLocked, {\n size: \"medium\"\n }), lockedContentText);\n } else {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MemoSvgAlertWarning, {\n size: \"medium\"\n }), unavailableContentText);\n }\n };\n return /*#__PURE__*/React__default.createElement(Layer, {\n name: \"overlay\"\n }, /*#__PURE__*/React__default.createElement(Lock$2, {\n \"data-testid\": generate(['locked-content', \"locked-content--data-\".concat(reason)], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Overlay, {\n activeTheme: activeTheme\n }), /*#__PURE__*/React__default.createElement(Status$1, {\n reason: reason,\n activeTheme: activeTheme\n }, renderStatus())));\n};\n\n/**\r\n @param reason - (required) - 'unavailable' | 'locked'\r\n @param className - (optional) - string\r\n @param lockedContentText - (optional) - string\r\n @param unavailableContentText - (optional) - string\r\n */\nvar Lock = styled(Lock$1)(templateObject_1$13 || (templateObject_1$13 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$13;\n\n// This named style should be the wrapper for the component i.e. the module\nvar StorybookWelcome$2 = styled.div(templateObject_1$12 || (templateObject_1$12 = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n align-items: center;\\n\"], [\"\\n height: 100%;\\n display: flex;\\n align-items: center;\\n\"])));\nvar Acin = styled(Logo)(templateObject_2$w || (templateObject_2$w = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n height: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar Container = styled.div(templateObject_3$s || (templateObject_3$s = __makeTemplateObject([\"\\n max-width: 1000px;\\n width: 100%;\\n margin: \", \" auto;\\n display: flex;\\n align-items: center;\\n font-family: sans-serif;\\n\"], [\"\\n max-width: 1000px;\\n width: 100%;\\n margin: \", \" auto;\\n display: flex;\\n align-items: center;\\n font-family: sans-serif;\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n});\nvar Contents = styled.div(templateObject_4$p || (templateObject_4$p = __makeTemplateObject([\"\\n flex-grow: 1;\\n\"], [\"\\n flex-grow: 1;\\n\"])));\nvar Description$1 = styled(Text$1)(templateObject_5$j || (templateObject_5$j = __makeTemplateObject([\"\\n max-width: 400px;\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n max-width: 400px;\\n margin-top: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Btn = styled(Button$1)(templateObject_6$g || (templateObject_6$g = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Icon$1 = styled.div(templateObject_7$e || (templateObject_7$e = __makeTemplateObject([\"\\n font-size: 30vh;\\n color: \", \";\\n\"], [\"\\n font-size: 30vh;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n});\nvar templateObject_1$12, templateObject_2$w, templateObject_3$s, templateObject_4$p, templateObject_5$j, templateObject_6$g, templateObject_7$e;\nvar StorybookWelcome$1 = function (props) {\n var className = props.className,\n title = props.title,\n description = props.description,\n repoURL = props.repoURL,\n icon = props.icon,\n onVisitDocs = props.onVisitDocs;\n var renderIcon = function () {\n if (icon !== undefined) {\n return icon();\n }\n };\n return /*#__PURE__*/React__default.createElement(StorybookWelcome$2, {\n \"data-testid\": generate(['storybook-welcome'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Container, null, /*#__PURE__*/React__default.createElement(Contents, null, /*#__PURE__*/React__default.createElement(Acin, {\n size: \"x-large\"\n }), /*#__PURE__*/React__default.createElement(Heading$2, {\n size: 4,\n weight: 500\n }, title), /*#__PURE__*/React__default.createElement(Description$1, {\n size: 1,\n weight: 400\n }, description), onVisitDocs && /*#__PURE__*/React__default.createElement(Btn, {\n label: \"Get Started\",\n onClick: onVisitDocs,\n variant: \"secondary\"\n }), repoURL && ( /*#__PURE__*/React__default.createElement(Btn, {\n label: \"Visit the repository\",\n onClick: function () {\n return window.open(\"\".concat(repoURL), '_blank');\n },\n variant: \"secondary\"\n }))), /*#__PURE__*/React__default.createElement(Icon$1, null, renderIcon())));\n};\n\n/**\r\n @param title - (required) - string\r\n @param description - (required) - string\r\n @param repoURL - (optional) - string\r\n @param className - (optional) - string\r\n @param icon - (optional) - () => React.ReactElement\r\n @param onVisitDocs - (optional) - () => void\r\n */\nvar StorybookWelcome = styled(StorybookWelcome$1)(templateObject_1$11 || (templateObject_1$11 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$11;\n\n// This named style should be the wrapper for the component i.e. the module\nvar RadioTabs$2 = styled.div(templateObject_1$10 || (templateObject_1$10 = __makeTemplateObject([\"\"], [\"\"])));\nvar RadioTab = styled(View)(templateObject_3$r || (templateObject_3$r = __makeTemplateObject([\"\\n position: relative;\\n display: inline-flex;\\n padding-bottom: \", \";\\n\\n &:not(:first-child) {\\n margin-left: \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n display: inline-flex;\\n padding-bottom: \", \";\\n\\n &:not(:first-child) {\\n margin-left: \", \";\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.isActive && css(templateObject_2$v || (templateObject_2$v = __makeTemplateObject([\"\\n &:after {\\n content: '';\\n border-left: 1px solid \", \";\\n border-top: 1px solid \", \";\\n position: absolute;\\n bottom: \", \";\\n left: \", \";\\n transform: rotate(45deg);\\n height: \", \";\\n width: \", \";\\n box-sizing: border-box;\\n \", \";\\n }\\n \"], [\"\\n &:after {\\n content: '';\\n border-left: 1px solid \", \";\\n border-top: 1px solid \", \";\\n position: absolute;\\n bottom: \", \";\\n left: \", \";\\n transform: rotate(45deg);\\n height: \", \";\\n width: \", \";\\n box-sizing: border-box;\\n \", \";\\n }\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n }, function (p) {\n return p.theme.colors.borders.getValue(1);\n }, function (p) {\n return p.theme.spacing.getSize(-1);\n }, function (p) {\n return p.theme.spacing.getSize();\n }, function (p) {\n return p.theme.spacing.getSize(2);\n }, function (p) {\n return p.theme.spacing.getSize(2);\n }, containerBackground(p.activeTheme));\n});\nvar Content$1 = styled(View)(templateObject_4$o || (templateObject_4$o = __makeTemplateObject([\"\\n border: 1px solid \", \";\\n padding: \", \" \", \";\\n \", \";\\n\"], [\"\\n border: 1px solid \", \";\\n padding: \", \" \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n}, function (p) {\n return containerBackground(p.activeTheme);\n});\nvar templateObject_1$10, templateObject_2$v, templateObject_3$r, templateObject_4$o;\nvar RadioTabs$1 = function (props) {\n var className = props.className,\n data = props.data,\n defaultActive = props.defaultActive;\n var _a = __read(React__default.useState(defaultActive || data[0].id), 2),\n activeTab = _a[0],\n setActiveTab = _a[1];\n var activeTheme = useThemeProvider().activeTheme;\n var activeContent = data.findIndex(function (tab) {\n return tab.id === activeTab;\n });\n var renderContent = function () {\n return data[activeContent].content();\n };\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(RadioTabs$2, {\n \"data-testid\": generate(['radio-tabs'], props),\n className: className\n }, data === null || data === void 0 ? void 0 : data.map(function (tab) {\n var id = tab.id,\n title = tab.title;\n var isActive = id === activeTab;\n return /*#__PURE__*/React__default.createElement(RadioTab, {\n key: id,\n isActive: isActive,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Radio, {\n label: function () {\n return /*#__PURE__*/React__default.createElement(Text$1, null, title);\n },\n isChecked: isActive,\n onChange: function () {\n return setActiveTab(id);\n }\n }));\n })), /*#__PURE__*/React__default.createElement(Content$1, {\n activeTheme: activeTheme\n }, renderContent()));\n};\n\n/**\r\n @param data - (required) - Array<{ title: string; id: string; content: () => React.ReactElement; }>\r\n @param className - (optional) - string\r\n @param defaultActive - (optional) - string\r\n @param onCheck - (optional) - (value: boolean, event: React.MouseEvent<HTMLDivElement | HTMLLabelElement, MouseEvent>) => void\r\n */\nvar RadioTabs = styled(RadioTabs$1)(templateObject_1$$ || (templateObject_1$$ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$$;\nvar Datepicker$1 = function (props) {\n var className = props.className,\n onChange = props.onChange,\n value = props.value,\n isSuccess = props.isSuccess;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Addon, {\n isSuccess: isSuccess,\n leftAddon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgCalendar, null);\n }\n }, /*#__PURE__*/React__default.createElement(Datepicker$2, {\n placeholder: \"DD/MM/YYYY\",\n \"data-testid\": generate(['datepicker'], props),\n className: className,\n type: \"date\",\n value: value || '',\n onChange: onChange,\n activeTheme: activeTheme\n }));\n};\n\n/**\r\n * @param onChange - (required) - (event: React.ChangeEvent<HTMLInputElement>) => void\r\n * @param className - (optional) - string\r\n * @param value - (optional) - string\r\n */\nvar Datepicker = styled(Datepicker$1)(templateObject_1$_ || (templateObject_1$_ = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$_;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Datetimepicker$2 = styled(Datepicker$2)(templateObject_1$Z || (templateObject_1$Z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$Z;\nvar Datetimepicker$1 = function (props) {\n var className = props.className,\n onChange = props.onChange,\n value = props.value;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(Addon, {\n leftAddon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgCalendar, null);\n }\n }, /*#__PURE__*/React__default.createElement(Datetimepicker$2, {\n placeholder: \"DD/MM/YYYY'T'HH:mm\",\n \"data-testid\": generate(['datepicker'], props),\n className: className,\n type: \"datetime-local\",\n value: value || '',\n onChange: onChange,\n activeTheme: activeTheme\n }));\n};\n\n/**\r\n * @param onChange - (required) - (event: React.ChangeEvent<HTMLInputElement>) => void\r\n * @param className - (optional) - string\r\n * @param value - (optional) - string\r\n */\nvar Datetimepicker = styled(Datetimepicker$1)(templateObject_1$Y || (templateObject_1$Y = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$Y;\nvar css_248z = \".buttonBack___1mlaL,.buttonFirst___2rhFr,.buttonLast___2yuh0,.buttonNext___2mOCa,.buttonNext___3Lm3s,.dot___3c3SI{cursor:pointer}.image___xtQGH{display:block;height:100%;width:100%}.spinner___27VUp{animation-duration:1s;animation-iteration-count:infinite;animation-name:spin___S3UuE;animation-timing-function:linear;border:4px solid #a9a9a9;border-radius:30px;border-top-color:#000;height:30px;left:calc(50% - 15px);position:absolute;top:calc(50% - 15px);width:30px}@keyframes spin___S3UuE{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.container___2O72F{height:100%;overflow:hidden;position:relative;width:100%}.overlay___IV4qY{bottom:0;cursor:zoom-in;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s,transform .3s}.hover___MYy31,.loading___1pvNI,.zoom___3kqYk{opacity:1}.imageLoadingSpinnerContainer___3UIPD{background-color:#f4f4f4;bottom:0;left:0;position:absolute;right:0;top:0}.slide___3-Nqo{box-sizing:border-box;display:block;height:0;list-style-type:none;margin:0;position:relative}.slide___3-Nqo:focus{outline:none!important}.slideHorizontal___1NzNV{float:left}[dir=rtl] .slideHorizontal___1NzNV{direction:rtl;transform:scaleX(-1)}.slideInner___2mfX9{height:100%;left:0;position:absolute;top:0;width:100%}.focusRing___1airF{bottom:5px;left:5px;outline-color:Highlight;outline-style:solid;outline-width:5px;pointer-events:none;position:absolute;right:5px;top:5px}@media (-webkit-min-device-pixel-ratio:0){.focusRing___1airF{outline-color:-webkit-focus-ring-color;outline-style:auto}}.horizontalSlider___281Ls{overflow:hidden;position:relative}[dir=rtl] .horizontalSlider___281Ls{direction:ltr;transform:scaleX(-1)}.horizontalSliderTray___1L-0W{overflow:hidden;width:100%}.verticalSlider___34ZFD{overflow:hidden;position:relative}.verticalSliderTray___267D8{overflow:hidden}.verticalTray___12Key{float:left}.verticalSlideTrayWrap___2nO7o{overflow:hidden}.sliderTray___-vHFQ{display:block;list-style:none;margin:0;padding:0}.sliderAnimation___300FY{transition:transform .5s;transition-timing-function:cubic-bezier(.645,.045,.355,1);will-change:transform}.masterSpinnerContainer___1Z6hB{background-color:#f4f4f4;bottom:0;left:0;position:absolute;right:0;top:0}\";\nstyleInject(css_248z);\nvar ButtonStyle = function () {\n var activeTheme = useThemeProvider().activeTheme;\n return css(templateObject_1$X || (templateObject_1$X = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n \", \";\\n box-shadow: 0px 0px 24px rgba(0, 0, 0, 0.12); // Deliberate Exception\\n border: none;\\n color: \", \";\\n position: absolute;\\n top: 50%;\\n margin-top: \", \";\\n font-size: 1.75em;\\n transition: 0.25s ease-in-out;\\n z-index: calc(\", \" + 1);\\n\\n &:disabled {\\n opacity: 0.5;\\n\\n &:hover {\\n cursor: not-allowed;\\n }\\n }\\n \"], [\"\\n height: \", \";\\n width: \", \";\\n \", \";\\n box-shadow: 0px 0px 24px rgba(0, 0, 0, 0.12); // Deliberate Exception\\n border: none;\\n color: \", \";\\n position: absolute;\\n top: 50%;\\n margin-top: \", \";\\n font-size: 1.75em;\\n transition: 0.25s ease-in-out;\\n z-index: calc(\", \" + 1);\\n\\n &:disabled {\\n opacity: 0.5;\\n\\n &:hover {\\n cursor: not-allowed;\\n }\\n }\\n \"])), function (p) {\n return p.theme.spacing.getSize(15);\n }, function (p) {\n return p.theme.spacing.getSize(10);\n }, function (p) {\n return containerBackground(activeTheme);\n }, function (p) {\n return p.theme.colors.text.getValue(1);\n }, function (p) {\n return p.theme.spacing.getSize(-7.5);\n }, zIndex);\n};\nvar Back = styled.button(templateObject_2$u || (templateObject_2$u = __makeTemplateObject([\"\\n \", \"\\n left: 0;\\n transform: translateX(-150%);\\n\"], [\"\\n \", \"\\n left: 0;\\n transform: translateX(-150%);\\n\"])), ButtonStyle);\nvar Next$1 = styled.button(templateObject_3$q || (templateObject_3$q = __makeTemplateObject([\"\\n \", \"\\n right: 0;\\n transform: translateX(150%);\\n\"], [\"\\n \", \"\\n right: 0;\\n transform: translateX(150%);\\n\"])), ButtonStyle);\nvar CarouselContainer = styled(View)(templateObject_4$n || (templateObject_4$n = __makeTemplateObject([\"\\n position: relative;\\n height: 100%;\\n display: flex;\\n align-items: stretch;\\n flex-direction: column;\\n overflow: hidden;\\n\\n &:hover {\\n \", \",\\n \", \" {\\n transform: translateX(0);\\n }\\n }\\n\\n .BrainhubCarousel__container {\\n display: flex;\\n align-items: stretch;\\n flex-grow: 1;\\n }\\n\\n .BrainhubCarousel {\\n height: 100%;\\n display: flex;\\n align-items: stretch;\\n flex-grow: 1;\\n }\\n\\n .BrainhubCarousel__track {\\n height: 100%;\\n }\\n\\n .BrainhubCarousel__trackContainer {\\n height: 100%;\\n z-index: \", \";\\n }\\n\\n .BrainhubCarouselItem {\\n height: 100%;\\n justify-content: stretch;\\n align-items: stretch;\\n }\\n\\n .BrainhubCarousel__dots {\\n padding: \", \" 0;\\n }\\n\\n .BrainhubCarousel__dot {\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n \", \";\\n border-radius: 100%;\\n padding: 0;\\n margin: 0 \", \";\\n opacity: 1;\\n\\n &:before {\\n display: none;\\n }\\n\\n &.BrainhubCarousel__dot--selected {\\n background-color: \", \";\\n }\\n }\\n\"], [\"\\n position: relative;\\n height: 100%;\\n display: flex;\\n align-items: stretch;\\n flex-direction: column;\\n overflow: hidden;\\n\\n &:hover {\\n \", \",\\n \", \" {\\n transform: translateX(0);\\n }\\n }\\n\\n .BrainhubCarousel__container {\\n display: flex;\\n align-items: stretch;\\n flex-grow: 1;\\n }\\n\\n .BrainhubCarousel {\\n height: 100%;\\n display: flex;\\n align-items: stretch;\\n flex-grow: 1;\\n }\\n\\n .BrainhubCarousel__track {\\n height: 100%;\\n }\\n\\n .BrainhubCarousel__trackContainer {\\n height: 100%;\\n z-index: \", \";\\n }\\n\\n .BrainhubCarouselItem {\\n height: 100%;\\n justify-content: stretch;\\n align-items: stretch;\\n }\\n\\n .BrainhubCarousel__dots {\\n padding: \", \" 0;\\n }\\n\\n .BrainhubCarousel__dot {\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n \", \";\\n border-radius: 100%;\\n padding: 0;\\n margin: 0 \", \";\\n opacity: 1;\\n\\n &:before {\\n display: none;\\n }\\n\\n &.BrainhubCarousel__dot--selected {\\n background-color: \", \";\\n }\\n }\\n\"])), Next$1, Back, zIndex, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n}, function (p) {\n return containerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.colors.text.getValue(1);\n});\nvar AcinCarousel = styled(Carousel$2)(templateObject_5$i || (templateObject_5$i = __makeTemplateObject([\"\\n display: flex;\\n align-items: stretch;\\n height: 100%;\\n flex-direction: column;\\n\"], [\"\\n display: flex;\\n align-items: stretch;\\n height: 100%;\\n flex-direction: column;\\n\"])));\nstyled(View)(templateObject_6$f || (templateObject_6$f = __makeTemplateObject([\"\\n /* height: calc(100% - 24px); */\\n position: relative;\\n overflow: hidden;\\n\\n &:hover {\\n \", \",\\n \", \" {\\n transform: translateX(0);\\n }\\n }\\n\"], [\"\\n /* height: calc(100% - 24px); */\\n position: relative;\\n overflow: hidden;\\n\\n &:hover {\\n \", \",\\n \", \" {\\n transform: translateX(0);\\n }\\n }\\n\"])), Next$1, Back);\nvar templateObject_1$X, templateObject_2$u, templateObject_3$q, templateObject_4$n, templateObject_5$i, templateObject_6$f;\nvar Carousel$1 = function (props) {\n var className = props.className,\n activeSlide = props.activeSlide,\n onChangeSlide = props.onChangeSlide,\n children = props.children,\n _a = props.isInfinite,\n isInfinite = _a === void 0 ? false : _a;\n var _b = __read(React__default.useState(activeSlide !== undefined ? activeSlide : 0), 2),\n active = _b[0],\n setActive = _b[1];\n React__default.useEffect(function () {\n if (activeSlide !== undefined) {\n setActive(activeSlide);\n }\n }, [activeSlide, setActive]);\n var onChange = function (value) {\n if (onChangeSlide) {\n onChangeSlide(value);\n }\n setActive(value);\n };\n var activeTheme = useThemeProvider().activeTheme;\n if (children) {\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CarouselContainer, {\n \"data-testid\": generate(['carousel'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(AcinCarousel, {\n draggable: false,\n value: active,\n onChange: onChange,\n plugins: __spreadArray(__spreadArray([], __read(isInfinite ? ['infinite'] : []), false), [{\n resolve: arrowsPlugin,\n options: {\n arrowLeft: ( /*#__PURE__*/React__default.createElement(Back, null, /*#__PURE__*/React__default.createElement(MemoSvgChevronLeft, null))),\n arrowLeftDisabled: ( /*#__PURE__*/React__default.createElement(Back, {\n disabled: true\n }, /*#__PURE__*/React__default.createElement(MemoSvgChevronLeft, null))),\n arrowRight: ( /*#__PURE__*/React__default.createElement(Next$1, null, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null))),\n arrowRightDisabled: ( /*#__PURE__*/React__default.createElement(Next$1, {\n disabled: true\n }, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null))),\n addArrowClickHandler: true\n }\n }], false)\n }, children), /*#__PURE__*/React__default.createElement(Dots, {\n value: active,\n onChange: onChange,\n number: children.length\n })));\n }\n return null;\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param activeSlide - (optional) - number\r\n * @param onChangeSlide - (optional) - (value: number) => void\r\n * @param children - (optional) - React.ReactElement[]\r\n * @param isInfinite - (optional) - boolean\r\n */\nvar Carousel = styled(Carousel$1)(templateObject_1$W || (templateObject_1$W = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$W;\nvar NssScore$1 = function (props) {\n var className = props.className,\n score = props.score,\n size = props.size,\n renderAsText = props.renderAsText,\n text = props.text;\n var renderScoreBand = function () {\n if (score.score >= 75) {\n return 'veryStrong';\n }\n if (score.score < 75 && score.score > 51) {\n return 'strong';\n }\n if (score.score < 51 && score.score > 25) {\n return 'moderate';\n }\n return 'low';\n };\n return /*#__PURE__*/React__default.createElement(BadgeScore, {\n \"data-testid\": generate(['nss-score', \"nss-score--\".concat(renderScoreBand())], props),\n className: className,\n score: score,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgNetworkAdoption, {\n size: size === 'small' ? 'small' : 'default'\n });\n },\n size: size,\n renderAsText: renderAsText,\n text: text,\n tooltipContent: scoreConfig[renderScoreBand()].tooltipContent,\n badgeVariant: scoreConfig[renderScoreBand()].variant\n });\n};\nvar scoreConfig = {\n veryStrong: {\n variant: 'successDark',\n tooltipContent: \"This is a very strong signal strength percentage. The adoption rate is calculated by using the percentage of your peers operating this control and contributing to this data set.\"\n },\n strong: {\n variant: 'success',\n tooltipContent: \"This is a strong signal strength percentage. The adoption rate is calculated by using the percentage of your peers operating this control and contributing to this data set.\"\n },\n moderate: {\n variant: 'info',\n tooltipContent: \"This is a moderate signal strength percentage. The adoption rate is calculated by using the percentage of your peers operating this control and contributing to this data set.\"\n },\n low: {\n variant: 'neutral',\n tooltipContent: 'This is a low signal strength percentage. The adoption rate is calculated by using the percentage of your peers operating this control and contributing to this data set.'\n }\n};\n\n/**\r\n @param score - (required) - { score: number; total?: number | null; highlight?: boolean }\r\n @param className - (optional) - string\r\n @param size - (optional) - BadgeSizes\r\n @param renderAsText - (optional) - boolean\r\n @param text - (optional) - string\r\n */\nvar NssScore = styled(NssScore$1)(templateObject_1$V || (templateObject_1$V = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$V;\n\n// This named style should be the wrapper for the component i.e. the module\nvar DataListRow$2 = styled.button(templateObject_2$t || (templateObject_2$t = __makeTemplateObject([\"\\n cursor: pointer;\\n display: flex;\\n height: \", \";\\n padding: 0 \", \";\\n justify-content: space-between;\\n align-items: center;\\n border: 2px solid \", \";\\n width: 100%;\\n border-radius: \", \";\\n \", \";\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n :hover {\\n border: 2px solid \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n cursor: pointer;\\n display: flex;\\n height: \", \";\\n padding: 0 \", \";\\n justify-content: space-between;\\n align-items: center;\\n border: 2px solid \", \";\\n width: 100%;\\n border-radius: \", \";\\n \", \";\\n\\n &:not(:first-child) {\\n margin-top: \", \";\\n }\\n\\n :hover {\\n border: 2px solid \", \";\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return nestedContainerBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize();\n}, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n}, function (p) {\n return p.selected && css(templateObject_1$U || (templateObject_1$U = __makeTemplateObject([\"\\n border: 2px solid \", \";\\n \"], [\"\\n border: 2px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(700).main;\n });\n});\nvar DataListRowAcinLogo = styled(Logo)(templateObject_3$p || (templateObject_3$p = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DataListRowLeftContent = styled.div(templateObject_4$m || (templateObject_4$m = __makeTemplateObject([\"\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: flex-start;\\n align-items: center;\\n\"])));\nvar DataListRowCode = styled(View)(templateObject_5$h || (templateObject_5$h = __makeTemplateObject([\"\\n white-space: nowrap;\\n\"], [\"\\n white-space: nowrap;\\n\"])));\nvar DataListRowDescription = styled(View)(templateObject_6$e || (templateObject_6$e = __makeTemplateObject([\"\\n margin-left: \", \";\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n flex-grow: 1;\\n text-align: start;\\n\"], [\"\\n margin-left: \", \";\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n flex-grow: 1;\\n text-align: start;\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar DataListRowRightContent = styled.div(templateObject_7$d || (templateObject_7$d = __makeTemplateObject([\"\\n justify-content: flex-start;\\n align-items: center;\\n display: flex;\\n flex-shrink: 0;\\n gap: \", \";\\n padding-left: \", \";\\n\"], [\"\\n justify-content: flex-start;\\n align-items: center;\\n display: flex;\\n flex-shrink: 0;\\n gap: \", \";\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar BadgeGroup = styled.div(templateObject_8$9 || (templateObject_8$9 = __makeTemplateObject([\"\\n display: flex;\\n gap: \", \";\\n\"], [\"\\n display: flex;\\n gap: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nstyled(BadgeGroup)(templateObject_9$9 || (templateObject_9$9 = __makeTemplateObject([\"\\n padding-left: \", \";\\n margin-left: \", \";\\n\"], [\"\\n padding-left: \", \";\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DataListRowAcinBadges = styled(BadgeGroup)(templateObject_10$6 || (templateObject_10$6 = __makeTemplateObject([\"\\n &:not(:first-child) {\\n padding-left: \", \";\\n border-left: 1px solid \", \";\\n }\\n\"], [\"\\n &:not(:first-child) {\\n padding-left: \", \";\\n border-left: 1px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar templateObject_1$U, templateObject_2$t, templateObject_3$p, templateObject_4$m, templateObject_5$h, templateObject_6$e, templateObject_7$d, templateObject_8$9, templateObject_9$9, templateObject_10$6;\nvar DataListRow$1 = function (props) {\n var className = props.className,\n showAcinLogo = props.showAcinLogo,\n code = props.code,\n description = props.description,\n selected = props.selected,\n onClick = props.onClick,\n clientBadges = props.clientBadges,\n acinBadges = props.acinBadges;\n var rowRef = React__default.useRef(null);\n var badgesRef = React__default.useRef(null);\n var _a = __read(React__default.useState(false), 2),\n hideAcinBadges = _a[0],\n setHideAcinBadges = _a[1];\n var _b = __read(React__default.useState(0), 2),\n badgesOffsetRight = _b[0],\n setBadgesOffsetRight = _b[1];\n var _c = __read(useWindowSize(), 1),\n windowWidth = _c[0];\n var activeTheme = useThemeProvider().activeTheme;\n React__default.useEffect(function () {\n if (rowRef.current && badgesRef.current) {\n var containerOffsetRight = rowRef.current.offsetLeft + rowRef.current.offsetWidth;\n if (!hideAcinBadges) {\n setBadgesOffsetRight(badgesRef.current.offsetLeft + badgesRef.current.offsetWidth);\n }\n setHideAcinBadges(containerOffsetRight < badgesOffsetRight);\n }\n }, [windowWidth, hideAcinBadges, badgesOffsetRight]);\n return /*#__PURE__*/React__default.createElement(DataListRow$2, {\n \"data-testid\": generate(['data-list-row'], props),\n className: className,\n onClick: onClick,\n ref: rowRef,\n selected: selected,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(Tooltip, {\n content: description\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(DataListRowLeftContent, {\n ref: tooltipRef\n }, showAcinLogo && /*#__PURE__*/React__default.createElement(DataListRowAcinLogo, {\n size: \"small\"\n }), /*#__PURE__*/React__default.createElement(DataListRowCode, null, code && code));\n }), !hideAcinBadges && ( /*#__PURE__*/React__default.createElement(DataListRowDescription, null, code && description && ' - ', description)), /*#__PURE__*/React__default.createElement(DataListRowRightContent, {\n ref: badgesRef\n }, clientBadges, acinBadges && !hideAcinBadges && /*#__PURE__*/React__default.createElement(DataListRowAcinBadges, null, acinBadges)));\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param showAcinLogo - (optional) - boolean\r\n * @param code - (optional) - string\r\n * @param description - (optional) - string\r\n * @param clientBadges - (optional) - React.ReactElement\r\n * @param acinBadges - (optional) - React.ReactElement\r\n * @param selected - (optional) - boolean\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n */\nvar DataListRow = styled(DataListRow$1)(templateObject_1$T || (templateObject_1$T = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$T;\nvar buttonVariant = function (theme, variant) {\n switch (variant) {\n default:\n case 'transparent':\n return css(templateObject_1$S || (templateObject_1$S = __makeTemplateObject([\"\\n background: transparent;\\n \"], [\"\\n background: transparent;\\n \"])));\n case 'opaque':\n return css(templateObject_2$s || (templateObject_2$s = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().context;\n });\n }\n};\nvar ScrollProvider$2 = styled(View)(templateObject_3$o || (templateObject_3$o = __makeTemplateObject([\"\"], [\"\"])));\nvar Label$1 = styled(Text$1)(templateObject_4$l || (templateObject_4$l = __makeTemplateObject([\"\\n color: inherit;\\n\"], [\"\\n color: inherit;\\n\"])));\nvar BackToTopButton$2 = styled.button(templateObject_5$g || (templateObject_5$g = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n color: \", \";\\n align-items: center;\\n border: 0;\\n outline: 0;\\n \", \";\\n padding: \", \" \", \";\\n border-radius: \", \";\\n\\n &:hover {\\n cursor: pointer;\\n\\n \", \" {\\n text-decoration: underline;\\n }\\n }\\n\\n &:active {\\n color: \", \";\\n }\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n color: \", \";\\n align-items: center;\\n border: 0;\\n outline: 0;\\n \", \";\\n padding: \", \" \", \";\\n border-radius: \", \";\\n\\n &:hover {\\n cursor: pointer;\\n\\n \", \" {\\n text-decoration: underline;\\n }\\n }\\n\\n &:active {\\n color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n}, function (p) {\n return buttonVariant(p.theme, p.variant);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, Label$1, function (p) {\n return p.theme.colors.primary.getValue(700).main;\n});\nvar Icon = styled(IconWrapper$4)(templateObject_6$d || (templateObject_6$d = __makeTemplateObject([\"\\n font-size: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n font-size: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Footer = styled(View)(templateObject_7$c || (templateObject_7$c = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n margin-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Prompt = styled(Footer)(templateObject_9$8 || (templateObject_9$8 = __makeTemplateObject([\"\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n transform: translateY(100%);\\n transition: all 0.5s ease-in-out;\\n \", \";\\n \", \"\\n\"], [\"\\n position: fixed;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n transform: translateY(100%);\\n transition: all 0.5s ease-in-out;\\n \", \";\\n \", \"\\n\"])), function (p) {\n return p.controlledWidth && \"width: \".concat(p.controlledWidth, \"px\");\n}, function (p) {\n return p.isVisible && css(templateObject_8$8 || (templateObject_8$8 = __makeTemplateObject([\"\\n transform: translateY(-16px);\\n \"], [\"\\n transform: translateY(-16px);\\n \"])));\n});\nvar templateObject_1$S, templateObject_2$s, templateObject_3$o, templateObject_4$l, templateObject_5$g, templateObject_6$d, templateObject_7$c, templateObject_8$8, templateObject_9$8;\nvar BackToTopButton$1 = function (props) {\n var className = props.className,\n _a = props.label,\n label = _a === void 0 ? 'Back to Top' : _a,\n _b = props.icon,\n icon = _b === void 0 ? function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgArrowUp, null);\n } : _b,\n variant = props.variant,\n onClick = props.onClick,\n _c = props.asFooter,\n asFooter = _c === void 0 ? false : _c,\n asPrompt = props.asPrompt,\n _d = props.isVisible,\n isVisible = _d === void 0 ? false : _d,\n controlledWidth = props.controlledWidth;\n var renderButton = function () {\n return /*#__PURE__*/React__default.createElement(BackToTopButton$2, {\n \"data-testid\": generate(['back-to-top-button', asPrompt ? 'back-to-top-prompt' : null], props),\n className: className,\n variant: variant,\n onClick: onClick\n }, /*#__PURE__*/React__default.createElement(Icon, null, icon()), /*#__PURE__*/React__default.createElement(Label$1, {\n weight: 400,\n size: -1\n }, label));\n };\n if (asPrompt) {\n return /*#__PURE__*/React__default.createElement(Prompt, {\n controlledWidth: controlledWidth,\n isVisible: isVisible\n }, renderButton());\n }\n if (asFooter) {\n return /*#__PURE__*/React__default.createElement(Footer, null, renderButton());\n } else {\n return renderButton();\n }\n};\nvar ScrollProvider$1 = function (props) {\n var buttonLabel = props.buttonLabel,\n buttonIcon = props.buttonIcon,\n _a = props.showAfter,\n showAfter = _a === void 0 ? 1000 : _a,\n _b = props.hideBefore,\n hideBefore = _b === void 0 ? 2000 : _b,\n children = props.children,\n controlledWidth = props.controlledWidth,\n className = props.className;\n var _c = __read(React__default.useState(false), 2),\n isVisible = _c[0],\n setIsVisible = _c[1];\n var _d = __read(React__default.useState(0), 2),\n scrollPosition = _d[0],\n setScrollPosition = _d[1];\n var handleScroll = function () {\n var position = window.scrollY;\n setScrollPosition(position);\n };\n var maxScrollHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);\n var nearBottom = maxScrollHeight - hideBefore; // Point at which we hide the prompt, as they reach the bottom of the page\n React__default.useEffect(function () {\n window.addEventListener('scroll', handleScroll, {\n passive: true\n });\n return function () {\n window.removeEventListener('scroll', handleScroll);\n if (scrollPosition >= showAfter && scrollPosition < nearBottom) {\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n };\n }, [scrollPosition, setIsVisible, nearBottom, showAfter]);\n var onScrollToTop = function () {\n window.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n };\n var handleOnClick = function () {\n onScrollToTop();\n setIsVisible(false);\n };\n return /*#__PURE__*/React__default.createElement(ScrollProvider$2, {\n \"data-testid\": generate(['scroll-provider'], props),\n className: className\n }, children, /*#__PURE__*/React__default.createElement(BackToTopButton$1, {\n asFooter: true,\n onClick: handleOnClick,\n icon: buttonIcon,\n label: buttonLabel\n }), /*#__PURE__*/React__default.createElement(BackToTopButton$1, {\n asPrompt: true,\n isVisible: isVisible,\n onClick: handleOnClick,\n variant: \"opaque\",\n icon: buttonIcon,\n label: buttonLabel,\n controlledWidth: controlledWidth\n }));\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param label - (optional) - string\r\n * @param icon - (optional) - () => React.ReactElement\r\n * @param onClick - (optional) - (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void\r\n * @param variant - (optional) - SC.ButtonVariants\r\n * @param asFooter - (optional) - boolean\r\n * @param asPrompt - (optional) - boolean\r\n * @param isVisible - (optional) - boolean\r\n * @param controlledWidth - (optional) - number\r\n */\nvar BackToTopButton = styled(BackToTopButton$1)(templateObject_1$R || (templateObject_1$R = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param className - (optional) - string;\r\n * @param showAfter - (optional) - number;\r\n * @param hideBefore - (optional) - number;\r\n * @param buttonLabel - (optional) - string;\r\n * @param buttonIcon - (optional) - () => React.ReactElement;\r\n * @param controlledWidth - (optional) - number;\r\n */\nvar ScrollProvider = ScrollProvider$1;\nvar templateObject_1$R;\nvar InputWithCharacterCount$1 = function (props) {\n var className = props.className,\n _a = props.maxCharacters,\n maxCharacters = _a === void 0 ? 30 : _a,\n value = props.value,\n label = props.label,\n id = props.id,\n onChange = props.onChange,\n placeholder = props.placeholder,\n isRequired = props.isRequired,\n errors = props.errors,\n disabled = props.disabled,\n inputType = props.inputType;\n var characterCountProps = {\n typedCharacters: value === null || value === void 0 ? void 0 : value.length,\n maxCharacters: maxCharacters\n };\n return /*#__PURE__*/React__default.createElement(InputGroup, {\n label: label,\n \"data-testid\": generate(['input-with-character-count', \"max-characters-\".concat(maxCharacters)], props),\n characterCountProps: characterCountProps,\n className: className,\n isRequired: isRequired,\n errors: errors\n }, /*#__PURE__*/React__default.createElement(Input$1, {\n id: id,\n value: value,\n onChange: onChange,\n placeholder: placeholder,\n disabled: disabled,\n type: inputType\n }));\n};\n\n/**\r\n * @param maxCharacters - (required) - number\r\n * @param value - (required) - string\r\n * @param label - (required) - string | React.ReactElement\r\n * @param onChange - (required) - (event: React.ChangeEvent<HTMLInputElement>) => void\r\n * @param className - (optional) - string\r\n * @param id - (optional) - string\r\n * @param placeholder - (optional) - string\r\n * @param errors - (optional) - ValidationErrors\r\n * @param isRequired - (optional) - boolean\r\n * @param disabled - (optional) - boolean\r\n * @param inputType - (optional) - InputTypes\r\n */\nvar InputWithCharacterCount = styled(InputWithCharacterCount$1)(templateObject_1$Q || (templateObject_1$Q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$Q;\nvar TextareaWithCharacterCount$1 = function (props) {\n var className = props.className,\n _a = props.maxCharacters,\n maxCharacters = _a === void 0 ? 300 : _a,\n value = props.value,\n label = props.label,\n id = props.id,\n onChange = props.onChange,\n placeholder = props.placeholder,\n isRequired = props.isRequired,\n errors = props.errors,\n disabled = props.disabled;\n var characterCountProps = {\n typedCharacters: value === null || value === void 0 ? void 0 : value.length,\n maxCharacters: maxCharacters\n };\n return /*#__PURE__*/React__default.createElement(InputGroup, {\n label: label,\n \"data-testid\": generate(['textarea-with-character-count', \"max-characters-\".concat(maxCharacters)], props),\n characterCountProps: characterCountProps,\n className: className,\n isRequired: isRequired,\n errors: errors\n }, /*#__PURE__*/React__default.createElement(Textarea, {\n id: id,\n value: value,\n onChange: onChange,\n placeholder: placeholder,\n disabled: disabled\n }));\n};\n\n/**\r\n @param value - (required) - string\r\n @param onChange - (required) - (event: React.ChangeEvent<HTMLTextAreaElement>) => void\r\n @param id - (optional) - string\r\n @param placeholder - (optional) - string\r\n @param className - (optional) - string\r\n @param disabled - (optional) - boolean\r\n */\nvar TextareaWithCharacterCount = styled(TextareaWithCharacterCount$1)(templateObject_1$P || (templateObject_1$P = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$P;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ThemeChanger$2 = styled.div(templateObject_1$O || (templateObject_1$O = __makeTemplateObject([\"\\n display: flex;\\n justify-content: right;\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 2px solid \", \";\\n\"], [\"\\n display: flex;\\n justify-content: right;\\n padding-bottom: \", \";\\n margin-bottom: \", \";\\n border-bottom: 2px solid \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(2);\n});\nvar StoryBackground = styled.div(templateObject_2$r || (templateObject_2$r = __makeTemplateObject([\"\\n background-color: \", \";\\n\"], [\"\\n background-color: \", \";\\n\"])), function (p) {\n return getContainerColor(p.activeTheme);\n});\nvar templateObject_1$O, templateObject_2$r;\nvar ThemeChanger$1 = function (props) {\n var children = props.children;\n var _a = useThemeProvider(),\n setTheme = _a.setTheme,\n activeTheme = _a.activeTheme;\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ThemeChanger$2, null, /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"primary\",\n label: activeTheme.name === 'default' ? 'View in Dark Mode' : 'View in Light Mode',\n onClick: function () {\n return setTheme(darkTheme);\n }\n })), /*#__PURE__*/React__default.createElement(StoryBackground, {\n activeTheme: activeTheme\n }, children));\n};\n\n/**\r\n * @param className - (optional) - string\r\n */\nvar ThemeChanger = styled(ThemeChanger$1)(templateObject_1$N || (templateObject_1$N = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$N;\nvar RangeSlider$2 = styled(View)(templateObject_1$M || (templateObject_1$M = __makeTemplateObject([\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n\"], [\"\\n position: relative;\\n display: flex;\\n align-items: center;\\n width: 100%;\\n\"])));\n// Thumb\nvar thumbstyle = css(templateObject_2$q || (templateObject_2$q = __makeTemplateObject([\"\\n background-color: \", \";\\n border: none;\\n border-radius: 50%;\\n cursor: pointer;\\n height: \", \";\\n width: \", \";\\n margin-top: \", \";\\n pointer-events: all;\\n position: relative;\\n\"], [\"\\n background-color: \", \";\\n border: none;\\n border-radius: 50%;\\n cursor: pointer;\\n height: \", \";\\n width: \", \";\\n margin-top: \", \";\\n pointer-events: all;\\n position: relative;\\n\"])), function (p) {\n return p.theme.colors.accent2.getValue().main;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Thumb = styled.input(templateObject_3$n || (templateObject_3$n = __makeTemplateObject([\"\\n pointer-events: none;\\n position: absolute;\\n height: 0;\\n margin: 0;\\n width: 100%;\\n outline: none;\\n -webkit-appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\"], [\"\\n pointer-events: none;\\n position: absolute;\\n height: 0;\\n margin: 0;\\n width: 100%;\\n outline: none;\\n -webkit-appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n\\n &::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n -webkit-tap-highlight-color: transparent;\\n \", \"\\n }\\n\\n &::-moz-range-thumb {\\n \", \"\\n }\\n\"])), thumbstyle, thumbstyle);\nvar ThumbZindex3 = css(templateObject_4$k || (templateObject_4$k = __makeTemplateObject([\"\\n z-index: 3;\\n\"], [\"\\n z-index: 3;\\n\"])));\nvar ThumbZindex4 = css(templateObject_5$f || (templateObject_5$f = __makeTemplateObject([\"\\n z-index: 4;\\n\"], [\"\\n z-index: 4;\\n\"])));\nvar ThumbZindex5 = css(templateObject_6$c || (templateObject_6$c = __makeTemplateObject([\"\\n z-index: 5;\\n\"], [\"\\n z-index: 5;\\n\"])));\nvar MinThumb = styled(Thumb)(templateObject_7$b || (templateObject_7$b = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n return p.minVal > p.max - p.max / 10 ? ThumbZindex5 : ThumbZindex3;\n});\nvar MaxThumb = styled(Thumb)(templateObject_8$7 || (templateObject_8$7 = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), ThumbZindex4);\n// Slider\nvar Slider = styled(View)(templateObject_9$7 || (templateObject_9$7 = __makeTemplateObject([\"\\n position: relative;\\n width: 100%;\\n\"], [\"\\n position: relative;\\n width: 100%;\\n\"])));\nvar SliderPart = styled.div(templateObject_10$5 || (templateObject_10$5 = __makeTemplateObject([\"\\n position: absolute;\\n\"], [\"\\n position: absolute;\\n\"])));\nvar SliderTrackPart = styled(SliderPart)(templateObject_11$4 || (templateObject_11$4 = __makeTemplateObject([\"\\n border-radius: \", \";\\n height: \", \";\\n\"], [\"\\n border-radius: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar SliderTrack = styled(SliderTrackPart)(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: 100%;\\n z-index: 1;\\n\"], [\"\\n background-color: \", \";\\n width: 100%;\\n z-index: 1;\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue();\n});\nvar SliderRange = styled(SliderTrackPart)(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject([\"\\n background-color: \", \";\\n z-index: 2;\\n\"], [\"\\n background-color: \", \";\\n z-index: 2;\\n\"])), function (p) {\n return p.theme.colors.accent2.getValue().main;\n});\nvar templateObject_1$M, templateObject_2$q, templateObject_3$n, templateObject_4$k, templateObject_5$f, templateObject_6$c, templateObject_7$b, templateObject_8$7, templateObject_9$7, templateObject_10$5, templateObject_11$4, templateObject_12$3, templateObject_13$2;\nvar RangeSlider$1 = function (props) {\n var className = props.className,\n min = props.min,\n max = props.max,\n externalRange = props.range,\n defaultRange = props.defaultRange,\n onRangeChange = props.onRangeChange;\n var isControlled = externalRange !== undefined;\n var _a = __read(React__default.useState(defaultRange !== undefined ? {\n min: defaultRange.min > min ? defaultRange.min : min,\n max: defaultRange.max < max ? defaultRange.max : max\n } : {\n min: min,\n max: max\n }), 2),\n internalRange = _a[0],\n setInternalRange = _a[1];\n var range = isControlled ? externalRange : internalRange;\n var minRangeRef = React__default.useRef(null);\n var maxRangeRef = React__default.useRef(null);\n var rangeRef = React__default.useRef(null);\n var getPercent = React__default.useCallback(function (value) {\n return Math.round((value - min) / (max - min) * 100);\n }, [min, max]);\n // Set width of the range to decrease from the left side\n React__default.useEffect(function () {\n if (maxRangeRef.current) {\n var minPercent = getPercent(range === null || range === void 0 ? void 0 : range.min);\n var maxPercent = getPercent(Number(maxRangeRef.current.value));\n if (rangeRef.current) {\n rangeRef.current.style.left = \"\".concat(minPercent, \"%\");\n rangeRef.current.style.width = \"\".concat(maxPercent - minPercent, \"%\");\n }\n }\n }, [getPercent, range === null || range === void 0 ? void 0 : range.min]);\n // Set width of the range to decrease from the right side\n React__default.useEffect(function () {\n if (minRangeRef.current) {\n var minPercent = getPercent(Number(minRangeRef.current.value));\n var maxPercent = getPercent(range.max);\n if (rangeRef.current) {\n rangeRef.current.style.width = \"\".concat(maxPercent - minPercent, \"%\");\n }\n }\n }, [getPercent, range.max]);\n var onMinValChanged = React__default.useCallback(function (event) {\n var min = Math.min(Number(event.target.value), range.max);\n var updatedRange = {\n min: min,\n max: range.max\n };\n if (onRangeChange) {\n onRangeChange(updatedRange);\n }\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n }, [isControlled, onRangeChange, range.max]);\n var onMaxValChanged = React__default.useCallback(function (event) {\n var max = Math.max(Number(event.target.value), range.min);\n var updatedRange = {\n min: range.min,\n max: max\n };\n if (onRangeChange) {\n onRangeChange(updatedRange);\n }\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n }, [isControlled, onRangeChange, range.min]);\n return /*#__PURE__*/React__default.createElement(RangeSlider$2, {\n \"data-testid\": generate(['range-slider'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(MinThumb, {\n \"data-testid\": generate(['min-val-range-slider-thumb']),\n minVal: range.min,\n type: \"range\",\n min: min,\n max: max,\n value: range.min,\n ref: minRangeRef,\n onChange: onMinValChanged\n }), /*#__PURE__*/React__default.createElement(MaxThumb, {\n \"data-testid\": generate(['max-val-range-slider-thumb']),\n type: \"range\",\n min: min,\n max: max,\n value: range.max,\n ref: maxRangeRef,\n onChange: onMaxValChanged\n }), /*#__PURE__*/React__default.createElement(Slider, null, /*#__PURE__*/React__default.createElement(SliderTrack, null), /*#__PURE__*/React__default.createElement(SliderRange, {\n ref: rangeRef\n })));\n};\n\n/**\r\n * RangeSlider component to set a min and max range using a draggable slider\r\n * @param className - (optional) - String - Enables Mounting as a styled component\r\n * @param min - The minimum possible range value\r\n * @param max - The maximum possible range value\r\n * @param defaultRange - (optional) - An optional initial default range\r\n * @param range - (optional) - Setting the range will make this a controlled component where the range is controlled externally.\r\n * @param onRangeChange - (optional) - Called whenever the min or max range changes\r\n */\nvar RangeSlider = styled(RangeSlider$1)(templateObject_1$L || (templateObject_1$L = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$L;\nvar RangeSliderInput$2 = styled(View)(templateObject_1$K || (templateObject_1$K = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n gap: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n gap: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar RangeSliderContainer = styled(View)(templateObject_2$p || (templateObject_2$p = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: \", \";\\n width: 100%;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: \", \";\\n width: 100%;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Heading$1 = styled(View)(templateObject_3$m || (templateObject_3$m = __makeTemplateObject([\"\"], [\"\"])));\nvar RangeInput = styled(Input$1)(templateObject_5$e || (templateObject_5$e = __makeTemplateObject([\"\\n width: \", \";\\n padding: \", \";\\n text-align: center;\\n\\n \", \"\\n\"], [\"\\n width: \", \";\\n padding: \", \";\\n text-align: center;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.theme.spacing.getSize(2.5);\n}, function (p) {\n return p.hasErrors && css(templateObject_4$j || (templateObject_4$j = __makeTemplateObject([\"\\n border-color: \", \";\\n \"], [\"\\n border-color: \", \";\\n \"])), p.theme.colors.error.getValue().main);\n});\nvar templateObject_1$K, templateObject_2$p, templateObject_3$m, templateObject_4$j, templateObject_5$e;\nvar RangeSliderInput$1 = function (props) {\n var className = props.className,\n min = props.min,\n max = props.max,\n externalRange = props.range,\n defaultRange = props.defaultRange,\n header = props.header,\n onRangeChange = props.onRangeChange;\n var isControlled = externalRange !== undefined;\n var _a = __read(React__default.useState(defaultRange !== undefined ? {\n min: defaultRange.min > min ? defaultRange.min : min,\n max: defaultRange.max < max ? defaultRange.max : max\n } : {\n min: min,\n max: max\n }), 2),\n internalRange = _a[0],\n setInternalRange = _a[1];\n var range = isControlled ? externalRange : internalRange;\n var _b = __read(React__default.useState(range.min.toString()), 2),\n minValText = _b[0],\n setMinValText = _b[1];\n var _c = __read(React__default.useState(range.max.toString()), 2),\n maxValText = _c[0],\n setMaxValText = _c[1];\n var minValTextInternal = React__default.useRef(range.min);\n var maxValTextInternal = React__default.useRef(range.max);\n var _d = __read(React__default.useState(false), 2),\n minError = _d[0],\n setMinError = _d[1];\n var _e = __read(React__default.useState(false), 2),\n maxError = _e[0],\n setMaxError = _e[1];\n React__default.useEffect(function () {\n if (isControlled && range.min !== minValTextInternal.current) {\n setMinValText(range.min.toString());\n setMinError(false);\n }\n if (isControlled && range.max !== maxValTextInternal.current) {\n setMaxValText(range.max.toString());\n setMaxError(false);\n }\n }, [isControlled, range]);\n React__default.useEffect(function () {\n if (onRangeChange) {\n onRangeChange(range);\n }\n }, [onRangeChange, range]);\n var onRangeSliderChanged = React__default.useCallback(function (updatedRange) {\n if (updatedRange.min !== range.min) {\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n setMinValText(updatedRange.min.toString());\n minValTextInternal.current = updatedRange.min;\n setMinError(false);\n }\n if (updatedRange.max !== range.max) {\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n setMaxValText(updatedRange.max.toString());\n maxValTextInternal.current = updatedRange.max;\n setMaxError(false);\n }\n if (onRangeChange) {\n onRangeChange(updatedRange);\n }\n }, [range.min, range.max, onRangeChange, isControlled]);\n var debounceMinValChanged = React__default.useMemo(function () {\n return debounce$2(function (minVal) {\n minValTextInternal.current = minVal;\n if (minVal < min || minVal > range.max || minVal !== 0 && !minVal) {\n setMinError(true);\n } else {\n var updatedRange = {\n min: minVal,\n max: range.max\n };\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n setMinError(false);\n if (onRangeChange) {\n onRangeChange(updatedRange);\n }\n }\n }, 500);\n }, [isControlled, min, onRangeChange, range.max]);\n var onMinTextValChanged = React__default.useCallback(function (event) {\n var value = Number(event.target.value);\n setMinValText(value.toString());\n debounceMinValChanged(value);\n }, [debounceMinValChanged]);\n var debounceMaxValChanged = React__default.useMemo(function () {\n return debounce$2(function (maxVal) {\n maxValTextInternal.current = maxVal;\n if (maxVal > max || maxVal < range.min || maxVal !== 0 && !maxVal) {\n setMaxError(true);\n } else {\n var updatedRange = {\n min: range.min,\n max: maxVal\n };\n if (!isControlled) {\n setInternalRange(updatedRange);\n }\n setMaxError(false);\n if (onRangeChange) {\n onRangeChange(updatedRange);\n }\n }\n }, 500);\n }, [isControlled, max, onRangeChange, range.min]);\n var onMaxTextValChanged = React__default.useCallback(function (event) {\n var value = Number(event.target.value);\n setMaxValText(value.toString());\n debounceMaxValChanged(value);\n }, [debounceMaxValChanged]);\n return /*#__PURE__*/React__default.createElement(RangeSliderInput$2, {\n \"data-testid\": generate(['range-slider-input'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Heading$1, null, header()), /*#__PURE__*/React__default.createElement(RangeSliderContainer, null, /*#__PURE__*/React__default.createElement(RangeInput, {\n \"data-testid\": generate(['min-val-range-slider-input', minError ? 'error' : '']),\n value: minValText,\n hasErrors: minError,\n onChange: onMinTextValChanged\n }), /*#__PURE__*/React__default.createElement(RangeSlider, {\n max: max,\n min: min,\n defaultRange: range,\n range: range,\n onRangeChange: onRangeSliderChanged\n }), /*#__PURE__*/React__default.createElement(RangeInput, {\n \"data-testid\": generate(['max-val-range-slider-input', maxError ? 'error' : '']),\n value: maxValText,\n hasErrors: maxError,\n onChange: onMaxTextValChanged\n })));\n};\n\n/**\r\n * RangeSliderInput component to set a min and max range using a draggable slider or using min/max inputs\r\n * @param className - (optional) - String - Enables Mounting as a styled component\r\n * @param min - The minimum possible range value\r\n * @param max - The maximum possible range value\r\n * @param defaultRange - (optional) - An optional initial default range\r\n * @param range - (optional) - Setting the range will make this a controlled component where the range is controlled externally.\r\n * @param onRangeChange - (optional) - Called whenever the min or max range changes\r\n * @param header - A render prop to render the header of the component\r\n */\nvar RangeSliderInput = styled(RangeSliderInput$1)(templateObject_1$J || (templateObject_1$J = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$J;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Pagination$2 = styled.div(templateObject_1$I || (templateObject_1$I = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar paginationButton = css(templateObject_2$o || (templateObject_2$o = __makeTemplateObject([\"\\n height: \", \";\\n width: \", \";\\n border-radius: 2px;\\n background: none;\\n border: 0;\\n padding: 0;\\n justify-content: center;\\n font-weight: 300;\\n\\n &:hover {\\n font-weight: 500;\\n }\\n\"], [\"\\n height: \", \";\\n width: \", \";\\n border-radius: 2px;\\n background: none;\\n border: 0;\\n padding: 0;\\n justify-content: center;\\n font-weight: 300;\\n\\n &:hover {\\n font-weight: 500;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(8);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar Item = styled(Button$1)(templateObject_4$i || (templateObject_4$i = __makeTemplateObject([\"\\n \", \"\\n color: \", \";\\n\\n \", \"\\n\"], [\"\\n \", \"\\n color: \", \";\\n\\n \", \"\\n\"])), paginationButton, function (p) {\n return p.theme.colors.text.getValue();\n}, function (p) {\n return p.active && css(templateObject_3$l || (templateObject_3$l = __makeTemplateObject([\"\\n background: \", \";\\n color: \", \";\\n \"], [\"\\n background: \", \";\\n color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue().main;\n }, function (p) {\n return p.theme.colors.primary.getValue().context;\n });\n});\nvar Prev = styled(IconButton)(templateObject_5$d || (templateObject_5$d = __makeTemplateObject([\"\\n \", \"\\n margin-right: 8px;\\n\"], [\"\\n \", \"\\n margin-right: 8px;\\n\"])), paginationButton);\nvar Next = styled(IconButton)(templateObject_6$b || (templateObject_6$b = __makeTemplateObject([\"\\n \", \"\\n margin-left: 8px;\\n\"], [\"\\n \", \"\\n margin-left: 8px;\\n\"])), paginationButton);\nvar More = styled(Button$1)(templateObject_7$a || (templateObject_7$a = __makeTemplateObject([\"\\n \", \"\\n pointer-events: none;\\n\"], [\"\\n \", \"\\n pointer-events: none;\\n\"])), paginationButton);\nvar templateObject_1$I, templateObject_2$o, templateObject_3$l, templateObject_4$i, templateObject_5$d, templateObject_6$b, templateObject_7$a;\nvar Pagination$1 = function (props) {\n var className = props.className,\n _a = props.active,\n active = _a === void 0 ? 1 : _a,\n _b = props.length,\n length = _b === void 0 ? 1 : _b,\n onClick = props.onClick;\n var MAX_ITEMS = 9;\n var STARTING_ELLIPSIS_THRESHOLD = 6;\n var ENDING_ELLIPSIS_THRESHOLD = 4;\n var disablePrev = active <= 1;\n var disableNext = active === length;\n var showEllipsis = length > MAX_ITEMS;\n var showFirstEllipsis = showEllipsis && active >= STARTING_ELLIPSIS_THRESHOLD;\n var showLastEllipsis = showEllipsis && active < length - ENDING_ELLIPSIS_THRESHOLD;\n var buttonTestId = 'pagination-button';\n var firstPage = function () {\n if (showEllipsis) {\n return /*#__PURE__*/React__default.createElement(Item, {\n label: \"1\",\n onClick: function () {\n return onClick(1);\n },\n active: 1 === active,\n \"data-testid\": generate([buttonTestId, 1 === active ? 'active-page' : null])\n });\n }\n return null;\n };\n var lastPage = function () {\n if (showEllipsis) {\n return /*#__PURE__*/React__default.createElement(Item, {\n label: length.toString(),\n onClick: function () {\n return onClick(length);\n },\n active: length === active,\n \"data-testid\": generate([buttonTestId, length === active ? 'active-page' : null])\n });\n }\n return null;\n };\n var renderEllipsis = function (position) {\n return /*#__PURE__*/React__default.createElement(More, {\n label: \"...\",\n \"data-testid\": \"\".concat(buttonTestId, \" \").concat(position, \"--ellipsis\")\n });\n };\n var renderPages = function () {\n if (showEllipsis && active < STARTING_ELLIPSIS_THRESHOLD) {\n // Renders page items 1 to 7 with ending ellipsis when necessary\n var VALUES = [2, 3, 4, 5, 6, 7];\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, firstPage(), VALUES.map(function (item) {\n return /*#__PURE__*/React__default.createElement(Item, {\n key: item,\n label: item.toString(),\n onClick: function () {\n return onClick(item);\n },\n active: item === active,\n \"data-testid\": generate([buttonTestId, item === active ? 'active-page' : null])\n });\n }), showLastEllipsis ? renderEllipsis('end') : ( /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n label: (active + 3).toString(),\n onClick: function () {\n return onClick(active + 3);\n }\n })), lastPage());\n } else if (showEllipsis && active > length - ENDING_ELLIPSIS_THRESHOLD) {\n // Renders starting ellipsis and final page items\n var VALUES = [6, 5, 4, 3, 2, 1];\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, firstPage(), renderEllipsis('start'), VALUES.map(function (item) {\n return /*#__PURE__*/React__default.createElement(Item, {\n key: length - item,\n label: (length - item).toString(),\n onClick: function () {\n return onClick(length - item);\n },\n active: length - item === active,\n \"data-testid\": generate([buttonTestId, length - item === active ? 'active-page' : null])\n });\n }), lastPage());\n } else if (showEllipsis) {\n // Renders active page with 2 pages before and after, shows ellipsis where needed and renders first and last page items\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, firstPage(), showFirstEllipsis ? renderEllipsis('start') : ( /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n label: (active - 3).toString(),\n onClick: function () {\n return onClick(active - 3);\n }\n })), /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n key: active - 2,\n label: (active - 2).toString(),\n onClick: function () {\n return onClick(active - 2);\n }\n }), /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n key: active - 1,\n label: (active - 1).toString(),\n onClick: function () {\n return onClick(active - 1);\n }\n }), /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": generate(['active-page'], props),\n key: active,\n label: active.toString(),\n onClick: function () {\n return onClick(active);\n },\n active: true\n }), /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n key: active + 1,\n label: (active + 1).toString(),\n onClick: function () {\n return onClick(active + 1);\n }\n }), /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n key: active + 2,\n label: (active + 2).toString(),\n onClick: function () {\n return onClick(active + 2);\n }\n }), showLastEllipsis ? renderEllipsis('end') : ( /*#__PURE__*/React__default.createElement(Item, {\n \"data-testid\": buttonTestId,\n label: (active + 3).toString(),\n onClick: function () {\n return onClick(active + 3);\n }\n })), lastPage());\n } else if (length >= 0) {\n // Renders up to 9 pages (1-9) (No Ellipsis)\n return Array(length).fill(0).map(function (_, index) {\n var pageNo = index + 1;\n return /*#__PURE__*/React__default.createElement(Item, {\n key: pageNo,\n label: pageNo.toString(),\n onClick: function () {\n return onClick(pageNo);\n },\n active: pageNo === active,\n \"data-testid\": generate([buttonTestId, pageNo === active ? 'active-page' : null])\n });\n });\n }\n return null;\n };\n return /*#__PURE__*/React__default.createElement(Pagination$2, {\n \"data-testid\": generate(['pagination'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Prev, {\n label: \"Previous\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronLeft, null);\n },\n disabled: disablePrev,\n onClick: function () {\n return onClick(active - 1);\n },\n \"data-testid\": generate([buttonTestId, disablePrev ? 'prev--disabled' : 'prev--enabled'])\n }), renderPages(), /*#__PURE__*/React__default.createElement(Next, {\n label: \"Next\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null);\n },\n disabled: disableNext,\n onClick: function () {\n return onClick(active + 1);\n },\n \"data-testid\": generate([buttonTestId, disableNext ? 'next--disabled' : 'next--enabled'])\n }));\n};\nvar Pagination = styled(Pagination$1)(templateObject_1$H || (templateObject_1$H = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$H;\nvar firstColumnFixedWidth = css(templateObject_1$G || (templateObject_1$G = __makeTemplateObject([\"\\n min-width: \", \";\\n max-width: \", \";\\n width: \", \";\\n\"], [\"\\n min-width: \", \";\\n max-width: \", \";\\n width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(116);\n}, function (p) {\n return p.theme.spacing.getSize(116);\n}, function (p) {\n return p.theme.spacing.getSize(116);\n});\nvar columnsWidth = css(templateObject_2$n || (templateObject_2$n = __makeTemplateObject([\"\\n max-width: \", \";\\n min-width: \", \";\\n width: \", \";\\n\"], [\"\\n max-width: \", \";\\n min-width: \", \";\\n width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(40);\n}, function (p) {\n return p.theme.spacing.getSize(40);\n}, function (p) {\n return p.theme.spacing.getSize(40);\n});\n// TODO: Create a box shadow variable for the Dark Mode\n// right border on first cell and visible when user scroll horizontally\nvar borderRightShadow = css(templateObject_3$k || (templateObject_3$k = __makeTemplateObject([\"\\n &:after {\\n background-color: transparent;\\n bottom: 0;\\n box-shadow: inset 5px 0px 4px -4px rgba(191, 191, 191, 0.46);\\n content: '';\\n display: block;\\n position: absolute;\\n right: 0;\\n top: 0;\\n width: 3px;\\n z-index: 1;\\n }\\n\"], [\"\\n &:after {\\n background-color: transparent;\\n bottom: 0;\\n box-shadow: inset 5px 0px 4px -4px rgba(191, 191, 191, 0.46);\\n content: '';\\n display: block;\\n position: absolute;\\n right: 0;\\n top: 0;\\n width: 3px;\\n z-index: 1;\\n }\\n\"])));\n// left border on first row: (is made by using pseudoelement before; visible only when child row is open)\nvar borderLeft = css(templateObject_4$h || (templateObject_4$h = __makeTemplateObject([\"\\n background-color: \", \";\\n bottom: 0;\\n content: '';\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 4px;\\n z-index: 1;\\n\"], [\"\\n background-color: \", \";\\n bottom: 0;\\n content: '';\\n left: 0;\\n position: absolute;\\n top: 0;\\n width: 4px;\\n z-index: 1;\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n});\n// This named style should be the wrapper for the component i.e. the module\nvar OuterContainer = styled.div(templateObject_5$c || (templateObject_5$c = __makeTemplateObject([\"\\n position: relative;\\n overflow-y: hidden;\\n\"], [\"\\n position: relative;\\n overflow-y: hidden;\\n\"])));\nvar InnerContainer = styled.div(templateObject_6$a || (templateObject_6$a = __makeTemplateObject([\"\\n padding-bottom: \", \";\\n overflow-y: auto;\\n\"], [\"\\n padding-bottom: \", \";\\n overflow-y: auto;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar CollapsibleTable$2 = styled(Table)(templateObject_7$9 || (templateObject_7$9 = __makeTemplateObject([\"\\n border-collapse: separate;\\n\"], [\"\\n border-collapse: separate;\\n\"])));\nvar TRow = styled(Row$1)(templateObject_8$6 || (templateObject_8$6 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar THeadCell = styled(HeadCell)(templateObject_10$4 || (templateObject_10$4 = __makeTemplateObject([\"\\n \", \"\\n background-color: \", \";\\n border-bottom: none;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\\n &:first-child {\\n \", \";\\n padding-left: \", \";\\n position: relative;\\n\\n \", \"\\n\\n & > div {\\n max-width: \", \";\\n width: \", \";\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n\\n \", \"\\n }\\n\"], [\"\\n \", \"\\n background-color: \", \";\\n border-bottom: none;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n\\n &:first-child {\\n \", \";\\n padding-left: \", \";\\n position: relative;\\n\\n \", \"\\n\\n & > div {\\n max-width: \", \";\\n width: \", \";\\n text-overflow: ellipsis;\\n white-space: nowrap;\\n overflow: hidden;\\n }\\n\\n \", \"\\n }\\n\"])), columnsWidth, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, firstColumnFixedWidth, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.isFixedColumn && css(templateObject_9$6 || (templateObject_9$6 = __makeTemplateObject([\"\\n left: 0px;\\n position: sticky;\\n top: 0;\\n \"], [\"\\n left: 0px;\\n position: sticky;\\n top: 0;\\n \"])));\n}, function (p) {\n return p.theme.spacing.getSize(103);\n}, function (p) {\n return p.theme.spacing.getSize(103);\n}, function (p) {\n return p.showBorder && p.isFixedColumn && borderRightShadow;\n});\nvar templateObject_1$G, templateObject_2$n, templateObject_3$k, templateObject_4$h, templateObject_5$c, templateObject_6$a, templateObject_7$9, templateObject_8$6, templateObject_9$6, templateObject_10$4;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ParentRow$1 = styled(Row$1)(templateObject_1$F || (templateObject_1$F = __makeTemplateObject([\"\\n &:hover td {\\n background-color: \", \";\\n }\\n\"], [\"\\n &:hover td {\\n background-color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n});\nvar ParentCell = styled(Cell)(templateObject_7$8 || (templateObject_7$8 = __makeTemplateObject([\"\\n \", \";\\n background-color: \", \";\\n border-top: 1px solid \", \";\\n\\n \", \"\\n\\n \", \"\\n\\n &:first-child {\\n \", \";\\n border-left: none;\\n position: relative;\\n\\n \", \"\\n\\n &:before {\\n \", \"\\n display: none;\\n }\\n \", \"\\n\\n \", \"\\n }\\n\\n &:last-child {\\n border-right: 1px solid transparent;\\n \", \"\\n }\\n\"], [\"\\n \", \";\\n background-color: \", \";\\n border-top: 1px solid \", \";\\n\\n \", \"\\n\\n \", \"\\n\\n &:first-child {\\n \", \";\\n border-left: none;\\n position: relative;\\n\\n \", \"\\n\\n &:before {\\n \", \"\\n display: none;\\n }\\n \", \"\\n\\n \", \"\\n }\\n\\n &:last-child {\\n border-right: 1px solid transparent;\\n \", \"\\n }\\n\"])), columnsWidth, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return !p.isOpen && p.isLastRow && css(templateObject_2$m || (templateObject_2$m = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n \"], [\"\\n border-bottom: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.borders.getValue(1);\n });\n}, function (p) {\n return p.isOpen && css(templateObject_3$j || (templateObject_3$j = __makeTemplateObject([\"\\n background-color: \", \";\\n border-top: 1px solid \", \";\\n \"], [\"\\n background-color: \", \";\\n border-top: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n }, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n });\n}, firstColumnFixedWidth, function (p) {\n return p.isFixedColumn && css(templateObject_4$g || (templateObject_4$g = __makeTemplateObject([\"\\n left: 0px;\\n position: sticky;\\n top: 0;\\n \"], [\"\\n left: 0px;\\n position: sticky;\\n top: 0;\\n \"])));\n}, borderLeft, function (p) {\n return p.isOpen && css(templateObject_5$b || (templateObject_5$b = __makeTemplateObject([\"\\n &:before {\\n display: block;\\n }\\n \"], [\"\\n &:before {\\n display: block;\\n }\\n \"])));\n}, function (p) {\n return p.showBorder && p.isFixedColumn && borderRightShadow;\n}, function (p) {\n return p.isOpen && css(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject([\"\\n border-right: 1px solid \", \";\\n \"], [\"\\n border-right: 1px solid \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n });\n});\nvar ArrowWrapper = styled.div(templateObject_8$5 || (templateObject_8$5 = __makeTemplateObject([\"\\n cursor: pointer;\\n display: inline-block;\\n margin-right: \", \";\\n\"], [\"\\n cursor: pointer;\\n display: inline-block;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar LogoWrapper = styled(Logo)(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject([\"\\n margin-right: \", \";\\n vertical-align: middle;\\n\"], [\"\\n margin-right: \", \";\\n vertical-align: middle;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$F, templateObject_2$m, templateObject_3$j, templateObject_4$g, templateObject_5$b, templateObject_6$9, templateObject_7$8, templateObject_8$5, templateObject_9$5;\nvar getArrow = function (isOpen) {\n if (isOpen) return /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, null);\n return /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null);\n};\nvar ParentRow = function (props) {\n var className = props.className,\n onClick = props.onClick,\n isOpen = props.isOpen,\n isLastRow = props.isLastRow,\n headers = props.headers,\n row = props.row,\n showBorder = props.showBorder,\n isFixedColumn = props.isFixedColumn;\n return /*#__PURE__*/React__default.createElement(ParentRow$1, {\n \"data-testid\": generate(['parent-row'], props),\n className: className,\n isOpen: isOpen\n }, headers.map(function (head, index) {\n var isFirstCol = index === 0;\n return /*#__PURE__*/React__default.createElement(ParentCell, {\n \"data-testid\": generate(['parent-cell'], props),\n key: head.key,\n isOpen: isOpen,\n isLastRow: isLastRow,\n showBorder: isFirstCol && showBorder,\n isFixedColumn: isFixedColumn,\n size: \"small\",\n noWrap: true,\n tooltipText: row[head.key] ? \"\".concat(row[head.key]) : undefined\n }, isFirstCol && ( /*#__PURE__*/React__default.createElement(ArrowWrapper, {\n \"data-testid\": \"arrow\",\n onClick: onClick\n }, getArrow(isOpen))), isFirstCol && row.isAcin && /*#__PURE__*/React__default.createElement(LogoWrapper, {\n size: \"small\"\n }), row[head.key] ? row[head.key] : '-');\n }));\n};\nvar MIN_VIEWPORT = 845;\nvar CollapsibleTable$1 = function (props) {\n var className = props.className,\n headers = props.headers,\n rows = props.rows,\n onClick = props.onClick,\n children = props.children;\n var _a = __read(React__default.useState(function () {\n return rows.reduce(function (acc, row) {\n var _a;\n return __assign(__assign({}, acc), (_a = {}, _a[\"\".concat(row.id)] = false, _a));\n }, {});\n }), 2),\n isOpen = _a[0],\n setIsOpen = _a[1];\n var _b = __read(React__default.useState(false), 2),\n showBorder = _b[0],\n setShowBorder = _b[1];\n var _c = __read(React__default.useState(0), 2),\n tableTop = _c[0],\n setTableTop = _c[1];\n var _d = __read(React__default.useState(false), 2),\n isFixedColumn = _d[0],\n setIsFixedColumn = _d[1];\n var tableRef = /*#__PURE__*/React__default.createRef();\n var childrenRows = React__default.Children.toArray(children);\n var _e = __read(useWindowSize(), 1),\n windowWidth = _e[0];\n var handleClick = function (id) {\n var _a;\n if (!isOpen) return;\n var newIsOpen = __assign(__assign({}, isOpen), (_a = {}, _a[id] = !isOpen[id], _a));\n onClick && onClick(id);\n setIsOpen(newIsOpen);\n };\n var handleHorizontalScroll = function (e) {\n if (windowWidth < MIN_VIEWPORT) return setShowBorder(false);\n setShowBorder(e.currentTarget.scrollLeft > 2);\n };\n React__default.useEffect(function () {\n if (tableRef && tableRef.current) {\n setTableTop(tableRef.current.getBoundingClientRect().top);\n }\n }, [tableRef]);\n React__default.useEffect(function () {\n if (MIN_VIEWPORT < windowWidth) {\n setIsFixedColumn(true);\n } else {\n setIsFixedColumn(false);\n }\n }, [windowWidth]);\n return /*#__PURE__*/React__default.createElement(OuterContainer, null, /*#__PURE__*/React__default.createElement(InnerContainer, {\n onScroll: handleHorizontalScroll,\n ref: tableRef\n }, /*#__PURE__*/React__default.createElement(CollapsibleTable$2, {\n \"data-testid\": generate(['collapsible-table'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(THead, null, /*#__PURE__*/React__default.createElement(TRow, {\n \"data-testid\": \"header-row\"\n }, headers.map(function (_a, index) {\n var key = _a.key,\n label = _a.label;\n return /*#__PURE__*/React__default.createElement(THeadCell, {\n \"data-testid\": \"header-cell\",\n key: key,\n showBorder: index === 0 && showBorder,\n isFixedColumn: isFixedColumn\n }, label);\n }))), /*#__PURE__*/React__default.createElement(TBody, null, rows.map(function (row, rowIndex) {\n var rowId = \"\".concat(row.id);\n var isRowOpen = isOpen[rowId];\n var isSecondLastRow = rowIndex === rows.length - 1;\n var childRow = childrenRows[rowIndex];\n return /*#__PURE__*/React__default.createElement(React__default.Fragment, {\n key: rowId\n }, /*#__PURE__*/React__default.createElement(ParentRow, {\n showBorder: showBorder,\n isOpen: isRowOpen,\n onClick: function () {\n return handleClick(rowId);\n },\n isLastRow: isSecondLastRow,\n headers: headers,\n row: row,\n isFixedColumn: isFixedColumn\n }), /*#__PURE__*/React__default.isValidElement(childRow) && /*#__PURE__*/React__default.cloneElement(childRow, {\n isOpen: isRowOpen,\n colSpan: headers.length,\n tableTop: tableTop,\n isFixedColumn: isFixedColumn\n }));\n })))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ChildRow$1 = styled(Row$1)(templateObject_2$l || (templateObject_2$l = __makeTemplateObject([\"\\n display: none;\\n \", \"\\n\"], [\"\\n display: none;\\n \", \"\\n\"])), function (p) {\n return p.isOpen && css(templateObject_1$E || (templateObject_1$E = __makeTemplateObject([\"\\n display: table-row;\\n \"], [\"\\n display: table-row;\\n \"])));\n});\nvar ChildCell = styled(Cell)(templateObject_4$f || (templateObject_4$f = __makeTemplateObject([\"\\n border-bottom: 1px solid \", \";\\n border-right: 1px solid \", \";\\n padding: 0;\\n vertical-align: baseline;\\n\\n &:before {\\n \", \"\\n left: 0px;\\n height: \", \"px;\\n position: absolute;\\n top: \", \"px;\\n }\\n\\n \", \"\\n\"], [\"\\n border-bottom: 1px solid \", \";\\n border-right: 1px solid \", \";\\n padding: 0;\\n vertical-align: baseline;\\n\\n &:before {\\n \", \"\\n left: 0px;\\n height: \", \"px;\\n position: absolute;\\n top: \", \"px;\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, borderLeft, function (p) {\n return p.height ? p.height : 0;\n}, function (p) {\n return p.top;\n}, function (p) {\n return !p.isFixedColumn && css(templateObject_3$i || (templateObject_3$i = __makeTemplateObject([\"\\n position: relative;\\n &:before {\\n top: 0;\\n }\\n \"], [\"\\n position: relative;\\n &:before {\\n top: 0;\\n }\\n \"])));\n});\nvar ChildContainer = styled.div(templateObject_5$a || (templateObject_5$a = __makeTemplateObject([\"\\n padding-left: \", \";\\n\"], [\"\\n padding-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar ChildLoadingWrapper = styled.div(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject([\"\\n align-items: center;\\n background-color: \", \";\\n display: flex;\\n height: \", \";\\n justify-content: center;\\n\"], [\"\\n align-items: center;\\n background-color: \", \";\\n display: flex;\\n height: \", \";\\n justify-content: center;\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, function (p) {\n return p.theme.spacing.getSize(40);\n});\nvar ChildErrorWrapper = styled.div(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject([\"\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n padding: \", \";\\n\"], [\"\\n align-items: center;\\n display: flex;\\n justify-content: center;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$E, templateObject_2$l, templateObject_3$i, templateObject_4$f, templateObject_5$a, templateObject_6$8, templateObject_7$7;\nvar ChildRow = function (props) {\n var className = props.className,\n _a = props.isOpen,\n isOpen = _a === void 0 ? false : _a,\n _b = props.colSpan,\n colSpan = _b === void 0 ? 1 : _b,\n _c = props.tableTop,\n tableTop = _c === void 0 ? 0 : _c,\n isLoading = props.isLoading,\n error = props.error,\n children = props.children,\n _d = props.isFixedColumn,\n isFixedColumn = _d === void 0 ? false : _d;\n var ref = /*#__PURE__*/React__default.createRef();\n var _e = __read(React__default.useState(0), 2),\n top = _e[0],\n setTop = _e[1];\n var _f = __read(React__default.useState(0), 2),\n height = _f[0],\n setHeight = _f[1];\n React__default.useEffect(function () {\n if (!ref.current) {\n return;\n }\n var observer = new ResizeObserver(function (entries) {\n var e = entries[0];\n setHeight(e.contentRect.height);\n });\n observer.observe(ref.current);\n var childTop = ref.current.getBoundingClientRect().top;\n setTop(childTop - tableTop);\n return function () {\n observer.disconnect();\n };\n }, [ref, tableTop]);\n return /*#__PURE__*/React__default.createElement(ChildRow$1, {\n \"data-testid\": generate(['child-row'], props),\n className: className,\n isOpen: isOpen\n }, /*#__PURE__*/React__default.createElement(ChildCell, {\n colSpan: colSpan,\n height: height,\n top: top,\n isFixedColumn: isFixedColumn\n }, /*#__PURE__*/React__default.createElement(ChildContainer, {\n ref: ref\n }, isOpen && ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isLoading && ( /*#__PURE__*/React__default.createElement(ChildLoadingWrapper, null, /*#__PURE__*/React__default.createElement(Loading, null))), !isLoading && error && ( /*#__PURE__*/React__default.createElement(ChildErrorWrapper, null, /*#__PURE__*/React__default.createElement(Alert, {\n status: \"error\",\n title: error.title,\n message: error.message\n }))), !isLoading && !error && children)))));\n};\nvar CollapsibleTable = styled(CollapsibleTable$1)(templateObject_1$D || (templateObject_1$D = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$D;\n\n// This named style should be the wrapper for the component i.e. the module\nvar SearchWrapper = styled(View)(templateObject_2$k || (templateObject_2$k = __makeTemplateObject([\"\\n position: relative;\\n flex-grow: 1;\\n\\n \", \"\\n\"], [\"\\n position: relative;\\n flex-grow: 1;\\n\\n \", \"\\n\"])), function (p) {\n return p.isInverted && css(templateObject_1$C || (templateObject_1$C = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context);\n});\nvar SearchIcon = styled(MemoSvgSearch)(templateObject_3$h || (templateObject_3$h = __makeTemplateObject([\"\\n position: absolute;\\n left: \", \";\\n height: 100%;\\n top: 0;\\n display: flex;\\n align-items: center;\\n width: 14px;\\n\"], [\"\\n position: absolute;\\n left: \", \";\\n height: 100%;\\n top: 0;\\n display: flex;\\n align-items: center;\\n width: 14px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar SearchInput = styled(Input$1)(templateObject_5$9 || (templateObject_5$9 = __makeTemplateObject([\"\\n :focus {\\n border: 1px solid \", \";\\n }\\n border-radius: 100px;\\n padding: 0 \", \" 0 \", \";\\n\\n \", \"\\n\"], [\"\\n :focus {\\n border: 1px solid \", \";\\n }\\n border-radius: 100px;\\n padding: 0 \", \" 0 \", \";\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(700).main;\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(9);\n}, function (p) {\n return p.isInverted && css(templateObject_4$e || (templateObject_4$e = __makeTemplateObject([\"\\n height: 34px; // This is explictly stated in the design (not divisible by 4)\\n border-color: \", \";\\n background: \", \";\\n color: \", \";\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:focus {\\n border-color: \", \";\\n }\\n \"], [\"\\n height: 34px; // This is explictly stated in the design (not divisible by 4)\\n border-color: \", \";\\n background: \", \";\\n color: \", \";\\n\\n &::placeholder {\\n color: \", \";\\n }\\n\\n &:focus {\\n border-color: \", \";\\n }\\n \"])), isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context, function (p) {\n return p.theme.colors.navBackground;\n }, isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context, isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue(1) : p.theme.colors.primary.getValue().context, isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context);\n});\nvar ClearButton = styled(IconButton)(templateObject_7$6 || (templateObject_7$6 = __makeTemplateObject([\"\\n position: absolute;\\n right: \", \";\\n height: 100%;\\n top: 0;\\n display: flex;\\n align-items: center;\\n width: 14px;\\n\\n \", \"\\n\"], [\"\\n position: absolute;\\n right: \", \";\\n height: 100%;\\n top: 0;\\n display: flex;\\n align-items: center;\\n width: 14px;\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.isInverted && css(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject([\"\\n color: \", \";\\n \"], [\"\\n color: \", \";\\n \"])), isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue() : p.theme.colors.primary.getValue().context);\n});\nvar templateObject_1$C, templateObject_2$k, templateObject_3$h, templateObject_4$e, templateObject_5$9, templateObject_6$7, templateObject_7$6;\nvar SearchBar$1 = function (props) {\n var className = props.className,\n onSearch = props.onSearch,\n searchInput = props.searchInput,\n onClear = props.onClear,\n disabled = props.disabled,\n placeholder = props.placeholder,\n autoFocus = props.autoFocus,\n isInverted = props.isInverted;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(SearchWrapper, {\n isInverted: isInverted,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(SearchIcon, null), /*#__PURE__*/React__default.createElement(SearchInput, {\n autoFocus: autoFocus,\n \"data-testid\": generate(['search-bar'], props),\n className: className,\n value: searchInput,\n onChange: onSearch,\n placeholder: placeholder,\n type: \"text\",\n disabled: disabled,\n isInverted: isInverted,\n activeTheme: activeTheme\n }), searchInput && ( /*#__PURE__*/React__default.createElement(ClearButton, {\n isInverted: isInverted,\n size: \"small\",\n label: \"clear\",\n onClick: onClear,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgClose, null);\n },\n activeTheme: activeTheme\n })));\n};\nvar SearchBar = styled(SearchBar$1)(templateObject_1$B || (templateObject_1$B = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$B;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Trend$2 = styled.span(templateObject_2$j || (templateObject_2$j = __makeTemplateObject([\"\\n \", \"\\n\"], [\"\\n \", \"\\n\"])), function (p) {\n return p.neutral && css(templateObject_1$A || (templateObject_1$A = __makeTemplateObject([\"\\n padding-right: \", \";\\n \"], [\"\\n padding-right: \", \";\\n \"])), p.theme.spacing.getSize(3.5));\n});\nvar PositiveSentiment = styled(MemoSvgDataIncrease)(templateObject_3$g || (templateObject_3$g = __makeTemplateObject([\"\\n margin-left: \", \";\\n color: \", \";\\n\"], [\"\\n margin-left: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.colors.success.getValue(500).main;\n});\nvar NegativeSentiment = styled(MemoSvgDataDecrease)(templateObject_4$d || (templateObject_4$d = __makeTemplateObject([\"\\n margin-left: \", \";\\n color: \", \";\\n\"], [\"\\n margin-left: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.colors.error.getValue(500).main;\n});\nvar templateObject_1$A, templateObject_2$j, templateObject_3$g, templateObject_4$d;\nvar Trend$1 = function (props) {\n var className = props.className,\n _a = props.sentiment,\n sentiment = _a === void 0 ? 'NEUTRAL' : _a,\n count = props.count,\n isPercentage = props.isPercentage;\n var value = '-';\n if (count) {\n var percentage = isPercentage ? '%' : '';\n value = count > 0 ? \"+\".concat(count).concat(percentage) : \"\".concat(count).concat(percentage);\n }\n return /*#__PURE__*/React__default.createElement(Trend$2, {\n \"data-testid\": generate(['trend', sentiment === 'NEUTRAL' ? 'sentiment-neutral' : ''], props),\n className: className,\n neutral: sentiment === 'NEUTRAL'\n }, value, sentiment === 'POSITIVE' && /*#__PURE__*/React__default.createElement(PositiveSentiment, {\n \"data-testid\": \"sentiment-positive\"\n }), sentiment === 'NEGATIVE' && /*#__PURE__*/React__default.createElement(NegativeSentiment, {\n \"data-testid\": \"sentiment-negative\"\n }));\n};\nvar Trend = styled(Trend$1)(templateObject_1$z || (templateObject_1$z = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$z;\n\n// This named style should be the wrapper for the component i.e. the module\nvar CompactHeader$2 = styled.div(templateObject_1$y || (templateObject_1$y = __makeTemplateObject([\"\\n background-color: \", \";\\n\"], [\"\\n background-color: \", \";\\n\"])), function (p) {\n return getContainerColor(p.activeTheme);\n});\nvar CompactHeaderSection = styled.div(templateObject_2$i || (templateObject_2$i = __makeTemplateObject([\"\\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\\n z-index: 1;\\n position: relative;\\n\"], [\"\\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\\n z-index: 1;\\n position: relative;\\n\"])));\nvar CompactHeaderFirstTier = styled.div(templateObject_3$f || (templateObject_3$f = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(6));\n});\nvar CompactHeaderSecondTier = styled.div(templateObject_4$c || (templateObject_4$c = __makeTemplateObject([\"\\n border-top: 1px solid \", \";\\n padding: \", \";\\n\"], [\"\\n border-top: 1px solid \", \";\\n padding: \", \";\\n\"])), function (p) {\n return getBorderColor(p.activeTheme);\n}, function (p) {\n return \"\".concat(p.theme.spacing.getSize(3), \" \").concat(p.theme.spacing.getSize(6), \" 0\");\n});\nvar CompactHeaderThirdTier = styled.div(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$y, templateObject_2$i, templateObject_3$f, templateObject_4$c, templateObject_5$8;\nvar CompactHeader$1 = function (props) {\n var className = props.className,\n firstTier = props.firstTier,\n secondTier = props.secondTier,\n thirdTier = props.thirdTier;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(CompactHeader$2, {\n \"data-testid\": generate(['compact-header'], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(CompactHeaderSection, null, firstTier && /*#__PURE__*/React__default.createElement(CompactHeaderFirstTier, null, firstTier), secondTier && ( /*#__PURE__*/React__default.createElement(CompactHeaderSecondTier, {\n activeTheme: activeTheme\n }, secondTier))), thirdTier && /*#__PURE__*/React__default.createElement(CompactHeaderThirdTier, null, thirdTier));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar FirstTier$2 = styled.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n\"])));\nvar FirstTierLeft = styled(View)(templateObject_2$h || (templateObject_2$h = __makeTemplateObject([\"\\n display: flex;\\n overflow: hidden;\\n justify-content: flex-start;\\n\"], [\"\\n display: flex;\\n overflow: hidden;\\n justify-content: flex-start;\\n\"])));\nvar LeftRef = styled.div(templateObject_4$b || (templateObject_4$b = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n overflow: hidden;\\n word-wrap: break-word;\\n white-space: nowrap;\\n text-overflow: ellipsis;\\n \", \";\\n\"])), function (p) {\n return p.maxLeftWidth && css(templateObject_3$e || (templateObject_3$e = __makeTemplateObject([\"\\n max-width: \", \"px;\\n \"], [\"\\n max-width: \", \"px;\\n \"])), p.maxLeftWidth);\n});\nvar FirstTierHeading = styled(Heading$2)(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject([\"\\n height: \", \";\\n line-height: \", \";\\n \", \";\\n\"], [\"\\n height: \", \";\\n line-height: \", \";\\n \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.theme.spacing.getSize(10);\n}, function (p) {\n return p.maxLeftHeadingWidth && css(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject([\"\\n max-width: \", \"px;\\n \"], [\"\\n max-width: \", \"px;\\n \"])), p.maxLeftHeadingWidth);\n});\nvar FirstTierRight = styled(View)(templateObject_7$5 || (templateObject_7$5 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-end;\\n overflow: visible;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n justify-content: flex-end;\\n overflow: visible;\\n\"])));\nvar RightRef = styled.div(templateObject_8$4 || (templateObject_8$4 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar Star = styled(Favourite)(templateObject_9$4 || (templateObject_9$4 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.withLogo ? p.theme.spacing.getSize(4) : p.theme.spacing.getSize(2);\n});\nvar templateObject_1$x, templateObject_2$h, templateObject_3$e, templateObject_4$b, templateObject_5$7, templateObject_6$6, templateObject_7$5, templateObject_8$4, templateObject_9$4;\nvar FAVOURITE_WIDTH = 40;\nvar ACIN_LOGO_LARGE_WIDTH = 57;\nvar ACIN_LOGO_SMALL_WIDTH = 49;\nvar FirstTier$1 = function (props) {\n var className = props.className,\n actions = props.actions,\n title = props.title,\n _a = props.variation,\n variation = _a === void 0 ? 'parent' : _a,\n _b = props.withLogo,\n withLogo = _b === void 0 ? false : _b,\n favourite = props.favourite;\n var _c = __read(useWindowSize(), 1),\n windowWidth = _c[0];\n var parentRef = React__default.useRef(null);\n var leftRef = React__default.useRef(null);\n var rightRef = React__default.useRef(null);\n var _d = __read(React__default.useState(false), 2),\n isCompressed = _d[0],\n setIsCompressed = _d[1];\n var _e = __read(React__default.useState(undefined), 2),\n parentWidth = _e[0],\n setParentWidth = _e[1];\n var _f = __read(React__default.useState(undefined), 2),\n leftWidth = _f[0],\n setLeftWidth = _f[1];\n var _g = __read(React__default.useState(undefined), 2),\n rightWidth = _g[0],\n setRightWidth = _g[1];\n var _h = __read(React__default.useState(undefined), 2),\n expandedRightWidth = _h[0],\n setExpandedRightWidth = _h[1];\n var _j = __read(React__default.useState(undefined), 2),\n maxLeftWidth = _j[0],\n setMaxLeftWidth = _j[1];\n React__default.useEffect(function () {\n if (parentWidth && leftWidth && expandedRightWidth) {\n if (parentWidth <= leftWidth + expandedRightWidth) {\n setIsCompressed(true);\n } else {\n setIsCompressed(false);\n }\n }\n }, [parentWidth, leftWidth, expandedRightWidth, windowWidth]);\n React__default.useEffect(function () {\n if (parentWidth && rightWidth) {\n setMaxLeftWidth(parentWidth - rightWidth);\n } else if (parentWidth && !rightWidth) {\n setMaxLeftWidth(parentWidth);\n } else {\n setMaxLeftWidth(undefined);\n }\n }, [parentWidth, rightWidth, windowWidth]);\n React__default.useEffect(function () {\n if (rightRef && rightRef.current && actions) {\n setRightWidth(rightRef.current.getBoundingClientRect().width);\n }\n }, [rightRef, actions, windowWidth, isCompressed]);\n React__default.useEffect(function () {\n if (rightRef && rightRef.current && actions && !isCompressed) {\n setExpandedRightWidth(rightRef.current.getBoundingClientRect().width);\n }\n }, [rightRef, actions, isCompressed]);\n React__default.useEffect(function () {\n if (leftRef && leftRef.current) {\n setLeftWidth(leftRef.current.getBoundingClientRect().width);\n }\n }, [leftRef, windowWidth]);\n React__default.useEffect(function () {\n if (parentRef && parentRef.current) {\n setParentWidth(parentRef.current.getBoundingClientRect().width);\n }\n }, [parentRef, windowWidth]);\n var getMaxLeftHeadingWidth = function () {\n if (!maxLeftWidth) return undefined;\n var acinLogoWidth = variation === 'parent' ? ACIN_LOGO_LARGE_WIDTH : ACIN_LOGO_SMALL_WIDTH;\n if (favourite && withLogo) {\n return maxLeftWidth - FAVOURITE_WIDTH - acinLogoWidth;\n } else if (favourite) {\n return maxLeftWidth - FAVOURITE_WIDTH;\n } else if (withLogo) {\n return maxLeftWidth - acinLogoWidth;\n }\n return maxLeftWidth;\n };\n return /*#__PURE__*/React__default.createElement(FirstTier$2, {\n \"data-testid\": generate(['compact-header--first-tier'], props),\n className: className,\n ref: parentRef\n }, /*#__PURE__*/React__default.createElement(FirstTierLeft, null, /*#__PURE__*/React__default.createElement(LeftRef, {\n ref: leftRef,\n \"data-testid\": \"left-ref\",\n maxLeftWidth: maxLeftWidth\n }, favourite && ( /*#__PURE__*/React__default.createElement(Star, {\n size: variation === 'parent' ? 'large' : 'medium',\n onClick: function () {\n return favourite.onClick(!favourite.value);\n },\n value: favourite.value,\n \"data-testid\": \"compact-header--favourite\",\n withLogo: withLogo\n })), /*#__PURE__*/React__default.createElement(FirstTierHeading, {\n maxLeftHeadingWidth: getMaxLeftHeadingWidth(),\n ellipsis: true,\n size: variation === 'parent' ? 3 : 2,\n withLogo: withLogo,\n weight: variation === 'parent' ? 300 : 500\n }, title))), actions && ( /*#__PURE__*/React__default.createElement(FirstTierRight, null, /*#__PURE__*/React__default.createElement(RightRef, {\n ref: rightRef,\n \"data-testid\": \"right-ref\"\n }, actions(isCompressed)))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar Actions$1 = styled.div(templateObject_1$w || (templateObject_1$w = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar ActionsWrapper = styled(View)(templateObject_2$g || (templateObject_2$g = __makeTemplateObject([\"\\n margin-left: \", \";\\n\"], [\"\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ActionsMenu = styled.div(templateObject_3$d || (templateObject_3$d = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$w, templateObject_2$g, templateObject_3$d;\nvar Actions = function (props) {\n var className = props.className,\n actions = props.actions,\n isCompressed = props.isCompressed;\n var iconActions = actions.filter(function (action) {\n return action.showIconOnly;\n });\n var linkActions = actions.filter(function (action) {\n return !action.showIconOnly;\n });\n return /*#__PURE__*/React__default.createElement(Actions$1, {\n \"data-testid\": generate(['compact-header--actions'], props),\n className: className\n }, linkActions.length > 0 && !isCompressed && ( /*#__PURE__*/React__default.createElement(ActionsWrapper, null, /*#__PURE__*/React__default.createElement(List, {\n variant: \"inline\",\n \"data-testid\": \"compact-header--actions-links\"\n }, linkActions.map(function (action) {\n return /*#__PURE__*/React__default.createElement(ListItem, {\n key: action.id\n }, /*#__PURE__*/React__default.createElement(Button$1, {\n \"data-testid\": \"compact-header--actions-link-\".concat(action.id),\n label: action.label,\n variant: (action === null || action === void 0 ? void 0 : action.variant) || 'borderless',\n onClick: function () {\n return action.onClick && action.onClick(action.id);\n },\n disabled: action.disabled\n }));\n })))), iconActions.length > 0 && iconActions.map(function (iconAction) {\n return /*#__PURE__*/React__default.createElement(ActionsWrapper, {\n key: iconAction.id\n }, /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"compact-header--icon-\".concat(iconAction.id),\n label: iconAction.label,\n icon: iconAction.icon,\n onClick: function () {\n return iconAction.onClick && iconAction.onClick(iconAction.id);\n },\n dropdownContent: iconAction.dropdownContent,\n disabled: iconAction.disabled\n }));\n }), linkActions.length > 0 && isCompressed && ( /*#__PURE__*/React__default.createElement(ActionsMenu, null, /*#__PURE__*/React__default.createElement(ActionsWrapper, null, /*#__PURE__*/React__default.createElement(IconButton, {\n \"data-testid\": \"compact-header--kebab-menu\",\n label: \"menu\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgKebabVertical, {\n size: \"small\"\n });\n },\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React__default.createElement(DropdownMenu, {\n \"data-testid\": \"compact-header--dropdown-menu\",\n onClick: function (item) {\n item.onClick && item.id && item.onClick(item.id);\n onClose();\n },\n items: linkActions.map(function (action) {\n return {\n id: action.id,\n label: action.label,\n icon: action.icon && action.icon(),\n onClick: action.onClick,\n disabled: action.disabled\n };\n })\n });\n }\n })))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar SecondTier$2 = styled.div(templateObject_1$v || (templateObject_1$v = __makeTemplateObject([\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n overflow: auto;\\n\"], [\"\\n display: flex;\\n white-space: nowrap;\\n flex-direction: row;\\n justify-content: space-between;\\n align-items: center;\\n overflow: auto;\\n\"])));\nvar templateObject_1$v;\nvar SecondTier$1 = function (props) {\n var className = props.className,\n activeTab = props.activeTab,\n onTabClick = props.onTabClick,\n tabs = props.tabs;\n if (!tabs || tabs.length === 0) return null;\n return /*#__PURE__*/React__default.createElement(SecondTier$2, {\n \"data-testid\": generate(['compact-header--second-tier'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(TabGroup, {\n variant: \"primary\",\n tabs: tabs,\n activeId: activeTab,\n onClick: function (id) {\n return onTabClick(id);\n }\n }));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ThirdTier$2 = styled.div(templateObject_1$u || (templateObject_1$u = __makeTemplateObject([\"\\n background-color: \", \";\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n overflow: auto;\\n border-bottom: 1px solid \", \";\\n\"], [\"\\n background-color: \", \";\\n display: flex;\\n align-items: center;\\n padding: \", \";\\n overflow: auto;\\n border-bottom: 1px solid \", \";\\n\"])), function (p) {\n return getContainerColor(p.activeTheme);\n}, function (p) {\n return \"\".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(6));\n}, function (p) {\n return p.theme.colors.borders.getValue(3);\n});\nvar ThirdTierWrapItems = styled.div(templateObject_2$f || (templateObject_2$f = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ThirdTierSearchWrapper = styled.div(templateObject_3$c || (templateObject_3$c = __makeTemplateObject([\"\\n min-width: \", \";\\n\"], [\"\\n min-width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(90);\n});\nvar templateObject_1$u, templateObject_2$f, templateObject_3$c;\nvar ThirdTier$1 = function (props) {\n var className = props.className,\n children = props.children,\n filters = props.filters,\n search = props.search;\n var activeTheme = useThemeProvider().activeTheme;\n if (!filters && !search && !children) return null;\n var notChildren = !children;\n return /*#__PURE__*/React__default.createElement(ThirdTier$2, {\n \"data-testid\": generate(['compact-header--third-tier'], props),\n className: className,\n activeTheme: activeTheme\n }, notChildren && search && ( /*#__PURE__*/React__default.createElement(ThirdTierWrapItems, null, /*#__PURE__*/React__default.createElement(ThirdTierSearchWrapper, null, /*#__PURE__*/React__default.createElement(Input$1, {\n type: \"search\",\n value: search.value,\n leftAddon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgSearch, null);\n },\n onChange: search.onSearch,\n placeholder: search.placeholder\n })))), notChildren && filters && ( /*#__PURE__*/React__default.createElement(ThirdTierWrapItems, null, /*#__PURE__*/React__default.createElement(Button$1, {\n variant: \"secondary\",\n onClick: filters.onClick,\n label: filters.label\n }))), children);\n};\n\n/**\r\n * @param firstTier - (required) - React.ReactElement\r\n * @param secondTier - (optional) - React.ReactElement\r\n * @param thirdTier - (optional) - React.ReactElement\r\n * @param className - (optional) - string\r\n */\nvar CompactHeader = styled(CompactHeader$1)(templateObject_1$t || (templateObject_1$t = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param title - (required) - string\r\n * @param variation - (optional) - 'parent' | 'child' => default to parent\r\n * @param withLogo - (optional) - boolean\r\n * @param favourite - (optional) - { value: boolean, onClick: (v: boolean) => void }\r\n * @param actions - (optional) - (isCompressed: boolean) => React.ReactElement;\r\n * @param className - (optional) - string\r\n */\nvar FirstTier = styled(FirstTier$1)(templateObject_2$e || (templateObject_2$e = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param tabs - (required) - TabItem[]\r\n * @param onTabClick - (required) - (id: string) => void\r\n * @param activeTab - (required) - string\r\n * @param className - (optional) - string\r\n */\nvar SecondTier = styled(SecondTier$1)(templateObject_3$b || (templateObject_3$b = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param filters - (optional) - { label: string; onClick: () => void; } - it renders the filter button\r\n * @param search - (optional) - { placeholder: string; value: string; onSearch: (e: React.ChangeEvent<HTMLInputElement>) => void; } - it renders the search input\r\n * @param className - (optional) - string\r\n */\nvar ThirdTier = styled(ThirdTier$1)(templateObject_4$a || (templateObject_4$a = __makeTemplateObject([\"\"], [\"\"])));\n/**\r\n * @param actions - (required) - IActions[] - { id: string; label: string; icon: () => React.ReactElement; showIconOnly?: boolean; onClick?: (id: string) => void; dropdownContent?: (onClose: () => void) => {}; }\r\n * @param isCompressed - (required) - boolean;\r\n * @param className - (optional) - string\r\n\n */\nvar CompactHeaderActions = Actions;\nvar templateObject_1$t, templateObject_2$e, templateObject_3$b, templateObject_4$a;\n\n// This named style should be the wrapper for the component i.e. the module\nvar Circle$1 = styled.div(templateObject_1$s || (templateObject_1$s = __makeTemplateObject([\"\\n display: inline-block;\\n position: relative;\\n width: 120px;\\n height: 120px;\\n margin-left: -4px;\\n margin-right: -4px;\\n\\n &::before {\\n position: absolute;\\n border: 24px solid \", \";\\n border-radius: 100%;\\n opacity: 0.1;\\n content: '';\\n display: block;\\n width: 72px;\\n height: 72px;\\n }\\n\"], [\"\\n display: inline-block;\\n position: relative;\\n width: 120px;\\n height: 120px;\\n margin-left: -4px;\\n margin-right: -4px;\\n\\n &::before {\\n position: absolute;\\n border: 24px solid \", \";\\n border-radius: 100%;\\n opacity: 0.1;\\n content: '';\\n display: block;\\n width: 72px;\\n height: 72px;\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n});\nvar AcinLogo = styled(Logo)(templateObject_2$d || (templateObject_2$d = __makeTemplateObject([\"\\n position: absolute;\\n left: 17px;\\n top: 14px;\\n width: 84px;\\n height: 77px;\\n\"], [\"\\n position: absolute;\\n left: 17px;\\n top: 14px;\\n width: 84px;\\n height: 77px;\\n\"])));\nvar templateObject_1$s, templateObject_2$d;\nvar Circle = function (props) {\n return /*#__PURE__*/React__default.createElement(Circle$1, {\n \"data-testid\": generate(['circle'], props)\n }, /*#__PURE__*/React__default.createElement(AcinLogo, null));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar ErrorPage$2 = styled.div(templateObject_1$r || (templateObject_1$r = __makeTemplateObject([\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n background: \", \";\\n\"], [\"\\n height: 100%;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Title$1 = styled(Heading$2)(templateObject_2$c || (templateObject_2$c = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n color: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.activeTheme.colors.primary.getValue(500).main;\n});\nvar ErrorStatus = styled.div(templateObject_3$a || (templateObject_3$a = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n font-size: 100px;\\n font-weight: 500;\\n line-height: 1;\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n display: flex;\\n align-items: center;\\n font-size: 100px;\\n font-weight: 500;\\n line-height: 1;\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.activeTheme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.spacing.getSize(12);\n});\nvar Character = styled.span(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$r, templateObject_2$c, templateObject_3$a, templateObject_4$9;\nvar defaultStatus = '404';\nvar defaultTitle = 'Something went wrong.';\nvar defaultMessage = 'Your page is unable to load. Please refresh your page or try again later.';\nvar replaceZerosWithCircle = function (str) {\n return str.split('').map(function (character, index) {\n if (character === '0') {\n return /*#__PURE__*/React__default.createElement(Circle, {\n key: index\n });\n }\n return /*#__PURE__*/React__default.createElement(Character, {\n \"data-testid\": \"character\",\n key: index\n }, character);\n });\n};\nvar ErrorPage$1 = function (props) {\n var className = props.className,\n error = props.error;\n var activeTheme = useThemeProvider().activeTheme;\n var renderErrorStatus = function () {\n var status = (error === null || error === void 0 ? void 0 : error.status) && \"\".concat(error === null || error === void 0 ? void 0 : error.status) || defaultStatus;\n return /*#__PURE__*/React__default.createElement(ErrorStatus, {\n activeTheme: activeTheme\n }, replaceZerosWithCircle(status));\n };\n return /*#__PURE__*/React__default.createElement(ErrorPage$2, {\n \"data-testid\": generate(['error-page'], props),\n className: className\n }, renderErrorStatus(), /*#__PURE__*/React__default.createElement(Title$1, {\n weight: 500,\n size: 2,\n activeTheme: activeTheme\n }, (error === null || error === void 0 ? void 0 : error.title) || defaultTitle), /*#__PURE__*/React__default.createElement(Text$1, {\n color: activeTheme.colors.text.getValue(1)\n }, (error === null || error === void 0 ? void 0 : error.message) || defaultMessage));\n};\nvar ErrorPage = styled(ErrorPage$1)(templateObject_1$q || (templateObject_1$q = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$q;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ErrorMessage$2 = styled.div(templateObject_1$p || (templateObject_1$p = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$p;\nvar ErrorMessage$1 = function (props) {\n var className = props.className,\n error = props.error,\n noData = props.noData,\n multiline = props.multiline;\n var hasServerError = error;\n var hasNoData = !error && noData;\n if (!hasServerError && !hasNoData) return null;\n var renderNoData = function () {\n var noDataTestId = 'error-message--no-data';\n var fallbackStatus = 'info';\n var fallbackTitle = 'No Data.';\n var fallbackMessage = 'Please contact your customer services representative for more information.';\n if (!noData) return null;\n if (typeof noData !== 'boolean') {\n return /*#__PURE__*/React__default.createElement(Alert, {\n status: (noData === null || noData === void 0 ? void 0 : noData.status) || fallbackStatus,\n title: (noData === null || noData === void 0 ? void 0 : noData.title) || fallbackTitle,\n message: (noData === null || noData === void 0 ? void 0 : noData.message) || fallbackMessage,\n \"data-testid\": noDataTestId,\n multiline: multiline\n });\n }\n return /*#__PURE__*/React__default.createElement(Alert, {\n status: fallbackStatus,\n title: fallbackTitle,\n message: fallbackMessage,\n \"data-testid\": noDataTestId,\n multiline: multiline\n });\n };\n return /*#__PURE__*/React__default.createElement(ErrorMessage$2, {\n \"data-testid\": generate(['error-message'], props),\n className: className\n }, hasServerError && ( /*#__PURE__*/React__default.createElement(Alert, {\n status: \"error\",\n title: (error === null || error === void 0 ? void 0 : error.title) || 'Something went wrong.',\n message: (error === null || error === void 0 ? void 0 : error.friendlyMessage) || 'Please try to refresh or come back later.',\n \"data-testid\": \"error-message--server-error\",\n multiline: multiline\n })), hasNoData && renderNoData());\n};\nvar ErrorMessage = styled(ErrorMessage$1)(templateObject_1$o || (templateObject_1$o = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$o;\nvar isDarkMode$1 = themeHelpers.isDarkMode;\n// This named style should be the wrapper for the component i.e. the module\nvar FilterButton$2 = styled.button(templateObject_8$3 || (templateObject_8$3 = __makeTemplateObject([\"\\n border-radius: 2px;\\n padding: \", \";\\n cursor: pointer;\\n font-weight: 500;\\n font-size: \", \";\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n position: relative;\\n overflow: hidden;\\n\\n \", \"\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n \\n \", \"\\n \\n \", \";\\n\"], [\"\\n border-radius: 2px;\\n padding: \", \";\\n cursor: pointer;\\n font-weight: 500;\\n font-size: \", \";\\n display: flex;\\n justify-content: space-between;\\n width: 100%;\\n position: relative;\\n overflow: hidden;\\n\\n \", \"\\n \", \";\\n\\n \", \"\\n\\n \", \"\\n \\n \", \"\\n \\n \", \";\\n\"])), function (p) {\n return \"\".concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(9.5), \" \\n \").concat(p.theme.spacing.getSize(2), \" \").concat(p.theme.spacing.getSize(3), \" \");\n}, function (p) {\n return p.theme.type.getSize(0);\n}, function (p) {\n if (p.variant === 'primary') {\n return css(templateObject_1$n || (templateObject_1$n = __makeTemplateObject([\"\\n background-color: \", \";\\n border: 1px solid\\n \", \";\\n color: \", \";\\n \"], [\"\\n background-color: \", \";\\n border: 1px solid\\n \", \";\\n color: \", \";\\n \"])), isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.backgrounds.getValue(1) : p.activeTheme.colors.backgrounds.getValue(2), isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.borders.getValue(1) : p.activeTheme.colors.borders.getValue(2), p.activeTheme.colors.text.getValue(1));\n }\n if (p.variant === 'secondary') {\n return css(templateObject_2$b || (templateObject_2$b = __makeTemplateObject([\"\\n background-color: \", \";\\n\\n border: 1px solid\\n \", \";\\n color: \", \";\\n \"], [\"\\n background-color: \", \";\\n\\n border: 1px solid\\n \", \";\\n color: \", \";\\n \"])), isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.backgrounds.getValue(1) : p.activeTheme.colors.info.getValue(100).main, isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.borders.getValue(1) : p.activeTheme.colors.primary.getValue(600).main, p.activeTheme.colors.text.getValue(1));\n }\n}, function (p) {\n return css(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject([\"\\n &:hover {\\n color: \", \";\\n border-color: \", \";\\n }\\n \"], [\"\\n &:hover {\\n color: \", \";\\n border-color: \", \";\\n }\\n \"])), p.activeTheme.colors.text.getValue(0), p.activeTheme.colors.primary.getValue(600).main);\n}, function (p) {\n return p.isOpen && css(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject([\"\\n color: \", \";\\n border-color: \", \";\\n \"], [\"\\n color: \", \";\\n border-color: \", \";\\n \"])), p.activeTheme.colors.text.getValue(0), p.activeTheme.colors.primary.getValue(600).main);\n}, function (p) {\n return css(templateObject_5$6 || (templateObject_5$6 = __makeTemplateObject([\"\\n &:active {\\n border-color: \", \";\\n }\\n \"], [\"\\n &:active {\\n border-color: \", \";\\n }\\n \"])), p.activeTheme.colors.primary.getValue(700).main);\n}, function (p) {\n return css(templateObject_6$5 || (templateObject_6$5 = __makeTemplateObject([\"\\n &:disabled {\\n background-color: \", \";\\n border: 1px solid \", \";\\n cursor: not-allowed;\\n\\n span,\\n div {\\n color: \", \";\\n }\\n }\\n \"], [\"\\n &:disabled {\\n background-color: \", \";\\n border: 1px solid \", \";\\n cursor: not-allowed;\\n\\n span,\\n div {\\n color: \", \";\\n }\\n }\\n \"])), p.activeTheme.colors.backgrounds.getValue(1), p.activeTheme.colors.borders.getValue(1), p.activeTheme.colors.text.getValue(2));\n}, function (p) {\n return p.maxWidth && css(templateObject_7$4 || (templateObject_7$4 = __makeTemplateObject([\"\\n max-width: \", \"px;\\n \"], [\"\\n max-width: \", \"px;\\n \"])), p.maxWidth);\n});\nvar FilterLabel = styled.span(templateObject_9$3 || (templateObject_9$3 = __makeTemplateObject([\"\\n flex: 0 0 auto;\\n display: flex;\\n\"], [\"\\n flex: 0 0 auto;\\n display: flex;\\n\"])));\nvar Label = styled.span(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar FilterInnerLabel = styled.span(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject([\"\\n font-weight: 600;\\n padding-left: 2px;\\n\"], [\"\\n font-weight: 600;\\n padding-left: 2px;\\n\"])));\nvar FilterIcon = styled.div(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([\"\\n padding-left: \", \";\\n padding-right: \", \";\\n position: absolute;\\n right: 0;\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n padding-left: \", \";\\n padding-right: \", \";\\n position: absolute;\\n right: 0;\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n if (p.variant === 'primary') {\n return css(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.backgrounds.getValue(1) : p.activeTheme.colors.backgrounds.getValue(2));\n }\n if (p.variant === 'secondary') {\n return css(templateObject_13$1 || (templateObject_13$1 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), isDarkMode$1(p.activeTheme) ? p.activeTheme.colors.backgrounds.getValue(1) : p.activeTheme.colors.info.getValue(100).main);\n }\n}, function (p) {\n return p.disabled && css(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), p.activeTheme.colors.backgrounds.getValue(1));\n});\nvar templateObject_1$n, templateObject_2$b, templateObject_3$9, templateObject_4$8, templateObject_5$6, templateObject_6$5, templateObject_7$4, templateObject_8$3, templateObject_9$3, templateObject_10$3, templateObject_11$3, templateObject_12$2, templateObject_13$1, templateObject_14$1, templateObject_15$1;\nvar LARGE_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ/=+_@£$%^&*±~';\nvar MEDIUM_CHARS = 'abcdeghkmnopqrsuvwxyz[]{}()';\nvar SMALL_CHARS = 'fijlt ';\nvar LARGE_CHARS_ARR = LARGE_CHARS.split('');\nvar MEDIUM_CHARS_ARR = MEDIUM_CHARS.split('');\nvar SMALL_CHARS_ARR = SMALL_CHARS.split('');\nvar getTruncateIndex = function (str, availableWidth) {\n var strWidth = 0;\n var index = 0;\n var strArr = str.split('');\n while (strWidth <= availableWidth) {\n var currentChar = strArr[index];\n if (LARGE_CHARS_ARR.includes(currentChar)) {\n strWidth += 11;\n } else if (MEDIUM_CHARS_ARR.includes(currentChar)) {\n strWidth += 8;\n } else if (SMALL_CHARS_ARR.includes(currentChar)) {\n strWidth += 5;\n } else {\n strWidth += 5;\n }\n index += 1;\n }\n return index;\n};\nvar MAX_WIDTH = 250;\nvar ITEMS_WIDTH = 62; // 24 padding + 12+12+14 chevron\nvar FilterButton$1 = function (props) {\n var className = props.className,\n onClick = props.onClick,\n label = props.label,\n innerLabel = props.innerLabel,\n isOpen = props.isOpen,\n count = props.count,\n _a = props.variant,\n variant = _a === void 0 ? 'primary' : _a,\n disabled = props.disabled;\n var activeTheme = useThemeProvider().activeTheme;\n var _b = __read(useWindowSize(), 1),\n windowWidth = _b[0];\n var totalCount = !count || count <= 0 ? '' : \"(\".concat(count, \")\");\n var labelRef = React__default.useRef(null);\n var _c = __read(React__default.useState(undefined), 2),\n labelWidth = _c[0],\n setLabelWidth = _c[1];\n React__default.useEffect(function () {\n if (labelRef && labelRef.current) {\n var label_1 = labelRef.current.getBoundingClientRect().width;\n setLabelWidth(label_1);\n }\n }, [windowWidth]);\n var renderIcon = function () {\n return isOpen ? ( /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, {\n \"data-testid\": \"filter-button--up\"\n })) : ( /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, {\n \"data-testid\": \"filter-button--down\"\n }));\n };\n var renderInnerLabel = function () {\n if (!innerLabel || !labelWidth) return '';\n var availableWidth = MAX_WIDTH - ITEMS_WIDTH - labelWidth;\n var truncateIndex = getTruncateIndex(innerLabel, availableWidth);\n if (truncateIndex < innerLabel.length) {\n var innerLabelTruncate_1 = innerLabel.slice(0, truncateIndex).trimEnd() + '...';\n return /*#__PURE__*/React__default.createElement(Tooltip, {\n content: /*#__PURE__*/React__default.createElement(\"span\", null, innerLabel)\n }, function (tooltipRef) {\n return /*#__PURE__*/React__default.createElement(\"div\", {\n ref: tooltipRef\n }, innerLabelTruncate_1);\n });\n }\n return innerLabel;\n };\n return /*#__PURE__*/React__default.createElement(FilterButton$2, {\n \"data-testid\": generate(['filter-button'], props),\n isOpen: isOpen,\n className: className,\n onClick: onClick,\n activeTheme: activeTheme,\n variant: variant,\n disabled: disabled,\n maxWidth: innerLabel ? MAX_WIDTH : undefined\n }, /*#__PURE__*/React__default.createElement(FilterLabel, null, /*#__PURE__*/React__default.createElement(Label, {\n ref: labelRef\n }, label, \" \", !innerLabel && totalCount), /*#__PURE__*/React__default.createElement(FilterInnerLabel, null, renderInnerLabel())), /*#__PURE__*/React__default.createElement(FilterIcon, {\n activeTheme: activeTheme,\n variant: variant,\n disabled: disabled\n }, renderIcon()));\n};\nvar FilterButton = styled(FilterButton$1)(templateObject_1$m || (templateObject_1$m = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$m;\n\n// This named style should be the wrapper for the component i.e. the module\nvar CheckList$2 = styled.div(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject([\"\\n \", \";\\n\"], [\"\\n \", \";\\n\"])), function (p) {\n if (p.maxHeight && p.isVirtualised) {\n return css(templateObject_1$l || (templateObject_1$l = __makeTemplateObject([\"\\n max-height: \", \"px;\\n \"], [\"\\n max-height: \", \"px;\\n \"])), p.maxHeight);\n }\n return css(templateObject_2$a || (templateObject_2$a = __makeTemplateObject([\"\\n overflow-y: auto;\\n max-height: \", \"px;\\n \"], [\"\\n overflow-y: auto;\\n max-height: \", \"px;\\n \"])), p.maxHeight);\n});\nvar Title = styled(Heading$2)(templateObject_4$7 || (templateObject_4$7 = __makeTemplateObject([\"\"], [\"\"])));\nvar AccordionList = styled(Accordion)(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject([\"\\n box-shadow: none;\\n margin-top: 0;\\n padding: 0;\\n\"], [\"\\n box-shadow: none;\\n margin-top: 0;\\n padding: 0;\\n\"])));\nvar CheckWrapper = styled.div(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject([\"\\n padding: \", \"\\n 0;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"], [\"\\n padding: \", \"\\n 0;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\"])), function (p) {\n if (p.size === 'small') {\n return p.hasSublabel ? p.theme.spacing.getSize(1) : p.theme.spacing.getSize(3);\n }\n return p.hasSublabel ? p.theme.spacing.getSize(1) : p.theme.spacing.getSize(2);\n});\nvar IconWrapper$2 = styled.div(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject([\"\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: \", \";\\n\"], [\"\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n width: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$l, templateObject_2$a, templateObject_3$8, templateObject_4$7, templateObject_5$5, templateObject_6$4, templateObject_7$3;\nvar CHECKBOX_VARIANT = 'checkbox';\nvar RADIO_VARIANT = 'radio';\nvar CHECKBOX_HEIGHT = 40;\nvar LIST_MAX_WIDTH = 500;\nvar CheckList$1 = function (props) {\n var className = props.className,\n listTitle = props.listTitle,\n _a = props.collapsible,\n collapsible = _a === void 0 ? false : _a,\n isExpanded = props.isExpanded,\n _b = props.variant,\n variant = _b === void 0 ? CHECKBOX_VARIANT : _b,\n items = props.items,\n onSelect = props.onSelect,\n onInspect = props.onInspect,\n selectedIds = props.selectedIds,\n indeterminateIds = props.indeterminateIds,\n maxHeight = props.maxHeight,\n isVirtualised = props.isVirtualised,\n _c = props.size,\n size = _c === void 0 ? 'small' : _c,\n _d = props.initialScrollOffset,\n initialScrollOffset = _d === void 0 ? 0 : _d,\n onScroll = props.onScroll;\n var checkListRef = React__default.useRef(null);\n var _e = __read(React__default.useState(LIST_MAX_WIDTH), 2),\n width = _e[0],\n setWidth = _e[1];\n var _f = __read(useWindowSize(), 1),\n windowWidth = _f[0];\n var _g = __read(React__default.useState({}), 2),\n activeIds = _g[0],\n setActiveIds = _g[1];\n var _h = __read(React__default.useState({}), 2),\n partiallyActiveIds = _h[0],\n setPartiallyActiveIds = _h[1];\n var handleSelect = function (id) {\n var _a, _b, _c, _d;\n if (variant === RADIO_VARIANT) {\n setActiveIds((_a = {}, _a[id] = true, _a));\n } else if (variant === CHECKBOX_VARIANT) {\n if (partiallyActiveIds[id]) {\n setActiveIds(__assign(__assign({}, activeIds), (_b = {}, _b[id] = true, _b)));\n setPartiallyActiveIds(__assign(__assign({}, partiallyActiveIds), (_c = {}, _c[id] = false, _c)));\n } else {\n setActiveIds(__assign(__assign({}, activeIds), (_d = {}, _d[id] = activeIds[id] ? !activeIds[id] : true, _d)));\n }\n }\n onSelect && onSelect(id);\n };\n var createItem = function (item) {\n var value = item === null || item === void 0 ? void 0 : item.value;\n var label = item === null || item === void 0 ? void 0 : item.label;\n var sublabel = item === null || item === void 0 ? void 0 : item.sublabel;\n var hasChildren = !!item.hasChildren;\n var isChecked = activeIds[value] === undefined ? false : activeIds[value];\n var isIndeterminate = partiallyActiveIds[value] ? true : false;\n return /*#__PURE__*/React__default.createElement(CheckWrapper, {\n size: size,\n hasSublabel: sublabel ? true : false,\n \"data-testid\": \"input-container \".concat(generateCypressId(\"input-container--\".concat(value))),\n key: value\n }, variant === RADIO_VARIANT && ( /*#__PURE__*/React__default.createElement(Radio, {\n isChecked: isChecked,\n onChange: function () {\n return handleSelect(value);\n },\n label: label || value,\n subLabel: sublabel || undefined,\n ellipsis: true\n })), variant === CHECKBOX_VARIANT && ( /*#__PURE__*/React__default.createElement(Checkbox, {\n size: size,\n isChecked: isChecked,\n onChange: function () {\n return handleSelect(value);\n },\n label: label || value,\n subLabel: sublabel || undefined,\n ellipsis: true,\n reducedWidth: !!hasChildren,\n isIndeterminate: isIndeterminate\n })), hasChildren && ( /*#__PURE__*/React__default.createElement(IconWrapper$2, {\n onClick: function () {\n return onInspect && onInspect(item);\n }\n }, /*#__PURE__*/React__default.createElement(MemoSvgChevronRight, null))));\n };\n var ItemRow = function (_a) {\n var index = _a.index,\n style = _a.style;\n var item = items[index];\n return /*#__PURE__*/React__default.createElement(\"div\", {\n style: style\n }, createItem(item));\n };\n var renderInputType = function () {\n return items.map(function (item) {\n return createItem(item);\n });\n };\n var renderList = function () {\n if (isVirtualised && maxHeight) {\n return /*#__PURE__*/React__default.createElement(FixedSizeList, {\n height: maxHeight,\n itemCount: items.length,\n itemSize: CHECKBOX_HEIGHT,\n width: width,\n onScroll: onScroll,\n initialScrollOffset: initialScrollOffset\n }, ItemRow);\n }\n if (!collapsible) {\n return renderInputType();\n }\n return /*#__PURE__*/React__default.createElement(AccordionList, {\n \"data-testid\": \"check-list--accordion\",\n isExpanded: isExpanded,\n header: function () {\n return listTitle ? ( /*#__PURE__*/React__default.createElement(Title, {\n \"data-testid\": \"check-list--title\",\n weight: 500\n }, listTitle)) : ( /*#__PURE__*/React__default.createElement(Title, null, variant, \" list\"));\n }\n }, renderInputType());\n };\n React__default.useEffect(function () {\n var _a;\n if (variant === RADIO_VARIANT && selectedIds) {\n // for the Radio list only one item can be selected at the same time\n // and when the component will receive more keys to be true inside selectedIds\n // we default to activate only the first one:\n var id = Object.keys(selectedIds)[0];\n setActiveIds((_a = {}, _a[id] = true, _a));\n } else if (variant === CHECKBOX_VARIANT) {\n setActiveIds(selectedIds || {});\n setPartiallyActiveIds(indeterminateIds || {});\n }\n }, [selectedIds, indeterminateIds, variant]);\n React__default.useEffect(function () {\n if (checkListRef && checkListRef.current) {\n setWidth(checkListRef.current.getBoundingClientRect().width || LIST_MAX_WIDTH);\n }\n }, [checkListRef, windowWidth]);\n return /*#__PURE__*/React__default.createElement(CheckList$2, {\n \"data-testid\": generate(['check-list'], props),\n className: className,\n maxHeight: maxHeight,\n isVirtualised: isVirtualised,\n ref: checkListRef\n }, renderList());\n};\n\n/**\r\n * @param className - (optional) - string\r\n * @param listTitle - (optional) - string\r\n * @param collapsible - (optional) - boolean\r\n * @param isExpanded - (optional) - boolean (allow to force the accordion list to be open from parent)\r\n * @param variant - (optional) - CheckListVariant, default is \"checkbox\", other option: \"radio\"\r\n * @param items - (required) - CheckboxItem[];\r\n * @param onSelect - (optional) - (id: string) => void\r\n * @param selectedIds - (optional) - SelectedIds\r\n * @param maxHeight - (optional) - number - will determine max height for scrollable checklist area and will work with isVirtualised\r\n * @param isVirtualised - (optional) - boolean\r\n * @param size - (optional) - 'small' | 'large' - it will determine the checkbox size\r\n */\nvar CheckList = styled(CheckList$1)(templateObject_1$k || (templateObject_1$k = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$k;\n\n// This named style should be the wrapper for the component i.e. the module\nvar PageWrapper$2 = styled.div(templateObject_1$j || (templateObject_1$j = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar Absolute = styled.div(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n z-index: calc(\", \" + 2);\\n\"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n z-index: calc(\", \" + 2);\\n\"])), zIndex);\nvar ContentScrollable = styled.div(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject([\"\\n overflow: auto;\\n height: calc(100vh - \", \");\\n padding-top: \", \"px;\\n\"], [\"\\n overflow: auto;\\n height: calc(100vh - \", \");\\n padding-top: \", \"px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n return p.height;\n});\nvar LoadingWrapper = styled(View)(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n height: 100%;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n height: 100%;\\n align-items: center;\\n\"])));\nvar templateObject_1$j, templateObject_2$9, templateObject_3$7, templateObject_4$6;\nvar FIRST_TIER_HEIGHT = 56;\nvar SECOND_TIER_HEIGHT = 49;\nvar THIRD_TIER_HEIGHT = 57;\nvar PageWrapper$1 = function (props) {\n var className = props.className,\n children = props.children,\n header = props.header,\n _a = props.hasTabs,\n hasTabs = _a === void 0 ? false : _a,\n _b = props.hasFilters,\n hasFilters = _b === void 0 ? false : _b,\n _c = props.loading,\n loading = _c === void 0 ? false : _c;\n var getHeight = function () {\n var height = FIRST_TIER_HEIGHT;\n if (hasTabs && hasFilters) {\n height = FIRST_TIER_HEIGHT + SECOND_TIER_HEIGHT + THIRD_TIER_HEIGHT;\n } else if (hasTabs) {\n height = FIRST_TIER_HEIGHT + SECOND_TIER_HEIGHT;\n } else if (hasFilters) {\n height = FIRST_TIER_HEIGHT + THIRD_TIER_HEIGHT;\n }\n return height;\n };\n return /*#__PURE__*/React__default.createElement(PageWrapper$2, {\n \"data-testid\": generate(['page-wrapper'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(Absolute, {\n \"data-testid\": \"page-wrapper-header-absolute\"\n }, header), /*#__PURE__*/React__default.createElement(ContentScrollable, {\n \"data-testid\": \"page-wrapper-content-scrollable\",\n height: getHeight()\n }, loading ? ( /*#__PURE__*/React__default.createElement(LoadingWrapper, {\n \"data-testid\": \"loading-wrapper\"\n }, /*#__PURE__*/React__default.createElement(Loading, null))) : children));\n};\nvar PageWrapper = styled(PageWrapper$1)(templateObject_1$i || (templateObject_1$i = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$i;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ColourBlock$3 = styled.div(templateObject_1$h || (templateObject_1$h = __makeTemplateObject([\"\\n background: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n color: \", \";\\n font-weight: 500;\\n font-size: \", \";\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"], [\"\\n background: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n color: \", \";\\n font-weight: 500;\\n font-size: \", \";\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n\"])), function (p) {\n var _a, _b;\n return p.theme.colors.dataVisWithMeaning.getValue(((_a = p.colorPalette) === null || _a === void 0 ? void 0 : _a.paletteIndex) || undefined, ((_b = p.colorPalette) === null || _b === void 0 ? void 0 : _b.shade) || undefined).main;\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.spacing.borderRadius;\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.theme.colors.text.getValue(0) : p.theme.colors.text.getValue(3);\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar templateObject_1$h;\nvar ColourBlock$2 = function (props) {\n var className = props.className,\n colorPalette = props.colorPalette,\n count = props.count;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(ColourBlock$3, {\n \"data-testid\": generate(['colour-block'], props),\n className: className,\n colorPalette: colorPalette,\n activeTheme: activeTheme\n }, count);\n};\nvar ColourBlock$1 = styled(ColourBlock$2)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$g;\n\n// This named style should be the wrapper for the component i.e. the module\nvar ColourBlockList$2 = styled.div(templateObject_1$f || (templateObject_1$f = __makeTemplateObject([\"\\n display: flex;\\n\"], [\"\\n display: flex;\\n\"])));\nvar ColourBlock = styled(ColourBlock$1)(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject([\"\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n\"], [\"\\n margin-right: \", \";\\n &:last-child {\\n margin-right: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n});\nvar templateObject_1$f, templateObject_2$8;\nvar ColourBlockList$1 = function (props) {\n var className = props.className,\n blocks = props.blocks;\n return /*#__PURE__*/React__default.createElement(ColourBlockList$2, {\n \"data-testid\": generate(['colour-block-list'], props),\n className: className\n }, blocks.map(function (block, idx) {\n return /*#__PURE__*/React__default.createElement(ColourBlock, {\n key: idx,\n colorPalette: block.colorPalette,\n count: block.count\n });\n }));\n};\nvar ColourBlockList = styled(ColourBlockList$1)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$e;\nvar isDarkMode = themeHelpers.isDarkMode;\n// This named style should be the wrapper for the component i.e. the module\nvar DownloadProgress$1 = styled.div(templateObject_1$d || (templateObject_1$d = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nvar ProgressBar = styled(ProgressBar$1)(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject([\"\\n background-color: \", \";\\n max-width: \", \";\\n margin-left: \", \";\\n\"], [\"\\n background-color: \", \";\\n max-width: \", \";\\n margin-left: \", \";\\n\"])), function (p) {\n return isDarkMode(p.activeTheme) ? p.activeTheme.colors.text.getValue(4) : p.activeTheme.colors.text.getValue(1);\n}, function (p) {\n return p.theme.spacing.getSize(20);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar templateObject_1$d, templateObject_2$7;\nvar DownloadProgress = function (props) {\n var className = props.className,\n _a = props.progressPercentage,\n progressPercentage = _a === void 0 ? 0 : _a;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(DownloadProgress$1, {\n \"data-testid\": generate(['downloads-progress'], props),\n className: className\n }, \"File Processing\", /*#__PURE__*/React__default.createElement(ProgressBar, {\n activeTheme: activeTheme,\n size: \"xsmall\",\n data: [{\n color: isDarkMode$4(activeTheme) ? activeTheme.colors.text.getValue(0) : activeTheme.colors.backgrounds.getValue(1),\n value: progressPercentage\n }]\n }));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nstyled.ul(templateObject_1$c || (templateObject_1$c = __makeTemplateObject([\"\"], [\"\"])));\nvar DownloadsListItem$1 = styled.li(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject([\"\\n border-radius: 2px;\\n color: \", \";\\n height: 49px;\\n display: flex;\\n align-items: center;\\n border: 1px solid \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n border-radius: 2px;\\n color: \", \";\\n height: 49px;\\n display: flex;\\n align-items: center;\\n border: 1px solid \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(3);\n}, function (p) {\n return p.theme.colors.borders.getValue(0);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar NameWrapper = styled.div(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n width: 100%;\\n\"])));\nvar Name = styled.span(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 500;\\n margin-bottom: \", \";\\n\"], [\"\\n font-size: \", \";\\n font-weight: 500;\\n margin-bottom: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Status = styled.div(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject([\"\\n font-size: \", \";\\n font-weight: 300;\\n color: \", \";\\n\"], [\"\\n font-size: \", \";\\n font-weight: 300;\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n}, function (p) {\n return p.theme.colors.text.getValue(5);\n});\nvar IconWrapper$1 = styled.div(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject([\"\\n margin-left: \", \";\\n margin-right: \", \";\\n height: \", \";\\n\"], [\"\\n margin-left: \", \";\\n margin-right: \", \";\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar Delete = styled(IconButton)(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject([\"\\n font-size: \", \";\\n color: \", \";\\n\"], [\"\\n font-size: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(1);\n}, function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(3);\n});\nvar IconExcel = styled(MemoSvgDocumentTableBased)(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(1);\n});\nvar IconAlert = styled(MemoSvgAlertErrorFilled)(templateObject_9$2 || (templateObject_9$2 = __makeTemplateObject([\"\\n margin-bottom: 2px;\\n\"], [\"\\n margin-bottom: 2px;\\n\"])));\nstyled.div(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n align-items: center;\\n\"])));\nstyled(ProgressBar$1)(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject([\"\\n background-color: \", \";\\n max-width: \", \";\\n margin-left: \", \";\\n\"], [\"\\n background-color: \", \";\\n max-width: \", \";\\n margin-left: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(3);\n}, function (p) {\n return p.theme.spacing.getSize(20);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar DownloadLink = styled.button(templateObject_12$1 || (templateObject_12$1 = __makeTemplateObject([\"\\n background-color: transparent;\\n border: 0;\\n padding: 0;\\n color: \", \";\\n cursor: pointer;\\n font-size: \", \";\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n\"], [\"\\n background-color: transparent;\\n border: 0;\\n padding: 0;\\n color: \", \";\\n cursor: pointer;\\n font-size: \", \";\\n\\n &:disabled {\\n cursor: not-allowed;\\n }\\n\"])), function (p) {\n return p.theme.colors.primary.getValue(500).main;\n}, function (p) {\n return p.theme.type.getSize(-1);\n});\nvar templateObject_1$c, templateObject_2$6, templateObject_3$6, templateObject_4$5, templateObject_5$4, templateObject_6$3, templateObject_7$2, templateObject_8$2, templateObject_9$2, templateObject_10$2, templateObject_11$2, templateObject_12$1;\nvar FileType;\n(function (FileType) {\n FileType[\"Csv\"] = \"CSV\";\n FileType[\"Excel\"] = \"EXCEL\";\n})(FileType || (FileType = {}));\nvar FileStatus;\n(function (FileStatus) {\n FileStatus[\"Progress\"] = \"PROGRESS\";\n FileStatus[\"Failure\"] = \"FAILURE\";\n FileStatus[\"Processed\"] = \"PROCESSED\";\n FileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(FileStatus || (FileStatus = {}));\nvar transformName = function (name) {\n if (name.length >= 42) {\n return \"\".concat(name.slice(0, 26), \"...\").concat(name.slice(name.length - 12, name.length));\n }\n return name;\n};\nvar DownloadsListItem = function (props) {\n var className = props.className,\n item = props.item,\n onClick = props.onClick,\n onDelete = props.onDelete;\n var activeTheme = useThemeProvider().activeTheme;\n var renderStatus = function () {\n var failedComp = /*#__PURE__*/React__default.createElement(\"div\", {\n \"data-testid\": generate(['download-link', generateCypressId(\"download-link--is-\".concat(item.status).concat(item.status !== FileStatus.Failure ? '--failed' : ''))])\n }, /*#__PURE__*/React__default.createElement(IconAlert, null), \" Failed\");\n switch (item.status) {\n case FileStatus.Progress:\n return /*#__PURE__*/React__default.createElement(DownloadProgress, {\n progressPercentage: item.progressPercentage || 0,\n \"data-testid\": generate(['download-link', generateCypressId(\"download-link--is-\".concat(item.status))])\n });\n case FileStatus.Failure:\n return failedComp;\n case FileStatus.Processed:\n {\n return item.fileURL ? ( /*#__PURE__*/React__default.createElement(DownloadLink, {\n \"data-testid\": generate(['download-link', generateCypressId(\"download-link--is-\".concat(item.status))]),\n onClick: function () {\n return onClick(item);\n },\n title: \"Download\"\n }, \"Download\")) : failedComp;\n }\n case FileStatus.Downloaded:\n {\n return item.fileURL ? ( /*#__PURE__*/React__default.createElement(DownloadLink, {\n \"data-testid\": generate(['download-link', generateCypressId(\"download-link--is-\".concat(item.status))]),\n onClick: function () {\n return onClick(item);\n },\n title: \"Download Again\"\n }, \"Download Again\")) : failedComp;\n }\n default:\n return null;\n }\n };\n var inProgress = item.status === FileStatus.Progress;\n return /*#__PURE__*/React__default.createElement(DownloadsListItem$1, {\n \"data-testid\": generate(['downloads-list-item', generateCypressId(\"downloads-list-item--\".concat(item.id))], props),\n className: className,\n activeTheme: activeTheme\n }, /*#__PURE__*/React__default.createElement(IconWrapper$1, null, /*#__PURE__*/React__default.createElement(IconExcel, {\n \"data-testid\": generate(['icon-excel'])\n })), /*#__PURE__*/React__default.createElement(NameWrapper, null, /*#__PURE__*/React__default.createElement(Name, null, transformName(item.filename)), /*#__PURE__*/React__default.createElement(Status, null, renderStatus())), !inProgress && ( /*#__PURE__*/React__default.createElement(IconWrapper$1, null, /*#__PURE__*/React__default.createElement(Delete, {\n activeTheme: activeTheme,\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgDelete, null);\n },\n label: \"Delete\",\n \"data-testid\": generateCypressId(\"delete-download--\".concat(item.id)),\n disabled: inProgress,\n onClick: function () {\n return onDelete(item);\n },\n size: \"small\"\n }))));\n};\n\n// This named style should be the wrapper for the component i.e. the module\nvar DownloadsList$2 = styled.div(templateObject_1$b || (templateObject_1$b = __makeTemplateObject([\"\\n font-size: 12px;\\n background-color: \", \";\\n border-radius: 2px;\\n max-height: \", \";\\n width: \", \";\\n max-width: \", \";\\n overflow-y: scroll;\\n padding: \", \";\\n padding-right: \", \";\\n\"], [\"\\n font-size: 12px;\\n background-color: \", \";\\n border-radius: 2px;\\n max-height: \", \";\\n width: \", \";\\n max-width: \", \";\\n overflow-y: scroll;\\n padding: \", \";\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.colors.navBackground;\n}, function (p) {\n return p.theme.spacing.getSize(79.5);\n}, function (p) {\n return p.theme.spacing.getSize(85);\n}, function (p) {\n return p.theme.spacing.getSize(85);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar DownloadsListHeader = styled.div(templateObject_2$5 || (templateObject_2$5 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n\"])));\nvar DownloadsListHeading = styled(Heading$2)(templateObject_3$5 || (templateObject_3$5 = __makeTemplateObject([\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"], [\"\\n color: \", \";\\n margin-bottom: \", \";\\n\"])), function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(4);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar IconClose = styled(MemoSvgClose)(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(4);\n});\nvar DownloadsListWrapper = styled.ul(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject([\"\"], [\"\"])));\nvar NoDownloads = styled(Text$1)(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n return isDarkMode$4(p.activeTheme) ? p.activeTheme.colors.text.getValue(0) : p.activeTheme.colors.text.getValue(4);\n});\nvar templateObject_1$b, templateObject_2$5, templateObject_3$5, templateObject_4$4, templateObject_5$3, templateObject_6$2;\nvar DownloadsList$1 = function (props) {\n var className = props.className,\n items = props.items,\n onClick = props.onClick,\n onDelete = props.onDelete,\n onClose = props.onClose;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(DownloadsList$2, {\n \"data-testid\": generate(['downloads-list'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(DownloadsListHeader, null, /*#__PURE__*/React__default.createElement(DownloadsListHeading, {\n activeTheme: activeTheme,\n size: 2,\n weight: 500\n }, \"Downloads\"), /*#__PURE__*/React__default.createElement(IconButton, {\n icon: function () {\n return /*#__PURE__*/React__default.createElement(IconClose, {\n activeTheme: activeTheme,\n size: \"small\"\n });\n },\n label: \"close\",\n onClick: onClose\n })), /*#__PURE__*/React__default.createElement(DownloadsListWrapper, null, items && items.length > 0 ? items.map(function (item) {\n return /*#__PURE__*/React__default.createElement(DownloadsListItem, {\n key: item.id,\n item: item,\n onClick: onClick,\n onDelete: onDelete\n });\n }) : ( /*#__PURE__*/React__default.createElement(NoDownloads, {\n activeTheme: activeTheme,\n size: -1\n }, \"There are 0 exports ready to be downloaded. All exports are available for 24 hours.\"))));\n};\nvar DownloadsList = styled(DownloadsList$1)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$a;\n\n// This named style should be the wrapper for the component i.e. the module\nvar MainNavHorizontal$2 = styled.div(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\\n position: fixed;\\n left: 0;\\n right: 0;\\n top: \", \";\\n z-index: \", \";\\n width: 100%;\\n height: \", \";\\n background: \", \";\\n padding: 0 \", \";\\n display: flex;\\n align-items: center;\\n\"], [\"\\n position: fixed;\\n left: 0;\\n right: 0;\\n top: \", \";\\n z-index: \", \";\\n width: 100%;\\n height: \", \";\\n background: \", \";\\n padding: 0 \", \";\\n display: flex;\\n align-items: center;\\n\"])), function (p) {\n return p.topPosition ? \"\".concat(p.topPosition, \"px\") : 0;\n}, zIndex, function (p) {\n return p.theme.spacing.getSize(14);\n}, function (p) {\n if (p.variant === 'accent1') {\n return p.theme.colors.accent1.getValue().main;\n }\n return p.theme.colors.navBackground;\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar AcinLogoWide = styled(WideLogo)(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject([\"\\n margin-right: \", \";\\n\"], [\"\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Menu = styled(View)(templateObject_3$4 || (templateObject_3$4 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n\"])));\nvar ButtonStyles = function (activeTheme) {\n return css(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n display: flex;\\n padding: 0 \", \";\\n border-radius: \", \";\\n box-sizing: content-box;\\n height: \", \";\\n color: \", \";\\n\"], [\"\\n display: flex;\\n padding: 0 \", \";\\n border-radius: \", \";\\n box-sizing: content-box;\\n height: \", \";\\n color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n }, function (p) {\n return p.theme.spacing.getSize(4);\n }, function (p) {\n return p.theme.spacing.getSize(8);\n }, function (p) {\n return activeTheme && isDarkMode$4(activeTheme) ? activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(0) : activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(3);\n });\n};\nvar MenuButton = styled(Button$1)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\\n \", \"\\n background: transparent;\\n\\n &:not(:last-child) {\\n margin-right: \", \";\\n }\\n\\n &:hover {\\n background: \", \";\\n }\\n\\n &:active,\\n &:focus {\\n background: \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n \", \"\\n background: transparent;\\n\\n &:not(:last-child) {\\n margin-right: \", \";\\n }\\n\\n &:hover {\\n background: \", \";\\n }\\n\\n &:active,\\n &:focus {\\n background: \", \";\\n }\\n\\n \", \"\\n\"])), function (p) {\n return ButtonStyles(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.dataVisWithMeaning.getValue(3, 500).main;\n}, function (p) {\n return p.theme.colors.dataVisWithMeaning.getValue(3, 550).main;\n}, function (p) {\n return p.isActive && css(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n background: \", \";\\n \"], [\"\\n background: \", \";\\n \"])), function (p) {\n return p.theme.colors.dataVisWithMeaning.getValue(3, 550).main;\n });\n});\nstyled(Button$1)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\\n \", \"\\n align-items: center;\\n border: 1px solid \", \";\\n background: transparent;\\n padding: 0 \", \";\\n\"], [\"\\n \", \"\\n align-items: center;\\n border: 1px solid \", \";\\n background: transparent;\\n padding: 0 \", \";\\n\"])), function (p) {\n return ButtonStyles(p.activeTheme);\n}, function (p) {\n return p.theme.colors.borders.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Tools = styled(View)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\\n display: flex;\\n margin-left: auto;\\n padding-right: 0;\\n align-items: center;\\n\"], [\"\\n display: flex;\\n margin-left: auto;\\n padding-right: 0;\\n align-items: center;\\n\"])));\nvar IconButtons = styled(View)(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject([\"\\n border-left: 1px solid \", \";\\n padding-left: \", \";\\n margin-left: \", \";\\n display: flex;\\n align-items: center;\\n\\n \", \":not(:first-child) {\\n margin-left: \", \";\\n }\\n\"], [\"\\n border-left: 1px solid \", \";\\n padding-left: \", \";\\n margin-left: \", \";\\n display: flex;\\n align-items: center;\\n\\n \", \":not(:first-child) {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.colors.borders.getValue();\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(3);\n}, IconButton, function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar UserEmail = styled(View)(templateObject_10$1 || (templateObject_10$1 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$4(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(3);\n});\nvar SearchHolder = styled.div(templateObject_11$1 || (templateObject_11$1 = __makeTemplateObject([\"\\n padding-top: \", \";\\n z-index: 1;\\n\"], [\"\\n padding-top: \", \";\\n z-index: 1;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1$9, templateObject_2$4, templateObject_3$4, templateObject_4$3, templateObject_5$2, templateObject_6$1, templateObject_7$1, templateObject_8$1, templateObject_9$1, templateObject_10$1, templateObject_11$1;\nvar NavDrawer$1 = styled.div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\\n position: fixed;\\n left: 0;\\n right: 0;\\n top: \", \"px;\\n z-index: \", \";\\n width: 100%;\\n background: \", \";\\n border-top: 1px solid rgba(255, 255, 255, 0.05);\\n display: flex;\\n padding-top: \", \";\\n padding-bottom: \", \";\\n padding-left: \", \";\\n padding-right: \", \";\\n\"], [\"\\n position: fixed;\\n left: 0;\\n right: 0;\\n top: \", \"px;\\n z-index: \", \";\\n width: 100%;\\n background: \", \";\\n border-top: 1px solid rgba(255, 255, 255, 0.05);\\n display: flex;\\n padding-top: \", \";\\n padding-bottom: \", \";\\n padding-left: \", \";\\n padding-right: \", \";\\n\"])), function (p) {\n return p.topPosition ? p.topPosition + 56 : 56;\n}, zIndex, function (p) {\n return p.theme.colors.navBackground;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar MenuCardsContainer = styled(View)(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n \", \"\\n padding-left: \", \";\\n padding-right: \", \";\\n display: flex;\\n flex-direction: column;\\n\"], [\"\\n \", \"\\n padding-left: \", \";\\n padding-right: \", \";\\n display: flex;\\n flex-direction: column;\\n\"])), function (p) {\n return p.width && \"width: \".concat(p.width, \";\");\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MenuCards = styled(View)(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n display: flex;\\n align-items: stretch;\\n flex-wrap: wrap;\\n gap: \", \" \", \";\\n height: 100%;\\n max-height: 100%;\\n padding: 0px;\\n margin: 0px;\\n\"], [\"\\n display: flex;\\n align-items: stretch;\\n flex-wrap: wrap;\\n gap: \", \" \", \";\\n height: 100%;\\n max-height: 100%;\\n padding: 0px;\\n margin: 0px;\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Divider = styled(View)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n border-right: 1px solid rgba(255, 255, 255, 0.15);\\n\"], [\"\\n border-right: 1px solid rgba(255, 255, 255, 0.15);\\n\"])));\nvar Heading = styled(Text$1)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n font-size: \", \";\\n\"], [\"\\n margin-bottom: \", \";\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.type.getSize(1);\n});\nvar templateObject_1$8, templateObject_2$3, templateObject_3$3, templateObject_4$2, templateObject_5$1;\nvar NavCard$1 = styled.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\\n padding: \", \";\\n background: rgba(255, 255, 255, 0.05);\\n border-radius: 2px;\\n transition: 0.25s all ease-in-out;\\n\\n display: flex;\\n flex-direction: \", \";\\n flex-basis: \", \";\\n justify-content: space-between;\\n align-items: center;\\n\\n min-width: \", \";\\n max-width: \", \";\\n min-height: \", \";\\n max-height: \", \";\\n\\n color: \", \";\\n\\n &:hover {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.15);\\n }\\n\\n \", \"\\n\"], [\"\\n padding: \", \";\\n background: rgba(255, 255, 255, 0.05);\\n border-radius: 2px;\\n transition: 0.25s all ease-in-out;\\n\\n display: flex;\\n flex-direction: \", \";\\n flex-basis: \", \";\\n justify-content: space-between;\\n align-items: center;\\n\\n min-width: \", \";\\n max-width: \", \";\\n min-height: \", \";\\n max-height: \", \";\\n\\n color: \", \";\\n\\n &:hover {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.15);\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.orientation === 'vertical' ? 'column' : 'row';\n}, function (p) {\n return p.variation === 'highlight' ? \"calc(50% - \".concat(p.theme.spacing.getSize(1), \")\") : '33%';\n}, function (p) {\n return p.variation === 'highlight' ? p.theme.spacing.getSize(37) : p.theme.spacing.getSize(60);\n}, function (p) {\n return p.variation === 'highlight' ? p.theme.spacing.getSize(90) : p.theme.spacing.getSize(108);\n}, function (p) {\n return p.variation === 'highlight' ? p.theme.spacing.getSize(39) : p.theme.spacing.getSize(30);\n}, function (p) {\n return p.variation === 'highlight' ? p.theme.spacing.getSize(79) : p.theme.spacing.getSize(60);\n}, function (p) {\n return p.color;\n}, function (p) {\n return p.variation === 'highlight' ? \"\\n justify-content: center;\\n text-align: center;\\n padding-top: \".concat(p.theme.spacing.getSize(8), \";\\n\\n @media (max-width: 1200px) {\\n flex-basis: 100%;\\n } \\n \") : \"\\n @media (max-width: 1258px) {\\n flex-basis: calc(50% - \".concat(p.theme.spacing.getSize(1), \");\\n max-width: 50%;\\n }\\n\\n @media (max-width: 787px) {\\n flex-basis: 100%;\\n max-width: 100%;\\n }\\n \");\n});\nvar TextContainer = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n display: flex;\\n align-items: \", \";\\n justify-content: center;\\n flex-direction: column;\\n \", \"\\n\"], [\"\\n display: flex;\\n align-items: \", \";\\n justify-content: center;\\n flex-direction: column;\\n \", \"\\n\"])), function (p) {\n return p.orientation === 'vertical' ? 'center' : 'flex-start';\n}, function (p) {\n return p.orientation === 'vertical' && \"margin-bottom: \".concat(p.theme.spacing.getSize(4), \";\");\n});\nvar Description = styled(Text$1)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar NavButton = styled(IconButton)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n color: \", \";\\n background: rgba(255, 255, 255, 0);\\n border: 1px solid \", \";\\n padding: \", \";\\n width: \", \";\\n height: \", \";\\n\\n path {\\n transform: rotate(90deg);\\n transform-origin: 50% 50%;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.2);\\n }\\n\\n &:active {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.4);\\n }\\n\"], [\"\\n color: \", \";\\n background: rgba(255, 255, 255, 0);\\n border: 1px solid \", \";\\n padding: \", \";\\n width: \", \";\\n height: \", \";\\n\\n path {\\n transform: rotate(90deg);\\n transform-origin: 50% 50%;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.2);\\n }\\n\\n &:active {\\n cursor: pointer;\\n background: rgba(255, 255, 255, 0.4);\\n }\\n\"])), function (p) {\n return p.color;\n}, function (p) {\n return p.color;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return p.theme.spacing.getSize(8);\n});\nvar templateObject_1$7, templateObject_2$2, templateObject_3$2, templateObject_4$1;\nvar NavCard = function (props) {\n var label = props.label,\n description = props.description,\n id = props.id,\n onClick = props.onClick,\n onClose = props.onClose,\n orientation = props.orientation,\n variation = props.variation;\n var activeTheme = useThemeProvider().activeTheme;\n var labelColor = activeTheme && isDarkMode$4(activeTheme) ? activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(0) : activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(3);\n var descriptionColor = activeTheme && isDarkMode$4(activeTheme) ? activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(1) : activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(2);\n return /*#__PURE__*/React__default.createElement(NavCard$1, {\n \"data-testid\": generate([\"second-level-nav-card-\".concat(id)], props),\n orientation: orientation,\n variation: variation,\n onClick: function () {\n onClose();\n onClick({\n label: label,\n description: description,\n id: id\n });\n }\n }, /*#__PURE__*/React__default.createElement(TextContainer, {\n orientation: orientation\n }, /*#__PURE__*/React__default.createElement(Text$1, {\n size: 1,\n color: labelColor\n }, label), description && ( /*#__PURE__*/React__default.createElement(Description, {\n color: descriptionColor,\n size: -1\n }, description))), /*#__PURE__*/React__default.createElement(NavButton, {\n variant: \"default\",\n label: \"\",\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgArrowUp, null);\n },\n color: labelColor,\n size: \"small\"\n }));\n};\nvar NavDrawer = function (props) {\n var _a, _b, _c, _d, _e;\n var secondLevelNavigation = props.secondLevelNavigation,\n isOpen = props.isOpen,\n onClose = props.onClose,\n onNavigationClick = props.onNavigationClick,\n topPosition = props.topPosition;\n var drawerRef = React__default.useRef(null);\n var activeTheme = useThemeProvider().activeTheme;\n var color = activeTheme && isDarkMode$4(activeTheme) ? activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(0) : activeTheme === null || activeTheme === void 0 ? void 0 : activeTheme.colors.text.getValue(3);\n var handleOutsideClick = function (e) {\n if (drawerRef.current && !drawerRef.current.contains(e.target)) {\n onClose(e);\n }\n };\n React__default.useEffect(function () {\n document.addEventListener('mousedown', handleOutsideClick);\n return function () {\n document.removeEventListener('mousedown', handleOutsideClick);\n };\n }, []);\n if (isOpen) {\n return /*#__PURE__*/React__default.createElement(NavDrawer$1, {\n topPosition: topPosition,\n ref: drawerRef,\n \"data-testid\": generate(['second-level-nav-drawer'], props)\n }, /*#__PURE__*/React__default.createElement(MenuCardsContainer, {\n width: ((_a = secondLevelNavigation.highlights) === null || _a === void 0 ? void 0 : _a.length) ? '67%' : '100%'\n }, secondLevelNavigation.heading && ( /*#__PURE__*/React__default.createElement(Heading, {\n color: color\n }, secondLevelNavigation.heading)), /*#__PURE__*/React__default.createElement(MenuCards, null, ((_b = secondLevelNavigation.navItems) === null || _b === void 0 ? void 0 : _b.length) && secondLevelNavigation.navItems.map(function (item) {\n var _a;\n return /*#__PURE__*/React__default.createElement(NavCard, {\n label: item.label,\n description: item.description,\n id: item.id,\n key: item.id,\n orientation: ((_a = secondLevelNavigation.highlights) === null || _a === void 0 ? void 0 : _a.length) ? 'horizontal' : 'vertical',\n onClick: onNavigationClick,\n onClose: onClose\n });\n }))), ((_c = secondLevelNavigation.highlights) === null || _c === void 0 ? void 0 : _c.length) && /*#__PURE__*/React__default.createElement(Divider, null), ((_d = secondLevelNavigation.highlights) === null || _d === void 0 ? void 0 : _d.length) && ( /*#__PURE__*/React__default.createElement(MenuCardsContainer, {\n width: \"33%\"\n }, /*#__PURE__*/React__default.createElement(MenuCards, null, ((_e = secondLevelNavigation.highlights) === null || _e === void 0 ? void 0 : _e.length) && secondLevelNavigation.highlights.map(function (item) {\n return /*#__PURE__*/React__default.createElement(NavCard, {\n label: item.label,\n description: item.description,\n id: item.id,\n key: item.label + item.description,\n orientation: \"vertical\",\n variation: \"highlight\",\n onClick: onNavigationClick,\n onClose: onClose\n });\n })))));\n } else return null;\n};\nvar MainNavHorizontal$1 = function (props) {\n var className = props.className,\n onLogoClick = props.onLogoClick,\n navigation = props.navigation,\n activeItem = props.activeItem,\n breadcrumbs = props.breadcrumbs,\n onBreadcrumbsClick = props.onBreadcrumbsClick,\n onNavigationClick = props.onNavigationClick,\n onOpenSettings = props.onOpenSettings,\n onMenuClick = props.onMenuClick,\n settingsMenuContents = props.settingsMenuContents,\n renderSearch = props.renderSearch,\n customTopPosition = props.customTopPosition,\n userEmail = props.userEmail,\n variant = props.variant,\n icons = props.icons;\n var _a = __read(React__default.useState(), 2),\n previousActiveMenu = _a[0],\n setPreviousActiveMenu = _a[1];\n var _b = __read(React__default.useState(), 2),\n secondLevelNav = _b[0],\n setSecondLevelNav = _b[1];\n var _c = __read(React__default.useState(false), 2),\n openDrawer = _c[0],\n setOpenDrawer = _c[1];\n var activeTheme = useThemeProvider().activeTheme;\n var handleOpenSettings = function () {\n setOpenDrawer(false);\n onOpenSettings && onOpenSettings();\n };\n var handleLogoClick = function () {\n setOpenDrawer(false);\n onLogoClick && onLogoClick();\n };\n var handleDrawerClose = function (e) {\n var _a, _b, _c;\n if (!e) {\n setOpenDrawer(false);\n return;\n }\n var target = e === null || e === void 0 ? void 0 : e.target;\n var menuEl = (target === null || target === void 0 ? void 0 : target.innerText) && navigation.find(function (navItem) {\n return navItem.label === (target === null || target === void 0 ? void 0 : target.innerText);\n });\n var isAcinLogo = ((_a = target === null || target === void 0 ? void 0 : target.parentElement) === null || _a === void 0 ? void 0 : _a.getAttribute('data-testid')) === 'wide-logo' || ((_c = (_b = target === null || target === void 0 ? void 0 : target.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement) === null || _c === void 0 ? void 0 : _c.getAttribute('data-testid')) === 'wide-logo';\n if (!menuEl && !isAcinLogo) {\n setOpenDrawer(false);\n }\n };\n var handleMenuButtonClick = function (item) {\n setSecondLevelNav(item.secondLevelNavigation);\n if (!item.secondLevelNavigation) {\n onNavigationClick(item);\n } else if (item.id === previousActiveMenu) {\n setOpenDrawer(!openDrawer);\n } else {\n setOpenDrawer(true);\n }\n setPreviousActiveMenu(item.id);\n };\n return /*#__PURE__*/React__default.createElement(Layer$1, {\n name: \"nav\"\n }, /*#__PURE__*/React__default.createElement(MainNavHorizontal$2, {\n \"data-testid\": generate(['main-nav-horizontal'], props),\n className: className,\n topPosition: customTopPosition,\n variant: variant\n }, /*#__PURE__*/React__default.createElement(AcinLogoWide, {\n onClick: handleLogoClick,\n height: 30,\n width: 90\n }), !breadcrumbs && navigation && ( /*#__PURE__*/React__default.createElement(Menu, {\n \"data-testid\": \"navigation-menu\"\n }, navigation.map(function (item) {\n var _a, _b, _c, _d;\n var label = item.label,\n id = item.id;\n var activeMenuItem = (_b = (_a = item === null || item === void 0 ? void 0 : item.secondLevelNavigation) === null || _a === void 0 ? void 0 : _a.navItems) === null || _b === void 0 ? void 0 : _b.find(function (navItem) {\n return navItem.id === activeItem;\n });\n var activeHighlight = (_d = (_c = item === null || item === void 0 ? void 0 : item.secondLevelNavigation) === null || _c === void 0 ? void 0 : _c.highlights) === null || _d === void 0 ? void 0 : _d.find(function (navItem) {\n return navItem.id === activeItem;\n });\n var isActive = activeItem === id ? true : activeMenuItem ? true : activeHighlight ? true : false;\n return /*#__PURE__*/React__default.createElement(MenuButton, {\n label: label,\n key: id,\n onClick: function (e) {\n return handleMenuButtonClick(item);\n },\n isActive: isActive,\n \"data-testid\": generate([\"\".concat(id, \"--\").concat(isActive ? 'active' : 'inactive')]),\n activeTheme: activeTheme,\n icon: function () {\n return item.secondLevelNavigation && openDrawer && previousActiveMenu === id ? ( /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, null)) : item.secondLevelNavigation ? ( /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null)) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null));\n },\n iconPosition: \"right\"\n });\n }))), breadcrumbs && ( /*#__PURE__*/React__default.createElement(Breadcrumbs, {\n variant: \"inverted\",\n items: breadcrumbs,\n onClick: function (item) {\n onBreadcrumbsClick && onBreadcrumbsClick(item);\n }\n })), /*#__PURE__*/React__default.createElement(Tools, null, renderSearch && ( /*#__PURE__*/React__default.createElement(SearchHolder, {\n onClick: function () {\n return setOpenDrawer(false);\n },\n \"data-testid\": \"search-holder\"\n }, renderSearch())), userEmail && /*#__PURE__*/React__default.createElement(UserEmail, {\n activeTheme: activeTheme\n }, userEmail), /*#__PURE__*/React__default.createElement(IconButtons, null, icons && icons.map(function (icon) {\n return /*#__PURE__*/React__default.createElement(IconButton, {\n key: icon.id,\n label: icon.id,\n \"data-testid\": generate([\"main-nav__\".concat(icon.id)]),\n icon: icon.icon,\n onClick: function () {\n setOpenDrawer(false);\n icon.onClick && icon.onClick();\n }\n });\n }), settingsMenuContents && onMenuClick && ( /*#__PURE__*/React__default.createElement(IconButton, {\n onMouseDown: handleOpenSettings,\n \"data-testid\": generate(['main-nav__settings'], props),\n icon: function () {\n return /*#__PURE__*/React__default.createElement(MemoSvgSettings, {\n color: \"white\"\n });\n },\n label: \"Settings\",\n dropdownContent: function (onClose) {\n return /*#__PURE__*/React__default.createElement(DropdownMenu, {\n onClick: function (item) {\n onClose();\n onMenuClick(item);\n },\n items: settingsMenuContents\n });\n }\n }))))), openDrawer && secondLevelNav && ( /*#__PURE__*/React__default.createElement(NavDrawer, {\n topPosition: customTopPosition,\n isOpen: openDrawer,\n secondLevelNavigation: secondLevelNav,\n onClose: handleDrawerClose,\n onNavigationClick: onNavigationClick\n })));\n};\nvar MainNavHorizontal = styled(MainNavHorizontal$1)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6;\n\n// This named style should be the wrapper for the component i.e. the module\nvar LayoutHorizontal$2 = styled.div(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n box-sizing: border-box;\\n position: relative;\\n\"], [\"\\n height: 100vh;\\n display: flex;\\n flex-direction: column;\\n box-sizing: border-box;\\n position: relative;\\n\"])));\nvar Navigation = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n box-sizing: border-box;\\n height: \", \";\\n\"], [\"\\n box-sizing: border-box;\\n height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(p.theme.template.layout.horizontalNav);\n});\nvar Content = styled(View)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n width: auto;\\n box-sizing: border-box;\\n flex: 1;\\n position: absolute;\\n top: \", \";\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\"], [\"\\n width: auto;\\n box-sizing: border-box;\\n flex: 1;\\n position: absolute;\\n top: \", \";\\n left: 0;\\n right: 0;\\n bottom: 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(14);\n});\nvar templateObject_1$5, templateObject_2$1, templateObject_3$1;\nvar LayoutHorizontal$1 = function (props) {\n var renderNavigation = props.renderNavigation,\n renderContent = props.renderContent,\n className = props.className;\n return /*#__PURE__*/React__default.createElement(LayoutHorizontal$2, {\n className: className,\n \"data-testid\": generate(['layout'], props)\n }, /*#__PURE__*/React__default.createElement(Navigation, {\n \"data-testid\": generate(['layout__navigation'])\n }, renderNavigation()), /*#__PURE__*/React__default.createElement(Content, {\n \"data-testid\": generate(['layout__content'])\n }, renderContent()));\n};\nvar LayoutHorizontal = styled(LayoutHorizontal$1)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$4;\n\n// This named style should be the wrapper for the component i.e. the module\nvar PageContentLayout$2 = styled(View)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: \", \";\\n \", \";\\n padding: \", \";\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n flex-grow: 1;\\n min-height: \", \";\\n \", \";\\n padding: \", \";\\n\"])), function (p) {\n if (p.headerHeight) {\n return \"calc(100vh - \".concat(p.headerHeight, \"px)\");\n }\n return 'calc(100vh - 56px)';\n}, function (p) {\n return pageBackground(p.activeTheme);\n}, function (p) {\n return p.theme.spacing.getSize(6);\n});\nvar templateObject_1$3;\nvar PageContentLayout$1 = function (props) {\n var className = props.className,\n children = props.children,\n headerHeight = props.headerHeight;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React__default.createElement(PageContentLayout$2, {\n \"data-testid\": generate(['page-content-layout'], props),\n className: className,\n activeTheme: activeTheme,\n headerHeight: headerHeight\n }, children);\n};\nvar PageContentLayout = styled(PageContentLayout$1)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$2;\n\n// This named style should be the wrapper for the component i.e. the module\nvar MultiSelect$2 = styled.div(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar MultiSelectHeading = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: 100%;\\n display: flex;\\n flex-wrap: wrap;\\n position: relative;\\n padding-right: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n\"], [\"\\n width: 100%;\\n display: flex;\\n flex-wrap: wrap;\\n position: relative;\\n padding-right: \", \";\\n border: 1px solid \", \";\\n background-color: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n});\nvar InputWrapper = styled.div(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n flex: 1;\\n\"], [\"\\n flex: 1;\\n\"])));\nvar Input = styled.input(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n border: 0;\\n width: 100%;\\n padding: \", \";\\n min-width: \", \";\\n &:focus {\\n outline: none;\\n }\\n &:hover {\\n cursor: pointer;\\n }\\n\"], [\"\\n border: 0;\\n width: 100%;\\n padding: \", \";\\n min-width: \", \";\\n &:focus {\\n outline: none;\\n }\\n &:hover {\\n cursor: pointer;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(40);\n});\nvar IconWrapper = styled.div(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: absolute;\\n top: 50%;\\n margin-top: -\", \";\\n right: \", \";\\n cursor: pointer;\\n\"], [\"\\n position: absolute;\\n top: 50%;\\n margin-top: -\", \";\\n right: \", \";\\n cursor: pointer;\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar MultiSelectOptions = styled.div(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: relative;\\n\"], [\"\\n position: relative;\\n\"])));\nvar OptionWrapper = styled.div(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n top: 0;\\n left: 0;\\n right: 0;\\n overflow: auto;\\n max-height: \", \";\\n position: absolute;\\n border: 1px solid \", \";\\n background-color: \", \";\\n z-index: calc(\", \" + 1);\\n\"], [\"\\n top: 0;\\n left: 0;\\n right: 0;\\n overflow: auto;\\n max-height: \", \";\\n position: absolute;\\n border: 1px solid \", \";\\n background-color: \", \";\\n z-index: calc(\", \" + 1);\\n\"])), function (p) {\n return p.theme.spacing.getSize(65);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n}, function (p) {\n return p.theme.colors.backgrounds.getValue(2);\n}, zIndex);\nvar NoOptions = styled.div(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n padding: \", \" \", \";\\n display: flex;\\n align-items: center;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n\"], [\"\\n padding: \", \" \", \";\\n display: flex;\\n align-items: center;\\n\\n \", \" {\\n margin-left: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n}, Text$1, function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Options = styled.ul(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\"], [\"\"])));\nvar OptionItem = styled.li(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n display: flex;\\n cursor: pointer;\\n position: relative;\\n flex-direction: column;\\n padding: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n \", \"\\n\"], [\"\\n display: flex;\\n cursor: pointer;\\n position: relative;\\n flex-direction: column;\\n padding: \", \";\\n\\n &:hover {\\n background-color: \", \";\\n }\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n}, function (p) {\n return p.theme.colors.primary.getValue(100).main;\n}, function (p) {\n return p.isSelected && css(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n background-color: \", \";\\n \"], [\"\\n background-color: \", \";\\n \"])), function (p) {\n return p.theme.colors.primary.getValue(100).main;\n });\n});\nvar InputRemove = styled.div(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\\n position: absolute;\\n right: \", \";\\n top: \", \";\\n \", \"\\n\"], [\"\\n position: absolute;\\n right: \", \";\\n top: \", \";\\n \", \"\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n}, function (p) {\n return p.theme.spacing.getSize(1.5);\n}, function (p) {\n return p.hasSublabel && css(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n top: \", \";\\n \"], [\"\\n top: \", \";\\n \"])), function (p) {\n return p.theme.spacing.getSize(3);\n });\n});\nvar OptionLabel = styled(Text$1)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n line-height: 1;\\n\"], [\"\\n line-height: 1;\\n\"])));\nvar OptionSublabel = styled(Text$1)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n font-size: \", \";\\n\"], [\"\\n font-size: \", \";\\n\"])), function (p) {\n return p.theme.type.getSize(-1);\n});\nvar OptionSelected = styled.div(templateObject_16 || (templateObject_16 = __makeTemplateObject([\"\\n display: flex;\\n flex-wrap: wrap;\\n padding: \", \";\\n\"], [\"\\n display: flex;\\n flex-wrap: wrap;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar Badge = styled(Badge$1)(templateObject_17 || (templateObject_17 = __makeTemplateObject([\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n margin-right: \", \";\\n\"], [\"\\n margin-top: \", \";\\n margin-bottom: \", \";\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(0.5);\n}, function (p) {\n return p.theme.spacing.getSize(0.5);\n}, function (p) {\n return p.theme.spacing.getSize(1);\n});\nvar RemoveIconWrapper = styled.span(templateObject_18 || (templateObject_18 = __makeTemplateObject([\"\\n opacity: 0.7;\\n cursor: pointer;\\n color: \", \";\\n &:hover {\\n opacity: 1;\\n }\\n\"], [\"\\n opacity: 0.7;\\n cursor: pointer;\\n color: \", \";\\n &:hover {\\n opacity: 1;\\n }\\n\"])), function (p) {\n return p.theme.colors.text.getValue(0);\n});\nvar templateObject_1$1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18;\nvar MultiSelect$1 = function (props) {\n var className = props.className,\n options = props.options,\n _a = props.placeholder,\n placeholder = _a === void 0 ? 'Select Options' : _a,\n onSelect = props.onSelect;\n var contentRef = React__default.useRef(null);\n var inputRef = React__default.useRef(null);\n var _b = __read(React__default.useState(''), 2),\n search = _b[0],\n setSearch = _b[1];\n var _c = __read(React__default.useState(false), 2),\n isOpen = _c[0],\n setIsOpen = _c[1];\n var _d = __read(React__default.useState([]), 2),\n optionsList = _d[0],\n setOptionsList = _d[1];\n var _e = __read(React__default.useState([]), 2),\n selected = _e[0],\n setSelected = _e[1];\n useOnClickOutside(contentRef, function () {\n setIsOpen(false);\n setSearch('');\n });\n React__default.useEffect(function () {\n if (search) {\n var filteredOptions = options.filter(function (option) {\n if (option.sublabel) {\n return option.label.toLocaleLowerCase().includes(search.toLocaleLowerCase()) || option.sublabel.toLocaleLowerCase().includes(search.toLocaleLowerCase());\n }\n return option.label.toLocaleLowerCase().includes(search.toLocaleLowerCase());\n });\n setOptionsList(filteredOptions);\n } else {\n setOptionsList(options);\n }\n }, [options, search]);\n var handleChange = function (event) {\n setSearch(event.target.value);\n };\n var setInputFocus = function () {\n return inputRef && inputRef.current && inputRef.current.focus();\n };\n var removeInputFocus = function () {\n return inputRef && inputRef.current && inputRef.current.blur();\n };\n var handleInputFocus = function (inputWasOpen) {\n inputWasOpen ? removeInputFocus() : setInputFocus();\n };\n var handleOnKeyUp = function (event) {\n if (event.key === 'Escape') {\n setIsOpen(!isOpen);\n handleInputFocus(isOpen);\n setSearch('');\n }\n };\n var handleSelect = function (option) {\n var found = selected.find(function (sel) {\n return sel.id === option.id;\n });\n var newSelected = [];\n if (found) {\n var removeItem = selected.filter(function (sel) {\n return sel.id !== option.id;\n });\n newSelected = removeItem;\n } else {\n newSelected = selected.length > 0 ? __spreadArray(__spreadArray([], __read(selected), false), [option], false) : [option];\n }\n setInputFocus();\n setSelected(newSelected);\n onSelect(newSelected);\n };\n var handleInputClick = function () {\n setIsOpen(true);\n setInputFocus();\n };\n var renderSelected = function () {\n if (selected.length === 0) return null;\n return /*#__PURE__*/React__default.createElement(OptionSelected, {\n \"data-testid\": \"multi-select--current-selected\"\n }, selected.map(function (sel) {\n var id = sel.id;\n return /*#__PURE__*/React__default.createElement(Badge, {\n key: id,\n text: sel.label,\n variant: \"default\",\n appearance: \"filled\",\n rightIcon: function () {\n return /*#__PURE__*/React__default.createElement(RemoveIconWrapper, {\n onClick: function (e) {\n e.stopPropagation();\n handleSelect(sel);\n }\n }, /*#__PURE__*/React__default.createElement(MemoSvgClose, {\n size: \"extraSmall\"\n }));\n },\n \"data-testid\": generate([\"selected-option-\".concat(id)])\n });\n }));\n };\n return /*#__PURE__*/React__default.createElement(MultiSelect$2, {\n ref: contentRef,\n \"data-testid\": generate(['multi-select'], props),\n className: className\n }, /*#__PURE__*/React__default.createElement(MultiSelectHeading, {\n onClick: handleInputClick,\n \"data-testid\": \"multi-select--heading\"\n }, renderSelected(), /*#__PURE__*/React__default.createElement(InputWrapper, null, /*#__PURE__*/React__default.createElement(Input, {\n type: \"text\",\n ref: inputRef,\n value: search,\n onChange: handleChange,\n placeholder: search ? undefined : placeholder,\n \"data-testid\": \"multi-select--input-text\",\n onClick: function (e) {\n e.stopPropagation();\n if (!search) {\n setIsOpen(!isOpen);\n handleInputFocus(isOpen);\n }\n },\n onKeyUp: handleOnKeyUp\n })), /*#__PURE__*/React__default.createElement(IconWrapper, {\n onClick: function (e) {\n e.stopPropagation();\n setIsOpen(!isOpen);\n handleInputFocus(isOpen);\n },\n \"data-testid\": \"multi-select--open-close-icon\"\n }, isOpen ? /*#__PURE__*/React__default.createElement(MemoSvgChevronUp, null) : /*#__PURE__*/React__default.createElement(MemoSvgChevronDown, null))), isOpen && ( /*#__PURE__*/React__default.createElement(MultiSelectOptions, {\n \"data-testid\": \"multi-select--options\"\n }, /*#__PURE__*/React__default.createElement(Layer, {\n name: \"modal\"\n }, /*#__PURE__*/React__default.createElement(OptionWrapper, null, optionsList.length === 0 ? ( /*#__PURE__*/React__default.createElement(NoOptions, null, /*#__PURE__*/React__default.createElement(MemoSvgAlertError, null), \" \", /*#__PURE__*/React__default.createElement(Text$1, null, \"No options found.\"))) : ( /*#__PURE__*/React__default.createElement(Options, null, optionsList.map(function (option) {\n var id = option.id;\n var isSelected = !!selected.find(function (sel) {\n return sel.id === id;\n });\n return /*#__PURE__*/React__default.createElement(OptionItem, {\n key: id,\n isSelected: isSelected,\n onClick: function () {\n return handleSelect(option);\n },\n \"data-testid\": generate(['multi-select--option', \"multi-select--option-\".concat(id)])\n }, /*#__PURE__*/React__default.createElement(OptionLabel, null, option.label), option.sublabel && ( /*#__PURE__*/React__default.createElement(OptionSublabel, null, \" \", option.sublabel)), isSelected && ( /*#__PURE__*/React__default.createElement(InputRemove, {\n hasSublabel: !!option.sublabel\n }, /*#__PURE__*/React__default.createElement(MemoSvgClose, {\n size: \"small\"\n }))));\n }))))))));\n};\nvar MultiSelect = styled(MultiSelect$1)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1;\nexport { Accordion, Addon, Alert, MemoSvgAnalyticsBars as AnalyticsBars, MemoSvgAnalyticsBarsHorizontal as AnalyticsBarsHorizontal, AuthorBlock, Autosuggest, AutosuggestTags, Avatar, AvatarCluster, BackToTopButton, Badge$1 as Badge, BadgeScore, Breadcrumbs, Button$1 as Button, ButtonGroup, Card, CardBoard, CardBoardItem, Carousel, Cell, ChartLegend, ChartLegendKey, CheckList, Checkbox, ChildRow, Collapse, CollapsibleTable, ColourBlock$1 as ColourBlock, ColourBlockList, CompactHeader, CompactHeaderActions, CompactHeaderProvider, Confirmation, ConfirmationFactory, Core, DataCard, DataListRow, DataTable, Datepicker, Datetimepicker, DefinitionList, DownloadsList, DragDropUpload, Drawer, DropdownContent, DropdownMenu, ErrorMessage, ErrorPage, Favourite, FilterButton, FirstTier, HeadCell, Heading$2 as Heading, MemoSvgAdd$1 as IconAdd, MemoSvgAlertError as IconAlertError, MemoSvgAlertErrorFilled as IconAlertErrorFilled, MemoSvgAlertInformation as IconAlertInformation, MemoSvgAlertInformationFilled as IconAlertInformationFilled, MemoSvgAlertSuccess as IconAlertSuccess, MemoSvgAlertSuccessFilled as IconAlertSuccessFilled, MemoSvgAlertWarning as IconAlertWarning, MemoSvgAnalyticsGraphBar as IconAnalyticsGraphBar, MemoSvgAnalyticsPie as IconAnalyticsPie, MemoSvgArrowDown$1 as IconArrowDown, MemoSvgArrowDown as IconArrowPushDown, MemoSvgArrowUp$1 as IconArrowPushUp, MemoSvgArrowUp as IconArrowUp, MemoSvgAdd$1 as IconAssess, IconButton, MemoSvgCalendar as IconCalendar, MemoSvgCalibrate as IconCalibrate, MemoSvgCheck as IconCheck, MemoSvgChevronDown as IconChevronDown, MemoSvgChevronLeft as IconChevronLeft, MemoSvgChevronRight as IconChevronRight, MemoSvgChevronUp as IconChevronUp, MemoSvgClose as IconClose, MemoSvgCloseQuote as IconCloseQuote, MemoSvgContentPaperEdit as IconContentPaperEdit, MemoSvgControls as IconControls, MemoSvgCopyPaste as IconCopyPaste, MemoSvgDataDecrease as IconDataDecrease, MemoSvgAdd as IconDataFileBarsSearch, MemoSvgDataIncrease as IconDataIncrease, MemoSvgDelete as IconDelete, MemoSvgDocumentTableBased as IconDocumentTableBased, MemoSvgDownload as IconDownload, MemoSvgDumbbell as IconDumbbell, MemoSvgEarth as IconEarth, MemoSvgEdit as IconEdit, MemoSvgFavouriteNo as IconFavouriteNo, MemoSvgFavouriteYes as IconFavouriteYes, MemoSvgFilter as IconFilter, MemoSvgFlaggedNo as IconFlaggedNo, MemoSvgFlaggedYes as IconFlaggedYes, MemoSvgFolderClosed as IconFolderClosed, MemoSvgFolderOpen as IconFolderOpen, MemoSvgIntelligence as IconIntelligence, MemoSvgKebabHorizontal as IconKebabHorizontal, MemoSvgKebabVertical as IconKebabVertical, MemoSvgLegalHammer as IconLegalHammer, MemoSvgLinkOut as IconLinkOut, MemoSvgListBullets as IconListBullets, MemoSvgListNumbers as IconListNumbers, MemoSvgLoader as IconLoader, MemoSvgLocationTarget as IconLocationTarget, MemoSvgMenuConnectData as IconMenuConnectData, MemoSvgMenuControlRewrite as IconMenuControlRewrite, MemoSvgMenuDashboard as IconMenuDashboard, MemoSvgMenuDocuments as IconMenuDocuments, MemoSvgMenuExplorer as IconMenuExplorer, MemoSvgMenuMaintainData as IconMenuMaintainData, MemoSvgMenuManageAccounts as IconMenuManageAccounts, MemoSvgModulePuzzle as IconModulePuzzle, MemoSvgMoodHappy as IconMoodHappy, MemoSvgNetworkAdoption as IconNetworkAdoption, MemoSvgNotesWarning as IconNotesWarning, MemoSvgNotification as IconNotification, MemoSvgQuantify as IconQuantify, MemoSvgRefresh as IconRefresh, MemoSvgRisk as IconRisk, MemoSvgSave as IconSave, MemoSvgSearch as IconSearch, MemoSvgSecurityLocked as IconSecurityLocked, MemoSvgSecurityUnlocked as IconSecurityUnlocked, MemoSvgSettings as IconSettings, MemoSvgSettingsHuman as IconSettingsHuman, MemoSvgShare as IconShare, MemoSvgSortDown as IconSortDown, MemoSvgSortUp as IconSortUp, MemoSvgTable as IconTable, MemoSvgTextBold as IconTextBold, MemoSvgTextItalic as IconTextItalic, MemoSvgUpload as IconUpload, MemoSvgUserMultiple as IconUserMultiple, MemoSvgWarningFilled as IconWarningFilled, IconWrapper$4 as IconWrapper, Image, InfoText, Input$1 as Input, InputGroup, InputWithCharacterCount, Label$4 as Label, LastUpdated, Layer, Layout, LayoutHorizontal, Link, LinkList, List, ListItem, Loading, Lock, Logo, MainNav, MainNavFooter, MainNavHorizontal, Markdown, Menu$3 as Menu, MenuItem, MemoSvgMerge as Merge, Modal, MultiSelect, Notification, NssScore, Overlay$1 as Overlay, PageContentLayout, PageDrawer, PageHeader, PageHeaderActionsBar, PageHeaderCondensed, PageHeaderNavBar, PageHeaderTabsBar, PageHeaderTitleBar, PageHeaderToolBar, PageWrapper, Pagination, Panel, PanelSection, PanelTitle, Popover, PrivateRoute, ProgressBar$1 as ProgressBar, Radio, RadioTabs, RangeSlider, RangeSliderInput, Router, Row$1 as Row, ScrollProvider, ScrollableContent, SearchBar, SecondTier, Select, ShowMore, ShowMoreButton, SkeletonLoader, SortAction, StorybookWelcome, TBody, THead, TabGroup, Table, Tabs, Tag, TagList, Text$1 as Text, Textarea, TextareaWithCharacterCount, ThemeChanger, ThemeProvider, ThirdTier, Toaster, ToggleSwitch, Toolbar, Tooltip, Trend, UPLOAD_STATUS, UploadingContent, Validation, View, WideLogo, confirmationModal, darkTheme, generate, generateCypressId, getInitials, handleUpdateQuery, history, sizeVariant$4 as sizeVariant, theme, themeHelpers, toSnakeCase, trackPendoEvent, transformName, useDrawer, useHasOverflow, useQueryParams, useTarget, useThemeProvider, useToaster, useWindowSize };","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar long = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {left: -35%;right: 100%}\\n 60% {left: 100%;right: -90%}\\n 100% {left: 100%;right: -90%}\\n\"], [\"\\n 0% {left: -35%;right: 100%}\\n 60% {left: 100%;right: -90%}\\n 100% {left: 100%;right: -90%}\\n\"])));\nvar short = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {left: -200%;right: 100%}\\n 60% {left: 107%;right: -8%}\\n 100% {left: 107%;right: -8%}\\n\"], [\"\\n 0% {left: -200%;right: 100%}\\n 60% {left: 107%;right: -8%}\\n 100% {left: 107%;right: -8%}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n height = _a.height,\n color = _a.color;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n display: block;\\n border-radius: 2px;\\n will-change: left, right;\\n animation-fill-mode: forwards;\\n animation: \", \" 2.1s \", \"\\n \", \"\\n infinite;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n display: block;\\n border-radius: 2px;\\n will-change: left, right;\\n animation-fill-mode: forwards;\\n animation: \", \" 2.1s \", \"\\n \", \"\\n infinite;\\n \"])), helpers_1.cssValue(height), color, i === 1 ? long : short, i === 2 ? \"1.15s\" : \"\", i === 1 ? \"cubic-bezier(0.65, 0.815, 0.735, 0.395)\" : \"cubic-bezier(0.165, 0.84, 0.44, 1)\");\n };\n _this.wrapper = function () {\n var _a = _this.props,\n width = _a.width,\n height = _a.height,\n color = _a.color;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n overflow: hidden;\\n background-color: \", \";\\n background-clip: padding-box;\\n \"])), helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.calculateRgba(color, 0.2));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthDefaults(4, 100);\n return Loader;\n}(React.PureComponent);\nexports.Loader = Loader;\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar beat = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 50% {transform: scale(0.75);opacity: 0.2}\\n 100% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 50% {transform: scale(0.75);opacity: 0.2}\\n 100% {transform: scale(1);opacity: 1}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size,\n margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation: \", \" 0.7s \", \" infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation: \", \" 0.7s \", \" infinite linear;\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), beat, i % 2 ? \"0s\" : \"0.35s\");\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar bounce = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"], [\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n opacity: 0.6;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \" 2.1s \", \" infinite ease-in-out;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, bounce, i === 1 ? \"1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar circle = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n border-radius: 100%;\\n transition: 2s;\\n border-bottom: none;\\n border-right: none;\\n top: \", \"%;\\n left: \", \"%;\\n animation-fill-mode: \\\"\\\";\\n animation: \", \" 1s \", \"s infinite linear;\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: 1px solid \", \";\\n border-radius: 100%;\\n transition: 2s;\\n border-bottom: none;\\n border-right: none;\\n top: \", \"%;\\n left: \", \"%;\\n animation-fill-mode: \\\"\\\";\\n animation: \", \" 1s \", \"s infinite linear;\\n \"])), \"\" + value * (1 - i / 10) + unit, \"\" + value * (1 - i / 10) + unit, color, i * 0.7 * 2.5, i * 0.35 * 2.5, circle, i * 0.2);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(0)\n }), core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n }), core_1.jsx(\"div\", {\n css: this.style(4)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar climbingBox = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform:translate(0, -1em) rotate(-45deg)}\\n 5% {transform:translate(0, -1em) rotate(-50deg)}\\n 20% {transform:translate(1em, -2em) rotate(47deg)}\\n 25% {transform:translate(1em, -2em) rotate(45deg)}\\n 30% {transform:translate(1em, -2em) rotate(40deg)}\\n 45% {transform:translate(2em, -3em) rotate(137deg)}\\n 50% {transform:translate(2em, -3em) rotate(135deg)}\\n 55% {transform:translate(2em, -3em) rotate(130deg)}\\n 70% {transform:translate(3em, -4em) rotate(217deg)}\\n 75% {transform:translate(3em, -4em) rotate(220deg)}\\n 100% {transform:translate(0, -1em) rotate(-225deg)}\\n\"], [\"\\n 0% {transform:translate(0, -1em) rotate(-45deg)}\\n 5% {transform:translate(0, -1em) rotate(-50deg)}\\n 20% {transform:translate(1em, -2em) rotate(47deg)}\\n 25% {transform:translate(1em, -2em) rotate(45deg)}\\n 30% {transform:translate(1em, -2em) rotate(40deg)}\\n 45% {transform:translate(2em, -3em) rotate(137deg)}\\n 50% {transform:translate(2em, -3em) rotate(135deg)}\\n 55% {transform:translate(2em, -3em) rotate(130deg)}\\n 70% {transform:translate(3em, -4em) rotate(217deg)}\\n 75% {transform:translate(3em, -4em) rotate(220deg)}\\n 100% {transform:translate(0, -1em) rotate(-225deg)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var color = _this.props.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n bottom: -0.1em;\\n height: 1em;\\n width: 1em;\\n background-color: transparent;\\n border-radius: 15%;\\n border: 0.25em solid \", \";\\n transform: translate(0, -1em) rotate(-45deg);\\n animation-fill-mode: both;\\n animation: \", \" 2.5s infinite cubic-bezier(0.79, 0, 0.47, 0.97);\\n \"], [\"\\n position: absolute;\\n left: 0;\\n bottom: -0.1em;\\n height: 1em;\\n width: 1em;\\n background-color: transparent;\\n border-radius: 15%;\\n border: 0.25em solid \", \";\\n transform: translate(0, -1em) rotate(-45deg);\\n animation-fill-mode: both;\\n animation: \", \" 2.5s infinite cubic-bezier(0.79, 0, 0.47, 0.97);\\n \"])), color, climbingBox);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -2.7em;\\n margin-left: -2.7em;\\n width: 5.4em;\\n height: 5.4em;\\n font-size: \", \";\\n \"], [\"\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n margin-top: -2.7em;\\n margin-left: -2.7em;\\n width: 5.4em;\\n height: 5.4em;\\n font-size: \", \";\\n \"])), helpers_1.cssValue(size));\n };\n _this.hill = function () {\n var color = _this.props.color;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: absolute;\\n width: 7.1em;\\n height: 7.1em;\\n top: 1.7em;\\n left: 1.7em;\\n border-left: 0.25em solid \", \";\\n transform: rotate(45deg);\\n \"], [\"\\n position: absolute;\\n width: 7.1em;\\n height: 7.1em;\\n top: 1.7em;\\n left: 1.7em;\\n border-left: 0.25em solid \", \";\\n transform: rotate(45deg);\\n \"])), color);\n };\n _this.container = function () {\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n position: relative;\\n width: 7.1em;\\n height: 7.1em;\\n \"], [\"\\n position: relative;\\n width: 7.1em;\\n height: 7.1em;\\n \"])));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.container(), css]\n }, core_1.jsx(\"div\", {\n css: this.wrapper()\n }, core_1.jsx(\"div\", {\n css: this.style()\n }), core_1.jsx(\"div\", {\n css: this.hill()\n }))) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar clip = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg) scale(1)}\\n 50% {transform: rotate(180deg) scale(0.8)}\\n 100% {transform: rotate(360deg) scale(1)}\\n\"], [\"\\n 0% {transform: rotate(0deg) scale(1)}\\n 50% {transform: rotate(180deg) scale(0.8)}\\n 100% {transform: rotate(360deg) scale(1)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background: transparent !important;\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n border: 2px solid;\\n border-color: \", \";\\n border-bottom-color: transparent;\\n display: inline-block;\\n animation: \", \" 0.75s 0s infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n background: transparent !important;\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n border: 2px solid;\\n border-color: \", \";\\n border-bottom-color: transparent;\\n display: inline-block;\\n animation: \", \" 0.75s 0s infinite linear;\\n animation-fill-mode: both;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, clip);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.style(), css]\n }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(35);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% { transform: rotate(360deg) }\\n\"], [\"\\n 100% { transform: rotate(360deg) }\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.wrapper = function () {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n background-color: transparent;\\n box-shadow: inset 0px 0px 0px 2px \", \";\\n border-radius: 50%;\\n\\n &:after,\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n background-color: \", \";\\n }\\n\\n &:after {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 2s linear infinite;\\n }\\n\\n &:before {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 8s linear infinite;\\n }\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n background-color: transparent;\\n box-shadow: inset 0px 0px 0px 2px \", \";\\n border-radius: 50%;\\n\\n &:after,\\n &:before {\\n position: absolute;\\n content: \\\"\\\";\\n background-color: \", \";\\n }\\n\\n &:after {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 2s linear infinite;\\n }\\n\\n &:before {\\n width: \", \"px;\\n height: 2px;\\n top: \", \"px;\\n left: \", \"px;\\n transform-origin: 1px 1px;\\n animation: \", \" 8s linear infinite;\\n }\\n \"])), \"\" + value + unit, \"\" + value + unit, color, color, value / 2.4, value / 2 - 1, value / 2 - 1, rotate, value / 3, value / 2 - 1, value / 2 - 1, rotate);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar bounce = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"], [\"\\n 0%, 100% {transform: scale(0)}\\n 50% {transform: scale(1.0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n animation: \", \" 2s \", \" infinite linear;\\n \"], [\"\\n position: absolute;\\n top: \", \";\\n bottom: \", \";\\n height: \", \";\\n width: \", \";\\n background-color: \", \";\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n animation: \", \" 2s \", \" infinite linear;\\n \"])), i % 2 ? \"0\" : \"auto\", i % 2 ? \"auto\" : \"0\", \"\" + value / 2 + unit, \"\" + value / 2 + unit, color, bounce, i === 2 ? \"-1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation-fill-mode: forwards;\\n animation: \", \" 2s 0s infinite linear;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation-fill-mode: forwards;\\n animation: \", \" 2s 0s infinite linear;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), rotate);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar fade = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 50% {opacity: 0.3}\\n 100% {opacity: 1}\\n\"], [\"\\n 50% {opacity: 0.3}\\n 100% {opacity: 1}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.radius = function () {\n var margin = _this.props.margin;\n var value = helpers_1.parseLengthAndUnit(margin).value;\n return value + 18;\n };\n _this.quarter = function () {\n return _this.radius() / 2 + _this.radius() / 5.5;\n };\n _this.style = function (i) {\n var _a = _this.props,\n height = _a.height,\n width = _a.width,\n margin = _a.margin,\n color = _a.color,\n radius = _a.radius;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n position: absolute;\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n transition: 2s;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" 1.2s \", \"s infinite ease-in-out;\\n \"], [\"\\n position: absolute;\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n background-color: \", \";\\n border-radius: \", \";\\n transition: 2s;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" 1.2s \", \"s infinite ease-in-out;\\n \"])), helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.cssValue(margin), color, helpers_1.cssValue(radius), fade, i * 0.12);\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n font-size: 0;\\n top: \", \"px;\\n left: \", \"px;\\n width: \", \"px;\\n height: \", \"px;\\n \"], [\"\\n position: relative;\\n font-size: 0;\\n top: \", \"px;\\n left: \", \"px;\\n width: \", \"px;\\n height: \", \"px;\\n \"])), _this.radius(), _this.radius(), _this.radius() * 3, _this.radius() * 3);\n };\n _this.a = function () {\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"])), _this.style(1), _this.radius());\n };\n _this.b = function () {\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"])), _this.style(2), _this.quarter(), _this.quarter());\n };\n _this.c = function () {\n return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"], [\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"])), _this.style(3), _this.radius());\n };\n _this.d = function () {\n return core_1.css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"])), _this.style(4), -_this.quarter(), _this.quarter());\n };\n _this.e = function () {\n return core_1.css(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: 0;\\n \"])), _this.style(5), -_this.radius());\n };\n _this.f = function () {\n return core_1.css(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(-45deg);\\n \"])), _this.style(6), -_this.quarter(), -_this.quarter());\n };\n _this.g = function () {\n return core_1.css(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"], [\"\\n \", \";\\n top: 0;\\n left: \", \"px;\\n transform: rotate(90deg);\\n \"])), _this.style(7), -_this.radius());\n };\n _this.h = function () {\n return core_1.css(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"], [\"\\n \", \";\\n top: \", \"px;\\n left: \", \"px;\\n transform: rotate(45deg);\\n \"])), _this.style(8), _this.quarter(), -_this.quarter());\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.a()\n }), core_1.jsx(\"div\", {\n css: this.b()\n }), core_1.jsx(\"div\", {\n css: this.c()\n }), core_1.jsx(\"div\", {\n css: this.d()\n }), core_1.jsx(\"div\", {\n css: this.e()\n }), core_1.jsx(\"div\", {\n css: this.f()\n }), core_1.jsx(\"div\", {\n css: this.g()\n }), core_1.jsx(\"div\", {\n css: this.h()\n })) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthRadiusDefaults(15, 5, 2);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar grid = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1)}\\n 50% {transform: scale(0.5); opacity: 0.7}\\n 100% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 0% {transform: scale(1)}\\n 50% {transform: scale(0.5); opacity: 0.7}\\n 100% {transform: scale(1);opacity: 1}\\n\"])));\nvar random = function (top) {\n return Math.random() * top;\n};\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (rand) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size,\n margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" \", \"s \", \"s infinite ease;\\n \"], [\"\\n display: inline-block;\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n animation-fill-mode: \\\"both\\\";\\n animation: \", \" \", \"s \", \"s infinite ease;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), grid, rand / 100 + 0.6, rand / 100 - 0.2);\n };\n _this.wrapper = function () {\n var _a = _this.props,\n size = _a.size,\n margin = _a.margin;\n var sizeWithUnit = helpers_1.parseLengthAndUnit(size);\n var marginWithUnit = helpers_1.parseLengthAndUnit(margin);\n var width = \"\" + (parseFloat(sizeWithUnit.value.toString()) * 3 + parseFloat(marginWithUnit.value.toString()) * 6) + sizeWithUnit.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n width: \", \";\\n font-size: 0;\\n \"], [\"\\n width: \", \";\\n font-size: 0;\\n \"])), width);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n }), core_1.jsx(\"div\", {\n css: this.style(random(100))\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar index_1 = require(\"./helpers/index\");\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.thickness = function () {\n var size = _this.props.size;\n var value = index_1.parseLengthAndUnit(size).value;\n return value / 5;\n };\n _this.lat = function () {\n var size = _this.props.size;\n var value = index_1.parseLengthAndUnit(size).value;\n return (value - _this.thickness()) / 2;\n };\n _this.offset = function () {\n return _this.lat() - _this.thickness();\n };\n _this.color = function () {\n var color = _this.props.color;\n return index_1.calculateRgba(color, 0.75);\n };\n _this.before = function () {\n var size = _this.props.size;\n var color = _this.color();\n var lat = _this.lat();\n var thickness = _this.thickness();\n var offset = _this.offset();\n return core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {width: \", \";box-shadow: 0 \", \"px \", \", 0 \", \"px \", \"}\\n 70% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"], [\"\\n 0% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {width: \", \";box-shadow: 0 \", \"px \", \", 0 \", \"px \", \"}\\n 70% {width: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"])), thickness, lat, -offset, color, -lat, offset, color, index_1.cssValue(size), -offset, color, offset, color, thickness, -lat, -offset, color, lat, offset, color, lat, -offset, color, -lat, offset, color);\n };\n _this.after = function () {\n var size = _this.props.size;\n var color = _this.color();\n var lat = _this.lat();\n var thickness = _this.thickness();\n var offset = _this.offset();\n return core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {height: \", \";box-shadow: \", \"px 0 \", \", \", \"px 0 \", \"}\\n 70% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"], [\"\\n 0% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 35% {height: \", \";box-shadow: \", \"px 0 \", \", \", \"px 0 \", \"}\\n 70% {height: \", \"px;box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n 100% {box-shadow: \", \"px \", \"px \", \", \", \"px \", \"px \", \"}\\n \"])), thickness, offset, lat, color, -offset, -lat, color, index_1.cssValue(size), offset, color, -offset, color, thickness, offset, -lat, color, -offset, lat, color, offset, lat, color, -offset, -lat, color);\n };\n _this.style = function (i) {\n var size = _this.props.size;\n var _a = index_1.parseLengthAndUnit(size),\n value = _a.value,\n unit = _a.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n content: \\\"\\\";\\n top: 50%;\\n left: 50%;\\n display: block;\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n transform: translate(-50%, -50%);\\n animation-fill-mode: none;\\n animation: \", \" 2s infinite;\\n \"], [\"\\n position: absolute;\\n content: \\\"\\\";\\n top: 50%;\\n left: 50%;\\n display: block;\\n width: \", \";\\n height: \", \";\\n border-radius: \", \";\\n transform: translate(-50%, -50%);\\n animation-fill-mode: none;\\n animation: \", \" 2s infinite;\\n \"])), \"\" + value / 5 + unit, \"\" + value / 5 + unit, \"\" + value / 10 + unit, i === 1 ? _this.before() : _this.after());\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n transform: rotate(165deg);\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n transform: rotate(165deg);\\n \"])), index_1.cssValue(size), index_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = index_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar moon = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.moonSize = function () {\n var size = _this.props.size;\n var value = helpers_1.parseLengthAndUnit(size).value;\n return value / 7;\n };\n _this.ballStyle = function (size) {\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n var _a = helpers_1.parseLengthAndUnit(size),\n value = _a.value,\n unit = _a.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"])), \"\" + (value + _this.moonSize() * 2) + unit, \"\" + (value + _this.moonSize() * 2) + unit, moon);\n };\n _this.ball = function () {\n var _a = _this.props,\n color = _a.color,\n size = _a.size;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n background-color: \", \";\\n opacity: 0.8;\\n position: absolute;\\n top: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"], [\"\\n \", \";\\n background-color: \", \";\\n opacity: 0.8;\\n position: absolute;\\n top: \", \";\\n animation: \", \" 0.6s 0s infinite linear;\\n animation-fill-mode: forwards;\\n \"])), _this.ballStyle(_this.moonSize()), color, \"\" + (value / 2 - _this.moonSize() / 2) + unit, moon);\n };\n _this.circle = function () {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var value = helpers_1.parseLengthAndUnit(size).value;\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n border: \", \"px solid \", \";\\n opacity: 0.1;\\n box-sizing: content-box;\\n \"], [\"\\n \", \";\\n border: \", \"px solid \", \";\\n opacity: 0.1;\\n box-sizing: content-box;\\n \"])), _this.ballStyle(value), _this.moonSize(), color);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.ball()\n }), core_1.jsx(\"div\", {\n css: this.circle()\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar pacman = [core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(-44deg)}\\n \"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(-44deg)}\\n \"]))), core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(44deg)}\\n \"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(44deg)}\\n \"])))];\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ball = function () {\n var size = _this.props.size;\n var _a = helpers_1.parseLengthAndUnit(size),\n value = _a.value,\n unit = _a.unit;\n return core_1.keyframes(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n 75% {opacity: 0.7}\\n 100% {transform: translate(\", \", \", \")}\\n \"], [\"\\n 75% {opacity: 0.7}\\n 100% {transform: translate(\", \", \", \")}\\n \"])), \"\" + -4 * value + unit, \"\" + -value / 4 + unit);\n };\n _this.ballStyle = function (i) {\n var _a = _this.props,\n color = _a.color,\n margin = _a.margin,\n size = _a.size;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n transform: translate(0, \", \");\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n animation: \", \" 1s \", \"s infinite linear;\\n animation-fill-mode: both;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n background-color: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n transform: translate(0, \", \");\\n position: absolute;\\n top: \", \";\\n left: \", \";\\n animation: \", \" 1s \", \"s infinite linear;\\n animation-fill-mode: both;\\n \"])), \"\" + value / 3 + unit, \"\" + value / 3 + unit, color, helpers_1.cssValue(margin), \"\" + -value / 4 + unit, \"\" + value + unit, \"\" + value * 4 + unit, _this.ball(), i * 0.25);\n };\n _this.s1 = function () {\n var size = _this.props.size;\n return helpers_1.cssValue(size) + \" solid transparent\";\n };\n _this.s2 = function () {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n return helpers_1.cssValue(size) + \" solid \" + color;\n };\n _this.pacmanStyle = function (i) {\n var size = _this.props.size;\n var s1 = _this.s1();\n var s2 = _this.s2();\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n width: 0;\\n height: 0;\\n border-right: \", \";\\n border-top: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n border-radius: \", \";\\n position: absolute;\\n animation: \", \" 0.8s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"], [\"\\n width: 0;\\n height: 0;\\n border-right: \", \";\\n border-top: \", \";\\n border-left: \", \";\\n border-bottom: \", \";\\n border-radius: \", \";\\n position: absolute;\\n animation: \", \" 0.8s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"])), s1, i === 0 ? s1 : s2, s2, i === 0 ? s2 : s1, helpers_1.cssValue(size), pacman[i]);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n position: relative;\\n font-size: 0;\\n height: \", \";\\n width: \", \";\\n \"], [\"\\n position: relative;\\n font-size: 0;\\n height: \", \";\\n width: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.pac = function () {\n return _this.pacmanStyle(0);\n };\n _this.man = function () {\n return _this.pacmanStyle(1);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.pac()\n }), core_1.jsx(\"div\", {\n css: this.man()\n }), core_1.jsx(\"div\", {\n css: this.ballStyle(2)\n }), core_1.jsx(\"div\", {\n css: this.ballStyle(3)\n }), core_1.jsx(\"div\", {\n css: this.ballStyle(4)\n }), core_1.jsx(\"div\", {\n css: this.ballStyle(5)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(25);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\n// 1.5 4.5 7.5\nvar distance = [1, 3, 5];\nvar propagate = [core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[2]), core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 50% {transform: translateX(-\", \"rem) scale(0.6)}\\n 75% {transform: translateX(-\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[1]), core_1.keyframes(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 75% {transform: translateX(-\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(-\", \"rem) scale(0.75)}\\n 75% {transform: translateX(-\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[0]), core_1.keyframes(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 75% {transform: translateX(\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 75% {transform: translateX(\", \"rem) scale(0.75)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[0]), core_1.keyframes(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.6)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[1]), core_1.keyframes(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"], [\"\\n 25% {transform: translateX(\", \"rem) scale(0.75)}\\n 50% {transform: translateX(\", \"rem) scale(0.6)}\\n 75% {transform: translateX(\", \"rem) scale(0.5)}\\n 95% {transform: translateX(0rem) scale(1)}\\n \"])), distance[0], distance[1], distance[2])];\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n font-size: \", \";\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n border-radius: 50%;\\n animation: \", \" 1.5s infinite;\\n animation-fill-mode: forwards;\\n \"], [\"\\n position: absolute;\\n font-size: \", \";\\n width: \", \";\\n height: \", \";\\n background: \", \";\\n border-radius: 50%;\\n animation: \", \" 1.5s infinite;\\n animation-fill-mode: forwards;\\n \"])), \"\" + value / 3 + unit, \"\" + value + unit, \"\" + value + unit, color, propagate[i]);\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n position: relative;\\n \"], [\"\\n position: relative;\\n \"])));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(0)\n }), core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n }), core_1.jsx(\"div\", {\n css: this.style(4)\n }), core_1.jsx(\"div\", {\n css: this.style(5)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar puff = [core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(0)}\\n 100% {transform: scale(1.0)}\\n\"], [\"\\n 0% {transform: scale(0)}\\n 100% {transform: scale(1.0)}\\n\"]))), core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {opacity: 1}\\n 100% {opacity: 0}\\n\"], [\"\\n 0% {opacity: 1}\\n 100% {opacity: 0}\\n\"])))];\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: thick solid \", \";\\n border-radius: 50%;\\n opacity: 1;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \", \", \";\\n animation-duration: 2s;\\n animation-iteration-count: infinite;\\n animation-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1), cubic-bezier(0.3, 0.61, 0.355, 1);\\n animation-delay: \", \";\\n \"], [\"\\n position: absolute;\\n height: \", \";\\n width: \", \";\\n border: thick solid \", \";\\n border-radius: 50%;\\n opacity: 1;\\n top: 0;\\n left: 0;\\n animation-fill-mode: both;\\n animation: \", \", \", \";\\n animation-duration: 2s;\\n animation-iteration-count: infinite;\\n animation-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1), cubic-bezier(0.3, 0.61, 0.355, 1);\\n animation-delay: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), color, puff[0], puff[1], i === 1 ? \"-1s\" : \"0s\");\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"], [\"\\n position: relative;\\n width: \", \";\\n height: \", \";\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar pulse = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1);opacity: 1}\\n 45% {transform: scale(0.1);opacity: 0.7}\\n 80% {transform: scale(1);opacity: 1}\\n\"], [\"\\n 0% {transform: scale(1);opacity: 1}\\n 45% {transform: scale(0.1);opacity: 0.7}\\n 80% {transform: scale(1);opacity: 1}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size,\n margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.75s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.75s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), pulse, i * 0.12);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar right = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(180deg) rotateY(360deg) rotateZ(360deg)}\\n\"], [\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(180deg) rotateY(360deg) rotateZ(360deg)}\\n\"])));\nvar left = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(360deg) rotateY(180deg) rotateZ(360deg)}\\n\"], [\"\\n 0% {transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg)}\\n 100% {transform: rotateX(360deg) rotateY(180deg) rotateZ(360deg)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n var _b = helpers_1.parseLengthAndUnit(size),\n value = _b.value,\n unit = _b.unit;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: \", \";\\n height: \", \";\\n border: \", \" solid \", \";\\n opacity: 0.4;\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n perspective: 800px;\\n animation: \", \" 2s 0s infinite linear;\\n \"], [\"\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: \", \";\\n height: \", \";\\n border: \", \" solid \", \";\\n opacity: 0.4;\\n border-radius: 100%;\\n animation-fill-mode: forwards;\\n perspective: 800px;\\n animation: \", \" 2s 0s infinite linear;\\n \"])), \"\" + value + unit, \"\" + value + unit, \"\" + value / 10 + unit, color, i === 1 ? right : left);\n };\n _this.wrapper = function () {\n var size = _this.props.size;\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n width: \", \";\\n height: \", \";\\n position: relative;\\n \"], [\"\\n width: \", \";\\n height: \", \";\\n position: relative;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(60);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar riseAmount = 30;\nvar even = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scale(1.1)}\\n 25% {transform: translateY(-\", \"px)}\\n 50% {transform: scale(0.4)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(1.0)}\\n\"], [\"\\n 0% {transform: scale(1.1)}\\n 25% {transform: translateY(-\", \"px)}\\n 50% {transform: scale(0.4)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(1.0)}\\n\"])), riseAmount, riseAmount);\nvar odd = core_1.keyframes(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n 0% {transform: scale(0.4)}\\n 25% {transform: translateY(\", \"px)}\\n 50% {transform: scale(1.1)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(0.75)}\\n\"], [\"\\n 0% {transform: scale(0.4)}\\n 25% {transform: translateY(\", \"px)}\\n 50% {transform: scale(1.1)}\\n 75% {transform: translateY(\", \"px)}\\n 100% {transform: translateY(0) scale(0.75)}\\n\"])), riseAmount, -riseAmount);\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size,\n margin = _a.margin;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.15, 0.46, 0.9, 0.6);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.15, 0.46, 0.9, 0.6);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), i % 2 === 0 ? even : odd);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n }), core_1.jsx(\"div\", {\n css: this.style(4)\n }), core_1.jsx(\"div\", {\n css: this.style(5)\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar rotate = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"], [\"\\n 0% {transform: rotate(0deg)}\\n 50% {transform: rotate(180deg)}\\n 100% {transform: rotate(360deg)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var margin = _this.props.margin;\n var value = helpers_1.parseLengthAndUnit(margin).value;\n var left = (i % 2 ? -1 : 1) * (26 + value);\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n opacity: 0.8;\\n position: absolute;\\n top: 0;\\n left: \", \"px;\\n \"], [\"\\n opacity: 0.8;\\n position: absolute;\\n top: 0;\\n left: \", \"px;\\n \"])), left);\n };\n _this.ball = function () {\n var _a = _this.props,\n color = _a.color,\n size = _a.size;\n return core_1.css(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n border-radius: 100%;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size));\n };\n _this.wrapper = function () {\n return core_1.css(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n \", \";\\n display: inline-block;\\n position: relative;\\n animation-fill-mode: both;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.7, -0.13, 0.22, 0.86);\\n \"], [\"\\n \", \";\\n display: inline-block;\\n position: relative;\\n animation-fill-mode: both;\\n animation: \", \" 1s 0s infinite cubic-bezier(0.7, -0.13, 0.22, 0.86);\\n \"])), _this.ball(), rotate);\n };\n _this.long = function () {\n return core_1.css(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n \"], [\"\\n \", \";\\n \", \";\\n \"])), _this.ball(), _this.style(1));\n };\n _this.short = function () {\n return core_1.css(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n \", \";\\n \", \";\\n \"], [\"\\n \", \";\\n \", \";\\n \"])), _this.ball(), _this.style(2));\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.wrapper(), css]\n }, core_1.jsx(\"div\", {\n css: this.long()\n }), core_1.jsx(\"div\", {\n css: this.short()\n })) : null;\n };\n Loader.defaultProps = helpers_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar scale = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 0% {transform: scaley(1.0)}\\n 50% {transform: scaley(0.4)}\\n 100% {transform: scaley(1.0)}\\n\"], [\"\\n 0% {transform: scaley(1.0)}\\n 50% {transform: scaley(0.4)}\\n 100% {transform: scaley(1.0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n width = _a.width,\n height = _a.height,\n margin = _a.margin,\n radius = _a.radius;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: \", \";\\n display: inline-block;\\n animation: \", \" 1s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: \", \";\\n display: inline-block;\\n animation: \", \" 1s \", \"s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(width), helpers_1.cssValue(height), helpers_1.cssValue(margin), helpers_1.cssValue(radius), scale, i * 0.1);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n }), core_1.jsx(\"div\", {\n css: this.style(4)\n }), core_1.jsx(\"div\", {\n css: this.style(5)\n })) : null;\n };\n Loader.defaultProps = helpers_1.heightWidthRadiusDefaults(35, 4, 2);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar skew = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: perspective(100px) rotateX(180deg) rotateY(0)}\\n 50% {transform: perspective(100px) rotateX(180deg) rotateY(180deg)}\\n 75% {transform: perspective(100px) rotateX(0) rotateY(180deg)}\\n 100% {transform: perspective(100px) rotateX(0) rotateY(0)}\\n\"], [\"\\n 25% {transform: perspective(100px) rotateX(180deg) rotateY(0)}\\n 50% {transform: perspective(100px) rotateX(180deg) rotateY(180deg)}\\n 75% {transform: perspective(100px) rotateX(0) rotateY(180deg)}\\n 100% {transform: perspective(100px) rotateX(0) rotateY(0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props,\n size = _a.size,\n color = _a.color;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n width: 0;\\n height: 0;\\n border-left: \", \" solid transparent;\\n border-right: \", \" solid transparent;\\n border-bottom: \", \" solid \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"], [\"\\n width: 0;\\n height: 0;\\n border-left: \", \" solid transparent;\\n border-right: \", \" solid transparent;\\n border-bottom: \", \" solid \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"])), helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(size), color, skew);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.style(), css]\n }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(20);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar helpers_1 = require(\"./helpers\");\nvar square = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 25% {transform: rotateX(180deg) rotateY(0)}\\n 50% {transform: rotateX(180deg) rotateY(180deg)}\\n 75% {transform: rotateX(0) rotateY(180deg)}\\n 100% {transform: rotateX(0) rotateY(0)}\\n\"], [\"\\n 25% {transform: rotateX(180deg) rotateY(0)}\\n 50% {transform: rotateX(180deg) rotateY(180deg)}\\n 75% {transform: rotateX(0) rotateY(180deg)}\\n 100% {transform: rotateX(0) rotateY(0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function () {\n var _a = _this.props,\n color = _a.color,\n size = _a.size;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n display: inline-block;\\n animation: \", \" 3s 0s infinite cubic-bezier(0.09, 0.57, 0.49, 0.9);\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), square);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [this.style(), css]\n }) : null;\n };\n Loader.defaultProps = helpers_1.sizeDefaults(50);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nvar __makeTemplateObject = this && this.__makeTemplateObject || function (cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n};\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/** @jsx jsx */\nvar React = __importStar(require(\"react\"));\nvar core_1 = require(\"@emotion/core\");\nvar proptypes_1 = require(\"./helpers/proptypes\");\nvar helpers_1 = require(\"./helpers\");\nvar sync = core_1.keyframes(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n 33% {transform: translateY(10px)}\\n 66% {transform: translateY(-10px)}\\n 100% {transform: translateY(0)}\\n\"], [\"\\n 33% {transform: translateY(10px)}\\n 66% {transform: translateY(-10px)}\\n 100% {transform: translateY(0)}\\n\"])));\nvar Loader = /** @class */function (_super) {\n __extends(Loader, _super);\n function Loader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.style = function (i) {\n var _a = _this.props,\n color = _a.color,\n size = _a.size,\n margin = _a.margin;\n return core_1.css(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.6s \", \"s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"], [\"\\n background-color: \", \";\\n width: \", \";\\n height: \", \";\\n margin: \", \";\\n border-radius: 100%;\\n display: inline-block;\\n animation: \", \" 0.6s \", \"s infinite ease-in-out;\\n animation-fill-mode: both;\\n \"])), color, helpers_1.cssValue(size), helpers_1.cssValue(size), helpers_1.cssValue(margin), sync, i * 0.07);\n };\n return _this;\n }\n Loader.prototype.render = function () {\n var _a = this.props,\n loading = _a.loading,\n css = _a.css;\n return loading ? core_1.jsx(\"div\", {\n css: [css]\n }, core_1.jsx(\"div\", {\n css: this.style(1)\n }), core_1.jsx(\"div\", {\n css: this.style(2)\n }), core_1.jsx(\"div\", {\n css: this.style(3)\n })) : null;\n };\n Loader.defaultProps = proptypes_1.sizeMarginDefaults(15);\n return Loader;\n}(React.PureComponent);\nexports.default = Loader;\nvar templateObject_1, templateObject_2;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BasicColors;\n(function (BasicColors) {\n BasicColors[\"maroon\"] = \"#800000\";\n BasicColors[\"red\"] = \"#FF0000\";\n BasicColors[\"orange\"] = \"#FFA500\";\n BasicColors[\"yellow\"] = \"#FFFF00\";\n BasicColors[\"olive\"] = \"#808000\";\n BasicColors[\"green\"] = \"#008000\";\n BasicColors[\"purple\"] = \"#800080\";\n BasicColors[\"fuchsia\"] = \"#FF00FF\";\n BasicColors[\"lime\"] = \"#00FF00\";\n BasicColors[\"teal\"] = \"#008080\";\n BasicColors[\"aqua\"] = \"#00FFFF\";\n BasicColors[\"blue\"] = \"#0000FF\";\n BasicColors[\"navy\"] = \"#000080\";\n BasicColors[\"black\"] = \"#000000\";\n BasicColors[\"gray\"] = \"#808080\";\n BasicColors[\"silver\"] = \"#C0C0C0\";\n BasicColors[\"white\"] = \"#FFFFFF\";\n})(BasicColors || (BasicColors = {}));\nexports.calculateRgba = function (color, opacity) {\n if (Object.keys(BasicColors).includes(color)) {\n color = BasicColors[color];\n }\n if (color[0] === \"#\") {\n color = color.slice(1);\n }\n if (color.length === 3) {\n var res_1 = \"\";\n color.split(\"\").forEach(function (c) {\n res_1 += c;\n res_1 += c;\n });\n color = res_1;\n }\n var rgbValues = color.match(/.{2}/g).map(function (hex) {\n return parseInt(hex, 16);\n }).join(\", \");\n return \"rgba(\" + rgbValues + \", \" + opacity + \")\";\n};","\"use strict\";\n\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n__export(require(\"./proptypes\"));\n__export(require(\"./colors\"));\n__export(require(\"./unitConverter\"));","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar commonValues = {\n loading: true,\n color: \"#000000\",\n css: \"\"\n};\nfunction sizeDefaults(sizeValue) {\n return Object.assign({}, commonValues, {\n size: sizeValue\n });\n}\nexports.sizeDefaults = sizeDefaults;\nfunction sizeMarginDefaults(sizeValue) {\n return Object.assign({}, sizeDefaults(sizeValue), {\n margin: 2\n });\n}\nexports.sizeMarginDefaults = sizeMarginDefaults;\nfunction heightWidthDefaults(height, width) {\n return Object.assign({}, commonValues, {\n height: height,\n width: width\n });\n}\nexports.heightWidthDefaults = heightWidthDefaults;\nfunction heightWidthRadiusDefaults(height, width, radius) {\n if (radius === void 0) {\n radius = 2;\n }\n return Object.assign({}, heightWidthDefaults(height, width), {\n radius: radius,\n margin: 2\n });\n}\nexports.heightWidthRadiusDefaults = heightWidthRadiusDefaults;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar cssUnit = {\n cm: true,\n mm: true,\n in: true,\n px: true,\n pt: true,\n pc: true,\n em: true,\n ex: true,\n ch: true,\n rem: true,\n vw: true,\n vh: true,\n vmin: true,\n vmax: true,\n \"%\": true\n};\n/**\n * If size is a number, append px to the value as default unit.\n * If size is a string, validate against list of valid units.\n * If unit is valid, return size as is.\n * If unit is invalid, console warn issue, replace with px as the unit.\n *\n * @param {(number | string)} size\n * @return {LengthObject} LengthObject\n */\nfunction parseLengthAndUnit(size) {\n if (typeof size === \"number\") {\n return {\n value: size,\n unit: \"px\"\n };\n }\n var value;\n var valueString = size.match(/^[0-9.]*/).toString();\n if (valueString.includes(\".\")) {\n value = parseFloat(valueString);\n } else {\n value = parseInt(valueString, 10);\n }\n var unit = size.match(/[^0-9]*$/).toString();\n if (cssUnit[unit]) {\n return {\n value: value,\n unit: unit\n };\n }\n console.warn(\"React Spinners: \" + size + \" is not a valid css value. Defaulting to \" + value + \"px.\");\n return {\n value: value,\n unit: \"px\"\n };\n}\nexports.parseLengthAndUnit = parseLengthAndUnit;\n/**\n * Take value as an input and return valid css value\n *\n * @param {(number | string)} value\n * @return {string} valid css value\n */\nfunction cssValue(value) {\n var lengthWithunit = parseLengthAndUnit(value);\n return \"\" + lengthWithunit.value + lengthWithunit.unit;\n}\nexports.cssValue = cssValue;","\"use strict\";\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar BarLoader_1 = __importDefault(require(\"./BarLoader\"));\nvar BeatLoader_1 = __importDefault(require(\"./BeatLoader\"));\nvar BounceLoader_1 = __importDefault(require(\"./BounceLoader\"));\nvar CircleLoader_1 = __importDefault(require(\"./CircleLoader\"));\nvar ClimbingBoxLoader_1 = __importDefault(require(\"./ClimbingBoxLoader\"));\nvar ClipLoader_1 = __importDefault(require(\"./ClipLoader\"));\nvar ClockLoader_1 = __importDefault(require(\"./ClockLoader\"));\nvar DotLoader_1 = __importDefault(require(\"./DotLoader\"));\nvar FadeLoader_1 = __importDefault(require(\"./FadeLoader\"));\nvar GridLoader_1 = __importDefault(require(\"./GridLoader\"));\nvar HashLoader_1 = __importDefault(require(\"./HashLoader\"));\nvar MoonLoader_1 = __importDefault(require(\"./MoonLoader\"));\nvar PacmanLoader_1 = __importDefault(require(\"./PacmanLoader\"));\nvar PropagateLoader_1 = __importDefault(require(\"./PropagateLoader\"));\nvar PulseLoader_1 = __importDefault(require(\"./PulseLoader\"));\nvar PuffLoader_1 = __importDefault(require(\"./PuffLoader\"));\nvar RingLoader_1 = __importDefault(require(\"./RingLoader\"));\nvar RiseLoader_1 = __importDefault(require(\"./RiseLoader\"));\nvar RotateLoader_1 = __importDefault(require(\"./RotateLoader\"));\nvar ScaleLoader_1 = __importDefault(require(\"./ScaleLoader\"));\nvar SkewLoader_1 = __importDefault(require(\"./SkewLoader\"));\nvar SquareLoader_1 = __importDefault(require(\"./SquareLoader\"));\nvar SyncLoader_1 = __importDefault(require(\"./SyncLoader\"));\nexports.BarLoader = BarLoader_1.default;\nexports.BeatLoader = BeatLoader_1.default;\nexports.BounceLoader = BounceLoader_1.default;\nexports.CircleLoader = CircleLoader_1.default;\nexports.ClimbingBoxLoader = ClimbingBoxLoader_1.default;\nexports.ClipLoader = ClipLoader_1.default;\nexports.ClockLoader = ClockLoader_1.default;\nexports.DotLoader = DotLoader_1.default;\nexports.FadeLoader = FadeLoader_1.default;\nexports.GridLoader = GridLoader_1.default;\nexports.HashLoader = HashLoader_1.default;\nexports.MoonLoader = MoonLoader_1.default;\nexports.PacmanLoader = PacmanLoader_1.default;\nexports.PropagateLoader = PropagateLoader_1.default;\nexports.PulseLoader = PulseLoader_1.default;\nexports.PuffLoader = PuffLoader_1.default;\nexports.RingLoader = RingLoader_1.default;\nexports.RiseLoader = RiseLoader_1.default;\nexports.RotateLoader = RotateLoader_1.default;\nexports.ScaleLoader = ScaleLoader_1.default;\nexports.SkewLoader = SkewLoader_1.default;\nexports.SquareLoader = SquareLoader_1.default;\nexports.SyncLoader = SyncLoader_1.default;","import styled from 'styled-components';\nimport React from 'react';\nimport { Accordion, View, Text, IconButton, IconDelete, Heading, Autosuggest, history } from '@acin/ui-core';\nimport { debounce } from 'lodash';\nimport { gql, useLazyQuery } from '@apollo/client';\nimport { decode } from 'jsonwebtoken';\nvar checkIsAuthor = function (authorId, userId) {\n if (!authorId || !userId) return false;\n return authorId === userId;\n};\nvar USER_ROLES = {\n SUPER_ADMIN: 'Acin.AdminPlus',\n ACIN_USER: 'Acin.User',\n DATA_USER: 'Acin.DataUser',\n CUSTOMER_USER: 'Networked.Admin',\n FEATURE_TESTER: 'FeatureTester',\n ACIN_QUALITY_TOOLS_USER: 'Acin.QualityTools.User',\n CUSTOMER_QUALITY_TOOLS_USER: 'Networked.QualityTools.User',\n RISK_INTEL_USER: 'RiskIntel.User',\n EMAIL_NOTIFICATIONS_USER: 'Acin.EmailNotifications'\n};\n\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***************************************************************************** */\n\nvar __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};\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __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}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\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};\nvar AccountRow = styled(Accordion)(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n background: \", \";\\n\"], [\"\\n background: \", \";\\n\"])), function (p) {\n return p.theme.colors.backgrounds.getValue(1);\n});\nvar Header = styled(View)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"], [\"\\n display: flex;\\n width: 100%;\\n justify-content: space-between;\\n\"])));\nvar HeaderTitle = styled(View)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n flex-direction: column;\\n min-width: 0;\\n\"])));\nvar HeaderToolbar = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n justify-content: flex-end;\\n display: flex;\\n\"], [\"\\n justify-content: flex-end;\\n display: flex;\\n\"])));\nvar ToolbarButton = styled(View)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"], [\"\\n padding: 0 \", \";\\n :not(:last-child) {\\n border-right: 1px solid \", \";\\n }\\n :last-child {\\n padding-right: 0;\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.colors.borders.getValue(1);\n});\nvar ContentSection = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"], [\"\\n margin-top: \", \";\\n white-space: pre-wrap;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar MetaContainer = styled(View)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n flex-direction: row;\\n\"])));\nvar MetaItem = styled(View)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8;\nvar generate = function (ids, props) {\n var testId = (props || {})[\"data-testid\"];\n var tags = __spreadArray(__spreadArray([], __read(ids), false), [testId], false).filter(Boolean).join(' ');\n return tags.length ? tags : undefined;\n};\nvar Header$1 = function (props) {\n var title = props.title,\n onDelete = props.onDelete;\n var renderToolbar = function () {\n if (onDelete) {\n return /*#__PURE__*/React.createElement(ToolbarButton, null, /*#__PURE__*/React.createElement(IconButton, {\n size: \"small\",\n icon: function () {\n return /*#__PURE__*/React.createElement(IconDelete, null);\n },\n label: \"Delete\",\n onClick: onDelete\n }));\n }\n return null;\n };\n return /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(HeaderTitle, null, /*#__PURE__*/React.createElement(Text, {\n ellipsis: true\n }, title)), /*#__PURE__*/React.createElement(HeaderToolbar, null, renderToolbar()));\n};\nvar AccountRow$1 = function (props) {\n var className = props.className,\n data = props.data,\n onDelete = props.onDelete;\n return /*#__PURE__*/React.createElement(AccountRow, {\n \"data-testid\": generate(['acin-control-row'], props),\n className: className,\n header: function () {\n return /*#__PURE__*/React.createElement(Header$1, {\n title: data.name,\n onDelete: onDelete\n });\n }\n });\n};\nvar AccountRow$2 = styled(AccountRow$1)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1;\nvar AccountTypeahead = styled(View)(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\"], [\"\"])));\nvar SearchSuggestion = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Info = styled(View)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar Hint = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n padding: \", \";\\n\"], [\"\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n});\nvar templateObject_1$2, templateObject_2$1, templateObject_3$1, templateObject_4$1;\nvar SearchSuggestion$1 = function (_a) {\n var item = _a.item;\n return /*#__PURE__*/React.createElement(SearchSuggestion, {\n \"data-testid\": \"account-typeahead__suggestion\"\n }, /*#__PURE__*/React.createElement(Heading, null, item.name));\n};\nvar AccountSuggestionFragmentDoc = gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n fragment AccountSuggestion on Account {\\n id\\n name\\n}\\n \"], [\"\\n fragment AccountSuggestion on Account {\\n id\\n name\\n}\\n \"])));\nvar templateObject_1$3;\nvar SearchAccountDocument = gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\\n query searchAccount($input: SearchAccountsInput) {\\n searchAccounts(input: $input) {\\n nodes {\\n ...AccountSuggestion\\n }\\n }\\n}\\n \", \"\"], [\"\\n query searchAccount($input: SearchAccountsInput) {\\n searchAccounts(input: $input) {\\n nodes {\\n ...AccountSuggestion\\n }\\n }\\n}\\n \", \"\"])), AccountSuggestionFragmentDoc);\nfunction useSearchAccountLazyQuery(baseOptions) {\n return useLazyQuery(SearchAccountDocument, baseOptions);\n}\nvar templateObject_1$4;\nvar AccountTypeahead$1 = function (props) {\n var onSelect = props.onSelect,\n filters = props.filters,\n disabled = props.disabled,\n _a = props.ignoreIds,\n ignoreIds = _a === void 0 ? [] : _a;\n var _b = __read(useSearchAccountLazyQuery({\n fetchPolicy: 'cache-and-network'\n }), 2),\n getData = _b[0],\n data = _b[1].data;\n var renderSuggestion = function (suggestion) {\n return /*#__PURE__*/React.createElement(SearchSuggestion$1, {\n item: suggestion\n });\n };\n var onChange = debounce(function (term) {\n getData({\n variables: {\n input: __assign({\n term: term\n }, filters)\n }\n });\n }, 500);\n var getItems = function () {\n var res = [];\n if (data === null || data === void 0 ? void 0 : data.searchAccounts) {\n res = data === null || data === void 0 ? void 0 : data.searchAccounts.nodes.map(function (item) {\n return __assign(__assign({}, item), {\n label: item.name\n });\n }).filter(function (item) {\n return !(ignoreIds === null || ignoreIds === void 0 ? void 0 : ignoreIds.includes(item.id));\n });\n }\n return res;\n };\n var handleOnSelect = function (item) {\n onSelect([item]);\n };\n return /*#__PURE__*/React.createElement(AccountTypeahead, {\n \"data-testid\": generate(['account-typeahead'], props)\n }, /*#__PURE__*/React.createElement(Autosuggest, {\n remoteData: true,\n items: getItems(),\n renderSuggestion: renderSuggestion,\n onChange: onChange,\n onSelect: handleOnSelect,\n clearOnSelect: true,\n placeholder: \"Search for an Account\",\n disabled: disabled\n }));\n};\nvar AccountTypeahead$2 = styled(AccountTypeahead$1)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$5;\nvar GetUserAuthorizationDocument = gql(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\\n query getUserAuthorization {\\n getUserAuthorization {\\n permissions\\n }\\n }\\n\"], [\"\\n query getUserAuthorization {\\n getUserAuthorization {\\n permissions\\n }\\n }\\n\"])));\nfunction useGetUserAuthorizationLazyQuery(baseOptions) {\n return useLazyQuery(GetUserAuthorizationDocument, baseOptions);\n}\nvar templateObject_1$6;\nvar combinePermissions = function (permissionFromToken, globalUserPermissions) {\n if (permissionFromToken && globalUserPermissions) {\n return __spreadArray(__spreadArray([], __read(permissionFromToken), false), __read(globalUserPermissions), false);\n } else if (permissionFromToken) {\n return permissionFromToken;\n } else if (globalUserPermissions) {\n return globalUserPermissions;\n }\n return [];\n};\nvar defaultContext = {\n loading: false,\n isAuthenticated: false,\n user: undefined,\n login: function () {},\n logout: function () {},\n accessToken: null,\n checkPermission: function () {\n return false;\n },\n hasRole: function () {\n return false;\n }\n};\nvar AuthContext = /*#__PURE__*/React.createContext(defaultContext);\nvar useAuth = function () {\n return React.useContext(AuthContext);\n};\nvar AuthProvider = function (props) {\n var children = props.children,\n authClient = props.authClient,\n onAuthenticated = props.onAuthenticated,\n onLogout = props.onLogout,\n _a = props.originUrlKey,\n originUrlKey = _a === void 0 ? '' : _a;\n var _b = __read(React.useState(null), 2),\n accessToken = _b[0],\n setAccessToken = _b[1];\n var _c = __read(React.useState(), 2),\n user = _c[0],\n setUser = _c[1];\n var _d = __read(React.useState(false), 2),\n isAuthenticated = _d[0],\n setIsAuthenticated = _d[1];\n var _e = __read(React.useState(true), 2),\n loading = _e[0],\n setLoading = _e[1];\n var _f = __read(useGetUserAuthorizationLazyQuery({\n onCompleted: function (data) {\n var _a;\n if (!user) return;\n setUser(__assign(__assign({}, user), {\n permissions: combinePermissions(user === null || user === void 0 ? void 0 : user.permissions, (_a = data.getUserAuthorization) === null || _a === void 0 ? void 0 : _a.permissions)\n }));\n }\n }), 1),\n getUserAuthorizationQuery = _f[0];\n React.useEffect(function () {\n if (accessToken) {\n getUserAuthorizationQuery();\n }\n }, [accessToken, getUserAuthorizationQuery]);\n React.useEffect(function () {\n var initAuth0 = function () {\n return __awaiter(void 0, void 0, void 0, function () {\n var originUrl, checkIsAuthenticated, user_1, token, decoded, permissions, userMetadata, preferences;\n var _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!(window.location.search.includes('code=') && window.location.search.includes('state='))) return [3\n /*break*/, 2];\n return [4\n /*yield*/, authClient.handleRedirectCallback()];\n case 1:\n _e.sent();\n originUrl = window.localStorage.getItem(originUrlKey);\n history.push(originUrl || '/');\n window.localStorage.removeItem(originUrlKey);\n _e.label = 2;\n case 2:\n return [4\n /*yield*/, authClient === null || authClient === void 0 ? void 0 : authClient.isAuthenticated()];\n case 3:\n checkIsAuthenticated = _e.sent();\n setIsAuthenticated(checkIsAuthenticated);\n if (!checkIsAuthenticated) return [3\n /*break*/, 6];\n return [4\n /*yield*/, authClient.getUser()];\n case 4:\n user_1 = _e.sent();\n return [4\n /*yield*/, authClient.getTokenSilently()];\n case 5:\n token = _e.sent();\n decoded = decode(token);\n permissions = decoded === null || decoded === void 0 ? void 0 : decoded.permissions;\n userMetadata = (_a = decoded === null || decoded === void 0 ? void 0 : decoded[\"https://acin.com/user_authorization\"]) === null || _a === void 0 ? void 0 : _a.user_metadata;\n preferences = decoded === null || decoded === void 0 ? void 0 : decoded.preferences;\n setAccessToken(token);\n setUser({\n id: user_1.sub,\n name: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.name) || user_1.name || '',\n email: user_1.email,\n avatar: user_1.picture,\n accountCode: (_b = userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.account) === null || _b === void 0 ? void 0 : _b.code,\n accountName: (_c = userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.account) === null || _c === void 0 ? void 0 : _c.accountName,\n totalInventories: ((_d = userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.account) === null || _d === void 0 ? void 0 : _d.totalInventories) || 0,\n permissions: permissions,\n preferences: preferences,\n roles: (decoded === null || decoded === void 0 ? void 0 : decoded[\"https://acin.com/roles\"]) || [],\n firstName: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.firstName) || '',\n lastName: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.lastName) || ''\n });\n onAuthenticated === null || onAuthenticated === void 0 ? void 0 : onAuthenticated(user_1, userMetadata);\n _e.label = 6;\n case 6:\n setLoading(false);\n return [2\n /*return*/];\n }\n });\n });\n };\n initAuth0();\n }, [authClient, getUserAuthorizationQuery, onAuthenticated, originUrlKey]);\n var checkRoleAccess = React.useCallback(function (roles) {\n return roles.some(function (item) {\n var _a;\n return (_a = user === null || user === void 0 ? void 0 : user.roles) === null || _a === void 0 ? void 0 : _a.includes(item);\n });\n }, [user]);\n var logout = function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n onLogout === null || onLogout === void 0 ? void 0 : onLogout();\n authClient.logout.apply(authClient, __spreadArray([], __read(p), false));\n };\n return /*#__PURE__*/React.createElement(AuthContext.Provider, {\n value: {\n loading: loading,\n isAuthenticated: isAuthenticated,\n user: user,\n login: function () {\n var p = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n p[_i] = arguments[_i];\n }\n return authClient && authClient.loginWithRedirect.apply(authClient, __spreadArray([], __read(p), false));\n },\n logout: logout,\n accessToken: accessToken,\n checkPermission: function (scope) {\n var _a;\n return ((_a = user === null || user === void 0 ? void 0 : user.permissions) === null || _a === void 0 ? void 0 : _a.includes(scope)) || false;\n },\n hasRole: function (roles) {\n return checkRoleAccess(roles) || false;\n }\n }\n }, children);\n};\nvar AuthProvider$1 = AuthProvider;\nvar AuthContext$1 = AuthContext;\nvar useAuth$1 = useAuth;\nexport { AccountRow$2 as AccountRow, AccountTypeahead$2 as AccountTypeahead, AuthContext$1 as AuthContext, AuthProvider$1 as AuthProvider, USER_ROLES, checkIsAuthor, useAuth$1 as useAuth };","/*! For license information please see react-carousel.js.LICENSE.txt */\n!function (t, e) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = e(require(\"react\"), require(\"react-dom\")) : \"function\" == typeof define && define.amd ? define(\"react-carousel\", [\"react\", \"react-dom\"], e) : \"object\" == typeof exports ? exports[\"react-carousel\"] = e(require(\"react\"), require(\"react-dom\")) : t[\"react-carousel\"] = e(t.React, t.ReactDOM);\n}(this, function (t, e) {\n return function (t) {\n var e = {};\n function n(r) {\n if (e[r]) return e[r].exports;\n var o = e[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return t[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports;\n }\n return n.m = t, n.c = e, n.d = function (t, e, r) {\n n.o(t, e) || Object.defineProperty(t, e, {\n enumerable: !0,\n get: r\n });\n }, n.r = function (t) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n }, n.t = function (t, e) {\n if (1 & e && (t = n(t)), 8 & e) return t;\n if (4 & e && \"object\" == typeof t && t && t.__esModule) return t;\n var r = Object.create(null);\n if (n.r(r), Object.defineProperty(r, \"default\", {\n enumerable: !0,\n value: t\n }), 2 & e && \"string\" != typeof t) for (var o in t) n.d(r, o, function (e) {\n return t[e];\n }.bind(null, o));\n return r;\n }, n.n = function (t) {\n var e = t && t.__esModule ? function () {\n return t.default;\n } : function () {\n return t;\n };\n return n.d(e, \"a\", e), e;\n }, n.o = function (t, e) {\n return Object.prototype.hasOwnProperty.call(t, e);\n }, n.p = \"\", n(n.s = 237);\n }([function (e, n) {\n e.exports = t;\n }, function (t, e, n) {\n t.exports = n(176)();\n }, function (t, e, n) {\n var r = n(63),\n o = \"object\" == typeof self && self && self.Object === Object && self,\n a = r || o || Function(\"return this\")();\n t.exports = a;\n }, function (t, e) {\n var n = Array.isArray;\n t.exports = n;\n }, function (t, e) {\n t.exports = function (t) {\n var e = typeof t;\n return null != t && (\"object\" == e || \"function\" == e);\n };\n }, function (t, e, n) {\n var r;\n !function () {\n \"use strict\";\n\n var n = {}.hasOwnProperty;\n function o() {\n for (var t = [], e = 0; e < arguments.length; e++) {\n var r = arguments[e];\n if (r) {\n var a = typeof r;\n if (\"string\" === a || \"number\" === a) t.push(r);else if (Array.isArray(r) && r.length) {\n var i = o.apply(null, r);\n i && t.push(i);\n } else if (\"object\" === a) for (var u in r) n.call(r, u) && r[u] && t.push(u);\n }\n }\n return t.join(\" \");\n }\n t.exports ? (o.default = o, t.exports = o) : void 0 === (r = function () {\n return o;\n }.apply(e, [])) || (t.exports = r);\n }();\n }, function (t, e) {\n t.exports = function (t) {\n return null != t && \"object\" == typeof t;\n };\n }, function (t, e, n) {\n var r = n(117),\n o = n(122);\n t.exports = function (t, e) {\n var n = o(t, e);\n return r(n) ? n : void 0;\n };\n }, function (t, e, n) {\n var r = n(9),\n o = n(118),\n a = n(119),\n i = r ? r.toStringTag : void 0;\n t.exports = function (t) {\n return null == t ? void 0 === t ? \"[object Undefined]\" : \"[object Null]\" : i && i in Object(t) ? o(t) : a(t);\n };\n }, function (t, e, n) {\n var r = n(2).Symbol;\n t.exports = r;\n }, function (t, e) {\n t.exports = function (t) {\n return t;\n };\n }, function (t, n) {\n t.exports = e;\n }, function (t, e, n) {\n var r = n(66),\n o = n(67);\n t.exports = function (t, e, n, a) {\n var i = !n;\n n || (n = {});\n for (var u = -1, c = e.length; ++u < c;) {\n var s = e[u],\n l = a ? a(n[s], t[s], s, n, t) : void 0;\n void 0 === l && (l = t[s]), i ? o(n, s, l) : r(n, s, l);\n }\n return n;\n };\n }, function (t, e, n) {\n var r = n(69),\n o = n(139),\n a = n(14);\n t.exports = function (t) {\n return a(t) ? r(t) : o(t);\n };\n }, function (t, e, n) {\n var r = n(62),\n o = n(45);\n t.exports = function (t) {\n return null != t && o(t.length) && !r(t);\n };\n }, function (t, e, n) {\n var r = n(8),\n o = n(6);\n t.exports = function (t) {\n return \"symbol\" == typeof t || o(t) && \"[object Symbol]\" == r(t);\n };\n }, function (t, e, n) {\n var r = n(15);\n t.exports = function (t) {\n if (\"string\" == typeof t || r(t)) return t;\n var e = t + \"\";\n return \"0\" == e && 1 / t == -1 / 0 ? \"-0\" : e;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return null == t;\n };\n }, function (t, e, n) {\n var r = n(178)();\n t.exports = r;\n }, function (t, e, n) {\n var r = n(86),\n o = n(183),\n a = n(60),\n i = n(34),\n u = r(function (t, e, n) {\n var r = 1;\n if (n.length) {\n var c = i(n, a(u));\n r |= 32;\n }\n return o(t, r, e, n, c);\n });\n u.placeholder = {}, t.exports = u;\n }, function (t, e, n) {\n var r = n(107),\n o = n(108),\n a = n(109),\n i = n(110),\n u = n(111);\n function c(t) {\n var e = -1,\n n = null == t ? 0 : t.length;\n for (this.clear(); ++e < n;) {\n var r = t[e];\n this.set(r[0], r[1]);\n }\n }\n c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = a, c.prototype.has = i, c.prototype.set = u, t.exports = c;\n }, function (t, e, n) {\n var r = n(22);\n t.exports = function (t, e) {\n for (var n = t.length; n--;) if (r(t[n][0], e)) return n;\n return -1;\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n return t === e || t != t && e != e;\n };\n }, function (t, e, n) {\n var r = n(7)(Object, \"create\");\n t.exports = r;\n }, function (t, e, n) {\n var r = n(131);\n t.exports = function (t, e) {\n var n = t.__data__;\n return r(e) ? n[\"string\" == typeof e ? \"string\" : \"hash\"] : n.map;\n };\n }, function (t, e) {\n var n = /^(?:0|[1-9]\\d*)$/;\n t.exports = function (t, e) {\n var r = typeof t;\n return !!(e = null == e ? 9007199254740991 : e) && (\"number\" == r || \"symbol\" != r && n.test(t)) && t > -1 && t % 1 == 0 && t < e;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return function (e) {\n return t(e);\n };\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n var n = -1,\n r = t.length;\n for (e || (e = Array(r)); ++n < r;) e[n] = t[n];\n return e;\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = e.length, o = t.length; ++n < r;) t[o + n] = e[n];\n return t;\n };\n }, function (t, e, n) {\n var r = n(148),\n o = n(39),\n a = n(149),\n i = n(150),\n u = n(78),\n c = n(8),\n s = n(64),\n l = s(r),\n f = s(o),\n p = s(a),\n d = s(i),\n h = s(u),\n v = c;\n (r && \"[object DataView]\" != v(new r(new ArrayBuffer(1))) || o && \"[object Map]\" != v(new o()) || a && \"[object Promise]\" != v(a.resolve()) || i && \"[object Set]\" != v(new i()) || u && \"[object WeakMap]\" != v(new u())) && (v = function (t) {\n var e = c(t),\n n = \"[object Object]\" == e ? t.constructor : void 0,\n r = n ? s(n) : \"\";\n if (r) switch (r) {\n case l:\n return \"[object DataView]\";\n case f:\n return \"[object Map]\";\n case p:\n return \"[object Promise]\";\n case d:\n return \"[object Set]\";\n case h:\n return \"[object WeakMap]\";\n }\n return e;\n }), t.exports = v;\n }, function (t, e, n) {\n var r = n(4),\n o = Object.create,\n a = function () {\n function t() {}\n return function (e) {\n if (!r(e)) return {};\n if (o) return o(e);\n t.prototype = e;\n var n = new t();\n return t.prototype = void 0, n;\n };\n }();\n t.exports = a;\n }, function (t, e, n) {\n var r = n(3),\n o = n(52),\n a = n(163),\n i = n(166);\n t.exports = function (t, e) {\n return r(t) ? t : o(t, e) ? [t] : a(i(t));\n };\n }, function (t, e, n) {\n var r = n(31),\n o = n(16);\n t.exports = function (t, e) {\n for (var n = 0, a = (e = r(e, t)).length; null != t && n < a;) t = t[o(e[n++])];\n return n && n == a ? t : void 0;\n };\n }, function (t, e, n) {\n var r = n(30),\n o = n(4);\n t.exports = function (t) {\n return function () {\n var e = arguments;\n switch (e.length) {\n case 0:\n return new t();\n case 1:\n return new t(e[0]);\n case 2:\n return new t(e[0], e[1]);\n case 3:\n return new t(e[0], e[1], e[2]);\n case 4:\n return new t(e[0], e[1], e[2], e[3]);\n case 5:\n return new t(e[0], e[1], e[2], e[3], e[4]);\n case 6:\n return new t(e[0], e[1], e[2], e[3], e[4], e[5]);\n case 7:\n return new t(e[0], e[1], e[2], e[3], e[4], e[5], e[6]);\n }\n var n = r(t.prototype),\n a = t.apply(n, e);\n return o(a) ? a : n;\n };\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = t.length, o = 0, a = []; ++n < r;) {\n var i = t[n];\n i !== e && \"__lodash_placeholder__\" !== i || (t[n] = \"__lodash_placeholder__\", a[o++] = n);\n }\n return a;\n };\n }, function (t, e, n) {\n var r = n(53);\n t.exports = function (t) {\n return null != t && t.length ? r(t, 1) : [];\n };\n }, function (t, e, n) {\n \"use strict\";\n\n (function (t) {\n var n = function () {\n if (\"undefined\" != typeof Map) return Map;\n function t(t, e) {\n var n = -1;\n return t.some(function (t, r) {\n return t[0] === e && (n = r, !0);\n }), n;\n }\n return function () {\n function e() {\n this.__entries__ = [];\n }\n return Object.defineProperty(e.prototype, \"size\", {\n get: function () {\n return this.__entries__.length;\n },\n enumerable: !0,\n configurable: !0\n }), e.prototype.get = function (e) {\n var n = t(this.__entries__, e),\n r = this.__entries__[n];\n return r && r[1];\n }, e.prototype.set = function (e, n) {\n var r = t(this.__entries__, e);\n ~r ? this.__entries__[r][1] = n : this.__entries__.push([e, n]);\n }, e.prototype.delete = function (e) {\n var n = this.__entries__,\n r = t(n, e);\n ~r && n.splice(r, 1);\n }, e.prototype.has = function (e) {\n return !!~t(this.__entries__, e);\n }, e.prototype.clear = function () {\n this.__entries__.splice(0);\n }, e.prototype.forEach = function (t, e) {\n void 0 === e && (e = null);\n for (var n = 0, r = this.__entries__; n < r.length; n++) {\n var o = r[n];\n t.call(e, o[1], o[0]);\n }\n }, e;\n }();\n }(),\n r = \"undefined\" != typeof window && \"undefined\" != typeof document && window.document === document,\n o = void 0 !== t && t.Math === Math ? t : \"undefined\" != typeof self && self.Math === Math ? self : \"undefined\" != typeof window && window.Math === Math ? window : Function(\"return this\")(),\n a = \"function\" == typeof requestAnimationFrame ? requestAnimationFrame.bind(o) : function (t) {\n return setTimeout(function () {\n return t(Date.now());\n }, 1e3 / 60);\n },\n i = [\"top\", \"right\", \"bottom\", \"left\", \"width\", \"height\", \"size\", \"weight\"],\n u = \"undefined\" != typeof MutationObserver,\n c = function () {\n function t() {\n this.connected_ = !1, this.mutationEventsAdded_ = !1, this.mutationsObserver_ = null, this.observers_ = [], this.onTransitionEnd_ = this.onTransitionEnd_.bind(this), this.refresh = function (t, e) {\n var n = !1,\n r = !1,\n o = 0;\n function i() {\n n && (n = !1, t()), r && c();\n }\n function u() {\n a(i);\n }\n function c() {\n var t = Date.now();\n if (n) {\n if (t - o < 2) return;\n r = !0;\n } else n = !0, r = !1, setTimeout(u, 20);\n o = t;\n }\n return c;\n }(this.refresh.bind(this));\n }\n return t.prototype.addObserver = function (t) {\n ~this.observers_.indexOf(t) || this.observers_.push(t), this.connected_ || this.connect_();\n }, t.prototype.removeObserver = function (t) {\n var e = this.observers_,\n n = e.indexOf(t);\n ~n && e.splice(n, 1), !e.length && this.connected_ && this.disconnect_();\n }, t.prototype.refresh = function () {\n this.updateObservers_() && this.refresh();\n }, t.prototype.updateObservers_ = function () {\n var t = this.observers_.filter(function (t) {\n return t.gatherActive(), t.hasActive();\n });\n return t.forEach(function (t) {\n return t.broadcastActive();\n }), t.length > 0;\n }, t.prototype.connect_ = function () {\n r && !this.connected_ && (document.addEventListener(\"transitionend\", this.onTransitionEnd_), window.addEventListener(\"resize\", this.refresh), u ? (this.mutationsObserver_ = new MutationObserver(this.refresh), this.mutationsObserver_.observe(document, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n })) : (document.addEventListener(\"DOMSubtreeModified\", this.refresh), this.mutationEventsAdded_ = !0), this.connected_ = !0);\n }, t.prototype.disconnect_ = function () {\n r && this.connected_ && (document.removeEventListener(\"transitionend\", this.onTransitionEnd_), window.removeEventListener(\"resize\", this.refresh), this.mutationsObserver_ && this.mutationsObserver_.disconnect(), this.mutationEventsAdded_ && document.removeEventListener(\"DOMSubtreeModified\", this.refresh), this.mutationsObserver_ = null, this.mutationEventsAdded_ = !1, this.connected_ = !1);\n }, t.prototype.onTransitionEnd_ = function (t) {\n var e = t.propertyName,\n n = void 0 === e ? \"\" : e;\n i.some(function (t) {\n return !!~n.indexOf(t);\n }) && this.refresh();\n }, t.getInstance = function () {\n return this.instance_ || (this.instance_ = new t()), this.instance_;\n }, t.instance_ = null, t;\n }(),\n s = function (t, e) {\n for (var n = 0, r = Object.keys(e); n < r.length; n++) {\n var o = r[n];\n Object.defineProperty(t, o, {\n value: e[o],\n enumerable: !1,\n writable: !1,\n configurable: !0\n });\n }\n return t;\n },\n l = function (t) {\n return t && t.ownerDocument && t.ownerDocument.defaultView || o;\n },\n f = b(0, 0, 0, 0);\n function p(t) {\n return parseFloat(t) || 0;\n }\n function d(t) {\n for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];\n return e.reduce(function (e, n) {\n return e + p(t[\"border-\" + n + \"-width\"]);\n }, 0);\n }\n var h = \"undefined\" != typeof SVGGraphicsElement ? function (t) {\n return t instanceof l(t).SVGGraphicsElement;\n } : function (t) {\n return t instanceof l(t).SVGElement && \"function\" == typeof t.getBBox;\n };\n function v(t) {\n return r ? h(t) ? function (t) {\n var e = t.getBBox();\n return b(0, 0, e.width, e.height);\n }(t) : function (t) {\n var e = t.clientWidth,\n n = t.clientHeight;\n if (!e && !n) return f;\n var r = l(t).getComputedStyle(t),\n o = function (t) {\n for (var e = {}, n = 0, r = [\"top\", \"right\", \"bottom\", \"left\"]; n < r.length; n++) {\n var o = r[n],\n a = t[\"padding-\" + o];\n e[o] = p(a);\n }\n return e;\n }(r),\n a = o.left + o.right,\n i = o.top + o.bottom,\n u = p(r.width),\n c = p(r.height);\n if (\"border-box\" === r.boxSizing && (Math.round(u + a) !== e && (u -= d(r, \"left\", \"right\") + a), Math.round(c + i) !== n && (c -= d(r, \"top\", \"bottom\") + i)), !function (t) {\n return t === l(t).document.documentElement;\n }(t)) {\n var s = Math.round(u + a) - e,\n h = Math.round(c + i) - n;\n 1 !== Math.abs(s) && (u -= s), 1 !== Math.abs(h) && (c -= h);\n }\n return b(o.left, o.top, u, c);\n }(t) : f;\n }\n function b(t, e, n, r) {\n return {\n x: t,\n y: e,\n width: n,\n height: r\n };\n }\n var y = function () {\n function t(t) {\n this.broadcastWidth = 0, this.broadcastHeight = 0, this.contentRect_ = b(0, 0, 0, 0), this.target = t;\n }\n return t.prototype.isActive = function () {\n var t = v(this.target);\n return this.contentRect_ = t, t.width !== this.broadcastWidth || t.height !== this.broadcastHeight;\n }, t.prototype.broadcastRect = function () {\n var t = this.contentRect_;\n return this.broadcastWidth = t.width, this.broadcastHeight = t.height, t;\n }, t;\n }(),\n g = function (t, e) {\n var n,\n r,\n o,\n a,\n i,\n u,\n c,\n l = (r = (n = e).x, o = n.y, a = n.width, i = n.height, u = \"undefined\" != typeof DOMRectReadOnly ? DOMRectReadOnly : Object, c = Object.create(u.prototype), s(c, {\n x: r,\n y: o,\n width: a,\n height: i,\n top: o,\n right: r + a,\n bottom: i + o,\n left: r\n }), c);\n s(this, {\n target: t,\n contentRect: l\n });\n },\n m = function () {\n function t(t, e, r) {\n if (this.activeObservations_ = [], this.observations_ = new n(), \"function\" != typeof t) throw new TypeError(\"The callback provided as parameter 1 is not a function.\");\n this.callback_ = t, this.controller_ = e, this.callbackCtx_ = r;\n }\n return t.prototype.observe = function (t) {\n if (!arguments.length) throw new TypeError(\"1 argument required, but only 0 present.\");\n if (\"undefined\" != typeof Element && Element instanceof Object) {\n if (!(t instanceof l(t).Element)) throw new TypeError('parameter 1 is not of type \"Element\".');\n var e = this.observations_;\n e.has(t) || (e.set(t, new y(t)), this.controller_.addObserver(this), this.controller_.refresh());\n }\n }, t.prototype.unobserve = function (t) {\n if (!arguments.length) throw new TypeError(\"1 argument required, but only 0 present.\");\n if (\"undefined\" != typeof Element && Element instanceof Object) {\n if (!(t instanceof l(t).Element)) throw new TypeError('parameter 1 is not of type \"Element\".');\n var e = this.observations_;\n e.has(t) && (e.delete(t), e.size || this.controller_.removeObserver(this));\n }\n }, t.prototype.disconnect = function () {\n this.clearActive(), this.observations_.clear(), this.controller_.removeObserver(this);\n }, t.prototype.gatherActive = function () {\n var t = this;\n this.clearActive(), this.observations_.forEach(function (e) {\n e.isActive() && t.activeObservations_.push(e);\n });\n }, t.prototype.broadcastActive = function () {\n if (this.hasActive()) {\n var t = this.callbackCtx_,\n e = this.activeObservations_.map(function (t) {\n return new g(t.target, t.broadcastRect());\n });\n this.callback_.call(t, e, t), this.clearActive();\n }\n }, t.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n }, t.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n }, t;\n }(),\n _ = \"undefined\" != typeof WeakMap ? new WeakMap() : new n(),\n w = function t(e) {\n if (!(this instanceof t)) throw new TypeError(\"Cannot call a class as a function.\");\n if (!arguments.length) throw new TypeError(\"1 argument required, but only 0 present.\");\n var n = c.getInstance(),\n r = new m(e, n, this);\n _.set(this, r);\n };\n [\"observe\", \"unobserve\", \"disconnect\"].forEach(function (t) {\n w.prototype[t] = function () {\n var e;\n return (e = _.get(this))[t].apply(e, arguments);\n };\n });\n var O = void 0 !== o.ResizeObserver ? o.ResizeObserver : w;\n e.a = O;\n }).call(this, n(40));\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = null == t ? 0 : t.length, o = Array(r); ++n < r;) o[n] = e(t[n], n, t);\n return o;\n };\n }, function (t, e, n) {\n var r = n(20),\n o = n(112),\n a = n(113),\n i = n(114),\n u = n(115),\n c = n(116);\n function s(t) {\n var e = this.__data__ = new r(t);\n this.size = e.size;\n }\n s.prototype.clear = o, s.prototype.delete = a, s.prototype.get = i, s.prototype.has = u, s.prototype.set = c, t.exports = s;\n }, function (t, e, n) {\n var r = n(7)(n(2), \"Map\");\n t.exports = r;\n }, function (t, e) {\n var n;\n n = function () {\n return this;\n }();\n try {\n n = n || new Function(\"return this\")();\n } catch (t) {\n \"object\" == typeof window && (n = window);\n }\n t.exports = n;\n }, function (t, e, n) {\n var r = n(123),\n o = n(130),\n a = n(132),\n i = n(133),\n u = n(134);\n function c(t) {\n var e = -1,\n n = null == t ? 0 : t.length;\n for (this.clear(); ++e < n;) {\n var r = t[e];\n this.set(r[0], r[1]);\n }\n }\n c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = a, c.prototype.has = i, c.prototype.set = u, t.exports = c;\n }, function (t, e, n) {\n var r = n(136),\n o = n(6),\n a = Object.prototype,\n i = a.hasOwnProperty,\n u = a.propertyIsEnumerable,\n c = r(function () {\n return arguments;\n }()) ? r : function (t) {\n return o(t) && i.call(t, \"callee\") && !u.call(t, \"callee\");\n };\n t.exports = c;\n }, function (t, e, n) {\n (function (t) {\n var r = n(2),\n o = n(137),\n a = e && !e.nodeType && e,\n i = a && \"object\" == typeof t && t && !t.nodeType && t,\n u = i && i.exports === a ? r.Buffer : void 0,\n c = (u ? u.isBuffer : void 0) || o;\n t.exports = c;\n }).call(this, n(44)(t));\n }, function (t, e) {\n t.exports = function (t) {\n return t.webpackPolyfill || (t.deprecate = function () {}, t.paths = [], t.children || (t.children = []), Object.defineProperty(t, \"loaded\", {\n enumerable: !0,\n get: function () {\n return t.l;\n }\n }), Object.defineProperty(t, \"id\", {\n enumerable: !0,\n get: function () {\n return t.i;\n }\n }), t.webpackPolyfill = 1), t;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return \"number\" == typeof t && t > -1 && t % 1 == 0 && t <= 9007199254740991;\n };\n }, function (t, e, n) {\n (function (t) {\n var r = n(63),\n o = e && !e.nodeType && e,\n a = o && \"object\" == typeof t && t && !t.nodeType && t,\n i = a && a.exports === o && r.process,\n u = function () {\n try {\n return a && a.require && a.require(\"util\").types || i && i.binding && i.binding(\"util\");\n } catch (t) {}\n }();\n t.exports = u;\n }).call(this, n(44)(t));\n }, function (t, e) {\n var n = Object.prototype;\n t.exports = function (t) {\n var e = t && t.constructor;\n return t === (\"function\" == typeof e && e.prototype || n);\n };\n }, function (t, e, n) {\n var r = n(69),\n o = n(142),\n a = n(14);\n t.exports = function (t) {\n return a(t) ? r(t, !0) : o(t);\n };\n }, function (t, e, n) {\n var r = n(146),\n o = n(73),\n a = Object.prototype.propertyIsEnumerable,\n i = Object.getOwnPropertySymbols,\n u = i ? function (t) {\n return null == t ? [] : (t = Object(t), r(i(t), function (e) {\n return a.call(t, e);\n }));\n } : o;\n t.exports = u;\n }, function (t, e, n) {\n var r = n(72)(Object.getPrototypeOf, Object);\n t.exports = r;\n }, function (t, e, n) {\n var r = n(79);\n t.exports = function (t) {\n var e = new t.constructor(t.byteLength);\n return new r(e).set(new r(t)), e;\n };\n }, function (t, e, n) {\n var r = n(3),\n o = n(15),\n a = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n i = /^\\w*$/;\n t.exports = function (t, e) {\n if (r(t)) return !1;\n var n = typeof t;\n return !(\"number\" != n && \"symbol\" != n && \"boolean\" != n && null != t && !o(t)) || i.test(t) || !a.test(t) || null != e && t in Object(e);\n };\n }, function (t, e, n) {\n var r = n(28),\n o = n(173);\n t.exports = function t(e, n, a, i, u) {\n var c = -1,\n s = e.length;\n for (a || (a = o), u || (u = []); ++c < s;) {\n var l = e[c];\n n > 0 && a(l) ? n > 1 ? t(l, n - 1, a, i, u) : r(u, l) : i || (u[u.length] = l);\n }\n return u;\n };\n }, function (t, e) {\n t.exports = function (t, e, n) {\n switch (n.length) {\n case 0:\n return t.call(e);\n case 1:\n return t.call(e, n[0]);\n case 2:\n return t.call(e, n[0], n[1]);\n case 3:\n return t.call(e, n[0], n[1], n[2]);\n }\n return t.apply(e, n);\n };\n }, function (t, e, n) {\n var r = n(174),\n o = n(82)(r);\n t.exports = o;\n }, function (t, e, n) {\n var r = n(30),\n o = n(57);\n function a(t, e) {\n this.__wrapped__ = t, this.__actions__ = [], this.__chain__ = !!e, this.__index__ = 0, this.__values__ = void 0;\n }\n a.prototype = r(o.prototype), a.prototype.constructor = a, t.exports = a;\n }, function (t, e) {\n t.exports = function () {};\n }, function (t, e, n) {\n var r = n(83),\n o = n(179),\n a = r ? function (t) {\n return r.get(t);\n } : o;\n t.exports = a;\n }, function (t, e, n) {\n var r = n(30),\n o = n(57);\n function a(t) {\n this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = 4294967295, this.__views__ = [];\n }\n a.prototype = r(o.prototype), a.prototype.constructor = a, t.exports = a;\n }, function (t, e) {\n t.exports = function (t) {\n return t.placeholder;\n };\n }, function (t, e, n) {\n var r = n(70),\n o = n(236),\n a = n(94),\n i = Math.min;\n t.exports = function (t, e) {\n if ((t = a(t)) < 1 || t > 9007199254740991) return [];\n var n = 4294967295,\n u = i(t, 4294967295);\n e = o(e), t -= 4294967295;\n for (var c = r(u, e); ++n < t;) e(n);\n return c;\n };\n }, function (t, e, n) {\n var r = n(8),\n o = n(4);\n t.exports = function (t) {\n if (!o(t)) return !1;\n var e = r(t);\n return \"[object Function]\" == e || \"[object GeneratorFunction]\" == e || \"[object AsyncFunction]\" == e || \"[object Proxy]\" == e;\n };\n }, function (t, e, n) {\n (function (e) {\n var n = \"object\" == typeof e && e && e.Object === Object && e;\n t.exports = n;\n }).call(this, n(40));\n }, function (t, e) {\n var n = Function.prototype.toString;\n t.exports = function (t) {\n if (null != t) {\n try {\n return n.call(t);\n } catch (t) {}\n try {\n return t + \"\";\n } catch (t) {}\n }\n return \"\";\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = null == t ? 0 : t.length; ++n < r && !1 !== e(t[n], n, t););\n return t;\n };\n }, function (t, e, n) {\n var r = n(67),\n o = n(22),\n a = Object.prototype.hasOwnProperty;\n t.exports = function (t, e, n) {\n var i = t[e];\n a.call(t, e) && o(i, n) && (void 0 !== n || e in t) || r(t, e, n);\n };\n }, function (t, e, n) {\n var r = n(68);\n t.exports = function (t, e, n) {\n \"__proto__\" == e && r ? r(t, e, {\n configurable: !0,\n enumerable: !0,\n value: n,\n writable: !0\n }) : t[e] = n;\n };\n }, function (t, e, n) {\n var r = n(7),\n o = function () {\n try {\n var t = r(Object, \"defineProperty\");\n return t({}, \"\", {}), t;\n } catch (t) {}\n }();\n t.exports = o;\n }, function (t, e, n) {\n var r = n(70),\n o = n(42),\n a = n(3),\n i = n(43),\n u = n(25),\n c = n(71),\n s = Object.prototype.hasOwnProperty;\n t.exports = function (t, e) {\n var n = a(t),\n l = !n && o(t),\n f = !n && !l && i(t),\n p = !n && !l && !f && c(t),\n d = n || l || f || p,\n h = d ? r(t.length, String) : [],\n v = h.length;\n for (var b in t) !e && !s.call(t, b) || d && (\"length\" == b || f && (\"offset\" == b || \"parent\" == b) || p && (\"buffer\" == b || \"byteLength\" == b || \"byteOffset\" == b) || u(b, v)) || h.push(b);\n return h;\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = Array(t); ++n < t;) r[n] = e(n);\n return r;\n };\n }, function (t, e, n) {\n var r = n(138),\n o = n(26),\n a = n(46),\n i = a && a.isTypedArray,\n u = i ? o(i) : r;\n t.exports = u;\n }, function (t, e) {\n t.exports = function (t, e) {\n return function (n) {\n return t(e(n));\n };\n };\n }, function (t, e) {\n t.exports = function () {\n return [];\n };\n }, function (t, e, n) {\n var r = n(28),\n o = n(50),\n a = n(49),\n i = n(73),\n u = Object.getOwnPropertySymbols ? function (t) {\n for (var e = []; t;) r(e, a(t)), t = o(t);\n return e;\n } : i;\n t.exports = u;\n }, function (t, e, n) {\n var r = n(76),\n o = n(49),\n a = n(13);\n t.exports = function (t) {\n return r(t, a, o);\n };\n }, function (t, e, n) {\n var r = n(28),\n o = n(3);\n t.exports = function (t, e, n) {\n var a = e(t);\n return o(t) ? a : r(a, n(t));\n };\n }, function (t, e, n) {\n var r = n(76),\n o = n(74),\n a = n(48);\n t.exports = function (t) {\n return r(t, a, o);\n };\n }, function (t, e, n) {\n var r = n(7)(n(2), \"WeakMap\");\n t.exports = r;\n }, function (t, e, n) {\n var r = n(2).Uint8Array;\n t.exports = r;\n }, function (t, e, n) {\n var r = n(35),\n o = n(81),\n a = n(55);\n t.exports = function (t) {\n return a(o(t, void 0, r), t + \"\");\n };\n }, function (t, e, n) {\n var r = n(54),\n o = Math.max;\n t.exports = function (t, e, n) {\n return e = o(void 0 === e ? t.length - 1 : e, 0), function () {\n for (var a = arguments, i = -1, u = o(a.length - e, 0), c = Array(u); ++i < u;) c[i] = a[e + i];\n i = -1;\n for (var s = Array(e + 1); ++i < e;) s[i] = a[i];\n return s[e] = n(c), r(t, this, s);\n };\n };\n }, function (t, e) {\n var n = Date.now;\n t.exports = function (t) {\n var e = 0,\n r = 0;\n return function () {\n var o = n(),\n a = 16 - (o - r);\n if (r = o, a > 0) {\n if (++e >= 800) return arguments[0];\n } else e = 0;\n return t.apply(void 0, arguments);\n };\n };\n }, function (t, e, n) {\n var r = n(78),\n o = r && new r();\n t.exports = o;\n }, function (t, e, n) {\n var r = n(180),\n o = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n for (var e = t.name + \"\", n = r[e], a = o.call(r, e) ? n.length : 0; a--;) {\n var i = n[a],\n u = i.func;\n if (null == u || u == t) return i.name;\n }\n return e;\n };\n }, function (t, e, n) {\n var r = n(59),\n o = n(58),\n a = n(84),\n i = n(181);\n t.exports = function (t) {\n var e = a(t),\n n = i[e];\n if (\"function\" != typeof n || !(e in r.prototype)) return !1;\n if (t === n) return !0;\n var u = o(n);\n return !!u && t === u[0];\n };\n }, function (t, e, n) {\n var r = n(10),\n o = n(81),\n a = n(55);\n t.exports = function (t, e) {\n return a(o(t, e, r), t + \"\");\n };\n }, function (t, e, n) {\n var r = n(10),\n o = n(83),\n a = o ? function (t, e) {\n return o.set(t, e), t;\n } : r;\n t.exports = a;\n }, function (t, e, n) {\n var r = n(89),\n o = n(90),\n a = n(186),\n i = n(33),\n u = n(91),\n c = n(60),\n s = n(195),\n l = n(34),\n f = n(2);\n t.exports = function t(e, n, p, d, h, v, b, y, g, m) {\n var _ = 128 & n,\n w = 1 & n,\n O = 2 & n,\n S = 24 & n,\n j = 512 & n,\n E = O ? void 0 : i(e);\n return function A() {\n for (var x = arguments.length, T = Array(x), R = x; R--;) T[R] = arguments[R];\n if (S) var P = c(A),\n k = a(T, P);\n if (d && (T = r(T, d, h, S)), v && (T = o(T, v, b, S)), x -= k, S && x < m) {\n var M = l(T, P);\n return u(e, n, t, A.placeholder, p, T, M, y, g, m - x);\n }\n var C = w ? p : this,\n N = O ? C[e] : e;\n return x = T.length, y ? T = s(T, y) : j && x > 1 && T.reverse(), _ && g < x && (T.length = g), this && this !== f && this instanceof A && (N = E || i(N)), N.apply(C, T);\n };\n };\n }, function (t, e) {\n var n = Math.max;\n t.exports = function (t, e, r, o) {\n for (var a = -1, i = t.length, u = r.length, c = -1, s = e.length, l = n(i - u, 0), f = Array(s + l), p = !o; ++c < s;) f[c] = e[c];\n for (; ++a < u;) (p || a < i) && (f[r[a]] = t[a]);\n for (; l--;) f[c++] = t[a++];\n return f;\n };\n }, function (t, e) {\n var n = Math.max;\n t.exports = function (t, e, r, o) {\n for (var a = -1, i = t.length, u = -1, c = r.length, s = -1, l = e.length, f = n(i - c, 0), p = Array(f + l), d = !o; ++a < f;) p[a] = t[a];\n for (var h = a; ++s < l;) p[h + s] = e[s];\n for (; ++u < c;) (d || a < i) && (p[h + r[u]] = t[a++]);\n return p;\n };\n }, function (t, e, n) {\n var r = n(85),\n o = n(92),\n a = n(93);\n t.exports = function (t, e, n, i, u, c, s, l, f, p) {\n var d = 8 & e;\n e |= d ? 32 : 64, 4 & (e &= ~(d ? 64 : 32)) || (e &= -4);\n var h = [t, e, u, d ? c : void 0, d ? s : void 0, d ? void 0 : c, d ? void 0 : s, l, f, p],\n v = n.apply(void 0, h);\n return r(t) && o(v, h), v.placeholder = i, a(v, t, e);\n };\n }, function (t, e, n) {\n var r = n(87),\n o = n(82)(r);\n t.exports = o;\n }, function (t, e, n) {\n var r = n(187),\n o = n(188),\n a = n(55),\n i = n(189);\n t.exports = function (t, e, n) {\n var u = e + \"\";\n return a(t, o(u, i(r(u), n)));\n };\n }, function (t, e, n) {\n var r = n(198);\n t.exports = function (t) {\n var e = r(t),\n n = e % 1;\n return e == e ? n ? e - n : e : 0;\n };\n }, function (t, e, n) {\n var r = n(199),\n o = n(4),\n a = n(15),\n i = /^[-+]0x[0-9a-f]+$/i,\n u = /^0b[01]+$/i,\n c = /^0o[0-7]+$/i,\n s = parseInt;\n t.exports = function (t) {\n if (\"number\" == typeof t) return t;\n if (a(t)) return NaN;\n if (o(t)) {\n var e = \"function\" == typeof t.valueOf ? t.valueOf() : t;\n t = o(e) ? e + \"\" : e;\n }\n if (\"string\" != typeof t) return 0 === t ? t : +t;\n t = r(t);\n var n = u.test(t);\n return n || c.test(t) ? s(t.slice(2), n ? 2 : 8) : i.test(t) ? NaN : +t;\n };\n }, function (t, e, n) {\n var r = n(207),\n o = n(6);\n t.exports = function t(e, n, a, i, u) {\n return e === n || (null == e || null == n || !o(e) && !o(n) ? e != e && n != n : r(e, n, a, i, t, u));\n };\n }, function (t, e, n) {\n var r = n(208),\n o = n(211),\n a = n(212);\n t.exports = function (t, e, n, i, u, c) {\n var s = 1 & n,\n l = t.length,\n f = e.length;\n if (l != f && !(s && f > l)) return !1;\n var p = c.get(t),\n d = c.get(e);\n if (p && d) return p == e && d == t;\n var h = -1,\n v = !0,\n b = 2 & n ? new r() : void 0;\n for (c.set(t, e), c.set(e, t); ++h < l;) {\n var y = t[h],\n g = e[h];\n if (i) var m = s ? i(g, y, h, e, t, c) : i(y, g, h, t, e, c);\n if (void 0 !== m) {\n if (m) continue;\n v = !1;\n break;\n }\n if (b) {\n if (!o(e, function (t, e) {\n if (!a(b, e) && (y === t || u(y, t, n, i, c))) return b.push(e);\n })) {\n v = !1;\n break;\n }\n } else if (y !== g && !u(y, g, n, i, c)) {\n v = !1;\n break;\n }\n }\n return c.delete(t), c.delete(e), v;\n };\n }, function (t, e, n) {\n var r = n(4);\n t.exports = function (t) {\n return t == t && !r(t);\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n return function (n) {\n return null != n && n[t] === e && (void 0 !== e || t in Object(n));\n };\n };\n }, function (t, e, n) {\n var r = n(37),\n o = n(106),\n a = n(162),\n i = n(31),\n u = n(12),\n c = n(171),\n s = n(80),\n l = n(77),\n f = s(function (t, e) {\n var n = {};\n if (null == t) return n;\n var s = !1;\n e = r(e, function (e) {\n return e = i(e, t), s || (s = e.length > 1), e;\n }), u(t, l(t), n), s && (n = o(n, 7, c));\n for (var f = e.length; f--;) a(n, e[f]);\n return n;\n });\n t.exports = f;\n }, function (t, e) {\n t.exports = function (t) {\n for (var e = -1, n = null == t ? 0 : t.length, r = 0, o = []; ++e < n;) {\n var a = t[e];\n a && (o[r++] = a);\n }\n return o;\n };\n }, function (t, e, n) {\n var r = n(201),\n o = n(4);\n t.exports = function (t, e, n) {\n var a = !0,\n i = !0;\n if (\"function\" != typeof t) throw new TypeError(\"Expected a function\");\n return o(n) && (a = \"leading\" in n ? !!n.leading : a, i = \"trailing\" in n ? !!n.trailing : i), r(t, e, {\n leading: a,\n maxWait: e,\n trailing: i\n });\n };\n }, function (t, e, n) {\n var r = n(53),\n o = n(203),\n a = n(86),\n i = n(235),\n u = a(function (t, e) {\n if (null == t) return [];\n var n = e.length;\n return n > 1 && i(t, e[0], e[1]) ? e = [] : n > 2 && i(e[0], e[1], e[2]) && (e = [e[0]]), o(t, r(e, 1), []);\n });\n t.exports = u;\n }, function (t, e, n) {\n var r = n(28),\n o = n(53),\n a = n(27),\n i = n(3);\n t.exports = function () {\n var t = arguments.length;\n if (!t) return [];\n for (var e = Array(t - 1), n = arguments[0], u = t; u--;) e[u - 1] = arguments[u];\n return r(i(n) ? a(n) : [n], o(e, 1));\n };\n }, function (t, e, n) {\n \"use strict\";\n\n (function (t) {\n var n = \"object\" == typeof t && t && t.Object === Object && t;\n e.a = n;\n }).call(this, n(40));\n }, function (t, e, n) {\n var r = n(38),\n o = n(65),\n a = n(66),\n i = n(135),\n u = n(141),\n c = n(144),\n s = n(27),\n l = n(145),\n f = n(147),\n p = n(75),\n d = n(77),\n h = n(29),\n v = n(151),\n b = n(152),\n y = n(157),\n g = n(3),\n m = n(43),\n _ = n(158),\n w = n(4),\n O = n(160),\n S = n(13),\n j = n(48),\n E = {};\n E[\"[object Arguments]\"] = E[\"[object Array]\"] = E[\"[object ArrayBuffer]\"] = E[\"[object DataView]\"] = E[\"[object Boolean]\"] = E[\"[object Date]\"] = E[\"[object Float32Array]\"] = E[\"[object Float64Array]\"] = E[\"[object Int8Array]\"] = E[\"[object Int16Array]\"] = E[\"[object Int32Array]\"] = E[\"[object Map]\"] = E[\"[object Number]\"] = E[\"[object Object]\"] = E[\"[object RegExp]\"] = E[\"[object Set]\"] = E[\"[object String]\"] = E[\"[object Symbol]\"] = E[\"[object Uint8Array]\"] = E[\"[object Uint8ClampedArray]\"] = E[\"[object Uint16Array]\"] = E[\"[object Uint32Array]\"] = !0, E[\"[object Error]\"] = E[\"[object Function]\"] = E[\"[object WeakMap]\"] = !1, t.exports = function t(e, n, A, x, T, R) {\n var P,\n k = 1 & n,\n M = 2 & n,\n C = 4 & n;\n if (A && (P = T ? A(e, x, T, R) : A(e)), void 0 !== P) return P;\n if (!w(e)) return e;\n var N = g(e);\n if (N) {\n if (P = v(e), !k) return s(e, P);\n } else {\n var L = h(e),\n D = \"[object Function]\" == L || \"[object GeneratorFunction]\" == L;\n if (m(e)) return c(e, k);\n if (\"[object Object]\" == L || \"[object Arguments]\" == L || D && !T) {\n if (P = M || D ? {} : y(e), !k) return M ? f(e, u(P, e)) : l(e, i(P, e));\n } else {\n if (!E[L]) return T ? e : {};\n P = b(e, L, k);\n }\n }\n R || (R = new r());\n var I = R.get(e);\n if (I) return I;\n R.set(e, P), O(e) ? e.forEach(function (r) {\n P.add(t(r, n, A, r, e, R));\n }) : _(e) && e.forEach(function (r, o) {\n P.set(o, t(r, n, A, o, e, R));\n });\n var V = N ? void 0 : (C ? M ? d : p : M ? j : S)(e);\n return o(V || e, function (r, o) {\n V && (r = e[o = r]), a(P, o, t(r, n, A, o, e, R));\n }), P;\n };\n }, function (t, e) {\n t.exports = function () {\n this.__data__ = [], this.size = 0;\n };\n }, function (t, e, n) {\n var r = n(21),\n o = Array.prototype.splice;\n t.exports = function (t) {\n var e = this.__data__,\n n = r(e, t);\n return !(n < 0 || (n == e.length - 1 ? e.pop() : o.call(e, n, 1), --this.size, 0));\n };\n }, function (t, e, n) {\n var r = n(21);\n t.exports = function (t) {\n var e = this.__data__,\n n = r(e, t);\n return n < 0 ? void 0 : e[n][1];\n };\n }, function (t, e, n) {\n var r = n(21);\n t.exports = function (t) {\n return r(this.__data__, t) > -1;\n };\n }, function (t, e, n) {\n var r = n(21);\n t.exports = function (t, e) {\n var n = this.__data__,\n o = r(n, t);\n return o < 0 ? (++this.size, n.push([t, e])) : n[o][1] = e, this;\n };\n }, function (t, e, n) {\n var r = n(20);\n t.exports = function () {\n this.__data__ = new r(), this.size = 0;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = this.__data__,\n n = e.delete(t);\n return this.size = e.size, n;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return this.__data__.get(t);\n };\n }, function (t, e) {\n t.exports = function (t) {\n return this.__data__.has(t);\n };\n }, function (t, e, n) {\n var r = n(20),\n o = n(39),\n a = n(41);\n t.exports = function (t, e) {\n var n = this.__data__;\n if (n instanceof r) {\n var i = n.__data__;\n if (!o || i.length < 199) return i.push([t, e]), this.size = ++n.size, this;\n n = this.__data__ = new a(i);\n }\n return n.set(t, e), this.size = n.size, this;\n };\n }, function (t, e, n) {\n var r = n(62),\n o = n(120),\n a = n(4),\n i = n(64),\n u = /^\\[object .+?Constructor\\]$/,\n c = Function.prototype,\n s = Object.prototype,\n l = c.toString,\n f = s.hasOwnProperty,\n p = RegExp(\"^\" + l.call(f).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n t.exports = function (t) {\n return !(!a(t) || o(t)) && (r(t) ? p : u).test(i(t));\n };\n }, function (t, e, n) {\n var r = n(9),\n o = Object.prototype,\n a = o.hasOwnProperty,\n i = o.toString,\n u = r ? r.toStringTag : void 0;\n t.exports = function (t) {\n var e = a.call(t, u),\n n = t[u];\n try {\n t[u] = void 0;\n var r = !0;\n } catch (t) {}\n var o = i.call(t);\n return r && (e ? t[u] = n : delete t[u]), o;\n };\n }, function (t, e) {\n var n = Object.prototype.toString;\n t.exports = function (t) {\n return n.call(t);\n };\n }, function (t, e, n) {\n var r,\n o = n(121),\n a = (r = /[^.]+$/.exec(o && o.keys && o.keys.IE_PROTO || \"\")) ? \"Symbol(src)_1.\" + r : \"\";\n t.exports = function (t) {\n return !!a && a in t;\n };\n }, function (t, e, n) {\n var r = n(2)[\"__core-js_shared__\"];\n t.exports = r;\n }, function (t, e) {\n t.exports = function (t, e) {\n return null == t ? void 0 : t[e];\n };\n }, function (t, e, n) {\n var r = n(124),\n o = n(20),\n a = n(39);\n t.exports = function () {\n this.size = 0, this.__data__ = {\n hash: new r(),\n map: new (a || o)(),\n string: new r()\n };\n };\n }, function (t, e, n) {\n var r = n(125),\n o = n(126),\n a = n(127),\n i = n(128),\n u = n(129);\n function c(t) {\n var e = -1,\n n = null == t ? 0 : t.length;\n for (this.clear(); ++e < n;) {\n var r = t[e];\n this.set(r[0], r[1]);\n }\n }\n c.prototype.clear = r, c.prototype.delete = o, c.prototype.get = a, c.prototype.has = i, c.prototype.set = u, t.exports = c;\n }, function (t, e, n) {\n var r = n(23);\n t.exports = function () {\n this.__data__ = r ? r(null) : {}, this.size = 0;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = this.has(t) && delete this.__data__[t];\n return this.size -= e ? 1 : 0, e;\n };\n }, function (t, e, n) {\n var r = n(23),\n o = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n var e = this.__data__;\n if (r) {\n var n = e[t];\n return \"__lodash_hash_undefined__\" === n ? void 0 : n;\n }\n return o.call(e, t) ? e[t] : void 0;\n };\n }, function (t, e, n) {\n var r = n(23),\n o = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n var e = this.__data__;\n return r ? void 0 !== e[t] : o.call(e, t);\n };\n }, function (t, e, n) {\n var r = n(23);\n t.exports = function (t, e) {\n var n = this.__data__;\n return this.size += this.has(t) ? 0 : 1, n[t] = r && void 0 === e ? \"__lodash_hash_undefined__\" : e, this;\n };\n }, function (t, e, n) {\n var r = n(24);\n t.exports = function (t) {\n var e = r(this, t).delete(t);\n return this.size -= e ? 1 : 0, e;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = typeof t;\n return \"string\" == e || \"number\" == e || \"symbol\" == e || \"boolean\" == e ? \"__proto__\" !== t : null === t;\n };\n }, function (t, e, n) {\n var r = n(24);\n t.exports = function (t) {\n return r(this, t).get(t);\n };\n }, function (t, e, n) {\n var r = n(24);\n t.exports = function (t) {\n return r(this, t).has(t);\n };\n }, function (t, e, n) {\n var r = n(24);\n t.exports = function (t, e) {\n var n = r(this, t),\n o = n.size;\n return n.set(t, e), this.size += n.size == o ? 0 : 1, this;\n };\n }, function (t, e, n) {\n var r = n(12),\n o = n(13);\n t.exports = function (t, e) {\n return t && r(e, o(e), t);\n };\n }, function (t, e, n) {\n var r = n(8),\n o = n(6);\n t.exports = function (t) {\n return o(t) && \"[object Arguments]\" == r(t);\n };\n }, function (t, e) {\n t.exports = function () {\n return !1;\n };\n }, function (t, e, n) {\n var r = n(8),\n o = n(45),\n a = n(6),\n i = {};\n i[\"[object Float32Array]\"] = i[\"[object Float64Array]\"] = i[\"[object Int8Array]\"] = i[\"[object Int16Array]\"] = i[\"[object Int32Array]\"] = i[\"[object Uint8Array]\"] = i[\"[object Uint8ClampedArray]\"] = i[\"[object Uint16Array]\"] = i[\"[object Uint32Array]\"] = !0, i[\"[object Arguments]\"] = i[\"[object Array]\"] = i[\"[object ArrayBuffer]\"] = i[\"[object Boolean]\"] = i[\"[object DataView]\"] = i[\"[object Date]\"] = i[\"[object Error]\"] = i[\"[object Function]\"] = i[\"[object Map]\"] = i[\"[object Number]\"] = i[\"[object Object]\"] = i[\"[object RegExp]\"] = i[\"[object Set]\"] = i[\"[object String]\"] = i[\"[object WeakMap]\"] = !1, t.exports = function (t) {\n return a(t) && o(t.length) && !!i[r(t)];\n };\n }, function (t, e, n) {\n var r = n(47),\n o = n(140),\n a = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n if (!r(t)) return o(t);\n var e = [];\n for (var n in Object(t)) a.call(t, n) && \"constructor\" != n && e.push(n);\n return e;\n };\n }, function (t, e, n) {\n var r = n(72)(Object.keys, Object);\n t.exports = r;\n }, function (t, e, n) {\n var r = n(12),\n o = n(48);\n t.exports = function (t, e) {\n return t && r(e, o(e), t);\n };\n }, function (t, e, n) {\n var r = n(4),\n o = n(47),\n a = n(143),\n i = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n if (!r(t)) return a(t);\n var e = o(t),\n n = [];\n for (var u in t) (\"constructor\" != u || !e && i.call(t, u)) && n.push(u);\n return n;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = [];\n if (null != t) for (var n in Object(t)) e.push(n);\n return e;\n };\n }, function (t, e, n) {\n (function (t) {\n var r = n(2),\n o = e && !e.nodeType && e,\n a = o && \"object\" == typeof t && t && !t.nodeType && t,\n i = a && a.exports === o ? r.Buffer : void 0,\n u = i ? i.allocUnsafe : void 0;\n t.exports = function (t, e) {\n if (e) return t.slice();\n var n = t.length,\n r = u ? u(n) : new t.constructor(n);\n return t.copy(r), r;\n };\n }).call(this, n(44)(t));\n }, function (t, e, n) {\n var r = n(12),\n o = n(49);\n t.exports = function (t, e) {\n return r(t, o(t), e);\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = null == t ? 0 : t.length, o = 0, a = []; ++n < r;) {\n var i = t[n];\n e(i, n, t) && (a[o++] = i);\n }\n return a;\n };\n }, function (t, e, n) {\n var r = n(12),\n o = n(74);\n t.exports = function (t, e) {\n return r(t, o(t), e);\n };\n }, function (t, e, n) {\n var r = n(7)(n(2), \"DataView\");\n t.exports = r;\n }, function (t, e, n) {\n var r = n(7)(n(2), \"Promise\");\n t.exports = r;\n }, function (t, e, n) {\n var r = n(7)(n(2), \"Set\");\n t.exports = r;\n }, function (t, e) {\n var n = Object.prototype.hasOwnProperty;\n t.exports = function (t) {\n var e = t.length,\n r = new t.constructor(e);\n return e && \"string\" == typeof t[0] && n.call(t, \"index\") && (r.index = t.index, r.input = t.input), r;\n };\n }, function (t, e, n) {\n var r = n(51),\n o = n(153),\n a = n(154),\n i = n(155),\n u = n(156);\n t.exports = function (t, e, n) {\n var c = t.constructor;\n switch (e) {\n case \"[object ArrayBuffer]\":\n return r(t);\n case \"[object Boolean]\":\n case \"[object Date]\":\n return new c(+t);\n case \"[object DataView]\":\n return o(t, n);\n case \"[object Float32Array]\":\n case \"[object Float64Array]\":\n case \"[object Int8Array]\":\n case \"[object Int16Array]\":\n case \"[object Int32Array]\":\n case \"[object Uint8Array]\":\n case \"[object Uint8ClampedArray]\":\n case \"[object Uint16Array]\":\n case \"[object Uint32Array]\":\n return u(t, n);\n case \"[object Map]\":\n return new c();\n case \"[object Number]\":\n case \"[object String]\":\n return new c(t);\n case \"[object RegExp]\":\n return a(t);\n case \"[object Set]\":\n return new c();\n case \"[object Symbol]\":\n return i(t);\n }\n };\n }, function (t, e, n) {\n var r = n(51);\n t.exports = function (t, e) {\n var n = e ? r(t.buffer) : t.buffer;\n return new t.constructor(n, t.byteOffset, t.byteLength);\n };\n }, function (t, e) {\n var n = /\\w*$/;\n t.exports = function (t) {\n var e = new t.constructor(t.source, n.exec(t));\n return e.lastIndex = t.lastIndex, e;\n };\n }, function (t, e, n) {\n var r = n(9),\n o = r ? r.prototype : void 0,\n a = o ? o.valueOf : void 0;\n t.exports = function (t) {\n return a ? Object(a.call(t)) : {};\n };\n }, function (t, e, n) {\n var r = n(51);\n t.exports = function (t, e) {\n var n = e ? r(t.buffer) : t.buffer;\n return new t.constructor(n, t.byteOffset, t.length);\n };\n }, function (t, e, n) {\n var r = n(30),\n o = n(50),\n a = n(47);\n t.exports = function (t) {\n return \"function\" != typeof t.constructor || a(t) ? {} : r(o(t));\n };\n }, function (t, e, n) {\n var r = n(159),\n o = n(26),\n a = n(46),\n i = a && a.isMap,\n u = i ? o(i) : r;\n t.exports = u;\n }, function (t, e, n) {\n var r = n(29),\n o = n(6);\n t.exports = function (t) {\n return o(t) && \"[object Map]\" == r(t);\n };\n }, function (t, e, n) {\n var r = n(161),\n o = n(26),\n a = n(46),\n i = a && a.isSet,\n u = i ? o(i) : r;\n t.exports = u;\n }, function (t, e, n) {\n var r = n(29),\n o = n(6);\n t.exports = function (t) {\n return o(t) && \"[object Set]\" == r(t);\n };\n }, function (t, e, n) {\n var r = n(31),\n o = n(168),\n a = n(169),\n i = n(16);\n t.exports = function (t, e) {\n return e = r(e, t), null == (t = a(t, e)) || delete t[i(o(e))];\n };\n }, function (t, e, n) {\n var r = n(164),\n o = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,\n a = /\\\\(\\\\)?/g,\n i = r(function (t) {\n var e = [];\n return 46 === t.charCodeAt(0) && e.push(\"\"), t.replace(o, function (t, n, r, o) {\n e.push(r ? o.replace(a, \"$1\") : n || t);\n }), e;\n });\n t.exports = i;\n }, function (t, e, n) {\n var r = n(165);\n t.exports = function (t) {\n var e = r(t, function (t) {\n return 500 === n.size && n.clear(), t;\n }),\n n = e.cache;\n return e;\n };\n }, function (t, e, n) {\n var r = n(41);\n function o(t, e) {\n if (\"function\" != typeof t || null != e && \"function\" != typeof e) throw new TypeError(\"Expected a function\");\n var n = function () {\n var r = arguments,\n o = e ? e.apply(this, r) : r[0],\n a = n.cache;\n if (a.has(o)) return a.get(o);\n var i = t.apply(this, r);\n return n.cache = a.set(o, i) || a, i;\n };\n return n.cache = new (o.Cache || r)(), n;\n }\n o.Cache = r, t.exports = o;\n }, function (t, e, n) {\n var r = n(167);\n t.exports = function (t) {\n return null == t ? \"\" : r(t);\n };\n }, function (t, e, n) {\n var r = n(9),\n o = n(37),\n a = n(3),\n i = n(15),\n u = r ? r.prototype : void 0,\n c = u ? u.toString : void 0;\n t.exports = function t(e) {\n if (\"string\" == typeof e) return e;\n if (a(e)) return o(e, t) + \"\";\n if (i(e)) return c ? c.call(e) : \"\";\n var n = e + \"\";\n return \"0\" == n && 1 / e == -1 / 0 ? \"-0\" : n;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = null == t ? 0 : t.length;\n return e ? t[e - 1] : void 0;\n };\n }, function (t, e, n) {\n var r = n(32),\n o = n(170);\n t.exports = function (t, e) {\n return e.length < 2 ? t : r(t, o(e, 0, -1));\n };\n }, function (t, e) {\n t.exports = function (t, e, n) {\n var r = -1,\n o = t.length;\n e < 0 && (e = -e > o ? 0 : o + e), (n = n > o ? o : n) < 0 && (n += o), o = e > n ? 0 : n - e >>> 0, e >>>= 0;\n for (var a = Array(o); ++r < o;) a[r] = t[r + e];\n return a;\n };\n }, function (t, e, n) {\n var r = n(172);\n t.exports = function (t) {\n return r(t) ? void 0 : t;\n };\n }, function (t, e, n) {\n var r = n(8),\n o = n(50),\n a = n(6),\n i = Function.prototype,\n u = Object.prototype,\n c = i.toString,\n s = u.hasOwnProperty,\n l = c.call(Object);\n t.exports = function (t) {\n if (!a(t) || \"[object Object]\" != r(t)) return !1;\n var e = o(t);\n if (null === e) return !0;\n var n = s.call(e, \"constructor\") && e.constructor;\n return \"function\" == typeof n && n instanceof n && c.call(n) == l;\n };\n }, function (t, e, n) {\n var r = n(9),\n o = n(42),\n a = n(3),\n i = r ? r.isConcatSpreadable : void 0;\n t.exports = function (t) {\n return a(t) || o(t) || !!(i && t && t[i]);\n };\n }, function (t, e, n) {\n var r = n(175),\n o = n(68),\n a = n(10),\n i = o ? function (t, e) {\n return o(t, \"toString\", {\n configurable: !0,\n enumerable: !1,\n value: r(e),\n writable: !0\n });\n } : a;\n t.exports = i;\n }, function (t, e) {\n t.exports = function (t) {\n return function () {\n return t;\n };\n };\n }, function (t, e, n) {\n \"use strict\";\n\n var r = n(177);\n function o() {}\n function a() {}\n a.resetWarningCache = o, t.exports = function () {\n function t(t, e, n, o, a, i) {\n if (i !== r) {\n var u = new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");\n throw u.name = \"Invariant Violation\", u;\n }\n }\n function e() {\n return t;\n }\n t.isRequired = t;\n var n = {\n array: t,\n bool: t,\n func: t,\n number: t,\n object: t,\n string: t,\n symbol: t,\n any: t,\n arrayOf: e,\n element: t,\n elementType: t,\n instanceOf: e,\n node: t,\n objectOf: e,\n oneOf: e,\n oneOfType: e,\n shape: e,\n exact: e,\n checkPropTypes: a,\n resetWarningCache: o\n };\n return n.PropTypes = n, n;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n t.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n }, function (t, e, n) {\n var r = n(56),\n o = n(80),\n a = n(58),\n i = n(84),\n u = n(3),\n c = n(85);\n t.exports = function (t) {\n return o(function (e) {\n var n = e.length,\n o = n,\n s = r.prototype.thru;\n for (t && e.reverse(); o--;) {\n var l = e[o];\n if (\"function\" != typeof l) throw new TypeError(\"Expected a function\");\n if (s && !f && \"wrapper\" == i(l)) var f = new r([], !0);\n }\n for (o = f ? o : n; ++o < n;) {\n l = e[o];\n var p = i(l),\n d = \"wrapper\" == p ? a(l) : void 0;\n f = d && c(d[0]) && 424 == d[1] && !d[4].length && 1 == d[9] ? f[i(d[0])].apply(f, d[3]) : 1 == l.length && c(l) ? f[p]() : f.thru(l);\n }\n return function () {\n var t = arguments,\n r = t[0];\n if (f && 1 == t.length && u(r)) return f.plant(r).value();\n for (var o = 0, a = n ? e[o].apply(this, t) : r; ++o < n;) a = e[o].call(this, a);\n return a;\n };\n });\n };\n }, function (t, e) {\n t.exports = function () {};\n }, function (t, e) {\n t.exports = {};\n }, function (t, e, n) {\n var r = n(59),\n o = n(56),\n a = n(57),\n i = n(3),\n u = n(6),\n c = n(182),\n s = Object.prototype.hasOwnProperty;\n function l(t) {\n if (u(t) && !i(t) && !(t instanceof r)) {\n if (t instanceof o) return t;\n if (s.call(t, \"__wrapped__\")) return c(t);\n }\n return new o(t);\n }\n l.prototype = a.prototype, l.prototype.constructor = l, t.exports = l;\n }, function (t, e, n) {\n var r = n(59),\n o = n(56),\n a = n(27);\n t.exports = function (t) {\n if (t instanceof r) return t.clone();\n var e = new o(t.__wrapped__, t.__chain__);\n return e.__actions__ = a(t.__actions__), e.__index__ = t.__index__, e.__values__ = t.__values__, e;\n };\n }, function (t, e, n) {\n var r = n(87),\n o = n(184),\n a = n(185),\n i = n(88),\n u = n(196),\n c = n(58),\n s = n(197),\n l = n(92),\n f = n(93),\n p = n(94),\n d = Math.max;\n t.exports = function (t, e, n, h, v, b, y, g) {\n var m = 2 & e;\n if (!m && \"function\" != typeof t) throw new TypeError(\"Expected a function\");\n var _ = h ? h.length : 0;\n if (_ || (e &= -97, h = v = void 0), y = void 0 === y ? y : d(p(y), 0), g = void 0 === g ? g : p(g), _ -= v ? v.length : 0, 64 & e) {\n var w = h,\n O = v;\n h = v = void 0;\n }\n var S = m ? void 0 : c(t),\n j = [t, e, n, h, v, w, O, b, y, g];\n if (S && s(j, S), t = j[0], e = j[1], n = j[2], h = j[3], v = j[4], !(g = j[9] = void 0 === j[9] ? m ? 0 : t.length : d(j[9] - _, 0)) && 24 & e && (e &= -25), e && 1 != e) E = 8 == e || 16 == e ? a(t, e, g) : 32 != e && 33 != e || v.length ? i.apply(void 0, j) : u(t, e, n, h);else var E = o(t, e, n);\n return f((S ? r : l)(E, j), t, e);\n };\n }, function (t, e, n) {\n var r = n(33),\n o = n(2);\n t.exports = function (t, e, n) {\n var a = 1 & e,\n i = r(t);\n return function e() {\n var r = this && this !== o && this instanceof e ? i : t;\n return r.apply(a ? n : this, arguments);\n };\n };\n }, function (t, e, n) {\n var r = n(54),\n o = n(33),\n a = n(88),\n i = n(91),\n u = n(60),\n c = n(34),\n s = n(2);\n t.exports = function (t, e, n) {\n var l = o(t);\n return function o() {\n for (var f = arguments.length, p = Array(f), d = f, h = u(o); d--;) p[d] = arguments[d];\n var v = f < 3 && p[0] !== h && p[f - 1] !== h ? [] : c(p, h);\n if ((f -= v.length) < n) return i(t, e, a, o.placeholder, void 0, p, v, void 0, void 0, n - f);\n var b = this && this !== s && this instanceof o ? l : t;\n return r(b, this, p);\n };\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = t.length, r = 0; n--;) t[n] === e && ++r;\n return r;\n };\n }, function (t, e) {\n var n = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n r = /,? & /;\n t.exports = function (t) {\n var e = t.match(n);\n return e ? e[1].split(r) : [];\n };\n }, function (t, e) {\n var n = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;\n t.exports = function (t, e) {\n var r = e.length;\n if (!r) return t;\n var o = r - 1;\n return e[o] = (r > 1 ? \"& \" : \"\") + e[o], e = e.join(r > 2 ? \", \" : \" \"), t.replace(n, \"{\\n/* [wrapped with \" + e + \"] */\\n\");\n };\n }, function (t, e, n) {\n var r = n(65),\n o = n(190),\n a = [[\"ary\", 128], [\"bind\", 1], [\"bindKey\", 2], [\"curry\", 8], [\"curryRight\", 16], [\"flip\", 512], [\"partial\", 32], [\"partialRight\", 64], [\"rearg\", 256]];\n t.exports = function (t, e) {\n return r(a, function (n) {\n var r = \"_.\" + n[0];\n e & n[1] && !o(t, r) && t.push(r);\n }), t.sort();\n };\n }, function (t, e, n) {\n var r = n(191);\n t.exports = function (t, e) {\n return !(null == t || !t.length) && r(t, e, 0) > -1;\n };\n }, function (t, e, n) {\n var r = n(192),\n o = n(193),\n a = n(194);\n t.exports = function (t, e, n) {\n return e == e ? a(t, e, n) : r(t, o, n);\n };\n }, function (t, e) {\n t.exports = function (t, e, n, r) {\n for (var o = t.length, a = n + (r ? 1 : -1); r ? a-- : ++a < o;) if (e(t[a], a, t)) return a;\n return -1;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return t != t;\n };\n }, function (t, e) {\n t.exports = function (t, e, n) {\n for (var r = n - 1, o = t.length; ++r < o;) if (t[r] === e) return r;\n return -1;\n };\n }, function (t, e, n) {\n var r = n(27),\n o = n(25),\n a = Math.min;\n t.exports = function (t, e) {\n for (var n = t.length, i = a(e.length, n), u = r(t); i--;) {\n var c = e[i];\n t[i] = o(c, n) ? u[c] : void 0;\n }\n return t;\n };\n }, function (t, e, n) {\n var r = n(54),\n o = n(33),\n a = n(2);\n t.exports = function (t, e, n, i) {\n var u = 1 & e,\n c = o(t);\n return function e() {\n for (var o = -1, s = arguments.length, l = -1, f = i.length, p = Array(f + s), d = this && this !== a && this instanceof e ? c : t; ++l < f;) p[l] = i[l];\n for (; s--;) p[l++] = arguments[++o];\n return r(d, u ? n : this, p);\n };\n };\n }, function (t, e, n) {\n var r = n(89),\n o = n(90),\n a = n(34),\n i = Math.min;\n t.exports = function (t, e) {\n var n = t[1],\n u = e[1],\n c = n | u,\n s = c < 131,\n l = 128 == u && 8 == n || 128 == u && 256 == n && t[7].length <= e[8] || 384 == u && e[7].length <= e[8] && 8 == n;\n if (!s && !l) return t;\n 1 & u && (t[2] = e[2], c |= 1 & n ? 0 : 4);\n var f = e[3];\n if (f) {\n var p = t[3];\n t[3] = p ? r(p, f, e[4]) : f, t[4] = p ? a(t[3], \"__lodash_placeholder__\") : e[4];\n }\n return (f = e[5]) && (p = t[5], t[5] = p ? o(p, f, e[6]) : f, t[6] = p ? a(t[5], \"__lodash_placeholder__\") : e[6]), (f = e[7]) && (t[7] = f), 128 & u && (t[8] = null == t[8] ? e[8] : i(t[8], e[8])), null == t[9] && (t[9] = e[9]), t[0] = e[0], t[1] = c, t;\n };\n }, function (t, e, n) {\n var r = n(95);\n t.exports = function (t) {\n return t ? (t = r(t)) === 1 / 0 || t === -1 / 0 ? 17976931348623157e292 * (t < 0 ? -1 : 1) : t == t ? t : 0 : 0 === t ? t : 0;\n };\n }, function (t, e, n) {\n var r = n(200),\n o = /^\\s+/;\n t.exports = function (t) {\n return t ? t.slice(0, r(t) + 1).replace(o, \"\") : t;\n };\n }, function (t, e) {\n var n = /\\s/;\n t.exports = function (t) {\n for (var e = t.length; e-- && n.test(t.charAt(e)););\n return e;\n };\n }, function (t, e, n) {\n var r = n(4),\n o = n(202),\n a = n(95),\n i = Math.max,\n u = Math.min;\n t.exports = function (t, e, n) {\n var c,\n s,\n l,\n f,\n p,\n d,\n h = 0,\n v = !1,\n b = !1,\n y = !0;\n if (\"function\" != typeof t) throw new TypeError(\"Expected a function\");\n function g(e) {\n var n = c,\n r = s;\n return c = s = void 0, h = e, f = t.apply(r, n);\n }\n function m(t) {\n return h = t, p = setTimeout(w, e), v ? g(t) : f;\n }\n function _(t) {\n var n = t - d;\n return void 0 === d || n >= e || n < 0 || b && t - h >= l;\n }\n function w() {\n var t = o();\n if (_(t)) return O(t);\n p = setTimeout(w, function (t) {\n var n = e - (t - d);\n return b ? u(n, l - (t - h)) : n;\n }(t));\n }\n function O(t) {\n return p = void 0, y && c ? g(t) : (c = s = void 0, f);\n }\n function S() {\n var t = o(),\n n = _(t);\n if (c = arguments, s = this, d = t, n) {\n if (void 0 === p) return m(d);\n if (b) return clearTimeout(p), p = setTimeout(w, e), g(d);\n }\n return void 0 === p && (p = setTimeout(w, e)), f;\n }\n return e = a(e) || 0, r(n) && (v = !!n.leading, l = (b = \"maxWait\" in n) ? i(a(n.maxWait) || 0, e) : l, y = \"trailing\" in n ? !!n.trailing : y), S.cancel = function () {\n void 0 !== p && clearTimeout(p), h = 0, c = d = s = p = void 0;\n }, S.flush = function () {\n return void 0 === p ? f : O(o());\n }, S;\n };\n }, function (t, e, n) {\n var r = n(2);\n t.exports = function () {\n return r.Date.now();\n };\n }, function (t, e, n) {\n var r = n(37),\n o = n(32),\n a = n(204),\n i = n(226),\n u = n(232),\n c = n(26),\n s = n(233),\n l = n(10),\n f = n(3);\n t.exports = function (t, e, n) {\n e = e.length ? r(e, function (t) {\n return f(t) ? function (e) {\n return o(e, 1 === t.length ? t[0] : t);\n } : t;\n }) : [l];\n var p = -1;\n e = r(e, c(a));\n var d = i(t, function (t, n, o) {\n return {\n criteria: r(e, function (e) {\n return e(t);\n }),\n index: ++p,\n value: t\n };\n });\n return u(d, function (t, e) {\n return s(t, e, n);\n });\n };\n }, function (t, e, n) {\n var r = n(205),\n o = n(218),\n a = n(10),\n i = n(3),\n u = n(223);\n t.exports = function (t) {\n return \"function\" == typeof t ? t : null == t ? a : \"object\" == typeof t ? i(t) ? o(t[0], t[1]) : r(t) : u(t);\n };\n }, function (t, e, n) {\n var r = n(206),\n o = n(217),\n a = n(99);\n t.exports = function (t) {\n var e = o(t);\n return 1 == e.length && e[0][2] ? a(e[0][0], e[0][1]) : function (n) {\n return n === t || r(n, t, e);\n };\n };\n }, function (t, e, n) {\n var r = n(38),\n o = n(96);\n t.exports = function (t, e, n, a) {\n var i = n.length,\n u = i,\n c = !a;\n if (null == t) return !u;\n for (t = Object(t); i--;) {\n var s = n[i];\n if (c && s[2] ? s[1] !== t[s[0]] : !(s[0] in t)) return !1;\n }\n for (; ++i < u;) {\n var l = (s = n[i])[0],\n f = t[l],\n p = s[1];\n if (c && s[2]) {\n if (void 0 === f && !(l in t)) return !1;\n } else {\n var d = new r();\n if (a) var h = a(f, p, l, t, e, d);\n if (!(void 0 === h ? o(p, f, 3, a, d) : h)) return !1;\n }\n }\n return !0;\n };\n }, function (t, e, n) {\n var r = n(38),\n o = n(97),\n a = n(213),\n i = n(216),\n u = n(29),\n c = n(3),\n s = n(43),\n l = n(71),\n f = \"[object Object]\",\n p = Object.prototype.hasOwnProperty;\n t.exports = function (t, e, n, d, h, v) {\n var b = c(t),\n y = c(e),\n g = b ? \"[object Array]\" : u(t),\n m = y ? \"[object Array]\" : u(e),\n _ = (g = \"[object Arguments]\" == g ? f : g) == f,\n w = (m = \"[object Arguments]\" == m ? f : m) == f,\n O = g == m;\n if (O && s(t)) {\n if (!s(e)) return !1;\n b = !0, _ = !1;\n }\n if (O && !_) return v || (v = new r()), b || l(t) ? o(t, e, n, d, h, v) : a(t, e, g, n, d, h, v);\n if (!(1 & n)) {\n var S = _ && p.call(t, \"__wrapped__\"),\n j = w && p.call(e, \"__wrapped__\");\n if (S || j) {\n var E = S ? t.value() : t,\n A = j ? e.value() : e;\n return v || (v = new r()), h(E, A, n, d, v);\n }\n }\n return !!O && (v || (v = new r()), i(t, e, n, d, h, v));\n };\n }, function (t, e, n) {\n var r = n(41),\n o = n(209),\n a = n(210);\n function i(t) {\n var e = -1,\n n = null == t ? 0 : t.length;\n for (this.__data__ = new r(); ++e < n;) this.add(t[e]);\n }\n i.prototype.add = i.prototype.push = o, i.prototype.has = a, t.exports = i;\n }, function (t, e) {\n t.exports = function (t) {\n return this.__data__.set(t, \"__lodash_hash_undefined__\"), this;\n };\n }, function (t, e) {\n t.exports = function (t) {\n return this.__data__.has(t);\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n for (var n = -1, r = null == t ? 0 : t.length; ++n < r;) if (e(t[n], n, t)) return !0;\n return !1;\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n return t.has(e);\n };\n }, function (t, e, n) {\n var r = n(9),\n o = n(79),\n a = n(22),\n i = n(97),\n u = n(214),\n c = n(215),\n s = r ? r.prototype : void 0,\n l = s ? s.valueOf : void 0;\n t.exports = function (t, e, n, r, s, f, p) {\n switch (n) {\n case \"[object DataView]\":\n if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset) return !1;\n t = t.buffer, e = e.buffer;\n case \"[object ArrayBuffer]\":\n return !(t.byteLength != e.byteLength || !f(new o(t), new o(e)));\n case \"[object Boolean]\":\n case \"[object Date]\":\n case \"[object Number]\":\n return a(+t, +e);\n case \"[object Error]\":\n return t.name == e.name && t.message == e.message;\n case \"[object RegExp]\":\n case \"[object String]\":\n return t == e + \"\";\n case \"[object Map]\":\n var d = u;\n case \"[object Set]\":\n var h = 1 & r;\n if (d || (d = c), t.size != e.size && !h) return !1;\n var v = p.get(t);\n if (v) return v == e;\n r |= 2, p.set(t, e);\n var b = i(d(t), d(e), r, s, f, p);\n return p.delete(t), b;\n case \"[object Symbol]\":\n if (l) return l.call(t) == l.call(e);\n }\n return !1;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = -1,\n n = Array(t.size);\n return t.forEach(function (t, r) {\n n[++e] = [r, t];\n }), n;\n };\n }, function (t, e) {\n t.exports = function (t) {\n var e = -1,\n n = Array(t.size);\n return t.forEach(function (t) {\n n[++e] = t;\n }), n;\n };\n }, function (t, e, n) {\n var r = n(75),\n o = Object.prototype.hasOwnProperty;\n t.exports = function (t, e, n, a, i, u) {\n var c = 1 & n,\n s = r(t),\n l = s.length;\n if (l != r(e).length && !c) return !1;\n for (var f = l; f--;) {\n var p = s[f];\n if (!(c ? p in e : o.call(e, p))) return !1;\n }\n var d = u.get(t),\n h = u.get(e);\n if (d && h) return d == e && h == t;\n var v = !0;\n u.set(t, e), u.set(e, t);\n for (var b = c; ++f < l;) {\n var y = t[p = s[f]],\n g = e[p];\n if (a) var m = c ? a(g, y, p, e, t, u) : a(y, g, p, t, e, u);\n if (!(void 0 === m ? y === g || i(y, g, n, a, u) : m)) {\n v = !1;\n break;\n }\n b || (b = \"constructor\" == p);\n }\n if (v && !b) {\n var _ = t.constructor,\n w = e.constructor;\n _ == w || !(\"constructor\" in t) || !(\"constructor\" in e) || \"function\" == typeof _ && _ instanceof _ && \"function\" == typeof w && w instanceof w || (v = !1);\n }\n return u.delete(t), u.delete(e), v;\n };\n }, function (t, e, n) {\n var r = n(98),\n o = n(13);\n t.exports = function (t) {\n for (var e = o(t), n = e.length; n--;) {\n var a = e[n],\n i = t[a];\n e[n] = [a, i, r(i)];\n }\n return e;\n };\n }, function (t, e, n) {\n var r = n(96),\n o = n(219),\n a = n(220),\n i = n(52),\n u = n(98),\n c = n(99),\n s = n(16);\n t.exports = function (t, e) {\n return i(t) && u(e) ? c(s(t), e) : function (n) {\n var i = o(n, t);\n return void 0 === i && i === e ? a(n, t) : r(e, i, 3);\n };\n };\n }, function (t, e, n) {\n var r = n(32);\n t.exports = function (t, e, n) {\n var o = null == t ? void 0 : r(t, e);\n return void 0 === o ? n : o;\n };\n }, function (t, e, n) {\n var r = n(221),\n o = n(222);\n t.exports = function (t, e) {\n return null != t && o(t, e, r);\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n return null != t && e in Object(t);\n };\n }, function (t, e, n) {\n var r = n(31),\n o = n(42),\n a = n(3),\n i = n(25),\n u = n(45),\n c = n(16);\n t.exports = function (t, e, n) {\n for (var s = -1, l = (e = r(e, t)).length, f = !1; ++s < l;) {\n var p = c(e[s]);\n if (!(f = null != t && n(t, p))) break;\n t = t[p];\n }\n return f || ++s != l ? f : !!(l = null == t ? 0 : t.length) && u(l) && i(p, l) && (a(t) || o(t));\n };\n }, function (t, e, n) {\n var r = n(224),\n o = n(225),\n a = n(52),\n i = n(16);\n t.exports = function (t) {\n return a(t) ? r(i(t)) : o(t);\n };\n }, function (t, e) {\n t.exports = function (t) {\n return function (e) {\n return null == e ? void 0 : e[t];\n };\n };\n }, function (t, e, n) {\n var r = n(32);\n t.exports = function (t) {\n return function (e) {\n return r(e, t);\n };\n };\n }, function (t, e, n) {\n var r = n(227),\n o = n(14);\n t.exports = function (t, e) {\n var n = -1,\n a = o(t) ? Array(t.length) : [];\n return r(t, function (t, r, o) {\n a[++n] = e(t, r, o);\n }), a;\n };\n }, function (t, e, n) {\n var r = n(228),\n o = n(231)(r);\n t.exports = o;\n }, function (t, e, n) {\n var r = n(229),\n o = n(13);\n t.exports = function (t, e) {\n return t && r(t, e, o);\n };\n }, function (t, e, n) {\n var r = n(230)();\n t.exports = r;\n }, function (t, e) {\n t.exports = function (t) {\n return function (e, n, r) {\n for (var o = -1, a = Object(e), i = r(e), u = i.length; u--;) {\n var c = i[t ? u : ++o];\n if (!1 === n(a[c], c, a)) break;\n }\n return e;\n };\n };\n }, function (t, e, n) {\n var r = n(14);\n t.exports = function (t, e) {\n return function (n, o) {\n if (null == n) return n;\n if (!r(n)) return t(n, o);\n for (var a = n.length, i = e ? a : -1, u = Object(n); (e ? i-- : ++i < a) && !1 !== o(u[i], i, u););\n return n;\n };\n };\n }, function (t, e) {\n t.exports = function (t, e) {\n var n = t.length;\n for (t.sort(e); n--;) t[n] = t[n].value;\n return t;\n };\n }, function (t, e, n) {\n var r = n(234);\n t.exports = function (t, e, n) {\n for (var o = -1, a = t.criteria, i = e.criteria, u = a.length, c = n.length; ++o < u;) {\n var s = r(a[o], i[o]);\n if (s) return o >= c ? s : s * (\"desc\" == n[o] ? -1 : 1);\n }\n return t.index - e.index;\n };\n }, function (t, e, n) {\n var r = n(15);\n t.exports = function (t, e) {\n if (t !== e) {\n var n = void 0 !== t,\n o = null === t,\n a = t == t,\n i = r(t),\n u = void 0 !== e,\n c = null === e,\n s = e == e,\n l = r(e);\n if (!c && !l && !i && t > e || i && u && s && !c && !l || o && u && s || !n && s || !a) return 1;\n if (!o && !i && !l && t < e || l && n && a && !o && !i || c && n && a || !u && a || !s) return -1;\n }\n return 0;\n };\n }, function (t, e, n) {\n var r = n(22),\n o = n(14),\n a = n(25),\n i = n(4);\n t.exports = function (t, e, n) {\n if (!i(n)) return !1;\n var u = typeof e;\n return !!(\"number\" == u ? o(n) && a(e, n.length) : \"string\" == u && e in n) && r(n[e], t);\n };\n }, function (t, e, n) {\n var r = n(10);\n t.exports = function (t) {\n return \"function\" == typeof t ? t : r;\n };\n }, function (t, e, n) {\n \"use strict\";\n\n n.r(e), n.d(e, \"slidesToShowPlugin\", function () {\n return ki;\n }), n.d(e, \"infinitePlugin\", function () {\n return Mi;\n }), n.d(e, \"clickToChangePlugin\", function () {\n return Ci;\n }), n.d(e, \"autoplayPlugin\", function () {\n return Ni;\n }), n.d(e, \"rtlPlugin\", function () {\n return Li;\n }), n.d(e, \"centeredPlugin\", function () {\n return Di;\n }), n.d(e, \"slidesToScrollPlugin\", function () {\n return Ii;\n }), n.d(e, \"arrowsPlugin\", function () {\n return Vi;\n }), n.d(e, \"fastSwipePlugin\", function () {\n return Bi;\n }), n.d(e, \"Dots\", function () {\n return Ui;\n });\n var r = n(0),\n o = n.n(r),\n a = n(11),\n i = n.n(a);\n function u(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n class c {\n constructor(t) {\n u(this, \"key\", void 0), this.key = t;\n }\n }\n class s extends c {}\n class l extends c {}\n var f = {\n AbstractRecoilValue: c,\n RecoilState: s,\n RecoilValueReadOnly: l,\n isRecoilValue: function (t) {\n return t instanceof s || t instanceof l;\n }\n },\n p = f.AbstractRecoilValue,\n d = f.RecoilState,\n h = f.RecoilValueReadOnly,\n v = f.isRecoilValue,\n b = Object.freeze({\n __proto__: null,\n AbstractRecoilValue: p,\n RecoilState: d,\n RecoilValueReadOnly: h,\n isRecoilValue: v\n });\n class y {}\n const g = new y();\n class m extends Error {\n constructor(t) {\n super(\"Tried to set the value of Recoil selector \".concat(t, \" using an updater function, but it is an async selector in a pending or error state; this is not supported.\"));\n }\n }\n const _ = new Map(),\n w = new Map();\n class O extends Error {}\n var S = {\n nodes: _,\n recoilValues: w,\n registerNode: function (t) {\n if (_.has(t.key)) {\n t.key;\n }\n _.set(t.key, t);\n const e = null == t.set ? new b.RecoilValueReadOnly(t.key) : new b.RecoilState(t.key);\n return w.set(t.key, e), e;\n },\n getNode: function (t) {\n const e = _.get(t);\n if (null == e) throw new O(\"Missing definition for RecoilValue: \\\"\".concat(t, \"\\\"\\\"\"));\n return e;\n },\n getNodeMaybe: function (t) {\n return _.get(t);\n },\n NodeMissingError: O,\n DefaultValue: y,\n DEFAULT_VALUE: g,\n RecoilValueNotReady: m\n },\n j = function (t, e) {\n e();\n },\n E = {\n setByAddingToSet: function (t, e) {\n const n = new Set(t);\n return n.add(e), n;\n },\n setByDeletingFromSet: function (t, e) {\n const n = new Set(t);\n return n.delete(e), n;\n },\n mapBySettingInMap: function (t, e, n) {\n const r = new Map(t);\n return r.set(e, n), r;\n },\n mapByUpdatingInMap: function (t, e, n) {\n const r = new Map(t);\n return r.set(e, n(r.get(e))), r;\n },\n mapByDeletingFromMap: function (t, e) {\n const n = new Map(t);\n return n.delete(e), n;\n },\n mapByDeletingMultipleFromMap: function (t, e) {\n const n = new Map(t);\n return e.forEach(t => n.delete(t)), n;\n }\n };\n const {\n mapByDeletingFromMap: A,\n mapBySettingInMap: x,\n setByAddingToSet: T\n } = E,\n {\n getNode: R,\n getNodeMaybe: P\n } = S,\n k = Object.freeze(new Set());\n class M extends Error {}\n var C = {\n getNodeLoadable: function (t, e, n) {\n return R(n).get(t, e);\n },\n peekNodeLoadable: function (t, e, n) {\n return R(n).peek(t, e);\n },\n setNodeValue: function (t, e, n, r) {\n const o = R(n);\n if (null == o.set) throw new M(\"Attempt to set read-only RecoilValue: \" + n);\n return o.set(t, e, r);\n },\n setUnvalidatedAtomValue: function (t, e, n) {\n var r;\n const o = P(e);\n return null == o || null === (r = o.invalidate) || void 0 === r || r.call(o), {\n ...t,\n atomValues: A(t.atomValues, e),\n nonvalidatedAtoms: x(t.nonvalidatedAtoms, e, n),\n dirtyAtoms: T(t.dirtyAtoms, e)\n };\n },\n getDownstreamNodes: function (t, e, n) {\n const r = new Set(),\n o = Array.from(n),\n a = t.getGraph(e.version);\n for (let t = o.pop(); t; t = o.pop()) {\n var i;\n r.add(t);\n const e = null !== (i = a.nodeToNodeSubscriptions.get(t)) && void 0 !== i ? i : k;\n for (const t of e) r.has(t) || o.push(t);\n }\n return r;\n }\n },\n N = function (t) {\n const n = new Set();\n for (var _len = arguments.length, e = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n e[_key - 1] = arguments[_key];\n }\n t: for (const r of t) {\n for (const t of e) if (t.has(r)) continue t;\n n.add(r);\n }\n return n;\n },\n L = function (t, e) {\n const n = new Map();\n return t.forEach((t, r) => {\n n.set(r, e(t, r));\n }), n;\n },\n D = function (t, e) {\n if (null != t) return t;\n throw new Error(null != e ? e : \"Got unexpected null or undefined\");\n };\n function I(t, e, n) {\n const {\n nodeDeps: r,\n nodeToNodeSubscriptions: o\n } = e;\n t.forEach((t, e) => {\n const a = r.get(e);\n a && n && a !== n.nodeDeps.get(e) || (r.set(e, new Set(t)), (null == a ? t : N(t, a)).forEach(t => {\n o.has(t) || o.set(t, new Set()), D(o.get(t)).add(e);\n }), a && N(a, t).forEach(t => {\n if (!o.has(t)) return;\n const n = D(o.get(t));\n n.delete(e), 0 === n.size && o.delete(t);\n }));\n });\n }\n var V = {\n addToDependencyMap: function (t, e, n) {\n n.has(t) || n.set(t, new Set()), D(n.get(t)).add(e);\n },\n cloneGraph: function (t) {\n return {\n nodeDeps: L(t.nodeDeps, t => new Set(t)),\n nodeToNodeSubscriptions: L(t.nodeToNodeSubscriptions, t => new Set(t))\n };\n },\n graph: function () {\n return {\n nodeDeps: new Map(),\n nodeToNodeSubscriptions: new Map()\n };\n },\n mergeDepsIntoDependencyMap: function (t, e) {\n t.forEach((t, n) => {\n e.has(n) || e.set(n, new Set());\n const r = D(e.get(n));\n t.forEach(t => r.add(t));\n });\n },\n saveDependencyMapToStore: function (t, e, n) {\n var r, o, a, i;\n const u = e.getState();\n n !== u.currentTree.version && n !== (null === (r = u.nextTree) || void 0 === r ? void 0 : r.version) && (null === (o = u.previousTree) || void 0 === o || o.version);\n const c = e.getGraph(n);\n if (I(t, c), n === (null === (a = u.previousTree) || void 0 === a ? void 0 : a.version) && I(t, e.getGraph(u.currentTree.version), c), n === (null === (i = u.previousTree) || void 0 === i ? void 0 : i.version) || n === u.currentTree.version) {\n var s;\n const n = null === (s = u.nextTree) || void 0 === s ? void 0 : s.version;\n void 0 !== n && I(t, e.getGraph(n), c);\n }\n }\n },\n B = function (t, e, n) {\n return n();\n },\n U = function (t) {\n return t;\n },\n F = function () {\n const e = new Set();\n for (var _len2 = arguments.length, t = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n t[_key2] = arguments[_key2];\n }\n for (const n of t) for (const t of n) e.add(t);\n return e;\n };\n const {\n mapByDeletingFromMap: W,\n mapByDeletingMultipleFromMap: z\n } = E,\n {\n getNodeLoadable: $,\n setNodeValue: H,\n setUnvalidatedAtomValue: G\n } = C,\n {\n saveDependencyMapToStore: q\n } = V,\n {\n DefaultValue: X,\n RecoilValueNotReady: Y\n } = S,\n {\n AbstractRecoilValue: K,\n RecoilState: J,\n RecoilValueReadOnly: Q,\n isRecoilValue: Z\n } = b;\n function tt(t, e) {\n const n = L(t, t => t);\n return e.forEach((t, e) => {\n \"hasValue\" === t.state && t.contents instanceof X ? n.delete(e) : n.set(e, t);\n }), n;\n }\n function et(t, e, n) {\n const {\n key: r\n } = e;\n B(\"set RecoilValue\", r, () => t.replaceState(U(o => {\n const a = function (t, _ref, n) {\n let {\n key: e\n } = _ref;\n if (\"function\" == typeof n) {\n var r;\n const o = t.getState(),\n a = null !== (r = o.nextTree) && void 0 !== r ? r : o.currentTree,\n i = $(t, a, e)[1];\n if (\"loading\" === i.state) throw new Y(e);\n if (\"hasError\" === i.state) throw i.contents;\n return n(i.contents);\n }\n return n;\n }(t, e, n),\n [i, u] = H(t, o, r, a),\n c = new Set(u.keys());\n return q(i, t, o.version), {\n ...o,\n dirtyAtoms: F(o.dirtyAtoms, c),\n atomValues: tt(o.atomValues, u),\n nonvalidatedAtoms: z(o.nonvalidatedAtoms, c)\n };\n })));\n }\n let nt = 0;\n var rt = {\n RecoilValueReadOnly: Q,\n AbstractRecoilValue: K,\n RecoilState: J,\n getRecoilValueAsLoadable: function (t, _ref2) {\n let {\n key: e\n } = _ref2;\n let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : t.getState().currentTree;\n var r, o;\n const a = t.getState();\n n.version !== a.currentTree.version && n.version !== (null === (r = a.nextTree) || void 0 === r ? void 0 : r.version) && (n.version, null === (o = a.previousTree) || void 0 === o || o.version);\n const [i, u] = $(t, n, e);\n return q(i, t, n.version), u;\n },\n setRecoilValue: et,\n setRecoilValueLoadable: function (t, e, n) {\n if (n instanceof X) return et(t, e, n);\n const {\n key: r\n } = e;\n B(\"set RecoilValue\", r, () => t.replaceState(U(t => {\n const e = new Set([r]);\n return {\n ...t,\n dirtyAtoms: F(t.dirtyAtoms, e),\n atomValues: tt(t.atomValues, new Map([[r, n]])),\n nonvalidatedAtoms: W(t.nonvalidatedAtoms, r)\n };\n })));\n },\n markRecoilValueModified: function (t, _ref3) {\n let {\n key: e\n } = _ref3;\n B(\"mark RecoilValue modified\", e, () => t.replaceState(U(t => ({\n ...t,\n dirtyAtoms: F(t.dirtyAtoms, new Set([e]))\n }))));\n },\n setUnvalidatedRecoilValue: function (t, _ref4, n) {\n let {\n key: e\n } = _ref4;\n B(\"set unvalidated persisted atom\", e, () => t.replaceState(U(t => G(t, e, n))));\n },\n subscribeToRecoilValue: function (t, _ref5, n) {\n let {\n key: e\n } = _ref5;\n const r = nt++,\n o = t.getState();\n return o.nodeToComponentSubscriptions.has(e) || o.nodeToComponentSubscriptions.set(e, new Map()), D(o.nodeToComponentSubscriptions.get(e)).set(r, [\"TODO debug name\", n]), {\n release: () => {\n const n = t.getState(),\n o = n.nodeToComponentSubscriptions.get(e);\n void 0 !== o && o.has(r) && (o.delete(r), 0 === o.size && n.nodeToComponentSubscriptions.delete(e));\n }\n };\n },\n isRecoilValue: Z,\n applyAtomValueWrites: tt\n },\n ot = function* (t, e) {\n let n = 0;\n for (const r of t) e(r, n++) && (yield r);\n };\n const at = new Map();\n function it(t) {\n var e;\n return null !== (e = at.get(t)) && void 0 !== e && e;\n }\n it.setPass = t => {\n at.set(t, !0);\n }, it.setFail = t => {\n at.set(t, !1);\n };\n var ut = it;\n const {\n graph: ct\n } = V;\n let st = 0;\n const lt = () => st++;\n function ft() {\n const t = lt();\n return {\n version: t,\n stateID: t,\n transactionMetadata: {},\n dirtyAtoms: new Set(),\n atomValues: new Map(),\n nonvalidatedAtoms: new Map()\n };\n }\n var pt = {\n makeEmptyTreeState: ft,\n makeEmptyStoreState: function () {\n const t = ft();\n return {\n currentTree: t,\n nextTree: null,\n previousTree: null,\n knownAtoms: new Set(),\n knownSelectors: new Set(),\n transactionSubscriptions: new Map(),\n nodeTransactionSubscriptions: new Map(),\n nodeToComponentSubscriptions: new Map(),\n queuedComponentCallbacks_DEPRECATED: [],\n suspendedComponentResolvers: new Set(),\n graphsByVersion: new Map().set(t.version, ct()),\n versionsUsedByComponent: new Map()\n };\n },\n getNextTreeStateVersion: lt\n };\n const {\n getDownstreamNodes: dt,\n peekNodeLoadable: ht\n } = C,\n {\n graph: vt\n } = V,\n {\n DEFAULT_VALUE: bt,\n recoilValues: yt\n } = S,\n {\n getRecoilValueAsLoadable: gt,\n setRecoilValue: mt\n } = rt,\n {\n getNextTreeStateVersion: _t,\n makeEmptyStoreState: wt\n } = pt;\n function Ot(t) {\n return function (t, e) {\n return function* () {\n let n = 0;\n for (const r of t) yield e(r, n++);\n }();\n }(t, t => D(yt.get(t)));\n }\n class St {\n constructor(t) {\n u(this, \"_store\", void 0), u(this, \"getLoadable\", t => gt(this._store, t)), u(this, \"getPromise\", t => ut(\"recoil_async_selector_refactor\") ? this.getLoadable(t).toPromise().then(_ref6 => {\n let {\n value: t\n } = _ref6;\n return t;\n }) : this.getLoadable(t).toPromise()), u(this, \"getNodes_UNSTABLE\", t => {\n if (!0 === (null == t ? void 0 : t.isModified)) return !1 === (null == t ? void 0 : t.isInitialized) ? [] : Ot(this._store.getState().currentTree.dirtyAtoms);\n const e = this._store.getState().knownAtoms,\n n = this._store.getState().knownSelectors;\n return null == (null == t ? void 0 : t.isInitialized) ? yt.values() : !0 === t.isInitialized ? Ot(function* (t) {\n for (const e of t) for (const t of e) yield t;\n }([this._store.getState().knownAtoms, this._store.getState().knownSelectors])) : ot(yt.values(), _ref7 => {\n let {\n key: t\n } = _ref7;\n return !e.has(t) && !n.has(t);\n });\n }), u(this, \"getDeps_UNSTABLE\", t => {\n this.getLoadable(t);\n const e = this._store.getGraph(this._store.getState().currentTree.version).nodeDeps.get(t.key);\n return Ot(null != e ? e : []);\n }), u(this, \"getSubscribers_UNSTABLE\", _ref8 => {\n let {\n key: t\n } = _ref8;\n const e = this._store.getState().currentTree;\n return {\n nodes: Ot(ot(dt(this._store, e, new Set([t])), e => e !== t))\n };\n }), u(this, \"getInfo_UNSTABLE\", t => {\n var e;\n const {\n key: n\n } = t,\n r = this._store.getState().currentTree,\n o = this._store.getGraph(r.version);\n return {\n loadable: ht(this._store, r, n),\n isActive: this._store.getState().knownAtoms.has(n) || this._store.getState().knownSelectors.has(n),\n isSet: r.atomValues.has(n),\n isModified: r.dirtyAtoms.has(n),\n type: this._store.getState().knownAtoms.has(n) ? \"atom\" : this._store.getState().knownSelectors.has(n) ? \"selector\" : void 0,\n deps: Ot(null !== (e = o.nodeDeps.get(n)) && void 0 !== e ? e : []),\n subscribers: this.getSubscribers_UNSTABLE(t)\n };\n }), u(this, \"map\", t => {\n const e = new At(this);\n return t(e), Et(e.getStore_INTERNAL());\n }), u(this, \"asyncMap\", async t => {\n const e = new At(this);\n return await t(e), Et(e.getStore_INTERNAL());\n }), this._store = {\n getState: () => t,\n replaceState: e => {\n t.currentTree = e(t.currentTree);\n },\n getGraph: e => {\n const n = t.graphsByVersion;\n if (n.has(e)) return D(n.get(e));\n const r = vt();\n return n.set(e, r), r;\n },\n subscribeToTransactions: () => ({\n release: () => {}\n }),\n addTransactionMetadata: () => {\n throw new Error(\"Cannot subscribe to Snapshots\");\n }\n };\n }\n getStore_INTERNAL() {\n return this._store;\n }\n getID() {\n return this.getID_INTERNAL();\n }\n getID_INTERNAL() {\n return this._store.getState().currentTree.stateID;\n }\n }\n function jt(t, e) {\n let n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !1;\n const r = t.getState(),\n o = n ? _t() : e.version;\n return {\n currentTree: n ? {\n version: o,\n stateID: o,\n transactionMetadata: {\n ...e.transactionMetadata\n },\n dirtyAtoms: new Set(e.dirtyAtoms),\n atomValues: new Map(e.atomValues),\n nonvalidatedAtoms: new Map(e.nonvalidatedAtoms)\n } : e,\n nextTree: null,\n previousTree: null,\n knownAtoms: new Set(r.knownAtoms),\n knownSelectors: new Set(r.knownSelectors),\n transactionSubscriptions: new Map(),\n nodeTransactionSubscriptions: new Map(),\n nodeToComponentSubscriptions: new Map(),\n queuedComponentCallbacks_DEPRECATED: [],\n suspendedComponentResolvers: new Set(),\n graphsByVersion: new Map().set(o, t.getGraph(e.version)),\n versionsUsedByComponent: new Map()\n };\n }\n function Et(t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"current\";\n const n = t.getState(),\n r = \"current\" === e ? n.currentTree : D(n.previousTree);\n return new St(jt(t, r));\n }\n class At extends St {\n constructor(t) {\n super(jt(t.getStore_INTERNAL(), t.getStore_INTERNAL().getState().currentTree, !0)), u(this, \"set\", (t, e) => {\n const n = this.getStore_INTERNAL();\n mt(n, t, e);\n }), u(this, \"reset\", t => mt(this.getStore_INTERNAL(), t, bt));\n }\n }\n var xt = {\n Snapshot: St,\n MutableSnapshot: At,\n freshSnapshot: function () {\n return new St(wt());\n },\n cloneSnapshot: Et\n },\n Tt = xt.Snapshot,\n Rt = xt.MutableSnapshot,\n Pt = xt.freshSnapshot,\n kt = xt.cloneSnapshot,\n Mt = Object.freeze({\n __proto__: null,\n Snapshot: Tt,\n MutableSnapshot: Rt,\n freshSnapshot: Pt,\n cloneSnapshot: kt\n });\n const {\n useContext: Ct,\n useEffect: Nt,\n useMemo: Lt,\n useRef: Dt,\n useState: It\n } = o.a,\n {\n getDownstreamNodes: Vt,\n setNodeValue: Bt,\n setUnvalidatedAtomValue: Ut\n } = C,\n {\n graph: Ft,\n saveDependencyMapToStore: Wt\n } = V,\n {\n cloneGraph: zt\n } = V,\n {\n applyAtomValueWrites: $t\n } = rt,\n {\n freshSnapshot: Ht\n } = Mt,\n {\n getNextTreeStateVersion: Gt,\n makeEmptyStoreState: qt\n } = pt,\n {\n mapByDeletingMultipleFromMap: Xt\n } = E;\n function Yt() {\n throw new Error(\"This component must be used inside a <RecoilRoot> component.\");\n }\n const Kt = Object.freeze({\n getState: Yt,\n replaceState: Yt,\n getGraph: Yt,\n subscribeToTransactions: Yt,\n addTransactionMetadata: Yt\n });\n let Jt = !1;\n function Qt(t) {\n if (Jt) throw new Error(\"An atom update was triggered within the execution of a state updater function. State updater functions provided to Recoil must be pure functions.\");\n if (null === t.nextTree) {\n const e = t.currentTree.version,\n n = Gt();\n t.nextTree = {\n ...t.currentTree,\n version: n,\n stateID: n,\n dirtyAtoms: new Set(),\n transactionMetadata: {}\n }, t.graphsByVersion.set(n, zt(D(t.graphsByVersion.get(e))));\n }\n }\n const Zt = o.a.createContext({\n current: Kt\n }),\n te = () => Ct(Zt),\n ee = o.a.createContext(null);\n function ne(t) {\n const e = t.getState(),\n n = e.currentTree,\n r = n.dirtyAtoms;\n if (r.size) {\n for (const [n, o] of e.nodeTransactionSubscriptions) if (r.has(n)) for (const [e, n] of o) n(t);\n for (const [n, r] of e.transactionSubscriptions) r(t);\n const o = Vt(t, n, r);\n for (const t of o) {\n const r = e.nodeToComponentSubscriptions.get(t);\n if (r) for (const [t, [e, o]] of r) o(n);\n }\n let a = \"[available in dev build]\";\n e.suspendedComponentResolvers.forEach(t => B(\"value became available, waking components\", a, t));\n }\n e.queuedComponentCallbacks_DEPRECATED.forEach(t => t(n)), e.queuedComponentCallbacks_DEPRECATED.splice(0, e.queuedComponentCallbacks_DEPRECATED.length);\n }\n function re(t) {\n const e = te(),\n [n, r] = It([]);\n return t.setNotifyBatcherOfChange(() => r({})), Nt(() => {\n j(\"Batcher\", () => {\n const t = e.current.getState(),\n {\n nextTree: n\n } = t;\n if (null === n) return;\n t.previousTree = t.currentTree, t.currentTree = n, t.nextTree = null, ne(e.current);\n const r = D(t.previousTree).version;\n t.graphsByVersion.delete(r), t.previousTree = null;\n });\n }), null;\n }\n let oe = 0;\n var ae,\n ie = {\n useStoreRef: te,\n useRecoilMutableSource: () => Ct(ee),\n RecoilRoot: function (_ref9) {\n let {\n initializeState_DEPRECATED: t,\n initializeState: e,\n store_INTERNAL: n,\n children: r\n } = _ref9;\n var a;\n let i;\n const u = Dt(null),\n c = null !== (a = o.a.createMutableSource) && void 0 !== a ? a : o.a.unstable_createMutableSource,\n s = null != n ? n : {\n getState: () => i.current,\n replaceState: t => {\n const e = l.current.getState();\n Qt(e);\n const n = D(e.nextTree);\n let r;\n try {\n Jt = !0, r = t(n);\n } finally {\n Jt = !1;\n }\n r !== n && (e.nextTree = r, D(u.current)());\n },\n getGraph: t => {\n const e = i.current.graphsByVersion;\n if (e.has(t)) return D(e.get(t));\n const n = Ft();\n return e.set(t, n), n;\n },\n subscribeToTransactions: (t, e) => {\n if (null == e) {\n const {\n transactionSubscriptions: e\n } = l.current.getState(),\n n = oe++;\n return e.set(n, t), {\n release: () => {\n e.delete(n);\n }\n };\n }\n {\n const {\n nodeTransactionSubscriptions: n\n } = l.current.getState();\n n.has(e) || n.set(e, new Map());\n const r = oe++;\n return D(n.get(e)).set(r, t), {\n release: () => {\n const t = n.get(e);\n t && (t.delete(r), 0 === t.size && n.delete(e));\n }\n };\n }\n },\n addTransactionMetadata: t => {\n Qt(l.current.getState());\n for (const e of Object.keys(t)) D(l.current.getState().nextTree).transactionMetadata[e] = t[e];\n }\n },\n l = Dt(s);\n i = Dt(null != t ? function (t, e) {\n const n = qt();\n return e({\n set: (e, r) => {\n const o = n.currentTree,\n [a, i] = Bt(t, o, e.key, r),\n u = new Set(i.keys());\n Wt(a, t, o.version);\n const c = Xt(o.nonvalidatedAtoms, u);\n n.currentTree = {\n ...o,\n dirtyAtoms: F(o.dirtyAtoms, u),\n atomValues: $t(o.atomValues, i),\n nonvalidatedAtoms: c\n };\n },\n setUnvalidatedAtomValues: t => {\n t.forEach((t, e) => {\n n.currentTree = Ut(n.currentTree, e, t);\n });\n }\n }), n;\n }(s, t) : null != e ? function (t) {\n return Ht().map(t).getStore_INTERNAL().getState();\n }(e) : qt());\n const f = Lt(() => c ? c(i, () => i.current.currentTree.version) : null, [c, i]);\n return o.a.createElement(Zt.Provider, {\n value: l\n }, o.a.createElement(ee.Provider, {\n value: f\n }, o.a.createElement(re, {\n setNotifyBatcherOfChange: function (t) {\n u.current = t;\n }\n }), r));\n },\n sendEndOfBatchNotifications_FOR_TESTING: ne\n };\n const {\n useCallback: ue,\n useEffect: ce,\n useMemo: se,\n useRef: le,\n useState: fe\n } = o.a,\n {\n DEFAULT_VALUE: pe,\n getNode: de,\n nodes: he\n } = S,\n {\n useRecoilMutableSource: ve,\n useStoreRef: be\n } = ie,\n {\n isRecoilValue: ye\n } = b,\n {\n AbstractRecoilValue: ge,\n getRecoilValueAsLoadable: me,\n setRecoilValue: _e,\n setRecoilValueLoadable: we,\n setUnvalidatedRecoilValue: Oe,\n subscribeToRecoilValue: Se\n } = rt,\n {\n Snapshot: je,\n cloneSnapshot: Ee\n } = Mt,\n {\n setByAddingToSet: Ae\n } = E;\n function xe(t, e, n) {\n if (\"hasValue\" === t.state) return t.contents;\n if (\"loading\" === t.state) throw new Promise(t => {\n n.current.getState().suspendedComponentResolvers.add(t);\n });\n throw \"hasError\" === t.state ? t.contents : new Error(\"Invalid value of loadable atom \\\"\".concat(e.key, \"\\\"\"));\n }\n const Te = null !== (ae = o.a.useMutableSource) && void 0 !== ae ? ae : o.a.unstable_useMutableSource;\n function Re(t) {\n return !Te || \"undefined\" != typeof window && window.$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE ? function (t) {\n const e = be(),\n [n, r] = fe([]);\n return ce(() => {\n const n = e.current,\n o = Se(n, t, e => {\n B(\"RecoilValue subscription fired\", t.key, () => {\n r([]);\n });\n });\n return B(\"initial update on subscribing\", t.key, () => {\n n.getState().nextTree ? n.getState().queuedComponentCallbacks_DEPRECATED.push(U(() => {\n r([]);\n })) : r([]);\n }), () => o.release(n);\n }, [t, e]), me(e.current, t);\n }(t) : function (t) {\n const e = be(),\n n = ue(() => me(e.current, t, e.current.getState().currentTree), [e, t]),\n r = ue((n, r) => {\n const o = e.current,\n a = Se(o, t, () => {\n B(\"RecoilValue subscription fired\", t.key, () => {\n r();\n });\n });\n return () => a.release(o);\n }, [t, e]);\n return Te(ve(), n, r);\n }(t);\n }\n function Pe(t) {\n const e = be();\n return xe(Re(t), t, e);\n }\n function ke(t) {\n const e = be();\n return ue(n => {\n _e(e.current, t, n);\n }, [e, t]);\n }\n function Me(t) {\n const e = be();\n ce(() => e.current.subscribeToTransactions(t).release, [t, e]);\n }\n function Ce(t) {\n const e = t.atomValues,\n n = L(function (t, e) {\n const n = new Map();\n for (const [r, o] of t) e(o, r) && n.set(r, o);\n return n;\n }(e, (t, e) => {\n const n = de(e).persistence_UNSTABLE;\n return null != n && \"none\" !== n.type && \"hasValue\" === t.state;\n }), t => t.contents);\n return function () {\n const e = new Map();\n for (var _len3 = arguments.length, t = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n t[_key3] = arguments[_key3];\n }\n for (let n = 0; n < t.length; n++) {\n const r = t[n].keys();\n let o;\n for (; !(o = r.next()).done;) e.set(o.value, t[n].get(o.value));\n }\n return e;\n }(t.nonvalidatedAtoms, n);\n }\n function Ne() {\n const t = be();\n return ue(e => {\n var n;\n const r = t.current.getState(),\n o = null !== (n = r.nextTree) && void 0 !== n ? n : r.currentTree,\n a = e.getStore_INTERNAL().getState().currentTree;\n i.a.unstable_batchedUpdates(() => {\n const n = new Set();\n for (const t of [o.atomValues.keys(), a.atomValues.keys()]) for (const e of t) {\n var r, i;\n (null === (r = o.atomValues.get(e)) || void 0 === r ? void 0 : r.contents) !== (null === (i = a.atomValues.get(e)) || void 0 === i ? void 0 : i.contents) && de(e).shouldRestoreFromSnapshots && n.add(e);\n }\n n.forEach(e => {\n we(t.current, new ge(e), a.atomValues.has(e) ? D(a.atomValues.get(e)) : pe);\n }), t.current.replaceState(t => ({\n ...t,\n stateID: e.getID_INTERNAL()\n }));\n });\n }, [t]);\n }\n class Le {}\n const De = new Le();\n var Ie = {\n recoilComponentGetRecoilValueCount_FOR_TESTING: {\n current: 0\n },\n useGotoRecoilSnapshot: Ne,\n useRecoilCallback: function (t, e) {\n const n = be(),\n r = Ne();\n return ue(function () {\n for (var _len4 = arguments.length, e = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n e[_key4] = arguments[_key4];\n }\n const o = Ee(n.current);\n function a(t, e) {\n _e(n.current, t, e);\n }\n function u(t) {\n _e(n.current, t, pe);\n }\n let c = De;\n return i.a.unstable_batchedUpdates(() => {\n c = t({\n set: a,\n reset: u,\n snapshot: o,\n gotoSnapshot: r\n })(...e);\n }), c instanceof Le && function (t, e) {\n if (!t) throw new Error(e);\n }(!1), c;\n }, null != e ? [...e, n] : void 0);\n },\n useRecoilInterface: function () {\n const t = be(),\n [e, n] = fe([]),\n r = le(new Set());\n r.current = new Set();\n const o = le(new Set()),\n a = le(new Map()),\n i = ue(e => {\n const n = a.current.get(e);\n n && (n.release(t.current), a.current.delete(e));\n }, [t, a]);\n return ce(() => {\n const e = t.current;\n function u(t, e) {\n a.current.has(e) && n([]);\n }\n N(r.current, o.current).forEach(t => {\n if (a.current.has(t)) return;\n const n = Se(e, new ge(t), e => {\n B(\"RecoilValue subscription fired\", t, () => {\n u(0, t);\n });\n });\n a.current.set(t, n), B(\"initial update on subscribing\", t, () => {\n e.getState().nextTree ? e.getState().queuedComponentCallbacks_DEPRECATED.push(U(() => {\n u(e.getState(), t);\n })) : u(e.getState(), t);\n });\n }), N(o.current, r.current).forEach(t => {\n i(t);\n }), o.current = r.current;\n }), ce(() => {\n const t = a.current;\n return () => t.forEach((t, e) => i(e));\n }, [i]), se(() => {\n function e(e) {\n return n => {\n _e(t.current, e, n);\n };\n }\n function n(e) {\n return r.current.has(e.key) || (r.current = Ae(r.current, e.key)), me(t.current, e);\n }\n function o(e) {\n return xe(n(e), e, t);\n }\n return {\n getRecoilValue: o,\n getRecoilValueLoadable: n,\n getRecoilState: function (t) {\n return [o(t), e(t)];\n },\n getRecoilStateLoadable: function (t) {\n return [n(t), e(t)];\n },\n getSetRecoilState: e,\n getResetRecoilState: function (e) {\n return () => _e(t.current, e, pe);\n }\n };\n }, [r, t]);\n },\n useRecoilSnapshot: function () {\n const t = be(),\n [e, n] = fe(() => Ee(t.current));\n return Me(ue(t => n(Ee(t)), [])), e;\n },\n useRecoilState: function (t) {\n return [Pe(t), ke(t)];\n },\n useRecoilStateLoadable: function (t) {\n return [Re(t), ke(t)];\n },\n useRecoilTransactionObserver: function (t) {\n Me(ue(e => {\n t({\n snapshot: Ee(e, \"current\"),\n previousSnapshot: Ee(e, \"previous\")\n });\n }, [t]));\n },\n useRecoilValue: Pe,\n useRecoilValueLoadable: Re,\n useResetRecoilState: function (t) {\n const e = be();\n return ue(() => {\n _e(e.current, t, pe);\n }, [e, t]);\n },\n useSetRecoilState: ke,\n useSetUnvalidatedAtomValues: function () {\n const t = be();\n return function (e) {\n let n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n i.a.unstable_batchedUpdates(() => {\n t.current.addTransactionMetadata(n), e.forEach((e, n) => Oe(t.current, new ge(n), e));\n });\n };\n },\n useTransactionObservation_DEPRECATED: function (t) {\n Me(ue(e => {\n let n = e.getState().previousTree;\n const r = e.getState().currentTree;\n n || (n = e.getState().currentTree);\n const o = Ce(r),\n a = Ce(n),\n i = L(he, t => {\n var e, n, r, o;\n return {\n persistence_UNSTABLE: {\n type: null !== (e = null === (n = t.persistence_UNSTABLE) || void 0 === n ? void 0 : n.type) && void 0 !== e ? e : \"none\",\n backButton: null !== (r = null === (o = t.persistence_UNSTABLE) || void 0 === o ? void 0 : o.backButton) && void 0 !== r && r\n }\n };\n }),\n u = function (t, e) {\n const n = new Set();\n for (const r of t) e(r) && n.add(r);\n return n;\n }(r.dirtyAtoms, t => o.has(t) || a.has(t));\n t({\n atomValues: o,\n previousAtomValues: a,\n atomInfo: i,\n modifiedAtoms: u,\n transactionMetadata: {\n ...r.transactionMetadata\n }\n });\n }, [t]));\n },\n useTransactionSubscription_DEPRECATED: Me\n };\n const {\n useMemo: Ve\n } = o.a,\n {\n RecoilRoot: Be,\n useStoreRef: Ue\n } = ie;\n var Fe = function (t) {\n return !!t && \"function\" == typeof t.then;\n };\n const We = {\n getValue() {\n if (\"hasValue\" !== this.state) throw this.contents;\n return this.contents;\n },\n toPromise() {\n return \"hasValue\" === this.state ? Promise.resolve(this.contents) : \"hasError\" === this.state ? Promise.reject(this.contents) : this.contents;\n },\n valueMaybe() {\n return \"hasValue\" === this.state ? this.contents : void 0;\n },\n valueOrThrow() {\n if (\"hasValue\" !== this.state) throw new Error(\"Loadable expected value, but in \\\"\".concat(this.state, \"\\\" state\"));\n return this.contents;\n },\n errorMaybe() {\n return \"hasError\" === this.state ? this.contents : void 0;\n },\n errorOrThrow() {\n if (\"hasError\" !== this.state) throw new Error(\"Loadable expected error, but in \\\"\".concat(this.state, \"\\\" state\"));\n return this.contents;\n },\n promiseMaybe() {\n return \"loading\" === this.state ? this.contents : void 0;\n },\n promiseOrThrow() {\n if (\"loading\" !== this.state) throw new Error(\"Loadable expected promise, but in \\\"\".concat(this.state, \"\\\" state\"));\n return this.contents;\n },\n map(t) {\n if (\"hasError\" === this.state) return this;\n if (\"hasValue\" === this.state) try {\n const e = t(this.contents);\n return Fe(e) ? He(e) : ze(e);\n } catch (e) {\n return Fe(e) ? He(e.next(() => t(this.contents))) : $e(e);\n }\n if (\"loading\" === this.state) return He(this.contents.then(t).catch(e => {\n if (Fe(e)) return e.then(() => t(this.contents));\n throw e;\n }));\n throw new Error(\"Invalid Loadable state\");\n }\n };\n function ze(t) {\n return Object.freeze({\n state: \"hasValue\",\n contents: t,\n ...We\n });\n }\n function $e(t) {\n return Object.freeze({\n state: \"hasError\",\n contents: t,\n ...We\n });\n }\n function He(t) {\n return Object.freeze({\n state: \"loading\",\n contents: t,\n ...We\n });\n }\n var Ge = {\n loadableWithValue: ze,\n loadableWithError: $e,\n loadableWithPromise: He,\n loadableLoading: function () {\n return He(new Promise(() => {}));\n },\n loadableAll: function (t) {\n return t.every(t => \"hasValue\" === t.state) ? ze(t.map(t => t.contents)) : t.some(t => \"hasError\" === t.state) ? $e(D(t.find(t => \"hasError\" === t.state), \"Invalid loadable passed to loadableAll\").contents) : He(ut(\"recoil_async_selector_refactor\") ? Promise.all(t.map(t => t.contents)).then(t => ({\n value: t\n })) : Promise.all(t.map(t => t.contents)));\n }\n };\n const qe = Symbol(\"ArrayKeyedMap\"),\n Xe = new Map();\n class Ye {\n constructor(t) {\n if (this._base = new Map(), t instanceof Ye) for (const [e, n] of t.entries()) this.set(e, n);else if (t) for (const [e, n] of t) this.set(e, n);\n return this;\n }\n get(t) {\n const e = Array.isArray(t) ? t : [t];\n let n = this._base;\n return e.forEach(t => {\n var e;\n n = null !== (e = n.get(t)) && void 0 !== e ? e : Xe;\n }), void 0 === n ? void 0 : n.get(qe);\n }\n set(t, e) {\n const n = Array.isArray(t) ? t : [t];\n let r = this._base,\n o = r;\n return n.forEach(t => {\n o = r.get(t), o || (o = new Map(), r.set(t, o)), r = o;\n }), o.set(qe, e), this;\n }\n delete(t) {\n const e = Array.isArray(t) ? t : [t];\n let n = this._base,\n r = n;\n return e.forEach(t => {\n r = n.get(t), r || (r = new Map(), n.set(t, r)), n = r;\n }), r.delete(qe), this;\n }\n entries() {\n const t = [];\n return function e(n, r) {\n n.forEach((n, o) => {\n o === qe ? t.push([r, n]) : e(n, r.concat(o));\n });\n }(this._base, []), t.values();\n }\n toBuiltInMap() {\n return new Map(this.entries());\n }\n }\n var Ke = Ye,\n Je = function () {\n return new Ke();\n };\n const {\n loadableWithError: Qe,\n loadableWithPromise: Ze,\n loadableWithValue: tn\n } = Ge,\n {\n getNodeLoadable: en,\n peekNodeLoadable: nn,\n setNodeValue: rn\n } = C,\n {\n addToDependencyMap: on,\n mergeDepsIntoDependencyMap: an,\n saveDependencyMapToStore: un\n } = V,\n {\n DEFAULT_VALUE: cn,\n RecoilValueNotReady: sn,\n registerNode: ln\n } = S,\n {\n AbstractRecoilValue: fn\n } = b,\n {\n getRecoilValueAsLoadable: pn,\n isRecoilValue: dn,\n setRecoilValueLoadable: hn\n } = rt,\n {\n startPerfBlock: vn\n } = {\n startPerfBlock: function (t) {\n return () => null;\n }\n },\n bn = Object.freeze(new Set());\n function yn(t) {\n const e = [];\n for (const n of Array.from(t.keys()).sort()) {\n const r = D(t.get(n));\n e.push(n), e.push(r.state), e.push(r.contents);\n }\n return e;\n }\n const gn = new Map();\n var mn = function (t) {\n const {\n key: e,\n get: n,\n cacheImplementation_UNSTABLE: r\n } = t,\n o = null != t.set ? t.set : void 0;\n let a = null != r ? r : Je();\n function i(t) {\n t.getState().knownSelectors.add(e);\n }\n function u(t, e) {\n if (\"loading\" === e.state) {\n let n = gn.get(e);\n void 0 === n && gn.set(e, n = new Set()), n.add(t);\n }\n }\n function c(t, n) {\n const r = gn.get(t);\n if (void 0 !== r) {\n for (const t of r) hn(t, new fn(e), n);\n gn.delete(t);\n }\n }\n function s(t, r) {\n var o;\n const i = new Map(),\n s = null !== (o = t.getGraph(r.version).nodeDeps.get(e)) && void 0 !== o ? o : bn,\n l = yn(new Map(Array.from(s).sort().map(e => {\n const [n, o] = en(t, r, e);\n return an(n, i), un(i, t, r.version), [e, o];\n }))),\n f = a.get(l);\n if (null != f) return u(t, f), [i, f];\n const [p, d, h] = function (t, r) {\n const o = vn(e),\n a = new Map(),\n i = new Map();\n function u(_ref10) {\n let {\n key: n\n } = _ref10;\n on(e, n, i);\n const [o, u] = en(t, r, n);\n if (a.set(n, u), an(o, i), un(i, t, r.version), \"hasValue\" === u.state) return u.contents;\n throw u.contents;\n }\n try {\n const t = n({\n get: u\n }),\n e = dn(t) ? u(t) : t;\n let r;\n return Fe(e) ? r = Ze(e.finally(o)) : (o(), r = tn(e)), [i, r, a];\n } catch (n) {\n let r;\n return void 0 !== n.then ? r = Ze(n.then(() => {\n const n = pn(t, new fn(e));\n if (\"hasError\" === n.state) throw n.contents;\n return n.contents;\n }).finally(o)) : (o(), r = Qe(n)), [i, r, a];\n }\n }(t, r);\n an(p, i), un(i, t, r.version);\n const v = yn(h);\n return u(t, d), function (t, e) {\n \"loading\" !== e.state || e.contents.then(n => {\n const r = tn(n);\n return a = a.set(t, r), c(e, r), n;\n }).catch(n => {\n if (Fe(n)) return n;\n const r = Qe(n);\n return a = a.set(t, r), c(e, r), n;\n }), a = a.set(t, e);\n }(v, d), [i, d];\n }\n function l(t, n) {\n var r;\n const o = null !== (r = t.getGraph(n.version).nodeDeps.get(e)) && void 0 !== r ? r : bn,\n i = new Map(Array.from(o).sort().map(e => [e, nn(t, n, e)])),\n u = new Map();\n for (const [t, e] of i.entries()) {\n if (null == e) return;\n u.set(t, e);\n }\n const c = yn(u);\n return a.get(c);\n }\n function f(t, e) {\n return i(t), s(t, e);\n }\n return ln(null != o ? {\n key: e,\n peek: l,\n get: f,\n set: function (t, e, n) {\n i(t);\n const r = new Map(),\n a = new Map();\n function u(_ref11) {\n let {\n key: n\n } = _ref11;\n const [o, a] = en(t, e, n);\n if (an(o, r), \"hasValue\" === a.state) return a.contents;\n throw \"loading\" === a.state ? new sn(n) : a.contents;\n }\n function c(n, o) {\n const i = \"function\" == typeof o ? o(u(n)) : o,\n [c, s] = rn(t, e, n.key, i);\n an(c, r), s.forEach((t, e) => a.set(e, t));\n }\n return o({\n set: c,\n get: u,\n reset: function (t) {\n c(t, cn);\n }\n }, n), [r, a];\n },\n dangerouslyAllowMutability: t.dangerouslyAllowMutability,\n shouldRestoreFromSnapshots: !1\n } : {\n key: e,\n peek: l,\n get: f,\n dangerouslyAllowMutability: t.dangerouslyAllowMutability,\n shouldRestoreFromSnapshots: !1\n });\n };\n const {\n loadableWithError: _n,\n loadableWithPromise: wn,\n loadableWithValue: On\n } = Ge,\n {\n DEFAULT_VALUE: Sn,\n DefaultValue: jn,\n registerNode: En\n } = S,\n {\n isRecoilValue: An\n } = b,\n {\n markRecoilValueModified: xn,\n setRecoilValue: Tn,\n setRecoilValueLoadable: Rn\n } = rt;\n var Pn = function t(e) {\n const {\n default: n,\n ...r\n } = e;\n return An(n) ? function (e) {\n const n = t({\n ...e,\n default: Sn,\n persistence_UNSTABLE: void 0 === e.persistence_UNSTABLE ? void 0 : {\n ...e.persistence_UNSTABLE,\n validator: t => t instanceof jn ? t : D(e.persistence_UNSTABLE).validator(t, Sn)\n },\n effects_UNSTABLE: e.effects_UNSTABLE\n });\n return mn({\n key: e.key + \"__withFallback\",\n get: _ref12 => {\n let {\n get: t\n } = _ref12;\n const r = t(n);\n return r instanceof jn ? e.default : r;\n },\n set: (_ref13, e) => {\n let {\n set: t\n } = _ref13;\n return t(n, e);\n },\n dangerouslyAllowMutability: e.dangerouslyAllowMutability\n });\n }({\n ...r,\n default: n\n }) : function (t) {\n const {\n key: e,\n persistence_UNSTABLE: n\n } = t;\n let r = Fe(t.default) ? wn(t.default.then(t => (r = On(t), t)).catch(t => {\n throw r = _n(t), t;\n })) : On(t.default),\n o = void 0;\n function a(n, o, a) {\n if (n.getState().knownAtoms.has(e)) return;\n if (n.getState().knownAtoms.add(e), \"loading\" === r.state) {\n function u() {\n var t;\n (null !== (t = n.getState().nextTree) && void 0 !== t ? t : n.getState().currentTree).atomValues.has(e) || xn(n, i);\n }\n r.contents.then(u).catch(u);\n }\n let c = Sn;\n if (null != t.effects_UNSTABLE) {\n let o = !0;\n function s(t) {\n if (o) {\n const e = c instanceof jn || Fe(c) ? \"hasValue\" === r.state ? r.contents : Sn : c;\n c = \"function\" == typeof t ? t(e) : t;\n } else {\n if (Fe(t)) throw new Error(\"Setting atoms to async values is not implemented.\");\n Tn(n, i, t);\n }\n }\n const u = () => s(Sn);\n function l(t) {\n n.subscribeToTransactions(n => {\n let {\n currentTree: o,\n previousTree: a\n } = n.getState();\n a || (a = o);\n const i = o.atomValues.get(e);\n if (null == i || \"hasValue\" === i.state) {\n var u;\n const n = null != i ? i.contents : Sn,\n o = null !== (u = a.atomValues.get(e)) && void 0 !== u ? u : r,\n c = \"hasValue\" === o.state ? o.contents : Sn;\n t(n, c);\n }\n }, e);\n }\n for (const e of null !== (f = t.effects_UNSTABLE) && void 0 !== f ? f : []) {\n var f;\n e({\n node: i,\n trigger: a,\n setSelf: s,\n resetSelf: u,\n onSet: l\n });\n }\n o = !1;\n }\n c instanceof jn || o.atomValues.set(e, Fe(c) ? wn(function (t, n) {\n const r = n.then(n => {\n var o, a;\n return (null === (a = (null !== (o = t.getState().nextTree) && void 0 !== o ? o : t.getState().currentTree).atomValues.get(e)) || void 0 === a ? void 0 : a.contents) === r && Tn(t, i, n), n;\n }).catch(n => {\n var o, a;\n throw (null === (a = (null !== (o = t.getState().nextTree) && void 0 !== o ? o : t.getState().currentTree).atomValues.get(e)) || void 0 === a ? void 0 : a.contents) === r && Rn(t, i, _n(n)), n;\n });\n return r;\n }(n, c)) : On(c));\n }\n const i = En({\n key: e,\n peek: function (t, n) {\n var a, i, u;\n return null !== (a = null !== (i = n.atomValues.get(e)) && void 0 !== i ? i : null === (u = o) || void 0 === u ? void 0 : u[1]) && void 0 !== a ? a : r;\n },\n get: function (t, i) {\n if (a(t, i, \"get\"), i.atomValues.has(e)) return [new Map(), D(i.atomValues.get(e))];\n if (i.nonvalidatedAtoms.has(e)) {\n if (null != o) return o;\n if (null == n) return [new Map(), r];\n const t = i.nonvalidatedAtoms.get(e),\n a = n.validator(t, Sn),\n u = a instanceof jn ? r : On(a);\n return o = [new Map(), u], o;\n }\n return [new Map(), r];\n },\n set: function (t, n, r) {\n if (a(t, n, \"set\"), n.atomValues.has(e)) {\n const t = D(n.atomValues.get(e));\n if (\"hasValue\" === t.state && r === t.contents) return [new Map(), new Map()];\n } else if (!n.nonvalidatedAtoms.has(e) && r instanceof jn) return [new Map(), new Map()];\n return o = void 0, [new Map(), new Map().set(e, On(r))];\n },\n invalidate: function () {\n o = void 0;\n },\n dangerouslyAllowMutability: t.dangerouslyAllowMutability,\n persistence_UNSTABLE: t.persistence_UNSTABLE ? {\n type: t.persistence_UNSTABLE.type,\n backButton: t.persistence_UNSTABLE.backButton\n } : void 0,\n shouldRestoreFromSnapshots: !0\n });\n return i;\n }({\n ...r,\n default: n\n });\n },\n kn = function (t) {\n let e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n allowFunctions: !1\n };\n return function t(e, n, r) {\n if (\"string\" == typeof e && !e.includes('\"') && !e.includes(\"\\\\\")) return \"\\\"\".concat(e, \"\\\"\");\n switch (typeof e) {\n case \"undefined\":\n return \"\";\n case \"boolean\":\n return e ? \"true\" : \"false\";\n case \"number\":\n case \"symbol\":\n return String(e);\n case \"string\":\n return JSON.stringify(e);\n case \"function\":\n if (!0 !== (null == n ? void 0 : n.allowFunctions)) throw new Error(\"Attempt to serialize function in a Recoil cache key\");\n return \"__FUNCTION(\".concat(e.name, \")__\");\n }\n if (null === e) return \"null\";\n var o;\n if (\"object\" != typeof e) return null !== (o = JSON.stringify(e)) && void 0 !== o ? o : \"\";\n if (Fe(e)) return \"__PROMISE__\";\n if (Array.isArray(e)) return \"[\".concat(e.map((e, r) => t(e, n, r.toString())), \"]\");\n if (\"function\" == typeof e.toJSON) return t(e.toJSON(r), n, r);\n if (e instanceof Map) {\n const o = {};\n for (const [r, a] of e) o[\"string\" == typeof r ? r : t(r, n)] = a;\n return t(o, n, r);\n }\n return e instanceof Set ? t(Array.from(e).sort((e, r) => t(e, n).localeCompare(t(r, n))), n, r) : null != e[Symbol.iterator] && \"function\" == typeof e[Symbol.iterator] ? t(Array.from(e), n, r) : \"{\".concat(Object.keys(e).filter(t => void 0 !== e[t]).sort().map(r => \"\".concat(t(r, n), \":\").concat(t(e[r], n, r))).join(\",\"), \"}\");\n }(t, e);\n },\n Mn = function () {\n const t = new Map(),\n e = {\n get: e => t.get(kn(e)),\n set: (n, r) => (t.set(kn(n), r), e),\n map: t\n };\n return e;\n };\n let Cn = 0;\n var Nn = function (t) {\n var e, n;\n let r = null !== (e = null === (n = t.cacheImplementationForParams_UNSTABLE) || void 0 === n ? void 0 : n.call(t)) && void 0 !== e ? e : Mn();\n return e => {\n var n, o;\n const a = r.get(e);\n if (null != a) return a;\n const i = \"\".concat(t.key, \"__selectorFamily/\").concat(null !== (n = kn(e, {\n allowFunctions: !0\n })) && void 0 !== n ? n : \"void\", \"/\").concat(Cn++),\n u = n => t.get(e)(n),\n c = null === (o = t.cacheImplementation_UNSTABLE) || void 0 === o ? void 0 : o.call(t);\n let s;\n if (null != t.set) {\n const n = t.set;\n s = mn({\n key: i,\n get: u,\n set: (t, r) => n(e)(t, r),\n cacheImplementation_UNSTABLE: c,\n dangerouslyAllowMutability: t.dangerouslyAllowMutability\n });\n } else s = mn({\n key: i,\n get: u,\n cacheImplementation_UNSTABLE: c,\n dangerouslyAllowMutability: t.dangerouslyAllowMutability\n });\n return r = r.set(e, s), s;\n };\n };\n const {\n DEFAULT_VALUE: Ln,\n DefaultValue: Dn\n } = S;\n const In = Nn({\n key: \"__constant\",\n get: t => () => t,\n cacheImplementationForParams_UNSTABLE: Je\n });\n const Vn = Nn({\n key: \"__error\",\n get: t => () => {\n throw new Error(t);\n },\n cacheImplementationForParams_UNSTABLE: Je\n });\n const {\n loadableWithError: Bn,\n loadableWithPromise: Un,\n loadableWithValue: Fn\n } = Ge;\n function Wn(t, e) {\n const n = Array(e.length).fill(void 0),\n r = Array(e.length).fill(void 0);\n for (const [o, a] of e.entries()) try {\n n[o] = t(a);\n } catch (t) {\n r[o] = t;\n }\n return [n, r];\n }\n function zn(t) {\n return null != t && !Fe(t);\n }\n function $n(t) {\n return Array.isArray(t) ? t : Object.getOwnPropertyNames(t).map(e => t[e]);\n }\n function Hn(t) {\n return t.hasOwnProperty(\"value\") ? t.value : t;\n }\n function Gn(t, e) {\n return Array.isArray(t) ? e : Object.getOwnPropertyNames(t).reduce((t, n, r) => ({\n ...t,\n [n]: e[r]\n }), {});\n }\n function qn(t, e, n) {\n return Gn(t, n.map((t, n) => null == t ? Fn(e[n]) : Fe(t) ? Un(t) : Bn(t)));\n }\n var Xn = {\n waitForNone: Nn({\n key: \"__waitForNone\",\n get: t => _ref14 => {\n let {\n get: e\n } = _ref14;\n const n = $n(t),\n [r, o] = Wn(e, n);\n return qn(t, r, o);\n }\n }),\n waitForAny: Nn({\n key: \"__waitForAny\",\n get: t => _ref15 => {\n let {\n get: e\n } = _ref15;\n const n = $n(t),\n [r, o] = Wn(e, n);\n if (o.some(t => null == t)) return qn(t, r, o);\n if (o.every(zn)) throw o.find(zn);\n if (ut(\"recoil_async_selector_refactor\")) return new Promise((e, n) => {\n for (const [a, i] of o.entries()) Fe(i) && i.then(n => {\n r[a] = Hn(n), o[a] = null, e(qn(t, r, o));\n }).catch(t => {\n o[a] = t, o.every(zn) && n(o[0]);\n });\n });\n throw new Promise((e, n) => {\n for (const [a, i] of o.entries()) Fe(i) && i.then(n => {\n r[a] = n, o[a] = null, e(qn(t, r, o));\n }).catch(t => {\n o[a] = t, o.every(zn) && n(o[0]);\n });\n });\n }\n }),\n waitForAll: Nn({\n key: \"__waitForAll\",\n get: t => _ref16 => {\n let {\n get: e\n } = _ref16;\n const n = $n(t),\n [r, o] = Wn(e, n);\n if (o.every(t => null == t)) return Gn(t, r);\n const a = o.find(zn);\n if (null != a) throw a;\n if (ut(\"recoil_async_selector_refactor\")) return Promise.all(o).then(e => Gn(t, e.map(Hn)));\n throw Promise.all(o).then(e => Gn(t, e));\n }\n }),\n noWait: Nn({\n key: \"__noWait\",\n get: t => _ref17 => {\n let {\n get: e\n } = _ref17;\n try {\n return Fn(e(t));\n } catch (t) {\n return Fe(t) ? Un(t) : Bn(t);\n }\n }\n })\n };\n const {\n DefaultValue: Yn\n } = S,\n {\n RecoilRoot: Kn\n } = ie,\n {\n isRecoilValue: Jn\n } = b,\n {\n useGotoRecoilSnapshot: Qn,\n useRecoilCallback: Zn,\n useRecoilSnapshot: tr,\n useRecoilState: er,\n useRecoilStateLoadable: nr,\n useRecoilTransactionObserver: rr,\n useRecoilValue: or,\n useRecoilValueLoadable: ar,\n useResetRecoilState: ir,\n useSetRecoilState: ur,\n useSetUnvalidatedAtomValues: cr,\n useTransactionObservation_DEPRECATED: sr\n } = Ie,\n {\n noWait: lr,\n waitForAll: fr,\n waitForAny: pr,\n waitForNone: dr\n } = Xn;\n var hr = {\n DefaultValue: Yn,\n RecoilRoot: Kn,\n useRecoilBridgeAcrossReactRoots_UNSTABLE: function () {\n const t = Ue().current;\n return Ve(() => function (_ref18) {\n let {\n children: e\n } = _ref18;\n return o.a.createElement(Be, {\n store_INTERNAL: t\n }, e);\n }, [t]);\n },\n atom: Pn,\n selector: mn,\n atomFamily: function (t) {\n let e = Mn();\n const n = {\n key: t.key,\n default: Ln,\n persistence_UNSTABLE: t.persistence_UNSTABLE\n };\n let r;\n r = Pn(n);\n const o = Nn({\n key: t.key + \"__atomFamily/Default\",\n get: e => _ref19 => {\n let {\n get: n\n } = _ref19;\n const o = n(\"function\" == typeof r ? r(e) : r);\n return o instanceof Dn ? \"function\" == typeof t.default ? t.default(e) : t.default : o;\n },\n dangerouslyAllowMutability: t.dangerouslyAllowMutability\n });\n return n => {\n var r;\n const a = e.get(n);\n if (null != a) return a;\n const i = Pn({\n ...t,\n key: \"\".concat(t.key, \"__\").concat(null !== (r = kn(n)) && void 0 !== r ? r : \"void\"),\n default: o(n),\n effects_UNSTABLE: \"function\" == typeof t.effects_UNSTABLE ? t.effects_UNSTABLE(n) : t.effects_UNSTABLE\n });\n return e = e.set(n, i), i;\n };\n },\n selectorFamily: Nn,\n constSelector: function (t) {\n return In(t);\n },\n errorSelector: function (t) {\n return Vn(t);\n },\n readOnlySelector: function (t) {\n return t;\n },\n useRecoilValue: or,\n useRecoilValueLoadable: ar,\n useRecoilState: er,\n useRecoilStateLoadable: nr,\n useSetRecoilState: ur,\n useResetRecoilState: ir,\n useRecoilCallback: Zn,\n useGotoRecoilSnapshot: Qn,\n useRecoilSnapshot: tr,\n useRecoilTransactionObserver_UNSTABLE: rr,\n useTransactionObservation_UNSTABLE: sr,\n useSetUnvalidatedAtomValues_UNSTABLE: cr,\n noWait: lr,\n waitForNone: dr,\n waitForAny: pr,\n waitForAll: fr,\n isRecoilValue: Jn\n },\n vr = hr.RecoilRoot,\n br = hr.atom,\n yr = hr.selector,\n gr = hr.useRecoilValue,\n mr = hr.useRecoilState,\n _r = hr.useSetRecoilState,\n wr = n(17),\n Or = n.n(wr),\n Sr = n(100),\n jr = n.n(Sr),\n Er = n(1),\n Ar = br({\n key: \"@brainhubeu/react-carousel/slideMovementState\",\n default: {\n clicked: null,\n dragStart: null,\n dragEnd: null,\n dragOffset: 0\n }\n }),\n xr = br({\n key: \"@brainhubeu/react-carousel/transitionEnabledState\",\n default: !1\n }),\n Tr = br({\n key: \"@brainhubeu/react-carousel/trackWidthState\",\n default: 0\n }),\n Rr = br({\n key: \"@brainhubeu/react-carousel/trackStylesState\",\n default: {\n marginLeft: 0,\n transform: 0\n }\n }),\n Pr = br({\n key: \"@brainhubeu/react-carousel/carouselStrategiesState\",\n default: []\n }),\n kr = br({\n key: \"@brainhubeu/react-carousel/carouselValueState\",\n default: 0\n }),\n Mr = n(18),\n Cr = n.n(Mr),\n Nr = n(19),\n Lr = n.n(Nr),\n Dr = function (t, e) {\n var n = (e || []).length - 1;\n return t > n ? n : t < 0 ? 0 : t;\n },\n Ir = \"CHANGE_SLIDE\",\n Vr = \"GET_CURRENT_VALUE\",\n Br = \"GET_TRANSFORM_OFFSET\",\n Ur = \"GET_NEAREST_SLIDE\",\n Fr = br({\n key: \"@brainhubeu/react-carousel/activeSlideIndexState\",\n default: 0\n }),\n Wr = br({\n key: \"@brainhubeu/react-carousel/itemWidthState\",\n default: 0\n }),\n zr = br({\n key: \"@brainhubeu/react-carousel/itemOffsetState\",\n default: 0\n }),\n $r = br({\n key: \"@brainhubeu/react-carousel/slidesState\",\n default: []\n });\n function Hr(t) {\n return function (t) {\n if (Array.isArray(t)) return Gr(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n }(t) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return Gr(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Gr(t, e) : void 0;\n }\n }(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function Gr(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n var qr = yr({\n key: \"@brainhubeu/react-carousel/getCurrentSlideSelector\",\n get: function (t) {\n var e = t.get,\n n = e(kr),\n r = e($r),\n o = function () {\n return Dr(n, r);\n },\n a = e(Pr).map(function (t) {\n return t && t[Vr];\n }).filter(function (t) {\n return \"function\" == typeof t;\n });\n return a.map(function (t) {\n return Lr()(t, null, n);\n }).length ? Cr()([o].concat(Hr(a)))() : o();\n },\n set: function (t, e) {\n var n = t.set,\n r = t.get,\n o = r($r),\n a = function () {\n return Dr(e, o);\n },\n i = r(Pr).map(function (t) {\n return t && t[Ir];\n }).filter(function (t) {\n return \"function\" == typeof t;\n }),\n u = i.map(function (t) {\n return Lr()(t, null, e);\n }),\n c = i.length ? Cr()([a].concat(Hr(u)))() : a();\n n(kr, c);\n }\n }),\n Xr = yr({\n key: \"@brainhubeu/react-carousel/transformOffsetSelector\",\n get: function (t) {\n var e = t.get,\n n = e(Wr),\n r = e(zr),\n o = e(Ar).dragOffset,\n a = e(kr),\n i = function () {\n return o - a * (n + r);\n },\n u = e(Pr).map(function (t) {\n return t && t[Br];\n }).filter(function (t) {\n return \"function\" == typeof t;\n }),\n c = u.map(function (t) {\n return Lr()(t, null, a);\n });\n return u.length ? Cr()([i].concat(Hr(c)))() : i();\n }\n }),\n Yr = yr({\n key: \"@brainhubeu/react-carousel/nearestSlideSelector\",\n get: function (t) {\n var e = t.get,\n n = e(Wr),\n r = e(Ar).dragOffset,\n o = e(kr),\n a = e($r),\n i = function () {\n var t = -Math.round(r / n);\n return Dr(o + t, a);\n },\n u = e(Pr).map(function (t) {\n return t && t[Ur];\n }).filter(function (t) {\n return \"function\" == typeof t;\n }),\n c = u.map(function (t) {\n return Lr()(t, null, o);\n });\n return u.length ? Cr()([i].concat(Hr(c)))() : i();\n }\n }),\n Kr = n(36),\n Jr = function (t) {\n var e = typeof t;\n return null != t && (\"object\" == e || \"function\" == e);\n },\n Qr = n(105),\n Zr = \"object\" == typeof self && self && self.Object === Object && self,\n to = Qr.a || Zr || Function(\"return this\")(),\n eo = function () {\n return to.Date.now();\n },\n no = to.Symbol,\n ro = Object.prototype,\n oo = ro.hasOwnProperty,\n ao = ro.toString,\n io = no ? no.toStringTag : void 0,\n uo = Object.prototype.toString,\n co = no ? no.toStringTag : void 0,\n so = function (t) {\n return null == t ? void 0 === t ? \"[object Undefined]\" : \"[object Null]\" : co && co in Object(t) ? function (t) {\n var e = oo.call(t, io),\n n = t[io];\n try {\n t[io] = void 0;\n var r = !0;\n } catch (t) {}\n var o = ao.call(t);\n return r && (e ? t[io] = n : delete t[io]), o;\n }(t) : function (t) {\n return uo.call(t);\n }(t);\n },\n lo = /^\\s+|\\s+$/g,\n fo = /^[-+]0x[0-9a-f]+$/i,\n po = /^0b[01]+$/i,\n ho = /^0o[0-7]+$/i,\n vo = parseInt,\n bo = function (t) {\n if (\"number\" == typeof t) return t;\n if (function (t) {\n return \"symbol\" == typeof t || function (t) {\n return null != t && \"object\" == typeof t;\n }(t) && \"[object Symbol]\" == so(t);\n }(t)) return NaN;\n if (Jr(t)) {\n var e = \"function\" == typeof t.valueOf ? t.valueOf() : t;\n t = Jr(e) ? e + \"\" : e;\n }\n if (\"string\" != typeof t) return 0 === t ? t : +t;\n t = t.replace(lo, \"\");\n var n = po.test(t);\n return n || ho.test(t) ? vo(t.slice(2), n ? 2 : 8) : fo.test(t) ? NaN : +t;\n },\n yo = Math.max,\n go = Math.min,\n mo = function (t, e, n) {\n var r,\n o,\n a,\n i,\n u,\n c,\n s = 0,\n l = !1,\n f = !1,\n p = !0;\n if (\"function\" != typeof t) throw new TypeError(\"Expected a function\");\n function d(e) {\n var n = r,\n a = o;\n return r = o = void 0, s = e, i = t.apply(a, n);\n }\n function h(t) {\n return s = t, u = setTimeout(b, e), l ? d(t) : i;\n }\n function v(t) {\n var n = t - c;\n return void 0 === c || n >= e || n < 0 || f && t - s >= a;\n }\n function b() {\n var t = eo();\n if (v(t)) return y(t);\n u = setTimeout(b, function (t) {\n var n = e - (t - c);\n return f ? go(n, a - (t - s)) : n;\n }(t));\n }\n function y(t) {\n return u = void 0, p && r ? d(t) : (r = o = void 0, i);\n }\n function g() {\n var t = eo(),\n n = v(t);\n if (r = arguments, o = this, c = t, n) {\n if (void 0 === u) return h(c);\n if (f) return clearTimeout(u), u = setTimeout(b, e), d(c);\n }\n return void 0 === u && (u = setTimeout(b, e)), i;\n }\n return e = bo(e) || 0, Jr(n) && (l = !!n.leading, a = (f = \"maxWait\" in n) ? yo(bo(n.maxWait) || 0, e) : a, p = \"trailing\" in n ? !!n.trailing : p), g.cancel = function () {\n void 0 !== u && clearTimeout(u), s = 0, r = c = o = u = void 0;\n }, g.flush = function () {\n return void 0 === u ? i : y(eo());\n }, g;\n },\n _o = {\n debounce: mo,\n throttle: function (t, e, n) {\n var r = !0,\n o = !0;\n if (\"function\" != typeof t) throw new TypeError(\"Expected a function\");\n return Jr(n) && (r = \"leading\" in n ? !!n.leading : r, o = \"trailing\" in n ? !!n.trailing : o), mo(t, e, {\n leading: r,\n maxWait: e,\n trailing: o\n });\n }\n },\n wo = function (t) {\n return \"function\" == typeof t;\n },\n Oo = function () {\n return \"undefined\" == typeof window;\n },\n So = function (t) {\n return t instanceof Element || t instanceof HTMLDocument;\n };\n function jo(t) {\n return (jo = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n })(t);\n }\n function Eo(t, e) {\n for (var n = 0; n < e.length; n++) {\n var r = e[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(t, r.key, r);\n }\n }\n function Ao(t, e) {\n return (Ao = Object.setPrototypeOf || function (t, e) {\n return t.__proto__ = e, t;\n })(t, e);\n }\n function xo(t, e) {\n return !e || \"object\" !== jo(e) && \"function\" != typeof e ? To(t) : e;\n }\n function To(t) {\n if (void 0 === t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return t;\n }\n function Ro(t) {\n return (Ro = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n })(t);\n }\n function Po(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n var ko = function (t) {\n !function (t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), e && Ao(t, e);\n }(u, t);\n var e,\n n,\n i = function (t) {\n var e = function () {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0;\n } catch (t) {\n return !1;\n }\n }();\n return function () {\n var n,\n r = Ro(t);\n if (e) {\n var o = Ro(this).constructor;\n n = Reflect.construct(r, arguments, o);\n } else n = r.apply(this, arguments);\n return xo(this, n);\n };\n }(u);\n function u(t) {\n var e;\n !function (t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, u), Po(To(e = i.call(this, t)), \"cancelHandler\", function () {\n e.resizeHandler && e.resizeHandler.cancel && (e.resizeHandler.cancel(), e.resizeHandler = null);\n }), Po(To(e), \"rafClean\", function () {\n e.raf && e.raf.cancel && (e.raf.cancel(), e.raf = null);\n }), Po(To(e), \"toggleObserver\", function (t) {\n var n = e.getElement();\n n && e.resizeObserver[t] && e.resizeObserver[t](n);\n }), Po(To(e), \"getElement\", function () {\n var t = e.props,\n n = t.querySelector,\n r = t.targetDomEl;\n if (!Oo()) {\n if (n) return document.querySelector(n);\n if (r && So(r)) return r;\n if (e.targetRef && So(e.targetRef.current)) return e.targetRef.current;\n var o = Object(a.findDOMNode)(To(e));\n if (o) switch (e.getRenderType()) {\n case \"renderProp\":\n case \"childFunction\":\n case \"child\":\n case \"childArray\":\n return o;\n default:\n return o.parentElement;\n }\n }\n }), Po(To(e), \"createUpdater\", function () {\n return e.rafClean(), e.raf = function (t) {\n var e = [],\n n = null,\n r = function () {\n for (var r = arguments.length, o = new Array(r), a = 0; a < r; a++) o[a] = arguments[a];\n e = o, n || (n = requestAnimationFrame(function () {\n n = null, t.apply(void 0, e);\n }));\n };\n return r.cancel = function () {\n n && (cancelAnimationFrame(n), n = null);\n }, r;\n }(function (t) {\n var n = t.width,\n r = t.height,\n o = e.props.onResize;\n wo(o) && o(n, r), e.setState({\n width: n,\n height: r\n });\n }), e.raf;\n }), Po(To(e), \"createResizeHandler\", function (t) {\n var n = e.state,\n r = n.width,\n o = n.height,\n a = e.props,\n i = a.handleWidth,\n u = a.handleHeight;\n if (i || u) {\n var c = e.createUpdater();\n t.forEach(function (t) {\n var n = t && t.contentRect || {},\n a = n.width,\n s = n.height,\n l = i && r !== a || u && o !== s;\n !e.skipOnMount && l && !Oo() && c({\n width: a,\n height: s\n }), e.skipOnMount = !1;\n });\n }\n }), Po(To(e), \"getRenderType\", function () {\n var t = e.props,\n n = t.render,\n o = t.children;\n return wo(n) ? \"renderProp\" : wo(o) ? \"childFunction\" : Object(r.isValidElement)(o) ? \"child\" : Array.isArray(o) ? \"childArray\" : \"parent\";\n });\n var n = t.skipOnMount,\n o = t.refreshMode,\n c = t.refreshRate,\n s = t.refreshOptions;\n e.state = {\n width: void 0,\n height: void 0\n }, e.skipOnMount = n, e.raf = null, e.unmounted = !1, e.targetRef = Object(r.createRef)();\n var l = _o[o];\n return e.resizeHandler = l ? l(e.createResizeHandler, c, s) : e.createResizeHandler, e.resizeObserver = new Kr.a(e.resizeHandler), e;\n }\n return e = u, (n = [{\n key: \"componentDidMount\",\n value: function () {\n var t = this.props.targetRef;\n t && t.current && (this.targetRef.current = t.current), this.toggleObserver(\"observe\");\n }\n }, {\n key: \"componentWillUnmount\",\n value: function () {\n this.toggleObserver(\"unobserve\"), this.rafClean(), this.cancelHandler(), this.unmounted = !0;\n }\n }, {\n key: \"render\",\n value: function () {\n var t = this.props,\n e = t.render,\n n = t.children,\n a = t.nodeType,\n i = this.state,\n u = {\n width: i.width,\n height: i.height,\n targetRef: this.targetRef\n };\n switch (this.getRenderType()) {\n case \"renderProp\":\n return e(u);\n case \"childFunction\":\n return n(u);\n case \"child\":\n if (\"string\" == typeof n.type) {\n var c = function (t, e) {\n if (null == t) return {};\n var n,\n r,\n o = function (t, e) {\n if (null == t) return {};\n var n,\n r,\n o = {},\n a = Object.keys(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || (o[n] = t[n]);\n return o;\n }(t, e);\n if (Object.getOwnPropertySymbols) {\n var a = Object.getOwnPropertySymbols(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(t, n) && (o[n] = t[n]);\n }\n return o;\n }(u, [\"targetRef\"]);\n return Object(r.cloneElement)(n, c);\n }\n return Object(r.cloneElement)(n, u);\n case \"childArray\":\n return n.map(function (t) {\n return !!t && Object(r.cloneElement)(t, u);\n });\n default:\n return o.a.createElement(a, null);\n }\n }\n }]) && Eo(e.prototype, n), u;\n }(r.PureComponent);\n ko.propTypes = {\n handleWidth: Er.bool,\n handleHeight: Er.bool,\n skipOnMount: Er.bool,\n refreshRate: Er.number,\n refreshMode: Er.string,\n refreshOptions: Object(Er.shape)({\n leading: Er.bool,\n trailing: Er.bool\n }),\n querySelector: Er.string,\n targetDomEl: Er.any,\n targetRef: Object(Er.oneOfType)([Er.func, Object(Er.shape)({\n current: Er.any\n })]),\n onResize: Er.func,\n render: Er.func,\n children: Er.any,\n nodeType: Er.node\n }, ko.defaultProps = {\n handleWidth: !0,\n handleHeight: !0,\n skipOnMount: !1,\n refreshRate: 1e3,\n refreshMode: void 0,\n refreshOptions: void 0,\n querySelector: null,\n targetDomEl: null,\n targetRef: null,\n onResize: null,\n render: void 0,\n children: null,\n nodeType: \"div\"\n };\n var Mo = ko;\n function Co(t) {\n return (Co = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n })(t);\n }\n function No() {\n return (No = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]);\n }\n return t;\n }).apply(this, arguments);\n }\n function Lo(t, e) {\n if (null == t) return {};\n var n,\n r,\n o = function (t, e) {\n if (null == t) return {};\n var n,\n r,\n o = {},\n a = Object.keys(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || (o[n] = t[n]);\n return o;\n }(t, e);\n if (Object.getOwnPropertySymbols) {\n var a = Object.getOwnPropertySymbols(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(t, n) && (o[n] = t[n]);\n }\n return o;\n }\n function Do(t, e) {\n if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function Io(t, e) {\n for (var n = 0; n < e.length; n++) {\n var r = e[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(t, r.key, r);\n }\n }\n function Vo(t, e, n) {\n return e && Io(t.prototype, e), n && Io(t, n), t;\n }\n function Bo(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), e && function (t, e) {\n (Object.setPrototypeOf || function (t, e) {\n return t.__proto__ = e, t;\n })(t, e);\n }(t, e);\n }\n function Uo(t) {\n var e = function () {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0;\n } catch (t) {\n return !1;\n }\n }();\n return function () {\n var n,\n r = zo(t);\n if (e) {\n var o = zo(this).constructor;\n n = Reflect.construct(r, arguments, o);\n } else n = r.apply(this, arguments);\n return Fo(this, n);\n };\n }\n function Fo(t, e) {\n return !e || \"object\" !== Co(e) && \"function\" != typeof e ? Wo(t) : e;\n }\n function Wo(t) {\n if (void 0 === t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return t;\n }\n function zo(t) {\n return (zo = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n })(t);\n }\n function $o(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n var Ho = n(5),\n Go = n.n(Ho),\n qo = n(101),\n Xo = n.n(qo),\n Yo = function (t, e) {\n var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},\n o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : window,\n a = Object(r.useRef)();\n Object(r.useEffect)(function () {\n a.current = e;\n }, [e]), Object(r.useEffect)(function () {\n if (o && o.addEventListener) {\n var e = function (t) {\n return a.current(t);\n };\n return o.addEventListener(t, e, n), function () {\n o.removeEventListener(t, e);\n };\n }\n }, [t, o]);\n },\n Ko = n(102),\n Jo = n.n(Ko),\n Qo = function (t) {\n var e = t.changedTouches[0],\n n = e.screenX,\n r = e.screenY,\n o = e.clientX,\n a = e.clientY,\n i = new MouseEvent({\n touchstart: \"mousedown\",\n touchmove: \"mousemove\",\n touchend: \"mouseup\"\n }[t.type], {\n bubbles: !0,\n cancelable: !0,\n view: window,\n detail: 1,\n screenX: n,\n screenY: r,\n clientX: o,\n clientY: a\n });\n e.target.dispatchEvent(i);\n },\n Zo = function (t, e) {\n return t ? Array.isArray(t) ? t : [t] : e || [];\n },\n ta = n(35),\n ea = n.n(ta),\n na = n(103),\n ra = n.n(na),\n oa = {\n numberOfSlides: 3\n },\n aa = function (t) {\n var e = t.carouselProps,\n n = t.refs,\n o = t.options,\n a = void 0 === o ? oa : o;\n return {\n name: ni.SLIDES_TO_SHOW,\n plugin: function () {\n var t = Object(r.useRef)(!0),\n o = _r(Wr),\n i = function () {\n o(n.trackContainerRef.current.offsetWidth / a.numberOfSlides);\n };\n Object(r.useEffect)(function () {\n t.current ? t.current = !1 : i();\n }, [e.width, n.trackContainerRef.current]), Yo(\"resize\", i), Yo(\"load\", i);\n }\n };\n },\n ia = n(61),\n ua = n.n(ia),\n ca = n(104),\n sa = n.n(ca);\n function la(t) {\n return function (t) {\n if (Array.isArray(t)) return va(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n }(t) || ha(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function fa(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function pa(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? fa(Object(n), !0).forEach(function (e) {\n da(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : fa(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function da(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n function ha(t, e) {\n if (t) {\n if (\"string\" == typeof t) return va(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? va(t, e) : void 0;\n }\n }\n function va(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n var ba = {\n numberOfInfiniteClones: 2\n },\n ya = function (t) {\n var e = t.options,\n n = void 0 === e ? ba : e,\n o = t.carouselProps,\n a = gr(Wr),\n i = Zo(o.children, o.slides),\n u = function () {\n return Math.abs(o.value) > i.length ? Math.ceil(o.value / i.length) : 0;\n },\n c = function () {\n var t = u();\n return t < 0 ? -t : 0;\n },\n s = function () {\n return -i.length * a * c();\n };\n return {\n name: ni.INFINITE,\n plugin: function () {\n var t = _r(Tr),\n e = _r(Fr),\n a = function (t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || ha(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }(mr(Rr), 2),\n l = a[0],\n f = a[1],\n p = _r($r),\n d = n.numberOfInfiniteClones,\n h = function () {\n return d + c();\n },\n v = function () {\n return d + ((t = u()) > 0 ? t : 0);\n var t;\n };\n Object(r.useEffect)(function () {\n e(function () {\n var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null,\n e = Or()(t) ? o.value : t,\n n = i.length;\n return e >= 0 ? e % n : (n - Math.abs(e % n)) % n;\n }(0) + o.value + h() * i.length), f(pa(pa({}, l), {}, {\n marginLeft: s()\n }));\n }, [o.value]), Object(r.useEffect)(function () {\n var e = 1 + h() + v(),\n n = ua()(h(), function () {\n return i;\n }),\n r = ua()(v(), function () {\n return i;\n });\n t(o.width * i.length * e), p(sa.a.apply(void 0, la(n).concat([i], la(r))));\n }, [o.width, i.length, o.value]);\n },\n strategies: function () {\n var t,\n e = gr(Ar),\n n = gr(Fr),\n r = gr(Wr),\n i = (e.marginLeft || \"0\").match(/\\d/g).join(\"\");\n return da(t = {}, Ir, function (t) {\n return t;\n }), da(t, Ur, function (t) {\n return t + -Math.round(e.dragOffset / r);\n }), da(t, Vr, function () {\n return o.value;\n }), da(t, Br, function () {\n var t = a;\n return e.dragOffset - n * t - i - s();\n }), t;\n }\n };\n };\n function ga(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function ma(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? ga(Object(n), !0).forEach(function (e) {\n wa(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ga(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function _a(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n function wa(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n var Oa = 0,\n Sa = function (t) {\n var e = t.carouselProps;\n return {\n name: ni.CLICK_TO_CHANGE,\n strategies: function () {\n var t = gr(Ar),\n n = gr(Fr);\n return wa({}, Ir, function (r, o) {\n var a,\n i,\n u = (a = Math.abs(t.dragStart)) < (i = Math.abs(t.dragEnd) || 0) ? \"LEFT\" : a > i ? \"RIGHT\" : \"NONE\";\n return \"NONE\" === u ? o : Oa !== t.clicked ? \"LEFT\" === u && o <= t.clicked ? (Oa = o, o) : (Oa = t.clicked, n ? e.value + t.clicked - n : t.clicked) : (Oa = o || r, o || r);\n });\n },\n slideCustomProps: function () {\n var t = _r(xr),\n e = function (t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return _a(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _a(t, e) : void 0;\n }\n }(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }(mr(Ar), 2),\n n = e[0],\n o = e[1];\n return {\n onMouseDown: Object(r.useCallback)(function (e, r) {\n e.preventDefault(), e.stopPropagation(), t(!0);\n var a = e.pageX;\n o(ma(ma({}, n), {}, {\n clicked: r,\n dragStart: a\n }));\n }, [n, t])\n };\n },\n itemClassNames: function () {\n return [\"BrainhubCarouselItem--clickable\"];\n }\n };\n };\n function ja(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n function Ea(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function Aa(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? Ea(Object(n), !0).forEach(function (e) {\n xa(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : Ea(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function xa(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n var Ta = null,\n Ra = {\n interval: 2e3,\n stopAutoPlayOnHover: !0,\n direction: \"RIGHT\"\n },\n Pa = function (t) {\n var e = t.carouselProps,\n n = t.options,\n o = void 0 === n ? {} : n,\n a = Aa(Aa({}, Ra), o);\n return {\n name: ni.AUTOPLAY,\n trackCustomProps: function () {\n var t = _r(qr),\n n = function (t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return ja(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? ja(t, e) : void 0;\n }\n }(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }(Object(r.useState)(!1), 2),\n o = n[0],\n i = n[1],\n u = function () {\n Ta && clearInterval(Ta), Ta = setInterval(function () {\n if (!document.hidden && !o) {\n var n = e.value + (\"LEFT\" === (r = a.direction.toUpperCase()) ? -1 : \"RIGHT\" === r ? 1 : 0);\n e.onChange(n), t(n);\n }\n var r;\n }, a.interval);\n };\n return u(), {\n onMouseEnter: a.stopAutoPlayOnHover ? function () {\n i(!0);\n } : null,\n onMouseLeave: a.stopAutoPlayOnHover ? function () {\n i(!1), u();\n } : null\n };\n }\n };\n };\n function ka(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function Ma(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? ka(Object(n), !0).forEach(function (e) {\n Ca(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ka(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function Ca(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n function Na(t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return La(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? La(t, e) : void 0;\n }\n }(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function La(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n n(239);\n var Da,\n Ia = function (t) {\n var e = t.carouselProps;\n return {\n name: ni.RTL,\n plugin: function () {\n var t = Na(mr(Rr), 2),\n n = t[0],\n o = t[1],\n a = gr($r);\n Object(r.useEffect)(function () {\n var t;\n (null == e || null === (t = e.children) || void 0 === t ? void 0 : t.length) !== a.length && o(Ma(Ma({}, n), {}, {\n transform: -e.transformOffset\n }));\n }, [e.transformOffset]);\n },\n strategies: function () {\n var t,\n e = gr($r),\n n = gr(Ar),\n r = gr(kr);\n return Ca(t = {}, Ir, function (t, o) {\n if (n.dragOffset) return Dr(t, e);\n var a = r + (o - r);\n return t !== o ? Dr(a, e) : a;\n }), Ca(t, Br, function (t, e) {\n return -e;\n }), t;\n },\n carouselClassNames: function () {\n var t = gr($r),\n n = [];\n return e.children.length === t.length && n.push(\"BrainhubCarousel--isRTL\"), n;\n },\n carouselCustomProps: function () {\n var t = Na(mr(Ar), 2),\n e = t[0],\n n = t[1];\n return {\n onMouseMove: Object(r.useCallback)(function (t) {\n var r = t.pageX;\n null !== e.dragStart && n(function (t) {\n return Ma(Ma({}, e), {}, {\n dragOffset: t.dragStart - r,\n dragEnd: r\n });\n });\n }, [e])\n };\n }\n };\n },\n Va = function (t) {\n var e = t.refs;\n return {\n name: ni.CENTERED,\n strategies: function () {\n var t,\n n,\n r,\n o,\n a,\n i = gr(Wr),\n u = gr(zr),\n c = null === (t = e.trackContainerRef) || void 0 === t || null === (n = t.current) || void 0 === n ? void 0 : n.offsetWidth;\n return a = function (t, e) {\n return e + (c / 2 - (i + u) / 2);\n }, (o = Br) in (r = {}) ? Object.defineProperty(r, o, {\n value: a,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : r[o] = a, r;\n }\n };\n },\n Ba = {\n numberOfSlides: 3\n },\n Ua = function (t) {\n var e = t.carouselProps,\n n = t.options,\n r = void 0 === n ? Ba : n;\n return {\n name: ni.SLIDES_TO_SCROLL,\n strategies: function () {\n var t,\n n,\n o,\n a = gr(kr),\n i = gr($r);\n return o = function (t, n) {\n var o,\n u = function (t, e) {\n return t < 0 ? -t - e : t > 0 ? e - t : 0;\n }(n - a, r.numberOfSlides);\n return (null == e || null === (o = e.children) || void 0 === o ? void 0 : o.length) !== i.length ? n + u : Dr(n + u, i);\n }, (n = Ir) in (t = {}) ? Object.defineProperty(t, n, {\n value: o,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[n] = o, t;\n }\n };\n },\n Fa = (n(243), function (t, e, n, r, a) {\n var i = arguments.length > 5 && void 0 !== arguments[5] && arguments[5];\n return o.a.createElement(\"div\", {\n key: a,\n className: Go()(\"BrainhubCarousel__customArrows\", {\n \"BrainhubCarousel__arrow--disable\": i\n }, \"BrainhubCarousel__custom-\".concat(n)),\n onClick: r ? e : null\n }, t);\n }),\n Wa = o.a.createElement(\"span\", null, \"prev\"),\n za = o.a.createElement(\"span\", null, \"next\"),\n $a = function (t) {\n var e = t.carouselProps,\n n = t.options,\n a = void 0 === n ? {} : n;\n return {\n name: ni.ARROWS,\n beforeCarouselItems: function () {\n var t,\n n = gr($r),\n i = Object(r.useCallback)(function () {\n return e.onChange(e.value - 1);\n }, [e.value, e.onChange]),\n u = e.value <= 0 && (null == e || null === (t = e.children) || void 0 === t ? void 0 : t.length) === n.length;\n if (a.arrowLeft) {\n if (!u) return Fa(a.arrowLeft, i, \"arrowLeft\", a.addArrowClickHandler, \"@brainhubeu/react-carousel/custom-arrow-left\");\n var c = a.arrowLeftDisabled ? a.arrowLeftDisabled : a.arrowLeft;\n return Fa(c, i, \"arrowLeft\", a.addArrowClickHandler, \"@brainhubeu/react-carousel/custom-arrow-left\", u);\n }\n return o.a.createElement(\"button\", {\n key: \"@brainhubeu/react-carousel/arrow-left\",\n className: \"BrainhubCarousel__arrows BrainhubCarousel__arrowLeft\",\n onClick: i,\n disabled: u\n }, Wa);\n },\n afterCarouselItems: function () {\n var t,\n n = gr($r),\n i = Object(r.useCallback)(function () {\n return e.onChange(e.value + 1);\n }, [e.value, e.onChange]),\n u = e.value >= n.length - 1 && (null == e || null === (t = e.children) || void 0 === t ? void 0 : t.length) === n.length;\n if (a.arrowRight) {\n if (!u) return Fa(a.arrowRight, i, \"arrowLeft\", a.addArrowClickHandler, \"@brainhubeu/react-carousel/custom-arrow-right\");\n var c = a.arrowRightDisabled ? a.arrowRightDisabled : a.arrowRight;\n return Fa(c, i, \"arrowLeft\", a.addArrowClickHandler, \"@brainhubeu/react-carousel/custom-arrow-right\", u);\n }\n return o.a.createElement(\"button\", {\n key: \"@brainhubeu/react-carousel/arrow-right\",\n className: \"BrainhubCarousel__arrows BrainhubCarousel__arrowRight\",\n onClick: i,\n disabled: u\n }, za);\n }\n };\n },\n Ha = function (t) {\n var e = t.carouselProps;\n return {\n name: ni.FAST_SWIPE,\n strategies: function () {\n var t = gr(Ar).dragOffset,\n n = gr(kr);\n return function (t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }({}, Ur, function () {\n var r = t > 0 ? -Math.ceil(t / e.width) : -Math.floor(t / e.width);\n return n + r;\n });\n }\n };\n };\n function Ga(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n var qa = aa,\n Xa = ya,\n Ya = Sa,\n Ka = Pa,\n Ja = Ia,\n Qa = Va,\n Za = Ua,\n ti = $a,\n ei = Ha,\n ni = {\n SLIDES_TO_SHOW: \"SLIDESTOSHOW\",\n CLICK_TO_CHANGE: \"CLICKTOCHANGE\",\n INFINITE: \"INFINITE\",\n AUTOPLAY: \"AUTOPLAY\",\n RTL: \"RTL\",\n CENTERED: \"CENTERED\",\n SLIDES_TO_SCROLL: \"SLIDESTOSCROLL\",\n ARROWS: \"ARROWS\",\n FAST_SWIPE: \"FASTSWIPE\"\n },\n ri = (Ga(Da = {}, ni.SLIDES_TO_SHOW, qa), Ga(Da, ni.CLICK_TO_CHANGE, Ya), Ga(Da, ni.INFINITE, Xa), Ga(Da, ni.RTL, Ja), Ga(Da, ni.AUTOPLAY, Ka), Ga(Da, ni.CENTERED, Qa), Ga(Da, ni.SLIDES_TO_SCROLL, Za), Ga(Da, ni.ARROWS, ti), Ga(Da, ni.FAST_SWIPE, ei), Da),\n oi = [ni.FAST_SWIPE, ni.ARROWS, ni.SLIDES_TO_SHOW, ni.AUTOPLAY, ni.INFINITE, ni.RTL, ni.CLICK_TO_CHANGE, ni.CENTERED, ni.SLIDES_TO_SCROLL];\n function ai(t) {\n return function (t) {\n if (Array.isArray(t)) return ii(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n }(t) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return ii(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? ii(t, e) : void 0;\n }\n }(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function ii(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n function ui(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function ci(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? ui(Object(n), !0).forEach(function (e) {\n si(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ui(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function si(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n function li(t) {\n return function (t) {\n if (Array.isArray(t)) return fi(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n }(t) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return fi(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? fi(t, e) : void 0;\n }\n }(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function fi(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n n(245);\n var pi = Object(r.memo)(function (t) {\n var e = t.index,\n n = t.onMouseDown,\n a = t.onTouchStart,\n i = t.currentSlideIndex,\n u = t.isDraggingEnabled,\n c = t.itemClassNames,\n s = t.width,\n l = t.offset,\n f = t.isDragging,\n p = t.children,\n d = Object(r.useRef)(null),\n h = Object(r.useRef)(!0),\n v = function () {\n d.current && (d.current.style = null, d.current.offsetWidth > s && (d.current.style.width = \"\".concat(s, \"px\")));\n };\n return Object(r.useEffect)(function () {\n var t;\n h.current ? h.current = !1 : (t = new Kr.a(function () {\n v(), d.current && t.unobserve(d.current);\n }), d.current && t.observe(d.current));\n }, []), Object(r.useEffect)(function () {\n v();\n }, [s]), o.a.createElement(\"li\", {\n className: Go.a.apply(void 0, [\"BrainhubCarouselItem\", {\n \"BrainhubCarouselItem--active\": e === i\n }].concat(li(c || []))),\n style: {\n marginRight: \"\".concat(l / 2, \"px\"),\n marginLeft: \"\".concat(l / 2, \"px\"),\n width: \"\".concat(s, \"px\"),\n maxWidth: \"\".concat(s, \"px\"),\n minWidth: \"\".concat(s, \"px\"),\n pointerEvents: f ? \"none\" : null\n },\n onMouseDown: u ? function (t) {\n n(t, e);\n } : null,\n onTouchStart: u ? function (t) {\n a(t, e);\n } : null\n }, d.current ? o.a.cloneElement(p, {\n ref: d\n }) : p);\n });\n function di(t) {\n return function (t) {\n if (Array.isArray(t)) return _i(t);\n }(t) || function (t) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n }(t) || mi(t) || function () {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function hi() {\n return (hi = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]);\n }\n return t;\n }).apply(this, arguments);\n }\n function vi(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function bi(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? vi(Object(n), !0).forEach(function (e) {\n yi(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : vi(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function yi(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n function gi(t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || mi(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function mi(t, e) {\n if (t) {\n if (\"string\" == typeof t) return _i(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? _i(t, e) : void 0;\n }\n }\n function _i(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n n(247);\n var wi = function (t) {\n var e = gi(mr(Ar), 2),\n n = e[0],\n a = e[1],\n i = gi(mr(Wr), 2),\n u = i[0],\n c = i[1],\n s = _r(zr),\n l = gi(mr(Tr), 2),\n f = l[0],\n p = l[1],\n d = gi(mr(Fr), 1)[0],\n h = gi(mr(xr), 2),\n v = h[0],\n b = h[1],\n y = gi(mr(Rr), 2),\n g = y[0],\n m = y[1],\n _ = Zo(t.children, t.slides),\n w = gi(mr($r), 2),\n O = w[0],\n S = w[1],\n j = _r(Pr),\n E = Object(r.useRef)(!0),\n A = Object(r.useRef)(null),\n x = Object(r.useRef)(null),\n T = function (t, e, n, r) {\n var o = null == e ? void 0 : e.plugins.map(function (t) {\n return \"string\" == typeof t ? ri[t.toUpperCase()] && ri[t.toUpperCase()]({\n carouselProps: ci(ci({}, e), {}, {\n children: e.children ? e.children : e.slides\n }),\n options: t.options,\n refs: {\n trackContainerRef: n,\n carouselRef: r\n }\n }) : t.resolve({\n carouselProps: e,\n options: t.options,\n refs: {\n trackContainerRef: n,\n carouselRef: r\n }\n });\n }),\n a = ea()(o.map(function (t) {\n return t.itemClassNames && t.itemClassNames({\n carouselProps: e,\n options: t.options,\n refs: {\n trackContainerRef: n,\n carouselRef: r\n }\n });\n })).filter(function (t) {\n return \"string\" == typeof t;\n }),\n i = ea()(o.map(function (t) {\n return t.carouselClassNames && t.carouselClassNames({\n carouselProps: e,\n options: t.options,\n refs: {\n trackContainerRef: n,\n carouselRef: r\n }\n });\n })).filter(function (t) {\n return \"string\" == typeof t;\n }),\n u = Object.assign.apply(Object, [{}].concat(ai(o.map(function (t) {\n return t.carouselCustomProps && t.carouselCustomProps();\n })))),\n c = Object.assign.apply(Object, [{}].concat(ai(o.map(function (t) {\n return t.trackCustomProps && t.trackCustomProps();\n })))),\n s = Object.assign.apply(Object, [{}].concat(ai(o.map(function (t) {\n return t.slideCustomProps && t.slideCustomProps();\n }))));\n return {\n itemClassNames: a,\n carouselClassNames: i,\n beforeCarouselItems: o.map(function (t) {\n return t.beforeCarouselItems && t.beforeCarouselItems();\n }) || [],\n afterCarouselItems: o.map(function (t) {\n return t.afterCarouselItems && t.afterCarouselItems();\n }) || [],\n strategies: ra()(o, function (t) {\n return oi.indexOf(t.name);\n }).map(function (t) {\n return t.strategies && t.strategies();\n }),\n carouselCustomProps: u,\n trackCustomProps: c,\n slideCustomProps: s,\n carouselPlugins: o\n };\n }(t.plugins, t, x, A),\n R = T.carouselPlugins,\n P = T.itemClassNames,\n k = T.carouselClassNames,\n M = T.beforeCarouselItems,\n C = T.afterCarouselItems,\n N = T.strategies,\n L = T.carouselCustomProps,\n D = T.trackCustomProps,\n I = T.slideCustomProps;\n j(N);\n var V,\n B,\n U,\n F = Object(r.useCallback)(function (t) {\n var e = t.pageX;\n null !== n.dragStart && a(function (t) {\n return bi(bi({}, n), {}, {\n dragOffset: e - t.dragStart,\n dragEnd: e\n });\n });\n }, [n, b]),\n W = Object(r.useCallback)(function (t, e) {\n t.preventDefault(), t.stopPropagation(), b(!1);\n var r = t.pageX;\n a(bi(bi({}, n), {}, {\n clicked: e,\n dragStart: r\n }));\n }, [n, b]),\n z = Object(r.useCallback)(function (t, e) {\n var n = t.changedTouches;\n a({\n clicked: e,\n dragStart: n[0].pageX\n });\n }, []),\n $ = Object(r.useCallback)(function () {\n null !== n.dragStart && (t.onChange(t.nearestSlideIndex), a({\n clicked: null,\n dragOffset: 0,\n dragStart: null,\n dragEnd: null\n })), b(!0);\n }, [b, a, n]);\n return function (t) {\n var e = t.width,\n n = t.carouselRef,\n o = t.setItemWidth,\n a = t.trackContainerRef,\n i = Object(r.useRef)(!0),\n u = Jo()(function () {\n n && a && o(a.current.offsetWidth);\n }, 300);\n Object(r.useEffect)(function () {\n i.current ? i.current = !1 : u();\n }, [e, a.current]);\n }({\n carouselRef: A,\n itemWidth: u,\n setItemWidth: c,\n trackContainerRef: x,\n width: t.width\n }), Object(r.useEffect)(function () {\n S(_);\n }, [_]), Object(r.useEffect)(function () {\n s(t.offset);\n }, [t.offset]), Object(r.useEffect)(function () {\n E.current ? E.current = !1 : b(!0);\n }, [t.value]), Object(r.useEffect)(function () {\n var e = t.width * _.length;\n p(e);\n }, [t.width]), Object(r.useEffect)(function () {\n m(bi(bi({}, g), {}, {\n transform: t.transformOffset\n }));\n }, [t.transformOffset]), Yo(\"mouseup\", $, {\n passive: !0,\n capture: !0\n }), Yo(\"touchstart\", Qo, {\n passive: !0,\n capture: !0\n }, A.current), Yo(\"touchmove\", Qo, A.current), Yo(\"touchend\", Qo, {\n passive: !0,\n capture: !0\n }, A.current), null == R || R.forEach(function (t) {\n return \"function\" == typeof t ? t() : t.plugin && t.plugin();\n }), o.a.createElement(\"div\", {\n className: \"BrainhubCarousel__container\"\n }, o.a.createElement(\"div\", hi({\n className: Go.a.apply(void 0, [\"BrainhubCarousel\", t.className].concat(di(k || []))),\n onMouseMove: F,\n ref: A\n }, L), o.a.createElement(o.a.Fragment, null, M), (V = t.animationSpeed, B = t.draggable && _ && _.length > 1, U = {\n width: \"\".concat(f, \"px\"),\n transitionDuration: v ? \"\".concat(V, \"ms, \").concat(V, \"ms\") : null,\n transform: \"translateX(\".concat(g.transform, \"px)\"),\n marginLeft: \"\".concat(g.marginLeft, \"px\"),\n marginRight: \"\".concat(g.marginRight, \"px\")\n }, o.a.createElement(\"div\", {\n className: \"BrainhubCarousel__trackContainer\",\n ref: x\n }, o.a.createElement(\"ul\", hi({\n className: Go()(\"BrainhubCarousel__track\", {\n \"BrainhubCarousel__track--transition\": v,\n \"BrainhubCarousel__track--draggable\": B\n }),\n style: U\n }, D), Xo()(O).map(function (e, r) {\n return o.a.createElement(pi, hi({\n clickable: !0,\n key: r,\n currentSlideIndex: d || t.value,\n index: r,\n width: t.itemWidth || u,\n offset: r !== O.length ? t.offset : 0,\n onMouseDown: W,\n onTouchStart: z,\n isDragging: Math.abs(n.dragOffset) > 10,\n itemClassNames: P,\n isDraggingEnabled: t.draggable\n }, I), e);\n })))), o.a.createElement(o.a.Fragment, null, C)));\n };\n wi.defaultProps = {\n slidesPerPage: 1,\n offset: 0,\n animationSpeed: 500,\n draggable: !0,\n plugins: []\n };\n var Oi = function (t) {\n var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {\n handleWidth: !0,\n handleHeight: !0\n },\n n = function (n) {\n Bo(i, n);\n var a = Uo(i);\n function i() {\n var t;\n Do(this, i);\n for (var e = arguments.length, n = new Array(e), o = 0; o < e; o++) n[o] = arguments[o];\n return $o(Wo(t = a.call.apply(a, [this].concat(n))), \"ref\", Object(r.createRef)()), t;\n }\n return Vo(i, [{\n key: \"render\",\n value: function () {\n var n = this.props,\n r = n.forwardedRef,\n a = Lo(n, [\"forwardedRef\"]),\n i = r || this.ref;\n return o.a.createElement(Mo, No({}, e, {\n targetRef: i\n }), o.a.createElement(t, No({\n targetRef: i\n }, a)));\n }\n }]), i;\n }(o.a.Component);\n function a(t, e) {\n return o.a.createElement(n, No({}, t, {\n forwardedRef: e\n }));\n }\n var i = t.displayName || t.name;\n return a.displayName = \"withResizeDetector(\".concat(i, \")\"), n.propTypes = {\n forwardedRef: Object(Er.oneOfType)([Er.func, Object(Er.shape)({\n current: Er.any\n })])\n }, n.defaultProps = {\n forwardedRef: void 0\n }, Object(r.forwardRef)(a);\n }(o.a.memo(wi));\n function Si() {\n return (Si = Object.assign || function (t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]);\n }\n return t;\n }).apply(this, arguments);\n }\n function ji(t, e) {\n var n = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(t);\n e && (r = r.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function Ei(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = null != arguments[e] ? arguments[e] : {};\n e % 2 ? ji(Object(n), !0).forEach(function (e) {\n Ai(t, e, n[e]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(n)) : ji(Object(n)).forEach(function (e) {\n Object.defineProperty(t, e, Object.getOwnPropertyDescriptor(n, e));\n });\n }\n return t;\n }\n function Ai(t, e, n) {\n return e in t ? Object.defineProperty(t, e, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = n, t;\n }\n function xi(t, e) {\n return function (t) {\n if (Array.isArray(t)) return t;\n }(t) || function (t, e) {\n if (\"undefined\" != typeof Symbol && Symbol.iterator in Object(t)) {\n var n = [],\n r = !0,\n o = !1,\n a = void 0;\n try {\n for (var i, u = t[Symbol.iterator](); !(r = (i = u.next()).done) && (n.push(i.value), !e || n.length !== e); r = !0);\n } catch (t) {\n o = !0, a = t;\n } finally {\n try {\n r || null == u.return || u.return();\n } finally {\n if (o) throw a;\n }\n }\n return n;\n }\n }(t, e) || function (t, e) {\n if (t) {\n if (\"string\" == typeof t) return Ti(t, e);\n var n = Object.prototype.toString.call(t).slice(8, -1);\n return \"Object\" === n && t.constructor && (n = t.constructor.name), \"Map\" === n || \"Set\" === n ? Array.from(t) : \"Arguments\" === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? Ti(t, e) : void 0;\n }\n }(t, e) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }();\n }\n function Ti(t, e) {\n (null == e || e > t.length) && (e = t.length);\n for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n];\n return r;\n }\n var Ri = function (t) {\n var e,\n n = _r(qr),\n a = gr(kr),\n i = _r(xr);\n Object(r.useEffect)(function () {\n Or()(t.value) || n(t.value);\n }, [t.value, i]);\n var u = t.onChange,\n c = t.value,\n s = function (t, e) {\n if (null == t) return {};\n var n,\n r,\n o = function (t, e) {\n if (null == t) return {};\n var n,\n r,\n o = {},\n a = Object.keys(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || (o[n] = t[n]);\n return o;\n }(t, e);\n if (Object.getOwnPropertySymbols) {\n var a = Object.getOwnPropertySymbols(t);\n for (r = 0; r < a.length; r++) n = a[r], e.indexOf(n) >= 0 || Object.prototype.propertyIsEnumerable.call(t, n) && (o[n] = t[n]);\n }\n return o;\n }(t, [\"onChange\", \"value\"]),\n l = gr(Xr),\n f = gr(Yr),\n p = Object.entries(s.breakpoints || {}).filter(function (t) {\n var e = xi(t, 1)[0];\n return window.innerWidth <= e;\n }).sort(function (t, e) {\n var n = xi(t, 1)[0];\n return xi(e, 1)[0] - n;\n }).reduce(function (t, e) {\n var n = xi(e, 2),\n r = (n[0], n[1]);\n return Ei(Ei({}, t), r);\n }, jr()(s, [\"breakpoints\"])),\n d = !Or()(c);\n return o.a.createElement(Oi, Si({\n key: (null == p || null === (e = p.plugins) || void 0 === e ? void 0 : e.length) || 0,\n transformOffset: l,\n nearestSlideIndex: f,\n value: a,\n onChange: d ? u : n\n }, p));\n },\n Pi = (n(249), function (t) {\n var e = t.value,\n n = t.thumbnails,\n r = t.number,\n a = t.onChange,\n i = t.rtl,\n u = t.className,\n c = function () {\n var t = r || n.length;\n return e >= 0 ? e : e + t * Math.ceil(Math.abs(e / t));\n },\n s = function (t) {\n return function () {\n var o = r || n.length,\n i = c() % o;\n return a(e - (i - t));\n };\n };\n return o.a.createElement(\"ul\", {\n className: Go()(\"BrainhubCarousel__dots\", u, i ? \"BrainhubCarousel__dots--isRTL\" : \"\")\n }, function () {\n if (n) {\n var t = isNaN(r) ? n.length : r;\n return n.slice(0, t).map(function (e, n) {\n return o.a.createElement(\"li\", {\n key: n\n }, o.a.createElement(\"div\", {\n className: Go()(\"BrainhubCarousel__thumbnail\", {\n \"BrainhubCarousel__thumbnail--selected\": n === c() % t\n }),\n type: \"button\",\n onClick: s(n)\n }, e));\n });\n }\n for (var e = [], a = 0; a < r; a++) e.push(o.a.createElement(\"li\", {\n key: a\n }, o.a.createElement(\"div\", {\n className: Go()(\"BrainhubCarousel__dot\", {\n \"BrainhubCarousel__dot--selected\": a === c() % r\n }),\n type: \"button\",\n onClick: s(a)\n }, a + 1)));\n return e;\n }());\n }),\n ki = aa,\n Mi = ya,\n Ci = Sa,\n Ni = Pa,\n Li = Ia,\n Di = Va,\n Ii = Ua,\n Vi = $a,\n Bi = Ha,\n Ui = o.a.memo(Pi);\n e.default = function (t) {\n return o.a.createElement(vr, null, o.a.createElement(Ri, t));\n };\n },, function (t, e) {},,,, function (t, e) {},, function (t, e) {},, function (t, e) {},, function (t, e) {}]);\n});\n//# sourceMappingURL=react-carousel.js.map","/*\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// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\nvar StyleSheet = /*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : 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.before = null;\n }\n var _proto = StyleSheet.prototype;\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 var _tag = createStyleElement(this);\n var before;\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n var tag = this.tags[this.tags.length - 1];\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule,\n // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n this.ctr++;\n };\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n return StyleSheet;\n}();\nexport { StyleSheet };","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n var stylis = new Stylis(stylisOptions);\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n var inserted = {}; // $FlowFixMe\n\n var container;\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n var _insert;\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n stylis(selector, serialized.styles);\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\n });\n }\n break;\n }\n }\n });\n }\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\nexport default createCache;","var isBrowser = \"object\" !== 'undefined';\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 insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n if (\n // 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 ||\n // 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.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n current = current.next;\n } while (current !== undefined);\n }\n};\nexport { getRegisteredStyles, insertStyles };","/* 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 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 = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^= /* k >>> r: */\n k >>> 24;\n h = /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^ /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = /* 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 h ^= h >>> 13;\n h = /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\nexport default murmur2;","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\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 if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n return value;\n};\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n var processed = oldProcessStyleValue(key, value);\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n return processed;\n };\n}\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n return interpolation;\n }\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\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 var styles = interpolation.styles + \";\";\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n return styles;\n }\n return createStringFromObject(mergedProps, registered, interpolation);\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, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n break;\n }\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n if (registered == null) {\n return interpolation;\n }\n var cached = registered[interpolation];\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n}\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\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, false);\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n return string;\n}\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nvar serializeStyles = function 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 var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n styles += strings[i];\n }\n }\n var sourceMap;\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\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 += '-' +\n // $FlowFixMe we know it's not null\n match[1];\n }\n var name = hashString(styles) + identifierName;\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\nexport { serializeStyles };","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\nexport default memoize;","import '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar EmotionCacheContext = /*#__PURE__*/createContext(\n// 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' ? createCache() : null);\nvar ThemeContext = /*#__PURE__*/createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return /*#__PURE__*/createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n return /*#__PURE__*/forwardRef(render);\n};\n\n// thus we only need to replace what is a valid character for JS, but not for CSS\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' &&\n // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps[typePropName] = type; // TODO: check if this still works with all of those different JSX functions\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|Module\\.|)(?:jsx|createEmotionProps).*\\n\\s+at (?:Object\\.|)([A-Z][A-Za-z$]+) /);\n if (!match) {\n // safari and firefox\n match = error.stack.match(/.*\\n([A-Z][A-Za-z$]+)@/);\n }\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n return newProps;\n};\nvar Noop = function Noop() {\n return null;\n};\nvar render = function render(cache, props, theme, ref) {\n var cssProp = theme === null ? props.css : props.css(theme); // 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 var type = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\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 var serialized = serializeStyles(registeredStyles);\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n newProps.ref = ref;\n newProps.className = className;\n var ele = /*#__PURE__*/createElement(type, newProps);\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n}; // eslint-disable-next-line no-undef\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n if (typeof props.css === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n return render(cache, props, null, ref);\n});\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, createEmotionProps as c, hasOwnProperty as h, withEmotionCache as w };","import { serializeStyles } from '@emotion/serialize';\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return serializeStyles(args);\n}\nexport default css;","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport { createElement, Component, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-04d85134.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, w as withEmotionCache } from './emotion-element-04d85134.browser.esm.js';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\nvar jsx = function jsx(type, props) {\n var args = arguments;\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n return createElement.apply(null, createElementArgArray);\n};\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && (\n // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n var styles = props.styles;\n if (typeof styles === 'function') {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n var serialized = serializeStyles([styles]);\n return /*#__PURE__*/createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n});\n\n// maintain place over rerenders.\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\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n var _proto = InnerGlobal.prototype;\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n this.insertStyles();\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n _proto.render = function render() {\n return null;\n };\n return InnerGlobal;\n}(Component);\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\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};\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n switch (typeof arg) {\n case 'boolean':\n break;\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n break;\n }\n default:\n {\n toAdd = arg;\n }\n }\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n return cls;\n};\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n if (registeredStyles.length < 2) {\n return className;\n }\n return rawClassName + css(registeredStyles);\n}\nvar Noop = function Noop() {\n return null;\n};\nvar ClassNames = withEmotionCache(function (props, context) {\n return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var serialized = serializeStyles(args, context.registered);\n {\n insertStyles(context, serialized, false);\n }\n return context.key + \"-\" + serialized.name;\n };\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return merge(context.registered, css, classnames(args));\n };\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n var possiblyStyleElement = /*#__PURE__*/createElement(Noop, null);\n return /*#__PURE__*/createElement(Fragment, null, possiblyStyleElement, ele);\n });\n});\nexport { ClassNames, Global, jsx as createElement, jsx, keyframes };","function stylis_min(W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n default:\n f += e.charAt(l);\n }\n g = 59;\n }\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n case 125:\n k--;\n break;\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n break;\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n }\n }\n l = u;\n }\n }\n break;\n case 91:\n g++;\n case 40:\n g++;\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {}\n }\n if (0 === k) break;\n l++;\n }\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n default:\n r = O;\n }\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n default:\n z++;\n y = e.charAt(l);\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n default:\n 32 !== g && (y = ' ');\n }\n break;\n case 0:\n y = '\\\\0';\n break;\n case 12:\n y = '\\\\f';\n break;\n case 11:\n y = '\\\\v';\n break;\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n case 8:\n 111 === K && (E = K);\n }\n break;\n case 58:\n 0 === n + b + m && (u = l);\n break;\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n case 91:\n 0 === n + b + v && m++;\n break;\n case 93:\n 0 === n + b + v && m--;\n break;\n case 41:\n 0 === n + b + m && v--;\n break;\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n default:\n q = 1;\n }\n v++;\n }\n break;\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n case 220:\n t = l, b = 42;\n }\n break;\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n 0 === b && (f += y);\n }\n K = x;\n x = g;\n l++;\n }\n t = p.length;\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n E = 0;\n }\n }\n return G + p + F;\n }\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n break;\n default:\n var v = b = 0;\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n }\n return c;\n }\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n return d + c;\n }\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n if (0 === w || 2 === w && !L(a, 1)) return a;\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n case 969:\n case 942:\n return '-webkit-' + a + a;\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n case 220:\n b = a.replace(G, 'lr');\n break;\n default:\n return a;\n }\n return '-webkit-' + a + '-ms-' + b + a;\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n return a + ';';\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n return a;\n }\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n default:\n x = w;\n }\n }\n if (x !== c) return x;\n }\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n return T;\n }\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\nexport default stylis_min;","var unitlessKeys = {\n animationIterationCount: 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 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};\nexport default unitlessKeys;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'adobe';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f778';\nvar svgPathData = 'M315.5 64h170.9v384L315.5 64zm-119 0H25.6v384L196.5 64zM256 206.1L363.5 448h-73l-30.7-76.8h-78.7L256 206.1z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faAdobe = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'git-alt';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f841';\nvar svgPathData = 'M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faGitAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'linux';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f17c';\nvar svgPathData = 'M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faLinux = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'node-js';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f3d3';\nvar svgPathData = 'M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faNodeJs = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'php';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f457';\nvar svgPathData = 'M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faPhp = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'python';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f3e2';\nvar svgPathData = 'M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faPython = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'rust';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f97a';\nvar svgPathData = 'M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faRust = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'ubuntu';\nvar width = 496;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f7df';\nvar svgPathData = 'M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faUbuntu = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fab';\nvar iconName = 'windows';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f17a';\nvar svgPathData = 'M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faWindows = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'arrow-down';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f063';\nvar svgPathData = 'M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faArrowDown = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'balance-scale';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f24e';\nvar svgPathData = 'M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faBalanceScale = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'box-open';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f49e';\nvar svgPathData = 'M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faBoxOpen = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'chevron-down';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f078';\nvar svgPathData = 'M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faChevronDown = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'chevron-right';\nvar width = 320;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f054';\nvar svgPathData = 'M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faChevronRight = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'circle-notch';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1ce';\nvar svgPathData = 'M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faCircleNotch = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'cogs';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f085';\nvar svgPathData = 'M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faCogs = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'copy';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f0c5';\nvar svgPathData = 'M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faCopy = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'cubes';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1b3';\nvar svgPathData = 'M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faCubes = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'database';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c0';\nvar svgPathData = 'M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faDatabase = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'download';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f019';\nvar svgPathData = 'M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faDownload = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'eraser';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f12d';\nvar svgPathData = 'M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faEraser = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'exclamation-triangle';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f071';\nvar svgPathData = 'M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faExclamationTriangle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'external-link-alt';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f35d';\nvar svgPathData = 'M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faExternalLinkAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'eye-slash';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f070';\nvar svgPathData = 'M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faEyeSlash = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f15b';\nvar svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFile = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-alt';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f15c';\nvar svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-archive';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c6';\nvar svgPathData = 'M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileArchive = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-code';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c9';\nvar svgPathData = 'M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileCode = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-excel';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c3';\nvar svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileExcel = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-image';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c5';\nvar svgPathData = 'M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileImage = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-pdf';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c1';\nvar svgPathData = 'M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFilePdf = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'file-word';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1c2';\nvar svgPathData = 'M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFileWord = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'film';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f008';\nvar svgPathData = 'M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFilm = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'fist-raised';\nvar width = 384;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f6de';\nvar svgPathData = 'M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFistRaised = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'folder';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f07b';\nvar svgPathData = 'M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFolder = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'folder-open';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f07c';\nvar svgPathData = 'M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFolderOpen = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'folder-plus';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f65e';\nvar svgPathData = 'M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faFolderPlus = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'info-circle';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f05a';\nvar svgPathData = 'M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faInfoCircle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'key';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f084';\nvar svgPathData = 'M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faKey = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'level-up-alt';\nvar width = 320;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f3bf';\nvar svgPathData = 'M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faLevelUpAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'list';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f03a';\nvar svgPathData = 'M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faList = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'lock';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f023';\nvar svgPathData = 'M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faLock = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'minus';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f068';\nvar svgPathData = 'M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faMinus = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'music';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f001';\nvar svgPathData = 'M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faMusic = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'object-group';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f247';\nvar svgPathData = 'M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faObjectGroup = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'paste';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f0ea';\nvar svgPathData = 'M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faPaste = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'running';\nvar width = 416;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f70c';\nvar svgPathData = 'M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faRunning = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'search';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f002';\nvar svgPathData = 'M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faSearch = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'share-alt';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1e0';\nvar svgPathData = 'M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faShareAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'sort-amount-down-alt';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f884';\nvar svgPathData = 'M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faSortAmountDownAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'sort-amount-up-alt';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f885';\nvar svgPathData = 'M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faSortAmountUpAlt = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'terminal';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f120';\nvar svgPathData = 'M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faTerminal = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'th';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00a';\nvar svgPathData = 'M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faTh = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'th-large';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f009';\nvar svgPathData = 'M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faThLarge = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'th-list';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00b';\nvar svgPathData = 'M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faThList = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'times';\nvar width = 352;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f00d';\nvar svgPathData = 'M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faTimes = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'toggle-off';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f204';\nvar svgPathData = 'M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faToggleOff = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'toggle-on';\nvar width = 576;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f205';\nvar svgPathData = 'M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faToggleOn = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'trash';\nvar width = 448;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f1f8';\nvar svgPathData = 'M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faTrash = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'upload';\nvar width = 512;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f093';\nvar svgPathData = 'M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faUpload = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar prefix = 'fas';\nvar iconName = 'users';\nvar width = 640;\nvar height = 512;\nvar ligatures = [];\nvar unicode = 'f0c0';\nvar svgPathData = 'M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z';\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [width, height, ligatures, unicode, svgPathData]\n};\nexports.faUsers = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = ligatures;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;","'use strict';\n\nvar visit = require('unist-util-visit');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hastCssPropertyMap = {\n align: 'text-align',\n valign: 'vertical-align',\n height: 'height',\n width: 'width'\n};\nmodule.exports = function tableCellStyle(node) {\n visit(node, 'element', visitor);\n return node;\n};\nfunction visitor(node) {\n if (node.tagName !== 'tr' && node.tagName !== 'td' && node.tagName !== 'th') {\n return;\n }\n var hastName;\n var cssName;\n for (hastName in hastCssPropertyMap) {\n if (!hasOwnProperty.call(hastCssPropertyMap, hastName) || node.properties[hastName] === undefined) {\n continue;\n }\n cssName = hastCssPropertyMap[hastName];\n appendStyle(node, cssName, node.properties[hastName]);\n delete node.properties[hastName];\n }\n}\nfunction appendStyle(node, property, value) {\n var prevStyle = (node.properties.style || '').trim();\n if (prevStyle && !/;\\s*/.test(prevStyle)) {\n prevStyle += ';';\n }\n if (prevStyle) {\n prevStyle += ' ';\n }\n var nextStyle = prevStyle + property + ': ' + value + ';';\n node.properties.style = nextStyle;\n}","'use strict';\n\nmodule.exports = convert;\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n if (test === null || test === undefined) {\n return ok;\n }\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test);\n }\n if (typeof test === 'function') {\n return test;\n }\n throw new Error('Expected function, string, or object as test');\n}\nfunction convertAll(tests) {\n var results = [];\n var length = tests.length;\n var index = -1;\n while (++index < length) {\n results[index] = convert(tests[index]);\n }\n return results;\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction matchesFactory(test) {\n return matches;\n function matches(node) {\n var key;\n for (key in test) {\n if (node[key] !== test[key]) {\n return false;\n }\n }\n return true;\n }\n}\nfunction anyFactory(tests) {\n var checks = convertAll(tests);\n var length = checks.length;\n return matches;\n function matches() {\n var index = -1;\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true;\n }\n }\n return false;\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type;\n function type(node) {\n return Boolean(node && node.type === test);\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true;\n}","'use strict';\n\nmodule.exports = visitParents;\nvar convert = require('unist-util-is/convert');\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\nfunction visitParents(tree, test, visitor, reverse) {\n var is;\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n is = convert(test);\n one(tree, null, []);\n\n // Visit a single node.\n function one(node, index, parents) {\n var result = [];\n var subresult;\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n if (result[0] === EXIT) {\n return result;\n }\n }\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)));\n return subresult[0] === EXIT ? subresult : result;\n }\n return result;\n }\n\n // Visit children in `parent`.\n function all(children, parents) {\n var min = -1;\n var step = reverse ? -1 : 1;\n var index = (reverse ? children.length : min) + step;\n var result;\n while (index > min && index < children.length) {\n result = one(children[index], index, parents);\n if (result[0] === EXIT) {\n return result;\n }\n index = typeof result[1] === 'number' ? result[1] : index + step;\n }\n }\n}\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n return [value];\n}","'use strict';\n\nmodule.exports = visit;\nvar visitParents = require('unist-util-visit-parents');\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","/* The following list is defined in React's core */\nvar IS_UNITLESS = {\n animationIterationCount: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related properties\n fillOpacity: true,\n stopOpacity: true,\n strokeDashoffset: true,\n strokeOpacity: true,\n strokeWidth: true\n};\nmodule.exports = function (name, value) {\n if (typeof value === 'number' && !IS_UNITLESS[name]) {\n return value + 'px';\n } else {\n return value;\n }\n};","var asn1 = exports;\nasn1.bignum = require('bn.js');\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');","var asn1 = require('../asn1');\nvar inherits = require('inherits');\nvar api = exports;\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n this.decoders = {};\n this.encoders = {};\n}\n;\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext('(function ' + this.name + '(entity) {\\n' + ' this._initNamed(entity);\\n' + '})');\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n return new named(this);\n};\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\nEntity.prototype.encode = function encode(data, enc, /* internal */reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\nDecoderBuffer.prototype.save = function save() {\n return {\n offset: this.offset,\n reporter: Reporter.prototype.save.call(this)\n };\n};\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n return res;\n};\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun');\n};\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun');\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function (item) {\n if (!(item instanceof EncoderBuffer)) item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff)) return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out) out = new Buffer(this.length);\n if (!offset) offset = 0;\n if (this.length === 0) return out;\n if (Array.isArray(this.value)) {\n this.value.forEach(function (item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n offset += this.length;\n }\n return out;\n};","var base = exports;\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'];\n\n// Public methods list\nvar methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags);\n\n// Overrided methods list\nvar overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool'];\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n state.enc = enc;\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\nvar stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains'];\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function (prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function (method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\nNode.prototype._init = function init(body) {\n var state = this._baseState;\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function (child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var children = args.filter(function (arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function (arg) {\n return !(arg instanceof this.constructor);\n }, this);\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function (child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function (arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object) return arg;\n var res = {};\n Object.keys(arg).forEach(function (key) {\n if (key == (key | 0)) key |= 0;\n var value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function (method) {\n Node.prototype[method] = function _overrided() {\n var state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function (tag) {\n Node.prototype[tag] = function _tagMethod() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n assert(state.tag === null);\n state.tag = tag;\n this._useArgs(args);\n return this;\n };\n});\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n assert(state.use === null);\n state.use = item;\n return this;\n};\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n state.optional = true;\n return this;\n};\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n return this;\n};\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n return this;\n};\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n return this;\n};\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n state.obj = true;\n if (args.length !== 0) this._useArgs(args);\n return this;\n};\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n assert(state.key === null);\n state.key = newKey;\n return this;\n};\nNode.prototype.any = function any() {\n var state = this._baseState;\n state.any = true;\n return this;\n};\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function (key) {\n return obj[key];\n }));\n return this;\n};\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n assert(state.use === null);\n state.contains = item;\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n var result = state['default'];\n var present = true;\n var prevKey = null;\n if (state.key !== null) prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag;\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n if (input.isError(present)) return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present) prevObj = input.enterObject();\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit)) return explicit;\n input = explicit;\n }\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any) var save = input.save();\n var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n if (input.isError(body)) return body;\n if (state.any) result = input.raw(save);else input = body;\n }\n if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged');\n if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) result = result;else if (state.choice === null) result = this._decodeGeneric(state.tag, input, options);else result = this._decodeChoice(input, options);\n if (input.isError(result)) return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present) result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey);\n return result;\n};\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n if (tag === 'seq' || tag === 'set') return null;\n if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options);\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\nNode.prototype._getUse = function _getUse(entity, obj) {\n var state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n Object.keys(state.choice).some(function (key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value)) return false;\n result = {\n type: key,\n value: value\n };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n if (!match) return input.error('Choice not matched');\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data) return;\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined) return;\n if (this._skipDefault(result, reporter, parent)) return;\n return result;\n};\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n var result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null) data = state['default'];else return;\n }\n\n // Encode children first\n var content = null;\n var primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function (child) {\n if (child._baseState.tag === 'null_') return child._encode(null, reporter, data);\n if (child._baseState.key === null) return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n if (typeof data !== 'object') return reporter.error('Child expected, but input is not object');\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n return res;\n }, this).filter(function (child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1)) return reporter.error('Too many args for : ' + state.tag);\n if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array');\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function (item) {\n var state = this._baseState;\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n if (tag === null) {\n if (state.use === null) reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result);\n return result;\n};\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n var node = state.choice[data.type];\n if (!node) {\n assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag);\n};\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};","var inherits = require('inherits');\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\n};\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n this.exitKey(index);\n if (state.obj !== null) state.obj[key] = value;\n};\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n var now = state.obj;\n state.obj = prev;\n return now;\n};\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function (elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n if (!state.options.partial) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial) return result;\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\n;\ninherits(ReporterError, Error);\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};","var constants = require('../constants');\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = constants._reverse(exports.tag);","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n};\nconstants.der = require('./der');","var inherits = require('inherits');\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\n;\nmodule.exports = DERDecoder;\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer)) data = new base.DecoderBuffer(data, options);\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty()) return false;\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n buffer.restore(state);\n return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any;\n};\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len)) return len;\n if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res)) return res;\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag)) return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len)) return len;\n var res;\n if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res)) return res;\n if (tag.tagStr === 'end') break;\n }\n};\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd)) return possibleEnd;\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd) break;\n result.push(res);\n }\n return result;\n};\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused)) return unused;\n return {\n unused: unused,\n data: buffer.raw()\n };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch');\n var str = '';\n for (var i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' + 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' + 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80) identifiers.push(ident);\n var first = identifiers[0] / 40 | 0;\n var second = identifiers[0] % 40;\n if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1));\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined) tmp = values[result.join('.')];\n if (tmp !== undefined) result = tmp;\n }\n return result;\n};\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70) year = 2000 + year;else year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res)) return res;else return res !== 0;\n};\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n if (values) res = values[res.toString(10)] || res;\n return res;\n};\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag)) return tag;\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct)) return oct;\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len)) return len;\n\n // Indefinite form\n if (!primitive && len === 0x80) return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4) return buf.error('length octect is too long');\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j)) return j;\n len |= j;\n }\n return len;\n}","var decoders = exports;\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\nvar DERDecoder = require('./der');\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\n;\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n var label = options.label.toUpperCase();\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null) continue;\n if (match[2] !== label) continue;\n if (start === -1) {\n if (match[1] !== 'BEGIN') break;\n start = i;\n } else {\n if (match[1] !== 'END') break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label);\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\n;\nmodule.exports = DEREncoder;\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([header, content]);\n }\n\n // Long form\n // Count octets required to store length\n var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8) lenOctets++;\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) header[i] = j & 0xff;\n return this._createEncoderBuffer([header, content]);\n};\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([str.unused | 0, str.data]);\n } else if (tag === 'bmpstr') {\n var buf = new Buffer(str.length * 2);\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' + 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag + ' unsupported');\n }\n};\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values) return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++) id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++) id[i] |= 0;\n }\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\n if (!relative) {\n if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7) size++;\n }\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0) objid[offset--] = 0x80 | ident & 0x7f;\n }\n return this._createEncoderBuffer(objid);\n};\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n if (tag === 'gentime') {\n str = [two(date.getFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else if (tag === 'utctime') {\n str = [two(date.getFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n return this._encodeStr(str, 'octstr');\n};\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values) return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' + JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0) size++;\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0) out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8) size++;\n var out = new Array(size);\n for (var i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if (out[0] & 0x80) {\n out.unshift(0);\n }\n return this._createEncoderBuffer(new Buffer(out));\n};\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null) return false;\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n if (data.length !== state.defaultBuffer.length) return false;\n for (i = 0; i < data.length; i++) if (data[i] !== state.defaultBuffer[i]) return false;\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set';\n if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag);\n if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported');\n if (!primitive) res |= 0x20;\n res |= der.tagClassByName[cls || 'universal'] << 6;\n return res;\n}","var encoders = exports;\nencoders.der = require('./der');\nencoders.pem = require('./pem');","var inherits = require('inherits');\nvar DEREncoder = require('./der');\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\n;\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n var p = buf.toString('base64');\n var out = ['-----BEGIN ' + options.label + '-----'];\n for (var i = 0; i < p.length; i += 64) out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","\"use strict\";\n\nexports.__esModule = true;\nexports.default = function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = (file.type || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n return mimeType === validType;\n });\n }\n return true;\n};","'use strict';\n\nmodule.exports = bail;\nfunction bail(err) {\n if (err) {\n throw err;\n }\n}","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\nfunction getLens(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('');\n}\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n return parts.join('');\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this._strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this._strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n function move(dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n BN.prototype._move = function _move(dest) {\n move(dest, this);\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n }\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16, 2);\n };\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n var allocate = function allocate(ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n this._strip();\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n var position = 0;\n var carry = 0;\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\n if (position < res.length) {\n res[position++] = word >> 16 & 0xff;\n }\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = word >> 24 & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n if (position < res.length) {\n res[position++] = carry;\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\n if (position >= 0) {\n res[position--] = word >> 16 & 0xff;\n }\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = word >> 24 & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n if (position >= 0) {\n res[position--] = carry;\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = num.words[off] >>> wbit & 0x01;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this._strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this._strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this._strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out._strip();\n }\n function jumboMulTo(self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return isNegNum ? this.ineg() : this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this._strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this._strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this._strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this._strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modrn = function modrn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this._strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","var r;\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++) res[i] = this.rand.getByte();\n return res;\n};\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function () {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer;\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n var len = buf.length / 4 | 0;\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n return out;\n}\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\n}\nfunction cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0];\n var SUB_MIX1 = SUB_MIX[1];\n var SUB_MIX2 = SUB_MIX[2];\n var SUB_MIX3 = SUB_MIX[3];\n var s0 = M[0] ^ keySchedule[0];\n var s1 = M[1] ^ keySchedule[1];\n var s2 = M[2] ^ keySchedule[2];\n var s3 = M[3] ^ keySchedule[3];\n var t0, t1, t2, t3;\n var ksRow = 4;\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++];\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++];\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++];\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++];\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n t0 = t0 >>> 0;\n t1 = t1 >>> 0;\n t2 = t2 >>> 0;\n t3 = t3 >>> 0;\n return [t0, t1, t2, t3];\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1;\n } else {\n d[j] = j << 1 ^ 0x11b;\n }\n }\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []];\n\n // Walk GF(2^8)\n var x = 0;\n var xi = 0;\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX[0][x] = t << 24 | t >>> 8;\n SUB_MIX[1][x] = t << 16 | t >>> 16;\n SUB_MIX[2][x] = t << 8 | t >>> 24;\n SUB_MIX[3][x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;\n INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;\n INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;\n INV_SUB_MIX[3][sx] = t;\n if (x === 0) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\nfunction AES(key) {\n this._key = asUInt32Array(key);\n this._reset();\n}\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\nAES.prototype._reset = function () {\n var keyWords = this._key;\n var keySize = keyWords.length;\n var nRounds = keySize + 6;\n var ksRows = (nRounds + 1) * 4;\n var keySchedule = [];\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n if (k % keySize === 0) {\n t = t << 8 | t >>> 24;\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n var invKeySchedule = [];\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt;\n } else {\n invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]];\n }\n }\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[1], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[3], 12);\n return buf;\n};\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M);\n\n // swap\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[3], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[1], 12);\n return buf;\n};\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\nmodule.exports.AES = AES;","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nvar GHASH = require('./ghash');\nvar xor = require('buffer-xor');\nvar incr32 = require('./incr32');\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; ++i) {\n out += a[i] ^ b[i];\n }\n return out;\n}\nfunction calcIv(self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n }\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\n ghash.update(Buffer.alloc(8, 0));\n var ivBits = len * 8;\n var tail = Buffer.alloc(8);\n tail.writeUIntBE(ivBits, 0, 8);\n ghash.update(tail);\n self._finID = ghash.state;\n var out = Buffer.from(self._finID);\n incr32(out);\n return out;\n}\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n var ck = this._cipher.encryptBlock(h);\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._alen = 0;\n this._len = 0;\n this._mode = mode;\n this._authTag = null;\n this._called = false;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - this._alen % 16;\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n this._ghash.update(rump);\n }\n }\n this._called = true;\n var out = this._mode.encrypt(this, chunk);\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\n this._len += chunk.length;\n return out;\n};\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data');\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data');\n this._authTag = tag;\n this._cipher.scrub();\n};\nStreamCipher.prototype.getAuthTag = function getAuthTag() {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state');\n return this._authTag;\n};\nStreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state');\n this._authTag = tag;\n};\nStreamCipher.prototype.setAAD = function setAAD(buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state');\n this._ghash.update(buf);\n this._alen += buf.length;\n};\nmodule.exports = StreamCipher;","var ciphers = require('./encrypter');\nvar deciphers = require('./decrypter');\nvar modes = require('./modes/list.json');\nfunction getCiphers() {\n return Object.keys(modes);\n}\nexports.createCipher = exports.Cipher = ciphers.createCipher;\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;\nexports.createDecipher = exports.Decipher = deciphers.createDecipher;\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","var AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar MODES = require('./modes');\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._last = void 0;\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Decipher, Transform);\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk));\n } else if (chunk) {\n throw new Error('data not multiple of block length');\n }\n};\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function (autoPadding) {\n var out;\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\nfunction unpad(last) {\n var padded = last[15];\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n var i = -1;\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\nfunction createDecipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true);\n }\n return new Decipher(config.module, password, iv);\n}\nfunction createDecipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;","var MODES = require('./modes');\nvar AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Cipher, Transform);\nCipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get()) {\n thing = this._mode.encrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nvar PADDING = Buffer.alloc(16, 0x10);\nCipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n this._cipher.scrub();\n return chunk;\n }\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n throw new Error('data not multiple of block length');\n }\n};\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n padBuff.writeUInt8(len, i);\n }\n return Buffer.concat([this.cache, padBuff]);\n};\nfunction createCipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv);\n }\n return new Cipher(config.module, password, iv);\n}\nfunction createCipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nexports.createCipheriv = createCipheriv;\nexports.createCipher = createCipher;","var Buffer = require('safe-buffer').Buffer;\nvar ZEROES = Buffer.alloc(16, 0);\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\nfunction fromArray(out) {\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0] >>> 0, 0);\n buf.writeUInt32BE(out[1] >>> 0, 4);\n buf.writeUInt32BE(out[2] >>> 0, 8);\n buf.writeUInt32BE(out[3] >>> 0, 12);\n return buf;\n}\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n this._multiply();\n};\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h);\n var Zi = [0, 0, 0, 0];\n var j, xi, lsbVi;\n var i = -1;\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0];\n Zi[1] ^= Vi[1];\n Zi[2] ^= Vi[2];\n Zi[3] ^= Vi[3];\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0;\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n Vi[0] = Vi[0] >>> 1;\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n this.state = fromArray(Zi);\n};\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n this.ghash(chunk);\n }\n};\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\nmodule.exports = GHASH;","function incr32(iv) {\n var len = iv.length;\n var item;\n while (len--) {\n item = iv.readUInt8(len);\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\nmodule.exports = incr32;","var xor = require('buffer-xor');\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n var out = self._cipher.decryptBlock(block);\n return xor(out, pad);\n};","var Buffer = require('safe-buffer').Buffer;\nvar xor = require('buffer-xor');\nfunction encryptStart(self, data, decrypt) {\n var len = data.length;\n var out = xor(data, self._cache);\n self._cache = self._cache.slice(len);\n self._prev = Buffer.concat([self._prev, decrypt ? data : out]);\n return out;\n}\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev);\n self._prev = Buffer.allocUnsafe(0);\n }\n if (self._cache.length <= data.length) {\n len = self._cache.length;\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);\n data = data.slice(len);\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)]);\n break;\n }\n }\n return out;\n};","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad;\n var i = -1;\n var len = 8;\n var out = 0;\n var bit, value;\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev);\n bit = byteParam & 1 << 7 - i ? 0x80 : 0;\n value = pad[0] ^ bit;\n out += (value & 0x80) >> i % 8;\n self._prev = shiftIn(self._prev, decrypt ? bit : value);\n }\n return out;\n}\nfunction shiftIn(buffer, value) {\n var len = buffer.length;\n var i = -1;\n var out = Buffer.allocUnsafe(buffer.length);\n buffer = Buffer.concat([buffer, Buffer.from([value])]);\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","var xor = require('buffer-xor');\nvar Buffer = require('safe-buffer').Buffer;\nvar incr32 = require('../incr32');\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n incr32(self._prev);\n return out;\n}\nvar blockSize = 16;\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self);\n var offset = start + i * blockSize;\n self._cache.writeUInt32BE(out[0], offset + 0);\n self._cache.writeUInt32BE(out[1], offset + 4);\n self._cache.writeUInt32BE(out[2], offset + 8);\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n};\nvar modes = require('./list.json');\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode];\n}\nmodule.exports = modes;","var xor = require('buffer-xor');\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._mode = mode;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\nmodule.exports = StreamCipher;","var DES = require('browserify-des');\nvar aes = require('browserify-aes/browser');\nvar aesModes = require('browserify-aes/modes');\nvar desModes = require('browserify-des/modes');\nvar ebtk = require('evp_bytestokey');\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nfunction createDecipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nfunction createCipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite\n });\n throw new TypeError('invalid suite type');\n}\nfunction createDecipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite,\n decrypt: true\n });\n throw new TypeError('invalid suite type');\n}\nfunction getCiphers() {\n return Object.keys(desModes).concat(aes.getCiphers());\n}\nexports.createCipher = exports.Cipher = createCipher;\nexports.createCipheriv = exports.Cipheriv = createCipheriv;\nexports.createDecipher = exports.Decipher = createDecipher;\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","var CipherBase = require('cipher-base');\nvar des = require('des.js');\nvar inherits = require('inherits');\nvar Buffer = require('safe-buffer').Buffer;\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n};\nmodes.des = modes['des-cbc'];\nmodes.des3 = modes['des-ede3-cbc'];\nmodule.exports = DES;\ninherits(DES, CipherBase);\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n var key = opts.key;\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n var iv = opts.iv;\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};","exports['des-ecb'] = {\n key: 8,\n iv: 0\n};\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n};\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n};\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n};\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n};\nexports['des-ede'] = {\n key: 16,\n iv: 0\n};","var BN = require('bn.js');\nvar randomBytes = require('randombytes');\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r;\n do {\n r = new BN(randomBytes(len));\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n return r;\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(BN.mont(priv.prime1));\n var c2 = blinded.toRed(BN.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1).fromRed();\n var m2 = c2.redPow(priv.exponent2).fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\nmodule.exports = crt;","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nvar RSA_PKCS1_PADDING = 1;\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong private key type');\n }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) {\n throw new Error('illegal or unsupported padding mode');\n }\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n var out = crt(pad, priv);\n return out;\n}\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + priv.curve.join('.'));\n }\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n return Buffer.from(out.toDER());\n}\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) {\n r = [0].concat(r);\n }\n if (s[0] & 0x80) {\n s = [0].concat(s);\n }\n var total = r.length + s.length + 4;\n var res = [0x30, total, 0x02, r.length];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return {\n k: k,\n v: v\n };\n}\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) {\n bits.ishrn(shift);\n }\n return bits;\n}\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n do {\n t = Buffer.alloc(0);\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n return k;\n}\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong public key type');\n }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) {\n out = 1;\n }\n i = -1;\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n return out === 0;\n}\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'));\n }\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n return curve.verify(hash, sig, pubkey);\n}\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);\n return v.cmp(r) === 0;\n}\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) {\n throw new Error('invalid sig');\n }\n if (b.cmp(q) >= 0) {\n throw new Error('invalid sig');\n }\n}\nmodule.exports = verify;","/*jshint node:true */\n'use strict';\n\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\nmodule.exports = bufferEq;\nfunction bufferEq(a, b) {\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\nbufferEq.install = function () {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function () {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};","module.exports = function xor(a, b) {\n var length = Math.min(a.length, b.length);\n var buffer = new Buffer(length);\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i];\n }\n return buffer;\n};","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict';\n\nconst base64 = require('base64-js');\nconst ieee754 = require('ieee754');\nconst customInspectSymbol = typeof Symbol === 'function' && typeof Symbol['for'] === 'function' // eslint-disable-line dot-notation\n? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n: null;\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\nconst K_MAX_LENGTH = 0x7fffffff;\nexports.kMaxLength = K_MAX_LENGTH;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');\n}\nfunction typedArraySupport() {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1);\n const proto = {\n foo: function () {\n return 42;\n }\n };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n}\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.buffer;\n }\n});\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.byteOffset;\n }\n});\nfunction createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"');\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer(arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError('The \"string\" argument must be of type string. Received type number');\n }\n return allocUnsafe(arg);\n }\n return from(arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192; // not used by this implementation\n\nfunction from(value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset);\n }\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n if (value == null) {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\n }\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof SharedArrayBuffer !== 'undefined' && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type number');\n }\n const valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n const b = fromObject(value);\n if (b) return b;\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);\n }\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n};\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\nObject.setPrototypeOf(Buffer, Uint8Array);\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number');\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"');\n }\n}\nfunction alloc(size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size);\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n return createBuffer(size);\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n};\nfunction allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n};\nfunction fromString(string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n return buf;\n}\nfunction fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf;\n}\nfunction fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n return fromArrayLike(arrayView);\n}\nfunction fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds');\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds');\n }\n let buf;\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n}\nfunction fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n if (buf.length === 0) {\n return buf;\n }\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n return fromArrayLike(obj);\n }\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n}\nfunction checked(length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');\n }\n return length | 0;\n}\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n};\nBuffer.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');\n }\n if (a === b) return 0;\n let x = a.length;\n let y = b.length;\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n default:\n return false;\n }\n};\nBuffer.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n let i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(buffer, buf, pos);\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n } else {\n buf.copy(buffer, pos);\n }\n pos += buf.length;\n }\n return buffer;\n};\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== 'string') {\n throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string);\n }\n const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0;\n\n // Use a for loop to avoid recursion\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length;\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n case 'hex':\n return len >>> 1;\n case 'base64':\n return base64ToBytes(string).length;\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n let loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return '';\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return '';\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return '';\n }\n if (!encoding) encoding = 'utf8';\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n case 'ascii':\n return asciiSlice(this, start, end);\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n case 'base64':\n return base64Slice(this, start, end);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n};\nBuffer.prototype.toString = function toString() {\n const length = this.length;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\nBuffer.prototype.toLocaleString = Buffer.prototype.toString;\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n let str = '';\n const max = exports.INSPECT_MAX_BYTES;\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n if (this.length > max) str += ' ... ';\n return '<Buffer ' + str + '>';\n};\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n}\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target);\n }\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n let i;\n if (dir) {\n let foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n const strLen = string.length;\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n let i;\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n if (!encoding) encoding = 'utf8';\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length);\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = '';\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n let ret = '';\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n let ret = '';\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n const len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n let out = '';\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = '';\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n const newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\nBuffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n return val;\n};\nBuffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n let val = this[offset + --byteLength];\n let mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\n};\nBuffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\nBuffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n});\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n});\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let i = byteLength;\n let mul = 1;\n let val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n});\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const val = (first << 24) +\n // Overflow\n this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n});\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\nBuffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let mul = 1;\n let i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n};\nBuffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n return offset + 2;\n};\nBuffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n return offset + 4;\n};\nBuffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n return offset + 4;\n};\nfunction wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(0xffffffff));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n}\nfunction wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(0xffffffff));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n}\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'));\n});\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n return offset + 4;\n};\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'));\n});\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range');\n if (end < 0) throw new RangeError('sourceEnd out of bounds');\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n const len = end - start;\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n }\n return len;\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } else if (typeof val === 'boolean') {\n val = Number(val);\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n const len = bytes.length;\n if (len === 0) {\n throw new TypeError('The value \"' + val + '\" is invalid for argument \"value\"');\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n};\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {};\nfunction E(sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor() {\n super();\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n });\n\n // Add the error code to the name to include it in the stack trace.\n this.name = \"\".concat(this.name, \" [\").concat(sym, \"]\");\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name;\n }\n get code() {\n return sym;\n }\n set code(value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n toString() {\n return \"\".concat(this.name, \" [\").concat(sym, \"]: \").concat(this.message);\n }\n };\n}\nE('ERR_BUFFER_OUT_OF_BOUNDS', function (name) {\n if (name) {\n return \"\".concat(name, \" is outside of buffer bounds\");\n }\n return 'Attempt to access memory outside buffer bounds';\n}, RangeError);\nE('ERR_INVALID_ARG_TYPE', function (name, actual) {\n return \"The \\\"\".concat(name, \"\\\" argument must be of type number. Received type \").concat(typeof actual);\n}, TypeError);\nE('ERR_OUT_OF_RANGE', function (str, range, input) {\n let msg = \"The value of \\\"\".concat(str, \"\\\" is out of range.\");\n let received = input;\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === 'bigint') {\n received = String(input);\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += 'n';\n }\n msg += \" It must be \".concat(range, \". Received \").concat(received);\n return msg;\n}, RangeError);\nfunction addNumericalSeparator(val) {\n let res = '';\n let i = val.length;\n const start = val[0] === '-' ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = \"_\".concat(val.slice(i - 3, i)).concat(res);\n }\n return \"\".concat(val.slice(0, i)).concat(res);\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds(buf, offset, byteLength) {\n validateNumber(offset, 'offset');\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n}\nfunction checkIntBI(value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : '';\n let range;\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = \">= 0\".concat(n, \" and < 2\").concat(n, \" ** \").concat((byteLength + 1) * 8).concat(n);\n } else {\n range = \">= -(2\".concat(n, \" ** \").concat((byteLength + 1) * 8 - 1).concat(n, \") and < 2 ** \") + \"\".concat((byteLength + 1) * 8 - 1).concat(n);\n }\n } else {\n range = \">= \".concat(min).concat(n, \" and <= \").concat(max).concat(n);\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value);\n }\n checkBounds(buf, offset, byteLength);\n}\nfunction validateNumber(value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value);\n }\n}\nfunction boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value);\n }\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', \">= \".concat(type ? 1 : 0, \" and <= \").concat(length), value);\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0];\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return '';\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str;\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n let i;\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n}\nfunction numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n}();\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod(fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn;\n}\nfunction BufferBigIntNotDefined() {\n throw new Error('BigInt not supported');\n}","var Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar StringDecoder = require('string_decoder').StringDecoder;\nvar inherits = require('inherits');\nfunction CipherBase(hashMode) {\n Transform.call(this);\n this.hashMode = typeof hashMode === 'string';\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest;\n } else {\n this.final = this._finalOrDigest;\n }\n if (this._final) {\n this.__final = this._final;\n this._final = null;\n }\n this._decoder = null;\n this._encoding = null;\n}\ninherits(CipherBase, Transform);\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc);\n }\n var outData = this._update(data);\n if (this.hashMode) return this;\n if (outputEnc) {\n outData = this._toString(outData, outputEnc);\n }\n return outData;\n};\nCipherBase.prototype.setAutoPadding = function () {};\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state');\n};\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state');\n};\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state');\n};\nCipherBase.prototype._transform = function (data, _, next) {\n var err;\n try {\n if (this.hashMode) {\n this._update(data);\n } else {\n this.push(this._update(data));\n }\n } catch (e) {\n err = e;\n } finally {\n next(err);\n }\n};\nCipherBase.prototype._flush = function (done) {\n var err;\n try {\n this.push(this.__final());\n } catch (e) {\n err = e;\n }\n done(err);\n};\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0);\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true);\n }\n return outData;\n};\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc);\n this._encoding = enc;\n }\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings');\n var out = this._decoder.write(value);\n if (fin) {\n out += this._decoder.end();\n }\n return out;\n};\nmodule.exports = CipherBase;","function r(e) {\n var t,\n f,\n n = \"\";\n if (\"string\" == typeof e || \"number\" == typeof e) n += e;else if (\"object\" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += \" \"), n += f);else for (t in e) e[t] && (n && (n += \" \"), n += t);\n return n;\n}\nexport function clsx() {\n for (var e, t, f = 0, n = \"\"; f < arguments.length;) (e = arguments[f++]) && (t = r(e)) && (n && (n += \" \"), n += t);\n return n;\n}\nexport default clsx;","'use strict';\n\nexports.parse = parse;\nexports.stringify = stringify;\nvar comma = ',';\nvar space = ' ';\nvar empty = '';\n\n// Parse comma-separated tokens to an array.\nfunction parse(value) {\n var values = [];\n var input = String(value || empty);\n var index = input.indexOf(comma);\n var lastIndex = 0;\n var end = false;\n var val;\n while (!end) {\n if (index === -1) {\n index = input.length;\n end = true;\n }\n val = input.slice(lastIndex, index).trim();\n if (val || !end) {\n values.push(val);\n }\n lastIndex = index + 1;\n index = input.indexOf(comma, lastIndex);\n }\n return values;\n}\n\n// Compile an array to comma-separated tokens.\n// `options.padLeft` (default: `true`) pads a space left of each token, and\n// `options.padRight` (default: `false`) pads a space to the right of each token.\nfunction stringify(values, options) {\n var settings = options || {};\n var left = settings.padLeft === false ? empty : space;\n var right = settings.padRight ? space : empty;\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === empty) {\n values = values.concat(empty);\n }\n return values.join(right + comma + left).trim();\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\nexports.isError = isError;\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' ||\n // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('buffer').Buffer.isBuffer;\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var elliptic = require('elliptic');\nvar BN = require('bn.js');\nmodule.exports = function createECDH(curve) {\n return new ECDH(curve);\n};\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n};\naliases.p224 = aliases.secp224r1;\naliases.p256 = aliases.secp256r1 = aliases.prime256v1;\naliases.p192 = aliases.secp192r1 = aliases.prime192v1;\naliases.p384 = aliases.secp384r1;\naliases.p521 = aliases.secp521r1;\nfunction ECDH(curve) {\n this.curveType = aliases[curve];\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n this.keys = void 0;\n}\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair();\n return this.getPublicKey(enc, format);\n};\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8';\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic();\n var out = otherPub.mul(this.keys.getPrivate()).getX();\n return formatReturnValue(out, enc, this.curveType.byteLength);\n};\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true);\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\n }\n return formatReturnValue(key, enc);\n};\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc);\n};\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this.keys._importPublic(pub);\n return this;\n};\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n var _priv = new BN(priv);\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n this.keys._importPrivate(_priv);\n return this;\n};\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n var buf = new Buffer(bn);\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length);\n zeros.fill(0);\n buf = Buffer.concat([zeros, buf]);\n }\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","'use strict';\n\nvar inherits = require('inherits');\nvar MD5 = require('md5.js');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar Base = require('cipher-base');\nfunction Hash(hash) {\n Base.call(this, 'digest');\n this._hash = hash;\n}\ninherits(Hash, Base);\nHash.prototype._update = function (data) {\n this._hash.update(data);\n};\nHash.prototype._final = function () {\n return this._hash.digest();\n};\nmodule.exports = function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') return new MD5();\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160();\n return new Hash(sha(alg));\n};","var MD5 = require('md5.js');\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\n};","'use strict';\n\nvar inherits = require('inherits');\nvar Legacy = require('./legacy');\nvar Base = require('cipher-base');\nvar Buffer = require('safe-buffer').Buffer;\nvar md5 = require('create-hash/md5');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar ZEROS = Buffer.alloc(128);\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n key = hash.update(key).digest();\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n this._hash.update(ipad);\n}\ninherits(Hmac, Base);\nHmac.prototype._update = function (data) {\n this._hash.update(data);\n};\nHmac.prototype._final = function () {\n var h = this._hash.digest();\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg);\n return hash.update(this._opad).update(h).digest();\n};\nmodule.exports = function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n return new Hmac(alg, key);\n};","'use strict';\n\nvar inherits = require('inherits');\nvar Buffer = require('safe-buffer').Buffer;\nvar Base = require('cipher-base');\nvar ZEROS = Buffer.alloc(128);\nvar blocksize = 64;\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n this._alg = alg;\n this._key = key;\n if (key.length > blocksize) {\n key = alg(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n this._hash = [ipad];\n}\ninherits(Hmac, Base);\nHmac.prototype._update = function (data) {\n this._hash.push(data);\n};\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash));\n return this._alg(Buffer.concat([this._opad, h]));\n};\nmodule.exports = Hmac;","'use strict';\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes');\nexports.createHash = exports.Hash = require('create-hash');\nexports.createHmac = exports.Hmac = require('create-hmac');\nvar algos = require('browserify-sign/algos');\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\nexports.getHashes = function () {\n return hashes;\n};\nvar p = require('pbkdf2');\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\nvar aes = require('browserify-cipher');\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\nvar dh = require('diffie-hellman');\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\nvar sign = require('browserify-sign');\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = require('create-ecdh');\nvar publicEncrypt = require('public-encrypt');\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt;\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill');\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\nexports.createCredentials = function () {\n throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\\n'));\n};\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n};","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n};\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\nfunction isReactElement(value) {\n return value.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction emptyTarget(val) {\n return Array.isArray(val) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepmerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepmerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return Object.propertyIsEnumerable.call(target, symbol);\n }) : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n } catch (_) {\n return false;\n }\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n } else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction deepmerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || isMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n } else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n } else {\n return mergeObject(target, source, options);\n }\n}\ndeepmerge.all = function deepmergeAll(array, options) {\n if (!Array.isArray(array)) {\n throw new Error('first argument should be an array');\n }\n return array.reduce(function (prev, next) {\n return deepmerge(prev, next, options);\n }, {});\n};\nvar deepmerge_1 = deepmerge;\nmodule.exports = deepmerge_1;","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar proto = {};\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++) this.iv[i] = iv[i];\n}\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n CBC.create = function create(options) {\n return new CBC(options);\n };\n return CBC;\n}\nexports.instantiate = instantiate;\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) iv[i] ^= inp[inOff + i];\n superProto._update.call(this, iv, 0, out, outOff);\n for (var i = 0; i < this.blockSize; i++) iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n for (var i = 0; i < this.blockSize; i++) out[outOff + i] ^= iv[i];\n for (var i = 0; i < this.blockSize; i++) iv[i] = inp[inOff + i];\n }\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false;\n}\nmodule.exports = Cipher;\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data);\n};\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++) this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = (this.bufferOff + data.length) / this.blockSize | 0;\n var out = new Array(count * this.blockSize);\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - (data.length - inputOff) % this.blockSize;\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n return out;\n};\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n return out;\n};\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n while (off < buffer.length) buffer[off++] = 0;\n return true;\n};\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n return this._unpad(out);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\nfunction DES(options) {\n Cipher.call(this, options);\n var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\nDES.create = function create(options) {\n return new DES(options);\n};\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++) buffer[i] = value;\n return true;\n};\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++) assert.equal(buffer[i], pad);\n return buffer.slice(0, buffer.length - pad);\n};\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar Cipher = require('./cipher');\nvar DES = require('./des');\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n if (type === 'encrypt') {\n this.ciphers = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\nmodule.exports = EDE;\nEDE.create = function create(options) {\n return new EDE(options);\n};\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];\n return res >>> 0;\n};\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = value >>> 16 & 0xff;\n bytes[2 + off] = value >>> 8 & 0xff;\n bytes[3 + off] = value & 0xff;\n};\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\nvar pc2table = [\n// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26,\n// inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = inR >>> 18 - i * 6 & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n return out >>> 0;\n};\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size) str = '0' + str;\n var out = [];\n for (var i = 0; i < size; i += group) out.push(str.slice(i, i + group));\n return out.join(' ');\n};","var generatePrime = require('./lib/generatePrime');\nvar primes = require('./lib/primes.json');\nvar DH = require('./lib/dh');\nfunction getDiffieHellman(mod) {\n var prime = new Buffer(primes[mod].prime, 'hex');\n var gen = new Buffer(primes[mod].gen, 'hex');\n return new DH(prime, gen);\n}\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n return new DH(prime, generator, true);\n}\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++) if (k % res[j] === 0) break;\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n primes = res;\n return res;\n}\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n for (var i = 0; i < primes.length; i++) if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n var num, n2;\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","var prefix = require('prefix-style');\nvar toCamelCase = require('to-camel-case');\nvar cache = {\n 'float': 'cssFloat'\n};\nvar addPxToStyle = require('add-px-to-style');\nfunction style(element, property, value) {\n var camel = cache[property];\n if (typeof camel === 'undefined') {\n camel = detect(property);\n }\n\n // may be false if CSS prop is unsupported\n if (camel) {\n if (value === undefined) {\n return element.style[camel];\n }\n element.style[camel] = addPxToStyle(camel, value);\n }\n}\nfunction each(element, properties) {\n for (var k in properties) {\n if (properties.hasOwnProperty(k)) {\n style(element, k, properties[k]);\n }\n }\n}\nfunction detect(cssProp) {\n var camel = toCamelCase(cssProp);\n var result = prefix(camel);\n cache[camel] = cache[cssProp] = cache[result] = result;\n return result;\n}\nfunction set() {\n if (arguments.length === 2) {\n if (typeof arguments[1] === 'string') {\n arguments[0].style.cssText = arguments[1];\n } else {\n each(arguments[0], arguments[1]);\n }\n } else {\n style(arguments[0], arguments[1], arguments[2]);\n }\n}\nmodule.exports = set;\nmodule.exports.set = set;\nmodule.exports.get = function (element, properties) {\n if (Array.isArray(properties)) {\n return properties.reduce(function (obj, prop) {\n obj[prop] = style(element, prop || '');\n return obj;\n }, {});\n } else {\n return style(element, properties || '');\n }\n};","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\nvar MAX_OCTET = 0x80,\n CLASS_UNIVERSAL = 0,\n PRIMITIVE_BIT = 0x20,\n TAG_SEQ = 0x10,\n TAG_INT = 0x02,\n ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6,\n ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6;\nfunction base64Url(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction signatureAsBuffer(signature) {\n if (Buffer.isBuffer(signature)) {\n return signature;\n } else if ('string' === typeof signature) {\n return Buffer.from(signature, 'base64');\n }\n throw new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\nfunction derToJose(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg);\n\n // the DER encoded param should at most be the param size, plus a padding\n // zero, since due to being a signed integer\n var maxEncodedParamLength = paramBytes + 1;\n var inputLength = signature.length;\n var offset = 0;\n if (signature[offset++] !== ENCODED_TAG_SEQ) {\n throw new Error('Could not find expected \"seq\"');\n }\n var seqLength = signature[offset++];\n if (seqLength === (MAX_OCTET | 1)) {\n seqLength = signature[offset++];\n }\n if (inputLength - offset < seqLength) {\n throw new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n }\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"r\"');\n }\n var rLength = signature[offset++];\n if (inputLength - offset - 2 < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n }\n if (maxEncodedParamLength < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n var rOffset = offset;\n offset += rLength;\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"s\"');\n }\n var sLength = signature[offset++];\n if (inputLength - offset !== sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n }\n if (maxEncodedParamLength < sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n var sOffset = offset;\n offset += sLength;\n if (offset !== inputLength) {\n throw new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n }\n var rPadding = paramBytes - rLength,\n sPadding = paramBytes - sLength;\n var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n for (offset = 0; offset < rPadding; ++offset) {\n dst[offset] = 0;\n }\n signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n offset = paramBytes;\n for (var o = offset; offset < o + sPadding; ++offset) {\n dst[offset] = 0;\n }\n signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n dst = dst.toString('base64');\n dst = base64Url(dst);\n return dst;\n}\nfunction countPadding(buf, start, stop) {\n var padding = 0;\n while (start + padding < stop && buf[start + padding] === 0) {\n ++padding;\n }\n var needsSign = buf[start + padding] >= MAX_OCTET;\n if (needsSign) {\n --padding;\n }\n return padding;\n}\nfunction joseToDer(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg);\n var signatureBytes = signature.length;\n if (signatureBytes !== paramBytes * 2) {\n throw new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n }\n var rPadding = countPadding(signature, 0, paramBytes);\n var sPadding = countPadding(signature, paramBytes, signature.length);\n var rLength = paramBytes - rPadding;\n var sLength = paramBytes - sPadding;\n var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n var shortLength = rsBytes < MAX_OCTET;\n var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n var offset = 0;\n dst[offset++] = ENCODED_TAG_SEQ;\n if (shortLength) {\n // Bit 8 has value \"0\"\n // bits 7-1 give the length.\n dst[offset++] = rsBytes;\n } else {\n // Bit 8 of first octet has value \"1\"\n // bits 7-1 give the number of additional length octets.\n dst[offset++] = MAX_OCTET | 1;\n // length, base 256\n dst[offset++] = rsBytes & 0xff;\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = rLength;\n if (rPadding < 0) {\n dst[offset++] = 0;\n offset += signature.copy(dst, offset, 0, paramBytes);\n } else {\n offset += signature.copy(dst, offset, rPadding, paramBytes);\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = sLength;\n if (sPadding < 0) {\n dst[offset++] = 0;\n signature.copy(dst, offset, paramBytes);\n } else {\n signature.copy(dst, offset, paramBytes + sPadding);\n }\n return dst;\n}\nmodule.exports = {\n derToJose: derToJose,\n joseToDer: joseToDer\n};","'use strict';\n\nfunction getParamSize(keySize) {\n var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1);\n return result;\n}\nvar paramBytesForAlg = {\n ES256: getParamSize(256),\n ES384: getParamSize(384),\n ES512: getParamSize(521)\n};\nfunction getParamBytesForAlg(alg) {\n var paramBytes = paramBytesForAlg[alg];\n if (paramBytes) {\n return paramBytes;\n }\n throw new Error('Unknown algorithm \"' + alg + '\"');\n}\nmodule.exports = getParamBytesForAlg;","'use strict';\n\nvar elliptic = exports;\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--) nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--) l++;\n if (i >= 0) l++;\n acc = acc.dblp(l);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n var comb = [points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n var index = [-3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */];\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n if (!zero) break;\n k++;\n i--;\n }\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++) wnd[i] = null;\n if (jacobianResult) return acc;else return acc.toP();\n};\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\nBasePoint.prototype.eq = function eq( /*other*/\n) {\n throw new Error('Not implemented');\n};\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\n return [0x04].concat(x, this.getY().toArray('be', len));\n};\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed) return this;\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n return this;\n};\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++) res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++) r = r.dbl();\n return r;\n};","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar assert = utils.assert;\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n Base.call(this, 'edwards', conf);\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n return lhs.cmp(rhs) === 0;\n};\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n};\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n\n // Double in extended coordinates\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;","'use strict';\n\nvar curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar utils = require('../utils');\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n return y.redSqr().cmp(rhs) === 0;\n};\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' z: ' + this.z.fromRed().toString(16, 2) + '>';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) bits.push(t.andln(1));\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n return this.x.fromRed();\n};","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar assert = utils.assert;\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function (vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [l1, l2];\n};\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\n};\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function (p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\n return [this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n }];\n};\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) return res;\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [res].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [res].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC Point Infinity>';\n return '<EC Point x: ' + this.x.fromRed().toString(16, 2) + ' y: ' + this.y.fromRed().toString(16, 2) + '>';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p;\n\n // P + O = P\n if (p.inf) return this;\n\n // P + P = 2P\n if (this.eq(p)) return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p)) return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function (p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity()) return this.curve.point(null, null);\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n return this.curve.point(ax, ay);\n};\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p;\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ();\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++) r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow) jz4 = jz4.redMul(jyd4);\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '<EC JPoint Infinity>';\n return '<EC JPoint x: ' + this.x.toString(16, 2) + ' y: ' + this.y.toString(16, 2) + ' z: ' + this.z.toString(16, 2) + '>';\n};\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};","'use strict';\n\nvar curves = exports;\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\nvar assert = utils.assert;\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function () {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\n});\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\n});\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\n});\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['9']\n});\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options), 'Unknown curve ' + options);\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve) options = {\n curve: options\n };\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options) options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg;\n};\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options) options = {};\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n for (var iter = 0;; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\n }\n};\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\nEC.prototype.recoverPubKey = function (msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\nEC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null) return signature.recoveryParam;\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n if (Qprime.eq(Q)) return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair) return priv;\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\n};\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if (!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\nKeyPair.prototype.inspect = function inspect() {\n return '<Key priv: ' + (this.priv && this.priv.toString(16, 2)) + ' pub: ' + (this.pub && this.pub.inspect()) + ' >';\n};","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\nfunction Position() {\n this.place = 0;\n}\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n p.place = off;\n return val;\n}\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if (len + p.place !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n return true;\n};\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\n arr.push(len);\n}\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r);\n // Pad values\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [0x02];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [0x30];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n Rencoded: Rencoded\n });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++) hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature) return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array<Byte>} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array<Byte>} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\n};\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\nmodule.exports = KeyPair;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array<Bytes>|Object} sig -\n* @param {Array<Bytes>|Point} [sig.R] - R point as Point or bytes\n* @param {Array<Bytes>|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array<Bytes>} [sig.Rencoded] - R point encoded\n* @param {Array<Bytes>} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n assert(sig.R && sig.S, 'Signature without R or S');\n if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\nmodule.exports = Signature;","module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\n};","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n var ws = 1 << w + 1;\n var k = num.clone();\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf[i] = z;\n k.iushrn(1);\n }\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = k1.andln(3) + d1 & 3;\n var m24 = k2.andln(3) + d2 & 3;\n if (m14 === 3) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n jsf[0].push(u1);\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n return jsf;\n}\nutils.getJSF = getJSF;\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\nutils.parseBytes = parseBytes;\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function () {\n return defaultMaxListeners;\n },\n set: function (arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\nEventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n var handler = events[type];\n if (handler === undefined) return false;\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);\n }\n return true;\n};\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type, listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n return target;\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\nfunction _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n};\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n return this;\n};\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n return this;\n};\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\nEventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n if (events !== undefined) {\n var evlistener = events[type];\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n return 0;\n}\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i) copy[i] = arr[i];\n return copy;\n}\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) list[index] = list[index + 1];\n list.pop();\n}\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n }\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n}\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}","var Buffer = require('safe-buffer').Buffer;\nvar MD5 = require('md5.js');\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey(password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary');\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary');\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length');\n }\n var keyLen = keyBits / 8;\n var key = Buffer.alloc(keyLen);\n var iv = Buffer.alloc(ivLen || 0);\n var tmp = Buffer.alloc(0);\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5();\n hash.update(tmp);\n hash.update(password);\n if (salt) hash.update(salt);\n tmp = hash.digest();\n var used = 0;\n if (keyLen > 0) {\n var keyStart = key.length - keyLen;\n used = Math.min(keyLen, tmp.length);\n tmp.copy(key, keyStart, 0, used);\n keyLen -= used;\n }\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen;\n var length = Math.min(ivLen, tmp.length - used);\n tmp.copy(iv, ivStart, used, used + length);\n ivLen -= length;\n }\n }\n tmp.fill(0);\n return {\n key: key,\n iv: iv\n };\n}\nmodule.exports = EVP_BytesToKey;","/**\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\n * @copyright 2019\n * @license MIT\n */\n\nconst ExactTrie = require('./lib/ExactTrie');\nmodule.exports = ExactTrie;","/**\n * @author Timur Kuzhagaliyev <tim.kuzh@gmail.com>\n * @copyright 2019\n * @license MIT\n */\n\nclass ExactTrie {\n /**\n * @param {object} [options]\n * @param {boolean} [options.ignoreCase]\n */\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.trie = {};\n this.ignoreCase = options.ignoreCase !== undefined ? !!options.ignoreCase : true;\n }\n\n /**\n * @param {string} key\n * @param {*} value\n * @param {boolean} [reverse]\n * @returns {ExactTrie}\n */\n put(key, value) {\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (this.ignoreCase) key = key.toLowerCase();\n let curr = this.trie;\n if (reverse) {\n for (let i = key.length - 1; i >= 0; --i) {\n const char = key.charAt(i);\n if (!curr[char]) curr[char] = {};\n curr = curr[char];\n }\n } else {\n for (let i = 0; i < key.length; ++i) {\n const char = key.charAt(i);\n if (!curr[char]) curr[char] = {};\n curr = curr[char];\n }\n }\n curr['__'] = value;\n return this;\n }\n\n /**\n * @param {string[]} keys\n * @param {*|*[]} values\n * @param {boolean} [reverse]\n * @returns {ExactTrie}\n */\n putAll(keys, values) {\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const valuesIsArray = toString.call(values) === '[object Array]';\n for (let i = 0; i < keys.length; ++i) {\n this.put(keys[i], valuesIsArray ? values[i] : values, reverse);\n }\n return this;\n }\n\n /**\n * @param {string} key\n * @param {boolean} [reverse]\n * @returns {*}\n */\n get(key) {\n let reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.ignoreCase) key = key.toLowerCase();\n let curr = this.trie;\n if (reverse) {\n for (let i = key.length - 1; i >= 0; --i) {\n const char = key.charAt(i);\n let next = curr[char];\n if (!next) return;\n curr = next;\n }\n } else {\n for (let i = 0; i < key.length; i++) {\n const char = key.charAt(i);\n let next = curr[char];\n if (!next) return;\n curr = next;\n }\n }\n return curr['__'];\n }\n\n /**\n * @param {string[]} keys\n * @param {boolean} [reverse]\n * @returns {*[]}\n */\n getAll(keys) {\n let reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const values = new Array(keys.length);\n for (let i = 0; i < keys.length; ++i) {\n values[i] = this.get(keys[i], reverse);\n }\n return values;\n }\n\n /**\n * @param {string} key\n * @param {boolean} [reverse]\n * @returns {boolean}\n */\n has(key) {\n let reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return this.get(key, reverse) !== undefined;\n }\n\n /**\n * @param {string[]} keys\n * @param {boolean} [reverse]\n * @returns {boolean[]}\n */\n hasAll(keys) {\n let reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const values = new Array(keys.length);\n for (let i = 0; i < keys.length; ++i) {\n values[i] = this.has(keys[i], reverse);\n }\n return values;\n }\n\n /**\n * @param {string} string\n * @param {string|null} [checkpointChar]\n * @param {boolean} [reverse]\n * @returns {*}\n */\n getWithCheckpoints(string) {\n let checkpointChar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n if (this.ignoreCase) string = string.toLowerCase();\n let candidate = undefined;\n let curr = this.trie;\n if (reverse) {\n for (let i = string.length - 1; i >= 0; --i) {\n const char = string.charAt(i);\n let next = curr[char];\n if (!next) break;\n if (checkpointChar === null || char === checkpointChar) {\n const val = curr['__'];\n if (val) candidate = val;\n }\n curr = next;\n }\n } else {\n for (let i = 0; i < string.length; ++i) {\n const char = string.charAt(i);\n let next = curr[char];\n if (!next) break;\n if (char === checkpointChar) {\n const val = curr['__'];\n if (val) candidate = val;\n }\n curr = next;\n }\n }\n const val = curr['__'];\n if (val) candidate = val;\n return candidate;\n }\n\n /**\n * @param {string[]} keys\n * @param {string|null} [checkpointChar]\n * @param {boolean} [reverse]\n * @returns {*[]}\n */\n getAllWithCheckpoints(keys) {\n let checkpointChar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const values = new Array(keys.length);\n for (let i = 0; i < keys.length; ++i) {\n values[i] = this.getWithCheckpoints(keys[i], checkpointChar, reverse);\n }\n return values;\n }\n\n /**\n * @param {string} string\n * @param {string|null} [checkpointChar]\n * @param {boolean} [reverse]\n * @returns {*}\n */\n hasWithCheckpoints(string) {\n let checkpointChar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return this.getWithCheckpoints(string, checkpointChar, reverse) !== undefined;\n }\n\n /**\n * @param {string[]} keys\n * @param {string|null} [checkpointChar]\n * @param {boolean} [reverse]\n * @returns {boolean[]}\n */\n hasAllWithCheckpoints(keys) {\n let checkpointChar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n let reverse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n const values = new Array(keys.length);\n for (let i = 0; i < keys.length; ++i) {\n values[i] = this.hasWithCheckpoints(keys[i], checkpointChar, reverse);\n }\n return values;\n }\n}\nmodule.exports = ExactTrie;","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n return toStr.call(arr) === '[object Array]';\n};\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {/**/}\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n return obj[name];\n};\nmodule.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false;\n\n // Handle a deep copy situation\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {};\n // skip the boolean and the target\n i = 2;\n }\n if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n for (; i < length; ++i) {\n options = arguments[i];\n // Only deal with non-null/undefined values\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name);\n\n // Prevent never-ending loop\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n }\n\n // Never move original objects, clone them\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n });\n\n // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n};","(function (a, b) {\n if (\"function\" == typeof define && define.amd) define([], b);else if (\"undefined\" != typeof exports) b();else {\n b(), a.FileSaver = {\n exports: {}\n }.exports;\n }\n})(this, function () {\n \"use strict\";\n\n function b(a, b) {\n return \"undefined\" == typeof b ? b = {\n autoBom: !1\n } : \"object\" != typeof b && (console.warn(\"Deprecated: Expected third argument to be a object\"), b = {\n autoBom: !b\n }), b.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type) ? new Blob([\"\\uFEFF\", a], {\n type: a.type\n }) : a;\n }\n function c(a, b, c) {\n var d = new XMLHttpRequest();\n d.open(\"GET\", a), d.responseType = \"blob\", d.onload = function () {\n g(d.response, b, c);\n }, d.onerror = function () {\n console.error(\"could not download file\");\n }, d.send();\n }\n function d(a) {\n var b = new XMLHttpRequest();\n b.open(\"HEAD\", a, !1);\n try {\n b.send();\n } catch (a) {}\n return 200 <= b.status && 299 >= b.status;\n }\n function e(a) {\n try {\n a.dispatchEvent(new MouseEvent(\"click\"));\n } catch (c) {\n var b = document.createEvent(\"MouseEvents\");\n b.initMouseEvent(\"click\", !0, !0, window, 0, 0, 0, 80, 20, !1, !1, !1, !1, 0, null), a.dispatchEvent(b);\n }\n }\n var f = \"object\" == typeof window && window.window === window ? window : \"object\" == typeof self && self.self === self ? self : \"object\" == typeof global && global.global === global ? global : void 0,\n a = f.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent),\n g = f.saveAs || (\"object\" != typeof window || window !== f ? function () {} : \"download\" in HTMLAnchorElement.prototype && !a ? function (b, g, h) {\n var i = f.URL || f.webkitURL,\n j = document.createElement(\"a\");\n g = g || b.name || \"download\", j.download = g, j.rel = \"noopener\", \"string\" == typeof b ? (j.href = b, j.origin === location.origin ? e(j) : d(j.href) ? c(b, g, h) : e(j, j.target = \"_blank\")) : (j.href = i.createObjectURL(b), setTimeout(function () {\n i.revokeObjectURL(j.href);\n }, 4E4), setTimeout(function () {\n e(j);\n }, 0));\n } : \"msSaveOrOpenBlob\" in navigator ? function (f, g, h) {\n if (g = g || f.name || \"download\", \"string\" != typeof f) navigator.msSaveOrOpenBlob(b(f, h), g);else if (d(f)) c(f, g, h);else {\n var i = document.createElement(\"a\");\n i.href = f, i.target = \"_blank\", setTimeout(function () {\n e(i);\n });\n }\n } : function (b, d, e, g) {\n if (g = g || open(\"\", \"_blank\"), g && (g.document.title = g.document.body.innerText = \"downloading...\"), \"string\" == typeof b) return c(b, d, e);\n var h = \"application/octet-stream\" === b.type,\n i = /constructor/i.test(f.HTMLElement) || f.safari,\n j = /CriOS\\/[\\d]+/.test(navigator.userAgent);\n if ((j || h && i || a) && \"undefined\" != typeof FileReader) {\n var k = new FileReader();\n k.onloadend = function () {\n var a = k.result;\n a = j ? a : a.replace(/^data:[^;]*;/, \"data:attachment/file;\"), g ? g.location.href = a : location = a, g = null;\n }, k.readAsDataURL(b);\n } else {\n var l = f.URL || f.webkitURL,\n m = l.createObjectURL(b);\n g ? g.location = m : location.href = m, g = null, setTimeout(function () {\n l.revokeObjectURL(m);\n }, 4E4);\n }\n });\n f.saveAs = g.saveAs = g, \"undefined\" != typeof module && (module.exports = g);\n});\n\n//# sourceMappingURL=FileSaver.min.js.map","/*!\n 2020 Jason Mulligan <jason.mulligan@avoidwork.com>\n @version 6.4.0\n*/\n!function (e, i) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = i() : \"function\" == typeof define && define.amd ? define(i) : (e = \"undefined\" != typeof globalThis ? globalThis : e || self).filesize = i();\n}(this, function () {\n \"use strict\";\n\n var e = /^(b|B)$/,\n i = {\n iec: {\n bits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n bytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n },\n jedec: {\n bits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n bytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n }\n },\n t = {\n iec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n jedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n },\n o = {\n floor: Math.floor,\n ceil: Math.ceil\n };\n function n(n) {\n var r,\n a,\n b,\n l,\n s,\n c,\n d,\n f,\n p,\n u,\n B,\n h,\n g,\n y,\n M,\n m,\n v,\n x,\n N,\n j,\n T,\n E = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n w = [],\n P = 0;\n if (isNaN(n)) throw new TypeError(\"Invalid number\");\n if (b = !0 === E.bits, M = !0 === E.unix, h = !0 === E.pad, a = E.base || 2, g = void 0 !== E.round ? E.round : M ? 1 : 2, d = void 0 !== E.locale ? E.locale : \"\", f = E.localeOptions || {}, m = void 0 !== E.separator ? E.separator : \"\", v = void 0 !== E.spacer ? E.spacer : M ? \"\" : \" \", N = E.symbols || {}, x = 2 === a && E.standard || \"jedec\", B = E.output || \"string\", s = !0 === E.fullform, c = E.fullforms instanceof Array ? E.fullforms : [], r = void 0 !== E.exponent ? E.exponent : -1, j = o[E.roundingMethod] || Math.round, p = (u = Number(n)) < 0, l = a > 2 ? 1e3 : 1024, T = !1 === isNaN(E.precision) ? parseInt(E.precision, 10) : 0, p && (u = -u), (-1 === r || isNaN(r)) && (r = Math.floor(Math.log(u) / Math.log(l))) < 0 && (r = 0), r > 8 && (T > 0 && (T += 8 - r), r = 8), \"exponent\" === B) return r;\n if (0 === u) w[0] = 0, y = w[1] = M ? \"\" : i[x][b ? \"bits\" : \"bytes\"][r];else {\n P = u / (2 === a ? Math.pow(2, 10 * r) : Math.pow(1e3, r)), b && (P *= 8) >= l && r < 8 && (P /= l, r++);\n var k = Math.pow(10, r > 0 ? g : 0);\n w[0] = j(P * k) / k, w[0] === l && r < 8 && void 0 === E.exponent && (w[0] = 1, r++), y = w[1] = 10 === a && 1 === r ? b ? \"kb\" : \"kB\" : i[x][b ? \"bits\" : \"bytes\"][r], M && (w[1] = \"jedec\" === x ? w[1].charAt(0) : r > 0 ? w[1].replace(/B$/, \"\") : w[1], e.test(w[1]) && (w[0] = Math.floor(w[0]), w[1] = \"\"));\n }\n if (p && (w[0] = -w[0]), T > 0 && (w[0] = w[0].toPrecision(T)), w[1] = N[w[1]] || w[1], !0 === d ? w[0] = w[0].toLocaleString() : d.length > 0 ? w[0] = w[0].toLocaleString(d, f) : m.length > 0 && (w[0] = w[0].toString().replace(\".\", m)), h && !1 === Number.isInteger(w[0]) && g > 0) {\n var G = m || \".\",\n K = w[0].toString().split(G),\n S = K[1] || \"\",\n Y = S.length,\n Z = g - Y;\n w[0] = \"\".concat(K[0]).concat(G).concat(S.padEnd(Y + Z, \"0\"));\n }\n return s && (w[1] = c[r] ? c[r] : t[x][r] + (b ? \"bit\" : \"byte\") + (1 === w[0] ? \"\" : \"s\")), \"array\" === B ? w : \"object\" === B ? {\n value: w[0],\n symbol: w[1],\n exponent: r,\n unit: y\n } : w.join(v);\n }\n return n.partial = function (e) {\n return function (i) {\n return n(i, e);\n };\n }, n;\n});\n//# sourceMappingURL=filesize.min.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// eslint-disable-next-line complexity\nconst deflate = (node, index, path) => {\n if (Array.isArray(node)) {\n return node.map(childNode => {\n if (typeof childNode === 'string' || typeof childNode === 'number' || typeof childNode === 'boolean') {\n return childNode;\n } else {\n return deflate(childNode, index, path);\n }\n });\n } else {\n if (node && node.id && node.__typename) {\n const route = path.join(',');\n if (index[route] && index[route][node.__typename] && index[route][node.__typename][node.id]) {\n return {\n // eslint-disable-next-line id-match\n __typename: node.__typename,\n id: node.id\n };\n } else {\n if (!index[route]) {\n index[route] = {};\n }\n if (!index[route][node.__typename]) {\n index[route][node.__typename] = {};\n }\n index[route][node.__typename][node.id] = true;\n }\n }\n const fieldNames = Object.keys(node);\n const result = {};\n for (const fieldName of fieldNames) {\n const value = node[fieldName];\n if (Array.isArray(value) || typeof value === 'object' && value !== null) {\n result[fieldName] = deflate(value, index, path.concat([fieldName]));\n } else {\n result[fieldName] = value;\n }\n }\n return result;\n }\n};\nvar _default = response => {\n const index = {};\n return deflate(response, index, []);\n};\nexports.default = _default;\n//# sourceMappingURL=deflate.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"deflate\", {\n enumerable: true,\n get: function () {\n return _deflate.default;\n }\n});\nObject.defineProperty(exports, \"inflate\", {\n enumerable: true,\n get: function () {\n return _inflate.default;\n }\n});\nvar _deflate = _interopRequireDefault(require(\"./deflate\"));\nvar _inflate = _interopRequireDefault(require(\"./inflate\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// eslint-disable-next-line complexity\nconst inflate = (node, index, path) => {\n if (Array.isArray(node)) {\n return node.map(childNode => {\n if (typeof childNode === 'string' || typeof childNode === 'number' || typeof childNode === 'boolean') {\n return childNode;\n } else {\n return inflate(childNode, index, path);\n }\n });\n } else {\n if (node && node.id && node.__typename) {\n const route = path.join(',');\n if (index[route] && index[route][node.__typename] && index[route][node.__typename][node.id]) {\n return index[route][node.__typename][node.id];\n }\n if (!index[route]) {\n index[route] = {};\n }\n if (!index[route][node.__typename]) {\n index[route][node.__typename] = {};\n }\n index[route][node.__typename][node.id] = node;\n }\n const fieldNames = Object.keys(node);\n const result = {};\n for (const fieldName of fieldNames) {\n const value = node[fieldName];\n if (Array.isArray(value) || typeof value === 'object' && value !== null) {\n result[fieldName] = inflate(value, index, path.concat([fieldName]));\n } else {\n result[fieldName] = value;\n }\n }\n return result;\n }\n};\nvar _default = response => {\n const index = {};\n return inflate(response, index, []);\n};\nexports.default = _default;\n//# sourceMappingURL=inflate.js.map","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n return {\n line: line,\n column: column\n };\n}","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n return locationStr + printPrefixedLines([\n // Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n var _this;\n _classCallCheck(this, GraphQLError);\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n return _this;\n }\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var output = error.message;\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n return output;\n}","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '<SOF>',\n EOF: '<EOF>',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ?\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} :\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName =\n // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n if (className === valueClassName) {\n var stringifiedValue = inspect(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n return false;\n};","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n var _proto = Lexer.prototype;\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */;\n _proto.lookahead = function lookahead() {\n var token = this.token;\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n return token;\n };\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\nfunction printCharCode(code) {\n return (\n // NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF :\n // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) :\n // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n switch (code) {\n case 0xfeff: // <BOM>\n\n case 9: // \\t\n\n case 32: // <space>\n\n case 44:\n // ,\n ++pos;\n continue;\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n break;\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n return readString(source, pos, _line, _col, prev);\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && (\n // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n return position;\n }\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) &&\n // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n ++position;\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n switch (code) {\n case 34:\n value += '\"';\n break;\n case 47:\n value += '/';\n break;\n case 92:\n value += '\\\\';\n break;\n case 98:\n value += '\\b';\n break;\n case 102:\n value += '\\f';\n break;\n case 110:\n value += '\\n';\n break;\n case 114:\n value += '\\r';\n break;\n case 116:\n value += '\\t';\n break;\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n ++position;\n chunkStart = position;\n }\n }\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n ++lexer.line;\n lexer.lineStart = position;\n } else if (\n // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 ||\n // _\n code >= 48 && code <= 57 ||\n // 0-9\n code >= 65 && code <= 90 ||\n // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n var _proto = Parser.prototype;\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */;\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */;\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n case 'fragment':\n return this.parseFragmentDefinition();\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */;\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n var operation = this.parseOperationType();\n var name;\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */;\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n switch (operationToken.value) {\n case 'query':\n return 'query';\n case 'mutation':\n return 'mutation';\n case 'subscription':\n return 'subscription';\n }\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */;\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */;\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */;\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */;\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */;\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */;\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */;\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */;\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */;\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */;\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */;\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */;\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n case TokenKind.INT:\n this._lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n case TokenKind.FLOAT:\n this._lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n case TokenKind.NAME:\n this._lexer.advance();\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n break;\n }\n throw this.unexpected();\n };\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n this._lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */;\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n var start = this._lexer.token;\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */;\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n var start = this._lexer.token;\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */;\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */;\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */;\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */;\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n return type;\n }\n /**\n * NamedType : Name\n */;\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */;\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n case 'scalar':\n return this.parseScalarTypeDefinition();\n case 'type':\n return this.parseObjectTypeDefinition();\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n case 'union':\n return this.parseUnionTypeDefinition();\n case 'enum':\n return this.parseEnumTypeDefinition();\n case 'input':\n return this.parseInputObjectTypeDefinition();\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n throw this.unexpected(keywordToken);\n };\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */;\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */;\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */;\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */;\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */;\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */;\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n return types;\n }\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */;\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n this._lexer.advance();\n return [];\n }\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */;\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */;\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */;\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */;\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */;\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */;\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */;\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */;\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */;\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */;\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */;\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */;\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n case 'scalar':\n return this.parseScalarTypeExtension();\n case 'type':\n return this.parseObjectTypeExtension();\n case 'interface':\n return this.parseInterfaceTypeExtension();\n case 'union':\n return this.parseUnionTypeExtension();\n case 'enum':\n return this.parseEnumTypeExtension();\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */;\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */;\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n if (directives.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */;\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */;\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */;\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */;\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */;\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */;\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */;\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */;\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */;\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */;\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */;\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n if (token.kind === kind) {\n this._lexer.advance();\n return token;\n }\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */;\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n if (token.kind === kind) {\n this._lexer.advance();\n return token;\n }\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */;\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */;\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n return true;\n }\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */;\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */;\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */;\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n return nodes;\n };\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\" + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\" + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n } else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set());\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n } else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), {\n definitions: definitions\n });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc) delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n } else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar inherits = require('inherits');\nfunction throwIfNotStringOrBuffer(val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer');\n }\n}\nfunction HashBase(blockSize) {\n Transform.call(this);\n this._block = Buffer.allocUnsafe(blockSize);\n this._blockSize = blockSize;\n this._blockOffset = 0;\n this._length = [0, 0, 0, 0];\n this._finalized = false;\n}\ninherits(HashBase, Transform);\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null;\n try {\n this.update(chunk, encoding);\n } catch (err) {\n error = err;\n }\n callback(error);\n};\nHashBase.prototype._flush = function (callback) {\n var error = null;\n try {\n this.push(this.digest());\n } catch (err) {\n error = err;\n }\n callback(error);\n};\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data');\n if (this._finalized) throw new Error('Digest already called');\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding);\n\n // consume data\n var block = this._block;\n var offset = 0;\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++];\n this._update();\n this._blockOffset = 0;\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++];\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry;\n carry = this._length[j] / 0x0100000000 | 0;\n if (carry > 0) this._length[j] -= 0x0100000000 * carry;\n }\n return this;\n};\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented');\n};\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called');\n this._finalized = true;\n var digest = this._digest();\n if (encoding !== undefined) digest = digest.toString(encoding);\n\n // reset state\n this._block.fill(0);\n this._blockOffset = 0;\n for (var i = 0; i < 4; ++i) this._length[i] = 0;\n return digest;\n};\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented');\n};\nmodule.exports = HashBase;","var hash = exports;\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0) this.pending = null;\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32) this._update(msg, i, i + this._delta32);\n }\n return this;\n};\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n return this._digest(enc);\n};\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - (len + this.padLength) % bytes;\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++) res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n for (t = 8; t < this.padLength; t++) res[i++] = 0;\n }\n return res;\n};","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac)) return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++) key.push(0);\n for (i = 0; i < key.length; i++) key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++) key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little');\n};\nfunction f(j, x, y, z) {\n if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z);\n}\nfunction K(j) {\n if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e;\n}\nfunction Kh(j) {\n if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000;\n}\nvar r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\nvar sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\nfunction SHA1() {\n if (!(this instanceof SHA1)) return new SHA1();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.W = new Array(80);\n}\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n for (var i = 0; i < 16; i++) W[i] = msg[start + i];\n for (; i < W.length; i++) W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\nfunction SHA224() {\n if (!(this instanceof SHA224)) return new SHA224();\n SHA256.call(this);\n this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big');\n};","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\nvar BlockHash = common.BlockHash;\nvar sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\nfunction SHA256() {\n if (!(this instanceof SHA256)) return new SHA256();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n for (var i = 0; i < 16; i++) W[i] = msg[start + i];\n for (; i < W.length; i++) W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","'use strict';\n\nvar utils = require('../utils');\nvar SHA512 = require('./512');\nfunction SHA384() {\n if (!(this instanceof SHA384)) return new SHA384();\n SHA512.call(this);\n this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big');\n};","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++) W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n }\n};\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n var W = this.W;\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ ~xh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ ~xl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ xh & zh ^ yh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ xl & zl ^ yl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\nfunction ft_1(s, x, y, z) {\n if (s === 0) return ch32(x, y, z);\n if (s === 1 || s === 3) return p32(x, y, z);\n if (s === 2) return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\nfunction ch32(x, y, z) {\n return x & y ^ ~x & z;\n}\nexports.ch32 = ch32;\nfunction maj32(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\nexports.maj32 = maj32;\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;\n}\nexports.g0_256 = g0_256;\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;\n}\nexports.g1_256 = g1_256;","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nexports.inherits = inherits;\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = c >> 6 | 192;\n res[p++] = c & 63 | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = c >> 18 | 240;\n res[p++] = c >> 12 & 63 | 128;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n } else {\n res[p++] = c >> 12 | 224;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++) res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\nfunction htonl(w) {\n var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24;\n return res >>> 0;\n}\nexports.htonl = htonl;\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little') w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\nexports.zero2 = zero2;\nfunction zero8(word) {\n if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word;\n}\nexports.zero8 = zero8;\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = m >>> 16 & 0xff;\n res[k + 2] = m >>> 8 & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = m >>> 16 & 0xff;\n res[k + 1] = m >>> 8 & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\nfunction rotr32(w, b) {\n return w >>> b | w << 32 - b;\n}\nexports.rotr32 = rotr32;\nfunction rotl32(w, b) {\n return w << b | w >>> 32 - b;\n}\nexports.rotl32 = rotl32;\nfunction sum32(a, b) {\n return a + b >>> 0;\n}\nexports.sum32 = sum32;\nfunction sum32_3(a, b, c) {\n return a + b + c >>> 0;\n}\nexports.sum32_3 = sum32_3;\nfunction sum32_4(a, b, c, d) {\n return a + b + c + d >>> 0;\n}\nexports.sum32_4 = sum32_4;\nfunction sum32_5(a, b, c, d, e) {\n return a + b + c + d + e >>> 0;\n}\nexports.sum32_5 = sum32_5;\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = lo + el >>> 0;\n carry += lo < el ? 1 : 0;\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\nfunction rotr64_hi(ah, al, num) {\n var r = al << 32 - num | ah >>> num;\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\nfunction rotr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\nfunction shr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;","'use strict';\n\nvar html = require('property-information/html');\nvar svg = require('property-information/svg');\nvar find = require('property-information/find');\nvar hastToReact = require('property-information/hast-to-react.json');\nvar spaces = require('space-separated-tokens');\nvar commas = require('comma-separated-tokens');\nvar style = require('style-to-object');\nvar ns = require('web-namespaces');\nvar convert = require('unist-util-is/convert');\nvar root = convert('root');\nvar element = convert('element');\nvar text = convert('text');\nmodule.exports = wrapper;\nfunction wrapper(h, node, options) {\n var settings = options || {};\n var r = react(h);\n var v = vue(h);\n var vd = vdom(h);\n var prefix;\n if (typeof h !== 'function') {\n throw new Error('h is not a function');\n }\n if (typeof settings === 'string' || typeof settings === 'boolean') {\n prefix = settings;\n settings = {};\n } else {\n prefix = settings.prefix;\n }\n if (root(node)) {\n node = node.children.length === 1 && element(node.children[0]) ? node.children[0] : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: node.children\n };\n } else if (!element(node)) {\n throw new Error('Expected root or element, not `' + (node && node.type || node) + '`');\n }\n return toH(h, node, {\n schema: settings.space === 'svg' ? svg : html,\n prefix: prefix == null ? r || v || vd ? 'h-' : null : prefix,\n key: 0,\n react: r,\n vue: v,\n vdom: vd,\n hyperscript: hyperscript(h)\n });\n}\n\n// Transform a hast node through a hyperscript interface to *anything*!\nfunction toH(h, node, ctx) {\n var parentSchema = ctx.schema;\n var schema = parentSchema;\n var name = node.tagName;\n var attributes = {};\n var nodes = [];\n var index = -1;\n var key;\n var value;\n if (parentSchema.space === 'html' && name.toLowerCase() === 'svg') {\n schema = svg;\n ctx.schema = schema;\n }\n for (key in node.properties) {\n addAttribute(attributes, key, node.properties[key], ctx, name);\n }\n if (ctx.vdom) {\n if (schema.space === 'html') {\n name = name.toUpperCase();\n } else {\n attributes.namespace = ns[schema.space];\n }\n }\n if (ctx.prefix) {\n ctx.key++;\n attributes.key = ctx.prefix + ctx.key;\n }\n if (node.children) {\n while (++index < node.children.length) {\n value = node.children[index];\n if (element(value)) {\n nodes.push(toH(h, value, ctx));\n } else if (text(value)) {\n nodes.push(value.value);\n }\n }\n }\n\n // Restore parent schema.\n ctx.schema = parentSchema;\n\n // Ensure no React warnings are triggered for void elements having children\n // passed in.\n return nodes.length ? h.call(node, name, attributes, nodes) : h.call(node, name, attributes);\n}\nfunction addAttribute(props, prop, value, ctx, name) {\n var info = find(ctx.schema, prop);\n var subprop;\n\n // Ignore nullish and `NaN` values.\n // Ignore `false` and falsey known booleans for hyperlike DSLs.\n if (value == null || value !== value || value === false && (ctx.vue || ctx.vdom || ctx.hyperscript) || !value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript)) {\n return;\n }\n if (value && typeof value === 'object' && 'length' in value) {\n // Accept `array`.\n // Most props are space-separated.\n value = (info.commaSeparated ? commas : spaces).stringify(value);\n }\n\n // Treat `true` and truthy known booleans.\n if (info.boolean && ctx.hyperscript) {\n value = '';\n }\n\n // VDOM, Vue, and React accept `style` as object.\n if (info.property === 'style' && typeof value === 'string' && (ctx.react || ctx.vue || ctx.vdom)) {\n value = parseStyle(value, name);\n }\n if (ctx.vue) {\n if (info.property !== 'style') subprop = 'attrs';\n } else if (!info.mustUseProperty) {\n if (ctx.vdom) {\n if (info.property !== 'style') subprop = 'attributes';\n } else if (ctx.hyperscript) {\n subprop = 'attrs';\n }\n }\n if (subprop) {\n if (!props[subprop]) props[subprop] = {};\n props[subprop][info.attribute] = value;\n } else if (info.space && ctx.react) {\n props[hastToReact[info.property] || info.property] = value;\n } else {\n props[info.attribute] = value;\n }\n}\n\n// Check if `h` is `react.createElement`.\nfunction react(h) {\n var node = h && h('div');\n return Boolean(node && ('_owner' in node || '_store' in node) && node.key == null);\n}\n\n// Check if `h` is `hyperscript`.\nfunction hyperscript(h) {\n return Boolean(h && h.context && h.cleanup);\n}\n\n// Check if `h` is `virtual-dom/h`.\nfunction vdom(h) {\n return h && h('div').type === 'VirtualNode';\n}\nfunction vue(h) {\n var node = h && h('div');\n return Boolean(node && node.context && node.context._isVue);\n}\nfunction parseStyle(value, tagName) {\n var result = {};\n try {\n style(value, iterator);\n } catch (error) {\n error.message = tagName + '[style]' + error.message.slice('undefined'.length);\n throw error;\n }\n return result;\n function iterator(name, value) {\n if (name.slice(0, 4) === '-ms-') name = 'ms-' + name.slice(4);\n result[name.replace(/-([a-z])/g, styleReplacer)] = value;\n }\n}\nfunction styleReplacer($0, $1) {\n return $1.toUpperCase();\n}","'use strict';\n\nmodule.exports = require('./lib');","'use strict';\n\nvar xtend = require('xtend');\nvar defaults = require('./github.json');\nmodule.exports = wrapper;\nvar own = {}.hasOwnProperty;\nvar push = [].push;\nvar nodeSchema = {\n root: {\n children: all\n },\n doctype: handleDoctype,\n comment: handleComment,\n element: {\n tagName: handleTagName,\n properties: handleProperties,\n children: all\n },\n text: {\n value: handleValue\n },\n '*': {\n data: allow,\n position: allow\n }\n};\n\n// Sanitize `node`, according to `schema`.\nfunction wrapper(node, schema) {\n var ctx = {\n type: 'root',\n children: []\n };\n var replace;\n if (node && typeof node === 'object' && node.type) {\n replace = one(xtend(defaults, schema || {}), node, []);\n if (replace) {\n if ('length' in replace) {\n if (replace.length === 1) {\n ctx = replace[0];\n } else {\n ctx.children = replace;\n }\n } else {\n ctx = replace;\n }\n }\n }\n return ctx;\n}\n\n// Sanitize `node`.\nfunction one(schema, node, stack) {\n var type = node && node.type;\n var replacement = {\n type: node.type\n };\n var replace;\n var definition;\n var allowed;\n var result;\n var key;\n if (own.call(nodeSchema, type)) {\n definition = nodeSchema[type];\n if (typeof definition === 'function') {\n definition = definition(schema, node);\n }\n if (definition) {\n replace = true;\n allowed = xtend(definition, nodeSchema['*']);\n for (key in allowed) {\n result = allowed[key](schema, node[key], node, stack);\n if (result === false) {\n replace = null;\n // Set the non-safe value.\n replacement[key] = node[key];\n } else if (result != null) {\n replacement[key] = result;\n }\n }\n }\n }\n if (replace) {\n return replacement;\n }\n return replacement.children && replacement.children.length && schema.strip.indexOf(replacement.tagName) < 0 ? replacement.children : null;\n}\n\n// Sanitize `children`.\nfunction all(schema, children, node, stack) {\n var results = [];\n var index = -1;\n var value;\n if (children) {\n stack.push(node.tagName);\n while (++index < children.length) {\n value = one(schema, children[index], stack);\n if (value) {\n if ('length' in value) {\n push.apply(results, value);\n } else {\n results.push(value);\n }\n }\n }\n stack.pop();\n }\n return results;\n}\n\n// Sanitize `properties`.\nfunction handleProperties(schema, properties, node, stack) {\n var name = handleTagName(schema, node.tagName, node, stack);\n var reqs = schema.required || /* istanbul ignore next */{};\n var props = properties || {};\n var allowed = xtend(toPropertyValueMap(schema.attributes['*']), toPropertyValueMap(own.call(schema.attributes, name) ? schema.attributes[name] : []));\n var result = {};\n var definition;\n var key;\n var value;\n for (key in props) {\n if (own.call(allowed, key)) {\n definition = allowed[key];\n } else if (data(key) && own.call(allowed, 'data*')) {\n definition = allowed['data*'];\n } else {\n continue;\n }\n value = props[key];\n value = value && typeof value === 'object' && 'length' in value ? handlePropertyValues(schema, value, key, definition) : handlePropertyValue(schema, value, key, definition);\n if (value != null) {\n result[key] = value;\n }\n }\n if (own.call(reqs, name)) {\n for (key in reqs[name]) {\n if (!own.call(result, key)) {\n result[key] = reqs[name][key];\n }\n }\n }\n return result;\n}\n\n// Sanitize a property value which is a list.\nfunction handlePropertyValues(schema, values, prop, definition) {\n var result = [];\n var index = -1;\n var value;\n while (++index < values.length) {\n value = handlePropertyValue(schema, values[index], prop, definition);\n if (value != null) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Sanitize a property value.\nfunction handlePropertyValue(schema, value, prop, definition) {\n if ((typeof value === 'boolean' || typeof value === 'number' || typeof value === 'string') && handleProtocol(schema, value, prop) && (!definition.length || definition.indexOf(value) > -1)) {\n return schema.clobber.indexOf(prop) < 0 ? value : schema.clobberPrefix + value;\n }\n}\n\n// Check whether `value` is a safe URL.\nfunction handleProtocol(schema, value, prop) {\n var url = String(value);\n var colon = url.indexOf(':');\n var questionMark = url.indexOf('?');\n var numberSign = url.indexOf('#');\n var slash = url.indexOf('/');\n var protocols = own.call(schema.protocols, prop) ? schema.protocols[prop].concat() : [];\n var index = -1;\n if (!protocols.length || colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign) {\n return true;\n }\n while (++index < protocols.length) {\n if (colon === protocols[index].length && url.slice(0, protocols[index].length) === protocols[index]) {\n return true;\n }\n }\n return false;\n}\n\n// Always return a valid HTML5 doctype.\nfunction handleDoctypeName() {\n return 'html';\n}\n\n// Sanitize `tagName`.\nfunction handleTagName(schema, tagName, node, stack) {\n var name = typeof tagName === 'string' && tagName;\n var index = -1;\n if (!name || name === '*' || schema.tagNames.indexOf(name) < 0) {\n return false;\n }\n\n // Some nodes can break out of their context if they don’t have a certain\n // ancestor.\n if (own.call(schema.ancestors, name)) {\n while (++index < schema.ancestors[name].length) {\n if (stack.indexOf(schema.ancestors[name][index]) > -1) {\n return name;\n }\n }\n return false;\n }\n return name;\n}\nfunction handleDoctype(schema) {\n return schema.allowDoctypes ? {\n name: handleDoctypeName\n } : null;\n}\nfunction handleComment(schema) {\n return schema.allowComments ? {\n value: handleCommentValue\n } : null;\n}\n\n// See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\nfunction handleCommentValue(schema, value) {\n var result = typeof value === 'string' ? value : '';\n var index = result.indexOf('-->');\n return index < 0 ? result : result.slice(0, index);\n}\n\n// Sanitize `value`.\nfunction handleValue(schema, value) {\n return typeof value === 'string' ? value : '';\n}\n\n// Create a map from a list of props or a list of properties and values.\nfunction toPropertyValueMap(values) {\n var result = {};\n var index = -1;\n var value;\n while (++index < values.length) {\n value = values[index];\n if (value && typeof value === 'object' && 'length' in value) {\n result[value[0]] = value.slice(1);\n } else {\n result[value] = [];\n }\n }\n return result;\n}\n\n// Allow `value`.\nfunction allow(schema, value) {\n return value;\n}\n\n// Check if `prop` is a data property.\nfunction data(prop) {\n return prop.length > 4 && prop.slice(0, 4).toLowerCase() === 'data';\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n if (!fromParts.length) return '/';\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\nexport default resolvePathname;","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n return Object.keys(Object.assign({}, a, b)).every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n return false;\n}\nexport default valueEqual;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n if (key) location.key = key;\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\nfunction createTransitionManager() {\n var prompt = null;\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n var listeners = [];\n function appendListener(fn) {\n var isActive = true;\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n var transitionManager = createTransitionManager();\n function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n var forceNextPop = false;\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n function go(n) {\n globalHistory.go(n);\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n var listenerCount = 0;\n function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n var isBlocked = false;\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n }\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n var transitionManager = createTransitionManager();\n function setState(nextState) {\n _extends(history, nextState);\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n var forceNextPop = false;\n var ignorePath = null;\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n return href + '#' + encodePath(basename + createPath(location));\n }\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n var listenerCount = 0;\n function checkDOMListeners(delta) {\n listenerCount += delta;\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n var isBlocked = false;\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n var unblock = transitionManager.setPrompt(prompt);\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n return unblock();\n };\n }\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n function setState(nextState) {\n _extends(history, nextState);\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n function goBack() {\n go(-1);\n }\n function goForward() {\n go(1);\n }\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n return transitionManager.setPrompt(prompt);\n }\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac().update(this.V).update([0x00]);\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest();\n this.V = this._hmac().update(this.V).digest();\n};\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\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;\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 return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\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 if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n var keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n return targetComponent;\n}\nmodule.exports = hoistNonReactStatics;","/** @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';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n}\nfunction A(a) {\n return z(a) === m;\n}\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\nexports.isConcurrentMode = A;\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\nexports.isFragment = function (a) {\n return z(a) === e;\n};\nexports.isLazy = function (a) {\n return z(a) === t;\n};\nexports.isMemo = function (a) {\n return z(a) === r;\n};\nexports.isPortal = function (a) {\n return z(a) === d;\n};\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\nexports.isValidElementType = function (a) {\n 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);\n};\nexports.typeOf = z;","'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}","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n buffer[offset + i - d] |= s * 128;\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function (style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n if (!style) return [];\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = {\n line: lineno,\n column: column\n };\n return function (node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = {\n line: lineno,\n column: column\n };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while (c = comment()) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n var i = 2;\n while (EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))) {\n ++i;\n }\n i += 2;\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n comments(decls);\n\n // declarations\n var decl;\n while (decl = declaration()) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n return decls;\n }\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nmodule.exports = function isBuffer(obj) {\n return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n};","'use strict';\n\nmodule.exports = value => {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n};","var jws = require('jws');\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) {\n return null;\n }\n var payload = decoded.payload;\n\n //try parse the payload\n if (typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if (obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) {}\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError')\n};","var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\nmodule.exports = JsonWebTokenError;","var JsonWebTokenError = require('./JsonWebTokenError');\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\nNotBeforeError.prototype.constructor = NotBeforeError;\nmodule.exports = NotBeforeError;","var JsonWebTokenError = require('./JsonWebTokenError');\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\nTokenExpiredError.prototype.constructor = TokenExpiredError;\nmodule.exports = TokenExpiredError;","var semver = require('semver');\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');","var ms = require('ms');\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n};","exports = module.exports = SemVer;\nvar debug;\n/* istanbul ignore next */\nif (typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift('SEMVER');\n console.log.apply(console, args);\n };\n} else {\n debug = function () {};\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */9007199254740991;\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n\n// The actual regexps go on exports.re\nvar re = exports.re = [];\nvar safeRe = exports.safeRe = [];\nvar src = exports.src = [];\nvar R = 0;\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]';\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [['\\\\s', 1], ['\\\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];\nfunction makeSafeRe(value) {\n for (var i = 0; i < safeRegexReplacements.length; i++) {\n var token = safeRegexReplacements[i][0];\n var max = safeRegexReplacements[i][1];\n value = value.split(token + '*').join(token + '{0,' + max + '}').split(token + '+').join(token + '{1,' + max + '}');\n }\n return value;\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '\\\\d+';\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*';\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')';\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + '|' + src[NONNUMERICIDENTIFIER] + ')';\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + '|' + src[NONNUMERICIDENTIFIER] + ')';\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+';\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] + '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + src[BUILD] + '?';\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + src[BUILD] + '?';\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++;\nsrc[COERCE] = '(?:^|[^\\\\d])' + '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\\\d])';\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nsafeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g');\nvar tildeTrimReplace = '$1~';\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nsafeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g');\nvar caretTrimReplace = '$1^';\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nsafeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g');\nvar comparatorTrimReplace = '$1$2$3';\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAIN] + ')' + '\\\\s*$';\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s*$';\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i]);\n if (!re[i]) {\n re[i] = new RegExp(src[i]);\n\n // Replace all greedy whitespace to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n safeRe[i] = new RegExp(makeSafeRe(src[i]));\n }\n}\nexports.parse = parse;\nfunction parse(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n return version;\n }\n if (typeof version !== 'string') {\n return null;\n }\n if (version.length > MAX_LENGTH) {\n return null;\n }\n var r = options.loose ? safeRe[LOOSE] : safeRe[FULL];\n if (!r.test(version)) {\n return null;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n return null;\n }\n}\nexports.valid = valid;\nfunction valid(version, options) {\n var v = parse(version, options);\n return v ? v.version : null;\n}\nexports.clean = clean;\nfunction clean(version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options);\n return s ? s.version : null;\n}\nexports.SemVer = SemVer;\nfunction SemVer(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');\n }\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options);\n }\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL]);\n if (!m) {\n throw new TypeError('Invalid Version: ' + version);\n }\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.');\n }\n return this.version;\n};\nSemVer.prototype.toString = function () {\n return this.version;\n};\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return this.compareMain(other) || this.comparePre(other);\n};\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n};\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n};\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier);\n }\n this.inc('pre', identifier);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0];\n } else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0];\n }\n } else {\n this.prerelease = [identifier, 0];\n }\n }\n break;\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n this.format();\n this.raw = this.version;\n return this;\n};\nexports.inc = inc;\nfunction inc(version, release, loose, identifier) {\n if (typeof loose === 'string') {\n identifier = loose;\n loose = undefined;\n }\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\nexports.diff = diff;\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n var prefix = '';\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre';\n var defaultResult = 'prerelease';\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key;\n }\n }\n }\n return defaultResult; // may be undefined\n }\n}\nexports.compareIdentifiers = compareIdentifiers;\nvar numeric = /^[0-9]+$/;\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n}\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\nexports.major = major;\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\nexports.minor = minor;\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\nexports.patch = patch;\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\nexports.compare = compare;\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n}\nexports.compareLoose = compareLoose;\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\nexports.rcompare = rcompare;\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\nexports.sort = sort;\nfunction sort(list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose);\n });\n}\nexports.rsort = rsort;\nfunction rsort(list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\nexports.gt = gt;\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\nexports.lt = lt;\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\nexports.eq = eq;\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\nexports.neq = neq;\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\nexports.gte = gte;\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\nexports.lte = lte;\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\nexports.cmp = cmp;\nfunction cmp(a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a === b;\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a !== b;\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n case '!=':\n return neq(a, b, loose);\n case '>':\n return gt(a, b, loose);\n case '>=':\n return gte(a, b, loose);\n case '<':\n return lt(a, b, loose);\n case '<=':\n return lte(a, b, loose);\n default:\n throw new TypeError('Invalid operator: ' + op);\n }\n}\nexports.Comparator = Comparator;\nfunction Comparator(comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options);\n }\n comp = comp.trim().split(/\\s+/).join(' ');\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n debug('comp', this);\n}\nvar ANY = {};\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR];\n var m = comp.match(r);\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp);\n }\n this.operator = m[1];\n if (this.operator === '=') {\n this.operator = '';\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n};\nComparator.prototype.toString = function () {\n return this.value;\n};\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose);\n if (this.semver === ANY) {\n return true;\n }\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n return cmp(version, this.operator, this.semver, this.options);\n};\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n var rangeTmp;\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options);\n return satisfies(this.value, rangeTmp, options);\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options);\n return satisfies(comp.semver, rangeTmp, options);\n }\n var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');\n var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');\n var sameSemVer = this.semver.version === comp.semver.version;\n var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');\n var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');\n var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');\n return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;\n};\nexports.Range = Range;\nfunction Range(range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n return new Range(range.value, options);\n }\n if (!(this instanceof Range)) {\n return new Range(range, options);\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().split(/\\s+/).join(' ');\n\n // First, split based on boolean or ||\n this.set = this.raw.split('||').map(function (range) {\n return this.parseRange(range.trim());\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + this.raw);\n }\n this.format();\n}\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\nRange.prototype.toString = function () {\n return this.range;\n};\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n debug('hyphen replace', range);\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range, safeRe[COMPARATORTRIM]);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(safeRe[TILDETRIM], tildeTrimReplace);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(safeRe[CARETTRIM], caretTrimReplace);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR];\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options);\n }, this).join(' ').split(/\\s+/);\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe);\n });\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options);\n }, this);\n return set;\n};\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n};\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators;\nfunction toComparators(range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator(comp, options) {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options);\n }).join(' ');\n}\nfunction replaceTilde(comp, options) {\n var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n debug('tilde return', ret);\n return ret;\n });\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options);\n }).join(' ');\n}\nfunction replaceCaret(comp, options) {\n debug('caret', comp, options);\n var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';\n }\n }\n debug('caret return', ret);\n return ret;\n });\n}\nfunction replaceXRanges(comp, options) {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options);\n }).join(' ');\n}\nfunction replaceXRange(comp, options) {\n comp = comp.trim();\n var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE];\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n debug('xRange return', ret);\n return ret;\n });\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars(comp, options) {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(safeRe[STAR], '');\n}\n\n// This function is passed to string.replace(safeRe[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0';\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0';\n } else {\n from = '>=' + from;\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0';\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n } else {\n to = '<=' + to;\n }\n return (from + ' ' + to).trim();\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n};\nfunction testSet(set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver);\n if (set[i].semver === ANY) {\n continue;\n }\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n}\nexports.satisfies = satisfies;\nfunction satisfies(version, range, options) {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n return range.test(version);\n}\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions, range, options) {\n var max = null;\n var maxSV = null;\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v;\n maxSV = new SemVer(max, options);\n }\n }\n });\n return max;\n}\nexports.minSatisfying = minSatisfying;\nfunction minSatisfying(versions, range, options) {\n var min = null;\n var minSV = null;\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v;\n minSV = new SemVer(min, options);\n }\n }\n });\n return min;\n}\nexports.minVersion = minVersion;\nfunction minVersion(range, loose) {\n range = new Range(range, loose);\n var minver = new SemVer('0.0.0');\n if (range.test(minver)) {\n return minver;\n }\n minver = new SemVer('0.0.0-0');\n if (range.test(minver)) {\n return minver;\n }\n minver = null;\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version);\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++;\n } else {\n compver.prerelease.push(0);\n }\n compver.raw = compver.format();\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver;\n }\n break;\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break;\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator);\n }\n });\n }\n if (minver && range.test(minver)) {\n return minver;\n }\n return null;\n}\nexports.validRange = validRange;\nfunction validRange(range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*';\n } catch (er) {\n return null;\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr;\nfunction ltr(version, range, options) {\n return outside(version, range, '<', options);\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr;\nfunction gtr(version, range, options) {\n return outside(version, range, '>', options);\n}\nexports.outside = outside;\nfunction outside(version, range, hilo, options) {\n version = new SemVer(version, options);\n range = new Range(range, options);\n var gtfn, ltefn, ltfn, comp, ecomp;\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false;\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n var high = null;\n var low = null;\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0');\n }\n high = high || comparator;\n low = low || comparator;\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator;\n }\n });\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n return true;\n}\nexports.prerelease = prerelease;\nfunction prerelease(version, options) {\n var parsed = parse(version, options);\n return parsed && parsed.prerelease.length ? parsed.prerelease : null;\n}\nexports.intersects = intersects;\nfunction intersects(r1, r2, options) {\n r1 = new Range(r1, options);\n r2 = new Range(r2, options);\n return r1.intersects(r2);\n}\nexports.coerce = coerce;\nfunction coerce(version) {\n if (version instanceof SemVer) {\n return version;\n }\n if (typeof version !== 'string') {\n return null;\n }\n var match = version.match(safeRe[COERCE]);\n if (match == null) {\n return null;\n }\n return parse(match[1] + '.' + (match[2] || '0') + '.' + (match[3] || '0'));\n}","var timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar includes = require('lodash.includes');\nvar isBoolean = require('lodash.isboolean');\nvar isInteger = require('lodash.isinteger');\nvar isNumber = require('lodash.isnumber');\nvar isPlainObject = require('lodash.isplainobject');\nvar isString = require('lodash.isstring');\nvar once = require('lodash.once');\nvar SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\nvar sign_options_schema = {\n expiresIn: {\n isValid: function (value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"expiresIn\" should be a number of seconds or string representing a timespan'\n },\n notBefore: {\n isValid: function (value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"notBefore\" should be a number of seconds or string representing a timespan'\n },\n audience: {\n isValid: function (value) {\n return isString(value) || Array.isArray(value);\n },\n message: '\"audience\" must be a string or array'\n },\n algorithm: {\n isValid: includes.bind(null, SUPPORTED_ALGS),\n message: '\"algorithm\" must be a valid string enum value'\n },\n header: {\n isValid: isPlainObject,\n message: '\"header\" must be an object'\n },\n encoding: {\n isValid: isString,\n message: '\"encoding\" must be a string'\n },\n issuer: {\n isValid: isString,\n message: '\"issuer\" must be a string'\n },\n subject: {\n isValid: isString,\n message: '\"subject\" must be a string'\n },\n jwtid: {\n isValid: isString,\n message: '\"jwtid\" must be a string'\n },\n noTimestamp: {\n isValid: isBoolean,\n message: '\"noTimestamp\" must be a boolean'\n },\n keyid: {\n isValid: isString,\n message: '\"keyid\" must be a string'\n },\n mutatePayload: {\n isValid: isBoolean,\n message: '\"mutatePayload\" must be a boolean'\n }\n};\nvar registered_claims_schema = {\n iat: {\n isValid: isNumber,\n message: '\"iat\" should be a number of seconds'\n },\n exp: {\n isValid: isNumber,\n message: '\"exp\" should be a number of seconds'\n },\n nbf: {\n isValid: isNumber,\n message: '\"nbf\" should be a number of seconds'\n }\n};\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object).forEach(function (key) {\n var validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\nvar options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\nvar options_for_objects = ['expiresIn', 'notBefore', 'noTimestamp', 'audience', 'issuer', 'subject', 'jwtid'];\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n var isObjectPayload = typeof payload === 'object' && !Buffer.isBuffer(payload);\n var header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n } catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({}, payload);\n }\n } else {\n var invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + typeof payload + ' payload'));\n }\n }\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n try {\n validateOptions(options);\n } catch (error) {\n return failure(error);\n }\n var timestamp = payload.iat || Math.floor(Date.now() / 1000);\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n } catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n } catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n Object.keys(options_to_payload).forEach(function (key) {\n var claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n var encoding = options.encoding || 'utf8';\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback).once('done', function (signature) {\n callback(null, signature);\n });\n } else {\n return jws.sign({\n header: header,\n payload: payload,\n secret: secretOrPrivateKey,\n encoding: encoding\n });\n }\n};","var JsonWebTokenError = require('./lib/JsonWebTokenError');\nvar NotBeforeError = require('./lib/NotBeforeError');\nvar TokenExpiredError = require('./lib/TokenExpiredError');\nvar decode = require('./decode');\nvar timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'];\nvar RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nvar HS_ALGS = ['HS256', 'HS384', 'HS512'];\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n var done;\n if (callback) {\n done = callback;\n } else {\n done = function (err, data) {\n if (err) throw err;\n return data;\n };\n }\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n var clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n if (!jwtString) {\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n var parts = jwtString.split('.');\n if (parts.length !== 3) {\n return done(new JsonWebTokenError('jwt malformed'));\n }\n var decodedToken;\n try {\n decodedToken = decode(jwtString, {\n complete: true\n });\n } catch (err) {\n return done(err);\n }\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n var header = decodedToken.header;\n var getSecret;\n if (typeof secretOrPublicKey === 'function') {\n if (!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n getSecret = secretOrPublicKey;\n } else {\n getSecret = function (header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n return getSecret(header, function (err, secretOrPublicKey) {\n if (err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n var hasSignature = parts[2].trim() !== '';\n if (!hasSignature && secretOrPublicKey) {\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n if (!hasSignature && !options.algorithms) {\n options.algorithms = ['none'];\n }\n if (!options.algorithms) {\n options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') || ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? PUB_KEY_ALGS : ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? RSA_KEY_ALGS : HS_ALGS;\n }\n if (!~options.algorithms.indexOf(decodedToken.header.alg)) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n var valid;\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n var payload = decodedToken.payload;\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n if (options.audience) {\n var audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n var target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n var match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n if (options.issuer) {\n var invalid_issuer = typeof options.issuer === 'string' && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1;\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n var maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n if (options.complete === true) {\n var signature = decodedToken.signature;\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n return done(null, payload);\n });\n};","/* global window */\nimport ponyfill from './ponyfill.js';\nvar root;\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\nvar result = ponyfill(root);\nexport default result;","export default function symbolObservablePonyfill(root) {\n var result;\n var Symbol = root.Symbol;\n if (typeof Symbol === 'function') {\n if (Symbol.observable) {\n result = Symbol.observable;\n } else {\n result = Symbol('observable');\n Symbol.observable = result;\n }\n } else {\n result = '@@observable';\n }\n return result;\n}\n;","var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".';\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return;\n }\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n}\n;\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return;\n }\n if (typeof key === 'object') {\n return;\n }\n throw typeError(MSG_INVALID_SIGNER_KEY);\n}\n;\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return key;\n }\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\nfunction fromBase64(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n return base64url.replace(/\\-/g, '+').replace(/_/g, '/');\n}\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing)) thing = JSON.stringify(thing);\n return thing;\n}\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'));\n return fromBase64(sig);\n };\n}\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n };\n}\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n };\n}\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n };\n}\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n };\n}\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n };\n}\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\nfunction createNoneSigner() {\n return function sign() {\n return '';\n };\n}\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n };\n}\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner\n };\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier\n };\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match) throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits)\n };\n};","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\nvar ALGORITHMS = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n throw new TypeError('Unexpected data type (' + typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\nDataStream.prototype.end = function end(data) {\n if (data) this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\nmodule.exports = DataStream;","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nfunction base64url(string, encoding) {\n return Buffer.from(string, encoding).toString('base64').replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\nfunction SignStream(opts) {\n var secret = opts.secret || opts.privateKey || opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable) this.sign();\n }.bind(this));\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable) this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\nSignStream.sign = jwsSign;\nmodule.exports = SignStream;","/*global module*/\nvar Buffer = require('buffer').Buffer;\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj)) return obj.toString();\n return JSON.stringify(obj);\n};","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\nfunction safeJsonParse(thing) {\n if (isObject(thing)) return thing;\n try {\n return JSON.parse(thing);\n } catch (e) {\n return undefined;\n }\n}\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n if (!isValidJws(jwsSig)) return null;\n var header = headerFromJWS(jwsSig);\n if (!header) return null;\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json) payload = JSON.parse(payload, opts.encoding);\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret || opts.publicKey || opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable) this.verify();\n }.bind(this));\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable) this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\nmodule.exports = VerifyStream;","'use strict';\n\nvar stub = require('./stub');\nvar parse = require('./parse');\nvar tracking = require('./tracking');\nvar ls = 'localStorage' in global && global.localStorage ? global.localStorage : stub;\nfunction accessor(key, value) {\n if (arguments.length === 1) {\n return get(key);\n }\n return set(key, value);\n}\nfunction get(key) {\n const raw = ls.getItem(key);\n const parsed = parse(raw);\n return parsed;\n}\nfunction set(key, value) {\n try {\n ls.setItem(key, JSON.stringify(value));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction remove(key) {\n return ls.removeItem(key);\n}\nfunction clear() {\n return ls.clear();\n}\nfunction backend(store) {\n store && (ls = store);\n return ls;\n}\naccessor.set = set;\naccessor.get = get;\naccessor.remove = remove;\naccessor.clear = clear;\naccessor.backend = backend;\naccessor.on = tracking.on;\naccessor.off = tracking.off;\nmodule.exports = accessor;","'use strict';\n\nfunction parse(rawValue) {\n const parsed = parseValue(rawValue);\n if (parsed === undefined) {\n return null;\n }\n return parsed;\n}\nfunction parseValue(rawValue) {\n try {\n return JSON.parse(rawValue);\n } catch (err) {\n return rawValue;\n }\n}\nmodule.exports = parse;","'use strict';\n\nvar ms = {};\nfunction getItem(key) {\n return key in ms ? ms[key] : null;\n}\nfunction setItem(key, value) {\n ms[key] = value;\n return true;\n}\nfunction removeItem(key) {\n var found = (key in ms);\n if (found) {\n return delete ms[key];\n }\n return false;\n}\nfunction clear() {\n ms = {};\n return true;\n}\nmodule.exports = {\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear\n};","'use strict';\n\nvar parse = require('./parse');\nvar listeners = {};\nvar listening = false;\nfunction listen() {\n if (global.addEventListener) {\n global.addEventListener('storage', change, false);\n } else if (global.attachEvent) {\n global.attachEvent('onstorage', change);\n } else {\n global.onstorage = change;\n }\n}\nfunction change(e) {\n if (!e) {\n e = global.event;\n }\n var all = listeners[e.key];\n if (all) {\n all.forEach(fire);\n }\n function fire(listener) {\n listener(parse(e.newValue), parse(e.oldValue), e.url || e.uri);\n }\n}\nfunction on(key, fn) {\n if (listeners[key]) {\n listeners[key].push(fn);\n } else {\n listeners[key] = [fn];\n }\n if (listening === false) {\n listen();\n }\n}\nfunction off(key, fn) {\n var ns = listeners[key];\n if (ns.length > 1) {\n ns.splice(ns.indexOf(fn), 1);\n } else {\n listeners[key] = [];\n }\n}\nmodule.exports = {\n on: on,\n off: off\n};","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\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 objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function () {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * 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 && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = debounce;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\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 objectToString = objectProto.toString;\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 nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\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 // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n var length = result.length,\n skipIndexes = !!length;\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\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\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 length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\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 return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\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\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\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\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\nmodule.exports = includes;","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @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 && typeof value == 'object';\n}\nmodule.exports = isBoolean;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\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 objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = isInteger;","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @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 && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && objectToString.call(value) == numberTag;\n}\nmodule.exports = isNumber;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\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 infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\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 objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\nmodule.exports = isPlainObject;","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, 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\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 * @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 && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\nmodule.exports = isString;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\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 objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function () {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = once;","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');\nmodule.exports = DataView;","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 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;\nmodule.exports = Hash;","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 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;\nmodule.exports = ListCache;","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');\nmodule.exports = Map;","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 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;\nmodule.exports = MapCache;","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');\nmodule.exports = Promise;","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');\nmodule.exports = Set;","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 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;\nmodule.exports = SetCache;","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;\nmodule.exports = Stack;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\nmodule.exports = Symbol;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\nmodule.exports = Uint8Array;","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');\nmodule.exports = WeakMap;","/**\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 while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\nmodule.exports = arrayFilter;","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 for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(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 result.push(key);\n }\n }\n return result;\n}\nmodule.exports = arrayLikeKeys;","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\nmodule.exports = arrayMap;","/**\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 while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\nmodule.exports = arrayPush;","/**\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 while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\nmodule.exports = arraySome;","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}\nmodule.exports = assocIndexOf;","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\nmodule.exports = baseEach;","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\nmodule.exports = baseFor;","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\nmodule.exports = baseForOwn;","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n}\nmodule.exports = baseGet;","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}\nmodule.exports = baseGetAllKeys;","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) ? getRawTag(value) : objectToString(value);\n}\nmodule.exports = baseGetTag;","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\nmodule.exports = baseHasIn;","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}\nmodule.exports = baseIsArguments;","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}\nmodule.exports = baseIsEqual;","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 objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\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) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : 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 if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\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}\nmodule.exports = baseIsEqualDeep;","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n}\nmodule.exports = baseIsMatch;","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('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\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}\nmodule.exports = baseIsNative;","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]';\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] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[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) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\nmodule.exports = baseIsTypedArray;","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n}\nmodule.exports = baseIteratee;","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}\nmodule.exports = baseKeys;","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\nmodule.exports = baseMap;","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\nmodule.exports = baseMatches;","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\nmodule.exports = baseMatchesProperty;","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function (iteratee) {\n if (isArray(iteratee)) {\n return function (value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n };\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n}\nmodule.exports = baseOrderBy;","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\nmodule.exports = baseProperty;","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\nmodule.exports = basePropertyDeep;","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\nmodule.exports = baseSortBy;","/**\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 while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\nmodule.exports = baseTimes;","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\nmodule.exports = baseToString;","/**\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}\nmodule.exports = baseUnary;","/**\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}\nmodule.exports = cacheHas;","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\nmodule.exports = castPath;","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\nmodule.exports = compareAscending;","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\nmodule.exports = compareMultiple;","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\nmodule.exports = coreJsData;","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\nmodule.exports = createBaseEach;","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\nmodule.exports = createBaseFor;","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 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 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 if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : 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) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\nmodule.exports = equalArrays;","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]';\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 || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\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 case errorTag:\n return object.name == other.name && object.message == other.message;\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 case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\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 case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\nmodule.exports = equalByTag;","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 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 var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\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 && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\nmodule.exports = equalObjects;","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;","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}\nmodule.exports = getAllKeys;","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) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\nmodule.exports = getMapData;","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\nmodule.exports = getMatchData;","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}\nmodule.exports = getNative;","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 try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\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}\nmodule.exports = getRawTag;","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};\nmodule.exports = getSymbols;","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]';\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 || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || 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 if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n}\nmodule.exports = getTag;","/**\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}\nmodule.exports = getValue;","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\nmodule.exports = hasPath;","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}\nmodule.exports = hashClear;","/**\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}\nmodule.exports = hashDelete;","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}\nmodule.exports = hashGet;","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}\nmodule.exports = hashHas;","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}\nmodule.exports = hashSet;","/** 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 return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\nmodule.exports = isIndex;","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\nmodule.exports = isKey;","/**\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' ? value !== '__proto__' : value === null;\n}\nmodule.exports = isKeyable;","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}\nmodule.exports = isMasked;","/** 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 return value === proto;\n}\nmodule.exports = isPrototype;","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\nmodule.exports = isStrictComparable;","/**\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}\nmodule.exports = listCacheClear;","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 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}\nmodule.exports = listCacheDelete;","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 return index < 0 ? undefined : data[index][1];\n}\nmodule.exports = listCacheGet;","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}\nmodule.exports = listCacheHas;","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 if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\nmodule.exports = listCacheSet;","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}\nmodule.exports = mapCacheClear;","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}\nmodule.exports = mapCacheDelete;","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}\nmodule.exports = mapCacheGet;","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}\nmodule.exports = mapCacheHas;","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 data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\nmodule.exports = mapCacheSet;","/**\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 map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\nmodule.exports = mapToArray;","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\nmodule.exports = matchesStrictComparable;","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n}\nmodule.exports = memoizeCapped;","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\nmodule.exports = nativeCreate;","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);\nmodule.exports = nativeKeys;","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 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}();\nmodule.exports = nodeUtil;","/** 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}\nmodule.exports = objectToString;","/**\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}\nmodule.exports = overArg;","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')();\nmodule.exports = root;","/** 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}\nmodule.exports = setCacheAdd;","/**\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}\nmodule.exports = setCacheHas;","/**\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 set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\nmodule.exports = setToArray;","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}\nmodule.exports = stackClear;","/**\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 this.size = data.size;\n return result;\n}\nmodule.exports = stackDelete;","/**\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}\nmodule.exports = stackGet;","/**\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}\nmodule.exports = stackHas;","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}\nmodule.exports = stackSet;","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\nmodule.exports = stringToPath;","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\nmodule.exports = toKey;","/** 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}\nmodule.exports = toSource;","/**\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}\nmodule.exports = eq;","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\nmodule.exports = get;","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\nmodule.exports = hasIn;","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\nmodule.exports = identity;","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 () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;","/**\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;\nmodule.exports = isArray;","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}\nmodule.exports = isArrayLike;","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;\nmodule.exports = isBuffer;","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}\nmodule.exports = isFunction;","/** 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' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nmodule.exports = isLength;","/**\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}\nmodule.exports = isObject;","/**\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}\nmodule.exports = isObjectLike;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\nmodule.exports = isSymbol;","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;\nmodule.exports = isTypedArray;","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}\nmodule.exports = keys;","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;\n(function () {\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [['ary', WRAP_ARY_FLAG], ['bind', WRAP_BIND_FLAG], ['bindKey', WRAP_BIND_KEY_FLAG], ['curry', WRAP_CURRY_FLAG], ['curryRight', WRAP_CURRY_RIGHT_FLAG], ['flip', WRAP_FLIP_FLAG], ['partial', WRAP_PARTIAL_FLAG], ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], ['rearg', WRAP_REARG_FLAG]];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, rsUpper + '+' + rsOptContrUpper, rsOrdUpper, rsOrdLower, rsDigits, rsEmoji].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = ['Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u0104': 'A',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u0105': 'a',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010a': 'C',\n '\\u010c': 'C',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010b': 'c',\n '\\u010d': 'c',\n '\\u010e': 'D',\n '\\u0110': 'D',\n '\\u010f': 'd',\n '\\u0111': 'd',\n '\\u0112': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u0118': 'E',\n '\\u011a': 'E',\n '\\u0113': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u0119': 'e',\n '\\u011b': 'e',\n '\\u011c': 'G',\n '\\u011e': 'G',\n '\\u0120': 'G',\n '\\u0122': 'G',\n '\\u011d': 'g',\n '\\u011f': 'g',\n '\\u0121': 'g',\n '\\u0123': 'g',\n '\\u0124': 'H',\n '\\u0126': 'H',\n '\\u0125': 'h',\n '\\u0127': 'h',\n '\\u0128': 'I',\n '\\u012a': 'I',\n '\\u012c': 'I',\n '\\u012e': 'I',\n '\\u0130': 'I',\n '\\u0129': 'i',\n '\\u012b': 'i',\n '\\u012d': 'i',\n '\\u012f': 'i',\n '\\u0131': 'i',\n '\\u0134': 'J',\n '\\u0135': 'j',\n '\\u0136': 'K',\n '\\u0137': 'k',\n '\\u0138': 'k',\n '\\u0139': 'L',\n '\\u013b': 'L',\n '\\u013d': 'L',\n '\\u013f': 'L',\n '\\u0141': 'L',\n '\\u013a': 'l',\n '\\u013c': 'l',\n '\\u013e': 'l',\n '\\u0140': 'l',\n '\\u0142': 'l',\n '\\u0143': 'N',\n '\\u0145': 'N',\n '\\u0147': 'N',\n '\\u014a': 'N',\n '\\u0144': 'n',\n '\\u0146': 'n',\n '\\u0148': 'n',\n '\\u014b': 'n',\n '\\u014c': 'O',\n '\\u014e': 'O',\n '\\u0150': 'O',\n '\\u014d': 'o',\n '\\u014f': 'o',\n '\\u0151': 'o',\n '\\u0154': 'R',\n '\\u0156': 'R',\n '\\u0158': 'R',\n '\\u0155': 'r',\n '\\u0157': 'r',\n '\\u0159': 'r',\n '\\u015a': 'S',\n '\\u015c': 'S',\n '\\u015e': 'S',\n '\\u0160': 'S',\n '\\u015b': 's',\n '\\u015d': 's',\n '\\u015f': 's',\n '\\u0161': 's',\n '\\u0162': 'T',\n '\\u0164': 'T',\n '\\u0166': 'T',\n '\\u0163': 't',\n '\\u0165': 't',\n '\\u0167': 't',\n '\\u0168': 'U',\n '\\u016a': 'U',\n '\\u016c': 'U',\n '\\u016e': 'U',\n '\\u0170': 'U',\n '\\u0172': 'U',\n '\\u0169': 'u',\n '\\u016b': 'u',\n '\\u016d': 'u',\n '\\u016f': 'u',\n '\\u0171': 'u',\n '\\u0173': 'u',\n '\\u0174': 'W',\n '\\u0175': 'w',\n '\\u0176': 'Y',\n '\\u0177': 'y',\n '\\u0178': 'Y',\n '\\u0179': 'Z',\n '\\u017b': 'Z',\n '\\u017d': 'Z',\n '\\u017a': 'z',\n '\\u017c': 'z',\n '\\u017e': 'z',\n '\\u0132': 'IJ',\n '\\u0133': 'ij',\n '\\u0152': 'Oe',\n '\\u0153': 'oe',\n '\\u0149': \"'n\",\n '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }();\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n case 1:\n return func.call(thisArg, args[0]);\n case 2:\n return func.call(thisArg, args[0], args[1]);\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function (value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? baseSum(array, iteratee) / length : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function (key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function (value, index, collection) {\n accumulator = initAccum ? (initAccum = false, value) : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : result + current;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function (key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function (value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n }();\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n var defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }();\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap();\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = function () {\n function object() {}\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n }();\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : start - 1,\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n if (!isArr || !isRight && arrLength == length && takeCount == length) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n outer: while (length-- && resIndex < takeCount) {\n index += dir;\n var iterIndex = -1,\n value = array[index];\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(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 result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function (value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n 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 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 ? copySymbolsIn(value, baseAssignIn(result, value)) : 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 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 var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function (subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function (object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n if (value === undefined && !(key in object) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function () {\n func.apply(undefined, args);\n }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n } else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n value = comparator || value !== 0 ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n } else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function (value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n if (current != null && (computed === undefined ? current === current && !isSymbol(current) : comparator(current, computed))) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end === undefined || end > length ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function (value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n predicate || (predicate = isFlattenable);\n result || (result = []);\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function (key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return index && index == length ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || length >= 120 && array.length >= 120) ? new SetCache(othIndex && array) : undefined;\n }\n array = arrays[0];\n var index = -1,\n seen = caches[0];\n outer: while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n if (!(seen ? cacheHas(seen, computed) : includes(result, computed, comparator))) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache ? cacheHas(cache, computed) : includes(arrays[othIndex], computed, comparator))) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function (value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\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) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : 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 if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + '', object, source, stack) : undefined;\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer ? customizer(objValue, srcValue, key + '', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function (iteratee) {\n if (isArray(iteratee)) {\n return function (value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n };\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n var result = baseMap(collection, function (value, key, collection) {\n var criteria = arrayMap(iteratees, function (iteratee) {\n return iteratee(value);\n });\n return {\n 'criteria': criteria,\n 'index': ++index,\n 'value': value\n };\n });\n return baseSortBy(result, function (object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function (value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function (func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n baseEach(collection, function (value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = low + high >>> 1,\n computed = array[mid];\n if (computed !== null && !isSymbol(computed) && (retHighest ? computed <= value : computed < value)) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? computed <= value : computed < value;\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n } else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache();\n } else {\n seen = iteratee ? [] : result;\n }\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n } else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n while ((fromRight ? index-- : ++index < length) && predicate(array[index], index, array)) {}\n return isDrop ? baseSlice(array, fromRight ? 0 : index, fromRight ? index + 1 : length) : baseSlice(array, fromRight ? index + 1 : 0, fromRight ? length : index);\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function (result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return !start && end >= length ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function (id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n if (!othIsNull && !othIsSymbol && !valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol || valIsNull && othIsDefined && othIsReflexive || !valIsDefined && othIsReflexive || !valIsReflexive) {\n return 1;\n }\n if (!valIsNull && !valIsSymbol && !othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol || othIsNull && valIsDefined && valIsReflexive || !othIsDefined && valIsReflexive || !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function (collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == 'function' ? (length--, customizer) : undefined;\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function (collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n while (fromRight ? index-- : ++index < length) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n function wrapper() {\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function (string) {\n string = toString(string);\n var strSymbols = hasUnicode(string) ? stringToArray(string) : undefined;\n var chr = strSymbols ? strSymbols[0] : string.charAt(0);\n var trailing = strSymbols ? castSlice(strSymbols, 1).join('') : string.slice(1);\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function (string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function () {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0:\n return new Ctor();\n case 1:\n return new Ctor(args[0]);\n case 2:\n return new Ctor(args[0], args[1]);\n case 3:\n return new Ctor(args[0], args[1], args[2]);\n case 4:\n return new Ctor(args[0], args[1], args[2], args[3]);\n case 5:\n return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7:\n return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder ? [] : replaceHolders(args, placeholder);\n length -= holders.length;\n if (length < arity) {\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, undefined, args, holders, undefined, undefined, arity - length);\n }\n var fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function (key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function (funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n if (data && isLaziable(data[0]) && data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && !data[4].length && data[9] == 1) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = func.length == 1 && isLaziable(func) ? wrapper[funcName]() : wrapper.thru(func);\n }\n }\n return function () {\n var args = arguments,\n value = args[0];\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(func, bitmask, createHybrid, wrapper.placeholder, thisArg, args, newHolders, argPos, ary, arity - length);\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function (object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function (value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function (iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function (args) {\n var thisArg = this;\n return arrayFunc(iteratees, function (iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars) ? castSlice(stringToArray(result), 0, length).join('') : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = this && this !== root && this instanceof wrapper ? Ctor : func;\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function (start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? start < end ? 1 : -1 : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function (value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n bitmask |= isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG;\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, newHoldersRight, argPos, ary, arity];\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function (number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function (object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n var newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity];\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined ? isBindKey ? 0 : func.length : nativeMax(newData[9] - length, 0);\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined || eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n 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 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 if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : 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) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\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 case errorTag:\n return object.name == other.name && object.message == other.message;\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 case mapTag:\n var convert = mapToArray;\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\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 case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n 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 var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\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 && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function (func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = func.name + '',\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || 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 if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n case mapCtorString:\n return mapTag;\n case promiseCtorString:\n return promiseTag;\n case setCtorString:\n return setTag;\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n switch (data.type) {\n case 'drop':\n start += size;\n break;\n case 'dropRight':\n end -= size;\n break;\n case 'take':\n end = nativeMin(end, start + size);\n break;\n case 'takeRight':\n start = nativeMax(start, end - size);\n break;\n }\n }\n return {\n 'start': start,\n 'end': end\n };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return typeof object.constructor == 'function' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n case dataViewTag:\n return cloneDataView(object, isDeep);\n case float32Tag:\n case float64Tag:\n case int8Tag:\n case int16Tag:\n case int32Tag:\n case uint8Tag:\n case uint8ClampedTag:\n case uint16Tag:\n case uint32Tag:\n return cloneTypedArray(object, isDeep);\n case mapTag:\n return new Ctor();\n case numberTag:\n case stringTag:\n return new Ctor(object);\n case regexpTag:\n return cloneRegExp(object);\n case setTag:\n return new Ctor();\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == 'number' || type != 'symbol' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number' ? isArrayLike(object) && isIndex(index, object.length) : type == 'string' && index in object) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG;\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n if (key == '__proto__') {\n return;\n }\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function (func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = reference + '';\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function (string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return func + '';\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function (pair) {\n var value = '_.' + pair[0];\n if (bitmask & pair[1] && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if (guard ? isIterateeCall(array, size, guard) : size === undefined) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, index += size);\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function (array, values) {\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function (array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function (array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array) ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = guard || n === undefined ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = guard || n === undefined ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return array && array.length ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function (arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped) : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function (arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, getIteratee(iteratee, 2)) : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function (arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined, comparator) : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value ? strictLastIndexOf(array, value, index) : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return array && array.length ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return array && array.length && values && values.length ? basePullAll(array, values) : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return array && array.length && values && values.length ? basePullAll(array, values, getIteratee(iteratee, 2)) : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return array && array.length && values && values.length ? basePullAll(array, values, undefined, comparator) : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function (array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n basePullAt(array, arrayMap(indexes, function (index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n } else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return array && array.length ? baseSortedUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return array && array.length ? baseSortedUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = guard || n === undefined ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = guard || n === undefined ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3), false, true) : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return array && array.length ? baseWhile(array, getIteratee(predicate, 3)) : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function (arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function (arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function (arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return array && array.length ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return array && array.length ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return array && array.length ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function (group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function (index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function (group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function (array, values) {\n return isArrayLikeObject(array) ? baseDifference(array, values) : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function (arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function (arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function (arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function (arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function (paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function (object) {\n return baseAt(object, paths);\n };\n if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function (array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n return {\n 'done': done,\n 'value': value\n };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function (result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function (result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function (collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n baseEach(collection, function (value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function (result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function (result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function () {\n return [[], []];\n });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if (guard ? isIterateeCall(collection, n, guard) : n === undefined) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function (collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function () {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function () {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = func && n == null ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function () {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function (func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function (object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function (func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function (func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function () {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function () {\n var args = arguments;\n switch (args.length) {\n case 0:\n return !predicate.call(this);\n case 1:\n return !predicate.call(this, args[0]);\n case 2:\n return !predicate.call(this, args[0], args[1]);\n case 3:\n return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function (func, transforms) {\n transforms = transforms.length == 1 && isArray(transforms[0]) ? arrayMap(transforms[0], baseUnary(getIteratee())) : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n var funcsLength = transforms.length;\n return baseRest(function (args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function (func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function (func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function (func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function (args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || value !== value && other !== other;\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function (value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function () {\n return arguments;\n }()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && baseGetTag(value) == boolTag;\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) && (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag || typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && baseGetTag(value) == numberTag;\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function (value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values;\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) : value === 0 ? value : 0;\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function (object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function (object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function (object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function (object, sources) {\n object = Object(object);\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n if (value === undefined || eq(value, objectProto[key]) && !hasOwnProperty.call(object, key)) {\n object[key] = source[key];\n }\n }\n }\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function (args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null ? object : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null ? object : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function (result, value, key) {\n if (value != null && typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n baseForOwn(object, function (value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function (object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function (path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function (object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function (prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function (value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor() : [];\n } else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n } else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function (value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n } else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n } else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function (result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n var length = string.length;\n position = position === undefined ? length : baseClamp(toInteger(position), 0, length);\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return string && reHasUnescapedHtml.test(string) ? string.replace(reUnescapedHtml, escapeHtmlChar) : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return string && reHasRegExpChar.test(string) ? string.replace(reRegExpChar, '\\\\$&') : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function (result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return createPadding(nativeFloor(mid), chars) + string + createPadding(nativeCeil(mid), chars);\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? string + createPadding(length - strLength, chars) : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n var strLength = length ? stringSize(string) : 0;\n return length && strLength < length ? createPadding(length - strLength, chars) + string : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if (guard ? isIterateeCall(string, n, guard) : n === undefined) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function (result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (typeof separator == 'string' || separator != null && !isRegExp(separator))) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null ? 0 : baseClamp(toInteger(position), 0, string.length);\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp((options.escape || reNoMatch).source + '|' + interpolate.source + '|' + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + (options.evaluate || reNoMatch).source + '|$', 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' + (hasOwnProperty.call(options, 'sourceURL') ? (options.sourceURL + '').replace(/\\s/g, ' ') : 'lodash.templateSources[' + ++templateCounter + ']') + '\\n';\n string.replace(reDelimiters, function (match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source).replace(reEmptyStringMiddle, '$1').replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' + (variable ? '' : 'obj || (obj = {});\\n') + \"var __t, __p = ''\" + (isEscaping ? ', __e = _.escape' : '') + (isEvaluating ? ', __j = Array.prototype.join;\\n' + \"function print() { __p += __j.call(arguments, '') }\\n\" : ';\\n') + source + 'return __p\\n}';\n var result = attempt(function () {\n return Function(importsKeys, sourceURL + 'return ' + source).apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols ? castSlice(strSymbols, 0, end).join('') : string.slice(0, end);\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += result.length - end;\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while (match = separator.exec(substring)) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return string && reHasEscapedHtml.test(string) ? string.replace(reEscapedHtml, unescapeHtmlChar) : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function (result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function (func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function (object, methodNames) {\n arrayEach(methodNames, function (key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n pairs = !length ? [] : arrayMap(pairs, function (pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n return baseRest(function (args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function () {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return value == null || value !== value ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function (path, args) {\n return function (object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function (object, args) {\n return function (path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n if (options == null && !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n arrayEach(methodNames, function (methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function () {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n actions.push({\n 'func': func,\n 'args': arguments,\n 'thisArg': object\n });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function (args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function (path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function (augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function (dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return array && array.length ? baseExtremum(array, identity, baseGt) : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return array && array.length ? baseExtremum(array, getIteratee(iteratee, 2), baseGt) : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return array && array.length ? baseExtremum(array, identity, baseLt) : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return array && array.length ? baseExtremum(array, getIteratee(iteratee, 2), baseLt) : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function (multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function (minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return array && array.length ? baseSum(array, identity) : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return array && array.length ? baseSum(array, getIteratee(iteratee, 2)) : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n mixin(lodash, function () {\n var source = {};\n baseForOwn(lodash, function (func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }(), {\n 'chain': false\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function (methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function (methodName, index) {\n LazyWrapper.prototype[methodName] = function (n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n var result = this.__filtered__ && !index ? new LazyWrapper(this) : this.clone();\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n LazyWrapper.prototype[methodName + 'Right'] = function (n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function (methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n LazyWrapper.prototype[methodName] = function (iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function (methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n LazyWrapper.prototype[methodName] = function () {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function (methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n LazyWrapper.prototype[methodName] = function () {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n LazyWrapper.prototype.compact = function () {\n return this.filter(identity);\n };\n LazyWrapper.prototype.find = function (predicate) {\n return this.filter(predicate).head();\n };\n LazyWrapper.prototype.findLast = function (predicate) {\n return this.reverse().find(predicate);\n };\n LazyWrapper.prototype.invokeMap = baseRest(function (path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function (value) {\n return baseInvoke(value, path, args);\n });\n });\n LazyWrapper.prototype.reject = function (predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n LazyWrapper.prototype.slice = function (start, end) {\n start = toInteger(start);\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n LazyWrapper.prototype.takeRightWhile = function (predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n LazyWrapper.prototype.toArray = function () {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function (func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? 'take' + (methodName == 'last' ? 'Right' : '') : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function () {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n var interceptor = function (value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return isTaker && chainAll ? result[0] : result;\n };\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? isTaker ? result.value()[0] : result.value() : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function (methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n lodash.prototype[methodName] = function () {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function (value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function (func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({\n 'name': methodName,\n 'func': lodashFunc\n });\n }\n });\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n };\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function () {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n } else {\n // Export to the global object.\n root._ = _;\n }\n}).call(this);","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function () {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\nmodule.exports = memoize;","var baseOrderBy = require('./_baseOrderBy'),\n isArray = require('./isArray');\n\n/**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nfunction orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n}\nmodule.exports = orderBy;","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\nmodule.exports = property;","/**\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}\nmodule.exports = stubArray;","/**\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}\nmodule.exports = stubFalse;","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\nmodule.exports = toString;","'use strict';\n\nvar inherits = require('inherits');\nvar HashBase = require('hash-base');\nvar Buffer = require('safe-buffer').Buffer;\nvar ARRAY16 = new Array(16);\nfunction MD5() {\n HashBase.call(this, 64);\n\n // state\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n}\ninherits(MD5, HashBase);\nMD5.prototype._update = function () {\n var M = ARRAY16;\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4);\n var a = this._a;\n var b = this._b;\n var c = this._c;\n var d = this._d;\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7);\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12);\n c = fnF(c, d, a, b, M[2], 0x242070db, 17);\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22);\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7);\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12);\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17);\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22);\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7);\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12);\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17);\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22);\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7);\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12);\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17);\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22);\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5);\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9);\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14);\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20);\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5);\n d = fnG(d, a, b, c, M[10], 0x02441453, 9);\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14);\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20);\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5);\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9);\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14);\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20);\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5);\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9);\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14);\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20);\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4);\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11);\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16);\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23);\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4);\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11);\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16);\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23);\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4);\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11);\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16);\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23);\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4);\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11);\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16);\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23);\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6);\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10);\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15);\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21);\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6);\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10);\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15);\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21);\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6);\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10);\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15);\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21);\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6);\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10);\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15);\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21);\n this._a = this._a + a | 0;\n this._b = this._b + b | 0;\n this._c = this._c + c | 0;\n this._d = this._d + d | 0;\n};\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n this._update();\n this._blockOffset = 0;\n }\n this._block.fill(0, this._blockOffset, 56);\n this._block.writeUInt32LE(this._length[0], 56);\n this._block.writeUInt32LE(this._length[1], 60);\n this._update();\n\n // produce result\n var buffer = Buffer.allocUnsafe(16);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n return buffer;\n};\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\nfunction fnF(a, b, c, d, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0;\n}\nfunction fnG(a, b, c, d, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0;\n}\nfunction fnH(a, b, c, d, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;\n}\nfunction fnI(a, b, c, d, m, k, s) {\n return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;\n}\nmodule.exports = MD5;","'use strict';\n\nvar visit = require('unist-util-visit');\nmodule.exports = getDefinitionFactory;\nvar own = {}.hasOwnProperty;\n\n// Get a definition in `node` by `identifier`.\nfunction getDefinitionFactory(node, options) {\n return getterFactory(gather(node, options));\n}\n\n// Gather all definitions in `node`\nfunction gather(node) {\n var cache = {};\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node');\n }\n visit(node, 'definition', ondefinition);\n return cache;\n function ondefinition(definition) {\n var id = normalise(definition.identifier);\n if (!own.call(cache, id)) {\n cache[id] = definition;\n }\n }\n}\n\n// Factory to get a node from the given definition-cache.\nfunction getterFactory(cache) {\n return getter;\n\n // Get a node from the bound definition-cache.\n function getter(identifier) {\n var id = identifier && normalise(identifier);\n return id && own.call(cache, id) ? cache[id] : null;\n }\n}\nfunction normalise(identifier) {\n return identifier.toUpperCase();\n}","'use strict';\n\nmodule.exports = fromMarkdown;\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string');\nvar assign = require('micromark/dist/constant/assign');\nvar own = require('micromark/dist/constant/has-own-property');\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier');\nvar safeFromInt = require('micromark/dist/util/safe-from-int');\nvar parser = require('micromark/dist/parse');\nvar preprocessor = require('micromark/dist/preprocess');\nvar postprocess = require('micromark/dist/postprocess');\nvar decode = require('parse-entities/decode-entity');\nvar stringifyPosition = require('unist-util-stringify-position');\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding;\n encoding = undefined;\n }\n return compiler(options)(postprocess(parser(options).document().write(preprocessor()(value, encoding, true))));\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {};\n var config = configure({\n transforms: [],\n canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n }, settings.mdastExtensions || []);\n var data = {};\n return compile;\n function compile(events) {\n var tree = {\n type: 'root',\n children: []\n };\n var stack = [tree];\n var tokenStack = [];\n var listStack = [];\n var index = -1;\n var handler;\n var listStart;\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n };\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (events[index][1].type === 'listOrdered' || events[index][1].type === 'listUnordered') {\n if (events[index][0] === 'enter') {\n listStack.push(index);\n } else {\n listStart = listStack.pop(index);\n index = prepareList(events, listStart, index);\n }\n }\n }\n index = -1;\n while (++index < events.length) {\n handler = config[events[index][0]];\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(assign({\n sliceSerialize: events[index][2].sliceSerialize\n }, context), events[index][1]);\n }\n }\n if (tokenStack.length) {\n throw new Error('Cannot close document, a token (`' + tokenStack[tokenStack.length - 1].type + '`, ' + stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) + ') is still open');\n }\n\n // Figure out `root` position.\n tree.position = {\n start: point(events.length ? events[0][1].start : {\n line: 1,\n column: 1,\n offset: 0\n }),\n end: point(events.length ? events[events.length - 2][1].end : {\n line: 1,\n column: 1,\n offset: 0\n })\n };\n index = -1;\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree;\n }\n return tree;\n }\n function prepareList(events, start, length) {\n var index = start - 1;\n var containerBalance = -1;\n var listSpread = false;\n var listItem;\n var tailIndex;\n var lineIndex;\n var tailEvent;\n var event;\n var firstBlankLineIndex;\n var atMarker;\n while (++index <= length) {\n event = events[index];\n if (event[1].type === 'listUnordered' || event[1].type === 'listOrdered' || event[1].type === 'blockQuote') {\n if (event[0] === 'enter') {\n containerBalance++;\n } else {\n containerBalance--;\n }\n atMarker = undefined;\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n firstBlankLineIndex = index;\n }\n atMarker = undefined;\n }\n } else if (event[1].type === 'linePrefix' || event[1].type === 'listItemValue' || event[1].type === 'listItemMarker' || event[1].type === 'listItemPrefix' || event[1].type === 'listItemPrefixWhitespace') {\n // Empty.\n } else {\n atMarker = undefined;\n }\n if (!containerBalance && event[0] === 'enter' && event[1].type === 'listItemPrefix' || containerBalance === -1 && event[0] === 'exit' && (event[1].type === 'listUnordered' || event[1].type === 'listOrdered')) {\n if (listItem) {\n tailIndex = index;\n lineIndex = undefined;\n while (tailIndex--) {\n tailEvent = events[tailIndex];\n if (tailEvent[1].type === 'lineEnding' || tailEvent[1].type === 'lineEndingBlank') {\n if (tailEvent[0] === 'exit') continue;\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank';\n listSpread = true;\n }\n tailEvent[1].type = 'lineEnding';\n lineIndex = tailIndex;\n } else if (tailEvent[1].type === 'linePrefix' || tailEvent[1].type === 'blockQuotePrefix' || tailEvent[1].type === 'blockQuotePrefixWhitespace' || tailEvent[1].type === 'blockQuoteMarker' || tailEvent[1].type === 'listItemIndent') {\n // Empty\n } else {\n break;\n }\n }\n if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n listItem._spread = true;\n }\n\n // Fix position.\n listItem.end = point(lineIndex ? events[lineIndex][1].start : event[1].end);\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]]);\n index++;\n length++;\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: point(event[1].start)\n };\n events.splice(index, 0, ['enter', listItem, event[2]]);\n index++;\n length++;\n firstBlankLineIndex = undefined;\n atMarker = true;\n }\n }\n }\n events[start][1]._spread = listSpread;\n return length;\n }\n function setData(key, value) {\n data[key] = value;\n }\n function getData(key) {\n return data[key];\n }\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n };\n }\n function opener(create, and) {\n return open;\n function open(token) {\n enter.call(this, create(token), token);\n if (and) and.call(this, token);\n }\n }\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n });\n }\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node);\n this.stack.push(node);\n this.tokenStack.push(token);\n node.position = {\n start: point(token.start)\n };\n return node;\n }\n function closer(and) {\n return close;\n function close(token) {\n if (and) and.call(this, token);\n exit.call(this, token);\n }\n }\n function exit(token) {\n var node = this.stack.pop();\n var open = this.tokenStack.pop();\n if (!open) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): it’s not open');\n } else if (open.type !== token.type) {\n throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n start: token.start,\n end: token.end\n }) + '): a different token (`' + open.type + '`, ' + stringifyPosition({\n start: open.start,\n end: open.end\n }) + ') is open');\n }\n node.position.end = point(token.end);\n return node;\n }\n function resume() {\n return toString(this.stack.pop());\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true);\n }\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(this.sliceSerialize(token), 10);\n setData('expectingFirstListItemValue');\n }\n }\n function onexitcodefencedfenceinfo() {\n var data = this.resume();\n this.stack[this.stack.length - 1].lang = data;\n }\n function onexitcodefencedfencemeta() {\n var data = this.resume();\n this.stack[this.stack.length - 1].meta = data;\n }\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return;\n this.buffer();\n setData('flowCodeInside', true);\n }\n function onexitcodefenced() {\n var data = this.resume();\n this.stack[this.stack.length - 1].value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n setData('flowCodeInside');\n }\n function onexitcodeindented() {\n var data = this.resume();\n this.stack[this.stack.length - 1].value = data;\n }\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume();\n this.stack[this.stack.length - 1].label = label;\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n function onexitdefinitiontitlestring() {\n var data = this.resume();\n this.stack[this.stack.length - 1].title = data;\n }\n function onexitdefinitiondestinationstring() {\n var data = this.resume();\n this.stack[this.stack.length - 1].url = data;\n }\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(token).length;\n }\n }\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true);\n }\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2;\n }\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding');\n }\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children;\n var tail = siblings[siblings.length - 1];\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text();\n tail.position = {\n start: point(token.start)\n };\n this.stack[this.stack.length - 1].children.push(tail);\n }\n this.stack.push(tail);\n }\n function onexitdata(token) {\n var tail = this.stack.pop();\n tail.value += this.sliceSerialize(token);\n tail.position.end = point(token.end);\n }\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1];\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(token.end);\n setData('atHardBreak');\n return;\n }\n if (!getData('setextHeadingSlurpLineEnding') && config.canContainEols.indexOf(context.type) > -1) {\n onenterdata.call(this, token);\n onexitdata.call(this, token);\n }\n }\n function onexithardbreak() {\n setData('atHardBreak', true);\n }\n function onexithtmlflow() {\n var data = this.resume();\n this.stack[this.stack.length - 1].value = data;\n }\n function onexithtmltext() {\n var data = this.resume();\n this.stack[this.stack.length - 1].value = data;\n }\n function onexitcodetext() {\n var data = this.resume();\n this.stack[this.stack.length - 1].value = data;\n }\n function onexitlink() {\n var context = this.stack[this.stack.length - 1];\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference';\n context.referenceType = getData('referenceType') || 'shortcut';\n delete context.url;\n delete context.title;\n } else {\n delete context.identifier;\n delete context.label;\n delete context.referenceType;\n }\n setData('referenceType');\n }\n function onexitimage() {\n var context = this.stack[this.stack.length - 1];\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference';\n context.referenceType = getData('referenceType') || 'shortcut';\n delete context.url;\n delete context.title;\n } else {\n delete context.identifier;\n delete context.label;\n delete context.referenceType;\n }\n setData('referenceType');\n }\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n }\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1];\n var value = this.resume();\n this.stack[this.stack.length - 1].label = value;\n\n // Assume a reference.\n setData('inReference', true);\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children;\n } else {\n this.stack[this.stack.length - 1].alt = value;\n }\n }\n function onexitresourcedestinationstring() {\n var data = this.resume();\n this.stack[this.stack.length - 1].url = data;\n }\n function onexitresourcetitlestring() {\n var data = this.resume();\n this.stack[this.stack.length - 1].title = data;\n }\n function onexitresource() {\n setData('inReference');\n }\n function onenterreference() {\n setData('referenceType', 'collapsed');\n }\n function onexitreferencestring(token) {\n var label = this.resume();\n this.stack[this.stack.length - 1].label = label;\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n setData('referenceType', 'full');\n }\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type);\n }\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token);\n var type = getData('characterReferenceType');\n var value;\n var tail;\n if (type) {\n value = safeFromInt(data, type === 'characterReferenceMarkerNumeric' ? 10 : 16);\n setData('characterReferenceType');\n } else {\n value = decode(data);\n }\n tail = this.stack.pop();\n tail.value += value;\n tail.position.end = point(token.end);\n }\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token);\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token);\n }\n function onexitautolinkemail(token) {\n onexitdata.call(this, token);\n this.stack[this.stack.length - 1].url = 'mailto:' + this.sliceSerialize(token);\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n };\n }\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n };\n }\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n };\n }\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n };\n }\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n };\n }\n function heading() {\n return {\n type: 'heading',\n depth: undefined,\n children: []\n };\n }\n function hardBreak() {\n return {\n type: 'break'\n };\n }\n function html() {\n return {\n type: 'html',\n value: ''\n };\n }\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n };\n }\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n };\n }\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n };\n }\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n };\n }\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n };\n }\n function strong() {\n return {\n type: 'strong',\n children: []\n };\n }\n function text() {\n return {\n type: 'text',\n value: ''\n };\n }\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n };\n }\n}\nfunction configure(config, extensions) {\n var index = -1;\n while (++index < extensions.length) {\n extension(config, extensions[index]);\n }\n return config;\n}\nfunction extension(config, extension) {\n var key;\n var left;\n for (key in extension) {\n left = own.call(config, key) ? config[key] : config[key] = {};\n if (key === 'canContainEols' || key === 'transforms') {\n config[key] = [].concat(left, extension[key]);\n } else {\n Object.assign(left, extension[key]);\n }\n }\n}","'use strict';\n\nmodule.exports = require('./dist');","'use strict';\n\nmodule.exports = require('./lib');","'use strict';\n\nmodule.exports = all;\nvar one = require('./one');\nfunction all(h, parent) {\n var nodes = parent.children || [];\n var length = nodes.length;\n var values = [];\n var index = -1;\n var result;\n var head;\n while (++index < length) {\n result = one(h, nodes[index], parent);\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (result.value) {\n result.value = result.value.replace(/^\\s+/, '');\n }\n head = result.children && result.children[0];\n if (head && head.value) {\n head.value = head.value.replace(/^\\s+/, '');\n }\n }\n values = values.concat(result);\n }\n }\n return values;\n}","'use strict';\n\nmodule.exports = generateFootnotes;\nvar thematicBreak = require('./handlers/thematic-break');\nvar list = require('./handlers/list');\nvar wrap = require('./wrap');\nfunction generateFootnotes(h) {\n var footnoteById = h.footnoteById;\n var footnoteOrder = h.footnoteOrder;\n var length = footnoteOrder.length;\n var index = -1;\n var listItems = [];\n var def;\n var backReference;\n var content;\n var tail;\n while (++index < length) {\n def = footnoteById[footnoteOrder[index].toUpperCase()];\n if (!def) {\n continue;\n }\n content = def.children.concat();\n tail = content[content.length - 1];\n backReference = {\n type: 'link',\n url: '#fnref-' + def.identifier,\n data: {\n hProperties: {\n className: ['footnote-backref']\n }\n },\n children: [{\n type: 'text',\n value: '↩'\n }]\n };\n if (!tail || tail.type !== 'paragraph') {\n tail = {\n type: 'paragraph',\n children: []\n };\n content.push(tail);\n }\n tail.children.push(backReference);\n listItems.push({\n type: 'listItem',\n data: {\n hProperties: {\n id: 'fn-' + def.identifier\n }\n },\n children: content,\n position: def.position\n });\n }\n if (listItems.length === 0) {\n return null;\n }\n return h(null, 'div', {\n className: ['footnotes']\n }, wrap([thematicBreak(h), list(h, {\n type: 'list',\n ordered: true,\n children: listItems\n })], true));\n}","'use strict';\n\nmodule.exports = blockquote;\nvar wrap = require('../wrap');\nvar all = require('../all');\nfunction blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true));\n}","'use strict';\n\nmodule.exports = hardBreak;\nvar u = require('unist-builder');\nfunction hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')];\n}","'use strict';\n\nmodule.exports = code;\nvar u = require('unist-builder');\nfunction code(h, node) {\n var value = node.value ? node.value + '\\n' : '';\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n var lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/);\n var props = {};\n var code;\n if (lang) {\n props.className = ['language-' + lang];\n }\n code = h(node, 'code', props, [u('text', value)]);\n if (node.meta) {\n code.data = {\n meta: node.meta\n };\n }\n return h(node.position, 'pre', [code]);\n}","'use strict';\n\nmodule.exports = strikethrough;\nvar all = require('../all');\nfunction strikethrough(h, node) {\n return h(node, 'del', all(h, node));\n}","'use strict';\n\nmodule.exports = emphasis;\nvar all = require('../all');\nfunction emphasis(h, node) {\n return h(node, 'em', all(h, node));\n}","'use strict';\n\nmodule.exports = footnoteReference;\nvar u = require('unist-builder');\nfunction footnoteReference(h, node) {\n var footnoteOrder = h.footnoteOrder;\n var identifier = String(node.identifier);\n if (footnoteOrder.indexOf(identifier) === -1) {\n footnoteOrder.push(identifier);\n }\n return h(node.position, 'sup', {\n id: 'fnref-' + identifier\n }, [h(node, 'a', {\n href: '#fn-' + identifier,\n className: ['footnote-ref']\n }, [u('text', node.label || identifier)])]);\n}","'use strict';\n\nmodule.exports = footnote;\nvar footnoteReference = require('./footnote-reference');\nfunction footnote(h, node) {\n var footnoteById = h.footnoteById;\n var footnoteOrder = h.footnoteOrder;\n var identifier = 1;\n while (identifier in footnoteById) {\n identifier++;\n }\n identifier = String(identifier);\n\n // No need to check if `identifier` exists in `footnoteOrder`, it’s guaranteed\n // to not exist because we just generated it.\n footnoteOrder.push(identifier);\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier: identifier,\n children: [{\n type: 'paragraph',\n children: node.children\n }],\n position: node.position\n };\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier: identifier,\n position: node.position\n });\n}","'use strict';\n\nmodule.exports = heading;\nvar all = require('../all');\nfunction heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node));\n}","'use strict';\n\nmodule.exports = html;\nvar u = require('unist-builder');\n\n// Return either a `raw` node in dangerous mode, otherwise nothing.\nfunction html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null;\n}","'use strict';\n\nmodule.exports = imageReference;\nvar normalize = require('mdurl/encode');\nvar revert = require('../revert');\nfunction imageReference(h, node) {\n var def = h.definition(node.identifier);\n var props;\n if (!def) {\n return revert(h, node);\n }\n props = {\n src: normalize(def.url || ''),\n alt: node.alt\n };\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title;\n }\n return h(node, 'img', props);\n}","'use strict';\n\nvar normalize = require('mdurl/encode');\nmodule.exports = image;\nfunction image(h, node) {\n var props = {\n src: normalize(node.url),\n alt: node.alt\n };\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title;\n }\n return h(node, 'img', props);\n}","'use strict';\n\nmodule.exports = {\n blockquote: require('./blockquote'),\n break: require('./break'),\n code: require('./code'),\n delete: require('./delete'),\n emphasis: require('./emphasis'),\n footnoteReference: require('./footnote-reference'),\n footnote: require('./footnote'),\n heading: require('./heading'),\n html: require('./html'),\n imageReference: require('./image-reference'),\n image: require('./image'),\n inlineCode: require('./inline-code'),\n linkReference: require('./link-reference'),\n link: require('./link'),\n listItem: require('./list-item'),\n list: require('./list'),\n paragraph: require('./paragraph'),\n root: require('./root'),\n strong: require('./strong'),\n table: require('./table'),\n text: require('./text'),\n thematicBreak: require('./thematic-break'),\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n};\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null;\n}","'use strict';\n\nmodule.exports = inlineCode;\nvar u = require('unist-builder');\nfunction inlineCode(h, node) {\n var value = node.value.replace(/\\r?\\n|\\r/g, ' ');\n return h(node, 'code', [u('text', value)]);\n}","'use strict';\n\nmodule.exports = linkReference;\nvar normalize = require('mdurl/encode');\nvar revert = require('../revert');\nvar all = require('../all');\nfunction linkReference(h, node) {\n var def = h.definition(node.identifier);\n var props;\n if (!def) {\n return revert(h, node);\n }\n props = {\n href: normalize(def.url || '')\n };\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title;\n }\n return h(node, 'a', props, all(h, node));\n}","'use strict';\n\nvar normalize = require('mdurl/encode');\nvar all = require('../all');\nmodule.exports = link;\nfunction link(h, node) {\n var props = {\n href: normalize(node.url)\n };\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title;\n }\n return h(node, 'a', props, all(h, node));\n}","'use strict';\n\nmodule.exports = listItem;\nvar u = require('unist-builder');\nvar all = require('../all');\nfunction listItem(h, node, parent) {\n var result = all(h, node);\n var head = result[0];\n var loose = parent ? listLoose(parent) : listItemLoose(node);\n var props = {};\n var wrapped = [];\n var length;\n var index;\n var child;\n if (typeof node.checked === 'boolean') {\n if (!head || head.tagName !== 'p') {\n head = h(null, 'p', []);\n result.unshift(head);\n }\n if (head.children.length > 0) {\n head.children.unshift(u('text', ' '));\n }\n head.children.unshift(h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n }));\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n props.className = ['task-list-item'];\n }\n length = result.length;\n index = -1;\n while (++index < length) {\n child = result[index];\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (loose || index !== 0 || child.tagName !== 'p') {\n wrapped.push(u('text', '\\n'));\n }\n if (child.tagName === 'p' && !loose) {\n wrapped = wrapped.concat(child.children);\n } else {\n wrapped.push(child);\n }\n }\n\n // Add a final eol.\n if (length && (loose || child.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'));\n }\n return h(node, 'li', props, wrapped);\n}\nfunction listLoose(node) {\n var loose = node.spread;\n var children = node.children;\n var length = children.length;\n var index = -1;\n while (!loose && ++index < length) {\n loose = listItemLoose(children[index]);\n }\n return loose;\n}\nfunction listItemLoose(node) {\n var spread = node.spread;\n return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}","'use strict';\n\nmodule.exports = list;\nvar wrap = require('../wrap');\nvar all = require('../all');\nfunction list(h, node) {\n var props = {};\n var name = node.ordered ? 'ol' : 'ul';\n var items;\n var index = -1;\n var length;\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start;\n }\n items = all(h, node);\n length = items.length;\n\n // Like GitHub, add a class for custom styling.\n while (++index < length) {\n if (items[index].properties.className && items[index].properties.className.indexOf('task-list-item') !== -1) {\n props.className = ['contains-task-list'];\n break;\n }\n }\n return h(node, name, props, wrap(items, true));\n}","'use strict';\n\nmodule.exports = paragraph;\nvar all = require('../all');\nfunction paragraph(h, node) {\n return h(node, 'p', all(h, node));\n}","'use strict';\n\nmodule.exports = root;\nvar u = require('unist-builder');\nvar wrap = require('../wrap');\nvar all = require('../all');\nfunction root(h, node) {\n return h.augment(node, u('root', wrap(all(h, node))));\n}","'use strict';\n\nmodule.exports = strong;\nvar all = require('../all');\nfunction strong(h, node) {\n return h(node, 'strong', all(h, node));\n}","'use strict';\n\nmodule.exports = table;\nvar position = require('unist-util-position');\nvar wrap = require('../wrap');\nvar all = require('../all');\nfunction table(h, node) {\n var rows = node.children;\n var index = rows.length;\n var align = node.align || [];\n var alignLength = align.length;\n var result = [];\n var pos;\n var row;\n var out;\n var name;\n var cell;\n while (index--) {\n row = rows[index].children;\n name = index === 0 ? 'th' : 'td';\n pos = alignLength || row.length;\n out = [];\n while (pos--) {\n cell = row[pos];\n out[pos] = h(cell, name, {\n align: align[pos]\n }, cell ? all(h, cell) : []);\n }\n result[index] = h(rows[index], 'tr', wrap(out, true));\n }\n return h(node, 'table', wrap([h(result[0].position, 'thead', wrap([result[0]], true))].concat(result[1] ? h({\n start: position.start(result[1]),\n end: position.end(result[result.length - 1])\n }, 'tbody', wrap(result.slice(1), true)) : []), true));\n}","'use strict';\n\nmodule.exports = text;\nvar u = require('unist-builder');\nfunction text(h, node) {\n return h.augment(node, u('text', String(node.value).replace(/[ \\t]*(\\r?\\n|\\r)[ \\t]*/g, '$1')));\n}","'use strict';\n\nmodule.exports = thematicBreak;\nfunction thematicBreak(h, node) {\n return h(node, 'hr');\n}","'use strict';\n\nmodule.exports = toHast;\nvar u = require('unist-builder');\nvar visit = require('unist-util-visit');\nvar position = require('unist-util-position');\nvar generated = require('unist-util-generated');\nvar definitions = require('mdast-util-definitions');\nvar one = require('./one');\nvar footer = require('./footer');\nvar handlers = require('./handlers');\nvar own = {}.hasOwnProperty;\nvar deprecationWarningIssued = false;\n\n// Factory to transform.\nfunction factory(tree, options) {\n var settings = options || {};\n\n // Issue a warning if the deprecated tag 'allowDangerousHTML' is used\n if (settings.allowDangerousHTML !== undefined && !deprecationWarningIssued) {\n deprecationWarningIssued = true;\n console.warn('mdast-util-to-hast: deprecation: `allowDangerousHTML` is nonstandard, use `allowDangerousHtml` instead');\n }\n var dangerous = settings.allowDangerousHtml || settings.allowDangerousHTML;\n var footnoteById = {};\n h.dangerous = dangerous;\n h.definition = definitions(tree);\n h.footnoteById = footnoteById;\n h.footnoteOrder = [];\n h.augment = augment;\n h.handlers = Object.assign({}, handlers, settings.handlers);\n h.unknownHandler = settings.unknownHandler;\n h.passThrough = settings.passThrough;\n visit(tree, 'footnoteDefinition', onfootnotedefinition);\n return h;\n\n // Finalise the created `right`, a hast node, from `left`, an mdast node.\n function augment(left, right) {\n var data;\n var ctx;\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && left.data) {\n data = left.data;\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n };\n }\n right.tagName = data.hName;\n }\n if (right.type === 'element' && data.hProperties) {\n right.properties = Object.assign({}, right.properties, data.hProperties);\n }\n if (right.children && data.hChildren) {\n right.children = data.hChildren;\n }\n }\n ctx = left && left.position ? left : {\n position: left\n };\n if (!generated(ctx)) {\n right.position = {\n start: position.start(ctx),\n end: position.end(ctx)\n };\n }\n return right;\n }\n\n // Create an element for `node`.\n function h(node, tagName, props, children) {\n if ((children === undefined || children === null) && typeof props === 'object' && 'length' in props) {\n children = props;\n props = {};\n }\n return augment(node, {\n type: 'element',\n tagName: tagName,\n properties: props || {},\n children: children || []\n });\n }\n function onfootnotedefinition(definition) {\n var id = String(definition.identifier).toUpperCase();\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition;\n }\n }\n}\n\n// Transform `tree`, which is an mdast node, to a hast node.\nfunction toHast(tree, options) {\n var h = factory(tree, options);\n var node = one(h, tree);\n var foot = footer(h);\n if (foot) {\n node.children = node.children.concat(u('text', '\\n'), foot);\n }\n return node;\n}","'use strict';\n\nmodule.exports = one;\nvar u = require('unist-builder');\nvar all = require('./all');\nvar own = {}.hasOwnProperty;\n\n// Transform an unknown node.\nfunction unknown(h, node) {\n if (text(node)) {\n return h.augment(node, u('text', node.value));\n }\n return h(node, 'div', all(h, node));\n}\n\n// Visit a node.\nfunction one(h, node, parent) {\n var type = node && node.type;\n var fn;\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`');\n }\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type];\n } else if (h.passThrough && h.passThrough.indexOf(type) > -1) {\n fn = returnNode;\n } else {\n fn = h.unknownHandler;\n }\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent);\n}\n\n// Check if the node should be renderered as a text node.\nfunction text(node) {\n var data = node.data || {};\n if (own.call(data, 'hName') || own.call(data, 'hProperties') || own.call(data, 'hChildren')) {\n return false;\n }\n return 'value' in node;\n}\nfunction returnNode(h, node) {\n var clone;\n if (node.children) {\n clone = Object.assign({}, node);\n clone.children = all(h, node);\n return clone;\n }\n return node;\n}","'use strict';\n\nmodule.exports = revert;\nvar u = require('unist-builder');\nvar all = require('./all');\n\n// Return the content of a reference without definition as Markdown.\nfunction revert(h, node) {\n var subtype = node.referenceType;\n var suffix = ']';\n var contents;\n var head;\n var tail;\n if (subtype === 'collapsed') {\n suffix += '[]';\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']';\n }\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix);\n }\n contents = all(h, node);\n head = contents[0];\n if (head && head.type === 'text') {\n head.value = '[' + head.value;\n } else {\n contents.unshift(u('text', '['));\n }\n tail = contents[contents.length - 1];\n if (tail && tail.type === 'text') {\n tail.value += suffix;\n } else {\n contents.push(u('text', suffix));\n }\n return contents;\n}","'use strict';\n\nmodule.exports = wrap;\nvar u = require('unist-builder');\n\n// Wrap `nodes` with line feeds between each entry.\n// Optionally adds line feeds at the start and end.\nfunction wrap(nodes, loose) {\n var result = [];\n var index = -1;\n var length = nodes.length;\n if (loose) {\n result.push(u('text', '\\n'));\n }\n while (++index < length) {\n if (index) {\n result.push(u('text', '\\n'));\n }\n result.push(nodes[index]);\n }\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'));\n }\n return result;\n}","'use strict';\n\nmodule.exports = toString;\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return node && (node.value || node.alt || node.title || 'children' in node && all(node.children) || 'length' in node && all(node)) || '';\n}\nfunction all(values) {\n var result = [];\n var index = -1;\n while (++index < values.length) {\n result[index] = toString(values[index]);\n }\n return result.join('');\n}","'use strict';\n\nvar encodeCache = {};\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i,\n ch,\n cache = encodeCache[exclude];\n if (cache) {\n return cache;\n }\n cache = encodeCache[exclude] = [];\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n return cache;\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i,\n l,\n code,\n nextCode,\n cache,\n result = '';\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n cache = getEncodeCache(exclude);\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n if (code < 128) {\n result += cache[code];\n continue;\n }\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n result += encodeURIComponent(string[i]);\n }\n return result;\n}\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\nmodule.exports = encode;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiAlpha = regexCheck(/[A-Za-z]/);\nmodule.exports = asciiAlpha;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\nmodule.exports = asciiAlphanumeric;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\nmodule.exports = asciiAtext;","'use strict';\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n );\n}\nmodule.exports = asciiControl;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiDigit = regexCheck(/\\d/);\nmodule.exports = asciiDigit;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\nmodule.exports = asciiHexDigit;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\nmodule.exports = asciiPunctuation;","'use strict';\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32;\n}\nmodule.exports = markdownLineEndingOrSpace;","'use strict';\n\nfunction markdownLineEnding(code) {\n return code < -2;\n}\nmodule.exports = markdownLineEnding;","'use strict';\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\nmodule.exports = markdownSpace;","'use strict';\n\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js');\nvar regexCheck = require('../util/regex-check.js');\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex);\nmodule.exports = unicodePunctuation;","'use strict';\n\nvar regexCheck = require('../util/regex-check.js');\nvar unicodeWhitespace = regexCheck(/\\s/);\nmodule.exports = unicodeWhitespace;","'use strict';\n\nvar assign = Object.assign;\nmodule.exports = assign;","'use strict';\n\nvar fromCharCode = String.fromCharCode;\nmodule.exports = fromCharCode;","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = own;","'use strict';\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar basics = ['address', 'article', 'aside', 'base', 'basefont', 'blockquote', 'body', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dialog', 'dir', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hr', 'html', 'iframe', 'legend', 'li', 'link', 'main', 'menu', 'menuitem', 'nav', 'noframes', 'ol', 'optgroup', 'option', 'p', 'param', 'section', 'source', 'summary', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul'];\nmodule.exports = basics;","'use strict';\n\n// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.\nvar raws = ['pre', 'script', 'style', 'textarea'];\nmodule.exports = raws;","'use strict';\n\nvar splice = [].splice;\nmodule.exports = splice;","'use strict';\n\n// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\nmodule.exports = unicodePunctuation;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar text$1 = require('./initialize/text.js');\nvar attention = require('./tokenize/attention.js');\nvar autolink = require('./tokenize/autolink.js');\nvar blockQuote = require('./tokenize/block-quote.js');\nvar characterEscape = require('./tokenize/character-escape.js');\nvar characterReference = require('./tokenize/character-reference.js');\nvar codeFenced = require('./tokenize/code-fenced.js');\nvar codeIndented = require('./tokenize/code-indented.js');\nvar codeText = require('./tokenize/code-text.js');\nvar definition = require('./tokenize/definition.js');\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js');\nvar headingAtx = require('./tokenize/heading-atx.js');\nvar htmlFlow = require('./tokenize/html-flow.js');\nvar htmlText = require('./tokenize/html-text.js');\nvar labelEnd = require('./tokenize/label-end.js');\nvar labelStartImage = require('./tokenize/label-start-image.js');\nvar labelStartLink = require('./tokenize/label-start-link.js');\nvar lineEnding = require('./tokenize/line-ending.js');\nvar list = require('./tokenize/list.js');\nvar setextUnderline = require('./tokenize/setext-underline.js');\nvar thematicBreak = require('./tokenize/thematic-break.js');\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n};\nvar contentInitial = {\n 91: definition // Left square bracket\n};\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n};\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n};\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n};\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n};\nvar insideSpan = {\n null: [attention, text$1.resolver]\n};\nvar disable = {\n null: []\n};\nexports.contentInitial = contentInitial;\nexports.disable = disable;\nexports.document = document;\nexports.flow = flow;\nexports.flowInitial = flowInitial;\nexports.insideSpan = insideSpan;\nexports.string = string;\nexports.text = text;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar factorySpace = require('../tokenize/factory-space.js');\nvar tokenize = initializeContent;\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n var previous;\n return contentStart;\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, contentStart, 'linePrefix');\n }\n function paragraphInitial(code) {\n effects.enter('paragraph');\n return lineStart(code);\n }\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n });\n if (previous) {\n previous.next = token;\n }\n previous = token;\n return data(code);\n }\n function data(code) {\n if (code === null) {\n effects.exit('chunkText');\n effects.exit('paragraph');\n effects.consume(code);\n return;\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n effects.exit('chunkText');\n return lineStart;\n } // Data.\n\n effects.consume(code);\n return data;\n }\n}\nexports.tokenize = tokenize;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar factorySpace = require('../tokenize/factory-space.js');\nvar partialBlankLine = require('../tokenize/partial-blank-line.js');\nvar tokenize = initializeDocument;\nvar containerConstruct = {\n tokenize: tokenizeContainer\n};\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n};\nfunction initializeDocument(effects) {\n var self = this;\n var stack = [];\n var continued = 0;\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n };\n var inspectResult;\n var childFlow;\n var childToken;\n return start;\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1];\n return effects.attempt(stack[continued][0].continuation, documentContinue, documentContinued)(code);\n }\n return documentContinued(code);\n }\n function documentContinue(code) {\n continued++;\n return start(code);\n }\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code);\n }\n self.interrupt = childFlow && childFlow.currentConstruct && childFlow.currentConstruct.interruptible;\n self.containerState = {};\n return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n }\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState]);\n self.containerState = undefined;\n return documentContinued(code);\n }\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true);\n effects.consume(code);\n return;\n }\n childFlow = childFlow || self.parser.flow(self.now());\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n });\n return flowContinue(code);\n }\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'));\n return flowStart(code);\n }\n if (markdownLineEnding(code)) {\n effects.consume(code);\n continueFlow(effects.exit('chunkFlow'));\n return effects.check(inspectConstruct, documentAfterPeek);\n }\n effects.consume(code);\n return flowContinue;\n }\n function documentAfterPeek(code) {\n exitContainers(inspectResult.continued, inspectResult && inspectResult.flowEnd);\n continued = 0;\n return start(code);\n }\n function continueFlow(token) {\n if (childToken) childToken.next = token;\n childToken = token;\n childFlow.lazy = inspectResult && inspectResult.lazy;\n childFlow.defineSkip(token.start);\n childFlow.write(self.sliceStream(token));\n }\n function exitContainers(size, end) {\n var index = stack.length; // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null]);\n childToken = childFlow = undefined;\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1];\n stack[index][0].exit.call(self, effects);\n }\n stack.length = size;\n }\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0;\n inspectResult = {};\n return inspectStart;\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1];\n return effects.attempt(stack[subcontinued][0].continuation, inspectContinue, inspectLess)(code);\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true;\n return inspectDone(code);\n }\n self.interrupt = childFlow.currentConstruct && childFlow.currentConstruct.interruptible;\n self.containerState = {};\n return effects.attempt(containerConstruct, inspectFlowEnd, inspectDone)(code);\n }\n function inspectContinue(code) {\n subcontinued++;\n return self.containerState._closeFlow ? inspectFlowEnd(code) : inspectStart(code);\n }\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {};\n return effects.attempt(containerConstruct, inspectFlowEnd,\n // Maybe flow, or a blank line?\n effects.attempt(lazyFlowConstruct, inspectFlowEnd, effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)))(code);\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code);\n }\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length;\n inspectResult.lazy = true;\n inspectResult.flowContinue = true;\n return inspectDone(code);\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true;\n return inspectDone(code);\n }\n function inspectDone(code) {\n inspectResult.continued = subcontinued;\n self.interrupt = self.containerState = undefined;\n return ok(code);\n }\n }\n}\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), 'linePrefix', this.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4);\n}\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(effects, effects.lazy(this.parser.constructs.flow, ok, nok), 'linePrefix', this.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4);\n}\nexports.tokenize = tokenize;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar content = require('../tokenize/content.js');\nvar factorySpace = require('../tokenize/factory-space.js');\nvar partialBlankLine = require('../tokenize/partial-blank-line.js');\nvar tokenize = initializeFlow;\nfunction initializeFlow(effects) {\n var self = this;\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine, atBlankEnding,\n // Try to parse initial flow (essentially, only code).\n effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), 'linePrefix')));\n return initial;\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEndingBlank');\n effects.consume(code);\n effects.exit('lineEndingBlank');\n self.currentConstruct = undefined;\n return initial;\n }\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n self.currentConstruct = undefined;\n return initial;\n }\n}\nexports.tokenize = tokenize;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar assign = require('../constant/assign.js');\nvar shallow = require('../util/shallow.js');\nvar text = initializeFactory('text');\nvar string = initializeFactory('string');\nvar resolver = {\n resolveAll: createResolver()\n};\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined)\n };\n function initializeText(effects) {\n var self = this;\n var constructs = this.parser.constructs[field];\n var text = effects.attempt(constructs, start, notText);\n return start;\n function start(code) {\n return atBreak(code) ? text(code) : notText(code);\n }\n function notText(code) {\n if (code === null) {\n effects.consume(code);\n return;\n }\n effects.enter('data');\n effects.consume(code);\n return data;\n }\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data');\n return text(code);\n } // Data.\n\n effects.consume(code);\n return data;\n }\n function atBreak(code) {\n var list = constructs[code];\n var index = -1;\n if (code === null) {\n return true;\n }\n if (list) {\n while (++index < list.length) {\n if (!list[index].previous || list[index].previous.call(self, self.previous)) {\n return true;\n }\n }\n }\n }\n }\n}\nfunction createResolver(extraResolver) {\n return resolveAllText;\n function resolveAllText(events, context) {\n var index = -1;\n var enter; // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index;\n index++;\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return extraResolver ? extraResolver(events, context) : events;\n }\n} // A rather ugly set of instructions which again looks at chunks in the input\n// stream.\n// The reason to do this here is that it is *much* faster to parse in reverse.\n// And that we can’t hook into `null` to split the line suffix before an EOF.\n// To do: figure out if we can make this into a clean utility, or even in core.\n// As it will be useful for GFMs literal autolink extension (and maybe even\n// tables?)\n\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1;\n var chunks;\n var data;\n var chunk;\n var index;\n var bufferIndex;\n var size;\n var tabs;\n var token;\n while (++eventIndex <= events.length) {\n if ((eventIndex === events.length || events[eventIndex][1].type === 'lineEnding') && events[eventIndex - 1][1].type === 'data') {\n data = events[eventIndex - 1][1];\n chunks = context.sliceStream(data);\n index = chunks.length;\n bufferIndex = -1;\n size = 0;\n tabs = undefined;\n while (index--) {\n chunk = chunks[index];\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length;\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++;\n bufferIndex--;\n }\n if (bufferIndex) break;\n bufferIndex = -1;\n } // Number\n else if (chunk === -2) {\n tabs = true;\n size++;\n } else if (chunk === -1) ;else {\n // Replacement character, exit.\n index++;\n break;\n }\n }\n if (size) {\n token = {\n type: eventIndex === events.length || tabs || size < 2 ? 'lineSuffix' : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex\n },\n end: shallow(data.end)\n };\n data.end = shallow(token.start);\n if (data.start.offset === data.end.offset) {\n assign(data, token);\n } else {\n events.splice(eventIndex, 0, ['enter', token, context], ['exit', token, context]);\n eventIndex += 2;\n }\n }\n eventIndex++;\n }\n }\n return events;\n}\nexports.resolver = resolver;\nexports.string = string;\nexports.text = text;","'use strict';\n\nvar content = require('./initialize/content.js');\nvar document = require('./initialize/document.js');\nvar flow = require('./initialize/flow.js');\nvar text = require('./initialize/text.js');\nvar combineExtensions = require('./util/combine-extensions.js');\nvar createTokenizer = require('./util/create-tokenizer.js');\nvar miniflat = require('./util/miniflat.js');\nvar constructs = require('./constructs.js');\nfunction parse(options) {\n var settings = options || {};\n var parser = {\n defined: [],\n constructs: combineExtensions([constructs].concat(miniflat(settings.extensions))),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n };\n return parser;\n function create(initializer) {\n return creator;\n function creator(from) {\n return createTokenizer(parser, initializer, from);\n }\n }\n}\nmodule.exports = parse;","'use strict';\n\nvar subtokenize = require('./util/subtokenize.js');\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n return events;\n}\nmodule.exports = postprocess;","'use strict';\n\nvar search = /[\\0\\t\\n\\r]/g;\nfunction preprocess() {\n var start = true;\n var column = 1;\n var buffer = '';\n var atCarriageReturn;\n return preprocessor;\n function preprocessor(value, encoding, end) {\n var chunks = [];\n var match;\n var next;\n var startPosition;\n var endPosition;\n var code;\n value = buffer + value.toString(encoding);\n startPosition = 0;\n buffer = '';\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++;\n }\n start = undefined;\n }\n while (startPosition < value.length) {\n search.lastIndex = startPosition;\n match = search.exec(value);\n endPosition = match ? match.index : value.length;\n code = value.charCodeAt(endPosition);\n if (!match) {\n buffer = value.slice(startPosition);\n break;\n }\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3);\n atCarriageReturn = undefined;\n } else {\n if (atCarriageReturn) {\n chunks.push(-5);\n atCarriageReturn = undefined;\n }\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition));\n column += endPosition - startPosition;\n }\n if (code === 0) {\n chunks.push(65533);\n column++;\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4;\n chunks.push(-2);\n while (column++ < next) chunks.push(-1);\n } else if (code === 10) {\n chunks.push(-4);\n column = 1;\n } // Must be carriage return.\n else {\n atCarriageReturn = true;\n column = 1;\n }\n }\n startPosition = endPosition + 1;\n }\n if (end) {\n if (atCarriageReturn) chunks.push(-5);\n if (buffer) chunks.push(buffer);\n chunks.push(null);\n }\n return chunks;\n }\n}\nmodule.exports = preprocess;","'use strict';\n\nvar chunkedPush = require('../util/chunked-push.js');\nvar chunkedSplice = require('../util/chunked-splice.js');\nvar classifyCharacter = require('../util/classify-character.js');\nvar movePoint = require('../util/move-point.js');\nvar resolveAll = require('../util/resolve-all.js');\nvar shallow = require('../util/shallow.js');\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n};\nfunction resolveAllAttention(events, context) {\n var index = -1;\n var open;\n var group;\n var text;\n var openingSequence;\n var closingSequence;\n var use;\n var nextEvents;\n var offset; // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n open = index; // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n continue;\n } // Number of markers to use from the sequence.\n\n use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n };\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n };\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n };\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n };\n events[open][1].end = shallow(openingSequence.start);\n events[index][1].start = shallow(closingSequence.end);\n nextEvents = []; // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = chunkedPush(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]); // Between.\n\n nextEvents = chunkedPush(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context)); // Closing.\n\n nextEvents = chunkedPush(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]); // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2;\n nextEvents = chunkedPush(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n } else {\n offset = 0;\n }\n chunkedSplice(events, open - 1, index - open + 3, nextEvents);\n index = open + nextEvents.length - offset - 2;\n break;\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1;\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data';\n }\n }\n return events;\n}\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous);\n var marker;\n return start;\n function start(code) {\n effects.enter('attentionSequence');\n marker = code;\n return sequence(code);\n }\n function sequence(code) {\n var token;\n var after;\n var open;\n var close;\n if (code === marker) {\n effects.consume(code);\n return sequence;\n }\n token = effects.exit('attentionSequence');\n after = classifyCharacter(code);\n open = !after || after === 2 && before;\n close = !before || before === 2 && after;\n token._open = marker === 42 ? open : open && (before || !close);\n token._close = marker === 42 ? close : close && (after || !open);\n return ok(code);\n }\n}\nmodule.exports = attention;","'use strict';\n\nvar asciiAlpha = require('../character/ascii-alpha.js');\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js');\nvar asciiAtext = require('../character/ascii-atext.js');\nvar asciiControl = require('../character/ascii-control.js');\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n};\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1;\n return start;\n function start(code) {\n effects.enter('autolink');\n effects.enter('autolinkMarker');\n effects.consume(code);\n effects.exit('autolinkMarker');\n effects.enter('autolinkProtocol');\n return open;\n }\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return schemeOrEmailAtext;\n }\n return asciiAtext(code) ? emailAtext(code) : nok(code);\n }\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code) ? schemeInsideOrEmailAtext(code) : emailAtext(code);\n }\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code);\n return urlInside;\n }\n if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n effects.consume(code);\n return schemeInsideOrEmailAtext;\n }\n return emailAtext(code);\n }\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol');\n return end(code);\n }\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code);\n }\n effects.consume(code);\n return urlInside;\n }\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (asciiAtext(code)) {\n effects.consume(code);\n return emailAtext;\n }\n return nok(code);\n }\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n }\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code);\n size = 0;\n return emailAtSignOrDot;\n }\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail';\n return end(code);\n }\n return emailValue(code);\n }\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code);\n return code === 45 ? emailValue : emailLabel;\n }\n return nok(code);\n }\n function end(code) {\n effects.enter('autolinkMarker');\n effects.consume(code);\n effects.exit('autolinkMarker');\n effects.exit('autolink');\n return ok;\n }\n}\nmodule.exports = autolink;","'use strict';\n\nvar markdownSpace = require('../character/markdown-space.js');\nvar factorySpace = require('./factory-space.js');\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n};\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this;\n return start;\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n });\n self.containerState.open = true;\n }\n effects.enter('blockQuotePrefix');\n effects.enter('blockQuoteMarker');\n effects.consume(code);\n effects.exit('blockQuoteMarker');\n return after;\n }\n return nok(code);\n }\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace');\n effects.consume(code);\n effects.exit('blockQuotePrefixWhitespace');\n effects.exit('blockQuotePrefix');\n return ok;\n }\n effects.exit('blockQuotePrefix');\n return ok(code);\n }\n}\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(effects, effects.attempt(blockQuote, ok, nok), 'linePrefix', this.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4);\n}\nfunction exit(effects) {\n effects.exit('blockQuote');\n}\nmodule.exports = blockQuote;","'use strict';\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js');\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n};\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start;\n function start(code) {\n effects.enter('characterEscape');\n effects.enter('escapeMarker');\n effects.consume(code);\n effects.exit('escapeMarker');\n return open;\n }\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue');\n effects.consume(code);\n effects.exit('characterEscapeValue');\n effects.exit('characterEscape');\n return ok;\n }\n return nok(code);\n }\n}\nmodule.exports = characterEscape;","'use strict';\n\nvar decodeEntity = require('parse-entities/decode-entity.js');\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js');\nvar asciiDigit = require('../character/ascii-digit.js');\nvar asciiHexDigit = require('../character/ascii-hex-digit.js');\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {\n default: e\n };\n}\nvar decodeEntity__default = /*#__PURE__*/_interopDefaultLegacy(decodeEntity);\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n};\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this;\n var size = 0;\n var max;\n var test;\n return start;\n function start(code) {\n effects.enter('characterReference');\n effects.enter('characterReferenceMarker');\n effects.consume(code);\n effects.exit('characterReferenceMarker');\n return open;\n }\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric');\n effects.consume(code);\n effects.exit('characterReferenceMarkerNumeric');\n return numeric;\n }\n effects.enter('characterReferenceValue');\n max = 31;\n test = asciiAlphanumeric;\n return value(code);\n }\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal');\n effects.consume(code);\n effects.exit('characterReferenceMarkerHexadecimal');\n effects.enter('characterReferenceValue');\n max = 6;\n test = asciiHexDigit;\n return value;\n }\n effects.enter('characterReferenceValue');\n max = 7;\n test = asciiDigit;\n return value(code);\n }\n function value(code) {\n var token;\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue');\n if (test === asciiAlphanumeric && !decodeEntity__default['default'](self.sliceSerialize(token))) {\n return nok(code);\n }\n effects.enter('characterReferenceMarker');\n effects.consume(code);\n effects.exit('characterReferenceMarker');\n effects.exit('characterReference');\n return ok;\n }\n if (test(code) && size++ < max) {\n effects.consume(code);\n return value;\n }\n return nok(code);\n }\n}\nmodule.exports = characterReference;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar prefixSize = require('../util/prefix-size.js');\nvar factorySpace = require('./factory-space.js');\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n};\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this;\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n };\n var initialPrefix = prefixSize(this.events, 'linePrefix');\n var sizeOpen = 0;\n var marker;\n return start;\n function start(code) {\n effects.enter('codeFenced');\n effects.enter('codeFencedFence');\n effects.enter('codeFencedFenceSequence');\n marker = code;\n return sequenceOpen(code);\n }\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code);\n sizeOpen++;\n return sequenceOpen;\n }\n effects.exit('codeFencedFenceSequence');\n return sizeOpen < 3 ? nok(code) : factorySpace(effects, infoOpen, 'whitespace')(code);\n }\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code);\n }\n effects.enter('codeFencedFenceInfo');\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return info(code);\n }\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString');\n effects.exit('codeFencedFenceInfo');\n return factorySpace(effects, infoAfter, 'whitespace')(code);\n }\n if (code === 96 && code === marker) return nok(code);\n effects.consume(code);\n return info;\n }\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code);\n }\n effects.enter('codeFencedFenceMeta');\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return meta(code);\n }\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString');\n effects.exit('codeFencedFenceMeta');\n return openAfter(code);\n }\n if (code === 96 && code === marker) return nok(code);\n effects.consume(code);\n return meta;\n }\n function openAfter(code) {\n effects.exit('codeFencedFence');\n return self.interrupt ? ok(code) : content(code);\n }\n function content(code) {\n if (code === null) {\n return after(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return effects.attempt(closingFenceConstruct, after, initialPrefix ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1) : content);\n }\n effects.enter('codeFlowValue');\n return contentContinue(code);\n }\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue');\n return content(code);\n }\n effects.consume(code);\n return contentContinue;\n }\n function after(code) {\n effects.exit('codeFenced');\n return ok(code);\n }\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0;\n return factorySpace(effects, closingSequenceStart, 'linePrefix', this.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4);\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence');\n effects.enter('codeFencedFenceSequence');\n return closingSequence(code);\n }\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return closingSequence;\n }\n if (size < sizeOpen) return nok(code);\n effects.exit('codeFencedFenceSequence');\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code);\n }\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence');\n return ok(code);\n }\n return nok(code);\n }\n }\n}\nmodule.exports = codeFenced;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar chunkedSplice = require('../util/chunked-splice.js');\nvar prefixSize = require('../util/prefix-size.js');\nvar factorySpace = require('./factory-space.js');\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n};\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n};\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n };\n chunkedSplice(events, 0, 0, [['enter', code, context]]);\n chunkedSplice(events, events.length, 0, [['exit', code, context]]);\n return events;\n}\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok);\n function afterPrefix(code) {\n if (code === null) {\n return ok(code);\n }\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code);\n }\n effects.enter('codeFlowValue');\n return content(code);\n }\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue');\n return afterPrefix(code);\n }\n effects.consume(code);\n return content;\n }\n}\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this;\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1);\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1);\n }\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code);\n }\n}\nmodule.exports = codeIndented;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n};\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4;\n var headEnterIndex = 3;\n var index;\n var enter; // If we start and end with an EOL or a space.\n\n if ((events[headEnterIndex][1].type === 'lineEnding' || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === 'lineEnding' || events[tailExitIndex][1].type === 'space')) {\n index = headEnterIndex; // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = events[headEnterIndex][1].type = 'codeTextPadding';\n headEnterIndex += 2;\n tailExitIndex -= 2;\n break;\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1;\n tailExitIndex++;\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index;\n }\n } else if (index === tailExitIndex || events[index][1].type === 'lineEnding') {\n events[enter][1].type = 'codeTextData';\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end;\n events.splice(enter + 2, index - enter - 2);\n tailExitIndex -= index - enter - 2;\n index = enter + 2;\n }\n enter = undefined;\n }\n }\n return events;\n}\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return code !== 96 || this.events[this.events.length - 1][1].type === 'characterEscape';\n}\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0;\n var size;\n var token;\n return start;\n function start(code) {\n effects.enter('codeText');\n effects.enter('codeTextSequence');\n return openingSequence(code);\n }\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code);\n sizeOpen++;\n return openingSequence;\n }\n effects.exit('codeTextSequence');\n return gap(code);\n }\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code);\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence');\n size = 0;\n return closingSequence(code);\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space');\n effects.consume(code);\n effects.exit('space');\n return gap;\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return gap;\n } // Data.\n\n effects.enter('codeTextData');\n return data(code);\n } // In code.\n\n function data(code) {\n if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n effects.exit('codeTextData');\n return gap(code);\n }\n effects.consume(code);\n return data;\n } // Closing fence.\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code);\n size++;\n return closingSequence;\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence');\n effects.exit('codeText');\n return ok(code);\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData';\n return data(code);\n }\n}\nmodule.exports = codeText;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar prefixSize = require('../util/prefix-size.js');\nvar subtokenize = require('../util/subtokenize.js');\nvar factorySpace = require('./factory-space.js');\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n};\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}; // Content is transparent: it’s parsed right now. That way, definitions are also\n// parsed right now: before text in paragraphs (specifically, media) are parsed.\n\nfunction resolveContent(events) {\n subtokenize(events);\n return events;\n}\nfunction tokenizeContent(effects, ok) {\n var previous;\n return start;\n function start(code) {\n effects.enter('content');\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n });\n return data(code);\n }\n function data(code) {\n if (code === null) {\n return contentEnd(code);\n }\n if (markdownLineEnding(code)) {\n return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n } // Data.\n\n effects.consume(code);\n return data;\n }\n function contentEnd(code) {\n effects.exit('chunkContent');\n effects.exit('content');\n return ok(code);\n }\n function contentContinue(code) {\n effects.consume(code);\n effects.exit('chunkContent');\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n });\n return data;\n }\n}\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this;\n return startLookahead;\n function startLookahead(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, prefixed, 'linePrefix');\n }\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n if (self.parser.constructs.disable.null.indexOf('codeIndented') > -1 || prefixSize(self.events, 'linePrefix') < 4) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n }\n return ok(code);\n }\n}\nmodule.exports = content;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar normalizeIdentifier = require('../util/normalize-identifier.js');\nvar factoryDestination = require('./factory-destination.js');\nvar factoryLabel = require('./factory-label.js');\nvar factorySpace = require('./factory-space.js');\nvar factoryWhitespace = require('./factory-whitespace.js');\nvar factoryTitle = require('./factory-title.js');\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n};\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n};\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this;\n var identifier;\n return start;\n function start(code) {\n effects.enter('definition');\n return factoryLabel.call(self, effects, labelAfter, nok, 'definitionLabel', 'definitionLabelMarker', 'definitionLabelString')(code);\n }\n function labelAfter(code) {\n identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n if (code === 58) {\n effects.enter('definitionMarker');\n effects.consume(code);\n effects.exit('definitionMarker'); // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(effects, factoryDestination(effects, effects.attempt(titleConstruct, factorySpace(effects, after, 'whitespace'), factorySpace(effects, after, 'whitespace')), nok, 'definitionDestination', 'definitionDestinationLiteral', 'definitionDestinationLiteralMarker', 'definitionDestinationRaw', 'definitionDestinationString'));\n }\n return nok(code);\n }\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition');\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier);\n }\n return ok(code);\n }\n return nok(code);\n }\n}\nfunction tokenizeTitle(effects, ok, nok) {\n return start;\n function start(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, before)(code) : nok(code);\n }\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, factorySpace(effects, after, 'whitespace'), nok, 'definitionTitle', 'definitionTitleMarker', 'definitionTitleString')(code);\n }\n return nok(code);\n }\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}\nmodule.exports = definition;","'use strict';\n\nvar asciiControl = require('../character/ascii-control.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n var limit = max || Infinity;\n var balance = 0;\n return start;\n function start(code) {\n if (code === 60) {\n effects.enter(type);\n effects.enter(literalType);\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n return destinationEnclosedBefore;\n }\n if (asciiControl(code) || code === 41) {\n return nok(code);\n }\n effects.enter(type);\n effects.enter(rawType);\n effects.enter(stringType);\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return destinationRaw(code);\n }\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType);\n effects.consume(code);\n effects.exit(literalMarkerType);\n effects.exit(literalType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return destinationEnclosed(code);\n }\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString');\n effects.exit(stringType);\n return destinationEnclosedBefore(code);\n }\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed;\n }\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code);\n return destinationEnclosed;\n }\n return destinationEnclosed(code);\n }\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code);\n effects.consume(code);\n return destinationRaw;\n }\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString');\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n effects.consume(code);\n return destinationRaw;\n }\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code);\n effects.exit('chunkString');\n effects.exit(stringType);\n effects.exit(rawType);\n effects.exit(type);\n return ok(code);\n }\n if (asciiControl(code)) return nok(code);\n effects.consume(code);\n return code === 92 ? destinationRawEscape : destinationRaw;\n }\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code);\n return destinationRaw;\n }\n return destinationRaw(code);\n }\n}\nmodule.exports = destinationFactory;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownSpace = require('../character/markdown-space.js');\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this;\n var size = 0;\n var data;\n return start;\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.enter(stringType);\n return atBreak;\n }\n function atBreak(code) {\n if (code === null || code === 91 || code === 93 && !data || ( /* c8 ignore next */\n code === 94 && /* c8 ignore next */\n !size && /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs) || size > 999) {\n return nok(code);\n }\n if (code === 93) {\n effects.exit(stringType);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return atBreak;\n }\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return label(code);\n }\n function label(code) {\n if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n effects.exit('chunkString');\n return atBreak(code);\n }\n effects.consume(code);\n data = data || !markdownSpace(code);\n return code === 92 ? labelEscape : label;\n }\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code);\n size++;\n return label;\n }\n return label(code);\n }\n}\nmodule.exports = labelFactory;","'use strict';\n\nvar markdownSpace = require('../character/markdown-space.js');\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity;\n var size = 0;\n return start;\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type);\n return prefix(code);\n }\n return ok(code);\n }\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code);\n return prefix;\n }\n effects.exit(type);\n return ok(code);\n }\n}\nmodule.exports = spaceFactory;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar factorySpace = require('./factory-space.js');\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker;\n return start;\n function start(code) {\n effects.enter(type);\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n marker = code === 40 ? 41 : code;\n return atFirstTitleBreak;\n }\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType);\n effects.consume(code);\n effects.exit(markerType);\n effects.exit(type);\n return ok;\n }\n effects.enter(stringType);\n return atTitleBreak(code);\n }\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType);\n return atFirstTitleBreak(marker);\n }\n if (code === null) {\n return nok(code);\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, atTitleBreak, 'linePrefix');\n }\n effects.enter('chunkString', {\n contentType: 'string'\n });\n return title(code);\n }\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString');\n return atTitleBreak(code);\n }\n effects.consume(code);\n return code === 92 ? titleEscape : title;\n }\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code);\n return title;\n }\n return title(code);\n }\n}\nmodule.exports = titleFactory;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar factorySpace = require('./factory-space.js');\nfunction whitespaceFactory(effects, ok) {\n var seen;\n return start;\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n seen = true;\n return start;\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, start, seen ? 'linePrefix' : 'lineSuffix')(code);\n }\n return ok(code);\n }\n}\nmodule.exports = whitespaceFactory;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n};\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start;\n function start(code) {\n effects.enter('hardBreakEscape');\n effects.enter('escapeMarker');\n effects.consume(code);\n return open;\n }\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker');\n effects.exit('hardBreakEscape');\n return ok(code);\n }\n return nok(code);\n }\n}\nmodule.exports = hardBreakEscape;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar chunkedSplice = require('../util/chunked-splice.js');\nvar factorySpace = require('./factory-space.js');\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n};\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2;\n var contentStart = 3;\n var content;\n var text; // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2;\n } // Suffix whitespace, part of the closing.\n\n if (contentEnd - 2 > contentStart && events[contentEnd][1].type === 'whitespace') {\n contentEnd -= 2;\n }\n if (events[contentEnd][1].type === 'atxHeadingSequence' && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === 'whitespace')) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n }\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n };\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n };\n chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n }\n return events;\n}\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this;\n var size = 0;\n return start;\n function start(code) {\n effects.enter('atxHeading');\n effects.enter('atxHeadingSequence');\n return fenceOpenInside(code);\n }\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code);\n return fenceOpenInside;\n }\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence');\n return self.interrupt ? ok(code) : headingBreak(code);\n }\n return nok(code);\n }\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence');\n return sequence(code);\n }\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading');\n return ok(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code);\n }\n effects.enter('atxHeadingText');\n return data(code);\n }\n function sequence(code) {\n if (code === 35) {\n effects.consume(code);\n return sequence;\n }\n effects.exit('atxHeadingSequence');\n return headingBreak(code);\n }\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText');\n return headingBreak(code);\n }\n effects.consume(code);\n return data;\n }\n}\nmodule.exports = headingAtx;","'use strict';\n\nvar asciiAlpha = require('../character/ascii-alpha.js');\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js');\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar fromCharCode = require('../constant/from-char-code.js');\nvar htmlBlockNames = require('../constant/html-block-names.js');\nvar htmlRawNames = require('../constant/html-raw-names.js');\nvar partialBlankLine = require('./partial-blank-line.js');\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n};\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n};\nfunction resolveToHtmlFlow(events) {\n var index = events.length;\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break;\n }\n }\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start; // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start; // Remove the line prefix.\n\n events.splice(index - 2, 2);\n }\n return events;\n}\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this;\n var kind;\n var startTag;\n var buffer;\n var index;\n var marker;\n return start;\n function start(code) {\n effects.enter('htmlFlow');\n effects.enter('htmlFlowData');\n effects.consume(code);\n return open;\n }\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationStart;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n kind = 3; // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n buffer = fromCharCode(code);\n startTag = true;\n return tagName;\n }\n return nok(code);\n }\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code);\n kind = 2;\n return commentOpenInside;\n }\n if (code === 91) {\n effects.consume(code);\n kind = 5;\n buffer = 'CDATA[';\n index = 0;\n return cdataOpenInside;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n kind = 4;\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code);\n return self.interrupt ? ok : continuationDeclarationInside;\n }\n return nok(code);\n }\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code);\n return index === buffer.length ? self.interrupt ? ok : continuation : cdataOpenInside;\n }\n return nok(code);\n }\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n buffer = fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n function tagName(code) {\n if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n if (code !== 47 && startTag && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 1;\n return self.interrupt ? ok(code) : continuation(code);\n }\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 6;\n if (code === 47) {\n effects.consume(code);\n return basicSelfClosing;\n }\n return self.interrupt ? ok(code) : continuation(code);\n }\n kind = 7; // Do not support complete HTML when interrupting.\n\n return self.interrupt ? nok(code) : startTag ? completeAttributeNameBefore(code) : completeClosingTagAfter(code);\n }\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n buffer += fromCharCode(code);\n return tagName;\n }\n return nok(code);\n }\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code);\n return self.interrupt ? ok : continuation;\n }\n return nok(code);\n }\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeClosingTagAfter;\n }\n return completeEnd(code);\n }\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code);\n return completeEnd;\n }\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameBefore;\n }\n return completeEnd(code);\n }\n function completeAttributeName(code) {\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return completeAttributeName;\n }\n return completeAttributeNameAfter(code);\n }\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeNameAfter;\n }\n return completeAttributeNameBefore(code);\n }\n function completeAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return completeAttributeValueQuoted;\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAttributeValueBefore;\n }\n marker = undefined;\n return completeAttributeValueUnquoted(code);\n }\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n return completeAttributeValueQuotedAfter;\n }\n if (code === null || markdownLineEnding(code)) {\n return nok(code);\n }\n effects.consume(code);\n return completeAttributeValueQuoted;\n }\n function completeAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n return completeAttributeNameAfter(code);\n }\n effects.consume(code);\n return completeAttributeValueUnquoted;\n }\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code);\n }\n return nok(code);\n }\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code);\n return completeAfter;\n }\n return nok(code);\n }\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code);\n return completeAfter;\n }\n return code === null || markdownLineEnding(code) ? continuation(code) : nok(code);\n }\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code);\n return continuationCommentInside;\n }\n if (code === 60 && kind === 1) {\n effects.consume(code);\n return continuationRawTagOpen;\n }\n if (code === 62 && kind === 4) {\n effects.consume(code);\n return continuationClose;\n }\n if (code === 63 && kind === 3) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n if (code === 93 && kind === 5) {\n effects.consume(code);\n return continuationCharacterDataInside;\n }\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(nextBlankConstruct, continuationClose, continuationAtLineEnding)(code);\n }\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code);\n }\n effects.consume(code);\n return continuation;\n }\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData');\n return htmlContinueStart(code);\n }\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code);\n }\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return htmlContinueStart;\n }\n effects.enter('htmlFlowData');\n return continuation(code);\n }\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code);\n buffer = '';\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code);\n return continuationClose;\n }\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code);\n buffer += fromCharCode(code);\n return continuationRawEndTag;\n }\n return continuation(code);\n }\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code);\n return continuationDeclarationInside;\n }\n return continuation(code);\n }\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code);\n return continuationClose;\n }\n return continuation(code);\n }\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData');\n return done(code);\n }\n effects.consume(code);\n return continuationClose;\n }\n function done(code) {\n effects.exit('htmlFlow');\n return ok(code);\n }\n}\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start;\n function start(code) {\n effects.exit('htmlFlowData');\n effects.enter('lineEndingBlank');\n effects.consume(code);\n effects.exit('lineEndingBlank');\n return effects.attempt(partialBlankLine, ok, nok);\n }\n}\nmodule.exports = htmlFlow;","'use strict';\n\nvar asciiAlpha = require('../character/ascii-alpha.js');\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js');\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar factorySpace = require('./factory-space.js');\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n};\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this;\n var marker;\n var buffer;\n var index;\n var returnState;\n return start;\n function start(code) {\n effects.enter('htmlText');\n effects.enter('htmlTextData');\n effects.consume(code);\n return open;\n }\n function open(code) {\n if (code === 33) {\n effects.consume(code);\n return declarationOpen;\n }\n if (code === 47) {\n effects.consume(code);\n return tagCloseStart;\n }\n if (code === 63) {\n effects.consume(code);\n return instruction;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagOpen;\n }\n return nok(code);\n }\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentOpen;\n }\n if (code === 91) {\n effects.consume(code);\n buffer = 'CDATA[';\n index = 0;\n return cdataOpen;\n }\n if (asciiAlpha(code)) {\n effects.consume(code);\n return declaration;\n }\n return nok(code);\n }\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code);\n return commentStart;\n }\n return nok(code);\n }\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentStartDash;\n }\n return comment(code);\n }\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code);\n }\n return comment(code);\n }\n function comment(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 45) {\n effects.consume(code);\n return commentClose;\n }\n if (markdownLineEnding(code)) {\n returnState = comment;\n return atLineEnding(code);\n }\n effects.consume(code);\n return comment;\n }\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code);\n return end;\n }\n return comment(code);\n }\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code);\n return index === buffer.length ? cdata : cdataOpen;\n }\n return nok(code);\n }\n function cdata(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataClose;\n }\n if (markdownLineEnding(code)) {\n returnState = cdata;\n return atLineEnding(code);\n }\n effects.consume(code);\n return cdata;\n }\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n function cdataEnd(code) {\n if (code === 62) {\n return end(code);\n }\n if (code === 93) {\n effects.consume(code);\n return cdataEnd;\n }\n return cdata(code);\n }\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code);\n }\n if (markdownLineEnding(code)) {\n returnState = declaration;\n return atLineEnding(code);\n }\n effects.consume(code);\n return declaration;\n }\n function instruction(code) {\n if (code === null) {\n return nok(code);\n }\n if (code === 63) {\n effects.consume(code);\n return instructionClose;\n }\n if (markdownLineEnding(code)) {\n returnState = instruction;\n return atLineEnding(code);\n }\n effects.consume(code);\n return instruction;\n }\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code);\n }\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code);\n return tagClose;\n }\n return nok(code);\n }\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagClose;\n }\n return tagCloseBetween(code);\n }\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween;\n return atLineEnding(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagCloseBetween;\n }\n return end(code);\n }\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpen;\n }\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code);\n return end;\n }\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween;\n return atLineEnding(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenBetween;\n }\n return end(code);\n }\n function tagOpenAttributeName(code) {\n if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n effects.consume(code);\n return tagOpenAttributeName;\n }\n return tagOpenAttributeNameAfter(code);\n }\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter;\n return atLineEnding(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeNameAfter;\n }\n return tagOpenBetween(code);\n }\n function tagOpenAttributeValueBefore(code) {\n if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n return nok(code);\n }\n if (code === 34 || code === 39) {\n effects.consume(code);\n marker = code;\n return tagOpenAttributeValueQuoted;\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore;\n return atLineEnding(code);\n }\n if (markdownSpace(code)) {\n effects.consume(code);\n return tagOpenAttributeValueBefore;\n }\n effects.consume(code);\n marker = undefined;\n return tagOpenAttributeValueUnquoted;\n }\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code);\n return tagOpenAttributeValueQuotedAfter;\n }\n if (code === null) {\n return nok(code);\n }\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted;\n return atLineEnding(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueQuoted;\n }\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n return nok(code);\n }\n function tagOpenAttributeValueUnquoted(code) {\n if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n return nok(code);\n }\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code);\n }\n effects.consume(code);\n return tagOpenAttributeValueUnquoted;\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n function atLineEnding(code) {\n effects.exit('htmlTextData');\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, afterPrefix, 'linePrefix', self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4);\n }\n function afterPrefix(code) {\n effects.enter('htmlTextData');\n return returnState(code);\n }\n function end(code) {\n if (code === 62) {\n effects.consume(code);\n effects.exit('htmlTextData');\n effects.exit('htmlText');\n return ok;\n }\n return nok(code);\n }\n}\nmodule.exports = htmlText;","'use strict';\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar chunkedPush = require('../util/chunked-push.js');\nvar chunkedSplice = require('../util/chunked-splice.js');\nvar normalizeIdentifier = require('../util/normalize-identifier.js');\nvar resolveAll = require('../util/resolve-all.js');\nvar shallow = require('../util/shallow.js');\nvar factoryDestination = require('./factory-destination.js');\nvar factoryLabel = require('./factory-label.js');\nvar factoryTitle = require('./factory-title.js');\nvar factoryWhitespace = require('./factory-whitespace.js');\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n};\nvar resourceConstruct = {\n tokenize: tokenizeResource\n};\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n};\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n};\nfunction resolveAllLabelEnd(events) {\n var index = -1;\n var token;\n while (++index < events.length) {\n token = events[index][1];\n if (!token._used && (token.type === 'labelImage' || token.type === 'labelLink' || token.type === 'labelEnd')) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2);\n token.type = 'data';\n index++;\n }\n }\n return events;\n}\nfunction resolveToLabelEnd(events, context) {\n var index = events.length;\n var offset = 0;\n var group;\n var label;\n var text;\n var token;\n var open;\n var close;\n var media; // Find an opening.\n\n while (index--) {\n token = events[index][1];\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (token.type === 'link' || token.type === 'labelLink' && token._inactive) {\n break;\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true;\n }\n } else if (close) {\n if (events[index][0] === 'enter' && (token.type === 'labelImage' || token.type === 'labelLink') && !token._balanced) {\n open = index;\n if (token.type !== 'labelLink') {\n offset = 2;\n break;\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index;\n }\n }\n group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n };\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n };\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n };\n media = [['enter', group, context], ['enter', label, context]]; // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)); // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]); // Between.\n\n media = chunkedPush(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context)); // Text close, marker close, label close.\n\n media = chunkedPush(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]); // Reference, resource, or so.\n\n media = chunkedPush(media, events.slice(close + 1)); // Media close.\n\n media = chunkedPush(media, [['exit', group, context]]);\n chunkedSplice(events, open, events.length, media);\n return events;\n}\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this;\n var index = self.events.length;\n var labelStart;\n var defined; // Find an opening.\n\n while (index--) {\n if ((self.events[index][1].type === 'labelImage' || self.events[index][1].type === 'labelLink') && !self.events[index][1]._balanced) {\n labelStart = self.events[index][1];\n break;\n }\n }\n return start;\n function start(code) {\n if (!labelStart) {\n return nok(code);\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code);\n defined = self.parser.defined.indexOf(normalizeIdentifier(self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n }))) > -1;\n effects.enter('labelEnd');\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelEnd');\n return afterLabelEnd;\n }\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(resourceConstruct, ok, defined ? ok : balanced)(code);\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(fullReferenceConstruct, ok, defined ? effects.attempt(collapsedReferenceConstruct, ok, balanced) : balanced)(code);\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code);\n }\n function balanced(code) {\n labelStart._balanced = true;\n return nok(code);\n }\n}\nfunction tokenizeResource(effects, ok, nok) {\n return start;\n function start(code) {\n effects.enter('resource');\n effects.enter('resourceMarker');\n effects.consume(code);\n effects.exit('resourceMarker');\n return factoryWhitespace(effects, open);\n }\n function open(code) {\n if (code === 41) {\n return end(code);\n }\n return factoryDestination(effects, destinationAfter, nok, 'resourceDestination', 'resourceDestinationLiteral', 'resourceDestinationLiteralMarker', 'resourceDestinationRaw', 'resourceDestinationString', 3)(code);\n }\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, between)(code) : end(code);\n }\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(effects, factoryWhitespace(effects, end), nok, 'resourceTitle', 'resourceTitleMarker', 'resourceTitleString')(code);\n }\n return end(code);\n }\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker');\n effects.consume(code);\n effects.exit('resourceMarker');\n effects.exit('resource');\n return ok;\n }\n return nok(code);\n }\n}\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this;\n return start;\n function start(code) {\n return factoryLabel.call(self, effects, afterLabel, nok, 'reference', 'referenceMarker', 'referenceString')(code);\n }\n function afterLabel(code) {\n return self.parser.defined.indexOf(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) < 0 ? nok(code) : ok(code);\n }\n}\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start;\n function start(code) {\n effects.enter('reference');\n effects.enter('referenceMarker');\n effects.consume(code);\n effects.exit('referenceMarker');\n return open;\n }\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker');\n effects.consume(code);\n effects.exit('referenceMarker');\n effects.exit('reference');\n return ok;\n }\n return nok(code);\n }\n}\nmodule.exports = labelEnd;","'use strict';\n\nvar labelEnd = require('./label-end.js');\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this;\n return start;\n function start(code) {\n effects.enter('labelImage');\n effects.enter('labelImageMarker');\n effects.consume(code);\n effects.exit('labelImageMarker');\n return open;\n }\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelImage');\n return after;\n }\n return nok(code);\n }\n function after(code) {\n /* c8 ignore next */\n return code === 94 && /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs ? /* c8 ignore next */\n nok(code) : ok(code);\n }\n}\nmodule.exports = labelStartImage;","'use strict';\n\nvar labelEnd = require('./label-end.js');\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n};\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this;\n return start;\n function start(code) {\n effects.enter('labelLink');\n effects.enter('labelMarker');\n effects.consume(code);\n effects.exit('labelMarker');\n effects.exit('labelLink');\n return after;\n }\n function after(code) {\n /* c8 ignore next */\n return code === 94 && /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs ? /* c8 ignore next */\n nok(code) : ok(code);\n }\n}\nmodule.exports = labelStartLink;","'use strict';\n\nvar factorySpace = require('./factory-space.js');\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n};\nfunction tokenizeLineEnding(effects, ok) {\n return start;\n function start(code) {\n effects.enter('lineEnding');\n effects.consume(code);\n effects.exit('lineEnding');\n return factorySpace(effects, ok, 'linePrefix');\n }\n}\nmodule.exports = lineEnding;","'use strict';\n\nvar asciiDigit = require('../character/ascii-digit.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar prefixSize = require('../util/prefix-size.js');\nvar sizeChunks = require('../util/size-chunks.js');\nvar factorySpace = require('./factory-space.js');\nvar partialBlankLine = require('./partial-blank-line.js');\nvar thematicBreak = require('./thematic-break.js');\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n};\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n};\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n};\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this;\n var initialSize = prefixSize(self.events, 'linePrefix');\n var size = 0;\n return start;\n function start(code) {\n var kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? 'listUnordered' : 'listOrdered');\n if (kind === 'listUnordered' ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n if (!self.containerState.type) {\n self.containerState.type = kind;\n effects.enter(kind, {\n _container: true\n });\n }\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix');\n return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n }\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix');\n effects.enter('listItemValue');\n return inside(code);\n }\n }\n return nok(code);\n }\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code);\n return inside;\n }\n if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n effects.exit('listItemValue');\n return atMarker(code);\n }\n return nok(code);\n }\n function atMarker(code) {\n effects.enter('listItemMarker');\n effects.consume(code);\n effects.exit('listItemMarker');\n self.containerState.marker = self.containerState.marker || code;\n return effects.check(partialBlankLine,\n // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n }\n function onBlank(code) {\n self.containerState.initialBlankLine = true;\n initialSize++;\n return endOfPrefix(code);\n }\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace');\n effects.consume(code);\n effects.exit('listItemPrefixWhitespace');\n return endOfPrefix;\n }\n return nok(code);\n }\n function endOfPrefix(code) {\n self.containerState.size = initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')));\n return ok(code);\n }\n}\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this;\n self.containerState._closeFlow = undefined;\n return effects.check(partialBlankLine, onBlank, notBlank);\n function onBlank(code) {\n self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine; // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(effects, ok, 'listItemIndent', self.containerState.size + 1)(code);\n }\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined;\n return notInCurrentItem(code);\n }\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined;\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n }\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true; // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined;\n return factorySpace(effects, effects.attempt(list, ok, nok), 'linePrefix', self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4)(code);\n }\n}\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this;\n return factorySpace(effects, afterPrefix, 'listItemIndent', self.containerState.size + 1);\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') === self.containerState.size ? ok(code) : nok(code);\n }\n}\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type);\n}\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this;\n return factorySpace(effects, afterPrefix, 'listItemPrefixWhitespace', self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ? undefined : 4 + 1);\n function afterPrefix(code) {\n return markdownSpace(code) || !prefixSize(self.events, 'listItemPrefixWhitespace') ? nok(code) : ok(code);\n }\n}\nmodule.exports = list;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar factorySpace = require('./factory-space.js');\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n};\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix');\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n }\n}\nmodule.exports = partialBlankLine;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar shallow = require('../util/shallow.js');\nvar factorySpace = require('./factory-space.js');\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n};\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length;\n var content;\n var text;\n var definition;\n var heading; // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index;\n break;\n }\n if (events[index][1].type === 'paragraph') {\n text = index;\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1);\n }\n if (!definition && events[index][1].type === 'definition') {\n definition = index;\n }\n }\n }\n heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(events[events.length - 1][1].end)\n }; // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText'; // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context]);\n events.splice(definition + 1, 0, ['exit', events[content][1], context]);\n events[content][1].end = shallow(events[definition][1].end);\n } else {\n events[content][1] = heading;\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context]);\n return events;\n}\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this;\n var index = self.events.length;\n var marker;\n var paragraph; // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (self.events[index][1].type !== 'lineEnding' && self.events[index][1].type !== 'linePrefix' && self.events[index][1].type !== 'content') {\n paragraph = self.events[index][1].type === 'paragraph';\n break;\n }\n }\n return start;\n function start(code) {\n if (!self.lazy && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine');\n effects.enter('setextHeadingLineSequence');\n marker = code;\n return closingSequence(code);\n }\n return nok(code);\n }\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code);\n return closingSequence;\n }\n effects.exit('setextHeadingLineSequence');\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code);\n }\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine');\n return ok(code);\n }\n return nok(code);\n }\n}\nmodule.exports = setextUnderline;","'use strict';\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar markdownSpace = require('../character/markdown-space.js');\nvar factorySpace = require('./factory-space.js');\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n};\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0;\n var marker;\n return start;\n function start(code) {\n effects.enter('thematicBreak');\n marker = code;\n return atBreak(code);\n }\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence');\n return sequence(code);\n }\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code);\n }\n if (size < 3 || code !== null && !markdownLineEnding(code)) {\n return nok(code);\n }\n effects.exit('thematicBreak');\n return ok(code);\n }\n function sequence(code) {\n if (code === marker) {\n effects.consume(code);\n size++;\n return sequence;\n }\n effects.exit('thematicBreakSequence');\n return atBreak(code);\n }\n}\nmodule.exports = thematicBreak;","'use strict';\n\nvar chunkedSplice = require('./chunked-splice.js');\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items);\n return list;\n }\n return items;\n}\nmodule.exports = chunkedPush;","'use strict';\n\nvar splice = require('../constant/splice.js');\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length;\n var chunkStart = 0;\n var parameters; // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start;\n } else {\n start = start > end ? end : start;\n }\n remove = remove > 0 ? remove : 0; // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items);\n parameters.unshift(start, remove);\n splice.apply(list, parameters);\n } else {\n // Delete `remove` items starting from `start`\n if (remove) splice.apply(list, [start, remove]); // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000);\n parameters.unshift(start, 0);\n splice.apply(list, parameters);\n chunkStart += 10000;\n start += 10000;\n }\n }\n}\nmodule.exports = chunkedSplice;","'use strict';\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js');\nvar unicodePunctuation = require('../character/unicode-punctuation.js');\nvar unicodeWhitespace = require('../character/unicode-whitespace.js');\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n return 1;\n }\n if (unicodePunctuation(code)) {\n return 2;\n }\n}\nmodule.exports = classifyCharacter;","'use strict';\n\nvar hasOwnProperty = require('../constant/has-own-property.js');\nvar chunkedSplice = require('./chunked-splice.js');\nvar miniflat = require('./miniflat.js');\nfunction combineExtensions(extensions) {\n var all = {};\n var index = -1;\n while (++index < extensions.length) {\n extension(all, extensions[index]);\n }\n return all;\n}\nfunction extension(all, extension) {\n var hook;\n var left;\n var right;\n var code;\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : all[hook] = {};\n right = extension[hook];\n for (code in right) {\n left[code] = constructs(miniflat(right[code]), hasOwnProperty.call(left, code) ? left[code] : []);\n }\n }\n}\nfunction constructs(list, existing) {\n var index = -1;\n var before = [];\n while (++index < list.length) {\n ;\n (list[index].add === 'after' ? existing : before).push(list[index]);\n }\n chunkedSplice(existing, 0, 0, before);\n return existing;\n}\nmodule.exports = combineExtensions;","'use strict';\n\nvar assign = require('../constant/assign.js');\nvar markdownLineEnding = require('../character/markdown-line-ending.js');\nvar chunkedPush = require('./chunked-push.js');\nvar chunkedSplice = require('./chunked-splice.js');\nvar miniflat = require('./miniflat.js');\nvar resolveAll = require('./resolve-all.js');\nvar serializeChunks = require('./serialize-chunks.js');\nvar shallow = require('./shallow.js');\nvar sliceChunks = require('./slice-chunks.js');\n\n// Create a tokenizer.\n// Tokenizers deal with one type of data (e.g., containers, flow, text).\n// The parser is the object dealing with it all.\n// `initialize` works like other constructs, except that only its `tokenize`\n// function is used, in which case it doesn’t receive an `ok` or `nok`.\n// `from` can be given to set the point before the first character, although\n// when further lines are indented, they must be set with `defineSkip`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from ? shallow(from) : {\n line: 1,\n column: 1,\n offset: 0\n };\n var columnStart = {};\n var resolveAllConstructs = [];\n var chunks = [];\n var stack = [];\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n }; // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n }; // The state function.\n\n var state = initialize.tokenize.call(context, effects); // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize);\n } // Store where we are in the input stream.\n\n point._index = 0;\n point._bufferIndex = -1;\n return context;\n function write(slice) {\n chunks = chunkedPush(chunks, slice);\n main(); // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return [];\n }\n addResult(initialize, 0); // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context);\n return context.events;\n } //\n // Tools.\n //\n\n function sliceSerialize(token) {\n return serializeChunks(sliceStream(token));\n }\n function sliceStream(token) {\n return sliceChunks(chunks, token);\n }\n function now() {\n return shallow(point);\n }\n function skip(value) {\n columnStart[value.line] = value.column;\n accountForPotentialSkip();\n } //\n // State management.\n //\n // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n // `consume`).\n // Here is where we walk through the chunks, which either include strings of\n // several characters, or numerical character codes.\n // The reason to do this in a loop instead of a call is so the stack can\n // drain.\n\n function main() {\n var chunkIndex;\n var chunk;\n while (point._index < chunks.length) {\n chunk = chunks[point._index]; // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index;\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0;\n }\n while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n go(chunk.charCodeAt(point._bufferIndex));\n }\n } else {\n go(chunk);\n }\n }\n } // Deal with one code.\n\n function go(code) {\n state = state(code);\n } // Move a character forward.\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++;\n point.column = 1;\n point.offset += code === -3 ? 2 : 1;\n accountForPotentialSkip();\n } else if (code !== -1) {\n point.column++;\n point.offset++;\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++;\n } else {\n point._bufferIndex++; // At end of string chunk.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1;\n point._index++;\n }\n } // Expose the previous character.\n\n context.previous = code; // Mark as consumed.\n } // Start a token.\n\n function enter(type, fields) {\n var token = fields || {};\n token.type = type;\n token.start = now();\n context.events.push(['enter', token, context]);\n stack.push(token);\n return token;\n } // Stop a token.\n\n function exit(type) {\n var token = stack.pop();\n token.end = now();\n context.events.push(['exit', token, context]);\n return token;\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from);\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore();\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook; // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs;\n var constructIndex;\n var currentConstruct;\n var info;\n return constructs.tokenize || 'length' in constructs ? handleListOfConstructs(miniflat(constructs)) : handleMapOfConstructs;\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(constructs.null ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null)) : constructs[code])(code);\n }\n return bogusState(code);\n }\n function handleListOfConstructs(list) {\n listOfConstructs = list;\n constructIndex = 0;\n return handleConstruct(list[constructIndex]);\n }\n function handleConstruct(construct) {\n return start;\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store();\n currentConstruct = construct;\n if (!construct.partial) {\n context.currentConstruct = construct;\n }\n if (construct.name && context.parser.constructs.disable.null.indexOf(construct.name) > -1) {\n return nok();\n }\n return construct.tokenize.call(fields ? assign({}, context, fields) : context, effects, ok, nok)(code);\n }\n }\n function ok(code) {\n onreturn(currentConstruct, info);\n return returnState;\n }\n function nok(code) {\n info.restore();\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex]);\n }\n return bogusState;\n }\n }\n }\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct);\n }\n if (construct.resolve) {\n chunkedSplice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n }\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context);\n }\n }\n function store() {\n var startPoint = now();\n var startPrevious = context.previous;\n var startCurrentConstruct = context.currentConstruct;\n var startEventsIndex = context.events.length;\n var startStack = Array.from(stack);\n return {\n restore: restore,\n from: startEventsIndex\n };\n function restore() {\n point = startPoint;\n context.previous = startPrevious;\n context.currentConstruct = startCurrentConstruct;\n context.events.length = startEventsIndex;\n stack = startStack;\n accountForPotentialSkip();\n }\n }\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line];\n point.offset += columnStart[point.line] - 1;\n }\n }\n}\nmodule.exports = createTokenizer;","'use strict';\n\nfunction miniflat(value) {\n return value === null || value === undefined ? [] : 'length' in value ? value : [value];\n}\nmodule.exports = miniflat;","'use strict';\n\n// chunks (replacement characters, tabs, or line endings).\nfunction movePoint(point, offset) {\n point.column += offset;\n point.offset += offset;\n point._bufferIndex += offset;\n return point;\n}\nmodule.exports = movePoint;","'use strict';\n\nfunction normalizeIdentifier(value) {\n return value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase().toUpperCase();\n}\nmodule.exports = normalizeIdentifier;","'use strict';\n\nvar sizeChunks = require('./size-chunks.js');\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1];\n if (!tail || tail[1].type !== type) return 0;\n return sizeChunks(tail[2].sliceStream(tail[1]));\n}\nmodule.exports = prefixSize;","'use strict';\n\nvar fromCharCode = require('../constant/from-char-code.js');\nfunction regexCheck(regex) {\n return check;\n function check(code) {\n return regex.test(fromCharCode(code));\n }\n}\nmodule.exports = regexCheck;","'use strict';\n\nfunction resolveAll(constructs, events, context) {\n var called = [];\n var index = -1;\n var resolve;\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll;\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context);\n called.push(resolve);\n }\n }\n return events;\n}\nmodule.exports = resolveAll;","'use strict';\n\nvar fromCharCode = require('../constant/from-char-code.js');\nfunction safeFromInt(value, base) {\n var code = parseInt(value, base);\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 || code === 11 || code > 13 && code < 32 ||\n // Control character (DEL) of the basic block and C1 controls.\n code > 126 && code < 160 ||\n // Lone high surrogates and low surrogates.\n code > 55295 && code < 57344 ||\n // Noncharacters.\n code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 ||\n // Out of range\n code > 1114111) {\n return '\\uFFFD';\n }\n return fromCharCode(code);\n}\nmodule.exports = safeFromInt;","'use strict';\n\nvar fromCharCode = require('../constant/from-char-code.js');\nfunction serializeChunks(chunks) {\n var index = -1;\n var result = [];\n var chunk;\n var value;\n var atTab;\n while (++index < chunks.length) {\n chunk = chunks[index];\n if (typeof chunk === 'string') {\n value = chunk;\n } else if (chunk === -5) {\n value = '\\r';\n } else if (chunk === -4) {\n value = '\\n';\n } else if (chunk === -3) {\n value = '\\r' + '\\n';\n } else if (chunk === -2) {\n value = '\\t';\n } else if (chunk === -1) {\n if (atTab) continue;\n value = ' ';\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk);\n }\n atTab = chunk === -2;\n result.push(value);\n }\n return result.join('');\n}\nmodule.exports = serializeChunks;","'use strict';\n\nvar assign = require('../constant/assign.js');\nfunction shallow(object) {\n return assign({}, object);\n}\nmodule.exports = shallow;","'use strict';\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\nfunction sizeChunks(chunks) {\n var index = -1;\n var size = 0;\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1;\n }\n return size;\n}\nmodule.exports = sizeChunks;","'use strict';\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index;\n var startBufferIndex = token.start._bufferIndex;\n var endIndex = token.end._index;\n var endBufferIndex = token.end._bufferIndex;\n var view;\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n } else {\n view = chunks.slice(startIndex, endIndex);\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex);\n }\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex));\n }\n }\n return view;\n}\nmodule.exports = sliceChunks;","'use strict';\n\nvar assign = require('../constant/assign.js');\nvar chunkedSplice = require('./chunked-splice.js');\nvar shallow = require('./shallow.js');\nfunction subtokenize(events) {\n var jumps = {};\n var index = -1;\n var event;\n var lineIndex;\n var otherIndex;\n var otherEvent;\n var parameters;\n var subevents;\n var more;\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index];\n }\n event = events[index]; // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (index && event[1].type === 'chunkFlow' && events[index - 1][1].type === 'listItemPrefix') {\n subevents = event[1]._tokenizer.events;\n otherIndex = 0;\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === 'lineEndingBlank') {\n otherIndex += 2;\n }\n if (otherIndex < subevents.length && subevents[otherIndex][1].type === 'content') {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break;\n }\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1].isInFirstContentOfListItem = true;\n otherIndex++;\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n assign(jumps, subcontent(events, index));\n index = jumps[index];\n more = true;\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\n otherIndex = index;\n lineIndex = undefined;\n while (otherIndex--) {\n otherEvent = events[otherIndex];\n if (otherEvent[1].type === 'lineEnding' || otherEvent[1].type === 'lineEndingBlank') {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank';\n }\n otherEvent[1].type = 'lineEnding';\n lineIndex = otherIndex;\n }\n } else {\n break;\n }\n }\n if (lineIndex) {\n // Fix position.\n event[1].end = shallow(events[lineIndex][1].start); // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index);\n parameters.unshift(event);\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters);\n }\n }\n }\n return !more;\n}\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1];\n var context = events[eventIndex][2];\n var startPosition = eventIndex - 1;\n var startPositions = [];\n var tokenizer = token._tokenizer || context.parser[token.contentType](token.start);\n var childEvents = tokenizer.events;\n var jumps = [];\n var gaps = {};\n var stream;\n var previous;\n var index;\n var entered;\n var end;\n var adjust; // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n startPositions.push(startPosition);\n if (!token._tokenizer) {\n stream = context.sliceStream(token);\n if (!token.next) {\n stream.push(null);\n }\n if (previous) {\n tokenizer.defineSkip(token.start);\n }\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true;\n }\n tokenizer.write(stream);\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n }\n } // Unravel the next token.\n\n previous = token;\n token = token.next;\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous;\n index = childEvents.length;\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true;\n } else if (\n // Find a void token that includes a break.\n entered && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n add(childEvents.slice(index + 1, end));\n // Help GC.\n token._tokenizer = token.next = undefined;\n token = token.previous;\n end = index + 1;\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined; // Do head:\n\n add(childEvents.slice(0, end));\n index = -1;\n adjust = 0;\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n adjust += jumps[index][1] - jumps[index][0] - 1;\n }\n return gaps;\n function add(slice) {\n var start = startPositions.pop();\n jumps.unshift([start, start + slice.length - 1]);\n chunkedSplice(events, start, 2, slice);\n }\n}\nmodule.exports = subtokenize;","var bn = require('bn.js');\nvar brorand = require('brorand');\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do var a = new bn(this.rand.generate(min_bytes)); while (a.cmp(n) >= 0);\n return a;\n};\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n if (i === s) return false;\n }\n return prime;\n};\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) break;\n }\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n return false;\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","module.exports = assert;\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\n};","'use strict';\n\nvar utils = exports;\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++) res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi) res.push(hi, lo);else res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\nutils.zero2 = zero2;\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex') return toHex(arr);else return arr;\n};","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n}\nfunction shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n}\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n};","(function (root, factory) {\n 'use strict';\n\n /*istanbul ignore next:cant test*/\n if (typeof module === 'object' && typeof module.exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else {\n // Browser globals\n root.objectPath = factory();\n }\n})(this, function () {\n 'use strict';\n\n var toStr = Object.prototype.toString;\n function hasOwnProperty(obj, prop) {\n if (obj == null) {\n return false;\n }\n //to handle objects with null prototypes (too edge case?)\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n function isEmpty(value) {\n if (!value) {\n return true;\n }\n if (isArray(value) && value.length === 0) {\n return true;\n } else if (typeof value !== 'string') {\n for (var i in value) {\n if (hasOwnProperty(value, i)) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n function toString(type) {\n return toStr.call(type);\n }\n function isObject(obj) {\n return typeof obj === 'object' && toString(obj) === '[object Object]';\n }\n var isArray = Array.isArray || function (obj) {\n /*istanbul ignore next:cant test*/\n return toStr.call(obj) === '[object Array]';\n };\n function isBoolean(obj) {\n return typeof obj === 'boolean' || toString(obj) === '[object Boolean]';\n }\n function getKey(key) {\n var intKey = parseInt(key);\n if (intKey.toString() === key) {\n return intKey;\n }\n return key;\n }\n function factory(options) {\n options = options || {};\n var objectPath = function (obj) {\n return Object.keys(objectPath).reduce(function (proxy, prop) {\n if (prop === 'create') {\n return proxy;\n }\n\n /*istanbul ignore else*/\n if (typeof objectPath[prop] === 'function') {\n proxy[prop] = objectPath[prop].bind(objectPath, obj);\n }\n return proxy;\n }, {});\n };\n var hasShallowProperty;\n if (options.includeInheritedProps) {\n hasShallowProperty = function () {\n return true;\n };\n } else {\n hasShallowProperty = function (obj, prop) {\n return typeof prop === 'number' && Array.isArray(obj) || hasOwnProperty(obj, prop);\n };\n }\n function getShallowProperty(obj, prop) {\n if (hasShallowProperty(obj, prop)) {\n return obj[prop];\n }\n }\n var getShallowPropertySafely;\n if (options.includeInheritedProps) {\n getShallowPropertySafely = function (obj, currentPath) {\n if (typeof currentPath !== 'string' && typeof currentPath !== 'number') {\n currentPath = String(currentPath);\n }\n var currentValue = getShallowProperty(obj, currentPath);\n if (currentPath === '__proto__' || currentPath === 'prototype' || currentPath === 'constructor' && typeof currentValue === 'function') {\n throw new Error('For security reasons, object\\'s magic properties cannot be set');\n }\n return currentValue;\n };\n } else {\n getShallowPropertySafely = function (obj, currentPath) {\n return getShallowProperty(obj, currentPath);\n };\n }\n function set(obj, path, value, doNotReplace) {\n if (typeof path === 'number') {\n path = [path];\n }\n if (!path || path.length === 0) {\n return obj;\n }\n if (typeof path === 'string') {\n return set(obj, path.split('.').map(getKey), value, doNotReplace);\n }\n var currentPath = path[0];\n var currentValue = getShallowPropertySafely(obj, currentPath);\n if (path.length === 1) {\n if (currentValue === void 0 || !doNotReplace) {\n obj[currentPath] = value;\n }\n return currentValue;\n }\n if (currentValue === void 0) {\n //check if we assume an array\n if (typeof path[1] === 'number') {\n obj[currentPath] = [];\n } else {\n obj[currentPath] = {};\n }\n }\n return set(obj[currentPath], path.slice(1), value, doNotReplace);\n }\n objectPath.has = function (obj, path) {\n if (typeof path === 'number') {\n path = [path];\n } else if (typeof path === 'string') {\n path = path.split('.');\n }\n if (!path || path.length === 0) {\n return !!obj;\n }\n for (var i = 0; i < path.length; i++) {\n var j = getKey(path[i]);\n if (typeof j === 'number' && isArray(obj) && j < obj.length || (options.includeInheritedProps ? j in Object(obj) : hasOwnProperty(obj, j))) {\n obj = obj[j];\n } else {\n return false;\n }\n }\n return true;\n };\n objectPath.ensureExists = function (obj, path, value) {\n return set(obj, path, value, true);\n };\n objectPath.set = function (obj, path, value, doNotReplace) {\n return set(obj, path, value, doNotReplace);\n };\n objectPath.insert = function (obj, path, value, at) {\n var arr = objectPath.get(obj, path);\n at = ~~at;\n if (!isArray(arr)) {\n arr = [];\n objectPath.set(obj, path, arr);\n }\n arr.splice(at, 0, value);\n };\n objectPath.empty = function (obj, path) {\n if (isEmpty(path)) {\n return void 0;\n }\n if (obj == null) {\n return void 0;\n }\n var value, i;\n if (!(value = objectPath.get(obj, path))) {\n return void 0;\n }\n if (typeof value === 'string') {\n return objectPath.set(obj, path, '');\n } else if (isBoolean(value)) {\n return objectPath.set(obj, path, false);\n } else if (typeof value === 'number') {\n return objectPath.set(obj, path, 0);\n } else if (isArray(value)) {\n value.length = 0;\n } else if (isObject(value)) {\n for (i in value) {\n if (hasShallowProperty(value, i)) {\n delete value[i];\n }\n }\n } else {\n return objectPath.set(obj, path, null);\n }\n };\n objectPath.push = function (obj, path /*, values */) {\n var arr = objectPath.get(obj, path);\n if (!isArray(arr)) {\n arr = [];\n objectPath.set(obj, path, arr);\n }\n arr.push.apply(arr, Array.prototype.slice.call(arguments, 2));\n };\n objectPath.coalesce = function (obj, paths, defaultValue) {\n var value;\n for (var i = 0, len = paths.length; i < len; i++) {\n if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n return value;\n }\n }\n return defaultValue;\n };\n objectPath.get = function (obj, path, defaultValue) {\n if (typeof path === 'number') {\n path = [path];\n }\n if (!path || path.length === 0) {\n return obj;\n }\n if (obj == null) {\n return defaultValue;\n }\n if (typeof path === 'string') {\n return objectPath.get(obj, path.split('.'), defaultValue);\n }\n var currentPath = getKey(path[0]);\n var nextObj = getShallowPropertySafely(obj, currentPath);\n if (nextObj === void 0) {\n return defaultValue;\n }\n if (path.length === 1) {\n return nextObj;\n }\n return objectPath.get(obj[currentPath], path.slice(1), defaultValue);\n };\n objectPath.del = function del(obj, path) {\n if (typeof path === 'number') {\n path = [path];\n }\n if (obj == null) {\n return obj;\n }\n if (isEmpty(path)) {\n return obj;\n }\n if (typeof path === 'string') {\n return objectPath.del(obj, path.split('.'));\n }\n var currentPath = getKey(path[0]);\n getShallowPropertySafely(obj, currentPath);\n if (!hasShallowProperty(obj, currentPath)) {\n return obj;\n }\n if (path.length === 1) {\n if (isArray(obj)) {\n obj.splice(currentPath, 1);\n } else {\n delete obj[currentPath];\n }\n } else {\n return objectPath.del(obj[currentPath], path.slice(1));\n }\n return obj;\n };\n return objectPath;\n }\n var mod = factory();\n mod.create = factory;\n mod.withInheritedProps = factory({\n includeInheritedProps: true\n });\n return mod;\n});","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n'use strict';\n\nvar asn1 = require('asn1.js');\nexports.certificate = require('./certificate');\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('modulus')['int'](), this.key('publicExponent')['int'](), this.key('privateExponent')['int'](), this.key('prime1')['int'](), this.key('prime2')['int'](), this.key('exponent1')['int'](), this.key('exponent2')['int'](), this.key('coefficient')['int']());\n});\nexports.RSAPrivateKey = RSAPrivateKey;\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(this.key('modulus')['int'](), this.key('publicExponent')['int']());\n});\nexports.RSAPublicKey = RSAPublicKey;\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p')['int'](), this.key('q')['int'](), this.key('g')['int']()).optional());\n});\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(this.key('version')['int'](), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr());\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters')['int']())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr());\n});\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('p')['int'](), this.key('q')['int'](), this.key('g')['int'](), this.key('pub_key')['int'](), this.key('priv_key')['int']());\n});\nexports.DSAPrivateKey = DSAPrivateKey;\nexports.DSAparam = asn1.define('DSAparam', function () {\n this['int']();\n});\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr());\n});\nexports.ECPrivateKey = ECPrivateKey;\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r')['int'](), this.key('s')['int']());\n});","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict';\n\nvar asn = require('asn1.js');\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n });\n});\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(this.key('type').objid(), this.key('value').any());\n});\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional());\n});\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue);\n});\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName);\n});\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n });\n});\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time));\n});\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr());\n});\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(this.key('version').explicit(0)['int']().optional(), this.key('serialNumber')['int'](), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional());\n});\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr());\n});\nmodule.exports = X509Certificate;","'use strict';\n\n// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\nvar evp = require('evp_bytestokey');\nvar ciphers = require('browserify-aes');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n if (!match) {\n var match2 = key.match(fullRegex);\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n } else {\n var suite = 'aes' + match[1];\n var iv = Buffer.from(match[2], 'hex');\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n var out = [];\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n out.push(cipher.update(cipherText));\n out.push(cipher['final']());\n decrypted = Buffer.concat(out);\n }\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\n };\n};","'use strict';\n\nvar asn1 = require('./asn1');\nvar aesid = require('./aesid.json');\nvar fixProc = require('./fixProc');\nvar ciphers = require('browserify-aes');\nvar compat = require('pbkdf2');\nvar Buffer = require('safe-buffer').Buffer;\nfunction decrypt(data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n var iv = data.algorithm.decrypt.cipher.iv;\n var cipherText = data.subjectPrivateKey;\n var keylen = parseInt(algo.split('-')[1], 10) / 8;\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n var cipher = ciphers.createDecipheriv(algo, key, iv);\n var out = [];\n out.push(cipher.update(cipherText));\n out.push(cipher['final']());\n return Buffer.concat(out);\n}\nfunction parseKeys(buffer) {\n var password;\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n subtype = ndata.algorithm.algorithm.join('.');\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n };\n default:\n throw new Error('unknown key id ' + subtype);\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n };\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n };\n default:\n throw new Error('unknown key id ' + subtype);\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der');\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n };\n default:\n throw new Error('unknown key type ' + type);\n }\n}\nparseKeys.signature = asn1.signature;\nmodule.exports = parseKeys;","'use strict';\n\n/* eslint-env browser */\nvar el;\nvar semicolon = 59; // ';'\n\nmodule.exports = decodeEntity;\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';';\n var char;\n el = el || document.createElement('i');\n el.innerHTML = entity;\n char = el.textContent;\n\n // Some entities do not require the closing semicolon (`¬` - for instance),\n // which leads to situations where parsing the assumed entity of ¬it; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false;\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char;\n}","var isarray = require('isarray');\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp;\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;\nmodule.exports.tokensToFunction = tokensToFunction;\nmodule.exports.tokensToRegExp = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won't transform.\n'(\\\\\\\\.)',\n// Match Express-style parameters and un-named parameters with a prefix\n// and optional suffixes. Matches appear as:\n//\n// \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n// \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n// \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n'([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse(str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue;\n }\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?'\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n return tokens;\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty(str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk(str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction(tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n path += token;\n continue;\n }\n var value = data[token.name];\n var segment;\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined');\n }\n }\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`');\n }\n if (value.length === 0) {\n if (token.optional) {\n continue;\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty');\n }\n }\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`');\n }\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n continue;\n }\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"');\n }\n path += token.prefix + segment;\n }\n return path;\n };\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1');\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup(group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1');\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags(options) {\n return options && options.sensitive ? '' : 'i';\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp(path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n return attachKeys(path, keys);\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp(path, keys, options) {\n var parts = [];\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n return attachKeys(regexp, keys);\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options);\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp(tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */keys || options;\n keys = [];\n }\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n keys.push(token);\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n route += capture;\n }\n }\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n return attachKeys(new RegExp('^' + route, flags(options)), keys);\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp(path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */keys || options;\n keys = [];\n }\n options = options || {};\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */keys);\n }\n if (isarray(path)) {\n return arrayToRegexp( /** @type {!Array} */path, /** @type {!Array} */keys, options);\n }\n return stringToRegexp( /** @type {string} */path, /** @type {!Array} */keys, options);\n}","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar isWindows = process.platform === 'win32';\nvar util = require('util');\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n var res = [];\n for (var i = 0; i < parts.length; i++) {\n var p = parts[i];\n\n // ignore empty parts\n if (!p || p === '.') continue;\n if (p === '..') {\n if (res.length && res[res.length - 1] !== '..') {\n res.pop();\n } else if (allowAboveRoot) {\n res.push('..');\n }\n } else {\n res.push(p);\n }\n }\n return res;\n}\n\n// returns an array with empty elements removed from either end of the input\n// array or the original array if no elements need to be removed\nfunction trimArray(arr) {\n var lastIndex = arr.length - 1;\n var start = 0;\n for (; start <= lastIndex; start++) {\n if (arr[start]) break;\n }\n var end = lastIndex;\n for (; end >= 0; end--) {\n if (arr[end]) break;\n }\n if (start === 0 && end === lastIndex) return arr;\n if (start > end) return [];\n return arr.slice(start, end + 1);\n}\n\n// Regex to split a windows path into three parts: [*, device, slash,\n// tail] windows-only\nvar splitDeviceRe = /^([a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/]+[^\\\\\\/]+)?([\\\\\\/])?([\\s\\S]*?)$/;\n\n// Regex to split the tail part of the above into [*, dir, basename, ext]\nvar splitTailRe = /^([\\s\\S]*?)((?:\\.{1,2}|[^\\\\\\/]+?|)(\\.[^.\\/\\\\]*|))(?:[\\\\\\/]*)$/;\nvar win32 = {};\n\n// Function to split a filename into [root, dir, basename, ext]\nfunction win32SplitPath(filename) {\n // Separate device+slash from tail\n var result = splitDeviceRe.exec(filename),\n device = (result[1] || '') + (result[2] || ''),\n tail = result[3] || '';\n // Split the tail into dir, basename and extension\n var result2 = splitTailRe.exec(tail),\n dir = result2[1],\n basename = result2[2],\n ext = result2[3];\n return [device, dir, basename, ext];\n}\nfunction win32StatPath(path) {\n var result = splitDeviceRe.exec(path),\n device = result[1] || '',\n isUnc = !!device && device[1] !== ':';\n return {\n device: device,\n isUnc: isUnc,\n isAbsolute: isUnc || !!result[2],\n // UNC paths are always absolute\n tail: result[3]\n };\n}\nfunction normalizeUNCRoot(device) {\n return '\\\\\\\\' + device.replace(/^[\\\\\\/]+/, '').replace(/[\\\\\\/]+/g, '\\\\');\n}\n\n// path.resolve([from ...], to)\nwin32.resolve = function () {\n var resolvedDevice = '',\n resolvedTail = '',\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1; i--) {\n var path;\n if (i >= 0) {\n path = arguments[i];\n } else if (!resolvedDevice) {\n path = process.cwd();\n } else {\n // Windows has the concept of drive-specific current working\n // directories. If we've resolved a drive letter but not yet an\n // absolute path, get cwd for that drive. We're sure the device is not\n // an unc path at this points, because unc paths are always absolute.\n path = process.env['=' + resolvedDevice];\n // Verify that a drive-local cwd was found and that it actually points\n // to our drive. If not, default to the drive's root.\n if (!path || path.substr(0, 3).toLowerCase() !== resolvedDevice.toLowerCase() + '\\\\') {\n path = resolvedDevice + '\\\\';\n }\n }\n\n // Skip empty and invalid entries\n if (!util.isString(path)) {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n var result = win32StatPath(path),\n device = result.device,\n isUnc = result.isUnc,\n isAbsolute = result.isAbsolute,\n tail = result.tail;\n if (device && resolvedDevice && device.toLowerCase() !== resolvedDevice.toLowerCase()) {\n // This path points to another device so it is not applicable\n continue;\n }\n if (!resolvedDevice) {\n resolvedDevice = device;\n }\n if (!resolvedAbsolute) {\n resolvedTail = tail + '\\\\' + resolvedTail;\n resolvedAbsolute = isAbsolute;\n }\n if (resolvedDevice && resolvedAbsolute) {\n break;\n }\n }\n\n // Convert slashes to backslashes when `resolvedDevice` points to an UNC\n // root. Also squash multiple slashes into a single one where appropriate.\n if (isUnc) {\n resolvedDevice = normalizeUNCRoot(resolvedDevice);\n }\n\n // At this point the path should be resolved to a full absolute path,\n // but handle relative paths to be safe (might happen when process.cwd()\n // fails)\n\n // Normalize the tail path\n resolvedTail = normalizeArray(resolvedTail.split(/[\\\\\\/]+/), !resolvedAbsolute).join('\\\\');\n return resolvedDevice + (resolvedAbsolute ? '\\\\' : '') + resolvedTail || '.';\n};\nwin32.normalize = function (path) {\n var result = win32StatPath(path),\n device = result.device,\n isUnc = result.isUnc,\n isAbsolute = result.isAbsolute,\n tail = result.tail,\n trailingSlash = /[\\\\\\/]$/.test(tail);\n\n // Normalize the tail path\n tail = normalizeArray(tail.split(/[\\\\\\/]+/), !isAbsolute).join('\\\\');\n if (!tail && !isAbsolute) {\n tail = '.';\n }\n if (tail && trailingSlash) {\n tail += '\\\\';\n }\n\n // Convert slashes to backslashes when `device` points to an UNC root.\n // Also squash multiple slashes into a single one where appropriate.\n if (isUnc) {\n device = normalizeUNCRoot(device);\n }\n return device + (isAbsolute ? '\\\\' : '') + tail;\n};\nwin32.isAbsolute = function (path) {\n return win32StatPath(path).isAbsolute;\n};\nwin32.join = function () {\n var paths = [];\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!util.isString(arg)) {\n throw new TypeError('Arguments to path.join must be strings');\n }\n if (arg) {\n paths.push(arg);\n }\n }\n var joined = paths.join('\\\\');\n\n // Make sure that the joined path doesn't start with two slashes, because\n // normalize() will mistake it for an UNC path then.\n //\n // This step is skipped when it is very clear that the user actually\n // intended to point at an UNC path. This is assumed when the first\n // non-empty string arguments starts with exactly two slashes followed by\n // at least one more non-slash character.\n //\n // Note that for normalize() to treat a path as an UNC path it needs to\n // have at least 2 components, so we don't filter for that here.\n // This means that the user can use join to construct UNC paths from\n // a server name and a share name; for example:\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\')\n if (!/^[\\\\\\/]{2}[^\\\\\\/]/.test(paths[0])) {\n joined = joined.replace(/^[\\\\\\/]{2,}/, '\\\\');\n }\n return win32.normalize(joined);\n};\n\n// path.relative(from, to)\n// it will solve the relative path from 'from' to 'to', for instance:\n// from = 'C:\\\\orandea\\\\test\\\\aaa'\n// to = 'C:\\\\orandea\\\\impl\\\\bbb'\n// The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\nwin32.relative = function (from, to) {\n from = win32.resolve(from);\n to = win32.resolve(to);\n\n // windows is not case sensitive\n var lowerFrom = from.toLowerCase();\n var lowerTo = to.toLowerCase();\n var toParts = trimArray(to.split('\\\\'));\n var lowerFromParts = trimArray(lowerFrom.split('\\\\'));\n var lowerToParts = trimArray(lowerTo.split('\\\\'));\n var length = Math.min(lowerFromParts.length, lowerToParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (lowerFromParts[i] !== lowerToParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n if (samePartsLength == 0) {\n return to;\n }\n var outputParts = [];\n for (var i = samePartsLength; i < lowerFromParts.length; i++) {\n outputParts.push('..');\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('\\\\');\n};\nwin32._makeLong = function (path) {\n // Note: this will *probably* throw somewhere.\n if (!util.isString(path)) return path;\n if (!path) {\n return '';\n }\n var resolvedPath = win32.resolve(path);\n if (/^[a-zA-Z]\\:\\\\/.test(resolvedPath)) {\n // path is local filesystem path, which needs to be converted\n // to long UNC path.\n return '\\\\\\\\?\\\\' + resolvedPath;\n } else if (/^\\\\\\\\[^?.]/.test(resolvedPath)) {\n // path is network UNC path, which needs to be converted\n // to long UNC path.\n return '\\\\\\\\?\\\\UNC\\\\' + resolvedPath.substring(2);\n }\n return path;\n};\nwin32.dirname = function (path) {\n var result = win32SplitPath(path),\n root = result[0],\n dir = result[1];\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n};\nwin32.basename = function (path, ext) {\n var f = win32SplitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\nwin32.extname = function (path) {\n return win32SplitPath(path)[3];\n};\nwin32.format = function (pathObject) {\n if (!util.isObject(pathObject)) {\n throw new TypeError(\"Parameter 'pathObject' must be an object, not \" + typeof pathObject);\n }\n var root = pathObject.root || '';\n if (!util.isString(root)) {\n throw new TypeError(\"'pathObject.root' must be a string or undefined, not \" + typeof pathObject.root);\n }\n var dir = pathObject.dir;\n var base = pathObject.base || '';\n if (!dir) {\n return base;\n }\n if (dir[dir.length - 1] === win32.sep) {\n return dir + base;\n }\n return dir + win32.sep + base;\n};\nwin32.parse = function (pathString) {\n if (!util.isString(pathString)) {\n throw new TypeError(\"Parameter 'pathString' must be a string, not \" + typeof pathString);\n }\n var allParts = win32SplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\nwin32.sep = '\\\\';\nwin32.delimiter = ';';\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\nfunction posixSplitPath(filename) {\n return splitPathRe.exec(filename).slice(1);\n}\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (!util.isString(path)) {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path[0] === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(resolvedPath.split('/'), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function (path) {\n var isAbsolute = posix.isAbsolute(path),\n trailingSlash = path && path[path.length - 1] === '/';\n\n // Normalize the path\n path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function () {\n var path = '';\n for (var i = 0; i < arguments.length; i++) {\n var segment = arguments[i];\n if (!util.isString(segment)) {\n throw new TypeError('Arguments to path.join must be strings');\n }\n if (segment) {\n if (!path) {\n path += segment;\n } else {\n path += '/' + segment;\n }\n }\n }\n return posix.normalize(path);\n};\n\n// path.relative(from, to)\n// posix version\nposix.relative = function (from, to) {\n from = posix.resolve(from).substr(1);\n to = posix.resolve(to).substr(1);\n var fromParts = trimArray(from.split('/'));\n var toParts = trimArray(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\nposix._makeLong = function (path) {\n return path;\n};\nposix.dirname = function (path) {\n var result = posixSplitPath(path),\n root = result[0],\n dir = result[1];\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n return root + dir;\n};\nposix.basename = function (path, ext) {\n var f = posixSplitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\nposix.extname = function (path) {\n return posixSplitPath(path)[3];\n};\nposix.format = function (pathObject) {\n if (!util.isObject(pathObject)) {\n throw new TypeError(\"Parameter 'pathObject' must be an object, not \" + typeof pathObject);\n }\n var root = pathObject.root || '';\n if (!util.isString(root)) {\n throw new TypeError(\"'pathObject.root' must be a string or undefined, not \" + typeof pathObject.root);\n }\n var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n var base = pathObject.base || '';\n return dir + base;\n};\nposix.parse = function (pathString) {\n if (!util.isString(pathString)) {\n throw new TypeError(\"Parameter 'pathString' must be a string, not \" + typeof pathString);\n }\n var allParts = posixSplitPath(pathString);\n if (!allParts || allParts.length !== 4) {\n throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n }\n allParts[1] = allParts[1] || '';\n allParts[2] = allParts[2] || '';\n allParts[3] = allParts[3] || '';\n return {\n root: allParts[0],\n dir: allParts[0] + allParts[1].slice(0, -1),\n base: allParts[2],\n ext: allParts[3],\n name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n };\n};\nposix.sep = '/';\nposix.delimiter = ':';\nif (isWindows) module.exports = win32;else /* posix */\n module.exports = posix;\nmodule.exports.posix = posix;\nmodule.exports.win32 = win32;","exports.pbkdf2 = require('./lib/async');\nexports.pbkdf2Sync = require('./lib/sync');","var Buffer = require('safe-buffer').Buffer;\nvar checkParameters = require('./precondition');\nvar defaultEncoding = require('./default-encoding');\nvar sync = require('./sync');\nvar toBuffer = require('./to-buffer');\nvar ZERO_BUF;\nvar subtle = global.crypto && global.crypto.subtle;\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n};\nvar checks = [];\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n checks[algo] = prom;\n return prom;\n}\nvar nextTick;\nfunction getNextTick() {\n if (nextTick) {\n return nextTick;\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick;\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask;\n } else if (global.setImmediate) {\n nextTick = global.setImmediate;\n } else {\n nextTick = global.setTimeout;\n }\n return nextTick;\n}\nfunction browserPbkdf2(password, salt, iterations, length, algo) {\n return subtle.importKey('raw', password, {\n name: 'PBKDF2'\n }, false, ['deriveBits']).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3);\n }).then(function (res) {\n return Buffer.from(res);\n });\n}\nfunction resolvePromise(promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out);\n });\n }, function (e) {\n getNextTick()(function () {\n callback(e);\n });\n });\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest;\n digest = undefined;\n }\n digest = digest || 'sha1';\n var algo = toBrowser[digest.toLowerCase()];\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out;\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n callback(null, out);\n });\n return;\n }\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2');\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n return sync(password, salt, iterations, keylen, digest);\n }), callback);\n};","var defaultEncoding;\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8';\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';\n} else {\n defaultEncoding = 'utf-8';\n}\nmodule.exports = defaultEncoding;","var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number');\n }\n if (iterations < 0) {\n throw new TypeError('Bad iterations');\n }\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number');\n }\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length');\n }\n};","var md5 = require('create-hash/md5');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar Buffer = require('safe-buffer').Buffer;\nvar checkParameters = require('./precondition');\nvar defaultEncoding = require('./default-encoding');\nvar toBuffer = require('./to-buffer');\nvar ZEROS = Buffer.alloc(128);\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n};\nfunction Hmac(alg, key, saltLen) {\n var hash = getDigest(alg);\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n if (key.length > blocksize) {\n key = hash(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n ipad.copy(ipad1, 0, 0, blocksize);\n this.ipad1 = ipad1;\n this.ipad2 = ipad;\n this.opad = opad;\n this.alg = alg;\n this.blocksize = blocksize;\n this.hash = hash;\n this.size = sizes[alg];\n}\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize);\n var h = this.hash(ipad);\n h.copy(this.opad, this.blocksize);\n return this.hash(this.opad);\n};\nfunction getDigest(alg) {\n function shaFunc(data) {\n return sha(alg).update(data).digest();\n }\n function rmd160Func(data) {\n return new RIPEMD160().update(data).digest();\n }\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func;\n if (alg === 'md5') return md5;\n return shaFunc;\n}\nfunction pbkdf2(password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n digest = digest || 'sha1';\n var hmac = new Hmac(digest, password, salt.length);\n var DK = Buffer.allocUnsafe(keylen);\n var block1 = Buffer.allocUnsafe(salt.length + 4);\n salt.copy(block1, 0, 0, salt.length);\n var destPos = 0;\n var hLen = sizes[digest];\n var l = Math.ceil(keylen / hLen);\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length);\n var T = hmac.run(block1, hmac.ipad1);\n var U = T;\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2);\n for (var k = 0; k < hLen; k++) T[k] ^= U[k];\n }\n T.copy(DK, destPos);\n destPos += hLen;\n }\n return DK;\n}\nmodule.exports = pbkdf2;","var Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing;\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding);\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer);\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView');\n }\n};","// Generated by CoffeeScript 1.12.2\n(function () {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n if (typeof performance !== \"undefined\" && performance !== null && performance.now) {\n module.exports = function () {\n return performance.now();\n };\n } else if (typeof process !== \"undefined\" && process !== null && process.hrtime) {\n module.exports = function () {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function () {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function () {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function () {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map","var div = null;\nvar prefixes = ['Webkit', 'Moz', 'O', 'ms'];\nmodule.exports = function prefixStyle(prop) {\n // re-use a dummy div\n if (!div) {\n div = document.createElement('div');\n }\n var style = div.style;\n\n // prop exists without prefix\n if (prop in style) {\n return prop;\n }\n\n // borderRadius -> BorderRadius\n var titleCase = prop.charAt(0).toUpperCase() + prop.slice(1);\n\n // find the vendor-prefixed prop\n for (var i = prefixes.length; i >= 0; i--) {\n var name = prefixes[i] + titleCase;\n // e.g. WebkitBorderRadius or webkitBorderRadius\n if (name in style) {\n return name;\n }\n }\n return false;\n};","'use strict';\n\nif (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\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');\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\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('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n ;\n shim.isRequired = shim;\n function getShim() {\n return shim;\n }\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 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 checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\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 * 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';\nmodule.exports = ReactPropTypesSecret;","'use strict';\n\nvar normalize = require('./normalize');\nvar DefinedInfo = require('./lib/util/defined-info');\nvar Info = require('./lib/util/info');\nvar data = 'data';\nmodule.exports = find;\nvar valid = /^data[-\\w.:]+$/i;\nvar dash = /-[a-z]/g;\nvar cap = /[A-Z]/g;\nfunction find(schema, value) {\n var normal = normalize(value);\n var prop = value;\n var Type = Info;\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]];\n }\n if (normal.length > 4 && normal.slice(0, 4) === data && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n prop = datasetToProperty(value);\n } else {\n value = datasetToAttribute(value);\n }\n Type = DefinedInfo;\n }\n return new Type(prop, value);\n}\nfunction datasetToProperty(attribute) {\n var value = attribute.slice(5).replace(dash, camelcase);\n return data + value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction datasetToAttribute(property) {\n var value = property.slice(4);\n if (dash.test(value)) {\n return property;\n }\n value = value.replace(cap, kebab);\n if (value.charAt(0) !== '-') {\n value = '-' + value;\n }\n return data + value;\n}\nfunction kebab($0) {\n return '-' + $0.toLowerCase();\n}\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase();\n}","'use strict';\n\nvar merge = require('./lib/util/merge');\nvar xlink = require('./lib/xlink');\nvar xml = require('./lib/xml');\nvar xmlns = require('./lib/xmlns');\nvar aria = require('./lib/aria');\nvar html = require('./lib/html');\nmodule.exports = merge([xml, xlink, xmlns, aria, html]);","'use strict';\n\nvar types = require('./util/types');\nvar create = require('./util/create');\nvar booleanish = types.booleanish;\nvar number = types.number;\nvar spaceSeparated = types.spaceSeparated;\nmodule.exports = create({\n transform: ariaTransform,\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n});\nfunction ariaTransform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase();\n}","'use strict';\n\nvar types = require('./util/types');\nvar create = require('./util/create');\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform');\nvar boolean = types.boolean;\nvar overloadedBoolean = types.overloadedBoolean;\nvar booleanish = types.booleanish;\nvar number = types.number;\nvar spaceSeparated = types.spaceSeparated;\nvar commaSeparated = types.commaSeparated;\nmodule.exports = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: commaSeparated,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextMenu: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: commaSeparated,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null,\n // Several. Use CSS `text-align` instead,\n aLink: null,\n // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated,\n // `<object>`. List of URIs to archives\n axis: null,\n // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null,\n // `<body>`. Use CSS `background-image` instead\n bgColor: null,\n // `<body>` and table elements. Use CSS `background-color` instead\n border: number,\n // `<table>`. Use CSS `border-width` instead,\n borderColor: null,\n // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number,\n // `<body>`\n cellPadding: null,\n // `<table>`\n cellSpacing: null,\n // `<table>`\n char: null,\n // Several table elements. When `align=char`, sets the character to align on\n charOff: null,\n // Several table elements. When `char`, offsets the alignment\n classId: null,\n // `<object>`\n clear: null,\n // `<br>`. Use CSS `clear` instead\n code: null,\n // `<object>`\n codeBase: null,\n // `<object>`\n codeType: null,\n // `<object>`\n color: null,\n // `<font>` and `<hr>`. Use CSS instead\n compact: boolean,\n // Lists. Use CSS to reduce space between items instead\n declare: boolean,\n // `<object>`\n event: null,\n // `<script>`\n face: null,\n // `<font>`. Use CSS instead\n frame: null,\n // `<table>`\n frameBorder: null,\n // `<iframe>`. Use CSS `border` instead\n hSpace: number,\n // `<img>` and `<object>`\n leftMargin: number,\n // `<body>`\n link: null,\n // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null,\n // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null,\n // `<img>`. Use a `<picture>`\n marginHeight: number,\n // `<body>`\n marginWidth: number,\n // `<body>`\n noResize: boolean,\n // `<frame>`\n noHref: boolean,\n // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean,\n // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean,\n // `<td>` and `<th>`\n object: null,\n // `<applet>`\n profile: null,\n // `<head>`\n prompt: null,\n // `<isindex>`\n rev: null,\n // `<link>`\n rightMargin: number,\n // `<body>`\n rules: null,\n // `<table>`\n scheme: null,\n // `<meta>`\n scrolling: booleanish,\n // `<frame>`. Use overflow in the child context\n standby: null,\n // `<object>`\n summary: null,\n // `<table>`\n text: null,\n // `<body>`. Use CSS `color` instead\n topMargin: number,\n // `<body>`\n valueType: null,\n // `<param>`\n version: null,\n // `<html>`. Use a doctype.\n vAlign: null,\n // Several. Use CSS `vertical-align` instead\n vLink: null,\n // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number,\n // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n});","'use strict';\n\nvar types = require('./util/types');\nvar create = require('./util/create');\nvar caseSensitiveTransform = require('./util/case-sensitive-transform');\nvar boolean = types.boolean;\nvar number = types.number;\nvar spaceSeparated = types.spaceSeparated;\nvar commaSeparated = types.commaSeparated;\nvar commaOrSpaceSeparated = types.commaOrSpaceSeparated;\nmodule.exports = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null,\n // SEMI_COLON_SEPARATED\n keySplines: null,\n // SEMI_COLON_SEPARATED\n keyTimes: null,\n // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n});","'use strict';\n\nvar caseSensitiveTransform = require('./case-sensitive-transform');\nmodule.exports = caseInsensitiveTransform;\nfunction caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase());\n}","'use strict';\n\nmodule.exports = caseSensitiveTransform;\nfunction caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute;\n}","'use strict';\n\nvar normalize = require('../../normalize');\nvar Schema = require('./schema');\nvar DefinedInfo = require('./defined-info');\nmodule.exports = create;\nfunction create(definition) {\n var space = definition.space;\n var mustUseProperty = definition.mustUseProperty || [];\n var attributes = definition.attributes || {};\n var props = definition.properties;\n var transform = definition.transform;\n var property = {};\n var normal = {};\n var prop;\n var info;\n for (prop in props) {\n info = new DefinedInfo(prop, transform(attributes, prop), props[prop], space);\n if (mustUseProperty.indexOf(prop) !== -1) {\n info.mustUseProperty = true;\n }\n property[prop] = info;\n normal[normalize(prop)] = prop;\n normal[normalize(info.attribute)] = prop;\n }\n return new Schema(property, normal, space);\n}","'use strict';\n\nvar Info = require('./info');\nvar types = require('./types');\nmodule.exports = DefinedInfo;\nDefinedInfo.prototype = new Info();\nDefinedInfo.prototype.defined = true;\nvar checks = ['boolean', 'booleanish', 'overloadedBoolean', 'number', 'commaSeparated', 'spaceSeparated', 'commaOrSpaceSeparated'];\nvar checksLength = checks.length;\nfunction DefinedInfo(property, attribute, mask, space) {\n var index = -1;\n var check;\n mark(this, 'space', space);\n Info.call(this, property, attribute);\n while (++index < checksLength) {\n check = checks[index];\n mark(this, check, (mask & types[check]) === types[check]);\n }\n}\nfunction mark(values, key, value) {\n if (value) {\n values[key] = value;\n }\n}","'use strict';\n\nmodule.exports = Info;\nvar proto = Info.prototype;\nproto.space = null;\nproto.attribute = null;\nproto.property = null;\nproto.boolean = false;\nproto.booleanish = false;\nproto.overloadedBoolean = false;\nproto.number = false;\nproto.commaSeparated = false;\nproto.spaceSeparated = false;\nproto.commaOrSpaceSeparated = false;\nproto.mustUseProperty = false;\nproto.defined = false;\nfunction Info(property, attribute) {\n this.property = property;\n this.attribute = attribute;\n}","'use strict';\n\nvar xtend = require('xtend');\nvar Schema = require('./schema');\nmodule.exports = merge;\nfunction merge(definitions) {\n var length = definitions.length;\n var property = [];\n var normal = [];\n var index = -1;\n var info;\n var space;\n while (++index < length) {\n info = definitions[index];\n property.push(info.property);\n normal.push(info.normal);\n space = info.space;\n }\n return new Schema(xtend.apply(null, property), xtend.apply(null, normal), space);\n}","'use strict';\n\nmodule.exports = Schema;\nvar proto = Schema.prototype;\nproto.space = null;\nproto.normal = {};\nproto.property = {};\nfunction Schema(property, normal, space) {\n this.property = property;\n this.normal = normal;\n if (space) {\n this.space = space;\n }\n}","'use strict';\n\nvar powers = 0;\nexports.boolean = increment();\nexports.booleanish = increment();\nexports.overloadedBoolean = increment();\nexports.number = increment();\nexports.spaceSeparated = increment();\nexports.commaSeparated = increment();\nexports.commaOrSpaceSeparated = increment();\nfunction increment() {\n return Math.pow(2, ++powers);\n}","'use strict';\n\nvar create = require('./util/create');\nmodule.exports = create({\n space: 'xlink',\n transform: xlinkTransform,\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n});\nfunction xlinkTransform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase();\n}","'use strict';\n\nvar create = require('./util/create');\nmodule.exports = create({\n space: 'xml',\n transform: xmlTransform,\n properties: {\n xmlLang: null,\n xmlBase: null,\n xmlSpace: null\n }\n});\nfunction xmlTransform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase();\n}","'use strict';\n\nvar create = require('./util/create');\nvar caseInsensitiveTransform = require('./util/case-insensitive-transform');\nmodule.exports = create({\n space: 'xmlns',\n attributes: {\n xmlnsxlink: 'xmlns:xlink'\n },\n transform: caseInsensitiveTransform,\n properties: {\n xmlns: null,\n xmlnsXLink: null\n }\n});","'use strict';\n\nmodule.exports = normalize;\nfunction normalize(value) {\n return value.toLowerCase();\n}","'use strict';\n\nvar merge = require('./lib/util/merge');\nvar xlink = require('./lib/xlink');\nvar xml = require('./lib/xml');\nvar xmlns = require('./lib/xmlns');\nvar aria = require('./lib/aria');\nvar svg = require('./lib/svg');\nmodule.exports = merge([xml, xlink, xmlns, aria, svg]);","exports.publicEncrypt = require('./publicEncrypt');\nexports.privateDecrypt = require('./privateDecrypt');\nexports.privateEncrypt = function privateEncrypt(key, buf) {\n return exports.publicEncrypt(key, buf, true);\n};\nexports.publicDecrypt = function publicDecrypt(key, buf) {\n return exports.privateDecrypt(key, buf, true);\n};","var createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0);\n var i = 0;\n var c;\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\n return t.slice(0, len);\n};\nfunction i2ops(c) {\n var out = Buffer.allocUnsafe(4);\n out.writeUInt32BE(c, 0);\n return out;\n}","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;\n this.words[j] |= w << off & 0x3ffffff;\n this.words[j + 1] = w >>> 26 - off & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n this.strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = limbPow / base | 0;\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n this.strip();\n };\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n BN.prototype.inspect = function inspect() {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n */\n\n var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = ((w << off | carry) & 0xffffff).toString(16);\n carry = w >>> 24 - off & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n assert(false, 'Base should be between 2 and 36');\n };\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + this.words[1] * 0x4000000;\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return this.negative !== 0 ? -ret : ret;\n };\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\n };\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\n };\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\n };\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn(width) {\n assert(typeof width === 'number' && width >= 0);\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn(bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd(num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add(num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub(num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\n }\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += r / 0x4000000 | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo(self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = mid + Math.imul(ah0, bl0) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = mid + Math.imul(ah1, bl0) | 0;\n hi = Math.imul(ah1, bh0);\n lo = lo + Math.imul(al0, bl1) | 0;\n mid = mid + Math.imul(al0, bh1) | 0;\n mid = mid + Math.imul(ah0, bl1) | 0;\n hi = hi + Math.imul(ah0, bh1) | 0;\n var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = mid + Math.imul(ah2, bl0) | 0;\n hi = Math.imul(ah2, bh0);\n lo = lo + Math.imul(al1, bl1) | 0;\n mid = mid + Math.imul(al1, bh1) | 0;\n mid = mid + Math.imul(ah1, bl1) | 0;\n hi = hi + Math.imul(ah1, bh1) | 0;\n lo = lo + Math.imul(al0, bl2) | 0;\n mid = mid + Math.imul(al0, bh2) | 0;\n mid = mid + Math.imul(ah0, bl2) | 0;\n hi = hi + Math.imul(ah0, bh2) | 0;\n var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = mid + Math.imul(ah3, bl0) | 0;\n hi = Math.imul(ah3, bh0);\n lo = lo + Math.imul(al2, bl1) | 0;\n mid = mid + Math.imul(al2, bh1) | 0;\n mid = mid + Math.imul(ah2, bl1) | 0;\n hi = hi + Math.imul(ah2, bh1) | 0;\n lo = lo + Math.imul(al1, bl2) | 0;\n mid = mid + Math.imul(al1, bh2) | 0;\n mid = mid + Math.imul(ah1, bl2) | 0;\n hi = hi + Math.imul(ah1, bh2) | 0;\n lo = lo + Math.imul(al0, bl3) | 0;\n mid = mid + Math.imul(al0, bh3) | 0;\n mid = mid + Math.imul(ah0, bl3) | 0;\n hi = hi + Math.imul(ah0, bh3) | 0;\n var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = mid + Math.imul(ah4, bl0) | 0;\n hi = Math.imul(ah4, bh0);\n lo = lo + Math.imul(al3, bl1) | 0;\n mid = mid + Math.imul(al3, bh1) | 0;\n mid = mid + Math.imul(ah3, bl1) | 0;\n hi = hi + Math.imul(ah3, bh1) | 0;\n lo = lo + Math.imul(al2, bl2) | 0;\n mid = mid + Math.imul(al2, bh2) | 0;\n mid = mid + Math.imul(ah2, bl2) | 0;\n hi = hi + Math.imul(ah2, bh2) | 0;\n lo = lo + Math.imul(al1, bl3) | 0;\n mid = mid + Math.imul(al1, bh3) | 0;\n mid = mid + Math.imul(ah1, bl3) | 0;\n hi = hi + Math.imul(ah1, bh3) | 0;\n lo = lo + Math.imul(al0, bl4) | 0;\n mid = mid + Math.imul(al0, bh4) | 0;\n mid = mid + Math.imul(ah0, bl4) | 0;\n hi = hi + Math.imul(ah0, bh4) | 0;\n var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = mid + Math.imul(ah5, bl0) | 0;\n hi = Math.imul(ah5, bh0);\n lo = lo + Math.imul(al4, bl1) | 0;\n mid = mid + Math.imul(al4, bh1) | 0;\n mid = mid + Math.imul(ah4, bl1) | 0;\n hi = hi + Math.imul(ah4, bh1) | 0;\n lo = lo + Math.imul(al3, bl2) | 0;\n mid = mid + Math.imul(al3, bh2) | 0;\n mid = mid + Math.imul(ah3, bl2) | 0;\n hi = hi + Math.imul(ah3, bh2) | 0;\n lo = lo + Math.imul(al2, bl3) | 0;\n mid = mid + Math.imul(al2, bh3) | 0;\n mid = mid + Math.imul(ah2, bl3) | 0;\n hi = hi + Math.imul(ah2, bh3) | 0;\n lo = lo + Math.imul(al1, bl4) | 0;\n mid = mid + Math.imul(al1, bh4) | 0;\n mid = mid + Math.imul(ah1, bl4) | 0;\n hi = hi + Math.imul(ah1, bh4) | 0;\n lo = lo + Math.imul(al0, bl5) | 0;\n mid = mid + Math.imul(al0, bh5) | 0;\n mid = mid + Math.imul(ah0, bl5) | 0;\n hi = hi + Math.imul(ah0, bh5) | 0;\n var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = mid + Math.imul(ah6, bl0) | 0;\n hi = Math.imul(ah6, bh0);\n lo = lo + Math.imul(al5, bl1) | 0;\n mid = mid + Math.imul(al5, bh1) | 0;\n mid = mid + Math.imul(ah5, bl1) | 0;\n hi = hi + Math.imul(ah5, bh1) | 0;\n lo = lo + Math.imul(al4, bl2) | 0;\n mid = mid + Math.imul(al4, bh2) | 0;\n mid = mid + Math.imul(ah4, bl2) | 0;\n hi = hi + Math.imul(ah4, bh2) | 0;\n lo = lo + Math.imul(al3, bl3) | 0;\n mid = mid + Math.imul(al3, bh3) | 0;\n mid = mid + Math.imul(ah3, bl3) | 0;\n hi = hi + Math.imul(ah3, bh3) | 0;\n lo = lo + Math.imul(al2, bl4) | 0;\n mid = mid + Math.imul(al2, bh4) | 0;\n mid = mid + Math.imul(ah2, bl4) | 0;\n hi = hi + Math.imul(ah2, bh4) | 0;\n lo = lo + Math.imul(al1, bl5) | 0;\n mid = mid + Math.imul(al1, bh5) | 0;\n mid = mid + Math.imul(ah1, bl5) | 0;\n hi = hi + Math.imul(ah1, bh5) | 0;\n lo = lo + Math.imul(al0, bl6) | 0;\n mid = mid + Math.imul(al0, bh6) | 0;\n mid = mid + Math.imul(ah0, bl6) | 0;\n hi = hi + Math.imul(ah0, bh6) | 0;\n var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = mid + Math.imul(ah7, bl0) | 0;\n hi = Math.imul(ah7, bh0);\n lo = lo + Math.imul(al6, bl1) | 0;\n mid = mid + Math.imul(al6, bh1) | 0;\n mid = mid + Math.imul(ah6, bl1) | 0;\n hi = hi + Math.imul(ah6, bh1) | 0;\n lo = lo + Math.imul(al5, bl2) | 0;\n mid = mid + Math.imul(al5, bh2) | 0;\n mid = mid + Math.imul(ah5, bl2) | 0;\n hi = hi + Math.imul(ah5, bh2) | 0;\n lo = lo + Math.imul(al4, bl3) | 0;\n mid = mid + Math.imul(al4, bh3) | 0;\n mid = mid + Math.imul(ah4, bl3) | 0;\n hi = hi + Math.imul(ah4, bh3) | 0;\n lo = lo + Math.imul(al3, bl4) | 0;\n mid = mid + Math.imul(al3, bh4) | 0;\n mid = mid + Math.imul(ah3, bl4) | 0;\n hi = hi + Math.imul(ah3, bh4) | 0;\n lo = lo + Math.imul(al2, bl5) | 0;\n mid = mid + Math.imul(al2, bh5) | 0;\n mid = mid + Math.imul(ah2, bl5) | 0;\n hi = hi + Math.imul(ah2, bh5) | 0;\n lo = lo + Math.imul(al1, bl6) | 0;\n mid = mid + Math.imul(al1, bh6) | 0;\n mid = mid + Math.imul(ah1, bl6) | 0;\n hi = hi + Math.imul(ah1, bh6) | 0;\n lo = lo + Math.imul(al0, bl7) | 0;\n mid = mid + Math.imul(al0, bh7) | 0;\n mid = mid + Math.imul(ah0, bl7) | 0;\n hi = hi + Math.imul(ah0, bh7) | 0;\n var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = mid + Math.imul(ah8, bl0) | 0;\n hi = Math.imul(ah8, bh0);\n lo = lo + Math.imul(al7, bl1) | 0;\n mid = mid + Math.imul(al7, bh1) | 0;\n mid = mid + Math.imul(ah7, bl1) | 0;\n hi = hi + Math.imul(ah7, bh1) | 0;\n lo = lo + Math.imul(al6, bl2) | 0;\n mid = mid + Math.imul(al6, bh2) | 0;\n mid = mid + Math.imul(ah6, bl2) | 0;\n hi = hi + Math.imul(ah6, bh2) | 0;\n lo = lo + Math.imul(al5, bl3) | 0;\n mid = mid + Math.imul(al5, bh3) | 0;\n mid = mid + Math.imul(ah5, bl3) | 0;\n hi = hi + Math.imul(ah5, bh3) | 0;\n lo = lo + Math.imul(al4, bl4) | 0;\n mid = mid + Math.imul(al4, bh4) | 0;\n mid = mid + Math.imul(ah4, bl4) | 0;\n hi = hi + Math.imul(ah4, bh4) | 0;\n lo = lo + Math.imul(al3, bl5) | 0;\n mid = mid + Math.imul(al3, bh5) | 0;\n mid = mid + Math.imul(ah3, bl5) | 0;\n hi = hi + Math.imul(ah3, bh5) | 0;\n lo = lo + Math.imul(al2, bl6) | 0;\n mid = mid + Math.imul(al2, bh6) | 0;\n mid = mid + Math.imul(ah2, bl6) | 0;\n hi = hi + Math.imul(ah2, bh6) | 0;\n lo = lo + Math.imul(al1, bl7) | 0;\n mid = mid + Math.imul(al1, bh7) | 0;\n mid = mid + Math.imul(ah1, bl7) | 0;\n hi = hi + Math.imul(ah1, bh7) | 0;\n lo = lo + Math.imul(al0, bl8) | 0;\n mid = mid + Math.imul(al0, bh8) | 0;\n mid = mid + Math.imul(ah0, bl8) | 0;\n hi = hi + Math.imul(ah0, bh8) | 0;\n var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = mid + Math.imul(ah9, bl0) | 0;\n hi = Math.imul(ah9, bh0);\n lo = lo + Math.imul(al8, bl1) | 0;\n mid = mid + Math.imul(al8, bh1) | 0;\n mid = mid + Math.imul(ah8, bl1) | 0;\n hi = hi + Math.imul(ah8, bh1) | 0;\n lo = lo + Math.imul(al7, bl2) | 0;\n mid = mid + Math.imul(al7, bh2) | 0;\n mid = mid + Math.imul(ah7, bl2) | 0;\n hi = hi + Math.imul(ah7, bh2) | 0;\n lo = lo + Math.imul(al6, bl3) | 0;\n mid = mid + Math.imul(al6, bh3) | 0;\n mid = mid + Math.imul(ah6, bl3) | 0;\n hi = hi + Math.imul(ah6, bh3) | 0;\n lo = lo + Math.imul(al5, bl4) | 0;\n mid = mid + Math.imul(al5, bh4) | 0;\n mid = mid + Math.imul(ah5, bl4) | 0;\n hi = hi + Math.imul(ah5, bh4) | 0;\n lo = lo + Math.imul(al4, bl5) | 0;\n mid = mid + Math.imul(al4, bh5) | 0;\n mid = mid + Math.imul(ah4, bl5) | 0;\n hi = hi + Math.imul(ah4, bh5) | 0;\n lo = lo + Math.imul(al3, bl6) | 0;\n mid = mid + Math.imul(al3, bh6) | 0;\n mid = mid + Math.imul(ah3, bl6) | 0;\n hi = hi + Math.imul(ah3, bh6) | 0;\n lo = lo + Math.imul(al2, bl7) | 0;\n mid = mid + Math.imul(al2, bh7) | 0;\n mid = mid + Math.imul(ah2, bl7) | 0;\n hi = hi + Math.imul(ah2, bh7) | 0;\n lo = lo + Math.imul(al1, bl8) | 0;\n mid = mid + Math.imul(al1, bh8) | 0;\n mid = mid + Math.imul(ah1, bl8) | 0;\n hi = hi + Math.imul(ah1, bh8) | 0;\n lo = lo + Math.imul(al0, bl9) | 0;\n mid = mid + Math.imul(al0, bh9) | 0;\n mid = mid + Math.imul(ah0, bl9) | 0;\n hi = hi + Math.imul(ah0, bh9) | 0;\n var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = mid + Math.imul(ah9, bl1) | 0;\n hi = Math.imul(ah9, bh1);\n lo = lo + Math.imul(al8, bl2) | 0;\n mid = mid + Math.imul(al8, bh2) | 0;\n mid = mid + Math.imul(ah8, bl2) | 0;\n hi = hi + Math.imul(ah8, bh2) | 0;\n lo = lo + Math.imul(al7, bl3) | 0;\n mid = mid + Math.imul(al7, bh3) | 0;\n mid = mid + Math.imul(ah7, bl3) | 0;\n hi = hi + Math.imul(ah7, bh3) | 0;\n lo = lo + Math.imul(al6, bl4) | 0;\n mid = mid + Math.imul(al6, bh4) | 0;\n mid = mid + Math.imul(ah6, bl4) | 0;\n hi = hi + Math.imul(ah6, bh4) | 0;\n lo = lo + Math.imul(al5, bl5) | 0;\n mid = mid + Math.imul(al5, bh5) | 0;\n mid = mid + Math.imul(ah5, bl5) | 0;\n hi = hi + Math.imul(ah5, bh5) | 0;\n lo = lo + Math.imul(al4, bl6) | 0;\n mid = mid + Math.imul(al4, bh6) | 0;\n mid = mid + Math.imul(ah4, bl6) | 0;\n hi = hi + Math.imul(ah4, bh6) | 0;\n lo = lo + Math.imul(al3, bl7) | 0;\n mid = mid + Math.imul(al3, bh7) | 0;\n mid = mid + Math.imul(ah3, bl7) | 0;\n hi = hi + Math.imul(ah3, bh7) | 0;\n lo = lo + Math.imul(al2, bl8) | 0;\n mid = mid + Math.imul(al2, bh8) | 0;\n mid = mid + Math.imul(ah2, bl8) | 0;\n hi = hi + Math.imul(ah2, bh8) | 0;\n lo = lo + Math.imul(al1, bl9) | 0;\n mid = mid + Math.imul(al1, bh9) | 0;\n mid = mid + Math.imul(ah1, bl9) | 0;\n hi = hi + Math.imul(ah1, bh9) | 0;\n var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = mid + Math.imul(ah9, bl2) | 0;\n hi = Math.imul(ah9, bh2);\n lo = lo + Math.imul(al8, bl3) | 0;\n mid = mid + Math.imul(al8, bh3) | 0;\n mid = mid + Math.imul(ah8, bl3) | 0;\n hi = hi + Math.imul(ah8, bh3) | 0;\n lo = lo + Math.imul(al7, bl4) | 0;\n mid = mid + Math.imul(al7, bh4) | 0;\n mid = mid + Math.imul(ah7, bl4) | 0;\n hi = hi + Math.imul(ah7, bh4) | 0;\n lo = lo + Math.imul(al6, bl5) | 0;\n mid = mid + Math.imul(al6, bh5) | 0;\n mid = mid + Math.imul(ah6, bl5) | 0;\n hi = hi + Math.imul(ah6, bh5) | 0;\n lo = lo + Math.imul(al5, bl6) | 0;\n mid = mid + Math.imul(al5, bh6) | 0;\n mid = mid + Math.imul(ah5, bl6) | 0;\n hi = hi + Math.imul(ah5, bh6) | 0;\n lo = lo + Math.imul(al4, bl7) | 0;\n mid = mid + Math.imul(al4, bh7) | 0;\n mid = mid + Math.imul(ah4, bl7) | 0;\n hi = hi + Math.imul(ah4, bh7) | 0;\n lo = lo + Math.imul(al3, bl8) | 0;\n mid = mid + Math.imul(al3, bh8) | 0;\n mid = mid + Math.imul(ah3, bl8) | 0;\n hi = hi + Math.imul(ah3, bh8) | 0;\n lo = lo + Math.imul(al2, bl9) | 0;\n mid = mid + Math.imul(al2, bh9) | 0;\n mid = mid + Math.imul(ah2, bl9) | 0;\n hi = hi + Math.imul(ah2, bh9) | 0;\n var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = mid + Math.imul(ah9, bl3) | 0;\n hi = Math.imul(ah9, bh3);\n lo = lo + Math.imul(al8, bl4) | 0;\n mid = mid + Math.imul(al8, bh4) | 0;\n mid = mid + Math.imul(ah8, bl4) | 0;\n hi = hi + Math.imul(ah8, bh4) | 0;\n lo = lo + Math.imul(al7, bl5) | 0;\n mid = mid + Math.imul(al7, bh5) | 0;\n mid = mid + Math.imul(ah7, bl5) | 0;\n hi = hi + Math.imul(ah7, bh5) | 0;\n lo = lo + Math.imul(al6, bl6) | 0;\n mid = mid + Math.imul(al6, bh6) | 0;\n mid = mid + Math.imul(ah6, bl6) | 0;\n hi = hi + Math.imul(ah6, bh6) | 0;\n lo = lo + Math.imul(al5, bl7) | 0;\n mid = mid + Math.imul(al5, bh7) | 0;\n mid = mid + Math.imul(ah5, bl7) | 0;\n hi = hi + Math.imul(ah5, bh7) | 0;\n lo = lo + Math.imul(al4, bl8) | 0;\n mid = mid + Math.imul(al4, bh8) | 0;\n mid = mid + Math.imul(ah4, bl8) | 0;\n hi = hi + Math.imul(ah4, bh8) | 0;\n lo = lo + Math.imul(al3, bl9) | 0;\n mid = mid + Math.imul(al3, bh9) | 0;\n mid = mid + Math.imul(ah3, bl9) | 0;\n hi = hi + Math.imul(ah3, bh9) | 0;\n var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = mid + Math.imul(ah9, bl4) | 0;\n hi = Math.imul(ah9, bh4);\n lo = lo + Math.imul(al8, bl5) | 0;\n mid = mid + Math.imul(al8, bh5) | 0;\n mid = mid + Math.imul(ah8, bl5) | 0;\n hi = hi + Math.imul(ah8, bh5) | 0;\n lo = lo + Math.imul(al7, bl6) | 0;\n mid = mid + Math.imul(al7, bh6) | 0;\n mid = mid + Math.imul(ah7, bl6) | 0;\n hi = hi + Math.imul(ah7, bh6) | 0;\n lo = lo + Math.imul(al6, bl7) | 0;\n mid = mid + Math.imul(al6, bh7) | 0;\n mid = mid + Math.imul(ah6, bl7) | 0;\n hi = hi + Math.imul(ah6, bh7) | 0;\n lo = lo + Math.imul(al5, bl8) | 0;\n mid = mid + Math.imul(al5, bh8) | 0;\n mid = mid + Math.imul(ah5, bl8) | 0;\n hi = hi + Math.imul(ah5, bh8) | 0;\n lo = lo + Math.imul(al4, bl9) | 0;\n mid = mid + Math.imul(al4, bh9) | 0;\n mid = mid + Math.imul(ah4, bl9) | 0;\n hi = hi + Math.imul(ah4, bh9) | 0;\n var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = mid + Math.imul(ah9, bl5) | 0;\n hi = Math.imul(ah9, bh5);\n lo = lo + Math.imul(al8, bl6) | 0;\n mid = mid + Math.imul(al8, bh6) | 0;\n mid = mid + Math.imul(ah8, bl6) | 0;\n hi = hi + Math.imul(ah8, bh6) | 0;\n lo = lo + Math.imul(al7, bl7) | 0;\n mid = mid + Math.imul(al7, bh7) | 0;\n mid = mid + Math.imul(ah7, bl7) | 0;\n hi = hi + Math.imul(ah7, bh7) | 0;\n lo = lo + Math.imul(al6, bl8) | 0;\n mid = mid + Math.imul(al6, bh8) | 0;\n mid = mid + Math.imul(ah6, bl8) | 0;\n hi = hi + Math.imul(ah6, bh8) | 0;\n lo = lo + Math.imul(al5, bl9) | 0;\n mid = mid + Math.imul(al5, bh9) | 0;\n mid = mid + Math.imul(ah5, bl9) | 0;\n hi = hi + Math.imul(ah5, bh9) | 0;\n var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = mid + Math.imul(ah9, bl6) | 0;\n hi = Math.imul(ah9, bh6);\n lo = lo + Math.imul(al8, bl7) | 0;\n mid = mid + Math.imul(al8, bh7) | 0;\n mid = mid + Math.imul(ah8, bl7) | 0;\n hi = hi + Math.imul(ah8, bh7) | 0;\n lo = lo + Math.imul(al7, bl8) | 0;\n mid = mid + Math.imul(al7, bh8) | 0;\n mid = mid + Math.imul(ah7, bl8) | 0;\n hi = hi + Math.imul(ah7, bh8) | 0;\n lo = lo + Math.imul(al6, bl9) | 0;\n mid = mid + Math.imul(al6, bh9) | 0;\n mid = mid + Math.imul(ah6, bl9) | 0;\n hi = hi + Math.imul(ah6, bh9) | 0;\n var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = mid + Math.imul(ah9, bl7) | 0;\n hi = Math.imul(ah9, bh7);\n lo = lo + Math.imul(al8, bl8) | 0;\n mid = mid + Math.imul(al8, bh8) | 0;\n mid = mid + Math.imul(ah8, bl8) | 0;\n hi = hi + Math.imul(ah8, bh8) | 0;\n lo = lo + Math.imul(al7, bl9) | 0;\n mid = mid + Math.imul(al7, bh9) | 0;\n mid = mid + Math.imul(ah7, bl9) | 0;\n hi = hi + Math.imul(ah7, bh9) | 0;\n var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = mid + Math.imul(ah9, bl8) | 0;\n hi = Math.imul(ah9, bh8);\n lo = lo + Math.imul(al8, bl9) | 0;\n mid = mid + Math.imul(al8, bh9) | 0;\n mid = mid + Math.imul(ah8, bl9) | 0;\n hi = hi + Math.imul(ah8, bh9) | 0;\n var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = mid + Math.imul(ah9, bl9) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0;\n c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n var lo = r & 0x3ffffff;\n ncarry = ncarry + (r / 0x4000000 | 0) | 0;\n lo = lo + rword | 0;\n rword = lo & 0x3ffffff;\n ncarry = ncarry + (lo >>> 26) | 0;\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n FFTM.prototype.guessLen13b = function guessLen13b(n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\n };\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf(num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += w / 0x4000000 | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n if (r !== 0) {\n var carry = 0;\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\n };\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = carry << 26 - r | word >>> r;\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\n };\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn(bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - (right / 0x4000000 | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n x1.iushrn(1);\n }\n }\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n x2.iushrn(1);\n }\n }\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n a.isub(b);\n } while (true);\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn(bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp(num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp(num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red(num) {\n return new Red(num);\n };\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime(name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n this.tmp = this._tmp();\n }\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + (lo / 0x4000000 | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\n };\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n return res._forceRed(this);\n };\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","var parseKeys = require('parse-asn1');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar BN = require('bn.js');\nvar crt = require('browserify-rsa');\nvar createHash = require('create-hash');\nvar withPublic = require('./withPublic');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n if (privateKey.padding) {\n padding = privateKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n var key = parseKeys(privateKey);\n var k = key.modulus.byteLength();\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n var msg;\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n if (padding === 4) {\n return oaep(key, msg);\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n return msg;\n } else {\n throw new Error('unknown padding');\n }\n};\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\n var maskedSeed = msg.slice(1, hLen + 1);\n var maskedDb = msg.slice(hLen + 1);\n var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n var i = hLen;\n while (db[i] === 0) {\n i++;\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\n return db.slice(i);\n}\nfunction pkcs1(key, msg, reverse) {\n var p1 = msg.slice(0, 2);\n var i = 2;\n var status = 0;\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\n }\n var ps = msg.slice(2, i - 1);\n if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) {\n status++;\n }\n if (ps.length < 8) {\n status++;\n }\n if (status) {\n throw new Error('decryption error');\n }\n return msg.slice(i);\n}\nfunction compare(a, b) {\n a = Buffer.from(a);\n b = Buffer.from(b);\n var dif = 0;\n var len = a.length;\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n var i = -1;\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n return dif;\n}","var parseKeys = require('parse-asn1');\nvar randomBytes = require('randombytes');\nvar createHash = require('create-hash');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar BN = require('bn.js');\nvar withPublic = require('./withPublic');\nvar crt = require('browserify-rsa');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function publicEncrypt(publicKey, msg, reverse) {\n var padding;\n if (publicKey.padding) {\n padding = publicKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n var key = parseKeys(publicKey);\n var paddedMsg;\n if (padding === 4) {\n paddedMsg = oaep(key, msg);\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n paddedMsg = new BN(msg);\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus');\n }\n } else {\n throw new Error('unknown padding');\n }\n if (reverse) {\n return crt(paddedMsg, key);\n } else {\n return withPublic(paddedMsg, key);\n }\n};\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var mLen = msg.length;\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n var hLen2 = 2 * hLen;\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long');\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2);\n var dblen = k - hLen - 1;\n var seed = randomBytes(hLen);\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k));\n}\nfunction pkcs1(key, msg, reverse) {\n var mLen = msg.length;\n var k = key.modulus.byteLength();\n if (mLen > k - 11) {\n throw new Error('message too long');\n }\n var ps;\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff);\n } else {\n ps = nonZero(k - mLen - 3);\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k));\n}\nfunction nonZero(len) {\n var out = Buffer.allocUnsafe(len);\n var i = 0;\n var cache = randomBytes(len * 2);\n var cur = 0;\n var num;\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2);\n cur = 0;\n }\n num = cache[cur++];\n if (num) {\n out[i++] = num;\n }\n }\n return out;\n}","var BN = require('bn.js');\nvar Buffer = require('safe-buffer').Buffer;\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\nmodule.exports = withPublic;","module.exports = function xor(a, b) {\n var len = a.length;\n var i = -1;\n while (++i < len) {\n a[i] ^= b[i];\n }\n return a;\n};","var now = require('performance-now'),\n root = typeof window === 'undefined' ? global : window,\n vendors = ['moz', 'webkit'],\n suffix = 'AnimationFrame',\n raf = root['request' + suffix],\n caf = root['cancel' + suffix] || root['cancelRequest' + suffix];\nfor (var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix];\n caf = root[vendors[i] + 'Cancel' + suffix] || root[vendors[i] + 'CancelRequest' + suffix];\n}\n\n// Some versions of FF have rAF but not cAF\nif (!raf || !caf) {\n var last = 0,\n id = 0,\n queue = [],\n frameDuration = 1000 / 60;\n raf = function (callback) {\n if (queue.length === 0) {\n var _now = now(),\n next = Math.max(0, frameDuration - (_now - last));\n last = next + _now;\n setTimeout(function () {\n var cp = queue.slice(0);\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0;\n for (var i = 0; i < cp.length; i++) {\n if (!cp[i].cancelled) {\n try {\n cp[i].callback(last);\n } catch (e) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n }\n }\n }, Math.round(next));\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n });\n return id;\n };\n caf = function (handle) {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].handle === handle) {\n queue[i].cancelled = true;\n }\n }\n };\n}\nmodule.exports = function (fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn);\n};\nmodule.exports.cancel = function () {\n caf.apply(root, arguments);\n};\nmodule.exports.polyfill = function (object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf;\n object.cancelAnimationFrame = caf;\n};","'use strict';\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536;\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295;\nfunction oldBrowser() {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11');\n}\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = global.crypto || global.msCrypto;\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes;\n} else {\n module.exports = oldBrowser;\n}\nfunction randomBytes(size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes');\n var bytes = Buffer.allocUnsafe(size);\n if (size > 0) {\n // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) {\n // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n }\n } else {\n crypto.getRandomValues(bytes);\n }\n }\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes);\n });\n }\n return bytes;\n}","'use strict';\n\nfunction oldBrowser() {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11');\n}\nvar safeBuffer = require('safe-buffer');\nvar randombytes = require('randombytes');\nvar Buffer = safeBuffer.Buffer;\nvar kBufferMaxLength = safeBuffer.kMaxLength;\nvar crypto = global.crypto || global.msCrypto;\nvar kMaxUint32 = Math.pow(2, 32) - 1;\nfunction assertOffset(offset, length) {\n if (typeof offset !== 'number' || offset !== offset) {\n // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number');\n }\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32');\n }\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range');\n }\n}\nfunction assertSize(size, offset, length) {\n if (typeof size !== 'number' || size !== size) {\n // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number');\n }\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32');\n }\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small');\n }\n}\nif (crypto && crypto.getRandomValues || !process.browser) {\n exports.randomFill = randomFill;\n exports.randomFillSync = randomFillSync;\n} else {\n exports.randomFill = oldBrowser;\n exports.randomFillSync = oldBrowser;\n}\nfunction randomFill(buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n if (typeof offset === 'function') {\n cb = offset;\n offset = 0;\n size = buf.length;\n } else if (typeof size === 'function') {\n cb = size;\n size = buf.length - offset;\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function');\n }\n assertOffset(offset, buf.length);\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size, cb);\n}\nfunction actualFill(buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer;\n var uint = new Uint8Array(ourBuf, offset, size);\n crypto.getRandomValues(uint);\n if (cb) {\n process.nextTick(function () {\n cb(null, buf);\n });\n return;\n }\n return buf;\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err);\n }\n bytes.copy(buf, offset);\n cb(null, buf);\n });\n return;\n }\n var bytes = randombytes(size);\n bytes.copy(buf, offset);\n return buf;\n}\nfunction randomFillSync(buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n assertOffset(offset, buf.length);\n if (size === undefined) size = buf.length - offset;\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _arrays = _interopRequireDefault(require(\"shallow-equal/arrays\"));\nvar _Autowhatever = _interopRequireDefault(require(\"./Autowhatever\"));\nvar _theme = require(\"./theme\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar alwaysTrue = function alwaysTrue() {\n return true;\n};\nvar defaultShouldRenderSuggestions = function defaultShouldRenderSuggestions(value) {\n return value.trim().length > 0;\n};\nvar defaultRenderSuggestionsContainer = function defaultRenderSuggestionsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\nvar REASON_SUGGESTIONS_REVEALED = 'suggestions-revealed';\nvar REASON_SUGGESTIONS_UPDATED = 'suggestions-updated';\nvar REASON_SUGGESTION_SELECTED = 'suggestion-selected';\nvar REASON_INPUT_FOCUSED = 'input-focused';\nvar REASON_INPUT_CHANGED = 'input-changed';\nvar REASON_INPUT_BLURRED = 'input-blurred';\nvar REASON_ESCAPE_PRESSED = 'escape-pressed';\nvar Autosuggest = /*#__PURE__*/function (_Component) {\n _inherits(Autosuggest, _Component);\n var _super = _createSuper(Autosuggest);\n function Autosuggest(_ref2) {\n var _this;\n var _alwaysRenderSuggestions = _ref2.alwaysRenderSuggestions;\n _classCallCheck(this, Autosuggest);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseDown\", function (event) {\n _this.justClickedOnSuggestionsContainer = false;\n var node = event.detail && event.detail.target ||\n // This is for testing only. Please show me a better way to emulate this.\n event.target;\n while (node !== null && node !== document) {\n if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n // Suggestion was clicked\n return;\n }\n if (node === _this.suggestionsContainer) {\n // Something else inside suggestions container was clicked\n _this.justClickedOnSuggestionsContainer = true;\n return;\n }\n node = node.parentNode;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"storeAutowhateverRef\", function (autowhatever) {\n if (autowhatever !== null) {\n _this.autowhatever = autowhatever;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseEnter\", function (event, _ref3) {\n var sectionIndex = _ref3.sectionIndex,\n itemIndex = _ref3.itemIndex;\n _this.updateHighlightedSuggestion(sectionIndex, itemIndex);\n if (event.target === _this.pressedSuggestion) {\n _this.justSelectedSuggestion = true;\n }\n _this.justMouseEntered = true;\n setTimeout(function () {\n _this.justMouseEntered = false;\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"highlightFirstSuggestion\", function () {\n _this.updateHighlightedSuggestion(_this.props.multiSection ? 0 : null, 0);\n });\n _defineProperty(_assertThisInitialized(_this), \"onDocumentMouseUp\", function () {\n if (_this.pressedSuggestion && !_this.justSelectedSuggestion) {\n _this.input.focus();\n }\n _this.pressedSuggestion = null;\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseDown\", function (event) {\n // Checking if this.justSelectedSuggestion is already true to not duplicate touch events in chrome\n // See: https://github.com/facebook/react/issues/9809#issuecomment-413978405\n if (!_this.justSelectedSuggestion) {\n _this.justSelectedSuggestion = true;\n _this.pressedSuggestion = event.target;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionsClearRequested\", function () {\n var onSuggestionsClearRequested = _this.props.onSuggestionsClearRequested;\n onSuggestionsClearRequested && onSuggestionsClearRequested();\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionSelected\", function (event, data) {\n var _this$props = _this.props,\n alwaysRenderSuggestions = _this$props.alwaysRenderSuggestions,\n onSuggestionSelected = _this$props.onSuggestionSelected,\n onSuggestionsFetchRequested = _this$props.onSuggestionsFetchRequested;\n onSuggestionSelected && onSuggestionSelected(event, data);\n var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(data.suggestion);\n if (alwaysRenderSuggestions || keepSuggestionsOnSelect) {\n onSuggestionsFetchRequested({\n value: data.suggestionValue,\n reason: REASON_SUGGESTION_SELECTED\n });\n } else {\n _this.onSuggestionsClearRequested();\n }\n _this.resetHighlightedSuggestion();\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionClick\", function (event) {\n var _this$props2 = _this.props,\n alwaysRenderSuggestions = _this$props2.alwaysRenderSuggestions,\n focusInputOnSuggestionClick = _this$props2.focusInputOnSuggestionClick;\n var _this$getSuggestionIn = _this.getSuggestionIndices(_this.findSuggestionElement(event.target)),\n sectionIndex = _this$getSuggestionIn.sectionIndex,\n suggestionIndex = _this$getSuggestionIn.suggestionIndex;\n var clickedSuggestion = _this.getSuggestion(sectionIndex, suggestionIndex);\n var clickedSuggestionValue = _this.props.getSuggestionValue(clickedSuggestion);\n _this.maybeCallOnChange(event, clickedSuggestionValue, 'click');\n _this.onSuggestionSelected(event, {\n suggestion: clickedSuggestion,\n suggestionValue: clickedSuggestionValue,\n suggestionIndex: suggestionIndex,\n sectionIndex: sectionIndex,\n method: 'click'\n });\n var keepSuggestionsOnSelect = _this.props.shouldKeepSuggestionsOnSelect(clickedSuggestion);\n if (!(alwaysRenderSuggestions || keepSuggestionsOnSelect)) {\n _this.closeSuggestions();\n }\n if (focusInputOnSuggestionClick === true) {\n _this.input.focus();\n } else {\n _this.onBlur();\n }\n setTimeout(function () {\n _this.justSelectedSuggestion = false;\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n var _this$props3 = _this.props,\n inputProps = _this$props3.inputProps,\n shouldRenderSuggestions = _this$props3.shouldRenderSuggestions;\n var value = inputProps.value,\n onBlur = inputProps.onBlur;\n var highlightedSuggestion = _this.getHighlightedSuggestion();\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_BLURRED);\n _this.setState({\n isFocused: false,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n });\n onBlur && onBlur(_this.blurEvent, {\n highlightedSuggestion: highlightedSuggestion\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionMouseLeave\", function (event) {\n _this.resetHighlightedSuggestion(false); // shouldResetValueBeforeUpDown\n\n if (_this.justSelectedSuggestion && event.target === _this.pressedSuggestion) {\n _this.justSelectedSuggestion = false;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchStart\", function () {\n _this.justSelectedSuggestion = true; // todo: event.preventDefault when https://github.com/facebook/react/issues/2043\n // todo: gets released so onSuggestionMouseDown won't fire in chrome\n });\n _defineProperty(_assertThisInitialized(_this), \"onSuggestionTouchMove\", function () {\n _this.justSelectedSuggestion = false;\n _this.pressedSuggestion = null;\n _this.input.focus();\n });\n _defineProperty(_assertThisInitialized(_this), \"itemProps\", function (_ref4) {\n var sectionIndex = _ref4.sectionIndex,\n itemIndex = _ref4.itemIndex;\n return {\n 'data-section-index': sectionIndex,\n 'data-suggestion-index': itemIndex,\n onMouseEnter: _this.onSuggestionMouseEnter,\n onMouseLeave: _this.onSuggestionMouseLeave,\n onMouseDown: _this.onSuggestionMouseDown,\n onTouchStart: _this.onSuggestionTouchStart,\n onTouchMove: _this.onSuggestionTouchMove,\n onClick: _this.onSuggestionClick\n };\n });\n _defineProperty(_assertThisInitialized(_this), \"renderSuggestionsContainer\", function (_ref5) {\n var containerProps = _ref5.containerProps,\n children = _ref5.children;\n var renderSuggestionsContainer = _this.props.renderSuggestionsContainer;\n return renderSuggestionsContainer({\n containerProps: containerProps,\n children: children,\n query: _this.getQuery()\n });\n });\n _this.state = {\n isFocused: false,\n isCollapsed: !_alwaysRenderSuggestions,\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null\n };\n _this.justPressedUpDown = false;\n _this.justMouseEntered = false;\n _this.pressedSuggestion = null;\n return _this;\n }\n _createClass(Autosuggest, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('mousedown', this.onDocumentMouseDown);\n document.addEventListener('mouseup', this.onDocumentMouseUp);\n this.input = this.autowhatever.input;\n this.suggestionsContainer = this.autowhatever.itemsContainer;\n } // eslint-disable-next-line camelcase, react/sort-comp\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n // When highlightFirstSuggestion becomes deactivated, if the first suggestion was\n // set, we should reset the suggestion back to the unselected default state.\n var shouldResetHighlighting = this.state.highlightedSuggestionIndex === 0 && this.props.highlightFirstSuggestion && !nextProps.highlightFirstSuggestion;\n if ((0, _arrays[\"default\"])(nextProps.suggestions, this.props.suggestions)) {\n if (nextProps.highlightFirstSuggestion && nextProps.suggestions.length > 0 && this.justPressedUpDown === false && this.justMouseEntered === false) {\n this.highlightFirstSuggestion();\n } else if (shouldResetHighlighting) {\n this.resetHighlightedSuggestion();\n }\n } else {\n if (this.willRenderSuggestions(nextProps, REASON_SUGGESTIONS_UPDATED)) {\n if (this.state.isCollapsed && !this.justSelectedSuggestion) {\n this.revealSuggestions();\n }\n if (shouldResetHighlighting) {\n this.resetHighlightedSuggestion();\n }\n } else {\n this.resetHighlightedSuggestion();\n }\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props4 = this.props,\n suggestions = _this$props4.suggestions,\n onSuggestionHighlighted = _this$props4.onSuggestionHighlighted,\n highlightFirstSuggestion = _this$props4.highlightFirstSuggestion;\n if (!(0, _arrays[\"default\"])(suggestions, prevProps.suggestions) && suggestions.length > 0 && highlightFirstSuggestion) {\n this.highlightFirstSuggestion();\n return;\n }\n if (onSuggestionHighlighted) {\n var highlightedSuggestion = this.getHighlightedSuggestion();\n var prevHighlightedSuggestion = prevState.highlightedSuggestion;\n if (highlightedSuggestion != prevHighlightedSuggestion) {\n onSuggestionHighlighted({\n suggestion: highlightedSuggestion\n });\n }\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('mousedown', this.onDocumentMouseDown);\n document.removeEventListener('mouseup', this.onDocumentMouseUp);\n }\n }, {\n key: \"updateHighlightedSuggestion\",\n value: function updateHighlightedSuggestion(sectionIndex, suggestionIndex, prevValue) {\n var _this2 = this;\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n if (suggestionIndex === null) {\n valueBeforeUpDown = null;\n } else if (valueBeforeUpDown === null && typeof prevValue !== 'undefined') {\n valueBeforeUpDown = prevValue;\n }\n return {\n highlightedSectionIndex: sectionIndex,\n highlightedSuggestionIndex: suggestionIndex,\n highlightedSuggestion: suggestionIndex === null ? null : _this2.getSuggestion(sectionIndex, suggestionIndex),\n valueBeforeUpDown: valueBeforeUpDown\n };\n });\n }\n }, {\n key: \"resetHighlightedSuggestion\",\n value: function resetHighlightedSuggestion() {\n var shouldResetValueBeforeUpDown = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.setState(function (state) {\n var valueBeforeUpDown = state.valueBeforeUpDown;\n return {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: shouldResetValueBeforeUpDown ? null : valueBeforeUpDown\n };\n });\n }\n }, {\n key: \"revealSuggestions\",\n value: function revealSuggestions() {\n this.setState({\n isCollapsed: false\n });\n }\n }, {\n key: \"closeSuggestions\",\n value: function closeSuggestions() {\n this.setState({\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null,\n valueBeforeUpDown: null,\n isCollapsed: true\n });\n }\n }, {\n key: \"getSuggestion\",\n value: function getSuggestion(sectionIndex, suggestionIndex) {\n var _this$props5 = this.props,\n suggestions = _this$props5.suggestions,\n multiSection = _this$props5.multiSection,\n getSectionSuggestions = _this$props5.getSectionSuggestions;\n if (multiSection) {\n return getSectionSuggestions(suggestions[sectionIndex])[suggestionIndex];\n }\n return suggestions[suggestionIndex];\n }\n }, {\n key: \"getHighlightedSuggestion\",\n value: function getHighlightedSuggestion() {\n var _this$state = this.state,\n highlightedSectionIndex = _this$state.highlightedSectionIndex,\n highlightedSuggestionIndex = _this$state.highlightedSuggestionIndex;\n if (highlightedSuggestionIndex === null) {\n return null;\n }\n return this.getSuggestion(highlightedSectionIndex, highlightedSuggestionIndex);\n }\n }, {\n key: \"getSuggestionValueByIndex\",\n value: function getSuggestionValueByIndex(sectionIndex, suggestionIndex) {\n var getSuggestionValue = this.props.getSuggestionValue;\n return getSuggestionValue(this.getSuggestion(sectionIndex, suggestionIndex));\n }\n }, {\n key: \"getSuggestionIndices\",\n value: function getSuggestionIndices(suggestionElement) {\n var sectionIndex = suggestionElement.getAttribute('data-section-index');\n var suggestionIndex = suggestionElement.getAttribute('data-suggestion-index');\n return {\n sectionIndex: typeof sectionIndex === 'string' ? parseInt(sectionIndex, 10) : null,\n suggestionIndex: parseInt(suggestionIndex, 10)\n };\n }\n }, {\n key: \"findSuggestionElement\",\n value: function findSuggestionElement(startNode) {\n var node = startNode;\n do {\n if (node.getAttribute && node.getAttribute('data-suggestion-index') !== null) {\n return node;\n }\n node = node.parentNode;\n } while (node !== null);\n console.error('Clicked element:', startNode); // eslint-disable-line no-console\n\n throw new Error(\"Couldn't find suggestion element\");\n }\n }, {\n key: \"maybeCallOnChange\",\n value: function maybeCallOnChange(event, newValue, method) {\n var _this$props$inputProp = this.props.inputProps,\n value = _this$props$inputProp.value,\n onChange = _this$props$inputProp.onChange;\n if (newValue !== value) {\n onChange(event, {\n newValue: newValue,\n method: method\n });\n }\n }\n }, {\n key: \"willRenderSuggestions\",\n value: function willRenderSuggestions(props, reason) {\n var suggestions = props.suggestions,\n inputProps = props.inputProps,\n shouldRenderSuggestions = props.shouldRenderSuggestions;\n var value = inputProps.value;\n return suggestions.length > 0 && shouldRenderSuggestions(value, reason);\n }\n }, {\n key: \"getQuery\",\n value: function getQuery() {\n var inputProps = this.props.inputProps;\n var value = inputProps.value;\n var valueBeforeUpDown = this.state.valueBeforeUpDown;\n return (valueBeforeUpDown === null ? value : valueBeforeUpDown).trim();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n var _this$props6 = this.props,\n suggestions = _this$props6.suggestions,\n renderInputComponent = _this$props6.renderInputComponent,\n onSuggestionsFetchRequested = _this$props6.onSuggestionsFetchRequested,\n renderSuggestion = _this$props6.renderSuggestion,\n inputProps = _this$props6.inputProps,\n multiSection = _this$props6.multiSection,\n renderSectionTitle = _this$props6.renderSectionTitle,\n id = _this$props6.id,\n getSectionSuggestions = _this$props6.getSectionSuggestions,\n theme = _this$props6.theme,\n getSuggestionValue = _this$props6.getSuggestionValue,\n alwaysRenderSuggestions = _this$props6.alwaysRenderSuggestions,\n highlightFirstSuggestion = _this$props6.highlightFirstSuggestion,\n containerProps = _this$props6.containerProps;\n var _this$state2 = this.state,\n isFocused = _this$state2.isFocused,\n isCollapsed = _this$state2.isCollapsed,\n highlightedSectionIndex = _this$state2.highlightedSectionIndex,\n highlightedSuggestionIndex = _this$state2.highlightedSuggestionIndex,\n valueBeforeUpDown = _this$state2.valueBeforeUpDown;\n var shouldRenderSuggestions = alwaysRenderSuggestions ? alwaysTrue : this.props.shouldRenderSuggestions;\n var value = inputProps.value,\n _onFocus = inputProps.onFocus,\n _onKeyDown = inputProps.onKeyDown;\n var willRenderSuggestions = this.willRenderSuggestions(this.props, 'render');\n var isOpen = alwaysRenderSuggestions || isFocused && !isCollapsed && willRenderSuggestions;\n var items = isOpen ? suggestions : [];\n var autowhateverInputProps = _objectSpread({}, inputProps, {\n onFocus: function onFocus(event) {\n if (!_this3.justSelectedSuggestion && !_this3.justClickedOnSuggestionsContainer) {\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_FOCUSED);\n _this3.setState({\n isFocused: true,\n isCollapsed: !shouldRender\n });\n _onFocus && _onFocus(event);\n if (shouldRender) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_INPUT_FOCUSED\n });\n }\n }\n },\n onBlur: function onBlur(event) {\n if (_this3.justClickedOnSuggestionsContainer) {\n _this3.input.focus();\n return;\n }\n _this3.blurEvent = event;\n if (!_this3.justSelectedSuggestion) {\n _this3.onBlur();\n _this3.onSuggestionsClearRequested();\n }\n },\n onChange: function onChange(event) {\n var value = event.target.value;\n var shouldRender = shouldRenderSuggestions(value, REASON_INPUT_CHANGED);\n _this3.maybeCallOnChange(event, value, 'type');\n if (_this3.suggestionsContainer) {\n _this3.suggestionsContainer.scrollTop = 0;\n }\n _this3.setState(_objectSpread({}, highlightFirstSuggestion ? {} : {\n highlightedSectionIndex: null,\n highlightedSuggestionIndex: null,\n highlightedSuggestion: null\n }, {\n valueBeforeUpDown: null,\n isCollapsed: !shouldRender\n }));\n if (shouldRender) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_INPUT_CHANGED\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n },\n onKeyDown: function onKeyDown(event, data) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case 40: // ArrowDown\n\n case 38:\n // ArrowUp\n if (isCollapsed) {\n if (shouldRenderSuggestions(value, REASON_SUGGESTIONS_REVEALED)) {\n onSuggestionsFetchRequested({\n value: value,\n reason: REASON_SUGGESTIONS_REVEALED\n });\n _this3.revealSuggestions();\n event.preventDefault(); // We act on the key.\n }\n } else if (suggestions.length > 0) {\n var newHighlightedSectionIndex = data.newHighlightedSectionIndex,\n newHighlightedItemIndex = data.newHighlightedItemIndex;\n var newValue;\n if (newHighlightedItemIndex === null) {\n // valueBeforeUpDown can be null if, for example, user\n // hovers on the first suggestion and then pressed Up.\n // If that happens, use the original input value.\n newValue = valueBeforeUpDown === null ? value : valueBeforeUpDown;\n } else {\n newValue = _this3.getSuggestionValueByIndex(newHighlightedSectionIndex, newHighlightedItemIndex);\n }\n _this3.updateHighlightedSuggestion(newHighlightedSectionIndex, newHighlightedItemIndex, value);\n _this3.maybeCallOnChange(event, newValue, keyCode === 40 ? 'down' : 'up');\n event.preventDefault(); // We act on the key.\n }\n _this3.justPressedUpDown = true;\n setTimeout(function () {\n _this3.justPressedUpDown = false;\n });\n break;\n // Enter\n\n case 13:\n {\n // See #388\n if (event.keyCode === 229) {\n break;\n }\n var highlightedSuggestion = _this3.getHighlightedSuggestion();\n if (isOpen && !alwaysRenderSuggestions) {\n _this3.closeSuggestions();\n }\n if (highlightedSuggestion != null) {\n event.preventDefault();\n var _newValue = getSuggestionValue(highlightedSuggestion);\n _this3.maybeCallOnChange(event, _newValue, 'enter');\n _this3.onSuggestionSelected(event, {\n suggestion: highlightedSuggestion,\n suggestionValue: _newValue,\n suggestionIndex: highlightedSuggestionIndex,\n sectionIndex: highlightedSectionIndex,\n method: 'enter'\n });\n _this3.justSelectedSuggestion = true;\n setTimeout(function () {\n _this3.justSelectedSuggestion = false;\n });\n }\n break;\n }\n // Escape\n\n case 27:\n {\n if (isOpen) {\n // If input.type === 'search', the browser clears the input\n // when Escape is pressed. We want to disable this default\n // behaviour so that, when suggestions are shown, we just hide\n // them, without clearing the input.\n event.preventDefault();\n }\n var willCloseSuggestions = isOpen && !alwaysRenderSuggestions;\n if (valueBeforeUpDown === null) {\n // Didn't interact with Up/Down\n if (!willCloseSuggestions) {\n var _newValue2 = '';\n _this3.maybeCallOnChange(event, _newValue2, 'escape');\n if (shouldRenderSuggestions(_newValue2, REASON_ESCAPE_PRESSED)) {\n onSuggestionsFetchRequested({\n value: _newValue2,\n reason: REASON_ESCAPE_PRESSED\n });\n } else {\n _this3.onSuggestionsClearRequested();\n }\n }\n } else {\n // Interacted with Up/Down\n _this3.maybeCallOnChange(event, valueBeforeUpDown, 'escape');\n }\n if (willCloseSuggestions) {\n _this3.onSuggestionsClearRequested();\n _this3.closeSuggestions();\n } else {\n _this3.resetHighlightedSuggestion();\n }\n break;\n }\n }\n _onKeyDown && _onKeyDown(event);\n }\n });\n var renderSuggestionData = {\n query: this.getQuery()\n };\n return /*#__PURE__*/_react[\"default\"].createElement(_Autowhatever[\"default\"], {\n multiSection: multiSection,\n items: items,\n renderInputComponent: renderInputComponent,\n renderItemsContainer: this.renderSuggestionsContainer,\n renderItem: renderSuggestion,\n renderItemData: renderSuggestionData,\n renderSectionTitle: renderSectionTitle,\n getSectionItems: getSectionSuggestions,\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedSuggestionIndex,\n containerProps: containerProps,\n inputProps: autowhateverInputProps,\n itemProps: this.itemProps,\n theme: (0, _theme.mapToAutowhateverTheme)(theme),\n id: id,\n ref: this.storeAutowhateverRef\n });\n }\n }]);\n return Autosuggest;\n}(_react.Component);\nexports[\"default\"] = Autosuggest;\n_defineProperty(Autosuggest, \"propTypes\", {\n suggestions: _propTypes[\"default\"].array.isRequired,\n onSuggestionsFetchRequested: function onSuggestionsFetchRequested(props, propName) {\n var onSuggestionsFetchRequested = props[propName];\n if (typeof onSuggestionsFetchRequested !== 'function') {\n throw new Error(\"'onSuggestionsFetchRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsFetchRequestedProp\");\n }\n },\n onSuggestionsClearRequested: function onSuggestionsClearRequested(props, propName) {\n var onSuggestionsClearRequested = props[propName];\n if (props.alwaysRenderSuggestions === false && typeof onSuggestionsClearRequested !== 'function') {\n throw new Error(\"'onSuggestionsClearRequested' must be implemented. See: https://github.com/moroshko/react-autosuggest#onSuggestionsClearRequestedProp\");\n }\n },\n shouldKeepSuggestionsOnSelect: _propTypes[\"default\"].func,\n onSuggestionSelected: _propTypes[\"default\"].func,\n onSuggestionHighlighted: _propTypes[\"default\"].func,\n renderInputComponent: _propTypes[\"default\"].func,\n renderSuggestionsContainer: _propTypes[\"default\"].func,\n getSuggestionValue: _propTypes[\"default\"].func.isRequired,\n renderSuggestion: _propTypes[\"default\"].func.isRequired,\n inputProps: function inputProps(props, propName) {\n var inputProps = props[propName];\n if (!inputProps) {\n throw new Error(\"'inputProps' must be passed.\");\n }\n if (!Object.prototype.hasOwnProperty.call(inputProps, 'value')) {\n throw new Error(\"'inputProps' must have 'value'.\");\n }\n if (!Object.prototype.hasOwnProperty.call(inputProps, 'onChange')) {\n throw new Error(\"'inputProps' must have 'onChange'.\");\n }\n },\n shouldRenderSuggestions: _propTypes[\"default\"].func,\n alwaysRenderSuggestions: _propTypes[\"default\"].bool,\n multiSection: _propTypes[\"default\"].bool,\n renderSectionTitle: function renderSectionTitle(props, propName) {\n var renderSectionTitle = props[propName];\n if (props.multiSection === true && typeof renderSectionTitle !== 'function') {\n throw new Error(\"'renderSectionTitle' must be implemented. See: https://github.com/moroshko/react-autosuggest#renderSectionTitleProp\");\n }\n },\n getSectionSuggestions: function getSectionSuggestions(props, propName) {\n var getSectionSuggestions = props[propName];\n if (props.multiSection === true && typeof getSectionSuggestions !== 'function') {\n throw new Error(\"'getSectionSuggestions' must be implemented. See: https://github.com/moroshko/react-autosuggest#getSectionSuggestionsProp\");\n }\n },\n focusInputOnSuggestionClick: _propTypes[\"default\"].bool,\n highlightFirstSuggestion: _propTypes[\"default\"].bool,\n theme: _propTypes[\"default\"].object,\n id: _propTypes[\"default\"].string,\n containerProps: _propTypes[\"default\"].object // Arbitrary container props\n});\n_defineProperty(Autosuggest, \"defaultProps\", {\n renderSuggestionsContainer: defaultRenderSuggestionsContainer,\n shouldRenderSuggestions: defaultShouldRenderSuggestions,\n alwaysRenderSuggestions: false,\n multiSection: false,\n shouldKeepSuggestionsOnSelect: function shouldKeepSuggestionsOnSelect() {\n return false;\n },\n focusInputOnSuggestionClick: true,\n highlightFirstSuggestion: false,\n theme: _theme.defaultTheme,\n id: '1',\n containerProps: {}\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sectionIterator = _interopRequireDefault(require(\"section-iterator\"));\nvar _reactThemeable = _interopRequireDefault(require(\"react-themeable\"));\nvar _SectionTitle = _interopRequireDefault(require(\"./SectionTitle\"));\nvar _ItemList = _interopRequireDefault(require(\"./ItemList\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar emptyObject = {};\nvar defaultRenderInputComponent = function defaultRenderInputComponent(props) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"input\", props);\n};\nvar defaultRenderItemsContainer = function defaultRenderItemsContainer(_ref) {\n var containerProps = _ref.containerProps,\n children = _ref.children;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, children);\n};\nvar defaultTheme = {\n container: 'react-autowhatever__container',\n containerOpen: 'react-autowhatever__container--open',\n input: 'react-autowhatever__input',\n inputOpen: 'react-autowhatever__input--open',\n inputFocused: 'react-autowhatever__input--focused',\n itemsContainer: 'react-autowhatever__items-container',\n itemsContainerOpen: 'react-autowhatever__items-container--open',\n itemsList: 'react-autowhatever__items-list',\n item: 'react-autowhatever__item',\n itemFirst: 'react-autowhatever__item--first',\n itemHighlighted: 'react-autowhatever__item--highlighted',\n sectionContainer: 'react-autowhatever__section-container',\n sectionContainerFirst: 'react-autowhatever__section-container--first',\n sectionTitle: 'react-autowhatever__section-title'\n};\nvar Autowhatever = /*#__PURE__*/function (_Component) {\n _inherits(Autowhatever, _Component);\n var _super = _createSuper(Autowhatever);\n function Autowhatever(props) {\n var _this;\n _classCallCheck(this, Autowhatever);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"storeInputReference\", function (input) {\n if (input !== null) {\n _this.input = input;\n }\n var userRef = _this.props.inputProps.ref;\n if (userRef) {\n if (typeof userRef === 'function') {\n userRef(input);\n } else if (_typeof(userRef) === 'object' && Object.prototype.hasOwnProperty.call(userRef, 'current')) {\n userRef.current = input;\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"storeItemsContainerReference\", function (itemsContainer) {\n if (itemsContainer !== null) {\n _this.itemsContainer = itemsContainer;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onHighlightedItemChange\", function (highlightedItem) {\n _this.highlightedItem = highlightedItem;\n });\n _defineProperty(_assertThisInitialized(_this), \"getItemId\", function (sectionIndex, itemIndex) {\n if (itemIndex === null) {\n return null;\n }\n var id = _this.props.id;\n var section = sectionIndex === null ? '' : \"section-\".concat(sectionIndex);\n return \"react-autowhatever-\".concat(id, \"-\").concat(section, \"-item-\").concat(itemIndex);\n });\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n var inputProps = _this.props.inputProps;\n _this.setState({\n isInputFocused: true\n });\n inputProps.onFocus && inputProps.onFocus(event);\n });\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function (event) {\n var inputProps = _this.props.inputProps;\n _this.setState({\n isInputFocused: false\n });\n inputProps.onBlur && inputProps.onBlur(event);\n });\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n var _this$props = _this.props,\n inputProps = _this$props.inputProps,\n highlightedSectionIndex = _this$props.highlightedSectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex;\n var keyCode = event.keyCode;\n switch (keyCode) {\n case 40: // ArrowDown\n\n case 38:\n {\n // ArrowUp\n var nextPrev = keyCode === 40 ? 'next' : 'prev';\n var _this$sectionIterator = _this.sectionIterator[nextPrev]([highlightedSectionIndex, highlightedItemIndex]),\n _this$sectionIterator2 = _slicedToArray(_this$sectionIterator, 2),\n newHighlightedSectionIndex = _this$sectionIterator2[0],\n newHighlightedItemIndex = _this$sectionIterator2[1];\n inputProps.onKeyDown(event, {\n newHighlightedSectionIndex: newHighlightedSectionIndex,\n newHighlightedItemIndex: newHighlightedItemIndex\n });\n break;\n }\n default:\n inputProps.onKeyDown(event, {\n highlightedSectionIndex: highlightedSectionIndex,\n highlightedItemIndex: highlightedItemIndex\n });\n }\n });\n _this.highlightedItem = null;\n _this.state = {\n isInputFocused: false\n };\n _this.setSectionsItems(props);\n _this.setSectionIterator(props);\n _this.setTheme(props);\n return _this;\n }\n _createClass(Autowhatever, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.ensureHighlightedItemIsVisible();\n } // eslint-disable-next-line camelcase, react/sort-comp\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.items !== this.props.items) {\n this.setSectionsItems(nextProps);\n }\n if (nextProps.items !== this.props.items || nextProps.multiSection !== this.props.multiSection) {\n this.setSectionIterator(nextProps);\n }\n if (nextProps.theme !== this.props.theme) {\n this.setTheme(nextProps);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.ensureHighlightedItemIsVisible();\n }\n }, {\n key: \"setSectionsItems\",\n value: function setSectionsItems(props) {\n if (props.multiSection) {\n this.sectionsItems = props.items.map(function (section) {\n return props.getSectionItems(section);\n });\n this.sectionsLengths = this.sectionsItems.map(function (items) {\n return items.length;\n });\n this.allSectionsAreEmpty = this.sectionsLengths.every(function (itemsCount) {\n return itemsCount === 0;\n });\n }\n }\n }, {\n key: \"setSectionIterator\",\n value: function setSectionIterator(props) {\n this.sectionIterator = (0, _sectionIterator[\"default\"])({\n multiSection: props.multiSection,\n data: props.multiSection ? this.sectionsLengths : props.items.length\n });\n }\n }, {\n key: \"setTheme\",\n value: function setTheme(props) {\n this.theme = (0, _reactThemeable[\"default\"])(props.theme);\n }\n }, {\n key: \"renderSections\",\n value: function renderSections() {\n var _this2 = this;\n if (this.allSectionsAreEmpty) {\n return null;\n }\n var theme = this.theme;\n var _this$props2 = this.props,\n id = _this$props2.id,\n items = _this$props2.items,\n renderItem = _this$props2.renderItem,\n renderItemData = _this$props2.renderItemData,\n renderSectionTitle = _this$props2.renderSectionTitle,\n highlightedSectionIndex = _this$props2.highlightedSectionIndex,\n highlightedItemIndex = _this$props2.highlightedItemIndex,\n itemProps = _this$props2.itemProps;\n return items.map(function (section, sectionIndex) {\n var keyPrefix = \"react-autowhatever-\".concat(id, \"-\");\n var sectionKeyPrefix = \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n var isFirstSection = sectionIndex === 0; // `key` is provided by theme()\n\n /* eslint-disable react/jsx-key */\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"container\"), 'sectionContainer', isFirstSection && 'sectionContainerFirst'), /*#__PURE__*/_react[\"default\"].createElement(_SectionTitle[\"default\"], {\n section: section,\n renderSectionTitle: renderSectionTitle,\n theme: theme,\n sectionKeyPrefix: sectionKeyPrefix\n }), /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n items: _this2.sectionsItems[sectionIndex],\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n sectionIndex: sectionIndex,\n highlightedItemIndex: highlightedSectionIndex === sectionIndex ? highlightedItemIndex : null,\n onHighlightedItemChange: _this2.onHighlightedItemChange,\n getItemId: _this2.getItemId,\n theme: theme,\n keyPrefix: keyPrefix,\n ref: _this2.storeItemsListReference\n }));\n /* eslint-enable react/jsx-key */\n });\n }\n }, {\n key: \"renderItems\",\n value: function renderItems() {\n var items = this.props.items;\n if (items.length === 0) {\n return null;\n }\n var theme = this.theme;\n var _this$props3 = this.props,\n id = _this$props3.id,\n renderItem = _this$props3.renderItem,\n renderItemData = _this$props3.renderItemData,\n highlightedSectionIndex = _this$props3.highlightedSectionIndex,\n highlightedItemIndex = _this$props3.highlightedItemIndex,\n itemProps = _this$props3.itemProps;\n return /*#__PURE__*/_react[\"default\"].createElement(_ItemList[\"default\"], {\n items: items,\n itemProps: itemProps,\n renderItem: renderItem,\n renderItemData: renderItemData,\n highlightedItemIndex: highlightedSectionIndex === null ? highlightedItemIndex : null,\n onHighlightedItemChange: this.onHighlightedItemChange,\n getItemId: this.getItemId,\n theme: theme,\n keyPrefix: \"react-autowhatever-\".concat(id, \"-\")\n });\n }\n }, {\n key: \"ensureHighlightedItemIsVisible\",\n value: function ensureHighlightedItemIsVisible() {\n var highlightedItem = this.highlightedItem;\n if (!highlightedItem) {\n return;\n }\n var itemsContainer = this.itemsContainer;\n var itemOffsetRelativeToContainer = highlightedItem.offsetParent === itemsContainer ? highlightedItem.offsetTop : highlightedItem.offsetTop - itemsContainer.offsetTop;\n var scrollTop = itemsContainer.scrollTop; // Top of the visible area\n\n if (itemOffsetRelativeToContainer < scrollTop) {\n // Item is off the top of the visible area\n scrollTop = itemOffsetRelativeToContainer;\n } else if (itemOffsetRelativeToContainer + highlightedItem.offsetHeight > scrollTop + itemsContainer.offsetHeight) {\n // Item is off the bottom of the visible area\n scrollTop = itemOffsetRelativeToContainer + highlightedItem.offsetHeight - itemsContainer.offsetHeight;\n }\n if (scrollTop !== itemsContainer.scrollTop) {\n itemsContainer.scrollTop = scrollTop;\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var theme = this.theme;\n var _this$props4 = this.props,\n id = _this$props4.id,\n multiSection = _this$props4.multiSection,\n renderInputComponent = _this$props4.renderInputComponent,\n renderItemsContainer = _this$props4.renderItemsContainer,\n highlightedSectionIndex = _this$props4.highlightedSectionIndex,\n highlightedItemIndex = _this$props4.highlightedItemIndex;\n var isInputFocused = this.state.isInputFocused;\n var renderedItems = multiSection ? this.renderSections() : this.renderItems();\n var isOpen = renderedItems !== null;\n var ariaActivedescendant = this.getItemId(highlightedSectionIndex, highlightedItemIndex);\n var itemsContainerId = \"react-autowhatever-\".concat(id);\n var containerProps = _objectSpread({\n role: 'combobox',\n 'aria-haspopup': 'listbox',\n 'aria-owns': itemsContainerId,\n 'aria-expanded': isOpen\n }, theme(\"react-autowhatever-\".concat(id, \"-container\"), 'container', isOpen && 'containerOpen'), {}, this.props.containerProps);\n var inputComponent = renderInputComponent(_objectSpread({\n type: 'text',\n value: '',\n autoComplete: 'off',\n 'aria-autocomplete': 'list',\n 'aria-controls': itemsContainerId,\n 'aria-activedescendant': ariaActivedescendant\n }, theme(\"react-autowhatever-\".concat(id, \"-input\"), 'input', isOpen && 'inputOpen', isInputFocused && 'inputFocused'), {}, this.props.inputProps, {\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onKeyDown: this.props.inputProps.onKeyDown && this.onKeyDown,\n ref: this.storeInputReference\n }));\n var itemsContainer = renderItemsContainer({\n containerProps: _objectSpread({\n id: itemsContainerId,\n role: 'listbox'\n }, theme(\"react-autowhatever-\".concat(id, \"-items-container\"), 'itemsContainer', isOpen && 'itemsContainerOpen'), {\n ref: this.storeItemsContainerReference\n }),\n children: renderedItems\n });\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", containerProps, inputComponent, itemsContainer);\n }\n }]);\n return Autowhatever;\n}(_react.Component);\nexports[\"default\"] = Autowhatever;\n_defineProperty(Autowhatever, \"propTypes\", {\n id: _propTypes[\"default\"].string,\n // Used in aria-* attributes. If multiple Autowhatever's are rendered on a page, they must have unique ids.\n multiSection: _propTypes[\"default\"].bool,\n // Indicates whether a multi section layout should be rendered.\n renderInputComponent: _propTypes[\"default\"].func,\n // When specified, it is used to render the input element.\n renderItemsContainer: _propTypes[\"default\"].func,\n // Renders the items container.\n items: _propTypes[\"default\"].array.isRequired,\n // Array of items or sections to render.\n renderItem: _propTypes[\"default\"].func,\n // This function renders a single item.\n renderItemData: _propTypes[\"default\"].object,\n // Arbitrary data that will be passed to renderItem()\n renderSectionTitle: _propTypes[\"default\"].func,\n // This function gets a section and renders its title.\n getSectionItems: _propTypes[\"default\"].func,\n // This function gets a section and returns its items, which will be passed into `renderItem` for rendering.\n containerProps: _propTypes[\"default\"].object,\n // Arbitrary container props\n inputProps: _propTypes[\"default\"].object,\n // Arbitrary input props\n itemProps: _propTypes[\"default\"].oneOfType([\n // Arbitrary item props\n _propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n highlightedSectionIndex: _propTypes[\"default\"].number,\n // Section index of the highlighted item\n highlightedItemIndex: _propTypes[\"default\"].number,\n // Highlighted item index (within a section)\n theme: _propTypes[\"default\"].oneOfType([\n // Styles. See: https://github.com/markdalgleish/react-themeable\n _propTypes[\"default\"].object, _propTypes[\"default\"].array])\n});\n_defineProperty(Autowhatever, \"defaultProps\", {\n id: '1',\n multiSection: false,\n renderInputComponent: defaultRenderInputComponent,\n renderItemsContainer: defaultRenderItemsContainer,\n renderItem: function renderItem() {\n throw new Error('`renderItem` must be provided');\n },\n renderItemData: emptyObject,\n renderSectionTitle: function renderSectionTitle() {\n throw new Error('`renderSectionTitle` must be provided');\n },\n getSectionItems: function getSectionItems() {\n throw new Error('`getSectionItems` must be provided');\n },\n containerProps: emptyObject,\n inputProps: emptyObject,\n itemProps: emptyObject,\n highlightedSectionIndex: null,\n highlightedItemIndex: null,\n theme: defaultTheme\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar Item = /*#__PURE__*/function (_Component) {\n _inherits(Item, _Component);\n var _super = _createSuper(Item);\n function Item() {\n var _this;\n _classCallCheck(this, Item);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"storeItemReference\", function (item) {\n if (item !== null) {\n _this.item = item;\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseEnter\", function (event) {\n var _this$props = _this.props,\n sectionIndex = _this$props.sectionIndex,\n itemIndex = _this$props.itemIndex;\n _this.props.onMouseEnter(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function (event) {\n var _this$props2 = _this.props,\n sectionIndex = _this$props2.sectionIndex,\n itemIndex = _this$props2.itemIndex;\n _this.props.onMouseLeave(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onMouseDown\", function (event) {\n var _this$props3 = _this.props,\n sectionIndex = _this$props3.sectionIndex,\n itemIndex = _this$props3.itemIndex;\n _this.props.onMouseDown(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props4 = _this.props,\n sectionIndex = _this$props4.sectionIndex,\n itemIndex = _this$props4.itemIndex;\n _this.props.onClick(event, {\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n });\n });\n return _this;\n }\n _createClass(Item, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props, ['renderItemData']);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props5 = this.props,\n isHighlighted = _this$props5.isHighlighted,\n item = _this$props5.item,\n renderItem = _this$props5.renderItem,\n renderItemData = _this$props5.renderItemData,\n restProps = _objectWithoutProperties(_this$props5, [\"isHighlighted\", \"item\", \"renderItem\", \"renderItemData\"]);\n delete restProps.sectionIndex;\n delete restProps.itemIndex;\n if (typeof restProps.onMouseEnter === 'function') {\n restProps.onMouseEnter = this.onMouseEnter;\n }\n if (typeof restProps.onMouseLeave === 'function') {\n restProps.onMouseLeave = this.onMouseLeave;\n }\n if (typeof restProps.onMouseDown === 'function') {\n restProps.onMouseDown = this.onMouseDown;\n }\n if (typeof restProps.onClick === 'function') {\n restProps.onClick = this.onClick;\n }\n return /*#__PURE__*/_react[\"default\"].createElement(\"li\", _extends({\n role: \"option\"\n }, restProps, {\n ref: this.storeItemReference\n }), renderItem(item, _objectSpread({\n isHighlighted: isHighlighted\n }, renderItemData)));\n }\n }]);\n return Item;\n}(_react.Component);\nexports[\"default\"] = Item;\n_defineProperty(Item, \"propTypes\", {\n sectionIndex: _propTypes[\"default\"].number,\n isHighlighted: _propTypes[\"default\"].bool.isRequired,\n itemIndex: _propTypes[\"default\"].number.isRequired,\n item: _propTypes[\"default\"].any.isRequired,\n renderItem: _propTypes[\"default\"].func.isRequired,\n renderItemData: _propTypes[\"default\"].object.isRequired,\n onMouseEnter: _propTypes[\"default\"].func,\n onMouseLeave: _propTypes[\"default\"].func,\n onMouseDown: _propTypes[\"default\"].func,\n onClick: _propTypes[\"default\"].func\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _Item = _interopRequireDefault(require(\"./Item\"));\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar ItemsList = /*#__PURE__*/function (_Component) {\n _inherits(ItemsList, _Component);\n var _super = _createSuper(ItemsList);\n function ItemsList() {\n var _this;\n _classCallCheck(this, ItemsList);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _super.call.apply(_super, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this), \"storeHighlightedItemReference\", function (highlightedItem) {\n _this.props.onHighlightedItemChange(highlightedItem === null ? null : highlightedItem.item);\n });\n return _this;\n }\n _createClass(ItemsList, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props, ['itemProps']);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n var _this$props = this.props,\n items = _this$props.items,\n itemProps = _this$props.itemProps,\n renderItem = _this$props.renderItem,\n renderItemData = _this$props.renderItemData,\n sectionIndex = _this$props.sectionIndex,\n highlightedItemIndex = _this$props.highlightedItemIndex,\n getItemId = _this$props.getItemId,\n theme = _this$props.theme,\n keyPrefix = _this$props.keyPrefix;\n var sectionPrefix = sectionIndex === null ? keyPrefix : \"\".concat(keyPrefix, \"section-\").concat(sectionIndex, \"-\");\n var isItemPropsFunction = typeof itemProps === 'function';\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", _extends({\n role: \"listbox\"\n }, theme(\"\".concat(sectionPrefix, \"items-list\"), 'itemsList')), items.map(function (item, itemIndex) {\n var isFirst = itemIndex === 0;\n var isHighlighted = itemIndex === highlightedItemIndex;\n var itemKey = \"\".concat(sectionPrefix, \"item-\").concat(itemIndex);\n var itemPropsObj = isItemPropsFunction ? itemProps({\n sectionIndex: sectionIndex,\n itemIndex: itemIndex\n }) : itemProps;\n var allItemProps = _objectSpread({\n id: getItemId(sectionIndex, itemIndex),\n 'aria-selected': isHighlighted\n }, theme(itemKey, 'item', isFirst && 'itemFirst', isHighlighted && 'itemHighlighted'), {}, itemPropsObj);\n if (isHighlighted) {\n allItemProps.ref = _this2.storeHighlightedItemReference;\n } // `key` is provided by theme()\n\n /* eslint-disable react/jsx-key */\n\n return /*#__PURE__*/_react[\"default\"].createElement(_Item[\"default\"], _extends({}, allItemProps, {\n sectionIndex: sectionIndex,\n isHighlighted: isHighlighted,\n itemIndex: itemIndex,\n item: item,\n renderItem: renderItem,\n renderItemData: renderItemData\n }));\n /* eslint-enable react/jsx-key */\n }));\n }\n }]);\n return ItemsList;\n}(_react.Component);\nexports[\"default\"] = ItemsList;\n_defineProperty(ItemsList, \"propTypes\", {\n items: _propTypes[\"default\"].array.isRequired,\n itemProps: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]),\n renderItem: _propTypes[\"default\"].func.isRequired,\n renderItemData: _propTypes[\"default\"].object.isRequired,\n sectionIndex: _propTypes[\"default\"].number,\n highlightedItemIndex: _propTypes[\"default\"].number,\n onHighlightedItemChange: _propTypes[\"default\"].func.isRequired,\n getItemId: _propTypes[\"default\"].func.isRequired,\n theme: _propTypes[\"default\"].func.isRequired,\n keyPrefix: _propTypes[\"default\"].string.isRequired\n});\n_defineProperty(ItemsList, \"defaultProps\", {\n sectionIndex: null\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _compareObjects = _interopRequireDefault(require(\"./compareObjects\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _createSuper(Derived) {\n return function () {\n var Super = _getPrototypeOf(Derived),\n result;\n if (_isNativeReflectConstruct()) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar SectionTitle = /*#__PURE__*/function (_Component) {\n _inherits(SectionTitle, _Component);\n var _super = _createSuper(SectionTitle);\n function SectionTitle() {\n _classCallCheck(this, SectionTitle);\n return _super.apply(this, arguments);\n }\n _createClass(SectionTitle, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n return (0, _compareObjects[\"default\"])(nextProps, this.props);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n section = _this$props.section,\n renderSectionTitle = _this$props.renderSectionTitle,\n theme = _this$props.theme,\n sectionKeyPrefix = _this$props.sectionKeyPrefix;\n var sectionTitle = renderSectionTitle(section);\n if (!sectionTitle) {\n return null;\n }\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", theme(\"\".concat(sectionKeyPrefix, \"title\"), 'sectionTitle'), sectionTitle);\n }\n }]);\n return SectionTitle;\n}(_react.Component);\nexports[\"default\"] = SectionTitle;\n_defineProperty(SectionTitle, \"propTypes\", {\n section: _propTypes[\"default\"].any.isRequired,\n renderSectionTitle: _propTypes[\"default\"].func.isRequired,\n theme: _propTypes[\"default\"].func.isRequired,\n sectionKeyPrefix: _propTypes[\"default\"].string.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = compareObjects;\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction compareObjects(objA, objB) {\n var keys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n if (objA === objB) {\n return false;\n }\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n if (aKeys.length !== bKeys.length) {\n return true;\n }\n var keysMap = {};\n var i, len;\n for (i = 0, len = keys.length; i < len; i++) {\n keysMap[keys[i]] = true;\n }\n for (i = 0, len = aKeys.length; i < len; i++) {\n var key = aKeys[i];\n var aValue = objA[key];\n var bValue = objB[key];\n if (aValue === bValue) {\n continue;\n }\n if (!keysMap[key] || aValue === null || bValue === null || _typeof(aValue) !== 'object' || _typeof(bValue) !== 'object') {\n return true;\n }\n var aValueKeys = Object.keys(aValue);\n var bValueKeys = Object.keys(bValue);\n if (aValueKeys.length !== bValueKeys.length) {\n return true;\n }\n for (var n = 0, length = aValueKeys.length; n < length; n++) {\n var aValueKey = aValueKeys[n];\n if (aValue[aValueKey] !== bValue[aValueKey]) {\n return true;\n }\n }\n }\n return false;\n}","\"use strict\";\n\nmodule.exports = require('./Autosuggest')[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mapToAutowhateverTheme = exports.defaultTheme = void 0;\nvar defaultTheme = {\n container: 'react-autosuggest__container',\n containerOpen: 'react-autosuggest__container--open',\n input: 'react-autosuggest__input',\n inputOpen: 'react-autosuggest__input--open',\n inputFocused: 'react-autosuggest__input--focused',\n suggestionsContainer: 'react-autosuggest__suggestions-container',\n suggestionsContainerOpen: 'react-autosuggest__suggestions-container--open',\n suggestionsList: 'react-autosuggest__suggestions-list',\n suggestion: 'react-autosuggest__suggestion',\n suggestionFirst: 'react-autosuggest__suggestion--first',\n suggestionHighlighted: 'react-autosuggest__suggestion--highlighted',\n sectionContainer: 'react-autosuggest__section-container',\n sectionContainerFirst: 'react-autosuggest__section-container--first',\n sectionTitle: 'react-autosuggest__section-title'\n};\nexports.defaultTheme = defaultTheme;\nvar mapToAutowhateverTheme = function mapToAutowhateverTheme(theme) {\n var result = {};\n for (var key in theme) {\n switch (key) {\n case 'suggestionsContainer':\n result['itemsContainer'] = theme[key];\n break;\n case 'suggestionsContainerOpen':\n result['itemsContainerOpen'] = theme[key];\n break;\n case 'suggestion':\n result['item'] = theme[key];\n break;\n case 'suggestionFirst':\n result['itemFirst'] = theme[key];\n break;\n case 'suggestionHighlighted':\n result['itemHighlighted'] = theme[key];\n break;\n case 'suggestionsList':\n result['itemsList'] = theme[key];\n break;\n default:\n result[key] = theme[key];\n }\n }\n return result;\n};\nexports.mapToAutowhateverTheme = mapToAutowhateverTheme;","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Collapse = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar Collapse = /*#__PURE__*/function (_React$Component) {\n _inherits(Collapse, _React$Component);\n var _super = _createSuper(Collapse);\n function Collapse(props) {\n var _this;\n _classCallCheck(this, Collapse);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"timeout\", undefined);\n _defineProperty(_assertThisInitialized(_this), \"container\", undefined);\n _defineProperty(_assertThisInitialized(_this), \"content\", undefined);\n _defineProperty(_assertThisInitialized(_this), \"onResize\", function () {\n clearTimeout(_this.timeout);\n if (!_this.container || !_this.content) {\n return;\n }\n var _this$props = _this.props,\n isOpened = _this$props.isOpened,\n checkTimeout = _this$props.checkTimeout;\n var containerHeight = Math.floor(_this.container.clientHeight);\n var contentHeight = Math.floor(_this.content.clientHeight);\n var isFullyOpened = isOpened && Math.abs(contentHeight - containerHeight) <= 1;\n var isFullyClosed = !isOpened && Math.abs(containerHeight) <= 1;\n if (isFullyOpened || isFullyClosed) {\n _this.onRest({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n } else {\n _this.onWork({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n _this.timeout = setTimeout(function () {\n return _this.onResize();\n }, checkTimeout);\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onRest\", function (_ref) {\n var isFullyOpened = _ref.isFullyOpened,\n isFullyClosed = _ref.isFullyClosed,\n isOpened = _ref.isOpened,\n containerHeight = _ref.containerHeight,\n contentHeight = _ref.contentHeight;\n if (!_this.container || !_this.content) {\n return;\n }\n var hasOpened = isOpened && _this.container.style.height === \"\".concat(contentHeight, \"px\");\n var hasClosed = !isOpened && _this.container.style.height === '0px';\n if (hasOpened || hasClosed) {\n _this.container.style.overflow = isOpened ? 'initial' : 'hidden';\n _this.container.style.height = isOpened ? 'auto' : '0px';\n var onRest = _this.props.onRest;\n if (onRest) {\n onRest({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n }\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onWork\", function (_ref2) {\n var isFullyOpened = _ref2.isFullyOpened,\n isFullyClosed = _ref2.isFullyClosed,\n isOpened = _ref2.isOpened,\n containerHeight = _ref2.containerHeight,\n contentHeight = _ref2.contentHeight;\n if (!_this.container || !_this.content) {\n return;\n }\n var isOpenining = isOpened && _this.container.style.height === \"\".concat(contentHeight, \"px\");\n var isClosing = !isOpened && _this.container.style.height === '0px';\n if (isOpenining || isClosing) {\n // No need to do any work\n return;\n }\n _this.container.style.overflow = 'hidden';\n _this.container.style.height = isOpened ? \"\".concat(contentHeight, \"px\") : '0px';\n var onWork = _this.props.onWork;\n if (onWork) {\n onWork({\n isFullyOpened: isFullyOpened,\n isFullyClosed: isFullyClosed,\n isOpened: isOpened,\n containerHeight: containerHeight,\n contentHeight: contentHeight\n });\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onRefContainer\", function (container) {\n _this.container = container;\n });\n _defineProperty(_assertThisInitialized(_this), \"onRefContent\", function (content) {\n _this.content = content;\n });\n if (props.initialStyle) {\n _this.initialStyle = props.initialStyle;\n } else {\n _this.initialStyle = props.isOpened ? {\n height: 'auto',\n overflow: 'initial'\n } : {\n height: '0px',\n overflow: 'hidden'\n };\n }\n return _this;\n }\n _createClass(Collapse, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.onResize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this$props2 = this.props,\n theme = _this$props2.theme,\n isOpened = _this$props2.isOpened,\n children = _this$props2.children;\n return children !== nextProps.children || isOpened !== nextProps.isOpened || Object.keys(theme).some(function (c) {\n return theme[c] !== nextProps.theme[c];\n });\n }\n }, {\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate() {\n if (!this.container || !this.content) {\n return null;\n }\n if (this.container.style.height === 'auto') {\n var contentHeight = this.content.clientHeight;\n this.container.style.height = \"\".concat(contentHeight, \"px\");\n }\n return null;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.onResize();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n theme = _this$props3.theme,\n children = _this$props3.children,\n isOpened = _this$props3.isOpened;\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.onRefContainer,\n className: theme.collapse,\n style: this.initialStyle,\n \"aria-hidden\": !isOpened\n }, /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n ref: this.onRefContent,\n className: theme.content\n }, children));\n }\n }]);\n return Collapse;\n}(_react[\"default\"].Component);\nexports.Collapse = Collapse;\n_defineProperty(Collapse, \"defaultProps\", {\n theme: {\n collapse: 'ReactCollapse--collapse',\n content: 'ReactCollapse--content'\n },\n initialStyle: undefined,\n onRest: undefined,\n onWork: undefined,\n checkTimeout: 50\n});","\"use strict\";\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnmountClosed = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _Collapse = require(\"./Collapse\");\nvar _excluded = [\"isOpened\"],\n _excluded2 = [\"isOpened\"];\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar UnmountClosed = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(UnmountClosed, _React$PureComponent);\n var _super = _createSuper(UnmountClosed);\n function UnmountClosed(props) {\n var _this;\n _classCallCheck(this, UnmountClosed);\n _this = _super.call(this, props);\n _defineProperty(_assertThisInitialized(_this), \"onWork\", function (_ref) {\n var isOpened = _ref.isOpened,\n rest = _objectWithoutProperties(_ref, _excluded);\n _this.setState({\n isResting: false,\n isOpened: isOpened\n });\n var onWork = _this.props.onWork;\n if (onWork) {\n onWork(_objectSpread({\n isOpened: isOpened\n }, rest));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"onRest\", function (_ref2) {\n var isOpened = _ref2.isOpened,\n rest = _objectWithoutProperties(_ref2, _excluded2);\n _this.setState({\n isResting: true,\n isOpened: isOpened,\n isInitialRender: false\n });\n var onRest = _this.props.onRest;\n if (onRest) {\n onRest(_objectSpread({\n isOpened: isOpened\n }, rest));\n }\n });\n _defineProperty(_assertThisInitialized(_this), \"getInitialStyle\", function () {\n var _this$state = _this.state,\n isOpened = _this$state.isOpened,\n isInitialRender = _this$state.isInitialRender;\n if (isInitialRender) {\n return isOpened ? {\n height: 'auto',\n overflow: 'initial'\n } : {\n height: '0px',\n overflow: 'hidden'\n };\n }\n return {\n height: '0px',\n overflow: 'hidden'\n };\n });\n _this.state = {\n isResting: true,\n isOpened: props.isOpened,\n isInitialRender: true\n };\n return _this;\n }\n _createClass(UnmountClosed, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var isOpened = this.props.isOpened;\n if (prevProps.isOpened !== isOpened) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n isResting: false,\n isOpened: isOpened,\n isInitialRender: false\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$state2 = this.state,\n isResting = _this$state2.isResting,\n isOpened = _this$state2.isOpened;\n return isResting && !isOpened ? null : /*#__PURE__*/_react[\"default\"].createElement(_Collapse.Collapse, _extends({}, this.props, {\n initialStyle: this.getInitialStyle(),\n onWork: this.onWork,\n onRest: this.onRest\n }));\n }\n }]);\n return UnmountClosed;\n}(_react[\"default\"].PureComponent);\nexports.UnmountClosed = UnmountClosed;\n_defineProperty(UnmountClosed, \"defaultProps\", {\n onWork: undefined,\n onRest: undefined\n});","\"use strict\";\n\nvar _require = require('./Collapse'),\n Collapse = _require.Collapse;\nvar _require2 = require('./UnmountClosed'),\n UnmountClosed = _require2.UnmountClosed; // Default export\n\nmodule.exports = UnmountClosed; // Extra \"named exports\"\n\nUnmountClosed.Collapse = Collapse;\nUnmountClosed.UnmountClosed = UnmountClosed;","module.exports = function (t) {\n var A = {};\n function e(r) {\n if (A[r]) return A[r].exports;\n var n = A[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return t[r].call(n.exports, n, n.exports, e), n.l = !0, n.exports;\n }\n return e.m = t, e.c = A, e.d = function (t, A, r) {\n e.o(t, A) || Object.defineProperty(t, A, {\n enumerable: !0,\n get: r\n });\n }, e.r = function (t) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n }, e.t = function (t, A) {\n if (1 & A && (t = e(t)), 8 & A) return t;\n if (4 & A && \"object\" == typeof t && t && t.__esModule) return t;\n var r = Object.create(null);\n if (e.r(r), Object.defineProperty(r, \"default\", {\n enumerable: !0,\n value: t\n }), 2 & A && \"string\" != typeof t) for (var n in t) e.d(r, n, function (A) {\n return t[A];\n }.bind(null, n));\n return r;\n }, e.n = function (t) {\n var A = t && t.__esModule ? function () {\n return t.default;\n } : function () {\n return t;\n };\n return e.d(A, \"a\", A), A;\n }, e.o = function (t, A) {\n return Object.prototype.hasOwnProperty.call(t, A);\n }, e.p = \"\", e(e.s = 3);\n}([function (t, A, e) {\n /*!\n * html2canvas 1.0.0-rc.7 <https://html2canvas.hertzen.com>\n * Copyright (c) 2020 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\n t.exports = function () {\n \"use strict\";\n\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation. All rights reserved.\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n this file except in compliance with the License. You may obtain a copy of the\n License at http://www.apache.org/licenses/LICENSE-2.0\n \n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n MERCHANTABLITY OR NON-INFRINGEMENT.\n \n See the Apache Version 2.0 License for specific language governing permissions\n and limitations under the License.\n ***************************************************************************** */\n var t = function (A, e) {\n return (t = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (t, A) {\n t.__proto__ = A;\n } || function (t, A) {\n for (var e in A) A.hasOwnProperty(e) && (t[e] = A[e]);\n })(A, e);\n };\n function A(A, e) {\n function r() {\n this.constructor = A;\n }\n t(A, e), A.prototype = null === e ? Object.create(e) : (r.prototype = e.prototype, new r());\n }\n var e = function () {\n return (e = Object.assign || function (t) {\n for (var A, e = 1, r = arguments.length; e < r; e++) for (var n in A = arguments[e]) Object.prototype.hasOwnProperty.call(A, n) && (t[n] = A[n]);\n return t;\n }).apply(this, arguments);\n };\n function r(t, A, e, r) {\n return new (e || (e = Promise))(function (n, i) {\n function o(t) {\n try {\n a(r.next(t));\n } catch (t) {\n i(t);\n }\n }\n function s(t) {\n try {\n a(r.throw(t));\n } catch (t) {\n i(t);\n }\n }\n function a(t) {\n t.done ? n(t.value) : new e(function (A) {\n A(t.value);\n }).then(o, s);\n }\n a((r = r.apply(t, A || [])).next());\n });\n }\n function n(t, A) {\n var e,\n r,\n n,\n i,\n o = {\n label: 0,\n sent: function () {\n if (1 & n[0]) throw n[1];\n return n[1];\n },\n trys: [],\n ops: []\n };\n return i = {\n next: s(0),\n throw: s(1),\n return: s(2)\n }, \"function\" == typeof Symbol && (i[Symbol.iterator] = function () {\n return this;\n }), i;\n function s(i) {\n return function (s) {\n return function (i) {\n if (e) throw new TypeError(\"Generator is already executing.\");\n for (; o;) try {\n if (e = 1, r && (n = 2 & i[0] ? r.return : i[0] ? r.throw || ((n = r.return) && n.call(r), 0) : r.next) && !(n = n.call(r, i[1])).done) return n;\n switch (r = 0, n && (i = [2 & i[0], n.value]), i[0]) {\n case 0:\n case 1:\n n = i;\n break;\n case 4:\n return o.label++, {\n value: i[1],\n done: !1\n };\n case 5:\n o.label++, r = i[1], i = [0];\n continue;\n case 7:\n i = o.ops.pop(), o.trys.pop();\n continue;\n default:\n if (!((n = (n = o.trys).length > 0 && n[n.length - 1]) || 6 !== i[0] && 2 !== i[0])) {\n o = 0;\n continue;\n }\n if (3 === i[0] && (!n || i[1] > n[0] && i[1] < n[3])) {\n o.label = i[1];\n break;\n }\n if (6 === i[0] && o.label < n[1]) {\n o.label = n[1], n = i;\n break;\n }\n if (n && o.label < n[2]) {\n o.label = n[2], o.ops.push(i);\n break;\n }\n n[2] && o.ops.pop(), o.trys.pop();\n continue;\n }\n i = A.call(t, o);\n } catch (t) {\n i = [6, t], r = 0;\n } finally {\n e = n = 0;\n }\n if (5 & i[0]) throw i[1];\n return {\n value: i[0] ? i[1] : void 0,\n done: !0\n };\n }([i, s]);\n };\n }\n }\n for (var i = function () {\n function t(t, A, e, r) {\n this.left = t, this.top = A, this.width = e, this.height = r;\n }\n return t.prototype.add = function (A, e, r, n) {\n return new t(this.left + A, this.top + e, this.width + r, this.height + n);\n }, t.fromClientRect = function (A) {\n return new t(A.left, A.top, A.width, A.height);\n }, t;\n }(), o = function (t) {\n return i.fromClientRect(t.getBoundingClientRect());\n }, s = function (t) {\n for (var A = [], e = 0, r = t.length; e < r;) {\n var n = t.charCodeAt(e++);\n if (n >= 55296 && n <= 56319 && e < r) {\n var i = t.charCodeAt(e++);\n 56320 == (64512 & i) ? A.push(((1023 & n) << 10) + (1023 & i) + 65536) : (A.push(n), e--);\n } else A.push(n);\n }\n return A;\n }, a = function () {\n for (var t = [], A = 0; A < arguments.length; A++) t[A] = arguments[A];\n if (String.fromCodePoint) return String.fromCodePoint.apply(String, t);\n var e = t.length;\n if (!e) return \"\";\n for (var r = [], n = -1, i = \"\"; ++n < e;) {\n var o = t[n];\n o <= 65535 ? r.push(o) : (o -= 65536, r.push(55296 + (o >> 10), o % 1024 + 56320)), (n + 1 === e || r.length > 16384) && (i += String.fromCharCode.apply(String, r), r.length = 0);\n }\n return i;\n }, c = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", u = \"undefined\" == typeof Uint8Array ? [] : new Uint8Array(256), l = 0; l < c.length; l++) u[c.charCodeAt(l)] = l;\n var h,\n f = function (t, A, e) {\n return t.slice ? t.slice(A, e) : new Uint16Array(Array.prototype.slice.call(t, A, e));\n },\n d = function () {\n function t(t, A, e, r, n, i) {\n this.initialValue = t, this.errorValue = A, this.highStart = e, this.highValueIndex = r, this.index = n, this.data = i;\n }\n return t.prototype.get = function (t) {\n var A;\n if (t >= 0) {\n if (t < 55296 || t > 56319 && t <= 65535) return A = ((A = this.index[t >> 5]) << 2) + (31 & t), this.data[A];\n if (t <= 65535) return A = ((A = this.index[2048 + (t - 55296 >> 5)]) << 2) + (31 & t), this.data[A];\n if (t < this.highStart) return A = 2080 + (t >> 11), A = this.index[A], A += t >> 5 & 63, A = ((A = this.index[A]) << 2) + (31 & t), this.data[A];\n if (t <= 1114111) return this.data[this.highValueIndex];\n }\n return this.errorValue;\n }, t;\n }(),\n p = 10,\n B = 13,\n g = 15,\n w = 17,\n m = 18,\n Q = 19,\n C = 20,\n y = 21,\n v = 22,\n F = 24,\n U = 25,\n N = 26,\n E = 27,\n b = 28,\n L = 30,\n H = 32,\n x = 33,\n S = 34,\n I = 35,\n _ = 37,\n T = 38,\n R = 39,\n O = 40,\n K = 42,\n M = function (t) {\n var A,\n e,\n r,\n n = function (t) {\n var A,\n e,\n r,\n n,\n i,\n o = .75 * t.length,\n s = t.length,\n a = 0;\n \"=\" === t[t.length - 1] && (o--, \"=\" === t[t.length - 2] && o--);\n var c = \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof Uint8Array && void 0 !== Uint8Array.prototype.slice ? new ArrayBuffer(o) : new Array(o),\n l = Array.isArray(c) ? c : new Uint8Array(c);\n for (A = 0; A < s; A += 4) e = u[t.charCodeAt(A)], r = u[t.charCodeAt(A + 1)], n = u[t.charCodeAt(A + 2)], i = u[t.charCodeAt(A + 3)], l[a++] = e << 2 | r >> 4, l[a++] = (15 & r) << 4 | n >> 2, l[a++] = (3 & n) << 6 | 63 & i;\n return c;\n }(t),\n i = Array.isArray(n) ? function (t) {\n for (var A = t.length, e = [], r = 0; r < A; r += 4) e.push(t[r + 3] << 24 | t[r + 2] << 16 | t[r + 1] << 8 | t[r]);\n return e;\n }(n) : new Uint32Array(n),\n o = Array.isArray(n) ? function (t) {\n for (var A = t.length, e = [], r = 0; r < A; r += 2) e.push(t[r + 1] << 8 | t[r]);\n return e;\n }(n) : new Uint16Array(n),\n s = f(o, 12, i[4] / 2),\n a = 2 === i[5] ? f(o, (24 + i[4]) / 2) : (A = i, e = Math.ceil((24 + i[4]) / 4), A.slice ? A.slice(e, r) : new Uint32Array(Array.prototype.slice.call(A, e, r)));\n return new d(i[0], i[1], i[2], i[3], s, a);\n }(\"KwAAAAAAAAAACA4AIDoAAPAfAAACAAAAAAAIABAAGABAAEgAUABYAF4AZgBeAGYAYABoAHAAeABeAGYAfACEAIAAiACQAJgAoACoAK0AtQC9AMUAXgBmAF4AZgBeAGYAzQDVAF4AZgDRANkA3gDmAOwA9AD8AAQBDAEUARoBIgGAAIgAJwEvATcBPwFFAU0BTAFUAVwBZAFsAXMBewGDATAAiwGTAZsBogGkAawBtAG8AcIBygHSAdoB4AHoAfAB+AH+AQYCDgIWAv4BHgImAi4CNgI+AkUCTQJTAlsCYwJrAnECeQKBAk0CiQKRApkCoQKoArACuALAAsQCzAIwANQC3ALkAjAA7AL0AvwCAQMJAxADGAMwACADJgMuAzYDPgOAAEYDSgNSA1IDUgNaA1oDYANiA2IDgACAAGoDgAByA3YDfgOAAIQDgACKA5IDmgOAAIAAogOqA4AAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAK8DtwOAAIAAvwPHA88D1wPfAyAD5wPsA/QD/AOAAIAABAQMBBIEgAAWBB4EJgQuBDMEIAM7BEEEXgBJBCADUQRZBGEEaQQwADAAcQQ+AXkEgQSJBJEEgACYBIAAoASoBK8EtwQwAL8ExQSAAIAAgACAAIAAgACgAM0EXgBeAF4AXgBeAF4AXgBeANUEXgDZBOEEXgDpBPEE+QQBBQkFEQUZBSEFKQUxBTUFPQVFBUwFVAVcBV4AYwVeAGsFcwV7BYMFiwWSBV4AmgWgBacFXgBeAF4AXgBeAKsFXgCyBbEFugW7BcIFwgXIBcIFwgXQBdQF3AXkBesF8wX7BQMGCwYTBhsGIwYrBjMGOwZeAD8GRwZNBl4AVAZbBl4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAGMGXgBqBnEGXgBeAF4AXgBeAF4AXgBeAF4AXgB5BoAG4wSGBo4GkwaAAIADHgR5AF4AXgBeAJsGgABGA4AAowarBrMGswagALsGwwbLBjAA0wbaBtoG3QbaBtoG2gbaBtoG2gblBusG8wb7BgMHCwcTBxsHCwcjBysHMAc1BzUHOgdCB9oGSgdSB1oHYAfaBloHaAfaBlIH2gbaBtoG2gbaBtoG2gbaBjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHbQdeAF4ANQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQd1B30HNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B4MH2gaKB68EgACAAIAAgACAAIAAgACAAI8HlwdeAJ8HpweAAIAArwe3B14AXgC/B8UHygcwANAH2AfgB4AA6AfwBz4B+AcACFwBCAgPCBcIogEYAR8IJwiAAC8INwg/CCADRwhPCFcIXwhnCEoDGgSAAIAAgABvCHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIfQh3CHgIeQh6CHsIfAh9CHcIeAh5CHoIewh8CH0Idwh4CHkIegh7CHwIhAiLCI4IMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAANQc1BzUHNQc1BzUHNQc1BzUHNQc1B54INQc1B6II2gaqCLIIugiAAIAAvgjGCIAAgACAAIAAgACAAIAAgACAAIAAywiHAYAA0wiAANkI3QjlCO0I9Aj8CIAAgACAAAIJCgkSCRoJIgknCTYHLwk3CZYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiWCJYIlgiAAIAAAAFAAXgBeAGAAcABeAHwAQACQAKAArQC9AJ4AXgBeAE0A3gBRAN4A7AD8AMwBGgEAAKcBNwEFAUwBXAF4QkhCmEKnArcCgAHHAsABz4LAAcABwAHAAd+C6ABoAG+C/4LAAcABwAHAAc+DF4MAAcAB54M3gweDV4Nng3eDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEeDqABVg6WDqABoQ6gAaABoAHXDvcONw/3DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DvcO9w73DncPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB7cPPwlGCU4JMACAAIAAgABWCV4JYQmAAGkJcAl4CXwJgAkwADAAMAAwAIgJgACLCZMJgACZCZ8JowmrCYAAswkwAF4AXgB8AIAAuwkABMMJyQmAAM4JgADVCTAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAqwYWBNkIMAAwADAAMADdCeAJ6AnuCR4E9gkwAP4JBQoNCjAAMACAABUK0wiAAB0KJAosCjQKgAAwADwKQwqAAEsKvQmdCVMKWwowADAAgACAALcEMACAAGMKgABrCjAAMAAwADAAMAAwADAAMAAwADAAMAAeBDAAMAAwADAAMAAwADAAMAAwADAAMAAwAIkEPQFzCnoKiQSCCooKkAqJBJgKoAqkCokEGAGsCrQKvArBCjAAMADJCtEKFQHZCuEK/gHpCvEKMAAwADAAMACAAIwE+QowAIAAPwEBCzAAMAAwADAAMACAAAkLEQswAIAAPwEZCyELgAAOCCkLMAAxCzkLMAAwADAAMAAwADAAXgBeAEELMAAwADAAMAAwADAAMAAwAEkLTQtVC4AAXAtkC4AAiQkwADAAMAAwADAAMAAwADAAbAtxC3kLgAuFC4sLMAAwAJMLlwufCzAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAApwswADAAMACAAIAAgACvC4AAgACAAIAAgACAALcLMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAvwuAAMcLgACAAIAAgACAAIAAyguAAIAAgACAAIAA0QswADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAANkLgACAAIAA4AswADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACJCR4E6AswADAAhwHwC4AA+AsADAgMEAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMACAAIAAGAwdDCUMMAAwAC0MNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQw1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHPQwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADUHNQc1BzUHNQc1BzUHNQc2BzAAMAA5DDUHNQc1BzUHNQc1BzUHNQc1BzUHNQdFDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAgACAAIAATQxSDFoMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAF4AXgBeAF4AXgBeAF4AYgxeAGoMXgBxDHkMfwxeAIUMXgBeAI0MMAAwADAAMAAwAF4AXgCVDJ0MMAAwADAAMABeAF4ApQxeAKsMswy7DF4Awgy9DMoMXgBeAF4AXgBeAF4AXgBeAF4AXgDRDNkMeQBqCeAM3Ax8AOYM7Az0DPgMXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgBeAF4AXgCgAAANoAAHDQ4NFg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAeDSYNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIAAgACAAIAAgACAAC4NMABeAF4ANg0wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAD4NRg1ODVYNXg1mDTAAbQ0wADAAMAAwADAAMAAwADAA2gbaBtoG2gbaBtoG2gbaBnUNeg3CBYANwgWFDdoGjA3aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gaUDZwNpA2oDdoG2gawDbcNvw3HDdoG2gbPDdYN3A3fDeYN2gbsDfMN2gbaBvoN/g3aBgYODg7aBl4AXgBeABYOXgBeACUG2gYeDl4AJA5eACwO2w3aBtoGMQ45DtoG2gbaBtoGQQ7aBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDjUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B1EO2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQdZDjUHNQc1BzUHNQc1B2EONQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHaA41BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B3AO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gY1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1BzUHNQc1B2EO2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gZJDtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBtoG2gbaBkkOeA6gAKAAoAAwADAAMAAwAKAAoACgAKAAoACgAKAAgA4wADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAD//wQABAAEAAQABAAEAAQABAAEAA0AAwABAAEAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAKABMAFwAeABsAGgAeABcAFgASAB4AGwAYAA8AGAAcAEsASwBLAEsASwBLAEsASwBLAEsAGAAYAB4AHgAeABMAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAFgAbABIAHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYADQARAB4ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkAFgAaABsAGwAbAB4AHQAdAB4ATwAXAB4ADQAeAB4AGgAbAE8ATwAOAFAAHQAdAB0ATwBPABcATwBPAE8AFgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwArAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAAQABAANAA0ASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAUAArACsAKwArACsAKwArACsABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAGgAaAFAAUABQAFAAUABMAB4AGwBQAB4AKwArACsABAAEAAQAKwBQAFAAUABQAFAAUAArACsAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUAArAFAAUAArACsABAArAAQABAAEAAQABAArACsAKwArAAQABAArACsABAAEAAQAKwArACsABAArACsAKwArACsAKwArAFAAUABQAFAAKwBQACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwAEAAQAUABQAFAABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUAArACsABABQAAQABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQAKwArAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeABsAKwArACsAKwArACsAKwBQAAQABAAEAAQABAAEACsABAAEAAQAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArAAQABAArACsABAAEAAQAKwArACsAKwArACsAKwArAAQABAArACsAKwArAFAAUAArAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwAeAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwAEAFAAKwBQAFAAUABQAFAAUAArACsAKwBQAFAAUAArAFAAUABQAFAAKwArACsAUABQACsAUAArAFAAUAArACsAKwBQAFAAKwArACsAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQAKwArACsABAAEAAQAKwAEAAQABAAEACsAKwBQACsAKwArACsAKwArAAQAKwArACsAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAB4AHgAeAB4AHgAeABsAHgArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArAFAAUABQACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAB4AUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABAArACsAKwArACsAKwArAAQABAArACsAKwArACsAKwArAFAAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwArAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAKwBcAFwAKwBcACsAKwBcACsAKwArACsAKwArAFwAXABcAFwAKwBcAFwAXABcAFwAXABcACsAXABcAFwAKwBcACsAXAArACsAXABcACsAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgArACoAKgBcACsAKwBcAFwAXABcAFwAKwBcACsAKgAqACoAKgAqACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAFwAXABcAFwAUAAOAA4ADgAOAB4ADgAOAAkADgAOAA0ACQATABMAEwATABMACQAeABMAHgAeAB4ABAAEAB4AHgAeAB4AHgAeAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUAANAAQAHgAEAB4ABAAWABEAFgARAAQABABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAAQABAAEAAQABAANAAQABABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsADQANAB4AHgAeAB4AHgAeAAQAHgAeAB4AHgAeAB4AKwAeAB4ADgAOAA0ADgAeAB4AHgAeAB4ACQAJACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgAeAB4AHgBcAFwAXABcAFwAXAAqACoAKgAqAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAKgAqACoAKgAqACoAKgBcAFwAXAAqACoAKgAqAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAXAAqAEsASwBLAEsASwBLAEsASwBLAEsAKgAqACoAKgAqACoAUABQAFAAUABQAFAAKwBQACsAKwArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQACsAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwAEAAQABAAeAA0AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAEQArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAADQANAA0AUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAA0ADQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQACsABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoADQANABUAXAANAB4ADQAbAFwAKgArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAB4AHgATABMADQANAA4AHgATABMAHgAEAAQABAAJACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAUABQAFAAUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwAeACsAKwArABMAEwBLAEsASwBLAEsASwBLAEsASwBLAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwBcAFwAXABcAFwAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcACsAKwArACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwAeAB4AXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsABABLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKgAqACoAKgAqACoAKgBcACoAKgAqACoAKgAqACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAUABQAFAAUABQAFAAUAArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4ADQANAA0ADQAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAHgAeAB4AHgBQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwANAA0ADQANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwBQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsABAAEAAQAHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAABABQAFAAUABQAAQABAAEAFAAUAAEAAQABAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAKwBQACsAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAKwArAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAKwAeAB4AHgAeAB4AHgAeAA4AHgArAA0ADQANAA0ADQANAA0ACQANAA0ADQAIAAQACwAEAAQADQAJAA0ADQAMAB0AHQAeABcAFwAWABcAFwAXABYAFwAdAB0AHgAeABQAFAAUAA0AAQABAAQABAAEAAQABAAJABoAGgAaABoAGgAaABoAGgAeABcAFwAdABUAFQAeAB4AHgAeAB4AHgAYABYAEQAVABUAFQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgANAB4ADQANAA0ADQAeAA0ADQANAAcAHgAeAB4AHgArAAQABAAEAAQABAAEAAQABAAEAAQAUABQACsAKwBPAFAAUABQAFAAUAAeAB4AHgAWABEATwBQAE8ATwBPAE8AUABQAFAAUABQAB4AHgAeABYAEQArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAaABsAGwAbABsAGgAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgBQABoAHgAdAB4AUAAeABoAHgAeAB4AHgAeAB4AHgAeAB4ATwAeAFAAGwAeAB4AUABQAFAAUABQAB4AHgAeAB0AHQAeAFAAHgBQAB4AUAAeAFAATwBQAFAAHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AUABQAFAAUABPAE8AUABQAFAAUABQAE8AUABQAE8AUABPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAE8ATwBPAE8ATwBPAE8ATwBPAE8AUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAATwAeAB4AKwArACsAKwAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB0AHQAeAB4AHgAdAB0AHgAeAB0AHgAeAB4AHQAeAB0AGwAbAB4AHQAeAB4AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB0AHgAdAB4AHQAdAB0AHQAdAB0AHgAdAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAdAB0AHQAdAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAlACUAHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBQAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAeAB4AHgAeAB0AHQAeAB4AHgAeAB0AHQAdAB4AHgAdAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB0AHQAeAB4AHQAeAB4AHgAeAB0AHQAeAB4AHgAeACUAJQAdAB0AJQAeACUAJQAlACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAHgAeAB4AHgAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHQAdAB0AHgAdACUAHQAdAB4AHQAdAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHQAdAB0AHQAlAB4AJQAlACUAHQAlACUAHQAdAB0AJQAlAB0AHQAlAB0AHQAlACUAJQAeAB0AHgAeAB4AHgAdAB0AJQAdAB0AHQAdAB0AHQAlACUAJQAlACUAHQAlACUAIAAlAB0AHQAlACUAJQAlACUAJQAlACUAHgAeAB4AJQAlACAAIAAgACAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeABcAFwAXABcAFwAXAB4AEwATACUAHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACUAJQBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwArACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAE8ATwBPAE8ATwBPAE8ATwAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeACsAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUAArACsAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQBQAFAAUABQACsAKwArACsAUABQAFAAUABQAFAAUABQAA0AUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAABAAEAAQAKwAEAAQAKwArACsAKwArAAQABAAEAAQAUABQAFAAUAArAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsABAAEAAQAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsADQANAA0ADQANAA0ADQANAB4AKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAUABQAFAAUABQAA0ADQANAA0ADQANABQAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwANAA0ADQANAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAeAAQABAAEAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLACsADQArAB4AKwArAAQABAAEAAQAUABQAB4AUAArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwAEAAQABAAEAAQABAAEAAQABAAOAA0ADQATABMAHgAeAB4ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0AUABQAFAAUAAEAAQAKwArAAQADQANAB4AUAArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXABcAA0ADQANACoASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUAArACsAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANACsADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEcARwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQACsAKwAeAAQABAANAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAEAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUAArACsAUAArACsAUABQACsAKwBQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AKwArAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAeAB4ADQANAA0ADQAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAArAAQABAArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAEAAQABAAEAAQABAAEACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAFgAWAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAKwBQACsAKwArACsAKwArAFAAKwArACsAKwBQACsAUAArAFAAKwBQAFAAUAArAFAAUAArAFAAKwArAFAAKwBQACsAUAArAFAAKwBQACsAUABQACsAUAArACsAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAUABQAFAAUAArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUAArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAlACUAJQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeACUAJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeACUAJQAlACUAJQAeACUAJQAlACUAJQAgACAAIAAlACUAIAAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIQAhACEAIQAhACUAJQAgACAAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAIAAlACUAJQAlACAAJQAgACAAIAAgACAAIAAgACAAIAAlACUAJQAgACUAJQAlACUAIAAgACAAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeACUAHgAlAB4AJQAlACUAJQAlACAAJQAlACUAJQAeACUAHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAIAAgACAAIAAgAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFwAXABcAFQAVABUAHgAeAB4AHgAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAIAAgACAAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAlACAAIAAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsA\"),\n P = [L, 36],\n D = [1, 2, 3, 5],\n k = [p, 8],\n z = [E, N],\n j = D.concat(k),\n q = [T, R, O, S, I],\n V = [g, B],\n X = function (t, A, e, r) {\n var n = r[e];\n if (Array.isArray(t) ? -1 !== t.indexOf(n) : t === n) for (var i = e; i <= r.length;) {\n if ((a = r[++i]) === A) return !0;\n if (a !== p) break;\n }\n if (n === p) for (i = e; i > 0;) {\n var o = r[--i];\n if (Array.isArray(t) ? -1 !== t.indexOf(o) : t === o) for (var s = e; s <= r.length;) {\n var a;\n if ((a = r[++s]) === A) return !0;\n if (a !== p) break;\n }\n if (o !== p) break;\n }\n return !1;\n },\n G = function (t, A) {\n for (var e = t; e >= 0;) {\n var r = A[e];\n if (r !== p) return r;\n e--;\n }\n return 0;\n },\n J = function (t, A, e, r, n) {\n if (0 === e[r]) return \"×\";\n var i = r - 1;\n if (Array.isArray(n) && !0 === n[i]) return \"×\";\n var o = i - 1,\n s = i + 1,\n a = A[i],\n c = o >= 0 ? A[o] : 0,\n u = A[s];\n if (2 === a && 3 === u) return \"×\";\n if (-1 !== D.indexOf(a)) return \"!\";\n if (-1 !== D.indexOf(u)) return \"×\";\n if (-1 !== k.indexOf(u)) return \"×\";\n if (8 === G(i, A)) return \"÷\";\n if (11 === M.get(t[i]) && (u === _ || u === H || u === x)) return \"×\";\n if (7 === a || 7 === u) return \"×\";\n if (9 === a) return \"×\";\n if (-1 === [p, B, g].indexOf(a) && 9 === u) return \"×\";\n if (-1 !== [w, m, Q, F, b].indexOf(u)) return \"×\";\n if (G(i, A) === v) return \"×\";\n if (X(23, v, i, A)) return \"×\";\n if (X([w, m], y, i, A)) return \"×\";\n if (X(12, 12, i, A)) return \"×\";\n if (a === p) return \"÷\";\n if (23 === a || 23 === u) return \"×\";\n if (16 === u || 16 === a) return \"÷\";\n if (-1 !== [B, g, y].indexOf(u) || 14 === a) return \"×\";\n if (36 === c && -1 !== V.indexOf(a)) return \"×\";\n if (a === b && 36 === u) return \"×\";\n if (u === C && -1 !== P.concat(C, Q, U, _, H, x).indexOf(a)) return \"×\";\n if (-1 !== P.indexOf(u) && a === U || -1 !== P.indexOf(a) && u === U) return \"×\";\n if (a === E && -1 !== [_, H, x].indexOf(u) || -1 !== [_, H, x].indexOf(a) && u === N) return \"×\";\n if (-1 !== P.indexOf(a) && -1 !== z.indexOf(u) || -1 !== z.indexOf(a) && -1 !== P.indexOf(u)) return \"×\";\n if (-1 !== [E, N].indexOf(a) && (u === U || -1 !== [v, g].indexOf(u) && A[s + 1] === U) || -1 !== [v, g].indexOf(a) && u === U || a === U && -1 !== [U, b, F].indexOf(u)) return \"×\";\n if (-1 !== [U, b, F, w, m].indexOf(u)) for (var l = i; l >= 0;) {\n if ((h = A[l]) === U) return \"×\";\n if (-1 === [b, F].indexOf(h)) break;\n l--;\n }\n if (-1 !== [E, N].indexOf(u)) for (l = -1 !== [w, m].indexOf(a) ? o : i; l >= 0;) {\n var h;\n if ((h = A[l]) === U) return \"×\";\n if (-1 === [b, F].indexOf(h)) break;\n l--;\n }\n if (T === a && -1 !== [T, R, S, I].indexOf(u) || -1 !== [R, S].indexOf(a) && -1 !== [R, O].indexOf(u) || -1 !== [O, I].indexOf(a) && u === O) return \"×\";\n if (-1 !== q.indexOf(a) && -1 !== [C, N].indexOf(u) || -1 !== q.indexOf(u) && a === E) return \"×\";\n if (-1 !== P.indexOf(a) && -1 !== P.indexOf(u)) return \"×\";\n if (a === F && -1 !== P.indexOf(u)) return \"×\";\n if (-1 !== P.concat(U).indexOf(a) && u === v || -1 !== P.concat(U).indexOf(u) && a === m) return \"×\";\n if (41 === a && 41 === u) {\n for (var f = e[i], d = 1; f > 0 && 41 === A[--f];) d++;\n if (d % 2 != 0) return \"×\";\n }\n return a === H && u === x ? \"×\" : \"÷\";\n },\n W = function (t, A) {\n A || (A = {\n lineBreak: \"normal\",\n wordBreak: \"normal\"\n });\n var e = function (t, A) {\n void 0 === A && (A = \"strict\");\n var e = [],\n r = [],\n n = [];\n return t.forEach(function (t, i) {\n var o = M.get(t);\n if (o > 50 ? (n.push(!0), o -= 50) : n.push(!1), -1 !== [\"normal\", \"auto\", \"loose\"].indexOf(A) && -1 !== [8208, 8211, 12316, 12448].indexOf(t)) return r.push(i), e.push(16);\n if (4 === o || 11 === o) {\n if (0 === i) return r.push(i), e.push(L);\n var s = e[i - 1];\n return -1 === j.indexOf(s) ? (r.push(r[i - 1]), e.push(s)) : (r.push(i), e.push(L));\n }\n return r.push(i), 31 === o ? e.push(\"strict\" === A ? y : _) : o === K || 29 === o ? e.push(L) : 43 === o ? t >= 131072 && t <= 196605 || t >= 196608 && t <= 262141 ? e.push(_) : e.push(L) : void e.push(o);\n }), [r, e, n];\n }(t, A.lineBreak),\n r = e[0],\n n = e[1],\n i = e[2];\n return \"break-all\" !== A.wordBreak && \"break-word\" !== A.wordBreak || (n = n.map(function (t) {\n return -1 !== [U, L, K].indexOf(t) ? _ : t;\n })), [r, n, \"keep-all\" === A.wordBreak ? i.map(function (A, e) {\n return A && t[e] >= 19968 && t[e] <= 40959;\n }) : void 0];\n },\n Y = function () {\n function t(t, A, e, r) {\n this.codePoints = t, this.required = \"!\" === A, this.start = e, this.end = r;\n }\n return t.prototype.slice = function () {\n return a.apply(void 0, this.codePoints.slice(this.start, this.end));\n }, t;\n }();\n !function (t) {\n t[t.STRING_TOKEN = 0] = \"STRING_TOKEN\", t[t.BAD_STRING_TOKEN = 1] = \"BAD_STRING_TOKEN\", t[t.LEFT_PARENTHESIS_TOKEN = 2] = \"LEFT_PARENTHESIS_TOKEN\", t[t.RIGHT_PARENTHESIS_TOKEN = 3] = \"RIGHT_PARENTHESIS_TOKEN\", t[t.COMMA_TOKEN = 4] = \"COMMA_TOKEN\", t[t.HASH_TOKEN = 5] = \"HASH_TOKEN\", t[t.DELIM_TOKEN = 6] = \"DELIM_TOKEN\", t[t.AT_KEYWORD_TOKEN = 7] = \"AT_KEYWORD_TOKEN\", t[t.PREFIX_MATCH_TOKEN = 8] = \"PREFIX_MATCH_TOKEN\", t[t.DASH_MATCH_TOKEN = 9] = \"DASH_MATCH_TOKEN\", t[t.INCLUDE_MATCH_TOKEN = 10] = \"INCLUDE_MATCH_TOKEN\", t[t.LEFT_CURLY_BRACKET_TOKEN = 11] = \"LEFT_CURLY_BRACKET_TOKEN\", t[t.RIGHT_CURLY_BRACKET_TOKEN = 12] = \"RIGHT_CURLY_BRACKET_TOKEN\", t[t.SUFFIX_MATCH_TOKEN = 13] = \"SUFFIX_MATCH_TOKEN\", t[t.SUBSTRING_MATCH_TOKEN = 14] = \"SUBSTRING_MATCH_TOKEN\", t[t.DIMENSION_TOKEN = 15] = \"DIMENSION_TOKEN\", t[t.PERCENTAGE_TOKEN = 16] = \"PERCENTAGE_TOKEN\", t[t.NUMBER_TOKEN = 17] = \"NUMBER_TOKEN\", t[t.FUNCTION = 18] = \"FUNCTION\", t[t.FUNCTION_TOKEN = 19] = \"FUNCTION_TOKEN\", t[t.IDENT_TOKEN = 20] = \"IDENT_TOKEN\", t[t.COLUMN_TOKEN = 21] = \"COLUMN_TOKEN\", t[t.URL_TOKEN = 22] = \"URL_TOKEN\", t[t.BAD_URL_TOKEN = 23] = \"BAD_URL_TOKEN\", t[t.CDC_TOKEN = 24] = \"CDC_TOKEN\", t[t.CDO_TOKEN = 25] = \"CDO_TOKEN\", t[t.COLON_TOKEN = 26] = \"COLON_TOKEN\", t[t.SEMICOLON_TOKEN = 27] = \"SEMICOLON_TOKEN\", t[t.LEFT_SQUARE_BRACKET_TOKEN = 28] = \"LEFT_SQUARE_BRACKET_TOKEN\", t[t.RIGHT_SQUARE_BRACKET_TOKEN = 29] = \"RIGHT_SQUARE_BRACKET_TOKEN\", t[t.UNICODE_RANGE_TOKEN = 30] = \"UNICODE_RANGE_TOKEN\", t[t.WHITESPACE_TOKEN = 31] = \"WHITESPACE_TOKEN\", t[t.EOF_TOKEN = 32] = \"EOF_TOKEN\";\n }(h || (h = {}));\n var Z = function (t) {\n return t >= 48 && t <= 57;\n },\n $ = function (t) {\n return Z(t) || t >= 65 && t <= 70 || t >= 97 && t <= 102;\n },\n tt = function (t) {\n return 10 === t || 9 === t || 32 === t;\n },\n At = function (t) {\n return function (t) {\n return function (t) {\n return t >= 97 && t <= 122;\n }(t) || function (t) {\n return t >= 65 && t <= 90;\n }(t);\n }(t) || function (t) {\n return t >= 128;\n }(t) || 95 === t;\n },\n et = function (t) {\n return At(t) || Z(t) || 45 === t;\n },\n rt = function (t) {\n return t >= 0 && t <= 8 || 11 === t || t >= 14 && t <= 31 || 127 === t;\n },\n nt = function (t, A) {\n return 92 === t && 10 !== A;\n },\n it = function (t, A, e) {\n return 45 === t ? At(A) || nt(A, e) : !!At(t) || !(92 !== t || !nt(t, A));\n },\n ot = function (t, A, e) {\n return 43 === t || 45 === t ? !!Z(A) || 46 === A && Z(e) : Z(46 === t ? A : t);\n },\n st = function (t) {\n var A = 0,\n e = 1;\n 43 !== t[A] && 45 !== t[A] || (45 === t[A] && (e = -1), A++);\n for (var r = []; Z(t[A]);) r.push(t[A++]);\n var n = r.length ? parseInt(a.apply(void 0, r), 10) : 0;\n 46 === t[A] && A++;\n for (var i = []; Z(t[A]);) i.push(t[A++]);\n var o = i.length,\n s = o ? parseInt(a.apply(void 0, i), 10) : 0;\n 69 !== t[A] && 101 !== t[A] || A++;\n var c = 1;\n 43 !== t[A] && 45 !== t[A] || (45 === t[A] && (c = -1), A++);\n for (var u = []; Z(t[A]);) u.push(t[A++]);\n var l = u.length ? parseInt(a.apply(void 0, u), 10) : 0;\n return e * (n + s * Math.pow(10, -o)) * Math.pow(10, c * l);\n },\n at = {\n type: h.LEFT_PARENTHESIS_TOKEN\n },\n ct = {\n type: h.RIGHT_PARENTHESIS_TOKEN\n },\n ut = {\n type: h.COMMA_TOKEN\n },\n lt = {\n type: h.SUFFIX_MATCH_TOKEN\n },\n ht = {\n type: h.PREFIX_MATCH_TOKEN\n },\n ft = {\n type: h.COLUMN_TOKEN\n },\n dt = {\n type: h.DASH_MATCH_TOKEN\n },\n pt = {\n type: h.INCLUDE_MATCH_TOKEN\n },\n Bt = {\n type: h.LEFT_CURLY_BRACKET_TOKEN\n },\n gt = {\n type: h.RIGHT_CURLY_BRACKET_TOKEN\n },\n wt = {\n type: h.SUBSTRING_MATCH_TOKEN\n },\n mt = {\n type: h.BAD_URL_TOKEN\n },\n Qt = {\n type: h.BAD_STRING_TOKEN\n },\n Ct = {\n type: h.CDO_TOKEN\n },\n yt = {\n type: h.CDC_TOKEN\n },\n vt = {\n type: h.COLON_TOKEN\n },\n Ft = {\n type: h.SEMICOLON_TOKEN\n },\n Ut = {\n type: h.LEFT_SQUARE_BRACKET_TOKEN\n },\n Nt = {\n type: h.RIGHT_SQUARE_BRACKET_TOKEN\n },\n Et = {\n type: h.WHITESPACE_TOKEN\n },\n bt = {\n type: h.EOF_TOKEN\n },\n Lt = function () {\n function t() {\n this._value = [];\n }\n return t.prototype.write = function (t) {\n this._value = this._value.concat(s(t));\n }, t.prototype.read = function () {\n for (var t = [], A = this.consumeToken(); A !== bt;) t.push(A), A = this.consumeToken();\n return t;\n }, t.prototype.consumeToken = function () {\n var t = this.consumeCodePoint();\n switch (t) {\n case 34:\n return this.consumeStringToken(34);\n case 35:\n var A = this.peekCodePoint(0),\n e = this.peekCodePoint(1),\n r = this.peekCodePoint(2);\n if (et(A) || nt(e, r)) {\n var n = it(A, e, r) ? 2 : 1,\n i = this.consumeName();\n return {\n type: h.HASH_TOKEN,\n value: i,\n flags: n\n };\n }\n break;\n case 36:\n if (61 === this.peekCodePoint(0)) return this.consumeCodePoint(), lt;\n break;\n case 39:\n return this.consumeStringToken(39);\n case 40:\n return at;\n case 41:\n return ct;\n case 42:\n if (61 === this.peekCodePoint(0)) return this.consumeCodePoint(), wt;\n break;\n case 43:\n if (ot(t, this.peekCodePoint(0), this.peekCodePoint(1))) return this.reconsumeCodePoint(t), this.consumeNumericToken();\n break;\n case 44:\n return ut;\n case 45:\n var o = t,\n s = this.peekCodePoint(0),\n c = this.peekCodePoint(1);\n if (ot(o, s, c)) return this.reconsumeCodePoint(t), this.consumeNumericToken();\n if (it(o, s, c)) return this.reconsumeCodePoint(t), this.consumeIdentLikeToken();\n if (45 === s && 62 === c) return this.consumeCodePoint(), this.consumeCodePoint(), yt;\n break;\n case 46:\n if (ot(t, this.peekCodePoint(0), this.peekCodePoint(1))) return this.reconsumeCodePoint(t), this.consumeNumericToken();\n break;\n case 47:\n if (42 === this.peekCodePoint(0)) for (this.consumeCodePoint();;) {\n var u = this.consumeCodePoint();\n if (42 === u && 47 === (u = this.consumeCodePoint())) return this.consumeToken();\n if (-1 === u) return this.consumeToken();\n }\n break;\n case 58:\n return vt;\n case 59:\n return Ft;\n case 60:\n if (33 === this.peekCodePoint(0) && 45 === this.peekCodePoint(1) && 45 === this.peekCodePoint(2)) return this.consumeCodePoint(), this.consumeCodePoint(), Ct;\n break;\n case 64:\n var l = this.peekCodePoint(0),\n f = this.peekCodePoint(1),\n d = this.peekCodePoint(2);\n if (it(l, f, d)) return i = this.consumeName(), {\n type: h.AT_KEYWORD_TOKEN,\n value: i\n };\n break;\n case 91:\n return Ut;\n case 92:\n if (nt(t, this.peekCodePoint(0))) return this.reconsumeCodePoint(t), this.consumeIdentLikeToken();\n break;\n case 93:\n return Nt;\n case 61:\n if (61 === this.peekCodePoint(0)) return this.consumeCodePoint(), ht;\n break;\n case 123:\n return Bt;\n case 125:\n return gt;\n case 117:\n case 85:\n var p = this.peekCodePoint(0),\n B = this.peekCodePoint(1);\n return 43 !== p || !$(B) && 63 !== B || (this.consumeCodePoint(), this.consumeUnicodeRangeToken()), this.reconsumeCodePoint(t), this.consumeIdentLikeToken();\n case 124:\n if (61 === this.peekCodePoint(0)) return this.consumeCodePoint(), dt;\n if (124 === this.peekCodePoint(0)) return this.consumeCodePoint(), ft;\n break;\n case 126:\n if (61 === this.peekCodePoint(0)) return this.consumeCodePoint(), pt;\n break;\n case -1:\n return bt;\n }\n return tt(t) ? (this.consumeWhiteSpace(), Et) : Z(t) ? (this.reconsumeCodePoint(t), this.consumeNumericToken()) : At(t) ? (this.reconsumeCodePoint(t), this.consumeIdentLikeToken()) : {\n type: h.DELIM_TOKEN,\n value: a(t)\n };\n }, t.prototype.consumeCodePoint = function () {\n var t = this._value.shift();\n return void 0 === t ? -1 : t;\n }, t.prototype.reconsumeCodePoint = function (t) {\n this._value.unshift(t);\n }, t.prototype.peekCodePoint = function (t) {\n return t >= this._value.length ? -1 : this._value[t];\n }, t.prototype.consumeUnicodeRangeToken = function () {\n for (var t = [], A = this.consumeCodePoint(); $(A) && t.length < 6;) t.push(A), A = this.consumeCodePoint();\n for (var e = !1; 63 === A && t.length < 6;) t.push(A), A = this.consumeCodePoint(), e = !0;\n if (e) {\n var r = parseInt(a.apply(void 0, t.map(function (t) {\n return 63 === t ? 48 : t;\n })), 16),\n n = parseInt(a.apply(void 0, t.map(function (t) {\n return 63 === t ? 70 : t;\n })), 16);\n return {\n type: h.UNICODE_RANGE_TOKEN,\n start: r,\n end: n\n };\n }\n var i = parseInt(a.apply(void 0, t), 16);\n if (45 === this.peekCodePoint(0) && $(this.peekCodePoint(1))) {\n this.consumeCodePoint(), A = this.consumeCodePoint();\n for (var o = []; $(A) && o.length < 6;) o.push(A), A = this.consumeCodePoint();\n return n = parseInt(a.apply(void 0, o), 16), {\n type: h.UNICODE_RANGE_TOKEN,\n start: i,\n end: n\n };\n }\n return {\n type: h.UNICODE_RANGE_TOKEN,\n start: i,\n end: i\n };\n }, t.prototype.consumeIdentLikeToken = function () {\n var t = this.consumeName();\n return \"url\" === t.toLowerCase() && 40 === this.peekCodePoint(0) ? (this.consumeCodePoint(), this.consumeUrlToken()) : 40 === this.peekCodePoint(0) ? (this.consumeCodePoint(), {\n type: h.FUNCTION_TOKEN,\n value: t\n }) : {\n type: h.IDENT_TOKEN,\n value: t\n };\n }, t.prototype.consumeUrlToken = function () {\n var t = [];\n if (this.consumeWhiteSpace(), -1 === this.peekCodePoint(0)) return {\n type: h.URL_TOKEN,\n value: \"\"\n };\n var A = this.peekCodePoint(0);\n if (39 === A || 34 === A) {\n var e = this.consumeStringToken(this.consumeCodePoint());\n return e.type === h.STRING_TOKEN && (this.consumeWhiteSpace(), -1 === this.peekCodePoint(0) || 41 === this.peekCodePoint(0)) ? (this.consumeCodePoint(), {\n type: h.URL_TOKEN,\n value: e.value\n }) : (this.consumeBadUrlRemnants(), mt);\n }\n for (;;) {\n var r = this.consumeCodePoint();\n if (-1 === r || 41 === r) return {\n type: h.URL_TOKEN,\n value: a.apply(void 0, t)\n };\n if (tt(r)) return this.consumeWhiteSpace(), -1 === this.peekCodePoint(0) || 41 === this.peekCodePoint(0) ? (this.consumeCodePoint(), {\n type: h.URL_TOKEN,\n value: a.apply(void 0, t)\n }) : (this.consumeBadUrlRemnants(), mt);\n if (34 === r || 39 === r || 40 === r || rt(r)) return this.consumeBadUrlRemnants(), mt;\n if (92 === r) {\n if (!nt(r, this.peekCodePoint(0))) return this.consumeBadUrlRemnants(), mt;\n t.push(this.consumeEscapedCodePoint());\n } else t.push(r);\n }\n }, t.prototype.consumeWhiteSpace = function () {\n for (; tt(this.peekCodePoint(0));) this.consumeCodePoint();\n }, t.prototype.consumeBadUrlRemnants = function () {\n for (;;) {\n var t = this.consumeCodePoint();\n if (41 === t || -1 === t) return;\n nt(t, this.peekCodePoint(0)) && this.consumeEscapedCodePoint();\n }\n }, t.prototype.consumeStringSlice = function (t) {\n for (var A = \"\"; t > 0;) {\n var e = Math.min(6e4, t);\n A += a.apply(void 0, this._value.splice(0, e)), t -= e;\n }\n return this._value.shift(), A;\n }, t.prototype.consumeStringToken = function (t) {\n for (var A = \"\", e = 0;;) {\n var r = this._value[e];\n if (-1 === r || void 0 === r || r === t) return A += this.consumeStringSlice(e), {\n type: h.STRING_TOKEN,\n value: A\n };\n if (10 === r) return this._value.splice(0, e), Qt;\n if (92 === r) {\n var n = this._value[e + 1];\n -1 !== n && void 0 !== n && (10 === n ? (A += this.consumeStringSlice(e), e = -1, this._value.shift()) : nt(r, n) && (A += this.consumeStringSlice(e), A += a(this.consumeEscapedCodePoint()), e = -1));\n }\n e++;\n }\n }, t.prototype.consumeNumber = function () {\n var t = [],\n A = 4,\n e = this.peekCodePoint(0);\n for (43 !== e && 45 !== e || t.push(this.consumeCodePoint()); Z(this.peekCodePoint(0));) t.push(this.consumeCodePoint());\n e = this.peekCodePoint(0);\n var r = this.peekCodePoint(1);\n if (46 === e && Z(r)) for (t.push(this.consumeCodePoint(), this.consumeCodePoint()), A = 8; Z(this.peekCodePoint(0));) t.push(this.consumeCodePoint());\n e = this.peekCodePoint(0), r = this.peekCodePoint(1);\n var n = this.peekCodePoint(2);\n if ((69 === e || 101 === e) && ((43 === r || 45 === r) && Z(n) || Z(r))) for (t.push(this.consumeCodePoint(), this.consumeCodePoint()), A = 8; Z(this.peekCodePoint(0));) t.push(this.consumeCodePoint());\n return [st(t), A];\n }, t.prototype.consumeNumericToken = function () {\n var t = this.consumeNumber(),\n A = t[0],\n e = t[1],\n r = this.peekCodePoint(0),\n n = this.peekCodePoint(1),\n i = this.peekCodePoint(2);\n if (it(r, n, i)) {\n var o = this.consumeName();\n return {\n type: h.DIMENSION_TOKEN,\n number: A,\n flags: e,\n unit: o\n };\n }\n return 37 === r ? (this.consumeCodePoint(), {\n type: h.PERCENTAGE_TOKEN,\n number: A,\n flags: e\n }) : {\n type: h.NUMBER_TOKEN,\n number: A,\n flags: e\n };\n }, t.prototype.consumeEscapedCodePoint = function () {\n var t = this.consumeCodePoint();\n if ($(t)) {\n for (var A = a(t); $(this.peekCodePoint(0)) && A.length < 6;) A += a(this.consumeCodePoint());\n tt(this.peekCodePoint(0)) && this.consumeCodePoint();\n var e = parseInt(A, 16);\n return 0 === e || function (t) {\n return t >= 55296 && t <= 57343;\n }(e) || e > 1114111 ? 65533 : e;\n }\n return -1 === t ? 65533 : t;\n }, t.prototype.consumeName = function () {\n for (var t = \"\";;) {\n var A = this.consumeCodePoint();\n if (et(A)) t += a(A);else {\n if (!nt(A, this.peekCodePoint(0))) return this.reconsumeCodePoint(A), t;\n t += a(this.consumeEscapedCodePoint());\n }\n }\n }, t;\n }(),\n Ht = function () {\n function t(t) {\n this._tokens = t;\n }\n return t.create = function (A) {\n var e = new Lt();\n return e.write(A), new t(e.read());\n }, t.parseValue = function (A) {\n return t.create(A).parseComponentValue();\n }, t.parseValues = function (A) {\n return t.create(A).parseComponentValues();\n }, t.prototype.parseComponentValue = function () {\n for (var t = this.consumeToken(); t.type === h.WHITESPACE_TOKEN;) t = this.consumeToken();\n if (t.type === h.EOF_TOKEN) throw new SyntaxError(\"Error parsing CSS component value, unexpected EOF\");\n this.reconsumeToken(t);\n var A = this.consumeComponentValue();\n do {\n t = this.consumeToken();\n } while (t.type === h.WHITESPACE_TOKEN);\n if (t.type === h.EOF_TOKEN) return A;\n throw new SyntaxError(\"Error parsing CSS component value, multiple values found when expecting only one\");\n }, t.prototype.parseComponentValues = function () {\n for (var t = [];;) {\n var A = this.consumeComponentValue();\n if (A.type === h.EOF_TOKEN) return t;\n t.push(A), t.push();\n }\n }, t.prototype.consumeComponentValue = function () {\n var t = this.consumeToken();\n switch (t.type) {\n case h.LEFT_CURLY_BRACKET_TOKEN:\n case h.LEFT_SQUARE_BRACKET_TOKEN:\n case h.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(t.type);\n case h.FUNCTION_TOKEN:\n return this.consumeFunction(t);\n }\n return t;\n }, t.prototype.consumeSimpleBlock = function (t) {\n for (var A = {\n type: t,\n values: []\n }, e = this.consumeToken();;) {\n if (e.type === h.EOF_TOKEN || Mt(e, t)) return A;\n this.reconsumeToken(e), A.values.push(this.consumeComponentValue()), e = this.consumeToken();\n }\n }, t.prototype.consumeFunction = function (t) {\n for (var A = {\n name: t.value,\n values: [],\n type: h.FUNCTION\n };;) {\n var e = this.consumeToken();\n if (e.type === h.EOF_TOKEN || e.type === h.RIGHT_PARENTHESIS_TOKEN) return A;\n this.reconsumeToken(e), A.values.push(this.consumeComponentValue());\n }\n }, t.prototype.consumeToken = function () {\n var t = this._tokens.shift();\n return void 0 === t ? bt : t;\n }, t.prototype.reconsumeToken = function (t) {\n this._tokens.unshift(t);\n }, t;\n }(),\n xt = function (t) {\n return t.type === h.DIMENSION_TOKEN;\n },\n St = function (t) {\n return t.type === h.NUMBER_TOKEN;\n },\n It = function (t) {\n return t.type === h.IDENT_TOKEN;\n },\n _t = function (t) {\n return t.type === h.STRING_TOKEN;\n },\n Tt = function (t, A) {\n return It(t) && t.value === A;\n },\n Rt = function (t) {\n return t.type !== h.WHITESPACE_TOKEN;\n },\n Ot = function (t) {\n return t.type !== h.WHITESPACE_TOKEN && t.type !== h.COMMA_TOKEN;\n },\n Kt = function (t) {\n var A = [],\n e = [];\n return t.forEach(function (t) {\n if (t.type === h.COMMA_TOKEN) {\n if (0 === e.length) throw new Error(\"Error parsing function args, zero tokens for arg\");\n return A.push(e), void (e = []);\n }\n t.type !== h.WHITESPACE_TOKEN && e.push(t);\n }), e.length && A.push(e), A;\n },\n Mt = function (t, A) {\n return A === h.LEFT_CURLY_BRACKET_TOKEN && t.type === h.RIGHT_CURLY_BRACKET_TOKEN || A === h.LEFT_SQUARE_BRACKET_TOKEN && t.type === h.RIGHT_SQUARE_BRACKET_TOKEN || A === h.LEFT_PARENTHESIS_TOKEN && t.type === h.RIGHT_PARENTHESIS_TOKEN;\n },\n Pt = function (t) {\n return t.type === h.NUMBER_TOKEN || t.type === h.DIMENSION_TOKEN;\n },\n Dt = function (t) {\n return t.type === h.PERCENTAGE_TOKEN || Pt(t);\n },\n kt = function (t) {\n return t.length > 1 ? [t[0], t[1]] : [t[0]];\n },\n zt = {\n type: h.NUMBER_TOKEN,\n number: 0,\n flags: 4\n },\n jt = {\n type: h.PERCENTAGE_TOKEN,\n number: 50,\n flags: 4\n },\n qt = {\n type: h.PERCENTAGE_TOKEN,\n number: 100,\n flags: 4\n },\n Vt = function (t, A, e) {\n var r = t[0],\n n = t[1];\n return [Xt(r, A), Xt(void 0 !== n ? n : r, e)];\n },\n Xt = function (t, A) {\n if (t.type === h.PERCENTAGE_TOKEN) return t.number / 100 * A;\n if (xt(t)) switch (t.unit) {\n case \"rem\":\n case \"em\":\n return 16 * t.number;\n case \"px\":\n default:\n return t.number;\n }\n return t.number;\n },\n Gt = function (t) {\n if (t.type === h.DIMENSION_TOKEN) switch (t.unit) {\n case \"deg\":\n return Math.PI * t.number / 180;\n case \"grad\":\n return Math.PI / 200 * t.number;\n case \"rad\":\n return t.number;\n case \"turn\":\n return 2 * Math.PI * t.number;\n }\n throw new Error(\"Unsupported angle type\");\n },\n Jt = function (t) {\n return t.type === h.DIMENSION_TOKEN && (\"deg\" === t.unit || \"grad\" === t.unit || \"rad\" === t.unit || \"turn\" === t.unit);\n },\n Wt = function (t) {\n switch (t.filter(It).map(function (t) {\n return t.value;\n }).join(\" \")) {\n case \"to bottom right\":\n case \"to right bottom\":\n case \"left top\":\n case \"top left\":\n return [zt, zt];\n case \"to top\":\n case \"bottom\":\n return Yt(0);\n case \"to bottom left\":\n case \"to left bottom\":\n case \"right top\":\n case \"top right\":\n return [zt, qt];\n case \"to right\":\n case \"left\":\n return Yt(90);\n case \"to top left\":\n case \"to left top\":\n case \"right bottom\":\n case \"bottom right\":\n return [qt, qt];\n case \"to bottom\":\n case \"top\":\n return Yt(180);\n case \"to top right\":\n case \"to right top\":\n case \"left bottom\":\n case \"bottom left\":\n return [qt, zt];\n case \"to left\":\n case \"right\":\n return Yt(270);\n }\n return 0;\n },\n Yt = function (t) {\n return Math.PI * t / 180;\n },\n Zt = function (t) {\n if (t.type === h.FUNCTION) {\n var A = aA[t.name];\n if (void 0 === A) throw new Error('Attempting to parse an unsupported color function \"' + t.name + '\"');\n return A(t.values);\n }\n if (t.type === h.HASH_TOKEN) {\n if (3 === t.value.length) {\n var e = t.value.substring(0, 1),\n r = t.value.substring(1, 2),\n n = t.value.substring(2, 3);\n return AA(parseInt(e + e, 16), parseInt(r + r, 16), parseInt(n + n, 16), 1);\n }\n if (4 === t.value.length) {\n e = t.value.substring(0, 1), r = t.value.substring(1, 2), n = t.value.substring(2, 3);\n var i = t.value.substring(3, 4);\n return AA(parseInt(e + e, 16), parseInt(r + r, 16), parseInt(n + n, 16), parseInt(i + i, 16) / 255);\n }\n if (6 === t.value.length) return e = t.value.substring(0, 2), r = t.value.substring(2, 4), n = t.value.substring(4, 6), AA(parseInt(e, 16), parseInt(r, 16), parseInt(n, 16), 1);\n if (8 === t.value.length) return e = t.value.substring(0, 2), r = t.value.substring(2, 4), n = t.value.substring(4, 6), i = t.value.substring(6, 8), AA(parseInt(e, 16), parseInt(r, 16), parseInt(n, 16), parseInt(i, 16) / 255);\n }\n if (t.type === h.IDENT_TOKEN) {\n var o = cA[t.value.toUpperCase()];\n if (void 0 !== o) return o;\n }\n return cA.TRANSPARENT;\n },\n $t = function (t) {\n return 0 == (255 & t);\n },\n tA = function (t) {\n var A = 255 & t,\n e = 255 & t >> 8,\n r = 255 & t >> 16,\n n = 255 & t >> 24;\n return A < 255 ? \"rgba(\" + n + \",\" + r + \",\" + e + \",\" + A / 255 + \")\" : \"rgb(\" + n + \",\" + r + \",\" + e + \")\";\n },\n AA = function (t, A, e, r) {\n return (t << 24 | A << 16 | e << 8 | Math.round(255 * r) << 0) >>> 0;\n },\n eA = function (t, A) {\n if (t.type === h.NUMBER_TOKEN) return t.number;\n if (t.type === h.PERCENTAGE_TOKEN) {\n var e = 3 === A ? 1 : 255;\n return 3 === A ? t.number / 100 * e : Math.round(t.number / 100 * e);\n }\n return 0;\n },\n rA = function (t) {\n var A = t.filter(Ot);\n if (3 === A.length) {\n var e = A.map(eA),\n r = e[0],\n n = e[1],\n i = e[2];\n return AA(r, n, i, 1);\n }\n if (4 === A.length) {\n var o = A.map(eA),\n s = (r = o[0], n = o[1], i = o[2], o[3]);\n return AA(r, n, i, s);\n }\n return 0;\n };\n function nA(t, A, e) {\n return e < 0 && (e += 1), e >= 1 && (e -= 1), e < 1 / 6 ? (A - t) * e * 6 + t : e < .5 ? A : e < 2 / 3 ? 6 * (A - t) * (2 / 3 - e) + t : t;\n }\n var iA,\n oA,\n sA = function (t) {\n var A = t.filter(Ot),\n e = A[0],\n r = A[1],\n n = A[2],\n i = A[3],\n o = (e.type === h.NUMBER_TOKEN ? Yt(e.number) : Gt(e)) / (2 * Math.PI),\n s = Dt(r) ? r.number / 100 : 0,\n a = Dt(n) ? n.number / 100 : 0,\n c = void 0 !== i && Dt(i) ? Xt(i, 1) : 1;\n if (0 === s) return AA(255 * a, 255 * a, 255 * a, 1);\n var u = a <= .5 ? a * (s + 1) : a + s - a * s,\n l = 2 * a - u,\n f = nA(l, u, o + 1 / 3),\n d = nA(l, u, o),\n p = nA(l, u, o - 1 / 3);\n return AA(255 * f, 255 * d, 255 * p, c);\n },\n aA = {\n hsl: sA,\n hsla: sA,\n rgb: rA,\n rgba: rA\n },\n cA = {\n ALICEBLUE: 4042850303,\n ANTIQUEWHITE: 4209760255,\n AQUA: 16777215,\n AQUAMARINE: 2147472639,\n AZURE: 4043309055,\n BEIGE: 4126530815,\n BISQUE: 4293182719,\n BLACK: 255,\n BLANCHEDALMOND: 4293643775,\n BLUE: 65535,\n BLUEVIOLET: 2318131967,\n BROWN: 2771004159,\n BURLYWOOD: 3736635391,\n CADETBLUE: 1604231423,\n CHARTREUSE: 2147418367,\n CHOCOLATE: 3530104575,\n CORAL: 4286533887,\n CORNFLOWERBLUE: 1687547391,\n CORNSILK: 4294499583,\n CRIMSON: 3692313855,\n CYAN: 16777215,\n DARKBLUE: 35839,\n DARKCYAN: 9145343,\n DARKGOLDENROD: 3095837695,\n DARKGRAY: 2846468607,\n DARKGREEN: 6553855,\n DARKGREY: 2846468607,\n DARKKHAKI: 3182914559,\n DARKMAGENTA: 2332068863,\n DARKOLIVEGREEN: 1433087999,\n DARKORANGE: 4287365375,\n DARKORCHID: 2570243327,\n DARKRED: 2332033279,\n DARKSALMON: 3918953215,\n DARKSEAGREEN: 2411499519,\n DARKSLATEBLUE: 1211993087,\n DARKSLATEGRAY: 793726975,\n DARKSLATEGREY: 793726975,\n DARKTURQUOISE: 13554175,\n DARKVIOLET: 2483082239,\n DEEPPINK: 4279538687,\n DEEPSKYBLUE: 12582911,\n DIMGRAY: 1768516095,\n DIMGREY: 1768516095,\n DODGERBLUE: 512819199,\n FIREBRICK: 2988581631,\n FLORALWHITE: 4294635775,\n FORESTGREEN: 579543807,\n FUCHSIA: 4278255615,\n GAINSBORO: 3705462015,\n GHOSTWHITE: 4177068031,\n GOLD: 4292280575,\n GOLDENROD: 3668254975,\n GRAY: 2155905279,\n GREEN: 8388863,\n GREENYELLOW: 2919182335,\n GREY: 2155905279,\n HONEYDEW: 4043305215,\n HOTPINK: 4285117695,\n INDIANRED: 3445382399,\n INDIGO: 1258324735,\n IVORY: 4294963455,\n KHAKI: 4041641215,\n LAVENDER: 3873897215,\n LAVENDERBLUSH: 4293981695,\n LAWNGREEN: 2096890111,\n LEMONCHIFFON: 4294626815,\n LIGHTBLUE: 2916673279,\n LIGHTCORAL: 4034953471,\n LIGHTCYAN: 3774873599,\n LIGHTGOLDENRODYELLOW: 4210742015,\n LIGHTGRAY: 3553874943,\n LIGHTGREEN: 2431553791,\n LIGHTGREY: 3553874943,\n LIGHTPINK: 4290167295,\n LIGHTSALMON: 4288707327,\n LIGHTSEAGREEN: 548580095,\n LIGHTSKYBLUE: 2278488831,\n LIGHTSLATEGRAY: 2005441023,\n LIGHTSLATEGREY: 2005441023,\n LIGHTSTEELBLUE: 2965692159,\n LIGHTYELLOW: 4294959359,\n LIME: 16711935,\n LIMEGREEN: 852308735,\n LINEN: 4210091775,\n MAGENTA: 4278255615,\n MAROON: 2147483903,\n MEDIUMAQUAMARINE: 1724754687,\n MEDIUMBLUE: 52735,\n MEDIUMORCHID: 3126187007,\n MEDIUMPURPLE: 2473647103,\n MEDIUMSEAGREEN: 1018393087,\n MEDIUMSLATEBLUE: 2070474495,\n MEDIUMSPRINGGREEN: 16423679,\n MEDIUMTURQUOISE: 1221709055,\n MEDIUMVIOLETRED: 3340076543,\n MIDNIGHTBLUE: 421097727,\n MINTCREAM: 4127193855,\n MISTYROSE: 4293190143,\n MOCCASIN: 4293178879,\n NAVAJOWHITE: 4292783615,\n NAVY: 33023,\n OLDLACE: 4260751103,\n OLIVE: 2155872511,\n OLIVEDRAB: 1804477439,\n ORANGE: 4289003775,\n ORANGERED: 4282712319,\n ORCHID: 3664828159,\n PALEGOLDENROD: 4008225535,\n PALEGREEN: 2566625535,\n PALETURQUOISE: 2951671551,\n PALEVIOLETRED: 3681588223,\n PAPAYAWHIP: 4293907967,\n PEACHPUFF: 4292524543,\n PERU: 3448061951,\n PINK: 4290825215,\n PLUM: 3718307327,\n POWDERBLUE: 2967529215,\n PURPLE: 2147516671,\n REBECCAPURPLE: 1714657791,\n RED: 4278190335,\n ROSYBROWN: 3163525119,\n ROYALBLUE: 1097458175,\n SADDLEBROWN: 2336560127,\n SALMON: 4202722047,\n SANDYBROWN: 4104413439,\n SEAGREEN: 780883967,\n SEASHELL: 4294307583,\n SIENNA: 2689740287,\n SILVER: 3233857791,\n SKYBLUE: 2278484991,\n SLATEBLUE: 1784335871,\n SLATEGRAY: 1887473919,\n SLATEGREY: 1887473919,\n SNOW: 4294638335,\n SPRINGGREEN: 16744447,\n STEELBLUE: 1182971135,\n TAN: 3535047935,\n TEAL: 8421631,\n THISTLE: 3636451583,\n TOMATO: 4284696575,\n TRANSPARENT: 0,\n TURQUOISE: 1088475391,\n VIOLET: 4001558271,\n WHEAT: 4125012991,\n WHITE: 4294967295,\n WHITESMOKE: 4126537215,\n YELLOW: 4294902015,\n YELLOWGREEN: 2597139199\n };\n (function (t) {\n t[t.VALUE = 0] = \"VALUE\", t[t.LIST = 1] = \"LIST\", t[t.IDENT_VALUE = 2] = \"IDENT_VALUE\", t[t.TYPE_VALUE = 3] = \"TYPE_VALUE\", t[t.TOKEN_VALUE = 4] = \"TOKEN_VALUE\";\n })(iA || (iA = {})), function (t) {\n t[t.BORDER_BOX = 0] = \"BORDER_BOX\", t[t.PADDING_BOX = 1] = \"PADDING_BOX\", t[t.CONTENT_BOX = 2] = \"CONTENT_BOX\";\n }(oA || (oA = {}));\n var uA,\n lA,\n hA,\n fA = {\n name: \"background-clip\",\n initialValue: \"border-box\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return t.map(function (t) {\n if (It(t)) switch (t.value) {\n case \"padding-box\":\n return oA.PADDING_BOX;\n case \"content-box\":\n return oA.CONTENT_BOX;\n }\n return oA.BORDER_BOX;\n });\n }\n },\n dA = {\n name: \"background-color\",\n initialValue: \"transparent\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"color\"\n },\n pA = function (t) {\n var A = Zt(t[0]),\n e = t[1];\n return e && Dt(e) ? {\n color: A,\n stop: e\n } : {\n color: A,\n stop: null\n };\n },\n BA = function (t, A) {\n var e = t[0],\n r = t[t.length - 1];\n null === e.stop && (e.stop = zt), null === r.stop && (r.stop = qt);\n for (var n = [], i = 0, o = 0; o < t.length; o++) {\n var s = t[o].stop;\n if (null !== s) {\n var a = Xt(s, A);\n a > i ? n.push(a) : n.push(i), i = a;\n } else n.push(null);\n }\n var c = null;\n for (o = 0; o < n.length; o++) {\n var u = n[o];\n if (null === u) null === c && (c = o);else if (null !== c) {\n for (var l = o - c, h = (u - n[c - 1]) / (l + 1), f = 1; f <= l; f++) n[c + f - 1] = h * f;\n c = null;\n }\n }\n return t.map(function (t, e) {\n return {\n color: t.color,\n stop: Math.max(Math.min(1, n[e] / A), 0)\n };\n });\n },\n gA = function (t, A, e) {\n var r = \"number\" == typeof t ? t : function (t, A, e) {\n var r = A / 2,\n n = e / 2,\n i = Xt(t[0], A) - r,\n o = n - Xt(t[1], e);\n return (Math.atan2(o, i) + 2 * Math.PI) % (2 * Math.PI);\n }(t, A, e),\n n = Math.abs(A * Math.sin(r)) + Math.abs(e * Math.cos(r)),\n i = A / 2,\n o = e / 2,\n s = n / 2,\n a = Math.sin(r - Math.PI / 2) * s,\n c = Math.cos(r - Math.PI / 2) * s;\n return [n, i - c, i + c, o - a, o + a];\n },\n wA = function (t, A) {\n return Math.sqrt(t * t + A * A);\n },\n mA = function (t, A, e, r, n) {\n return [[0, 0], [0, A], [t, 0], [t, A]].reduce(function (t, A) {\n var i = A[0],\n o = A[1],\n s = wA(e - i, r - o);\n return (n ? s < t.optimumDistance : s > t.optimumDistance) ? {\n optimumCorner: A,\n optimumDistance: s\n } : t;\n }, {\n optimumDistance: n ? 1 / 0 : -1 / 0,\n optimumCorner: null\n }).optimumCorner;\n },\n QA = function (t) {\n var A = Yt(180),\n e = [];\n return Kt(t).forEach(function (t, r) {\n if (0 === r) {\n var n = t[0];\n if (n.type === h.IDENT_TOKEN && -1 !== [\"top\", \"left\", \"right\", \"bottom\"].indexOf(n.value)) return void (A = Wt(t));\n if (Jt(n)) return void (A = (Gt(n) + Yt(270)) % Yt(360));\n }\n var i = pA(t);\n e.push(i);\n }), {\n angle: A,\n stops: e,\n type: uA.LINEAR_GRADIENT\n };\n },\n CA = function (t) {\n return 0 === t[0] && 255 === t[1] && 0 === t[2] && 255 === t[3];\n },\n yA = function (t, A, e, r, n) {\n var i = \"http://www.w3.org/2000/svg\",\n o = document.createElementNS(i, \"svg\"),\n s = document.createElementNS(i, \"foreignObject\");\n return o.setAttributeNS(null, \"width\", t.toString()), o.setAttributeNS(null, \"height\", A.toString()), s.setAttributeNS(null, \"width\", \"100%\"), s.setAttributeNS(null, \"height\", \"100%\"), s.setAttributeNS(null, \"x\", e.toString()), s.setAttributeNS(null, \"y\", r.toString()), s.setAttributeNS(null, \"externalResourcesRequired\", \"true\"), o.appendChild(s), s.appendChild(n), o;\n },\n vA = function (t) {\n return new Promise(function (A, e) {\n var r = new Image();\n r.onload = function () {\n return A(r);\n }, r.onerror = e, r.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(t));\n });\n },\n FA = {\n get SUPPORT_RANGE_BOUNDS() {\n var t = function (t) {\n if (t.createRange) {\n var A = t.createRange();\n if (A.getBoundingClientRect) {\n var e = t.createElement(\"boundtest\");\n e.style.height = \"123px\", e.style.display = \"block\", t.body.appendChild(e), A.selectNode(e);\n var r = A.getBoundingClientRect(),\n n = Math.round(r.height);\n if (t.body.removeChild(e), 123 === n) return !0;\n }\n }\n return !1;\n }(document);\n return Object.defineProperty(FA, \"SUPPORT_RANGE_BOUNDS\", {\n value: t\n }), t;\n },\n get SUPPORT_SVG_DRAWING() {\n var t = function (t) {\n var A = new Image(),\n e = t.createElement(\"canvas\"),\n r = e.getContext(\"2d\");\n if (!r) return !1;\n A.src = \"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>\";\n try {\n r.drawImage(A, 0, 0), e.toDataURL();\n } catch (t) {\n return !1;\n }\n return !0;\n }(document);\n return Object.defineProperty(FA, \"SUPPORT_SVG_DRAWING\", {\n value: t\n }), t;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\n var t = \"function\" == typeof Array.from && \"function\" == typeof window.fetch ? function (t) {\n var A = t.createElement(\"canvas\");\n A.width = 100, A.height = 100;\n var e = A.getContext(\"2d\");\n if (!e) return Promise.reject(!1);\n e.fillStyle = \"rgb(0, 255, 0)\", e.fillRect(0, 0, 100, 100);\n var r = new Image(),\n n = A.toDataURL();\n r.src = n;\n var i = yA(100, 100, 0, 0, r);\n return e.fillStyle = \"red\", e.fillRect(0, 0, 100, 100), vA(i).then(function (A) {\n e.drawImage(A, 0, 0);\n var r = e.getImageData(0, 0, 100, 100).data;\n e.fillStyle = \"red\", e.fillRect(0, 0, 100, 100);\n var i = t.createElement(\"div\");\n return i.style.backgroundImage = \"url(\" + n + \")\", i.style.height = \"100px\", CA(r) ? vA(yA(100, 100, 0, 0, i)) : Promise.reject(!1);\n }).then(function (t) {\n return e.drawImage(t, 0, 0), CA(e.getImageData(0, 0, 100, 100).data);\n }).catch(function () {\n return !1;\n });\n }(document) : Promise.resolve(!1);\n return Object.defineProperty(FA, \"SUPPORT_FOREIGNOBJECT_DRAWING\", {\n value: t\n }), t;\n },\n get SUPPORT_CORS_IMAGES() {\n var t = void 0 !== new Image().crossOrigin;\n return Object.defineProperty(FA, \"SUPPORT_CORS_IMAGES\", {\n value: t\n }), t;\n },\n get SUPPORT_RESPONSE_TYPE() {\n var t = \"string\" == typeof new XMLHttpRequest().responseType;\n return Object.defineProperty(FA, \"SUPPORT_RESPONSE_TYPE\", {\n value: t\n }), t;\n },\n get SUPPORT_CORS_XHR() {\n var t = (\"withCredentials\" in new XMLHttpRequest());\n return Object.defineProperty(FA, \"SUPPORT_CORS_XHR\", {\n value: t\n }), t;\n }\n },\n UA = function () {\n function t(t) {\n var A = t.id,\n e = t.enabled;\n this.id = A, this.enabled = e, this.start = Date.now();\n }\n return t.prototype.debug = function () {\n for (var t = [], A = 0; A < arguments.length; A++) t[A] = arguments[A];\n this.enabled && (\"undefined\" != typeof window && window.console && \"function\" == typeof console.debug ? console.debug.apply(console, [this.id, this.getTime() + \"ms\"].concat(t)) : this.info.apply(this, t));\n }, t.prototype.getTime = function () {\n return Date.now() - this.start;\n }, t.create = function (A) {\n t.instances[A.id] = new t(A);\n }, t.destroy = function (A) {\n delete t.instances[A];\n }, t.getInstance = function (A) {\n var e = t.instances[A];\n if (void 0 === e) throw new Error(\"No logger instance found with id \" + A);\n return e;\n }, t.prototype.info = function () {\n for (var t = [], A = 0; A < arguments.length; A++) t[A] = arguments[A];\n this.enabled && \"undefined\" != typeof window && window.console && \"function\" == typeof console.info && console.info.apply(console, [this.id, this.getTime() + \"ms\"].concat(t));\n }, t.prototype.error = function () {\n for (var t = [], A = 0; A < arguments.length; A++) t[A] = arguments[A];\n this.enabled && (\"undefined\" != typeof window && window.console && \"function\" == typeof console.error ? console.error.apply(console, [this.id, this.getTime() + \"ms\"].concat(t)) : this.info.apply(this, t));\n }, t.instances = {}, t;\n }(),\n NA = function () {\n function t() {}\n return t.create = function (A, e) {\n return t._caches[A] = new EA(A, e);\n }, t.destroy = function (A) {\n delete t._caches[A];\n }, t.open = function (A) {\n var e = t._caches[A];\n if (void 0 !== e) return e;\n throw new Error('Cache with key \"' + A + '\" not found');\n }, t.getOrigin = function (A) {\n var e = t._link;\n return e ? (e.href = A, e.href = e.href, e.protocol + e.hostname + e.port) : \"about:blank\";\n }, t.isSameOrigin = function (A) {\n return t.getOrigin(A) === t._origin;\n }, t.setContext = function (A) {\n t._link = A.document.createElement(\"a\"), t._origin = t.getOrigin(A.location.href);\n }, t.getInstance = function () {\n var A = t._current;\n if (null === A) throw new Error(\"No cache instance attached\");\n return A;\n }, t.attachInstance = function (A) {\n t._current = A;\n }, t.detachInstance = function () {\n t._current = null;\n }, t._caches = {}, t._origin = \"about:blank\", t._current = null, t;\n }(),\n EA = function () {\n function t(t, A) {\n this.id = t, this._options = A, this._cache = {};\n }\n return t.prototype.addImage = function (t) {\n var A = Promise.resolve();\n return this.has(t) ? A : _A(t) || xA(t) ? (this._cache[t] = this.loadImage(t), A) : A;\n }, t.prototype.match = function (t) {\n return this._cache[t];\n }, t.prototype.loadImage = function (t) {\n return r(this, void 0, void 0, function () {\n var A,\n e,\n r,\n i,\n o = this;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n return A = NA.isSameOrigin(t), e = !SA(t) && !0 === this._options.useCORS && FA.SUPPORT_CORS_IMAGES && !A, r = !SA(t) && !A && \"string\" == typeof this._options.proxy && FA.SUPPORT_CORS_XHR && !e, A || !1 !== this._options.allowTaint || SA(t) || r || e ? (i = t, r ? [4, this.proxy(i)] : [3, 2]) : [2];\n case 1:\n i = n.sent(), n.label = 2;\n case 2:\n return UA.getInstance(this.id).debug(\"Added image \" + t.substring(0, 256)), [4, new Promise(function (t, A) {\n var r = new Image();\n r.onload = function () {\n return t(r);\n }, r.onerror = A, (IA(i) || e) && (r.crossOrigin = \"anonymous\"), r.src = i, !0 === r.complete && setTimeout(function () {\n return t(r);\n }, 500), o._options.imageTimeout > 0 && setTimeout(function () {\n return A(\"Timed out (\" + o._options.imageTimeout + \"ms) loading image\");\n }, o._options.imageTimeout);\n })];\n case 3:\n return [2, n.sent()];\n }\n });\n });\n }, t.prototype.has = function (t) {\n return void 0 !== this._cache[t];\n }, t.prototype.keys = function () {\n return Promise.resolve(Object.keys(this._cache));\n }, t.prototype.proxy = function (t) {\n var A = this,\n e = this._options.proxy;\n if (!e) throw new Error(\"No proxy defined\");\n var r = t.substring(0, 256);\n return new Promise(function (n, i) {\n var o = FA.SUPPORT_RESPONSE_TYPE ? \"blob\" : \"text\",\n s = new XMLHttpRequest();\n if (s.onload = function () {\n if (200 === s.status) {\n if (\"text\" === o) n(s.response);else {\n var t = new FileReader();\n t.addEventListener(\"load\", function () {\n return n(t.result);\n }, !1), t.addEventListener(\"error\", function (t) {\n return i(t);\n }, !1), t.readAsDataURL(s.response);\n }\n } else i(\"Failed to proxy resource \" + r + \" with status code \" + s.status);\n }, s.onerror = i, s.open(\"GET\", e + \"?url=\" + encodeURIComponent(t) + \"&responseType=\" + o), \"text\" !== o && s instanceof XMLHttpRequest && (s.responseType = o), A._options.imageTimeout) {\n var a = A._options.imageTimeout;\n s.timeout = a, s.ontimeout = function () {\n return i(\"Timed out (\" + a + \"ms) proxying \" + r);\n };\n }\n s.send();\n });\n }, t;\n }(),\n bA = /^data:image\\/svg\\+xml/i,\n LA = /^data:image\\/.*;base64,/i,\n HA = /^data:image\\/.*/i,\n xA = function (t) {\n return FA.SUPPORT_SVG_DRAWING || !TA(t);\n },\n SA = function (t) {\n return HA.test(t);\n },\n IA = function (t) {\n return LA.test(t);\n },\n _A = function (t) {\n return \"blob\" === t.substr(0, 4);\n },\n TA = function (t) {\n return \"svg\" === t.substr(-3).toLowerCase() || bA.test(t);\n },\n RA = function (t) {\n var A = lA.CIRCLE,\n e = hA.FARTHEST_CORNER,\n r = [],\n n = [];\n return Kt(t).forEach(function (t, i) {\n var o = !0;\n if (0 === i ? o = t.reduce(function (t, A) {\n if (It(A)) switch (A.value) {\n case \"center\":\n return n.push(jt), !1;\n case \"top\":\n case \"left\":\n return n.push(zt), !1;\n case \"right\":\n case \"bottom\":\n return n.push(qt), !1;\n } else if (Dt(A) || Pt(A)) return n.push(A), !1;\n return t;\n }, o) : 1 === i && (o = t.reduce(function (t, r) {\n if (It(r)) switch (r.value) {\n case \"circle\":\n return A = lA.CIRCLE, !1;\n case \"ellipse\":\n return A = lA.ELLIPSE, !1;\n case \"contain\":\n case \"closest-side\":\n return e = hA.CLOSEST_SIDE, !1;\n case \"farthest-side\":\n return e = hA.FARTHEST_SIDE, !1;\n case \"closest-corner\":\n return e = hA.CLOSEST_CORNER, !1;\n case \"cover\":\n case \"farthest-corner\":\n return e = hA.FARTHEST_CORNER, !1;\n } else if (Pt(r) || Dt(r)) return Array.isArray(e) || (e = []), e.push(r), !1;\n return t;\n }, o)), o) {\n var s = pA(t);\n r.push(s);\n }\n }), {\n size: e,\n shape: A,\n stops: r,\n position: n,\n type: uA.RADIAL_GRADIENT\n };\n };\n !function (t) {\n t[t.URL = 0] = \"URL\", t[t.LINEAR_GRADIENT = 1] = \"LINEAR_GRADIENT\", t[t.RADIAL_GRADIENT = 2] = \"RADIAL_GRADIENT\";\n }(uA || (uA = {})), function (t) {\n t[t.CIRCLE = 0] = \"CIRCLE\", t[t.ELLIPSE = 1] = \"ELLIPSE\";\n }(lA || (lA = {})), function (t) {\n t[t.CLOSEST_SIDE = 0] = \"CLOSEST_SIDE\", t[t.FARTHEST_SIDE = 1] = \"FARTHEST_SIDE\", t[t.CLOSEST_CORNER = 2] = \"CLOSEST_CORNER\", t[t.FARTHEST_CORNER = 3] = \"FARTHEST_CORNER\";\n }(hA || (hA = {}));\n var OA,\n KA = function (t) {\n if (t.type === h.URL_TOKEN) {\n var A = {\n url: t.value,\n type: uA.URL\n };\n return NA.getInstance().addImage(t.value), A;\n }\n if (t.type === h.FUNCTION) {\n var e = MA[t.name];\n if (void 0 === e) throw new Error('Attempting to parse an unsupported image function \"' + t.name + '\"');\n return e(t.values);\n }\n throw new Error(\"Unsupported image type\");\n },\n MA = {\n \"linear-gradient\": function (t) {\n var A = Yt(180),\n e = [];\n return Kt(t).forEach(function (t, r) {\n if (0 === r) {\n var n = t[0];\n if (n.type === h.IDENT_TOKEN && \"to\" === n.value) return void (A = Wt(t));\n if (Jt(n)) return void (A = Gt(n));\n }\n var i = pA(t);\n e.push(i);\n }), {\n angle: A,\n stops: e,\n type: uA.LINEAR_GRADIENT\n };\n },\n \"-moz-linear-gradient\": QA,\n \"-ms-linear-gradient\": QA,\n \"-o-linear-gradient\": QA,\n \"-webkit-linear-gradient\": QA,\n \"radial-gradient\": function (t) {\n var A = lA.CIRCLE,\n e = hA.FARTHEST_CORNER,\n r = [],\n n = [];\n return Kt(t).forEach(function (t, i) {\n var o = !0;\n if (0 === i) {\n var s = !1;\n o = t.reduce(function (t, r) {\n if (s) {\n if (It(r)) switch (r.value) {\n case \"center\":\n return n.push(jt), t;\n case \"top\":\n case \"left\":\n return n.push(zt), t;\n case \"right\":\n case \"bottom\":\n return n.push(qt), t;\n } else (Dt(r) || Pt(r)) && n.push(r);\n } else if (It(r)) switch (r.value) {\n case \"circle\":\n return A = lA.CIRCLE, !1;\n case \"ellipse\":\n return A = lA.ELLIPSE, !1;\n case \"at\":\n return s = !0, !1;\n case \"closest-side\":\n return e = hA.CLOSEST_SIDE, !1;\n case \"cover\":\n case \"farthest-side\":\n return e = hA.FARTHEST_SIDE, !1;\n case \"contain\":\n case \"closest-corner\":\n return e = hA.CLOSEST_CORNER, !1;\n case \"farthest-corner\":\n return e = hA.FARTHEST_CORNER, !1;\n } else if (Pt(r) || Dt(r)) return Array.isArray(e) || (e = []), e.push(r), !1;\n return t;\n }, o);\n }\n if (o) {\n var a = pA(t);\n r.push(a);\n }\n }), {\n size: e,\n shape: A,\n stops: r,\n position: n,\n type: uA.RADIAL_GRADIENT\n };\n },\n \"-moz-radial-gradient\": RA,\n \"-ms-radial-gradient\": RA,\n \"-o-radial-gradient\": RA,\n \"-webkit-radial-gradient\": RA,\n \"-webkit-gradient\": function (t) {\n var A = Yt(180),\n e = [],\n r = uA.LINEAR_GRADIENT,\n n = lA.CIRCLE,\n i = hA.FARTHEST_CORNER;\n return Kt(t).forEach(function (t, A) {\n var n = t[0];\n if (0 === A) {\n if (It(n) && \"linear\" === n.value) return void (r = uA.LINEAR_GRADIENT);\n if (It(n) && \"radial\" === n.value) return void (r = uA.RADIAL_GRADIENT);\n }\n if (n.type === h.FUNCTION) if (\"from\" === n.name) {\n var i = Zt(n.values[0]);\n e.push({\n stop: zt,\n color: i\n });\n } else if (\"to\" === n.name) i = Zt(n.values[0]), e.push({\n stop: qt,\n color: i\n });else if (\"color-stop\" === n.name) {\n var o = n.values.filter(Ot);\n if (2 === o.length) {\n i = Zt(o[1]);\n var s = o[0];\n St(s) && e.push({\n stop: {\n type: h.PERCENTAGE_TOKEN,\n number: 100 * s.number,\n flags: s.flags\n },\n color: i\n });\n }\n }\n }), r === uA.LINEAR_GRADIENT ? {\n angle: (A + Yt(180)) % Yt(360),\n stops: e,\n type: r\n } : {\n size: i,\n shape: n,\n stops: e,\n position: [],\n type: r\n };\n }\n },\n PA = {\n name: \"background-image\",\n initialValue: \"none\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n if (0 === t.length) return [];\n var A = t[0];\n return A.type === h.IDENT_TOKEN && \"none\" === A.value ? [] : t.filter(function (t) {\n return Ot(t) && function (t) {\n return t.type !== h.FUNCTION || MA[t.name];\n }(t);\n }).map(KA);\n }\n },\n DA = {\n name: \"background-origin\",\n initialValue: \"border-box\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return t.map(function (t) {\n if (It(t)) switch (t.value) {\n case \"padding-box\":\n return 1;\n case \"content-box\":\n return 2;\n }\n return 0;\n });\n }\n },\n kA = {\n name: \"background-position\",\n initialValue: \"0% 0%\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n return Kt(t).map(function (t) {\n return t.filter(Dt);\n }).map(kt);\n }\n };\n !function (t) {\n t[t.REPEAT = 0] = \"REPEAT\", t[t.NO_REPEAT = 1] = \"NO_REPEAT\", t[t.REPEAT_X = 2] = \"REPEAT_X\", t[t.REPEAT_Y = 3] = \"REPEAT_Y\";\n }(OA || (OA = {}));\n var zA,\n jA = {\n name: \"background-repeat\",\n initialValue: \"repeat\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return Kt(t).map(function (t) {\n return t.filter(It).map(function (t) {\n return t.value;\n }).join(\" \");\n }).map(qA);\n }\n },\n qA = function (t) {\n switch (t) {\n case \"no-repeat\":\n return OA.NO_REPEAT;\n case \"repeat-x\":\n case \"repeat no-repeat\":\n return OA.REPEAT_X;\n case \"repeat-y\":\n case \"no-repeat repeat\":\n return OA.REPEAT_Y;\n case \"repeat\":\n default:\n return OA.REPEAT;\n }\n };\n !function (t) {\n t.AUTO = \"auto\", t.CONTAIN = \"contain\", t.COVER = \"cover\";\n }(zA || (zA = {}));\n var VA,\n XA = {\n name: \"background-size\",\n initialValue: \"0\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return Kt(t).map(function (t) {\n return t.filter(GA);\n });\n }\n },\n GA = function (t) {\n return It(t) || Dt(t);\n },\n JA = function (t) {\n return {\n name: \"border-\" + t + \"-color\",\n initialValue: \"transparent\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"color\"\n };\n },\n WA = JA(\"top\"),\n YA = JA(\"right\"),\n ZA = JA(\"bottom\"),\n $A = JA(\"left\"),\n te = function (t) {\n return {\n name: \"border-radius-\" + t,\n initialValue: \"0 0\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return kt(t.filter(Dt));\n }\n };\n },\n Ae = te(\"top-left\"),\n ee = te(\"top-right\"),\n re = te(\"bottom-right\"),\n ne = te(\"bottom-left\");\n !function (t) {\n t[t.NONE = 0] = \"NONE\", t[t.SOLID = 1] = \"SOLID\";\n }(VA || (VA = {}));\n var ie,\n oe = function (t) {\n return {\n name: \"border-\" + t + \"-style\",\n initialValue: \"solid\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"none\":\n return VA.NONE;\n }\n return VA.SOLID;\n }\n };\n },\n se = oe(\"top\"),\n ae = oe(\"right\"),\n ce = oe(\"bottom\"),\n ue = oe(\"left\"),\n le = function (t) {\n return {\n name: \"border-\" + t + \"-width\",\n initialValue: \"0\",\n type: iA.VALUE,\n prefix: !1,\n parse: function (t) {\n return xt(t) ? t.number : 0;\n }\n };\n },\n he = le(\"top\"),\n fe = le(\"right\"),\n de = le(\"bottom\"),\n pe = le(\"left\"),\n Be = {\n name: \"color\",\n initialValue: \"transparent\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"color\"\n },\n ge = {\n name: \"display\",\n initialValue: \"inline-block\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return t.filter(It).reduce(function (t, A) {\n return t | we(A.value);\n }, 0);\n }\n },\n we = function (t) {\n switch (t) {\n case \"block\":\n return 2;\n case \"inline\":\n return 4;\n case \"run-in\":\n return 8;\n case \"flow\":\n return 16;\n case \"flow-root\":\n return 32;\n case \"table\":\n return 64;\n case \"flex\":\n case \"-webkit-flex\":\n return 128;\n case \"grid\":\n case \"-ms-grid\":\n return 256;\n case \"ruby\":\n return 512;\n case \"subgrid\":\n return 1024;\n case \"list-item\":\n return 2048;\n case \"table-row-group\":\n return 4096;\n case \"table-header-group\":\n return 8192;\n case \"table-footer-group\":\n return 16384;\n case \"table-row\":\n return 32768;\n case \"table-cell\":\n return 65536;\n case \"table-column-group\":\n return 131072;\n case \"table-column\":\n return 262144;\n case \"table-caption\":\n return 524288;\n case \"ruby-base\":\n return 1048576;\n case \"ruby-text\":\n return 2097152;\n case \"ruby-base-container\":\n return 4194304;\n case \"ruby-text-container\":\n return 8388608;\n case \"contents\":\n return 16777216;\n case \"inline-block\":\n return 33554432;\n case \"inline-list-item\":\n return 67108864;\n case \"inline-table\":\n return 134217728;\n case \"inline-flex\":\n return 268435456;\n case \"inline-grid\":\n return 536870912;\n }\n return 0;\n };\n !function (t) {\n t[t.NONE = 0] = \"NONE\", t[t.LEFT = 1] = \"LEFT\", t[t.RIGHT = 2] = \"RIGHT\", t[t.INLINE_START = 3] = \"INLINE_START\", t[t.INLINE_END = 4] = \"INLINE_END\";\n }(ie || (ie = {}));\n var me,\n Qe = {\n name: \"float\",\n initialValue: \"none\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"left\":\n return ie.LEFT;\n case \"right\":\n return ie.RIGHT;\n case \"inline-start\":\n return ie.INLINE_START;\n case \"inline-end\":\n return ie.INLINE_END;\n }\n return ie.NONE;\n }\n },\n Ce = {\n name: \"letter-spacing\",\n initialValue: \"0\",\n prefix: !1,\n type: iA.VALUE,\n parse: function (t) {\n return t.type === h.IDENT_TOKEN && \"normal\" === t.value ? 0 : t.type === h.NUMBER_TOKEN || t.type === h.DIMENSION_TOKEN ? t.number : 0;\n }\n };\n !function (t) {\n t.NORMAL = \"normal\", t.STRICT = \"strict\";\n }(me || (me = {}));\n var ye,\n ve = {\n name: \"line-break\",\n initialValue: \"normal\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"strict\":\n return me.STRICT;\n case \"normal\":\n default:\n return me.NORMAL;\n }\n }\n },\n Fe = {\n name: \"line-height\",\n initialValue: \"normal\",\n prefix: !1,\n type: iA.TOKEN_VALUE\n },\n Ue = {\n name: \"list-style-image\",\n initialValue: \"none\",\n type: iA.VALUE,\n prefix: !1,\n parse: function (t) {\n return t.type === h.IDENT_TOKEN && \"none\" === t.value ? null : KA(t);\n }\n };\n !function (t) {\n t[t.INSIDE = 0] = \"INSIDE\", t[t.OUTSIDE = 1] = \"OUTSIDE\";\n }(ye || (ye = {}));\n var Ne,\n Ee = {\n name: \"list-style-position\",\n initialValue: \"outside\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"inside\":\n return ye.INSIDE;\n case \"outside\":\n default:\n return ye.OUTSIDE;\n }\n }\n };\n !function (t) {\n t[t.NONE = -1] = \"NONE\", t[t.DISC = 0] = \"DISC\", t[t.CIRCLE = 1] = \"CIRCLE\", t[t.SQUARE = 2] = \"SQUARE\", t[t.DECIMAL = 3] = \"DECIMAL\", t[t.CJK_DECIMAL = 4] = \"CJK_DECIMAL\", t[t.DECIMAL_LEADING_ZERO = 5] = \"DECIMAL_LEADING_ZERO\", t[t.LOWER_ROMAN = 6] = \"LOWER_ROMAN\", t[t.UPPER_ROMAN = 7] = \"UPPER_ROMAN\", t[t.LOWER_GREEK = 8] = \"LOWER_GREEK\", t[t.LOWER_ALPHA = 9] = \"LOWER_ALPHA\", t[t.UPPER_ALPHA = 10] = \"UPPER_ALPHA\", t[t.ARABIC_INDIC = 11] = \"ARABIC_INDIC\", t[t.ARMENIAN = 12] = \"ARMENIAN\", t[t.BENGALI = 13] = \"BENGALI\", t[t.CAMBODIAN = 14] = \"CAMBODIAN\", t[t.CJK_EARTHLY_BRANCH = 15] = \"CJK_EARTHLY_BRANCH\", t[t.CJK_HEAVENLY_STEM = 16] = \"CJK_HEAVENLY_STEM\", t[t.CJK_IDEOGRAPHIC = 17] = \"CJK_IDEOGRAPHIC\", t[t.DEVANAGARI = 18] = \"DEVANAGARI\", t[t.ETHIOPIC_NUMERIC = 19] = \"ETHIOPIC_NUMERIC\", t[t.GEORGIAN = 20] = \"GEORGIAN\", t[t.GUJARATI = 21] = \"GUJARATI\", t[t.GURMUKHI = 22] = \"GURMUKHI\", t[t.HEBREW = 22] = \"HEBREW\", t[t.HIRAGANA = 23] = \"HIRAGANA\", t[t.HIRAGANA_IROHA = 24] = \"HIRAGANA_IROHA\", t[t.JAPANESE_FORMAL = 25] = \"JAPANESE_FORMAL\", t[t.JAPANESE_INFORMAL = 26] = \"JAPANESE_INFORMAL\", t[t.KANNADA = 27] = \"KANNADA\", t[t.KATAKANA = 28] = \"KATAKANA\", t[t.KATAKANA_IROHA = 29] = \"KATAKANA_IROHA\", t[t.KHMER = 30] = \"KHMER\", t[t.KOREAN_HANGUL_FORMAL = 31] = \"KOREAN_HANGUL_FORMAL\", t[t.KOREAN_HANJA_FORMAL = 32] = \"KOREAN_HANJA_FORMAL\", t[t.KOREAN_HANJA_INFORMAL = 33] = \"KOREAN_HANJA_INFORMAL\", t[t.LAO = 34] = \"LAO\", t[t.LOWER_ARMENIAN = 35] = \"LOWER_ARMENIAN\", t[t.MALAYALAM = 36] = \"MALAYALAM\", t[t.MONGOLIAN = 37] = \"MONGOLIAN\", t[t.MYANMAR = 38] = \"MYANMAR\", t[t.ORIYA = 39] = \"ORIYA\", t[t.PERSIAN = 40] = \"PERSIAN\", t[t.SIMP_CHINESE_FORMAL = 41] = \"SIMP_CHINESE_FORMAL\", t[t.SIMP_CHINESE_INFORMAL = 42] = \"SIMP_CHINESE_INFORMAL\", t[t.TAMIL = 43] = \"TAMIL\", t[t.TELUGU = 44] = \"TELUGU\", t[t.THAI = 45] = \"THAI\", t[t.TIBETAN = 46] = \"TIBETAN\", t[t.TRAD_CHINESE_FORMAL = 47] = \"TRAD_CHINESE_FORMAL\", t[t.TRAD_CHINESE_INFORMAL = 48] = \"TRAD_CHINESE_INFORMAL\", t[t.UPPER_ARMENIAN = 49] = \"UPPER_ARMENIAN\", t[t.DISCLOSURE_OPEN = 50] = \"DISCLOSURE_OPEN\", t[t.DISCLOSURE_CLOSED = 51] = \"DISCLOSURE_CLOSED\";\n }(Ne || (Ne = {}));\n var be,\n Le = {\n name: \"list-style-type\",\n initialValue: \"none\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"disc\":\n return Ne.DISC;\n case \"circle\":\n return Ne.CIRCLE;\n case \"square\":\n return Ne.SQUARE;\n case \"decimal\":\n return Ne.DECIMAL;\n case \"cjk-decimal\":\n return Ne.CJK_DECIMAL;\n case \"decimal-leading-zero\":\n return Ne.DECIMAL_LEADING_ZERO;\n case \"lower-roman\":\n return Ne.LOWER_ROMAN;\n case \"upper-roman\":\n return Ne.UPPER_ROMAN;\n case \"lower-greek\":\n return Ne.LOWER_GREEK;\n case \"lower-alpha\":\n return Ne.LOWER_ALPHA;\n case \"upper-alpha\":\n return Ne.UPPER_ALPHA;\n case \"arabic-indic\":\n return Ne.ARABIC_INDIC;\n case \"armenian\":\n return Ne.ARMENIAN;\n case \"bengali\":\n return Ne.BENGALI;\n case \"cambodian\":\n return Ne.CAMBODIAN;\n case \"cjk-earthly-branch\":\n return Ne.CJK_EARTHLY_BRANCH;\n case \"cjk-heavenly-stem\":\n return Ne.CJK_HEAVENLY_STEM;\n case \"cjk-ideographic\":\n return Ne.CJK_IDEOGRAPHIC;\n case \"devanagari\":\n return Ne.DEVANAGARI;\n case \"ethiopic-numeric\":\n return Ne.ETHIOPIC_NUMERIC;\n case \"georgian\":\n return Ne.GEORGIAN;\n case \"gujarati\":\n return Ne.GUJARATI;\n case \"gurmukhi\":\n return Ne.GURMUKHI;\n case \"hebrew\":\n return Ne.HEBREW;\n case \"hiragana\":\n return Ne.HIRAGANA;\n case \"hiragana-iroha\":\n return Ne.HIRAGANA_IROHA;\n case \"japanese-formal\":\n return Ne.JAPANESE_FORMAL;\n case \"japanese-informal\":\n return Ne.JAPANESE_INFORMAL;\n case \"kannada\":\n return Ne.KANNADA;\n case \"katakana\":\n return Ne.KATAKANA;\n case \"katakana-iroha\":\n return Ne.KATAKANA_IROHA;\n case \"khmer\":\n return Ne.KHMER;\n case \"korean-hangul-formal\":\n return Ne.KOREAN_HANGUL_FORMAL;\n case \"korean-hanja-formal\":\n return Ne.KOREAN_HANJA_FORMAL;\n case \"korean-hanja-informal\":\n return Ne.KOREAN_HANJA_INFORMAL;\n case \"lao\":\n return Ne.LAO;\n case \"lower-armenian\":\n return Ne.LOWER_ARMENIAN;\n case \"malayalam\":\n return Ne.MALAYALAM;\n case \"mongolian\":\n return Ne.MONGOLIAN;\n case \"myanmar\":\n return Ne.MYANMAR;\n case \"oriya\":\n return Ne.ORIYA;\n case \"persian\":\n return Ne.PERSIAN;\n case \"simp-chinese-formal\":\n return Ne.SIMP_CHINESE_FORMAL;\n case \"simp-chinese-informal\":\n return Ne.SIMP_CHINESE_INFORMAL;\n case \"tamil\":\n return Ne.TAMIL;\n case \"telugu\":\n return Ne.TELUGU;\n case \"thai\":\n return Ne.THAI;\n case \"tibetan\":\n return Ne.TIBETAN;\n case \"trad-chinese-formal\":\n return Ne.TRAD_CHINESE_FORMAL;\n case \"trad-chinese-informal\":\n return Ne.TRAD_CHINESE_INFORMAL;\n case \"upper-armenian\":\n return Ne.UPPER_ARMENIAN;\n case \"disclosure-open\":\n return Ne.DISCLOSURE_OPEN;\n case \"disclosure-closed\":\n return Ne.DISCLOSURE_CLOSED;\n case \"none\":\n default:\n return Ne.NONE;\n }\n }\n },\n He = function (t) {\n return {\n name: \"margin-\" + t,\n initialValue: \"0\",\n prefix: !1,\n type: iA.TOKEN_VALUE\n };\n },\n xe = He(\"top\"),\n Se = He(\"right\"),\n Ie = He(\"bottom\"),\n _e = He(\"left\");\n !function (t) {\n t[t.VISIBLE = 0] = \"VISIBLE\", t[t.HIDDEN = 1] = \"HIDDEN\", t[t.SCROLL = 2] = \"SCROLL\", t[t.AUTO = 3] = \"AUTO\";\n }(be || (be = {}));\n var Te,\n Re = {\n name: \"overflow\",\n initialValue: \"visible\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return t.filter(It).map(function (t) {\n switch (t.value) {\n case \"hidden\":\n return be.HIDDEN;\n case \"scroll\":\n return be.SCROLL;\n case \"auto\":\n return be.AUTO;\n case \"visible\":\n default:\n return be.VISIBLE;\n }\n });\n }\n };\n !function (t) {\n t.NORMAL = \"normal\", t.BREAK_WORD = \"break-word\";\n }(Te || (Te = {}));\n var Oe,\n Ke = {\n name: \"overflow-wrap\",\n initialValue: \"normal\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"break-word\":\n return Te.BREAK_WORD;\n case \"normal\":\n default:\n return Te.NORMAL;\n }\n }\n },\n Me = function (t) {\n return {\n name: \"padding-\" + t,\n initialValue: \"0\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"length-percentage\"\n };\n },\n Pe = Me(\"top\"),\n De = Me(\"right\"),\n ke = Me(\"bottom\"),\n ze = Me(\"left\");\n !function (t) {\n t[t.LEFT = 0] = \"LEFT\", t[t.CENTER = 1] = \"CENTER\", t[t.RIGHT = 2] = \"RIGHT\";\n }(Oe || (Oe = {}));\n var je,\n qe = {\n name: \"text-align\",\n initialValue: \"left\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"right\":\n return Oe.RIGHT;\n case \"center\":\n case \"justify\":\n return Oe.CENTER;\n case \"left\":\n default:\n return Oe.LEFT;\n }\n }\n };\n !function (t) {\n t[t.STATIC = 0] = \"STATIC\", t[t.RELATIVE = 1] = \"RELATIVE\", t[t.ABSOLUTE = 2] = \"ABSOLUTE\", t[t.FIXED = 3] = \"FIXED\", t[t.STICKY = 4] = \"STICKY\";\n }(je || (je = {}));\n var Ve,\n Xe = {\n name: \"position\",\n initialValue: \"static\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"relative\":\n return je.RELATIVE;\n case \"absolute\":\n return je.ABSOLUTE;\n case \"fixed\":\n return je.FIXED;\n case \"sticky\":\n return je.STICKY;\n }\n return je.STATIC;\n }\n },\n Ge = {\n name: \"text-shadow\",\n initialValue: \"none\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n return 1 === t.length && Tt(t[0], \"none\") ? [] : Kt(t).map(function (t) {\n for (var A = {\n color: cA.TRANSPARENT,\n offsetX: zt,\n offsetY: zt,\n blur: zt\n }, e = 0, r = 0; r < t.length; r++) {\n var n = t[r];\n Pt(n) ? (0 === e ? A.offsetX = n : 1 === e ? A.offsetY = n : A.blur = n, e++) : A.color = Zt(n);\n }\n return A;\n });\n }\n };\n !function (t) {\n t[t.NONE = 0] = \"NONE\", t[t.LOWERCASE = 1] = \"LOWERCASE\", t[t.UPPERCASE = 2] = \"UPPERCASE\", t[t.CAPITALIZE = 3] = \"CAPITALIZE\";\n }(Ve || (Ve = {}));\n var Je,\n We = {\n name: \"text-transform\",\n initialValue: \"none\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"uppercase\":\n return Ve.UPPERCASE;\n case \"lowercase\":\n return Ve.LOWERCASE;\n case \"capitalize\":\n return Ve.CAPITALIZE;\n }\n return Ve.NONE;\n }\n },\n Ye = {\n name: \"transform\",\n initialValue: \"none\",\n prefix: !0,\n type: iA.VALUE,\n parse: function (t) {\n if (t.type === h.IDENT_TOKEN && \"none\" === t.value) return null;\n if (t.type === h.FUNCTION) {\n var A = Ze[t.name];\n if (void 0 === A) throw new Error('Attempting to parse an unsupported transform function \"' + t.name + '\"');\n return A(t.values);\n }\n return null;\n }\n },\n Ze = {\n matrix: function (t) {\n var A = t.filter(function (t) {\n return t.type === h.NUMBER_TOKEN;\n }).map(function (t) {\n return t.number;\n });\n return 6 === A.length ? A : null;\n },\n matrix3d: function (t) {\n var A = t.filter(function (t) {\n return t.type === h.NUMBER_TOKEN;\n }).map(function (t) {\n return t.number;\n }),\n e = A[0],\n r = A[1],\n n = (A[2], A[3], A[4]),\n i = A[5],\n o = (A[6], A[7], A[8], A[9], A[10], A[11], A[12]),\n s = A[13];\n return A[14], A[15], 16 === A.length ? [e, r, n, i, o, s] : null;\n }\n },\n $e = {\n type: h.PERCENTAGE_TOKEN,\n number: 50,\n flags: 4\n },\n tr = [$e, $e],\n Ar = {\n name: \"transform-origin\",\n initialValue: \"50% 50%\",\n prefix: !0,\n type: iA.LIST,\n parse: function (t) {\n var A = t.filter(Dt);\n return 2 !== A.length ? tr : [A[0], A[1]];\n }\n };\n !function (t) {\n t[t.VISIBLE = 0] = \"VISIBLE\", t[t.HIDDEN = 1] = \"HIDDEN\", t[t.COLLAPSE = 2] = \"COLLAPSE\";\n }(Je || (Je = {}));\n var er,\n rr = {\n name: \"visible\",\n initialValue: \"none\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"hidden\":\n return Je.HIDDEN;\n case \"collapse\":\n return Je.COLLAPSE;\n case \"visible\":\n default:\n return Je.VISIBLE;\n }\n }\n };\n !function (t) {\n t.NORMAL = \"normal\", t.BREAK_ALL = \"break-all\", t.KEEP_ALL = \"keep-all\";\n }(er || (er = {}));\n var nr,\n ir = {\n name: \"word-break\",\n initialValue: \"normal\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"break-all\":\n return er.BREAK_ALL;\n case \"keep-all\":\n return er.KEEP_ALL;\n case \"normal\":\n default:\n return er.NORMAL;\n }\n }\n },\n or = {\n name: \"z-index\",\n initialValue: \"auto\",\n prefix: !1,\n type: iA.VALUE,\n parse: function (t) {\n if (t.type === h.IDENT_TOKEN) return {\n auto: !0,\n order: 0\n };\n if (St(t)) return {\n auto: !1,\n order: t.number\n };\n throw new Error(\"Invalid z-index number parsed\");\n }\n },\n sr = {\n name: \"opacity\",\n initialValue: \"1\",\n type: iA.VALUE,\n prefix: !1,\n parse: function (t) {\n return St(t) ? t.number : 1;\n }\n },\n ar = {\n name: \"text-decoration-color\",\n initialValue: \"transparent\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"color\"\n },\n cr = {\n name: \"text-decoration-line\",\n initialValue: \"none\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n return t.filter(It).map(function (t) {\n switch (t.value) {\n case \"underline\":\n return 1;\n case \"overline\":\n return 2;\n case \"line-through\":\n return 3;\n case \"none\":\n return 4;\n }\n return 0;\n }).filter(function (t) {\n return 0 !== t;\n });\n }\n },\n ur = {\n name: \"font-family\",\n initialValue: \"\",\n prefix: !1,\n type: iA.LIST,\n parse: function (t) {\n var A = [],\n e = [];\n return t.forEach(function (t) {\n switch (t.type) {\n case h.IDENT_TOKEN:\n case h.STRING_TOKEN:\n A.push(t.value);\n break;\n case h.NUMBER_TOKEN:\n A.push(t.number.toString());\n break;\n case h.COMMA_TOKEN:\n e.push(A.join(\" \")), A.length = 0;\n }\n }), A.length && e.push(A.join(\" \")), e.map(function (t) {\n return -1 === t.indexOf(\" \") ? t : \"'\" + t + \"'\";\n });\n }\n },\n lr = {\n name: \"font-size\",\n initialValue: \"0\",\n prefix: !1,\n type: iA.TYPE_VALUE,\n format: \"length\"\n },\n hr = {\n name: \"font-weight\",\n initialValue: \"normal\",\n type: iA.VALUE,\n prefix: !1,\n parse: function (t) {\n if (St(t)) return t.number;\n if (It(t)) switch (t.value) {\n case \"bold\":\n return 700;\n case \"normal\":\n default:\n return 400;\n }\n return 400;\n }\n },\n fr = {\n name: \"font-variant\",\n initialValue: \"none\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n return t.filter(It).map(function (t) {\n return t.value;\n });\n }\n };\n !function (t) {\n t.NORMAL = \"normal\", t.ITALIC = \"italic\", t.OBLIQUE = \"oblique\";\n }(nr || (nr = {}));\n var dr,\n pr = {\n name: \"font-style\",\n initialValue: \"normal\",\n prefix: !1,\n type: iA.IDENT_VALUE,\n parse: function (t) {\n switch (t) {\n case \"oblique\":\n return nr.OBLIQUE;\n case \"italic\":\n return nr.ITALIC;\n case \"normal\":\n default:\n return nr.NORMAL;\n }\n }\n },\n Br = function (t, A) {\n return 0 != (t & A);\n },\n gr = {\n name: \"content\",\n initialValue: \"none\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n if (0 === t.length) return [];\n var A = t[0];\n return A.type === h.IDENT_TOKEN && \"none\" === A.value ? [] : t;\n }\n },\n wr = {\n name: \"counter-increment\",\n initialValue: \"none\",\n prefix: !0,\n type: iA.LIST,\n parse: function (t) {\n if (0 === t.length) return null;\n var A = t[0];\n if (A.type === h.IDENT_TOKEN && \"none\" === A.value) return null;\n for (var e = [], r = t.filter(Rt), n = 0; n < r.length; n++) {\n var i = r[n],\n o = r[n + 1];\n if (i.type === h.IDENT_TOKEN) {\n var s = o && St(o) ? o.number : 1;\n e.push({\n counter: i.value,\n increment: s\n });\n }\n }\n return e;\n }\n },\n mr = {\n name: \"counter-reset\",\n initialValue: \"none\",\n prefix: !0,\n type: iA.LIST,\n parse: function (t) {\n if (0 === t.length) return [];\n for (var A = [], e = t.filter(Rt), r = 0; r < e.length; r++) {\n var n = e[r],\n i = e[r + 1];\n if (It(n) && \"none\" !== n.value) {\n var o = i && St(i) ? i.number : 0;\n A.push({\n counter: n.value,\n reset: o\n });\n }\n }\n return A;\n }\n },\n Qr = {\n name: \"quotes\",\n initialValue: \"none\",\n prefix: !0,\n type: iA.LIST,\n parse: function (t) {\n if (0 === t.length) return null;\n var A = t[0];\n if (A.type === h.IDENT_TOKEN && \"none\" === A.value) return null;\n var e = [],\n r = t.filter(_t);\n if (r.length % 2 != 0) return null;\n for (var n = 0; n < r.length; n += 2) {\n var i = r[n].value,\n o = r[n + 1].value;\n e.push({\n open: i,\n close: o\n });\n }\n return e;\n }\n },\n Cr = function (t, A, e) {\n if (!t) return \"\";\n var r = t[Math.min(A, t.length - 1)];\n return r ? e ? r.open : r.close : \"\";\n },\n yr = {\n name: \"box-shadow\",\n initialValue: \"none\",\n type: iA.LIST,\n prefix: !1,\n parse: function (t) {\n return 1 === t.length && Tt(t[0], \"none\") ? [] : Kt(t).map(function (t) {\n for (var A = {\n color: 255,\n offsetX: zt,\n offsetY: zt,\n blur: zt,\n spread: zt,\n inset: !1\n }, e = 0, r = 0; r < t.length; r++) {\n var n = t[r];\n Tt(n, \"inset\") ? A.inset = !0 : Pt(n) ? (0 === e ? A.offsetX = n : 1 === e ? A.offsetY = n : 2 === e ? A.blur = n : A.spread = n, e++) : A.color = Zt(n);\n }\n return A;\n });\n }\n },\n vr = function () {\n function t(t) {\n this.backgroundClip = Nr(fA, t.backgroundClip), this.backgroundColor = Nr(dA, t.backgroundColor), this.backgroundImage = Nr(PA, t.backgroundImage), this.backgroundOrigin = Nr(DA, t.backgroundOrigin), this.backgroundPosition = Nr(kA, t.backgroundPosition), this.backgroundRepeat = Nr(jA, t.backgroundRepeat), this.backgroundSize = Nr(XA, t.backgroundSize), this.borderTopColor = Nr(WA, t.borderTopColor), this.borderRightColor = Nr(YA, t.borderRightColor), this.borderBottomColor = Nr(ZA, t.borderBottomColor), this.borderLeftColor = Nr($A, t.borderLeftColor), this.borderTopLeftRadius = Nr(Ae, t.borderTopLeftRadius), this.borderTopRightRadius = Nr(ee, t.borderTopRightRadius), this.borderBottomRightRadius = Nr(re, t.borderBottomRightRadius), this.borderBottomLeftRadius = Nr(ne, t.borderBottomLeftRadius), this.borderTopStyle = Nr(se, t.borderTopStyle), this.borderRightStyle = Nr(ae, t.borderRightStyle), this.borderBottomStyle = Nr(ce, t.borderBottomStyle), this.borderLeftStyle = Nr(ue, t.borderLeftStyle), this.borderTopWidth = Nr(he, t.borderTopWidth), this.borderRightWidth = Nr(fe, t.borderRightWidth), this.borderBottomWidth = Nr(de, t.borderBottomWidth), this.borderLeftWidth = Nr(pe, t.borderLeftWidth), this.boxShadow = Nr(yr, t.boxShadow), this.color = Nr(Be, t.color), this.display = Nr(ge, t.display), this.float = Nr(Qe, t.cssFloat), this.fontFamily = Nr(ur, t.fontFamily), this.fontSize = Nr(lr, t.fontSize), this.fontStyle = Nr(pr, t.fontStyle), this.fontVariant = Nr(fr, t.fontVariant), this.fontWeight = Nr(hr, t.fontWeight), this.letterSpacing = Nr(Ce, t.letterSpacing), this.lineBreak = Nr(ve, t.lineBreak), this.lineHeight = Nr(Fe, t.lineHeight), this.listStyleImage = Nr(Ue, t.listStyleImage), this.listStylePosition = Nr(Ee, t.listStylePosition), this.listStyleType = Nr(Le, t.listStyleType), this.marginTop = Nr(xe, t.marginTop), this.marginRight = Nr(Se, t.marginRight), this.marginBottom = Nr(Ie, t.marginBottom), this.marginLeft = Nr(_e, t.marginLeft), this.opacity = Nr(sr, t.opacity);\n var A = Nr(Re, t.overflow);\n this.overflowX = A[0], this.overflowY = A[A.length > 1 ? 1 : 0], this.overflowWrap = Nr(Ke, t.overflowWrap), this.paddingTop = Nr(Pe, t.paddingTop), this.paddingRight = Nr(De, t.paddingRight), this.paddingBottom = Nr(ke, t.paddingBottom), this.paddingLeft = Nr(ze, t.paddingLeft), this.position = Nr(Xe, t.position), this.textAlign = Nr(qe, t.textAlign), this.textDecorationColor = Nr(ar, t.textDecorationColor || t.color), this.textDecorationLine = Nr(cr, t.textDecorationLine), this.textShadow = Nr(Ge, t.textShadow), this.textTransform = Nr(We, t.textTransform), this.transform = Nr(Ye, t.transform), this.transformOrigin = Nr(Ar, t.transformOrigin), this.visibility = Nr(rr, t.visibility), this.wordBreak = Nr(ir, t.wordBreak), this.zIndex = Nr(or, t.zIndex);\n }\n return t.prototype.isVisible = function () {\n return this.display > 0 && this.opacity > 0 && this.visibility === Je.VISIBLE;\n }, t.prototype.isTransparent = function () {\n return $t(this.backgroundColor);\n }, t.prototype.isTransformed = function () {\n return null !== this.transform;\n }, t.prototype.isPositioned = function () {\n return this.position !== je.STATIC;\n }, t.prototype.isPositionedWithZIndex = function () {\n return this.isPositioned() && !this.zIndex.auto;\n }, t.prototype.isFloating = function () {\n return this.float !== ie.NONE;\n }, t.prototype.isInlineLevel = function () {\n return Br(this.display, 4) || Br(this.display, 33554432) || Br(this.display, 268435456) || Br(this.display, 536870912) || Br(this.display, 67108864) || Br(this.display, 134217728);\n }, t;\n }(),\n Fr = function (t) {\n this.content = Nr(gr, t.content), this.quotes = Nr(Qr, t.quotes);\n },\n Ur = function (t) {\n this.counterIncrement = Nr(wr, t.counterIncrement), this.counterReset = Nr(mr, t.counterReset);\n },\n Nr = function (t, A) {\n var e = new Lt(),\n r = null != A ? A.toString() : t.initialValue;\n e.write(r);\n var n = new Ht(e.read());\n switch (t.type) {\n case iA.IDENT_VALUE:\n var i = n.parseComponentValue();\n return t.parse(It(i) ? i.value : t.initialValue);\n case iA.VALUE:\n return t.parse(n.parseComponentValue());\n case iA.LIST:\n return t.parse(n.parseComponentValues());\n case iA.TOKEN_VALUE:\n return n.parseComponentValue();\n case iA.TYPE_VALUE:\n switch (t.format) {\n case \"angle\":\n return Gt(n.parseComponentValue());\n case \"color\":\n return Zt(n.parseComponentValue());\n case \"image\":\n return KA(n.parseComponentValue());\n case \"length\":\n var o = n.parseComponentValue();\n return Pt(o) ? o : zt;\n case \"length-percentage\":\n var s = n.parseComponentValue();\n return Dt(s) ? s : zt;\n }\n }\n throw new Error(\"Attempting to parse unsupported css format type \" + t.format);\n },\n Er = function (t) {\n this.styles = new vr(window.getComputedStyle(t, null)), this.textNodes = [], this.elements = [], null !== this.styles.transform && nn(t) && (t.style.transform = \"none\"), this.bounds = o(t), this.flags = 0;\n },\n br = function (t, A) {\n this.text = t, this.bounds = A;\n },\n Lr = function (t) {\n var A = t.ownerDocument;\n if (A) {\n var e = A.createElement(\"html2canvaswrapper\");\n e.appendChild(t.cloneNode(!0));\n var r = t.parentNode;\n if (r) {\n r.replaceChild(e, t);\n var n = o(e);\n return e.firstChild && r.replaceChild(e.firstChild, e), n;\n }\n }\n return new i(0, 0, 0, 0);\n },\n Hr = function (t, A, e) {\n var r = t.ownerDocument;\n if (!r) throw new Error(\"Node has no owner document\");\n var n = r.createRange();\n return n.setStart(t, A), n.setEnd(t, A + e), i.fromClientRect(n.getBoundingClientRect());\n },\n xr = function (t, A) {\n return 0 !== A.letterSpacing ? s(t).map(function (t) {\n return a(t);\n }) : Sr(t, A);\n },\n Sr = function (t, A) {\n for (var e, r = function (t, A) {\n var e = s(t),\n r = W(e, A),\n n = r[0],\n i = r[1],\n o = r[2],\n a = e.length,\n c = 0,\n u = 0;\n return {\n next: function () {\n if (u >= a) return {\n done: !0,\n value: null\n };\n for (var t = \"×\"; u < a && \"×\" === (t = J(e, i, n, ++u, o)););\n if (\"×\" !== t || u === a) {\n var A = new Y(e, t, c, u);\n return c = u, {\n value: A,\n done: !1\n };\n }\n return {\n done: !0,\n value: null\n };\n }\n };\n }(t, {\n lineBreak: A.lineBreak,\n wordBreak: A.overflowWrap === Te.BREAK_WORD ? \"break-word\" : A.wordBreak\n }), n = []; !(e = r.next()).done;) e.value && n.push(e.value.slice());\n return n;\n },\n Ir = function (t, A) {\n this.text = _r(t.data, A.textTransform), this.textBounds = function (t, A, e) {\n var r = xr(t, A),\n n = [],\n i = 0;\n return r.forEach(function (t) {\n if (A.textDecorationLine.length || t.trim().length > 0) {\n if (FA.SUPPORT_RANGE_BOUNDS) n.push(new br(t, Hr(e, i, t.length)));else {\n var r = e.splitText(t.length);\n n.push(new br(t, Lr(e))), e = r;\n }\n } else FA.SUPPORT_RANGE_BOUNDS || (e = e.splitText(t.length));\n i += t.length;\n }), n;\n }(this.text, A, t);\n },\n _r = function (t, A) {\n switch (A) {\n case Ve.LOWERCASE:\n return t.toLowerCase();\n case Ve.CAPITALIZE:\n return t.replace(Tr, Rr);\n case Ve.UPPERCASE:\n return t.toUpperCase();\n default:\n return t;\n }\n },\n Tr = /(^|\\s|:|-|\\(|\\))([a-z])/g,\n Rr = function (t, A, e) {\n return t.length > 0 ? A + e.toUpperCase() : t;\n },\n Or = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n return e.src = A.currentSrc || A.src, e.intrinsicWidth = A.naturalWidth, e.intrinsicHeight = A.naturalHeight, NA.getInstance().addImage(e.src), e;\n }\n return A(e, t), e;\n }(Er),\n Kr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n return e.canvas = A, e.intrinsicWidth = A.width, e.intrinsicHeight = A.height, e;\n }\n return A(e, t), e;\n }(Er),\n Mr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this,\n r = new XMLSerializer();\n return e.svg = \"data:image/svg+xml,\" + encodeURIComponent(r.serializeToString(A)), e.intrinsicWidth = A.width.baseVal.value, e.intrinsicHeight = A.height.baseVal.value, NA.getInstance().addImage(e.svg), e;\n }\n return A(e, t), e;\n }(Er),\n Pr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n return e.value = A.value, e;\n }\n return A(e, t), e;\n }(Er),\n Dr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n return e.start = A.start, e.reversed = \"boolean\" == typeof A.reversed && !0 === A.reversed, e;\n }\n return A(e, t), e;\n }(Er),\n kr = [{\n type: h.DIMENSION_TOKEN,\n flags: 0,\n unit: \"px\",\n number: 3\n }],\n zr = [{\n type: h.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }],\n jr = \"password\",\n qr = function (t) {\n function e(A) {\n var e,\n r,\n n,\n o = t.call(this, A) || this;\n switch (o.type = A.type.toLowerCase(), o.checked = A.checked, o.value = 0 === (r = (e = A).type === jr ? new Array(e.value.length + 1).join(\"•\") : e.value).length ? e.placeholder || \"\" : r, \"checkbox\" !== o.type && \"radio\" !== o.type || (o.styles.backgroundColor = 3739148031, o.styles.borderTopColor = o.styles.borderRightColor = o.styles.borderBottomColor = o.styles.borderLeftColor = 2779096575, o.styles.borderTopWidth = o.styles.borderRightWidth = o.styles.borderBottomWidth = o.styles.borderLeftWidth = 1, o.styles.borderTopStyle = o.styles.borderRightStyle = o.styles.borderBottomStyle = o.styles.borderLeftStyle = VA.SOLID, o.styles.backgroundClip = [oA.BORDER_BOX], o.styles.backgroundOrigin = [0], o.bounds = (n = o.bounds).width > n.height ? new i(n.left + (n.width - n.height) / 2, n.top, n.height, n.height) : n.width < n.height ? new i(n.left, n.top + (n.height - n.width) / 2, n.width, n.width) : n), o.type) {\n case \"checkbox\":\n o.styles.borderTopRightRadius = o.styles.borderTopLeftRadius = o.styles.borderBottomRightRadius = o.styles.borderBottomLeftRadius = kr;\n break;\n case \"radio\":\n o.styles.borderTopRightRadius = o.styles.borderTopLeftRadius = o.styles.borderBottomRightRadius = o.styles.borderBottomLeftRadius = zr;\n }\n return o;\n }\n return A(e, t), e;\n }(Er),\n Vr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this,\n r = A.options[A.selectedIndex || 0];\n return e.value = r && r.text || \"\", e;\n }\n return A(e, t), e;\n }(Er),\n Xr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n return e.value = A.value, e;\n }\n return A(e, t), e;\n }(Er),\n Gr = function (t) {\n return Zt(Ht.create(t).parseComponentValue());\n },\n Jr = function (t) {\n function e(A) {\n var e = t.call(this, A) || this;\n e.src = A.src, e.width = parseInt(A.width, 10) || 0, e.height = parseInt(A.height, 10) || 0, e.backgroundColor = e.styles.backgroundColor;\n try {\n if (A.contentWindow && A.contentWindow.document && A.contentWindow.document.documentElement) {\n e.tree = $r(A.contentWindow.document.documentElement);\n var r = A.contentWindow.document.documentElement ? Gr(getComputedStyle(A.contentWindow.document.documentElement).backgroundColor) : cA.TRANSPARENT,\n n = A.contentWindow.document.body ? Gr(getComputedStyle(A.contentWindow.document.body).backgroundColor) : cA.TRANSPARENT;\n e.backgroundColor = $t(r) ? $t(n) ? e.styles.backgroundColor : n : r;\n }\n } catch (t) {}\n return e;\n }\n return A(e, t), e;\n }(Er),\n Wr = [\"OL\", \"UL\", \"MENU\"],\n Yr = function (t, A, e) {\n for (var r = t.firstChild, n = void 0; r; r = n) if (n = r.nextSibling, en(r) && r.data.trim().length > 0) A.textNodes.push(new Ir(r, A.styles));else if (rn(r)) {\n var i = Zr(r);\n i.styles.isVisible() && (tn(r, i, e) ? i.flags |= 4 : An(i.styles) && (i.flags |= 2), -1 !== Wr.indexOf(r.tagName) && (i.flags |= 8), A.elements.push(i), gn(r) || un(r) || wn(r) || Yr(r, i, e));\n }\n },\n Zr = function (t) {\n return fn(t) ? new Or(t) : hn(t) ? new Kr(t) : un(t) ? new Mr(t) : sn(t) ? new Pr(t) : an(t) ? new Dr(t) : cn(t) ? new qr(t) : wn(t) ? new Vr(t) : gn(t) ? new Xr(t) : dn(t) ? new Jr(t) : new Er(t);\n },\n $r = function (t) {\n var A = Zr(t);\n return A.flags |= 4, Yr(t, A, A), A;\n },\n tn = function (t, A, e) {\n return A.styles.isPositionedWithZIndex() || A.styles.opacity < 1 || A.styles.isTransformed() || ln(t) && e.styles.isTransparent();\n },\n An = function (t) {\n return t.isPositioned() || t.isFloating();\n },\n en = function (t) {\n return t.nodeType === Node.TEXT_NODE;\n },\n rn = function (t) {\n return t.nodeType === Node.ELEMENT_NODE;\n },\n nn = function (t) {\n return rn(t) && void 0 !== t.style && !on(t);\n },\n on = function (t) {\n return \"object\" == typeof t.className;\n },\n sn = function (t) {\n return \"LI\" === t.tagName;\n },\n an = function (t) {\n return \"OL\" === t.tagName;\n },\n cn = function (t) {\n return \"INPUT\" === t.tagName;\n },\n un = function (t) {\n return \"svg\" === t.tagName;\n },\n ln = function (t) {\n return \"BODY\" === t.tagName;\n },\n hn = function (t) {\n return \"CANVAS\" === t.tagName;\n },\n fn = function (t) {\n return \"IMG\" === t.tagName;\n },\n dn = function (t) {\n return \"IFRAME\" === t.tagName;\n },\n pn = function (t) {\n return \"STYLE\" === t.tagName;\n },\n Bn = function (t) {\n return \"SCRIPT\" === t.tagName;\n },\n gn = function (t) {\n return \"TEXTAREA\" === t.tagName;\n },\n wn = function (t) {\n return \"SELECT\" === t.tagName;\n },\n mn = function () {\n function t() {\n this.counters = {};\n }\n return t.prototype.getCounterValue = function (t) {\n var A = this.counters[t];\n return A && A.length ? A[A.length - 1] : 1;\n }, t.prototype.getCounterValues = function (t) {\n var A = this.counters[t];\n return A || [];\n }, t.prototype.pop = function (t) {\n var A = this;\n t.forEach(function (t) {\n return A.counters[t].pop();\n });\n }, t.prototype.parse = function (t) {\n var A = this,\n e = t.counterIncrement,\n r = t.counterReset,\n n = !0;\n null !== e && e.forEach(function (t) {\n var e = A.counters[t.counter];\n e && 0 !== t.increment && (n = !1, e[Math.max(0, e.length - 1)] += t.increment);\n });\n var i = [];\n return n && r.forEach(function (t) {\n var e = A.counters[t.counter];\n i.push(t.counter), e || (e = A.counters[t.counter] = []), e.push(t.reset);\n }), i;\n }, t;\n }(),\n Qn = {\n integers: [1e3, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: [\"M\", \"CM\", \"D\", \"CD\", \"C\", \"XC\", \"L\", \"XL\", \"X\", \"IX\", \"V\", \"IV\", \"I\"]\n },\n Cn = {\n integers: [9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: [\"Ք\", \"Փ\", \"Ւ\", \"Ց\", \"Ր\", \"Տ\", \"Վ\", \"Ս\", \"Ռ\", \"Ջ\", \"Պ\", \"Չ\", \"Ո\", \"Շ\", \"Ն\", \"Յ\", \"Մ\", \"Ճ\", \"Ղ\", \"Ձ\", \"Հ\", \"Կ\", \"Ծ\", \"Խ\", \"Լ\", \"Ի\", \"Ժ\", \"Թ\", \"Ը\", \"Է\", \"Զ\", \"Ե\", \"Դ\", \"Գ\", \"Բ\", \"Ա\"]\n },\n yn = {\n integers: [1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: [\"י׳\", \"ט׳\", \"ח׳\", \"ז׳\", \"ו׳\", \"ה׳\", \"ד׳\", \"ג׳\", \"ב׳\", \"א׳\", \"ת\", \"ש\", \"ר\", \"ק\", \"צ\", \"פ\", \"ע\", \"ס\", \"נ\", \"מ\", \"ל\", \"כ\", \"יט\", \"יח\", \"יז\", \"טז\", \"טו\", \"י\", \"ט\", \"ח\", \"ז\", \"ו\", \"ה\", \"ד\", \"ג\", \"ב\", \"א\"]\n },\n vn = {\n integers: [1e4, 9e3, 8e3, 7e3, 6e3, 5e3, 4e3, 3e3, 2e3, 1e3, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1],\n values: [\"ჵ\", \"ჰ\", \"ჯ\", \"ჴ\", \"ხ\", \"ჭ\", \"წ\", \"ძ\", \"ც\", \"ჩ\", \"შ\", \"ყ\", \"ღ\", \"ქ\", \"ფ\", \"ჳ\", \"ტ\", \"ს\", \"რ\", \"ჟ\", \"პ\", \"ო\", \"ჲ\", \"ნ\", \"მ\", \"ლ\", \"კ\", \"ი\", \"თ\", \"ჱ\", \"ზ\", \"ვ\", \"ე\", \"დ\", \"გ\", \"ბ\", \"ა\"]\n },\n Fn = function (t, A, e, r, n, i) {\n return t < A || t > e ? Ln(t, n, i.length > 0) : r.integers.reduce(function (A, e, n) {\n for (; t >= e;) t -= e, A += r.values[n];\n return A;\n }, \"\") + i;\n },\n Un = function (t, A, e, r) {\n var n = \"\";\n do {\n e || t--, n = r(t) + n, t /= A;\n } while (t * A >= A);\n return n;\n },\n Nn = function (t, A, e, r, n) {\n var i = e - A + 1;\n return (t < 0 ? \"-\" : \"\") + (Un(Math.abs(t), i, r, function (t) {\n return a(Math.floor(t % i) + A);\n }) + n);\n },\n En = function (t, A, e) {\n void 0 === e && (e = \". \");\n var r = A.length;\n return Un(Math.abs(t), r, !1, function (t) {\n return A[Math.floor(t % r)];\n }) + e;\n },\n bn = function (t, A, e, r, n, i) {\n if (t < -9999 || t > 9999) return Ln(t, Ne.CJK_DECIMAL, n.length > 0);\n var o = Math.abs(t),\n s = n;\n if (0 === o) return A[0] + s;\n for (var a = 0; o > 0 && a <= 4; a++) {\n var c = o % 10;\n 0 === c && Br(i, 1) && \"\" !== s ? s = A[c] + s : c > 1 || 1 === c && 0 === a || 1 === c && 1 === a && Br(i, 2) || 1 === c && 1 === a && Br(i, 4) && t > 100 || 1 === c && a > 1 && Br(i, 8) ? s = A[c] + (a > 0 ? e[a - 1] : \"\") + s : 1 === c && a > 0 && (s = e[a - 1] + s), o = Math.floor(o / 10);\n }\n return (t < 0 ? r : \"\") + s;\n },\n Ln = function (t, A, e) {\n var r = e ? \". \" : \"\",\n n = e ? \"、\" : \"\",\n i = e ? \", \" : \"\",\n o = e ? \" \" : \"\";\n switch (A) {\n case Ne.DISC:\n return \"•\" + o;\n case Ne.CIRCLE:\n return \"◦\" + o;\n case Ne.SQUARE:\n return \"◾\" + o;\n case Ne.DECIMAL_LEADING_ZERO:\n var s = Nn(t, 48, 57, !0, r);\n return s.length < 4 ? \"0\" + s : s;\n case Ne.CJK_DECIMAL:\n return En(t, \"〇一二三四五六七八九\", n);\n case Ne.LOWER_ROMAN:\n return Fn(t, 1, 3999, Qn, Ne.DECIMAL, r).toLowerCase();\n case Ne.UPPER_ROMAN:\n return Fn(t, 1, 3999, Qn, Ne.DECIMAL, r);\n case Ne.LOWER_GREEK:\n return Nn(t, 945, 969, !1, r);\n case Ne.LOWER_ALPHA:\n return Nn(t, 97, 122, !1, r);\n case Ne.UPPER_ALPHA:\n return Nn(t, 65, 90, !1, r);\n case Ne.ARABIC_INDIC:\n return Nn(t, 1632, 1641, !0, r);\n case Ne.ARMENIAN:\n case Ne.UPPER_ARMENIAN:\n return Fn(t, 1, 9999, Cn, Ne.DECIMAL, r);\n case Ne.LOWER_ARMENIAN:\n return Fn(t, 1, 9999, Cn, Ne.DECIMAL, r).toLowerCase();\n case Ne.BENGALI:\n return Nn(t, 2534, 2543, !0, r);\n case Ne.CAMBODIAN:\n case Ne.KHMER:\n return Nn(t, 6112, 6121, !0, r);\n case Ne.CJK_EARTHLY_BRANCH:\n return En(t, \"子丑寅卯辰巳午未申酉戌亥\", n);\n case Ne.CJK_HEAVENLY_STEM:\n return En(t, \"甲乙丙丁戊己庚辛壬癸\", n);\n case Ne.CJK_IDEOGRAPHIC:\n case Ne.TRAD_CHINESE_INFORMAL:\n return bn(t, \"零一二三四五六七八九\", \"十百千萬\", \"負\", n, 14);\n case Ne.TRAD_CHINESE_FORMAL:\n return bn(t, \"零壹貳參肆伍陸柒捌玖\", \"拾佰仟萬\", \"負\", n, 15);\n case Ne.SIMP_CHINESE_INFORMAL:\n return bn(t, \"零一二三四五六七八九\", \"十百千萬\", \"负\", n, 14);\n case Ne.SIMP_CHINESE_FORMAL:\n return bn(t, \"零壹贰叁肆伍陆柒捌玖\", \"拾佰仟萬\", \"负\", n, 15);\n case Ne.JAPANESE_INFORMAL:\n return bn(t, \"〇一二三四五六七八九\", \"十百千万\", \"マイナス\", n, 0);\n case Ne.JAPANESE_FORMAL:\n return bn(t, \"零壱弐参四伍六七八九\", \"拾百千万\", \"マイナス\", n, 7);\n case Ne.KOREAN_HANGUL_FORMAL:\n return bn(t, \"영일이삼사오육칠팔구\", \"십백천만\", \"마이너스\", i, 7);\n case Ne.KOREAN_HANJA_INFORMAL:\n return bn(t, \"零一二三四五六七八九\", \"十百千萬\", \"마이너스\", i, 0);\n case Ne.KOREAN_HANJA_FORMAL:\n return bn(t, \"零壹貳參四五六七八九\", \"拾百千\", \"마이너스\", i, 7);\n case Ne.DEVANAGARI:\n return Nn(t, 2406, 2415, !0, r);\n case Ne.GEORGIAN:\n return Fn(t, 1, 19999, vn, Ne.DECIMAL, r);\n case Ne.GUJARATI:\n return Nn(t, 2790, 2799, !0, r);\n case Ne.GURMUKHI:\n return Nn(t, 2662, 2671, !0, r);\n case Ne.HEBREW:\n return Fn(t, 1, 10999, yn, Ne.DECIMAL, r);\n case Ne.HIRAGANA:\n return En(t, \"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん\");\n case Ne.HIRAGANA_IROHA:\n return En(t, \"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす\");\n case Ne.KANNADA:\n return Nn(t, 3302, 3311, !0, r);\n case Ne.KATAKANA:\n return En(t, \"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン\", n);\n case Ne.KATAKANA_IROHA:\n return En(t, \"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス\", n);\n case Ne.LAO:\n return Nn(t, 3792, 3801, !0, r);\n case Ne.MONGOLIAN:\n return Nn(t, 6160, 6169, !0, r);\n case Ne.MYANMAR:\n return Nn(t, 4160, 4169, !0, r);\n case Ne.ORIYA:\n return Nn(t, 2918, 2927, !0, r);\n case Ne.PERSIAN:\n return Nn(t, 1776, 1785, !0, r);\n case Ne.TAMIL:\n return Nn(t, 3046, 3055, !0, r);\n case Ne.TELUGU:\n return Nn(t, 3174, 3183, !0, r);\n case Ne.THAI:\n return Nn(t, 3664, 3673, !0, r);\n case Ne.TIBETAN:\n return Nn(t, 3872, 3881, !0, r);\n case Ne.DECIMAL:\n default:\n return Nn(t, 48, 57, !0, r);\n }\n },\n Hn = function () {\n function t(t, A) {\n if (this.options = A, this.scrolledElements = [], this.referenceElement = t, this.counters = new mn(), this.quoteDepth = 0, !t.ownerDocument) throw new Error(\"Cloned element does not have an owner document\");\n this.documentElement = this.cloneNode(t.ownerDocument.documentElement);\n }\n return t.prototype.toIFrame = function (t, A) {\n var e = this,\n i = Sn(t, A);\n if (!i.contentWindow) return Promise.reject(\"Unable to find iframe window\");\n var o = t.defaultView.pageXOffset,\n s = t.defaultView.pageYOffset,\n a = i.contentWindow,\n c = a.document,\n u = In(i).then(function () {\n return r(e, void 0, void 0, function () {\n var t;\n return n(this, function (e) {\n switch (e.label) {\n case 0:\n return this.scrolledElements.forEach(On), a && (a.scrollTo(A.left, A.top), !/(iPad|iPhone|iPod)/g.test(navigator.userAgent) || a.scrollY === A.top && a.scrollX === A.left || (c.documentElement.style.top = -A.top + \"px\", c.documentElement.style.left = -A.left + \"px\", c.documentElement.style.position = \"absolute\")), t = this.options.onclone, void 0 === this.clonedReferenceElement ? [2, Promise.reject(\"Error finding the \" + this.referenceElement.nodeName + \" in the cloned document\")] : c.fonts && c.fonts.ready ? [4, c.fonts.ready] : [3, 2];\n case 1:\n e.sent(), e.label = 2;\n case 2:\n return \"function\" == typeof t ? [2, Promise.resolve().then(function () {\n return t(c);\n }).then(function () {\n return i;\n })] : [2, i];\n }\n });\n });\n });\n return c.open(), c.write(Tn(document.doctype) + \"<html></html>\"), Rn(this.referenceElement.ownerDocument, o, s), c.replaceChild(c.adoptNode(this.documentElement), c.documentElement), c.close(), u;\n }, t.prototype.createElementClone = function (t) {\n if (hn(t)) return this.createCanvasClone(t);\n if (pn(t)) return this.createStyleClone(t);\n var A = t.cloneNode(!1);\n return fn(A) && \"lazy\" === A.loading && (A.loading = \"eager\"), A;\n }, t.prototype.createStyleClone = function (t) {\n try {\n var A = t.sheet;\n if (A && A.cssRules) {\n var e = [].slice.call(A.cssRules, 0).reduce(function (t, A) {\n return A && \"string\" == typeof A.cssText ? t + A.cssText : t;\n }, \"\"),\n r = t.cloneNode(!1);\n return r.textContent = e, r;\n }\n } catch (t) {\n if (UA.getInstance(this.options.id).error(\"Unable to access cssRules property\", t), \"SecurityError\" !== t.name) throw t;\n }\n return t.cloneNode(!1);\n }, t.prototype.createCanvasClone = function (t) {\n if (this.options.inlineImages && t.ownerDocument) {\n var A = t.ownerDocument.createElement(\"img\");\n try {\n return A.src = t.toDataURL(), A;\n } catch (t) {\n UA.getInstance(this.options.id).info(\"Unable to clone canvas contents, canvas is tainted\");\n }\n }\n var e = t.cloneNode(!1);\n try {\n e.width = t.width, e.height = t.height;\n var r = t.getContext(\"2d\"),\n n = e.getContext(\"2d\");\n return n && (r ? n.putImageData(r.getImageData(0, 0, t.width, t.height), 0, 0) : n.drawImage(t, 0, 0)), e;\n } catch (t) {}\n return e;\n }, t.prototype.cloneNode = function (t) {\n if (en(t)) return document.createTextNode(t.data);\n if (!t.ownerDocument) return t.cloneNode(!1);\n var A = t.ownerDocument.defaultView;\n if (A && rn(t) && (nn(t) || on(t))) {\n var e = this.createElementClone(t),\n r = A.getComputedStyle(t),\n n = A.getComputedStyle(t, \":before\"),\n i = A.getComputedStyle(t, \":after\");\n this.referenceElement === t && nn(e) && (this.clonedReferenceElement = e), ln(e) && Pn(e);\n for (var o = this.counters.parse(new Ur(r)), s = this.resolvePseudoContent(t, e, n, dr.BEFORE), a = t.firstChild; a; a = a.nextSibling) rn(a) && (Bn(a) || a.hasAttribute(\"data-html2canvas-ignore\") || \"function\" == typeof this.options.ignoreElements && this.options.ignoreElements(a)) || this.options.copyStyles && rn(a) && pn(a) || e.appendChild(this.cloneNode(a));\n s && e.insertBefore(s, e.firstChild);\n var c = this.resolvePseudoContent(t, e, i, dr.AFTER);\n return c && e.appendChild(c), this.counters.pop(o), r && (this.options.copyStyles || on(t)) && !dn(t) && _n(r, e), 0 === t.scrollTop && 0 === t.scrollLeft || this.scrolledElements.push([e, t.scrollLeft, t.scrollTop]), (gn(t) || wn(t)) && (gn(e) || wn(e)) && (e.value = t.value), e;\n }\n return t.cloneNode(!1);\n }, t.prototype.resolvePseudoContent = function (t, A, e, r) {\n var n = this;\n if (e) {\n var i = e.content,\n o = A.ownerDocument;\n if (o && i && \"none\" !== i && \"-moz-alt-content\" !== i && \"none\" !== e.display) {\n this.counters.parse(new Ur(e));\n var s = new Fr(e),\n a = o.createElement(\"html2canvaspseudoelement\");\n _n(e, a), s.content.forEach(function (A) {\n if (A.type === h.STRING_TOKEN) a.appendChild(o.createTextNode(A.value));else if (A.type === h.URL_TOKEN) {\n var e = o.createElement(\"img\");\n e.src = A.value, e.style.opacity = \"1\", a.appendChild(e);\n } else if (A.type === h.FUNCTION) {\n if (\"attr\" === A.name) {\n var r = A.values.filter(It);\n r.length && a.appendChild(o.createTextNode(t.getAttribute(r[0].value) || \"\"));\n } else if (\"counter\" === A.name) {\n var i = A.values.filter(Ot),\n c = i[0],\n u = i[1];\n if (c && It(c)) {\n var l = n.counters.getCounterValue(c.value),\n f = u && It(u) ? Le.parse(u.value) : Ne.DECIMAL;\n a.appendChild(o.createTextNode(Ln(l, f, !1)));\n }\n } else if (\"counters\" === A.name) {\n var d = A.values.filter(Ot),\n p = (c = d[0], d[1]);\n if (u = d[2], c && It(c)) {\n var B = n.counters.getCounterValues(c.value),\n g = u && It(u) ? Le.parse(u.value) : Ne.DECIMAL,\n w = p && p.type === h.STRING_TOKEN ? p.value : \"\",\n m = B.map(function (t) {\n return Ln(t, g, !1);\n }).join(w);\n a.appendChild(o.createTextNode(m));\n }\n }\n } else if (A.type === h.IDENT_TOKEN) switch (A.value) {\n case \"open-quote\":\n a.appendChild(o.createTextNode(Cr(s.quotes, n.quoteDepth++, !0)));\n break;\n case \"close-quote\":\n a.appendChild(o.createTextNode(Cr(s.quotes, --n.quoteDepth, !1)));\n break;\n default:\n a.appendChild(o.createTextNode(A.value));\n }\n }), a.className = Kn + \" \" + Mn;\n var c = r === dr.BEFORE ? \" \" + Kn : \" \" + Mn;\n return on(A) ? A.className.baseValue += c : A.className += c, a;\n }\n }\n }, t.destroy = function (t) {\n return !!t.parentNode && (t.parentNode.removeChild(t), !0);\n }, t;\n }();\n !function (t) {\n t[t.BEFORE = 0] = \"BEFORE\", t[t.AFTER = 1] = \"AFTER\";\n }(dr || (dr = {}));\n var xn,\n Sn = function (t, A) {\n var e = t.createElement(\"iframe\");\n return e.className = \"html2canvas-container\", e.style.visibility = \"hidden\", e.style.position = \"fixed\", e.style.left = \"-10000px\", e.style.top = \"0px\", e.style.border = \"0\", e.width = A.width.toString(), e.height = A.height.toString(), e.scrolling = \"no\", e.setAttribute(\"data-html2canvas-ignore\", \"true\"), t.body.appendChild(e), e;\n },\n In = function (t) {\n return new Promise(function (A, e) {\n var r = t.contentWindow;\n if (!r) return e(\"No window assigned for iframe\");\n var n = r.document;\n r.onload = t.onload = n.onreadystatechange = function () {\n r.onload = t.onload = n.onreadystatechange = null;\n var e = setInterval(function () {\n n.body.childNodes.length > 0 && \"complete\" === n.readyState && (clearInterval(e), A(t));\n }, 50);\n };\n });\n },\n _n = function (t, A) {\n for (var e = t.length - 1; e >= 0; e--) {\n var r = t.item(e);\n \"content\" !== r && A.style.setProperty(r, t.getPropertyValue(r));\n }\n return A;\n },\n Tn = function (t) {\n var A = \"\";\n return t && (A += \"<!DOCTYPE \", t.name && (A += t.name), t.internalSubset && (A += t.internalSubset), t.publicId && (A += '\"' + t.publicId + '\"'), t.systemId && (A += '\"' + t.systemId + '\"'), A += \">\"), A;\n },\n Rn = function (t, A, e) {\n t && t.defaultView && (A !== t.defaultView.pageXOffset || e !== t.defaultView.pageYOffset) && t.defaultView.scrollTo(A, e);\n },\n On = function (t) {\n var A = t[0],\n e = t[1],\n r = t[2];\n A.scrollLeft = e, A.scrollTop = r;\n },\n Kn = \"___html2canvas___pseudoelement_before\",\n Mn = \"___html2canvas___pseudoelement_after\",\n Pn = function (t) {\n Dn(t, \".\" + Kn + ':before{\\n content: \"\" !important;\\n display: none !important;\\n}\\n .' + Mn + ':after{\\n content: \"\" !important;\\n display: none !important;\\n}');\n },\n Dn = function (t, A) {\n var e = t.ownerDocument;\n if (e) {\n var r = e.createElement(\"style\");\n r.textContent = A, t.appendChild(r);\n }\n };\n !function (t) {\n t[t.VECTOR = 0] = \"VECTOR\", t[t.BEZIER_CURVE = 1] = \"BEZIER_CURVE\";\n }(xn || (xn = {}));\n var kn,\n zn = function (t, A) {\n return t.length === A.length && t.some(function (t, e) {\n return t === A[e];\n });\n },\n jn = function () {\n function t(t, A) {\n this.type = xn.VECTOR, this.x = t, this.y = A;\n }\n return t.prototype.add = function (A, e) {\n return new t(this.x + A, this.y + e);\n }, t;\n }(),\n qn = function (t, A, e) {\n return new jn(t.x + (A.x - t.x) * e, t.y + (A.y - t.y) * e);\n },\n Vn = function () {\n function t(t, A, e, r) {\n this.type = xn.BEZIER_CURVE, this.start = t, this.startControl = A, this.endControl = e, this.end = r;\n }\n return t.prototype.subdivide = function (A, e) {\n var r = qn(this.start, this.startControl, A),\n n = qn(this.startControl, this.endControl, A),\n i = qn(this.endControl, this.end, A),\n o = qn(r, n, A),\n s = qn(n, i, A),\n a = qn(o, s, A);\n return e ? new t(this.start, r, o, a) : new t(a, s, i, this.end);\n }, t.prototype.add = function (A, e) {\n return new t(this.start.add(A, e), this.startControl.add(A, e), this.endControl.add(A, e), this.end.add(A, e));\n }, t.prototype.reverse = function () {\n return new t(this.end, this.endControl, this.startControl, this.start);\n }, t;\n }(),\n Xn = function (t) {\n return t.type === xn.BEZIER_CURVE;\n },\n Gn = function (t) {\n var A = t.styles,\n e = t.bounds,\n r = Vt(A.borderTopLeftRadius, e.width, e.height),\n n = r[0],\n i = r[1],\n o = Vt(A.borderTopRightRadius, e.width, e.height),\n s = o[0],\n a = o[1],\n c = Vt(A.borderBottomRightRadius, e.width, e.height),\n u = c[0],\n l = c[1],\n h = Vt(A.borderBottomLeftRadius, e.width, e.height),\n f = h[0],\n d = h[1],\n p = [];\n p.push((n + s) / e.width), p.push((f + u) / e.width), p.push((i + d) / e.height), p.push((a + l) / e.height);\n var B = Math.max.apply(Math, p);\n B > 1 && (n /= B, i /= B, s /= B, a /= B, u /= B, l /= B, f /= B, d /= B);\n var g = e.width - s,\n w = e.height - l,\n m = e.width - u,\n Q = e.height - d,\n C = A.borderTopWidth,\n y = A.borderRightWidth,\n v = A.borderBottomWidth,\n F = A.borderLeftWidth,\n U = Xt(A.paddingTop, t.bounds.width),\n N = Xt(A.paddingRight, t.bounds.width),\n E = Xt(A.paddingBottom, t.bounds.width),\n b = Xt(A.paddingLeft, t.bounds.width);\n this.topLeftBorderBox = n > 0 || i > 0 ? Jn(e.left, e.top, n, i, kn.TOP_LEFT) : new jn(e.left, e.top), this.topRightBorderBox = s > 0 || a > 0 ? Jn(e.left + g, e.top, s, a, kn.TOP_RIGHT) : new jn(e.left + e.width, e.top), this.bottomRightBorderBox = u > 0 || l > 0 ? Jn(e.left + m, e.top + w, u, l, kn.BOTTOM_RIGHT) : new jn(e.left + e.width, e.top + e.height), this.bottomLeftBorderBox = f > 0 || d > 0 ? Jn(e.left, e.top + Q, f, d, kn.BOTTOM_LEFT) : new jn(e.left, e.top + e.height), this.topLeftPaddingBox = n > 0 || i > 0 ? Jn(e.left + F, e.top + C, Math.max(0, n - F), Math.max(0, i - C), kn.TOP_LEFT) : new jn(e.left + F, e.top + C), this.topRightPaddingBox = s > 0 || a > 0 ? Jn(e.left + Math.min(g, e.width + F), e.top + C, g > e.width + F ? 0 : s - F, a - C, kn.TOP_RIGHT) : new jn(e.left + e.width - y, e.top + C), this.bottomRightPaddingBox = u > 0 || l > 0 ? Jn(e.left + Math.min(m, e.width - F), e.top + Math.min(w, e.height + C), Math.max(0, u - y), l - v, kn.BOTTOM_RIGHT) : new jn(e.left + e.width - y, e.top + e.height - v), this.bottomLeftPaddingBox = f > 0 || d > 0 ? Jn(e.left + F, e.top + Q, Math.max(0, f - F), d - v, kn.BOTTOM_LEFT) : new jn(e.left + F, e.top + e.height - v), this.topLeftContentBox = n > 0 || i > 0 ? Jn(e.left + F + b, e.top + C + U, Math.max(0, n - (F + b)), Math.max(0, i - (C + U)), kn.TOP_LEFT) : new jn(e.left + F + b, e.top + C + U), this.topRightContentBox = s > 0 || a > 0 ? Jn(e.left + Math.min(g, e.width + F + b), e.top + C + U, g > e.width + F + b ? 0 : s - F + b, a - (C + U), kn.TOP_RIGHT) : new jn(e.left + e.width - (y + N), e.top + C + U), this.bottomRightContentBox = u > 0 || l > 0 ? Jn(e.left + Math.min(m, e.width - (F + b)), e.top + Math.min(w, e.height + C + U), Math.max(0, u - (y + N)), l - (v + E), kn.BOTTOM_RIGHT) : new jn(e.left + e.width - (y + N), e.top + e.height - (v + E)), this.bottomLeftContentBox = f > 0 || d > 0 ? Jn(e.left + F + b, e.top + Q, Math.max(0, f - (F + b)), d - (v + E), kn.BOTTOM_LEFT) : new jn(e.left + F + b, e.top + e.height - (v + E));\n };\n !function (t) {\n t[t.TOP_LEFT = 0] = \"TOP_LEFT\", t[t.TOP_RIGHT = 1] = \"TOP_RIGHT\", t[t.BOTTOM_RIGHT = 2] = \"BOTTOM_RIGHT\", t[t.BOTTOM_LEFT = 3] = \"BOTTOM_LEFT\";\n }(kn || (kn = {}));\n var Jn = function (t, A, e, r, n) {\n var i = (Math.sqrt(2) - 1) / 3 * 4,\n o = e * i,\n s = r * i,\n a = t + e,\n c = A + r;\n switch (n) {\n case kn.TOP_LEFT:\n return new Vn(new jn(t, c), new jn(t, c - s), new jn(a - o, A), new jn(a, A));\n case kn.TOP_RIGHT:\n return new Vn(new jn(t, A), new jn(t + o, A), new jn(a, c - s), new jn(a, c));\n case kn.BOTTOM_RIGHT:\n return new Vn(new jn(a, A), new jn(a, A + s), new jn(t + o, c), new jn(t, c));\n case kn.BOTTOM_LEFT:\n default:\n return new Vn(new jn(a, c), new jn(a - o, c), new jn(t, A + s), new jn(t, A));\n }\n },\n Wn = function (t) {\n return [t.topLeftBorderBox, t.topRightBorderBox, t.bottomRightBorderBox, t.bottomLeftBorderBox];\n },\n Yn = function (t) {\n return [t.topLeftPaddingBox, t.topRightPaddingBox, t.bottomRightPaddingBox, t.bottomLeftPaddingBox];\n },\n Zn = function (t, A, e) {\n this.type = 0, this.offsetX = t, this.offsetY = A, this.matrix = e, this.target = 6;\n },\n $n = function (t, A) {\n this.type = 1, this.target = A, this.path = t;\n },\n ti = function (t) {\n this.element = t, this.inlineLevel = [], this.nonInlineLevel = [], this.negativeZIndex = [], this.zeroOrAutoZIndexOrTransformedOrOpacity = [], this.positiveZIndex = [], this.nonPositionedFloats = [], this.nonPositionedInlineLevel = [];\n },\n Ai = function () {\n function t(t, A) {\n if (this.container = t, this.effects = A.slice(0), this.curves = new Gn(t), null !== t.styles.transform) {\n var e = t.bounds.left + t.styles.transformOrigin[0].number,\n r = t.bounds.top + t.styles.transformOrigin[1].number,\n n = t.styles.transform;\n this.effects.push(new Zn(e, r, n));\n }\n if (t.styles.overflowX !== be.VISIBLE) {\n var i = Wn(this.curves),\n o = Yn(this.curves);\n zn(i, o) ? this.effects.push(new $n(i, 6)) : (this.effects.push(new $n(i, 2)), this.effects.push(new $n(o, 4)));\n }\n }\n return t.prototype.getParentEffects = function () {\n var t = this.effects.slice(0);\n if (this.container.styles.overflowX !== be.VISIBLE) {\n var A = Wn(this.curves),\n e = Yn(this.curves);\n zn(A, e) || t.push(new $n(e, 6));\n }\n return t;\n }, t;\n }(),\n ei = function (t, A, e, r) {\n t.container.elements.forEach(function (n) {\n var i = Br(n.flags, 4),\n o = Br(n.flags, 2),\n s = new Ai(n, t.getParentEffects());\n Br(n.styles.display, 2048) && r.push(s);\n var a = Br(n.flags, 8) ? [] : r;\n if (i || o) {\n var c = i || n.styles.isPositioned() ? e : A,\n u = new ti(s);\n if (n.styles.isPositioned() || n.styles.opacity < 1 || n.styles.isTransformed()) {\n var l = n.styles.zIndex.order;\n if (l < 0) {\n var h = 0;\n c.negativeZIndex.some(function (t, A) {\n return l > t.element.container.styles.zIndex.order ? (h = A, !1) : h > 0;\n }), c.negativeZIndex.splice(h, 0, u);\n } else if (l > 0) {\n var f = 0;\n c.positiveZIndex.some(function (t, A) {\n return l >= t.element.container.styles.zIndex.order ? (f = A + 1, !1) : f > 0;\n }), c.positiveZIndex.splice(f, 0, u);\n } else c.zeroOrAutoZIndexOrTransformedOrOpacity.push(u);\n } else n.styles.isFloating() ? c.nonPositionedFloats.push(u) : c.nonPositionedInlineLevel.push(u);\n ei(s, u, i ? u : e, a);\n } else n.styles.isInlineLevel() ? A.inlineLevel.push(s) : A.nonInlineLevel.push(s), ei(s, A, e, a);\n Br(n.flags, 8) && ri(n, a);\n });\n },\n ri = function (t, A) {\n for (var e = t instanceof Dr ? t.start : 1, r = t instanceof Dr && t.reversed, n = 0; n < A.length; n++) {\n var i = A[n];\n i.container instanceof Pr && \"number\" == typeof i.container.value && 0 !== i.container.value && (e = i.container.value), i.listValue = Ln(e, i.container.styles.listStyleType, !0), e += r ? -1 : 1;\n }\n },\n ni = function (t, A, e, r) {\n var n = [];\n return Xn(t) ? n.push(t.subdivide(.5, !1)) : n.push(t), Xn(e) ? n.push(e.subdivide(.5, !0)) : n.push(e), Xn(r) ? n.push(r.subdivide(.5, !0).reverse()) : n.push(r), Xn(A) ? n.push(A.subdivide(.5, !1).reverse()) : n.push(A), n;\n },\n ii = function (t) {\n var A = t.bounds,\n e = t.styles;\n return A.add(e.borderLeftWidth, e.borderTopWidth, -(e.borderRightWidth + e.borderLeftWidth), -(e.borderTopWidth + e.borderBottomWidth));\n },\n oi = function (t) {\n var A = t.styles,\n e = t.bounds,\n r = Xt(A.paddingLeft, e.width),\n n = Xt(A.paddingRight, e.width),\n i = Xt(A.paddingTop, e.width),\n o = Xt(A.paddingBottom, e.width);\n return e.add(r + A.borderLeftWidth, i + A.borderTopWidth, -(A.borderRightWidth + A.borderLeftWidth + r + n), -(A.borderTopWidth + A.borderBottomWidth + i + o));\n },\n si = function (t, A, e) {\n var r = function (t, A) {\n return 0 === t ? A.bounds : 2 === t ? oi(A) : ii(A);\n }(li(t.styles.backgroundOrigin, A), t),\n n = function (t, A) {\n return t === oA.BORDER_BOX ? A.bounds : t === oA.CONTENT_BOX ? oi(A) : ii(A);\n }(li(t.styles.backgroundClip, A), t),\n i = ui(li(t.styles.backgroundSize, A), e, r),\n o = i[0],\n s = i[1],\n a = Vt(li(t.styles.backgroundPosition, A), r.width - o, r.height - s);\n return [hi(li(t.styles.backgroundRepeat, A), a, i, r, n), Math.round(r.left + a[0]), Math.round(r.top + a[1]), o, s];\n },\n ai = function (t) {\n return It(t) && t.value === zA.AUTO;\n },\n ci = function (t) {\n return \"number\" == typeof t;\n },\n ui = function (t, A, e) {\n var r = A[0],\n n = A[1],\n i = A[2],\n o = t[0],\n s = t[1];\n if (Dt(o) && s && Dt(s)) return [Xt(o, e.width), Xt(s, e.height)];\n var a = ci(i);\n if (It(o) && (o.value === zA.CONTAIN || o.value === zA.COVER)) return ci(i) ? e.width / e.height < i != (o.value === zA.COVER) ? [e.width, e.width / i] : [e.height * i, e.height] : [e.width, e.height];\n var c = ci(r),\n u = ci(n),\n l = c || u;\n if (ai(o) && (!s || ai(s))) return c && u ? [r, n] : a || l ? l && a ? [c ? r : n * i, u ? n : r / i] : [c ? r : e.width, u ? n : e.height] : [e.width, e.height];\n if (a) {\n var h = 0,\n f = 0;\n return Dt(o) ? h = Xt(o, e.width) : Dt(s) && (f = Xt(s, e.height)), ai(o) ? h = f * i : s && !ai(s) || (f = h / i), [h, f];\n }\n var d = null,\n p = null;\n if (Dt(o) ? d = Xt(o, e.width) : s && Dt(s) && (p = Xt(s, e.height)), null === d || s && !ai(s) || (p = c && u ? d / r * n : e.height), null !== p && ai(o) && (d = c && u ? p / n * r : e.width), null !== d && null !== p) return [d, p];\n throw new Error(\"Unable to calculate background-size for element\");\n },\n li = function (t, A) {\n var e = t[A];\n return void 0 === e ? t[0] : e;\n },\n hi = function (t, A, e, r, n) {\n var i = A[0],\n o = A[1],\n s = e[0],\n a = e[1];\n switch (t) {\n case OA.REPEAT_X:\n return [new jn(Math.round(r.left), Math.round(r.top + o)), new jn(Math.round(r.left + r.width), Math.round(r.top + o)), new jn(Math.round(r.left + r.width), Math.round(a + r.top + o)), new jn(Math.round(r.left), Math.round(a + r.top + o))];\n case OA.REPEAT_Y:\n return [new jn(Math.round(r.left + i), Math.round(r.top)), new jn(Math.round(r.left + i + s), Math.round(r.top)), new jn(Math.round(r.left + i + s), Math.round(r.height + r.top)), new jn(Math.round(r.left + i), Math.round(r.height + r.top))];\n case OA.NO_REPEAT:\n return [new jn(Math.round(r.left + i), Math.round(r.top + o)), new jn(Math.round(r.left + i + s), Math.round(r.top + o)), new jn(Math.round(r.left + i + s), Math.round(r.top + o + a)), new jn(Math.round(r.left + i), Math.round(r.top + o + a))];\n default:\n return [new jn(Math.round(n.left), Math.round(n.top)), new jn(Math.round(n.left + n.width), Math.round(n.top)), new jn(Math.round(n.left + n.width), Math.round(n.height + n.top)), new jn(Math.round(n.left), Math.round(n.height + n.top))];\n }\n },\n fi = function () {\n function t(t) {\n this._data = {}, this._document = t;\n }\n return t.prototype.parseMetrics = function (t, A) {\n var e = this._document.createElement(\"div\"),\n r = this._document.createElement(\"img\"),\n n = this._document.createElement(\"span\"),\n i = this._document.body;\n e.style.visibility = \"hidden\", e.style.fontFamily = t, e.style.fontSize = A, e.style.margin = \"0\", e.style.padding = \"0\", i.appendChild(e), r.src = \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\", r.width = 1, r.height = 1, r.style.margin = \"0\", r.style.padding = \"0\", r.style.verticalAlign = \"baseline\", n.style.fontFamily = t, n.style.fontSize = A, n.style.margin = \"0\", n.style.padding = \"0\", n.appendChild(this._document.createTextNode(\"Hidden Text\")), e.appendChild(n), e.appendChild(r);\n var o = r.offsetTop - n.offsetTop + 2;\n e.removeChild(n), e.appendChild(this._document.createTextNode(\"Hidden Text\")), e.style.lineHeight = \"normal\", r.style.verticalAlign = \"super\";\n var s = r.offsetTop - e.offsetTop + 2;\n return i.removeChild(e), {\n baseline: o,\n middle: s\n };\n }, t.prototype.getMetrics = function (t, A) {\n var e = t + \" \" + A;\n return void 0 === this._data[e] && (this._data[e] = this.parseMetrics(t, A)), this._data[e];\n }, t;\n }(),\n di = function () {\n function t(t) {\n this._activeEffects = [], this.canvas = t.canvas ? t.canvas : document.createElement(\"canvas\"), this.ctx = this.canvas.getContext(\"2d\"), this.options = t, t.canvas || (this.canvas.width = Math.floor(t.width * t.scale), this.canvas.height = Math.floor(t.height * t.scale), this.canvas.style.width = t.width + \"px\", this.canvas.style.height = t.height + \"px\"), this.fontMetrics = new fi(document), this.ctx.scale(this.options.scale, this.options.scale), this.ctx.translate(-t.x + t.scrollX, -t.y + t.scrollY), this.ctx.textBaseline = \"bottom\", this._activeEffects = [], UA.getInstance(t.id).debug(\"Canvas renderer initialized (\" + t.width + \"x\" + t.height + \" at \" + t.x + \",\" + t.y + \") with scale \" + t.scale);\n }\n return t.prototype.applyEffects = function (t, A) {\n for (var e = this; this._activeEffects.length;) this.popEffect();\n t.filter(function (t) {\n return Br(t.target, A);\n }).forEach(function (t) {\n return e.applyEffect(t);\n });\n }, t.prototype.applyEffect = function (t) {\n this.ctx.save(), function (t) {\n return 0 === t.type;\n }(t) && (this.ctx.translate(t.offsetX, t.offsetY), this.ctx.transform(t.matrix[0], t.matrix[1], t.matrix[2], t.matrix[3], t.matrix[4], t.matrix[5]), this.ctx.translate(-t.offsetX, -t.offsetY)), function (t) {\n return 1 === t.type;\n }(t) && (this.path(t.path), this.ctx.clip()), this._activeEffects.push(t);\n }, t.prototype.popEffect = function () {\n this._activeEffects.pop(), this.ctx.restore();\n }, t.prototype.renderStack = function (t) {\n return r(this, void 0, void 0, function () {\n var A;\n return n(this, function (e) {\n switch (e.label) {\n case 0:\n return (A = t.element.container.styles).isVisible() ? (this.ctx.globalAlpha = A.opacity, [4, this.renderStackContent(t)]) : [3, 2];\n case 1:\n e.sent(), e.label = 2;\n case 2:\n return [2];\n }\n });\n });\n }, t.prototype.renderNode = function (t) {\n return r(this, void 0, void 0, function () {\n return n(this, function (A) {\n switch (A.label) {\n case 0:\n return t.container.styles.isVisible() ? [4, this.renderNodeBackgroundAndBorders(t)] : [3, 3];\n case 1:\n return A.sent(), [4, this.renderNodeContent(t)];\n case 2:\n A.sent(), A.label = 3;\n case 3:\n return [2];\n }\n });\n });\n }, t.prototype.renderTextWithLetterSpacing = function (t, A) {\n var e = this;\n 0 === A ? this.ctx.fillText(t.text, t.bounds.left, t.bounds.top + t.bounds.height) : s(t.text).map(function (t) {\n return a(t);\n }).reduce(function (A, r) {\n return e.ctx.fillText(r, A, t.bounds.top + t.bounds.height), A + e.ctx.measureText(r).width;\n }, t.bounds.left);\n }, t.prototype.createFontStyle = function (t) {\n var A = t.fontVariant.filter(function (t) {\n return \"normal\" === t || \"small-caps\" === t;\n }).join(\"\"),\n e = t.fontFamily.join(\", \"),\n r = xt(t.fontSize) ? \"\" + t.fontSize.number + t.fontSize.unit : t.fontSize.number + \"px\";\n return [[t.fontStyle, A, t.fontWeight, r, e].join(\" \"), e, r];\n }, t.prototype.renderTextNode = function (t, A) {\n return r(this, void 0, void 0, function () {\n var e,\n r,\n i,\n o,\n s = this;\n return n(this, function (n) {\n return e = this.createFontStyle(A), r = e[0], i = e[1], o = e[2], this.ctx.font = r, t.textBounds.forEach(function (t) {\n s.ctx.fillStyle = tA(A.color), s.renderTextWithLetterSpacing(t, A.letterSpacing);\n var e = A.textShadow;\n e.length && t.text.trim().length && (e.slice(0).reverse().forEach(function (A) {\n s.ctx.shadowColor = tA(A.color), s.ctx.shadowOffsetX = A.offsetX.number * s.options.scale, s.ctx.shadowOffsetY = A.offsetY.number * s.options.scale, s.ctx.shadowBlur = A.blur.number, s.ctx.fillText(t.text, t.bounds.left, t.bounds.top + t.bounds.height);\n }), s.ctx.shadowColor = \"\", s.ctx.shadowOffsetX = 0, s.ctx.shadowOffsetY = 0, s.ctx.shadowBlur = 0), A.textDecorationLine.length && (s.ctx.fillStyle = tA(A.textDecorationColor || A.color), A.textDecorationLine.forEach(function (A) {\n switch (A) {\n case 1:\n var e = s.fontMetrics.getMetrics(i, o).baseline;\n s.ctx.fillRect(t.bounds.left, Math.round(t.bounds.top + e), t.bounds.width, 1);\n break;\n case 2:\n s.ctx.fillRect(t.bounds.left, Math.round(t.bounds.top), t.bounds.width, 1);\n break;\n case 3:\n var r = s.fontMetrics.getMetrics(i, o).middle;\n s.ctx.fillRect(t.bounds.left, Math.ceil(t.bounds.top + r), t.bounds.width, 1);\n }\n }));\n }), [2];\n });\n });\n }, t.prototype.renderReplacedElement = function (t, A, e) {\n if (e && t.intrinsicWidth > 0 && t.intrinsicHeight > 0) {\n var r = oi(t),\n n = Yn(A);\n this.path(n), this.ctx.save(), this.ctx.clip(), this.ctx.drawImage(e, 0, 0, t.intrinsicWidth, t.intrinsicHeight, r.left, r.top, r.width, r.height), this.ctx.restore();\n }\n }, t.prototype.renderNodeContent = function (A) {\n return r(this, void 0, void 0, function () {\n var e, r, o, s, a, c, u, l, f, d, p, B, g, w;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n this.applyEffects(A.effects, 4), e = A.container, r = A.curves, o = e.styles, s = 0, a = e.textNodes, n.label = 1;\n case 1:\n return s < a.length ? (c = a[s], [4, this.renderTextNode(c, o)]) : [3, 4];\n case 2:\n n.sent(), n.label = 3;\n case 3:\n return s++, [3, 1];\n case 4:\n if (!(e instanceof Or)) return [3, 8];\n n.label = 5;\n case 5:\n return n.trys.push([5, 7,, 8]), [4, this.options.cache.match(e.src)];\n case 6:\n return B = n.sent(), this.renderReplacedElement(e, r, B), [3, 8];\n case 7:\n return n.sent(), UA.getInstance(this.options.id).error(\"Error loading image \" + e.src), [3, 8];\n case 8:\n if (e instanceof Kr && this.renderReplacedElement(e, r, e.canvas), !(e instanceof Mr)) return [3, 12];\n n.label = 9;\n case 9:\n return n.trys.push([9, 11,, 12]), [4, this.options.cache.match(e.svg)];\n case 10:\n return B = n.sent(), this.renderReplacedElement(e, r, B), [3, 12];\n case 11:\n return n.sent(), UA.getInstance(this.options.id).error(\"Error loading svg \" + e.svg.substring(0, 255)), [3, 12];\n case 12:\n return e instanceof Jr && e.tree ? [4, new t({\n id: this.options.id,\n scale: this.options.scale,\n backgroundColor: e.backgroundColor,\n x: 0,\n y: 0,\n scrollX: 0,\n scrollY: 0,\n width: e.width,\n height: e.height,\n cache: this.options.cache,\n windowWidth: e.width,\n windowHeight: e.height\n }).render(e.tree)] : [3, 14];\n case 13:\n u = n.sent(), e.width && e.height && this.ctx.drawImage(u, 0, 0, e.width, e.height, e.bounds.left, e.bounds.top, e.bounds.width, e.bounds.height), n.label = 14;\n case 14:\n if (e instanceof qr && (l = Math.min(e.bounds.width, e.bounds.height), \"checkbox\" === e.type ? e.checked && (this.ctx.save(), this.path([new jn(e.bounds.left + .39363 * l, e.bounds.top + .79 * l), new jn(e.bounds.left + .16 * l, e.bounds.top + .5549 * l), new jn(e.bounds.left + .27347 * l, e.bounds.top + .44071 * l), new jn(e.bounds.left + .39694 * l, e.bounds.top + .5649 * l), new jn(e.bounds.left + .72983 * l, e.bounds.top + .23 * l), new jn(e.bounds.left + .84 * l, e.bounds.top + .34085 * l), new jn(e.bounds.left + .39363 * l, e.bounds.top + .79 * l)]), this.ctx.fillStyle = tA(707406591), this.ctx.fill(), this.ctx.restore()) : \"radio\" === e.type && e.checked && (this.ctx.save(), this.ctx.beginPath(), this.ctx.arc(e.bounds.left + l / 2, e.bounds.top + l / 2, l / 4, 0, 2 * Math.PI, !0), this.ctx.fillStyle = tA(707406591), this.ctx.fill(), this.ctx.restore())), pi(e) && e.value.length) {\n switch (this.ctx.font = this.createFontStyle(o)[0], this.ctx.fillStyle = tA(o.color), this.ctx.textBaseline = \"middle\", this.ctx.textAlign = gi(e.styles.textAlign), w = oi(e), f = 0, e.styles.textAlign) {\n case Oe.CENTER:\n f += w.width / 2;\n break;\n case Oe.RIGHT:\n f += w.width;\n }\n d = w.add(f, 0, 0, -w.height / 2 + 1), this.ctx.save(), this.path([new jn(w.left, w.top), new jn(w.left + w.width, w.top), new jn(w.left + w.width, w.top + w.height), new jn(w.left, w.top + w.height)]), this.ctx.clip(), this.renderTextWithLetterSpacing(new br(e.value, d), o.letterSpacing), this.ctx.restore(), this.ctx.textBaseline = \"bottom\", this.ctx.textAlign = \"left\";\n }\n if (!Br(e.styles.display, 2048)) return [3, 20];\n if (null === e.styles.listStyleImage) return [3, 19];\n if ((p = e.styles.listStyleImage).type !== uA.URL) return [3, 18];\n B = void 0, g = p.url, n.label = 15;\n case 15:\n return n.trys.push([15, 17,, 18]), [4, this.options.cache.match(g)];\n case 16:\n return B = n.sent(), this.ctx.drawImage(B, e.bounds.left - (B.width + 10), e.bounds.top), [3, 18];\n case 17:\n return n.sent(), UA.getInstance(this.options.id).error(\"Error loading list-style-image \" + g), [3, 18];\n case 18:\n return [3, 20];\n case 19:\n A.listValue && e.styles.listStyleType !== Ne.NONE && (this.ctx.font = this.createFontStyle(o)[0], this.ctx.fillStyle = tA(o.color), this.ctx.textBaseline = \"middle\", this.ctx.textAlign = \"right\", w = new i(e.bounds.left, e.bounds.top + Xt(e.styles.paddingTop, e.bounds.width), e.bounds.width, function (t, A) {\n return It(t) && \"normal\" === t.value ? 1.2 * A : t.type === h.NUMBER_TOKEN ? A * t.number : Dt(t) ? Xt(t, A) : A;\n }(o.lineHeight, o.fontSize.number) / 2 + 1), this.renderTextWithLetterSpacing(new br(A.listValue, w), o.letterSpacing), this.ctx.textBaseline = \"bottom\", this.ctx.textAlign = \"left\"), n.label = 20;\n case 20:\n return [2];\n }\n });\n });\n }, t.prototype.renderStackContent = function (t) {\n return r(this, void 0, void 0, function () {\n var A, e, r, i, o, s, a, c, u, l, h, f, d, p, B;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n return [4, this.renderNodeBackgroundAndBorders(t.element)];\n case 1:\n n.sent(), A = 0, e = t.negativeZIndex, n.label = 2;\n case 2:\n return A < e.length ? (B = e[A], [4, this.renderStack(B)]) : [3, 5];\n case 3:\n n.sent(), n.label = 4;\n case 4:\n return A++, [3, 2];\n case 5:\n return [4, this.renderNodeContent(t.element)];\n case 6:\n n.sent(), r = 0, i = t.nonInlineLevel, n.label = 7;\n case 7:\n return r < i.length ? (B = i[r], [4, this.renderNode(B)]) : [3, 10];\n case 8:\n n.sent(), n.label = 9;\n case 9:\n return r++, [3, 7];\n case 10:\n o = 0, s = t.nonPositionedFloats, n.label = 11;\n case 11:\n return o < s.length ? (B = s[o], [4, this.renderStack(B)]) : [3, 14];\n case 12:\n n.sent(), n.label = 13;\n case 13:\n return o++, [3, 11];\n case 14:\n a = 0, c = t.nonPositionedInlineLevel, n.label = 15;\n case 15:\n return a < c.length ? (B = c[a], [4, this.renderStack(B)]) : [3, 18];\n case 16:\n n.sent(), n.label = 17;\n case 17:\n return a++, [3, 15];\n case 18:\n u = 0, l = t.inlineLevel, n.label = 19;\n case 19:\n return u < l.length ? (B = l[u], [4, this.renderNode(B)]) : [3, 22];\n case 20:\n n.sent(), n.label = 21;\n case 21:\n return u++, [3, 19];\n case 22:\n h = 0, f = t.zeroOrAutoZIndexOrTransformedOrOpacity, n.label = 23;\n case 23:\n return h < f.length ? (B = f[h], [4, this.renderStack(B)]) : [3, 26];\n case 24:\n n.sent(), n.label = 25;\n case 25:\n return h++, [3, 23];\n case 26:\n d = 0, p = t.positiveZIndex, n.label = 27;\n case 27:\n return d < p.length ? (B = p[d], [4, this.renderStack(B)]) : [3, 30];\n case 28:\n n.sent(), n.label = 29;\n case 29:\n return d++, [3, 27];\n case 30:\n return [2];\n }\n });\n });\n }, t.prototype.mask = function (t) {\n this.ctx.beginPath(), this.ctx.moveTo(0, 0), this.ctx.lineTo(this.canvas.width, 0), this.ctx.lineTo(this.canvas.width, this.canvas.height), this.ctx.lineTo(0, this.canvas.height), this.ctx.lineTo(0, 0), this.formatPath(t.slice(0).reverse()), this.ctx.closePath();\n }, t.prototype.path = function (t) {\n this.ctx.beginPath(), this.formatPath(t), this.ctx.closePath();\n }, t.prototype.formatPath = function (t) {\n var A = this;\n t.forEach(function (t, e) {\n var r = Xn(t) ? t.start : t;\n 0 === e ? A.ctx.moveTo(r.x, r.y) : A.ctx.lineTo(r.x, r.y), Xn(t) && A.ctx.bezierCurveTo(t.startControl.x, t.startControl.y, t.endControl.x, t.endControl.y, t.end.x, t.end.y);\n });\n }, t.prototype.renderRepeat = function (t, A, e, r) {\n this.path(t), this.ctx.fillStyle = A, this.ctx.translate(e, r), this.ctx.fill(), this.ctx.translate(-e, -r);\n }, t.prototype.resizeImage = function (t, A, e) {\n if (t.width === A && t.height === e) return t;\n var r = this.canvas.ownerDocument.createElement(\"canvas\");\n return r.width = A, r.height = e, r.getContext(\"2d\").drawImage(t, 0, 0, t.width, t.height, 0, 0, A, e), r;\n }, t.prototype.renderBackgroundImage = function (t) {\n return r(this, void 0, void 0, function () {\n var A, e, r, i, o, s;\n return n(this, function (a) {\n switch (a.label) {\n case 0:\n A = t.styles.backgroundImage.length - 1, e = function (e) {\n var i, o, s, a, c, u, l, h, f, d, p, B, g, w, m, Q, C, y, v, F, U, N, E, b, L, H, x, S, I, _, T;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n if (e.type !== uA.URL) return [3, 5];\n i = void 0, o = e.url, n.label = 1;\n case 1:\n return n.trys.push([1, 3,, 4]), [4, r.options.cache.match(o)];\n case 2:\n return i = n.sent(), [3, 4];\n case 3:\n return n.sent(), UA.getInstance(r.options.id).error(\"Error loading background-image \" + o), [3, 4];\n case 4:\n return i && (s = si(t, A, [i.width, i.height, i.width / i.height]), Q = s[0], N = s[1], E = s[2], v = s[3], F = s[4], w = r.ctx.createPattern(r.resizeImage(i, v, F), \"repeat\"), r.renderRepeat(Q, w, N, E)), [3, 6];\n case 5:\n e.type === uA.LINEAR_GRADIENT ? (a = si(t, A, [null, null, null]), Q = a[0], N = a[1], E = a[2], v = a[3], F = a[4], c = gA(e.angle, v, F), u = c[0], l = c[1], h = c[2], f = c[3], d = c[4], (p = document.createElement(\"canvas\")).width = v, p.height = F, B = p.getContext(\"2d\"), g = B.createLinearGradient(l, f, h, d), BA(e.stops, u).forEach(function (t) {\n return g.addColorStop(t.stop, tA(t.color));\n }), B.fillStyle = g, B.fillRect(0, 0, v, F), v > 0 && F > 0 && (w = r.ctx.createPattern(p, \"repeat\"), r.renderRepeat(Q, w, N, E))) : function (t) {\n return t.type === uA.RADIAL_GRADIENT;\n }(e) && (m = si(t, A, [null, null, null]), Q = m[0], C = m[1], y = m[2], v = m[3], F = m[4], U = 0 === e.position.length ? [jt] : e.position, N = Xt(U[0], v), E = Xt(U[U.length - 1], F), b = function (t, A, e, r, n) {\n var i = 0,\n o = 0;\n switch (t.size) {\n case hA.CLOSEST_SIDE:\n t.shape === lA.CIRCLE ? i = o = Math.min(Math.abs(A), Math.abs(A - r), Math.abs(e), Math.abs(e - n)) : t.shape === lA.ELLIPSE && (i = Math.min(Math.abs(A), Math.abs(A - r)), o = Math.min(Math.abs(e), Math.abs(e - n)));\n break;\n case hA.CLOSEST_CORNER:\n if (t.shape === lA.CIRCLE) i = o = Math.min(wA(A, e), wA(A, e - n), wA(A - r, e), wA(A - r, e - n));else if (t.shape === lA.ELLIPSE) {\n var s = Math.min(Math.abs(e), Math.abs(e - n)) / Math.min(Math.abs(A), Math.abs(A - r)),\n a = mA(r, n, A, e, !0),\n c = a[0],\n u = a[1];\n o = s * (i = wA(c - A, (u - e) / s));\n }\n break;\n case hA.FARTHEST_SIDE:\n t.shape === lA.CIRCLE ? i = o = Math.max(Math.abs(A), Math.abs(A - r), Math.abs(e), Math.abs(e - n)) : t.shape === lA.ELLIPSE && (i = Math.max(Math.abs(A), Math.abs(A - r)), o = Math.max(Math.abs(e), Math.abs(e - n)));\n break;\n case hA.FARTHEST_CORNER:\n if (t.shape === lA.CIRCLE) i = o = Math.max(wA(A, e), wA(A, e - n), wA(A - r, e), wA(A - r, e - n));else if (t.shape === lA.ELLIPSE) {\n s = Math.max(Math.abs(e), Math.abs(e - n)) / Math.max(Math.abs(A), Math.abs(A - r));\n var l = mA(r, n, A, e, !1);\n c = l[0], u = l[1], o = s * (i = wA(c - A, (u - e) / s));\n }\n }\n return Array.isArray(t.size) && (i = Xt(t.size[0], r), o = 2 === t.size.length ? Xt(t.size[1], n) : i), [i, o];\n }(e, N, E, v, F), L = b[0], H = b[1], L > 0 && L > 0 && (x = r.ctx.createRadialGradient(C + N, y + E, 0, C + N, y + E, L), BA(e.stops, 2 * L).forEach(function (t) {\n return x.addColorStop(t.stop, tA(t.color));\n }), r.path(Q), r.ctx.fillStyle = x, L !== H ? (S = t.bounds.left + .5 * t.bounds.width, I = t.bounds.top + .5 * t.bounds.height, T = 1 / (_ = H / L), r.ctx.save(), r.ctx.translate(S, I), r.ctx.transform(1, 0, 0, _, 0, 0), r.ctx.translate(-S, -I), r.ctx.fillRect(C, T * (y - I) + I, v, F * T), r.ctx.restore()) : r.ctx.fill())), n.label = 6;\n case 6:\n return A--, [2];\n }\n });\n }, r = this, i = 0, o = t.styles.backgroundImage.slice(0).reverse(), a.label = 1;\n case 1:\n return i < o.length ? (s = o[i], [5, e(s)]) : [3, 4];\n case 2:\n a.sent(), a.label = 3;\n case 3:\n return i++, [3, 1];\n case 4:\n return [2];\n }\n });\n });\n }, t.prototype.renderBorder = function (t, A, e) {\n return r(this, void 0, void 0, function () {\n return n(this, function (r) {\n return this.path(function (t, A) {\n switch (A) {\n case 0:\n return ni(t.topLeftBorderBox, t.topLeftPaddingBox, t.topRightBorderBox, t.topRightPaddingBox);\n case 1:\n return ni(t.topRightBorderBox, t.topRightPaddingBox, t.bottomRightBorderBox, t.bottomRightPaddingBox);\n case 2:\n return ni(t.bottomRightBorderBox, t.bottomRightPaddingBox, t.bottomLeftBorderBox, t.bottomLeftPaddingBox);\n case 3:\n default:\n return ni(t.bottomLeftBorderBox, t.bottomLeftPaddingBox, t.topLeftBorderBox, t.topLeftPaddingBox);\n }\n }(e, A)), this.ctx.fillStyle = tA(t), this.ctx.fill(), [2];\n });\n });\n }, t.prototype.renderNodeBackgroundAndBorders = function (t) {\n return r(this, void 0, void 0, function () {\n var A,\n e,\n r,\n i,\n o,\n s,\n a,\n c,\n u = this;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n return this.applyEffects(t.effects, 2), A = t.container.styles, e = !$t(A.backgroundColor) || A.backgroundImage.length, r = [{\n style: A.borderTopStyle,\n color: A.borderTopColor\n }, {\n style: A.borderRightStyle,\n color: A.borderRightColor\n }, {\n style: A.borderBottomStyle,\n color: A.borderBottomColor\n }, {\n style: A.borderLeftStyle,\n color: A.borderLeftColor\n }], i = Bi(li(A.backgroundClip, 0), t.curves), e || A.boxShadow.length ? (this.ctx.save(), this.path(i), this.ctx.clip(), $t(A.backgroundColor) || (this.ctx.fillStyle = tA(A.backgroundColor), this.ctx.fill()), [4, this.renderBackgroundImage(t.container)]) : [3, 2];\n case 1:\n n.sent(), this.ctx.restore(), A.boxShadow.slice(0).reverse().forEach(function (A) {\n u.ctx.save();\n var e,\n r,\n n,\n i,\n o,\n s = Wn(t.curves),\n a = A.inset ? 0 : 1e4,\n c = (e = s, r = -a + (A.inset ? 1 : -1) * A.spread.number, n = (A.inset ? 1 : -1) * A.spread.number, i = A.spread.number * (A.inset ? -2 : 2), o = A.spread.number * (A.inset ? -2 : 2), e.map(function (t, A) {\n switch (A) {\n case 0:\n return t.add(r, n);\n case 1:\n return t.add(r + i, n);\n case 2:\n return t.add(r + i, n + o);\n case 3:\n return t.add(r, n + o);\n }\n return t;\n }));\n A.inset ? (u.path(s), u.ctx.clip(), u.mask(c)) : (u.mask(s), u.ctx.clip(), u.path(c)), u.ctx.shadowOffsetX = A.offsetX.number + a, u.ctx.shadowOffsetY = A.offsetY.number, u.ctx.shadowColor = tA(A.color), u.ctx.shadowBlur = A.blur.number, u.ctx.fillStyle = A.inset ? tA(A.color) : \"rgba(0,0,0,1)\", u.ctx.fill(), u.ctx.restore();\n }), n.label = 2;\n case 2:\n o = 0, s = 0, a = r, n.label = 3;\n case 3:\n return s < a.length ? (c = a[s]).style === VA.NONE || $t(c.color) ? [3, 5] : [4, this.renderBorder(c.color, o, t.curves)] : [3, 7];\n case 4:\n n.sent(), n.label = 5;\n case 5:\n o++, n.label = 6;\n case 6:\n return s++, [3, 3];\n case 7:\n return [2];\n }\n });\n });\n }, t.prototype.render = function (t) {\n return r(this, void 0, void 0, function () {\n var A;\n return n(this, function (e) {\n switch (e.label) {\n case 0:\n return this.options.backgroundColor && (this.ctx.fillStyle = tA(this.options.backgroundColor), this.ctx.fillRect(this.options.x - this.options.scrollX, this.options.y - this.options.scrollY, this.options.width, this.options.height)), r = new Ai(t, []), n = new ti(r), ei(r, n, n, i = []), ri(r.container, i), A = n, [4, this.renderStack(A)];\n case 1:\n return e.sent(), this.applyEffects([], 2), [2, this.canvas];\n }\n var r, n, i;\n });\n });\n }, t;\n }(),\n pi = function (t) {\n return t instanceof Xr || t instanceof Vr || t instanceof qr && \"radio\" !== t.type && \"checkbox\" !== t.type;\n },\n Bi = function (t, A) {\n switch (t) {\n case oA.BORDER_BOX:\n return Wn(A);\n case oA.CONTENT_BOX:\n return function (t) {\n return [t.topLeftContentBox, t.topRightContentBox, t.bottomRightContentBox, t.bottomLeftContentBox];\n }(A);\n case oA.PADDING_BOX:\n default:\n return Yn(A);\n }\n },\n gi = function (t) {\n switch (t) {\n case Oe.CENTER:\n return \"center\";\n case Oe.RIGHT:\n return \"right\";\n case Oe.LEFT:\n default:\n return \"left\";\n }\n },\n wi = function () {\n function t(t) {\n this.canvas = t.canvas ? t.canvas : document.createElement(\"canvas\"), this.ctx = this.canvas.getContext(\"2d\"), this.options = t, this.canvas.width = Math.floor(t.width * t.scale), this.canvas.height = Math.floor(t.height * t.scale), this.canvas.style.width = t.width + \"px\", this.canvas.style.height = t.height + \"px\", this.ctx.scale(this.options.scale, this.options.scale), this.ctx.translate(-t.x + t.scrollX, -t.y + t.scrollY), UA.getInstance(t.id).debug(\"EXPERIMENTAL ForeignObject renderer initialized (\" + t.width + \"x\" + t.height + \" at \" + t.x + \",\" + t.y + \") with scale \" + t.scale);\n }\n return t.prototype.render = function (t) {\n return r(this, void 0, void 0, function () {\n var A, e;\n return n(this, function (r) {\n switch (r.label) {\n case 0:\n return A = yA(Math.max(this.options.windowWidth, this.options.width) * this.options.scale, Math.max(this.options.windowHeight, this.options.height) * this.options.scale, this.options.scrollX * this.options.scale, this.options.scrollY * this.options.scale, t), [4, mi(A)];\n case 1:\n return e = r.sent(), this.options.backgroundColor && (this.ctx.fillStyle = tA(this.options.backgroundColor), this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale)), this.ctx.drawImage(e, -this.options.x * this.options.scale, -this.options.y * this.options.scale), [2, this.canvas];\n }\n });\n });\n }, t;\n }(),\n mi = function (t) {\n return new Promise(function (A, e) {\n var r = new Image();\n r.onload = function () {\n A(r);\n }, r.onerror = e, r.src = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(new XMLSerializer().serializeToString(t));\n });\n },\n Qi = function (t) {\n return Zt(Ht.create(t).parseComponentValue());\n };\n \"undefined\" != typeof window && NA.setContext(window);\n var Ci = function (t, A) {\n return r(void 0, void 0, void 0, function () {\n var r, s, a, c, u, l, h, f, d, p, B, g, w, m, Q, C, y, v, F, U, N, E, b;\n return n(this, function (n) {\n switch (n.label) {\n case 0:\n if (!(r = t.ownerDocument)) throw new Error(\"Element is not attached to a Document\");\n if (!(s = r.defaultView)) throw new Error(\"Document is not attached to a Window\");\n return a = (Math.round(1e3 * Math.random()) + Date.now()).toString(16), c = ln(t) || \"HTML\" === t.tagName ? function (t) {\n var A = t.body,\n e = t.documentElement;\n if (!A || !e) throw new Error(\"Unable to get document size\");\n var r = Math.max(Math.max(A.scrollWidth, e.scrollWidth), Math.max(A.offsetWidth, e.offsetWidth), Math.max(A.clientWidth, e.clientWidth)),\n n = Math.max(Math.max(A.scrollHeight, e.scrollHeight), Math.max(A.offsetHeight, e.offsetHeight), Math.max(A.clientHeight, e.clientHeight));\n return new i(0, 0, r, n);\n }(r) : o(t), u = c.width, l = c.height, h = c.left, f = c.top, d = e({}, {\n allowTaint: !1,\n imageTimeout: 15e3,\n proxy: void 0,\n useCORS: !1\n }, A), p = {\n backgroundColor: \"#ffffff\",\n cache: A.cache ? A.cache : NA.create(a, d),\n logging: !0,\n removeContainer: !0,\n foreignObjectRendering: !1,\n scale: s.devicePixelRatio || 1,\n windowWidth: s.innerWidth,\n windowHeight: s.innerHeight,\n scrollX: s.pageXOffset,\n scrollY: s.pageYOffset,\n x: h,\n y: f,\n width: Math.ceil(u),\n height: Math.ceil(l),\n id: a\n }, B = e({}, p, d, A), g = new i(B.scrollX, B.scrollY, B.windowWidth, B.windowHeight), UA.create({\n id: a,\n enabled: B.logging\n }), UA.getInstance(a).debug(\"Starting document clone\"), w = new Hn(t, {\n id: a,\n onclone: B.onclone,\n ignoreElements: B.ignoreElements,\n inlineImages: B.foreignObjectRendering,\n copyStyles: B.foreignObjectRendering\n }), (m = w.clonedReferenceElement) ? [4, w.toIFrame(r, g)] : [2, Promise.reject(\"Unable to find element in cloned iframe\")];\n case 1:\n return Q = n.sent(), C = r.documentElement ? Qi(getComputedStyle(r.documentElement).backgroundColor) : cA.TRANSPARENT, y = r.body ? Qi(getComputedStyle(r.body).backgroundColor) : cA.TRANSPARENT, v = A.backgroundColor, F = \"string\" == typeof v ? Qi(v) : null === v ? cA.TRANSPARENT : 4294967295, U = t === r.documentElement ? $t(C) ? $t(y) ? F : y : C : F, N = {\n id: a,\n cache: B.cache,\n canvas: B.canvas,\n backgroundColor: U,\n scale: B.scale,\n x: B.x,\n y: B.y,\n scrollX: B.scrollX,\n scrollY: B.scrollY,\n width: B.width,\n height: B.height,\n windowWidth: B.windowWidth,\n windowHeight: B.windowHeight\n }, B.foreignObjectRendering ? (UA.getInstance(a).debug(\"Document cloned, using foreign object rendering\"), [4, new wi(N).render(m)]) : [3, 3];\n case 2:\n return E = n.sent(), [3, 5];\n case 3:\n return UA.getInstance(a).debug(\"Document cloned, using computed rendering\"), NA.attachInstance(B.cache), UA.getInstance(a).debug(\"Starting DOM parsing\"), b = $r(m), NA.detachInstance(), U === b.styles.backgroundColor && (b.styles.backgroundColor = cA.TRANSPARENT), UA.getInstance(a).debug(\"Starting renderer\"), [4, new di(N).render(b)];\n case 4:\n E = n.sent(), n.label = 5;\n case 5:\n return !0 === B.removeContainer && (Hn.destroy(Q) || UA.getInstance(a).error(\"Cannot detach cloned iframe as it is not in the DOM anymore\")), UA.getInstance(a).debug(\"Finished rendering\"), UA.destroy(a), NA.destroy(a), [2, E];\n }\n });\n });\n };\n return function (t, A) {\n return void 0 === A && (A = {}), Ci(t, A);\n };\n }();\n}, function (t, A, e) {\n (function (r) {\n var n, i;\n n = function () {\n \"use strict\";\n\n /** @license\n * jsPDF - PDF Document creation from JavaScript\n * Version 1.5.3 Built on 2018-12-27T14:11:42.696Z\n * CommitID d93d28db14\n *\n * Copyright (c) 2010-2016 James Hall <james@parall.ax>, https://github.com/MrRio/jsPDF\n * 2010 Aaron Spike, https://github.com/acspike\n * 2012 Willow Systems Corporation, willow-systems.com\n * 2012 Pablo Hess, https://github.com/pablohess\n * 2012 Florian Jenett, https://github.com/fjenett\n * 2013 Warren Weckesser, https://github.com/warrenweckesser\n * 2013 Youssef Beddad, https://github.com/lifof\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2013 Stefan Slonevskiy, https://github.com/stefslon\n * 2013 Jeremy Morel, https://github.com/jmorel\n * 2013 Christoph Hartmann, https://github.com/chris-rock\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Makes, https://github.com/dollaruw\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 Steven Spungin, https://github.com/Flamenco\n * 2014 Kenneth Glassey, https://github.com/Gavvers\n *\n * Licensed under the MIT License\n *\n * Contributor(s):\n * siefkenj, ahwolf, rickygu, Midnith, saintclair, eaparango,\n * kim3er, mfo, alnorth, Flamenco\n */\n function n(t) {\n return (n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (t) {\n return typeof t;\n } : function (t) {\n return t && \"function\" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? \"symbol\" : typeof t;\n })(t);\n }\n !function (t) {\n if (\"object\" !== n(t.console)) {\n t.console = {};\n for (var A, e, r = t.console, i = function () {}, o = [\"memory\"], s = \"assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn\".split(\",\"); A = o.pop();) r[A] || (r[A] = {});\n for (; e = s.pop();) r[e] || (r[e] = i);\n }\n var a,\n c,\n u,\n l,\n h = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n void 0 === t.btoa && (t.btoa = function (t) {\n var A,\n e,\n r,\n n,\n i,\n o = 0,\n s = 0,\n a = \"\",\n c = [];\n if (!t) return t;\n for (; A = (i = t.charCodeAt(o++) << 16 | t.charCodeAt(o++) << 8 | t.charCodeAt(o++)) >> 18 & 63, e = i >> 12 & 63, r = i >> 6 & 63, n = 63 & i, c[s++] = h.charAt(A) + h.charAt(e) + h.charAt(r) + h.charAt(n), o < t.length;);\n a = c.join(\"\");\n var u = t.length % 3;\n return (u ? a.slice(0, u - 3) : a) + \"===\".slice(u || 3);\n }), void 0 === t.atob && (t.atob = function (t) {\n var A,\n e,\n r,\n n,\n i,\n o,\n s = 0,\n a = 0,\n c = [];\n if (!t) return t;\n for (t += \"\"; A = (o = h.indexOf(t.charAt(s++)) << 18 | h.indexOf(t.charAt(s++)) << 12 | (n = h.indexOf(t.charAt(s++))) << 6 | (i = h.indexOf(t.charAt(s++)))) >> 16 & 255, e = o >> 8 & 255, r = 255 & o, c[a++] = 64 == n ? String.fromCharCode(A) : 64 == i ? String.fromCharCode(A, e) : String.fromCharCode(A, e, r), s < t.length;);\n return c.join(\"\");\n }), Array.prototype.map || (Array.prototype.map = function (t) {\n if (null == this || \"function\" != typeof t) throw new TypeError();\n for (var A = Object(this), e = A.length >>> 0, r = new Array(e), n = 1 < arguments.length ? arguments[1] : void 0, i = 0; i < e; i++) i in A && (r[i] = t.call(n, A[i], i, A));\n return r;\n }), Array.isArray || (Array.isArray = function (t) {\n return \"[object Array]\" === Object.prototype.toString.call(t);\n }), Array.prototype.forEach || (Array.prototype.forEach = function (t, A) {\n if (null == this || \"function\" != typeof t) throw new TypeError();\n for (var e = Object(this), r = e.length >>> 0, n = 0; n < r; n++) n in e && t.call(A, e[n], n, e);\n }), Array.prototype.find || Object.defineProperty(Array.prototype, \"find\", {\n value: function (t) {\n if (null == this) throw new TypeError('\"this\" is null or not defined');\n var A = Object(this),\n e = A.length >>> 0;\n if (\"function\" != typeof t) throw new TypeError(\"predicate must be a function\");\n for (var r = arguments[1], n = 0; n < e;) {\n var i = A[n];\n if (t.call(r, i, n, A)) return i;\n n++;\n }\n },\n configurable: !0,\n writable: !0\n }), Object.keys || (Object.keys = (a = Object.prototype.hasOwnProperty, c = !{\n toString: null\n }.propertyIsEnumerable(\"toString\"), l = (u = [\"toString\", \"toLocaleString\", \"valueOf\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"constructor\"]).length, function (t) {\n if (\"object\" !== n(t) && (\"function\" != typeof t || null === t)) throw new TypeError();\n var A,\n e,\n r = [];\n for (A in t) a.call(t, A) && r.push(A);\n if (c) for (e = 0; e < l; e++) a.call(t, u[e]) && r.push(u[e]);\n return r;\n })), \"function\" != typeof Object.assign && (Object.assign = function (t) {\n if (null == t) throw new TypeError(\"Cannot convert undefined or null to object\");\n t = Object(t);\n for (var A = 1; A < arguments.length; A++) {\n var e = arguments[A];\n if (null != e) for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);\n }\n return t;\n }), String.prototype.trim || (String.prototype.trim = function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n }), String.prototype.trimLeft || (String.prototype.trimLeft = function () {\n return this.replace(/^\\s+/g, \"\");\n }), String.prototype.trimRight || (String.prototype.trimRight = function () {\n return this.replace(/\\s+$/g, \"\");\n }), Number.isInteger = Number.isInteger || function (t) {\n return \"number\" == typeof t && isFinite(t) && Math.floor(t) === t;\n };\n }(\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")());\n var o,\n s,\n a,\n c,\n u,\n l,\n h,\n f,\n d,\n p,\n B,\n g,\n w,\n m,\n Q,\n C,\n y,\n v,\n F,\n U,\n N,\n E,\n b,\n L,\n H,\n x,\n S,\n I,\n _,\n T,\n R,\n O,\n K,\n M,\n P,\n D,\n k,\n z,\n j,\n q,\n V,\n X,\n G,\n J,\n W,\n Y,\n Z,\n $,\n tt,\n At,\n et,\n rt,\n nt,\n it,\n ot,\n st,\n at,\n ct,\n ut,\n lt,\n ht,\n ft,\n dt = function (r) {\n function o(t) {\n if (\"object\" !== n(t)) throw new Error(\"Invalid Context passed to initialize PubSub (jsPDF-module)\");\n var A = {};\n this.subscribe = function (t, e, r) {\n if (r = r || !1, \"string\" != typeof t || \"function\" != typeof e || \"boolean\" != typeof r) throw new Error(\"Invalid arguments passed to PubSub.subscribe (jsPDF-module)\");\n A.hasOwnProperty(t) || (A[t] = {});\n var n = Math.random().toString(35);\n return A[t][n] = [e, !!r], n;\n }, this.unsubscribe = function (t) {\n for (var e in A) if (A[e][t]) return delete A[e][t], 0 === Object.keys(A[e]).length && delete A[e], !0;\n return !1;\n }, this.publish = function (e) {\n if (A.hasOwnProperty(e)) {\n var n = Array.prototype.slice.call(arguments, 1),\n i = [];\n for (var o in A[e]) {\n var s = A[e][o];\n try {\n s[0].apply(t, n);\n } catch (e) {\n r.console && console.error(\"jsPDF PubSub Error\", e.message, e);\n }\n s[1] && i.push(o);\n }\n i.length && i.forEach(this.unsubscribe);\n }\n }, this.getTopics = function () {\n return A;\n };\n }\n function s(t, A, e, i) {\n var a = {},\n c = [],\n u = 1;\n \"object\" === n(t) && (t = (a = t).orientation, A = a.unit || A, e = a.format || e, i = a.compress || a.compressPdf || i, c = a.filters || (!0 === i ? [\"FlateEncode\"] : c), u = \"number\" == typeof a.userUnit ? Math.abs(a.userUnit) : 1), A = A || \"mm\", t = (\"\" + (t || \"P\")).toLowerCase();\n var l = a.putOnlyUsedFonts || !0,\n h = {},\n f = {\n internal: {},\n __private__: {}\n };\n f.__private__.PubSub = o;\n var d = \"1.3\",\n p = f.__private__.getPdfVersion = function () {\n return d;\n },\n B = (f.__private__.setPdfVersion = function (t) {\n d = t;\n }, {\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 g = (f.__private__.getPageFormats = function () {\n return B;\n }, f.__private__.getPageFormat = function (t) {\n return B[t];\n });\n \"string\" == typeof e && (e = g(e)), e = e || g(\"a4\");\n var w,\n m = f.f2 = f.__private__.f2 = function (t) {\n if (isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.f2\");\n return t.toFixed(2);\n },\n Q = f.__private__.f3 = function (t) {\n if (isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.f3\");\n return t.toFixed(3);\n },\n C = \"00000000000000000000000000000000\",\n y = f.__private__.getFileId = function () {\n return C;\n },\n v = f.__private__.setFileId = function (t) {\n return t = t || \"12345678901234567890123456789012\".split(\"\").map(function () {\n return \"ABCDEF0123456789\".charAt(Math.floor(16 * Math.random()));\n }).join(\"\"), C = t;\n };\n f.setFileId = function (t) {\n return v(t), this;\n }, f.getFileId = function () {\n return y();\n };\n var F = f.__private__.convertDateToPDFDate = function (t) {\n var A = t.getTimezoneOffset(),\n e = A < 0 ? \"+\" : \"-\",\n r = Math.floor(Math.abs(A / 60)),\n n = Math.abs(A % 60),\n i = [e, R(r), \"'\", R(n), \"'\"].join(\"\");\n return [\"D:\", t.getFullYear(), R(t.getMonth() + 1), R(t.getDate()), R(t.getHours()), R(t.getMinutes()), R(t.getSeconds()), i].join(\"\");\n },\n U = f.__private__.convertPDFDateToDate = function (t) {\n var A = parseInt(t.substr(2, 4), 10),\n e = parseInt(t.substr(6, 2), 10) - 1,\n r = parseInt(t.substr(8, 2), 10),\n n = parseInt(t.substr(10, 2), 10),\n i = parseInt(t.substr(12, 2), 10),\n o = parseInt(t.substr(14, 2), 10);\n return parseInt(t.substr(16, 2), 10), parseInt(t.substr(20, 2), 10), new Date(A, e, r, n, i, o, 0);\n },\n N = f.__private__.setCreationDate = function (t) {\n var A;\n if (void 0 === t && (t = new Date()), \"object\" === n(t) && \"[object Date]\" === Object.prototype.toString.call(t)) A = F(t);else {\n if (!/^D:(20[0-2][0-9]|203[0-7]|19[7-9][0-9])(0[0-9]|1[0-2])([0-2][0-9]|3[0-1])(0[0-9]|1[0-9]|2[0-3])(0[0-9]|[1-5][0-9])(0[0-9]|[1-5][0-9])(\\+0[0-9]|\\+1[0-4]|\\-0[0-9]|\\-1[0-1])\\'(0[0-9]|[1-5][0-9])\\'?$/.test(t)) throw new Error(\"Invalid argument passed to jsPDF.setCreationDate\");\n A = t;\n }\n return w = A;\n },\n E = f.__private__.getCreationDate = function (t) {\n var A = w;\n return \"jsDate\" === t && (A = U(w)), A;\n };\n f.setCreationDate = function (t) {\n return N(t), this;\n }, f.getCreationDate = function (t) {\n return E(t);\n };\n var b,\n L,\n H,\n x,\n S,\n I,\n _,\n T,\n R = f.__private__.padd2 = function (t) {\n return (\"0\" + parseInt(t)).slice(-2);\n },\n O = !1,\n K = [],\n M = [],\n P = 0,\n D = (f.__private__.setCustomOutputDestination = function (t) {\n L = t;\n }, f.__private__.resetCustomOutputDestination = function (t) {\n L = void 0;\n }, f.__private__.out = function (t) {\n var A;\n return t = \"string\" == typeof t ? t : t.toString(), (A = void 0 === L ? O ? K[b] : M : L).push(t), O || (P += t.length + 1), A;\n }),\n k = f.__private__.write = function (t) {\n return D(1 === arguments.length ? t.toString() : Array.prototype.join.call(arguments, \" \"));\n },\n z = f.__private__.getArrayBuffer = function (t) {\n for (var A = t.length, e = new ArrayBuffer(A), r = new Uint8Array(e); A--;) r[A] = t.charCodeAt(A);\n return e;\n },\n j = [[\"Helvetica\", \"helvetica\", \"normal\", \"WinAnsiEncoding\"], [\"Helvetica-Bold\", \"helvetica\", \"bold\", \"WinAnsiEncoding\"], [\"Helvetica-Oblique\", \"helvetica\", \"italic\", \"WinAnsiEncoding\"], [\"Helvetica-BoldOblique\", \"helvetica\", \"bolditalic\", \"WinAnsiEncoding\"], [\"Courier\", \"courier\", \"normal\", \"WinAnsiEncoding\"], [\"Courier-Bold\", \"courier\", \"bold\", \"WinAnsiEncoding\"], [\"Courier-Oblique\", \"courier\", \"italic\", \"WinAnsiEncoding\"], [\"Courier-BoldOblique\", \"courier\", \"bolditalic\", \"WinAnsiEncoding\"], [\"Times-Roman\", \"times\", \"normal\", \"WinAnsiEncoding\"], [\"Times-Bold\", \"times\", \"bold\", \"WinAnsiEncoding\"], [\"Times-Italic\", \"times\", \"italic\", \"WinAnsiEncoding\"], [\"Times-BoldItalic\", \"times\", \"bolditalic\", \"WinAnsiEncoding\"], [\"ZapfDingbats\", \"zapfdingbats\", \"normal\", null], [\"Symbol\", \"symbol\", \"normal\", null]],\n q = (f.__private__.getStandardFonts = function (t) {\n return j;\n }, a.fontSize || 16),\n V = (f.__private__.setFontSize = f.setFontSize = function (t) {\n return q = t, this;\n }, f.__private__.getFontSize = f.getFontSize = function () {\n return q;\n }),\n X = a.R2L || !1,\n G = (f.__private__.setR2L = f.setR2L = function (t) {\n return X = t, this;\n }, f.__private__.getR2L = f.getR2L = function (t) {\n return X;\n }, f.__private__.setZoomMode = function (t) {\n if (/^\\d*\\.?\\d*\\%$/.test(t)) H = t;else if (isNaN(t)) {\n if (-1 === [void 0, null, \"fullwidth\", \"fullheight\", \"fullpage\", \"original\"].indexOf(t)) throw new Error('zoom must be Integer (e.g. 2), a percentage Value (e.g. 300%) or fullwidth, fullheight, fullpage, original. \"' + t + '\" is not recognized.');\n H = t;\n } else H = parseInt(t, 10);\n }),\n J = (f.__private__.getZoomMode = function () {\n return H;\n }, f.__private__.setPageMode = function (t) {\n if (-1 == [void 0, null, \"UseNone\", \"UseOutlines\", \"UseThumbs\", \"FullScreen\"].indexOf(t)) throw new Error('Page mode must be one of UseNone, UseOutlines, UseThumbs, or FullScreen. \"' + t + '\" is not recognized.');\n x = t;\n }),\n W = (f.__private__.getPageMode = function () {\n return x;\n }, f.__private__.setLayoutMode = function (t) {\n if (-1 == [void 0, null, \"continuous\", \"single\", \"twoleft\", \"tworight\", \"two\"].indexOf(t)) throw new Error('Layout mode must be one of continuous, single, twoleft, tworight. \"' + t + '\" is not recognized.');\n S = t;\n }),\n Y = (f.__private__.getLayoutMode = function () {\n return S;\n }, f.__private__.setDisplayMode = f.setDisplayMode = function (t, A, e) {\n return G(t), W(A), J(e), this;\n }, {\n title: \"\",\n subject: \"\",\n author: \"\",\n keywords: \"\",\n creator: \"\"\n }),\n Z = (f.__private__.getDocumentProperty = function (t) {\n if (-1 === Object.keys(Y).indexOf(t)) throw new Error(\"Invalid argument passed to jsPDF.getDocumentProperty\");\n return Y[t];\n }, f.__private__.getDocumentProperties = function (t) {\n return Y;\n }, f.__private__.setDocumentProperties = f.setProperties = f.setDocumentProperties = function (t) {\n for (var A in Y) Y.hasOwnProperty(A) && t[A] && (Y[A] = t[A]);\n return this;\n }, f.__private__.setDocumentProperty = function (t, A) {\n if (-1 === Object.keys(Y).indexOf(t)) throw new Error(\"Invalid arguments passed to jsPDF.setDocumentProperty\");\n return Y[t] = A;\n }, 0),\n $ = [],\n tt = {},\n At = {},\n et = 0,\n rt = [],\n nt = [],\n it = new o(f),\n ot = a.hotfixes || [],\n st = f.__private__.newObject = function () {\n var t = at();\n return ct(t, !0), t;\n },\n at = f.__private__.newObjectDeferred = function () {\n return $[++Z] = function () {\n return P;\n }, Z;\n },\n ct = function (t, A) {\n return A = \"boolean\" == typeof A && A, $[t] = P, A && D(t + \" 0 obj\"), t;\n },\n ut = f.__private__.newAdditionalObject = function () {\n var t = {\n objId: at(),\n content: \"\"\n };\n return nt.push(t), t;\n },\n lt = at(),\n ht = at(),\n ft = f.__private__.decodeColorString = function (t) {\n var A = t.split(\" \");\n if (2 === A.length && (\"g\" === A[1] || \"G\" === A[1])) {\n var e = parseFloat(A[0]);\n A = [e, e, e, \"r\"];\n }\n for (var r = \"#\", n = 0; n < 3; n++) r += (\"0\" + Math.floor(255 * parseFloat(A[n])).toString(16)).slice(-2);\n return r;\n },\n dt = f.__private__.encodeColorString = function (t) {\n var A;\n \"string\" == typeof t && (t = {\n ch1: t\n });\n var e = t.ch1,\n r = t.ch2,\n i = t.ch3,\n o = t.ch4,\n s = (t.precision, \"draw\" === t.pdfColorType ? [\"G\", \"RG\", \"K\"] : [\"g\", \"rg\", \"k\"]);\n if (\"string\" == typeof e && \"#\" !== e.charAt(0)) {\n var a = new RGBColor(e);\n if (a.ok) e = a.toHex();else if (!/^\\d*\\.?\\d*$/.test(e)) throw new Error('Invalid color \"' + e + '\" passed to jsPDF.encodeColorString.');\n }\n if (\"string\" == typeof e && /^#[0-9A-Fa-f]{3}$/.test(e) && (e = \"#\" + e[1] + e[1] + e[2] + e[2] + e[3] + e[3]), \"string\" == typeof e && /^#[0-9A-Fa-f]{6}$/.test(e)) {\n var c = parseInt(e.substr(1), 16);\n e = c >> 16 & 255, r = c >> 8 & 255, i = 255 & c;\n }\n if (void 0 === r || void 0 === o && e === r && r === i) {\n if (\"string\" == typeof e) A = e + \" \" + s[0];else switch (t.precision) {\n case 2:\n A = m(e / 255) + \" \" + s[0];\n break;\n case 3:\n default:\n A = Q(e / 255) + \" \" + s[0];\n }\n } else if (void 0 === o || \"object\" === n(o)) {\n if (o && !isNaN(o.a) && 0 === o.a) return [\"1.000\", \"1.000\", \"1.000\", s[1]].join(\" \");\n if (\"string\" == typeof e) A = [e, r, i, s[1]].join(\" \");else switch (t.precision) {\n case 2:\n A = [m(e / 255), m(r / 255), m(i / 255), s[1]].join(\" \");\n break;\n default:\n case 3:\n A = [Q(e / 255), Q(r / 255), Q(i / 255), s[1]].join(\" \");\n }\n } else if (\"string\" == typeof e) A = [e, r, i, o, s[2]].join(\" \");else switch (t.precision) {\n case 2:\n A = [m(e / 255), m(r / 255), m(i / 255), m(o / 255), s[2]].join(\" \");\n break;\n case 3:\n default:\n A = [Q(e / 255), Q(r / 255), Q(i / 255), Q(o / 255), s[2]].join(\" \");\n }\n return A;\n },\n pt = f.__private__.getFilters = function () {\n return c;\n },\n Bt = f.__private__.putStream = function (t) {\n var A,\n e = (t = t || {}).data || \"\",\n r = t.filters || pt(),\n n = t.alreadyAppliedFilters || [],\n i = t.addLength1 || !1,\n o = e.length;\n !0 === r && (r = [\"FlateEncode\"]);\n var a = t.additionalKeyValues || [],\n c = (A = void 0 !== s.API.processDataByFilters ? s.API.processDataByFilters(e, r) : {\n data: e,\n reverseChain: []\n }).reverseChain + (Array.isArray(n) ? n.join(\" \") : n.toString());\n 0 !== A.data.length && (a.push({\n key: \"Length\",\n value: A.data.length\n }), !0 === i && a.push({\n key: \"Length1\",\n value: o\n })), 0 != c.length && (c.split(\"/\").length - 1 == 1 ? a.push({\n key: \"Filter\",\n value: c\n }) : a.push({\n key: \"Filter\",\n value: \"[\" + c + \"]\"\n })), D(\"<<\");\n for (var u = 0; u < a.length; u++) D(\"/\" + a[u].key + \" \" + a[u].value);\n D(\">>\"), 0 !== A.data.length && (D(\"stream\"), D(A.data), D(\"endstream\"));\n },\n gt = f.__private__.putPage = function (t) {\n t.mediaBox;\n var A = t.number,\n e = t.data,\n r = t.objId,\n n = t.contentsObjId;\n ct(r, !0), rt[b].mediaBox.topRightX, rt[b].mediaBox.bottomLeftX, rt[b].mediaBox.topRightY, rt[b].mediaBox.bottomLeftY, D(\"<</Type /Page\"), D(\"/Parent \" + t.rootDictionaryObjId + \" 0 R\"), D(\"/Resources \" + t.resourceDictionaryObjId + \" 0 R\"), D(\"/MediaBox [\" + parseFloat(m(t.mediaBox.bottomLeftX)) + \" \" + parseFloat(m(t.mediaBox.bottomLeftY)) + \" \" + m(t.mediaBox.topRightX) + \" \" + m(t.mediaBox.topRightY) + \"]\"), null !== t.cropBox && D(\"/CropBox [\" + m(t.cropBox.bottomLeftX) + \" \" + m(t.cropBox.bottomLeftY) + \" \" + m(t.cropBox.topRightX) + \" \" + m(t.cropBox.topRightY) + \"]\"), null !== t.bleedBox && D(\"/BleedBox [\" + m(t.bleedBox.bottomLeftX) + \" \" + m(t.bleedBox.bottomLeftY) + \" \" + m(t.bleedBox.topRightX) + \" \" + m(t.bleedBox.topRightY) + \"]\"), null !== t.trimBox && D(\"/TrimBox [\" + m(t.trimBox.bottomLeftX) + \" \" + m(t.trimBox.bottomLeftY) + \" \" + m(t.trimBox.topRightX) + \" \" + m(t.trimBox.topRightY) + \"]\"), null !== t.artBox && D(\"/ArtBox [\" + m(t.artBox.bottomLeftX) + \" \" + m(t.artBox.bottomLeftY) + \" \" + m(t.artBox.topRightX) + \" \" + m(t.artBox.topRightY) + \"]\"), \"number\" == typeof t.userUnit && 1 !== t.userUnit && D(\"/UserUnit \" + t.userUnit), it.publish(\"putPage\", {\n objId: r,\n pageContext: rt[A],\n pageNumber: A,\n page: e\n }), D(\"/Contents \" + n + \" 0 R\"), D(\">>\"), D(\"endobj\");\n var i = e.join(\"\\n\");\n return ct(n, !0), Bt({\n data: i,\n filters: pt()\n }), D(\"endobj\"), r;\n },\n wt = f.__private__.putPages = function () {\n var t,\n A,\n e = [];\n for (t = 1; t <= et; t++) rt[t].objId = at(), rt[t].contentsObjId = at();\n for (t = 1; t <= et; t++) e.push(gt({\n number: t,\n data: K[t],\n objId: rt[t].objId,\n contentsObjId: rt[t].contentsObjId,\n mediaBox: rt[t].mediaBox,\n cropBox: rt[t].cropBox,\n bleedBox: rt[t].bleedBox,\n trimBox: rt[t].trimBox,\n artBox: rt[t].artBox,\n userUnit: rt[t].userUnit,\n rootDictionaryObjId: lt,\n resourceDictionaryObjId: ht\n }));\n ct(lt, !0), D(\"<</Type /Pages\");\n var r = \"/Kids [\";\n for (A = 0; A < et; A++) r += e[A] + \" 0 R \";\n D(r + \"]\"), D(\"/Count \" + et), D(\">>\"), D(\"endobj\"), it.publish(\"postPutPages\");\n },\n mt = function (t, A, e) {\n At.hasOwnProperty(A) || (At[A] = {}), At[A][e] = t;\n },\n Qt = function (t, A, e, r, n) {\n n = n || !1;\n var i = \"F\" + (Object.keys(tt).length + 1).toString(10),\n o = {\n id: i,\n postScriptName: t,\n fontName: A,\n fontStyle: e,\n encoding: r,\n isStandardFont: n,\n metadata: {}\n };\n return it.publish(\"addFont\", {\n font: o,\n instance: this\n }), void 0 !== i && (tt[i] = o, mt(i, A, e)), i;\n },\n Ct = f.__private__.pdfEscape = f.pdfEscape = function (t, A) {\n return function (t, A) {\n var e, r, n, i, o, s, a, c, u;\n if (n = (A = A || {}).sourceEncoding || \"Unicode\", o = A.outputEncoding, (A.autoencode || o) && tt[I].metadata && tt[I].metadata[n] && tt[I].metadata[n].encoding && (i = tt[I].metadata[n].encoding, !o && tt[I].encoding && (o = tt[I].encoding), !o && i.codePages && (o = i.codePages[0]), \"string\" == typeof o && (o = i[o]), o)) {\n for (a = !1, s = [], e = 0, r = t.length; e < r; e++) (c = o[t.charCodeAt(e)]) ? s.push(String.fromCharCode(c)) : s.push(t[e]), s[e].charCodeAt(0) >> 8 && (a = !0);\n t = s.join(\"\");\n }\n for (e = t.length; void 0 === a && 0 !== e;) t.charCodeAt(e - 1) >> 8 && (a = !0), e--;\n if (!a) return t;\n for (s = A.noBOM ? [] : [254, 255], e = 0, r = t.length; e < r; e++) {\n if ((u = (c = t.charCodeAt(e)) >> 8) >> 8) throw new Error(\"Character at position \" + e + \" of string '\" + t + \"' exceeds 16bits. Cannot be encoded into UCS-2 BE\");\n s.push(u), s.push(c - (u << 8));\n }\n return String.fromCharCode.apply(void 0, s);\n }(t, A).replace(/\\\\/g, \"\\\\\\\\\").replace(/\\(/g, \"\\\\(\").replace(/\\)/g, \"\\\\)\");\n },\n yt = f.__private__.beginPage = function (t, A) {\n var r,\n n = \"string\" == typeof A && A.toLowerCase();\n if (\"string\" == typeof t && (r = g(t.toLowerCase())) && (t = r[0], A = r[1]), Array.isArray(t) && (A = t[1], t = t[0]), (isNaN(t) || isNaN(A)) && (t = e[0], A = e[1]), n) {\n switch (n.substr(0, 1)) {\n case \"l\":\n t < A && (n = \"s\");\n break;\n case \"p\":\n A < t && (n = \"s\");\n }\n \"s\" === n && (r = t, t = A, A = r);\n }\n (14400 < t || 14400 < A) && (console.warn(\"A page in a PDF can not be wider or taller than 14400 userUnit. jsPDF limits the width/height to 14400\"), t = Math.min(14400, t), A = Math.min(14400, A)), e = [t, A], O = !0, K[++et] = [], rt[et] = {\n objId: 0,\n contentsObjId: 0,\n userUnit: Number(u),\n artBox: null,\n bleedBox: null,\n cropBox: null,\n trimBox: null,\n mediaBox: {\n bottomLeftX: 0,\n bottomLeftY: 0,\n topRightX: Number(t),\n topRightY: Number(A)\n }\n }, Ft(et);\n },\n vt = function () {\n yt.apply(this, arguments), jt(zt), D(Zt), 0 !== nA && D(nA + \" J\"), 0 !== oA && D(oA + \" j\"), it.publish(\"addPage\", {\n pageNumber: et\n });\n },\n Ft = function (t) {\n 0 < t && t <= et && (b = t);\n },\n Ut = f.__private__.getNumberOfPages = f.getNumberOfPages = function () {\n return K.length - 1;\n },\n Nt = function (t, A, e) {\n var r,\n n = void 0;\n return e = e || {}, t = void 0 !== t ? t : tt[I].fontName, A = void 0 !== A ? A : tt[I].fontStyle, r = t.toLowerCase(), void 0 !== At[r] && void 0 !== At[r][A] ? n = At[r][A] : void 0 !== At[t] && void 0 !== At[t][A] ? n = At[t][A] : !1 === e.disableWarning && console.warn(\"Unable to look up font label for font '\" + t + \"', '\" + A + \"'. Refer to getFontList() for available fonts.\"), n || e.noFallback || null == (n = At.times[A]) && (n = At.times.normal), n;\n },\n Et = f.__private__.putInfo = function () {\n for (var t in st(), D(\"<<\"), D(\"/Producer (jsPDF \" + s.version + \")\"), Y) Y.hasOwnProperty(t) && Y[t] && D(\"/\" + t.substr(0, 1).toUpperCase() + t.substr(1) + \" (\" + Ct(Y[t]) + \")\");\n D(\"/CreationDate (\" + w + \")\"), D(\">>\"), D(\"endobj\");\n },\n bt = f.__private__.putCatalog = function (t) {\n var A = (t = t || {}).rootDictionaryObjId || lt;\n switch (st(), D(\"<<\"), D(\"/Type /Catalog\"), D(\"/Pages \" + A + \" 0 R\"), H || (H = \"fullwidth\"), H) {\n case \"fullwidth\":\n D(\"/OpenAction [3 0 R /FitH null]\");\n break;\n case \"fullheight\":\n D(\"/OpenAction [3 0 R /FitV null]\");\n break;\n case \"fullpage\":\n D(\"/OpenAction [3 0 R /Fit]\");\n break;\n case \"original\":\n D(\"/OpenAction [3 0 R /XYZ null null 1]\");\n break;\n default:\n var e = \"\" + H;\n \"%\" === e.substr(e.length - 1) && (H = parseInt(H) / 100), \"number\" == typeof H && D(\"/OpenAction [3 0 R /XYZ null null \" + m(H) + \"]\");\n }\n switch (S || (S = \"continuous\"), S) {\n case \"continuous\":\n D(\"/PageLayout /OneColumn\");\n break;\n case \"single\":\n D(\"/PageLayout /SinglePage\");\n break;\n case \"two\":\n case \"twoleft\":\n D(\"/PageLayout /TwoColumnLeft\");\n break;\n case \"tworight\":\n D(\"/PageLayout /TwoColumnRight\");\n }\n x && D(\"/PageMode /\" + x), it.publish(\"putCatalog\"), D(\">>\"), D(\"endobj\");\n },\n Lt = f.__private__.putTrailer = function () {\n D(\"trailer\"), D(\"<<\"), D(\"/Size \" + (Z + 1)), D(\"/Root \" + Z + \" 0 R\"), D(\"/Info \" + (Z - 1) + \" 0 R\"), D(\"/ID [ <\" + C + \"> <\" + C + \"> ]\"), D(\">>\");\n },\n xt = f.__private__.putHeader = function () {\n D(\"%PDF-\" + d), D(\"%ºß¬à\");\n },\n St = f.__private__.putXRef = function () {\n var t = 1,\n A = \"0000000000\";\n for (D(\"xref\"), D(\"0 \" + (Z + 1)), D(\"0000000000 65535 f \"), t = 1; t <= Z; t++) \"function\" == typeof $[t] ? D((A + $[t]()).slice(-10) + \" 00000 n \") : void 0 !== $[t] ? D((A + $[t]).slice(-10) + \" 00000 n \") : D(\"0000000000 00000 n \");\n },\n It = f.__private__.buildDocument = function () {\n O = !1, P = Z = 0, M = [], $ = [], nt = [], lt = at(), ht = at(), it.publish(\"buildDocument\"), xt(), wt(), function () {\n it.publish(\"putAdditionalObjects\");\n for (var t = 0; t < nt.length; t++) {\n var A = nt[t];\n ct(A.objId, !0), D(A.content), D(\"endobj\");\n }\n it.publish(\"postPutAdditionalObjects\");\n }(), function () {\n for (var t in tt) tt.hasOwnProperty(t) && (!1 === l || !0 === l && h.hasOwnProperty(t)) && (A = tt[t], it.publish(\"putFont\", {\n font: A,\n out: D,\n newObject: st,\n putStream: Bt\n }), !0 !== A.isAlreadyPutted && (A.objectNumber = st(), D(\"<<\"), D(\"/Type /Font\"), D(\"/BaseFont /\" + A.postScriptName), D(\"/Subtype /Type1\"), \"string\" == typeof A.encoding && D(\"/Encoding /\" + A.encoding), D(\"/FirstChar 32\"), D(\"/LastChar 255\"), D(\">>\"), D(\"endobj\")));\n var A;\n }(), it.publish(\"putResources\"), ct(ht, !0), D(\"<<\"), function () {\n for (var t in D(\"/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]\"), D(\"/Font <<\"), tt) tt.hasOwnProperty(t) && (!1 === l || !0 === l && h.hasOwnProperty(t)) && D(\"/\" + t + \" \" + tt[t].objectNumber + \" 0 R\");\n D(\">>\"), D(\"/XObject <<\"), it.publish(\"putXobjectDict\"), D(\">>\");\n }(), D(\">>\"), D(\"endobj\"), it.publish(\"postPutResources\"), Et(), bt();\n var t = P;\n return St(), Lt(), D(\"startxref\"), D(\"\" + t), D(\"%%EOF\"), O = !0, M.join(\"\\n\");\n },\n _t = f.__private__.getBlob = function (t) {\n return new Blob([z(t)], {\n type: \"application/pdf\"\n });\n },\n Tt = f.output = f.__private__.output = ((T = function (t, A) {\n A = A || {};\n var e = It();\n switch (\"string\" == typeof A ? A = {\n filename: A\n } : A.filename = A.filename || \"generated.pdf\", t) {\n case void 0:\n return e;\n case \"save\":\n f.save(A.filename);\n break;\n case \"arraybuffer\":\n return z(e);\n case \"blob\":\n return _t(e);\n case \"bloburi\":\n case \"bloburl\":\n if (void 0 !== r.URL && \"function\" == typeof r.URL.createObjectURL) return r.URL && r.URL.createObjectURL(_t(e)) || void 0;\n console.warn(\"bloburl is not supported by your system, because URL.createObjectURL is not supported by your browser.\");\n break;\n case \"datauristring\":\n case \"dataurlstring\":\n return \"data:application/pdf;filename=\" + A.filename + \";base64,\" + btoa(e);\n case \"dataurlnewwindow\":\n var n = '<html><style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style><body><iframe src=\"' + this.output(\"datauristring\") + '\"></iframe></body></html>',\n i = r.open();\n if (null !== i && i.document.write(n), i || \"undefined\" == typeof safari) return i;\n case \"datauri\":\n case \"dataurl\":\n return r.document.location.href = \"data:application/pdf;filename=\" + A.filename + \";base64,\" + btoa(e);\n default:\n return null;\n }\n }).foo = function () {\n try {\n return T.apply(this, arguments);\n } catch (e) {\n var t = e.stack || \"\";\n ~t.indexOf(\" at \") && (t = t.split(\" at \")[1]);\n var A = \"Error in function \" + t.split(\"\\n\")[0].split(\"<\")[0] + \": \" + e.message;\n if (!r.console) throw new Error(A);\n r.console.error(A, e), r.alert && alert(A);\n }\n }, (T.foo.bar = T).foo),\n Rt = function (t) {\n return !0 === Array.isArray(ot) && -1 < ot.indexOf(t);\n };\n switch (A) {\n case \"pt\":\n _ = 1;\n break;\n case \"mm\":\n _ = 72 / 25.4;\n break;\n case \"cm\":\n _ = 72 / 2.54;\n break;\n case \"in\":\n _ = 72;\n break;\n case \"px\":\n _ = 1 == Rt(\"px_scaling\") ? .75 : 96 / 72;\n break;\n case \"pc\":\n case \"em\":\n _ = 12;\n break;\n case \"ex\":\n _ = 6;\n break;\n default:\n throw new Error(\"Invalid unit: \" + A);\n }\n N(), v();\n var Ot = f.__private__.getPageInfo = function (t) {\n if (isNaN(t) || t % 1 != 0) throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\n return {\n objId: rt[t].objId,\n pageNumber: t,\n pageContext: rt[t]\n };\n },\n Kt = f.__private__.getPageInfoByObjId = function (t) {\n for (var A in rt) if (rt[A].objId === t) break;\n if (isNaN(t) || t % 1 != 0) throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\n return Ot(A);\n },\n Mt = f.__private__.getCurrentPageInfo = function () {\n return {\n objId: rt[b].objId,\n pageNumber: b,\n pageContext: rt[b]\n };\n };\n f.addPage = function () {\n return vt.apply(this, arguments), this;\n }, f.setPage = function () {\n return Ft.apply(this, arguments), this;\n }, f.insertPage = function (t) {\n return this.addPage(), this.movePage(b, t), this;\n }, f.movePage = function (t, A) {\n if (A < t) {\n for (var e = K[t], r = rt[t], n = t; A < n; n--) K[n] = K[n - 1], rt[n] = rt[n - 1];\n K[A] = e, rt[A] = r, this.setPage(A);\n } else if (t < A) {\n for (e = K[t], r = rt[t], n = t; n < A; n++) K[n] = K[n + 1], rt[n] = rt[n + 1];\n K[A] = e, rt[A] = r, this.setPage(A);\n }\n return this;\n }, f.deletePage = function () {\n return function (t) {\n 0 < t && t <= et && (K.splice(t, 1), --et < b && (b = et), this.setPage(b));\n }.apply(this, arguments), this;\n }, f.__private__.text = f.text = function (t, A, e, r) {\n var i;\n \"number\" != typeof t || \"number\" != typeof A || \"string\" != typeof e && !Array.isArray(e) || (i = e, e = A, A = t, t = i);\n var o = arguments[3],\n s = arguments[4],\n a = arguments[5];\n if (\"object\" === n(o) && null !== o || (\"string\" == typeof s && (a = s, s = null), \"string\" == typeof o && (a = o, o = null), \"number\" == typeof o && (s = o, o = null), r = {\n flags: o,\n angle: s,\n align: a\n }), (o = o || {}).noBOM = o.noBOM || !0, o.autoencode = o.autoencode || !0, isNaN(A) || isNaN(e) || null == t) throw new Error(\"Invalid arguments passed to jsPDF.text\");\n if (0 === t.length) return f;\n var c,\n u = \"\",\n l = \"number\" == typeof r.lineHeightFactor ? r.lineHeightFactor : kt,\n f = r.scope || this;\n function d(t) {\n for (var A, e = t.concat(), r = [], n = e.length; n--;) \"string\" == typeof (A = e.shift()) ? r.push(A) : Array.isArray(t) && 1 === A.length ? r.push(A[0]) : r.push([A[0], A[1], A[2]]);\n return r;\n }\n function p(t, A) {\n var e;\n if (\"string\" == typeof t) e = A(t)[0];else if (Array.isArray(t)) {\n for (var r, n, i = t.concat(), o = [], s = i.length; s--;) \"string\" == typeof (r = i.shift()) ? o.push(A(r)[0]) : Array.isArray(r) && \"string\" === r[0] && (n = A(r[0], r[1], r[2]), o.push([n[0], n[1], n[2]]));\n e = o;\n }\n return e;\n }\n var B = !1,\n g = !0;\n if (\"string\" == typeof t) B = !0;else if (Array.isArray(t)) {\n for (var w, C = t.concat(), y = [], v = C.length; v--;) (\"string\" != typeof (w = C.shift()) || Array.isArray(w) && \"string\" != typeof w[0]) && (g = !1);\n B = g;\n }\n if (!1 === B) throw new Error('Type of text must be string or Array. \"' + t + '\" is not recognized.');\n var F = tt[I].encoding;\n \"WinAnsiEncoding\" !== F && \"StandardEncoding\" !== F || (t = p(t, function (t, A, e) {\n return [(n = t, n = n.split(\"\\t\").join(Array(r.TabLen || 9).join(\" \")), Ct(n, o)), A, e];\n var n;\n })), \"string\" == typeof t && (t = t.match(/[\\r?\\n]/) ? t.split(/\\r\\n|\\r|\\n/g) : [t]);\n var U = q / f.internal.scaleFactor,\n N = U * (kt - 1);\n switch (r.baseline) {\n case \"bottom\":\n e -= N;\n break;\n case \"top\":\n e += U - N;\n break;\n case \"hanging\":\n e += U - 2 * N;\n break;\n case \"middle\":\n e += U / 2 - N;\n }\n 0 < (k = r.maxWidth || 0) && (\"string\" == typeof t ? t = f.splitTextToSize(t, k) : \"[object Array]\" === Object.prototype.toString.call(t) && (t = f.splitTextToSize(t.join(\" \"), k)));\n var E = {\n text: t,\n x: A,\n y: e,\n options: r,\n mutex: {\n pdfEscape: Ct,\n activeFontKey: I,\n fonts: tt,\n activeFontSize: q\n }\n };\n it.publish(\"preProcessText\", E), t = E.text, s = (r = E.options).angle;\n var b = f.internal.scaleFactor,\n L = [];\n if (s) {\n s *= Math.PI / 180;\n var H = Math.cos(s),\n x = Math.sin(s);\n L = [m(H), m(x), m(-1 * x), m(H)];\n }\n void 0 !== (P = r.charSpace) && (u += Q(P * b) + \" Tc\\n\"), r.lang;\n var S = -1,\n _ = void 0 !== r.renderingMode ? r.renderingMode : r.stroke,\n T = f.internal.getCurrentPageInfo().pageContext;\n switch (_) {\n case 0:\n case !1:\n case \"fill\":\n S = 0;\n break;\n case 1:\n case !0:\n case \"stroke\":\n S = 1;\n break;\n case 2:\n case \"fillThenStroke\":\n S = 2;\n break;\n case 3:\n case \"invisible\":\n S = 3;\n break;\n case 4:\n case \"fillAndAddForClipping\":\n S = 4;\n break;\n case 5:\n case \"strokeAndAddPathForClipping\":\n S = 5;\n break;\n case 6:\n case \"fillThenStrokeAndAddToPathForClipping\":\n S = 6;\n break;\n case 7:\n case \"addToPathForClipping\":\n S = 7;\n }\n var R = void 0 !== T.usedRenderingMode ? T.usedRenderingMode : -1;\n -1 !== S ? u += S + \" Tr\\n\" : -1 !== R && (u += \"0 Tr\\n\"), -1 !== S && (T.usedRenderingMode = S), a = r.align || \"left\";\n var O = q * l,\n K = f.internal.pageSize.getWidth(),\n M = (b = f.internal.scaleFactor, tt[I]),\n P = r.charSpace || eA,\n k = r.maxWidth || 0,\n z = (o = {}, []);\n if (\"[object Array]\" === Object.prototype.toString.call(t)) {\n var j, V;\n y = d(t), \"left\" !== a && (V = y.map(function (t) {\n return f.getStringUnitWidth(t, {\n font: M,\n charSpace: P,\n fontSize: q\n }) * q / b;\n })), Math.max.apply(Math, V);\n var G,\n J = 0;\n if (\"right\" === a) {\n A -= V[0], t = [];\n var W = 0;\n for (v = y.length; W < v; W++) V[W], j = 0 === W ? (G = Gt(A), Jt(e)) : (G = (J - V[W]) * b, -O), t.push([y[W], G, j]), J = V[W];\n } else if (\"center\" === a) for (A -= V[0] / 2, t = [], W = 0, v = y.length; W < v; W++) V[W], j = 0 === W ? (G = Gt(A), Jt(e)) : (G = (J - V[W]) / 2 * b, -O), t.push([y[W], G, j]), J = V[W];else if (\"left\" === a) for (t = [], W = 0, v = y.length; W < v; W++) j = 0 === W ? Jt(e) : -O, G = 0 === W ? Gt(A) : 0, t.push(y[W]);else {\n if (\"justify\" !== a) throw new Error('Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".');\n for (t = [], k = 0 !== k ? k : K, W = 0, v = y.length; W < v; W++) j = 0 === W ? Jt(e) : -O, G = 0 === W ? Gt(A) : 0, W < v - 1 && z.push(((k - V[W]) / (y[W].split(\" \").length - 1) * b).toFixed(2)), t.push([y[W], G, j]);\n }\n }\n !0 === (\"boolean\" == typeof r.R2L ? r.R2L : X) && (t = p(t, function (t, A, e) {\n return [t.split(\"\").reverse().join(\"\"), A, e];\n })), E = {\n text: t,\n x: A,\n y: e,\n options: r,\n mutex: {\n pdfEscape: Ct,\n activeFontKey: I,\n fonts: tt,\n activeFontSize: q\n }\n }, it.publish(\"postProcessText\", E), t = E.text, c = E.mutex.isHex, y = d(t), t = [];\n var Y,\n Z,\n $,\n At = 0,\n et = (v = y.length, \"\");\n for (W = 0; W < v; W++) et = \"\", Array.isArray(y[W]) ? (Y = parseFloat(y[W][1]), Z = parseFloat(y[W][2]), $ = (c ? \"<\" : \"(\") + y[W][0] + (c ? \">\" : \")\"), At = 1) : (Y = Gt(A), Z = Jt(e), $ = (c ? \"<\" : \"(\") + y[W] + (c ? \">\" : \")\")), void 0 !== z && void 0 !== z[W] && (et = z[W] + \" Tw\\n\"), 0 !== L.length && 0 === W ? t.push(et + L.join(\" \") + \" \" + Y.toFixed(2) + \" \" + Z.toFixed(2) + \" Tm\\n\" + $) : 1 === At || 0 === At && 0 === W ? t.push(et + Y.toFixed(2) + \" \" + Z.toFixed(2) + \" Td\\n\" + $) : t.push(et + $);\n t = 0 === At ? t.join(\" Tj\\nT* \") : t.join(\" Tj\\n\"), t += \" Tj\\n\";\n var rt = \"BT\\n/\" + I + \" \" + q + \" Tf\\n\" + (q * l).toFixed(2) + \" TL\\n\" + tA + \"\\n\";\n return rt += u, rt += t, D(rt += \"ET\"), h[I] = !0, f;\n }, f.__private__.lstext = f.lstext = function (t, A, e, r) {\n return console.warn(\"jsPDF.lstext is deprecated\"), this.text(t, A, e, {\n charSpace: r\n });\n }, f.__private__.clip = f.clip = function (t) {\n D(\"evenodd\" === t ? \"W*\" : \"W\"), D(\"n\");\n }, f.__private__.clip_fixed = f.clip_fixed = function (t) {\n console.log(\"clip_fixed is deprecated\"), f.clip(t);\n };\n var Pt = f.__private__.isValidStyle = function (t) {\n var A = !1;\n return -1 !== [void 0, null, \"S\", \"F\", \"DF\", \"FD\", \"f\", \"f*\", \"B\", \"B*\"].indexOf(t) && (A = !0), A;\n },\n Dt = f.__private__.getStyle = function (t) {\n var A = \"S\";\n return \"F\" === t ? A = \"f\" : \"FD\" === t || \"DF\" === t ? A = \"B\" : \"f\" !== t && \"f*\" !== t && \"B\" !== t && \"B*\" !== t || (A = t), A;\n };\n f.__private__.line = f.line = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw new Error(\"Invalid arguments passed to jsPDF.line\");\n return this.lines([[e - t, r - A]], t, A);\n }, f.__private__.lines = f.lines = function (t, A, e, r, n, i) {\n var o, s, a, c, u, l, h, f, d, p, B, g;\n if (\"number\" == typeof t && (g = e, e = A, A = t, t = g), r = r || [1, 1], i = i || !1, isNaN(A) || isNaN(e) || !Array.isArray(t) || !Array.isArray(r) || !Pt(n) || \"boolean\" != typeof i) throw new Error(\"Invalid arguments passed to jsPDF.lines\");\n for (D(Q(Gt(A)) + \" \" + Q(Jt(e)) + \" m \"), o = r[0], s = r[1], c = t.length, p = A, B = e, a = 0; a < c; a++) 2 === (u = t[a]).length ? (p = u[0] * o + p, B = u[1] * s + B, D(Q(Gt(p)) + \" \" + Q(Jt(B)) + \" l\")) : (l = u[0] * o + p, h = u[1] * s + B, f = u[2] * o + p, d = u[3] * s + B, p = u[4] * o + p, B = u[5] * s + B, D(Q(Gt(l)) + \" \" + Q(Jt(h)) + \" \" + Q(Gt(f)) + \" \" + Q(Jt(d)) + \" \" + Q(Gt(p)) + \" \" + Q(Jt(B)) + \" c\"));\n return i && D(\" h\"), null !== n && D(Dt(n)), this;\n }, f.__private__.rect = f.rect = function (t, A, e, r, n) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || !Pt(n)) throw new Error(\"Invalid arguments passed to jsPDF.rect\");\n return D([m(Gt(t)), m(Jt(A)), m(e * _), m(-r * _), \"re\"].join(\" \")), null !== n && D(Dt(n)), this;\n }, f.__private__.triangle = f.triangle = function (t, A, e, r, n, i, o) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i) || !Pt(o)) throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\n return this.lines([[e - t, r - A], [n - e, i - r], [t - n, A - i]], t, A, [1, 1], o, !0), this;\n }, f.__private__.roundedRect = f.roundedRect = function (t, A, e, r, n, i, o) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i) || !Pt(o)) throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\n var s = 4 / 3 * (Math.SQRT2 - 1);\n return this.lines([[e - 2 * n, 0], [n * s, 0, n, i - i * s, n, i], [0, r - 2 * i], [0, i * s, -n * s, i, -n, i], [2 * n - e, 0], [-n * s, 0, -n, -i * s, -n, -i], [0, 2 * i - r], [0, -i * s, n * s, -i, n, -i]], t + n, A, [1, 1], o), this;\n }, f.__private__.ellipse = f.ellipse = function (t, A, e, r, n) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || !Pt(n)) throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\n var i = 4 / 3 * (Math.SQRT2 - 1) * e,\n o = 4 / 3 * (Math.SQRT2 - 1) * r;\n return D([m(Gt(t + e)), m(Jt(A)), \"m\", m(Gt(t + e)), m(Jt(A - o)), m(Gt(t + i)), m(Jt(A - r)), m(Gt(t)), m(Jt(A - r)), \"c\"].join(\" \")), D([m(Gt(t - i)), m(Jt(A - r)), m(Gt(t - e)), m(Jt(A - o)), m(Gt(t - e)), m(Jt(A)), \"c\"].join(\" \")), D([m(Gt(t - e)), m(Jt(A + o)), m(Gt(t - i)), m(Jt(A + r)), m(Gt(t)), m(Jt(A + r)), \"c\"].join(\" \")), D([m(Gt(t + i)), m(Jt(A + r)), m(Gt(t + e)), m(Jt(A + o)), m(Gt(t + e)), m(Jt(A)), \"c\"].join(\" \")), null !== n && D(Dt(n)), this;\n }, f.__private__.circle = f.circle = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || !Pt(r)) throw new Error(\"Invalid arguments passed to jsPDF.circle\");\n return this.ellipse(t, A, e, e, r);\n }, f.setFont = function (t, A) {\n return I = Nt(t, A, {\n disableWarning: !1\n }), this;\n }, f.setFontStyle = f.setFontType = function (t) {\n return I = Nt(void 0, t), this;\n }, f.__private__.getFontList = f.getFontList = function () {\n var t,\n A,\n e,\n r = {};\n for (t in At) if (At.hasOwnProperty(t)) for (A in r[t] = e = [], At[t]) At[t].hasOwnProperty(A) && e.push(A);\n return r;\n }, f.addFont = function (t, A, e, r) {\n Qt.call(this, t, A, e, r = r || \"Identity-H\");\n };\n var kt,\n zt = a.lineWidth || .200025,\n jt = f.__private__.setLineWidth = f.setLineWidth = function (t) {\n return D((t * _).toFixed(2) + \" w\"), this;\n },\n qt = (f.__private__.setLineDash = s.API.setLineDash = function (t, A) {\n if (t = t || [], A = A || 0, isNaN(A) || !Array.isArray(t)) throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\n return t = t.map(function (t) {\n return (t * _).toFixed(3);\n }).join(\" \"), A = parseFloat((A * _).toFixed(3)), D(\"[\" + t + \"] \" + A + \" d\"), this;\n }, f.__private__.getLineHeight = f.getLineHeight = function () {\n return q * kt;\n }),\n Vt = (qt = f.__private__.getLineHeight = f.getLineHeight = function () {\n return q * kt;\n }, f.__private__.setLineHeightFactor = f.setLineHeightFactor = function (t) {\n return \"number\" == typeof (t = t || 1.15) && (kt = t), this;\n }),\n Xt = f.__private__.getLineHeightFactor = f.getLineHeightFactor = function () {\n return kt;\n };\n Vt(a.lineHeight);\n var Gt = f.__private__.getHorizontalCoordinate = function (t) {\n return t * _;\n },\n Jt = f.__private__.getVerticalCoordinate = function (t) {\n return rt[b].mediaBox.topRightY - rt[b].mediaBox.bottomLeftY - t * _;\n },\n Wt = f.__private__.getHorizontalCoordinateString = function (t) {\n return m(t * _);\n },\n Yt = f.__private__.getVerticalCoordinateString = function (t) {\n return m(rt[b].mediaBox.topRightY - rt[b].mediaBox.bottomLeftY - t * _);\n },\n Zt = a.strokeColor || \"0 G\",\n $t = (f.__private__.getStrokeColor = f.getDrawColor = function () {\n return ft(Zt);\n }, f.__private__.setStrokeColor = f.setDrawColor = function (t, A, e, r) {\n return Zt = dt({\n ch1: t,\n ch2: A,\n ch3: e,\n ch4: r,\n pdfColorType: \"draw\",\n precision: 2\n }), D(Zt), this;\n }, a.fillColor || \"0 g\"),\n tA = (f.__private__.getFillColor = f.getFillColor = function () {\n return ft($t);\n }, f.__private__.setFillColor = f.setFillColor = function (t, A, e, r) {\n return $t = dt({\n ch1: t,\n ch2: A,\n ch3: e,\n ch4: r,\n pdfColorType: \"fill\",\n precision: 2\n }), D($t), this;\n }, a.textColor || \"0 g\"),\n AA = f.__private__.getTextColor = f.getTextColor = function () {\n return ft(tA);\n },\n eA = (f.__private__.setTextColor = f.setTextColor = function (t, A, e, r) {\n return tA = dt({\n ch1: t,\n ch2: A,\n ch3: e,\n ch4: r,\n pdfColorType: \"text\",\n precision: 3\n }), this;\n }, a.charSpace || 0),\n rA = f.__private__.getCharSpace = f.getCharSpace = function () {\n return eA;\n },\n nA = (f.__private__.setCharSpace = f.setCharSpace = function (t) {\n if (isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\n return eA = t, this;\n }, 0);\n f.CapJoinStyles = {\n 0: 0,\n butt: 0,\n but: 0,\n miter: 0,\n 1: 1,\n round: 1,\n rounded: 1,\n circle: 1,\n 2: 2,\n projecting: 2,\n project: 2,\n square: 2,\n bevel: 2\n }, f.__private__.setLineCap = f.setLineCap = function (t) {\n var A = f.CapJoinStyles[t];\n if (void 0 === A) throw new Error(\"Line cap style of '\" + t + \"' is not recognized. See or extend .CapJoinStyles property for valid styles\");\n return D((nA = A) + \" J\"), this;\n };\n var iA,\n oA = 0;\n for (var sA in f.__private__.setLineJoin = f.setLineJoin = function (t) {\n var A = f.CapJoinStyles[t];\n if (void 0 === A) throw new Error(\"Line join style of '\" + t + \"' is not recognized. See or extend .CapJoinStyles property for valid styles\");\n return D((oA = A) + \" j\"), this;\n }, f.__private__.setMiterLimit = f.setMiterLimit = function (t) {\n if (t = t || 0, isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.setMiterLimit\");\n return iA = parseFloat(m(t * _)), D(iA + \" M\"), this;\n }, f.save = function (t, A) {\n if (t = t || \"generated.pdf\", (A = A || {}).returnPromise = A.returnPromise || !1, !1 !== A.returnPromise) return new Promise(function (A, e) {\n try {\n var n = Ht(_t(It()), t);\n \"function\" == typeof Ht.unload && r.setTimeout && setTimeout(Ht.unload, 911), A(n);\n } catch (A) {\n e(A.message);\n }\n });\n Ht(_t(It()), t), \"function\" == typeof Ht.unload && r.setTimeout && setTimeout(Ht.unload, 911);\n }, s.API) s.API.hasOwnProperty(sA) && (\"events\" === sA && s.API.events.length ? function (t, A) {\n var e, r, n;\n for (n = A.length - 1; -1 !== n; n--) e = A[n][0], r = A[n][1], t.subscribe.apply(t, [e].concat(\"function\" == typeof r ? [r] : r));\n }(it, s.API.events) : f[sA] = s.API[sA]);\n return f.internal = {\n pdfEscape: Ct,\n getStyle: Dt,\n getFont: function () {\n return tt[Nt.apply(f, arguments)];\n },\n getFontSize: V,\n getCharSpace: rA,\n getTextColor: AA,\n getLineHeight: qt,\n getLineHeightFactor: Xt,\n write: k,\n getHorizontalCoordinate: Gt,\n getVerticalCoordinate: Jt,\n getCoordinateString: Wt,\n getVerticalCoordinateString: Yt,\n collections: {},\n newObject: st,\n newAdditionalObject: ut,\n newObjectDeferred: at,\n newObjectDeferredBegin: ct,\n getFilters: pt,\n putStream: Bt,\n events: it,\n scaleFactor: _,\n pageSize: {\n getWidth: function () {\n return (rt[b].mediaBox.topRightX - rt[b].mediaBox.bottomLeftX) / _;\n },\n setWidth: function (t) {\n rt[b].mediaBox.topRightX = t * _ + rt[b].mediaBox.bottomLeftX;\n },\n getHeight: function () {\n return (rt[b].mediaBox.topRightY - rt[b].mediaBox.bottomLeftY) / _;\n },\n setHeight: function (t) {\n rt[b].mediaBox.topRightY = t * _ + rt[b].mediaBox.bottomLeftY;\n }\n },\n output: Tt,\n getNumberOfPages: Ut,\n pages: K,\n out: D,\n f2: m,\n f3: Q,\n getPageInfo: Ot,\n getPageInfoByObjId: Kt,\n getCurrentPageInfo: Mt,\n getPDFVersion: p,\n hasHotfix: Rt\n }, Object.defineProperty(f.internal.pageSize, \"width\", {\n get: function () {\n return (rt[b].mediaBox.topRightX - rt[b].mediaBox.bottomLeftX) / _;\n },\n set: function (t) {\n rt[b].mediaBox.topRightX = t * _ + rt[b].mediaBox.bottomLeftX;\n },\n enumerable: !0,\n configurable: !0\n }), Object.defineProperty(f.internal.pageSize, \"height\", {\n get: function () {\n return (rt[b].mediaBox.topRightY - rt[b].mediaBox.bottomLeftY) / _;\n },\n set: function (t) {\n rt[b].mediaBox.topRightY = t * _ + rt[b].mediaBox.bottomLeftY;\n },\n enumerable: !0,\n configurable: !0\n }), function (t) {\n for (var A = 0, e = j.length; A < e; A++) {\n var r = Qt(t[A][0], t[A][1], t[A][2], j[A][3], !0);\n h[r] = !0;\n var n = t[A][0].split(\"-\");\n mt(r, n[0], n[1] || \"\");\n }\n it.publish(\"addFonts\", {\n fonts: tt,\n dictionary: At\n });\n }(j), I = \"F1\", vt(e, t), it.publish(\"initialized\"), f;\n }\n return s.API = {\n events: []\n }, s.version = \"1.5.3\", void 0 !== (i = function () {\n return s;\n }.call(A, e, A, t)) && (t.exports = i), s;\n }(\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")());\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 (function (t, A) {\n var e,\n r = 1,\n i = function (t) {\n return t.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\(/g, \"\\\\(\").replace(/\\)/g, \"\\\\)\");\n },\n o = function (t) {\n return t.replace(/\\\\\\\\/g, \"\\\\\").replace(/\\\\\\(/g, \"(\").replace(/\\\\\\)/g, \")\");\n },\n s = function (t) {\n if (isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.f2\");\n return t.toFixed(2);\n },\n a = function (t) {\n if (isNaN(t)) throw new Error(\"Invalid argument passed to jsPDF.f2\");\n return t.toFixed(5);\n };\n t.__acroform__ = {};\n var c = function (t, A) {\n t.prototype = Object.create(A.prototype), t.prototype.constructor = t;\n },\n u = function (t) {\n return t * r;\n },\n l = function (t) {\n return t / r;\n },\n h = function (t) {\n var A = new _(),\n e = G.internal.getHeight(t) || 0,\n r = G.internal.getWidth(t) || 0;\n return A.BBox = [0, 0, Number(s(r)), Number(s(e))], A;\n },\n f = t.__acroform__.setBit = function (t, A) {\n if (t = t || 0, A = A || 0, isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBit\");\n return t | 1 << A;\n },\n d = t.__acroform__.clearBit = function (t, A) {\n if (t = t || 0, A = A || 0, isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\");\n return t & ~(1 << A);\n },\n p = t.__acroform__.getBit = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBit\");\n return 0 == (t & 1 << A) ? 0 : 1;\n },\n B = t.__acroform__.getBitForPdf = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\");\n return p(t, A - 1);\n },\n g = t.__acroform__.setBitForPdf = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\");\n return f(t, A - 1);\n },\n w = t.__acroform__.clearBitForPdf = function (t, A, e) {\n if (isNaN(t) || isNaN(A)) throw new Error(\"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\");\n return d(t, A - 1);\n },\n m = t.__acroform__.calculateCoordinates = function (t) {\n var A = this.internal.getHorizontalCoordinate,\n e = this.internal.getVerticalCoordinate,\n r = t[0],\n n = t[1],\n i = t[2],\n o = t[3],\n a = {};\n return a.lowerLeft_X = A(r) || 0, a.lowerLeft_Y = e(n + o) || 0, a.upperRight_X = A(r + i) || 0, a.upperRight_Y = e(n) || 0, [Number(s(a.lowerLeft_X)), Number(s(a.lowerLeft_Y)), Number(s(a.upperRight_X)), Number(s(a.upperRight_Y))];\n },\n Q = function (t) {\n if (t.appearanceStreamContent) return t.appearanceStreamContent;\n if (t.V || t.DV) {\n var A = [],\n r = t.V || t.DV,\n n = C(t, r),\n i = e.internal.getFont(t.fontName, t.fontStyle).id;\n A.push(\"/Tx BMC\"), A.push(\"q\"), A.push(\"BT\"), A.push(e.__private__.encodeColorString(t.color)), A.push(\"/\" + i + \" \" + s(n.fontSize) + \" Tf\"), A.push(\"1 0 0 1 0 0 Tm\"), A.push(n.text), A.push(\"ET\"), A.push(\"Q\"), A.push(\"EMC\");\n var o = new h(t);\n return o.stream = A.join(\"\\n\"), o;\n }\n },\n C = function (t, A) {\n var r = t.maxFontSize || 12,\n n = (t.fontName, {\n text: \"\",\n fontSize: \"\"\n }),\n o = (A = \")\" == (A = \"(\" == A.substr(0, 1) ? A.substr(1) : A).substr(A.length - 1) ? A.substr(0, A.length - 1) : A).split(\" \"),\n a = (e.__private__.encodeColorString(t.color), r),\n c = G.internal.getHeight(t) || 0;\n c = c < 0 ? -c : c;\n var u = G.internal.getWidth(t) || 0;\n u = u < 0 ? -u : u;\n var l = function (A, e, r) {\n if (A + 1 < o.length) {\n var n = e + \" \" + o[A + 1];\n return y(n, t, r).width <= u - 4;\n }\n return !1;\n };\n a++;\n t: for (;;) {\n A = \"\";\n var h = y(\"3\", t, --a).height,\n f = t.multiline ? c - a : (c - h) / 2,\n d = -2,\n p = f += 2,\n B = 0,\n g = 0,\n w = 0;\n if (a <= 0) {\n A = \"(...) Tj\\n\", A += \"% Width of Text: \" + y(A, t, a = 12).width + \", FieldWidth:\" + u + \"\\n\";\n break;\n }\n w = y(o[0] + \" \", t, a).width;\n var m = \"\",\n Q = 0;\n for (var C in o) if (o.hasOwnProperty(C)) {\n m = \" \" == (m += o[C] + \" \").substr(m.length - 1) ? m.substr(0, m.length - 1) : m;\n var v = parseInt(C);\n w = y(m + \" \", t, a).width;\n var F = l(v, m, a),\n U = C >= o.length - 1;\n if (F && !U) {\n m += \" \";\n continue;\n }\n if (F || U) {\n if (U) g = v;else if (t.multiline && c < (h + 2) * (Q + 2) + 2) continue t;\n } else {\n if (!t.multiline) continue t;\n if (c < (h + 2) * (Q + 2) + 2) continue t;\n g = v;\n }\n for (var N = \"\", E = B; E <= g; E++) N += o[E] + \" \";\n switch (N = \" \" == N.substr(N.length - 1) ? N.substr(0, N.length - 1) : N, w = y(N, t, a).width, t.textAlign) {\n case \"right\":\n d = u - w - 2;\n break;\n case \"center\":\n d = (u - w) / 2;\n break;\n case \"left\":\n default:\n d = 2;\n }\n A += s(d) + \" \" + s(p) + \" Td\\n\", A += \"(\" + i(N) + \") Tj\\n\", A += -s(d) + \" 0 Td\\n\", p = -(a + 2), w = 0, B = g + 1, Q++, m = \"\";\n }\n break;\n }\n return n.text = A, n.fontSize = a, n;\n },\n y = function (t, A, r) {\n var n = e.internal.getFont(A.fontName, A.fontStyle),\n i = e.getStringUnitWidth(t, {\n font: n,\n fontSize: parseFloat(r),\n charSpace: 0\n }) * parseFloat(r);\n return {\n height: e.getStringUnitWidth(\"3\", {\n font: n,\n fontSize: parseFloat(r),\n charSpace: 0\n }) * parseFloat(r) * 1.5,\n width: i\n };\n },\n v = {\n fields: [],\n xForms: [],\n acroFormDictionaryRoot: null,\n printedOut: !1,\n internal: null,\n isInitialized: !1\n },\n F = function () {\n e.internal.acroformPlugin.acroFormDictionaryRoot.objId = void 0;\n var t = e.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var A in t) if (t.hasOwnProperty(A)) {\n var r = t[A];\n r.objId = void 0, r.hasAnnotation && U.call(e, r);\n }\n },\n U = function (t) {\n var A = {\n type: \"reference\",\n object: t\n };\n void 0 === e.internal.getPageInfo(t.page).pageContext.annotations.find(function (t) {\n return t.type === A.type && t.object === A.object;\n }) && e.internal.getPageInfo(t.page).pageContext.annotations.push(A);\n },\n N = function () {\n if (void 0 === e.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error(\"putCatalogCallback: Root missing.\");\n e.internal.write(\"/AcroForm \" + e.internal.acroformPlugin.acroFormDictionaryRoot.objId + \" 0 R\");\n },\n E = function () {\n e.internal.events.unsubscribe(e.internal.acroformPlugin.acroFormDictionaryRoot._eventID), delete e.internal.acroformPlugin.acroFormDictionaryRoot._eventID, e.internal.acroformPlugin.printedOut = !0;\n },\n b = function (t) {\n var A = !t;\n for (var r in t || (e.internal.newObjectDeferredBegin(e.internal.acroformPlugin.acroFormDictionaryRoot.objId, !0), e.internal.acroformPlugin.acroFormDictionaryRoot.putStream()), t = t || e.internal.acroformPlugin.acroFormDictionaryRoot.Kids) if (t.hasOwnProperty(r)) {\n var i = t[r],\n o = [],\n s = i.Rect;\n if (i.Rect && (i.Rect = m.call(this, i.Rect)), e.internal.newObjectDeferredBegin(i.objId, !0), i.DA = G.createDefaultAppearanceStream(i), \"object\" === n(i) && \"function\" == typeof i.getKeyValueListForStream && (o = i.getKeyValueListForStream()), i.Rect = s, i.hasAppearanceStream && !i.appearanceStreamContent) {\n var a = Q.call(this, i);\n o.push({\n key: \"AP\",\n value: \"<</N \" + a + \">>\"\n }), e.internal.acroformPlugin.xForms.push(a);\n }\n if (i.appearanceStreamContent) {\n var c = \"\";\n for (var u in i.appearanceStreamContent) if (i.appearanceStreamContent.hasOwnProperty(u)) {\n var l = i.appearanceStreamContent[u];\n if (c += \"/\" + u + \" \", c += \"<<\", 1 <= Object.keys(l).length || Array.isArray(l)) for (var r in l) {\n var h;\n l.hasOwnProperty(r) && (\"function\" == typeof (h = l[r]) && (h = h.call(this, i)), c += \"/\" + r + \" \" + h + \" \", 0 <= e.internal.acroformPlugin.xForms.indexOf(h) || e.internal.acroformPlugin.xForms.push(h));\n } else \"function\" == typeof (h = l) && (h = h.call(this, i)), c += \"/\" + r + \" \" + h, 0 <= e.internal.acroformPlugin.xForms.indexOf(h) || e.internal.acroformPlugin.xForms.push(h);\n c += \">>\";\n }\n o.push({\n key: \"AP\",\n value: \"<<\\n\" + c + \">>\"\n });\n }\n e.internal.putStream({\n additionalKeyValues: o\n }), e.internal.out(\"endobj\");\n }\n A && L.call(this, e.internal.acroformPlugin.xForms);\n },\n L = function (t) {\n for (var A in t) if (t.hasOwnProperty(A)) {\n var r = A,\n i = t[A];\n e.internal.newObjectDeferredBegin(i && i.objId, !0), \"object\" === n(i) && \"function\" == typeof i.putStream && i.putStream(), delete t[r];\n }\n },\n H = function () {\n if (void 0 !== this.internal && (void 0 === this.internal.acroformPlugin || !1 === this.internal.acroformPlugin.isInitialized)) {\n if (e = this, R.FieldNum = 0, this.internal.acroformPlugin = JSON.parse(JSON.stringify(v)), this.internal.acroformPlugin.acroFormDictionaryRoot) throw new Error(\"Exception while creating AcroformDictionary\");\n r = e.internal.scaleFactor, e.internal.acroformPlugin.acroFormDictionaryRoot = new T(), e.internal.acroformPlugin.acroFormDictionaryRoot._eventID = e.internal.events.subscribe(\"postPutResources\", E), e.internal.events.subscribe(\"buildDocument\", F), e.internal.events.subscribe(\"putCatalog\", N), e.internal.events.subscribe(\"postPutPages\", b), e.internal.acroformPlugin.isInitialized = !0;\n }\n },\n x = t.__acroform__.arrayToPdfArray = function (t) {\n if (Array.isArray(t)) {\n for (var A = \"[\", e = 0; e < t.length; e++) switch (0 !== e && (A += \" \"), n(t[e])) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n A += t[e].toString();\n break;\n case \"string\":\n \"/\" !== t[e].substr(0, 1) ? A += \"(\" + i(t[e].toString()) + \")\" : A += t[e].toString();\n }\n return A + \"]\";\n }\n throw new Error(\"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\");\n },\n S = function (t) {\n return (t = t || \"\").toString(), \"(\" + i(t) + \")\";\n },\n I = function () {\n var t;\n Object.defineProperty(this, \"objId\", {\n configurable: !0,\n get: function () {\n if (t || (t = e.internal.newObjectDeferred()), !t) throw new Error(\"AcroFormPDFObject: Couldn't create Object ID\");\n return t;\n },\n set: function (A) {\n t = A;\n }\n });\n };\n I.prototype.toString = function () {\n return this.objId + \" 0 R\";\n }, I.prototype.putStream = function () {\n var t = this.getKeyValueListForStream();\n e.internal.putStream({\n data: this.stream,\n additionalKeyValues: t\n }), e.internal.out(\"endobj\");\n }, I.prototype.getKeyValueListForStream = function () {\n return function (t) {\n var A = [],\n e = Object.getOwnPropertyNames(t).filter(function (t) {\n return \"content\" != t && \"appearanceStreamContent\" != t && \"_\" != t.substring(0, 1);\n });\n for (var r in e) if (!1 === Object.getOwnPropertyDescriptor(t, e[r]).configurable) {\n var n = e[r],\n i = t[n];\n i && (Array.isArray(i) ? A.push({\n key: n,\n value: x(i)\n }) : i instanceof I ? A.push({\n key: n,\n value: i.objId + \" 0 R\"\n }) : \"function\" != typeof i && A.push({\n key: n,\n value: i\n }));\n }\n return A;\n }(this);\n };\n var _ = function () {\n I.call(this), Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: !1,\n writeable: !0\n }), Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: !1,\n writeable: !0\n }), Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: !1,\n writeable: !0\n });\n var t,\n A = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: !1,\n writeable: !0,\n get: function () {\n return A;\n },\n set: function (t) {\n A = t;\n }\n }), Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: !1,\n writeable: !0\n }), Object.defineProperty(this, \"stream\", {\n enumerable: !1,\n configurable: !0,\n set: function (A) {\n t = A.trim();\n },\n get: function () {\n return t || null;\n }\n });\n };\n c(_, I);\n var T = function () {\n I.call(this);\n var t,\n A = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return 0 < A.length ? A : void 0;\n }\n }), Object.defineProperty(this, \"Fields\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return A;\n }\n }), Object.defineProperty(this, \"DA\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n if (t) return \"(\" + t + \")\";\n },\n set: function (A) {\n t = A;\n }\n });\n };\n c(T, I);\n var R = function t() {\n I.call(this);\n var A = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return A;\n },\n set: function (t) {\n if (isNaN(t)) throw new Error('Invalid value \"' + t + '\" for attribute F supplied.');\n A = t;\n }\n }), Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(A, 3));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.F = g(A, 3) : this.F = w(A, 3);\n }\n });\n var e = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return e;\n },\n set: function (t) {\n if (isNaN(t)) throw new Error('Invalid value \"' + t + '\" for attribute Ff supplied.');\n e = t;\n }\n });\n var r = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n if (0 !== r.length) return r;\n },\n set: function (t) {\n r = void 0 !== t ? t : [];\n }\n }), Object.defineProperty(this, \"x\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return !r || isNaN(r[0]) ? 0 : l(r[0]);\n },\n set: function (t) {\n r[0] = u(t);\n }\n }), Object.defineProperty(this, \"y\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return !r || isNaN(r[1]) ? 0 : l(r[1]);\n },\n set: function (t) {\n r[1] = u(t);\n }\n }), Object.defineProperty(this, \"width\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return !r || isNaN(r[2]) ? 0 : l(r[2]);\n },\n set: function (t) {\n r[2] = u(t);\n }\n }), Object.defineProperty(this, \"height\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return !r || isNaN(r[3]) ? 0 : l(r[3]);\n },\n set: function (t) {\n r[3] = u(t);\n }\n });\n var n = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return n;\n },\n set: function (t) {\n switch (t) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n n = t;\n break;\n default:\n throw new Error('Invalid value \"' + t + '\" for attribute FT supplied.');\n }\n }\n });\n var s = null;\n Object.defineProperty(this, \"T\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n if (!s || s.length < 1) {\n if (this instanceof j) return;\n s = \"FieldObject\" + t.FieldNum++;\n }\n return \"(\" + i(s) + \")\";\n },\n set: function (t) {\n s = t.toString();\n }\n }), Object.defineProperty(this, \"fieldName\", {\n configurable: !0,\n enumerable: !0,\n get: function () {\n return s;\n },\n set: function (t) {\n s = t;\n }\n });\n var a = \"helvetica\";\n Object.defineProperty(this, \"fontName\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return a;\n },\n set: function (t) {\n a = t;\n }\n });\n var c = \"normal\";\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return c;\n },\n set: function (t) {\n c = t;\n }\n });\n var h = 0;\n Object.defineProperty(this, \"fontSize\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return l(h);\n },\n set: function (t) {\n h = u(t);\n }\n });\n var f = 50;\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return l(f);\n },\n set: function (t) {\n f = u(t);\n }\n });\n var d = \"black\";\n Object.defineProperty(this, \"color\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return d;\n },\n set: function (t) {\n d = t;\n }\n });\n var p = \"/F1 0 Tf 0 g\";\n Object.defineProperty(this, \"DA\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n if (!(!p || this instanceof j || this instanceof V)) return S(p);\n },\n set: function (t) {\n t = t.toString(), p = t;\n }\n });\n var m = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n if (m) return this instanceof D == 0 ? S(m) : m;\n },\n set: function (t) {\n t = t.toString(), m = this instanceof D == 0 ? \"(\" === t.substr(0, 1) ? o(t.substr(1, t.length - 2)) : o(t) : t;\n }\n }), Object.defineProperty(this, \"defaultValue\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return this instanceof D == 1 ? o(m.substr(1, m.length - 1)) : m;\n },\n set: function (t) {\n t = t.toString(), m = this instanceof D == 1 ? \"/\" + t : t;\n }\n });\n var Q = null;\n Object.defineProperty(this, \"V\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n if (Q) return this instanceof D == 0 ? S(Q) : Q;\n },\n set: function (t) {\n t = t.toString(), Q = this instanceof D == 0 ? \"(\" === t.substr(0, 1) ? o(t.substr(1, t.length - 2)) : o(t) : t;\n }\n }), Object.defineProperty(this, \"value\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return this instanceof D == 1 ? o(Q.substr(1, Q.length - 1)) : Q;\n },\n set: function (t) {\n t = t.toString(), Q = this instanceof D == 1 ? \"/\" + t : t;\n }\n }), Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return this.Rect;\n }\n }), Object.defineProperty(this, \"Type\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n }), Object.defineProperty(this, \"Subtype\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n var C,\n y = !1;\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: !0,\n configurable: !0,\n writeable: !0,\n get: function () {\n return y;\n },\n set: function (t) {\n t = Boolean(t), y = t;\n }\n }), Object.defineProperty(this, \"page\", {\n enumerable: !0,\n configurable: !0,\n writeable: !0,\n get: function () {\n if (C) return C;\n },\n set: function (t) {\n C = t;\n }\n }), Object.defineProperty(this, \"readOnly\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 1));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 1) : this.Ff = w(this.Ff, 1);\n }\n }), Object.defineProperty(this, \"required\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 2));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 2) : this.Ff = w(this.Ff, 2);\n }\n }), Object.defineProperty(this, \"noExport\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 3));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 3) : this.Ff = w(this.Ff, 3);\n }\n });\n var v = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n if (null !== v) return v;\n },\n set: function (t) {\n if (-1 === [0, 1, 2].indexOf(t)) throw new Error('Invalid value \"' + t + '\" for attribute Q supplied.');\n v = t;\n }\n }), Object.defineProperty(this, \"textAlign\", {\n get: function () {\n var t = \"left\";\n switch (v) {\n case 0:\n default:\n t = \"left\";\n break;\n case 1:\n t = \"center\";\n break;\n case 2:\n t = \"right\";\n }\n return t;\n },\n configurable: !0,\n enumerable: !0,\n set: function (t) {\n switch (t) {\n case \"right\":\n case 2:\n v = 2;\n break;\n case \"center\":\n case 1:\n v = 1;\n break;\n case \"left\":\n case 0:\n default:\n v = 0;\n }\n }\n });\n };\n c(R, I);\n var O = function () {\n R.call(this), this.FT = \"/Ch\", this.V = \"()\", this.fontName = \"zapfdingbats\";\n var t = 0;\n Object.defineProperty(this, \"TI\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n }), Object.defineProperty(this, \"topIndex\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n });\n var A = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return x(A);\n },\n set: function (t) {\n var e, r;\n r = [], \"string\" == typeof (e = t) && (r = function (t, A, e) {\n e || (e = 1);\n for (var r, n = []; r = A.exec(t);) n.push(r[e]);\n return n;\n }(e, /\\((.*?)\\)/g)), A = r;\n }\n }), this.getOptions = function () {\n return A;\n }, this.setOptions = function (t) {\n A = t, this.sort && A.sort();\n }, this.addOption = function (t) {\n t = (t = t || \"\").toString(), A.push(t), this.sort && A.sort();\n }, this.removeOption = function (t, e) {\n for (e = e || !1, t = (t = t || \"\").toString(); -1 !== A.indexOf(t) && (A.splice(A.indexOf(t), 1), !1 !== e););\n }, Object.defineProperty(this, \"combo\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 18));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 18) : this.Ff = w(this.Ff, 18);\n }\n }), Object.defineProperty(this, \"edit\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 19));\n },\n set: function (t) {\n !0 === this.combo && (!0 === Boolean(t) ? this.Ff = g(this.Ff, 19) : this.Ff = w(this.Ff, 19));\n }\n }), Object.defineProperty(this, \"sort\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 20));\n },\n set: function (t) {\n !0 === Boolean(t) ? (this.Ff = g(this.Ff, 20), A.sort()) : this.Ff = w(this.Ff, 20);\n }\n }), Object.defineProperty(this, \"multiSelect\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 22));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 22) : this.Ff = w(this.Ff, 22);\n }\n }), Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 23));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 23) : this.Ff = w(this.Ff, 23);\n }\n }), Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 27));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 27) : this.Ff = w(this.Ff, 27);\n }\n }), this.hasAppearanceStream = !1;\n };\n c(O, R);\n var K = function () {\n O.call(this), this.fontName = \"helvetica\", this.combo = !1;\n };\n c(K, O);\n var M = function () {\n K.call(this), this.combo = !0;\n };\n c(M, K);\n var P = function () {\n M.call(this), this.edit = !0;\n };\n c(P, M);\n var D = function () {\n R.call(this), this.FT = \"/Btn\", Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 15));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 15) : this.Ff = w(this.Ff, 15);\n }\n }), Object.defineProperty(this, \"radio\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 16));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 16) : this.Ff = w(this.Ff, 16);\n }\n }), Object.defineProperty(this, \"pushButton\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 17));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 17) : this.Ff = w(this.Ff, 17);\n }\n }), Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 26));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 26) : this.Ff = w(this.Ff, 26);\n }\n });\n var t,\n A = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n if (0 !== Object.keys(A).length) {\n var t,\n e = [];\n for (t in e.push(\"<<\"), A) e.push(\"/\" + t + \" (\" + A[t] + \")\");\n return e.push(\">>\"), e.join(\"\\n\");\n }\n },\n set: function (t) {\n \"object\" === n(t) && (A = t);\n }\n }), Object.defineProperty(this, \"caption\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return A.CA || \"\";\n },\n set: function (t) {\n \"string\" == typeof t && (A.CA = t);\n }\n }), Object.defineProperty(this, \"AS\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n }), Object.defineProperty(this, \"appearanceState\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return t.substr(1, t.length - 1);\n },\n set: function (A) {\n t = \"/\" + A;\n }\n });\n };\n c(D, R);\n var k = function () {\n D.call(this), this.pushButton = !0;\n };\n c(k, D);\n var z = function () {\n D.call(this), this.radio = !0, this.pushButton = !1;\n var t = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return t;\n },\n set: function (A) {\n t = void 0 !== A ? A : [];\n }\n });\n };\n c(z, D);\n var j = function () {\n var t, A;\n R.call(this), Object.defineProperty(this, \"Parent\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n }), Object.defineProperty(this, \"optionName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return A;\n },\n set: function (t) {\n A = t;\n }\n });\n var e,\n r = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n var t,\n A = [];\n for (t in A.push(\"<<\"), r) A.push(\"/\" + t + \" (\" + r[t] + \")\");\n return A.push(\">>\"), A.join(\"\\n\");\n },\n set: function (t) {\n \"object\" === n(t) && (r = t);\n }\n }), Object.defineProperty(this, \"caption\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return r.CA || \"\";\n },\n set: function (t) {\n \"string\" == typeof t && (r.CA = t);\n }\n }), Object.defineProperty(this, \"AS\", {\n enumerable: !1,\n configurable: !1,\n get: function () {\n return e;\n },\n set: function (t) {\n e = t;\n }\n }), Object.defineProperty(this, \"appearanceState\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return e.substr(1, e.length - 1);\n },\n set: function (t) {\n e = \"/\" + t;\n }\n }), this.optionName = name, this.caption = \"l\", this.appearanceState = \"Off\", this._AppearanceType = G.RadioButton.Circle, this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(name);\n };\n c(j, R), z.prototype.setAppearance = function (t) {\n if (!(\"createAppearanceStream\" in t) || !(\"getCA\" in t)) throw new Error(\"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\");\n for (var A in this.Kids) if (this.Kids.hasOwnProperty(A)) {\n var e = this.Kids[A];\n e.appearanceStreamContent = t.createAppearanceStream(e.optionName), e.caption = t.getCA();\n }\n }, z.prototype.createOption = function (t) {\n this.Kids.length;\n var A = new j();\n return A.Parent = this, A.optionName = t, this.Kids.push(A), J.call(this, A), A;\n };\n var q = function () {\n D.call(this), this.fontName = \"zapfdingbats\", this.caption = \"3\", this.appearanceState = \"On\", this.value = \"On\", this.textAlign = \"center\", this.appearanceStreamContent = G.CheckBox.createAppearanceStream();\n };\n c(q, D);\n var V = function () {\n R.call(this), this.FT = \"/Tx\", Object.defineProperty(this, \"multiline\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 13));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 13) : this.Ff = w(this.Ff, 13);\n }\n }), Object.defineProperty(this, \"fileSelect\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 21));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 21) : this.Ff = w(this.Ff, 21);\n }\n }), Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 23));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 23) : this.Ff = w(this.Ff, 23);\n }\n }), Object.defineProperty(this, \"doNotScroll\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 24));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 24) : this.Ff = w(this.Ff, 24);\n }\n }), Object.defineProperty(this, \"comb\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 25));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 25) : this.Ff = w(this.Ff, 25);\n }\n }), Object.defineProperty(this, \"richText\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 26));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 26) : this.Ff = w(this.Ff, 26);\n }\n });\n var t = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: !0,\n configurable: !1,\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n }), Object.defineProperty(this, \"maxLength\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return t;\n },\n set: function (A) {\n Number.isInteger(A) && (t = A);\n }\n }), Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return this.V || this.DV;\n }\n });\n };\n c(V, R);\n var X = function () {\n V.call(this), Object.defineProperty(this, \"password\", {\n enumerable: !0,\n configurable: !0,\n get: function () {\n return Boolean(B(this.Ff, 14));\n },\n set: function (t) {\n !0 === Boolean(t) ? this.Ff = g(this.Ff, 14) : this.Ff = w(this.Ff, 14);\n }\n }), this.password = !0;\n };\n c(X, V);\n var G = {\n CheckBox: {\n createAppearanceStream: function () {\n return {\n N: {\n On: G.CheckBox.YesNormal\n },\n D: {\n On: G.CheckBox.YesPushDown,\n Off: G.CheckBox.OffPushDown\n }\n };\n },\n YesPushDown: function (t) {\n var A = h(t),\n r = [],\n n = e.internal.getFont(t.fontName, t.fontStyle).id,\n i = e.__private__.encodeColorString(t.color),\n o = C(t, t.caption);\n return r.push(\"0.749023 g\"), r.push(\"0 0 \" + s(G.internal.getWidth(t)) + \" \" + s(G.internal.getHeight(t)) + \" re\"), r.push(\"f\"), r.push(\"BMC\"), r.push(\"q\"), r.push(\"0 0 1 rg\"), r.push(\"/\" + n + \" \" + s(o.fontSize) + \" Tf \" + i), r.push(\"BT\"), r.push(o.text), r.push(\"ET\"), r.push(\"Q\"), r.push(\"EMC\"), A.stream = r.join(\"\\n\"), A;\n },\n YesNormal: function (t) {\n var A = h(t),\n r = e.internal.getFont(t.fontName, t.fontStyle).id,\n n = e.__private__.encodeColorString(t.color),\n i = [],\n o = G.internal.getHeight(t),\n a = G.internal.getWidth(t),\n c = C(t, t.caption);\n return i.push(\"1 g\"), i.push(\"0 0 \" + s(a) + \" \" + s(o) + \" re\"), i.push(\"f\"), i.push(\"q\"), i.push(\"0 0 1 rg\"), i.push(\"0 0 \" + s(a - 1) + \" \" + s(o - 1) + \" re\"), i.push(\"W\"), i.push(\"n\"), i.push(\"0 g\"), i.push(\"BT\"), i.push(\"/\" + r + \" \" + s(c.fontSize) + \" Tf \" + n), i.push(c.text), i.push(\"ET\"), i.push(\"Q\"), A.stream = i.join(\"\\n\"), A;\n },\n OffPushDown: function (t) {\n var A = h(t),\n e = [];\n return e.push(\"0.749023 g\"), e.push(\"0 0 \" + s(G.internal.getWidth(t)) + \" \" + s(G.internal.getHeight(t)) + \" re\"), e.push(\"f\"), A.stream = e.join(\"\\n\"), A;\n }\n },\n RadioButton: {\n Circle: {\n createAppearanceStream: function (t) {\n var A = {\n D: {\n Off: G.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n return A.N[t] = G.RadioButton.Circle.YesNormal, A.D[t] = G.RadioButton.Circle.YesPushDown, A;\n },\n getCA: function () {\n return \"l\";\n },\n YesNormal: function (t) {\n var A = h(t),\n e = [],\n r = G.internal.getWidth(t) <= G.internal.getHeight(t) ? G.internal.getWidth(t) / 4 : G.internal.getHeight(t) / 4;\n r = Number((.9 * r).toFixed(5));\n var n = G.internal.Bezier_C,\n i = Number((r * n).toFixed(5));\n return e.push(\"q\"), e.push(\"1 0 0 1 \" + a(G.internal.getWidth(t) / 2) + \" \" + a(G.internal.getHeight(t) / 2) + \" cm\"), e.push(r + \" 0 m\"), e.push(r + \" \" + i + \" \" + i + \" \" + r + \" 0 \" + r + \" c\"), e.push(\"-\" + i + \" \" + r + \" -\" + r + \" \" + i + \" -\" + r + \" 0 c\"), e.push(\"-\" + r + \" -\" + i + \" -\" + i + \" -\" + r + \" 0 -\" + r + \" c\"), e.push(i + \" -\" + r + \" \" + r + \" -\" + i + \" \" + r + \" 0 c\"), e.push(\"f\"), e.push(\"Q\"), A.stream = e.join(\"\\n\"), A;\n },\n YesPushDown: function (t) {\n var A = h(t),\n e = [],\n r = G.internal.getWidth(t) <= G.internal.getHeight(t) ? G.internal.getWidth(t) / 4 : G.internal.getHeight(t) / 4,\n n = (r = Number((.9 * r).toFixed(5)), Number((2 * r).toFixed(5))),\n i = Number((n * G.internal.Bezier_C).toFixed(5)),\n o = Number((r * G.internal.Bezier_C).toFixed(5));\n return e.push(\"0.749023 g\"), e.push(\"q\"), e.push(\"1 0 0 1 \" + a(G.internal.getWidth(t) / 2) + \" \" + a(G.internal.getHeight(t) / 2) + \" cm\"), e.push(n + \" 0 m\"), e.push(n + \" \" + i + \" \" + i + \" \" + n + \" 0 \" + n + \" c\"), e.push(\"-\" + i + \" \" + n + \" -\" + n + \" \" + i + \" -\" + n + \" 0 c\"), e.push(\"-\" + n + \" -\" + i + \" -\" + i + \" -\" + n + \" 0 -\" + n + \" c\"), e.push(i + \" -\" + n + \" \" + n + \" -\" + i + \" \" + n + \" 0 c\"), e.push(\"f\"), e.push(\"Q\"), e.push(\"0 g\"), e.push(\"q\"), e.push(\"1 0 0 1 \" + a(G.internal.getWidth(t) / 2) + \" \" + a(G.internal.getHeight(t) / 2) + \" cm\"), e.push(r + \" 0 m\"), e.push(r + \" \" + o + \" \" + o + \" \" + r + \" 0 \" + r + \" c\"), e.push(\"-\" + o + \" \" + r + \" -\" + r + \" \" + o + \" -\" + r + \" 0 c\"), e.push(\"-\" + r + \" -\" + o + \" -\" + o + \" -\" + r + \" 0 -\" + r + \" c\"), e.push(o + \" -\" + r + \" \" + r + \" -\" + o + \" \" + r + \" 0 c\"), e.push(\"f\"), e.push(\"Q\"), A.stream = e.join(\"\\n\"), A;\n },\n OffPushDown: function (t) {\n var A = h(t),\n e = [],\n r = G.internal.getWidth(t) <= G.internal.getHeight(t) ? G.internal.getWidth(t) / 4 : G.internal.getHeight(t) / 4,\n n = (r = Number((.9 * r).toFixed(5)), Number((2 * r).toFixed(5))),\n i = Number((n * G.internal.Bezier_C).toFixed(5));\n return e.push(\"0.749023 g\"), e.push(\"q\"), e.push(\"1 0 0 1 \" + a(G.internal.getWidth(t) / 2) + \" \" + a(G.internal.getHeight(t) / 2) + \" cm\"), e.push(n + \" 0 m\"), e.push(n + \" \" + i + \" \" + i + \" \" + n + \" 0 \" + n + \" c\"), e.push(\"-\" + i + \" \" + n + \" -\" + n + \" \" + i + \" -\" + n + \" 0 c\"), e.push(\"-\" + n + \" -\" + i + \" -\" + i + \" -\" + n + \" 0 -\" + n + \" c\"), e.push(i + \" -\" + n + \" \" + n + \" -\" + i + \" \" + n + \" 0 c\"), e.push(\"f\"), e.push(\"Q\"), A.stream = e.join(\"\\n\"), A;\n }\n },\n Cross: {\n createAppearanceStream: function (t) {\n var A = {\n D: {\n Off: G.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n return A.N[t] = G.RadioButton.Cross.YesNormal, A.D[t] = G.RadioButton.Cross.YesPushDown, A;\n },\n getCA: function () {\n return \"8\";\n },\n YesNormal: function (t) {\n var A = h(t),\n e = [],\n r = G.internal.calculateCross(t);\n return e.push(\"q\"), e.push(\"1 1 \" + s(G.internal.getWidth(t) - 2) + \" \" + s(G.internal.getHeight(t) - 2) + \" re\"), e.push(\"W\"), e.push(\"n\"), e.push(s(r.x1.x) + \" \" + s(r.x1.y) + \" m\"), e.push(s(r.x2.x) + \" \" + s(r.x2.y) + \" l\"), e.push(s(r.x4.x) + \" \" + s(r.x4.y) + \" m\"), e.push(s(r.x3.x) + \" \" + s(r.x3.y) + \" l\"), e.push(\"s\"), e.push(\"Q\"), A.stream = e.join(\"\\n\"), A;\n },\n YesPushDown: function (t) {\n var A = h(t),\n e = G.internal.calculateCross(t),\n r = [];\n return r.push(\"0.749023 g\"), r.push(\"0 0 \" + s(G.internal.getWidth(t)) + \" \" + s(G.internal.getHeight(t)) + \" re\"), r.push(\"f\"), r.push(\"q\"), r.push(\"1 1 \" + s(G.internal.getWidth(t) - 2) + \" \" + s(G.internal.getHeight(t) - 2) + \" re\"), r.push(\"W\"), r.push(\"n\"), r.push(s(e.x1.x) + \" \" + s(e.x1.y) + \" m\"), r.push(s(e.x2.x) + \" \" + s(e.x2.y) + \" l\"), r.push(s(e.x4.x) + \" \" + s(e.x4.y) + \" m\"), r.push(s(e.x3.x) + \" \" + s(e.x3.y) + \" l\"), r.push(\"s\"), r.push(\"Q\"), A.stream = r.join(\"\\n\"), A;\n },\n OffPushDown: function (t) {\n var A = h(t),\n e = [];\n return e.push(\"0.749023 g\"), e.push(\"0 0 \" + s(G.internal.getWidth(t)) + \" \" + s(G.internal.getHeight(t)) + \" re\"), e.push(\"f\"), A.stream = e.join(\"\\n\"), A;\n }\n }\n },\n createDefaultAppearanceStream: function (t) {\n var A = e.internal.getFont(t.fontName, t.fontStyle).id,\n r = e.__private__.encodeColorString(t.color);\n return \"/\" + A + \" \" + t.fontSize + \" Tf \" + r;\n }\n };\n G.internal = {\n Bezier_C: .551915024494,\n calculateCross: function (t) {\n var A = G.internal.getWidth(t),\n e = G.internal.getHeight(t),\n r = Math.min(A, e);\n return {\n x1: {\n x: (A - r) / 2,\n y: (e - r) / 2 + r\n },\n x2: {\n x: (A - r) / 2 + r,\n y: (e - r) / 2\n },\n x3: {\n x: (A - r) / 2,\n y: (e - r) / 2\n },\n x4: {\n x: (A - r) / 2 + r,\n y: (e - r) / 2 + r\n }\n };\n }\n }, G.internal.getWidth = function (t) {\n var A = 0;\n return \"object\" === n(t) && (A = u(t.Rect[2])), A;\n }, G.internal.getHeight = function (t) {\n var A = 0;\n return \"object\" === n(t) && (A = u(t.Rect[3])), A;\n };\n var J = t.addField = function (t) {\n if (H.call(this), !(t instanceof R)) throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n return function (t) {\n e.internal.acroformPlugin.printedOut && (e.internal.acroformPlugin.printedOut = !1, e.internal.acroformPlugin.acroFormDictionaryRoot = null), e.internal.acroformPlugin.acroFormDictionaryRoot || H.call(e), e.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(t);\n }.call(this, t), t.page = e.internal.getCurrentPageInfo().pageNumber, this;\n };\n t.addButton = function (t) {\n if (t instanceof D == 0) throw new Error(\"Invalid argument passed to jsPDF.addButton.\");\n return J.call(this, t);\n }, t.addTextField = function (t) {\n if (t instanceof V == 0) throw new Error(\"Invalid argument passed to jsPDF.addTextField.\");\n return J.call(this, t);\n }, t.addChoiceField = function (t) {\n if (t instanceof O == 0) throw new Error(\"Invalid argument passed to jsPDF.addChoiceField.\");\n return J.call(this, t);\n }, \"object\" == n(A) && void 0 === A.ChoiceField && void 0 === A.ListBox && void 0 === A.ComboBox && void 0 === A.EditBox && void 0 === A.Button && void 0 === A.PushButton && void 0 === A.RadioButton && void 0 === A.CheckBox && void 0 === A.TextField && void 0 === A.PasswordField ? (A.ChoiceField = O, A.ListBox = K, A.ComboBox = M, A.EditBox = P, A.Button = D, A.PushButton = k, A.RadioButton = z, A.CheckBox = q, A.TextField = V, A.PasswordField = X, A.AcroForm = {\n Appearance: G\n }) : console.warn(\"AcroForm-Classes are not populated into global-namespace, because the class-Names exist already.\"), t.AcroFormChoiceField = O, t.AcroFormListBox = K, t.AcroFormComboBox = M, t.AcroFormEditBox = P, t.AcroFormButton = D, t.AcroFormPushButton = k, t.AcroFormRadioButton = z, t.AcroFormCheckBox = q, t.AcroFormTextField = V, t.AcroFormPasswordField = X, t.AcroFormAppearance = G, t.AcroForm = {\n ChoiceField: O,\n ListBox: K,\n ComboBox: M,\n EditBox: P,\n Button: D,\n PushButton: k,\n RadioButton: z,\n CheckBox: q,\n TextField: V,\n PasswordField: X,\n Appearance: G\n };\n })((window.tmp = dt).API, \"undefined\" != typeof window && window || void 0 !== r && r),\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 * \n */\n function (t) {\n var A = \"addImage_\",\n e = {\n PNG: [[137, 80, 78, 71]],\n TIFF: [[77, 77, 0, 42], [73, 73, 42, 0]],\n JPEG: [[255, 216, 255, 224, void 0, void 0, 74, 70, 73, 70, 0], [255, 216, 255, 225, void 0, void 0, 69, 120, 105, 102, 0, 0]],\n JPEG2000: [[0, 0, 0, 12, 106, 80, 32, 32]],\n GIF87a: [[71, 73, 70, 56, 55, 97]],\n GIF89a: [[71, 73, 70, 56, 57, 97]],\n BMP: [[66, 77], [66, 65], [67, 73], [67, 80], [73, 67], [80, 84]]\n },\n r = t.getImageFileTypeByImageData = function (A, r) {\n var n, i;\n r = r || \"UNKNOWN\";\n var o,\n s,\n a,\n c = \"UNKNOWN\";\n for (a in t.isArrayBufferView(A) && (A = t.arrayBufferToBinaryString(A)), e) for (o = e[a], n = 0; n < o.length; n += 1) {\n for (s = !0, i = 0; i < o[n].length; i += 1) if (void 0 !== o[n][i] && o[n][i] !== A.charCodeAt(i)) {\n s = !1;\n break;\n }\n if (!0 === s) {\n c = a;\n break;\n }\n }\n return \"UNKNOWN\" === c && \"UNKNOWN\" !== r && (console.warn('FileType of Image not recognized. Processing image as \"' + r + '\".'), c = r), c;\n },\n i = function t(A) {\n for (var e = this.internal.newObject(), r = this.internal.write, n = this.internal.putStream, i = (0, this.internal.getFilters)(); -1 !== i.indexOf(\"FlateEncode\");) i.splice(i.indexOf(\"FlateEncode\"), 1);\n A.n = e;\n var o = [];\n if (o.push({\n key: \"Type\",\n value: \"/XObject\"\n }), o.push({\n key: \"Subtype\",\n value: \"/Image\"\n }), o.push({\n key: \"Width\",\n value: A.w\n }), o.push({\n key: \"Height\",\n value: A.h\n }), A.cs === this.color_spaces.INDEXED ? o.push({\n key: \"ColorSpace\",\n value: \"[/Indexed /DeviceRGB \" + (A.pal.length / 3 - 1) + \" \" + (\"smask\" in A ? e + 2 : e + 1) + \" 0 R]\"\n }) : (o.push({\n key: \"ColorSpace\",\n value: \"/\" + A.cs\n }), A.cs === this.color_spaces.DEVICE_CMYK && o.push({\n key: \"Decode\",\n value: \"[1 0 1 0 1 0 1 0]\"\n })), o.push({\n key: \"BitsPerComponent\",\n value: A.bpc\n }), \"dp\" in A && o.push({\n key: \"DecodeParms\",\n value: \"<<\" + A.dp + \">>\"\n }), \"trns\" in A && A.trns.constructor == Array) {\n for (var s = \"\", a = 0, c = A.trns.length; a < c; a++) s += A.trns[a] + \" \" + A.trns[a] + \" \";\n o.push({\n key: \"Mask\",\n value: \"[\" + s + \"]\"\n });\n }\n \"smask\" in A && o.push({\n key: \"SMask\",\n value: e + 1 + \" 0 R\"\n });\n var u = void 0 !== A.f ? [\"/\" + A.f] : void 0;\n if (n({\n data: A.data,\n additionalKeyValues: o,\n alreadyAppliedFilters: u\n }), r(\"endobj\"), \"smask\" in A) {\n var l = \"/Predictor \" + A.p + \" /Colors 1 /BitsPerComponent \" + A.bpc + \" /Columns \" + A.w,\n h = {\n w: A.w,\n h: A.h,\n cs: \"DeviceGray\",\n bpc: A.bpc,\n dp: l,\n data: A.smask\n };\n \"f\" in A && (h.f = A.f), t.call(this, h);\n }\n A.cs === this.color_spaces.INDEXED && (this.internal.newObject(), n({\n data: this.arrayBufferToBinaryString(new Uint8Array(A.pal))\n }), r(\"endobj\"));\n },\n o = function () {\n var t = this.internal.collections[A + \"images\"];\n for (var e in t) i.call(this, t[e]);\n },\n s = function () {\n var t,\n e = this.internal.collections[A + \"images\"],\n r = this.internal.write;\n for (var n in e) r(\"/I\" + (t = e[n]).i, t.n, \"0\", \"R\");\n },\n a = function (A) {\n return \"function\" == typeof t[\"process\" + A.toUpperCase()];\n },\n c = function (t) {\n return \"object\" === n(t) && 1 === t.nodeType;\n },\n u = function (A, e) {\n if (\"IMG\" === A.nodeName && A.hasAttribute(\"src\")) {\n var r = \"\" + A.getAttribute(\"src\");\n if (0 === r.indexOf(\"data:image/\")) return unescape(r);\n var n = t.loadFile(r);\n if (void 0 !== n) return btoa(n);\n }\n if (\"CANVAS\" === A.nodeName) {\n var i = A;\n return A.toDataURL(\"image/jpeg\", 1);\n }\n (i = document.createElement(\"canvas\")).width = A.clientWidth || A.width, i.height = A.clientHeight || A.height;\n var o = i.getContext(\"2d\");\n if (!o) throw \"addImage requires canvas to be supported by browser.\";\n return o.drawImage(A, 0, 0, i.width, i.height), i.toDataURL(\"png\" == (\"\" + e).toLowerCase() ? \"image/png\" : \"image/jpeg\");\n },\n l = function (t, A) {\n var e;\n if (A) for (var r in A) if (t === A[r].alias) {\n e = A[r];\n break;\n }\n return e;\n };\n t.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 }, t.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 }, t.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n }, t.sHashCode = function (t) {\n var A,\n e = 0;\n if (0 === (t = t || \"\").length) return e;\n for (A = 0; A < t.length; A++) e = (e << 5) - e + t.charCodeAt(A), e |= 0;\n return e;\n }, t.isString = function (t) {\n return \"string\" == typeof t;\n }, t.validateStringAsBase64 = function (t) {\n (t = t || \"\").toString().trim();\n var A = !0;\n return 0 === t.length && (A = !1), t.length % 4 != 0 && (A = !1), !1 === /^[A-Za-z0-9+\\/]+$/.test(t.substr(0, t.length - 2)) && (A = !1), !1 === /^[A-Za-z0-9\\/][A-Za-z0-9+\\/]|[A-Za-z0-9+\\/]=|==$/.test(t.substr(-2)) && (A = !1), A;\n }, t.extractInfoFromBase64DataURI = function (t) {\n return /^data:([\\w]+?\\/([\\w]+?));\\S*;*base64,(.+)$/g.exec(t);\n }, t.extractImageFromDataUrl = function (t) {\n var A = (t = t || \"\").split(\"base64,\"),\n e = null;\n if (2 === A.length) {\n var r = /^data:(\\w*\\/\\w*);*(charset=[\\w=-]*)*;*$/.exec(A[0]);\n Array.isArray(r) && (e = {\n mimeType: r[1],\n charset: r[2],\n data: A[1]\n });\n }\n return e;\n }, t.supportsArrayBuffer = function () {\n return \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof Uint8Array;\n }, t.isArrayBuffer = function (t) {\n return !!this.supportsArrayBuffer() && t instanceof ArrayBuffer;\n }, t.isArrayBufferView = function (t) {\n return !!this.supportsArrayBuffer() && \"undefined\" != typeof Uint32Array && (t instanceof Int8Array || t instanceof Uint8Array || \"undefined\" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array);\n }, t.binaryStringToUint8Array = function (t) {\n for (var A = t.length, e = new Uint8Array(A), r = 0; r < A; r++) e[r] = t.charCodeAt(r);\n return e;\n }, t.arrayBufferToBinaryString = function (t) {\n if (\"function\" == typeof atob) return atob(this.arrayBufferToBase64(t));\n }, t.arrayBufferToBase64 = function (t) {\n for (var A, e = \"\", r = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", n = new Uint8Array(t), i = n.byteLength, o = i % 3, s = i - o, a = 0; a < s; a += 3) e += r[(16515072 & (A = n[a] << 16 | n[a + 1] << 8 | n[a + 2])) >> 18] + r[(258048 & A) >> 12] + r[(4032 & A) >> 6] + r[63 & A];\n return 1 == o ? e += r[(252 & (A = n[s])) >> 2] + r[(3 & A) << 4] + \"==\" : 2 == o && (e += r[(64512 & (A = n[s] << 8 | n[s + 1])) >> 10] + r[(1008 & A) >> 4] + r[(15 & A) << 2] + \"=\"), e;\n }, t.createImageInfo = function (t, A, e, r, n, i, o, s, a, c, u, l, h) {\n var f = {\n alias: s,\n w: A,\n h: e,\n cs: r,\n bpc: n,\n i: o,\n data: t\n };\n return i && (f.f = i), a && (f.dp = a), c && (f.trns = c), u && (f.pal = u), l && (f.smask = l), h && (f.p = h), f;\n }, t.addImage = function (e, r, i, h, f, d, p, B, g) {\n var w = \"\";\n if (\"string\" != typeof r) {\n var m = d;\n d = f, f = h, h = i, i = r, r = m;\n }\n if (\"object\" === n(e) && !c(e) && \"imageData\" in e) {\n var Q = e;\n e = Q.imageData, r = Q.format || r || \"UNKNOWN\", i = Q.x || i || 0, h = Q.y || h || 0, f = Q.w || f, d = Q.h || d, p = Q.alias || p, B = Q.compression || B, g = Q.rotation || Q.angle || g;\n }\n var C = this.internal.getFilters();\n if (void 0 === B && -1 !== C.indexOf(\"FlateEncode\") && (B = \"SLOW\"), \"string\" == typeof e && (e = unescape(e)), isNaN(i) || isNaN(h)) throw console.error(\"jsPDF.addImage: Invalid coordinates\", arguments), new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n var y,\n v,\n F,\n U,\n N,\n E,\n b,\n L = function () {\n var t = this.internal.collections[A + \"images\"];\n return t || (this.internal.collections[A + \"images\"] = t = {}, this.internal.events.subscribe(\"putResources\", o), this.internal.events.subscribe(\"putXobjectDict\", s)), t;\n }.call(this);\n if (!((y = l(e, L)) || (c(e) && (e = u(e, r)), (null == (b = p) || 0 === b.length) && (p = \"string\" == typeof (E = e) ? t.sHashCode(E) : t.isArrayBufferView(E) ? t.sHashCode(t.arrayBufferToBinaryString(E)) : null), y = l(p, L)))) {\n if (this.isString(e) && (\"\" !== (w = this.convertStringToImageData(e)) || void 0 !== (w = t.loadFile(e))) && (e = w), r = this.getImageFileTypeByImageData(e, r), !a(r)) throw new Error(\"addImage does not support files of type '\" + r + \"', please ensure that a plugin for '\" + r + \"' support is added.\");\n if (this.supportsArrayBuffer() && (e instanceof Uint8Array || (v = e, e = this.binaryStringToUint8Array(e))), !(y = this[\"process\" + r.toUpperCase()](e, (N = 0, (U = L) && (N = Object.keys ? Object.keys(U).length : function (t) {\n var A = 0;\n for (var e in t) t.hasOwnProperty(e) && A++;\n return A;\n }(U)), N), p, ((F = B) && \"string\" == typeof F && (F = F.toUpperCase()), F in t.image_compression ? F : t.image_compression.NONE), v))) throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n return function (t, A, e, r, n, i, o, s) {\n var a = function (t, A, e) {\n return t || A || (A = t = -96), t < 0 && (t = -1 * e.w * 72 / t / this.internal.scaleFactor), A < 0 && (A = -1 * e.h * 72 / A / this.internal.scaleFactor), 0 === t && (t = A * e.w / e.h), 0 === A && (A = t * e.h / e.w), [t, A];\n }.call(this, e, r, n),\n c = this.internal.getCoordinateString,\n u = this.internal.getVerticalCoordinateString;\n if (e = a[0], r = a[1], o[i] = n, s) {\n s *= Math.PI / 180;\n var l = Math.cos(s),\n h = Math.sin(s),\n f = function (t) {\n return t.toFixed(4);\n },\n d = [f(l), f(h), f(-1 * h), f(l), 0, 0, \"cm\"];\n }\n this.internal.write(\"q\"), s ? (this.internal.write([1, \"0\", \"0\", 1, c(t), u(A + r), \"cm\"].join(\" \")), this.internal.write(d.join(\" \")), this.internal.write([c(e), \"0\", \"0\", c(r), \"0\", \"0\", \"cm\"].join(\" \"))) : this.internal.write([c(e), \"0\", \"0\", c(r), c(t), u(A + r), \"cm\"].join(\" \")), this.internal.write(\"/I\" + n.i + \" Do\"), this.internal.write(\"Q\");\n }.call(this, i, h, f, d, y, y.i, L, g), this;\n }, t.convertStringToImageData = function (A) {\n var e,\n r = \"\";\n if (this.isString(A)) {\n var n;\n e = null !== (n = this.extractImageFromDataUrl(A)) ? n.data : A;\n try {\n r = atob(e);\n } catch (A) {\n throw t.validateStringAsBase64(e) ? new Error(\"atob-Error in jsPDF.convertStringToImageData \" + A.message) : new Error(\"Supplied Data is not a valid base64-String jsPDF.convertStringToImageData \");\n }\n }\n return r;\n };\n var h = function (t, A) {\n return t.subarray(A, A + 5);\n };\n t.processJPEG = function (t, A, e, n, i, o) {\n var s,\n a = this.decode.DCT_DECODE;\n if (!this.isString(t) && !this.isArrayBuffer(t) && !this.isArrayBufferView(t)) return null;\n if (this.isString(t) && (s = function (t) {\n var A;\n if (\"JPEG\" !== r(t)) throw new Error(\"getJpegSize requires a binary string jpeg file\");\n for (var e = 256 * t.charCodeAt(4) + t.charCodeAt(5), n = 4, i = t.length; n < i;) {\n if (n += e, 255 !== t.charCodeAt(n)) throw new Error(\"getJpegSize could not find the size of the image\");\n if (192 === t.charCodeAt(n + 1) || 193 === t.charCodeAt(n + 1) || 194 === t.charCodeAt(n + 1) || 195 === t.charCodeAt(n + 1) || 196 === t.charCodeAt(n + 1) || 197 === t.charCodeAt(n + 1) || 198 === t.charCodeAt(n + 1) || 199 === t.charCodeAt(n + 1)) return A = 256 * t.charCodeAt(n + 5) + t.charCodeAt(n + 6), [256 * t.charCodeAt(n + 7) + t.charCodeAt(n + 8), A, t.charCodeAt(n + 9)];\n n += 2, e = 256 * t.charCodeAt(n) + t.charCodeAt(n + 1);\n }\n }(t)), this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t) && (s = function (t) {\n if (65496 != (t[0] << 8 | t[1])) throw new Error(\"Supplied data is not a JPEG\");\n for (var A, e = t.length, r = (t[4] << 8) + t[5], n = 4; n < e;) {\n if (r = ((A = h(t, n += r))[2] << 8) + A[3], (192 === A[1] || 194 === A[1]) && 255 === A[0] && 7 < r) return {\n width: ((A = h(t, n + 5))[2] << 8) + A[3],\n height: (A[0] << 8) + A[1],\n numcomponents: A[4]\n };\n n += 2;\n }\n throw new Error(\"getJpegSizeFromBytes could not find the size of the image\");\n }(t), t = i || this.arrayBufferToBinaryString(t)), void 0 === o) switch (s.numcomponents) {\n case 1:\n o = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n o = this.color_spaces.DEVICE_CMYK;\n break;\n default:\n case 3:\n o = this.color_spaces.DEVICE_RGB;\n }\n return this.createImageInfo(t, s.width, s.height, o, 8, a, A, e);\n }, t.processJPG = function () {\n return this.processJPEG.apply(this, arguments);\n }, t.getImageProperties = function (A) {\n var e,\n r,\n n = \"\";\n if (c(A) && (A = u(A)), this.isString(A) && (\"\" !== (n = this.convertStringToImageData(A)) || void 0 !== (n = t.loadFile(A))) && (A = n), r = this.getImageFileTypeByImageData(A), !a(r)) throw new Error(\"addImage does not support files of type '\" + r + \"', please ensure that a plugin for '\" + r + \"' support is added.\");\n if (this.supportsArrayBuffer() && (A instanceof Uint8Array || (A = this.binaryStringToUint8Array(A))), !(e = this[\"process\" + r.toUpperCase()](A))) throw new Error(\"An unknown error occurred whilst processing the image\");\n return {\n fileType: r,\n width: e.w,\n height: e.h,\n colorSpace: e.cs,\n compressionMode: e.f,\n bitsPerComponent: e.bpc\n };\n };\n }(dt.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 o = dt.API, dt.API.events.push([\"addPage\", function (t) {\n this.internal.getPageInfo(t.pageNumber).pageContext.annotations = [];\n }]), o.events.push([\"putPage\", function (t) {\n for (var A = this.internal.getPageInfoByObjId(t.objId), e = t.pageContext.annotations, r = function (t) {\n if (void 0 !== t && \"\" != t) return !0;\n }, n = !1, i = 0; i < e.length && !n; i++) switch ((a = e[i]).type) {\n case \"link\":\n if (r(a.options.url) || r(a.options.pageNumber)) {\n n = !0;\n break;\n }\n case \"reference\":\n case \"text\":\n case \"freetext\":\n n = !0;\n }\n if (0 != n) {\n this.internal.write(\"/Annots [\"), this.internal.pageSize.height;\n var o = this.internal.getCoordinateString,\n s = this.internal.getVerticalCoordinateString;\n for (i = 0; i < e.length; i++) {\n var a;\n switch ((a = e[i]).type) {\n case \"reference\":\n this.internal.write(\" \" + a.object.objId + \" 0 R \");\n break;\n case \"text\":\n var c = this.internal.newAdditionalObject(),\n u = this.internal.newAdditionalObject(),\n l = a.title || \"Note\";\n B = \"<</Type /Annot /Subtype /Text \" + (f = \"/Rect [\" + o(a.bounds.x) + \" \" + s(a.bounds.y + a.bounds.h) + \" \" + o(a.bounds.x + a.bounds.w) + \" \" + s(a.bounds.y) + \"] \") + \"/Contents (\" + a.contents + \")\", B += \" /Popup \" + u.objId + \" 0 R\", B += \" /P \" + A.objId + \" 0 R\", B += \" /T (\" + l + \") >>\", c.content = B;\n var h = c.objId + \" 0 R\";\n B = \"<</Type /Annot /Subtype /Popup \" + (f = \"/Rect [\" + o(a.bounds.x + 30) + \" \" + s(a.bounds.y + a.bounds.h) + \" \" + o(a.bounds.x + a.bounds.w + 30) + \" \" + s(a.bounds.y) + \"] \") + \" /Parent \" + h, a.open && (B += \" /Open true\"), B += \" >>\", u.content = B, this.internal.write(c.objId, \"0 R\", u.objId, \"0 R\");\n break;\n case \"freetext\":\n var f = \"/Rect [\" + o(a.bounds.x) + \" \" + s(a.bounds.y) + \" \" + o(a.bounds.x + a.bounds.w) + \" \" + s(a.bounds.y + a.bounds.h) + \"] \",\n d = a.color || \"#000000\";\n B = \"<</Type /Annot /Subtype /FreeText \" + f + \"/Contents (\" + a.contents + \")\", B += \" /DS(font: Helvetica,sans-serif 12.0pt; text-align:left; color:#\" + d + \")\", B += \" /Border [0 0 0]\", B += \" >>\", this.internal.write(B);\n break;\n case \"link\":\n if (a.options.name) {\n var p = this.annotations._nameMap[a.options.name];\n a.options.pageNumber = p.page, a.options.top = p.y;\n } else a.options.top || (a.options.top = 0);\n f = \"/Rect [\" + o(a.x) + \" \" + s(a.y) + \" \" + o(a.x + a.w) + \" \" + s(a.y + a.h) + \"] \";\n var B = \"\";\n if (a.options.url) B = \"<</Type /Annot /Subtype /Link \" + f + \"/Border [0 0 0] /A <</S /URI /URI (\" + a.options.url + \") >>\";else if (a.options.pageNumber) switch (B = \"<</Type /Annot /Subtype /Link \" + f + \"/Border [0 0 0] /Dest [\" + this.internal.getPageInfo(a.options.pageNumber).objId + \" 0 R\", a.options.magFactor = a.options.magFactor || \"XYZ\", a.options.magFactor) {\n case \"Fit\":\n B += \" /Fit]\";\n break;\n case \"FitH\":\n B += \" /FitH \" + a.options.top + \"]\";\n break;\n case \"FitV\":\n a.options.left = a.options.left || 0, B += \" /FitV \" + a.options.left + \"]\";\n break;\n case \"XYZ\":\n default:\n var g = s(a.options.top);\n a.options.left = a.options.left || 0, void 0 === a.options.zoom && (a.options.zoom = 0), B += \" /XYZ \" + a.options.left + \" \" + g + \" \" + a.options.zoom + \"]\";\n }\n \"\" != B && (B += \" >>\", this.internal.write(B));\n }\n }\n this.internal.write(\"]\");\n }\n }]), o.createAnnotation = function (t) {\n var A = this.internal.getCurrentPageInfo();\n switch (t.type) {\n case \"link\":\n this.link(t.bounds.x, t.bounds.y, t.bounds.w, t.bounds.h, t);\n break;\n case \"text\":\n case \"freetext\":\n A.pageContext.annotations.push(t);\n }\n }, o.link = function (t, A, e, r, n) {\n this.internal.getCurrentPageInfo().pageContext.annotations.push({\n x: t,\n y: A,\n w: e,\n h: r,\n options: n,\n type: \"link\"\n });\n }, o.textWithLink = function (t, A, e, r) {\n var n = this.getTextWidth(t),\n i = this.internal.getLineHeight() / this.internal.scaleFactor;\n return this.text(t, A, e), e += .2 * i, this.link(A, e - i, n, i, r), n;\n }, o.getTextWidth = function (t) {\n var A = this.internal.getFontSize();\n return this.getStringUnitWidth(t) * A / this.internal.scaleFactor;\n },\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 function (t) {\n var A = {\n 1569: [65152],\n 1570: [65153, 65154],\n 1571: [65155, 65156],\n 1572: [65157, 65158],\n 1573: [65159, 65160],\n 1574: [65161, 65162, 65163, 65164],\n 1575: [65165, 65166],\n 1576: [65167, 65168, 65169, 65170],\n 1577: [65171, 65172],\n 1578: [65173, 65174, 65175, 65176],\n 1579: [65177, 65178, 65179, 65180],\n 1580: [65181, 65182, 65183, 65184],\n 1581: [65185, 65186, 65187, 65188],\n 1582: [65189, 65190, 65191, 65192],\n 1583: [65193, 65194],\n 1584: [65195, 65196],\n 1585: [65197, 65198],\n 1586: [65199, 65200],\n 1587: [65201, 65202, 65203, 65204],\n 1588: [65205, 65206, 65207, 65208],\n 1589: [65209, 65210, 65211, 65212],\n 1590: [65213, 65214, 65215, 65216],\n 1591: [65217, 65218, 65219, 65220],\n 1592: [65221, 65222, 65223, 65224],\n 1593: [65225, 65226, 65227, 65228],\n 1594: [65229, 65230, 65231, 65232],\n 1601: [65233, 65234, 65235, 65236],\n 1602: [65237, 65238, 65239, 65240],\n 1603: [65241, 65242, 65243, 65244],\n 1604: [65245, 65246, 65247, 65248],\n 1605: [65249, 65250, 65251, 65252],\n 1606: [65253, 65254, 65255, 65256],\n 1607: [65257, 65258, 65259, 65260],\n 1608: [65261, 65262],\n 1609: [65263, 65264, 64488, 64489],\n 1610: [65265, 65266, 65267, 65268],\n 1649: [64336, 64337],\n 1655: [64477],\n 1657: [64358, 64359, 64360, 64361],\n 1658: [64350, 64351, 64352, 64353],\n 1659: [64338, 64339, 64340, 64341],\n 1662: [64342, 64343, 64344, 64345],\n 1663: [64354, 64355, 64356, 64357],\n 1664: [64346, 64347, 64348, 64349],\n 1667: [64374, 64375, 64376, 64377],\n 1668: [64370, 64371, 64372, 64373],\n 1670: [64378, 64379, 64380, 64381],\n 1671: [64382, 64383, 64384, 64385],\n 1672: [64392, 64393],\n 1676: [64388, 64389],\n 1677: [64386, 64387],\n 1678: [64390, 64391],\n 1681: [64396, 64397],\n 1688: [64394, 64395],\n 1700: [64362, 64363, 64364, 64365],\n 1702: [64366, 64367, 64368, 64369],\n 1705: [64398, 64399, 64400, 64401],\n 1709: [64467, 64468, 64469, 64470],\n 1711: [64402, 64403, 64404, 64405],\n 1713: [64410, 64411, 64412, 64413],\n 1715: [64406, 64407, 64408, 64409],\n 1722: [64414, 64415],\n 1723: [64416, 64417, 64418, 64419],\n 1726: [64426, 64427, 64428, 64429],\n 1728: [64420, 64421],\n 1729: [64422, 64423, 64424, 64425],\n 1733: [64480, 64481],\n 1734: [64473, 64474],\n 1735: [64471, 64472],\n 1736: [64475, 64476],\n 1737: [64482, 64483],\n 1739: [64478, 64479],\n 1740: [64508, 64509, 64510, 64511],\n 1744: [64484, 64485, 64486, 64487],\n 1746: [64430, 64431],\n 1747: [64432, 64433]\n },\n e = {\n 65247: {\n 65154: 65269,\n 65156: 65271,\n 65160: 65273,\n 65166: 65275\n },\n 65248: {\n 65154: 65270,\n 65156: 65272,\n 65160: 65274,\n 65166: 65276\n },\n 65165: {\n 65247: {\n 65248: {\n 65258: 65010\n }\n }\n },\n 1617: {\n 1612: 64606,\n 1613: 64607,\n 1614: 64608,\n 1615: 64609,\n 1616: 64610\n }\n },\n r = {\n 1612: 64606,\n 1613: 64607,\n 1614: 64608,\n 1615: 64609,\n 1616: 64610\n },\n n = [1570, 1571, 1573, 1575];\n t.__arabicParser__ = {};\n var i = t.__arabicParser__.isInArabicSubstitutionA = function (t) {\n return void 0 !== A[t.charCodeAt(0)];\n },\n o = t.__arabicParser__.isArabicLetter = function (t) {\n return \"string\" == typeof t && /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(t);\n },\n s = t.__arabicParser__.isArabicEndLetter = function (t) {\n return o(t) && i(t) && A[t.charCodeAt(0)].length <= 2;\n },\n a = t.__arabicParser__.isArabicAlfLetter = function (t) {\n return o(t) && 0 <= n.indexOf(t.charCodeAt(0));\n },\n c = (t.__arabicParser__.arabicLetterHasIsolatedForm = function (t) {\n return o(t) && i(t) && 1 <= A[t.charCodeAt(0)].length;\n }, t.__arabicParser__.arabicLetterHasFinalForm = function (t) {\n return o(t) && i(t) && 2 <= A[t.charCodeAt(0)].length;\n }),\n u = (t.__arabicParser__.arabicLetterHasInitialForm = function (t) {\n return o(t) && i(t) && 3 <= A[t.charCodeAt(0)].length;\n }, t.__arabicParser__.arabicLetterHasMedialForm = function (t) {\n return o(t) && i(t) && 4 == A[t.charCodeAt(0)].length;\n }),\n l = t.__arabicParser__.resolveLigatures = function (t) {\n var A = 0,\n r = e,\n n = 0,\n i = \"\",\n o = 0;\n for (A = 0; A < t.length; A += 1) void 0 !== r[t.charCodeAt(A)] ? (o++, \"number\" == typeof (r = r[t.charCodeAt(A)]) && (n = -1 !== (n = h(t.charAt(A), t.charAt(A - o), t.charAt(A + 1))) ? n : 0, i += String.fromCharCode(r), r = e, o = 0), A === t.length - 1 && (r = e, i += t.charAt(A - (o - 1)), A -= o - 1, o = 0)) : (r = e, i += t.charAt(A - o), A -= o, o = 0);\n return i;\n },\n h = (t.__arabicParser__.isArabicDiacritic = function (t) {\n return void 0 !== t && void 0 !== r[t.charCodeAt(0)];\n }, t.__arabicParser__.getCorrectForm = function (t, A, e) {\n return o(t) ? !1 === i(t) ? -1 : !c(t) || !o(A) && !o(e) || !o(e) && s(A) || s(t) && !o(A) || s(t) && a(A) || s(t) && s(A) ? 0 : u(t) && o(A) && !s(A) && o(e) && c(e) ? 3 : s(t) || !o(e) ? 1 : 2 : -1;\n }),\n f = t.__arabicParser__.processArabic = t.processArabic = function (t) {\n var e = 0,\n r = 0,\n n = 0,\n i = \"\",\n s = \"\",\n a = \"\",\n c = (t = t || \"\").split(\"\\\\s+\"),\n u = [];\n for (e = 0; e < c.length; e += 1) {\n for (u.push(\"\"), r = 0; r < c[e].length; r += 1) i = c[e][r], s = c[e][r - 1], a = c[e][r + 1], o(i) ? (n = h(i, s, a), u[e] += -1 !== n ? String.fromCharCode(A[i.charCodeAt(0)][n]) : i) : u[e] += i;\n u[e] = l(u[e]);\n }\n return u.join(\" \");\n };\n t.events.push([\"preProcessText\", function (t) {\n var A = t.text,\n e = (t.x, t.y, t.options || {}),\n r = (t.mutex, e.lang, []);\n if (\"[object Array]\" === Object.prototype.toString.call(A)) {\n var n = 0;\n for (r = [], n = 0; n < A.length; n += 1) \"[object Array]\" === Object.prototype.toString.call(A[n]) ? r.push([f(A[n][0]), A[n][1], A[n][2]]) : r.push([f(A[n])]);\n t.text = r;\n } else t.text = f(A);\n }]);\n }(dt.API), dt.API.autoPrint = function (t) {\n var A;\n switch ((t = t || {}).variant = t.variant || \"non-conform\", t.variant) {\n case \"javascript\":\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function () {\n A = this.internal.newObject(), this.internal.out(\"<<\"), this.internal.out(\"/S /Named\"), this.internal.out(\"/Type /Action\"), this.internal.out(\"/N /Print\"), this.internal.out(\">>\"), this.internal.out(\"endobj\");\n }), this.internal.events.subscribe(\"putCatalog\", function () {\n this.internal.out(\"/OpenAction \" + A + \" 0 R\");\n });\n }\n return this;\n },\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 s = dt.API, (a = function () {\n var t = void 0;\n Object.defineProperty(this, \"pdf\", {\n get: function () {\n return t;\n },\n set: function (A) {\n t = A;\n }\n });\n var A = 150;\n Object.defineProperty(this, \"width\", {\n get: function () {\n return A;\n },\n set: function (t) {\n A = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 150 : t, this.getContext(\"2d\").pageWrapXEnabled && (this.getContext(\"2d\").pageWrapX = A + 1);\n }\n });\n var e = 300;\n Object.defineProperty(this, \"height\", {\n get: function () {\n return e;\n },\n set: function (t) {\n e = isNaN(t) || !1 === Number.isInteger(t) || t < 0 ? 300 : t, this.getContext(\"2d\").pageWrapYEnabled && (this.getContext(\"2d\").pageWrapY = e + 1);\n }\n });\n var r = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function () {\n return r;\n },\n set: function (t) {\n r = t;\n }\n });\n var n = {};\n Object.defineProperty(this, \"style\", {\n get: function () {\n return n;\n },\n set: function (t) {\n n = t;\n }\n }), Object.defineProperty(this, \"parentNode\", {\n get: function () {\n return !1;\n }\n });\n }).prototype.getContext = function (t, A) {\n var e;\n if (\"2d\" !== (t = t || \"2d\")) return null;\n for (e in A) this.pdf.context2d.hasOwnProperty(e) && (this.pdf.context2d[e] = A[e]);\n return (this.pdf.context2d._canvas = this).pdf.context2d;\n }, a.prototype.toDataURL = function () {\n throw new Error(\"toDataURL is not implemented.\");\n }, s.events.push([\"initialized\", function () {\n this.canvas = new a(), this.canvas.pdf = this;\n }]),\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 * \n * ====================================================================\n */\n c = dt.API, l = {\n x: void 0,\n y: void 0,\n w: void 0,\n h: void 0,\n ln: void 0\n }, h = 1, f = function (t, A, e, r, n) {\n l = {\n x: t,\n y: A,\n w: e,\n h: r,\n ln: n\n };\n }, d = function () {\n return l;\n }, p = {\n left: 0,\n top: 0,\n bottom: 0\n }, c.setHeaderFunction = function (t) {\n u = t;\n }, c.getTextDimensions = function (t, A) {\n var e = this.table_font_size || this.internal.getFontSize(),\n r = (this.internal.getFont().fontStyle, (A = A || {}).scaleFactor || this.internal.scaleFactor),\n n = 0,\n i = 0,\n o = 0;\n if (\"string\" == typeof t) 0 != (n = this.getStringUnitWidth(t) * e) && (i = 1);else {\n if (\"[object Array]\" !== Object.prototype.toString.call(t)) throw new Error(\"getTextDimensions expects text-parameter to be of type String or an Array of Strings.\");\n for (var s = 0; s < t.length; s++) n < (o = this.getStringUnitWidth(t[s]) * e) && (n = o);\n 0 !== n && (i = t.length);\n }\n return {\n w: n /= r,\n h: Math.max((i * e * this.getLineHeightFactor() - e * (this.getLineHeightFactor() - 1)) / r, 0)\n };\n }, c.cellAddPage = function () {\n var t = this.margins || p;\n this.addPage(), f(t.left, t.top, void 0, void 0), h += 1;\n }, c.cellInitialize = function () {\n l = {\n x: void 0,\n y: void 0,\n w: void 0,\n h: void 0,\n ln: void 0\n }, h = 1;\n }, c.cell = function (t, A, e, r, n, i, o) {\n var s = d(),\n a = !1;\n if (void 0 !== s.ln) if (s.ln === i) t = s.x + s.w, A = s.y;else {\n var c = this.margins || p;\n s.y + s.h + r + 13 >= this.internal.pageSize.getHeight() - c.bottom && (this.cellAddPage(), a = !0, this.printHeaders && this.tableHeaderRow && this.printHeaderRow(i, !0)), A = d().y + d().h, a && (A = 23);\n }\n if (void 0 !== n[0]) if (this.printingHeaderRow ? this.rect(t, A, e, r, \"FD\") : this.rect(t, A, e, r), \"right\" === o) {\n n instanceof Array || (n = [n]);\n for (var u = 0; u < n.length; u++) {\n var l = n[u],\n h = this.getStringUnitWidth(l) * this.internal.getFontSize() / this.internal.scaleFactor;\n this.text(l, t + e - h - 3, A + this.internal.getLineHeight() * (u + 1));\n }\n } else this.text(n, t + 3, A + this.internal.getLineHeight());\n return f(t, A, e, r, i), this;\n }, c.arrayMax = function (t, A) {\n var e,\n r,\n n,\n i = t[0];\n for (e = 0, r = t.length; e < r; e += 1) n = t[e], A ? -1 === A(i, n) && (i = n) : i < n && (i = n);\n return i;\n }, c.table = function (t, A, e, r, n) {\n if (!e) throw \"No data for PDF table\";\n var i,\n o,\n s,\n a,\n u,\n f,\n d,\n B,\n g,\n w,\n m = [],\n Q = [],\n C = {},\n y = {},\n v = [],\n F = [],\n U = !1,\n N = !0,\n E = 12,\n b = p;\n if (b.width = this.internal.pageSize.getWidth(), n && (!0 === n.autoSize && (U = !0), !1 === n.printHeaders && (N = !1), n.fontSize && (E = n.fontSize), n.css && void 0 !== n.css[\"font-size\"] && (E = 16 * n.css[\"font-size\"]), n.margins && (b = n.margins)), this.lnMod = 0, l = {\n x: void 0,\n y: void 0,\n w: void 0,\n h: void 0,\n ln: void 0\n }, h = 1, this.printHeaders = N, this.margins = b, this.setFontSize(E), this.table_font_size = E, null == r) m = Object.keys(e[0]);else if (r[0] && \"string\" != typeof r[0]) for (o = 0, s = r.length; o < s; o += 1) i = r[o], m.push(i.name), Q.push(i.prompt), y[i.name] = i.width * (19.049976 / 25.4);else m = r;\n if (U) for (w = function (t) {\n return t[i];\n }, o = 0, s = m.length; o < s; o += 1) {\n for (C[i = m[o]] = e.map(w), v.push(this.getTextDimensions(Q[o] || i, {\n scaleFactor: 1\n }).w), d = 0, a = (f = C[i]).length; d < a; d += 1) u = f[d], v.push(this.getTextDimensions(u, {\n scaleFactor: 1\n }).w);\n y[i] = c.arrayMax(v), v = [];\n }\n if (N) {\n var L = this.calculateLineHeight(m, y, Q.length ? Q : m);\n for (o = 0, s = m.length; o < s; o += 1) i = m[o], F.push([t, A, y[i], L, String(Q.length ? Q[o] : i)]);\n this.setTableHeaderRow(F), this.printHeaderRow(1, !1);\n }\n for (o = 0, s = e.length; o < s; o += 1) for (B = e[o], L = this.calculateLineHeight(m, y, B), d = 0, g = m.length; d < g; d += 1) i = m[d], this.cell(t, A, y[i], L, B[i], o + 2, i.align);\n return this.lastCellPos = l, this.table_x = t, this.table_y = A, this;\n }, c.calculateLineHeight = function (t, A, e) {\n for (var r, n = 0, i = 0; i < t.length; i++) {\n e[r = t[i]] = this.splitTextToSize(String(e[r]), A[r] - 3);\n var o = this.internal.getLineHeight() * e[r].length + 3;\n n < o && (n = o);\n }\n return n;\n }, c.setTableHeaderRow = function (t) {\n this.tableHeaderRow = t;\n }, c.printHeaderRow = function (t, A) {\n if (!this.tableHeaderRow) throw \"Property tableHeaderRow does not exist.\";\n var e, r, n, i;\n if (this.printingHeaderRow = !0, void 0 !== u) {\n var o = u(this, h);\n f(o[0], o[1], o[2], o[3], -1);\n }\n this.setFontStyle(\"bold\");\n var s = [];\n for (n = 0, i = this.tableHeaderRow.length; n < i; n += 1) this.setFillColor(200, 200, 200), e = this.tableHeaderRow[n], A && (this.margins.top = 13, e[1] = this.margins && this.margins.top || 0, s.push(e)), r = [].concat(e), this.cell.apply(this, r.concat(t));\n 0 < s.length && this.setTableHeaderRow(s), this.setFontStyle(\"normal\"), this.printingHeaderRow = !1;\n }, function (t, A) {\n var e,\n r,\n i,\n o,\n s,\n a = function (t) {\n return t = t || {}, this.isStrokeTransparent = t.isStrokeTransparent || !1, this.strokeOpacity = t.strokeOpacity || 1, this.strokeStyle = t.strokeStyle || \"#000000\", this.fillStyle = t.fillStyle || \"#000000\", this.isFillTransparent = t.isFillTransparent || !1, this.fillOpacity = t.fillOpacity || 1, this.font = t.font || \"10px sans-serif\", this.textBaseline = t.textBaseline || \"alphabetic\", this.textAlign = t.textAlign || \"left\", this.lineWidth = t.lineWidth || 1, this.lineJoin = t.lineJoin || \"miter\", this.lineCap = t.lineCap || \"butt\", this.path = t.path || [], this.transform = void 0 !== t.transform ? t.transform.clone() : new T(), this.globalCompositeOperation = t.globalCompositeOperation || \"normal\", this.globalAlpha = t.globalAlpha || 1, this.clip_path = t.clip_path || [], this.currentPoint = t.currentPoint || new I(), this.miterLimit = t.miterLimit || 10, this.lastPoint = t.lastPoint || new I(), this.ignoreClearRect = \"boolean\" != typeof t.ignoreClearRect || t.ignoreClearRect, this;\n };\n t.events.push([\"initialized\", function () {\n this.context2d = new c(this), e = this.internal.f2, this.internal.f3, r = this.internal.getCoordinateString, i = this.internal.getVerticalCoordinateString, o = this.internal.getHorizontalCoordinate, s = this.internal.getVerticalCoordinate;\n }]);\n var c = function (t) {\n Object.defineProperty(this, \"canvas\", {\n get: function () {\n return {\n parentNode: !1,\n style: !1\n };\n }\n }), Object.defineProperty(this, \"pdf\", {\n get: function () {\n return t;\n }\n });\n var A = !1;\n Object.defineProperty(this, \"pageWrapXEnabled\", {\n get: function () {\n return A;\n },\n set: function (t) {\n A = Boolean(t);\n }\n });\n var e = !1;\n Object.defineProperty(this, \"pageWrapYEnabled\", {\n get: function () {\n return e;\n },\n set: function (t) {\n e = Boolean(t);\n }\n });\n var r = 0;\n Object.defineProperty(this, \"posX\", {\n get: function () {\n return r;\n },\n set: function (t) {\n isNaN(t) || (r = t);\n }\n });\n var n = 0;\n Object.defineProperty(this, \"posY\", {\n get: function () {\n return n;\n },\n set: function (t) {\n isNaN(t) || (n = t);\n }\n });\n var i = !1;\n Object.defineProperty(this, \"autoPaging\", {\n get: function () {\n return i;\n },\n set: function (t) {\n i = Boolean(t);\n }\n });\n var o = 0;\n Object.defineProperty(this, \"lastBreak\", {\n get: function () {\n return o;\n },\n set: function (t) {\n o = t;\n }\n });\n var s = [];\n Object.defineProperty(this, \"pageBreaks\", {\n get: function () {\n return s;\n },\n set: function (t) {\n s = t;\n }\n });\n var c = new a();\n Object.defineProperty(this, \"ctx\", {\n get: function () {\n return c;\n },\n set: function (t) {\n t instanceof a && (c = t);\n }\n }), Object.defineProperty(this, \"path\", {\n get: function () {\n return c.path;\n },\n set: function (t) {\n c.path = t;\n }\n });\n var l = [];\n Object.defineProperty(this, \"ctxStack\", {\n get: function () {\n return l;\n },\n set: function (t) {\n l = t;\n }\n }), Object.defineProperty(this, \"fillStyle\", {\n get: function () {\n return this.ctx.fillStyle;\n },\n set: function (t) {\n var A;\n A = u(t), this.ctx.fillStyle = A.style, this.ctx.isFillTransparent = 0 === A.a, this.ctx.fillOpacity = A.a, this.pdf.setFillColor(A.r, A.g, A.b, {\n a: A.a\n }), this.pdf.setTextColor(A.r, A.g, A.b, {\n a: A.a\n });\n }\n }), Object.defineProperty(this, \"strokeStyle\", {\n get: function () {\n return this.ctx.strokeStyle;\n },\n set: function (t) {\n var A = u(t);\n this.ctx.strokeStyle = A.style, this.ctx.isStrokeTransparent = 0 === A.a, this.ctx.strokeOpacity = A.a, 0 === A.a ? this.pdf.setDrawColor(255, 255, 255) : (A.a, this.pdf.setDrawColor(A.r, A.g, A.b));\n }\n }), Object.defineProperty(this, \"lineCap\", {\n get: function () {\n return this.ctx.lineCap;\n },\n set: function (t) {\n -1 !== [\"butt\", \"round\", \"square\"].indexOf(t) && (this.ctx.lineCap = t, this.pdf.setLineCap(t));\n }\n }), Object.defineProperty(this, \"lineWidth\", {\n get: function () {\n return this.ctx.lineWidth;\n },\n set: function (t) {\n isNaN(t) || (this.ctx.lineWidth = t, this.pdf.setLineWidth(t));\n }\n }), Object.defineProperty(this, \"lineJoin\", {\n get: function () {\n return this.ctx.lineJoin;\n },\n set: function (t) {\n -1 !== [\"bevel\", \"round\", \"miter\"].indexOf(t) && (this.ctx.lineJoin = t, this.pdf.setLineJoin(t));\n }\n }), Object.defineProperty(this, \"miterLimit\", {\n get: function () {\n return this.ctx.miterLimit;\n },\n set: function (t) {\n isNaN(t) || (this.ctx.miterLimit = t, this.pdf.setMiterLimit(t));\n }\n }), Object.defineProperty(this, \"textBaseline\", {\n get: function () {\n return this.ctx.textBaseline;\n },\n set: function (t) {\n this.ctx.textBaseline = t;\n }\n }), Object.defineProperty(this, \"textAlign\", {\n get: function () {\n return this.ctx.textAlign;\n },\n set: function (t) {\n -1 !== [\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(t) && (this.ctx.textAlign = t);\n }\n }), Object.defineProperty(this, \"font\", {\n get: function () {\n return this.ctx.font;\n },\n set: function (t) {\n var A;\n if (this.ctx.font = t, null !== (A = /^\\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.exec(t))) {\n var e = A[1],\n r = (A[2], A[3]),\n n = A[4],\n i = A[5],\n o = A[6];\n n = \"px\" === i ? Math.floor(parseFloat(n)) : \"em\" === i ? Math.floor(parseFloat(n) * this.pdf.getFontSize()) : Math.floor(parseFloat(n)), this.pdf.setFontSize(n);\n var s = \"\";\n (\"bold\" === r || 700 <= parseInt(r, 10) || \"bold\" === e) && (s = \"bold\"), \"italic\" === e && (s += \"italic\"), 0 === s.length && (s = \"normal\");\n for (var a = \"\", c = o.toLowerCase().replace(/\"|'/g, \"\").split(/\\s*,\\s*/), u = {\n arial: \"Helvetica\",\n verdana: \"Helvetica\",\n helvetica: \"Helvetica\",\n \"sans-serif\": \"Helvetica\",\n fixed: \"Courier\",\n monospace: \"Courier\",\n terminal: \"Courier\",\n courier: \"Courier\",\n times: \"Times\",\n cursive: \"Times\",\n fantasy: \"Times\",\n serif: \"Times\"\n }, l = 0; l < c.length; l++) {\n if (void 0 !== this.pdf.internal.getFont(c[l], s, {\n noFallback: !0,\n disableWarning: !0\n })) {\n a = c[l];\n break;\n }\n if (\"bolditalic\" === s && void 0 !== this.pdf.internal.getFont(c[l], \"bold\", {\n noFallback: !0,\n disableWarning: !0\n })) a = c[l], s = \"bold\";else if (void 0 !== this.pdf.internal.getFont(c[l], \"normal\", {\n noFallback: !0,\n disableWarning: !0\n })) {\n a = c[l], s = \"normal\";\n break;\n }\n }\n if (\"\" === a) for (l = 0; l < c.length; l++) if (u[c[l]]) {\n a = u[c[l]];\n break;\n }\n a = \"\" === a ? \"Times\" : a, this.pdf.setFont(a, s);\n }\n }\n }), Object.defineProperty(this, \"globalCompositeOperation\", {\n get: function () {\n return this.ctx.globalCompositeOperation;\n },\n set: function (t) {\n this.ctx.globalCompositeOperation = t;\n }\n }), Object.defineProperty(this, \"globalAlpha\", {\n get: function () {\n return this.ctx.globalAlpha;\n },\n set: function (t) {\n this.ctx.globalAlpha = t;\n }\n }), Object.defineProperty(this, \"ignoreClearRect\", {\n get: function () {\n return this.ctx.ignoreClearRect;\n },\n set: function (t) {\n this.ctx.ignoreClearRect = Boolean(t);\n }\n });\n };\n c.prototype.fill = function () {\n B.call(this, \"fill\", !1);\n }, c.prototype.stroke = function () {\n B.call(this, \"stroke\", !1);\n }, c.prototype.beginPath = function () {\n this.path = [{\n type: \"begin\"\n }];\n }, c.prototype.moveTo = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\n var e = this.ctx.transform.applyToPoint(new I(t, A));\n this.path.push({\n type: \"mt\",\n x: e.x,\n y: e.y\n }), this.ctx.lastPoint = new I(t, A);\n }, c.prototype.closePath = function () {\n var t = new I(0, 0),\n A = 0;\n for (A = this.path.length - 1; -1 !== A; A--) if (\"begin\" === this.path[A].type && \"object\" === n(this.path[A + 1]) && \"number\" == typeof this.path[A + 1].x) {\n t = new I(this.path[A + 1].x, this.path[A + 1].y), this.path.push({\n type: \"lt\",\n x: t.x,\n y: t.y\n });\n break;\n }\n \"object\" === n(this.path[A + 2]) && \"number\" == typeof this.path[A + 2].x && this.path.push(JSON.parse(JSON.stringify(this.path[A + 2]))), this.path.push({\n type: \"close\"\n }), this.ctx.lastPoint = new I(t.x, t.y);\n }, c.prototype.lineTo = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\n var e = this.ctx.transform.applyToPoint(new I(t, A));\n this.path.push({\n type: \"lt\",\n x: e.x,\n y: e.y\n }), this.ctx.lastPoint = new I(e.x, e.y);\n }, c.prototype.clip = function () {\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path)), B.call(this, null, !0);\n }, c.prototype.quadraticCurveTo = function (t, A, e, r) {\n if (isNaN(e) || isNaN(r) || isNaN(t) || isNaN(A)) throw console.error(\"jsPDF.context2d.quadraticCurveTo: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\");\n var n = this.ctx.transform.applyToPoint(new I(e, r)),\n i = this.ctx.transform.applyToPoint(new I(t, A));\n this.path.push({\n type: \"qct\",\n x1: i.x,\n y1: i.y,\n x: n.x,\n y: n.y\n }), this.ctx.lastPoint = new I(n.x, n.y);\n }, c.prototype.bezierCurveTo = function (t, A, e, r, n, i) {\n if (isNaN(n) || isNaN(i) || isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw console.error(\"jsPDF.context2d.bezierCurveTo: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\");\n var o = this.ctx.transform.applyToPoint(new I(n, i)),\n s = this.ctx.transform.applyToPoint(new I(t, A)),\n a = this.ctx.transform.applyToPoint(new I(e, r));\n this.path.push({\n type: \"bct\",\n x1: s.x,\n y1: s.y,\n x2: a.x,\n y2: a.y,\n x: o.x,\n y: o.y\n }), this.ctx.lastPoint = new I(o.x, o.y);\n }, c.prototype.arc = function (t, A, e, r, n, i) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || isNaN(n)) throw console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\n if (i = Boolean(i), !this.ctx.transform.isIdentity) {\n var o = this.ctx.transform.applyToPoint(new I(t, A));\n t = o.x, A = o.y;\n var s = this.ctx.transform.applyToPoint(new I(0, e)),\n a = this.ctx.transform.applyToPoint(new I(0, 0));\n e = Math.sqrt(Math.pow(s.x - a.x, 2) + Math.pow(s.y - a.y, 2));\n }\n Math.abs(n - r) >= 2 * Math.PI && (r = 0, n = 2 * Math.PI), this.path.push({\n type: \"arc\",\n x: t,\n y: A,\n radius: e,\n startAngle: r,\n endAngle: n,\n counterclockwise: i\n });\n }, c.prototype.arcTo = function (t, A, e, r, n) {\n throw new Error(\"arcTo not implemented.\");\n }, c.prototype.rect = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\n this.moveTo(t, A), this.lineTo(t + e, A), this.lineTo(t + e, A + r), this.lineTo(t, A + r), this.lineTo(t, A), this.lineTo(t + e, A), this.lineTo(t, A);\n }, c.prototype.fillRect = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\n if (!l.call(this)) {\n var n = {};\n \"butt\" !== this.lineCap && (n.lineCap = this.lineCap, this.lineCap = \"butt\"), \"miter\" !== this.lineJoin && (n.lineJoin = this.lineJoin, this.lineJoin = \"miter\"), this.beginPath(), this.rect(t, A, e, r), this.fill(), n.hasOwnProperty(\"lineCap\") && (this.lineCap = n.lineCap), n.hasOwnProperty(\"lineJoin\") && (this.lineJoin = n.lineJoin);\n }\n }, c.prototype.strokeRect = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\n h.call(this) || (this.beginPath(), this.rect(t, A, e, r), this.stroke());\n }, c.prototype.clearRect = function (t, A, e, r) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r)) throw console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\n this.ignoreClearRect || (this.fillStyle = \"#ffffff\", this.fillRect(t, A, e, r));\n }, c.prototype.save = function (t) {\n t = \"boolean\" != typeof t || t;\n for (var A = this.pdf.internal.getCurrentPageInfo().pageNumber, e = 0; e < this.pdf.internal.getNumberOfPages(); e++) this.pdf.setPage(e + 1), this.pdf.internal.out(\"q\");\n if (this.pdf.setPage(A), t) {\n this.ctx.fontSize = this.pdf.internal.getFontSize();\n var r = new a(this.ctx);\n this.ctxStack.push(this.ctx), this.ctx = r;\n }\n }, c.prototype.restore = function (t) {\n t = \"boolean\" != typeof t || t;\n for (var A = this.pdf.internal.getCurrentPageInfo().pageNumber, e = 0; e < this.pdf.internal.getNumberOfPages(); e++) this.pdf.setPage(e + 1), this.pdf.internal.out(\"Q\");\n this.pdf.setPage(A), t && 0 !== this.ctxStack.length && (this.ctx = this.ctxStack.pop(), this.fillStyle = this.ctx.fillStyle, this.strokeStyle = this.ctx.strokeStyle, this.font = this.ctx.font, this.lineCap = this.ctx.lineCap, this.lineWidth = this.ctx.lineWidth, this.lineJoin = this.ctx.lineJoin);\n }, c.prototype.toDataURL = function () {\n throw new Error(\"toDataUrl not implemented.\");\n };\n var u = function (t) {\n var A, e, r, n;\n if (!0 === t.isCanvasGradient && (t = t.getColor()), !t) return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n style: t\n };\n if (/transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/.test(t)) n = r = e = A = 0;else {\n var i = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/.exec(t);\n if (null !== i) A = parseInt(i[1]), e = parseInt(i[2]), r = parseInt(i[3]), n = 1;else if (null !== (i = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d\\.]+)\\s*\\)/.exec(t))) A = parseInt(i[1]), e = parseInt(i[2]), r = parseInt(i[3]), n = parseFloat(i[4]);else {\n if (n = 1, \"string\" == typeof t && \"#\" !== t.charAt(0)) {\n var o = new RGBColor(t);\n t = o.ok ? o.toHex() : \"#000000\";\n }\n 4 === t.length ? (A = t.substring(1, 2), A += A, e = t.substring(2, 3), e += e, r = t.substring(3, 4), r += r) : (A = t.substring(1, 3), e = t.substring(3, 5), r = t.substring(5, 7)), A = parseInt(A, 16), e = parseInt(e, 16), r = parseInt(r, 16);\n }\n }\n return {\n r: A,\n g: e,\n b: r,\n a: n,\n style: t\n };\n },\n l = function () {\n return this.ctx.isFillTransparent || 0 == this.globalAlpha;\n },\n h = function () {\n return Boolean(this.ctx.isStrokeTransparent || 0 == this.globalAlpha);\n };\n c.prototype.fillText = function (t, A, e, r) {\n if (isNaN(A) || isNaN(e) || \"string\" != typeof t) throw console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\n if (r = isNaN(r) ? void 0 : r, !l.call(this)) {\n e = w.call(this, e);\n var n = L(this.ctx.transform.rotation),\n i = this.ctx.transform.scaleX;\n v.call(this, {\n text: t,\n x: A,\n y: e,\n scale: i,\n angle: n,\n align: this.textAlign,\n maxWidth: r\n });\n }\n }, c.prototype.strokeText = function (t, A, e, r) {\n if (isNaN(A) || isNaN(e) || \"string\" != typeof t) throw console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\n if (!h.call(this)) {\n r = isNaN(r) ? void 0 : r, e = w.call(this, e);\n var n = L(this.ctx.transform.rotation),\n i = this.ctx.transform.scaleX;\n v.call(this, {\n text: t,\n x: A,\n y: e,\n scale: i,\n renderingMode: \"stroke\",\n angle: n,\n align: this.textAlign,\n maxWidth: r\n });\n }\n }, c.prototype.measureText = function (t) {\n if (\"string\" != typeof t) throw console.error(\"jsPDF.context2d.measureText: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.measureText\");\n var A = this.pdf,\n e = this.pdf.internal.scaleFactor,\n r = A.internal.getFontSize(),\n n = A.getStringUnitWidth(t) * r / A.internal.scaleFactor;\n return new function (t) {\n var A = (t = t || {}).width || 0;\n return Object.defineProperty(this, \"width\", {\n get: function () {\n return A;\n }\n }), this;\n }({\n width: n *= Math.round(96 * e / 72 * 1e4) / 1e4\n });\n }, c.prototype.scale = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\n var e = new T(t, 0, 0, A, 0, 0);\n this.ctx.transform = this.ctx.transform.multiply(e);\n }, c.prototype.rotate = function (t) {\n if (isNaN(t)) throw console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\n var A = new T(Math.cos(t), Math.sin(t), -Math.sin(t), Math.cos(t), 0, 0);\n this.ctx.transform = this.ctx.transform.multiply(A);\n }, c.prototype.translate = function (t, A) {\n if (isNaN(t) || isNaN(A)) throw console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\n var e = new T(1, 0, 0, 1, t, A);\n this.ctx.transform = this.ctx.transform.multiply(e);\n }, c.prototype.transform = function (t, A, e, r, n, i) {\n if (isNaN(t) || isNaN(A) || isNaN(e) || isNaN(r) || isNaN(n) || isNaN(i)) throw console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments), new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\n var o = new T(t, A, e, r, n, i);\n this.ctx.transform = this.ctx.transform.multiply(o);\n }, c.prototype.setTransform = function (t, A, e, r, n, i) {\n t = isNaN(t) ? 1 : t, A = isNaN(A) ? 0 : A, e = isNaN(e) ? 0 : e, r = isNaN(r) ? 1 : r, n = isNaN(n) ? 0 : n, i = isNaN(i) ? 0 : i, this.ctx.transform = new T(t, A, e, r, n, i);\n }, c.prototype.drawImage = function (t, A, e, r, n, i, o, s, a) {\n var c = this.pdf.getImageProperties(t),\n u = 1,\n l = 1,\n h = 1,\n d = 1;\n void 0 !== r && void 0 !== s && (h = s / r, d = a / n, u = c.width / r * s / r, l = c.height / n * a / n), void 0 === i && (i = A, o = e, e = A = 0), void 0 !== r && void 0 === s && (s = r, a = n), void 0 === r && void 0 === s && (s = c.width, a = c.height);\n var B = this.ctx.transform.decompose(),\n w = L(B.rotate.shx);\n B.scale.sx, B.scale.sy;\n for (var m, Q = new T(), C = ((Q = (Q = (Q = Q.multiply(B.translate)).multiply(B.skew)).multiply(B.scale)).applyToPoint(new I(s, a)), Q.applyToRectangle(new _(i - A * h, o - e * d, r * u, n * l))), y = f.call(this, C), v = [], F = 0; F < y.length; F += 1) -1 === v.indexOf(y[F]) && v.push(y[F]);\n if (v.sort(), this.autoPaging) for (var U = v[0], N = v[v.length - 1], E = U; E < N + 1; E++) {\n if (this.pdf.setPage(E), 0 !== this.ctx.clip_path.length) {\n var b = this.path;\n m = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(m, this.posX, -1 * this.pdf.internal.pageSize.height * (E - 1) + this.posY), g.call(this, \"fill\", !0), this.path = b;\n }\n var H = JSON.parse(JSON.stringify(C));\n H = p([H], this.posX, -1 * this.pdf.internal.pageSize.height * (E - 1) + this.posY)[0], this.pdf.addImage(t, \"jpg\", H.x, H.y, H.w, H.h, null, null, w);\n } else this.pdf.addImage(t, \"jpg\", C.x, C.y, C.w, C.h, null, null, w);\n };\n var f = function (t, A, e) {\n var r = [];\n switch (A = A || this.pdf.internal.pageSize.width, e = e || this.pdf.internal.pageSize.height, t.type) {\n default:\n case \"mt\":\n case \"lt\":\n r.push(Math.floor((t.y + this.posY) / e) + 1);\n break;\n case \"arc\":\n r.push(Math.floor((t.y + this.posY - t.radius) / e) + 1), r.push(Math.floor((t.y + this.posY + t.radius) / e) + 1);\n break;\n case \"qct\":\n var n = x(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x, t.y);\n r.push(Math.floor(n.y / e) + 1), r.push(Math.floor((n.y + n.h) / e) + 1);\n break;\n case \"bct\":\n var i = S(this.ctx.lastPoint.x, this.ctx.lastPoint.y, t.x1, t.y1, t.x2, t.y2, t.x, t.y);\n r.push(Math.floor(i.y / e) + 1), r.push(Math.floor((i.y + i.h) / e) + 1);\n break;\n case \"rect\":\n r.push(Math.floor((t.y + this.posY) / e) + 1), r.push(Math.floor((t.y + t.h + this.posY) / e) + 1);\n }\n for (var o = 0; o < r.length; o += 1) for (; this.pdf.internal.getNumberOfPages() < r[o];) d.call(this);\n return r;\n },\n d = function () {\n var t = this.fillStyle,\n A = this.strokeStyle,\n e = this.font,\n r = this.lineCap,\n n = this.lineWidth,\n i = this.lineJoin;\n this.pdf.addPage(), this.fillStyle = t, this.strokeStyle = A, this.font = e, this.lineCap = r, this.lineWidth = n, this.lineJoin = i;\n },\n p = function (t, A, e) {\n for (var r = 0; r < t.length; r++) switch (t[r].type) {\n case \"bct\":\n t[r].x2 += A, t[r].y2 += e;\n case \"qct\":\n t[r].x1 += A, t[r].y1 += e;\n case \"mt\":\n case \"lt\":\n case \"arc\":\n default:\n t[r].x += A, t[r].y += e;\n }\n return t;\n },\n B = function (t, A) {\n for (var e, r, n = this.fillStyle, i = this.strokeStyle, o = (this.font, this.lineCap), s = this.lineWidth, a = this.lineJoin, c = JSON.parse(JSON.stringify(this.path)), u = JSON.parse(JSON.stringify(this.path)), l = [], h = 0; h < u.length; h++) if (void 0 !== u[h].x) for (var B = f.call(this, u[h]), w = 0; w < B.length; w += 1) -1 === l.indexOf(B[w]) && l.push(B[w]);\n for (h = 0; h < l.length; h++) for (; this.pdf.internal.getNumberOfPages() < l[h];) d.call(this);\n if (l.sort(), this.autoPaging) {\n var m = l[0],\n Q = l[l.length - 1];\n for (h = m; h < Q + 1; h++) {\n if (this.pdf.setPage(h), this.fillStyle = n, this.strokeStyle = i, this.lineCap = o, this.lineWidth = s, this.lineJoin = a, 0 !== this.ctx.clip_path.length) {\n var C = this.path;\n e = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(e, this.posX, -1 * this.pdf.internal.pageSize.height * (h - 1) + this.posY), g.call(this, t, !0), this.path = C;\n }\n r = JSON.parse(JSON.stringify(c)), this.path = p(r, this.posX, -1 * this.pdf.internal.pageSize.height * (h - 1) + this.posY), !1 !== A && 0 !== h || g.call(this, t, A);\n }\n } else g.call(this, t, A);\n this.path = c;\n },\n g = function (t, A) {\n if ((\"stroke\" !== t || A || !h.call(this)) && (\"stroke\" === t || A || !l.call(this))) {\n var e = [];\n this.ctx.globalAlpha, this.ctx.fillOpacity < 1 && this.ctx.fillOpacity;\n for (var r, n = this.path, i = 0; i < n.length; i++) {\n var o = n[i];\n switch (o.type) {\n case \"begin\":\n e.push({\n begin: !0\n });\n break;\n case \"close\":\n e.push({\n close: !0\n });\n break;\n case \"mt\":\n e.push({\n start: o,\n deltas: [],\n abs: []\n });\n break;\n case \"lt\":\n var s = e.length;\n if (!isNaN(n[i - 1].x)) {\n var a = [o.x - n[i - 1].x, o.y - n[i - 1].y];\n if (0 < s) for (; 0 <= s; s--) if (!0 !== e[s - 1].close && !0 !== e[s - 1].begin) {\n e[s - 1].deltas.push(a), e[s - 1].abs.push(o);\n break;\n }\n }\n break;\n case \"bct\":\n a = [o.x1 - n[i - 1].x, o.y1 - n[i - 1].y, o.x2 - n[i - 1].x, o.y2 - n[i - 1].y, o.x - n[i - 1].x, o.y - n[i - 1].y], e[e.length - 1].deltas.push(a);\n break;\n case \"qct\":\n var c = n[i - 1].x + 2 / 3 * (o.x1 - n[i - 1].x),\n u = n[i - 1].y + 2 / 3 * (o.y1 - n[i - 1].y),\n f = o.x + 2 / 3 * (o.x1 - o.x),\n d = o.y + 2 / 3 * (o.y1 - o.y),\n p = o.x,\n B = o.y;\n a = [c - n[i - 1].x, u - n[i - 1].y, f - n[i - 1].x, d - n[i - 1].y, p - n[i - 1].x, B - n[i - 1].y], e[e.length - 1].deltas.push(a);\n break;\n case \"arc\":\n e.push({\n deltas: [],\n abs: [],\n arc: !0\n }), Array.isArray(e[e.length - 1].abs) && e[e.length - 1].abs.push(o);\n }\n }\n for (r = A ? null : \"stroke\" === t ? \"stroke\" : \"fill\", i = 0; i < e.length; i++) {\n if (e[i].arc) for (var g = e[i].abs, w = 0; w < g.length; w++) {\n var y = g[w];\n if (void 0 !== y.startAngle) {\n var v = L(y.startAngle),\n N = L(y.endAngle),\n E = y.x,\n b = y.y;\n m.call(this, E, b, y.radius, v, N, y.counterclockwise, r, A);\n } else F.call(this, y.x, y.y);\n }\n e[i].arc || !0 === e[i].close || !0 === e[i].begin || (E = e[i].start.x, b = e[i].start.y, U.call(this, e[i].deltas, E, b, null, null));\n }\n r && Q.call(this, r), A && C.call(this);\n }\n },\n w = function (t) {\n var A = this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor,\n e = A * (this.pdf.internal.getLineHeightFactor() - 1);\n switch (this.ctx.textBaseline) {\n case \"bottom\":\n return t - e;\n case \"top\":\n return t + A - e;\n case \"hanging\":\n return t + A - 2 * e;\n case \"middle\":\n return t + A / 2 - e;\n case \"ideographic\":\n return t;\n case \"alphabetic\":\n default:\n return t;\n }\n };\n c.prototype.createLinearGradient = function () {\n var t = function () {};\n return t.colorStops = [], t.addColorStop = function (t, A) {\n this.colorStops.push([t, A]);\n }, t.getColor = function () {\n return 0 === this.colorStops.length ? \"#000000\" : this.colorStops[0][1];\n }, t.isCanvasGradient = !0, t;\n }, c.prototype.createPattern = function () {\n return this.createLinearGradient();\n }, c.prototype.createRadialGradient = function () {\n return this.createLinearGradient();\n };\n var m = function (t, A, e, r, n, i, o, s) {\n this.pdf.internal.scaleFactor;\n for (var a = H(r), c = H(n), u = E.call(this, e, a, c, i), l = 0; l < u.length; l++) {\n var h = u[l];\n 0 === l && y.call(this, h.x1 + t, h.y1 + A), N.call(this, t, A, h.x2, h.y2, h.x3, h.y3, h.x4, h.y4);\n }\n s ? C.call(this) : Q.call(this, o);\n },\n Q = function (t) {\n switch (t) {\n case \"stroke\":\n this.pdf.internal.out(\"S\");\n break;\n case \"fill\":\n this.pdf.internal.out(\"f\");\n }\n },\n C = function () {\n this.pdf.clip();\n },\n y = function (t, A) {\n this.pdf.internal.out(r(t) + \" \" + i(A) + \" m\");\n },\n v = function (t) {\n var A;\n switch (t.align) {\n case \"right\":\n case \"end\":\n A = \"right\";\n break;\n case \"center\":\n A = \"center\";\n break;\n case \"left\":\n case \"start\":\n default:\n A = \"left\";\n }\n var e = this.ctx.transform.applyToPoint(new I(t.x, t.y)),\n r = this.ctx.transform.decompose(),\n n = new T();\n n = (n = (n = n.multiply(r.translate)).multiply(r.skew)).multiply(r.scale);\n for (var i, o = this.pdf.getTextDimensions(t.text), s = this.ctx.transform.applyToRectangle(new _(t.x, t.y, o.w, o.h)), a = n.applyToRectangle(new _(t.x, t.y - o.h, o.w, o.h)), c = f.call(this, a), u = [], l = 0; l < c.length; l += 1) -1 === u.indexOf(c[l]) && u.push(c[l]);\n if (u.sort(), !0 === this.autoPaging) for (var h = u[0], d = u[u.length - 1], B = h; B < d + 1; B++) {\n if (this.pdf.setPage(B), 0 !== this.ctx.clip_path.length) {\n var w = this.path;\n i = JSON.parse(JSON.stringify(this.ctx.clip_path)), this.path = p(i, this.posX, -1 * this.pdf.internal.pageSize.height * (B - 1) + this.posY), g.call(this, \"fill\", !0), this.path = w;\n }\n var m = JSON.parse(JSON.stringify(s));\n if (m = p([m], this.posX, -1 * this.pdf.internal.pageSize.height * (B - 1) + this.posY)[0], .01 <= t.scale) {\n var Q = this.pdf.internal.getFontSize();\n this.pdf.setFontSize(Q * t.scale);\n }\n this.pdf.text(t.text, m.x, m.y, {\n angle: t.angle,\n align: A,\n renderingMode: t.renderingMode,\n maxWidth: t.maxWidth\n }), .01 <= t.scale && this.pdf.setFontSize(Q);\n } else .01 <= t.scale && (Q = this.pdf.internal.getFontSize(), this.pdf.setFontSize(Q * t.scale)), this.pdf.text(t.text, e.x + this.posX, e.y + this.posY, {\n angle: t.angle,\n align: A,\n renderingMode: t.renderingMode,\n maxWidth: t.maxWidth\n }), .01 <= t.scale && this.pdf.setFontSize(Q);\n },\n F = function (t, A, e, n) {\n e = e || 0, n = n || 0, this.pdf.internal.out(r(t + e) + \" \" + i(A + n) + \" l\");\n },\n U = function (t, A, e) {\n return this.pdf.lines(t, A, e, null, null);\n },\n N = function (t, A, r, n, i, a, c, u) {\n this.pdf.internal.out([e(o(r + t)), e(s(n + A)), e(o(i + t)), e(s(a + A)), e(o(c + t)), e(s(u + A)), \"c\"].join(\" \"));\n },\n E = function (t, A, e, r) {\n var n = 2 * Math.PI,\n i = A;\n (i < n || n < i) && (i %= n);\n var o = e;\n (o < n || n < o) && (o %= n);\n for (var s = [], a = Math.PI / 2, c = r ? -1 : 1, u = A, l = Math.min(n, Math.abs(o - i)); 1e-5 < l;) {\n var h = u + c * Math.min(l, a);\n s.push(b.call(this, t, u, h)), l -= Math.abs(h - u), u = h;\n }\n return s;\n },\n b = function (t, A, e) {\n var r = (e - A) / 2,\n n = t * Math.cos(r),\n i = t * Math.sin(r),\n o = n,\n s = -i,\n a = o * o + s * s,\n c = a + o * n + s * i,\n u = 4 / 3 * (Math.sqrt(2 * a * c) - c) / (o * i - s * n),\n l = o - u * s,\n h = s + u * o,\n f = l,\n d = -h,\n p = r + A,\n B = Math.cos(p),\n g = Math.sin(p);\n return {\n x1: t * Math.cos(A),\n y1: t * Math.sin(A),\n x2: l * B - h * g,\n y2: l * g + h * B,\n x3: f * B - d * g,\n y3: f * g + d * B,\n x4: t * Math.cos(e),\n y4: t * Math.sin(e)\n };\n },\n L = function (t) {\n return 180 * t / Math.PI;\n },\n H = function (t) {\n return t * Math.PI / 180;\n },\n x = function (t, A, e, r, n, i) {\n var o = t + .5 * (e - t),\n s = A + .5 * (r - A),\n a = n + .5 * (e - n),\n c = i + .5 * (r - i),\n u = Math.min(t, n, o, a),\n l = Math.max(t, n, o, a),\n h = Math.min(A, i, s, c),\n f = Math.max(A, i, s, c);\n return new _(u, h, l - u, f - h);\n },\n S = function (t, A, e, r, n, i, o, s) {\n for (var a, c, u, l, h, f, d, p, B, g, w, m, Q, C = e - t, y = r - A, v = n - e, F = i - r, U = o - n, N = s - i, E = 0; E < 41; E++) p = (f = (c = t + (a = E / 40) * C) + a * ((l = e + a * v) - c)) + a * (l + a * (n + a * U - l) - f), B = (d = (u = A + a * y) + a * ((h = r + a * F) - u)) + a * (h + a * (i + a * N - h) - d), Q = 0 == E ? (m = g = p, w = B) : (g = Math.min(g, p), w = Math.min(w, B), m = Math.max(m, p), Math.max(Q, B));\n return new _(Math.round(g), Math.round(w), Math.round(m - g), Math.round(Q - w));\n },\n I = function (t, A) {\n var e = t || 0;\n Object.defineProperty(this, \"x\", {\n enumerable: !0,\n get: function () {\n return e;\n },\n set: function (t) {\n isNaN(t) || (e = parseFloat(t));\n }\n });\n var r = A || 0;\n Object.defineProperty(this, \"y\", {\n enumerable: !0,\n get: function () {\n return r;\n },\n set: function (t) {\n isNaN(t) || (r = parseFloat(t));\n }\n });\n var n = \"pt\";\n return Object.defineProperty(this, \"type\", {\n enumerable: !0,\n get: function () {\n return n;\n },\n set: function (t) {\n n = t.toString();\n }\n }), this;\n },\n _ = function (t, A, e, r) {\n I.call(this, t, A), this.type = \"rect\";\n var n = e || 0;\n Object.defineProperty(this, \"w\", {\n enumerable: !0,\n get: function () {\n return n;\n },\n set: function (t) {\n isNaN(t) || (n = parseFloat(t));\n }\n });\n var i = r || 0;\n return Object.defineProperty(this, \"h\", {\n enumerable: !0,\n get: function () {\n return i;\n },\n set: function (t) {\n isNaN(t) || (i = parseFloat(t));\n }\n }), this;\n },\n T = function (t, A, e, r, n, i) {\n var o = [];\n return Object.defineProperty(this, \"sx\", {\n get: function () {\n return o[0];\n },\n set: function (t) {\n o[0] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"shy\", {\n get: function () {\n return o[1];\n },\n set: function (t) {\n o[1] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"shx\", {\n get: function () {\n return o[2];\n },\n set: function (t) {\n o[2] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"sy\", {\n get: function () {\n return o[3];\n },\n set: function (t) {\n o[3] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"tx\", {\n get: function () {\n return o[4];\n },\n set: function (t) {\n o[4] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"ty\", {\n get: function () {\n return o[5];\n },\n set: function (t) {\n o[5] = Math.round(1e5 * t) / 1e5;\n }\n }), Object.defineProperty(this, \"rotation\", {\n get: function () {\n return Math.atan2(this.shx, this.sx);\n }\n }), Object.defineProperty(this, \"scaleX\", {\n get: function () {\n return this.decompose().scale.sx;\n }\n }), Object.defineProperty(this, \"scaleY\", {\n get: function () {\n return this.decompose().scale.sy;\n }\n }), Object.defineProperty(this, \"isIdentity\", {\n get: function () {\n return 1 === this.sx && 0 === this.shy && 0 === this.shx && 1 === this.sy && 0 === this.tx && 0 === this.ty;\n }\n }), this.sx = isNaN(t) ? 1 : t, this.shy = isNaN(A) ? 0 : A, this.shx = isNaN(e) ? 0 : e, this.sy = isNaN(r) ? 1 : r, this.tx = isNaN(n) ? 0 : n, this.ty = isNaN(i) ? 0 : i, this;\n };\n T.prototype.multiply = function (t) {\n var A = t.sx * this.sx + t.shy * this.shx,\n e = t.sx * this.shy + t.shy * this.sy,\n r = t.shx * this.sx + t.sy * this.shx,\n n = t.shx * this.shy + t.sy * this.sy,\n i = t.tx * this.sx + t.ty * this.shx + this.tx,\n o = t.tx * this.shy + t.ty * this.sy + this.ty;\n return new T(A, e, r, n, i, o);\n }, T.prototype.decompose = function () {\n var t = this.sx,\n A = this.shy,\n e = this.shx,\n r = this.sy,\n n = this.tx,\n i = this.ty,\n o = Math.sqrt(t * t + A * A),\n s = (t /= o) * e + (A /= o) * r;\n e -= t * s, r -= A * s;\n var a = Math.sqrt(e * e + r * r);\n return s /= a, t * (r /= a) < A * (e /= a) && (t = -t, A = -A, s = -s, o = -o), {\n scale: new T(o, 0, 0, a, 0, 0),\n translate: new T(1, 0, 0, 1, n, i),\n rotate: new T(t, A, -A, t, 0, 0),\n skew: new T(1, 0, s, 1, 0, 0)\n };\n }, T.prototype.applyToPoint = function (t) {\n var A = t.x * this.sx + t.y * this.shx + this.tx,\n e = t.x * this.shy + t.y * this.sy + this.ty;\n return new I(A, e);\n }, T.prototype.applyToRectangle = function (t) {\n var A = this.applyToPoint(t),\n e = this.applyToPoint(new I(t.x + t.w, t.y + t.h));\n return new _(A.x, A.y, e.x - A.x, e.y - A.y);\n }, T.prototype.clone = function () {\n var t = this.sx,\n A = this.shy,\n e = this.shx,\n r = this.sy,\n n = this.tx,\n i = this.ty;\n return new T(t, A, e, r, n, i);\n };\n }(dt.API, \"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")()), B = dt.API, g = function (t) {\n var A, e, r, n, i, o, s, a, c, u;\n for (/[^\\x00-\\xFF]/.test(t), e = [], r = 0, n = (t += A = \"\\0\\0\\0\\0\".slice(t.length % 4 || 4)).length; r < n; r += 4) 0 !== (i = (t.charCodeAt(r) << 24) + (t.charCodeAt(r + 1) << 16) + (t.charCodeAt(r + 2) << 8) + t.charCodeAt(r + 3)) ? (o = (i = ((i = ((i = ((i = (i - (u = i % 85)) / 85) - (c = i % 85)) / 85) - (a = i % 85)) / 85) - (s = i % 85)) / 85) % 85, e.push(o + 33, s + 33, a + 33, c + 33, u + 33)) : e.push(122);\n return function (t, e) {\n for (var r = A.length; 0 < r; r--) t.pop();\n }(e), String.fromCharCode.apply(String, e) + \"~>\";\n }, w = function (t) {\n var A,\n e,\n r,\n n,\n i,\n o = String,\n s = \"length\",\n a = \"charCodeAt\",\n c = \"slice\",\n u = \"replace\";\n for (t[c](-2), t = t[c](0, -2)[u](/\\s/g, \"\")[u](\"z\", \"!!!!!\"), r = [], n = 0, i = (t += A = \"uuuuu\"[c](t[s] % 5 || 5))[s]; n < i; n += 5) e = 52200625 * (t[a](n) - 33) + 614125 * (t[a](n + 1) - 33) + 7225 * (t[a](n + 2) - 33) + 85 * (t[a](n + 3) - 33) + (t[a](n + 4) - 33), r.push(255 & e >> 24, 255 & e >> 16, 255 & e >> 8, 255 & e);\n return function (t, e) {\n for (var r = A[s]; 0 < r; r--) t.pop();\n }(r), o.fromCharCode.apply(o, r);\n }, m = function (t) {\n for (var A = \"\", e = 0; e < t.length; e += 1) A += (\"0\" + t.charCodeAt(e).toString(16)).slice(-2);\n return A + \">\";\n }, Q = function (t) {\n var A = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n if (-1 !== (t = t.replace(/\\s/g, \"\")).indexOf(\">\") && (t = t.substr(0, t.indexOf(\">\"))), t.length % 2 && (t += \"0\"), !1 === A.test(t)) return \"\";\n for (var e = \"\", r = 0; r < t.length; r += 2) e += String.fromCharCode(\"0x\" + (t[r] + t[r + 1]));\n return e;\n }, C = function (t, A) {\n A = Object.assign({\n predictor: 1,\n colors: 1,\n bitsPerComponent: 8,\n columns: 1\n }, A);\n for (var e, r, n = [], i = t.length; i--;) n[i] = t.charCodeAt(i);\n return e = B.adler32cs.from(t), (r = new Deflater(6)).append(new Uint8Array(n)), t = r.flush(), (n = new Uint8Array(t.length + 6)).set(new Uint8Array([120, 156])), n.set(t, 2), n.set(new Uint8Array([255 & e, e >> 8 & 255, e >> 16 & 255, e >> 24 & 255]), t.length + 2), String.fromCharCode.apply(null, n);\n }, B.processDataByFilters = function (t, A) {\n var e = 0,\n r = t || \"\",\n n = [];\n for (\"string\" == typeof (A = A || []) && (A = [A]), e = 0; e < A.length; e += 1) switch (A[e]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n r = w(r), n.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n r = g(r), n.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n r = Q(r), n.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n r = m(r), n.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n r = C(r), n.push(\"/FlateDecode\");\n break;\n default:\n throw 'The filter: \"' + A[e] + '\" is not implemented';\n }\n return {\n data: r,\n reverseChain: n.reverse().join(\" \")\n };\n }, (y = dt.API).loadFile = function (t, A, e) {\n var r;\n A = A || !0, e = e || function () {};\n try {\n r = function (t, A, e) {\n var r = new XMLHttpRequest(),\n n = [],\n i = 0,\n o = function (t) {\n var A = t.length,\n e = String.fromCharCode;\n for (i = 0; i < A; i += 1) n.push(e(255 & t.charCodeAt(i)));\n return n.join(\"\");\n };\n if (r.open(\"GET\", t, !A), r.overrideMimeType(\"text/plain; charset=x-user-defined\"), !1 === A && (r.onload = function () {\n return o(this.responseText);\n }), r.send(null), 200 === r.status) return A ? o(r.responseText) : void 0;\n console.warn('Unable to load file \"' + t + '\"');\n }(t, A);\n } catch (t) {\n r = void 0;\n }\n return r;\n }, y.loadImageFile = y.loadFile, v = dt.API, F = \"undefined\" != typeof window && window || void 0 !== r && r, U = function (t) {\n var A = n(t);\n return \"undefined\" === A ? \"undefined\" : \"string\" === A || t instanceof String ? \"string\" : \"number\" === A || t instanceof Number ? \"number\" : \"function\" === A || t instanceof Function ? \"function\" : t && t.constructor === Array ? \"array\" : t && 1 === t.nodeType ? \"element\" : \"object\" === A ? \"object\" : \"unknown\";\n }, N = function (t, A) {\n var e = document.createElement(t);\n if (A.className && (e.className = A.className), A.innerHTML) {\n e.innerHTML = A.innerHTML;\n for (var r = e.getElementsByTagName(\"script\"), n = r.length; 0 < n--; null) r[n].parentNode.removeChild(r[n]);\n }\n for (var i in A.style) e.style[i] = A.style[i];\n return e;\n }, (((E = function t(A) {\n var e = Object.assign(t.convert(Promise.resolve()), JSON.parse(JSON.stringify(t.template))),\n r = t.convert(Promise.resolve(), e);\n return (r = r.setProgress(1, t, 1, [t])).set(A);\n }).prototype = Object.create(Promise.prototype)).constructor = E).convert = function (t, A) {\n return t.__proto__ = A || E.prototype, t;\n }, E.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: !0,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {}\n }\n }, E.prototype.from = function (t, A) {\n return this.then(function () {\n switch (A = A || function (t) {\n switch (U(t)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return \"canvas\" === t.nodeName.toLowerCase ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }(t)) {\n case \"string\":\n return this.set({\n src: N(\"div\", {\n innerHTML: t\n })\n });\n case \"element\":\n return this.set({\n src: t\n });\n case \"canvas\":\n return this.set({\n canvas: t\n });\n case \"img\":\n return this.set({\n img: t\n });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n }, E.prototype.to = function (t) {\n switch (t) {\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 }, E.prototype.toContainer = function () {\n return this.thenList([function () {\n return this.prop.src || this.error(\"Cannot duplicate - no source HTML.\");\n }, function () {\n return this.prop.pageSize || this.setPageSize();\n }]).then(function () {\n var t = {\n position: \"relative\",\n display: \"inline-block\",\n width: Math.max(this.prop.src.clientWidth, this.prop.src.scrollWidth, this.prop.src.offsetWidth) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: \"white\"\n },\n A = function t(A, e) {\n for (var r = 3 === A.nodeType ? document.createTextNode(A.nodeValue) : A.cloneNode(!1), n = A.firstChild; n; n = n.nextSibling) !0 !== e && 1 === n.nodeType && \"SCRIPT\" === n.nodeName || r.appendChild(t(n, e));\n return 1 === A.nodeType && (\"CANVAS\" === A.nodeName ? (r.width = A.width, r.height = A.height, r.getContext(\"2d\").drawImage(A, 0, 0)) : \"TEXTAREA\" !== A.nodeName && \"SELECT\" !== A.nodeName || (r.value = A.value), r.addEventListener(\"load\", function () {\n r.scrollTop = A.scrollTop, r.scrollLeft = A.scrollLeft;\n }, !0)), r;\n }(this.prop.src, this.opt.html2canvas.javascriptEnabled);\n \"BODY\" === A.tagName && (t.height = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight) + \"px\"), this.prop.overlay = N(\"div\", {\n className: \"html2pdf__overlay\",\n style: {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1e3,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n }\n }), this.prop.container = N(\"div\", {\n className: \"html2pdf__container\",\n style: t\n }), this.prop.container.appendChild(A), this.prop.container.firstChild.appendChild(N(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })), this.prop.container.style.float = \"none\", this.prop.overlay.appendChild(this.prop.container), document.body.appendChild(this.prop.overlay), this.prop.container.firstChild.style.position = \"relative\", this.prop.container.height = Math.max(this.prop.container.firstChild.clientHeight, this.prop.container.firstChild.scrollHeight, this.prop.container.firstChild.offsetHeight) + \"px\";\n });\n }, E.prototype.toCanvas = function () {\n var t = [function () {\n return document.body.contains(this.prop.container) || this.toContainer();\n }];\n return this.thenList(t).then(function () {\n var t = Object.assign({}, this.opt.html2canvas);\n if (delete t.onrendered, this.isHtml2CanvasLoaded()) return html2canvas(this.prop.container, t);\n }).then(function (t) {\n (this.opt.html2canvas.onrendered || function () {})(t), this.prop.canvas = t, document.body.removeChild(this.prop.overlay);\n });\n }, E.prototype.toContext2d = function () {\n var t = [function () {\n return document.body.contains(this.prop.container) || this.toContainer();\n }];\n return this.thenList(t).then(function () {\n var t = this.opt.jsPDF,\n A = Object.assign({\n async: !0,\n allowTaint: !0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15e3,\n logging: !0,\n proxy: null,\n removeContainer: !0,\n foreignObjectRendering: !1,\n useCORS: !1\n }, this.opt.html2canvas);\n if (delete A.onrendered, t.context2d.autoPaging = !0, t.context2d.posX = this.opt.x, t.context2d.posY = this.opt.y, A.windowHeight = A.windowHeight || 0, A.windowHeight = 0 == A.windowHeight ? Math.max(this.prop.container.clientHeight, this.prop.container.scrollHeight, this.prop.container.offsetHeight) : A.windowHeight, this.isHtml2CanvasLoaded()) return html2canvas(this.prop.container, A);\n }).then(function (t) {\n (this.opt.html2canvas.onrendered || function () {})(t), this.prop.canvas = t, document.body.removeChild(this.prop.overlay);\n });\n }, E.prototype.toImg = function () {\n return this.thenList([function () {\n return this.prop.canvas || this.toCanvas();\n }]).then(function () {\n var t = this.prop.canvas.toDataURL(\"image/\" + this.opt.image.type, this.opt.image.quality);\n this.prop.img = document.createElement(\"img\"), this.prop.img.src = t;\n });\n }, E.prototype.toPdf = function () {\n return this.thenList([function () {\n return this.toContext2d();\n }]).then(function () {\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n }, E.prototype.output = function (t, A, e) {\n return \"img\" === (e = e || \"pdf\").toLowerCase() || \"image\" === e.toLowerCase() ? this.outputImg(t, A) : this.outputPdf(t, A);\n }, E.prototype.outputPdf = function (t, A) {\n return this.thenList([function () {\n return this.prop.pdf || this.toPdf();\n }]).then(function () {\n return this.prop.pdf.output(t, A);\n });\n }, E.prototype.outputImg = function (t, A) {\n return this.thenList([function () {\n return this.prop.img || this.toImg();\n }]).then(function () {\n switch (t) {\n case void 0:\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 \"' + t + '\" is not supported.';\n }\n });\n }, E.prototype.isHtml2CanvasLoaded = function () {\n var t = void 0 !== F.html2canvas;\n return t || console.error(\"html2canvas not loaded.\"), t;\n }, E.prototype.save = function (t) {\n if (this.isHtml2CanvasLoaded()) return this.thenList([function () {\n return this.prop.pdf || this.toPdf();\n }]).set(t ? {\n filename: t\n } : null).then(function () {\n this.prop.pdf.save(this.opt.filename);\n });\n }, E.prototype.doCallback = function (t) {\n if (this.isHtml2CanvasLoaded()) return this.thenList([function () {\n return this.prop.pdf || this.toPdf();\n }]).then(function () {\n this.prop.callback(this.prop.pdf);\n });\n }, E.prototype.set = function (t) {\n if (\"object\" !== U(t)) return this;\n var A = Object.keys(t || {}).map(function (A) {\n if (A in E.template.prop) return function () {\n this.prop[A] = t[A];\n };\n switch (A) {\n case \"margin\":\n return this.setMargin.bind(this, t.margin);\n case \"jsPDF\":\n return function () {\n return this.opt.jsPDF = t.jsPDF, this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, t.pageSize);\n default:\n return function () {\n this.opt[A] = t[A];\n };\n }\n }, this);\n return this.then(function () {\n return this.thenList(A);\n });\n }, E.prototype.get = function (t, A) {\n return this.then(function () {\n var e = t in E.template.prop ? this.prop[t] : this.opt[t];\n return A ? A(e) : e;\n });\n }, E.prototype.setMargin = function (t) {\n return this.then(function () {\n switch (U(t)) {\n case \"number\":\n t = [t, t, t, t];\n case \"array\":\n if (2 === t.length && (t = [t[0], t[1], t[0], t[1]]), 4 === t.length) break;\n default:\n return this.error(\"Invalid margin array.\");\n }\n this.opt.margin = t;\n }).then(this.setPageSize);\n }, E.prototype.setPageSize = function (t) {\n function A(t, A) {\n return Math.floor(t * A / 72 * 96);\n }\n return this.then(function () {\n (t = t || dt.getPageSize(this.opt.jsPDF)).hasOwnProperty(\"inner\") || (t.inner = {\n width: t.width - this.opt.margin[1] - this.opt.margin[3],\n height: t.height - this.opt.margin[0] - this.opt.margin[2]\n }, t.inner.px = {\n width: A(t.inner.width, t.k),\n height: A(t.inner.height, t.k)\n }, t.inner.ratio = t.inner.height / t.inner.width), this.prop.pageSize = t;\n });\n }, E.prototype.setProgress = function (t, A, e, r) {\n return null != t && (this.progress.val = t), null != A && (this.progress.state = A), null != e && (this.progress.n = e), null != r && (this.progress.stack = r), this.progress.ratio = this.progress.val / this.progress.state, this;\n }, E.prototype.updateProgress = function (t, A, e, r) {\n return this.setProgress(t ? this.progress.val + t : null, A || null, e ? this.progress.n + e : null, r ? this.progress.stack.concat(r) : null);\n }, E.prototype.then = function (t, A) {\n var e = this;\n return this.thenCore(t, A, function (t, A) {\n return e.updateProgress(null, null, 1, [t]), Promise.prototype.then.call(this, function (A) {\n return e.updateProgress(null, t), A;\n }).then(t, A).then(function (t) {\n return e.updateProgress(1), t;\n });\n });\n }, E.prototype.thenCore = function (t, A, e) {\n e = e || Promise.prototype.then;\n var r = this;\n t && (t = t.bind(r)), A && (A = A.bind(r));\n var n = -1 !== Promise.toString().indexOf(\"[native code]\") && \"Promise\" === Promise.name ? r : E.convert(Object.assign({}, r), Promise.prototype),\n i = e.call(n, t, A);\n return E.convert(i, r.__proto__);\n }, E.prototype.thenExternal = function (t, A) {\n return Promise.prototype.then.call(this, t, A);\n }, E.prototype.thenList = function (t) {\n var A = this;\n return t.forEach(function (t) {\n A = A.thenCore(t);\n }), A;\n }, E.prototype.catch = function (t) {\n t && (t = t.bind(this));\n var A = Promise.prototype.catch.call(this, t);\n return E.convert(A, this);\n }, E.prototype.catchExternal = function (t) {\n return Promise.prototype.catch.call(this, t);\n }, E.prototype.error = function (t) {\n return this.then(function () {\n throw new Error(t);\n });\n }, E.prototype.using = E.prototype.set, E.prototype.saveAs = E.prototype.save, E.prototype.export = E.prototype.output, E.prototype.run = E.prototype.then, dt.getPageSize = function (t, A, e) {\n if (\"object\" === n(t)) {\n var r = t;\n t = r.orientation, A = r.unit || A, e = r.format || e;\n }\n A = A || \"mm\", e = e || \"a4\", t = (\"\" + (t || \"P\")).toLowerCase();\n var i = (\"\" + e).toLowerCase(),\n o = {\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 switch (A) {\n case \"pt\":\n var s = 1;\n break;\n case \"mm\":\n s = 72 / 25.4;\n break;\n case \"cm\":\n s = 72 / 2.54;\n break;\n case \"in\":\n s = 72;\n break;\n case \"px\":\n s = .75;\n break;\n case \"pc\":\n case \"em\":\n s = 12;\n break;\n case \"ex\":\n s = 6;\n break;\n default:\n throw \"Invalid unit: \" + A;\n }\n if (o.hasOwnProperty(i)) var a = o[i][1] / s,\n c = o[i][0] / s;else try {\n a = e[1], c = e[0];\n } catch (t) {\n throw new Error(\"Invalid format: \" + e);\n }\n if (\"p\" === t || \"portrait\" === t) {\n if (t = \"p\", a < c) {\n var u = c;\n c = a, a = u;\n }\n } else {\n if (\"l\" !== t && \"landscape\" !== t) throw \"Invalid orientation: \" + t;\n t = \"l\", c < a && (u = c, c = a, a = u);\n }\n return {\n width: c,\n height: a,\n unit: A,\n k: s\n };\n }, v.html = function (t, A) {\n (A = A || {}).callback = A.callback || function () {}, A.html2canvas = A.html2canvas || {}, A.html2canvas.canvas = A.html2canvas.canvas || this.canvas, A.jsPDF = A.jsPDF || this, A.jsPDF;\n var e = new E(A);\n return A.worker ? e : e.from(t).doCallback();\n }, dt.API.addJS = function (t) {\n return H = t, this.internal.events.subscribe(\"postPutResources\", function (t) {\n b = this.internal.newObject(), this.internal.out(\"<<\"), this.internal.out(\"/Names [(EmbeddedJS) \" + (b + 1) + \" 0 R]\"), this.internal.out(\">>\"), this.internal.out(\"endobj\"), L = this.internal.newObject(), this.internal.out(\"<<\"), this.internal.out(\"/S /JavaScript\"), this.internal.out(\"/JS (\" + H + \")\"), this.internal.out(\">>\"), this.internal.out(\"endobj\");\n }), this.internal.events.subscribe(\"putCatalog\", function () {\n void 0 !== b && void 0 !== L && this.internal.out(\"/Names <</JavaScript \" + b + \" 0 R>>\");\n }), this;\n },\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 (x = dt.API).events.push([\"postPutResources\", function () {\n var t = this,\n A = /^(\\d+) 0 obj$/;\n if (0 < this.outline.root.children.length) for (var e = t.outline.render().split(/\\r\\n/), r = 0; r < e.length; r++) {\n var n = e[r],\n i = A.exec(n);\n if (null != i) {\n var o = i[1];\n t.internal.newObjectDeferredBegin(o, !1);\n }\n t.internal.write(n);\n }\n if (this.outline.createNamedDestinations) {\n var s = this.internal.pages.length,\n a = [];\n for (r = 0; r < s; r++) {\n var c = t.internal.newObject();\n a.push(c);\n var u = t.internal.getPageInfo(r + 1);\n t.internal.write(\"<< /D[\" + u.objId + \" 0 R /XYZ null null null]>> endobj\");\n }\n var l = t.internal.newObject();\n for (t.internal.write(\"<< /Names [ \"), r = 0; r < a.length; r++) t.internal.write(\"(page_\" + (r + 1) + \")\" + a[r] + \" 0 R\");\n t.internal.write(\" ] >>\", \"endobj\"), t.internal.newObject(), t.internal.write(\"<< /Dests \" + l + \" 0 R\"), t.internal.write(\">>\", \"endobj\");\n }\n }]), x.events.push([\"putCatalog\", function () {\n 0 < this.outline.root.children.length && (this.internal.write(\"/Outlines\", this.outline.makeRef(this.outline.root)), this.outline.createNamedDestinations && this.internal.write(\"/Names \" + namesOid + \" 0 R\"));\n }]), x.events.push([\"initialized\", function () {\n var t = this;\n t.outline = {\n createNamedDestinations: !1,\n root: {\n children: []\n }\n }, t.outline.add = function (t, A, e) {\n var r = {\n title: A,\n options: e,\n children: []\n };\n return null == t && (t = this.root), t.children.push(r), r;\n }, t.outline.render = function () {\n return this.ctx = {}, this.ctx.val = \"\", this.ctx.pdf = t, this.genIds_r(this.root), this.renderRoot(this.root), this.renderItems(this.root), this.ctx.val;\n }, t.outline.genIds_r = function (A) {\n A.id = t.internal.newObjectDeferred();\n for (var e = 0; e < A.children.length; e++) this.genIds_r(A.children[e]);\n }, t.outline.renderRoot = function (t) {\n this.objStart(t), this.line(\"/Type /Outlines\"), 0 < t.children.length && (this.line(\"/First \" + this.makeRef(t.children[0])), this.line(\"/Last \" + this.makeRef(t.children[t.children.length - 1]))), this.line(\"/Count \" + this.count_r({\n count: 0\n }, t)), this.objEnd();\n }, t.outline.renderItems = function (A) {\n this.ctx.pdf.internal.getCoordinateString;\n for (var e = this.ctx.pdf.internal.getVerticalCoordinateString, r = 0; r < A.children.length; r++) {\n var n = A.children[r];\n this.objStart(n), this.line(\"/Title \" + this.makeString(n.title)), this.line(\"/Parent \" + this.makeRef(A)), 0 < r && this.line(\"/Prev \" + this.makeRef(A.children[r - 1])), r < A.children.length - 1 && this.line(\"/Next \" + this.makeRef(A.children[r + 1])), 0 < n.children.length && (this.line(\"/First \" + this.makeRef(n.children[0])), this.line(\"/Last \" + this.makeRef(n.children[n.children.length - 1])));\n var i = this.count = this.count_r({\n count: 0\n }, n);\n if (0 < i && this.line(\"/Count \" + i), n.options && n.options.pageNumber) {\n var o = t.internal.getPageInfo(n.options.pageNumber);\n this.line(\"/Dest [\" + o.objId + \" 0 R /XYZ 0 \" + e(0) + \" 0]\");\n }\n this.objEnd();\n }\n for (r = 0; r < A.children.length; r++) n = A.children[r], this.renderItems(n);\n }, t.outline.line = function (t) {\n this.ctx.val += t + \"\\r\\n\";\n }, t.outline.makeRef = function (t) {\n return t.id + \" 0 R\";\n }, t.outline.makeString = function (A) {\n return \"(\" + t.internal.pdfEscape(A) + \")\";\n }, t.outline.objStart = function (t) {\n this.ctx.val += \"\\r\\n\" + t.id + \" 0 obj\\r\\n<<\\r\\n\";\n }, t.outline.objEnd = function (t) {\n this.ctx.val += \">> \\r\\nendobj\\r\\n\";\n }, t.outline.count_r = function (t, A) {\n for (var e = 0; e < A.children.length; e++) t.count++, this.count_r(t, A.children[e]);\n return t.count;\n };\n }]),\n /**\n * @license\n * \n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * \n * ====================================================================\n */\n S = dt.API, I = function () {\n var t = \"function\" == typeof Deflater;\n if (!t) throw new Error(\"requires deflate.js for compression\");\n return t;\n }, _ = function (t, A, e, r) {\n var n = 5,\n i = P;\n switch (r) {\n case S.image_compression.FAST:\n n = 3, i = M;\n break;\n case S.image_compression.MEDIUM:\n n = 6, i = D;\n break;\n case S.image_compression.SLOW:\n n = 9, i = k;\n }\n t = O(t, A, e, i);\n var o = new Uint8Array(T(n)),\n s = R(t),\n a = new Deflater(n),\n c = a.append(t),\n u = a.flush(),\n l = o.length + c.length + u.length,\n h = new Uint8Array(l + 4);\n return h.set(o), h.set(c, o.length), h.set(u, o.length + c.length), h[l++] = s >>> 24 & 255, h[l++] = s >>> 16 & 255, h[l++] = s >>> 8 & 255, h[l++] = 255 & s, S.arrayBufferToBinaryString(h);\n }, T = function (t, A) {\n var e = Math.LOG2E * Math.log(32768) - 8 << 4 | 8,\n r = e << 8;\n return r |= Math.min(3, (A - 1 & 255) >> 1) << 6, r |= 0, [e, 255 & (r += 31 - r % 31)];\n }, R = function (t, A) {\n for (var e, r = 1, n = 0, i = t.length, o = 0; 0 < i;) {\n for (i -= e = A < i ? A : i; n += r += t[o++], --e;);\n r %= 65521, n %= 65521;\n }\n return (n << 16 | r) >>> 0;\n }, O = function (t, A, e, r) {\n for (var n, i, o, s = t.length / A, a = new Uint8Array(t.length + s), c = j(), u = 0; u < s; u++) {\n if (o = u * A, n = t.subarray(o, o + A), r) a.set(r(n, e, i), o + u);else {\n for (var l = 0, h = c.length, f = []; l < h; l++) f[l] = c[l](n, e, i);\n var d = q(f.concat());\n a.set(f[d], o + u);\n }\n i = n;\n }\n return a;\n }, K = function (t, A, e) {\n var r = Array.apply([], t);\n return r.unshift(0), r;\n }, M = function (t, A, e) {\n var r,\n n = [],\n i = 0,\n o = t.length;\n for (n[0] = 1; i < o; i++) r = t[i - A] || 0, n[i + 1] = t[i] - r + 256 & 255;\n return n;\n }, P = function (t, A, e) {\n var r,\n n = [],\n i = 0,\n o = t.length;\n for (n[0] = 2; i < o; i++) r = e && e[i] || 0, n[i + 1] = t[i] - r + 256 & 255;\n return n;\n }, D = function (t, A, e) {\n var r,\n n,\n i = [],\n o = 0,\n s = t.length;\n for (i[0] = 3; o < s; o++) r = t[o - A] || 0, n = e && e[o] || 0, i[o + 1] = t[o] + 256 - (r + n >>> 1) & 255;\n return i;\n }, k = function (t, A, e) {\n var r,\n n,\n i,\n o,\n s = [],\n a = 0,\n c = t.length;\n for (s[0] = 4; a < c; a++) r = t[a - A] || 0, n = e && e[a] || 0, i = e && e[a - A] || 0, o = z(r, n, i), s[a + 1] = t[a] - o + 256 & 255;\n return s;\n }, z = function (t, A, e) {\n var r = t + A - e,\n n = Math.abs(r - t),\n i = Math.abs(r - A),\n o = Math.abs(r - e);\n return n <= i && n <= o ? t : i <= o ? A : e;\n }, j = function () {\n return [K, M, P, D, k];\n }, q = function (t) {\n for (var A, e, r, n = 0, i = t.length; n < i;) ((A = V(t[n].slice(1))) < e || !e) && (e = A, r = n), n++;\n return r;\n }, V = function (t) {\n for (var A = 0, e = t.length, r = 0; A < e;) r += Math.abs(t[A++]);\n return r;\n }, S.processPNG = function (t, A, e, r, n) {\n var i,\n o,\n s,\n a,\n c,\n u,\n l = this.color_spaces.DEVICE_RGB,\n h = this.decode.FLATE_DECODE,\n f = 8;\n if (this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t)) {\n if (\"function\" != typeof PNG || \"function\" != typeof Rt) throw new Error(\"PNG support requires png.js and zlib.js\");\n if (t = (i = new PNG(t)).imgData, f = i.bits, l = i.colorSpace, a = i.colors, -1 !== [4, 6].indexOf(i.colorType)) {\n if (8 === i.bits) for (var d, p = (N = 32 == i.pixelBitlength ? new Uint32Array(i.decodePixels().buffer) : 16 == i.pixelBitlength ? new Uint16Array(i.decodePixels().buffer) : new Uint8Array(i.decodePixels().buffer)).length, B = new Uint8Array(p * i.colors), g = new Uint8Array(p), w = i.pixelBitlength - i.bits, m = 0, Q = 0; m < p; m++) {\n for (C = N[m], d = 0; d < w;) B[Q++] = C >>> d & 255, d += i.bits;\n g[m] = C >>> d & 255;\n }\n if (16 === i.bits) {\n p = (N = new Uint32Array(i.decodePixels().buffer)).length, B = new Uint8Array(p * (32 / i.pixelBitlength) * i.colors), g = new Uint8Array(p * (32 / i.pixelBitlength));\n for (var C, y = 1 < i.colors, v = Q = m = 0; m < p;) C = N[m++], B[Q++] = C >>> 0 & 255, y && (B[Q++] = C >>> 16 & 255, C = N[m++], B[Q++] = C >>> 0 & 255), g[v++] = C >>> 16 & 255;\n f = 8;\n }\n r !== S.image_compression.NONE && I() ? (t = _(B, i.width * i.colors, i.colors, r), u = _(g, i.width, 1, r)) : (t = B, u = g, h = null);\n }\n if (3 === i.colorType && (l = this.color_spaces.INDEXED, c = i.palette, i.transparency.indexed)) {\n var F = i.transparency.indexed,\n U = 0;\n for (m = 0, p = F.length; m < p; ++m) U += F[m];\n if ((U /= 255) == p - 1 && -1 !== F.indexOf(0)) s = [F.indexOf(0)];else if (U !== p) {\n var N = i.decodePixels();\n for (g = new Uint8Array(N.length), m = 0, p = N.length; m < p; m++) g[m] = F[N[m]];\n u = _(g, i.width, 1);\n }\n }\n var E = function (t) {\n var A;\n switch (t) {\n case S.image_compression.FAST:\n A = 11;\n break;\n case S.image_compression.MEDIUM:\n A = 13;\n break;\n case S.image_compression.SLOW:\n A = 14;\n break;\n default:\n A = 12;\n }\n return A;\n }(r);\n return o = h === this.decode.FLATE_DECODE ? \"/Predictor \" + E + \" /Colors \" + a + \" /BitsPerComponent \" + f + \" /Columns \" + i.width : \"/Colors \" + a + \" /BitsPerComponent \" + f + \" /Columns \" + i.width, (this.isArrayBuffer(t) || this.isArrayBufferView(t)) && (t = this.arrayBufferToBinaryString(t)), (u && this.isArrayBuffer(u) || this.isArrayBufferView(u)) && (u = this.arrayBufferToBinaryString(u)), this.createImageInfo(t, i.width, i.height, l, f, h, A, e, o, s, c, u, E);\n }\n throw new Error(\"Unsupported PNG image data, try using JPEG instead.\");\n },\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 (X = dt.API).processGIF89A = function (t, A, e, r, n) {\n var i = new xt(t),\n o = i.width,\n s = i.height,\n a = [];\n i.decodeAndBlitFrameRGBA(0, a);\n var c = {\n data: a,\n width: o,\n height: s\n },\n u = new It(100).encode(c, 100);\n return X.processJPEG.call(this, u, A, e, r);\n }, X.processGIF87A = X.processGIF89A, (G = dt.API).processBMP = function (t, A, e, r, n) {\n var i = new _t(t, !1),\n o = i.width,\n s = i.height,\n a = {\n data: i.getData(),\n width: o,\n height: s\n },\n c = new It(100).encode(a, 100);\n return G.processJPEG.call(this, c, A, e, r);\n }, dt.API.setLanguage = function (t) {\n return void 0 === this.internal.languageSettings && (this.internal.languageSettings = {}, this.internal.languageSettings.isSubscribed = !1), void 0 !== {\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: \"FYRO Macedonian\",\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 }[t] && (this.internal.languageSettings.languageCode = t, !1 === this.internal.languageSettings.isSubscribed && (this.internal.events.subscribe(\"putCatalog\", function () {\n this.internal.write(\"/Lang (\" + this.internal.languageSettings.languageCode + \")\");\n }), this.internal.languageSettings.isSubscribed = !0)), this;\n /** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * \n * ====================================================================\n */\n }, J = dt.API, W = J.getCharWidthsArray = function (t, A) {\n var e,\n r,\n n,\n i = (A = A || {}).font || this.internal.getFont(),\n o = A.fontSize || this.internal.getFontSize(),\n s = A.charSpace || this.internal.getCharSpace(),\n a = A.widths ? A.widths : i.metadata.Unicode.widths,\n c = a.fof ? a.fof : 1,\n u = A.kerning ? A.kerning : i.metadata.Unicode.kerning,\n l = u.fof ? u.fof : 1,\n h = 0,\n f = a[0] || c,\n d = [];\n for (e = 0, r = t.length; e < r; e++) n = t.charCodeAt(e), \"function\" == typeof i.metadata.widthOfString ? d.push((i.metadata.widthOfGlyph(i.metadata.characterToGlyph(n)) + s * (1e3 / o) || 0) / 1e3) : d.push((a[n] || f) / c + (u[n] && u[n][h] || 0) / l), h = n;\n return d;\n }, Y = J.getArraySum = function (t) {\n for (var A = t.length, e = 0; A;) e += t[--A];\n return e;\n }, Z = J.getStringUnitWidth = function (t, A) {\n var e = (A = A || {}).fontSize || this.internal.getFontSize(),\n r = A.font || this.internal.getFont(),\n n = A.charSpace || this.internal.getCharSpace();\n return \"function\" == typeof r.metadata.widthOfString ? r.metadata.widthOfString(t, e, n) / e : Y(W.apply(this, arguments));\n }, $ = function (t, A, e, r) {\n for (var n = [], i = 0, o = t.length, s = 0; i !== o && s + A[i] < e;) s += A[i], i++;\n n.push(t.slice(0, i));\n var a = i;\n for (s = 0; i !== o;) s + A[i] > r && (n.push(t.slice(a, i)), s = 0, a = i), s += A[i], i++;\n return a !== i && n.push(t.slice(a, i)), n;\n }, tt = function (t, A, e) {\n e || (e = {});\n var r,\n n,\n i,\n o,\n s,\n a,\n c = [],\n u = [c],\n l = e.textIndent || 0,\n h = 0,\n f = 0,\n d = t.split(\" \"),\n p = W.apply(this, [\" \", e])[0];\n if (a = -1 === e.lineIndent ? d[0].length + 2 : e.lineIndent || 0) {\n var B = Array(a).join(\" \"),\n g = [];\n d.map(function (t) {\n 1 < (t = t.split(/\\s*\\n/)).length ? g = g.concat(t.map(function (t, A) {\n return (A && t.length ? \"\\n\" : \"\") + t;\n })) : g.push(t[0]);\n }), d = g, a = Z.apply(this, [B, e]);\n }\n for (i = 0, o = d.length; i < o; i++) {\n var w = 0;\n if (r = d[i], a && \"\\n\" == r[0] && (r = r.substr(1), w = 1), n = W.apply(this, [r, e]), A < l + h + (f = Y(n)) || w) {\n if (A < f) {\n for (s = $.apply(this, [r, n, A - (l + h), A]), c.push(s.shift()), c = [s.pop()]; s.length;) u.push([s.shift()]);\n f = Y(n.slice(r.length - (c[0] ? c[0].length : 0)));\n } else c = [r];\n u.push(c), l = f + a, h = p;\n } else c.push(r), l += h + f, h = p;\n }\n if (a) var m = function (t, A) {\n return (A ? B : \"\") + t.join(\" \");\n };else m = function (t) {\n return t.join(\" \");\n };\n return u.map(m);\n }, J.splitTextToSize = function (t, A, e) {\n var r,\n n = (e = e || {}).fontSize || this.internal.getFontSize(),\n i = function (t) {\n if (t.widths && t.kerning) return {\n widths: t.widths,\n kerning: t.kerning\n };\n var A = this.internal.getFont(t.fontName, t.fontStyle),\n e = \"Unicode\";\n return A.metadata[e] ? {\n widths: A.metadata[e].widths || {\n 0: 1\n },\n kerning: A.metadata[e].kerning || {}\n } : {\n font: A.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }.call(this, e);\n r = Array.isArray(t) ? t : t.split(/\\r?\\n/);\n var o = 1 * this.internal.scaleFactor * A / n;\n i.textIndent = e.textIndent ? 1 * e.textIndent * this.internal.scaleFactor / n : 0, i.lineIndent = e.lineIndent;\n var s,\n a,\n c = [];\n for (s = 0, a = r.length; s < a; s++) c = c.concat(tt.apply(this, [r[s], o, i]));\n return c;\n },\n /** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com\n * MIT license.\n * \n * ====================================================================\n */\n At = dt.API, rt = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: (et = function (t) {\n for (var A = \"klmnopqrstuvwxyz\", e = {}, r = 0; r < A.length; r++) e[A[r]] = \"0123456789abcdef\"[r];\n var n,\n i,\n o,\n s,\n a,\n c = {},\n u = 1,\n l = c,\n h = [],\n f = \"\",\n d = \"\",\n p = t.length - 1;\n for (r = 1; r != p;) a = t[r], r += 1, \"'\" == a ? i = i ? (s = i.join(\"\"), n) : [] : i ? i.push(a) : \"{\" == a ? (h.push([l, s]), l = {}, s = n) : \"}\" == a ? ((o = h.pop())[0][o[1]] = l, s = n, l = o[0]) : \"-\" == a ? u = -1 : s === n ? e.hasOwnProperty(a) ? (f += e[a], s = parseInt(f, 16) * u, u = 1, f = \"\") : f += a : e.hasOwnProperty(a) ? (d += e[a], l[s] = parseInt(d, 16) * u, u = 1, s = n, d = \"\") : d += a;\n return c;\n })(\"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\")\n }, nt = {\n Unicode: {\n Courier: rt,\n \"Courier-Bold\": rt,\n \"Courier-BoldOblique\": rt,\n \"Courier-Oblique\": rt,\n Helvetica: rt,\n \"Helvetica-Bold\": rt,\n \"Helvetica-BoldOblique\": rt,\n \"Helvetica-Oblique\": rt,\n \"Times-Roman\": rt,\n \"Times-Bold\": rt,\n \"Times-BoldItalic\": rt,\n \"Times-Italic\": rt\n }\n }, it = {\n Unicode: {\n \"Courier-Oblique\": et(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-BoldItalic\": et(\"{'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 \"Helvetica-Bold\": et(\"{'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 Courier: et(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": et(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Bold\": et(\"{'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 Symbol: et(\"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"),\n Helvetica: et(\"{'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 \"Helvetica-BoldOblique\": et(\"{'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 ZapfDingbats: et(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": et(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": et(\"{'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 \"Times-Roman\": et(\"{'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 \"Helvetica-Oblique\": et(\"{'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 }, At.events.push([\"addFont\", function (t) {\n var A,\n e,\n r,\n n = t.font,\n i = \"Unicode\";\n (A = it[i][n.postScriptName]) && ((e = n.metadata[i] ? n.metadata[i] : n.metadata[i] = {}).widths = A.widths, e.kerning = A.kerning), (r = nt[i][n.postScriptName]) && ((e = n.metadata[i] ? n.metadata[i] : n.metadata[i] = {}).encoding = r).codePages && r.codePages.length && (n.encoding = r.codePages[0]);\n }]),\n /**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n ot = dt, \"undefined\" != typeof self && self || void 0 !== r && r || \"undefined\" != typeof window && window || Function(\"return this\")(), ot.API.events.push([\"addFont\", function (t) {\n var A = t.font,\n e = t.instance;\n if (void 0 !== e && e.existsFileInVFS(A.postScriptName)) {\n var r = e.getFileFromVFS(A.postScriptName);\n if (\"string\" != typeof r) throw new Error(\"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" + A.postScriptName + \"').\");\n A.metadata = ot.API.TTFFont.open(A.postScriptName, A.fontName, r, A.encoding), A.metadata.Unicode = A.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n }, A.metadata.glyIdsUsed = [0];\n } else if (!1 === A.isStandardFont) throw new Error(\"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" + A.postScriptName + \"').\");\n }]),\n /** @license\n * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com\n * \n * \n * ====================================================================\n */\n (st = dt.API).addSvg = function (t, A, e, r, n) {\n if (void 0 === A || void 0 === e) throw new Error(\"addSVG needs values for 'x' and 'y'\");\n function i(t) {\n for (var A = parseFloat(t[1]), e = parseFloat(t[2]), r = [], n = 3, i = t.length; n < i;) \"c\" === t[n] ? (r.push([parseFloat(t[n + 1]), parseFloat(t[n + 2]), parseFloat(t[n + 3]), parseFloat(t[n + 4]), parseFloat(t[n + 5]), parseFloat(t[n + 6])]), n += 7) : \"l\" === t[n] ? (r.push([parseFloat(t[n + 1]), parseFloat(t[n + 2])]), n += 3) : n += 1;\n return [A, e, r];\n }\n var o,\n s,\n a,\n c,\n u,\n l,\n h,\n f,\n d = (o = t, (a = ((f = (c = document).createElement(\"iframe\"), u = \".jsPDF_sillysvg_iframe {display:none;position:absolute;}\", (h = (l = c).createElement(\"style\")).type = \"text/css\", h.styleSheet ? h.styleSheet.cssText = u : h.appendChild(l.createTextNode(u)), l.getElementsByTagName(\"head\")[0].appendChild(h), f.name = \"childframe\", f.setAttribute(\"width\", 0), f.setAttribute(\"height\", 0), f.setAttribute(\"frameborder\", \"0\"), f.setAttribute(\"scrolling\", \"no\"), f.setAttribute(\"seamless\", \"seamless\"), f.setAttribute(\"class\", \"jsPDF_sillysvg_iframe\"), c.body.appendChild(f), s = f).contentWindow || s.contentDocument).document).write(o), a.close(), a.getElementsByTagName(\"svg\")[0]),\n p = [1, 1],\n B = parseFloat(d.getAttribute(\"width\")),\n g = parseFloat(d.getAttribute(\"height\"));\n B && g && (r && n ? p = [r / B, n / g] : r ? p = [r / B, r / B] : n && (p = [n / g, n / g]));\n var w,\n m,\n Q,\n C,\n y = d.childNodes;\n for (w = 0, m = y.length; w < m; w++) (Q = y[w]).tagName && \"PATH\" === Q.tagName.toUpperCase() && ((C = i(Q.getAttribute(\"d\").split(\" \")))[0] = C[0] * p[0] + A, C[1] = C[1] * p[1] + e, this.lines.call(this, C[2], C[0], C[1], p));\n return this;\n }, st.addSVG = st.addSvg, st.addSvgAsImage = function (t, A, e, r, n, i, o, s) {\n if (isNaN(A) || isNaN(e)) throw console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments), new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n if (isNaN(r) || isNaN(n)) throw console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments), new Error(\"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\");\n var a = document.createElement(\"canvas\");\n a.width = r, a.height = n;\n var c = a.getContext(\"2d\");\n return c.fillStyle = \"#fff\", c.fillRect(0, 0, a.width, a.height), canvg(a, t, {\n ignoreMouse: !0,\n ignoreAnimation: !0,\n ignoreDimensions: !0,\n ignoreClear: !0\n }), this.addImage(a.toDataURL(\"image/jpeg\", 1), A, e, r, n, o, s), this;\n }, dt.API.putTotalPages = function (t) {\n var A, e;\n e = parseInt(this.internal.getFont().id.substr(1), 10) < 15 ? (A = new RegExp(t, \"g\"), this.internal.getNumberOfPages()) : (A = new RegExp(this.pdfEscape16(t, this.internal.getFont()), \"g\"), this.pdfEscape16(this.internal.getNumberOfPages() + \"\", this.internal.getFont()));\n for (var r = 1; r <= this.internal.getNumberOfPages(); r++) for (var n = 0; n < this.internal.pages[r].length; n++) this.internal.pages[r][n] = this.internal.pages[r][n].replace(A, e);\n return this;\n }, dt.API.viewerPreferences = function (t, A) {\n var e;\n t = t || {}, A = A || !1;\n var r,\n i,\n o = {\n HideToolbar: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: !1,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: !1,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: !1,\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: !1,\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: !1,\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: !1,\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: !1,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: !1,\n valueSet: [\"Simplex\", \"DuplexFlipShortEdge\", \"DuplexFlipLongEdge\", \"none\"],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: !1,\n value: !1,\n type: \"boolean\",\n explicitSet: !1,\n valueSet: [!0, !1],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: !1,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: !1,\n valueSet: null,\n pdfVersion: 1.7\n }\n },\n s = Object.keys(o),\n a = [],\n c = 0,\n u = 0,\n l = 0,\n h = !0;\n function f(t, A) {\n var e,\n r = !1;\n for (e = 0; e < t.length; e += 1) t[e] === A && (r = !0);\n return r;\n }\n if (void 0 === this.internal.viewerpreferences && (this.internal.viewerpreferences = {}, this.internal.viewerpreferences.configuration = JSON.parse(JSON.stringify(o)), this.internal.viewerpreferences.isSubscribed = !1), e = this.internal.viewerpreferences.configuration, \"reset\" === t || !0 === A) {\n var d = s.length;\n for (l = 0; l < d; l += 1) e[s[l]].value = e[s[l]].defaultValue, e[s[l]].explicitSet = !1;\n }\n if (\"object\" === n(t)) for (r in t) if (i = t[r], f(s, r) && void 0 !== i) {\n if (\"boolean\" === e[r].type && \"boolean\" == typeof i) e[r].value = i;else if (\"name\" === e[r].type && f(e[r].valueSet, i)) e[r].value = i;else if (\"integer\" === e[r].type && Number.isInteger(i)) e[r].value = i;else if (\"array\" === e[r].type) {\n for (c = 0; c < i.length; c += 1) if (h = !0, 1 === i[c].length && \"number\" == typeof i[c][0]) a.push(String(i[c] - 1));else if (1 < i[c].length) {\n for (u = 0; u < i[c].length; u += 1) \"number\" != typeof i[c][u] && (h = !1);\n !0 === h && a.push([i[c][0] - 1, i[c][1] - 1].join(\" \"));\n }\n e[r].value = \"[\" + a.join(\" \") + \"]\";\n } else e[r].value = e[r].defaultValue;\n e[r].explicitSet = !0;\n }\n return !1 === this.internal.viewerpreferences.isSubscribed && (this.internal.events.subscribe(\"putCatalog\", function () {\n var t,\n A = [];\n for (t in e) !0 === e[t].explicitSet && (\"name\" === e[t].type ? A.push(\"/\" + t + \" /\" + e[t].value) : A.push(\"/\" + t + \" \" + e[t].value));\n 0 !== A.length && this.internal.write(\"/ViewerPreferences\\n<<\\n\" + A.join(\"\\n\") + \"\\n>>\");\n }), this.internal.viewerpreferences.isSubscribed = !0), this.internal.viewerpreferences.configuration = e, this;\n }, at = dt.API, lt = ut = ct = \"\", at.addMetadata = function (t, A) {\n return ut = A || \"http://jspdf.default.namespaceuri/\", ct = t, this.internal.events.subscribe(\"postPutResources\", function () {\n if (ct) {\n var t = '<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"><rdf:Description rdf:about=\"\" xmlns:jspdf=\"' + ut + '\"><jspdf:metadata>',\n A = unescape(encodeURIComponent('<x:xmpmeta xmlns:x=\"adobe:ns:meta/\">')),\n e = unescape(encodeURIComponent(t)),\n r = unescape(encodeURIComponent(ct)),\n n = unescape(encodeURIComponent(\"</jspdf:metadata></rdf:Description></rdf:RDF>\")),\n i = unescape(encodeURIComponent(\"</x:xmpmeta>\")),\n o = e.length + r.length + n.length + A.length + i.length;\n lt = this.internal.newObject(), this.internal.write(\"<< /Type /Metadata /Subtype /XML /Length \" + o + \" >>\"), this.internal.write(\"stream\"), this.internal.write(A + e + r + n + i), this.internal.write(\"endstream\"), this.internal.write(\"endobj\");\n } else lt = \"\";\n }), this.internal.events.subscribe(\"putCatalog\", function () {\n lt && this.internal.write(\"/Metadata \" + lt + \" 0 R\");\n }), this;\n }, function (t, A) {\n var e = t.API,\n r = e.pdfEscape16 = function (t, A) {\n for (var e, r = A.metadata.Unicode.widths, n = [\"\", \"0\", \"00\", \"000\", \"0000\"], i = [\"\"], o = 0, s = t.length; o < s; ++o) {\n if (e = A.metadata.characterToGlyph(t.charCodeAt(o)), A.metadata.glyIdsUsed.push(e), A.metadata.toUnicode[e] = t.charCodeAt(o), -1 == r.indexOf(e) && (r.push(e), r.push([parseInt(A.metadata.widthOfGlyph(e), 10)])), \"0\" == e) return i.join(\"\");\n e = e.toString(16), i.push(n[4 - e.length], e);\n }\n return i.join(\"\");\n },\n n = function (t) {\n var A, e, r, n, i, o, s;\n for (i = \"/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><ffff>\\nendcodespacerange\", r = [], o = 0, s = (e = Object.keys(t).sort(function (t, A) {\n return t - A;\n })).length; o < s; o++) A = e[o], 100 <= r.length && (i += \"\\n\" + r.length + \" beginbfchar\\n\" + r.join(\"\\n\") + \"\\nendbfchar\", r = []), n = (\"0000\" + t[A].toString(16)).slice(-4), A = (\"0000\" + (+A).toString(16)).slice(-4), r.push(\"<\" + A + \"><\" + n + \">\");\n return r.length && (i += \"\\n\" + r.length + \" beginbfchar\\n\" + r.join(\"\\n\") + \"\\nendbfchar\\n\"), i + \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n };\n e.events.push([\"putFont\", function (A) {\n !function (A, e, r, i) {\n if (A.metadata instanceof t.API.TTFFont && \"Identity-H\" === A.encoding) {\n for (var o = A.metadata.Unicode.widths, s = A.metadata.subset.encode(A.metadata.glyIdsUsed, 1), a = \"\", c = 0; c < s.length; c++) a += String.fromCharCode(s[c]);\n var u = r();\n i({\n data: a,\n addLength1: !0\n }), e(\"endobj\");\n var l = r();\n i({\n data: n(A.metadata.toUnicode),\n addLength1: !0\n }), e(\"endobj\");\n var h = r();\n e(\"<<\"), e(\"/Type /FontDescriptor\"), e(\"/FontName /\" + A.fontName), e(\"/FontFile2 \" + u + \" 0 R\"), e(\"/FontBBox \" + t.API.PDFObject.convert(A.metadata.bbox)), e(\"/Flags \" + A.metadata.flags), e(\"/StemV \" + A.metadata.stemV), e(\"/ItalicAngle \" + A.metadata.italicAngle), e(\"/Ascent \" + A.metadata.ascender), e(\"/Descent \" + A.metadata.decender), e(\"/CapHeight \" + A.metadata.capHeight), e(\">>\"), e(\"endobj\");\n var f = r();\n e(\"<<\"), e(\"/Type /Font\"), e(\"/BaseFont /\" + A.fontName), e(\"/FontDescriptor \" + h + \" 0 R\"), e(\"/W \" + t.API.PDFObject.convert(o)), e(\"/CIDToGIDMap /Identity\"), e(\"/DW 1000\"), e(\"/Subtype /CIDFontType2\"), e(\"/CIDSystemInfo\"), e(\"<<\"), e(\"/Supplement 0\"), e(\"/Registry (Adobe)\"), e(\"/Ordering (\" + A.encoding + \")\"), e(\">>\"), e(\">>\"), e(\"endobj\"), A.objectNumber = r(), e(\"<<\"), e(\"/Type /Font\"), e(\"/Subtype /Type0\"), e(\"/ToUnicode \" + l + \" 0 R\"), e(\"/BaseFont /\" + A.fontName), e(\"/Encoding /\" + A.encoding), e(\"/DescendantFonts [\" + f + \" 0 R]\"), e(\">>\"), e(\"endobj\"), A.isAlreadyPutted = !0;\n }\n }(A.font, A.out, A.newObject, A.putStream);\n }]), e.events.push([\"putFont\", function (A) {\n !function (A, e, r, i) {\n if (A.metadata instanceof t.API.TTFFont && \"WinAnsiEncoding\" === A.encoding) {\n A.metadata.Unicode.widths;\n for (var o = A.metadata.rawData, s = \"\", a = 0; a < o.length; a++) s += String.fromCharCode(o[a]);\n var c = r();\n i({\n data: s,\n addLength1: !0\n }), e(\"endobj\");\n var u = r();\n i({\n data: n(A.metadata.toUnicode),\n addLength1: !0\n }), e(\"endobj\");\n var l = r();\n for (e(\"<<\"), e(\"/Descent \" + A.metadata.decender), e(\"/CapHeight \" + A.metadata.capHeight), e(\"/StemV \" + A.metadata.stemV), e(\"/Type /FontDescriptor\"), e(\"/FontFile2 \" + c + \" 0 R\"), e(\"/Flags 96\"), e(\"/FontBBox \" + t.API.PDFObject.convert(A.metadata.bbox)), e(\"/FontName /\" + A.fontName), e(\"/ItalicAngle \" + A.metadata.italicAngle), e(\"/Ascent \" + A.metadata.ascender), e(\">>\"), e(\"endobj\"), A.objectNumber = r(), a = 0; a < A.metadata.hmtx.widths.length; a++) A.metadata.hmtx.widths[a] = parseInt(A.metadata.hmtx.widths[a] * (1e3 / A.metadata.head.unitsPerEm));\n e(\"<</Subtype/TrueType/Type/Font/ToUnicode \" + u + \" 0 R/BaseFont/\" + A.fontName + \"/FontDescriptor \" + l + \" 0 R/Encoding/\" + A.encoding + \" /FirstChar 29 /LastChar 255 /Widths \" + t.API.PDFObject.convert(A.metadata.hmtx.widths) + \">>\"), e(\"endobj\"), A.isAlreadyPutted = !0;\n }\n }(A.font, A.out, A.newObject, A.putStream);\n }]);\n var i = function (t) {\n var A,\n e,\n n = t.text || \"\",\n i = t.x,\n o = t.y,\n s = t.options || {},\n a = t.mutex || {},\n c = a.pdfEscape,\n u = a.activeFontKey,\n l = a.fonts,\n h = (a.activeFontSize, \"\"),\n f = 0,\n d = \"\",\n p = l[e = u].encoding;\n if (\"Identity-H\" !== l[e].encoding) return {\n text: n,\n x: i,\n y: o,\n options: s,\n mutex: a\n };\n for (d = n, e = u, \"[object Array]\" === Object.prototype.toString.call(n) && (d = n[0]), f = 0; f < d.length; f += 1) l[e].metadata.hasOwnProperty(\"cmap\") && (A = l[e].metadata.cmap.unicode.codeMap[d[f].charCodeAt(0)]), A || d[f].charCodeAt(0) < 256 && l[e].metadata.hasOwnProperty(\"Unicode\") ? h += d[f] : h += \"\";\n var B = \"\";\n return parseInt(e.slice(1)) < 14 || \"WinAnsiEncoding\" === p ? B = function (t) {\n for (var A = \"\", e = 0; e < t.length; e++) A += \"\" + t.charCodeAt(e).toString(16);\n return A;\n }(c(h, e)) : \"Identity-H\" === p && (B = r(h, l[e])), a.isHex = !0, {\n text: B,\n x: i,\n y: o,\n options: s,\n mutex: a\n };\n };\n e.events.push([\"postProcessText\", function (t) {\n var A = t.text || \"\",\n e = t.x,\n r = t.y,\n n = t.options,\n o = t.mutex,\n s = (n.lang, []),\n a = {\n text: A,\n x: e,\n y: r,\n options: n,\n mutex: o\n };\n if (\"[object Array]\" === Object.prototype.toString.call(A)) {\n var c = 0;\n for (c = 0; c < A.length; c += 1) \"[object Array]\" === Object.prototype.toString.call(A[c]) && 3 === A[c].length ? s.push([i(Object.assign({}, a, {\n text: A[c][0]\n })).text, A[c][1], A[c][2]]) : s.push(i(Object.assign({}, a, {\n text: A[c]\n })).text);\n t.text = s;\n } else t.text = i(Object.assign({}, a, {\n text: A\n })).text;\n }]);\n }(dt, \"undefined\" != typeof self && self || void 0 !== r && r || \"undefined\" != typeof window && window || Function(\"return this\")()), ht = dt.API, ft = function (t) {\n return void 0 !== t && (void 0 === t.vFS && (t.vFS = {}), !0);\n }, ht.existsFileInVFS = function (t) {\n return !!ft(this.internal) && void 0 !== this.internal.vFS[t];\n }, ht.addFileToVFS = function (t, A) {\n return ft(this.internal), this.internal.vFS[t] = A, this;\n }, ht.getFileFromVFS = function (t) {\n return ft(this.internal), void 0 !== this.internal.vFS[t] ? this.internal.vFS[t] : null;\n }, dt.API.addHTML = function (t, A, e, r, n) {\n if (\"undefined\" == typeof html2canvas && \"undefined\" == typeof rasterizeHTML) throw new Error(\"You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js\");\n \"number\" != typeof A && (r = A, n = e), \"function\" == typeof r && (n = r, r = null), \"function\" != typeof n && (n = function () {});\n var i = this.internal,\n o = i.scaleFactor,\n s = i.pageSize.getWidth(),\n a = i.pageSize.getHeight();\n if ((r = r || {}).onrendered = function (t) {\n A = parseInt(A) || 0, e = parseInt(e) || 0;\n var i = r.dim || {},\n c = Object.assign({\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n useFor: \"content\"\n }, r.margin),\n u = i.h || Math.min(a, t.height / o),\n l = i.w || Math.min(s, t.width / o) - A,\n h = r.format || \"JPEG\",\n f = r.imageCompression || \"SLOW\";\n if (t.height > a - c.top - c.bottom && r.pagesplit) {\n var d = function (t, A, e, n, i) {\n var o = document.createElement(\"canvas\");\n o.height = i, o.width = n;\n var s = o.getContext(\"2d\");\n return s.mozImageSmoothingEnabled = !1, s.webkitImageSmoothingEnabled = !1, s.msImageSmoothingEnabled = !1, s.imageSmoothingEnabled = !1, s.fillStyle = r.backgroundColor || \"#ffffff\", s.fillRect(0, 0, n, i), s.drawImage(t, A, e, n, i, 0, 0, n, i), o;\n },\n p = function () {\n for (var r, i, u = 0, p = 0, B = {}, g = !1;;) {\n var w;\n if (p = 0, B.top = 0 !== u ? c.top : e, B.left = 0 !== u ? c.left : A, g = (s - c.left - c.right) * o < t.width, \"content\" === c.useFor ? 0 === u ? (r = Math.min((s - c.left) * o, t.width), i = Math.min((a - c.top) * o, t.height - u)) : (r = Math.min(s * o, t.width), i = Math.min(a * o, t.height - u), B.top = 0) : (r = Math.min((s - c.left - c.right) * o, t.width), i = Math.min((a - c.bottom - c.top) * o, t.height - u)), g) for (;;) {\n \"content\" === c.useFor && (0 === p ? r = Math.min((s - c.left) * o, t.width) : (r = Math.min(s * o, t.width - p), B.left = 0));\n var m = [w = d(t, p, u, r, i), B.left, B.top, w.width / o, w.height / o, h, null, f];\n if (this.addImage.apply(this, m), (p += r) >= t.width) break;\n this.addPage();\n } else m = [w = d(t, 0, u, r, i), B.left, B.top, w.width / o, w.height / o, h, null, f], this.addImage.apply(this, m);\n if ((u += i) >= t.height) break;\n this.addPage();\n }\n n(l, u, null, m);\n }.bind(this);\n if (\"CANVAS\" === t.nodeName) {\n var B = new Image();\n B.onload = p, B.src = t.toDataURL(\"image/png\"), t = B;\n } else p();\n } else {\n var g = Math.random().toString(35),\n w = [t, A, e, l, u, h, g, f];\n this.addImage.apply(this, w), n(l, u, g, w);\n }\n }.bind(this), \"undefined\" != typeof html2canvas && !r.rstz) return html2canvas(t, r);\n if (\"undefined\" == typeof rasterizeHTML) return null;\n var c = \"drawDocument\";\n return \"string\" == typeof t && (c = /^http/.test(t) ? \"drawURL\" : \"drawHTML\"), r.width = r.width || s * o, rasterizeHTML[c](t, void 0, r).then(function (t) {\n r.onrendered(t.image);\n }, function (t) {\n n(null, t);\n });\n /**\n * jsPDF fromHTML plugin. BETA stage. API subject to change. Needs browser\n * Copyright (c) 2012 Willow Systems Corporation, willow-systems.com\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 Daniel Husar, https://github.com/danielhusar\n * 2014 Wolfgang Gassler, https://github.com/woolfg\n * 2014 Steven Spungin, https://github.com/flamenco\n *\n * @license\n * \n * ====================================================================\n */\n }, function (t) {\n var A, e, r, i, o, s, a, c, u, l, h, f, d, p, B, g, w, m, Q, C;\n A = function () {\n return function (A) {\n return t.prototype = A, new t();\n };\n function t() {}\n }(), l = function (t) {\n var A, e, r, n, i, o, s;\n for (e = 0, r = t.length, A = void 0, o = n = !1; !n && e !== r;) (A = t[e] = t[e].trimLeft()) && (n = !0), e++;\n for (e = r - 1; r && !o && -1 !== e;) (A = t[e] = t[e].trimRight()) && (o = !0), e--;\n for (i = /\\s+$/g, s = !0, e = 0; e !== r;) \"\\u2028\" != t[e] && (A = t[e].replace(/\\s+/g, \" \"), s && (A = A.trimLeft()), A && (s = i.test(A)), t[e] = A), e++;\n return t;\n }, f = function (t) {\n var A, e, n;\n for (A = void 0, e = (n = t.split(\",\")).shift(); !A && e;) A = r[e.trim().toLowerCase()], e = n.shift();\n return A;\n }, d = function (t) {\n var A;\n return -1 < (t = \"auto\" === t ? \"0px\" : t).indexOf(\"em\") && !isNaN(Number(t.replace(\"em\", \"\"))) && (t = 18.719 * Number(t.replace(\"em\", \"\")) + \"px\"), -1 < t.indexOf(\"pt\") && !isNaN(Number(t.replace(\"pt\", \"\"))) && (t = 1.333 * Number(t.replace(\"pt\", \"\")) + \"px\"), (A = p[t]) ? A : void 0 !== (A = {\n \"xx-small\": 9,\n \"x-small\": 11,\n small: 13,\n medium: 16,\n large: 19,\n \"x-large\": 23,\n \"xx-large\": 28,\n auto: 0\n }[t]) || (A = parseFloat(t)) ? p[t] = A / 16 : (A = t.match(/([\\d\\.]+)(px)/), Array.isArray(A) && 3 === A.length ? p[t] = parseFloat(A[1]) / 16 : p[t] = 1);\n }, u = function (t) {\n var A, e, r, n, u;\n return u = t, n = document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(u, null) : u.currentStyle ? u.currentStyle : u.style, e = void 0, (A = {})[\"font-family\"] = f((r = function (t) {\n return t = t.replace(/-\\D/g, function (t) {\n return t.charAt(1).toUpperCase();\n }), n[t];\n })(\"font-family\")) || \"times\", A[\"font-style\"] = i[r(\"font-style\")] || \"normal\", A[\"text-align\"] = o[r(\"text-align\")] || \"left\", \"bold\" === (e = s[r(\"font-weight\")] || \"normal\") && (\"normal\" === A[\"font-style\"] ? A[\"font-style\"] = e : A[\"font-style\"] = e + A[\"font-style\"]), A[\"font-size\"] = d(r(\"font-size\")) || 1, A[\"line-height\"] = d(r(\"line-height\")) || 1, A.display = \"inline\" === r(\"display\") ? \"inline\" : \"block\", e = \"block\" === A.display, A[\"margin-top\"] = e && d(r(\"margin-top\")) || 0, A[\"margin-bottom\"] = e && d(r(\"margin-bottom\")) || 0, A[\"padding-top\"] = e && d(r(\"padding-top\")) || 0, A[\"padding-bottom\"] = e && d(r(\"padding-bottom\")) || 0, A[\"margin-left\"] = e && d(r(\"margin-left\")) || 0, A[\"margin-right\"] = e && d(r(\"margin-right\")) || 0, A[\"padding-left\"] = e && d(r(\"padding-left\")) || 0, A[\"padding-right\"] = e && d(r(\"padding-right\")) || 0, A[\"page-break-before\"] = r(\"page-break-before\") || \"auto\", A.float = a[r(\"cssFloat\")] || \"none\", A.clear = c[r(\"clear\")] || \"none\", A.color = r(\"color\"), A;\n }, B = function (t, A, e) {\n var r, n, i, o, s;\n if (i = !1, o = n = void 0, r = e[\"#\" + t.id]) if (\"function\" == typeof r) i = r(t, A);else for (n = 0, o = r.length; !i && n !== o;) i = r[n](t, A), n++;\n if (r = e[t.nodeName], !i && r) if (\"function\" == typeof r) i = r(t, A);else for (n = 0, o = r.length; !i && n !== o;) i = r[n](t, A), n++;\n for (s = \"string\" == typeof t.className ? t.className.split(\" \") : [], n = 0; n < s.length; n++) if (r = e[\".\" + s[n]], !i && r) if (\"function\" == typeof r) i = r(t, A);else for (n = 0, o = r.length; !i && n !== o;) i = r[n](t, A), n++;\n return i;\n }, C = function (t, A) {\n var e, r, n, i, o, s, a, c, u;\n for (e = [], r = [], n = 0, u = t.rows[0].cells.length, a = t.clientWidth; n < u;) c = t.rows[0].cells[n], r[n] = {\n name: c.textContent.toLowerCase().replace(/\\s+/g, \"\"),\n prompt: c.textContent.replace(/\\r?\\n/g, \"\"),\n width: c.clientWidth / a * A.pdf.internal.pageSize.getWidth()\n }, n++;\n for (n = 1; n < t.rows.length;) {\n for (s = t.rows[n], o = {}, i = 0; i < s.cells.length;) o[r[i].name] = s.cells[i].textContent.replace(/\\r?\\n/g, \"\"), i++;\n e.push(o), n++;\n }\n return {\n rows: e,\n headers: r\n };\n };\n var y = {\n SCRIPT: 1,\n STYLE: 1,\n NOSCRIPT: 1,\n OBJECT: 1,\n EMBED: 1,\n SELECT: 1\n },\n v = 1;\n e = function (t, r, i) {\n var o, s, a, c, l, h, f, d;\n for (s = t.childNodes, o = void 0, (l = \"block\" === (a = u(t)).display) && (r.setBlockBoundary(), r.setBlockStyle(a)), c = 0, h = s.length; c < h;) {\n if (\"object\" === n(o = s[c])) {\n if (r.executeWatchFunctions(o), 1 === o.nodeType && \"HEADER\" === o.nodeName) {\n var p = o,\n w = r.pdf.margins_doc.top;\n r.pdf.internal.events.subscribe(\"addPage\", function (t) {\n r.y = w, e(p, r, i), r.pdf.margins_doc.top = r.y + 10, r.y += 10;\n }, !1);\n }\n if (8 === o.nodeType && \"#comment\" === o.nodeName) ~o.textContent.indexOf(\"ADD_PAGE\") && (r.pdf.addPage(), r.y = r.pdf.margins_doc.top);else if (1 !== o.nodeType || y[o.nodeName]) {\n if (3 === o.nodeType) {\n var m = o.nodeValue;\n if (o.nodeValue && \"LI\" === o.parentNode.nodeName) if (\"OL\" === o.parentNode.parentNode.nodeName) m = v++ + \". \" + m;else {\n var Q = a[\"font-size\"],\n F = (3 - .75 * Q) * r.pdf.internal.scaleFactor,\n U = .75 * Q * r.pdf.internal.scaleFactor,\n N = 1.74 * Q / r.pdf.internal.scaleFactor;\n d = function (t, A) {\n this.pdf.circle(t + F, A + U, N, \"FD\");\n };\n }\n 16 & o.ownerDocument.body.compareDocumentPosition(o) && r.addText(m, a);\n } else \"string\" == typeof o && r.addText(o, a);\n } else {\n var E;\n if (\"IMG\" === o.nodeName) {\n var b = o.getAttribute(\"src\");\n E = g[r.pdf.sHashCode(b) || b];\n }\n if (E) {\n r.pdf.internal.pageSize.getHeight() - r.pdf.margins_doc.bottom < r.y + o.height && r.y > r.pdf.margins_doc.top && (r.pdf.addPage(), r.y = r.pdf.margins_doc.top, r.executeWatchFunctions(o));\n var L = u(o),\n H = r.x,\n x = 12 / r.pdf.internal.scaleFactor,\n S = (L[\"margin-left\"] + L[\"padding-left\"]) * x,\n I = (L[\"margin-right\"] + L[\"padding-right\"]) * x,\n _ = (L[\"margin-top\"] + L[\"padding-top\"]) * x,\n T = (L[\"margin-bottom\"] + L[\"padding-bottom\"]) * x;\n void 0 !== L.float && \"right\" === L.float ? H += r.settings.width - o.width - I : H += S, r.pdf.addImage(E, H, r.y + _, o.width, o.height), E = void 0, \"right\" === L.float || \"left\" === L.float ? (r.watchFunctions.push(function (t, A, e, n) {\n return r.y >= A ? (r.x += t, r.settings.width += e, !0) : !!(n && 1 === n.nodeType && !y[n.nodeName] && r.x + n.width > r.pdf.margins_doc.left + r.pdf.margins_doc.width) && (r.x += t, r.y = A, r.settings.width += e, !0);\n }.bind(this, \"left\" === L.float ? -o.width - S - I : 0, r.y + o.height + _ + T, o.width)), r.watchFunctions.push(function (t, A, e) {\n return !(r.y < t && A === r.pdf.internal.getNumberOfPages()) || 1 === e.nodeType && \"both\" === u(e).clear && (r.y = t, !0);\n }.bind(this, r.y + o.height, r.pdf.internal.getNumberOfPages())), r.settings.width -= o.width + S + I, \"left\" === L.float && (r.x += o.width + S + I)) : r.y += o.height + _ + T;\n } else if (\"TABLE\" === o.nodeName) f = C(o, r), r.y += 10, r.pdf.table(r.x, r.y, f.rows, f.headers, {\n autoSize: !1,\n printHeaders: i.printHeaders,\n margins: r.pdf.margins_doc,\n css: u(o)\n }), r.y = r.pdf.lastCellPos.y + r.pdf.lastCellPos.h + 20;else if (\"OL\" === o.nodeName || \"UL\" === o.nodeName) v = 1, B(o, r, i) || e(o, r, i), r.y += 10;else if (\"LI\" === o.nodeName) {\n var R = r.x;\n r.x += 20 / r.pdf.internal.scaleFactor, r.y += 3, B(o, r, i) || e(o, r, i), r.x = R;\n } else \"BR\" === o.nodeName ? (r.y += a[\"font-size\"] * r.pdf.internal.scaleFactor, r.addText(\"\\u2028\", A(a))) : B(o, r, i) || e(o, r, i);\n }\n }\n c++;\n }\n if (i.outY = r.y, l) return r.setBlockBoundary(d);\n }, g = {}, w = function (t, A, e, r) {\n var n,\n i = t.getElementsByTagName(\"img\"),\n o = i.length,\n s = 0;\n function a() {\n A.pdf.internal.events.publish(\"imagesLoaded\"), r(n);\n }\n function c(t, e, r) {\n if (t) {\n var i = new Image();\n n = ++s, i.crossOrigin = \"\", i.onerror = i.onload = function () {\n if (i.complete && (0 === i.src.indexOf(\"data:image/\") && (i.width = e || i.width || 0, i.height = r || i.height || 0), i.width + i.height)) {\n var n = A.pdf.sHashCode(t) || t;\n g[n] = g[n] || i;\n }\n --s || a();\n }, i.src = t;\n }\n }\n for (; o--;) c(i[o].getAttribute(\"src\"), i[o].width, i[o].height);\n return s || a();\n }, m = function (t, A, r) {\n var n = t.getElementsByTagName(\"footer\");\n if (0 < n.length) {\n n = n[0];\n var i = A.pdf.internal.write,\n o = A.y;\n A.pdf.internal.write = function () {}, e(n, A, r);\n var s = Math.ceil(A.y - o) + 5;\n A.y = o, A.pdf.internal.write = i, A.pdf.margins_doc.bottom += s;\n for (var a = function (t) {\n var i = void 0 !== t ? t.pageNumber : 1,\n o = A.y;\n A.y = A.pdf.internal.pageSize.getHeight() - A.pdf.margins_doc.bottom, A.pdf.margins_doc.bottom -= s;\n for (var a = n.getElementsByTagName(\"span\"), c = 0; c < a.length; ++c) -1 < (\" \" + a[c].className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(\" pageCounter \") && (a[c].innerHTML = i), -1 < (\" \" + a[c].className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(\" totalPages \") && (a[c].innerHTML = \"###jsPDFVarTotalPages###\");\n e(n, A, r), A.pdf.margins_doc.bottom += s, A.y = o;\n }, c = n.getElementsByTagName(\"span\"), u = 0; u < c.length; ++u) -1 < (\" \" + c[u].className + \" \").replace(/[\\n\\t]/g, \" \").indexOf(\" totalPages \") && A.pdf.internal.events.subscribe(\"htmlRenderingFinished\", A.pdf.putTotalPages.bind(A.pdf, \"###jsPDFVarTotalPages###\"), !0);\n A.pdf.internal.events.subscribe(\"addPage\", a, !1), a(), y.FOOTER = 1;\n }\n }, Q = function (t, A, r, n, i, o) {\n if (!A) return !1;\n var s, a, c, u;\n \"string\" == typeof A || A.parentNode || (A = \"\" + A.innerHTML), \"string\" == typeof A && (s = A.replace(/<\\/?script[^>]*?>/gi, \"\"), u = \"jsPDFhtmlText\" + Date.now().toString() + (1e3 * Math.random()).toFixed(0), (c = document.createElement(\"div\")).style.cssText = \"position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;\", c.innerHTML = '<iframe style=\"height:1px;width:1px\" name=\"' + u + '\" />', document.body.appendChild(c), (a = window.frames[u]).document.open(), a.document.writeln(s), a.document.close(), A = a.document.body);\n var l,\n f = new h(t, r, n, i);\n return w.call(this, A, f, i.elementHandlers, function (t) {\n m(A, f, i.elementHandlers), e(A, f, i.elementHandlers), f.pdf.internal.events.publish(\"htmlRenderingFinished\"), l = f.dispose(), \"function\" == typeof o ? o(l) : t && console.error(\"jsPDF Warning: rendering issues? provide a callback to fromHTML!\");\n }), l || {\n x: f.x,\n y: f.y\n };\n }, (h = function (t, A, e, r) {\n return this.pdf = t, this.x = A, this.y = e, this.settings = r, this.watchFunctions = [], this.init(), this;\n }).prototype.init = function () {\n return this.paragraph = {\n text: [],\n style: []\n }, this.pdf.internal.write(\"q\");\n }, h.prototype.dispose = function () {\n return this.pdf.internal.write(\"Q\"), {\n x: this.x,\n y: this.y,\n ready: !0\n };\n }, h.prototype.executeWatchFunctions = function (t) {\n var A = !1,\n e = [];\n if (0 < this.watchFunctions.length) {\n for (var r = 0; r < this.watchFunctions.length; ++r) !0 === this.watchFunctions[r](t) ? A = !0 : e.push(this.watchFunctions[r]);\n this.watchFunctions = e;\n }\n return A;\n }, h.prototype.splitFragmentsIntoLines = function (t, e) {\n var r, n, i, o, s, a, c, u, l, h, f, d, p, B;\n for (h = this.pdf.internal.scaleFactor, o = {}, a = c = u = B = s = i = l = n = void 0, d = [f = []], r = 0, p = this.settings.width; t.length;) if (s = t.shift(), B = e.shift(), s) if ((i = o[(n = B[\"font-family\"]) + (l = B[\"font-style\"])]) || (i = this.pdf.internal.getFont(n, l).metadata.Unicode, o[n + l] = i), u = {\n widths: i.widths,\n kerning: i.kerning,\n fontSize: 12 * B[\"font-size\"],\n textIndent: r\n }, c = this.pdf.getStringUnitWidth(s, u) * u.fontSize / h, \"\\u2028\" == s) f = [], d.push(f);else if (p < r + c) {\n for (a = this.pdf.splitTextToSize(s, p, u), f.push([a.shift(), B]); a.length;) f = [[a.shift(), B]], d.push(f);\n r = this.pdf.getStringUnitWidth(f[0][0], u) * u.fontSize / h;\n } else f.push([s, B]), r += c;\n if (void 0 !== B[\"text-align\"] && (\"center\" === B[\"text-align\"] || \"right\" === B[\"text-align\"] || \"justify\" === B[\"text-align\"])) for (var g = 0; g < d.length; ++g) {\n var w = this.pdf.getStringUnitWidth(d[g][0][0], u) * u.fontSize / h;\n 0 < g && (d[g][0][1] = A(d[g][0][1]));\n var m = p - w;\n if (\"right\" === B[\"text-align\"]) d[g][0][1][\"margin-left\"] = m;else if (\"center\" === B[\"text-align\"]) d[g][0][1][\"margin-left\"] = m / 2;else if (\"justify\" === B[\"text-align\"]) {\n var Q = d[g][0][0].split(\" \").length - 1;\n d[g][0][1][\"word-spacing\"] = m / Q, g === d.length - 1 && (d[g][0][1][\"word-spacing\"] = 0);\n }\n }\n return d;\n }, h.prototype.RenderTextFragment = function (t, A) {\n var e, r;\n r = 0, this.pdf.internal.pageSize.getHeight() - this.pdf.margins_doc.bottom < this.y + this.pdf.internal.getFontSize() && (this.pdf.internal.write(\"ET\", \"Q\"), this.pdf.addPage(), this.y = this.pdf.margins_doc.top, this.pdf.internal.write(\"q\", \"BT\", this.getPdfColor(A.color), this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), \"Td\"), r = Math.max(r, A[\"line-height\"], A[\"font-size\"]), this.pdf.internal.write(0, (-12 * r).toFixed(2), \"Td\")), e = this.pdf.internal.getFont(A[\"font-family\"], A[\"font-style\"]);\n var n = this.getPdfColor(A.color);\n n !== this.lastTextColor && (this.pdf.internal.write(n), this.lastTextColor = n), void 0 !== A[\"word-spacing\"] && 0 < A[\"word-spacing\"] && this.pdf.internal.write(A[\"word-spacing\"].toFixed(2), \"Tw\"), this.pdf.internal.write(\"/\" + e.id, (12 * A[\"font-size\"]).toFixed(2), \"Tf\", \"(\" + this.pdf.internal.pdfEscape(t) + \") Tj\"), void 0 !== A[\"word-spacing\"] && this.pdf.internal.write(0, \"Tw\");\n }, h.prototype.getPdfColor = function (t) {\n var A,\n e,\n r,\n n = /rgb\\s*\\(\\s*(\\d+),\\s*(\\d+),\\s*(\\d+\\s*)\\)/.exec(t);\n if (null != n) A = parseInt(n[1]), e = parseInt(n[2]), r = parseInt(n[3]);else {\n if (\"string\" == typeof t && \"#\" != t.charAt(0)) {\n var i = new RGBColor(t);\n t = i.ok ? i.toHex() : \"#000000\";\n }\n A = t.substring(1, 3), A = parseInt(A, 16), e = t.substring(3, 5), e = parseInt(e, 16), r = t.substring(5, 7), r = parseInt(r, 16);\n }\n if (\"string\" == typeof A && /^#[0-9A-Fa-f]{6}$/.test(A)) {\n var o = parseInt(A.substr(1), 16);\n A = o >> 16 & 255, e = o >> 8 & 255, r = 255 & o;\n }\n var s = this.f3;\n return 0 === A && 0 === e && 0 === r || void 0 === e ? s(A / 255) + \" g\" : [s(A / 255), s(e / 255), s(r / 255), \"rg\"].join(\" \");\n }, h.prototype.f3 = function (t) {\n return t.toFixed(3);\n }, h.prototype.renderParagraph = function (t) {\n var A, e, r, n, i, o, s, a, c, u, h, f, d;\n if (r = l(this.paragraph.text), f = this.paragraph.style, A = this.paragraph.blockstyle, this.paragraph.priorblockstyle, this.paragraph = {\n text: [],\n style: [],\n blockstyle: {},\n priorblockstyle: A\n }, r.join(\"\").trim()) {\n s = this.splitFragmentsIntoLines(r, f), a = o = void 0, e = 12 / this.pdf.internal.scaleFactor, this.priorMarginBottom = this.priorMarginBottom || 0, h = (Math.max((A[\"margin-top\"] || 0) - this.priorMarginBottom, 0) + (A[\"padding-top\"] || 0)) * e, u = ((A[\"margin-bottom\"] || 0) + (A[\"padding-bottom\"] || 0)) * e, this.priorMarginBottom = A[\"margin-bottom\"] || 0, \"always\" === A[\"page-break-before\"] && (this.pdf.addPage(), this.y = 0, h = ((A[\"margin-top\"] || 0) + (A[\"padding-top\"] || 0)) * e), c = this.pdf.internal.write, i = n = void 0, this.y += h, c(\"q\", \"BT 0 g\", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), \"Td\");\n for (var p = 0; s.length;) {\n for (n = a = 0, i = (o = s.shift()).length; n !== i;) o[n][0].trim() && (a = Math.max(a, o[n][1][\"line-height\"], o[n][1][\"font-size\"]), d = 7 * o[n][1][\"font-size\"]), n++;\n var B = 0,\n g = 0;\n for (void 0 !== o[0][1][\"margin-left\"] && 0 < o[0][1][\"margin-left\"] && (B = (g = this.pdf.internal.getCoordinateString(o[0][1][\"margin-left\"])) - p, p = g), c(B + Math.max(A[\"margin-left\"] || 0, 0) * e, (-12 * a).toFixed(2), \"Td\"), n = 0, i = o.length; n !== i;) o[n][0] && this.RenderTextFragment(o[n][0], o[n][1]), n++;\n if (this.y += a * e, this.executeWatchFunctions(o[0][1]) && 0 < s.length) {\n var w = [],\n m = [];\n s.forEach(function (t) {\n for (var A = 0, e = t.length; A !== e;) t[A][0] && (w.push(t[A][0] + \" \"), m.push(t[A][1])), ++A;\n }), s = this.splitFragmentsIntoLines(l(w), m), c(\"ET\", \"Q\"), c(\"q\", \"BT 0 g\", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), \"Td\");\n }\n }\n return t && \"function\" == typeof t && t.call(this, this.x - 9, this.y - d / 2), c(\"ET\", \"Q\"), this.y += u;\n }\n }, h.prototype.setBlockBoundary = function (t) {\n return this.renderParagraph(t);\n }, h.prototype.setBlockStyle = function (t) {\n return this.paragraph.blockstyle = t;\n }, h.prototype.addText = function (t, A) {\n return this.paragraph.text.push(t), this.paragraph.style.push(A);\n }, r = {\n helvetica: \"helvetica\",\n \"sans-serif\": \"helvetica\",\n \"times new roman\": \"times\",\n serif: \"times\",\n times: \"times\",\n monospace: \"courier\",\n courier: \"courier\"\n }, s = {\n 100: \"normal\",\n 200: \"normal\",\n 300: \"normal\",\n 400: \"normal\",\n 500: \"bold\",\n 600: \"bold\",\n 700: \"bold\",\n 800: \"bold\",\n 900: \"bold\",\n normal: \"normal\",\n bold: \"bold\",\n bolder: \"bold\",\n lighter: \"normal\"\n }, i = {\n normal: \"normal\",\n italic: \"italic\",\n oblique: \"italic\"\n }, o = {\n left: \"left\",\n right: \"right\",\n center: \"center\",\n justify: \"justify\"\n }, a = {\n none: \"none\",\n right: \"right\",\n left: \"left\"\n }, c = {\n none: \"none\",\n both: \"both\"\n }, p = {\n normal: 1\n }, t.fromHTML = function (t, A, e, r, n, i) {\n return this.margins_doc = i || {\n top: 0,\n bottom: 0\n }, r || (r = {}), r.elementHandlers || (r.elementHandlers = {}), Q(this, t, isNaN(A) ? 4 : A, isNaN(e) ? 4 : e, r, n);\n };\n }(dt.API), dt.API, (\"undefined\" != typeof window && window || void 0 !== r && r).html2pdf = function (t, A, e) {\n var r = A.canvas;\n if (r) {\n var n, i;\n if ((r.pdf = A).annotations = {\n _nameMap: [],\n createAnnotation: function (t, e) {\n var r,\n n = A.context2d._wrapX(e.left),\n i = A.context2d._wrapY(e.top),\n o = (A.context2d._page(e.top), t.indexOf(\"#\"));\n r = 0 <= o ? {\n name: t.substring(o + 1)\n } : {\n url: t\n }, A.link(n, i, e.right - e.left, e.bottom - e.top, r);\n },\n setName: function (t, e) {\n var r = A.context2d._wrapX(e.left),\n n = A.context2d._wrapY(e.top),\n i = A.context2d._page(e.top);\n this._nameMap[t] = {\n page: i,\n x: r,\n y: n\n };\n }\n }, r.annotations = A.annotations, A.context2d._pageBreakAt = function (t) {\n this.pageBreaks.push(t);\n }, A.context2d._gotoPage = function (t) {\n for (; A.internal.getNumberOfPages() < t;) A.addPage();\n A.setPage(t);\n }, \"string\" == typeof t) {\n t = t.replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, \"\");\n var o,\n s,\n a = document.createElement(\"iframe\");\n document.body.appendChild(a), null != (o = a.contentDocument) && null != o || (o = a.contentWindow.document), o.open(), o.write(t), o.close(), n = o.body, s = o.body || {}, t = o.documentElement || {}, i = Math.max(s.scrollHeight, s.offsetHeight, t.clientHeight, t.scrollHeight, t.offsetHeight);\n } else s = (n = t).body || {}, i = Math.max(s.scrollHeight, s.offsetHeight, t.clientHeight, t.scrollHeight, t.offsetHeight);\n var c = {\n async: !0,\n allowTaint: !0,\n backgroundColor: \"#ffffff\",\n canvas: r,\n imageTimeout: 15e3,\n logging: !0,\n proxy: null,\n removeContainer: !0,\n foreignObjectRendering: !1,\n useCORS: !1,\n windowHeight: i = A.internal.pageSize.getHeight(),\n scrollY: i\n };\n A.context2d.pageWrapYEnabled = !0, A.context2d.pageWrapY = A.internal.pageSize.getHeight(), html2canvas(n, c).then(function (t) {\n e && (a && a.parentElement.removeChild(a), e(A));\n });\n } else alert(\"jsPDF canvas plugin not installed\");\n }, window.tmp = html2pdf, function (t) {\n var A = t.BlobBuilder || t.WebKitBlobBuilder || t.MSBlobBuilder || t.MozBlobBuilder;\n t.URL = t.URL || t.webkitURL || function (t, A) {\n return (A = document.createElement(\"a\")).href = t, A;\n };\n var e = t.Blob,\n r = URL.createObjectURL,\n n = URL.revokeObjectURL,\n i = t.Symbol && t.Symbol.toStringTag,\n o = !1,\n s = !1,\n a = !!t.ArrayBuffer,\n c = A && A.prototype.append && A.prototype.getBlob;\n try {\n o = 2 === new Blob([\"ä\"]).size, s = 2 === new Blob([new Uint8Array([1, 2])]).size;\n } catch (o) {}\n function u(t) {\n return t.map(function (t) {\n if (t.buffer instanceof ArrayBuffer) {\n var A = t.buffer;\n if (t.byteLength !== A.byteLength) {\n var e = new Uint8Array(t.byteLength);\n e.set(new Uint8Array(A, t.byteOffset, t.byteLength)), A = e.buffer;\n }\n return A;\n }\n return t;\n });\n }\n function l(t, e) {\n e = e || {};\n var r = new A();\n return u(t).forEach(function (t) {\n r.append(t);\n }), e.type ? r.getBlob(e.type) : r.getBlob();\n }\n function h(t, A) {\n return new e(u(t), A || {});\n }\n if (t.Blob && (l.prototype = Blob.prototype, h.prototype = Blob.prototype), i) try {\n File.prototype[i] = \"File\", Blob.prototype[i] = \"Blob\", FileReader.prototype[i] = \"FileReader\";\n } catch (o) {}\n function f() {\n var A = !!t.ActiveXObject || \"-ms-scroll-limit\" in document.documentElement.style && \"-ms-ime-align\" in document.documentElement.style,\n e = t.XMLHttpRequest && t.XMLHttpRequest.prototype.send;\n A && e && (XMLHttpRequest.prototype.send = function (t) {\n t instanceof Blob && this.setRequestHeader(\"Content-Type\", t.type), e.call(this, t);\n });\n try {\n new File([], \"\");\n } catch (A) {\n try {\n var r = new Function('class File extends Blob {constructor(chunks, name, opts) {opts = opts || {};super(chunks, opts || {});this.name = name;this.lastModifiedDate = opts.lastModified ? new Date(opts.lastModified) : new Date;this.lastModified = +this.lastModifiedDate;}};return new File([], \"\"), File')();\n t.File = r;\n } catch (A) {\n r = function (t, A, e) {\n var r = new Blob(t, e),\n n = e && void 0 !== e.lastModified ? new Date(e.lastModified) : new Date();\n return r.name = A, r.lastModifiedDate = n, r.lastModified = +n, r.toString = function () {\n return \"[object File]\";\n }, i && (r[i] = \"File\"), r;\n }, t.File = r;\n }\n }\n }\n o ? (f(), t.Blob = s ? t.Blob : h) : c ? (f(), t.Blob = l) : function () {\n function A(t) {\n for (var A = [], e = 0; e < t.length; e++) {\n var r = t.charCodeAt(e);\n r < 128 ? A.push(r) : r < 2048 ? A.push(192 | r >> 6, 128 | 63 & r) : r < 55296 || 57344 <= r ? A.push(224 | r >> 12, 128 | r >> 6 & 63, 128 | 63 & r) : (e++, r = 65536 + ((1023 & r) << 10 | 1023 & t.charCodeAt(e)), A.push(240 | r >> 18, 128 | r >> 12 & 63, 128 | r >> 6 & 63, 128 | 63 & r));\n }\n return A;\n }\n function e(t) {\n var A, e, r, n, i, o;\n for (A = \"\", r = t.length, e = 0; e < r;) switch ((n = t[e++]) >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n A += String.fromCharCode(n);\n break;\n case 12:\n case 13:\n i = t[e++], A += String.fromCharCode((31 & n) << 6 | 63 & i);\n break;\n case 14:\n i = t[e++], o = t[e++], A += String.fromCharCode((15 & n) << 12 | (63 & i) << 6 | (63 & o) << 0);\n }\n return A;\n }\n function i(t) {\n for (var A = new Array(t.byteLength), e = new Uint8Array(t), r = A.length; r--;) A[r] = e[r];\n return A;\n }\n function o(t) {\n for (var A = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", e = [], r = 0; r < t.length; r += 3) {\n var n = t[r],\n i = r + 1 < t.length,\n o = i ? t[r + 1] : 0,\n s = r + 2 < t.length,\n a = s ? t[r + 2] : 0,\n c = n >> 2,\n u = (3 & n) << 4 | o >> 4,\n l = (15 & o) << 2 | a >> 6,\n h = 63 & a;\n s || (h = 64, i || (l = 64)), e.push(A[c], A[u], A[l], A[h]);\n }\n return e.join(\"\");\n }\n var s = Object.create || function (t) {\n function A() {}\n return A.prototype = t, new A();\n };\n if (a) var c = [\"[object Int8Array]\", \"[object Uint8Array]\", \"[object Uint8ClampedArray]\", \"[object Int16Array]\", \"[object Uint16Array]\", \"[object Int32Array]\", \"[object Uint32Array]\", \"[object Float32Array]\", \"[object Float64Array]\"],\n u = ArrayBuffer.isView || function (t) {\n return t && -1 < c.indexOf(Object.prototype.toString.call(t));\n };\n function l(t, e) {\n for (var r = 0, n = (t = t || []).length; r < n; r++) {\n var o = t[r];\n o instanceof l ? t[r] = o._buffer : \"string\" == typeof o ? t[r] = A(o) : a && (ArrayBuffer.prototype.isPrototypeOf(o) || u(o)) ? t[r] = i(o) : a && (s = o) && DataView.prototype.isPrototypeOf(s) ? t[r] = i(o.buffer) : t[r] = A(String(o));\n }\n var s;\n this._buffer = [].concat.apply([], t), this.size = this._buffer.length, this.type = e && e.type || \"\";\n }\n function h(t, A, e) {\n var r = l.call(this, t, e = e || {}) || this;\n return r.name = A, r.lastModifiedDate = e.lastModified ? new Date(e.lastModified) : new Date(), r.lastModified = +r.lastModifiedDate, r;\n }\n if (l.prototype.slice = function (t, A, e) {\n return new l([this._buffer.slice(t || 0, A || this._buffer.length)], {\n type: e\n });\n }, l.prototype.toString = function () {\n return \"[object Blob]\";\n }, (h.prototype = s(l.prototype)).constructor = h, Object.setPrototypeOf) Object.setPrototypeOf(h, l);else try {\n h.__proto__ = l;\n } catch (s) {}\n function f() {\n if (!(this instanceof f)) throw new TypeError(\"Failed to construct 'FileReader': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n var t = document.createDocumentFragment();\n this.addEventListener = t.addEventListener, this.dispatchEvent = function (A) {\n var e = this[\"on\" + A.type];\n \"function\" == typeof e && e(A), t.dispatchEvent(A);\n }, this.removeEventListener = t.removeEventListener;\n }\n function d(t, A, e) {\n if (!(A instanceof l)) throw new TypeError(\"Failed to execute '\" + e + \"' on 'FileReader': parameter 1 is not of type 'Blob'.\");\n t.result = \"\", setTimeout(function () {\n this.readyState = f.LOADING, t.dispatchEvent(new Event(\"load\")), t.dispatchEvent(new Event(\"loadend\"));\n });\n }\n h.prototype.toString = function () {\n return \"[object File]\";\n }, f.EMPTY = 0, f.LOADING = 1, f.DONE = 2, f.prototype.error = null, f.prototype.onabort = null, f.prototype.onerror = null, f.prototype.onload = null, f.prototype.onloadend = null, f.prototype.onloadstart = null, f.prototype.onprogress = null, f.prototype.readAsDataURL = function (t) {\n d(this, t, \"readAsDataURL\"), this.result = \"data:\" + t.type + \";base64,\" + o(t._buffer);\n }, f.prototype.readAsText = function (t) {\n d(this, t, \"readAsText\"), this.result = e(t._buffer);\n }, f.prototype.readAsArrayBuffer = function (t) {\n d(this, t, \"readAsText\"), this.result = t._buffer.slice();\n }, f.prototype.abort = function () {}, URL.createObjectURL = function (t) {\n return t instanceof l ? \"data:\" + t.type + \";base64,\" + o(t._buffer) : r.call(URL, t);\n }, URL.revokeObjectURL = function (t) {\n n && n.call(URL, t);\n };\n var p = t.XMLHttpRequest && t.XMLHttpRequest.prototype.send;\n p && (XMLHttpRequest.prototype.send = function (t) {\n t instanceof l ? (this.setRequestHeader(\"Content-Type\", t.type), p.call(this, e(t._buffer))) : p.call(this, t);\n }), t.FileReader = f, t.File = h, t.Blob = l;\n }();\n }(\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")());\n var pt,\n Bt,\n gt,\n wt,\n mt,\n Qt,\n Ct,\n yt,\n vt,\n Ft,\n Ut,\n Nt,\n Et,\n bt,\n Lt,\n Ht = Ht || function (t) {\n if (!(void 0 === t || \"undefined\" != typeof navigator && /MSIE [1-9]\\./.test(navigator.userAgent))) {\n var A = t.document,\n e = function () {\n return t.URL || t.webkitURL || t;\n },\n r = A.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\"),\n n = (\"download\" in r),\n i = /constructor/i.test(t.HTMLElement) || t.safari,\n o = /CriOS\\/[\\d]+/.test(navigator.userAgent),\n s = t.setImmediate || t.setTimeout,\n a = function (t) {\n s(function () {\n throw t;\n }, 0);\n },\n c = function (t) {\n setTimeout(function () {\n \"string\" == typeof t ? e().revokeObjectURL(t) : t.remove();\n }, 4e4);\n },\n u = function (t) {\n return /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(t.type) ? new Blob([String.fromCharCode(65279), t], {\n type: t.type\n }) : t;\n },\n l = function (A, l, h) {\n h || (A = u(A));\n var f,\n d = this,\n p = \"application/octet-stream\" === A.type,\n B = function () {\n !function (t, A, e) {\n for (var r = (A = [].concat(A)).length; r--;) {\n var n = t[\"on\" + A[r]];\n if (\"function\" == typeof n) try {\n n.call(t, t);\n } catch (t) {\n a(t);\n }\n }\n }(d, \"writestart progress write writeend\".split(\" \"));\n };\n if (d.readyState = d.INIT, n) return f = e().createObjectURL(A), void s(function () {\n var t, A;\n r.href = f, r.download = l, t = r, A = new MouseEvent(\"click\"), t.dispatchEvent(A), B(), c(f), d.readyState = d.DONE;\n }, 0);\n !function () {\n if ((o || p && i) && t.FileReader) {\n var r = new FileReader();\n return r.onloadend = function () {\n var A = o ? r.result : r.result.replace(/^data:[^;]*;/, \"data:attachment/file;\");\n t.open(A, \"_blank\") || (t.location.href = A), A = void 0, d.readyState = d.DONE, B();\n }, r.readAsDataURL(A), d.readyState = d.INIT;\n }\n f || (f = e().createObjectURL(A)), p ? t.location.href = f : t.open(f, \"_blank\") || (t.location.href = f), d.readyState = d.DONE, B(), c(f);\n }();\n },\n h = l.prototype;\n return \"undefined\" != typeof navigator && navigator.msSaveOrOpenBlob ? function (t, A, e) {\n return A = A || t.name || \"download\", e || (t = u(t)), navigator.msSaveOrOpenBlob(t, A);\n } : (h.abort = function () {}, h.readyState = h.INIT = 0, h.WRITING = 1, h.DONE = 2, h.error = h.onwritestart = h.onprogress = h.onwrite = h.onabort = h.onerror = h.onwriteend = null, function (t, A, e) {\n return new l(t, A || t.name || \"download\", e);\n });\n }\n }(\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0);\n function xt(t) {\n var A = 0;\n if (71 !== t[A++] || 73 !== t[A++] || 70 !== t[A++] || 56 !== t[A++] || 56 != (t[A++] + 1 & 253) || 97 !== t[A++]) throw \"Invalid GIF 87a/89a header.\";\n var e = t[A++] | t[A++] << 8,\n r = t[A++] | t[A++] << 8,\n n = t[A++],\n i = n >> 7,\n o = 1 << 1 + (7 & n);\n t[A++], t[A++];\n var s = null;\n i && (s = A, A += 3 * o);\n var a = !0,\n c = [],\n u = 0,\n l = null,\n h = 0,\n f = null;\n for (this.width = e, this.height = r; a && A < t.length;) switch (t[A++]) {\n case 33:\n switch (t[A++]) {\n case 255:\n if (11 !== t[A] || 78 == t[A + 1] && 69 == t[A + 2] && 84 == t[A + 3] && 83 == t[A + 4] && 67 == t[A + 5] && 65 == t[A + 6] && 80 == t[A + 7] && 69 == t[A + 8] && 50 == t[A + 9] && 46 == t[A + 10] && 48 == t[A + 11] && 3 == t[A + 12] && 1 == t[A + 13] && 0 == t[A + 16]) A += 14, f = t[A++] | t[A++] << 8, A++;else for (A += 12; 0 !== (F = t[A++]);) A += F;\n break;\n case 249:\n if (4 !== t[A++] || 0 !== t[A + 4]) throw \"Invalid graphics extension block.\";\n var d = t[A++];\n u = t[A++] | t[A++] << 8, l = t[A++], 0 == (1 & d) && (l = null), h = d >> 2 & 7, A++;\n break;\n case 254:\n for (; 0 !== (F = t[A++]);) A += F;\n break;\n default:\n throw \"Unknown graphic control label: 0x\" + t[A - 1].toString(16);\n }\n break;\n case 44:\n var p = t[A++] | t[A++] << 8,\n B = t[A++] | t[A++] << 8,\n g = t[A++] | t[A++] << 8,\n w = t[A++] | t[A++] << 8,\n m = t[A++],\n Q = m >> 6 & 1,\n C = s,\n y = !1;\n m >> 7 && (y = !0, C = A, A += 3 * (1 << 1 + (7 & m)));\n var v = A;\n for (A++;;) {\n var F;\n if (0 === (F = t[A++])) break;\n A += F;\n }\n c.push({\n x: p,\n y: B,\n width: g,\n height: w,\n has_local_palette: y,\n palette_offset: C,\n data_offset: v,\n data_length: A - v,\n transparent_index: l,\n interlaced: !!Q,\n delay: u,\n disposal: h\n });\n break;\n case 59:\n a = !1;\n break;\n default:\n throw \"Unknown gif block: 0x\" + t[A - 1].toString(16);\n }\n this.numFrames = function () {\n return c.length;\n }, this.loopCount = function () {\n return f;\n }, this.frameInfo = function (t) {\n if (t < 0 || t >= c.length) throw \"Frame index out of range.\";\n return c[t];\n }, this.decodeAndBlitFrameBGRA = function (A, r) {\n var n = this.frameInfo(A),\n i = n.width * n.height,\n o = new Uint8Array(i);\n St(t, n.data_offset, o, i);\n var s = n.palette_offset,\n a = n.transparent_index;\n null === a && (a = 256);\n var c = n.width,\n u = e - c,\n l = c,\n h = 4 * (n.y * e + n.x),\n f = 4 * ((n.y + n.height) * e + n.x),\n d = h,\n p = 4 * u;\n !0 === n.interlaced && (p += 4 * (c + u) * 7);\n for (var B = 8, g = 0, w = o.length; g < w; ++g) {\n var m = o[g];\n if (0 === l && (l = c, f <= (d += p) && (p = u + 4 * (c + u) * (B - 1), d = h + (c + u) * (B << 1), B >>= 1)), m === a) d += 4;else {\n var Q = t[s + 3 * m],\n C = t[s + 3 * m + 1],\n y = t[s + 3 * m + 2];\n r[d++] = y, r[d++] = C, r[d++] = Q, r[d++] = 255;\n }\n --l;\n }\n }, this.decodeAndBlitFrameRGBA = function (A, r) {\n var n = this.frameInfo(A),\n i = n.width * n.height,\n o = new Uint8Array(i);\n St(t, n.data_offset, o, i);\n var s = n.palette_offset,\n a = n.transparent_index;\n null === a && (a = 256);\n var c = n.width,\n u = e - c,\n l = c,\n h = 4 * (n.y * e + n.x),\n f = 4 * ((n.y + n.height) * e + n.x),\n d = h,\n p = 4 * u;\n !0 === n.interlaced && (p += 4 * (c + u) * 7);\n for (var B = 8, g = 0, w = o.length; g < w; ++g) {\n var m = o[g];\n if (0 === l && (l = c, f <= (d += p) && (p = u + 4 * (c + u) * (B - 1), d = h + (c + u) * (B << 1), B >>= 1)), m === a) d += 4;else {\n var Q = t[s + 3 * m],\n C = t[s + 3 * m + 1],\n y = t[s + 3 * m + 2];\n r[d++] = Q, r[d++] = C, r[d++] = y, r[d++] = 255;\n }\n --l;\n }\n };\n }\n function St(t, A, e, r) {\n for (var n = t[A++], i = 1 << n, o = i + 1, s = o + 1, a = n + 1, c = (1 << a) - 1, u = 0, l = 0, h = 0, f = t[A++], d = new Int32Array(4096), p = null;;) {\n for (; u < 16 && 0 !== f;) l |= t[A++] << u, u += 8, 1 === f ? f = t[A++] : --f;\n if (u < a) break;\n var B = l & c;\n if (l >>= a, u -= a, B !== i) {\n if (B === o) break;\n for (var g = B < s ? B : p, w = 0, m = g; i < m;) m = d[m] >> 8, ++w;\n var Q = m;\n if (r < h + w + (g !== B ? 1 : 0)) return void console.log(\"Warning, gif stream longer than expected.\");\n e[h++] = Q;\n var C = h += w;\n for (g !== B && (e[h++] = Q), m = g; w--;) m = d[m], e[--C] = 255 & m, m >>= 8;\n null !== p && s < 4096 && (d[s++] = p << 8 | Q, c + 1 <= s && a < 12 && (++a, c = c << 1 | 1)), p = B;\n } else s = o + 1, c = (1 << (a = n + 1)) - 1, p = null;\n }\n return h !== r && console.log(\"Warning, gif stream shorter than expected.\"), e;\n }\n try {\n A.GifWriter = function (t, A, e, r) {\n var n = 0,\n i = void 0 === (r = void 0 === r ? {} : r).loop ? null : r.loop,\n o = void 0 === r.palette ? null : r.palette;\n if (A <= 0 || e <= 0 || 65535 < A || 65535 < e) throw \"Width/Height invalid.\";\n function s(t) {\n var A = t.length;\n if (A < 2 || 256 < A || A & A - 1) throw \"Invalid code/color length, must be power of 2 and 2 .. 256.\";\n return A;\n }\n t[n++] = 71, t[n++] = 73, t[n++] = 70, t[n++] = 56, t[n++] = 57, t[n++] = 97;\n var a = 0,\n c = 0;\n if (null !== o) {\n for (var u = s(o); u >>= 1;) ++a;\n if (u = 1 << a, --a, void 0 !== r.background) {\n if (u <= (c = r.background)) throw \"Background index out of range.\";\n if (0 === c) throw \"Background index explicitly passed as 0.\";\n }\n }\n if (t[n++] = 255 & A, t[n++] = A >> 8 & 255, t[n++] = 255 & e, t[n++] = e >> 8 & 255, t[n++] = (null !== o ? 128 : 0) | a, t[n++] = c, t[n++] = 0, null !== o) for (var l = 0, h = o.length; l < h; ++l) {\n var f = o[l];\n t[n++] = f >> 16 & 255, t[n++] = f >> 8 & 255, t[n++] = 255 & f;\n }\n if (null !== i) {\n if (i < 0 || 65535 < i) throw \"Loop count invalid.\";\n t[n++] = 33, t[n++] = 255, t[n++] = 11, t[n++] = 78, t[n++] = 69, t[n++] = 84, t[n++] = 83, t[n++] = 67, t[n++] = 65, t[n++] = 80, t[n++] = 69, t[n++] = 50, t[n++] = 46, t[n++] = 48, t[n++] = 3, t[n++] = 1, t[n++] = 255 & i, t[n++] = i >> 8 & 255, t[n++] = 0;\n }\n var d = !1;\n this.addFrame = function (A, e, r, i, a, c) {\n if (!0 === d && (--n, d = !1), c = void 0 === c ? {} : c, A < 0 || e < 0 || 65535 < A || 65535 < e) throw \"x/y invalid.\";\n if (r <= 0 || i <= 0 || 65535 < r || 65535 < i) throw \"Width/Height invalid.\";\n if (a.length < r * i) throw \"Not enough pixels for the frame size.\";\n var u = !0,\n l = c.palette;\n if (null == l && (u = !1, l = o), null == l) throw \"Must supply either a local or global palette.\";\n for (var h = s(l), f = 0; h >>= 1;) ++f;\n h = 1 << f;\n var p = void 0 === c.delay ? 0 : c.delay,\n B = void 0 === c.disposal ? 0 : c.disposal;\n if (B < 0 || 3 < B) throw \"Disposal out of range.\";\n var g = !1,\n w = 0;\n if (void 0 !== c.transparent && null !== c.transparent && (g = !0, (w = c.transparent) < 0 || h <= w)) throw \"Transparent color index.\";\n if ((0 !== B || g || 0 !== p) && (t[n++] = 33, t[n++] = 249, t[n++] = 4, t[n++] = B << 2 | (!0 === g ? 1 : 0), t[n++] = 255 & p, t[n++] = p >> 8 & 255, t[n++] = w, t[n++] = 0), t[n++] = 44, t[n++] = 255 & A, t[n++] = A >> 8 & 255, t[n++] = 255 & e, t[n++] = e >> 8 & 255, t[n++] = 255 & r, t[n++] = r >> 8 & 255, t[n++] = 255 & i, t[n++] = i >> 8 & 255, t[n++] = !0 === u ? 128 | f - 1 : 0, !0 === u) for (var m = 0, Q = l.length; m < Q; ++m) {\n var C = l[m];\n t[n++] = C >> 16 & 255, t[n++] = C >> 8 & 255, t[n++] = 255 & C;\n }\n n = function (t, A, e, r) {\n t[A++] = e;\n var n = A++,\n i = 1 << e,\n o = i - 1,\n s = i + 1,\n a = s + 1,\n c = e + 1,\n u = 0,\n l = 0;\n function h(e) {\n for (; e <= u;) t[A++] = 255 & l, l >>= 8, u -= 8, A === n + 256 && (t[n] = 255, n = A++);\n }\n function f(t) {\n l |= t << u, u += c, h(8);\n }\n var d = r[0] & o,\n p = {};\n f(i);\n for (var B = 1, g = r.length; B < g; ++B) {\n var w = r[B] & o,\n m = d << 8 | w,\n Q = p[m];\n if (void 0 === Q) {\n for (l |= d << u, u += c; 8 <= u;) t[A++] = 255 & l, l >>= 8, u -= 8, A === n + 256 && (t[n] = 255, n = A++);\n 4096 === a ? (f(i), a = s + 1, c = e + 1, p = {}) : (1 << c <= a && ++c, p[m] = a++), d = w;\n } else d = Q;\n }\n return f(d), f(s), h(1), n + 1 === A ? t[n] = 0 : (t[n] = A - n - 1, t[A++] = 0), A;\n }(t, n, f < 2 ? 2 : f, a);\n }, this.end = function () {\n return !1 === d && (t[n++] = 59, d = !0), n;\n };\n }, A.GifReader = xt;\n } catch (o) {}\n function It(t) {\n var A,\n e,\n r,\n n,\n i,\n o = Math.floor,\n s = new Array(64),\n a = new Array(64),\n c = new Array(64),\n u = new Array(64),\n l = new Array(65535),\n h = new Array(65535),\n f = new Array(64),\n d = new Array(64),\n p = [],\n B = 0,\n g = 7,\n w = new Array(64),\n m = new Array(64),\n Q = new Array(64),\n C = new Array(256),\n y = new Array(2048),\n v = [0, 1, 5, 6, 14, 15, 27, 28, 2, 4, 7, 13, 16, 26, 29, 42, 3, 8, 12, 17, 25, 30, 41, 43, 9, 11, 18, 24, 31, 40, 44, 53, 10, 19, 23, 32, 39, 45, 52, 54, 20, 22, 33, 38, 46, 51, 55, 60, 21, 34, 37, 47, 50, 56, 59, 61, 35, 36, 48, 49, 57, 58, 62, 63],\n F = [0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0],\n U = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n N = [0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 125],\n E = [1, 2, 3, 0, 4, 17, 5, 18, 33, 49, 65, 6, 19, 81, 97, 7, 34, 113, 20, 50, 129, 145, 161, 8, 35, 66, 177, 193, 21, 82, 209, 240, 36, 51, 98, 114, 130, 9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250],\n b = [0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],\n L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n H = [0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 119],\n x = [0, 1, 2, 3, 17, 4, 5, 33, 49, 6, 18, 65, 81, 7, 97, 113, 19, 34, 50, 129, 8, 20, 66, 145, 161, 177, 193, 9, 35, 51, 82, 240, 21, 98, 114, 209, 10, 22, 36, 52, 225, 37, 241, 23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250];\n function S(t, A) {\n for (var e = 0, r = 0, n = new Array(), i = 1; i <= 16; i++) {\n for (var o = 1; o <= t[i]; o++) n[A[r]] = [], n[A[r]][0] = e, n[A[r]][1] = i, r++, e++;\n e *= 2;\n }\n return n;\n }\n function I(t) {\n for (var A = t[0], e = t[1] - 1; 0 <= e;) A & 1 << e && (B |= 1 << g), e--, --g < 0 && (255 == B ? (_(255), _(0)) : _(B), g = 7, B = 0);\n }\n function _(t) {\n p.push(t);\n }\n function T(t) {\n _(t >> 8 & 255), _(255 & t);\n }\n function R(t, A, e, r, n) {\n for (var i, o = n[0], s = n[240], a = function (t, A) {\n var e,\n r,\n n,\n i,\n o,\n s,\n a,\n c,\n u,\n l,\n h = 0;\n for (u = 0; u < 8; ++u) {\n e = t[h], r = t[h + 1], n = t[h + 2], i = t[h + 3], o = t[h + 4], s = t[h + 5], a = t[h + 6];\n var d = e + (c = t[h + 7]),\n p = e - c,\n B = r + a,\n g = r - a,\n w = n + s,\n m = n - s,\n Q = i + o,\n C = i - o,\n y = d + Q,\n v = d - Q,\n F = B + w,\n U = B - w;\n t[h] = y + F, t[h + 4] = y - F;\n var N = .707106781 * (U + v);\n t[h + 2] = v + N, t[h + 6] = v - N;\n var E = .382683433 * ((y = C + m) - (U = g + p)),\n b = .5411961 * y + E,\n L = 1.306562965 * U + E,\n H = .707106781 * (F = m + g),\n x = p + H,\n S = p - H;\n t[h + 5] = S + b, t[h + 3] = S - b, t[h + 1] = x + L, t[h + 7] = x - L, h += 8;\n }\n for (u = h = 0; u < 8; ++u) {\n e = t[h], r = t[h + 8], n = t[h + 16], i = t[h + 24], o = t[h + 32], s = t[h + 40], a = t[h + 48];\n var I = e + (c = t[h + 56]),\n _ = e - c,\n T = r + a,\n R = r - a,\n O = n + s,\n K = n - s,\n M = i + o,\n P = i - o,\n D = I + M,\n k = I - M,\n z = T + O,\n j = T - O;\n t[h] = D + z, t[h + 32] = D - z;\n var q = .707106781 * (j + k);\n t[h + 16] = k + q, t[h + 48] = k - q;\n var V = .382683433 * ((D = P + K) - (j = R + _)),\n X = .5411961 * D + V,\n G = 1.306562965 * j + V,\n J = .707106781 * (z = K + R),\n W = _ + J,\n Y = _ - J;\n t[h + 40] = Y + X, t[h + 24] = Y - X, t[h + 8] = W + G, t[h + 56] = W - G, h++;\n }\n for (u = 0; u < 64; ++u) l = t[u] * A[u], f[u] = 0 < l ? l + .5 | 0 : l - .5 | 0;\n return f;\n }(t, A), c = 0; c < 64; ++c) d[v[c]] = a[c];\n var u = d[0] - e;\n e = d[0], 0 == u ? I(r[0]) : (I(r[h[i = 32767 + u]]), I(l[i]));\n for (var p = 63; 0 < p && 0 == d[p]; p--);\n if (0 == p) return I(o), e;\n for (var B, g = 1; g <= p;) {\n for (var w = g; 0 == d[g] && g <= p; ++g);\n var m = g - w;\n if (16 <= m) {\n B = m >> 4;\n for (var Q = 1; Q <= B; ++Q) I(s);\n m &= 15;\n }\n i = 32767 + d[g], I(n[(m << 4) + h[i]]), I(l[i]), g++;\n }\n return 63 != p && I(o), e;\n }\n function O(t) {\n t <= 0 && (t = 1), 100 < t && (t = 100), i != t && (function (t) {\n for (var A = [16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55, 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62, 18, 22, 37, 56, 68, 109, 103, 77, 24, 35, 55, 64, 81, 104, 113, 92, 49, 64, 78, 87, 103, 121, 120, 101, 72, 92, 95, 98, 112, 100, 103, 99], e = 0; e < 64; e++) {\n var r = o((A[e] * t + 50) / 100);\n r < 1 ? r = 1 : 255 < r && (r = 255), s[v[e]] = r;\n }\n for (var n = [17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99, 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99], i = 0; i < 64; i++) {\n var l = o((n[i] * t + 50) / 100);\n l < 1 ? l = 1 : 255 < l && (l = 255), a[v[i]] = l;\n }\n for (var h = [1, 1.387039845, 1.306562965, 1.175875602, 1, .785694958, .5411961, .275899379], f = 0, d = 0; d < 8; d++) for (var p = 0; p < 8; p++) c[f] = 1 / (s[v[f]] * h[d] * h[p] * 8), u[f] = 1 / (a[v[f]] * h[d] * h[p] * 8), f++;\n }(t < 50 ? Math.floor(5e3 / t) : Math.floor(200 - 2 * t)), i = t);\n }\n this.encode = function (t, i) {\n var o, l;\n new Date().getTime(), i && O(i), p = new Array(), B = 0, g = 7, T(65496), T(65504), T(16), _(74), _(70), _(73), _(70), _(0), _(1), _(1), _(0), T(1), T(1), _(0), _(0), function () {\n T(65499), T(132), _(0);\n for (var t = 0; t < 64; t++) _(s[t]);\n _(1);\n for (var A = 0; A < 64; A++) _(a[A]);\n }(), o = t.width, l = t.height, T(65472), T(17), _(8), T(l), T(o), _(3), _(1), _(17), _(0), _(2), _(17), _(1), _(3), _(17), _(1), function () {\n T(65476), T(418), _(0);\n for (var t = 0; t < 16; t++) _(F[t + 1]);\n for (var A = 0; A <= 11; A++) _(U[A]);\n _(16);\n for (var e = 0; e < 16; e++) _(N[e + 1]);\n for (var r = 0; r <= 161; r++) _(E[r]);\n _(1);\n for (var n = 0; n < 16; n++) _(b[n + 1]);\n for (var i = 0; i <= 11; i++) _(L[i]);\n _(17);\n for (var o = 0; o < 16; o++) _(H[o + 1]);\n for (var s = 0; s <= 161; s++) _(x[s]);\n }(), T(65498), T(12), _(3), _(1), _(0), _(2), _(17), _(3), _(17), _(0), _(63), _(0);\n var h = 0,\n f = 0,\n d = 0;\n B = 0, g = 7, this.encode.displayName = \"_encode_\";\n for (var C, v, S, K, M, P, D, k, z, j = t.data, q = t.width, V = t.height, X = 4 * q, G = 0; G < V;) {\n for (C = 0; C < X;) {\n for (P = M = X * G + C, D = -1, z = k = 0; z < 64; z++) P = M + (k = z >> 3) * X + (D = 4 * (7 & z)), V <= G + k && (P -= X * (G + 1 + k - V)), X <= C + D && (P -= C + D - X + 4), v = j[P++], S = j[P++], K = j[P++], w[z] = (y[v] + y[S + 256 >> 0] + y[K + 512 >> 0] >> 16) - 128, m[z] = (y[v + 768 >> 0] + y[S + 1024 >> 0] + y[K + 1280 >> 0] >> 16) - 128, Q[z] = (y[v + 1280 >> 0] + y[S + 1536 >> 0] + y[K + 1792 >> 0] >> 16) - 128;\n h = R(w, c, h, A, r), f = R(m, u, f, e, n), d = R(Q, u, d, e, n), C += 32;\n }\n G += 8;\n }\n if (0 <= g) {\n var J = [];\n J[1] = g + 1, J[0] = (1 << g + 1) - 1, I(J);\n }\n return T(65497), new Uint8Array(p);\n }, new Date().getTime(), t || (t = 50), function () {\n for (var t = String.fromCharCode, A = 0; A < 256; A++) C[A] = t(A);\n }(), A = S(F, U), e = S(b, L), r = S(N, E), n = S(H, x), function () {\n for (var t = 1, A = 2, e = 1; e <= 15; e++) {\n for (var r = t; r < A; r++) h[32767 + r] = e, l[32767 + r] = [], l[32767 + r][1] = e, l[32767 + r][0] = r;\n for (var n = -(A - 1); n <= -t; n++) h[32767 + n] = e, l[32767 + n] = [], l[32767 + n][1] = e, l[32767 + n][0] = A - 1 + n;\n t <<= 1, A <<= 1;\n }\n }(), function () {\n for (var t = 0; t < 256; t++) y[t] = 19595 * t, y[t + 256 >> 0] = 38470 * t, y[t + 512 >> 0] = 7471 * t + 32768, y[t + 768 >> 0] = -11059 * t, y[t + 1024 >> 0] = -21709 * t, y[t + 1280 >> 0] = 32768 * t + 8421375, y[t + 1536 >> 0] = -27439 * t, y[t + 1792 >> 0] = -5329 * t;\n }(), O(t), new Date().getTime();\n }\n function _t(t, A) {\n if (this.pos = 0, this.buffer = t, this.datav = new DataView(t.buffer), this.is_with_alpha = !!A, this.bottom_up = !0, this.flag = String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]), this.pos += 2, -1 === [\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag)) throw new Error(\"Invalid BMP File\");\n this.parseHeader(), this.parseBGR();\n }\n window.tmp = xt, dt.API.adler32cs = (Qt = \"function\" == typeof ArrayBuffer && \"function\" == typeof Uint8Array, Ct = null, yt = function () {\n if (!Qt) return function () {\n return !1;\n };\n try {\n var t = {};\n \"function\" == typeof t.Buffer && (Ct = t.Buffer);\n } catch (t) {}\n return function (t) {\n return t instanceof ArrayBuffer || null !== Ct && t instanceof Ct;\n };\n }(), vt = null !== Ct ? function (t) {\n return new Ct(t, \"utf8\").toString(\"binary\");\n } : function (t) {\n return unescape(encodeURIComponent(t));\n }, Ft = function (t, A) {\n for (var e = 65535 & t, r = t >>> 16, n = 0, i = A.length; n < i; n++) r = (r + (e = (e + (255 & A.charCodeAt(n))) % 65521)) % 65521;\n return (r << 16 | e) >>> 0;\n }, Ut = function (t, A) {\n for (var e = 65535 & t, r = t >>> 16, n = 0, i = A.length; n < i; n++) r = (r + (e = (e + A[n]) % 65521)) % 65521;\n return (r << 16 | e) >>> 0;\n }, Et = (Nt = {}).Adler32 = (((mt = (wt = function (t) {\n if (!(this instanceof wt)) throw new TypeError(\"Constructor cannot called be as a function.\");\n if (!isFinite(t = null == t ? 1 : +t)) throw new Error(\"First arguments needs to be a finite number.\");\n this.checksum = t >>> 0;\n }).prototype = {}).constructor = wt).from = ((pt = function (t) {\n if (!(this instanceof wt)) throw new TypeError(\"Constructor cannot called be as a function.\");\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n this.checksum = Ft(1, t.toString());\n }).prototype = mt, pt), wt.fromUtf8 = ((Bt = function (t) {\n if (!(this instanceof wt)) throw new TypeError(\"Constructor cannot called be as a function.\");\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n var A = vt(t.toString());\n this.checksum = Ft(1, A);\n }).prototype = mt, Bt), Qt && (wt.fromBuffer = ((gt = function (t) {\n if (!(this instanceof wt)) throw new TypeError(\"Constructor cannot called be as a function.\");\n if (!yt(t)) throw new Error(\"First argument needs to be ArrayBuffer.\");\n var A = new Uint8Array(t);\n return this.checksum = Ut(1, A);\n }).prototype = mt, gt)), mt.update = function (t) {\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n return t = t.toString(), this.checksum = Ft(this.checksum, t);\n }, mt.updateUtf8 = function (t) {\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n var A = vt(t.toString());\n return this.checksum = Ft(this.checksum, A);\n }, Qt && (mt.updateBuffer = function (t) {\n if (!yt(t)) throw new Error(\"First argument needs to be ArrayBuffer.\");\n var A = new Uint8Array(t);\n return this.checksum = Ut(this.checksum, A);\n }), mt.clone = function () {\n return new Et(this.checksum);\n }, wt), Nt.from = function (t) {\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n return Ft(1, t.toString());\n }, Nt.fromUtf8 = function (t) {\n if (null == t) throw new Error(\"First argument needs to be a string.\");\n var A = vt(t.toString());\n return Ft(1, A);\n }, Qt && (Nt.fromBuffer = function (t) {\n if (!yt(t)) throw new Error(\"First argument need to be ArrayBuffer.\");\n var A = new Uint8Array(t);\n return Ut(1, A);\n }), Nt), function (t) {\n t.__bidiEngine__ = t.prototype.__bidiEngine__ = function (t) {\n var e,\n r,\n n,\n i,\n o,\n s,\n a,\n c = A,\n u = [[0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 17, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 21, 21, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0]],\n l = [[2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 33, 3, 1, 1]],\n h = {\n L: 0,\n R: 1,\n EN: 2,\n AN: 3,\n N: 4,\n B: 5,\n S: 6\n },\n f = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 32: 4,\n 251: 5,\n 254: 6,\n 255: 7\n },\n d = [\"(\", \")\", \"(\", \"<\", \">\", \"<\", \"[\", \"]\", \"[\", \"{\", \"}\", \"{\", \"«\", \"»\", \"«\", \"‹\", \"›\", \"‹\", \"⁅\", \"⁆\", \"⁅\", \"⁽\", \"⁾\", \"⁽\", \"₍\", \"₎\", \"₍\", \"≤\", \"≥\", \"≤\", \"〈\", \"〉\", \"〈\", \"﹙\", \"﹚\", \"﹙\", \"﹛\", \"﹜\", \"﹛\", \"﹝\", \"﹞\", \"﹝\", \"﹤\", \"﹥\", \"﹤\"],\n p = new RegExp(/^([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 B = !1,\n g = 0;\n this.__bidiEngine__ = {};\n var w = function (t) {\n var A = t.charCodeAt(),\n e = A >> 8,\n r = f[e];\n return void 0 !== r ? c[256 * r + (255 & A)] : 252 === e || 253 === e ? \"AL\" : p.test(e) ? \"L\" : 8 === e ? \"R\" : \"N\";\n },\n m = function (t) {\n for (var A, e = 0; e < t.length; e++) {\n if (\"L\" === (A = w(t.charAt(e)))) return !1;\n if (\"R\" === A) return !0;\n }\n return !1;\n },\n Q = function (t, A, o, s) {\n var a,\n c,\n u,\n l,\n h = A[s];\n switch (h) {\n case \"L\":\n case \"R\":\n B = !1;\n break;\n case \"N\":\n case \"AN\":\n break;\n case \"EN\":\n B && (h = \"AN\");\n break;\n case \"AL\":\n B = !0, h = \"R\";\n break;\n case \"WS\":\n h = \"N\";\n break;\n case \"CS\":\n s < 1 || s + 1 >= A.length || \"EN\" !== (a = o[s - 1]) && \"AN\" !== a || \"EN\" !== (c = A[s + 1]) && \"AN\" !== c ? h = \"N\" : B && (c = \"AN\"), h = c === a ? c : \"N\";\n break;\n case \"ES\":\n h = \"EN\" === (a = 0 < s ? o[s - 1] : \"B\") && s + 1 < A.length && \"EN\" === A[s + 1] ? \"EN\" : \"N\";\n break;\n case \"ET\":\n if (0 < s && \"EN\" === o[s - 1]) {\n h = \"EN\";\n break;\n }\n if (B) {\n h = \"N\";\n break;\n }\n for (u = s + 1, l = A.length; u < l && \"ET\" === A[u];) u++;\n h = u < l && \"EN\" === A[u] ? \"EN\" : \"N\";\n break;\n case \"NSM\":\n if (n && !i) {\n for (l = A.length, u = s + 1; u < l && \"NSM\" === A[u];) u++;\n if (u < l) {\n var f = t[s],\n d = 1425 <= f && f <= 2303 || 64286 === f;\n if (a = A[u], d && (\"R\" === a || \"AL\" === a)) {\n h = \"R\";\n break;\n }\n }\n }\n h = s < 1 || \"B\" === (a = A[s - 1]) ? \"N\" : o[s - 1];\n break;\n case \"B\":\n e = !(B = !1), h = g;\n break;\n case \"S\":\n r = !0, h = \"N\";\n break;\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n B = !1;\n break;\n case \"BN\":\n h = \"N\";\n }\n return h;\n },\n C = function (t, A, e) {\n var r = t.split(\"\");\n return e && y(r, e, {\n hiLevel: g\n }), r.reverse(), A && A.reverse(), r.join(\"\");\n },\n y = function (t, A, n) {\n var i,\n o,\n s,\n a,\n c,\n f = -1,\n d = t.length,\n p = 0,\n m = [],\n C = g ? l : u,\n y = [];\n for (r = e = B = !1, o = 0; o < d; o++) y[o] = w(t[o]);\n for (s = 0; s < d; s++) {\n if (c = p, m[s] = Q(t, y, m, s), i = 240 & (p = C[c][h[m[s]]]), p &= 15, A[s] = a = C[p][5], 0 < i) if (16 === i) {\n for (o = f; o < s; o++) A[o] = 1;\n f = -1;\n } else f = -1;\n if (C[p][6]) -1 === f && (f = s);else if (-1 < f) {\n for (o = f; o < s; o++) A[o] = a;\n f = -1;\n }\n \"B\" === y[s] && (A[s] = 0), n.hiLevel |= a;\n }\n r && function (t, A, e) {\n for (var r = 0; r < e; r++) if (\"S\" === t[r]) {\n A[r] = g;\n for (var n = r - 1; 0 <= n && \"WS\" === t[n]; n--) A[n] = g;\n }\n }(y, A, d);\n },\n v = function (t, A, r, n, i) {\n if (!(i.hiLevel < t)) {\n if (1 === t && 1 === g && !e) return A.reverse(), void (r && r.reverse());\n for (var o, s, a, c, u = A.length, l = 0; l < u;) {\n if (n[l] >= t) {\n for (a = l + 1; a < u && n[a] >= t;) a++;\n for (c = l, s = a - 1; c < s; c++, s--) o = A[c], A[c] = A[s], A[s] = o, r && (o = r[c], r[c] = r[s], r[s] = o);\n l = a;\n }\n l++;\n }\n }\n },\n F = function (t, A, e) {\n var r = t.split(\"\"),\n n = {\n hiLevel: g\n };\n return e || (e = []), y(r, e, n), function (t, A, e) {\n if (0 !== e.hiLevel && a) for (var r, n = 0; n < t.length; n++) 1 === A[n] && 0 <= (r = d.indexOf(t[n])) && (t[n] = d[r + 1]);\n }(r, e, n), v(2, r, A, e, n), v(1, r, A, e, n), r.join(\"\");\n };\n return this.__bidiEngine__.doBidiReorder = function (t, A, e) {\n if (function (t, A) {\n if (A) for (var e = 0; e < t.length; e++) A[e] = e;\n void 0 === i && (i = m(t)), void 0 === s && (s = m(t));\n }(t, A), n || !o || s) {\n if (n && o && i ^ s) g = i ? 1 : 0, t = C(t, A, e);else if (!n && o && s) g = i ? 1 : 0, t = F(t, A, e), t = C(t, A);else if (!n || i || o || s) {\n if (n && !o && i ^ s) t = C(t, A), t = i ? (g = 0, F(t, A, e)) : (g = 1, t = F(t, A, e), C(t, A));else if (n && i && !o && s) g = 1, t = F(t, A, e), t = C(t, A);else if (!n && !o && i ^ s) {\n var r = a;\n i ? (g = 1, t = F(t, A, e), g = 0, a = !1, t = F(t, A, e), a = r) : (g = 0, t = F(t, A, e), t = C(t, A), a = !(g = 1), t = F(t, A, e), a = r, t = C(t, A));\n }\n } else g = 0, t = F(t, A, e);\n } else g = i ? 1 : 0, t = F(t, A, e);\n return t;\n }, this.__bidiEngine__.setOptions = function (t) {\n t && (n = t.isInputVisual, o = t.isOutputVisual, i = t.isInputRtl, s = t.isOutputRtl, a = t.isSymmetricSwapping);\n }, this.__bidiEngine__.setOptions(t), this.__bidiEngine__;\n };\n var A = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"N\", \"N\", \"ET\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"N\", \"N\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"N\", \"ET\", \"ET\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"N\", \"L\", \"N\", \"N\", \"BN\", \"N\", \"N\", \"ET\", \"ET\", \"EN\", \"EN\", \"N\", \"L\", \"N\", \"N\", \"N\", \"EN\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"ET\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"R\", \"NSM\", \"R\", \"NSM\", \"NSM\", \"R\", \"NSM\", \"NSM\", \"R\", \"NSM\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"N\", \"N\", \"N\", \"N\", \"N\", \"R\", \"R\", \"R\", \"R\", \"R\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"N\", \"N\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"N\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"N\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"N\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"N\", \"N\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"R\", \"R\", \"N\", \"N\", \"N\", \"N\", \"R\", \"N\", \"N\", \"N\", \"N\", \"N\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"WS\", \"BN\", \"BN\", \"BN\", \"L\", \"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\", \"WS\", \"B\", \"LRE\", \"RLE\", \"PDF\", \"LRO\", \"RLO\", \"CS\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"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\", \"WS\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"N\", \"LRI\", \"RLI\", \"FSI\", \"PDI\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"EN\", \"L\", \"N\", \"N\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"ES\", \"ES\", \"N\", \"N\", \"N\", \"L\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"ES\", \"ES\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"R\", \"NSM\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"ES\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"N\", \"R\", \"R\", \"R\", \"R\", \"R\", \"N\", \"R\", \"N\", \"R\", \"R\", \"N\", \"R\", \"R\", \"N\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"R\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"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\", \"CS\", \"N\", \"CS\", \"N\", \"N\", \"CS\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"ET\", \"N\", \"N\", \"ES\", \"ES\", \"N\", \"N\", \"N\", \"N\", \"N\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"N\", \"N\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"N\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"N\", \"N\", \"BN\", \"N\", \"N\", \"N\", \"ET\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"N\", \"N\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"N\", \"N\", \"L\", \"L\", \"L\", \"N\", \"N\", \"N\", \"ET\", \"ET\", \"N\", \"N\", \"N\", \"ET\", \"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 e = new t.__bidiEngine__({\n isInputVisual: !0\n });\n t.API.events.push([\"postProcessText\", function (t) {\n var A = t.text,\n r = (t.x, t.y, t.options || {}),\n n = (t.mutex, r.lang, []);\n if (\"[object Array]\" === Object.prototype.toString.call(A)) {\n var i = 0;\n for (n = [], i = 0; i < A.length; i += 1) \"[object Array]\" === Object.prototype.toString.call(A[i]) ? n.push([e.doBidiReorder(A[i][0]), A[i][1], A[i][2]]) : n.push([e.doBidiReorder(A[i])]);\n t.text = n;\n } else t.text = e.doBidiReorder(A);\n }]);\n }(dt), window.tmp = It, _t.prototype.parseHeader = function () {\n if (this.fileSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.reserved = this.datav.getUint32(this.pos, !0), this.pos += 4, this.offset = this.datav.getUint32(this.pos, !0), this.pos += 4, this.headerSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.width = this.datav.getUint32(this.pos, !0), this.pos += 4, this.height = this.datav.getInt32(this.pos, !0), this.pos += 4, this.planes = this.datav.getUint16(this.pos, !0), this.pos += 2, this.bitPP = this.datav.getUint16(this.pos, !0), this.pos += 2, this.compress = this.datav.getUint32(this.pos, !0), this.pos += 4, this.rawSize = this.datav.getUint32(this.pos, !0), this.pos += 4, this.hr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.vr = this.datav.getUint32(this.pos, !0), this.pos += 4, this.colors = this.datav.getUint32(this.pos, !0), this.pos += 4, this.importantColors = this.datav.getUint32(this.pos, !0), this.pos += 4, 16 === this.bitPP && this.is_with_alpha && (this.bitPP = 15), this.bitPP < 15) {\n var t = 0 === this.colors ? 1 << this.bitPP : this.colors;\n this.palette = new Array(t);\n for (var A = 0; A < t; A++) {\n var e = this.datav.getUint8(this.pos++, !0),\n r = this.datav.getUint8(this.pos++, !0),\n n = this.datav.getUint8(this.pos++, !0),\n i = this.datav.getUint8(this.pos++, !0);\n this.palette[A] = {\n red: n,\n green: r,\n blue: e,\n quad: i\n };\n }\n }\n this.height < 0 && (this.height *= -1, this.bottom_up = !1);\n }, _t.prototype.parseBGR = function () {\n this.pos = this.offset;\n try {\n var t = \"bit\" + this.bitPP,\n A = this.width * this.height * 4;\n this.data = new Uint8Array(A), this[t]();\n } catch (t) {\n console.log(\"bit decode error:\" + t);\n }\n }, _t.prototype.bit1 = function () {\n var t = Math.ceil(this.width / 8),\n A = t % 4,\n e = 0 <= this.height ? this.height - 1 : -this.height;\n for (e = this.height - 1; 0 <= e; e--) {\n for (var r = this.bottom_up ? e : this.height - 1 - e, n = 0; n < t; n++) for (var i = this.datav.getUint8(this.pos++, !0), o = r * this.width * 4 + 8 * n * 4, s = 0; s < 8 && 8 * n + s < this.width; s++) {\n var a = this.palette[i >> 7 - s & 1];\n this.data[o + 4 * s] = a.blue, this.data[o + 4 * s + 1] = a.green, this.data[o + 4 * s + 2] = a.red, this.data[o + 4 * s + 3] = 255;\n }\n 0 != A && (this.pos += 4 - A);\n }\n }, _t.prototype.bit4 = function () {\n for (var t = Math.ceil(this.width / 2), A = t % 4, e = this.height - 1; 0 <= e; e--) {\n for (var r = this.bottom_up ? e : this.height - 1 - e, n = 0; n < t; n++) {\n var i = this.datav.getUint8(this.pos++, !0),\n o = r * this.width * 4 + 2 * n * 4,\n s = i >> 4,\n a = 15 & i,\n c = this.palette[s];\n if (this.data[o] = c.blue, this.data[o + 1] = c.green, this.data[o + 2] = c.red, this.data[o + 3] = 255, 2 * n + 1 >= this.width) break;\n c = this.palette[a], this.data[o + 4] = c.blue, this.data[o + 4 + 1] = c.green, this.data[o + 4 + 2] = c.red, this.data[o + 4 + 3] = 255;\n }\n 0 != A && (this.pos += 4 - A);\n }\n }, _t.prototype.bit8 = function () {\n for (var t = this.width % 4, A = this.height - 1; 0 <= A; A--) {\n for (var e = this.bottom_up ? A : this.height - 1 - A, r = 0; r < this.width; r++) {\n var n = this.datav.getUint8(this.pos++, !0),\n i = e * this.width * 4 + 4 * r;\n if (n < this.palette.length) {\n var o = this.palette[n];\n this.data[i] = o.red, this.data[i + 1] = o.green, this.data[i + 2] = o.blue, this.data[i + 3] = 255;\n } else this.data[i] = 255, this.data[i + 1] = 255, this.data[i + 2] = 255, this.data[i + 3] = 255;\n }\n 0 != t && (this.pos += 4 - t);\n }\n }, _t.prototype.bit15 = function () {\n for (var t = this.width % 3, A = parseInt(\"11111\", 2), e = this.height - 1; 0 <= e; e--) {\n for (var r = this.bottom_up ? e : this.height - 1 - e, n = 0; n < this.width; n++) {\n var i = this.datav.getUint16(this.pos, !0);\n this.pos += 2;\n var o = (i & A) / A * 255 | 0,\n s = (i >> 5 & A) / A * 255 | 0,\n a = (i >> 10 & A) / A * 255 | 0,\n c = i >> 15 ? 255 : 0,\n u = r * this.width * 4 + 4 * n;\n this.data[u] = a, this.data[u + 1] = s, this.data[u + 2] = o, this.data[u + 3] = c;\n }\n this.pos += t;\n }\n }, _t.prototype.bit16 = function () {\n for (var t = this.width % 3, A = parseInt(\"11111\", 2), e = parseInt(\"111111\", 2), r = this.height - 1; 0 <= r; r--) {\n for (var n = this.bottom_up ? r : this.height - 1 - r, i = 0; i < this.width; i++) {\n var o = this.datav.getUint16(this.pos, !0);\n this.pos += 2;\n var s = (o & A) / A * 255 | 0,\n a = (o >> 5 & e) / e * 255 | 0,\n c = (o >> 11) / A * 255 | 0,\n u = n * this.width * 4 + 4 * i;\n this.data[u] = c, this.data[u + 1] = a, this.data[u + 2] = s, this.data[u + 3] = 255;\n }\n this.pos += t;\n }\n }, _t.prototype.bit24 = function () {\n for (var t = this.height - 1; 0 <= t; t--) {\n for (var A = this.bottom_up ? t : this.height - 1 - t, e = 0; e < this.width; e++) {\n var r = this.datav.getUint8(this.pos++, !0),\n n = this.datav.getUint8(this.pos++, !0),\n i = this.datav.getUint8(this.pos++, !0),\n o = A * this.width * 4 + 4 * e;\n this.data[o] = i, this.data[o + 1] = n, this.data[o + 2] = r, this.data[o + 3] = 255;\n }\n this.pos += this.width % 4;\n }\n }, _t.prototype.bit32 = function () {\n for (var t = this.height - 1; 0 <= t; t--) for (var A = this.bottom_up ? t : this.height - 1 - t, e = 0; e < this.width; e++) {\n var r = this.datav.getUint8(this.pos++, !0),\n n = this.datav.getUint8(this.pos++, !0),\n i = this.datav.getUint8(this.pos++, !0),\n o = this.datav.getUint8(this.pos++, !0),\n s = A * this.width * 4 + 4 * e;\n this.data[s] = i, this.data[s + 1] = n, this.data[s + 2] = r, this.data[s + 3] = o;\n }\n }, _t.prototype.getData = function () {\n return this.data;\n }, window.tmp = _t, function (t) {\n var A = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29];\n function e() {\n var t = this;\n function A(t, A) {\n for (var e = 0; e |= 1 & t, t >>>= 1, e <<= 1, 0 < --A;);\n return e >>> 1;\n }\n t.build_tree = function (e) {\n var r,\n n,\n i,\n o = t.dyn_tree,\n s = t.stat_desc.static_tree,\n a = t.stat_desc.elems,\n c = -1;\n for (e.heap_len = 0, e.heap_max = 573, r = 0; r < a; r++) 0 !== o[2 * r] ? (e.heap[++e.heap_len] = c = r, e.depth[r] = 0) : o[2 * r + 1] = 0;\n for (; e.heap_len < 2;) o[2 * (i = e.heap[++e.heap_len] = c < 2 ? ++c : 0)] = 1, e.depth[i] = 0, e.opt_len--, s && (e.static_len -= s[2 * i + 1]);\n for (t.max_code = c, r = Math.floor(e.heap_len / 2); 1 <= r; r--) e.pqdownheap(o, r);\n for (i = a; r = e.heap[1], e.heap[1] = e.heap[e.heap_len--], e.pqdownheap(o, 1), n = e.heap[1], e.heap[--e.heap_max] = r, e.heap[--e.heap_max] = n, o[2 * i] = o[2 * r] + o[2 * n], e.depth[i] = Math.max(e.depth[r], e.depth[n]) + 1, o[2 * r + 1] = o[2 * n + 1] = i, e.heap[1] = i++, e.pqdownheap(o, 1), 2 <= e.heap_len;);\n e.heap[--e.heap_max] = e.heap[1], function (A) {\n var e,\n r,\n n,\n i,\n o,\n s,\n a = t.dyn_tree,\n c = t.stat_desc.static_tree,\n u = t.stat_desc.extra_bits,\n l = t.stat_desc.extra_base,\n h = t.stat_desc.max_length,\n f = 0;\n for (i = 0; i <= 15; i++) A.bl_count[i] = 0;\n for (a[2 * A.heap[A.heap_max] + 1] = 0, e = A.heap_max + 1; e < 573; e++) h < (i = a[2 * a[2 * (r = A.heap[e]) + 1] + 1] + 1) && (i = h, f++), a[2 * r + 1] = i, r > t.max_code || (A.bl_count[i]++, o = 0, l <= r && (o = u[r - l]), s = a[2 * r], A.opt_len += s * (i + o), c && (A.static_len += s * (c[2 * r + 1] + o)));\n if (0 !== f) {\n do {\n for (i = h - 1; 0 === A.bl_count[i];) i--;\n A.bl_count[i]--, A.bl_count[i + 1] += 2, A.bl_count[h]--, f -= 2;\n } while (0 < f);\n for (i = h; 0 !== i; i--) for (r = A.bl_count[i]; 0 !== r;) (n = A.heap[--e]) > t.max_code || (a[2 * n + 1] != i && (A.opt_len += (i - a[2 * n + 1]) * a[2 * n], a[2 * n + 1] = i), r--);\n }\n }(e), function (t, e, r) {\n var n,\n i,\n o,\n s = [],\n a = 0;\n for (n = 1; n <= 15; n++) s[n] = a = a + r[n - 1] << 1;\n for (i = 0; i <= e; i++) 0 !== (o = t[2 * i + 1]) && (t[2 * i] = A(s[o]++, o));\n }(o, t.max_code, e.bl_count);\n };\n }\n function r(t, A, e, r, n) {\n this.static_tree = t, this.extra_bits = A, this.extra_base = e, this.elems = r, this.max_length = n;\n }\n function n(t, A, e, r, n) {\n this.good_length = t, this.max_lazy = A, this.nice_length = e, this.max_chain = r, this.func = n;\n }\n e._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28], e.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0], e.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576], e.d_code = function (t) {\n return t < 256 ? A[t] : A[256 + (t >>> 7)];\n }, e.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], e.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], e.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], e.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], r.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8], r.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5], r.static_l_desc = new r(r.static_ltree, e.extra_lbits, 257, 286, 15), r.static_d_desc = new r(r.static_dtree, e.extra_dbits, 0, 30, 15), r.static_bl_desc = new r(null, e.extra_blbits, 0, 19, 7);\n var i = [new n(0, 0, 0, 0, 0), new n(4, 4, 8, 4, 1), new n(4, 5, 16, 8, 1), new n(4, 6, 32, 32, 1), new n(4, 4, 16, 16, 2), new n(8, 16, 32, 32, 2), new n(8, 16, 128, 128, 2), new n(8, 32, 128, 256, 2), new n(32, 128, 258, 1024, 2), new n(32, 258, 258, 4096, 2)],\n o = [\"need dictionary\", \"stream end\", \"\", \"\", \"stream error\", \"data error\", \"\", \"buffer error\", \"\", \"\"];\n function s(t, A, e, r) {\n var n = t[2 * A],\n i = t[2 * e];\n return n < i || n == i && r[A] <= r[e];\n }\n function a() {\n var t,\n A,\n n,\n a,\n c,\n u,\n l,\n h,\n f,\n d,\n p,\n B,\n g,\n w,\n m,\n Q,\n C,\n y,\n v,\n F,\n U,\n N,\n E,\n b,\n L,\n H,\n x,\n S,\n I,\n _,\n T,\n R,\n O,\n K,\n M,\n P,\n D,\n k,\n z,\n j,\n q,\n V = this,\n X = new e(),\n G = new e(),\n J = new e();\n function W() {\n var t;\n for (t = 0; t < 286; t++) T[2 * t] = 0;\n for (t = 0; t < 30; t++) R[2 * t] = 0;\n for (t = 0; t < 19; t++) O[2 * t] = 0;\n T[512] = 1, V.opt_len = V.static_len = 0, P = k = 0;\n }\n function Y(t, A) {\n var e,\n r,\n n = -1,\n i = t[1],\n o = 0,\n s = 7,\n a = 4;\n for (0 === i && (s = 138, a = 3), t[2 * (A + 1) + 1] = 65535, e = 0; e <= A; e++) r = i, i = t[2 * (e + 1) + 1], ++o < s && r == i || (o < a ? O[2 * r] += o : 0 !== r ? (r != n && O[2 * r]++, O[32]++) : o <= 10 ? O[34]++ : O[36]++, n = r, a = (o = 0) === i ? (s = 138, 3) : r == i ? (s = 6, 3) : (s = 7, 4));\n }\n function Z(t) {\n V.pending_buf[V.pending++] = t;\n }\n function $(t) {\n Z(255 & t), Z(t >>> 8 & 255);\n }\n function tt(t, A) {\n var e,\n r = A;\n 16 - r < q ? ($(j |= (e = t) << q & 65535), j = e >>> 16 - q, q += r - 16) : (j |= t << q & 65535, q += r);\n }\n function At(t, A) {\n var e = 2 * t;\n tt(65535 & A[e], 65535 & A[e + 1]);\n }\n function et(t, A) {\n var e,\n r,\n n = -1,\n i = t[1],\n o = 0,\n s = 7,\n a = 4;\n for (0 === i && (s = 138, a = 3), e = 0; e <= A; e++) if (r = i, i = t[2 * (e + 1) + 1], !(++o < s && r == i)) {\n if (o < a) for (; At(r, O), 0 != --o;);else 0 !== r ? (r != n && (At(r, O), o--), At(16, O), tt(o - 3, 2)) : o <= 10 ? (At(17, O), tt(o - 3, 3)) : (At(18, O), tt(o - 11, 7));\n n = r, a = (o = 0) === i ? (s = 138, 3) : r == i ? (s = 6, 3) : (s = 7, 4);\n }\n }\n function rt() {\n 16 == q ? ($(j), q = j = 0) : 8 <= q && (Z(255 & j), j >>>= 8, q -= 8);\n }\n function nt(t, A) {\n var r, n, i;\n if (V.pending_buf[D + 2 * P] = t >>> 8 & 255, V.pending_buf[D + 2 * P + 1] = 255 & t, V.pending_buf[K + P] = 255 & A, P++, 0 === t ? T[2 * A]++ : (k++, t--, T[2 * (e._length_code[A] + 256 + 1)]++, R[2 * e.d_code(t)]++), 0 == (8191 & P) && 2 < x) {\n for (r = 8 * P, n = U - C, i = 0; i < 30; i++) r += R[2 * i] * (5 + e.extra_dbits[i]);\n if (r >>>= 3, k < Math.floor(P / 2) && r < Math.floor(n / 2)) return !0;\n }\n return P == M - 1;\n }\n function it(t, A) {\n var r,\n n,\n i,\n o,\n s = 0;\n if (0 !== P) for (; r = V.pending_buf[D + 2 * s] << 8 & 65280 | 255 & V.pending_buf[D + 2 * s + 1], n = 255 & V.pending_buf[K + s], s++, 0 === r ? At(n, t) : (At((i = e._length_code[n]) + 256 + 1, t), 0 !== (o = e.extra_lbits[i]) && tt(n -= e.base_length[i], o), At(i = e.d_code(--r), A), 0 !== (o = e.extra_dbits[i]) && tt(r -= e.base_dist[i], o)), s < P;);\n At(256, t), z = t[513];\n }\n function ot() {\n 8 < q ? $(j) : 0 < q && Z(255 & j), q = j = 0;\n }\n function st(t, A, e) {\n var r, n;\n tt(0 + (e ? 1 : 0), 3), r = t, n = A, ot(), z = 8, $(n), $(~n), V.pending_buf.set(h.subarray(r, r + n), V.pending), V.pending += n;\n }\n function at(A) {\n (function (t, A, n) {\n var i,\n o,\n s = 0;\n 0 < x ? (X.build_tree(V), G.build_tree(V), s = function () {\n var t;\n for (Y(T, X.max_code), Y(R, G.max_code), J.build_tree(V), t = 18; 3 <= t && 0 === O[2 * e.bl_order[t] + 1]; t--);\n return V.opt_len += 3 * (t + 1) + 5 + 5 + 4, t;\n }(), i = V.opt_len + 3 + 7 >>> 3, (o = V.static_len + 3 + 7 >>> 3) <= i && (i = o)) : i = o = A + 5, A + 4 <= i && -1 != t ? st(t, A, n) : o == i ? (tt(2 + (n ? 1 : 0), 3), it(r.static_ltree, r.static_dtree)) : (tt(4 + (n ? 1 : 0), 3), function (t, A, r) {\n var n;\n for (tt(t - 257, 5), tt(A - 1, 5), tt(r - 4, 4), n = 0; n < r; n++) tt(O[2 * e.bl_order[n] + 1], 3);\n et(T, t - 1), et(R, A - 1);\n }(X.max_code + 1, G.max_code + 1, s + 1), it(T, R)), W(), n && ot();\n })(0 <= C ? C : -1, U - C, A), C = U, t.flush_pending();\n }\n function ct() {\n var A, e, r, n;\n do {\n if (0 == (n = f - E - U) && 0 === U && 0 === E) n = c;else if (-1 == n) n--;else if (c + c - 262 <= U) {\n for (h.set(h.subarray(c, c + c), 0), N -= c, U -= c, C -= c, r = A = g; e = 65535 & p[--r], p[r] = c <= e ? e - c : 0, 0 != --A;);\n for (r = A = c; e = 65535 & d[--r], d[r] = c <= e ? e - c : 0, 0 != --A;);\n n += c;\n }\n if (0 === t.avail_in) return;\n A = t.read_buf(h, U + E, n), 3 <= (E += A) && (B = ((B = 255 & h[U]) << Q ^ 255 & h[U + 1]) & m);\n } while (E < 262 && 0 !== t.avail_in);\n }\n function ut(t) {\n var A,\n e,\n r = L,\n n = U,\n i = b,\n o = c - 262 < U ? U - (c - 262) : 0,\n s = _,\n a = l,\n u = U + 258,\n f = h[n + i - 1],\n p = h[n + i];\n I <= b && (r >>= 2), E < s && (s = E);\n do {\n if (h[(A = t) + i] == p && h[A + i - 1] == f && h[A] == h[n] && h[++A] == h[n + 1]) {\n n += 2, A++;\n do {} while (h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && h[++n] == h[++A] && n < u);\n if (e = 258 - (u - n), n = u - 258, i < e) {\n if (N = t, s <= (i = e)) break;\n f = h[n + i - 1], p = h[n + i];\n }\n }\n } while ((t = 65535 & d[t & a]) > o && 0 != --r);\n return i <= E ? i : E;\n }\n function lt(t) {\n return t.total_in = t.total_out = 0, t.msg = null, V.pending = 0, V.pending_out = 0, A = 113, a = 0, X.dyn_tree = T, X.stat_desc = r.static_l_desc, G.dyn_tree = R, G.stat_desc = r.static_d_desc, J.dyn_tree = O, J.stat_desc = r.static_bl_desc, q = j = 0, z = 8, W(), function () {\n var t;\n for (f = 2 * c, t = p[g - 1] = 0; t < g - 1; t++) p[t] = 0;\n H = i[x].max_lazy, I = i[x].good_length, _ = i[x].nice_length, L = i[x].max_chain, y = b = 2, B = F = E = C = U = 0;\n }(), 0;\n }\n V.depth = [], V.bl_count = [], V.heap = [], T = [], R = [], O = [], V.pqdownheap = function (t, A) {\n for (var e = V.heap, r = e[A], n = A << 1; n <= V.heap_len && (n < V.heap_len && s(t, e[n + 1], e[n], V.depth) && n++, !s(t, r, e[n], V.depth));) e[A] = e[n], A = n, n <<= 1;\n e[A] = r;\n }, V.deflateInit = function (t, A, e, r, i, o) {\n return r || (r = 8), i || (i = 8), o || (o = 0), t.msg = null, -1 == A && (A = 6), i < 1 || 9 < i || 8 != r || e < 9 || 15 < e || A < 0 || 9 < A || o < 0 || 2 < o ? -2 : (t.dstate = V, l = (c = 1 << (u = e)) - 1, m = (g = 1 << (w = i + 7)) - 1, Q = Math.floor((w + 3 - 1) / 3), h = new Uint8Array(2 * c), d = [], p = [], M = 1 << i + 6, V.pending_buf = new Uint8Array(4 * M), n = 4 * M, D = Math.floor(M / 2), K = 3 * M, x = A, S = o, lt(t));\n }, V.deflateEnd = function () {\n return 42 != A && 113 != A && 666 != A ? -2 : (V.pending_buf = null, h = d = p = null, V.dstate = null, 113 == A ? -3 : 0);\n }, V.deflateParams = function (t, A, e) {\n var r = 0;\n return -1 == A && (A = 6), A < 0 || 9 < A || e < 0 || 2 < e ? -2 : (i[x].func != i[A].func && 0 !== t.total_in && (r = t.deflate(1)), x != A && (H = i[x = A].max_lazy, I = i[x].good_length, _ = i[x].nice_length, L = i[x].max_chain), S = e, r);\n }, V.deflateSetDictionary = function (t, e, r) {\n var n,\n i = r,\n o = 0;\n if (!e || 42 != A) return -2;\n if (i < 3) return 0;\n for (c - 262 < i && (o = r - (i = c - 262)), h.set(e.subarray(o, o + i), 0), C = U = i, B = ((B = 255 & h[0]) << Q ^ 255 & h[1]) & m, n = 0; n <= i - 3; n++) B = (B << Q ^ 255 & h[n + 2]) & m, d[n & l] = p[B], p[B] = n;\n return 0;\n }, V.deflate = function (e, s) {\n var f, w, L, I, _, T;\n if (4 < s || s < 0) return -2;\n if (!e.next_out || !e.next_in && 0 !== e.avail_in || 666 == A && 4 != s) return e.msg = o[4], -2;\n if (0 === e.avail_out) return e.msg = o[7], -5;\n if (t = e, I = a, a = s, 42 == A && (w = 8 + (u - 8 << 4) << 8, 3 < (L = (x - 1 & 255) >> 1) && (L = 3), w |= L << 6, 0 !== U && (w |= 32), A = 113, Z((T = w += 31 - w % 31) >> 8 & 255), Z(255 & T)), 0 !== V.pending) {\n if (t.flush_pending(), 0 === t.avail_out) return a = -1, 0;\n } else if (0 === t.avail_in && s <= I && 4 != s) return t.msg = o[7], -5;\n if (666 == A && 0 !== t.avail_in) return e.msg = o[7], -5;\n if (0 !== t.avail_in || 0 !== E || 0 != s && 666 != A) {\n switch (_ = -1, i[x].func) {\n case 0:\n _ = function (A) {\n var e,\n r = 65535;\n for (n - 5 < r && (r = n - 5);;) {\n if (E <= 1) {\n if (ct(), 0 === E && 0 == A) return 0;\n if (0 === E) break;\n }\n if (U += E, e = C + r, ((E = 0) === U || e <= U) && (E = U - e, U = e, at(!1), 0 === t.avail_out)) return 0;\n if (c - 262 <= U - C && (at(!1), 0 === t.avail_out)) return 0;\n }\n return at(4 == A), 0 === t.avail_out ? 4 == A ? 2 : 0 : 4 == A ? 3 : 1;\n }(s);\n break;\n case 1:\n _ = function (A) {\n for (var e, r = 0;;) {\n if (E < 262) {\n if (ct(), E < 262 && 0 == A) return 0;\n if (0 === E) break;\n }\n if (3 <= E && (B = (B << Q ^ 255 & h[U + 2]) & m, r = 65535 & p[B], d[U & l] = p[B], p[B] = U), 0 !== r && (U - r & 65535) <= c - 262 && 2 != S && (y = ut(r)), 3 <= y) {\n if (e = nt(U - N, y - 3), E -= y, y <= H && 3 <= E) {\n for (y--; B = (B << Q ^ 255 & h[2 + ++U]) & m, r = 65535 & p[B], d[U & l] = p[B], p[B] = U, 0 != --y;);\n U++;\n } else U += y, y = 0, B = ((B = 255 & h[U]) << Q ^ 255 & h[U + 1]) & m;\n } else e = nt(0, 255 & h[U]), E--, U++;\n if (e && (at(!1), 0 === t.avail_out)) return 0;\n }\n return at(4 == A), 0 === t.avail_out ? 4 == A ? 2 : 0 : 4 == A ? 3 : 1;\n }(s);\n break;\n case 2:\n _ = function (A) {\n for (var e, r, n = 0;;) {\n if (E < 262) {\n if (ct(), E < 262 && 0 == A) return 0;\n if (0 === E) break;\n }\n if (3 <= E && (B = (B << Q ^ 255 & h[U + 2]) & m, n = 65535 & p[B], d[U & l] = p[B], p[B] = U), b = y, v = N, y = 2, 0 !== n && b < H && (U - n & 65535) <= c - 262 && (2 != S && (y = ut(n)), y <= 5 && (1 == S || 3 == y && 4096 < U - N) && (y = 2)), 3 <= b && y <= b) {\n for (r = U + E - 3, e = nt(U - 1 - v, b - 3), E -= b - 1, b -= 2; ++U <= r && (B = (B << Q ^ 255 & h[U + 2]) & m, n = 65535 & p[B], d[U & l] = p[B], p[B] = U), 0 != --b;);\n if (F = 0, y = 2, U++, e && (at(!1), 0 === t.avail_out)) return 0;\n } else if (0 !== F) {\n if ((e = nt(0, 255 & h[U - 1])) && at(!1), U++, E--, 0 === t.avail_out) return 0;\n } else F = 1, U++, E--;\n }\n return 0 !== F && (e = nt(0, 255 & h[U - 1]), F = 0), at(4 == A), 0 === t.avail_out ? 4 == A ? 2 : 0 : 4 == A ? 3 : 1;\n }(s);\n }\n if (2 != _ && 3 != _ || (A = 666), 0 == _ || 2 == _) return 0 === t.avail_out && (a = -1), 0;\n if (1 == _) {\n if (1 == s) tt(2, 3), At(256, r.static_ltree), rt(), 1 + z + 10 - q < 9 && (tt(2, 3), At(256, r.static_ltree), rt()), z = 7;else if (st(0, 0, !1), 3 == s) for (f = 0; f < g; f++) p[f] = 0;\n if (t.flush_pending(), 0 === t.avail_out) return a = -1, 0;\n }\n }\n return 4 != s ? 0 : 1;\n };\n }\n function c() {\n this.next_in_index = 0, this.next_out_index = 0, this.avail_in = 0, this.total_in = 0, this.avail_out = 0, this.total_out = 0;\n }\n c.prototype = {\n deflateInit: function (t, A) {\n return this.dstate = new a(), A || (A = 15), this.dstate.deflateInit(this, t, A);\n },\n deflate: function (t) {\n return this.dstate ? this.dstate.deflate(this, t) : -2;\n },\n deflateEnd: function () {\n if (!this.dstate) return -2;\n var t = this.dstate.deflateEnd();\n return this.dstate = null, t;\n },\n deflateParams: function (t, A) {\n return this.dstate ? this.dstate.deflateParams(this, t, A) : -2;\n },\n deflateSetDictionary: function (t, A) {\n return this.dstate ? this.dstate.deflateSetDictionary(this, t, A) : -2;\n },\n read_buf: function (t, A, e) {\n var r = this.avail_in;\n return e < r && (r = e), 0 === r ? 0 : (this.avail_in -= r, t.set(this.next_in.subarray(this.next_in_index, this.next_in_index + r), A), this.next_in_index += r, this.total_in += r, r);\n },\n flush_pending: function () {\n var t = this,\n A = t.dstate.pending;\n A > t.avail_out && (A = t.avail_out), 0 !== A && (t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out, t.dstate.pending_out + A), t.next_out_index), t.next_out_index += A, t.dstate.pending_out += A, t.total_out += A, t.avail_out -= A, t.dstate.pending -= A, 0 === t.dstate.pending && (t.dstate.pending_out = 0));\n }\n };\n var u = t.zip || t;\n u.Deflater = u._jzlib_Deflater = function (t) {\n var A = new c(),\n e = new Uint8Array(512),\n r = t ? t.level : -1;\n void 0 === r && (r = -1), A.deflateInit(r), A.next_out = e, this.append = function (t, r) {\n var n,\n i = [],\n o = 0,\n s = 0,\n a = 0;\n if (t.length) {\n A.next_in_index = 0, A.next_in = t, A.avail_in = t.length;\n do {\n if (A.next_out_index = 0, A.avail_out = 512, 0 != A.deflate(0)) throw new Error(\"deflating: \" + A.msg);\n A.next_out_index && (512 == A.next_out_index ? i.push(new Uint8Array(e)) : i.push(new Uint8Array(e.subarray(0, A.next_out_index)))), a += A.next_out_index, r && 0 < A.next_in_index && A.next_in_index != o && (r(A.next_in_index), o = A.next_in_index);\n } while (0 < A.avail_in || 0 === A.avail_out);\n return n = new Uint8Array(a), i.forEach(function (t) {\n n.set(t, s), s += t.length;\n }), n;\n }\n }, this.flush = function () {\n var t,\n r,\n n = [],\n i = 0,\n o = 0;\n do {\n if (A.next_out_index = 0, A.avail_out = 512, 1 != (t = A.deflate(4)) && 0 != t) throw new Error(\"deflating: \" + A.msg);\n 0 < 512 - A.avail_out && n.push(new Uint8Array(e.subarray(0, A.next_out_index))), o += A.next_out_index;\n } while (0 < A.avail_in || 0 === A.avail_out);\n return A.deflateEnd(), r = new Uint8Array(o), n.forEach(function (t) {\n r.set(t, i), i += t.length;\n }), r;\n };\n };\n }(\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")()), (\"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")()).RGBColor = function (t) {\n var A;\n t = t || \"\", this.ok = !1, \"#\" == t.charAt(0) && (t = t.substr(1, 6)), t = (t = t.replace(/ /g, \"\")).toLowerCase();\n var e = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"00ffff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000000\",\n blanchedalmond: \"ffebcd\",\n blue: \"0000ff\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"00ffff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dodgerblue: \"1e90ff\",\n feldspar: \"d19275\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"ff00ff\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgrey: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslateblue: \"8470ff\",\n lightslategray: \"778899\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"00ff00\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"ff00ff\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"d87093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n red: \"ff0000\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n violetred: \"d02090\",\n wheat: \"f5deb3\",\n white: \"ffffff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ffff00\",\n yellowgreen: \"9acd32\"\n };\n for (var r in e) t == r && (t = e[r]);\n for (var n = [{\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: [\"rgb(123, 234, 45)\", \"rgb(255,234,245)\"],\n process: function (t) {\n return [parseInt(t[1]), parseInt(t[2]), parseInt(t[3])];\n }\n }, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n example: [\"#00ff00\", \"336699\"],\n process: function (t) {\n return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)];\n }\n }, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n example: [\"#fb0\", \"f0f\"],\n process: function (t) {\n return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)];\n }\n }], i = 0; i < n.length; i++) {\n var o = n[i].re,\n s = n[i].process,\n a = o.exec(t);\n a && (A = s(a), this.r = A[0], this.g = A[1], this.b = A[2], this.ok = !0);\n }\n this.r = this.r < 0 || isNaN(this.r) ? 0 : 255 < this.r ? 255 : this.r, this.g = this.g < 0 || isNaN(this.g) ? 0 : 255 < this.g ? 255 : this.g, this.b = this.b < 0 || isNaN(this.b) ? 0 : 255 < this.b ? 255 : this.b, this.toRGB = function () {\n return \"rgb(\" + this.r + \", \" + this.g + \", \" + this.b + \")\";\n }, this.toHex = function () {\n var t = this.r.toString(16),\n A = this.g.toString(16),\n e = this.b.toString(16);\n return 1 == t.length && (t = \"0\" + t), 1 == A.length && (A = \"0\" + A), 1 == e.length && (e = \"0\" + e), \"#\" + t + A + e;\n };\n }, function (t) {\n var A = \"+\".charCodeAt(0),\n e = \"/\".charCodeAt(0),\n r = \"0\".charCodeAt(0),\n n = \"a\".charCodeAt(0),\n i = \"A\".charCodeAt(0),\n o = \"-\".charCodeAt(0),\n s = \"_\".charCodeAt(0),\n a = function (t) {\n var a = t.charCodeAt(0);\n return a === A || a === o ? 62 : a === e || a === s ? 63 : a < r ? -1 : a < r + 10 ? a - r + 26 + 26 : a < i + 26 ? a - i : a < n + 26 ? a - n + 26 : void 0;\n };\n t.API.TTFFont = function () {\n function t(t, A, e) {\n var r;\n if (this.rawData = t, r = this.contents = new u(t), this.contents.pos = 4, \"ttcf\" === r.readString(4)) {\n if (!A) throw new Error(\"Must specify a font name for TTC files.\");\n throw new Error(\"Font \" + A + \" not found in TTC file.\");\n }\n r.pos = 0, this.parse(), this.subset = new L(this), this.registerTTF();\n }\n return t.open = function (A, e, r, n) {\n if (\"string\" != typeof r) throw new Error(\"Invalid argument supplied in TTFFont.open\");\n return new t(function (t) {\n var A, e, r, n, i, o;\n if (0 < t.length % 4) throw new Error(\"Invalid string. Length must be a multiple of 4\");\n var s = t.length;\n i = \"=\" === t.charAt(s - 2) ? 2 : \"=\" === t.charAt(s - 1) ? 1 : 0, o = new Uint8Array(3 * t.length / 4 - i), r = 0 < i ? t.length - 4 : t.length;\n var c = 0;\n function u(t) {\n o[c++] = t;\n }\n for (e = A = 0; A < r; A += 4, e += 3) u((16711680 & (n = a(t.charAt(A)) << 18 | a(t.charAt(A + 1)) << 12 | a(t.charAt(A + 2)) << 6 | a(t.charAt(A + 3)))) >> 16), u((65280 & n) >> 8), u(255 & n);\n return 2 === i ? u(255 & (n = a(t.charAt(A)) << 2 | a(t.charAt(A + 1)) >> 4)) : 1 === i && (u((n = a(t.charAt(A)) << 10 | a(t.charAt(A + 1)) << 4 | a(t.charAt(A + 2)) >> 2) >> 8 & 255), u(255 & n)), o;\n }(r), e, n);\n }, t.prototype.parse = function () {\n return this.directory = new l(this.contents), this.head = new d(this), this.name = new C(this), this.cmap = new B(this), this.toUnicode = new Map(), this.hhea = new g(this), this.maxp = new y(this), this.hmtx = new v(this), this.post = new m(this), this.os2 = new w(this), this.loca = new b(this), this.glyf = new U(this), this.ascender = this.os2.exists && this.os2.ascender || this.hhea.ascender, this.decender = this.os2.exists && this.os2.decender || this.hhea.decender, this.lineGap = this.os2.exists && this.os2.lineGap || this.hhea.lineGap, this.bbox = [this.head.xMin, this.head.yMin, this.head.xMax, this.head.yMax];\n }, t.prototype.registerTTF = function () {\n var t, A, e, r, n;\n if (this.scaleFactor = 1e3 / this.head.unitsPerEm, this.bbox = function () {\n var A, e, r, n;\n for (n = [], A = 0, e = (r = this.bbox).length; A < e; A++) t = r[A], n.push(Math.round(t * this.scaleFactor));\n return n;\n }.call(this), this.stemV = 0, this.post.exists ? (e = 255 & (r = this.post.italic_angle), !0 & (A = r >> 16) && (A = -(1 + (65535 ^ A))), this.italicAngle = +(A + \".\" + e)) : this.italicAngle = 0, this.ascender = Math.round(this.ascender * this.scaleFactor), this.decender = Math.round(this.decender * this.scaleFactor), this.lineGap = Math.round(this.lineGap * this.scaleFactor), this.capHeight = this.os2.exists && this.os2.capHeight || this.ascender, this.xHeight = this.os2.exists && this.os2.xHeight || 0, this.familyClass = (this.os2.exists && this.os2.familyClass || 0) >> 8, this.isSerif = 1 === (n = this.familyClass) || 2 === n || 3 === n || 4 === n || 5 === n || 7 === n, this.isScript = 10 === this.familyClass, this.flags = 0, this.post.isFixedPitch && (this.flags |= 1), this.isSerif && (this.flags |= 2), this.isScript && (this.flags |= 8), 0 !== this.italicAngle && (this.flags |= 64), this.flags |= 32, !this.cmap.unicode) throw new Error(\"No unicode cmap for font\");\n }, t.prototype.characterToGlyph = function (t) {\n var A;\n return (null != (A = this.cmap.unicode) ? A.codeMap[t] : void 0) || 0;\n }, t.prototype.widthOfGlyph = function (t) {\n var A;\n return A = 1e3 / this.head.unitsPerEm, this.hmtx.forGlyph(t).advance * A;\n }, t.prototype.widthOfString = function (t, A, e) {\n var r, n, i, o, s;\n for (n = o = i = 0, s = (t = \"\" + t).length; 0 <= s ? o < s : s < o; n = 0 <= s ? ++o : --o) r = t.charCodeAt(n), i += this.widthOfGlyph(this.characterToGlyph(r)) + e * (1e3 / A) || 0;\n return i * (A / 1e3);\n }, t.prototype.lineHeight = function (t, A) {\n var e;\n return null == A && (A = !1), e = A ? this.lineGap : 0, (this.ascender + e - this.decender) / 1e3 * t;\n }, t;\n }();\n var c,\n u = function () {\n function t(t) {\n this.data = null != t ? t : [], this.pos = 0, this.length = this.data.length;\n }\n return t.prototype.readByte = function () {\n return this.data[this.pos++];\n }, t.prototype.writeByte = function (t) {\n return this.data[this.pos++] = t;\n }, t.prototype.readUInt32 = function () {\n return 16777216 * this.readByte() + (this.readByte() << 16) + (this.readByte() << 8) + this.readByte();\n }, t.prototype.writeUInt32 = function (t) {\n return this.writeByte(t >>> 24 & 255), this.writeByte(t >> 16 & 255), this.writeByte(t >> 8 & 255), this.writeByte(255 & t);\n }, t.prototype.readInt32 = function () {\n var t;\n return 2147483648 <= (t = this.readUInt32()) ? t - 4294967296 : t;\n }, t.prototype.writeInt32 = function (t) {\n return t < 0 && (t += 4294967296), this.writeUInt32(t);\n }, t.prototype.readUInt16 = function () {\n return this.readByte() << 8 | this.readByte();\n }, t.prototype.writeUInt16 = function (t) {\n return this.writeByte(t >> 8 & 255), this.writeByte(255 & t);\n }, t.prototype.readInt16 = function () {\n var t;\n return 32768 <= (t = this.readUInt16()) ? t - 65536 : t;\n }, t.prototype.writeInt16 = function (t) {\n return t < 0 && (t += 65536), this.writeUInt16(t);\n }, t.prototype.readString = function (t) {\n var A, e, r;\n for (e = [], A = r = 0; 0 <= t ? r < t : t < r; A = 0 <= t ? ++r : --r) e[A] = String.fromCharCode(this.readByte());\n return e.join(\"\");\n }, t.prototype.writeString = function (t) {\n var A, e, r, n;\n for (n = [], A = e = 0, r = t.length; 0 <= r ? e < r : r < e; A = 0 <= r ? ++e : --e) n.push(this.writeByte(t.charCodeAt(A)));\n return n;\n }, t.prototype.readShort = function () {\n return this.readInt16();\n }, t.prototype.writeShort = function (t) {\n return this.writeInt16(t);\n }, t.prototype.readLongLong = function () {\n var t, A, e, r, n, i, o, s;\n return t = this.readByte(), A = this.readByte(), e = this.readByte(), r = this.readByte(), n = this.readByte(), i = this.readByte(), o = this.readByte(), s = this.readByte(), 128 & t ? -1 * (72057594037927940 * (255 ^ t) + 281474976710656 * (255 ^ A) + 1099511627776 * (255 ^ e) + 4294967296 * (255 ^ r) + 16777216 * (255 ^ n) + 65536 * (255 ^ i) + 256 * (255 ^ o) + (255 ^ s) + 1) : 72057594037927940 * t + 281474976710656 * A + 1099511627776 * e + 4294967296 * r + 16777216 * n + 65536 * i + 256 * o + s;\n }, t.prototype.writeLongLong = function (t) {\n var A, e;\n return A = Math.floor(t / 4294967296), e = 4294967295 & t, this.writeByte(A >> 24 & 255), this.writeByte(A >> 16 & 255), this.writeByte(A >> 8 & 255), this.writeByte(255 & A), this.writeByte(e >> 24 & 255), this.writeByte(e >> 16 & 255), this.writeByte(e >> 8 & 255), this.writeByte(255 & e);\n }, t.prototype.readInt = function () {\n return this.readInt32();\n }, t.prototype.writeInt = function (t) {\n return this.writeInt32(t);\n }, t.prototype.read = function (t) {\n var A, e;\n for (A = [], e = 0; 0 <= t ? e < t : t < e; 0 <= t ? ++e : --e) A.push(this.readByte());\n return A;\n }, t.prototype.write = function (t) {\n var A, e, r, n;\n for (n = [], e = 0, r = t.length; e < r; e++) A = t[e], n.push(this.writeByte(A));\n return n;\n }, t;\n }(),\n l = function () {\n var t;\n function A(t) {\n var A, e, r;\n for (this.scalarType = t.readInt(), this.tableCount = t.readShort(), this.searchRange = t.readShort(), this.entrySelector = t.readShort(), this.rangeShift = t.readShort(), this.tables = {}, e = 0, r = this.tableCount; 0 <= r ? e < r : r < e; 0 <= r ? ++e : --e) A = {\n tag: t.readString(4),\n checksum: t.readInt(),\n offset: t.readInt(),\n length: t.readInt()\n }, this.tables[A.tag] = A;\n }\n return A.prototype.encode = function (A) {\n var e, r, n, i, o, s, a, c, l, h, f, d, p;\n for (p in f = Object.keys(A).length, s = Math.log(2), l = 16 * Math.floor(Math.log(f) / s), i = Math.floor(l / s), c = 16 * f - l, (r = new u()).writeInt(this.scalarType), r.writeShort(f), r.writeShort(l), r.writeShort(i), r.writeShort(c), n = 16 * f, a = r.pos + n, o = null, d = [], A) for (h = A[p], r.writeString(p), r.writeInt(t(h)), r.writeInt(a), r.writeInt(h.length), d = d.concat(h), \"head\" === p && (o = a), a += h.length; a % 4;) d.push(0), a++;\n return r.write(d), e = 2981146554 - t(r.data), r.pos = o + 8, r.writeUInt32(e), r.data;\n }, t = function (t) {\n var A, e, r, n;\n for (t = F.call(t); t.length % 4;) t.push(0);\n for (e = new u(t), r = A = 0, n = t.length; r < n; r += 4) A += e.readUInt32();\n return 4294967295 & A;\n }, A;\n }(),\n h = {}.hasOwnProperty,\n f = function (t, A) {\n for (var e in A) h.call(A, e) && (t[e] = A[e]);\n function r() {\n this.constructor = t;\n }\n return r.prototype = A.prototype, t.prototype = new r(), t.__super__ = A.prototype, t;\n };\n c = function () {\n function t(t) {\n var A;\n this.file = t, A = this.file.directory.tables[this.tag], this.exists = !!A, A && (this.offset = A.offset, this.length = A.length, this.parse(this.file.contents));\n }\n return t.prototype.parse = function () {}, t.prototype.encode = function () {}, t.prototype.raw = function () {\n return this.exists ? (this.file.contents.pos = this.offset, this.file.contents.read(this.length)) : null;\n }, t;\n }();\n var d = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"head\", A.prototype.parse = function (t) {\n return t.pos = this.offset, this.version = t.readInt(), this.revision = t.readInt(), this.checkSumAdjustment = t.readInt(), this.magicNumber = t.readInt(), this.flags = t.readShort(), this.unitsPerEm = t.readShort(), this.created = t.readLongLong(), this.modified = t.readLongLong(), this.xMin = t.readShort(), this.yMin = t.readShort(), this.xMax = t.readShort(), this.yMax = t.readShort(), this.macStyle = t.readShort(), this.lowestRecPPEM = t.readShort(), this.fontDirectionHint = t.readShort(), this.indexToLocFormat = t.readShort(), this.glyphDataFormat = t.readShort();\n }, A.prototype.encode = function (t) {\n var A;\n return (A = new u()).writeInt(this.version), A.writeInt(this.revision), A.writeInt(this.checkSumAdjustment), A.writeInt(this.magicNumber), A.writeShort(this.flags), A.writeShort(this.unitsPerEm), A.writeLongLong(this.created), A.writeLongLong(this.modified), A.writeShort(this.xMin), A.writeShort(this.yMin), A.writeShort(this.xMax), A.writeShort(this.yMax), A.writeShort(this.macStyle), A.writeShort(this.lowestRecPPEM), A.writeShort(this.fontDirectionHint), A.writeShort(t), A.writeShort(this.glyphDataFormat), A.data;\n }, A;\n }(),\n p = function () {\n function t(t, A) {\n var e, r, n, i, o, s, a, c, u, l, h, f, d, p, B, g, w, m;\n switch (this.platformID = t.readUInt16(), this.encodingID = t.readShort(), this.offset = A + t.readInt(), u = t.pos, t.pos = this.offset, this.format = t.readUInt16(), this.length = t.readUInt16(), this.language = t.readUInt16(), this.isUnicode = 3 === this.platformID && 1 === this.encodingID && 4 === this.format || 0 === this.platformID && 4 === this.format, this.codeMap = {}, this.format) {\n case 0:\n for (s = B = 0; B < 256; s = ++B) this.codeMap[s] = t.readByte();\n break;\n case 4:\n for (h = t.readUInt16(), l = h / 2, t.pos += 6, n = function () {\n var A, e;\n for (e = [], s = A = 0; 0 <= l ? A < l : l < A; s = 0 <= l ? ++A : --A) e.push(t.readUInt16());\n return e;\n }(), t.pos += 2, d = function () {\n var A, e;\n for (e = [], s = A = 0; 0 <= l ? A < l : l < A; s = 0 <= l ? ++A : --A) e.push(t.readUInt16());\n return e;\n }(), a = function () {\n var A, e;\n for (e = [], s = A = 0; 0 <= l ? A < l : l < A; s = 0 <= l ? ++A : --A) e.push(t.readUInt16());\n return e;\n }(), c = function () {\n var A, e;\n for (e = [], s = A = 0; 0 <= l ? A < l : l < A; s = 0 <= l ? ++A : --A) e.push(t.readUInt16());\n return e;\n }(), r = (this.length - t.pos + this.offset) / 2, o = function () {\n var A, e;\n for (e = [], s = A = 0; 0 <= r ? A < r : r < A; s = 0 <= r ? ++A : --A) e.push(t.readUInt16());\n return e;\n }(), s = g = 0, m = n.length; g < m; s = ++g) for (p = n[s], e = w = f = d[s]; f <= p ? w <= p : p <= w; e = f <= p ? ++w : --w) 0 === c[s] ? i = e + a[s] : 0 !== (i = o[c[s] / 2 + (e - f) - (l - s)] || 0) && (i += a[s]), this.codeMap[e] = 65535 & i;\n }\n t.pos = u;\n }\n return t.encode = function (t, A) {\n var e, r, n, i, o, s, a, c, l, h, f, d, p, B, g, w, m, Q, C, y, v, F, U, N, E, b, L, H, x, S, I, _, T, R, O, K, M, P, D, k, z, j, q, V, X, G;\n switch (H = new u(), i = Object.keys(t).sort(function (t, A) {\n return t - A;\n }), A) {\n case \"macroman\":\n for (p = 0, B = function () {\n var t, A;\n for (A = [], d = t = 0; t < 256; d = ++t) A.push(0);\n return A;\n }(), w = {\n 0: 0\n }, n = {}, x = 0, T = i.length; x < T; x++) null == w[q = t[r = i[x]]] && (w[q] = ++p), n[r] = {\n old: t[r],\n new: w[t[r]]\n }, B[r] = w[t[r]];\n return H.writeUInt16(1), H.writeUInt16(0), H.writeUInt32(12), H.writeUInt16(0), H.writeUInt16(262), H.writeUInt16(0), H.write(B), {\n charMap: n,\n subtable: H.data,\n maxGlyphID: p + 1\n };\n case \"unicode\":\n for (b = [], l = [], w = {}, e = {}, g = a = null, S = m = 0, R = i.length; S < R; S++) null == w[C = t[r = i[S]]] && (w[C] = ++m), e[r] = {\n old: C,\n new: w[C]\n }, o = w[C] - r, null != g && o === a || (g && l.push(g), b.push(r), a = o), g = r;\n for (g && l.push(g), l.push(65535), b.push(65535), N = 2 * (U = b.length), F = 2 * Math.pow(Math.log(U) / Math.LN2, 2), h = Math.log(F / 2) / Math.LN2, v = 2 * U - F, s = [], y = [], f = [], d = I = 0, O = b.length; I < O; d = ++I) {\n if (E = b[d], c = l[d], 65535 === E) {\n s.push(0), y.push(0);\n break;\n }\n if (32768 <= E - (L = e[E].new)) for (s.push(0), y.push(2 * (f.length + U - d)), r = _ = E; E <= c ? _ <= c : c <= _; r = E <= c ? ++_ : --_) f.push(e[r].new);else s.push(L - E), y.push(0);\n }\n for (H.writeUInt16(3), H.writeUInt16(1), H.writeUInt32(12), H.writeUInt16(4), H.writeUInt16(16 + 8 * U + 2 * f.length), H.writeUInt16(0), H.writeUInt16(N), H.writeUInt16(F), H.writeUInt16(h), H.writeUInt16(v), z = 0, K = l.length; z < K; z++) r = l[z], H.writeUInt16(r);\n for (H.writeUInt16(0), j = 0, M = b.length; j < M; j++) r = b[j], H.writeUInt16(r);\n for (V = 0, P = s.length; V < P; V++) o = s[V], H.writeUInt16(o);\n for (X = 0, D = y.length; X < D; X++) Q = y[X], H.writeUInt16(Q);\n for (G = 0, k = f.length; G < k; G++) p = f[G], H.writeUInt16(p);\n return {\n charMap: e,\n subtable: H.data,\n maxGlyphID: m + 1\n };\n }\n }, t;\n }(),\n B = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"cmap\", A.prototype.parse = function (t) {\n var A, e, r;\n for (t.pos = this.offset, this.version = t.readUInt16(), e = t.readUInt16(), this.tables = [], this.unicode = null, r = 0; 0 <= e ? r < e : e < r; 0 <= e ? ++r : --r) A = new p(t, this.offset), this.tables.push(A), A.isUnicode && null == this.unicode && (this.unicode = A);\n return !0;\n }, A.encode = function (t, A) {\n var e, r;\n return null == A && (A = \"macroman\"), e = p.encode(t, A), (r = new u()).writeUInt16(0), r.writeUInt16(1), e.table = r.data.concat(e.subtable), e;\n }, A;\n }(),\n g = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"hhea\", A.prototype.parse = function (t) {\n return t.pos = this.offset, this.version = t.readInt(), this.ascender = t.readShort(), this.decender = t.readShort(), this.lineGap = t.readShort(), this.advanceWidthMax = t.readShort(), this.minLeftSideBearing = t.readShort(), this.minRightSideBearing = t.readShort(), this.xMaxExtent = t.readShort(), this.caretSlopeRise = t.readShort(), this.caretSlopeRun = t.readShort(), this.caretOffset = t.readShort(), t.pos += 8, this.metricDataFormat = t.readShort(), this.numberOfMetrics = t.readUInt16();\n }, A;\n }(),\n w = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"OS/2\", A.prototype.parse = function (t) {\n if (t.pos = this.offset, this.version = t.readUInt16(), this.averageCharWidth = t.readShort(), this.weightClass = t.readUInt16(), this.widthClass = t.readUInt16(), this.type = t.readShort(), this.ySubscriptXSize = t.readShort(), this.ySubscriptYSize = t.readShort(), this.ySubscriptXOffset = t.readShort(), this.ySubscriptYOffset = t.readShort(), this.ySuperscriptXSize = t.readShort(), this.ySuperscriptYSize = t.readShort(), this.ySuperscriptXOffset = t.readShort(), this.ySuperscriptYOffset = t.readShort(), this.yStrikeoutSize = t.readShort(), this.yStrikeoutPosition = t.readShort(), this.familyClass = t.readShort(), this.panose = function () {\n var A, e;\n for (e = [], A = 0; A < 10; ++A) e.push(t.readByte());\n return e;\n }(), this.charRange = function () {\n var A, e;\n for (e = [], A = 0; A < 4; ++A) e.push(t.readInt());\n return e;\n }(), this.vendorID = t.readString(4), this.selection = t.readShort(), this.firstCharIndex = t.readShort(), this.lastCharIndex = t.readShort(), 0 < this.version && (this.ascent = t.readShort(), this.descent = t.readShort(), this.lineGap = t.readShort(), this.winAscent = t.readShort(), this.winDescent = t.readShort(), this.codePageRange = function () {\n var A, e;\n for (e = [], A = 0; A < 2; ++A) e.push(t.readInt());\n return e;\n }(), 1 < this.version)) return this.xHeight = t.readShort(), this.capHeight = t.readShort(), this.defaultChar = t.readShort(), this.breakChar = t.readShort(), this.maxContext = t.readShort();\n }, A;\n }(),\n m = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"post\", A.prototype.parse = function (t) {\n var A, e, r, n;\n switch (t.pos = this.offset, this.format = t.readInt(), this.italicAngle = t.readInt(), this.underlinePosition = t.readShort(), this.underlineThickness = t.readShort(), this.isFixedPitch = t.readInt(), this.minMemType42 = t.readInt(), this.maxMemType42 = t.readInt(), this.minMemType1 = t.readInt(), this.maxMemType1 = t.readInt(), this.format) {\n case 65536:\n break;\n case 131072:\n for (e = t.readUInt16(), this.glyphNameIndex = [], r = 0; 0 <= e ? r < e : e < r; 0 <= e ? ++r : --r) this.glyphNameIndex.push(t.readUInt16());\n for (this.names = [], n = []; t.pos < this.offset + this.length;) A = t.readByte(), n.push(this.names.push(t.readString(A)));\n return n;\n case 151552:\n return e = t.readUInt16(), this.offsets = t.read(e);\n case 196608:\n break;\n case 262144:\n return this.map = function () {\n var A, e, r;\n for (r = [], A = 0, e = this.file.maxp.numGlyphs; 0 <= e ? A < e : e < A; 0 <= e ? ++A : --A) r.push(t.readUInt32());\n return r;\n }.call(this);\n }\n }, A;\n }(),\n Q = function (t, A) {\n this.raw = t, this.length = t.length, this.platformID = A.platformID, this.encodingID = A.encodingID, this.languageID = A.languageID;\n },\n C = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"name\", A.prototype.parse = function (t) {\n var A, e, r, n, i, o, s, a, c, u, l, h;\n for (t.pos = this.offset, t.readShort(), A = t.readShort(), o = t.readShort(), e = [], n = c = 0; 0 <= A ? c < A : A < c; n = 0 <= A ? ++c : --c) e.push({\n platformID: t.readShort(),\n encodingID: t.readShort(),\n languageID: t.readShort(),\n nameID: t.readShort(),\n length: t.readShort(),\n offset: this.offset + o + t.readShort()\n });\n for (s = {}, n = u = 0, l = e.length; u < l; n = ++u) r = e[n], t.pos = r.offset, a = t.readString(r.length), i = new Q(a, r), null == s[h = r.nameID] && (s[h] = []), s[r.nameID].push(i);\n this.strings = s, this.copyright = s[0], this.fontFamily = s[1], this.fontSubfamily = s[2], this.uniqueSubfamily = s[3], this.fontName = s[4], this.version = s[5];\n try {\n this.postscriptName = s[6][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g, \"\");\n } catch (t) {\n this.postscriptName = s[4][0].raw.replace(/[\\x00-\\x19\\x80-\\xff]/g, \"\");\n }\n return this.trademark = s[7], this.manufacturer = s[8], this.designer = s[9], this.description = s[10], this.vendorUrl = s[11], this.designerUrl = s[12], this.license = s[13], this.licenseUrl = s[14], this.preferredFamily = s[15], this.preferredSubfamily = s[17], this.compatibleFull = s[18], this.sampleText = s[19];\n }, A;\n }(),\n y = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"maxp\", A.prototype.parse = function (t) {\n return t.pos = this.offset, this.version = t.readInt(), this.numGlyphs = t.readUInt16(), this.maxPoints = t.readUInt16(), this.maxContours = t.readUInt16(), this.maxCompositePoints = t.readUInt16(), this.maxComponentContours = t.readUInt16(), this.maxZones = t.readUInt16(), this.maxTwilightPoints = t.readUInt16(), this.maxStorage = t.readUInt16(), this.maxFunctionDefs = t.readUInt16(), this.maxInstructionDefs = t.readUInt16(), this.maxStackElements = t.readUInt16(), this.maxSizeOfInstructions = t.readUInt16(), this.maxComponentElements = t.readUInt16(), this.maxComponentDepth = t.readUInt16();\n }, A;\n }(),\n v = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"hmtx\", A.prototype.parse = function (t) {\n var A, e, r, n, i, o, s;\n for (t.pos = this.offset, this.metrics = [], n = 0, o = this.file.hhea.numberOfMetrics; 0 <= o ? n < o : o < n; 0 <= o ? ++n : --n) this.metrics.push({\n advance: t.readUInt16(),\n lsb: t.readInt16()\n });\n for (e = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics, this.leftSideBearings = function () {\n var A, r;\n for (r = [], A = 0; 0 <= e ? A < e : e < A; 0 <= e ? ++A : --A) r.push(t.readInt16());\n return r;\n }(), this.widths = function () {\n var t, A, e, n;\n for (n = [], t = 0, A = (e = this.metrics).length; t < A; t++) r = e[t], n.push(r.advance);\n return n;\n }.call(this), A = this.widths[this.widths.length - 1], s = [], i = 0; 0 <= e ? i < e : e < i; 0 <= e ? ++i : --i) s.push(this.widths.push(A));\n return s;\n }, A.prototype.forGlyph = function (t) {\n return t in this.metrics ? this.metrics[t] : {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[t - this.metrics.length]\n };\n }, A;\n }(),\n F = [].slice,\n U = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"glyf\", A.prototype.parse = function (t) {\n return this.cache = {};\n }, A.prototype.glyphFor = function (t) {\n var A, e, r, n, i, o, s, a, c, l;\n return (t = t) in this.cache ? this.cache[t] : (n = this.file.loca, A = this.file.contents, e = n.indexOf(t), 0 === (r = n.lengthOf(t)) ? this.cache[t] = null : (A.pos = this.offset + e, i = (o = new u(A.read(r))).readShort(), a = o.readShort(), l = o.readShort(), s = o.readShort(), c = o.readShort(), this.cache[t] = -1 === i ? new E(o, a, l, s, c) : new N(o, i, a, l, s, c), this.cache[t]));\n }, A.prototype.encode = function (t, A, e) {\n var r, n, i, o, s;\n for (i = [], n = [], o = 0, s = A.length; o < s; o++) r = t[A[o]], n.push(i.length), r && (i = i.concat(r.encode(e)));\n return n.push(i.length), {\n table: i,\n offsets: n\n };\n }, A;\n }(),\n N = function () {\n function t(t, A, e, r, n, i) {\n this.raw = t, this.numberOfContours = A, this.xMin = e, this.yMin = r, this.xMax = n, this.yMax = i, this.compound = !1;\n }\n return t.prototype.encode = function () {\n return this.raw.data;\n }, t;\n }(),\n E = function () {\n function t(t, A, e, r, n) {\n var i, o;\n for (this.raw = t, this.xMin = A, this.yMin = e, this.xMax = r, this.yMax = n, this.compound = !0, this.glyphIDs = [], this.glyphOffsets = [], i = this.raw; o = i.readShort(), this.glyphOffsets.push(i.pos), this.glyphIDs.push(i.readShort()), 32 & o;) i.pos += 1 & o ? 4 : 2, 128 & o ? i.pos += 8 : 64 & o ? i.pos += 4 : 8 & o && (i.pos += 2);\n }\n return t.prototype.encode = function (t) {\n var A, e, r, n, i;\n for (e = new u(F.call(this.raw.data)), A = r = 0, n = (i = this.glyphIDs).length; r < n; A = ++r) i[A], e.pos = this.glyphOffsets[A];\n return e.data;\n }, t;\n }(),\n b = function (t) {\n function A() {\n return A.__super__.constructor.apply(this, arguments);\n }\n return f(A, c), A.prototype.tag = \"loca\", A.prototype.parse = function (t) {\n var A;\n return t.pos = this.offset, A = this.file.head.indexToLocFormat, this.offsets = 0 === A ? function () {\n var A, e, r;\n for (r = [], A = 0, e = this.length; A < e; A += 2) r.push(2 * t.readUInt16());\n return r;\n }.call(this) : function () {\n var A, e, r;\n for (r = [], A = 0, e = this.length; A < e; A += 4) r.push(t.readUInt32());\n return r;\n }.call(this);\n }, A.prototype.indexOf = function (t) {\n return this.offsets[t];\n }, A.prototype.lengthOf = function (t) {\n return this.offsets[t + 1] - this.offsets[t];\n }, A.prototype.encode = function (t, A) {\n for (var e = new Uint32Array(this.offsets.length), r = 0, n = 0, i = 0; i < e.length; ++i) if (e[i] = r, n < A.length && A[n] == i) {\n ++n, e[i] = r;\n var o = this.offsets[i],\n s = this.offsets[i + 1] - o;\n 0 < s && (r += s);\n }\n for (var a = new Array(4 * e.length), c = 0; c < e.length; ++c) a[4 * c + 3] = 255 & e[c], a[4 * c + 2] = (65280 & e[c]) >> 8, a[4 * c + 1] = (16711680 & e[c]) >> 16, a[4 * c] = (4278190080 & e[c]) >> 24;\n return a;\n }, A;\n }(),\n L = function () {\n function t(t) {\n this.font = t, this.subset = {}, this.unicodes = {}, this.next = 33;\n }\n return t.prototype.generateCmap = function () {\n var t, A, e, r, n;\n for (A in r = this.font.cmap.tables[0].codeMap, t = {}, n = this.subset) e = n[A], t[A] = r[e];\n return t;\n }, t.prototype.glyphsFor = function (t) {\n var A, e, r, n, i, o, s;\n for (r = {}, i = 0, o = t.length; i < o; i++) r[n = t[i]] = this.font.glyf.glyphFor(n);\n for (n in A = [], r) (null != (e = r[n]) ? e.compound : void 0) && A.push.apply(A, e.glyphIDs);\n if (0 < A.length) for (n in s = this.glyphsFor(A)) e = s[n], r[n] = e;\n return r;\n }, t.prototype.encode = function (t, A) {\n var e, r, n, i, o, s, a, c, u, l, h, f, d, p, g;\n for (r in e = B.encode(this.generateCmap(), \"unicode\"), i = this.glyphsFor(t), h = {\n 0: 0\n }, g = e.charMap) h[(s = g[r]).old] = s.new;\n for (f in l = e.maxGlyphID, i) f in h || (h[f] = l++);\n return c = function (t) {\n var A, e;\n for (A in e = {}, t) e[t[A]] = A;\n return e;\n }(h), u = Object.keys(c).sort(function (t, A) {\n return t - A;\n }), d = function () {\n var t, A, e;\n for (e = [], t = 0, A = u.length; t < A; t++) o = u[t], e.push(c[o]);\n return e;\n }(), n = this.font.glyf.encode(i, d, h), a = this.font.loca.encode(n.offsets, d), p = {\n cmap: this.font.cmap.raw(),\n glyf: n.table,\n loca: a,\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(A)\n }, this.font.os2.exists && (p[\"OS/2\"] = this.font.os2.raw()), this.font.directory.encode(p);\n }, t;\n }();\n t.API.PDFObject = function () {\n var t;\n function A() {}\n return t = function (t, A) {\n return (Array(A + 1).join(\"0\") + t).slice(-A);\n }, A.convert = function (e) {\n var r, n, i, o;\n if (Array.isArray(e)) return \"[\" + function () {\n var t, n, i;\n for (i = [], t = 0, n = e.length; t < n; t++) r = e[t], i.push(A.convert(r));\n return i;\n }().join(\" \") + \"]\";\n if (\"string\" == typeof e) return \"/\" + e;\n if (null != e ? e.isString : void 0) return \"(\" + e + \")\";\n if (e instanceof Date) return \"(D:\" + t(e.getUTCFullYear(), 4) + t(e.getUTCMonth(), 2) + t(e.getUTCDate(), 2) + t(e.getUTCHours(), 2) + t(e.getUTCMinutes(), 2) + t(e.getUTCSeconds(), 2) + \"Z)\";\n if (\"[object Object]\" !== {}.toString.call(e)) return \"\" + e;\n for (n in i = [\"<<\"], e) o = e[n], i.push(\"/\" + n + \" \" + A.convert(o));\n return i.push(\">>\"), i.join(\"\\n\");\n }, A;\n }();\n }(dt), bt = \"undefined\" != typeof self && self || \"undefined\" != typeof window && window || void 0 !== r && r || Function('return typeof this === \"object\" && this.content')() || Function(\"return this\")(), Lt = function () {\n var t, A, e;\n function r(t) {\n var A, e, r, n, i, o, s, a, c, u, l, h, f, d;\n for (this.data = t, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, o = null;;) {\n switch (A = this.readUInt32(), c = function () {\n var t, A;\n for (A = [], t = 0; t < 4; ++t) A.push(String.fromCharCode(this.data[this.pos++]));\n return A;\n }.call(this).join(\"\")) {\n case \"IHDR\":\n this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || 1 / 0,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(A);\n break;\n case \"fcTL\":\n o && this.animation.frames.push(o), this.pos += 4, o = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n }, i = this.readUInt16(), n = this.readUInt16() || 100, o.delay = 1e3 * i / n, o.disposeOp = this.data[this.pos++], o.blendOp = this.data[this.pos++], o.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n for (\"fdAT\" === c && (this.pos += 4, A -= 4), t = (null != o ? o.data : void 0) || this.imgData, h = 0; 0 <= A ? h < A : A < h; 0 <= A ? ++h : --h) t.push(this.data[this.pos++]);\n break;\n case \"tRNS\":\n switch (this.transparency = {}, this.colorType) {\n case 3:\n if (r = this.palette.length / 3, this.transparency.indexed = this.read(A), this.transparency.indexed.length > r) throw new Error(\"More transparent colors than palette size\");\n if (0 < (u = r - this.transparency.indexed.length)) for (f = 0; 0 <= u ? f < u : u < f; 0 <= u ? ++f : --f) this.transparency.indexed.push(255);\n break;\n case 0:\n this.transparency.grayscale = this.read(A)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(A);\n }\n break;\n case \"tEXt\":\n s = (l = this.read(A)).indexOf(0), a = String.fromCharCode.apply(String, l.slice(0, s)), this.text[a] = String.fromCharCode.apply(String, l.slice(s + 1));\n break;\n case \"IEND\":\n return o && this.animation.frames.push(o), 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), this.hasAlphaChannel = 4 === (d = this.colorType) || 6 === d, e = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * e, this.colorSpace = function () {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this), void (this.imgData = new Uint8Array(this.imgData));\n default:\n this.pos += A;\n }\n if (this.pos += 4, this.pos > this.data.length) throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n r.load = function (t, A, e) {\n var n;\n return \"function\" == typeof A && (e = A), (n = new XMLHttpRequest()).open(\"GET\", t, !0), n.responseType = \"arraybuffer\", n.onload = function () {\n var t;\n return t = new r(new Uint8Array(n.response || n.mozResponseArrayBuffer)), \"function\" == typeof (null != A ? A.getContext : void 0) && t.render(A), \"function\" == typeof e ? e(t) : void 0;\n }, n.send(null);\n }, r.prototype.read = function (t) {\n var A, e;\n for (e = [], A = 0; 0 <= t ? A < t : t < A; 0 <= t ? ++A : --A) e.push(this.data[this.pos++]);\n return e;\n }, r.prototype.readUInt32 = function () {\n return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++];\n }, r.prototype.readUInt16 = function () {\n return this.data[this.pos++] << 8 | this.data[this.pos++];\n }, r.prototype.decodePixels = function (t) {\n var A = this.pixelBitlength / 8,\n e = new Uint8Array(this.width * this.height * A),\n r = 0,\n n = this;\n if (null == t && (t = this.imgData), 0 === t.length) return new Uint8Array(0);\n function i(i, o, s, a) {\n var c,\n u,\n l,\n h,\n f,\n d,\n p,\n B,\n g,\n w,\n m,\n Q,\n C,\n y,\n v,\n F,\n U,\n N,\n E,\n b,\n L,\n H = Math.ceil((n.width - i) / s),\n x = Math.ceil((n.height - o) / a),\n S = n.width == H && n.height == x;\n for (y = A * H, Q = S ? e : new Uint8Array(y * x), d = t.length, u = C = 0; C < x && r < d;) {\n switch (t[r++]) {\n case 0:\n for (h = U = 0; U < y; h = U += 1) Q[u++] = t[r++];\n break;\n case 1:\n for (h = N = 0; N < y; h = N += 1) c = t[r++], f = h < A ? 0 : Q[u - A], Q[u++] = (c + f) % 256;\n break;\n case 2:\n for (h = E = 0; E < y; h = E += 1) c = t[r++], l = (h - h % A) / A, v = C && Q[(C - 1) * y + l * A + h % A], Q[u++] = (v + c) % 256;\n break;\n case 3:\n for (h = b = 0; b < y; h = b += 1) c = t[r++], l = (h - h % A) / A, f = h < A ? 0 : Q[u - A], v = C && Q[(C - 1) * y + l * A + h % A], Q[u++] = (c + Math.floor((f + v) / 2)) % 256;\n break;\n case 4:\n for (h = L = 0; L < y; h = L += 1) c = t[r++], l = (h - h % A) / A, f = h < A ? 0 : Q[u - A], 0 === C ? v = F = 0 : (v = Q[(C - 1) * y + l * A + h % A], F = l && Q[(C - 1) * y + (l - 1) * A + h % A]), p = f + v - F, B = Math.abs(p - f), w = Math.abs(p - v), m = Math.abs(p - F), g = B <= w && B <= m ? f : w <= m ? v : F, Q[u++] = (c + g) % 256;\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + t[r - 1]);\n }\n if (!S) {\n var I = ((o + C * a) * n.width + i) * A,\n _ = C * y;\n for (h = 0; h < H; h += 1) {\n for (var T = 0; T < A; T += 1) e[I++] = Q[_++];\n I += (s - 1) * A;\n }\n }\n C++;\n }\n }\n return t = (t = new Rt(t)).getBytes(), 1 == n.interlaceMethod ? (i(0, 0, 8, 8), i(4, 0, 8, 8), i(0, 4, 4, 8), i(2, 0, 4, 4), i(0, 2, 2, 4), i(1, 0, 2, 2), i(0, 1, 1, 2)) : i(0, 0, 1, 1), e;\n }, r.prototype.decodePalette = function () {\n var t, A, e, r, n, i, o, s, a;\n for (e = this.palette, i = this.transparency.indexed || [], n = new Uint8Array((i.length || 0) + e.length), r = 0, e.length, A = o = t = 0, s = e.length; o < s; A = o += 3) n[r++] = e[A], n[r++] = e[A + 1], n[r++] = e[A + 2], n[r++] = null != (a = i[t++]) ? a : 255;\n return n;\n }, r.prototype.copyToImageData = function (t, A) {\n var e, r, n, i, o, s, a, c, u, l, h;\n if (r = this.colors, u = null, e = this.hasAlphaChannel, this.palette.length && (u = null != (h = this._decodedPalette) ? h : this._decodedPalette = this.decodePalette(), r = 4, e = !0), c = (n = t.data || t).length, o = u || A, i = s = 0, 1 === r) for (; i < c;) a = u ? 4 * A[i / 4] : s, l = o[a++], n[i++] = l, n[i++] = l, n[i++] = l, n[i++] = e ? o[a++] : 255, s = a;else for (; i < c;) a = u ? 4 * A[i / 4] : s, n[i++] = o[a++], n[i++] = o[a++], n[i++] = o[a++], n[i++] = e ? o[a++] : 255, s = a;\n }, r.prototype.decode = function () {\n var t;\n return t = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t, this.decodePixels()), t;\n };\n try {\n A = bt.document.createElement(\"canvas\"), e = A.getContext(\"2d\");\n } catch (t) {\n return -1;\n }\n return t = function (t) {\n var r;\n return e.width = t.width, e.height = t.height, e.clearRect(0, 0, t.width, t.height), e.putImageData(t, 0, 0), (r = new Image()).src = A.toDataURL(), r;\n }, r.prototype.decodeFrames = function (A) {\n var e, r, n, i, o, s, a, c;\n if (this.animation) {\n for (c = [], r = o = 0, s = (a = this.animation.frames).length; o < s; r = ++o) e = a[r], n = A.createImageData(e.width, e.height), i = this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(n, i), e.imageData = n, c.push(e.image = t(n));\n return c;\n }\n }, r.prototype.renderFrame = function (t, A) {\n var e, r, n;\n return e = (r = this.animation.frames)[A], n = r[A - 1], 0 === A && t.clearRect(0, 0, this.width, this.height), 1 === (null != n ? n.disposeOp : void 0) ? t.clearRect(n.xOffset, n.yOffset, n.width, n.height) : 2 === (null != n ? n.disposeOp : void 0) && t.putImageData(n.imageData, n.xOffset, n.yOffset), 0 === e.blendOp && t.clearRect(e.xOffset, e.yOffset, e.width, e.height), t.drawImage(e.image, e.xOffset, e.yOffset);\n }, r.prototype.animate = function (t) {\n var A,\n e,\n r,\n n,\n i,\n o,\n s = this;\n return e = 0, o = this.animation, n = o.numFrames, r = o.frames, i = o.numPlays, (A = function () {\n var o, a;\n if (o = e++ % n, a = r[o], s.renderFrame(t, o), 1 < n && e / n < i) return s.animation._timeout = setTimeout(A, a.delay);\n })();\n }, r.prototype.stopAnimation = function () {\n var t;\n return clearTimeout(null != (t = this.animation) ? t._timeout : void 0);\n }, r.prototype.render = function (t) {\n var A, e;\n return t._png && t._png.stopAnimation(), t._png = this, t.width = this.width, t.height = this.height, A = t.getContext(\"2d\"), this.animation ? (this.decodeFrames(A), this.animate(A)) : (e = A.createImageData(this.width, this.height), this.copyToImageData(e, this.decodePixels()), A.putImageData(e, 0, 0));\n }, r;\n }(), bt.PNG = Lt;\n var Tt = function () {\n function t() {\n this.pos = 0, this.bufferLength = 0, this.eof = !1, this.buffer = null;\n }\n return t.prototype = {\n ensureBuffer: function (t) {\n var A = this.buffer,\n e = A ? A.byteLength : 0;\n if (t < e) return A;\n for (var r = 512; r < t;) r <<= 1;\n for (var n = new Uint8Array(r), i = 0; i < e; ++i) n[i] = A[i];\n return this.buffer = n;\n },\n getByte: function () {\n for (var t = this.pos; this.bufferLength <= t;) {\n if (this.eof) return null;\n this.readBlock();\n }\n return this.buffer[this.pos++];\n },\n getBytes: function (t) {\n var A = this.pos;\n if (t) {\n this.ensureBuffer(A + t);\n for (var e = A + t; !this.eof && this.bufferLength < e;) this.readBlock();\n var r = this.bufferLength;\n r < e && (e = r);\n } else {\n for (; !this.eof;) this.readBlock();\n e = this.bufferLength;\n }\n return this.pos = e, this.buffer.subarray(A, e);\n },\n lookChar: function () {\n for (var t = this.pos; this.bufferLength <= t;) {\n if (this.eof) return null;\n this.readBlock();\n }\n return String.fromCharCode(this.buffer[this.pos]);\n },\n getChar: function () {\n for (var t = this.pos; this.bufferLength <= t;) {\n if (this.eof) return null;\n this.readBlock();\n }\n return String.fromCharCode(this.buffer[this.pos++]);\n },\n makeSubStream: function (t, A, e) {\n for (var r = t + A; this.bufferLength <= r && !this.eof;) this.readBlock();\n return new Stream(this.buffer, t, A, e);\n },\n skip: function (t) {\n t || (t = 1), this.pos += t;\n },\n reset: function () {\n this.pos = 0;\n }\n }, t;\n }(),\n Rt = function () {\n if (\"undefined\" != typeof Uint32Array) {\n var t = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),\n A = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258]),\n e = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545]),\n r = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9],\n n = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5];\n return (o.prototype = Object.create(Tt.prototype)).getBits = function (t) {\n for (var A, e = this.codeSize, r = this.codeBuf, n = this.bytes, o = this.bytesPos; e < t;) void 0 === (A = n[o++]) && i(\"Bad encoding in flate stream\"), r |= A << e, e += 8;\n return A = r & (1 << t) - 1, this.codeBuf = r >> t, this.codeSize = e -= t, this.bytesPos = o, A;\n }, o.prototype.getCode = function (t) {\n for (var A = t[0], e = t[1], r = this.codeSize, n = this.codeBuf, o = this.bytes, s = this.bytesPos; r < e;) {\n var a;\n void 0 === (a = o[s++]) && i(\"Bad encoding in flate stream\"), n |= a << r, r += 8;\n }\n var c = A[n & (1 << e) - 1],\n u = c >> 16,\n l = 65535 & c;\n return (0 == r || r < u || 0 == u) && i(\"Bad encoding in flate stream\"), this.codeBuf = n >> u, this.codeSize = r - u, this.bytesPos = s, l;\n }, o.prototype.generateHuffmanTable = function (t) {\n for (var A = t.length, e = 0, r = 0; r < A; ++r) t[r] > e && (e = t[r]);\n for (var n = 1 << e, i = new Uint32Array(n), o = 1, s = 0, a = 2; o <= e; ++o, s <<= 1, a <<= 1) for (var c = 0; c < A; ++c) if (t[c] == o) {\n var u = 0,\n l = s;\n for (r = 0; r < o; ++r) u = u << 1 | 1 & l, l >>= 1;\n for (r = u; r < n; r += a) i[r] = o << 16 | c;\n ++s;\n }\n return [i, e];\n }, o.prototype.readBlock = function () {\n function o(t, A, e, r, n) {\n for (var i = t.getBits(e) + r; 0 < i--;) A[d++] = n;\n }\n var s = this.getBits(3);\n if (1 & s && (this.eof = !0), 0 != (s >>= 1)) {\n var a, c;\n if (1 == s) a = r, c = n;else if (2 == s) {\n for (var u = this.getBits(5) + 257, l = this.getBits(5) + 1, h = this.getBits(4) + 4, f = Array(t.length), d = 0; d < h;) f[t[d++]] = this.getBits(3);\n for (var p = this.generateHuffmanTable(f), B = 0, g = (d = 0, u + l), w = new Array(g); d < g;) {\n var m = this.getCode(p);\n 16 == m ? o(this, w, 2, 3, B) : 17 == m ? o(this, w, 3, 3, B = 0) : 18 == m ? o(this, w, 7, 11, B = 0) : w[d++] = B = m;\n }\n a = this.generateHuffmanTable(w.slice(0, u)), c = this.generateHuffmanTable(w.slice(u, g));\n } else i(\"Unknown block type in flate stream\");\n for (var Q = (S = this.buffer) ? S.length : 0, C = this.bufferLength;;) {\n var y = this.getCode(a);\n if (y < 256) Q <= C + 1 && (Q = (S = this.ensureBuffer(C + 1)).length), S[C++] = y;else {\n if (256 == y) return void (this.bufferLength = C);\n var v = (y = A[y -= 257]) >> 16;\n 0 < v && (v = this.getBits(v)), B = (65535 & y) + v, y = this.getCode(c), 0 < (v = (y = e[y]) >> 16) && (v = this.getBits(v));\n var F = (65535 & y) + v;\n Q <= C + B && (Q = (S = this.ensureBuffer(C + B)).length);\n for (var U = 0; U < B; ++U, ++C) S[C] = S[C - F];\n }\n }\n } else {\n var N,\n E = this.bytes,\n b = this.bytesPos;\n void 0 === (N = E[b++]) && i(\"Bad block header in flate stream\");\n var L = N;\n void 0 === (N = E[b++]) && i(\"Bad block header in flate stream\"), L |= N << 8, void 0 === (N = E[b++]) && i(\"Bad block header in flate stream\");\n var H = N;\n void 0 === (N = E[b++]) && i(\"Bad block header in flate stream\"), (H |= N << 8) != (65535 & ~L) && i(\"Bad uncompressed block length in flate stream\"), this.codeBuf = 0, this.codeSize = 0;\n var x = this.bufferLength,\n S = this.ensureBuffer(x + L),\n I = x + L;\n this.bufferLength = I;\n for (var _ = x; _ < I; ++_) {\n if (void 0 === (N = E[b++])) {\n this.eof = !0;\n break;\n }\n S[_] = N;\n }\n this.bytesPos = b;\n }\n }, o;\n }\n function i(t) {\n throw new Error(t);\n }\n function o(t) {\n var A = 0,\n e = t[A++],\n r = t[A++];\n -1 != e && -1 != r || i(\"Invalid header in flate stream\"), 8 != (15 & e) && i(\"Unknown compression method in flate stream\"), ((e << 8) + r) % 31 != 0 && i(\"Bad FCHECK in flate stream\"), 32 & r && i(\"FDICT bit set in flate stream\"), this.bytes = t, this.bytesPos = 2, this.codeSize = 0, this.codeBuf = 0, Tt.call(this);\n }\n }();\n window.tmp = Rt;\n }, void 0 === (i = \"function\" == typeof n ? n.call(A, e, A, t) : n) || (t.exports = i);\n try {\n t.exports = jsPDF;\n } catch (t) {}\n }).call(this, e(4));\n}, function (t, A) {\n t.exports = require(\"react-dom\");\n}, function (t, A, e) {\n \"use strict\";\n\n e.r(A), e.d(A, \"exportComponentAsJPEG\", function () {\n return B;\n }), e.d(A, \"exportComponentAsPDF\", function () {\n return g;\n }), e.d(A, \"exportComponentAsPNG\", function () {\n return p;\n });\n var r = e(0),\n n = e.n(r),\n i = e(1),\n o = e.n(i),\n s = e(2),\n a = e.n(s);\n const c = \"image/png\",\n u = \"application/pdf\",\n l = {\n fileName: \"component.png\",\n type: c,\n html2CanvasOptions: {}\n },\n h = {\n fileName: \"component.jpg\",\n type: \"image/jpeg\",\n html2CanvasOptions: {}\n },\n f = {\n fileName: \"component.pdf\",\n type: u,\n html2CanvasOptions: {},\n pdfOptions: {}\n },\n d = (t, _ref) => {\n let {\n fileName: A,\n type: e,\n html2CanvasOptions: r,\n pdfOptions: i\n } = _ref;\n if (!t.current) throw new Error(\"'node' must be a RefObject\");\n const s = a.a.findDOMNode(t.current);\n return n()(s, {\n scrollY: -window.scrollY,\n useCORS: !0,\n ...r\n }).then(t => {\n if (e === u) {\n const e = ((t, _ref2) => {\n let {\n w: A,\n h: e,\n orientation: r,\n unit: n = \"mm\",\n pdfFormat: i\n } = _ref2;\n const s = A || t.width,\n a = e || t.height,\n c = r || s > a ? \"l\" : \"p\",\n u = i || \"a4\";\n return new o.a(c, n, u);\n })(t, i);\n e.addImage(t.toDataURL(c, 1), \"PNG\", i.x || 0, i.y || 0, i.w || t.width, i.h || t.height), e.save(A);\n } else ((t, A) => {\n const e = document.createElement(\"a\");\n \"string\" == typeof e.download ? (e.href = t, e.download = A, document.body.appendChild(e), e.click(), document.body.removeChild(e)) : window.open(t);\n })(t.toDataURL(e, 1), A);\n });\n },\n p = function (t) {\n let A = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return d(t, {\n ...l,\n ...A\n });\n },\n B = function (t) {\n let A = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return d(t, {\n ...h,\n ...A\n });\n },\n g = function (t) {\n let A = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return d(t, {\n ...f,\n ...A\n });\n };\n}, function (t, A) {\n var e;\n e = function () {\n return this;\n }();\n try {\n e = e || new Function(\"return this\")();\n } catch (t) {\n \"object\" == typeof window && (e = window);\n }\n t.exports = e;\n}]);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nexports.renderViewDefault = renderViewDefault;\nexports.renderTrackHorizontalDefault = renderTrackHorizontalDefault;\nexports.renderTrackVerticalDefault = renderTrackVerticalDefault;\nexports.renderThumbHorizontalDefault = renderThumbHorizontalDefault;\nexports.renderThumbVerticalDefault = renderThumbVerticalDefault;\nvar _react = require('react');\nvar _react2 = _interopRequireDefault(_react);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\n\n/* eslint-disable react/prop-types */\n\nfunction renderViewDefault(props) {\n return _react2[\"default\"].createElement('div', props);\n}\nfunction renderTrackHorizontalDefault(_ref) {\n var style = _ref.style,\n props = _objectWithoutProperties(_ref, ['style']);\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n left: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({\n style: finalStyle\n }, props));\n}\nfunction renderTrackVerticalDefault(_ref2) {\n var style = _ref2.style,\n props = _objectWithoutProperties(_ref2, ['style']);\n var finalStyle = _extends({}, style, {\n right: 2,\n bottom: 2,\n top: 2,\n borderRadius: 3\n });\n return _react2[\"default\"].createElement('div', _extends({\n style: finalStyle\n }, props));\n}\nfunction renderThumbHorizontalDefault(_ref3) {\n var style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ['style']);\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({\n style: finalStyle\n }, props));\n}\nfunction renderThumbVerticalDefault(_ref4) {\n var style = _ref4.style,\n props = _objectWithoutProperties(_ref4, ['style']);\n var finalStyle = _extends({}, style, {\n cursor: 'pointer',\n borderRadius: 'inherit',\n backgroundColor: 'rgba(0,0,0,.2)'\n });\n return _react2[\"default\"].createElement('div', _extends({\n style: finalStyle\n }, props));\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _raf2 = require('raf');\nvar _raf3 = _interopRequireDefault(_raf2);\nvar _domCss = require('dom-css');\nvar _domCss2 = _interopRequireDefault(_domCss);\nvar _react = require('react');\nvar _propTypes = require('prop-types');\nvar _propTypes2 = _interopRequireDefault(_propTypes);\nvar _isString = require('../utils/isString');\nvar _isString2 = _interopRequireDefault(_isString);\nvar _getScrollbarWidth = require('../utils/getScrollbarWidth');\nvar _getScrollbarWidth2 = _interopRequireDefault(_getScrollbarWidth);\nvar _returnFalse = require('../utils/returnFalse');\nvar _returnFalse2 = _interopRequireDefault(_returnFalse);\nvar _getInnerWidth = require('../utils/getInnerWidth');\nvar _getInnerWidth2 = _interopRequireDefault(_getInnerWidth);\nvar _getInnerHeight = require('../utils/getInnerHeight');\nvar _getInnerHeight2 = _interopRequireDefault(_getInnerHeight);\nvar _styles = require('./styles');\nvar _defaultRenderElements = require('./defaultRenderElements');\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nvar Scrollbars = function (_Component) {\n _inherits(Scrollbars, _Component);\n function Scrollbars(props) {\n var _ref;\n _classCallCheck(this, Scrollbars);\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n var _this = _possibleConstructorReturn(this, (_ref = Scrollbars.__proto__ || Object.getPrototypeOf(Scrollbars)).call.apply(_ref, [this, props].concat(rest)));\n _this.getScrollLeft = _this.getScrollLeft.bind(_this);\n _this.getScrollTop = _this.getScrollTop.bind(_this);\n _this.getScrollWidth = _this.getScrollWidth.bind(_this);\n _this.getScrollHeight = _this.getScrollHeight.bind(_this);\n _this.getClientWidth = _this.getClientWidth.bind(_this);\n _this.getClientHeight = _this.getClientHeight.bind(_this);\n _this.getValues = _this.getValues.bind(_this);\n _this.getThumbHorizontalWidth = _this.getThumbHorizontalWidth.bind(_this);\n _this.getThumbVerticalHeight = _this.getThumbVerticalHeight.bind(_this);\n _this.getScrollLeftForOffset = _this.getScrollLeftForOffset.bind(_this);\n _this.getScrollTopForOffset = _this.getScrollTopForOffset.bind(_this);\n _this.scrollLeft = _this.scrollLeft.bind(_this);\n _this.scrollTop = _this.scrollTop.bind(_this);\n _this.scrollToLeft = _this.scrollToLeft.bind(_this);\n _this.scrollToTop = _this.scrollToTop.bind(_this);\n _this.scrollToRight = _this.scrollToRight.bind(_this);\n _this.scrollToBottom = _this.scrollToBottom.bind(_this);\n _this.handleTrackMouseEnter = _this.handleTrackMouseEnter.bind(_this);\n _this.handleTrackMouseLeave = _this.handleTrackMouseLeave.bind(_this);\n _this.handleHorizontalTrackMouseDown = _this.handleHorizontalTrackMouseDown.bind(_this);\n _this.handleVerticalTrackMouseDown = _this.handleVerticalTrackMouseDown.bind(_this);\n _this.handleHorizontalThumbMouseDown = _this.handleHorizontalThumbMouseDown.bind(_this);\n _this.handleVerticalThumbMouseDown = _this.handleVerticalThumbMouseDown.bind(_this);\n _this.handleWindowResize = _this.handleWindowResize.bind(_this);\n _this.handleScroll = _this.handleScroll.bind(_this);\n _this.handleDrag = _this.handleDrag.bind(_this);\n _this.handleDragEnd = _this.handleDragEnd.bind(_this);\n _this.state = {\n didMountUniversal: false\n };\n return _this;\n }\n _createClass(Scrollbars, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.addListeners();\n this.update();\n this.componentDidMountUniversal();\n }\n }, {\n key: 'componentDidMountUniversal',\n value: function componentDidMountUniversal() {\n // eslint-disable-line react/sort-comp\n var universal = this.props.universal;\n if (!universal) return;\n this.setState({\n didMountUniversal: true\n });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeListeners();\n (0, _raf2.cancel)(this.requestFrame);\n clearTimeout(this.hideTracksTimeout);\n clearInterval(this.detectScrollingInterval);\n }\n }, {\n key: 'getScrollLeft',\n value: function getScrollLeft() {\n if (!this.view) return 0;\n return this.view.scrollLeft;\n }\n }, {\n key: 'getScrollTop',\n value: function getScrollTop() {\n if (!this.view) return 0;\n return this.view.scrollTop;\n }\n }, {\n key: 'getScrollWidth',\n value: function getScrollWidth() {\n if (!this.view) return 0;\n return this.view.scrollWidth;\n }\n }, {\n key: 'getScrollHeight',\n value: function getScrollHeight() {\n if (!this.view) return 0;\n return this.view.scrollHeight;\n }\n }, {\n key: 'getClientWidth',\n value: function getClientWidth() {\n if (!this.view) return 0;\n return this.view.clientWidth;\n }\n }, {\n key: 'getClientHeight',\n value: function getClientHeight() {\n if (!this.view) return 0;\n return this.view.clientHeight;\n }\n }, {\n key: 'getValues',\n value: function getValues() {\n var _ref2 = this.view || {},\n _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeft = _ref2$scrollLeft === undefined ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTop = _ref2$scrollTop === undefined ? 0 : _ref2$scrollTop,\n _ref2$scrollWidth = _ref2.scrollWidth,\n scrollWidth = _ref2$scrollWidth === undefined ? 0 : _ref2$scrollWidth,\n _ref2$scrollHeight = _ref2.scrollHeight,\n scrollHeight = _ref2$scrollHeight === undefined ? 0 : _ref2$scrollHeight,\n _ref2$clientWidth = _ref2.clientWidth,\n clientWidth = _ref2$clientWidth === undefined ? 0 : _ref2$clientWidth,\n _ref2$clientHeight = _ref2.clientHeight,\n clientHeight = _ref2$clientHeight === undefined ? 0 : _ref2$clientHeight;\n return {\n left: scrollLeft / (scrollWidth - clientWidth) || 0,\n top: scrollTop / (scrollHeight - clientHeight) || 0,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth,\n scrollHeight: scrollHeight,\n clientWidth: clientWidth,\n clientHeight: clientHeight\n };\n }\n }, {\n key: 'getThumbHorizontalWidth',\n value: function getThumbHorizontalWidth() {\n var _props = this.props,\n thumbSize = _props.thumbSize,\n thumbMinSize = _props.thumbMinSize;\n var _view = this.view,\n scrollWidth = _view.scrollWidth,\n clientWidth = _view.clientWidth;\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var width = Math.ceil(clientWidth / scrollWidth * trackWidth);\n if (trackWidth === width) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(width, thumbMinSize);\n }\n }, {\n key: 'getThumbVerticalHeight',\n value: function getThumbVerticalHeight() {\n var _props2 = this.props,\n thumbSize = _props2.thumbSize,\n thumbMinSize = _props2.thumbMinSize;\n var _view2 = this.view,\n scrollHeight = _view2.scrollHeight,\n clientHeight = _view2.clientHeight;\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var height = Math.ceil(clientHeight / scrollHeight * trackHeight);\n if (trackHeight === height) return 0;\n if (thumbSize) return thumbSize;\n return Math.max(height, thumbMinSize);\n }\n }, {\n key: 'getScrollLeftForOffset',\n value: function getScrollLeftForOffset(offset) {\n var _view3 = this.view,\n scrollWidth = _view3.scrollWidth,\n clientWidth = _view3.clientWidth;\n var trackWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbWidth = this.getThumbHorizontalWidth();\n return offset / (trackWidth - thumbWidth) * (scrollWidth - clientWidth);\n }\n }, {\n key: 'getScrollTopForOffset',\n value: function getScrollTopForOffset(offset) {\n var _view4 = this.view,\n scrollHeight = _view4.scrollHeight,\n clientHeight = _view4.clientHeight;\n var trackHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbHeight = this.getThumbVerticalHeight();\n return offset / (trackHeight - thumbHeight) * (scrollHeight - clientHeight);\n }\n }, {\n key: 'scrollLeft',\n value: function scrollLeft() {\n var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (!this.view) return;\n this.view.scrollLeft = left;\n }\n }, {\n key: 'scrollTop',\n value: function scrollTop() {\n var top = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n if (!this.view) return;\n this.view.scrollTop = top;\n }\n }, {\n key: 'scrollToLeft',\n value: function scrollToLeft() {\n if (!this.view) return;\n this.view.scrollLeft = 0;\n }\n }, {\n key: 'scrollToTop',\n value: function scrollToTop() {\n if (!this.view) return;\n this.view.scrollTop = 0;\n }\n }, {\n key: 'scrollToRight',\n value: function scrollToRight() {\n if (!this.view) return;\n this.view.scrollLeft = this.view.scrollWidth;\n }\n }, {\n key: 'scrollToBottom',\n value: function scrollToBottom() {\n if (!this.view) return;\n this.view.scrollTop = this.view.scrollHeight;\n }\n }, {\n key: 'addListeners',\n value: function addListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n view.addEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.addEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.addEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.addEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.addEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.addEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.addEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.addEventListener('resize', this.handleWindowResize);\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n /* istanbul ignore if */\n if (typeof document === 'undefined' || !this.view) return;\n var view = this.view,\n trackHorizontal = this.trackHorizontal,\n trackVertical = this.trackVertical,\n thumbHorizontal = this.thumbHorizontal,\n thumbVertical = this.thumbVertical;\n view.removeEventListener('scroll', this.handleScroll);\n if (!(0, _getScrollbarWidth2[\"default\"])()) return;\n trackHorizontal.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackHorizontal.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackHorizontal.removeEventListener('mousedown', this.handleHorizontalTrackMouseDown);\n trackVertical.removeEventListener('mouseenter', this.handleTrackMouseEnter);\n trackVertical.removeEventListener('mouseleave', this.handleTrackMouseLeave);\n trackVertical.removeEventListener('mousedown', this.handleVerticalTrackMouseDown);\n thumbHorizontal.removeEventListener('mousedown', this.handleHorizontalThumbMouseDown);\n thumbVertical.removeEventListener('mousedown', this.handleVerticalThumbMouseDown);\n window.removeEventListener('resize', this.handleWindowResize);\n // Possibly setup by `handleDragStart`\n this.teardownDragging();\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(event) {\n var _this2 = this;\n var _props3 = this.props,\n onScroll = _props3.onScroll,\n onScrollFrame = _props3.onScrollFrame;\n if (onScroll) onScroll(event);\n this.update(function (values) {\n var scrollLeft = values.scrollLeft,\n scrollTop = values.scrollTop;\n _this2.viewScrollLeft = scrollLeft;\n _this2.viewScrollTop = scrollTop;\n if (onScrollFrame) onScrollFrame(values);\n });\n this.detectScrolling();\n }\n }, {\n key: 'handleScrollStart',\n value: function handleScrollStart() {\n var onScrollStart = this.props.onScrollStart;\n if (onScrollStart) onScrollStart();\n this.handleScrollStartAutoHide();\n }\n }, {\n key: 'handleScrollStartAutoHide',\n value: function handleScrollStartAutoHide() {\n var autoHide = this.props.autoHide;\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleScrollStop',\n value: function handleScrollStop() {\n var onScrollStop = this.props.onScrollStop;\n if (onScrollStop) onScrollStop();\n this.handleScrollStopAutoHide();\n }\n }, {\n key: 'handleScrollStopAutoHide',\n value: function handleScrollStopAutoHide() {\n var autoHide = this.props.autoHide;\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleWindowResize',\n value: function handleWindowResize() {\n this.update();\n }\n }, {\n key: 'handleHorizontalTrackMouseDown',\n value: function handleHorizontalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientX = event.clientX;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n targetLeft = _target$getBoundingCl.left;\n var thumbWidth = this.getThumbHorizontalWidth();\n var offset = Math.abs(targetLeft - clientX) - thumbWidth / 2;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n }, {\n key: 'handleVerticalTrackMouseDown',\n value: function handleVerticalTrackMouseDown(event) {\n event.preventDefault();\n var target = event.target,\n clientY = event.clientY;\n var _target$getBoundingCl2 = target.getBoundingClientRect(),\n targetTop = _target$getBoundingCl2.top;\n var thumbHeight = this.getThumbVerticalHeight();\n var offset = Math.abs(targetTop - clientY) - thumbHeight / 2;\n this.view.scrollTop = this.getScrollTopForOffset(offset);\n }\n }, {\n key: 'handleHorizontalThumbMouseDown',\n value: function handleHorizontalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientX = event.clientX;\n var offsetWidth = target.offsetWidth;\n var _target$getBoundingCl3 = target.getBoundingClientRect(),\n left = _target$getBoundingCl3.left;\n this.prevPageX = offsetWidth - (clientX - left);\n }\n }, {\n key: 'handleVerticalThumbMouseDown',\n value: function handleVerticalThumbMouseDown(event) {\n event.preventDefault();\n this.handleDragStart(event);\n var target = event.target,\n clientY = event.clientY;\n var offsetHeight = target.offsetHeight;\n var _target$getBoundingCl4 = target.getBoundingClientRect(),\n top = _target$getBoundingCl4.top;\n this.prevPageY = offsetHeight - (clientY - top);\n }\n }, {\n key: 'setupDragging',\n value: function setupDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyle);\n document.addEventListener('mousemove', this.handleDrag);\n document.addEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = _returnFalse2[\"default\"];\n }\n }, {\n key: 'teardownDragging',\n value: function teardownDragging() {\n (0, _domCss2[\"default\"])(document.body, _styles.disableSelectStyleReset);\n document.removeEventListener('mousemove', this.handleDrag);\n document.removeEventListener('mouseup', this.handleDragEnd);\n document.onselectstart = undefined;\n }\n }, {\n key: 'handleDragStart',\n value: function handleDragStart(event) {\n this.dragging = true;\n event.stopImmediatePropagation();\n this.setupDragging();\n }\n }, {\n key: 'handleDrag',\n value: function handleDrag(event) {\n if (this.prevPageX) {\n var clientX = event.clientX;\n var _trackHorizontal$getB = this.trackHorizontal.getBoundingClientRect(),\n trackLeft = _trackHorizontal$getB.left;\n var thumbWidth = this.getThumbHorizontalWidth();\n var clickPosition = thumbWidth - this.prevPageX;\n var offset = -trackLeft + clientX - clickPosition;\n this.view.scrollLeft = this.getScrollLeftForOffset(offset);\n }\n if (this.prevPageY) {\n var clientY = event.clientY;\n var _trackVertical$getBou = this.trackVertical.getBoundingClientRect(),\n trackTop = _trackVertical$getBou.top;\n var thumbHeight = this.getThumbVerticalHeight();\n var _clickPosition = thumbHeight - this.prevPageY;\n var _offset = -trackTop + clientY - _clickPosition;\n this.view.scrollTop = this.getScrollTopForOffset(_offset);\n }\n return false;\n }\n }, {\n key: 'handleDragEnd',\n value: function handleDragEnd() {\n this.dragging = false;\n this.prevPageX = this.prevPageY = 0;\n this.teardownDragging();\n this.handleDragEndAutoHide();\n }\n }, {\n key: 'handleDragEndAutoHide',\n value: function handleDragEndAutoHide() {\n var autoHide = this.props.autoHide;\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'handleTrackMouseEnter',\n value: function handleTrackMouseEnter() {\n this.trackMouseOver = true;\n this.handleTrackMouseEnterAutoHide();\n }\n }, {\n key: 'handleTrackMouseEnterAutoHide',\n value: function handleTrackMouseEnterAutoHide() {\n var autoHide = this.props.autoHide;\n if (!autoHide) return;\n this.showTracks();\n }\n }, {\n key: 'handleTrackMouseLeave',\n value: function handleTrackMouseLeave() {\n this.trackMouseOver = false;\n this.handleTrackMouseLeaveAutoHide();\n }\n }, {\n key: 'handleTrackMouseLeaveAutoHide',\n value: function handleTrackMouseLeaveAutoHide() {\n var autoHide = this.props.autoHide;\n if (!autoHide) return;\n this.hideTracks();\n }\n }, {\n key: 'showTracks',\n value: function showTracks() {\n clearTimeout(this.hideTracksTimeout);\n (0, _domCss2[\"default\"])(this.trackHorizontal, {\n opacity: 1\n });\n (0, _domCss2[\"default\"])(this.trackVertical, {\n opacity: 1\n });\n }\n }, {\n key: 'hideTracks',\n value: function hideTracks() {\n var _this3 = this;\n if (this.dragging) return;\n if (this.scrolling) return;\n if (this.trackMouseOver) return;\n var autoHideTimeout = this.props.autoHideTimeout;\n clearTimeout(this.hideTracksTimeout);\n this.hideTracksTimeout = setTimeout(function () {\n (0, _domCss2[\"default\"])(_this3.trackHorizontal, {\n opacity: 0\n });\n (0, _domCss2[\"default\"])(_this3.trackVertical, {\n opacity: 0\n });\n }, autoHideTimeout);\n }\n }, {\n key: 'detectScrolling',\n value: function detectScrolling() {\n var _this4 = this;\n if (this.scrolling) return;\n this.scrolling = true;\n this.handleScrollStart();\n this.detectScrollingInterval = setInterval(function () {\n if (_this4.lastViewScrollLeft === _this4.viewScrollLeft && _this4.lastViewScrollTop === _this4.viewScrollTop) {\n clearInterval(_this4.detectScrollingInterval);\n _this4.scrolling = false;\n _this4.handleScrollStop();\n }\n _this4.lastViewScrollLeft = _this4.viewScrollLeft;\n _this4.lastViewScrollTop = _this4.viewScrollTop;\n }, 100);\n }\n }, {\n key: 'raf',\n value: function raf(callback) {\n var _this5 = this;\n if (this.requestFrame) _raf3[\"default\"].cancel(this.requestFrame);\n this.requestFrame = (0, _raf3[\"default\"])(function () {\n _this5.requestFrame = undefined;\n callback();\n });\n }\n }, {\n key: 'update',\n value: function update(callback) {\n var _this6 = this;\n this.raf(function () {\n return _this6._update(callback);\n });\n }\n }, {\n key: '_update',\n value: function _update(callback) {\n var _props4 = this.props,\n onUpdate = _props4.onUpdate,\n hideTracksWhenNotNeeded = _props4.hideTracksWhenNotNeeded;\n var values = this.getValues();\n if ((0, _getScrollbarWidth2[\"default\"])()) {\n var scrollLeft = values.scrollLeft,\n clientWidth = values.clientWidth,\n scrollWidth = values.scrollWidth;\n var trackHorizontalWidth = (0, _getInnerWidth2[\"default\"])(this.trackHorizontal);\n var thumbHorizontalWidth = this.getThumbHorizontalWidth();\n var thumbHorizontalX = scrollLeft / (scrollWidth - clientWidth) * (trackHorizontalWidth - thumbHorizontalWidth);\n var thumbHorizontalStyle = {\n width: thumbHorizontalWidth,\n transform: 'translateX(' + thumbHorizontalX + 'px)'\n };\n var scrollTop = values.scrollTop,\n clientHeight = values.clientHeight,\n scrollHeight = values.scrollHeight;\n var trackVerticalHeight = (0, _getInnerHeight2[\"default\"])(this.trackVertical);\n var thumbVerticalHeight = this.getThumbVerticalHeight();\n var thumbVerticalY = scrollTop / (scrollHeight - clientHeight) * (trackVerticalHeight - thumbVerticalHeight);\n var thumbVerticalStyle = {\n height: thumbVerticalHeight,\n transform: 'translateY(' + thumbVerticalY + 'px)'\n };\n if (hideTracksWhenNotNeeded) {\n var trackHorizontalStyle = {\n visibility: scrollWidth > clientWidth ? 'visible' : 'hidden'\n };\n var trackVerticalStyle = {\n visibility: scrollHeight > clientHeight ? 'visible' : 'hidden'\n };\n (0, _domCss2[\"default\"])(this.trackHorizontal, trackHorizontalStyle);\n (0, _domCss2[\"default\"])(this.trackVertical, trackVerticalStyle);\n }\n (0, _domCss2[\"default\"])(this.thumbHorizontal, thumbHorizontalStyle);\n (0, _domCss2[\"default\"])(this.thumbVertical, thumbVerticalStyle);\n }\n if (onUpdate) onUpdate(values);\n if (typeof callback !== 'function') return;\n callback(values);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this7 = this;\n var scrollbarWidth = (0, _getScrollbarWidth2[\"default\"])();\n /* eslint-disable no-unused-vars */\n\n var _props5 = this.props,\n onScroll = _props5.onScroll,\n onScrollFrame = _props5.onScrollFrame,\n onScrollStart = _props5.onScrollStart,\n onScrollStop = _props5.onScrollStop,\n onUpdate = _props5.onUpdate,\n renderView = _props5.renderView,\n renderTrackHorizontal = _props5.renderTrackHorizontal,\n renderTrackVertical = _props5.renderTrackVertical,\n renderThumbHorizontal = _props5.renderThumbHorizontal,\n renderThumbVertical = _props5.renderThumbVertical,\n tagName = _props5.tagName,\n hideTracksWhenNotNeeded = _props5.hideTracksWhenNotNeeded,\n autoHide = _props5.autoHide,\n autoHideTimeout = _props5.autoHideTimeout,\n autoHideDuration = _props5.autoHideDuration,\n thumbSize = _props5.thumbSize,\n thumbMinSize = _props5.thumbMinSize,\n universal = _props5.universal,\n autoHeight = _props5.autoHeight,\n autoHeightMin = _props5.autoHeightMin,\n autoHeightMax = _props5.autoHeightMax,\n style = _props5.style,\n children = _props5.children,\n props = _objectWithoutProperties(_props5, ['onScroll', 'onScrollFrame', 'onScrollStart', 'onScrollStop', 'onUpdate', 'renderView', 'renderTrackHorizontal', 'renderTrackVertical', 'renderThumbHorizontal', 'renderThumbVertical', 'tagName', 'hideTracksWhenNotNeeded', 'autoHide', 'autoHideTimeout', 'autoHideDuration', 'thumbSize', 'thumbMinSize', 'universal', 'autoHeight', 'autoHeightMin', 'autoHeightMax', 'style', 'children']);\n /* eslint-enable no-unused-vars */\n\n var didMountUniversal = this.state.didMountUniversal;\n var containerStyle = _extends({}, _styles.containerStyleDefault, autoHeight && _extends({}, _styles.containerStyleAutoHeight, {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }), style);\n var viewStyle = _extends({}, _styles.viewStyleDefault, {\n // Hide scrollbars by setting a negative margin\n marginRight: scrollbarWidth ? -scrollbarWidth : 0,\n marginBottom: scrollbarWidth ? -scrollbarWidth : 0\n }, autoHeight && _extends({}, _styles.viewStyleAutoHeight, {\n // Add scrollbarWidth to autoHeight in order to compensate negative margins\n minHeight: (0, _isString2[\"default\"])(autoHeightMin) ? 'calc(' + autoHeightMin + ' + ' + scrollbarWidth + 'px)' : autoHeightMin + scrollbarWidth,\n maxHeight: (0, _isString2[\"default\"])(autoHeightMax) ? 'calc(' + autoHeightMax + ' + ' + scrollbarWidth + 'px)' : autoHeightMax + scrollbarWidth\n }), autoHeight && universal && !didMountUniversal && {\n minHeight: autoHeightMin,\n maxHeight: autoHeightMax\n }, universal && !didMountUniversal && _styles.viewStyleUniversalInitial);\n var trackAutoHeightStyle = {\n transition: 'opacity ' + autoHideDuration + 'ms',\n opacity: 0\n };\n var trackHorizontalStyle = _extends({}, _styles.trackHorizontalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n var trackVerticalStyle = _extends({}, _styles.trackVerticalStyleDefault, autoHide && trackAutoHeightStyle, (!scrollbarWidth || universal && !didMountUniversal) && {\n display: 'none'\n });\n return (0, _react.createElement)(tagName, _extends({}, props, {\n style: containerStyle,\n ref: function ref(_ref3) {\n _this7.container = _ref3;\n }\n }), [(0, _react.cloneElement)(renderView({\n style: viewStyle\n }), {\n key: 'view',\n ref: function ref(_ref4) {\n _this7.view = _ref4;\n }\n }, children), (0, _react.cloneElement)(renderTrackHorizontal({\n style: trackHorizontalStyle\n }), {\n key: 'trackHorizontal',\n ref: function ref(_ref5) {\n _this7.trackHorizontal = _ref5;\n }\n }, (0, _react.cloneElement)(renderThumbHorizontal({\n style: _styles.thumbHorizontalStyleDefault\n }), {\n ref: function ref(_ref6) {\n _this7.thumbHorizontal = _ref6;\n }\n })), (0, _react.cloneElement)(renderTrackVertical({\n style: trackVerticalStyle\n }), {\n key: 'trackVertical',\n ref: function ref(_ref7) {\n _this7.trackVertical = _ref7;\n }\n }, (0, _react.cloneElement)(renderThumbVertical({\n style: _styles.thumbVerticalStyleDefault\n }), {\n ref: function ref(_ref8) {\n _this7.thumbVertical = _ref8;\n }\n }))]);\n }\n }]);\n return Scrollbars;\n}(_react.Component);\nexports[\"default\"] = Scrollbars;\nScrollbars.propTypes = {\n onScroll: _propTypes2[\"default\"].func,\n onScrollFrame: _propTypes2[\"default\"].func,\n onScrollStart: _propTypes2[\"default\"].func,\n onScrollStop: _propTypes2[\"default\"].func,\n onUpdate: _propTypes2[\"default\"].func,\n renderView: _propTypes2[\"default\"].func,\n renderTrackHorizontal: _propTypes2[\"default\"].func,\n renderTrackVertical: _propTypes2[\"default\"].func,\n renderThumbHorizontal: _propTypes2[\"default\"].func,\n renderThumbVertical: _propTypes2[\"default\"].func,\n tagName: _propTypes2[\"default\"].string,\n thumbSize: _propTypes2[\"default\"].number,\n thumbMinSize: _propTypes2[\"default\"].number,\n hideTracksWhenNotNeeded: _propTypes2[\"default\"].bool,\n autoHide: _propTypes2[\"default\"].bool,\n autoHideTimeout: _propTypes2[\"default\"].number,\n autoHideDuration: _propTypes2[\"default\"].number,\n autoHeight: _propTypes2[\"default\"].bool,\n autoHeightMin: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n autoHeightMax: _propTypes2[\"default\"].oneOfType([_propTypes2[\"default\"].number, _propTypes2[\"default\"].string]),\n universal: _propTypes2[\"default\"].bool,\n style: _propTypes2[\"default\"].object,\n children: _propTypes2[\"default\"].node\n};\nScrollbars.defaultProps = {\n renderView: _defaultRenderElements.renderViewDefault,\n renderTrackHorizontal: _defaultRenderElements.renderTrackHorizontalDefault,\n renderTrackVertical: _defaultRenderElements.renderTrackVerticalDefault,\n renderThumbHorizontal: _defaultRenderElements.renderThumbHorizontalDefault,\n renderThumbVertical: _defaultRenderElements.renderThumbVerticalDefault,\n tagName: 'div',\n thumbMinSize: 30,\n hideTracksWhenNotNeeded: false,\n autoHide: false,\n autoHideTimeout: 1000,\n autoHideDuration: 200,\n autoHeight: false,\n autoHeightMin: 0,\n autoHeightMax: 200,\n universal: false\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar containerStyleDefault = exports.containerStyleDefault = {\n position: 'relative',\n overflow: 'hidden',\n width: '100%',\n height: '100%'\n};\n\n// Overrides containerStyleDefault properties\nvar containerStyleAutoHeight = exports.containerStyleAutoHeight = {\n height: 'auto'\n};\nvar viewStyleDefault = exports.viewStyleDefault = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n overflow: 'scroll',\n WebkitOverflowScrolling: 'touch'\n};\n\n// Overrides viewStyleDefault properties\nvar viewStyleAutoHeight = exports.viewStyleAutoHeight = {\n position: 'relative',\n top: undefined,\n left: undefined,\n right: undefined,\n bottom: undefined\n};\nvar viewStyleUniversalInitial = exports.viewStyleUniversalInitial = {\n overflow: 'hidden',\n marginRight: 0,\n marginBottom: 0\n};\nvar trackHorizontalStyleDefault = exports.trackHorizontalStyleDefault = {\n position: 'absolute',\n height: 6\n};\nvar trackVerticalStyleDefault = exports.trackVerticalStyleDefault = {\n position: 'absolute',\n width: 6\n};\nvar thumbHorizontalStyleDefault = exports.thumbHorizontalStyleDefault = {\n position: 'relative',\n display: 'block',\n height: '100%'\n};\nvar thumbVerticalStyleDefault = exports.thumbVerticalStyleDefault = {\n position: 'relative',\n display: 'block',\n width: '100%'\n};\nvar disableSelectStyle = exports.disableSelectStyle = {\n userSelect: 'none'\n};\nvar disableSelectStyleReset = exports.disableSelectStyleReset = {\n userSelect: ''\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Scrollbars = undefined;\nvar _Scrollbars = require('./Scrollbars');\nvar _Scrollbars2 = _interopRequireDefault(_Scrollbars);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nexports[\"default\"] = _Scrollbars2[\"default\"];\nexports.Scrollbars = _Scrollbars2[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerHeight;\nfunction getInnerHeight(el) {\n var clientHeight = el.clientHeight;\n var _getComputedStyle = getComputedStyle(el),\n paddingTop = _getComputedStyle.paddingTop,\n paddingBottom = _getComputedStyle.paddingBottom;\n return clientHeight - parseFloat(paddingTop) - parseFloat(paddingBottom);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getInnerWidth;\nfunction getInnerWidth(el) {\n var clientWidth = el.clientWidth;\n var _getComputedStyle = getComputedStyle(el),\n paddingLeft = _getComputedStyle.paddingLeft,\n paddingRight = _getComputedStyle.paddingRight;\n return clientWidth - parseFloat(paddingLeft) - parseFloat(paddingRight);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = getScrollbarWidth;\nvar _domCss = require('dom-css');\nvar _domCss2 = _interopRequireDefault(_domCss);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nvar scrollbarWidth = false;\nfunction getScrollbarWidth() {\n if (scrollbarWidth !== false) return scrollbarWidth;\n /* istanbul ignore else */\n if (typeof document !== 'undefined') {\n var div = document.createElement('div');\n (0, _domCss2[\"default\"])(div, {\n width: 100,\n height: 100,\n position: 'absolute',\n top: -9999,\n overflow: 'scroll',\n MsOverflowStyle: 'scrollbar'\n });\n document.body.appendChild(div);\n scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n } else {\n scrollbarWidth = 0;\n }\n return scrollbarWidth || 0;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = isString;\nfunction isString(maybe) {\n return typeof maybe === 'string';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = returnFalse;\nfunction returnFalse() {\n return false;\n}","/** @license React v17.0.2\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';\n\nvar aa = require(\"react\"),\n m = require(\"object-assign\"),\n r = require(\"scheduler\");\nfunction y(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\nif (!aa) throw Error(y(227));\nvar ba = new Set(),\n ca = {};\nfunction da(a, b) {\n ea(a, b);\n ea(a + \"Capture\", b);\n}\nfunction ea(a, b) {\n ca[a] = b;\n for (a = 0; a < b.length; a++) ba.add(b[a]);\n}\nvar fa = !(\"undefined\" === typeof window || \"undefined\" === typeof window.document || \"undefined\" === typeof window.document.createElement),\n ha = /^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,\n ia = Object.prototype.hasOwnProperty,\n ja = {},\n ka = {};\nfunction la(a) {\n if (ia.call(ka, a)) return !0;\n if (ia.call(ja, a)) return !1;\n if (ha.test(a)) return ka[a] = !0;\n ja[a] = !0;\n return !1;\n}\nfunction ma(a, b, c, d) {\n if (null !== c && 0 === c.type) return !1;\n switch (typeof b) {\n case \"function\":\n case \"symbol\":\n return !0;\n case \"boolean\":\n if (d) return !1;\n if (null !== c) return !c.acceptsBooleans;\n a = a.toLowerCase().slice(0, 5);\n return \"data-\" !== a && \"aria-\" !== a;\n default:\n return !1;\n }\n}\nfunction na(a, b, c, d) {\n if (null === b || \"undefined\" === typeof b || ma(a, b, c, d)) return !0;\n if (d) return !1;\n if (null !== c) switch (c.type) {\n case 3:\n return !b;\n case 4:\n return !1 === b;\n case 5:\n return isNaN(b);\n case 6:\n return isNaN(b) || 1 > b;\n }\n return !1;\n}\nfunction B(a, b, c, d, e, f, g) {\n this.acceptsBooleans = 2 === b || 3 === b || 4 === b;\n this.attributeName = d;\n this.attributeNamespace = e;\n this.mustUseProperty = c;\n this.propertyName = a;\n this.type = b;\n this.sanitizeURL = f;\n this.removeEmptyString = g;\n}\nvar D = {};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function (a) {\n D[a] = new B(a, 0, !1, a, null, !1, !1);\n});\n[[\"acceptCharset\", \"accept-charset\"], [\"className\", \"class\"], [\"htmlFor\", \"for\"], [\"httpEquiv\", \"http-equiv\"]].forEach(function (a) {\n var b = a[0];\n D[b] = new B(b, 1, !1, a[1], null, !1, !1);\n});\n[\"contentEditable\", \"draggable\", \"spellCheck\", \"value\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a.toLowerCase(), null, !1, !1);\n});\n[\"autoReverse\", \"externalResourcesRequired\", \"focusable\", \"preserveAlpha\"].forEach(function (a) {\n D[a] = new B(a, 2, !1, a, null, !1, !1);\n});\n\"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) {\n D[a] = new B(a, 3, !1, a.toLowerCase(), null, !1, !1);\n});\n[\"checked\", \"multiple\", \"muted\", \"selected\"].forEach(function (a) {\n D[a] = new B(a, 3, !0, a, null, !1, !1);\n});\n[\"capture\", \"download\"].forEach(function (a) {\n D[a] = new B(a, 4, !1, a, null, !1, !1);\n});\n[\"cols\", \"rows\", \"size\", \"span\"].forEach(function (a) {\n D[a] = new B(a, 6, !1, a, null, !1, !1);\n});\n[\"rowSpan\", \"start\"].forEach(function (a) {\n D[a] = new B(a, 5, !1, a.toLowerCase(), null, !1, !1);\n});\nvar oa = /[\\-:]([a-z])/g;\nfunction pa(a) {\n return a[1].toUpperCase();\n}\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) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, null, !1, !1);\n});\n\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function (a) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/1999/xlink\", !1, !1);\n});\n[\"xml:base\", \"xml:lang\", \"xml:space\"].forEach(function (a) {\n var b = a.replace(oa, pa);\n D[b] = new B(b, 1, !1, a, \"http://www.w3.org/XML/1998/namespace\", !1, !1);\n});\n[\"tabIndex\", \"crossOrigin\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !1, !1);\n});\nD.xlinkHref = new B(\"xlinkHref\", 1, !1, \"xlink:href\", \"http://www.w3.org/1999/xlink\", !0, !1);\n[\"src\", \"href\", \"action\", \"formAction\"].forEach(function (a) {\n D[a] = new B(a, 1, !1, a.toLowerCase(), null, !0, !0);\n});\nfunction qa(a, b, c, d) {\n var e = D.hasOwnProperty(b) ? D[b] : null;\n var f = null !== e ? 0 === e.type : d ? !1 : !(2 < b.length) || \"o\" !== b[0] && \"O\" !== b[0] || \"n\" !== b[1] && \"N\" !== b[1] ? !1 : !0;\n f || (na(b, c, e, d) && (c = null), d || null === e ? la(b) && (null === c ? a.removeAttribute(b) : a.setAttribute(b, \"\" + c)) : e.mustUseProperty ? a[e.propertyName] = null === c ? 3 === e.type ? !1 : \"\" : c : (b = e.attributeName, d = e.attributeNamespace, null === c ? a.removeAttribute(b) : (e = e.type, c = 3 === e || 4 === e && !0 === c ? \"\" : \"\" + c, d ? a.setAttributeNS(d, b, c) : a.setAttribute(b, c))));\n}\nvar ra = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n sa = 60103,\n ta = 60106,\n ua = 60107,\n wa = 60108,\n xa = 60114,\n ya = 60109,\n za = 60110,\n Aa = 60112,\n Ba = 60113,\n Ca = 60120,\n Da = 60115,\n Ea = 60116,\n Fa = 60121,\n Ga = 60128,\n Ha = 60129,\n Ia = 60130,\n Ja = 60131;\nif (\"function\" === typeof Symbol && Symbol.for) {\n var E = Symbol.for;\n sa = E(\"react.element\");\n ta = E(\"react.portal\");\n ua = E(\"react.fragment\");\n wa = E(\"react.strict_mode\");\n xa = E(\"react.profiler\");\n ya = E(\"react.provider\");\n za = E(\"react.context\");\n Aa = E(\"react.forward_ref\");\n Ba = E(\"react.suspense\");\n Ca = E(\"react.suspense_list\");\n Da = E(\"react.memo\");\n Ea = E(\"react.lazy\");\n Fa = E(\"react.block\");\n E(\"react.scope\");\n Ga = E(\"react.opaque.id\");\n Ha = E(\"react.debug_trace_mode\");\n Ia = E(\"react.offscreen\");\n Ja = E(\"react.legacy_hidden\");\n}\nvar Ka = \"function\" === typeof Symbol && Symbol.iterator;\nfunction La(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = Ka && a[Ka] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\nvar Ma;\nfunction Na(a) {\n if (void 0 === Ma) try {\n throw Error();\n } catch (c) {\n var b = c.stack.trim().match(/\\n( *(at )?)/);\n Ma = b && b[1] || \"\";\n }\n return \"\\n\" + Ma + a;\n}\nvar Oa = !1;\nfunction Pa(a, b) {\n if (!a || Oa) return \"\";\n Oa = !0;\n var c = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n if (b) {\n if (b = function () {\n throw Error();\n }, Object.defineProperty(b.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n }), \"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(b, []);\n } catch (k) {\n var d = k;\n }\n Reflect.construct(a, [], b);\n } else {\n try {\n b.call();\n } catch (k) {\n d = k;\n }\n a.call(b.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (k) {\n d = k;\n }\n a();\n }\n } catch (k) {\n if (k && d && \"string\" === typeof k.stack) {\n for (var e = k.stack.split(\"\\n\"), f = d.stack.split(\"\\n\"), g = e.length - 1, h = f.length - 1; 1 <= g && 0 <= h && e[g] !== f[h];) h--;\n for (; 1 <= g && 0 <= h; g--, h--) if (e[g] !== f[h]) {\n if (1 !== g || 1 !== h) {\n do if (g--, h--, 0 > h || e[g] !== f[h]) return \"\\n\" + e[g].replace(\" at new \", \" at \"); while (1 <= g && 0 <= h);\n }\n break;\n }\n }\n } finally {\n Oa = !1, Error.prepareStackTrace = c;\n }\n return (a = a ? a.displayName || a.name : \"\") ? Na(a) : \"\";\n}\nfunction Qa(a) {\n switch (a.tag) {\n case 5:\n return Na(a.type);\n case 16:\n return Na(\"Lazy\");\n case 13:\n return Na(\"Suspense\");\n case 19:\n return Na(\"SuspenseList\");\n case 0:\n case 2:\n case 15:\n return a = Pa(a.type, !1), a;\n case 11:\n return a = Pa(a.type.render, !1), a;\n case 22:\n return a = Pa(a.type._render, !1), a;\n case 1:\n return a = Pa(a.type, !0), a;\n default:\n return \"\";\n }\n}\nfunction Ra(a) {\n if (null == a) return null;\n if (\"function\" === typeof a) return a.displayName || a.name || null;\n if (\"string\" === typeof a) return a;\n switch (a) {\n case ua:\n return \"Fragment\";\n case ta:\n return \"Portal\";\n case xa:\n return \"Profiler\";\n case wa:\n return \"StrictMode\";\n case Ba:\n return \"Suspense\";\n case Ca:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof a) switch (a.$$typeof) {\n case za:\n return (a.displayName || \"Context\") + \".Consumer\";\n case ya:\n return (a._context.displayName || \"Context\") + \".Provider\";\n case Aa:\n var b = a.render;\n b = b.displayName || b.name || \"\";\n return a.displayName || (\"\" !== b ? \"ForwardRef(\" + b + \")\" : \"ForwardRef\");\n case Da:\n return Ra(a.type);\n case Fa:\n return Ra(a._render);\n case Ea:\n b = a._payload;\n a = a._init;\n try {\n return Ra(a(b));\n } catch (c) {}\n }\n return null;\n}\nfunction Sa(a) {\n switch (typeof a) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n case \"string\":\n case \"undefined\":\n return a;\n default:\n return \"\";\n }\n}\nfunction Ta(a) {\n var b = a.type;\n return (a = a.nodeName) && \"input\" === a.toLowerCase() && (\"checkbox\" === b || \"radio\" === b);\n}\nfunction Ua(a) {\n var b = Ta(a) ? \"checked\" : \"value\",\n c = Object.getOwnPropertyDescriptor(a.constructor.prototype, b),\n d = \"\" + a[b];\n if (!a.hasOwnProperty(b) && \"undefined\" !== typeof c && \"function\" === typeof c.get && \"function\" === typeof c.set) {\n var e = c.get,\n f = c.set;\n Object.defineProperty(a, b, {\n configurable: !0,\n get: function () {\n return e.call(this);\n },\n set: function (a) {\n d = \"\" + a;\n f.call(this, a);\n }\n });\n Object.defineProperty(a, b, {\n enumerable: c.enumerable\n });\n return {\n getValue: function () {\n return d;\n },\n setValue: function (a) {\n d = \"\" + a;\n },\n stopTracking: function () {\n a._valueTracker = null;\n delete a[b];\n }\n };\n }\n}\nfunction Va(a) {\n a._valueTracker || (a._valueTracker = Ua(a));\n}\nfunction Wa(a) {\n if (!a) return !1;\n var b = a._valueTracker;\n if (!b) return !0;\n var c = b.getValue();\n var d = \"\";\n a && (d = Ta(a) ? a.checked ? \"true\" : \"false\" : a.value);\n a = d;\n return a !== c ? (b.setValue(a), !0) : !1;\n}\nfunction Xa(a) {\n a = a || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof a) return null;\n try {\n return a.activeElement || a.body;\n } catch (b) {\n return a.body;\n }\n}\nfunction Ya(a, b) {\n var c = b.checked;\n return m({}, b, {\n defaultChecked: void 0,\n defaultValue: void 0,\n value: void 0,\n checked: null != c ? c : a._wrapperState.initialChecked\n });\n}\nfunction Za(a, b) {\n var c = null == b.defaultValue ? \"\" : b.defaultValue,\n d = null != b.checked ? b.checked : b.defaultChecked;\n c = Sa(null != b.value ? b.value : c);\n a._wrapperState = {\n initialChecked: d,\n initialValue: c,\n controlled: \"checkbox\" === b.type || \"radio\" === b.type ? null != b.checked : null != b.value\n };\n}\nfunction $a(a, b) {\n b = b.checked;\n null != b && qa(a, \"checked\", b, !1);\n}\nfunction ab(a, b) {\n $a(a, b);\n var c = Sa(b.value),\n d = b.type;\n if (null != c) {\n if (\"number\" === d) {\n if (0 === c && \"\" === a.value || a.value != c) a.value = \"\" + c;\n } else a.value !== \"\" + c && (a.value = \"\" + c);\n } else if (\"submit\" === d || \"reset\" === d) {\n a.removeAttribute(\"value\");\n return;\n }\n b.hasOwnProperty(\"value\") ? bb(a, b.type, c) : b.hasOwnProperty(\"defaultValue\") && bb(a, b.type, Sa(b.defaultValue));\n null == b.checked && null != b.defaultChecked && (a.defaultChecked = !!b.defaultChecked);\n}\nfunction cb(a, b, c) {\n if (b.hasOwnProperty(\"value\") || b.hasOwnProperty(\"defaultValue\")) {\n var d = b.type;\n if (!(\"submit\" !== d && \"reset\" !== d || void 0 !== b.value && null !== b.value)) return;\n b = \"\" + a._wrapperState.initialValue;\n c || b === a.value || (a.value = b);\n a.defaultValue = b;\n }\n c = a.name;\n \"\" !== c && (a.name = \"\");\n a.defaultChecked = !!a._wrapperState.initialChecked;\n \"\" !== c && (a.name = c);\n}\nfunction bb(a, b, c) {\n if (\"number\" !== b || Xa(a.ownerDocument) !== a) null == c ? a.defaultValue = \"\" + a._wrapperState.initialValue : a.defaultValue !== \"\" + c && (a.defaultValue = \"\" + c);\n}\nfunction db(a) {\n var b = \"\";\n aa.Children.forEach(a, function (a) {\n null != a && (b += a);\n });\n return b;\n}\nfunction eb(a, b) {\n a = m({\n children: void 0\n }, b);\n if (b = db(b.children)) a.children = b;\n return a;\n}\nfunction fb(a, b, c, d) {\n a = a.options;\n if (b) {\n b = {};\n for (var e = 0; e < c.length; e++) b[\"$\" + c[e]] = !0;\n for (c = 0; c < a.length; c++) e = b.hasOwnProperty(\"$\" + a[c].value), a[c].selected !== e && (a[c].selected = e), e && d && (a[c].defaultSelected = !0);\n } else {\n c = \"\" + Sa(c);\n b = null;\n for (e = 0; e < a.length; e++) {\n if (a[e].value === c) {\n a[e].selected = !0;\n d && (a[e].defaultSelected = !0);\n return;\n }\n null !== b || a[e].disabled || (b = a[e]);\n }\n null !== b && (b.selected = !0);\n }\n}\nfunction gb(a, b) {\n if (null != b.dangerouslySetInnerHTML) throw Error(y(91));\n return m({}, b, {\n value: void 0,\n defaultValue: void 0,\n children: \"\" + a._wrapperState.initialValue\n });\n}\nfunction hb(a, b) {\n var c = b.value;\n if (null == c) {\n c = b.children;\n b = b.defaultValue;\n if (null != c) {\n if (null != b) throw Error(y(92));\n if (Array.isArray(c)) {\n if (!(1 >= c.length)) throw Error(y(93));\n c = c[0];\n }\n b = c;\n }\n null == b && (b = \"\");\n c = b;\n }\n a._wrapperState = {\n initialValue: Sa(c)\n };\n}\nfunction ib(a, b) {\n var c = Sa(b.value),\n d = Sa(b.defaultValue);\n null != c && (c = \"\" + c, c !== a.value && (a.value = c), null == b.defaultValue && a.defaultValue !== c && (a.defaultValue = c));\n null != d && (a.defaultValue = \"\" + d);\n}\nfunction jb(a) {\n var b = a.textContent;\n b === a._wrapperState.initialValue && \"\" !== b && null !== b && (a.value = b);\n}\nvar kb = {\n html: \"http://www.w3.org/1999/xhtml\",\n mathml: \"http://www.w3.org/1998/Math/MathML\",\n svg: \"http://www.w3.org/2000/svg\"\n};\nfunction lb(a) {\n switch (a) {\n case \"svg\":\n return \"http://www.w3.org/2000/svg\";\n case \"math\":\n return \"http://www.w3.org/1998/Math/MathML\";\n default:\n return \"http://www.w3.org/1999/xhtml\";\n }\n}\nfunction mb(a, b) {\n return null == a || \"http://www.w3.org/1999/xhtml\" === a ? lb(b) : \"http://www.w3.org/2000/svg\" === a && \"foreignObject\" === b ? \"http://www.w3.org/1999/xhtml\" : a;\n}\nvar nb,\n ob = function (a) {\n return \"undefined\" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function (b, c, d, e) {\n MSApp.execUnsafeLocalFunction(function () {\n return a(b, c, d, e);\n });\n } : a;\n }(function (a, b) {\n if (a.namespaceURI !== kb.svg || \"innerHTML\" in a) a.innerHTML = b;else {\n nb = nb || document.createElement(\"div\");\n nb.innerHTML = \"<svg>\" + b.valueOf().toString() + \"</svg>\";\n for (b = nb.firstChild; a.firstChild;) a.removeChild(a.firstChild);\n for (; b.firstChild;) a.appendChild(b.firstChild);\n }\n });\nfunction pb(a, b) {\n if (b) {\n var c = a.firstChild;\n if (c && c === a.lastChild && 3 === c.nodeType) {\n c.nodeValue = b;\n return;\n }\n }\n a.textContent = b;\n}\nvar qb = {\n animationIterationCount: !0,\n borderImageOutset: !0,\n borderImageSlice: !0,\n borderImageWidth: !0,\n boxFlex: !0,\n boxFlexGroup: !0,\n boxOrdinalGroup: !0,\n columnCount: !0,\n columns: !0,\n flex: !0,\n flexGrow: !0,\n flexPositive: !0,\n flexShrink: !0,\n flexNegative: !0,\n flexOrder: !0,\n gridArea: !0,\n gridRow: !0,\n gridRowEnd: !0,\n gridRowSpan: !0,\n gridRowStart: !0,\n gridColumn: !0,\n gridColumnEnd: !0,\n gridColumnSpan: !0,\n gridColumnStart: !0,\n fontWeight: !0,\n lineClamp: !0,\n lineHeight: !0,\n opacity: !0,\n order: !0,\n orphans: !0,\n tabSize: !0,\n widows: !0,\n zIndex: !0,\n zoom: !0,\n fillOpacity: !0,\n floodOpacity: !0,\n stopOpacity: !0,\n strokeDasharray: !0,\n strokeDashoffset: !0,\n strokeMiterlimit: !0,\n strokeOpacity: !0,\n strokeWidth: !0\n },\n rb = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\nObject.keys(qb).forEach(function (a) {\n rb.forEach(function (b) {\n b = b + a.charAt(0).toUpperCase() + a.substring(1);\n qb[b] = qb[a];\n });\n});\nfunction sb(a, b, c) {\n return null == b || \"boolean\" === typeof b || \"\" === b ? \"\" : c || \"number\" !== typeof b || 0 === b || qb.hasOwnProperty(a) && qb[a] ? (\"\" + b).trim() : b + \"px\";\n}\nfunction tb(a, b) {\n a = a.style;\n for (var c in b) if (b.hasOwnProperty(c)) {\n var d = 0 === c.indexOf(\"--\"),\n e = sb(c, b[c], d);\n \"float\" === c && (c = \"cssFloat\");\n d ? a.setProperty(c, e) : a[c] = e;\n }\n}\nvar ub = m({\n menuitem: !0\n}, {\n area: !0,\n base: !0,\n br: !0,\n col: !0,\n embed: !0,\n hr: !0,\n img: !0,\n input: !0,\n keygen: !0,\n link: !0,\n meta: !0,\n param: !0,\n source: !0,\n track: !0,\n wbr: !0\n});\nfunction vb(a, b) {\n if (b) {\n if (ub[a] && (null != b.children || null != b.dangerouslySetInnerHTML)) throw Error(y(137, a));\n if (null != b.dangerouslySetInnerHTML) {\n if (null != b.children) throw Error(y(60));\n if (!(\"object\" === typeof b.dangerouslySetInnerHTML && \"__html\" in b.dangerouslySetInnerHTML)) throw Error(y(61));\n }\n if (null != b.style && \"object\" !== typeof b.style) throw Error(y(62));\n }\n}\nfunction wb(a, b) {\n if (-1 === a.indexOf(\"-\")) return \"string\" === typeof b.is;\n switch (a) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nfunction xb(a) {\n a = a.target || a.srcElement || window;\n a.correspondingUseElement && (a = a.correspondingUseElement);\n return 3 === a.nodeType ? a.parentNode : a;\n}\nvar yb = null,\n zb = null,\n Ab = null;\nfunction Bb(a) {\n if (a = Cb(a)) {\n if (\"function\" !== typeof yb) throw Error(y(280));\n var b = a.stateNode;\n b && (b = Db(b), yb(a.stateNode, a.type, b));\n }\n}\nfunction Eb(a) {\n zb ? Ab ? Ab.push(a) : Ab = [a] : zb = a;\n}\nfunction Fb() {\n if (zb) {\n var a = zb,\n b = Ab;\n Ab = zb = null;\n Bb(a);\n if (b) for (a = 0; a < b.length; a++) Bb(b[a]);\n }\n}\nfunction Gb(a, b) {\n return a(b);\n}\nfunction Hb(a, b, c, d, e) {\n return a(b, c, d, e);\n}\nfunction Ib() {}\nvar Jb = Gb,\n Kb = !1,\n Lb = !1;\nfunction Mb() {\n if (null !== zb || null !== Ab) Ib(), Fb();\n}\nfunction Nb(a, b, c) {\n if (Lb) return a(b, c);\n Lb = !0;\n try {\n return Jb(a, b, c);\n } finally {\n Lb = !1, Mb();\n }\n}\nfunction Ob(a, b) {\n var c = a.stateNode;\n if (null === c) return null;\n var d = Db(c);\n if (null === d) return null;\n c = d[b];\n a: switch (b) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (d = !d.disabled) || (a = a.type, d = !(\"button\" === a || \"input\" === a || \"select\" === a || \"textarea\" === a));\n a = !d;\n break a;\n default:\n a = !1;\n }\n if (a) return null;\n if (c && \"function\" !== typeof c) throw Error(y(231, b, typeof c));\n return c;\n}\nvar Pb = !1;\nif (fa) try {\n var Qb = {};\n Object.defineProperty(Qb, \"passive\", {\n get: function () {\n Pb = !0;\n }\n });\n window.addEventListener(\"test\", Qb, Qb);\n window.removeEventListener(\"test\", Qb, Qb);\n} catch (a) {\n Pb = !1;\n}\nfunction Rb(a, b, c, d, e, f, g, h, k) {\n var l = Array.prototype.slice.call(arguments, 3);\n try {\n b.apply(c, l);\n } catch (n) {\n this.onError(n);\n }\n}\nvar Sb = !1,\n Tb = null,\n Ub = !1,\n Vb = null,\n Wb = {\n onError: function (a) {\n Sb = !0;\n Tb = a;\n }\n };\nfunction Xb(a, b, c, d, e, f, g, h, k) {\n Sb = !1;\n Tb = null;\n Rb.apply(Wb, arguments);\n}\nfunction Yb(a, b, c, d, e, f, g, h, k) {\n Xb.apply(this, arguments);\n if (Sb) {\n if (Sb) {\n var l = Tb;\n Sb = !1;\n Tb = null;\n } else throw Error(y(198));\n Ub || (Ub = !0, Vb = l);\n }\n}\nfunction Zb(a) {\n var b = a,\n c = a;\n if (a.alternate) for (; b.return;) b = b.return;else {\n a = b;\n do b = a, 0 !== (b.flags & 1026) && (c = b.return), a = b.return; while (a);\n }\n return 3 === b.tag ? c : null;\n}\nfunction $b(a) {\n if (13 === a.tag) {\n var b = a.memoizedState;\n null === b && (a = a.alternate, null !== a && (b = a.memoizedState));\n if (null !== b) return b.dehydrated;\n }\n return null;\n}\nfunction ac(a) {\n if (Zb(a) !== a) throw Error(y(188));\n}\nfunction bc(a) {\n var b = a.alternate;\n if (!b) {\n b = Zb(a);\n if (null === b) throw Error(y(188));\n return b !== a ? null : a;\n }\n for (var c = a, d = b;;) {\n var e = c.return;\n if (null === e) break;\n var f = e.alternate;\n if (null === f) {\n d = e.return;\n if (null !== d) {\n c = d;\n continue;\n }\n break;\n }\n if (e.child === f.child) {\n for (f = e.child; f;) {\n if (f === c) return ac(e), a;\n if (f === d) return ac(e), b;\n f = f.sibling;\n }\n throw Error(y(188));\n }\n if (c.return !== d.return) c = e, d = f;else {\n for (var g = !1, h = e.child; h;) {\n if (h === c) {\n g = !0;\n c = e;\n d = f;\n break;\n }\n if (h === d) {\n g = !0;\n d = e;\n c = f;\n break;\n }\n h = h.sibling;\n }\n if (!g) {\n for (h = f.child; h;) {\n if (h === c) {\n g = !0;\n c = f;\n d = e;\n break;\n }\n if (h === d) {\n g = !0;\n d = f;\n c = e;\n break;\n }\n h = h.sibling;\n }\n if (!g) throw Error(y(189));\n }\n }\n if (c.alternate !== d) throw Error(y(190));\n }\n if (3 !== c.tag) throw Error(y(188));\n return c.stateNode.current === c ? a : b;\n}\nfunction cc(a) {\n a = bc(a);\n if (!a) return null;\n for (var b = a;;) {\n if (5 === b.tag || 6 === b.tag) return b;\n if (b.child) b.child.return = b, b = b.child;else {\n if (b === a) break;\n for (; !b.sibling;) {\n if (!b.return || b.return === a) return null;\n b = b.return;\n }\n b.sibling.return = b.return;\n b = b.sibling;\n }\n }\n return null;\n}\nfunction dc(a, b) {\n for (var c = a.alternate; null !== b;) {\n if (b === a || b === c) return !0;\n b = b.return;\n }\n return !1;\n}\nvar ec,\n fc,\n gc,\n hc,\n ic = !1,\n jc = [],\n kc = null,\n lc = null,\n mc = null,\n nc = new Map(),\n oc = new Map(),\n pc = [],\n qc = \"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a, b, c, d, e) {\n return {\n blockedOn: a,\n domEventName: b,\n eventSystemFlags: c | 16,\n nativeEvent: e,\n targetContainers: [d]\n };\n}\nfunction sc(a, b) {\n switch (a) {\n case \"focusin\":\n case \"focusout\":\n kc = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n lc = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n mc = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n nc.delete(b.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n oc.delete(b.pointerId);\n }\n}\nfunction tc(a, b, c, d, e, f) {\n if (null === a || a.nativeEvent !== f) return a = rc(b, c, d, e, f), null !== b && (b = Cb(b), null !== b && fc(b)), a;\n a.eventSystemFlags |= d;\n b = a.targetContainers;\n null !== e && -1 === b.indexOf(e) && b.push(e);\n return a;\n}\nfunction uc(a, b, c, d, e) {\n switch (b) {\n case \"focusin\":\n return kc = tc(kc, a, b, c, d, e), !0;\n case \"dragenter\":\n return lc = tc(lc, a, b, c, d, e), !0;\n case \"mouseover\":\n return mc = tc(mc, a, b, c, d, e), !0;\n case \"pointerover\":\n var f = e.pointerId;\n nc.set(f, tc(nc.get(f) || null, a, b, c, d, e));\n return !0;\n case \"gotpointercapture\":\n return f = e.pointerId, oc.set(f, tc(oc.get(f) || null, a, b, c, d, e)), !0;\n }\n return !1;\n}\nfunction vc(a) {\n var b = wc(a.target);\n if (null !== b) {\n var c = Zb(b);\n if (null !== c) if (b = c.tag, 13 === b) {\n if (b = $b(c), null !== b) {\n a.blockedOn = b;\n hc(a.lanePriority, function () {\n r.unstable_runWithPriority(a.priority, function () {\n gc(c);\n });\n });\n return;\n }\n } else if (3 === b && c.stateNode.hydrate) {\n a.blockedOn = 3 === c.tag ? c.stateNode.containerInfo : null;\n return;\n }\n }\n a.blockedOn = null;\n}\nfunction xc(a) {\n if (null !== a.blockedOn) return !1;\n for (var b = a.targetContainers; 0 < b.length;) {\n var c = yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);\n if (null !== c) return b = Cb(c), null !== b && fc(b), a.blockedOn = c, !1;\n b.shift();\n }\n return !0;\n}\nfunction zc(a, b, c) {\n xc(a) && c.delete(b);\n}\nfunction Ac() {\n for (ic = !1; 0 < jc.length;) {\n var a = jc[0];\n if (null !== a.blockedOn) {\n a = Cb(a.blockedOn);\n null !== a && ec(a);\n break;\n }\n for (var b = a.targetContainers; 0 < b.length;) {\n var c = yc(a.domEventName, a.eventSystemFlags, b[0], a.nativeEvent);\n if (null !== c) {\n a.blockedOn = c;\n break;\n }\n b.shift();\n }\n null === a.blockedOn && jc.shift();\n }\n null !== kc && xc(kc) && (kc = null);\n null !== lc && xc(lc) && (lc = null);\n null !== mc && xc(mc) && (mc = null);\n nc.forEach(zc);\n oc.forEach(zc);\n}\nfunction Bc(a, b) {\n a.blockedOn === b && (a.blockedOn = null, ic || (ic = !0, r.unstable_scheduleCallback(r.unstable_NormalPriority, Ac)));\n}\nfunction Cc(a) {\n function b(b) {\n return Bc(b, a);\n }\n if (0 < jc.length) {\n Bc(jc[0], a);\n for (var c = 1; c < jc.length; c++) {\n var d = jc[c];\n d.blockedOn === a && (d.blockedOn = null);\n }\n }\n null !== kc && Bc(kc, a);\n null !== lc && Bc(lc, a);\n null !== mc && Bc(mc, a);\n nc.forEach(b);\n oc.forEach(b);\n for (c = 0; c < pc.length; c++) d = pc[c], d.blockedOn === a && (d.blockedOn = null);\n for (; 0 < pc.length && (c = pc[0], null === c.blockedOn);) vc(c), null === c.blockedOn && pc.shift();\n}\nfunction Dc(a, b) {\n var c = {};\n c[a.toLowerCase()] = b.toLowerCase();\n c[\"Webkit\" + a] = \"webkit\" + b;\n c[\"Moz\" + a] = \"moz\" + b;\n return c;\n}\nvar Ec = {\n animationend: Dc(\"Animation\", \"AnimationEnd\"),\n animationiteration: Dc(\"Animation\", \"AnimationIteration\"),\n animationstart: Dc(\"Animation\", \"AnimationStart\"),\n transitionend: Dc(\"Transition\", \"TransitionEnd\")\n },\n Fc = {},\n Gc = {};\nfa && (Gc = document.createElement(\"div\").style, \"AnimationEvent\" in window || (delete Ec.animationend.animation, delete Ec.animationiteration.animation, delete Ec.animationstart.animation), \"TransitionEvent\" in window || delete Ec.transitionend.transition);\nfunction Hc(a) {\n if (Fc[a]) return Fc[a];\n if (!Ec[a]) return a;\n var b = Ec[a],\n c;\n for (c in b) if (b.hasOwnProperty(c) && c in Gc) return Fc[a] = b[c];\n return a;\n}\nvar Ic = Hc(\"animationend\"),\n Jc = Hc(\"animationiteration\"),\n Kc = Hc(\"animationstart\"),\n Lc = Hc(\"transitionend\"),\n Mc = new Map(),\n Nc = new Map(),\n Oc = [\"abort\", \"abort\", Ic, \"animationEnd\", Jc, \"animationIteration\", Kc, \"animationStart\", \"canplay\", \"canPlay\", \"canplaythrough\", \"canPlayThrough\", \"durationchange\", \"durationChange\", \"emptied\", \"emptied\", \"encrypted\", \"encrypted\", \"ended\", \"ended\", \"error\", \"error\", \"gotpointercapture\", \"gotPointerCapture\", \"load\", \"load\", \"loadeddata\", \"loadedData\", \"loadedmetadata\", \"loadedMetadata\", \"loadstart\", \"loadStart\", \"lostpointercapture\", \"lostPointerCapture\", \"playing\", \"playing\", \"progress\", \"progress\", \"seeking\", \"seeking\", \"stalled\", \"stalled\", \"suspend\", \"suspend\", \"timeupdate\", \"timeUpdate\", Lc, \"transitionEnd\", \"waiting\", \"waiting\"];\nfunction Pc(a, b) {\n for (var c = 0; c < a.length; c += 2) {\n var d = a[c],\n e = a[c + 1];\n e = \"on\" + (e[0].toUpperCase() + e.slice(1));\n Nc.set(d, b);\n Mc.set(d, e);\n da(e, [d]);\n }\n}\nvar Qc = r.unstable_now;\nQc();\nvar F = 8;\nfunction Rc(a) {\n if (0 !== (1 & a)) return F = 15, 1;\n if (0 !== (2 & a)) return F = 14, 2;\n if (0 !== (4 & a)) return F = 13, 4;\n var b = 24 & a;\n if (0 !== b) return F = 12, b;\n if (0 !== (a & 32)) return F = 11, 32;\n b = 192 & a;\n if (0 !== b) return F = 10, b;\n if (0 !== (a & 256)) return F = 9, 256;\n b = 3584 & a;\n if (0 !== b) return F = 8, b;\n if (0 !== (a & 4096)) return F = 7, 4096;\n b = 4186112 & a;\n if (0 !== b) return F = 6, b;\n b = 62914560 & a;\n if (0 !== b) return F = 5, b;\n if (a & 67108864) return F = 4, 67108864;\n if (0 !== (a & 134217728)) return F = 3, 134217728;\n b = 805306368 & a;\n if (0 !== b) return F = 2, b;\n if (0 !== (1073741824 & a)) return F = 1, 1073741824;\n F = 8;\n return a;\n}\nfunction Sc(a) {\n switch (a) {\n case 99:\n return 15;\n case 98:\n return 10;\n case 97:\n case 96:\n return 8;\n case 95:\n return 2;\n default:\n return 0;\n }\n}\nfunction Tc(a) {\n switch (a) {\n case 15:\n case 14:\n return 99;\n case 13:\n case 12:\n case 11:\n case 10:\n return 98;\n case 9:\n case 8:\n case 7:\n case 6:\n case 4:\n case 5:\n return 97;\n case 3:\n case 2:\n case 1:\n return 95;\n case 0:\n return 90;\n default:\n throw Error(y(358, a));\n }\n}\nfunction Uc(a, b) {\n var c = a.pendingLanes;\n if (0 === c) return F = 0;\n var d = 0,\n e = 0,\n f = a.expiredLanes,\n g = a.suspendedLanes,\n h = a.pingedLanes;\n if (0 !== f) d = f, e = F = 15;else if (f = c & 134217727, 0 !== f) {\n var k = f & ~g;\n 0 !== k ? (d = Rc(k), e = F) : (h &= f, 0 !== h && (d = Rc(h), e = F));\n } else f = c & ~g, 0 !== f ? (d = Rc(f), e = F) : 0 !== h && (d = Rc(h), e = F);\n if (0 === d) return 0;\n d = 31 - Vc(d);\n d = c & ((0 > d ? 0 : 1 << d) << 1) - 1;\n if (0 !== b && b !== d && 0 === (b & g)) {\n Rc(b);\n if (e <= F) return b;\n F = e;\n }\n b = a.entangledLanes;\n if (0 !== b) for (a = a.entanglements, b &= d; 0 < b;) c = 31 - Vc(b), e = 1 << c, d |= a[c], b &= ~e;\n return d;\n}\nfunction Wc(a) {\n a = a.pendingLanes & -1073741825;\n return 0 !== a ? a : a & 1073741824 ? 1073741824 : 0;\n}\nfunction Xc(a, b) {\n switch (a) {\n case 15:\n return 1;\n case 14:\n return 2;\n case 12:\n return a = Yc(24 & ~b), 0 === a ? Xc(10, b) : a;\n case 10:\n return a = Yc(192 & ~b), 0 === a ? Xc(8, b) : a;\n case 8:\n return a = Yc(3584 & ~b), 0 === a && (a = Yc(4186112 & ~b), 0 === a && (a = 512)), a;\n case 2:\n return b = Yc(805306368 & ~b), 0 === b && (b = 268435456), b;\n }\n throw Error(y(358, a));\n}\nfunction Yc(a) {\n return a & -a;\n}\nfunction Zc(a) {\n for (var b = [], c = 0; 31 > c; c++) b.push(a);\n return b;\n}\nfunction $c(a, b, c) {\n a.pendingLanes |= b;\n var d = b - 1;\n a.suspendedLanes &= d;\n a.pingedLanes &= d;\n a = a.eventTimes;\n b = 31 - Vc(b);\n a[b] = c;\n}\nvar Vc = Math.clz32 ? Math.clz32 : ad,\n bd = Math.log,\n cd = Math.LN2;\nfunction ad(a) {\n return 0 === a ? 32 : 31 - (bd(a) / cd | 0) | 0;\n}\nvar dd = r.unstable_UserBlockingPriority,\n ed = r.unstable_runWithPriority,\n fd = !0;\nfunction gd(a, b, c, d) {\n Kb || Ib();\n var e = hd,\n f = Kb;\n Kb = !0;\n try {\n Hb(e, a, b, c, d);\n } finally {\n (Kb = f) || Mb();\n }\n}\nfunction id(a, b, c, d) {\n ed(dd, hd.bind(null, a, b, c, d));\n}\nfunction hd(a, b, c, d) {\n if (fd) {\n var e;\n if ((e = 0 === (b & 4)) && 0 < jc.length && -1 < qc.indexOf(a)) a = rc(null, a, b, c, d), jc.push(a);else {\n var f = yc(a, b, c, d);\n if (null === f) e && sc(a, d);else {\n if (e) {\n if (-1 < qc.indexOf(a)) {\n a = rc(f, a, b, c, d);\n jc.push(a);\n return;\n }\n if (uc(f, a, b, c, d)) return;\n sc(a, d);\n }\n jd(a, b, d, null, c);\n }\n }\n }\n}\nfunction yc(a, b, c, d) {\n var e = xb(d);\n e = wc(e);\n if (null !== e) {\n var f = Zb(e);\n if (null === f) e = null;else {\n var g = f.tag;\n if (13 === g) {\n e = $b(f);\n if (null !== e) return e;\n e = null;\n } else if (3 === g) {\n if (f.stateNode.hydrate) return 3 === f.tag ? f.stateNode.containerInfo : null;\n e = null;\n } else f !== e && (e = null);\n }\n }\n jd(a, b, d, e, c);\n return null;\n}\nvar kd = null,\n ld = null,\n md = null;\nfunction nd() {\n if (md) return md;\n var a,\n b = ld,\n c = b.length,\n d,\n e = \"value\" in kd ? kd.value : kd.textContent,\n f = e.length;\n for (a = 0; a < c && b[a] === e[a]; a++);\n var g = c - a;\n for (d = 1; d <= g && b[c - d] === e[f - d]; d++);\n return md = e.slice(a, 1 < d ? 1 - d : void 0);\n}\nfunction od(a) {\n var b = a.keyCode;\n \"charCode\" in a ? (a = a.charCode, 0 === a && 13 === b && (a = 13)) : a = b;\n 10 === a && (a = 13);\n return 32 <= a || 13 === a ? a : 0;\n}\nfunction pd() {\n return !0;\n}\nfunction qd() {\n return !1;\n}\nfunction rd(a) {\n function b(b, d, e, f, g) {\n this._reactName = b;\n this._targetInst = e;\n this.type = d;\n this.nativeEvent = f;\n this.target = g;\n this.currentTarget = null;\n for (var c in a) a.hasOwnProperty(c) && (b = a[c], this[c] = b ? b(f) : f[c]);\n this.isDefaultPrevented = (null != f.defaultPrevented ? f.defaultPrevented : !1 === f.returnValue) ? pd : qd;\n this.isPropagationStopped = qd;\n return this;\n }\n m(b.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var a = this.nativeEvent;\n a && (a.preventDefault ? a.preventDefault() : \"unknown\" !== typeof a.returnValue && (a.returnValue = !1), this.isDefaultPrevented = pd);\n },\n stopPropagation: function () {\n var a = this.nativeEvent;\n a && (a.stopPropagation ? a.stopPropagation() : \"unknown\" !== typeof a.cancelBubble && (a.cancelBubble = !0), this.isPropagationStopped = pd);\n },\n persist: function () {},\n isPersistent: pd\n });\n return b;\n}\nvar sd = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (a) {\n return a.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n td = rd(sd),\n ud = m({}, sd, {\n view: 0,\n detail: 0\n }),\n vd = rd(ud),\n wd,\n xd,\n yd,\n Ad = m({}, ud, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: zd,\n button: 0,\n buttons: 0,\n relatedTarget: function (a) {\n return void 0 === a.relatedTarget ? a.fromElement === a.srcElement ? a.toElement : a.fromElement : a.relatedTarget;\n },\n movementX: function (a) {\n if (\"movementX\" in a) return a.movementX;\n a !== yd && (yd && \"mousemove\" === a.type ? (wd = a.screenX - yd.screenX, xd = a.screenY - yd.screenY) : xd = wd = 0, yd = a);\n return wd;\n },\n movementY: function (a) {\n return \"movementY\" in a ? a.movementY : xd;\n }\n }),\n Bd = rd(Ad),\n Cd = m({}, Ad, {\n dataTransfer: 0\n }),\n Dd = rd(Cd),\n Ed = m({}, ud, {\n relatedTarget: 0\n }),\n Fd = rd(Ed),\n Gd = m({}, sd, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n Hd = rd(Gd),\n Id = m({}, sd, {\n clipboardData: function (a) {\n return \"clipboardData\" in a ? a.clipboardData : window.clipboardData;\n }\n }),\n Jd = rd(Id),\n Kd = m({}, sd, {\n data: 0\n }),\n Ld = rd(Kd),\n Md = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n Nd = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n Od = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction Pd(a) {\n var b = this.nativeEvent;\n return b.getModifierState ? b.getModifierState(a) : (a = Od[a]) ? !!b[a] : !1;\n}\nfunction zd() {\n return Pd;\n}\nvar Qd = m({}, ud, {\n key: function (a) {\n if (a.key) {\n var b = Md[a.key] || a.key;\n if (\"Unidentified\" !== b) return b;\n }\n return \"keypress\" === a.type ? (a = od(a), 13 === a ? \"Enter\" : String.fromCharCode(a)) : \"keydown\" === a.type || \"keyup\" === a.type ? Nd[a.keyCode] || \"Unidentified\" : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: zd,\n charCode: function (a) {\n return \"keypress\" === a.type ? od(a) : 0;\n },\n keyCode: function (a) {\n return \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n },\n which: function (a) {\n return \"keypress\" === a.type ? od(a) : \"keydown\" === a.type || \"keyup\" === a.type ? a.keyCode : 0;\n }\n }),\n Rd = rd(Qd),\n Sd = m({}, Ad, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n Td = rd(Sd),\n Ud = m({}, ud, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: zd\n }),\n Vd = rd(Ud),\n Wd = m({}, sd, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n Xd = rd(Wd),\n Yd = m({}, Ad, {\n deltaX: function (a) {\n return \"deltaX\" in a ? a.deltaX : \"wheelDeltaX\" in a ? -a.wheelDeltaX : 0;\n },\n deltaY: function (a) {\n return \"deltaY\" in a ? a.deltaY : \"wheelDeltaY\" in a ? -a.wheelDeltaY : \"wheelDelta\" in a ? -a.wheelDelta : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n Zd = rd(Yd),\n $d = [9, 13, 27, 32],\n ae = fa && \"CompositionEvent\" in window,\n be = null;\nfa && \"documentMode\" in document && (be = document.documentMode);\nvar ce = fa && \"TextEvent\" in window && !be,\n de = fa && (!ae || be && 8 < be && 11 >= be),\n ee = String.fromCharCode(32),\n fe = !1;\nfunction ge(a, b) {\n switch (a) {\n case \"keyup\":\n return -1 !== $d.indexOf(b.keyCode);\n case \"keydown\":\n return 229 !== b.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction he(a) {\n a = a.detail;\n return \"object\" === typeof a && \"data\" in a ? a.data : null;\n}\nvar ie = !1;\nfunction je(a, b) {\n switch (a) {\n case \"compositionend\":\n return he(b);\n case \"keypress\":\n if (32 !== b.which) return null;\n fe = !0;\n return ee;\n case \"textInput\":\n return a = b.data, a === ee && fe ? null : a;\n default:\n return null;\n }\n}\nfunction ke(a, b) {\n if (ie) return \"compositionend\" === a || !ae && ge(a, b) ? (a = nd(), md = ld = kd = null, ie = !1, a) : null;\n switch (a) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (!(b.ctrlKey || b.altKey || b.metaKey) || b.ctrlKey && b.altKey) {\n if (b.char && 1 < b.char.length) return b.char;\n if (b.which) return String.fromCharCode(b.which);\n }\n return null;\n case \"compositionend\":\n return de && \"ko\" !== b.locale ? null : b.data;\n default:\n return null;\n }\n}\nvar le = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction me(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return \"input\" === b ? !!le[a.type] : \"textarea\" === b ? !0 : !1;\n}\nfunction ne(a, b, c, d) {\n Eb(d);\n b = oe(b, \"onChange\");\n 0 < b.length && (c = new td(\"onChange\", \"change\", null, c, d), a.push({\n event: c,\n listeners: b\n }));\n}\nvar pe = null,\n qe = null;\nfunction re(a) {\n se(a, 0);\n}\nfunction te(a) {\n var b = ue(a);\n if (Wa(b)) return a;\n}\nfunction ve(a, b) {\n if (\"change\" === a) return b;\n}\nvar we = !1;\nif (fa) {\n var xe;\n if (fa) {\n var ye = (\"oninput\" in document);\n if (!ye) {\n var ze = document.createElement(\"div\");\n ze.setAttribute(\"oninput\", \"return;\");\n ye = \"function\" === typeof ze.oninput;\n }\n xe = ye;\n } else xe = !1;\n we = xe && (!document.documentMode || 9 < document.documentMode);\n}\nfunction Ae() {\n pe && (pe.detachEvent(\"onpropertychange\", Be), qe = pe = null);\n}\nfunction Be(a) {\n if (\"value\" === a.propertyName && te(qe)) {\n var b = [];\n ne(b, qe, a, xb(a));\n a = re;\n if (Kb) a(b);else {\n Kb = !0;\n try {\n Gb(a, b);\n } finally {\n Kb = !1, Mb();\n }\n }\n }\n}\nfunction Ce(a, b, c) {\n \"focusin\" === a ? (Ae(), pe = b, qe = c, pe.attachEvent(\"onpropertychange\", Be)) : \"focusout\" === a && Ae();\n}\nfunction De(a) {\n if (\"selectionchange\" === a || \"keyup\" === a || \"keydown\" === a) return te(qe);\n}\nfunction Ee(a, b) {\n if (\"click\" === a) return te(b);\n}\nfunction Fe(a, b) {\n if (\"input\" === a || \"change\" === a) return te(b);\n}\nfunction Ge(a, b) {\n return a === b && (0 !== a || 1 / a === 1 / b) || a !== a && b !== b;\n}\nvar He = \"function\" === typeof Object.is ? Object.is : Ge,\n Ie = Object.prototype.hasOwnProperty;\nfunction Je(a, b) {\n if (He(a, b)) return !0;\n if (\"object\" !== typeof a || null === a || \"object\" !== typeof b || null === b) return !1;\n var c = Object.keys(a),\n d = Object.keys(b);\n if (c.length !== d.length) return !1;\n for (d = 0; d < c.length; d++) if (!Ie.call(b, c[d]) || !He(a[c[d]], b[c[d]])) return !1;\n return !0;\n}\nfunction Ke(a) {\n for (; a && a.firstChild;) a = a.firstChild;\n return a;\n}\nfunction Le(a, b) {\n var c = Ke(a);\n a = 0;\n for (var d; c;) {\n if (3 === c.nodeType) {\n d = a + c.textContent.length;\n if (a <= b && d >= b) return {\n node: c,\n offset: b - a\n };\n a = d;\n }\n a: {\n for (; c;) {\n if (c.nextSibling) {\n c = c.nextSibling;\n break a;\n }\n c = c.parentNode;\n }\n c = void 0;\n }\n c = Ke(c);\n }\n}\nfunction Me(a, b) {\n return a && b ? a === b ? !0 : a && 3 === a.nodeType ? !1 : b && 3 === b.nodeType ? Me(a, b.parentNode) : \"contains\" in a ? a.contains(b) : a.compareDocumentPosition ? !!(a.compareDocumentPosition(b) & 16) : !1 : !1;\n}\nfunction Ne() {\n for (var a = window, b = Xa(); b instanceof a.HTMLIFrameElement;) {\n try {\n var c = \"string\" === typeof b.contentWindow.location.href;\n } catch (d) {\n c = !1;\n }\n if (c) a = b.contentWindow;else break;\n b = Xa(a.document);\n }\n return b;\n}\nfunction Oe(a) {\n var b = a && a.nodeName && a.nodeName.toLowerCase();\n return b && (\"input\" === b && (\"text\" === a.type || \"search\" === a.type || \"tel\" === a.type || \"url\" === a.type || \"password\" === a.type) || \"textarea\" === b || \"true\" === a.contentEditable);\n}\nvar Pe = fa && \"documentMode\" in document && 11 >= document.documentMode,\n Qe = null,\n Re = null,\n Se = null,\n Te = !1;\nfunction Ue(a, b, c) {\n var d = c.window === c ? c.document : 9 === c.nodeType ? c : c.ownerDocument;\n Te || null == Qe || Qe !== Xa(d) || (d = Qe, \"selectionStart\" in d && Oe(d) ? d = {\n start: d.selectionStart,\n end: d.selectionEnd\n } : (d = (d.ownerDocument && d.ownerDocument.defaultView || window).getSelection(), d = {\n anchorNode: d.anchorNode,\n anchorOffset: d.anchorOffset,\n focusNode: d.focusNode,\n focusOffset: d.focusOffset\n }), Se && Je(Se, d) || (Se = d, d = oe(Re, \"onSelect\"), 0 < d.length && (b = new td(\"onSelect\", \"select\", null, b, c), a.push({\n event: b,\n listeners: d\n }), b.target = Qe)));\n}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"), 0);\nPc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"), 1);\nPc(Oc, 2);\nfor (var Ve = \"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"), We = 0; We < Ve.length; We++) Nc.set(Ve[We], 0);\nea(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nea(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nea(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nea(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nda(\"onChange\", \"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));\nda(\"onSelect\", \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));\nda(\"onBeforeInput\", [\"compositionend\", \"keypress\", \"textInput\", \"paste\"]);\nda(\"onCompositionEnd\", \"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\", \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionUpdate\", \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));\nvar Xe = \"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),\n Ye = new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a, b, c) {\n var d = a.type || \"unknown-event\";\n a.currentTarget = c;\n Yb(d, b, void 0, a);\n a.currentTarget = null;\n}\nfunction se(a, b) {\n b = 0 !== (b & 4);\n for (var c = 0; c < a.length; c++) {\n var d = a[c],\n e = d.event;\n d = d.listeners;\n a: {\n var f = void 0;\n if (b) for (var g = d.length - 1; 0 <= g; g--) {\n var h = d[g],\n k = h.instance,\n l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n Ze(e, h, l);\n f = k;\n } else for (g = 0; g < d.length; g++) {\n h = d[g];\n k = h.instance;\n l = h.currentTarget;\n h = h.listener;\n if (k !== f && e.isPropagationStopped()) break a;\n Ze(e, h, l);\n f = k;\n }\n }\n }\n if (Ub) throw a = Vb, Ub = !1, Vb = null, a;\n}\nfunction G(a, b) {\n var c = $e(b),\n d = a + \"__bubble\";\n c.has(d) || (af(b, a, 2, !1), c.add(d));\n}\nvar bf = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction cf(a) {\n a[bf] || (a[bf] = !0, ba.forEach(function (b) {\n Ye.has(b) || df(b, !1, a, null);\n df(b, !0, a, null);\n }));\n}\nfunction df(a, b, c, d) {\n var e = 4 < arguments.length && void 0 !== arguments[4] ? arguments[4] : 0,\n f = c;\n \"selectionchange\" === a && 9 !== c.nodeType && (f = c.ownerDocument);\n if (null !== d && !b && Ye.has(a)) {\n if (\"scroll\" !== a) return;\n e |= 2;\n f = d;\n }\n var g = $e(f),\n h = a + \"__\" + (b ? \"capture\" : \"bubble\");\n g.has(h) || (b && (e |= 4), af(f, a, e, b), g.add(h));\n}\nfunction af(a, b, c, d) {\n var e = Nc.get(b);\n switch (void 0 === e ? 2 : e) {\n case 0:\n e = gd;\n break;\n case 1:\n e = id;\n break;\n default:\n e = hd;\n }\n c = e.bind(null, b, c, a);\n e = void 0;\n !Pb || \"touchstart\" !== b && \"touchmove\" !== b && \"wheel\" !== b || (e = !0);\n d ? void 0 !== e ? a.addEventListener(b, c, {\n capture: !0,\n passive: e\n }) : a.addEventListener(b, c, !0) : void 0 !== e ? a.addEventListener(b, c, {\n passive: e\n }) : a.addEventListener(b, c, !1);\n}\nfunction jd(a, b, c, d, e) {\n var f = d;\n if (0 === (b & 1) && 0 === (b & 2) && null !== d) a: for (;;) {\n if (null === d) return;\n var g = d.tag;\n if (3 === g || 4 === g) {\n var h = d.stateNode.containerInfo;\n if (h === e || 8 === h.nodeType && h.parentNode === e) break;\n if (4 === g) for (g = d.return; null !== g;) {\n var k = g.tag;\n if (3 === k || 4 === k) if (k = g.stateNode.containerInfo, k === e || 8 === k.nodeType && k.parentNode === e) return;\n g = g.return;\n }\n for (; null !== h;) {\n g = wc(h);\n if (null === g) return;\n k = g.tag;\n if (5 === k || 6 === k) {\n d = f = g;\n continue a;\n }\n h = h.parentNode;\n }\n }\n d = d.return;\n }\n Nb(function () {\n var d = f,\n e = xb(c),\n g = [];\n a: {\n var h = Mc.get(a);\n if (void 0 !== h) {\n var k = td,\n x = a;\n switch (a) {\n case \"keypress\":\n if (0 === od(c)) break a;\n case \"keydown\":\n case \"keyup\":\n k = Rd;\n break;\n case \"focusin\":\n x = \"focus\";\n k = Fd;\n break;\n case \"focusout\":\n x = \"blur\";\n k = Fd;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n k = Fd;\n break;\n case \"click\":\n if (2 === c.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n k = Bd;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n k = Dd;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n k = Vd;\n break;\n case Ic:\n case Jc:\n case Kc:\n k = Hd;\n break;\n case Lc:\n k = Xd;\n break;\n case \"scroll\":\n k = vd;\n break;\n case \"wheel\":\n k = Zd;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n k = Jd;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n k = Td;\n }\n var w = 0 !== (b & 4),\n z = !w && \"scroll\" === a,\n u = w ? null !== h ? h + \"Capture\" : null : h;\n w = [];\n for (var t = d, q; null !== t;) {\n q = t;\n var v = q.stateNode;\n 5 === q.tag && null !== v && (q = v, null !== u && (v = Ob(t, u), null != v && w.push(ef(t, v, q))));\n if (z) break;\n t = t.return;\n }\n 0 < w.length && (h = new k(h, x, null, c, e), g.push({\n event: h,\n listeners: w\n }));\n }\n }\n if (0 === (b & 7)) {\n a: {\n h = \"mouseover\" === a || \"pointerover\" === a;\n k = \"mouseout\" === a || \"pointerout\" === a;\n if (h && 0 === (b & 16) && (x = c.relatedTarget || c.fromElement) && (wc(x) || x[ff])) break a;\n if (k || h) {\n h = e.window === e ? e : (h = e.ownerDocument) ? h.defaultView || h.parentWindow : window;\n if (k) {\n if (x = c.relatedTarget || c.toElement, k = d, x = x ? wc(x) : null, null !== x && (z = Zb(x), x !== z || 5 !== x.tag && 6 !== x.tag)) x = null;\n } else k = null, x = d;\n if (k !== x) {\n w = Bd;\n v = \"onMouseLeave\";\n u = \"onMouseEnter\";\n t = \"mouse\";\n if (\"pointerout\" === a || \"pointerover\" === a) w = Td, v = \"onPointerLeave\", u = \"onPointerEnter\", t = \"pointer\";\n z = null == k ? h : ue(k);\n q = null == x ? h : ue(x);\n h = new w(v, t + \"leave\", k, c, e);\n h.target = z;\n h.relatedTarget = q;\n v = null;\n wc(e) === d && (w = new w(u, t + \"enter\", x, c, e), w.target = q, w.relatedTarget = z, v = w);\n z = v;\n if (k && x) b: {\n w = k;\n u = x;\n t = 0;\n for (q = w; q; q = gf(q)) t++;\n q = 0;\n for (v = u; v; v = gf(v)) q++;\n for (; 0 < t - q;) w = gf(w), t--;\n for (; 0 < q - t;) u = gf(u), q--;\n for (; t--;) {\n if (w === u || null !== u && w === u.alternate) break b;\n w = gf(w);\n u = gf(u);\n }\n w = null;\n } else w = null;\n null !== k && hf(g, h, k, w, !1);\n null !== x && null !== z && hf(g, z, x, w, !0);\n }\n }\n }\n a: {\n h = d ? ue(d) : window;\n k = h.nodeName && h.nodeName.toLowerCase();\n if (\"select\" === k || \"input\" === k && \"file\" === h.type) var J = ve;else if (me(h)) {\n if (we) J = Fe;else {\n J = De;\n var K = Ce;\n }\n } else (k = h.nodeName) && \"input\" === k.toLowerCase() && (\"checkbox\" === h.type || \"radio\" === h.type) && (J = Ee);\n if (J && (J = J(a, d))) {\n ne(g, J, c, e);\n break a;\n }\n K && K(a, h, d);\n \"focusout\" === a && (K = h._wrapperState) && K.controlled && \"number\" === h.type && bb(h, \"number\", h.value);\n }\n K = d ? ue(d) : window;\n switch (a) {\n case \"focusin\":\n if (me(K) || \"true\" === K.contentEditable) Qe = K, Re = d, Se = null;\n break;\n case \"focusout\":\n Se = Re = Qe = null;\n break;\n case \"mousedown\":\n Te = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n Te = !1;\n Ue(g, c, e);\n break;\n case \"selectionchange\":\n if (Pe) break;\n case \"keydown\":\n case \"keyup\":\n Ue(g, c, e);\n }\n var Q;\n if (ae) b: {\n switch (a) {\n case \"compositionstart\":\n var L = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n L = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n L = \"onCompositionUpdate\";\n break b;\n }\n L = void 0;\n } else ie ? ge(a, c) && (L = \"onCompositionEnd\") : \"keydown\" === a && 229 === c.keyCode && (L = \"onCompositionStart\");\n L && (de && \"ko\" !== c.locale && (ie || \"onCompositionStart\" !== L ? \"onCompositionEnd\" === L && ie && (Q = nd()) : (kd = e, ld = \"value\" in kd ? kd.value : kd.textContent, ie = !0)), K = oe(d, L), 0 < K.length && (L = new Ld(L, a, null, c, e), g.push({\n event: L,\n listeners: K\n }), Q ? L.data = Q : (Q = he(c), null !== Q && (L.data = Q))));\n if (Q = ce ? je(a, c) : ke(a, c)) d = oe(d, \"onBeforeInput\"), 0 < d.length && (e = new Ld(\"onBeforeInput\", \"beforeinput\", null, c, e), g.push({\n event: e,\n listeners: d\n }), e.data = Q);\n }\n se(g, b);\n });\n}\nfunction ef(a, b, c) {\n return {\n instance: a,\n listener: b,\n currentTarget: c\n };\n}\nfunction oe(a, b) {\n for (var c = b + \"Capture\", d = []; null !== a;) {\n var e = a,\n f = e.stateNode;\n 5 === e.tag && null !== f && (e = f, f = Ob(a, c), null != f && d.unshift(ef(a, f, e)), f = Ob(a, b), null != f && d.push(ef(a, f, e)));\n a = a.return;\n }\n return d;\n}\nfunction gf(a) {\n if (null === a) return null;\n do a = a.return; while (a && 5 !== a.tag);\n return a ? a : null;\n}\nfunction hf(a, b, c, d, e) {\n for (var f = b._reactName, g = []; null !== c && c !== d;) {\n var h = c,\n k = h.alternate,\n l = h.stateNode;\n if (null !== k && k === d) break;\n 5 === h.tag && null !== l && (h = l, e ? (k = Ob(c, f), null != k && g.unshift(ef(c, k, h))) : e || (k = Ob(c, f), null != k && g.push(ef(c, k, h))));\n c = c.return;\n }\n 0 !== g.length && a.push({\n event: b,\n listeners: g\n });\n}\nfunction jf() {}\nvar kf = null,\n lf = null;\nfunction mf(a, b) {\n switch (a) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n return !!b.autoFocus;\n }\n return !1;\n}\nfunction nf(a, b) {\n return \"textarea\" === a || \"option\" === a || \"noscript\" === a || \"string\" === typeof b.children || \"number\" === typeof b.children || \"object\" === typeof b.dangerouslySetInnerHTML && null !== b.dangerouslySetInnerHTML && null != b.dangerouslySetInnerHTML.__html;\n}\nvar of = \"function\" === typeof setTimeout ? setTimeout : void 0,\n pf = \"function\" === typeof clearTimeout ? clearTimeout : void 0;\nfunction qf(a) {\n 1 === a.nodeType ? a.textContent = \"\" : 9 === a.nodeType && (a = a.body, null != a && (a.textContent = \"\"));\n}\nfunction rf(a) {\n for (; null != a; a = a.nextSibling) {\n var b = a.nodeType;\n if (1 === b || 3 === b) break;\n }\n return a;\n}\nfunction sf(a) {\n a = a.previousSibling;\n for (var b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n if (\"$\" === c || \"$!\" === c || \"$?\" === c) {\n if (0 === b) return a;\n b--;\n } else \"/$\" === c && b++;\n }\n a = a.previousSibling;\n }\n return null;\n}\nvar tf = 0;\nfunction uf(a) {\n return {\n $$typeof: Ga,\n toString: a,\n valueOf: a\n };\n}\nvar vf = Math.random().toString(36).slice(2),\n wf = \"__reactFiber$\" + vf,\n xf = \"__reactProps$\" + vf,\n ff = \"__reactContainer$\" + vf,\n yf = \"__reactEvents$\" + vf;\nfunction wc(a) {\n var b = a[wf];\n if (b) return b;\n for (var c = a.parentNode; c;) {\n if (b = c[ff] || c[wf]) {\n c = b.alternate;\n if (null !== b.child || null !== c && null !== c.child) for (a = sf(a); null !== a;) {\n if (c = a[wf]) return c;\n a = sf(a);\n }\n return b;\n }\n a = c;\n c = a.parentNode;\n }\n return null;\n}\nfunction Cb(a) {\n a = a[wf] || a[ff];\n return !a || 5 !== a.tag && 6 !== a.tag && 13 !== a.tag && 3 !== a.tag ? null : a;\n}\nfunction ue(a) {\n if (5 === a.tag || 6 === a.tag) return a.stateNode;\n throw Error(y(33));\n}\nfunction Db(a) {\n return a[xf] || null;\n}\nfunction $e(a) {\n var b = a[yf];\n void 0 === b && (b = a[yf] = new Set());\n return b;\n}\nvar zf = [],\n Af = -1;\nfunction Bf(a) {\n return {\n current: a\n };\n}\nfunction H(a) {\n 0 > Af || (a.current = zf[Af], zf[Af] = null, Af--);\n}\nfunction I(a, b) {\n Af++;\n zf[Af] = a.current;\n a.current = b;\n}\nvar Cf = {},\n M = Bf(Cf),\n N = Bf(!1),\n Df = Cf;\nfunction Ef(a, b) {\n var c = a.type.contextTypes;\n if (!c) return Cf;\n var d = a.stateNode;\n if (d && d.__reactInternalMemoizedUnmaskedChildContext === b) return d.__reactInternalMemoizedMaskedChildContext;\n var e = {},\n f;\n for (f in c) e[f] = b[f];\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = b, a.__reactInternalMemoizedMaskedChildContext = e);\n return e;\n}\nfunction Ff(a) {\n a = a.childContextTypes;\n return null !== a && void 0 !== a;\n}\nfunction Gf() {\n H(N);\n H(M);\n}\nfunction Hf(a, b, c) {\n if (M.current !== Cf) throw Error(y(168));\n I(M, b);\n I(N, c);\n}\nfunction If(a, b, c) {\n var d = a.stateNode;\n a = b.childContextTypes;\n if (\"function\" !== typeof d.getChildContext) return c;\n d = d.getChildContext();\n for (var e in d) if (!(e in a)) throw Error(y(108, Ra(b) || \"Unknown\", e));\n return m({}, c, d);\n}\nfunction Jf(a) {\n a = (a = a.stateNode) && a.__reactInternalMemoizedMergedChildContext || Cf;\n Df = M.current;\n I(M, a);\n I(N, N.current);\n return !0;\n}\nfunction Kf(a, b, c) {\n var d = a.stateNode;\n if (!d) throw Error(y(169));\n c ? (a = If(a, b, Df), d.__reactInternalMemoizedMergedChildContext = a, H(N), H(M), I(M, a)) : H(N);\n I(N, c);\n}\nvar Lf = null,\n Mf = null,\n Nf = r.unstable_runWithPriority,\n Of = r.unstable_scheduleCallback,\n Pf = r.unstable_cancelCallback,\n Qf = r.unstable_shouldYield,\n Rf = r.unstable_requestPaint,\n Sf = r.unstable_now,\n Tf = r.unstable_getCurrentPriorityLevel,\n Uf = r.unstable_ImmediatePriority,\n Vf = r.unstable_UserBlockingPriority,\n Wf = r.unstable_NormalPriority,\n Xf = r.unstable_LowPriority,\n Yf = r.unstable_IdlePriority,\n Zf = {},\n $f = void 0 !== Rf ? Rf : function () {},\n ag = null,\n bg = null,\n cg = !1,\n dg = Sf(),\n O = 1E4 > dg ? Sf : function () {\n return Sf() - dg;\n };\nfunction eg() {\n switch (Tf()) {\n case Uf:\n return 99;\n case Vf:\n return 98;\n case Wf:\n return 97;\n case Xf:\n return 96;\n case Yf:\n return 95;\n default:\n throw Error(y(332));\n }\n}\nfunction fg(a) {\n switch (a) {\n case 99:\n return Uf;\n case 98:\n return Vf;\n case 97:\n return Wf;\n case 96:\n return Xf;\n case 95:\n return Yf;\n default:\n throw Error(y(332));\n }\n}\nfunction gg(a, b) {\n a = fg(a);\n return Nf(a, b);\n}\nfunction hg(a, b, c) {\n a = fg(a);\n return Of(a, b, c);\n}\nfunction ig() {\n if (null !== bg) {\n var a = bg;\n bg = null;\n Pf(a);\n }\n jg();\n}\nfunction jg() {\n if (!cg && null !== ag) {\n cg = !0;\n var a = 0;\n try {\n var b = ag;\n gg(99, function () {\n for (; a < b.length; a++) {\n var c = b[a];\n do c = c(!0); while (null !== c);\n }\n });\n ag = null;\n } catch (c) {\n throw null !== ag && (ag = ag.slice(a + 1)), Of(Uf, ig), c;\n } finally {\n cg = !1;\n }\n }\n}\nvar kg = ra.ReactCurrentBatchConfig;\nfunction lg(a, b) {\n if (a && a.defaultProps) {\n b = m({}, b);\n a = a.defaultProps;\n for (var c in a) void 0 === b[c] && (b[c] = a[c]);\n return b;\n }\n return b;\n}\nvar mg = Bf(null),\n ng = null,\n og = null,\n pg = null;\nfunction qg() {\n pg = og = ng = null;\n}\nfunction rg(a) {\n var b = mg.current;\n H(mg);\n a.type._context._currentValue = b;\n}\nfunction sg(a, b) {\n for (; null !== a;) {\n var c = a.alternate;\n if ((a.childLanes & b) === b) {\n if (null === c || (c.childLanes & b) === b) break;else c.childLanes |= b;\n } else a.childLanes |= b, null !== c && (c.childLanes |= b);\n a = a.return;\n }\n}\nfunction tg(a, b) {\n ng = a;\n pg = og = null;\n a = a.dependencies;\n null !== a && null !== a.firstContext && (0 !== (a.lanes & b) && (ug = !0), a.firstContext = null);\n}\nfunction vg(a, b) {\n if (pg !== a && !1 !== b && 0 !== b) {\n if (\"number\" !== typeof b || 1073741823 === b) pg = a, b = 1073741823;\n b = {\n context: a,\n observedBits: b,\n next: null\n };\n if (null === og) {\n if (null === ng) throw Error(y(308));\n og = b;\n ng.dependencies = {\n lanes: 0,\n firstContext: b,\n responders: null\n };\n } else og = og.next = b;\n }\n return a._currentValue;\n}\nvar wg = !1;\nfunction xg(a) {\n a.updateQueue = {\n baseState: a.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: {\n pending: null\n },\n effects: null\n };\n}\nfunction yg(a, b) {\n a = a.updateQueue;\n b.updateQueue === a && (b.updateQueue = {\n baseState: a.baseState,\n firstBaseUpdate: a.firstBaseUpdate,\n lastBaseUpdate: a.lastBaseUpdate,\n shared: a.shared,\n effects: a.effects\n });\n}\nfunction zg(a, b) {\n return {\n eventTime: a,\n lane: b,\n tag: 0,\n payload: null,\n callback: null,\n next: null\n };\n}\nfunction Ag(a, b) {\n a = a.updateQueue;\n if (null !== a) {\n a = a.shared;\n var c = a.pending;\n null === c ? b.next = b : (b.next = c.next, c.next = b);\n a.pending = b;\n }\n}\nfunction Bg(a, b) {\n var c = a.updateQueue,\n d = a.alternate;\n if (null !== d && (d = d.updateQueue, c === d)) {\n var e = null,\n f = null;\n c = c.firstBaseUpdate;\n if (null !== c) {\n do {\n var g = {\n eventTime: c.eventTime,\n lane: c.lane,\n tag: c.tag,\n payload: c.payload,\n callback: c.callback,\n next: null\n };\n null === f ? e = f = g : f = f.next = g;\n c = c.next;\n } while (null !== c);\n null === f ? e = f = b : f = f.next = b;\n } else e = f = b;\n c = {\n baseState: d.baseState,\n firstBaseUpdate: e,\n lastBaseUpdate: f,\n shared: d.shared,\n effects: d.effects\n };\n a.updateQueue = c;\n return;\n }\n a = c.lastBaseUpdate;\n null === a ? c.firstBaseUpdate = b : a.next = b;\n c.lastBaseUpdate = b;\n}\nfunction Cg(a, b, c, d) {\n var e = a.updateQueue;\n wg = !1;\n var f = e.firstBaseUpdate,\n g = e.lastBaseUpdate,\n h = e.shared.pending;\n if (null !== h) {\n e.shared.pending = null;\n var k = h,\n l = k.next;\n k.next = null;\n null === g ? f = l : g.next = l;\n g = k;\n var n = a.alternate;\n if (null !== n) {\n n = n.updateQueue;\n var A = n.lastBaseUpdate;\n A !== g && (null === A ? n.firstBaseUpdate = l : A.next = l, n.lastBaseUpdate = k);\n }\n }\n if (null !== f) {\n A = e.baseState;\n g = 0;\n n = l = k = null;\n do {\n h = f.lane;\n var p = f.eventTime;\n if ((d & h) === h) {\n null !== n && (n = n.next = {\n eventTime: p,\n lane: 0,\n tag: f.tag,\n payload: f.payload,\n callback: f.callback,\n next: null\n });\n a: {\n var C = a,\n x = f;\n h = b;\n p = c;\n switch (x.tag) {\n case 1:\n C = x.payload;\n if (\"function\" === typeof C) {\n A = C.call(p, A, h);\n break a;\n }\n A = C;\n break a;\n case 3:\n C.flags = C.flags & -4097 | 64;\n case 0:\n C = x.payload;\n h = \"function\" === typeof C ? C.call(p, A, h) : C;\n if (null === h || void 0 === h) break a;\n A = m({}, A, h);\n break a;\n case 2:\n wg = !0;\n }\n }\n null !== f.callback && (a.flags |= 32, h = e.effects, null === h ? e.effects = [f] : h.push(f));\n } else p = {\n eventTime: p,\n lane: h,\n tag: f.tag,\n payload: f.payload,\n callback: f.callback,\n next: null\n }, null === n ? (l = n = p, k = A) : n = n.next = p, g |= h;\n f = f.next;\n if (null === f) if (h = e.shared.pending, null === h) break;else f = h.next, h.next = null, e.lastBaseUpdate = h, e.shared.pending = null;\n } while (1);\n null === n && (k = A);\n e.baseState = k;\n e.firstBaseUpdate = l;\n e.lastBaseUpdate = n;\n Dg |= g;\n a.lanes = g;\n a.memoizedState = A;\n }\n}\nfunction Eg(a, b, c) {\n a = b.effects;\n b.effects = null;\n if (null !== a) for (b = 0; b < a.length; b++) {\n var d = a[b],\n e = d.callback;\n if (null !== e) {\n d.callback = null;\n d = c;\n if (\"function\" !== typeof e) throw Error(y(191, e));\n e.call(d);\n }\n }\n}\nvar Fg = new aa.Component().refs;\nfunction Gg(a, b, c, d) {\n b = a.memoizedState;\n c = c(d, b);\n c = null === c || void 0 === c ? b : m({}, b, c);\n a.memoizedState = c;\n 0 === a.lanes && (a.updateQueue.baseState = c);\n}\nvar Kg = {\n isMounted: function (a) {\n return (a = a._reactInternals) ? Zb(a) === a : !1;\n },\n enqueueSetState: function (a, b, c) {\n a = a._reactInternals;\n var d = Hg(),\n e = Ig(a),\n f = zg(d, e);\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n Ag(a, f);\n Jg(a, e, d);\n },\n enqueueReplaceState: function (a, b, c) {\n a = a._reactInternals;\n var d = Hg(),\n e = Ig(a),\n f = zg(d, e);\n f.tag = 1;\n f.payload = b;\n void 0 !== c && null !== c && (f.callback = c);\n Ag(a, f);\n Jg(a, e, d);\n },\n enqueueForceUpdate: function (a, b) {\n a = a._reactInternals;\n var c = Hg(),\n d = Ig(a),\n e = zg(c, d);\n e.tag = 2;\n void 0 !== b && null !== b && (e.callback = b);\n Ag(a, e);\n Jg(a, d, c);\n }\n};\nfunction Lg(a, b, c, d, e, f, g) {\n a = a.stateNode;\n return \"function\" === typeof a.shouldComponentUpdate ? a.shouldComponentUpdate(d, f, g) : b.prototype && b.prototype.isPureReactComponent ? !Je(c, d) || !Je(e, f) : !0;\n}\nfunction Mg(a, b, c) {\n var d = !1,\n e = Cf;\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? f = vg(f) : (e = Ff(b) ? Df : M.current, d = b.contextTypes, f = (d = null !== d && void 0 !== d) ? Ef(a, e) : Cf);\n b = new b(c, f);\n a.memoizedState = null !== b.state && void 0 !== b.state ? b.state : null;\n b.updater = Kg;\n a.stateNode = b;\n b._reactInternals = a;\n d && (a = a.stateNode, a.__reactInternalMemoizedUnmaskedChildContext = e, a.__reactInternalMemoizedMaskedChildContext = f);\n return b;\n}\nfunction Ng(a, b, c, d) {\n a = b.state;\n \"function\" === typeof b.componentWillReceiveProps && b.componentWillReceiveProps(c, d);\n \"function\" === typeof b.UNSAFE_componentWillReceiveProps && b.UNSAFE_componentWillReceiveProps(c, d);\n b.state !== a && Kg.enqueueReplaceState(b, b.state, null);\n}\nfunction Og(a, b, c, d) {\n var e = a.stateNode;\n e.props = c;\n e.state = a.memoizedState;\n e.refs = Fg;\n xg(a);\n var f = b.contextType;\n \"object\" === typeof f && null !== f ? e.context = vg(f) : (f = Ff(b) ? Df : M.current, e.context = Ef(a, f));\n Cg(a, c, e, d);\n e.state = a.memoizedState;\n f = b.getDerivedStateFromProps;\n \"function\" === typeof f && (Gg(a, b, f, c), e.state = a.memoizedState);\n \"function\" === typeof b.getDerivedStateFromProps || \"function\" === typeof e.getSnapshotBeforeUpdate || \"function\" !== typeof e.UNSAFE_componentWillMount && \"function\" !== typeof e.componentWillMount || (b = e.state, \"function\" === typeof e.componentWillMount && e.componentWillMount(), \"function\" === typeof e.UNSAFE_componentWillMount && e.UNSAFE_componentWillMount(), b !== e.state && Kg.enqueueReplaceState(e, e.state, null), Cg(a, c, e, d), e.state = a.memoizedState);\n \"function\" === typeof e.componentDidMount && (a.flags |= 4);\n}\nvar Pg = Array.isArray;\nfunction Qg(a, b, c) {\n a = c.ref;\n if (null !== a && \"function\" !== typeof a && \"object\" !== typeof a) {\n if (c._owner) {\n c = c._owner;\n if (c) {\n if (1 !== c.tag) throw Error(y(309));\n var d = c.stateNode;\n }\n if (!d) throw Error(y(147, a));\n var e = \"\" + a;\n if (null !== b && null !== b.ref && \"function\" === typeof b.ref && b.ref._stringRef === e) return b.ref;\n b = function (a) {\n var b = d.refs;\n b === Fg && (b = d.refs = {});\n null === a ? delete b[e] : b[e] = a;\n };\n b._stringRef = e;\n return b;\n }\n if (\"string\" !== typeof a) throw Error(y(284));\n if (!c._owner) throw Error(y(290, a));\n }\n return a;\n}\nfunction Rg(a, b) {\n if (\"textarea\" !== a.type) throw Error(y(31, \"[object Object]\" === Object.prototype.toString.call(b) ? \"object with keys {\" + Object.keys(b).join(\", \") + \"}\" : b));\n}\nfunction Sg(a) {\n function b(b, c) {\n if (a) {\n var d = b.lastEffect;\n null !== d ? (d.nextEffect = c, b.lastEffect = c) : b.firstEffect = b.lastEffect = c;\n c.nextEffect = null;\n c.flags = 8;\n }\n }\n function c(c, d) {\n if (!a) return null;\n for (; null !== d;) b(c, d), d = d.sibling;\n return null;\n }\n function d(a, b) {\n for (a = new Map(); null !== b;) null !== b.key ? a.set(b.key, b) : a.set(b.index, b), b = b.sibling;\n return a;\n }\n function e(a, b) {\n a = Tg(a, b);\n a.index = 0;\n a.sibling = null;\n return a;\n }\n function f(b, c, d) {\n b.index = d;\n if (!a) return c;\n d = b.alternate;\n if (null !== d) return d = d.index, d < c ? (b.flags = 2, c) : d;\n b.flags = 2;\n return c;\n }\n function g(b) {\n a && null === b.alternate && (b.flags = 2);\n return b;\n }\n function h(a, b, c, d) {\n if (null === b || 6 !== b.tag) return b = Ug(c, a.mode, d), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n function k(a, b, c, d) {\n if (null !== b && b.elementType === c.type) return d = e(b, c.props), d.ref = Qg(a, b, c), d.return = a, d;\n d = Vg(c.type, c.key, c.props, null, a.mode, d);\n d.ref = Qg(a, b, c);\n d.return = a;\n return d;\n }\n function l(a, b, c, d) {\n if (null === b || 4 !== b.tag || b.stateNode.containerInfo !== c.containerInfo || b.stateNode.implementation !== c.implementation) return b = Wg(c, a.mode, d), b.return = a, b;\n b = e(b, c.children || []);\n b.return = a;\n return b;\n }\n function n(a, b, c, d, f) {\n if (null === b || 7 !== b.tag) return b = Xg(c, a.mode, d, f), b.return = a, b;\n b = e(b, c);\n b.return = a;\n return b;\n }\n function A(a, b, c) {\n if (\"string\" === typeof b || \"number\" === typeof b) return b = Ug(\"\" + b, a.mode, c), b.return = a, b;\n if (\"object\" === typeof b && null !== b) {\n switch (b.$$typeof) {\n case sa:\n return c = Vg(b.type, b.key, b.props, null, a.mode, c), c.ref = Qg(a, null, b), c.return = a, c;\n case ta:\n return b = Wg(b, a.mode, c), b.return = a, b;\n }\n if (Pg(b) || La(b)) return b = Xg(b, a.mode, c, null), b.return = a, b;\n Rg(a, b);\n }\n return null;\n }\n function p(a, b, c, d) {\n var e = null !== b ? b.key : null;\n if (\"string\" === typeof c || \"number\" === typeof c) return null !== e ? null : h(a, b, \"\" + c, d);\n if (\"object\" === typeof c && null !== c) {\n switch (c.$$typeof) {\n case sa:\n return c.key === e ? c.type === ua ? n(a, b, c.props.children, d, e) : k(a, b, c, d) : null;\n case ta:\n return c.key === e ? l(a, b, c, d) : null;\n }\n if (Pg(c) || La(c)) return null !== e ? null : n(a, b, c, d, null);\n Rg(a, c);\n }\n return null;\n }\n function C(a, b, c, d, e) {\n if (\"string\" === typeof d || \"number\" === typeof d) return a = a.get(c) || null, h(b, a, \"\" + d, e);\n if (\"object\" === typeof d && null !== d) {\n switch (d.$$typeof) {\n case sa:\n return a = a.get(null === d.key ? c : d.key) || null, d.type === ua ? n(b, a, d.props.children, e, d.key) : k(b, a, d, e);\n case ta:\n return a = a.get(null === d.key ? c : d.key) || null, l(b, a, d, e);\n }\n if (Pg(d) || La(d)) return a = a.get(c) || null, n(b, a, d, e, null);\n Rg(b, d);\n }\n return null;\n }\n function x(e, g, h, k) {\n for (var l = null, t = null, u = g, z = g = 0, q = null; null !== u && z < h.length; z++) {\n u.index > z ? (q = u, u = null) : q = u.sibling;\n var n = p(e, u, h[z], k);\n if (null === n) {\n null === u && (u = q);\n break;\n }\n a && u && null === n.alternate && b(e, u);\n g = f(n, g, z);\n null === t ? l = n : t.sibling = n;\n t = n;\n u = q;\n }\n if (z === h.length) return c(e, u), l;\n if (null === u) {\n for (; z < h.length; z++) u = A(e, h[z], k), null !== u && (g = f(u, g, z), null === t ? l = u : t.sibling = u, t = u);\n return l;\n }\n for (u = d(e, u); z < h.length; z++) q = C(u, e, z, h[z], k), null !== q && (a && null !== q.alternate && u.delete(null === q.key ? z : q.key), g = f(q, g, z), null === t ? l = q : t.sibling = q, t = q);\n a && u.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n function w(e, g, h, k) {\n var l = La(h);\n if (\"function\" !== typeof l) throw Error(y(150));\n h = l.call(h);\n if (null == h) throw Error(y(151));\n for (var t = l = null, u = g, z = g = 0, q = null, n = h.next(); null !== u && !n.done; z++, n = h.next()) {\n u.index > z ? (q = u, u = null) : q = u.sibling;\n var w = p(e, u, n.value, k);\n if (null === w) {\n null === u && (u = q);\n break;\n }\n a && u && null === w.alternate && b(e, u);\n g = f(w, g, z);\n null === t ? l = w : t.sibling = w;\n t = w;\n u = q;\n }\n if (n.done) return c(e, u), l;\n if (null === u) {\n for (; !n.done; z++, n = h.next()) n = A(e, n.value, k), null !== n && (g = f(n, g, z), null === t ? l = n : t.sibling = n, t = n);\n return l;\n }\n for (u = d(e, u); !n.done; z++, n = h.next()) n = C(u, e, z, n.value, k), null !== n && (a && null !== n.alternate && u.delete(null === n.key ? z : n.key), g = f(n, g, z), null === t ? l = n : t.sibling = n, t = n);\n a && u.forEach(function (a) {\n return b(e, a);\n });\n return l;\n }\n return function (a, d, f, h) {\n var k = \"object\" === typeof f && null !== f && f.type === ua && null === f.key;\n k && (f = f.props.children);\n var l = \"object\" === typeof f && null !== f;\n if (l) switch (f.$$typeof) {\n case sa:\n a: {\n l = f.key;\n for (k = d; null !== k;) {\n if (k.key === l) {\n switch (k.tag) {\n case 7:\n if (f.type === ua) {\n c(a, k.sibling);\n d = e(k, f.props.children);\n d.return = a;\n a = d;\n break a;\n }\n break;\n default:\n if (k.elementType === f.type) {\n c(a, k.sibling);\n d = e(k, f.props);\n d.ref = Qg(a, k, f);\n d.return = a;\n a = d;\n break a;\n }\n }\n c(a, k);\n break;\n } else b(a, k);\n k = k.sibling;\n }\n f.type === ua ? (d = Xg(f.props.children, a.mode, h, f.key), d.return = a, a = d) : (h = Vg(f.type, f.key, f.props, null, a.mode, h), h.ref = Qg(a, d, f), h.return = a, a = h);\n }\n return g(a);\n case ta:\n a: {\n for (k = f.key; null !== d;) {\n if (d.key === k) {\n if (4 === d.tag && d.stateNode.containerInfo === f.containerInfo && d.stateNode.implementation === f.implementation) {\n c(a, d.sibling);\n d = e(d, f.children || []);\n d.return = a;\n a = d;\n break a;\n } else {\n c(a, d);\n break;\n }\n } else b(a, d);\n d = d.sibling;\n }\n d = Wg(f, a.mode, h);\n d.return = a;\n a = d;\n }\n return g(a);\n }\n if (\"string\" === typeof f || \"number\" === typeof f) return f = \"\" + f, null !== d && 6 === d.tag ? (c(a, d.sibling), d = e(d, f), d.return = a, a = d) : (c(a, d), d = Ug(f, a.mode, h), d.return = a, a = d), g(a);\n if (Pg(f)) return x(a, d, f, h);\n if (La(f)) return w(a, d, f, h);\n l && Rg(a, f);\n if (\"undefined\" === typeof f && !k) switch (a.tag) {\n case 1:\n case 22:\n case 0:\n case 11:\n case 15:\n throw Error(y(152, Ra(a.type) || \"Component\"));\n }\n return c(a, d);\n };\n}\nvar Yg = Sg(!0),\n Zg = Sg(!1),\n $g = {},\n ah = Bf($g),\n bh = Bf($g),\n ch = Bf($g);\nfunction dh(a) {\n if (a === $g) throw Error(y(174));\n return a;\n}\nfunction eh(a, b) {\n I(ch, b);\n I(bh, a);\n I(ah, $g);\n a = b.nodeType;\n switch (a) {\n case 9:\n case 11:\n b = (b = b.documentElement) ? b.namespaceURI : mb(null, \"\");\n break;\n default:\n a = 8 === a ? b.parentNode : b, b = a.namespaceURI || null, a = a.tagName, b = mb(b, a);\n }\n H(ah);\n I(ah, b);\n}\nfunction fh() {\n H(ah);\n H(bh);\n H(ch);\n}\nfunction gh(a) {\n dh(ch.current);\n var b = dh(ah.current);\n var c = mb(b, a.type);\n b !== c && (I(bh, a), I(ah, c));\n}\nfunction hh(a) {\n bh.current === a && (H(ah), H(bh));\n}\nvar P = Bf(0);\nfunction ih(a) {\n for (var b = a; null !== b;) {\n if (13 === b.tag) {\n var c = b.memoizedState;\n if (null !== c && (c = c.dehydrated, null === c || \"$?\" === c.data || \"$!\" === c.data)) return b;\n } else if (19 === b.tag && void 0 !== b.memoizedProps.revealOrder) {\n if (0 !== (b.flags & 64)) return b;\n } else if (null !== b.child) {\n b.child.return = b;\n b = b.child;\n continue;\n }\n if (b === a) break;\n for (; null === b.sibling;) {\n if (null === b.return || b.return === a) return null;\n b = b.return;\n }\n b.sibling.return = b.return;\n b = b.sibling;\n }\n return null;\n}\nvar jh = null,\n kh = null,\n lh = !1;\nfunction mh(a, b) {\n var c = nh(5, null, null, 0);\n c.elementType = \"DELETED\";\n c.type = \"DELETED\";\n c.stateNode = b;\n c.return = a;\n c.flags = 8;\n null !== a.lastEffect ? (a.lastEffect.nextEffect = c, a.lastEffect = c) : a.firstEffect = a.lastEffect = c;\n}\nfunction oh(a, b) {\n switch (a.tag) {\n case 5:\n var c = a.type;\n b = 1 !== b.nodeType || c.toLowerCase() !== b.nodeName.toLowerCase() ? null : b;\n return null !== b ? (a.stateNode = b, !0) : !1;\n case 6:\n return b = \"\" === a.pendingProps || 3 !== b.nodeType ? null : b, null !== b ? (a.stateNode = b, !0) : !1;\n case 13:\n return !1;\n default:\n return !1;\n }\n}\nfunction ph(a) {\n if (lh) {\n var b = kh;\n if (b) {\n var c = b;\n if (!oh(a, b)) {\n b = rf(c.nextSibling);\n if (!b || !oh(a, b)) {\n a.flags = a.flags & -1025 | 2;\n lh = !1;\n jh = a;\n return;\n }\n mh(jh, c);\n }\n jh = a;\n kh = rf(b.firstChild);\n } else a.flags = a.flags & -1025 | 2, lh = !1, jh = a;\n }\n}\nfunction qh(a) {\n for (a = a.return; null !== a && 5 !== a.tag && 3 !== a.tag && 13 !== a.tag;) a = a.return;\n jh = a;\n}\nfunction rh(a) {\n if (a !== jh) return !1;\n if (!lh) return qh(a), lh = !0, !1;\n var b = a.type;\n if (5 !== a.tag || \"head\" !== b && \"body\" !== b && !nf(b, a.memoizedProps)) for (b = kh; b;) mh(a, b), b = rf(b.nextSibling);\n qh(a);\n if (13 === a.tag) {\n a = a.memoizedState;\n a = null !== a ? a.dehydrated : null;\n if (!a) throw Error(y(317));\n a: {\n a = a.nextSibling;\n for (b = 0; a;) {\n if (8 === a.nodeType) {\n var c = a.data;\n if (\"/$\" === c) {\n if (0 === b) {\n kh = rf(a.nextSibling);\n break a;\n }\n b--;\n } else \"$\" !== c && \"$!\" !== c && \"$?\" !== c || b++;\n }\n a = a.nextSibling;\n }\n kh = null;\n }\n } else kh = jh ? rf(a.stateNode.nextSibling) : null;\n return !0;\n}\nfunction sh() {\n kh = jh = null;\n lh = !1;\n}\nvar th = [];\nfunction uh() {\n for (var a = 0; a < th.length; a++) th[a]._workInProgressVersionPrimary = null;\n th.length = 0;\n}\nvar vh = ra.ReactCurrentDispatcher,\n wh = ra.ReactCurrentBatchConfig,\n xh = 0,\n R = null,\n S = null,\n T = null,\n yh = !1,\n zh = !1;\nfunction Ah() {\n throw Error(y(321));\n}\nfunction Bh(a, b) {\n if (null === b) return !1;\n for (var c = 0; c < b.length && c < a.length; c++) if (!He(a[c], b[c])) return !1;\n return !0;\n}\nfunction Ch(a, b, c, d, e, f) {\n xh = f;\n R = b;\n b.memoizedState = null;\n b.updateQueue = null;\n b.lanes = 0;\n vh.current = null === a || null === a.memoizedState ? Dh : Eh;\n a = c(d, e);\n if (zh) {\n f = 0;\n do {\n zh = !1;\n if (!(25 > f)) throw Error(y(301));\n f += 1;\n T = S = null;\n b.updateQueue = null;\n vh.current = Fh;\n a = c(d, e);\n } while (zh);\n }\n vh.current = Gh;\n b = null !== S && null !== S.next;\n xh = 0;\n T = S = R = null;\n yh = !1;\n if (b) throw Error(y(300));\n return a;\n}\nfunction Hh() {\n var a = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === T ? R.memoizedState = T = a : T = T.next = a;\n return T;\n}\nfunction Ih() {\n if (null === S) {\n var a = R.alternate;\n a = null !== a ? a.memoizedState : null;\n } else a = S.next;\n var b = null === T ? R.memoizedState : T.next;\n if (null !== b) T = b, S = a;else {\n if (null === a) throw Error(y(310));\n S = a;\n a = {\n memoizedState: S.memoizedState,\n baseState: S.baseState,\n baseQueue: S.baseQueue,\n queue: S.queue,\n next: null\n };\n null === T ? R.memoizedState = T = a : T = T.next = a;\n }\n return T;\n}\nfunction Jh(a, b) {\n return \"function\" === typeof b ? b(a) : b;\n}\nfunction Kh(a) {\n var b = Ih(),\n c = b.queue;\n if (null === c) throw Error(y(311));\n c.lastRenderedReducer = a;\n var d = S,\n e = d.baseQueue,\n f = c.pending;\n if (null !== f) {\n if (null !== e) {\n var g = e.next;\n e.next = f.next;\n f.next = g;\n }\n d.baseQueue = e = f;\n c.pending = null;\n }\n if (null !== e) {\n e = e.next;\n d = d.baseState;\n var h = g = f = null,\n k = e;\n do {\n var l = k.lane;\n if ((xh & l) === l) null !== h && (h = h.next = {\n lane: 0,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n }), d = k.eagerReducer === a ? k.eagerState : a(d, k.action);else {\n var n = {\n lane: l,\n action: k.action,\n eagerReducer: k.eagerReducer,\n eagerState: k.eagerState,\n next: null\n };\n null === h ? (g = h = n, f = d) : h = h.next = n;\n R.lanes |= l;\n Dg |= l;\n }\n k = k.next;\n } while (null !== k && k !== e);\n null === h ? f = d : h.next = g;\n He(d, b.memoizedState) || (ug = !0);\n b.memoizedState = d;\n b.baseState = f;\n b.baseQueue = h;\n c.lastRenderedState = d;\n }\n return [b.memoizedState, c.dispatch];\n}\nfunction Lh(a) {\n var b = Ih(),\n c = b.queue;\n if (null === c) throw Error(y(311));\n c.lastRenderedReducer = a;\n var d = c.dispatch,\n e = c.pending,\n f = b.memoizedState;\n if (null !== e) {\n c.pending = null;\n var g = e = e.next;\n do f = a(f, g.action), g = g.next; while (g !== e);\n He(f, b.memoizedState) || (ug = !0);\n b.memoizedState = f;\n null === b.baseQueue && (b.baseState = f);\n c.lastRenderedState = f;\n }\n return [f, d];\n}\nfunction Mh(a, b, c) {\n var d = b._getVersion;\n d = d(b._source);\n var e = b._workInProgressVersionPrimary;\n if (null !== e) a = e === d;else if (a = a.mutableReadLanes, a = (xh & a) === a) b._workInProgressVersionPrimary = d, th.push(b);\n if (a) return c(b._source);\n th.push(b);\n throw Error(y(350));\n}\nfunction Nh(a, b, c, d) {\n var e = U;\n if (null === e) throw Error(y(349));\n var f = b._getVersion,\n g = f(b._source),\n h = vh.current,\n k = h.useState(function () {\n return Mh(e, b, c);\n }),\n l = k[1],\n n = k[0];\n k = T;\n var A = a.memoizedState,\n p = A.refs,\n C = p.getSnapshot,\n x = A.source;\n A = A.subscribe;\n var w = R;\n a.memoizedState = {\n refs: p,\n source: b,\n subscribe: d\n };\n h.useEffect(function () {\n p.getSnapshot = c;\n p.setSnapshot = l;\n var a = f(b._source);\n if (!He(g, a)) {\n a = c(b._source);\n He(n, a) || (l(a), a = Ig(w), e.mutableReadLanes |= a & e.pendingLanes);\n a = e.mutableReadLanes;\n e.entangledLanes |= a;\n for (var d = e.entanglements, h = a; 0 < h;) {\n var k = 31 - Vc(h),\n v = 1 << k;\n d[k] |= a;\n h &= ~v;\n }\n }\n }, [c, b, d]);\n h.useEffect(function () {\n return d(b._source, function () {\n var a = p.getSnapshot,\n c = p.setSnapshot;\n try {\n c(a(b._source));\n var d = Ig(w);\n e.mutableReadLanes |= d & e.pendingLanes;\n } catch (q) {\n c(function () {\n throw q;\n });\n }\n });\n }, [b, d]);\n He(C, c) && He(x, b) && He(A, d) || (a = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: Jh,\n lastRenderedState: n\n }, a.dispatch = l = Oh.bind(null, R, a), k.queue = a, k.baseQueue = null, n = Mh(e, b, c), k.memoizedState = k.baseState = n);\n return n;\n}\nfunction Ph(a, b, c) {\n var d = Ih();\n return Nh(d, a, b, c);\n}\nfunction Qh(a) {\n var b = Hh();\n \"function\" === typeof a && (a = a());\n b.memoizedState = b.baseState = a;\n a = b.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: Jh,\n lastRenderedState: a\n };\n a = a.dispatch = Oh.bind(null, R, a);\n return [b.memoizedState, a];\n}\nfunction Rh(a, b, c, d) {\n a = {\n tag: a,\n create: b,\n destroy: c,\n deps: d,\n next: null\n };\n b = R.updateQueue;\n null === b ? (b = {\n lastEffect: null\n }, R.updateQueue = b, b.lastEffect = a.next = a) : (c = b.lastEffect, null === c ? b.lastEffect = a.next = a : (d = c.next, c.next = a, a.next = d, b.lastEffect = a));\n return a;\n}\nfunction Sh(a) {\n var b = Hh();\n a = {\n current: a\n };\n return b.memoizedState = a;\n}\nfunction Th() {\n return Ih().memoizedState;\n}\nfunction Uh(a, b, c, d) {\n var e = Hh();\n R.flags |= a;\n e.memoizedState = Rh(1 | b, c, void 0, void 0 === d ? null : d);\n}\nfunction Vh(a, b, c, d) {\n var e = Ih();\n d = void 0 === d ? null : d;\n var f = void 0;\n if (null !== S) {\n var g = S.memoizedState;\n f = g.destroy;\n if (null !== d && Bh(d, g.deps)) {\n Rh(b, c, f, d);\n return;\n }\n }\n R.flags |= a;\n e.memoizedState = Rh(1 | b, c, f, d);\n}\nfunction Wh(a, b) {\n return Uh(516, 4, a, b);\n}\nfunction Xh(a, b) {\n return Vh(516, 4, a, b);\n}\nfunction Yh(a, b) {\n return Vh(4, 2, a, b);\n}\nfunction Zh(a, b) {\n if (\"function\" === typeof b) return a = a(), b(a), function () {\n b(null);\n };\n if (null !== b && void 0 !== b) return a = a(), b.current = a, function () {\n b.current = null;\n };\n}\nfunction $h(a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Vh(4, 2, Zh.bind(null, b, a), c);\n}\nfunction ai() {}\nfunction bi(a, b) {\n var c = Ih();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Bh(b, d[1])) return d[0];\n c.memoizedState = [a, b];\n return a;\n}\nfunction ci(a, b) {\n var c = Ih();\n b = void 0 === b ? null : b;\n var d = c.memoizedState;\n if (null !== d && null !== b && Bh(b, d[1])) return d[0];\n a = a();\n c.memoizedState = [a, b];\n return a;\n}\nfunction di(a, b) {\n var c = eg();\n gg(98 > c ? 98 : c, function () {\n a(!0);\n });\n gg(97 < c ? 97 : c, function () {\n var c = wh.transition;\n wh.transition = 1;\n try {\n a(!1), b();\n } finally {\n wh.transition = c;\n }\n });\n}\nfunction Oh(a, b, c) {\n var d = Hg(),\n e = Ig(a),\n f = {\n lane: e,\n action: c,\n eagerReducer: null,\n eagerState: null,\n next: null\n },\n g = b.pending;\n null === g ? f.next = f : (f.next = g.next, g.next = f);\n b.pending = f;\n g = a.alternate;\n if (a === R || null !== g && g === R) zh = yh = !0;else {\n if (0 === a.lanes && (null === g || 0 === g.lanes) && (g = b.lastRenderedReducer, null !== g)) try {\n var h = b.lastRenderedState,\n k = g(h, c);\n f.eagerReducer = g;\n f.eagerState = k;\n if (He(k, h)) return;\n } catch (l) {} finally {}\n Jg(a, e, d);\n }\n}\nvar Gh = {\n readContext: vg,\n useCallback: Ah,\n useContext: Ah,\n useEffect: Ah,\n useImperativeHandle: Ah,\n useLayoutEffect: Ah,\n useMemo: Ah,\n useReducer: Ah,\n useRef: Ah,\n useState: Ah,\n useDebugValue: Ah,\n useDeferredValue: Ah,\n useTransition: Ah,\n useMutableSource: Ah,\n useOpaqueIdentifier: Ah,\n unstable_isNewReconciler: !1\n },\n Dh = {\n readContext: vg,\n useCallback: function (a, b) {\n Hh().memoizedState = [a, void 0 === b ? null : b];\n return a;\n },\n useContext: vg,\n useEffect: Wh,\n useImperativeHandle: function (a, b, c) {\n c = null !== c && void 0 !== c ? c.concat([a]) : null;\n return Uh(4, 2, Zh.bind(null, b, a), c);\n },\n useLayoutEffect: function (a, b) {\n return Uh(4, 2, a, b);\n },\n useMemo: function (a, b) {\n var c = Hh();\n b = void 0 === b ? null : b;\n a = a();\n c.memoizedState = [a, b];\n return a;\n },\n useReducer: function (a, b, c) {\n var d = Hh();\n b = void 0 !== c ? c(b) : b;\n d.memoizedState = d.baseState = b;\n a = d.queue = {\n pending: null,\n dispatch: null,\n lastRenderedReducer: a,\n lastRenderedState: b\n };\n a = a.dispatch = Oh.bind(null, R, a);\n return [d.memoizedState, a];\n },\n useRef: Sh,\n useState: Qh,\n useDebugValue: ai,\n useDeferredValue: function (a) {\n var b = Qh(a),\n c = b[0],\n d = b[1];\n Wh(function () {\n var b = wh.transition;\n wh.transition = 1;\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function () {\n var a = Qh(!1),\n b = a[0];\n a = di.bind(null, a[1]);\n Sh(a);\n return [a, b];\n },\n useMutableSource: function (a, b, c) {\n var d = Hh();\n d.memoizedState = {\n refs: {\n getSnapshot: b,\n setSnapshot: null\n },\n source: a,\n subscribe: c\n };\n return Nh(d, a, b, c);\n },\n useOpaqueIdentifier: function () {\n if (lh) {\n var a = !1,\n b = uf(function () {\n a || (a = !0, c(\"r:\" + (tf++).toString(36)));\n throw Error(y(355));\n }),\n c = Qh(b)[1];\n 0 === (R.mode & 2) && (R.flags |= 516, Rh(5, function () {\n c(\"r:\" + (tf++).toString(36));\n }, void 0, null));\n return b;\n }\n b = \"r:\" + (tf++).toString(36);\n Qh(b);\n return b;\n },\n unstable_isNewReconciler: !1\n },\n Eh = {\n readContext: vg,\n useCallback: bi,\n useContext: vg,\n useEffect: Xh,\n useImperativeHandle: $h,\n useLayoutEffect: Yh,\n useMemo: ci,\n useReducer: Kh,\n useRef: Th,\n useState: function () {\n return Kh(Jh);\n },\n useDebugValue: ai,\n useDeferredValue: function (a) {\n var b = Kh(Jh),\n c = b[0],\n d = b[1];\n Xh(function () {\n var b = wh.transition;\n wh.transition = 1;\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function () {\n var a = Kh(Jh)[0];\n return [Th().current, a];\n },\n useMutableSource: Ph,\n useOpaqueIdentifier: function () {\n return Kh(Jh)[0];\n },\n unstable_isNewReconciler: !1\n },\n Fh = {\n readContext: vg,\n useCallback: bi,\n useContext: vg,\n useEffect: Xh,\n useImperativeHandle: $h,\n useLayoutEffect: Yh,\n useMemo: ci,\n useReducer: Lh,\n useRef: Th,\n useState: function () {\n return Lh(Jh);\n },\n useDebugValue: ai,\n useDeferredValue: function (a) {\n var b = Lh(Jh),\n c = b[0],\n d = b[1];\n Xh(function () {\n var b = wh.transition;\n wh.transition = 1;\n try {\n d(a);\n } finally {\n wh.transition = b;\n }\n }, [a]);\n return c;\n },\n useTransition: function () {\n var a = Lh(Jh)[0];\n return [Th().current, a];\n },\n useMutableSource: Ph,\n useOpaqueIdentifier: function () {\n return Lh(Jh)[0];\n },\n unstable_isNewReconciler: !1\n },\n ei = ra.ReactCurrentOwner,\n ug = !1;\nfunction fi(a, b, c, d) {\n b.child = null === a ? Zg(b, null, c, d) : Yg(b, a.child, c, d);\n}\nfunction gi(a, b, c, d, e) {\n c = c.render;\n var f = b.ref;\n tg(b, e);\n d = Ch(a, b, c, d, f, e);\n if (null !== a && !ug) return b.updateQueue = a.updateQueue, b.flags &= -517, a.lanes &= ~e, hi(a, b, e);\n b.flags |= 1;\n fi(a, b, d, e);\n return b.child;\n}\nfunction ii(a, b, c, d, e, f) {\n if (null === a) {\n var g = c.type;\n if (\"function\" === typeof g && !ji(g) && void 0 === g.defaultProps && null === c.compare && void 0 === c.defaultProps) return b.tag = 15, b.type = g, ki(a, b, g, d, e, f);\n a = Vg(c.type, null, d, b, b.mode, f);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n }\n g = a.child;\n if (0 === (e & f) && (e = g.memoizedProps, c = c.compare, c = null !== c ? c : Je, c(e, d) && a.ref === b.ref)) return hi(a, b, f);\n b.flags |= 1;\n a = Tg(g, d);\n a.ref = b.ref;\n a.return = b;\n return b.child = a;\n}\nfunction ki(a, b, c, d, e, f) {\n if (null !== a && Je(a.memoizedProps, d) && a.ref === b.ref) if (ug = !1, 0 !== (f & e)) 0 !== (a.flags & 16384) && (ug = !0);else return b.lanes = a.lanes, hi(a, b, f);\n return li(a, b, c, d, f);\n}\nfunction mi(a, b, c) {\n var d = b.pendingProps,\n e = d.children,\n f = null !== a ? a.memoizedState : null;\n if (\"hidden\" === d.mode || \"unstable-defer-without-hiding\" === d.mode) {\n if (0 === (b.mode & 4)) b.memoizedState = {\n baseLanes: 0\n }, ni(b, c);else if (0 !== (c & 1073741824)) b.memoizedState = {\n baseLanes: 0\n }, ni(b, null !== f ? f.baseLanes : c);else return a = null !== f ? f.baseLanes | c : c, b.lanes = b.childLanes = 1073741824, b.memoizedState = {\n baseLanes: a\n }, ni(b, a), null;\n } else null !== f ? (d = f.baseLanes | c, b.memoizedState = null) : d = c, ni(b, d);\n fi(a, b, e, c);\n return b.child;\n}\nfunction oi(a, b) {\n var c = b.ref;\n if (null === a && null !== c || null !== a && a.ref !== c) b.flags |= 128;\n}\nfunction li(a, b, c, d, e) {\n var f = Ff(c) ? Df : M.current;\n f = Ef(b, f);\n tg(b, e);\n c = Ch(a, b, c, d, f, e);\n if (null !== a && !ug) return b.updateQueue = a.updateQueue, b.flags &= -517, a.lanes &= ~e, hi(a, b, e);\n b.flags |= 1;\n fi(a, b, c, e);\n return b.child;\n}\nfunction pi(a, b, c, d, e) {\n if (Ff(c)) {\n var f = !0;\n Jf(b);\n } else f = !1;\n tg(b, e);\n if (null === b.stateNode) null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2), Mg(b, c, d), Og(b, c, d, e), d = !0;else if (null === a) {\n var g = b.stateNode,\n h = b.memoizedProps;\n g.props = h;\n var k = g.context,\n l = c.contextType;\n \"object\" === typeof l && null !== l ? l = vg(l) : (l = Ff(c) ? Df : M.current, l = Ef(b, l));\n var n = c.getDerivedStateFromProps,\n A = \"function\" === typeof n || \"function\" === typeof g.getSnapshotBeforeUpdate;\n A || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== d || k !== l) && Ng(b, g, d, l);\n wg = !1;\n var p = b.memoizedState;\n g.state = p;\n Cg(b, d, g, e);\n k = b.memoizedState;\n h !== d || p !== k || N.current || wg ? (\"function\" === typeof n && (Gg(b, c, n, d), k = b.memoizedState), (h = wg || Lg(b, c, h, d, p, k, l)) ? (A || \"function\" !== typeof g.UNSAFE_componentWillMount && \"function\" !== typeof g.componentWillMount || (\"function\" === typeof g.componentWillMount && g.componentWillMount(), \"function\" === typeof g.UNSAFE_componentWillMount && g.UNSAFE_componentWillMount()), \"function\" === typeof g.componentDidMount && (b.flags |= 4)) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4), b.memoizedProps = d, b.memoizedState = k), g.props = d, g.state = k, g.context = l, d = h) : (\"function\" === typeof g.componentDidMount && (b.flags |= 4), d = !1);\n } else {\n g = b.stateNode;\n yg(a, b);\n h = b.memoizedProps;\n l = b.type === b.elementType ? h : lg(b.type, h);\n g.props = l;\n A = b.pendingProps;\n p = g.context;\n k = c.contextType;\n \"object\" === typeof k && null !== k ? k = vg(k) : (k = Ff(c) ? Df : M.current, k = Ef(b, k));\n var C = c.getDerivedStateFromProps;\n (n = \"function\" === typeof C || \"function\" === typeof g.getSnapshotBeforeUpdate) || \"function\" !== typeof g.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g.componentWillReceiveProps || (h !== A || p !== k) && Ng(b, g, d, k);\n wg = !1;\n p = b.memoizedState;\n g.state = p;\n Cg(b, d, g, e);\n var x = b.memoizedState;\n h !== A || p !== x || N.current || wg ? (\"function\" === typeof C && (Gg(b, c, C, d), x = b.memoizedState), (l = wg || Lg(b, c, l, d, p, x, k)) ? (n || \"function\" !== typeof g.UNSAFE_componentWillUpdate && \"function\" !== typeof g.componentWillUpdate || (\"function\" === typeof g.componentWillUpdate && g.componentWillUpdate(d, x, k), \"function\" === typeof g.UNSAFE_componentWillUpdate && g.UNSAFE_componentWillUpdate(d, x, k)), \"function\" === typeof g.componentDidUpdate && (b.flags |= 4), \"function\" === typeof g.getSnapshotBeforeUpdate && (b.flags |= 256)) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 256), b.memoizedProps = d, b.memoizedState = x), g.props = d, g.state = x, g.context = k, d = l) : (\"function\" !== typeof g.componentDidUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 4), \"function\" !== typeof g.getSnapshotBeforeUpdate || h === a.memoizedProps && p === a.memoizedState || (b.flags |= 256), d = !1);\n }\n return qi(a, b, c, d, f, e);\n}\nfunction qi(a, b, c, d, e, f) {\n oi(a, b);\n var g = 0 !== (b.flags & 64);\n if (!d && !g) return e && Kf(b, c, !1), hi(a, b, f);\n d = b.stateNode;\n ei.current = b;\n var h = g && \"function\" !== typeof c.getDerivedStateFromError ? null : d.render();\n b.flags |= 1;\n null !== a && g ? (b.child = Yg(b, a.child, null, f), b.child = Yg(b, null, h, f)) : fi(a, b, h, f);\n b.memoizedState = d.state;\n e && Kf(b, c, !0);\n return b.child;\n}\nfunction ri(a) {\n var b = a.stateNode;\n b.pendingContext ? Hf(a, b.pendingContext, b.pendingContext !== b.context) : b.context && Hf(a, b.context, !1);\n eh(a, b.containerInfo);\n}\nvar si = {\n dehydrated: null,\n retryLane: 0\n};\nfunction ti(a, b, c) {\n var d = b.pendingProps,\n e = P.current,\n f = !1,\n g;\n (g = 0 !== (b.flags & 64)) || (g = null !== a && null === a.memoizedState ? !1 : 0 !== (e & 2));\n g ? (f = !0, b.flags &= -65) : null !== a && null === a.memoizedState || void 0 === d.fallback || !0 === d.unstable_avoidThisFallback || (e |= 1);\n I(P, e & 1);\n if (null === a) {\n void 0 !== d.fallback && ph(b);\n a = d.children;\n e = d.fallback;\n if (f) return a = ui(b, a, e, c), b.child.memoizedState = {\n baseLanes: c\n }, b.memoizedState = si, a;\n if (\"number\" === typeof d.unstable_expectedLoadTime) return a = ui(b, a, e, c), b.child.memoizedState = {\n baseLanes: c\n }, b.memoizedState = si, b.lanes = 33554432, a;\n c = vi({\n mode: \"visible\",\n children: a\n }, b.mode, c, null);\n c.return = b;\n return b.child = c;\n }\n if (null !== a.memoizedState) {\n if (f) return d = wi(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? {\n baseLanes: c\n } : {\n baseLanes: e.baseLanes | c\n }, f.childLanes = a.childLanes & ~c, b.memoizedState = si, d;\n c = xi(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n }\n if (f) return d = wi(a, b, d.children, d.fallback, c), f = b.child, e = a.child.memoizedState, f.memoizedState = null === e ? {\n baseLanes: c\n } : {\n baseLanes: e.baseLanes | c\n }, f.childLanes = a.childLanes & ~c, b.memoizedState = si, d;\n c = xi(a, b, d.children, c);\n b.memoizedState = null;\n return c;\n}\nfunction ui(a, b, c, d) {\n var e = a.mode,\n f = a.child;\n b = {\n mode: \"hidden\",\n children: b\n };\n 0 === (e & 2) && null !== f ? (f.childLanes = 0, f.pendingProps = b) : f = vi(b, e, 0, null);\n c = Xg(c, e, d, null);\n f.return = a;\n c.return = a;\n f.sibling = c;\n a.child = f;\n return c;\n}\nfunction xi(a, b, c, d) {\n var e = a.child;\n a = e.sibling;\n c = Tg(e, {\n mode: \"visible\",\n children: c\n });\n 0 === (b.mode & 2) && (c.lanes = d);\n c.return = b;\n c.sibling = null;\n null !== a && (a.nextEffect = null, a.flags = 8, b.firstEffect = b.lastEffect = a);\n return b.child = c;\n}\nfunction wi(a, b, c, d, e) {\n var f = b.mode,\n g = a.child;\n a = g.sibling;\n var h = {\n mode: \"hidden\",\n children: c\n };\n 0 === (f & 2) && b.child !== g ? (c = b.child, c.childLanes = 0, c.pendingProps = h, g = c.lastEffect, null !== g ? (b.firstEffect = c.firstEffect, b.lastEffect = g, g.nextEffect = null) : b.firstEffect = b.lastEffect = null) : c = Tg(g, h);\n null !== a ? d = Tg(a, d) : (d = Xg(d, f, e, null), d.flags |= 2);\n d.return = b;\n c.return = b;\n c.sibling = d;\n b.child = c;\n return d;\n}\nfunction yi(a, b) {\n a.lanes |= b;\n var c = a.alternate;\n null !== c && (c.lanes |= b);\n sg(a.return, b);\n}\nfunction zi(a, b, c, d, e, f) {\n var g = a.memoizedState;\n null === g ? a.memoizedState = {\n isBackwards: b,\n rendering: null,\n renderingStartTime: 0,\n last: d,\n tail: c,\n tailMode: e,\n lastEffect: f\n } : (g.isBackwards = b, g.rendering = null, g.renderingStartTime = 0, g.last = d, g.tail = c, g.tailMode = e, g.lastEffect = f);\n}\nfunction Ai(a, b, c) {\n var d = b.pendingProps,\n e = d.revealOrder,\n f = d.tail;\n fi(a, b, d.children, c);\n d = P.current;\n if (0 !== (d & 2)) d = d & 1 | 2, b.flags |= 64;else {\n if (null !== a && 0 !== (a.flags & 64)) a: for (a = b.child; null !== a;) {\n if (13 === a.tag) null !== a.memoizedState && yi(a, c);else if (19 === a.tag) yi(a, c);else if (null !== a.child) {\n a.child.return = a;\n a = a.child;\n continue;\n }\n if (a === b) break a;\n for (; null === a.sibling;) {\n if (null === a.return || a.return === b) break a;\n a = a.return;\n }\n a.sibling.return = a.return;\n a = a.sibling;\n }\n d &= 1;\n }\n I(P, d);\n if (0 === (b.mode & 2)) b.memoizedState = null;else switch (e) {\n case \"forwards\":\n c = b.child;\n for (e = null; null !== c;) a = c.alternate, null !== a && null === ih(a) && (e = c), c = c.sibling;\n c = e;\n null === c ? (e = b.child, b.child = null) : (e = c.sibling, c.sibling = null);\n zi(b, !1, e, c, f, b.lastEffect);\n break;\n case \"backwards\":\n c = null;\n e = b.child;\n for (b.child = null; null !== e;) {\n a = e.alternate;\n if (null !== a && null === ih(a)) {\n b.child = e;\n break;\n }\n a = e.sibling;\n e.sibling = c;\n c = e;\n e = a;\n }\n zi(b, !0, c, null, f, b.lastEffect);\n break;\n case \"together\":\n zi(b, !1, null, null, void 0, b.lastEffect);\n break;\n default:\n b.memoizedState = null;\n }\n return b.child;\n}\nfunction hi(a, b, c) {\n null !== a && (b.dependencies = a.dependencies);\n Dg |= b.lanes;\n if (0 !== (c & b.childLanes)) {\n if (null !== a && b.child !== a.child) throw Error(y(153));\n if (null !== b.child) {\n a = b.child;\n c = Tg(a, a.pendingProps);\n b.child = c;\n for (c.return = b; null !== a.sibling;) a = a.sibling, c = c.sibling = Tg(a, a.pendingProps), c.return = b;\n c.sibling = null;\n }\n return b.child;\n }\n return null;\n}\nvar Bi, Ci, Di, Ei;\nBi = function (a, b) {\n for (var c = b.child; null !== c;) {\n if (5 === c.tag || 6 === c.tag) a.appendChild(c.stateNode);else if (4 !== c.tag && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n for (; null === c.sibling;) {\n if (null === c.return || c.return === b) return;\n c = c.return;\n }\n c.sibling.return = c.return;\n c = c.sibling;\n }\n};\nCi = function () {};\nDi = function (a, b, c, d) {\n var e = a.memoizedProps;\n if (e !== d) {\n a = b.stateNode;\n dh(ah.current);\n var f = null;\n switch (c) {\n case \"input\":\n e = Ya(a, e);\n d = Ya(a, d);\n f = [];\n break;\n case \"option\":\n e = eb(a, e);\n d = eb(a, d);\n f = [];\n break;\n case \"select\":\n e = m({}, e, {\n value: void 0\n });\n d = m({}, d, {\n value: void 0\n });\n f = [];\n break;\n case \"textarea\":\n e = gb(a, e);\n d = gb(a, d);\n f = [];\n break;\n default:\n \"function\" !== typeof e.onClick && \"function\" === typeof d.onClick && (a.onclick = jf);\n }\n vb(c, d);\n var g;\n c = null;\n for (l in e) if (!d.hasOwnProperty(l) && e.hasOwnProperty(l) && null != e[l]) if (\"style\" === l) {\n var h = e[l];\n for (g in h) h.hasOwnProperty(g) && (c || (c = {}), c[g] = \"\");\n } else \"dangerouslySetInnerHTML\" !== l && \"children\" !== l && \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && \"autoFocus\" !== l && (ca.hasOwnProperty(l) ? f || (f = []) : (f = f || []).push(l, null));\n for (l in d) {\n var k = d[l];\n h = null != e ? e[l] : void 0;\n if (d.hasOwnProperty(l) && k !== h && (null != k || null != h)) if (\"style\" === l) {\n if (h) {\n for (g in h) !h.hasOwnProperty(g) || k && k.hasOwnProperty(g) || (c || (c = {}), c[g] = \"\");\n for (g in k) k.hasOwnProperty(g) && h[g] !== k[g] && (c || (c = {}), c[g] = k[g]);\n } else c || (f || (f = []), f.push(l, c)), c = k;\n } else \"dangerouslySetInnerHTML\" === l ? (k = k ? k.__html : void 0, h = h ? h.__html : void 0, null != k && h !== k && (f = f || []).push(l, k)) : \"children\" === l ? \"string\" !== typeof k && \"number\" !== typeof k || (f = f || []).push(l, \"\" + k) : \"suppressContentEditableWarning\" !== l && \"suppressHydrationWarning\" !== l && (ca.hasOwnProperty(l) ? (null != k && \"onScroll\" === l && G(\"scroll\", a), f || h === k || (f = [])) : \"object\" === typeof k && null !== k && k.$$typeof === Ga ? k.toString() : (f = f || []).push(l, k));\n }\n c && (f = f || []).push(\"style\", c);\n var l = f;\n if (b.updateQueue = l) b.flags |= 4;\n }\n};\nEi = function (a, b, c, d) {\n c !== d && (b.flags |= 4);\n};\nfunction Fi(a, b) {\n if (!lh) switch (a.tailMode) {\n case \"hidden\":\n b = a.tail;\n for (var c = null; null !== b;) null !== b.alternate && (c = b), b = b.sibling;\n null === c ? a.tail = null : c.sibling = null;\n break;\n case \"collapsed\":\n c = a.tail;\n for (var d = null; null !== c;) null !== c.alternate && (d = c), c = c.sibling;\n null === d ? b || null === a.tail ? a.tail = null : a.tail.sibling = null : d.sibling = null;\n }\n}\nfunction Gi(a, b, c) {\n var d = b.pendingProps;\n switch (b.tag) {\n case 2:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return null;\n case 1:\n return Ff(b.type) && Gf(), null;\n case 3:\n fh();\n H(N);\n H(M);\n uh();\n d = b.stateNode;\n d.pendingContext && (d.context = d.pendingContext, d.pendingContext = null);\n if (null === a || null === a.child) rh(b) ? b.flags |= 4 : d.hydrate || (b.flags |= 256);\n Ci(b);\n return null;\n case 5:\n hh(b);\n var e = dh(ch.current);\n c = b.type;\n if (null !== a && null != b.stateNode) Di(a, b, c, d, e), a.ref !== b.ref && (b.flags |= 128);else {\n if (!d) {\n if (null === b.stateNode) throw Error(y(166));\n return null;\n }\n a = dh(ah.current);\n if (rh(b)) {\n d = b.stateNode;\n c = b.type;\n var f = b.memoizedProps;\n d[wf] = b;\n d[xf] = f;\n switch (c) {\n case \"dialog\":\n G(\"cancel\", d);\n G(\"close\", d);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n G(\"load\", d);\n break;\n case \"video\":\n case \"audio\":\n for (a = 0; a < Xe.length; a++) G(Xe[a], d);\n break;\n case \"source\":\n G(\"error\", d);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n G(\"error\", d);\n G(\"load\", d);\n break;\n case \"details\":\n G(\"toggle\", d);\n break;\n case \"input\":\n Za(d, f);\n G(\"invalid\", d);\n break;\n case \"select\":\n d._wrapperState = {\n wasMultiple: !!f.multiple\n };\n G(\"invalid\", d);\n break;\n case \"textarea\":\n hb(d, f), G(\"invalid\", d);\n }\n vb(c, f);\n a = null;\n for (var g in f) f.hasOwnProperty(g) && (e = f[g], \"children\" === g ? \"string\" === typeof e ? d.textContent !== e && (a = [\"children\", e]) : \"number\" === typeof e && d.textContent !== \"\" + e && (a = [\"children\", \"\" + e]) : ca.hasOwnProperty(g) && null != e && \"onScroll\" === g && G(\"scroll\", d));\n switch (c) {\n case \"input\":\n Va(d);\n cb(d, f, !0);\n break;\n case \"textarea\":\n Va(d);\n jb(d);\n break;\n case \"select\":\n case \"option\":\n break;\n default:\n \"function\" === typeof f.onClick && (d.onclick = jf);\n }\n d = a;\n b.updateQueue = d;\n null !== d && (b.flags |= 4);\n } else {\n g = 9 === e.nodeType ? e : e.ownerDocument;\n a === kb.html && (a = lb(c));\n a === kb.html ? \"script\" === c ? (a = g.createElement(\"div\"), a.innerHTML = \"<script>\\x3c/script>\", a = a.removeChild(a.firstChild)) : \"string\" === typeof d.is ? a = g.createElement(c, {\n is: d.is\n }) : (a = g.createElement(c), \"select\" === c && (g = a, d.multiple ? g.multiple = !0 : d.size && (g.size = d.size))) : a = g.createElementNS(a, c);\n a[wf] = b;\n a[xf] = d;\n Bi(a, b, !1, !1);\n b.stateNode = a;\n g = wb(c, d);\n switch (c) {\n case \"dialog\":\n G(\"cancel\", a);\n G(\"close\", a);\n e = d;\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n G(\"load\", a);\n e = d;\n break;\n case \"video\":\n case \"audio\":\n for (e = 0; e < Xe.length; e++) G(Xe[e], a);\n e = d;\n break;\n case \"source\":\n G(\"error\", a);\n e = d;\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n G(\"error\", a);\n G(\"load\", a);\n e = d;\n break;\n case \"details\":\n G(\"toggle\", a);\n e = d;\n break;\n case \"input\":\n Za(a, d);\n e = Ya(a, d);\n G(\"invalid\", a);\n break;\n case \"option\":\n e = eb(a, d);\n break;\n case \"select\":\n a._wrapperState = {\n wasMultiple: !!d.multiple\n };\n e = m({}, d, {\n value: void 0\n });\n G(\"invalid\", a);\n break;\n case \"textarea\":\n hb(a, d);\n e = gb(a, d);\n G(\"invalid\", a);\n break;\n default:\n e = d;\n }\n vb(c, e);\n var h = e;\n for (f in h) if (h.hasOwnProperty(f)) {\n var k = h[f];\n \"style\" === f ? tb(a, k) : \"dangerouslySetInnerHTML\" === f ? (k = k ? k.__html : void 0, null != k && ob(a, k)) : \"children\" === f ? \"string\" === typeof k ? (\"textarea\" !== c || \"\" !== k) && pb(a, k) : \"number\" === typeof k && pb(a, \"\" + k) : \"suppressContentEditableWarning\" !== f && \"suppressHydrationWarning\" !== f && \"autoFocus\" !== f && (ca.hasOwnProperty(f) ? null != k && \"onScroll\" === f && G(\"scroll\", a) : null != k && qa(a, f, k, g));\n }\n switch (c) {\n case \"input\":\n Va(a);\n cb(a, d, !1);\n break;\n case \"textarea\":\n Va(a);\n jb(a);\n break;\n case \"option\":\n null != d.value && a.setAttribute(\"value\", \"\" + Sa(d.value));\n break;\n case \"select\":\n a.multiple = !!d.multiple;\n f = d.value;\n null != f ? fb(a, !!d.multiple, f, !1) : null != d.defaultValue && fb(a, !!d.multiple, d.defaultValue, !0);\n break;\n default:\n \"function\" === typeof e.onClick && (a.onclick = jf);\n }\n mf(c, d) && (b.flags |= 4);\n }\n null !== b.ref && (b.flags |= 128);\n }\n return null;\n case 6:\n if (a && null != b.stateNode) Ei(a, b, a.memoizedProps, d);else {\n if (\"string\" !== typeof d && null === b.stateNode) throw Error(y(166));\n c = dh(ch.current);\n dh(ah.current);\n rh(b) ? (d = b.stateNode, c = b.memoizedProps, d[wf] = b, d.nodeValue !== c && (b.flags |= 4)) : (d = (9 === c.nodeType ? c : c.ownerDocument).createTextNode(d), d[wf] = b, b.stateNode = d);\n }\n return null;\n case 13:\n H(P);\n d = b.memoizedState;\n if (0 !== (b.flags & 64)) return b.lanes = c, b;\n d = null !== d;\n c = !1;\n null === a ? void 0 !== b.memoizedProps.fallback && rh(b) : c = null !== a.memoizedState;\n if (d && !c && 0 !== (b.mode & 2)) if (null === a && !0 !== b.memoizedProps.unstable_avoidThisFallback || 0 !== (P.current & 1)) 0 === V && (V = 3);else {\n if (0 === V || 3 === V) V = 4;\n null === U || 0 === (Dg & 134217727) && 0 === (Hi & 134217727) || Ii(U, W);\n }\n if (d || c) b.flags |= 4;\n return null;\n case 4:\n return fh(), Ci(b), null === a && cf(b.stateNode.containerInfo), null;\n case 10:\n return rg(b), null;\n case 17:\n return Ff(b.type) && Gf(), null;\n case 19:\n H(P);\n d = b.memoizedState;\n if (null === d) return null;\n f = 0 !== (b.flags & 64);\n g = d.rendering;\n if (null === g) {\n if (f) Fi(d, !1);else {\n if (0 !== V || null !== a && 0 !== (a.flags & 64)) for (a = b.child; null !== a;) {\n g = ih(a);\n if (null !== g) {\n b.flags |= 64;\n Fi(d, !1);\n f = g.updateQueue;\n null !== f && (b.updateQueue = f, b.flags |= 4);\n null === d.lastEffect && (b.firstEffect = null);\n b.lastEffect = d.lastEffect;\n d = c;\n for (c = b.child; null !== c;) f = c, a = d, f.flags &= 2, f.nextEffect = null, f.firstEffect = null, f.lastEffect = null, g = f.alternate, null === g ? (f.childLanes = 0, f.lanes = a, f.child = null, f.memoizedProps = null, f.memoizedState = null, f.updateQueue = null, f.dependencies = null, f.stateNode = null) : (f.childLanes = g.childLanes, f.lanes = g.lanes, f.child = g.child, f.memoizedProps = g.memoizedProps, f.memoizedState = g.memoizedState, f.updateQueue = g.updateQueue, f.type = g.type, a = g.dependencies, f.dependencies = null === a ? null : {\n lanes: a.lanes,\n firstContext: a.firstContext\n }), c = c.sibling;\n I(P, P.current & 1 | 2);\n return b.child;\n }\n a = a.sibling;\n }\n null !== d.tail && O() > Ji && (b.flags |= 64, f = !0, Fi(d, !1), b.lanes = 33554432);\n }\n } else {\n if (!f) if (a = ih(g), null !== a) {\n if (b.flags |= 64, f = !0, c = a.updateQueue, null !== c && (b.updateQueue = c, b.flags |= 4), Fi(d, !0), null === d.tail && \"hidden\" === d.tailMode && !g.alternate && !lh) return b = b.lastEffect = d.lastEffect, null !== b && (b.nextEffect = null), null;\n } else 2 * O() - d.renderingStartTime > Ji && 1073741824 !== c && (b.flags |= 64, f = !0, Fi(d, !1), b.lanes = 33554432);\n d.isBackwards ? (g.sibling = b.child, b.child = g) : (c = d.last, null !== c ? c.sibling = g : b.child = g, d.last = g);\n }\n return null !== d.tail ? (c = d.tail, d.rendering = c, d.tail = c.sibling, d.lastEffect = b.lastEffect, d.renderingStartTime = O(), c.sibling = null, b = P.current, I(P, f ? b & 1 | 2 : b & 1), c) : null;\n case 23:\n case 24:\n return Ki(), null !== a && null !== a.memoizedState !== (null !== b.memoizedState) && \"unstable-defer-without-hiding\" !== d.mode && (b.flags |= 4), null;\n }\n throw Error(y(156, b.tag));\n}\nfunction Li(a) {\n switch (a.tag) {\n case 1:\n Ff(a.type) && Gf();\n var b = a.flags;\n return b & 4096 ? (a.flags = b & -4097 | 64, a) : null;\n case 3:\n fh();\n H(N);\n H(M);\n uh();\n b = a.flags;\n if (0 !== (b & 64)) throw Error(y(285));\n a.flags = b & -4097 | 64;\n return a;\n case 5:\n return hh(a), null;\n case 13:\n return H(P), b = a.flags, b & 4096 ? (a.flags = b & -4097 | 64, a) : null;\n case 19:\n return H(P), null;\n case 4:\n return fh(), null;\n case 10:\n return rg(a), null;\n case 23:\n case 24:\n return Ki(), null;\n default:\n return null;\n }\n}\nfunction Mi(a, b) {\n try {\n var c = \"\",\n d = b;\n do c += Qa(d), d = d.return; while (d);\n var e = c;\n } catch (f) {\n e = \"\\nError generating stack: \" + f.message + \"\\n\" + f.stack;\n }\n return {\n value: a,\n source: b,\n stack: e\n };\n}\nfunction Ni(a, b) {\n try {\n console.error(b.value);\n } catch (c) {\n setTimeout(function () {\n throw c;\n });\n }\n}\nvar Oi = \"function\" === typeof WeakMap ? WeakMap : Map;\nfunction Pi(a, b, c) {\n c = zg(-1, c);\n c.tag = 3;\n c.payload = {\n element: null\n };\n var d = b.value;\n c.callback = function () {\n Qi || (Qi = !0, Ri = d);\n Ni(a, b);\n };\n return c;\n}\nfunction Si(a, b, c) {\n c = zg(-1, c);\n c.tag = 3;\n var d = a.type.getDerivedStateFromError;\n if (\"function\" === typeof d) {\n var e = b.value;\n c.payload = function () {\n Ni(a, b);\n return d(e);\n };\n }\n var f = a.stateNode;\n null !== f && \"function\" === typeof f.componentDidCatch && (c.callback = function () {\n \"function\" !== typeof d && (null === Ti ? Ti = new Set([this]) : Ti.add(this), Ni(a, b));\n var c = b.stack;\n this.componentDidCatch(b.value, {\n componentStack: null !== c ? c : \"\"\n });\n });\n return c;\n}\nvar Ui = \"function\" === typeof WeakSet ? WeakSet : Set;\nfunction Vi(a) {\n var b = a.ref;\n if (null !== b) if (\"function\" === typeof b) try {\n b(null);\n } catch (c) {\n Wi(a, c);\n } else b.current = null;\n}\nfunction Xi(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 15:\n case 22:\n return;\n case 1:\n if (b.flags & 256 && null !== a) {\n var c = a.memoizedProps,\n d = a.memoizedState;\n a = b.stateNode;\n b = a.getSnapshotBeforeUpdate(b.elementType === b.type ? c : lg(b.type, c), d);\n a.__reactInternalSnapshotBeforeUpdate = b;\n }\n return;\n case 3:\n b.flags & 256 && qf(b.stateNode.containerInfo);\n return;\n case 5:\n case 6:\n case 4:\n case 17:\n return;\n }\n throw Error(y(163));\n}\nfunction Yi(a, b, c) {\n switch (c.tag) {\n case 0:\n case 11:\n case 15:\n case 22:\n b = c.updateQueue;\n b = null !== b ? b.lastEffect : null;\n if (null !== b) {\n a = b = b.next;\n do {\n if (3 === (a.tag & 3)) {\n var d = a.create;\n a.destroy = d();\n }\n a = a.next;\n } while (a !== b);\n }\n b = c.updateQueue;\n b = null !== b ? b.lastEffect : null;\n if (null !== b) {\n a = b = b.next;\n do {\n var e = a;\n d = e.next;\n e = e.tag;\n 0 !== (e & 4) && 0 !== (e & 1) && (Zi(c, a), $i(c, a));\n a = d;\n } while (a !== b);\n }\n return;\n case 1:\n a = c.stateNode;\n c.flags & 4 && (null === b ? a.componentDidMount() : (d = c.elementType === c.type ? b.memoizedProps : lg(c.type, b.memoizedProps), a.componentDidUpdate(d, b.memoizedState, a.__reactInternalSnapshotBeforeUpdate)));\n b = c.updateQueue;\n null !== b && Eg(c, b, a);\n return;\n case 3:\n b = c.updateQueue;\n if (null !== b) {\n a = null;\n if (null !== c.child) switch (c.child.tag) {\n case 5:\n a = c.child.stateNode;\n break;\n case 1:\n a = c.child.stateNode;\n }\n Eg(c, b, a);\n }\n return;\n case 5:\n a = c.stateNode;\n null === b && c.flags & 4 && mf(c.type, c.memoizedProps) && a.focus();\n return;\n case 6:\n return;\n case 4:\n return;\n case 12:\n return;\n case 13:\n null === c.memoizedState && (c = c.alternate, null !== c && (c = c.memoizedState, null !== c && (c = c.dehydrated, null !== c && Cc(c))));\n return;\n case 19:\n case 17:\n case 20:\n case 21:\n case 23:\n case 24:\n return;\n }\n throw Error(y(163));\n}\nfunction aj(a, b) {\n for (var c = a;;) {\n if (5 === c.tag) {\n var d = c.stateNode;\n if (b) d = d.style, \"function\" === typeof d.setProperty ? d.setProperty(\"display\", \"none\", \"important\") : d.display = \"none\";else {\n d = c.stateNode;\n var e = c.memoizedProps.style;\n e = void 0 !== e && null !== e && e.hasOwnProperty(\"display\") ? e.display : null;\n d.style.display = sb(\"display\", e);\n }\n } else if (6 === c.tag) c.stateNode.nodeValue = b ? \"\" : c.memoizedProps;else if ((23 !== c.tag && 24 !== c.tag || null === c.memoizedState || c === a) && null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === a) break;\n for (; null === c.sibling;) {\n if (null === c.return || c.return === a) return;\n c = c.return;\n }\n c.sibling.return = c.return;\n c = c.sibling;\n }\n}\nfunction bj(a, b) {\n if (Mf && \"function\" === typeof Mf.onCommitFiberUnmount) try {\n Mf.onCommitFiberUnmount(Lf, b);\n } catch (f) {}\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n case 22:\n a = b.updateQueue;\n if (null !== a && (a = a.lastEffect, null !== a)) {\n var c = a = a.next;\n do {\n var d = c,\n e = d.destroy;\n d = d.tag;\n if (void 0 !== e) if (0 !== (d & 4)) Zi(b, c);else {\n d = b;\n try {\n e();\n } catch (f) {\n Wi(d, f);\n }\n }\n c = c.next;\n } while (c !== a);\n }\n break;\n case 1:\n Vi(b);\n a = b.stateNode;\n if (\"function\" === typeof a.componentWillUnmount) try {\n a.props = b.memoizedProps, a.state = b.memoizedState, a.componentWillUnmount();\n } catch (f) {\n Wi(b, f);\n }\n break;\n case 5:\n Vi(b);\n break;\n case 4:\n cj(a, b);\n }\n}\nfunction dj(a) {\n a.alternate = null;\n a.child = null;\n a.dependencies = null;\n a.firstEffect = null;\n a.lastEffect = null;\n a.memoizedProps = null;\n a.memoizedState = null;\n a.pendingProps = null;\n a.return = null;\n a.updateQueue = null;\n}\nfunction ej(a) {\n return 5 === a.tag || 3 === a.tag || 4 === a.tag;\n}\nfunction fj(a) {\n a: {\n for (var b = a.return; null !== b;) {\n if (ej(b)) break a;\n b = b.return;\n }\n throw Error(y(160));\n }\n var c = b;\n b = c.stateNode;\n switch (c.tag) {\n case 5:\n var d = !1;\n break;\n case 3:\n b = b.containerInfo;\n d = !0;\n break;\n case 4:\n b = b.containerInfo;\n d = !0;\n break;\n default:\n throw Error(y(161));\n }\n c.flags & 16 && (pb(b, \"\"), c.flags &= -17);\n a: b: for (c = a;;) {\n for (; null === c.sibling;) {\n if (null === c.return || ej(c.return)) {\n c = null;\n break a;\n }\n c = c.return;\n }\n c.sibling.return = c.return;\n for (c = c.sibling; 5 !== c.tag && 6 !== c.tag && 18 !== c.tag;) {\n if (c.flags & 2) continue b;\n if (null === c.child || 4 === c.tag) continue b;else c.child.return = c, c = c.child;\n }\n if (!(c.flags & 2)) {\n c = c.stateNode;\n break a;\n }\n }\n d ? gj(a, c, b) : hj(a, c, b);\n}\nfunction gj(a, b, c) {\n var d = a.tag,\n e = 5 === d || 6 === d;\n if (e) a = e ? a.stateNode : a.stateNode.instance, b ? 8 === c.nodeType ? c.parentNode.insertBefore(a, b) : c.insertBefore(a, b) : (8 === c.nodeType ? (b = c.parentNode, b.insertBefore(a, c)) : (b = c, b.appendChild(a)), c = c._reactRootContainer, null !== c && void 0 !== c || null !== b.onclick || (b.onclick = jf));else if (4 !== d && (a = a.child, null !== a)) for (gj(a, b, c), a = a.sibling; null !== a;) gj(a, b, c), a = a.sibling;\n}\nfunction hj(a, b, c) {\n var d = a.tag,\n e = 5 === d || 6 === d;\n if (e) a = e ? a.stateNode : a.stateNode.instance, b ? c.insertBefore(a, b) : c.appendChild(a);else if (4 !== d && (a = a.child, null !== a)) for (hj(a, b, c), a = a.sibling; null !== a;) hj(a, b, c), a = a.sibling;\n}\nfunction cj(a, b) {\n for (var c = b, d = !1, e, f;;) {\n if (!d) {\n d = c.return;\n a: for (;;) {\n if (null === d) throw Error(y(160));\n e = d.stateNode;\n switch (d.tag) {\n case 5:\n f = !1;\n break a;\n case 3:\n e = e.containerInfo;\n f = !0;\n break a;\n case 4:\n e = e.containerInfo;\n f = !0;\n break a;\n }\n d = d.return;\n }\n d = !0;\n }\n if (5 === c.tag || 6 === c.tag) {\n a: for (var g = a, h = c, k = h;;) if (bj(g, k), null !== k.child && 4 !== k.tag) k.child.return = k, k = k.child;else {\n if (k === h) break a;\n for (; null === k.sibling;) {\n if (null === k.return || k.return === h) break a;\n k = k.return;\n }\n k.sibling.return = k.return;\n k = k.sibling;\n }\n f ? (g = e, h = c.stateNode, 8 === g.nodeType ? g.parentNode.removeChild(h) : g.removeChild(h)) : e.removeChild(c.stateNode);\n } else if (4 === c.tag) {\n if (null !== c.child) {\n e = c.stateNode.containerInfo;\n f = !0;\n c.child.return = c;\n c = c.child;\n continue;\n }\n } else if (bj(a, c), null !== c.child) {\n c.child.return = c;\n c = c.child;\n continue;\n }\n if (c === b) break;\n for (; null === c.sibling;) {\n if (null === c.return || c.return === b) return;\n c = c.return;\n 4 === c.tag && (d = !1);\n }\n c.sibling.return = c.return;\n c = c.sibling;\n }\n}\nfunction ij(a, b) {\n switch (b.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n case 22:\n var c = b.updateQueue;\n c = null !== c ? c.lastEffect : null;\n if (null !== c) {\n var d = c = c.next;\n do 3 === (d.tag & 3) && (a = d.destroy, d.destroy = void 0, void 0 !== a && a()), d = d.next; while (d !== c);\n }\n return;\n case 1:\n return;\n case 5:\n c = b.stateNode;\n if (null != c) {\n d = b.memoizedProps;\n var e = null !== a ? a.memoizedProps : d;\n a = b.type;\n var f = b.updateQueue;\n b.updateQueue = null;\n if (null !== f) {\n c[xf] = d;\n \"input\" === a && \"radio\" === d.type && null != d.name && $a(c, d);\n wb(a, e);\n b = wb(a, d);\n for (e = 0; e < f.length; e += 2) {\n var g = f[e],\n h = f[e + 1];\n \"style\" === g ? tb(c, h) : \"dangerouslySetInnerHTML\" === g ? ob(c, h) : \"children\" === g ? pb(c, h) : qa(c, g, h, b);\n }\n switch (a) {\n case \"input\":\n ab(c, d);\n break;\n case \"textarea\":\n ib(c, d);\n break;\n case \"select\":\n a = c._wrapperState.wasMultiple, c._wrapperState.wasMultiple = !!d.multiple, f = d.value, null != f ? fb(c, !!d.multiple, f, !1) : a !== !!d.multiple && (null != d.defaultValue ? fb(c, !!d.multiple, d.defaultValue, !0) : fb(c, !!d.multiple, d.multiple ? [] : \"\", !1));\n }\n }\n }\n return;\n case 6:\n if (null === b.stateNode) throw Error(y(162));\n b.stateNode.nodeValue = b.memoizedProps;\n return;\n case 3:\n c = b.stateNode;\n c.hydrate && (c.hydrate = !1, Cc(c.containerInfo));\n return;\n case 12:\n return;\n case 13:\n null !== b.memoizedState && (jj = O(), aj(b.child, !0));\n kj(b);\n return;\n case 19:\n kj(b);\n return;\n case 17:\n return;\n case 23:\n case 24:\n aj(b, null !== b.memoizedState);\n return;\n }\n throw Error(y(163));\n}\nfunction kj(a) {\n var b = a.updateQueue;\n if (null !== b) {\n a.updateQueue = null;\n var c = a.stateNode;\n null === c && (c = a.stateNode = new Ui());\n b.forEach(function (b) {\n var d = lj.bind(null, a, b);\n c.has(b) || (c.add(b), b.then(d, d));\n });\n }\n}\nfunction mj(a, b) {\n return null !== a && (a = a.memoizedState, null === a || null !== a.dehydrated) ? (b = b.memoizedState, null !== b && null === b.dehydrated) : !1;\n}\nvar nj = Math.ceil,\n oj = ra.ReactCurrentDispatcher,\n pj = ra.ReactCurrentOwner,\n X = 0,\n U = null,\n Y = null,\n W = 0,\n qj = 0,\n rj = Bf(0),\n V = 0,\n sj = null,\n tj = 0,\n Dg = 0,\n Hi = 0,\n uj = 0,\n vj = null,\n jj = 0,\n Ji = Infinity;\nfunction wj() {\n Ji = O() + 500;\n}\nvar Z = null,\n Qi = !1,\n Ri = null,\n Ti = null,\n xj = !1,\n yj = null,\n zj = 90,\n Aj = [],\n Bj = [],\n Cj = null,\n Dj = 0,\n Ej = null,\n Fj = -1,\n Gj = 0,\n Hj = 0,\n Ij = null,\n Jj = !1;\nfunction Hg() {\n return 0 !== (X & 48) ? O() : -1 !== Fj ? Fj : Fj = O();\n}\nfunction Ig(a) {\n a = a.mode;\n if (0 === (a & 2)) return 1;\n if (0 === (a & 4)) return 99 === eg() ? 1 : 2;\n 0 === Gj && (Gj = tj);\n if (0 !== kg.transition) {\n 0 !== Hj && (Hj = null !== vj ? vj.pendingLanes : 0);\n a = Gj;\n var b = 4186112 & ~Hj;\n b &= -b;\n 0 === b && (a = 4186112 & ~a, b = a & -a, 0 === b && (b = 8192));\n return b;\n }\n a = eg();\n 0 !== (X & 4) && 98 === a ? a = Xc(12, Gj) : (a = Sc(a), a = Xc(a, Gj));\n return a;\n}\nfunction Jg(a, b, c) {\n if (50 < Dj) throw Dj = 0, Ej = null, Error(y(185));\n a = Kj(a, b);\n if (null === a) return null;\n $c(a, b, c);\n a === U && (Hi |= b, 4 === V && Ii(a, W));\n var d = eg();\n 1 === b ? 0 !== (X & 8) && 0 === (X & 48) ? Lj(a) : (Mj(a, c), 0 === X && (wj(), ig())) : (0 === (X & 4) || 98 !== d && 99 !== d || (null === Cj ? Cj = new Set([a]) : Cj.add(a)), Mj(a, c));\n vj = a;\n}\nfunction Kj(a, b) {\n a.lanes |= b;\n var c = a.alternate;\n null !== c && (c.lanes |= b);\n c = a;\n for (a = a.return; null !== a;) a.childLanes |= b, c = a.alternate, null !== c && (c.childLanes |= b), c = a, a = a.return;\n return 3 === c.tag ? c.stateNode : null;\n}\nfunction Mj(a, b) {\n for (var c = a.callbackNode, d = a.suspendedLanes, e = a.pingedLanes, f = a.expirationTimes, g = a.pendingLanes; 0 < g;) {\n var h = 31 - Vc(g),\n k = 1 << h,\n l = f[h];\n if (-1 === l) {\n if (0 === (k & d) || 0 !== (k & e)) {\n l = b;\n Rc(k);\n var n = F;\n f[h] = 10 <= n ? l + 250 : 6 <= n ? l + 5E3 : -1;\n }\n } else l <= b && (a.expiredLanes |= k);\n g &= ~k;\n }\n d = Uc(a, a === U ? W : 0);\n b = F;\n if (0 === d) null !== c && (c !== Zf && Pf(c), a.callbackNode = null, a.callbackPriority = 0);else {\n if (null !== c) {\n if (a.callbackPriority === b) return;\n c !== Zf && Pf(c);\n }\n 15 === b ? (c = Lj.bind(null, a), null === ag ? (ag = [c], bg = Of(Uf, jg)) : ag.push(c), c = Zf) : 14 === b ? c = hg(99, Lj.bind(null, a)) : (c = Tc(b), c = hg(c, Nj.bind(null, a)));\n a.callbackPriority = b;\n a.callbackNode = c;\n }\n}\nfunction Nj(a) {\n Fj = -1;\n Hj = Gj = 0;\n if (0 !== (X & 48)) throw Error(y(327));\n var b = a.callbackNode;\n if (Oj() && a.callbackNode !== b) return null;\n var c = Uc(a, a === U ? W : 0);\n if (0 === c) return null;\n var d = c;\n var e = X;\n X |= 16;\n var f = Pj();\n if (U !== a || W !== d) wj(), Qj(a, d);\n do try {\n Rj();\n break;\n } catch (h) {\n Sj(a, h);\n } while (1);\n qg();\n oj.current = f;\n X = e;\n null !== Y ? d = 0 : (U = null, W = 0, d = V);\n if (0 !== (tj & Hi)) Qj(a, 0);else if (0 !== d) {\n 2 === d && (X |= 64, a.hydrate && (a.hydrate = !1, qf(a.containerInfo)), c = Wc(a), 0 !== c && (d = Tj(a, c)));\n if (1 === d) throw b = sj, Qj(a, 0), Ii(a, c), Mj(a, O()), b;\n a.finishedWork = a.current.alternate;\n a.finishedLanes = c;\n switch (d) {\n case 0:\n case 1:\n throw Error(y(345));\n case 2:\n Uj(a);\n break;\n case 3:\n Ii(a, c);\n if ((c & 62914560) === c && (d = jj + 500 - O(), 10 < d)) {\n if (0 !== Uc(a, 0)) break;\n e = a.suspendedLanes;\n if ((e & c) !== c) {\n Hg();\n a.pingedLanes |= a.suspendedLanes & e;\n break;\n }\n a.timeoutHandle = of(Uj.bind(null, a), d);\n break;\n }\n Uj(a);\n break;\n case 4:\n Ii(a, c);\n if ((c & 4186112) === c) break;\n d = a.eventTimes;\n for (e = -1; 0 < c;) {\n var g = 31 - Vc(c);\n f = 1 << g;\n g = d[g];\n g > e && (e = g);\n c &= ~f;\n }\n c = e;\n c = O() - c;\n c = (120 > c ? 120 : 480 > c ? 480 : 1080 > c ? 1080 : 1920 > c ? 1920 : 3E3 > c ? 3E3 : 4320 > c ? 4320 : 1960 * nj(c / 1960)) - c;\n if (10 < c) {\n a.timeoutHandle = of(Uj.bind(null, a), c);\n break;\n }\n Uj(a);\n break;\n case 5:\n Uj(a);\n break;\n default:\n throw Error(y(329));\n }\n }\n Mj(a, O());\n return a.callbackNode === b ? Nj.bind(null, a) : null;\n}\nfunction Ii(a, b) {\n b &= ~uj;\n b &= ~Hi;\n a.suspendedLanes |= b;\n a.pingedLanes &= ~b;\n for (a = a.expirationTimes; 0 < b;) {\n var c = 31 - Vc(b),\n d = 1 << c;\n a[c] = -1;\n b &= ~d;\n }\n}\nfunction Lj(a) {\n if (0 !== (X & 48)) throw Error(y(327));\n Oj();\n if (a === U && 0 !== (a.expiredLanes & W)) {\n var b = W;\n var c = Tj(a, b);\n 0 !== (tj & Hi) && (b = Uc(a, b), c = Tj(a, b));\n } else b = Uc(a, 0), c = Tj(a, b);\n 0 !== a.tag && 2 === c && (X |= 64, a.hydrate && (a.hydrate = !1, qf(a.containerInfo)), b = Wc(a), 0 !== b && (c = Tj(a, b)));\n if (1 === c) throw c = sj, Qj(a, 0), Ii(a, b), Mj(a, O()), c;\n a.finishedWork = a.current.alternate;\n a.finishedLanes = b;\n Uj(a);\n Mj(a, O());\n return null;\n}\nfunction Vj() {\n if (null !== Cj) {\n var a = Cj;\n Cj = null;\n a.forEach(function (a) {\n a.expiredLanes |= 24 & a.pendingLanes;\n Mj(a, O());\n });\n }\n ig();\n}\nfunction Wj(a, b) {\n var c = X;\n X |= 1;\n try {\n return a(b);\n } finally {\n X = c, 0 === X && (wj(), ig());\n }\n}\nfunction Xj(a, b) {\n var c = X;\n X &= -2;\n X |= 8;\n try {\n return a(b);\n } finally {\n X = c, 0 === X && (wj(), ig());\n }\n}\nfunction ni(a, b) {\n I(rj, qj);\n qj |= b;\n tj |= b;\n}\nfunction Ki() {\n qj = rj.current;\n H(rj);\n}\nfunction Qj(a, b) {\n a.finishedWork = null;\n a.finishedLanes = 0;\n var c = a.timeoutHandle;\n -1 !== c && (a.timeoutHandle = -1, pf(c));\n if (null !== Y) for (c = Y.return; null !== c;) {\n var d = c;\n switch (d.tag) {\n case 1:\n d = d.type.childContextTypes;\n null !== d && void 0 !== d && Gf();\n break;\n case 3:\n fh();\n H(N);\n H(M);\n uh();\n break;\n case 5:\n hh(d);\n break;\n case 4:\n fh();\n break;\n case 13:\n H(P);\n break;\n case 19:\n H(P);\n break;\n case 10:\n rg(d);\n break;\n case 23:\n case 24:\n Ki();\n }\n c = c.return;\n }\n U = a;\n Y = Tg(a.current, null);\n W = qj = tj = b;\n V = 0;\n sj = null;\n uj = Hi = Dg = 0;\n}\nfunction Sj(a, b) {\n do {\n var c = Y;\n try {\n qg();\n vh.current = Gh;\n if (yh) {\n for (var d = R.memoizedState; null !== d;) {\n var e = d.queue;\n null !== e && (e.pending = null);\n d = d.next;\n }\n yh = !1;\n }\n xh = 0;\n T = S = R = null;\n zh = !1;\n pj.current = null;\n if (null === c || null === c.return) {\n V = 1;\n sj = b;\n Y = null;\n break;\n }\n a: {\n var f = a,\n g = c.return,\n h = c,\n k = b;\n b = W;\n h.flags |= 2048;\n h.firstEffect = h.lastEffect = null;\n if (null !== k && \"object\" === typeof k && \"function\" === typeof k.then) {\n var l = k;\n if (0 === (h.mode & 2)) {\n var n = h.alternate;\n n ? (h.updateQueue = n.updateQueue, h.memoizedState = n.memoizedState, h.lanes = n.lanes) : (h.updateQueue = null, h.memoizedState = null);\n }\n var A = 0 !== (P.current & 1),\n p = g;\n do {\n var C;\n if (C = 13 === p.tag) {\n var x = p.memoizedState;\n if (null !== x) C = null !== x.dehydrated ? !0 : !1;else {\n var w = p.memoizedProps;\n C = void 0 === w.fallback ? !1 : !0 !== w.unstable_avoidThisFallback ? !0 : A ? !1 : !0;\n }\n }\n if (C) {\n var z = p.updateQueue;\n if (null === z) {\n var u = new Set();\n u.add(l);\n p.updateQueue = u;\n } else z.add(l);\n if (0 === (p.mode & 2)) {\n p.flags |= 64;\n h.flags |= 16384;\n h.flags &= -2981;\n if (1 === h.tag) if (null === h.alternate) h.tag = 17;else {\n var t = zg(-1, 1);\n t.tag = 2;\n Ag(h, t);\n }\n h.lanes |= 1;\n break a;\n }\n k = void 0;\n h = b;\n var q = f.pingCache;\n null === q ? (q = f.pingCache = new Oi(), k = new Set(), q.set(l, k)) : (k = q.get(l), void 0 === k && (k = new Set(), q.set(l, k)));\n if (!k.has(h)) {\n k.add(h);\n var v = Yj.bind(null, f, l, h);\n l.then(v, v);\n }\n p.flags |= 4096;\n p.lanes = b;\n break a;\n }\n p = p.return;\n } while (null !== p);\n k = Error((Ra(h.type) || \"A React component\") + \" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\");\n }\n 5 !== V && (V = 2);\n k = Mi(k, h);\n p = g;\n do {\n switch (p.tag) {\n case 3:\n f = k;\n p.flags |= 4096;\n b &= -b;\n p.lanes |= b;\n var J = Pi(p, f, b);\n Bg(p, J);\n break a;\n case 1:\n f = k;\n var K = p.type,\n Q = p.stateNode;\n if (0 === (p.flags & 64) && (\"function\" === typeof K.getDerivedStateFromError || null !== Q && \"function\" === typeof Q.componentDidCatch && (null === Ti || !Ti.has(Q)))) {\n p.flags |= 4096;\n b &= -b;\n p.lanes |= b;\n var L = Si(p, f, b);\n Bg(p, L);\n break a;\n }\n }\n p = p.return;\n } while (null !== p);\n }\n Zj(c);\n } catch (va) {\n b = va;\n Y === c && null !== c && (Y = c = c.return);\n continue;\n }\n break;\n } while (1);\n}\nfunction Pj() {\n var a = oj.current;\n oj.current = Gh;\n return null === a ? Gh : a;\n}\nfunction Tj(a, b) {\n var c = X;\n X |= 16;\n var d = Pj();\n U === a && W === b || Qj(a, b);\n do try {\n ak();\n break;\n } catch (e) {\n Sj(a, e);\n } while (1);\n qg();\n X = c;\n oj.current = d;\n if (null !== Y) throw Error(y(261));\n U = null;\n W = 0;\n return V;\n}\nfunction ak() {\n for (; null !== Y;) bk(Y);\n}\nfunction Rj() {\n for (; null !== Y && !Qf();) bk(Y);\n}\nfunction bk(a) {\n var b = ck(a.alternate, a, qj);\n a.memoizedProps = a.pendingProps;\n null === b ? Zj(a) : Y = b;\n pj.current = null;\n}\nfunction Zj(a) {\n var b = a;\n do {\n var c = b.alternate;\n a = b.return;\n if (0 === (b.flags & 2048)) {\n c = Gi(c, b, qj);\n if (null !== c) {\n Y = c;\n return;\n }\n c = b;\n if (24 !== c.tag && 23 !== c.tag || null === c.memoizedState || 0 !== (qj & 1073741824) || 0 === (c.mode & 4)) {\n for (var d = 0, e = c.child; null !== e;) d |= e.lanes | e.childLanes, e = e.sibling;\n c.childLanes = d;\n }\n null !== a && 0 === (a.flags & 2048) && (null === a.firstEffect && (a.firstEffect = b.firstEffect), null !== b.lastEffect && (null !== a.lastEffect && (a.lastEffect.nextEffect = b.firstEffect), a.lastEffect = b.lastEffect), 1 < b.flags && (null !== a.lastEffect ? a.lastEffect.nextEffect = b : a.firstEffect = b, a.lastEffect = b));\n } else {\n c = Li(b);\n if (null !== c) {\n c.flags &= 2047;\n Y = c;\n return;\n }\n null !== a && (a.firstEffect = a.lastEffect = null, a.flags |= 2048);\n }\n b = b.sibling;\n if (null !== b) {\n Y = b;\n return;\n }\n Y = b = a;\n } while (null !== b);\n 0 === V && (V = 5);\n}\nfunction Uj(a) {\n var b = eg();\n gg(99, dk.bind(null, a, b));\n return null;\n}\nfunction dk(a, b) {\n do Oj(); while (null !== yj);\n if (0 !== (X & 48)) throw Error(y(327));\n var c = a.finishedWork;\n if (null === c) return null;\n a.finishedWork = null;\n a.finishedLanes = 0;\n if (c === a.current) throw Error(y(177));\n a.callbackNode = null;\n var d = c.lanes | c.childLanes,\n e = d,\n f = a.pendingLanes & ~e;\n a.pendingLanes = e;\n a.suspendedLanes = 0;\n a.pingedLanes = 0;\n a.expiredLanes &= e;\n a.mutableReadLanes &= e;\n a.entangledLanes &= e;\n e = a.entanglements;\n for (var g = a.eventTimes, h = a.expirationTimes; 0 < f;) {\n var k = 31 - Vc(f),\n l = 1 << k;\n e[k] = 0;\n g[k] = -1;\n h[k] = -1;\n f &= ~l;\n }\n null !== Cj && 0 === (d & 24) && Cj.has(a) && Cj.delete(a);\n a === U && (Y = U = null, W = 0);\n 1 < c.flags ? null !== c.lastEffect ? (c.lastEffect.nextEffect = c, d = c.firstEffect) : d = c : d = c.firstEffect;\n if (null !== d) {\n e = X;\n X |= 32;\n pj.current = null;\n kf = fd;\n g = Ne();\n if (Oe(g)) {\n if (\"selectionStart\" in g) h = {\n start: g.selectionStart,\n end: g.selectionEnd\n };else a: if (h = (h = g.ownerDocument) && h.defaultView || window, (l = h.getSelection && h.getSelection()) && 0 !== l.rangeCount) {\n h = l.anchorNode;\n f = l.anchorOffset;\n k = l.focusNode;\n l = l.focusOffset;\n try {\n h.nodeType, k.nodeType;\n } catch (va) {\n h = null;\n break a;\n }\n var n = 0,\n A = -1,\n p = -1,\n C = 0,\n x = 0,\n w = g,\n z = null;\n b: for (;;) {\n for (var u;;) {\n w !== h || 0 !== f && 3 !== w.nodeType || (A = n + f);\n w !== k || 0 !== l && 3 !== w.nodeType || (p = n + l);\n 3 === w.nodeType && (n += w.nodeValue.length);\n if (null === (u = w.firstChild)) break;\n z = w;\n w = u;\n }\n for (;;) {\n if (w === g) break b;\n z === h && ++C === f && (A = n);\n z === k && ++x === l && (p = n);\n if (null !== (u = w.nextSibling)) break;\n w = z;\n z = w.parentNode;\n }\n w = u;\n }\n h = -1 === A || -1 === p ? null : {\n start: A,\n end: p\n };\n } else h = null;\n h = h || {\n start: 0,\n end: 0\n };\n } else h = null;\n lf = {\n focusedElem: g,\n selectionRange: h\n };\n fd = !1;\n Ij = null;\n Jj = !1;\n Z = d;\n do try {\n ek();\n } catch (va) {\n if (null === Z) throw Error(y(330));\n Wi(Z, va);\n Z = Z.nextEffect;\n } while (null !== Z);\n Ij = null;\n Z = d;\n do try {\n for (g = a; null !== Z;) {\n var t = Z.flags;\n t & 16 && pb(Z.stateNode, \"\");\n if (t & 128) {\n var q = Z.alternate;\n if (null !== q) {\n var v = q.ref;\n null !== v && (\"function\" === typeof v ? v(null) : v.current = null);\n }\n }\n switch (t & 1038) {\n case 2:\n fj(Z);\n Z.flags &= -3;\n break;\n case 6:\n fj(Z);\n Z.flags &= -3;\n ij(Z.alternate, Z);\n break;\n case 1024:\n Z.flags &= -1025;\n break;\n case 1028:\n Z.flags &= -1025;\n ij(Z.alternate, Z);\n break;\n case 4:\n ij(Z.alternate, Z);\n break;\n case 8:\n h = Z;\n cj(g, h);\n var J = h.alternate;\n dj(h);\n null !== J && dj(J);\n }\n Z = Z.nextEffect;\n }\n } catch (va) {\n if (null === Z) throw Error(y(330));\n Wi(Z, va);\n Z = Z.nextEffect;\n } while (null !== Z);\n v = lf;\n q = Ne();\n t = v.focusedElem;\n g = v.selectionRange;\n if (q !== t && t && t.ownerDocument && Me(t.ownerDocument.documentElement, t)) {\n null !== g && Oe(t) && (q = g.start, v = g.end, void 0 === v && (v = q), \"selectionStart\" in t ? (t.selectionStart = q, t.selectionEnd = Math.min(v, t.value.length)) : (v = (q = t.ownerDocument || document) && q.defaultView || window, v.getSelection && (v = v.getSelection(), h = t.textContent.length, J = Math.min(g.start, h), g = void 0 === g.end ? J : Math.min(g.end, h), !v.extend && J > g && (h = g, g = J, J = h), h = Le(t, J), f = Le(t, g), h && f && (1 !== v.rangeCount || v.anchorNode !== h.node || v.anchorOffset !== h.offset || v.focusNode !== f.node || v.focusOffset !== f.offset) && (q = q.createRange(), q.setStart(h.node, h.offset), v.removeAllRanges(), J > g ? (v.addRange(q), v.extend(f.node, f.offset)) : (q.setEnd(f.node, f.offset), v.addRange(q))))));\n q = [];\n for (v = t; v = v.parentNode;) 1 === v.nodeType && q.push({\n element: v,\n left: v.scrollLeft,\n top: v.scrollTop\n });\n \"function\" === typeof t.focus && t.focus();\n for (t = 0; t < q.length; t++) v = q[t], v.element.scrollLeft = v.left, v.element.scrollTop = v.top;\n }\n fd = !!kf;\n lf = kf = null;\n a.current = c;\n Z = d;\n do try {\n for (t = a; null !== Z;) {\n var K = Z.flags;\n K & 36 && Yi(t, Z.alternate, Z);\n if (K & 128) {\n q = void 0;\n var Q = Z.ref;\n if (null !== Q) {\n var L = Z.stateNode;\n switch (Z.tag) {\n case 5:\n q = L;\n break;\n default:\n q = L;\n }\n \"function\" === typeof Q ? Q(q) : Q.current = q;\n }\n }\n Z = Z.nextEffect;\n }\n } catch (va) {\n if (null === Z) throw Error(y(330));\n Wi(Z, va);\n Z = Z.nextEffect;\n } while (null !== Z);\n Z = null;\n $f();\n X = e;\n } else a.current = c;\n if (xj) xj = !1, yj = a, zj = b;else for (Z = d; null !== Z;) b = Z.nextEffect, Z.nextEffect = null, Z.flags & 8 && (K = Z, K.sibling = null, K.stateNode = null), Z = b;\n d = a.pendingLanes;\n 0 === d && (Ti = null);\n 1 === d ? a === Ej ? Dj++ : (Dj = 0, Ej = a) : Dj = 0;\n c = c.stateNode;\n if (Mf && \"function\" === typeof Mf.onCommitFiberRoot) try {\n Mf.onCommitFiberRoot(Lf, c, void 0, 64 === (c.current.flags & 64));\n } catch (va) {}\n Mj(a, O());\n if (Qi) throw Qi = !1, a = Ri, Ri = null, a;\n if (0 !== (X & 8)) return null;\n ig();\n return null;\n}\nfunction ek() {\n for (; null !== Z;) {\n var a = Z.alternate;\n Jj || null === Ij || (0 !== (Z.flags & 8) ? dc(Z, Ij) && (Jj = !0) : 13 === Z.tag && mj(a, Z) && dc(Z, Ij) && (Jj = !0));\n var b = Z.flags;\n 0 !== (b & 256) && Xi(a, Z);\n 0 === (b & 512) || xj || (xj = !0, hg(97, function () {\n Oj();\n return null;\n }));\n Z = Z.nextEffect;\n }\n}\nfunction Oj() {\n if (90 !== zj) {\n var a = 97 < zj ? 97 : zj;\n zj = 90;\n return gg(a, fk);\n }\n return !1;\n}\nfunction $i(a, b) {\n Aj.push(b, a);\n xj || (xj = !0, hg(97, function () {\n Oj();\n return null;\n }));\n}\nfunction Zi(a, b) {\n Bj.push(b, a);\n xj || (xj = !0, hg(97, function () {\n Oj();\n return null;\n }));\n}\nfunction fk() {\n if (null === yj) return !1;\n var a = yj;\n yj = null;\n if (0 !== (X & 48)) throw Error(y(331));\n var b = X;\n X |= 32;\n var c = Bj;\n Bj = [];\n for (var d = 0; d < c.length; d += 2) {\n var e = c[d],\n f = c[d + 1],\n g = e.destroy;\n e.destroy = void 0;\n if (\"function\" === typeof g) try {\n g();\n } catch (k) {\n if (null === f) throw Error(y(330));\n Wi(f, k);\n }\n }\n c = Aj;\n Aj = [];\n for (d = 0; d < c.length; d += 2) {\n e = c[d];\n f = c[d + 1];\n try {\n var h = e.create;\n e.destroy = h();\n } catch (k) {\n if (null === f) throw Error(y(330));\n Wi(f, k);\n }\n }\n for (h = a.current.firstEffect; null !== h;) a = h.nextEffect, h.nextEffect = null, h.flags & 8 && (h.sibling = null, h.stateNode = null), h = a;\n X = b;\n ig();\n return !0;\n}\nfunction gk(a, b, c) {\n b = Mi(c, b);\n b = Pi(a, b, 1);\n Ag(a, b);\n b = Hg();\n a = Kj(a, 1);\n null !== a && ($c(a, 1, b), Mj(a, b));\n}\nfunction Wi(a, b) {\n if (3 === a.tag) gk(a, a, b);else for (var c = a.return; null !== c;) {\n if (3 === c.tag) {\n gk(c, a, b);\n break;\n } else if (1 === c.tag) {\n var d = c.stateNode;\n if (\"function\" === typeof c.type.getDerivedStateFromError || \"function\" === typeof d.componentDidCatch && (null === Ti || !Ti.has(d))) {\n a = Mi(b, a);\n var e = Si(c, a, 1);\n Ag(c, e);\n e = Hg();\n c = Kj(c, 1);\n if (null !== c) $c(c, 1, e), Mj(c, e);else if (\"function\" === typeof d.componentDidCatch && (null === Ti || !Ti.has(d))) try {\n d.componentDidCatch(b, a);\n } catch (f) {}\n break;\n }\n }\n c = c.return;\n }\n}\nfunction Yj(a, b, c) {\n var d = a.pingCache;\n null !== d && d.delete(b);\n b = Hg();\n a.pingedLanes |= a.suspendedLanes & c;\n U === a && (W & c) === c && (4 === V || 3 === V && (W & 62914560) === W && 500 > O() - jj ? Qj(a, 0) : uj |= c);\n Mj(a, b);\n}\nfunction lj(a, b) {\n var c = a.stateNode;\n null !== c && c.delete(b);\n b = 0;\n 0 === b && (b = a.mode, 0 === (b & 2) ? b = 1 : 0 === (b & 4) ? b = 99 === eg() ? 1 : 2 : (0 === Gj && (Gj = tj), b = Yc(62914560 & ~Gj), 0 === b && (b = 4194304)));\n c = Hg();\n a = Kj(a, b);\n null !== a && ($c(a, b, c), Mj(a, c));\n}\nvar ck;\nck = function (a, b, c) {\n var d = b.lanes;\n if (null !== a) {\n if (a.memoizedProps !== b.pendingProps || N.current) ug = !0;else if (0 !== (c & d)) ug = 0 !== (a.flags & 16384) ? !0 : !1;else {\n ug = !1;\n switch (b.tag) {\n case 3:\n ri(b);\n sh();\n break;\n case 5:\n gh(b);\n break;\n case 1:\n Ff(b.type) && Jf(b);\n break;\n case 4:\n eh(b, b.stateNode.containerInfo);\n break;\n case 10:\n d = b.memoizedProps.value;\n var e = b.type._context;\n I(mg, e._currentValue);\n e._currentValue = d;\n break;\n case 13:\n if (null !== b.memoizedState) {\n if (0 !== (c & b.child.childLanes)) return ti(a, b, c);\n I(P, P.current & 1);\n b = hi(a, b, c);\n return null !== b ? b.sibling : null;\n }\n I(P, P.current & 1);\n break;\n case 19:\n d = 0 !== (c & b.childLanes);\n if (0 !== (a.flags & 64)) {\n if (d) return Ai(a, b, c);\n b.flags |= 64;\n }\n e = b.memoizedState;\n null !== e && (e.rendering = null, e.tail = null, e.lastEffect = null);\n I(P, P.current);\n if (d) break;else return null;\n case 23:\n case 24:\n return b.lanes = 0, mi(a, b, c);\n }\n return hi(a, b, c);\n }\n } else ug = !1;\n b.lanes = 0;\n switch (b.tag) {\n case 2:\n d = b.type;\n null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2);\n a = b.pendingProps;\n e = Ef(b, M.current);\n tg(b, c);\n e = Ch(null, b, d, a, e, c);\n b.flags |= 1;\n if (\"object\" === typeof e && null !== e && \"function\" === typeof e.render && void 0 === e.$$typeof) {\n b.tag = 1;\n b.memoizedState = null;\n b.updateQueue = null;\n if (Ff(d)) {\n var f = !0;\n Jf(b);\n } else f = !1;\n b.memoizedState = null !== e.state && void 0 !== e.state ? e.state : null;\n xg(b);\n var g = d.getDerivedStateFromProps;\n \"function\" === typeof g && Gg(b, d, g, a);\n e.updater = Kg;\n b.stateNode = e;\n e._reactInternals = b;\n Og(b, d, a, c);\n b = qi(null, b, d, !0, f, c);\n } else b.tag = 0, fi(null, b, e, c), b = b.child;\n return b;\n case 16:\n e = b.elementType;\n a: {\n null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2);\n a = b.pendingProps;\n f = e._init;\n e = f(e._payload);\n b.type = e;\n f = b.tag = hk(e);\n a = lg(e, a);\n switch (f) {\n case 0:\n b = li(null, b, e, a, c);\n break a;\n case 1:\n b = pi(null, b, e, a, c);\n break a;\n case 11:\n b = gi(null, b, e, a, c);\n break a;\n case 14:\n b = ii(null, b, e, lg(e.type, a), d, c);\n break a;\n }\n throw Error(y(306, e, \"\"));\n }\n return b;\n case 0:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : lg(d, e), li(a, b, d, e, c);\n case 1:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : lg(d, e), pi(a, b, d, e, c);\n case 3:\n ri(b);\n d = b.updateQueue;\n if (null === a || null === d) throw Error(y(282));\n d = b.pendingProps;\n e = b.memoizedState;\n e = null !== e ? e.element : null;\n yg(a, b);\n Cg(b, d, null, c);\n d = b.memoizedState.element;\n if (d === e) sh(), b = hi(a, b, c);else {\n e = b.stateNode;\n if (f = e.hydrate) kh = rf(b.stateNode.containerInfo.firstChild), jh = b, f = lh = !0;\n if (f) {\n a = e.mutableSourceEagerHydrationData;\n if (null != a) for (e = 0; e < a.length; e += 2) f = a[e], f._workInProgressVersionPrimary = a[e + 1], th.push(f);\n c = Zg(b, null, d, c);\n for (b.child = c; c;) c.flags = c.flags & -3 | 1024, c = c.sibling;\n } else fi(a, b, d, c), sh();\n b = b.child;\n }\n return b;\n case 5:\n return gh(b), null === a && ph(b), d = b.type, e = b.pendingProps, f = null !== a ? a.memoizedProps : null, g = e.children, nf(d, e) ? g = null : null !== f && nf(d, f) && (b.flags |= 16), oi(a, b), fi(a, b, g, c), b.child;\n case 6:\n return null === a && ph(b), null;\n case 13:\n return ti(a, b, c);\n case 4:\n return eh(b, b.stateNode.containerInfo), d = b.pendingProps, null === a ? b.child = Yg(b, null, d, c) : fi(a, b, d, c), b.child;\n case 11:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : lg(d, e), gi(a, b, d, e, c);\n case 7:\n return fi(a, b, b.pendingProps, c), b.child;\n case 8:\n return fi(a, b, b.pendingProps.children, c), b.child;\n case 12:\n return fi(a, b, b.pendingProps.children, c), b.child;\n case 10:\n a: {\n d = b.type._context;\n e = b.pendingProps;\n g = b.memoizedProps;\n f = e.value;\n var h = b.type._context;\n I(mg, h._currentValue);\n h._currentValue = f;\n if (null !== g) if (h = g.value, f = He(h, f) ? 0 : (\"function\" === typeof d._calculateChangedBits ? d._calculateChangedBits(h, f) : 1073741823) | 0, 0 === f) {\n if (g.children === e.children && !N.current) {\n b = hi(a, b, c);\n break a;\n }\n } else for (h = b.child, null !== h && (h.return = b); null !== h;) {\n var k = h.dependencies;\n if (null !== k) {\n g = h.child;\n for (var l = k.firstContext; null !== l;) {\n if (l.context === d && 0 !== (l.observedBits & f)) {\n 1 === h.tag && (l = zg(-1, c & -c), l.tag = 2, Ag(h, l));\n h.lanes |= c;\n l = h.alternate;\n null !== l && (l.lanes |= c);\n sg(h.return, c);\n k.lanes |= c;\n break;\n }\n l = l.next;\n }\n } else g = 10 === h.tag ? h.type === b.type ? null : h.child : h.child;\n if (null !== g) g.return = h;else for (g = h; null !== g;) {\n if (g === b) {\n g = null;\n break;\n }\n h = g.sibling;\n if (null !== h) {\n h.return = g.return;\n g = h;\n break;\n }\n g = g.return;\n }\n h = g;\n }\n fi(a, b, e.children, c);\n b = b.child;\n }\n return b;\n case 9:\n return e = b.type, f = b.pendingProps, d = f.children, tg(b, c), e = vg(e, f.unstable_observedBits), d = d(e), b.flags |= 1, fi(a, b, d, c), b.child;\n case 14:\n return e = b.type, f = lg(e, b.pendingProps), f = lg(e.type, f), ii(a, b, e, f, d, c);\n case 15:\n return ki(a, b, b.type, b.pendingProps, d, c);\n case 17:\n return d = b.type, e = b.pendingProps, e = b.elementType === d ? e : lg(d, e), null !== a && (a.alternate = null, b.alternate = null, b.flags |= 2), b.tag = 1, Ff(d) ? (a = !0, Jf(b)) : a = !1, tg(b, c), Mg(b, d, e), Og(b, d, e, c), qi(null, b, d, !0, a, c);\n case 19:\n return Ai(a, b, c);\n case 23:\n return mi(a, b, c);\n case 24:\n return mi(a, b, c);\n }\n throw Error(y(156, b.tag));\n};\nfunction ik(a, b, c, d) {\n this.tag = a;\n this.key = c;\n this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n this.index = 0;\n this.ref = null;\n this.pendingProps = b;\n this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n this.mode = d;\n this.flags = 0;\n this.lastEffect = this.firstEffect = this.nextEffect = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction nh(a, b, c, d) {\n return new ik(a, b, c, d);\n}\nfunction ji(a) {\n a = a.prototype;\n return !(!a || !a.isReactComponent);\n}\nfunction hk(a) {\n if (\"function\" === typeof a) return ji(a) ? 1 : 0;\n if (void 0 !== a && null !== a) {\n a = a.$$typeof;\n if (a === Aa) return 11;\n if (a === Da) return 14;\n }\n return 2;\n}\nfunction Tg(a, b) {\n var c = a.alternate;\n null === c ? (c = nh(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.nextEffect = null, c.firstEffect = null, c.lastEffect = null);\n c.childLanes = a.childLanes;\n c.lanes = a.lanes;\n c.child = a.child;\n c.memoizedProps = a.memoizedProps;\n c.memoizedState = a.memoizedState;\n c.updateQueue = a.updateQueue;\n b = a.dependencies;\n c.dependencies = null === b ? null : {\n lanes: b.lanes,\n firstContext: b.firstContext\n };\n c.sibling = a.sibling;\n c.index = a.index;\n c.ref = a.ref;\n return c;\n}\nfunction Vg(a, b, c, d, e, f) {\n var g = 2;\n d = a;\n if (\"function\" === typeof a) ji(a) && (g = 1);else if (\"string\" === typeof a) g = 5;else a: switch (a) {\n case ua:\n return Xg(c.children, e, f, b);\n case Ha:\n g = 8;\n e |= 16;\n break;\n case wa:\n g = 8;\n e |= 1;\n break;\n case xa:\n return a = nh(12, c, b, e | 8), a.elementType = xa, a.type = xa, a.lanes = f, a;\n case Ba:\n return a = nh(13, c, b, e), a.type = Ba, a.elementType = Ba, a.lanes = f, a;\n case Ca:\n return a = nh(19, c, b, e), a.elementType = Ca, a.lanes = f, a;\n case Ia:\n return vi(c, e, f, b);\n case Ja:\n return a = nh(24, c, b, e), a.elementType = Ja, a.lanes = f, a;\n default:\n if (\"object\" === typeof a && null !== a) switch (a.$$typeof) {\n case ya:\n g = 10;\n break a;\n case za:\n g = 9;\n break a;\n case Aa:\n g = 11;\n break a;\n case Da:\n g = 14;\n break a;\n case Ea:\n g = 16;\n d = null;\n break a;\n case Fa:\n g = 22;\n break a;\n }\n throw Error(y(130, null == a ? a : typeof a, \"\"));\n }\n b = nh(g, c, b, e);\n b.elementType = a;\n b.type = d;\n b.lanes = f;\n return b;\n}\nfunction Xg(a, b, c, d) {\n a = nh(7, a, d, b);\n a.lanes = c;\n return a;\n}\nfunction vi(a, b, c, d) {\n a = nh(23, a, d, b);\n a.elementType = Ia;\n a.lanes = c;\n return a;\n}\nfunction Ug(a, b, c) {\n a = nh(6, a, null, b);\n a.lanes = c;\n return a;\n}\nfunction Wg(a, b, c) {\n b = nh(4, null !== a.children ? a.children : [], a.key, b);\n b.lanes = c;\n b.stateNode = {\n containerInfo: a.containerInfo,\n pendingChildren: null,\n implementation: a.implementation\n };\n return b;\n}\nfunction jk(a, b, c) {\n this.tag = b;\n this.containerInfo = a;\n this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.pendingContext = this.context = null;\n this.hydrate = c;\n this.callbackNode = null;\n this.callbackPriority = 0;\n this.eventTimes = Zc(0);\n this.expirationTimes = Zc(-1);\n this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;\n this.entanglements = Zc(0);\n this.mutableSourceEagerHydrationData = null;\n}\nfunction kk(a, b, c) {\n var d = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: ta,\n key: null == d ? null : \"\" + d,\n children: a,\n containerInfo: b,\n implementation: c\n };\n}\nfunction lk(a, b, c, d) {\n var e = b.current,\n f = Hg(),\n g = Ig(e);\n a: if (c) {\n c = c._reactInternals;\n b: {\n if (Zb(c) !== c || 1 !== c.tag) throw Error(y(170));\n var h = c;\n do {\n switch (h.tag) {\n case 3:\n h = h.stateNode.context;\n break b;\n case 1:\n if (Ff(h.type)) {\n h = h.stateNode.__reactInternalMemoizedMergedChildContext;\n break b;\n }\n }\n h = h.return;\n } while (null !== h);\n throw Error(y(171));\n }\n if (1 === c.tag) {\n var k = c.type;\n if (Ff(k)) {\n c = If(c, k, h);\n break a;\n }\n }\n c = h;\n } else c = Cf;\n null === b.context ? b.context = c : b.pendingContext = c;\n b = zg(f, g);\n b.payload = {\n element: a\n };\n d = void 0 === d ? null : d;\n null !== d && (b.callback = d);\n Ag(e, b);\n Jg(e, g, f);\n return g;\n}\nfunction mk(a) {\n a = a.current;\n if (!a.child) return null;\n switch (a.child.tag) {\n case 5:\n return a.child.stateNode;\n default:\n return a.child.stateNode;\n }\n}\nfunction nk(a, b) {\n a = a.memoizedState;\n if (null !== a && null !== a.dehydrated) {\n var c = a.retryLane;\n a.retryLane = 0 !== c && c < b ? c : b;\n }\n}\nfunction ok(a, b) {\n nk(a, b);\n (a = a.alternate) && nk(a, b);\n}\nfunction pk() {\n return null;\n}\nfunction qk(a, b, c) {\n var d = null != c && null != c.hydrationOptions && c.hydrationOptions.mutableSources || null;\n c = new jk(a, b, null != c && !0 === c.hydrate);\n b = nh(3, null, null, 2 === b ? 7 : 1 === b ? 3 : 0);\n c.current = b;\n b.stateNode = c;\n xg(b);\n a[ff] = c.current;\n cf(8 === a.nodeType ? a.parentNode : a);\n if (d) for (a = 0; a < d.length; a++) {\n b = d[a];\n var e = b._getVersion;\n e = e(b._source);\n null == c.mutableSourceEagerHydrationData ? c.mutableSourceEagerHydrationData = [b, e] : c.mutableSourceEagerHydrationData.push(b, e);\n }\n this._internalRoot = c;\n}\nqk.prototype.render = function (a) {\n lk(a, this._internalRoot, null, null);\n};\nqk.prototype.unmount = function () {\n var a = this._internalRoot,\n b = a.containerInfo;\n lk(null, a, null, function () {\n b[ff] = null;\n });\n};\nfunction rk(a) {\n return !(!a || 1 !== a.nodeType && 9 !== a.nodeType && 11 !== a.nodeType && (8 !== a.nodeType || \" react-mount-point-unstable \" !== a.nodeValue));\n}\nfunction sk(a, b) {\n b || (b = a ? 9 === a.nodeType ? a.documentElement : a.firstChild : null, b = !(!b || 1 !== b.nodeType || !b.hasAttribute(\"data-reactroot\")));\n if (!b) for (var c; c = a.lastChild;) a.removeChild(c);\n return new qk(a, 0, b ? {\n hydrate: !0\n } : void 0);\n}\nfunction tk(a, b, c, d, e) {\n var f = c._reactRootContainer;\n if (f) {\n var g = f._internalRoot;\n if (\"function\" === typeof e) {\n var h = e;\n e = function () {\n var a = mk(g);\n h.call(a);\n };\n }\n lk(b, g, a, e);\n } else {\n f = c._reactRootContainer = sk(c, d);\n g = f._internalRoot;\n if (\"function\" === typeof e) {\n var k = e;\n e = function () {\n var a = mk(g);\n k.call(a);\n };\n }\n Xj(function () {\n lk(b, g, a, e);\n });\n }\n return mk(g);\n}\nec = function (a) {\n if (13 === a.tag) {\n var b = Hg();\n Jg(a, 4, b);\n ok(a, 4);\n }\n};\nfc = function (a) {\n if (13 === a.tag) {\n var b = Hg();\n Jg(a, 67108864, b);\n ok(a, 67108864);\n }\n};\ngc = function (a) {\n if (13 === a.tag) {\n var b = Hg(),\n c = Ig(a);\n Jg(a, c, b);\n ok(a, c);\n }\n};\nhc = function (a, b) {\n return b();\n};\nyb = function (a, b, c) {\n switch (b) {\n case \"input\":\n ab(a, c);\n b = c.name;\n if (\"radio\" === c.type && null != b) {\n for (c = a; c.parentNode;) c = c.parentNode;\n c = c.querySelectorAll(\"input[name=\" + JSON.stringify(\"\" + b) + '][type=\"radio\"]');\n for (b = 0; b < c.length; b++) {\n var d = c[b];\n if (d !== a && d.form === a.form) {\n var e = Db(d);\n if (!e) throw Error(y(90));\n Wa(d);\n ab(d, e);\n }\n }\n }\n break;\n case \"textarea\":\n ib(a, c);\n break;\n case \"select\":\n b = c.value, null != b && fb(a, !!c.multiple, b, !1);\n }\n};\nGb = Wj;\nHb = function (a, b, c, d, e) {\n var f = X;\n X |= 4;\n try {\n return gg(98, a.bind(null, b, c, d, e));\n } finally {\n X = f, 0 === X && (wj(), ig());\n }\n};\nIb = function () {\n 0 === (X & 49) && (Vj(), Oj());\n};\nJb = function (a, b) {\n var c = X;\n X |= 2;\n try {\n return a(b);\n } finally {\n X = c, 0 === X && (wj(), ig());\n }\n};\nfunction uk(a, b) {\n var c = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (!rk(b)) throw Error(y(200));\n return kk(a, b, null, c);\n}\nvar vk = {\n Events: [Cb, ue, Db, Eb, Fb, Oj, {\n current: !1\n }]\n },\n wk = {\n findFiberByHostInstance: wc,\n bundleType: 0,\n version: \"17.0.2\",\n rendererPackageName: \"react-dom\"\n };\nvar xk = {\n bundleType: wk.bundleType,\n version: wk.version,\n rendererPackageName: wk.rendererPackageName,\n rendererConfig: wk.rendererConfig,\n overrideHookState: null,\n overrideHookStateDeletePath: null,\n overrideHookStateRenamePath: null,\n overrideProps: null,\n overridePropsDeletePath: null,\n overridePropsRenamePath: null,\n setSuspenseHandler: null,\n scheduleUpdate: null,\n currentDispatcherRef: ra.ReactCurrentDispatcher,\n findHostInstanceByFiber: function (a) {\n a = cc(a);\n return null === a ? null : a.stateNode;\n },\n findFiberByHostInstance: wk.findFiberByHostInstance || pk,\n findHostInstancesForRefresh: null,\n scheduleRefresh: null,\n scheduleRoot: null,\n setRefreshHandler: null,\n getCurrentFiber: null\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var yk = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (!yk.isDisabled && yk.supportsFiber) try {\n Lf = yk.inject(xk), Mf = yk;\n } catch (a) {}\n}\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = vk;\nexports.createPortal = uk;\nexports.findDOMNode = function (a) {\n if (null == a) return null;\n if (1 === a.nodeType) return a;\n var b = a._reactInternals;\n if (void 0 === b) {\n if (\"function\" === typeof a.render) throw Error(y(188));\n throw Error(y(268, Object.keys(a)));\n }\n a = cc(b);\n a = null === a ? null : a.stateNode;\n return a;\n};\nexports.flushSync = function (a, b) {\n var c = X;\n if (0 !== (c & 48)) return a(b);\n X |= 1;\n try {\n if (a) return gg(99, a.bind(null, b));\n } finally {\n X = c, ig();\n }\n};\nexports.hydrate = function (a, b, c) {\n if (!rk(b)) throw Error(y(200));\n return tk(null, a, b, !0, c);\n};\nexports.render = function (a, b, c) {\n if (!rk(b)) throw Error(y(200));\n return tk(null, a, b, !1, c);\n};\nexports.unmountComponentAtNode = function (a) {\n if (!rk(a)) throw Error(y(40));\n return a._reactRootContainer ? (Xj(function () {\n tk(null, null, a, !1, function () {\n a._reactRootContainer = null;\n a[ff] = null;\n });\n }), !0) : !1;\n};\nexports.unstable_batchedUpdates = Wj;\nexports.unstable_createPortal = function (a, b) {\n return uk(a, b, 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null);\n};\nexports.unstable_renderSubtreeIntoContainer = function (a, b, c, d) {\n if (!rk(c)) throw Error(y(200));\n if (null == a || void 0 === a._reactInternals) throw Error(y(38));\n return tk(a, b, c, !1, d);\n};\nexports.version = \"17.0.2\";","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}","(function (a, b) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? b(exports, require(\"@babel/runtime/helpers/defineProperty\"), require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"), require(\"react\")) : \"function\" == typeof define && define.amd ? define([\"exports\", \"@babel/runtime/helpers/defineProperty\", \"@babel/runtime/helpers/objectWithoutPropertiesLoose\", \"react\"], b) : (a = \"undefined\" == typeof globalThis ? a || self : globalThis, b(a.Img = {}, a._defineProperty, a._objectWithoutPropertiesLoose, a.React));\n})(this, function (a, b, c, d) {\n \"use strict\";\n\n function e(a) {\n return a && \"object\" == typeof a && \"default\" in a ? a : {\n default: a\n };\n }\n function f(a, b) {\n var c = Object.keys(a);\n if (Object.getOwnPropertySymbols) {\n var d = Object.getOwnPropertySymbols(a);\n b && (d = d.filter(function (b) {\n return Object.getOwnPropertyDescriptor(a, b).enumerable;\n })), c.push.apply(c, d);\n }\n return c;\n }\n function g(a) {\n for (var b, c = 1; c < arguments.length; c++) b = null == arguments[c] ? {} : arguments[c], c % 2 ? f(Object(b), !0).forEach(function (c) {\n l[\"default\"](a, c, b[c]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(a, Object.getOwnPropertyDescriptors(b)) : f(Object(b)).forEach(function (c) {\n Object.defineProperty(a, c, Object.getOwnPropertyDescriptor(b, c));\n });\n return a;\n }\n function h(a) {\n var b = a.srcList,\n c = a.imgPromise,\n e = void 0 === c ? o({\n decode: !0\n }) : c,\n f = a.useSuspense,\n h = void 0 === f || f,\n i = d.useState(!1),\n j = i[1],\n k = p(q(b)),\n l = k.join(\"\");\n if (r[l] || (r[l] = {\n promise: s(k, e),\n cache: \"pending\",\n error: null\n }), \"resolved\" === r[l].cache) return {\n src: r[l].src,\n isLoading: !1,\n error: null\n };\n if (\"rejected\" === r[l].cache) {\n if (h) throw r[l].error;\n return {\n isLoading: !1,\n error: r[l].error,\n src: void 0\n };\n }\n if (r[l].promise.then(function (a) {\n r[l] = g(g({}, r[l]), {}, {\n cache: \"resolved\",\n src: a\n }), h || j(l);\n })[\"catch\"](function (a) {\n r[l] = g(g({}, r[l]), {}, {\n cache: \"rejected\",\n error: a\n }), h || j(l);\n }), h) throw r[l].promise;\n return {\n isLoading: !0,\n src: void 0,\n error: null\n };\n }\n function j(a, b) {\n var c = Object.keys(a);\n if (Object.getOwnPropertySymbols) {\n var d = Object.getOwnPropertySymbols(a);\n b && (d = d.filter(function (b) {\n return Object.getOwnPropertyDescriptor(a, b).enumerable;\n })), c.push.apply(c, d);\n }\n return c;\n }\n function k(a) {\n for (var b, c = 1; c < arguments.length; c++) b = null == arguments[c] ? {} : arguments[c], c % 2 ? j(Object(b), !0).forEach(function (c) {\n l[\"default\"](a, c, b[c]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(a, Object.getOwnPropertyDescriptors(b)) : j(Object(b)).forEach(function (c) {\n Object.defineProperty(a, c, Object.getOwnPropertyDescriptor(b, c));\n });\n return a;\n }\n var l = e(b),\n m = e(c),\n n = e(d),\n o = function (a) {\n var b = a.decode,\n c = a.crossOrigin,\n d = void 0 === c ? \"\" : c;\n return function (a) {\n return new Promise(function (c, e) {\n var f = new Image();\n d && (f.crossOrigin = d), f.onload = function () {\n (!(void 0 !== b) || b) && f.decode ? f.decode().then(c)[\"catch\"](e) : c();\n }, f.onerror = e, f.src = a;\n });\n };\n },\n p = function (b) {\n return b.filter(function (a) {\n return a;\n });\n },\n q = function (a) {\n return Array.isArray(a) ? a : [a];\n },\n r = {},\n s = function (a, b) {\n var c = !1;\n return new Promise(function (d, e) {\n var f = function (a) {\n return b(a).then(function () {\n c = !0, d(a);\n });\n };\n a.reduce(function (a, b) {\n return a[\"catch\"](function () {\n if (!c) return f(b);\n });\n }, f(a.shift()))[\"catch\"](e);\n });\n },\n t = [\"decode\", \"src\", \"loader\", \"unloader\", \"container\", \"loaderContainer\", \"unloaderContainer\", \"imgPromise\", \"crossorigin\", \"useSuspense\"],\n u = function (a) {\n return a;\n };\n a.Img = function (a) {\n var b = a.decode,\n c = a.src,\n d = void 0 === c ? [] : c,\n e = a.loader,\n f = void 0 === e ? null : e,\n g = a.unloader,\n i = void 0 === g ? null : g,\n j = a.container,\n l = void 0 === j ? u : j,\n p = a.loaderContainer,\n q = void 0 === p ? u : p,\n r = a.unloaderContainer,\n s = void 0 === r ? u : r,\n v = a.imgPromise,\n w = a.crossorigin,\n x = a.useSuspense,\n y = void 0 !== x && x,\n z = m[\"default\"](a, t);\n v = v || o({\n decode: !(void 0 !== b) || b,\n crossOrigin: w\n });\n var A = h({\n srcList: d,\n imgPromise: v,\n useSuspense: y\n }),\n B = A.src,\n C = A.isLoading;\n return B ? l(n[\"default\"].createElement(\"img\", k({\n src: B\n }, z))) : !y && C ? q(f) : !y && i ? s(i) : null;\n }, a.useImage = h, Object.defineProperty(a, \"__esModule\", {\n value: !0\n });\n});\n//# sourceMappingURL=index.js.map","/** @license React v17.0.2\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'use strict';\n\nvar b = 60103,\n c = 60106,\n d = 60107,\n e = 60108,\n f = 60114,\n g = 60109,\n h = 60110,\n k = 60112,\n l = 60113,\n m = 60120,\n n = 60115,\n p = 60116,\n q = 60121,\n r = 60122,\n u = 60117,\n v = 60129,\n w = 60131;\nif (\"function\" === typeof Symbol && Symbol.for) {\n var x = Symbol.for;\n b = x(\"react.element\");\n c = x(\"react.portal\");\n d = x(\"react.fragment\");\n e = x(\"react.strict_mode\");\n f = x(\"react.profiler\");\n g = x(\"react.provider\");\n h = x(\"react.context\");\n k = x(\"react.forward_ref\");\n l = x(\"react.suspense\");\n m = x(\"react.suspense_list\");\n n = x(\"react.memo\");\n p = x(\"react.lazy\");\n q = x(\"react.block\");\n r = x(\"react.server.block\");\n u = x(\"react.fundamental\");\n v = x(\"react.debug_trace_mode\");\n w = x(\"react.legacy_hidden\");\n}\nfunction y(a) {\n if (\"object\" === typeof a && null !== a) {\n var t = a.$$typeof;\n switch (t) {\n case b:\n switch (a = a.type, a) {\n case d:\n case f:\n case e:\n case l:\n case m:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case h:\n case k:\n case p:\n case n:\n case g:\n return a;\n default:\n return t;\n }\n }\n case c:\n return t;\n }\n }\n}\nvar z = g,\n A = b,\n B = k,\n C = d,\n D = p,\n E = n,\n F = c,\n G = f,\n H = e,\n I = l;\nexports.ContextConsumer = h;\nexports.ContextProvider = z;\nexports.Element = A;\nexports.ForwardRef = B;\nexports.Fragment = C;\nexports.Lazy = D;\nexports.Memo = E;\nexports.Portal = F;\nexports.Profiler = G;\nexports.StrictMode = H;\nexports.Suspense = I;\nexports.isAsyncMode = function () {\n return !1;\n};\nexports.isConcurrentMode = function () {\n return !1;\n};\nexports.isContextConsumer = function (a) {\n return y(a) === h;\n};\nexports.isContextProvider = function (a) {\n return y(a) === g;\n};\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === b;\n};\nexports.isForwardRef = function (a) {\n return y(a) === k;\n};\nexports.isFragment = function (a) {\n return y(a) === d;\n};\nexports.isLazy = function (a) {\n return y(a) === p;\n};\nexports.isMemo = function (a) {\n return y(a) === n;\n};\nexports.isPortal = function (a) {\n return y(a) === c;\n};\nexports.isProfiler = function (a) {\n return y(a) === f;\n};\nexports.isStrictMode = function (a) {\n return y(a) === e;\n};\nexports.isSuspense = function (a) {\n return y(a) === l;\n};\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === d || a === f || a === v || a === e || a === l || a === m || a === w || \"object\" === typeof a && null !== a && (a.$$typeof === p || a.$$typeof === n || a.$$typeof === g || a.$$typeof === h || a.$$typeof === k || a.$$typeof === u || a.$$typeof === q || a[0] === r) ? !0 : !1;\n};\nexports.typeOf = y;","'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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return _skeleton.default;\n }\n});\nObject.defineProperty(exports, \"SkeletonTheme\", {\n enumerable: true,\n get: function get() {\n return _skeletonTheme.default;\n }\n});\nvar _skeleton = _interopRequireDefault(require(\"./skeleton\"));\nvar _skeletonTheme = _interopRequireDefault(require(\"./skeleton-theme\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _core = require(\"@emotion/core\");\nvar _skeleton = require(\"./skeleton\");\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar SkeletonTheme = /*#__PURE__*/\nfunction (_Component) {\n _inherits(SkeletonTheme, _Component);\n function SkeletonTheme() {\n _classCallCheck(this, SkeletonTheme);\n return _possibleConstructorReturn(this, _getPrototypeOf(SkeletonTheme).apply(this, arguments));\n }\n _createClass(SkeletonTheme, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n color = _this$props.color,\n highlightColor = _this$props.highlightColor,\n children = _this$props.children;\n var themeStyles = /*#__PURE__*/\n (0, _core.css)(\".react-loading-skeleton{background-color:\", color, \";background-image:linear-gradient( 90deg,\", color, \",\", highlightColor, \",\", color, \" );};label:SkeletonTheme;\" + (process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VsZXRvbi10aGVtZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZMkIiLCJmaWxlIjoiLi4vc3JjL3NrZWxldG9uLXRoZW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBlbW90aW9uL2NvcmVcIjtcbmltcG9ydCB7IGRlZmF1bHRCYXNlQ29sb3IsIGRlZmF1bHRIaWdobGlnaHRDb2xvciB9IGZyb20gXCIuL3NrZWxldG9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNrZWxldG9uVGhlbWUgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNvbG9yOiBkZWZhdWx0QmFzZUNvbG9yLFxuICAgIGhpZ2hsaWdodENvbG9yOiBkZWZhdWx0SGlnaGxpZ2h0Q29sb3JcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgeyBjb2xvciwgaGlnaGxpZ2h0Q29sb3IsIGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHRoZW1lU3R5bGVzID0gY3NzYFxuICAgICAgLnJlYWN0LWxvYWRpbmctc2tlbGV0b24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2NvbG9yfTtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIDkwZGVnLFxuICAgICAgICAgICR7Y29sb3J9LFxuICAgICAgICAgICR7aGlnaGxpZ2h0Q29sb3J9LFxuICAgICAgICAgICR7Y29sb3J9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgYDtcbiAgICByZXR1cm4gPGRpdiBjc3M9e3RoZW1lU3R5bGVzfT57Y2hpbGRyZW59PC9kaXY+O1xuICB9XG59XG4iXX0= */\"));\n return (0, _core.jsx)(\"div\", {\n css: themeStyles\n }, children);\n }\n }]);\n return SkeletonTheme;\n}(_react.Component);\nexports.default = SkeletonTheme;\n_defineProperty(SkeletonTheme, \"defaultProps\", {\n color: _skeleton.defaultBaseColor,\n highlightColor: _skeleton.defaultHighlightColor\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Skeleton;\nexports.skeletonStyles = exports.skeletonKeyframes = exports.defaultHighlightColor = exports.defaultBaseColor = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _core = require(\"@emotion/core\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _templateObject() {\n var data = _taggedTemplateLiteral([\"\\n 0% {\\n background-position: -200px 0;\\n }\\n \", \"\\n 100% {\\n background-position: calc(200px + 100%) 0;\\n }\\n\"]);\n _templateObject = function _templateObject() {\n return data;\n };\n return data;\n}\nfunction _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nvar defaultBaseColor = \"#eee\";\nexports.defaultBaseColor = defaultBaseColor;\nvar defaultHighlightColor = \"#f5f5f5\";\nexports.defaultHighlightColor = defaultHighlightColor;\nvar skeletonKeyframes = function skeletonKeyframes(duration, delay) {\n return (0, _core.keyframes)(_templateObject(), delay > 0 ? \"\".concat(Math.floor(1 / (duration + delay) * duration * 100), \"% {\\n background-position: calc(200px + 100%) 0;\\n }\") : undefined);\n};\nexports.skeletonKeyframes = skeletonKeyframes;\nvar skeletonStyles = /*#__PURE__*/\n(0, _core.css)(\"background-color:\", defaultBaseColor, \";background-image:linear-gradient( 90deg,\", defaultBaseColor, \",\", defaultHighlightColor, \",\", defaultBaseColor, \" );background-size:200px 100%;background-repeat:no-repeat;border-radius:4px;display:inline-block;line-height:1;width:100%;;label:skeletonStyles;\" + (process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VsZXRvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QmlDIiwiZmlsZSI6Ii4uL3NyYy9za2VsZXRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRCYXNlQ29sb3IgPSBcIiNlZWVcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRIaWdobGlnaHRDb2xvciA9IFwiI2Y1ZjVmNVwiO1xuXG5leHBvcnQgY29uc3Qgc2tlbGV0b25LZXlmcmFtZXMgPSAoZHVyYXRpb24sIGRlbGF5KSA9PiBrZXlmcmFtZXNgXG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwcHggMDtcbiAgfVxuICAke1xuICAgIGRlbGF5ID4gMFxuICAgICAgPyBgJHtNYXRoLmZsb29yKCgxIC8gKGR1cmF0aW9uICsgZGVsYXkpKSAqIGR1cmF0aW9uICogMTAwKX0lIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDIwMHB4ICsgMTAwJSkgMDtcbiAgfWBcbiAgICAgIDogdW5kZWZpbmVkXG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygyMDBweCArIDEwMCUpIDA7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBza2VsZXRvblN0eWxlcyA9IGNzc2BcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtkZWZhdWx0QmFzZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgIDkwZGVnLFxuICAgICR7ZGVmYXVsdEJhc2VDb2xvcn0sXG4gICAgJHtkZWZhdWx0SGlnaGxpZ2h0Q29sb3J9LFxuICAgICR7ZGVmYXVsdEJhc2VDb2xvcn1cbiAgKTtcbiAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2tlbGV0b24oe1xuICBjb3VudCxcbiAgZHVyYXRpb24sXG4gIHdpZHRoLFxuICB3cmFwcGVyOiBXcmFwcGVyLFxuICBoZWlnaHQsXG4gIGNpcmNsZSxcbiAgZGVsYXksXG4gIHN0eWxlOiBjdXN0b21TdHlsZSxcbiAgY2xhc3NOYW1lOiBjdXN0b21DbGFzc05hbWVcbn0pIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBsZXQgc3R5bGUgPSB7fTtcblxuICAgIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgICAgc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICB9XG5cbiAgICBpZiAoaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgICBzdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKHdpZHRoICE9PSBudWxsICYmIGhlaWdodCAhPT0gbnVsbCAmJiBjaXJjbGUpIHtcbiAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9IFwiNTAlXCI7XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzTmFtZSA9IFwicmVhY3QtbG9hZGluZy1za2VsZXRvblwiO1xuICAgIGlmIChjdXN0b21DbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSBcIiBcIiArIGN1c3RvbUNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgPHNwYW5cbiAgICAgICAga2V5PXtpfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgJHtza2VsZXRvblN0eWxlc31cbiAgICAgICAgICBhbmltYXRpb246ICR7c2tlbGV0b25LZXlmcmFtZXMoZHVyYXRpb24sIGRlbGF5KX0gJHtkdXJhdGlvbiArXG4gICAgICAgICAgZGVsYXl9cyBlYXNlLWluLW91dCBpbmZpbml0ZVxuICAgICAgICBgfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLmN1c3RvbVN0eWxlLFxuICAgICAgICAgIC4uLnN0eWxlXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgICZ6d25qO1xuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzcGFuPlxuICAgICAge1dyYXBwZXJcbiAgICAgICAgPyBlbGVtZW50cy5tYXAoKGVsZW1lbnQsIGkpID0+IChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aX0+XG4gICAgICAgICAgICAgIHtlbGVtZW50fVxuICAgICAgICAgICAgICAmenduajtcbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApKVxuICAgICAgICA6IGVsZW1lbnRzfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuU2tlbGV0b24uZGVmYXVsdFByb3BzID0ge1xuICBjb3VudDogMSxcbiAgZHVyYXRpb246IDEuMixcbiAgd2lkdGg6IG51bGwsXG4gIHdyYXBwZXI6IG51bGwsXG4gIGhlaWdodDogbnVsbCxcbiAgY2lyY2xlOiBmYWxzZSxcbiAgZGVsYXk6IDBcbn07XG4iXX0= */\"));\nexports.skeletonStyles = skeletonStyles;\nfunction Skeleton(_ref) {\n var count = _ref.count,\n duration = _ref.duration,\n width = _ref.width,\n Wrapper = _ref.wrapper,\n height = _ref.height,\n circle = _ref.circle,\n delay = _ref.delay,\n customStyle = _ref.style,\n customClassName = _ref.className;\n var elements = [];\n for (var i = 0; i < count; i++) {\n var style = {};\n if (width !== null) {\n style.width = width;\n }\n if (height !== null) {\n style.height = height;\n }\n if (width !== null && height !== null && circle) {\n style.borderRadius = \"50%\";\n }\n var className = \"react-loading-skeleton\";\n if (customClassName) {\n className += \" \" + customClassName;\n }\n elements.push((0, _core.jsx)(\"span\", {\n key: i,\n className: className,\n css: /*#__PURE__*/\n (0, _core.css)(skeletonStyles, \" animation:\", skeletonKeyframes(duration, delay), \" \", duration + delay, \"s ease-in-out infinite;label:Skeleton;\" + (process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9za2VsZXRvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE0RWdCIiwiZmlsZSI6Ii4uL3NyYy9za2VsZXRvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNzcywga2V5ZnJhbWVzIH0gZnJvbSBcIkBlbW90aW9uL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRCYXNlQ29sb3IgPSBcIiNlZWVcIjtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRIaWdobGlnaHRDb2xvciA9IFwiI2Y1ZjVmNVwiO1xuXG5leHBvcnQgY29uc3Qgc2tlbGV0b25LZXlmcmFtZXMgPSAoZHVyYXRpb24sIGRlbGF5KSA9PiBrZXlmcmFtZXNgXG4gIDAlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjAwcHggMDtcbiAgfVxuICAke1xuICAgIGRlbGF5ID4gMFxuICAgICAgPyBgJHtNYXRoLmZsb29yKCgxIC8gKGR1cmF0aW9uICsgZGVsYXkpKSAqIGR1cmF0aW9uICogMTAwKX0lIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjYWxjKDIwMHB4ICsgMTAwJSkgMDtcbiAgfWBcbiAgICAgIDogdW5kZWZpbmVkXG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2FsYygyMDBweCArIDEwMCUpIDA7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBza2VsZXRvblN0eWxlcyA9IGNzc2BcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtkZWZhdWx0QmFzZUNvbG9yfTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KFxuICAgIDkwZGVnLFxuICAgICR7ZGVmYXVsdEJhc2VDb2xvcn0sXG4gICAgJHtkZWZhdWx0SGlnaGxpZ2h0Q29sb3J9LFxuICAgICR7ZGVmYXVsdEJhc2VDb2xvcn1cbiAgKTtcbiAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHdpZHRoOiAxMDAlO1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2tlbGV0b24oe1xuICBjb3VudCxcbiAgZHVyYXRpb24sXG4gIHdpZHRoLFxuICB3cmFwcGVyOiBXcmFwcGVyLFxuICBoZWlnaHQsXG4gIGNpcmNsZSxcbiAgZGVsYXksXG4gIHN0eWxlOiBjdXN0b21TdHlsZSxcbiAgY2xhc3NOYW1lOiBjdXN0b21DbGFzc05hbWVcbn0pIHtcbiAgY29uc3QgZWxlbWVudHMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBsZXQgc3R5bGUgPSB7fTtcblxuICAgIGlmICh3aWR0aCAhPT0gbnVsbCkge1xuICAgICAgc3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICB9XG5cbiAgICBpZiAoaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgICBzdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgfVxuXG4gICAgaWYgKHdpZHRoICE9PSBudWxsICYmIGhlaWdodCAhPT0gbnVsbCAmJiBjaXJjbGUpIHtcbiAgICAgIHN0eWxlLmJvcmRlclJhZGl1cyA9IFwiNTAlXCI7XG4gICAgfVxuXG4gICAgbGV0IGNsYXNzTmFtZSA9IFwicmVhY3QtbG9hZGluZy1za2VsZXRvblwiO1xuICAgIGlmIChjdXN0b21DbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSBcIiBcIiArIGN1c3RvbUNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBlbGVtZW50cy5wdXNoKFxuICAgICAgPHNwYW5cbiAgICAgICAga2V5PXtpfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgJHtza2VsZXRvblN0eWxlc31cbiAgICAgICAgICBhbmltYXRpb246ICR7c2tlbGV0b25LZXlmcmFtZXMoZHVyYXRpb24sIGRlbGF5KX0gJHtkdXJhdGlvbiArXG4gICAgICAgICAgZGVsYXl9cyBlYXNlLWluLW91dCBpbmZpbml0ZVxuICAgICAgICBgfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLmN1c3RvbVN0eWxlLFxuICAgICAgICAgIC4uLnN0eWxlXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgICZ6d25qO1xuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxzcGFuPlxuICAgICAge1dyYXBwZXJcbiAgICAgICAgPyBlbGVtZW50cy5tYXAoKGVsZW1lbnQsIGkpID0+IChcbiAgICAgICAgICAgIDxXcmFwcGVyIGtleT17aX0+XG4gICAgICAgICAgICAgIHtlbGVtZW50fVxuICAgICAgICAgICAgICAmenduajtcbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApKVxuICAgICAgICA6IGVsZW1lbnRzfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuU2tlbGV0b24uZGVmYXVsdFByb3BzID0ge1xuICBjb3VudDogMSxcbiAgZHVyYXRpb246IDEuMixcbiAgd2lkdGg6IG51bGwsXG4gIHdyYXBwZXI6IG51bGwsXG4gIGhlaWdodDogbnVsbCxcbiAgY2lyY2xlOiBmYWxzZSxcbiAgZGVsYXk6IDBcbn07XG4iXX0= */\")),\n style: _objectSpread({}, customStyle, {}, style)\n }, \"\\u200C\"));\n }\n return (0, _core.jsx)(\"span\", null, Wrapper ? elements.map(function (element, i) {\n return (0, _core.jsx)(Wrapper, {\n key: i\n }, element, \"\\u200C\");\n }) : elements);\n}\nSkeleton.defaultProps = {\n count: 1,\n duration: 1.2,\n width: null,\n wrapper: null,\n height: null,\n circle: false,\n delay: 0\n};","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport pathToRegexp from 'path-to-regexp';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== \"undefined\" // 'global proper'\n?\n// eslint-disable-next-line no-undef\nglobalThis : typeof window !== \"undefined\" ? window // Browser\n: typeof global !== \"undefined\" ? global // node.js\n: {};\nfunction getUniqueId() {\n var key = \"__global_unique_id__\";\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n} // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n var contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n var Provider = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Provider, _React$Component);\n function Provider() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n var _proto = Provider.prototype;\n _proto.getChildContext = function getChildContext() {\n var _ref;\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === \"function\" ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, \"calculateChangedBits: Expected the return value to be a \" + \"31-bit integer. Instead received: \" + changedBits) : void 0;\n }\n changedBits |= 0;\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n _proto.render = function render() {\n return this.props.children;\n };\n return Provider;\n }(React.Component);\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n var Consumer = /*#__PURE__*/function (_React$Component2) {\n _inheritsLoose(Consumer, _React$Component2);\n function Consumer() {\n var _this2;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n _this2 = _React$Component2.call.apply(_React$Component2, [this].concat(args)) || this;\n _this2.observedBits = void 0;\n _this2.state = {\n value: _this2.getValue()\n };\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n return _this2;\n }\n var _proto2 = Consumer.prototype;\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n return Consumer;\n }(React.Component);\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\n// MIT License\nvar createContext = React.createContext || createReactContext;\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\nvar historyContext = /*#__PURE__*/createNamedContext(\"Router-History\");\nvar context = /*#__PURE__*/createNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n function Router(props) {\n var _this;\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n _this._pendingLocation = location;\n });\n }\n return _this;\n }\n var _proto = Router.prototype;\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n this._isMounted = true;\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(function (location) {\n if (_this2._isMounted) {\n _this2.setState({\n location: location\n });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n };\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n }, /*#__PURE__*/React.createElement(historyContext.Provider, {\n children: this.props.children || null,\n value: this.props.history\n }));\n };\n return Router;\n}(React.Component);\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change <Router history>\") : void 0;\n };\n}\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\n\nvar MemoryRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n function MemoryRouter() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n var _proto = MemoryRouter.prototype;\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n return MemoryRouter;\n}(React.Component);\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<MemoryRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\nvar Lifecycle = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Lifecycle.prototype;\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n _proto.render = function render() {\n return null;\n };\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Prompt> outside a <Router>\") : invariant(false) : void 0;\n if (!when || context.staticContext) return null;\n var method = context.history.block;\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n if (params === void 0) {\n params = {};\n }\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Redirect> outside a <Router>\") : invariant(false) : void 0;\n var history = context.history,\n staticContext = context.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n return /*#__PURE__*/React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = {\n path: options\n };\n }\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\nfunction evalChildrenDev(children, props, path) {\n var value = children(props);\n process.env.NODE_ENV !== \"production\" ? warning(value !== undefined, \"You returned `undefined` from the `children` function of \" + (\"<Route\" + (path ? \" path=\\\"\" + path + \"\\\"\" : \"\") + \">, but you \") + \"should have returned a React element or `null`\") : void 0;\n return value || null;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Route.prototype;\n _proto.render = function render() {\n var _this = this;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {\n !context$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Route> outside a <Router>\") : invariant(false) : void 0;\n var location = _this.props.location || context$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$1.match;\n var props = _extends({}, context$1, {\n location: location,\n match: match\n });\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n return /*#__PURE__*/React.createElement(context.Provider, {\n value: props\n }, props.match ? children ? typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === \"function\" ? process.env.NODE_ENV !== \"production\" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);\n });\n };\n return Route;\n}(React.Component);\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\") : void 0;\n };\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with <StaticRouter>\", methodName) : invariant(false);\n };\n}\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\nvar StaticRouter = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n function StaticRouter() {\n var _this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n _this.handleListen = function () {\n return noop;\n };\n _this.handleBlock = function () {\n return noop;\n };\n return _this;\n }\n var _proto = StaticRouter.prototype;\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n return StaticRouter;\n}(React.Component);\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \"<StaticRouter> ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\n\nvar Switch = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n var _proto = Switch.prototype;\n _proto.render = function render() {\n var _this = this;\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <Switch> outside a <Router>\") : invariant(false) : void 0;\n var location = _this.props.location || context.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && /*#__PURE__*/React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context.match;\n }\n });\n return match ? /*#__PURE__*/React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n return Switch;\n}(React.Component);\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a <Router>\") : invariant(false) : void 0;\n return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {\n ref: wrappedComponentRef\n }));\n });\n };\n C.displayName = displayName;\n C.WrappedComponent = Component;\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n return hoistStatics(C, Component);\n}\nvar useContext = React.useContext;\nfunction useHistory() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useHistory()\") : invariant(false) : void 0;\n }\n return useContext(historyContext);\n}\nfunction useLocation() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useLocation()\") : invariant(false) : void 0;\n }\n return useContext(context).location;\n}\nfunction useParams() {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useParams()\") : invariant(false) : void 0;\n }\n var match = useContext(context).match;\n return match ? match.params : {};\n}\nfunction useRouteMatch(path) {\n if (process.env.NODE_ENV !== \"production\") {\n !(typeof useContext === \"function\") ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You must use React >= 16.8 in order to use useRouteMatch()\") : invariant(false) : void 0;\n }\n var location = useLocation();\n var match = useContext(context).match;\n return path ? matchPath(location.pathname, path) : match;\n}\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global$1 = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n if (global$1[key] && global$1[key] !== \"esm\") {\n var initialBuildName = buildNames[global$1[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n global$1[key] = \"esm\";\n }\n}\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, historyContext as __HistoryContext, context as __RouterContext, generatePath, matchPath, useHistory, useLocation, useParams, useRouteMatch, withRouter };\n//# sourceMappingURL=react-router.js.map","/** @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';\n\nvar b = \"function\" === typeof Symbol && Symbol.for,\n c = b ? Symbol.for(\"react.element\") : 60103,\n d = b ? Symbol.for(\"react.portal\") : 60106,\n e = b ? Symbol.for(\"react.fragment\") : 60107,\n f = b ? Symbol.for(\"react.strict_mode\") : 60108,\n g = b ? Symbol.for(\"react.profiler\") : 60114,\n h = b ? Symbol.for(\"react.provider\") : 60109,\n k = b ? Symbol.for(\"react.context\") : 60110,\n l = b ? Symbol.for(\"react.async_mode\") : 60111,\n m = b ? Symbol.for(\"react.concurrent_mode\") : 60111,\n n = b ? Symbol.for(\"react.forward_ref\") : 60112,\n p = b ? Symbol.for(\"react.suspense\") : 60113,\n q = b ? Symbol.for(\"react.suspense_list\") : 60120,\n r = b ? Symbol.for(\"react.memo\") : 60115,\n t = b ? Symbol.for(\"react.lazy\") : 60116,\n v = b ? Symbol.for(\"react.block\") : 60121,\n w = b ? Symbol.for(\"react.fundamental\") : 60117,\n x = b ? Symbol.for(\"react.responder\") : 60118,\n y = b ? Symbol.for(\"react.scope\") : 60119;\nfunction z(a) {\n if (\"object\" === typeof a && null !== a) {\n var u = a.$$typeof;\n switch (u) {\n case c:\n switch (a = a.type, a) {\n case l:\n case m:\n case e:\n case g:\n case f:\n case p:\n return a;\n default:\n switch (a = a && a.$$typeof, a) {\n case k:\n case n:\n case t:\n case r:\n case h:\n return a;\n default:\n return u;\n }\n }\n case d:\n return u;\n }\n }\n}\nfunction A(a) {\n return z(a) === m;\n}\nexports.AsyncMode = l;\nexports.ConcurrentMode = m;\nexports.ContextConsumer = k;\nexports.ContextProvider = h;\nexports.Element = c;\nexports.ForwardRef = n;\nexports.Fragment = e;\nexports.Lazy = t;\nexports.Memo = r;\nexports.Portal = d;\nexports.Profiler = g;\nexports.StrictMode = f;\nexports.Suspense = p;\nexports.isAsyncMode = function (a) {\n return A(a) || z(a) === l;\n};\nexports.isConcurrentMode = A;\nexports.isContextConsumer = function (a) {\n return z(a) === k;\n};\nexports.isContextProvider = function (a) {\n return z(a) === h;\n};\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === c;\n};\nexports.isForwardRef = function (a) {\n return z(a) === n;\n};\nexports.isFragment = function (a) {\n return z(a) === e;\n};\nexports.isLazy = function (a) {\n return z(a) === t;\n};\nexports.isMemo = function (a) {\n return z(a) === r;\n};\nexports.isPortal = function (a) {\n return z(a) === d;\n};\nexports.isProfiler = function (a) {\n return z(a) === g;\n};\nexports.isStrictMode = function (a) {\n return z(a) === f;\n};\nexports.isSuspense = function (a) {\n return z(a) === p;\n};\nexports.isValidElementType = function (a) {\n 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);\n};\nexports.typeOf = z;","'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}","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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']) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n };\n}();\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\nvar _objectAssign = require('object-assign');\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\nvar truthy = function truthy(x) {\n return x;\n};\nexports['default'] = function (input) {\n var _ref = Array.isArray(input) && input.length === 2 ? input : [input, null];\n var _ref2 = _slicedToArray(_ref, 2);\n var theme = _ref2[0];\n var classNameDecorator = _ref2[1];\n return function (key) {\n for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n names[_key - 1] = arguments[_key];\n }\n var styles = names.map(function (name) {\n return theme[name];\n }).filter(truthy);\n return typeof styles[0] === 'string' || typeof classNameDecorator === 'function' ? {\n key: key,\n className: classNameDecorator ? classNameDecorator.apply(undefined, _toConsumableArray(styles)) : styles.join(' ')\n } : {\n key: key,\n style: _objectAssign2['default'].apply(undefined, [{}].concat(_toConsumableArray(styles)))\n };\n };\n};\nmodule.exports = exports['default'];","'use strict';\n\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nfunction ToObject(val) {\n if (val == null) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n}\nfunction ownEnumerableKeys(obj) {\n var keys = Object.getOwnPropertyNames(obj);\n if (Object.getOwnPropertySymbols) {\n keys = keys.concat(Object.getOwnPropertySymbols(obj));\n }\n return keys.filter(function (key) {\n return propIsEnumerable.call(obj, key);\n });\n}\nmodule.exports = Object.assign || function (target, source) {\n var from;\n var keys;\n var to = ToObject(target);\n for (var s = 1; s < arguments.length; s++) {\n from = arguments[s];\n keys = ownEnumerableKeys(Object(from));\n for (var i = 0; i < keys.length; i++) {\n to[keys[i]] = from[keys[i]];\n }\n }\n return to;\n};","import { Component, createElement } from 'react';\n\n/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Use 'export' statement over 'module.exports' assignment\n **/\n\n// Check `document` and `window` in case of server-side rendering\nlet windowObject;\nif (typeof window !== \"undefined\") {\n windowObject = window;\n\n // eslint-disable-next-line no-restricted-globals\n} else if (typeof self !== \"undefined\") {\n // eslint-disable-next-line no-restricted-globals\n windowObject = self;\n} else {\n windowObject = global;\n}\nlet cancelFrame = null;\nlet requestFrame = null;\nconst TIMEOUT_DURATION = 20;\nconst clearTimeoutFn = windowObject.clearTimeout;\nconst setTimeoutFn = windowObject.setTimeout;\nconst cancelAnimationFrameFn = windowObject.cancelAnimationFrame || windowObject.mozCancelAnimationFrame || windowObject.webkitCancelAnimationFrame;\nconst requestAnimationFrameFn = windowObject.requestAnimationFrame || windowObject.mozRequestAnimationFrame || windowObject.webkitRequestAnimationFrame;\nif (cancelAnimationFrameFn == null || requestAnimationFrameFn == null) {\n // For environments that don't support animation frame,\n // fallback to a setTimeout based approach.\n cancelFrame = clearTimeoutFn;\n requestFrame = function requestAnimationFrameViaSetTimeout(callback) {\n return setTimeoutFn(callback, TIMEOUT_DURATION);\n };\n} else {\n // Counter intuitively, environments that support animation frames can be trickier.\n // Chrome's \"Throttle non-visible cross-origin iframes\" flag can prevent rAFs from being called.\n // In this case, we should fallback to a setTimeout() implementation.\n cancelFrame = function cancelFrame(_ref) {\n let [animationFrameID, timeoutID] = _ref;\n cancelAnimationFrameFn(animationFrameID);\n clearTimeoutFn(timeoutID);\n };\n requestFrame = function requestAnimationFrameWithSetTimeoutFallback(callback) {\n const animationFrameID = requestAnimationFrameFn(function animationFrameCallback() {\n clearTimeoutFn(timeoutID);\n callback();\n });\n const timeoutID = setTimeoutFn(function timeoutCallback() {\n cancelAnimationFrameFn(animationFrameID);\n callback();\n }, TIMEOUT_DURATION);\n return [animationFrameID, timeoutID];\n };\n}\nfunction createDetectElementResize(nonce) {\n let animationKeyframes;\n let animationName;\n let animationStartEvent;\n let animationStyle;\n let checkTriggers;\n let resetTriggers;\n let scrollListener;\n const attachEvent = typeof document !== \"undefined\" && document.attachEvent;\n if (!attachEvent) {\n resetTriggers = function (element) {\n const triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + \"px\";\n expandChild.style.height = expand.offsetHeight + 1 + \"px\";\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n checkTriggers = function (element) {\n return element.offsetWidth !== element.__resizeLast__.width || element.offsetHeight !== element.__resizeLast__.height;\n };\n scrollListener = function (e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === \"function\" && e.target.className.indexOf(\"contract-trigger\") < 0 && e.target.className.indexOf(\"expand-trigger\") < 0) {\n return;\n }\n const element = this;\n resetTriggers(this);\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n this.__resizeRAF__ = requestFrame(function animationFrame() {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n element.__resizeListeners__.forEach(function forEachResizeListener(fn) {\n fn.call(element, e);\n });\n }\n });\n };\n\n /* Detect CSS Animations support to detect element display/re-attach */\n let animation = false;\n let keyframeprefix = \"\";\n animationStartEvent = \"animationstart\";\n const domPrefixes = \"Webkit Moz O ms\".split(\" \");\n let startEvents = \"webkitAnimationStart animationstart oAnimationStart MSAnimationStart\".split(\" \");\n let pfx = \"\";\n {\n const elm = document.createElement(\"fakeelement\");\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n if (animation === false) {\n for (let i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + \"AnimationName\"] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = \"-\" + pfx.toLowerCase() + \"-\";\n animationStartEvent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n animationName = \"resizeanim\";\n animationKeyframes = \"@\" + keyframeprefix + \"keyframes \" + animationName + \" { from { opacity: 0; } to { opacity: 0; } } \";\n animationStyle = keyframeprefix + \"animation: 1ms \" + animationName + \"; \";\n }\n const createStyles = function (doc) {\n if (!doc.getElementById(\"detectElementResize\")) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n const css = (animationKeyframes ? animationKeyframes : \"\") + \".resize-triggers { \" + (animationStyle ? animationStyle : \"\") + \"visibility: hidden; opacity: 0; } \" + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName(\"head\")[0],\n style = doc.createElement(\"style\");\n style.id = \"detectElementResize\";\n style.type = \"text/css\";\n if (nonce != null) {\n style.setAttribute(\"nonce\", nonce);\n }\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n head.appendChild(style);\n }\n };\n const addResizeListener = function (element, fn) {\n if (attachEvent) {\n element.attachEvent(\"onresize\", fn);\n } else {\n if (!element.__resizeTriggers__) {\n const doc = element.ownerDocument;\n const elementStyle = windowObject.getComputedStyle(element);\n if (elementStyle && elementStyle.position === \"static\") {\n element.style.position = \"relative\";\n }\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement(\"div\")).className = \"resize-triggers\";\n const expandTrigger = doc.createElement(\"div\");\n expandTrigger.className = \"expand-trigger\";\n expandTrigger.appendChild(doc.createElement(\"div\"));\n const contractTrigger = doc.createElement(\"div\");\n contractTrigger.className = \"contract-trigger\";\n element.__resizeTriggers__.appendChild(expandTrigger);\n element.__resizeTriggers__.appendChild(contractTrigger);\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener(\"scroll\", scrollListener, true);\n\n /* Listen for a css animation to detect element display/re-attach */\n if (animationStartEvent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName === animationName) {\n resetTriggers(element);\n }\n };\n element.__resizeTriggers__.addEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n }\n }\n element.__resizeListeners__.push(fn);\n }\n };\n const removeResizeListener = function (element, fn) {\n if (attachEvent) {\n element.detachEvent(\"onresize\", fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n if (!element.__resizeListeners__.length) {\n element.removeEventListener(\"scroll\", scrollListener, true);\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationStartEvent, element.__resizeTriggers__.__animationListener__);\n element.__resizeTriggers__.__animationListener__ = null;\n }\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {\n // Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n return {\n addResizeListener,\n removeResizeListener\n };\n}\nclass AutoSizer extends Component {\n constructor() {\n super(...arguments);\n this.state = {\n height: this.props.defaultHeight || 0,\n scaledHeight: this.props.defaultHeight || 0,\n scaledWidth: this.props.defaultWidth || 0,\n width: this.props.defaultWidth || 0\n };\n this._autoSizer = null;\n this._detectElementResize = null;\n this._parentNode = null;\n this._resizeObserver = null;\n this._timeoutId = null;\n this._onResize = () => {\n this._timeoutId = null;\n const {\n disableHeight,\n disableWidth,\n onResize\n } = this.props;\n if (this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n\n const style = window.getComputedStyle(this._parentNode) || {};\n const paddingLeft = parseFloat(style.paddingLeft || \"0\");\n const paddingRight = parseFloat(style.paddingRight || \"0\");\n const paddingTop = parseFloat(style.paddingTop || \"0\");\n const paddingBottom = parseFloat(style.paddingBottom || \"0\");\n const rect = this._parentNode.getBoundingClientRect();\n const scaledHeight = rect.height - paddingTop - paddingBottom;\n const scaledWidth = rect.width - paddingLeft - paddingRight;\n const height = this._parentNode.offsetHeight - paddingTop - paddingBottom;\n const width = this._parentNode.offsetWidth - paddingLeft - paddingRight;\n if (!disableHeight && (this.state.height !== height || this.state.scaledHeight !== scaledHeight) || !disableWidth && (this.state.width !== width || this.state.scaledWidth !== scaledWidth)) {\n this.setState({\n height,\n width,\n scaledHeight,\n scaledWidth\n });\n if (typeof onResize === \"function\") {\n onResize({\n height,\n scaledHeight,\n scaledWidth,\n width\n });\n }\n }\n }\n };\n this._setRef = autoSizer => {\n this._autoSizer = autoSizer;\n };\n }\n componentDidMount() {\n const {\n nonce\n } = this.props;\n const parentNode = this._autoSizer ? this._autoSizer.parentNode : null;\n if (parentNode != null && parentNode.ownerDocument && parentNode.ownerDocument.defaultView && parentNode instanceof parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = parentNode;\n\n // Use ResizeObserver from the same context where parentNode (which we will observe) was defined\n // Using just global can result into onResize events not being emitted in cases with multiple realms\n const ResizeObserverInstance = parentNode.ownerDocument.defaultView.ResizeObserver;\n if (ResizeObserverInstance != null) {\n this._resizeObserver = new ResizeObserverInstance(() => {\n // Guard against \"ResizeObserver loop limit exceeded\" error;\n // could be triggered if the state update causes the ResizeObserver handler to run long.\n // See https://github.com/bvaughn/react-virtualized-auto-sizer/issues/55\n this._timeoutId = setTimeout(this._onResize, 0);\n });\n this._resizeObserver.observe(parentNode);\n } else {\n // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n this._detectElementResize = createDetectElementResize(nonce);\n this._detectElementResize.addResizeListener(parentNode, this._onResize);\n }\n this._onResize();\n }\n }\n componentWillUnmount() {\n if (this._parentNode) {\n if (this._detectElementResize) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n if (this._timeoutId !== null) {\n clearTimeout(this._timeoutId);\n }\n if (this._resizeObserver) {\n this._resizeObserver.disconnect();\n }\n }\n }\n render() {\n const {\n children,\n defaultHeight,\n defaultWidth,\n disableHeight = false,\n disableWidth = false,\n doNotBailOutOnEmptyChildren = false,\n nonce,\n onResize,\n style = {},\n tagName = \"div\",\n ...rest\n } = this.props;\n const {\n height,\n scaledHeight,\n scaledWidth,\n width\n } = this.state;\n\n // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n const outerStyle = {\n overflow: \"visible\"\n };\n const childParams = {};\n\n // Avoid rendering children before the initial measurements have been collected.\n // At best this would just be wasting cycles.\n let bailoutOnChildren = false;\n if (!disableHeight) {\n if (height === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.height = 0;\n childParams.height = height;\n childParams.scaledHeight = scaledHeight;\n }\n if (!disableWidth) {\n if (width === 0) {\n bailoutOnChildren = true;\n }\n outerStyle.width = 0;\n childParams.width = width;\n childParams.scaledWidth = scaledWidth;\n }\n if (doNotBailOutOnEmptyChildren) {\n bailoutOnChildren = false;\n }\n return createElement(tagName, {\n ref: this._setRef,\n style: {\n ...outerStyle,\n ...style\n },\n ...rest\n }, !bailoutOnChildren && children(childParams));\n }\n}\nfunction isHeightAndWidthProps(props) {\n return props && props.disableHeight !== true && props.disableWidth !== true;\n}\nfunction isHeightOnlyProps(props) {\n return props && props.disableHeight !== true && props.disableWidth === true;\n}\nfunction isWidthOnlyProps(props) {\n return props && props.disableHeight === true && props.disableWidth !== true;\n}\nexport { AutoSizer as default, isHeightAndWidthProps, isHeightOnlyProps, isWidthOnlyProps };","var safeIsNaN = Number.isNaN || function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n};\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\nexport default memoizeOne;","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport memoizeOne from 'memoize-one';\nimport { createElement, PureComponent } from 'react';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// Animation frame based implementation of setTimeout.\n// Inspired by Joe Lambert, https://gist.github.com/joelambert/1002116#file-requesttimeout-js\nvar hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\nvar now = hasNativePerformanceNow ? function () {\n return performance.now();\n} : function () {\n return Date.now();\n};\nfunction cancelTimeout(timeoutID) {\n cancelAnimationFrame(timeoutID.id);\n}\nfunction requestTimeout(callback, delay) {\n var start = now();\n function tick() {\n if (now() - start >= delay) {\n callback.call(null);\n } else {\n timeoutID.id = requestAnimationFrame(tick);\n }\n }\n var timeoutID = {\n id: requestAnimationFrame(tick)\n };\n return timeoutID;\n}\nvar size = -1; // This utility copied from \"dom-helpers\" package.\n\nfunction getScrollbarSize(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n if (size === -1 || recalculate) {\n var div = document.createElement('div');\n var style = div.style;\n style.width = '50px';\n style.height = '50px';\n style.overflow = 'scroll';\n document.body.appendChild(div);\n size = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n }\n return size;\n}\nvar cachedRTLResult = null; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n// Chrome does not seem to adhere; its scrollLeft values are positive (measured relative to the left).\n// Safari's elastic bounce makes detecting this even more complicated wrt potential false positives.\n// The safest way to check this is to intentionally set a negative offset,\n// and then verify that the subsequent \"scroll\" event matches the negative offset.\n// If it does not match, then we can assume a non-standard RTL scroll implementation.\n\nfunction getRTLOffsetType(recalculate) {\n if (recalculate === void 0) {\n recalculate = false;\n }\n if (cachedRTLResult === null || recalculate) {\n var outerDiv = document.createElement('div');\n var outerStyle = outerDiv.style;\n outerStyle.width = '50px';\n outerStyle.height = '50px';\n outerStyle.overflow = 'scroll';\n outerStyle.direction = 'rtl';\n var innerDiv = document.createElement('div');\n var innerStyle = innerDiv.style;\n innerStyle.width = '100px';\n innerStyle.height = '100px';\n outerDiv.appendChild(innerDiv);\n document.body.appendChild(outerDiv);\n if (outerDiv.scrollLeft > 0) {\n cachedRTLResult = 'positive-descending';\n } else {\n outerDiv.scrollLeft = 1;\n if (outerDiv.scrollLeft === 0) {\n cachedRTLResult = 'negative';\n } else {\n cachedRTLResult = 'positive-ascending';\n }\n }\n document.body.removeChild(outerDiv);\n return cachedRTLResult;\n }\n return cachedRTLResult;\n}\nvar IS_SCROLLING_DEBOUNCE_INTERVAL = 150;\nvar defaultItemKey = function defaultItemKey(_ref) {\n var columnIndex = _ref.columnIndex,\n data = _ref.data,\n rowIndex = _ref.rowIndex;\n return rowIndex + \":\" + columnIndex;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\nvar devWarningsOverscanCount = null;\nvar devWarningsOverscanRowsColumnsCount = null;\nvar devWarningsTagName = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsOverscanCount = /*#__PURE__*/new WeakSet();\n devWarningsOverscanRowsColumnsCount = /*#__PURE__*/new WeakSet();\n devWarningsTagName = /*#__PURE__*/new WeakSet();\n }\n}\nfunction createGridComponent(_ref2) {\n var _class;\n var getColumnOffset = _ref2.getColumnOffset,\n getColumnStartIndexForOffset = _ref2.getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex = _ref2.getColumnStopIndexForStartIndex,\n getColumnWidth = _ref2.getColumnWidth,\n getEstimatedTotalHeight = _ref2.getEstimatedTotalHeight,\n getEstimatedTotalWidth = _ref2.getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment = _ref2.getOffsetForColumnAndAlignment,\n getOffsetForRowAndAlignment = _ref2.getOffsetForRowAndAlignment,\n getRowHeight = _ref2.getRowHeight,\n getRowOffset = _ref2.getRowOffset,\n getRowStartIndexForOffset = _ref2.getRowStartIndexForOffset,\n getRowStopIndexForStartIndex = _ref2.getRowStopIndexForStartIndex,\n initInstanceProps = _ref2.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref2.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref2.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(Grid, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function Grid(props) {\n var _this;\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._resetIsScrollingTimeoutId = null;\n _this._outerRef = void 0;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n horizontalScrollDirection: 'forward',\n scrollLeft: typeof _this.props.initialScrollLeft === 'number' ? _this.props.initialScrollLeft : 0,\n scrollTop: typeof _this.props.initialScrollTop === 'number' ? _this.props.initialScrollTop : 0,\n scrollUpdateWasRequested: false,\n verticalScrollDirection: 'forward'\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanColumnStartIndex, overscanColumnStopIndex, overscanRowStartIndex, overscanRowStopIndex, visibleColumnStartIndex, visibleColumnStopIndex, visibleRowStartIndex, visibleRowStopIndex) {\n return _this.props.onItemsRendered({\n overscanColumnStartIndex: overscanColumnStartIndex,\n overscanColumnStopIndex: overscanColumnStopIndex,\n overscanRowStartIndex: overscanRowStartIndex,\n overscanRowStopIndex: overscanRowStopIndex,\n visibleColumnStartIndex: visibleColumnStartIndex,\n visibleColumnStopIndex: visibleColumnStopIndex,\n visibleRowStartIndex: visibleRowStartIndex,\n visibleRowStopIndex: visibleRowStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollLeft, scrollTop, horizontalScrollDirection, verticalScrollDirection, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n horizontalScrollDirection: horizontalScrollDirection,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n verticalScrollDirection: verticalScrollDirection,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n _this._getItemStyle = function (rowIndex, columnIndex) {\n var _this$props = _this.props,\n columnWidth = _this$props.columnWidth,\n direction = _this$props.direction,\n rowHeight = _this$props.rowHeight;\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && columnWidth, shouldResetStyleCacheOnItemSizeChange && direction, shouldResetStyleCacheOnItemSizeChange && rowHeight);\n var key = rowIndex + \":\" + columnIndex;\n var style;\n if (itemStyleCache.hasOwnProperty(key)) {\n style = itemStyleCache[key];\n } else {\n var _offset = getColumnOffset(_this.props, columnIndex, _this._instanceProps);\n var isRtl = direction === 'rtl';\n itemStyleCache[key] = style = {\n position: 'absolute',\n left: isRtl ? undefined : _offset,\n right: isRtl ? _offset : undefined,\n top: getRowOffset(_this.props, rowIndex, _this._instanceProps),\n height: getRowHeight(_this.props, rowIndex, _this._instanceProps),\n width: getColumnWidth(_this.props, columnIndex, _this._instanceProps)\n };\n }\n return style;\n };\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n _this._onScroll = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientHeight = _event$currentTarget.clientHeight,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollTop = _event$currentTarget.scrollTop,\n scrollHeight = _event$currentTarget.scrollHeight,\n scrollWidth = _event$currentTarget.scrollWidth;\n _this.setState(function (prevState) {\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n var direction = _this.props.direction; // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n\n var calculatedScrollLeft = scrollLeft;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n calculatedScrollLeft = -scrollLeft;\n break;\n case 'positive-descending':\n calculatedScrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n calculatedScrollLeft = Math.max(0, Math.min(calculatedScrollLeft, scrollWidth - clientWidth));\n var calculatedScrollTop = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: calculatedScrollLeft,\n scrollTop: calculatedScrollTop,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward',\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL);\n };\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1);\n });\n };\n return _this;\n }\n Grid.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n var _proto = Grid.prototype;\n _proto.scrollTo = function scrollTo(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n if (scrollLeft !== undefined) {\n scrollLeft = Math.max(0, scrollLeft);\n }\n if (scrollTop !== undefined) {\n scrollTop = Math.max(0, scrollTop);\n }\n this.setState(function (prevState) {\n if (scrollLeft === undefined) {\n scrollLeft = prevState.scrollLeft;\n }\n if (scrollTop === undefined) {\n scrollTop = prevState.scrollTop;\n }\n if (prevState.scrollLeft === scrollLeft && prevState.scrollTop === scrollTop) {\n return null;\n }\n return {\n horizontalScrollDirection: prevState.scrollLeft < scrollLeft ? 'forward' : 'backward',\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollUpdateWasRequested: true,\n verticalScrollDirection: prevState.scrollTop < scrollTop ? 'forward' : 'backward'\n };\n }, this._resetIsScrollingDebounced);\n };\n _proto.scrollToItem = function scrollToItem(_ref4) {\n var _ref4$align = _ref4.align,\n align = _ref4$align === void 0 ? 'auto' : _ref4$align,\n columnIndex = _ref4.columnIndex,\n rowIndex = _ref4.rowIndex;\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n height = _this$props2.height,\n rowCount = _this$props2.rowCount,\n width = _this$props2.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n var scrollbarSize = getScrollbarSize();\n if (columnIndex !== undefined) {\n columnIndex = Math.max(0, Math.min(columnIndex, columnCount - 1));\n }\n if (rowIndex !== undefined) {\n rowIndex = Math.max(0, Math.min(rowIndex, rowCount - 1));\n }\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps); // The scrollbar size should be considered when scrolling an item into view,\n // to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n\n var horizontalScrollbarSize = estimatedTotalWidth > width ? scrollbarSize : 0;\n var verticalScrollbarSize = estimatedTotalHeight > height ? scrollbarSize : 0;\n this.scrollTo({\n scrollLeft: columnIndex !== undefined ? getOffsetForColumnAndAlignment(this.props, columnIndex, align, scrollLeft, this._instanceProps, verticalScrollbarSize) : scrollLeft,\n scrollTop: rowIndex !== undefined ? getOffsetForRowAndAlignment(this.props, rowIndex, align, scrollTop, this._instanceProps, horizontalScrollbarSize) : scrollTop\n });\n };\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n initialScrollLeft = _this$props3.initialScrollLeft,\n initialScrollTop = _this$props3.initialScrollTop;\n if (this._outerRef != null) {\n var outerRef = this._outerRef;\n if (typeof initialScrollLeft === 'number') {\n outerRef.scrollLeft = initialScrollLeft;\n }\n if (typeof initialScrollTop === 'number') {\n outerRef.scrollTop = initialScrollTop;\n }\n }\n this._callPropsCallbacks();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n var direction = this.props.direction;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollTop = _this$state2.scrollTop,\n scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n if (scrollUpdateWasRequested && this._outerRef != null) {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n var outerRef = this._outerRef;\n if (direction === 'rtl') {\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollLeft;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollLeft;\n break;\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } else {\n outerRef.scrollLeft = Math.max(0, scrollLeft);\n }\n outerRef.scrollTop = Math.max(0, scrollTop);\n }\n this._callPropsCallbacks();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n _proto.render = function render() {\n var _this$props4 = this.props,\n children = _this$props4.children,\n className = _this$props4.className,\n columnCount = _this$props4.columnCount,\n direction = _this$props4.direction,\n height = _this$props4.height,\n innerRef = _this$props4.innerRef,\n innerElementType = _this$props4.innerElementType,\n innerTagName = _this$props4.innerTagName,\n itemData = _this$props4.itemData,\n _this$props4$itemKey = _this$props4.itemKey,\n itemKey = _this$props4$itemKey === void 0 ? defaultItemKey : _this$props4$itemKey,\n outerElementType = _this$props4.outerElementType,\n outerTagName = _this$props4.outerTagName,\n rowCount = _this$props4.rowCount,\n style = _this$props4.style,\n useIsScrolling = _this$props4.useIsScrolling,\n width = _this$props4.width;\n var isScrolling = this.state.isScrolling;\n var _this$_getHorizontalR = this._getHorizontalRangeToRender(),\n columnStartIndex = _this$_getHorizontalR[0],\n columnStopIndex = _this$_getHorizontalR[1];\n var _this$_getVerticalRan = this._getVerticalRangeToRender(),\n rowStartIndex = _this$_getVerticalRan[0],\n rowStopIndex = _this$_getVerticalRan[1];\n var items = [];\n if (columnCount > 0 && rowCount) {\n for (var _rowIndex = rowStartIndex; _rowIndex <= rowStopIndex; _rowIndex++) {\n for (var _columnIndex = columnStartIndex; _columnIndex <= columnStopIndex; _columnIndex++) {\n items.push(createElement(children, {\n columnIndex: _columnIndex,\n data: itemData,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n key: itemKey({\n columnIndex: _columnIndex,\n data: itemData,\n rowIndex: _rowIndex\n }),\n rowIndex: _rowIndex,\n style: this._getItemStyle(_rowIndex, _columnIndex)\n }));\n }\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n var estimatedTotalHeight = getEstimatedTotalHeight(this.props, this._instanceProps);\n var estimatedTotalWidth = getEstimatedTotalWidth(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: this._onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: estimatedTotalHeight,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: estimatedTotalWidth\n }\n }));\n };\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n var _this$props5 = this.props,\n columnCount = _this$props5.columnCount,\n onItemsRendered = _this$props5.onItemsRendered,\n onScroll = _this$props5.onScroll,\n rowCount = _this$props5.rowCount;\n if (typeof onItemsRendered === 'function') {\n if (columnCount > 0 && rowCount > 0) {\n var _this$_getHorizontalR2 = this._getHorizontalRangeToRender(),\n _overscanColumnStartIndex = _this$_getHorizontalR2[0],\n _overscanColumnStopIndex = _this$_getHorizontalR2[1],\n _visibleColumnStartIndex = _this$_getHorizontalR2[2],\n _visibleColumnStopIndex = _this$_getHorizontalR2[3];\n var _this$_getVerticalRan2 = this._getVerticalRangeToRender(),\n _overscanRowStartIndex = _this$_getVerticalRan2[0],\n _overscanRowStopIndex = _this$_getVerticalRan2[1],\n _visibleRowStartIndex = _this$_getVerticalRan2[2],\n _visibleRowStopIndex = _this$_getVerticalRan2[3];\n this._callOnItemsRendered(_overscanColumnStartIndex, _overscanColumnStopIndex, _overscanRowStartIndex, _overscanRowStopIndex, _visibleColumnStartIndex, _visibleColumnStopIndex, _visibleRowStartIndex, _visibleRowStopIndex);\n }\n }\n if (typeof onScroll === 'function') {\n var _this$state3 = this.state,\n _horizontalScrollDirection = _this$state3.horizontalScrollDirection,\n _scrollLeft = _this$state3.scrollLeft,\n _scrollTop = _this$state3.scrollTop,\n _scrollUpdateWasRequested = _this$state3.scrollUpdateWasRequested,\n _verticalScrollDirection = _this$state3.verticalScrollDirection;\n this._callOnScroll(_scrollLeft, _scrollTop, _horizontalScrollDirection, _verticalScrollDirection, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n _proto._getHorizontalRangeToRender = function _getHorizontalRangeToRender() {\n var _this$props6 = this.props,\n columnCount = _this$props6.columnCount,\n overscanColumnCount = _this$props6.overscanColumnCount,\n overscanColumnsCount = _this$props6.overscanColumnsCount,\n overscanCount = _this$props6.overscanCount,\n rowCount = _this$props6.rowCount;\n var _this$state4 = this.state,\n horizontalScrollDirection = _this$state4.horizontalScrollDirection,\n isScrolling = _this$state4.isScrolling,\n scrollLeft = _this$state4.scrollLeft;\n var overscanCountResolved = overscanColumnCount || overscanColumnsCount || overscanCount || 1;\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n var startIndex = getColumnStartIndexForOffset(this.props, scrollLeft, this._instanceProps);\n var stopIndex = getColumnStopIndexForStartIndex(this.props, startIndex, scrollLeft, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || horizontalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || horizontalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(columnCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n _proto._getVerticalRangeToRender = function _getVerticalRangeToRender() {\n var _this$props7 = this.props,\n columnCount = _this$props7.columnCount,\n overscanCount = _this$props7.overscanCount,\n overscanRowCount = _this$props7.overscanRowCount,\n overscanRowsCount = _this$props7.overscanRowsCount,\n rowCount = _this$props7.rowCount;\n var _this$state5 = this.state,\n isScrolling = _this$state5.isScrolling,\n verticalScrollDirection = _this$state5.verticalScrollDirection,\n scrollTop = _this$state5.scrollTop;\n var overscanCountResolved = overscanRowCount || overscanRowsCount || overscanCount || 1;\n if (columnCount === 0 || rowCount === 0) {\n return [0, 0, 0, 0];\n }\n var startIndex = getRowStartIndexForOffset(this.props, scrollTop, this._instanceProps);\n var stopIndex = getRowStopIndexForStartIndex(this.props, startIndex, scrollTop, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || verticalScrollDirection === 'backward' ? Math.max(1, overscanCountResolved) : 1;\n var overscanForward = !isScrolling || verticalScrollDirection === 'forward' ? Math.max(1, overscanCountResolved) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(rowCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n return Grid;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n useIsScrolling: false\n }, _class;\n}\nvar validateSharedProps = function validateSharedProps(_ref5, _ref6) {\n var children = _ref5.children,\n direction = _ref5.direction,\n height = _ref5.height,\n innerTagName = _ref5.innerTagName,\n outerTagName = _ref5.outerTagName,\n overscanColumnsCount = _ref5.overscanColumnsCount,\n overscanCount = _ref5.overscanCount,\n overscanRowsCount = _ref5.overscanRowsCount,\n width = _ref5.width;\n var instance = _ref6.instance;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof overscanCount === 'number') {\n if (devWarningsOverscanCount && !devWarningsOverscanCount.has(instance)) {\n devWarningsOverscanCount.add(instance);\n console.warn('The overscanCount prop has been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n if (typeof overscanColumnsCount === 'number' || typeof overscanRowsCount === 'number') {\n if (devWarningsOverscanRowsColumnsCount && !devWarningsOverscanRowsColumnsCount.has(instance)) {\n devWarningsOverscanRowsColumnsCount.add(instance);\n console.warn('The overscanColumnsCount and overscanRowsCount props have been deprecated. ' + 'Please use the overscanColumnCount and overscanRowCount props instead.');\n }\n }\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName && !devWarningsTagName.has(instance)) {\n devWarningsTagName.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n }\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n switch (direction) {\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n if (typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Grids must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n }\n if (typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Grids must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\nvar DEFAULT_ESTIMATED_ITEM_SIZE = 50;\nvar getEstimatedTotalHeight = function getEstimatedTotalHeight(_ref, _ref2) {\n var rowCount = _ref.rowCount;\n var rowMetadataMap = _ref2.rowMetadataMap,\n estimatedRowHeight = _ref2.estimatedRowHeight,\n lastMeasuredRowIndex = _ref2.lastMeasuredRowIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredRowIndex >= rowCount) {\n lastMeasuredRowIndex = rowCount - 1;\n }\n if (lastMeasuredRowIndex >= 0) {\n var itemMetadata = rowMetadataMap[lastMeasuredRowIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n var numUnmeasuredItems = rowCount - lastMeasuredRowIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedRowHeight;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\nvar getEstimatedTotalWidth = function getEstimatedTotalWidth(_ref3, _ref4) {\n var columnCount = _ref3.columnCount;\n var columnMetadataMap = _ref4.columnMetadataMap,\n estimatedColumnWidth = _ref4.estimatedColumnWidth,\n lastMeasuredColumnIndex = _ref4.lastMeasuredColumnIndex;\n var totalSizeOfMeasuredRows = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredColumnIndex >= columnCount) {\n lastMeasuredColumnIndex = columnCount - 1;\n }\n if (lastMeasuredColumnIndex >= 0) {\n var itemMetadata = columnMetadataMap[lastMeasuredColumnIndex];\n totalSizeOfMeasuredRows = itemMetadata.offset + itemMetadata.size;\n }\n var numUnmeasuredItems = columnCount - lastMeasuredColumnIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedColumnWidth;\n return totalSizeOfMeasuredRows + totalSizeOfUnmeasuredItems;\n};\nvar getItemMetadata = function getItemMetadata(itemType, props, index, instanceProps) {\n var itemMetadataMap, itemSize, lastMeasuredIndex;\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n itemSize = props.columnWidth;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n itemSize = props.rowHeight;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n if (index > lastMeasuredIndex) {\n var offset = 0;\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n if (itemType === 'column') {\n instanceProps.lastMeasuredColumnIndex = index;\n } else {\n instanceProps.lastMeasuredRowIndex = index;\n }\n }\n return itemMetadataMap[index];\n};\nvar findNearestItem = function findNearestItem(itemType, props, instanceProps, offset) {\n var itemMetadataMap, lastMeasuredIndex;\n if (itemType === 'column') {\n itemMetadataMap = instanceProps.columnMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredColumnIndex;\n } else {\n itemMetadataMap = instanceProps.rowMetadataMap;\n lastMeasuredIndex = instanceProps.lastMeasuredRowIndex;\n }\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch(itemType, props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch(itemType, props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\nvar findNearestItemBinarySearch = function findNearestItemBinarySearch(itemType, props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata(itemType, props, middle, instanceProps).offset;\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nvar findNearestItemExponentialSearch = function findNearestItemExponentialSearch(itemType, props, instanceProps, index, offset) {\n var itemCount = itemType === 'column' ? props.columnCount : props.rowCount;\n var interval = 1;\n while (index < itemCount && getItemMetadata(itemType, props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n return findNearestItemBinarySearch(itemType, props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\nvar getOffsetForIndexAndAlignment = function getOffsetForIndexAndAlignment(itemType, props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var size = itemType === 'column' ? props.width : props.height;\n var itemMetadata = getItemMetadata(itemType, props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = itemType === 'column' ? getEstimatedTotalWidth(props, instanceProps) : getEstimatedTotalHeight(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + scrollbarSize + itemMetadata.size);\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n};\nvar VariableSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(props, index, instanceProps) {\n return getItemMetadata('column', props, index, instanceProps).offset;\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(props, scrollLeft, instanceProps) {\n return findNearestItem('column', props, instanceProps, scrollLeft);\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, instanceProps) {\n var columnCount = props.columnCount,\n width = props.width;\n var itemMetadata = getItemMetadata('column', props, startIndex, instanceProps);\n var maxOffset = scrollLeft + width;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n while (stopIndex < columnCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('column', props, stopIndex, instanceProps).size;\n }\n return stopIndex;\n },\n getColumnWidth: function getColumnWidth(props, index, instanceProps) {\n return instanceProps.columnMetadataMap[index].size;\n },\n getEstimatedTotalHeight: getEstimatedTotalHeight,\n getEstimatedTotalWidth: getEstimatedTotalWidth,\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('column', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n return getOffsetForIndexAndAlignment('row', props, index, align, scrollOffset, instanceProps, scrollbarSize);\n },\n getRowOffset: function getRowOffset(props, index, instanceProps) {\n return getItemMetadata('row', props, index, instanceProps).offset;\n },\n getRowHeight: function getRowHeight(props, index, instanceProps) {\n return instanceProps.rowMetadataMap[index].size;\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(props, scrollTop, instanceProps) {\n return findNearestItem('row', props, instanceProps, scrollTop);\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(props, startIndex, scrollTop, instanceProps) {\n var rowCount = props.rowCount,\n height = props.height;\n var itemMetadata = getItemMetadata('row', props, startIndex, instanceProps);\n var maxOffset = scrollTop + height;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n while (stopIndex < rowCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata('row', props, stopIndex, instanceProps).size;\n }\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref5 = props,\n estimatedColumnWidth = _ref5.estimatedColumnWidth,\n estimatedRowHeight = _ref5.estimatedRowHeight;\n var instanceProps = {\n columnMetadataMap: {},\n estimatedColumnWidth: estimatedColumnWidth || DEFAULT_ESTIMATED_ITEM_SIZE,\n estimatedRowHeight: estimatedRowHeight || DEFAULT_ESTIMATED_ITEM_SIZE,\n lastMeasuredColumnIndex: -1,\n lastMeasuredRowIndex: -1,\n rowMetadataMap: {}\n };\n instance.resetAfterColumnIndex = function (columnIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n instance.resetAfterIndices({\n columnIndex: columnIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n instance.resetAfterRowIndex = function (rowIndex, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n instance.resetAfterIndices({\n rowIndex: rowIndex,\n shouldForceUpdate: shouldForceUpdate\n });\n };\n instance.resetAfterIndices = function (_ref6) {\n var columnIndex = _ref6.columnIndex,\n rowIndex = _ref6.rowIndex,\n _ref6$shouldForceUpda = _ref6.shouldForceUpdate,\n shouldForceUpdate = _ref6$shouldForceUpda === void 0 ? true : _ref6$shouldForceUpda;\n if (typeof columnIndex === 'number') {\n instanceProps.lastMeasuredColumnIndex = Math.min(instanceProps.lastMeasuredColumnIndex, columnIndex - 1);\n }\n if (typeof rowIndex === 'number') {\n instanceProps.lastMeasuredRowIndex = Math.min(instanceProps.lastMeasuredRowIndex, rowIndex - 1);\n } // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref7) {\n var columnWidth = _ref7.columnWidth,\n rowHeight = _ref7.rowHeight;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'function') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n } else if (typeof rowHeight !== 'function') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\nvar IS_SCROLLING_DEBOUNCE_INTERVAL$1 = 150;\nvar defaultItemKey$1 = function defaultItemKey(index, data) {\n return index;\n}; // In DEV mode, this Set helps us only log a warning once per component instance.\n// This avoids spamming the console every time a render happens.\n\nvar devWarningsDirection = null;\nvar devWarningsTagName$1 = null;\nif (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined' && typeof window.WeakSet !== 'undefined') {\n devWarningsDirection = /*#__PURE__*/new WeakSet();\n devWarningsTagName$1 = /*#__PURE__*/new WeakSet();\n }\n}\nfunction createListComponent(_ref) {\n var _class;\n var getItemOffset = _ref.getItemOffset,\n getEstimatedTotalSize = _ref.getEstimatedTotalSize,\n getItemSize = _ref.getItemSize,\n getOffsetForIndexAndAlignment = _ref.getOffsetForIndexAndAlignment,\n getStartIndexForOffset = _ref.getStartIndexForOffset,\n getStopIndexForStartIndex = _ref.getStopIndexForStartIndex,\n initInstanceProps = _ref.initInstanceProps,\n shouldResetStyleCacheOnItemSizeChange = _ref.shouldResetStyleCacheOnItemSizeChange,\n validateProps = _ref.validateProps;\n return _class = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(List, _PureComponent);\n\n // Always use explicit constructor for React components.\n // It produces less code after transpilation. (#26)\n // eslint-disable-next-line no-useless-constructor\n function List(props) {\n var _this;\n _this = _PureComponent.call(this, props) || this;\n _this._instanceProps = initInstanceProps(_this.props, _assertThisInitialized(_this));\n _this._outerRef = void 0;\n _this._resetIsScrollingTimeoutId = null;\n _this.state = {\n instance: _assertThisInitialized(_this),\n isScrolling: false,\n scrollDirection: 'forward',\n scrollOffset: typeof _this.props.initialScrollOffset === 'number' ? _this.props.initialScrollOffset : 0,\n scrollUpdateWasRequested: false\n };\n _this._callOnItemsRendered = void 0;\n _this._callOnItemsRendered = memoizeOne(function (overscanStartIndex, overscanStopIndex, visibleStartIndex, visibleStopIndex) {\n return _this.props.onItemsRendered({\n overscanStartIndex: overscanStartIndex,\n overscanStopIndex: overscanStopIndex,\n visibleStartIndex: visibleStartIndex,\n visibleStopIndex: visibleStopIndex\n });\n });\n _this._callOnScroll = void 0;\n _this._callOnScroll = memoizeOne(function (scrollDirection, scrollOffset, scrollUpdateWasRequested) {\n return _this.props.onScroll({\n scrollDirection: scrollDirection,\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: scrollUpdateWasRequested\n });\n });\n _this._getItemStyle = void 0;\n _this._getItemStyle = function (index) {\n var _this$props = _this.props,\n direction = _this$props.direction,\n itemSize = _this$props.itemSize,\n layout = _this$props.layout;\n var itemStyleCache = _this._getItemStyleCache(shouldResetStyleCacheOnItemSizeChange && itemSize, shouldResetStyleCacheOnItemSizeChange && layout, shouldResetStyleCacheOnItemSizeChange && direction);\n var style;\n if (itemStyleCache.hasOwnProperty(index)) {\n style = itemStyleCache[index];\n } else {\n var _offset = getItemOffset(_this.props, index, _this._instanceProps);\n var size = getItemSize(_this.props, index, _this._instanceProps); // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var isRtl = direction === 'rtl';\n var offsetHorizontal = isHorizontal ? _offset : 0;\n itemStyleCache[index] = style = {\n position: 'absolute',\n left: isRtl ? undefined : offsetHorizontal,\n right: isRtl ? offsetHorizontal : undefined,\n top: !isHorizontal ? _offset : 0,\n height: !isHorizontal ? size : '100%',\n width: isHorizontal ? size : '100%'\n };\n }\n return style;\n };\n _this._getItemStyleCache = void 0;\n _this._getItemStyleCache = memoizeOne(function (_, __, ___) {\n return {};\n });\n _this._onScrollHorizontal = function (event) {\n var _event$currentTarget = event.currentTarget,\n clientWidth = _event$currentTarget.clientWidth,\n scrollLeft = _event$currentTarget.scrollLeft,\n scrollWidth = _event$currentTarget.scrollWidth;\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollLeft) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n }\n var direction = _this.props.direction;\n var scrollOffset = scrollLeft;\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // It's also easier for this component if we convert offsets to the same format as they would be in for ltr.\n // So the simplest solution is to determine which browser behavior we're dealing with, and convert based on it.\n switch (getRTLOffsetType()) {\n case 'negative':\n scrollOffset = -scrollLeft;\n break;\n case 'positive-descending':\n scrollOffset = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n scrollOffset = Math.max(0, Math.min(scrollOffset, scrollWidth - clientWidth));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n _this._onScrollVertical = function (event) {\n var _event$currentTarget2 = event.currentTarget,\n clientHeight = _event$currentTarget2.clientHeight,\n scrollHeight = _event$currentTarget2.scrollHeight,\n scrollTop = _event$currentTarget2.scrollTop;\n _this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollTop) {\n // Scroll position may have been updated by cDM/cDU,\n // In which case we don't need to trigger another render,\n // And we don't want to update state.isScrolling.\n return null;\n } // Prevent Safari's elastic scrolling from causing visual shaking when scrolling past bounds.\n\n var scrollOffset = Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight));\n return {\n isScrolling: true,\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: false\n };\n }, _this._resetIsScrollingDebounced);\n };\n _this._outerRefSetter = function (ref) {\n var outerRef = _this.props.outerRef;\n _this._outerRef = ref;\n if (typeof outerRef === 'function') {\n outerRef(ref);\n } else if (outerRef != null && typeof outerRef === 'object' && outerRef.hasOwnProperty('current')) {\n outerRef.current = ref;\n }\n };\n _this._resetIsScrollingDebounced = function () {\n if (_this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(_this._resetIsScrollingTimeoutId);\n }\n _this._resetIsScrollingTimeoutId = requestTimeout(_this._resetIsScrolling, IS_SCROLLING_DEBOUNCE_INTERVAL$1);\n };\n _this._resetIsScrolling = function () {\n _this._resetIsScrollingTimeoutId = null;\n _this.setState({\n isScrolling: false\n }, function () {\n // Clear style cache after state update has been committed.\n // This way we don't break pure sCU for items that don't use isScrolling param.\n _this._getItemStyleCache(-1, null);\n });\n };\n return _this;\n }\n List.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n validateSharedProps$1(nextProps, prevState);\n validateProps(nextProps);\n return null;\n };\n var _proto = List.prototype;\n _proto.scrollTo = function scrollTo(scrollOffset) {\n scrollOffset = Math.max(0, scrollOffset);\n this.setState(function (prevState) {\n if (prevState.scrollOffset === scrollOffset) {\n return null;\n }\n return {\n scrollDirection: prevState.scrollOffset < scrollOffset ? 'forward' : 'backward',\n scrollOffset: scrollOffset,\n scrollUpdateWasRequested: true\n };\n }, this._resetIsScrollingDebounced);\n };\n _proto.scrollToItem = function scrollToItem(index, align) {\n if (align === void 0) {\n align = 'auto';\n }\n var _this$props2 = this.props,\n itemCount = _this$props2.itemCount,\n layout = _this$props2.layout;\n var scrollOffset = this.state.scrollOffset;\n index = Math.max(0, Math.min(index, itemCount - 1)); // The scrollbar size should be considered when scrolling an item into view, to ensure it's fully visible.\n // But we only need to account for its size when it's actually visible.\n // This is an edge case for lists; normally they only scroll in the dominant direction.\n\n var scrollbarSize = 0;\n if (this._outerRef) {\n var outerRef = this._outerRef;\n if (layout === 'vertical') {\n scrollbarSize = outerRef.scrollWidth > outerRef.clientWidth ? getScrollbarSize() : 0;\n } else {\n scrollbarSize = outerRef.scrollHeight > outerRef.clientHeight ? getScrollbarSize() : 0;\n }\n }\n this.scrollTo(getOffsetForIndexAndAlignment(this.props, index, align, scrollOffset, this._instanceProps, scrollbarSize));\n };\n _proto.componentDidMount = function componentDidMount() {\n var _this$props3 = this.props,\n direction = _this$props3.direction,\n initialScrollOffset = _this$props3.initialScrollOffset,\n layout = _this$props3.layout;\n if (typeof initialScrollOffset === 'number' && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n outerRef.scrollLeft = initialScrollOffset;\n } else {\n outerRef.scrollTop = initialScrollOffset;\n }\n }\n this._callPropsCallbacks();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n var _this$props4 = this.props,\n direction = _this$props4.direction,\n layout = _this$props4.layout;\n var _this$state = this.state,\n scrollOffset = _this$state.scrollOffset,\n scrollUpdateWasRequested = _this$state.scrollUpdateWasRequested;\n if (scrollUpdateWasRequested && this._outerRef != null) {\n var outerRef = this._outerRef; // TODO Deprecate direction \"horizontal\"\n\n if (direction === 'horizontal' || layout === 'horizontal') {\n if (direction === 'rtl') {\n // TRICKY According to the spec, scrollLeft should be negative for RTL aligned elements.\n // This is not the case for all browsers though (e.g. Chrome reports values as positive, measured relative to the left).\n // So we need to determine which browser behavior we're dealing with, and mimic it.\n switch (getRTLOffsetType()) {\n case 'negative':\n outerRef.scrollLeft = -scrollOffset;\n break;\n case 'positive-ascending':\n outerRef.scrollLeft = scrollOffset;\n break;\n default:\n var clientWidth = outerRef.clientWidth,\n scrollWidth = outerRef.scrollWidth;\n outerRef.scrollLeft = scrollWidth - clientWidth - scrollOffset;\n break;\n }\n } else {\n outerRef.scrollLeft = scrollOffset;\n }\n } else {\n outerRef.scrollTop = scrollOffset;\n }\n }\n this._callPropsCallbacks();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._resetIsScrollingTimeoutId !== null) {\n cancelTimeout(this._resetIsScrollingTimeoutId);\n }\n };\n _proto.render = function render() {\n var _this$props5 = this.props,\n children = _this$props5.children,\n className = _this$props5.className,\n direction = _this$props5.direction,\n height = _this$props5.height,\n innerRef = _this$props5.innerRef,\n innerElementType = _this$props5.innerElementType,\n innerTagName = _this$props5.innerTagName,\n itemCount = _this$props5.itemCount,\n itemData = _this$props5.itemData,\n _this$props5$itemKey = _this$props5.itemKey,\n itemKey = _this$props5$itemKey === void 0 ? defaultItemKey$1 : _this$props5$itemKey,\n layout = _this$props5.layout,\n outerElementType = _this$props5.outerElementType,\n outerTagName = _this$props5.outerTagName,\n style = _this$props5.style,\n useIsScrolling = _this$props5.useIsScrolling,\n width = _this$props5.width;\n var isScrolling = this.state.isScrolling; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var onScroll = isHorizontal ? this._onScrollHorizontal : this._onScrollVertical;\n var _this$_getRangeToRend = this._getRangeToRender(),\n startIndex = _this$_getRangeToRend[0],\n stopIndex = _this$_getRangeToRend[1];\n var items = [];\n if (itemCount > 0) {\n for (var _index = startIndex; _index <= stopIndex; _index++) {\n items.push(createElement(children, {\n data: itemData,\n key: itemKey(_index, itemData),\n index: _index,\n isScrolling: useIsScrolling ? isScrolling : undefined,\n style: this._getItemStyle(_index)\n }));\n }\n } // Read this value AFTER items have been created,\n // So their actual sizes (if variable) are taken into consideration.\n\n var estimatedTotalSize = getEstimatedTotalSize(this.props, this._instanceProps);\n return createElement(outerElementType || outerTagName || 'div', {\n className: className,\n onScroll: onScroll,\n ref: this._outerRefSetter,\n style: _extends({\n position: 'relative',\n height: height,\n width: width,\n overflow: 'auto',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n direction: direction\n }, style)\n }, createElement(innerElementType || innerTagName || 'div', {\n children: items,\n ref: innerRef,\n style: {\n height: isHorizontal ? '100%' : estimatedTotalSize,\n pointerEvents: isScrolling ? 'none' : undefined,\n width: isHorizontal ? estimatedTotalSize : '100%'\n }\n }));\n };\n _proto._callPropsCallbacks = function _callPropsCallbacks() {\n if (typeof this.props.onItemsRendered === 'function') {\n var itemCount = this.props.itemCount;\n if (itemCount > 0) {\n var _this$_getRangeToRend2 = this._getRangeToRender(),\n _overscanStartIndex = _this$_getRangeToRend2[0],\n _overscanStopIndex = _this$_getRangeToRend2[1],\n _visibleStartIndex = _this$_getRangeToRend2[2],\n _visibleStopIndex = _this$_getRangeToRend2[3];\n this._callOnItemsRendered(_overscanStartIndex, _overscanStopIndex, _visibleStartIndex, _visibleStopIndex);\n }\n }\n if (typeof this.props.onScroll === 'function') {\n var _this$state2 = this.state,\n _scrollDirection = _this$state2.scrollDirection,\n _scrollOffset = _this$state2.scrollOffset,\n _scrollUpdateWasRequested = _this$state2.scrollUpdateWasRequested;\n this._callOnScroll(_scrollDirection, _scrollOffset, _scrollUpdateWasRequested);\n }\n } // Lazily create and cache item styles while scrolling,\n // So that pure component sCU will prevent re-renders.\n // We maintain this cache, and pass a style prop rather than index,\n // So that List can clear cached styles and force item re-render if necessary.\n ;\n _proto._getRangeToRender = function _getRangeToRender() {\n var _this$props6 = this.props,\n itemCount = _this$props6.itemCount,\n overscanCount = _this$props6.overscanCount;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollDirection = _this$state3.scrollDirection,\n scrollOffset = _this$state3.scrollOffset;\n if (itemCount === 0) {\n return [0, 0, 0, 0];\n }\n var startIndex = getStartIndexForOffset(this.props, scrollOffset, this._instanceProps);\n var stopIndex = getStopIndexForStartIndex(this.props, startIndex, scrollOffset, this._instanceProps); // Overscan by one item in each direction so that tab/focus works.\n // If there isn't at least one extra item, tab loops back around.\n\n var overscanBackward = !isScrolling || scrollDirection === 'backward' ? Math.max(1, overscanCount) : 1;\n var overscanForward = !isScrolling || scrollDirection === 'forward' ? Math.max(1, overscanCount) : 1;\n return [Math.max(0, startIndex - overscanBackward), Math.max(0, Math.min(itemCount - 1, stopIndex + overscanForward)), startIndex, stopIndex];\n };\n return List;\n }(PureComponent), _class.defaultProps = {\n direction: 'ltr',\n itemData: undefined,\n layout: 'vertical',\n overscanCount: 2,\n useIsScrolling: false\n }, _class;\n} // NOTE: I considered further wrapping individual items with a pure ListItem component.\n// This would avoid ever calling the render function for the same index more than once,\n// But it would also add the overhead of a lot of components/fibers.\n// I assume people already do this (render function returning a class component),\n// So my doing it would just unnecessarily double the wrappers.\n\nvar validateSharedProps$1 = function validateSharedProps(_ref2, _ref3) {\n var children = _ref2.children,\n direction = _ref2.direction,\n height = _ref2.height,\n layout = _ref2.layout,\n innerTagName = _ref2.innerTagName,\n outerTagName = _ref2.outerTagName,\n width = _ref2.width;\n var instance = _ref3.instance;\n if (process.env.NODE_ENV !== 'production') {\n if (innerTagName != null || outerTagName != null) {\n if (devWarningsTagName$1 && !devWarningsTagName$1.has(instance)) {\n devWarningsTagName$1.add(instance);\n console.warn('The innerTagName and outerTagName props have been deprecated. ' + 'Please use the innerElementType and outerElementType props instead.');\n }\n } // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n switch (direction) {\n case 'horizontal':\n case 'vertical':\n if (devWarningsDirection && !devWarningsDirection.has(instance)) {\n devWarningsDirection.add(instance);\n console.warn('The direction prop should be either \"ltr\" (default) or \"rtl\". ' + 'Please use the layout prop to specify \"vertical\" (default) or \"horizontal\" orientation.');\n }\n break;\n case 'ltr':\n case 'rtl':\n // Valid values\n break;\n default:\n throw Error('An invalid \"direction\" prop has been specified. ' + 'Value should be either \"ltr\" or \"rtl\". ' + (\"\\\"\" + direction + \"\\\" was specified.\"));\n }\n switch (layout) {\n case 'horizontal':\n case 'vertical':\n // Valid values\n break;\n default:\n throw Error('An invalid \"layout\" prop has been specified. ' + 'Value should be either \"horizontal\" or \"vertical\". ' + (\"\\\"\" + layout + \"\\\" was specified.\"));\n }\n if (children == null) {\n throw Error('An invalid \"children\" prop has been specified. ' + 'Value should be a React component. ' + (\"\\\"\" + (children === null ? 'null' : typeof children) + \"\\\" was specified.\"));\n }\n if (isHorizontal && typeof width !== 'number') {\n throw Error('An invalid \"width\" prop has been specified. ' + 'Horizontal lists must specify a number for width. ' + (\"\\\"\" + (width === null ? 'null' : typeof width) + \"\\\" was specified.\"));\n } else if (!isHorizontal && typeof height !== 'number') {\n throw Error('An invalid \"height\" prop has been specified. ' + 'Vertical lists must specify a number for height. ' + (\"\\\"\" + (height === null ? 'null' : typeof height) + \"\\\" was specified.\"));\n }\n }\n};\nvar DEFAULT_ESTIMATED_ITEM_SIZE$1 = 50;\nvar getItemMetadata$1 = function getItemMetadata(props, index, instanceProps) {\n var _ref = props,\n itemSize = _ref.itemSize;\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n if (index > lastMeasuredIndex) {\n var offset = 0;\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n offset = itemMetadata.offset + itemMetadata.size;\n }\n for (var i = lastMeasuredIndex + 1; i <= index; i++) {\n var size = itemSize(i);\n itemMetadataMap[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n instanceProps.lastMeasuredIndex = index;\n }\n return itemMetadataMap[index];\n};\nvar findNearestItem$1 = function findNearestItem(props, instanceProps, offset) {\n var itemMetadataMap = instanceProps.itemMetadataMap,\n lastMeasuredIndex = instanceProps.lastMeasuredIndex;\n var lastMeasuredItemOffset = lastMeasuredIndex > 0 ? itemMetadataMap[lastMeasuredIndex].offset : 0;\n if (lastMeasuredItemOffset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return findNearestItemBinarySearch$1(props, instanceProps, lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return findNearestItemExponentialSearch$1(props, instanceProps, Math.max(0, lastMeasuredIndex), offset);\n }\n};\nvar findNearestItemBinarySearch$1 = function findNearestItemBinarySearch(props, instanceProps, high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = getItemMetadata$1(props, middle, instanceProps).offset;\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nvar findNearestItemExponentialSearch$1 = function findNearestItemExponentialSearch(props, instanceProps, index, offset) {\n var itemCount = props.itemCount;\n var interval = 1;\n while (index < itemCount && getItemMetadata$1(props, index, instanceProps).offset < offset) {\n index += interval;\n interval *= 2;\n }\n return findNearestItemBinarySearch$1(props, instanceProps, Math.min(index, itemCount - 1), Math.floor(index / 2), offset);\n};\nvar getEstimatedTotalSize = function getEstimatedTotalSize(_ref2, _ref3) {\n var itemCount = _ref2.itemCount;\n var itemMetadataMap = _ref3.itemMetadataMap,\n estimatedItemSize = _ref3.estimatedItemSize,\n lastMeasuredIndex = _ref3.lastMeasuredIndex;\n var totalSizeOfMeasuredItems = 0; // Edge case check for when the number of items decreases while a scroll is in progress.\n // https://github.com/bvaughn/react-window/pull/138\n\n if (lastMeasuredIndex >= itemCount) {\n lastMeasuredIndex = itemCount - 1;\n }\n if (lastMeasuredIndex >= 0) {\n var itemMetadata = itemMetadataMap[lastMeasuredIndex];\n totalSizeOfMeasuredItems = itemMetadata.offset + itemMetadata.size;\n }\n var numUnmeasuredItems = itemCount - lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\nvar VariableSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(props, index, instanceProps) {\n return getItemMetadata$1(props, index, instanceProps).offset;\n },\n getItemSize: function getItemSize(props, index, instanceProps) {\n return instanceProps.itemMetadataMap[index].size;\n },\n getEstimatedTotalSize: getEstimatedTotalSize,\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(props, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = props.direction,\n height = props.height,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, index, instanceProps); // Get estimated total size after ItemMetadata is computed,\n // To ensure it reflects actual measurements instead of just estimates.\n\n var estimatedTotalSize = getEstimatedTotalSize(props, instanceProps);\n var maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, itemMetadata.offset));\n var minOffset = Math.max(0, itemMetadata.offset - size + itemMetadata.size + scrollbarSize);\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(props, offset, instanceProps) {\n return findNearestItem$1(props, instanceProps, offset);\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(props, startIndex, scrollOffset, instanceProps) {\n var direction = props.direction,\n height = props.height,\n itemCount = props.itemCount,\n layout = props.layout,\n width = props.width; // TODO Deprecate direction \"horizontal\"\n\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var itemMetadata = getItemMetadata$1(props, startIndex, instanceProps);\n var maxOffset = scrollOffset + size;\n var offset = itemMetadata.offset + itemMetadata.size;\n var stopIndex = startIndex;\n while (stopIndex < itemCount - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemMetadata$1(props, stopIndex, instanceProps).size;\n }\n return stopIndex;\n },\n initInstanceProps: function initInstanceProps(props, instance) {\n var _ref4 = props,\n estimatedItemSize = _ref4.estimatedItemSize;\n var instanceProps = {\n itemMetadataMap: {},\n estimatedItemSize: estimatedItemSize || DEFAULT_ESTIMATED_ITEM_SIZE$1,\n lastMeasuredIndex: -1\n };\n instance.resetAfterIndex = function (index, shouldForceUpdate) {\n if (shouldForceUpdate === void 0) {\n shouldForceUpdate = true;\n }\n instanceProps.lastMeasuredIndex = Math.min(instanceProps.lastMeasuredIndex, index - 1); // We could potentially optimize further by only evicting styles after this index,\n // But since styles are only cached while scrolling is in progress-\n // It seems an unnecessary optimization.\n // It's unlikely that resetAfterIndex() will be called while a user is scrolling.\n\n instance._getItemStyleCache(-1);\n if (shouldForceUpdate) {\n instance.forceUpdate();\n }\n };\n return instanceProps;\n },\n shouldResetStyleCacheOnItemSizeChange: false,\n validateProps: function validateProps(_ref5) {\n var itemSize = _ref5.itemSize;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a function. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\nvar FixedSizeGrid = /*#__PURE__*/createGridComponent({\n getColumnOffset: function getColumnOffset(_ref, index) {\n var columnWidth = _ref.columnWidth;\n return index * columnWidth;\n },\n getColumnWidth: function getColumnWidth(_ref2, index) {\n var columnWidth = _ref2.columnWidth;\n return columnWidth;\n },\n getRowOffset: function getRowOffset(_ref3, index) {\n var rowHeight = _ref3.rowHeight;\n return index * rowHeight;\n },\n getRowHeight: function getRowHeight(_ref4, index) {\n var rowHeight = _ref4.rowHeight;\n return rowHeight;\n },\n getEstimatedTotalHeight: function getEstimatedTotalHeight(_ref5) {\n var rowCount = _ref5.rowCount,\n rowHeight = _ref5.rowHeight;\n return rowHeight * rowCount;\n },\n getEstimatedTotalWidth: function getEstimatedTotalWidth(_ref6) {\n var columnCount = _ref6.columnCount,\n columnWidth = _ref6.columnWidth;\n return columnWidth * columnCount;\n },\n getOffsetForColumnAndAlignment: function getOffsetForColumnAndAlignment(_ref7, columnIndex, align, scrollLeft, instanceProps, scrollbarSize) {\n var columnCount = _ref7.columnCount,\n columnWidth = _ref7.columnWidth,\n width = _ref7.width;\n var lastColumnOffset = Math.max(0, columnCount * columnWidth - width);\n var maxOffset = Math.min(lastColumnOffset, columnIndex * columnWidth);\n var minOffset = Math.max(0, columnIndex * columnWidth - width + scrollbarSize + columnWidth);\n if (align === 'smart') {\n if (scrollLeft >= minOffset - width && scrollLeft <= maxOffset + width) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(width / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastColumnOffset + Math.floor(width / 2)) {\n return lastColumnOffset; // near the end\n } else {\n return middleOffset;\n }\n case 'auto':\n default:\n if (scrollLeft >= minOffset && scrollLeft <= maxOffset) {\n return scrollLeft;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollLeft < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getOffsetForRowAndAlignment: function getOffsetForRowAndAlignment(_ref8, rowIndex, align, scrollTop, instanceProps, scrollbarSize) {\n var rowHeight = _ref8.rowHeight,\n height = _ref8.height,\n rowCount = _ref8.rowCount;\n var lastRowOffset = Math.max(0, rowCount * rowHeight - height);\n var maxOffset = Math.min(lastRowOffset, rowIndex * rowHeight);\n var minOffset = Math.max(0, rowIndex * rowHeight - height + scrollbarSize + rowHeight);\n if (align === 'smart') {\n if (scrollTop >= minOffset - height && scrollTop <= maxOffset + height) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(height / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastRowOffset + Math.floor(height / 2)) {\n return lastRowOffset; // near the end\n } else {\n return middleOffset;\n }\n case 'auto':\n default:\n if (scrollTop >= minOffset && scrollTop <= maxOffset) {\n return scrollTop;\n } else if (minOffset > maxOffset) {\n // Because we only take into account the scrollbar size when calculating minOffset\n // this value can be larger than maxOffset when at the end of the list\n return minOffset;\n } else if (scrollTop < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getColumnStartIndexForOffset: function getColumnStartIndexForOffset(_ref9, scrollLeft) {\n var columnWidth = _ref9.columnWidth,\n columnCount = _ref9.columnCount;\n return Math.max(0, Math.min(columnCount - 1, Math.floor(scrollLeft / columnWidth)));\n },\n getColumnStopIndexForStartIndex: function getColumnStopIndexForStartIndex(_ref10, startIndex, scrollLeft) {\n var columnWidth = _ref10.columnWidth,\n columnCount = _ref10.columnCount,\n width = _ref10.width;\n var left = startIndex * columnWidth;\n var numVisibleColumns = Math.ceil((width + scrollLeft - left) / columnWidth);\n return Math.max(0, Math.min(columnCount - 1, startIndex + numVisibleColumns - 1 // -1 is because stop index is inclusive\n ));\n },\n getRowStartIndexForOffset: function getRowStartIndexForOffset(_ref11, scrollTop) {\n var rowHeight = _ref11.rowHeight,\n rowCount = _ref11.rowCount;\n return Math.max(0, Math.min(rowCount - 1, Math.floor(scrollTop / rowHeight)));\n },\n getRowStopIndexForStartIndex: function getRowStopIndexForStartIndex(_ref12, startIndex, scrollTop) {\n var rowHeight = _ref12.rowHeight,\n rowCount = _ref12.rowCount,\n height = _ref12.height;\n var top = startIndex * rowHeight;\n var numVisibleRows = Math.ceil((height + scrollTop - top) / rowHeight);\n return Math.max(0, Math.min(rowCount - 1, startIndex + numVisibleRows - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref13) {\n var columnWidth = _ref13.columnWidth,\n rowHeight = _ref13.rowHeight;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof columnWidth !== 'number') {\n throw Error('An invalid \"columnWidth\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (columnWidth === null ? 'null' : typeof columnWidth) + \"\\\" was specified.\"));\n }\n if (typeof rowHeight !== 'number') {\n throw Error('An invalid \"rowHeight\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (rowHeight === null ? 'null' : typeof rowHeight) + \"\\\" was specified.\"));\n }\n }\n }\n});\nvar FixedSizeList = /*#__PURE__*/createListComponent({\n getItemOffset: function getItemOffset(_ref, index) {\n var itemSize = _ref.itemSize;\n return index * itemSize;\n },\n getItemSize: function getItemSize(_ref2, index) {\n var itemSize = _ref2.itemSize;\n return itemSize;\n },\n getEstimatedTotalSize: function getEstimatedTotalSize(_ref3) {\n var itemCount = _ref3.itemCount,\n itemSize = _ref3.itemSize;\n return itemSize * itemCount;\n },\n getOffsetForIndexAndAlignment: function getOffsetForIndexAndAlignment(_ref4, index, align, scrollOffset, instanceProps, scrollbarSize) {\n var direction = _ref4.direction,\n height = _ref4.height,\n itemCount = _ref4.itemCount,\n itemSize = _ref4.itemSize,\n layout = _ref4.layout,\n width = _ref4.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var size = isHorizontal ? width : height;\n var lastItemOffset = Math.max(0, itemCount * itemSize - size);\n var maxOffset = Math.min(lastItemOffset, index * itemSize);\n var minOffset = Math.max(0, index * itemSize - size + itemSize + scrollbarSize);\n if (align === 'smart') {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n align = 'auto';\n } else {\n align = 'center';\n }\n }\n switch (align) {\n case 'start':\n return maxOffset;\n case 'end':\n return minOffset;\n case 'center':\n {\n // \"Centered\" offset is usually the average of the min and max.\n // But near the edges of the list, this doesn't hold true.\n var middleOffset = Math.round(minOffset + (maxOffset - minOffset) / 2);\n if (middleOffset < Math.ceil(size / 2)) {\n return 0; // near the beginning\n } else if (middleOffset > lastItemOffset + Math.floor(size / 2)) {\n return lastItemOffset; // near the end\n } else {\n return middleOffset;\n }\n }\n case 'auto':\n default:\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n },\n getStartIndexForOffset: function getStartIndexForOffset(_ref5, offset) {\n var itemCount = _ref5.itemCount,\n itemSize = _ref5.itemSize;\n return Math.max(0, Math.min(itemCount - 1, Math.floor(offset / itemSize)));\n },\n getStopIndexForStartIndex: function getStopIndexForStartIndex(_ref6, startIndex, scrollOffset) {\n var direction = _ref6.direction,\n height = _ref6.height,\n itemCount = _ref6.itemCount,\n itemSize = _ref6.itemSize,\n layout = _ref6.layout,\n width = _ref6.width;\n // TODO Deprecate direction \"horizontal\"\n var isHorizontal = direction === 'horizontal' || layout === 'horizontal';\n var offset = startIndex * itemSize;\n var size = isHorizontal ? width : height;\n var numVisibleItems = Math.ceil((size + scrollOffset - offset) / itemSize);\n return Math.max(0, Math.min(itemCount - 1, startIndex + numVisibleItems - 1 // -1 is because stop index is inclusive\n ));\n },\n initInstanceProps: function initInstanceProps(props) {// Noop\n },\n shouldResetStyleCacheOnItemSizeChange: true,\n validateProps: function validateProps(_ref7) {\n var itemSize = _ref7.itemSize;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'number') {\n throw Error('An invalid \"itemSize\" prop has been specified. ' + 'Value should be a number. ' + (\"\\\"\" + (itemSize === null ? 'null' : typeof itemSize) + \"\\\" was specified.\"));\n }\n }\n }\n});\n\n// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(prev, next) {\n for (var attribute in prev) {\n if (!(attribute in next)) {\n return true;\n }\n }\n for (var _attribute in next) {\n if (prev[_attribute] !== next[_attribute]) {\n return true;\n }\n }\n return false;\n}\nvar _excluded = [\"style\"],\n _excluded2 = [\"style\"];\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-api.html#reactmemo\n\nfunction areEqual(prevProps, nextProps) {\n var prevStyle = prevProps.style,\n prevRest = _objectWithoutPropertiesLoose(prevProps, _excluded);\n var nextStyle = nextProps.style,\n nextRest = _objectWithoutPropertiesLoose(nextProps, _excluded2);\n return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(prevRest, nextRest);\n}\n\n// It knows to compare individual style props and ignore the wrapper object.\n// See https://reactjs.org/docs/react-component.html#shouldcomponentupdate\n\nfunction shouldComponentUpdate(nextProps, nextState) {\n return !areEqual(this.props, nextProps) || shallowDiffers(this.state, nextState);\n}\nexport { FixedSizeGrid, FixedSizeList, VariableSizeGrid, VariableSizeList, areEqual, shouldComponentUpdate };\n//# sourceMappingURL=index.esm.js.map","/** @license React v17.0.2\n * react-jsx-runtime.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';\n\nrequire(\"object-assign\");\nvar f = require(\"react\"),\n g = 60103;\nexports.Fragment = 60107;\nif (\"function\" === typeof Symbol && Symbol.for) {\n var h = Symbol.for;\n g = h(\"react.element\");\n exports.Fragment = h(\"react.fragment\");\n}\nvar m = f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,\n n = Object.prototype.hasOwnProperty,\n p = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n };\nfunction q(c, a, k) {\n var b,\n d = {},\n e = null,\n l = null;\n void 0 !== k && (e = \"\" + k);\n void 0 !== a.key && (e = \"\" + a.key);\n void 0 !== a.ref && (l = a.ref);\n for (b in a) n.call(a, b) && !p.hasOwnProperty(b) && (d[b] = a[b]);\n if (c && c.defaultProps) for (b in a = c.defaultProps, a) void 0 === d[b] && (d[b] = a[b]);\n return {\n $$typeof: g,\n type: c,\n key: e,\n ref: l,\n props: d,\n _owner: m.current\n };\n}\nexports.jsx = q;\nexports.jsxs = q;","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar l = require(\"object-assign\"),\n n = 60103,\n p = 60106;\nexports.Fragment = 60107;\nexports.StrictMode = 60108;\nexports.Profiler = 60114;\nvar q = 60109,\n r = 60110,\n t = 60112;\nexports.Suspense = 60113;\nvar u = 60115,\n v = 60116;\nif (\"function\" === typeof Symbol && Symbol.for) {\n var w = Symbol.for;\n n = w(\"react.element\");\n p = w(\"react.portal\");\n exports.Fragment = w(\"react.fragment\");\n exports.StrictMode = w(\"react.strict_mode\");\n exports.Profiler = w(\"react.profiler\");\n q = w(\"react.provider\");\n r = w(\"react.context\");\n t = w(\"react.forward_ref\");\n exports.Suspense = w(\"react.suspense\");\n u = w(\"react.memo\");\n v = w(\"react.lazy\");\n}\nvar x = \"function\" === typeof Symbol && Symbol.iterator;\nfunction y(a) {\n if (null === a || \"object\" !== typeof a) return null;\n a = x && a[x] || a[\"@@iterator\"];\n return \"function\" === typeof a ? a : null;\n}\nfunction z(a) {\n for (var b = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a, c = 1; c < arguments.length; c++) b += \"&args[]=\" + encodeURIComponent(arguments[c]);\n return \"Minified React error #\" + a + \"; visit \" + b + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n}\nvar A = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n B = {};\nfunction C(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = B;\n this.updater = c || A;\n}\nC.prototype.isReactComponent = {};\nC.prototype.setState = function (a, b) {\n if (\"object\" !== typeof a && \"function\" !== typeof a && null != a) throw Error(z(85));\n this.updater.enqueueSetState(this, a, b, \"setState\");\n};\nC.prototype.forceUpdate = function (a) {\n this.updater.enqueueForceUpdate(this, a, \"forceUpdate\");\n};\nfunction D() {}\nD.prototype = C.prototype;\nfunction E(a, b, c) {\n this.props = a;\n this.context = b;\n this.refs = B;\n this.updater = c || A;\n}\nvar F = E.prototype = new D();\nF.constructor = E;\nl(F, C.prototype);\nF.isPureReactComponent = !0;\nvar G = {\n current: null\n },\n H = Object.prototype.hasOwnProperty,\n I = {\n key: !0,\n ref: !0,\n __self: !0,\n __source: !0\n };\nfunction J(a, b, c) {\n var e,\n d = {},\n k = null,\n h = null;\n if (null != b) for (e in void 0 !== b.ref && (h = b.ref), void 0 !== b.key && (k = \"\" + b.key), b) H.call(b, e) && !I.hasOwnProperty(e) && (d[e] = b[e]);\n var g = arguments.length - 2;\n if (1 === g) d.children = c;else if (1 < g) {\n for (var f = Array(g), m = 0; m < g; m++) f[m] = arguments[m + 2];\n d.children = f;\n }\n if (a && a.defaultProps) for (e in g = a.defaultProps, g) void 0 === d[e] && (d[e] = g[e]);\n return {\n $$typeof: n,\n type: a,\n key: k,\n ref: h,\n props: d,\n _owner: G.current\n };\n}\nfunction K(a, b) {\n return {\n $$typeof: n,\n type: a.type,\n key: b,\n ref: a.ref,\n props: a.props,\n _owner: a._owner\n };\n}\nfunction L(a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === n;\n}\nfunction escape(a) {\n var b = {\n \"=\": \"=0\",\n \":\": \"=2\"\n };\n return \"$\" + a.replace(/[=:]/g, function (a) {\n return b[a];\n });\n}\nvar M = /\\/+/g;\nfunction N(a, b) {\n return \"object\" === typeof a && null !== a && null != a.key ? escape(\"\" + a.key) : b.toString(36);\n}\nfunction O(a, b, c, e, d) {\n var k = typeof a;\n if (\"undefined\" === k || \"boolean\" === k) a = null;\n var h = !1;\n if (null === a) h = !0;else switch (k) {\n case \"string\":\n case \"number\":\n h = !0;\n break;\n case \"object\":\n switch (a.$$typeof) {\n case n:\n case p:\n h = !0;\n }\n }\n if (h) return h = a, d = d(h), a = \"\" === e ? \".\" + N(h, 0) : e, Array.isArray(d) ? (c = \"\", null != a && (c = a.replace(M, \"$&/\") + \"/\"), O(d, b, c, \"\", function (a) {\n return a;\n })) : null != d && (L(d) && (d = K(d, c + (!d.key || h && h.key === d.key ? \"\" : (\"\" + d.key).replace(M, \"$&/\") + \"/\") + a)), b.push(d)), 1;\n h = 0;\n e = \"\" === e ? \".\" : e + \":\";\n if (Array.isArray(a)) for (var g = 0; g < a.length; g++) {\n k = a[g];\n var f = e + N(k, g);\n h += O(k, b, c, f, d);\n } else if (f = y(a), \"function\" === typeof f) for (a = f.call(a), g = 0; !(k = a.next()).done;) k = k.value, f = e + N(k, g++), h += O(k, b, c, f, d);else if (\"object\" === k) throw b = \"\" + a, Error(z(31, \"[object Object]\" === b ? \"object with keys {\" + Object.keys(a).join(\", \") + \"}\" : b));\n return h;\n}\nfunction P(a, b, c) {\n if (null == a) return a;\n var e = [],\n d = 0;\n O(a, e, \"\", \"\", function (a) {\n return b.call(c, a, d++);\n });\n return e;\n}\nfunction Q(a) {\n if (-1 === a._status) {\n var b = a._result;\n b = b();\n a._status = 0;\n a._result = b;\n b.then(function (b) {\n 0 === a._status && (b = b.default, a._status = 1, a._result = b);\n }, function (b) {\n 0 === a._status && (a._status = 2, a._result = b);\n });\n }\n if (1 === a._status) return a._result;\n throw a._result;\n}\nvar R = {\n current: null\n};\nfunction S() {\n var a = R.current;\n if (null === a) throw Error(z(321));\n return a;\n}\nvar T = {\n ReactCurrentDispatcher: R,\n ReactCurrentBatchConfig: {\n transition: 0\n },\n ReactCurrentOwner: G,\n IsSomeRendererActing: {\n current: !1\n },\n assign: l\n};\nexports.Children = {\n map: P,\n forEach: function (a, b, c) {\n P(a, function () {\n b.apply(this, arguments);\n }, c);\n },\n count: function (a) {\n var b = 0;\n P(a, function () {\n b++;\n });\n return b;\n },\n toArray: function (a) {\n return P(a, function (a) {\n return a;\n }) || [];\n },\n only: function (a) {\n if (!L(a)) throw Error(z(143));\n return a;\n }\n};\nexports.Component = C;\nexports.PureComponent = E;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = T;\nexports.cloneElement = function (a, b, c) {\n if (null === a || void 0 === a) throw Error(z(267, a));\n var e = l({}, a.props),\n d = a.key,\n k = a.ref,\n h = a._owner;\n if (null != b) {\n void 0 !== b.ref && (k = b.ref, h = G.current);\n void 0 !== b.key && (d = \"\" + b.key);\n if (a.type && a.type.defaultProps) var g = a.type.defaultProps;\n for (f in b) H.call(b, f) && !I.hasOwnProperty(f) && (e[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);\n }\n var f = arguments.length - 2;\n if (1 === f) e.children = c;else if (1 < f) {\n g = Array(f);\n for (var m = 0; m < f; m++) g[m] = arguments[m + 2];\n e.children = g;\n }\n return {\n $$typeof: n,\n type: a.type,\n key: d,\n ref: k,\n props: e,\n _owner: h\n };\n};\nexports.createContext = function (a, b) {\n void 0 === b && (b = null);\n a = {\n $$typeof: r,\n _calculateChangedBits: b,\n _currentValue: a,\n _currentValue2: a,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n a.Provider = {\n $$typeof: q,\n _context: a\n };\n return a.Consumer = a;\n};\nexports.createElement = J;\nexports.createFactory = function (a) {\n var b = J.bind(null, a);\n b.type = a;\n return b;\n};\nexports.createRef = function () {\n return {\n current: null\n };\n};\nexports.forwardRef = function (a) {\n return {\n $$typeof: t,\n render: a\n };\n};\nexports.isValidElement = L;\nexports.lazy = function (a) {\n return {\n $$typeof: v,\n _payload: {\n _status: -1,\n _result: a\n },\n _init: Q\n };\n};\nexports.memo = function (a, b) {\n return {\n $$typeof: u,\n type: a,\n compare: void 0 === b ? null : b\n };\n};\nexports.useCallback = function (a, b) {\n return S().useCallback(a, b);\n};\nexports.useContext = function (a, b) {\n return S().useContext(a, b);\n};\nexports.useDebugValue = function () {};\nexports.useEffect = function (a, b) {\n return S().useEffect(a, b);\n};\nexports.useImperativeHandle = function (a, b, c) {\n return S().useImperativeHandle(a, b, c);\n};\nexports.useLayoutEffect = function (a, b) {\n return S().useLayoutEffect(a, b);\n};\nexports.useMemo = function (a, b) {\n return S().useMemo(a, b);\n};\nexports.useReducer = function (a, b, c) {\n return S().useReducer(a, b, c);\n};\nexports.useRef = function (a) {\n return S().useRef(a);\n};\nexports.useState = function (a) {\n return S().useState(a);\n};\nexports.version = \"17.0.2\";","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n return needMoreData(state);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\nutil.inherits(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }\n return ret;\n };\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n return BufferList;\n}();\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}","'use strict';\n\n/*<replacement>*/\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n return this;\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","module.exports = require('events').EventEmitter;","var toString = {}.toString;\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","'use strict';\n\nvar getValue = require('object-path').get;\nfunction defaultCompare(a, b) {\n return a === b;\n}\nfunction watch(getState, objectPath, compare) {\n compare = compare || defaultCompare;\n var currentValue = getValue(getState(), objectPath);\n return function w(fn) {\n return function () {\n var newValue = getValue(getState(), objectPath);\n if (!compare(currentValue, newValue)) {\n var oldValue = currentValue;\n currentValue = newValue;\n fn(newValue, oldValue, objectPath);\n }\n };\n };\n}\nmodule.exports = watch;","\"use strict\";\n\nif (0) {\n // Trick cjs-module-lexer into adding named exports for all React exports.\n // (if imported with `import()`, they will appear in `.default` as well.)\n // This way, cjs-module-lexer will let all of react's (named) exports through unchanged.\n module.exports = require(\"react\");\n}\n// We don't want bundlers to error when they encounter usage of any of these exports.\n// It's up to the package author to ensure that if they access React internals,\n// they do so in a safe way that won't break if React changes how they use these internals.\n// (e.g. only access them in development, and only in an optional way that won't\n// break if internals are not there or do not have the expected structure)\n// @ts-ignore\nmodule.exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = undefined;\n// @ts-ignore\nmodule.exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = undefined;\n// @ts-ignore\nmodule.exports.__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE = undefined;\n// Here we actually pull in the React library and add everything\n// it exports to our own `module.exports`.\n// If React suddenly were to add one of the above \"polyfilled\" exports,\n// the React version would overwrite our version, so this should be\n// future-proof.\nObject.assign(module.exports, require(\"react\"));","'use strict';\n\nmodule.exports = parse;\nvar fromMarkdown = require('mdast-util-from-markdown');\nfunction parse(options) {\n var self = this;\n this.Parser = parse;\n function parse(doc) {\n return fromMarkdown(doc, Object.assign({}, self.data('settings'), options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n }));\n }\n}","'use strict';\n\nmodule.exports = react;\nvar toHast = require('mdast-util-to-hast');\nvar sanitize = require('hast-util-sanitize');\nvar toH = require('hast-to-hyperscript');\nvar tableCellStyle = require('@mapbox/hast-util-table-cell-style');\nvar globalReact;\nvar globalCreateElement;\nvar globalFragment;\n\n/* istanbul ignore next - Hard to test */\ntry {\n globalReact = require('react');\n globalCreateElement = globalReact.createElement;\n globalFragment = globalReact.Fragment;\n} catch (_) {}\nvar own = {}.hasOwnProperty;\nvar tableElements = ['table', 'thead', 'tbody', 'tfoot', 'tr'];\nfunction react(options) {\n var settings = options || {};\n var createElement = settings.createElement || globalCreateElement;\n var Fragment = settings.fragment || globalFragment;\n var clean = settings.sanitize !== false;\n var scheme = clean && typeof settings.sanitize !== 'boolean' ? settings.sanitize : null;\n var toHastOptions = settings.toHast || {};\n var components = settings.remarkReactComponents || {};\n this.Compiler = compile;\n\n // Wrapper around `createElement` to pass components in.\n function h(name, props, children) {\n // Currently, React issues a warning for *any* white space in tables.\n // So we remove the pretty lines for now.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n /* istanbul ignore next - still works but need to publish `remark-gfm`\n * first. */\n if (children && tableElements.indexOf(name) !== -1) {\n children = children.filter(function (child) {\n return child !== '\\n';\n });\n }\n return createElement(own.call(components, name) ? components[name] : name, props, children);\n }\n\n // Compile mdast to React.\n function compile(node) {\n var tree = toHast(node, toHastOptions);\n var root;\n if (clean) {\n tree = sanitize(tree, scheme);\n }\n root = toH(h, tableCellStyle(tree), settings.prefix);\n\n // If this compiled to a `<div>`, but fragment are possible, use those.\n if (root.type === 'div' && Fragment) {\n root = createElement(Fragment, {}, root.props.children);\n }\n return root;\n }\n}","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar inherits = require('inherits');\nvar HashBase = require('hash-base');\nvar ARRAY16 = new Array(16);\nvar zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\nfunction RIPEMD160() {\n HashBase.call(this, 64);\n\n // state\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n}\ninherits(RIPEMD160, HashBase);\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16;\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4);\n var al = this._a | 0;\n var bl = this._b | 0;\n var cl = this._c | 0;\n var dl = this._d | 0;\n var el = this._e | 0;\n var ar = this._a | 0;\n var br = this._b | 0;\n var cr = this._c | 0;\n var dr = this._d | 0;\n var er = this._e | 0;\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl;\n var tr;\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]);\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]);\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]);\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]);\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]);\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]);\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]);\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]);\n } else {\n // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]);\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]);\n }\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = tl;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = tr;\n }\n\n // update state\n var t = this._b + cl + dr | 0;\n this._b = this._c + dl + er | 0;\n this._c = this._d + el + ar | 0;\n this._d = this._e + al + br | 0;\n this._e = this._a + bl + cr | 0;\n this._a = t;\n};\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n this._update();\n this._blockOffset = 0;\n }\n this._block.fill(0, this._blockOffset, 56);\n this._block.writeUInt32LE(this._length[0], 56);\n this._block.writeUInt32LE(this._length[1], 60);\n this._update();\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n buffer.writeInt32LE(this._e, 16);\n return buffer;\n};\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\nfunction fn1(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0;\n}\nfunction fn2(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0;\n}\nfunction fn3(a, b, c, d, e, m, k, s) {\n return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0;\n}\nfunction fn4(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0;\n}\nfunction fn5(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0;\n}\nmodule.exports = RIPEMD160;","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\nSafeBuffer.prototype = Object.create(Buffer.prototype);\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar f, g, h, k;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var l = performance;\n exports.unstable_now = function () {\n return l.now();\n };\n} else {\n var p = Date,\n q = p.now();\n exports.unstable_now = function () {\n return p.now() - q;\n };\n}\nif (\"undefined\" === typeof window || \"function\" !== typeof MessageChannel) {\n var t = null,\n u = null,\n w = function () {\n if (null !== t) try {\n var a = exports.unstable_now();\n t(!0, a);\n t = null;\n } catch (b) {\n throw setTimeout(w, 0), b;\n }\n };\n f = function (a) {\n null !== t ? setTimeout(f, 0, a) : (t = a, setTimeout(w, 0));\n };\n g = function (a, b) {\n u = setTimeout(a, b);\n };\n h = function () {\n clearTimeout(u);\n };\n exports.unstable_shouldYield = function () {\n return !1;\n };\n k = exports.unstable_forceFrameRate = function () {};\n} else {\n var x = window.setTimeout,\n y = window.clearTimeout;\n if (\"undefined\" !== typeof console) {\n var z = window.cancelAnimationFrame;\n \"function\" !== typeof window.requestAnimationFrame && console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\n \"function\" !== typeof z && console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\n }\n var A = !1,\n B = null,\n C = -1,\n D = 5,\n E = 0;\n exports.unstable_shouldYield = function () {\n return exports.unstable_now() >= E;\n };\n k = function () {};\n exports.unstable_forceFrameRate = function (a) {\n 0 > a || 125 < a ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\") : D = 0 < a ? Math.floor(1E3 / a) : 5;\n };\n var F = new MessageChannel(),\n G = F.port2;\n F.port1.onmessage = function () {\n if (null !== B) {\n var a = exports.unstable_now();\n E = a + D;\n try {\n B(!0, a) ? G.postMessage(null) : (A = !1, B = null);\n } catch (b) {\n throw G.postMessage(null), b;\n }\n } else A = !1;\n };\n f = function (a) {\n B = a;\n A || (A = !0, G.postMessage(null));\n };\n g = function (a, b) {\n C = x(function () {\n a(exports.unstable_now());\n }, b);\n };\n h = function () {\n y(C);\n C = -1;\n };\n}\nfunction H(a, b) {\n var c = a.length;\n a.push(b);\n a: for (;;) {\n var d = c - 1 >>> 1,\n e = a[d];\n if (void 0 !== e && 0 < I(e, b)) a[d] = b, a[c] = e, c = d;else break a;\n }\n}\nfunction J(a) {\n a = a[0];\n return void 0 === a ? null : a;\n}\nfunction K(a) {\n var b = a[0];\n if (void 0 !== b) {\n var c = a.pop();\n if (c !== b) {\n a[0] = c;\n a: for (var d = 0, e = a.length; d < e;) {\n var m = 2 * (d + 1) - 1,\n n = a[m],\n v = m + 1,\n r = a[v];\n if (void 0 !== n && 0 > I(n, c)) void 0 !== r && 0 > I(r, n) ? (a[d] = r, a[v] = c, d = v) : (a[d] = n, a[m] = c, d = m);else if (void 0 !== r && 0 > I(r, c)) a[d] = r, a[v] = c, d = v;else break a;\n }\n }\n return b;\n }\n return null;\n}\nfunction I(a, b) {\n var c = a.sortIndex - b.sortIndex;\n return 0 !== c ? c : a.id - b.id;\n}\nvar L = [],\n M = [],\n N = 1,\n O = null,\n P = 3,\n Q = !1,\n R = !1,\n S = !1;\nfunction T(a) {\n for (var b = J(M); null !== b;) {\n if (null === b.callback) K(M);else if (b.startTime <= a) K(M), b.sortIndex = b.expirationTime, H(L, b);else break;\n b = J(M);\n }\n}\nfunction U(a) {\n S = !1;\n T(a);\n if (!R) if (null !== J(L)) R = !0, f(V);else {\n var b = J(M);\n null !== b && g(U, b.startTime - a);\n }\n}\nfunction V(a, b) {\n R = !1;\n S && (S = !1, h());\n Q = !0;\n var c = P;\n try {\n T(b);\n for (O = J(L); null !== O && (!(O.expirationTime > b) || a && !exports.unstable_shouldYield());) {\n var d = O.callback;\n if (\"function\" === typeof d) {\n O.callback = null;\n P = O.priorityLevel;\n var e = d(O.expirationTime <= b);\n b = exports.unstable_now();\n \"function\" === typeof e ? O.callback = e : O === J(L) && K(L);\n T(b);\n } else K(L);\n O = J(L);\n }\n if (null !== O) var m = !0;else {\n var n = J(M);\n null !== n && g(U, n.startTime - b);\n m = !1;\n }\n return m;\n } finally {\n O = null, P = c, Q = !1;\n }\n}\nvar W = k;\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (a) {\n a.callback = null;\n};\nexports.unstable_continueExecution = function () {\n R || Q || (R = !0, f(V));\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return P;\n};\nexports.unstable_getFirstCallbackNode = function () {\n return J(L);\n};\nexports.unstable_next = function (a) {\n switch (P) {\n case 1:\n case 2:\n case 3:\n var b = 3;\n break;\n default:\n b = P;\n }\n var c = P;\n P = b;\n try {\n return a();\n } finally {\n P = c;\n }\n};\nexports.unstable_pauseExecution = function () {};\nexports.unstable_requestPaint = W;\nexports.unstable_runWithPriority = function (a, b) {\n switch (a) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n a = 3;\n }\n var c = P;\n P = a;\n try {\n return b();\n } finally {\n P = c;\n }\n};\nexports.unstable_scheduleCallback = function (a, b, c) {\n var d = exports.unstable_now();\n \"object\" === typeof c && null !== c ? (c = c.delay, c = \"number\" === typeof c && 0 < c ? d + c : d) : c = d;\n switch (a) {\n case 1:\n var e = -1;\n break;\n case 2:\n e = 250;\n break;\n case 5:\n e = 1073741823;\n break;\n case 4:\n e = 1E4;\n break;\n default:\n e = 5E3;\n }\n e = c + e;\n a = {\n id: N++,\n callback: b,\n priorityLevel: a,\n startTime: c,\n expirationTime: e,\n sortIndex: -1\n };\n c > d ? (a.sortIndex = c, H(M, a), null === J(L) && a === J(M) && (S ? h() : S = !0, g(U, c - d))) : (a.sortIndex = e, H(L, a), R || Q || (R = !0, f(V)));\n return a;\n};\nexports.unstable_wrapCallback = function (a) {\n var b = P;\n return function () {\n var c = P;\n P = b;\n try {\n return a.apply(this, arguments);\n } finally {\n P = c;\n }\n };\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}","\"use strict\";\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\nmodule.exports = function (_ref) {\n var data = _ref.data;\n var multiSection = _ref.multiSection;\n function nextNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = 0;\n } else {\n sectionIndex++;\n }\n while (sectionIndex < data.length && data[sectionIndex] === 0) {\n sectionIndex++;\n }\n return sectionIndex === data.length ? null : sectionIndex;\n }\n function prevNonEmptySectionIndex(sectionIndex) {\n if (sectionIndex === null) {\n sectionIndex = data.length - 1;\n } else {\n sectionIndex--;\n }\n while (sectionIndex >= 0 && data[sectionIndex] === 0) {\n sectionIndex--;\n }\n return sectionIndex === -1 ? null : sectionIndex;\n }\n function next(position) {\n var _position = _slicedToArray(position, 2);\n var sectionIndex = _position[0];\n var itemIndex = _position[1];\n if (multiSection) {\n if (itemIndex === null || itemIndex === data[sectionIndex] - 1) {\n sectionIndex = nextNonEmptySectionIndex(sectionIndex);\n if (sectionIndex === null) {\n return [null, null];\n }\n return [sectionIndex, 0];\n }\n return [sectionIndex, itemIndex + 1];\n }\n if (data === 0 || itemIndex === data - 1) {\n return [null, null];\n }\n if (itemIndex === null) {\n return [null, 0];\n }\n return [null, itemIndex + 1];\n }\n function prev(position) {\n var _position2 = _slicedToArray(position, 2);\n var sectionIndex = _position2[0];\n var itemIndex = _position2[1];\n if (multiSection) {\n if (itemIndex === null || itemIndex === 0) {\n sectionIndex = prevNonEmptySectionIndex(sectionIndex);\n if (sectionIndex === null) {\n return [null, null];\n }\n return [sectionIndex, data[sectionIndex] - 1];\n }\n return [sectionIndex, itemIndex - 1];\n }\n if (data === 0 || itemIndex === 0) {\n return [null, null];\n }\n if (itemIndex === null) {\n return [null, data - 1];\n }\n return [null, itemIndex - 1];\n }\n function isLast(position) {\n return next(position)[1] === null;\n }\n return {\n next: next,\n prev: prev,\n isLast: isLast\n };\n};","var Buffer = require('safe-buffer').Buffer;\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize);\n this._finalSize = finalSize;\n this._blockSize = blockSize;\n this._len = 0;\n}\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8';\n data = Buffer.from(data, enc);\n }\n var block = this._block;\n var blockSize = this._blockSize;\n var length = data.length;\n var accum = this._len;\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize;\n var remainder = Math.min(length - offset, blockSize - assigned);\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i];\n }\n accum += remainder;\n offset += remainder;\n if (accum % blockSize === 0) {\n this._update(block);\n }\n }\n this._len += length;\n return this;\n};\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize;\n this._block[rem] = 0x80;\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1);\n if (rem >= this._finalSize) {\n this._update(this._block);\n this._block.fill(0);\n }\n var bits = this._len * 8;\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4);\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0;\n var highBits = (bits - lowBits) / 0x100000000;\n this._block.writeUInt32BE(highBits, this._blockSize - 8);\n this._block.writeUInt32BE(lowBits, this._blockSize - 4);\n }\n this._update(this._block);\n var hash = this._hash();\n return enc ? hash.toString(enc) : hash;\n};\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass');\n};\nmodule.exports = Hash;","var exports = module.exports = function SHA(algorithm) {\n algorithm = algorithm.toLowerCase();\n var Algorithm = exports[algorithm];\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)');\n return new Algorithm();\n};\nexports.sha = require('./sha');\nexports.sha1 = require('./sha1');\nexports.sha224 = require('./sha224');\nexports.sha256 = require('./sha256');\nexports.sha384 = require('./sha384');\nexports.sha512 = require('./sha512');","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\ninherits(Sha, Hash);\nSha.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\nSha.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\nmodule.exports = Sha;","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\nfunction Sha1() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\ninherits(Sha1, Hash);\nSha1.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\nfunction rotl1(num) {\n return num << 1 | num >>> 31;\n}\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\nSha1.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]);\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\nmodule.exports = Sha1;","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Sha256 = require('./sha256');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar W = new Array(64);\nfunction Sha224() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\ninherits(Sha224, Sha256);\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8;\n this._b = 0x367cd507;\n this._c = 0x3070dd17;\n this._d = 0xf70e5939;\n this._e = 0xffc00b31;\n this._f = 0x68581511;\n this._g = 0x64f98fa7;\n this._h = 0xbefa4fa4;\n return this;\n};\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n return H;\n};\nmodule.exports = Sha224;","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];\nvar W = new Array(64);\nfunction Sha256() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\ninherits(Sha256, Hash);\nSha256.prototype.init = function () {\n this._a = 0x6a09e667;\n this._b = 0xbb67ae85;\n this._c = 0x3c6ef372;\n this._d = 0xa54ff53a;\n this._e = 0x510e527f;\n this._f = 0x9b05688c;\n this._g = 0x1f83d9ab;\n this._h = 0x5be0cd19;\n return this;\n};\nfunction ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\nfunction sigma0(x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10);\n}\nfunction sigma1(x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7);\n}\nfunction gamma0(x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3;\n}\nfunction gamma1(x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10;\n}\nSha256.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n var f = this._f | 0;\n var g = this._g | 0;\n var h = this._h | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 64; ++i) W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0;\n for (var j = 0; j < 64; ++j) {\n var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + W[j] | 0;\n var T2 = sigma0(a) + maj(a, b, c) | 0;\n h = g;\n g = f;\n f = e;\n e = d + T1 | 0;\n d = c;\n c = b;\n b = a;\n a = T1 + T2 | 0;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n this._f = f + this._f | 0;\n this._g = g + this._g | 0;\n this._h = h + this._h | 0;\n};\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n H.writeInt32BE(this._h, 28);\n return H;\n};\nmodule.exports = Sha256;","var inherits = require('inherits');\nvar SHA512 = require('./sha512');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar W = new Array(160);\nfunction Sha384() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\ninherits(Sha384, SHA512);\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d;\n this._bh = 0x629a292a;\n this._ch = 0x9159015a;\n this._dh = 0x152fecd8;\n this._eh = 0x67332667;\n this._fh = 0x8eb44a87;\n this._gh = 0xdb0c2e0d;\n this._hh = 0x47b5481d;\n this._al = 0xc1059ed8;\n this._bl = 0x367cd507;\n this._cl = 0x3070dd17;\n this._dl = 0xf70e5939;\n this._el = 0xffc00b31;\n this._fl = 0x68581511;\n this._gl = 0x64f98fa7;\n this._hl = 0xbefa4fa4;\n return this;\n};\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48);\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n return H;\n};\nmodule.exports = Sha384;","var inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nvar W = new Array(160);\nfunction Sha512() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\ninherits(Sha512, Hash);\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667;\n this._bh = 0xbb67ae85;\n this._ch = 0x3c6ef372;\n this._dh = 0xa54ff53a;\n this._eh = 0x510e527f;\n this._fh = 0x9b05688c;\n this._gh = 0x1f83d9ab;\n this._hh = 0x5be0cd19;\n this._al = 0xf3bcc908;\n this._bl = 0x84caa73b;\n this._cl = 0xfe94f82b;\n this._dl = 0x5f1d36f1;\n this._el = 0xade682d1;\n this._fl = 0x2b3e6c1f;\n this._gl = 0xfb41bd6b;\n this._hl = 0x137e2179;\n return this;\n};\nfunction Ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\nfunction sigma0(x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);\n}\nfunction sigma1(x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);\n}\nfunction Gamma0(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;\n}\nfunction Gamma0l(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);\n}\nfunction Gamma1(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;\n}\nfunction Gamma1l(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);\n}\nfunction getCarry(a, b) {\n return a >>> 0 < b >>> 0 ? 1 : 0;\n}\nSha512.prototype._update = function (M) {\n var W = this._w;\n var ah = this._ah | 0;\n var bh = this._bh | 0;\n var ch = this._ch | 0;\n var dh = this._dh | 0;\n var eh = this._eh | 0;\n var fh = this._fh | 0;\n var gh = this._gh | 0;\n var hh = this._hh | 0;\n var al = this._al | 0;\n var bl = this._bl | 0;\n var cl = this._cl | 0;\n var dl = this._dl | 0;\n var el = this._el | 0;\n var fl = this._fl | 0;\n var gl = this._gl | 0;\n var hl = this._hl | 0;\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4);\n W[i + 1] = M.readInt32BE(i * 4 + 4);\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2];\n var xl = W[i - 15 * 2 + 1];\n var gamma0 = Gamma0(xh, xl);\n var gamma0l = Gamma0l(xl, xh);\n xh = W[i - 2 * 2];\n xl = W[i - 2 * 2 + 1];\n var gamma1 = Gamma1(xh, xl);\n var gamma1l = Gamma1l(xl, xh);\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2];\n var Wi7l = W[i - 7 * 2 + 1];\n var Wi16h = W[i - 16 * 2];\n var Wi16l = W[i - 16 * 2 + 1];\n var Wil = gamma0l + Wi7l | 0;\n var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0;\n Wil = Wil + gamma1l | 0;\n Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0;\n Wil = Wil + Wi16l | 0;\n Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0;\n W[i] = Wih;\n W[i + 1] = Wil;\n }\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j];\n Wil = W[j + 1];\n var majh = maj(ah, bh, ch);\n var majl = maj(al, bl, cl);\n var sigma0h = sigma0(ah, al);\n var sigma0l = sigma0(al, ah);\n var sigma1h = sigma1(eh, el);\n var sigma1l = sigma1(el, eh);\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j];\n var Kil = K[j + 1];\n var chh = Ch(eh, fh, gh);\n var chl = Ch(el, fl, gl);\n var t1l = hl + sigma1l | 0;\n var t1h = hh + sigma1h + getCarry(t1l, hl) | 0;\n t1l = t1l + chl | 0;\n t1h = t1h + chh + getCarry(t1l, chl) | 0;\n t1l = t1l + Kil | 0;\n t1h = t1h + Kih + getCarry(t1l, Kil) | 0;\n t1l = t1l + Wil | 0;\n t1h = t1h + Wih + getCarry(t1l, Wil) | 0;\n\n // t2 = sigma0 + maj\n var t2l = sigma0l + majl | 0;\n var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + getCarry(el, dl) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + getCarry(al, t1l) | 0;\n }\n this._al = this._al + al | 0;\n this._bl = this._bl + bl | 0;\n this._cl = this._cl + cl | 0;\n this._dl = this._dl + dl | 0;\n this._el = this._el + el | 0;\n this._fl = this._fl + fl | 0;\n this._gl = this._gl + gl | 0;\n this._hl = this._hl + hl | 0;\n this._ah = this._ah + ah + getCarry(this._al, al) | 0;\n this._bh = this._bh + bh + getCarry(this._bl, bl) | 0;\n this._ch = this._ch + ch + getCarry(this._cl, cl) | 0;\n this._dh = this._dh + dh + getCarry(this._dl, dl) | 0;\n this._eh = this._eh + eh + getCarry(this._el, el) | 0;\n this._fh = this._fh + fh + getCarry(this._fl, fl) | 0;\n this._gh = this._gh + gh + getCarry(this._gl, gl) | 0;\n this._hh = this._hh + hh + getCarry(this._hl, hl) | 0;\n};\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64);\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n writeInt64BE(this._gh, this._gl, 48);\n writeInt64BE(this._hh, this._hl, 56);\n return H;\n};\nmodule.exports = Sha512;","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n if (!arrA || !arrB) {\n return false;\n }\n var len = arrA.length;\n if (arrB.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n return true;\n}\nmodule.exports = shallowEqualArrays;","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n if (ret !== void 0) {\n return !!ret;\n }\n if (objA === objB) {\n return true;\n }\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) {\n return false;\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 if (!bHasOwnProperty(key)) {\n return false;\n }\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n return true;\n};","'use strict';\n\nmodule.exports = require('./lib/index');","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\nvar shuffled;\nfunction reset() {\n shuffled = false;\n}\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n if (_alphabet_ === alphabet) {\n return;\n }\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n var unique = _alphabet_.split('').filter(function (item, ind, arr) {\n return ind !== arr.lastIndexOf(item);\n });\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n alphabet = _alphabet_;\n reset();\n}\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\nfunction get() {\n return alphabet || ORIGINAL;\n}\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\nmodule.exports = build;","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n var str = '';\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < Math.pow(16, loopCounter + 1);\n loopCounter++;\n }\n return str;\n}\nmodule.exports = generate;","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;","'use strict';\n\nvar alphabet = require('./alphabet');\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6) {\n return false;\n }\n var nonAlphabetic = new RegExp('[^' + alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') + ']');\n return !nonAlphabetic.test(id);\n}\nmodule.exports = isShortId;","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function (size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function (size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\nmodule.exports = randomByte;","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed / 233280.0;\n}\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};","'use strict';\n\nmodule.exports = 0;","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id;\n }\n }\n};","'use strict';\n\nexports.parse = parse;\nexports.stringify = stringify;\nvar empty = '';\nvar space = ' ';\nvar whiteSpace = /[ \\t\\n\\r\\f]+/g;\nfunction parse(value) {\n var input = String(value || empty).trim();\n return input === empty ? [] : input.split(whiteSpace);\n}\nfunction stringify(values) {\n return values.join(space).trim();\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/lib/_stream_readable.js');\nStream.Writable = require('readable-stream/lib/_stream_writable.js');\nStream.Duplex = require('readable-stream/lib/_stream_duplex.js');\nStream.Transform = require('readable-stream/lib/_stream_transform.js');\nStream.PassThrough = require('readable-stream/lib/_stream_passthrough.js');\nStream.finished = require('readable-stream/lib/internal/streams/end-of-stream.js');\nStream.pipeline = require('readable-stream/lib/internal/streams/pipeline.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\nStream.prototype.pipe = function (dest, options) {\n var source = this;\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n source.on('data', ondata);\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar codes = {};\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n return NodeError;\n }(Base);\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n default:\n return false;\n }\n};\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n;\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n return output;\n}\nmodule.exports = StyleToObject;","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}\nexport { memoize as default };","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */ && prop.charCodeAt(1) === 110\n /* n */ && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */);\nexport { isPropValid as default };","import { typeOf as e, isElement as t, isValidElementType as n } from \"react-is\";\nimport r, { useState as o, useContext as s, useMemo as i, useEffect as a, useRef as c, createElement as u, useLayoutEffect as l } from \"react\";\nimport d from \"shallowequal\";\nimport h from \"@emotion/stylis\";\nimport p from \"@emotion/unitless\";\nimport f from \"@emotion/is-prop-valid\";\nimport m from \"hoist-non-react-statics\";\nfunction y() {\n return (y = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = arguments[t];\n for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]);\n }\n return e;\n }).apply(this, arguments);\n}\nvar v = function (e, t) {\n for (var n = [e[0]], r = 0, o = t.length; r < o; r += 1) n.push(t[r], e[r + 1]);\n return n;\n },\n g = function (t) {\n return null !== t && \"object\" == typeof t && \"[object Object]\" === (t.toString ? t.toString() : Object.prototype.toString.call(t)) && !e(t);\n },\n S = Object.freeze([]),\n w = Object.freeze({});\nfunction E(e) {\n return \"function\" == typeof e;\n}\nfunction b(e) {\n return \"production\" !== process.env.NODE_ENV && \"string\" == typeof e && e || e.displayName || e.name || \"Component\";\n}\nfunction _(e) {\n return e && \"string\" == typeof e.styledComponentId;\n}\nvar N = \"undefined\" != typeof process && void 0 !== process.env && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || \"data-styled\",\n A = \"5.3.11\",\n C = \"undefined\" != typeof window && \"HTMLElement\" in window,\n I = Boolean(\"boolean\" == typeof SC_DISABLE_SPEEDY ? SC_DISABLE_SPEEDY : \"undefined\" != typeof process && void 0 !== process.env && (void 0 !== process.env.REACT_APP_SC_DISABLE_SPEEDY && \"\" !== process.env.REACT_APP_SC_DISABLE_SPEEDY ? \"false\" !== process.env.REACT_APP_SC_DISABLE_SPEEDY && process.env.REACT_APP_SC_DISABLE_SPEEDY : void 0 !== process.env.SC_DISABLE_SPEEDY && \"\" !== process.env.SC_DISABLE_SPEEDY ? \"false\" !== process.env.SC_DISABLE_SPEEDY && process.env.SC_DISABLE_SPEEDY : \"production\" !== process.env.NODE_ENV)),\n P = {},\n O = \"production\" !== process.env.NODE_ENV ? {\n 1: \"Cannot create styled-component for component: %s.\\n\\n\",\n 2: \"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",\n 3: \"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",\n 4: \"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",\n 5: \"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",\n 6: \"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",\n 7: 'ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n',\n 8: 'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',\n 9: \"Missing document `<head>`\\n\\n\",\n 10: \"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",\n 11: \"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",\n 12: \"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",\n 13: \"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",\n 14: 'ThemeProvider: \"theme\" prop is required.\\n\\n',\n 15: \"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",\n 16: \"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",\n 17: \"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\"\n } : {};\nfunction R() {\n for (var e = arguments.length <= 0 ? void 0 : arguments[0], t = [], n = 1, r = arguments.length; n < r; n += 1) t.push(n < 0 || arguments.length <= n ? void 0 : arguments[n]);\n return t.forEach(function (t) {\n e = e.replace(/%[a-z]/, t);\n }), e;\n}\nfunction D(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];\n throw \"production\" === process.env.NODE_ENV ? new Error(\"An error occurred. See https://git.io/JUIaE#\" + e + \" for more information.\" + (n.length > 0 ? \" Args: \" + n.join(\", \") : \"\")) : new Error(R.apply(void 0, [O[e]].concat(n)).trim());\n}\nvar j = function () {\n function e(e) {\n this.groupSizes = new Uint32Array(512), this.length = 512, this.tag = e;\n }\n var t = e.prototype;\n return t.indexOfGroup = function (e) {\n for (var t = 0, n = 0; n < e; n++) t += this.groupSizes[n];\n return t;\n }, t.insertRules = function (e, t) {\n if (e >= this.groupSizes.length) {\n for (var n = this.groupSizes, r = n.length, o = r; e >= o;) (o <<= 1) < 0 && D(16, \"\" + e);\n this.groupSizes = new Uint32Array(o), this.groupSizes.set(n), this.length = o;\n for (var s = r; s < o; s++) this.groupSizes[s] = 0;\n }\n for (var i = this.indexOfGroup(e + 1), a = 0, c = t.length; a < c; a++) this.tag.insertRule(i, t[a]) && (this.groupSizes[e]++, i++);\n }, t.clearGroup = function (e) {\n if (e < this.length) {\n var t = this.groupSizes[e],\n n = this.indexOfGroup(e),\n r = n + t;\n this.groupSizes[e] = 0;\n for (var o = n; o < r; o++) this.tag.deleteRule(n);\n }\n }, t.getGroup = function (e) {\n var t = \"\";\n if (e >= this.length || 0 === this.groupSizes[e]) return t;\n for (var n = this.groupSizes[e], r = this.indexOfGroup(e), o = r + n, s = r; s < o; s++) t += this.tag.getRule(s) + \"/*!sc*/\\n\";\n return t;\n }, e;\n }(),\n T = new Map(),\n x = new Map(),\n k = 1,\n V = function (e) {\n if (T.has(e)) return T.get(e);\n for (; x.has(k);) k++;\n var t = k++;\n return \"production\" !== process.env.NODE_ENV && ((0 | t) < 0 || t > 1 << 30) && D(16, \"\" + t), T.set(e, t), x.set(t, e), t;\n },\n B = function (e) {\n return x.get(e);\n },\n z = function (e, t) {\n t >= k && (k = t + 1), T.set(e, t), x.set(t, e);\n },\n M = \"style[\" + N + '][data-styled-version=\"5.3.11\"]',\n G = new RegExp(\"^\" + N + '\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),\n L = function (e, t, n) {\n for (var r, o = n.split(\",\"), s = 0, i = o.length; s < i; s++) (r = o[s]) && e.registerName(t, r);\n },\n F = function (e, t) {\n for (var n = (t.textContent || \"\").split(\"/*!sc*/\\n\"), r = [], o = 0, s = n.length; o < s; o++) {\n var i = n[o].trim();\n if (i) {\n var a = i.match(G);\n if (a) {\n var c = 0 | parseInt(a[1], 10),\n u = a[2];\n 0 !== c && (z(u, c), L(e, u, a[3]), e.getTag().insertRules(c, r)), r.length = 0;\n } else r.push(i);\n }\n }\n },\n Y = function () {\n return \"undefined\" != typeof __webpack_nonce__ ? __webpack_nonce__ : null;\n },\n q = function (e) {\n var t = document.head,\n n = e || t,\n r = document.createElement(\"style\"),\n o = function (e) {\n for (var t = e.childNodes, n = t.length; n >= 0; n--) {\n var r = t[n];\n if (r && 1 === r.nodeType && r.hasAttribute(N)) return r;\n }\n }(n),\n s = void 0 !== o ? o.nextSibling : null;\n r.setAttribute(N, \"active\"), r.setAttribute(\"data-styled-version\", \"5.3.11\");\n var i = Y();\n return i && r.setAttribute(\"nonce\", i), n.insertBefore(r, s), r;\n },\n H = function () {\n function e(e) {\n var t = this.element = q(e);\n t.appendChild(document.createTextNode(\"\")), this.sheet = function (e) {\n if (e.sheet) return e.sheet;\n for (var t = document.styleSheets, n = 0, r = t.length; n < r; n++) {\n var o = t[n];\n if (o.ownerNode === e) return o;\n }\n D(17);\n }(t), this.length = 0;\n }\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n try {\n return this.sheet.insertRule(t, e), this.length++, !0;\n } catch (e) {\n return !1;\n }\n }, t.deleteRule = function (e) {\n this.sheet.deleteRule(e), this.length--;\n }, t.getRule = function (e) {\n var t = this.sheet.cssRules[e];\n return void 0 !== t && \"string\" == typeof t.cssText ? t.cssText : \"\";\n }, e;\n }(),\n $ = function () {\n function e(e) {\n var t = this.element = q(e);\n this.nodes = t.childNodes, this.length = 0;\n }\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n if (e <= this.length && e >= 0) {\n var n = document.createTextNode(t),\n r = this.nodes[e];\n return this.element.insertBefore(n, r || null), this.length++, !0;\n }\n return !1;\n }, t.deleteRule = function (e) {\n this.element.removeChild(this.nodes[e]), this.length--;\n }, t.getRule = function (e) {\n return e < this.length ? this.nodes[e].textContent : \"\";\n }, e;\n }(),\n W = function () {\n function e(e) {\n this.rules = [], this.length = 0;\n }\n var t = e.prototype;\n return t.insertRule = function (e, t) {\n return e <= this.length && (this.rules.splice(e, 0, t), this.length++, !0);\n }, t.deleteRule = function (e) {\n this.rules.splice(e, 1), this.length--;\n }, t.getRule = function (e) {\n return e < this.length ? this.rules[e] : \"\";\n }, e;\n }(),\n U = C,\n J = {\n isServer: !C,\n useCSSOMInjection: !I\n },\n X = function () {\n function e(e, t, n) {\n void 0 === e && (e = w), void 0 === t && (t = {}), this.options = y({}, J, {}, e), this.gs = t, this.names = new Map(n), this.server = !!e.isServer, !this.server && C && U && (U = !1, function (e) {\n for (var t = document.querySelectorAll(M), n = 0, r = t.length; n < r; n++) {\n var o = t[n];\n o && \"active\" !== o.getAttribute(N) && (F(e, o), o.parentNode && o.parentNode.removeChild(o));\n }\n }(this));\n }\n e.registerId = function (e) {\n return V(e);\n };\n var t = e.prototype;\n return t.reconstructWithOptions = function (t, n) {\n return void 0 === n && (n = !0), new e(y({}, this.options, {}, t), this.gs, n && this.names || void 0);\n }, t.allocateGSInstance = function (e) {\n return this.gs[e] = (this.gs[e] || 0) + 1;\n }, t.getTag = function () {\n return this.tag || (this.tag = (n = (t = this.options).isServer, r = t.useCSSOMInjection, o = t.target, e = n ? new W(o) : r ? new H(o) : new $(o), new j(e)));\n var e, t, n, r, o;\n }, t.hasNameForId = function (e, t) {\n return this.names.has(e) && this.names.get(e).has(t);\n }, t.registerName = function (e, t) {\n if (V(e), this.names.has(e)) this.names.get(e).add(t);else {\n var n = new Set();\n n.add(t), this.names.set(e, n);\n }\n }, t.insertRules = function (e, t, n) {\n this.registerName(e, t), this.getTag().insertRules(V(e), n);\n }, t.clearNames = function (e) {\n this.names.has(e) && this.names.get(e).clear();\n }, t.clearRules = function (e) {\n this.getTag().clearGroup(V(e)), this.clearNames(e);\n }, t.clearTag = function () {\n this.tag = void 0;\n }, t.toString = function () {\n return function (e) {\n for (var t = e.getTag(), n = t.length, r = \"\", o = 0; o < n; o++) {\n var s = B(o);\n if (void 0 !== s) {\n var i = e.names.get(s),\n a = t.getGroup(o);\n if (i && a && i.size) {\n var c = N + \".g\" + o + '[id=\"' + s + '\"]',\n u = \"\";\n void 0 !== i && i.forEach(function (e) {\n e.length > 0 && (u += e + \",\");\n }), r += \"\" + a + c + '{content:\"' + u + '\"}/*!sc*/\\n';\n }\n }\n }\n return r;\n }(this);\n }, e;\n }(),\n Z = /(a)(d)/gi,\n K = function (e) {\n return String.fromCharCode(e + (e > 25 ? 39 : 97));\n };\nfunction Q(e) {\n var t,\n n = \"\";\n for (t = Math.abs(e); t > 52; t = t / 52 | 0) n = K(t % 52) + n;\n return (K(t % 52) + n).replace(Z, \"$1-$2\");\n}\nvar ee = function (e, t) {\n for (var n = t.length; n;) e = 33 * e ^ t.charCodeAt(--n);\n return e;\n },\n te = function (e) {\n return ee(5381, e);\n };\nfunction ne(e) {\n for (var t = 0; t < e.length; t += 1) {\n var n = e[t];\n if (E(n) && !_(n)) return !1;\n }\n return !0;\n}\nvar re = te(\"5.3.11\"),\n oe = function () {\n function e(e, t, n) {\n this.rules = e, this.staticRulesId = \"\", this.isStatic = \"production\" === process.env.NODE_ENV && (void 0 === n || n.isStatic) && ne(e), this.componentId = t, this.baseHash = ee(re, t), this.baseStyle = n, X.registerId(t);\n }\n return e.prototype.generateAndInjectStyles = function (e, t, n) {\n var r = this.componentId,\n o = [];\n if (this.baseStyle && o.push(this.baseStyle.generateAndInjectStyles(e, t, n)), this.isStatic && !n.hash) {\n if (this.staticRulesId && t.hasNameForId(r, this.staticRulesId)) o.push(this.staticRulesId);else {\n var s = _e(this.rules, e, t, n).join(\"\"),\n i = Q(ee(this.baseHash, s) >>> 0);\n if (!t.hasNameForId(r, i)) {\n var a = n(s, \".\" + i, void 0, r);\n t.insertRules(r, i, a);\n }\n o.push(i), this.staticRulesId = i;\n }\n } else {\n for (var c = this.rules.length, u = ee(this.baseHash, n.hash), l = \"\", d = 0; d < c; d++) {\n var h = this.rules[d];\n if (\"string\" == typeof h) l += h, \"production\" !== process.env.NODE_ENV && (u = ee(u, h + d));else if (h) {\n var p = _e(h, e, t, n),\n f = Array.isArray(p) ? p.join(\"\") : p;\n u = ee(u, f + d), l += f;\n }\n }\n if (l) {\n var m = Q(u >>> 0);\n if (!t.hasNameForId(r, m)) {\n var y = n(l, \".\" + m, void 0, r);\n t.insertRules(r, m, y);\n }\n o.push(m);\n }\n }\n return o.join(\" \");\n }, e;\n }(),\n se = /^\\s*\\/\\/.*$/gm,\n ie = [\":\", \"[\", \".\", \"#\"];\nfunction ae(e) {\n var t,\n n,\n r,\n o,\n s = void 0 === e ? w : e,\n i = s.options,\n a = void 0 === i ? w : i,\n c = s.plugins,\n u = void 0 === c ? S : c,\n l = new h(a),\n d = [],\n p = function (e) {\n function t(t) {\n if (t) try {\n e(t + \"}\");\n } catch (e) {}\n }\n return function (n, r, o, s, i, a, c, u, l, d) {\n switch (n) {\n case 1:\n if (0 === l && 64 === r.charCodeAt(0)) return e(r + \";\"), \"\";\n break;\n case 2:\n if (0 === u) return r + \"/*|*/\";\n break;\n case 3:\n switch (u) {\n case 102:\n case 112:\n return e(o[0] + r), \"\";\n default:\n return r + (0 === d ? \"/*|*/\" : \"\");\n }\n case -2:\n r.split(\"/*|*/}\").forEach(t);\n }\n };\n }(function (e) {\n d.push(e);\n }),\n f = function (e, r, s) {\n return 0 === r && -1 !== ie.indexOf(s[n.length]) || s.match(o) ? e : \".\" + t;\n };\n function m(e, s, i, a) {\n void 0 === a && (a = \"&\");\n var c = e.replace(se, \"\"),\n u = s && i ? i + \" \" + s + \" { \" + c + \" }\" : c;\n return t = a, n = s, r = new RegExp(\"\\\\\" + n + \"\\\\b\", \"g\"), o = new RegExp(\"(\\\\\" + n + \"\\\\b){2,}\"), l(i || !s ? \"\" : s, u);\n }\n return l.use([].concat(u, [function (e, t, o) {\n 2 === e && o.length && o[0].lastIndexOf(n) > 0 && (o[0] = o[0].replace(r, f));\n }, p, function (e) {\n if (-2 === e) {\n var t = d;\n return d = [], t;\n }\n }])), m.hash = u.length ? u.reduce(function (e, t) {\n return t.name || D(15), ee(e, t.name);\n }, 5381).toString() : \"\", m;\n}\nvar ce = r.createContext(),\n ue = ce.Consumer,\n le = r.createContext(),\n de = (le.Consumer, new X()),\n he = ae();\nfunction pe() {\n return s(ce) || de;\n}\nfunction fe() {\n return s(le) || he;\n}\nfunction me(e) {\n var t = o(e.stylisPlugins),\n n = t[0],\n s = t[1],\n c = pe(),\n u = i(function () {\n var t = c;\n return e.sheet ? t = e.sheet : e.target && (t = t.reconstructWithOptions({\n target: e.target\n }, !1)), e.disableCSSOMInjection && (t = t.reconstructWithOptions({\n useCSSOMInjection: !1\n })), t;\n }, [e.disableCSSOMInjection, e.sheet, e.target]),\n l = i(function () {\n return ae({\n options: {\n prefix: !e.disableVendorPrefixes\n },\n plugins: n\n });\n }, [e.disableVendorPrefixes, n]);\n return a(function () {\n d(n, e.stylisPlugins) || s(e.stylisPlugins);\n }, [e.stylisPlugins]), r.createElement(ce.Provider, {\n value: u\n }, r.createElement(le.Provider, {\n value: l\n }, \"production\" !== process.env.NODE_ENV ? r.Children.only(e.children) : e.children));\n}\nvar ye = function () {\n function e(e, t) {\n var n = this;\n this.inject = function (e, t) {\n void 0 === t && (t = he);\n var r = n.name + t.hash;\n e.hasNameForId(n.id, r) || e.insertRules(n.id, r, t(n.rules, r, \"@keyframes\"));\n }, this.toString = function () {\n return D(12, String(n.name));\n }, this.name = e, this.id = \"sc-keyframes-\" + e, this.rules = t;\n }\n return e.prototype.getName = function (e) {\n return void 0 === e && (e = he), this.name + e.hash;\n }, e;\n }(),\n ve = /([A-Z])/,\n ge = /([A-Z])/g,\n Se = /^ms-/,\n we = function (e) {\n return \"-\" + e.toLowerCase();\n };\nfunction Ee(e) {\n return ve.test(e) ? e.replace(ge, we).replace(Se, \"-ms-\") : e;\n}\nvar be = function (e) {\n return null == e || !1 === e || \"\" === e;\n};\nfunction _e(e, n, r, o) {\n if (Array.isArray(e)) {\n for (var s, i = [], a = 0, c = e.length; a < c; a += 1) \"\" !== (s = _e(e[a], n, r, o)) && (Array.isArray(s) ? i.push.apply(i, s) : i.push(s));\n return i;\n }\n if (be(e)) return \"\";\n if (_(e)) return \".\" + e.styledComponentId;\n if (E(e)) {\n if (\"function\" != typeof (l = e) || l.prototype && l.prototype.isReactComponent || !n) return e;\n var u = e(n);\n return \"production\" !== process.env.NODE_ENV && t(u) && console.warn(b(e) + \" is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\"), _e(u, n, r, o);\n }\n var l;\n return e instanceof ye ? r ? (e.inject(r, o), e.getName(o)) : e : g(e) ? function e(t, n) {\n var r,\n o,\n s = [];\n for (var i in t) t.hasOwnProperty(i) && !be(t[i]) && (Array.isArray(t[i]) && t[i].isCss || E(t[i]) ? s.push(Ee(i) + \":\", t[i], \";\") : g(t[i]) ? s.push.apply(s, e(t[i], i)) : s.push(Ee(i) + \": \" + (r = i, null == (o = t[i]) || \"boolean\" == typeof o || \"\" === o ? \"\" : \"number\" != typeof o || 0 === o || r in p || r.startsWith(\"--\") ? String(o).trim() : o + \"px\") + \";\"));\n return n ? [n + \" {\"].concat(s, [\"}\"]) : s;\n }(e) : e.toString();\n}\nvar Ne = function (e) {\n return Array.isArray(e) && (e.isCss = !0), e;\n};\nfunction Ae(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];\n return E(e) || g(e) ? Ne(_e(v(S, [e].concat(n)))) : 0 === n.length && 1 === e.length && \"string\" == typeof e[0] ? e : Ne(_e(v(e, n)));\n}\nvar Ce = /invalid hook call/i,\n Ie = new Set(),\n Pe = function (e, t) {\n if (\"production\" !== process.env.NODE_ENV) {\n var n = \"The component \" + e + (t ? ' with the id of \"' + t + '\"' : \"\") + \" has been created dynamically.\\nYou may see this warning because you've called styled inside another component.\\nTo resolve this only create new StyledComponents outside of any render method and function component.\",\n r = console.error;\n try {\n var o = !0;\n console.error = function (e) {\n if (Ce.test(e)) o = !1, Ie.delete(n);else {\n for (var t = arguments.length, s = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++) s[i - 1] = arguments[i];\n r.apply(void 0, [e].concat(s));\n }\n }, c(), o && !Ie.has(n) && (console.warn(n), Ie.add(n));\n } catch (e) {\n Ce.test(e.message) && Ie.delete(n);\n } finally {\n console.error = r;\n }\n }\n },\n Oe = function (e, t, n) {\n return void 0 === n && (n = w), e.theme !== n.theme && e.theme || t || n.theme;\n },\n Re = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g,\n De = /(^-|-$)/g;\nfunction je(e) {\n return e.replace(Re, \"-\").replace(De, \"\");\n}\nvar Te = function (e) {\n return Q(te(e) >>> 0);\n};\nfunction xe(e) {\n return \"string\" == typeof e && (\"production\" === process.env.NODE_ENV || e.charAt(0) === e.charAt(0).toLowerCase());\n}\nvar ke = function (e) {\n return \"function\" == typeof e || \"object\" == typeof e && null !== e && !Array.isArray(e);\n },\n Ve = function (e) {\n return \"__proto__\" !== e && \"constructor\" !== e && \"prototype\" !== e;\n };\nfunction Be(e, t, n) {\n var r = e[n];\n ke(t) && ke(r) ? ze(r, t) : e[n] = t;\n}\nfunction ze(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];\n for (var o = 0, s = n; o < s.length; o++) {\n var i = s[o];\n if (ke(i)) for (var a in i) Ve(a) && Be(e, i[a], a);\n }\n return e;\n}\nvar Me = r.createContext(),\n Ge = Me.Consumer;\nfunction Le(e) {\n var t = s(Me),\n n = i(function () {\n return function (e, t) {\n if (!e) return D(14);\n if (E(e)) {\n var n = e(t);\n return \"production\" === process.env.NODE_ENV || null !== n && !Array.isArray(n) && \"object\" == typeof n ? n : D(7);\n }\n return Array.isArray(e) || \"object\" != typeof e ? D(8) : t ? y({}, t, {}, e) : e;\n }(e.theme, t);\n }, [e.theme, t]);\n return e.children ? r.createElement(Me.Provider, {\n value: n\n }, e.children) : null;\n}\nvar Fe = {};\nfunction Ye(e, t, n) {\n var o = _(e),\n i = !xe(e),\n a = t.attrs,\n c = void 0 === a ? S : a,\n l = t.componentId,\n d = void 0 === l ? function (e, t) {\n var n = \"string\" != typeof e ? \"sc\" : je(e);\n Fe[n] = (Fe[n] || 0) + 1;\n var r = n + \"-\" + Te(\"5.3.11\" + n + Fe[n]);\n return t ? t + \"-\" + r : r;\n }(t.displayName, t.parentComponentId) : l,\n h = t.displayName,\n p = void 0 === h ? function (e) {\n return xe(e) ? \"styled.\" + e : \"Styled(\" + b(e) + \")\";\n }(e) : h,\n v = t.displayName && t.componentId ? je(t.displayName) + \"-\" + t.componentId : t.componentId || d,\n g = o && e.attrs ? Array.prototype.concat(e.attrs, c).filter(Boolean) : c,\n N = t.shouldForwardProp;\n o && e.shouldForwardProp && (N = t.shouldForwardProp ? function (n, r, o) {\n return e.shouldForwardProp(n, r, o) && t.shouldForwardProp(n, r, o);\n } : e.shouldForwardProp);\n var A,\n C = new oe(n, v, o ? e.componentStyle : void 0),\n I = C.isStatic && 0 === c.length,\n P = function (e, t) {\n return function (e, t, n, r) {\n var o = e.attrs,\n i = e.componentStyle,\n a = e.defaultProps,\n c = e.foldedComponentIds,\n l = e.shouldForwardProp,\n d = e.styledComponentId,\n h = e.target,\n p = function (e, t, n) {\n void 0 === e && (e = w);\n var r = y({}, t, {\n theme: e\n }),\n o = {};\n return n.forEach(function (e) {\n var t,\n n,\n s,\n i = e;\n for (t in E(i) && (i = i(r)), i) r[t] = o[t] = \"className\" === t ? (n = o[t], s = i[t], n && s ? n + \" \" + s : n || s) : i[t];\n }), [r, o];\n }(Oe(t, s(Me), a) || w, t, o),\n m = p[0],\n v = p[1],\n g = function (e, t, n, r) {\n var o = pe(),\n s = fe(),\n i = t ? e.generateAndInjectStyles(w, o, s) : e.generateAndInjectStyles(n, o, s);\n return \"production\" !== process.env.NODE_ENV && !t && r && r(i), i;\n }(i, r, m, \"production\" !== process.env.NODE_ENV ? e.warnTooManyClasses : void 0),\n S = n,\n b = v.$as || t.$as || v.as || t.as || h,\n _ = xe(b),\n N = v !== t ? y({}, t, {}, v) : t,\n A = {};\n for (var C in N) \"$\" !== C[0] && \"as\" !== C && (\"forwardedAs\" === C ? A.as = N[C] : (l ? l(C, f, b) : !_ || f(C)) && (A[C] = N[C]));\n return t.style && v.style !== t.style && (A.style = y({}, t.style, {}, v.style)), A.className = Array.prototype.concat(c, d, g !== d ? g : null, t.className, v.className).filter(Boolean).join(\" \"), A.ref = S, u(b, A);\n }(A, e, t, I);\n };\n return P.displayName = p, (A = r.forwardRef(P)).attrs = g, A.componentStyle = C, A.displayName = p, A.shouldForwardProp = N, A.foldedComponentIds = o ? Array.prototype.concat(e.foldedComponentIds, e.styledComponentId) : S, A.styledComponentId = v, A.target = o ? e.target : e, A.withComponent = function (e) {\n var r = t.componentId,\n o = function (e, t) {\n if (null == e) return {};\n var n,\n r,\n o = {},\n s = Object.keys(e);\n for (r = 0; r < s.length; r++) n = s[r], t.indexOf(n) >= 0 || (o[n] = e[n]);\n return o;\n }(t, [\"componentId\"]),\n s = r && r + \"-\" + (xe(e) ? e : je(b(e)));\n return Ye(e, y({}, o, {\n attrs: g,\n componentId: s\n }), n);\n }, Object.defineProperty(A, \"defaultProps\", {\n get: function () {\n return this._foldedDefaultProps;\n },\n set: function (t) {\n this._foldedDefaultProps = o ? ze({}, e.defaultProps, t) : t;\n }\n }), \"production\" !== process.env.NODE_ENV && (Pe(p, v), A.warnTooManyClasses = function (e, t) {\n var n = {},\n r = !1;\n return function (o) {\n if (!r && (n[o] = !0, Object.keys(n).length >= 200)) {\n var s = t ? ' with the id of \"' + t + '\"' : \"\";\n console.warn(\"Over 200 classes were generated for component \" + e + s + \".\\nConsider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n const Component = styled.div.attrs(props => ({\\n style: {\\n background: props.background,\\n },\\n }))`width: 100%;`\\n\\n <Component />\"), r = !0, n = {};\n }\n };\n }(p, v)), Object.defineProperty(A, \"toString\", {\n value: function () {\n return \".\" + A.styledComponentId;\n }\n }), i && m(A, e, {\n attrs: !0,\n componentStyle: !0,\n displayName: !0,\n foldedComponentIds: !0,\n shouldForwardProp: !0,\n styledComponentId: !0,\n target: !0,\n withComponent: !0\n }), A;\n}\nvar qe = function (e) {\n return function e(t, r, o) {\n if (void 0 === o && (o = w), !n(r)) return D(1, String(r));\n var s = function () {\n return t(r, o, Ae.apply(void 0, arguments));\n };\n return s.withConfig = function (n) {\n return e(t, r, y({}, o, {}, n));\n }, s.attrs = function (n) {\n return e(t, r, y({}, o, {\n attrs: Array.prototype.concat(o.attrs, n).filter(Boolean)\n }));\n }, s;\n }(Ye, e);\n};\n[\"a\", \"abbr\", \"address\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"bdi\", \"bdo\", \"big\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"pre\", \"progress\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"circle\", \"clipPath\", \"defs\", \"ellipse\", \"foreignObject\", \"g\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\", \"stop\", \"svg\", \"text\", \"textPath\", \"tspan\"].forEach(function (e) {\n qe[e] = qe(e);\n});\nvar He = function () {\n function e(e, t) {\n this.rules = e, this.componentId = t, this.isStatic = ne(e), X.registerId(this.componentId + 1);\n }\n var t = e.prototype;\n return t.createStyles = function (e, t, n, r) {\n var o = r(_e(this.rules, t, n, r).join(\"\"), \"\"),\n s = this.componentId + e;\n n.insertRules(s, s, o);\n }, t.removeStyles = function (e, t) {\n t.clearRules(this.componentId + e);\n }, t.renderStyles = function (e, t, n, r) {\n e > 2 && X.registerId(this.componentId + e), this.removeStyles(e, n), this.createStyles(e, t, n, r);\n }, e;\n}();\nfunction $e(e) {\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), o = 1; o < t; o++) n[o - 1] = arguments[o];\n var i = Ae.apply(void 0, [e].concat(n)),\n a = \"sc-global-\" + Te(JSON.stringify(i)),\n u = new He(i, a);\n function d(e) {\n var t = pe(),\n n = fe(),\n o = s(Me),\n d = c(t.allocateGSInstance(a)).current;\n return \"production\" !== process.env.NODE_ENV && r.Children.count(e.children) && console.warn(\"The global style component \" + a + \" was given child JSX. createGlobalStyle does not render children.\"), \"production\" !== process.env.NODE_ENV && i.some(function (e) {\n return \"string\" == typeof e && -1 !== e.indexOf(\"@import\");\n }) && console.warn(\"Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app.\"), t.server && h(d, e, t, o, n), l(function () {\n if (!t.server) return h(d, e, t, o, n), function () {\n return u.removeStyles(d, t);\n };\n }, [d, e, t, o, n]), null;\n }\n function h(e, t, n, r, o) {\n if (u.isStatic) u.renderStyles(e, P, n, o);else {\n var s = y({}, t, {\n theme: Oe(t, r, d.defaultProps)\n });\n u.renderStyles(e, s, n, o);\n }\n }\n return \"production\" !== process.env.NODE_ENV && Pe(a), r.memo(d);\n}\nfunction We(e) {\n \"production\" !== process.env.NODE_ENV && \"undefined\" != typeof navigator && \"ReactNative\" === navigator.product && console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");\n for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r];\n var o = Ae.apply(void 0, [e].concat(n)).join(\"\"),\n s = Te(o);\n return new ye(s, o);\n}\nvar Ue = function () {\n function e() {\n var e = this;\n this._emitSheetCSS = function () {\n var t = e.instance.toString();\n if (!t) return \"\";\n var n = Y();\n return \"<style \" + [n && 'nonce=\"' + n + '\"', N + '=\"true\"', 'data-styled-version=\"5.3.11\"'].filter(Boolean).join(\" \") + \">\" + t + \"</style>\";\n }, this.getStyleTags = function () {\n return e.sealed ? D(2) : e._emitSheetCSS();\n }, this.getStyleElement = function () {\n var t;\n if (e.sealed) return D(2);\n var n = ((t = {})[N] = \"\", t[\"data-styled-version\"] = \"5.3.11\", t.dangerouslySetInnerHTML = {\n __html: e.instance.toString()\n }, t),\n o = Y();\n return o && (n.nonce = o), [r.createElement(\"style\", y({}, n, {\n key: \"sc-0-0\"\n }))];\n }, this.seal = function () {\n e.sealed = !0;\n }, this.instance = new X({\n isServer: !0\n }), this.sealed = !1;\n }\n var t = e.prototype;\n return t.collectStyles = function (e) {\n return this.sealed ? D(2) : r.createElement(me, {\n sheet: this.instance\n }, e);\n }, t.interleaveWithNodeStream = function (e) {\n return D(3);\n }, e;\n }(),\n Je = function (e) {\n var t = r.forwardRef(function (t, n) {\n var o = s(Me),\n i = e.defaultProps,\n a = Oe(t, o, i);\n return \"production\" !== process.env.NODE_ENV && void 0 === a && console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"' + b(e) + '\"'), r.createElement(e, y({}, t, {\n theme: a,\n ref: n\n }));\n });\n return m(t, e), t.displayName = \"WithTheme(\" + b(e) + \")\", t;\n },\n Xe = function () {\n return s(Me);\n },\n Ze = {\n StyleSheet: X,\n masterSheet: de\n };\n\"production\" !== process.env.NODE_ENV && \"undefined\" != typeof navigator && \"ReactNative\" === navigator.product && console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\"), \"production\" !== process.env.NODE_ENV && \"test\" !== process.env.NODE_ENV && \"undefined\" != typeof window && (window[\"__styled-components-init__\"] = window[\"__styled-components-init__\"] || 0, 1 === window[\"__styled-components-init__\"] && console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://s-c.sh/2BAXzed for more info.\"), window[\"__styled-components-init__\"] += 1);\nexport default qe;\nexport { Ue as ServerStyleSheet, ue as StyleSheetConsumer, ce as StyleSheetContext, me as StyleSheetManager, Ge as ThemeConsumer, Me as ThemeContext, Le as ThemeProvider, Ze as __PRIVATE__, $e as createGlobalStyle, Ae as css, _ as isStyledComponent, We as keyframes, Xe as useTheme, A as version, Je as withTheme };\n//# sourceMappingURL=styled-components.browser.esm.js.map","var space = require('to-space-case');\n\n/**\n * Export.\n */\n\nmodule.exports = toCamelCase;\n\n/**\n * Convert a `string` to camel case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toCamelCase(string) {\n return space(string).replace(/\\s(\\w)/g, function (matches, letter) {\n return letter.toUpperCase();\n });\n}","/**\n * Export.\n */\n\nmodule.exports = toNoCase;\n\n/**\n * Test whether a string is camel-case.\n */\n\nvar hasSpace = /\\s/;\nvar hasSeparator = /(_|-|\\.|:)/;\nvar hasCamel = /([a-z][A-Z]|[A-Z][a-z])/;\n\n/**\n * Remove any starting case from a `string`, like camel or snake, but keep\n * spaces and punctuation that may be important otherwise.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toNoCase(string) {\n if (hasSpace.test(string)) return string.toLowerCase();\n if (hasSeparator.test(string)) return (unseparate(string) || string).toLowerCase();\n if (hasCamel.test(string)) return uncamelize(string).toLowerCase();\n return string.toLowerCase();\n}\n\n/**\n * Separator splitter.\n */\n\nvar separatorSplitter = /[\\W_]+(.|$)/g;\n\n/**\n * Un-separate a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction unseparate(string) {\n return string.replace(separatorSplitter, function (m, next) {\n return next ? ' ' + next : '';\n });\n}\n\n/**\n * Camelcase splitter.\n */\n\nvar camelSplitter = /(.)([A-Z]+)/g;\n\n/**\n * Un-camelcase a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction uncamelize(string) {\n return string.replace(camelSplitter, function (m, previous, uppers) {\n return previous + ' ' + uppers.toLowerCase().split('').join(' ');\n });\n}","var clean = require('to-no-case');\n\n/**\n * Export.\n */\n\nmodule.exports = toSpaceCase;\n\n/**\n * Convert a `string` to space case.\n *\n * @param {String} string\n * @return {String}\n */\n\nfunction toSpaceCase(string) {\n return clean(string).replace(/[\\W_]+(.|$)/g, function (matches, match) {\n return match ? ' ' + match : '';\n }).trim();\n}","'use strict';\n\nvar wrap = require('./wrap.js');\nmodule.exports = trough;\ntrough.wrap = wrap;\nvar slice = [].slice;\n\n// Create new middleware.\nfunction trough() {\n var fns = [];\n var middleware = {};\n middleware.run = run;\n middleware.use = use;\n return middleware;\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1;\n var input = slice.call(arguments, 0, -1);\n var done = arguments[arguments.length - 1];\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done);\n }\n next.apply(null, [null].concat(input));\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index];\n var params = slice.call(arguments, 0);\n var values = params.slice(1);\n var length = input.length;\n var pos = -1;\n if (err) {\n done(err);\n return;\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos];\n }\n }\n input = values;\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input);\n } else {\n done.apply(null, [null].concat(input));\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn);\n }\n fns.push(fn);\n return middleware;\n }\n}","'use strict';\n\nvar slice = [].slice;\nmodule.exports = wrap;\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked;\n return wrapped;\n function wrapped() {\n var params = slice.call(arguments, 0);\n var callback = fn.length > params.length;\n var result;\n if (callback) {\n params.push(done);\n }\n try {\n result = fn.apply(null, params);\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error;\n }\n return done(error);\n }\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done);\n } else if (result instanceof Error) {\n done(result);\n } else {\n then(result);\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true;\n callback.apply(null, arguments);\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value);\n }\n}","'use strict';\n\nvar bail = require('bail');\nvar buffer = require('is-buffer');\nvar extend = require('extend');\nvar plain = require('is-plain-obj');\nvar trough = require('trough');\nvar vfile = require('vfile');\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze();\nvar slice = [].slice;\nvar own = {}.hasOwnProperty;\n\n// Process pipeline.\nvar pipeline = trough().use(pipelineParse).use(pipelineRun).use(pipelineStringify);\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file);\n}\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done);\n function done(error, tree, file) {\n if (error) {\n next(error);\n } else {\n ctx.tree = tree;\n ctx.file = file;\n next();\n }\n }\n}\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file);\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n if ('value' in ctx.file) {\n ctx.file.value = result;\n }\n ctx.file.contents = result;\n } else {\n ctx.file.result = result;\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = [];\n var transformers = trough();\n var namespace = {};\n var freezeIndex = -1;\n var frozen;\n\n // Data management.\n processor.data = data;\n\n // Lock.\n processor.freeze = freeze;\n\n // Plugins.\n processor.attachers = attachers;\n processor.use = use;\n\n // API.\n processor.parse = parse;\n processor.stringify = stringify;\n processor.run = run;\n processor.runSync = runSync;\n processor.process = process;\n processor.processSync = processSync;\n\n // Expose.\n return processor;\n\n // Create a new processor based on the processor in the current scope.\n function processor() {\n var destination = unified();\n var index = -1;\n while (++index < attachers.length) {\n destination.use.apply(null, attachers[index]);\n }\n destination.data(extend(true, {}, namespace));\n return destination;\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values;\n var transformer;\n if (frozen) {\n return processor;\n }\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex];\n if (values[1] === false) {\n continue;\n }\n if (values[1] === true) {\n values[1] = undefined;\n }\n transformer = values[0].apply(processor, values.slice(1));\n if (typeof transformer === 'function') {\n transformers.use(transformer);\n }\n }\n frozen = true;\n freezeIndex = Infinity;\n return processor;\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen);\n namespace[key] = value;\n return processor;\n }\n\n // Get `key`.\n return own.call(namespace, key) && namespace[key] || null;\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen);\n namespace = key;\n return processor;\n }\n\n // Get space.\n return namespace;\n }\n\n // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings;\n assertUnfrozen('use', frozen);\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings);\n }\n return processor;\n function addPreset(result) {\n addList(result.plugins);\n if (result.settings) {\n settings = extend(settings || {}, result.settings);\n }\n }\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n }\n function addList(plugins) {\n var index = -1;\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n while (++index < plugins.length) {\n add(plugins[index]);\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`');\n }\n }\n function addPlugin(plugin, value) {\n var entry = find(plugin);\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(true, entry[1], value);\n }\n entry[1] = value;\n } else {\n attachers.push(slice.call(arguments));\n }\n }\n }\n function find(plugin) {\n var index = -1;\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n return attachers[index];\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc);\n var Parser;\n freeze();\n Parser = processor.Parser;\n assertParser('parse', Parser);\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse();\n }\n return Parser(String(file), file); // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node);\n freeze();\n if (!cb && typeof file === 'function') {\n cb = file;\n file = null;\n }\n if (!cb) {\n return new Promise(executor);\n }\n executor(null, cb);\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done);\n function done(error, tree, file) {\n tree = tree || node;\n if (error) {\n reject(error);\n } else if (resolve) {\n resolve(tree);\n } else {\n cb(null, tree, file);\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var result;\n var complete;\n run(node, file, done);\n assertDone('runSync', 'run', complete);\n return result;\n function done(error, tree) {\n complete = true;\n result = tree;\n bail(error);\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc);\n var Compiler;\n freeze();\n Compiler = processor.Compiler;\n assertCompiler('stringify', Compiler);\n assertNode(node);\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile();\n }\n return Compiler(node, file); // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze();\n assertParser('process', processor.Parser);\n assertCompiler('process', processor.Compiler);\n if (!cb) {\n return new Promise(executor);\n }\n executor(null, cb);\n function executor(resolve, reject) {\n var file = vfile(doc);\n pipeline.run(processor, {\n file: file\n }, done);\n function done(error) {\n if (error) {\n reject(error);\n } else if (resolve) {\n resolve(file);\n } else {\n cb(null, file);\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var file;\n var complete;\n freeze();\n assertParser('processSync', processor.Parser);\n assertCompiler('processSync', processor.Compiler);\n file = vfile(doc);\n process(file, done);\n assertDone('processSync', 'process', complete);\n return file;\n function done(error) {\n complete = true;\n bail(error);\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return typeof value === 'function' && value.prototype && (\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n keys(value.prototype) || name in value.prototype);\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key;\n for (key in value) {\n return true;\n }\n return false;\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`');\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`');\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error('Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.');\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`');\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n }\n}","'use strict';\n\nmodule.exports = u;\nfunction u(type, props, value) {\n var node;\n if ((value === null || value === undefined) && (typeof props !== 'object' || Array.isArray(props))) {\n value = props;\n props = {};\n }\n node = Object.assign({\n type: String(type)\n }, props);\n if (Array.isArray(value)) {\n node.children = value;\n } else if (value !== null && value !== undefined) {\n node.value = String(value);\n }\n return node;\n}","'use strict';\n\nmodule.exports = generated;\nfunction generated(node) {\n return !node || !node.position || !node.position.start || !node.position.start.line || !node.position.start.column || !node.position.end || !node.position.end.line || !node.position.end.column;\n}","'use strict';\n\nmodule.exports = convert;\nfunction convert(test) {\n if (test == null) {\n return ok;\n }\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n if (typeof test === 'object') {\n return 'length' in test ? anyFactory(test) : allFactory(test);\n }\n if (typeof test === 'function') {\n return test;\n }\n throw new Error('Expected function, string, or object as test');\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n return all;\n function all(node) {\n var key;\n for (key in test) {\n if (node[key] !== test[key]) return false;\n }\n return true;\n }\n}\nfunction anyFactory(tests) {\n var checks = [];\n var index = -1;\n while (++index < tests.length) {\n checks[index] = convert(tests[index]);\n }\n return any;\n function any() {\n var index = -1;\n while (++index < checks.length) {\n if (checks[index].apply(this, arguments)) {\n return true;\n }\n }\n return false;\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type;\n function type(node) {\n return Boolean(node && node.type === test);\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true;\n}","'use strict';\n\nvar start = factory('start');\nvar end = factory('end');\nmodule.exports = position;\nposition.start = start;\nposition.end = end;\nfunction position(node) {\n return {\n start: start(node),\n end: end(node)\n };\n}\nfunction factory(type) {\n point.displayName = type;\n return point;\n function point(node) {\n var point = node && node.position && node.position[type] || {};\n return {\n line: point.line || null,\n column: point.column || null,\n offset: isNaN(point.offset) ? null : point.offset\n };\n }\n}","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = stringify;\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return '';\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position);\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value);\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value);\n }\n\n // ?\n return '';\n}\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {};\n }\n return index(point.line) + ':' + index(point.column);\n}\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {};\n }\n return point(pos.start) + '-' + point(pos.end);\n}\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1;\n}","module.exports = identity;\nfunction identity(d) {\n return d;\n}","'use strict';\n\nmodule.exports = visitParents;\nvar convert = require('unist-util-is/convert');\nvar color = require('./color');\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\nfunction visitParents(tree, test, visitor, reverse) {\n var step;\n var is;\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n is = convert(test);\n step = reverse ? -1 : 1;\n factory(tree, null, [])();\n function factory(node, index, parents) {\n var value = typeof node === 'object' && node !== null ? node : {};\n var name;\n if (typeof value.type === 'string') {\n name = typeof value.tagName === 'string' ? value.tagName : typeof value.name === 'string' ? value.name : undefined;\n visit.displayName = 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')';\n }\n return visit;\n function visit() {\n var grandparents = parents.concat(node);\n var result = [];\n var subresult;\n var offset;\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n if (result[0] === EXIT) {\n return result;\n }\n }\n if (node.children && result[0] !== SKIP) {\n offset = (reverse ? node.children.length : -1) + step;\n while (offset > -1 && offset < node.children.length) {\n subresult = factory(node.children[offset], offset, grandparents)();\n if (subresult[0] === EXIT) {\n return subresult;\n }\n offset = typeof subresult[1] === 'number' ? subresult[1] : offset + step;\n }\n }\n return result;\n }\n }\n}\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value;\n }\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n return [value];\n}","'use strict';\n\nmodule.exports = visit;\nvar visitParents = require('unist-util-visit-parents');\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n visitParents(tree, test, overload, reverse);\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function (fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n if (process.noDeprecation === true) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n};\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n return debugs[set];\n};\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str + '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\n}\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n var base = '',\n array = false,\n braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n ctx.seen.push(value);\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n return name + ': ' + str;\n}\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' ||\n // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('./support/isBuffer');\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","'use strict';\n\nvar stringify = require('unist-util-stringify-position');\nmodule.exports = VMessage;\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype();\n\n// Message properties.\nvar proto = VMessage.prototype;\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null;\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts;\n var range;\n var location;\n if (typeof position === 'string') {\n origin = position;\n position = null;\n }\n parts = parseOrigin(origin);\n range = stringify(position) || '1:1';\n location = {\n start: {\n line: null,\n column: null\n },\n end: {\n line: null,\n column: null\n }\n };\n\n // Node.\n if (position && position.position) {\n position = position.position;\n }\n if (position) {\n // Position.\n if (position.start) {\n location = position;\n position = position.start;\n } else {\n // Point.\n location.start = position;\n }\n }\n if (reason.stack) {\n this.stack = reason.stack;\n reason = reason.message;\n }\n this.message = reason;\n this.name = range;\n this.reason = reason;\n this.line = position ? position.line : null;\n this.column = position ? position.column : null;\n this.location = location;\n this.source = parts[0];\n this.ruleId = parts[1];\n}\nfunction parseOrigin(origin) {\n var result = [null, null];\n var index;\n if (typeof origin === 'string') {\n index = origin.indexOf(':');\n if (index === -1) {\n result[1] = origin;\n } else {\n result[0] = origin.slice(0, index);\n result[1] = origin.slice(index + 1);\n }\n }\n return result;\n}","'use strict';\n\nmodule.exports = require('./lib');","'use strict';\n\nvar p = require('./minpath');\nvar proc = require('./minproc');\nvar buffer = require('is-buffer');\nmodule.exports = VFile;\nvar own = {}.hasOwnProperty;\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\nVFile.prototype.toString = toString;\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {\n get: getPath,\n set: setPath\n});\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n});\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n});\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n});\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {\n get: getStem,\n set: setStem\n});\n\n// Construct a new file.\nfunction VFile(options) {\n var prop;\n var index;\n if (!options) {\n options = {};\n } else if (typeof options === 'string' || buffer(options)) {\n options = {\n contents: options\n };\n } else if ('message' in options && 'messages' in options) {\n return options;\n }\n if (!(this instanceof VFile)) {\n return new VFile(options);\n }\n this.data = {};\n this.messages = [];\n this.history = [];\n this.cwd = proc.cwd();\n\n // Set path related properties in the correct order.\n index = -1;\n while (++index < order.length) {\n prop = order[index];\n if (own.call(options, prop)) {\n this[prop] = options[prop];\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop];\n }\n }\n}\nfunction getPath() {\n return this.history[this.history.length - 1];\n}\nfunction setPath(path) {\n assertNonEmpty(path, 'path');\n if (this.path !== path) {\n this.history.push(path);\n }\n}\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined;\n}\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname');\n this.path = p.join(dirname || '', this.basename);\n}\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined;\n}\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename');\n assertPart(basename, 'basename');\n this.path = p.join(this.dirname || '', basename);\n}\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined;\n}\nfunction setExtname(extname) {\n assertPart(extname, 'extname');\n assertPath(this.path, 'extname');\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`');\n }\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots');\n }\n }\n this.path = p.join(this.dirname, this.stem + (extname || ''));\n}\nfunction getStem() {\n return typeof this.path === 'string' ? p.basename(this.path, this.extname) : undefined;\n}\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem');\n assertPart(stem, 'stem');\n this.path = p.join(this.dirname || '', stem + (this.extname || ''));\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding);\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error('`' + name + '` cannot be a path: did not expect `' + p.sep + '`');\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty');\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too');\n }\n}","'use strict';\n\nvar VMessage = require('vfile-message');\nvar VFile = require('./core.js');\nmodule.exports = VFile;\nVFile.prototype.message = message;\nVFile.prototype.info = info;\nVFile.prototype.fail = fail;\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, origin);\n if (this.path) {\n message.name = this.path + ':' + message.name;\n message.file = this.path;\n }\n message.fatal = false;\n this.messages.push(message);\n return message;\n}\n\n// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments);\n message.fatal = true;\n throw message;\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments);\n message.fatal = null;\n return message;\n}","'use strict';\n\n// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// 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, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node’s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// 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 permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// 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\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nexports.basename = basename;\nexports.dirname = dirname;\nexports.extname = extname;\nexports.join = join;\nexports.sep = '/';\nfunction basename(path, ext) {\n var start = 0;\n var end = -1;\n var index;\n var firstNonSlashEnd;\n var seenNonSlash;\n var extIndex;\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string');\n }\n assertPath(path);\n index = path.length;\n if (ext === undefined || !ext.length || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1;\n break;\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true;\n end = index + 1;\n }\n }\n return end < 0 ? '' : path.slice(start, end);\n }\n if (ext === path) {\n return '';\n }\n firstNonSlashEnd = -1;\n extIndex = ext.length - 1;\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true;\n firstNonSlashEnd = index + 1;\n }\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index;\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end) {\n end = firstNonSlashEnd;\n } else if (end < 0) {\n end = path.length;\n }\n return path.slice(start, end);\n}\nfunction dirname(path) {\n var end;\n var unmatchedSlash;\n var index;\n assertPath(path);\n if (!path.length) {\n return '.';\n }\n end = -1;\n index = path.length;\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index;\n break;\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true;\n }\n }\n return end < 0 ? path.charCodeAt(0) === 47 /* `/` */ ? '/' : '.' : end === 1 && path.charCodeAt(0) === 47 /* `/` */ ? '//' : path.slice(0, end);\n}\nfunction extname(path) {\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n var preDotState = 0;\n var unmatchedSlash;\n var code;\n var index;\n assertPath(path);\n index = path.length;\n while (index--) {\n code = path.charCodeAt(index);\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1;\n break;\n }\n continue;\n }\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true;\n end = index + 1;\n }\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index;\n } else if (preDotState !== 1) {\n preDotState = 1;\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1;\n }\n }\n if (startDot < 0 || end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n}\nfunction join() {\n var index = -1;\n var joined;\n while (++index < arguments.length) {\n assertPath(arguments[index]);\n if (arguments[index]) {\n joined = joined === undefined ? arguments[index] : joined + '/' + arguments[index];\n }\n }\n return joined === undefined ? '.' : normalize(joined);\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n var absolute;\n var value;\n assertPath(path);\n absolute = path.charCodeAt(0) === 47; /* `/` */\n\n // Normalize the path according to POSIX rules.\n value = normalizeString(path, !absolute);\n if (!value.length && !absolute) {\n value = '.';\n }\n if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/';\n }\n return absolute ? '/' + value : value;\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n var result = '';\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var index = -1;\n var code;\n var lastSlashIndex;\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index);\n } else if (code === 47 /* `/` */) {\n break;\n } else {\n code = 47; /* `/` */\n }\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (result.length < 2 || lastSegmentLength !== 2 || result.charCodeAt(result.length - 1) !== 46 /* `.` */ || result.charCodeAt(result.length - 2) !== 46 /* `.` */) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/');\n\n /* istanbul ignore else - No clue how to cover it. */\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = '';\n lastSegmentLength = 0;\n } else {\n result = result.slice(0, lastSlashIndex);\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/');\n }\n lastSlash = index;\n dots = 0;\n continue;\n }\n } else if (result.length) {\n result = '';\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n result = result.length ? result + '/..' : '..';\n lastSegmentLength = 2;\n }\n } else {\n if (result.length) {\n result += '/' + path.slice(lastSlash + 1, index);\n } else {\n result = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++;\n } else {\n dots = -1;\n }\n }\n return result;\n}\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError('Path must be a string. Received ' + JSON.stringify(path));\n }\n}","'use strict';\n\n// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd;\nfunction cwd() {\n return '/';\n}","var indexOf = function (xs, item) {\n if (xs.indexOf) return xs.indexOf(item);else for (var i = 0; i < xs.length; i++) {\n if (xs[i] === item) return i;\n }\n return -1;\n};\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj);else {\n var res = [];\n for (var key in obj) res.push(key);\n return res;\n }\n};\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn);else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\nvar defineProp = function () {\n try {\n Object.defineProperty({}, '_', {});\n return function (obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n });\n };\n } catch (e) {\n return function (obj, name, value) {\n obj[name] = value;\n };\n }\n}();\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function', 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError', 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError', 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\nfunction Context() {}\nContext.prototype = {};\nvar Script = exports.Script = function NodeScript(code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n var win = iframe.contentWindow;\n var wEval = win.eval,\n wExecScript = win.execScript;\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n var winKeys = Object_keys(win);\n var res = wEval.call(win, this.code);\n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n document.body.removeChild(iframe);\n return res;\n};\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n if (context) {\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n }\n return res;\n};\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\nexports.isContext = function (context) {\n return context instanceof Context;\n};\nexports.createScript = function (code) {\n return exports.Script(code);\n};\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if (typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction extend() {\n var target = {};\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\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 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n function classNames() {\n var classes = '';\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (arg) {\n classes = appendClass(classes, parseValue(arg));\n }\n }\n return classes;\n }\n function parseValue(arg) {\n if (typeof arg === 'string' || typeof arg === 'number') {\n return arg;\n }\n if (typeof arg !== 'object') {\n return '';\n }\n if (Array.isArray(arg)) {\n return classNames.apply(null, arg);\n }\n if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n return arg.toString();\n }\n var classes = '';\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes = appendClass(classes, key);\n }\n }\n return classes;\n }\n function appendClass(value, newClass) {\n if (!newClass) {\n return value;\n }\n if (value) {\n return value + ' ' + newClass;\n }\n return value + newClass;\n }\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function 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}","export 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}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","/**\n * The current status of a query’s execution in our system.\n */\nexport var NetworkStatus;\n(function (NetworkStatus) {\n /**\n * The query has never been run before and the query is now currently running. A query will still\n * have this network status even if a partial data result was returned from the cache, but a\n * query was dispatched anyway.\n */\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n /**\n * If `setVariables` was called and a query was fired because of that then the network status\n * will be `setVariables` until the result of that query comes back.\n */\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n /**\n * Indicates that `fetchMore` was called on this query and that the query created is currently in\n * flight.\n */\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n /**\n * Similar to the `setVariables` network status. It means that `refetch` was called on a query\n * and the refetch request is currently in flight.\n */\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n /**\n * Indicates that a polling query is currently in flight. So for example if you are polling a\n * query every 10 seconds then the network status will switch to `poll` every 10 seconds whenever\n * a poll request has been sent but not resolved.\n */\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n /**\n * No request is in flight for this query, and no errors happened. Everything is OK.\n */\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n /**\n * No request is in flight for this query, but one or more errors were detected.\n */\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\n/**\n * Returns true if there is currently a network request in flight according to a given network\n * status.\n */\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n/**\n * Returns true if the network request is in ready or error state according to a given network\n * status.\n */\nexport function isNetworkRequestSettled(networkStatus) {\n return networkStatus === 7 || networkStatus === 8;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __extends, __spreadArray } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonNullObject } from \"../utilities/index.js\";\n// This Symbol allows us to pass transport-specific errors from the link chain\n// into QueryManager/client internals without risking a naming collision within\n// extensions (which implementers can use as they see fit).\nexport var PROTOCOL_ERRORS_SYMBOL = Symbol();\nexport function graphQLResultHasProtocolErrors(result) {\n if (result.extensions) {\n return Array.isArray(result.extensions[PROTOCOL_ERRORS_SYMBOL]);\n }\n return false;\n}\nexport function isApolloError(err) {\n return err.hasOwnProperty(\"graphQLErrors\");\n}\n// Sets the error message on this error according to the\n// the GraphQL and network errors that are present.\n// If the error message has already been set through the\n// constructor or otherwise, this function is a nop.\nvar generateErrorMessage = function (err) {\n var errors = __spreadArray(__spreadArray(__spreadArray([], err.graphQLErrors, true), err.clientErrors, true), err.protocolErrors, true);\n if (err.networkError) errors.push(err.networkError);\n return errors\n // The rest of the code sometimes unsafely types non-Error objects as GraphQLErrors\n .map(function (err) {\n return isNonNullObject(err) && err.message || \"Error message not found.\";\n }).join(\"\\n\");\n};\nvar ApolloError = /** @class */function (_super) {\n __extends(ApolloError, _super);\n // Constructs an instance of ApolloError given a GraphQLError\n // or a network error. Note that one of these has to be a valid\n // value or the constructed error will be meaningless.\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors,\n protocolErrors = _a.protocolErrors,\n clientErrors = _a.clientErrors,\n networkError = _a.networkError,\n errorMessage = _a.errorMessage,\n extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.name = \"ApolloError\";\n _this.graphQLErrors = graphQLErrors || [];\n _this.protocolErrors = protocolErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n // We're not using `Object.setPrototypeOf` here as it isn't fully\n // supported on Android (see issue #3236).\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error);\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import * as React from \"rehackt\";\nimport { canUseSymbol } from \"../../utilities/index.js\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// To make sure Apollo Client doesn't create more than one React context\n// (which can lead to problems like having an Apollo Client instance added\n// in one context, then attempting to retrieve it from another different\n// context), a single Apollo context is created and tracked in global state.\nvar contextKey = canUseSymbol ? Symbol.for(\"__APOLLO_CONTEXT__\") : \"__APOLLO_CONTEXT__\";\nexport function getApolloContext() {\n invariant(\"createContext\" in React, 45);\n var context = React.createContext[contextKey];\n if (!context) {\n Object.defineProperty(React.createContext, contextKey, {\n value: context = React.createContext({}),\n enumerable: false,\n writable: false,\n configurable: true\n });\n context.displayName = \"ApolloContext\";\n }\n return context;\n}\n/**\n * @deprecated This function has no \"resetting\" effect since Apollo Client 3.4.12,\n * and will be removed in the next major version of Apollo Client.\n * If you want to get the Apollo Context, use `getApolloContext` instead.\n */\nexport var resetApolloContext = getApolloContext;\n//# sourceMappingURL=ApolloContext.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { getApolloContext } from \"../context/index.js\";\n/**\n * @example\n * ```jsx\n * import { useApolloClient } from '@apollo/client';\n *\n * function SomeComponent() {\n * const client = useApolloClient();\n * // `client` is now set to the `ApolloClient` instance being used by the\n * // application (that was configured using something like `ApolloProvider`)\n * }\n * ```\n *\n * @since 3.0.0\n * @returns The `ApolloClient` instance being used by the application.\n */\nexport function useApolloClient(override) {\n var context = React.useContext(getApolloContext());\n var client = override || context.client;\n invariant(!!client, 49);\n return client;\n}\n//# sourceMappingURL=useApolloClient.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { useInternalState } from \"./useQuery.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n// The following methods, when called will execute the query, regardless of\n// whether the useLazyQuery execute function was called before.\nvar EAGER_METHODS = [\"refetch\", \"reobserve\", \"fetchMore\", \"updateQuery\", \"startPolling\", \"subscribeToMore\"];\n/**\n * A hook for imperatively executing queries in an Apollo application, e.g. in response to user interaction.\n *\n * > Refer to the [Queries - Manual execution with useLazyQuery](https://www.apollographql.com/docs/react/data/queries#manual-execution-with-uselazyquery) section for a more in-depth overview of `useLazyQuery`.\n *\n * @example\n * ```jsx\n * import { gql, useLazyQuery } from \"@apollo/client\";\n *\n * const GET_GREETING = gql`\n * query GetGreeting($language: String!) {\n * greeting(language: $language) {\n * message\n * }\n * }\n * `;\n *\n * function Hello() {\n * const [loadGreeting, { called, loading, data }] = useLazyQuery(\n * GET_GREETING,\n * { variables: { language: \"english\" } }\n * );\n * if (called && loading) return <p>Loading ...</p>\n * if (!called) {\n * return <button onClick={() => loadGreeting()}>Load greeting</button>\n * }\n * return <h1>Hello {data.greeting.message}!</h1>;\n * }\n * ```\n * @since 3.0.0\n *\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - Default options to control how the query is executed.\n * @returns A tuple in the form of `[execute, result]`\n */\nexport function useLazyQuery(query, options) {\n var _a;\n var execOptionsRef = React.useRef();\n var optionsRef = React.useRef();\n var queryRef = React.useRef();\n var merged = mergeOptions(options, execOptionsRef.current || {});\n var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;\n // Use refs to track options and the used query to ensure the `execute`\n // function remains referentially stable between renders.\n optionsRef.current = options;\n queryRef.current = document;\n var internalState = useInternalState(useApolloClient(options && options.client), document);\n var useQueryResult = internalState.useQuery(__assign(__assign({}, merged), {\n skip: !execOptionsRef.current\n }));\n var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy || internalState.getDefaultFetchPolicy();\n var result = Object.assign(useQueryResult, {\n called: !!execOptionsRef.current\n });\n // We use useMemo here to make sure the eager methods have a stable identity.\n var eagerMethods = React.useMemo(function () {\n var eagerMethods = {};\n var _loop_1 = function (key) {\n var method = result[key];\n eagerMethods[key] = function () {\n if (!execOptionsRef.current) {\n execOptionsRef.current = Object.create(null);\n // Only the first time populating execOptionsRef.current matters here.\n internalState.forceUpdateState();\n }\n // @ts-expect-error this is just too generic to type\n return method.apply(this, arguments);\n };\n };\n for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n var key = EAGER_METHODS_1[_i];\n _loop_1(key);\n }\n return eagerMethods;\n }, []);\n Object.assign(result, eagerMethods);\n var execute = React.useCallback(function (executeOptions) {\n execOptionsRef.current = executeOptions ? __assign(__assign({}, executeOptions), {\n fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy\n }) : {\n fetchPolicy: initialFetchPolicy\n };\n var options = mergeOptions(optionsRef.current, __assign({\n query: queryRef.current\n }, execOptionsRef.current));\n var promise = internalState.executeQuery(__assign(__assign({}, options), {\n skip: false\n })).then(function (queryResult) {\n return Object.assign(queryResult, eagerMethods);\n });\n // Because the return value of `useLazyQuery` is usually floated, we need\n // to catch the promise to prevent unhandled rejections.\n promise.catch(function () {});\n return promise;\n }, []);\n return [execute, result];\n}\n//# sourceMappingURL=useLazyQuery.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\n/**\n *\n *\n * > Refer to the [Mutations](https://www.apollographql.com/docs/react/data/mutations/) section for a more in-depth overview of `useMutation`.\n *\n * @example\n * ```jsx\n * import { gql, useMutation } from '@apollo/client';\n *\n * const ADD_TODO = gql`\n * mutation AddTodo($type: String!) {\n * addTodo(type: $type) {\n * id\n * type\n * }\n * }\n * `;\n *\n * function AddTodo() {\n * let input;\n * const [addTodo, { data }] = useMutation(ADD_TODO);\n *\n * return (\n * <div>\n * <form\n * onSubmit={e => {\n * e.preventDefault();\n * addTodo({ variables: { type: input.value } });\n * input.value = '';\n * }}\n * >\n * <input\n * ref={node => {\n * input = node;\n * }}\n * />\n * <button type=\"submit\">Add Todo</button>\n * </form>\n * </div>\n * );\n * }\n * ```\n * @since 3.0.0\n * @param mutation - A GraphQL mutation document parsed into an AST by `gql`.\n * @param options - Options to control how the mutation is executed.\n * @returns A tuple in the form of `[mutate, result]`\n */\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = React.useState({\n called: false,\n loading: false,\n client: client\n }),\n result = _a[0],\n setResult = _a[1];\n var ref = React.useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options\n });\n // TODO: Trying to assign these in a useEffect or useLayoutEffect breaks\n // higher-order components.\n {\n Object.assign(ref.current, {\n client: client,\n options: options,\n mutation: mutation\n });\n }\n var execute = React.useCallback(function (executeOptions) {\n if (executeOptions === void 0) {\n executeOptions = {};\n }\n var _a = ref.current,\n options = _a.options,\n mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), {\n mutation: mutation\n });\n var client = executeOptions.client || ref.current.client;\n if (!ref.current.result.loading && !baseOptions.ignoreResults && ref.current.isMounted) {\n setResult(ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client\n });\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client.mutate(clientOptions).then(function (response) {\n var _a, _b;\n var data = response.data,\n errors = response.errors;\n var error = errors && errors.length > 0 ? new ApolloError({\n graphQLErrors: errors\n }) : void 0;\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (error && onError) {\n onError(error, clientOptions);\n }\n if (mutationId === ref.current.mutationId && !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult(ref.current.result = result_1);\n }\n }\n var onCompleted = executeOptions.onCompleted || ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onCompleted);\n if (!error) {\n onCompleted === null || onCompleted === void 0 ? void 0 : onCompleted(response.data, clientOptions);\n }\n return response;\n }).catch(function (error) {\n var _a;\n if (mutationId === ref.current.mutationId && ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client\n };\n if (!equal(ref.current.result, result_2)) {\n setResult(ref.current.result = result_2);\n }\n }\n var onError = executeOptions.onError || ((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError);\n if (onError) {\n onError(error, clientOptions);\n // TODO(brian): why are we returning this here???\n return {\n data: void 0,\n errors: error\n };\n }\n throw error;\n });\n }, []);\n var reset = React.useCallback(function () {\n if (ref.current.isMounted) {\n var result_3 = {\n called: false,\n loading: false,\n client: client\n };\n Object.assign(ref.current, {\n mutationId: 0,\n result: result_3\n });\n setResult(result_3);\n }\n }, []);\n React.useEffect(function () {\n ref.current.isMounted = true;\n return function () {\n ref.current.isMounted = false;\n };\n }, []);\n return [execute, __assign({\n reset: reset\n }, result)];\n}\n//# sourceMappingURL=useMutation.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { canUseLayoutEffect } from \"../../utilities/index.js\";\nvar didWarnUncachedGetSnapshot = false;\n// Prevent webpack from complaining about our feature detection of the\n// useSyncExternalStore property of the React namespace, which is expected not\n// to exist when using React 17 and earlier, and that's fine.\nvar uSESKey = \"useSyncExternalStore\";\nvar realHook = React[uSESKey];\n// Adapted from https://www.npmjs.com/package/use-sync-external-store, with\n// Apollo Client deviations called out by \"// DEVIATION ...\" comments.\n// When/if React.useSyncExternalStore is defined, delegate fully to it.\nexport var useSyncExternalStore = realHook || function (subscribe, getSnapshot, getServerSnapshot) {\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n var value = getSnapshot();\n if (\n // DEVIATION: Using __DEV__\n globalThis.__DEV__ !== false && !didWarnUncachedGetSnapshot &&\n // DEVIATION: Not using Object.is because we know our snapshots will never\n // be exotic primitive values like NaN, which is !== itself.\n value !== getSnapshot()) {\n didWarnUncachedGetSnapshot = true;\n // DEVIATION: Using invariant.error instead of console.error directly.\n globalThis.__DEV__ !== false && invariant.error(58);\n }\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n var _a = React.useState({\n inst: {\n value: value,\n getSnapshot: getSnapshot\n }\n }),\n inst = _a[0].inst,\n forceUpdate = _a[1];\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n if (canUseLayoutEffect) {\n // DEVIATION: We avoid calling useLayoutEffect when !canUseLayoutEffect,\n // which may seem like a conditional hook, but this code ends up behaving\n // unconditionally (one way or the other) because canUseLayoutEffect is\n // constant.\n React.useLayoutEffect(function () {\n Object.assign(inst, {\n value: value,\n getSnapshot: getSnapshot\n });\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n }, [subscribe, value, getSnapshot]);\n } else {\n Object.assign(inst, {\n value: value,\n getSnapshot: getSnapshot\n });\n }\n React.useEffect(function () {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n // Subscribe to the store and return a clean-up function.\n return subscribe(function handleStoreChange() {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({\n inst: inst\n });\n }\n });\n }, [subscribe]);\n return value;\n};\nfunction checkIfSnapshotChanged(_a) {\n var value = _a.value,\n getSnapshot = _a.getSnapshot;\n try {\n return value !== getSnapshot();\n } catch (_b) {\n return true;\n }\n}\n//# sourceMappingURL=useSyncExternalStore.js.map","var wrapperSymbol = Symbol.for(\"apollo.hook.wrappers\");\n/**\n * @internal\n *\n * Makes an Apollo Client hook \"wrappable\".\n * That means that the Apollo Client instance can expose a \"wrapper\" that will be\n * used to wrap the original hook implementation with additional logic.\n * @example\n * ```tsx\n * // this is already done in `@apollo/client` for all wrappable hooks (see `WrappableHooks`)\n * // following this pattern\n * function useQuery() {\n * return wrapHook('useQuery', _useQuery, options.client)(query, options);\n * }\n * function _useQuery(query, options) {\n * // original implementation\n * }\n *\n * // this is what a library like `@apollo/client-react-streaming` would do\n * class ApolloClientWithStreaming extends ApolloClient {\n * constructor(options) {\n * super(options);\n * this.queryManager[Symbol.for(\"apollo.hook.wrappers\")] = {\n * useQuery: (original) => (query, options) => {\n * console.log(\"useQuery was called with options\", options);\n * return original(query, options);\n * }\n * }\n * }\n * }\n *\n * // this will now log the options and then call the original `useQuery`\n * const client = new ApolloClientWithStreaming({ ... });\n * useQuery(query, { client });\n * ```\n */\nexport function wrapHook(hookName, useHook, clientOrObsQuery) {\n var queryManager = clientOrObsQuery[\"queryManager\"];\n var wrappers = queryManager && queryManager[wrapperSymbol];\n var wrapper = wrappers && wrappers[hookName];\n return wrapper ? wrapper(useHook) : useHook;\n}\n//# sourceMappingURL=wrapHook.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport { equal } from \"@wry/equality\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { getApolloContext } from \"../context/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { NetworkStatus } from \"../../core/index.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { canUseWeakMap, compact, isNonEmptyArray, maybeDeepFreeze } from \"../../utilities/index.js\";\nimport { wrapHook } from \"./internal/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * A hook for executing queries in an Apollo application.\n *\n * To run a query within a React component, call `useQuery` and pass it a GraphQL query document.\n *\n * When your component renders, `useQuery` returns an object from Apollo Client that contains `loading`, `error`, and `data` properties you can use to render your UI.\n *\n * > Refer to the [Queries](https://www.apollographql.com/docs/react/data/queries) section for a more in-depth overview of `useQuery`.\n *\n * @example\n * ```jsx\n * import { gql, useQuery } from '@apollo/client';\n *\n * const GET_GREETING = gql`\n * query GetGreeting($language: String!) {\n * greeting(language: $language) {\n * message\n * }\n * }\n * `;\n *\n * function Hello() {\n * const { loading, error, data } = useQuery(GET_GREETING, {\n * variables: { language: 'english' },\n * });\n * if (loading) return <p>Loading ...</p>;\n * return <h1>Hello {data.greeting.message}!</h1>;\n * }\n * ```\n * @since 3.0.0\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - Options to control how the query is executed.\n * @returns Query result object\n */\nexport function useQuery(query, options) {\n if (options === void 0) {\n options = Object.create(null);\n }\n return wrapHook(\"useQuery\", _useQuery, useApolloClient(options && options.client))(query, options);\n}\nfunction _useQuery(query, options) {\n return useInternalState(useApolloClient(options.client), query).useQuery(options);\n}\nexport function useInternalState(client, query) {\n var stateRef = React.useRef();\n if (!stateRef.current || client !== stateRef.current.client || query !== stateRef.current.query) {\n stateRef.current = new InternalState(client, query, stateRef.current);\n }\n var state = stateRef.current;\n // By default, InternalState.prototype.forceUpdate is an empty function, but\n // we replace it here (before anyone has had a chance to see this state yet)\n // with a function that unconditionally forces an update, using the latest\n // setTick function. Updating this state by calling state.forceUpdate is the\n // only way we trigger React component updates (no other useState calls within\n // the InternalState class).\n state.forceUpdateState = React.useReducer(function (tick) {\n return tick + 1;\n }, 0)[1];\n return state;\n}\nvar InternalState = /** @class */function () {\n function InternalState(client, query, previous) {\n var _this = this;\n this.client = client;\n this.query = query;\n /**\n * Will be overwritten by the `useSyncExternalStore` \"force update\" method\n * whenever it is available and reset to `forceUpdateState` when it isn't.\n */\n this.forceUpdate = function () {\n return _this.forceUpdateState();\n };\n this.ssrDisabledResult = maybeDeepFreeze({\n loading: true,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.loading\n });\n this.skipStandbyResult = maybeDeepFreeze({\n loading: false,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.ready\n });\n // This cache allows the referential stability of this.result (as returned by\n // getCurrentResult) to translate into referential stability of the resulting\n // QueryResult object returned by toQueryResult.\n this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();\n verifyDocumentType(query, DocumentType.Query);\n // Reuse previousData from previous InternalState (if any) to provide\n // continuity of previousData even if/when the query or client changes.\n var previousResult = previous && previous.result;\n var previousData = previousResult && previousResult.data;\n if (previousData) {\n this.previousData = previousData;\n }\n }\n /**\n * Forces an update using local component state.\n * As this is not batched with `useSyncExternalStore` updates,\n * this is only used as a fallback if the `useSyncExternalStore` \"force update\"\n * method is not registered at the moment.\n * See https://github.com/facebook/react/issues/25191\n * */\n InternalState.prototype.forceUpdateState = function () {\n // Replaced (in useInternalState) with a method that triggers an update.\n globalThis.__DEV__ !== false && invariant.warn(51);\n };\n InternalState.prototype.executeQuery = function (options) {\n var _this = this;\n var _a;\n if (options.query) {\n Object.assign(this, {\n query: options.query\n });\n }\n this.watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var concast = this.observable.reobserveAsConcast(this.getObsQueryOptions());\n // Make sure getCurrentResult returns a fresh ApolloQueryResult<TData>,\n // but save the current data as this.previousData, just like setResult\n // usually does.\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n this.forceUpdate();\n return new Promise(function (resolve) {\n var result;\n // Subscribe to the concast independently of the ObservableQuery in case\n // the component gets unmounted before the promise resolves. This prevents\n // the concast from terminating early and resolving with `undefined` when\n // there are no more subscribers for the concast.\n concast.subscribe({\n next: function (value) {\n result = value;\n },\n error: function () {\n resolve(_this.toQueryResult(_this.observable.getCurrentResult()));\n },\n complete: function () {\n resolve(_this.toQueryResult(result));\n }\n });\n });\n };\n // Methods beginning with use- should be called according to the standard\n // rules of React hooks: only at the top level of the calling function, and\n // without any dynamic conditional logic.\n InternalState.prototype.useQuery = function (options) {\n var _this = this;\n // The renderPromises field gets initialized here in the useQuery method, at\n // the beginning of everything (for a given component rendering, at least),\n // so we can safely use this.renderPromises in other/later InternalState\n // methods without worrying it might be uninitialized. Even after\n // initialization, this.renderPromises is usually undefined (unless SSR is\n // happening), but that's fine as long as it has been initialized that way,\n // rather than left uninitialized.\n this.renderPromises = React.useContext(getApolloContext()).renderPromises;\n this.useOptions(options);\n var obsQuery = this.useObservableQuery();\n var result = useSyncExternalStore(React.useCallback(function (handleStoreChange) {\n if (_this.renderPromises) {\n return function () {};\n }\n _this.forceUpdate = handleStoreChange;\n var onNext = function () {\n var previousResult = _this.result;\n // We use `getCurrentResult()` instead of the onNext argument because\n // the values differ slightly. Specifically, loading results will have\n // an empty object for data instead of `undefined` for some reason.\n var result = obsQuery.getCurrentResult();\n // Make sure we're not attempting to re-render similar results\n if (previousResult && previousResult.loading === result.loading && previousResult.networkStatus === result.networkStatus && equal(previousResult.data, result.data)) {\n return;\n }\n _this.setResult(result);\n };\n var onError = function (error) {\n subscription.unsubscribe();\n subscription = obsQuery.resubscribeAfterError(onNext, onError);\n if (!hasOwnProperty.call(error, \"graphQLErrors\")) {\n // The error is not a GraphQL error\n throw error;\n }\n var previousResult = _this.result;\n if (!previousResult || previousResult && previousResult.loading || !equal(error, previousResult.error)) {\n _this.setResult({\n data: previousResult && previousResult.data,\n error: error,\n loading: false,\n networkStatus: NetworkStatus.error\n });\n }\n };\n var subscription = obsQuery.subscribe(onNext, onError);\n // Do the \"unsubscribe\" with a short delay.\n // This way, an existing subscription can be reused without an additional\n // request if \"unsubscribe\" and \"resubscribe\" to the same ObservableQuery\n // happen in very fast succession.\n return function () {\n setTimeout(function () {\n return subscription.unsubscribe();\n });\n _this.forceUpdate = function () {\n return _this.forceUpdateState();\n };\n };\n }, [\n // We memoize the subscribe function using useCallback and the following\n // dependency keys, because the subscribe function reference is all that\n // useSyncExternalStore uses internally as a dependency key for the\n // useEffect ultimately responsible for the subscription, so we are\n // effectively passing this dependency array to that useEffect buried\n // inside useSyncExternalStore, as desired.\n obsQuery, this.renderPromises, this.client.disableNetworkFetches]), function () {\n return _this.getCurrentResult();\n }, function () {\n return _this.getCurrentResult();\n });\n // TODO Remove this method when we remove support for options.partialRefetch.\n this.unsafeHandlePartialRefetch(result);\n return this.toQueryResult(result);\n };\n InternalState.prototype.useOptions = function (options) {\n var _a;\n var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n // Update this.watchQueryOptions, but only when they have changed, which\n // allows us to depend on the referential stability of\n // this.watchQueryOptions elsewhere.\n var currentWatchQueryOptions = this.watchQueryOptions;\n if (!equal(watchQueryOptions, currentWatchQueryOptions)) {\n this.watchQueryOptions = watchQueryOptions;\n if (currentWatchQueryOptions && this.observable) {\n // Though it might be tempting to postpone this reobserve call to the\n // useEffect block, we need getCurrentResult to return an appropriate\n // loading:true result synchronously (later within the same call to\n // useQuery). Since we already have this.observable here (not true for\n // the very first call to useQuery), we are not initiating any new\n // subscriptions, though it does feel less than ideal that reobserve\n // (potentially) kicks off a network request (for example, when the\n // variables have changed), which is technically a side-effect.\n this.observable.reobserve(this.getObsQueryOptions());\n // Make sure getCurrentResult returns a fresh ApolloQueryResult<TData>,\n // but save the current data as this.previousData, just like setResult\n // usually does.\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n }\n }\n // Make sure state.onCompleted and state.onError always reflect the latest\n // options.onCompleted and options.onError callbacks provided to useQuery,\n // since those functions are often recreated every time useQuery is called.\n // Like the forceUpdate method, the versions of these methods inherited from\n // InternalState.prototype are empty no-ops, but we can override them on the\n // base state object (without modifying the prototype).\n this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;\n this.onError = options.onError || InternalState.prototype.onError;\n if ((this.renderPromises || this.client.disableNetworkFetches) && this.queryHookOptions.ssr === false && !this.queryHookOptions.skip) {\n // If SSR has been explicitly disabled, and this function has been called\n // on the server side, return the default loading state.\n this.result = this.ssrDisabledResult;\n } else if (this.queryHookOptions.skip || this.watchQueryOptions.fetchPolicy === \"standby\") {\n // When skipping a query (ie. we're not querying for data but still want to\n // render children), make sure the `data` is cleared out and `loading` is\n // set to `false` (since we aren't loading anything).\n //\n // NOTE: We no longer think this is the correct behavior. Skipping should\n // not automatically set `data` to `undefined`, but instead leave the\n // previous data in place. In other words, skipping should not mandate that\n // previously received data is all of a sudden removed. Unfortunately,\n // changing this is breaking, so we'll have to wait until Apollo Client 4.0\n // to address this.\n this.result = this.skipStandbyResult;\n } else if (this.result === this.ssrDisabledResult || this.result === this.skipStandbyResult) {\n this.result = void 0;\n }\n };\n InternalState.prototype.getObsQueryOptions = function () {\n var toMerge = [];\n var globalDefaults = this.client.defaultOptions.watchQuery;\n if (globalDefaults) toMerge.push(globalDefaults);\n if (this.queryHookOptions.defaultOptions) {\n toMerge.push(this.queryHookOptions.defaultOptions);\n }\n // We use compact rather than mergeOptions for this part of the merge,\n // because we want watchQueryOptions.variables (if defined) to replace\n // this.observable.options.variables whole. This replacement allows\n // removing variables by removing them from the variables input to\n // useQuery. If the variables were always merged together (rather than\n // replaced), there would be no way to remove existing variables.\n // However, the variables from options.defaultOptions and globalDefaults\n // (if provided) should be merged, to ensure individual defaulted\n // variables always have values, if not otherwise defined in\n // observable.options or watchQueryOptions.\n toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));\n return toMerge.reduce(mergeOptions);\n };\n // A function to massage options before passing them to ObservableQuery.\n InternalState.prototype.createWatchQueryOptions = function (_a) {\n var _b;\n if (_a === void 0) {\n _a = {};\n }\n var skip = _a.skip,\n ssr = _a.ssr,\n onCompleted = _a.onCompleted,\n onError = _a.onError,\n defaultOptions = _a.defaultOptions,\n // The above options are useQuery-specific, so this ...otherOptions spread\n // makes otherOptions almost a WatchQueryOptions object, except for the\n // query property that we add below.\n otherOptions = __rest(_a, [\"skip\", \"ssr\", \"onCompleted\", \"onError\", \"defaultOptions\"]);\n // This Object.assign is safe because otherOptions is a fresh ...rest object\n // that did not exist until just now, so modifications are still allowed.\n var watchQueryOptions = Object.assign(otherOptions, {\n query: this.query\n });\n if (this.renderPromises && (watchQueryOptions.fetchPolicy === \"network-only\" || watchQueryOptions.fetchPolicy === \"cache-and-network\")) {\n // this behavior was added to react-apollo without explanation in this PR\n // https://github.com/apollographql/react-apollo/pull/1579\n watchQueryOptions.fetchPolicy = \"cache-first\";\n }\n if (!watchQueryOptions.variables) {\n watchQueryOptions.variables = {};\n }\n if (skip) {\n var _c = watchQueryOptions.fetchPolicy,\n fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c,\n _d = watchQueryOptions.initialFetchPolicy,\n initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;\n // When skipping, we set watchQueryOptions.fetchPolicy initially to\n // \"standby\", but we also need/want to preserve the initial non-standby\n // fetchPolicy that would have been used if not skipping.\n Object.assign(watchQueryOptions, {\n initialFetchPolicy: initialFetchPolicy,\n fetchPolicy: \"standby\"\n });\n } else if (!watchQueryOptions.fetchPolicy) {\n watchQueryOptions.fetchPolicy = ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) || this.getDefaultFetchPolicy();\n }\n return watchQueryOptions;\n };\n InternalState.prototype.getDefaultFetchPolicy = function () {\n var _a, _b;\n return ((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) || ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"cache-first\";\n };\n // Defining these methods as no-ops on the prototype allows us to call\n // state.onCompleted and/or state.onError without worrying about whether a\n // callback was provided.\n InternalState.prototype.onCompleted = function (data) {};\n InternalState.prototype.onError = function (error) {};\n InternalState.prototype.useObservableQuery = function () {\n // See if there is an existing observable that was used to fetch the same\n // data and if so, use it instead since it will contain the proper queryId\n // to fetch the result set. This is used during SSR.\n var obsQuery = this.observable = this.renderPromises && this.renderPromises.getSSRObservable(this.watchQueryOptions) || this.observable ||\n // Reuse this.observable if possible (and not SSR)\n this.client.watchQuery(this.getObsQueryOptions());\n this.obsQueryFields = React.useMemo(function () {\n return {\n refetch: obsQuery.refetch.bind(obsQuery),\n reobserve: obsQuery.reobserve.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery)\n };\n }, [obsQuery]);\n var ssrAllowed = !(this.queryHookOptions.ssr === false || this.queryHookOptions.skip);\n if (this.renderPromises && ssrAllowed) {\n this.renderPromises.registerSSRObservable(obsQuery);\n if (obsQuery.getCurrentResult().loading) {\n // TODO: This is a legacy API which could probably be cleaned up\n this.renderPromises.addObservableQueryPromise(obsQuery);\n }\n }\n return obsQuery;\n };\n InternalState.prototype.setResult = function (nextResult) {\n var previousResult = this.result;\n if (previousResult && previousResult.data) {\n this.previousData = previousResult.data;\n }\n this.result = nextResult;\n // Calling state.setResult always triggers an update, though some call sites\n // perform additional equality checks before committing to an update.\n this.forceUpdate();\n this.handleErrorOrCompleted(nextResult, previousResult);\n };\n InternalState.prototype.handleErrorOrCompleted = function (result, previousResult) {\n var _this = this;\n if (!result.loading) {\n var error_1 = this.toApolloError(result);\n // wait a tick in case we are in the middle of rendering a component\n Promise.resolve().then(function () {\n if (error_1) {\n _this.onError(error_1);\n } else if (result.data && (previousResult === null || previousResult === void 0 ? void 0 : previousResult.networkStatus) !== result.networkStatus && result.networkStatus === NetworkStatus.ready) {\n _this.onCompleted(result.data);\n }\n }).catch(function (error) {\n globalThis.__DEV__ !== false && invariant.warn(error);\n });\n }\n };\n InternalState.prototype.toApolloError = function (result) {\n return isNonEmptyArray(result.errors) ? new ApolloError({\n graphQLErrors: result.errors\n }) : result.error;\n };\n InternalState.prototype.getCurrentResult = function () {\n // Using this.result as a cache ensures getCurrentResult continues returning\n // the same (===) result object, unless state.setResult has been called, or\n // we're doing server rendering and therefore override the result below.\n if (!this.result) {\n this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());\n }\n return this.result;\n };\n InternalState.prototype.toQueryResult = function (result) {\n var queryResult = this.toQueryResultCache.get(result);\n if (queryResult) return queryResult;\n var data = result.data,\n partial = result.partial,\n resultWithoutPartial = __rest(result, [\"data\", \"partial\"]);\n this.toQueryResultCache.set(result, queryResult = __assign(__assign(__assign({\n data: data\n }, resultWithoutPartial), this.obsQueryFields), {\n client: this.client,\n observable: this.observable,\n variables: this.observable.variables,\n called: !this.queryHookOptions.skip,\n previousData: this.previousData\n }));\n if (!queryResult.error && isNonEmptyArray(result.errors)) {\n // Until a set naming convention for networkError and graphQLErrors is\n // decided upon, we map errors (graphQLErrors) to the error options.\n // TODO: Is it possible for both result.error and result.errors to be\n // defined here?\n queryResult.error = new ApolloError({\n graphQLErrors: result.errors\n });\n }\n return queryResult;\n };\n InternalState.prototype.unsafeHandlePartialRefetch = function (result) {\n // WARNING: SIDE-EFFECTS IN THE RENDER FUNCTION\n //\n // TODO: This code should be removed when the partialRefetch option is\n // removed. I was unable to get this hook to behave reasonably in certain\n // edge cases when this block was put in an effect.\n if (result.partial && this.queryHookOptions.partialRefetch && !result.loading && (!result.data || Object.keys(result.data).length === 0) && this.observable.options.fetchPolicy !== \"cache-only\") {\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.refetch\n });\n this.observable.refetch();\n }\n };\n return InternalState;\n}();\n//# sourceMappingURL=useQuery.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../../utilities/index.js\";\nimport { registerGlobalCache } from \"../../utilities/caching/getMemoryInternals.js\";\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache;\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = \"Query\";\n break;\n case DocumentType.Mutation:\n name = \"Mutation\";\n break;\n case DocumentType.Subscription:\n name = \"Subscription\";\n break;\n }\n return name;\n}\n// This parser is mostly used to safety check incoming documents.\nexport function parser(document) {\n if (!cache) {\n cache = new AutoCleanedWeakCache(cacheSizes.parser || 1000 /* defaultCacheSizes.parser */);\n }\n var cached = cache.get(document);\n if (cached) return cached;\n var variables, type, name;\n invariant(!!document && !!document.kind, 59, document);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === \"FragmentDefinition\") {\n fragments.push(x);\n continue;\n }\n if (x.kind === \"OperationDefinition\") {\n switch (x.operation) {\n case \"query\":\n queries.push(x);\n break;\n case \"mutation\":\n mutations.push(x);\n break;\n case \"subscription\":\n subscriptions.push(x);\n break;\n }\n }\n }\n invariant(!fragments.length || queries.length || mutations.length || subscriptions.length, 60);\n invariant(queries.length + mutations.length + subscriptions.length <= 1, 61, document, queries.length, subscriptions.length, mutations.length);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length) type = DocumentType.Subscription;\n var definitions = queries.length ? queries : mutations.length ? mutations : subscriptions;\n invariant(definitions.length === 1, 62, document, definitions.length);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === \"Name\") {\n name = definition.name.value;\n } else {\n name = \"data\"; // fallback to using data if no name\n }\n var payload = {\n name: name,\n type: type,\n variables: variables\n };\n cache.set(document, payload);\n return payload;\n}\nparser.resetCache = function () {\n cache = undefined;\n};\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"parser\", function () {\n return cache ? cache.size : 0;\n });\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n invariant(operation.type === type, 63, requiredOperationName, requiredOperationName, usedOperationName);\n}\n//# sourceMappingURL=index.js.map","import { WeakCache, StrongCache } from \"@wry/caches\";\nvar scheduledCleanup = new WeakSet();\nfunction schedule(cache) {\n if (cache.size <= (cache.max || -1)) {\n return;\n }\n if (!scheduledCleanup.has(cache)) {\n scheduledCleanup.add(cache);\n setTimeout(function () {\n cache.clean();\n scheduledCleanup.delete(cache);\n }, 100);\n }\n}\n/**\n * @internal\n * A version of WeakCache that will auto-schedule a cleanup of the cache when\n * a new item is added and the cache reached maximum size.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of WeakCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `WeakCache`.\n */\nexport var AutoCleanedWeakCache = function (max, dispose) {\n /*\n Some builds of `WeakCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new WeakCache(max, dispose);\n cache.set = function (key, value) {\n var ret = WeakCache.prototype.set.call(this, key, value);\n schedule(this);\n return ret;\n };\n return cache;\n};\n/**\n * @internal\n * A version of StrongCache that will auto-schedule a cleanup of the cache when\n * a new item is added and the cache reached maximum size.\n * Throttled to once per 100ms.\n *\n * @privateRemarks\n * Should be used throughout the rest of the codebase instead of StrongCache,\n * with the notable exception of usage in `wrap` from `optimism` - that one\n * already handles cleanup and should remain a `StrongCache`.\n */\nexport var AutoCleanedStrongCache = function (max, dispose) {\n /*\n Some builds of `StrongCache` are function prototypes, some are classes.\n This library still builds with an ES5 target, so we can't extend the\n real classes.\n Instead, we have to use this workaround until we switch to a newer build\n target.\n */\n var cache = new StrongCache(max, dispose);\n cache.set = function (key, value) {\n var ret = StrongCache.prototype.set.call(this, key, value);\n schedule(this);\n return ret;\n };\n return cache;\n};\n//# sourceMappingURL=caches.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { cacheSizes } from \"./sizes.js\";\nvar globalCaches = {};\nexport function registerGlobalCache(name, getSize) {\n globalCaches[name] = getSize;\n}\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloClientMemoryInternals = globalThis.__DEV__ !== false ? _getApolloClientMemoryInternals : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getInMemoryCacheMemoryInternals = globalThis.__DEV__ !== false ? _getInMemoryCacheMemoryInternals : undefined;\n/**\n * For internal purposes only - please call `ApolloClient.getMemoryInternals` instead\n * @internal\n */\nexport var getApolloCacheMemoryInternals = globalThis.__DEV__ !== false ? _getApolloCacheMemoryInternals : undefined;\nfunction getCurrentCacheSizes() {\n // `defaultCacheSizes` is a `const enum` that will be inlined during build, so we have to reconstruct it's shape here\n var defaults = {\n parser: 1000 /* defaultCacheSizes[\"parser\"] */,\n canonicalStringify: 1000 /* defaultCacheSizes[\"canonicalStringify\"] */,\n print: 2000 /* defaultCacheSizes[\"print\"] */,\n \"documentTransform.cache\": 2000 /* defaultCacheSizes[\"documentTransform.cache\"] */,\n \"queryManager.getDocumentInfo\": 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */,\n \"PersistedQueryLink.persistedQueryHashes\": 2000 /* defaultCacheSizes[\"PersistedQueryLink.persistedQueryHashes\"] */,\n \"fragmentRegistry.transform\": 2000 /* defaultCacheSizes[\"fragmentRegistry.transform\"] */,\n \"fragmentRegistry.lookup\": 1000 /* defaultCacheSizes[\"fragmentRegistry.lookup\"] */,\n \"fragmentRegistry.findFragmentSpreads\": 4000 /* defaultCacheSizes[\"fragmentRegistry.findFragmentSpreads\"] */,\n \"cache.fragmentQueryDocuments\": 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n \"removeTypenameFromVariables.getVariableDefinitions\": 2000 /* defaultCacheSizes[\"removeTypenameFromVariables.getVariableDefinitions\"] */,\n \"inMemoryCache.maybeBroadcastWatch\": 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n \"inMemoryCache.executeSelectionSet\": 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n \"inMemoryCache.executeSubSelectedArray\": 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */\n };\n return Object.fromEntries(Object.entries(defaults).map(function (_a) {\n var k = _a[0],\n v = _a[1];\n return [k, cacheSizes[k] || v];\n }));\n}\nfunction _getApolloClientMemoryInternals() {\n var _a, _b, _c, _d, _e;\n if (!(globalThis.__DEV__ !== false)) throw new Error(\"only supported in development mode\");\n return {\n limits: getCurrentCacheSizes(),\n sizes: __assign({\n print: (_a = globalCaches.print) === null || _a === void 0 ? void 0 : _a.call(globalCaches),\n parser: (_b = globalCaches.parser) === null || _b === void 0 ? void 0 : _b.call(globalCaches),\n canonicalStringify: (_c = globalCaches.canonicalStringify) === null || _c === void 0 ? void 0 : _c.call(globalCaches),\n links: linkInfo(this.link),\n queryManager: {\n getDocumentInfo: this[\"queryManager\"][\"transformCache\"].size,\n documentTransforms: transformInfo(this[\"queryManager\"].documentTransform)\n }\n }, (_e = (_d = this.cache).getMemoryInternals) === null || _e === void 0 ? void 0 : _e.call(_d))\n };\n}\nfunction _getApolloCacheMemoryInternals() {\n return {\n cache: {\n fragmentQueryDocuments: getWrapperInformation(this[\"getFragmentDoc\"])\n }\n };\n}\nfunction _getInMemoryCacheMemoryInternals() {\n var fragments = this.config.fragments;\n return __assign(__assign({}, _getApolloCacheMemoryInternals.apply(this)), {\n addTypenameDocumentTransform: transformInfo(this[\"addTypenameTransform\"]),\n inMemoryCache: {\n executeSelectionSet: getWrapperInformation(this[\"storeReader\"][\"executeSelectionSet\"]),\n executeSubSelectedArray: getWrapperInformation(this[\"storeReader\"][\"executeSubSelectedArray\"]),\n maybeBroadcastWatch: getWrapperInformation(this[\"maybeBroadcastWatch\"])\n },\n fragmentRegistry: {\n findFragmentSpreads: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.findFragmentSpreads),\n lookup: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.lookup),\n transform: getWrapperInformation(fragments === null || fragments === void 0 ? void 0 : fragments.transform)\n }\n });\n}\nfunction isWrapper(f) {\n return !!f && \"dirtyKey\" in f;\n}\nfunction getWrapperInformation(f) {\n return isWrapper(f) ? f.size : undefined;\n}\nfunction isDefined(value) {\n return value != null;\n}\nfunction transformInfo(transform) {\n return recurseTransformInfo(transform).map(function (cache) {\n return {\n cache: cache\n };\n });\n}\nfunction recurseTransformInfo(transform) {\n return transform ? __spreadArray(__spreadArray([getWrapperInformation(transform === null || transform === void 0 ? void 0 : transform[\"performWork\"])], recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"left\"]), true), recurseTransformInfo(transform === null || transform === void 0 ? void 0 : transform[\"right\"]), true).filter(isDefined) : [];\n}\nfunction linkInfo(link) {\n var _a;\n return link ? __spreadArray(__spreadArray([(_a = link === null || link === void 0 ? void 0 : link.getMemoryInternals) === null || _a === void 0 ? void 0 : _a.call(link)], linkInfo(link === null || link === void 0 ? void 0 : link.left), true), linkInfo(link === null || link === void 0 ? void 0 : link.right), true).filter(isDefined) : [];\n}\n//# sourceMappingURL=getMemoryInternals.js.map","import { __assign } from \"tslib\";\nimport { global } from \"../globals/index.js\";\nvar cacheSizeSymbol = Symbol.for(\"apollo.cacheSize\");\n/**\n *\n * The global cache size configuration for Apollo Client.\n *\n * @remarks\n *\n * You can directly modify this object, but any modification will\n * only have an effect on caches that are created after the modification.\n *\n * So for global caches, such as `parser`, `canonicalStringify` and `print`,\n * you might need to call `.reset` on them, which will essentially re-create them.\n *\n * Alternatively, you can set `globalThis[Symbol.for(\"apollo.cacheSize\")]` before\n * you load the Apollo Client package:\n *\n * @example\n * ```ts\n * globalThis[Symbol.for(\"apollo.cacheSize\")] = {\n * parser: 100\n * } satisfies Partial<CacheSizes> // the `satisfies` is optional if using TypeScript\n * ```\n */\nexport var cacheSizes = __assign({}, global[cacheSizeSymbol]);\n//# sourceMappingURL=sizes.js.map","// A version of Array.isArray that works better with readonly arrays.\nexport var isArray = Array.isArray;\nexport function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","import { maybe } from \"../globals/index.js\";\nexport var canUseWeakMap = typeof WeakMap === \"function\" && !maybe(function () {\n return navigator.product == \"ReactNative\" && !global.HermesInternal;\n});\nexport var canUseWeakSet = typeof WeakSet === \"function\";\nexport var canUseSymbol = typeof Symbol === \"function\" && typeof Symbol.for === \"function\";\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () {\n return window.document.createElement;\n}) === \"function\";\nvar usingJSDOM =\n// Following advice found in this comment from @domenic (maintainer of jsdom):\n// https://github.com/jsdom/jsdom/issues/1537#issuecomment-229405327\n//\n// Since we control the version of Jest and jsdom used when running Apollo\n// Client tests, and that version is recent enought to include \" jsdom/x.y.z\"\n// at the end of the user agent string, I believe this case is all we need to\n// check. Testing for \"Node.js\" was recommended for backwards compatibility\n// with older version of jsdom, but we don't have that problem.\nmaybe(function () {\n return navigator.userAgent.indexOf(\"jsdom\") >= 0;\n}) || false;\n// Our tests should all continue to pass if we remove this !usingJSDOM\n// condition, thereby allowing useLayoutEffect when using jsdom. Unfortunately,\n// if we allow useLayoutEffect, then useSyncExternalStore generates many\n// warnings about useLayoutEffect doing nothing on the server. While these\n// warnings are harmless, this !usingJSDOM condition seems to be the best way to\n// prevent them (i.e. skipping useLayoutEffect when using jsdom).\nexport var canUseLayoutEffect = canUseDOM && !usingJSDOM;\n//# sourceMappingURL=canUse.js.map","/**\n * Merges the provided objects shallowly and removes\n * all properties with an `undefined` value\n */\nexport function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj) return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","var prefixCounts = new Map();\n// These IDs won't be globally unique, but they will be unique within this\n// process, thanks to the counter, and unguessable thanks to the random suffix.\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map","import { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name])) workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (globalThis.__DEV__ !== false && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n } catch (e) {\n // Some types like Uint8Array and Node.js's Buffer cannot be frozen, but\n // they all throw a TypeError when you try, so we re-throw any exceptions\n // that are not TypeErrors, since that would be unexpected.\n if (e instanceof TypeError) return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (globalThis.__DEV__ !== false) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: compact(__assign(__assign({}, defaults && defaults.variables), options.variables))\n });\n}\n//# sourceMappingURL=mergeOptions.js.map","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === \"object\";\n}\nexport function isPlainObject(obj) {\n return obj !== null && typeof obj === \"object\" && (Object.getPrototypeOf(obj) === Object.prototype || Object.getPrototypeOf(obj) === null);\n}\n//# sourceMappingURL=objects.js.map","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value, space) {\n if (space === void 0) {\n space = 0;\n }\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }, space).split(JSON.stringify(undefId)).join(\"<undefined>\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf,\n setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n } : _a;\nvar InvariantError = /** @class */function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) {\n message = genericMessage;\n }\n var _this = _super.call(this, typeof message === \"number\" ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\" : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error);\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n//# sourceMappingURL=invariant.js.map","export function maybe(thunk) {\n try {\n return thunk();\n } catch (_a) {}\n}\n//# sourceMappingURL=maybe.js.map","import { maybe } from \"./maybe.js\";\nexport default maybe(function () {\n return globalThis;\n}) || maybe(function () {\n return window;\n}) || maybe(function () {\n return self;\n}) || maybe(function () {\n return global;\n}) ||\n// We don't expect the Function constructor ever to be invoked at runtime, as\n// long as at least one of globalThis, window, self, or global is defined, so\n// we are under no obligation to make it easy for static analysis tools to\n// detect syntactic usage of the Function constructor. If you think you can\n// improve your static analysis to detect this obfuscation, think again. This\n// is an arms race you cannot win, at least not in JavaScript.\nmaybe(function () {\n return maybe.constructor(\"return this\")();\n});\n//# sourceMappingURL=global.js.map","import { invariant as originalInvariant, InvariantError } from \"ts-invariant\";\nimport { version } from \"../../version.js\";\nimport global from \"./global.js\";\nimport { stringifyForDisplay } from \"../common/stringifyForDisplay.js\";\nfunction wrap(fn) {\n return function (message) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof message === \"number\") {\n var arg0 = message;\n message = getHandledErrorMsg(arg0);\n if (!message) {\n message = getFallbackErrorMsg(arg0, args);\n args = [];\n }\n }\n fn.apply(void 0, [message].concat(args));\n };\n}\nvar invariant = Object.assign(function invariant(condition, message) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (!condition) {\n originalInvariant(condition, getHandledErrorMsg(message, args) || getFallbackErrorMsg(message, args));\n }\n}, {\n debug: wrap(originalInvariant.debug),\n log: wrap(originalInvariant.log),\n warn: wrap(originalInvariant.warn),\n error: wrap(originalInvariant.error)\n});\n/**\n * Returns an InvariantError.\n *\n * `message` can only be a string, a concatenation of strings, or a ternary statement\n * that results in a string. This will be enforced on build, where the message will\n * be replaced with a message number.\n * String substitutions with %s are supported and will also return\n * pretty-stringified objects.\n * Excess `optionalParams` will be swallowed.\n */\nfunction newInvariantError(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n return new InvariantError(getHandledErrorMsg(message, optionalParams) || getFallbackErrorMsg(message, optionalParams));\n}\nvar ApolloErrorMessageHandler = Symbol.for(\"ApolloErrorMessageHandler_\" + version);\nfunction stringify(arg) {\n return typeof arg == \"string\" ? arg : stringifyForDisplay(arg, 2).slice(0, 1000);\n}\nfunction getHandledErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) {\n messageArgs = [];\n }\n if (!message) return;\n return global[ApolloErrorMessageHandler] && global[ApolloErrorMessageHandler](message, messageArgs.map(stringify));\n}\nfunction getFallbackErrorMsg(message, messageArgs) {\n if (messageArgs === void 0) {\n messageArgs = [];\n }\n if (!message) return;\n return \"An error occurred! For more details, see the full error text at https://go.apollo.dev/c/err#\".concat(encodeURIComponent(JSON.stringify({\n version: version,\n message: message,\n args: messageArgs.map(stringify)\n })));\n}\nexport { invariant, InvariantError, newInvariantError, ApolloErrorMessageHandler };\n//# sourceMappingURL=invariantWrappers.js.map","import { invariant, newInvariantError, InvariantError } from \"./invariantWrappers.js\";\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, newInvariantError, InvariantError };\n/**\n * @deprecated we do not use this internally anymore,\n * it is just exported for backwards compatibility\n */\n// this file is extempt from automatic `__DEV__` replacement\n// so we have to write it out here\n// @ts-ignore\nexport var DEV = globalThis.__DEV__ !== false;\nexport { DEV as __DEV__ };\n//# sourceMappingURL=index.js.map","export var version = \"3.10.3\";\n//# sourceMappingURL=version.js.map","function defaultDispose() {}\nexport class StrongCache {\n constructor() {\n let max = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;\n let dispose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDispose;\n this.max = max;\n this.dispose = dispose;\n this.map = new Map();\n this.newest = null;\n this.oldest = null;\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n get size() {\n return this.map.size;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const {\n older,\n newer\n } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return node.value = value;\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.map.set(key, node);\n return node.value;\n }\n clean() {\n while (this.oldest && this.map.size > this.max) {\n this.delete(this.oldest.key);\n }\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.map.delete(key);\n this.dispose(node.value, key);\n return true;\n }\n return false;\n }\n}\n//# sourceMappingURL=strong.js.map","function noop() {}\nconst defaultDispose = noop;\nconst _WeakRef = typeof WeakRef !== \"undefined\" ? WeakRef : function (value) {\n return {\n deref: () => value\n };\n};\nconst _WeakMap = typeof WeakMap !== \"undefined\" ? WeakMap : Map;\nconst _FinalizationRegistry = typeof FinalizationRegistry !== \"undefined\" ? FinalizationRegistry : function () {\n return {\n register: noop,\n unregister: noop\n };\n};\nconst finalizationBatchSize = 10024;\nexport class WeakCache {\n constructor() {\n let max = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Infinity;\n let dispose = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDispose;\n this.max = max;\n this.dispose = dispose;\n this.map = new _WeakMap();\n this.newest = null;\n this.oldest = null;\n this.unfinalizedNodes = new Set();\n this.finalizationScheduled = false;\n this.size = 0;\n this.finalize = () => {\n const iterator = this.unfinalizedNodes.values();\n for (let i = 0; i < finalizationBatchSize; i++) {\n const node = iterator.next().value;\n if (!node) break;\n this.unfinalizedNodes.delete(node);\n const key = node.key;\n delete node.key;\n node.keyRef = new _WeakRef(key);\n this.registry.register(key, node, node);\n }\n if (this.unfinalizedNodes.size > 0) {\n queueMicrotask(this.finalize);\n } else {\n this.finalizationScheduled = false;\n }\n };\n this.registry = new _FinalizationRegistry(this.deleteNode.bind(this));\n }\n has(key) {\n return this.map.has(key);\n }\n get(key) {\n const node = this.getNode(key);\n return node && node.value;\n }\n getNode(key) {\n const node = this.map.get(key);\n if (node && node !== this.newest) {\n const {\n older,\n newer\n } = node;\n if (newer) {\n newer.older = older;\n }\n if (older) {\n older.newer = newer;\n }\n node.older = this.newest;\n node.older.newer = node;\n node.newer = null;\n this.newest = node;\n if (node === this.oldest) {\n this.oldest = newer;\n }\n }\n return node;\n }\n set(key, value) {\n let node = this.getNode(key);\n if (node) {\n return node.value = value;\n }\n node = {\n key,\n value,\n newer: null,\n older: this.newest\n };\n if (this.newest) {\n this.newest.newer = node;\n }\n this.newest = node;\n this.oldest = this.oldest || node;\n this.scheduleFinalization(node);\n this.map.set(key, node);\n this.size++;\n return node.value;\n }\n clean() {\n while (this.oldest && this.size > this.max) {\n this.deleteNode(this.oldest);\n }\n }\n deleteNode(node) {\n if (node === this.newest) {\n this.newest = node.older;\n }\n if (node === this.oldest) {\n this.oldest = node.newer;\n }\n if (node.newer) {\n node.newer.older = node.older;\n }\n if (node.older) {\n node.older.newer = node.newer;\n }\n this.size--;\n const key = node.key || node.keyRef && node.keyRef.deref();\n this.dispose(node.value, key);\n if (!node.keyRef) {\n this.unfinalizedNodes.delete(node);\n } else {\n this.registry.unregister(node);\n }\n if (key) this.map.delete(key);\n }\n delete(key) {\n const node = this.map.get(key);\n if (node) {\n this.deleteNode(node);\n return true;\n }\n return false;\n }\n scheduleFinalization(node) {\n this.unfinalizedNodes.add(node);\n if (!this.finalizationScheduled) {\n this.finalizationScheduled = true;\n queueMicrotask(this.finalize);\n }\n }\n}\n//# sourceMappingURL=weak.js.map","const {\n toString,\n hasOwnProperty\n} = Object.prototype;\nconst fnToStr = Function.prototype.toString;\nconst previousComparisons = new Map();\n/**\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\n */\nexport function equal(a, b) {\n try {\n return check(a, b);\n } finally {\n previousComparisons.clear();\n }\n}\n// Allow default imports as well.\nexport default equal;\nfunction check(a, b) {\n // If the two values are strictly equal, our job is easy.\n if (a === b) {\n return true;\n }\n // Object.prototype.toString returns a representation of the runtime type of\n // the given value that is considerably more precise than typeof.\n const aTag = toString.call(a);\n const bTag = toString.call(b);\n // If the runtime types of a and b are different, they could maybe be equal\n // under some interpretation of equality, but for simplicity and performance\n // we just return false instead.\n if (aTag !== bTag) {\n return false;\n }\n switch (aTag) {\n case '[object Array]':\n // Arrays are a lot like other objects, but we can cheaply compare their\n // lengths as a short-cut before comparing their elements.\n if (a.length !== b.length) return false;\n // Fall through to object case...\n case '[object Object]':\n {\n if (previouslyCompared(a, b)) return true;\n const aKeys = definedKeys(a);\n const bKeys = definedKeys(b);\n // If `a` and `b` have a different number of enumerable keys, they\n // must be different.\n const keyCount = aKeys.length;\n if (keyCount !== bKeys.length) return false;\n // Now make sure they have the same keys.\n for (let k = 0; k < keyCount; ++k) {\n if (!hasOwnProperty.call(b, aKeys[k])) {\n return false;\n }\n }\n // Finally, check deep equality of all child properties.\n for (let k = 0; k < keyCount; ++k) {\n const key = aKeys[k];\n if (!check(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n case '[object Error]':\n return a.name === b.name && a.message === b.message;\n case '[object Number]':\n // Handle NaN, which is !== itself.\n if (a !== a) return b !== b;\n // Fall through to shared +a === +b case...\n case '[object Boolean]':\n case '[object Date]':\n return +a === +b;\n case '[object RegExp]':\n case '[object String]':\n return a == \"\".concat(b);\n case '[object Map]':\n case '[object Set]':\n {\n if (a.size !== b.size) return false;\n if (previouslyCompared(a, b)) return true;\n const aIterator = a.entries();\n const isMap = aTag === '[object Map]';\n while (true) {\n const info = aIterator.next();\n if (info.done) break;\n // If a instanceof Set, aValue === aKey.\n const [aKey, aValue] = info.value;\n // So this works the same way for both Set and Map.\n if (!b.has(aKey)) {\n return false;\n }\n // However, we care about deep equality of values only when dealing\n // with Map structures.\n if (isMap && !check(aValue, b.get(aKey))) {\n return false;\n }\n }\n return true;\n }\n case '[object Uint16Array]':\n case '[object Uint8Array]': // Buffer, in Node.js.\n case '[object Uint32Array]':\n case '[object Int32Array]':\n case '[object Int8Array]':\n case '[object Int16Array]':\n case '[object ArrayBuffer]':\n // DataView doesn't need these conversions, but the equality check is\n // otherwise the same.\n a = new Uint8Array(a);\n b = new Uint8Array(b);\n // Fall through...\n case '[object DataView]':\n {\n let len = a.byteLength;\n if (len === b.byteLength) {\n while (len-- && a[len] === b[len]) {\n // Keep looping as long as the bytes are equal.\n }\n }\n return len === -1;\n }\n case '[object AsyncFunction]':\n case '[object GeneratorFunction]':\n case '[object AsyncGeneratorFunction]':\n case '[object Function]':\n {\n const aCode = fnToStr.call(a);\n if (aCode !== fnToStr.call(b)) {\n return false;\n }\n // We consider non-native functions equal if they have the same code\n // (native functions require === because their code is censored).\n // Note that this behavior is not entirely sound, since !== function\n // objects with the same code can behave differently depending on\n // their closure scope. However, any function can behave differently\n // depending on the values of its input arguments (including this)\n // and its calling context (including its closure scope), even\n // though the function object is === to itself; and it is entirely\n // possible for functions that are not === to behave exactly the\n // same under all conceivable circumstances. Because none of these\n // factors are statically decidable in JavaScript, JS function\n // equality is not well-defined. This ambiguity allows us to\n // consider the best possible heuristic among various imperfect\n // options, and equating non-native functions that have the same\n // code has enormous practical benefits, such as when comparing\n // functions that are repeatedly passed as fresh function\n // expressions within objects that are otherwise deeply equal. Since\n // any function created from the same syntactic expression (in the\n // same code location) will always stringify to the same code\n // according to fnToStr.call, we can reasonably expect these\n // repeatedly passed function expressions to have the same code, and\n // thus behave \"the same\" (with all the caveats mentioned above),\n // even though the runtime function objects are !== to one another.\n return !endsWith(aCode, nativeCodeSuffix);\n }\n }\n // Otherwise the values are not equal.\n return false;\n}\nfunction definedKeys(obj) {\n // Remember that the second argument to Array.prototype.filter will be\n // used as `this` within the callback function.\n return Object.keys(obj).filter(isDefinedKey, obj);\n}\nfunction isDefinedKey(key) {\n return this[key] !== void 0;\n}\nconst nativeCodeSuffix = \"{ [native code] }\";\nfunction endsWith(full, suffix) {\n const fromIndex = full.length - suffix.length;\n return fromIndex >= 0 && full.indexOf(suffix, fromIndex) === fromIndex;\n}\nfunction previouslyCompared(a, b) {\n // Though cyclic references can make an object graph appear infinite from the\n // perspective of a depth-first traversal, the graph still contains a finite\n // number of distinct object references. We use the previousComparisons cache\n // to avoid comparing the same pair of object references more than once, which\n // guarantees termination (even if we end up comparing every object in one\n // graph to every object in the other graph, which is extremely unlikely),\n // while still allowing weird isomorphic structures (like rings with different\n // lengths) a chance to pass the equality test.\n let bSet = previousComparisons.get(a);\n if (bSet) {\n // Return true here because we can be sure false will be returned somewhere\n // else if the objects are not equivalent.\n if (bSet.has(b)) return true;\n } else {\n previousComparisons.set(a, bSet = new Set());\n }\n bSet.add(b);\n return false;\n}\n//# sourceMappingURL=index.js.map","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n case 'object':\n if (value === null) {\n return 'null';\n }\n return formatObjectValue(value, seenValues);\n default:\n return String(value);\n }\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n return formatObject(value, seenValues);\n}\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n if (keys.length === 0) {\n return '{}';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n return '[' + items.join(', ') + ']';\n}\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n return tag;\n}","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n var _proto = Location.prototype;\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. <SOF> is always the first node and <EOF>\n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n var _proto2 = Token.prototype;\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n var startLine = 0;\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n var endLine = lines.length;\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n return lines.slice(startLine, endLine).join('\\n');\n}\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n return true;\n}\n/**\n * @internal\n */\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n case 9: // \\t\n\n case 32:\n // <space>\n ++indent;\n break;\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n isEmptyLine = false;\n }\n }\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n if (printAsMultipleLines) {\n result += '\\n';\n }\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\nexport { invariant 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 */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\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) 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}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);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}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) {\n if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\");\n return f;\n }\n var kind = contextIn.kind,\n 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 _,\n 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) {\n if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\");\n extraInitializers.push(accept(f || null));\n };\n var result = (0, decorators[i])(kind === \"accessor\" ? {\n get: descriptor.get,\n set: descriptor.set\n } : 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 } else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);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\", {\n configurable: true,\n value: prefix ? \"\".concat(prefix, \" \", name) : name\n });\n}\n;\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\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:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n 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 = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\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};\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}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n 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 {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\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),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) 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++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\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}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\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 || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n 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) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: false\n } : f ? f(v) : v;\n } : 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],\n 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 () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\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}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n 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}\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}\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}\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;\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 }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({\n value: value,\n dispose: dispose,\n async: async\n });\n } else if (async) {\n env.stack.push({\n async: true\n });\n }\n return value;\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};\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 function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function (e) {\n fail(e);\n return next();\n });\n } catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\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};","import { useState, useCallback, useLayoutEffect, useEffect, useRef, useMemo, useReducer } from 'react';\nimport debounce from 'lodash.debounce';\n\n// src/useBoolean/useBoolean.ts\nfunction useBoolean(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const setTrue = useCallback(() => {\n setValue(true);\n }, []);\n const setFalse = useCallback(() => {\n setValue(false);\n }, []);\n const toggle = useCallback(() => {\n setValue(x => !x);\n }, []);\n return {\n value,\n setValue,\n setTrue,\n setFalse,\n toggle\n };\n}\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// src/useEventListener/useEventListener.ts\nfunction useEventListener(eventName, handler, element, options) {\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n useEffect(() => {\n var _ref;\n const targetElement = (_ref = element == null ? void 0 : element.current) !== null && _ref !== void 0 ? _ref : window;\n if (!(targetElement && targetElement.addEventListener)) return;\n const listener = event => {\n savedHandler.current(event);\n };\n targetElement.addEventListener(eventName, listener, options);\n return () => {\n targetElement.removeEventListener(eventName, listener, options);\n };\n }, [eventName, element, options]);\n}\n\n// src/useClickAnyWhere/useClickAnyWhere.ts\nfunction useClickAnyWhere(handler) {\n useEventListener(\"click\", event => {\n handler(event);\n });\n}\nfunction useCopyToClipboard() {\n const [copiedText, setCopiedText] = useState(null);\n const copy = useCallback(async text => {\n if (!(navigator == null ? void 0 : navigator.clipboard)) {\n console.warn(\"Clipboard not supported\");\n return false;\n }\n try {\n await navigator.clipboard.writeText(text);\n setCopiedText(text);\n return true;\n } catch (error) {\n console.warn(\"Copy failed\", error);\n setCopiedText(null);\n return false;\n }\n }, []);\n return [copiedText, copy];\n}\nfunction useCounter(initialValue) {\n const [count, setCount] = useState(initialValue !== null && initialValue !== void 0 ? initialValue : 0);\n const increment = () => {\n setCount(x => x + 1);\n };\n const decrement = () => {\n setCount(x => x - 1);\n };\n const reset = () => {\n setCount(initialValue !== null && initialValue !== void 0 ? initialValue : 0);\n };\n return {\n count,\n increment,\n decrement,\n reset,\n setCount\n };\n}\nfunction useInterval(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (delay === null) {\n return;\n }\n const id = setInterval(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearInterval(id);\n };\n }, [delay]);\n}\n\n// src/useCountdown/useCountdown.ts\nfunction useCountdown(countdownOptions) {\n var _intervalMs, _isIncrement, _countStop;\n let isDeprecated = false;\n let countStart, intervalMs, isIncrement, countStop;\n if (\"seconds\" in countdownOptions) {\n console.warn(\"[useCountdown:DEPRECATED] new interface is already available (see https://usehooks-ts.com/react-hook/use-countdown), the old version will retire on usehooks-ts@3.\");\n isDeprecated = true;\n countStart = countdownOptions.seconds;\n intervalMs = countdownOptions.interval;\n isIncrement = countdownOptions.isIncrement;\n } else {\n ({\n countStart,\n intervalMs,\n isIncrement,\n countStop\n } = countdownOptions);\n }\n intervalMs = (_intervalMs = intervalMs) !== null && _intervalMs !== void 0 ? _intervalMs : 1e3;\n isIncrement = (_isIncrement = isIncrement) !== null && _isIncrement !== void 0 ? _isIncrement : false;\n countStop = (_countStop = countStop) !== null && _countStop !== void 0 ? _countStop : 0;\n const {\n count,\n increment,\n decrement,\n reset: resetCounter\n } = useCounter(countStart);\n const {\n value: isCountdownRunning,\n setTrue: startCountdown,\n setFalse: stopCountdown\n } = useBoolean(false);\n const resetCountdown = () => {\n stopCountdown();\n resetCounter();\n };\n const countdownCallback = useCallback(() => {\n if (count === countStop) {\n stopCountdown();\n return;\n }\n if (isIncrement) {\n increment();\n } else {\n decrement();\n }\n }, [count, countStop, decrement, increment, isIncrement, stopCountdown]);\n useInterval(countdownCallback, isCountdownRunning ? intervalMs : null);\n return isDeprecated ? [count, {\n start: startCountdown,\n stop: stopCountdown,\n reset: resetCountdown\n }] : [count, {\n startCountdown,\n stopCountdown,\n resetCountdown\n }];\n}\nfunction useEventCallback(fn) {\n const ref = useRef(() => {\n throw new Error(\"Cannot call an event handler while rendering.\");\n });\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback(function () {\n return ref.current(...arguments);\n }, [ref]);\n}\n\n// src/useLocalStorage/useLocalStorage.ts\nvar IS_SERVER = typeof window === \"undefined\";\nfunction useLocalStorage(key, initialValue) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n initializeWithValue = true\n } = options;\n const serializer = useCallback(value => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n }, [options]);\n const deserializer = useCallback(value => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n }, [options, initialValue]);\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER) {\n return initialValueToUse;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(\"Error reading localStorage key \\u201C\".concat(key, \"\\u201D:\"), error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback(value => {\n if (IS_SERVER) {\n console.warn(\"Tried setting localStorage key \\u201C\".concat(key, \"\\u201D even though environment is not a client\"));\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.localStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"local-storage\", {\n key\n }));\n } catch (error) {\n console.warn(\"Error setting localStorage key \\u201C\".concat(key, \"\\u201D:\"), error);\n }\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(event => {\n if ((event == null ? void 0 : event.key) && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n }, [key, readValue]);\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return [storedValue, setValue];\n}\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, options) {\n var _ref2, _ref3;\n const defaultValue = typeof options === \"boolean\" ? options : (_ref2 = options == null ? void 0 : options.defaultValue) !== null && _ref2 !== void 0 ? _ref2 : false;\n const initializeWithValue = typeof options === \"boolean\" ? void 0 : (_ref3 = options == null ? void 0 : options.initializeWithValue) !== null && _ref3 !== void 0 ? _ref3 : void 0;\n const getMatches = query2 => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\n\n// src/useDarkMode/useDarkMode.ts\nvar COLOR_SCHEME_QUERY = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY = \"usehooks-ts-dark-mode\";\nfunction useDarkMode(options) {\n var _ref4, _ref5, _ref6;\n let localStorageKeyProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : LOCAL_STORAGE_KEY;\n const counter = useRef(0);\n counter.current++;\n const defaultValue = typeof options === \"boolean\" ? options : options == null ? void 0 : options.defaultValue;\n const localStorageKey = typeof options === \"boolean\" ? localStorageKeyProps !== null && localStorageKeyProps !== void 0 ? localStorageKeyProps : LOCAL_STORAGE_KEY : (_ref4 = options == null ? void 0 : options.localStorageKey) !== null && _ref4 !== void 0 ? _ref4 : LOCAL_STORAGE_KEY;\n const initializeWithValue = typeof options === \"boolean\" ? void 0 : (_ref5 = options == null ? void 0 : options.initializeWithValue) !== null && _ref5 !== void 0 ? _ref5 : void 0;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY, {\n initializeWithValue,\n defaultValue\n });\n const [isDarkMode, setDarkMode] = useLocalStorage(localStorageKey, (_ref6 = defaultValue !== null && defaultValue !== void 0 ? defaultValue : isDarkOS) !== null && _ref6 !== void 0 ? _ref6 : false, {\n initializeWithValue\n });\n useIsomorphicLayoutEffect(() => {\n if (isDarkOS !== isDarkMode) {\n setDarkMode(isDarkOS);\n }\n }, [isDarkOS]);\n return {\n isDarkMode,\n toggle: () => {\n setDarkMode(prev => !prev);\n },\n enable: () => {\n setDarkMode(true);\n },\n disable: () => {\n setDarkMode(false);\n },\n set: value => {\n setDarkMode(value);\n }\n };\n}\nfunction useDebounce(value, delay) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, delay !== null && delay !== void 0 ? delay : 500);\n return () => {\n clearTimeout(timer);\n };\n }, [value, delay]);\n return debouncedValue;\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(() => () => {\n funcRef.current();\n }, []);\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func) {\n let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n let options = arguments.length > 2 ? arguments[2] : undefined;\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce(func, delay, options);\n const wrappedFunc = function () {\n return debouncedFuncInstance(...arguments);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n var _ref7;\n const eq = (_ref7 = options == null ? void 0 : options.equalityFn) !== null && _ref7 !== void 0 ? _ref7 : (left, right) => left === right;\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(setDebouncedValue, delay, options);\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\nfunction useDocumentTitle(title) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n preserveTitleOnUnmount = true\n } = options;\n const defaultTitle = useRef(null);\n useIsomorphicLayoutEffect(() => {\n defaultTitle.current = window.document.title;\n }, []);\n useIsomorphicLayoutEffect(() => {\n window.document.title = title;\n }, [title]);\n useUnmount(() => {\n if (!preserveTitleOnUnmount && defaultTitle.current) {\n window.document.title = defaultTitle.current;\n }\n });\n}\nfunction useEffectOnce(effect) {\n useEffect(effect, []);\n}\nfunction useElementSize() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n initializeWithValue = true\n } = options;\n const [ref, setRef] = useState(null);\n const readValue = useCallback(() => {\n var _ref8, _ref9;\n return {\n width: (_ref8 = ref == null ? void 0 : ref.offsetWidth) !== null && _ref8 !== void 0 ? _ref8 : void 0,\n height: (_ref9 = ref == null ? void 0 : ref.offsetHeight) !== null && _ref9 !== void 0 ? _ref9 : void 0\n };\n }, [ref == null ? void 0 : ref.offsetHeight, ref == null ? void 0 : ref.offsetWidth]);\n const [size, setSize] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const handleSize = useCallback(() => {\n setSize(readValue());\n }, [ref == null ? void 0 : ref.offsetHeight, ref == null ? void 0 : ref.offsetWidth]);\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, [ref == null ? void 0 : ref.offsetHeight, ref == null ? void 0 : ref.offsetWidth]);\n const result = [setRef, size];\n result.ref = result[0];\n result.width = size.width;\n result.height = size.height;\n return result;\n}\nfunction useFetch(url, options) {\n const cache = useRef({});\n const cancelRequest = useRef(false);\n const initialState = {\n error: void 0,\n data: void 0\n };\n const fetchReducer = (state2, action) => {\n switch (action.type) {\n case \"loading\":\n return {\n ...initialState\n };\n case \"fetched\":\n return {\n ...initialState,\n data: action.payload\n };\n case \"error\":\n return {\n ...initialState,\n error: action.payload\n };\n default:\n return state2;\n }\n };\n const [state, dispatch] = useReducer(fetchReducer, initialState);\n useEffect(() => {\n if (!url) return;\n cancelRequest.current = false;\n const fetchData = async () => {\n dispatch({\n type: \"loading\"\n });\n const currentCache = cache.current[url];\n if (currentCache) {\n dispatch({\n type: \"fetched\",\n payload: currentCache\n });\n return;\n }\n try {\n const response = await fetch(url, options);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n const data = await response.json();\n cache.current[url] = data;\n if (cancelRequest.current) return;\n dispatch({\n type: \"fetched\",\n payload: data\n });\n } catch (error) {\n if (cancelRequest.current) return;\n dispatch({\n type: \"error\",\n payload: error\n });\n }\n };\n void fetchData();\n return () => {\n cancelRequest.current = true;\n };\n }, [url]);\n return state;\n}\nfunction useHover(elementRef) {\n const [value, setValue] = useState(false);\n const handleMouseEnter = () => {\n setValue(true);\n };\n const handleMouseLeave = () => {\n setValue(false);\n };\n useEventListener(\"mouseenter\", handleMouseEnter, elementRef);\n useEventListener(\"mouseleave\", handleMouseLeave, elementRef);\n return value;\n}\nfunction useImageOnLoad() {\n const [isLoaded, setIsLoaded] = useState(false);\n const handleImageOnLoad = () => {\n setIsLoaded(true);\n };\n const css = {\n // Thumbnail style.\n thumbnail: {\n visibility: isLoaded ? \"hidden\" : \"visible\",\n filter: \"blur(8px)\",\n transition: \"visibility 0ms ease-out 500ms\"\n },\n // Full image style.\n fullSize: {\n opacity: isLoaded ? 1 : 0,\n transition: \"opacity 500ms ease-in 0ms\"\n }\n };\n return {\n handleImageOnLoad,\n css\n };\n}\nfunction useIntersectionObserver(optionsOrLegacyRef, legacyOptions) {\n var _a;\n const isLegacySignature = (\"current\" in optionsOrLegacyRef);\n const options = isLegacySignature ? legacyOptions : optionsOrLegacyRef;\n const {\n threshold = 0,\n root = null,\n rootMargin = \"0%\",\n freezeOnceVisible = false,\n initialIsIntersecting = false\n } = options !== null && options !== void 0 ? options : {};\n const [newRef, setNewRef] = useState(null);\n const ref = isLegacySignature ? optionsOrLegacyRef.current : newRef;\n const [state, setState] = useState(() => ({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n }));\n const callbackRef = useRef();\n callbackRef.current = options == null ? void 0 : options.onChange;\n const frozen = ((_a = state.entry) == null ? void 0 : _a.isIntersecting) && freezeOnceVisible;\n useEffect(() => {\n if (!ref) return;\n if (!(\"IntersectionObserver\" in window)) return;\n if (frozen) return;\n let unobserve;\n const observer = new IntersectionObserver(entries => {\n const thresholds = Array.isArray(observer.thresholds) ? observer.thresholds : [observer.thresholds];\n entries.forEach(entry => {\n const isIntersecting = entry.isIntersecting && thresholds.some(threshold2 => entry.intersectionRatio >= threshold2);\n setState({\n isIntersecting,\n entry\n });\n if (callbackRef.current) {\n callbackRef.current(isIntersecting, entry);\n }\n if (isIntersecting && freezeOnceVisible && unobserve) {\n unobserve();\n unobserve = void 0;\n }\n });\n }, {\n threshold,\n root,\n rootMargin\n });\n observer.observe(ref);\n return () => {\n observer.disconnect();\n };\n }, [ref,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(threshold), root, rootMargin, frozen, freezeOnceVisible]);\n const prevRef = useRef(null);\n useEffect(() => {\n var _a2;\n if (!ref && ((_a2 = state.entry) == null ? void 0 : _a2.target) && !freezeOnceVisible && !frozen && prevRef.current !== state.entry.target) {\n prevRef.current = state.entry.target;\n setState({\n isIntersecting: initialIsIntersecting,\n entry: void 0\n });\n }\n }, [ref, state.entry, freezeOnceVisible, frozen, initialIsIntersecting]);\n if (isLegacySignature) {\n return state.entry;\n }\n const result = [setNewRef, !!state.isIntersecting, state.entry];\n result.ref = result[0];\n result.isIntersecting = result[1];\n result.entry = result[2];\n return result;\n}\nfunction useIsClient() {\n const [isClient, setClient] = useState(false);\n useEffect(() => {\n setClient(true);\n }, []);\n return isClient;\n}\nfunction useIsFirstRender() {\n const isFirst = useRef(true);\n if (isFirst.current) {\n isFirst.current = false;\n return true;\n }\n return isFirst.current;\n}\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return useCallback(() => isMounted.current, []);\n}\nfunction useLockedBody() {\n let initialLocked = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n let rootId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"___gatsby\";\n const [locked, setLocked] = useState(initialLocked);\n useIsomorphicLayoutEffect(() => {\n if (!locked) {\n return;\n }\n const originalOverflow = document.body.style.overflow;\n const originalPaddingRight = document.body.style.paddingRight;\n document.body.style.overflow = \"hidden\";\n const root = document.getElementById(rootId);\n const scrollBarWidth = root ? root.offsetWidth - root.scrollWidth : 0;\n if (scrollBarWidth) {\n document.body.style.paddingRight = \"\".concat(scrollBarWidth, \"px\");\n }\n return () => {\n document.body.style.overflow = originalOverflow;\n if (scrollBarWidth) {\n document.body.style.paddingRight = originalPaddingRight;\n }\n };\n }, [locked]);\n useEffect(() => {\n if (locked !== initialLocked) {\n setLocked(initialLocked);\n }\n }, [initialLocked]);\n return [locked, setLocked];\n}\nfunction useMap() {\n let initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : /* @__PURE__ */new Map();\n const [map, setMap] = useState(new Map(initialState));\n const actions = {\n set: useCallback((key, value) => {\n setMap(prev => {\n const copy = new Map(prev);\n copy.set(key, value);\n return copy;\n });\n }, []),\n setAll: useCallback(entries => {\n setMap(() => new Map(entries));\n }, []),\n remove: useCallback(key => {\n setMap(prev => {\n const copy = new Map(prev);\n copy.delete(key);\n return copy;\n });\n }, []),\n reset: useCallback(() => {\n setMap(() => /* @__PURE__ */new Map());\n }, [])\n };\n return [map, actions];\n}\n\n// src/useOnClickOutside/useOnClickOutside.ts\nfunction useOnClickOutside(ref, handler) {\n let eventType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"mousedown\";\n useEventListener(eventType, event => {\n const target = event.target;\n if (!target || !target.isConnected) {\n return;\n }\n const isOutside = Array.isArray(ref) ? ref.every(r => r.current && !r.current.contains(target)) : ref.current && !ref.current.contains(target);\n if (isOutside) {\n handler(event);\n }\n });\n}\nvar IS_SERVER3 = typeof window === \"undefined\";\nfunction useReadLocalStorage(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let {\n initializeWithValue = true\n } = options;\n if (IS_SERVER3) {\n initializeWithValue = false;\n }\n const deserializer = useCallback(value => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return null;\n }\n return parsed;\n }, [options]);\n const readValue = useCallback(() => {\n if (IS_SERVER3) {\n return null;\n }\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? deserializer(raw) : null;\n } catch (error) {\n console.warn(\"Error reading localStorage key \\u201C\".concat(key, \"\\u201D:\"), error);\n return null;\n }\n }, [key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return void 0;\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(event => {\n if ((event == null ? void 0 : event.key) && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n }, [key, readValue]);\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"local-storage\", handleStorageChange);\n return storedValue;\n}\nvar initialSize = {\n width: void 0,\n height: void 0\n};\nfunction useResizeObserver(options) {\n const {\n ref,\n box = \"content-box\"\n } = options;\n const [{\n width,\n height\n }, setSize] = useState(initialSize);\n const isMounted = useIsMounted();\n const previousSize = useRef({\n ...initialSize\n });\n const onResize = useRef(void 0);\n onResize.current = options == null ? void 0 : options.onResize;\n useEffect(() => {\n if (!(ref == null ? void 0 : ref.current)) return;\n if (typeof window === \"undefined\" || !(\"ResizeObserver\" in window)) return;\n const observer = new ResizeObserver(_ref10 => {\n let [entry] = _ref10;\n const boxProp = box === \"border-box\" ? \"borderBoxSize\" : box === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\";\n const newWidth = extractSize(entry, boxProp, \"inlineSize\");\n const newHeight = extractSize(entry, boxProp, \"blockSize\");\n const hasChanged = previousSize.current.width !== newWidth || previousSize.current.height !== newHeight;\n if (hasChanged) {\n const newSize = {\n width: newWidth,\n height: newHeight\n };\n previousSize.current.width = newWidth;\n previousSize.current.height = newHeight;\n if (onResize == null ? void 0 : onResize.current) {\n onResize.current(newSize);\n } else {\n if (isMounted()) {\n setSize(newSize);\n }\n }\n }\n });\n observer.observe(ref.current, {\n box\n });\n return () => {\n observer.disconnect();\n };\n }, [box, ref, isMounted]);\n return {\n width,\n height\n };\n}\nfunction extractSize(entry, box, sizeType) {\n if (!entry[box]) {\n if (box === \"contentBoxSize\") {\n return entry.contentRect[sizeType === \"inlineSize\" ? \"width\" : \"height\"];\n }\n return void 0;\n }\n return Array.isArray(entry[box]) ? entry[box][0][sizeType] :\n // @ts-ignore Support Firefox's non-standard behavior\n entry[box][sizeType];\n}\nvar IS_SERVER4 = typeof window === \"undefined\";\nfunction useScreen() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let {\n initializeWithValue = true\n } = options;\n if (IS_SERVER4) {\n initializeWithValue = false;\n }\n const readScreen = () => {\n if (IS_SERVER4) {\n return void 0;\n }\n return window.screen;\n };\n const [screen, setScreen] = useState(() => {\n if (initializeWithValue) {\n return readScreen();\n }\n return void 0;\n });\n const debouncedSetScreen = useDebounceCallback(setScreen, options == null ? void 0 : options.debounceDelay);\n function handleSize() {\n const newScreen = readScreen();\n const setSize = (options == null ? void 0 : options.debounceDelay) ? debouncedSetScreen : setScreen;\n if (newScreen) {\n const {\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n } = newScreen;\n setSize({\n width,\n height,\n availHeight,\n availWidth,\n colorDepth,\n orientation,\n pixelDepth\n });\n }\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return screen;\n}\nvar cachedScriptStatuses = /* @__PURE__ */new Map();\nfunction getScriptNode(src) {\n const node = document.querySelector(\"script[src=\\\"\".concat(src, \"\\\"]\"));\n const status = node == null ? void 0 : node.getAttribute(\"data-status\");\n return {\n node,\n status\n };\n}\nfunction useScript(src, options) {\n const [status, setStatus] = useState(() => {\n var _cachedScriptStatuses;\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return \"idle\";\n }\n if (typeof window === \"undefined\") {\n return \"loading\";\n }\n return (_cachedScriptStatuses = cachedScriptStatuses.get(src)) !== null && _cachedScriptStatuses !== void 0 ? _cachedScriptStatuses : \"loading\";\n });\n useEffect(() => {\n if (!src || (options == null ? void 0 : options.shouldPreventLoad)) {\n return;\n }\n const cachedScriptStatus = cachedScriptStatuses.get(src);\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n const script = getScriptNode(src);\n let scriptNode = script.node;\n if (!scriptNode) {\n scriptNode = document.createElement(\"script\");\n scriptNode.src = src;\n scriptNode.async = true;\n if (options == null ? void 0 : options.id) {\n scriptNode.id = options.id;\n }\n scriptNode.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(scriptNode);\n const setAttributeFromEvent = event => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n scriptNode == null ? void 0 : scriptNode.setAttribute(\"data-status\", scriptStatus);\n };\n scriptNode.addEventListener(\"load\", setAttributeFromEvent);\n scriptNode.addEventListener(\"error\", setAttributeFromEvent);\n } else {\n var _ref11, _script$status;\n setStatus((_ref11 = (_script$status = script.status) !== null && _script$status !== void 0 ? _script$status : cachedScriptStatus) !== null && _ref11 !== void 0 ? _ref11 : \"loading\");\n }\n const setStateFromEvent = event => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.set(src, newStatus);\n };\n scriptNode.addEventListener(\"load\", setStateFromEvent);\n scriptNode.addEventListener(\"error\", setStateFromEvent);\n return () => {\n if (scriptNode) {\n scriptNode.removeEventListener(\"load\", setStateFromEvent);\n scriptNode.removeEventListener(\"error\", setStateFromEvent);\n }\n if (scriptNode && (options == null ? void 0 : options.removeOnUnmount)) {\n scriptNode.remove();\n cachedScriptStatuses.delete(src);\n }\n };\n }, [src, options == null ? void 0 : options.shouldPreventLoad, options == null ? void 0 : options.removeOnUnmount, options == null ? void 0 : options.id]);\n return status;\n}\nvar IS_SERVER5 = typeof window === \"undefined\";\nfunction useScrollLock() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoLock = true,\n lockTarget,\n widthReflow = true\n } = options;\n const [isLocked, setIsLocked] = useState(false);\n const target = useRef(null);\n const originalStyle = useRef(null);\n const lock = () => {\n if (target.current) {\n const {\n overflow,\n paddingRight\n } = target.current.style;\n originalStyle.current = {\n overflow,\n paddingRight\n };\n if (widthReflow) {\n const offsetWidth = target.current === document.body ? window.innerWidth : target.current.offsetWidth;\n const currentPaddingRight = parseInt(window.getComputedStyle(target.current).paddingRight, 10) || 0;\n const scrollbarWidth = offsetWidth - target.current.scrollWidth;\n target.current.style.paddingRight = \"\".concat(scrollbarWidth + currentPaddingRight, \"px\");\n }\n target.current.style.overflow = \"hidden\";\n setIsLocked(true);\n }\n };\n const unlock = () => {\n if (target.current && originalStyle.current) {\n target.current.style.overflow = originalStyle.current.overflow;\n if (widthReflow) {\n target.current.style.paddingRight = originalStyle.current.paddingRight;\n }\n }\n setIsLocked(false);\n };\n useIsomorphicLayoutEffect(() => {\n if (IS_SERVER5) return;\n if (lockTarget) {\n target.current = typeof lockTarget === \"string\" ? document.querySelector(lockTarget) : lockTarget;\n }\n if (!target.current) {\n target.current = document.body;\n }\n if (autoLock) {\n lock();\n }\n return () => {\n unlock();\n };\n }, [autoLock, lockTarget, widthReflow]);\n return {\n isLocked,\n lock,\n unlock\n };\n}\nvar IS_SERVER6 = typeof window === \"undefined\";\nfunction useSessionStorage(key, initialValue) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n initializeWithValue = true\n } = options;\n const serializer = useCallback(value => {\n if (options.serializer) {\n return options.serializer(value);\n }\n return JSON.stringify(value);\n }, [options]);\n const deserializer = useCallback(value => {\n if (options.deserializer) {\n return options.deserializer(value);\n }\n if (value === \"undefined\") {\n return void 0;\n }\n const defaultValue = initialValue instanceof Function ? initialValue() : initialValue;\n let parsed;\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n console.error(\"Error parsing JSON:\", error);\n return defaultValue;\n }\n return parsed;\n }, [options, initialValue]);\n const readValue = useCallback(() => {\n const initialValueToUse = initialValue instanceof Function ? initialValue() : initialValue;\n if (IS_SERVER6) {\n return initialValueToUse;\n }\n try {\n const raw = window.sessionStorage.getItem(key);\n return raw ? deserializer(raw) : initialValueToUse;\n } catch (error) {\n console.warn(\"Error reading sessionStorage key \\u201C\".concat(key, \"\\u201D:\"), error);\n return initialValueToUse;\n }\n }, [initialValue, key, deserializer]);\n const [storedValue, setStoredValue] = useState(() => {\n if (initializeWithValue) {\n return readValue();\n }\n return initialValue instanceof Function ? initialValue() : initialValue;\n });\n const setValue = useEventCallback(value => {\n if (IS_SERVER6) {\n console.warn(\"Tried setting sessionStorage key \\u201C\".concat(key, \"\\u201D even though environment is not a client\"));\n }\n try {\n const newValue = value instanceof Function ? value(readValue()) : value;\n window.sessionStorage.setItem(key, serializer(newValue));\n setStoredValue(newValue);\n window.dispatchEvent(new StorageEvent(\"session-storage\", {\n key\n }));\n } catch (error) {\n console.warn(\"Error setting sessionStorage key \\u201C\".concat(key, \"\\u201D:\"), error);\n }\n });\n useEffect(() => {\n setStoredValue(readValue());\n }, [key]);\n const handleStorageChange = useCallback(event => {\n if ((event == null ? void 0 : event.key) && event.key !== key) {\n return;\n }\n setStoredValue(readValue());\n }, [key, readValue]);\n useEventListener(\"storage\", handleStorageChange);\n useEventListener(\"session-storage\", handleStorageChange);\n return [storedValue, setValue];\n}\n\n// src/useSsr/useSsr.ts\nfunction useSsr() {\n var _a;\n const isDOM =\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n typeof window !== \"undefined\" && !!((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement);\n return {\n isBrowser: isDOM,\n isServer: !isDOM\n };\n}\nfunction useStep(maxStep) {\n const [currentStep, setCurrentStep] = useState(1);\n const canGoToNextStep = currentStep + 1 <= maxStep;\n const canGoToPrevStep = currentStep - 1 > 0;\n const setStep = useCallback(step => {\n const newStep = step instanceof Function ? step(currentStep) : step;\n if (newStep >= 1 && newStep <= maxStep) {\n setCurrentStep(newStep);\n return;\n }\n throw new Error(\"Step not valid\");\n }, [maxStep, currentStep]);\n const goToNextStep = useCallback(() => {\n if (canGoToNextStep) {\n setCurrentStep(step => step + 1);\n }\n }, [canGoToNextStep]);\n const goToPrevStep = useCallback(() => {\n if (canGoToPrevStep) {\n setCurrentStep(step => step - 1);\n }\n }, [canGoToPrevStep]);\n const reset = useCallback(() => {\n setCurrentStep(1);\n }, []);\n return [currentStep, {\n goToNextStep,\n goToPrevStep,\n canGoToNextStep,\n canGoToPrevStep,\n setStep,\n reset\n }];\n}\n\n// src/useTernaryDarkMode/useTernaryDarkMode.ts\nvar COLOR_SCHEME_QUERY2 = \"(prefers-color-scheme: dark)\";\nvar LOCAL_STORAGE_KEY2 = \"usehooks-ts-ternary-dark-mode\";\nfunction useTernaryDarkMode(options) {\n var _ref12, _ref13, _ref14;\n const defaultValue = typeof options === \"string\" ? \"system\" : (_ref12 = options == null ? void 0 : options.defaultValue) !== null && _ref12 !== void 0 ? _ref12 : \"system\";\n const localStorageKey = typeof options === \"string\" ? options : (_ref13 = options == null ? void 0 : options.localStorageKey) !== null && _ref13 !== void 0 ? _ref13 : LOCAL_STORAGE_KEY2;\n const initializeWithValue = typeof options === \"string\" ? void 0 : (_ref14 = options == null ? void 0 : options.initializeWithValue) !== null && _ref14 !== void 0 ? _ref14 : void 0;\n const isDarkOS = useMediaQuery(COLOR_SCHEME_QUERY2, {\n initializeWithValue\n });\n const [mode, setMode] = useLocalStorage(localStorageKey, defaultValue, {\n initializeWithValue\n });\n const isDarkMode = mode === \"dark\" || mode === \"system\" && isDarkOS;\n const toggleTernaryDarkMode = () => {\n const modes = [\"light\", \"system\", \"dark\"];\n setMode(prevMode => {\n const nextIndex = (modes.indexOf(prevMode) + 1) % modes.length;\n return modes[nextIndex];\n });\n };\n return {\n isDarkMode,\n ternaryDarkMode: mode,\n setTernaryDarkMode: setMode,\n toggleTernaryDarkMode\n };\n}\nfunction useTimeout(callback, delay) {\n const savedCallback = useRef(callback);\n useIsomorphicLayoutEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n const id = setTimeout(() => {\n savedCallback.current();\n }, delay);\n return () => {\n clearTimeout(id);\n };\n }, [delay]);\n}\nfunction useToggle(defaultValue) {\n const [value, setValue] = useState(!!defaultValue);\n const toggle = useCallback(() => {\n setValue(x => !x);\n }, []);\n return [value, toggle, setValue];\n}\nfunction useUpdateEffect(effect, deps) {\n const isFirst = useIsFirstRender();\n useEffect(() => {\n if (!isFirst) {\n return effect();\n }\n }, deps);\n}\nvar IS_SERVER7 = typeof window === \"undefined\";\nfunction useWindowSize() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let {\n initializeWithValue = true\n } = options;\n if (IS_SERVER7) {\n initializeWithValue = false;\n }\n const [windowSize, setWindowSize] = useState(() => {\n if (initializeWithValue) {\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n }\n return {\n width: void 0,\n height: void 0\n };\n });\n const debouncedSetWindowSize = useDebounceCallback(setWindowSize, options == null ? void 0 : options.debounceDelay);\n function handleSize() {\n const setSize = (options == null ? void 0 : options.debounceDelay) ? debouncedSetWindowSize : setWindowSize;\n setSize({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n useEventListener(\"resize\", handleSize);\n useIsomorphicLayoutEffect(() => {\n handleSize();\n }, []);\n return windowSize;\n}\nexport { useBoolean, useClickAnyWhere, useCopyToClipboard, useCountdown, useCounter, useDarkMode, useDebounce, useDebounceCallback, useDebounceValue, useDocumentTitle, useEffectOnce, useElementSize, useEventCallback, useEventListener, useFetch, useHover, useImageOnLoad, useIntersectionObserver, useInterval, useIsClient, useIsFirstRender, useIsMounted, useIsomorphicLayoutEffect, useLocalStorage, useLockedBody, useMap, useMediaQuery, useOnClickOutside, useReadLocalStorage, useResizeObserver, useScreen, useScript, useScrollLock, useSessionStorage, useSsr, useStep, useTernaryDarkMode, useTimeout, useToggle, useUnmount, useUpdateEffect, useWindowSize };","// 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/\" + ({\"102\":\"xlsx\",\"133\":\"pdfmake\",\"182\":\"canvg\"}[chunkId] || chunkId) + \".\" + {\"77\":\"d0bdbb9c\",\"102\":\"369885c4\",\"133\":\"27a68980\",\"167\":\"986ae654\",\"182\":\"2a97d8a8\",\"241\":\"d69f9b1a\",\"252\":\"94c92f80\",\"337\":\"d5d610d3\",\"343\":\"6a62e4da\",\"407\":\"9a1542b3\",\"571\":\"a3476536\",\"627\":\"e61523a4\",\"646\":\"1c755786\",\"696\":\"9f02c5cf\",\"767\":\"6cef2e60\",\"832\":\"e80463f1\",\"867\":\"2f78ca25\"}[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__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"acin-terminal:\";\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[\"webpackChunkacin_terminal\"] = self[\"webpackChunkacin_terminal\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","import { __assign } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from \"rehackt\";\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client,\n children = _a.children;\n var ApolloContext = getApolloContext();\n var parentContext = React.useContext(ApolloContext);\n var context = React.useMemo(function () {\n return __assign(__assign({}, parentContext), {\n client: client || parentContext.client\n });\n }, [parentContext, client]);\n invariant(context.client, 46);\n return React.createElement(ApolloContext.Provider, {\n value: context\n }, children);\n};\n//# sourceMappingURL=ApolloProvider.js.map","var e = function (t, n) {\n return e = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (e, t) {\n e.__proto__ = t;\n } || function (e, t) {\n for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);\n }, e(t, n);\n};\nfunction t(t, n) {\n if (\"function\" != typeof n && null !== n) throw new TypeError(\"Class extends value \" + String(n) + \" is not a constructor or null\");\n function r() {\n this.constructor = t;\n }\n e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r());\n}\nvar n = function () {\n return n = Object.assign || function (e) {\n for (var t, n = 1, r = arguments.length; n < r; n++) for (var o in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);\n return e;\n }, n.apply(this, arguments);\n};\nfunction r(e, t) {\n var n = {};\n for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);\n if (null != e && \"function\" == typeof Object.getOwnPropertySymbols) {\n var o = 0;\n for (r = Object.getOwnPropertySymbols(e); o < r.length; o++) t.indexOf(r[o]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[o]) && (n[r[o]] = e[r[o]]);\n }\n return n;\n}\nfunction o(e, t, n, r) {\n return new (n || (n = Promise))(function (o, i) {\n function c(e) {\n try {\n s(r.next(e));\n } catch (e) {\n i(e);\n }\n }\n function a(e) {\n try {\n s(r.throw(e));\n } catch (e) {\n i(e);\n }\n }\n function s(e) {\n var t;\n e.done ? o(e.value) : (t = e.value, t instanceof n ? t : new n(function (e) {\n e(t);\n })).then(c, a);\n }\n s((r = r.apply(e, t || [])).next());\n });\n}\nfunction i(e, t) {\n var n,\n r,\n o,\n i,\n c = {\n label: 0,\n sent: function () {\n if (1 & o[0]) throw o[1];\n return o[1];\n },\n trys: [],\n ops: []\n };\n return i = {\n next: a(0),\n throw: a(1),\n return: a(2)\n }, \"function\" == typeof Symbol && (i[Symbol.iterator] = function () {\n return this;\n }), i;\n function a(i) {\n return function (a) {\n return function (i) {\n if (n) throw new TypeError(\"Generator is already executing.\");\n for (; c;) try {\n if (n = 1, r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), 0) : r.next) && !(o = o.call(r, i[1])).done) return o;\n switch (r = 0, o && (i = [2 & i[0], o.value]), i[0]) {\n case 0:\n case 1:\n o = i;\n break;\n case 4:\n return c.label++, {\n value: i[1],\n done: !1\n };\n case 5:\n c.label++, r = i[1], i = [0];\n continue;\n case 7:\n i = c.ops.pop(), c.trys.pop();\n continue;\n default:\n if (!(o = c.trys, (o = o.length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) {\n c = 0;\n continue;\n }\n if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) {\n c.label = i[1];\n break;\n }\n if (6 === i[0] && c.label < o[1]) {\n c.label = o[1], o = i;\n break;\n }\n if (o && c.label < o[2]) {\n c.label = o[2], c.ops.push(i);\n break;\n }\n o[2] && c.ops.pop(), c.trys.pop();\n continue;\n }\n i = t.call(e, c);\n } catch (e) {\n i = [6, e], r = 0;\n } finally {\n n = o = 0;\n }\n if (5 & i[0]) throw i[1];\n return {\n value: i[0] ? i[1] : void 0,\n done: !0\n };\n }([i, a]);\n };\n }\n}\nfunction c(e, t) {\n var n = \"function\" == typeof Symbol && e[Symbol.iterator];\n if (!n) return e;\n var r,\n o,\n i = n.call(e),\n c = [];\n try {\n for (; (void 0 === t || t-- > 0) && !(r = i.next()).done;) c.push(r.value);\n } catch (e) {\n o = {\n error: e\n };\n } finally {\n try {\n r && !r.done && (n = i.return) && n.call(i);\n } finally {\n if (o) throw o.error;\n }\n }\n return c;\n}\nfunction a(e, t, n) {\n if (n || 2 === arguments.length) for (var r, o = 0, i = t.length; o < i; o++) !r && o in t || (r || (r = Array.prototype.slice.call(t, 0, o)), r[o] = t[o]);\n return e.concat(r || Array.prototype.slice.call(t));\n}\nvar s = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : \"undefined\" != typeof self ? self : {};\nfunction u(e) {\n return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, \"default\") ? e.default : e;\n}\nfunction l(e, t) {\n return e(t = {\n exports: {}\n }, t.exports), t.exports;\n}\nvar f,\n d,\n h = function (e) {\n return e && e.Math == Math && e;\n },\n p = h(\"object\" == typeof globalThis && globalThis) || h(\"object\" == typeof window && window) || h(\"object\" == typeof self && self) || h(\"object\" == typeof s && s) || function () {\n return this;\n }() || Function(\"return this\")(),\n y = function (e) {\n try {\n return !!e();\n } catch (e) {\n return !0;\n }\n },\n v = !y(function () {\n return 7 != Object.defineProperty({}, 1, {\n get: function () {\n return 7;\n }\n })[1];\n }),\n m = !y(function () {\n var e = function () {}.bind();\n return \"function\" != typeof e || e.hasOwnProperty(\"prototype\");\n }),\n b = Function.prototype.call,\n g = m ? b.bind(b) : function () {\n return b.apply(b, arguments);\n },\n w = {}.propertyIsEnumerable,\n S = Object.getOwnPropertyDescriptor,\n k = S && !w.call({\n 1: 2\n }, 1) ? function (e) {\n var t = S(this, e);\n return !!t && t.enumerable;\n } : w,\n _ = {\n f: k\n },\n I = function (e, t) {\n return {\n enumerable: !(1 & e),\n configurable: !(2 & e),\n writable: !(4 & e),\n value: t\n };\n },\n O = Function,\n x = O.prototype,\n T = x.bind,\n C = x.call,\n j = m && T.bind(C, C),\n L = function (e) {\n return e instanceof O ? m ? j(e) : function () {\n return C.apply(e, arguments);\n } : void 0;\n },\n R = L({}.toString),\n W = L(\"\".slice),\n Z = function (e) {\n return W(R(e), 8, -1);\n },\n E = Object,\n G = L(\"\".split),\n A = y(function () {\n return !E(\"z\").propertyIsEnumerable(0);\n }) ? function (e) {\n return \"String\" == Z(e) ? G(e, \"\") : E(e);\n } : E,\n P = function (e) {\n return null == e;\n },\n X = TypeError,\n F = function (e) {\n if (P(e)) throw X(\"Can't call method on \" + e);\n return e;\n },\n K = function (e) {\n return A(F(e));\n },\n N = \"object\" == typeof document && document.all,\n U = {\n all: N,\n IS_HTMLDDA: void 0 === N && void 0 !== N\n },\n D = U.all,\n H = U.IS_HTMLDDA ? function (e) {\n return \"function\" == typeof e || e === D;\n } : function (e) {\n return \"function\" == typeof e;\n },\n Y = U.all,\n J = U.IS_HTMLDDA ? function (e) {\n return \"object\" == typeof e ? null !== e : H(e) || e === Y;\n } : function (e) {\n return \"object\" == typeof e ? null !== e : H(e);\n },\n V = function (e) {\n return H(e) ? e : void 0;\n },\n z = function (e, t) {\n return arguments.length < 2 ? V(p[e]) : p[e] && p[e][t];\n },\n M = L({}.isPrototypeOf),\n B = z(\"navigator\", \"userAgent\") || \"\",\n Q = p.process,\n q = p.Deno,\n $ = Q && Q.versions || q && q.version,\n ee = $ && $.v8;\nee && (d = (f = ee.split(\".\"))[0] > 0 && f[0] < 4 ? 1 : +(f[0] + f[1])), !d && B && (!(f = B.match(/Edge\\/(\\d+)/)) || f[1] >= 74) && (f = B.match(/Chrome\\/(\\d+)/)) && (d = +f[1]);\nvar te = d,\n ne = !!Object.getOwnPropertySymbols && !y(function () {\n var e = Symbol();\n return !String(e) || !(Object(e) instanceof Symbol) || !Symbol.sham && te && te < 41;\n }),\n re = ne && !Symbol.sham && \"symbol\" == typeof Symbol.iterator,\n oe = Object,\n ie = re ? function (e) {\n return \"symbol\" == typeof e;\n } : function (e) {\n var t = z(\"Symbol\");\n return H(t) && M(t.prototype, oe(e));\n },\n ce = String,\n ae = function (e) {\n try {\n return ce(e);\n } catch (e) {\n return \"Object\";\n }\n },\n se = TypeError,\n ue = function (e) {\n if (H(e)) return e;\n throw se(ae(e) + \" is not a function\");\n },\n le = function (e, t) {\n var n = e[t];\n return P(n) ? void 0 : ue(n);\n },\n fe = TypeError,\n de = Object.defineProperty,\n he = function (e, t) {\n try {\n de(p, e, {\n value: t,\n configurable: !0,\n writable: !0\n });\n } catch (n) {\n p[e] = t;\n }\n return t;\n },\n pe = p[\"__core-js_shared__\"] || he(\"__core-js_shared__\", {}),\n ye = l(function (e) {\n (e.exports = function (e, t) {\n return pe[e] || (pe[e] = void 0 !== t ? t : {});\n })(\"versions\", []).push({\n version: \"3.25.4\",\n mode: \"global\",\n copyright: \"© 2014-2022 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.25.4/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n });\n }),\n ve = Object,\n me = function (e) {\n return ve(F(e));\n },\n be = L({}.hasOwnProperty),\n ge = Object.hasOwn || function (e, t) {\n return be(me(e), t);\n },\n we = 0,\n Se = Math.random(),\n ke = L(1..toString),\n _e = function (e) {\n return \"Symbol(\" + (void 0 === e ? \"\" : e) + \")_\" + ke(++we + Se, 36);\n },\n Ie = ye(\"wks\"),\n Oe = p.Symbol,\n xe = Oe && Oe.for,\n Te = re ? Oe : Oe && Oe.withoutSetter || _e,\n Ce = function (e) {\n if (!ge(Ie, e) || !ne && \"string\" != typeof Ie[e]) {\n var t = \"Symbol.\" + e;\n ne && ge(Oe, e) ? Ie[e] = Oe[e] : Ie[e] = re && xe ? xe(t) : Te(t);\n }\n return Ie[e];\n },\n je = TypeError,\n Le = Ce(\"toPrimitive\"),\n Re = function (e, t) {\n if (!J(e) || ie(e)) return e;\n var n,\n r = le(e, Le);\n if (r) {\n if (void 0 === t && (t = \"default\"), n = g(r, e, t), !J(n) || ie(n)) return n;\n throw je(\"Can't convert object to primitive value\");\n }\n return void 0 === t && (t = \"number\"), function (e, t) {\n var n, r;\n if (\"string\" === t && H(n = e.toString) && !J(r = g(n, e))) return r;\n if (H(n = e.valueOf) && !J(r = g(n, e))) return r;\n if (\"string\" !== t && H(n = e.toString) && !J(r = g(n, e))) return r;\n throw fe(\"Can't convert object to primitive value\");\n }(e, t);\n },\n We = function (e) {\n var t = Re(e, \"string\");\n return ie(t) ? t : t + \"\";\n },\n Ze = p.document,\n Ee = J(Ze) && J(Ze.createElement),\n Ge = function (e) {\n return Ee ? Ze.createElement(e) : {};\n },\n Ae = !v && !y(function () {\n return 7 != Object.defineProperty(Ge(\"div\"), \"a\", {\n get: function () {\n return 7;\n }\n }).a;\n }),\n Pe = Object.getOwnPropertyDescriptor,\n Xe = {\n f: v ? Pe : function (e, t) {\n if (e = K(e), t = We(t), Ae) try {\n return Pe(e, t);\n } catch (e) {}\n if (ge(e, t)) return I(!g(_.f, e, t), e[t]);\n }\n },\n Fe = v && y(function () {\n return 42 != Object.defineProperty(function () {}, \"prototype\", {\n value: 42,\n writable: !1\n }).prototype;\n }),\n Ke = String,\n Ne = TypeError,\n Ue = function (e) {\n if (J(e)) return e;\n throw Ne(Ke(e) + \" is not an object\");\n },\n De = TypeError,\n He = Object.defineProperty,\n Ye = Object.getOwnPropertyDescriptor,\n Je = {\n f: v ? Fe ? function (e, t, n) {\n if (Ue(e), t = We(t), Ue(n), \"function\" == typeof e && \"prototype\" === t && \"value\" in n && \"writable\" in n && !n.writable) {\n var r = Ye(e, t);\n r && r.writable && (e[t] = n.value, n = {\n configurable: \"configurable\" in n ? n.configurable : r.configurable,\n enumerable: \"enumerable\" in n ? n.enumerable : r.enumerable,\n writable: !1\n });\n }\n return He(e, t, n);\n } : He : function (e, t, n) {\n if (Ue(e), t = We(t), Ue(n), Ae) try {\n return He(e, t, n);\n } catch (e) {}\n if (\"get\" in n || \"set\" in n) throw De(\"Accessors not supported\");\n return \"value\" in n && (e[t] = n.value), e;\n }\n },\n Ve = v ? function (e, t, n) {\n return Je.f(e, t, I(1, n));\n } : function (e, t, n) {\n return e[t] = n, e;\n },\n ze = Function.prototype,\n Me = v && Object.getOwnPropertyDescriptor,\n Be = ge(ze, \"name\"),\n Qe = {\n EXISTS: Be,\n PROPER: Be && \"something\" === function () {}.name,\n CONFIGURABLE: Be && (!v || v && Me(ze, \"name\").configurable)\n },\n qe = L(Function.toString);\nH(pe.inspectSource) || (pe.inspectSource = function (e) {\n return qe(e);\n});\nvar $e,\n et,\n tt,\n nt = pe.inspectSource,\n rt = p.WeakMap,\n ot = H(rt) && /native code/.test(String(rt)),\n it = ye(\"keys\"),\n ct = function (e) {\n return it[e] || (it[e] = _e(e));\n },\n at = {},\n st = p.TypeError,\n ut = p.WeakMap;\nif (ot || pe.state) {\n var lt = pe.state || (pe.state = new ut()),\n ft = L(lt.get),\n dt = L(lt.has),\n ht = L(lt.set);\n $e = function (e, t) {\n if (dt(lt, e)) throw st(\"Object already initialized\");\n return t.facade = e, ht(lt, e, t), t;\n }, et = function (e) {\n return ft(lt, e) || {};\n }, tt = function (e) {\n return dt(lt, e);\n };\n} else {\n var pt = ct(\"state\");\n at[pt] = !0, $e = function (e, t) {\n if (ge(e, pt)) throw st(\"Object already initialized\");\n return t.facade = e, Ve(e, pt, t), t;\n }, et = function (e) {\n return ge(e, pt) ? e[pt] : {};\n }, tt = function (e) {\n return ge(e, pt);\n };\n}\nvar yt = {\n set: $e,\n get: et,\n has: tt,\n enforce: function (e) {\n return tt(e) ? et(e) : $e(e, {});\n },\n getterFor: function (e) {\n return function (t) {\n var n;\n if (!J(t) || (n = et(t)).type !== e) throw st(\"Incompatible receiver, \" + e + \" required\");\n return n;\n };\n }\n },\n vt = l(function (e) {\n var t = Qe.CONFIGURABLE,\n n = yt.enforce,\n r = yt.get,\n o = Object.defineProperty,\n i = v && !y(function () {\n return 8 !== o(function () {}, \"length\", {\n value: 8\n }).length;\n }),\n c = String(String).split(\"String\"),\n a = e.exports = function (e, r, a) {\n \"Symbol(\" === String(r).slice(0, 7) && (r = \"[\" + String(r).replace(/^Symbol\\(([^)]*)\\)/, \"$1\") + \"]\"), a && a.getter && (r = \"get \" + r), a && a.setter && (r = \"set \" + r), (!ge(e, \"name\") || t && e.name !== r) && (v ? o(e, \"name\", {\n value: r,\n configurable: !0\n }) : e.name = r), i && a && ge(a, \"arity\") && e.length !== a.arity && o(e, \"length\", {\n value: a.arity\n });\n try {\n a && ge(a, \"constructor\") && a.constructor ? v && o(e, \"prototype\", {\n writable: !1\n }) : e.prototype && (e.prototype = void 0);\n } catch (e) {}\n var s = n(e);\n return ge(s, \"source\") || (s.source = c.join(\"string\" == typeof r ? r : \"\")), e;\n };\n Function.prototype.toString = a(function () {\n return H(this) && r(this).source || nt(this);\n }, \"toString\");\n }),\n mt = function (e, t, n, r) {\n r || (r = {});\n var o = r.enumerable,\n i = void 0 !== r.name ? r.name : t;\n if (H(n) && vt(n, i, r), r.global) o ? e[t] = n : he(t, n);else {\n try {\n r.unsafe ? e[t] && (o = !0) : delete e[t];\n } catch (e) {}\n o ? e[t] = n : Je.f(e, t, {\n value: n,\n enumerable: !1,\n configurable: !r.nonConfigurable,\n writable: !r.nonWritable\n });\n }\n return e;\n },\n bt = Math.ceil,\n gt = Math.floor,\n wt = Math.trunc || function (e) {\n var t = +e;\n return (t > 0 ? gt : bt)(t);\n },\n St = function (e) {\n var t = +e;\n return t != t || 0 === t ? 0 : wt(t);\n },\n kt = Math.max,\n _t = Math.min,\n It = function (e, t) {\n var n = St(e);\n return n < 0 ? kt(n + t, 0) : _t(n, t);\n },\n Ot = Math.min,\n xt = function (e) {\n return e > 0 ? Ot(St(e), 9007199254740991) : 0;\n },\n Tt = function (e) {\n return xt(e.length);\n },\n Ct = function (e) {\n return function (t, n, r) {\n var o,\n i = K(t),\n c = Tt(i),\n a = It(r, c);\n if (e && n != n) {\n for (; c > a;) if ((o = i[a++]) != o) return !0;\n } else for (; c > a; a++) if ((e || a in i) && i[a] === n) return e || a || 0;\n return !e && -1;\n };\n },\n jt = {\n includes: Ct(!0),\n indexOf: Ct(!1)\n },\n Lt = jt.indexOf,\n Rt = L([].push),\n Wt = function (e, t) {\n var n,\n r = K(e),\n o = 0,\n i = [];\n for (n in r) !ge(at, n) && ge(r, n) && Rt(i, n);\n for (; t.length > o;) ge(r, n = t[o++]) && (~Lt(i, n) || Rt(i, n));\n return i;\n },\n Zt = [\"constructor\", \"hasOwnProperty\", \"isPrototypeOf\", \"propertyIsEnumerable\", \"toLocaleString\", \"toString\", \"valueOf\"],\n Et = Zt.concat(\"length\", \"prototype\"),\n Gt = {\n f: Object.getOwnPropertyNames || function (e) {\n return Wt(e, Et);\n }\n },\n At = {\n f: Object.getOwnPropertySymbols\n },\n Pt = L([].concat),\n Xt = z(\"Reflect\", \"ownKeys\") || function (e) {\n var t = Gt.f(Ue(e)),\n n = At.f;\n return n ? Pt(t, n(e)) : t;\n },\n Ft = function (e, t, n) {\n for (var r = Xt(t), o = Je.f, i = Xe.f, c = 0; c < r.length; c++) {\n var a = r[c];\n ge(e, a) || n && ge(n, a) || o(e, a, i(t, a));\n }\n },\n Kt = /#|\\.prototype\\./,\n Nt = function (e, t) {\n var n = Dt[Ut(e)];\n return n == Yt || n != Ht && (H(t) ? y(t) : !!t);\n },\n Ut = Nt.normalize = function (e) {\n return String(e).replace(Kt, \".\").toLowerCase();\n },\n Dt = Nt.data = {},\n Ht = Nt.NATIVE = \"N\",\n Yt = Nt.POLYFILL = \"P\",\n Jt = Nt,\n Vt = Xe.f,\n zt = function (e, t) {\n var n,\n r,\n o,\n i,\n c,\n a = e.target,\n s = e.global,\n u = e.stat;\n if (n = s ? p : u ? p[a] || he(a, {}) : (p[a] || {}).prototype) for (r in t) {\n if (i = t[r], o = e.dontCallGetSet ? (c = Vt(n, r)) && c.value : n[r], !Jt(s ? r : a + (u ? \".\" : \"#\") + r, e.forced) && void 0 !== o) {\n if (typeof i == typeof o) continue;\n Ft(i, o);\n }\n (e.sham || o && o.sham) && Ve(i, \"sham\", !0), mt(n, r, i, e);\n }\n },\n Mt = {};\nMt[Ce(\"toStringTag\")] = \"z\";\nvar Bt,\n Qt = \"[object z]\" === String(Mt),\n qt = Ce(\"toStringTag\"),\n $t = Object,\n en = \"Arguments\" == Z(function () {\n return arguments;\n }()),\n tn = Qt ? Z : function (e) {\n var t, n, r;\n return void 0 === e ? \"Undefined\" : null === e ? \"Null\" : \"string\" == typeof (n = function (e, t) {\n try {\n return e[t];\n } catch (e) {}\n }(t = $t(e), qt)) ? n : en ? Z(t) : \"Object\" == (r = Z(t)) && H(t.callee) ? \"Arguments\" : r;\n },\n nn = String,\n rn = function (e) {\n if (\"Symbol\" === tn(e)) throw TypeError(\"Cannot convert a Symbol value to a string\");\n return nn(e);\n },\n on = Ce(\"match\"),\n cn = TypeError,\n an = function (e) {\n if (function (e) {\n var t;\n return J(e) && (void 0 !== (t = e[on]) ? !!t : \"RegExp\" == Z(e));\n }(e)) throw cn(\"The method doesn't accept regular expressions\");\n return e;\n },\n sn = Ce(\"match\"),\n un = function (e) {\n var t = /./;\n try {\n \"/./\"[e](t);\n } catch (n) {\n try {\n return t[sn] = !1, \"/./\"[e](t);\n } catch (e) {}\n }\n return !1;\n },\n ln = Xe.f,\n fn = L(\"\".startsWith),\n dn = L(\"\".slice),\n hn = Math.min,\n pn = un(\"startsWith\"),\n yn = !(pn || (Bt = ln(String.prototype, \"startsWith\"), !Bt || Bt.writable));\nzt({\n target: \"String\",\n proto: !0,\n forced: !yn && !pn\n}, {\n startsWith: function (e) {\n var t = rn(F(this));\n an(e);\n var n = xt(hn(arguments.length > 1 ? arguments[1] : void 0, t.length)),\n r = rn(e);\n return fn ? fn(t, r, n) : dn(t, n, n + r.length) === r;\n }\n});\nvar vn = function (e, t) {\n return L(p[e].prototype[t]);\n};\nvn(\"String\", \"startsWith\");\nvar mn = Array.isArray || function (e) {\n return \"Array\" == Z(e);\n },\n bn = TypeError,\n gn = function (e) {\n if (e > 9007199254740991) throw bn(\"Maximum allowed index exceeded\");\n return e;\n },\n wn = function (e, t, n) {\n var r = We(t);\n r in e ? Je.f(e, r, I(0, n)) : e[r] = n;\n },\n Sn = function () {},\n kn = [],\n _n = z(\"Reflect\", \"construct\"),\n In = /^\\s*(?:class|function)\\b/,\n On = L(In.exec),\n xn = !In.exec(Sn),\n Tn = function (e) {\n if (!H(e)) return !1;\n try {\n return _n(Sn, kn, e), !0;\n } catch (e) {\n return !1;\n }\n },\n Cn = function (e) {\n if (!H(e)) return !1;\n switch (tn(e)) {\n case \"AsyncFunction\":\n case \"GeneratorFunction\":\n case \"AsyncGeneratorFunction\":\n return !1;\n }\n try {\n return xn || !!On(In, nt(e));\n } catch (e) {\n return !0;\n }\n };\nCn.sham = !0;\nvar jn,\n Ln = !_n || y(function () {\n var e;\n return Tn(Tn.call) || !Tn(Object) || !Tn(function () {\n e = !0;\n }) || e;\n }) ? Cn : Tn,\n Rn = Ce(\"species\"),\n Wn = Array,\n Zn = function (e, t) {\n return new (function (e) {\n var t;\n return mn(e) && (t = e.constructor, (Ln(t) && (t === Wn || mn(t.prototype)) || J(t) && null === (t = t[Rn])) && (t = void 0)), void 0 === t ? Wn : t;\n }(e))(0 === t ? 0 : t);\n },\n En = Ce(\"species\"),\n Gn = Ce(\"isConcatSpreadable\"),\n An = te >= 51 || !y(function () {\n var e = [];\n return e[Gn] = !1, e.concat()[0] !== e;\n }),\n Pn = (jn = \"concat\", te >= 51 || !y(function () {\n var e = [];\n return (e.constructor = {})[En] = function () {\n return {\n foo: 1\n };\n }, 1 !== e[jn](Boolean).foo;\n })),\n Xn = function (e) {\n if (!J(e)) return !1;\n var t = e[Gn];\n return void 0 !== t ? !!t : mn(e);\n };\nzt({\n target: \"Array\",\n proto: !0,\n arity: 1,\n forced: !An || !Pn\n}, {\n concat: function (e) {\n var t,\n n,\n r,\n o,\n i,\n c = me(this),\n a = Zn(c, 0),\n s = 0;\n for (t = -1, r = arguments.length; t < r; t++) if (Xn(i = -1 === t ? c : arguments[t])) for (o = Tt(i), gn(s + o), n = 0; n < o; n++, s++) n in i && wn(a, s, i[n]);else gn(s + 1), wn(a, s++, i);\n return a.length = s, a;\n }\n});\nvar Fn = Qt ? {}.toString : function () {\n return \"[object \" + tn(this) + \"]\";\n};\nQt || mt(Object.prototype, \"toString\", Fn, {\n unsafe: !0\n});\nvar Kn,\n Nn = Object.keys || function (e) {\n return Wt(e, Zt);\n },\n Un = v && !Fe ? Object.defineProperties : function (e, t) {\n Ue(e);\n for (var n, r = K(t), o = Nn(t), i = o.length, c = 0; i > c;) Je.f(e, n = o[c++], r[n]);\n return e;\n },\n Dn = {\n f: Un\n },\n Hn = z(\"document\", \"documentElement\"),\n Yn = ct(\"IE_PROTO\"),\n Jn = function () {},\n Vn = function (e) {\n return \"<script>\" + e + \"<\\/script>\";\n },\n zn = function (e) {\n e.write(Vn(\"\")), e.close();\n var t = e.parentWindow.Object;\n return e = null, t;\n },\n Mn = function () {\n try {\n Kn = new ActiveXObject(\"htmlfile\");\n } catch (e) {}\n var e, t;\n Mn = \"undefined\" != typeof document ? document.domain && Kn ? zn(Kn) : ((t = Ge(\"iframe\")).style.display = \"none\", Hn.appendChild(t), t.src = String(\"javascript:\"), (e = t.contentWindow.document).open(), e.write(Vn(\"document.F=Object\")), e.close(), e.F) : zn(Kn);\n for (var n = Zt.length; n--;) delete Mn.prototype[Zt[n]];\n return Mn();\n };\nat[Yn] = !0;\nvar Bn = Object.create || function (e, t) {\n var n;\n return null !== e ? (Jn.prototype = Ue(e), n = new Jn(), Jn.prototype = null, n[Yn] = e) : n = Mn(), void 0 === t ? n : Dn.f(n, t);\n },\n Qn = Array,\n qn = Math.max,\n $n = Gt.f,\n er = \"object\" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],\n tr = function (e) {\n try {\n return $n(e);\n } catch (e) {\n return function (e, t, n) {\n for (var r = Tt(e), o = It(t, r), i = It(void 0 === n ? r : n, r), c = Qn(qn(i - o, 0)), a = 0; o < i; o++, a++) wn(c, a, e[o]);\n return c.length = a, c;\n }(er);\n }\n },\n nr = {\n f: function (e) {\n return er && \"Window\" == Z(e) ? tr(e) : $n(K(e));\n }\n },\n rr = {\n f: Ce\n },\n or = p,\n ir = Je.f,\n cr = function (e) {\n var t = or.Symbol || (or.Symbol = {});\n ge(t, e) || ir(t, e, {\n value: rr.f(e)\n });\n },\n ar = function () {\n var e = z(\"Symbol\"),\n t = e && e.prototype,\n n = t && t.valueOf,\n r = Ce(\"toPrimitive\");\n t && !t[r] && mt(t, r, function (e) {\n return g(n, this);\n }, {\n arity: 1\n });\n },\n sr = Je.f,\n ur = Ce(\"toStringTag\"),\n lr = function (e, t, n) {\n e && !n && (e = e.prototype), e && !ge(e, ur) && sr(e, ur, {\n configurable: !0,\n value: t\n });\n },\n fr = L(L.bind),\n dr = function (e, t) {\n return ue(e), void 0 === t ? e : m ? fr(e, t) : function () {\n return e.apply(t, arguments);\n };\n },\n hr = L([].push),\n pr = function (e) {\n var t = 1 == e,\n n = 2 == e,\n r = 3 == e,\n o = 4 == e,\n i = 6 == e,\n c = 7 == e,\n a = 5 == e || i;\n return function (s, u, l, f) {\n for (var d, h, p = me(s), y = A(p), v = dr(u, l), m = Tt(y), b = 0, g = f || Zn, w = t ? g(s, m) : n || c ? g(s, 0) : void 0; m > b; b++) if ((a || b in y) && (h = v(d = y[b], b, p), e)) if (t) w[b] = h;else if (h) switch (e) {\n case 3:\n return !0;\n case 5:\n return d;\n case 6:\n return b;\n case 2:\n hr(w, d);\n } else switch (e) {\n case 4:\n return !1;\n case 7:\n hr(w, d);\n }\n return i ? -1 : r || o ? o : w;\n };\n },\n yr = {\n forEach: pr(0),\n map: pr(1),\n filter: pr(2),\n some: pr(3),\n every: pr(4),\n find: pr(5),\n findIndex: pr(6),\n filterReject: pr(7)\n }.forEach,\n vr = ct(\"hidden\"),\n mr = yt.set,\n br = yt.getterFor(\"Symbol\"),\n gr = Object.prototype,\n wr = p.Symbol,\n Sr = wr && wr.prototype,\n kr = p.TypeError,\n _r = p.QObject,\n Ir = Xe.f,\n Or = Je.f,\n xr = nr.f,\n Tr = _.f,\n Cr = L([].push),\n jr = ye(\"symbols\"),\n Lr = ye(\"op-symbols\"),\n Rr = ye(\"wks\"),\n Wr = !_r || !_r.prototype || !_r.prototype.findChild,\n Zr = v && y(function () {\n return 7 != Bn(Or({}, \"a\", {\n get: function () {\n return Or(this, \"a\", {\n value: 7\n }).a;\n }\n })).a;\n }) ? function (e, t, n) {\n var r = Ir(gr, t);\n r && delete gr[t], Or(e, t, n), r && e !== gr && Or(gr, t, r);\n } : Or,\n Er = function (e, t) {\n var n = jr[e] = Bn(Sr);\n return mr(n, {\n type: \"Symbol\",\n tag: e,\n description: t\n }), v || (n.description = t), n;\n },\n Gr = function (e, t, n) {\n e === gr && Gr(Lr, t, n), Ue(e);\n var r = We(t);\n return Ue(n), ge(jr, r) ? (n.enumerable ? (ge(e, vr) && e[vr][r] && (e[vr][r] = !1), n = Bn(n, {\n enumerable: I(0, !1)\n })) : (ge(e, vr) || Or(e, vr, I(1, {})), e[vr][r] = !0), Zr(e, r, n)) : Or(e, r, n);\n },\n Ar = function (e, t) {\n Ue(e);\n var n = K(t),\n r = Nn(n).concat(Kr(n));\n return yr(r, function (t) {\n v && !g(Pr, n, t) || Gr(e, t, n[t]);\n }), e;\n },\n Pr = function (e) {\n var t = We(e),\n n = g(Tr, this, t);\n return !(this === gr && ge(jr, t) && !ge(Lr, t)) && (!(n || !ge(this, t) || !ge(jr, t) || ge(this, vr) && this[vr][t]) || n);\n },\n Xr = function (e, t) {\n var n = K(e),\n r = We(t);\n if (n !== gr || !ge(jr, r) || ge(Lr, r)) {\n var o = Ir(n, r);\n return !o || !ge(jr, r) || ge(n, vr) && n[vr][r] || (o.enumerable = !0), o;\n }\n },\n Fr = function (e) {\n var t = xr(K(e)),\n n = [];\n return yr(t, function (e) {\n ge(jr, e) || ge(at, e) || Cr(n, e);\n }), n;\n },\n Kr = function (e) {\n var t = e === gr,\n n = xr(t ? Lr : K(e)),\n r = [];\n return yr(n, function (e) {\n !ge(jr, e) || t && !ge(gr, e) || Cr(r, jr[e]);\n }), r;\n };\nne || (Sr = (wr = function () {\n if (M(Sr, this)) throw kr(\"Symbol is not a constructor\");\n var e = arguments.length && void 0 !== arguments[0] ? rn(arguments[0]) : void 0,\n t = _e(e),\n n = function (e) {\n this === gr && g(n, Lr, e), ge(this, vr) && ge(this[vr], t) && (this[vr][t] = !1), Zr(this, t, I(1, e));\n };\n return v && Wr && Zr(gr, t, {\n configurable: !0,\n set: n\n }), Er(t, e);\n}).prototype, mt(Sr, \"toString\", function () {\n return br(this).tag;\n}), mt(wr, \"withoutSetter\", function (e) {\n return Er(_e(e), e);\n}), _.f = Pr, Je.f = Gr, Dn.f = Ar, Xe.f = Xr, Gt.f = nr.f = Fr, At.f = Kr, rr.f = function (e) {\n return Er(Ce(e), e);\n}, v && (Or(Sr, \"description\", {\n configurable: !0,\n get: function () {\n return br(this).description;\n }\n}), mt(gr, \"propertyIsEnumerable\", Pr, {\n unsafe: !0\n}))), zt({\n global: !0,\n constructor: !0,\n wrap: !0,\n forced: !ne,\n sham: !ne\n}, {\n Symbol: wr\n}), yr(Nn(Rr), function (e) {\n cr(e);\n}), zt({\n target: \"Symbol\",\n stat: !0,\n forced: !ne\n}, {\n useSetter: function () {\n Wr = !0;\n },\n useSimple: function () {\n Wr = !1;\n }\n}), zt({\n target: \"Object\",\n stat: !0,\n forced: !ne,\n sham: !v\n}, {\n create: function (e, t) {\n return void 0 === t ? Bn(e) : Ar(Bn(e), t);\n },\n defineProperty: Gr,\n defineProperties: Ar,\n getOwnPropertyDescriptor: Xr\n}), zt({\n target: \"Object\",\n stat: !0,\n forced: !ne\n}, {\n getOwnPropertyNames: Fr\n}), ar(), lr(wr, \"Symbol\"), at[vr] = !0;\nvar Nr = ne && !!Symbol.for && !!Symbol.keyFor,\n Ur = ye(\"string-to-symbol-registry\"),\n Dr = ye(\"symbol-to-string-registry\");\nzt({\n target: \"Symbol\",\n stat: !0,\n forced: !Nr\n}, {\n for: function (e) {\n var t = rn(e);\n if (ge(Ur, t)) return Ur[t];\n var n = z(\"Symbol\")(t);\n return Ur[t] = n, Dr[n] = t, n;\n }\n});\nvar Hr = ye(\"symbol-to-string-registry\");\nzt({\n target: \"Symbol\",\n stat: !0,\n forced: !Nr\n}, {\n keyFor: function (e) {\n if (!ie(e)) throw TypeError(ae(e) + \" is not a symbol\");\n if (ge(Hr, e)) return Hr[e];\n }\n});\nvar Yr = Function.prototype,\n Jr = Yr.apply,\n Vr = Yr.call,\n zr = \"object\" == typeof Reflect && Reflect.apply || (m ? Vr.bind(Jr) : function () {\n return Vr.apply(Jr, arguments);\n }),\n Mr = L([].slice),\n Br = z(\"JSON\", \"stringify\"),\n Qr = L(/./.exec),\n qr = L(\"\".charAt),\n $r = L(\"\".charCodeAt),\n eo = L(\"\".replace),\n to = L(1..toString),\n no = /[\\uD800-\\uDFFF]/g,\n ro = /^[\\uD800-\\uDBFF]$/,\n oo = /^[\\uDC00-\\uDFFF]$/,\n io = !ne || y(function () {\n var e = z(\"Symbol\")();\n return \"[null]\" != Br([e]) || \"{}\" != Br({\n a: e\n }) || \"{}\" != Br(Object(e));\n }),\n co = y(function () {\n return '\"\\\\udf06\\\\ud834\"' !== Br(\"\\udf06\\ud834\") || '\"\\\\udead\"' !== Br(\"\\udead\");\n }),\n ao = function (e, t) {\n var n = Mr(arguments),\n r = t;\n if ((J(t) || void 0 !== e) && !ie(e)) return mn(t) || (t = function (e, t) {\n if (H(r) && (t = g(r, this, e, t)), !ie(t)) return t;\n }), n[1] = t, zr(Br, null, n);\n },\n so = function (e, t, n) {\n var r = qr(n, t - 1),\n o = qr(n, t + 1);\n return Qr(ro, e) && !Qr(oo, o) || Qr(oo, e) && !Qr(ro, r) ? \"\\\\u\" + to($r(e, 0), 16) : e;\n };\nBr && zt({\n target: \"JSON\",\n stat: !0,\n arity: 3,\n forced: io || co\n}, {\n stringify: function (e, t, n) {\n var r = Mr(arguments),\n o = zr(io ? ao : Br, null, r);\n return co && \"string\" == typeof o ? eo(o, no, so) : o;\n }\n});\nvar uo = !ne || y(function () {\n At.f(1);\n});\nzt({\n target: \"Object\",\n stat: !0,\n forced: uo\n}, {\n getOwnPropertySymbols: function (e) {\n var t = At.f;\n return t ? t(me(e)) : [];\n }\n}), cr(\"asyncIterator\");\nvar lo = Je.f,\n fo = p.Symbol,\n ho = fo && fo.prototype;\nif (v && H(fo) && (!(\"description\" in ho) || void 0 !== fo().description)) {\n var po = {},\n yo = function () {\n var e = arguments.length < 1 || void 0 === arguments[0] ? void 0 : rn(arguments[0]),\n t = M(ho, this) ? new fo(e) : void 0 === e ? fo() : fo(e);\n return \"\" === e && (po[t] = !0), t;\n };\n Ft(yo, fo), yo.prototype = ho, ho.constructor = yo;\n var vo = \"Symbol(test)\" == String(fo(\"test\")),\n mo = L(ho.valueOf),\n bo = L(ho.toString),\n go = /^Symbol\\((.*)\\)[^)]+$/,\n wo = L(\"\".replace),\n So = L(\"\".slice);\n lo(ho, \"description\", {\n configurable: !0,\n get: function () {\n var e = mo(this);\n if (ge(po, e)) return \"\";\n var t = bo(e),\n n = vo ? So(t, 7, -1) : wo(t, go, \"$1\");\n return \"\" === n ? void 0 : n;\n }\n }), zt({\n global: !0,\n constructor: !0,\n forced: !0\n }, {\n Symbol: yo\n });\n}\ncr(\"hasInstance\"), cr(\"isConcatSpreadable\"), cr(\"iterator\"), cr(\"match\"), cr(\"matchAll\"), cr(\"replace\"), cr(\"search\"), cr(\"species\"), cr(\"split\"), cr(\"toPrimitive\"), ar(), cr(\"toStringTag\"), lr(z(\"Symbol\"), \"Symbol\"), cr(\"unscopables\"), lr(p.JSON, \"JSON\", !0), lr(Math, \"Math\", !0), zt({\n global: !0\n}, {\n Reflect: {}\n}), lr(p.Reflect, \"Reflect\", !0), or.Symbol;\nvar ko,\n _o,\n Io,\n Oo = L(\"\".charAt),\n xo = L(\"\".charCodeAt),\n To = L(\"\".slice),\n Co = function (e) {\n return function (t, n) {\n var r,\n o,\n i = rn(F(t)),\n c = St(n),\n a = i.length;\n return c < 0 || c >= a ? e ? \"\" : void 0 : (r = xo(i, c)) < 55296 || r > 56319 || c + 1 === a || (o = xo(i, c + 1)) < 56320 || o > 57343 ? e ? Oo(i, c) : r : e ? To(i, c, c + 2) : o - 56320 + (r - 55296 << 10) + 65536;\n };\n },\n jo = {\n codeAt: Co(!1),\n charAt: Co(!0)\n },\n Lo = !y(function () {\n function e() {}\n return e.prototype.constructor = null, Object.getPrototypeOf(new e()) !== e.prototype;\n }),\n Ro = ct(\"IE_PROTO\"),\n Wo = Object,\n Zo = Wo.prototype,\n Eo = Lo ? Wo.getPrototypeOf : function (e) {\n var t = me(e);\n if (ge(t, Ro)) return t[Ro];\n var n = t.constructor;\n return H(n) && t instanceof n ? n.prototype : t instanceof Wo ? Zo : null;\n },\n Go = Ce(\"iterator\"),\n Ao = !1;\n[].keys && (\"next\" in (Io = [].keys()) ? (_o = Eo(Eo(Io))) !== Object.prototype && (ko = _o) : Ao = !0);\nvar Po = !J(ko) || y(function () {\n var e = {};\n return ko[Go].call(e) !== e;\n});\nPo && (ko = {}), H(ko[Go]) || mt(ko, Go, function () {\n return this;\n});\nvar Xo = {\n IteratorPrototype: ko,\n BUGGY_SAFARI_ITERATORS: Ao\n },\n Fo = {},\n Ko = Xo.IteratorPrototype,\n No = function () {\n return this;\n },\n Uo = String,\n Do = TypeError,\n Ho = Object.setPrototypeOf || (\"__proto__\" in {} ? function () {\n var e,\n t = !1,\n n = {};\n try {\n (e = L(Object.getOwnPropertyDescriptor(Object.prototype, \"__proto__\").set))(n, []), t = n instanceof Array;\n } catch (e) {}\n return function (n, r) {\n return Ue(n), function (e) {\n if (\"object\" == typeof e || H(e)) return e;\n throw Do(\"Can't set \" + Uo(e) + \" as a prototype\");\n }(r), t ? e(n, r) : n.__proto__ = r, n;\n };\n }() : void 0),\n Yo = Qe.PROPER,\n Jo = Qe.CONFIGURABLE,\n Vo = Xo.IteratorPrototype,\n zo = Xo.BUGGY_SAFARI_ITERATORS,\n Mo = Ce(\"iterator\"),\n Bo = function () {\n return this;\n },\n Qo = function (e, t, n, r, o, i, c) {\n !function (e, t, n, r) {\n var o = t + \" Iterator\";\n e.prototype = Bn(Ko, {\n next: I(+!r, n)\n }), lr(e, o, !1), Fo[o] = No;\n }(n, t, r);\n var a,\n s,\n u,\n l = function (e) {\n if (e === o && y) return y;\n if (!zo && e in h) return h[e];\n switch (e) {\n case \"keys\":\n case \"values\":\n case \"entries\":\n return function () {\n return new n(this, e);\n };\n }\n return function () {\n return new n(this);\n };\n },\n f = t + \" Iterator\",\n d = !1,\n h = e.prototype,\n p = h[Mo] || h[\"@@iterator\"] || o && h[o],\n y = !zo && p || l(o),\n v = \"Array\" == t && h.entries || p;\n if (v && (a = Eo(v.call(new e()))) !== Object.prototype && a.next && (Eo(a) !== Vo && (Ho ? Ho(a, Vo) : H(a[Mo]) || mt(a, Mo, Bo)), lr(a, f, !0)), Yo && \"values\" == o && p && \"values\" !== p.name && (Jo ? Ve(h, \"name\", \"values\") : (d = !0, y = function () {\n return g(p, this);\n })), o) if (s = {\n values: l(\"values\"),\n keys: i ? y : l(\"keys\"),\n entries: l(\"entries\")\n }, c) for (u in s) (zo || d || !(u in h)) && mt(h, u, s[u]);else zt({\n target: t,\n proto: !0,\n forced: zo || d\n }, s);\n return h[Mo] !== y && mt(h, Mo, y, {\n name: o\n }), Fo[t] = y, s;\n },\n qo = function (e, t) {\n return {\n value: e,\n done: t\n };\n },\n $o = jo.charAt,\n ei = yt.set,\n ti = yt.getterFor(\"String Iterator\");\nQo(String, \"String\", function (e) {\n ei(this, {\n type: \"String Iterator\",\n string: rn(e),\n index: 0\n });\n}, function () {\n var e,\n t = ti(this),\n n = t.string,\n r = t.index;\n return r >= n.length ? qo(void 0, !0) : (e = $o(n, r), t.index += e.length, qo(e, !1));\n});\nvar ni = function (e, t, n) {\n var r, o;\n Ue(e);\n try {\n if (!(r = le(e, \"return\"))) {\n if (\"throw\" === t) throw n;\n return n;\n }\n r = g(r, e);\n } catch (e) {\n o = !0, r = e;\n }\n if (\"throw\" === t) throw n;\n if (o) throw r;\n return Ue(r), n;\n },\n ri = function (e, t, n, r) {\n try {\n return r ? t(Ue(n)[0], n[1]) : t(n);\n } catch (t) {\n ni(e, \"throw\", t);\n }\n },\n oi = Ce(\"iterator\"),\n ii = Array.prototype,\n ci = function (e) {\n return void 0 !== e && (Fo.Array === e || ii[oi] === e);\n },\n ai = Ce(\"iterator\"),\n si = function (e) {\n if (!P(e)) return le(e, ai) || le(e, \"@@iterator\") || Fo[tn(e)];\n },\n ui = TypeError,\n li = function (e, t) {\n var n = arguments.length < 2 ? si(e) : t;\n if (ue(n)) return Ue(g(n, e));\n throw ui(ae(e) + \" is not iterable\");\n },\n fi = Array,\n di = Ce(\"iterator\"),\n hi = !1;\ntry {\n var pi = 0,\n yi = {\n next: function () {\n return {\n done: !!pi++\n };\n },\n return: function () {\n hi = !0;\n }\n };\n yi[di] = function () {\n return this;\n }, Array.from(yi, function () {\n throw 2;\n });\n} catch (e) {}\nvar vi = function (e, t) {\n if (!t && !hi) return !1;\n var n = !1;\n try {\n var r = {};\n r[di] = function () {\n return {\n next: function () {\n return {\n done: n = !0\n };\n }\n };\n }, e(r);\n } catch (e) {}\n return n;\n },\n mi = !vi(function (e) {\n Array.from(e);\n });\nzt({\n target: \"Array\",\n stat: !0,\n forced: mi\n}, {\n from: function (e) {\n var t = me(e),\n n = Ln(this),\n r = arguments.length,\n o = r > 1 ? arguments[1] : void 0,\n i = void 0 !== o;\n i && (o = dr(o, r > 2 ? arguments[2] : void 0));\n var c,\n a,\n s,\n u,\n l,\n f,\n d = si(t),\n h = 0;\n if (!d || this === fi && ci(d)) for (c = Tt(t), a = n ? new this(c) : fi(c); c > h; h++) f = i ? o(t[h], h) : t[h], wn(a, h, f);else for (l = (u = li(t, d)).next, a = n ? new this() : []; !(s = g(l, u)).done; h++) f = i ? ri(u, o, [s.value, h], !0) : s.value, wn(a, h, f);\n return a.length = h, a;\n }\n}), or.Array.from;\nvar bi,\n gi,\n wi,\n Si = \"undefined\" != typeof ArrayBuffer && \"undefined\" != typeof DataView,\n ki = Je.f,\n _i = yt.enforce,\n Ii = yt.get,\n Oi = p.Int8Array,\n xi = Oi && Oi.prototype,\n Ti = p.Uint8ClampedArray,\n Ci = Ti && Ti.prototype,\n ji = Oi && Eo(Oi),\n Li = xi && Eo(xi),\n Ri = Object.prototype,\n Wi = p.TypeError,\n Zi = Ce(\"toStringTag\"),\n Ei = _e(\"TYPED_ARRAY_TAG\"),\n Gi = Si && !!Ho && \"Opera\" !== tn(p.opera),\n Ai = !1,\n Pi = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n },\n Xi = {\n BigInt64Array: 8,\n BigUint64Array: 8\n },\n Fi = function (e) {\n var t = Eo(e);\n if (J(t)) {\n var n = Ii(t);\n return n && ge(n, \"TypedArrayConstructor\") ? n.TypedArrayConstructor : Fi(t);\n }\n },\n Ki = function (e) {\n if (!J(e)) return !1;\n var t = tn(e);\n return ge(Pi, t) || ge(Xi, t);\n };\nfor (bi in Pi) (wi = (gi = p[bi]) && gi.prototype) ? _i(wi).TypedArrayConstructor = gi : Gi = !1;\nfor (bi in Xi) (wi = (gi = p[bi]) && gi.prototype) && (_i(wi).TypedArrayConstructor = gi);\nif ((!Gi || !H(ji) || ji === Function.prototype) && (ji = function () {\n throw Wi(\"Incorrect invocation\");\n}, Gi)) for (bi in Pi) p[bi] && Ho(p[bi], ji);\nif ((!Gi || !Li || Li === Ri) && (Li = ji.prototype, Gi)) for (bi in Pi) p[bi] && Ho(p[bi].prototype, Li);\nif (Gi && Eo(Ci) !== Li && Ho(Ci, Li), v && !ge(Li, Zi)) for (bi in Ai = !0, ki(Li, Zi, {\n get: function () {\n return J(this) ? this[Ei] : void 0;\n }\n}), Pi) p[bi] && Ve(p[bi], Ei, bi);\nvar Ni = {\n NATIVE_ARRAY_BUFFER_VIEWS: Gi,\n TYPED_ARRAY_TAG: Ai && Ei,\n aTypedArray: function (e) {\n if (Ki(e)) return e;\n throw Wi(\"Target is not a typed array\");\n },\n aTypedArrayConstructor: function (e) {\n if (H(e) && (!Ho || M(ji, e))) return e;\n throw Wi(ae(e) + \" is not a typed array constructor\");\n },\n exportTypedArrayMethod: function (e, t, n, r) {\n if (v) {\n if (n) for (var o in Pi) {\n var i = p[o];\n if (i && ge(i.prototype, e)) try {\n delete i.prototype[e];\n } catch (n) {\n try {\n i.prototype[e] = t;\n } catch (e) {}\n }\n }\n Li[e] && !n || mt(Li, e, n ? t : Gi && xi[e] || t, r);\n }\n },\n exportTypedArrayStaticMethod: function (e, t, n) {\n var r, o;\n if (v) {\n if (Ho) {\n if (n) for (r in Pi) if ((o = p[r]) && ge(o, e)) try {\n delete o[e];\n } catch (e) {}\n if (ji[e] && !n) return;\n try {\n return mt(ji, e, n ? t : Gi && ji[e] || t);\n } catch (e) {}\n }\n for (r in Pi) !(o = p[r]) || o[e] && !n || mt(o, e, t);\n }\n },\n getTypedArrayConstructor: Fi,\n isView: function (e) {\n if (!J(e)) return !1;\n var t = tn(e);\n return \"DataView\" === t || ge(Pi, t) || ge(Xi, t);\n },\n isTypedArray: Ki,\n TypedArray: ji,\n TypedArrayPrototype: Li\n },\n Ui = TypeError,\n Di = Ce(\"species\"),\n Hi = function (e, t) {\n var n,\n r = Ue(e).constructor;\n return void 0 === r || P(n = Ue(r)[Di]) ? t : function (e) {\n if (Ln(e)) return e;\n throw Ui(ae(e) + \" is not a constructor\");\n }(n);\n },\n Yi = Ni.aTypedArrayConstructor,\n Ji = Ni.getTypedArrayConstructor,\n Vi = Ni.aTypedArray;\n(0, Ni.exportTypedArrayMethod)(\"slice\", function (e, t) {\n for (var n, r = Mr(Vi(this), e, t), o = Yi(Hi(n = this, Ji(n))), i = 0, c = r.length, a = new o(c); c > i;) a[i] = r[i++];\n return a;\n}, y(function () {\n new Int8Array(1).slice();\n}));\nvar zi = Je.f,\n Mi = Ce(\"unscopables\"),\n Bi = Array.prototype;\nnull == Bi[Mi] && zi(Bi, Mi, {\n configurable: !0,\n value: Bn(null)\n});\nvar Qi = function (e) {\n Bi[Mi][e] = !0;\n },\n qi = jt.includes,\n $i = y(function () {\n return !Array(1).includes();\n });\nzt({\n target: \"Array\",\n proto: !0,\n forced: $i\n}, {\n includes: function (e) {\n return qi(this, e, arguments.length > 1 ? arguments[1] : void 0);\n }\n}), Qi(\"includes\"), vn(\"Array\", \"includes\");\nvar ec = L(\"\".indexOf);\nzt({\n target: \"String\",\n proto: !0,\n forced: !un(\"includes\")\n}, {\n includes: function (e) {\n return !!~ec(rn(F(this)), rn(an(e)), arguments.length > 1 ? arguments[1] : void 0);\n }\n}), vn(\"String\", \"includes\");\nvar tc = Je.f,\n nc = yt.set,\n rc = yt.getterFor(\"Array Iterator\");\nQo(Array, \"Array\", function (e, t) {\n nc(this, {\n type: \"Array Iterator\",\n target: K(e),\n index: 0,\n kind: t\n });\n}, function () {\n var e = rc(this),\n t = e.target,\n n = e.kind,\n r = e.index++;\n return !t || r >= t.length ? (e.target = void 0, qo(void 0, !0)) : qo(\"keys\" == n ? r : \"values\" == n ? t[r] : [r, t[r]], !1);\n}, \"values\");\nvar oc = Fo.Arguments = Fo.Array;\nif (Qi(\"keys\"), Qi(\"values\"), Qi(\"entries\"), v && \"values\" !== oc.name) try {\n tc(oc, \"name\", {\n value: \"values\"\n });\n} catch (e) {}\nvar ic = y(function () {\n if (\"function\" == typeof ArrayBuffer) {\n var e = new ArrayBuffer(8);\n Object.isExtensible(e) && Object.defineProperty(e, \"a\", {\n value: 8\n });\n }\n }),\n cc = Object.isExtensible,\n ac = y(function () {\n cc(1);\n }) || ic ? function (e) {\n return !!J(e) && (!ic || \"ArrayBuffer\" != Z(e)) && (!cc || cc(e));\n } : cc,\n sc = !y(function () {\n return Object.isExtensible(Object.preventExtensions({}));\n }),\n uc = l(function (e) {\n var t = Je.f,\n n = !1,\n r = _e(\"meta\"),\n o = 0,\n i = function (e) {\n t(e, r, {\n value: {\n objectID: \"O\" + o++,\n weakData: {}\n }\n });\n },\n c = e.exports = {\n enable: function () {\n c.enable = function () {}, n = !0;\n var e = Gt.f,\n t = L([].splice),\n o = {};\n o[r] = 1, e(o).length && (Gt.f = function (n) {\n for (var o = e(n), i = 0, c = o.length; i < c; i++) if (o[i] === r) {\n t(o, i, 1);\n break;\n }\n return o;\n }, zt({\n target: \"Object\",\n stat: !0,\n forced: !0\n }, {\n getOwnPropertyNames: nr.f\n }));\n },\n fastKey: function (e, t) {\n if (!J(e)) return \"symbol\" == typeof e ? e : (\"string\" == typeof e ? \"S\" : \"P\") + e;\n if (!ge(e, r)) {\n if (!ac(e)) return \"F\";\n if (!t) return \"E\";\n i(e);\n }\n return e[r].objectID;\n },\n getWeakData: function (e, t) {\n if (!ge(e, r)) {\n if (!ac(e)) return !0;\n if (!t) return !1;\n i(e);\n }\n return e[r].weakData;\n },\n onFreeze: function (e) {\n return sc && n && ac(e) && !ge(e, r) && i(e), e;\n }\n };\n at[r] = !0;\n });\nuc.enable, uc.fastKey, uc.getWeakData, uc.onFreeze;\nvar lc = TypeError,\n fc = function (e, t) {\n this.stopped = e, this.result = t;\n },\n dc = fc.prototype,\n hc = function (e, t, n) {\n var r,\n o,\n i,\n c,\n a,\n s,\n u,\n l = n && n.that,\n f = !(!n || !n.AS_ENTRIES),\n d = !(!n || !n.IS_RECORD),\n h = !(!n || !n.IS_ITERATOR),\n p = !(!n || !n.INTERRUPTED),\n y = dr(t, l),\n v = function (e) {\n return r && ni(r, \"normal\", e), new fc(!0, e);\n },\n m = function (e) {\n return f ? (Ue(e), p ? y(e[0], e[1], v) : y(e[0], e[1])) : p ? y(e, v) : y(e);\n };\n if (d) r = e.iterator;else if (h) r = e;else {\n if (!(o = si(e))) throw lc(ae(e) + \" is not iterable\");\n if (ci(o)) {\n for (i = 0, c = Tt(e); c > i; i++) if ((a = m(e[i])) && M(dc, a)) return a;\n return new fc(!1);\n }\n r = li(e, o);\n }\n for (s = d ? e.next : r.next; !(u = g(s, r)).done;) {\n try {\n a = m(u.value);\n } catch (e) {\n ni(r, \"throw\", e);\n }\n if (\"object\" == typeof a && a && M(dc, a)) return a;\n }\n return new fc(!1);\n },\n pc = TypeError,\n yc = function (e, t) {\n if (M(t, e)) return e;\n throw pc(\"Incorrect invocation\");\n },\n vc = function (e, t, n) {\n for (var r in t) mt(e, r, t[r], n);\n return e;\n },\n mc = Ce(\"species\"),\n bc = Je.f,\n gc = uc.fastKey,\n wc = yt.set,\n Sc = yt.getterFor,\n kc = {\n getConstructor: function (e, t, n, r) {\n var o = e(function (e, o) {\n yc(e, i), wc(e, {\n type: t,\n index: Bn(null),\n first: void 0,\n last: void 0,\n size: 0\n }), v || (e.size = 0), P(o) || hc(o, e[r], {\n that: e,\n AS_ENTRIES: n\n });\n }),\n i = o.prototype,\n c = Sc(t),\n a = function (e, t, n) {\n var r,\n o,\n i = c(e),\n a = s(e, t);\n return a ? a.value = n : (i.last = a = {\n index: o = gc(t, !0),\n key: t,\n value: n,\n previous: r = i.last,\n next: void 0,\n removed: !1\n }, i.first || (i.first = a), r && (r.next = a), v ? i.size++ : e.size++, \"F\" !== o && (i.index[o] = a)), e;\n },\n s = function (e, t) {\n var n,\n r = c(e),\n o = gc(t);\n if (\"F\" !== o) return r.index[o];\n for (n = r.first; n; n = n.next) if (n.key == t) return n;\n };\n return vc(i, {\n clear: function () {\n for (var e = c(this), t = e.index, n = e.first; n;) n.removed = !0, n.previous && (n.previous = n.previous.next = void 0), delete t[n.index], n = n.next;\n e.first = e.last = void 0, v ? e.size = 0 : this.size = 0;\n },\n delete: function (e) {\n var t = this,\n n = c(t),\n r = s(t, e);\n if (r) {\n var o = r.next,\n i = r.previous;\n delete n.index[r.index], r.removed = !0, i && (i.next = o), o && (o.previous = i), n.first == r && (n.first = o), n.last == r && (n.last = i), v ? n.size-- : t.size--;\n }\n return !!r;\n },\n forEach: function (e) {\n for (var t, n = c(this), r = dr(e, arguments.length > 1 ? arguments[1] : void 0); t = t ? t.next : n.first;) for (r(t.value, t.key, this); t && t.removed;) t = t.previous;\n },\n has: function (e) {\n return !!s(this, e);\n }\n }), vc(i, n ? {\n get: function (e) {\n var t = s(this, e);\n return t && t.value;\n },\n set: function (e, t) {\n return a(this, 0 === e ? 0 : e, t);\n }\n } : {\n add: function (e) {\n return a(this, e = 0 === e ? 0 : e, e);\n }\n }), v && bc(i, \"size\", {\n get: function () {\n return c(this).size;\n }\n }), o;\n },\n setStrong: function (e, t, n) {\n var r = t + \" Iterator\",\n o = Sc(t),\n i = Sc(r);\n Qo(e, t, function (e, t) {\n wc(this, {\n type: r,\n target: e,\n state: o(e),\n kind: t,\n last: void 0\n });\n }, function () {\n for (var e = i(this), t = e.kind, n = e.last; n && n.removed;) n = n.previous;\n return e.target && (e.last = n = n ? n.next : e.state.first) ? qo(\"keys\" == t ? n.key : \"values\" == t ? n.value : [n.key, n.value], !1) : (e.target = void 0, qo(void 0, !0));\n }, n ? \"entries\" : \"values\", !n, !0), function (e) {\n var t = z(e),\n n = Je.f;\n v && t && !t[mc] && n(t, mc, {\n configurable: !0,\n get: function () {\n return this;\n }\n });\n }(t);\n }\n };\nfunction _c(e) {\n var t = this.constructor;\n return this.then(function (n) {\n return t.resolve(e()).then(function () {\n return n;\n });\n }, function (n) {\n return t.resolve(e()).then(function () {\n return t.reject(n);\n });\n });\n}\nfunction Ic(e) {\n return new this(function (t, n) {\n if (!e || void 0 === e.length) return n(new TypeError(typeof e + \" \" + e + \" is not iterable(cannot read property Symbol(Symbol.iterator))\"));\n var r = Array.prototype.slice.call(e);\n if (0 === r.length) return t([]);\n var o = r.length;\n function i(e, n) {\n if (n && (\"object\" == typeof n || \"function\" == typeof n)) {\n var c = n.then;\n if (\"function\" == typeof c) return void c.call(n, function (t) {\n i(e, t);\n }, function (n) {\n r[e] = {\n status: \"rejected\",\n reason: n\n }, 0 == --o && t(r);\n });\n }\n r[e] = {\n status: \"fulfilled\",\n value: n\n }, 0 == --o && t(r);\n }\n for (var c = 0; c < r.length; c++) i(c, r[c]);\n });\n}\n!function (e, t, n) {\n var r = -1 !== e.indexOf(\"Map\"),\n o = -1 !== e.indexOf(\"Weak\"),\n i = r ? \"set\" : \"add\",\n c = p[e],\n a = c && c.prototype,\n s = c,\n u = {},\n l = function (e) {\n var t = L(a[e]);\n mt(a, e, \"add\" == e ? function (e) {\n return t(this, 0 === e ? 0 : e), this;\n } : \"delete\" == e ? function (e) {\n return !(o && !J(e)) && t(this, 0 === e ? 0 : e);\n } : \"get\" == e ? function (e) {\n return o && !J(e) ? void 0 : t(this, 0 === e ? 0 : e);\n } : \"has\" == e ? function (e) {\n return !(o && !J(e)) && t(this, 0 === e ? 0 : e);\n } : function (e, n) {\n return t(this, 0 === e ? 0 : e, n), this;\n });\n };\n if (Jt(e, !H(c) || !(o || a.forEach && !y(function () {\n new c().entries().next();\n })))) s = n.getConstructor(t, e, r, i), uc.enable();else if (Jt(e, !0)) {\n var f = new s(),\n d = f[i](o ? {} : -0, 1) != f,\n h = y(function () {\n f.has(1);\n }),\n v = vi(function (e) {\n new c(e);\n }),\n m = !o && y(function () {\n for (var e = new c(), t = 5; t--;) e[i](t, t);\n return !e.has(-0);\n });\n v || ((s = t(function (e, t) {\n yc(e, a);\n var n = function (e, t, n) {\n var r, o;\n return Ho && H(r = t.constructor) && r !== n && J(o = r.prototype) && o !== n.prototype && Ho(e, o), e;\n }(new c(), e, s);\n return P(t) || hc(t, n[i], {\n that: n,\n AS_ENTRIES: r\n }), n;\n })).prototype = a, a.constructor = s), (h || m) && (l(\"delete\"), l(\"has\"), r && l(\"get\")), (m || d) && l(i), o && a.clear && delete a.clear;\n }\n u[e] = s, zt({\n global: !0,\n constructor: !0,\n forced: s != c\n }, u), lr(s, e), o || n.setStrong(s, e, r);\n}(\"Set\", function (e) {\n return function () {\n return e(this, arguments.length ? arguments[0] : void 0);\n };\n}, kc), or.Set;\nvar Oc = setTimeout;\nfunction xc(e) {\n return Boolean(e && void 0 !== e.length);\n}\nfunction Tc() {}\nfunction Cc(e) {\n if (!(this instanceof Cc)) throw new TypeError(\"Promises must be constructed via new\");\n if (\"function\" != typeof e) throw new TypeError(\"not a function\");\n this._state = 0, this._handled = !1, this._value = void 0, this._deferreds = [], Ec(e, this);\n}\nfunction jc(e, t) {\n for (; 3 === e._state;) e = e._value;\n 0 !== e._state ? (e._handled = !0, Cc._immediateFn(function () {\n var n = 1 === e._state ? t.onFulfilled : t.onRejected;\n if (null !== n) {\n var r;\n try {\n r = n(e._value);\n } catch (e) {\n return void Rc(t.promise, e);\n }\n Lc(t.promise, r);\n } else (1 === e._state ? Lc : Rc)(t.promise, e._value);\n })) : e._deferreds.push(t);\n}\nfunction Lc(e, t) {\n try {\n if (t === e) throw new TypeError(\"A promise cannot be resolved with itself.\");\n if (t && (\"object\" == typeof t || \"function\" == typeof t)) {\n var n = t.then;\n if (t instanceof Cc) return e._state = 3, e._value = t, void Wc(e);\n if (\"function\" == typeof n) return void Ec((r = n, o = t, function () {\n r.apply(o, arguments);\n }), e);\n }\n e._state = 1, e._value = t, Wc(e);\n } catch (t) {\n Rc(e, t);\n }\n var r, o;\n}\nfunction Rc(e, t) {\n e._state = 2, e._value = t, Wc(e);\n}\nfunction Wc(e) {\n 2 === e._state && 0 === e._deferreds.length && Cc._immediateFn(function () {\n e._handled || Cc._unhandledRejectionFn(e._value);\n });\n for (var t = 0, n = e._deferreds.length; t < n; t++) jc(e, e._deferreds[t]);\n e._deferreds = null;\n}\nfunction Zc(e, t, n) {\n this.onFulfilled = \"function\" == typeof e ? e : null, this.onRejected = \"function\" == typeof t ? t : null, this.promise = n;\n}\nfunction Ec(e, t) {\n var n = !1;\n try {\n e(function (e) {\n n || (n = !0, Lc(t, e));\n }, function (e) {\n n || (n = !0, Rc(t, e));\n });\n } catch (e) {\n if (n) return;\n n = !0, Rc(t, e);\n }\n}\nCc.prototype.catch = function (e) {\n return this.then(null, e);\n}, Cc.prototype.then = function (e, t) {\n var n = new this.constructor(Tc);\n return jc(this, new Zc(e, t, n)), n;\n}, Cc.prototype.finally = _c, Cc.all = function (e) {\n return new Cc(function (t, n) {\n if (!xc(e)) return n(new TypeError(\"Promise.all accepts an array\"));\n var r = Array.prototype.slice.call(e);\n if (0 === r.length) return t([]);\n var o = r.length;\n function i(e, c) {\n try {\n if (c && (\"object\" == typeof c || \"function\" == typeof c)) {\n var a = c.then;\n if (\"function\" == typeof a) return void a.call(c, function (t) {\n i(e, t);\n }, n);\n }\n r[e] = c, 0 == --o && t(r);\n } catch (e) {\n n(e);\n }\n }\n for (var c = 0; c < r.length; c++) i(c, r[c]);\n });\n}, Cc.allSettled = Ic, Cc.resolve = function (e) {\n return e && \"object\" == typeof e && e.constructor === Cc ? e : new Cc(function (t) {\n t(e);\n });\n}, Cc.reject = function (e) {\n return new Cc(function (t, n) {\n n(e);\n });\n}, Cc.race = function (e) {\n return new Cc(function (t, n) {\n if (!xc(e)) return n(new TypeError(\"Promise.race accepts an array\"));\n for (var r = 0, o = e.length; r < o; r++) Cc.resolve(e[r]).then(t, n);\n });\n}, Cc._immediateFn = \"function\" == typeof setImmediate && function (e) {\n setImmediate(e);\n} || function (e) {\n Oc(e, 0);\n}, Cc._unhandledRejectionFn = function (e) {\n \"undefined\" != typeof console && console && console.warn(\"Possible Unhandled Promise Rejection:\", e);\n};\nvar Gc = function () {\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n}();\n\"function\" != typeof Gc.Promise ? Gc.Promise = Cc : (Gc.Promise.prototype.finally || (Gc.Promise.prototype.finally = _c), Gc.Promise.allSettled || (Gc.Promise.allSettled = Ic)), function (e) {\n function t(e) {\n for (var t = 0, n = Math.min(65536, e.length + 1), r = new Uint16Array(n), o = [], i = 0;;) {\n var c = t < e.length;\n if (!c || i >= n - 1) {\n var a = r.subarray(0, i);\n if (o.push(String.fromCharCode.apply(null, a)), !c) return o.join(\"\");\n e = e.subarray(t), t = 0, i = 0;\n }\n var s = e[t++];\n if (0 == (128 & s)) r[i++] = s;else if (192 == (224 & s)) {\n var u = 63 & e[t++];\n r[i++] = (31 & s) << 6 | u;\n } else if (224 == (240 & s)) {\n u = 63 & e[t++];\n var l = 63 & e[t++];\n r[i++] = (31 & s) << 12 | u << 6 | l;\n } else if (240 == (248 & s)) {\n var f = (7 & s) << 18 | (u = 63 & e[t++]) << 12 | (l = 63 & e[t++]) << 6 | 63 & e[t++];\n f > 65535 && (f -= 65536, r[i++] = f >>> 10 & 1023 | 55296, f = 56320 | 1023 & f), r[i++] = f;\n }\n }\n }\n var n = \"Failed to \",\n r = function (e, t, r) {\n if (e) throw new Error(\"\".concat(n).concat(t, \": the '\").concat(r, \"' option is unsupported.\"));\n },\n o = \"function\" == typeof Buffer && Buffer.from,\n i = o ? function (e) {\n return Buffer.from(e);\n } : function (e) {\n for (var t = 0, n = e.length, r = 0, o = Math.max(32, n + (n >>> 1) + 7), i = new Uint8Array(o >>> 3 << 3); t < n;) {\n var c = e.charCodeAt(t++);\n if (c >= 55296 && c <= 56319) {\n if (t < n) {\n var a = e.charCodeAt(t);\n 56320 == (64512 & a) && (++t, c = ((1023 & c) << 10) + (1023 & a) + 65536);\n }\n if (c >= 55296 && c <= 56319) continue;\n }\n if (r + 4 > i.length) {\n o += 8, o = (o *= 1 + t / e.length * 2) >>> 3 << 3;\n var s = new Uint8Array(o);\n s.set(i), i = s;\n }\n if (0 != (4294967168 & c)) {\n if (0 == (4294965248 & c)) i[r++] = c >>> 6 & 31 | 192;else if (0 == (4294901760 & c)) i[r++] = c >>> 12 & 15 | 224, i[r++] = c >>> 6 & 63 | 128;else {\n if (0 != (4292870144 & c)) continue;\n i[r++] = c >>> 18 & 7 | 240, i[r++] = c >>> 12 & 63 | 128, i[r++] = c >>> 6 & 63 | 128;\n }\n i[r++] = 63 & c | 128;\n } else i[r++] = c;\n }\n return i.slice ? i.slice(0, r) : i.subarray(0, r);\n };\n function c() {\n this.encoding = \"utf-8\";\n }\n c.prototype.encode = function (e, t) {\n return r(t && t.stream, \"encode\", \"stream\"), i(e);\n };\n var a = !o && \"function\" == typeof Blob && \"function\" == typeof URL && \"function\" == typeof URL.createObjectURL,\n s = [\"utf-8\", \"utf8\", \"unicode-1-1-utf-8\"],\n u = t;\n o ? u = function (e, t) {\n return (e instanceof Buffer ? e : Buffer.from(e.buffer, e.byteOffset, e.byteLength)).toString(t);\n } : a && (u = function (e) {\n try {\n return function (e) {\n var t;\n try {\n var n = new Blob([e], {\n type: \"text/plain;charset=UTF-8\"\n });\n t = URL.createObjectURL(n);\n var r = new XMLHttpRequest();\n return r.open(\"GET\", t, !1), r.send(), r.responseText;\n } finally {\n t && URL.revokeObjectURL(t);\n }\n }(e);\n } catch (n) {\n return t(e);\n }\n });\n var l = \"construct 'TextDecoder'\",\n f = \"\".concat(n, \" \").concat(l, \": the \");\n function d(e, t) {\n if (r(t && t.fatal, l, \"fatal\"), e = e || \"utf-8\", !(o ? Buffer.isEncoding(e) : -1 !== s.indexOf(e.toLowerCase()))) throw new RangeError(\"\".concat(f, \" encoding label provided ('\").concat(e, \"') is invalid.\"));\n this.encoding = e, this.fatal = !1, this.ignoreBOM = !1;\n }\n d.prototype.decode = function (e, t) {\n var n;\n return r(t && t.stream, \"decode\", \"stream\"), n = e instanceof Uint8Array ? e : e.buffer instanceof ArrayBuffer ? new Uint8Array(e.buffer) : new Uint8Array(e), u(n, this.encoding);\n }, e.TextEncoder = e.TextEncoder || c, e.TextDecoder = e.TextDecoder || d;\n}(\"undefined\" != typeof window ? window : s), function () {\n function e(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function t(e, t) {\n for (var n = 0; n < t.length; n++) {\n var r = t[n];\n r.enumerable = r.enumerable || !1, r.configurable = !0, \"value\" in r && (r.writable = !0), Object.defineProperty(e, r.key, r);\n }\n }\n function n(e, n, r) {\n return n && t(e.prototype, n), r && t(e, r), e;\n }\n function r(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && i(e, t);\n }\n function o(e) {\n return o = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n }, o(e);\n }\n function i(e, t) {\n return i = Object.setPrototypeOf || function (e, t) {\n return e.__proto__ = t, e;\n }, i(e, t);\n }\n function c() {\n if (\"undefined\" == typeof Reflect || !Reflect.construct) return !1;\n if (Reflect.construct.sham) return !1;\n if (\"function\" == typeof Proxy) return !0;\n try {\n return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;\n } catch (e) {\n return !1;\n }\n }\n function a(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }\n function u(e, t) {\n return !t || \"object\" != typeof t && \"function\" != typeof t ? a(e) : t;\n }\n function l(e) {\n var t = c();\n return function () {\n var n,\n r = o(e);\n if (t) {\n var i = o(this).constructor;\n n = Reflect.construct(r, arguments, i);\n } else n = r.apply(this, arguments);\n return u(this, n);\n };\n }\n function f(e, t) {\n for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = o(e)););\n return e;\n }\n function d(e, t, n) {\n return d = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, n) {\n var r = f(e, t);\n if (r) {\n var o = Object.getOwnPropertyDescriptor(r, t);\n return o.get ? o.get.call(n) : o.value;\n }\n }, d(e, t, n || e);\n }\n var h = function () {\n function t() {\n e(this, t), Object.defineProperty(this, \"listeners\", {\n value: {},\n writable: !0,\n configurable: !0\n });\n }\n return n(t, [{\n key: \"addEventListener\",\n value: function (e, t, n) {\n e in this.listeners || (this.listeners[e] = []), this.listeners[e].push({\n callback: t,\n options: n\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function (e, t) {\n if (e in this.listeners) for (var n = this.listeners[e], r = 0, o = n.length; r < o; r++) if (n[r].callback === t) return void n.splice(r, 1);\n }\n }, {\n key: \"dispatchEvent\",\n value: function (e) {\n if (e.type in this.listeners) {\n for (var t = this.listeners[e.type].slice(), n = 0, r = t.length; n < r; n++) {\n var o = t[n];\n try {\n o.callback.call(this, e);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n o.options && o.options.once && this.removeEventListener(e.type, o.callback);\n }\n return !e.defaultPrevented;\n }\n }\n }]), t;\n }(),\n p = function (t) {\n r(c, t);\n var i = l(c);\n function c() {\n var t;\n return e(this, c), (t = i.call(this)).listeners || h.call(a(t)), Object.defineProperty(a(t), \"aborted\", {\n value: !1,\n writable: !0,\n configurable: !0\n }), Object.defineProperty(a(t), \"onabort\", {\n value: null,\n writable: !0,\n configurable: !0\n }), t;\n }\n return n(c, [{\n key: \"toString\",\n value: function () {\n return \"[object AbortSignal]\";\n }\n }, {\n key: \"dispatchEvent\",\n value: function (e) {\n \"abort\" === e.type && (this.aborted = !0, \"function\" == typeof this.onabort && this.onabort.call(this, e)), d(o(c.prototype), \"dispatchEvent\", this).call(this, e);\n }\n }]), c;\n }(h),\n y = function () {\n function t() {\n e(this, t), Object.defineProperty(this, \"signal\", {\n value: new p(),\n writable: !0,\n configurable: !0\n });\n }\n return n(t, [{\n key: \"abort\",\n value: function () {\n var e;\n try {\n e = new Event(\"abort\");\n } catch (t) {\n \"undefined\" != typeof document ? document.createEvent ? (e = document.createEvent(\"Event\")).initEvent(\"abort\", !1, !1) : (e = document.createEventObject()).type = \"abort\" : e = {\n type: \"abort\",\n bubbles: !1,\n cancelable: !1\n };\n }\n this.signal.dispatchEvent(e);\n }\n }, {\n key: \"toString\",\n value: function () {\n return \"[object AbortController]\";\n }\n }]), t;\n }();\n function v(e) {\n return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL ? (console.log(\"__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill\"), !0) : \"function\" == typeof e.Request && !e.Request.prototype.hasOwnProperty(\"signal\") || !e.AbortController;\n }\n \"undefined\" != typeof Symbol && Symbol.toStringTag && (y.prototype[Symbol.toStringTag] = \"AbortController\", p.prototype[Symbol.toStringTag] = \"AbortSignal\"), function (e) {\n v(e) && (e.AbortController = y, e.AbortSignal = p);\n }(\"undefined\" != typeof self ? self : s);\n}();\nvar Ac = l(function (e, t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var n = function () {\n function e() {\n var e = this;\n this.locked = new Map(), this.addToLocked = function (t, n) {\n var r = e.locked.get(t);\n void 0 === r ? void 0 === n ? e.locked.set(t, []) : e.locked.set(t, [n]) : void 0 !== n && (r.unshift(n), e.locked.set(t, r));\n }, this.isLocked = function (t) {\n return e.locked.has(t);\n }, this.lock = function (t) {\n return new Promise(function (n, r) {\n e.isLocked(t) ? e.addToLocked(t, n) : (e.addToLocked(t), n());\n });\n }, this.unlock = function (t) {\n var n = e.locked.get(t);\n if (void 0 !== n && 0 !== n.length) {\n var r = n.pop();\n e.locked.set(t, n), void 0 !== r && setTimeout(r, 0);\n } else e.locked.delete(t);\n };\n }\n return e.getInstance = function () {\n return void 0 === e.instance && (e.instance = new e()), e.instance;\n }, e;\n }();\n t.default = function () {\n return n.getInstance();\n };\n});\nu(Ac);\nvar Pc = l(function (e, t) {\n var n = s && s.__awaiter || function (e, t, n, r) {\n return new (n || (n = Promise))(function (o, i) {\n function c(e) {\n try {\n s(r.next(e));\n } catch (e) {\n i(e);\n }\n }\n function a(e) {\n try {\n s(r.throw(e));\n } catch (e) {\n i(e);\n }\n }\n function s(e) {\n e.done ? o(e.value) : new n(function (t) {\n t(e.value);\n }).then(c, a);\n }\n s((r = r.apply(e, t || [])).next());\n });\n },\n r = s && s.__generator || function (e, t) {\n var n,\n r,\n o,\n i,\n c = {\n label: 0,\n sent: function () {\n if (1 & o[0]) throw o[1];\n return o[1];\n },\n trys: [],\n ops: []\n };\n return i = {\n next: a(0),\n throw: a(1),\n return: a(2)\n }, \"function\" == typeof Symbol && (i[Symbol.iterator] = function () {\n return this;\n }), i;\n function a(i) {\n return function (a) {\n return function (i) {\n if (n) throw new TypeError(\"Generator is already executing.\");\n for (; c;) try {\n if (n = 1, r && (o = 2 & i[0] ? r.return : i[0] ? r.throw || ((o = r.return) && o.call(r), 0) : r.next) && !(o = o.call(r, i[1])).done) return o;\n switch (r = 0, o && (i = [2 & i[0], o.value]), i[0]) {\n case 0:\n case 1:\n o = i;\n break;\n case 4:\n return c.label++, {\n value: i[1],\n done: !1\n };\n case 5:\n c.label++, r = i[1], i = [0];\n continue;\n case 7:\n i = c.ops.pop(), c.trys.pop();\n continue;\n default:\n if (!(o = c.trys, (o = o.length > 0 && o[o.length - 1]) || 6 !== i[0] && 2 !== i[0])) {\n c = 0;\n continue;\n }\n if (3 === i[0] && (!o || i[1] > o[0] && i[1] < o[3])) {\n c.label = i[1];\n break;\n }\n if (6 === i[0] && c.label < o[1]) {\n c.label = o[1], o = i;\n break;\n }\n if (o && c.label < o[2]) {\n c.label = o[2], c.ops.push(i);\n break;\n }\n o[2] && c.ops.pop(), c.trys.pop();\n continue;\n }\n i = t.call(e, c);\n } catch (e) {\n i = [6, e], r = 0;\n } finally {\n n = o = 0;\n }\n if (5 & i[0]) throw i[1];\n return {\n value: i[0] ? i[1] : void 0,\n done: !0\n };\n }([i, a]);\n };\n }\n };\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var o = \"browser-tabs-lock-key\";\n function i(e) {\n return new Promise(function (t) {\n return setTimeout(t, e);\n });\n }\n function c(e) {\n for (var t = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz\", n = \"\", r = 0; r < e; r++) {\n n += t[Math.floor(Math.random() * t.length)];\n }\n return n;\n }\n var a = function () {\n function e() {\n this.acquiredIatSet = new Set(), this.id = Date.now().toString() + c(15), this.acquireLock = this.acquireLock.bind(this), this.releaseLock = this.releaseLock.bind(this), this.releaseLock__private__ = this.releaseLock__private__.bind(this), this.waitForSomethingToChange = this.waitForSomethingToChange.bind(this), this.refreshLockWhileAcquired = this.refreshLockWhileAcquired.bind(this), void 0 === e.waiters && (e.waiters = []);\n }\n return e.prototype.acquireLock = function (t, a) {\n return void 0 === a && (a = 5e3), n(this, void 0, void 0, function () {\n var n, s, u, l, f, d;\n return r(this, function (r) {\n switch (r.label) {\n case 0:\n n = Date.now() + c(4), s = Date.now() + a, u = o + \"-\" + t, l = window.localStorage, r.label = 1;\n case 1:\n return Date.now() < s ? [4, i(30)] : [3, 8];\n case 2:\n return r.sent(), null !== l.getItem(u) ? [3, 5] : (f = this.id + \"-\" + t + \"-\" + n, [4, i(Math.floor(25 * Math.random()))]);\n case 3:\n return r.sent(), l.setItem(u, JSON.stringify({\n id: this.id,\n iat: n,\n timeoutKey: f,\n timeAcquired: Date.now(),\n timeRefreshed: Date.now()\n })), [4, i(30)];\n case 4:\n return r.sent(), null !== (d = l.getItem(u)) && (d = JSON.parse(d)).id === this.id && d.iat === n ? (this.acquiredIatSet.add(n), this.refreshLockWhileAcquired(u, n), [2, !0]) : [3, 7];\n case 5:\n return e.lockCorrector(), [4, this.waitForSomethingToChange(s)];\n case 6:\n r.sent(), r.label = 7;\n case 7:\n return n = Date.now() + c(4), [3, 1];\n case 8:\n return [2, !1];\n }\n });\n });\n }, e.prototype.refreshLockWhileAcquired = function (e, t) {\n return n(this, void 0, void 0, function () {\n var o = this;\n return r(this, function (i) {\n return setTimeout(function () {\n return n(o, void 0, void 0, function () {\n var n, o;\n return r(this, function (r) {\n switch (r.label) {\n case 0:\n return [4, Ac.default().lock(t)];\n case 1:\n return r.sent(), this.acquiredIatSet.has(t) ? (n = window.localStorage, null === (o = n.getItem(e)) ? (Ac.default().unlock(t), [2]) : ((o = JSON.parse(o)).timeRefreshed = Date.now(), n.setItem(e, JSON.stringify(o)), Ac.default().unlock(t), this.refreshLockWhileAcquired(e, t), [2])) : (Ac.default().unlock(t), [2]);\n }\n });\n });\n }, 1e3), [2];\n });\n });\n }, e.prototype.waitForSomethingToChange = function (t) {\n return n(this, void 0, void 0, function () {\n return r(this, function (n) {\n switch (n.label) {\n case 0:\n return [4, new Promise(function (n) {\n var r = !1,\n o = Date.now(),\n i = !1;\n function c() {\n if (i || (window.removeEventListener(\"storage\", c), e.removeFromWaiting(c), clearTimeout(a), i = !0), !r) {\n r = !0;\n var t = 50 - (Date.now() - o);\n t > 0 ? setTimeout(n, t) : n();\n }\n }\n window.addEventListener(\"storage\", c), e.addToWaiting(c);\n var a = setTimeout(c, Math.max(0, t - Date.now()));\n })];\n case 1:\n return n.sent(), [2];\n }\n });\n });\n }, e.addToWaiting = function (t) {\n this.removeFromWaiting(t), void 0 !== e.waiters && e.waiters.push(t);\n }, e.removeFromWaiting = function (t) {\n void 0 !== e.waiters && (e.waiters = e.waiters.filter(function (e) {\n return e !== t;\n }));\n }, e.notifyWaiters = function () {\n void 0 !== e.waiters && e.waiters.slice().forEach(function (e) {\n return e();\n });\n }, e.prototype.releaseLock = function (e) {\n return n(this, void 0, void 0, function () {\n return r(this, function (t) {\n switch (t.label) {\n case 0:\n return [4, this.releaseLock__private__(e)];\n case 1:\n return [2, t.sent()];\n }\n });\n });\n }, e.prototype.releaseLock__private__ = function (t) {\n return n(this, void 0, void 0, function () {\n var n, i, c;\n return r(this, function (r) {\n switch (r.label) {\n case 0:\n return n = window.localStorage, i = o + \"-\" + t, null === (c = n.getItem(i)) ? [2] : (c = JSON.parse(c)).id !== this.id ? [3, 2] : [4, Ac.default().lock(c.iat)];\n case 1:\n r.sent(), this.acquiredIatSet.delete(c.iat), n.removeItem(i), Ac.default().unlock(c.iat), e.notifyWaiters(), r.label = 2;\n case 2:\n return [2];\n }\n });\n });\n }, e.lockCorrector = function () {\n for (var t = Date.now() - 5e3, n = window.localStorage, r = Object.keys(n), i = !1, c = 0; c < r.length; c++) {\n var a = r[c];\n if (a.includes(o)) {\n var s = n.getItem(a);\n null !== s && (void 0 === (s = JSON.parse(s)).timeRefreshed && s.timeAcquired < t || void 0 !== s.timeRefreshed && s.timeRefreshed < t) && (n.removeItem(a), i = !0);\n }\n }\n i && e.notifyWaiters();\n }, e.waiters = void 0, e;\n }();\n t.default = a;\n }),\n Xc = u(Pc),\n Fc = {\n timeoutInSeconds: 60\n },\n Kc = [\"login_required\", \"consent_required\", \"interaction_required\", \"account_selection_required\", \"access_denied\"],\n Nc = {\n name: \"auth0-spa-js\",\n version: \"1.22.6\"\n },\n Uc = function () {\n return Date.now();\n },\n Dc = function (e) {\n function n(t, r) {\n var o = e.call(this, r) || this;\n return o.error = t, o.error_description = r, Object.setPrototypeOf(o, n.prototype), o;\n }\n return t(n, e), n.fromPayload = function (e) {\n return new n(e.error, e.error_description);\n }, n;\n }(Error),\n Hc = function (e) {\n function n(t, r, o, i) {\n void 0 === i && (i = null);\n var c = e.call(this, t, r) || this;\n return c.state = o, c.appState = i, Object.setPrototypeOf(c, n.prototype), c;\n }\n return t(n, e), n;\n }(Dc),\n Yc = function (e) {\n function n() {\n var t = e.call(this, \"timeout\", \"Timeout\") || this;\n return Object.setPrototypeOf(t, n.prototype), t;\n }\n return t(n, e), n;\n }(Dc),\n Jc = function (e) {\n function n(t) {\n var r = e.call(this) || this;\n return r.popup = t, Object.setPrototypeOf(r, n.prototype), r;\n }\n return t(n, e), n;\n }(Yc),\n Vc = function (e) {\n function n(t) {\n var r = e.call(this, \"cancelled\", \"Popup closed\") || this;\n return r.popup = t, Object.setPrototypeOf(r, n.prototype), r;\n }\n return t(n, e), n;\n }(Dc),\n zc = function (e) {\n function n(t, r, o) {\n var i = e.call(this, t, r) || this;\n return i.mfa_token = o, Object.setPrototypeOf(i, n.prototype), i;\n }\n return t(n, e), n;\n }(Dc),\n Mc = function (e) {\n function n(t, r) {\n var o = e.call(this, \"missing_refresh_token\", \"Missing Refresh Token (audience: '\".concat(ia(t, [\"default\"]), \"', scope: '\").concat(ia(r), \"')\")) || this;\n return o.audience = t, o.scope = r, Object.setPrototypeOf(o, n.prototype), o;\n }\n return t(n, e), n;\n }(Dc),\n Bc = function (e) {\n return new Promise(function (t, n) {\n var r,\n o = setInterval(function () {\n e.popup && e.popup.closed && (clearInterval(o), clearTimeout(i), window.removeEventListener(\"message\", r, !1), n(new Vc(e.popup)));\n }, 1e3),\n i = setTimeout(function () {\n clearInterval(o), n(new Jc(e.popup)), window.removeEventListener(\"message\", r, !1);\n }, 1e3 * (e.timeoutInSeconds || 60));\n r = function (c) {\n if (c.data && \"authorization_response\" === c.data.type) {\n if (clearTimeout(i), clearInterval(o), window.removeEventListener(\"message\", r, !1), e.popup.close(), c.data.response.error) return n(Dc.fromPayload(c.data.response));\n t(c.data.response);\n }\n }, window.addEventListener(\"message\", r);\n });\n },\n Qc = function () {\n return window.crypto || window.msCrypto;\n },\n qc = function () {\n var e = Qc();\n return e.subtle || e.webkitSubtle;\n },\n $c = function () {\n var e = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_~.\",\n t = \"\";\n return Array.from(Qc().getRandomValues(new Uint8Array(43))).forEach(function (n) {\n return t += e[n % e.length];\n }), t;\n },\n ea = function (e) {\n return btoa(e);\n },\n ta = function (e) {\n return Object.keys(e).filter(function (t) {\n return void 0 !== e[t];\n }).map(function (t) {\n return encodeURIComponent(t) + \"=\" + encodeURIComponent(e[t]);\n }).join(\"&\");\n },\n na = function (e) {\n return o(void 0, void 0, void 0, function () {\n var t;\n return i(this, function (n) {\n switch (n.label) {\n case 0:\n return t = qc().digest({\n name: \"SHA-256\"\n }, new TextEncoder().encode(e)), window.msCrypto ? [2, new Promise(function (e, n) {\n t.oncomplete = function (t) {\n e(t.target.result);\n }, t.onerror = function (e) {\n n(e.error);\n }, t.onabort = function () {\n n(\"The digest operation was aborted\");\n };\n })] : [4, t];\n case 1:\n return [2, n.sent()];\n }\n });\n });\n },\n ra = function (e) {\n return function (e) {\n return decodeURIComponent(atob(e).split(\"\").map(function (e) {\n return \"%\" + (\"00\" + e.charCodeAt(0).toString(16)).slice(-2);\n }).join(\"\"));\n }(e.replace(/_/g, \"/\").replace(/-/g, \"+\"));\n },\n oa = function (e) {\n var t = new Uint8Array(e);\n return function (e) {\n var t = {\n \"+\": \"-\",\n \"/\": \"_\",\n \"=\": \"\"\n };\n return e.replace(/[+/=]/g, function (e) {\n return t[e];\n });\n }(window.btoa(String.fromCharCode.apply(String, a([], c(Array.from(t)), !1))));\n };\nfunction ia(e, t) {\n return void 0 === t && (t = []), e && !t.includes(e) ? e : \"\";\n}\nvar ca = function (e, t) {\n return o(void 0, void 0, void 0, function () {\n var n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return [4, (i = e, c = t, c = c || {}, new Promise(function (e, t) {\n var n = new XMLHttpRequest(),\n r = [],\n o = [],\n a = {},\n s = function () {\n return {\n ok: 2 == (n.status / 100 | 0),\n statusText: n.statusText,\n status: n.status,\n url: n.responseURL,\n text: function () {\n return Promise.resolve(n.responseText);\n },\n json: function () {\n return Promise.resolve(n.responseText).then(JSON.parse);\n },\n blob: function () {\n return Promise.resolve(new Blob([n.response]));\n },\n clone: s,\n headers: {\n keys: function () {\n return r;\n },\n entries: function () {\n return o;\n },\n get: function (e) {\n return a[e.toLowerCase()];\n },\n has: function (e) {\n return e.toLowerCase() in a;\n }\n }\n };\n };\n for (var u in n.open(c.method || \"get\", i, !0), n.onload = function () {\n n.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (e, t, n) {\n r.push(t = t.toLowerCase()), o.push([t, n]), a[t] = a[t] ? a[t] + \",\" + n : n;\n }), e(s());\n }, n.onerror = t, n.withCredentials = \"include\" == c.credentials, c.headers) n.setRequestHeader(u, c.headers[u]);\n n.send(c.body || null);\n }))];\n case 1:\n return n = o.sent(), r = {\n ok: n.ok\n }, [4, n.json()];\n case 2:\n return [2, (r.json = o.sent(), r)];\n }\n var i, c;\n });\n });\n },\n aa = function (e, t, n) {\n return o(void 0, void 0, void 0, function () {\n var r, o;\n return i(this, function (i) {\n return r = new AbortController(), t.signal = r.signal, [2, Promise.race([ca(e, t), new Promise(function (e, t) {\n o = setTimeout(function () {\n r.abort(), t(new Error(\"Timeout when executing 'fetch'\"));\n }, n);\n })]).finally(function () {\n clearTimeout(o);\n })];\n });\n });\n },\n sa = function (e, t, n, r, c, a, s) {\n return o(void 0, void 0, void 0, function () {\n return i(this, function (o) {\n return [2, (i = {\n auth: {\n audience: t,\n scope: n\n },\n timeout: c,\n fetchUrl: e,\n fetchOptions: r,\n useFormData: s\n }, u = a, new Promise(function (e, t) {\n var n = new MessageChannel();\n n.port1.onmessage = function (r) {\n r.data.error ? t(new Error(r.data.error)) : e(r.data), n.port1.close();\n }, u.postMessage(i, [n.port2]);\n }))];\n var i, u;\n });\n });\n },\n ua = function (e, t, n, r, c, a, s) {\n return void 0 === s && (s = 1e4), o(void 0, void 0, void 0, function () {\n return i(this, function (o) {\n return c ? [2, sa(e, t, n, r, s, c, a)] : [2, aa(e, r, s)];\n });\n });\n };\nfunction la(e, t, n, c, a, s, u) {\n return o(this, void 0, void 0, function () {\n var o, l, f, d, h, p, y, v, m;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n o = null, f = 0, i.label = 1;\n case 1:\n if (!(f < 3)) return [3, 6];\n i.label = 2;\n case 2:\n return i.trys.push([2, 4,, 5]), [4, ua(e, n, c, a, s, u, t)];\n case 3:\n return l = i.sent(), o = null, [3, 6];\n case 4:\n return d = i.sent(), o = d, [3, 5];\n case 5:\n return f++, [3, 1];\n case 6:\n if (o) throw o.message = o.message || \"Failed to fetch\", o;\n if (h = l.json, p = h.error, y = h.error_description, v = r(h, [\"error\", \"error_description\"]), !l.ok) {\n if (m = y || \"HTTP error. Unable to fetch \".concat(e), \"mfa_required\" === p) throw new zc(p, m, v.mfa_token);\n throw new Dc(p || \"request_error\", m);\n }\n return [2, v];\n }\n });\n });\n}\nfunction fa(e, t) {\n var n = e.baseUrl,\n c = e.timeout,\n a = e.audience,\n s = e.scope,\n u = e.auth0Client,\n l = e.useFormData,\n f = r(e, [\"baseUrl\", \"timeout\", \"audience\", \"scope\", \"auth0Client\", \"useFormData\"]);\n return o(this, void 0, void 0, function () {\n var e;\n return i(this, function (r) {\n switch (r.label) {\n case 0:\n return e = l ? ta(f) : JSON.stringify(f), [4, la(\"\".concat(n, \"/oauth/token\"), c, a || \"default\", s, {\n method: \"POST\",\n body: e,\n headers: {\n \"Content-Type\": l ? \"application/x-www-form-urlencoded\" : \"application/json\",\n \"Auth0-Client\": btoa(JSON.stringify(u || Nc))\n }\n }, t, l)];\n case 1:\n return [2, r.sent()];\n }\n });\n });\n}\nvar da = function (e) {\n return Array.from(new Set(e));\n },\n ha = function () {\n for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];\n return da(e.join(\" \").trim().split(/\\s+/)).join(\" \");\n },\n pa = function () {\n function e(e, t) {\n void 0 === t && (t = \"@@auth0spajs@@\"), this.prefix = t, this.client_id = e.client_id, this.scope = e.scope, this.audience = e.audience;\n }\n return e.prototype.toKey = function () {\n return \"\".concat(this.prefix, \"::\").concat(this.client_id, \"::\").concat(this.audience, \"::\").concat(this.scope);\n }, e.fromKey = function (t) {\n var n = c(t.split(\"::\"), 4),\n r = n[0],\n o = n[1],\n i = n[2];\n return new e({\n client_id: o,\n scope: n[3],\n audience: i\n }, r);\n }, e.fromCacheEntry = function (t) {\n return new e({\n scope: t.scope,\n audience: t.audience,\n client_id: t.client_id\n });\n }, e;\n }(),\n ya = function () {\n function e() {}\n return e.prototype.set = function (e, t) {\n localStorage.setItem(e, JSON.stringify(t));\n }, e.prototype.get = function (e) {\n var t = window.localStorage.getItem(e);\n if (t) try {\n return JSON.parse(t);\n } catch (e) {\n return;\n }\n }, e.prototype.remove = function (e) {\n localStorage.removeItem(e);\n }, e.prototype.allKeys = function () {\n return Object.keys(window.localStorage).filter(function (e) {\n return e.startsWith(\"@@auth0spajs@@\");\n });\n }, e;\n }(),\n va = function () {\n var e;\n this.enclosedCache = (e = {}, {\n set: function (t, n) {\n e[t] = n;\n },\n get: function (t) {\n var n = e[t];\n if (n) return n;\n },\n remove: function (t) {\n delete e[t];\n },\n allKeys: function () {\n return Object.keys(e);\n }\n });\n },\n ma = function () {\n function e(e, t, n) {\n this.cache = e, this.keyManifest = t, this.nowProvider = n, this.nowProvider = this.nowProvider || Uc;\n }\n return e.prototype.get = function (e, t) {\n var n;\n return void 0 === t && (t = 0), o(this, void 0, void 0, function () {\n var r, o, c, a, s;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return [4, this.cache.get(e.toKey())];\n case 1:\n return (r = i.sent()) ? [3, 4] : [4, this.getCacheKeys()];\n case 2:\n return (o = i.sent()) ? (c = this.matchExistingCacheKey(e, o)) ? [4, this.cache.get(c)] : [3, 4] : [2];\n case 3:\n r = i.sent(), i.label = 4;\n case 4:\n return r ? [4, this.nowProvider()] : [2];\n case 5:\n return a = i.sent(), s = Math.floor(a / 1e3), r.expiresAt - t < s ? r.body.refresh_token ? (r.body = {\n refresh_token: r.body.refresh_token\n }, [4, this.cache.set(e.toKey(), r)]) : [3, 7] : [3, 10];\n case 6:\n return i.sent(), [2, r.body];\n case 7:\n return [4, this.cache.remove(e.toKey())];\n case 8:\n return i.sent(), [4, null === (n = this.keyManifest) || void 0 === n ? void 0 : n.remove(e.toKey())];\n case 9:\n return i.sent(), [2];\n case 10:\n return [2, r.body];\n }\n });\n });\n }, e.prototype.set = function (e) {\n var t;\n return o(this, void 0, void 0, function () {\n var n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return n = new pa({\n client_id: e.client_id,\n scope: e.scope,\n audience: e.audience\n }), [4, this.wrapCacheEntry(e)];\n case 1:\n return r = o.sent(), [4, this.cache.set(n.toKey(), r)];\n case 2:\n return o.sent(), [4, null === (t = this.keyManifest) || void 0 === t ? void 0 : t.add(n.toKey())];\n case 3:\n return o.sent(), [2];\n }\n });\n });\n }, e.prototype.clear = function (e) {\n var t;\n return o(this, void 0, void 0, function () {\n var n,\n r = this;\n return i(this, function (c) {\n switch (c.label) {\n case 0:\n return [4, this.getCacheKeys()];\n case 1:\n return (n = c.sent()) ? [4, n.filter(function (t) {\n return !e || t.includes(e);\n }).reduce(function (e, t) {\n return o(r, void 0, void 0, function () {\n return i(this, function (n) {\n switch (n.label) {\n case 0:\n return [4, e];\n case 1:\n return n.sent(), [4, this.cache.remove(t)];\n case 2:\n return n.sent(), [2];\n }\n });\n });\n }, Promise.resolve())] : [2];\n case 2:\n return c.sent(), [4, null === (t = this.keyManifest) || void 0 === t ? void 0 : t.clear()];\n case 3:\n return c.sent(), [2];\n }\n });\n });\n }, e.prototype.clearSync = function (e) {\n var t = this,\n n = this.cache.allKeys();\n n && n.filter(function (t) {\n return !e || t.includes(e);\n }).forEach(function (e) {\n t.cache.remove(e);\n });\n }, e.prototype.wrapCacheEntry = function (e) {\n return o(this, void 0, void 0, function () {\n var t, n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return [4, this.nowProvider()];\n case 1:\n return t = o.sent(), n = Math.floor(t / 1e3) + e.expires_in, r = Math.min(n, e.decodedToken.claims.exp), [2, {\n body: e,\n expiresAt: r\n }];\n }\n });\n });\n }, e.prototype.getCacheKeys = function () {\n var e;\n return o(this, void 0, void 0, function () {\n var t;\n return i(this, function (n) {\n switch (n.label) {\n case 0:\n return this.keyManifest ? [4, this.keyManifest.get()] : [3, 2];\n case 1:\n return t = null === (e = n.sent()) || void 0 === e ? void 0 : e.keys, [3, 4];\n case 2:\n return [4, this.cache.allKeys()];\n case 3:\n t = n.sent(), n.label = 4;\n case 4:\n return [2, t];\n }\n });\n });\n }, e.prototype.matchExistingCacheKey = function (e, t) {\n return t.filter(function (t) {\n var n = pa.fromKey(t),\n r = new Set(n.scope && n.scope.split(\" \")),\n o = e.scope.split(\" \"),\n i = n.scope && o.reduce(function (e, t) {\n return e && r.has(t);\n }, !0);\n return \"@@auth0spajs@@\" === n.prefix && n.client_id === e.client_id && n.audience === e.audience && i;\n })[0];\n }, e;\n }(),\n ba = function () {\n function e(e, t) {\n this.storage = e, this.clientId = t, this.storageKey = \"\".concat(\"a0.spajs.txs\", \".\").concat(this.clientId), this.transaction = this.storage.get(this.storageKey);\n }\n return e.prototype.create = function (e) {\n this.transaction = e, this.storage.save(this.storageKey, e, {\n daysUntilExpire: 1\n });\n }, e.prototype.get = function () {\n return this.transaction;\n }, e.prototype.remove = function () {\n delete this.transaction, this.storage.remove(this.storageKey);\n }, e;\n }(),\n ga = function (e) {\n return \"number\" == typeof e;\n },\n wa = [\"iss\", \"aud\", \"exp\", \"nbf\", \"iat\", \"jti\", \"azp\", \"nonce\", \"auth_time\", \"at_hash\", \"c_hash\", \"acr\", \"amr\", \"sub_jwk\", \"cnf\", \"sip_from_tag\", \"sip_date\", \"sip_callid\", \"sip_cseq_num\", \"sip_via_branch\", \"orig\", \"dest\", \"mky\", \"events\", \"toe\", \"txn\", \"rph\", \"sid\", \"vot\", \"vtm\"],\n Sa = function (e) {\n if (!e.id_token) throw new Error(\"ID token is required but missing\");\n var t = function (e) {\n var t = e.split(\".\"),\n n = c(t, 3),\n r = n[0],\n o = n[1],\n i = n[2];\n if (3 !== t.length || !r || !o || !i) throw new Error(\"ID token could not be decoded\");\n var a = JSON.parse(ra(o)),\n s = {\n __raw: e\n },\n u = {};\n return Object.keys(a).forEach(function (e) {\n s[e] = a[e], wa.includes(e) || (u[e] = a[e]);\n }), {\n encoded: {\n header: r,\n payload: o,\n signature: i\n },\n header: JSON.parse(ra(r)),\n claims: s,\n user: u\n };\n }(e.id_token);\n if (!t.claims.iss) throw new Error(\"Issuer (iss) claim must be a string present in the ID token\");\n if (t.claims.iss !== e.iss) throw new Error('Issuer (iss) claim mismatch in the ID token; expected \"'.concat(e.iss, '\", found \"').concat(t.claims.iss, '\"'));\n if (!t.user.sub) throw new Error(\"Subject (sub) claim must be a string present in the ID token\");\n if (\"RS256\" !== t.header.alg) throw new Error('Signature algorithm of \"'.concat(t.header.alg, '\" is not supported. Expected the ID token to be signed with \"RS256\".'));\n if (!t.claims.aud || \"string\" != typeof t.claims.aud && !Array.isArray(t.claims.aud)) throw new Error(\"Audience (aud) claim must be a string or array of strings present in the ID token\");\n if (Array.isArray(t.claims.aud)) {\n if (!t.claims.aud.includes(e.aud)) throw new Error('Audience (aud) claim mismatch in the ID token; expected \"'.concat(e.aud, '\" but was not one of \"').concat(t.claims.aud.join(\", \"), '\"'));\n if (t.claims.aud.length > 1) {\n if (!t.claims.azp) throw new Error(\"Authorized Party (azp) claim must be a string present in the ID token when Audience (aud) claim has multiple values\");\n if (t.claims.azp !== e.aud) throw new Error('Authorized Party (azp) claim mismatch in the ID token; expected \"'.concat(e.aud, '\", found \"').concat(t.claims.azp, '\"'));\n }\n } else if (t.claims.aud !== e.aud) throw new Error('Audience (aud) claim mismatch in the ID token; expected \"'.concat(e.aud, '\" but found \"').concat(t.claims.aud, '\"'));\n if (e.nonce) {\n if (!t.claims.nonce) throw new Error(\"Nonce (nonce) claim must be a string present in the ID token\");\n if (t.claims.nonce !== e.nonce) throw new Error('Nonce (nonce) claim mismatch in the ID token; expected \"'.concat(e.nonce, '\", found \"').concat(t.claims.nonce, '\"'));\n }\n if (e.max_age && !ga(t.claims.auth_time)) throw new Error(\"Authentication Time (auth_time) claim must be a number present in the ID token when Max Age (max_age) is specified\");\n if (!ga(t.claims.exp)) throw new Error(\"Expiration Time (exp) claim must be a number present in the ID token\");\n if (!ga(t.claims.iat)) throw new Error(\"Issued At (iat) claim must be a number present in the ID token\");\n var n = e.leeway || 60,\n r = new Date(e.now || Date.now()),\n o = new Date(0),\n i = new Date(0),\n a = new Date(0);\n if (a.setUTCSeconds(parseInt(t.claims.auth_time) + e.max_age + n), o.setUTCSeconds(t.claims.exp + n), i.setUTCSeconds(t.claims.nbf - n), r > o) throw new Error(\"Expiration Time (exp) claim error in the ID token; current time (\".concat(r, \") is after expiration time (\").concat(o, \")\"));\n if (ga(t.claims.nbf) && r < i) throw new Error(\"Not Before time (nbf) claim in the ID token indicates that this token can't be used just yet. Currrent time (\".concat(r, \") is before \").concat(i));\n if (ga(t.claims.auth_time) && r > a) throw new Error(\"Authentication Time (auth_time) claim in the ID token indicates that too much time has passed since the last end-user authentication. Currrent time (\".concat(r, \") is after last auth at \").concat(a));\n if (e.organizationId) {\n if (!t.claims.org_id) throw new Error(\"Organization ID (org_id) claim must be a string present in the ID token\");\n if (e.organizationId !== t.claims.org_id) throw new Error('Organization ID (org_id) claim mismatch in the ID token; expected \"'.concat(e.organizationId, '\", found \"').concat(t.claims.org_id, '\"'));\n }\n return t;\n },\n ka = l(function (e, t) {\n var n = s && s.__assign || function () {\n return n = Object.assign || function (e) {\n for (var t, n = 1, r = arguments.length; n < r; n++) for (var o in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);\n return e;\n }, n.apply(this, arguments);\n };\n function r(e, t) {\n if (!t) return \"\";\n var n = \"; \" + e;\n return !0 === t ? n : n + \"=\" + t;\n }\n function o(e, t, n) {\n return encodeURIComponent(e).replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent).replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\") + \"=\" + encodeURIComponent(t).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent) + function (e) {\n if (\"number\" == typeof e.expires) {\n var t = new Date();\n t.setMilliseconds(t.getMilliseconds() + 864e5 * e.expires), e.expires = t;\n }\n return r(\"Expires\", e.expires ? e.expires.toUTCString() : \"\") + r(\"Domain\", e.domain) + r(\"Path\", e.path) + r(\"Secure\", e.secure) + r(\"SameSite\", e.sameSite);\n }(n);\n }\n function i(e) {\n for (var t = {}, n = e ? e.split(\"; \") : [], r = /(%[\\dA-F]{2})+/gi, o = 0; o < n.length; o++) {\n var i = n[o].split(\"=\"),\n c = i.slice(1).join(\"=\");\n '\"' === c.charAt(0) && (c = c.slice(1, -1));\n try {\n t[i[0].replace(r, decodeURIComponent)] = c.replace(r, decodeURIComponent);\n } catch (e) {}\n }\n return t;\n }\n function c() {\n return i(document.cookie);\n }\n function a(e, t, r) {\n document.cookie = o(e, t, n({\n path: \"/\"\n }, r));\n }\n t.__esModule = !0, t.encode = o, t.parse = i, t.getAll = c, t.get = function (e) {\n return c()[e];\n }, t.set = a, t.remove = function (e, t) {\n a(e, \"\", n(n({}, t), {\n expires: -1\n }));\n };\n });\nu(ka), ka.encode, ka.parse, ka.getAll;\nvar _a = ka.get,\n Ia = ka.set,\n Oa = ka.remove,\n xa = {\n get: function (e) {\n var t = _a(e);\n if (void 0 !== t) return JSON.parse(t);\n },\n save: function (e, t, n) {\n var r = {};\n \"https:\" === window.location.protocol && (r = {\n secure: !0,\n sameSite: \"none\"\n }), (null == n ? void 0 : n.daysUntilExpire) && (r.expires = n.daysUntilExpire), (null == n ? void 0 : n.cookieDomain) && (r.domain = n.cookieDomain), Ia(e, JSON.stringify(t), r);\n },\n remove: function (e, t) {\n var n = {};\n (null == t ? void 0 : t.cookieDomain) && (n.domain = t.cookieDomain), Oa(e, n);\n }\n },\n Ta = {\n get: function (e) {\n var t = xa.get(e);\n return t || xa.get(\"\".concat(\"_legacy_\").concat(e));\n },\n save: function (e, t, n) {\n var r = {};\n \"https:\" === window.location.protocol && (r = {\n secure: !0\n }), (null == n ? void 0 : n.daysUntilExpire) && (r.expires = n.daysUntilExpire), Ia(\"\".concat(\"_legacy_\").concat(e), JSON.stringify(t), r), xa.save(e, t, n);\n },\n remove: function (e, t) {\n var n = {};\n (null == t ? void 0 : t.cookieDomain) && (n.domain = t.cookieDomain), Oa(e, n), xa.remove(e, t), xa.remove(\"\".concat(\"_legacy_\").concat(e), t);\n }\n },\n Ca = {\n get: function (e) {\n if (\"undefined\" != typeof sessionStorage) {\n var t = sessionStorage.getItem(e);\n if (void 0 !== t) return JSON.parse(t);\n }\n },\n save: function (e, t) {\n sessionStorage.setItem(e, JSON.stringify(t));\n },\n remove: function (e) {\n sessionStorage.removeItem(e);\n }\n };\nfunction ja(e, t, n) {\n var r = void 0 === t ? null : t,\n o = function (e, t) {\n var n = atob(e);\n if (t) {\n for (var r = new Uint8Array(n.length), o = 0, i = n.length; o < i; ++o) r[o] = n.charCodeAt(o);\n return String.fromCharCode.apply(null, new Uint16Array(r.buffer));\n }\n return n;\n }(e, void 0 !== n && n),\n i = o.indexOf(\"\\n\", 10) + 1,\n c = o.substring(i) + (r ? \"//# sourceMappingURL=\" + r : \"\"),\n a = new Blob([c], {\n type: \"application/javascript\"\n });\n return URL.createObjectURL(a);\n}\nvar La,\n Ra,\n Wa,\n Za,\n Ea = (La = \"Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHQ9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gdD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIHIgaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSYmKHRbcl09ZVtyXSl9LHQoZSxyKX07ZnVuY3Rpb24gZShlLHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByJiZudWxsIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJDbGFzcyBleHRlbmRzIHZhbHVlICIrU3RyaW5nKHIpKyIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9dChlLHIpLGUucHJvdG90eXBlPW51bGw9PT1yP09iamVjdC5jcmVhdGUocik6KG4ucHJvdG90eXBlPXIucHJvdG90eXBlLG5ldyBuKX12YXIgcj1mdW5jdGlvbigpe3JldHVybiByPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBvIGluIGU9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG8pJiYodFtvXT1lW29dKTtyZXR1cm4gdH0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIG4odCxlLHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8sYyl7ZnVuY3Rpb24gaSh0KXt0cnl7cyhuLm5leHQodCkpfWNhdGNoKHQpe2ModCl9fWZ1bmN0aW9uIGEodCl7dHJ5e3Mobi50aHJvdyh0KSl9Y2F0Y2godCl7Yyh0KX19ZnVuY3Rpb24gcyh0KXt2YXIgZTt0LmRvbmU/byh0LnZhbHVlKTooZT10LnZhbHVlLGUgaW5zdGFuY2VvZiByP2U6bmV3IHIoKGZ1bmN0aW9uKHQpe3QoZSl9KSkpLnRoZW4oaSxhKX1zKChuPW4uYXBwbHkodCxlfHxbXSkpLm5leHQoKSl9KSl9ZnVuY3Rpb24gbyh0LGUpe3ZhciByLG4sbyxjLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIGM9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoY1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxjO2Z1bmN0aW9uIGEoYyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtpZihyKXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTtmb3IoO2k7KXRyeXtpZihyPTEsbiYmKG89MiZjWzBdP24ucmV0dXJuOmNbMF0/bi50aHJvd3x8KChvPW4ucmV0dXJuKSYmby5jYWxsKG4pLDApOm4ubmV4dCkmJiEobz1vLmNhbGwobixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gobj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gaS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTppLmxhYmVsKyssbj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz1pLnRyeXMsKG89by5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSl8fDYhPT1jWzBdJiYyIT09Y1swXSkpe2k9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2kubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmaS5sYWJlbDxvWzFdKXtpLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmkubGFiZWw8b1syXSl7aS5sYWJlbD1vWzJdLGkub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmaS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9ZS5jYWxsKHQsaSl9Y2F0Y2godCl7Yz1bNix0XSxuPTB9ZmluYWxseXtyPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX0oW2MsYV0pfX19ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1bXSksdCYmIWUuaW5jbHVkZXModCk/dDoiIn12YXIgaT1mdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbil7dmFyIG89dC5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIG8uZXJyb3I9ZSxvLmVycm9yX2Rlc2NyaXB0aW9uPW4sT2JqZWN0LnNldFByb3RvdHlwZU9mKG8sci5wcm90b3R5cGUpLG99cmV0dXJuIGUocix0KSxyLmZyb21QYXlsb2FkPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcih0LmVycm9yLHQuZXJyb3JfZGVzY3JpcHRpb24pfSxyfShFcnJvcik7IWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSxuLG8sYyl7dm9pZCAwPT09YyYmKGM9bnVsbCk7dmFyIGk9dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gaS5zdGF0ZT1vLGkuYXBwU3RhdGU9YyxPYmplY3Quc2V0UHJvdG90eXBlT2YoaSxyLnByb3RvdHlwZSksaX1lKHIsdCl9KGkpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLnBvcHVwPWUsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sci5wcm90b3R5cGUpLG59ZShyLHQpfShmdW5jdGlvbih0KXtmdW5jdGlvbiByKCl7dmFyIGU9dC5jYWxsKHRoaXMsInRpbWVvdXQiLCJUaW1lb3V0Iil8fHRoaXM7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihlLHIucHJvdG90eXBlKSxlfXJldHVybiBlKHIsdCkscn0oaSkpLGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoZSl7dmFyIG49dC5jYWxsKHRoaXMsImNhbmNlbGxlZCIsIlBvcHVwIGNsb3NlZCIpfHx0aGlzO3JldHVybiBuLnBvcHVwPWUsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sci5wcm90b3R5cGUpLG59ZShyLHQpfShpKSxmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsbixvKXt2YXIgYz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBjLm1mYV90b2tlbj1vLE9iamVjdC5zZXRQcm90b3R5cGVPZihjLHIucHJvdG90eXBlKSxjfWUocix0KX0oaSk7dmFyIGE9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLG4pe3ZhciBvPXQuY2FsbCh0aGlzLCJtaXNzaW5nX3JlZnJlc2hfdG9rZW4iLCJNaXNzaW5nIFJlZnJlc2ggVG9rZW4gKGF1ZGllbmNlOiAnIi5jb25jYXQoYyhlLFsiZGVmYXVsdCJdKSwiJywgc2NvcGU6ICciKS5jb25jYXQoYyhuKSwiJykiKSl8fHRoaXM7cmV0dXJuIG8uYXVkaWVuY2U9ZSxvLnNjb3BlPW4sT2JqZWN0LnNldFByb3RvdHlwZU9mKG8sci5wcm90b3R5cGUpLG99cmV0dXJuIGUocix0KSxyfShpKSxzPXt9LHU9ZnVuY3Rpb24odCxlKXtyZXR1cm4iIi5jb25jYXQodCwifCIpLmNvbmNhdChlKX07YWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YSxjPWUudGltZW91dCxpPWUuYXV0aCxmPWUuZmV0Y2hVcmwsbD1lLmZldGNoT3B0aW9ucyxwPWUudXNlRm9ybURhdGEsaD1mdW5jdGlvbih0LGUpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXTtpZighcilyZXR1cm4gdDt2YXIgbixvLGM9ci5jYWxsKHQpLGk9W107dHJ5e2Zvcig7KHZvaWQgMD09PWV8fGUtLSA+MCkmJiEobj1jLm5leHQoKSkuZG9uZTspaS5wdXNoKG4udmFsdWUpfWNhdGNoKHQpe289e2Vycm9yOnR9fWZpbmFsbHl7dHJ5e24mJiFuLmRvbmUmJihyPWMucmV0dXJuKSYmci5jYWxsKGMpfWZpbmFsbHl7aWYobyl0aHJvdyBvLmVycm9yfX1yZXR1cm4gaX0odC5wb3J0cywxKVswXTtyZXR1cm4gbih2b2lkIDAsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdCxlLG4seSx2LGIsZCx3LE8sXztyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOm49KGU9aXx8e30pLmF1ZGllbmNlLHk9ZS5zY29wZSxvLmxhYmVsPTE7Y2FzZSAxOmlmKG8udHJ5cy5wdXNoKFsxLDcsLDhdKSwhKHY9cD8obT1sLmJvZHksaz1uZXcgVVJMU2VhcmNoUGFyYW1zKG0pLFA9e30say5mb3JFYWNoKChmdW5jdGlvbih0LGUpe1BbZV09dH0pKSxQKTpKU09OLnBhcnNlKGwuYm9keSkpLnJlZnJlc2hfdG9rZW4mJiJyZWZyZXNoX3Rva2VuIj09PXYuZ3JhbnRfdHlwZSl7aWYoYj1mdW5jdGlvbih0LGUpe3JldHVybiBzW3UodCxlKV19KG4seSksIWIpdGhyb3cgbmV3IGEobix5KTtsLmJvZHk9cD9uZXcgVVJMU2VhcmNoUGFyYW1zKHIocih7fSx2KSx7cmVmcmVzaF90b2tlbjpifSkpLnRvU3RyaW5nKCk6SlNPTi5zdHJpbmdpZnkocihyKHt9LHYpLHtyZWZyZXNoX3Rva2VuOmJ9KSl9ZD12b2lkIDAsImZ1bmN0aW9uIj09dHlwZW9mIEFib3J0Q29udHJvbGxlciYmKGQ9bmV3IEFib3J0Q29udHJvbGxlcixsLnNpZ25hbD1kLnNpZ25hbCksdz12b2lkIDAsby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gby50cnlzLnB1c2goWzIsNCwsNV0pLFs0LFByb21pc2UucmFjZShbKGc9YyxuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7cmV0dXJuIHNldFRpbWVvdXQodCxnKX0pKSksZmV0Y2goZixyKHt9LGwpKV0pXTtjYXNlIDM6cmV0dXJuIHc9by5zZW50KCksWzMsNV07Y2FzZSA0OnJldHVybiBPPW8uc2VudCgpLGgucG9zdE1lc3NhZ2Uoe2Vycm9yOk8ubWVzc2FnZX0pLFsyXTtjYXNlIDU6cmV0dXJuIHc/WzQsdy5qc29uKCldOihkJiZkLmFib3J0KCksaC5wb3N0TWVzc2FnZSh7ZXJyb3I6IlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyJ9KSxbMl0pO2Nhc2UgNjpyZXR1cm4odD1vLnNlbnQoKSkucmVmcmVzaF90b2tlbj8oZnVuY3Rpb24odCxlLHIpe3NbdShlLHIpXT10fSh0LnJlZnJlc2hfdG9rZW4sbix5KSxkZWxldGUgdC5yZWZyZXNoX3Rva2VuKTpmdW5jdGlvbih0LGUpe2RlbGV0ZSBzW3UodCxlKV19KG4seSksaC5wb3N0TWVzc2FnZSh7b2s6dy5vayxqc29uOnR9KSxbMyw4XTtjYXNlIDc6cmV0dXJuIF89by5zZW50KCksaC5wb3N0TWVzc2FnZSh7b2s6ITEsanNvbjp7ZXJyb3JfZGVzY3JpcHRpb246Xy5tZXNzYWdlfX0pLFszLDhdO2Nhc2UgODpyZXR1cm5bMl19dmFyIGcsbSxrLFB9KSl9KSl9KSl9KCk7Cgo=\", Ra = null, Wa = !1, function (e) {\n return Za = Za || ja(La, Ra, Wa), new Worker(Za, e);\n }),\n Ga = {},\n Aa = function () {\n function e(e, t) {\n this.cache = e, this.clientId = t, this.manifestKey = this.createManifestKeyFrom(this.clientId);\n }\n return e.prototype.add = function (e) {\n var t;\n return o(this, void 0, void 0, function () {\n var n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return r = Set.bind, [4, this.cache.get(this.manifestKey)];\n case 1:\n return (n = new (r.apply(Set, [void 0, (null === (t = o.sent()) || void 0 === t ? void 0 : t.keys) || []]))()).add(e), [4, this.cache.set(this.manifestKey, {\n keys: a([], c(n), !1)\n })];\n case 2:\n return o.sent(), [2];\n }\n });\n });\n }, e.prototype.remove = function (e) {\n return o(this, void 0, void 0, function () {\n var t, n;\n return i(this, function (r) {\n switch (r.label) {\n case 0:\n return [4, this.cache.get(this.manifestKey)];\n case 1:\n return (t = r.sent()) ? ((n = new Set(t.keys)).delete(e), n.size > 0 ? [4, this.cache.set(this.manifestKey, {\n keys: a([], c(n), !1)\n })] : [3, 3]) : [3, 5];\n case 2:\n case 4:\n return [2, r.sent()];\n case 3:\n return [4, this.cache.remove(this.manifestKey)];\n case 5:\n return [2];\n }\n });\n });\n }, e.prototype.get = function () {\n return this.cache.get(this.manifestKey);\n }, e.prototype.clear = function () {\n return this.cache.remove(this.manifestKey);\n }, e.prototype.createManifestKeyFrom = function (e) {\n return \"\".concat(\"@@auth0spajs@@\", \"::\").concat(e);\n }, e;\n }(),\n Pa = new Xc(),\n Xa = {\n memory: function () {\n return new va().enclosedCache;\n },\n localstorage: function () {\n return new ya();\n }\n },\n Fa = function (e) {\n return Xa[e];\n },\n Ka = function () {\n return !/Trident.*rv:11\\.0/.test(navigator.userAgent);\n },\n Na = function () {\n function e(e) {\n var t,\n n,\n c,\n a,\n s = this;\n if (this.options = e, this._releaseLockOnPageHide = function () {\n return o(s, void 0, void 0, function () {\n return i(this, function (e) {\n switch (e.label) {\n case 0:\n return [4, Pa.releaseLock(\"auth0.lock.getTokenSilently\")];\n case 1:\n return e.sent(), window.removeEventListener(\"pagehide\", this._releaseLockOnPageHide), [2];\n }\n });\n });\n }, \"undefined\" != typeof window && function () {\n if (!Qc()) throw new Error(\"For security reasons, `window.crypto` is required to run `auth0-spa-js`.\");\n if (void 0 === qc()) throw new Error(\"\\n auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/master/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\\n \");\n }(), e.cache && e.cacheLocation && console.warn(\"Both `cache` and `cacheLocation` options have been specified in the Auth0Client configuration; ignoring `cacheLocation` and using `cache`.\"), e.cache) c = e.cache;else {\n if (this.cacheLocation = e.cacheLocation || \"memory\", !Fa(this.cacheLocation)) throw new Error('Invalid cache location \"'.concat(this.cacheLocation, '\"'));\n c = Fa(this.cacheLocation)();\n }\n this.httpTimeoutMs = e.httpTimeoutInSeconds ? 1e3 * e.httpTimeoutInSeconds : 1e4, this.cookieStorage = !1 === e.legacySameSiteCookie ? xa : Ta, this.orgHintCookieName = (a = this.options.client_id, \"auth0.\".concat(a, \".organization_hint\")), this.isAuthenticatedCookieName = function (e) {\n return \"auth0.\".concat(e, \".is.authenticated\");\n }(this.options.client_id), this.sessionCheckExpiryDays = e.sessionCheckExpiryDays || 1;\n var u,\n l = e.useCookiesForTransactions ? this.cookieStorage : Ca;\n this.scope = this.options.scope, this.transactionManager = new ba(l, this.options.client_id), this.nowProvider = this.options.nowProvider || Uc, this.cacheManager = new ma(c, c.allKeys ? null : new Aa(c, this.options.client_id), this.nowProvider), this.domainUrl = (u = this.options.domain, /^https?:\\/\\//.test(u) ? u : \"https://\".concat(u)), this.tokenIssuer = function (e, t) {\n return e ? e.startsWith(\"https://\") ? e : \"https://\".concat(e, \"/\") : \"\".concat(t, \"/\");\n }(this.options.issuer, this.domainUrl), this.defaultScope = ha(\"openid\", void 0 !== (null === (n = null === (t = this.options) || void 0 === t ? void 0 : t.advancedOptions) || void 0 === n ? void 0 : n.defaultScope) ? this.options.advancedOptions.defaultScope : \"openid profile email\"), this.options.useRefreshTokens && (this.scope = ha(this.scope, \"offline_access\")), \"undefined\" != typeof window && window.Worker && this.options.useRefreshTokens && \"memory\" === this.cacheLocation && Ka() && (this.worker = new Ea()), this.customOptions = function (e) {\n return e.advancedOptions, e.audience, e.auth0Client, e.authorizeTimeoutInSeconds, e.cacheLocation, e.cache, e.client_id, e.domain, e.issuer, e.leeway, e.max_age, e.nowProvider, e.redirect_uri, e.scope, e.useRefreshTokens, e.useRefreshTokensFallback, e.useCookiesForTransactions, e.useFormData, r(e, [\"advancedOptions\", \"audience\", \"auth0Client\", \"authorizeTimeoutInSeconds\", \"cacheLocation\", \"cache\", \"client_id\", \"domain\", \"issuer\", \"leeway\", \"max_age\", \"nowProvider\", \"redirect_uri\", \"scope\", \"useRefreshTokens\", \"useRefreshTokensFallback\", \"useCookiesForTransactions\", \"useFormData\"]);\n }(e), this.useRefreshTokensFallback = !1 !== this.options.useRefreshTokensFallback;\n }\n return e.prototype._url = function (e) {\n var t = encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client || Nc)));\n return \"\".concat(this.domainUrl).concat(e, \"&auth0Client=\").concat(t);\n }, e.prototype._getParams = function (e, t, o, i, c) {\n var a = this.options;\n a.useRefreshTokens, a.useCookiesForTransactions, a.useFormData, a.auth0Client, a.cacheLocation, a.advancedOptions, a.detailedResponse, a.nowProvider, a.authorizeTimeoutInSeconds, a.legacySameSiteCookie, a.sessionCheckExpiryDays, a.domain, a.leeway, a.httpTimeoutInSeconds;\n var s = r(a, [\"useRefreshTokens\", \"useCookiesForTransactions\", \"useFormData\", \"auth0Client\", \"cacheLocation\", \"advancedOptions\", \"detailedResponse\", \"nowProvider\", \"authorizeTimeoutInSeconds\", \"legacySameSiteCookie\", \"sessionCheckExpiryDays\", \"domain\", \"leeway\", \"httpTimeoutInSeconds\"]);\n return n(n(n({}, s), e), {\n scope: ha(this.defaultScope, this.scope, e.scope),\n response_type: \"code\",\n response_mode: \"query\",\n state: t,\n nonce: o,\n redirect_uri: c || this.options.redirect_uri,\n code_challenge: i,\n code_challenge_method: \"S256\"\n });\n }, e.prototype._authorizeUrl = function (e) {\n return this._url(\"/authorize?\".concat(ta(e)));\n }, e.prototype._verifyIdToken = function (e, t, n) {\n return o(this, void 0, void 0, function () {\n var r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return [4, this.nowProvider()];\n case 1:\n return r = o.sent(), [2, Sa({\n iss: this.tokenIssuer,\n aud: this.options.client_id,\n id_token: e,\n nonce: t,\n organizationId: n,\n leeway: this.options.leeway,\n max_age: this._parseNumber(this.options.max_age),\n now: r\n })];\n }\n });\n });\n }, e.prototype._parseNumber = function (e) {\n return \"string\" != typeof e ? e : parseInt(e, 10) || void 0;\n }, e.prototype._processOrgIdHint = function (e) {\n e ? this.cookieStorage.save(this.orgHintCookieName, e, {\n daysUntilExpire: this.sessionCheckExpiryDays,\n cookieDomain: this.options.cookieDomain\n }) : this.cookieStorage.remove(this.orgHintCookieName, {\n cookieDomain: this.options.cookieDomain\n });\n }, e.prototype.buildAuthorizeUrl = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t, o, c, a, s, u, l, f, d, h, p, y;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return t = e.redirect_uri, o = e.appState, c = r(e, [\"redirect_uri\", \"appState\"]), a = ea($c()), s = ea($c()), u = $c(), [4, na(u)];\n case 1:\n return l = i.sent(), f = oa(l), d = e.fragment ? \"#\".concat(e.fragment) : \"\", h = this._getParams(c, a, s, f, t), p = this._authorizeUrl(h), y = e.organization || this.options.organization, this.transactionManager.create(n({\n nonce: s,\n code_verifier: u,\n appState: o,\n scope: h.scope,\n audience: h.audience || \"default\",\n redirect_uri: h.redirect_uri,\n state: a\n }, y && {\n organizationId: y\n })), [2, p + d];\n }\n });\n });\n }, e.prototype.loginWithPopup = function (e, t) {\n return o(this, void 0, void 0, function () {\n var o, c, a, s, u, l, f, d, h, p, y, v, m;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n if (e = e || {}, !(t = t || {}).popup && (t.popup = function (e) {\n var t = window.screenX + (window.innerWidth - 400) / 2,\n n = window.screenY + (window.innerHeight - 600) / 2;\n return window.open(e, \"auth0:authorize:popup\", \"left=\".concat(t, \",top=\").concat(n, \",width=\").concat(400, \",height=\").concat(600, \",resizable,scrollbars=yes,status=1\"));\n }(\"\"), !t.popup)) throw new Error(\"Unable to open a popup for loginWithPopup - window.open returned `null`\");\n return o = r(e, []), c = ea($c()), a = ea($c()), s = $c(), [4, na(s)];\n case 1:\n return u = i.sent(), l = oa(u), f = this._getParams(o, c, a, l, this.options.redirect_uri || window.location.origin), d = this._authorizeUrl(n(n({}, f), {\n response_mode: \"web_message\"\n })), t.popup.location.href = d, [4, Bc(n(n({}, t), {\n timeoutInSeconds: t.timeoutInSeconds || this.options.authorizeTimeoutInSeconds || 60\n }))];\n case 2:\n if (h = i.sent(), c !== h.state) throw new Error(\"Invalid state\");\n return [4, fa({\n audience: f.audience,\n scope: f.scope,\n baseUrl: this.domainUrl,\n client_id: this.options.client_id,\n code_verifier: s,\n code: h.code,\n grant_type: \"authorization_code\",\n redirect_uri: f.redirect_uri,\n auth0Client: this.options.auth0Client,\n useFormData: this.options.useFormData,\n timeout: this.httpTimeoutMs\n }, this.worker)];\n case 3:\n return p = i.sent(), y = e.organization || this.options.organization, [4, this._verifyIdToken(p.id_token, a, y)];\n case 4:\n return v = i.sent(), m = n(n({}, p), {\n decodedToken: v,\n scope: f.scope,\n audience: f.audience || \"default\",\n client_id: this.options.client_id\n }), [4, this.cacheManager.set(m)];\n case 5:\n return i.sent(), this.cookieStorage.save(this.isAuthenticatedCookieName, !0, {\n daysUntilExpire: this.sessionCheckExpiryDays,\n cookieDomain: this.options.cookieDomain\n }), this._processOrgIdHint(v.claims.org_id), [2];\n }\n });\n });\n }, e.prototype.getUser = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t, n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return t = e.audience || this.options.audience || \"default\", n = ha(this.defaultScope, this.scope, e.scope), [4, this.cacheManager.get(new pa({\n client_id: this.options.client_id,\n audience: t,\n scope: n\n }))];\n case 1:\n return [2, (r = o.sent()) && r.decodedToken && r.decodedToken.user];\n }\n });\n });\n }, e.prototype.getIdTokenClaims = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t, n, r;\n return i(this, function (o) {\n switch (o.label) {\n case 0:\n return t = e.audience || this.options.audience || \"default\", n = ha(this.defaultScope, this.scope, e.scope), [4, this.cacheManager.get(new pa({\n client_id: this.options.client_id,\n audience: t,\n scope: n\n }))];\n case 1:\n return [2, (r = o.sent()) && r.decodedToken && r.decodedToken.claims];\n }\n });\n });\n }, e.prototype.loginWithRedirect = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t, n, o;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return t = e.redirectMethod, n = r(e, [\"redirectMethod\"]), [4, this.buildAuthorizeUrl(n)];\n case 1:\n return o = i.sent(), window.location[t || \"assign\"](o), [2];\n }\n });\n });\n }, e.prototype.handleRedirectCallback = function (e) {\n return void 0 === e && (e = window.location.href), o(this, void 0, void 0, function () {\n var t, r, o, a, s, u, l, f, d, h;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n if (0 === (t = e.split(\"?\").slice(1)).length) throw new Error(\"There are no query params available for parsing.\");\n if (r = function (e) {\n e.indexOf(\"#\") > -1 && (e = e.substr(0, e.indexOf(\"#\")));\n var t = e.split(\"&\"),\n n = {};\n return t.forEach(function (e) {\n var t = c(e.split(\"=\"), 2),\n r = t[0],\n o = t[1];\n n[r] = decodeURIComponent(o);\n }), n.expires_in && (n.expires_in = parseInt(n.expires_in)), n;\n }(t.join(\"\")), o = r.state, a = r.code, s = r.error, u = r.error_description, !(l = this.transactionManager.get())) throw new Error(\"Invalid state\");\n if (this.transactionManager.remove(), s) throw new Hc(s, u, o, l.appState);\n if (!l.code_verifier || l.state && l.state !== o) throw new Error(\"Invalid state\");\n return f = {\n audience: l.audience,\n scope: l.scope,\n baseUrl: this.domainUrl,\n client_id: this.options.client_id,\n code_verifier: l.code_verifier,\n grant_type: \"authorization_code\",\n code: a,\n auth0Client: this.options.auth0Client,\n useFormData: this.options.useFormData,\n timeout: this.httpTimeoutMs\n }, void 0 !== l.redirect_uri && (f.redirect_uri = l.redirect_uri), [4, fa(f, this.worker)];\n case 1:\n return d = i.sent(), [4, this._verifyIdToken(d.id_token, l.nonce, l.organizationId)];\n case 2:\n return h = i.sent(), [4, this.cacheManager.set(n(n(n(n({}, d), {\n decodedToken: h,\n audience: l.audience,\n scope: l.scope\n }), d.scope ? {\n oauthTokenScope: d.scope\n } : null), {\n client_id: this.options.client_id\n }))];\n case 3:\n return i.sent(), this.cookieStorage.save(this.isAuthenticatedCookieName, !0, {\n daysUntilExpire: this.sessionCheckExpiryDays,\n cookieDomain: this.options.cookieDomain\n }), this._processOrgIdHint(h.claims.org_id), [2, {\n appState: l.appState\n }];\n }\n });\n });\n }, e.prototype.checkSession = function (e) {\n return o(this, void 0, void 0, function () {\n var t;\n return i(this, function (n) {\n switch (n.label) {\n case 0:\n if (!this.cookieStorage.get(this.isAuthenticatedCookieName)) {\n if (!this.cookieStorage.get(\"auth0.is.authenticated\")) return [2];\n this.cookieStorage.save(this.isAuthenticatedCookieName, !0, {\n daysUntilExpire: this.sessionCheckExpiryDays,\n cookieDomain: this.options.cookieDomain\n }), this.cookieStorage.remove(\"auth0.is.authenticated\");\n }\n n.label = 1;\n case 1:\n return n.trys.push([1, 3,, 4]), [4, this.getTokenSilently(e)];\n case 2:\n return n.sent(), [3, 4];\n case 3:\n if (t = n.sent(), !Kc.includes(t.error)) throw t;\n return [3, 4];\n case 4:\n return [2];\n }\n });\n });\n }, e.prototype.getTokenSilently = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t,\n o,\n c,\n a,\n s = this;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return t = n(n({\n audience: this.options.audience,\n ignoreCache: !1\n }, e), {\n scope: ha(this.defaultScope, this.scope, e.scope)\n }), o = t.ignoreCache, c = r(t, [\"ignoreCache\"]), [4, (u = function () {\n return s._getTokenSilently(n({\n ignoreCache: o\n }, c));\n }, l = \"\".concat(this.options.client_id, \"::\").concat(c.audience, \"::\").concat(c.scope), f = Ga[l], f || (f = u().finally(function () {\n delete Ga[l], f = null;\n }), Ga[l] = f), f)];\n case 1:\n return a = i.sent(), [2, e.detailedResponse ? a : a.access_token];\n }\n var u, l, f;\n });\n });\n }, e.prototype._getTokenSilently = function (e) {\n return void 0 === e && (e = {}), o(this, void 0, void 0, function () {\n var t, c, a, s, u, l, f, d, h;\n return i(this, function (p) {\n switch (p.label) {\n case 0:\n return t = e.ignoreCache, c = r(e, [\"ignoreCache\"]), t ? [3, 2] : [4, this._getEntryFromCache({\n scope: c.scope,\n audience: c.audience || \"default\",\n client_id: this.options.client_id\n })];\n case 1:\n if (a = p.sent()) return [2, a];\n p.label = 2;\n case 2:\n return [4, (y = function () {\n return Pa.acquireLock(\"auth0.lock.getTokenSilently\", 5e3);\n }, v = 10, void 0 === v && (v = 3), o(void 0, void 0, void 0, function () {\n var e;\n return i(this, function (t) {\n switch (t.label) {\n case 0:\n e = 0, t.label = 1;\n case 1:\n return e < v ? [4, y()] : [3, 4];\n case 2:\n if (t.sent()) return [2, !0];\n t.label = 3;\n case 3:\n return e++, [3, 1];\n case 4:\n return [2, !1];\n }\n });\n }))];\n case 3:\n if (!p.sent()) return [3, 15];\n p.label = 4;\n case 4:\n return p.trys.push([4,, 12, 14]), window.addEventListener(\"pagehide\", this._releaseLockOnPageHide), t ? [3, 6] : [4, this._getEntryFromCache({\n scope: c.scope,\n audience: c.audience || \"default\",\n client_id: this.options.client_id\n })];\n case 5:\n if (a = p.sent()) return [2, a];\n p.label = 6;\n case 6:\n return this.options.useRefreshTokens ? [4, this._getTokenUsingRefreshToken(c)] : [3, 8];\n case 7:\n return u = p.sent(), [3, 10];\n case 8:\n return [4, this._getTokenFromIFrame(c)];\n case 9:\n u = p.sent(), p.label = 10;\n case 10:\n return s = u, [4, this.cacheManager.set(n({\n client_id: this.options.client_id\n }, s))];\n case 11:\n return p.sent(), this.cookieStorage.save(this.isAuthenticatedCookieName, !0, {\n daysUntilExpire: this.sessionCheckExpiryDays,\n cookieDomain: this.options.cookieDomain\n }), l = s.id_token, f = s.access_token, d = s.oauthTokenScope, h = s.expires_in, [2, n(n({\n id_token: l,\n access_token: f\n }, d ? {\n scope: d\n } : null), {\n expires_in: h\n })];\n case 12:\n return [4, Pa.releaseLock(\"auth0.lock.getTokenSilently\")];\n case 13:\n return p.sent(), window.removeEventListener(\"pagehide\", this._releaseLockOnPageHide), [7];\n case 14:\n return [3, 16];\n case 15:\n throw new Yc();\n case 16:\n return [2];\n }\n var y, v;\n });\n });\n }, e.prototype.getTokenWithPopup = function (e, t) {\n return void 0 === e && (e = {}), void 0 === t && (t = {}), o(this, void 0, void 0, function () {\n return i(this, function (r) {\n switch (r.label) {\n case 0:\n return e.audience = e.audience || this.options.audience, e.scope = ha(this.defaultScope, this.scope, e.scope), t = n(n({}, Fc), t), [4, this.loginWithPopup(e, t)];\n case 1:\n return r.sent(), [4, this.cacheManager.get(new pa({\n scope: e.scope,\n audience: e.audience || \"default\",\n client_id: this.options.client_id\n }))];\n case 2:\n return [2, r.sent().access_token];\n }\n });\n });\n }, e.prototype.isAuthenticated = function () {\n return o(this, void 0, void 0, function () {\n return i(this, function (e) {\n switch (e.label) {\n case 0:\n return [4, this.getUser()];\n case 1:\n return [2, !!e.sent()];\n }\n });\n });\n }, e.prototype.buildLogoutUrl = function (e) {\n void 0 === e && (e = {}), null !== e.client_id ? e.client_id = e.client_id || this.options.client_id : delete e.client_id;\n var t = e.federated,\n n = r(e, [\"federated\"]),\n o = t ? \"&federated\" : \"\";\n return this._url(\"/v2/logout?\".concat(ta(n))) + o;\n }, e.prototype.logout = function (e) {\n var t = this;\n void 0 === e && (e = {});\n var n = e.localOnly,\n o = r(e, [\"localOnly\"]);\n if (n && o.federated) throw new Error(\"It is invalid to set both the `federated` and `localOnly` options to `true`\");\n var i = function () {\n if (t.cookieStorage.remove(t.orgHintCookieName, {\n cookieDomain: t.options.cookieDomain\n }), t.cookieStorage.remove(t.isAuthenticatedCookieName, {\n cookieDomain: t.options.cookieDomain\n }), !n) {\n var e = t.buildLogoutUrl(o);\n window.location.assign(e);\n }\n };\n if (this.options.cache) return this.cacheManager.clear().then(function () {\n return i();\n });\n this.cacheManager.clearSync(), i();\n }, e.prototype._getTokenFromIFrame = function (e) {\n return o(this, void 0, void 0, function () {\n var t, o, c, a, s, u, l, f, d, h, p, y, v, m, b, g, w;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return t = ea($c()), o = ea($c()), c = $c(), [4, na(c)];\n case 1:\n a = i.sent(), s = oa(a), u = r(e, [\"detailedResponse\"]), l = this._getParams(u, t, o, s, e.redirect_uri || this.options.redirect_uri || window.location.origin), (f = this.cookieStorage.get(this.orgHintCookieName)) && !l.organization && (l.organization = f), d = this._authorizeUrl(n(n({}, l), {\n prompt: \"none\",\n response_mode: \"web_message\"\n })), i.label = 2;\n case 2:\n if (i.trys.push([2, 6,, 7]), window.crossOriginIsolated) throw new Dc(\"login_required\", \"The application is running in a Cross-Origin Isolated context, silently retrieving a token without refresh token is not possible.\");\n return h = e.timeoutInSeconds || this.options.authorizeTimeoutInSeconds, [4, (S = d, k = this.domainUrl, _ = h, void 0 === _ && (_ = 60), new Promise(function (e, t) {\n var n = window.document.createElement(\"iframe\");\n n.setAttribute(\"width\", \"0\"), n.setAttribute(\"height\", \"0\"), n.style.display = \"none\";\n var r,\n o = function () {\n window.document.body.contains(n) && (window.document.body.removeChild(n), window.removeEventListener(\"message\", r, !1));\n },\n i = setTimeout(function () {\n t(new Yc()), o();\n }, 1e3 * _);\n r = function (n) {\n if (n.origin == k && n.data && \"authorization_response\" === n.data.type) {\n var c = n.source;\n c && c.close(), n.data.response.error ? t(Dc.fromPayload(n.data.response)) : e(n.data.response), clearTimeout(i), window.removeEventListener(\"message\", r, !1), setTimeout(o, 2e3);\n }\n }, window.addEventListener(\"message\", r, !1), window.document.body.appendChild(n), n.setAttribute(\"src\", S);\n }))];\n case 3:\n if (p = i.sent(), t !== p.state) throw new Error(\"Invalid state\");\n return y = e.scope, v = e.audience, m = r(e, [\"scope\", \"audience\", \"redirect_uri\", \"ignoreCache\", \"timeoutInSeconds\", \"detailedResponse\"]), [4, fa(n(n(n({}, this.customOptions), m), {\n scope: y,\n audience: v,\n baseUrl: this.domainUrl,\n client_id: this.options.client_id,\n code_verifier: c,\n code: p.code,\n grant_type: \"authorization_code\",\n redirect_uri: l.redirect_uri,\n auth0Client: this.options.auth0Client,\n useFormData: this.options.useFormData,\n timeout: m.timeout || this.httpTimeoutMs\n }), this.worker)];\n case 4:\n return b = i.sent(), [4, this._verifyIdToken(b.id_token, o)];\n case 5:\n return g = i.sent(), this._processOrgIdHint(g.claims.org_id), [2, n(n({}, b), {\n decodedToken: g,\n scope: l.scope,\n oauthTokenScope: b.scope,\n audience: l.audience || \"default\"\n })];\n case 6:\n throw \"login_required\" === (w = i.sent()).error && this.logout({\n localOnly: !0\n }), w;\n case 7:\n return [2];\n }\n var S, k, _;\n });\n });\n }, e.prototype._getTokenUsingRefreshToken = function (e) {\n return o(this, void 0, void 0, function () {\n var t, o, c, a, s, u, l, f, d;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return e.scope = ha(this.defaultScope, this.options.scope, e.scope), [4, this.cacheManager.get(new pa({\n scope: e.scope,\n audience: e.audience || \"default\",\n client_id: this.options.client_id\n }))];\n case 1:\n return (t = i.sent()) && t.refresh_token || this.worker ? [3, 4] : this.useRefreshTokensFallback ? [4, this._getTokenFromIFrame(e)] : [3, 3];\n case 2:\n return [2, i.sent()];\n case 3:\n throw new Mc(e.audience || \"default\", e.scope);\n case 4:\n o = e.redirect_uri || this.options.redirect_uri || window.location.origin, a = e.scope, s = e.audience, u = r(e, [\"scope\", \"audience\", \"ignoreCache\", \"timeoutInSeconds\", \"detailedResponse\"]), l = \"number\" == typeof e.timeoutInSeconds ? 1e3 * e.timeoutInSeconds : null, i.label = 5;\n case 5:\n return i.trys.push([5, 7,, 10]), [4, fa(n(n(n(n(n({}, this.customOptions), u), {\n audience: s,\n scope: a,\n baseUrl: this.domainUrl,\n client_id: this.options.client_id,\n grant_type: \"refresh_token\",\n refresh_token: t && t.refresh_token,\n redirect_uri: o\n }), l && {\n timeout: l\n }), {\n auth0Client: this.options.auth0Client,\n useFormData: this.options.useFormData,\n timeout: this.httpTimeoutMs\n }), this.worker)];\n case 6:\n return c = i.sent(), [3, 10];\n case 7:\n return ((f = i.sent()).message.indexOf(\"Missing Refresh Token\") > -1 || f.message && f.message.indexOf(\"invalid refresh token\") > -1) && this.useRefreshTokensFallback ? [4, this._getTokenFromIFrame(e)] : [3, 9];\n case 8:\n return [2, i.sent()];\n case 9:\n throw f;\n case 10:\n return [4, this._verifyIdToken(c.id_token)];\n case 11:\n return d = i.sent(), [2, n(n({}, c), {\n decodedToken: d,\n scope: e.scope,\n oauthTokenScope: c.scope,\n audience: e.audience || \"default\"\n })];\n }\n });\n });\n }, e.prototype._getEntryFromCache = function (e) {\n var t = e.scope,\n r = e.audience,\n c = e.client_id;\n return o(this, void 0, void 0, function () {\n var e, o, a, s, u;\n return i(this, function (i) {\n switch (i.label) {\n case 0:\n return [4, this.cacheManager.get(new pa({\n scope: t,\n audience: r,\n client_id: c\n }), 60)];\n case 1:\n return (e = i.sent()) && e.access_token ? (o = e.id_token, a = e.access_token, s = e.oauthTokenScope, u = e.expires_in, [2, n(n({\n id_token: o,\n access_token: a\n }, s ? {\n scope: s\n } : null), {\n expires_in: u\n })]) : [2];\n }\n });\n });\n }, e;\n }(),\n Ua = function () {};\nfunction Da(e) {\n return o(this, void 0, void 0, function () {\n var t;\n return i(this, function (n) {\n switch (n.label) {\n case 0:\n return [4, (t = new Na(e)).checkSession()];\n case 1:\n return n.sent(), [2, t];\n }\n });\n });\n}\nexport { Na as Auth0Client, Hc as AuthenticationError, Dc as GenericError, va as InMemoryCache, ya as LocalStorageCache, zc as MfaRequiredError, Vc as PopupCancelledError, Jc as PopupTimeoutError, Yc as TimeoutError, Ua as User, Da as default };\n//# sourceMappingURL=auth0-spa-js.production.esm.js.map","import styled, { css } from 'styled-components';\nimport React from 'react';\nimport { useDebounce } from 'usehooks-ts';\nimport { useAuth } from '@acin/user-accounts';\nimport { themeHelpers, Text, Badge, Logo, View, useThemeProvider, generate, Tooltip, Alert, trackPendoEvent, WideLogo, SearchBar, Loading, Modal, Checkbox, CheckList } from '@acin/ui-core';\nimport { gql, useLazyQuery } from '@apollo/client';\n\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***************************************************************************** */\n\nvar __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};\nfunction __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\nfunction __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\nfunction __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\nvar isDarkMode = themeHelpers.isDarkMode;\n// This named style should be the wrapper for the component i.e. the module\nvar ResultRow = styled.button(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: \", \" 0;\\n background-color: transparent;\\n border: 2px solid transparent;\\n border-radius: 2px;\\n width: 100%;\\n cursor: pointer;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n :hover {\\n border: 2px solid \", \";\\n }\\n\"], [\"\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: \", \" 0;\\n background-color: transparent;\\n border: 2px solid transparent;\\n border-radius: 2px;\\n width: 100%;\\n cursor: pointer;\\n\\n &:not(:last-child) {\\n border-bottom: 1px solid \", \";\\n }\\n\\n \", \" {\\n color: \", \";\\n }\\n\\n :hover {\\n border: 2px solid \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(2);\n}, function (p) {\n return p.theme.colors.borders.getValue(4);\n}, Text, function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(3);\n}, function (p) {\n return p.theme.colors.primary.getValue(600).main;\n});\nvar ResultBadge = styled(Badge)(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"\\n white-space: nowrap;\\n\"], [\"\\n white-space: nowrap;\\n\"])));\nvar NetworkLogo = styled(Logo)(templateObject_3 || (templateObject_3 = __makeTemplateObject([\"\\n flex-shrink: 0;\\n margin-right: \", \";\\n\"], [\"\\n flex-shrink: 0;\\n margin-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar LeftContent = styled(View)(templateObject_4 || (templateObject_4 = __makeTemplateObject([\"\\n display: flex;\\n min-width: 0;\\n align-items: center;\\n overflow: hidden;\\n padding-right: \", \";\\n\"], [\"\\n display: flex;\\n min-width: 0;\\n align-items: center;\\n overflow: hidden;\\n padding-right: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar templateObject_1, templateObject_2, templateObject_3, templateObject_4;\nvar assetTypeMap = {\n CLIENT_RISK: {\n label: 'Risk',\n variant: 'accent2'\n },\n ACIN_RISK: {\n label: 'Risk',\n variant: 'accent2'\n },\n CLIENT_CONTROL: {\n label: 'Control',\n variant: 'dataVis'\n },\n ACIN_CONTROL: {\n label: 'Control',\n variant: 'dataVis'\n },\n REG_ALERT: {\n label: 'Regulatory Alert',\n variant: 'warning'\n },\n NETWORK_UPDATE: {\n label: 'Network Update',\n variant: 'primary'\n },\n NETWORK_SCENARIO: {\n label: 'Network Scenario',\n variant: 'info'\n },\n REPORT: {\n label: 'Insight Report',\n variant: 'accent1'\n },\n REPORT_BUILDER: {\n label: 'Insight Report',\n variant: 'accent1'\n }\n};\nvar networkAssetTypes = ['ACIN_CONTROL', 'ACIN_RISK'];\nvar ResultRow$1 = function (props) {\n var className = props.className,\n id = props.id,\n text = props.text,\n assetType = props.assetType,\n onNavigate = props.onNavigate;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = assetTypeMap[assetType],\n label = _a.label,\n variant = _a.variant;\n var isNetwork = networkAssetTypes.includes(assetType);\n var badge = /*#__PURE__*/React.createElement(ResultBadge, {\n variant: variant,\n appearance: \"filled\",\n text: label\n });\n return /*#__PURE__*/React.createElement(ResultRow, {\n \"data-testid\": generate([\"result-row row--\" + id], props),\n className: className,\n onClick: function () {\n return onNavigate(id, assetType);\n },\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(LeftContent, null, isNetwork && /*#__PURE__*/React.createElement(NetworkLogo, null), /*#__PURE__*/React.createElement(Tooltip, {\n content: text\n }, function (tooltipRef) {\n return /*#__PURE__*/React.createElement(Text, {\n ellipsis: true,\n reference: tooltipRef\n }, text);\n })), badge);\n};\nvar ResultRow$2 = styled(ResultRow$1)(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$1;\nvar GetGlobalSearchResultsDocument = gql(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject([\"\\n query getGlobalSearchResults($searchTerm: String!, $resultTypes: [GlobalSearchResultAssetType!]) {\\n getGlobalSearchResults(searchTerm: $searchTerm, resultTypes: $resultTypes) {\\n id\\n text\\n assetType\\n }\\n }\\n\"], [\"\\n query getGlobalSearchResults($searchTerm: String!, $resultTypes: [GlobalSearchResultAssetType!]) {\\n getGlobalSearchResults(searchTerm: $searchTerm, resultTypes: $resultTypes) {\\n id\\n text\\n assetType\\n }\\n }\\n\"])));\nfunction useGetGlobalSearchResultsLazyQuery(baseOptions) {\n return useLazyQuery(GetGlobalSearchResultsDocument, baseOptions);\n}\nvar templateObject_1$2;\n\n// This named style should be the wrapper for the component i.e. the module\nvar SearchContainer = styled(View)(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n height: 100%;\\n\"], [\"\\n display: flex;\\n flex-direction: column;\\n overflow: hidden;\\n height: 100%;\\n\"])));\nvar SearchHeader = styled(View)(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject([\"\\n position: relative;\\n padding: \", \";\\n\"], [\"\\n position: relative;\\n padding: \", \";\\n\"])), function (p) {\n return \"0 0 \" + p.theme.spacing.getSize(4);\n});\nvar LogoContainer = styled(View)(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar ResultsWrapper = styled(View)(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject([\"\\n flex: 1;\\n position: relative;\\n overflow-y: scroll;\\n\"], [\"\\n flex: 1;\\n position: relative;\\n overflow-y: scroll;\\n\"])));\nvar ResultRows = styled(View)(templateObject_5 || (templateObject_5 = __makeTemplateObject([\"\\n padding: \", \" 0 0;\\n\"], [\"\\n padding: \", \" 0 0;\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar LogoWrapper = styled(View)(templateObject_6 || (templateObject_6 = __makeTemplateObject([\"\\n width: \", \";\\n margin: 0 auto \", \";\\n display: block;\\n\"], [\"\\n width: \", \";\\n margin: 0 auto \", \";\\n display: block;\\n\"])), function (p) {\n return p.theme.spacing.getSize(30);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar ErrorMessage = styled(Alert)(templateObject_7 || (templateObject_7 = __makeTemplateObject([\"\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n padding: \", \";\\n\"], [\"\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n padding: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(3);\n});\nvar LoadingWrapper = styled(View)(templateObject_8 || (templateObject_8 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n\"])));\nvar templateObject_1$3, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5, templateObject_6, templateObject_7, templateObject_8;\nvar SearchContainer$1 = function (props) {\n var className = props.className,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var activeTheme = useThemeProvider().activeTheme;\n var _a = __read(React.useState(''), 2),\n searchValue = _a[0],\n setSearchValue = _a[1];\n var _b = __read(React.useState(false), 2),\n err = _b[0],\n setErr = _b[1];\n var debouncedValue = useDebounce(searchValue);\n var _c = __read(useGetGlobalSearchResultsLazyQuery(), 2),\n getGlobalSearchResults = _c[0],\n _d = _c[1],\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n React.useEffect(function () {\n if (debouncedValue.length >= 3) {\n getGlobalSearchResults({\n variables: {\n searchTerm: debouncedValue\n }\n });\n trackPendoEvent('Search', {\n searchedTerms: debouncedValue,\n accountCode: (user === null || user === void 0 ? void 0 : user.accountCode) || '',\n accountName: (user === null || user === void 0 ? void 0 : user.accountName) || ''\n });\n }\n }, [debouncedValue, getGlobalSearchResults, user]);\n React.useEffect(function () {\n if (error) {\n setErr(true);\n } else {\n setErr(false);\n }\n }, [error]);\n var handleChange = function (event) {\n setSearchValue(event.target.value);\n setErr(false);\n };\n var handleClear = function () {\n setSearchValue('');\n setErr(false);\n };\n var resultsMessage = React.useMemo(function () {\n if (debouncedValue.length === 0) {\n return null;\n }\n if (debouncedValue.length < 3) {\n return /*#__PURE__*/React.createElement(Text, null, \"Type at least three characters to begin search\");\n }\n return /*#__PURE__*/React.createElement(Text, {\n variant: \"secondary\"\n }, data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length, \" Search Results\");\n }, [data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length, debouncedValue.length]);\n return /*#__PURE__*/React.createElement(SearchContainer, {\n \"data-testid\": generate(['search-container'], props),\n className: className\n }, /*#__PURE__*/React.createElement(SearchHeader, null, /*#__PURE__*/React.createElement(LogoWrapper, null, /*#__PURE__*/React.createElement(WideLogo, {\n variant: activeTheme.name === 'default' ? 'dark' : 'light',\n width: 121\n })), /*#__PURE__*/React.createElement(SearchBar, {\n searchInput: searchValue,\n onSearch: handleChange,\n onClear: handleClear,\n placeholder: \"Search for a risk, control or risk intelligence item\"\n })), /*#__PURE__*/React.createElement(ResultsWrapper, null, err && ( /*#__PURE__*/React.createElement(ErrorMessage, {\n status: \"error\",\n title: \"Oops, something went wrong.\",\n message: \"Please refresh the page or try again later.\"\n })), !loading && !error && resultsMessage, loading && ( /*#__PURE__*/React.createElement(LoadingWrapper, null, /*#__PURE__*/React.createElement(Loading, null))), !!(data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length) && debouncedValue.length > 2 && !loading && ( /*#__PURE__*/React.createElement(ResultRows, null, data.getGlobalSearchResults.map(function (_a) {\n var id = _a.id,\n text = _a.text,\n assetType = _a.assetType;\n return /*#__PURE__*/React.createElement(ResultRow$2, {\n key: id,\n id: id,\n text: text,\n assetType: assetType,\n onNavigate: onNavigate\n });\n })))));\n};\nvar SearchContainer$2 = styled(SearchContainer$1)(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$4;\n\n// This named style should be the wrapper for the component i.e. the module\nvar SearchModal = styled(Modal)(templateObject_1$5 || (templateObject_1$5 = __makeTemplateObject([\"\\n min-height: \", \";\\n\"], [\"\\n min-height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(90);\n});\nvar LoadingWrapper$1 = styled(View)(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n padding-top: \", \";\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n padding-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(20);\n});\nvar Header = styled(View)(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject([\"\\n flex-grow: 1;\\n margin-top: \", \";\\n\"], [\"\\n flex-grow: 1;\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Message = styled(View)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject([\"\\n margin-top: \", \";\\n\"], [\"\\n margin-top: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n});\nvar Results = styled(View)(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject([\"\\n max-width: calc(600px - \", \");\\n flex-grow: 1;\\n max-height: \", \";\\n\"], [\"\\n max-width: calc(600px - \", \");\\n flex-grow: 1;\\n max-height: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(12);\n}, function (p) {\n return p.theme.spacing.getSize(54);\n});\nvar templateObject_1$5, templateObject_2$2, templateObject_3$2, templateObject_4$2, templateObject_5$1;\nvar SearchModal$1 = function (props) {\n var isOpen = props.isOpen,\n onClose = props.onClose,\n onNavigate = props.onNavigate;\n var user = useAuth().user;\n var _a = __read(React.useState(''), 2),\n searchValue = _a[0],\n setSearchValue = _a[1];\n var _b = __read(React.useState(false), 2),\n err = _b[0],\n setErr = _b[1];\n var debouncedValue = useDebounce(searchValue);\n var _c = __read(useGetGlobalSearchResultsLazyQuery(), 2),\n getGlobalSearchResults = _c[0],\n _d = _c[1],\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n React.useEffect(function () {\n if (debouncedValue.length >= 3) {\n getGlobalSearchResults({\n variables: {\n searchTerm: debouncedValue\n }\n });\n trackPendoEvent('Search', {\n searchedTerms: debouncedValue,\n accountCode: (user === null || user === void 0 ? void 0 : user.accountCode) || '',\n accountName: (user === null || user === void 0 ? void 0 : user.accountName) || ''\n });\n }\n }, [debouncedValue, getGlobalSearchResults, user]);\n React.useEffect(function () {\n if (error) {\n setErr(true);\n } else {\n setErr(false);\n }\n }, [error]);\n var handleChange = function (event) {\n setSearchValue(event.target.value);\n setErr(false);\n };\n var handleClear = function () {\n setSearchValue('');\n setErr(false);\n };\n var handleClose = function () {\n handleClear();\n onClose();\n };\n var resultsMessage = React.useMemo(function () {\n if (debouncedValue.length === 0) {\n return null;\n }\n if (debouncedValue.length < 3) {\n return /*#__PURE__*/React.createElement(Text, null, \"Type at least three characters to begin search\");\n }\n return /*#__PURE__*/React.createElement(Text, {\n variant: \"secondary\"\n }, data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length, \" Search Results\");\n }, [data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length, debouncedValue.length]);\n var handleNavigate = function (id, type) {\n onNavigate(id, type);\n handleClose();\n };\n var renderResults = function () {\n if (err) return /*#__PURE__*/React.createElement(Results, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Oops, something went wrong.\",\n message: \"Please refresh the page or try again later.\"\n }));\n if (loading) return /*#__PURE__*/React.createElement(Results, null, /*#__PURE__*/React.createElement(LoadingWrapper$1, null, /*#__PURE__*/React.createElement(Loading, null)));\n if (!!(data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length) && debouncedValue.length > 2 && !loading) return /*#__PURE__*/React.createElement(Results, null, data.getGlobalSearchResults.map(function (_a, index) {\n var id = _a.id,\n text = _a.text,\n assetType = _a.assetType;\n return /*#__PURE__*/React.createElement(ResultRow$2, {\n key: index + id,\n id: id,\n text: text,\n assetType: assetType,\n onNavigate: handleNavigate\n });\n }));\n return undefined;\n };\n return /*#__PURE__*/React.createElement(SearchModal, {\n \"data-testid\": generate(['search-modal'], props),\n show: isOpen || false,\n onClose: handleClose,\n hideFooter: true,\n customWidth: 600,\n customHeader: function () {\n return /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(SearchBar, {\n autoFocus: true,\n searchInput: searchValue,\n onSearch: handleChange,\n onClear: handleClear,\n placeholder: \"Search for a risk, control or risk intelligence item\"\n }), !loading && !error && /*#__PURE__*/React.createElement(Message, null, resultsMessage));\n }\n }, renderResults());\n};\nvar SearchModal$2 = styled(SearchModal$1)(templateObject_1$6 || (templateObject_1$6 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$6;\nvar isDarkMode$1 = themeHelpers.isDarkMode;\n// This named style should be the wrapper for the component i.e. the module\nvar SearchField = styled.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject([\"\\n input {\\n color: \", \";\\n }\\n\"], [\"\\n input {\\n color: \", \";\\n }\\n\"])), function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$1(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(3);\n});\nvar templateObject_1$7;\nvar SearchField$1 = function (props) {\n var className = props.className,\n onSearch = props.onSearch,\n _a = props.placeholder,\n placeholder = _a === void 0 ? 'Search app.acin.com' : _a,\n onClear = props.onClear,\n searchTerm = props.searchTerm,\n onClick = props.onClick;\n var activeTheme = useThemeProvider().activeTheme;\n return /*#__PURE__*/React.createElement(SearchField, {\n \"data-testid\": generate(['search-field'], props),\n className: className,\n onClick: onClick,\n activeTheme: activeTheme\n }, /*#__PURE__*/React.createElement(SearchBar, {\n searchInput: searchTerm || '',\n placeholder: placeholder,\n onSearch: function (e) {\n return onSearch(e.target.value);\n },\n onClear: onClear,\n isInverted: true\n }));\n};\nvar SearchField$2 = styled(SearchField$1)(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$8;\nvar isDarkMode$2 = themeHelpers.isDarkMode;\nvar SearchDropdown = styled.div(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject([\"\\n background: \", \";\\n border-radius: \", \";\\n border: 1px solid \", \";\\n padding: \", \";\\n max-height: 70vh;\\n overflow: hidden;\\n height: fit-content;\\n z-index: 1;\\n color: \", \";\\n\\n \", \"\\n\\n \", \"\\n\"], [\"\\n background: \", \";\\n border-radius: \", \";\\n border: 1px solid \", \";\\n padding: \", \";\\n max-height: 70vh;\\n overflow: hidden;\\n height: fit-content;\\n z-index: 1;\\n color: \", \";\\n\\n \", \"\\n\\n \", \"\\n\"])), function (p) {\n return p.theme.colors.navBackground;\n}, function (p) {\n return p.theme.spacing.getSize(5);\n}, function (p) {\n return p.theme.colors.primary.getValue().context;\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$2(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(3);\n}, function (p) {\n return p.position && css(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject([\"\\n position: absolute;\\n top: \", \"; // Offset\\n left: \", \";\\n width: \", \";\\n \"], [\"\\n position: absolute;\\n top: \", \"; // Offset\\n left: \", \";\\n width: \", \";\\n \"])), p.position.top + 16 + \"px\", p.position.left - 320 + \"px\", p.position.width + 320 + \"px\");\n}, function (p) {\n return p.maxWidth && css(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject([\"\\n max-width: \", \";\\n \"], [\"\\n max-width: \", \";\\n \"])), p.maxWidth);\n});\nvar LoadingWrapper$2 = styled(View)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject([\"\\n display: flex;\\n justify-content: center;\\n\"], [\"\\n display: flex;\\n justify-content: center;\\n\"])));\nvar Header$1 = styled(View)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([\"\\n height: fit-content;\\n\"], [\"\\n height: fit-content;\\n\"])));\nvar Message$1 = styled(View)(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar Results$1 = styled(View)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject([\"\"], [\"\"])));\nvar ResultsText = styled(Text)(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$2(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(1) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(2);\n});\nvar Suggestion = styled(ResultsText)(templateObject_9 || (templateObject_9 = __makeTemplateObject([\"\\n font-style: italic;\\n\"], [\"\\n font-style: italic;\\n\"])));\nvar Wrapper = styled(View)(templateObject_10 || (templateObject_10 = __makeTemplateObject([\"\\n display: flex;\\n flex-direction: row;\\n height: 570px;\\n\"], [\"\\n display: flex;\\n flex-direction: row;\\n height: 570px;\\n\"])));\nvar Filters = styled(View)(templateObject_11 || (templateObject_11 = __makeTemplateObject([\"\\n width: 300px;\\n padding: \", \";\\n background: rgba(255, 255, 255, 0.05);\\n margin-right: \", \";\\n border-radius: \", \";\\n\"], [\"\\n width: 300px;\\n padding: \", \";\\n background: rgba(255, 255, 255, 0.05);\\n margin-right: \", \";\\n border-radius: \", \";\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n return p.theme.spacing.getSize(5);\n});\nvar List = styled(View)(templateObject_12 || (templateObject_12 = __makeTemplateObject([\"\\n width: \", \";\\n flex-grow: 1;\\n overflow-y: scroll;\\n height: 100%;\\n\"], [\"\\n width: \", \";\\n flex-grow: 1;\\n overflow-y: scroll;\\n height: 100%;\\n\"])), function (p) {\n return p.theme.spacing.getSize(45);\n});\nvar Option = styled(Checkbox)(templateObject_13 || (templateObject_13 = __makeTemplateObject([\"\"], [\"\"])));\nvar Title = styled(Text)(templateObject_14 || (templateObject_14 = __makeTemplateObject([\"\\n color: \", \";\\n\"], [\"\\n color: \", \";\\n\"])), function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$2(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(2);\n});\nvar Checkboxes = styled(CheckList)(templateObject_15 || (templateObject_15 = __makeTemplateObject([\"\\n margin-bottom: \", \";\\n\\n label div {\\n color: \", \";\\n }\\n\\n label div:before {\\n border-color: \", \";\\n }\\n\"], [\"\\n margin-bottom: \", \";\\n\\n label div {\\n color: \", \";\\n }\\n\\n label div:before {\\n border-color: \", \";\\n }\\n\"])), function (p) {\n return p.theme.spacing.getSize(4);\n}, function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$2(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(2);\n}, function (p) {\n var _a, _b;\n return p.activeTheme && isDarkMode$2(p.activeTheme) ? (_a = p.activeTheme) === null || _a === void 0 ? void 0 : _a.colors.text.getValue(0) : (_b = p.activeTheme) === null || _b === void 0 ? void 0 : _b.colors.text.getValue(2);\n});\nvar templateObject_1$9, templateObject_2$3, templateObject_3$3, templateObject_4$3, templateObject_5$2, templateObject_6$1, templateObject_7$1, templateObject_8$1, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15;\nvar IUiTheme;\n(function (IUiTheme) {\n IUiTheme[\"Default\"] = \"DEFAULT\";\n IUiTheme[\"Dark\"] = \"DARK\";\n})(IUiTheme || (IUiTheme = {}));\nvar ICalibrateDownloadFileStatus;\n(function (ICalibrateDownloadFileStatus) {\n ICalibrateDownloadFileStatus[\"Progress\"] = \"PROGRESS\";\n ICalibrateDownloadFileStatus[\"Failure\"] = \"FAILURE\";\n ICalibrateDownloadFileStatus[\"Processed\"] = \"PROCESSED\";\n ICalibrateDownloadFileStatus[\"Downloaded\"] = \"DOWNLOADED\";\n})(ICalibrateDownloadFileStatus || (ICalibrateDownloadFileStatus = {}));\nvar IDownloadFileType;\n(function (IDownloadFileType) {\n IDownloadFileType[\"Csv\"] = \"CSV\";\n IDownloadFileType[\"Excel\"] = \"EXCEL\";\n})(IDownloadFileType || (IDownloadFileType = {}));\nvar IDownloadStatus;\n(function (IDownloadStatus) {\n IDownloadStatus[\"Pending\"] = \"PENDING\";\n IDownloadStatus[\"Complete\"] = \"COMPLETE\";\n IDownloadStatus[\"Failed\"] = \"FAILED\";\n})(IDownloadStatus || (IDownloadStatus = {}));\nvar ITableVariant;\n(function (ITableVariant) {\n ITableVariant[\"Instance\"] = \"INSTANCE\";\n ITableVariant[\"Distinct\"] = \"DISTINCT\";\n})(ITableVariant || (ITableVariant = {}));\nvar IApprovalWorkflow;\n(function (IApprovalWorkflow) {\n IApprovalWorkflow[\"Dashboard\"] = \"DASHBOARD\";\n IApprovalWorkflow[\"SubmitReview\"] = \"SUBMIT_REVIEW\";\n IApprovalWorkflow[\"Unassigned\"] = \"UNASSIGNED\";\n})(IApprovalWorkflow || (IApprovalWorkflow = {}));\nvar IDataFormat;\n(function (IDataFormat) {\n IDataFormat[\"Number\"] = \"NUMBER\";\n IDataFormat[\"DateTime\"] = \"DATE_TIME\";\n IDataFormat[\"Text\"] = \"TEXT\";\n})(IDataFormat || (IDataFormat = {}));\nvar IDataMatcherAssignedTo;\n(function (IDataMatcherAssignedTo) {\n IDataMatcherAssignedTo[\"Matcher\"] = \"MATCHER\";\n IDataMatcherAssignedTo[\"Approver\"] = \"APPROVER\";\n})(IDataMatcherAssignedTo || (IDataMatcherAssignedTo = {}));\nvar IDataMatchingMatchStatus;\n(function (IDataMatchingMatchStatus) {\n IDataMatchingMatchStatus[\"Unmatched\"] = \"UNMATCHED\";\n IDataMatchingMatchStatus[\"Matched\"] = \"MATCHED\";\n IDataMatchingMatchStatus[\"Rejected\"] = \"REJECTED\";\n IDataMatchingMatchStatus[\"Approved\"] = \"APPROVED\";\n})(IDataMatchingMatchStatus || (IDataMatchingMatchStatus = {}));\nvar IDataMatchingStatus;\n(function (IDataMatchingStatus) {\n IDataMatchingStatus[\"Todo\"] = \"TODO\";\n IDataMatchingStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IDataMatchingStatus[\"Complete\"] = \"COMPLETE\";\n})(IDataMatchingStatus || (IDataMatchingStatus = {}));\nvar IFileUploadStatus;\n(function (IFileUploadStatus) {\n IFileUploadStatus[\"Uploaded\"] = \"UPLOADED\";\n IFileUploadStatus[\"Processing\"] = \"PROCESSING\";\n IFileUploadStatus[\"Completed\"] = \"COMPLETED\";\n IFileUploadStatus[\"UnsupportedFile\"] = \"UNSUPPORTED_FILE\";\n IFileUploadStatus[\"Error\"] = \"ERROR\";\n IFileUploadStatus[\"CompletedWithWarnings\"] = \"COMPLETED_WITH_WARNINGS\";\n})(IFileUploadStatus || (IFileUploadStatus = {}));\nvar IFilterGroupInputType;\n(function (IFilterGroupInputType) {\n IFilterGroupInputType[\"Dropdown\"] = \"DROPDOWN\";\n IFilterGroupInputType[\"Tags\"] = \"TAGS\";\n IFilterGroupInputType[\"Checkbox\"] = \"CHECKBOX\";\n IFilterGroupInputType[\"Range\"] = \"RANGE\";\n})(IFilterGroupInputType || (IFilterGroupInputType = {}));\nvar IMatchingJobControlStatus;\n(function (IMatchingJobControlStatus) {\n IMatchingJobControlStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobControlStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobControlStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobControlStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobControlStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobControlStatus || (IMatchingJobControlStatus = {}));\nvar IMatchingJobQualityLevel;\n(function (IMatchingJobQualityLevel) {\n IMatchingJobQualityLevel[\"Clear\"] = \"CLEAR\";\n IMatchingJobQualityLevel[\"Unclear\"] = \"UNCLEAR\";\n})(IMatchingJobQualityLevel || (IMatchingJobQualityLevel = {}));\nvar IMatchingJobStatus;\n(function (IMatchingJobStatus) {\n IMatchingJobStatus[\"ToConnect\"] = \"TO_CONNECT\";\n IMatchingJobStatus[\"InProgress\"] = \"IN_PROGRESS\";\n IMatchingJobStatus[\"Skipped\"] = \"SKIPPED\";\n IMatchingJobStatus[\"ReadyForApproval\"] = \"READY_FOR_APPROVAL\";\n IMatchingJobStatus[\"Completed\"] = \"COMPLETED\";\n})(IMatchingJobStatus || (IMatchingJobStatus = {}));\nvar IReasonCodeType;\n(function (IReasonCodeType) {\n IReasonCodeType[\"A\"] = \"A\";\n IReasonCodeType[\"B\"] = \"B\";\n IReasonCodeType[\"C\"] = \"C\";\n IReasonCodeType[\"R\"] = \"R\";\n})(IReasonCodeType || (IReasonCodeType = {}));\nvar ISortDirection;\n(function (ISortDirection) {\n ISortDirection[\"Asc\"] = \"ASC\";\n ISortDirection[\"Desc\"] = \"DESC\";\n})(ISortDirection || (ISortDirection = {}));\nvar IChart_Value_Format;\n(function (IChart_Value_Format) {\n IChart_Value_Format[\"Months\"] = \"MONTHS\";\n IChart_Value_Format[\"Number\"] = \"NUMBER\";\n})(IChart_Value_Format || (IChart_Value_Format = {}));\nvar IColorPaletteName;\n(function (IColorPaletteName) {\n IColorPaletteName[\"DataVis\"] = \"DATA_VIS\";\n IColorPaletteName[\"DataVisWithMeaning\"] = \"DATA_VIS_WITH_MEANING\";\n})(IColorPaletteName || (IColorPaletteName = {}));\nvar IFilterType;\n(function (IFilterType) {\n IFilterType[\"List\"] = \"LIST\";\n IFilterType[\"RadioList\"] = \"RADIO_LIST\";\n IFilterType[\"GroupList\"] = \"GROUP_LIST\";\n IFilterType[\"Range\"] = \"RANGE\";\n IFilterType[\"ListLevel\"] = \"LIST_LEVEL\";\n})(IFilterType || (IFilterType = {}));\nvar ISentiment;\n(function (ISentiment) {\n ISentiment[\"Positive\"] = \"POSITIVE\";\n ISentiment[\"Neutral\"] = \"NEUTRAL\";\n ISentiment[\"Negative\"] = \"NEGATIVE\";\n})(ISentiment || (ISentiment = {}));\nvar IBubbleChartShape;\n(function (IBubbleChartShape) {\n IBubbleChartShape[\"Circle\"] = \"CIRCLE\";\n IBubbleChartShape[\"Diamond\"] = \"DIAMOND\";\n})(IBubbleChartShape || (IBubbleChartShape = {}));\nvar IDashboardItemType;\n(function (IDashboardItemType) {\n IDashboardItemType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IDashboardItemType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IDashboardItemType[\"AcinRisk\"] = \"ACIN_RISK\";\n IDashboardItemType[\"ClientRisk\"] = \"CLIENT_RISK\";\n})(IDashboardItemType || (IDashboardItemType = {}));\nvar IInsightMetricType;\n(function (IInsightMetricType) {\n IInsightMetricType[\"ETrading\"] = \"E_TRADING\";\n IInsightMetricType[\"CrossAsset\"] = \"CROSS_ASSET\";\n IInsightMetricType[\"AssetClass\"] = \"ASSET_CLASS\";\n IInsightMetricType[\"Continuity\"] = \"CONTINUITY\";\n IInsightMetricType[\"ControlImpact\"] = \"CONTROL_IMPACT\";\n IInsightMetricType[\"Rating\"] = \"RATING\";\n IInsightMetricType[\"All\"] = \"ALL\";\n})(IInsightMetricType || (IInsightMetricType = {}));\nvar IInsightType;\n(function (IInsightType) {\n IInsightType[\"RatingIncrease\"] = \"RATING_INCREASE\";\n IInsightType[\"RatingDecrease\"] = \"RATING_DECREASE\";\n IInsightType[\"NewControl\"] = \"NEW_CONTROL\";\n IInsightType[\"NewRisk\"] = \"NEW_RISK\";\n})(IInsightType || (IInsightType = {}));\nvar IAlertMessageType;\n(function (IAlertMessageType) {\n IAlertMessageType[\"Info\"] = \"INFO\";\n IAlertMessageType[\"Warning\"] = \"WARNING\";\n IAlertMessageType[\"Success\"] = \"SUCCESS\";\n IAlertMessageType[\"Danger\"] = \"DANGER\";\n})(IAlertMessageType || (IAlertMessageType = {}));\nvar IControlQualityScore;\n(function (IControlQualityScore) {\n IControlQualityScore[\"Unclear\"] = \"UNCLEAR\";\n IControlQualityScore[\"Clear\"] = \"CLEAR\";\n})(IControlQualityScore || (IControlQualityScore = {}));\nvar IDataQualityInputTextVariant;\n(function (IDataQualityInputTextVariant) {\n IDataQualityInputTextVariant[\"Control\"] = \"CONTROL\";\n IDataQualityInputTextVariant[\"Policy\"] = \"POLICY\";\n IDataQualityInputTextVariant[\"Regulation\"] = \"REGULATION\";\n})(IDataQualityInputTextVariant || (IDataQualityInputTextVariant = {}));\nvar ITableHeaderType;\n(function (ITableHeaderType) {\n ITableHeaderType[\"Outer\"] = \"OUTER\";\n ITableHeaderType[\"Inner\"] = \"INNER\";\n})(ITableHeaderType || (ITableHeaderType = {}));\nvar ITableRowType;\n(function (ITableRowType) {\n ITableRowType[\"Grandparent\"] = \"GRANDPARENT\";\n ITableRowType[\"Parent\"] = \"PARENT\";\n ITableRowType[\"Child\"] = \"CHILD\";\n})(ITableRowType || (ITableRowType = {}));\nvar IRiskIntelligenceType;\n(function (IRiskIntelligenceType) {\n IRiskIntelligenceType[\"NetworkScenario\"] = \"NetworkScenario\";\n IRiskIntelligenceType[\"RegulatoryAlert\"] = \"RegulatoryAlert\";\n IRiskIntelligenceType[\"NetworkUpdate\"] = \"NetworkUpdate\";\n})(IRiskIntelligenceType || (IRiskIntelligenceType = {}));\nvar IInspectorIdType;\n(function (IInspectorIdType) {\n IInspectorIdType[\"Control\"] = \"Control\";\n})(IInspectorIdType || (IInspectorIdType = {}));\nvar IGlobalSearchResultAssetType;\n(function (IGlobalSearchResultAssetType) {\n IGlobalSearchResultAssetType[\"ClientControl\"] = \"CLIENT_CONTROL\";\n IGlobalSearchResultAssetType[\"AcinControl\"] = \"ACIN_CONTROL\";\n IGlobalSearchResultAssetType[\"ClientRisk\"] = \"CLIENT_RISK\";\n IGlobalSearchResultAssetType[\"AcinRisk\"] = \"ACIN_RISK\";\n IGlobalSearchResultAssetType[\"RegAlert\"] = \"REG_ALERT\";\n IGlobalSearchResultAssetType[\"NetworkUpdate\"] = \"NETWORK_UPDATE\";\n IGlobalSearchResultAssetType[\"NetworkScenario\"] = \"NETWORK_SCENARIO\";\n IGlobalSearchResultAssetType[\"Report\"] = \"REPORT\";\n IGlobalSearchResultAssetType[\"ReportBuilder\"] = \"REPORT_BUILDER\";\n})(IGlobalSearchResultAssetType || (IGlobalSearchResultAssetType = {}));\nvar IProductType;\n(function (IProductType) {\n IProductType[\"Asset\"] = \"ASSET\";\n IProductType[\"Trading\"] = \"TRADING\";\n IProductType[\"Instrument\"] = \"INSTRUMENT\";\n IProductType[\"Settlement\"] = \"SETTLEMENT\";\n})(IProductType || (IProductType = {}));\nvar IReadPermission;\n(function (IReadPermission) {\n IReadPermission[\"Private\"] = \"PRIVATE\";\n IReadPermission[\"Organisation\"] = \"ORGANISATION\";\n})(IReadPermission || (IReadPermission = {}));\nvar IReportType;\n(function (IReportType) {\n IReportType[\"HorizontalBar\"] = \"HORIZONTAL_BAR\";\n IReportType[\"HorizontalBarDataVis\"] = \"HORIZONTAL_BAR_DATA_VIS\";\n IReportType[\"HorizontalBarInsightCodes\"] = \"HORIZONTAL_BAR_INSIGHT_CODES\";\n IReportType[\"HorizontalBarInsightCodesStacked\"] = \"HORIZONTAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"VerticalBar\"] = \"VERTICAL_BAR\";\n IReportType[\"VerticalBarDataVis\"] = \"VERTICAL_BAR_DATA_VIS\";\n IReportType[\"VerticalBarInsightCodes\"] = \"VERTICAL_BAR_INSIGHT_CODES\";\n IReportType[\"VerticalBarInsightCodesStacked\"] = \"VERTICAL_BAR_INSIGHT_CODES_STACKED\";\n IReportType[\"Table\"] = \"TABLE\";\n IReportType[\"TableDataVis\"] = \"TABLE_DATA_VIS\";\n IReportType[\"TableInsightCodes\"] = \"TABLE_INSIGHT_CODES\";\n IReportType[\"TableInsightCodesStacked\"] = \"TABLE_INSIGHT_CODES_STACKED\";\n IReportType[\"OverTimeDataVis\"] = \"OVER_TIME_DATA_VIS\";\n IReportType[\"OverTimeInsightCodes\"] = \"OVER_TIME_INSIGHT_CODES\";\n IReportType[\"PieChartInsightCodes\"] = \"PIE_CHART_INSIGHT_CODES\";\n})(IReportType || (IReportType = {}));\nfunction generateQueryFilters(activeFilters, activeSources) {\n var isClient = activeSources.includes('client') || activeSources.length === 0;\n var isAcin = activeSources.includes('acin-index') || activeSources.length === 0;\n var isReports = activeFilters.includes('insight-reports');\n var isRiskIntel = activeFilters.includes('risk-intel-alerts');\n var isControls = activeFilters.includes('controls');\n var isRisks = activeFilters.includes('risks');\n var newQueryFilters = [];\n if (isRisks) {\n if (isClient) {\n newQueryFilters.push(IGlobalSearchResultAssetType.ClientRisk);\n }\n if (isAcin) {\n newQueryFilters.push(IGlobalSearchResultAssetType.AcinRisk);\n }\n }\n if (isControls) {\n if (isClient) {\n newQueryFilters.push(IGlobalSearchResultAssetType.ClientControl);\n }\n if (isAcin) {\n newQueryFilters.push(IGlobalSearchResultAssetType.AcinControl);\n }\n }\n if (isRiskIntel) {\n newQueryFilters.push(IGlobalSearchResultAssetType.RegAlert, IGlobalSearchResultAssetType.NetworkUpdate, IGlobalSearchResultAssetType.NetworkScenario);\n }\n if (isReports) {\n newQueryFilters.push(IGlobalSearchResultAssetType.Report, IGlobalSearchResultAssetType.ReportBuilder);\n }\n return newQueryFilters;\n}\nvar SearchDropdown$1 = function (props) {\n var onNavigate = props.onNavigate,\n maxWidth = props.maxWidth,\n position = props.position,\n isVisible = props.isVisible,\n onClose = props.onClose,\n searchTerm = props.searchTerm;\n var user = useAuth().user;\n var _a = __read(React.useState(''), 2),\n searchValue = _a[0],\n setSearchValue = _a[1];\n var _b = __read(React.useState(false), 2),\n err = _b[0],\n setErr = _b[1];\n var debouncedValue = useDebounce(searchValue);\n var _c = __read(useGetGlobalSearchResultsLazyQuery({\n fetchPolicy: 'no-cache'\n }), 2),\n getGlobalSearchResults = _c[0],\n _d = _c[1],\n data = _d.data,\n loading = _d.loading,\n error = _d.error;\n var dropdownRef = React.useRef(null);\n var _e = __read(React.useState([]), 2),\n activeFilters = _e[0],\n setActiveFilters = _e[1];\n var _f = __read(React.useState([]), 2),\n activeSources = _f[0],\n setActiveSources = _f[1];\n var _g = __read(React.useState([]), 2),\n queryFilters = _g[0],\n setQueryFilters = _g[1];\n var activeTheme = useThemeProvider().activeTheme;\n var handleClose = React.useCallback(function () {\n onClose();\n setSearchValue('');\n }, [onClose]);\n React.useEffect(function () {\n if (debouncedValue.length >= 3) {\n getGlobalSearchResults(queryFilters.length ? {\n variables: {\n searchTerm: debouncedValue,\n resultTypes: queryFilters\n }\n } : {\n variables: {\n searchTerm: debouncedValue\n }\n });\n trackPendoEvent('Search', {\n searchedTerms: debouncedValue,\n accountCode: (user === null || user === void 0 ? void 0 : user.accountCode) || '',\n accountName: (user === null || user === void 0 ? void 0 : user.accountName) || ''\n });\n }\n }, [debouncedValue, getGlobalSearchResults, queryFilters, user]);\n React.useEffect(function () {\n if (error) {\n setErr(true);\n } else {\n setErr(false);\n }\n }, [error]);\n React.useEffect(function () {\n if (searchTerm) {\n setSearchValue(searchTerm);\n setErr(false);\n } else {\n setSearchValue('');\n }\n }, [searchTerm]);\n React.useEffect(function () {\n var handleClickOutside = function (event) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\n handleClose();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return function () {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [handleClose]);\n React.useEffect(function () {\n if (!activeFilters.includes('risks') && !activeFilters.includes('controls')) {\n setActiveSources([]);\n }\n }, [activeFilters]);\n React.useEffect(function () {\n var newQueryFilters = generateQueryFilters(activeFilters, activeSources);\n setQueryFilters(newQueryFilters);\n }, [activeFilters, activeSources]);\n var instructions = React.useMemo(function () {\n if (debouncedValue.length === 0) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResultsText, {\n activeTheme: activeTheme\n }, \"Start typing to display search results here.\"), /*#__PURE__*/React.createElement(Suggestion, {\n activeTheme: activeTheme\n }, \"You can search for a control, risk, report or regulatory alert.\"));\n }\n if (debouncedValue.length < 3) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResultsText, {\n activeTheme: activeTheme\n }, \"Type at least three characters to begin searching.\"), /*#__PURE__*/React.createElement(Suggestion, {\n activeTheme: activeTheme\n }, \"You can search for a control, risk, report or regulatory alert.\"));\n }\n if (debouncedValue.length > 2 && (data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length) === 0) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResultsText, {\n activeTheme: activeTheme\n }, \"No results found.\"), /*#__PURE__*/React.createElement(Suggestion, {\n activeTheme: activeTheme\n }, \"Please try another search term.\"));\n }\n }, [activeTheme, data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length, debouncedValue.length]);\n var handleNavigate = function (id, type) {\n onNavigate(id, type);\n handleClose();\n };\n var renderResults = function () {\n if (err) return /*#__PURE__*/React.createElement(Results$1, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Oops, something went wrong.\",\n message: \"Please refresh the page or try again later.\"\n }));\n if (loading) return /*#__PURE__*/React.createElement(Results$1, null, /*#__PURE__*/React.createElement(LoadingWrapper$2, null, /*#__PURE__*/React.createElement(Loading, null)));\n if ((data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length) && debouncedValue.length > 2 && !loading) return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResultsText, {\n activeTheme: activeTheme\n }, data.getGlobalSearchResults.length, \" Search Results\"), /*#__PURE__*/React.createElement(Results$1, null, data.getGlobalSearchResults.map(function (_a, index) {\n var id = _a.id,\n text = _a.text,\n assetType = _a.assetType;\n return /*#__PURE__*/React.createElement(ResultRow$2, {\n key: id + \"-\" + index,\n id: id,\n text: text,\n assetType: assetType,\n onNavigate: handleNavigate\n });\n })));\n };\n var filterOptions = [{\n label: 'Controls',\n value: 'controls'\n }, {\n label: 'Risks',\n value: 'risks'\n }, {\n label: 'Risk Intel Alerts',\n value: 'risk-intel-alerts'\n }, {\n label: 'Insight Reports',\n value: 'insight-reports'\n }];\n var sourceOptions = [{\n label: 'Acin Index',\n value: 'acin-index'\n }, {\n label: \"\" + ((user === null || user === void 0 ? void 0 : user.accountName) || 'Account Name'),\n value: 'client'\n }];\n var handleSelection = function (id, set, list) {\n var isSelected = list === null || list === void 0 ? void 0 : list.includes(id);\n if (isSelected) {\n var newList = list === null || list === void 0 ? void 0 : list.filter(function (match) {\n return match !== id;\n });\n set(newList || []);\n } else {\n set(__spread(list || [], [id]));\n }\n };\n var showSource = activeFilters.includes('controls') || activeFilters.includes('risks');\n var convertToSelectedIds = function (items) {\n return items.reduce(function (acc, id) {\n acc[id] = true;\n return acc;\n }, {});\n };\n var renderFilters = function () {\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Title, {\n activeTheme: activeTheme\n }, \"Filter\"), /*#__PURE__*/React.createElement(Checkboxes, {\n items: filterOptions,\n onSelect: function (id) {\n return handleSelection(id, setActiveFilters, activeFilters);\n },\n selectedIds: convertToSelectedIds(activeFilters),\n activeTheme: activeTheme\n }), showSource && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Title, {\n activeTheme: activeTheme\n }, \"Source\"), /*#__PURE__*/React.createElement(Checkboxes, {\n items: sourceOptions,\n onSelect: function (id) {\n return handleSelection(id, setActiveSources, activeSources);\n },\n selectedIds: convertToSelectedIds(activeSources),\n activeTheme: activeTheme\n }))));\n };\n React.useEffect(function () {\n if (!isVisible) {\n setActiveFilters([]);\n setActiveSources([]);\n }\n }, [isVisible]);\n var showResults = (data === null || data === void 0 ? void 0 : data.getGlobalSearchResults.length) && debouncedValue.length > 2 || loading;\n var showInstructions = !showResults && !error;\n return isVisible ? ( /*#__PURE__*/React.createElement(SearchDropdown, {\n ref: dropdownRef,\n \"data-testid\": generate(['search-dropdown'], props),\n maxWidth: maxWidth,\n position: position,\n activeTheme: activeTheme\n }, showInstructions && /*#__PURE__*/React.createElement(Header$1, null, instructions), err && ( /*#__PURE__*/React.createElement(Results$1, null, /*#__PURE__*/React.createElement(Alert, {\n status: \"error\",\n title: \"Oops, something went wrong.\",\n message: \"Please refresh the page or try again later.\"\n }))), showResults && ( /*#__PURE__*/React.createElement(Wrapper, null, /*#__PURE__*/React.createElement(Filters, null, renderFilters()), /*#__PURE__*/React.createElement(List, null, renderResults()))))) : null;\n};\nvar INITIAL_STATE = {\n searchTerm: undefined,\n onUpdateSearchTerm: function () {},\n dropdownVisible: undefined,\n onUpdateDropdownVisible: function () {}\n};\nvar Context = /*#__PURE__*/React.createContext(INITIAL_STATE);\nvar useSearch = function () {\n return React.useContext(Context);\n};\nvar SearchProvider = function (_a) {\n var children = _a.children;\n var _b = __read(React.useState(), 2),\n searchTerm = _b[0],\n setSearchTerm = _b[1];\n var _c = __read(React.useState(), 2),\n dropdownVisible = _c[0],\n setDropdownVisible = _c[1];\n var onUpdateSearchTerm = function (term) {\n setSearchTerm(term);\n };\n var onUpdateDropdownVisible = function (isVisible) {\n setDropdownVisible(isVisible);\n };\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: __assign(__assign({}, INITIAL_STATE), {\n searchTerm: searchTerm,\n onUpdateSearchTerm: onUpdateSearchTerm,\n dropdownVisible: dropdownVisible,\n onUpdateDropdownVisible: onUpdateDropdownVisible\n })\n }, children);\n};\nvar SearchDropdown$2 = styled(SearchDropdown$1)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject([\"\"], [\"\"])));\nvar templateObject_1$a;\nexport { SearchContainer$2 as SearchContainer, SearchDropdown$2 as SearchDropdown, SearchField$2 as SearchField, SearchModal$2 as SearchModal, SearchProvider, useSearch };","import styled, { css } from 'styled-components';\n\nexport const SearchBarWrapper = styled.div<{ widenSearch?: boolean }>`\n position: relative;\n z-index: 2;\n margin-left: 0;\n max-width: ${(p) => p.theme.spacing.getSize(47)};\n height: ${(p) => p.theme.spacing.getSize(15)};\n min-width: ${(p) => p.theme.spacing.getSize(47)};\n\n ${(p) =>\n p.widenSearch &&\n css`\n margin-left: -660px;\n max-width: 1000px;\n `}\n`;\n\nexport const SearchBarExtender = styled.div`\n position: absolute;\n right: 0;\n top: 5px;\n width: 100%;\n min-width: ${(p) => p.theme.spacing.getSize(47)};\n transition: '1s ease-in-out all';\n`;\n\nexport const DropdownHolder = styled.div`\n position: relative;\n z-index: 3;\n`;\n","import styled, { css, keyframes } from 'styled-components';\nimport { IconDownload, View, themeHelpers } from '@acin/ui-core';\n\nconst { zIndex } = themeHelpers;\n\nconst pulseAnimation = keyframes`\n 0% { transform: scale(1); }\n 50% { transform: scale(0.6); }\n 100% { transform: scale(1);}\n`;\n\nexport const DownloadIconAnimated = styled(IconDownload)<{ dotColor?: string; stopAnimation: boolean }>`\n position: relative;\n overflow: visible;\n\n ${(p) => {\n if (p.dotColor) {\n const dot = css`\n display: block;\n width: 10px;\n height: 10px;\n content: '';\n background: ${p.dotColor};\n position: absolute;\n border-radius: 50%;\n left: 14px;\n top: 0px;\n `;\n\n return p.stopAnimation\n ? css`\n &::after {\n ${dot}\n }\n `\n : css`\n &::after {\n ${dot};\n animation-name: ${pulseAnimation};\n animation-duration: 2s;\n animation-iteration-count: infinite;\n }\n `;\n }\n }};\n`;\n\nexport const DownloadsWrapper = styled(View)<{ topPosition?: number }>`\n position: fixed;\n left: auto;\n right: 90px;\n top: ${(p) => (p.topPosition ? `${p.topPosition + 60}px` : `60px`)};\n z-index: calc(${zIndex} + 10);\n`;\n","import React from 'react';\nimport { DownloadsList as DownloadsListComp, useToaster } from '@acin/ui-core';\nimport { DownloadItem } from '@acin/ui-core/types/src/components/DownloadsList/components/types';\n\nimport * as SC from './DownloadsList.styled';\n\nexport interface DownloadsListProps {\n onClose: () => void;\n deleteCalibrateDownload: (id: string) => void;\n allCalibrateDownloads: DownloadItem[] | undefined;\n markCalibrateAsDownloaded: (id: string) => void;\n}\n\nexport const DownloadsList: React.FC<DownloadsListProps> = (props) => {\n const { onClose, allCalibrateDownloads, deleteCalibrateDownload, markCalibrateAsDownloaded } = props;\n const { onAddToast } = useToaster();\n\n const handleDownloadClick = (item: DownloadItem) => {\n if (item.id && item.fileURL) {\n const openDownload = () => {\n return item.fileURL && window.open(item.fileURL, '_blank');\n };\n const newWindow = openDownload();\n\n if (!newWindow || newWindow.closed || typeof newWindow.closed == 'undefined') {\n // If the popup is blocked, show a download button\n onAddToast({\n id: `${item.id}-complete`,\n title: 'Download Blocked',\n message:\n 'Pop-ups have been disabled for this browser. Please enable pop-ups for this site to allow future downloads.',\n status: 'warning',\n actionPrimary: {\n label: 'Download Now',\n onClick: openDownload,\n },\n });\n } else {\n // If we can auto download then just say it is complete:\n onAddToast({\n id: `${item.id}-complete`,\n title: 'Download Complete',\n hideCloseButton: false,\n status: 'success',\n });\n }\n markCalibrateAsDownloaded(item.id);\n }\n };\n\n const handleDelete = (item: DownloadItem) => {\n const id = item.id;\n if (id) {\n deleteCalibrateDownload(id);\n }\n };\n\n return (\n <SC.DownloadsWrapper>\n <DownloadsListComp\n items={allCalibrateDownloads}\n onClick={handleDownloadClick}\n onDelete={handleDelete}\n onClose={onClose}\n />\n </SC.DownloadsWrapper>\n );\n};\n","import styled from 'styled-components';\nimport { Modal, Text, View } from '@acin/ui-core';\n\n// This named style should be the wrapper for the component i.e. the module\nexport const UserPreferencesModal = styled(Modal)``;\n\nexport const Description = styled(Text)`\n color: ${(p) => p.theme.colors.text.getValue(1)};\n margin-top: ${(p) => p.theme.spacing.getSize(1)};\n margin-bottom: ${(p) => p.theme.spacing.getSize(6)};\n`;\n\nexport const Title = styled(Text)`\n color: ${(p) => p.theme.colors.text.getValue(1)};\n`;\n\nexport const ThumbnailWrapper = styled(View)`\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n padding-top: ${(p) => p.theme.spacing.getSize(4)};\n`;\n\nexport const Version = styled(Text)`\n margin: ${(p) => p.theme.spacing.getSize(4)} 0;\n`;\n","import styled, { css } from 'styled-components';\nimport { Text, View } from '@acin/ui-core';\n\nexport const Thumbnail = styled.button`\n border: none;\n background: transparent;\n text-align: left;\n cursor: pointer;\n padding: 0;\n\n &:not(:first-child) {\n margin-left: ${(p) => p.theme.spacing.getSize(8)};\n }\n`;\n\nexport const SVGWrapper = styled(View)<{ isActive?: boolean }>`\n box-sizing: border-box;\n border-radius: ${(p) => p.theme.spacing.getSize()};\n display: inline-flex;\n border: 2px solid transparent;\n overflow: hidden;\n\n ${(p) =>\n p.isActive &&\n css`\n border-color: ${(p) => p.theme.colors.primary.getValue(500).main};\n `}\n`;\n\nexport const Title = styled(Text)`\n margin-top: ${(p) => p.theme.spacing.getSize(2)};\n color: ${(p) => p.theme.colors.text.getValue(1)};\n`;\n","import React from 'react';\nimport * as SC from './Thumbnail.styled';\n\nexport interface ThumbnailProps {\n isActive?: boolean;\n variant?: string;\n onClick: () => void;\n title: string;\n}\n\nexport const Thumbnail: React.FC<ThumbnailProps> = (props) => {\n const { isActive, variant, onClick, title } = props;\n\n const SVG = () => {\n if (variant === 'dark') {\n return (\n <svg\n width=\"88\"\n height=\"56\"\n viewBox=\"0 0 88 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"88\" height=\"56\" fill=\"#121212\" />\n <path d=\"M0 0H34V56H0V0Z\" fill=\"#252B37\" />\n <rect y=\"29\" width=\"34\" height=\"23\" fill=\"#55CCFF\" />\n <path d=\"M34 0H86C87.1046 0 88 0.895431 88 2V20H34V0Z\" fill=\"#1F2329\" />\n <path d=\"M42 9C42 7.89543 42.8954 7 44 7H88V13H44C42.8954 13 42 12.1046 42 11V9Z\" fill=\"#ABB4BE\" />\n <path\n d=\"M41 43C41 41.8954 41.8954 41 43 41H55C56.1046 41 57 41.8954 57 43V56H41V43Z\"\n fill=\"#9584FC\"\n />\n <path d=\"M79 36C79 34.8954 79.8954 34 81 34H88V56H79V36Z\" fill=\"#FF5EB7\" />\n <path\n d=\"M60 26C60 24.8954 60.8954 24 62 24H74C75.1046 24 76 24.8954 76 26V56H60V26Z\"\n fill=\"#54CECE\"\n />\n <rect x=\"7\" y=\"5\" width=\"20\" height=\"18\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use\n xlinkHref=\"#image0_2061_100589\"\n transform=\"translate(0 -0.00704225) scale(0.0028169 0.00312989)\"\n />\n </pattern>\n <image\n id=\"image0_2061_100589\"\n width=\"355\"\n height=\"324\"\n xlinkHref=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n );\n }\n\n return (\n <svg\n width=\"88\"\n height=\"56\"\n viewBox=\"0 0 88 56\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n >\n <rect width=\"88\" height=\"56\" rx=\"2\" fill=\"#F8F8F8\" />\n <path d=\"M0 0H34V56H0V0Z\" fill=\"#272727\" />\n <rect y=\"29\" width=\"34\" height=\"23\" fill=\"#0099DB\" />\n <path d=\"M34 0H88V20H34V0Z\" fill=\"white\" />\n <path d=\"M42 9C42 7.89543 42.8954 7 44 7H88V13H44C42.8954 13 42 12.1046 42 11V9Z\" fill=\"#585858\" />\n <path d=\"M41 43C41 41.8954 41.8954 41 43 41H55C56.1046 41 57 41.8954 57 43V56H41V43Z\" fill=\"#595BBE\" />\n <path d=\"M79 36C79 34.8954 79.8954 34 81 34H88V56H79V36Z\" fill=\"#A12E6E\" />\n <path d=\"M60 26C60 24.8954 60.8954 24 62 24H74C75.1046 24 76 24.8954 76 26V56H60V26Z\" fill=\"#39A2A2\" />\n <rect x=\"7\" y=\"5\" width=\"20\" height=\"18\" fill=\"url(#pattern0)\" />\n <defs>\n <pattern id=\"pattern0\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use\n xlinkHref=\"#image0_2061_100579\"\n transform=\"translate(0 -0.00704225) scale(0.0028169 0.00312989)\"\n />\n </pattern>\n <image\n id=\"image0_2061_100579\"\n width=\"355\"\n height=\"324\"\n xlinkHref=\"data:image/png;base64,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\"\n />\n </defs>\n </svg>\n );\n };\n\n return (\n <SC.Thumbnail onClick={onClick}>\n <SC.SVGWrapper isActive={isActive}>\n <SVG />\n </SC.SVGWrapper>\n <SC.Title weight={400} size={0}>\n {title}\n </SC.Title>\n </SC.Thumbnail>\n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {};\nexport type ISetUiThemeMutationVariables = Types.Exact<{\n userId: Types.Scalars['String'];\n theme: Types.IUiTheme;\n}>;\n\nexport type ISetUiThemeMutation = {\n __typename?: 'Mutation';\n setUITheme?: Types.Maybe<{ __typename?: 'UserPreferences'; theme?: Types.Maybe<Types.IUiTheme> }>;\n};\n\nexport const SetUiThemeDocument = gql`\n mutation setUiTheme($userId: String!, $theme: UITheme!) {\n setUITheme(userId: $userId, theme: $theme) {\n theme\n }\n }\n`;\nexport type ISetUiThemeMutationFn = Apollo.MutationFunction<ISetUiThemeMutation, ISetUiThemeMutationVariables>;\n\n/**\n * __useSetUiThemeMutation__\n *\n * To run a mutation, you first call `useSetUiThemeMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSetUiThemeMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [setUiThemeMutation, { data, loading, error }] = useSetUiThemeMutation({\n * variables: {\n * userId: // value for 'userId'\n * theme: // value for 'theme'\n * },\n * });\n */\nexport function useSetUiThemeMutation(\n baseOptions?: Apollo.MutationHookOptions<ISetUiThemeMutation, ISetUiThemeMutationVariables>,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useMutation<ISetUiThemeMutation, ISetUiThemeMutationVariables>(SetUiThemeDocument, options);\n}\nexport type SetUiThemeMutationHookResult = ReturnType<typeof useSetUiThemeMutation>;\nexport type SetUiThemeMutationResult = Apollo.MutationResult<ISetUiThemeMutation>;\nexport type SetUiThemeMutationOptions = Apollo.BaseMutationOptions<ISetUiThemeMutation, ISetUiThemeMutationVariables>;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { gql } from '@apollo/client';\nexport type IUserFragment = {\n __typename?: 'User';\n id: string;\n name: string;\n avatar?: Types.Maybe<string>;\n account: {\n __typename?: 'Account';\n id: string;\n name: string;\n permittedRiskInventories: Array<Types.Maybe<{ __typename?: 'AccountRiskInventory'; name: string }>>;\n };\n preferences: { __typename?: 'UserPreferences'; theme?: Types.Maybe<Types.IUiTheme> };\n};\n\nexport const UserFragmentDoc = gql`\n fragment User on User {\n id\n name\n avatar\n account {\n id\n name\n permittedRiskInventories {\n name\n }\n }\n preferences {\n theme\n }\n }\n`;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { IUserFragment } from '../fragments/user.generated';\nimport { gql } from '@apollo/client';\nimport { UserFragmentDoc } from '../fragments/user.generated';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {};\nexport type IMeQueryVariables = Types.Exact<{ [key: string]: never }>;\n\nexport type IMeQuery = { __typename?: 'Query'; me: { __typename?: 'User' } & IUserFragment };\n\nexport const MeDocument = gql`\n query me {\n me {\n ...User\n }\n }\n ${UserFragmentDoc}\n`;\n\n/**\n * __useMeQuery__\n *\n * To run a query within a React component, call `useMeQuery` and pass it any options that fit your needs.\n * When your component renders, `useMeQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useMeQuery({\n * variables: {\n * },\n * });\n */\nexport function useMeQuery(baseOptions?: Apollo.QueryHookOptions<IMeQuery, IMeQueryVariables>) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useQuery<IMeQuery, IMeQueryVariables>(MeDocument, options);\n}\nexport function useMeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<IMeQuery, IMeQueryVariables>) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useLazyQuery<IMeQuery, IMeQueryVariables>(MeDocument, options);\n}\nexport type MeQueryHookResult = ReturnType<typeof useMeQuery>;\nexport type MeLazyQueryHookResult = ReturnType<typeof useMeLazyQuery>;\nexport type MeQueryResult = Apollo.QueryResult<IMeQuery, IMeQueryVariables>;\n","import React from 'react';\nimport { useThemeProvider, useToaster, CommonProp, generate } from '@acin/ui-core';\nimport * as SC from './UserPreferencesModal.styled';\nimport { Thumbnail } from './Thumbnail';\nimport { ISetUiThemeMutation, useSetUiThemeMutation } from '../graphql/mutations/setUiTheme.generated';\nimport { useMeQuery } from '../../MainNav/graphql/queries/me.generated';\nimport { IUiTheme } from '../../../graphql/generated';\nimport packageJson from '../../../../package.json';\n\nexport interface UserPreferencesModalProps extends CommonProp {\n className?: string;\n onClose: () => void;\n show: boolean;\n}\n\nexport const UserPreferencesModal: React.FC<UserPreferencesModalProps> = (props) => {\n const { className, show, onClose } = props;\n const { onAddToast } = useToaster();\n const { data } = useMeQuery();\n\n const [setUiTheme] = useSetUiThemeMutation({\n onCompleted: (data: ISetUiThemeMutation) => {\n onAddToast({\n id: `theme-updated`,\n title: 'Appearance preference saved',\n status: 'success',\n message: `You're now using the ${themeSelection} theme`,\n removeAt: +new Date() + 10000,\n });\n },\n });\n\n const { setTheme, activeTheme } = useThemeProvider();\n\n const [themeSelection, setThemeSelection] = React.useState<string>(activeTheme.name);\n\n React.useEffect(() => {\n setThemeSelection(activeTheme.name);\n }, [setThemeSelection, activeTheme]);\n\n const handleSetTheme = () => {\n if (data?.me.id) {\n setUiTheme({\n variables: {\n userId: data?.me?.id!,\n theme: themeSelection === 'dark' ? IUiTheme.Dark : IUiTheme.Default,\n },\n });\n }\n setTheme(activeTheme);\n onClose();\n };\n\n const handleClose = () => {\n onClose();\n setThemeSelection(activeTheme.name);\n };\n\n return (\n <SC.UserPreferencesModal\n data-testid={generate(['user-preferences-modal'], props)}\n className={className}\n title=\"Update Theme\"\n show={show}\n onClose={handleClose}\n footerButtonPrimary={{\n label: 'Update Theme',\n disabled: activeTheme.name === themeSelection,\n onClick: handleSetTheme,\n }}\n >\n <SC.Description weight={500}>\n Please select your preferred theme. You can update your preferences at any time.\n </SC.Description>\n <SC.Title weight={600} size={0}>\n Appearance\n </SC.Title>\n <SC.ThumbnailWrapper>\n <Thumbnail\n variant=\"default\"\n onClick={() => setThemeSelection('default')}\n isActive={themeSelection === 'default'}\n title=\"Light Mode\"\n />\n <Thumbnail\n variant=\"dark\"\n onClick={() => setThemeSelection('dark')}\n isActive={themeSelection === 'dark'}\n title=\"Dark Mode (Beta)\"\n />\n </SC.ThumbnailWrapper>\n <SC.Version size={-1}>Product version: {packageJson.version}</SC.Version>\n </SC.UserPreferencesModal>\n );\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { gql } from '@apollo/client';\nexport type INotificationCategoryFieldsFragment = {\n __typename?: 'EmailNotificationCategory';\n name: string;\n code: string;\n isEnabled: boolean;\n};\n\nexport const NotificationCategoryFieldsFragmentDoc = gql`\n fragment NotificationCategoryFields on EmailNotificationCategory {\n name\n code\n isEnabled\n }\n`;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { INotificationCategoryFieldsFragment } from './notificationCategoryFieldsFragment.generated';\nimport { gql } from '@apollo/client';\nimport { NotificationCategoryFieldsFragmentDoc } from './notificationCategoryFieldsFragment.generated';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {};\nexport type IGetEmailNotificationSettingsQueryVariables = Types.Exact<{ [key: string]: never }>;\n\nexport type IGetEmailNotificationSettingsQuery = {\n __typename?: 'Query';\n getEmailNotificationSettings: {\n __typename?: 'EmailNotificationSettings';\n notificationCategories: Array<\n { __typename?: 'EmailNotificationCategory' } & INotificationCategoryFieldsFragment\n >;\n };\n};\n\nexport const GetEmailNotificationSettingsDocument = gql`\n query getEmailNotificationSettings {\n getEmailNotificationSettings {\n notificationCategories {\n ...NotificationCategoryFields\n }\n }\n }\n ${NotificationCategoryFieldsFragmentDoc}\n`;\n\n/**\n * __useGetEmailNotificationSettingsQuery__\n *\n * To run a query within a React component, call `useGetEmailNotificationSettingsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetEmailNotificationSettingsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetEmailNotificationSettingsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetEmailNotificationSettingsQuery(\n baseOptions?: Apollo.QueryHookOptions<\n IGetEmailNotificationSettingsQuery,\n IGetEmailNotificationSettingsQueryVariables\n >,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useQuery<IGetEmailNotificationSettingsQuery, IGetEmailNotificationSettingsQueryVariables>(\n GetEmailNotificationSettingsDocument,\n options,\n );\n}\nexport function useGetEmailNotificationSettingsLazyQuery(\n baseOptions?: Apollo.LazyQueryHookOptions<\n IGetEmailNotificationSettingsQuery,\n IGetEmailNotificationSettingsQueryVariables\n >,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useLazyQuery<IGetEmailNotificationSettingsQuery, IGetEmailNotificationSettingsQueryVariables>(\n GetEmailNotificationSettingsDocument,\n options,\n );\n}\nexport type GetEmailNotificationSettingsQueryHookResult = ReturnType<typeof useGetEmailNotificationSettingsQuery>;\nexport type GetEmailNotificationSettingsLazyQueryHookResult = ReturnType<\n typeof useGetEmailNotificationSettingsLazyQuery\n>;\nexport type GetEmailNotificationSettingsQueryResult = Apollo.QueryResult<\n IGetEmailNotificationSettingsQuery,\n IGetEmailNotificationSettingsQueryVariables\n>;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { INotificationCategoryFieldsFragment } from './notificationCategoryFieldsFragment.generated';\nimport { gql } from '@apollo/client';\nimport { NotificationCategoryFieldsFragmentDoc } from './notificationCategoryFieldsFragment.generated';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {};\nexport type IUpdateEmailNotificationSettingsMutationVariables = Types.Exact<{\n input: Types.IUpdateEmailNotificationSettingsInput;\n}>;\n\nexport type IUpdateEmailNotificationSettingsMutation = {\n __typename?: 'Mutation';\n updateEmailNotificationSettings: {\n __typename?: 'EmailNotificationSettings';\n notificationCategories: Array<\n { __typename?: 'EmailNotificationCategory' } & INotificationCategoryFieldsFragment\n >;\n };\n};\n\nexport const UpdateEmailNotificationSettingsDocument = gql`\n mutation updateEmailNotificationSettings($input: UpdateEmailNotificationSettingsInput!) {\n updateEmailNotificationSettings(input: $input) {\n notificationCategories {\n ...NotificationCategoryFields\n }\n }\n }\n ${NotificationCategoryFieldsFragmentDoc}\n`;\nexport type IUpdateEmailNotificationSettingsMutationFn = Apollo.MutationFunction<\n IUpdateEmailNotificationSettingsMutation,\n IUpdateEmailNotificationSettingsMutationVariables\n>;\n\n/**\n * __useUpdateEmailNotificationSettingsMutation__\n *\n * To run a mutation, you first call `useUpdateEmailNotificationSettingsMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateEmailNotificationSettingsMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateEmailNotificationSettingsMutation, { data, loading, error }] = useUpdateEmailNotificationSettingsMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useUpdateEmailNotificationSettingsMutation(\n baseOptions?: Apollo.MutationHookOptions<\n IUpdateEmailNotificationSettingsMutation,\n IUpdateEmailNotificationSettingsMutationVariables\n >,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useMutation<\n IUpdateEmailNotificationSettingsMutation,\n IUpdateEmailNotificationSettingsMutationVariables\n >(UpdateEmailNotificationSettingsDocument, options);\n}\nexport type UpdateEmailNotificationSettingsMutationHookResult = ReturnType<\n typeof useUpdateEmailNotificationSettingsMutation\n>;\nexport type UpdateEmailNotificationSettingsMutationResult =\n Apollo.MutationResult<IUpdateEmailNotificationSettingsMutation>;\nexport type UpdateEmailNotificationSettingsMutationOptions = Apollo.BaseMutationOptions<\n IUpdateEmailNotificationSettingsMutation,\n IUpdateEmailNotificationSettingsMutationVariables\n>;\n","import React from 'react';\nimport { useToaster, CommonProp, generate, Checkbox } from '@acin/ui-core';\nimport * as SC from './UserPreferencesModal.styled';\nimport { IEmailNotificationCategory, IUpdatedEmailNotificationCategory } from '../../../graphql/generated';\nimport { useGetEmailNotificationSettingsQuery } from '../graphql/mutations/getEmailNotificationSettings.generated';\nimport { useUpdateEmailNotificationSettingsMutation } from '../graphql/mutations/updateEmailNotificationSettings.generated';\n\nexport interface EmailPreferencesModalProps extends CommonProp {\n className?: string;\n onClose: () => void;\n show: boolean;\n}\n\nexport const EmailPreferencesModal: React.FC<EmailPreferencesModalProps> = (props) => {\n const { className, show, onClose } = props;\n const { onAddToast } = useToaster();\n\n const { data: getData, loading: getLoading, refetch } = useGetEmailNotificationSettingsQuery();\n const [updateEmailNotificationSettings, { data: updateData, loading: updateLoading }] =\n useUpdateEmailNotificationSettingsMutation({\n onCompleted: () => {\n onAddToast({\n id: `email-settings-updated`,\n title: 'Email settings updated',\n status: 'success',\n removeAt: +new Date() + 10000,\n });\n },\n onError: (error) => {\n onAddToast({\n id: `email-settings-failed-to-update`,\n title: 'Email settings failed to update',\n status: 'error',\n message: error.message,\n removeAt: +new Date() + 10000,\n });\n },\n });\n\n const [notificationSettings, setNotificationSettings] = React.useState<IEmailNotificationCategory[]>([]);\n const [initialSettings, setInitialSettings] = React.useState<IEmailNotificationCategory[]>([]);\n\n const categoryCheckboxes = notificationSettings.map((setting) => {\n return (\n <Checkbox\n isChecked={setting.isEnabled}\n onChange={(value) => onCategoryChange(setting.code, value)}\n label={setting.name}\n size=\"small\"\n />\n );\n });\n\n const onCategoryChange = (code: string, isEnabled: boolean) => {\n const newNotificationSettings = notificationSettings.map((notification: IEmailNotificationCategory) => {\n if (notification.code === code) {\n return { ...notification, isEnabled };\n }\n return notification;\n });\n setNotificationSettings(newNotificationSettings);\n };\n\n const onUpdateClick = () => {\n const updatedNotificationCategories: IUpdatedEmailNotificationCategory[] = notificationSettings.map(\n (setting) => {\n return {\n code: setting.code,\n isEnabled: setting.isEnabled,\n };\n },\n );\n updateEmailNotificationSettings({\n variables: {\n input: {\n updatedNotificationCategories,\n },\n },\n });\n };\n\n const hasChanges = () => {\n if (initialSettings.length !== notificationSettings.length) return true;\n\n return notificationSettings.some((currentSetting, index) => {\n return currentSetting.isEnabled !== initialSettings[index].isEnabled;\n });\n };\n\n React.useEffect(() => {\n if (show) {\n refetch();\n }\n }, [show, refetch]);\n\n React.useEffect(() => {\n const fetchedSettings = getData?.getEmailNotificationSettings.notificationCategories || [];\n setNotificationSettings(fetchedSettings);\n setInitialSettings(fetchedSettings);\n }, [getData]);\n\n React.useEffect(() => {\n const fetchedSettings = updateData?.updateEmailNotificationSettings.notificationCategories || [];\n setNotificationSettings(fetchedSettings);\n setInitialSettings(fetchedSettings);\n }, [updateData]);\n\n return (\n <SC.UserPreferencesModal\n data-testid={generate(['email-settings-modal'], props)}\n className={className}\n title=\"Update Email Settings\"\n show={show}\n onClose={onClose}\n footerButtonPrimary={{\n label: 'Update Settings',\n disabled: getLoading || updateLoading || !hasChanges(),\n onClick: onUpdateClick,\n }}\n >\n <SC.Description weight={500}>\n Please select the email notifications you wish to receive. You can update your preferences at any time.\n </SC.Description>\n\n {categoryCheckboxes}\n </SC.UserPreferencesModal>\n );\n};\n","type AssetType =\n | 'CLIENT_CONTROL'\n | 'ACIN_CONTROL'\n | 'CLIENT_RISK'\n | 'ACIN_RISK'\n | 'REG_ALERT'\n | 'NETWORK_UPDATE'\n | 'NETWORK_SCENARIO'\n | 'REPORT'\n | 'REPORT_BUILDER';\n\nexport const onNavigate = (id: string, type: AssetType) => {\n if (['CLIENT_CONTROL', 'ACIN_CONTROL'].includes(type)) {\n window.open(`/calibrate/control/${id}`, '_self');\n }\n if (['CLIENT_RISK', 'ACIN_RISK'].includes(type)) {\n window.open(`/calibrate/risk/${id}`, '_self');\n }\n if (['NETWORK_UPDATE', 'NETWORK_SCENARIO', 'REG_ALERT'].includes(type)) {\n window.open(`/risk-intelligence/${id}`, '_self');\n }\n\n if (['REPORT'].includes(type)) {\n window.open(`/calibrate/report/${id}`, '_self');\n }\n\n if (['REPORT_BUILDER'].includes(type)) {\n window.open(`/calibrate/report-builder/${id}`, '_self');\n }\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport * as Types from '../../../../graphql/generated';\n\nimport { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nconst defaultOptions = {};\nexport type IGetReportCategoriesQueryVariables = Types.Exact<{ [key: string]: never }>;\n\nexport type IGetReportCategoriesQuery = {\n __typename?: 'Query';\n getAllReportsQuickFilters: {\n __typename?: 'AllReportsQuickFilterPage';\n filters: Array<{\n __typename?: 'AllReportsQuickFilter';\n filter?: Types.Maybe<{ __typename?: 'FilterPayloadValue'; label?: Types.Maybe<string>; value: string }>;\n }>;\n };\n};\n\nexport const GetReportCategoriesDocument = gql`\n query getReportCategories {\n getAllReportsQuickFilters {\n filters {\n filter {\n label\n value\n }\n }\n }\n }\n`;\n\n/**\n * __useGetReportCategoriesQuery__\n *\n * To run a query within a React component, call `useGetReportCategoriesQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetReportCategoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetReportCategoriesQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetReportCategoriesQuery(\n baseOptions?: Apollo.QueryHookOptions<IGetReportCategoriesQuery, IGetReportCategoriesQueryVariables>,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useQuery<IGetReportCategoriesQuery, IGetReportCategoriesQueryVariables>(\n GetReportCategoriesDocument,\n options,\n );\n}\nexport function useGetReportCategoriesLazyQuery(\n baseOptions?: Apollo.LazyQueryHookOptions<IGetReportCategoriesQuery, IGetReportCategoriesQueryVariables>,\n) {\n const options = { ...defaultOptions, ...baseOptions };\n return Apollo.useLazyQuery<IGetReportCategoriesQuery, IGetReportCategoriesQueryVariables>(\n GetReportCategoriesDocument,\n options,\n );\n}\nexport type GetReportCategoriesQueryHookResult = ReturnType<typeof useGetReportCategoriesQuery>;\nexport type GetReportCategoriesLazyQueryHookResult = ReturnType<typeof useGetReportCategoriesLazyQuery>;\nexport type GetReportCategoriesQueryResult = Apollo.QueryResult<\n IGetReportCategoriesQuery,\n IGetReportCategoriesQueryVariables\n>;\n","import React from 'react';\nimport { useHistory, useLocation } from 'react-router-dom';\nimport { useDownload } from '@acin/download';\nimport { useAuth, USER_ROLES } from '@acin/user-accounts';\nimport { UserAccountModal } from '@acin/terminal-onboarding';\nimport {\n MainNavHorizontal as CoreMainNav,\n CommonProp,\n useThemeProvider,\n themeHelpers,\n IconUpload,\n} from '@acin/ui-core';\nimport { SearchField, SearchDropdown, SearchProvider } from '@acin/search';\nimport * as SC from './MainNav.styled';\nimport { DownloadsList } from './DownloadsList';\nimport { EmailPreferencesModal, UserPreferencesModal } from '../../UserPreferencesModal';\nimport { getMenuItems, getPathById, reverseRoutingMap } from '../config/horizontalMenu';\n\nimport { useMeQuery } from '../graphql/queries/me.generated';\nimport { onNavigate } from '../../../pages/Search/helpers/onNavigate';\nimport { IUiTheme } from '../../../graphql/generated';\nimport { getDotColor } from './utils';\nimport { DownloadIconAnimated } from './DownloadsList.styled';\nimport { useGetReportCategoriesQuery } from '../graphql/queries/getReportCategories.generated';\n\n// TODO: Make this exportable from UI Core\ntype MenuItem = {\n label: string;\n id: string;\n};\n\nexport interface MainNavProps extends CommonProp {\n className?: string;\n showItems?: boolean;\n}\n\nexport const MainNav: React.FC<MainNavProps> = () => {\n const { logout, user, hasRole } = useAuth();\n const history = useHistory();\n const location = useLocation();\n const { data } = useMeQuery();\n\n const { isDarkMode } = themeHelpers;\n\n const { setTheme, activeTheme } = useThemeProvider();\n\n const { data: reportCategories } = useGetReportCategoriesQuery({\n fetchPolicy: 'cache-first',\n });\n\n const {\n allCalibrateDownloads,\n markCalibrateAsDownloaded,\n oneCalibrateDownloadInProgress,\n oneCalibrateDownloadProcessed,\n oneCalibrateDownloadFailed,\n deleteCalibrateDownload,\n showCalibrateDownloads,\n setShowCalibrateDownloads,\n } = useDownload();\n\n const closeDownloads = () => {\n setShowCalibrateDownloads(false);\n };\n\n const [showUserAccount, setShowUserAccount] = React.useState(false);\n const [showPreferencesModal, setShowPreferencesModal] = React.useState(false);\n const [showEmailNotificationsModal, setShowEmailNotificationsModal] = React.useState(false);\n const [stopDotAnimation, setStopDotAnimation] = React.useState(false);\n\n const [searchTerm, setSearchTerm] = React.useState<string | undefined>();\n const [showDropdown, setShowDropdown] = React.useState<boolean>();\n const [widenSearch, setWidenSearch] = React.useState<boolean>();\n const fieldRef = React.useRef<HTMLDivElement>(null);\n\n const [position, setPosition] = React.useState<{ top: number; left: number; width: number } | undefined>(undefined);\n\n React.useEffect(() => {\n if (widenSearch && fieldRef.current) {\n const rect = fieldRef.current.getBoundingClientRect();\n setPosition({ top: rect.bottom, left: rect.left, width: rect.width });\n handleOpenSearch();\n }\n }, [widenSearch]);\n\n React.useEffect(() => {\n if (showCalibrateDownloads && oneCalibrateDownloadInProgress) {\n setStopDotAnimation(false);\n }\n }, [oneCalibrateDownloadInProgress, showCalibrateDownloads]);\n\n React.useEffect(() => {\n if (data?.me.preferences?.theme === IUiTheme.Dark) {\n setTheme(activeTheme);\n }\n }, [data]);\n\n const getActiveMenuItem = React.useCallback(() => {\n let activeMenuItem = 'dashboard';\n reverseRoutingMap.forEach((value, key) => {\n if (location.pathname.includes(key)) {\n activeMenuItem = value;\n }\n });\n return activeMenuItem;\n }, [location.pathname]);\n\n const onClick = (id: string) => {\n const path = getPathById(id);\n if (path) {\n history.push(path);\n } else {\n history.push(id);\n }\n };\n\n const onLogoClick = () => {\n if (hasRole([USER_ROLES.RISK_INTEL_USER])) {\n history.push('/risk-intelligence/hub');\n }\n\n if (hasRole([USER_ROLES.SUPER_ADMIN, USER_ROLES.ACIN_USER, USER_ROLES.DATA_USER, USER_ROLES.CUSTOMER_USER])) {\n history.push('/');\n }\n };\n\n const buildReportCategories = reportCategories?.getAllReportsQuickFilters.filters.map((category) => ({\n label: category.filter?.label!,\n id: category.filter?.value!,\n }));\n\n let menuItems =\n user?.accountCode && user?.totalInventories\n ? getMenuItems(user.accountCode, user?.roles, buildReportCategories)\n : [];\n\n const dotColor = getDotColor(\n activeTheme,\n oneCalibrateDownloadFailed,\n oneCalibrateDownloadInProgress,\n oneCalibrateDownloadProcessed,\n );\n\n const hasEmailNotificationsEnabled = hasRole([USER_ROLES.EMAIL_NOTIFICATIONS_USER]);\n const emailNotificationsMenuItem = hasEmailNotificationsEnabled\n ? [{ id: 'emailNotifications', label: 'Email Notifications' }]\n : [];\n\n const userMenuItems = [\n { id: 'preferences', label: 'Theme' },\n ...emailNotificationsMenuItem,\n { id: 'logout', label: 'Logout' },\n ];\n\n if (data?.me?.name) {\n userMenuItems.unshift({ id: 'myaccount', label: 'My Account' });\n }\n\n const handleMenuClick = (id?: string) => {\n switch (id) {\n case 'logout':\n localStorage.clear();\n let redirect: any;\n if (process.env.NODE_ENV !== 'development') {\n redirect = {\n returnTo: `https://${window.location.hostname}`,\n };\n }\n if (process.env.REACT_APP_CYPRESS_ENABLE === 'true') {\n redirect = {\n returnTo: `http://${window.location.hostname}:3000`,\n };\n }\n logout(redirect);\n break;\n case 'myaccount':\n setShowUserAccount(true);\n break;\n case 'preferences':\n setShowPreferencesModal(true);\n break;\n case 'emailNotifications':\n setShowEmailNotificationsModal(true);\n break;\n case 'recent-downloads':\n setStopDotAnimation(true);\n setShowCalibrateDownloads(!showCalibrateDownloads);\n break;\n default:\n setShowCalibrateDownloads(false);\n }\n };\n\n const getIcons = () => {\n const navIcons = [\n {\n id: 'recent-downloads',\n label: 'Recent Downloads',\n icon: () => (\n <DownloadIconAnimated\n dotColor={dotColor}\n stopAnimation={stopDotAnimation}\n color={\n isDarkMode(activeTheme)\n ? activeTheme?.colors.text.getValue(0)\n : activeTheme?.colors.text.getValue(3)\n }\n />\n ),\n onClick: () => setShowCalibrateDownloads(!showCalibrateDownloads),\n },\n ];\n // temporary: add upload icon only for SUPER_ADMIN user:\n if (hasRole([USER_ROLES.SUPER_ADMIN])) {\n return [\n ...navIcons,\n {\n id: 'upload',\n label: 'Uploads',\n icon: () => (\n <IconUpload\n color={\n isDarkMode(activeTheme)\n ? activeTheme?.colors.text.getValue(0)\n : activeTheme?.colors.text.getValue(3)\n }\n />\n ),\n onClick: () => history.push('/upload'),\n },\n ];\n }\n };\n\n const showSearch = hasRole([\n USER_ROLES.SUPER_ADMIN,\n USER_ROLES.ACIN_USER,\n USER_ROLES.DATA_USER,\n USER_ROLES.CUSTOMER_USER,\n USER_ROLES.RISK_INTEL_USER,\n ]);\n\n React.useEffect(() => {\n if (showDropdown) {\n const handleOutsideClick = (event: MouseEvent) => {\n handleCloseSearch(event);\n };\n\n document.addEventListener('click', handleOutsideClick);\n\n return () => {\n document.removeEventListener('click', handleOutsideClick);\n };\n }\n }, [showDropdown]);\n\n const handleOpenSearch = () => {\n if (!showDropdown) {\n setWidenSearch(true);\n setTimeout(() => {\n setShowDropdown(true);\n }, 100);\n }\n };\n\n const handleCloseSearch = (event?: MouseEvent) => {\n const clickedElement = event?.target as HTMLElement | null;\n\n if (clickedElement) {\n const isOutside =\n !fieldRef.current?.contains(clickedElement) && !dropdownRef.current?.contains(clickedElement);\n\n if (isOutside) {\n setShowDropdown(false);\n setSearchTerm('');\n setWidenSearch(false);\n }\n }\n };\n\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n return (\n <SearchProvider>\n <CoreMainNav\n navigation={menuItems}\n onNavigationClick={(item: MenuItem) => {\n setShowCalibrateDownloads(false);\n onClick(item.id);\n }}\n onLogoClick={onLogoClick}\n activeItem={getActiveMenuItem()}\n renderSearch={() =>\n showSearch && (\n <SC.SearchBarWrapper widenSearch={widenSearch}>\n <SC.SearchBarExtender ref={fieldRef}>\n <SearchField\n onClick={handleOpenSearch}\n searchTerm={searchTerm}\n onSearch={setSearchTerm}\n onClear={() => setSearchTerm(undefined)}\n />\n </SC.SearchBarExtender>\n </SC.SearchBarWrapper>\n )\n }\n settingsMenuContents={userMenuItems}\n onMenuClick={(item) => handleMenuClick(item?.id)}\n icons={getIcons()}\n />\n <SC.DropdownHolder ref={dropdownRef}>\n <SearchDropdown\n onNavigate={onNavigate}\n onClose={handleCloseSearch}\n isVisible={showDropdown}\n searchTerm={searchTerm}\n position={position}\n />\n </SC.DropdownHolder>\n <UserPreferencesModal show={showPreferencesModal} onClose={() => setShowPreferencesModal(false)} />\n <EmailPreferencesModal\n show={showEmailNotificationsModal}\n onClose={() => setShowEmailNotificationsModal(false)}\n />\n {showUserAccount && (\n <UserAccountModal\n showInventories={hasRole([USER_ROLES.SUPER_ADMIN, USER_ROLES.ACIN_USER, USER_ROLES.DATA_USER])}\n show={showUserAccount}\n onClose={() => setShowUserAccount(false)}\n />\n )}\n {showCalibrateDownloads && (\n <DownloadsList\n onClose={closeDownloads}\n deleteCalibrateDownload={deleteCalibrateDownload}\n allCalibrateDownloads={allCalibrateDownloads}\n markCalibrateAsDownloaded={markCalibrateAsDownloaded}\n />\n )}\n </SearchProvider>\n );\n};\n","import { Theme } from '@acin/ui-core';\n\nexport const getDotColor = (activeTheme: Theme, oneFailed: boolean, oneInProgress: boolean, oneProcessed: boolean) => {\n if (oneFailed) {\n return activeTheme.colors.error.getValue(500).main;\n } else if (oneProcessed) {\n return activeTheme.colors.success.getValue(500).main;\n } else if (oneInProgress) {\n return activeTheme.colors.info.getValue(500).main;\n }\n return undefined;\n};\n","/* eslint-disable react/jsx-props-no-spreading */\nimport React from 'react';\nimport { Route, RouteProps } from 'react-router-dom';\nimport { Layout, PrivateRoute as UiCorePrivateRoute } from '@acin/ui-core';\n\nimport { NoAccessPage } from '@acin/terminal-onboarding';\nimport { useAuth } from '@acin/user-accounts';\nimport { MainNav } from '../components/MainNav';\n\nexport const PrivateRoute: React.FC<RouteProps> = (props) => {\n const { isAuthenticated, loading, user } = useAuth();\n const { children, ...rest } = props;\n\n if (loading) {\n return null;\n }\n\n const renderContent = () => {\n if (!user?.accountCode) {\n return (\n <Route\n {...rest}\n render={() => {\n return (\n <Layout\n renderNavigation={() => <MainNav />}\n renderContent={() => <NoAccessPage userName=\"\" hasAccount={false} />}\n />\n );\n }}\n />\n );\n }\n\n if (user?.totalInventories === 0) {\n return (\n <Route\n {...rest}\n render={() => {\n return (\n <Layout\n renderNavigation={() => <MainNav />}\n renderContent={() => (\n <NoAccessPage\n accountName={user?.accountCode}\n userName={user?.name}\n hasAccount={true}\n />\n )}\n />\n );\n }}\n />\n );\n }\n\n return children;\n };\n\n return (\n <UiCorePrivateRoute isAuthenticated={isAuthenticated} redirectPath=\"/login\">\n {renderContent()}\n </UiCorePrivateRoute>\n );\n};\n","import React from 'react';\nimport { useHistory, withRouter } from 'react-router-dom';\nimport { History } from 'history';\n\ninterface ScrollToTopProps {\n history: History;\n}\n\nconst ScrollToTop: React.FC<ScrollToTopProps> = () => {\n const history = useHistory();\n\n React.useEffect(() => {\n const unlisten = history.listen(() => {\n window.scrollTo(0, 0);\n });\n return () => {\n unlisten();\n };\n }, [history]);\n\n return null;\n};\n\nexport default withRouter(ScrollToTop);\n","import React from 'react';\nimport { Loading, LayoutHorizontal } from '@acin/ui-core';\nimport { Switch, Route } from 'react-router-dom';\n\nimport { getPathById } from '../components/MainNav/config/horizontalMenu';\nimport { MainNav } from '../components/MainNav';\nimport ScrollToTop from './ScrollToTop';\n\n// Lazy load the pages\nconst Settings = React.lazy(() => import('../pages/Settings').then((module) => ({ default: module.Settings })));\nconst HomePage = React.lazy(() =>\n import('../pages/Homepage/component/Homepage').then((module) => ({\n default: module.Homepage,\n })),\n);\n\n// const InterimDashboard = React.lazy(() =>\n// import('../pages/InterimDashboard').then((module) => ({ default: module.InterimDashboard })),\n// );\nconst RiskIntelligence = React.lazy(() =>\n import('../pages/RiskIntelligence/components/RiskIntelligence').then((module) => ({\n default: module.RiskIntelligence,\n })),\n);\nconst RiskIntelligenceHub = React.lazy(() =>\n import('../pages/RiskIntelligence/components/RiskIntelligenceHub').then((module) => ({\n default: module.RiskIntelligenceHub,\n })),\n);\nconst ConnectData = React.lazy(() =>\n import('../pages/ConnectData').then((module) => ({ default: module.ConnectData })),\n);\nconst ManageAccounts = React.lazy(() =>\n import('../pages/ManageAccounts').then((module) => ({ default: module.ManageAccounts })),\n);\nconst Explorer = React.lazy(() => import('../pages/Explorer').then((module) => ({ default: module.Explorer })));\nconst Calibrate = React.lazy(() => import('../pages/Calibrate').then((module) => ({ default: module.Calibrate })));\nconst Documents = React.lazy(() => import('../pages/Documents').then((module) => ({ default: module.Documents })));\nconst Notifications = React.lazy(() =>\n import('../pages/Notifications').then((module) => ({ default: module.Notifications })),\n);\nconst Upload = React.lazy(() => import('../pages/Upload').then((module) => ({ default: module.Upload })));\n\nexport const PrivateLayout = () => (\n <LayoutHorizontal\n renderNavigation={() => <MainNav />}\n renderContent={() => (\n <div>\n <React.Suspense fallback={<Loading position=\"absolute\" withOverlay />}>\n <ScrollToTop />\n <Switch>\n <Route exact path={getPathById('dashboard')}>\n <HomePage />\n </Route>\n <Route exact path={getPathById('riskIntelligenceHub')}>\n <RiskIntelligenceHub />\n </Route>\n <Route path={getPathById('riskIntelligence')}>\n <RiskIntelligence />\n </Route>\n <Route path={getPathById('explorer')}>\n <Explorer />\n </Route>\n <Route path={getPathById('calibrate')}>\n <Calibrate requestedLandingTabId=\"popular-reports\" />\n </Route>\n <Route path={getPathById('controls')}>\n <Calibrate requestedLandingTabId=\"popular-reports\" />\n </Route>\n <Route path={getPathById('controlQuality')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('reportBuilderControls')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('reportBuilderAcinControls')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('reportBuilderControlQuality')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('reportBuilderNetworkControls')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('controlGaps')}>\n <Calibrate />\n </Route>\n <Route path={getPathById('acinIndexControls')}>\n <Calibrate requestedLandingTabId=\"popular-reports\" />\n </Route>\n <Route path={getPathById('connectData')}>\n <ConnectData />\n </Route>\n <Route exact path={getPathById('manageAccounts')}>\n <ManageAccounts />\n </Route>\n <Route exact path={getPathById('documents')}>\n <Documents />\n </Route>\n <Route exact path={getPathById('notifications')}>\n <Notifications />\n </Route>\n <Route path={getPathById('upload')}>\n <Upload />\n </Route>\n\n {/* Alternative Dashboard */}\n {/* <Route exact path={getPathById('interimDashboard')}>\n <Dashboard />\n </Route> */}\n\n {/* Any additional Routes that are not page related */}\n <Route exact path={getPathById('settings')}>\n <Settings />\n </Route>\n </Switch>\n </React.Suspense>\n </div>\n )}\n />\n);\n","import React from 'react';\n\nimport { useAuth } from '@acin/user-accounts';\n\nexport const Login = () => {\n const { isAuthenticated, loading, login, logout } = useAuth();\n\n React.useEffect(() => {\n if (!isAuthenticated && !loading) {\n login();\n } else if (isAuthenticated && !loading) {\n logout();\n }\n }, [login, logout, isAuthenticated, loading]);\n\n return null;\n};\n","import React from 'react';\nimport { Heading, Text } from '@acin/ui-core';\n\ninterface Error {\n error: string;\n desc: string;\n}\n\nexport const Auth = () => {\n const [error, setError] = React.useState<Error | null>(null);\n\n React.useEffect(() => {\n if (window.location.search.includes('error=')) {\n const params = new URLSearchParams(window.location.search);\n const error = params.get('error');\n const desc = params.get('error_description');\n\n if (error && desc) {\n setError({ error, desc });\n }\n }\n }, []);\n\n if (error) {\n return (\n <div>\n <Heading>{error.error}</Heading>\n <Text>{error.desc}</Text>\n </div>\n );\n }\n\n return <div />;\n};\n","import React from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\nimport { PrivateRoute } from './PrivateRoute';\nimport { PrivateLayout } from './PrivateLayout';\n\nimport { Login } from './Login';\nimport { Auth } from './Auth';\n\nexport const Router = () => (\n <Switch>\n <Route path=\"/login\">\n <Login />\n </Route>\n {/*\n This is the auth callback url - it will redirect to the dashboard\n */}\n <Route path=\"/auth\">\n <Auth />\n </Route>\n <PrivateRoute path=\"/\">\n {/* All private routing is done inside the Private layout */}\n <PrivateLayout />\n </PrivateRoute>\n </Switch>\n);\n","import React from 'react';\nimport { useAuth } from '@acin/user-accounts';\nimport { Router } from './routes';\n\nconst AUTO_LOGOUT_TIME = 30 * 60 * 1000; // 30 minutes\n// const AUTO_LOGOUT_TIME = 10000; // 10 seconds for testing purposes\n\nexport const App: React.FC = () => {\n const { logout } = useAuth();\n const timer = React.useRef<number | undefined>(undefined);\n\n const handleLogout = React.useCallback(() => {\n localStorage.clear();\n let redirect: any;\n if (process.env.NODE_ENV !== 'development') {\n redirect = {\n returnTo: `https://${window.location.hostname}`,\n };\n }\n if (process.env.REACT_APP_CYPRESS_ENABLE === 'true') {\n redirect = {\n returnTo: `http://${window.location.hostname}:3000`,\n };\n }\n\n logout(redirect);\n }, [logout]);\n\n const resetTimer = React.useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = window.setTimeout(handleLogout, AUTO_LOGOUT_TIME);\n }, [handleLogout]);\n\n React.useEffect(() => {\n const activityEvents: (keyof WindowEventMap)[] = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart'];\n const handleUserActivity = () => {\n activityEvents.forEach((event) => window.addEventListener(event, resetTimer));\n };\n\n handleUserActivity();\n resetTimer();\n\n return () => {\n activityEvents.forEach((event) => window.removeEventListener(event, resetTimer));\n if (timer.current) {\n clearTimeout(timer.current);\n }\n };\n }, [resetTimer]);\n\n return <Router />;\n};\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n if (ctor === null) {\n ctor = undefined;\n }\n }\n return ctor !== undefined ? ctor : Observable;\n}\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n if (!cleanup) {\n return;\n }\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n if (!queue) {\n return;\n }\n subscription._queue = undefined;\n subscription._state = 'ready';\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n try {\n var m = getMethod(observer, type);\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n return;\n }\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n notifySubscription(subscription, type, value);\n}\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n if (this._state === 'initializing') this._state = 'ready';\n }\n var _proto = Subscription.prototype;\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n return Subscription;\n}();\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n var _proto2 = SubscriptionObserver.prototype;\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n return SubscriptionObserver;\n}();\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n var _proto3 = Observable.prototype;\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n return new Subscription(observer, this._subscriber);\n };\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n _proto3.map = function map(fn) {\n var _this2 = this;\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n _proto3.concat = function concat() {\n var _this5 = this;\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n _proto3[SymbolObservable] = function () {\n return this;\n };\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n }\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n }\n throw new TypeError(x + ' is not observable');\n };\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n observer.complete();\n });\n });\n };\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n return Observable;\n}();\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\nexport { Observable };","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, newInvariantError } from \"../globals/index.js\";\n/**\n * Returns a query document which adds a single query operation that only\n * spreads the target fragment inside of it.\n *\n * So for example a document of:\n *\n * ```graphql\n * fragment foo on Foo { a b c }\n * ```\n *\n * Turns into:\n *\n * ```graphql\n * { ...foo }\n *\n * fragment foo on Foo { a b c }\n * ```\n *\n * The target fragment will either be the only fragment in the document, or a\n * fragment specified by the provided `fragmentName`. If there is more than one\n * fragment, but a `fragmentName` was not defined then an error will be thrown.\n */\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n // Build an array of all our fragment definitions that will be used for\n // validations. We also do some validations on the other definitions in the\n // document while building this list.\n var fragments = [];\n document.definitions.forEach(function (definition) {\n // Throw an error if we encounter an operation definition because we will\n // define our own operation definition later on.\n if (definition.kind === \"OperationDefinition\") {\n throw newInvariantError(71, definition.operation, definition.name ? \" named '\".concat(definition.name.value, \"'\") : \"\");\n }\n // Add our definition to the fragments array if it is a fragment\n // definition.\n if (definition.kind === \"FragmentDefinition\") {\n fragments.push(definition);\n }\n });\n // If the user did not give us a fragment name then let us try to get a\n // name from a single fragment in the definition.\n if (typeof actualFragmentName === \"undefined\") {\n invariant(fragments.length === 1, 72, fragments.length);\n actualFragmentName = fragments[0].name.value;\n }\n // Generate a query document with an operation that simply spreads the\n // fragment inside of it.\n var query = __assign(__assign({}, document), {\n definitions: __spreadArray([{\n kind: \"OperationDefinition\",\n // OperationTypeNode is an enum\n operation: \"query\",\n selectionSet: {\n kind: \"SelectionSet\",\n selections: [{\n kind: \"FragmentSpread\",\n name: {\n kind: \"Name\",\n value: actualFragmentName\n }\n }]\n }\n }], document.definitions, true)\n });\n return query;\n}\n// Utility function that takes a list of fragment definitions and makes a hash out of them\n// that maps the name of the fragment to the fragment definition.\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) {\n fragments = [];\n }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case \"InlineFragment\":\n return selection;\n case \"FragmentSpread\":\n {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n invariant(fragment, 73, fragmentName);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { AutoCleanedStrongCache, cacheSizes } from \"../../utilities/caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\n/**\n * Like JSON.stringify, but with object keys always sorted in the same order.\n *\n * To achieve performant sorting, this function uses a Map from JSON-serialized\n * arrays of keys (in any order) to sorted arrays of the same keys, with a\n * single sorted array reference shared by all permutations of the keys.\n *\n * As a drawback, this function will add a little bit more memory for every\n * object encountered that has different (more, less, a different order of) keys\n * than in the past.\n *\n * In a typical application, this extra memory usage should not play a\n * significant role, as `canonicalStringify` will be called for only a limited\n * number of object shapes, and the cache will not grow beyond a certain point.\n * But in some edge cases, this could be a problem, so we provide\n * canonicalStringify.reset() as a way of clearing the cache.\n * */\nexport var canonicalStringify = Object.assign(function canonicalStringify(value) {\n return JSON.stringify(value, stableObjectReplacer);\n}, {\n reset: function () {\n // Clearing the sortingMap will reclaim all cached memory, without\n // affecting the logical results of canonicalStringify, but potentially\n // sacrificing performance until the cache is refilled.\n sortingMap = new AutoCleanedStrongCache(cacheSizes.canonicalStringify || 1000 /* defaultCacheSizes.canonicalStringify */);\n }\n});\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"canonicalStringify\", function () {\n return sortingMap.size;\n });\n}\n// Values are JSON-serialized arrays of object keys (in any order), and values\n// are sorted arrays of the same keys.\nvar sortingMap;\ncanonicalStringify.reset();\n// The JSON.stringify function takes an optional second argument called a\n// replacer function. This function is called for each key-value pair in the\n// object being stringified, and its return value is used instead of the\n// original value. If the replacer function returns a new value, that value is\n// stringified as JSON instead of the original value of the property.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#the_replacer_parameter\nfunction stableObjectReplacer(key, value) {\n if (value && typeof value === \"object\") {\n var proto = Object.getPrototypeOf(value);\n // We don't want to mess with objects that are not \"plain\" objects, which\n // means their prototype is either Object.prototype or null. This check also\n // prevents needlessly rearranging the indices of arrays.\n if (proto === Object.prototype || proto === null) {\n var keys = Object.keys(value);\n // If keys is already sorted, let JSON.stringify serialize the original\n // value instead of creating a new object with keys in the same order.\n if (keys.every(everyKeyInOrder)) return value;\n var unsortedKey = JSON.stringify(keys);\n var sortedKeys = sortingMap.get(unsortedKey);\n if (!sortedKeys) {\n keys.sort();\n var sortedKey = JSON.stringify(keys);\n // Checking for sortedKey in the sortingMap allows us to share the same\n // sorted array reference for all permutations of the same set of keys.\n sortedKeys = sortingMap.get(sortedKey) || keys;\n sortingMap.set(unsortedKey, sortedKeys);\n sortingMap.set(sortedKey, sortedKeys);\n }\n var sortedObject_1 = Object.create(proto);\n // Reassigning the keys in sorted order will cause JSON.stringify to\n // serialize them in sorted order.\n sortedKeys.forEach(function (key) {\n sortedObject_1[key] = value[key];\n });\n return sortedObject_1;\n }\n }\n return value;\n}\n// Since everything that happens in stableObjectReplacer benefits from being as\n// efficient as possible, we use a static function as the callback for\n// keys.every in order to test if the provided keys are already sorted without\n// allocating extra memory for a callback.\nfunction everyKeyInOrder(key, i, keys) {\n return i === 0 || keys[i - 1] <= key;\n}\n//# sourceMappingURL=canonicalStringify.js.map","import { newInvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nimport { canonicalStringify } from \"../common/canonicalStringify.js\";\nexport function makeReference(id) {\n return {\n __ref: String(id)\n };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === \"object\" && typeof obj.__ref === \"string\");\n}\nexport function isDocumentNode(value) {\n return isNonNullObject(value) && value.kind === \"Document\" && Array.isArray(value.definitions);\n}\nfunction isStringValue(value) {\n return value.kind === \"StringValue\";\n}\nfunction isBooleanValue(value) {\n return value.kind === \"BooleanValue\";\n}\nfunction isIntValue(value) {\n return value.kind === \"IntValue\";\n}\nfunction isFloatValue(value) {\n return value.kind === \"FloatValue\";\n}\nfunction isVariable(value) {\n return value.kind === \"Variable\";\n}\nfunction isObjectValue(value) {\n return value.kind === \"ObjectValue\";\n}\nfunction isListValue(value) {\n return value.kind === \"ListValue\";\n}\nfunction isEnumValue(value) {\n return value.kind === \"EnumValue\";\n}\nfunction isNullValue(value) {\n return value.kind === \"NullValue\";\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n } else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n } else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n } else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n } else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n } else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n } else if (isNullValue(value)) {\n argObj[name.value] = null;\n } else {\n throw newInvariantError(82, name.value, value.kind);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name,\n value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name,\n value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\"connection\", \"include\", \"skip\", \"client\", \"rest\", \"export\", \"nonreactive\"];\n// Default stable JSON.stringify implementation used by getStoreKeyName. Can be\n// updated/replaced with something better by calling\n// getStoreKeyName.setStringify(newStringifyFunction).\nvar storeKeyNameStringify = canonicalStringify;\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args && directives && directives[\"connection\"] && directives[\"connection\"][\"key\"]) {\n if (directives[\"connection\"][\"filter\"] && directives[\"connection\"][\"filter\"].length > 0) {\n var filterKeys = directives[\"connection\"][\"filter\"] ? directives[\"connection\"][\"filter\"] : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives[\"connection\"][\"key\"], \"(\").concat(storeKeyNameStringify(filteredArgs_1), \")\");\n } else {\n return directives[\"connection\"][\"key\"];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n // We can't use `JSON.stringify` here since it's non-deterministic,\n // and can lead to different store key names being created even though\n // the `args` object used during creation has the same properties/values.\n var stringifiedArgs = storeKeyNameStringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1) return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(storeKeyNameStringify(directives[key]), \")\");\n } else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = storeKeyNameStringify;\n storeKeyNameStringify = s;\n return previous;\n }\n});\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name,\n value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n var fragments;\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === \"__typename\") {\n return result[resultKeyNameFromField(selection)];\n }\n } else if (fragments) {\n fragments.push(selection);\n } else {\n fragments = [selection];\n }\n }\n if (typeof result.__typename === \"string\") {\n return result.__typename;\n }\n if (fragments) {\n for (var _b = 0, fragments_1 = fragments; _b < fragments_1.length; _b++) {\n var selection = fragments_1[_b];\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === \"string\") {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === \"Field\";\n}\nexport function isInlineFragment(selection) {\n return selection.kind === \"InlineFragment\";\n}\n//# sourceMappingURL=storeUtils.js.map","import { invariant, newInvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\n// Checks the document for errors and throws an exception if there is an error.\nexport function checkDocument(doc) {\n invariant(doc && doc.kind === \"Document\", 74);\n var operations = doc.definitions.filter(function (d) {\n return d.kind !== \"FragmentDefinition\";\n }).map(function (definition) {\n if (definition.kind !== \"OperationDefinition\") {\n throw newInvariantError(75, definition.kind);\n }\n return definition;\n });\n invariant(operations.length <= 1, 76, operations.length);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"OperationDefinition\";\n })[0];\n}\nexport function getOperationName(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"OperationDefinition\" && !!definition.name;\n }).map(function (x) {\n return x.name.value;\n })[0] || null;\n}\n// Returns the FragmentDefinitions from a particular document as an array\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) {\n return definition.kind === \"FragmentDefinition\";\n });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n invariant(queryDef && queryDef.operation === \"query\", 77);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n invariant(doc.kind === \"Document\", 78);\n invariant(doc.definitions.length <= 1, 79);\n var fragmentDef = doc.definitions[0];\n invariant(fragmentDef.kind === \"FragmentDefinition\", 80);\n return fragmentDef;\n}\n/**\n * Returns the first operation definition found in this document.\n * If no operation definition is found, the first fragment definition will be returned.\n * If no definitions are found, an error will be thrown.\n */\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === \"OperationDefinition\") {\n var operation = definition.operation;\n if (operation === \"query\" || operation === \"mutation\" || operation === \"subscription\") {\n return definition;\n }\n }\n if (definition.kind === \"FragmentDefinition\" && !fragmentDefinition) {\n // we do this because we want to allow multiple fragment definitions\n // to precede an operation definition.\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw newInvariantError(81);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { newInvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return forward ? forward(op) : Observable.of();\n}\nfunction toLink(handler) {\n return typeof handler === \"function\" ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar ApolloLink = /** @class */function () {\n function ApolloLink(request) {\n if (request) this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () {\n return Observable.of();\n });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0) return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) {\n return x.concat(y);\n });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n var ret;\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n ret = new ApolloLink(function (operation) {\n return test(operation) ? leftLink.request(operation) || Observable.of() : rightLink.request(operation) || Observable.of();\n });\n } else {\n ret = new ApolloLink(function (operation, forward) {\n return test(operation) ? leftLink.request(operation, forward) || Observable.of() : rightLink.request(operation, forward) || Observable.of();\n });\n }\n return Object.assign(ret, {\n left: leftLink,\n right: rightLink\n });\n };\n ApolloLink.execute = function (link, operation) {\n return link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of();\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n globalThis.__DEV__ !== false && invariant.warn(35, firstLink);\n return firstLink;\n }\n var nextLink = toLink(second);\n var ret;\n if (isTerminating(nextLink)) {\n ret = new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) {\n return nextLink.request(op) || Observable.of();\n }) || Observable.of();\n });\n } else {\n ret = new ApolloLink(function (operation, forward) {\n return firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of();\n });\n }\n return Object.assign(ret, {\n left: firstLink,\n right: nextLink\n });\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw newInvariantError(36);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n // Returning false indicates that observer.error does not need to be\n // called again, since it was already called (on the previous line).\n // Calling observer.error again would not cause any real problems,\n // since only the first call matters, but custom onError functions\n // might have other reasons for wanting to prevent the default\n // behavior by returning false.\n return false;\n }\n // Throw errors will be passed to observer.error.\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}();\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === \"function\") {\n context = __assign(__assign({}, context), next(context));\n } else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () {\n return __assign({}, context);\n };\n Object.defineProperty(operation, \"setContext\", {\n enumerable: false,\n value: setContext\n });\n Object.defineProperty(operation, \"getContext\", {\n enumerable: false,\n value: getContext\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query\n };\n // Best guess at an operation name\n if (!transformedOperation.operationName) {\n transformedOperation.operationName = typeof transformedOperation.query !== \"string\" ? getOperationName(transformedOperation.query) || undefined : \"\";\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\"query\", \"operationName\", \"variables\", \"extensions\", \"context\"];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw newInvariantError(43, key);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name',\n // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n node = clone;\n }\n var editOffset = 0;\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n if (inArray) {\n editKey -= editOffset;\n }\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n if (node === null || node === undefined) {\n continue;\n }\n if (parent) {\n path.push(key);\n }\n }\n var result = void 0;\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n if (result === BREAK) {\n break;\n }\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n if (parent) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind, /* isLeaving */\n false);\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind, /* isLeaving */\n true);\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n var specificKindVisitor = specificVisitor[kind];\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK } from \"graphql\";\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive,\n ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === \"Variable\") {\n evaledValue = variables && variables[ifArgument.value.name.value];\n invariant(evaledValue !== void 0, 67, directive.name.value);\n } else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === \"skip\" ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n }\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) {\n return hasDirectives(names, root, false);\n};\nexport var hasAllDirectives = function (names, root) {\n return hasDirectives(names, root, true);\n};\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) && (!all || !nameSet.size)) {\n return BREAK;\n }\n }\n });\n // If we found all the names, nameSet will be empty. If we only care about\n // finding some of them, the < condition is sufficient.\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives([\"client\", \"export\"], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === \"skip\" || value === \"include\";\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive)) return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n invariant(directiveArguments && directiveArguments.length === 1, 68, directiveName);\n var ifArgument = directiveArguments[0];\n invariant(ifArgument.name && ifArgument.name.value === \"if\", 69, directiveName);\n var ifValue = ifArgument.value;\n // means it has to be a variable value if this is a valid @skip or @include directive\n invariant(ifValue && (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\"), 70, directiveName);\n result.push({\n directive: directive,\n ifArgument: ifArgument\n });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n } catch (e) {\n var parseError = newInvariantError(39, label, e.message);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/nodeStream.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error) return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({\n value: chunk,\n done: false\n });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({\n value: undefined,\n done: true\n });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error) return reject(error);\n if (data.length) return resolve({\n value: data.shift(),\n done: false\n });\n if (done) return resolve({\n value: undefined,\n done: true\n });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n }\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=nodeStream.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/reader.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n }\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=reader.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/index.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../utilities/index.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nfunction isNodeResponse(value) {\n return !!value.body;\n}\nfunction isReadableStream(value) {\n return !!value.getReader;\n}\nfunction isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol && value[Symbol.asyncIterator]);\n}\nfunction isStreamableBlob(value) {\n return !!value.stream;\n}\nfunction isBlob(value) {\n return !!value.arrayBuffer;\n}\nfunction isNodeReadableStream(value) {\n return !!value.pipe;\n}\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response)) body = response.body;\n if (isAsyncIterableIterator(body)) return asyncIterator(body);\n if (isReadableStream(body)) return readerIterator(body.getReader());\n // this errors without casting to ReadableStream<T>\n // because Blob.stream() returns a NodeJS ReadableStream\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body)) return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body)) return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n//# sourceMappingURL=responseIterator.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/async.ts\n */\nexport default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n }, _a[Symbol.asyncIterator] = function () {\n return this;\n }, _a;\n}\n//# sourceMappingURL=async.js.map","/**\n * Original source:\n * https://github.com/kmalakoff/response-iterator/blob/master/src/iterators/promise.ts\n */\nimport { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved) return Promise.resolve({\n value: undefined,\n done: true\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise.then(function (value) {\n resolve({\n value: value,\n done: false\n });\n }).catch(reject);\n });\n }\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=promise.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = \"ServerError\";\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\n// In almost any situation where you could succeed in getting the\n// TypeScript compiler to infer a tuple type for the sources array, you\n// could just use mergeDeep instead of mergeDeepArray, so instead of\n// trying to convert T[] to an intersection type we just infer the array\n// element type, which works perfectly when the sources array has a\n// consistent element type.\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = /** @class */function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) {\n reconciler = defaultReconciler;\n }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target, source, sourceKey], context, false));\n // A well-implemented reconciler may return targetValue to indicate\n // the merge changed nothing about the structure of the target.\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n } else {\n // If there is no collision, the target can safely share memory with\n // the source, and the recursion can terminate here.\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n // If source (or target) is not an object, let source replace target.\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n } else {\n value = __assign({\n __proto__: Object.getPrototypeOf(value)\n }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}();\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { isNonNullObject } from \"./objects.js\";\nimport { isNonEmptyArray } from \"./arrays.js\";\nimport { DeepMerger } from \"./mergeDeep.js\";\nexport function isExecutionPatchIncrementalResult(value) {\n return \"incremental\" in value;\n}\nexport function isExecutionPatchInitialResult(value) {\n return \"hasNext\" in value && \"data\" in value;\n}\nexport function isExecutionPatchResult(value) {\n return isExecutionPatchIncrementalResult(value) || isExecutionPatchInitialResult(value);\n}\n// This function detects an Apollo payload result before it is transformed\n// into a FetchResult via HttpLink; it cannot detect an ApolloPayloadResult\n// once it leaves the link chain.\nexport function isApolloPayloadResult(value) {\n return isNonNullObject(value) && \"payload\" in value;\n}\nexport function mergeIncrementalData(prevResult, result) {\n var mergedData = prevResult;\n var merger = new DeepMerger();\n if (isExecutionPatchIncrementalResult(result) && isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (_a) {\n var data = _a.data,\n path = _a.path;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n mergedData = merger.merge(mergedData, data);\n });\n }\n return mergedData;\n}\n//# sourceMappingURL=incrementalResult.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../../errors/index.js\";\nimport { isApolloPayloadResult } from \"../../utilities/common/incrementalResult.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, nextValue) {\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _a, value, done, chunk, searchFrom, bi, message, i, headers, contentType_1, body, result, next;\n var _b, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_d = response.headers) === null || _d === void 0 ? void 0 : _d.get(\"content-type\");\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter)) ? contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim() : \"-\";\n boundary = \"\\r\\n--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _e.label = 1;\n case 1:\n if (!running) return [3 /*break*/, 3];\n return [4 /*yield*/, iterator.next()];\n case 2:\n _a = _e.sent(), value = _a.value, done = _a.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n searchFrom = buffer.length - boundary.length + 1;\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary, searchFrom);\n while (bi > -1) {\n message = void 0;\n _b = [buffer.slice(0, bi), buffer.slice(bi + boundary.length)], message = _b[0], buffer = _b[1];\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 && contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n if (body) {\n result = parseJsonBody(response, body);\n if (Object.keys(result).length > 1 || \"data\" in result || \"incremental\" in result || \"errors\" in result || \"payload\" in result) {\n if (isApolloPayloadResult(result)) {\n next = {};\n if (\"payload\" in result) {\n if (Object.keys(result).length === 1 && result.payload === null) {\n return [2 /*return*/];\n }\n next = __assign({}, result.payload);\n }\n if (\"errors\" in result) {\n next = __assign(__assign({}, next), {\n extensions: __assign(__assign({}, \"extensions\" in next ? next.extensions : null), (_c = {}, _c[PROTOCOL_ERRORS_SYMBOL] = result.errors, _c))\n });\n }\n nextValue(next);\n } else {\n // for the last chunk with only `hasNext: false`\n // we don't need to call observer.next as there is no data/errors\n nextValue(result);\n }\n } else if (\n // If the chunk contains only a \"hasNext: false\", we can call\n // observer.complete() immediately.\n Object.keys(result).length === 1 && \"hasNext\" in result && !result.hasNext) {\n return [2 /*return*/];\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3 /*break*/, 1];\n case 3:\n return [2 /*return*/];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n // normalize headers to lowercase\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n // Network error\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n } catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n } catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n // if it is a network error, BUT there is graphql result info fire\n // the next observer before calling error this gives apollo-client\n // (and react-apollo) the `graphqlErrors` and `networkErrors` to\n // pass to UI this should only happen if we *also* have data as\n // part of the response key per the spec\n if (err.result && err.result.errors && err.result.data) {\n // if we don't call next, the UI can only show networkError\n // because AC didn't get any graphqlErrors this is graphql\n // execution result info (i.e errors and possibly data) this is\n // because there is no formal spec how errors should translate to\n // http status codes. So an auth error (401) could have both data\n // from a public field, errors from a private field, and a status\n // of 401\n // {\n // user { // this will have errors\n // firstName\n // }\n // products { // this is public so will have data\n // cost\n // }\n // }\n //\n // the result of above *could* look like this:\n // {\n // data: { products: [{ cost: \"$10\" }] },\n // errors: [{\n // message: 'your session has timed out',\n // path: []\n // }]\n // }\n // status code of above would be a 401\n // in the UI you want to show data where you can, errors as data where you can\n // and use correct http status codes\n observer.next(err.result);\n }\n observer.error(err);\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response.text().then(function (bodyText) {\n return parseJsonBody(response, bodyText);\n }).then(function (result) {\n if (!Array.isArray(result) && !hasOwnProperty.call(result, \"data\") && !hasOwnProperty.call(result, \"errors\")) {\n // Data error\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations) ? operations.map(function (op) {\n return op.operationName;\n }) : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { newInvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === \"undefined\") {\n throw newInvariantError(37);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (\n // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}","import { print as origPrint } from \"graphql\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../caching/index.js\";\nimport { registerGlobalCache } from \"../caching/getMemoryInternals.js\";\nvar printCache;\nexport var print = Object.assign(function (ast) {\n var result = printCache.get(ast);\n if (!result) {\n result = origPrint(ast);\n printCache.set(ast, result);\n }\n return result;\n}, {\n reset: function () {\n printCache = new AutoCleanedWeakCache(cacheSizes.print || 2000 /* defaultCacheSizes.print */);\n }\n});\nprint.reset();\nif (globalThis.__DEV__ !== false) {\n registerGlobalCache(\"print\", function () {\n return printCache ? printCache.size : 0;\n });\n}\n//# sourceMappingURL=print.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from \"../../utilities/index.js\";\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false\n};\nvar defaultHeaders = {\n // headers are case insensitive (https://stackoverflow.com/a/5259004)\n accept: \"*/*\",\n // The content-type header describes the type of the body of the request, and\n // so it typically only is sent with requests that actually have bodies. One\n // could imagine that Apollo Client would remove this header when constructing\n // a GET request (which has no body), but we historically have not done that.\n // This means that browsers will preflight all Apollo Client requests (even\n // GET requests). Apollo Server's CSRF prevention feature (introduced in\n // AS3.7) takes advantage of this fact and does not block requests with this\n // header. If you want to drop this header from GET requests, then you should\n // probably replace it with a `apollo-require-preflight` header, or servers\n // with CSRF prevention enabled might block your GET request. See\n // https://www.apollographql.com/docs/apollo-server/security/cors/#preventing-cross-site-request-forgery-csrf\n // for more details.\n \"content-type\": \"application/json\"\n};\nvar defaultOptions = {\n method: \"POST\"\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions\n};\nexport var defaultPrinter = function (ast, printer) {\n return printer(ast);\n};\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation, defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), {\n headers: __assign(__assign({}, options.headers), config.headers)\n });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n if (options.headers) {\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n }\n //The body depends on the http options\n var operationName = operation.operationName,\n extensions = operation.extensions,\n variables = operation.variables,\n query = operation.query;\n var body = {\n operationName: operationName,\n variables: variables\n };\n if (http.includeExtensions) body.extensions = extensions;\n // not sending the query (i.e persisted queries)\n if (http.includeQuery) body.query = printer(query, print);\n return {\n options: options,\n body: body\n };\n}\n// Remove potential duplicate header names, preserving last (by insertion order).\n// This is done to prevent unintentionally duplicating a header instead of\n// overwriting it (See #8447 and #8449).\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n // If we're not preserving the case, just remove duplicates w/ normalization.\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n // If we are preserving the case, remove duplicates w/ normalization,\n // preserving the original name.\n // This allows for non-http-spec-compliant servers that expect intentionally\n // capitalized header names (See #6741).\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = {\n originalName: name,\n value: headers[name]\n };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, Kind } from \"graphql\";\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition } from \"./getFromAST.js\";\nimport { isField } from \"./storeUtils.js\";\nimport { createFragmentMap } from \"./fragments.js\";\nimport { isArray, isNonEmptyArray } from \"../common/arrays.js\";\nvar TYPENAME_FIELD = {\n kind: Kind.FIELD,\n name: {\n kind: Kind.NAME,\n value: \"__typename\"\n }\n};\nfunction isEmpty(op, fragmentMap) {\n return !op || op.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FRAGMENT_SPREAD && isEmpty(fragmentMap[selection.name.value], fragmentMap);\n });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc))) ? null : doc;\n}\nfunction getDirectiveMatcher(configs) {\n var names = new Map();\n var tests = new Map();\n configs.forEach(function (directive) {\n if (directive) {\n if (directive.name) {\n names.set(directive.name, directive);\n } else if (directive.test) {\n tests.set(directive.test, directive);\n }\n }\n });\n return function (directive) {\n var config = names.get(directive.name.value);\n if (!config && tests.size) {\n tests.forEach(function (testConfig, test) {\n if (test(directive)) {\n config = testConfig;\n }\n });\n }\n return config;\n };\n}\nfunction makeInUseGetterFunction(defaultKey) {\n var map = new Map();\n return function inUseGetterFunction(key) {\n if (key === void 0) {\n key = defaultKey;\n }\n var inUse = map.get(key);\n if (!inUse) {\n map.set(key, inUse = {\n // Variable and fragment spread names used directly within this\n // operation or fragment definition, as identified by key. These sets\n // will be populated during the first traversal of the document in\n // removeDirectivesFromDocument below.\n variables: new Set(),\n fragmentSpreads: new Set()\n });\n }\n return inUse;\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n checkDocument(doc);\n // Passing empty strings to makeInUseGetterFunction means we handle anonymous\n // operations as if their names were \"\". Anonymous fragment definitions are\n // not supposed to be possible, but the same default naming strategy seems\n // appropriate for that case as well.\n var getInUseByOperationName = makeInUseGetterFunction(\"\");\n var getInUseByFragmentName = makeInUseGetterFunction(\"\");\n var getInUse = function (ancestors) {\n for (var p = 0, ancestor = void 0; p < ancestors.length && (ancestor = ancestors[p]); ++p) {\n if (isArray(ancestor)) continue;\n if (ancestor.kind === Kind.OPERATION_DEFINITION) {\n // If an operation is anonymous, we use the empty string as its key.\n return getInUseByOperationName(ancestor.name && ancestor.name.value);\n }\n if (ancestor.kind === Kind.FRAGMENT_DEFINITION) {\n return getInUseByFragmentName(ancestor.name.value);\n }\n }\n globalThis.__DEV__ !== false && invariant.error(83);\n return null;\n };\n var operationCount = 0;\n for (var i = doc.definitions.length - 1; i >= 0; --i) {\n if (doc.definitions[i].kind === Kind.OPERATION_DEFINITION) {\n ++operationCount;\n }\n }\n var directiveMatcher = getDirectiveMatcher(directives);\n var shouldRemoveField = function (nodeDirectives) {\n return isNonEmptyArray(nodeDirectives) && nodeDirectives.map(directiveMatcher).some(function (config) {\n return config && config.remove;\n });\n };\n var originalFragmentDefsByPath = new Map();\n // Any time the first traversal of the document below makes a change like\n // removing a fragment (by returning null), this variable should be set to\n // true. Once it becomes true, it should never be set to false again. If this\n // variable remains false throughout the traversal, then we can return the\n // original doc immediately without any modifications.\n var firstVisitMadeChanges = false;\n var fieldOrInlineFragmentVisitor = {\n enter: function (node) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n }\n };\n var docWithoutDirectiveSubtrees = visit(doc, {\n // These two AST node types share the same implementation, defined above.\n Field: fieldOrInlineFragmentVisitor,\n InlineFragment: fieldOrInlineFragmentVisitor,\n VariableDefinition: {\n enter: function () {\n // VariableDefinition nodes do not count as variables in use, though\n // they do contain Variable nodes that might be visited below. To avoid\n // counting variable declarations as usages, we skip visiting the\n // contents of this VariableDefinition node by returning false.\n return false;\n }\n },\n Variable: {\n enter: function (node, _key, _parent, _path, ancestors) {\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.variables.add(node.name.value);\n }\n }\n },\n FragmentSpread: {\n enter: function (node, _key, _parent, _path, ancestors) {\n if (shouldRemoveField(node.directives)) {\n firstVisitMadeChanges = true;\n return null;\n }\n var inUse = getInUse(ancestors);\n if (inUse) {\n inUse.fragmentSpreads.add(node.name.value);\n }\n // We might like to remove this FragmentSpread by returning null here if\n // the corresponding FragmentDefinition node is also going to be removed\n // by the logic below, but we can't control the relative order of those\n // events, so we have to postpone the removal of dangling FragmentSpread\n // nodes until after the current visit of the document has finished.\n }\n },\n FragmentDefinition: {\n enter: function (node, _key, _parent, path) {\n originalFragmentDefsByPath.set(JSON.stringify(path), node);\n },\n leave: function (node, _key, _parent, path) {\n var originalNode = originalFragmentDefsByPath.get(JSON.stringify(path));\n if (node === originalNode) {\n // If the FragmentNode received by this leave function is identical to\n // the one received by the corresponding enter function (above), then\n // the visitor must not have made any changes within this\n // FragmentDefinition node. This fragment definition may still be\n // removed if there are no ...spread references to it, but it won't be\n // removed just because it has only a __typename field.\n return node;\n }\n if (\n // This logic applies only if the document contains one or more\n // operations, since removing all fragments from a document containing\n // only fragments makes the document useless.\n operationCount > 0 && node.selectionSet.selections.every(function (selection) {\n return selection.kind === Kind.FIELD && selection.name.value === \"__typename\";\n })) {\n // This is a somewhat opinionated choice: if a FragmentDefinition ends\n // up having no fields other than __typename, we remove the whole\n // fragment definition, and later prune ...spread references to it.\n getInUseByFragmentName(node.name.value).removed = true;\n firstVisitMadeChanges = true;\n return null;\n }\n }\n },\n Directive: {\n leave: function (node) {\n // If a matching directive is found, remove the directive itself. Note\n // that this does not remove the target (field, argument, etc) of the\n // directive, but only the directive itself.\n if (directiveMatcher(node)) {\n firstVisitMadeChanges = true;\n return null;\n }\n }\n }\n });\n if (!firstVisitMadeChanges) {\n // If our first pass did not change anything about the document, then there\n // is no cleanup we need to do, and we can return the original doc.\n return doc;\n }\n // Utility for making sure inUse.transitiveVars is recursively populated.\n // Because this logic assumes inUse.fragmentSpreads has been completely\n // populated and inUse.removed has been set if appropriate,\n // populateTransitiveVars must be called after that information has been\n // collected by the first traversal of the document.\n var populateTransitiveVars = function (inUse) {\n if (!inUse.transitiveVars) {\n inUse.transitiveVars = new Set(inUse.variables);\n if (!inUse.removed) {\n inUse.fragmentSpreads.forEach(function (childFragmentName) {\n populateTransitiveVars(getInUseByFragmentName(childFragmentName)).transitiveVars.forEach(function (varName) {\n inUse.transitiveVars.add(varName);\n });\n });\n }\n }\n return inUse;\n };\n // Since we've been keeping track of fragment spreads used by particular\n // operations and fragment definitions, we now need to compute the set of all\n // spreads used (transitively) by any operations in the document.\n var allFragmentNamesUsed = new Set();\n docWithoutDirectiveSubtrees.definitions.forEach(function (def) {\n if (def.kind === Kind.OPERATION_DEFINITION) {\n populateTransitiveVars(getInUseByOperationName(def.name && def.name.value)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n } else if (def.kind === Kind.FRAGMENT_DEFINITION &&\n // If there are no operations in the document, then all fragment\n // definitions count as usages of their own fragment names. This heuristic\n // prevents accidentally removing all fragment definitions from the\n // document just because it contains no operations that use the fragments.\n operationCount === 0 && !getInUseByFragmentName(def.name.value).removed) {\n allFragmentNamesUsed.add(def.name.value);\n }\n });\n // Now that we have added all fragment spreads used by operations to the\n // allFragmentNamesUsed set, we can complete the set by transitively adding\n // all fragment spreads used by those fragments, and so on.\n allFragmentNamesUsed.forEach(function (fragmentName) {\n // Once all the childFragmentName strings added here have been seen already,\n // the top-level allFragmentNamesUsed.forEach loop will terminate.\n populateTransitiveVars(getInUseByFragmentName(fragmentName)).fragmentSpreads.forEach(function (childFragmentName) {\n allFragmentNamesUsed.add(childFragmentName);\n });\n });\n var fragmentWillBeRemoved = function (fragmentName) {\n return !!(\n // A fragment definition will be removed if there are no spreads that refer\n // to it, or the fragment was explicitly removed because it had no fields\n // other than __typename.\n !allFragmentNamesUsed.has(fragmentName) || getInUseByFragmentName(fragmentName).removed);\n };\n var enterVisitor = {\n enter: function (node) {\n if (fragmentWillBeRemoved(node.name.value)) {\n return null;\n }\n }\n };\n return nullIfDocIsEmpty(visit(docWithoutDirectiveSubtrees, {\n // If the fragment is going to be removed, then leaving any dangling\n // FragmentSpread nodes with the same name would be a mistake.\n FragmentSpread: enterVisitor,\n // This is where the fragment definition is actually removed.\n FragmentDefinition: enterVisitor,\n OperationDefinition: {\n leave: function (node) {\n // Upon leaving each operation in the depth-first AST traversal, prune\n // any variables that are declared by the operation but unused within.\n if (node.variableDefinitions) {\n var usedVariableNames_1 = populateTransitiveVars(\n // If an operation is anonymous, we use the empty string as its key.\n getInUseByOperationName(node.name && node.name.value)).transitiveVars;\n // According to the GraphQL spec, all variables declared by an\n // operation must either be used by that operation or used by some\n // fragment included transitively into that operation:\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n //\n // To stay on the right side of this validation rule, if/when we\n // remove the last $var references from an operation or its fragments,\n // we must also remove the corresponding $var declaration from the\n // enclosing operation. This pruning applies only to operations and\n // not fragment definitions, at the moment. Fragments may be able to\n // declare variables eventually, but today they can only consume them.\n if (usedVariableNames_1.size < node.variableDefinitions.length) {\n return __assign(__assign({}, node), {\n variableDefinitions: node.variableDefinitions.filter(function (varDef) {\n return usedVariableNames_1.has(varDef.variable.name.value);\n })\n });\n }\n }\n }\n }\n }));\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n // Don't add __typename to OperationDefinitions.\n if (parent && parent.kind === Kind.OPERATION_DEFINITION) {\n return;\n }\n // No changes if no selections.\n var selections = node.selections;\n if (!selections) {\n return;\n }\n // If selections already have a __typename, or are part of an\n // introspection query, do nothing.\n var skip = selections.some(function (selection) {\n return isField(selection) && (selection.name.value === \"__typename\" || selection.name.value.lastIndexOf(\"__\", 0) === 0);\n });\n if (skip) {\n return;\n }\n // If this SelectionSet is @export-ed as an input variable, it should\n // not have a __typename field (see issue #4691).\n var field = parent;\n if (isField(field) && field.directives && field.directives.some(function (d) {\n return d.name.value === \"export\";\n })) {\n return;\n }\n // Create and return a new SelectionSet with a __typename Field.\n return __assign(__assign({}, node), {\n selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false)\n });\n }\n }\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n }\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === \"connection\";\n if (willRemove) {\n if (!directive.arguments || !directive.arguments.some(function (arg) {\n return arg.name.value === \"key\";\n })) {\n globalThis.__DEV__ !== false && invariant.warn(84);\n }\n }\n return willRemove;\n }\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) {\n nestedCheck = true;\n }\n return !!selectionSet && selectionSet.selections && selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n });\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) {\n nestedCheck = true;\n }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return selection.directives.some(getDirectiveMatcher(directives)) || nestedCheck && hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck);\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value && argument.value.kind === Kind.VARIABLE && argument.value.name && (aConfig.name === argument.value.name.value || aConfig.test && aConfig.test(argument));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), {\n // Remove matching top level variables definitions.\n variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) {\n return arg.name === varDef.variable.name.value;\n });\n }) : []\n });\n }\n },\n Field: {\n enter: function (node) {\n // If `remove` is set to true for an argument, and an argument match\n // is found for a field, remove the field as well.\n var shouldRemoveField = config.some(function (argConfig) {\n return argConfig.remove;\n });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n }\n },\n Argument: {\n enter: function (node) {\n // Remove all matching arguments.\n if (argMatcher(node)) {\n return null;\n }\n }\n }\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) {\n return def.name === node.name.value;\n })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: {\n enter: enter\n },\n FragmentDefinition: {\n enter: enter\n }\n }));\n}\n// If the incoming document is a query, return it as is. Otherwise, build a\n// new document containing a query operation based on the selection set\n// of the previous main operation.\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === \"query\") {\n // Already a query, so return the existing document.\n return document;\n }\n // Build a new query using the selection set of the main operation.\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), {\n operation: \"query\"\n });\n }\n }\n });\n return modifiedDoc;\n}\n// Remove fields / selection sets that include an @client directive.\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([{\n test: function (directive) {\n return directive.name.value === \"client\";\n },\n remove: true\n }], document);\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, parseAndCheckHttpResponse } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError, filterOperationVariables } from \"../utils/index.js\";\nimport { maybe, getMainDefinition, removeClientSetsFromDocument } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () {\n return fetch;\n});\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) {\n linkOptions = {};\n }\n var _a = linkOptions.uri,\n uri = _a === void 0 ? \"/graphql\" : _a,\n // use default global fetch if nothing passed in\n preferredFetch = linkOptions.fetch,\n _b = linkOptions.print,\n print = _b === void 0 ? defaultPrinter : _b,\n includeExtensions = linkOptions.includeExtensions,\n preserveHeaderCase = linkOptions.preserveHeaderCase,\n useGETForQueries = linkOptions.useGETForQueries,\n _c = linkOptions.includeUnusedVariables,\n includeUnusedVariables = _c === void 0 ? false : _c,\n requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (globalThis.__DEV__ !== false) {\n // Make sure at least one of preferredFetch, window.fetch, or backupFetch is\n // defined, so requests won't fail at runtime.\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: {\n includeExtensions: includeExtensions,\n preserveHeaderCase: preserveHeaderCase\n },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n // `apollographql-client-*` headers are automatically set if a\n // `clientAwareness` object is found in the context. These headers are\n // set first, followed by the rest of the headers pulled from\n // `context.headers`. If desired, `apollographql-client-*` headers set by\n // the `clientAwareness` object can be overridden by\n // `apollographql-client-*` headers set in `context.headers`.\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness,\n name_1 = _a.name,\n version = _a.version;\n if (name_1) {\n clientAwarenessHeaders[\"apollographql-client-name\"] = name_1;\n }\n if (version) {\n clientAwarenessHeaders[\"apollographql-client-version\"] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders\n };\n if (hasDirectives([\"client\"], operation.query)) {\n var transformedQuery = removeClientSetsFromDocument(operation.query);\n if (!transformedQuery) {\n return fromError(new Error(\"HttpLink: Trying to send a client-only query to the server. To send to the server, ensure a non-client field is added to the query or set the `transformOptions.removeClientFields` option to `true`.\"));\n }\n operation.query = transformedQuery;\n }\n //uses fallback, link, and then context to build options\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig),\n options = _b.options,\n body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n body.variables = filterOperationVariables(body.variables, operation.query);\n }\n var controller;\n if (!options.signal && typeof AbortController !== \"undefined\") {\n controller = new AbortController();\n options.signal = controller.signal;\n }\n // If requested, set method to GET if there are no mutations.\n var definitionIsMutation = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"mutation\";\n };\n var definitionIsSubscription = function (d) {\n return d.kind === \"OperationDefinition\" && d.operation === \"subscription\";\n };\n var isSubscription = definitionIsSubscription(getMainDefinition(operation.query));\n // does not match custom directives beginning with @defer\n var hasDefer = hasDirectives([\"defer\"], operation.query);\n if (useGETForQueries && !operation.query.definitions.some(definitionIsMutation)) {\n options.method = \"GET\";\n }\n if (hasDefer || isSubscription) {\n options.headers = options.headers || {};\n var acceptHeader = \"multipart/mixed;\";\n // Omit defer-specific headers if the user attempts to defer a selection\n // set on a subscription and log a warning.\n if (isSubscription && hasDefer) {\n globalThis.__DEV__ !== false && invariant.warn(38);\n }\n if (isSubscription) {\n acceptHeader += \"boundary=graphql;subscriptionSpec=1.0,application/json\";\n } else if (hasDefer) {\n acceptHeader += \"deferSpec=20220824,application/json\";\n }\n options.headers.accept = acceptHeader;\n }\n if (options.method === \"GET\") {\n var _c = rewriteURIForGET(chosenURI, body),\n newURI = _c.newURI,\n parseError = _c.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n } else {\n try {\n options.body = serializeFetchParameter(body, \"Payload\");\n } catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n // Prefer linkOptions.fetch (preferredFetch) if provided, and otherwise\n // fall back to the *current* global window.fetch function (see issue\n // #7832), or (if all else fails) the backupFetch function we saved when\n // this module was first evaluated. This last option protects against the\n // removal of window.fetch, which is unlikely but not impossible.\n var currentFetch = preferredFetch || maybe(function () {\n return fetch;\n }) || backupFetch;\n var observerNext = observer.next.bind(observer);\n currentFetch(chosenURI, options).then(function (response) {\n var _a;\n operation.setContext({\n response: response\n });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get(\"content-type\");\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observerNext);\n } else {\n return parseAndCheckHttpResponse(operation)(response).then(observerNext);\n }\n }).then(function () {\n controller = undefined;\n observer.complete();\n }).catch(function (err) {\n controller = undefined;\n handleError(err, observer);\n });\n return function () {\n // XXX support canceling this request\n // https://developers.google.com/web/updates/2017/09/abortable-fetch\n if (controller) controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n } else if (typeof fallbackURI === \"function\") {\n return fallbackURI(operation);\n } else {\n return fallbackURI || \"/graphql\";\n }\n};\n//# sourceMappingURL=selectURI.js.map","import { __assign } from \"tslib\";\nimport { visit } from \"graphql\";\nexport function filterOperationVariables(variables, query) {\n var result = __assign({}, variables);\n var unusedNames = new Set(Object.keys(variables));\n visit(query, {\n Variable: function (node, _key, parent) {\n // A variable type definition at the top level of a query is not\n // enough to silence server-side errors about the variable being\n // unused, so variable definitions do not count as usage.\n // https://spec.graphql.org/draft/#sec-All-Variables-Used\n if (parent && parent.kind !== \"VariableDefinition\") {\n unusedNames.delete(node.name.value);\n }\n }\n });\n unusedNames.forEach(function (name) {\n delete result[name];\n });\n return result;\n}\n//# sourceMappingURL=filterOperationVariables.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\n// For GET operations, returns the given URI rewritten with parameters, or a\n// parse error.\nexport function rewriteURIForGET(chosenURI, body) {\n // Implement the standard HTTP GET serialization, plus 'extensions'. Note\n // the extra level of JSON serialization!\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if (\"query\" in body) {\n addQueryParam(\"query\", body.query);\n }\n if (body.operationName) {\n addQueryParam(\"operationName\", body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, \"Variables map\");\n } catch (parseError) {\n return {\n parseError: parseError\n };\n }\n addQueryParam(\"variables\", serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, \"Extensions map\");\n } catch (parseError) {\n return {\n parseError: parseError\n };\n }\n addQueryParam(\"extensions\", serializedExtensions);\n }\n // Reconstruct the URI with added query params.\n // XXX This assumes that the URI is well-formed and that it doesn't\n // already contain any of these query params. We could instead use the\n // URL API and take a polyfill (whatwg-url@6) for older browsers that\n // don't support URLSearchParams. Note that some browsers (and\n // versions of whatwg-url) support URL but not URLSearchParams!\n var fragment = \"\",\n preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf(\"#\");\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var newURI = preFragment + queryParamsPrefix + queryParams.join(\"&\") + fragment;\n return {\n newURI: newURI\n };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = /** @class */function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) {\n options = {};\n }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink);\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst {\n forEach,\n slice\n} = Array.prototype;\nconst {\n hasOwnProperty\n} = Object.prototype;\nexport class Trie {\n constructor() {\n let weakness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let makeData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultMakeData;\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup() {\n for (var _len = arguments.length, array = new Array(_len), _key = 0; _key < _len; _key++) {\n array[_key] = arguments[_key];\n }\n return this.lookupArray(array);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\") ? node.data : node.data = this.makeData(slice.call(array));\n }\n peek() {\n for (var _len2 = arguments.length, array = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n array[_key2] = arguments[_key2];\n }\n return this.peekArray(array);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = this.weakness && isObjRef(array[i]) ? node.weak : node.strong;\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n getChildTrie(key) {\n const map = this.weakness && isObjRef(key) ? this.weak || (this.weak = new WeakMap()) : this.strong || (this.strong = new Map());\n let child = map.get(key);\n if (!child) map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null) break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\"slot\", idCounter++, Date.now(), Math.random().toString(36).slice(2)].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE) break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback,\n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value\n };\n const parent = currentContext;\n currentContext = {\n parent,\n slots\n };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n } finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n } finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback,\n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n } finally {\n currentContext = saved;\n }\n } else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n } catch (ignored) {}\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host =\n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n// Fall back to global, which works in Node.js and may be converted by some\n// bundlers to the appropriate identifier (window, self, ...) depending on the\n// bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\nmaybe(() => global) ||\n// Otherwise, use a dummy host that's local to this module. We used to fall\n// back to using the Array constructor as a namespace, but that was flagged in\n// https://github.com/benjamn/wryware/issues/347, and can be avoided.\nObject.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n// Earlier versions of this package stored the globalKey property on the Array\n// constructor, so we check there as well, to prevent Slot class duplication.\nArray[globalKey] || function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n } finally {\n return Slot;\n }\n}(makeSlotClass());\n//# sourceMappingURL=slot.js.map","import { Slot } from \"./slot.js\";\nexport { Slot };\nexport const {\n bind,\n noContext\n} = Slot;\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback, delay) {\n return setTimeout(bind(callback), delay);\n}\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(genFn) {\n return function () {\n const gen = genFn.apply(this, arguments);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw);\n return new Promise((resolve, reject) => {\n function invoke(method, argument) {\n try {\n var result = method.call(gen, argument);\n } catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n } else {\n next(result.value);\n }\n }\n const invokeNext = value => invoke(boundNext, value);\n const invokeThrow = error => invoke(boundThrow, error);\n invokeNext();\n });\n };\n}\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers = [];\nexport function wrapYieldingFiberMethods(Fiber) {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj, method) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments, this);\n };\n };\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n//# sourceMappingURL=index.js.map","import { Slot } from \"@wry/context\";\nexport const parentEntrySlot = new Slot();\nexport function nonReactive(fn) {\n return parentEntrySlot.withValue(void 0, fn);\n}\nexport { Slot };\nexport { bind as bindContext, noContext, setTimeout, asyncFromGen } from \"@wry/context\";\n//# sourceMappingURL=context.js.map","export const {\n hasOwnProperty\n} = Object.prototype;\nexport const arrayFromSet = Array.from || function (set) {\n const array = [];\n set.forEach(item => array.push(item));\n return array;\n};\nexport function maybeUnsubscribe(entryOrDep) {\n const {\n unsubscribe\n } = entryOrDep;\n if (typeof unsubscribe === \"function\") {\n entryOrDep.unsubscribe = void 0;\n unsubscribe();\n }\n}\n//# sourceMappingURL=helpers.js.map","import { parentEntrySlot } from \"./context.js\";\nimport { maybeUnsubscribe, arrayFromSet } from \"./helpers.js\";\nconst emptySetPool = [];\nconst POOL_TARGET_SIZE = 100;\n// Since this package might be used browsers, we should avoid using the\n// Node built-in assert module.\nfunction assert(condition, optionalMessage) {\n if (!condition) {\n throw new Error(optionalMessage || \"assertion failure\");\n }\n}\nfunction valueIs(a, b) {\n const len = a.length;\n return (\n // Unknown values are not equal to each other.\n len > 0 &&\n // Both values must be ordinary (or both exceptional) to be equal.\n len === b.length &&\n // The underlying value or exception must be the same.\n a[len - 1] === b[len - 1]\n );\n}\nfunction valueGet(value) {\n switch (value.length) {\n case 0:\n throw new Error(\"unknown value\");\n case 1:\n return value[0];\n case 2:\n throw value[1];\n }\n}\nfunction valueCopy(value) {\n return value.slice(0);\n}\nexport class Entry {\n constructor(fn) {\n this.fn = fn;\n this.parents = new Set();\n this.childValues = new Map();\n // When this Entry has children that are dirty, this property becomes\n // a Set containing other Entry objects, borrowed from emptySetPool.\n // When the set becomes empty, it gets recycled back to emptySetPool.\n this.dirtyChildren = null;\n this.dirty = true;\n this.recomputing = false;\n this.value = [];\n this.deps = null;\n ++Entry.count;\n }\n peek() {\n if (this.value.length === 1 && !mightBeDirty(this)) {\n rememberParent(this);\n return this.value[0];\n }\n }\n // This is the most important method of the Entry API, because it\n // determines whether the cached this.value can be returned immediately,\n // or must be recomputed. The overall performance of the caching system\n // depends on the truth of the following observations: (1) this.dirty is\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\n // (3) valueGet(this.value) is usually returned without recomputation.\n recompute(args) {\n assert(!this.recomputing, \"already recomputing\");\n rememberParent(this);\n return mightBeDirty(this) ? reallyRecompute(this, args) : valueGet(this.value);\n }\n setDirty() {\n if (this.dirty) return;\n this.dirty = true;\n reportDirty(this);\n // We can go ahead and unsubscribe here, since any further dirty\n // notifications we receive will be redundant, and unsubscribing may\n // free up some resources, e.g. file watchers.\n maybeUnsubscribe(this);\n }\n dispose() {\n this.setDirty();\n // Sever any dependency relationships with our own children, so those\n // children don't retain this parent Entry in their child.parents sets,\n // thereby preventing it from being fully garbage collected.\n forgetChildren(this);\n // Because this entry has been kicked out of the cache (in index.js),\n // we've lost the ability to find out if/when this entry becomes dirty,\n // whether that happens through a subscription, because of a direct call\n // to entry.setDirty(), or because one of its children becomes dirty.\n // Because of this loss of future information, we have to assume the\n // worst (that this entry might have become dirty very soon), so we must\n // immediately mark this entry's parents as dirty. Normally we could\n // just call entry.setDirty() rather than calling parent.setDirty() for\n // each parent, but that would leave this entry in parent.childValues\n // and parent.dirtyChildren, which would prevent the child from being\n // truly forgotten.\n eachParent(this, (parent, child) => {\n parent.setDirty();\n forgetChild(parent, this);\n });\n }\n forget() {\n // The code that creates Entry objects in index.ts will replace this method\n // with one that actually removes the Entry from the cache, which will also\n // trigger the entry.dispose method.\n this.dispose();\n }\n dependOn(dep) {\n dep.add(this);\n if (!this.deps) {\n this.deps = emptySetPool.pop() || new Set();\n }\n this.deps.add(dep);\n }\n forgetDeps() {\n if (this.deps) {\n arrayFromSet(this.deps).forEach(dep => dep.delete(this));\n this.deps.clear();\n emptySetPool.push(this.deps);\n this.deps = null;\n }\n }\n}\nEntry.count = 0;\nfunction rememberParent(child) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n child.parents.add(parent);\n if (!parent.childValues.has(child)) {\n parent.childValues.set(child, []);\n }\n if (mightBeDirty(child)) {\n reportDirtyChild(parent, child);\n } else {\n reportCleanChild(parent, child);\n }\n return parent;\n }\n}\nfunction reallyRecompute(entry, args) {\n forgetChildren(entry);\n // Set entry as the parent entry while calling recomputeNewValue(entry).\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\n if (maybeSubscribe(entry, args)) {\n // If we successfully recomputed entry.value and did not fail to\n // (re)subscribe, then this Entry is no longer explicitly dirty.\n setClean(entry);\n }\n return valueGet(entry.value);\n}\nfunction recomputeNewValue(entry, args) {\n entry.recomputing = true;\n const {\n normalizeResult\n } = entry;\n let oldValueCopy;\n if (normalizeResult && entry.value.length === 1) {\n oldValueCopy = valueCopy(entry.value);\n }\n // Make entry.value an empty array, representing an unknown value.\n entry.value.length = 0;\n try {\n // If entry.fn succeeds, entry.value will become a normal Value.\n entry.value[0] = entry.fn.apply(null, args);\n // If we have a viable oldValueCopy to compare with the (successfully\n // recomputed) new entry.value, and they are not already === identical, give\n // normalizeResult a chance to pick/choose/reuse parts of oldValueCopy[0]\n // and/or entry.value[0] to determine the final cached entry.value.\n if (normalizeResult && oldValueCopy && !valueIs(oldValueCopy, entry.value)) {\n try {\n entry.value[0] = normalizeResult(entry.value[0], oldValueCopy[0]);\n } catch (_a) {\n // If normalizeResult throws, just use the newer value, rather than\n // saving the exception as entry.value[1].\n }\n }\n } catch (e) {\n // If entry.fn throws, entry.value will hold that exception.\n entry.value[1] = e;\n }\n // Either way, this line is always reached.\n entry.recomputing = false;\n}\nfunction mightBeDirty(entry) {\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\n}\nfunction setClean(entry) {\n entry.dirty = false;\n if (mightBeDirty(entry)) {\n // This Entry may still have dirty children, in which case we can't\n // let our parents know we're clean just yet.\n return;\n }\n reportClean(entry);\n}\nfunction reportDirty(child) {\n eachParent(child, reportDirtyChild);\n}\nfunction reportClean(child) {\n eachParent(child, reportCleanChild);\n}\nfunction eachParent(child, callback) {\n const parentCount = child.parents.size;\n if (parentCount) {\n const parents = arrayFromSet(child.parents);\n for (let i = 0; i < parentCount; ++i) {\n callback(parents[i], child);\n }\n }\n}\n// Let a parent Entry know that one of its children may be dirty.\nfunction reportDirtyChild(parent, child) {\n // Must have called rememberParent(child) before calling\n // reportDirtyChild(parent, child).\n assert(parent.childValues.has(child));\n assert(mightBeDirty(child));\n const parentWasClean = !mightBeDirty(parent);\n if (!parent.dirtyChildren) {\n parent.dirtyChildren = emptySetPool.pop() || new Set();\n } else if (parent.dirtyChildren.has(child)) {\n // If we already know this child is dirty, then we must have already\n // informed our own parents that we are dirty, so we can terminate\n // the recursion early.\n return;\n }\n parent.dirtyChildren.add(child);\n // If parent was clean before, it just became (possibly) dirty (according to\n // mightBeDirty), since we just added child to parent.dirtyChildren.\n if (parentWasClean) {\n reportDirty(parent);\n }\n}\n// Let a parent Entry know that one of its children is no longer dirty.\nfunction reportCleanChild(parent, child) {\n // Must have called rememberChild(child) before calling\n // reportCleanChild(parent, child).\n assert(parent.childValues.has(child));\n assert(!mightBeDirty(child));\n const childValue = parent.childValues.get(child);\n if (childValue.length === 0) {\n parent.childValues.set(child, valueCopy(child.value));\n } else if (!valueIs(childValue, child.value)) {\n parent.setDirty();\n }\n removeDirtyChild(parent, child);\n if (mightBeDirty(parent)) {\n return;\n }\n reportClean(parent);\n}\nfunction removeDirtyChild(parent, child) {\n const dc = parent.dirtyChildren;\n if (dc) {\n dc.delete(child);\n if (dc.size === 0) {\n if (emptySetPool.length < POOL_TARGET_SIZE) {\n emptySetPool.push(dc);\n }\n parent.dirtyChildren = null;\n }\n }\n}\n// Removes all children from this entry and returns an array of the\n// removed children.\nfunction forgetChildren(parent) {\n if (parent.childValues.size > 0) {\n parent.childValues.forEach((_value, child) => {\n forgetChild(parent, child);\n });\n }\n // Remove this parent Entry from any sets to which it was added by the\n // addToSet method.\n parent.forgetDeps();\n // After we forget all our children, this.dirtyChildren must be empty\n // and therefore must have been reset to null.\n assert(parent.dirtyChildren === null);\n}\nfunction forgetChild(parent, child) {\n child.parents.delete(parent);\n parent.childValues.delete(child);\n removeDirtyChild(parent, child);\n}\nfunction maybeSubscribe(entry, args) {\n if (typeof entry.subscribe === \"function\") {\n try {\n maybeUnsubscribe(entry); // Prevent double subscriptions.\n entry.unsubscribe = entry.subscribe.apply(null, args);\n } catch (e) {\n // If this Entry has a subscribe function and it threw an exception\n // (or an unsubscribe function it previously returned now throws),\n // return false to indicate that we were not able to subscribe (or\n // unsubscribe), and this Entry should remain dirty.\n entry.setDirty();\n return false;\n }\n }\n // Returning true indicates either that there was no entry.subscribe\n // function or that it succeeded.\n return true;\n}\n//# sourceMappingURL=entry.js.map","import { parentEntrySlot } from \"./context.js\";\nimport { hasOwnProperty, maybeUnsubscribe, arrayFromSet } from \"./helpers.js\";\nconst EntryMethods = {\n setDirty: true,\n dispose: true,\n forget: true // Fully remove parent Entry from LRU cache and computation graph\n};\nexport function dep(options) {\n const depsByKey = new Map();\n const subscribe = options && options.subscribe;\n function depend(key) {\n const parent = parentEntrySlot.getValue();\n if (parent) {\n let dep = depsByKey.get(key);\n if (!dep) {\n depsByKey.set(key, dep = new Set());\n }\n parent.dependOn(dep);\n if (typeof subscribe === \"function\") {\n maybeUnsubscribe(dep);\n dep.unsubscribe = subscribe(key);\n }\n }\n }\n depend.dirty = function dirty(key, entryMethodName) {\n const dep = depsByKey.get(key);\n if (dep) {\n const m = entryMethodName && hasOwnProperty.call(EntryMethods, entryMethodName) ? entryMethodName : \"setDirty\";\n // We have to use arrayFromSet(dep).forEach instead of dep.forEach,\n // because modifying a Set while iterating over it can cause elements in\n // the Set to be removed from the Set before they've been iterated over.\n arrayFromSet(dep).forEach(entry => entry[m]());\n depsByKey.delete(key);\n maybeUnsubscribe(dep);\n }\n };\n return depend;\n}\n//# sourceMappingURL=dep.js.map","import { Trie } from \"@wry/trie\";\nimport { StrongCache } from \"@wry/caches\";\nimport { Entry } from \"./entry.js\";\nimport { parentEntrySlot } from \"./context.js\";\n// These helper functions are important for making optimism work with\n// asynchronous code. In order to register parent-child dependencies,\n// optimism needs to know about any currently active parent computations.\n// In ordinary synchronous code, the parent context is implicit in the\n// execution stack, but asynchronous code requires some extra guidance in\n// order to propagate context from one async task segment to the next.\nexport { bindContext, noContext, nonReactive, setTimeout, asyncFromGen, Slot } from \"./context.js\";\n// A lighter-weight dependency, similar to OptimisticWrapperFunction, except\n// with only one argument, no makeCacheKey, no wrapped function to recompute,\n// and no result value. Useful for representing dependency leaves in the graph\n// of computation. Subscriptions are supported.\nexport { dep } from \"./dep.js\";\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\n// a unique object for any shallow-identical list of arguments. If you need\n// to implement a custom makeCacheKey function, you may find it helpful to\n// delegate the final work to defaultMakeCacheKey, which is why we export it\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\n// does not support WeakMap, or you have the ability to return a string key.\n// In those cases, just write your own custom makeCacheKey functions.\nlet defaultKeyTrie;\nexport function defaultMakeCacheKey() {\n const trie = defaultKeyTrie || (defaultKeyTrie = new Trie(typeof WeakMap === \"function\"));\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return trie.lookupArray(args);\n}\n// If you're paranoid about memory leaks, or you want to avoid using WeakMap\n// under the hood, but you still need the behavior of defaultMakeCacheKey,\n// import this constructor to create your own tries.\nexport { Trie as KeyTrie };\n;\nconst caches = new Set();\nexport function wrap(originalFunction) {\n let {\n max = Math.pow(2, 16),\n keyArgs,\n makeCacheKey = defaultMakeCacheKey,\n normalizeResult,\n subscribe,\n cache: cacheOption = StrongCache\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object.create(null);\n const cache = typeof cacheOption === \"function\" ? new cacheOption(max, entry => entry.dispose()) : cacheOption;\n const optimistic = function () {\n const key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\n if (key === void 0) {\n return originalFunction.apply(null, arguments);\n }\n let entry = cache.get(key);\n if (!entry) {\n cache.set(key, entry = new Entry(originalFunction));\n entry.normalizeResult = normalizeResult;\n entry.subscribe = subscribe;\n // Give the Entry the ability to trigger cache.delete(key), even though\n // the Entry itself does not know about key or cache.\n entry.forget = () => cache.delete(key);\n }\n const value = entry.recompute(Array.prototype.slice.call(arguments));\n // Move this entry to the front of the least-recently used queue,\n // since we just finished computing its value.\n cache.set(key, entry);\n caches.add(cache);\n // Clean up any excess entries in the cache, but only if there is no\n // active parent entry, meaning we're not in the middle of a larger\n // computation that might be flummoxed by the cleaning.\n if (!parentEntrySlot.hasValue()) {\n caches.forEach(cache => cache.clean());\n caches.clear();\n }\n return value;\n };\n Object.defineProperty(optimistic, \"size\", {\n get: () => cache.size,\n configurable: false,\n enumerable: false\n });\n Object.freeze(optimistic.options = {\n max,\n keyArgs,\n makeCacheKey,\n normalizeResult,\n subscribe,\n cache\n });\n function dirtyKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n entry.setDirty();\n }\n }\n optimistic.dirtyKey = dirtyKey;\n optimistic.dirty = function dirty() {\n dirtyKey(makeCacheKey.apply(null, arguments));\n };\n function peekKey(key) {\n const entry = key && cache.get(key);\n if (entry) {\n return entry.peek();\n }\n }\n optimistic.peekKey = peekKey;\n optimistic.peek = function peek() {\n return peekKey(makeCacheKey.apply(null, arguments));\n };\n function forgetKey(key) {\n return key ? cache.delete(key) : false;\n }\n optimistic.forgetKey = forgetKey;\n optimistic.forget = function forget() {\n return forgetKey(makeCacheKey.apply(null, arguments));\n };\n optimistic.makeCacheKey = makeCacheKey;\n optimistic.getKey = keyArgs ? function getKey() {\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\n } : makeCacheKey;\n return Object.freeze(optimistic);\n}\n//# sourceMappingURL=index.js.map","import { __assign, __rest } from \"tslib\";\nimport { wrap } from \"optimism\";\nimport { Observable, cacheSizes, getFragmentQueryDocument, mergeDeepArray } from \"../../utilities/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { getApolloCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nimport { equal } from \"@wry/equality\";\nvar ApolloCache = /** @class */function () {\n function ApolloCache() {\n this.assumeImmutableResults = false;\n // Make sure we compute the same (===) fragment query document every\n // time we receive the same fragment in readFragment.\n this.getFragmentDoc = wrap(getFragmentQueryDocument, {\n max: cacheSizes[\"cache.fragmentQueryDocuments\"] || 1000 /* defaultCacheSizes[\"cache.fragmentQueryDocuments\"] */,\n cache: WeakCache\n });\n }\n // Transactional API\n // The batch method is intended to replace/subsume both performTransaction\n // and recordOptimisticTransaction, but performTransaction came first, so we\n // provide a default batch implementation that's just another way of calling\n // performTransaction. Subclasses of ApolloCache (such as InMemoryCache) can\n // override the batch method to do more interesting things with its options.\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic : options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () {\n return updateResult = options.update(_this);\n }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n // Optional API\n // Called once per input document, allowing the cache to make static changes\n // to the query, such as adding __typename fields.\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n // Called before each ApolloLink request, allowing the cache to make dynamic\n // changes to the query, such as filling in missing fragment definitions.\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n // DataProxy API\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) {\n optimistic = !!options.optimistic;\n }\n return this.read(__assign(__assign({}, options), {\n rootId: options.id || \"ROOT_QUERY\",\n optimistic: optimistic\n }));\n };\n /** {@inheritDoc @apollo/client!ApolloClient#watchFragment:member(1)} */\n ApolloCache.prototype.watchFragment = function (options) {\n var _this = this;\n var fragment = options.fragment,\n fragmentName = options.fragmentName,\n from = options.from,\n _a = options.optimistic,\n optimistic = _a === void 0 ? true : _a;\n var diffOptions = {\n returnPartialData: true,\n id: typeof from === \"string\" ? from : this.identify(from),\n query: this.getFragmentDoc(fragment, fragmentName),\n optimistic: optimistic\n };\n var latestDiff;\n return new Observable(function (observer) {\n return _this.watch(__assign(__assign({}, diffOptions), {\n immediate: true,\n query: _this.getFragmentDoc(fragment, fragmentName),\n callback: function (diff) {\n if (equal(diff, latestDiff)) {\n return;\n }\n var result = {\n data: diff.result,\n complete: !!diff.complete\n };\n if (diff.missing) {\n result.missing = mergeDeepArray(diff.missing.map(function (error) {\n return error.missing;\n }));\n }\n latestDiff = diff;\n observer.next(result);\n }\n }));\n });\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) {\n optimistic = !!options.optimistic;\n }\n return this.read(__assign(__assign({}, options), {\n query: this.getFragmentDoc(options.fragment, options.fragmentName),\n rootId: options.id,\n optimistic: optimistic\n }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id,\n data = _a.data,\n options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || \"ROOT_QUERY\",\n result: data\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id,\n data = _a.data,\n fragment = _a.fragment,\n fragmentName = _a.fragmentName,\n options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null) return value;\n cache.writeQuery(__assign(__assign({}, options), {\n data: data\n }));\n return data;\n }\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null) return value;\n cache.writeFragment(__assign(__assign({}, options), {\n data: data\n }));\n return data;\n }\n });\n };\n return ApolloCache;\n}();\nexport { ApolloCache };\nif (globalThis.__DEV__ !== false) {\n ApolloCache.prototype.getMemoryInternals = getApolloCacheMemoryInternals;\n}\n//# sourceMappingURL=cache.js.map","import { __extends } from \"tslib\";\nvar MissingFieldError = /** @class */function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n // 'Error' breaks prototype chain here\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n } else {\n _this.missing = _this.path;\n }\n // We're not using `Object.setPrototypeOf` here as it isn't fully supported\n // on Android (see issue #3236).\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error);\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\n// object keys weakly, yet can also hold non-object keys, unlike the\n// native `WeakMap`.\n// If no makeData function is supplied, the looked-up data will be an empty,\n// null-prototype Object.\nconst defaultMakeData = () => Object.create(null);\n// Useful for processing arguments objects as well as arrays.\nconst {\n forEach,\n slice\n} = Array.prototype;\nconst {\n hasOwnProperty\n} = Object.prototype;\nexport class Trie {\n constructor() {\n let weakness = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n let makeData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultMakeData;\n this.weakness = weakness;\n this.makeData = makeData;\n }\n lookup() {\n return this.lookupArray(arguments);\n }\n lookupArray(array) {\n let node = this;\n forEach.call(array, key => node = node.getChildTrie(key));\n return hasOwnProperty.call(node, \"data\") ? node.data : node.data = this.makeData(slice.call(array));\n }\n peek() {\n return this.peekArray(arguments);\n }\n peekArray(array) {\n let node = this;\n for (let i = 0, len = array.length; node && i < len; ++i) {\n const map = node.mapFor(array[i], false);\n node = map && map.get(array[i]);\n }\n return node && node.data;\n }\n remove() {\n return this.removeArray(arguments);\n }\n removeArray(array) {\n let data;\n if (array.length) {\n const head = array[0];\n const map = this.mapFor(head, false);\n const child = map && map.get(head);\n if (child) {\n data = child.removeArray(slice.call(array, 1));\n if (!child.data && !child.weak && !(child.strong && child.strong.size)) {\n map.delete(head);\n }\n }\n } else {\n data = this.data;\n delete this.data;\n }\n return data;\n }\n getChildTrie(key) {\n const map = this.mapFor(key, true);\n let child = map.get(key);\n if (!child) map.set(key, child = new Trie(this.weakness, this.makeData));\n return child;\n }\n mapFor(key, create) {\n return this.weakness && isObjRef(key) ? this.weak || (create ? this.weak = new WeakMap() : void 0) : this.strong || (create ? this.strong = new Map() : void 0);\n }\n}\nfunction isObjRef(value) {\n switch (typeof value) {\n case \"object\":\n if (value === null) break;\n // Fall through to return true...\n case \"function\":\n return true;\n }\n return false;\n}\n//# sourceMappingURL=index.js.map","import { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet } from \"../common/canUse.js\";\nimport { checkDocument } from \"./getFromAST.js\";\nimport { invariant } from \"../globals/index.js\";\nimport { WeakCache } from \"@wry/caches\";\nimport { wrap } from \"optimism\";\nimport { cacheSizes } from \"../caching/index.js\";\nfunction identity(document) {\n return document;\n}\nvar DocumentTransform = /** @class */function () {\n function DocumentTransform(transform, options) {\n if (options === void 0) {\n options = Object.create(null);\n }\n this.resultCache = canUseWeakSet ? new WeakSet() : new Set();\n this.transform = transform;\n if (options.getCacheKey) {\n // Override default `getCacheKey` function, which returns [document].\n this.getCacheKey = options.getCacheKey;\n }\n this.cached = options.cache !== false;\n this.resetCache();\n }\n // This default implementation of getCacheKey can be overridden by providing\n // options.getCacheKey to the DocumentTransform constructor. In general, a\n // getCacheKey function may either return an array of keys (often including\n // the document) to be used as a cache key, or undefined to indicate the\n // transform for this document should not be cached.\n DocumentTransform.prototype.getCacheKey = function (document) {\n return [document];\n };\n DocumentTransform.identity = function () {\n // No need to cache this transform since it just returns the document\n // unchanged. This should save a bit of memory that would otherwise be\n // needed to populate the `documentCache` of this transform.\n return new DocumentTransform(identity, {\n cache: false\n });\n };\n DocumentTransform.split = function (predicate, left, right) {\n if (right === void 0) {\n right = DocumentTransform.identity();\n }\n return Object.assign(new DocumentTransform(function (document) {\n var documentTransform = predicate(document) ? left : right;\n return documentTransform.transformDocument(document);\n },\n // Reasonably assume both `left` and `right` transforms handle their own caching\n {\n cache: false\n }), {\n left: left,\n right: right\n });\n };\n /**\n * Resets the internal cache of this transform, if it has one.\n */\n DocumentTransform.prototype.resetCache = function () {\n var _this = this;\n if (this.cached) {\n var stableCacheKeys_1 = new Trie(canUseWeakMap);\n this.performWork = wrap(DocumentTransform.prototype.performWork.bind(this), {\n makeCacheKey: function (document) {\n var cacheKeys = _this.getCacheKey(document);\n if (cacheKeys) {\n invariant(Array.isArray(cacheKeys), 66);\n return stableCacheKeys_1.lookupArray(cacheKeys);\n }\n },\n max: cacheSizes[\"documentTransform.cache\"],\n cache: WeakCache\n });\n }\n };\n DocumentTransform.prototype.performWork = function (document) {\n checkDocument(document);\n return this.transform(document);\n };\n DocumentTransform.prototype.transformDocument = function (document) {\n // If a user passes an already transformed result back to this function,\n // immediately return it.\n if (this.resultCache.has(document)) {\n return document;\n }\n var transformedDocument = this.performWork(document);\n this.resultCache.add(transformedDocument);\n return transformedDocument;\n };\n DocumentTransform.prototype.concat = function (otherTransform) {\n var _this = this;\n return Object.assign(new DocumentTransform(function (document) {\n return otherTransform.transformDocument(_this.transformDocument(document));\n },\n // Reasonably assume both transforms handle their own caching\n {\n cache: false\n }), {\n left: this,\n right: otherTransform\n });\n };\n return DocumentTransform;\n}();\nexport { DocumentTransform };\n//# sourceMappingURL=DocumentTransform.js.map","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, isArray } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport { isArray };\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename,\n id = _a.id,\n _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject = !isNullish(id) ? {\n id: id\n } : !isNullish(_id) ? {\n _id: _id\n } : void 0;\n }\n // If there is no object.id, fall back to object._id.\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat(typeof id === \"number\" || typeof id === \"string\" ? id : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n // Thanks to the shouldCanonizeResults helper, this should be the only line\n // you have to change to reenable canonization by default in the future.\n canonizeResults: false\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference) ? store.get(objectOrReference.__ref, \"__typename\") : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result) ? result.every(function (item) {\n return selectionSetMatchesResult(selectionSet, item, variables);\n }) : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) && (!field.selectionSet || selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n // If the selection has been skipped with @skip(true) or\n // @include(false), it should not count against the matching. If\n // the selection is not a field, it must be a fragment (inline or\n // named). We will determine if selectionSetMatchesResult for that\n // fragment when we get to it, so for now we return true.\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) && !isReference(value) && !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger();\n}\nexport function extractFragmentContext(document, fragments) {\n // FragmentMap consisting only of fragments defined directly in document, not\n // including other fragments registered in the FragmentRegistry.\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n }\n };\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () {\n return DELETE;\n};\nvar INVALIDATE = Object.create(null);\nvar EntityStore = /** @class */function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n // Maps root entity IDs to the number of times they have been retained, minus\n // the number of times they have been released. Retained entities keep other\n // entities they reference (even indirectly) from being garbage collected.\n this.rootIds = Object.create(null);\n // Lazily tracks { __ref: <dataId> } strings contained by this.data[dataId].\n this.refs = Object.create(null);\n // Bound function that can be passed around to provide easy access to fields\n // of Reference objects as well as ordinary objects.\n this.getFieldValue = function (objectOrReference, storeFieldName) {\n return maybeDeepFreeze(isReference(objectOrReference) ? _this.get(objectOrReference.__ref, storeFieldName) : objectOrReference && objectOrReference[storeFieldName]);\n };\n // Returns true for non-normalized StoreObjects and non-dangling\n // References, indicating that readField(name, objOrRef) has a chance of\n // working. Useful for filtering out dangling references from lists.\n this.canRead = function (objOrRef) {\n return isReference(objOrRef) ? _this.has(objOrRef.__ref) : typeof objOrRef === \"object\";\n };\n // Bound function that converts an id or an object with a __typename and\n // primary key fields to a Reference object. If called with a Reference object,\n // that same Reference object is returned. Pass true for mergeIntoStore to persist\n // an object into the store.\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n // Although the EntityStore class is abstract, it contains concrete\n // implementations of the various NormalizedCache interface methods that\n // are inherited by the Root and Layer subclasses.\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" && hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n // The has method (above) calls lookup with dependOnExistence = true, so\n // that it can later be invalidated when we add or remove a StoreObject for\n // this dataId. Any consumer who cares about the contents of the StoreObject\n // should not rely on this dependency, since the contents could change\n // without the object being added or removed.\n if (dependOnExistence) this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n // Convert unexpected references to ID strings.\n if (isReference(older)) older = older.__ref;\n if (isReference(newer)) newer = newer.__ref;\n var existing = typeof older === \"string\" ? this.lookup(dataId = older) : older;\n var incoming = typeof newer === \"string\" ? this.lookup(dataId = newer) : newer;\n // If newer was a string ID, but that ID was not defined in this store,\n // then there are no fields to be merged, so we're done.\n if (!incoming) return;\n invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n // Even if merged === existing, existing may have come from a lower\n // layer, so we always need to set this.data[dataId] on this level.\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n // If we added a new StoreObject where there was previously none, dirty\n // anything that depended on the existence of this dataId, such as the\n // EntityStore#has method.\n if (!existing) fieldsToDirty_1.__exists = 1;\n // Now invalidate dependents who called getFieldValue for any fields\n // that are changing as a result of this merge.\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n // Always dirty the full storeFieldName, which may include\n // serialized arguments following the fieldName prefix.\n fieldsToDirty_1[storeFieldName] = 1;\n // Also dirty fieldNameFromStoreName(storeFieldName) if it's\n // different from storeFieldName and this field does not have\n // keyArgs configured, because that means the cache can't make\n // any assumptions about how field values with the same field\n // name but different arguments might be interrelated, so it\n // must err on the side of invalidating all field values that\n // share the same short fieldName, regardless of arguments.\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName && !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n // If merged[storeFieldName] has become undefined, and this is the\n // Root layer, actually delete the property from the merged object,\n // which is guaranteed to have been created fresh in this method.\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename && !(existing && existing.__typename) &&\n // Since we return default root __typename strings\n // automatically from store.get, we don't need to dirty the\n // ROOT_QUERY.__typename field if merged.__typename is equal\n // to the default string (usually \"Query\").\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) {\n return _this.group.dirty(dataId, fieldName);\n });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) {\n return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId)\n } : fieldNameOrOptions, {\n store: _this\n });\n }\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0) return;\n var modify = typeof fields === \"function\" ? fields : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE : modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), {\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n storage: _this.getStorage(dataId, storeFieldName)\n }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n } else {\n if (newValue === DELETE) newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n if (globalThis.__DEV__ !== false) {\n var checkReference = function (ref) {\n if (_this.lookup(ref.__ref) === undefined) {\n globalThis.__DEV__ !== false && invariant.warn(2, ref);\n return true;\n }\n };\n if (isReference(newValue)) {\n checkReference(newValue);\n } else if (Array.isArray(newValue)) {\n // Warn about writing \"mixed\" arrays of Reference and non-Reference objects\n var seenReference = false;\n var someNonReference = void 0;\n for (var _i = 0, newValue_1 = newValue; _i < newValue_1.length; _i++) {\n var value = newValue_1[_i];\n if (isReference(value)) {\n seenReference = true;\n if (checkReference(value)) break;\n } else {\n // Do not warn on primitive values, since those could never be represented\n // by a reference. This is a valid (albeit uncommon) use case.\n if (typeof value === \"object\" && !!value) {\n var id = _this.policies.identify(value)[0];\n // check if object could even be referenced, otherwise we are not interested in it for this warning\n if (id) {\n someNonReference = value;\n }\n }\n }\n if (seenReference && someNonReference !== undefined) {\n globalThis.__DEV__ !== false && invariant.warn(3, someNonReference);\n break;\n }\n }\n }\n }\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n } else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n // If called with only one argument, removes the entire entity\n // identified by dataId. If called with a fieldName as well, removes all\n // fields of that entity whose names match fieldName according to the\n // fieldNameFromStoreName helper function. If called with a fieldName\n // and variables, removes all fields of that entity whose names match fieldName\n // and whose arguments when cached exactly match the variables passed.\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args ? this.policies.getStoreFieldName({\n typename: typename,\n fieldName: fieldName,\n args: args\n }) : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {}, _a[storeFieldName] = delModifier, _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n // Always invalidate the field to trigger rereading of watched\n // queries, even if no cache data was modified by the eviction,\n // because queries may depend on computed fields with custom read\n // functions, whose values are not stored in the EntityStore.\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = {\n extraRootIds: extraRootIds.sort()\n };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META,\n rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count) delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n // Return a Set<string> of all the ID strings that have been retained by\n // this layer/root *and* any layers/roots beneath it.\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) {\n ids = new Set();\n }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n } else {\n // Official singleton IDs like ROOT_QUERY and ROOT_MUTATION are\n // always considered roots for garbage collection, regardless of\n // their retainment counts in this.rootIds.\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n // The goal of garbage collection is to remove IDs from the Root layer of the\n // store that are no longer reachable starting from any IDs that have been\n // explicitly retained (see retain and release, above). Returns an array of\n // dataId strings that were removed from the store.\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n // Because we are iterating over an ECMAScript Set, the IDs we add here\n // will be visited in later iterations of the forEach loop only if they\n // were not previously contained by the Set.\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n // By removing IDs from the snapshot object here, we protect them from\n // getting removed from the root store layer below.\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer) root_1 = root_1.parent;\n idsToRemove.forEach(function (id) {\n return root_1.delete(id);\n });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root) return found_1;\n var workSet_1 = new Set([root]);\n // Within the store, only arrays and objects can contain child entity\n // references, so we can prune the traversal using this predicate:\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n // In rare cases, a { __ref } Reference object may have other fields.\n // This often indicates a mismerging of References with StoreObjects,\n // but garbage collection should not be fooled by a stray __ref\n // property in a StoreObject (ignoring all the other fields just\n // because the StoreObject looks like a Reference). To avoid this\n // premature termination of findChildRefIds recursion, we fall through\n // to the code below, which will handle any other properties of obj.\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n // No need to add primitive values to the workSet, since they cannot\n // contain reference objects.\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}();\nexport { EntityStore };\n// A single CacheGroup represents a set of one or more EntityStore objects,\n// typically the Root store in a CacheGroup by itself, and all active Layer\n// stores in a group together. A single EntityStore object belongs to only\n// one CacheGroup, store.group. The CacheGroup is responsible for tracking\n// dependencies, so store.group is helpful for generating unique keys for\n// cached results that need to be invalidated when/if those dependencies\n// change. If we used the EntityStore objects themselves as cache keys (that\n// is, store rather than store.group), the cache would become unnecessarily\n// fragmented by all the different Layer objects. Instead, the CacheGroup\n// approach allows all optimistic Layer objects in the same linked list to\n// belong to one CacheGroup, with the non-optimistic Root object belonging\n// to another CacheGroup, allowing resultCaching dependencies to be tracked\n// separately for optimistic and non-optimistic entity data.\nvar CacheGroup = /** @class */function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) {\n parent = null;\n }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n // Fields with arguments that contribute extra identifying\n // information to the fieldName (thus forming the storeFieldName)\n // depend not only on the full storeFieldName but also on the\n // short fieldName, so the field can be invalidated using either\n // level of specificity.\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName),\n // When storeFieldName === \"__exists\", that means the entity identified\n // by dataId has either disappeared from the cache or was newly added,\n // so the result caching system would do well to \"forget everything it\n // knows\" about that object. To achieve that kind of invalidation, we\n // not only dirty the associated result cache entry, but also remove it\n // completely from the dependency graph. For the optimism implementation\n // details, see https://github.com/benjamn/optimism/pull/195.\n storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}();\nfunction makeDepKey(dataId, storeFieldName) {\n // Since field names cannot have '#' characters in them, this method\n // of joining the field name and the ID should be unambiguous, and much\n // cheaper than JSON.stringify([dataId, fieldName]).\n return storeFieldName + \"#\" + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n // We use this pseudo-field __exists elsewhere in the EntityStore code to\n // represent changes in the existence of the entity object identified by\n // entityId. This dependency gets reliably dirtied whenever an object with\n // this ID is deleted (or newly created) within this group, so any result\n // cache entries (for example, StoreReader#executeSelectionSet results) that\n // depend on __exists for this entityId will get dirtied as well, leading to\n // the eventual recomputation (instead of reuse) of those result objects the\n // next time someone reads them from the cache.\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n // Refer to this class as EntityStore.Root outside this namespace.\n var Root = /** @class */function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies,\n _b = _a.resultCaching,\n resultCaching = _b === void 0 ? true : _b,\n seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed) _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n // Adding an optimistic Layer on top of the Root actually adds the Layer\n // on top of the Stump, so the Stump always comes between the Root and\n // any Layer objects that we've added.\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n // Never remove the root layer.\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore);\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\n// Not exported, since all Layer instances are created by the addLayer method\n// of the EntityStore.Root class.\nvar Layer = /** @class */function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n // Remove all instances of the given id, not just the first one.\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n // Dirty every ID we're removing. Technically we might be able to avoid\n // dirtying fields that have values in higher layers, but we don't have\n // easy access to higher layers here, and we're about to recreate those\n // layers anyway (see parent.addLayer below).\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n // The StoreObject identified by dataId was defined in this layer\n // but will be undefined in the parent layer, so we can delete the\n // whole entity using this.delete(dataId). Since we're about to\n // throw this layer away, the only goal of this deletion is to dirty\n // the removed fields.\n _this.delete(dataId);\n } else if (!ownStoreObject) {\n // This layer had an entry for dataId but it was undefined, which\n // means the entity was deleted in this layer, and it's about to\n // become undeleted when we remove this layer, so we need to dirty\n // all fields that are about to be reexposed.\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n } else if (ownStoreObject !== parentStoreObject) {\n // If ownStoreObject is not exactly the same as parentStoreObject,\n // dirty any fields whose values will change as a result of this\n // removal.\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n // No changes are necessary if the parent chain remains identical.\n if (parent === this.parent) return this;\n // Recreate this layer on top of the new parent.\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent) p = p.parent;\n return p.getStorage.apply(p,\n // @ts-expect-error\n arguments);\n };\n return Layer;\n}(EntityStore);\n// Represents a Layer permanently installed just above the Root, which allows\n// reading optimistically (and registering optimistic dependencies) even when\n// no optimistic layers are currently active. The stump.group CacheGroup object\n// is shared by any/all Layer objects added on top of the Stump.\nvar Stump = /** @class */function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () {}, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n // Never remove the Stump layer.\n return this;\n };\n Stump.prototype.merge = function (older, newer) {\n // We never want to write any data into the Stump, so we forward any merge\n // calls to the Root instead. Another option here would be to throw an\n // exception, but the toReference(object, true) function can sometimes\n // trigger Stump writes (which used to be Root writes, before the Stump\n // concept was introduced).\n return this.parent.merge(older, newer);\n };\n return Stump;\n}(Layer);\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n // Wherever there is a key collision, prefer the incoming value, unless\n // it is deeply equal to the existing value. It's worth checking deep\n // equality here (even though blindly returning incoming would be\n // logically correct) because preserving the referential identity of\n // existing data can prevent needless rereading and rerendering.\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n // When result caching is disabled, store.depend will be null.\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value) ? value.slice(0) : __assign({\n __proto__: Object.getPrototypeOf(value)\n }, value);\n }\n return value;\n}\n// When programmers talk about the \"canonical form\" of an object, they\n// usually have the following meaning in mind, which I've copied from\n// https://en.wiktionary.org/wiki/canonical_form:\n//\n// 1. A standard or normal presentation of a mathematical entity [or\n// object]. A canonical form is an element of a set of representatives\n// of equivalence classes of forms such that there is a function or\n// procedure which projects every element of each equivalence class\n// onto that one element, the canonical form of that equivalence\n// class. The canonical form is expected to be simpler than the rest of\n// the forms in some way.\n//\n// That's a long-winded way of saying any two objects that have the same\n// canonical form may be considered equivalent, even if they are !==,\n// which usually means the objects are structurally equivalent (deeply\n// equal), but don't necessarily use the same memory.\n//\n// Like a literary or musical canon, this ObjectCanon class represents a\n// collection of unique canonical items (JavaScript objects), with the\n// important property that canon.admit(a) === canon.admit(b) if a and b\n// are deeply equal to each other. In terms of the definition above, the\n// canon.admit method is the \"function or procedure which projects every\"\n// object \"onto that one element, the canonical form.\"\n//\n// In the worst case, the canonicalization process may involve looking at\n// every property in the provided object tree, so it takes the same order\n// of time as deep equality checking. Fortunately, already-canonicalized\n// objects are returned immediately from canon.admit, so the presence of\n// canonical subtrees tends to speed up canonicalization.\n//\n// Since consumers of canonical objects can check for deep equality in\n// constant time, canonicalizing cache results can massively improve the\n// performance of application code that skips re-rendering unchanged\n// results, such as \"pure\" UI components in a framework like React.\n//\n// Of course, since canonical objects may be shared widely between\n// unrelated consumers, it's important to think of them as immutable, even\n// though they are not actually frozen with Object.freeze in production,\n// due to the extra performance overhead that comes with frozen objects.\n//\n// Custom scalar objects whose internal class name is neither Array nor\n// Object can be included safely in the admitted tree, but they will not\n// be replaced with a canonical version (to put it another way, they are\n// assumed to be canonical already).\n//\n// If we ignore custom objects, no detection of cycles or repeated object\n// references is currently required by the StoreReader class, since\n// GraphQL result objects are JSON-serializable trees (and thus contain\n// neither cycles nor repeated subtrees), so we can avoid the complexity\n// of keeping track of objects we've already seen during the recursion of\n// the admit method.\n//\n// In the future, we may consider adding additional cases to the switch\n// statement to handle other common object types, such as \"[object Date]\"\n// objects, as needed.\nvar ObjectCanon = /** @class */function () {\n function ObjectCanon() {\n // Set of all canonical objects this ObjectCanon has admitted, allowing\n // canon.admit to return previously-canonicalized objects immediately.\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n // Efficient storage/lookup structure for canonical objects.\n this.pool = new Trie(canUseWeakMap);\n // Make the ObjectCanon assume this value has already been\n // canonicalized.\n this.passes = new WeakMap();\n // Arrays that contain the same elements in a different order can share\n // the same SortedKeysInfo object, to save memory.\n this.keysByJSON = new Map();\n // This has to come last because it depends on keysByJSON.\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original) return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype:\n {\n if (this.known.has(value)) return value;\n var array = value.map(this.admit, this);\n // Arrays are looked up in the Trie using their recursively\n // canonicalized elements, and the known version of the array is\n // preserved as node.array.\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add(node.array = array);\n // Since canonical arrays may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype:\n {\n if (this.known.has(value)) return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n // Objects are looked up in the Trie by their prototype (which\n // is *not* recursively canonicalized), followed by a JSON\n // representation of their (sorted) keys, followed by the\n // sequence of recursively canonicalized values corresponding to\n // those keys. To keep the final results unambiguous with other\n // sequences (such as arrays that just happen to contain [proto,\n // keys.json, value1, value2, ...]), the known version of the\n // object is stored as node.object.\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = node.object = Object.create(proto_1);\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n // Since canonical objects may be shared widely between\n // unrelated consumers, it's important to regard them as\n // immutable, even if they are not frozen in production.\n if (globalThis.__DEV__ !== false) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n // It's worthwhile to cache the sorting of arrays of strings, since the\n // same initial unsorted arrays tend to be encountered many times.\n // Fortunately, we can reuse the Trie machinery to look up the sorted\n // arrays in linear time (which is faster than sorting large arrays).\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, node.keys = {\n sorted: keys,\n json: json\n });\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}();\nexport { ObjectCanon };\n//# sourceMappingURL=object-canon.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind } from \"graphql\";\nimport { wrap } from \"optimism\";\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, canonicalStringify, cacheSizes } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { ObjectCanon } from \"./object-canon.js\";\nfunction execSelectionSetKeyArgs(options) {\n return [options.selectionSet, options.objectOrReference, options.context,\n // We split out this property so we can pass different values\n // independently without modifying options.context itself.\n options.context.canonizeResults];\n}\nvar StoreReader = /** @class */function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config)\n });\n this.canon = config.canon || new ObjectCanon();\n // memoized functions in this class will be \"garbage-collected\"\n // by recreating the whole `StoreReader` in\n // `InMemoryCache.resetResultsCache`\n // (triggered from `InMemoryCache.gc` with `resetResultCache: true`)\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n // Negate this boolean option so we can find out if we've already read\n // this result using the other boolean value.\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), {\n // If we previously read this result without canonizing it, we can\n // reuse that result simply by canonizing it now.\n result: _this.canon.admit(other.result)\n });\n }\n // If we previously read this result with canonization enabled, we can\n // return that canonized result as-is.\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n // Finally, if we didn't find any useful previous results, run the real\n // execSelectionSetImpl method with the given options.\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize || cacheSizes[\"inMemoryCache.executeSelectionSet\"] || 50000 /* defaultCacheSizes[\"inMemoryCache.executeSelectionSet\"] */,\n keyArgs: execSelectionSetKeyArgs,\n // Note that the parameters of makeCacheKey are determined by the\n // array returned by keyArgs.\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize || cacheSizes[\"inMemoryCache.executeSubSelectedArray\"] || 10000 /* defaultCacheSizes[\"inMemoryCache.executeSubSelectedArray\"] */,\n makeCacheKey: function (_a) {\n var field = _a.field,\n array = _a.array,\n context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon();\n };\n /**\n * Given a store and a query, return as much of the result as possible and\n * identify if any data was missing from the store.\n */\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store,\n query = _a.query,\n _b = _a.rootId,\n rootId = _b === void 0 ? \"ROOT_QUERY\" : _b,\n variables = _a.variables,\n _c = _a.returnPartialData,\n returnPartialData = _c === void 0 ? true : _c,\n _d = _a.canonizeResults,\n canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({\n store: store,\n query: query,\n policies: policies,\n variables: variables,\n varString: canonicalStringify(variables),\n canonizeResults: canonizeResults\n }, extractFragmentContext(query, this.config.fragments))\n });\n var missing;\n if (execResult.missing) {\n // For backwards compatibility we still report an array of\n // MissingFieldError objects, even though there will only ever be at most\n // one of them, now that all missing field error messages are grouped\n // together in the execResult.missing tree.\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) && this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context,\n // If result is canonical, then it could only have been previously\n // cached by the canonizing version of executeSelectionSet, so we can\n // avoid checking both possibilities here.\n this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n // Uncached version of executeSelectionSet.\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet,\n objectOrReference = _a.objectOrReference,\n enclosingRef = _a.enclosingRef,\n context = _a.context;\n if (isReference(objectOrReference) && !context.policies.rootTypenamesById[objectOrReference.__ref] && !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\")\n };\n }\n var variables = context.variables,\n policies = context.policies,\n store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename && typeof typename === \"string\" && !policies.rootIdsByTypename[typename]) {\n // Ensure we always include a default value for the __typename\n // field, if we have one, and this.config.addTypename is true. Note\n // that this field can be overridden by other merged objects.\n objectsToMerge.push({\n __typename: typename\n });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n // Omit fields with directives @skip(if: <truthy value>) or\n // @include(if: <falsy value>).\n if (!shouldInclude(selection, variables)) return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference) ? objectOrReference.__ref + \" object\" : \"object \" + JSON.stringify(objectOrReference, null, 2)), _a));\n }\n } else if (isArray(fieldValue)) {\n if (fieldValue.length > 0) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context\n }), resultName);\n }\n } else if (!selection.selectionSet) {\n // If the field does not have a selection set, then we handle it\n // as a scalar value. To keep this.canon from canonicalizing\n // this value, we use this.canon.pass to wrap fieldValue in a\n // Pass object that this.canon.admit will later unwrap as-is.\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n } else if (fieldValue != null) {\n // In this case, because we know the field has a selection set,\n // it must be trying to query a GraphQLObjectType, which is why\n // fieldValue must be != null.\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n } else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(9, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = {\n result: result,\n missing: missing\n };\n var frozen = context.canonizeResults ? this.canon.admit(finalResult)\n // Since this.canon is normally responsible for freezing results (only in\n // development), freeze them manually if canonization is disabled.\n : maybeDeepFreeze(finalResult);\n // Store this result with its selection set so that we can quickly\n // recognize it again in the StoreReader#isFresh method.\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n // Uncached version of executeSubSelectedArray.\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field,\n array = _a.array,\n enclosingRef = _a.enclosingRef,\n context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n // null value in array\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context\n }), i);\n }\n // This is an object, run the selection set on it\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context\n }), i);\n }\n if (globalThis.__DEV__ !== false) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing\n };\n };\n return StoreReader;\n}();\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\") throw value;\n return value;\n });\n } catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n invariant(!isReference(value), 10, getTypenameFromStoreObject(store, value), field.name.value);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","var toString = Object.prototype.toString;\n/**\n * Deeply clones a value to create a new instance.\n */\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\":\n {\n seen = seen || new Map();\n if (seen.has(val)) return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\":\n {\n seen = seen || new Map();\n if (seen.has(val)) return seen.get(val);\n // High fidelity polyfills of Object.create and Object.getPrototypeOf are\n // possible in all JS environments, so we will assume they exist/work.\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","import { dep, Slot } from \"optimism\";\n// Contextual Slot that acquires its value when custom read functions are\n// called in Policies#readField.\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set(),\n dep: dep()\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) {\n return rv.forgetCache(cache);\n });\n}\n// Calling forgetCache(cache) serves to silence broadcasts and allows the\n// cache to be garbage collected. However, the varsByCache WeakMap\n// preserves the set of reactive variables that were previously associated\n// with this cache, which makes it possible to \"recall\" the cache at a\n// later time, by reattaching it to those variables. If the cache has been\n// garbage collected in the meantime, because it is no longer reachable,\n// you won't be able to call recallCache(cache), and the cache will\n// automatically disappear from the varsByCache WeakMap.\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) {\n return rv.attachCache(cache);\n });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n // Invalidate any fields with custom read functions that\n // consumed this variable, so query results involving those\n // fields will be recomputed the next time we read them.\n getCacheInfo(cache).dep.dirty(rv);\n // Broadcast changes to any caches that have previously read\n // from this variable.\n broadcast(cache);\n });\n // Finally, notify any listeners added via rv.onNextChange.\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) {\n return listener(value);\n });\n }\n } else {\n // When reading from the variable, obtain the current cache from\n // context via cacheSlot. This isn't entirely foolproof, but it's\n // the same system that powers varDep.\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) {\n return caches.delete(cache);\n };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\n// Mapping from JSON-encoded KeySpecifier strings to associated information.\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n // It's safe to encode KeySpecifier arrays with JSON.stringify, since they're\n // just arrays of strings or nested KeySpecifier arrays, and the order of the\n // array elements is important (and suitably preserved by JSON.stringify).\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] || (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) {\n return context.readField(key, from);\n };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath,\n // Using context.readField to extract paths from context.storeObject\n // allows the extraction to see through Reference objects and respect\n // custom read functions.\n extract);\n if (extracted === void 0 && object !== context.storeObject && hasOwn.call(object, schemaKeyPath[0])) {\n // If context.storeObject fails to provide a value for the requested\n // path, fall back to the raw result object, if it has a top-level key\n // matching the first key in the path (schemaKeyPath[0]). This allows\n // key fields included in the written data to be saved in the cache\n // even if they are not selected explicitly in context.selectionSet.\n // Not being mentioned by context.selectionSet is convenient here,\n // since it means these extra fields cannot be affected by field\n // aliasing, which is why we can use extractKey instead of\n // context.readField for this extraction.\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n invariant(extracted !== void 0, 4, schemaKeyPath.join(\".\"), object);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\n// The keyArgs extraction process is roughly analogous to keyFields extraction,\n// but there are no aliases involved, missing fields are tolerated (by merely\n// omitting them from the key), and drawing from field.directives or variables\n// is allowed (in addition to drawing from the field's arguments object).\n// Concretely, these differences mean passing a different key path extractor\n// function to collectSpecifierPaths, reusing the shared extractKeyPath helper\n// wherever possible.\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field,\n variables = _a.variables,\n fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n // If the directive appears multiple times, only the first\n // occurrence's arguments will be used. TODO Allow repetition?\n // TODO Cache this work somehow, a la aliasMap?\n var d = field.directives.find(function (d) {\n return d.name.value === directiveName_1;\n });\n // Fortunately argumentsObjectFromField works for DirectiveNode!\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n // For directives without arguments (d defined, but directiveArgs ===\n // null), the presence or absence of the directive still counts as\n // part of the field key, so we return null in those cases. If no\n // directive with this name was found for this field (d undefined and\n // thus directiveArgs undefined), we return undefined, which causes\n // this value to be omitted from the key object returned by\n // collectSpecifierPaths.\n return directiveArgs && extractKeyPath(directiveArgs,\n // If keyPath.length === 1, this code calls extractKeyPath with an\n // empty path, which works because it uses directiveArgs as the\n // extracted value.\n keyPath.slice(1));\n }\n // If the key started with @ but there was no corresponding directive,\n // we want to omit this value from the key object, not fall through to\n // treating @whatever as a normal argument name.\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n // If the key started with $ but there was no corresponding variable, we\n // want to omit this value from the key object, not fall through to\n // treating $whatever as a normal argument name.\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n // If no arguments were passed to this field, and it didn't have any other\n // field key contributions from directives or variables, hide the empty\n // :{} suffix from the field key. However, a field passed no arguments can\n // still end up with a non-empty :{...} suffix if its key configuration\n // refers to directives or variables.\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n // For each path specified by specifier, invoke the extractor, and repeatedly\n // merge the results together, with appropriate ancestor context.\n var merger = new DeepMerger();\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n // This path is not expected to contain array indexes, so the toMerge\n // reconstruction will not contain arrays. TODO Fix this?\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) {\n return paths_1.push(currentPath_1.concat(p));\n });\n currentPath_1.length = 0;\n } else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n // For each key in path, extract the corresponding child property from obj,\n // flattening arrays if encountered (uncommon for keyFields and keyArgs, but\n // possible). The final result of path.reduce is normalized so unexpected leaf\n // objects have their keys safely sorted. That final result is difficult to\n // type as anything other than any. You're welcome to try to improve the\n // return type, but keep in mind extractKeyPath is not a public function\n // (exported only for testing), so the effort may not be worthwhile unless the\n // limited set of actual callers (see above) pass arguments that TypeScript\n // can statically type. If we know only that path is some array of strings\n // (and not, say, a specific tuple of statically known strings), any (or\n // possibly unknown) is the honest answer.\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj) ? obj.map(function (child) {\n return reducer(child, key);\n }) : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n // Usually the extracted value will be a scalar value, since most primary\n // key fields are scalar, but just in case we get an object or an array, we\n // need to do some normalization of the order of (nested) keys.\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) {\n return extractKeyPath(value, path);\n });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args : spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () {\n return void 0;\n};\nvar simpleKeyArgsFn = function (_args, context) {\n return context.fieldName;\n};\n// These merge functions can be selected by specifying merge:true or\n// merge:false in a field policy.\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) {\n return incoming;\n};\nvar Policies = /** @class */function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n // Map from subtype names to sets of supertype names. Note that this\n // representation inverts the structure of possibleTypes (whose keys are\n // supertypes and whose values are arrays of subtypes) because it tends\n // to be much more efficient to search upwards than downwards.\n this.supertypeMap = new Map();\n // Any fuzzy subtypes specified by possibleTypes will be converted to\n // RegExp objects and recorded here. Every key of this map can also be\n // found in supertypeMap. In many cases this Map will be empty, which\n // means no fuzzy subtype checking will happen in fragmentMatches.\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({\n dataIdFromObject: defaultDataIdFromObject\n }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename || ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n // It should be possible to write root Query fields with writeFragment,\n // using { __typename: \"Query\", ... } as the data, but it does not make\n // sense to allow the same identification behavior for the Mutation and\n // Subscription types, since application code should never be writing\n // directly to (or reading directly from) those root objects.\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n // Default context.storeObject to object if not otherwise provided.\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), {\n typename: typename,\n storeObject: storeObject,\n readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables\n });\n }\n });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(__assign(__assign({}, object), storeObject), context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n } else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename],\n queryType = _a.queryType,\n mutationType = _a.mutationType,\n subscriptionType = _a.subscriptionType,\n incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n // Though {query,mutation,subscription}Type configurations are rare,\n // it's important to call setRootTypename as early as possible,\n // since these configurations should apply consistently for the\n // entire lifetime of the cache. Also, since only one __typename can\n // qualify as one of these root types, these three properties cannot\n // be inherited, unlike the rest of the incoming properties. That\n // restriction is convenient, because the purpose of this.toBeAdded\n // is to delay the processing of type/field policies until the first\n // time they're used, allowing policies to be added in any order as\n // long as all relevant policies (including policies for supertypes)\n // have been added by the time a given policy is used for the first\n // time. In other words, since inheritance doesn't matter for these\n // properties, there's also no need to delay their processing using\n // the this.toBeAdded queue.\n if (queryType) _this.setRootTypename(\"Query\", typename);\n if (mutationType) _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType) _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n } else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields,\n fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge = typeof merge === \"function\" ? merge\n // Pass merge:true as a shorthand for a merge implementation\n // that returns options.mergeObjects(existing, incoming).\n : merge === true ? mergeTrueFn\n // Pass merge:false to make incoming always replace existing\n // without any warnings about data clobbering.\n : merge === false ? mergeFalseFn : existing.merge;\n }\n // Type policies can define merge functions, as an alternative to\n // using field policies to merge child objects.\n setMerge(existing, incoming.merge);\n existing.keyFn =\n // Pass false to disable normalization for this typename.\n keyFields === false ? nullKeyFieldsFn\n // Pass an array of strings to use those fields to compute a\n // composite ID for objects of this typename.\n : isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields)\n // Pass a function to take full control over identification.\n : typeof keyFields === \"function\" ? keyFields\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n } else {\n var keyArgs = incoming.keyArgs,\n read = incoming.read,\n merge = incoming.merge;\n existing.keyFn =\n // Pass false to disable argument-based differentiation of\n // field identities.\n keyArgs === false ? simpleKeyArgsFn\n // Pass an array of strings to use named arguments to\n // compute a composite identity for the field.\n : isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs)\n // Pass a function to take full control over field identity.\n : typeof keyArgs === \"function\" ? keyArgs\n // Leave existing.keyFn unchanged if above cases fail.\n : existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n // If we have both a read and a merge function, assume\n // keyArgs:false, because read and merge together can take\n // responsibility for interpreting arguments in and out. This\n // default assumption can always be overridden by specifying\n // keyArgs explicitly in the FieldPolicy.\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) {\n typename = which;\n }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n invariant(!old || old === which, 5, which);\n // First, delete any old __typename associated with this rootId from\n // rootIdsByTypename.\n if (old) delete this.rootIdsByTypename[old];\n // Now make this the only __typename that maps to this rootId.\n this.rootIdsByTypename[typename] = rootId;\n // Finally, update the __typename associated with this rootId.\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n // Make sure all types have an entry in this.supertypeMap, even if\n // their supertype set is empty, so we can return false immediately\n // from policies.fragmentMatches for unknown supertypes.\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n // TODO Don't interpret just any invalid typename as a RegExp.\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n // When the TypePolicy for typename is first accessed, instead of\n // starting with an empty policy object, inherit any properties or\n // fields from the type policies of the supertypes of typename.\n //\n // Any properties or fields defined explicitly within the TypePolicy\n // for typename will take precedence, and if there are multiple\n // supertypes, the properties of policies whose types were added\n // later via addPossibleTypes will take precedence over those of\n // earlier supertypes. TODO Perhaps we should warn about these\n // conflicts in development, and recommend defining the property\n // explicitly in the subtype policy?\n //\n // Field policy inheritance is atomic/shallow: you can't inherit a\n // field policy and then override just its read function, since read\n // and merge functions often need to cooperate, so changing only one\n // of them would be a recipe for inconsistency.\n //\n // Once the TypePolicy for typename has been accessed, its properties can\n // still be updated directly using addTypePolicies, but future changes to\n // inherited supertype policies will not be reflected in this subtype\n // policy, because this code runs at most once per typename.\n var supertypes_1 = this.supertypeMap.get(typename);\n if (!supertypes_1 && this.fuzzySubtypes.size) {\n // To make the inheritance logic work for unknown typename strings that\n // may have fuzzy supertypes, we give this typename an empty supertype\n // set and then populate it with any fuzzy supertypes that match.\n supertypes_1 = this.getSupertypeSet(typename, true);\n // This only works for typenames that are directly matched by a fuzzy\n // supertype. What if there is an intermediate chain of supertypes?\n // While possible, that situation can only be solved effectively by\n // specifying the intermediate relationships via possibleTypes, manually\n // and in a non-fuzzy way.\n this.fuzzySubtypes.forEach(function (regExp, fuzzy) {\n if (regExp.test(typename)) {\n // The fuzzy parameter is just the original string version of regExp\n // (not a valid __typename string), but we can look up the\n // associated supertype(s) in this.supertypeMap.\n var fuzzySupertypes = _this.supertypeMap.get(fuzzy);\n if (fuzzySupertypes) {\n fuzzySupertypes.forEach(function (supertype) {\n return supertypes_1.add(supertype);\n });\n }\n }\n });\n }\n if (supertypes_1 && supertypes_1.size) {\n supertypes_1.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype),\n fields = _a.fields,\n rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n // Merge the pending policies into this.typePolicies, in the order they\n // were originally passed to addTypePolicy.\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || createIfMissing && (fieldPolicies[fieldName] = Object.create(null));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition) return true;\n // If the fragment has a type condition but the object we're matching\n // against does not have a __typename, the fragment cannot match.\n if (!typename) return false;\n var supertype = fragment.typeCondition.name.value;\n // Common case: fragment type condition and __typename are the same.\n if (typename === supertype) return true;\n if (this.usingPossibleTypes && this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet && supertypeSet.size && workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n // We need to check fuzzy subtypes only if we encountered fuzzy\n // subtype strings in addPossibleTypes, and only while writing to\n // the cache, since that's when selectionSetMatchesResult gives a\n // strong signal of fragment matching. The StoreReader class calls\n // policies.fragmentMatches without passing a result object, so\n // needToCheckFuzzySubtypes is always false while reading.\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n // It's important to keep evaluating workQueue.length each time through\n // the loop, because the queue can grow while we're iterating over it.\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n globalThis.__DEV__ !== false && invariant.warn(6, typename, supertype);\n }\n // Record positive results for faster future lookup.\n // Unfortunately, we cannot safely cache negative results,\n // because new possibleTypes data could always be added to the\n // Policies class.\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n // Start checking fuzzy subtypes only after exhausting all\n // non-fuzzy subtypes (after the final iteration of the loop).\n i === workQueue_1.length - 1 &&\n // We could wait to compare fragment.selectionSet to result\n // after we verify the supertype, but this check is often less\n // expensive than that search, and we will have to do the\n // comparison anyway whenever we find a potential match.\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n // We don't always need to check fuzzy subtypes (if no result\n // was provided, or !this.fuzzySubtypes.size), but, when we do,\n // we only want to check them once.\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n // If we find any fuzzy subtypes that match typename, extend the\n // workQueue to search through the supertypes of those fuzzy\n // subtypes. Otherwise the for-loop will terminate and we'll\n // return false below.\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename,\n fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n } else {\n // If the custom keyFn returns a falsy value, fall back to\n // fieldName instead.\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables) : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n // Returning false from a keyArgs function is like configuring\n // keyArgs: false, but more dynamic.\n if (storeFieldName === false) {\n return fieldName;\n }\n // Make sure custom field names start with the actual field.name.value\n // of the field, so we can always figure out which properties of a\n // StoreObject correspond to which original field names.\n return fieldName === fieldNameFromStoreName(storeFieldName) ? storeFieldName : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference) return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField) return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename) options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference) ? objectOrReference.__ref : objectOrReference, storeFieldName));\n // Call read(existing, readOptions) with cacheSlot holding this.cache.\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field,\n typename = _a.typename,\n merge = _a.merge;\n if (merge === mergeTrueFn) {\n // Instead of going to the trouble of creating a full\n // FieldFunctionOptions object and calling mergeTrueFn, we can\n // simply call mergeObjects, as mergeTrueFn would.\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n // Likewise for mergeFalseFn, whose implementation is even simpler.\n return incoming;\n }\n // If cache.writeQuery or cache.writeFragment was called with\n // options.overwrite set to true, we still call merge functions, but\n // the existing data is always undefined, so the merge function will\n // not attempt to combine the incoming data with the existing data.\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this,\n // Unlike options.readField for read functions, we do not fall\n // back to the current object if no foreignObjOrRef is provided,\n // because it's not clear what the current object should be for\n // merge functions: the (possibly undefined) existing object, or\n // the incoming object? If you think your merge function needs\n // to read sibling fields in order to produce a new value for\n // the current field, you might want to rethink your strategy,\n // because that's a recipe for making merge behavior sensitive\n // to the order in which fields are written into the cache.\n // However, readField(name, ref) is useful for merge functions\n // that need to deduplicate child objects and references.\n void 0, {\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables\n }, context, storage || Object.create(null)));\n };\n return Policies;\n}();\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store,\n toReference = _a.toReference,\n canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store)\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0],\n from = readFieldArgs[1],\n argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n // Default to objectOrReference only when no second argument was\n // passed for the from parameter, not when undefined is explicitly\n // passed as the second argument.\n from: argc > 1 ? from : objectOrReference\n };\n } else {\n options = __assign({}, fieldNameOrOptions);\n // Default to objectOrReference only when fieldNameOrOptions.from is\n // actually omitted, rather than just undefined.\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (globalThis.__DEV__ !== false && options.from === void 0) {\n globalThis.__DEV__ !== false && invariant.warn(7, stringifyForDisplay(Array.from(readFieldArgs)));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw newInvariantError(8);\n }\n // These dynamic checks are necessary because the parameters of a\n // custom merge function can easily have the any type, so the type\n // system cannot always enforce the StoreObject | Reference parameter\n // types of options.mergeObjects.\n if (isNonNullObject(existing) && isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) && storeValueIsStoreObject(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // existing.__ref, preferring/overwriting any fields contributed by the\n // newer incoming StoreObject.\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) && isReference(incoming)) {\n // Update the normalized EntityStore for the entity identified by\n // incoming.__ref, taking fields from the older existing object only if\n // those fields are not already present in the newer StoreObject\n // identified by incoming.__ref.\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) && storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { Trie } from \"@wry/trie\";\nimport { Kind } from \"graphql\";\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, canonicalStringify } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext } from \"./helpers.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n// Since there are only four possible combinations of context.clientOnly and\n// context.deferred values, we should need at most four \"flavors\" of any given\n// WriteContext. To avoid creating multiple copies of the same context, we cache\n// the contexts in the context.flavors Map (shared by all flavors) according to\n// their clientOnly and deferred values (always in that order).\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = context.clientOnly === clientOnly && context.deferred === deferred ? context : __assign(__assign({}, context), {\n clientOnly: clientOnly,\n deferred: deferred\n }));\n }\n return flavored;\n}\nvar StoreWriter = /** @class */function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query,\n result = _a.result,\n dataId = _a.dataId,\n variables = _a.variables,\n overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({\n store: store,\n written: Object.create(null),\n merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n },\n variables: variables,\n varString: canonicalStringify(variables)\n }, extractFragmentContext(query, this.fragments)), {\n overwrite: !!overwrite,\n incomingById: new Map(),\n clientOnly: false,\n deferred: false,\n flavors: new Map()\n });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: {\n map: new Map()\n },\n context: context\n });\n if (!isReference(ref)) {\n throw newInvariantError(11, result);\n }\n // So far, the store has not been modified, so now it's time to process\n // context.incomingById and merge those incoming fields into context.store.\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject,\n mergeTree = _a.mergeTree,\n fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n // Assume References returned by applyMerges have already been merged\n // into the store. See makeMergeObjectsFunction in policies.ts for an\n // example of how this can happen.\n return;\n }\n // Otherwise, applyMerges returned a StoreObject, whose fields we should\n // merge into the store (see store.merge statement below).\n storeObject = applied;\n }\n if (globalThis.__DEV__ !== false && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n // If a merge function was defined for this field, trust that it\n // did the right thing about (not) clobbering data. If the field\n // has no selection set, it's a scalar field, so it doesn't need\n // a merge function (even if it's an object, like JSON data).\n if (hasSelectionSet_1(storeFieldName) && !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n // Any IDs written explicitly to the cache will be retained as\n // reachable root IDs for garbage collection purposes. Although this\n // logic includes root IDs like ROOT_QUERY and ROOT_MUTATION, their\n // retainment counts are effectively ignored because cache.gc() always\n // includes them in its root ID set.\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId,\n result = _a.result,\n selectionSet = _a.selectionSet,\n context = _a.context,\n // This object allows processSelectionSet to report useful information\n // to its callers without explicitly returning that information.\n mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n // This variable will be repeatedly updated using context.merge to\n // accumulate all fields that need to be written into the store.\n var incoming = Object.create(null);\n // If typename was not passed in, infer it. Note that typename is\n // always passed in for tricky-to-infer cases such as \"Query\" for\n // ROOT_QUERY.\n var typename = dataId && policies.rootTypenamesById[dataId] || getTypenameFromResult(result, selectionSet, context.fragmentMap) || dataId && context.store.get(dataId, \"__typename\");\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n // This readField function will be passed as context.readField in the\n // KeyFieldsContext object created within policies.identify (called below).\n // In addition to reading from the existing context.store (thanks to the\n // policies.readField(options, context) line at the very bottom), this\n // version of readField can read from Reference objects that are currently\n // pending in context.incomingById, which is important whenever keyFields\n // need to be extracted from a child object that processSelectionSet has\n // turned into a Reference.\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), {\n from: info.storeObject\n }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result,\n // This WriteContext will be the default context value for fields returned\n // by the flattenFields method, but some fields may be assigned a modified\n // context, depending on the presence of @client and other directives.\n context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field,\n // Reset context.clientOnly and context.deferred to their default\n // values before processing nested selection sets.\n field.selectionSet ? getContextFlavor(context, false, false) : context, childTree);\n // To determine if this field holds a child object with a merge function\n // defined in its type policy (see PR #7070), we need to figure out the\n // child object's __typename.\n var childTypename = void 0;\n // The field's value can be an object that has a __typename only if the\n // field has a selection set. Otherwise incomingValue is scalar.\n if (field.selectionSet && (isReference(incomingValue) || storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n // TODO Check compatibility against any existing childTree.field?\n field: field,\n typename: typename,\n merge: merge\n };\n } else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {}, _a[storeFieldName] = incomingValue, _a));\n } else if (globalThis.__DEV__ !== false && !context.clientOnly && !context.deferred && !addTypenameToDocument.added(field) &&\n // If the field has a read function, it may be a synthetic field or\n // provide a default value, so its absence from the written data should\n // not be cause for alarm.\n !policies.getReadFunction(typename, field.name.value)) {\n globalThis.__DEV__ !== false && invariant.error(12, resultKeyNameFromField(field), result);\n }\n });\n // Identify the result object, even if dataId was already provided,\n // since we always need keyObject below.\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField\n }),\n id = _b[0],\n keyObject = _b[1];\n // If dataId was not provided, fall back to the id just generated by\n // policies.identify.\n dataId = dataId || id;\n // Write any key fields that were used during identification, even if\n // they were not mentioned in the original query.\n if (keyObject) {\n // TODO Reverse the order of the arguments?\n incoming = context.merge(incoming, keyObject);\n }\n } catch (e) {\n // If dataId was provided, tolerate failure of policies.identify.\n if (!dataId) throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n // Avoid processing the same entity object using the same selection\n // set more than once. We use an array instead of a Set since most\n // entity IDs will be written using only one selection set, so the\n // size of this array is likely to be very small, meaning indexOf is\n // likely to be faster than Set.prototype.has.\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0) return dataRef;\n sets.push(selectionSet);\n // If we're about to write a result object into the store, but we\n // happen to know that the exact same (===) result object would be\n // returned if we were to reread the result with the same inputs,\n // then we can skip the rest of the processSelectionSet work for\n // this object, and immediately return a Reference to it.\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) {\n return previous_1.fieldNodeSet.add(field);\n });\n } else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n // Save a reference to mergeTree only if it is not empty, because\n // empty MergeTrees may be recycled by maybeRecycleChildMergeTree and\n // reused for entirely different parts of the result tree.\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n // In development, we need to clone scalar values so that they can be\n // safely frozen with maybeDeepFreeze in readFromStore.ts. In production,\n // it's cheaper to store the scalar values directly in the cache.\n return globalThis.__DEV__ !== false ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree\n });\n };\n // Implements https://spec.graphql.org/draft/#sec-Field-Collection, but with\n // some additions for tracking @client and @defer directives.\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) {\n typename = getTypenameFromResult(result, selectionSet, context.fragmentMap);\n }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false); // No need for WeakMap, since limitingTrie does not escape.\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet,\n // Because we take inheritedClientOnly and inheritedDeferred into\n // consideration here (in addition to selectionSet), it's possible for\n // the same selection set to be flattened more than once, if it appears\n // in the query with different @client and/or @directive configurations.\n inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited) return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables)) return;\n var clientOnly = inheritedContext.clientOnly,\n deferred = inheritedContext.deferred;\n if (\n // Since the presence of @client or @defer on this field can only\n // cause clientOnly or deferred to become true, we can skip the\n // forEach loop if both clientOnly and deferred are already true.\n !(clientOnly && deferred) && isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\") clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n // The @defer directive takes an optional args.if boolean\n // argument, similar to @include(if: boolean). Note that\n // @defer(if: false) does not make context.deferred false, but\n // instead behaves as if there was no @defer directive.\n if (!args || args.if !== false) {\n deferred = true;\n }\n // TODO In the future, we may want to record args.label using\n // context.deferred, if a label is specified.\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n // If this field has been visited along another recursive path\n // before, the final context should have clientOnly or deferred set\n // to true only if *all* paths have the directive (hence the &&).\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n } else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw newInvariantError(13, selection.name.value);\n }\n if (fragment && policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 =\n // Items in the same position in different arrays are not\n // necessarily related to each other, so when incoming is an array\n // we process its elements as if there was no existing data.\n !isArray(incoming) && (\n // Likewise, existing must be either a Reference or a StoreObject\n // in order for its fields to be safe to merge with the fields of\n // the incoming object.\n isReference(existing) || storeValueIsStoreObject(existing)) ? existing : void 0;\n // This narrowing is implied by mergeTree.map.size > 0 and\n // !isReference(incoming), though TypeScript understandably cannot\n // hope to infer this type.\n var i_1 = incoming;\n // The options.storage objects provided to read and merge functions\n // are derived from the identity of the parent object plus a\n // sequence of storeFieldName strings/numbers identifying the nested\n // field name path of each field value to be merged.\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n // It's possible that applying merge functions to this subtree will\n // not change the incoming data, so this variable tracks the fields\n // that did change, so we can create a new incoming object when (and\n // only when) at least one incoming field has changed. We use a Map\n // to preserve the type of numeric keys.\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from) ? typeof name === \"number\" ? from[name] : void 0 : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n // If we have no incoming data, leave any existing data untouched.\n if (void 0 === iVal) return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map();\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n // Shallow clone i so we can add changed fields to it.\n incoming = isArray(i_1) ? i_1.slice(0) : __assign({}, i_1);\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}();\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || {\n map: new Map()\n });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right)) return left;\n if (!left || mergeTreeIsEmpty(left)) return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map() : left.map.size ? left.map : right.map;\n var merged = {\n info: info,\n map: map\n };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\n// Note that this function is unused in production, and thus should be\n// pruned by any well-configured minifier.\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing) return;\n var incoming = getChild(incomingObj);\n if (!incoming) return;\n // It's always safe to replace a reference, since it refers to data\n // safely stored elsewhere.\n if (isReference(existing)) return;\n // If the values are structurally equivalent, we do not need to worry\n // about incoming replacing existing.\n if (equal(existing, incoming)) return;\n // If we're replacing every key of the existing object, then the\n // existing data would be overwritten even if the objects were\n // normalized, so warning would not be helpful here.\n if (Object.keys(existing).every(function (key) {\n return store.getFieldValue(incoming, key) !== void 0;\n })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") || store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n // Avoid warning more than once for the same type and field name.\n if (warnings.has(typeDotName)) return;\n warnings.add(typeDotName);\n var childTypenames = [];\n // Arrays do not have __typename fields, and always need a custom merge\n // function, even if their elements are normalized entities.\n if (!isArray(existing) && !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" && !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n globalThis.__DEV__ !== false && invariant.warn(14, fieldName, parentType, childTypenames.length ? \"either ensure all objects of type \" + childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \" : \"\", typeDotName, __assign({}, existing), __assign({}, incoming));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\n// Make builtins like Map and Set safe to use with non-extensible objects.\nimport \"./fixPolyfills.js\";\nimport { wrap } from \"optimism\";\nimport { equal } from \"@wry/equality\";\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, DocumentTransform, canonicalStringify, print, cacheSizes } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { getInMemoryCacheMemoryInternals } from \"../../utilities/caching/getMemoryInternals.js\";\nvar InMemoryCache = /** @class */function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) {\n config = {};\n }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.addTypenameTransform = new DocumentTransform(addTypenameToDocument);\n // Override the default value, since InMemoryCache result objects are frozen\n // in development and expected to remain logically immutable in production.\n _this.assumeImmutableResults = true;\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n // Passing { resultCaching: false } in the InMemoryCache constructor options\n // will completely disable dependency tracking, which will improve memory\n // usage but worsen the performance of repeated reads.\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching\n });\n // When no optimistic writes are currently active, cache.optimisticData ===\n // cache.data, so there are no additional layers on top of the actual data.\n // When an optimistic update happens, this.optimisticData will become a\n // linked list of EntityStore Layer objects that terminates with the\n // original this.data cache object.\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n // The StoreWriter is mostly stateless and so doesn't really need to be\n // reset, but it does need to have its writer.storeReader reference updated,\n // so it's simpler to update this.storeWriter as well.\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities ? void 0 : previousReader && previousReader.canon,\n fragments: fragments\n }), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize || cacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] || 5000 /* defaultCacheSizes[\"inMemoryCache.maybeBroadcastWatch\"] */,\n makeCacheKey: function (c) {\n // Return a cache key (thus enabling result caching) only if we're\n // currently using a data store that can track cache dependencies.\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic,\n id = c.id,\n variables = c.variables;\n return store.makeCacheKey(c.query,\n // Different watches can have the same query, optimistic\n // status, rootId, and variables, but if their callbacks are\n // different, the (identical) result needs to be delivered to\n // each distinct callback. The easiest way to achieve that\n // separation is to include c.callback in the cache key for\n // maybeBroadcastWatch calls. See issue #5733.\n c.callback, canonicalStringify({\n optimistic: optimistic,\n id: id,\n variables: variables\n }));\n }\n }\n });\n // Since we have thrown away all the cached functions that depend on the\n // CacheGroup dependencies maintained by EntityStore, we should also reset\n // all CacheGroup dependency information.\n new Set([this.data.group, this.optimisticData.group]).forEach(function (group) {\n return group.resetCaching();\n });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n // Since calling this.init() discards/replaces the entire StoreReader, along\n // with the result caches it maintains, this.data.replace(data) won't have\n // to bother deleting the old data.\n if (data) this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) {\n optimistic = false;\n }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var\n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n _a = options.returnPartialData,\n // Since read returns data or null, without any additional metadata\n // about whether/where there might have been missing fields, the\n // default behavior cannot be returnPartialData = true (like it is\n // for the diff method), since defaulting to true would violate the\n // integrity of the T in the return type. However, partial data may\n // be useful in some cases, so returnPartialData:true may be\n // specified explicitly.\n returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), {\n store: options.optimistic ? this.optimisticData : this.data,\n config: this.config,\n returnPartialData: returnPartialData\n })).result || null;\n } catch (e) {\n if (e instanceof MissingFieldError) {\n // Swallow MissingFieldError and return null, so callers do not need to\n // worry about catching \"normal\" exceptions resulting from incomplete\n // cache data. Unexpected errors will be re-thrown. If you need more\n // information about which fields were missing, use cache.diff instead,\n // and examine diffResult.missing.\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n } finally {\n if (! --this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n // To my knowledge, TypeScript does not currently provide a way to\n // enforce that an optional property?:type must *not* be undefined\n // when present. That ability would be useful here, because we want\n // options.id to default to ROOT_QUERY only when no options.id was\n // provided. If the caller attempts to pass options.id with a\n // falsy/undefined value (perhaps because cache.identify failed), we\n // should not assume the goal was to modify the ROOT_QUERY object.\n // We could throw, but it seems natural to return false to indicate\n // that nothing was modified.\n return false;\n }\n var store = options.optimistic // Defaults to false.\n ? this.optimisticData : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n } finally {\n if (! --this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), {\n store: options.optimistic ? this.optimisticData : this.data,\n rootId: options.id || \"ROOT_QUERY\",\n config: this.config\n }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n // In case we previously called forgetCache(this) because\n // this.watches became empty (see below), reattach this cache to any\n // reactive variables on which it previously depended. It might seem\n // paradoxical that we're able to recall something we supposedly\n // forgot, but the point of calling forgetCache(this) is to silence\n // useless broadcasts while this.watches is empty, and to allow the\n // cache to be garbage collected. If, however, we manage to call\n // recallCache(this) here, this cache object must not have been\n // garbage collected yet, and should resume receiving updates from\n // reactive variables, now that it has a watcher to notify.\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n // Once we remove the last watch from this.watches, cache.broadcastWatches\n // no longer does anything, so we preemptively tell the reactive variable\n // system to exclude this cache from future broadcasts.\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n // Remove this watch from the LRU cache managed by the\n // maybeBroadcastWatch OptimisticWrapperFunction, to prevent memory\n // leaks involving the closure of watch.callback.\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n var _a;\n canonicalStringify.reset();\n print.reset();\n this.addTypenameTransform.resetCache();\n (_a = this.config.fragments) === null || _a === void 0 ? void 0 : _a.resetCaches();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n } else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n // Call this method to ensure the given root ID remains in the cache after\n // garbage collection, along with its transitive child entities. Note that\n // the cache automatically retains all directly written entities. By default,\n // the retainment persists after optimistic updates are removed. Pass true\n // for the optimistic argument if you would prefer for the retainment to be\n // discarded when the top-most optimistic layer is removed. Returns the\n // resulting (non-negative) retainment count.\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n // Call this method to undo the effect of the retain method, above. Once the\n // retainment count falls to zero, the given ID will no longer be preserved\n // during garbage collection, though it may still be preserved by other safe\n // entities that refer to it. Returns the resulting (non-negative) retainment\n // count, in case that's useful.\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n // Returns the canonical ID for a given StoreObject, obeying typePolicies\n // and keyFields (and dataIdFromObject, if you still use that). At minimum,\n // the object must contain a __typename and any primary key fields required\n // to identify entities of that type. If you pass a query result object, be\n // sure that none of the primary key fields have been renamed by aliasing.\n // If you pass a Reference object, its __ref ID string will be returned.\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object)) return object.__ref;\n try {\n return this.policies.identify(object)[0];\n } catch (e) {\n globalThis.__DEV__ !== false && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n // See comment in modify method about why we return false when\n // options.id exists but is falsy/undefined.\n return false;\n }\n options = __assign(__assign({}, options), {\n id: \"ROOT_QUERY\"\n });\n }\n try {\n // It's unlikely that the eviction will end up invoking any other\n // cache update operations while it's running, but {in,de}crementing\n // this.txCount still seems like a good idea, for uniformity with\n // the other update methods.\n ++this.txCount;\n // Pass this.data as a limit on the depth of the eviction, so evictions\n // during optimistic updates (when this.data is temporarily set equal to\n // this.optimisticData) do not escape their optimistic Layer.\n return this.optimisticData.evict(options, this.data);\n } finally {\n if (! --this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n // Similar to what happens in the unsubscribe function returned by\n // cache.watch, applied to all current watches.\n this.watches.forEach(function (watch) {\n return _this.maybeBroadcastWatch.forget(watch);\n });\n this.watches.clear();\n forgetCache(this);\n } else {\n // Calling this.init() above unblocks all maybeBroadcastWatch caching, so\n // this.broadcastWatches() triggers a broadcast to every current watcher\n // (letting them know their data is now missing). This default behavior is\n // convenient because it means the watches do not have to be manually\n // reestablished after resetting the cache. To prevent this broadcast and\n // cancel all watches, pass true for options.discardWatches.\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update,\n _a = options.optimistic,\n optimistic = _a === void 0 ? true : _a,\n removeOptimistic = options.removeOptimistic,\n onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this,\n data = _a.data,\n optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n } finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n // If an options.onWatchUpdated callback is provided, we want to call it\n // with only the Cache.WatchOptions objects affected by options.update,\n // but there might be dirty watchers already waiting to be broadcast that\n // have nothing to do with the update. To prevent including those watchers\n // in the post-update broadcast, we perform this initial broadcast to\n // collect the dirty watchers, so we can re-dirty them later, after the\n // post-update broadcast, allowing them to receive their pending\n // broadcasts the next time broadcastWatches is called, just as they would\n // if we never called cache.batch.\n this.broadcastWatches(__assign(__assign({}, options), {\n onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n }\n }));\n }\n if (typeof optimistic === \"string\") {\n // Note that there can be multiple layers with the same optimistic ID.\n // When removeOptimistic(id) is called for that id, all matching layers\n // will be removed, and the remaining layers will be reapplied.\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n } else if (optimistic === false) {\n // Ensure both this.data and this.optimisticData refer to the root\n // (non-optimistic) layer of the cache during the update. Note that\n // this.data could be a Layer if we are currently executing an optimistic\n // update function, but otherwise will always be an EntityStore.Root\n // instance.\n perform(this.data);\n } else {\n // Otherwise, leave this.data and this.optimisticData unchanged and run\n // the update with broadcast batching.\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n // Note: if this.txCount > 0, then alreadyDirty.size === 0, so this code\n // takes the else branch and calls this.broadcastWatches(options), which\n // does nothing when this.txCount > 0.\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), {\n onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n // Since onWatchUpdated did not return false, this diff is\n // about to be broadcast to watch.callback, so we don't need\n // to re-dirty it with the other alreadyDirty watches below.\n alreadyDirty.delete(watch);\n }\n return result;\n }\n }));\n // Silently re-dirty any watches that were already dirty before the update\n // was performed, and were not broadcast just now.\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) {\n return _this.maybeBroadcastWatch.dirty(watch);\n });\n }\n } else {\n // If alreadyDirty is empty or we don't have an onWatchUpdated\n // function, we don't need to go to the trouble of wrapping\n // options.onWatchUpdated.\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || optimisticId !== null\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n return this.addTypenameToDocument(this.addFragmentsToDocument(document));\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) {\n return _this.maybeBroadcastWatch(c, options);\n });\n }\n };\n InMemoryCache.prototype.addFragmentsToDocument = function (document) {\n var fragments = this.config.fragments;\n return fragments ? fragments.transform(document) : document;\n };\n InMemoryCache.prototype.addTypenameToDocument = function (document) {\n if (this.addTypename) {\n return this.addTypenameTransform.transformDocument(document);\n }\n return document;\n };\n // This method is wrapped by maybeBroadcastWatch, which is called by\n // broadcastWatches, so that we compute and broadcast results only when\n // the data that would be broadcast might have changed. It would be\n // simpler to check for changes after recomputing a result but before\n // broadcasting it, but this wrapping approach allows us to skip both\n // the recomputation and the broadcast, in most cases.\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n // Both WatchOptions and DiffOptions extend ReadOptions, and DiffOptions\n // currently requires no additional properties, so we can use c (a\n // WatchOptions object) as DiffOptions, without having to allocate a new\n // object, and without having to enumerate the relevant properties (query,\n // variables, etc.) explicitly. There will be some additional properties\n // (lastDiff, callback, etc.), but cache.diff ignores them.\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic && typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated && options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n // Returning false from the onWatchUpdated callback will prevent\n // calling c.callback(diff) for this watcher.\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache);\nexport { InMemoryCache };\nif (globalThis.__DEV__ !== false) {\n InMemoryCache.prototype.getMemoryInternals = getInMemoryCacheMemoryInternals;\n}\n//# sourceMappingURL=inMemoryCache.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { Observable } from \"./Observable.js\";\n// Like Observable.prototype.map, except that the mapping function can\n// optionally return a Promise (or be async).\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var promiseQueue = {\n // Normally we would initialize promiseQueue to Promise.resolve(), but\n // in this case, for backwards compatibility, we need to be careful to\n // invoke the first callback synchronously.\n then: function (callback) {\n return new Promise(function (resolve) {\n return resolve(callback());\n });\n }\n };\n function makeCallback(examiner, key) {\n return function (arg) {\n if (examiner) {\n var both = function () {\n // If the observer is closed, we don't want to continue calling the\n // mapping function - it's result will be swallowed anyways.\n return observer.closed ? /* will be swallowed */0 : examiner(arg);\n };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n return observer.next(result);\n }, function (error) {\n return observer.error(error);\n });\n } else {\n observer[key](arg);\n }\n };\n }\n var handler = {\n next: makeCallback(mapFn, \"next\"),\n error: makeCallback(catchFn, \"error\"),\n complete: function () {\n // no need to reassign `promiseQueue`, after `observer.complete`,\n // the observer will be closed and short-circuit everything anyways\n /*promiseQueue = */\n promiseQueue.then(function () {\n return observer.complete();\n });\n }\n };\n var sub = observable.subscribe(handler);\n return function () {\n return sub.unsubscribe();\n };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","import { isNonEmptyArray } from \"./arrays.js\";\nimport { isExecutionPatchIncrementalResult } from \"./incrementalResult.js\";\nexport function graphQLResultHasError(result) {\n var errors = getGraphQLErrorsFromResult(result);\n return isNonEmptyArray(errors);\n}\nexport function getGraphQLErrorsFromResult(result) {\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n if (isExecutionPatchIncrementalResult(result) && isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n return graphQLErrors;\n}\n//# sourceMappingURL=errorHandling.js.map","export function iterateObserversSafely(observers, method, argument) {\n // In case observers is modified during iteration, we need to commit to the\n // original elements, which also provides an opportunity to filter them down\n // to just the observers with the given method.\n var observersWithMethod = [];\n observers.forEach(function (obs) {\n return obs[method] && observersWithMethod.push(obs);\n });\n observersWithMethod.forEach(function (obs) {\n return obs[method](argument);\n });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\n// Generic implementations of Observable.prototype methods like map and\n// filter need to know how to create a new Observable from an Observable\n// subclass (like Concast or ObservableQuery). Those methods assume\n// (perhaps unwisely?) that they can call the subtype's constructor with a\n// Subscriber function, even though the subclass constructor might expect\n// different parameters. Defining this static Symbol.species property on\n// the subclass is a hint to generic Observable code to use the default\n// constructor instead of trying to do `new Subclass(observer => ...)`.\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n // Object.defineProperty is necessary because the Symbol.species\n // property is a getter by default in modern JS environments, so we\n // can't assign to it with a normal assignment expression.\n Object.defineProperty(subclass, key, {\n value: Observable\n });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n // The \"@@species\" string is used as a fake Symbol.species value in some\n // polyfill systems (including the SymbolSpecies variable used by\n // zen-observable), so we should set it as well, to be safe.\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// A Concast<T> observable concatenates the given sources into a single\n// non-overlapping sequence of Ts, automatically unwrapping any promises,\n// and broadcasts the T elements of that sequence to any number of\n// subscribers, all without creating a bunch of intermediary Observable\n// wrapper objects.\n//\n// Even though any number of observers can subscribe to the Concast, each\n// source observable is guaranteed to receive at most one subscribe call,\n// and the results are multicast to all observers.\n//\n// In addition to broadcasting every next/error message to this.observers,\n// the Concast stores the most recent message using this.latest, so any\n// new observers can immediately receive the latest message, even if it\n// was originally delivered in the past. This behavior means we can assume\n// every active observer in this.observers has received the same most\n// recent message.\n//\n// With the exception of this.latest replay, a Concast is a \"hot\"\n// observable in the sense that it does not replay past results from the\n// beginning of time for each new observer.\n//\n// Could we have used some existing RxJS class instead? Concast<T> is\n// similar to a BehaviorSubject<T>, because it is multicast and redelivers\n// the latest next/error message to new subscribers. Unlike Subject<T>,\n// Concast<T> does not expose an Observer<T> interface (this.handlers is\n// intentionally private), since Concast<T> gets its inputs from the\n// concatenated sources. If we ever switch to RxJS, there may be some\n// value in reusing their code, but for now we use zen-observable, which\n// does not contain any Subject implementations.\nvar Concast = /** @class */function (_super) {\n __extends(Concast, _super);\n // Not only can the individual elements of the iterable be promises, but\n // also the iterable itself can be wrapped in a promise.\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () {\n return _this.removeObserver(observer);\n };\n }) || this;\n // Active observers receiving broadcast messages. Thanks to this.latest,\n // we can assume all observers in this Set have received the same most\n // recent message, though possibly at different times in the past.\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n // Bound handler functions that can be reused for every internal\n // subscription.\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n // Delay unsubscribing from the underlying subscription slightly,\n // so that immediately subscribing another observer can keep the\n // subscription active.\n if (sub) setTimeout(function () {\n return sub.unsubscribe();\n });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var _a = _this,\n sub = _a.sub,\n _b = _a.sources,\n sources = _b === void 0 ? [] : _b;\n if (sub !== null) {\n // If complete is called before concast.start, this.sources may be\n // undefined, so we use a default value of [] for sources. That works\n // here because it falls into the if (!value) {...} block, which\n // appropriately terminates the Concast, even if this.sources might\n // eventually have been initialized to a non-empty array.\n var value = sources.shift();\n if (!value) {\n if (sub) setTimeout(function () {\n return sub.unsubscribe();\n });\n _this.sub = null;\n if (_this.latest && _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n } else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n // We do not store this.latest = [\"complete\"], because doing so\n // discards useful information about the previous next (or\n // error) message. Instead, if new observers subscribe after\n // this Concast has completed, they will receive the final\n // 'next' message (unless there was an error) immediately\n // followed by a 'complete' message (see addObserver).\n iterateObserversSafely(_this.observers, \"complete\");\n } else if (isPromiseLike(value)) {\n value.then(function (obs) {\n return _this.sub = obs.subscribe(_this.handlers);\n }, _this.handlers.error);\n } else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n }\n };\n _this.nextResultListeners = new Set();\n // A public way to abort observation and broadcast.\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n // Suppress rejection warnings for this.promise, since it's perfectly\n // acceptable to pay no attention to this.promise if you're consuming\n // the results through the normal observable API.\n _this.promise.catch(function (_) {});\n // If someone accidentally tries to create a Concast using a subscriber\n // function, recover by creating an Observable from that subscriber and\n // using it as the source.\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) {\n return _this.start(iterable);\n }, _this.handlers.error);\n } else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0) return;\n // In practice, sources is most often simply an Array of observables.\n // TODO Consider using sources[Symbol.iterator]() to take advantage\n // of the laziness of non-Array iterables.\n this.sources = Array.from(sources);\n // Calling this.handlers.complete() kicks off consumption of the first\n // source observable. It's tempting to do this step lazily in\n // addObserver, but this.promise can be accessed without calling\n // addObserver, so consumption needs to begin eagerly.\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n // If the subscription is already closed, and the last message was\n // a 'next' message, simulate delivery of the final 'complete'\n // message again.\n if (this.sub === null && nextOrError === \"next\" && observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n // Immediately deliver the most recent message, so we can always\n // be sure all observers have the latest information.\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) && this.observers.size < 1) {\n // In case there are still any listeners in this.nextResultListeners, and\n // no error or completion has been broadcast yet, make sure those\n // observers have a chance to run and then remove themselves from\n // this.observers.\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n // Replacing this.nextResultListeners first ensures it does not grow while\n // we are iterating over it, potentially leading to infinite loops.\n this.nextResultListeners = new Set();\n nextResultListeners.forEach(function (listener) {\n return listener(method, arg);\n });\n }\n };\n // We need a way to run callbacks just *before* the next result (or error or\n // completion) is delivered by this Concast, so we can be sure any code that\n // runs as a result of delivering that result/error observes the effects of\n // running the callback(s). It was tempting to reuse the Observer type instead\n // of introducing NextResultListener, but that messes with the sizing and\n // maintenance of this.observers, and ends up being more code overall.\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable);\nexport { Concast };\n// Necessary because the Concast constructor has a different signature\n// than the Observable constructor.\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","import { __rest } from \"tslib\";\nimport equal from \"@wry/equality\";\nimport { createFragmentMap, getFragmentDefinitions, getFragmentFromSelection, getMainDefinition, isField, resultKeyNameFromField, shouldInclude } from \"../utilities/index.js\";\n// Returns true if aResult and bResult are deeply equal according to the fields\n// selected by the given query, ignoring any fields marked as @nonreactive.\nexport function equalByQuery(query, _a, _b, variables) {\n var aData = _a.data,\n aRest = __rest(_a, [\"data\"]);\n var bData = _b.data,\n bRest = __rest(_b, [\"data\"]);\n return equal(aRest, bRest) && equalBySelectionSet(getMainDefinition(query).selectionSet, aData, bData, {\n fragmentMap: createFragmentMap(getFragmentDefinitions(query)),\n variables: variables\n });\n}\nfunction equalBySelectionSet(selectionSet, aResult, bResult, context) {\n if (aResult === bResult) {\n return true;\n }\n var seenSelections = new Set();\n // Returning true from this Array.prototype.every callback function skips the\n // current field/subtree. Returning false aborts the entire traversal\n // immediately, causing equalBySelectionSet to return false.\n return selectionSet.selections.every(function (selection) {\n // Avoid re-processing the same selection at the same level of recursion, in\n // case the same field gets included via multiple indirect fragment spreads.\n if (seenSelections.has(selection)) return true;\n seenSelections.add(selection);\n // Ignore @skip(if: true) and @include(if: false) fields.\n if (!shouldInclude(selection, context.variables)) return true;\n // If the field or (named) fragment spread has a @nonreactive directive on\n // it, we don't care if it's different, so we pretend it's the same.\n if (selectionHasNonreactiveDirective(selection)) return true;\n if (isField(selection)) {\n var resultKey = resultKeyNameFromField(selection);\n var aResultChild = aResult && aResult[resultKey];\n var bResultChild = bResult && bResult[resultKey];\n var childSelectionSet = selection.selectionSet;\n if (!childSelectionSet) {\n // These are scalar values, so we can compare them with deep equal\n // without redoing the main recursive work.\n return equal(aResultChild, bResultChild);\n }\n var aChildIsArray = Array.isArray(aResultChild);\n var bChildIsArray = Array.isArray(bResultChild);\n if (aChildIsArray !== bChildIsArray) return false;\n if (aChildIsArray && bChildIsArray) {\n var length_1 = aResultChild.length;\n if (bResultChild.length !== length_1) {\n return false;\n }\n for (var i = 0; i < length_1; ++i) {\n if (!equalBySelectionSet(childSelectionSet, aResultChild[i], bResultChild[i], context)) {\n return false;\n }\n }\n return true;\n }\n return equalBySelectionSet(childSelectionSet, aResultChild, bResultChild, context);\n } else {\n var fragment = getFragmentFromSelection(selection, context.fragmentMap);\n if (fragment) {\n // The fragment might === selection if it's an inline fragment, but\n // could be !== if it's a named fragment ...spread.\n if (selectionHasNonreactiveDirective(fragment)) return true;\n return equalBySelectionSet(fragment.selectionSet,\n // Notice that we reuse the same aResult and bResult values here,\n // since the fragment ...spread does not specify a field name, but\n // consists of multiple fields (within the fragment's selection set)\n // that should be applied to the current result value(s).\n aResult, bResult, context);\n }\n }\n });\n}\nfunction selectionHasNonreactiveDirective(selection) {\n return !!selection.directives && selection.directives.some(directiveIsNonreactive);\n}\nfunction directiveIsNonreactive(dir) {\n return dir.name.value === \"nonreactive\";\n}\n//# sourceMappingURL=equalByQuery.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, fixObservableSubclass, getQueryDefinition } from \"../utilities/index.js\";\nimport { equalByQuery } from \"./equalByQuery.js\";\nvar assign = Object.assign,\n hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = /** @class */function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager,\n queryInfo = _a.queryInfo,\n options = _a.options;\n var _this = _super.call(this, function (observer) {\n // Zen Observable has its own error function, so in order to log correctly\n // we need to provide a custom error callback.\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n } catch (_a) {}\n var first = !_this.observers.size;\n _this.observers.add(observer);\n // Deliver most recent error or result.\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n } else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n // Initiate observation of this query if it hasn't been reported to\n // the QueryManager yet.\n if (first) {\n // Blindly catching here prevents unhandled promise rejections,\n // and is safe because the ObservableQuery handles this error with\n // this.observer.error, so we're not just swallowing the error by\n // ignoring it here.\n _this.reobserve().catch(function () {});\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n // related classes\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n // active state\n _this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy);\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery,\n _c = _b === void 0 ? {} : _b,\n _d = _c.fetchPolicy,\n defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy,\n fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e,\n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n _f = options.initialFetchPolicy,\n // Make sure we don't store \"standby\" as the initialFetchPolicy.\n initialFetchPolicy = _f === void 0 ? fetchPolicy === \"standby\" ? defaultFetchPolicy : fetchPolicy : _f;\n _this.options = __assign(__assign({}, options), {\n // Remember the initial options.fetchPolicy so we can revert back to this\n // policy when variables change. This information can also be specified\n // (or overridden) by providing options.initialFetchPolicy explicitly.\n initialFetchPolicy: initialFetchPolicy,\n // This ensures this.options.fetchPolicy always has a string value, in\n // case options.fetchPolicy was not provided.\n fetchPolicy: fetchPolicy\n });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n // The `query` computed property will always reflect the document transformed\n // by the last run query. `this.options.query` will always reflect the raw\n // untransformed query to ensure document transforms with runtime conditionals\n // are run on the original document.\n get: function () {\n return this.lastQuery || this.options.query;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n // Computed shorthand for this.options.variables, preserved for\n // backwards compatibility.\n /**\n * An object containing the variables that were provided for the query.\n */\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n // TODO: this code doesn’t actually make sense insofar as the observer\n // will never exist in this.observers due how zen-observable wraps observables.\n // https://github.com/zenparsing/zen-observable/blob/master/src/Observable.js#L169\n var observer = {\n next: function (result) {\n resolve(result);\n // Stop the query within the QueryManager if we can before\n // this function returns.\n //\n // We do this in order to prevent observers piling up within\n // the QueryManager. Notice that we only fully unsubscribe\n // from the subscription in a setTimeout(..., 0) call. This call can\n // actually be handled by the browser at a much later time. If queries\n // are fired in the meantime, observers that should have been removed\n // from the QueryManager will continue to fire, causing an unnecessary\n // performance hit.\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject\n };\n var subscription = _this.subscribe(observer);\n });\n };\n /** @internal */\n ObservableQuery.prototype.resetDiff = function () {\n this.queryInfo.resetDiff();\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) {\n saveAsLastResult = true;\n }\n // Use the last result as long as the variables match this.variables.\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus || lastResult && lastResult.networkStatus || NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), {\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus: networkStatus\n });\n var _a = this.options.fetchPolicy,\n fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (\n // These fetch policies should never deliver data from the cache, unless\n // redelivering a previously delivered result.\n skipCacheDataFor(fetchPolicy) ||\n // If this.options.query has @client(always: true) fields, we cannot\n // trust diff.result, since it was read from the cache without running\n // local resolvers (and it's too late to run resolvers now, since we must\n // return a result synchronously).\n this.queryManager.getDocumentInfo(this.query).hasForcedResolvers) {\n // Fall through.\n } else if (this.waitForOwnResult) {\n // This would usually be a part of `QueryInfo.getDiff()`.\n // which we skip in the waitForOwnResult case since we are not\n // interested in the diff.\n this.queryInfo[\"updateWatch\"]();\n } else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n // Similar to setting result.partial to false, but taking advantage of the\n // falsiness of missing fields.\n delete result.partial;\n // If the diff is complete, and we're using a FetchPolicy that\n // terminates after a complete cache read, we can assume the next result\n // we receive will have NetworkStatus.ready and !loading.\n if (diff.complete && result.networkStatus === NetworkStatus.loading && (fetchPolicy === \"cache-first\" || fetchPolicy === \"cache-only\")) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n } else {\n result.partial = true;\n }\n if (globalThis.__DEV__ !== false && !diff.complete && !this.options.partialRefetch && !result.loading && !result.data && !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n // Compares newResult to the snapshot we took of this.lastResult when it was\n // first received.\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n if (!this.last) {\n return true;\n }\n var resultIsDifferent = this.queryManager.getDocumentInfo(this.query).hasNonreactiveDirective ? !equalByQuery(this.query, this.last.result, newResult, this.variables) : !equal(this.last.result, newResult);\n return resultIsDifferent || variables && !equal(this.last.variables, variables);\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last && last[key] && (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n /**\n * Update the variables of this observable query, and fetch the new results.\n * This method should be preferred over `setVariables` in most use cases.\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n // Always disable polling for refetches.\n pollInterval: 0\n };\n // Unless the provided fetchPolicy always consults the network\n // (no-cache, network-only, or cache-and-network), override it with\n // network-only to force the refetch for this fetchQuery call.\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === \"cache-and-network\") {\n reobserveOptions.fetchPolicy = fetchPolicy;\n } else if (fetchPolicy === \"no-cache\") {\n reobserveOptions.fetchPolicy = \"no-cache\";\n } else {\n reobserveOptions.fetchPolicy = \"network-only\";\n }\n if (globalThis.__DEV__ !== false && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) {\n return v.variable.name.value === \"variables\";\n })) {\n globalThis.__DEV__ !== false && invariant.warn(20, variables, ((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || queryDef);\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n // Update the existing options with new variables\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n /**\n * A function that helps you fetch the next set of results for a [paginated list field](https://www.apollographql.com/docs/react/pagination/core-api/).\n */\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), {\n query: this.options.query\n }), fetchMoreOptions), {\n variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables)\n })), {\n // The fetchMore request goes immediately to the network and does\n // not automatically write its result to the cache (hence no-cache\n // instead of network-only), because we allow the caller of\n // fetchMore to provide an updateQuery callback that determines how\n // the data gets written to the cache.\n fetchPolicy: \"no-cache\"\n });\n combinedOptions.query = this.transformDocument(combinedOptions.query);\n var qid = this.queryManager.generateQueryId();\n // If a temporary query is passed to `fetchMore`, we don't want to store\n // it as the last query result since it may be an optimized query for\n // pagination. We will however run the transforms on the original document\n // as well as the document passed in `fetchMoreOptions` to ensure the cache\n // uses the most up-to-date document which may rely on runtime conditionals.\n this.lastQuery = fetchMoreOptions.query ? this.transformDocument(this.options.query) : combinedOptions.query;\n // Simulate a loading result for the original query with\n // result.networkStatus === NetworkStatus.fetchMore.\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n // Performing this cache update inside a cache.batch transaction ensures\n // any affected cache.watch watchers are notified at most once about any\n // updates. Most watchers will be using the QueryInfo class, which\n // responds to notifications by calling reobserveCacheFirst to deliver\n // fetchMore cache results back to this ObservableQuery.\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false\n }, function (previous) {\n return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables\n });\n });\n } else {\n // If we're using a field policy instead of updateQuery, the only\n // thing we need to do is write the new data to the cache using\n // combinedOptions.variables (instead of this.variables, which is\n // what this.updateQuery uses, because it works by abusing the\n // original field value, keyed by the original variables).\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data\n });\n }\n },\n onWatchUpdated: function (watch) {\n // Record the DocumentNode associated with any watched query whose\n // data were updated by the cache writes above.\n updatedQuerySet.add(watch.query);\n }\n });\n return fetchMoreResult;\n }).finally(function () {\n // In case the cache writes above did not generate a broadcast\n // notification (which would have been intercepted by onWatchUpdated),\n // likely because the written data were the same as what was already in\n // the cache, we still want fetchMore to deliver its final loading:false\n // result with the unchanged data.\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n // XXX the subscription variables are separate from the query variables.\n // if you want to update subscription variables, right now you have to do that separately,\n // and you can only do it by stopping the subscription and then subscribing again with new variables.\n /**\n * A function that enables you to execute a [subscription](https://www.apollographql.com/docs/react/data/subscriptions/), usually to subscribe to specific fields that were included in the query.\n *\n * This function returns _another_ function that you can call to terminate the subscription.\n */\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager.startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context\n }).subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n globalThis.__DEV__ !== false && invariant.error(21, err);\n }\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.silentSetOptions = function (newOptions) {\n var mergedOptions = compact(this.options, newOptions || {});\n assign(this.options, mergedOptions);\n };\n /**\n * Update the variables of this observable query, and fetch the new results\n * if they've changed. Most users should prefer `refetch` instead of\n * `setVariables` in order to to be properly notified of results even when\n * they come from the cache.\n *\n * Note: the `next` callback will *not* fire if the variables have not changed\n * or if the result is coming from cache.\n *\n * Note: the promise will return the old results immediately if the variables\n * have not changed.\n *\n * Note: the promise will return null immediately if the query is not active\n * (there are no subscribers).\n *\n * @param variables - The new set of variables. If there are missing variables,\n * the previous values of those variables will be used.\n */\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n // If we have no observers, then we don't actually want to make a network\n // request. As soon as someone observes the query, the request will kick\n // off. For now, we just store any changes. (See #1077)\n return this.observers.size ? this.result() : Promise.resolve();\n }\n this.options.variables = variables;\n // See comment above\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n // Reset options.fetchPolicy to its original value.\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables\n }, NetworkStatus.setVariables);\n };\n /**\n * A function that enables you to update the query's cached result without executing a followup GraphQL operation.\n *\n * See [using updateQuery and updateFragment](https://www.apollographql.com/docs/react/caching/cache-interaction/#using-updatequery-and-updatefragment) for additional information.\n */\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables\n });\n queryManager.broadcastQueries();\n }\n };\n /**\n * A function that instructs the query to begin re-executing at a specified interval (in milliseconds).\n */\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n /**\n * A function that instructs the query to stop polling after a previous call to `startPolling`.\n */\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n // Update options.fetchPolicy according to options.nextFetchPolicy.\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason,\n // It's possible to use this method to apply options.nextFetchPolicy to\n // options.fetchPolicy even if options !== this.options, though that happens\n // most often when the options are temporary, used for only one request and\n // then thrown away, so nextFetchPolicy may not end up mattering.\n options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy,\n fetchPolicy = _a === void 0 ? \"cache-first\" : _a,\n _b = options.initialFetchPolicy,\n initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n // Do nothing, leaving options.fetchPolicy unchanged.\n } else if (typeof options.nextFetchPolicy === \"function\") {\n // When someone chooses \"cache-and-network\" or \"network-only\" as their\n // initial FetchPolicy, they often do not want future cache updates to\n // trigger unconditional network requests, which is what repeatedly\n // applying the \"cache-and-network\" or \"network-only\" policies would\n // seem to imply. Instead, when the cache reports an update after the\n // initial network request, it may be desirable for subsequent network\n // requests to be triggered only if the cache result is incomplete. To\n // that end, the options.nextFetchPolicy option provides an easy way to\n // update options.fetchPolicy after the initial network request, without\n // having to call observableQuery.setOptions.\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy\n });\n } else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n } else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus, query) {\n // TODO Make sure we update the networkStatus (and infer fetchVariables)\n // before actually committing to the fetch.\n this.queryManager.setObservableQuery(this);\n return this.queryManager[\"fetchConcastWithInfo\"](this.queryId, options, newNetworkStatus, query);\n };\n // Turns polling on or off based on this.options.pollInterval.\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n // Avoid polling in SSR mode\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this,\n pollingInfo = _a.pollingInfo,\n pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo && pollingInfo.interval === pollInterval) {\n return;\n }\n invariant(pollInterval, 22);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n var _a, _b;\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus) && !((_b = (_a = _this.options).skipPollAttempt) === null || _b === void 0 ? void 0 : _b.call(_a))) {\n _this.reobserve({\n // Most fetchPolicy options don't make sense to use in a polling context, as\n // users wouldn't want to be polling the cache directly. However, network-only and\n // no-cache are both useful for when the user wants to control whether or not the\n // polled results are written to the cache.\n fetchPolicy: _this.options.initialFetchPolicy === \"no-cache\" ? \"no-cache\" : \"network-only\"\n }, NetworkStatus.poll).then(poll, poll);\n } else {\n poll();\n }\n }\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) {\n variables = this.variables;\n }\n var error = this.getLastError();\n // Preserve this.last.error unless the variables have changed.\n if (error && this.last && !equal(variables, this.last.variables)) {\n error = void 0;\n }\n return this.last = __assign({\n result: this.queryManager.assumeImmutableResults ? newResult : cloneDeep(newResult),\n variables: variables\n }, error ? {\n error: error\n } : null);\n };\n ObservableQuery.prototype.reobserveAsConcast = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast =\n // Refetching uses a disposable Concast to allow refetches using different\n // options/variables, without permanently altering the options of the\n // original ObservableQuery.\n newNetworkStatus === NetworkStatus.refetch ||\n // The fetchMore method does not actually call the reobserve method, but,\n // if it did, it would definitely use a disposable Concast.\n newNetworkStatus === NetworkStatus.fetchMore ||\n // Polling uses a disposable Concast so the polling options (which force\n // fetchPolicy to be \"network-only\" or \"no-cache\") won't override the original options.\n newNetworkStatus === NetworkStatus.poll;\n // Save the old variables, since Object.assign may modify them below.\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast ?\n // Disposable Concast fetches receive a shallow copy of this.options\n // (merged with newOptions), leaving this.options unmodified.\n mergedOptions : assign(this.options, mergedOptions);\n // Don't update options.query with the transformed query to avoid\n // overwriting this.options.query when we aren't using a disposable concast.\n // We want to ensure we can re-run the custom document transforms the next\n // time a request is made against the original query.\n var query = this.transformDocument(options.query);\n this.lastQuery = query;\n if (!useDisposableConcast) {\n // We can skip calling updatePolling if we're not changing this.options.\n this.updatePolling();\n // Reset options.fetchPolicy to its original value when variables change,\n // unless a new fetchPolicy was provided by newOptions.\n if (newOptions && newOptions.variables && !equal(newOptions.variables, oldVariables) &&\n // Don't mess with the fetchPolicy if it's currently \"standby\".\n options.fetchPolicy !== \"standby\" &&\n // If we're changing the fetchPolicy anyway, don't try to change it here\n // using applyNextFetchPolicy. The explicit options.fetchPolicy wins.\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n this.waitForOwnResult && (this.waitForOwnResult = skipCacheDataFor(options.fetchPolicy));\n var finishWaitingForOwnResult = function () {\n if (_this.concast === concast) {\n _this.waitForOwnResult = false;\n }\n };\n var variables = options.variables && __assign({}, options.variables);\n var _a = this.fetch(options, newNetworkStatus, query),\n concast = _a.concast,\n fromLink = _a.fromLink;\n var observer = {\n next: function (result) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportResult(result, variables);\n }\n },\n error: function (error) {\n if (equal(_this.variables, variables)) {\n finishWaitingForOwnResult();\n _this.reportError(error, variables);\n }\n }\n };\n if (!useDisposableConcast && (fromLink || !this.concast)) {\n // We use the {add,remove}Observer methods directly to avoid wrapping\n // observer with an unnecessary SubscriptionObserver object.\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n return this.reobserveAsConcast(newOptions, newNetworkStatus).promise;\n };\n ObservableQuery.prototype.resubscribeAfterError = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // If `lastError` is set in the current when the subscription is re-created,\n // the subscription will immediately receive the error, which will\n // cause it to terminate again. To avoid this, we first clear\n // the last error/result from the `observableQuery` before re-starting\n // the subscription, and restore the last value afterwards so that the\n // subscription has a chance to stay open.\n var last = this.last;\n this.resetLastResults();\n var subscription = this.subscribe.apply(this, args);\n this.last = last;\n return subscription;\n };\n // (Re)deliver the current result to this.observers without applying fetch\n // policies or making network requests.\n ObservableQuery.prototype.observe = function () {\n this.reportResult(\n // Passing false is important so that this.getCurrentResult doesn't\n // save the fetchMore result as this.lastResult, causing it to be\n // ignored due to the this.isDifferentFromLastResult check in\n // this.reportResult.\n this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n var isDifferent = this.isDifferentFromLastResult(result, variables);\n // Update the last result even when isDifferentFromLastResult returns false,\n // because the query may be using the @nonreactive directive, and we want to\n // save the the latest version of any nonreactive subtrees (in case\n // getCurrentResult is called), even though we skip broadcasting changes.\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n if (lastError || isDifferent) {\n iterateObserversSafely(this.observers, \"next\", result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n // Since we don't get the current result on errors, only the error, we\n // must mirror the updates that occur in QueryStore.markQueryError here\n var errorResult = __assign(__assign({}, this.getLastResult()), {\n error: error,\n errors: error.graphQLErrors,\n networkStatus: NetworkStatus.error,\n loading: false\n });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, \"error\", this.last.error = error);\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown) return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n // stop all active GraphQL subscriptions\n this.subscriptions.forEach(function (sub) {\n return sub.unsubscribe();\n });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n ObservableQuery.prototype.transformDocument = function (document) {\n return this.queryManager.transform(document);\n };\n return ObservableQuery;\n}(Observable);\nexport { ObservableQuery };\n// Necessary because the ObservableQuery constructor has a different\n// signature than the Observable constructor.\nfixObservableSubclass(ObservableQuery);\n// Reobserve with fetchPolicy effectively set to \"cache-first\", triggering\n// delivery of any new data from the cache, possibly falling back to the network\n// if any cache data are missing. This allows _complete_ cache results to be\n// delivered without also kicking off unnecessary network requests when\n// this.options.fetchPolicy is \"cache-and-network\" or \"network-only\". When\n// this.options.fetchPolicy is any other policy (\"cache-first\", \"cache-only\",\n// \"standby\", or \"no-cache\"), we call this.reobserve() as usual.\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options,\n fetchPolicy = _a.fetchPolicy,\n nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" || fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n // Use a temporary nextFetchPolicy function that replaces itself with the\n // previous nextFetchPolicy value and returns the original fetchPolicy.\n nextFetchPolicy: function (currentFetchPolicy, context) {\n // Replace this nextFetchPolicy function in the options object with the\n // original this.options.nextFetchPolicy value.\n this.nextFetchPolicy = nextFetchPolicy;\n // If the original nextFetchPolicy value was a function, give it a\n // chance to decide what happens here.\n if (typeof this.nextFetchPolicy === \"function\") {\n return this.nextFetchPolicy(currentFetchPolicy, context);\n }\n // Otherwise go back to the original this.options.fetchPolicy.\n return fetchPolicy;\n }\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n globalThis.__DEV__ !== false && invariant.error(23, error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (globalThis.__DEV__ !== false && missing) {\n globalThis.__DEV__ !== false && invariant.debug(24, missing);\n }\n}\nfunction skipCacheDataFor(fetchPolicy /* `undefined` would mean `\"cache-first\"` */) {\n return fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\" || fetchPolicy === \"standby\";\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { Kind } from \"./kinds.mjs\";\nexport function isDefinitionNode(node) {\n return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);\n}\nexport function isExecutableDefinitionNode(node) {\n return node.kind === Kind.OPERATION_DEFINITION || node.kind === Kind.FRAGMENT_DEFINITION;\n}\nexport function isSelectionNode(node) {\n return node.kind === Kind.FIELD || node.kind === Kind.FRAGMENT_SPREAD || node.kind === Kind.INLINE_FRAGMENT;\n}\nexport function isValueNode(node) {\n return node.kind === Kind.VARIABLE || node.kind === Kind.INT || node.kind === Kind.FLOAT || node.kind === Kind.STRING || node.kind === Kind.BOOLEAN || node.kind === Kind.NULL || node.kind === Kind.ENUM || node.kind === Kind.LIST || node.kind === Kind.OBJECT;\n}\nexport function isTypeNode(node) {\n return node.kind === Kind.NAMED_TYPE || node.kind === Kind.LIST_TYPE || node.kind === Kind.NON_NULL_TYPE;\n}\nexport function isTypeSystemDefinitionNode(node) {\n return node.kind === Kind.SCHEMA_DEFINITION || isTypeDefinitionNode(node) || node.kind === Kind.DIRECTIVE_DEFINITION;\n}\nexport function isTypeDefinitionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION;\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION;\n}","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, isSelectionNode } from \"graphql\";\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = /** @class */function () {\n function LocalState(_a) {\n var cache = _a.cache,\n client = _a.client,\n resolvers = _a.resolvers,\n fragmentMatcher = _a.fragmentMatcher;\n this.selectionsToResolveCache = new WeakMap();\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n } else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n // Run local client resolvers against the incoming query and remote data.\n // Locally resolved field values are merged with the incoming remote data,\n // and returned. Note that locally resolved fields will overwrite\n // remote data using the same field name.\n LocalState.prototype.runResolvers = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var document = _b.document,\n remoteResult = _b.remoteResult,\n context = _b.context,\n variables = _b.variables,\n _c = _b.onlyRunForcedResolvers,\n onlyRunForcedResolvers = _c === void 0 ? false : _c;\n return __generator(this, function (_d) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) {\n return __assign(__assign({}, remoteResult), {\n data: localResult.result\n });\n })];\n }\n return [2 /*return*/, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n // Client queries contain everything in the incoming document (if a @client\n // directive is found).\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives([\"client\"], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n // Server queries are stripped of all @client based selection sets.\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), {\n cache: cache,\n // Getting an entry's cache key is useful for local state resolvers.\n getCacheKey: function (obj) {\n return cache.identify(obj);\n }\n });\n };\n // To support `@client @export(as: \"someVar\")` syntax, we'll first resolve\n // @client @export fields locally, then pass the resolved values back to be\n // used alongside the original operation variables.\n LocalState.prototype.addExportedVariables = function (document_1) {\n return __awaiter(this, arguments, void 0, function (document, variables, context) {\n if (variables === void 0) {\n variables = {};\n }\n if (context === void 0) {\n context = {};\n }\n return __generator(this, function (_a) {\n if (document) {\n return [2 /*return*/, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) {\n return __assign(__assign({}, variables), data.exportedVariables);\n })];\n }\n return [2 /*return*/, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === \"client\" && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === \"always\" && arg.value.kind === \"BooleanValue\" && arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n }\n }\n });\n return forceResolvers;\n };\n // Query the cache and return matching data.\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document_1, rootValue_1) {\n return __awaiter(this, arguments, void 0, function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n var mainDefinition, fragments, fragmentMap, selectionsToResolve, definitionOperation, defaultOperationType, _a, cache, client, execContext, isClientFieldDescendant;\n if (context === void 0) {\n context = {};\n }\n if (variables === void 0) {\n variables = {};\n }\n if (fragmentMatcher === void 0) {\n fragmentMatcher = function () {\n return true;\n };\n }\n if (onlyRunForcedResolvers === void 0) {\n onlyRunForcedResolvers = false;\n }\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n selectionsToResolve = this.collectSelectionsToResolve(mainDefinition, fragmentMap);\n definitionOperation = mainDefinition.operation;\n defaultOperationType = definitionOperation ? definitionOperation.charAt(0).toUpperCase() + definitionOperation.slice(1) : \"Query\";\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), {\n cache: cache,\n client: client\n }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n selectionsToResolve: selectionsToResolve,\n onlyRunForcedResolvers: onlyRunForcedResolvers\n };\n isClientFieldDescendant = false;\n return [2 /*return*/, this.resolveSelectionSet(mainDefinition.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (result) {\n return {\n result: result,\n exportedVariables: execContext.exportedVariables\n };\n })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) {\n return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!isClientFieldDescendant && !execContext.selectionsToResolve.has(selection)) {\n // Skip selections without @client directives\n // (still processing if one of the ancestors or one of the child fields has @client directive)\n return [2 /*return*/];\n }\n if (!shouldInclude(selection, variables)) {\n // Skip this entirely.\n return [2 /*return*/];\n }\n if (isField(selection)) {\n return [2 /*return*/, this.resolveField(selection, isClientFieldDescendant, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== \"undefined\") {\n resultsToMerge.push((_a = {}, _a[resultKeyNameFromField(selection)] = fieldResult, _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n } else {\n // This is a named fragment.\n fragment = fragmentMap[selection.name.value];\n invariant(fragment, 18, selection.name.value);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2 /*return*/, this.resolveSelectionSet(fragment.selectionSet, isClientFieldDescendant, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2 /*return*/];\n });\n });\n };\n return [2 /*return*/, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, isClientFieldDescendant, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n if (!rootValue) {\n return [2 /*return*/, null];\n }\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n // Usually all local resolvers are run when passing through here, but\n // if we've specifically identified that we only want to run forced\n // resolvers (that is, resolvers for fields marked with\n // `@client(always: true)`), then we'll skip running non-forced resolvers.\n if (!execContext.onlyRunForcedResolvers || this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(\n // In case the resolve function accesses reactive variables,\n // set cacheSlot to the current cache instance.\n cacheSlot.withValue(this.cache, resolve, [rootValue, argumentsObjectFromField(field, variables), execContext.context, {\n field: field,\n fragmentMap: execContext.fragmentMap\n }]));\n }\n }\n }\n return [2 /*return*/, resultPromise.then(function (result) {\n var _a, _b;\n if (result === void 0) {\n result = defaultResult;\n }\n // If an @export directive is associated with the current field, store\n // the `as` export variable name and current result for later use.\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === \"export\" && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === \"as\" && arg.value.kind === \"StringValue\") {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n // Handle all scalar types here.\n if (!field.selectionSet) {\n return result;\n }\n // From here down, the field has a selection set, which means it's trying\n // to query a GraphQLObjectType.\n if (result == null) {\n // Basically any field in a GraphQL response can be null, or missing\n return result;\n }\n var isClientField = (_b = (_a = field.directives) === null || _a === void 0 ? void 0 : _a.some(function (d) {\n return d.name.value === \"client\";\n })) !== null && _b !== void 0 ? _b : false;\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant || isClientField, result, execContext);\n }\n // Returned value is an object, and the query has a sub-selection. Recurse.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant || isClientField, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, isClientFieldDescendant, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n // This is a nested array, recurse.\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, isClientFieldDescendant, item, execContext);\n }\n // This is an object, run the selection set on it.\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, isClientFieldDescendant, item, execContext);\n }\n }));\n };\n // Collect selection nodes on paths from document root down to all @client directives.\n // This function takes into account transitive fragment spreads.\n // Complexity equals to a single `visit` over the full document.\n LocalState.prototype.collectSelectionsToResolve = function (mainDefinition, fragmentMap) {\n var isSingleASTNode = function (node) {\n return !Array.isArray(node);\n };\n var selectionsToResolveCache = this.selectionsToResolveCache;\n function collectByDefinition(definitionNode) {\n if (!selectionsToResolveCache.has(definitionNode)) {\n var matches_1 = new Set();\n selectionsToResolveCache.set(definitionNode, matches_1);\n visit(definitionNode, {\n Directive: function (node, _, __, ___, ancestors) {\n if (node.name.value === \"client\") {\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n }\n },\n FragmentSpread: function (spread, _, __, ___, ancestors) {\n var fragment = fragmentMap[spread.name.value];\n invariant(fragment, 19, spread.name.value);\n var fragmentSelections = collectByDefinition(fragment);\n if (fragmentSelections.size > 0) {\n // Fragment for this spread contains @client directive (either directly or transitively)\n // Collect selection nodes on paths from the root down to fields with the @client directive\n ancestors.forEach(function (node) {\n if (isSingleASTNode(node) && isSelectionNode(node)) {\n matches_1.add(node);\n }\n });\n matches_1.add(spread);\n fragmentSelections.forEach(function (selection) {\n matches_1.add(selection);\n });\n }\n }\n });\n }\n return selectionsToResolveCache.get(definitionNode);\n }\n return collectByDefinition(mainDefinition);\n };\n return LocalState;\n}();\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/index.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n // @ts-expect-error this is just too generic to be typed correctly\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache,\n // The %1e15 allows the count to wrap around to 0 safely every\n // quadrillion evictions, so there's no risk of overflow. To be\n // clear, this is more of a pedantic principle than something\n // that matters in any conceivable practical scenario.\n (destructiveMethodCounts.get(cache) + 1) % 1e15);\n // @ts-expect-error this is just too generic to be typed correctly\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\n// A QueryInfo object represents a single query managed by the\n// QueryManager, which tracks all QueryInfo objects by queryId in its\n// this.queries Map. QueryInfo objects store the latest results and errors\n// for the given query, and are responsible for reporting those results to\n// the corresponding ObservableQuery, via the QueryInfo.notify method.\n// Results are reported asynchronously whenever setDiff marks the\n// QueryInfo object as dirty, though a call to the QueryManager's\n// broadcastQueries method may trigger the notification before it happens\n// automatically. This class used to be a simple interface type without\n// any field privacy or meaningful methods, which is why it still has so\n// many public fields. The effort to lock down and simplify the QueryInfo\n// interface is ongoing, and further improvements are welcome.\nvar QueryInfo = /** @class */function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) {\n queryId = queryManager.generateQueryId();\n }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = this.cache = queryManager.cache;\n // Track how often cache.evict is called, since we want eviction to\n // override the feud-stopping logic in the markResult method, by\n // causing shouldWrite to return true. Wrapping the cache.evict method\n // is a bit of a hack, but it saves us from having to make eviction\n // counting an official part of the ApolloCache API.\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables && this.networkStatus !== NetworkStatus.loading && !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.resetDiff = function () {\n this.lastDiff = void 0;\n };\n QueryInfo.prototype.getDiff = function () {\n var options = this.getDiffOptions();\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return {\n complete: false\n };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff = diff ? {\n diff: diff,\n options: options || this.getDiffOptions()\n } : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) {\n variables = this.variables;\n }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var _a;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n // If we do not tolerate partial results, skip this update to prevent it\n // from being reported. This prevents a situtuation where a query that\n // errors and another succeeds with overlapping data does not report the\n // partial data result to the errored query.\n //\n // See https://github.com/apollographql/apollo-client/issues/11400 for more\n // information on this issue.\n if (diff && !diff.complete && !((_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.returnPartialData) &&\n // In the case of a cache eviction, the diff will become partial so we\n // schedule a notification to send a network request (this.oqListener) to\n // go and fetch the missing data.\n !(oldDiff && oldDiff.complete)) {\n return;\n }\n this.updateLastDiff(diff);\n if (!this.dirty && !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () {\n return _this.notify();\n }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery) return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n // If this diff came from an optimistic transaction, deliver the\n // current cache data to the ObservableQuery, but don't perform a\n // reobservation, since oq.reobserveCacheFirst might make a network\n // request, and we never want to trigger network requests in the\n // middle of optimistic updates.\n oq[\"observe\"]();\n } else {\n // Otherwise, make the ObservableQuery \"reobserve\" the latest data\n // using a temporary fetch policy of \"cache-first\", so complete cache\n // results have a chance to be delivered without triggering additional\n // network requests, even when options.fetchPolicy is \"network-only\"\n // or \"cache-and-network\". All other fetch policies are preserved by\n // this method, and are handled by calling oq.reobserve(). If this\n // reobservation is spurious, isDifferentFromLastResult still has a\n // chance to catch it before delivery to ObservableQuery subscribers.\n reobserveCacheFirst(oq);\n }\n });\n } else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) {\n return listener(_this);\n });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) && this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" && fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n // Cancel the pending notify timeout\n this.reset();\n this.cancel();\n // Revert back to the no-op version of cancel inherited from\n // QueryInfo.prototype.\n this.cancel = QueryInfo.prototype.cancel;\n var oq = this.observableQuery;\n if (oq) oq.stopPolling();\n }\n };\n // This method is a no-op by default, until/unless overridden by the\n // updateWatch method.\n QueryInfo.prototype.cancel = function () {};\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) {\n variables = this.variables;\n }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), {\n watcher: this,\n callback: function (diff) {\n return _this.setDiff(diff);\n }\n });\n if (!this.lastWatch || !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n // If cache.evict has been called since the last time we wrote this\n // data into the cache, there's a chance writing this result into\n // the cache will repair what was evicted.\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) && equal(variables, lastWrite.variables) && equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var merger = new DeepMerger();\n var graphQLErrors = isNonEmptyArray(result.errors) ? result.errors.slice(0) : [];\n // Cancel the pending notify timeout (if it exists) to prevent extraneous network\n // requests. To allow future notify timeouts, diff and dirty are reset as well.\n this.reset();\n if (\"incremental\" in result && isNonEmptyArray(result.incremental)) {\n var mergedData = mergeIncrementalData(this.getDiff().result, result);\n result.data = mergedData;\n // Detect the first chunk of a deferred query and merge it with existing\n // cache data. This ensures a `cache-first` fetch policy that returns\n // partial cache data or a `cache-and-network` fetch policy that already\n // has full data in the cache does not complain when trying to merge the\n // initial deferred server data with existing cache data.\n } else if (\"hasNext\" in result && result.hasNext) {\n var diff = this.getDiff();\n result.data = merger.merge(diff.result, result.data);\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === \"no-cache\") {\n this.updateLastDiff({\n result: result.data,\n complete: true\n }, this.getDiffOptions(options.variables));\n } else if (cacheWriteBehavior !== 0 /* CacheWriteBehavior.FORBID */) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n // Using a transaction here so we have a chance to read the result\n // back from the cache before the watch callback fires as a result\n // of writeQuery, so we can store the new diff quietly and ignore\n // it when we receive it redundantly from the watch callback.\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1 /* CacheWriteBehavior.OVERWRITE */\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache)\n };\n } else {\n // If result is the same as the last result we received from\n // the network (and the variables match too), avoid writing\n // result into the cache again. The wisdom of skipping this\n // cache write is far from obvious, since any cache write\n // could be the one that puts the cache back into a desired\n // state, fixing corruption or missing data. However, if we\n // always write every network result into the cache, we enable\n // feuds between queries competing to update the same data in\n // incompatible ways, which can lead to an endless cycle of\n // cache broadcasts and useless network requests. As with any\n // feud, eventually one side must step back from the brink,\n // letting the other side(s) have the last word(s). There may\n // be other points where we could break this cycle, such as\n // silencing the broadcast for cache.writeQuery (not a good\n // idea, since it just delays the feud a bit) or somehow\n // avoiding the network request that just happened (also bad,\n // because the server could return useful new data). All\n // options considered, skipping this cache write seems to be\n // the least damaging place to break the cycle, because it\n // reflects the intuition that we recently wrote this exact\n // result into the cache, so the cache *should* already/still\n // contain this data. If some other query has clobbered that\n // data in the meantime, that's too bad, but there will be no\n // winners if every query blindly reverts to its own version\n // of the data. This approach also gives the network a chance\n // to return new data, which will be written into the cache as\n // usual, notifying only those queries that are directly\n // affected by the cache updates, as usual. In the future, an\n // even more sophisticated cache could perhaps prevent or\n // mitigate the clobbering somehow, but that would make this\n // particular cache write even less important, and thus\n // skipping it would be even safer than it is today.\n if (_this.lastDiff && _this.lastDiff.diff.complete) {\n // Reuse data from the last good (complete) diff that we\n // received, when possible.\n result.data = _this.lastDiff.diff.result;\n return;\n }\n // If the previous this.diff was incomplete, fall through to\n // re-reading the latest data with cache.diff, below.\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n // In case the QueryManager stops this QueryInfo before its\n // results are delivered, it's important to avoid restarting the\n // cache watch when markResult is called. We also avoid updating\n // the watch if we are writing a result that doesn't match the current\n // variables to avoid race conditions from broadcasting the wrong\n // result.\n if (!_this.stopped && equal(_this.variables, options.variables)) {\n // Any time we're about to update this.diff, we need to make\n // sure we've started watching the cache.\n _this.updateWatch(options.variables);\n }\n // If we're allowed to write to the cache, and we can read a\n // complete result from the cache, update result.data to be the\n // result from the cache, rather than the raw network result.\n // Set without setDiff to avoid triggering a notify call, since\n // we have other ways of notifying for this result.\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n } else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}();\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) {\n errorPolicy = \"none\";\n }\n var ignoreErrors = errorPolicy === \"ignore\" || errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from \"@wry/equality\";\nimport { execute } from \"../link/core/index.js\";\nimport { hasDirectives, isExecutionPatchIncrementalResult, isExecutionPatchResult, removeDirectivesFromDocument } from \"../utilities/index.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, getGraphQLErrorsFromResult, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, DocumentTransform } from \"../utilities/index.js\";\nimport { mergeIncrementalData } from \"../utilities/common/incrementalResult.js\";\nimport { ApolloError, isApolloError, graphQLResultHasProtocolErrors } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult } from \"./QueryInfo.js\";\nimport { PROTOCOL_ERRORS_SYMBOL } from \"../errors/index.js\";\nimport { print } from \"../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar IGNORE = Object.create(null);\nimport { Trie } from \"@wry/trie\";\nimport { AutoCleanedWeakCache, cacheSizes } from \"../utilities/index.js\";\nvar QueryManager = /** @class */function () {\n function QueryManager(_a) {\n var cache = _a.cache,\n link = _a.link,\n defaultOptions = _a.defaultOptions,\n documentTransform = _a.documentTransform,\n _b = _a.queryDeduplication,\n queryDeduplication = _b === void 0 ? false : _b,\n onBroadcast = _a.onBroadcast,\n _c = _a.ssrMode,\n ssrMode = _c === void 0 ? false : _c,\n _d = _a.clientAwareness,\n clientAwareness = _d === void 0 ? {} : _d,\n localState = _a.localState,\n _e = _a.assumeImmutableResults,\n assumeImmutableResults = _e === void 0 ? !!cache.assumeImmutableResults : _e,\n defaultContext = _a.defaultContext;\n var _this = this;\n this.clientAwareness = {};\n // All the queries that the QueryManager is currently managing (not\n // including mutations and subscriptions).\n this.queries = new Map();\n // Maps from queryId strings to Promise rejection functions for\n // currently active queries and fetches.\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.fetchCancelFns = new Map();\n this.transformCache = new AutoCleanedWeakCache(cacheSizes[\"queryManager.getDocumentInfo\"] || 2000 /* defaultCacheSizes[\"queryManager.getDocumentInfo\"] */);\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n // Use protected instead of private field so\n // @apollo/experimental-nextjs-app-support can access type info.\n this.inFlightLinkObservables = new Trie(false);\n var defaultDocumentTransform = new DocumentTransform(function (document) {\n return _this.cache.transformDocument(document);\n },\n // Allow the apollo cache to manage its own transform caches\n {\n cache: false\n });\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({\n cache: cache\n });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = assumeImmutableResults;\n this.documentTransform = documentTransform ? defaultDocumentTransform.concat(documentTransform)\n // The custom document transform may add new fragment spreads or new\n // field selections, so we want to give the cache a chance to run\n // again. For example, the InMemoryCache adds __typename to field\n // selections and fragments from the fragment registry.\n .concat(defaultDocumentTransform) : defaultDocumentTransform;\n this.defaultContext = defaultContext || Object.create(null);\n if (this.onBroadcast = onBroadcast) {\n this.mutationStore = Object.create(null);\n }\n }\n /**\n * Call this method to terminate any active query processes, making it safe\n * to dispose of this QueryManager instance.\n */\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(newInvariantError(25));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) {\n return cancel(error);\n });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n return __awaiter(this, arguments, void 0, function (_b) {\n var mutationId, hasClientExports, mutationStoreValue, isOptimistic, self;\n var _c, _d;\n var mutation = _b.mutation,\n variables = _b.variables,\n optimisticResponse = _b.optimisticResponse,\n updateQueries = _b.updateQueries,\n _e = _b.refetchQueries,\n refetchQueries = _e === void 0 ? [] : _e,\n _f = _b.awaitRefetchQueries,\n awaitRefetchQueries = _f === void 0 ? false : _f,\n updateWithProxyFn = _b.update,\n onQueryUpdated = _b.onQueryUpdated,\n _g = _b.fetchPolicy,\n fetchPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.fetchPolicy) || \"network-only\" : _g,\n _h = _b.errorPolicy,\n errorPolicy = _h === void 0 ? ((_d = this.defaultOptions.mutate) === null || _d === void 0 ? void 0 : _d.errorPolicy) || \"none\" : _h,\n keepRootFields = _b.keepRootFields,\n context = _b.context;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n invariant(mutation, 26);\n invariant(fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\", 27);\n mutationId = this.generateMutationId();\n mutation = this.cache.transformForLink(this.transform(mutation));\n hasClientExports = this.getDocumentInfo(mutation).hasClientExports;\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3 /*break*/, 2];\n return [4 /*yield*/, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = _j.sent();\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore && (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null\n });\n isOptimistic = optimisticResponse && this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields\n });\n this.broadcastQueries();\n self = this;\n return [2 /*return*/, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), {\n optimisticResponse: isOptimistic ? optimisticResponse : void 0\n }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === \"none\") {\n throw new ApolloError({\n graphQLErrors: getGraphQLErrorsFromResult(result)\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === \"ignore\" && graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: isOptimistic ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n // Since mutations might receive multiple payloads from the\n // ApolloLink chain (e.g. when used with @defer),\n // we resolve with a SingleExecutionResult or after the final\n // ExecutionPatchResult has arrived and we have assembled the\n // multipart response into a single result.\n if (!(\"hasNext\" in storeResult) || storeResult.hasNext === false) {\n resolve(storeResult);\n }\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (isOptimistic) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : new ApolloError({\n networkError: err\n }));\n }\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) {\n cache = this.cache;\n }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n if (!isExecutionPatchIncrementalResult(result)) {\n cacheWrites.push({\n result: result.data,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables\n });\n }\n if (isExecutionPatchIncrementalResult(result) && isNonEmptyArray(result.incremental)) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true\n });\n var mergedData = void 0;\n if (diff.result) {\n mergedData = mergeIncrementalData(diff.result, result);\n }\n if (typeof mergedData !== \"undefined\") {\n // cast the ExecutionPatchResult to FetchResult here since\n // ExecutionPatchResult never has `data` when returned from the server\n result.data = mergedData;\n cacheWrites.push({\n result: mergedData,\n dataId: \"ROOT_MUTATION\",\n query: mutation.document,\n variables: mutation.variables\n });\n }\n }\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId),\n document = _b.document,\n variables = _b.variables;\n // Read the current query result from the store.\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false\n }),\n currentQueryResult = _c.result,\n complete = _c.complete;\n if (complete && currentQueryResult) {\n // Run our reducer using the current query result and the mutation result.\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables\n });\n // Write the modified result back into the store if we got a new result.\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: \"ROOT_QUERY\",\n query: document,\n variables: variables\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 || (mutation.refetchQueries || \"\").length > 0 || mutation.update || mutation.onQueryUpdated || mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) {\n return cache.write(write);\n });\n }\n // If the mutation has some writes associated with it then we need to\n // apply those writes to the store by running this reducer again with\n // a write action.\n var update = mutation.update;\n // Determine whether result is a SingleExecutionResult,\n // or the final ExecutionPatchResult.\n var isFinalResult = !isExecutionPatchResult(result) || isExecutionPatchIncrementalResult(result) && !result.hasNext;\n if (update) {\n if (!skipCache) {\n // Re-read the ROOT_MUTATION data we just wrote into the cache\n // (the first cache.write call in the cacheWrites.forEach loop\n // above), so field read functions have a chance to run for\n // fields within mutation result objects.\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n // The cache complains if passed a mutation where it expects a\n // query, so we transform mutations and subscriptions to queries\n // (only once, thanks to this.transformCache).\n query: _this.getDocumentInfo(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true\n });\n if (diff.complete) {\n result = __assign(__assign({}, result), {\n data: diff.result\n });\n if (\"incremental\" in result) {\n delete result.incremental;\n }\n if (\"hasNext\" in result) {\n delete result.hasNext;\n }\n }\n }\n // If we've received the whole response,\n // either a SingleExecutionResult or the final ExecutionPatchResult,\n // call the update function.\n if (isFinalResult) {\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables\n });\n }\n }\n // TODO Do this with cache.evict({ id: 'ROOT_MUTATION' }) but make it\n // shallow to allow rolling back optimistic evictions.\n if (!skipCache && !mutation.keepRootFields && isFinalResult) {\n cache.modify({\n id: \"ROOT_MUTATION\",\n fields: function (value, _a) {\n var fieldName = _a.fieldName,\n DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n }\n });\n }\n },\n include: mutation.refetchQueries,\n // Write the final mutation.result to the root layer of the cache.\n optimistic: false,\n // Remove the corresponding optimistic layer at the same time as we\n // write the final non-optimistic result.\n removeOptimistic: mutation.removeOptimistic,\n // Let the caller of client.mutate optionally determine the refetching\n // behavior for watched queries after the mutation.update function runs.\n // If no onQueryUpdated function was provided for this mutation, pass\n // null instead of undefined to disable the default refetching behavior.\n onQueryUpdated: mutation.onQueryUpdated || null\n }).forEach(function (result) {\n return results_1.push(result);\n });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n // Returning a promise here makes the mutation await that promise, so we\n // include results in that promise's work if awaitRefetchQueries or an\n // onQueryUpdated function was specified.\n return Promise.all(results_1).then(function () {\n return result;\n });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\" ? optimisticResponse(mutation.variables, {\n IGNORE: IGNORE\n }) : optimisticResponse;\n if (data === IGNORE) {\n return false;\n }\n this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), {\n result: {\n data: data\n }\n }), cache);\n } catch (error) {\n globalThis.__DEV__ !== false && invariant.error(error);\n }\n }, mutation.mutationId);\n return true;\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchConcastWithInfo(queryId, options, networkStatus).concast.promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n return this.documentTransform.transformDocument(document);\n };\n QueryManager.prototype.getDocumentInfo = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var cacheEntry = {\n // TODO These three calls (hasClientExports, shouldForceResolvers, and\n // usesNonreactiveDirective) are performing independent full traversals\n // of the transformed document. We should consider merging these\n // traversals into a single pass in the future, though the work is\n // cached after the first time.\n hasClientExports: hasClientExports(document),\n hasForcedResolvers: this.localState.shouldForceResolvers(document),\n hasNonreactiveDirective: hasDirectives([\"nonreactive\"], document),\n clientQuery: this.localState.clientQuery(document),\n serverQuery: removeDirectivesFromDocument([{\n name: \"client\",\n remove: true\n }, {\n name: \"connection\"\n }, {\n name: \"nonreactive\"\n }], document),\n defaultVars: getDefaultValues(getOperationDefinition(document)),\n // Transform any mutation or subscription operations to query operations\n // so we can read/write them from/to the cache.\n asQuery: __assign(__assign({}, document), {\n definitions: document.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" && def.operation !== \"query\") {\n return __assign(__assign({}, def), {\n operation: \"query\"\n });\n }\n return def;\n })\n })\n };\n transformCache.set(document, cacheEntry);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.getDocumentInfo(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n var query = this.transform(options.query);\n // assign variable default values if supplied\n // NOTE: We don't modify options.query here with the transformed query to\n // ensure observable.options.query is set to the raw untransformed query.\n options = __assign(__assign({}, options), {\n variables: this.getVariables(query, options.variables)\n });\n if (typeof options.notifyOnNetworkStatusChange === \"undefined\") {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options\n });\n observable[\"lastQuery\"] = query;\n this.queries.set(observable.queryId, queryInfo);\n // We give queryInfo the transformed query to ensure the first cache diff\n // uses the transformed query instead of the raw query\n queryInfo.init({\n document: query,\n observableQuery: observable,\n variables: observable.variables\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) {\n queryId = this.generateQueryId();\n }\n invariant(options.query, 28);\n invariant(options.query.kind === \"Document\", 29);\n invariant(!options.returnPartialData, 30);\n invariant(!options.pollInterval, 31);\n return this.fetchQuery(queryId, __assign(__assign({}, options), {\n query: this.transform(options.query)\n })).finally(function () {\n return _this.stopQuery(queryId);\n });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) {\n options = {\n discardWatches: true\n };\n }\n // Before we have sent the reset action to the store, we can no longer\n // rely on the results returned by in-flight requests since these may\n // depend on values that previously existed in the data portion of the\n // store. So, we cancel the promises and observers that we have issued\n // so far and not yet resolved (in the case of queries).\n this.cancelPendingFetches(newInvariantError(32));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n // Set loading to true so listeners don't trigger unless they want\n // results with partial data.\n queryInfo.networkStatus = NetworkStatus.loading;\n } else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n // begin removing data from the store\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) {\n include = \"active\";\n }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n } else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc), false);\n } else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery,\n document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName,\n fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" || include === \"active\" && !oq.hasObservers()) {\n return;\n }\n if (include === \"active\" || queryName && queryNamesAndDocs.has(queryName) || document && queryNamesAndDocs.has(document)) {\n queries.set(queryId, oq);\n if (queryName) queryNamesAndDocs.set(queryName, true);\n if (document) queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n // We will be issuing a fresh network request for this query, so we\n // pre-allocate a new query ID here, using a special prefix to enable\n // cleaning up these temporary queries later, after fetching.\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), {\n fetchPolicy: \"network-only\"\n })\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (globalThis.__DEV__ !== false && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n globalThis.__DEV__ !== false && invariant.warn(typeof nameOrDoc === \"string\" ? 33 : 34, nameOrDoc);\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) {\n includeStandby = false;\n }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby || fetchPolicy !== \"standby\" && fetchPolicy !== \"cache-only\") {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query,\n fetchPolicy = _a.fetchPolicy,\n _b = _a.errorPolicy,\n errorPolicy = _b === void 0 ? \"none\" : _b,\n variables = _a.variables,\n _c = _a.context,\n context = _c === void 0 ? {} : _c;\n query = this.transform(query);\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== \"no-cache\") {\n // the subscription interface should handle not sending us results we no longer subscribe to.\n // XXX I don't think we ever send in an object with errors, but we might in the future...\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: \"ROOT_SUBSCRIPTION\",\n variables: variables\n });\n }\n _this.broadcastQueries();\n }\n var hasErrors = graphQLResultHasError(result);\n var hasProtocolErrors = graphQLResultHasProtocolErrors(result);\n if (hasErrors || hasProtocolErrors) {\n var errors = {};\n if (hasErrors) {\n errors.graphQLErrors = result.errors;\n }\n if (hasProtocolErrors) {\n errors.protocolErrors = result.extensions[PROTOCOL_ERRORS_SYMBOL];\n }\n // `errorPolicy` is a mechanism for handling GraphQL errors, according\n // to our documentation, so we throw protocol errors regardless of the\n // set error policy.\n if (errorPolicy === \"none\" || hasProtocolErrors) {\n throw new ApolloError(errors);\n }\n }\n if (errorPolicy === \"ignore\") {\n delete result.errors;\n }\n return result;\n });\n };\n if (this.getDocumentInfo(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) {\n return sub = observable.subscribe(observer);\n }, observer.error);\n return function () {\n return sub && sub.unsubscribe();\n };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n // teardown all links\n // Both `QueryManager.fetchRequest` and `QueryManager.query` create separate promises\n // that each add their reject functions to fetchCancelFns.\n // A query created with `QueryManager.query()` could trigger a `QueryManager.fetchRequest`.\n // The same queryId could have two rejection fns for two promises\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast) this.onBroadcast();\n this.queries.forEach(function (info) {\n return info.notify();\n });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables,\n // Prefer context.queryDeduplication if specified.\n deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) {\n deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication;\n }\n var observable;\n var _b = this.getDocumentInfo(query),\n serverQuery = _b.serverQuery,\n clientQuery = _b.clientQuery;\n if (serverQuery) {\n var _c = this,\n inFlightLinkObservables_1 = _c.inFlightLinkObservables,\n link = _c.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), {\n forceFetch: !deduplication\n }))\n };\n context = operation.context;\n if (deduplication) {\n var printedServerQuery_1 = print(serverQuery);\n var varJson_1 = canonicalStringify(variables);\n var entry = inFlightLinkObservables_1.lookup(printedServerQuery_1, varJson_1);\n observable = entry.observable;\n if (!observable) {\n var concast = new Concast([execute(link, operation)]);\n observable = entry.observable = concast;\n concast.beforeNext(function () {\n inFlightLinkObservables_1.remove(printedServerQuery_1, varJson_1);\n });\n }\n } else {\n observable = new Concast([execute(link, operation)]);\n }\n } else {\n observable = new Concast([Observable.of({\n data: {}\n })]);\n context = this.prepareContext(context);\n }\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n // Performing transformForLink here gives this.cache a chance to fill in\n // missing fragment definitions (for example) before sending this document\n // through the link chain.\n var linkDocument = this.cache.transformForLink(options.query);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = getGraphQLErrorsFromResult(result);\n var hasErrors = graphQLErrors.length > 0;\n // If we interrupted this request by calling getResultsFromLink again\n // with the same QueryInfo object, we ignore the old results.\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n // Throwing here effectively calls observer.error.\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors\n }));\n }\n // Use linkDocument rather than queryInfo.document so the\n // operation/fragments used to write the result are the same as the\n // ones used to obtain it from the link.\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError) ? networkError : new ApolloError({\n networkError: networkError\n });\n // Avoid storing errors from older interrupted queries.\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchConcastWithInfo = function (queryId, options,\n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus, query) {\n var _this = this;\n if (networkStatus === void 0) {\n networkStatus = NetworkStatus.loading;\n }\n if (query === void 0) {\n query = options.query;\n }\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy,\n fetchPolicy = _a === void 0 ? defaults && defaults.fetchPolicy || \"cache-first\" : _a,\n _b = options.errorPolicy,\n errorPolicy = _b === void 0 ? defaults && defaults.errorPolicy || \"none\" : _b,\n _c = options.returnPartialData,\n returnPartialData = _c === void 0 ? false : _c,\n _d = options.notifyOnNetworkStatusChange,\n notifyOnNetworkStatusChange = _d === void 0 ? false : _d,\n _e = options.context,\n context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context\n });\n var fromVariables = function (variables) {\n // Since normalized is always a fresh copy of options, it's safe to\n // modify its properties here, rather than creating yet another new\n // WatchQueryOptions object.\n normalized.variables = variables;\n var sourcesWithInfo = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (\n // If we're in standby, postpone advancing options.fetchPolicy using\n // applyNextFetchPolicy.\n normalized.fetchPolicy !== \"standby\" &&\n // The \"standby\" policy currently returns [] from fetchQueryByPolicy, so\n // this is another way to detect when nothing was done/fetched.\n sourcesWithInfo.sources.length > 0 && queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return sourcesWithInfo;\n };\n // This cancel function needs to be set before the concast is created,\n // in case concast creation synchronously cancels the request.\n var cleanupCancelFn = function () {\n return _this.fetchCancelFns.delete(queryId);\n };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n // This delay ensures the concast variable has been initialized.\n setTimeout(function () {\n return concast.cancel(reason);\n });\n });\n var concast, containsDataFromLink;\n // If the query has @export(as: ...) directives, then we need to\n // process those directives asynchronously. When there are no\n // @export directives (the common case), we deliberately avoid\n // wrapping the result of this.fetchQueryByPolicy in a Promise,\n // since the timing of result delivery is (unfortunately) important\n // for backwards compatibility. TODO This code could be simpler if\n // we deprecated and removed LocalState.\n if (this.getDocumentInfo(normalized.query).hasClientExports) {\n concast = new Concast(this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables).then(function (sourcesWithInfo) {\n return sourcesWithInfo.sources;\n }));\n // there is just no way we can synchronously get the *right* value here,\n // so we will assume `true`, which is the behaviour before the bug fix in\n // #10597. This means that bug is not fixed in that case, and is probably\n // un-fixable with reasonable effort for the edge case of @export as\n // directives.\n containsDataFromLink = true;\n } else {\n var sourcesWithInfo = fromVariables(normalized.variables);\n containsDataFromLink = sourcesWithInfo.fromLink;\n concast = new Concast(sourcesWithInfo.sources);\n }\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return {\n concast: concast,\n fromLink: containsDataFromLink\n };\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache,\n include = _a.include,\n _b = _a.optimistic,\n optimistic = _b === void 0 ? false : _b,\n _c = _a.removeOptimistic,\n removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c,\n onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff()\n });\n });\n }\n var results = new Map();\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n // Since you can perform any combination of cache reads and/or writes in\n // the cache.batch update function, its optimistic option can be either\n // a boolean or a string, representing three distinct modes of\n // operation:\n //\n // * false: read/write only the root layer\n // * true: read/write the topmost layer\n // * string: read/write a fresh optimistic layer with that ID string\n //\n // When typeof optimistic === \"string\", a new optimistic layer will be\n // temporarily created within cache.batch with that string as its ID. If\n // we then pass that same string as the removeOptimistic option, we can\n // make cache.batch immediately remove the optimistic layer after\n // running the updateCache function, triggering only one broadcast.\n //\n // However, the refetchQueries method accepts only true or false for its\n // optimistic option (not string). We interpret true to mean a temporary\n // optimistic layer should be created, to allow efficiently rolling back\n // the effect of the updateCache function, which involves passing a\n // string instead of true as the optimistic option to cache.batch, when\n // refetchQueries receives optimistic: true.\n //\n // In other words, we are deliberately not supporting the use case of\n // writing to an *existing* optimistic layer (using the refetchQueries\n // updateCache function), since that would potentially interfere with\n // other optimistic updates in progress. Instead, you can read/write\n // only the root layer by passing optimistic: false to refetchQueries,\n // or you can read/write a brand new optimistic layer that will be\n // automatically removed by passing optimistic: true.\n optimistic: optimistic && removeOptimistic || false,\n // The removeOptimistic option can also be provided by itself, even if\n // optimistic === false, to remove some previously-added optimistic\n // layer safely and efficiently, like we do in markMutationResult.\n //\n // If an explicit removeOptimistic string is provided with optimistic:\n // true, the removeOptimistic string will determine the ID of the\n // temporary optimistic layer, in case that ever matters.\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo && watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n // Since we're about to handle this query now, remove it from\n // includedQueriesById, in case it was added earlier because of\n // options.include.\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n // The onQueryUpdated function requested the default refetching\n // behavior by returning true.\n result = oq.refetch();\n }\n // Record the result in the results Map, as long as onQueryUpdated\n // did not return false to skip/ignore this result.\n if (result !== false) {\n results.set(oq, result);\n }\n // Allow the default cache broadcast to happen, except when\n // onQueryUpdated returns false.\n return result;\n }\n if (onQueryUpdated !== null) {\n // If we don't have an onQueryUpdated function, and onQueryUpdated\n // was not disabled by passing null, make sure this query is\n // \"included\" like any other options.include-specified query.\n includedQueriesById.set(oq.queryId, {\n oq: oq,\n lastDiff: lastDiff,\n diff: diff\n });\n }\n }\n }\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq,\n lastDiff = _a.lastDiff,\n diff = _a.diff;\n var result;\n // If onQueryUpdated is provided, we want to use it for all included\n // queries, even the QueryOptions ones.\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset(); // Force info.getDiff() to read from cache.\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n // Otherwise, we fall back to refetching.\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n // In case no updateCache callback was provided (so cache.batch was not\n // called above, and thus did not already remove the optimistic layer),\n // remove it here. Since this is a no-op when the layer has already been\n // removed, we do it even if we called cache.batch above, since it's\n // possible this.cache is an instance of some ApolloCache subclass other\n // than InMemoryCache, and does not fully support the removeOptimistic\n // option for cache.batch.\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a,\n // The initial networkStatus for this fetch, most often\n // NetworkStatus.loading, but also possibly fetchMore, poll, refetch,\n // or setVariables.\n networkStatus) {\n var _this = this;\n var query = _a.query,\n variables = _a.variables,\n fetchPolicy = _a.fetchPolicy,\n refetchWritePolicy = _a.refetchWritePolicy,\n errorPolicy = _a.errorPolicy,\n returnPartialData = _a.returnPartialData,\n context = _a.context,\n notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: query,\n variables: variables,\n networkStatus: networkStatus\n });\n var readCache = function () {\n return queryInfo.getDiff();\n };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) {\n networkStatus = queryInfo.networkStatus || NetworkStatus.loading;\n }\n var data = diff.result;\n if (globalThis.__DEV__ !== false && !returnPartialData && !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) {\n return Observable.of(__assign({\n data: data,\n loading: isNetworkRequestInFlight(networkStatus),\n networkStatus: networkStatus\n }, diff.complete ? null : {\n partial: true\n }));\n };\n if (data && _this.getDocumentInfo(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: {\n data: data\n },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true\n }).then(function (resolved) {\n return fromData(resolved.data || void 0);\n });\n }\n // Resolves https://github.com/apollographql/apollo-client/issues/10317.\n // If errorPolicy is 'none' and notifyOnNetworkStatusChange is true,\n // data was incorrectly returned from the cache on refetch:\n // if diff.missing exists, we should not return cache data.\n if (errorPolicy === \"none\" && networkStatus === NetworkStatus.refetch && Array.isArray(diff.missing)) {\n return fromData(void 0);\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 /* CacheWriteBehavior.FORBID */\n // Watched queries must opt into overwriting existing data on refetch,\n // by passing refetchWritePolicy: \"overwrite\" in their WatchQueryOptions.\n : networkStatus === NetworkStatus.refetch && refetchWritePolicy !== \"merge\" ? 1 /* CacheWriteBehavior.OVERWRITE */ : 2 /* CacheWriteBehavior.MERGE */;\n var resultsFromLink = function () {\n return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n query: query,\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy\n });\n };\n var shouldNotify = notifyOnNetworkStatusChange && typeof oldNetworkStatus === \"number\" && oldNetworkStatus !== networkStatus && isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\":\n {\n var diff = readCache();\n if (diff.complete) {\n return {\n fromLink: false,\n sources: [resultsFromCache(diff, queryInfo.markReady())]\n };\n }\n if (returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()]\n };\n }\n return {\n fromLink: true,\n sources: [resultsFromLink()]\n };\n }\n case \"cache-and-network\":\n {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(diff), resultsFromLink()]\n };\n }\n return {\n fromLink: true,\n sources: [resultsFromLink()]\n };\n }\n case \"cache-only\":\n return {\n fromLink: false,\n sources: [resultsFromCache(readCache(), queryInfo.markReady())]\n };\n case \"network-only\":\n if (shouldNotify) {\n return {\n fromLink: true,\n sources: [resultsFromCache(readCache()), resultsFromLink()]\n };\n }\n return {\n fromLink: true,\n sources: [resultsFromLink()]\n };\n case \"no-cache\":\n if (shouldNotify) {\n return {\n fromLink: true,\n // Note that queryInfo.getDiff() for no-cache queries does not call\n // cache.diff, but instead returns a { complete: false } stub result\n // when there is no queryInfo.diff already defined.\n sources: [resultsFromCache(queryInfo.getDiff()), resultsFromLink()]\n };\n }\n return {\n fromLink: true,\n sources: [resultsFromLink()]\n };\n case \"standby\":\n return {\n fromLink: false,\n sources: []\n };\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) {\n context = {};\n }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign(__assign({}, this.defaultContext), newContext), {\n clientAwareness: this.clientAwareness\n });\n };\n return QueryManager;\n}();\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","import { __assign } from \"tslib\";\nimport { invariant, newInvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\n// Though mergeOptions now resides in @apollo/client/utilities, it was\n// previously declared and exported from this module, and then reexported from\n// @apollo/client/core. Since we need to preserve that API anyway, the easiest\n// solution is to reexport mergeOptions where it was previously declared (here).\nimport { mergeOptions } from \"../utilities/index.js\";\nimport { getApolloClientMemoryInternals } from \"../utilities/caching/getMemoryInternals.js\";\nexport { mergeOptions };\n/**\n * This is the primary Apollo Client class. It is used to send GraphQL documents (i.e. queries\n * and mutations) to a GraphQL spec-compliant server over an `ApolloLink` instance,\n * receive results from the server and cache the results in a store. It also delivers updates\n * to GraphQL queries through `Observable` instances.\n */\nvar ApolloClient = /** @class */function () {\n /**\n * Constructs an instance of `ApolloClient`.\n *\n * @example\n * ```js\n * import { ApolloClient, InMemoryCache } from '@apollo/client';\n *\n * const cache = new InMemoryCache();\n *\n * const client = new ApolloClient({\n * // Provide required constructor fields\n * cache: cache,\n * uri: 'http://localhost:4000/',\n *\n * // Provide some optional constructor fields\n * name: 'react-web-client',\n * version: '1.3',\n * queryDeduplication: false,\n * defaultOptions: {\n * watchQuery: {\n * fetchPolicy: 'cache-and-network',\n * },\n * },\n * });\n * ```\n */\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n if (!options.cache) {\n throw newInvariantError(15);\n }\n var uri = options.uri,\n credentials = options.credentials,\n headers = options.headers,\n cache = options.cache,\n documentTransform = options.documentTransform,\n _a = options.ssrMode,\n ssrMode = _a === void 0 ? false : _a,\n _b = options.ssrForceFetchDelay,\n ssrForceFetchDelay = _b === void 0 ? 0 : _b,\n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n _c = options.connectToDevTools,\n // Expose the client instance as window.__APOLLO_CLIENT__ and call\n // onBroadcast in queryManager.broadcastQueries to enable browser\n // devtools, but disable them by default in production.\n connectToDevTools = _c === void 0 ? typeof window === \"object\" && !window.__APOLLO_CLIENT__ && globalThis.__DEV__ !== false : _c,\n _d = options.queryDeduplication,\n queryDeduplication = _d === void 0 ? true : _d,\n defaultOptions = options.defaultOptions,\n defaultContext = options.defaultContext,\n _e = options.assumeImmutableResults,\n assumeImmutableResults = _e === void 0 ? cache.assumeImmutableResults : _e,\n resolvers = options.resolvers,\n typeDefs = options.typeDefs,\n fragmentMatcher = options.fragmentMatcher,\n clientAwarenessName = options.name,\n clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri ? new HttpLink({\n uri: uri,\n credentials: credentials,\n headers: headers\n }) : ApolloLink.empty();\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () {\n return _this.disableNetworkFetches = false;\n }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.watchFragment = this.watchFragment.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n defaultContext: defaultContext,\n documentTransform: documentTransform,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {}\n },\n dataWithOptimisticResults: _this.cache.extract(true)\n });\n }\n } : void 0\n });\n if (connectToDevTools) this.connectToDevTools();\n }\n ApolloClient.prototype.connectToDevTools = function () {\n if (typeof window === \"object\") {\n var windowWithDevTools = window;\n var devtoolsSymbol = Symbol.for(\"apollo.devtools\");\n (windowWithDevTools[devtoolsSymbol] = windowWithDevTools[devtoolsSymbol] || []).push(this);\n windowWithDevTools.__APOLLO_CLIENT__ = this;\n }\n /**\n * Suggest installing the devtools for developers who don't have them\n */\n if (!hasSuggestedDevtools && globalThis.__DEV__ !== false) {\n hasSuggestedDevtools = true;\n setTimeout(function () {\n if (typeof window !== \"undefined\" && window.document && window.top === window.self && !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" + \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n } else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n globalThis.__DEV__ !== false && invariant.log(\"Download the Apollo DevTools for a better development \" + \"experience: %s\", url);\n }\n }\n }, 10000);\n }\n };\n Object.defineProperty(ApolloClient.prototype, \"documentTransform\", {\n /**\n * The `DocumentTransform` used to modify GraphQL documents before a request\n * is made. If a custom `DocumentTransform` is not provided, this will be the\n * default document transform.\n */\n get: function () {\n return this.queryManager.documentTransform;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Call this method to terminate any active client processes, making it safe\n * to dispose of this `ApolloClient` instance.\n */\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n /**\n * This watches the cache store of the query according to the options specified and\n * returns an `ObservableQuery`. We can subscribe to this `ObservableQuery` and\n * receive updated results through an observer when the cache store changes.\n *\n * Note that this method is not an implementation of GraphQL subscriptions. Rather,\n * it uses Apollo's store in order to reactively deliver updates to your query results.\n *\n * For example, suppose you call watchQuery on a GraphQL query that fetches a person's\n * first and last name and this person has a particular object identifier, provided by\n * dataIdFromObject. Later, a different query fetches that same person's\n * first and last name and the first name has now changed. Then, any observers associated\n * with the results of the first query will be updated with a new result object.\n *\n * Note that if the cache does not change, the subscriber will *not* be notified.\n *\n * See [here](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.3mb0cbcmc) for\n * a description of store reactivity.\n */\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n // XXX Overwriting options is probably not the best way to do this long term...\n if (this.disableNetworkFetches && (options.fetchPolicy === \"network-only\" || options.fetchPolicy === \"cache-and-network\")) {\n options = __assign(__assign({}, options), {\n fetchPolicy: \"cache-first\"\n });\n }\n return this.queryManager.watchQuery(options);\n };\n /**\n * This resolves a single query according to the options specified and\n * returns a `Promise` which is either resolved with the resulting data\n * or rejected with an error.\n *\n * @param options - An object of type `QueryOptions` that allows us to\n * describe how this query should be treated e.g. whether it should hit the\n * server at all or just resolve from the cache, etc.\n */\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n invariant(options.fetchPolicy !== \"cache-and-network\", 16);\n if (this.disableNetworkFetches && options.fetchPolicy === \"network-only\") {\n options = __assign(__assign({}, options), {\n fetchPolicy: \"cache-first\"\n });\n }\n return this.queryManager.query(options);\n };\n /**\n * This resolves a single mutation according to the options specified and returns a\n * Promise which is either resolved with the resulting data or rejected with an\n * error. In some cases both `data` and `errors` might be undefined, for example\n * when `errorPolicy` is set to `'ignore'`.\n *\n * It takes options as an object with the following keys and values:\n */\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n /**\n * This subscribes to a graphql subscription according to the options specified and returns an\n * `Observable` which either emits received data or an error.\n */\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL query without making a network request. This method will start at\n * the root query. To start at a specific id returned by `dataIdFromObject`\n * use `readFragment`.\n *\n * @param optimistic - Set to `true` to allow `readQuery` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) {\n optimistic = false;\n }\n return this.cache.readQuery(options, optimistic);\n };\n /**\n * Watches the cache store of the fragment according to the options specified\n * and returns an `Observable`. We can subscribe to this\n * `Observable` and receive updated results through an\n * observer when the cache store changes.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @since 3.10.0\n * @param options - An object of type `WatchFragmentOptions` that allows\n * the cache to identify the fragment and optionally specify whether to react\n * to optimistic updates.\n */\n ApolloClient.prototype.watchFragment = function (options) {\n return this.cache.watchFragment(options);\n };\n /**\n * Tries to read some data from the store in the shape of the provided\n * GraphQL fragment without making a network request. This method will read a\n * GraphQL fragment from any arbitrary id that is currently cached, unlike\n * `readQuery` which will only read from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are reading. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n *\n * @param optimistic - Set to `true` to allow `readFragment` to return\n * optimistic results. Is `false` by default.\n */\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) {\n optimistic = false;\n }\n return this.cache.readFragment(options, optimistic);\n };\n /**\n * Writes some data in the shape of the provided GraphQL query directly to\n * the store. This method will start at the root query. To start at a\n * specific id returned by `dataIdFromObject` then use `writeFragment`.\n */\n ApolloClient.prototype.writeQuery = function (options) {\n var ref = this.cache.writeQuery(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n /**\n * Writes some data in the shape of the provided GraphQL fragment directly to\n * the store. This method will write to a GraphQL fragment from any arbitrary\n * id that is currently cached, unlike `writeQuery` which will only write\n * from the root query.\n *\n * You must pass in a GraphQL document with a single fragment or a document\n * with multiple fragments that represent what you are writing. If you pass\n * in a document with multiple fragments then you must also specify a\n * `fragmentName`.\n */\n ApolloClient.prototype.writeFragment = function (options) {\n var ref = this.cache.writeFragment(options);\n if (options.broadcast !== false) {\n this.queryManager.broadcastQueries();\n }\n return ref;\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n /**\n * Resets your entire store by clearing out your cache and then re-executing\n * all of your active queries. This makes it so that you may guarantee that\n * there is no data left in your store from a time before you called this\n * method.\n *\n * `resetStore()` is useful when your user just logged out. You’ve removed the\n * user session, and you now want to make sure that any references to data you\n * might have fetched while the user session was active is gone.\n *\n * It is important to remember that `resetStore()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n return _this.queryManager.clearStore({\n discardWatches: false\n });\n }).then(function () {\n return Promise.all(_this.resetStoreCallbacks.map(function (fn) {\n return fn();\n }));\n }).then(function () {\n return _this.reFetchObservableQueries();\n });\n };\n /**\n * Remove all data from the store. Unlike `resetStore`, `clearStore` will\n * not refetch any active queries.\n */\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve().then(function () {\n return _this.queryManager.clearStore({\n discardWatches: true\n });\n }).then(function () {\n return Promise.all(_this.clearStoreCallbacks.map(function (fn) {\n return fn();\n }));\n });\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * reset. `onResetStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) {\n return c !== cb;\n });\n };\n };\n /**\n * Allows callbacks to be registered that are executed when the store is\n * cleared. `onClearStore` returns an unsubscribe function that can be used\n * to remove registered callbacks.\n */\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) {\n return c !== cb;\n });\n };\n };\n /**\n * Refetches all of your active queries.\n *\n * `reFetchObservableQueries()` is useful if you want to bring the client back to proper state in case of a network outage\n *\n * It is important to remember that `reFetchObservableQueries()` *will* refetch any active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n * Takes optional parameter `includeStandby` which will include queries in standby-mode when refetching.\n */\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n /**\n * Refetches specified active queries. Similar to \"reFetchObservableQueries()\" but with a specific list of queries.\n *\n * `refetchQueries()` is useful for use cases to imperatively refresh a selection of queries.\n *\n * It is important to remember that `refetchQueries()` *will* refetch specified active\n * queries. This means that any components that might be mounted will execute\n * their queries again using your network interface. If you do not want to\n * re-execute any queries then you should make sure to stop watching any\n * active queries.\n */\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n // In case you need the raw results immediately, without awaiting\n // Promise.all(results):\n result.queries = queries;\n result.results = results;\n // If you decide to ignore the result Promise because you're using\n // result.queries and result.results instead, you shouldn't have to worry\n // about preventing uncaught rejections for the Promise.all result.\n result.catch(function (error) {\n globalThis.__DEV__ !== false && invariant.debug(17, error);\n });\n return result;\n };\n /**\n * Get all currently active `ObservableQuery` objects, in a `Map` keyed by\n * query ID strings.\n *\n * An \"active\" query is one that has observers and a `fetchPolicy` other than\n * \"standby\" or \"cache-only\".\n *\n * You can include all `ObservableQuery` objects (including the inactive ones)\n * by passing \"all\" instead of \"active\", or you can include just a subset of\n * active queries by passing an array of query names or DocumentNode objects.\n */\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) {\n include = \"active\";\n }\n return this.queryManager.getObservableQueries(include);\n };\n /**\n * Exposes the cache's complete state, in a serializable format for later restoration.\n */\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n /**\n * Replaces existing state in the cache (if any) with the values expressed by\n * `serializedState`.\n *\n * Called when hydrating a cache (server side rendering, or offline storage),\n * and also (potentially) during hot reloads.\n */\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n /**\n * Add additional local resolvers.\n */\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n /**\n * Set (override existing) local resolvers.\n */\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n /**\n * Get all registered local resolvers.\n */\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n /**\n * Set a custom local state fragment matcher.\n */\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n /**\n * Define a new ApolloLink (or link chain) that Apollo Client will use.\n */\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n Object.defineProperty(ApolloClient.prototype, \"defaultContext\", {\n get: function () {\n return this.queryManager.defaultContext;\n },\n enumerable: false,\n configurable: true\n });\n return ApolloClient;\n}();\nexport { ApolloClient };\nif (globalThis.__DEV__ !== false) {\n ApolloClient.prototype.getMemoryInternals = getApolloClientMemoryInternals;\n}\n//# sourceMappingURL=ApolloClient.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { ApolloLink } from \"../core/index.js\";\nexport function onError(errorHandler) {\n return new ApolloLink(function (operation, forward) {\n return new Observable(function (observer) {\n var sub;\n var retriedSub;\n var retriedResult;\n try {\n sub = forward(operation).subscribe({\n next: function (result) {\n if (result.errors) {\n retriedResult = errorHandler({\n graphQLErrors: result.errors,\n response: result,\n operation: operation,\n forward: forward\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer)\n });\n return;\n }\n }\n observer.next(result);\n },\n error: function (networkError) {\n retriedResult = errorHandler({\n operation: operation,\n networkError: networkError,\n //Network errors can return GraphQL errors on for example a 403\n graphQLErrors: networkError && networkError.result && networkError.result.errors,\n forward: forward\n });\n if (retriedResult) {\n retriedSub = retriedResult.subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer)\n });\n return;\n }\n observer.error(networkError);\n },\n complete: function () {\n // disable the previous sub from calling complete on observable\n // if retry is in flight.\n if (!retriedResult) {\n observer.complete.bind(observer)();\n }\n }\n });\n } catch (e) {\n errorHandler({\n networkError: e,\n operation: operation,\n forward: forward\n });\n observer.error(e);\n }\n return function () {\n if (sub) sub.unsubscribe();\n if (retriedSub) sub.unsubscribe();\n };\n });\n });\n}\nvar ErrorLink = /** @class */function (_super) {\n __extends(ErrorLink, _super);\n function ErrorLink(errorHandler) {\n var _this = _super.call(this) || this;\n _this.link = onError(errorHandler);\n return _this;\n }\n ErrorLink.prototype.request = function (operation, forward) {\n return this.link.request(operation, forward);\n };\n return ErrorLink;\n}(ApolloLink);\nexport { ErrorLink };\n//# sourceMappingURL=index.js.map","import { __rest } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nexport function setContext(setter) {\n return new ApolloLink(function (operation, forward) {\n var request = __rest(operation, []);\n return new Observable(function (observer) {\n var handle;\n var closed = false;\n Promise.resolve(request).then(function (req) {\n return setter(req, operation.getContext());\n }).then(operation.setContext).then(function () {\n // if the observer is already closed, no need to subscribe.\n if (closed) return;\n handle = forward(operation).subscribe({\n next: observer.next.bind(observer),\n error: observer.error.bind(observer),\n complete: observer.complete.bind(observer)\n });\n }).catch(observer.error.bind(observer));\n return function () {\n closed = true;\n if (handle) handle.unsubscribe();\n };\n });\n });\n}\n//# sourceMappingURL=index.js.map","import { CacheLocation } from '@auth0/auth0-spa-js';\n\ndeclare global {\n interface Window {\n Cypress: any;\n }\n}\n\nexport const ORIGIN_URL_KEY = 'origin-url';\nconst path = window.location.pathname;\nif (path !== '/auth' && path !== '/') {\n window.localStorage.setItem(ORIGIN_URL_KEY, path);\n}\n\nlet redirect_uri = process.env.REACT_APP_AUTH_CALLBACK!;\nconst build_env = process.env.REACT_APP_BUILD_ENV!;\n\nif (['dev', 'int', 'prod'].includes(build_env)) {\n const envValue = process.env.REACT_APP_DEPLOYMENT_ENV_NAME;\n const deploymentQueryStringService = envValue ? `?ds=${envValue}` : '';\n redirect_uri = `https://${window.location.hostname}${deploymentQueryStringService}`;\n}\n\nlet cacheLocation: CacheLocation = `memory`;\n\nif (window.Cypress && process.env.REACT_APP_CYPRESS_ENABLE === 'true') {\n cacheLocation = `localstorage`;\n}\n\nexport const config = {\n domain: process.env.REACT_APP_AUTH_DOMAIN!,\n client_id: process.env.REACT_APP_AUTH_CLIENT_ID!,\n redirect_uri,\n audience: process.env.REACT_APP_API_AUTH_AUDIENCE!,\n cacheLocation,\n};\n","/* eslint-disable local-rules/disallow-side-effects */\n/**\n * Keep references on console methods to avoid triggering patched behaviors\n *\n * NB: in some setup, console could already be patched by another SDK.\n * In this case, some display messages can be sent by the other SDK\n * but we should be safe from infinite loop nonetheless.\n */\nexport var ConsoleApiName = {\n log: 'log',\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error'\n};\n/**\n * When building JS bundles, some users might use a plugin[1] or configuration[2] to remove\n * \"console.*\" references. This causes some issue as we expect `console.*` to be defined.\n * As a workaround, let's use a variable alias, so those expressions won't be taken into account by\n * simple static analysis.\n *\n * [1]: https://babeljs.io/docs/babel-plugin-transform-remove-console/\n * [2]: https://github.com/terser/terser#compress-options (look for drop_console)\n */\nexport var globalConsole = console;\nexport var originalConsoleMethods = {};\nObject.keys(ConsoleApiName).forEach(function (name) {\n originalConsoleMethods[name] = globalConsole[name];\n});\nvar PREFIX = 'Datadog Browser SDK:';\nexport var display = {\n debug: originalConsoleMethods.debug.bind(globalConsole, PREFIX),\n log: originalConsoleMethods.log.bind(globalConsole, PREFIX),\n info: originalConsoleMethods.info.bind(globalConsole, PREFIX),\n warn: originalConsoleMethods.warn.bind(globalConsole, PREFIX),\n error: originalConsoleMethods.error.bind(globalConsole, PREFIX)\n};\n//# sourceMappingURL=display.js.map","import { display } from './display';\nexport function catchUserErrors(fn, errorMsg) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n try {\n return fn.apply(void 0, args);\n } catch (err) {\n display.error(errorMsg, err);\n }\n };\n}\n//# sourceMappingURL=catchUserErrors.js.map","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};\nimport { display } from './display';\nvar onMonitorErrorCollected;\nvar debugMode = false;\nexport function startMonitorErrorCollection(newOnMonitorErrorCollected) {\n onMonitorErrorCollected = newOnMonitorErrorCollected;\n}\nexport function setDebugMode(newDebugMode) {\n debugMode = newDebugMode;\n}\nexport function resetMonitor() {\n onMonitorErrorCollected = undefined;\n debugMode = false;\n}\nexport function monitored(_, __, descriptor) {\n var originalMethod = descriptor.value;\n descriptor.value = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var decorated = onMonitorErrorCollected ? monitor(originalMethod) : originalMethod;\n return decorated.apply(this, args);\n };\n}\nexport function monitor(fn) {\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return callMonitored(fn, this, arguments);\n }; // consider output type has input type\n}\nexport function callMonitored(fn, context, args) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return fn.apply(context, args);\n } catch (e) {\n displayIfDebugEnabled(e);\n if (onMonitorErrorCollected) {\n try {\n onMonitorErrorCollected(e);\n } catch (e) {\n displayIfDebugEnabled(e);\n }\n }\n }\n}\nexport function displayIfDebugEnabled() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (debugMode) {\n display.error.apply(display, __spreadArray(['[MONITOR]'], args, false));\n }\n}\n//# sourceMappingURL=monitor.js.map","export function includes(candidate, search) {\n return candidate.indexOf(search) !== -1;\n}\nexport function arrayFrom(arrayLike) {\n if (Array.from) {\n return Array.from(arrayLike);\n }\n var array = [];\n if (arrayLike instanceof Set) {\n arrayLike.forEach(function (item) {\n return array.push(item);\n });\n } else {\n for (var i = 0; i < arrayLike.length; i++) {\n array.push(arrayLike[i]);\n }\n }\n return array;\n}\nexport function find(array, predicate) {\n for (var i = 0; i < array.length; i += 1) {\n var item = array[i];\n if (predicate(item, i)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findLast(array, predicate) {\n for (var i = array.length - 1; i >= 0; i -= 1) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n return undefined;\n}\nexport function forEach(list, callback) {\n Array.prototype.forEach.call(list, callback);\n}\nexport function objectValues(object) {\n return Object.keys(object).map(function (key) {\n return object[key];\n });\n}\nexport function objectEntries(object) {\n return Object.keys(object).map(function (key) {\n return [key, object[key]];\n });\n}\nexport function startsWith(candidate, search) {\n return candidate.slice(0, search.length) === search;\n}\nexport function endsWith(candidate, search) {\n return candidate.slice(-search.length) === search;\n}\nexport function assign(target) {\n var toAssign = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n toAssign[_i - 1] = arguments[_i];\n }\n toAssign.forEach(function (source) {\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n });\n return target;\n}\n//# sourceMappingURL=polyfills.js.map","/**\n * inspired by https://mathiasbynens.be/notes/globalthis\n */\nexport function getGlobalObject() {\n if (typeof globalThis === 'object') {\n return globalThis;\n }\n Object.defineProperty(Object.prototype, '_dd_temp_', {\n get: function () {\n return this;\n },\n configurable: true\n });\n // @ts-ignore _dd_temp is defined using defineProperty\n var globalObject = _dd_temp_;\n // @ts-ignore _dd_temp is defined using defineProperty\n delete Object.prototype._dd_temp_;\n if (typeof globalObject !== 'object') {\n // on safari _dd_temp_ is available on window but not globally\n // fallback on other browser globals check\n if (typeof self === 'object') {\n globalObject = self;\n } else if (typeof window === 'object') {\n globalObject = window;\n } else {\n globalObject = {};\n }\n }\n return globalObject;\n}\n//# sourceMappingURL=getGlobalObject.js.map","export var ONE_KIBI_BYTE = 1024;\nexport var ONE_MEBI_BYTE = 1024 * ONE_KIBI_BYTE;\n// eslint-disable-next-line no-control-regex\nvar HAS_MULTI_BYTES_CHARACTERS = /[^\\u0000-\\u007F]/;\nexport function computeBytesCount(candidate) {\n // Accurate bytes count computations can degrade performances when there is a lot of events to process\n if (!HAS_MULTI_BYTES_CHARACTERS.test(candidate)) {\n return candidate.length;\n }\n if (window.TextEncoder !== undefined) {\n return new TextEncoder().encode(candidate).length;\n }\n return new Blob([candidate]).size;\n}\nexport function concatBuffers(buffers) {\n var length = buffers.reduce(function (total, buffer) {\n return total + buffer.length;\n }, 0);\n var result = new Uint8Array(length);\n var offset = 0;\n for (var _i = 0, buffers_1 = buffers; _i < buffers_1.length; _i++) {\n var buffer = buffers_1[_i];\n result.set(buffer, offset);\n offset += buffer.length;\n }\n return result;\n}\n//# sourceMappingURL=byteUtils.js.map","import { getGlobalObject } from './getGlobalObject';\n/**\n * Gets the original value for a DOM API that was potentially patched by Zone.js.\n *\n * Zone.js[1] is a library that patches a bunch of JS and DOM APIs. It usually stores the original\n * value of the patched functions/constructors/methods in a hidden property prefixed by\n * __zone_symbol__.\n *\n * In multiple occasions, we observed that Zone.js is the culprit of important issues leading to\n * browser resource exhaustion (memory leak, high CPU usage). This method is used as a workaround to\n * use the original DOM API instead of the one patched by Zone.js.\n *\n * [1]: https://github.com/angular/angular/tree/main/packages/zone.js\n */\nexport function getZoneJsOriginalValue(target, name) {\n var browserWindow = getGlobalObject();\n var original;\n if (browserWindow.Zone && typeof browserWindow.Zone.__symbol__ === 'function') {\n original = target[browserWindow.Zone.__symbol__(name)];\n }\n if (!original) {\n original = target[name];\n }\n return original;\n}\n//# sourceMappingURL=getZoneJsOriginalValue.js.map","import { getZoneJsOriginalValue } from './getZoneJsOriginalValue';\nimport { monitor } from './monitor';\nimport { getGlobalObject } from './getGlobalObject';\nexport function setTimeout(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setTimeout')(monitor(callback), delay);\n}\nexport function clearTimeout(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearTimeout')(timeoutId);\n}\nexport function setInterval(callback, delay) {\n return getZoneJsOriginalValue(getGlobalObject(), 'setInterval')(monitor(callback), delay);\n}\nexport function clearInterval(timeoutId) {\n getZoneJsOriginalValue(getGlobalObject(), 'clearInterval')(timeoutId);\n}\n//# sourceMappingURL=timer.js.map","import { setTimeout, clearTimeout } from '../timer';\n// use lodash API\nexport function throttle(fn, wait, options) {\n var needLeadingExecution = options && options.leading !== undefined ? options.leading : true;\n var needTrailingExecution = options && options.trailing !== undefined ? options.trailing : true;\n var inWaitPeriod = false;\n var pendingExecutionWithParameters;\n var pendingTimeoutId;\n return {\n throttled: function () {\n var parameters = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n parameters[_i] = arguments[_i];\n }\n if (inWaitPeriod) {\n pendingExecutionWithParameters = parameters;\n return;\n }\n if (needLeadingExecution) {\n fn.apply(void 0, parameters);\n } else {\n pendingExecutionWithParameters = parameters;\n }\n inWaitPeriod = true;\n pendingTimeoutId = setTimeout(function () {\n if (needTrailingExecution && pendingExecutionWithParameters) {\n fn.apply(void 0, pendingExecutionWithParameters);\n }\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }, wait);\n },\n cancel: function () {\n clearTimeout(pendingTimeoutId);\n inWaitPeriod = false;\n pendingExecutionWithParameters = undefined;\n }\n };\n}\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n//# sourceMappingURL=functionUtils.js.map","import { noop } from '../utils/functionUtils';\n/**\n * Custom implementation of JSON.stringify that ignores some toJSON methods. We need to do that\n * because some sites badly override toJSON on certain objects. Removing all toJSON methods from\n * nested values would be too costly, so we just detach them from the root value, and native classes\n * used to build JSON values (Array and Object).\n *\n * Note: this still assumes that JSON.stringify is correct.\n */\nexport function jsonStringify(value, replacer, space) {\n if (typeof value !== 'object' || value === null) {\n return JSON.stringify(value);\n }\n // Note: The order matter here. We need to detach toJSON methods on parent classes before their\n // subclasses.\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n var restoreValuePrototypeToJson = detachToJsonMethod(Object.getPrototypeOf(value));\n var restoreValueToJson = detachToJsonMethod(value);\n try {\n return JSON.stringify(value, replacer, space);\n } catch (_a) {\n return '<error: unable to serialize object>';\n } finally {\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n restoreValuePrototypeToJson();\n restoreValueToJson();\n }\n}\nexport function detachToJsonMethod(value) {\n var object = value;\n var objectToJson = object.toJSON;\n if (objectToJson) {\n delete object.toJSON;\n return function () {\n object.toJSON = objectToJson;\n };\n }\n return noop;\n}\n//# sourceMappingURL=jsonStringify.js.map","import { assign } from './polyfills';\nexport function shallowClone(object) {\n return assign({}, object);\n}\nexport function objectHasValue(object, value) {\n return Object.keys(object).some(function (key) {\n return object[key] === value;\n });\n}\nexport function isEmptyObject(object) {\n return Object.keys(object).length === 0;\n}\nexport function mapValues(object, fn) {\n var newObject = {};\n for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) {\n var key = _a[_i];\n newObject[key] = fn(object[key]);\n }\n return newObject;\n}\n//# sourceMappingURL=objectUtils.js.map","import { ONE_KIBI_BYTE, computeBytesCount } from '../../tools/utils/byteUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { display } from '../../tools/display';\nimport { isEmptyObject } from '../../tools/utils/objectUtils';\n// RUM and logs batch bytes limit is 16KB\n// ensure that we leave room for other event attributes and maintain a decent amount of event per batch\n// (3KB (customer data) + 1KB (other attributes)) * 4 (events per batch) = 16KB\nexport var CUSTOMER_DATA_BYTES_LIMIT = 3 * ONE_KIBI_BYTE;\n// We observed that the compression ratio is around 8 in general, but we also want to keep a margin\n// because some data might not be compressed (ex: last view update on page exit). We chose 16KiB\n// because it is also the limit of the 'batchBytesCount' that we use for RUM and Logs data, but this\n// is a bit arbitrary.\nexport var CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT = 16 * ONE_KIBI_BYTE;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\nexport function createCustomerDataTrackerManager(compressionStatus) {\n if (compressionStatus === void 0) {\n compressionStatus = 2 /* CustomerDataCompressionStatus.Disabled */;\n }\n var customerDataTrackers = new Map();\n var alreadyWarned = false;\n function checkCustomerDataLimit(initialBytesCount) {\n if (initialBytesCount === void 0) {\n initialBytesCount = 0;\n }\n if (alreadyWarned || compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n return;\n }\n var bytesCountLimit = compressionStatus === 2 /* CustomerDataCompressionStatus.Disabled */ ? CUSTOMER_DATA_BYTES_LIMIT : CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT;\n var bytesCount = initialBytesCount;\n customerDataTrackers.forEach(function (tracker) {\n bytesCount += tracker.getBytesCount();\n });\n if (bytesCount > bytesCountLimit) {\n displayCustomerDataLimitReachedWarning(bytesCountLimit);\n alreadyWarned = true;\n }\n }\n return {\n /**\n * Creates a detached tracker. The manager will not store a reference to that tracker, and the\n * bytes count will be counted independently from other detached trackers.\n *\n * This is particularly useful when we don't know when the tracker will be unused, so we don't\n * leak memory (ex: when used in Logger instances).\n */\n createDetachedTracker: function () {\n var tracker = createCustomerDataTracker(function () {\n return checkCustomerDataLimit(tracker.getBytesCount());\n });\n return tracker;\n },\n /**\n * Creates a tracker if it doesn't exist, and returns it.\n */\n getOrCreateTracker: function (type) {\n if (!customerDataTrackers.has(type)) {\n customerDataTrackers.set(type, createCustomerDataTracker(checkCustomerDataLimit));\n }\n return customerDataTrackers.get(type);\n },\n setCompressionStatus: function (newCompressionStatus) {\n if (compressionStatus === 0 /* CustomerDataCompressionStatus.Unknown */) {\n compressionStatus = newCompressionStatus;\n checkCustomerDataLimit();\n }\n },\n getCompressionStatus: function () {\n return compressionStatus;\n },\n stop: function () {\n customerDataTrackers.forEach(function (tracker) {\n return tracker.stop();\n });\n customerDataTrackers.clear();\n }\n };\n}\nexport function createCustomerDataTracker(checkCustomerDataLimit) {\n var bytesCountCache = 0;\n // Throttle the bytes computation to minimize the impact on performance.\n // Especially useful if the user call context APIs synchronously multiple times in a row\n var _a = throttle(function (context) {\n bytesCountCache = computeBytesCount(jsonStringify(context));\n checkCustomerDataLimit();\n }, BYTES_COMPUTATION_THROTTLING_DELAY),\n computeBytesCountThrottled = _a.throttled,\n cancelComputeBytesCount = _a.cancel;\n var resetBytesCount = function () {\n cancelComputeBytesCount();\n bytesCountCache = 0;\n };\n return {\n updateCustomerData: function (context) {\n if (isEmptyObject(context)) {\n resetBytesCount();\n } else {\n computeBytesCountThrottled(context);\n }\n },\n resetCustomerData: resetBytesCount,\n getBytesCount: function () {\n return bytesCountCache;\n },\n stop: function () {\n cancelComputeBytesCount();\n }\n };\n}\nfunction displayCustomerDataLimitReachedWarning(bytesCountLimit) {\n display.warn(\"Customer data exceeds the recommended \".concat(bytesCountLimit / ONE_KIBI_BYTE, \"KiB threshold. More details: https://docs.datadoghq.com/real_user_monitoring/browser/troubleshooting/#customer-data-exceeds-the-recommended-threshold-warning\"));\n}\n//# sourceMappingURL=customerDataTracker.js.map","/**\n * Similar to `typeof`, but distinguish plain objects from `null` and arrays\n */\nexport function getType(value) {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=typeUtils.js.map","import { getType } from './utils/typeUtils';\n/**\n * Iterate over source and affect its sub values into destination, recursively.\n * If the source and destination can't be merged, return source.\n */\nexport function mergeInto(destination, source, circularReferenceChecker) {\n if (circularReferenceChecker === void 0) {\n circularReferenceChecker = createCircularReferenceChecker();\n }\n // ignore the source if it is undefined\n if (source === undefined) {\n return destination;\n }\n if (typeof source !== 'object' || source === null) {\n // primitive values - just return source\n return source;\n } else if (source instanceof Date) {\n return new Date(source.getTime());\n } else if (source instanceof RegExp) {\n var flags = source.flags ||\n // old browsers compatibility\n [source.global ? 'g' : '', source.ignoreCase ? 'i' : '', source.multiline ? 'm' : '', source.sticky ? 'y' : '', source.unicode ? 'u' : ''].join('');\n return new RegExp(source.source, flags);\n }\n if (circularReferenceChecker.hasAlreadyBeenSeen(source)) {\n // remove circular references\n return undefined;\n } else if (Array.isArray(source)) {\n var merged_1 = Array.isArray(destination) ? destination : [];\n for (var i = 0; i < source.length; ++i) {\n merged_1[i] = mergeInto(merged_1[i], source[i], circularReferenceChecker);\n }\n return merged_1;\n }\n var merged = getType(destination) === 'object' ? destination : {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n merged[key] = mergeInto(merged[key], source[key], circularReferenceChecker);\n }\n }\n return merged;\n}\n/**\n * A simplistic implementation of a deep clone algorithm.\n * Caveats:\n * - It doesn't maintain prototype chains - don't use with instances of custom classes.\n * - It doesn't handle Map and Set\n */\nexport function deepClone(value) {\n return mergeInto(undefined, value);\n}\nexport function combine() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n var destination;\n for (var _a = 0, sources_1 = sources; _a < sources_1.length; _a++) {\n var source = sources_1[_a];\n // Ignore any undefined or null sources.\n if (source === undefined || source === null) {\n continue;\n }\n destination = mergeInto(destination, source);\n }\n return destination;\n}\nfunction createCircularReferenceChecker() {\n if (typeof WeakSet !== 'undefined') {\n var set_1 = new WeakSet();\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = set_1.has(value);\n if (!has) {\n set_1.add(value);\n }\n return has;\n }\n };\n }\n var array = [];\n return {\n hasAlreadyBeenSeen: function (value) {\n var has = array.indexOf(value) >= 0;\n if (!has) {\n array.push(value);\n }\n return has;\n }\n };\n}\n//# sourceMappingURL=mergeInto.js.map","import { display } from '../display';\nimport { ONE_KIBI_BYTE } from '../utils/byteUtils';\nimport { detachToJsonMethod } from './jsonStringify';\n// The maximum size of a single event is 256KiB. By default, we ensure that user-provided data\n// going through sanitize fits inside our events, while leaving room for other contexts, metadata, ...\nvar SANITIZE_DEFAULT_MAX_CHARACTER_COUNT = 220 * ONE_KIBI_BYTE;\n// Symbol for the root element of the JSONPath used for visited objects\nvar JSON_PATH_ROOT_ELEMENT = '$';\n// When serializing (using JSON.stringify) a key of an object, { key: 42 } gets wrapped in quotes as \"key\".\n// With the separator (:), we need to add 3 characters to the count.\nvar KEY_DECORATION_LENGTH = 3;\nexport function sanitize(source, maxCharacterCount) {\n var _a;\n if (maxCharacterCount === void 0) {\n maxCharacterCount = SANITIZE_DEFAULT_MAX_CHARACTER_COUNT;\n }\n // Unbind any toJSON function we may have on [] or {} prototypes\n var restoreObjectPrototypeToJson = detachToJsonMethod(Object.prototype);\n var restoreArrayPrototypeToJson = detachToJsonMethod(Array.prototype);\n // Initial call to sanitizeProcessor - will populate containerQueue if source is an Array or a plain Object\n var containerQueue = [];\n var visitedObjectsWithPath = new WeakMap();\n var sanitizedData = sanitizeProcessor(source, JSON_PATH_ROOT_ELEMENT, undefined, containerQueue, visitedObjectsWithPath);\n var accumulatedCharacterCount = ((_a = JSON.stringify(sanitizedData)) === null || _a === void 0 ? void 0 : _a.length) || 0;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'discarded', source);\n return undefined;\n }\n while (containerQueue.length > 0 && accumulatedCharacterCount < maxCharacterCount) {\n var containerToProcess = containerQueue.shift();\n var separatorLength = 0; // 0 for the first element, 1 for subsequent elements\n // Arrays and Objects have to be handled distinctly to ensure\n // we do not pick up non-numerical properties from Arrays\n if (Array.isArray(containerToProcess.source)) {\n for (var key = 0; key < containerToProcess.source.length; key++) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length;\n } else {\n // When an element of an Array (targetData) is undefined, it is serialized as null:\n // JSON.stringify([undefined]) => '[null]' - This accounts for 4 characters\n accumulatedCharacterCount += 4;\n }\n accumulatedCharacterCount += separatorLength;\n separatorLength = 1;\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n } else {\n for (var key in containerToProcess.source) {\n if (Object.prototype.hasOwnProperty.call(containerToProcess.source, key)) {\n var targetData = sanitizeProcessor(containerToProcess.source[key], containerToProcess.path, key, containerQueue, visitedObjectsWithPath);\n // When a property of an object has an undefined value, it will be dropped during serialization:\n // JSON.stringify({a:undefined}) => '{}'\n if (targetData !== undefined) {\n accumulatedCharacterCount += JSON.stringify(targetData).length + separatorLength + key.length + KEY_DECORATION_LENGTH;\n separatorLength = 1;\n }\n if (accumulatedCharacterCount > maxCharacterCount) {\n warnOverCharacterLimit(maxCharacterCount, 'truncated', source);\n break;\n }\n ;\n containerToProcess.target[key] = targetData;\n }\n }\n }\n }\n // Rebind detached toJSON functions\n restoreObjectPrototypeToJson();\n restoreArrayPrototypeToJson();\n return sanitizedData;\n}\n/**\n * Internal function to factorize the process common to the\n * initial call to sanitize, and iterations for Arrays and Objects\n *\n */\nfunction sanitizeProcessor(source, parentPath, key, queue, visitedObjectsWithPath) {\n // Start by handling toJSON, as we want to sanitize its output\n var sourceToSanitize = tryToApplyToJSON(source);\n if (!sourceToSanitize || typeof sourceToSanitize !== 'object') {\n return sanitizePrimitivesAndFunctions(sourceToSanitize);\n }\n var sanitizedSource = sanitizeObjects(sourceToSanitize);\n if (sanitizedSource !== '[Object]' && sanitizedSource !== '[Array]' && sanitizedSource !== '[Error]') {\n return sanitizedSource;\n }\n // Handle potential cyclic references\n // We need to use source as sourceToSanitize could be a reference to a new object\n // At this stage, we know the source is an object type\n var sourceAsObject = source;\n if (visitedObjectsWithPath.has(sourceAsObject)) {\n return \"[Reference seen at \".concat(visitedObjectsWithPath.get(sourceAsObject), \"]\");\n }\n // Add processed source to queue\n var currentPath = key !== undefined ? \"\".concat(parentPath, \".\").concat(key) : parentPath;\n var target = Array.isArray(sourceToSanitize) ? [] : {};\n visitedObjectsWithPath.set(sourceAsObject, currentPath);\n queue.push({\n source: sourceToSanitize,\n target: target,\n path: currentPath\n });\n return target;\n}\n/**\n * Handles sanitization of simple, non-object types\n *\n */\nfunction sanitizePrimitivesAndFunctions(value) {\n // BigInt cannot be serialized by JSON.stringify(), convert it to a string representation\n if (typeof value === 'bigint') {\n return \"[BigInt] \".concat(value.toString());\n }\n // Functions cannot be serialized by JSON.stringify(). Moreover, if a faulty toJSON is present, it needs to be converted\n // so it won't prevent stringify from serializing later\n if (typeof value === 'function') {\n return \"[Function] \".concat(value.name || 'unknown');\n }\n // JSON.stringify() does not serialize symbols.\n if (typeof value === 'symbol') {\n return \"[Symbol] \".concat(value.description || value.toString());\n }\n return value;\n}\n/**\n * Handles sanitization of object types\n *\n * LIMITATIONS\n * - If a class defines a toStringTag Symbol, it will fall in the catch-all method and prevent enumeration of properties.\n * To avoid this, a toJSON method can be defined.\n * - IE11 does not return a distinct type for objects such as Map, WeakMap, ... These objects will pass through and their\n * properties enumerated if any.\n *\n */\nfunction sanitizeObjects(value) {\n try {\n // Handle events - Keep a simple implementation to avoid breaking changes\n if (value instanceof Event) {\n return {\n isTrusted: value.isTrusted\n };\n }\n // Handle all remaining object types in a generic way\n var result = Object.prototype.toString.call(value);\n var match = result.match(/\\[object (.*)\\]/);\n if (match && match[1]) {\n return \"[\".concat(match[1], \"]\");\n }\n } catch (_a) {\n // If the previous serialization attempts failed, and we cannot convert using\n // Object.prototype.toString, declare the value unserializable\n }\n return '[Unserializable]';\n}\n/**\n * Checks if a toJSON function exists and tries to execute it\n *\n */\nfunction tryToApplyToJSON(value) {\n var object = value;\n if (object && typeof object.toJSON === 'function') {\n try {\n return object.toJSON();\n } catch (_a) {\n // If toJSON fails, we continue by trying to serialize the value manually\n }\n }\n return value;\n}\n/**\n * Helper function to display the warning when the accumulated character count is over the limit\n */\nfunction warnOverCharacterLimit(maxCharacterCount, changeType, source) {\n display.warn(\"The data provided has been \".concat(changeType, \" as it is over the limit of \").concat(maxCharacterCount, \" characters:\"), source);\n}\n//# sourceMappingURL=sanitize.js.map","var Observable = /** @class */function () {\n function Observable(onFirstSubscribe) {\n this.onFirstSubscribe = onFirstSubscribe;\n this.observers = [];\n }\n Observable.prototype.subscribe = function (f) {\n var _this = this;\n if (!this.observers.length && this.onFirstSubscribe) {\n this.onLastUnsubscribe = this.onFirstSubscribe(this) || undefined;\n }\n this.observers.push(f);\n return {\n unsubscribe: function () {\n _this.observers = _this.observers.filter(function (other) {\n return f !== other;\n });\n if (!_this.observers.length && _this.onLastUnsubscribe) {\n _this.onLastUnsubscribe();\n }\n }\n };\n };\n Observable.prototype.notify = function (data) {\n this.observers.forEach(function (observer) {\n return observer(data);\n });\n };\n return Observable;\n}();\nexport { Observable };\nexport function mergeObservables() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return new Observable(function (globalObservable) {\n var subscriptions = observables.map(function (observable) {\n return observable.subscribe(function (data) {\n return globalObservable.notify(data);\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) {\n return subscription.unsubscribe();\n });\n };\n });\n}\n//# sourceMappingURL=observable.js.map","import { deepClone } from '../../tools/mergeInto';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { Observable } from '../../tools/observable';\nexport function createContextManager(customerDataTracker) {\n var context = {};\n var changeObservable = new Observable();\n var contextManager = {\n getContext: function () {\n return deepClone(context);\n },\n setContext: function (newContext) {\n if (getType(newContext) === 'object') {\n context = sanitize(newContext);\n customerDataTracker.updateCustomerData(context);\n } else {\n contextManager.clearContext();\n }\n changeObservable.notify();\n },\n setContextProperty: function (key, property) {\n context[key] = sanitize(property);\n customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n removeContextProperty: function (key) {\n delete context[key];\n customerDataTracker.updateCustomerData(context);\n changeObservable.notify();\n },\n clearContext: function () {\n context = {};\n customerDataTracker.resetCustomerData();\n changeObservable.notify();\n },\n changeObservable: changeObservable\n };\n return contextManager;\n}\n//# sourceMappingURL=contextManager.js.map","import { Observable } from '../tools/observable';\nexport var TrackingConsent = {\n GRANTED: 'granted',\n NOT_GRANTED: 'not-granted'\n};\nexport function createTrackingConsentState(currentConsent) {\n var observable = new Observable();\n return {\n tryToInit: function (trackingConsent) {\n if (!currentConsent) {\n currentConsent = trackingConsent;\n }\n },\n update: function (trackingConsent) {\n currentConsent = trackingConsent;\n observable.notify();\n },\n isGranted: function () {\n return currentConsent === TrackingConsent.GRANTED;\n },\n observable: observable\n };\n}\n//# sourceMappingURL=trackingConsent.js.map","/**\n * LIMITATION:\n * For NPM setup, this feature flag singleton is shared between RUM and Logs product.\n * This means that an experimental flag set on the RUM product will be set on the Logs product.\n * So keep in mind that in certain configurations, your experimental feature flag may affect other products.\n *\n * FORMAT:\n * All feature flags should be snake_cased\n */\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected feature flag\n// eslint-disable-next-line no-restricted-syntax\nexport var ExperimentalFeature;\n(function (ExperimentalFeature) {\n ExperimentalFeature[\"PAGEHIDE\"] = \"pagehide\";\n ExperimentalFeature[\"RESOURCE_PAGE_STATES\"] = \"resource_page_states\";\n ExperimentalFeature[\"COLLECT_FLUSH_REASON\"] = \"collect_flush_reason\";\n ExperimentalFeature[\"ZERO_LCP_TELEMETRY\"] = \"zero_lcp_telemetry\";\n ExperimentalFeature[\"DISABLE_REPLAY_INLINE_CSS\"] = \"disable_replay_inline_css\";\n ExperimentalFeature[\"WRITABLE_RESOURCE_GRAPHQL\"] = \"writable_resource_graphql\";\n ExperimentalFeature[\"CUSTOM_VITALS\"] = \"custom_vitals\";\n ExperimentalFeature[\"TOLERANT_RESOURCE_TIMINGS\"] = \"tolerant_resource_timings\";\n})(ExperimentalFeature || (ExperimentalFeature = {}));\nvar enabledExperimentalFeatures = new Set();\nexport function addExperimentalFeatures(enabledFeatures) {\n enabledFeatures.forEach(function (flag) {\n enabledExperimentalFeatures.add(flag);\n });\n}\nexport function isExperimentalFeatureEnabled(featureName) {\n return enabledExperimentalFeatures.has(featureName);\n}\nexport function resetExperimentalFeatures() {\n enabledExperimentalFeatures.clear();\n}\nexport function getExperimentalFeatures() {\n return enabledExperimentalFeatures;\n}\n//# sourceMappingURL=experimentalFeatures.js.map","/**\n * Return true if the draw is successful\n * @param threshold between 0 and 100\n */\nexport function performDraw(threshold) {\n return threshold !== 0 && Math.random() * 100 <= threshold;\n}\nexport function round(num, decimals) {\n return +num.toFixed(decimals);\n}\nexport function isPercentage(value) {\n return isNumber(value) && value >= 0 && value <= 100;\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\n//# sourceMappingURL=numberUtils.js.map","import { isNumber, round } from './numberUtils';\nexport var ONE_SECOND = 1000;\nexport var ONE_MINUTE = 60 * ONE_SECOND;\nexport var ONE_HOUR = 60 * ONE_MINUTE;\nexport var ONE_DAY = 24 * ONE_HOUR;\nexport var ONE_YEAR = 365 * ONE_DAY;\nexport function relativeToClocks(relative) {\n return {\n relative: relative,\n timeStamp: getCorrectedTimeStamp(relative)\n };\n}\nexport function timeStampToClocks(timeStamp) {\n return {\n relative: getRelativeTime(timeStamp),\n timeStamp: timeStamp\n };\n}\nfunction getCorrectedTimeStamp(relativeTime) {\n var correctedOrigin = dateNow() - performance.now();\n // apply correction only for positive drift\n if (correctedOrigin > getNavigationStart()) {\n return Math.round(addDuration(correctedOrigin, relativeTime));\n }\n return getTimeStamp(relativeTime);\n}\nexport function currentDrift() {\n return Math.round(dateNow() - addDuration(getNavigationStart(), performance.now()));\n}\nexport function toServerDuration(duration) {\n if (!isNumber(duration)) {\n return duration;\n }\n return round(duration * 1e6, 0);\n}\nexport function dateNow() {\n // Do not use `Date.now` because sometimes websites are wrongly \"polyfilling\" it. For example, we\n // had some users using a very old version of `datejs`, which patched `Date.now` to return a Date\n // instance instead of a timestamp[1]. Those users are unlikely to fix this, so let's handle this\n // case ourselves.\n // [1]: https://github.com/datejs/Datejs/blob/97f5c7c58c5bc5accdab8aa7602b6ac56462d778/src/core-debug.js#L14-L16\n return new Date().getTime();\n}\nexport function timeStampNow() {\n return dateNow();\n}\nexport function relativeNow() {\n return performance.now();\n}\nexport function clocksNow() {\n return {\n relative: relativeNow(),\n timeStamp: timeStampNow()\n };\n}\nexport function clocksOrigin() {\n return {\n relative: 0,\n timeStamp: getNavigationStart()\n };\n}\nexport function elapsed(start, end) {\n return end - start;\n}\nexport function addDuration(a, b) {\n return a + b;\n}\n/**\n * Get the time since the navigation was started.\n *\n * Note: this does not use `performance.timeOrigin` because it doesn't seem to reflect the actual\n * time on which the navigation has started: it may be much farther in the past, at least in Firefox 71.\n * Related issue in Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=1429926\n */\nexport function getRelativeTime(timestamp) {\n return timestamp - getNavigationStart();\n}\nexport function getTimeStamp(relativeTime) {\n return Math.round(addDuration(getNavigationStart(), relativeTime));\n}\nexport function looksLikeRelativeTime(time) {\n return time < ONE_YEAR;\n}\n/**\n * Navigation start slightly change on some rare cases\n */\nvar navigationStart;\nfunction getNavigationStart() {\n if (navigationStart === undefined) {\n navigationStart = performance.timing.navigationStart;\n }\n return navigationStart;\n}\nexport function resetNavigationStart() {\n navigationStart = undefined;\n}\n//# sourceMappingURL=timeUtils.js.map","import { monitor } from '../tools/monitor';\nimport { getZoneJsOriginalValue } from '../tools/getZoneJsOriginalValue';\n// We want to use a real enum (i.e. not a const enum) here, to be able to iterate over it to automatically add _ddIsTrusted in e2e tests\n// eslint-disable-next-line no-restricted-syntax\nexport var DOM_EVENT;\n(function (DOM_EVENT) {\n DOM_EVENT[\"BEFORE_UNLOAD\"] = \"beforeunload\";\n DOM_EVENT[\"CLICK\"] = \"click\";\n DOM_EVENT[\"DBL_CLICK\"] = \"dblclick\";\n DOM_EVENT[\"KEY_DOWN\"] = \"keydown\";\n DOM_EVENT[\"LOAD\"] = \"load\";\n DOM_EVENT[\"POP_STATE\"] = \"popstate\";\n DOM_EVENT[\"SCROLL\"] = \"scroll\";\n DOM_EVENT[\"TOUCH_START\"] = \"touchstart\";\n DOM_EVENT[\"TOUCH_END\"] = \"touchend\";\n DOM_EVENT[\"TOUCH_MOVE\"] = \"touchmove\";\n DOM_EVENT[\"VISIBILITY_CHANGE\"] = \"visibilitychange\";\n DOM_EVENT[\"PAGE_SHOW\"] = \"pageshow\";\n DOM_EVENT[\"FREEZE\"] = \"freeze\";\n DOM_EVENT[\"RESUME\"] = \"resume\";\n DOM_EVENT[\"DOM_CONTENT_LOADED\"] = \"DOMContentLoaded\";\n DOM_EVENT[\"POINTER_DOWN\"] = \"pointerdown\";\n DOM_EVENT[\"POINTER_UP\"] = \"pointerup\";\n DOM_EVENT[\"POINTER_CANCEL\"] = \"pointercancel\";\n DOM_EVENT[\"HASH_CHANGE\"] = \"hashchange\";\n DOM_EVENT[\"PAGE_HIDE\"] = \"pagehide\";\n DOM_EVENT[\"MOUSE_DOWN\"] = \"mousedown\";\n DOM_EVENT[\"MOUSE_UP\"] = \"mouseup\";\n DOM_EVENT[\"MOUSE_MOVE\"] = \"mousemove\";\n DOM_EVENT[\"FOCUS\"] = \"focus\";\n DOM_EVENT[\"BLUR\"] = \"blur\";\n DOM_EVENT[\"CONTEXT_MENU\"] = \"contextmenu\";\n DOM_EVENT[\"RESIZE\"] = \"resize\";\n DOM_EVENT[\"CHANGE\"] = \"change\";\n DOM_EVENT[\"INPUT\"] = \"input\";\n DOM_EVENT[\"PLAY\"] = \"play\";\n DOM_EVENT[\"PAUSE\"] = \"pause\";\n DOM_EVENT[\"SECURITY_POLICY_VIOLATION\"] = \"securitypolicyviolation\";\n DOM_EVENT[\"SELECTION_CHANGE\"] = \"selectionchange\";\n DOM_EVENT[\"STORAGE\"] = \"storage\";\n})(DOM_EVENT || (DOM_EVENT = {}));\n/**\n * Add an event listener to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n */\nexport function addEventListener(configuration, eventTarget, eventName, listener, options) {\n return addEventListeners(configuration, eventTarget, [eventName], listener, options);\n}\n/**\n * Add event listeners to an event target object (Window, Element, mock object...). This provides\n * a few conveniences compared to using `element.addEventListener` directly:\n *\n * * supports IE11 by: using an option object only if needed and emulating the `once` option\n *\n * * wraps the listener with a `monitor` function\n *\n * * returns a `stop` function to remove the listener\n *\n * * with `once: true`, the listener will be called at most once, even if different events are listened\n */\nexport function addEventListeners(configuration, eventTarget, eventNames, listener, _a) {\n var _b = _a === void 0 ? {} : _a,\n once = _b.once,\n capture = _b.capture,\n passive = _b.passive;\n var listenerWithMonitor = monitor(function (event) {\n if (!event.isTrusted && !event.__ddIsTrusted && !configuration.allowUntrustedEvents) {\n return;\n }\n if (once) {\n stop();\n }\n listener(event);\n });\n var options = passive ? {\n capture: capture,\n passive: passive\n } : capture;\n var add = getZoneJsOriginalValue(eventTarget, 'addEventListener');\n eventNames.forEach(function (eventName) {\n return add.call(eventTarget, eventName, listenerWithMonitor, options);\n });\n function stop() {\n var remove = getZoneJsOriginalValue(eventTarget, 'removeEventListener');\n eventNames.forEach(function (eventName) {\n return remove.call(eventTarget, eventName, listenerWithMonitor, options);\n });\n }\n return {\n stop: stop\n };\n}\n//# sourceMappingURL=addEventListener.js.map","import { addEventListener, DOM_EVENT } from '../../browser/addEventListener';\nimport { combine } from '../../tools/mergeInto';\nvar CONTEXT_STORE_KEY_PREFIX = '_dd_c';\nvar storageListeners = [];\nexport function storeContextManager(configuration, contextManager, productKey, customerDataType) {\n var storageKey = buildStorageKey(productKey, customerDataType);\n storageListeners.push(addEventListener(configuration, window, DOM_EVENT.STORAGE, function (_a) {\n var key = _a.key;\n if (storageKey === key) {\n synchronizeWithStorage();\n }\n }));\n contextManager.changeObservable.subscribe(dumpToStorage);\n contextManager.setContext(combine(getFromStorage(), contextManager.getContext()));\n function synchronizeWithStorage() {\n contextManager.setContext(getFromStorage());\n }\n function dumpToStorage() {\n localStorage.setItem(storageKey, JSON.stringify(contextManager.getContext()));\n }\n function getFromStorage() {\n var rawContext = localStorage.getItem(storageKey);\n return rawContext !== null ? JSON.parse(rawContext) : {};\n }\n}\nexport function buildStorageKey(productKey, customerDataType) {\n return \"\".concat(CONTEXT_STORE_KEY_PREFIX, \"_\").concat(productKey, \"_\").concat(customerDataType);\n}\nexport function removeStorageListeners() {\n storageListeners.map(function (listener) {\n return listener.stop();\n });\n}\n//# sourceMappingURL=storeContextManager.js.map","import { computeBytesCount } from './utils/byteUtils';\nexport function createIdentityEncoder() {\n var output = '';\n var outputBytesCount = 0;\n return {\n isAsync: false,\n get isEmpty() {\n return !output;\n },\n write: function (data, callback) {\n var additionalEncodedBytesCount = computeBytesCount(data);\n outputBytesCount += additionalEncodedBytesCount;\n output += data;\n if (callback) {\n callback(additionalEncodedBytesCount);\n }\n },\n finish: function (callback) {\n callback(this.finishSync());\n },\n finishSync: function () {\n var result = {\n output: output,\n outputBytesCount: outputBytesCount,\n rawBytesCount: outputBytesCount,\n pendingData: ''\n };\n output = '';\n outputBytesCount = 0;\n return result;\n },\n estimateEncodedBytesCount: function (data) {\n return data.length;\n }\n };\n}\n//# sourceMappingURL=encoder.js.map","/**\n * Cross-browser stack trace computation.\n *\n * Reference implementation: https://github.com/csnover/TraceKit/blob/04530298073c3823de72deb0b97e7b38ca7bcb59/tracekit.js\n */\nimport { startsWith } from '../utils/polyfills';\nvar UNKNOWN_FUNCTION = '?';\nexport function computeStackTrace(ex) {\n var stack = [];\n var stackProperty = tryToGetString(ex, 'stack');\n var exString = String(ex);\n if (stackProperty && startsWith(stackProperty, exString)) {\n stackProperty = stackProperty.slice(exString.length);\n }\n if (stackProperty) {\n stackProperty.split('\\n').forEach(function (line) {\n var stackFrame = parseChromeLine(line) || parseChromeAnonymousLine(line) || parseWinLine(line) || parseGeckoLine(line);\n if (stackFrame) {\n if (!stackFrame.func && stackFrame.line) {\n stackFrame.func = UNKNOWN_FUNCTION;\n }\n stack.push(stackFrame);\n }\n });\n }\n return {\n message: tryToGetString(ex, 'message'),\n name: tryToGetString(ex, 'name'),\n stack: stack\n };\n}\nvar fileUrl = '((?:file|https?|blob|chrome-extension|native|eval|webpack|snippet|<anonymous>|\\\\w+\\\\.|\\\\/).*?)';\nvar filePosition = '(?::(\\\\d+))';\nvar CHROME_LINE_RE = new RegExp(\"^\\\\s*at (.*?) ?\\\\(\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"?\\\\)?\\\\s*$\"), 'i');\nvar CHROME_EVAL_RE = new RegExp(\"\\\\((\\\\S*)\".concat(filePosition).concat(filePosition, \"\\\\)\"));\nfunction parseChromeLine(line) {\n var parts = CHROME_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n var submatch = CHROME_EVAL_RE.exec(parts[2]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n return {\n args: isNative ? [parts[2]] : [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[3] ? +parts[3] : undefined,\n url: !isNative ? parts[2] : undefined\n };\n}\nvar CHROME_ANONYMOUS_FUNCTION_RE = new RegExp(\"^\\\\s*at ?\".concat(fileUrl).concat(filePosition, \"?\").concat(filePosition, \"??\\\\s*$\"), 'i');\nfunction parseChromeAnonymousLine(line) {\n var parts = CHROME_ANONYMOUS_FUNCTION_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[3] ? +parts[3] : undefined,\n func: UNKNOWN_FUNCTION,\n line: parts[2] ? +parts[2] : undefined,\n url: parts[1]\n };\n}\nvar WINJS_LINE_RE = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nfunction parseWinLine(line) {\n var parts = WINJS_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n return {\n args: [],\n column: parts[4] ? +parts[4] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: +parts[3],\n url: parts[2]\n };\n}\nvar GECKO_LINE_RE = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|capacitor|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar GECKO_EVAL_RE = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nfunction parseGeckoLine(line) {\n var parts = GECKO_LINE_RE.exec(line);\n if (!parts) {\n return;\n }\n var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n var submatch = GECKO_EVAL_RE.exec(parts[3]);\n if (isEval && submatch) {\n // throw out eval line/column and use top-most line number\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = undefined; // no column when eval\n }\n return {\n args: parts[2] ? parts[2].split(',') : [],\n column: parts[5] ? +parts[5] : undefined,\n func: parts[1] || UNKNOWN_FUNCTION,\n line: parts[4] ? +parts[4] : undefined,\n url: parts[3]\n };\n}\nfunction tryToGetString(candidate, property) {\n if (typeof candidate !== 'object' || !candidate || !(property in candidate)) {\n return undefined;\n }\n var value = candidate[property];\n return typeof value === 'string' ? value : undefined;\n}\nexport function computeStackTraceFromOnErrorMessage(messageObj, url, line, column) {\n var stack = [{\n url: url,\n column: column,\n line: line\n }];\n var _a = tryToParseMessage(messageObj),\n name = _a.name,\n message = _a.message;\n return {\n name: name,\n message: message,\n stack: stack\n };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\nvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?([\\s\\S]*)$/;\nfunction tryToParseMessage(messageObj) {\n var _a;\n var name;\n var message;\n if ({}.toString.call(messageObj) === '[object String]') {\n ;\n _a = ERROR_TYPES_RE.exec(messageObj), name = _a[1], message = _a[2];\n }\n return {\n name: name,\n message: message\n };\n}\n//# sourceMappingURL=computeStackTrace.js.map","import { callMonitored } from '../monitor';\nimport { noop } from '../utils/functionUtils';\nimport { computeStackTrace } from './computeStackTrace';\n/**\n * Creates a stacktrace without SDK internal frames.\n * Constraints:\n * - Has to be called at the utmost position of the call stack.\n * - No monitored function should encapsulate it, that is why we need to use callMonitored inside it.\n */\nexport function createHandlingStack() {\n /**\n * Skip the two internal frames:\n * - SDK API (console.error, ...)\n * - this function\n * in order to keep only the user calls\n */\n var internalFramesToSkip = 2;\n var error = new Error();\n var formattedStack;\n // IE needs to throw the error to fill in the stack trace\n if (!error.stack) {\n try {\n throw error;\n } catch (e) {\n noop();\n }\n }\n callMonitored(function () {\n var stackTrace = computeStackTrace(error);\n stackTrace.stack = stackTrace.stack.slice(internalFramesToSkip);\n formattedStack = toStackTraceString(stackTrace);\n });\n return formattedStack;\n}\nexport function toStackTraceString(stack) {\n var result = formatErrorMessage(stack);\n stack.stack.forEach(function (frame) {\n var func = frame.func === '?' ? '<anonymous>' : frame.func;\n var args = frame.args && frame.args.length > 0 ? \"(\".concat(frame.args.join(', '), \")\") : '';\n var line = frame.line ? \":\".concat(frame.line) : '';\n var column = frame.line && frame.column ? \":\".concat(frame.column) : '';\n result += \"\\n at \".concat(func).concat(args, \" @ \").concat(frame.url).concat(line).concat(column);\n });\n return result;\n}\nexport function formatErrorMessage(stack) {\n return \"\".concat(stack.name || 'Error', \": \").concat(stack.message);\n}\n//# sourceMappingURL=handlingStack.js.map","import { sanitize } from '../../tools/serialisation/sanitize';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nexport var NO_ERROR_STACK_PRESENT_MESSAGE = 'No stack, consider using an instance of Error';\nexport function computeRawError(_a) {\n var stackTrace = _a.stackTrace,\n originalError = _a.originalError,\n handlingStack = _a.handlingStack,\n startClocks = _a.startClocks,\n nonErrorPrefix = _a.nonErrorPrefix,\n source = _a.source,\n handling = _a.handling;\n var isErrorInstance = originalError instanceof Error;\n var message = computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError);\n var stack = hasUsableStack(isErrorInstance, stackTrace) ? toStackTraceString(stackTrace) : NO_ERROR_STACK_PRESENT_MESSAGE;\n var causes = isErrorInstance ? flattenErrorCauses(originalError, source) : undefined;\n var type = stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name;\n var fingerprint = tryToGetFingerprint(originalError);\n return {\n startClocks: startClocks,\n source: source,\n handling: handling,\n handlingStack: handlingStack,\n originalError: originalError,\n type: type,\n message: message,\n stack: stack,\n causes: causes,\n fingerprint: fingerprint\n };\n}\nfunction computeMessage(stackTrace, isErrorInstance, nonErrorPrefix, originalError) {\n // Favor stackTrace message only if tracekit has really been able to extract something meaningful (message + name)\n // TODO rework tracekit integration to avoid scattering error building logic\n return (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.message) && (stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name) ? stackTrace.message : !isErrorInstance ? \"\".concat(nonErrorPrefix, \" \").concat(jsonStringify(sanitize(originalError))) : 'Empty message';\n}\nfunction hasUsableStack(isErrorInstance, stackTrace) {\n if (stackTrace === undefined) {\n return false;\n }\n if (isErrorInstance) {\n return true;\n }\n // handle cases where tracekit return stack = [] or stack = [{url: undefined, line: undefined, column: undefined}]\n // TODO rework tracekit integration to avoid generating those unusable stack\n return stackTrace.stack.length > 0 && (stackTrace.stack.length > 1 || stackTrace.stack[0].url !== undefined);\n}\nexport function tryToGetFingerprint(originalError) {\n return originalError instanceof Error && 'dd_fingerprint' in originalError ? String(originalError.dd_fingerprint) : undefined;\n}\nexport function getFileFromStackTraceString(stack) {\n var _a;\n return (_a = /@ (.+)/.exec(stack)) === null || _a === void 0 ? void 0 : _a[1];\n}\nexport function flattenErrorCauses(error, parentSource) {\n var currentError = error;\n var causes = [];\n while ((currentError === null || currentError === void 0 ? void 0 : currentError.cause) instanceof Error && causes.length < 10) {\n var stackTrace = computeStackTrace(currentError.cause);\n causes.push({\n message: currentError.cause.message,\n source: parentSource,\n type: stackTrace === null || stackTrace === void 0 ? void 0 : stackTrace.name,\n stack: stackTrace && toStackTraceString(stackTrace)\n });\n currentError = currentError.cause;\n }\n return causes.length ? causes : undefined;\n}\n//# sourceMappingURL=error.js.map","export var INTAKE_SITE_STAGING = 'datad0g.com';\nexport var INTAKE_SITE_FED_STAGING = 'dd0g-gov.com';\nexport var INTAKE_SITE_US1 = 'datadoghq.com';\nexport var INTAKE_SITE_EU1 = 'datadoghq.eu';\nexport var INTAKE_SITE_US1_FED = 'ddog-gov.com';\nexport var PCI_INTAKE_HOST_US1 = 'pci.browser-intake-datadoghq.com';\n//# sourceMappingURL=intakeSites.js.map","export function sendToExtension(type, payload) {\n var callback = window.__ddBrowserSdkExtensionCallback;\n if (callback) {\n callback({\n type: type,\n payload: payload\n });\n }\n}\n//# sourceMappingURL=sendToExtension.js.map","export function getConnectivity() {\n var _a;\n var navigator = window.navigator;\n return {\n status: navigator.onLine ? 'connected' : 'not_connected',\n interfaces: navigator.connection && navigator.connection.type ? [navigator.connection.type] : undefined,\n effective_type: (_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.effectiveType\n };\n}\n//# sourceMappingURL=connectivity.js.map","export var TelemetryType = {\n log: 'log',\n configuration: 'configuration',\n usage: 'usage'\n};\n//# sourceMappingURL=rawTelemetryEvent.types.js.map","import { ConsoleApiName } from '../../tools/display';\nimport { NO_ERROR_STACK_PRESENT_MESSAGE } from '../error/error';\nimport { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { getExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { INTAKE_SITE_STAGING, INTAKE_SITE_US1_FED } from '../configuration';\nimport { Observable } from '../../tools/observable';\nimport { timeStampNow } from '../../tools/utils/timeUtils';\nimport { displayIfDebugEnabled, startMonitorErrorCollection } from '../../tools/monitor';\nimport { sendToExtension } from '../../tools/sendToExtension';\nimport { startsWith, arrayFrom, includes, assign } from '../../tools/utils/polyfills';\nimport { performDraw } from '../../tools/utils/numberUtils';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { combine } from '../../tools/mergeInto';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { getConnectivity } from '../connectivity';\nimport { TelemetryType } from './rawTelemetryEvent.types';\nvar ALLOWED_FRAME_URLS = ['https://www.datadoghq-browser-agent.com', 'https://www.datad0g-browser-agent.com', 'https://d3uc069fcn7uxw.cloudfront.net', 'https://d20xtzwzcl0ceb.cloudfront.net', 'http://localhost', '<anonymous>'];\nvar TELEMETRY_EXCLUDED_SITES = [INTAKE_SITE_US1_FED];\nvar telemetryConfiguration = {\n maxEventsPerPage: 0,\n sentEventCount: 0\n};\nvar onRawTelemetryEventCollected;\nexport function startTelemetry(telemetryService, configuration) {\n var _a;\n var contextProvider;\n var observable = new Observable();\n var telemetryEnabled = !includes(TELEMETRY_EXCLUDED_SITES, configuration.site) && performDraw(configuration.telemetrySampleRate);\n var telemetryEnabledPerType = (_a = {}, _a[TelemetryType.log] = telemetryEnabled, _a[TelemetryType.configuration] = telemetryEnabled && performDraw(configuration.telemetryConfigurationSampleRate), _a[TelemetryType.usage] = telemetryEnabled && performDraw(configuration.telemetryUsageSampleRate), _a);\n var runtimeEnvInfo = getRuntimeEnvInfo();\n onRawTelemetryEventCollected = function (rawEvent) {\n if (telemetryEnabledPerType[rawEvent.type]) {\n var event_1 = toTelemetryEvent(telemetryService, rawEvent, runtimeEnvInfo);\n observable.notify(event_1);\n sendToExtension('telemetry', event_1);\n }\n };\n startMonitorErrorCollection(addTelemetryError);\n assign(telemetryConfiguration, {\n maxEventsPerPage: configuration.maxTelemetryEventsPerPage,\n sentEventCount: 0\n });\n function toTelemetryEvent(telemetryService, event, runtimeEnvInfo) {\n return combine({\n type: 'telemetry',\n date: timeStampNow(),\n service: telemetryService,\n version: \"5.17.1\",\n source: 'browser',\n _dd: {\n format_version: 2\n },\n telemetry: combine(event, {\n runtime_env: runtimeEnvInfo,\n connectivity: getConnectivity()\n }),\n experimental_features: arrayFrom(getExperimentalFeatures())\n }, contextProvider !== undefined ? contextProvider() : {});\n }\n return {\n setContextProvider: function (provider) {\n contextProvider = provider;\n },\n observable: observable,\n enabled: telemetryEnabled\n };\n}\nfunction getRuntimeEnvInfo() {\n return {\n is_local_file: window.location.protocol === 'file:',\n is_worker: 'WorkerGlobalScope' in self\n };\n}\nexport function startFakeTelemetry() {\n var events = [];\n assign(telemetryConfiguration, {\n maxEventsPerPage: Infinity,\n sentEventCount: 0\n });\n onRawTelemetryEventCollected = function (event) {\n events.push(event);\n };\n return events;\n}\nexport function resetTelemetry() {\n onRawTelemetryEventCollected = undefined;\n}\n/**\n * Avoid mixing telemetry events from different data centers\n * but keep replicating staging events for reliability\n */\nexport function isTelemetryReplicationAllowed(configuration) {\n return configuration.site === INTAKE_SITE_STAGING;\n}\nexport function addTelemetryDebug(message, context) {\n displayIfDebugEnabled(ConsoleApiName.debug, message, context);\n addTelemetry(assign({\n type: TelemetryType.log,\n message: message,\n status: \"debug\" /* StatusType.debug */\n }, context));\n}\nexport function addTelemetryError(e, context) {\n addTelemetry(assign({\n type: TelemetryType.log,\n status: \"error\" /* StatusType.error */\n }, formatError(e), context));\n}\nexport function addTelemetryConfiguration(configuration) {\n addTelemetry({\n type: TelemetryType.configuration,\n configuration: configuration\n });\n}\nexport function addTelemetryUsage(usage) {\n addTelemetry({\n type: TelemetryType.usage,\n usage: usage\n });\n}\nfunction addTelemetry(event) {\n if (onRawTelemetryEventCollected && telemetryConfiguration.sentEventCount < telemetryConfiguration.maxEventsPerPage) {\n telemetryConfiguration.sentEventCount += 1;\n onRawTelemetryEventCollected(event);\n }\n}\nexport function formatError(e) {\n if (e instanceof Error) {\n var stackTrace = computeStackTrace(e);\n return {\n error: {\n kind: stackTrace.name,\n stack: toStackTraceString(scrubCustomerFrames(stackTrace))\n },\n message: stackTrace.message\n };\n }\n return {\n error: {\n stack: NO_ERROR_STACK_PRESENT_MESSAGE\n },\n message: \"\".concat(\"Uncaught\" /* NonErrorPrefix.UNCAUGHT */, \" \").concat(jsonStringify(e))\n };\n}\nexport function scrubCustomerFrames(stackTrace) {\n stackTrace.stack = stackTrace.stack.filter(function (frame) {\n return !frame.url || ALLOWED_FRAME_URLS.some(function (allowedFrameUrl) {\n return startsWith(frame.url, allowedFrameUrl);\n });\n });\n return stackTrace;\n}\n//# sourceMappingURL=telemetry.js.map","import { display } from '../../tools/display';\nimport { getType } from '../../tools/utils/typeUtils';\nimport { assign } from '../../tools/utils/polyfills';\n/**\n * Clone input data and ensure known user properties (id, name, email)\n * are strings, as defined here:\n * https://docs.datadoghq.com/logs/log_configuration/attributes_naming_convention/#user-related-attributes\n */\nexport function sanitizeUser(newUser) {\n // We shallow clone only to prevent mutation of user data.\n var user = assign({}, newUser);\n var keys = ['id', 'name', 'email'];\n keys.forEach(function (key) {\n if (key in user) {\n user[key] = String(user[key]);\n }\n });\n return user;\n}\n/**\n * Simple check to ensure user is valid\n */\nexport function checkUser(newUser) {\n var isValid = getType(newUser) === 'object';\n if (!isValid) {\n display.error('Unsupported user:', newUser);\n }\n return isValid;\n}\n//# sourceMappingURL=user.js.map","import { display } from '../tools/display';\nexport function displayAlreadyInitializedError(sdkName, initConfiguration) {\n if (!initConfiguration.silentMultipleInit) {\n display.error(\"\".concat(sdkName, \" is already initialized.\"));\n }\n}\n//# sourceMappingURL=displayAlreadyInitializedError.js.map","import { arrayFrom } from './polyfills';\nexport function removeDuplicates(array) {\n var set = new Set();\n array.forEach(function (item) {\n return set.add(item);\n });\n return arrayFrom(set);\n}\nexport function removeItem(array, item) {\n var index = array.indexOf(item);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrayUtils.js.map","import { removeItem } from './utils/arrayUtils';\nvar BUFFER_LIMIT = 500;\nvar BoundedBuffer = /** @class */function () {\n function BoundedBuffer() {\n this.buffer = [];\n }\n BoundedBuffer.prototype.add = function (callback) {\n var length = this.buffer.push(callback);\n if (length > BUFFER_LIMIT) {\n this.buffer.splice(0, 1);\n }\n };\n BoundedBuffer.prototype.remove = function (callback) {\n removeItem(this.buffer, callback);\n };\n BoundedBuffer.prototype.drain = function (arg) {\n this.buffer.forEach(function (callback) {\n return callback(arg);\n });\n this.buffer.length = 0;\n };\n return BoundedBuffer;\n}();\nexport { BoundedBuffer };\n//# sourceMappingURL=boundedBuffer.js.map","import { endsWith, includes } from '../tools/utils/polyfills';\nimport { getGlobalObject } from '../tools/getGlobalObject';\nexport function getEventBridge() {\n var eventBridgeGlobal = getEventBridgeGlobal();\n if (!eventBridgeGlobal) {\n return;\n }\n return {\n getCapabilities: function () {\n var _a;\n return JSON.parse(((_a = eventBridgeGlobal.getCapabilities) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal)) || '[]');\n },\n getPrivacyLevel: function () {\n var _a;\n return (_a = eventBridgeGlobal.getPrivacyLevel) === null || _a === void 0 ? void 0 : _a.call(eventBridgeGlobal);\n },\n getAllowedWebViewHosts: function () {\n return JSON.parse(eventBridgeGlobal.getAllowedWebViewHosts());\n },\n send: function (eventType, event, viewId) {\n var view = viewId ? {\n id: viewId\n } : undefined;\n eventBridgeGlobal.send(JSON.stringify({\n eventType: eventType,\n event: event,\n view: view\n }));\n }\n };\n}\nexport function bridgeSupports(capability) {\n var bridge = getEventBridge();\n return !!bridge && includes(bridge.getCapabilities(), capability);\n}\nexport function canUseEventBridge(currentHost) {\n var _a;\n if (currentHost === void 0) {\n currentHost = (_a = getGlobalObject().location) === null || _a === void 0 ? void 0 : _a.hostname;\n }\n var bridge = getEventBridge();\n return !!bridge && bridge.getAllowedWebViewHosts().some(function (allowedHost) {\n return currentHost === allowedHost || endsWith(currentHost, \".\".concat(allowedHost));\n });\n}\nfunction getEventBridgeGlobal() {\n return getGlobalObject().DatadogEventBridge;\n}\n//# sourceMappingURL=eventBridge.js.map","/**\n * UUID v4\n * from https://gist.github.com/jed/982883\n */\nexport function generateUUID(placeholder) {\n return placeholder ?\n // eslint-disable-next-line no-bitwise\n (parseInt(placeholder, 10) ^ Math.random() * 16 >> parseInt(placeholder, 10) / 4).toString(16) : \"\".concat(1e7, \"-\").concat(1e3, \"-\").concat(4e3, \"-\").concat(8e3, \"-\").concat(1e11).replace(/[018]/g, generateUUID);\n}\nvar COMMA_SEPARATED_KEY_VALUE = /([\\w-]+)\\s*=\\s*([^;]+)/g;\nexport function findCommaSeparatedValue(rawString, name) {\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n if (match[1] === name) {\n return match[2];\n }\n } else {\n break;\n }\n }\n}\nexport function findCommaSeparatedValues(rawString) {\n var result = new Map();\n COMMA_SEPARATED_KEY_VALUE.lastIndex = 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var match = COMMA_SEPARATED_KEY_VALUE.exec(rawString);\n if (match) {\n result.set(match[1], match[2]);\n } else {\n break;\n }\n }\n return result;\n}\nexport function safeTruncate(candidate, length, suffix) {\n if (suffix === void 0) {\n suffix = '';\n }\n var lastChar = candidate.charCodeAt(length - 1);\n var isLastCharSurrogatePair = lastChar >= 0xd800 && lastChar <= 0xdbff;\n var correctedLength = isLastCharSurrogatePair ? length + 1 : length;\n if (candidate.length <= correctedLength) {\n return candidate;\n }\n return \"\".concat(candidate.slice(0, correctedLength)).concat(suffix);\n}\n//# sourceMappingURL=stringUtils.js.map","import { display } from '../tools/display';\nimport { ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { findCommaSeparatedValue, findCommaSeparatedValues, generateUUID } from '../tools/utils/stringUtils';\nexport function setCookie(name, value, expireDelay, options) {\n var date = new Date();\n date.setTime(date.getTime() + expireDelay);\n var expires = \"expires=\".concat(date.toUTCString());\n var sameSite = options && options.crossSite ? 'none' : 'strict';\n var domain = options && options.domain ? \";domain=\".concat(options.domain) : '';\n var secure = options && options.secure ? ';secure' : '';\n var partitioned = options && options.partitioned ? ';partitioned' : '';\n document.cookie = \"\".concat(name, \"=\").concat(value, \";\").concat(expires, \";path=/;samesite=\").concat(sameSite).concat(domain).concat(secure).concat(partitioned);\n}\nexport function getCookie(name) {\n return findCommaSeparatedValue(document.cookie, name);\n}\nvar initCookieParsed;\n/**\n * Returns a cached value of the cookie. Use this during SDK initialization (and whenever possible)\n * to avoid accessing document.cookie multiple times.\n */\nexport function getInitCookie(name) {\n if (!initCookieParsed) {\n initCookieParsed = findCommaSeparatedValues(document.cookie);\n }\n return initCookieParsed.get(name);\n}\nexport function resetInitCookies() {\n initCookieParsed = undefined;\n}\nexport function deleteCookie(name, options) {\n setCookie(name, '', 0, options);\n}\nexport function areCookiesAuthorized(options) {\n if (document.cookie === undefined || document.cookie === null) {\n return false;\n }\n try {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_cookie_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n setCookie(testCookieName, testCookieValue, ONE_MINUTE, options);\n var isCookieCorrectlySet = getCookie(testCookieName) === testCookieValue;\n deleteCookie(testCookieName, options);\n return isCookieCorrectlySet;\n } catch (error) {\n display.error(error);\n return false;\n }\n}\n/**\n * No API to retrieve it, number of levels for subdomain and suffix are unknown\n * strategy: find the minimal domain on which cookies are allowed to be set\n * https://web.dev/same-site-same-origin/#site\n */\nvar getCurrentSiteCache;\nexport function getCurrentSite() {\n if (getCurrentSiteCache === undefined) {\n // Use a unique cookie name to avoid issues when the SDK is initialized multiple times during\n // the test cookie lifetime\n var testCookieName = \"dd_site_test_\".concat(generateUUID());\n var testCookieValue = 'test';\n var domainLevels = window.location.hostname.split('.');\n var candidateDomain = domainLevels.pop();\n while (domainLevels.length && !getCookie(testCookieName)) {\n candidateDomain = \"\".concat(domainLevels.pop(), \".\").concat(candidateDomain);\n setCookie(testCookieName, testCookieValue, ONE_SECOND, {\n domain: candidateDomain\n });\n }\n deleteCookie(testCookieName, {\n domain: candidateDomain\n });\n getCurrentSiteCache = candidateDomain;\n }\n return getCurrentSiteCache;\n}\n//# sourceMappingURL=cookie.js.map","import { getInitCookie } from '../../browser/cookie';\nexport var SYNTHETICS_TEST_ID_COOKIE_NAME = 'datadog-synthetics-public-id';\nexport var SYNTHETICS_RESULT_ID_COOKIE_NAME = 'datadog-synthetics-result-id';\nexport var SYNTHETICS_INJECTS_RUM_COOKIE_NAME = 'datadog-synthetics-injects-rum';\nexport function willSyntheticsInjectRum() {\n return Boolean(window._DATADOG_SYNTHETICS_INJECTS_RUM || getInitCookie(SYNTHETICS_INJECTS_RUM_COOKIE_NAME));\n}\nexport function getSyntheticsTestId() {\n var value = window._DATADOG_SYNTHETICS_PUBLIC_ID || getInitCookie(SYNTHETICS_TEST_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\nexport function getSyntheticsResultId() {\n var value = window._DATADOG_SYNTHETICS_RESULT_ID || getInitCookie(SYNTHETICS_RESULT_ID_COOKIE_NAME);\n return typeof value === 'string' ? value : undefined;\n}\n//# sourceMappingURL=syntheticsWorkerValues.js.map","export function isIE() {\n return detectBrowserCached() === 0 /* Browser.IE */;\n}\nexport function isChromium() {\n return detectBrowserCached() === 1 /* Browser.CHROMIUM */;\n}\nexport function isSafari() {\n return detectBrowserCached() === 2 /* Browser.SAFARI */;\n}\nvar browserCache;\nfunction detectBrowserCached() {\n return browserCache !== null && browserCache !== void 0 ? browserCache : browserCache = detectBrowser();\n}\n// Exported only for tests\nexport function detectBrowser(browserWindow) {\n var _a;\n if (browserWindow === void 0) {\n browserWindow = window;\n }\n var userAgent = browserWindow.navigator.userAgent;\n if (browserWindow.chrome || /HeadlessChrome/.test(userAgent)) {\n return 1 /* Browser.CHROMIUM */;\n }\n if (\n // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n // useragent test as a semi-working fallback.\n ((_a = browserWindow.navigator.vendor) === null || _a === void 0 ? void 0 : _a.indexOf('Apple')) === 0 || /safari/i.test(userAgent) && !/chrome|android/i.test(userAgent)) {\n return 2 /* Browser.SAFARI */;\n }\n if (browserWindow.document.documentMode) {\n return 0 /* Browser.IE */;\n }\n return 3 /* Browser.OTHER */;\n}\n//# sourceMappingURL=browserDetection.js.map","export var SESSION_STORE_KEY = '_dd_s';\n//# sourceMappingURL=sessionStoreStrategy.js.map","import { ONE_HOUR, ONE_MINUTE } from '../../tools/utils/timeUtils';\nexport var SESSION_TIME_OUT_DELAY = 4 * ONE_HOUR;\nexport var SESSION_EXPIRATION_DELAY = 15 * ONE_MINUTE;\n//# sourceMappingURL=sessionConstants.js.map","import { isEmptyObject } from '../../tools/utils/objectUtils';\nimport { objectEntries } from '../../tools/utils/polyfills';\nimport { dateNow } from '../../tools/utils/timeUtils';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from './sessionConstants';\nvar SESSION_ENTRY_REGEXP = /^([a-zA-Z]+)=([a-z0-9-]+)$/;\nvar SESSION_ENTRY_SEPARATOR = '&';\nexport var EXPIRED = '1';\nexport function getExpiredSessionState() {\n return {\n isExpired: EXPIRED\n };\n}\nexport function isSessionInNotStartedState(session) {\n return isEmptyObject(session);\n}\nexport function isSessionStarted(session) {\n return !isSessionInNotStartedState(session);\n}\nexport function isSessionInExpiredState(session) {\n return session.isExpired !== undefined || !isActiveSession(session);\n}\n// An active session is a session in either `Tracked` or `NotTracked` state\nfunction isActiveSession(sessionState) {\n // created and expire can be undefined for versions which was not storing them\n // these checks could be removed when older versions will not be available/live anymore\n return (sessionState.created === undefined || dateNow() - Number(sessionState.created) < SESSION_TIME_OUT_DELAY) && (sessionState.expire === undefined || dateNow() < Number(sessionState.expire));\n}\nexport function expandSessionState(session) {\n session.expire = String(dateNow() + SESSION_EXPIRATION_DELAY);\n}\nexport function toSessionString(session) {\n return objectEntries(session).map(function (_a) {\n var key = _a[0],\n value = _a[1];\n return \"\".concat(key, \"=\").concat(value);\n }).join(SESSION_ENTRY_SEPARATOR);\n}\nexport function toSessionState(sessionString) {\n var session = {};\n if (isValidSessionString(sessionString)) {\n sessionString.split(SESSION_ENTRY_SEPARATOR).forEach(function (entry) {\n var matches = SESSION_ENTRY_REGEXP.exec(entry);\n if (matches !== null) {\n var key = matches[1],\n value = matches[2];\n session[key] = value;\n }\n });\n }\n return session;\n}\nfunction isValidSessionString(sessionString) {\n return !!sessionString && (sessionString.indexOf(SESSION_ENTRY_SEPARATOR) !== -1 || SESSION_ENTRY_REGEXP.test(sessionString));\n}\n//# sourceMappingURL=sessionState.js.map","import { getInitCookie } from '../../browser/cookie';\nimport { SESSION_STORE_KEY } from './storeStrategies/sessionStoreStrategy';\nimport { expandSessionState, isSessionStarted } from './sessionState';\nexport var OLD_SESSION_COOKIE_NAME = '_dd';\nexport var OLD_RUM_COOKIE_NAME = '_dd_r';\nexport var OLD_LOGS_COOKIE_NAME = '_dd_l';\n// duplicate values to avoid dependency issues\nexport var RUM_SESSION_KEY = 'rum';\nexport var LOGS_SESSION_KEY = 'logs';\n/**\n * This migration should remain in the codebase as long as older versions are available/live\n * to allow older sdk versions to be upgraded to newer versions without compatibility issues.\n */\nexport function tryOldCookiesMigration(cookieStoreStrategy) {\n var sessionString = getInitCookie(SESSION_STORE_KEY);\n if (!sessionString) {\n var oldSessionId = getInitCookie(OLD_SESSION_COOKIE_NAME);\n var oldRumType = getInitCookie(OLD_RUM_COOKIE_NAME);\n var oldLogsType = getInitCookie(OLD_LOGS_COOKIE_NAME);\n var session = {};\n if (oldSessionId) {\n session.id = oldSessionId;\n }\n if (oldLogsType && /^[01]$/.test(oldLogsType)) {\n session[LOGS_SESSION_KEY] = oldLogsType;\n }\n if (oldRumType && /^[012]$/.test(oldRumType)) {\n session[RUM_SESSION_KEY] = oldRumType;\n }\n if (isSessionStarted(session)) {\n expandSessionState(session);\n cookieStoreStrategy.persistSession(session);\n }\n }\n}\n//# sourceMappingURL=oldCookiesMigration.js.map","import { isChromium } from '../../../tools/utils/browserDetection';\nimport { getCurrentSite, areCookiesAuthorized, getCookie, setCookie } from '../../../browser/cookie';\nimport { tryOldCookiesMigration } from '../oldCookiesMigration';\nimport { SESSION_EXPIRATION_DELAY, SESSION_TIME_OUT_DELAY } from '../sessionConstants';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nexport function selectCookieStrategy(initConfiguration) {\n var cookieOptions = buildCookieOptions(initConfiguration);\n return areCookiesAuthorized(cookieOptions) ? {\n type: 'Cookie',\n cookieOptions: cookieOptions\n } : undefined;\n}\nexport function initCookieStrategy(cookieOptions) {\n var cookieStore = {\n /**\n * Lock strategy allows mitigating issues due to concurrent access to cookie.\n * This issue concerns only chromium browsers and enabling this on firefox increases cookie write failures.\n */\n isLockEnabled: isChromium(),\n persistSession: persistSessionCookie(cookieOptions),\n retrieveSession: retrieveSessionCookie,\n expireSession: function () {\n return expireSessionCookie(cookieOptions);\n }\n };\n tryOldCookiesMigration(cookieStore);\n return cookieStore;\n}\nfunction persistSessionCookie(options) {\n return function (session) {\n setCookie(SESSION_STORE_KEY, toSessionString(session), SESSION_EXPIRATION_DELAY, options);\n };\n}\nfunction expireSessionCookie(options) {\n setCookie(SESSION_STORE_KEY, toSessionString(getExpiredSessionState()), SESSION_TIME_OUT_DELAY, options);\n}\nfunction retrieveSessionCookie() {\n var sessionString = getCookie(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nexport function buildCookieOptions(initConfiguration) {\n var cookieOptions = {};\n cookieOptions.secure = !!initConfiguration.useSecureSessionCookie || !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.crossSite = !!initConfiguration.usePartitionedCrossSiteSessionCookie || !!initConfiguration.useCrossSiteSessionCookie;\n cookieOptions.partitioned = !!initConfiguration.usePartitionedCrossSiteSessionCookie;\n if (initConfiguration.trackSessionAcrossSubdomains) {\n cookieOptions.domain = getCurrentSite();\n }\n return cookieOptions;\n}\n//# sourceMappingURL=sessionInCookie.js.map","import { generateUUID } from '../../../tools/utils/stringUtils';\nimport { toSessionString, toSessionState, getExpiredSessionState } from '../sessionState';\nimport { SESSION_STORE_KEY } from './sessionStoreStrategy';\nvar LOCAL_STORAGE_TEST_KEY = '_dd_test_';\nexport function selectLocalStorageStrategy() {\n try {\n var id = generateUUID();\n var testKey = \"\".concat(LOCAL_STORAGE_TEST_KEY).concat(id);\n localStorage.setItem(testKey, id);\n var retrievedId = localStorage.getItem(testKey);\n localStorage.removeItem(testKey);\n return id === retrievedId ? {\n type: 'LocalStorage'\n } : undefined;\n } catch (e) {\n return undefined;\n }\n}\nexport function initLocalStorageStrategy() {\n return {\n isLockEnabled: false,\n persistSession: persistInLocalStorage,\n retrieveSession: retrieveSessionFromLocalStorage,\n expireSession: expireSessionFromLocalStorage\n };\n}\nfunction persistInLocalStorage(sessionState) {\n localStorage.setItem(SESSION_STORE_KEY, toSessionString(sessionState));\n}\nfunction retrieveSessionFromLocalStorage() {\n var sessionString = localStorage.getItem(SESSION_STORE_KEY);\n return toSessionState(sessionString);\n}\nfunction expireSessionFromLocalStorage() {\n persistInLocalStorage(getExpiredSessionState());\n}\n//# sourceMappingURL=sessionInLocalStorage.js.map","import { setTimeout } from '../../tools/timer';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { expandSessionState, isSessionInExpiredState } from './sessionState';\nexport var LOCK_RETRY_DELAY = 10;\nexport var LOCK_MAX_TRIES = 100;\nvar bufferedOperations = [];\nvar ongoingOperations;\nexport function processSessionStoreOperations(operations, sessionStoreStrategy, numberOfRetries) {\n var _a;\n if (numberOfRetries === void 0) {\n numberOfRetries = 0;\n }\n var isLockEnabled = sessionStoreStrategy.isLockEnabled,\n persistSession = sessionStoreStrategy.persistSession,\n expireSession = sessionStoreStrategy.expireSession;\n var persistWithLock = function (session) {\n return persistSession(assign({}, session, {\n lock: currentLock\n }));\n };\n var retrieveStore = function () {\n var session = sessionStoreStrategy.retrieveSession();\n var lock = session.lock;\n if (session.lock) {\n delete session.lock;\n }\n return {\n session: session,\n lock: lock\n };\n };\n if (!ongoingOperations) {\n ongoingOperations = operations;\n }\n if (operations !== ongoingOperations) {\n bufferedOperations.push(operations);\n return;\n }\n if (isLockEnabled && numberOfRetries >= LOCK_MAX_TRIES) {\n next(sessionStoreStrategy);\n return;\n }\n var currentLock;\n var currentStore = retrieveStore();\n if (isLockEnabled) {\n // if someone has lock, retry later\n if (currentStore.lock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n // acquire lock\n currentLock = generateUUID();\n persistWithLock(currentStore.session);\n // if lock is not acquired, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n var processedSession = operations.process(currentStore.session);\n if (isLockEnabled) {\n // if lock corrupted after process, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n }\n if (processedSession) {\n if (isSessionInExpiredState(processedSession)) {\n expireSession();\n } else {\n expandSessionState(processedSession);\n isLockEnabled ? persistWithLock(processedSession) : persistSession(processedSession);\n }\n }\n if (isLockEnabled) {\n // correctly handle lock around expiration would require to handle this case properly at several levels\n // since we don't have evidence of lock issues around expiration, let's just not do the corruption check for it\n if (!(processedSession && isSessionInExpiredState(processedSession))) {\n // if lock corrupted after persist, retry later\n currentStore = retrieveStore();\n if (currentStore.lock !== currentLock) {\n retryLater(operations, sessionStoreStrategy, numberOfRetries);\n return;\n }\n persistSession(currentStore.session);\n processedSession = currentStore.session;\n }\n }\n // call after even if session is not persisted in order to perform operations on\n // up-to-date session state value => the value could have been modified by another tab\n (_a = operations.after) === null || _a === void 0 ? void 0 : _a.call(operations, processedSession || currentStore.session);\n next(sessionStoreStrategy);\n}\nfunction retryLater(operations, sessionStore, currentNumberOfRetries) {\n setTimeout(function () {\n processSessionStoreOperations(operations, sessionStore, currentNumberOfRetries + 1);\n }, LOCK_RETRY_DELAY);\n}\nfunction next(sessionStore) {\n ongoingOperations = undefined;\n var nextOperations = bufferedOperations.shift();\n if (nextOperations) {\n processSessionStoreOperations(nextOperations, sessionStore);\n }\n}\n//# sourceMappingURL=sessionStoreOperations.js.map","import { clearInterval, setInterval } from '../../tools/timer';\nimport { Observable } from '../../tools/observable';\nimport { ONE_SECOND, dateNow } from '../../tools/utils/timeUtils';\nimport { throttle } from '../../tools/utils/functionUtils';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { selectCookieStrategy, initCookieStrategy } from './storeStrategies/sessionInCookie';\nimport { getExpiredSessionState, isSessionInExpiredState, isSessionInNotStartedState } from './sessionState';\nimport { initLocalStorageStrategy, selectLocalStorageStrategy } from './storeStrategies/sessionInLocalStorage';\nimport { processSessionStoreOperations } from './sessionStoreOperations';\n/**\n * Every second, the storage will be polled to check for any change that can occur\n * to the session state in another browser tab, or another window.\n * This value has been determined from our previous cookie-only implementation.\n */\nexport var STORAGE_POLL_DELAY = ONE_SECOND;\n/**\n * Checks if cookies are available as the preferred storage\n * Else, checks if LocalStorage is allowed and available\n */\nexport function selectSessionStoreStrategyType(initConfiguration) {\n var sessionStoreStrategyType = selectCookieStrategy(initConfiguration);\n if (!sessionStoreStrategyType && initConfiguration.allowFallbackToLocalStorage) {\n sessionStoreStrategyType = selectLocalStorageStrategy();\n }\n return sessionStoreStrategyType;\n}\n/**\n * Different session concepts:\n * - tracked, the session has an id and is updated along the user navigation\n * - not tracked, the session does not have an id but it is updated along the user navigation\n * - inactive, no session in store or session expired, waiting for a renew session\n */\nexport function startSessionStore(sessionStoreStrategyType, productKey, computeSessionState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n var sessionStoreStrategy = sessionStoreStrategyType.type === 'Cookie' ? initCookieStrategy(sessionStoreStrategyType.cookieOptions) : initLocalStorageStrategy();\n var expireSession = sessionStoreStrategy.expireSession;\n var watchSessionTimeoutId = setInterval(watchSession, STORAGE_POLL_DELAY);\n var sessionCache;\n startSession();\n var _a = throttle(function () {\n var isTracked;\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return;\n }\n var synchronizedSession = synchronizeSession(sessionState);\n isTracked = expandOrRenewSessionState(synchronizedSession);\n return synchronizedSession;\n },\n after: function (sessionState) {\n if (isTracked && !hasSessionInCache()) {\n renewSessionInCache(sessionState);\n }\n sessionCache = sessionState;\n }\n }, sessionStoreStrategy);\n }, STORAGE_POLL_DELAY),\n throttledExpandOrRenewSession = _a.throttled,\n cancelExpandOrRenewSession = _a.cancel;\n function expandSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n return hasSessionInCache() ? synchronizeSession(sessionState) : undefined;\n }\n }, sessionStoreStrategy);\n }\n /**\n * allows two behaviors:\n * - if the session is active, synchronize the session cache without updating the session store\n * - if the session is not active, clear the session store and expire the session cache\n */\n function watchSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n return isSessionInExpiredState(sessionState) ? getExpiredSessionState() : undefined;\n },\n after: synchronizeSession\n }, sessionStoreStrategy);\n }\n function synchronizeSession(sessionState) {\n if (isSessionInExpiredState(sessionState)) {\n sessionState = getExpiredSessionState();\n }\n if (hasSessionInCache()) {\n if (isSessionInCacheOutdated(sessionState)) {\n expireSessionInCache();\n } else {\n sessionCache = sessionState;\n }\n }\n return sessionState;\n }\n function startSession() {\n processSessionStoreOperations({\n process: function (sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return getExpiredSessionState();\n }\n },\n after: function (sessionState) {\n sessionCache = sessionState;\n }\n }, sessionStoreStrategy);\n }\n function expandOrRenewSessionState(sessionState) {\n if (isSessionInNotStartedState(sessionState)) {\n return false;\n }\n var _a = computeSessionState(sessionState[productKey]),\n trackingType = _a.trackingType,\n isTracked = _a.isTracked;\n sessionState[productKey] = trackingType;\n delete sessionState.isExpired;\n if (isTracked && !sessionState.id) {\n sessionState.id = generateUUID();\n sessionState.created = String(dateNow());\n }\n return isTracked;\n }\n function hasSessionInCache() {\n return sessionCache[productKey] !== undefined;\n }\n function isSessionInCacheOutdated(sessionState) {\n return sessionCache.id !== sessionState.id || sessionCache[productKey] !== sessionState[productKey];\n }\n function expireSessionInCache() {\n sessionCache = getExpiredSessionState();\n expireObservable.notify();\n }\n function renewSessionInCache(sessionState) {\n sessionCache = sessionState;\n renewObservable.notify();\n }\n return {\n expandOrRenewSession: throttledExpandOrRenewSession,\n expandSession: expandSession,\n getSession: function () {\n return sessionCache;\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n restartSession: startSession,\n expire: function () {\n cancelExpandOrRenewSession();\n expireSession();\n synchronizeSession(getExpiredSessionState());\n },\n stop: function () {\n clearInterval(watchSessionTimeoutId);\n }\n };\n}\n//# sourceMappingURL=sessionStore.js.map","import { jsonStringify } from '../serialisation/jsonStringify';\nexport function normalizeUrl(url) {\n return buildUrl(url, location.href).href;\n}\nexport function isValidUrl(url) {\n try {\n return !!buildUrl(url);\n } catch (_a) {\n return false;\n }\n}\nexport function getPathName(url) {\n var pathname = buildUrl(url).pathname;\n return pathname[0] === '/' ? pathname : \"/\".concat(pathname);\n}\nexport function buildUrl(url, base) {\n var supportedURL = getSupportedUrl();\n if (supportedURL) {\n try {\n return base !== undefined ? new supportedURL(url, base) : new supportedURL(url);\n } catch (error) {\n throw new Error(\"Failed to construct URL: \".concat(String(error), \" \").concat(jsonStringify({\n url: url,\n base: base\n })));\n }\n }\n if (base === undefined && !/:/.test(url)) {\n throw new Error(\"Invalid URL: '\".concat(url, \"'\"));\n }\n var doc = document;\n var anchorElement = doc.createElement('a');\n if (base !== undefined) {\n doc = document.implementation.createHTMLDocument('');\n var baseElement = doc.createElement('base');\n baseElement.href = base;\n doc.head.appendChild(baseElement);\n doc.body.appendChild(anchorElement);\n }\n anchorElement.href = url;\n return anchorElement;\n}\nvar originalURL = URL;\nvar isURLSupported;\nfunction getSupportedUrl() {\n if (isURLSupported === undefined) {\n try {\n var url = new originalURL('http://test/path');\n isURLSupported = url.href === 'http://test/path';\n } catch (_a) {\n isURLSupported = false;\n }\n }\n return isURLSupported ? originalURL : undefined;\n}\n//# sourceMappingURL=urlPolyfill.js.map","import { timeStampNow } from '../../tools/utils/timeUtils';\nimport { normalizeUrl } from '../../tools/utils/urlPolyfill';\nimport { ExperimentalFeature, isExperimentalFeatureEnabled } from '../../tools/experimentalFeatures';\nimport { generateUUID } from '../../tools/utils/stringUtils';\nimport { INTAKE_SITE_US1, INTAKE_SITE_FED_STAGING, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function createEndpointBuilder(initConfiguration, trackType, configurationTags) {\n var buildUrlWithParameters = createEndpointUrlWithParametersBuilder(initConfiguration, trackType);\n return {\n build: function (api, payload) {\n var parameters = buildEndpointParameters(initConfiguration, trackType, configurationTags, api, payload);\n return buildUrlWithParameters(parameters);\n },\n urlPrefix: buildUrlWithParameters(''),\n trackType: trackType\n };\n}\n/**\n * Create a function used to build a full endpoint url from provided parameters. The goal of this\n * function is to pre-compute some parts of the URL to avoid re-computing everything on every\n * request, as only parameters are changing.\n */\nfunction createEndpointUrlWithParametersBuilder(initConfiguration, trackType) {\n var path = \"/api/v2/\".concat(trackType);\n var proxy = initConfiguration.proxy;\n if (typeof proxy === 'string') {\n var normalizedProxyUrl_1 = normalizeUrl(proxy);\n return function (parameters) {\n return \"\".concat(normalizedProxyUrl_1, \"?ddforward=\").concat(encodeURIComponent(\"\".concat(path, \"?\").concat(parameters)));\n };\n }\n if (typeof proxy === 'function') {\n return function (parameters) {\n return proxy({\n path: path,\n parameters: parameters\n });\n };\n }\n var host = buildEndpointHost(trackType, initConfiguration);\n return function (parameters) {\n return \"https://\".concat(host).concat(path, \"?\").concat(parameters);\n };\n}\nfunction buildEndpointHost(trackType, initConfiguration) {\n var _a = initConfiguration.site,\n site = _a === void 0 ? INTAKE_SITE_US1 : _a,\n internalAnalyticsSubdomain = initConfiguration.internalAnalyticsSubdomain;\n if (trackType === 'logs' && initConfiguration.usePciIntake && site === INTAKE_SITE_US1) {\n return PCI_INTAKE_HOST_US1;\n }\n if (internalAnalyticsSubdomain && site === INTAKE_SITE_US1) {\n return \"\".concat(internalAnalyticsSubdomain, \".\").concat(INTAKE_SITE_US1);\n }\n if (site === INTAKE_SITE_FED_STAGING) {\n return \"http-intake.logs.\".concat(site);\n }\n var domainParts = site.split('.');\n var extension = domainParts.pop();\n return \"browser-intake-\".concat(domainParts.join('-'), \".\").concat(extension);\n}\n/**\n * Build parameters to be used for an intake request. Parameters should be re-built for each\n * request, as they change randomly.\n */\nfunction buildEndpointParameters(_a, trackType, configurationTags, api, _b) {\n var clientToken = _a.clientToken,\n internalAnalyticsSubdomain = _a.internalAnalyticsSubdomain;\n var retry = _b.retry,\n flushReason = _b.flushReason,\n encoding = _b.encoding;\n var tags = [\"sdk_version:\".concat(\"5.17.1\"), \"api:\".concat(api)].concat(configurationTags);\n if (flushReason && isExperimentalFeatureEnabled(ExperimentalFeature.COLLECT_FLUSH_REASON)) {\n tags.push(\"flush_reason:\".concat(flushReason));\n }\n if (retry) {\n tags.push(\"retry_count:\".concat(retry.count), \"retry_after:\".concat(retry.lastFailureStatus));\n }\n var parameters = ['ddsource=browser', \"ddtags=\".concat(encodeURIComponent(tags.join(','))), \"dd-api-key=\".concat(clientToken), \"dd-evp-origin-version=\".concat(encodeURIComponent(\"5.17.1\")), 'dd-evp-origin=browser', \"dd-request-id=\".concat(generateUUID())];\n if (encoding) {\n parameters.push(\"dd-evp-encoding=\".concat(encoding));\n }\n if (trackType === 'rum') {\n parameters.push(\"batch_time=\".concat(timeStampNow()));\n }\n if (internalAnalyticsSubdomain) {\n parameters.reverse();\n }\n return parameters.join('&');\n}\n//# sourceMappingURL=endpointBuilder.js.map","import { display } from '../../tools/display';\nexport var TAG_SIZE_LIMIT = 200;\nexport function buildTags(configuration) {\n var env = configuration.env,\n service = configuration.service,\n version = configuration.version,\n datacenter = configuration.datacenter;\n var tags = [];\n if (env) {\n tags.push(buildTag('env', env));\n }\n if (service) {\n tags.push(buildTag('service', service));\n }\n if (version) {\n tags.push(buildTag('version', version));\n }\n if (datacenter) {\n tags.push(buildTag('datacenter', datacenter));\n }\n return tags;\n}\nvar FORBIDDEN_CHARACTERS = /[^a-z0-9_:./-]/;\nexport function buildTag(key, rawValue) {\n // See https://docs.datadoghq.com/getting_started/tagging/#defining-tags for tags syntax. Note\n // that the backend may not follow the exact same rules, so we only want to display an informal\n // warning.\n var valueSizeLimit = TAG_SIZE_LIMIT - key.length - 1;\n if (rawValue.length > valueSizeLimit || FORBIDDEN_CHARACTERS.test(rawValue)) {\n display.warn(\"\".concat(key, \" value doesn't meet tag requirements and will be sanitized\"));\n }\n // Let the backend do most of the sanitization, but still make sure multiple tags can't be crafted\n // by forging a value containing commas.\n var sanitizedValue = rawValue.replace(/,/g, '_');\n return \"\".concat(key, \":\").concat(sanitizedValue);\n}\n//# sourceMappingURL=tags.js.map","import { objectValues, assign } from '../../tools/utils/polyfills';\nimport { createEndpointBuilder } from './endpointBuilder';\nimport { buildTags } from './tags';\nimport { INTAKE_SITE_US1, PCI_INTAKE_HOST_US1 } from './intakeSites';\nexport function computeTransportConfiguration(initConfiguration) {\n var site = initConfiguration.site || INTAKE_SITE_US1;\n var tags = buildTags(initConfiguration);\n var endpointBuilders = computeEndpointBuilders(initConfiguration, tags);\n var intakeUrlPrefixes = computeIntakeUrlPrefixes(endpointBuilders, site);\n var replicaConfiguration = computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags);\n return assign({\n isIntakeUrl: function (url) {\n return intakeUrlPrefixes.some(function (intakeEndpoint) {\n return url.indexOf(intakeEndpoint) === 0;\n });\n },\n replica: replicaConfiguration,\n site: site\n }, endpointBuilders);\n}\nfunction computeEndpointBuilders(initConfiguration, tags) {\n return {\n logsEndpointBuilder: createEndpointBuilder(initConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(initConfiguration, 'rum', tags),\n sessionReplayEndpointBuilder: createEndpointBuilder(initConfiguration, 'replay', tags)\n };\n}\nfunction computeReplicaConfiguration(initConfiguration, intakeUrlPrefixes, tags) {\n if (!initConfiguration.replica) {\n return;\n }\n var replicaConfiguration = assign({}, initConfiguration, {\n site: INTAKE_SITE_US1,\n clientToken: initConfiguration.replica.clientToken\n });\n var replicaEndpointBuilders = {\n logsEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'logs', tags),\n rumEndpointBuilder: createEndpointBuilder(replicaConfiguration, 'rum', tags)\n };\n intakeUrlPrefixes.push.apply(intakeUrlPrefixes, objectValues(replicaEndpointBuilders).map(function (builder) {\n return builder.urlPrefix;\n }));\n return assign({\n applicationId: initConfiguration.replica.applicationId\n }, replicaEndpointBuilders);\n}\nfunction computeIntakeUrlPrefixes(endpointBuilders, site) {\n var intakeUrlPrefixes = objectValues(endpointBuilders).map(function (builder) {\n return builder.urlPrefix;\n });\n if (site === INTAKE_SITE_US1) {\n intakeUrlPrefixes.push(\"https://\".concat(PCI_INTAKE_HOST_US1, \"/\"));\n }\n return intakeUrlPrefixes;\n}\n//# sourceMappingURL=transportConfiguration.js.map","import { catchUserErrors } from '../../tools/catchUserErrors';\nimport { display } from '../../tools/display';\nimport { ExperimentalFeature, addExperimentalFeatures } from '../../tools/experimentalFeatures';\nimport { ONE_SECOND } from '../../tools/utils/timeUtils';\nimport { isPercentage } from '../../tools/utils/numberUtils';\nimport { ONE_KIBI_BYTE } from '../../tools/utils/byteUtils';\nimport { objectHasValue } from '../../tools/utils/objectUtils';\nimport { assign } from '../../tools/utils/polyfills';\nimport { selectSessionStoreStrategyType } from '../session/sessionStore';\nimport { TrackingConsent } from '../trackingConsent';\nimport { computeTransportConfiguration } from './transportConfiguration';\nexport var DOC_LINK = 'https://docs.datadoghq.com/getting_started/site/';\nexport var DefaultPrivacyLevel = {\n ALLOW: 'allow',\n MASK: 'mask',\n MASK_USER_INPUT: 'mask-user-input'\n};\nexport var TraceContextInjection = {\n ALL: 'all',\n SAMPLED: 'sampled'\n};\nfunction isDatadogSite(site) {\n return /(datadog|ddog|datad0g|dd0g)/.test(site);\n}\nexport function validateAndBuildConfiguration(initConfiguration) {\n var _a, _b, _c, _d, _e;\n if (!initConfiguration || !initConfiguration.clientToken) {\n display.error('Client Token is not configured, we will not send any data.');\n return;\n }\n if (initConfiguration.sessionSampleRate !== undefined && !isPercentage(initConfiguration.sessionSampleRate)) {\n display.error('Session Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetrySampleRate !== undefined && !isPercentage(initConfiguration.telemetrySampleRate)) {\n display.error('Telemetry Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetryConfigurationSampleRate !== undefined && !isPercentage(initConfiguration.telemetryConfigurationSampleRate)) {\n display.error('Telemetry Configuration Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.telemetryUsageSampleRate !== undefined && !isPercentage(initConfiguration.telemetryUsageSampleRate)) {\n display.error('Telemetry Usage Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.trackingConsent !== undefined && !objectHasValue(TrackingConsent, initConfiguration.trackingConsent)) {\n display.error('Tracking Consent should be either \"granted\" or \"not-granted\"');\n return;\n }\n if (initConfiguration.site && !isDatadogSite(initConfiguration.site)) {\n display.error(\"Site should be a valid Datadog site. Learn more here: \".concat(DOC_LINK, \".\"));\n return;\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n if (Array.isArray(initConfiguration.enableExperimentalFeatures)) {\n addExperimentalFeatures(initConfiguration.enableExperimentalFeatures.filter(function (flag) {\n return objectHasValue(ExperimentalFeature, flag);\n }));\n }\n return assign({\n beforeSend: initConfiguration.beforeSend && catchUserErrors(initConfiguration.beforeSend, 'beforeSend threw an error:'),\n sessionStoreStrategyType: selectSessionStoreStrategyType(initConfiguration),\n sessionSampleRate: (_a = initConfiguration.sessionSampleRate) !== null && _a !== void 0 ? _a : 100,\n telemetrySampleRate: (_b = initConfiguration.telemetrySampleRate) !== null && _b !== void 0 ? _b : 20,\n telemetryConfigurationSampleRate: (_c = initConfiguration.telemetryConfigurationSampleRate) !== null && _c !== void 0 ? _c : 5,\n telemetryUsageSampleRate: (_d = initConfiguration.telemetryUsageSampleRate) !== null && _d !== void 0 ? _d : 5,\n service: initConfiguration.service,\n silentMultipleInit: !!initConfiguration.silentMultipleInit,\n allowUntrustedEvents: !!initConfiguration.allowUntrustedEvents,\n trackingConsent: (_e = initConfiguration.trackingConsent) !== null && _e !== void 0 ? _e : TrackingConsent.GRANTED,\n /**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\n batchBytesLimit: 16 * ONE_KIBI_BYTE,\n eventRateLimiterThreshold: 3000,\n maxTelemetryEventsPerPage: 15,\n /**\n * flush automatically, aim to be lower than ALB connection timeout\n * to maximize connection reuse.\n */\n flushTimeout: 30 * ONE_SECOND,\n /**\n * Logs intake limit\n */\n batchMessagesLimit: 50,\n messageBytesLimit: 256 * ONE_KIBI_BYTE\n }, computeTransportConfiguration(initConfiguration));\n}\nexport function serializeConfiguration(initConfiguration) {\n return {\n session_sample_rate: initConfiguration.sessionSampleRate,\n telemetry_sample_rate: initConfiguration.telemetrySampleRate,\n telemetry_configuration_sample_rate: initConfiguration.telemetryConfigurationSampleRate,\n telemetry_usage_sample_rate: initConfiguration.telemetryUsageSampleRate,\n use_before_send: !!initConfiguration.beforeSend,\n use_cross_site_session_cookie: initConfiguration.useCrossSiteSessionCookie,\n use_partitioned_cross_site_session_cookie: initConfiguration.usePartitionedCrossSiteSessionCookie,\n use_secure_session_cookie: initConfiguration.useSecureSessionCookie,\n use_proxy: !!initConfiguration.proxy,\n silent_multiple_init: initConfiguration.silentMultipleInit,\n track_session_across_subdomains: initConfiguration.trackSessionAcrossSubdomains,\n allow_fallback_to_local_storage: !!initConfiguration.allowFallbackToLocalStorage,\n store_contexts_across_pages: !!initConfiguration.storeContextsAcrossPages,\n allow_untrusted_events: !!initConfiguration.allowUntrustedEvents,\n tracking_consent: initConfiguration.trackingConsent\n };\n}\n//# sourceMappingURL=configuration.js.map","import { startsWith } from './utils/polyfills';\nimport { display } from './display';\nimport { getType } from './utils/typeUtils';\nexport function isMatchOption(item) {\n var itemType = getType(item);\n return itemType === 'string' || itemType === 'function' || item instanceof RegExp;\n}\n/**\n * Returns true if value can be matched by at least one of the provided MatchOptions.\n * When comparing strings, setting useStartsWith to true will compare the value with the start of\n * the option, instead of requiring an exact match.\n */\nexport function matchList(list, value, useStartsWith) {\n if (useStartsWith === void 0) {\n useStartsWith = false;\n }\n return list.some(function (item) {\n try {\n if (typeof item === 'function') {\n return item(value);\n } else if (item instanceof RegExp) {\n return item.test(value);\n } else if (typeof item === 'string') {\n return useStartsWith ? startsWith(value, item) : item === value;\n }\n } catch (e) {\n display.error(e);\n }\n return false;\n });\n}\n//# sourceMappingURL=matchOption.js.map","import { objectEntries, shallowClone, performDraw, isNumber, assign, find, getType, isMatchOption, matchList, TraceContextInjection } from '@datadog/browser-core';\nexport function isTracingOption(item) {\n var expectedItem = item;\n return getType(expectedItem) === 'object' && isMatchOption(expectedItem.match) && Array.isArray(expectedItem.propagatorTypes);\n}\n/**\n * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the\n * request did not reach the server, but the browser does not expose this. So, we clear tracing\n * information if the request ended with status 0 without being aborted by the application.\n *\n * Reasoning:\n *\n * * Applications are usually aborting requests after a bit of time, for example when the user is\n * typing (autocompletion) or navigating away (in a SPA). With a performant device and good\n * network conditions, the request is likely to reach the server before being canceled.\n *\n * * Requests aborted otherwise (ex: lack of internet, CORS issue, blocked by a privacy extension)\n * are likely to finish quickly and without reaching the server.\n *\n * Of course, it might not be the case every time, but it should limit having incomplete traces a\n * bit.\n * */\nexport function clearTracingIfNeeded(context) {\n if (context.status === 0 && !context.isAborted) {\n context.traceId = undefined;\n context.spanId = undefined;\n context.traceSampled = undefined;\n }\n}\nexport function startTracer(configuration, sessionManager) {\n return {\n clearTracingIfNeeded: clearTracingIfNeeded,\n traceFetch: function (context) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n var _a;\n if (context.input instanceof Request && !((_a = context.init) === null || _a === void 0 ? void 0 : _a.headers)) {\n context.input = new Request(context.input);\n Object.keys(tracingHeaders).forEach(function (key) {\n ;\n context.input.headers.append(key, tracingHeaders[key]);\n });\n } else {\n context.init = shallowClone(context.init);\n var headers_1 = [];\n if (context.init.headers instanceof Headers) {\n context.init.headers.forEach(function (value, key) {\n headers_1.push([key, value]);\n });\n } else if (Array.isArray(context.init.headers)) {\n context.init.headers.forEach(function (header) {\n headers_1.push(header);\n });\n } else if (context.init.headers) {\n Object.keys(context.init.headers).forEach(function (key) {\n headers_1.push([key, context.init.headers[key]]);\n });\n }\n context.init.headers = headers_1.concat(objectEntries(tracingHeaders));\n }\n });\n },\n traceXhr: function (context, xhr) {\n return injectHeadersIfTracingAllowed(configuration, context, sessionManager, function (tracingHeaders) {\n Object.keys(tracingHeaders).forEach(function (name) {\n xhr.setRequestHeader(name, tracingHeaders[name]);\n });\n });\n }\n };\n}\nfunction injectHeadersIfTracingAllowed(configuration, context, sessionManager, inject) {\n if (!isTracingSupported() || !sessionManager.findTrackedSession()) {\n return;\n }\n var tracingOption = find(configuration.allowedTracingUrls, function (tracingOption) {\n return matchList([tracingOption.match], context.url, true);\n });\n if (!tracingOption) {\n return;\n }\n context.traceSampled = !isNumber(configuration.traceSampleRate) || performDraw(configuration.traceSampleRate);\n if (!context.traceSampled && configuration.traceContextInjection !== TraceContextInjection.ALL) {\n return;\n }\n context.traceId = new TraceIdentifier();\n context.spanId = new TraceIdentifier();\n inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled, tracingOption.propagatorTypes));\n}\nexport function isTracingSupported() {\n return getCrypto() !== undefined;\n}\nfunction getCrypto() {\n return window.crypto || window.msCrypto;\n}\n/**\n * When trace is not sampled, set priority to '0' instead of not adding the tracing headers\n * to prepare the implementation for sampling delegation.\n */\nfunction makeTracingHeaders(traceId, spanId, traceSampled, propagatorTypes) {\n var tracingHeaders = {};\n propagatorTypes.forEach(function (propagatorType) {\n switch (propagatorType) {\n case 'datadog':\n {\n assign(tracingHeaders, {\n 'x-datadog-origin': 'rum',\n 'x-datadog-parent-id': spanId.toDecimalString(),\n 'x-datadog-sampling-priority': traceSampled ? '1' : '0',\n 'x-datadog-trace-id': traceId.toDecimalString()\n });\n break;\n }\n // https://www.w3.org/TR/trace-context/\n case 'tracecontext':\n {\n assign(tracingHeaders, {\n traceparent: \"00-0000000000000000\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-0\").concat(traceSampled ? '1' : '0')\n });\n break;\n }\n // https://github.com/openzipkin/b3-propagation\n case 'b3':\n {\n assign(tracingHeaders, {\n b3: \"\".concat(traceId.toPaddedHexadecimalString(), \"-\").concat(spanId.toPaddedHexadecimalString(), \"-\").concat(traceSampled ? '1' : '0')\n });\n break;\n }\n case 'b3multi':\n {\n assign(tracingHeaders, {\n 'X-B3-TraceId': traceId.toPaddedHexadecimalString(),\n 'X-B3-SpanId': spanId.toPaddedHexadecimalString(),\n 'X-B3-Sampled': traceSampled ? '1' : '0'\n });\n break;\n }\n }\n });\n return tracingHeaders;\n}\n/* eslint-disable no-bitwise */\nvar TraceIdentifier = /** @class */function () {\n function TraceIdentifier() {\n this.buffer = new Uint8Array(8);\n getCrypto().getRandomValues(this.buffer);\n this.buffer[0] = this.buffer[0] & 0x7f; // force 63-bit\n }\n TraceIdentifier.prototype.toString = function (radix) {\n var high = this.readInt32(0);\n var low = this.readInt32(4);\n var str = '';\n do {\n var mod = high % radix * 4294967296 + low;\n high = Math.floor(high / radix);\n low = Math.floor(mod / radix);\n str = (mod % radix).toString(radix) + str;\n } while (high || low);\n return str;\n };\n /**\n * Format used everywhere except the trace intake\n */\n TraceIdentifier.prototype.toDecimalString = function () {\n return this.toString(10);\n };\n /**\n * Format used by OTel headers\n */\n TraceIdentifier.prototype.toPaddedHexadecimalString = function () {\n var traceId = this.toString(16);\n return Array(17 - traceId.length).join('0') + traceId;\n };\n TraceIdentifier.prototype.readInt32 = function (offset) {\n return this.buffer[offset] * 16777216 + (this.buffer[offset + 1] << 16) + (this.buffer[offset + 2] << 8) + this.buffer[offset + 3];\n };\n return TraceIdentifier;\n}();\nexport { TraceIdentifier };\n/* eslint-enable no-bitwise */\n//# sourceMappingURL=tracer.js.map","import { getType, arrayFrom, isMatchOption, serializeConfiguration, assign, DefaultPrivacyLevel, TraceContextInjection, display, isPercentage, objectHasValue, validateAndBuildConfiguration } from '@datadog/browser-core';\nimport { isTracingOption } from './tracing/tracer';\nexport var DEFAULT_PROPAGATOR_TYPES = ['tracecontext', 'datadog'];\nexport function validateAndBuildRumConfiguration(initConfiguration) {\n var _a, _b;\n if (!initConfiguration.applicationId) {\n display.error('Application ID is not configured, no RUM data will be collected.');\n return;\n }\n if (initConfiguration.sessionReplaySampleRate !== undefined && !isPercentage(initConfiguration.sessionReplaySampleRate)) {\n display.error('Session Replay Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.traceSampleRate !== undefined && !isPercentage(initConfiguration.traceSampleRate)) {\n display.error('Trace Sample Rate should be a number between 0 and 100');\n return;\n }\n if (initConfiguration.excludedActivityUrls !== undefined && !Array.isArray(initConfiguration.excludedActivityUrls)) {\n display.error('Excluded Activity Urls should be an array');\n return;\n }\n var allowedTracingUrls = validateAndBuildTracingOptions(initConfiguration);\n if (!allowedTracingUrls) {\n return;\n }\n var baseConfiguration = validateAndBuildConfiguration(initConfiguration);\n if (!baseConfiguration) {\n return;\n }\n return assign({\n applicationId: initConfiguration.applicationId,\n version: initConfiguration.version,\n actionNameAttribute: initConfiguration.actionNameAttribute,\n sessionReplaySampleRate: (_a = initConfiguration.sessionReplaySampleRate) !== null && _a !== void 0 ? _a : 0,\n startSessionReplayRecordingManually: !!initConfiguration.startSessionReplayRecordingManually,\n traceSampleRate: initConfiguration.traceSampleRate,\n allowedTracingUrls: allowedTracingUrls,\n excludedActivityUrls: (_b = initConfiguration.excludedActivityUrls) !== null && _b !== void 0 ? _b : [],\n workerUrl: initConfiguration.workerUrl,\n compressIntakeRequests: !!initConfiguration.compressIntakeRequests,\n trackUserInteractions: !!initConfiguration.trackUserInteractions,\n trackViewsManually: !!initConfiguration.trackViewsManually,\n trackResources: !!initConfiguration.trackResources,\n trackLongTasks: !!initConfiguration.trackLongTasks,\n subdomain: initConfiguration.subdomain,\n defaultPrivacyLevel: objectHasValue(DefaultPrivacyLevel, initConfiguration.defaultPrivacyLevel) ? initConfiguration.defaultPrivacyLevel : DefaultPrivacyLevel.MASK,\n customerDataTelemetrySampleRate: 1,\n traceContextInjection: objectHasValue(TraceContextInjection, initConfiguration.traceContextInjection) ? initConfiguration.traceContextInjection : TraceContextInjection.ALL\n }, baseConfiguration);\n}\n/**\n * Validates allowedTracingUrls and converts match options to tracing options\n */\nfunction validateAndBuildTracingOptions(initConfiguration) {\n if (initConfiguration.allowedTracingUrls !== undefined) {\n if (!Array.isArray(initConfiguration.allowedTracingUrls)) {\n display.error('Allowed Tracing URLs should be an array');\n return;\n }\n if (initConfiguration.allowedTracingUrls.length !== 0 && initConfiguration.service === undefined) {\n display.error('Service needs to be configured when tracing is enabled');\n return;\n }\n // Convert from (MatchOption | TracingOption) to TracingOption, remove unknown properties\n var tracingOptions_1 = [];\n initConfiguration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n tracingOptions_1.push({\n match: option,\n propagatorTypes: DEFAULT_PROPAGATOR_TYPES\n });\n } else if (isTracingOption(option)) {\n tracingOptions_1.push(option);\n } else {\n display.warn('Allowed Tracing Urls parameters should be a string, RegExp, function, or an object. Ignoring parameter', option);\n }\n });\n return tracingOptions_1;\n }\n return [];\n}\n/**\n * Combines the selected tracing propagators from the different options in allowedTracingUrls\n */\nfunction getSelectedTracingPropagators(configuration) {\n var usedTracingPropagators = new Set();\n if (Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0) {\n configuration.allowedTracingUrls.forEach(function (option) {\n if (isMatchOption(option)) {\n DEFAULT_PROPAGATOR_TYPES.forEach(function (propagatorType) {\n return usedTracingPropagators.add(propagatorType);\n });\n } else if (getType(option) === 'object' && Array.isArray(option.propagatorTypes)) {\n // Ensure we have an array, as we cannot rely on types yet (configuration is provided by users)\n option.propagatorTypes.forEach(function (propagatorType) {\n return usedTracingPropagators.add(propagatorType);\n });\n }\n });\n }\n return arrayFrom(usedTracingPropagators);\n}\nexport function serializeRumConfiguration(configuration) {\n var baseSerializedConfiguration = serializeConfiguration(configuration);\n return assign({\n session_replay_sample_rate: configuration.sessionReplaySampleRate,\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually,\n trace_sample_rate: configuration.traceSampleRate,\n trace_context_injection: configuration.traceContextInjection,\n action_name_attribute: configuration.actionNameAttribute,\n use_allowed_tracing_urls: Array.isArray(configuration.allowedTracingUrls) && configuration.allowedTracingUrls.length > 0,\n selected_tracing_propagators: getSelectedTracingPropagators(configuration),\n default_privacy_level: configuration.defaultPrivacyLevel,\n use_excluded_activity_urls: Array.isArray(configuration.excludedActivityUrls) && configuration.excludedActivityUrls.length > 0,\n use_worker_url: !!configuration.workerUrl,\n compress_intake_requests: configuration.compressIntakeRequests,\n track_views_manually: configuration.trackViewsManually,\n track_user_interactions: configuration.trackUserInteractions,\n track_resources: configuration.trackResources,\n track_long_task: configuration.trackLongTasks\n }, baseSerializedConfiguration);\n}\n//# sourceMappingURL=configuration.js.map","import { BoundedBuffer, display, canUseEventBridge, displayAlreadyInitializedError, willSyntheticsInjectRum, noop, timeStampNow, clocksNow, assign, getEventBridge } from '@datadog/browser-core';\nimport { validateAndBuildRumConfiguration } from '../domain/configuration';\nexport function createPreStartStrategy(_a, getCommonContext, trackingConsentState, doStartRum) {\n var ignoreInitIfSyntheticsWillInjectRum = _a.ignoreInitIfSyntheticsWillInjectRum,\n startDeflateWorker = _a.startDeflateWorker;\n var bufferApiCalls = new BoundedBuffer();\n var firstStartViewCall;\n var deflateWorker;\n var cachedInitConfiguration;\n var cachedConfiguration;\n var trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartRum);\n function tryStartRum() {\n if (!cachedInitConfiguration || !cachedConfiguration || !trackingConsentState.isGranted()) {\n return;\n }\n trackingConsentStateSubscription.unsubscribe();\n var initialViewOptions;\n if (cachedConfiguration.trackViewsManually) {\n if (!firstStartViewCall) {\n return;\n }\n // An initial view is always created when starting RUM.\n // When tracking views automatically, any startView call before RUM start creates an extra\n // view.\n // When tracking views manually, we use the ViewOptions from the first startView call as the\n // initial view options, and we remove the actual startView call so we don't create an extra\n // view.\n bufferApiCalls.remove(firstStartViewCall.callback);\n initialViewOptions = firstStartViewCall.options;\n }\n var startRumResult = doStartRum(cachedInitConfiguration, cachedConfiguration, deflateWorker, initialViewOptions);\n bufferApiCalls.drain(startRumResult);\n }\n return {\n init: function (initConfiguration) {\n if (!initConfiguration) {\n display.error('Missing configuration');\n return;\n }\n var eventBridgeAvailable = canUseEventBridge();\n if (eventBridgeAvailable) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration);\n }\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration;\n if (cachedConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n return;\n }\n // If we are in a Synthetics test configured to automatically inject a RUM instance, we want\n // to completely discard the customer application RUM instance by ignoring their init() call.\n // But, we should not ignore the init() call from the Synthetics-injected RUM instance, so the\n // internal `ignoreInitIfSyntheticsWillInjectRum` option is here to bypass this condition.\n if (ignoreInitIfSyntheticsWillInjectRum && willSyntheticsInjectRum()) {\n return;\n }\n var configuration = validateAndBuildRumConfiguration(initConfiguration);\n if (!configuration) {\n return;\n }\n if (!eventBridgeAvailable && !configuration.sessionStoreStrategyType) {\n display.warn('No storage available for session. We will not send any data.');\n return;\n }\n if (configuration.compressIntakeRequests && !eventBridgeAvailable && startDeflateWorker) {\n deflateWorker = startDeflateWorker(configuration, 'Datadog RUM',\n // Worker initialization can fail asynchronously, especially in Firefox where even CSP\n // issues are reported asynchronously. For now, the SDK will continue its execution even if\n // data won't be sent to Datadog. We could improve this behavior in the future.\n noop);\n if (!deflateWorker) {\n // `startDeflateWorker` should have logged an error message explaining the issue\n return;\n }\n }\n cachedConfiguration = configuration;\n trackingConsentState.tryToInit(configuration.trackingConsent);\n tryStartRum();\n },\n get initConfiguration() {\n return cachedInitConfiguration;\n },\n getInternalContext: noop,\n stopSession: noop,\n addTiming: function (name, time) {\n if (time === void 0) {\n time = timeStampNow();\n }\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.addTiming(name, time);\n });\n },\n startView: function (options, startClocks) {\n if (startClocks === void 0) {\n startClocks = clocksNow();\n }\n var callback = function (startRumResult) {\n startRumResult.startView(options, startClocks);\n };\n bufferApiCalls.add(callback);\n if (!firstStartViewCall) {\n firstStartViewCall = {\n options: options,\n callback: callback\n };\n tryStartRum();\n }\n },\n addAction: function (action, commonContext) {\n if (commonContext === void 0) {\n commonContext = getCommonContext();\n }\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.addAction(action, commonContext);\n });\n },\n addError: function (providedError, commonContext) {\n if (commonContext === void 0) {\n commonContext = getCommonContext();\n }\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.addError(providedError, commonContext);\n });\n },\n addFeatureFlagEvaluation: function (key, value) {\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.addFeatureFlagEvaluation(key, value);\n });\n },\n startDurationVital: function (vitalStart) {\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.startDurationVital(vitalStart);\n });\n },\n stopDurationVital: function (vitalStart) {\n bufferApiCalls.add(function (startRumResult) {\n return startRumResult.stopDurationVital(vitalStart);\n });\n }\n };\n}\nfunction overrideInitConfigurationForBridge(initConfiguration) {\n var _a, _b;\n return assign({}, initConfiguration, {\n applicationId: '00000000-aaaa-0000-aaaa-000000000000',\n clientToken: 'empty',\n sessionSampleRate: 100,\n defaultPrivacyLevel: (_a = initConfiguration.defaultPrivacyLevel) !== null && _a !== void 0 ? _a : (_b = getEventBridge()) === null || _b === void 0 ? void 0 : _b.getPrivacyLevel()\n });\n}\n//# sourceMappingURL=preStartRum.js.map","import { isExperimentalFeatureEnabled, ExperimentalFeature } from '../tools/experimentalFeatures';\nimport { Observable } from '../tools/observable';\nimport { objectValues, includes } from '../tools/utils/polyfills';\nimport { noop } from '../tools/utils/functionUtils';\nimport { addEventListeners, addEventListener, DOM_EVENT } from './addEventListener';\nexport var PageExitReason = {\n HIDDEN: 'visibility_hidden',\n UNLOADING: 'before_unload',\n PAGEHIDE: 'page_hide',\n FROZEN: 'page_frozen'\n};\nexport function createPageExitObservable(configuration) {\n return new Observable(function (observable) {\n var pagehideEnabled = isExperimentalFeatureEnabled(ExperimentalFeature.PAGEHIDE);\n var stopListeners = addEventListeners(configuration, window, [DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.FREEZE, DOM_EVENT.PAGE_HIDE], function (event) {\n if (event.type === DOM_EVENT.PAGE_HIDE && pagehideEnabled) {\n /**\n * Only event that detect page unload events while being compatible with the back/forward cache (bfcache)\n */\n observable.notify({\n reason: PageExitReason.PAGEHIDE\n });\n } else if (event.type === DOM_EVENT.VISIBILITY_CHANGE && document.visibilityState === 'hidden') {\n /**\n * Only event that guarantee to fire on mobile devices when the page transitions to background state\n * (e.g. when user switches to a different application, goes to homescreen, etc), or is being unloaded.\n */\n observable.notify({\n reason: PageExitReason.HIDDEN\n });\n } else if (event.type === DOM_EVENT.FREEZE) {\n /**\n * After transitioning in background a tab can be freezed to preserve resources. (cf: https://developer.chrome.com/blog/page-lifecycle-api)\n * Allow to collect events happening between hidden and frozen state.\n */\n observable.notify({\n reason: PageExitReason.FROZEN\n });\n }\n }, {\n capture: true\n }).stop;\n var stopBeforeUnloadListener = noop;\n if (!pagehideEnabled) {\n stopBeforeUnloadListener = addEventListener(configuration, window, DOM_EVENT.BEFORE_UNLOAD, function () {\n observable.notify({\n reason: PageExitReason.UNLOADING\n });\n }).stop;\n }\n return function () {\n stopListeners();\n stopBeforeUnloadListener();\n };\n });\n}\nexport function isPageExitReason(reason) {\n return includes(objectValues(PageExitReason), reason);\n}\n//# sourceMappingURL=pageExitObservable.js.map","import { monitor, noop, Observable, getZoneJsOriginalValue } from '@datadog/browser-core';\nexport function createDOMMutationObservable() {\n var MutationObserver = getMutationObserverConstructor();\n return new Observable(function (observable) {\n if (!MutationObserver) {\n return;\n }\n var observer = new MutationObserver(monitor(function () {\n return observable.notify();\n }));\n observer.observe(document, {\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true\n });\n return function () {\n return observer.disconnect();\n };\n });\n}\nexport function getMutationObserverConstructor() {\n var constructor;\n var browserWindow = window;\n // Angular uses Zone.js to provide a context persisting across async tasks. Zone.js replaces the\n // global MutationObserver constructor with a patched version to support the context propagation.\n // There is an ongoing issue[1][2] with this setup when using a MutationObserver within a Angular\n // component: on some occasions, the callback is being called in an infinite loop, causing the\n // page to freeze (even if the callback is completely empty).\n //\n // To work around this issue, we try to get the original MutationObserver constructor stored by\n // Zone.js.\n //\n // [1] https://github.com/angular/angular/issues/26948\n // [2] https://github.com/angular/angular/issues/31712\n if (browserWindow.Zone) {\n // Zone.js 0.8.6+ is storing original class constructors into the browser 'window' object[3].\n //\n // [3] https://github.com/angular/angular/blob/6375fa79875c0fe7b815efc45940a6e6f5c9c9eb/packages/zone.js/lib/common/utils.ts#L288\n constructor = getZoneJsOriginalValue(browserWindow, 'MutationObserver');\n if (browserWindow.MutationObserver && constructor === browserWindow.MutationObserver) {\n // Anterior Zone.js versions (used in Angular 2) does not expose the original MutationObserver\n // in the 'window' object. Luckily, the patched MutationObserver class is storing an original\n // instance in its properties[4]. Let's get the original MutationObserver constructor from\n // there.\n //\n // [4] https://github.com/angular/zone.js/blob/v0.8.5/lib/common/utils.ts#L412\n var patchedInstance = new browserWindow.MutationObserver(noop);\n var originalInstance = getZoneJsOriginalValue(patchedInstance, 'originalInstance');\n constructor = originalInstance && originalInstance.constructor;\n }\n }\n if (!constructor) {\n constructor = browserWindow.MutationObserver;\n }\n return constructor;\n}\n//# sourceMappingURL=domMutationObservable.js.map","import { DOM_EVENT, addEventListener } from './addEventListener';\nexport function runOnReadyState(configuration, expectedReadyState, callback) {\n if (document.readyState === expectedReadyState || document.readyState === 'complete') {\n callback();\n } else {\n var eventName = expectedReadyState === 'complete' ? DOM_EVENT.LOAD : DOM_EVENT.DOM_CONTENT_LOADED;\n addEventListener(configuration, window, eventName, callback, {\n once: true\n });\n }\n}\n//# sourceMappingURL=runOnReadyState.js.map","import { addTelemetryDebug, elapsed, ExperimentalFeature, getPathName, includes, isExperimentalFeatureEnabled, isValidUrl, toServerDuration } from '@datadog/browser-core';\nexport var FAKE_INITIAL_DOCUMENT = 'initial_document';\nvar RESOURCE_TYPES = [[\"document\" /* ResourceType.DOCUMENT */, function (initiatorType) {\n return FAKE_INITIAL_DOCUMENT === initiatorType;\n}], [\"xhr\" /* ResourceType.XHR */, function (initiatorType) {\n return 'xmlhttprequest' === initiatorType;\n}], [\"fetch\" /* ResourceType.FETCH */, function (initiatorType) {\n return 'fetch' === initiatorType;\n}], [\"beacon\" /* ResourceType.BEACON */, function (initiatorType) {\n return 'beacon' === initiatorType;\n}], [\"css\" /* ResourceType.CSS */, function (_, path) {\n return /\\.css$/i.test(path);\n}], [\"js\" /* ResourceType.JS */, function (_, path) {\n return /\\.js$/i.test(path);\n}], [\"image\" /* ResourceType.IMAGE */, function (initiatorType, path) {\n return includes(['image', 'img', 'icon'], initiatorType) || /\\.(gif|jpg|jpeg|tiff|png|svg|ico)$/i.exec(path) !== null;\n}], [\"font\" /* ResourceType.FONT */, function (_, path) {\n return /\\.(woff|eot|woff2|ttf)$/i.exec(path) !== null;\n}], [\"media\" /* ResourceType.MEDIA */, function (initiatorType, path) {\n return includes(['audio', 'video'], initiatorType) || /\\.(mp3|mp4)$/i.exec(path) !== null;\n}]];\nexport function computeResourceKind(timing) {\n var url = timing.name;\n if (!isValidUrl(url)) {\n addTelemetryDebug(\"Failed to construct URL for \\\"\".concat(timing.name, \"\\\"\"));\n return \"other\" /* ResourceType.OTHER */;\n }\n var path = getPathName(url);\n for (var _i = 0, RESOURCE_TYPES_1 = RESOURCE_TYPES; _i < RESOURCE_TYPES_1.length; _i++) {\n var _a = RESOURCE_TYPES_1[_i],\n type = _a[0],\n isType = _a[1];\n if (isType(timing.initiatorType, path)) {\n return type;\n }\n }\n return \"other\" /* ResourceType.OTHER */;\n}\nfunction areInOrder() {\n var numbers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n numbers[_i] = arguments[_i];\n }\n for (var i = 1; i < numbers.length; i += 1) {\n if (numbers[i - 1] > numbers[i]) {\n return false;\n }\n }\n return true;\n}\nexport function isRequestKind(timing) {\n return timing.initiatorType === 'xmlhttprequest' || timing.initiatorType === 'fetch';\n}\nexport function computePerformanceResourceDuration(entry) {\n var duration = entry.duration,\n startTime = entry.startTime,\n responseEnd = entry.responseEnd;\n // Safari duration is always 0 on timings blocked by cross origin policies.\n if (duration === 0 && startTime < responseEnd) {\n return toServerDuration(elapsed(startTime, responseEnd));\n }\n return toServerDuration(duration);\n}\nexport function computePerformanceResourceDetails(entry) {\n var validEntry = toValidEntry(entry);\n if (!validEntry) {\n return undefined;\n }\n var startTime = validEntry.startTime,\n fetchStart = validEntry.fetchStart,\n redirectStart = validEntry.redirectStart,\n redirectEnd = validEntry.redirectEnd,\n domainLookupStart = validEntry.domainLookupStart,\n domainLookupEnd = validEntry.domainLookupEnd,\n connectStart = validEntry.connectStart,\n secureConnectionStart = validEntry.secureConnectionStart,\n connectEnd = validEntry.connectEnd,\n requestStart = validEntry.requestStart,\n responseStart = validEntry.responseStart,\n responseEnd = validEntry.responseEnd;\n var details = {\n download: formatTiming(startTime, responseStart, responseEnd),\n first_byte: formatTiming(startTime, requestStart, responseStart)\n };\n // Make sure a connection occurred\n if (fetchStart < connectEnd) {\n details.connect = formatTiming(startTime, connectStart, connectEnd);\n // Make sure a secure connection occurred\n if (connectStart <= secureConnectionStart && secureConnectionStart <= connectEnd) {\n details.ssl = formatTiming(startTime, secureConnectionStart, connectEnd);\n }\n }\n // Make sure a domain lookup occurred\n if (fetchStart < domainLookupEnd) {\n details.dns = formatTiming(startTime, domainLookupStart, domainLookupEnd);\n }\n // Make sure a redirection occurred\n if (startTime < redirectEnd) {\n details.redirect = formatTiming(startTime, redirectStart, redirectEnd);\n }\n return details;\n}\nexport function toValidEntry(entry) {\n if (isExperimentalFeatureEnabled(ExperimentalFeature.TOLERANT_RESOURCE_TIMINGS)) {\n return entry;\n }\n // Ensure timings are in the right order. On top of filtering out potential invalid\n // RumPerformanceResourceTiming, it will ignore entries from requests where timings cannot be\n // collected, for example cross origin requests without a \"Timing-Allow-Origin\" header allowing\n // it.\n var areCommonTimingsInOrder = areInOrder(entry.startTime, entry.fetchStart, entry.domainLookupStart, entry.domainLookupEnd, entry.connectStart, entry.connectEnd, entry.requestStart, entry.responseStart, entry.responseEnd);\n var areRedirectionTimingsInOrder = hasRedirection(entry) ? areInOrder(entry.startTime, entry.redirectStart, entry.redirectEnd, entry.fetchStart) : true;\n if (areCommonTimingsInOrder && areRedirectionTimingsInOrder) {\n return entry;\n }\n}\nfunction hasRedirection(entry) {\n return entry.redirectEnd > entry.startTime;\n}\nfunction formatTiming(origin, start, end) {\n if (origin <= start && start <= end) {\n return {\n duration: toServerDuration(elapsed(start, end)),\n start: toServerDuration(elapsed(origin, start))\n };\n }\n}\nexport function computeSize(entry) {\n // Make sure a request actually occurred\n if (entry.startTime < entry.responseStart) {\n var encodedBodySize = entry.encodedBodySize,\n decodedBodySize = entry.decodedBodySize,\n transferSize = entry.transferSize;\n return {\n size: decodedBodySize,\n encoded_body_size: encodedBodySize,\n decoded_body_size: decodedBodySize,\n transfer_size: transferSize\n };\n }\n return {\n size: undefined,\n encoded_body_size: undefined,\n decoded_body_size: undefined,\n transfer_size: undefined\n };\n}\nexport function isAllowedRequestUrl(configuration, url) {\n return url && !configuration.isIntakeUrl(url);\n}\nvar DATA_URL_REGEX = /data:(.+)?(;base64)?,/g;\nexport var MAX_ATTRIBUTE_VALUE_CHAR_LENGTH = 24000;\nexport function isLongDataUrl(url) {\n if (url.length <= MAX_ATTRIBUTE_VALUE_CHAR_LENGTH) {\n return false;\n } else if (url.substring(0, 5) === 'data:') {\n // Avoid String.match RangeError: Maximum call stack size exceeded\n url = url.substring(0, MAX_ATTRIBUTE_VALUE_CHAR_LENGTH);\n return true;\n }\n return false;\n}\nexport function sanitizeDataUrl(url) {\n return \"\".concat(url.match(DATA_URL_REGEX)[0], \"[...]\");\n}\n//# sourceMappingURL=resourceUtils.js.map","export function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isNodeShadowHost(node) {\n return isElementNode(node) && Boolean(node.shadowRoot);\n}\nexport function isNodeShadowRoot(node) {\n var shadowRoot = node;\n return !!shadowRoot.host && shadowRoot.nodeType === Node.DOCUMENT_FRAGMENT_NODE && isElementNode(shadowRoot.host);\n}\nexport function hasChildNodes(node) {\n return node.childNodes.length > 0 || isNodeShadowHost(node);\n}\nexport function forEachChildNodes(node, callback) {\n var child = node.firstChild;\n while (child) {\n callback(child);\n child = child.nextSibling;\n }\n if (isNodeShadowHost(node)) {\n callback(node.shadowRoot);\n }\n}\n/**\n * Return `host` in case if the current node is a shadow root otherwise will return the `parentNode`\n */\nexport function getParentNode(node) {\n return isNodeShadowRoot(node) ? node.host : node.parentNode;\n}\n//# sourceMappingURL=htmlDomUtils.js.map","import { dateNow, findCommaSeparatedValue, ONE_MINUTE } from '@datadog/browser-core';\nimport { isCommentNode, isTextNode } from '../../browser/htmlDomUtils';\nexport var INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD = 2 * ONE_MINUTE;\nexport function getDocumentTraceId(document) {\n var data = getDocumentTraceDataFromMeta(document) || getDocumentTraceDataFromComment(document);\n if (!data || data.traceTime <= dateNow() - INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD) {\n return undefined;\n }\n return data.traceId;\n}\nexport function getDocumentTraceDataFromMeta(document) {\n var traceIdMeta = document.querySelector('meta[name=dd-trace-id]');\n var traceTimeMeta = document.querySelector('meta[name=dd-trace-time]');\n return createDocumentTraceData(traceIdMeta && traceIdMeta.content, traceTimeMeta && traceTimeMeta.content);\n}\nexport function getDocumentTraceDataFromComment(document) {\n var comment = findTraceComment(document);\n if (!comment) {\n return undefined;\n }\n return createDocumentTraceData(findCommaSeparatedValue(comment, 'trace-id'), findCommaSeparatedValue(comment, 'trace-time'));\n}\nexport function createDocumentTraceData(traceId, rawTraceTime) {\n var traceTime = rawTraceTime && Number(rawTraceTime);\n if (!traceId || !traceTime) {\n return undefined;\n }\n return {\n traceId: traceId,\n traceTime: traceTime\n };\n}\nexport function findTraceComment(document) {\n // 1. Try to find the comment as a direct child of the document\n // Note: TSLint advises to use a 'for of', but TS doesn't allow to use 'for of' if the iterated\n // value is not an array or string (here, a NodeList).\n for (var i = 0; i < document.childNodes.length; i += 1) {\n var comment = getTraceCommentFromNode(document.childNodes[i]);\n if (comment) {\n return comment;\n }\n }\n // 2. If the comment is placed after the </html> tag, but have some space or new lines before or\n // after, the DOM parser will lift it (and the surrounding text) at the end of the <body> tag.\n // Try to look for the comment at the end of the <body> by by iterating over its child nodes in\n // reverse order, stopping if we come across a non-text node.\n if (document.body) {\n for (var i = document.body.childNodes.length - 1; i >= 0; i -= 1) {\n var node = document.body.childNodes[i];\n var comment = getTraceCommentFromNode(node);\n if (comment) {\n return comment;\n }\n if (!isTextNode(node)) {\n break;\n }\n }\n }\n}\nfunction getTraceCommentFromNode(node) {\n if (node && isCommentNode(node)) {\n var match = /^\\s*DATADOG;(.*?)\\s*$/.exec(node.data);\n if (match) {\n return match[1];\n }\n }\n}\n//# sourceMappingURL=getDocumentTraceId.js.map","import { dateNow, assign, addEventListeners, DOM_EVENT, getRelativeTime, isNumber, monitor, setTimeout, relativeNow, runOnReadyState, addEventListener, objectHasValue } from '@datadog/browser-core';\nimport { FAKE_INITIAL_DOCUMENT, isAllowedRequestUrl } from '../domain/resource/resourceUtils';\nimport { getDocumentTraceId } from '../domain/tracing/getDocumentTraceId';\n// We want to use a real enum (i.e. not a const enum) here, to be able to check whether an arbitrary\n// string is an expected performance entry\n// eslint-disable-next-line no-restricted-syntax\nexport var RumPerformanceEntryType;\n(function (RumPerformanceEntryType) {\n RumPerformanceEntryType[\"EVENT\"] = \"event\";\n RumPerformanceEntryType[\"FIRST_INPUT\"] = \"first-input\";\n RumPerformanceEntryType[\"LARGEST_CONTENTFUL_PAINT\"] = \"largest-contentful-paint\";\n RumPerformanceEntryType[\"LAYOUT_SHIFT\"] = \"layout-shift\";\n RumPerformanceEntryType[\"LONG_TASK\"] = \"longtask\";\n RumPerformanceEntryType[\"NAVIGATION\"] = \"navigation\";\n RumPerformanceEntryType[\"PAINT\"] = \"paint\";\n RumPerformanceEntryType[\"RESOURCE\"] = \"resource\";\n})(RumPerformanceEntryType || (RumPerformanceEntryType = {}));\nfunction supportPerformanceObject() {\n return window.performance !== undefined && 'getEntries' in performance;\n}\nexport function supportPerformanceTimingEvent(entryType) {\n return window.PerformanceObserver && PerformanceObserver.supportedEntryTypes !== undefined && PerformanceObserver.supportedEntryTypes.includes(entryType);\n}\nexport function startPerformanceCollection(lifeCycle, configuration) {\n var cleanupTasks = [];\n retrieveInitialDocumentResourceTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n if (supportPerformanceObject()) {\n var performanceEntries_1 = performance.getEntries();\n // Because the performance entry list can be quite large\n // delay the computation to prevent the SDK from blocking the main thread on init\n setTimeout(function () {\n return handleRumPerformanceEntries(lifeCycle, configuration, performanceEntries_1);\n });\n }\n if (window.PerformanceObserver) {\n var handlePerformanceEntryList_1 = monitor(function (entries) {\n return handleRumPerformanceEntries(lifeCycle, configuration, entries.getEntries());\n });\n var mainEntries = [RumPerformanceEntryType.RESOURCE, RumPerformanceEntryType.NAVIGATION, RumPerformanceEntryType.LONG_TASK, RumPerformanceEntryType.PAINT];\n var experimentalEntries = [RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT, RumPerformanceEntryType.FIRST_INPUT, RumPerformanceEntryType.LAYOUT_SHIFT, RumPerformanceEntryType.EVENT];\n try {\n // Experimental entries are not retrieved by performance.getEntries()\n // use a single PerformanceObserver with buffered flag by type\n // to get values that could happen before SDK init\n experimentalEntries.forEach(function (type) {\n var observer = new window.PerformanceObserver(handlePerformanceEntryList_1);\n observer.observe({\n type: type,\n buffered: true,\n // durationThreshold only impact PerformanceEventTiming entries used for INP computation which requires a threshold at 40 (default is 104ms)\n // cf: https://github.com/GoogleChrome/web-vitals/blob/3806160ffbc93c3c4abf210a167b81228172b31c/src/onINP.ts#L209\n durationThreshold: 40\n });\n cleanupTasks.push(function () {\n return observer.disconnect();\n });\n });\n } catch (e) {\n // Some old browser versions (ex: chrome 67) don't support the PerformanceObserver type and buffered options\n // In these cases, fallback to PerformanceObserver with entryTypes\n mainEntries.push.apply(mainEntries, experimentalEntries);\n }\n var mainObserver_1 = new PerformanceObserver(handlePerformanceEntryList_1);\n mainObserver_1.observe({\n entryTypes: mainEntries\n });\n cleanupTasks.push(function () {\n return mainObserver_1.disconnect();\n });\n if (supportPerformanceObject() && 'addEventListener' in performance) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1559377\n var removePerformanceListener = addEventListener(configuration, performance, 'resourcetimingbufferfull', function () {\n performance.clearResourceTimings();\n }).stop;\n cleanupTasks.push(removePerformanceListener);\n }\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION)) {\n retrieveNavigationTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n });\n }\n if (!supportPerformanceTimingEvent(RumPerformanceEntryType.FIRST_INPUT)) {\n var stopFirstInputTiming = retrieveFirstInputTiming(configuration, function (timing) {\n handleRumPerformanceEntries(lifeCycle, configuration, [timing]);\n }).stop;\n cleanupTasks.push(stopFirstInputTiming);\n }\n return {\n stop: function () {\n cleanupTasks.forEach(function (task) {\n return task();\n });\n }\n };\n}\nexport function retrieveInitialDocumentResourceTiming(configuration, callback) {\n runOnReadyState(configuration, 'interactive', function () {\n var timing;\n var forcedAttributes = {\n entryType: RumPerformanceEntryType.RESOURCE,\n initiatorType: FAKE_INITIAL_DOCUMENT,\n traceId: getDocumentTraceId(document),\n toJSON: function () {\n return assign({}, timing, {\n toJSON: undefined\n });\n }\n };\n if (supportPerformanceTimingEvent(RumPerformanceEntryType.NAVIGATION) && performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION).length > 0) {\n var navigationEntry = performance.getEntriesByType(RumPerformanceEntryType.NAVIGATION)[0];\n timing = assign(navigationEntry.toJSON(), forcedAttributes);\n } else {\n var relativePerformanceTiming = computeRelativePerformanceTiming();\n timing = assign(relativePerformanceTiming, {\n decodedBodySize: 0,\n encodedBodySize: 0,\n transferSize: 0,\n renderBlockingStatus: 'non-blocking',\n duration: relativePerformanceTiming.responseEnd,\n name: window.location.href,\n startTime: 0\n }, forcedAttributes);\n }\n callback(timing);\n });\n}\nfunction retrieveNavigationTiming(configuration, callback) {\n function sendFakeTiming() {\n callback(assign(computeRelativePerformanceTiming(), {\n entryType: RumPerformanceEntryType.NAVIGATION\n }));\n }\n runOnReadyState(configuration, 'complete', function () {\n // Send it a bit after the actual load event, so the \"loadEventEnd\" timing is accurate\n setTimeout(sendFakeTiming);\n });\n}\n/**\n * first-input timing entry polyfill based on\n * https://github.com/GoogleChrome/web-vitals/blob/master/src/lib/polyfills/firstInputPolyfill.ts\n */\nfunction retrieveFirstInputTiming(configuration, callback) {\n var startTimeStamp = dateNow();\n var timingSent = false;\n var removeEventListeners = addEventListeners(configuration, window, [DOM_EVENT.CLICK, DOM_EVENT.MOUSE_DOWN, DOM_EVENT.KEY_DOWN, DOM_EVENT.TOUCH_START, DOM_EVENT.POINTER_DOWN], function (evt) {\n // Only count cancelable events, which should trigger behavior important to the user.\n if (!evt.cancelable) {\n return;\n }\n // This timing will be used to compute the \"first Input delay\", which is the delta between\n // when the system received the event (e.g. evt.timeStamp) and when it could run the callback\n // (e.g. performance.now()).\n var timing = {\n entryType: RumPerformanceEntryType.FIRST_INPUT,\n processingStart: relativeNow(),\n processingEnd: relativeNow(),\n startTime: evt.timeStamp,\n duration: 0,\n // arbitrary value to avoid nullable duration and simplify INP logic\n name: ''\n };\n if (evt.type === DOM_EVENT.POINTER_DOWN) {\n sendTimingIfPointerIsNotCancelled(configuration, timing);\n } else {\n sendTiming(timing);\n }\n }, {\n passive: true,\n capture: true\n }).stop;\n return {\n stop: removeEventListeners\n };\n /**\n * Pointer events are a special case, because they can trigger main or compositor thread behavior.\n * We differentiate these cases based on whether or not we see a pointercancel event, which are\n * fired when we scroll. If we're scrolling we don't need to report input delay since FID excludes\n * scrolling and pinch/zooming.\n */\n function sendTimingIfPointerIsNotCancelled(configuration, timing) {\n addEventListeners(configuration, window, [DOM_EVENT.POINTER_UP, DOM_EVENT.POINTER_CANCEL], function (event) {\n if (event.type === DOM_EVENT.POINTER_UP) {\n sendTiming(timing);\n }\n }, {\n once: true\n });\n }\n function sendTiming(timing) {\n if (!timingSent) {\n timingSent = true;\n removeEventListeners();\n // In some cases the recorded delay is clearly wrong, e.g. it's negative or it's larger than\n // the time between now and when the page was loaded.\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/4\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/6\n // - https://github.com/GoogleChromeLabs/first-input-delay/issues/7\n var delay = timing.processingStart - timing.startTime;\n if (delay >= 0 && delay < dateNow() - startTimeStamp) {\n callback(timing);\n }\n }\n }\n}\nfunction computeRelativePerformanceTiming() {\n var result = {};\n var timing = performance.timing;\n for (var key in timing) {\n if (isNumber(timing[key])) {\n var numberKey = key;\n var timingElement = timing[numberKey];\n result[numberKey] = timingElement === 0 ? 0 : getRelativeTime(timingElement);\n }\n }\n return result;\n}\nfunction handleRumPerformanceEntries(lifeCycle, configuration, entries) {\n var rumPerformanceEntries = entries.filter(function (entry) {\n return objectHasValue(RumPerformanceEntryType, entry.entryType);\n });\n var rumAllowedPerformanceEntries = rumPerformanceEntries.filter(function (entry) {\n return !isIncompleteNavigation(entry) && !isForbiddenResource(configuration, entry);\n });\n if (rumAllowedPerformanceEntries.length) {\n lifeCycle.notify(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, rumAllowedPerformanceEntries);\n }\n}\nfunction isIncompleteNavigation(entry) {\n return entry.entryType === RumPerformanceEntryType.NAVIGATION && entry.loadEventEnd <= 0;\n}\nfunction isForbiddenResource(configuration, entry) {\n return entry.entryType === RumPerformanceEntryType.RESOURCE && !isAllowedRequestUrl(configuration, entry.name);\n}\n//# sourceMappingURL=performanceCollection.js.map","export var ErrorSource = {\n AGENT: 'agent',\n CONSOLE: 'console',\n CUSTOM: 'custom',\n LOGGER: 'logger',\n NETWORK: 'network',\n SOURCE: 'source',\n REPORT: 'report'\n};\n//# sourceMappingURL=error.types.js.map","import { setTimeout } from '../../tools/timer';\nimport { clocksNow, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { ErrorSource } from '../error/error.types';\nexport function createEventRateLimiter(eventType, limit, onLimitReached) {\n var eventCount = 0;\n var allowNextEvent = false;\n return {\n isLimitReached: function () {\n if (eventCount === 0) {\n setTimeout(function () {\n eventCount = 0;\n }, ONE_MINUTE);\n }\n eventCount += 1;\n if (eventCount <= limit || allowNextEvent) {\n allowNextEvent = false;\n return false;\n }\n if (eventCount === limit + 1) {\n allowNextEvent = true;\n try {\n onLimitReached({\n message: \"Reached max number of \".concat(eventType, \"s by minute: \").concat(limit),\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n });\n } finally {\n allowNextEvent = false;\n }\n }\n return true;\n }\n };\n}\n//# sourceMappingURL=createEventRateLimiter.js.map","import { getSyntheticsResultId, getSyntheticsTestId, willSyntheticsInjectRum } from '@datadog/browser-core';\nexport function getSyntheticsContext() {\n var testId = getSyntheticsTestId();\n var resultId = getSyntheticsResultId();\n if (testId && resultId) {\n return {\n test_id: testId,\n result_id: resultId,\n injected: willSyntheticsInjectRum()\n };\n }\n}\n//# sourceMappingURL=syntheticsContext.js.map","import { sanitize, deepClone, getType, objectEntries } from '@datadog/browser-core';\n/**\n * Current limitation:\n * - field path do not support array, 'a.b.c' only\n */\nexport function limitModification(object, modifiableFieldPaths, modifier) {\n var clone = deepClone(object);\n var result = modifier(clone);\n objectEntries(modifiableFieldPaths).forEach(function (_a) {\n var fieldPath = _a[0],\n fieldType = _a[1];\n var newValue = get(clone, fieldPath);\n var newType = getType(newValue);\n if (newType === fieldType) {\n set(object, fieldPath, sanitize(newValue));\n } else if (fieldType === 'object' && (newType === 'undefined' || newType === 'null')) {\n set(object, fieldPath, {});\n }\n });\n return result;\n}\nfunction get(object, path) {\n var current = object;\n for (var _i = 0, _a = path.split('.'); _i < _a.length; _i++) {\n var field = _a[_i];\n if (!isValidObjectContaining(current, field)) {\n return;\n }\n current = current[field];\n }\n return current;\n}\nfunction set(object, path, value) {\n var current = object;\n var fields = path.split('.');\n for (var i = 0; i < fields.length; i += 1) {\n var field = fields[i];\n if (!isValidObject(current)) {\n return;\n }\n if (i !== fields.length - 1) {\n current = current[field];\n } else {\n current[field] = value;\n }\n }\n}\nfunction isValidObject(object) {\n return getType(object) === 'object';\n}\nfunction isValidObjectContaining(object, field) {\n return isValidObject(object) && Object.prototype.hasOwnProperty.call(object, field);\n}\n//# sourceMappingURL=limitModification.js.map","import { combine, isEmptyObject, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, assign, round, isExperimentalFeatureEnabled, ExperimentalFeature, getConnectivity } from '@datadog/browser-core';\nimport { getSyntheticsContext } from './contexts/syntheticsContext';\nimport { limitModification } from './limitModification';\nvar VIEW_MODIFIABLE_FIELD_PATHS = {\n 'view.name': 'string',\n 'view.url': 'string',\n 'view.referrer': 'string'\n};\nvar USER_CUSTOMIZABLE_FIELD_PATHS = {\n context: 'object'\n};\nvar modifiableFieldPathsByEvent;\nexport function startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError) {\n var _a, _b;\n modifiableFieldPathsByEvent = (_a = {}, _a[\"view\" /* RumEventType.VIEW */] = VIEW_MODIFIABLE_FIELD_PATHS, _a[\"error\" /* RumEventType.ERROR */] = assign({\n 'error.message': 'string',\n 'error.stack': 'string',\n 'error.resource.url': 'string',\n 'error.fingerprint': 'string'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"resource\" /* RumEventType.RESOURCE */] = assign({\n 'resource.url': 'string'\n }, isExperimentalFeatureEnabled(ExperimentalFeature.WRITABLE_RESOURCE_GRAPHQL) && {\n 'resource.graphql': 'object'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"action\" /* RumEventType.ACTION */] = assign({\n 'action.target.name': 'string'\n }, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"long_task\" /* RumEventType.LONG_TASK */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a[\"vital\" /* RumEventType.VITAL */] = assign({}, USER_CUSTOMIZABLE_FIELD_PATHS, VIEW_MODIFIABLE_FIELD_PATHS), _a);\n var eventRateLimiters = (_b = {}, _b[\"error\" /* RumEventType.ERROR */] = createEventRateLimiter(\"error\" /* RumEventType.ERROR */, configuration.eventRateLimiterThreshold, reportError), _b[\"action\" /* RumEventType.ACTION */] = createEventRateLimiter(\"action\" /* RumEventType.ACTION */, configuration.eventRateLimiterThreshold, reportError), _b[\"vital\" /* RumEventType.VITAL */] = createEventRateLimiter(\"vital\" /* RumEventType.VITAL */, configuration.eventRateLimiterThreshold, reportError), _b);\n var syntheticsContext = getSyntheticsContext();\n lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (_a) {\n var startTime = _a.startTime,\n rawRumEvent = _a.rawRumEvent,\n domainContext = _a.domainContext,\n savedCommonContext = _a.savedCommonContext,\n customerContext = _a.customerContext;\n var viewContext = viewContexts.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n var commonContext = savedCommonContext || getCommonContext();\n var actionId = actionContexts.findActionId(startTime);\n var rumContext = {\n _dd: {\n format_version: 2,\n drift: currentDrift(),\n configuration: {\n session_sample_rate: round(configuration.sessionSampleRate, 3),\n session_replay_sample_rate: round(configuration.sessionReplaySampleRate, 3)\n },\n browser_sdk_version: canUseEventBridge() ? \"5.17.1\" : undefined\n },\n application: {\n id: configuration.applicationId\n },\n date: timeStampNow(),\n service: viewContext.service || configuration.service,\n version: viewContext.version || configuration.version,\n source: 'browser',\n session: {\n id: session.id,\n type: syntheticsContext ? \"synthetics\" /* SessionType.SYNTHETICS */ : ciVisibilityContext.get() ? \"ci_test\" /* SessionType.CI_TEST */ : \"user\" /* SessionType.USER */\n },\n view: {\n id: viewContext.id,\n name: viewContext.name,\n url: urlContext.url,\n referrer: urlContext.referrer\n },\n action: needToAssembleWithAction(rawRumEvent) && actionId ? {\n id: actionId\n } : undefined,\n synthetics: syntheticsContext,\n ci_test: ciVisibilityContext.get(),\n display: displayContext.get(),\n connectivity: getConnectivity()\n };\n var serverRumEvent = combine(rumContext, rawRumEvent);\n serverRumEvent.context = combine(commonContext.context, customerContext);\n if (!('has_replay' in serverRumEvent.session)) {\n ;\n serverRumEvent.session.has_replay = commonContext.hasReplay;\n }\n if (serverRumEvent.type === 'view') {\n ;\n serverRumEvent.session.sampled_for_replay = session.sessionReplayAllowed;\n }\n if (!isEmptyObject(commonContext.user)) {\n ;\n serverRumEvent.usr = commonContext.user;\n }\n if (shouldSend(serverRumEvent, configuration.beforeSend, domainContext, eventRateLimiters)) {\n if (isEmptyObject(serverRumEvent.context)) {\n delete serverRumEvent.context;\n }\n lifeCycle.notify(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, serverRumEvent);\n }\n }\n });\n}\nfunction shouldSend(event, beforeSend, domainContext, eventRateLimiters) {\n var _a;\n if (beforeSend) {\n var result = limitModification(event, modifiableFieldPathsByEvent[event.type], function (event) {\n return beforeSend(event, domainContext);\n });\n if (result === false && event.type !== \"view\" /* RumEventType.VIEW */) {\n return false;\n }\n if (result === false) {\n display.warn(\"Can't dismiss view events using beforeSend!\");\n }\n }\n var rateLimitReached = (_a = eventRateLimiters[event.type]) === null || _a === void 0 ? void 0 : _a.isLimitReached();\n return !rateLimitReached;\n}\nfunction needToAssembleWithAction(event) {\n return [\"error\" /* RumEventType.ERROR */, \"resource\" /* RumEventType.RESOURCE */, \"long_task\" /* RumEventType.LONG_TASK */].indexOf(event.type) !== -1;\n}\n//# sourceMappingURL=assembly.js.map","var AbstractLifeCycle = /** @class */function () {\n function AbstractLifeCycle() {\n this.callbacks = {};\n }\n AbstractLifeCycle.prototype.notify = function (eventType, data) {\n var eventCallbacks = this.callbacks[eventType];\n if (eventCallbacks) {\n eventCallbacks.forEach(function (callback) {\n return callback(data);\n });\n }\n };\n AbstractLifeCycle.prototype.subscribe = function (eventType, callback) {\n var _this = this;\n if (!this.callbacks[eventType]) {\n this.callbacks[eventType] = [];\n }\n this.callbacks[eventType].push(callback);\n return {\n unsubscribe: function () {\n _this.callbacks[eventType] = _this.callbacks[eventType].filter(function (other) {\n return callback !== other;\n });\n }\n };\n };\n return AbstractLifeCycle;\n}();\nexport { AbstractLifeCycle };\n//# sourceMappingURL=abstractLifeCycle.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { Observable } from '../tools/observable';\nimport { elapsed, clocksNow, timeStampNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nimport { shallowClone } from '../tools/utils/objectUtils';\nimport { addEventListener } from './addEventListener';\nvar xhrObservable;\nvar xhrContexts = new WeakMap();\nexport function initXhrObservable(configuration) {\n if (!xhrObservable) {\n xhrObservable = createXhrObservable(configuration);\n }\n return xhrObservable;\n}\nfunction createXhrObservable(configuration) {\n return new Observable(function (observable) {\n var stopInstrumentingStart = instrumentMethod(XMLHttpRequest.prototype, 'open', openXhr).stop;\n var stopInstrumentingSend = instrumentMethod(XMLHttpRequest.prototype, 'send', function (call) {\n sendXhr(call, configuration, observable);\n }).stop;\n var stopInstrumentingAbort = instrumentMethod(XMLHttpRequest.prototype, 'abort', abortXhr).stop;\n return function () {\n stopInstrumentingStart();\n stopInstrumentingSend();\n stopInstrumentingAbort();\n };\n });\n}\nfunction openXhr(_a) {\n var xhr = _a.target,\n _b = _a.parameters,\n method = _b[0],\n url = _b[1];\n xhrContexts.set(xhr, {\n state: 'open',\n method: String(method).toUpperCase(),\n url: normalizeUrl(String(url))\n });\n}\nfunction sendXhr(_a, configuration, observable) {\n var xhr = _a.target;\n var context = xhrContexts.get(xhr);\n if (!context) {\n return;\n }\n var startContext = context;\n startContext.state = 'start';\n startContext.startClocks = clocksNow();\n startContext.isAborted = false;\n startContext.xhr = xhr;\n var hasBeenReported = false;\n var stopInstrumentingOnReadyStateChange = instrumentMethod(xhr, 'onreadystatechange', function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n // Try to report the XHR as soon as possible, because the XHR may be mutated by the\n // application during a future event. For example, Angular is calling .abort() on\n // completed requests during an onreadystatechange event, so the status becomes '0'\n // before the request is collected.\n onEnd();\n }\n }).stop;\n var onEnd = function () {\n unsubscribeLoadEndListener();\n stopInstrumentingOnReadyStateChange();\n if (hasBeenReported) {\n return;\n }\n hasBeenReported = true;\n var completeContext = context;\n completeContext.state = 'complete';\n completeContext.duration = elapsed(startContext.startClocks.timeStamp, timeStampNow());\n completeContext.status = xhr.status;\n observable.notify(shallowClone(completeContext));\n };\n var unsubscribeLoadEndListener = addEventListener(configuration, xhr, 'loadend', onEnd).stop;\n observable.notify(startContext);\n}\nfunction abortXhr(_a) {\n var xhr = _a.target;\n var context = xhrContexts.get(xhr);\n if (context) {\n context.isAborted = true;\n }\n}\n//# sourceMappingURL=xhrObservable.js.map","import { AbstractLifeCycle } from '@datadog/browser-core';\nexport var LifeCycle = AbstractLifeCycle;\n//# sourceMappingURL=lifeCycle.js.map","import { setInterval, clearInterval } from './timer';\nimport { removeItem } from './utils/arrayUtils';\nimport { addDuration, relativeNow, ONE_MINUTE } from './utils/timeUtils';\nvar END_OF_TIMES = Infinity;\nexport var CLEAR_OLD_VALUES_INTERVAL = ONE_MINUTE;\n/**\n * Store and keep track of values spans. This whole class assumes that values are added in\n * chronological order (i.e. all entries have an increasing start time).\n */\nvar ValueHistory = /** @class */function () {\n function ValueHistory(expireDelay, maxEntries) {\n var _this = this;\n this.expireDelay = expireDelay;\n this.maxEntries = maxEntries;\n this.entries = [];\n this.clearOldValuesInterval = setInterval(function () {\n return _this.clearOldValues();\n }, CLEAR_OLD_VALUES_INTERVAL);\n }\n /**\n * Add a value to the history associated with a start time. Returns a reference to this newly\n * added entry that can be removed or closed.\n */\n ValueHistory.prototype.add = function (value, startTime) {\n var _this = this;\n var entry = {\n value: value,\n startTime: startTime,\n endTime: END_OF_TIMES,\n remove: function () {\n removeItem(_this.entries, entry);\n },\n close: function (endTime) {\n entry.endTime = endTime;\n }\n };\n if (this.maxEntries && this.entries.length >= this.maxEntries) {\n this.entries.pop();\n }\n this.entries.unshift(entry);\n return entry;\n };\n /**\n * Return the latest value that was active during `startTime`, or the currently active value\n * if no `startTime` is provided. This method assumes that entries are not overlapping.\n */\n ValueHistory.prototype.find = function (startTime) {\n if (startTime === void 0) {\n startTime = END_OF_TIMES;\n }\n for (var _i = 0, _a = this.entries; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (entry.startTime <= startTime) {\n if (startTime <= entry.endTime) {\n return entry.value;\n }\n break;\n }\n }\n };\n /**\n * Helper function to close the currently active value, if any. This method assumes that entries\n * are not overlapping.\n */\n ValueHistory.prototype.closeActive = function (endTime) {\n var latestEntry = this.entries[0];\n if (latestEntry && latestEntry.endTime === END_OF_TIMES) {\n latestEntry.close(endTime);\n }\n };\n /**\n * Return all values with an active period overlapping with the duration,\n * or all values that were active during `startTime` if no duration is provided,\n * or all currently active values if no `startTime` is provided.\n */\n ValueHistory.prototype.findAll = function (startTime, duration) {\n if (startTime === void 0) {\n startTime = END_OF_TIMES;\n }\n if (duration === void 0) {\n duration = 0;\n }\n var endTime = addDuration(startTime, duration);\n return this.entries.filter(function (entry) {\n return entry.startTime <= endTime && startTime <= entry.endTime;\n }).map(function (entry) {\n return entry.value;\n });\n };\n /**\n * Remove all entries from this collection.\n */\n ValueHistory.prototype.reset = function () {\n this.entries = [];\n };\n /**\n * Stop internal garbage collection of past entries.\n */\n ValueHistory.prototype.stop = function () {\n clearInterval(this.clearOldValuesInterval);\n };\n ValueHistory.prototype.clearOldValues = function () {\n var oldTimeThreshold = relativeNow() - this.expireDelay;\n while (this.entries.length > 0 && this.entries[this.entries.length - 1].endTime < oldTimeThreshold) {\n this.entries.pop();\n }\n };\n return ValueHistory;\n}();\nexport { ValueHistory };\n//# sourceMappingURL=valueHistory.js.map","import { SESSION_TIME_OUT_DELAY, ValueHistory } from '@datadog/browser-core';\nexport var VIEW_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startViewContexts(lifeCycle) {\n var viewContextHistory = new ValueHistory(VIEW_CONTEXT_TIME_OUT_DELAY);\n lifeCycle.subscribe(2 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (view) {\n viewContextHistory.add(buildViewContext(view), view.startClocks.relative);\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n viewContextHistory.closeActive(endClocks.relative);\n });\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n viewContextHistory.reset();\n });\n function buildViewContext(view) {\n return {\n service: view.service,\n version: view.version,\n id: view.id,\n name: view.name,\n startClocks: view.startClocks\n };\n }\n return {\n findView: function (startTime) {\n return viewContextHistory.find(startTime);\n },\n stop: function () {\n viewContextHistory.stop();\n }\n };\n}\n//# sourceMappingURL=viewContexts.js.map","import { setTimeout } from './timer';\nimport { callMonitored } from './monitor';\nimport { noop } from './utils/functionUtils';\nimport { arrayFrom, startsWith } from './utils/polyfills';\n/**\n * Instruments a method on a object, calling the given callback before the original method is\n * invoked. The callback receives an object with information about the method call.\n *\n * This function makes sure that we are \"good citizens\" regarding third party instrumentations: when\n * removing the instrumentation, the original method is usually restored, but if a third party\n * instrumentation was set after ours, we keep it in place and just replace our instrumentation with\n * a noop.\n *\n * Note: it is generally better to instrument methods that are \"owned\" by the object instead of ones\n * that are inherited from the prototype chain. Example:\n * * do: `instrumentMethod(Array.prototype, 'push', ...)`\n * * don't: `instrumentMethod([], 'push', ...)`\n *\n * This method is also used to set event handler properties (ex: window.onerror = ...), as it has\n * the same requirements as instrumenting a method:\n * * if the event handler is already set by a third party, we need to call it and not just blindly\n * override it.\n * * if the event handler is set by a third party after us, we need to keep it in place when\n * removing ours.\n *\n * @example\n *\n * instrumentMethod(window, 'fetch', ({ target, parameters, onPostCall }) => {\n * console.log('Before calling fetch on', target, 'with parameters', parameters)\n *\n * onPostCall((result) => {\n * console.log('After fetch calling on', target, 'with parameters', parameters, 'and result', result)\n * })\n * })\n */\nexport function instrumentMethod(targetPrototype, method, onPreCall) {\n var original = targetPrototype[method];\n if (typeof original !== 'function') {\n if (startsWith(method, 'on')) {\n original = noop;\n } else {\n return {\n stop: noop\n };\n }\n }\n var instrumentation = createInstrumentedMethod(original, onPreCall);\n var instrumentationWrapper = function () {\n if (typeof instrumentation !== 'function') {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return instrumentation.apply(this, arguments);\n };\n targetPrototype[method] = instrumentationWrapper;\n return {\n stop: function () {\n if (targetPrototype[method] === instrumentationWrapper) {\n targetPrototype[method] = original;\n } else {\n instrumentation = original;\n }\n }\n };\n}\nfunction createInstrumentedMethod(original, onPreCall) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return function () {\n var parameters = arrayFrom(arguments);\n var postCallCallback;\n callMonitored(onPreCall, null, [{\n target: this,\n parameters: parameters,\n onPostCall: function (callback) {\n postCallCallback = callback;\n }\n }]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n var result = original.apply(this, parameters);\n if (postCallCallback) {\n callMonitored(postCallCallback, null, [result]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return result;\n };\n}\nexport function instrumentSetter(targetPrototype, property, after) {\n var originalDescriptor = Object.getOwnPropertyDescriptor(targetPrototype, property);\n if (!originalDescriptor || !originalDescriptor.set || !originalDescriptor.configurable) {\n return {\n stop: noop\n };\n }\n var stoppedInstrumentation = noop;\n var instrumentation = function (target, value) {\n // put hooked setter into event loop to avoid of set latency\n setTimeout(function () {\n if (instrumentation !== stoppedInstrumentation) {\n after(target, value);\n }\n }, 0);\n };\n var instrumentationWrapper = function (value) {\n originalDescriptor.set.call(this, value);\n instrumentation(this, value);\n };\n Object.defineProperty(targetPrototype, property, {\n set: instrumentationWrapper\n });\n return {\n stop: function () {\n var _a;\n if (((_a = Object.getOwnPropertyDescriptor(targetPrototype, property)) === null || _a === void 0 ? void 0 : _a.set) === instrumentationWrapper) {\n Object.defineProperty(targetPrototype, property, originalDescriptor);\n }\n instrumentation = stoppedInstrumentation;\n }\n };\n}\n//# sourceMappingURL=instrumentMethod.js.map","import { instrumentMethod } from '../tools/instrumentMethod';\nimport { monitor } from '../tools/monitor';\nimport { Observable } from '../tools/observable';\nimport { clocksNow } from '../tools/utils/timeUtils';\nimport { normalizeUrl } from '../tools/utils/urlPolyfill';\nvar fetchObservable;\nexport function initFetchObservable() {\n if (!fetchObservable) {\n fetchObservable = createFetchObservable();\n }\n return fetchObservable;\n}\nfunction createFetchObservable() {\n return new Observable(function (observable) {\n if (!window.fetch) {\n return;\n }\n var stop = instrumentMethod(window, 'fetch', function (call) {\n return beforeSend(call, observable);\n }).stop;\n return stop;\n });\n}\nfunction beforeSend(_a, observable) {\n var parameters = _a.parameters,\n onPostCall = _a.onPostCall;\n var input = parameters[0],\n init = parameters[1];\n var methodFromParams = init && init.method;\n if (methodFromParams === undefined && input instanceof Request) {\n methodFromParams = input.method;\n }\n var method = methodFromParams !== undefined ? String(methodFromParams).toUpperCase() : 'GET';\n var url = input instanceof Request ? input.url : normalizeUrl(String(input));\n var startClocks = clocksNow();\n var context = {\n state: 'start',\n init: init,\n input: input,\n method: method,\n startClocks: startClocks,\n url: url\n };\n observable.notify(context);\n // Those properties can be changed by observable subscribers\n parameters[0] = context.input;\n parameters[1] = context.init;\n onPostCall(function (responsePromise) {\n return afterSend(observable, responsePromise, context);\n });\n}\nfunction afterSend(observable, responsePromise, startContext) {\n var reportFetch = function (response) {\n var context = startContext;\n context.state = 'resolve';\n if ('stack' in response || response instanceof Error) {\n context.status = 0;\n context.isAborted = response instanceof DOMException && response.code === DOMException.ABORT_ERR;\n context.error = response;\n } else if ('status' in response) {\n context.response = response;\n context.responseType = response.type;\n context.status = response.status;\n context.isAborted = false;\n }\n observable.notify(context);\n };\n responsePromise.then(monitor(reportFetch), monitor(reportFetch));\n}\n//# sourceMappingURL=fetchObservable.js.map","import { initFetchObservable, initXhrObservable, readBytesFromStream, elapsed, timeStampNow, tryToClone } from '@datadog/browser-core';\nimport { isAllowedRequestUrl } from './resource/resourceUtils';\nimport { startTracer } from './tracing/tracer';\nvar nextRequestIndex = 1;\nexport function startRequestCollection(lifeCycle, configuration, sessionManager) {\n var tracer = startTracer(configuration, sessionManager);\n trackXhr(lifeCycle, configuration, tracer);\n trackFetch(lifeCycle, configuration, tracer);\n}\nexport function trackXhr(lifeCycle, configuration, tracer) {\n var subscription = initXhrObservable(configuration).subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceXhr(context, context.xhr);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url\n });\n break;\n case 'complete':\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: context.duration,\n method: context.method,\n requestIndex: context.requestIndex,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"xhr\" /* RequestType.XHR */,\n url: context.url,\n xhr: context.xhr,\n isAborted: context.isAborted\n });\n break;\n }\n });\n return {\n stop: function () {\n return subscription.unsubscribe();\n }\n };\n}\nexport function trackFetch(lifeCycle, configuration, tracer) {\n var subscription = initFetchObservable().subscribe(function (rawContext) {\n var context = rawContext;\n if (!isAllowedRequestUrl(configuration, context.url)) {\n return;\n }\n switch (context.state) {\n case 'start':\n tracer.traceFetch(context);\n context.requestIndex = getNextRequestIndex();\n lifeCycle.notify(7 /* LifeCycleEventType.REQUEST_STARTED */, {\n requestIndex: context.requestIndex,\n url: context.url\n });\n break;\n case 'resolve':\n waitForResponseToComplete(context, function (duration) {\n tracer.clearTracingIfNeeded(context);\n lifeCycle.notify(8 /* LifeCycleEventType.REQUEST_COMPLETED */, {\n duration: duration,\n method: context.method,\n requestIndex: context.requestIndex,\n responseType: context.responseType,\n spanId: context.spanId,\n startClocks: context.startClocks,\n status: context.status,\n traceId: context.traceId,\n traceSampled: context.traceSampled,\n type: \"fetch\" /* RequestType.FETCH */,\n url: context.url,\n response: context.response,\n init: context.init,\n input: context.input,\n isAborted: context.isAborted\n });\n });\n break;\n }\n });\n return {\n stop: function () {\n return subscription.unsubscribe();\n }\n };\n}\nfunction getNextRequestIndex() {\n var result = nextRequestIndex;\n nextRequestIndex += 1;\n return result;\n}\nfunction waitForResponseToComplete(context, callback) {\n var clonedResponse = context.response && tryToClone(context.response);\n if (!clonedResponse || !clonedResponse.body) {\n // do not try to wait for the response if the clone failed, fetch error or null body\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n } else {\n readBytesFromStream(clonedResponse.body, function () {\n callback(elapsed(context.startClocks.timeStamp, timeStampNow()));\n }, {\n bytesLimit: Number.POSITIVE_INFINITY,\n collectStreamBody: false\n });\n }\n}\n//# sourceMappingURL=requestCollection.js.map","export function isServerError(status) {\n return status >= 500;\n}\nexport function tryToClone(response) {\n try {\n return response.clone();\n } catch (e) {\n // clone can throw if the response has already been used by another instrumentation or is disturbed\n return;\n }\n}\n//# sourceMappingURL=responseUtils.js.map","import { monitor } from './monitor';\nimport { noop } from './utils/functionUtils';\n/**\n * Read bytes from a ReadableStream until at least `limit` bytes have been read (or until the end of\n * the stream). The callback is invoked with the at most `limit` bytes, and indicates that the limit\n * has been exceeded if more bytes were available.\n */\nexport function readBytesFromStream(stream, callback, options) {\n var reader = stream.getReader();\n var chunks = [];\n var readBytesCount = 0;\n readMore();\n function readMore() {\n reader.read().then(monitor(function (result) {\n if (result.done) {\n onDone();\n return;\n }\n if (options.collectStreamBody) {\n chunks.push(result.value);\n }\n readBytesCount += result.value.length;\n if (readBytesCount > options.bytesLimit) {\n onDone();\n } else {\n readMore();\n }\n }), monitor(function (error) {\n return callback(error);\n }));\n }\n function onDone() {\n reader.cancel().catch(\n // we don't care if cancel fails, but we still need to catch the error to avoid reporting it\n // as an unhandled rejection\n noop);\n var bytes;\n var limitExceeded;\n if (options.collectStreamBody) {\n var completeBuffer_1;\n if (chunks.length === 1) {\n // optimization: if the response is small enough to fit in a single buffer (provided by the browser), just\n // use it directly.\n completeBuffer_1 = chunks[0];\n } else {\n // else, we need to copy buffers into a larger buffer to concatenate them.\n completeBuffer_1 = new Uint8Array(readBytesCount);\n var offset_1 = 0;\n chunks.forEach(function (chunk) {\n completeBuffer_1.set(chunk, offset_1);\n offset_1 += chunk.length;\n });\n }\n bytes = completeBuffer_1.slice(0, options.bytesLimit);\n limitExceeded = completeBuffer_1.length > options.bytesLimit;\n }\n callback(undefined, bytes, limitExceeded);\n }\n}\n//# sourceMappingURL=readBytesFromStream.js.map","import { noop } from '@datadog/browser-core';\nexport function trackEventCounts(_a) {\n var lifeCycle = _a.lifeCycle,\n isChildEvent = _a.isChildEvent,\n _b = _a.onChange,\n callback = _b === void 0 ? noop : _b;\n var eventCounts = {\n errorCount: 0,\n longTaskCount: 0,\n resourceCount: 0,\n actionCount: 0,\n frustrationCount: 0\n };\n var subscription = lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n var _a;\n if (event.type === 'view' || event.type === 'vital' || !isChildEvent(event)) {\n return;\n }\n switch (event.type) {\n case \"error\" /* RumEventType.ERROR */:\n eventCounts.errorCount += 1;\n callback();\n break;\n case \"action\" /* RumEventType.ACTION */:\n eventCounts.actionCount += 1;\n if (event.action.frustration) {\n eventCounts.frustrationCount += event.action.frustration.type.length;\n }\n callback();\n break;\n case \"long_task\" /* RumEventType.LONG_TASK */:\n eventCounts.longTaskCount += 1;\n callback();\n break;\n case \"resource\" /* RumEventType.RESOURCE */:\n if (!((_a = event._dd) === null || _a === void 0 ? void 0 : _a.discarded)) {\n eventCounts.resourceCount += 1;\n callback();\n }\n break;\n }\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n },\n eventCounts: eventCounts\n };\n}\n//# sourceMappingURL=trackEventCounts.js.map","import { instrumentMethod, matchList, monitor, Observable, timeStampNow, setTimeout, clearTimeout } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../browser/performanceCollection';\n// Delay to wait for a page activity to validate the tracking process\nexport var PAGE_ACTIVITY_VALIDATION_DELAY = 100;\n// Delay to wait after a page activity to end the tracking process\nexport var PAGE_ACTIVITY_END_DELAY = 100;\n/**\n * Wait for the page activity end\n *\n * Detection lifecycle:\n * ```\n * Wait page activity end\n * .-------------------'--------------------.\n * v v\n * [Wait for a page activity ] [Wait for a maximum duration]\n * [timeout: VALIDATION_DELAY] [ timeout: maxDuration ]\n * / \\ |\n * v v |\n * [No page activity] [Page activity] |\n * | |,----------------------. |\n * v v | |\n * (Discard) [Wait for a page activity] | |\n * [ timeout: END_DELAY ] | |\n * / \\ | |\n * v v | |\n * [No page activity] [Page activity] | |\n * | | | |\n * | '------------' |\n * '-----------. ,--------------------'\n * v\n * (End)\n * ```\n *\n * Note: by assuming that maxDuration is greater than VALIDATION_DELAY, we are sure that if the\n * process is still alive after maxDuration, it has been validated.\n */\nexport function waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, pageActivityEndCallback, maxDuration) {\n var pageActivityObservable = createPageActivityObservable(lifeCycle, domMutationObservable, configuration);\n return doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration);\n}\nexport function doWaitPageActivityEnd(pageActivityObservable, pageActivityEndCallback, maxDuration) {\n var pageActivityEndTimeoutId;\n var hasCompleted = false;\n var validationTimeoutId = setTimeout(monitor(function () {\n return complete({\n hadActivity: false\n });\n }), PAGE_ACTIVITY_VALIDATION_DELAY);\n var maxDurationTimeoutId = maxDuration !== undefined ? setTimeout(monitor(function () {\n return complete({\n hadActivity: true,\n end: timeStampNow()\n });\n }), maxDuration) : undefined;\n var pageActivitySubscription = pageActivityObservable.subscribe(function (_a) {\n var isBusy = _a.isBusy;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n var lastChangeTime = timeStampNow();\n if (!isBusy) {\n pageActivityEndTimeoutId = setTimeout(monitor(function () {\n return complete({\n hadActivity: true,\n end: lastChangeTime\n });\n }), PAGE_ACTIVITY_END_DELAY);\n }\n });\n var stop = function () {\n hasCompleted = true;\n clearTimeout(validationTimeoutId);\n clearTimeout(pageActivityEndTimeoutId);\n clearTimeout(maxDurationTimeoutId);\n pageActivitySubscription.unsubscribe();\n };\n function complete(event) {\n if (hasCompleted) {\n return;\n }\n stop();\n pageActivityEndCallback(event);\n }\n return {\n stop: stop\n };\n}\nexport function createPageActivityObservable(lifeCycle, domMutationObservable, configuration) {\n return new Observable(function (observable) {\n var subscriptions = [];\n var firstRequestIndex;\n var pendingRequestsCount = 0;\n subscriptions.push(domMutationObservable.subscribe(notifyPageActivity), lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n if (entries.some(function (entry) {\n return entry.entryType === RumPerformanceEntryType.RESOURCE && !isExcludedUrl(configuration, entry.name);\n })) {\n notifyPageActivity();\n }\n }), lifeCycle.subscribe(7 /* LifeCycleEventType.REQUEST_STARTED */, function (startEvent) {\n if (isExcludedUrl(configuration, startEvent.url)) {\n return;\n }\n if (firstRequestIndex === undefined) {\n firstRequestIndex = startEvent.requestIndex;\n }\n pendingRequestsCount += 1;\n notifyPageActivity();\n }), lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n if (isExcludedUrl(configuration, request.url) || firstRequestIndex === undefined ||\n // If the request started before the tracking start, ignore it\n request.requestIndex < firstRequestIndex) {\n return;\n }\n pendingRequestsCount -= 1;\n notifyPageActivity();\n }));\n var stopTrackingWindowOpen = trackWindowOpen(notifyPageActivity).stop;\n return function () {\n stopTrackingWindowOpen();\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n };\n function notifyPageActivity() {\n observable.notify({\n isBusy: pendingRequestsCount > 0\n });\n }\n });\n}\nfunction isExcludedUrl(configuration, requestUrl) {\n return matchList(configuration.excludedActivityUrls, requestUrl);\n}\nfunction trackWindowOpen(callback) {\n return instrumentMethod(window, 'open', callback);\n}\n//# sourceMappingURL=waitPageActivityEnd.js.map","// https://github.com/jquery/jquery/blob/a684e6ba836f7c553968d7d026ed7941e1a612d8/src/selector/escapeSelector.js\nexport function cssEscape(str) {\n if (window.CSS && window.CSS.escape) {\n return window.CSS.escape(str);\n }\n // eslint-disable-next-line no-control-regex\n return str.replace(/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g, function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === '\\0') {\n return '\\uFFFD';\n }\n // Control characters and (dependent upon position) numbers get escaped as code points\n return \"\".concat(ch.slice(0, -1), \"\\\\\").concat(ch.charCodeAt(ch.length - 1).toString(16), \" \");\n }\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\".concat(ch);\n });\n}\nexport function elementMatches(element, selector) {\n if (element.matches) {\n return element.matches(selector);\n }\n // IE11 support\n if (element.msMatchesSelector) {\n return element.msMatchesSelector(selector);\n }\n return false;\n}\n/**\n * Return the parentElement of an node\n *\n * In cases where parentElement is not supported, such as in IE11 for SVG nodes, we fallback to parentNode\n */\nexport function getParentElement(node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n while (node.parentNode) {\n if (node.parentNode.nodeType === Node.ELEMENT_NODE) {\n return node.parentNode;\n }\n node = node.parentNode;\n }\n return null;\n}\n// let parentNode = node.parentNode\n// while (parentNode !== null && parentNode.nodeType !== Node.ELEMENT_NODE) {\n// parentNode = node.parentNode\n// }\n// let parentNode = document.querySelector('span').parentNode\n// while (parentNode !== null && parentNode.nodeType !== Node.ELEMENT_NODE) {\n// parentNode = node.parentNode\n// }\n// console.log(parentNode)\n/**\n * Return the classList of an element or an array of classes if classList is not supported\n *\n * In cases where classList is not supported, such as in IE11 for SVG and MathML elements,\n * we fallback to using element.getAttribute('class').\n * We opt for element.getAttribute('class') over element.className because className returns an SVGAnimatedString for SVG elements.\n */\nexport function getClassList(element) {\n var _a;\n if (element.classList) {\n return element.classList;\n }\n var classes = (_a = element.getAttribute('class')) === null || _a === void 0 ? void 0 : _a.trim();\n return classes ? classes.split(/\\s+/) : [];\n}\n//# sourceMappingURL=polyfills.js.map","import { safeTruncate, isIE, find } from '@datadog/browser-core';\nimport { getParentElement } from '../../browser/polyfills';\n/**\n * Get the action name from the attribute 'data-dd-action-name' on the element or any of its parent.\n * It can also be retrieved from a user defined attribute.\n */\nexport var DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE = 'data-dd-action-name';\nexport function getActionNameFromElement(element, userProgrammaticAttribute) {\n // Proceed to get the action name in two steps:\n // * first, get the name programmatically, explicitly defined by the user.\n // * then, use strategies that are known to return good results. Those strategies will be used on\n // the element and a few parents, but it's likely that they won't succeed at all.\n // * if no name is found this way, use strategies returning less accurate names as a fallback.\n // Those are much likely to succeed.\n return getActionNameFromElementProgrammatically(element, DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE) || userProgrammaticAttribute && getActionNameFromElementProgrammatically(element, userProgrammaticAttribute) || getActionNameFromElementForStrategies(element, userProgrammaticAttribute, priorityStrategies) || getActionNameFromElementForStrategies(element, userProgrammaticAttribute, fallbackStrategies) || '';\n}\nfunction getActionNameFromElementProgrammatically(targetElement, programmaticAttribute) {\n var elementWithAttribute;\n // We don't use getActionNameFromElementForStrategies here, because we want to consider all parents,\n // without limit. It is up to the user to declare a relevant naming strategy.\n // If available, use element.closest() to match get the attribute from the element or any of its\n // parent. Else fallback to a more traditional implementation.\n if (supportsElementClosest()) {\n elementWithAttribute = targetElement.closest(\"[\".concat(programmaticAttribute, \"]\"));\n } else {\n var element = targetElement;\n while (element) {\n if (element.hasAttribute(programmaticAttribute)) {\n elementWithAttribute = element;\n break;\n }\n element = getParentElement(element);\n }\n }\n if (!elementWithAttribute) {\n return;\n }\n var name = elementWithAttribute.getAttribute(programmaticAttribute);\n return truncate(normalizeWhitespace(name.trim()));\n}\nvar priorityStrategies = [\n// associated LABEL text\nfunction (element, userProgrammaticAttribute) {\n // IE does not support element.labels, so we fallback to a CSS selector based on the element id\n // instead\n if (supportsLabelProperty()) {\n if ('labels' in element && element.labels && element.labels.length > 0) {\n return getTextualContent(element.labels[0], userProgrammaticAttribute);\n }\n } else if (element.id) {\n var label = element.ownerDocument && find(element.ownerDocument.querySelectorAll('label'), function (label) {\n return label.htmlFor === element.id;\n });\n return label && getTextualContent(label, userProgrammaticAttribute);\n }\n},\n// INPUT button (and associated) value\nfunction (element) {\n if (element.nodeName === 'INPUT') {\n var input = element;\n var type = input.getAttribute('type');\n if (type === 'button' || type === 'submit' || type === 'reset') {\n return input.value;\n }\n }\n},\n// BUTTON, LABEL or button-like element text\nfunction (element, userProgrammaticAttribute) {\n if (element.nodeName === 'BUTTON' || element.nodeName === 'LABEL' || element.getAttribute('role') === 'button') {\n return getTextualContent(element, userProgrammaticAttribute);\n }\n}, function (element) {\n return element.getAttribute('aria-label');\n},\n// associated element text designated by the aria-labelledby attribute\nfunction (element, userProgrammaticAttribute) {\n var labelledByAttribute = element.getAttribute('aria-labelledby');\n if (labelledByAttribute) {\n return labelledByAttribute.split(/\\s+/).map(function (id) {\n return getElementById(element, id);\n }).filter(function (label) {\n return Boolean(label);\n }).map(function (element) {\n return getTextualContent(element, userProgrammaticAttribute);\n }).join(' ');\n }\n}, function (element) {\n return element.getAttribute('alt');\n}, function (element) {\n return element.getAttribute('name');\n}, function (element) {\n return element.getAttribute('title');\n}, function (element) {\n return element.getAttribute('placeholder');\n},\n// SELECT first OPTION text\nfunction (element, userProgrammaticAttribute) {\n if ('options' in element && element.options.length > 0) {\n return getTextualContent(element.options[0], userProgrammaticAttribute);\n }\n}];\nvar fallbackStrategies = [function (element, userProgrammaticAttribute) {\n return getTextualContent(element, userProgrammaticAttribute);\n}];\n/**\n * Iterates over the target element and its parent, using the strategies list to get an action name.\n * Each strategies are applied on each element, stopping as soon as a non-empty value is returned.\n */\nvar MAX_PARENTS_TO_CONSIDER = 10;\nfunction getActionNameFromElementForStrategies(targetElement, userProgrammaticAttribute, strategies) {\n var element = targetElement;\n var recursionCounter = 0;\n while (recursionCounter <= MAX_PARENTS_TO_CONSIDER && element && element.nodeName !== 'BODY' && element.nodeName !== 'HTML' && element.nodeName !== 'HEAD') {\n for (var _i = 0, strategies_1 = strategies; _i < strategies_1.length; _i++) {\n var strategy = strategies_1[_i];\n var name_1 = strategy(element, userProgrammaticAttribute);\n if (typeof name_1 === 'string') {\n var trimmedName = name_1.trim();\n if (trimmedName) {\n return truncate(normalizeWhitespace(trimmedName));\n }\n }\n }\n // Consider a FORM as a contextual limit to get the action name. This is experimental and may\n // be reconsidered in the future.\n if (element.nodeName === 'FORM') {\n break;\n }\n element = getParentElement(element);\n recursionCounter += 1;\n }\n}\nfunction normalizeWhitespace(s) {\n return s.replace(/\\s+/g, ' ');\n}\nfunction truncate(s) {\n return s.length > 100 ? \"\".concat(safeTruncate(s, 100), \" [...]\") : s;\n}\nfunction getElementById(refElement, id) {\n // Use the element ownerDocument here, because tests are executed in an iframe, so\n // document.getElementById won't work.\n return refElement.ownerDocument ? refElement.ownerDocument.getElementById(id) : null;\n}\nfunction getTextualContent(element, userProgrammaticAttribute) {\n if (element.isContentEditable) {\n return;\n }\n if ('innerText' in element) {\n var text_1 = element.innerText;\n var removeTextFromElements = function (query) {\n var list = element.querySelectorAll(query);\n for (var index = 0; index < list.length; index += 1) {\n var element_1 = list[index];\n if ('innerText' in element_1) {\n var textToReplace = element_1.innerText;\n if (textToReplace && textToReplace.trim().length > 0) {\n text_1 = text_1.replace(textToReplace, '');\n }\n }\n }\n };\n if (!supportsInnerTextScriptAndStyleRemoval()) {\n // remove the inner text of SCRIPT and STYLES from the result. This is a bit dirty, but should\n // be relatively fast and work in most cases.\n removeTextFromElements('script, style');\n }\n // remove the text of elements with programmatic attribute value\n removeTextFromElements(\"[\".concat(DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE, \"]\"));\n if (userProgrammaticAttribute) {\n removeTextFromElements(\"[\".concat(userProgrammaticAttribute, \"]\"));\n }\n return text_1;\n }\n return element.textContent;\n}\n/**\n * Returns true if element.innerText excludes the text from inline SCRIPT and STYLE element. This\n * should be the case everywhere except on Internet Explorer 10 and 11 (see [1])\n *\n * The innerText property relies on what is actually rendered to compute its output, so to check if\n * it actually excludes SCRIPT and STYLE content, a solution would be to create a style element, set\n * its content to '*', inject it in the document body, and check if the style element innerText\n * property returns '*'. Using a new `document` instance won't work as it is not rendered.\n *\n * This solution requires specific CSP rules (see [2]) to be set by the customer. We want to avoid\n * this, so instead we rely on browser detection. In case of false negative, the impact should be\n * low, since we rely on this result to remove the SCRIPT and STYLE innerText (which will be empty)\n * from a parent element innerText.\n *\n * [1]: https://web.archive.org/web/20210602165716/http://perfectionkills.com/the-poor-misunderstood-innerText/#diff-with-textContent\n * [2]: https://github.com/DataDog/browser-sdk/issues/1084\n */\nfunction supportsInnerTextScriptAndStyleRemoval() {\n return !isIE();\n}\n/**\n * Returns true if the browser supports the element.labels property. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsLabelPropertyResult;\nfunction supportsLabelProperty() {\n if (supportsLabelPropertyResult === undefined) {\n supportsLabelPropertyResult = 'labels' in HTMLInputElement.prototype;\n }\n return supportsLabelPropertyResult;\n}\n/**\n * Returns true if the browser supports the element.closest method. This should be the case\n * everywhere except on Internet Explorer.\n * Note: The result is computed lazily, because we don't want any DOM access when the SDK is\n * evaluated.\n */\nvar supportsElementClosestResult;\nfunction supportsElementClosest() {\n if (supportsElementClosestResult === undefined) {\n supportsElementClosestResult = 'closest' in HTMLElement.prototype;\n }\n return supportsElementClosestResult;\n}\n//# sourceMappingURL=getActionNameFromElement.js.map","import { cssEscape, getClassList, getParentElement } from '../browser/polyfills';\nimport { DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE } from './action/getActionNameFromElement';\n/**\n * Stable attributes are attributes that are commonly used to identify parts of a UI (ex:\n * component). Those attribute values should not be generated randomly (hardcoded most of the time)\n * and stay the same across deploys. They are not necessarily unique across the document.\n */\nexport var STABLE_ATTRIBUTES = [DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE,\n// Common test attributes (list provided by google recorder)\n'data-testid', 'data-test', 'data-qa', 'data-cy', 'data-test-id', 'data-qa-id', 'data-testing',\n// FullStory decorator attributes:\n'data-component', 'data-element', 'data-source-file'];\n// Selectors to use if they target a single element on the whole document. Those selectors are\n// considered as \"stable\" and uniquely identify an element regardless of the page state. If we find\n// one, we should consider the selector \"complete\" and stop iterating over ancestors.\nvar GLOBALLY_UNIQUE_SELECTOR_GETTERS = [getStableAttributeSelector, getIDSelector];\n// Selectors to use if they target a single element among an element descendants. Those selectors\n// are more brittle than \"globally unique\" selectors and should be combined with ancestor selectors\n// to improve specificity.\nvar UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS = [getStableAttributeSelector, getClassSelector, getTagNameSelector];\nexport function getSelectorFromElement(targetElement, actionNameAttribute) {\n var targetElementSelector = '';\n var element = targetElement;\n while (element && element.nodeName !== 'HTML') {\n var globallyUniqueSelector = findSelector(element, GLOBALLY_UNIQUE_SELECTOR_GETTERS, isSelectorUniqueGlobally, actionNameAttribute, targetElementSelector);\n if (globallyUniqueSelector) {\n return globallyUniqueSelector;\n }\n var uniqueSelectorAmongChildren = findSelector(element, UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS, isSelectorUniqueAmongSiblings, actionNameAttribute, targetElementSelector);\n targetElementSelector = uniqueSelectorAmongChildren || combineSelector(getPositionSelector(element), targetElementSelector);\n element = getParentElement(element);\n }\n return targetElementSelector;\n}\nfunction isGeneratedValue(value) {\n // To compute the \"URL path group\", the backend replaces every URL path parts as a question mark\n // if it thinks the part is an identifier. The condition it uses is to checks whether a digit is\n // present.\n //\n // Here, we use the same strategy: if a the value contains a digit, we consider it generated. This\n // strategy might be a bit naive and fail in some cases, but there are many fallbacks to generate\n // CSS selectors so it should be fine most of the time. We might want to allow customers to\n // provide their own `isGeneratedValue` at some point.\n return /[0-9]/.test(value);\n}\nfunction getIDSelector(element) {\n if (element.id && !isGeneratedValue(element.id)) {\n return \"#\".concat(cssEscape(element.id));\n }\n}\nfunction getClassSelector(element) {\n if (element.tagName === 'BODY') {\n return;\n }\n var classList = getClassList(element);\n for (var i = 0; i < classList.length; i += 1) {\n var className = classList[i];\n if (isGeneratedValue(className)) {\n continue;\n }\n return \"\".concat(cssEscape(element.tagName), \".\").concat(cssEscape(className));\n }\n}\nfunction getTagNameSelector(element) {\n return cssEscape(element.tagName);\n}\nfunction getStableAttributeSelector(element, actionNameAttribute) {\n if (actionNameAttribute) {\n var selector = getAttributeSelector(actionNameAttribute);\n if (selector) {\n return selector;\n }\n }\n for (var _i = 0, STABLE_ATTRIBUTES_1 = STABLE_ATTRIBUTES; _i < STABLE_ATTRIBUTES_1.length; _i++) {\n var attributeName = STABLE_ATTRIBUTES_1[_i];\n var selector = getAttributeSelector(attributeName);\n if (selector) {\n return selector;\n }\n }\n function getAttributeSelector(attributeName) {\n if (element.hasAttribute(attributeName)) {\n return \"\".concat(cssEscape(element.tagName), \"[\").concat(attributeName, \"=\\\"\").concat(cssEscape(element.getAttribute(attributeName)), \"\\\"]\");\n }\n }\n}\nfunction getPositionSelector(element) {\n var sibling = getParentElement(element).firstElementChild;\n var elementIndex = 1;\n while (sibling && sibling !== element) {\n if (sibling.tagName === element.tagName) {\n elementIndex += 1;\n }\n sibling = sibling.nextElementSibling;\n }\n return \"\".concat(cssEscape(element.tagName), \":nth-of-type(\").concat(elementIndex, \")\");\n}\nfunction findSelector(element, selectorGetters, predicate, actionNameAttribute, childSelector) {\n for (var _i = 0, selectorGetters_1 = selectorGetters; _i < selectorGetters_1.length; _i++) {\n var selectorGetter = selectorGetters_1[_i];\n var elementSelector = selectorGetter(element, actionNameAttribute);\n if (!elementSelector) {\n continue;\n }\n var fullSelector = combineSelector(elementSelector, childSelector);\n if (predicate(element, fullSelector)) {\n return fullSelector;\n }\n }\n}\n/**\n * Check whether the selector is unique among the whole document.\n */\nfunction isSelectorUniqueGlobally(element, selector) {\n return element.ownerDocument.querySelectorAll(selector).length === 1;\n}\n/**\n * Check whether the selector is unique among the element siblings. In other words, it returns true\n * if \"ELEMENT_PARENT > SELECTOR\" returns a single element.\n *\n * The result will be less accurate on browsers that don't support :scope (i. e. IE): it will check\n * for any element matching the selector contained in the parent (in other words,\n * \"ELEMENT_PARENT SELECTOR\" returns a single element), regardless of whether the selector is a\n * direct descendent of the element parent. This should not impact results too much: if it\n * inaccurately returns false, we'll just fall back to another strategy.\n */\nfunction isSelectorUniqueAmongSiblings(element, selector) {\n return getParentElement(element).querySelectorAll(supportScopeSelector() ? combineSelector(':scope', selector) : selector).length === 1;\n}\nfunction combineSelector(parent, child) {\n return child ? \"\".concat(parent, \">\").concat(child) : parent;\n}\nvar supportScopeSelectorCache;\nexport function supportScopeSelector() {\n if (supportScopeSelectorCache === undefined) {\n try {\n document.querySelector(':scope');\n supportScopeSelectorCache = true;\n } catch (_a) {\n supportScopeSelectorCache = false;\n }\n }\n return supportScopeSelectorCache;\n}\n//# sourceMappingURL=getSelectorFromElement.js.map","import { ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nexport var MAX_DURATION_BETWEEN_CLICKS = ONE_SECOND;\nexport var MAX_DISTANCE_BETWEEN_CLICKS = 100;\nexport function createClickChain(firstClick, onFinalize) {\n var bufferedClicks = [];\n var status = 0 /* ClickChainStatus.WaitingForMoreClicks */;\n var maxDurationBetweenClicksTimeoutId;\n appendClick(firstClick);\n function appendClick(click) {\n click.stopObservable.subscribe(tryFinalize);\n bufferedClicks.push(click);\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n maxDurationBetweenClicksTimeoutId = setTimeout(dontAcceptMoreClick, MAX_DURATION_BETWEEN_CLICKS);\n }\n function tryFinalize() {\n if (status === 1 /* ClickChainStatus.WaitingForClicksToStop */ && bufferedClicks.every(function (click) {\n return click.isStopped();\n })) {\n status = 2 /* ClickChainStatus.Finalized */;\n onFinalize(bufferedClicks);\n }\n }\n function dontAcceptMoreClick() {\n clearTimeout(maxDurationBetweenClicksTimeoutId);\n if (status === 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n status = 1 /* ClickChainStatus.WaitingForClicksToStop */;\n tryFinalize();\n }\n }\n return {\n tryAppend: function (click) {\n if (status !== 0 /* ClickChainStatus.WaitingForMoreClicks */) {\n return false;\n }\n if (bufferedClicks.length > 0 && !areEventsSimilar(bufferedClicks[bufferedClicks.length - 1].event, click.event)) {\n dontAcceptMoreClick();\n return false;\n }\n appendClick(click);\n return true;\n },\n stop: function () {\n dontAcceptMoreClick();\n }\n };\n}\n/**\n * Checks whether two events are similar by comparing their target, position and timestamp\n */\nfunction areEventsSimilar(first, second) {\n return first.target === second.target && mouseEventDistance(first, second) <= MAX_DISTANCE_BETWEEN_CLICKS && first.timeStamp - second.timeStamp <= MAX_DURATION_BETWEEN_CLICKS;\n}\nfunction mouseEventDistance(origin, other) {\n return Math.sqrt(Math.pow(origin.clientX - other.clientX, 2) + Math.pow(origin.clientY - other.clientY, 2));\n}\n//# sourceMappingURL=clickChain.js.map","import { addEventListener, DOM_EVENT } from '@datadog/browser-core';\nexport function listenActionEvents(configuration, _a) {\n var onPointerDown = _a.onPointerDown,\n onPointerUp = _a.onPointerUp;\n var selectionEmptyAtPointerDown;\n var userActivity = {\n selection: false,\n input: false,\n scroll: false\n };\n var clickContext;\n var listeners = [addEventListener(configuration, window, DOM_EVENT.POINTER_DOWN, function (event) {\n if (isValidPointerEvent(event)) {\n selectionEmptyAtPointerDown = isSelectionEmpty();\n userActivity = {\n selection: false,\n input: false,\n scroll: false\n };\n clickContext = onPointerDown(event);\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, DOM_EVENT.SELECTION_CHANGE, function () {\n if (!selectionEmptyAtPointerDown || !isSelectionEmpty()) {\n userActivity.selection = true;\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, DOM_EVENT.SCROLL, function () {\n userActivity.scroll = true;\n }, {\n capture: true,\n passive: true\n }), addEventListener(configuration, window, DOM_EVENT.POINTER_UP, function (event) {\n if (isValidPointerEvent(event) && clickContext) {\n // Use a scoped variable to make sure the value is not changed by other clicks\n var localUserActivity_1 = userActivity;\n onPointerUp(clickContext, event, function () {\n return localUserActivity_1;\n });\n clickContext = undefined;\n }\n }, {\n capture: true\n }), addEventListener(configuration, window, DOM_EVENT.INPUT, function () {\n userActivity.input = true;\n }, {\n capture: true\n })];\n return {\n stop: function () {\n listeners.forEach(function (listener) {\n return listener.stop();\n });\n }\n };\n}\nfunction isSelectionEmpty() {\n var selection = window.getSelection();\n return !selection || selection.isCollapsed;\n}\nfunction isValidPointerEvent(event) {\n return event.target instanceof Element &&\n // Only consider 'primary' pointer events for now. Multi-touch support could be implemented in\n // the future.\n event.isPrimary !== false;\n}\n//# sourceMappingURL=listenActionEvents.js.map","import { ONE_SECOND } from '@datadog/browser-core';\nimport { elementMatches } from '../../browser/polyfills';\nvar MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE = 3;\nexport function computeFrustration(clicks, rageClick) {\n if (isRage(clicks)) {\n rageClick.addFrustration(\"rage_click\" /* FrustrationType.RAGE_CLICK */);\n if (clicks.some(isDead)) {\n rageClick.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n if (rageClick.hasError) {\n rageClick.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n return {\n isRage: true\n };\n }\n var hasSelectionChanged = clicks.some(function (click) {\n return click.getUserActivity().selection;\n });\n clicks.forEach(function (click) {\n if (click.hasError) {\n click.addFrustration(\"error_click\" /* FrustrationType.ERROR_CLICK */);\n }\n if (isDead(click) &&\n // Avoid considering clicks part of a double-click or triple-click selections as dead clicks\n !hasSelectionChanged) {\n click.addFrustration(\"dead_click\" /* FrustrationType.DEAD_CLICK */);\n }\n });\n return {\n isRage: false\n };\n}\nexport function isRage(clicks) {\n if (clicks.some(function (click) {\n return click.getUserActivity().selection || click.getUserActivity().scroll;\n })) {\n return false;\n }\n for (var i = 0; i < clicks.length - (MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1); i += 1) {\n if (clicks[i + MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE - 1].event.timeStamp - clicks[i].event.timeStamp <= ONE_SECOND) {\n return true;\n }\n }\n return false;\n}\nvar DEAD_CLICK_EXCLUDE_SELECTOR =\n// inputs that don't trigger a meaningful event like \"input\" when clicked, including textual\n// inputs (using a negative selector is shorter here)\n'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"button\"]):not([type=\"submit\"]):not([type=\"reset\"]):not([type=\"range\"]),' + 'textarea,' + 'select,' +\n// contenteditable and their descendants don't always trigger meaningful changes when manipulated\n'[contenteditable],' + '[contenteditable] *,' +\n// canvas, as there is no good way to detect activity occurring on them\n'canvas,' +\n// links that are interactive (have an href attribute) or any of their descendants, as they can\n// open a new tab or navigate to a hash without triggering a meaningful event\n'a[href],' + 'a[href] *';\nexport function isDead(click) {\n if (click.hasPageActivity || click.getUserActivity().input || click.getUserActivity().scroll) {\n return false;\n }\n return !elementMatches(click.event.target, DEAD_CLICK_EXCLUDE_SELECTOR);\n}\n//# sourceMappingURL=computeFrustration.js.map","import { includes, timeStampNow, Observable, assign, getRelativeTime, ONE_MINUTE, ValueHistory, generateUUID, clocksNow, ONE_SECOND, elapsed } from '@datadog/browser-core';\nimport { trackEventCounts } from '../trackEventCounts';\nimport { PAGE_ACTIVITY_VALIDATION_DELAY, waitPageActivityEnd } from '../waitPageActivityEnd';\nimport { getSelectorFromElement } from '../getSelectorFromElement';\nimport { createClickChain } from './clickChain';\nimport { getActionNameFromElement } from './getActionNameFromElement';\nimport { listenActionEvents } from './listenActionEvents';\nimport { computeFrustration } from './computeFrustration';\n// Maximum duration for click actions\nexport var CLICK_ACTION_MAX_DURATION = 10 * ONE_SECOND;\nexport var ACTION_CONTEXT_TIME_OUT_DELAY = 5 * ONE_MINUTE; // arbitrary\nexport function trackClickActions(lifeCycle, domMutationObservable, configuration) {\n var history = new ValueHistory(ACTION_CONTEXT_TIME_OUT_DELAY);\n var stopObservable = new Observable();\n var currentClickChain;\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n history.reset();\n });\n lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, stopClickChain);\n var stopActionEventsListener = listenActionEvents(configuration, {\n onPointerDown: function (pointerDownEvent) {\n return processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent);\n },\n onPointerUp: function (_a, startEvent, getUserActivity) {\n var clickActionBase = _a.clickActionBase,\n hadActivityOnPointerDown = _a.hadActivityOnPointerDown;\n return startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown);\n }\n }).stop;\n var actionContexts = {\n findActionId: function (startTime) {\n return history.findAll(startTime);\n }\n };\n return {\n stop: function () {\n stopClickChain();\n stopObservable.notify();\n stopActionEventsListener();\n },\n actionContexts: actionContexts\n };\n function appendClickToClickChain(click) {\n if (!currentClickChain || !currentClickChain.tryAppend(click)) {\n var rageClick_1 = click.clone();\n currentClickChain = createClickChain(click, function (clicks) {\n finalizeClicks(clicks, rageClick_1);\n });\n }\n }\n function stopClickChain() {\n if (currentClickChain) {\n currentClickChain.stop();\n }\n }\n}\nfunction processPointerDown(configuration, lifeCycle, domMutationObservable, pointerDownEvent) {\n var clickActionBase = computeClickActionBase(pointerDownEvent, configuration.actionNameAttribute);\n var hadActivityOnPointerDown = false;\n waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n hadActivityOnPointerDown = pageActivityEndEvent.hadActivity;\n },\n // We don't care about the activity duration, we just want to know whether an activity did happen\n // within the \"validation delay\" or not. Limit the duration so the callback is called sooner.\n PAGE_ACTIVITY_VALIDATION_DELAY);\n return {\n clickActionBase: clickActionBase,\n hadActivityOnPointerDown: function () {\n return hadActivityOnPointerDown;\n }\n };\n}\nfunction startClickAction(configuration, lifeCycle, domMutationObservable, history, stopObservable, appendClickToClickChain, clickActionBase, startEvent, getUserActivity, hadActivityOnPointerDown) {\n var click = newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n appendClickToClickChain(click);\n var stopWaitPageActivityEnd = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (pageActivityEndEvent) {\n if (pageActivityEndEvent.hadActivity && pageActivityEndEvent.end < click.startClocks.timeStamp) {\n // If the clock is looking weird, just discard the click\n click.discard();\n } else {\n if (pageActivityEndEvent.hadActivity) {\n click.stop(pageActivityEndEvent.end);\n } else if (hadActivityOnPointerDown()) {\n click.stop(\n // using the click start as activity end, so the click will have some activity but its\n // duration will be 0 (as the activity started before the click start)\n click.startClocks.timeStamp);\n } else {\n click.stop();\n }\n }\n }, CLICK_ACTION_MAX_DURATION).stop;\n var viewEndedSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n click.stop(endClocks.timeStamp);\n });\n var stopSubscription = stopObservable.subscribe(function () {\n click.stop();\n });\n click.stopObservable.subscribe(function () {\n viewEndedSubscription.unsubscribe();\n stopWaitPageActivityEnd();\n stopSubscription.unsubscribe();\n });\n}\nfunction computeClickActionBase(event, actionNameAttribute) {\n var rect = event.target.getBoundingClientRect();\n return {\n type: \"click\" /* ActionType.CLICK */,\n target: {\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n selector: getSelectorFromElement(event.target, actionNameAttribute)\n },\n position: {\n // Use clientX and Y because for SVG element offsetX and Y are relatives to the <svg> element\n x: Math.round(event.clientX - rect.left),\n y: Math.round(event.clientY - rect.top)\n },\n name: getActionNameFromElement(event.target, actionNameAttribute)\n };\n}\nfunction newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent) {\n var id = generateUUID();\n var startClocks = clocksNow();\n var historyEntry = history.add(id, startClocks.relative);\n var eventCountsSubscription = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) {\n return event.action !== undefined && (Array.isArray(event.action.id) ? includes(event.action.id, id) : event.action.id === id);\n }\n });\n var status = 0 /* ClickStatus.ONGOING */;\n var activityEndTime;\n var frustrationTypes = [];\n var stopObservable = new Observable();\n function stop(newActivityEndTime) {\n if (status !== 0 /* ClickStatus.ONGOING */) {\n return;\n }\n activityEndTime = newActivityEndTime;\n status = 1 /* ClickStatus.STOPPED */;\n if (activityEndTime) {\n historyEntry.close(getRelativeTime(activityEndTime));\n } else {\n historyEntry.remove();\n }\n eventCountsSubscription.stop();\n stopObservable.notify();\n }\n return {\n event: startEvent,\n stop: stop,\n stopObservable: stopObservable,\n get hasError() {\n return eventCountsSubscription.eventCounts.errorCount > 0;\n },\n get hasPageActivity() {\n return activityEndTime !== undefined;\n },\n getUserActivity: getUserActivity,\n addFrustration: function (frustrationType) {\n frustrationTypes.push(frustrationType);\n },\n startClocks: startClocks,\n isStopped: function () {\n return status === 1 /* ClickStatus.STOPPED */ || status === 2 /* ClickStatus.FINALIZED */;\n },\n clone: function () {\n return newClick(lifeCycle, history, getUserActivity, clickActionBase, startEvent);\n },\n validate: function (domEvents) {\n stop();\n if (status !== 1 /* ClickStatus.STOPPED */) {\n return;\n }\n var _a = eventCountsSubscription.eventCounts,\n resourceCount = _a.resourceCount,\n errorCount = _a.errorCount,\n longTaskCount = _a.longTaskCount;\n var clickAction = assign({\n type: \"click\" /* ActionType.CLICK */,\n duration: activityEndTime && elapsed(startClocks.timeStamp, activityEndTime),\n startClocks: startClocks,\n id: id,\n frustrationTypes: frustrationTypes,\n counts: {\n resourceCount: resourceCount,\n errorCount: errorCount,\n longTaskCount: longTaskCount\n },\n events: domEvents !== null && domEvents !== void 0 ? domEvents : [startEvent],\n event: startEvent\n }, clickActionBase);\n lifeCycle.notify(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, clickAction);\n status = 2 /* ClickStatus.FINALIZED */;\n },\n discard: function () {\n stop();\n status = 2 /* ClickStatus.FINALIZED */;\n }\n };\n}\nexport function finalizeClicks(clicks, rageClick) {\n var isRage = computeFrustration(clicks, rageClick).isRage;\n if (isRage) {\n clicks.forEach(function (click) {\n return click.discard();\n });\n rageClick.stop(timeStampNow());\n rageClick.validate(clicks.map(function (click) {\n return click.event;\n }));\n } else {\n rageClick.discard();\n clicks.forEach(function (click) {\n return click.validate();\n });\n }\n}\n//# sourceMappingURL=trackClickActions.js.map","import { noop, assign, combine, toServerDuration, generateUUID } from '@datadog/browser-core';\nimport { trackClickActions } from './trackClickActions';\nexport function startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory) {\n lifeCycle.subscribe(1 /* LifeCycleEventType.AUTO_ACTION_COMPLETED */, function (action) {\n return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processAction(action, pageStateHistory));\n });\n var actionContexts = {\n findActionId: noop\n };\n if (configuration.trackUserInteractions) {\n actionContexts = trackClickActions(lifeCycle, domMutationObservable, configuration).actionContexts;\n }\n return {\n addAction: function (action, savedCommonContext) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n savedCommonContext: savedCommonContext\n }, processAction(action, pageStateHistory)));\n },\n actionContexts: actionContexts\n };\n}\nfunction processAction(action, pageStateHistory) {\n var autoActionProperties = isAutoAction(action) ? {\n action: {\n id: action.id,\n loading_time: toServerDuration(action.duration),\n frustration: {\n type: action.frustrationTypes\n },\n error: {\n count: action.counts.errorCount\n },\n long_task: {\n count: action.counts.longTaskCount\n },\n resource: {\n count: action.counts.resourceCount\n }\n },\n _dd: {\n action: {\n target: action.target,\n position: action.position\n }\n }\n } : undefined;\n var customerContext = !isAutoAction(action) ? action.context : undefined;\n var actionEvent = combine({\n action: {\n id: generateUUID(),\n target: {\n name: action.name\n },\n type: action.type\n },\n date: action.startClocks.timeStamp,\n type: \"action\" /* RumEventType.ACTION */,\n view: {\n in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, action.startClocks.relative)\n }\n }, autoActionProperties);\n return {\n customerContext: customerContext,\n rawRumEvent: actionEvent,\n startTime: action.startClocks.relative,\n domainContext: isAutoAction(action) ? {\n events: action.events\n } : {}\n };\n}\nfunction isAutoAction(action) {\n return action.type !== \"custom\" /* ActionType.CUSTOM */;\n}\n//# sourceMappingURL=actionCollection.js.map","import { instrumentMethod } from '../../tools/instrumentMethod';\nimport { clocksNow } from '../../tools/utils/timeUtils';\nimport { computeStackTrace, computeStackTraceFromOnErrorMessage } from '../../tools/stackTrace/computeStackTrace';\nimport { computeRawError } from './error';\nimport { ErrorSource } from './error.types';\nexport function trackRuntimeError(errorObservable) {\n var handleRuntimeError = function (stackTrace, originalError) {\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: originalError,\n startClocks: clocksNow(),\n nonErrorPrefix: \"Uncaught\" /* NonErrorPrefix.UNCAUGHT */,\n source: ErrorSource.SOURCE,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */\n });\n errorObservable.notify(rawError);\n };\n var stopInstrumentingOnError = instrumentOnError(handleRuntimeError).stop;\n var stopInstrumentingOnUnhandledRejection = instrumentUnhandledRejection(handleRuntimeError).stop;\n return {\n stop: function () {\n stopInstrumentingOnError();\n stopInstrumentingOnUnhandledRejection();\n }\n };\n}\nexport function instrumentOnError(callback) {\n return instrumentMethod(window, 'onerror', function (_a) {\n var _b = _a.parameters,\n messageObj = _b[0],\n url = _b[1],\n line = _b[2],\n column = _b[3],\n errorObj = _b[4];\n var stackTrace;\n if (errorObj instanceof Error) {\n stackTrace = computeStackTrace(errorObj);\n } else {\n stackTrace = computeStackTraceFromOnErrorMessage(messageObj, url, line, column);\n }\n callback(stackTrace, errorObj !== null && errorObj !== void 0 ? errorObj : messageObj);\n });\n}\nexport function instrumentUnhandledRejection(callback) {\n return instrumentMethod(window, 'onunhandledrejection', function (_a) {\n var e = _a.parameters[0];\n var reason = e.reason || 'Empty reason';\n var stack = computeStackTrace(reason);\n callback(stack, reason);\n });\n}\n//# sourceMappingURL=trackRuntimeError.js.map","import { flattenErrorCauses, tryToGetFingerprint } from '../error/error';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { ConsoleApiName, globalConsole } from '../../tools/display';\nimport { callMonitored } from '../../tools/monitor';\nimport { sanitize } from '../../tools/serialisation/sanitize';\nimport { find } from '../../tools/utils/polyfills';\nimport { jsonStringify } from '../../tools/serialisation/jsonStringify';\nimport { computeStackTrace } from '../../tools/stackTrace/computeStackTrace';\nimport { createHandlingStack, toStackTraceString, formatErrorMessage } from '../../tools/stackTrace/handlingStack';\nvar consoleObservablesByApi = {};\nexport function initConsoleObservable(apis) {\n var consoleObservables = apis.map(function (api) {\n if (!consoleObservablesByApi[api]) {\n consoleObservablesByApi[api] = createConsoleObservable(api);\n }\n return consoleObservablesByApi[api];\n });\n return mergeObservables.apply(void 0, consoleObservables);\n}\nexport function resetConsoleObservable() {\n consoleObservablesByApi = {};\n}\nfunction createConsoleObservable(api) {\n return new Observable(function (observable) {\n var originalConsoleApi = globalConsole[api];\n globalConsole[api] = function () {\n var params = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n params[_i] = arguments[_i];\n }\n originalConsoleApi.apply(console, params);\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n observable.notify(buildConsoleLog(params, api, handlingStack));\n });\n };\n return function () {\n globalConsole[api] = originalConsoleApi;\n };\n });\n}\nfunction buildConsoleLog(params, api, handlingStack) {\n var message = params.map(function (param) {\n return formatConsoleParameters(param);\n }).join(' ');\n var stack;\n var fingerprint;\n var causes;\n if (api === ConsoleApiName.error) {\n var firstErrorParam = find(params, function (param) {\n return param instanceof Error;\n });\n stack = firstErrorParam ? toStackTraceString(computeStackTrace(firstErrorParam)) : undefined;\n fingerprint = tryToGetFingerprint(firstErrorParam);\n causes = firstErrorParam ? flattenErrorCauses(firstErrorParam, 'console') : undefined;\n }\n return {\n api: api,\n message: message,\n stack: stack,\n handlingStack: handlingStack,\n fingerprint: fingerprint,\n causes: causes\n };\n}\nfunction formatConsoleParameters(param) {\n if (typeof param === 'string') {\n return sanitize(param);\n }\n if (param instanceof Error) {\n return formatErrorMessage(computeStackTrace(param));\n }\n return jsonStringify(sanitize(param), undefined, 2);\n}\n//# sourceMappingURL=consoleObservable.js.map","import { toStackTraceString } from '../../tools/stackTrace/handlingStack';\nimport { monitor } from '../../tools/monitor';\nimport { mergeObservables, Observable } from '../../tools/observable';\nimport { addEventListener, DOM_EVENT } from '../../browser/addEventListener';\nimport { includes } from '../../tools/utils/polyfills';\nimport { safeTruncate } from '../../tools/utils/stringUtils';\nexport var RawReportType = {\n intervention: 'intervention',\n deprecation: 'deprecation',\n cspViolation: 'csp_violation'\n};\nexport function initReportObservable(configuration, apis) {\n var observables = [];\n if (includes(apis, RawReportType.cspViolation)) {\n observables.push(createCspViolationReportObservable(configuration));\n }\n var reportTypes = apis.filter(function (api) {\n return api !== RawReportType.cspViolation;\n });\n if (reportTypes.length) {\n observables.push(createReportObservable(reportTypes));\n }\n return mergeObservables.apply(void 0, observables);\n}\nfunction createReportObservable(reportTypes) {\n return new Observable(function (observable) {\n if (!window.ReportingObserver) {\n return;\n }\n var handleReports = monitor(function (reports, _) {\n return reports.forEach(function (report) {\n observable.notify(buildRawReportFromReport(report));\n });\n });\n var observer = new window.ReportingObserver(handleReports, {\n types: reportTypes,\n buffered: true\n });\n observer.observe();\n return function () {\n observer.disconnect();\n };\n });\n}\nfunction createCspViolationReportObservable(configuration) {\n return new Observable(function (observable) {\n var stop = addEventListener(configuration, document, DOM_EVENT.SECURITY_POLICY_VIOLATION, function (event) {\n observable.notify(buildRawReportFromCspViolation(event));\n }).stop;\n return stop;\n });\n}\nfunction buildRawReportFromReport(report) {\n var type = report.type,\n body = report.body;\n return {\n type: type,\n subtype: body.id,\n message: \"\".concat(type, \": \").concat(body.message),\n originalReport: report,\n stack: buildStack(body.id, body.message, body.sourceFile, body.lineNumber, body.columnNumber)\n };\n}\nfunction buildRawReportFromCspViolation(event) {\n var type = RawReportType.cspViolation;\n var message = \"'\".concat(event.blockedURI, \"' blocked by '\").concat(event.effectiveDirective, \"' directive\");\n return {\n type: RawReportType.cspViolation,\n subtype: event.effectiveDirective,\n message: \"\".concat(type, \": \").concat(message),\n stack: buildStack(event.effectiveDirective, event.originalPolicy ? \"\".concat(message, \" of the policy \\\"\").concat(safeTruncate(event.originalPolicy, 100, '...'), \"\\\"\") : 'no policy', event.sourceFile, event.lineNumber, event.columnNumber),\n originalReport: event\n };\n}\nfunction buildStack(name, message, sourceFile, lineNumber, columnNumber) {\n return sourceFile ? toStackTraceString({\n name: name,\n message: message,\n stack: [{\n func: '?',\n url: sourceFile,\n line: lineNumber !== null && lineNumber !== void 0 ? lineNumber : undefined,\n column: columnNumber !== null && columnNumber !== void 0 ? columnNumber : undefined\n }]\n }) : undefined;\n}\n//# sourceMappingURL=reportObservable.js.map","import { isEmptyObject, assign, ErrorSource, generateUUID, computeRawError, computeStackTrace, Observable, trackRuntimeError } from '@datadog/browser-core';\nimport { trackConsoleError } from './trackConsoleError';\nimport { trackReportError } from './trackReportError';\nexport function startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts) {\n var errorObservable = new Observable();\n trackConsoleError(errorObservable);\n trackRuntimeError(errorObservable);\n trackReportError(configuration, errorObservable);\n errorObservable.subscribe(function (error) {\n return lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n error: error\n });\n });\n return doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts);\n}\nexport function doStartErrorCollection(lifeCycle, pageStateHistory, featureFlagContexts) {\n lifeCycle.subscribe(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, function (_a) {\n var error = _a.error,\n customerContext = _a.customerContext,\n savedCommonContext = _a.savedCommonContext;\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, assign({\n customerContext: customerContext,\n savedCommonContext: savedCommonContext\n }, processError(error, pageStateHistory, featureFlagContexts)));\n });\n return {\n addError: function (_a, savedCommonContext) {\n var error = _a.error,\n handlingStack = _a.handlingStack,\n startClocks = _a.startClocks,\n customerContext = _a.context;\n var stackTrace = error instanceof Error ? computeStackTrace(error) : undefined;\n var rawError = computeRawError({\n stackTrace: stackTrace,\n originalError: error,\n handlingStack: handlingStack,\n startClocks: startClocks,\n nonErrorPrefix: \"Provided\" /* NonErrorPrefix.PROVIDED */,\n source: ErrorSource.CUSTOM,\n handling: \"handled\" /* ErrorHandling.HANDLED */\n });\n lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n customerContext: customerContext,\n savedCommonContext: savedCommonContext,\n error: rawError\n });\n }\n };\n}\nfunction processError(error, pageStateHistory, featureFlagContexts) {\n var rawRumEvent = {\n date: error.startClocks.timeStamp,\n error: {\n id: generateUUID(),\n message: error.message,\n source: error.source,\n stack: error.stack,\n handling_stack: error.handlingStack,\n type: error.type,\n handling: error.handling,\n causes: error.causes,\n source_type: 'browser',\n fingerprint: error.fingerprint,\n csp: error.csp\n },\n type: \"error\" /* RumEventType.ERROR */,\n view: {\n in_foreground: pageStateHistory.wasInPageStateAt(\"active\" /* PageState.ACTIVE */, error.startClocks.relative)\n }\n };\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(error.startClocks.relative);\n if (featureFlagContext && !isEmptyObject(featureFlagContext)) {\n rawRumEvent.feature_flags = featureFlagContext;\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: error.startClocks.relative,\n domainContext: {\n error: error.originalError\n }\n };\n}\n//# sourceMappingURL=errorCollection.js.map","import { clocksNow, initConsoleObservable, ErrorSource, ConsoleApiName } from '@datadog/browser-core';\nexport function trackConsoleError(errorObservable) {\n var subscription = initConsoleObservable([ConsoleApiName.error]).subscribe(function (consoleError) {\n return errorObservable.notify({\n startClocks: clocksNow(),\n message: consoleError.message,\n stack: consoleError.stack,\n fingerprint: consoleError.fingerprint,\n source: ErrorSource.CONSOLE,\n handling: \"handled\" /* ErrorHandling.HANDLED */,\n handlingStack: consoleError.handlingStack\n });\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n }\n };\n}\n//# sourceMappingURL=trackConsoleError.js.map","import { clocksNow, ErrorSource, initReportObservable, RawReportType } from '@datadog/browser-core';\nexport function trackReportError(configuration, errorObservable) {\n var subscription = initReportObservable(configuration, [RawReportType.cspViolation, RawReportType.intervention]).subscribe(function (reportError) {\n var rawError = {\n startClocks: clocksNow(),\n message: reportError.message,\n stack: reportError.stack,\n type: reportError.subtype,\n source: ErrorSource.REPORT,\n handling: \"unhandled\" /* ErrorHandling.UNHANDLED */,\n originalError: reportError.originalReport\n };\n if (reportError.originalReport.type === 'securitypolicyviolation') {\n rawError.csp = {\n disposition: reportError.originalReport.disposition\n };\n }\n return errorObservable.notify(rawError);\n });\n return {\n stop: function () {\n subscription.unsubscribe();\n }\n };\n}\n//# sourceMappingURL=trackReportError.js.map","import { addDuration } from '@datadog/browser-core';\nimport { toValidEntry } from './resourceUtils';\n/**\n * Look for corresponding timing in resource timing buffer\n *\n * Observations:\n * - Timing (start, end) are nested inside the request (start, end)\n * - Some timing can be not exactly nested, being off by < 1 ms\n *\n * Strategy:\n * - from valid nested entries (with 1 ms error margin)\n * - if a single timing match, return the timing\n * - otherwise we can't decide, return undefined\n */\nexport function matchRequestTiming(request) {\n if (!performance || !('getEntriesByName' in performance)) {\n return;\n }\n var sameNameEntries = performance.getEntriesByName(request.url, 'resource');\n if (!sameNameEntries.length || !('toJSON' in sameNameEntries[0])) {\n return;\n }\n var candidates = sameNameEntries.map(function (entry) {\n return entry.toJSON();\n }).filter(toValidEntry).filter(function (entry) {\n return isBetween(entry, request.startClocks.relative, endTime({\n startTime: request.startClocks.relative,\n duration: request.duration\n }));\n });\n if (candidates.length === 1) {\n return candidates[0];\n }\n return;\n}\nfunction endTime(timing) {\n return addDuration(timing.startTime, timing.duration);\n}\nfunction isBetween(timing, start, end) {\n var errorMargin = 1;\n return timing.startTime >= start - errorMargin && endTime(timing) <= addDuration(end, errorMargin);\n}\n//# sourceMappingURL=matchRequestTiming.js.map","import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, isExperimentalFeatureEnabled, ExperimentalFeature } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceCollection';\nimport { matchRequestTiming } from './matchRequestTiming';\nimport { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind, isLongDataUrl, sanitizeDataUrl } from './resourceUtils';\nexport function startResourceCollection(lifeCycle, configuration, sessionManager, pageStateHistory) {\n lifeCycle.subscribe(8 /* LifeCycleEventType.REQUEST_COMPLETED */, function (request) {\n var rawEvent = processRequest(request, configuration, sessionManager, pageStateHistory);\n if (rawEvent) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n });\n lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.RESOURCE && !isRequestKind(entry)) {\n var rawEvent = processResourceEntry(entry, configuration, sessionManager, pageStateHistory);\n if (rawEvent) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, rawEvent);\n }\n }\n }\n });\n}\nfunction processRequest(request, configuration, sessionManager, pageStateHistory) {\n var _a;\n var matchingTiming = matchRequestTiming(request);\n var startClocks = matchingTiming ? relativeToClocks(matchingTiming.startTime) : request.startClocks;\n var shouldIndex = shouldIndexResource(configuration, sessionManager, startClocks);\n var tracingInfo = computeRequestTracingInfo(request, configuration);\n if (!shouldIndex && !tracingInfo) {\n return;\n }\n var type = request.type === \"xhr\" /* RequestType.XHR */ ? \"xhr\" /* ResourceType.XHR */ : \"fetch\" /* ResourceType.FETCH */;\n var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;\n var duration = computeRequestDuration(pageStateHistory, startClocks, request.duration);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, (_a = matchingTiming === null || matchingTiming === void 0 ? void 0 : matchingTiming.duration) !== null && _a !== void 0 ? _a : request.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n duration: duration,\n method: request.method,\n status_code: request.status,\n url: isLongDataUrl(request.url) ? sanitizeDataUrl(request.url) : request.url\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n _dd: {\n discarded: !shouldIndex\n }\n }, tracingInfo, correspondingTimingOverrides, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: matchingTiming,\n xhr: request.xhr,\n response: request.response,\n requestInput: request.input,\n requestInit: request.init,\n error: request.error,\n isAborted: request.isAborted\n }\n };\n}\nfunction processResourceEntry(entry, configuration, sessionManager, pageStateHistory) {\n var startClocks = relativeToClocks(entry.startTime);\n var shouldIndex = shouldIndexResource(configuration, sessionManager, startClocks);\n var tracingInfo = computeEntryTracingInfo(entry, configuration);\n if (!shouldIndex && !tracingInfo) {\n return;\n }\n var type = computeResourceKind(entry);\n var entryMetrics = computePerformanceEntryMetrics(entry);\n var pageStateInfo = computePageStateInfo(pageStateHistory, startClocks, entry.duration);\n var resourceEvent = combine({\n date: startClocks.timeStamp,\n resource: {\n id: generateUUID(),\n type: type,\n url: entry.name,\n status_code: discardZeroStatus(entry.responseStatus)\n },\n type: \"resource\" /* RumEventType.RESOURCE */,\n _dd: {\n discarded: !shouldIndex\n }\n }, tracingInfo, entryMetrics, pageStateInfo);\n return {\n startTime: startClocks.relative,\n rawRumEvent: resourceEvent,\n domainContext: {\n performanceEntry: entry\n }\n };\n}\nfunction shouldIndexResource(configuration, sessionManager, resourceStart) {\n return configuration.trackResources && sessionManager.findTrackedSession(resourceStart.relative);\n}\nfunction computePerformanceEntryMetrics(timing) {\n var renderBlockingStatus = timing.renderBlockingStatus;\n return {\n resource: assign({\n duration: computePerformanceResourceDuration(timing),\n render_blocking_status: renderBlockingStatus\n }, computeSize(timing), computePerformanceResourceDetails(timing))\n };\n}\nfunction computeRequestTracingInfo(request, configuration) {\n var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n span_id: request.spanId.toDecimalString(),\n trace_id: request.traceId.toDecimalString(),\n rule_psr: getRulePsr(configuration)\n }\n };\n}\nfunction computeEntryTracingInfo(entry, configuration) {\n var hasBeenTraced = entry.traceId;\n if (!hasBeenTraced) {\n return undefined;\n }\n return {\n _dd: {\n trace_id: entry.traceId,\n rule_psr: getRulePsr(configuration)\n }\n };\n}\n/**\n * @returns number between 0 and 1 which represents trace sample rate\n */\nfunction getRulePsr(configuration) {\n return isNumber(configuration.traceSampleRate) ? configuration.traceSampleRate / 100 : undefined;\n}\nfunction computePageStateInfo(pageStateHistory, startClocks, duration) {\n if (!isExperimentalFeatureEnabled(ExperimentalFeature.RESOURCE_PAGE_STATES)) {\n return;\n }\n return {\n _dd: {\n page_states: pageStateHistory.findAll(startClocks.relative, duration),\n page_was_discarded: String(document.wasDiscarded)\n }\n };\n}\nfunction computeRequestDuration(pageStateHistory, startClocks, duration) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, startClocks.relative, duration) ? toServerDuration(duration) : undefined;\n}\n/**\n * The status is 0 for cross-origin resources without CORS headers, so the status is meaningless, and we shouldn't report it\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus#cross-origin_response_status_codes\n */\nfunction discardZeroStatus(statusCode) {\n return statusCode === 0 ? undefined : statusCode;\n}\n//# sourceMappingURL=resourceCollection.js.map","import { ONE_MINUTE, find } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\n// Discard FCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var FCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nexport function trackFirstContentfulPaint(lifeCycle, firstHidden, callback) {\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var fcpEntry = find(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.PAINT && entry.name === 'first-contentful-paint' && entry.startTime < firstHidden.timeStamp && entry.startTime < FCP_MAXIMUM_DELAY;\n });\n if (fcpEntry) {\n callback(fcpEntry.startTime);\n }\n }).unsubscribe;\n return {\n stop: unsubscribeLifeCycle\n };\n}\n//# sourceMappingURL=trackFirstContentfulPaint.js.map","import { DOM_EVENT, ExperimentalFeature, ONE_MINUTE, addEventListeners, addTelemetryDebug, findLast, isExperimentalFeatureEnabled, relativeNow } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n// Discard LCP timings above a certain delay to avoid incorrect data\n// It happens in some cases like sleep mode or some browser implementations\nexport var LCP_MAXIMUM_DELAY = 10 * ONE_MINUTE;\nvar wrongLcpReported = false;\nvar previousLcp;\n/**\n * Track the largest contentful paint (LCP) occurring during the initial View. This can yield\n * multiple values, only the most recent one should be used.\n * Documentation: https://web.dev/lcp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/onLCP.ts\n */\nexport function trackLargestContentfulPaint(lifeCycle, configuration, firstHidden, eventTarget, callback) {\n // Ignore entries that come after the first user interaction. According to the documentation, the\n // browser should not send largest-contentful-paint entries after a user interact with the page,\n // but the web-vitals reference implementation uses this as a safeguard.\n var firstInteractionTimestamp = Infinity;\n var stopEventListener = addEventListeners(configuration, eventTarget, [DOM_EVENT.POINTER_DOWN, DOM_EVENT.KEY_DOWN], function (event) {\n firstInteractionTimestamp = event.timeStamp;\n }, {\n capture: true,\n once: true\n }).stop;\n var biggestLcpSize = 0;\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var lcpEntry = findLast(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT && entry.startTime < firstInteractionTimestamp && entry.startTime < firstHidden.timeStamp && entry.startTime < LCP_MAXIMUM_DELAY &&\n // Ensure to get the LCP entry with the biggest size, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1516655\n entry.size > biggestLcpSize;\n });\n if (lcpEntry) {\n var lcpTargetSelector = void 0;\n if (lcpEntry.element) {\n lcpTargetSelector = getSelectorFromElement(lcpEntry.element, configuration.actionNameAttribute);\n }\n if (isExperimentalFeatureEnabled(ExperimentalFeature.ZERO_LCP_TELEMETRY)) {\n monitorLcpEntries(lcpEntry, entries.filter(function (entry) {\n return entry.entryType === RumPerformanceEntryType.LARGEST_CONTENTFUL_PAINT;\n }));\n }\n callback({\n value: lcpEntry.startTime,\n targetSelector: lcpTargetSelector\n });\n biggestLcpSize = lcpEntry.size;\n }\n }).unsubscribe;\n return {\n stop: function () {\n stopEventListener();\n unsubscribeLifeCycle();\n }\n };\n}\nfunction monitorLcpEntries(lcpEntry, lcpEntries) {\n if (wrongLcpReported) {\n return;\n }\n var wrongLcpDetected = lcpEntry.startTime === 0 ? 'LCP with startTime = 0' : previousLcp !== undefined && lcpEntry.startTime < previousLcp.startTime ? 'LCP with startTime < previous LCP' : previousLcp !== undefined && lcpEntry.size < previousLcp.size ? 'LCP with size < previous LCP' : undefined;\n if (wrongLcpDetected) {\n wrongLcpReported = true;\n addTelemetryDebug(wrongLcpDetected, {\n debug: {\n entry: toSerializableLCP(lcpEntry),\n previousLcp: previousLcp,\n timeOrigin: performance.timeOrigin,\n now: relativeNow(),\n lcpEntries: lcpEntries.map(toSerializableLCP)\n }\n });\n }\n previousLcp = toSerializableLCP(lcpEntry);\n}\nfunction toSerializableLCP(entry) {\n var jsonEntry = entry.toJSON();\n delete jsonEntry.element;\n return jsonEntry;\n}\n//# sourceMappingURL=trackLargestContentfulPaint.js.map","/**\n * performance.interactionCount polyfill\n *\n * The interactionCount is an integer which counts the total number of distinct user interactions,\n * for which there was a unique interactionId.\n *\n * The interactionCount polyfill is an estimate based on a convention specific to Chrome. Cf: https://github.com/GoogleChrome/web-vitals/pull/213\n * This is currently not an issue as the polyfill is only used for INP which is currently only supported on Chrome.\n * Hopefully when/if other browsers will support INP, they will also implement performance.interactionCount at the same time, so we won't need that polyfill.\n *\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/polyfills/interactionCountPolyfill.ts\n */\nimport { monitor } from '@datadog/browser-core';\nvar observer;\nvar interactionCountEstimate = 0;\nvar minKnownInteractionId = Infinity;\nvar maxKnownInteractionId = 0;\nexport function initInteractionCountPolyfill() {\n if ('interactionCount' in performance || observer) {\n return;\n }\n observer = new window.PerformanceObserver(monitor(function (entries) {\n entries.getEntries().forEach(function (e) {\n var entry = e;\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, entry.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, entry.interactionId);\n interactionCountEstimate = (maxKnownInteractionId - minKnownInteractionId) / 7 + 1;\n }\n });\n }));\n observer.observe({\n type: 'event',\n buffered: true,\n durationThreshold: 0\n });\n}\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nexport var getInteractionCount = function () {\n return observer ? interactionCountEstimate : window.performance.interactionCount || 0;\n};\n//# sourceMappingURL=interactionCountPolyfill.js.map","import { trackFirstContentfulPaint } from './trackFirstContentfulPaint';\nimport { trackFirstInput } from './trackFirstInput';\nimport { trackNavigationTimings } from './trackNavigationTimings';\nimport { trackLargestContentfulPaint } from './trackLargestContentfulPaint';\nimport { trackFirstHidden } from './trackFirstHidden';\nexport function trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate) {\n var initialViewMetrics = {};\n var stopNavigationTracking = trackNavigationTimings(lifeCycle, function (navigationTimings) {\n setLoadEvent(navigationTimings.loadEvent);\n initialViewMetrics.navigationTimings = navigationTimings;\n scheduleViewUpdate();\n }).stop;\n var firstHidden = trackFirstHidden(configuration);\n var stopFCPTracking = trackFirstContentfulPaint(lifeCycle, firstHidden, function (firstContentfulPaint) {\n initialViewMetrics.firstContentfulPaint = firstContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopLCPTracking = trackLargestContentfulPaint(lifeCycle, configuration, firstHidden, window, function (largestContentfulPaint) {\n initialViewMetrics.largestContentfulPaint = largestContentfulPaint;\n scheduleViewUpdate();\n }).stop;\n var stopFIDTracking = trackFirstInput(lifeCycle, configuration, firstHidden, function (firstInput) {\n initialViewMetrics.firstInput = firstInput;\n scheduleViewUpdate();\n }).stop;\n function stop() {\n stopNavigationTracking();\n stopFCPTracking();\n stopLCPTracking();\n stopFIDTracking();\n firstHidden.stop();\n }\n return {\n stop: stop,\n initialViewMetrics: initialViewMetrics\n };\n}\n//# sourceMappingURL=trackInitialViewMetrics.js.map","import { relativeNow } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nexport function trackNavigationTimings(lifeCycle, callback) {\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.NAVIGATION) {\n callback({\n domComplete: entry.domComplete,\n domContentLoaded: entry.domContentLoadedEventEnd,\n domInteractive: entry.domInteractive,\n loadEvent: entry.loadEventEnd,\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n firstByte: entry.responseStart >= 0 && entry.responseStart <= relativeNow() ? entry.responseStart : undefined\n });\n }\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}\n//# sourceMappingURL=trackNavigationTimings.js.map","import { addEventListeners, DOM_EVENT } from '@datadog/browser-core';\nexport function trackFirstHidden(configuration, eventTarget) {\n if (eventTarget === void 0) {\n eventTarget = window;\n }\n var timeStamp;\n var stopListeners;\n if (document.visibilityState === 'hidden') {\n timeStamp = 0;\n } else {\n timeStamp = Infinity;\n stopListeners = addEventListeners(configuration, eventTarget, [DOM_EVENT.PAGE_HIDE, DOM_EVENT.VISIBILITY_CHANGE], function (event) {\n if (event.type === DOM_EVENT.PAGE_HIDE || document.visibilityState === 'hidden') {\n timeStamp = event.timeStamp;\n stopListeners();\n }\n }, {\n capture: true\n }).stop;\n }\n return {\n get timeStamp() {\n return timeStamp;\n },\n stop: function () {\n stopListeners === null || stopListeners === void 0 ? void 0 : stopListeners();\n }\n };\n}\n//# sourceMappingURL=trackFirstHidden.js.map","import { elapsed, find } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the first input occurring during the initial View to return:\n * - First Input Delay\n * - First Input Time\n * Callback is called at most one time.\n * Documentation: https://web.dev/fid/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getFID.ts\n */\nexport function trackFirstInput(lifeCycle, configuration, firstHidden, callback) {\n var unsubscribeLifeCycle = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n var firstInputEntry = find(entries, function (entry) {\n return entry.entryType === RumPerformanceEntryType.FIRST_INPUT && entry.startTime < firstHidden.timeStamp;\n });\n if (firstInputEntry) {\n var firstInputDelay = elapsed(firstInputEntry.startTime, firstInputEntry.processingStart);\n var firstInputTargetSelector = void 0;\n if (firstInputEntry.target && isElementNode(firstInputEntry.target)) {\n firstInputTargetSelector = getSelectorFromElement(firstInputEntry.target, configuration.actionNameAttribute);\n }\n callback({\n // Ensure firstInputDelay to be positive, see\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1185815\n delay: firstInputDelay >= 0 ? firstInputDelay : 0,\n time: firstInputEntry.startTime,\n targetSelector: firstInputTargetSelector\n });\n }\n }).unsubscribe;\n return {\n stop: unsubscribeLifeCycle\n };\n}\n//# sourceMappingURL=trackFirstInput.js.map","import { round, find, ONE_SECOND, noop } from '@datadog/browser-core';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { supportPerformanceTimingEvent, RumPerformanceEntryType } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\n/**\n * Track the cumulative layout shifts (CLS).\n * Layout shifts are grouped into session windows.\n * The minimum gap between session windows is 1 second.\n * The maximum duration of a session window is 5 second.\n * The session window layout shift value is the sum of layout shifts inside it.\n * The CLS value is the max of session windows values.\n *\n * This yields a new value whenever the CLS value is updated (a higher session window value is computed).\n *\n * See isLayoutShiftSupported to check for browser support.\n *\n * Documentation:\n * https://web.dev/cls/\n * https://web.dev/evolving-cls/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/master/src/getCLS.ts\n */\nexport function trackCumulativeLayoutShift(configuration, lifeCycle, callback) {\n if (!isLayoutShiftSupported()) {\n return {\n stop: noop\n };\n }\n var maxClsValue = 0;\n // if no layout shift happen the value should be reported as 0\n callback({\n value: 0\n });\n var window = slidingSessionWindow();\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType === RumPerformanceEntryType.LAYOUT_SHIFT && !entry.hadRecentInput) {\n window.update(entry);\n if (window.value() > maxClsValue) {\n maxClsValue = window.value();\n var cls = round(maxClsValue, 4);\n var clsTarget = window.largestLayoutShiftTarget();\n var cslTargetSelector = void 0;\n if (clsTarget &&\n // Check if the CLS target have been removed from the DOM between the time we collect the target reference and when we compute the selector\n clsTarget.isConnected) {\n cslTargetSelector = getSelectorFromElement(clsTarget, configuration.actionNameAttribute);\n }\n callback({\n value: cls,\n targetSelector: cslTargetSelector\n });\n }\n }\n }\n }).unsubscribe;\n return {\n stop: stop\n };\n}\nfunction slidingSessionWindow() {\n var value = 0;\n var startTime;\n var endTime;\n var largestLayoutShift = 0;\n var largestLayoutShiftTarget;\n var largestLayoutShiftTime;\n return {\n update: function (entry) {\n var _a, _b;\n var shouldCreateNewWindow = startTime === undefined || entry.startTime - endTime >= ONE_SECOND || entry.startTime - startTime >= 5 * ONE_SECOND;\n if (shouldCreateNewWindow) {\n startTime = endTime = entry.startTime;\n value = entry.value;\n largestLayoutShift = 0;\n largestLayoutShiftTarget = undefined;\n } else {\n value += entry.value;\n endTime = entry.startTime;\n }\n if (entry.value > largestLayoutShift) {\n largestLayoutShift = entry.value;\n largestLayoutShiftTime = entry.startTime;\n if ((_a = entry.sources) === null || _a === void 0 ? void 0 : _a.length) {\n largestLayoutShiftTarget = (_b = find(entry.sources, function (s) {\n return !!s.node && isElementNode(s.node);\n })) === null || _b === void 0 ? void 0 : _b.node;\n } else {\n largestLayoutShiftTarget = undefined;\n }\n }\n },\n value: function () {\n return value;\n },\n largestLayoutShiftTarget: function () {\n return largestLayoutShiftTarget;\n },\n largestLayoutShiftTime: function () {\n return largestLayoutShiftTime;\n }\n };\n}\n/**\n * Check whether `layout-shift` is supported by the browser.\n */\nexport function isLayoutShiftSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.LAYOUT_SHIFT);\n}\n//# sourceMappingURL=trackCumulativeLayoutShift.js.map","import { Observable, throttle, addEventListener, DOM_EVENT } from '@datadog/browser-core';\nvar viewportObservable;\nexport function initViewportObservable(configuration) {\n if (!viewportObservable) {\n viewportObservable = createViewportObservable(configuration);\n }\n return viewportObservable;\n}\nexport function createViewportObservable(configuration) {\n return new Observable(function (observable) {\n var updateDimension = throttle(function () {\n observable.notify(getViewportDimension());\n }, 200).throttled;\n return addEventListener(configuration, window, DOM_EVENT.RESIZE, updateDimension, {\n capture: true,\n passive: true\n }).stop;\n });\n}\n// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport\nexport function getViewportDimension() {\n var visual = window.visualViewport;\n if (visual) {\n return {\n width: Number(visual.width * visual.scale),\n height: Number(visual.height * visual.scale)\n };\n }\n return {\n width: Number(window.innerWidth || 0),\n height: Number(window.innerHeight || 0)\n };\n}\n//# sourceMappingURL=viewportObservable.js.map","import { noop, ONE_MINUTE } from '@datadog/browser-core';\nimport { RumPerformanceEntryType, supportPerformanceTimingEvent } from '../../../browser/performanceCollection';\nimport { getSelectorFromElement } from '../../getSelectorFromElement';\nimport { isElementNode } from '../../../browser/htmlDomUtils';\nimport { getInteractionCount, initInteractionCountPolyfill } from './interactionCountPolyfill';\n// Arbitrary value to prevent unnecessary memory usage on views with lots of interactions.\nvar MAX_INTERACTION_ENTRIES = 10;\n// Arbitrary value to cap INP outliers\nexport var MAX_INP_VALUE = 1 * ONE_MINUTE;\n/**\n * Track the interaction to next paint (INP).\n * To avoid outliers, return the p98 worst interaction of the view.\n * Documentation: https://web.dev/inp/\n * Reference implementation: https://github.com/GoogleChrome/web-vitals/blob/main/src/onINP.ts\n */\nexport function trackInteractionToNextPaint(configuration, viewStart, viewLoadingType, lifeCycle) {\n if (!isInteractionToNextPaintSupported()) {\n return {\n getInteractionToNextPaint: function () {\n return undefined;\n },\n setViewEnd: noop,\n stop: noop\n };\n }\n var _a = trackViewInteractionCount(viewLoadingType),\n getViewInteractionCount = _a.getViewInteractionCount,\n stopViewInteractionCount = _a.stopViewInteractionCount;\n var viewEnd = Infinity;\n var longestInteractions = trackLongestInteractions(getViewInteractionCount);\n var interactionToNextPaint = -1;\n var interactionToNextPaintTargetSelector;\n var stop = lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if ((entry.entryType === RumPerformanceEntryType.EVENT || entry.entryType === RumPerformanceEntryType.FIRST_INPUT) && entry.interactionId &&\n // Check the entry start time is inside the view bounds because some view interactions can be reported after the view end (if long duration).\n entry.startTime >= viewStart && entry.startTime <= viewEnd) {\n longestInteractions.process(entry);\n }\n }\n var newInteraction = longestInteractions.estimateP98Interaction();\n if (newInteraction && newInteraction.duration !== interactionToNextPaint) {\n interactionToNextPaint = newInteraction.duration;\n if (newInteraction.target && isElementNode(newInteraction.target)) {\n interactionToNextPaintTargetSelector = getSelectorFromElement(newInteraction.target, configuration.actionNameAttribute);\n } else {\n interactionToNextPaintTargetSelector = undefined;\n }\n }\n }).unsubscribe;\n return {\n getInteractionToNextPaint: function () {\n // If no INP duration where captured because of the performanceObserver 40ms threshold\n // but the view interaction count > 0 then report 0\n if (interactionToNextPaint >= 0) {\n return {\n value: Math.min(interactionToNextPaint, MAX_INP_VALUE),\n targetSelector: interactionToNextPaintTargetSelector\n };\n } else if (getViewInteractionCount()) {\n return {\n value: 0\n };\n }\n },\n setViewEnd: function (viewEndTime) {\n viewEnd = viewEndTime;\n stopViewInteractionCount();\n },\n stop: stop\n };\n}\nfunction trackLongestInteractions(getViewInteractionCount) {\n var longestInteractions = [];\n function sortAndTrimLongestInteractions() {\n longestInteractions.sort(function (a, b) {\n return b.duration - a.duration;\n }).splice(MAX_INTERACTION_ENTRIES);\n }\n return {\n /**\n * Process the performance entry:\n * - if its duration is long enough, add the performance entry to the list of worst interactions\n * - if an entry with the same interaction id exists and its duration is lower than the new one, then replace it in the list of worst interactions\n */\n process: function (entry) {\n var interactionIndex = longestInteractions.findIndex(function (interaction) {\n return entry.interactionId === interaction.interactionId;\n });\n var minLongestInteraction = longestInteractions[longestInteractions.length - 1];\n if (interactionIndex !== -1) {\n if (entry.duration > longestInteractions[interactionIndex].duration) {\n longestInteractions[interactionIndex] = entry;\n sortAndTrimLongestInteractions();\n }\n } else if (longestInteractions.length < MAX_INTERACTION_ENTRIES || entry.duration > minLongestInteraction.duration) {\n longestInteractions.push(entry);\n sortAndTrimLongestInteractions();\n }\n },\n /**\n * Compute the p98 longest interaction.\n * For better performance the computation is based on 10 longest interactions and the interaction count of the current view.\n */\n estimateP98Interaction: function () {\n var interactionIndex = Math.min(longestInteractions.length - 1, Math.floor(getViewInteractionCount() / 50));\n return longestInteractions[interactionIndex];\n }\n };\n}\nexport function trackViewInteractionCount(viewLoadingType) {\n initInteractionCountPolyfill();\n var previousInteractionCount = viewLoadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? 0 : getInteractionCount();\n var state = {\n stopped: false\n };\n function computeViewInteractionCount() {\n return getInteractionCount() - previousInteractionCount;\n }\n return {\n getViewInteractionCount: function () {\n if (state.stopped) {\n return state.interactionCount;\n }\n return computeViewInteractionCount();\n },\n stopViewInteractionCount: function () {\n state = {\n stopped: true,\n interactionCount: computeViewInteractionCount()\n };\n }\n };\n}\nexport function isInteractionToNextPaintSupported() {\n return supportPerformanceTimingEvent(RumPerformanceEntryType.EVENT) && window.PerformanceEventTiming && 'interactionId' in PerformanceEventTiming.prototype;\n}\n//# sourceMappingURL=trackInteractionToNextPaint.js.map","export function getScrollX() {\n var scrollX;\n var visual = window.visualViewport;\n if (visual) {\n scrollX = visual.pageLeft - visual.offsetLeft;\n } else if (window.scrollX !== undefined) {\n scrollX = window.scrollX;\n } else {\n scrollX = window.pageXOffset || 0;\n }\n return Math.round(scrollX);\n}\nexport function getScrollY() {\n var scrollY;\n var visual = window.visualViewport;\n if (visual) {\n scrollY = visual.pageTop - visual.offsetTop;\n } else if (window.scrollY !== undefined) {\n scrollY = window.scrollY;\n } else {\n scrollY = window.pageYOffset || 0;\n }\n return Math.round(scrollY);\n}\n//# sourceMappingURL=scroll.js.map","import { Observable, ONE_SECOND, elapsed, relativeNow, throttle, addEventListener, DOM_EVENT, monitor } from '@datadog/browser-core';\nimport { getScrollY } from '../../../browser/scroll';\nimport { getViewportDimension } from '../../../browser/viewportObservable';\n/** Arbitrary scroll throttle duration */\nexport var THROTTLE_SCROLL_DURATION = ONE_SECOND;\nexport function trackScrollMetrics(configuration, viewStart, callback, scrollValues) {\n if (scrollValues === void 0) {\n scrollValues = createScrollValuesObservable(configuration);\n }\n var maxScrollDepth = 0;\n var maxScrollHeight = 0;\n var maxScrollHeightTime = 0;\n var subscription = scrollValues.subscribe(function (_a) {\n var scrollDepth = _a.scrollDepth,\n scrollTop = _a.scrollTop,\n scrollHeight = _a.scrollHeight;\n var shouldUpdate = false;\n if (scrollDepth > maxScrollDepth) {\n maxScrollDepth = scrollDepth;\n shouldUpdate = true;\n }\n if (scrollHeight > maxScrollHeight) {\n maxScrollHeight = scrollHeight;\n var now = relativeNow();\n maxScrollHeightTime = elapsed(viewStart.relative, now);\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n callback({\n maxDepth: Math.min(maxScrollDepth, maxScrollHeight),\n maxDepthScrollTop: scrollTop,\n maxScrollHeight: maxScrollHeight,\n maxScrollHeightTime: maxScrollHeightTime\n });\n }\n });\n return {\n stop: function () {\n return subscription.unsubscribe();\n }\n };\n}\nexport function computeScrollValues() {\n var scrollTop = getScrollY();\n var height = getViewportDimension().height;\n var scrollHeight = Math.round((document.scrollingElement || document.documentElement).scrollHeight);\n var scrollDepth = Math.round(height + scrollTop);\n return {\n scrollHeight: scrollHeight,\n scrollDepth: scrollDepth,\n scrollTop: scrollTop\n };\n}\nexport function createScrollValuesObservable(configuration, throttleDuration) {\n if (throttleDuration === void 0) {\n throttleDuration = THROTTLE_SCROLL_DURATION;\n }\n return new Observable(function (observable) {\n function notify() {\n observable.notify(computeScrollValues());\n }\n if (window.ResizeObserver) {\n var throttledNotify_1 = throttle(notify, throttleDuration, {\n leading: false,\n trailing: true\n });\n var observerTarget_1 = document.scrollingElement || document.documentElement;\n var resizeObserver_1 = new ResizeObserver(monitor(throttledNotify_1.throttled));\n resizeObserver_1.observe(observerTarget_1);\n var eventListener_1 = addEventListener(configuration, window, DOM_EVENT.SCROLL, throttledNotify_1.throttled, {\n passive: true\n });\n return function () {\n throttledNotify_1.cancel();\n resizeObserver_1.unobserve(observerTarget_1);\n eventListener_1.stop();\n };\n }\n });\n}\n//# sourceMappingURL=trackScrollMetrics.js.map","import { trackCumulativeLayoutShift } from './trackCumulativeLayoutShift';\nimport { trackInteractionToNextPaint } from './trackInteractionToNextPaint';\nimport { trackLoadingTime } from './trackLoadingTime';\nimport { trackScrollMetrics } from './trackScrollMetrics';\nexport function trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, viewStart) {\n var commonViewMetrics = {};\n var _a = trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadingType, viewStart, function (newLoadingTime) {\n commonViewMetrics.loadingTime = newLoadingTime;\n scheduleViewUpdate();\n }),\n stopLoadingTimeTracking = _a.stop,\n setLoadEvent = _a.setLoadEvent;\n var stopScrollMetricsTracking = trackScrollMetrics(configuration, viewStart, function (newScrollMetrics) {\n commonViewMetrics.scroll = newScrollMetrics;\n }).stop;\n var stopCLSTracking = trackCumulativeLayoutShift(configuration, lifeCycle, function (cumulativeLayoutShift) {\n commonViewMetrics.cumulativeLayoutShift = cumulativeLayoutShift;\n scheduleViewUpdate();\n }).stop;\n var _b = trackInteractionToNextPaint(configuration, viewStart.relative, loadingType, lifeCycle),\n stopINPTracking = _b.stop,\n getInteractionToNextPaint = _b.getInteractionToNextPaint,\n setViewEnd = _b.setViewEnd;\n return {\n stop: function () {\n stopLoadingTimeTracking();\n stopCLSTracking();\n stopScrollMetricsTracking();\n },\n stopINPTracking: stopINPTracking,\n setLoadEvent: setLoadEvent,\n setViewEnd: setViewEnd,\n getCommonViewMetrics: function () {\n commonViewMetrics.interactionToNextPaint = getInteractionToNextPaint();\n return commonViewMetrics;\n }\n };\n}\n//# sourceMappingURL=trackCommonViewMetrics.js.map","import { elapsed } from '@datadog/browser-core';\nimport { waitPageActivityEnd } from '../../waitPageActivityEnd';\nexport function trackLoadingTime(lifeCycle, domMutationObservable, configuration, loadType, viewStart, callback) {\n var isWaitingForLoadEvent = loadType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */;\n var isWaitingForActivityLoadingTime = true;\n var loadingTimeCandidates = [];\n function invokeCallbackIfAllCandidatesAreReceived() {\n if (!isWaitingForActivityLoadingTime && !isWaitingForLoadEvent && loadingTimeCandidates.length > 0) {\n callback(Math.max.apply(Math, loadingTimeCandidates));\n }\n }\n var stop = waitPageActivityEnd(lifeCycle, domMutationObservable, configuration, function (event) {\n if (isWaitingForActivityLoadingTime) {\n isWaitingForActivityLoadingTime = false;\n if (event.hadActivity) {\n loadingTimeCandidates.push(elapsed(viewStart.timeStamp, event.end));\n }\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }).stop;\n return {\n stop: stop,\n setLoadEvent: function (loadEvent) {\n if (isWaitingForLoadEvent) {\n isWaitingForLoadEvent = false;\n loadingTimeCandidates.push(loadEvent);\n invokeCallbackIfAllCandidatesAreReceived();\n }\n }\n };\n}\n//# sourceMappingURL=trackLoadingTime.js.map","import { noop, PageExitReason, shallowClone, elapsed, generateUUID, ONE_MINUTE, throttle, clocksNow, clocksOrigin, timeStampNow, display, looksLikeRelativeTime, setInterval, clearInterval, setTimeout, Observable } from '@datadog/browser-core';\nimport { trackViewEventCounts } from './trackViewEventCounts';\nimport { trackInitialViewMetrics } from './viewMetrics/trackInitialViewMetrics';\nimport { trackCommonViewMetrics } from './viewMetrics/trackCommonViewMetrics';\nexport var THROTTLE_VIEW_UPDATE_PERIOD = 3000;\nexport var SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE;\n// Some events or metrics can be captured after the end of the view. To avoid missing those;\n// an arbitrary delay is added for stopping their tracking after the view ends.\n//\n// Ideally, we would not stop and keep tracking events or metrics until the end of the session.\n// But this might have a small performance impact if there are many many views.\n// So let's have a fairly short delay improving the situation in most cases and avoid impacting performances too much.\nexport var KEEP_TRACKING_AFTER_VIEW_DELAY = 5 * ONE_MINUTE;\nexport function trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, areViewsTrackedAutomatically, initialViewOptions) {\n var activeViews = new Set();\n var currentView = startNewView(\"initial_load\" /* ViewLoadingType.INITIAL_LOAD */, clocksOrigin(), initialViewOptions);\n startViewLifeCycle();\n var locationChangeSubscription;\n if (areViewsTrackedAutomatically) {\n locationChangeSubscription = renewViewOnLocationChange(locationChangeObservable);\n }\n function startNewView(loadingType, startClocks, viewOptions) {\n var newlyCreatedView = newView(lifeCycle, domMutationObservable, configuration, location, loadingType, startClocks, viewOptions);\n activeViews.add(newlyCreatedView);\n newlyCreatedView.stopObservable.subscribe(function () {\n activeViews.delete(newlyCreatedView);\n });\n return newlyCreatedView;\n }\n function startViewLifeCycle() {\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n // Renew view on session renewal\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, undefined, {\n name: currentView.name,\n service: currentView.service,\n version: currentView.version\n });\n });\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n currentView.end({\n sessionIsActive: false\n });\n });\n // End the current view on page unload\n lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING || pageExitEvent.reason === PageExitReason.PAGEHIDE) {\n currentView.end();\n }\n });\n }\n function renewViewOnLocationChange(locationChangeObservable) {\n return locationChangeObservable.subscribe(function (_a) {\n var oldLocation = _a.oldLocation,\n newLocation = _a.newLocation;\n if (areDifferentLocation(oldLocation, newLocation)) {\n currentView.end();\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */);\n }\n });\n }\n return {\n addTiming: function (name, time) {\n if (time === void 0) {\n time = timeStampNow();\n }\n currentView.addTiming(name, time);\n },\n startView: function (options, startClocks) {\n currentView.end({\n endClocks: startClocks\n });\n currentView = startNewView(\"route_change\" /* ViewLoadingType.ROUTE_CHANGE */, startClocks, options);\n },\n stop: function () {\n locationChangeSubscription === null || locationChangeSubscription === void 0 ? void 0 : locationChangeSubscription.unsubscribe();\n currentView.end();\n activeViews.forEach(function (view) {\n return view.stop();\n });\n }\n };\n}\nfunction newView(lifeCycle, domMutationObservable, configuration, initialLocation, loadingType, startClocks, viewOptions) {\n if (startClocks === void 0) {\n startClocks = clocksNow();\n }\n // Setup initial values\n var id = generateUUID();\n var stopObservable = new Observable();\n var customTimings = {};\n var documentVersion = 0;\n var endClocks;\n var location = shallowClone(initialLocation);\n var sessionIsActive = true;\n var name;\n var service;\n var version;\n if (viewOptions) {\n name = viewOptions.name;\n service = viewOptions.service;\n version = viewOptions.version;\n }\n var viewCreatedEvent = {\n id: id,\n name: name,\n startClocks: startClocks,\n service: service,\n version: version\n };\n lifeCycle.notify(2 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, viewCreatedEvent);\n lifeCycle.notify(3 /* LifeCycleEventType.VIEW_CREATED */, viewCreatedEvent);\n // Update the view every time the measures are changing\n var _a = throttle(triggerViewUpdate, THROTTLE_VIEW_UPDATE_PERIOD, {\n leading: false\n }),\n scheduleViewUpdate = _a.throttled,\n cancelScheduleViewUpdate = _a.cancel;\n var _b = trackCommonViewMetrics(lifeCycle, domMutationObservable, configuration, scheduleViewUpdate, loadingType, startClocks),\n setLoadEvent = _b.setLoadEvent,\n setViewEnd = _b.setViewEnd,\n stopCommonViewMetricsTracking = _b.stop,\n stopINPTracking = _b.stopINPTracking,\n getCommonViewMetrics = _b.getCommonViewMetrics;\n var _c = loadingType === \"initial_load\" /* ViewLoadingType.INITIAL_LOAD */ ? trackInitialViewMetrics(lifeCycle, configuration, setLoadEvent, scheduleViewUpdate) : {\n stop: noop,\n initialViewMetrics: {}\n },\n stopInitialViewMetricsTracking = _c.stop,\n initialViewMetrics = _c.initialViewMetrics;\n var _d = trackViewEventCounts(lifeCycle, id, scheduleViewUpdate),\n stopEventCountsTracking = _d.stop,\n eventCounts = _d.eventCounts;\n // Session keep alive\n var keepAliveIntervalId = setInterval(triggerViewUpdate, SESSION_KEEP_ALIVE_INTERVAL);\n // Initial view update\n triggerViewUpdate();\n function triggerViewUpdate() {\n cancelScheduleViewUpdate();\n documentVersion += 1;\n var currentEnd = endClocks === undefined ? timeStampNow() : endClocks.timeStamp;\n lifeCycle.notify(4 /* LifeCycleEventType.VIEW_UPDATED */, {\n customTimings: customTimings,\n documentVersion: documentVersion,\n id: id,\n name: name,\n service: service,\n version: version,\n loadingType: loadingType,\n location: location,\n startClocks: startClocks,\n commonViewMetrics: getCommonViewMetrics(),\n initialViewMetrics: initialViewMetrics,\n duration: elapsed(startClocks.timeStamp, currentEnd),\n isActive: endClocks === undefined,\n sessionIsActive: sessionIsActive,\n eventCounts: eventCounts\n });\n }\n return {\n name: name,\n service: service,\n version: version,\n stopObservable: stopObservable,\n end: function (options) {\n var _this = this;\n var _a, _b;\n if (options === void 0) {\n options = {};\n }\n if (endClocks) {\n // view already ended\n return;\n }\n endClocks = (_a = options.endClocks) !== null && _a !== void 0 ? _a : clocksNow();\n sessionIsActive = (_b = options.sessionIsActive) !== null && _b !== void 0 ? _b : true;\n lifeCycle.notify(5 /* LifeCycleEventType.VIEW_ENDED */, {\n endClocks: endClocks\n });\n lifeCycle.notify(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, {\n endClocks: endClocks\n });\n clearInterval(keepAliveIntervalId);\n setViewEnd(endClocks.relative);\n stopCommonViewMetricsTracking();\n triggerViewUpdate();\n setTimeout(function () {\n _this.stop();\n }, KEEP_TRACKING_AFTER_VIEW_DELAY);\n },\n stop: function () {\n stopInitialViewMetricsTracking();\n stopEventCountsTracking();\n stopINPTracking();\n stopObservable.notify();\n },\n addTiming: function (name, time) {\n if (endClocks) {\n return;\n }\n var relativeTime = looksLikeRelativeTime(time) ? time : elapsed(startClocks.timeStamp, time);\n customTimings[sanitizeTiming(name)] = relativeTime;\n scheduleViewUpdate();\n }\n };\n}\n/**\n * Timing name is used as facet path that must contain only letters, digits, or the characters - _ . @ $\n */\nfunction sanitizeTiming(name) {\n var sanitized = name.replace(/[^a-zA-Z0-9-_.@$]/g, '_');\n if (sanitized !== name) {\n display.warn(\"Invalid timing name: \".concat(name, \", sanitized to: \").concat(sanitized));\n }\n return sanitized;\n}\nfunction areDifferentLocation(currentLocation, otherLocation) {\n return currentLocation.pathname !== otherLocation.pathname || !isHashAnAnchor(otherLocation.hash) && getPathFromHash(otherLocation.hash) !== getPathFromHash(currentLocation.hash);\n}\nfunction isHashAnAnchor(hash) {\n var correspondingId = hash.substring(1);\n // check if the correspondingId is empty because on Firefox an empty string passed to getElementById() prints a consol warning\n return correspondingId !== '' && !!document.getElementById(correspondingId);\n}\nfunction getPathFromHash(hash) {\n var index = hash.indexOf('?');\n return index < 0 ? hash : hash.slice(0, index);\n}\n//# sourceMappingURL=trackViews.js.map","import { trackEventCounts } from '../trackEventCounts';\nexport function trackViewEventCounts(lifeCycle, viewId, onChange) {\n var _a = trackEventCounts({\n lifeCycle: lifeCycle,\n isChildEvent: function (event) {\n return event.view.id === viewId;\n },\n onChange: onChange\n }),\n stop = _a.stop,\n eventCounts = _a.eventCounts;\n return {\n stop: stop,\n eventCounts: eventCounts\n };\n}\n//# sourceMappingURL=trackViewEventCounts.js.map","import { isEmptyObject, mapValues, toServerDuration, isNumber } from '@datadog/browser-core';\nimport { trackViews } from './trackViews';\nexport function startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions) {\n lifeCycle.subscribe(4 /* LifeCycleEventType.VIEW_UPDATED */, function (view) {\n return lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory));\n });\n return trackViews(location, lifeCycle, domMutationObservable, configuration, locationChangeObservable, !configuration.trackViewsManually, initialViewOptions);\n}\nfunction processViewUpdate(view, configuration, featureFlagContexts, recorderApi, pageStateHistory) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n var replayStats = recorderApi.getReplayStats(view.id);\n var featureFlagContext = featureFlagContexts.findFeatureFlagEvaluations(view.startClocks.relative);\n var pageStates = pageStateHistory.findAll(view.startClocks.relative, view.duration);\n var viewEvent = {\n _dd: {\n document_version: view.documentVersion,\n replay_stats: replayStats,\n page_states: pageStates,\n configuration: {\n start_session_replay_recording_manually: configuration.startSessionReplayRecordingManually\n }\n },\n date: view.startClocks.timeStamp,\n type: \"view\" /* RumEventType.VIEW */,\n view: {\n action: {\n count: view.eventCounts.actionCount\n },\n frustration: {\n count: view.eventCounts.frustrationCount\n },\n cumulative_layout_shift: (_a = view.commonViewMetrics.cumulativeLayoutShift) === null || _a === void 0 ? void 0 : _a.value,\n cumulative_layout_shift_target_selector: (_b = view.commonViewMetrics.cumulativeLayoutShift) === null || _b === void 0 ? void 0 : _b.targetSelector,\n first_byte: toServerDuration((_c = view.initialViewMetrics.navigationTimings) === null || _c === void 0 ? void 0 : _c.firstByte),\n dom_complete: toServerDuration((_d = view.initialViewMetrics.navigationTimings) === null || _d === void 0 ? void 0 : _d.domComplete),\n dom_content_loaded: toServerDuration((_e = view.initialViewMetrics.navigationTimings) === null || _e === void 0 ? void 0 : _e.domContentLoaded),\n dom_interactive: toServerDuration((_f = view.initialViewMetrics.navigationTimings) === null || _f === void 0 ? void 0 : _f.domInteractive),\n error: {\n count: view.eventCounts.errorCount\n },\n first_contentful_paint: toServerDuration(view.initialViewMetrics.firstContentfulPaint),\n first_input_delay: toServerDuration((_g = view.initialViewMetrics.firstInput) === null || _g === void 0 ? void 0 : _g.delay),\n first_input_time: toServerDuration((_h = view.initialViewMetrics.firstInput) === null || _h === void 0 ? void 0 : _h.time),\n first_input_target_selector: (_j = view.initialViewMetrics.firstInput) === null || _j === void 0 ? void 0 : _j.targetSelector,\n interaction_to_next_paint: toServerDuration((_k = view.commonViewMetrics.interactionToNextPaint) === null || _k === void 0 ? void 0 : _k.value),\n interaction_to_next_paint_target_selector: (_l = view.commonViewMetrics.interactionToNextPaint) === null || _l === void 0 ? void 0 : _l.targetSelector,\n is_active: view.isActive,\n name: view.name,\n largest_contentful_paint: toServerDuration((_m = view.initialViewMetrics.largestContentfulPaint) === null || _m === void 0 ? void 0 : _m.value),\n largest_contentful_paint_target_selector: (_o = view.initialViewMetrics.largestContentfulPaint) === null || _o === void 0 ? void 0 : _o.targetSelector,\n load_event: toServerDuration((_p = view.initialViewMetrics.navigationTimings) === null || _p === void 0 ? void 0 : _p.loadEvent),\n loading_time: discardNegativeDuration(toServerDuration(view.commonViewMetrics.loadingTime)),\n loading_type: view.loadingType,\n long_task: {\n count: view.eventCounts.longTaskCount\n },\n resource: {\n count: view.eventCounts.resourceCount\n },\n time_spent: toServerDuration(view.duration)\n },\n feature_flags: featureFlagContext && !isEmptyObject(featureFlagContext) ? featureFlagContext : undefined,\n display: view.commonViewMetrics.scroll ? {\n scroll: {\n max_depth: view.commonViewMetrics.scroll.maxDepth,\n max_depth_scroll_top: view.commonViewMetrics.scroll.maxDepthScrollTop,\n max_scroll_height: view.commonViewMetrics.scroll.maxScrollHeight,\n max_scroll_height_time: toServerDuration(view.commonViewMetrics.scroll.maxScrollHeightTime)\n }\n } : undefined,\n session: {\n has_replay: replayStats ? true : undefined,\n is_active: view.sessionIsActive ? undefined : false\n },\n privacy: {\n replay_level: configuration.defaultPrivacyLevel\n }\n };\n if (!isEmptyObject(view.customTimings)) {\n viewEvent.view.custom_timings = mapValues(view.customTimings, toServerDuration);\n }\n return {\n rawRumEvent: viewEvent,\n startTime: view.startClocks.relative,\n domainContext: {\n location: view.location\n }\n };\n}\nfunction discardNegativeDuration(duration) {\n return isNumber(duration) && duration < 0 ? undefined : duration;\n}\n//# sourceMappingURL=viewCollection.js.map","import { Observable } from '../../tools/observable';\nimport { ValueHistory } from '../../tools/valueHistory';\nimport { relativeNow, clocksOrigin, ONE_MINUTE } from '../../tools/utils/timeUtils';\nimport { DOM_EVENT, addEventListener, addEventListeners } from '../../browser/addEventListener';\nimport { clearInterval, setInterval } from '../../tools/timer';\nimport { SESSION_TIME_OUT_DELAY } from './sessionConstants';\nimport { startSessionStore } from './sessionStore';\nexport var VISIBILITY_CHECK_DELAY = ONE_MINUTE;\nvar SESSION_CONTEXT_TIMEOUT_DELAY = SESSION_TIME_OUT_DELAY;\nvar stopCallbacks = [];\nexport function startSessionManager(configuration, productKey, computeSessionState, trackingConsentState) {\n var renewObservable = new Observable();\n var expireObservable = new Observable();\n // TODO - Improve configuration type and remove assertion\n var sessionStore = startSessionStore(configuration.sessionStoreStrategyType, productKey, computeSessionState);\n stopCallbacks.push(function () {\n return sessionStore.stop();\n });\n var sessionContextHistory = new ValueHistory(SESSION_CONTEXT_TIMEOUT_DELAY);\n stopCallbacks.push(function () {\n return sessionContextHistory.stop();\n });\n sessionStore.renewObservable.subscribe(function () {\n sessionContextHistory.add(buildSessionContext(), relativeNow());\n renewObservable.notify();\n });\n sessionStore.expireObservable.subscribe(function () {\n expireObservable.notify();\n sessionContextHistory.closeActive(relativeNow());\n });\n // We expand/renew session unconditionally as tracking consent is always granted when the session\n // manager is started.\n sessionStore.expandOrRenewSession();\n sessionContextHistory.add(buildSessionContext(), clocksOrigin().relative);\n trackingConsentState.observable.subscribe(function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n } else {\n sessionStore.expire();\n }\n });\n trackActivity(configuration, function () {\n if (trackingConsentState.isGranted()) {\n sessionStore.expandOrRenewSession();\n }\n });\n trackVisibility(configuration, function () {\n return sessionStore.expandSession();\n });\n trackResume(configuration, function () {\n return sessionStore.restartSession();\n });\n function buildSessionContext() {\n return {\n id: sessionStore.getSession().id,\n trackingType: sessionStore.getSession()[productKey]\n };\n }\n return {\n findActiveSession: function (startTime) {\n return sessionContextHistory.find(startTime);\n },\n renewObservable: renewObservable,\n expireObservable: expireObservable,\n expire: sessionStore.expire\n };\n}\nexport function stopSessionManager() {\n stopCallbacks.forEach(function (e) {\n return e();\n });\n stopCallbacks = [];\n}\nfunction trackActivity(configuration, expandOrRenewSession) {\n var stop = addEventListeners(configuration, window, [DOM_EVENT.CLICK, DOM_EVENT.TOUCH_START, DOM_EVENT.KEY_DOWN, DOM_EVENT.SCROLL], expandOrRenewSession, {\n capture: true,\n passive: true\n }).stop;\n stopCallbacks.push(stop);\n}\nfunction trackVisibility(configuration, expandSession) {\n var expandSessionWhenVisible = function () {\n if (document.visibilityState === 'visible') {\n expandSession();\n }\n };\n var stop = addEventListener(configuration, document, DOM_EVENT.VISIBILITY_CHANGE, expandSessionWhenVisible).stop;\n stopCallbacks.push(stop);\n var visibilityCheckInterval = setInterval(expandSessionWhenVisible, VISIBILITY_CHECK_DELAY);\n stopCallbacks.push(function () {\n clearInterval(visibilityCheckInterval);\n });\n}\nfunction trackResume(configuration, cb) {\n var stop = addEventListener(configuration, window, DOM_EVENT.RESUME, cb, {\n capture: true\n }).stop;\n stopCallbacks.push(stop);\n}\n//# sourceMappingURL=sessionManager.js.map","import { Observable, bridgeSupports, noop, performDraw, startSessionManager } from '@datadog/browser-core';\nexport var RUM_SESSION_KEY = 'rum';\nexport function startRumSessionManager(configuration, lifeCycle, trackingConsentState) {\n var sessionManager = startSessionManager(configuration, RUM_SESSION_KEY, function (rawTrackingType) {\n return computeSessionState(configuration, rawTrackingType);\n }, trackingConsentState);\n sessionManager.expireObservable.subscribe(function () {\n lifeCycle.notify(9 /* LifeCycleEventType.SESSION_EXPIRED */);\n });\n sessionManager.renewObservable.subscribe(function () {\n lifeCycle.notify(10 /* LifeCycleEventType.SESSION_RENEWED */);\n });\n return {\n findTrackedSession: function (startTime) {\n var session = sessionManager.findActiveSession(startTime);\n if (!session || !isTypeTracked(session.trackingType)) {\n return;\n }\n return {\n id: session.id,\n sessionReplayAllowed: session.trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */\n };\n },\n expire: sessionManager.expire,\n expireObservable: sessionManager.expireObservable\n };\n}\n/**\n * Start a tracked replay session stub\n */\nexport function startRumSessionManagerStub() {\n var session = {\n id: '00000000-aaaa-0000-aaaa-000000000000',\n sessionReplayAllowed: bridgeSupports(\"records\" /* BridgeCapability.RECORDS */)\n };\n return {\n findTrackedSession: function () {\n return session;\n },\n expire: noop,\n expireObservable: new Observable()\n };\n}\nfunction computeSessionState(configuration, rawTrackingType) {\n var trackingType;\n if (hasValidRumSession(rawTrackingType)) {\n trackingType = rawTrackingType;\n } else if (!performDraw(configuration.sessionSampleRate)) {\n trackingType = \"0\" /* RumTrackingType.NOT_TRACKED */;\n } else if (!performDraw(configuration.sessionReplaySampleRate)) {\n trackingType = \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n } else {\n trackingType = \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n }\n return {\n trackingType: trackingType,\n isTracked: isTypeTracked(trackingType)\n };\n}\nfunction hasValidRumSession(trackingType) {\n return trackingType === \"0\" /* RumTrackingType.NOT_TRACKED */ || trackingType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */ || trackingType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */;\n}\nfunction isTypeTracked(rumSessionType) {\n return rumSessionType === \"2\" /* RumTrackingType.TRACKED_WITHOUT_SESSION_REPLAY */ || rumSessionType === \"1\" /* RumTrackingType.TRACKED_WITH_SESSION_REPLAY */;\n}\n//# sourceMappingURL=rumSessionManager.js.map","import { display } from '../tools/display';\nimport { objectValues } from '../tools/utils/polyfills';\nimport { isPageExitReason } from '../browser/pageExitObservable';\nimport { jsonStringify } from '../tools/serialisation/jsonStringify';\nimport { computeBytesCount } from '../tools/utils/byteUtils';\nvar Batch = /** @class */function () {\n function Batch(encoder, request, flushController, messageBytesLimit) {\n var _this = this;\n this.encoder = encoder;\n this.request = request;\n this.flushController = flushController;\n this.messageBytesLimit = messageBytesLimit;\n this.upsertBuffer = {};\n this.flushSubscription = this.flushController.flushObservable.subscribe(function (event) {\n return _this.flush(event);\n });\n }\n Batch.prototype.add = function (message) {\n this.addOrUpdate(message);\n };\n Batch.prototype.upsert = function (message, key) {\n this.addOrUpdate(message, key);\n };\n Batch.prototype.stop = function () {\n this.flushSubscription.unsubscribe();\n };\n Batch.prototype.flush = function (event) {\n var upsertMessages = objectValues(this.upsertBuffer).join('\\n');\n this.upsertBuffer = {};\n var isPageExit = isPageExitReason(event.reason);\n var send = isPageExit ? this.request.sendOnExit : this.request.send;\n if (isPageExit &&\n // Note: checking that the encoder is async is not strictly needed, but it's an optimization:\n // if the encoder is async we need to send two requests in some cases (one for encoded data\n // and the other for non-encoded data). But if it's not async, we don't have to worry about\n // it and always send a single request.\n this.encoder.isAsync) {\n var encoderResult = this.encoder.finishSync();\n // Send encoded messages\n if (encoderResult.outputBytesCount) {\n send(formatPayloadFromEncoder(encoderResult, event));\n }\n // Send messages that are not yet encoded at this point\n var pendingMessages = [encoderResult.pendingData, upsertMessages].filter(Boolean).join('\\n');\n if (pendingMessages) {\n send({\n data: pendingMessages,\n bytesCount: computeBytesCount(pendingMessages),\n flushReason: event.reason\n });\n }\n } else {\n if (upsertMessages) {\n this.encoder.write(this.encoder.isEmpty ? upsertMessages : \"\\n\".concat(upsertMessages));\n }\n this.encoder.finish(function (encoderResult) {\n send(formatPayloadFromEncoder(encoderResult, event));\n });\n }\n };\n Batch.prototype.addOrUpdate = function (message, key) {\n var serializedMessage = jsonStringify(message);\n var estimatedMessageBytesCount = this.encoder.estimateEncodedBytesCount(serializedMessage);\n if (estimatedMessageBytesCount >= this.messageBytesLimit) {\n display.warn(\"Discarded a message whose size was bigger than the maximum allowed size \".concat(this.messageBytesLimit, \"KB.\"));\n return;\n }\n if (this.hasMessageFor(key)) {\n this.remove(key);\n }\n this.push(serializedMessage, estimatedMessageBytesCount, key);\n };\n Batch.prototype.push = function (serializedMessage, estimatedMessageBytesCount, key) {\n var _this = this;\n this.flushController.notifyBeforeAddMessage(estimatedMessageBytesCount);\n if (key !== undefined) {\n this.upsertBuffer[key] = serializedMessage;\n this.flushController.notifyAfterAddMessage();\n } else {\n this.encoder.write(this.encoder.isEmpty ? serializedMessage : \"\\n\".concat(serializedMessage), function (realMessageBytesCount) {\n _this.flushController.notifyAfterAddMessage(realMessageBytesCount - estimatedMessageBytesCount);\n });\n }\n };\n Batch.prototype.remove = function (key) {\n var removedMessage = this.upsertBuffer[key];\n delete this.upsertBuffer[key];\n var messageBytesCount = this.encoder.estimateEncodedBytesCount(removedMessage);\n this.flushController.notifyAfterRemoveMessage(messageBytesCount);\n };\n Batch.prototype.hasMessageFor = function (key) {\n return key !== undefined && this.upsertBuffer[key] !== undefined;\n };\n return Batch;\n}();\nexport { Batch };\nfunction formatPayloadFromEncoder(encoderResult, flushEvent) {\n var data;\n if (typeof encoderResult.output === 'string') {\n data = encoderResult.output;\n } else {\n data = new Blob([encoderResult.output], {\n // This will set the 'Content-Type: text/plain' header. Reasoning:\n // * The intake rejects the request if there is no content type.\n // * The browser will issue CORS preflight requests if we set it to 'application/json', which\n // could induce higher intake load (and maybe has other impacts).\n // * Also it's not quite JSON, since we are concatenating multiple JSON objects separated by\n // new lines.\n type: 'text/plain'\n });\n }\n return {\n data: data,\n bytesCount: encoderResult.outputBytesCount,\n encoding: encoderResult.encoding,\n flushReason: flushEvent.reason\n };\n}\n//# sourceMappingURL=batch.js.map","import { setTimeout } from '../tools/timer';\nimport { clocksNow, ONE_MINUTE, ONE_SECOND } from '../tools/utils/timeUtils';\nimport { ONE_MEBI_BYTE, ONE_KIBI_BYTE } from '../tools/utils/byteUtils';\nimport { isServerError } from '../tools/utils/responseUtils';\nimport { ErrorSource } from '../domain/error/error.types';\nexport var MAX_ONGOING_BYTES_COUNT = 80 * ONE_KIBI_BYTE;\nexport var MAX_ONGOING_REQUESTS = 32;\nexport var MAX_QUEUE_BYTES_COUNT = 3 * ONE_MEBI_BYTE;\nexport var MAX_BACKOFF_TIME = ONE_MINUTE;\nexport var INITIAL_BACKOFF_TIME = ONE_SECOND;\nexport function sendWithRetryStrategy(payload, state, sendStrategy, trackType, reportError) {\n if (state.transportStatus === 0 /* TransportStatus.UP */ && state.queuedPayloads.size() === 0 && state.bandwidthMonitor.canHandle(payload)) {\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n return retryQueuedPayloads(0 /* RetryReason.AFTER_SUCCESS */, state, sendStrategy, trackType, reportError);\n },\n onFailure: function () {\n state.queuedPayloads.enqueue(payload);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n }\n });\n } else {\n state.queuedPayloads.enqueue(payload);\n }\n}\nfunction scheduleRetry(state, sendStrategy, trackType, reportError) {\n if (state.transportStatus !== 2 /* TransportStatus.DOWN */) {\n return;\n }\n setTimeout(function () {\n var payload = state.queuedPayloads.first();\n send(payload, state, sendStrategy, {\n onSuccess: function () {\n state.queuedPayloads.dequeue();\n state.currentBackoffTime = INITIAL_BACKOFF_TIME;\n retryQueuedPayloads(1 /* RetryReason.AFTER_RESUME */, state, sendStrategy, trackType, reportError);\n },\n onFailure: function () {\n state.currentBackoffTime = Math.min(MAX_BACKOFF_TIME, state.currentBackoffTime * 2);\n scheduleRetry(state, sendStrategy, trackType, reportError);\n }\n });\n }, state.currentBackoffTime);\n}\nfunction send(payload, state, sendStrategy, _a) {\n var onSuccess = _a.onSuccess,\n onFailure = _a.onFailure;\n state.bandwidthMonitor.add(payload);\n sendStrategy(payload, function (response) {\n state.bandwidthMonitor.remove(payload);\n if (!shouldRetryRequest(response)) {\n state.transportStatus = 0 /* TransportStatus.UP */;\n onSuccess();\n } else {\n // do not consider transport down if another ongoing request could succeed\n state.transportStatus = state.bandwidthMonitor.ongoingRequestCount > 0 ? 1 /* TransportStatus.FAILURE_DETECTED */ : 2 /* TransportStatus.DOWN */;\n payload.retry = {\n count: payload.retry ? payload.retry.count + 1 : 1,\n lastFailureStatus: response.status\n };\n onFailure();\n }\n });\n}\nfunction retryQueuedPayloads(reason, state, sendStrategy, trackType, reportError) {\n if (reason === 0 /* RetryReason.AFTER_SUCCESS */ && state.queuedPayloads.isFull() && !state.queueFullReported) {\n reportError({\n message: \"Reached max \".concat(trackType, \" events size queued for upload: \").concat(MAX_QUEUE_BYTES_COUNT / ONE_MEBI_BYTE, \"MiB\"),\n source: ErrorSource.AGENT,\n startClocks: clocksNow()\n });\n state.queueFullReported = true;\n }\n var previousQueue = state.queuedPayloads;\n state.queuedPayloads = newPayloadQueue();\n while (previousQueue.size() > 0) {\n sendWithRetryStrategy(previousQueue.dequeue(), state, sendStrategy, trackType, reportError);\n }\n}\nfunction shouldRetryRequest(response) {\n return response.type !== 'opaque' && (response.status === 0 && !navigator.onLine || response.status === 408 || response.status === 429 || isServerError(response.status));\n}\nexport function newRetryState() {\n return {\n transportStatus: 0 /* TransportStatus.UP */,\n currentBackoffTime: INITIAL_BACKOFF_TIME,\n bandwidthMonitor: newBandwidthMonitor(),\n queuedPayloads: newPayloadQueue(),\n queueFullReported: false\n };\n}\nfunction newPayloadQueue() {\n var queue = [];\n return {\n bytesCount: 0,\n enqueue: function (payload) {\n if (this.isFull()) {\n return;\n }\n queue.push(payload);\n this.bytesCount += payload.bytesCount;\n },\n first: function () {\n return queue[0];\n },\n dequeue: function () {\n var payload = queue.shift();\n if (payload) {\n this.bytesCount -= payload.bytesCount;\n }\n return payload;\n },\n size: function () {\n return queue.length;\n },\n isFull: function () {\n return this.bytesCount >= MAX_QUEUE_BYTES_COUNT;\n }\n };\n}\nfunction newBandwidthMonitor() {\n return {\n ongoingRequestCount: 0,\n ongoingByteCount: 0,\n canHandle: function (payload) {\n return this.ongoingRequestCount === 0 || this.ongoingByteCount + payload.bytesCount <= MAX_ONGOING_BYTES_COUNT && this.ongoingRequestCount < MAX_ONGOING_REQUESTS;\n },\n add: function (payload) {\n this.ongoingRequestCount += 1;\n this.ongoingByteCount += payload.bytesCount;\n },\n remove: function (payload) {\n this.ongoingRequestCount -= 1;\n this.ongoingByteCount -= payload.bytesCount;\n }\n };\n}\n//# sourceMappingURL=sendWithRetryStrategy.js.map","import { addTelemetryError } from '../domain/telemetry';\nimport { monitor } from '../tools/monitor';\nimport { addEventListener } from '../browser/addEventListener';\nimport { newRetryState, sendWithRetryStrategy } from './sendWithRetryStrategy';\nexport function createHttpRequest(configuration, endpointBuilder, bytesLimit, reportError) {\n var retryState = newRetryState();\n var sendStrategyForRetry = function (payload, onResponse) {\n return fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse);\n };\n return {\n send: function (payload) {\n sendWithRetryStrategy(payload, retryState, sendStrategyForRetry, endpointBuilder.trackType, reportError);\n },\n /**\n * Since fetch keepalive behaves like regular fetch on Firefox,\n * keep using sendBeaconStrategy on exit\n */\n sendOnExit: function (payload) {\n sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload);\n }\n };\n}\nfunction sendBeaconStrategy(configuration, endpointBuilder, bytesLimit, payload) {\n var canUseBeacon = !!navigator.sendBeacon && payload.bytesCount < bytesLimit;\n if (canUseBeacon) {\n try {\n var beaconUrl = endpointBuilder.build('beacon', payload);\n var isQueued = navigator.sendBeacon(beaconUrl, payload.data);\n if (isQueued) {\n return;\n }\n } catch (e) {\n reportBeaconError(e);\n }\n }\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data);\n}\nvar hasReportedBeaconError = false;\nfunction reportBeaconError(e) {\n if (!hasReportedBeaconError) {\n hasReportedBeaconError = true;\n addTelemetryError(e);\n }\n}\nexport function fetchKeepAliveStrategy(configuration, endpointBuilder, bytesLimit, payload, onResponse) {\n var canUseKeepAlive = isKeepAliveSupported() && payload.bytesCount < bytesLimit;\n if (canUseKeepAlive) {\n var fetchUrl = endpointBuilder.build('fetch', payload);\n fetch(fetchUrl, {\n method: 'POST',\n body: payload.data,\n keepalive: true,\n mode: 'cors'\n }).then(monitor(function (response) {\n return onResponse === null || onResponse === void 0 ? void 0 : onResponse({\n status: response.status,\n type: response.type\n });\n }), monitor(function () {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n // failed to queue the request\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }));\n } else {\n var xhrUrl = endpointBuilder.build('xhr', payload);\n sendXHR(configuration, xhrUrl, payload.data, onResponse);\n }\n}\nfunction isKeepAliveSupported() {\n // Request can throw, cf https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#errors\n try {\n return window.Request && 'keepalive' in new Request('http://a');\n } catch (_a) {\n return false;\n }\n}\nexport function sendXHR(configuration, url, data, onResponse) {\n var request = new XMLHttpRequest();\n request.open('POST', url, true);\n if (data instanceof Blob) {\n // When using a Blob instance, IE does not use its 'type' to define the 'Content-Type' header\n // automatically, so the intake request ends up being rejected with an HTTP status 415\n // Defining the header manually fixes this issue.\n request.setRequestHeader('Content-Type', data.type);\n }\n addEventListener(configuration, request, 'loadend', function () {\n onResponse === null || onResponse === void 0 ? void 0 : onResponse({\n status: request.status\n });\n }, {\n // prevent multiple onResponse callbacks\n // if the xhr instance is reused by a third party\n once: true\n });\n request.send(data);\n}\n//# sourceMappingURL=httpRequest.js.map","import { Observable } from '../tools/observable';\nimport { clearTimeout, setTimeout } from '../tools/timer';\n/**\n * Returns a \"flush controller\", responsible of notifying when flushing a pool of pending data needs\n * to happen. The implementation is designed to support both synchronous and asynchronous usages,\n * but relies on invariants described in each method documentation to keep a coherent state.\n */\nexport function createFlushController(_a) {\n var messagesLimit = _a.messagesLimit,\n bytesLimit = _a.bytesLimit,\n durationLimit = _a.durationLimit,\n pageExitObservable = _a.pageExitObservable,\n sessionExpireObservable = _a.sessionExpireObservable;\n var pageExitSubscription = pageExitObservable.subscribe(function (event) {\n return flush(event.reason);\n });\n var sessionExpireSubscription = sessionExpireObservable.subscribe(function () {\n return flush('session_expire');\n });\n var flushObservable = new Observable(function () {\n return function () {\n pageExitSubscription.unsubscribe();\n sessionExpireSubscription.unsubscribe();\n };\n });\n var currentBytesCount = 0;\n var currentMessagesCount = 0;\n function flush(flushReason) {\n if (currentMessagesCount === 0) {\n return;\n }\n var messagesCount = currentMessagesCount;\n var bytesCount = currentBytesCount;\n currentMessagesCount = 0;\n currentBytesCount = 0;\n cancelDurationLimitTimeout();\n flushObservable.notify({\n reason: flushReason,\n messagesCount: messagesCount,\n bytesCount: bytesCount\n });\n }\n var durationLimitTimeoutId;\n function scheduleDurationLimitTimeout() {\n if (durationLimitTimeoutId === undefined) {\n durationLimitTimeoutId = setTimeout(function () {\n flush('duration_limit');\n }, durationLimit);\n }\n }\n function cancelDurationLimitTimeout() {\n clearTimeout(durationLimitTimeoutId);\n durationLimitTimeoutId = undefined;\n }\n return {\n flushObservable: flushObservable,\n get messagesCount() {\n return currentMessagesCount;\n },\n /**\n * Notifies that a message will be added to a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right before adding the message, so no flush\n * event can happen after `notifyBeforeAddMessage` and before adding the message.\n *\n * @param estimatedMessageBytesCount: an estimation of the message bytes count once it is\n * actually added.\n */\n notifyBeforeAddMessage: function (estimatedMessageBytesCount) {\n if (currentBytesCount + estimatedMessageBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n // Consider the message to be added now rather than in `notifyAfterAddMessage`, because if no\n // message was added yet and `notifyAfterAddMessage` is called asynchronously, we still want\n // to notify when a flush is needed (for example on page exit).\n currentMessagesCount += 1;\n currentBytesCount += estimatedMessageBytesCount;\n scheduleDurationLimitTimeout();\n },\n /**\n * Notifies that a message *was* added to a pool of pending messages waiting to be flushed.\n *\n * This function can be called asynchronously after the message was added, but in this case it\n * should not be called if a flush event occurred in between.\n *\n * @param messageBytesCountDiff: the difference between the estimated message bytes count and\n * its actual bytes count once added to the pool.\n */\n notifyAfterAddMessage: function (messageBytesCountDiff) {\n if (messageBytesCountDiff === void 0) {\n messageBytesCountDiff = 0;\n }\n currentBytesCount += messageBytesCountDiff;\n if (currentMessagesCount >= messagesLimit) {\n flush('messages_limit');\n } else if (currentBytesCount >= bytesLimit) {\n flush('bytes_limit');\n }\n },\n /**\n * Notifies that a message was removed from a pool of pending messages waiting to be flushed.\n *\n * This function needs to be called synchronously, right after removing the message, so no flush\n * event can happen after removing the message and before `notifyAfterRemoveMessage`.\n *\n * @param messageBytesCount: the message bytes count that was added to the pool. Should\n * correspond to the sum of bytes counts passed to `notifyBeforeAddMessage` and\n * `notifyAfterAddMessage`.\n */\n notifyAfterRemoveMessage: function (messageBytesCount) {\n currentBytesCount -= messageBytesCount;\n currentMessagesCount -= 1;\n if (currentMessagesCount === 0) {\n cancelDurationLimitTimeout();\n }\n }\n };\n}\n//# sourceMappingURL=flushController.js.map","import { combine, isTelemetryReplicationAllowed, startBatchWithReplica } from '@datadog/browser-core';\nexport function startRumBatch(configuration, lifeCycle, telemetryEventObservable, reportError, pageExitObservable, sessionExpireObservable, createEncoder) {\n var replica = configuration.replica;\n var batch = startBatchWithReplica(configuration, {\n endpoint: configuration.rumEndpointBuilder,\n encoder: createEncoder(2 /* DeflateEncoderStreamId.RUM */)\n }, replica && {\n endpoint: replica.rumEndpointBuilder,\n transformMessage: function (message) {\n return combine(message, {\n application: {\n id: replica.applicationId\n }\n });\n },\n encoder: createEncoder(3 /* DeflateEncoderStreamId.RUM_REPLICA */)\n }, reportError, pageExitObservable, sessionExpireObservable);\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n if (serverRumEvent.type === \"view\" /* RumEventType.VIEW */) {\n batch.upsert(serverRumEvent, serverRumEvent.view.id);\n } else {\n batch.add(serverRumEvent);\n }\n });\n telemetryEventObservable.subscribe(function (event) {\n return batch.add(event, isTelemetryReplicationAllowed(configuration));\n });\n return batch;\n}\n//# sourceMappingURL=startRumBatch.js.map","import { Batch } from './batch';\nimport { createHttpRequest } from './httpRequest';\nimport { createFlushController } from './flushController';\nexport function startBatchWithReplica(configuration, primary, replica, reportError, pageExitObservable, sessionExpireObservable) {\n var primaryBatch = createBatch(configuration, primary);\n var replicaBatch = replica && createBatch(configuration, replica);\n function createBatch(configuration, _a) {\n var endpoint = _a.endpoint,\n encoder = _a.encoder;\n return new Batch(encoder, createHttpRequest(configuration, endpoint, configuration.batchBytesLimit, reportError), createFlushController({\n messagesLimit: configuration.batchMessagesLimit,\n bytesLimit: configuration.batchBytesLimit,\n durationLimit: configuration.flushTimeout,\n pageExitObservable: pageExitObservable,\n sessionExpireObservable: sessionExpireObservable\n }), configuration.messageBytesLimit);\n }\n return {\n flushObservable: primaryBatch.flushController.flushObservable,\n add: function (message, replicated) {\n if (replicated === void 0) {\n replicated = true;\n }\n primaryBatch.add(message);\n if (replicaBatch && replicated) {\n replicaBatch.add(replica.transformMessage ? replica.transformMessage(message) : message);\n }\n },\n upsert: function (message, key) {\n primaryBatch.upsert(message, key);\n if (replicaBatch) {\n replicaBatch.upsert(replica.transformMessage ? replica.transformMessage(message) : message, key);\n }\n },\n stop: function () {\n primaryBatch.stop();\n replicaBatch === null || replicaBatch === void 0 ? void 0 : replicaBatch.stop();\n }\n };\n}\n//# sourceMappingURL=startBatchWithReplica.js.map","import { SESSION_TIME_OUT_DELAY, relativeNow, ValueHistory } from '@datadog/browser-core';\n/**\n * We want to attach to an event:\n * - the url corresponding to its start\n * - the referrer corresponding to the previous view url (or document referrer for initial view)\n */\nexport var URL_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startUrlContexts(lifeCycle, locationChangeObservable, location) {\n var urlContextHistory = new ValueHistory(URL_CONTEXT_TIME_OUT_DELAY);\n var previousViewUrl;\n lifeCycle.subscribe(2 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n var viewUrl = location.href;\n urlContextHistory.add(buildUrlContext({\n url: viewUrl,\n referrer: !previousViewUrl ? document.referrer : previousViewUrl\n }), startClocks.relative);\n previousViewUrl = viewUrl;\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n urlContextHistory.closeActive(endClocks.relative);\n });\n var locationChangeSubscription = locationChangeObservable.subscribe(function (_a) {\n var newLocation = _a.newLocation;\n var current = urlContextHistory.find();\n if (current) {\n var changeTime = relativeNow();\n urlContextHistory.closeActive(changeTime);\n urlContextHistory.add(buildUrlContext({\n url: newLocation.href,\n referrer: current.referrer\n }), changeTime);\n }\n });\n function buildUrlContext(_a) {\n var url = _a.url,\n referrer = _a.referrer;\n return {\n url: url,\n referrer: referrer\n };\n }\n return {\n findUrl: function (startTime) {\n return urlContextHistory.find(startTime);\n },\n stop: function () {\n locationChangeSubscription.unsubscribe();\n urlContextHistory.stop();\n }\n };\n}\n//# sourceMappingURL=urlContexts.js.map","import { addEventListener, DOM_EVENT, instrumentMethod, Observable, shallowClone } from '@datadog/browser-core';\nexport function createLocationChangeObservable(configuration, location) {\n var currentLocation = shallowClone(location);\n return new Observable(function (observable) {\n var stopHistoryTracking = trackHistory(configuration, onLocationChange).stop;\n var stopHashTracking = trackHash(configuration, onLocationChange).stop;\n function onLocationChange() {\n if (currentLocation.href === location.href) {\n return;\n }\n var newLocation = shallowClone(location);\n observable.notify({\n newLocation: newLocation,\n oldLocation: currentLocation\n });\n currentLocation = newLocation;\n }\n return function () {\n stopHistoryTracking();\n stopHashTracking();\n };\n });\n}\nfunction trackHistory(configuration, onHistoryChange) {\n var stopInstrumentingPushState = instrumentMethod(history, 'pushState', function (_a) {\n var onPostCall = _a.onPostCall;\n onPostCall(onHistoryChange);\n }).stop;\n var stopInstrumentingReplaceState = instrumentMethod(history, 'replaceState', function (_a) {\n var onPostCall = _a.onPostCall;\n onPostCall(onHistoryChange);\n }).stop;\n var removeListener = addEventListener(configuration, window, DOM_EVENT.POP_STATE, onHistoryChange).stop;\n return {\n stop: function () {\n stopInstrumentingPushState();\n stopInstrumentingReplaceState();\n removeListener();\n }\n };\n}\nfunction trackHash(configuration, onHashChange) {\n return addEventListener(configuration, window, DOM_EVENT.HASH_CHANGE, onHashChange);\n}\n//# sourceMappingURL=locationChangeObservable.js.map","import { SESSION_TIME_OUT_DELAY, ValueHistory } from '@datadog/browser-core';\nexport var FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport var BYTES_COMPUTATION_THROTTLING_DELAY = 200;\n/**\n * Start feature flag contexts\n *\n * Feature flag contexts follow the life of views.\n * A new context is added when a view is created and ended when the view is ended\n *\n * Note: we choose not to add a new context at each evaluation to save memory\n */\nexport function startFeatureFlagContexts(lifeCycle, customerDataTracker) {\n var featureFlagContexts = new ValueHistory(FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY);\n lifeCycle.subscribe(2 /* LifeCycleEventType.BEFORE_VIEW_CREATED */, function (_a) {\n var startClocks = _a.startClocks;\n featureFlagContexts.add({}, startClocks.relative);\n customerDataTracker.resetCustomerData();\n });\n lifeCycle.subscribe(6 /* LifeCycleEventType.AFTER_VIEW_ENDED */, function (_a) {\n var endClocks = _a.endClocks;\n featureFlagContexts.closeActive(endClocks.relative);\n });\n return {\n findFeatureFlagEvaluations: function (startTime) {\n return featureFlagContexts.find(startTime);\n },\n addFeatureFlagEvaluation: function (key, value) {\n var currentContext = featureFlagContexts.find();\n if (currentContext) {\n currentContext[key] = value;\n customerDataTracker.updateCustomerData(currentContext);\n }\n },\n stop: function () {\n return customerDataTracker.stop();\n }\n };\n}\n//# sourceMappingURL=featureFlagContext.js.map","import { includes, performDraw, ONE_SECOND, addTelemetryDebug, setInterval } from '@datadog/browser-core';\nexport var MEASURES_PERIOD_DURATION = 10 * ONE_SECOND;\nvar currentPeriodMeasures;\nvar currentBatchMeasures;\nvar batchHasRumEvent;\nexport function startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batchFlushObservable) {\n var customerDataTelemetryEnabled = telemetry.enabled && performDraw(configuration.customerDataTelemetrySampleRate);\n if (!customerDataTelemetryEnabled) {\n return;\n }\n initCurrentPeriodMeasures();\n initCurrentBatchMeasures();\n // We measure the data of every view updates even if there could only be one per batch due to the upsert\n // It means that contexts bytes count sums can be higher than it really is\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n batchHasRumEvent = true;\n updateMeasure(currentBatchMeasures.globalContextBytes, customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */).getBytesCount());\n updateMeasure(currentBatchMeasures.userContextBytes, customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */).getBytesCount());\n updateMeasure(currentBatchMeasures.featureFlagBytes, includes([\"view\" /* RumEventType.VIEW */, \"error\" /* RumEventType.ERROR */], event.type) ? customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */).getBytesCount() : 0);\n });\n batchFlushObservable.subscribe(function (_a) {\n var bytesCount = _a.bytesCount,\n messagesCount = _a.messagesCount;\n // Don't measure batch that only contains telemetry events to avoid batch sending loop\n // It could happen because after each batch we are adding a customer data measures telemetry event to the next one\n if (!batchHasRumEvent) {\n return;\n }\n currentPeriodMeasures.batchCount += 1;\n updateMeasure(currentPeriodMeasures.batchBytesCount, bytesCount);\n updateMeasure(currentPeriodMeasures.batchMessagesCount, messagesCount);\n mergeMeasure(currentPeriodMeasures.globalContextBytes, currentBatchMeasures.globalContextBytes);\n mergeMeasure(currentPeriodMeasures.userContextBytes, currentBatchMeasures.userContextBytes);\n mergeMeasure(currentPeriodMeasures.featureFlagBytes, currentBatchMeasures.featureFlagBytes);\n initCurrentBatchMeasures();\n });\n setInterval(sendCurrentPeriodMeasures, MEASURES_PERIOD_DURATION);\n}\nfunction sendCurrentPeriodMeasures() {\n if (currentPeriodMeasures.batchCount === 0) {\n return;\n }\n addTelemetryDebug('Customer data measures', currentPeriodMeasures);\n initCurrentPeriodMeasures();\n}\nfunction createMeasure() {\n return {\n min: Infinity,\n max: 0,\n sum: 0\n };\n}\nfunction updateMeasure(measure, value) {\n measure.sum += value;\n measure.min = Math.min(measure.min, value);\n measure.max = Math.max(measure.max, value);\n}\nfunction mergeMeasure(target, source) {\n target.sum += source.sum;\n target.min = Math.min(target.min, source.min);\n target.max = Math.max(target.max, source.max);\n}\nfunction initCurrentPeriodMeasures() {\n currentPeriodMeasures = {\n batchCount: 0,\n batchBytesCount: createMeasure(),\n batchMessagesCount: createMeasure(),\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure()\n };\n}\nfunction initCurrentBatchMeasures() {\n batchHasRumEvent = false;\n currentBatchMeasures = {\n globalContextBytes: createMeasure(),\n userContextBytes: createMeasure(),\n featureFlagBytes: createMeasure()\n };\n}\n//# sourceMappingURL=startCustomerDataTelemetry.js.map","import { elapsed, ValueHistory, SESSION_TIME_OUT_DELAY, toServerDuration, addEventListeners, relativeNow, DOM_EVENT } from '@datadog/browser-core';\n// Arbitrary value to cap number of element for memory consumption in the browser\nexport var MAX_PAGE_STATE_ENTRIES = 4000;\n// Arbitrary value to cap number of element for backend & to save bandwidth\nexport var MAX_PAGE_STATE_ENTRIES_SELECTABLE = 500;\nexport var PAGE_STATE_CONTEXT_TIME_OUT_DELAY = SESSION_TIME_OUT_DELAY;\nexport function startPageStateHistory(configuration, maxPageStateEntriesSelectable) {\n if (maxPageStateEntriesSelectable === void 0) {\n maxPageStateEntriesSelectable = MAX_PAGE_STATE_ENTRIES_SELECTABLE;\n }\n var pageStateEntryHistory = new ValueHistory(PAGE_STATE_CONTEXT_TIME_OUT_DELAY, MAX_PAGE_STATE_ENTRIES);\n var currentPageState;\n addPageState(getPageState(), relativeNow());\n var stopEventListeners = addEventListeners(configuration, window, [DOM_EVENT.PAGE_SHOW, DOM_EVENT.FOCUS, DOM_EVENT.BLUR, DOM_EVENT.VISIBILITY_CHANGE, DOM_EVENT.RESUME, DOM_EVENT.FREEZE, DOM_EVENT.PAGE_HIDE], function (event) {\n addPageState(computePageState(event), event.timeStamp);\n }, {\n capture: true\n }).stop;\n function addPageState(nextPageState, startTime) {\n if (startTime === void 0) {\n startTime = relativeNow();\n }\n if (nextPageState === currentPageState) {\n return;\n }\n currentPageState = nextPageState;\n pageStateEntryHistory.closeActive(startTime);\n pageStateEntryHistory.add({\n state: currentPageState,\n startTime: startTime\n }, startTime);\n }\n var pageStateHistory = {\n findAll: function (eventStartTime, duration) {\n var pageStateEntries = pageStateEntryHistory.findAll(eventStartTime, duration);\n if (pageStateEntries.length === 0) {\n return;\n }\n var pageStateServerEntries = [];\n // limit the number of entries to return\n var limit = Math.max(0, pageStateEntries.length - maxPageStateEntriesSelectable);\n // loop page state entries backward to return the selected ones in desc order\n for (var index = pageStateEntries.length - 1; index >= limit; index--) {\n var pageState = pageStateEntries[index];\n // compute the start time relative to the event start time (ex: to be relative to the view start time)\n var relativeStartTime = elapsed(eventStartTime, pageState.startTime);\n pageStateServerEntries.push({\n state: pageState.state,\n start: toServerDuration(relativeStartTime)\n });\n }\n return pageStateServerEntries;\n },\n wasInPageStateAt: function (state, startTime) {\n return pageStateHistory.wasInPageStateDuringPeriod(state, startTime, 0);\n },\n wasInPageStateDuringPeriod: function (state, startTime, duration) {\n return pageStateEntryHistory.findAll(startTime, duration).some(function (pageState) {\n return pageState.state === state;\n });\n },\n addPageState: addPageState,\n stop: function () {\n stopEventListeners();\n pageStateEntryHistory.stop();\n }\n };\n return pageStateHistory;\n}\nfunction computePageState(event) {\n if (event.type === DOM_EVENT.FREEZE) {\n return \"frozen\" /* PageState.FROZEN */;\n } else if (event.type === DOM_EVENT.PAGE_HIDE) {\n return event.persisted ? \"frozen\" /* PageState.FROZEN */ : \"terminated\" /* PageState.TERMINATED */;\n }\n return getPageState();\n}\nfunction getPageState() {\n if (document.visibilityState === 'hidden') {\n return \"hidden\" /* PageState.HIDDEN */;\n }\n if (document.hasFocus()) {\n return \"active\" /* PageState.ACTIVE */;\n }\n return \"passive\" /* PageState.PASSIVE */;\n}\n//# sourceMappingURL=pageStateHistory.js.map","import { combine, elapsed, generateUUID } from '@datadog/browser-core';\nexport function startVitalCollection(lifeCycle, pageStateHistory) {\n var vitalStartsByName = new Map();\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n // Discard all the vitals that have not been stopped to avoid memory leaks\n vitalStartsByName.clear();\n });\n function isValid(vital) {\n return !pageStateHistory.wasInPageStateDuringPeriod(\"frozen\" /* PageState.FROZEN */, vital.startClocks.relative, vital.value);\n }\n return {\n startDurationVital: function (vitalStart) {\n vitalStartsByName.set(vitalStart.name, vitalStart);\n },\n stopDurationVital: function (vitalStop) {\n var vitalStart = vitalStartsByName.get(vitalStop.name);\n if (!vitalStart) {\n return;\n }\n var vital = buildDurationVital(vitalStart, vitalStop);\n vitalStartsByName.delete(vital.name);\n if (isValid(vital)) {\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, processVital(vital, true));\n }\n }\n };\n}\nfunction buildDurationVital(vitalStart, vitalStop) {\n return {\n name: vitalStart.name,\n type: \"duration\" /* VitalType.DURATION */,\n startClocks: vitalStart.startClocks,\n value: elapsed(vitalStart.startClocks.timeStamp, vitalStop.stopClocks.timeStamp),\n context: combine(vitalStart.context, vitalStop.context)\n };\n}\nfunction processVital(vital, valueComputedBySdk) {\n var _a;\n var rawRumEvent = {\n date: vital.startClocks.timeStamp,\n vital: {\n id: generateUUID(),\n type: vital.type,\n name: vital.name,\n custom: (_a = {}, _a[vital.name] = vital.value, _a)\n },\n type: \"vital\" /* RumEventType.VITAL */\n };\n if (valueComputedBySdk) {\n rawRumEvent._dd = {\n vital: {\n computed_value: true\n }\n };\n }\n return {\n rawRumEvent: rawRumEvent,\n startTime: vital.startClocks.relative,\n customerContext: vital.context,\n domainContext: {}\n };\n}\n//# sourceMappingURL=vitalCollection.js.map","import { setInterval, clearInterval, Observable, addEventListener, ONE_SECOND, findCommaSeparatedValue, DOM_EVENT, find } from '@datadog/browser-core';\nexport function createCookieObservable(configuration, cookieName) {\n var detectCookieChangeStrategy = window.cookieStore ? listenToCookieStoreChange(configuration) : watchCookieFallback;\n return new Observable(function (observable) {\n return detectCookieChangeStrategy(cookieName, function (event) {\n return observable.notify(event);\n });\n });\n}\nfunction listenToCookieStoreChange(configuration) {\n return function (cookieName, callback) {\n var listener = addEventListener(configuration, window.cookieStore, DOM_EVENT.CHANGE, function (event) {\n // Based on our experimentation, we're assuming that entries for the same cookie cannot be in both the 'changed' and 'deleted' arrays.\n // However, due to ambiguity in the specification, we asked for clarification: https://github.com/WICG/cookie-store/issues/226\n var changeEvent = find(event.changed, function (event) {\n return event.name === cookieName;\n }) || find(event.deleted, function (event) {\n return event.name === cookieName;\n });\n if (changeEvent) {\n callback(changeEvent.value);\n }\n });\n return listener.stop;\n };\n}\nexport var WATCH_COOKIE_INTERVAL_DELAY = ONE_SECOND;\nfunction watchCookieFallback(cookieName, callback) {\n var previousCookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n var watchCookieIntervalId = setInterval(function () {\n var cookieValue = findCommaSeparatedValue(document.cookie, cookieName);\n if (cookieValue !== previousCookieValue) {\n callback(cookieValue);\n }\n }, WATCH_COOKIE_INTERVAL_DELAY);\n return function () {\n clearInterval(watchCookieIntervalId);\n };\n}\n//# sourceMappingURL=cookieObservable.js.map","import { getInitCookie } from '@datadog/browser-core';\nimport { createCookieObservable } from '../../browser/cookieObservable';\nexport var CI_VISIBILITY_TEST_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id';\nexport function startCiVisibilityContext(configuration, cookieObservable) {\n var _a;\n if (cookieObservable === void 0) {\n cookieObservable = createCookieObservable(configuration, CI_VISIBILITY_TEST_ID_COOKIE_NAME);\n }\n var testExecutionId = getInitCookie(CI_VISIBILITY_TEST_ID_COOKIE_NAME) || ((_a = window.Cypress) === null || _a === void 0 ? void 0 : _a.env('traceId'));\n var cookieObservableSubscription = cookieObservable.subscribe(function (value) {\n testExecutionId = value;\n });\n return {\n get: function () {\n if (typeof testExecutionId === 'string') {\n return {\n test_execution_id: testExecutionId\n };\n }\n },\n stop: function () {\n return cookieObservableSubscription.unsubscribe();\n }\n };\n}\n//# sourceMappingURL=ciVisibilityContext.js.map","import { INTAKE_SITE_STAGING, INTAKE_SITE_US1, INTAKE_SITE_EU1 } from '@datadog/browser-core';\nexport function getSessionReplayUrl(configuration, _a) {\n var session = _a.session,\n viewContext = _a.viewContext,\n errorType = _a.errorType;\n var sessionId = session ? session.id : 'no-session-id';\n var parameters = [];\n if (errorType !== undefined) {\n parameters.push(\"error-type=\".concat(errorType));\n }\n if (viewContext) {\n parameters.push(\"seed=\".concat(viewContext.id));\n parameters.push(\"from=\".concat(viewContext.startClocks.timeStamp));\n }\n var origin = getDatadogSiteUrl(configuration);\n var path = \"/rum/replay/sessions/\".concat(sessionId);\n return \"\".concat(origin).concat(path, \"?\").concat(parameters.join('&'));\n}\nexport function getDatadogSiteUrl(rumConfiguration) {\n var site = rumConfiguration.site;\n var subdomain = rumConfiguration.subdomain || getSiteDefaultSubdomain(rumConfiguration);\n return \"https://\".concat(subdomain ? \"\".concat(subdomain, \".\") : '').concat(site);\n}\nfunction getSiteDefaultSubdomain(configuration) {\n switch (configuration.site) {\n case INTAKE_SITE_US1:\n case INTAKE_SITE_EU1:\n return 'app';\n case INTAKE_SITE_STAGING:\n return 'dd';\n default:\n return undefined;\n }\n}\n//# sourceMappingURL=getSessionReplayUrl.js.map","export var MAX_STATS_HISTORY = 10;\nvar statsPerView;\nexport function getSegmentsCount(viewId) {\n return getOrCreateReplayStats(viewId).segments_count;\n}\nexport function addSegment(viewId) {\n getOrCreateReplayStats(viewId).segments_count += 1;\n}\nexport function addRecord(viewId) {\n getOrCreateReplayStats(viewId).records_count += 1;\n}\nexport function addWroteData(viewId, additionalBytesCount) {\n getOrCreateReplayStats(viewId).segments_total_raw_size += additionalBytesCount;\n}\nexport function getReplayStats(viewId) {\n return statsPerView === null || statsPerView === void 0 ? void 0 : statsPerView.get(viewId);\n}\nexport function resetReplayStats() {\n statsPerView = undefined;\n}\nfunction getOrCreateReplayStats(viewId) {\n if (!statsPerView) {\n statsPerView = new Map();\n }\n var replayStats;\n if (statsPerView.has(viewId)) {\n replayStats = statsPerView.get(viewId);\n } else {\n replayStats = {\n records_count: 0,\n segments_count: 0,\n segments_total_raw_size: 0\n };\n statsPerView.set(viewId, replayStats);\n if (statsPerView.size > MAX_STATS_HISTORY) {\n deleteOldestStats();\n }\n }\n return replayStats;\n}\nfunction deleteOldestStats() {\n if (!statsPerView) {\n return;\n }\n if (statsPerView.keys) {\n statsPerView.delete(statsPerView.keys().next().value);\n } else {\n // IE11 doesn't support map.keys\n var isFirst_1 = true;\n statsPerView.forEach(function (_value, key) {\n if (isFirst_1) {\n statsPerView.delete(key);\n isFirst_1 = false;\n }\n });\n }\n}\n//# sourceMappingURL=replayStats.js.map","import { DefaultPrivacyLevel } from '@datadog/browser-core';\nexport var NodePrivacyLevel = {\n IGNORE: 'ignore',\n HIDDEN: 'hidden',\n ALLOW: DefaultPrivacyLevel.ALLOW,\n MASK: DefaultPrivacyLevel.MASK,\n MASK_USER_INPUT: DefaultPrivacyLevel.MASK_USER_INPUT\n};\nexport var PRIVACY_ATTR_NAME = 'data-dd-privacy';\n// Privacy Attrs\nexport var PRIVACY_ATTR_VALUE_ALLOW = 'allow';\nexport var PRIVACY_ATTR_VALUE_MASK = 'mask';\nexport var PRIVACY_ATTR_VALUE_MASK_USER_INPUT = 'mask-user-input';\nexport var PRIVACY_ATTR_VALUE_HIDDEN = 'hidden';\n// Privacy Classes - not all customers can set plain HTML attributes, so support classes too\nexport var PRIVACY_CLASS_ALLOW = 'dd-privacy-allow';\nexport var PRIVACY_CLASS_MASK = 'dd-privacy-mask';\nexport var PRIVACY_CLASS_MASK_USER_INPUT = 'dd-privacy-mask-user-input';\nexport var PRIVACY_CLASS_HIDDEN = 'dd-privacy-hidden';\n// Private Replacement Templates\nexport var CENSORED_STRING_MARK = '***';\nexport var CENSORED_IMG_MARK = 'data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';\nexport var FORM_PRIVATE_TAG_NAMES = {\n INPUT: true,\n OUTPUT: true,\n TEXTAREA: true,\n SELECT: true,\n OPTION: true,\n DATALIST: true,\n OPTGROUP: true\n};\n//# sourceMappingURL=constants.js.map","import { isElementNode, getParentNode, isTextNode } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_ALLOW, PRIVACY_ATTR_VALUE_MASK, PRIVACY_ATTR_VALUE_MASK_USER_INPUT, PRIVACY_ATTR_VALUE_HIDDEN, PRIVACY_CLASS_ALLOW, PRIVACY_CLASS_MASK, PRIVACY_CLASS_MASK_USER_INPUT, PRIVACY_CLASS_HIDDEN, FORM_PRIVATE_TAG_NAMES, CENSORED_STRING_MARK } from '../../constants';\nvar TEXT_MASKING_CHAR = 'x';\n/**\n * Get node privacy level by iterating over its ancestors. When the direct parent privacy level is\n * know, it is best to use something like:\n *\n * derivePrivacyLevelGivenParent(getNodeSelfPrivacyLevel(node), parentNodePrivacyLevel)\n */\nexport function getNodePrivacyLevel(node, defaultPrivacyLevel, cache) {\n if (cache && cache.has(node)) {\n return cache.get(node);\n }\n var parentNode = getParentNode(node);\n var parentNodePrivacyLevel = parentNode ? getNodePrivacyLevel(parentNode, defaultPrivacyLevel, cache) : defaultPrivacyLevel;\n var selfNodePrivacyLevel = getNodeSelfPrivacyLevel(node);\n var nodePrivacyLevel = reducePrivacyLevel(selfNodePrivacyLevel, parentNodePrivacyLevel);\n if (cache) {\n cache.set(node, nodePrivacyLevel);\n }\n return nodePrivacyLevel;\n}\n/**\n * Reduces the next privacy level based on self + parent privacy levels\n */\nexport function reducePrivacyLevel(childPrivacyLevel, parentNodePrivacyLevel) {\n switch (parentNodePrivacyLevel) {\n // These values cannot be overridden\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return parentNodePrivacyLevel;\n }\n switch (childPrivacyLevel) {\n case NodePrivacyLevel.ALLOW:\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.MASK_USER_INPUT:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return childPrivacyLevel;\n default:\n return parentNodePrivacyLevel;\n }\n}\n/**\n * Determines the node's own privacy level without checking for ancestors.\n */\nexport function getNodeSelfPrivacyLevel(node) {\n // Only Element types can have a privacy level set\n if (!isElementNode(node)) {\n return;\n }\n var privAttr = node.getAttribute(PRIVACY_ATTR_NAME);\n // Overrules for replay purpose\n if (node.tagName === 'BASE') {\n return NodePrivacyLevel.ALLOW;\n }\n // Overrules to enforce end-user protection\n if (node.tagName === 'INPUT') {\n var inputElement = node;\n if (inputElement.type === 'password' || inputElement.type === 'email' || inputElement.type === 'tel') {\n return NodePrivacyLevel.MASK;\n }\n if (inputElement.type === 'hidden') {\n return NodePrivacyLevel.MASK;\n }\n var autocomplete = inputElement.getAttribute('autocomplete');\n // Handle input[autocomplete=cc-number/cc-csc/cc-exp/cc-exp-month/cc-exp-year]\n if (autocomplete && autocomplete.indexOf('cc-') === 0) {\n return NodePrivacyLevel.MASK;\n }\n }\n // Check HTML privacy attributes and classes\n if (privAttr === PRIVACY_ATTR_VALUE_HIDDEN || node.classList.contains(PRIVACY_CLASS_HIDDEN)) {\n return NodePrivacyLevel.HIDDEN;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK || node.classList.contains(PRIVACY_CLASS_MASK)) {\n return NodePrivacyLevel.MASK;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_MASK_USER_INPUT || node.classList.contains(PRIVACY_CLASS_MASK_USER_INPUT)) {\n return NodePrivacyLevel.MASK_USER_INPUT;\n }\n if (privAttr === PRIVACY_ATTR_VALUE_ALLOW || node.classList.contains(PRIVACY_CLASS_ALLOW)) {\n return NodePrivacyLevel.ALLOW;\n }\n if (shouldIgnoreElement(node)) {\n return NodePrivacyLevel.IGNORE;\n }\n}\n/**\n * Helper aiming to unify `mask` and `mask-user-input` privacy levels:\n *\n * In the `mask` case, it is trivial: we should mask the element.\n *\n * In the `mask-user-input` case, we should mask the element only if it is a \"form\" element or the\n * direct parent is a form element for text nodes).\n *\n * Other `shouldMaskNode` cases are edge cases that should not matter too much (ex: should we mask a\n * node if it is ignored or hidden? it doesn't matter since it won't be serialized).\n */\nexport function shouldMaskNode(node, privacyLevel) {\n switch (privacyLevel) {\n case NodePrivacyLevel.MASK:\n case NodePrivacyLevel.HIDDEN:\n case NodePrivacyLevel.IGNORE:\n return true;\n case NodePrivacyLevel.MASK_USER_INPUT:\n return isTextNode(node) ? isFormElement(node.parentNode) : isFormElement(node);\n default:\n return false;\n }\n}\nfunction isFormElement(node) {\n if (!node || node.nodeType !== node.ELEMENT_NODE) {\n return false;\n }\n var element = node;\n if (element.tagName === 'INPUT') {\n switch (element.type) {\n case 'button':\n case 'color':\n case 'reset':\n case 'submit':\n return false;\n }\n }\n return !!FORM_PRIVATE_TAG_NAMES[element.tagName];\n}\n/**\n * Text censoring non-destructively maintains whitespace characters in order to preserve text shape\n * during replay.\n */\nexport var censorText = function (text) {\n return text.replace(/\\S/g, TEXT_MASKING_CHAR);\n};\nexport function getTextContent(textNode, ignoreWhiteSpace, parentNodePrivacyLevel) {\n var _a;\n // The parent node may not be a html element which has a tagName attribute.\n // So just let it be undefined which is ok in this use case.\n var parentTagName = (_a = textNode.parentElement) === null || _a === void 0 ? void 0 : _a.tagName;\n var textContent = textNode.textContent || '';\n if (ignoreWhiteSpace && !textContent.trim()) {\n return;\n }\n var nodePrivacyLevel = parentNodePrivacyLevel;\n var isScript = parentTagName === 'SCRIPT';\n if (isScript) {\n // For perf reasons, we don't record script (heuristic)\n textContent = CENSORED_STRING_MARK;\n } else if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // Should never occur, but just in case, we set to CENSORED_MARK.\n textContent = CENSORED_STRING_MARK;\n } else if (shouldMaskNode(textNode, nodePrivacyLevel)) {\n if (\n // Scrambling the child list breaks text nodes for DATALIST/SELECT/OPTGROUP\n parentTagName === 'DATALIST' || parentTagName === 'SELECT' || parentTagName === 'OPTGROUP') {\n if (!textContent.trim()) {\n return;\n }\n } else if (parentTagName === 'OPTION') {\n // <Option> has low entropy in charset + text length, so use `CENSORED_STRING_MARK` when masked\n textContent = CENSORED_STRING_MARK;\n } else {\n textContent = censorText(textContent);\n }\n }\n return textContent;\n}\n/**\n * TODO: Preserve CSS element order, and record the presence of the tag, just don't render\n * We don't need this logic on the recorder side.\n * For security related meta's, customer can mask themmanually given they\n * are easy to identify in the HEAD tag.\n */\nexport function shouldIgnoreElement(element) {\n if (element.nodeName === 'SCRIPT') {\n return true;\n }\n if (element.nodeName === 'LINK') {\n var relAttribute = getLowerCaseAttribute('rel');\n return (\n // Link as script - Ignore only when rel=preload, modulepreload or prefetch\n /preload|prefetch/i.test(relAttribute) && getLowerCaseAttribute('as') === 'script' ||\n // Favicons\n relAttribute === 'shortcut icon' || relAttribute === 'icon'\n );\n }\n if (element.nodeName === 'META') {\n var nameAttribute = getLowerCaseAttribute('name');\n var relAttribute = getLowerCaseAttribute('rel');\n var propertyAttribute = getLowerCaseAttribute('property');\n return (\n // Favicons\n /^msapplication-tile(image|color)$/.test(nameAttribute) || nameAttribute === 'application-name' || relAttribute === 'icon' || relAttribute === 'apple-touch-icon' || relAttribute === 'shortcut icon' ||\n // Description\n nameAttribute === 'keywords' || nameAttribute === 'description' ||\n // Social\n /^(og|twitter|fb):/.test(propertyAttribute) || /^(og|twitter):/.test(nameAttribute) || nameAttribute === 'pinterest' ||\n // Robots\n nameAttribute === 'robots' || nameAttribute === 'googlebot' || nameAttribute === 'bingbot' ||\n // Http headers. Ex: X-UA-Compatible, Content-Type, Content-Language, cache-control,\n // X-Translated-By\n element.hasAttribute('http-equiv') ||\n // Authorship\n nameAttribute === 'author' || nameAttribute === 'generator' || nameAttribute === 'framework' || nameAttribute === 'publisher' || nameAttribute === 'progid' || /^article:/.test(propertyAttribute) || /^product:/.test(propertyAttribute) ||\n // Verification\n nameAttribute === 'google-site-verification' || nameAttribute === 'yandex-verification' || nameAttribute === 'csrf-token' || nameAttribute === 'p:domain_verify' || nameAttribute === 'verify-v1' || nameAttribute === 'verification' || nameAttribute === 'shopify-checkout-api-token'\n );\n }\n function getLowerCaseAttribute(name) {\n return (element.getAttribute(name) || '').toLowerCase();\n }\n return false;\n}\n//# sourceMappingURL=privacy.js.map","import { buildUrl } from '@datadog/browser-core';\nimport { getParentNode, isNodeShadowRoot } from '@datadog/browser-rum-core';\nimport { CENSORED_STRING_MARK } from '../../../constants';\nimport { shouldMaskNode } from '../privacy';\nvar serializedNodeIds = new WeakMap();\nexport function hasSerializedNode(node) {\n return serializedNodeIds.has(node);\n}\nexport function nodeAndAncestorsHaveSerializedNode(node) {\n var current = node;\n while (current) {\n if (!hasSerializedNode(current) && !isNodeShadowRoot(current)) {\n return false;\n }\n current = getParentNode(current);\n }\n return true;\n}\nexport function getSerializedNodeId(node) {\n return serializedNodeIds.get(node);\n}\nexport function setSerializedNodeId(node, serializeNodeId) {\n serializedNodeIds.set(node, serializeNodeId);\n}\n/**\n * Get the element \"value\" to be serialized as an attribute or an input update record. It respects\n * the input privacy mode of the element.\n * PERFROMANCE OPTIMIZATION: Assumes that privacy level `HIDDEN` is never encountered because of earlier checks.\n */\nexport function getElementInputValue(element, nodePrivacyLevel) {\n /*\n BROWSER SPEC NOTE: <input>, <select>\n For some <input> elements, the `value` is an exceptional property/attribute that has the\n value synced between el.value and el.getAttribute()\n input[type=button,checkbox,hidden,image,radio,reset,submit]\n */\n var tagName = element.tagName;\n var value = element.value;\n if (shouldMaskNode(element, nodePrivacyLevel)) {\n var type = element.type;\n if (tagName === 'INPUT' && (type === 'button' || type === 'submit' || type === 'reset')) {\n // Overrule `MASK` privacy level for button-like element values, as they are used during replay\n // to display their label. They can still be hidden via the \"hidden\" privacy attribute or class name.\n return value;\n } else if (!value || tagName === 'OPTION') {\n // <Option> value provides no benefit\n return;\n }\n return CENSORED_STRING_MARK;\n }\n if (tagName === 'OPTION' || tagName === 'SELECT') {\n return element.value;\n }\n if (tagName !== 'INPUT' && tagName !== 'TEXTAREA') {\n return;\n }\n return value;\n}\nexport var URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")([^\"]*)\"|([^)]*))\\)/gm;\nexport var ABSOLUTE_URL = /^[A-Za-z]+:|^\\/\\//;\nexport var DATA_URI = /^data:.*,/i;\nexport function switchToAbsoluteUrl(cssText, cssHref) {\n return cssText.replace(URL_IN_CSS_REF, function (matchingSubstring, singleQuote, urlWrappedInSingleQuotes, doubleQuote, urlWrappedInDoubleQuotes, urlNotWrappedInQuotes) {\n var url = urlWrappedInSingleQuotes || urlWrappedInDoubleQuotes || urlNotWrappedInQuotes;\n if (!cssHref || !url || ABSOLUTE_URL.test(url) || DATA_URI.test(url)) {\n return matchingSubstring;\n }\n var quote = singleQuote || doubleQuote || '';\n return \"url(\".concat(quote).concat(makeUrlAbsolute(url, cssHref)).concat(quote, \")\");\n });\n}\nexport function makeUrlAbsolute(url, baseUrl) {\n try {\n return buildUrl(url, baseUrl).href;\n } catch (_) {\n return url;\n }\n}\nvar TAG_NAME_REGEX = /[^a-z1-6-_]/;\nexport function getValidTagName(tagName) {\n var processedTagName = tagName.toLowerCase().trim();\n if (TAG_NAME_REGEX.test(processedTagName)) {\n // if the tag name is odd and we cannot extract\n // anything from the string, then we return a\n // generic div\n return 'div';\n }\n return processedTagName;\n}\nexport function censoredImageForSize(width, height) {\n return \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='\".concat(width, \"' height='\").concat(height, \"' style='background-color:silver'%3E%3C/svg%3E\");\n}\n//# sourceMappingURL=serializationUtils.js.map","export var RecordType = {\n FullSnapshot: 2,\n IncrementalSnapshot: 3,\n Meta: 4,\n Focus: 6,\n ViewEnd: 7,\n VisualViewport: 8,\n FrustrationRecord: 9\n};\nexport var NodeType = {\n Document: 0,\n DocumentType: 1,\n Element: 2,\n Text: 3,\n CDATA: 4,\n DocumentFragment: 11\n};\nexport var IncrementalSource = {\n Mutation: 0,\n MouseMove: 1,\n MouseInteraction: 2,\n Scroll: 3,\n ViewportResize: 4,\n Input: 5,\n TouchMove: 6,\n MediaInteraction: 7,\n StyleSheetRule: 8\n // CanvasMutation : 9,\n // Font : 10,\n};\nexport var MouseInteractionType = {\n MouseUp: 0,\n MouseDown: 1,\n Click: 2,\n ContextMenu: 3,\n DblClick: 4,\n Focus: 5,\n Blur: 6,\n TouchStart: 7,\n TouchEnd: 9\n};\nexport var MediaInteractionType = {\n Play: 0,\n Pause: 1\n};\n//# sourceMappingURL=sessionReplayConstants.js.map","export function serializeStyleSheets(cssStyleSheets) {\n if (cssStyleSheets === undefined || cssStyleSheets.length === 0) {\n return undefined;\n }\n return cssStyleSheets.map(function (cssStyleSheet) {\n var rules = cssStyleSheet.cssRules || cssStyleSheet.rules;\n var cssRules = Array.from(rules, function (cssRule) {\n return cssRule.cssText;\n });\n var styleSheet = {\n cssRules: cssRules,\n disabled: cssStyleSheet.disabled || undefined,\n media: cssStyleSheet.media.length > 0 ? Array.from(cssStyleSheet.media) : undefined\n };\n return styleSheet;\n });\n}\n//# sourceMappingURL=serializeStyleSheets.js.map","import { startsWith } from '@datadog/browser-core';\nimport { STABLE_ATTRIBUTES, isLongDataUrl, sanitizeDataUrl } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, CENSORED_STRING_MARK, CENSORED_IMG_MARK } from '../../../constants';\nimport { censoredImageForSize } from './serializationUtils';\nexport function serializeAttribute(element, nodePrivacyLevel, attributeName, configuration) {\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n // dup condition for direct access case\n return null;\n }\n var attributeValue = element.getAttribute(attributeName);\n if (nodePrivacyLevel === NodePrivacyLevel.MASK && attributeName !== PRIVACY_ATTR_NAME && !STABLE_ATTRIBUTES.includes(attributeName) && attributeName !== configuration.actionNameAttribute) {\n var tagName = element.tagName;\n switch (attributeName) {\n // Mask Attribute text content\n case 'title':\n case 'alt':\n case 'placeholder':\n return CENSORED_STRING_MARK;\n }\n // mask image URLs\n if (tagName === 'IMG' && (attributeName === 'src' || attributeName === 'srcset')) {\n // generate image with similar dimension than the original to have the same rendering behaviour\n var image = element;\n if (image.naturalWidth > 0) {\n return censoredImageForSize(image.naturalWidth, image.naturalHeight);\n }\n var _a = element.getBoundingClientRect(),\n width = _a.width,\n height = _a.height;\n if (width > 0 || height > 0) {\n return censoredImageForSize(width, height);\n }\n // if we can't get the image size, fallback to the censored image\n return CENSORED_IMG_MARK;\n }\n // mask source URLs\n if (tagName === 'SOURCE' && (attributeName === 'src' || attributeName === 'srcset')) {\n return CENSORED_IMG_MARK;\n }\n // mask <a> URLs\n if (tagName === 'A' && attributeName === 'href') {\n return CENSORED_STRING_MARK;\n }\n // mask data-* attributes\n if (attributeValue && startsWith(attributeName, 'data-')) {\n // Exception: it's safe to reveal the `${PRIVACY_ATTR_NAME}` attr\n return CENSORED_STRING_MARK;\n }\n // mask iframe srcdoc\n if (tagName === 'IFRAME' && attributeName === 'srcdoc') {\n return CENSORED_STRING_MARK;\n }\n }\n if (!attributeValue || typeof attributeValue !== 'string') {\n return attributeValue;\n }\n // Minimum Fix for customer.\n if (isLongDataUrl(attributeValue)) {\n return sanitizeDataUrl(attributeValue);\n }\n return attributeValue;\n}\n//# sourceMappingURL=serializeAttribute.js.map","import { ExperimentalFeature, isExperimentalFeatureEnabled, isSafari } from '@datadog/browser-core';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { shouldMaskNode } from '../privacy';\nimport { getElementInputValue, switchToAbsoluteUrl, getValidTagName } from './serializationUtils';\nimport { serializeAttribute } from './serializeAttribute';\nexport function serializeAttributes(element, nodePrivacyLevel, options) {\n var _a;\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return {};\n }\n var safeAttrs = {};\n var tagName = getValidTagName(element.tagName);\n var doc = element.ownerDocument;\n for (var i = 0; i < element.attributes.length; i += 1) {\n var attribute = element.attributes.item(i);\n var attributeName = attribute.name;\n var attributeValue = serializeAttribute(element, nodePrivacyLevel, attributeName, options.configuration);\n if (attributeValue !== null) {\n safeAttrs[attributeName] = attributeValue;\n }\n }\n if (element.value && (tagName === 'textarea' || tagName === 'select' || tagName === 'option' || tagName === 'input')) {\n var formValue = getElementInputValue(element, nodePrivacyLevel);\n if (formValue !== undefined) {\n safeAttrs.value = formValue;\n }\n }\n /**\n * <Option> can be selected, which occurs if its `value` matches ancestor `<Select>.value`\n */\n if (tagName === 'option' && nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n // For privacy=`MASK`, all the values would be the same, so skip.\n var optionElement = element;\n if (optionElement.selected) {\n safeAttrs.selected = optionElement.selected;\n }\n }\n // remote css\n if (tagName === 'link') {\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\n return s.href === element.href;\n });\n var cssText = getCssRulesString(stylesheet);\n if (cssText && stylesheet && !isExperimentalFeatureEnabled(ExperimentalFeature.DISABLE_REPLAY_INLINE_CSS)) {\n safeAttrs._cssText = cssText;\n }\n }\n // dynamic stylesheet\n if (tagName === 'style' && element.sheet) {\n var cssText = getCssRulesString(element.sheet);\n if (cssText) {\n safeAttrs._cssText = cssText;\n }\n }\n /**\n * Forms: input[type=checkbox,radio]\n * The `checked` property for <input> is a little bit special:\n * 1. el.checked is a setter that returns if truthy.\n * 2. getAttribute returns the string value\n * getAttribute('checked') does not sync with `Element.checked`, so use JS property\n * NOTE: `checked` property exists on `HTMLInputElement`. For serializer assumptions, we check for type=radio|check.\n */\n var inputElement = element;\n if (tagName === 'input' && (inputElement.type === 'radio' || inputElement.type === 'checkbox')) {\n if (nodePrivacyLevel === NodePrivacyLevel.ALLOW) {\n safeAttrs.checked = !!inputElement.checked;\n } else if (shouldMaskNode(inputElement, nodePrivacyLevel)) {\n delete safeAttrs.checked;\n }\n }\n /**\n * Serialize the media playback state\n */\n if (tagName === 'audio' || tagName === 'video') {\n var mediaElement = element;\n safeAttrs.rr_mediaState = mediaElement.paused ? 'paused' : 'played';\n }\n /**\n * Serialize the scroll state for each element only for full snapshot\n */\n var scrollTop;\n var scrollLeft;\n var serializationContext = options.serializationContext;\n switch (serializationContext.status) {\n case 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */:\n scrollTop = Math.round(element.scrollTop);\n scrollLeft = Math.round(element.scrollLeft);\n if (scrollTop || scrollLeft) {\n serializationContext.elementsScrollPositions.set(element, {\n scrollTop: scrollTop,\n scrollLeft: scrollLeft\n });\n }\n break;\n case 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */:\n if (serializationContext.elementsScrollPositions.has(element)) {\n ;\n _a = serializationContext.elementsScrollPositions.get(element), scrollTop = _a.scrollTop, scrollLeft = _a.scrollLeft;\n }\n break;\n }\n if (scrollLeft) {\n safeAttrs.rr_scrollLeft = scrollLeft;\n }\n if (scrollTop) {\n safeAttrs.rr_scrollTop = scrollTop;\n }\n return safeAttrs;\n}\nexport function getCssRulesString(cssStyleSheet) {\n if (!cssStyleSheet) {\n return null;\n }\n var rules;\n try {\n rules = cssStyleSheet.rules || cssStyleSheet.cssRules;\n } catch (_a) {\n // if css is protected by CORS we cannot access cssRules see: https://www.w3.org/TR/cssom-1/#the-cssstylesheet-interface\n }\n if (!rules) {\n return null;\n }\n var styleSheetCssText = Array.from(rules, isSafari() ? getCssRuleStringForSafari : getCssRuleString).join('');\n return switchToAbsoluteUrl(styleSheetCssText, cssStyleSheet.href);\n}\nfunction getCssRuleStringForSafari(rule) {\n // Safari does not escape attribute selectors containing : properly\n // https://bugs.webkit.org/show_bug.cgi?id=184604\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // This regex replaces [foo:bar] by [foo\\\\:bar]\n var escapeColon = /(\\[[\\w-]+[^\\\\])(:[^\\]]+\\])/g;\n return rule.cssText.replace(escapeColon, '$1\\\\$2');\n }\n return getCssRuleString(rule);\n}\nfunction getCssRuleString(rule) {\n // If it's an @import rule, try to inline sub-rules recursively with `getCssRulesString`. This\n // operation can fail if the imported stylesheet is protected by CORS, in which case we fallback\n // to the @import rule CSS text.\n return isCSSImportRule(rule) && getCssRulesString(rule.styleSheet) || rule.cssText;\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n}\n//# sourceMappingURL=serializeAttributes.js.map","import { isNodeShadowRoot, hasChildNodes, forEachChildNodes } from '@datadog/browser-rum-core';\nimport { assign } from '@datadog/browser-core';\nimport { NodeType } from '../../../types';\nimport { NodePrivacyLevel, PRIVACY_ATTR_NAME, PRIVACY_ATTR_VALUE_HIDDEN } from '../../../constants';\nimport { reducePrivacyLevel, getNodeSelfPrivacyLevel, getTextContent } from '../privacy';\nimport { getSerializedNodeId, getValidTagName, setSerializedNodeId } from './serializationUtils';\nimport { serializeStyleSheets } from './serializeStyleSheets';\nimport { serializeAttributes } from './serializeAttributes';\nexport function serializeNodeWithId(node, options) {\n var serializedNode = serializeNode(node, options);\n if (!serializedNode) {\n return null;\n }\n // Try to reuse the previous id\n var id = getSerializedNodeId(node) || generateNextId();\n var serializedNodeWithId = serializedNode;\n serializedNodeWithId.id = id;\n setSerializedNodeId(node, id);\n if (options.serializedNodeIds) {\n options.serializedNodeIds.add(id);\n }\n return serializedNodeWithId;\n}\nvar _nextId = 1;\nexport function generateNextId() {\n return _nextId++;\n}\nexport function serializeChildNodes(node, options) {\n var result = [];\n forEachChildNodes(node, function (childNode) {\n var serializedChildNode = serializeNodeWithId(childNode, options);\n if (serializedChildNode) {\n result.push(serializedChildNode);\n }\n });\n return result;\n}\nfunction serializeNode(node, options) {\n switch (node.nodeType) {\n case node.DOCUMENT_NODE:\n return serializeDocumentNode(node, options);\n case node.DOCUMENT_FRAGMENT_NODE:\n return serializeDocumentFragmentNode(node, options);\n case node.DOCUMENT_TYPE_NODE:\n return serializeDocumentTypeNode(node);\n case node.ELEMENT_NODE:\n return serializeElementNode(node, options);\n case node.TEXT_NODE:\n return serializeTextNode(node, options);\n case node.CDATA_SECTION_NODE:\n return serializeCDataNode();\n }\n}\nexport function serializeDocumentNode(document, options) {\n return {\n type: NodeType.Document,\n childNodes: serializeChildNodes(document, options),\n adoptedStyleSheets: serializeStyleSheets(document.adoptedStyleSheets)\n };\n}\nfunction serializeDocumentFragmentNode(element, options) {\n var isShadowRoot = isNodeShadowRoot(element);\n if (isShadowRoot) {\n options.serializationContext.shadowRootsController.addShadowRoot(element);\n }\n return {\n type: NodeType.DocumentFragment,\n childNodes: serializeChildNodes(element, options),\n isShadowRoot: isShadowRoot,\n adoptedStyleSheets: isShadowRoot ? serializeStyleSheets(element.adoptedStyleSheets) : undefined\n };\n}\nfunction serializeDocumentTypeNode(documentType) {\n return {\n type: NodeType.DocumentType,\n name: documentType.name,\n publicId: documentType.publicId,\n systemId: documentType.systemId\n };\n}\n/**\n * Serializing Element nodes involves capturing:\n * 1. HTML ATTRIBUTES:\n * 2. JS STATE:\n * - scroll offsets\n * - Form fields (input value, checkbox checked, option selection, range)\n * - Canvas state,\n * - Media (video/audio) play mode + currentTime\n * - iframe contents\n * - webcomponents\n * 3. CUSTOM PROPERTIES:\n * - height+width for when `hidden` to cover the element\n * 4. EXCLUDED INTERACTION STATE:\n * - focus (possible, but not worth perf impact)\n * - hover (tracked only via mouse activity)\n * - fullscreen mode\n */\nfunction serializeElementNode(element, options) {\n var _a;\n var tagName = getValidTagName(element.tagName);\n var isSVG = isSVGElement(element) || undefined;\n // For performance reason, we don't use getNodePrivacyLevel directly: we leverage the\n // parentNodePrivacyLevel option to avoid iterating over all parents\n var nodePrivacyLevel = reducePrivacyLevel(getNodeSelfPrivacyLevel(element), options.parentNodePrivacyLevel);\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n var _b = element.getBoundingClientRect(),\n width = _b.width,\n height = _b.height;\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: (_a = {\n rr_width: \"\".concat(width, \"px\"),\n rr_height: \"\".concat(height, \"px\")\n }, _a[PRIVACY_ATTR_NAME] = PRIVACY_ATTR_VALUE_HIDDEN, _a),\n childNodes: [],\n isSVG: isSVG\n };\n }\n // Ignore Elements like Script and some Link, Metas\n if (nodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n return;\n }\n var attributes = serializeAttributes(element, nodePrivacyLevel, options);\n var childNodes = [];\n if (hasChildNodes(element) &&\n // Do not serialize style children as the css rules are already in the _cssText attribute\n tagName !== 'style') {\n // OBJECT POOLING OPTIMIZATION:\n // We should not create a new object systematically as it could impact performances. Try to reuse\n // the same object as much as possible, and clone it only if we need to.\n var childNodesSerializationOptions = void 0;\n if (options.parentNodePrivacyLevel === nodePrivacyLevel && options.ignoreWhiteSpace === (tagName === 'head')) {\n childNodesSerializationOptions = options;\n } else {\n childNodesSerializationOptions = assign({}, options, {\n parentNodePrivacyLevel: nodePrivacyLevel,\n ignoreWhiteSpace: tagName === 'head'\n });\n }\n childNodes = serializeChildNodes(element, childNodesSerializationOptions);\n }\n return {\n type: NodeType.Element,\n tagName: tagName,\n attributes: attributes,\n childNodes: childNodes,\n isSVG: isSVG\n };\n}\nfunction isSVGElement(el) {\n return el.tagName === 'svg' || el instanceof SVGElement;\n}\n/**\n * Text Nodes are dependant on Element nodes\n * Privacy levels are set on elements so we check the parentElement of a text node\n * for privacy level.\n */\nfunction serializeTextNode(textNode, options) {\n var textContent = getTextContent(textNode, options.ignoreWhiteSpace || false, options.parentNodePrivacyLevel);\n if (textContent === undefined) {\n return;\n }\n return {\n type: NodeType.Text,\n textContent: textContent\n };\n}\nfunction serializeCDataNode() {\n return {\n type: NodeType.CDATA,\n textContent: ''\n };\n}\n//# sourceMappingURL=serializeNode.js.map","import { serializeNodeWithId } from './serializeNode';\nexport function serializeDocument(document, configuration, serializationContext) {\n // We are sure that Documents are never ignored, so this function never returns null\n return serializeNodeWithId(document, {\n serializationContext: serializationContext,\n parentNodePrivacyLevel: configuration.defaultPrivacyLevel,\n configuration: configuration\n });\n}\n//# sourceMappingURL=serializeDocument.js.map","import { isNodeShadowHost } from '@datadog/browser-rum-core';\nexport function isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nexport function getEventTarget(event) {\n if (event.composed === true && isNodeShadowHost(event.target)) {\n return event.composedPath()[0];\n }\n return event.target;\n}\n//# sourceMappingURL=eventsUtils.js.map","/**\n * Browsers have not standardized various dimension properties. Mobile devices typically report\n * dimensions in reference to the visual viewport, while desktop uses the layout viewport. For example,\n * Mobile Chrome will change innerWidth when a pinch zoom takes place, while Chrome Desktop (mac) will not.\n *\n * With the new Viewport API, we now calculate and normalize dimension properties to the layout viewport.\n * If the VisualViewport API is not supported by a browser, it isn't reasonably possible to detect or normalize\n * which viewport is being measured. Therefore these exported functions will fallback to assuming that the layout\n * viewport is being measured by the browser\n */\n// Scrollbar widths vary across properties on different devices and browsers\nvar TOLERANCE = 25;\n/**\n * Use the Visual Viewport API's properties to measure scrollX/Y in reference to the layout viewport\n * in order to determine if window.scrollX/Y is measuring the layout or visual viewport.\n * This finding corresponds to which viewport mouseEvent.clientX/Y and window.innerWidth/Height measures.\n */\nfunction isVisualViewportFactoredIn(visualViewport) {\n return Math.abs(visualViewport.pageTop - visualViewport.offsetTop - window.scrollY) > TOLERANCE || Math.abs(visualViewport.pageLeft - visualViewport.offsetLeft - window.scrollX) > TOLERANCE;\n}\nexport var convertMouseEventToLayoutCoordinates = function (clientX, clientY) {\n var visualViewport = window.visualViewport;\n var normalized = {\n layoutViewportX: clientX,\n layoutViewportY: clientY,\n visualViewportX: clientX,\n visualViewportY: clientY\n };\n if (!visualViewport) {\n // On old browsers, we cannot normalize, so fallback to clientX/Y\n return normalized;\n } else if (isVisualViewportFactoredIn(visualViewport)) {\n // Typically Mobile Devices\n normalized.layoutViewportX = Math.round(clientX + visualViewport.offsetLeft);\n normalized.layoutViewportY = Math.round(clientY + visualViewport.offsetTop);\n } else {\n // Typically Desktop Devices\n normalized.visualViewportX = Math.round(clientX - visualViewport.offsetLeft);\n normalized.visualViewportY = Math.round(clientY - visualViewport.offsetTop);\n }\n return normalized;\n};\nexport var getVisualViewport = function (visualViewport) {\n return {\n scale: visualViewport.scale,\n offsetLeft: visualViewport.offsetLeft,\n offsetTop: visualViewport.offsetTop,\n pageLeft: visualViewport.pageLeft,\n pageTop: visualViewport.pageTop,\n height: visualViewport.height,\n width: visualViewport.width\n };\n};\n//# sourceMappingURL=viewports.js.map","import { assign, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nexport function assembleIncrementalSnapshot(source, data) {\n return {\n data: assign({\n source: source\n }, data),\n type: RecordType.IncrementalSnapshot,\n timestamp: timeStampNow()\n };\n}\n//# sourceMappingURL=assembly.js.map","import { addEventListeners, addTelemetryDebug, DOM_EVENT, throttle } from '@datadog/browser-core';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget, isTouchEvent } from '../eventsUtils';\nimport { convertMouseEventToLayoutCoordinates } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar MOUSE_MOVE_OBSERVER_THRESHOLD = 50;\nexport function trackMove(configuration, moveCb) {\n var _a = throttle(function (event) {\n var target = getEventTarget(event);\n if (hasSerializedNode(target)) {\n var coordinates = tryToComputeCoordinates(event);\n if (!coordinates) {\n return;\n }\n var position = {\n id: getSerializedNodeId(target),\n timeOffset: 0,\n x: coordinates.x,\n y: coordinates.y\n };\n moveCb(assembleIncrementalSnapshot(isTouchEvent(event) ? IncrementalSource.TouchMove : IncrementalSource.MouseMove, {\n positions: [position]\n }));\n }\n }, MOUSE_MOVE_OBSERVER_THRESHOLD, {\n trailing: false\n }),\n updatePosition = _a.throttled,\n cancelThrottle = _a.cancel;\n var removeListener = addEventListeners(configuration, document, [DOM_EVENT.MOUSE_MOVE, DOM_EVENT.TOUCH_MOVE], updatePosition, {\n capture: true,\n passive: true\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n }\n };\n}\nexport function tryToComputeCoordinates(event) {\n var _a = isTouchEvent(event) ? event.changedTouches[0] : event,\n x = _a.clientX,\n y = _a.clientY;\n if (window.visualViewport) {\n var _b = convertMouseEventToLayoutCoordinates(x, y),\n visualViewportX = _b.visualViewportX,\n visualViewportY = _b.visualViewportY;\n x = visualViewportX;\n y = visualViewportY;\n }\n if (!Number.isFinite(x) || !Number.isFinite(y)) {\n if (event.isTrusted) {\n addTelemetryDebug('mouse/touch event without x/y');\n }\n return undefined;\n }\n return {\n x: x,\n y: y\n };\n}\n//# sourceMappingURL=trackMove.js.map","var _a;\nimport { assign, addEventListeners, DOM_EVENT } from '@datadog/browser-core';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { IncrementalSource, MouseInteractionType } from '../../../types';\nimport { assembleIncrementalSnapshot } from '../assembly';\nimport { getEventTarget } from '../eventsUtils';\nimport { getNodePrivacyLevel } from '../privacy';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { tryToComputeCoordinates } from './trackMove';\nvar eventTypeToMouseInteraction = (_a = {},\n// Listen for pointerup DOM events instead of mouseup for MouseInteraction/MouseUp records. This\n// allows to reference such records from Frustration records.\n//\n// In the context of supporting Mobile Session Replay, we introduced `PointerInteraction` records\n// used by the Mobile SDKs in place of `MouseInteraction`. In the future, we should replace\n// `MouseInteraction` by `PointerInteraction` in the Browser SDK so we have an uniform way to\n// convey such interaction. This would cleanly solve the issue since we would have\n// `PointerInteraction/Up` records that we could reference from `Frustration` records.\n_a[DOM_EVENT.POINTER_UP] = MouseInteractionType.MouseUp, _a[DOM_EVENT.MOUSE_DOWN] = MouseInteractionType.MouseDown, _a[DOM_EVENT.CLICK] = MouseInteractionType.Click, _a[DOM_EVENT.CONTEXT_MENU] = MouseInteractionType.ContextMenu, _a[DOM_EVENT.DBL_CLICK] = MouseInteractionType.DblClick, _a[DOM_EVENT.FOCUS] = MouseInteractionType.Focus, _a[DOM_EVENT.BLUR] = MouseInteractionType.Blur, _a[DOM_EVENT.TOUCH_START] = MouseInteractionType.TouchStart, _a[DOM_EVENT.TOUCH_END] = MouseInteractionType.TouchEnd, _a);\nexport function trackMouseInteraction(configuration, mouseInteractionCb, recordIds) {\n var handler = function (event) {\n var target = getEventTarget(event);\n if (getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN || !hasSerializedNode(target)) {\n return;\n }\n var id = getSerializedNodeId(target);\n var type = eventTypeToMouseInteraction[event.type];\n var interaction;\n if (type !== MouseInteractionType.Blur && type !== MouseInteractionType.Focus) {\n var coordinates = tryToComputeCoordinates(event);\n if (!coordinates) {\n return;\n }\n interaction = {\n id: id,\n type: type,\n x: coordinates.x,\n y: coordinates.y\n };\n } else {\n interaction = {\n id: id,\n type: type\n };\n }\n var record = assign({\n id: recordIds.getIdForEvent(event)\n }, assembleIncrementalSnapshot(IncrementalSource.MouseInteraction, interaction));\n mouseInteractionCb(record);\n };\n return addEventListeners(configuration, document, Object.keys(eventTypeToMouseInteraction), handler, {\n capture: true,\n passive: true\n });\n}\n//# sourceMappingURL=trackMouseInteraction.js.map","import { DOM_EVENT, throttle, addEventListener } from '@datadog/browser-core';\nimport { getScrollX, getScrollY } from '@datadog/browser-rum-core';\nimport { getEventTarget } from '../eventsUtils';\nimport { getNodePrivacyLevel } from '../privacy';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { IncrementalSource } from '../../../types';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar SCROLL_OBSERVER_THRESHOLD = 100;\nexport function trackScroll(configuration, scrollCb, elementsScrollPositions, target) {\n if (target === void 0) {\n target = document;\n }\n var _a = throttle(function (event) {\n var target = getEventTarget(event);\n if (!target || getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN || !hasSerializedNode(target)) {\n return;\n }\n var id = getSerializedNodeId(target);\n var scrollPositions = target === document ? {\n scrollTop: getScrollY(),\n scrollLeft: getScrollX()\n } : {\n scrollTop: Math.round(target.scrollTop),\n scrollLeft: Math.round(target.scrollLeft)\n };\n elementsScrollPositions.set(target, scrollPositions);\n scrollCb(assembleIncrementalSnapshot(IncrementalSource.Scroll, {\n id: id,\n x: scrollPositions.scrollLeft,\n y: scrollPositions.scrollTop\n }));\n }, SCROLL_OBSERVER_THRESHOLD),\n updatePosition = _a.throttled,\n cancelThrottle = _a.cancel;\n var removeListener = addEventListener(configuration, target, DOM_EVENT.SCROLL, updatePosition, {\n capture: true,\n passive: true\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n }\n };\n}\n//# sourceMappingURL=trackScroll.js.map","import { throttle, DOM_EVENT, addEventListeners, timeStampNow, noop } from '@datadog/browser-core';\nimport { initViewportObservable } from '@datadog/browser-rum-core';\nimport { IncrementalSource, RecordType } from '../../../types';\nimport { getVisualViewport } from '../viewports';\nimport { assembleIncrementalSnapshot } from '../assembly';\nvar VISUAL_VIEWPORT_OBSERVER_THRESHOLD = 200;\nexport function trackViewportResize(configuration, viewportResizeCb) {\n var viewportResizeSubscription = initViewportObservable(configuration).subscribe(function (data) {\n viewportResizeCb(assembleIncrementalSnapshot(IncrementalSource.ViewportResize, data));\n });\n return {\n stop: function () {\n viewportResizeSubscription.unsubscribe();\n }\n };\n}\nexport function tackVisualViewportResize(configuration, visualViewportResizeCb) {\n var visualViewport = window.visualViewport;\n if (!visualViewport) {\n return {\n stop: noop\n };\n }\n var _a = throttle(function () {\n visualViewportResizeCb({\n data: getVisualViewport(visualViewport),\n type: RecordType.VisualViewport,\n timestamp: timeStampNow()\n });\n }, VISUAL_VIEWPORT_OBSERVER_THRESHOLD, {\n trailing: false\n }),\n updateDimension = _a.throttled,\n cancelThrottle = _a.cancel;\n var removeListener = addEventListeners(configuration, visualViewport, [DOM_EVENT.RESIZE, DOM_EVENT.SCROLL], updateDimension, {\n capture: true,\n passive: true\n }).stop;\n return {\n stop: function () {\n removeListener();\n cancelThrottle();\n }\n };\n}\n//# sourceMappingURL=trackViewportResize.js.map","import { DOM_EVENT, addEventListeners } from '@datadog/browser-core';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { IncrementalSource, MediaInteractionType } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getNodePrivacyLevel } from '../privacy';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackMediaInteraction(configuration, mediaInteractionCb) {\n return addEventListeners(configuration, document, [DOM_EVENT.PLAY, DOM_EVENT.PAUSE], function (event) {\n var target = getEventTarget(event);\n if (!target || getNodePrivacyLevel(target, configuration.defaultPrivacyLevel) === NodePrivacyLevel.HIDDEN || !hasSerializedNode(target)) {\n return;\n }\n mediaInteractionCb(assembleIncrementalSnapshot(IncrementalSource.MediaInteraction, {\n id: getSerializedNodeId(target),\n type: event.type === DOM_EVENT.PLAY ? MediaInteractionType.Play : MediaInteractionType.Pause\n }));\n }, {\n capture: true,\n passive: true\n });\n}\n//# sourceMappingURL=trackMediaInteraction.js.map","import { instrumentMethod } from '@datadog/browser-core';\nimport { IncrementalSource } from '../../../types';\nimport { getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackStyleSheet(styleSheetCb) {\n function checkStyleSheetAndCallback(styleSheet, callback) {\n if (styleSheet && hasSerializedNode(styleSheet.ownerNode)) {\n callback(getSerializedNodeId(styleSheet.ownerNode));\n }\n }\n var instrumentationStoppers = [instrumentMethod(CSSStyleSheet.prototype, 'insertRule', function (_a) {\n var styleSheet = _a.target,\n _b = _a.parameters,\n rule = _b[0],\n index = _b[1];\n checkStyleSheetAndCallback(styleSheet, function (id) {\n return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n adds: [{\n rule: rule,\n index: index\n }]\n }));\n });\n }), instrumentMethod(CSSStyleSheet.prototype, 'deleteRule', function (_a) {\n var styleSheet = _a.target,\n index = _a.parameters[0];\n checkStyleSheetAndCallback(styleSheet, function (id) {\n return styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n removes: [{\n index: index\n }]\n }));\n });\n })];\n if (typeof CSSGroupingRule !== 'undefined') {\n instrumentGroupingCSSRuleClass(CSSGroupingRule);\n } else {\n instrumentGroupingCSSRuleClass(CSSMediaRule);\n instrumentGroupingCSSRuleClass(CSSSupportsRule);\n }\n function instrumentGroupingCSSRuleClass(cls) {\n instrumentationStoppers.push(instrumentMethod(cls.prototype, 'insertRule', function (_a) {\n var styleSheet = _a.target,\n _b = _a.parameters,\n rule = _b[0],\n index = _b[1];\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n var path = getPathToNestedCSSRule(styleSheet);\n if (path) {\n path.push(index || 0);\n styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n adds: [{\n rule: rule,\n index: path\n }]\n }));\n }\n });\n }), instrumentMethod(cls.prototype, 'deleteRule', function (_a) {\n var styleSheet = _a.target,\n index = _a.parameters[0];\n checkStyleSheetAndCallback(styleSheet.parentStyleSheet, function (id) {\n var path = getPathToNestedCSSRule(styleSheet);\n if (path) {\n path.push(index);\n styleSheetCb(assembleIncrementalSnapshot(IncrementalSource.StyleSheetRule, {\n id: id,\n removes: [{\n index: path\n }]\n }));\n }\n });\n }));\n }\n return {\n stop: function () {\n instrumentationStoppers.forEach(function (stopper) {\n return stopper.stop();\n });\n }\n };\n}\nexport function getPathToNestedCSSRule(rule) {\n var path = [];\n var currentRule = rule;\n while (currentRule.parentRule) {\n var rules_1 = Array.from(currentRule.parentRule.cssRules);\n var index_1 = rules_1.indexOf(currentRule);\n path.unshift(index_1);\n currentRule = currentRule.parentRule;\n }\n // A rule may not be attached to a stylesheet\n if (!currentRule.parentStyleSheet) {\n return;\n }\n var rules = Array.from(currentRule.parentStyleSheet.cssRules);\n var index = rules.indexOf(currentRule);\n path.unshift(index);\n return path;\n}\n//# sourceMappingURL=trackStyleSheet.js.map","import { DOM_EVENT, addEventListeners, timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackFocus(configuration, focusCb) {\n return addEventListeners(configuration, window, [DOM_EVENT.FOCUS, DOM_EVENT.BLUR], function () {\n focusCb({\n data: {\n has_focus: document.hasFocus()\n },\n type: RecordType.Focus,\n timestamp: timeStampNow()\n });\n });\n}\n//# sourceMappingURL=trackFocus.js.map","import { RecordType } from '../../../types';\nexport function trackFrustration(lifeCycle, frustrationCb, recordIds) {\n var frustrationSubscription = lifeCycle.subscribe(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, function (data) {\n var _a, _b, _c;\n if (data.rawRumEvent.type === \"action\" /* RumEventType.ACTION */ && data.rawRumEvent.action.type === \"click\" /* ActionType.CLICK */ && ((_b = (_a = data.rawRumEvent.action.frustration) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.length) && 'events' in data.domainContext && ((_c = data.domainContext.events) === null || _c === void 0 ? void 0 : _c.length)) {\n frustrationCb({\n timestamp: data.rawRumEvent.date,\n type: RecordType.FrustrationRecord,\n data: {\n frustrationTypes: data.rawRumEvent.action.frustration.type,\n recordIds: data.domainContext.events.map(function (e) {\n return recordIds.getIdForEvent(e);\n })\n }\n });\n }\n });\n return {\n stop: function () {\n frustrationSubscription.unsubscribe();\n }\n };\n}\n//# sourceMappingURL=trackFrustration.js.map","import { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../../types';\nexport function trackViewEnd(lifeCycle, viewEndCb) {\n var viewEndSubscription = lifeCycle.subscribe(5 /* LifeCycleEventType.VIEW_ENDED */, function () {\n viewEndCb({\n timestamp: timeStampNow(),\n type: RecordType.ViewEnd\n });\n });\n return {\n stop: function () {\n viewEndSubscription.unsubscribe();\n }\n };\n}\n//# sourceMappingURL=trackViewEnd.js.map","import { instrumentSetter, assign, DOM_EVENT, addEventListeners, forEach, noop } from '@datadog/browser-core';\nimport { cssEscape } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { IncrementalSource } from '../../../types';\nimport { getEventTarget } from '../eventsUtils';\nimport { getNodePrivacyLevel, shouldMaskNode } from '../privacy';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode } from '../serialization';\nimport { assembleIncrementalSnapshot } from '../assembly';\nexport function trackInput(configuration, inputCb, target) {\n if (target === void 0) {\n target = document;\n }\n var defaultPrivacyLevel = configuration.defaultPrivacyLevel;\n var lastInputStateMap = new WeakMap();\n var isShadowRoot = target !== document;\n var stopEventListeners = addEventListeners(configuration, target,\n // The 'input' event bubbles across shadow roots, so we don't have to listen for it on shadow\n // roots since it will be handled by the event listener that we did add to the document. Only\n // the 'change' event is blocked and needs to be handled on shadow roots.\n isShadowRoot ? [DOM_EVENT.CHANGE] : [DOM_EVENT.INPUT, DOM_EVENT.CHANGE], function (event) {\n var target = getEventTarget(event);\n if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement) {\n onElementChange(target);\n }\n }, {\n capture: true,\n passive: true\n }).stop;\n var stopPropertySetterInstrumentation;\n if (!isShadowRoot) {\n var instrumentationStoppers_1 = [instrumentSetter(HTMLInputElement.prototype, 'value', onElementChange), instrumentSetter(HTMLInputElement.prototype, 'checked', onElementChange), instrumentSetter(HTMLSelectElement.prototype, 'value', onElementChange), instrumentSetter(HTMLTextAreaElement.prototype, 'value', onElementChange), instrumentSetter(HTMLSelectElement.prototype, 'selectedIndex', onElementChange)];\n stopPropertySetterInstrumentation = function () {\n instrumentationStoppers_1.forEach(function (stopper) {\n return stopper.stop();\n });\n };\n } else {\n stopPropertySetterInstrumentation = noop;\n }\n return {\n stop: function () {\n stopPropertySetterInstrumentation();\n stopEventListeners();\n }\n };\n function onElementChange(target) {\n var nodePrivacyLevel = getNodePrivacyLevel(target, defaultPrivacyLevel);\n if (nodePrivacyLevel === NodePrivacyLevel.HIDDEN) {\n return;\n }\n var type = target.type;\n var inputState;\n if (type === 'radio' || type === 'checkbox') {\n if (shouldMaskNode(target, nodePrivacyLevel)) {\n return;\n }\n inputState = {\n isChecked: target.checked\n };\n } else {\n var value = getElementInputValue(target, nodePrivacyLevel);\n if (value === undefined) {\n return;\n }\n inputState = {\n text: value\n };\n }\n // Can be multiple changes on the same node within the same batched mutation observation.\n cbWithDedup(target, inputState);\n // If a radio was checked, other radios with the same name attribute will be unchecked.\n var name = target.name;\n if (type === 'radio' && name && target.checked) {\n forEach(document.querySelectorAll(\"input[type=\\\"radio\\\"][name=\\\"\".concat(cssEscape(name), \"\\\"]\")), function (el) {\n if (el !== target) {\n // TODO: Consider the privacy implications for various differing input privacy levels\n cbWithDedup(el, {\n isChecked: false\n });\n }\n });\n }\n }\n /**\n * There can be multiple changes on the same node within the same batched mutation observation.\n */\n function cbWithDedup(target, inputState) {\n if (!hasSerializedNode(target)) {\n return;\n }\n var lastInputState = lastInputStateMap.get(target);\n if (!lastInputState || lastInputState.text !== inputState.text || lastInputState.isChecked !== inputState.isChecked) {\n lastInputStateMap.set(target, inputState);\n inputCb(assembleIncrementalSnapshot(IncrementalSource.Input, assign({\n id: getSerializedNodeId(target)\n }, inputState)));\n }\n }\n}\n//# sourceMappingURL=trackInput.js.map","import { noop, monitor } from '@datadog/browser-core';\n/**\n * Maximum duration to wait before processing mutations. If the browser is idle, mutations will be\n * processed more quickly. If the browser is busy executing small tasks (ex: rendering frames), the\n * mutations will wait MUTATION_PROCESS_MAX_DELAY milliseconds before being processed. If the\n * browser is busy executing a longer task, mutations will be processed after this task.\n */\nvar MUTATION_PROCESS_MAX_DELAY = 100;\nexport function createMutationBatch(processMutationBatch) {\n var cancelScheduledFlush = noop;\n var pendingMutations = [];\n function flush() {\n cancelScheduledFlush();\n processMutationBatch(pendingMutations);\n pendingMutations = [];\n }\n return {\n addMutations: function (mutations) {\n if (pendingMutations.length === 0) {\n cancelScheduledFlush = requestIdleCallback(flush, {\n timeout: MUTATION_PROCESS_MAX_DELAY\n });\n }\n pendingMutations.push.apply(pendingMutations, mutations);\n },\n flush: flush,\n stop: function () {\n cancelScheduledFlush();\n }\n };\n}\n/**\n * Use 'requestIdleCallback' when available: it will throttle the mutation processing if the\n * browser is busy rendering frames (ex: when frames are below 60fps). When not available, the\n * fallback on 'requestAnimationFrame' will still ensure the mutations are processed after any\n * browser rendering process (Layout, Recalculate Style, etc.), so we can serialize DOM nodes efficiently.\n *\n * Note: check both 'requestIdleCallback' and 'cancelIdleCallback' existence because some polyfills only implement 'requestIdleCallback'.\n */\nfunction requestIdleCallback(callback, opts) {\n if (window.requestIdleCallback && window.cancelIdleCallback) {\n var id_1 = window.requestIdleCallback(monitor(callback), opts);\n return function () {\n return window.cancelIdleCallback(id_1);\n };\n }\n var id = window.requestAnimationFrame(monitor(callback));\n return function () {\n return window.cancelAnimationFrame(id);\n };\n}\n//# sourceMappingURL=mutationBatch.js.map","import { monitor, noop } from '@datadog/browser-core';\nimport { isNodeShadowHost, getMutationObserverConstructor, getParentNode, forEachChildNodes } from '@datadog/browser-rum-core';\nimport { NodePrivacyLevel } from '../../../constants';\nimport { IncrementalSource } from '../../../types';\nimport { getNodePrivacyLevel, getTextContent } from '../privacy';\nimport { getElementInputValue, getSerializedNodeId, hasSerializedNode, nodeAndAncestorsHaveSerializedNode, serializeNodeWithId, serializeAttribute } from '../serialization';\nimport { createMutationBatch } from '../mutationBatch';\nimport { assembleIncrementalSnapshot } from '../assembly';\n/**\n * Buffers and aggregate mutations generated by a MutationObserver into MutationPayload\n */\nexport function trackMutation(mutationCallback, configuration, shadowRootsController, target) {\n var MutationObserver = getMutationObserverConstructor();\n if (!MutationObserver) {\n return {\n stop: noop,\n flush: noop\n };\n }\n var mutationBatch = createMutationBatch(function (mutations) {\n processMutations(mutations.concat(observer.takeRecords()), mutationCallback, configuration, shadowRootsController);\n });\n var observer = new MutationObserver(monitor(mutationBatch.addMutations));\n observer.observe(target, {\n attributeOldValue: true,\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n });\n return {\n stop: function () {\n observer.disconnect();\n mutationBatch.stop();\n },\n flush: function () {\n mutationBatch.flush();\n }\n };\n}\nfunction processMutations(mutations, mutationCallback, configuration, shadowRootsController) {\n var nodePrivacyLevelCache = new Map();\n mutations.filter(function (mutation) {\n return mutation.type === 'childList';\n }).forEach(function (mutation) {\n mutation.removedNodes.forEach(function (removedNode) {\n traverseRemovedShadowDom(removedNode, shadowRootsController.removeShadowRoot);\n });\n });\n // Discard any mutation with a 'target' node that:\n // * isn't injected in the current document or isn't known/serialized yet: those nodes are likely\n // part of a mutation occurring in a parent Node\n // * should be hidden or ignored\n var filteredMutations = mutations.filter(function (mutation) {\n return mutation.target.isConnected && nodeAndAncestorsHaveSerializedNode(mutation.target) && getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache) !== NodePrivacyLevel.HIDDEN;\n });\n var _a = processChildListMutations(filteredMutations.filter(function (mutation) {\n return mutation.type === 'childList';\n }), configuration, shadowRootsController, nodePrivacyLevelCache),\n adds = _a.adds,\n removes = _a.removes,\n hasBeenSerialized = _a.hasBeenSerialized;\n var texts = processCharacterDataMutations(filteredMutations.filter(function (mutation) {\n return mutation.type === 'characterData' && !hasBeenSerialized(mutation.target);\n }), configuration, nodePrivacyLevelCache);\n var attributes = processAttributesMutations(filteredMutations.filter(function (mutation) {\n return mutation.type === 'attributes' && !hasBeenSerialized(mutation.target);\n }), configuration, nodePrivacyLevelCache);\n if (!texts.length && !attributes.length && !removes.length && !adds.length) {\n return;\n }\n mutationCallback(assembleIncrementalSnapshot(IncrementalSource.Mutation, {\n adds: adds,\n removes: removes,\n texts: texts,\n attributes: attributes\n }));\n}\nfunction processChildListMutations(mutations, configuration, shadowRootsController, nodePrivacyLevelCache) {\n // First, we iterate over mutations to collect:\n //\n // * nodes that have been added in the document and not removed by a subsequent mutation\n // * nodes that have been removed from the document but were not added in a previous mutation\n //\n // For this second category, we also collect their previous parent (mutation.target) because we'll\n // need it to emit a 'remove' mutation.\n //\n // Those two categories may overlap: if a node moved from a position to another, it is reported as\n // two mutation records, one with a \"removedNodes\" and the other with \"addedNodes\". In this case,\n // the node will be in both sets.\n var addedAndMovedNodes = new Set();\n var removedNodes = new Map();\n var _loop_1 = function (mutation) {\n mutation.addedNodes.forEach(function (node) {\n addedAndMovedNodes.add(node);\n });\n mutation.removedNodes.forEach(function (node) {\n if (!addedAndMovedNodes.has(node)) {\n removedNodes.set(node, mutation.target);\n }\n addedAndMovedNodes.delete(node);\n });\n };\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n _loop_1(mutation);\n }\n // Then, we sort nodes that are still in the document by topological order, for two reasons:\n //\n // * We will serialize each added nodes with their descendants. We don't want to serialize a node\n // twice, so we need to iterate over the parent nodes first and skip any node that is contained in\n // a precedent node.\n //\n // * To emit \"add\" mutations, we need references to the parent and potential next sibling of each\n // added node. So we need to iterate over the parent nodes first, and when multiple nodes are\n // siblings, we want to iterate from last to first. This will ensure that any \"next\" node is\n // already serialized and have an id.\n var sortedAddedAndMovedNodes = Array.from(addedAndMovedNodes);\n sortAddedAndMovedNodes(sortedAddedAndMovedNodes);\n // Then, we iterate over our sorted node sets to emit mutations. We collect the newly serialized\n // node ids in a set to be able to skip subsequent related mutations.\n var serializedNodeIds = new Set();\n var addedNodeMutations = [];\n for (var _a = 0, sortedAddedAndMovedNodes_1 = sortedAddedAndMovedNodes; _a < sortedAddedAndMovedNodes_1.length; _a++) {\n var node = sortedAddedAndMovedNodes_1[_a];\n if (hasBeenSerialized(node)) {\n continue;\n }\n var parentNodePrivacyLevel = getNodePrivacyLevel(node.parentNode, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue;\n }\n var serializedNode = serializeNodeWithId(node, {\n serializedNodeIds: serializedNodeIds,\n parentNodePrivacyLevel: parentNodePrivacyLevel,\n serializationContext: {\n status: 2 /* SerializationContextStatus.MUTATION */,\n shadowRootsController: shadowRootsController\n },\n configuration: configuration\n });\n if (!serializedNode) {\n continue;\n }\n var parentNode = getParentNode(node);\n addedNodeMutations.push({\n nextId: getNextSibling(node),\n parentId: getSerializedNodeId(parentNode),\n node: serializedNode\n });\n }\n // Finally, we emit remove mutations.\n var removedNodeMutations = [];\n removedNodes.forEach(function (parent, node) {\n if (hasSerializedNode(node)) {\n removedNodeMutations.push({\n parentId: getSerializedNodeId(parent),\n id: getSerializedNodeId(node)\n });\n }\n });\n return {\n adds: addedNodeMutations,\n removes: removedNodeMutations,\n hasBeenSerialized: hasBeenSerialized\n };\n function hasBeenSerialized(node) {\n return hasSerializedNode(node) && serializedNodeIds.has(getSerializedNodeId(node));\n }\n function getNextSibling(node) {\n var nextSibling = node.nextSibling;\n while (nextSibling) {\n if (hasSerializedNode(nextSibling)) {\n return getSerializedNodeId(nextSibling);\n }\n nextSibling = nextSibling.nextSibling;\n }\n return null;\n }\n}\nfunction processCharacterDataMutations(mutations, configuration, nodePrivacyLevelCache) {\n var _a;\n var textMutations = [];\n // Deduplicate mutations based on their target node\n var handledNodes = new Set();\n var filteredMutations = mutations.filter(function (mutation) {\n if (handledNodes.has(mutation.target)) {\n return false;\n }\n handledNodes.add(mutation.target);\n return true;\n });\n // Emit mutations\n for (var _i = 0, filteredMutations_1 = filteredMutations; _i < filteredMutations_1.length; _i++) {\n var mutation = filteredMutations_1[_i];\n var value = mutation.target.textContent;\n if (value === mutation.oldValue) {\n continue;\n }\n var parentNodePrivacyLevel = getNodePrivacyLevel(getParentNode(mutation.target), configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n if (parentNodePrivacyLevel === NodePrivacyLevel.HIDDEN || parentNodePrivacyLevel === NodePrivacyLevel.IGNORE) {\n continue;\n }\n textMutations.push({\n id: getSerializedNodeId(mutation.target),\n // TODO: pass a valid \"ignoreWhiteSpace\" argument\n value: (_a = getTextContent(mutation.target, false, parentNodePrivacyLevel)) !== null && _a !== void 0 ? _a : null\n });\n }\n return textMutations;\n}\nfunction processAttributesMutations(mutations, configuration, nodePrivacyLevelCache) {\n var attributeMutations = [];\n // Deduplicate mutations based on their target node and changed attribute\n var handledElements = new Map();\n var filteredMutations = mutations.filter(function (mutation) {\n var handledAttributes = handledElements.get(mutation.target);\n if (handledAttributes === null || handledAttributes === void 0 ? void 0 : handledAttributes.has(mutation.attributeName)) {\n return false;\n }\n if (!handledAttributes) {\n handledElements.set(mutation.target, new Set([mutation.attributeName]));\n } else {\n handledAttributes.add(mutation.attributeName);\n }\n return true;\n });\n // Emit mutations\n var emittedMutations = new Map();\n for (var _i = 0, filteredMutations_2 = filteredMutations; _i < filteredMutations_2.length; _i++) {\n var mutation = filteredMutations_2[_i];\n var uncensoredValue = mutation.target.getAttribute(mutation.attributeName);\n if (uncensoredValue === mutation.oldValue) {\n continue;\n }\n var privacyLevel = getNodePrivacyLevel(mutation.target, configuration.defaultPrivacyLevel, nodePrivacyLevelCache);\n var attributeValue = serializeAttribute(mutation.target, privacyLevel, mutation.attributeName, configuration);\n var transformedValue = void 0;\n if (mutation.attributeName === 'value') {\n var inputValue = getElementInputValue(mutation.target, privacyLevel);\n if (inputValue === undefined) {\n continue;\n }\n transformedValue = inputValue;\n } else if (typeof attributeValue === 'string') {\n transformedValue = attributeValue;\n } else {\n transformedValue = null;\n }\n var emittedMutation = emittedMutations.get(mutation.target);\n if (!emittedMutation) {\n emittedMutation = {\n id: getSerializedNodeId(mutation.target),\n attributes: {}\n };\n attributeMutations.push(emittedMutation);\n emittedMutations.set(mutation.target, emittedMutation);\n }\n emittedMutation.attributes[mutation.attributeName] = transformedValue;\n }\n return attributeMutations;\n}\nexport function sortAddedAndMovedNodes(nodes) {\n nodes.sort(function (a, b) {\n var position = a.compareDocumentPosition(b);\n /* eslint-disable no-bitwise */\n if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n } else if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n } else if (position & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n return -1;\n }\n /* eslint-enable no-bitwise */\n return 0;\n });\n}\nfunction traverseRemovedShadowDom(removedNode, shadowDomRemovedCallback) {\n if (isNodeShadowHost(removedNode)) {\n shadowDomRemovedCallback(removedNode.shadowRoot);\n }\n forEachChildNodes(removedNode, function (childNode) {\n return traverseRemovedShadowDom(childNode, shadowDomRemovedCallback);\n });\n}\n//# sourceMappingURL=trackMutation.js.map","import { trackInput, trackMutation, trackScroll } from './trackers';\nexport var initShadowRootsController = function (configuration, callback, elementsScrollPositions) {\n var controllerByShadowRoot = new Map();\n var shadowRootsController = {\n addShadowRoot: function (shadowRoot) {\n if (controllerByShadowRoot.has(shadowRoot)) {\n return;\n }\n var mutationTracker = trackMutation(callback, configuration, shadowRootsController, shadowRoot);\n // The change event does not bubble up across the shadow root, we have to listen on the shadow root\n var inputTracker = trackInput(configuration, callback, shadowRoot);\n // The scroll event does not bubble up across the shadow root, we have to listen on the shadow root\n var scrollTracker = trackScroll(configuration, callback, elementsScrollPositions, shadowRoot);\n controllerByShadowRoot.set(shadowRoot, {\n flush: function () {\n return mutationTracker.flush();\n },\n stop: function () {\n mutationTracker.stop();\n inputTracker.stop();\n scrollTracker.stop();\n }\n });\n },\n removeShadowRoot: function (shadowRoot) {\n var entry = controllerByShadowRoot.get(shadowRoot);\n if (!entry) {\n // unidentified root cause: observed in some cases with shadow DOM added by browser extensions\n return;\n }\n entry.stop();\n controllerByShadowRoot.delete(shadowRoot);\n },\n stop: function () {\n controllerByShadowRoot.forEach(function (_a) {\n var stop = _a.stop;\n return stop();\n });\n },\n flush: function () {\n controllerByShadowRoot.forEach(function (_a) {\n var flush = _a.flush;\n return flush();\n });\n }\n };\n return shadowRootsController;\n};\n//# sourceMappingURL=shadowRootsController.js.map","import { sendToExtension } from '@datadog/browser-core';\nimport * as replayStats from '../replayStats';\nimport { trackFocus, trackFrustration, trackInput, trackMediaInteraction, trackMouseInteraction, trackMove, trackMutation, trackScroll, trackStyleSheet, trackViewEnd, trackViewportResize } from './trackers';\nimport { createElementsScrollPositions } from './elementsScrollPositions';\nimport { initShadowRootsController } from './shadowRootsController';\nimport { startFullSnapshots } from './startFullSnapshots';\nimport { initRecordIds } from './recordIds';\nexport function record(options) {\n var emit = options.emit,\n configuration = options.configuration,\n lifeCycle = options.lifeCycle;\n // runtime checks for user options\n if (!emit) {\n throw new Error('emit function is required');\n }\n var emitAndComputeStats = function (record) {\n emit(record);\n sendToExtension('record', {\n record: record\n });\n var view = options.viewContexts.findView();\n replayStats.addRecord(view.id);\n };\n var elementsScrollPositions = createElementsScrollPositions();\n var shadowRootsController = initShadowRootsController(configuration, emitAndComputeStats, elementsScrollPositions);\n var stopFullSnapshots = startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, function (records) {\n return records.forEach(function (record) {\n return emitAndComputeStats(record);\n });\n }).stop;\n function flushMutations() {\n shadowRootsController.flush();\n mutationTracker.flush();\n }\n var recordIds = initRecordIds();\n var mutationTracker = trackMutation(emitAndComputeStats, configuration, shadowRootsController, document);\n var trackers = [mutationTracker, trackMove(configuration, emitAndComputeStats), trackMouseInteraction(configuration, emitAndComputeStats, recordIds), trackScroll(configuration, emitAndComputeStats, elementsScrollPositions, document), trackViewportResize(configuration, emitAndComputeStats), trackInput(configuration, emitAndComputeStats), trackMediaInteraction(configuration, emitAndComputeStats), trackStyleSheet(emitAndComputeStats), trackFocus(configuration, emitAndComputeStats), trackViewportResize(configuration, emitAndComputeStats), trackFrustration(lifeCycle, emitAndComputeStats, recordIds), trackViewEnd(lifeCycle, function (viewEndRecord) {\n flushMutations();\n emitAndComputeStats(viewEndRecord);\n })];\n return {\n stop: function () {\n shadowRootsController.stop();\n trackers.forEach(function (tracker) {\n return tracker.stop();\n });\n stopFullSnapshots();\n },\n flushMutations: flushMutations,\n shadowRootsController: shadowRootsController\n };\n}\n//# sourceMappingURL=record.js.map","export function createElementsScrollPositions() {\n var scrollPositionsByElement = new WeakMap();\n return {\n set: function (element, scrollPositions) {\n if (element === document && !document.scrollingElement) {\n // cf https://drafts.csswg.org/cssom-view/#dom-document-scrollingelement,\n // in some cases scrolling elements can not be defined, we don't support those for now\n return;\n }\n scrollPositionsByElement.set(element === document ? document.scrollingElement : element, scrollPositions);\n },\n get: function (element) {\n return scrollPositionsByElement.get(element);\n },\n has: function (element) {\n return scrollPositionsByElement.has(element);\n }\n };\n}\n//# sourceMappingURL=elementsScrollPositions.js.map","import { getScrollX, getScrollY, getViewportDimension } from '@datadog/browser-rum-core';\nimport { timeStampNow } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport { serializeDocument } from './serialization';\nimport { getVisualViewport } from './viewports';\nexport function startFullSnapshots(elementsScrollPositions, shadowRootsController, lifeCycle, configuration, flushMutations, fullSnapshotCallback) {\n var takeFullSnapshot = function (timestamp, serializationContext) {\n if (timestamp === void 0) {\n timestamp = timeStampNow();\n }\n if (serializationContext === void 0) {\n serializationContext = {\n status: 0 /* SerializationContextStatus.INITIAL_FULL_SNAPSHOT */,\n elementsScrollPositions: elementsScrollPositions,\n shadowRootsController: shadowRootsController\n };\n }\n var _a = getViewportDimension(),\n width = _a.width,\n height = _a.height;\n var records = [{\n data: {\n height: height,\n href: window.location.href,\n width: width\n },\n type: RecordType.Meta,\n timestamp: timestamp\n }, {\n data: {\n has_focus: document.hasFocus()\n },\n type: RecordType.Focus,\n timestamp: timestamp\n }, {\n data: {\n node: serializeDocument(document, configuration, serializationContext),\n initialOffset: {\n left: getScrollX(),\n top: getScrollY()\n }\n },\n type: RecordType.FullSnapshot,\n timestamp: timestamp\n }];\n if (window.visualViewport) {\n records.push({\n data: getVisualViewport(window.visualViewport),\n type: RecordType.VisualViewport,\n timestamp: timestamp\n });\n }\n return records;\n };\n fullSnapshotCallback(takeFullSnapshot());\n var unsubscribe = lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_CREATED */, function (view) {\n flushMutations();\n fullSnapshotCallback(takeFullSnapshot(view.startClocks.timeStamp, {\n shadowRootsController: shadowRootsController,\n status: 1 /* SerializationContextStatus.SUBSEQUENT_FULL_SNAPSHOT */,\n elementsScrollPositions: elementsScrollPositions\n }));\n }).unsubscribe;\n return {\n stop: unsubscribe\n };\n}\n//# sourceMappingURL=startFullSnapshots.js.map","export function initRecordIds() {\n var recordIds = new WeakMap();\n var nextId = 1;\n return {\n getIdForEvent: function (event) {\n if (!recordIds.has(event)) {\n recordIds.set(event, nextId++);\n }\n return recordIds.get(event);\n }\n };\n}\n//# sourceMappingURL=recordIds.js.map","import { assign } from '@datadog/browser-core';\nimport { RecordType } from '../../types';\nimport * as replayStats from '../replayStats';\nvar Segment = /** @class */function () {\n function Segment(encoder, context, creationReason) {\n this.encoder = encoder;\n this.encodedBytesCount = 0;\n var viewId = context.view.id;\n this.metadata = assign({\n start: Infinity,\n end: -Infinity,\n creation_reason: creationReason,\n records_count: 0,\n has_full_snapshot: false,\n index_in_view: replayStats.getSegmentsCount(viewId),\n source: 'browser'\n }, context);\n replayStats.addSegment(viewId);\n }\n Segment.prototype.addRecord = function (record, callback) {\n var _this = this;\n var _a;\n this.metadata.start = Math.min(this.metadata.start, record.timestamp);\n this.metadata.end = Math.max(this.metadata.end, record.timestamp);\n this.metadata.records_count += 1;\n (_a = this.metadata).has_full_snapshot || (_a.has_full_snapshot = record.type === RecordType.FullSnapshot);\n var prefix = this.encoder.isEmpty ? '{\"records\":[' : ',';\n this.encoder.write(prefix + JSON.stringify(record), function (additionalEncodedBytesCount) {\n _this.encodedBytesCount += additionalEncodedBytesCount;\n callback(_this.encodedBytesCount);\n });\n };\n Segment.prototype.flush = function (callback) {\n var _this = this;\n if (this.encoder.isEmpty) {\n throw new Error('Empty segment flushed');\n }\n this.encoder.write(\"],\".concat(JSON.stringify(this.metadata).slice(1), \"\\n\"));\n this.encoder.finish(function (encoderResult) {\n replayStats.addWroteData(_this.metadata.view.id, encoderResult.rawBytesCount);\n callback(_this.metadata, encoderResult);\n });\n };\n return Segment;\n}();\nexport { Segment };\n//# sourceMappingURL=segment.js.map","import { isPageExitReason, ONE_SECOND, clearTimeout, setTimeout } from '@datadog/browser-core';\nimport { buildReplayPayload } from './buildReplayPayload';\nimport { Segment } from './segment';\nexport var SEGMENT_DURATION_LIMIT = 30 * ONE_SECOND;\n/**\n * beacon payload max queue size implementation is 64kb\n * ensure that we leave room for logs, rum and potential other users\n */\nexport var SEGMENT_BYTES_LIMIT = 60000;\n// Segments are the main data structure for session replays. They contain context information used\n// for indexing or UI needs, and a list of records (RRWeb 'events', renamed to avoid confusing\n// namings). They are stored without any processing from the intake, and fetched one after the\n// other while a session is being replayed. Their encoding (deflate) are carefully crafted to allow\n// concatenating multiple segments together. Segments have a size overhead (metadata), so our goal is to\n// build segments containing as many records as possible while complying with the various flush\n// strategies to guarantee a good replay quality.\n//\n// When the recording starts, a segment is initially created. The segment is flushed (finalized and\n// sent) based on various events (non-exhaustive list):\n//\n// * the page visibility change or becomes to unload\n// * the segment duration reaches a limit\n// * the encoded segment bytes count reaches a limit\n// * ...\n//\n// A segment cannot be created without its context. If the RUM session ends and no session id is\n// available when creating a new segment, records will be ignored, until the session is renewed and\n// a new session id is available.\n//\n// Empty segments (segments with no record) aren't useful and should be ignored.\n//\n// To help investigate session replays issues, each segment is created with a \"creation reason\",\n// indicating why the session has been created.\nexport function startSegmentCollection(lifeCycle, configuration, sessionManager, viewContexts, httpRequest, encoder) {\n return doStartSegmentCollection(lifeCycle, function () {\n return computeSegmentContext(configuration.applicationId, sessionManager, viewContexts);\n }, httpRequest, encoder);\n}\nexport function doStartSegmentCollection(lifeCycle, getSegmentContext, httpRequest, encoder) {\n var state = {\n status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n nextSegmentCreationReason: 'init'\n };\n var unsubscribeViewCreated = lifeCycle.subscribe(3 /* LifeCycleEventType.VIEW_CREATED */, function () {\n flushSegment('view_change');\n }).unsubscribe;\n var unsubscribePageExited = lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n flushSegment(pageExitEvent.reason);\n }).unsubscribe;\n function flushSegment(flushReason) {\n if (state.status === 1 /* SegmentCollectionStatus.SegmentPending */) {\n state.segment.flush(function (metadata, encoderResult) {\n var payload = buildReplayPayload(encoderResult.output, metadata, encoderResult.rawBytesCount);\n if (isPageExitReason(flushReason)) {\n httpRequest.sendOnExit(payload);\n } else {\n httpRequest.send(payload);\n }\n });\n clearTimeout(state.expirationTimeoutId);\n }\n if (flushReason !== 'stop') {\n state = {\n status: 0 /* SegmentCollectionStatus.WaitingForInitialRecord */,\n nextSegmentCreationReason: flushReason\n };\n } else {\n state = {\n status: 2 /* SegmentCollectionStatus.Stopped */\n };\n }\n }\n return {\n addRecord: function (record) {\n if (state.status === 2 /* SegmentCollectionStatus.Stopped */) {\n return;\n }\n if (state.status === 0 /* SegmentCollectionStatus.WaitingForInitialRecord */) {\n var context = getSegmentContext();\n if (!context) {\n return;\n }\n state = {\n status: 1 /* SegmentCollectionStatus.SegmentPending */,\n segment: new Segment(encoder, context, state.nextSegmentCreationReason),\n expirationTimeoutId: setTimeout(function () {\n flushSegment('segment_duration_limit');\n }, SEGMENT_DURATION_LIMIT)\n };\n }\n state.segment.addRecord(record, function (encodedBytesCount) {\n if (encodedBytesCount > SEGMENT_BYTES_LIMIT) {\n flushSegment('segment_bytes_limit');\n }\n });\n },\n stop: function () {\n flushSegment('stop');\n unsubscribeViewCreated();\n unsubscribePageExited();\n }\n };\n}\nexport function computeSegmentContext(applicationId, sessionManager, viewContexts) {\n var session = sessionManager.findTrackedSession();\n var viewContext = viewContexts.findView();\n if (!session || !viewContext) {\n return undefined;\n }\n return {\n application: {\n id: applicationId\n },\n session: {\n id: session.id\n },\n view: {\n id: viewContext.id\n }\n };\n}\nexport function setSegmentBytesLimit(newSegmentBytesLimit) {\n if (newSegmentBytesLimit === void 0) {\n newSegmentBytesLimit = 60000;\n }\n SEGMENT_BYTES_LIMIT = newSegmentBytesLimit;\n}\n//# sourceMappingURL=segmentCollection.js.map","import { assign } from '@datadog/browser-core';\nexport function buildReplayPayload(data, metadata, rawSegmentBytesCount) {\n var formData = new FormData();\n formData.append('segment', new Blob([data], {\n type: 'application/octet-stream'\n }), \"\".concat(metadata.session.id, \"-\").concat(metadata.start));\n var metadataAndSegmentSizes = assign({\n raw_segment_size: rawSegmentBytesCount,\n compressed_segment_size: data.byteLength\n }, metadata);\n var serializedMetadataAndSegmentSizes = JSON.stringify(metadataAndSegmentSizes);\n formData.append('event', new Blob([serializedMetadataAndSegmentSizes], {\n type: 'application/json'\n }));\n return {\n data: formData,\n bytesCount: data.byteLength\n };\n}\n//# sourceMappingURL=buildReplayPayload.js.map","/**\n * Test for Browser features used while recording\n */\nexport function isBrowserSupported() {\n return (\n // Array.from is a bit less supported by browsers than CSSSupportsRule, but has higher chances\n // to be polyfilled. Test for both to be more confident. We could add more things if we find out\n // this test is not sufficient.\n typeof Array.from === 'function' && typeof CSSSupportsRule === 'function' && typeof URL.createObjectURL === 'function' && 'forEach' in NodeList.prototype\n );\n}\n//# sourceMappingURL=isBrowserSupported.js.map","import { getSessionReplayUrl } from '@datadog/browser-rum-core';\nimport { isBrowserSupported } from '../boot/isBrowserSupported';\nexport function getSessionReplayLink(configuration, sessionManager, viewContexts, isRecordingStarted) {\n var session = sessionManager.findTrackedSession();\n var errorType = getErrorType(session, isRecordingStarted);\n var viewContext = viewContexts.findView();\n return getSessionReplayUrl(configuration, {\n viewContext: viewContext,\n errorType: errorType,\n session: session\n });\n}\nfunction getErrorType(session, isRecordingStarted) {\n if (!isBrowserSupported()) {\n return 'browser-not-supported';\n }\n if (!session) {\n // possibilities:\n // - rum sampled out\n // - session expired (edge case)\n return 'rum-not-tracked';\n }\n if (!session.sessionReplayAllowed) {\n // possibilities\n // - replay sampled out\n return 'incorrect-session-plan';\n }\n if (!isRecordingStarted) {\n return 'replay-not-started';\n }\n}\n//# sourceMappingURL=getSessionReplayLink.js.map","import { addEventListener, addTelemetryDebug, assign, concatBuffers } from '@datadog/browser-core';\nexport function createDeflateEncoder(configuration, worker, streamId) {\n var rawBytesCount = 0;\n var compressedData = [];\n var compressedDataTrailer;\n var nextWriteActionId = 0;\n var pendingWriteActions = [];\n var removeMessageListener = addEventListener(configuration, worker, 'message', function (_a) {\n var workerResponse = _a.data;\n if (workerResponse.type !== 'wrote' || workerResponse.streamId !== streamId) {\n return;\n }\n rawBytesCount += workerResponse.additionalBytesCount;\n compressedData.push(workerResponse.result);\n compressedDataTrailer = workerResponse.trailer;\n var nextPendingAction = pendingWriteActions.shift();\n if (nextPendingAction && nextPendingAction.id === workerResponse.id) {\n if (nextPendingAction.writeCallback) {\n nextPendingAction.writeCallback(workerResponse.result.byteLength);\n } else if (nextPendingAction.finishCallback) {\n nextPendingAction.finishCallback();\n }\n } else {\n removeMessageListener();\n addTelemetryDebug('Worker responses received out of order.');\n }\n }).stop;\n function consumeResult() {\n var output = compressedData.length === 0 ? new Uint8Array(0) : concatBuffers(compressedData.concat(compressedDataTrailer));\n var result = {\n rawBytesCount: rawBytesCount,\n output: output,\n outputBytesCount: output.byteLength,\n encoding: 'deflate'\n };\n rawBytesCount = 0;\n compressedData = [];\n return result;\n }\n function sendResetIfNeeded() {\n if (nextWriteActionId > 0) {\n worker.postMessage({\n action: 'reset',\n streamId: streamId\n });\n nextWriteActionId = 0;\n }\n }\n return {\n isAsync: true,\n get isEmpty() {\n return nextWriteActionId === 0;\n },\n write: function (data, callback) {\n worker.postMessage({\n action: 'write',\n id: nextWriteActionId,\n data: data,\n streamId: streamId\n });\n pendingWriteActions.push({\n id: nextWriteActionId,\n writeCallback: callback,\n data: data\n });\n nextWriteActionId += 1;\n },\n finish: function (callback) {\n sendResetIfNeeded();\n if (!pendingWriteActions.length) {\n callback(consumeResult());\n } else {\n // Make sure we do not call any write callback\n pendingWriteActions.forEach(function (pendingWriteAction) {\n delete pendingWriteAction.writeCallback;\n });\n // Wait for the last action to finish before calling the finish callback\n pendingWriteActions[pendingWriteActions.length - 1].finishCallback = function () {\n return callback(consumeResult());\n };\n }\n },\n finishSync: function () {\n sendResetIfNeeded();\n var pendingData = pendingWriteActions.map(function (pendingWriteAction) {\n // Make sure we do not call any write or finish callback\n delete pendingWriteAction.writeCallback;\n delete pendingWriteAction.finishCallback;\n return pendingWriteAction.data;\n }).join('');\n return assign(consumeResult(), {\n pendingData: pendingData\n });\n },\n estimateEncodedBytesCount: function (data) {\n // This is a rough estimation of the data size once it'll be encoded by deflate. We observed\n // that if it's the first chunk of data pushed to the stream, the ratio is lower (3-4), but\n // after that the ratio is greater (10+). We chose 8 here, which (on average) seems to produce\n // requests of the expected size.\n return data.length / 8;\n },\n stop: function () {\n removeMessageListener();\n }\n };\n}\n//# sourceMappingURL=deflateEncoder.js.map","import { addTelemetryError, display, includes, addEventListener, setTimeout, ONE_SECOND } from '@datadog/browser-core';\nexport var INITIALIZATION_TIME_OUT_DELAY = 10 * ONE_SECOND;\nfunction createDeflateWorker(configuration) {\n return new Worker(configuration.workerUrl || URL.createObjectURL(new Blob([\"!function(){\\\"use strict\\\";function t(t){for(var e=t.reduce((function(t,e){return t+e.length}),0),a=new Uint8Array(e),n=0,r=0,i=t;r<i.length;r++){var s=i[r];a.set(s,n),n+=s.length}return a}function e(t){for(var e=t.length;--e>=0;)t[e]=0}var a=256,n=286,r=30,i=15,s=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),_=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),h=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),l=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),o=new Array(576);e(o);var d=new Array(60);e(d);var u=new Array(512);e(u);var f=new Array(256);e(f);var c=new Array(29);e(c);var p,g,w,v=new Array(r);function b(t,e,a,n,r){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=n,this.max_length=r,this.has_stree=t&&t.length}function m(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(v);var y=function(t){return t<256?u[t]:u[256+(t>>>7)]},k=function(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},z=function(t,e,a){t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,k(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},x=function(t,e,a){z(t,a[2*e],a[2*e+1])},A=function(t,e){var a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=function(t,e,a){var n,r,s=new Array(16),_=0;for(n=1;n<=i;n++)s[n]=_=_+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=A(s[h]++,h))}},Z=function(t){var e;for(e=0;e<n;e++)t.dyn_ltree[2*e]=0;for(e=0;e<r;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},U=function(t){t.bi_valid>8?k(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},S=function(t,e,a,n){var r=2*e,i=2*a;return t[r]<t[i]||t[r]===t[i]&&n[e]<=n[a]},R=function(t,e,a){for(var n=t.heap[a],r=a<<1;r<=t.heap_len&&(r<t.heap_len&&S(e,t.heap[r+1],t.heap[r],t.depth)&&r++,!S(e,n,t.heap[r],t.depth));)t.heap[a]=t.heap[r],a=r,r<<=1;t.heap[a]=n},L=function(t,e,n){var r,i,h,l,o=0;if(0!==t.last_lit)do{r=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],i=t.pending_buf[t.l_buf+o],o++,0===r?x(t,i,e):(h=f[i],x(t,h+a+1,e),0!==(l=s[h])&&(i-=c[h],z(t,i,l)),r--,h=y(r),x(t,h,n),0!==(l=_[h])&&(r-=v[h],z(t,r,l)))}while(o<t.last_lit);x(t,256,e)},F=function(t,e){var a,n,r,s=e.dyn_tree,_=e.stat_desc.static_tree,h=e.stat_desc.has_stree,l=e.stat_desc.elems,o=-1;for(t.heap_len=0,t.heap_max=573,a=0;a<l;a++)0!==s[2*a]?(t.heap[++t.heap_len]=o=a,t.depth[a]=0):s[2*a+1]=0;for(;t.heap_len<2;)s[2*(r=t.heap[++t.heap_len]=o<2?++o:0)]=1,t.depth[r]=0,t.opt_len--,h&&(t.static_len-=_[2*r+1]);for(e.max_code=o,a=t.heap_len>>1;a>=1;a--)R(t,s,a);r=l;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],R(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,s[2*r]=s[2*a]+s[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,s[2*a+1]=s[2*n+1]=r,t.heap[1]=r++,R(t,s,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,s,_,h,l=e.dyn_tree,o=e.max_code,d=e.stat_desc.static_tree,u=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,g=0;for(s=0;s<=i;s++)t.bl_count[s]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<573;a++)(s=l[2*l[2*(n=t.heap[a])+1]+1]+1)>p&&(s=p,g++),l[2*n+1]=s,n>o||(t.bl_count[s]++,_=0,n>=c&&(_=f[n-c]),h=l[2*n],t.opt_len+=h*(s+_),u&&(t.static_len+=h*(d[2*n+1]+_)));if(0!==g){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,g-=2}while(g>0);for(s=p;0!==s;s--)for(n=t.bl_count[s];0!==n;)(r=t.heap[--a])>o||(l[2*r+1]!==s&&(t.opt_len+=(s-l[2*r+1])*l[2*r],l[2*r+1]=s),n--)}}(t,e),E(s,o,t.bl_count)},T=function(t,e,a){var n,r,i=-1,s=e[1],_=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(a+1)+1]=65535,n=0;n<=a;n++)r=s,s=e[2*(n+1)+1],++_<h&&r===s||(_<l?t.bl_tree[2*r]+=_:0!==r?(r!==i&&t.bl_tree[2*r]++,t.bl_tree[32]++):_<=10?t.bl_tree[34]++:t.bl_tree[36]++,_=0,i=r,0===s?(h=138,l=3):r===s?(h=6,l=3):(h=7,l=4))},I=function(t,e,a){var n,r,i=-1,s=e[1],_=0,h=7,l=4;for(0===s&&(h=138,l=3),n=0;n<=a;n++)if(r=s,s=e[2*(n+1)+1],!(++_<h&&r===s)){if(_<l)do{x(t,r,t.bl_tree)}while(0!=--_);else 0!==r?(r!==i&&(x(t,r,t.bl_tree),_--),x(t,16,t.bl_tree),z(t,_-3,2)):_<=10?(x(t,17,t.bl_tree),z(t,_-3,3)):(x(t,18,t.bl_tree),z(t,_-11,7));_=0,i=r,0===s?(h=138,l=3):r===s?(h=6,l=3):(h=7,l=4)}},N=!1,O=function(t,e,a,n){z(t,0+(n?1:0),3),function(t,e,a,n){U(t),n&&(k(t,a),k(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a}(t,e,a,!0)},D=function(t,e,n,r){var i,s,_=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<a;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),F(t,t.l_desc),F(t,t.d_desc),_=function(t){var e;for(T(t,t.dyn_ltree,t.l_desc.max_code),T(t,t.dyn_dtree,t.d_desc.max_code),F(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*l[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),i=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=i&&(i=s)):i=s=n+5,n+4<=i&&-1!==e?O(t,e,n,r):4===t.strategy||s===i?(z(t,2+(r?1:0),3),L(t,o,d)):(z(t,4+(r?1:0),3),function(t,e,a,n){var r;for(z(t,e-257,5),z(t,a-1,5),z(t,n-4,4),r=0;r<n;r++)z(t,t.bl_tree[2*l[r]+1],3);I(t,t.dyn_ltree,e-1),I(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,_+1),L(t,t.dyn_ltree,t.dyn_dtree)),Z(t),r&&U(t)},B={_tr_init:function(t){N||(!function(){var t,e,a,l,m,y=new Array(16);for(a=0,l=0;l<28;l++)for(c[l]=a,t=0;t<1<<s[l];t++)f[a++]=l;for(f[a-1]=l,m=0,l=0;l<16;l++)for(v[l]=m,t=0;t<1<<_[l];t++)u[m++]=l;for(m>>=7;l<r;l++)for(v[l]=m<<7,t=0;t<1<<_[l]-7;t++)u[256+m++]=l;for(e=0;e<=i;e++)y[e]=0;for(t=0;t<=143;)o[2*t+1]=8,t++,y[8]++;for(;t<=255;)o[2*t+1]=9,t++,y[9]++;for(;t<=279;)o[2*t+1]=7,t++,y[7]++;for(;t<=287;)o[2*t+1]=8,t++,y[8]++;for(E(o,287,y),t=0;t<r;t++)d[2*t+1]=5,d[2*t]=A(t,5);p=new b(o,s,257,n,i),g=new b(d,_,0,r,i),w=new b(new Array(0),h,0,19,7)}(),N=!0),t.l_desc=new m(t.dyn_ltree,p),t.d_desc=new m(t.dyn_dtree,g),t.bl_desc=new m(t.bl_tree,w),t.bi_buf=0,t.bi_valid=0,Z(t)},_tr_stored_block:O,_tr_flush_block:D,_tr_tally:function(t,e,n){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(f[n]+a+1)]++,t.dyn_dtree[2*y(e)]++),t.last_lit===t.lit_bufsize-1},_tr_align:function(t){z(t,2,3),x(t,256,o),function(t){16===t.bi_valid?(k(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},C=function(t,e,a,n){for(var r=65535&t|0,i=t>>>16&65535|0,s=0;0!==a;){a-=s=a>2e3?2e3:a;do{i=i+(r=r+e[n++]|0)|0}while(--s);r%=65521,i%=65521}return r|i<<16|0},H=new Uint32Array(function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}()),M=function(t,e,a,n){var r=H,i=n+a;t^=-1;for(var s=n;s<i;s++)t=t>>>8^r[255&(t^e[s])];return-1^t},Y={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"},K={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},P=B._tr_init,j=B._tr_stored_block,G=B._tr_flush_block,X=B._tr_tally,W=B._tr_align,q=K.Z_NO_FLUSH,J=K.Z_PARTIAL_FLUSH,Q=K.Z_FULL_FLUSH,V=K.Z_FINISH,$=K.Z_BLOCK,tt=K.Z_OK,et=K.Z_STREAM_END,at=K.Z_STREAM_ERROR,nt=K.Z_DATA_ERROR,rt=K.Z_BUF_ERROR,it=K.Z_DEFAULT_COMPRESSION,st=K.Z_FILTERED,_t=K.Z_HUFFMAN_ONLY,ht=K.Z_RLE,lt=K.Z_FIXED,ot=K.Z_DEFAULT_STRATEGY,dt=K.Z_UNKNOWN,ut=K.Z_DEFLATED,ft=258,ct=262,pt=103,gt=113,wt=666,vt=function(t,e){return t.msg=Y[e],e},bt=function(t){return(t<<1)-(t>4?9:0)},mt=function(t){for(var e=t.length;--e>=0;)t[e]=0},yt=function(t,e,a){return(e<<t.hash_shift^a)&t.hash_mask},kt=function(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},zt=function(t,e){G(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,kt(t.strm)},xt=function(t,e){t.pending_buf[t.pending++]=e},At=function(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Et=function(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,_=t.nice_match,h=t.strstart>t.w_size-ct?t.strstart-(t.w_size-ct):0,l=t.window,o=t.w_mask,d=t.prev,u=t.strstart+ft,f=l[i+s-1],c=l[i+s];t.prev_length>=t.good_match&&(r>>=2),_>t.lookahead&&(_=t.lookahead);do{if(l[(a=e)+s]===c&&l[a+s-1]===f&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do{}while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&i<u);if(n=ft-(u-i),i=u-ft,n>s){if(t.match_start=e,s=n,n>=_)break;f=l[i+s-1],c=l[i+s]}}}while((e=d[e&o])>h&&0!=--r);return s<=t.lookahead?s:t.lookahead},Zt=function(t){var e,a,n,r,i,s,_,h,l,o,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-ct)){t.window.set(t.window.subarray(d,d+d),0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;do{n=t.head[--e],t.head[e]=n>=d?n-d:0}while(--a);e=a=d;do{n=t.prev[--e],t.prev[e]=n>=d?n-d:0}while(--a);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,_=t.window,h=t.strstart+t.lookahead,l=r,o=void 0,(o=s.avail_in)>l&&(o=l),a=0===o?0:(s.avail_in-=o,_.set(s.input.subarray(s.next_in,s.next_in+o),h),1===s.state.wrap?s.adler=C(s.adler,_,o,h):2===s.state.wrap&&(s.adler=M(s.adler,_,o,h)),s.next_in+=o,s.total_in+=o,o),t.lookahead+=a,t.lookahead+t.insert>=3)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=yt(t,t.ins_h,t.window[i+1]);t.insert&&(t.ins_h=yt(t,t.ins_h,t.window[i+3-1]),t.prev[i&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=i,i++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<ct&&0!==t.strm.avail_in)},Ut=function(t,e){for(var a,n;;){if(t.lookahead<ct){if(Zt(t),t.lookahead<ct&&e===q)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a)),t.match_length>=3)if(n=X(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=yt(t,t.ins_h,t.window[t.strstart+1]);else n=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2},St=function(t,e){for(var a,n,r;;){if(t.lookahead<ct){if(Zt(t),t.lookahead<ct&&e===q)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a),t.match_length<=5&&(t.strategy===st||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-3,n=X(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=yt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(zt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if((n=X(t,0,t.window[t.strstart-1]))&&zt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=X(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2};function Rt(t,e,a,n,r){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=n,this.func=r}var Lt=[new Rt(0,0,0,0,(function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Zt(t),0===t.lookahead&&e===q)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,zt(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-ct&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(zt(t,!1),t.strm.avail_out),1)})),new Rt(4,4,8,4,Ut),new Rt(4,5,16,8,Ut),new Rt(4,6,32,32,Ut),new Rt(4,4,16,16,St),new Rt(8,16,32,32,St),new Rt(8,16,128,128,St),new Rt(8,32,128,256,St),new Rt(32,128,258,1024,St),new Rt(32,258,258,4096,St)];function Ft(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ut,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),mt(this.dyn_ltree),mt(this.dyn_dtree),mt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),mt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),mt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var Tt=function(t){if(!t||!t.state)return vt(t,at);t.total_in=t.total_out=0,t.data_type=dt;var e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:gt,t.adler=2===e.wrap?0:1,e.last_flush=q,P(e),tt},It=function(t){var e,a=Tt(t);return a===tt&&((e=t.state).window_size=2*e.w_size,mt(e.head),e.max_lazy_match=Lt[e.level].max_lazy,e.good_match=Lt[e.level].good_length,e.nice_match=Lt[e.level].nice_length,e.max_chain_length=Lt[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),a},Nt=function(t,e,a,n,r,i){if(!t)return at;var s=1;if(e===it&&(e=6),n<0?(s=0,n=-n):n>15&&(s=2,n-=16),r<1||r>9||a!==ut||n<8||n>15||e<0||e>9||i<0||i>lt)return vt(t,at);8===n&&(n=9);var _=new Ft;return t.state=_,_.strm=t,_.wrap=s,_.gzhead=null,_.w_bits=n,_.w_size=1<<_.w_bits,_.w_mask=_.w_size-1,_.hash_bits=r+7,_.hash_size=1<<_.hash_bits,_.hash_mask=_.hash_size-1,_.hash_shift=~~((_.hash_bits+3-1)/3),_.window=new Uint8Array(2*_.w_size),_.head=new Uint16Array(_.hash_size),_.prev=new Uint16Array(_.w_size),_.lit_bufsize=1<<r+6,_.pending_buf_size=4*_.lit_bufsize,_.pending_buf=new Uint8Array(_.pending_buf_size),_.d_buf=1*_.lit_bufsize,_.l_buf=3*_.lit_bufsize,_.level=e,_.strategy=i,_.method=a,It(t)},Ot={deflateInit:function(t,e){return Nt(t,e,ut,15,8,ot)},deflateInit2:Nt,deflateReset:It,deflateResetKeep:Tt,deflateSetHeader:function(t,e){return t&&t.state?2!==t.state.wrap?at:(t.state.gzhead=e,tt):at},deflate:function(t,e){var a,n;if(!t||!t.state||e>$||e<0)return t?vt(t,at):at;var r=t.state;if(!t.output||!t.input&&0!==t.avail_in||r.status===wt&&e!==V)return vt(t,0===t.avail_out?rt:at);r.strm=t;var i=r.last_flush;if(r.last_flush=e,42===r.status)if(2===r.wrap)t.adler=0,xt(r,31),xt(r,139),xt(r,8),r.gzhead?(xt(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),xt(r,255&r.gzhead.time),xt(r,r.gzhead.time>>8&255),xt(r,r.gzhead.time>>16&255),xt(r,r.gzhead.time>>24&255),xt(r,9===r.level?2:r.strategy>=_t||r.level<2?4:0),xt(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(xt(r,255&r.gzhead.extra.length),xt(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=M(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(xt(r,0),xt(r,0),xt(r,0),xt(r,0),xt(r,0),xt(r,9===r.level?2:r.strategy>=_t||r.level<2?4:0),xt(r,3),r.status=gt);else{var s=ut+(r.w_bits-8<<4)<<8;s|=(r.strategy>=_t||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(s|=32),s+=31-s%31,r.status=gt,At(r,s),0!==r.strstart&&(At(r,t.adler>>>16),At(r,65535&t.adler)),t.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending!==r.pending_buf_size));)xt(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,xt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),kt(t),a=r.pending,r.pending===r.pending_buf_size)){n=1;break}n=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,xt(r,n)}while(0!==n);r.gzhead.hcrc&&r.pending>a&&(t.adler=M(t.adler,r.pending_buf,r.pending-a,a)),0===n&&(r.status=pt)}else r.status=pt;if(r.status===pt&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&kt(t),r.pending+2<=r.pending_buf_size&&(xt(r,255&t.adler),xt(r,t.adler>>8&255),t.adler=0,r.status=gt)):r.status=gt),0!==r.pending){if(kt(t),0===t.avail_out)return r.last_flush=-1,tt}else if(0===t.avail_in&&bt(e)<=bt(i)&&e!==V)return vt(t,rt);if(r.status===wt&&0!==t.avail_in)return vt(t,rt);if(0!==t.avail_in||0!==r.lookahead||e!==q&&r.status!==wt){var _=r.strategy===_t?function(t,e){for(var a;;){if(0===t.lookahead&&(Zt(t),0===t.lookahead)){if(e===q)return 1;break}if(t.match_length=0,a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2}(r,e):r.strategy===ht?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=ft){if(Zt(t),t.lookahead<=ft&&e===q)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=s[r=t.strstart-1])===s[++r]&&n===s[++r]&&n===s[++r]){i=t.strstart+ft;do{}while(n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&n===s[++r]&&r<i);t.match_length=ft-(i-r),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=X(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=X(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(zt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===V?(zt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(zt(t,!1),0===t.strm.avail_out)?1:2}(r,e):Lt[r.level].func(r,e);if(3!==_&&4!==_||(r.status=wt),1===_||3===_)return 0===t.avail_out&&(r.last_flush=-1),tt;if(2===_&&(e===J?W(r):e!==$&&(j(r,0,0,!1),e===Q&&(mt(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),kt(t),0===t.avail_out))return r.last_flush=-1,tt}return e!==V?tt:r.wrap<=0?et:(2===r.wrap?(xt(r,255&t.adler),xt(r,t.adler>>8&255),xt(r,t.adler>>16&255),xt(r,t.adler>>24&255),xt(r,255&t.total_in),xt(r,t.total_in>>8&255),xt(r,t.total_in>>16&255),xt(r,t.total_in>>24&255)):(At(r,t.adler>>>16),At(r,65535&t.adler)),kt(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?tt:et)},deflateEnd:function(t){if(!t||!t.state)return at;var e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==pt&&e!==gt&&e!==wt?vt(t,at):(t.state=null,e===gt?vt(t,nt):tt)},deflateSetDictionary:function(t,e){var a=e.length;if(!t||!t.state)return at;var n=t.state,r=n.wrap;if(2===r||1===r&&42!==n.status||n.lookahead)return at;if(1===r&&(t.adler=C(t.adler,e,a,0)),n.wrap=0,a>=n.w_size){0===r&&(mt(n.head),n.strstart=0,n.block_start=0,n.insert=0);var i=new Uint8Array(n.w_size);i.set(e.subarray(a-n.w_size,a),0),e=i,a=n.w_size}var s=t.avail_in,_=t.next_in,h=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Zt(n);n.lookahead>=3;){var l=n.strstart,o=n.lookahead-2;do{n.ins_h=yt(n,n.ins_h,n.window[l+3-1]),n.prev[l&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=l,l++}while(--o);n.strstart=l,n.lookahead=2,Zt(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=_,t.input=h,t.avail_in=s,n.wrap=r,tt},deflateInfo:\\\"pako deflate (from Nodeca project)\\\"};for(var Dt=new Uint8Array(256),Bt=0;Bt<256;Bt++)Dt[Bt]=Bt>=252?6:Bt>=248?5:Bt>=240?4:Bt>=224?3:Bt>=192?2:1;Dt[254]=Dt[254]=1;var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0},Ht=Object.prototype.toString,Mt=K.Z_NO_FLUSH,Yt=K.Z_SYNC_FLUSH,Kt=K.Z_FULL_FLUSH,Pt=K.Z_FINISH,jt=K.Z_OK,Gt=K.Z_STREAM_END,Xt=K.Z_DEFAULT_COMPRESSION,Wt=K.Z_DEFAULT_STRATEGY,qt=K.Z_DEFLATED;function Jt(){this.options={level:Xt,method:qt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Wt};var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;var e=Ot.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==jt)throw new Error(Y[e]);if(t.header&&Ot.deflateSetHeader(this.strm,t.header),t.dictionary){var a;if(a=\\\"[object ArrayBuffer]\\\"===Ht.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,(e=Ot.deflateSetDictionary(this.strm,a))!==jt)throw new Error(Y[e]);this._dict_set=!0}}function Qt(t,e,a){try{t.postMessage({type:\\\"errored\\\",error:e,streamId:a})}catch(n){t.postMessage({type:\\\"errored\\\",error:String(e),streamId:a})}}function Vt(t){var e=t.strm.adler;return new Uint8Array([3,0,e>>>24&255,e>>>16&255,e>>>8&255,255&e])}Jt.prototype.push=function(t,e){var a,n,r=this.strm,i=this.options.chunkSize;if(this.ended)return!1;for(n=e===~~e?e:!0===e?Pt:Mt,\\\"[object ArrayBuffer]\\\"===Ht.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(i),r.next_out=0,r.avail_out=i),(n===Yt||n===Kt)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if((a=Ot.deflate(r,n))===Gt)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),a=Ot.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===jt;if(0!==r.avail_out){if(n>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},Jt.prototype.onData=function(t){this.chunks.push(t)},Jt.prototype.onEnd=function(t){t===jt&&(this.result=function(t){for(var e=0,a=0,n=t.length;a<n;a++)e+=t[a].length;for(var r=new Uint8Array(e),i=0,s=0,_=t.length;i<_;i++){var h=t[i];r.set(h,s),s+=h.length}return r}(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},function(e){void 0===e&&(e=self);try{var a=new Map;e.addEventListener(\\\"message\\\",(function(n){try{var r=function(e,a){switch(a.action){case\\\"init\\\":return{type:\\\"initialized\\\",version:\\\"5.17.1\\\"};case\\\"write\\\":var n=e.get(a.streamId);n||(n=new Jt,e.set(a.streamId,n));var r=n.chunks.length,i=function(t){if(\\\"function\\\"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);var e,a,n,r,i,s=t.length,_=0;for(r=0;r<s;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),_+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(_),i=0,r=0;i<_;r++)55296==(64512&(a=t.charCodeAt(r)))&&r+1<s&&56320==(64512&(n=t.charCodeAt(r+1)))&&(a=65536+(a-55296<<10)+(n-56320),r++),a<128?e[i++]=a:a<2048?(e[i++]=192|a>>>6,e[i++]=128|63&a):a<65536?(e[i++]=224|a>>>12,e[i++]=128|a>>>6&63,e[i++]=128|63&a):(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63,e[i++]=128|a>>>6&63,e[i++]=128|63&a);return e}(a.data);return n.push(i,K.Z_SYNC_FLUSH),{type:\\\"wrote\\\",id:a.id,streamId:a.streamId,result:t(n.chunks.slice(r)),trailer:Vt(n),additionalBytesCount:i.length};case\\\"reset\\\":e.delete(a.streamId)}}(a,n.data);r&&e.postMessage(r)}catch(t){Qt(e,t,n.data&&\\\"streamId\\\"in n.data?n.data.streamId:void 0)}}))}catch(t){Qt(e,t)}}()}();\"])));\n}\nvar state = {\n status: 0 /* DeflateWorkerStatus.Nil */\n};\nexport function startDeflateWorker(configuration, source, onInitializationFailure, createDeflateWorkerImpl) {\n if (createDeflateWorkerImpl === void 0) {\n createDeflateWorkerImpl = createDeflateWorker;\n }\n if (state.status === 0 /* DeflateWorkerStatus.Nil */) {\n // doStartDeflateWorker updates the state to \"loading\" or \"error\"\n doStartDeflateWorker(configuration, source, createDeflateWorkerImpl);\n }\n switch (state.status) {\n case 1 /* DeflateWorkerStatus.Loading */:\n state.initializationFailureCallbacks.push(onInitializationFailure);\n return state.worker;\n case 3 /* DeflateWorkerStatus.Initialized */:\n return state.worker;\n }\n}\nexport function resetDeflateWorkerState() {\n if (state.status === 3 /* DeflateWorkerStatus.Initialized */ || state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.stop();\n }\n state = {\n status: 0 /* DeflateWorkerStatus.Nil */\n };\n}\nexport function getDeflateWorkerStatus() {\n return state.status;\n}\n/**\n * Starts the deflate worker and handle messages and errors\n *\n * The spec allow browsers to handle worker errors differently:\n * - Chromium throws an exception\n * - Firefox fires an error event\n *\n * more details: https://bugzilla.mozilla.org/show_bug.cgi?id=1736865#c2\n */\nexport function doStartDeflateWorker(configuration, source, createDeflateWorkerImpl) {\n if (createDeflateWorkerImpl === void 0) {\n createDeflateWorkerImpl = createDeflateWorker;\n }\n try {\n var worker = createDeflateWorkerImpl(configuration);\n var removeErrorListener_1 = addEventListener(configuration, worker, 'error', function (error) {\n onError(configuration, source, error);\n }).stop;\n var removeMessageListener_1 = addEventListener(configuration, worker, 'message', function (_a) {\n var data = _a.data;\n if (data.type === 'errored') {\n onError(configuration, source, data.error, data.streamId);\n } else if (data.type === 'initialized') {\n onInitialized(data.version);\n }\n }).stop;\n worker.postMessage({\n action: 'init'\n });\n setTimeout(function () {\n return onTimeout(source);\n }, INITIALIZATION_TIME_OUT_DELAY);\n var stop_1 = function () {\n removeErrorListener_1();\n removeMessageListener_1();\n };\n state = {\n status: 1 /* DeflateWorkerStatus.Loading */,\n worker: worker,\n stop: stop_1,\n initializationFailureCallbacks: []\n };\n } catch (error) {\n onError(configuration, source, error);\n }\n}\nfunction onTimeout(source) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n display.error(\"\".concat(source, \" failed to start: a timeout occurred while initializing the Worker\"));\n state.initializationFailureCallbacks.forEach(function (callback) {\n return callback();\n });\n state = {\n status: 2 /* DeflateWorkerStatus.Error */\n };\n }\n}\nfunction onInitialized(version) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state = {\n status: 3 /* DeflateWorkerStatus.Initialized */,\n worker: state.worker,\n stop: state.stop,\n version: version\n };\n }\n}\nfunction onError(configuration, source, error, streamId) {\n if (state.status === 1 /* DeflateWorkerStatus.Loading */ || state.status === 0 /* DeflateWorkerStatus.Nil */) {\n display.error(\"\".concat(source, \" failed to start: an error occurred while creating the Worker:\"), error);\n if (error instanceof Event || error instanceof Error && isMessageCspRelated(error.message)) {\n var baseMessage = void 0;\n if (configuration.workerUrl) {\n baseMessage = \"Please make sure the Worker URL \".concat(configuration.workerUrl, \" is correct and CSP is correctly configured.\");\n } else {\n baseMessage = 'Please make sure CSP is correctly configured.';\n }\n display.error(\"\".concat(baseMessage, \" See documentation at https://docs.datadoghq.com/integrations/content_security_policy_logs/#use-csp-with-real-user-monitoring-and-session-replay\"));\n } else {\n addTelemetryError(error);\n }\n if (state.status === 1 /* DeflateWorkerStatus.Loading */) {\n state.initializationFailureCallbacks.forEach(function (callback) {\n return callback();\n });\n }\n state = {\n status: 2 /* DeflateWorkerStatus.Error */\n };\n } else {\n addTelemetryError(error, {\n worker_version: state.status === 3 /* DeflateWorkerStatus.Initialized */ && state.version,\n stream_id: streamId\n });\n }\n}\nfunction isMessageCspRelated(message) {\n return includes(message, 'Content Security Policy') ||\n // Related to `require-trusted-types-for` CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/require-trusted-types-for\n includes(message, \"requires 'TrustedScriptURL'\");\n}\n//# sourceMappingURL=deflateWorker.js.map","// Keep the following in sync with packages/rum-slim/src/entries/main.ts\nimport { defineGlobal, getGlobalObject } from '@datadog/browser-core';\nimport { makeRumPublicApi, startRum } from '@datadog/browser-rum-core';\nimport { startRecording } from '../boot/startRecording';\nimport { makeRecorderApi } from '../boot/recorderApi';\nimport { createDeflateEncoder, startDeflateWorker } from '../domain/deflate';\nexport { DefaultPrivacyLevel } from '@datadog/browser-core';\nvar recorderApi = makeRecorderApi(startRecording);\nexport var datadogRum = makeRumPublicApi(startRum, recorderApi, {\n startDeflateWorker: startDeflateWorker,\n createDeflateEncoder: createDeflateEncoder\n});\ndefineGlobal(getGlobalObject(), 'DD_RUM', datadogRum);\n//# sourceMappingURL=main.js.map","import { canUseEventBridge, noop, runOnReadyState, PageExitReason, bridgeSupports } from '@datadog/browser-core';\nimport { getReplayStats as getReplayStatsImpl } from '../domain/replayStats';\nimport { getSessionReplayLink } from '../domain/getSessionReplayLink';\nimport { createDeflateEncoder, startDeflateWorker, getDeflateWorkerStatus } from '../domain/deflate';\nimport { isBrowserSupported } from './isBrowserSupported';\nexport function makeRecorderApi(startRecordingImpl, createDeflateWorkerImpl) {\n if (canUseEventBridge() && !bridgeSupports(\"records\" /* BridgeCapability.RECORDS */) || !isBrowserSupported()) {\n return {\n start: noop,\n stop: noop,\n getReplayStats: function () {\n return undefined;\n },\n onRumStart: noop,\n isRecording: function () {\n return false;\n },\n getSessionReplayLink: function () {\n return undefined;\n }\n };\n }\n var state = {\n status: 1 /* RecorderStatus.IntentToStart */\n };\n var startStrategy = function () {\n state = {\n status: 1 /* RecorderStatus.IntentToStart */\n };\n };\n var stopStrategy = function () {\n state = {\n status: 0 /* RecorderStatus.Stopped */\n };\n };\n var getSessionReplayLinkStrategy = noop;\n return {\n start: function () {\n return startStrategy();\n },\n stop: function () {\n return stopStrategy();\n },\n getSessionReplayLink: function () {\n return getSessionReplayLinkStrategy();\n },\n onRumStart: function (lifeCycle, configuration, sessionManager, viewContexts, worker) {\n if (configuration.startSessionReplayRecordingManually) {\n state = {\n status: 0 /* RecorderStatus.Stopped */\n };\n }\n lifeCycle.subscribe(9 /* LifeCycleEventType.SESSION_EXPIRED */, function () {\n if (state.status === 2 /* RecorderStatus.Starting */ || state.status === 3 /* RecorderStatus.Started */) {\n stopStrategy();\n state = {\n status: 1 /* RecorderStatus.IntentToStart */\n };\n }\n });\n // Stop the recorder on page unload to avoid sending records after the page is ended.\n lifeCycle.subscribe(11 /* LifeCycleEventType.PAGE_EXITED */, function (pageExitEvent) {\n if (pageExitEvent.reason === PageExitReason.UNLOADING || pageExitEvent.reason === PageExitReason.PAGEHIDE) {\n stopStrategy();\n }\n });\n lifeCycle.subscribe(10 /* LifeCycleEventType.SESSION_RENEWED */, function () {\n if (state.status === 1 /* RecorderStatus.IntentToStart */) {\n startStrategy();\n }\n });\n var cachedDeflateEncoder;\n function getOrCreateDeflateEncoder() {\n if (!cachedDeflateEncoder) {\n if (!worker) {\n worker = startDeflateWorker(configuration, 'Datadog Session Replay', function () {\n stopStrategy();\n }, createDeflateWorkerImpl);\n }\n if (worker) {\n cachedDeflateEncoder = createDeflateEncoder(configuration, worker, 1 /* DeflateEncoderStreamId.REPLAY */);\n }\n }\n return cachedDeflateEncoder;\n }\n startStrategy = function () {\n var session = sessionManager.findTrackedSession();\n if (!session || !session.sessionReplayAllowed) {\n state = {\n status: 1 /* RecorderStatus.IntentToStart */\n };\n return;\n }\n if (state.status === 2 /* RecorderStatus.Starting */ || state.status === 3 /* RecorderStatus.Started */) {\n return;\n }\n state = {\n status: 2 /* RecorderStatus.Starting */\n };\n runOnReadyState(configuration, 'interactive', function () {\n if (state.status !== 2 /* RecorderStatus.Starting */) {\n return;\n }\n var deflateEncoder = getOrCreateDeflateEncoder();\n if (!deflateEncoder) {\n state = {\n status: 0 /* RecorderStatus.Stopped */\n };\n return;\n }\n var stopRecording = startRecordingImpl(lifeCycle, configuration, sessionManager, viewContexts, deflateEncoder).stop;\n state = {\n status: 3 /* RecorderStatus.Started */,\n stopRecording: stopRecording\n };\n });\n };\n stopStrategy = function () {\n if (state.status === 0 /* RecorderStatus.Stopped */) {\n return;\n }\n if (state.status === 3 /* RecorderStatus.Started */) {\n state.stopRecording();\n }\n state = {\n status: 0 /* RecorderStatus.Stopped */\n };\n };\n getSessionReplayLinkStrategy = function () {\n return getSessionReplayLink(configuration, sessionManager, viewContexts, state.status !== 0 /* RecorderStatus.Stopped */);\n };\n if (state.status === 1 /* RecorderStatus.IntentToStart */) {\n startStrategy();\n }\n },\n isRecording: function () {\n // The worker is started optimistically, meaning we could have started to record but its\n // initialization fails a bit later. This could happen when:\n // * the worker URL (blob or plain URL) is blocked by CSP in Firefox only (Chromium and Safari\n // throw an exception when instantiating the worker, and IE doesn't care about CSP)\n // * the browser fails to load the worker in case the workerUrl is used\n // * an unexpected error occurs in the Worker before initialization, ex:\n // * a runtime exception collected by monitor()\n // * a syntax error notified by the browser via an error event\n // * the worker is unresponsive for some reason and timeouts\n //\n // It is not expected to happen often. Nonetheless, the \"replayable\" status on RUM events is\n // an important part of the Datadog App:\n // * If we have a false positive (we set has_replay: true even if no replay data is present),\n // we might display broken links to the Session Replay player.\n // * If we have a false negative (we don't set has_replay: true even if replay data is\n // available), it is less noticeable because no link will be displayed.\n //\n // Thus, it is better to have false negative, so let's make sure the worker is correctly\n // initialized before advertizing that we are recording.\n //\n // In the future, when the compression worker will also be used for RUM data, this will be\n // less important since no RUM event will be sent when the worker fails to initialize.\n return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ && state.status === 3 /* RecorderStatus.Started */;\n },\n getReplayStats: function (viewId) {\n return getDeflateWorkerStatus() === 3 /* DeflateWorkerStatus.Initialized */ ? getReplayStatsImpl(viewId) : undefined;\n }\n };\n}\n//# sourceMappingURL=recorderApi.js.map","import { createHttpRequest, addTelemetryDebug, canUseEventBridge } from '@datadog/browser-core';\nimport { record } from '../domain/record';\nimport { startSegmentCollection, SEGMENT_BYTES_LIMIT } from '../domain/segmentCollection';\nimport { startRecordBridge } from '../domain/startRecordBridge';\nexport function startRecording(lifeCycle, configuration, sessionManager, viewContexts, encoder, httpRequest) {\n var cleanupTasks = [];\n var reportError = function (error) {\n lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n error: error\n });\n addTelemetryDebug('Error reported to customer', {\n 'error.message': error.message\n });\n };\n var replayRequest = httpRequest || createHttpRequest(configuration, configuration.sessionReplayEndpointBuilder, SEGMENT_BYTES_LIMIT, reportError);\n var addRecord;\n if (!canUseEventBridge()) {\n var segmentCollection = startSegmentCollection(lifeCycle, configuration, sessionManager, viewContexts, replayRequest, encoder);\n addRecord = segmentCollection.addRecord;\n cleanupTasks.push(segmentCollection.stop);\n } else {\n ;\n addRecord = startRecordBridge(viewContexts).addRecord;\n }\n var stopRecording = record({\n emit: addRecord,\n configuration: configuration,\n lifeCycle: lifeCycle,\n viewContexts: viewContexts\n }).stop;\n cleanupTasks.push(stopRecording);\n return {\n stop: function () {\n cleanupTasks.forEach(function (task) {\n return task();\n });\n }\n };\n}\n//# sourceMappingURL=startRecording.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRecordBridge(viewContexts) {\n var bridge = getEventBridge();\n return {\n addRecord: function (record) {\n // Get the current active view, not at the time of the record, aligning with the segment logic.\n // This approach could potentially associate the record to an incorrect view, in case the record date is in the past (e.g. frustration records).\n // However the risk is minimal. We could address the issue when potential negative impact are identified.\n var view = viewContexts.findView();\n bridge.send('record', record, view.id);\n }\n };\n}\n//# sourceMappingURL=startRecordBridge.js.map","import { addTelemetryUsage, timeStampToClocks, isExperimentalFeatureEnabled, ExperimentalFeature, assign, createContextManager, deepClone, makePublicApi, monitor, clocksNow, callMonitored, createHandlingStack, checkUser, sanitizeUser, sanitize, createIdentityEncoder, createCustomerDataTrackerManager, storeContextManager, displayAlreadyInitializedError, createTrackingConsentState } from '@datadog/browser-core';\nimport { buildCommonContext } from '../domain/contexts/commonContext';\nimport { createPreStartStrategy } from './preStartRum';\nvar RUM_STORAGE_KEY = 'rum';\nexport function makeRumPublicApi(startRumImpl, recorderApi, options) {\n if (options === void 0) {\n options = {};\n }\n var customerDataTrackerManager = createCustomerDataTrackerManager(0 /* CustomerDataCompressionStatus.Unknown */);\n var globalContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(2 /* CustomerDataType.GlobalContext */));\n var userContextManager = createContextManager(customerDataTrackerManager.getOrCreateTracker(1 /* CustomerDataType.User */));\n var trackingConsentState = createTrackingConsentState();\n function getCommonContext() {\n return buildCommonContext(globalContextManager, userContextManager, recorderApi);\n }\n var strategy = createPreStartStrategy(options, getCommonContext, trackingConsentState, function (initConfiguration, configuration, deflateWorker, initialViewOptions) {\n if (isExperimentalFeatureEnabled(ExperimentalFeature.CUSTOM_VITALS)) {\n /**\n * Start a custom duration vital\n * stored in @vital.custom.<name>\n *\n * @param name name of the custom vital\n * @param options.context custom context attached to the vital\n * @param options.startTime epoch timestamp of the start of the custom vital (if not set, will use current time)\n */\n ;\n rumPublicApi.startDurationVital = monitor(function (name, options) {\n strategy.startDurationVital({\n name: sanitize(name),\n startClocks: (options === null || options === void 0 ? void 0 : options.startTime) ? timeStampToClocks(options.startTime) : clocksNow(),\n context: sanitize(options === null || options === void 0 ? void 0 : options.context)\n });\n });\n rumPublicApi.stopDurationVital = monitor(function (name, options) {\n strategy.stopDurationVital({\n name: sanitize(name),\n stopClocks: (options === null || options === void 0 ? void 0 : options.stopTime) ? timeStampToClocks(options.stopTime) : clocksNow(),\n context: sanitize(options === null || options === void 0 ? void 0 : options.context)\n });\n });\n }\n if (initConfiguration.storeContextsAcrossPages) {\n storeContextManager(configuration, globalContextManager, RUM_STORAGE_KEY, 2 /* CustomerDataType.GlobalContext */);\n storeContextManager(configuration, userContextManager, RUM_STORAGE_KEY, 1 /* CustomerDataType.User */);\n }\n customerDataTrackerManager.setCompressionStatus(deflateWorker ? 1 /* CustomerDataCompressionStatus.Enabled */ : 2 /* CustomerDataCompressionStatus.Disabled */);\n var startRumResult = startRumImpl(initConfiguration, configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, deflateWorker && options.createDeflateEncoder ? function (streamId) {\n return options.createDeflateEncoder(configuration, deflateWorker, streamId);\n } : createIdentityEncoder, trackingConsentState);\n recorderApi.onRumStart(startRumResult.lifeCycle, configuration, startRumResult.session, startRumResult.viewContexts, deflateWorker);\n strategy = createPostStartStrategy(initConfiguration, startRumResult);\n return startRumResult;\n });\n var startView = monitor(function (options) {\n var sanitizedOptions = typeof options === 'object' ? options : {\n name: options\n };\n strategy.startView(sanitizedOptions);\n });\n var rumPublicApi = makePublicApi({\n init: monitor(function (initConfiguration) {\n return strategy.init(initConfiguration);\n }),\n /**\n * Set the tracking consent of the current user.\n *\n * @param {\"granted\" | \"not-granted\"} trackingConsent The user tracking consent\n *\n * Data will be sent only if it is set to \"granted\". This value won't be stored by the library\n * across page loads: you will need to call this method or set the appropriate `trackingConsent`\n * field in the init() method at each page load.\n *\n * If this method is called before the init() method, the provided value will take precedence\n * over the one provided as initialization parameter.\n */\n setTrackingConsent: monitor(function (trackingConsent) {\n trackingConsentState.update(trackingConsent);\n addTelemetryUsage({\n feature: 'set-tracking-consent',\n tracking_consent: trackingConsent\n });\n }),\n setGlobalContextProperty: monitor(function (key, value) {\n return globalContextManager.setContextProperty(key, value);\n }),\n removeGlobalContextProperty: monitor(function (key) {\n return globalContextManager.removeContextProperty(key);\n }),\n getGlobalContext: monitor(function () {\n return globalContextManager.getContext();\n }),\n setGlobalContext: monitor(function (context) {\n return globalContextManager.setContext(context);\n }),\n clearGlobalContext: monitor(function () {\n return globalContextManager.clearContext();\n }),\n getInternalContext: monitor(function (startTime) {\n return strategy.getInternalContext(startTime);\n }),\n getInitConfiguration: monitor(function () {\n return deepClone(strategy.initConfiguration);\n }),\n addAction: monitor(function (name, context) {\n strategy.addAction({\n name: sanitize(name),\n context: sanitize(context),\n startClocks: clocksNow(),\n type: \"custom\" /* ActionType.CUSTOM */\n });\n }),\n addError: function (error, context) {\n var handlingStack = createHandlingStack();\n callMonitored(function () {\n strategy.addError({\n error: error,\n // Do not sanitize error here, it is needed unserialized by computeRawError()\n handlingStack: handlingStack,\n context: sanitize(context),\n startClocks: clocksNow()\n });\n });\n },\n /**\n * Add a custom timing relative to the start of the current view,\n * stored in `@view.custom_timings.<timing_name>`\n *\n * @param name Name of the custom timing\n * @param [time] Epoch timestamp of the custom timing (if not set, will use current time)\n *\n * Note: passing a relative time is discouraged since it is actually used as-is but displayed relative to the view start.\n * We currently don't provide a way to retrieve the view start time, so it can be challenging to provide a timing relative to the view start.\n * see https://github.com/DataDog/browser-sdk/issues/2552\n */\n addTiming: monitor(function (name, time) {\n // TODO: next major decide to drop relative time support or update its behaviour\n strategy.addTiming(sanitize(name), time);\n }),\n setUser: monitor(function (newUser) {\n if (checkUser(newUser)) {\n userContextManager.setContext(sanitizeUser(newUser));\n }\n }),\n getUser: monitor(function () {\n return userContextManager.getContext();\n }),\n setUserProperty: monitor(function (key, property) {\n var _a;\n var sanitizedProperty = sanitizeUser((_a = {}, _a[key] = property, _a))[key];\n userContextManager.setContextProperty(key, sanitizedProperty);\n }),\n removeUserProperty: monitor(function (key) {\n return userContextManager.removeContextProperty(key);\n }),\n clearUser: monitor(function () {\n return userContextManager.clearContext();\n }),\n startView: startView,\n stopSession: monitor(function () {\n strategy.stopSession();\n addTelemetryUsage({\n feature: 'stop-session'\n });\n }),\n /**\n * Add a feature flag evaluation,\n * stored in `@feature_flags.<feature_flag_key>`\n *\n * @param {string} key The key of the feature flag.\n * @param {any} value The value of the feature flag.\n *\n * We recommend enabling the intake request compression when using feature flags `compressIntakeRequests: true`.\n * For more information see the full [feature flag tracking guide](https://docs.datadoghq.com/real_user_monitoring/feature_flag_tracking/).\n */\n addFeatureFlagEvaluation: monitor(function (key, value) {\n strategy.addFeatureFlagEvaluation(sanitize(key), sanitize(value));\n }),\n getSessionReplayLink: monitor(function () {\n return recorderApi.getSessionReplayLink();\n }),\n startSessionReplayRecording: monitor(function () {\n recorderApi.start();\n addTelemetryUsage({\n feature: 'start-session-replay-recording'\n });\n }),\n stopSessionReplayRecording: monitor(function () {\n return recorderApi.stop();\n })\n });\n return rumPublicApi;\n}\nfunction createPostStartStrategy(initConfiguration, startRumResult) {\n return assign({\n init: function (initConfiguration) {\n displayAlreadyInitializedError('DD_RUM', initConfiguration);\n },\n initConfiguration: initConfiguration\n }, startRumResult);\n}\n//# sourceMappingURL=rumPublicApi.js.map","export function buildCommonContext(globalContextManager, userContextManager, recorderApi) {\n return {\n context: globalContextManager.getContext(),\n user: userContextManager.getContext(),\n hasReplay: recorderApi.isRecording() ? true : undefined\n };\n}\n//# sourceMappingURL=commonContext.js.map","import { catchUserErrors } from '../tools/catchUserErrors';\nimport { setDebugMode } from '../tools/monitor';\nimport { assign } from '../tools/utils/polyfills';\nexport function makePublicApi(stub) {\n var publicApi = assign({\n version: \"5.17.1\",\n // This API method is intentionally not monitored, since the only thing executed is the\n // user-provided 'callback'. All SDK usages executed in the callback should be monitored, and\n // we don't want to interfere with the user uncaught exceptions.\n onReady: function (callback) {\n callback();\n }\n }, stub);\n // Add a \"hidden\" property to set debug mode. We define it that way to hide it\n // as much as possible but of course it's not a real protection.\n Object.defineProperty(publicApi, '_setDebug', {\n get: function () {\n return setDebugMode;\n },\n enumerable: false\n });\n return publicApi;\n}\nexport function defineGlobal(global, name, api) {\n var existingGlobalVariable = global[name];\n global[name] = api;\n if (existingGlobalVariable && existingGlobalVariable.q) {\n existingGlobalVariable.q.forEach(function (fn) {\n return catchUserErrors(fn, 'onReady callback threw an error:')();\n });\n }\n}\n//# sourceMappingURL=init.js.map","import { sendToExtension, createPageExitObservable, addTelemetryConfiguration, startTelemetry, canUseEventBridge, getEventBridge, addTelemetryDebug } from '@datadog/browser-core';\nimport { createDOMMutationObservable } from '../browser/domMutationObservable';\nimport { startPerformanceCollection } from '../browser/performanceCollection';\nimport { startRumAssembly } from '../domain/assembly';\nimport { startInternalContext } from '../domain/contexts/internalContext';\nimport { LifeCycle } from '../domain/lifeCycle';\nimport { startViewContexts } from '../domain/contexts/viewContexts';\nimport { startRequestCollection } from '../domain/requestCollection';\nimport { startActionCollection } from '../domain/action/actionCollection';\nimport { startErrorCollection } from '../domain/error/errorCollection';\nimport { startLongTaskCollection } from '../domain/longTask/longTaskCollection';\nimport { startResourceCollection } from '../domain/resource/resourceCollection';\nimport { startViewCollection } from '../domain/view/viewCollection';\nimport { startRumSessionManager, startRumSessionManagerStub } from '../domain/rumSessionManager';\nimport { startRumBatch } from '../transport/startRumBatch';\nimport { startRumEventBridge } from '../transport/startRumEventBridge';\nimport { startUrlContexts } from '../domain/contexts/urlContexts';\nimport { createLocationChangeObservable } from '../browser/locationChangeObservable';\nimport { serializeRumConfiguration } from '../domain/configuration';\nimport { startFeatureFlagContexts } from '../domain/contexts/featureFlagContext';\nimport { startCustomerDataTelemetry } from '../domain/startCustomerDataTelemetry';\nimport { startPageStateHistory } from '../domain/contexts/pageStateHistory';\nimport { startDisplayContext } from '../domain/contexts/displayContext';\nimport { startVitalCollection } from '../domain/vital/vitalCollection';\nimport { startCiVisibilityContext } from '../domain/contexts/ciVisibilityContext';\nexport function startRum(initConfiguration, configuration, recorderApi, customerDataTrackerManager, getCommonContext, initialViewOptions, createEncoder,\n// `startRum` and its subcomponents assume tracking consent is granted initially and starts\n// collecting logs unconditionally. As such, `startRum` should be called with a\n// `trackingConsentState` set to \"granted\".\ntrackingConsentState) {\n var cleanupTasks = [];\n var lifeCycle = new LifeCycle();\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (event) {\n return sendToExtension('rum', event);\n });\n var telemetry = startRumTelemetry(configuration);\n telemetry.setContextProvider(function () {\n var _a, _b;\n return {\n application: {\n id: configuration.applicationId\n },\n session: {\n id: (_a = session.findTrackedSession()) === null || _a === void 0 ? void 0 : _a.id\n },\n view: {\n id: (_b = viewContexts.findView()) === null || _b === void 0 ? void 0 : _b.id\n },\n action: {\n id: actionContexts.findActionId()\n }\n };\n });\n var reportError = function (error) {\n lifeCycle.notify(14 /* LifeCycleEventType.RAW_ERROR_COLLECTED */, {\n error: error\n });\n addTelemetryDebug('Error reported to customer', {\n 'error.message': error.message\n });\n };\n var featureFlagContexts = startFeatureFlagContexts(lifeCycle, customerDataTrackerManager.getOrCreateTracker(0 /* CustomerDataType.FeatureFlag */));\n var pageExitObservable = createPageExitObservable(configuration);\n var pageExitSubscription = pageExitObservable.subscribe(function (event) {\n lifeCycle.notify(11 /* LifeCycleEventType.PAGE_EXITED */, event);\n });\n cleanupTasks.push(function () {\n return pageExitSubscription.unsubscribe();\n });\n var session = !canUseEventBridge() ? startRumSessionManager(configuration, lifeCycle, trackingConsentState) : startRumSessionManagerStub();\n if (!canUseEventBridge()) {\n var batch_1 = startRumBatch(configuration, lifeCycle, telemetry.observable, reportError, pageExitObservable, session.expireObservable, createEncoder);\n cleanupTasks.push(function () {\n return batch_1.stop();\n });\n startCustomerDataTelemetry(configuration, telemetry, lifeCycle, customerDataTrackerManager, batch_1.flushObservable);\n } else {\n startRumEventBridge(lifeCycle);\n }\n var domMutationObservable = createDOMMutationObservable();\n var locationChangeObservable = createLocationChangeObservable(configuration, location);\n var _a = startRumEventCollection(lifeCycle, configuration, location, session, locationChangeObservable, domMutationObservable, getCommonContext, reportError),\n viewContexts = _a.viewContexts,\n pageStateHistory = _a.pageStateHistory,\n urlContexts = _a.urlContexts,\n actionContexts = _a.actionContexts,\n addAction = _a.addAction,\n stopRumEventCollection = _a.stop;\n cleanupTasks.push(stopRumEventCollection);\n addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));\n startLongTaskCollection(lifeCycle, configuration, session);\n startResourceCollection(lifeCycle, configuration, session, pageStateHistory);\n var _b = startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, featureFlagContexts, pageStateHistory, recorderApi, initialViewOptions),\n addTiming = _b.addTiming,\n startView = _b.startView,\n stopViewCollection = _b.stop;\n cleanupTasks.push(stopViewCollection);\n var addError = startErrorCollection(lifeCycle, configuration, pageStateHistory, featureFlagContexts).addError;\n startRequestCollection(lifeCycle, configuration, session);\n var stopPerformanceCollection = startPerformanceCollection(lifeCycle, configuration).stop;\n cleanupTasks.push(stopPerformanceCollection);\n var vitalCollection = startVitalCollection(lifeCycle, pageStateHistory);\n var internalContext = startInternalContext(configuration.applicationId, session, viewContexts, actionContexts, urlContexts);\n return {\n addAction: addAction,\n addError: addError,\n addTiming: addTiming,\n addFeatureFlagEvaluation: featureFlagContexts.addFeatureFlagEvaluation,\n startView: startView,\n lifeCycle: lifeCycle,\n viewContexts: viewContexts,\n session: session,\n stopSession: function () {\n return session.expire();\n },\n getInternalContext: internalContext.get,\n startDurationVital: vitalCollection.startDurationVital,\n stopDurationVital: vitalCollection.stopDurationVital,\n stop: function () {\n cleanupTasks.forEach(function (task) {\n return task();\n });\n }\n };\n}\nfunction startRumTelemetry(configuration) {\n var telemetry = startTelemetry(\"browser-rum-sdk\" /* TelemetryService.RUM */, configuration);\n if (canUseEventBridge()) {\n var bridge_1 = getEventBridge();\n telemetry.observable.subscribe(function (event) {\n return bridge_1.send('internal_telemetry', event);\n });\n }\n return telemetry;\n}\nexport function startRumEventCollection(lifeCycle, configuration, location, sessionManager, locationChangeObservable, domMutationObservable, getCommonContext, reportError) {\n var viewContexts = startViewContexts(lifeCycle);\n var urlContexts = startUrlContexts(lifeCycle, locationChangeObservable, location);\n var pageStateHistory = startPageStateHistory(configuration);\n var _a = startActionCollection(lifeCycle, domMutationObservable, configuration, pageStateHistory),\n addAction = _a.addAction,\n actionContexts = _a.actionContexts;\n var displayContext = startDisplayContext(configuration);\n var ciVisibilityContext = startCiVisibilityContext(configuration);\n startRumAssembly(configuration, lifeCycle, sessionManager, viewContexts, urlContexts, actionContexts, displayContext, ciVisibilityContext, getCommonContext, reportError);\n return {\n viewContexts: viewContexts,\n pageStateHistory: pageStateHistory,\n urlContexts: urlContexts,\n addAction: addAction,\n actionContexts: actionContexts,\n stop: function () {\n ciVisibilityContext.stop();\n displayContext.stop();\n pageStateHistory.stop();\n urlContexts.stop();\n viewContexts.stop();\n pageStateHistory.stop();\n }\n };\n}\n//# sourceMappingURL=startRum.js.map","import { getEventBridge } from '@datadog/browser-core';\nexport function startRumEventBridge(lifeCycle) {\n var bridge = getEventBridge();\n lifeCycle.subscribe(13 /* LifeCycleEventType.RUM_EVENT_COLLECTED */, function (serverRumEvent) {\n bridge.send('rum', serverRumEvent);\n });\n}\n//# sourceMappingURL=startRumEventBridge.js.map","import { getViewportDimension, initViewportObservable } from '../../browser/viewportObservable';\nexport function startDisplayContext(configuration) {\n var viewport = getViewportDimension();\n var unsubscribeViewport = initViewportObservable(configuration).subscribe(function (viewportDimension) {\n viewport = viewportDimension;\n }).unsubscribe;\n return {\n get: function () {\n return {\n viewport: viewport\n };\n },\n stop: unsubscribeViewport\n };\n}\n//# sourceMappingURL=displayContext.js.map","import { toServerDuration, relativeToClocks, generateUUID } from '@datadog/browser-core';\nimport { RumPerformanceEntryType } from '../../browser/performanceCollection';\nexport function startLongTaskCollection(lifeCycle, configuration, sessionManager) {\n lifeCycle.subscribe(0 /* LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.entryType !== RumPerformanceEntryType.LONG_TASK) {\n break;\n }\n var session = sessionManager.findTrackedSession(entry.startTime);\n if (!session || !configuration.trackLongTasks) {\n break;\n }\n var startClocks = relativeToClocks(entry.startTime);\n var rawRumEvent = {\n date: startClocks.timeStamp,\n long_task: {\n id: generateUUID(),\n duration: toServerDuration(entry.duration)\n },\n type: \"long_task\" /* RumEventType.LONG_TASK */,\n _dd: {\n discarded: false\n }\n };\n lifeCycle.notify(12 /* LifeCycleEventType.RAW_RUM_EVENT_COLLECTED */, {\n rawRumEvent: rawRumEvent,\n startTime: startClocks.relative,\n domainContext: {\n performanceEntry: entry\n }\n });\n }\n });\n}\n//# sourceMappingURL=longTaskCollection.js.map","/**\n * Internal context keep returning v1 format\n * to not break compatibility with logs data format\n */\nexport function startInternalContext(applicationId, sessionManager, viewContexts, actionContexts, urlContexts) {\n return {\n get: function (startTime) {\n var viewContext = viewContexts.findView(startTime);\n var urlContext = urlContexts.findUrl(startTime);\n var session = sessionManager.findTrackedSession(startTime);\n if (session && viewContext && urlContext) {\n var actionId = actionContexts.findActionId(startTime);\n return {\n application_id: applicationId,\n session_id: session.id,\n user_action: actionId ? {\n id: actionId\n } : undefined,\n view: {\n id: viewContext.id,\n name: viewContext.name,\n referrer: urlContext.referrer,\n url: urlContext.url\n }\n };\n }\n }\n };\n}\n//# sourceMappingURL=internalContext.js.map","import { UserMetadata, AuthUser } from '@acin/user-accounts';\nimport { analytics } from '../analytics';\n\ndeclare global {\n interface Window {\n pendo: any;\n }\n}\n\n/**\n * Pendo Initialization (Additional Docs here: https://developers.pendo.io/docs/?bash#functions)\n * @param user - (required) AuthUser\n * @param userMetadata - (required) UserMetadata\n */\nexport const initialisePendo = (user: AuthUser, userMetadata: UserMetadata) => {\n window.pendo = window.pendo || {};\n window.pendo.initialize &&\n window.pendo.initialize({\n visitor: {\n id: user.sub,\n email: user.email,\n },\n account: {\n id: userMetadata?.account?.code,\n },\n annotateUrl: () => {\n return analytics.getAnalyticsUrl();\n },\n });\n};\n","import { UserMetadata, AuthUser } from '@acin/user-accounts';\nimport { trackPendoEvent } from '@acin/ui-core';\nimport { clearSavedFilters } from '@acin/filters';\nimport { datadogRum } from '@datadog/browser-rum';\nimport { initialisePendo } from '../helpers/pendo';\n\nexport const onAuthenticated = (user: AuthUser, userMetadata: UserMetadata) => {\n initialisePendo(user, userMetadata);\n trackPendoEvent('Screen Size', {\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n });\n datadogRum.setUser({\n id: user.sub,\n email: user.email,\n name: user.name,\n });\n};\n\nexport const onLogout = () => {\n clearSavedFilters();\n};\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ApolloProvider } from '@apollo/client';\nimport { Core, Toaster } from '@acin/ui-core';\nimport { Inspector, InspectorProvider } from '@acin/inspector';\nimport { RenderContentConfig } from '@acin/inspector/src/components/Inspector/components/InspectorContent';\nimport { ControlInsight, ControlRewriteProvider } from '@acin/acin-terminal-risks-and-controls';\nimport { DownloadProvider, Download } from '@acin/download';\nimport createAuth0Client from '@auth0/auth0-spa-js';\n\n// You can use this mock create auth0 client below, to skip communucations with Auth0,\n// It will log the user in using the 'REACT_APP_MOCK_AUTH_TOKEN' value in the .env file.\n// import { createAuth0Client } from './testHelpers/MockAuth0Client';\n\nimport { AuthProvider } from '@acin/user-accounts';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport { getClient } from './config/apollo';\n\nimport { config, ORIGIN_URL_KEY } from './config/auth0';\nimport { onAuthenticated, onLogout } from './Auth';\nimport { datadogInit } from './datadog';\n\nconst renderContent = (config: RenderContentConfig) => {\n const { typename, data, inspect } = config;\n if (typename === 'ControlInspectorView' && data.content && inspect) {\n return {\n title: 'Control Insight',\n content: <ControlInsight id={inspect.id} data={data.content} />,\n };\n }\n\n return {\n title: 'Error',\n content: <>Unsupported type</>,\n };\n};\ncreateAuth0Client(config).then((auth0) => {\n const renderApp = async () => {\n datadogInit();\n const client = await getClient(auth0);\n\n ReactDOM.render(\n <ApolloProvider client={client}>\n <Core>\n <AuthProvider\n originUrlKey={ORIGIN_URL_KEY}\n authClient={auth0}\n onAuthenticated={onAuthenticated}\n onLogout={onLogout}\n >\n <InspectorProvider>\n <DownloadProvider>\n <ControlRewriteProvider>\n <Inspector renderContent={renderContent} />\n <Toaster />\n <Download />\n <App />\n </ControlRewriteProvider>\n </DownloadProvider>\n </InspectorProvider>\n </AuthProvider>\n </Core>\n </ApolloProvider>,\n document.getElementById('root'),\n );\n };\n\n renderApp();\n});\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { datadogRum } from '@datadog/browser-rum';\n\nexport function datadogInit() {\n if (\n process?.env?.REACT_APP_DATADOG_APPLICATION_ID &&\n process?.env?.REACT_APP_DATADOG_CLIENT_TOKEN &&\n process?.env?.REACT_APP_BUILD_ENV &&\n // initialise datadog only for 'int' and 'prod'\n ['int', 'prod'].includes(process?.env?.REACT_APP_BUILD_ENV)\n ) {\n datadogRum.init({\n applicationId: process.env.REACT_APP_DATADOG_APPLICATION_ID,\n clientToken: process.env.REACT_APP_DATADOG_CLIENT_TOKEN,\n site: 'datadoghq.eu',\n service: 'acin-terminal',\n env: process.env.REACT_APP_BUILD_ENV,\n version: '1.0.0',\n sessionSampleRate: 100,\n sessionReplaySampleRate: 100,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: 'mask-user-input',\n });\n }\n}\n","import { ApolloClient, InMemoryCache, ApolloLink, HttpLink } from '@apollo/client';\nimport { onError } from '@apollo/client/link/error';\nimport { setContext } from '@apollo/client/link/context';\n// import { persistCache } from 'apollo3-cache-persist';\nimport { inflate } from 'graphql-deduplicator';\nimport { Auth0Client } from '@auth0/auth0-spa-js';\nimport { typePolicies } from '@acin/data-matching';\nimport { typePolicies as riskIntelTypePolicies } from '@acin/risk-intel';\nimport { typePolicies as riskAndControlsTypePolicies } from '@acin/acin-terminal-risks-and-controls';\n\nimport introspectionResult from '../graphql/introspection-result.json';\n\nexport const getClient = async (auth0Client: Auth0Client) => {\n // Get the API URL from the env vars\n const API = process.env.REACT_APP_API_URL;\n\n // Define the GraphQL API endpoint\n const httpLink = new HttpLink({ uri: API });\n\n /* Set in-memory token to reduce async requests */\n let token: string;\n\n // Handle errors\n const errorLink = onError(({ graphQLErrors, networkError }) => {\n if (graphQLErrors)\n graphQLErrors.map(({ message, locations, path }) =>\n console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`),\n );\n if (networkError) console.log(`[Network error]: ${networkError}`);\n });\n\n // This function will lookup and return the bearer token for the\n // next bit of context to add it to the headers\n // @TODO apply this logic\n const withTokenLink = setContext(async () => {\n if (token) return { bearerToken: token };\n\n const bearerToken = await auth0Client.getTokenSilently();\n token = bearerToken;\n // get token from somewhere, and return the context here\n return { bearerToken };\n });\n\n // Apollo link to add the bearer token to the headers\n const authLink = setContext((_, { headers, bearerToken }) => {\n return {\n headers: {\n ...headers,\n ...(bearerToken ? { Authorization: `Bearer ${bearerToken}` } : {}),\n },\n };\n });\n\n const inflateLink = new ApolloLink((operation, forward) => {\n return forward(operation).map((response) => {\n return inflate(response);\n });\n });\n\n /* Create Apollo Link array to pass to Apollo Client */\n const link = ApolloLink.from([withTokenLink, authLink, errorLink, inflateLink, httpLink]);\n\n // Define the in memory cache\n const cache = new InMemoryCache({\n ...introspectionResult,\n typePolicies: {\n ...typePolicies,\n ...riskIntelTypePolicies,\n ...riskAndControlsTypePolicies,\n },\n });\n\n // Setup apollo client with the link and cache\n const client = new ApolloClient({\n link,\n cache,\n });\n\n // Need to disable cache? Commenting out persistCache below\n // Persist the cache to local storage\n // await persistCache({ cache, storage: window.localStorage });\n\n return client;\n};\n"],"names":["analytics","constructor","urlMap","this","Map","setUrl","route","title","params","comps","snakeCase","set","window","location","pathname","getObject","join","page","arguments","length","undefined","getAnalyticsUrl","get","getMenuItems","accountCode","permissions","reportCategories","items","menu","id","USER_ROLES","ACIN_USER","CUSTOMER_USER","DATA_USER","SUPER_ADMIN","label","concat","slice","RISK_INTEL_USER","filter","item","_item$permissions","some","itemPermissions","includes","map","secondLevelNavigation","qualityToolsNavigationMap","routingMap","reverseRoutingMap","getPathById","IPageCode","IUiTheme","Percent","percent","_value","Object","defineProperty","prototype","enumerable","configurable","toString","value","Number","getType","call","castString","Error","toBoolean","toNumber","hasValue","isNumber","converted","isString","replace","toText","isObject","toNumberOrPercent","isPercent","indexOf","a","getValue","getValueDefault","defaultValue","isDate","isArray","Array","PI","Math","HALFPI","RADIANS","DEGREES","toNumberRange","min","max","fitToRange","round","precision","floor","rounded","d","pow","ceil","minValue","maxValue","temp","sin","tan","cos","left","right","intersect","range1","range2","start1","start","start2","end1","end","end2","invertRange","range","getDistance","point1","point2","x","y","sqrt","abs","getCubicCurveDistance","controlPointA","controlPointB","stepCount","distance","prevPoint","s","point","getPointOnCubicCurve","getScale","startPoint1","startPoint2","initialDistance","currentDistance","getMidPoint","position","getAngle","diffX","diffY","angle","atan2","normalizeAngle","getBBox","points","length_1","top_1","bottom","i","width","height","getCommonRectangle","rectangles","minX","minY","maxX","maxY","rectangle","getPointOnQuadraticCurve","pointA","pointB","controlPoint","mt1","mt2","mt3","getCubicControlPointA","p0","p1","p2","p3","tensionX","tensionY","adjustTension","getCubicControlPointB","tension","fitAngleToRange","startAngle","endAngle","count","getArcRect","radius","MAX_VALUE","bpoints","push","getArcPoint","fromAngle","toAngle","pt","arc","isInRectangle","array","any","test","fn","output","each","eachContinue","remove","element","found","index","splice","move","toIndex","removeIndex","insertIndex","add","unshift","toArray","input","copy","getSortedIndex","ordering","pivot","order","findIndex","matches","keepIf","keep","Disposer","dispose","_disposed","_dispose","isDisposed","MultiDisposer","_super","disposers","MutableValueDisposer","_this","_disposer","disposer","reset","CounterDisposer","apply","_counter","increment","pendingFrame","nextQueue","readQueue","writeQueue","idleQueue","fps","raf","requestAnimationFrame","setTimeout","frameLoop","now","Date","pendFrame","writeFrame","EventDispatcher","_listeners","_killed","_disabled","_iterating","_enabled","hasListeners","hasListenersByType","type","killed","enable","disable","enableType","disableType","amount","Infinity","_removeListener","listener","_removeExistingListener","once","callback","context","_eachListener","info","isEnabled","has","_shouldDispatch","dispatchImmediately","event","dispatch","_on","shouldClone","onAll","on","off","copyFrom","source","TargetedEventDispatcher","target","keys","object","key","hasKey","hasOwnProperty","eachOrdered","ord","sort","keysOrdered","merge","object1","object2","assign","copyProperties","copyAllProperties","from","to","fromArray","iter","indexed","contains","ListIterator","list","create","createNewItems","_create","_listCopy","iterator","clear","getFirst","returnItem","getLast","find","removeItem","b","repeat","string","DictionaryDisposer","dict","events","oldValue","Dictionary","_dictionary","getKey","insertKey","newValue","setKey","updateKey","removeKey","insertKeyIfEmpty","ifEmpty","Symbol","_a","_b","_i","_c","sent","f","sortedIterator","DictionaryTemplate","t","template","_template","v","isTemplate","clone","cache","Cache","_storage","ttl","owner","ownerStorage","getTime","cacheItem","touched","expired","Registry","themes","loadedThemes","_uidCount","registeredClasses","_placeholders","invalidSprites","invalidDatas","invalidRawDatas","invalidDataItems","invalidDataRange","invalidPositions","invalidLayouts","baseSprites","baseSpritesByUid","queue","deferred","uid","getUniqueId","noBase","addEventListener","sprite","svg","paper","setAttribute","clientWidth","clientHeight","removeAttribute","_map","setCache","getCache","eventType","data","getPlaceholder","chars","res","choice","charAt","random","addToInvalidComponents","component","baseId","removeFromInvalidComponents","addToInvalidSprites","removeFromInvalidSprites","addToInvalidPositions","removeFromInvalidPositions","addToInvalidLayouts","removeFromInvalidLayouts","is","name","IndexedIterable","_array","_start","_end","backwards","diff","ListDisposer","ListGrouper","_getKey","_insert","_remove","_keys","_groups","_sort","index_1","values","go","push2","disposeOnRemove","disposer_1","checkBounds","len","List","initial","_values","removeValue","hasIndex","getIndex","setIndex","_sortQuicksort","low","high","p","_sortPartition","j","swap","value_a","value_b","moveValue","pushAll","pop","shift","setAll","newArray","oldArray","ListTemplate","make","out","OrderedList","insert","findClosestIndex","direction","closestValue","closestDifference","closestIndex","difference","SortedList","_ordering","update","last","OrderedListTemplate","SortedListTemplate","reverse","or","globalAdapter","GlobalAdapter","_callbackId","_callbacks","priority","addAll","scope","applyAll","callbacks","Adapter","c","enableKey","disableKey","_hasListenersByType","val","namedColors","aliceblue","r","g","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color","alpha","rgb","hex","shorthandRegex","m","result","exec","parseInt","hexToRgbWithAlpha","hexToRgb","match","parseFloat","rgbaToRgb","pad2","interpolate","rgb1","rgb2","getLightnessStep","base","hslToRgb","h","l","hue2rgb","q","rgbToHsl","Color","_lightColor","_darkColor","rgba","lighten","brighten","step","saturate","saturation","hsl","darkColor","lightColor","cacheId","cached","toColor","isColor","castColor","BaseObject","_disposers","className","debug","_uid","_id","_delayedMap","addDelayedMap","property","delayedMap","processDelayedMap","target_1","applyTheme","getCurrentThemes","theme","_themes","clearCache","clonedFrom","clones","addDisposer","removeDispose","cloneId","newObject","_clones","_className","delay","clearTimeout","setInterval","config","processConfig","e","raiseCriticalError","configKey","item_1","configValue","hasProperty","asIs","createClassInstance","processAdapters","processEvents","parent_1","asFunction","processListTemplate","processOrderedTemplate","templateValue","entryKey","entryValue","listItem","processDictionaryTemplate","processList","maybeColorOrPercent","processDictionary","isReserved","configOrder","processingErrors","errors","_processingErrors","entry","getConfigEntryType","parent","itemCount","extraCount","createEntryInstance","field","prop","BaseObjectEvents","_eventDispatcher","STRING","NUMBER","DATE","DURATION","PLACEHOLDER","PLACEHOLDER2","stripHash","url","getBaseURI","navigator","vendor","baseURI","document","loc","href","isNotEmpty","relativeToValue","full","relativeRadiusToValue","subtractIfNegative","capitalize","str","arr","split","toUpperCase","stringify","JSON","escapeForRgex","splitTextByCharCount","text","maxChars","fullWords","rtl","fullWordFallback","currentIndex","words","word","wordLength","reverseString","parts","RegExp","truncateWithEllipsis","ellipsis","trim","rtrim","padString","char","cleanFormat","format","stripTags","plainText","anyToDate","date","setMilliseconds","getMilliseconds","num","anyToNumber","getYearDay","utc","getFullYear","getTimezoneOffset","getWeek","day","week","getDay","getMonthWeek","firstWeek","getMonth","currentWeek","get12Hours","hours","getTimeZone","long","savings","wotz","toLocaleString","wtz","timeZoneName","substr","fitNumber","fitNumberRelative","gap","svgPointToSprite","sprites","sprite_1","rotation","relativeX","pixelX","ex","relativeY","pixelY","ey","dx","dy","scale","group","pixelPaddingLeft","pixelPaddingTop","spritePointToSvg","spritePointToSprite","toSprite","spriteRectToSvg","rect","documentPointToSvg","svgContainer","cssScale","bbox","getBoundingClientRect","top","svgPointToDocument","documentPointToSprite","htmlContainer","spritePointToDocument","urlRegexp","parseUrl","protocol","separator","authority","domain","port","path","query","hash","serializeUrl","isRelativeUrl","joinUrl","parsedLeft","parsedRight","leftPath","rightPath","isIE","MSInputMethodContext","documentMode","linear","polyIn","polyOut","polyInOut","polyOut3","sinOut","cubicIn","cubicOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounceOut","tau","period","asin","SpriteState","transitionDuration","transitionEasing","properties","propertyFields","filters","_adapterO","ev","getPropertyValue","propertyName","propValue","fieldName","dataItem","dataContext","spriteValue","adapter","_x","SpriteEventDispatcher","_interactionEvents","_dispatchSpriteEvent","disabled","imev","_dispatchSpritePointEvent","spritePoint","svgPoint","getSvgPoint","_addInteractionObjectEvent","interactions","clickable","togglable","draggable","trackable","resizable","swipeable","wheelable","hoverable","focusable","SVGDefaults","opacity","strokeOpacity","strokeWidth","fillOpacity","fill","stroke","tabindex","verbose","commercialLicense","classNamePrefix","autoSetClassName","minPolylineStep","onlyShowOnViewport","autoDispose","licenses","suppressErrors","suppressWarnings","animationsEnabled","nonce","deferredDelay","disableHoverOnTransform","pixelPerfectPrecision","getProgressNumber","progress","getProgressPercent","getProgressColor","getHybridProperty","rootStylesheet","AnimationDisposer","Animation","animationOptions","duration","easing","_loop","_pause","_delayTimeout","_time","_isFinished","pause","animations","id_1","stopSameAnimations","system","requestFrame","_startTime","staticOptions","options_1","childObject","updateMethod","convertedFrom","isNaN","applyStaticOptions","event_1","loop","resume","setProgress","event_2","stop","kill","isFinished","options","skipEvent","event_3","event_4","timeProgress","animation","delayed","killed_1","newOptions","oldOptions","SVGNS","XMLNS","XLINK","dom","removeEventListener","getElement","el","getElementById","getElementsByClassName","HTMLElement","addClass","classList","currentClassName","getAttribute","removeClass","setStyle","style","currentStyle","defaultView","getComputedStyle","activeElement","body","blur","createElement","appendChild","focus","removeChild","cursor","parentNode","host","getShadowRoot","getRoot","ownerDocument","fixPixelPerfect","left_1","StyleRule","selector","styles","root","head","sheet","getStylesheet","cssRules","_rule","deleteRule","insertRule","appendStylesheet","selectorText","_setVendorPrefixName","setProperty","styleId","StyleClass","findFont","font","parentElement","findFontSize","parent_2","isElementInViewport","viewportTarget","targets","viewportRect","innerHeight","documentElement","innerWidth","AMElement","_isDisposed","_y","_rotationY","_rotationX","_rotation","_scale","node","createElementNS","removeNode","_transformString","transform","transfromString","rotateString","svgbbox","err","moveTo","innerHTML","textContent","removeAttr","attribute","attr","attributes","attributeName","attributeValue","getAttr","attrNS","ns","setAttributeNS","getAttrNS","getAttributeNS","removeStyle","getStyle","addStyle","setClass","removeChildNodes","childNodes","firstChild","Group","elementName","addToBack","first","insertBefore","removeElement","hasChild","removeChildren","childNode","InterfaceColorSet","_purposes","primaryButton","primaryButtonHover","primaryButtonDown","primaryButtonActive","primaryButtonText","primaryButtonStroke","secondaryButton","secondaryButtonHover","secondaryButtonDown","secondaryButtonActive","secondaryButtonText","secondaryButtonStroke","grid","background","alternativeBackground","alternativeText","disabledBackground","positive","negative","getFor","purpose","setFor","rules","InteractionObjectEventDispatcher","_domEvents","_addDOMEvent","callback_1","_dispatchKeyboardEvent","InteractionObject","eventDisposers","replacedStyles","_clickable","_contextMenuDisabled","_hoverable","_trackable","_draggable","_swipeable","_resizable","_wheelable","_inert","_isHover","isRealHover","_isHoverByTouch","_isDown","_isFocused","_isTouchProtected","_inertiaOptions","inertias","_hitOptions","_hoverOptions","_swipeOptions","_keyboardOptions","_mouseOptions","_cursorOptions","_element","isHover","getInteraction","overObjects","isHoverByTouch","_overPointers","isDown","downObjects","_downPointers","isFocused","focusedObject","unprepElement","prepElement","processClickable","processContextMenu","processHoverable","processTrackable","processDraggable","processSwipeable","processResizable","processWheelable","_focusable","_tabindex","processFocusable","_originalPosition","_originalScale","_originalAngle","inertiaOptions","hitOptions","hoverOptions","swipeOptions","keyboardOptions","cursorOptions","contextMenuDisabled","applyCursorOverStyle","setEventDisposer","interaction","trackedObjects","transformedObjects","unlockWheel","InteractionKeyboardObject","io","directionX","directionY","keyboardEvent","_startedOn","processDragStart","speed","getKeyboardOption","accelleration","accellerationDelay","shiftKey","ctrlKey","ms","accelleratedMs","accellerationFactor","handleTransformMove","processDragStop","Inertia","startPoint","handleMove","touch","done","keyboard","Keyboard","getEventKey","keyCode","which","isKey","eventKey","altKey","metaKey","timeUnitDurations","millisecond","second","minute","hour","month","year","getNextUnit","unit","getDuration","checkChange","dateOne","dateTwo","timeZoneOffset1","timeZoneOffset2","setUTCMinutes","getUTCMinutes","changed","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCSeconds","nextUnit","timeZoneOffset","setUTCDate","seconds","setUTCSeconds","milliseconds","getUTCMilliseconds","setUTCMilliseconds","setUTCHours","minutes","setUTCFullYear","setUTCMonth","wday","newTimeZoneOffset","firstDateOfWeek","firstDate","roundMinutes","timezone","setTimezone","unitCount","setTime","weekDay","getUTCDay","timeZone","Interaction","_globalEventsAdded","_pointerEvents","_usePointerEventsOnly","_useTouchEventsOnly","_addHoverEvents","_passiveSupported","_delayedEvents","pointers","mouseOptions","pointerdown","pointerup","pointermove","pointercancel","pointerover","pointerout","matchMedia","userAgent","fullFF","wheel","onmousewheel","passiveSupported","addGlobalEvents","handleGlobalPointerDown","handleGlobalPointerMove","handleGlobalPointerUp","relatedTarget","buttons","handleDocumentLeave","handleGlobalTouchStart","handleGlobalTouchMove","handleGlobalTouchEnd","handleGlobalKeyDown","handleGlobalKeyUp","processTouchable","preventDefault","handlePointerOut","handlePointerOver","processMovable","isGlobalElement","isTouchProtected","handleMouseWheel","passive","lockWheel","handleFocus","handleBlur","handleFocusBlur","handleTouchDown","handlePointerDown","isPaused","getHitOption","disposerKey","ko","showTooltipOn","pointer","getPointer","getPointerPoint","addBreadCrumb","handleGlobalMove","processDelayed","preventTouchAction","defaultPrevented","cancelled","handleGlobalUp","changedTouches","button","resetPointer","handleDown","handleOver","handleOut","deltaX","deltaY","mod","deltaMode","getMouseOption","WheelEvent","wheelDeltaX","wheelDeltaY","handleWheel","maybePreventDefault","handleHit","lastHit","lastHitPointer","soft","hoversPaused","shouldCancelHovers","areTransformed","moved","cancelAllHovers","overPointers","handleTrack","force","hasDelayedOut","old","behavior","getHoverOption","keepUntil","timeout","delayedEvent","inert","stopInertia","downPointers","applyCursorDownStyle","processResizeStart","sorted","pos","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_CONTAINS","handleUp","restoreCursorDownStyle","swiped","handleSwipe","handleInertia","processResizeStop","cancelable","lastEvent","composedPath","swiping","handleTransform","skipCheck","handleMoveInertia","handleResizeInertia","inertia","ref","getTrailPoint","getInertiaOption","factor","lastUpEvent","pointer2","pointer1","originalPosition","singlePoint","nextPointer","pointer1Moved","dragStartEvents","pointer2Moved","handleTransformResize","pointerMoved","dragTarget","getDragPointer","dragStart","lastDownEvent","dragStop","getPointerId","identifier","pointerId","clientX","clientY","isPointerTouch","lastPointer","Touch","PointerEvent","pointerType","MouseEvent","startTime","track","swipeCanceled","lockDocument","unlockDocument","restoreAllStyles","lockElement","unlockElement","wheelLockEvent","isLocalElement","doc","elementFromPoint","local","props","setTemporaryStyle","restoreStyle","option","getSwipeOption","overStyle","downStyle","setGlobalStyle","restoreGlobalStyle","tolerance","minTime","getShift","timestamp","pointerExists","exists","log","logTouch","TouchEvent","console","except","Popup","_elements","_IOs","_content","_title","_classPrefix","_defaultStyles","_showCurtain","_align","_dynamicResize","_verticalAlign","_shift","_tempShift","_readerTitle","_closable","_cssLoaded","_fitTo","_sized","open","container","wrapper","curtain","showCurtain","positionElement","close","releasePointers","forceResize","margin","dynamicResize","images","getElementsByTagName","image","complete","_bbox","align","marginLeft","toStyle","verticalAlign","marginTop","setupDragging","header","content","createContentElement","getClassNames","wrapperClass","classPrefix","headerClass","titleClass","contentClass","insideClass","curtainClass","closeClass","classNames","display","disablePointers","visibility","defaultStyles","loadDefaultCSS","createCurtainElement","applyEvents","applyReaderSettings","_left","_right","_top","_bottom","prefix","cs","fg","bg","abg","closable","_spriteInteractionsEnabled","interactionsEnabled","elements","readerTitle","classPrefixRaw","Modal","warn","messages","Native","_targets","_observer","ResizeObserver","entries","addTarget","observe","box","removeTarget","unobserve","Raf","lastTime_1","loop_1","currentTime","newSize","size","_timer","cancelAnimationFrame","observer","ResizeSensor","_sensor","svgContainers","SVGContainer","htmlElement","ghost","autoResize","nonExportableSprites","_printing","initSensor","resizeSensor","measure","paddingX","paddingLeft","paddingRight","borderX","borderLeftWidth","borderRightWidth","paddingY","paddingTop","paddingBottom","borderY","borderTopWidth","borderBottomWidth","maxWidth","maxHeight","checkTransform","_container","overflow","_modal","openModal","closeModal","modal","_popups","popupTemplate","openPopup","popup","popups","closeAllPopups","_readerAlertElement","div","zIndex","readerAlert","readerAlertElement","matrix","Paper","defs","addGroup","groupName","append","appendDef","foreignObject","supportsForeignObject","implementation","hasFeature","ghostPaper","ghostDiv","hidden","ghostSvgContainer","Pattern","patternUnits","interfaceColors","backgroundFill","backgroundOpacity","shapeRendering","draw","patternElement","strokeDasharray","rotationX","rotationY","animate","addElement","_paper","_animations","LinearGradient","_stops","validate","x1","y1","x2","y2","gradientElement","offset","gradientStop","addColor","stops","gradientUnits","RadialGradient","cx","cy","fx","fy","_cx","_cy","_fx","_fy","MouseCursorStyle","grab","grabbing","default","horizontalResize","verticalResize","notAllowed","formatter","Language","_locale","en","_defaultLocale","defaultLocale","locale","getLocale","translate","prompt","rest","translation","getTranslations","translateAny","setTranslationAny","translateEmpty","translateFunc","translateAll","isDefault","translations","TextFormatter","formatted","escape","wrap","texts","unescape","cleanUp","wrapHtml","translateStyleShortcuts","wrapSvg","getSvgElement","styleSvgToHtml","getHtmlElement","chunk","quotedBlocks","noFormatting","chunks","chunks2","i2","chunk2","isImage","getTextFormatter","NumberFormatter","_negativeBase","_numberFormat","_outputFormat","_smallNumberThreshold","_forceLTR","language","_language","toLowerCase","intlLocales","Intl","NumberFormat","parseFormat","details","zero","parse","decimals","active","applyFormat","forceLTR","part","parsed","partFormat","mods","modSpacing","thousands","interval","suffix","a_1","applyPrefix","bytePrefixes","a_2","smallNumberThreshold","smallNumberPrefixes","bigNumberPrefixes","ol","toPrecision","exp","toExponential","digits","zeros","exponent","ints","ip","intsr","decs","prefixes","newvalue","applied","k","number","invalidateSprite","invalidate","_intlLocales","_bigNumberPrefixes","_smallNumberPrefixes","_bytePrefixes","outputFormat","DateFormatter","_dateFormat","_inputDateFormat","_utc","timezoneMinutes","_firstDayOfWeek","months","monthsShort","weekdays","weekdaysShort","dateFormat","applyTimezone","DateTimeFormat","timezoneOffset","setMinutes","getMinutes","fullYear","weekday","getDate","getHours","getSeconds","firstDayOfWeek","tz","tzh","tzm","toISOString","toUTCString","inputDateFormat","reg","parsedIndexes","resValues","indexAdjust","year3","year2","year1","getStringList","monthLong","monthShort","yearDay","weekdayLong","weekdayShort","am","hour12Base1","hourBase0","hour12Base0","hourBase1","millisecondDigits","zone","iso","regex","resolveMonth","resolveShortMonth","isAm","ts","resolveTimezoneOffset","UTC","dir","_timezoneOffset","_timezone","setHours","DurationFormatter","_baseUnit","_unitValues","_unitAliases","baseUnit","durationFormat","getFormat","dirs","absolute","tstamp","toTimeStamp","toTimeUnit","code","maxUnit","getValueUnit","durationFormats","currentUnit","_durationFormat","_durationFormats","pdfmakePromise","Validatable","_validateDisposer","ExportMenu","closeDelay","closeOnClick","_menuTag","_itemTag","_labelTag","_iconTag","_ignoreNextClose","_items","getMenuItemClass","createMenuElement","drawBranch","menuElement","_currentSelection","moveSelection","branch","level","unsupported","ascendants","createItemElement","icon","createIconElement","src","createSvgElement","createLabelElement","readerLabel","getReaderLabel","typeClickable","submenu_1","getSubMenu","selectBranch","setFocus","delayUnselectBranch","local_level","submenu","submenuElement","hideBranch","backgroundColor","menuTag","itemTag","labelTag","iconTag","DOMParser","parseFromString","hasSubMenu","tag","newPrefix","colorSet","alternative","pointerEvents","setBlur","closeTimeout","args","ascendant","unselectBranch","event_5","simple","event_6","newSelection","getPrevSibling","getNextSibling","getParentItem","getSiblings","siblings","next","prev","showBranch","load","Promise","success","error","isBlob","responseType","xhr","XMLHttpRequest","onload","status","blob_1","response","blob","reader","FileReader","onerror","readAsText","then","getResponseHeader","responseText","withCredentials","requestHeaders","setRequestHeader","send","fontFamilySrcRegexp","getCssRules","trys","loadStylesheet","e_2","eachStylesheet","topUrl","promises","rule","CSSRule","IMPORT_RULE","all","eachStylesheets","iframe","doc_1","contentDocument","styleSheets","Export","_formatOptions","_extraSprites","_validateSprites","dataFieldsOrder","_dynamicDataFields","_removedObjects","_hiddenObjects","_objectsAlreadyHidden","_filePrefix","useWebFonts","useRetina","useSimplifiedExport","timeoutDelay","_exportRunning","_prevHasData","quality","fontSize","imageFormat","addURL","addColumnNames","indent","useLocale","emptyAs","addBOM","printMethod","arg","formatOptions","_menu","typeSupported","export","_disablePointers","_releasePointers","obj","supported","getFormatOptions","_hasData","print","_getFunction","getImage","getSVG","getPDF","getExcel","getCSV","getJSON","getHTML","getPrint","func","handleCustom","showPreloader","hideTimeout","_timeoutTimeout","showTimeout","hideNonExportableSprites","restoreNonExportableSprites","hidePreloader","download","filePrefix","callbackTarget","getFontFamilies","DOMURL","blobs","getDOMURL","FONT_FACE_RULE","cssText_1","cssText","urls","after","fullUrl","url_1","e_3","webFontFilter","msSaveOrOpenBlob","createObjectURL","resolve","reject","readAsDataURL","includeExtras","prehidden","canvas","uri","e_4","awaitValidSprites","simplifiedImageExport","getCanvas","addExtras","toDataURL","getContentType","disposeCanvas","message","stack","getImageAdvanced","advanced","middleLeft_1","middleTop_1","middleWidth_1","middleHeight_1","extraRight_1","extraBottom_1","extras","newCanvas","ctx_1","right_1","bottom_1","extraSprites","extraSprite","extra","extraCanvas","extraWidth","extraHeight","Sprite","marginRight","marginBottom","exporting","getCanvasAdvanced","crop","getDisposableCanvas","getContext","findBackgroundColor","fillStyle","fillRect","drawImage","pixelRatio","ctx","img","pixelWidth","pixelHeight","getPixelRatio","getAdjustedScale","fonts","imagesToDataURI","prepForeignObjects","normalizeSVG","serializeElement","Blob","loadNewImage","revokeObjectURL","restoreRemovedObjects","canvg","useCORS","ignoreDimensions","scaleWidth","scaleHeight","fromString","render","devicePixelRatio","widthScale","heightScale","adjWidth","adjHeight","minWidth","minHeight","querySelectorAll","svgToDataURI","imageToDataURI","objects","temporarilyRemoveObject","keepTainted","charset","btoa","placeholder","crossOrigin","currentHref","Image","onabort","self","URL","webkitURL","encodeURI","encodeURIComponent","dimParams","styleParams","fos","XMLSerializer","serializeToString","addFont","paths","normal","vfs","bytes","bold","italics","bolditalics","pdfmake","defaultMargins","extraMargin","_d","pageSize","pageOrientation","pageMargins","defaultStyle","alignment","fit","getPageSizeFit","addData","getPDFData","table","extraFonts","createPdf","getDataUrl","dataFields","dataFieldsOrder_1","dataRow","dataValue","convertToSpecialFormat","getPDFDataRow","ai","bi","headerRows","row","convertEmptyValue","margins","newMargins","fitSize","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","XLSX","wbOptions","sheetName","wb","dataFieldsOrder_2","xlsx","bookType","bookSST","normalizeExcelSheetName","SheetNames","Sheets","getExcelRow","utils","aoa_to_sheet","workbook","write","csv","br","dataFieldsOrder_3","getCSVRow","forceQuotes","search","html","dataFieldsOrder_4","tableClass","getHTMLRow","headerRow","rowClass","charCodeAt","useTag","cellClass","sourceData","_loop_1","json","newValue_1","keepOriginal","isDateField","isDurationField","durationFormatter","isNumberField","numberFormat","numberFormatter","useTimestamps","dateFormatter","fileName","link_1","decoded","blob_2","url_2","charCode","url_3","link","contentType","idoc","msBlobDownloadSupport","decodeURIComponent","msSaveBlob","atob","Uint8Array","blobDownloadSupport","click","linkDownloadSupport","legacyIE","showModal","execCommand","downloadSupport","printViaCSS","printViaIframe","scroll","originalTitle","scrollTop","clipPath","MSStream","contentWindow","currentColor","_sprite","validateSprites","_data","_dataFields","generateDataFields","handleDataUpdated","hasData","_dateFormatter","_dateFields","dateFields","_numberFormatter","_numberFields","numberFields","_durationFormatter","_durationFields","durationFields","_backgroundColor","preloader","hideModal","_canvg","vfs_fonts","global","pdfMake","_pdfmake","_xlsx","setFormatOptions","isHidden","isHiding","visible","hide","show","invalid","visualProperties","_bindings","_isTemplate","_isPath","_inited","_ready","_isHidden","isShowing","isStandaloneInstance","_isActive","_mask","_positionPrecision","_exporting","_exportable","positionInvalid","applyOnClones","_measuredWidthSelf","_measuredHeightSelf","maxLeft","maxRight","maxTop","maxBottom","maxLeftSelf","maxRightSelf","maxTopSelf","maxBottomSelf","_isDragged","_isResized","_internalDisabled","_updateDisabled","_internalDefaultsApplied","rollOutDelay","isBaseSprite","appeared","dragWhileResize","measureFailed","preventShow","cloneTooltip","setPropertyValue","_prevMeasuredWidth","_prevMeasuredHeight","_measuredWidth","_measuredHeight","_isMeasured","setClassName","_parent","applyInternalDefaults","__disabled","beforeDraw","afterDraw","invalidatePosition","validatePosition","removeSVGAttribute","sizeChanged","prevGroupTransform","transformString","nonScaling","globalScale","updateTooltipPosition","maskRectangle","_maskRectangle","_clipElement","e_1","isMeasured","horizontalCenter","verticalCenter","measureElement","e_1_1","return","applyFilters","showOnInit","applyMask","dispatchReady","hideTooltip","showTooltip","isReady","reinit","setState","defaultState","handleGlobalScale","nonScalingStroke","updateFilterScale","removeFromInvalids","states","plugins","configField","virtualParent","exportable","_tooltip","tooltip","_showSystemTooltip","showSystemTooltip","fillModifier","strokeModifier","focusFilter","_svgContainer","_interactionDisposer","_urlDisposer","_focusFilter","_filters","_alwaysShowDisposers","children","child","applyAccessibility","_topParent","topParent","oldParent","_tooltipContainer","tooltipContainer","_dataItem","handleAlwaysShowTooltip","handleAlwaysShow","oldDisposers","oldDisposer","_virtualParent","appendDefs","filterElement","fill_1","modify","stroke_1","_clipPath","setPaper","_htmlContainer","parent_3","_titleElement","_descriptionElement","setSVGAttributes","strokeDashoffset","strokeLinecap","strokeLinejoin","role","setSVGAttribute","userClassName","uidAttr","updateClipPath","mask","createClipPath","width_1","height_1","filterUnits","appendPrimitives","w","removeClipPath","setElement","SVGPathElement","definedBBox","svgBBox","updateCenter","prevElementTransform","elementX","elementY","elementWidth","elementHeigth","pixelPaddingRight","pixelPaddingBottom","measuredWidth","measuredHeight","pixelPerfect","positionPrecision","createSVGMatrix","createSVGPoint","p4","pt1","matrixTransform","pt2","pt3","pt4","tooltipText","tooltipHTML","sortChildren","insertAfter","getRelativeX","getRelativeY","getPixelX","pixel","relative","getPixelY","isDragged","inited","hitTest","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","_states","state","processState","hiddenState","setVisibility","isActive","transitTo","applyCurrentState","transition","allValues","finalValue","currentValue","newFilters_1","stateFilter","newFilter","currentFilter","isInTransition","isInteractive","setActive","current","setDisabled","deepInvalidate","_background","populateString","tags","getTagValue","tagName","reg2","matches2","method","getTagValueFromObject","populateStringFrom","formatApplied","numberValue","dateValue","durationValue","formatParts","formatterType","hints","setDataItem","dataContext_1","dataContext_2","dataContext2_1","fieldValue","setColorProperty","setPercentProperty","length_2","bind","bindToProperty","modifier","description","readerDescription","readerHidden","checked","readerChecked","controls","readerControls","live","readerLive","orientation","readerOrientation","valueNow","readerValueNow","valueText","readerValueText","labelledByIds","describedByIds","labelledBy","readerLabelledBy","describedBy","readerDescribedBy","titleElement","titleId","descriptionElement","descriptionId","_interaction","hasFocused","focusedElement","hoverOnFocus","applyCursorStyle","handleDragStart","handleDragMove","handleDragStop","_outTimeout","targetSprite","keepTargetHover","handleOutReal","originalAngle","originalScale","handleToggle","urlHandler","cursorOverStyle","_baseId","setBaseId","baseSprite","urlTarget","handleResize","svgMidPoint","parentPoint1","parentPoint2","spriteMidPoint","parentPoint","getExporting","_export","modalPrefix","invalidateLayout","parentWidth","layout","pixelMarginLeft","pixelMarginRight","setMaxWidth","prevWidth","prevHeight","relativeWidth","previousWidth","previousHeight","parentHeight","valign","pixelMarginTop","pixelMarginBottom","setMaxHeight","relativeHeight","percentWidth","_pixelWidth","percentHeight","_relativeHeight","_pixelHeight","_relativeWidth","padding","setPath","setFill","realFill","setStroke","realStroke","_rtl","showReal","_hideAnimation","_showHideDisposer","hideReal","currentSprite","hiddenState_1","getVisibility","toFront","toBack","tooltipDataItem","_tooltipDataItem","_tooltipColorSource","tooltipPosition","colorSource_1","tooltipColorSource_1","tooltipColorSource","getStrokeFromObject","getFillFromObject","animationDuration","autoTextColor","currentText","globalPoint","getTooltipX","getTooltipY","pointTooltipTo","instantly","showInViewport","pointTo","getCursorStyle","cursorDowntyle","setShowOnInit","_showOnInitDisposer","hideInitially","appear","_plugins","init","_systemUpdate","skippedSprites","_systemCheckIfValidate","_systemValidatePositions","_systemValidateLayouts","Rectangle","Container","_childrenByLayout","_childrenDisposers","setStateOnSprites","layoutInvalid","_absoluteWidth","_absoluteHeight","_shouldBeReady","_tapToActivate","tapTimeout","handleChildAdded","handleChildRemoved","processChild","handleChildTransform","sortAndAdd","addChildren","_children","fixed_1","relative_1","calculateRelativeSize","totalRelativeWidth","totalRelativeHeight","zindexed","sortArray","idx","group_1","isCorrect","createChild","classType","disposeChildren","createBackground","processBackground","validateLayout","_availableWidth","_availableHeight","allValid","childMeasuredWidth","childMeasuredHeight","arrange","maxCellWidth","minCellWidth","columnCount","contentLeft","contentRight","contentTop","contentBottom","nextX","nextY","column","columnWidth","rowHeight","childrenCopy","reverseOrder","fixedWidthGrid","maxColumns","getColumnWidth","childMarginLeft","childMarginRight","childMarginTop","childMarginBottom","childWidth","childHeight","childLeft","childRight","childTop","childBottom","nextColumnWidth","noneBBox","measuredContentWidth","measuredContentHeight","contentAlign","contentValign","dx_1","dy_1","mwa","mha","ddx","ddy","oldBBox","contentWidth","contentHeight","prevLeft","prevTop","prevBotttom","prevRight","dummyData","updateBackground","fitsToBounds","deviation","setStateOnChildren","_preloader","invalidateLabels","handleValidate","stateName","allReady_1","dataInvalid","setTapToActivate","handleTapToActivate","initTapTimeout","handleTapToActivateDeactivation","_tapToActivateTimeout","tapToActivate","moveHtmlContainer","newContainer","svgDiv","hasLicense","System","_isPaused","dummyCounter","_frameRequested","updateStepDuration","time","reportTime","msg","invalidData","dataProvider","validateData","dataValidationProgress","validateRawData","validateDataItems","validateDataRange","skipRangeEvent","validateLayouts","validatePositions","hasSkipped","checkIfValidate2","triggerIdle","all0_1","softInvalidate","hardInvalidate","VERSION","DataParser","maybeToNumber","maybeToDate","maybeToEmpty","separators","CSVParser","delimiter","skipRows","skipEmpty","useColumnNames","isCSV","getDelimiterFromData","lines","sep","columns","lineColums","col","CSVToArray","empty","numbers","parsableNumbers","dates","parsableDates","cols","dataPoint","objPattern","arrData","arrMatches","strMatchedDelimiter","strMatchedValue","JSONParser","isJSON","dataLoader","DataLoader","requestOptions","processData","catch","getParserByType","parser","getParserByData","DataSource","_requestOptions","_incremental","_incrementalParams","_keepCount","_updateCurrentData","lastLoad","disableCache","timestampUrl","_url","incremental","addUrlParams","incrementalParams","_parser","_reloadFrequency","_reloadDisposer","_reloadTimeout","reloadFrequency","Responsive","_rules","_appliedRules","_appliedTargets","_useDefault","_responsiveDisposers","_noStates","checkRules","_component","disposeResponsiveHandlers","enabled","applyRules","defaultRules","useDefault","isApplied","ruleId","allRules","rulesChanged","relevant","newTarget","defaultStateApplied","isApplied_1","getState","getDefaultState","setTargetState","ind","stateId","tmpId","ResponsiveBreakpoints","widthXXS","XXS","widthXS","XS","widthS","S","widthM","M","widthL","L","widthXL","XL","widthXXL","XXL","heightXXS","heightXS","heightS","heightM","heightL","heightXL","heightXXL","isXXS","isXS","isS","isM","isL","isXL","isXXL","maybeXXS","maybeXS","maybeS","maybeM","maybeL","maybeXL","maybeXXL","DataItem","hasProperties","categories","locations","workingLocations","_index","_visible","_hidden","_ignoreMinMax","hasChildren","_valueAnimations","_locationAnimations","noChangeValues","fields","animation_1","_hideDisposer","setWorkingValue","toValue","animation_2","anim","interpolationDuration","calculated","getWorkingValue","realName","workingValue","getActualWorkingValue","setValue","newDuration","handleDataItemValueChange","setCalculatedValue","handleDataItemCalculatedValueChange","interpolationEasing","handleInterpolationProgress","valueAnimation","handleDataItemWorkingValueChange","setLocation","setWorkingLocation","workingLocation","locationAnimation","handleDataItemWorkingLocationChange","setDate","event_7","handleDataItemPropertyChange","setCategory","event_8","event_9","depth","_dataContext","addSprite","Component","_dataSources","_parseDataFrom","_dataDisposers","_currentDataSetId","rangeChangeDuration","rangeChangeEasing","parsingStepDuration","rawDataInvalid","dataRangeInvalid","dataItemsInvalid","sequencedInterpolation","sequencedInterpolationDelay","_addAllDataItems","_usesData","minZoomCount","maxZoomCount","_dataItems","createDataItem","handleDataItemAdded","handleDataItemRemoved","invalidateData","dataUsers","handleDataUserAdded","maxZoomDeclination","invalidateDataItems","processDataItem","hasSomeValues_1","mainDataSet","rawDataItem","childDataItem","updateDataItem","validateDataElements","endIndex","startIndex","dataItems","validateDataElement","removeCount","skipRaw","removeData","dataUser","dataItem_1","invalidateDataUsers","invalidateDataRange","_prevStartIndex","_prevEndIndex","rangeChangeUpdate","appendDataItems","sliceData","_workingStartIndex","_workingEndIndex","invalidateRawData","disposeData","_startIndex","_endIndex","_dataSets","getDataItem","counter","n","this_1","dataUserDataItem","state_1","setData","getDataSource","setDataSourceEvents","dataSourceDateFields","dataSourceNumberFields","loadData","populateDataSourceFields","targetList","ds","keepCount","updateCurrentData","_responsive","zoom","declination","maxZoomFactor","_finalStart","_finalEnd","minZoomFactor","rangeChangeAnimation","zoomToIndexes","indexToPosition","dataSets","setDataSet","_updateDataItemIndexes","bindDataField","invalidateProcessedData","resetProcessedRange","_dataUsers","_exportData","_showOnInitDisposer2","Label","isOversized","truncate","textAlign","textValign","baseLineRatio","handleMaxSize","availableWidth","availableHeight","updateCurrentText","_currentFormat","_prevStatus","getLineBBox","lineInfo","oldW","oldH","textPathElement","resetBBox","currentHeight","currentFormat","line","ignoreFormatting","currentLineHeight","firstChunk","skipTextChunks","getLineInfo","getSVGLineElement","complex","lineText","avgCharWidth","excessChars","addEllipsis","node_1","node_2","elementText","lastNode","lastChild","splitLines","lineText_1","restOfLine","addLineInfo","tempElement","lineInfo_1","maybeHideOversized","alignSVGText","hideUnused","fo","lineElement","getHTMLLineElement","setStyles","pathElement","hideOversized","wordWrap","whiteSpace","selectable","initLineCache","_sourceDataItemEvents","classid","RoundedRectangle","cornerRadius","minSide","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomRight","cornerRadiusBottomLeft","maxcr","crtl","crtr","crbr","crbl","tl","tr","bl","Button","tooltipY","iconPosition","hoverState","downState","_icon","currentIcon","_label","Circle","pixelRadius","Ellipse","radiusY","widthRatio","heightRatio","Line","delta","positionToPoint","PointedRectangle","cr","stemX","stemY","pointerX","pointerY","bwh","pointerBaseWidth","lineT","lineR","lineB","lineL","d1","d2","arcTR","arcBR","arcBL","arcTL","PointedShape","pointerLength","polyline","lineTo","minStep","quadraticCurveTo","cubicCurveTo","arcTo","segments","pax","pay","ax","ay","innerRadius","innerCornerRadius","crSin","innerRadiusY","cornerRadiusY","innerCornerRadiusY","crAngle","crAngleY","crInnerAngle","crInnerAngleY","middleAngle","mPoint","a0","c0","d0","arcToPoint","sweepFlag","largeArcFlag","xAxisRotation","Boolean","rectToPath","ccw","Polyline","_distance","makePath","_realSegments","deltaAngle","totalDistance","positionA","positionB","midPoint","Polyarc","controlPointDistance","controlPointPosition","realPoints","distanceAB","cpDistance","controlPoint1","controlPoint2","i_1","Morpher","morphable","_bboxes","morphDuration","morphEasing","morphToSingle","scaleRatio","morphToPolygon","toPoints","currentPoints","sortPoints","_morphFromPointsReal","_morphToPointsReal","normalizePoints","pointsA","pointsB","surfaceA","holeA","bboxA","middleX","middleY","addPoints","splitAt","newDistance","partA","partB","bbox1","bbox2","bboxes","surface","morphToCircle","commonBBox","hole","fromPoints","realRadius","realAngle","pointOnCircle","hlen","mustHaveCount","addToSegmentCount","newPoints","point0","extraPoint","lastPoint","morphToRectangle","realWidth","realHeight","i_2","i_3","_morphProgress","currentArea","surfaceFrom","holeFrom","surfaceTo","holeTo","currentSurface","i_4","slen","currentPoint","currentHole","i_5","morphBack","Polygon","_currentPoints","segment","areaHole","areaArr","holeArr","pointsArr","area","areaAndHole","coords","pointsArr_1","_morpher","Polyspline","allPoints","closed_1","getClosestPointIndex","closest","extend","f0","f1","point_1","Slice","pixelInnerRadius","shiftRadius","updateGradient","gradient","ix","iy","Preloader","sliceContainer","backgroundSlice","progressSlice","_started","ResizeButton","CloseButton","bgc","downColor","bhs","bds","SwitchButton","leftLabel","circle","p100","as","switchButton","rightLabel","_leftLabel","_rightLabel","_switchButton","Scrollbar","_previousStart","_previousEnd","_prevStart","_prevEnd","_isBusy","_skipRangeEvents","updateWhileMoving","animationEasing","startGrip","endGrip","updateThumb","thumb","dispatchRangeChange","hideGrips","updateSize","updateExtremes","handleBgHit","makeBusy","thumbX","_thumbAnimation","thumbY","makeUnbusy","_thumb","_unbusyTimeout","stopAnimations","_zoomAnimation","makeUnbusyReal","_usingGrip","dispatchEvents","innerWidth_1","innerHeight_1","getPosition","__start","__end","skipRangeEvents","fixRange","updateByOrientation","_startGrip","processGrip","_endGrip","handleGripDrag","cursorDownStyle","handleThumbPosition","handleDoubleClick","newStart","newEnd","zoomAnimation","innerWidth_2","innerHeight_2","_hideGrips","_overDisposer","_outDisposer","Slider","TextLink","Filter","_nonScaling","filterPrimitives","filterPrimitive","updateScale","setSprite","DropShadowFilter","feGaussianBlur","feOffset","feFlood","feComposite","operator","feMerge","Tooltip","_boundingRect","_pointTo","fitPointerToBounds","_verticalOrientation","fixDoc","dropShadow","drawBackground","pointerOrientation","handleVisibility","textX","textY","boundingRect","textW","textH","ignoreBounds","documentWidth","offsetWidth","offsetHeight","textWidth","textHeight","bgWidth","bgX","bgHeight","bgY","boundX1","boundX2","boundY1","boundY2","delayedPointTo","_pointToDisposer","_animation","setBounds","oldRect","_boundingContainer","updateBounds","boundingContainer","Trapezoid","topSide","bottomSide","leftSide","rightSide","bs","ls","rs","x0","y0","x3","y3","mt","mr","mb","ml","horizontalNeck","hn","verticalNeck","vn","Triangle","Tension","_tensionX","_tensionY","smooth","closed","wavedLine","waveLength","waveHeight","adjustWaveLength","waveLengthX","waveLengthY","halfWaveCount","sign_1","Monotone","reversed","_reversed","_closed","_curve","t0","t1","NaN","slope2","slope3","sign","h0","h1","s0","s1","MonotoneX","MonotoneY","WavedCircle","Basis","x4","y4","pushCurve","pushPoint","getPoints","circleLength","halfWaveHeight","halfWaveLength","angle1","angle2","WavedLine","WavedRectangle","waveLengthH","waveHeightH","waveLengthV","waveHeightV","td","rd","bd","ld","wavedTop","wavedRight","wavedBottom","wavedLeft","setWavedSides","ZoomOutButton","PlayButton","playIcon","stopIcon","activeState","ColorModifier","GradientModifier","lightnesses","brightnesses","opacities","offsets","_lightnesses","_brightnesses","_opacities","_offsets","lightness","brightness","LinearGradientModifier","Cone","topRadius","bodyFillModifier","radiusBase","LightenFilter","feColorMatrix","Rectangle3D","sideBack","sideBottom","sideLeft","sideRight","sideTop","sideFront","ah","bh","ch","dh","colorStr","filter2","filter3","filter4","filter5","Slice3D","edge","sideA","sideB","edgeFill","edgePath","mangle","pp","RadialGradientModifier","LinePattern","_line","CirclePattern","_circle","RectPattern","rectHeight","rectWidth","_rect","ColorizeFilter","intensity","applyFilter","ii","DesaturateFilter","BlurFilter","FocusFilter","feMorphology","feBlend","ColorSet","_list","_currentStep","_currentPass","baseColor","stepOptions","passOptions","minColors","minLightness","maxLightness","shuffle","reuse","generate","getReusableColor","tmpstep","hueStep","hue","hues","applyStepOptions","pass","PatternSet","getLinePattern","getRectPattern","getCirclePattern","thickness","strokeDashArray","pattern","outline","currentStep","generatePatterns","Plugin","AmChartsLogo","aColor","aGradient","aStroke","desaturateFilter","desaturateFilterHover","tmpContainer","svgDiv_1","container_1","readyState","listener_1","loopTimer_1","tooltipContainer_1","preloader_1","logo_1","logo","addToQueue","viewPortHandler","vpDisposer","queueHandler","removeFromQueue","nextSprite","classError","chart","useTheme","Grip","autoHideDelay","_autoHideTimeout","ChartDataItem","Chart","_legend","titles","chartAndLegendContainer","chartContainer","processTitle","updateReaderTitleReferences","fixLayout","legend","feedLegend","titleIds_1","setLegend","_dragGrip","grip_1","Bullet","tooltipX","copyToLegendMarker","LegendDataItem","childrenCreated","label_1","labels","itemContainer","_valueLabel","valueLabel_1","valueLabels","_itemContainer","component_1","itemContainer_1","itemContainers","toggleDataItem","focusedItem","visibilitychanged","_marker","marker_1","markers","LegendSettings","createMarker","Legend","marker","disabledColor","valueLabel","handleScrollbar","scrollbar","legendDataItem","tempMaxWidth","legendSettings","createLegendMarker","useDefaultMarker","updateLegendValue","itemValueText","maxLabelWidth","maxValueLabelWidth","maxMarkerWidth","maxAdjustedLabelWidth","trueMaxWidth","scrollable","updateMasks","_mouseWheelDisposer","colorOrig","SeriesDataItem","_bullets","bullets","Series","_showBullets","_tmin","_tmax","_smin","_smax","dataItemsByAxis","skipFocusThreshold","_itemReaderTextChanged","calculatePercent","usePercentHack","simplifiedProcessing","axisRanges","processAxisRange","minBulletDistance","mainContainer","bulletsContainer","_chart","positionBullet","bullet","processBullet","itemsFocusable","removeBullet","eachBullet","processValues","getFirstValue","getAbsoluteFirstValue","working","count_1","sum_1","absoluteSum_1","low_1","high_1","open_1","close_1","previous_1","first_1","absoluteFirst_1","startIndex_1","dataItem_2","prevValue","_loop_2","dataItem_3","ksum","zeroItem_1","dataItem_4","axisRange","updateTooltipBounds","shouldCreateBullet","bulletTemplate","disabledField","currentDataItem","readerText_1","itemReaderText","xField","yField","isDynamic","itemWidth","itemHeight","createMask","rangesContainer","contents","isRange","getAxisField","axis","showTooltipAtPosition","xPosition","yPosition","readerText","_itemReaderText","_legendDataItem","notRange","itemLabelText","labelText","_heatRules","heatRule","dataField_1","dataField","seriesDataItem_1","property_1","foundSprite","anySprite","anyChild","foundSprite_1","ruleTarget","propertyField","logarithmic","LOG10E","heatRules","listitem","maybeIndex","SerialChartDataItem","SerialChart","colors","seriesContainer","patterns","_series","createSeries","handleSeriesAdded","handleSeriesRemoved","series","di","handleSeriesAdded2","handleLegendSeriesAdded","hiddenInLegend","legendData_1","AxisBreak","_axis","breakSize","fillShape","_fillShape","startLine","_startLine","endLine","_endLine","addBreakSprite","renderer","gridContainer","createBreakSprites","breakTemplate","axisBreaks","invalidateSeries","startPosition","endPosition","updateBreakElement","AxisItemLocation","AxisDataItem","_grid","grid_1","_tick","component_2","tick_1","tick","ticks","component_3","_axisFill","component_4","axisFill_1","axisFill","axisFills","_text","_contents","createFill","_axisBreak","axisBreak","appendChildren","appendDataItem","minPosition","maxPosition","_bullet","Axis","_gridCount","_axisItemCount","hideTooltipWhileZooming","toggleZoomOutButton","zoomable","_dataItemsIterator","fillRule","ghostLabel","updateLabelElement","updateGridCount","gridCount","axisLength","minGridDistance","axisFullLength","updateAxisLine","updateTooltip","updateBaseGridElement","_prevLength","initRenderer","above","updateGridContainer","validateAxisRanges","validateBreaks","_axisBreaks","processBreak","breakContainer","registerSeries","_renderer","ghostLabel_1","positionToAngle","pointToPosition","positionToCoordinate","getAnyRangePath","getPositionRangePath","anyToPosition","anyToPoint","_tooltipPosition","toAxisPosition","tooltipLocation","getCellStartPosition","getCellEndPosition","tooltipLocation2","endPoint","currentItemStartPoint","currentItemEndPoint","fullWidthTooltip","getTooltipText","cursorTooltipEnabled","inversed","toGlobalPosition","boundingRectangle","roundPosition","axisLocation","_axisRanges","createAxisBreak","adjustedStartValue","processSeriesDataItems","processSeriesDataItem","axisLetter","postProcessSeriesDataItems","postProcessSeriesDataItem","updateAxisBySeries","hideUnusedDataItems","dataItemsIterator","getSeriesDataItem","findNearest","stackKey","getX","getPositionX","getY","getPositionY","dataChangeUpdate","seriesDataChangeUpdate","adjustDifference","startValue","endValue","adjustedEndValue","intersection","startMax","endMin","isInBreak","fixAxisBreaks","firstAxisBreak","previousEndValue_1","getPositionLabel","createSeriesRange","resetIterators","AxisLine","AxisFill","fillPath","Grid","AxisLabel","Tick","AxisTick","AxisRenderer","inside","cellStartLocation","cellEndLocation","minLabelPosition","maxLabelPosition","invalidateAxisItems","baseGrid","setAxis","processRenderer","positionItem","position2","getHeight","getWidth","coordinateToPosition","coordinate","coordinate2","updateGridElement","updateTickElement","updateBullet","updateFillElement","toggleVisibility","updatedStart","updatedEnd","_axisFills","createGrid","_ticks","createTick","_labels","createLabel","AxisBullet","AxisRendererY","opposite","inversedPosition","relativePositionSprite","bigNum","bbx","bbw","bbh","tickLength","basePoint","wavedRectangle","ValueAxisBreak","valueToPosition","ValueAxisDataItem","ValueAxis","_stepDecimalPlaces","_prevStepDecimalPlaces","_adjustLabelPrecision","_baseValue","_adjustedStart","_adjustedEnd","_extremesChanged","_deltaMinMax","_dsc","calculateTotals","axisFieldName","keepSelection","includeRangesInMinMax","_maxZoomed","_maxDefined","_minZoomed","_minDefined","_maxAdjusted","_minAdjusted","total","sum","excludeFromTotal","getMinMax","calculateZoom","validateAxisElements","positionToValue","differece","minMaxStep","adjustMinMax","stepDecimalPlaces","syncWithAxis","_step","fixSmallStep","value_1","minZoomed","maxZoomed","dataItemsIterator_1","precisionChanged","formatLabel","stepPower","decCount","renderer_1","breakValue_1","adjustedMin","adjustedMax","adjustedStep","itemIndex","fillEndPosition","adjustLabelPrecision","baseValue","valueToPoint","min_1","max_1","_difference","treatZeroAs","difference_1","value_2","breakStartPosition","breakEndPosition","breakStartValue","breakEndValue","E","xToValue","yToValue","animateMinMax","POSITIVE_INFINITY","NEGATIVE_INFINITY","ignoreMinMax","seriesMin","seriesMax","_minReal","_maxReal","dif","fixMin","fixMax","power","extraMin","extraMax","strict","strictMinMax","_minMaxAnimation","_finalMax","_finalMin","handleSelectionExtremesChange","strictMode","initialMin","initialMax","stepDivisor","maxPrecision","minCount","maxCount","handleExtremesChange","selectionMin","selectionMax","allHidden","outOfRange","seriesSelectionMin","seriesSelectionMax","minMaxStep2","syncAxes","extraTooltipPrecision","valueStr","zoomToValues","axisBreakDif","axisBreakGridCount","breakMinMaxStep","showTooltipAt","currentCount","synced","omin","omax","ostep","checkSync","xAxis","DateAxisBreak","DateAxisDataItem","endDate","DateAxis","_gapBreaks","gridIntervals","groupIntervals","dateFormats","periodChangeDateFormats","_baseIntervalReal","timeUnit","_prevSeriesTime","_minDifference","_firstWeekDay","groupMin","groupMax","snapTooltip","groupCount","getDFFormatter","gridInterval","_gridInterval","gridDuration","baseDuration","periodCount","getFirstWeekDay","mainBaseDuration","mainBaseInterval","dataSetChanged","groupData","modifiedDifference","startLocation","endLocation","groupInterval","chooseInterval","_groupInterval","newId","baseAxis","baseInterval","_nextGridUnit","_intervalDuration","_gridDate","_df","field_1","minZoomedStr","startDataItem","currentDataSetId","findFirst","maxZoomedStr","endDataItem","previousDataItem","previousDate","minDifference","seriesGroupUpdate","addEmptyUnitsBreaks","_baseInterval","groupSeriesData","dataGrouped","intervals_1","mainIntervalDuration_1","intervalDuration","dataSetId","dataSet","newDataItem","roundedDate","previousTime","dfkey","df","dfk","vkey","dateX","openDateX","dateY","openDateY","dvalues","average","groupDataItems","groupFieldName","groupFields","intervalID","skipEmptyPeriods","startTimeStr","startDate","breakGridCount","gridDate","getGridDate","intervalCount","realIntervalCount","prevTimestamp","newDate","durationBreaksRemoved","getBreaklessDate","prevGridDate","this_2","markUnitChange","timeUnit_1","intervalCount_1","prevGridDate_1","timestamp_1","_loop_3","text_1","endTimestamp","location_1","intervals","lastIndex","dateToPosition","dateToPoint","positionToDate","getTimeByLocation","endTime","openTime","openDate","prevSeriesTime","_mainBaseInterval","timeInterval","tooltipDate","tooltipDateFormat","deltaValue","nextDate","key_1","getCurrentLabelFormat","zoomToDates","adjust","isEnd","isStart","groupInterval_1","mindi","maxdi","yAxis","closestDate_1","actualTime_1","closestTime_1","snapToSeries","showTooltipAtDataItem","_seriesPoints","makeGap","previous","connect","autoGapCount","prevDate","AxisRendererX","bby","CategoryAxisBreak","category","categoryToIndex","CategoryAxisDataItem","seriesDataItems","endCategory","deltaPosition","oldCategory","deltaCoordinate","CategoryAxis","dataItemsByCategory","_lastDataItem","categoryAxisDataItem","seriesId","positionToIndex","minIndex","maxIndex","axisDataItem","seriesDataItem","dataCount","MAX_SAFE_INTEGER","frequency","_frequency","frequency_1","itemIndex_1","fillEndIndex","fillPosition","breakStartIndex","breakEndIndex","categoryToPosition","categoryToPoint","zoomToCategories","startCategory","startPos","endPos","getFirstSeriesDataItem","categoryX","categoryY","getLastSeriesDataItem","getSeriesDataItemByCategory","sdi_1","category_1","breakPosition","positionToCategory","sortBySeries","XYSeriesDataItem","customValue","valueX","valueY","openValueX","openValueY","openCategoryX","openCategoryY","getMin","stackValue","getMax","XYSeries","_xAxis","_yAxis","_xValueFields","_yValueFields","usesShowFields","_dataSetChanged","_maxxX","_maxxY","_propertiesChanged","cursorHoverEnabled","stacked","stackToNegative","returnBulletDefaultState","resetExtremes","valueYShow","openValueXShow","openValueYShow","defineFields","updateItemReaderText","_xField","_yField","setInitialWorkingValues","dataItemsX","clearCatAxis","dataItemsY","xAxisFieldName","xOpenField","yAxisFieldName","yOpenField","_xOpenField","_yOpenField","addValueField","setCategoryAxisField","setDateAxisField","path_1","getMaskPath","plotContainer","maskBullets","leftAxesContainer","rightAxesContainer","topAxesContainer","bottomAxesContainer","xAxes","setXAxis","oldAxis","yAxes","setYAxis","XYChart","handleYAxisSet","_baseAxis","scrollbarSeries","workingStartIndex","workingEndIndex","getStackValue","stackX","stackY","xAxisId","yAxisId","stackedSeries","tmin","tmax","_prevTooltipDataItem","getAdjustedXLocation","bulletLocationX","getAdjustedYLocation","bulletLocationY","hideSeriesTooltipsOnSelection","selection","downPoint","tooltipXField","tooltipYField","tooltipPoint","getPoint","fireEvent","e_2_1","getBulletLocationX","getBulletLocationY","positionX","positionY","openValue","closeValue","middleValue","rightLocation","locationX","leftLocation","openPositionX","topLocation","locationY","bottomLocation","openPositionY","positionBulletReal","bulletLocation","updateStacking","realDuration","field_2","prevSeries","prevDataItem","prevRealValue","_tooltipXField","_tooltipYField","xKey","yKey","stackKeyX","stackKeyY","axisBulletsContainer","XYChartScrollbar","scrollbarChart","_scrollbarChart","unselectedOverlay","_unselectedOverlay","thumbBackground","sourceSeries","zoomOutButton","addXAxis","addYAxis","vAxis_1","sourceAxis","minDefined","maxDefined","vAxis_2","vAxis_3","vAxis_4","zoomOutAxes","handleDataChanged","XYChartDataItem","_axisRendererX","_axisRendererY","arrangeTooltips","topAxesCont","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","leftAxesCont","updateXAxesMargins","plotCont","mouseWheelBehavior","_cursorContainer","rightAxesCont","_bulletMask","updateSeriesLegend","updatePlotElements","leftAxesWidth","rightAxesWidth","handleXAxisChange","updateXAxis","handleYAxisChange","updateYAxis","processXAxis","handleXAxisRangeChange","processAxis","processYAxis","handleYAxisRangeChange","getCommonAxisRange","scrollbarX","zoomAxes","updateScrollbar","show_1","seriesAppeared","scrollbarY","axes","axisStart","axisEnd","updateSeriesMasks","_xAxes","handleAxisRemoval","_yAxes","_cursor","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","xPosition_1","yPosition_1","showSeriesTooltip","exceptAxes_1","dataItems_1","snpSeries","closestDataItem_1","getClosest","closestSeries","handleSnap","_cursorXPosition","showAxisTooltip","_cursorYPosition","sortSeriesTooltips","closestDataItem","minDistance","xPos","yPos","dxPosition","dyPosition","hideObjectTooltip","seriesPoints","cursor_1","maxTooltipDistance","nearestSeries_1","nearestPoint_1","cursorPoint_1","smallestDistance_1","seriesPoint","fixedPoint","newSeriesPoints_1","np","topLeft_1","bottomRight_1","filteredSeriesPoints_1","firstSeries","averageY","dropped","nextHeight","pointY","getUpdatedRange","xRange","yRange","_panStartXRange","_panStartYRange","_panEndXRange","panEndRange","panStartRange","snapOnPan","_panEndYRange","maxPanOut","newRange","_scrollbarX","handleXScrollbarChange","_scrollbarY","handleYScrollbarChange","realRange","originalRange","cellWidth","plotPoint","handleWheelReal","handleHorizontalWheel","horizontalMouseWheelBehavior","rangeX","rangeY","shiftStep","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","location2X","location2Y","_mouseWheelDisposer2","len_1","len_2","_zoomOutButton","addScrollbarData","removeScrollbarData","LineSeriesSegment","fillSprite","strokeSprite","drawSegment","closePoints","smoothnessX","smoothnessY","smoothing","fillElement","DurationAxisDataItem","DurationAxis","axisDurationFormat","referenceValue","divisors","realDivisor","divisors_1","divisors_1_1","divisor","reduce","curr","_tooltipDurationFormat","tooltipDurationFormat","LineSeriesDataItem","LineSeries","createSegment","_segmentsIterator","segmentsContainer","initialY","initialX","openSegmentWrapper","_adjustedStartIndex","findAdjustedIndex","adjustedIndex","openIndex","openSegment","getSegment","addToClose","closeIndex","propertiesChanged","valuesFound","updateSegmentProperties","closeSegment","itemProperties","checkOnly","currentValueStr","hasLabels","RadarSeriesDataItem","RadarSeries","connectEnds","updateRendererRefs","rendererX","rendererY","axisRendererY","AxisFillCircular","GridCircular","AxisLabelCircular","fdx","fdy","locationOnPath","axisRadius","pixelRadiusY","axisRadiusY","fixPosition","isNegative","relativeRotation","labelRadius","bent","dH","dW","AxisRendererCircular","pixelRadiusReal","useChartAngles","innerRadiusModifyer","angleToPosition","gridInnerRadius","AxisRendererRadial","gridType","axisAngle","gridLocation","tooltipOrientation","RadarChartDataItem","RadarChart","radarContainer","innerRect","wr","hr","maxRadius","diameter","_pixelInnerRadius","ClockHand","pin","startWidth","endWidth","hand","_pin","_hand","showValue","newAngle","currentAngle","rotationDirection","updateValue","GaugeChartDataItem","GaugeChart","hands","processHand","PercentSeriesDataItem","ticksContainer","labelsContainer","_slice","slice_1","slices","slicesContainer","PercentSeries","alignLabels","createSlice","_slices","initSlice","initTick","initLabel","arrangeLabels","lh","nextLabel","getNextLabel","arrangeLabels2","previousTop","nextDataItem","handleSliceScale","handleSliceMove","setAlignLabels","PercentChartDataItem","PercentChart","percentSeriesDataItem","PieTick","PieSeriesDataItem","radiusValue","PieSeries","_leftItems","_rightItems","_currentStartAngle","_arcRect","_maxRadiusPercent","radiusValuePercent","aAngle","bAngle","ignoreZeroValues","normalizedMiddleAngle","arcRect","_pixelRadius","_startAngleInternal","_endAngleInternal","PieChartDataItem","PieChart","updateRadius","_chartPixelRadius","updateSeriesAngles","chartCont","chartRadius","chartPixelInnerRadius","seriesRadius","_chartPixelInnerRadius","PieSeries3DDataItem","depthValue","PieSeries3D","depthPercent","PieChart3DDataItem","PieChart3D","SlicedChartDataItem","SlicedChart","FlowDiagramNode","invalidateLinks","outgoingDataItems","toNode","incomingDataItems","fromNode","colorMode","stop_1","stop_2","_incomingDataItems","sortBy","_incomingSorted","fromName","_outgoingDataItems","_outgoingSorted","FlowDiagramLink","positionBullets","_bulletsContainer","_bulletsMask","bulletsMask","middleLine","rotationField","_gradient","FlowDiagramDataItem","toName","_link","links","FlowDiagram","nodePadding","minNodeSize","linksContainer","nodesContainer","nodes","sortNodes","strNode","getNodeValue","_sorted","incomingTotal","outgoingTotal","totalIncoming","totalOutgoing","changeSorting","_nodes","createNode","_links","createLink","LabelBullet","SankeyNode","nextInCoord","nextOutCoord","nameLabel","orientation_1","endX","endY","linkWidth","valueHeight","startX","startY","SankeyLink","makeBackwards","xt0","yt0","xt1","yt1","xb0","xb1","yb0","yb1","xm0","xm1","ym0","ym1","cpd","kxt0","kyt0","kxt1","kyt1","kxm0","kym0","kxm1","kym1","kxb0","kyb0","kxb1","kyb1","SankeyDiagramDataItem","SankeyDiagram","nodeAlign","_valueHeight","_levelCount","getNodeLevel","levels","checkLoop","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","maxSumLevel","realValue","levelNodeCount","_maxSumLevel","maxSumLevelNodeCount","finalHeight","_heightAnimation","nextCoordinate","levelCoordinate","nodeCount","_","nodeHeight","ChordNode","updateRotation","arc_1","sliceStartAngle_1","childAngle","childRadius","labelAngle","adjustedTotal","nextAngle","nonRibbon","valueAngle","mAngle","trueStartAngle","tx","ty","QuadraticCurve","cpx","cpy","cp","ChordLink","fromX","fromY","toX","toY","mAngle1","mAngle2","ChordDiagramDataItem","ChordDiagram","chordContainer","newTotal","Column","createAssets","handleKidAdded","ColumnSeriesDataItem","_column","setColumn","_rangesColumns","ColumnSeries","_startLocation","_endLocation","clustered","columnsContainer","_columnsContainer","prevAxisIndex_1","baseAxisSeries","clusterCount_1","sortedByAxis_1","index_2","sortedItem","sortCategoryAxis","disableUnusedColumns","currentPosition","deltaAnimation","validateDataElementReal","getStartLocation","getEndLocation","outOfBounds","diw","dih","fixHorizontalCoordinate","fixVerticalCoordinate","axisLenght","column_1","realX","realY","setColumnStates","rangeColumn","rangesColumns","_dropFromOpenState","_dropFromPreviousState","_riseFromOpenState","_riseFromPreviousState","change","droppedFromOpen","droppedFromPrevious","_columns","createColumnTemplate","fromOpenState_1","fromPreviousState_1","TreeMapSeriesDataItem","treeMapDataItem","TreeMapSeries","TreeMapDataItem","rows","childValue","TreeMap","layoutAlgorithm","squarify","maxLevels","currentLevel","hideParentColumns","sorting","xRenderer","yRenderer","seriesTemplates","zoomToChartDataItem","_homeDataItem","_navigationBar","navigationBar","createTreeSeries","_tempSeries","homeDataItem","_homeText","layoutItems","navigationData","parentDataItem","initSeries","createTreeSeriesReal","currentlyZoomed","zoomToSeriesDataItem","toggleBullets","binaryTree","dice","sliceDice","sums","partition","valueOffset","valueTarget","hi","mid","valueLeft","valueRight","xk","yk","nodeValue","sumValue","newRatio","minRatio","beta","ratio","i0","i1","getLegendLevel","legendParent","AxisRendererX3D","dx3D","dy3D","handle3DChanged","AxisRendererY3D","Column3D","column3D","ColumnSeries3DDataItem","ColumnSeries3D","XYChart3DDataItem","XYChart3D","fixColumns","depthIndex","inversed_1","maskColumns","HeatLegend","markerContainer","markerCount","getMinFromRules","minValue_1","getMaxFromRules","maxValue_1","valueAxis","minColor","maxColor","seriesFill","minOpacity","maxOpacity","minStrokeOpacity","maxStrokeOpacity","minStroke","maxStroke","strokeGradient","color_1","opacity_1","_valueAxis","dataFieldDefined","updateMinMax","seriesId_1","Candlestick","lowLine","highLine","CandlestickSeriesDataItem","lowValueX","lowValueY","highValueX","highValueY","CandlestickSeries","positiveColor","negativeColor","dropFromOpenState","riseFromOpenState","validateCandlestick","lowLine_1","highLine_1","yOpen","yClose","yLow","yLowField","yHigh","yHighField","open_2","close_2","xOpen","xClose","xLow","xLowField","xHigh","xHighField","rangeLowLine","rangehighLine","_xLowField","_yLowField","_xHighField","_yHighField","cw","OHLC","openLine","highLowLine","closeLine","OHLCSeriesDataItem","OHLCSeries","openLine_1","highLowLine_1","closeLine_1","rangeOpenLine","rangeCloseLine","rangeHighLowLine","StepLineSeriesSegment","noRisers","vertical","StepLineSeriesDataItem","StepLineSeries","startLocationX","endLocationX","startLocationY","endLocationY","RadarColumn","radarColumn","RadarColumnSeriesDataItem","RadarColumnSeries","lAngle","rAngle","tRadius","bRadius","cellAngle","FunnelSlice","bottomWidth","topWidth","expandDistance","pb","pr","pl","ed","tw","bw","cpr","cpl","qp1","qp2","tickPoint","tt","tb","bt","bb","mlx","mty","FunnelTick","labelsOpposite","FunnelSeriesDataItem","_sliceLink","sliceLink_1","sliceLinks","FunnelSeries","_nextY","bottomRatio","labelTemplate","dItem","_total","_count","getNextValue","nextValue","nextItem","formDataElement","sliceLink","decorateSlice","linkHeight","getLastLabel","lastLabel","lastY","lastX","_sliceLinks","labelAlign","labelValign","PyramidSeriesDataItem","PyramidSeries","pyramidHeight","valueIs","_nextWidth","relValue","_pyramidHeight","_pyramidWidth","absoluteSum","pyramidWidth","sliceTopWidth","sliceHeight","sliceBottomWidth","square","sliceWidth","PictorialStackedSeriesDataItem","PictorialStackedSeries","_maskSprite","maskSprite","pictureWidth","pictureHeight","newWidth","newHeight","hs","ConeColumn","coneColumn","ConeSeriesDataItem","ConeSeries","CurvedColumn","curvedColumn","CurvedColumnSeriesDataItem","CurvedColumnSeries","CircleBullet","ErrorBullet","errorLine","NavigationBarDataItem","NavigationBar","textLink","_linksIterator","triangle","activeLink","fontWeight","Cursor","_stick","handleCursorDown","handleCursorUp","handleCursorMove","_generalBehavior","_stickPoint","triggerMove","stick","triggerMoveReal","getPositions","triggerDown","triggerDownReal","triggerUp","triggerUpReal","updatePoint","upPoint","_upPointOrig","_downPointOrig","updateSelection","shouldPreventGestures","XYCursor","_lineX","_lineY","_snapToDisposers","lineX","lineY","_usesSelection","fixPoint","updateLinePositions","allHidden_1","getPanningRanges","selectionX","selectionY","hasMoved","getRanges","handleXTooltipPosition","handleYTooltipPosition","fullWidthLineX","fullWidthLineY","_selection","snapTo_1","snapError_1","snap","xx","yy","RadarCursor","truePixelRadius","updateLineX","updateLineY","fillStartAngle","downAngle","downRadius","currentRadius","_prevAngle","downSin","downCos","upAngle","upRadius","writable","normalize","p50","toDate","removeFirst","pushOne","forEach","DisposerClass","ArrayDisposer","super","onZoom","_ev","supports","cap","getRendererEvent","isTouchEvent","getEventTarget","isLocalEvent","setInteractive","interactive","getSafeResolution","trimLeft","trimRight","firstDay","getWeekYear","utcDate","capitalizeFirst","mergeTags","tags1","tags2","sameBounds","string2hex","fromAny","_hex","toCSS","toCSSHex","toHSL","fromHSL","fromRGB","fromHex","fromCSS","rgba2hex","lightAlternative","darkAlternative","light","dark","waitForAnimations","waitForStop","defaultInterpolate","percentInterpolate","colorInterpolate","AnimationState","removeType","_type","_onPush","_onInsertIndex","_onSetIndex","_onRemoveIndex","_onMoveIndex","oldIndex","newIndex","_onClear","oldValues","eachReverse","ListAutoDispose","Children","_events","_onRemoved","_onInserted","_setParent","childrenDisplay","_childrenDisplay","addChild","_display","addChildAt","markDirtyBounds","markDirty","cubic","ease","State","entity","settings","_entity","_settings","_userSettings","fallback","setRaw","_eachSetting","seen","lookup","applyAnimate","stateAnimationDuration","stateAnimationEasing","States","newState","_applyState","_applyStateAnimated","compare","compareArray","leftLength","rightLength","compareNumber","Adapters","_markDirtyKey","fold","loops","startingTime","_from","_to","_duration","_easing","_loops","_interpolate","getInterpolate","_oldTime","playing","_playing","stopped","_stopped","play","_startAnimation","percentage","_reject","_checkEnded","_run","_reset","Settings","_checkDirty","_userProperties","resetUserSettings","_runAnimation","Stopped","paused","_animatingSettings","_stopAnimation","_set","_animatingPrivateSettings","_stopAnimationPrivate","setPrivate","_setPrivate","Playing","Paused","_key","_markDirtyPrivateKey","_settingEvents","onPrivate","_privateSettingEvents","offPrivate","getRaw","_sendKeyEvent","_sendPrivateKeyEvent","_setRaw","_prevSettings","removeAll","getPrivate","_privateSettings","_setPrivateRaw","_prevPrivateSettings","setPrivateRaw","removePrivate","_animationTime","animatePrivate","Entity","isReal","templates","_createEvents","_root","_internalTemplates","_registerId","_afterNew","_new","shouldApply","_setObjectTemplate","_applyTemplates","_setDefaults","_afterNewApplyThemes","_applyThemes","_setDefaultFn","_setDefault","_setRawDefault","_clearDirty","_dirty","_dirtyPrivate","isDirty","isPrivateDirty","isType","_pushPropertyDisposer","_disposerProperties","_disposeProperty","_removeObjectTemplate","_addDirtyEntity","_addAnimation","animationTime","_name","adapters","isUserSetting","_setSoft","_removeTemplateProperty","_userPrivateProperties","_removeTemplatePrivateProperty","_setTemplateProperty","_findTemplateByKey","_setTemplatePrivateProperty","_findTemplateByPrivateKey","_walkParents","_rootContainer","_applyStateByKey","other","_eachTemplate","_apply","_applyTemplate","_templateDisposers","privateSettings","_runSetup","setup","_findStaticTemplate","_templates","_disposeTemplates","_findTemplate","findIndexReverse","_removeTemplates","isConnected","defaults","themeTags","Set","_defaultThemes","_lookupRules","every","_changed","_beforeChanged","prevId","entitiesById","_afterChanged","hasTag","addTag","removeTag","_t","_len","_key2","TemplateState","_stateChanged","TemplateStates","TemplateAdapters","Template","entities","_entities","_makePointerEvent","originalEvent","simulated","native","_onRenderer","_rendererDisposers","rendererEvent","RENDERER_EVENTS","stopParentDispatch","_dispatchParents","dispatchParents","isDragging","_hasDown","_hasMoved","_getBounds","bounds","globalBounds","removeHovering","markDirtyKey","_addPercentagePositionChildren","markDirtyPosition","_removeTemplateField","_templateField","_processTemplateField","new","_setDataItem","oldDataItem","_addPercentageSizeChildren","_percentageSizeChildren","_percentagePositionChildren","_addDirtyPosition","updatePivotPoint","_localBounds","centerX","centerY","_handleStates","setLayer","markDirtyLayer","tooltipMoveDp","_tooltipMoveDp","tooltipPointerDp","_tooltipPointerDp","_statesHandled","markDirtyAccessibility","_dragDp","dragMove","cancelTouch","_tooltipDp","toggleKey","_toggleDp","_isDragging","_prevWidth","_sizeDirty","_updateSize","_registerTabindexOrder","_unregisterTabindexOrder","contrast","sepia","invert","_focusDp","_hoverDp","_handleOver","_handleOut","_handleUp","_handleDown","inactive","_dragEvent","_dragPoint","_downPoint","_downPoints","dragEvent","dragPoint","hypot","getLocalBounds","markDirtySize","_addDirtyBounds","invalidateBounds","isFocus","_invalidateAccessibility","_updateBounds","oldBounds","_adjustedLocalBounds","newBounds","_fixMinBounds","getAdjustedBounds","privateWidth","privateHeight","_removeParent","hover","unhover","getTooltip","tooltipTarget","_setMatrix","toGlobal","_getTooltipPoint","markDirtyText","promise","_updatePosition","_removeFocusElement","adjustedLocalBounds","localBounds","_onShow","_onHide","_error","_isShowing","_isHiding","hovering","focused","isVisible","isVisibleDeep","compositeOpacity","compositeScale","compositeRotation","_walkParent","updateChildren","prevParent","getNumberFormatter","getDateFormatter","getDurationFormatter","toLocal","_getDownPoint","_getDownPointId","makeGraphics","_pattern","_draw","_clear","_checkDirtyFill","repetition","backgroundDisplay","_backgroundDisplay","beginFill","drawRect","endFill","createPattern","PicturePattern","_load","_image","patternWidth","patternHeight","decode","BlendMode","Graphics","crisp","gradientTarget","setLineDash","setLineDashOffset","blendMode","NORMAL","svgPath","fillGradient","fillPattern","strokePattern","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","shadowOpacity","shadow","colorInherited","opacityInherited","getFill","resolution","lineJoin","lineStyle","endStroke","eachChildren","Layout","HorizontalLayout","updateContainer","totalPercent","prevX","VerticalLayout","prevY","GridLayout","columnWidths","getColumnWidths","maxColumnHeight","totalWidth","getTextStyle","textDecoration","numericFields","getCustomDataValue","customData","tmp","makeContainer","allChildren","_removeHTMLContent","interactiveChildren","_prevHeight","contentMask","_contentMask","verticalScrollbar","_contentHeight","pWidth","pHeight","horizontal","childBounds","childX","childY","cl","ct","cb","_contentWidth","_addDirtyParent","_prepareChildren","_updateHTMLContent","_setHTMLContent","_positionHTMLElement","_updateChildren","_vsbd0","wheelEvent","shiftY","_vsbd1","walkChildren","updated","Text","makeTextStyle","makeText","textStyle","_getText","_removeTooltipElement","wordWrapWidth","oversizedBehavior","breakWords","minScale","_textStyles","styleName","maxLength","lastNonAlphanumericIndex","substring","_getAccessibleText","ariaLabel","lastTime","_listener","sensor","InterfaceColors","_makeText","_textKeys","_setMaxDimentions","_maybeUpdateHTMLColor","textVisible","getText","getAccessibleText","xtl","ytl","xbl","closePath","_updateBackground","_updateTextColor","_htmlContentHovered","_handleReaderAnnouncement","_tooltips","updateBackgroundColor","_keepHoverDp","outEvent","getEvent","_fillDp","_strokeDp","_labelDp","parentW","parentH","layerMargin","_w","_h","bgStrokeSizeY","bgStrokeSizeX","boundsW","boundsH","bns","sns","thousandSeparator","decimalSeparator","_part","parseDate","formatToParts","toUTCDate","Timezone","hour12","fractionalSecondDigits","_dtf","convertLocal","offsetUTC","userOffset","newUserOffset","ignoreTimezone","locales","_getMonth","_getShortMonth","_getShortWeekday","_getWeekday","_months","_shortMonths","_weekdays","_shortWeekdays","dmillisecond","dsecond","dminute","dhour","dday","dweek","dmonth","aminute","ahour","aday","aweek","amonth","ayear","_toTimeUnit","_getUnitValue","_getUnitValues","_len2","setTranslationsAny","_len3","_key3","Theme","setupDefaultRules","themeClass","ruleRaw","setColor","ic","DefaultTheme","horizontalLayout","verticalLayout","pinchZoom","maxZoomLevel","minZoomLevel","zoomStep","colorOpacity","checkered","centered","horizontalGap","verticalGap","density","fillField","strokeField","nameField","layer","clickTarget","ariaChecked","cornerRadiusBL","cornerRadiusTL","cornerRadiusBR","cornerRadiusTR","populateText","fontFamily","textType","baseRadius","editOn","multiLine","dRadius","dInnerRadius","getFillFromSprite","getStrokeFromSprite","ariaValueMin","ariaValueMax","ariaLive","spikes","rotationStep","Matrix","setTransform","pivotX","pivotY","origin","applyInverse","a1","c1","prepend","tx1","_slicedToArray","_arr","_n","_e","_s","sliceIterator","TypeError","TAU","mapToEllipse","_ref","rx","ry","cosphi","sinphi","centerx","centery","approxUnitArc","ang1","ang2","vectorAngle","ux","uy","vx","vy","dot","acos","_ref2","px","py","_ref2$xAxisRotation","_ref2$largeArcFlag","_ref2$sweepFlag","curves","pxp","pyp","lambda","_getArcCenter","rxsq","rysq","pxpsq","pypsq","radicant","centerxp","centeryp","vx1","vy1","vx2","vy2","getArcCenter","_getArcCenter2","curve","_mapToEllipse","_mapToEllipse2","_mapToEllipse3","checkArgs","actual","expected","checkMinArgs","checkEvenArgs","splitArcFlags","flag","assertBinary","eachTargets","hitTarget","onPointerEvent","touches","isTainted","willReadFrequently","getImageData","clearCanvas","view","CanvasPivot","CanvasDisplayObject","subStatus","_layer","_removeObject","getLayer","dirty","defaultLayer","_ghostLayer","setMargin","layers","registerChildLayer","resizeLayer","resizeGhost","_addBounds","_bounds","_getColorId","_colorId","paintId","_isInteractive","_forceInteractive","_isInteractiveMask","_matrix","getLocalMatrix","_uMatrix","bn","_addEvent","_localMatrix","_transform","_transformMargin","_transformLayer","_omitTainted","ghostLayer","ghostContext","save","_runPath","clip","globalAlpha","compoundAlpha","_render","restore","tainted","_hovering","dragging","_dragging","shouldCancelTouch","_touchActive","CanvasContainer","_childLayers","deep","setPoint","Op","colorize","_context","_forceColor","colorizeGhost","forceColor","pathGhost","addBounds","BeginPath","beginPath","BeginFill","EndFill","clearShadow","EndStroke","LineStyle","strokeStyle","lineWidth","LineDash","dash","LineDashOffset","dashOffset","lineDashOffset","DrawRect","DrawCircle","DrawEllipse","radiusX","ellipse","Arc","anticlockwise","arcBounds","ArcTo","LineTo","MoveTo","ClosePath","BezierCurveTo","cpX","cpY","cpX2","cpY2","bezierCurveTo","QuadraticCurveTo","Shadow","offsetX","offsetY","GraphicsImage","CanvasGraphics","_operations","_pushOp","op","_fillAlpha","_hasShadows","_strokeAlpha","drawCircle","drawEllipse","qcpx","qcpy","SEGMENTS_REGEXP","ARGS_REGEXP","layerDirty","globalCompositeOperation","renderDetached","CanvasText","_textInfo","_shared","textBaseline","_prerender","ignoreGhost","ignoreFontWeight","fontStyle","_getFontStyle","style2","fontVariant","_measure","textChunks","fillText","_ignoreFontWeight","refText","styleRestored","ascent","metrics","_measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","currentFill","currentChunkWidth","currentVerticalAlign","currentDecoration","skipFurtherText","firstTextChunk","leftoverChunks","chunkWidth","actualBoundingBoxLeft","actualBoundingBoxRight","ellipsisMetrics","ellipsisWidth","excessWidth","_truncateText","tmpText","leftBoundMod","rightBoundMod","boundsMod","chunkHeight","lineHeight","currentChunkOffset","baselineRatio","_fitRatio","maxW","maxH","fallbackBreakWords","measureText","fakeMetrics","innerText","fontBoundingBoxAscent","fontBoundingBoxDescent","CanvasTextStyle","CanvasRadialText","_renderCircular","inward","kerning","clockwise","shouldReverse","_textReversed","maxAngle","midAngle","lineStartAngle","rotate","angleShift","charWidth","_measureCircular","rtlChar","splitPattern","CanvasImage","_imageMask","naturalWidth","naturalHeight","_getMask","imageSmoothingEnabled","CanvasRendererEvent","originalPoint","CanvasRenderer","GhostLayer","_patternCanvas","_layerDom","exportableView","_touchActiveTimeout","_delayTouchDeactivate","prevent","resetImageArray","imageArray","tapToActivateTimeout","debugGhostView","createLinearGradient","createRadialGradient","radius1","radius2","graphics","_patternContext","clearRect","makeRadialText","makePicture","resize","_calculatedWidth","_calculatedHeight","calculatedWidth","calculatedHeight","_realWidth","_realHeight","createDetachedLayer","CanvasLayer","getLayerByOrder","existingLayer","_dirtyLayers","_lastPointerMoveEvent","_dispatchGlobalMousemove","distributeId","_colorMap","_adjustBoundingBox","DOMRect","adjustPoint","_getHitTarget","colorId","getObjectAtPoint","getImageArray","_withEvents","dispatching","cleanup","disposed","_dispatchEventAll","_dispatchEvent","dispatched","_dispatchMousedown","originalTarget","dragged","_mousedown","delete","_replacedCursorStyle","_dispatchGlobalMouseup","_dispatchDragMove","_dispatchDragEnd","clickevent","_dispatchDoubleClick","_dispatchWheel","_makeSharedEvent","_onPointerEvent","timer","_initEvent","mouseup","mousedown","mousemove","canvasWidth","canvasHeight","maxScale","maintainPixelRatio","canvases","forceRender","needRerender","exportableContext","extraX","extraY","domWidth","domHeight","_resolution","_width","_height","rAF","Root","accessible","_a11yD","useSafeResolution","rootElements","inner","tooltipContainerBounds","_tooltipContainerSettings","_inner","_updateComputedStyles","_init","moveDOM","_initResizeSensor","_handleLogo","_logo","_showBranding","_getRealSize","_getCalculatedSize","calculateSize","rootContainer","htmlElementContainer","_htmlElementContainer","focusElementContainer","_focusElementContainer","tooltipElementContainer","_tooltipElementContainer","_isShift","focusedSprite","_focusedSprite","downEvent","dragOffsetX","dragOffsetY","_keyboardDragPoint","moveEvent","upEvent","_tabindexes","_startTicker","setThemes","_addTooltip","_hasLicense","_resizeSensorDisposer","_focusElementDirty","_updateCurrentFocus","_runTickers","_tickers","_runAnimations","running","_isDirtyAnimation","_runDirties","allParents","_isDirtyParents","_dirtyParents","_isDirty","depths","_dirtyBounds","_positionHTMLElements","dirtyPositions","_dirtyPositions","_renderFrame","_updateTick","_checkComputedStyles","animationDone","_runTicker","_ticker","_paused","_runTickerNow","performance","updateTick","_markDirty","_markDirtyRedraw","eachFrame","markDirtyGlobal","tooltipContainerSettings","_invalidateTabindexes","aindex","bindex","groups","_moveFocusElement","_makeFocusElement","_decorateFocusElement","_positionFocusElement","focusElement","ariaCurrent","ariaSelected","ariaOrientation","ariaValueNow","ariaValueText","ariaControls","tabIndex","_handleFocus","_handleBlur","_hideFocusElement","focusPadding","_getSpriteByFocusElement","_focusNext","focusableElements","tooltipElement","_makeTooltipElement","documentPointToRoot","rootPointToDocument","fontHash","_fontHash","_invalidateLabelBounds","_licenseApplied","_makeHTMLElement","boxSizing","_htmlEnabledContainers","setting","transformOrigin","generateColors","tzoffset","parsedDate","offsetDif","newDiff","XYChartDefaultTheme","panX","panY","wheelStep","pinchZoomX","pinchZoomY","legendLabelText","snapToSeriesBy","moveThreshold","forceInactive","maxDeviation","zoomX","zoomY","fixAxisSize","multiLocation","tooltipDateFormats","autoZoom","openValueXGrouped","openValueYGrouped","valueXGrouped","valueYGrouped","seriesTooltipTarget","adjustBulletPosition","lowValueXGrouped","lowValueYGrouped","highValueXGrouped","highValueYGrouped","_removeSeries","_processSeries","_placeBulletsContainer","_removeBulletsContainer","wSign","hSign","maskContent","plotsContainer","topPlotContainer","zoomOut","_processAxis","topGridContainer","_handlePlotDown","_handlePlotUp","_handlePlotMove","_maskGrid","_setUpTouch","_unstack","_posXDp","_posYDp","markDirtyExtremes","wheelX","wheelY","shiftX","wheelZoomPositionX","wheelZoomPositionY","_handleWheelAnimation","_getWheelSign","se","_fixWheel","_handleSetWheel","_wheelDp","_downStartX","_downEndX","_downStartY","_downEndY","_panStart","_panEnd","_dispatchWheelAnimation","_isPanning","_movePoints","_handlePinch","panStart","panEnd","downPoints","movePoints","movePoint","downPoint0","downPoint1","movePoint0","movePoint1","downStartX","downEndX","downPos0","downPos1","movePos0","movePos1","sa","ea","downStartY","downEndY","_handleCursorPosition","cursorPoint","closestItem","showDataItemTooltip","_updateCursor","updateCursor","_addCursor","_colorize","_setChart","_handleCursorSelectEnd","_handleScrollbar","grip","_handleAxisSelection","_handleZoomOut","_fixPosition","_markDirtyAxes","_seriesAdded","downPositionX","downPositionY","position0","position1","_removeAxis","processChart","axisParent","gridParent","topGridParent","_updateChartLayout","updateGrips","inPlot","otherCharts","_otherCharts","chartPlotContainer","documentPoint","chartRoot","hh","plotT","plotB","tooltips","closestPoint","_movePoint","maxTooltipDistanceBy","tooltipSeries","_tooltipToLocal","prevBottom","_drawLines","_handleXLine","_handleYLine","_handleLineFocus","_handleLineBlur","_handleLineMove","nextPosition","_alwaysShow","alwaysShow","_tooltipX","_updateXLine","_tooltipY","_updateYLine","_handleSyncWith","syncWith","_getPoint","_toX","_toY","_handleMove","_handleCursorDown","_handleCursorUp","_lastPoint2","_inPlot","rootPoint","_getPosition","_lastPoint","xyPos","userPositionX","userPositionY","xy","handleCursorShow","_updateLines","_updateSelection","handleCursorHide","ListData","incrementRef","decrementRef","processor","processRow","markDirtyValues","disposeDataItem","showDataItem","hideDataItem","_onDataClear","_updateFields","_mainDataItems","_markDirtyGroup","_dataChanged","_makeDataItem","_afterDataChange","valueFields","_valueFields","_valueFieldsF","fieldKey","workingKey","_fields","_fieldsF","makeDataItem","pushDataItem","_valuesDirty","_dataGrouped","axisHeader","_processAxisRange","makeLabel","_updateFinals","sAnimation","_sAnimation","eAnimation","_eAnimation","maxZoomFactorReal","_createAssets","_rangesDirty","_prepareDataItem","markDirtySelectionExtremes","_calculateTotals","_updateAxisRanges","_seriesAxisRanges","_inversed","_axisLength","_updateLC","rendererTags","_updateTooltipBounds","axisHeadersContainer","_toggleFHDataItem","forceHidden","fh","_toggleDataItem","minor","makeGrid","makeTick","makeAxisFill","_processBullet","axisBullet","_updatePositions","_updateGhost","getCellWidthPosition","gWidth","updateLabel","_cursorPosition","_snapToSeries","getSeriesItem","updateLegendMarker","roundAxisPosition","_updateTooltipText","positionTooltip","_location","shouldGap","_nextItem","_autoGapCount","_fieldName","createAxisRange","_groupSeriesData","_itemMap","_handleRangeChange","_prepareAxisItems","openKey","otherAxis","__valueXShowFields","__valueYShowFields","minorLabelsEnabled","minorGridEnabled","fillIndex","categoryLocation","endCategoryLocation","updateGrid","updateFill","basePosition","getDataItemPositionX","cellLocation","_axisLocation","getDataItemCoordinateX","getDataItemPositionY","getDataItemCoordinateY","dataItemToPosition","axisPositionToIndex","_adjustPosition","segmentedLine","firstGroup","firstPoint","_handleThumbDown","_handleThumbUp","_handleThumbMove","pan","_thumbDownPoint","_downStart","_downEnd","_event","downStart","downEnd","_getPan","_point1","_point2","_positionTooltip","gridTemplate","axisChildren","_ls","_lc","bulletPosition","previousBullet","previousSprite","fillDrawMethod","_dirtyExtremes","_dirtySelectionExtremes","_syncDp","someDirty","_getMinMax","_handleSizeDirty","_getSelectionMinMax","_groupData","_formatText","differencePower","minLog","_minLogAdjusted","_minRealLog","stepAdjusted","minorGridCount","minorStep","minorValue","_adjustMinMax","minorDataItem","minorDataItems","minorLabel","labelEndPosition","labelEndValue","valueToFinalPosition","_cellLocation","getStackedXValueWorking","getStackedYValueWorking","cellEndValue","_fixMin","_fixMax","vc","fieldWorking","selectionStrictMinMax","outOfSelection","smin","selectionMinReal","selectionMaxReal","_syncAxes","LN10","minDiff","minAdapted","maxAdapted","_getDelta","strictMinMaxSelection","_fixZoomFactor","_saveMinMax","_min","_max","ceiledStep","extraDecimals","oldDiff","syncMin","syncMax","syncStep","_checkSync","_handleBullets","getDataItemById","_makeBullets","_shouldMakeBullet","bulletFunction","_makeBullet","_makeBulletReal","addBullet","_aggregatesCalculated","_selectionAggregatesCalculated","baseValueSeries","_dataProcessed","_calculateAggregates","_psi","_pei","markerRectangle","_adjustStartIndex","absSum","changePercent","changePrevious","changePreviousPercent","changeSelection","changeSelectionPercent","adjustedStartIndex","_getBase","neutral","customFunction","propertyValue","_hideBullets","_positionBullets","_positionBullet","_getItemReaderLabel","_sequencedShowHide","txt","hoverDataItem","unhoverDataItem","_removeAxisRange","_makeFieldNames","_valueXFields","_valueYFields","_valueXShowFields","_valueYShowFields","valueXFields","valueYFields","xName","xCapName","yName","yCapName","xLetter","yLetter","_fixVC","_handleMaskBullets","tooltipFieldX","_tooltipFieldX","tooltipFieldY","_tooltipFieldY","_stack","getStackedXValue","getStackedYValue","_seriesValuesDirty","_markStakedDirtyStack","_stackDirty","_selectionProcessed","vcx","vcy","processYSelectionDataItem","processXSelectionDataItem","selectionMinY","selectionMaxY","selectionMinX","selectionMaxX","_makeRangeMask","mainContainerMask","_mainContainerMask","seriesIndex","_couldStackTo","_stackDataItems","_reallyStackedTo","_stackedSeries","stackToItemKey","stackToSeries","stackToItem","stackedToSeries","_axesDirty","_markDataSetDirty","_shouldShowBullet","realField","previousBounds","yo","xo","_positionX","_positionY","_handleDataSetChange","_dataSetId","resetGrouping","mainDataItems","_markDirtyStack","_skipped","itemLocationX","itemLocationY","_aLocationX0","_aLocationX1","_aLocationY0","_aLocationY1","_getTooltipTarget","_emptyDataItem","_shouldInclude","_position","minSelection","dl","Linear","areaStart","areaEnd","lineStart","_point","lineEnd","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","pi","epsilon","tauEpsilon","strings","Path","_x0","_y0","_x1","_y1","_append","appendRound","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","da","withPath","shape","RangeError","defined","constant","buffer","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","strokes","fills","_fillGenerator","makeStroke","makeFill","_strokeTemplate","_fillTemplate","legendStroke","_legendStroke","legendFill","_legendFill","curveFactory","_strokeGenerator","strokeTemplateField","fillTemplateField","strokeTemplateFound","fillTemplateFound","hasValues","_clearGraphics","_sindex","_dindex","_startSegment","dataItemIndex","currentEndIndex","fillTemplate","originalTemplate","strokeTemplate","xOpenFieldValue","yOpenFieldValue","basePosX","basePosY","baseField","openLocationX","openLocationY","fillVisible","getOpen","o","rangeStrokeTemplate","rangeFillTemplate","_getPoints","_drawStroke","_drawFill","iPoint","xPos0","yPos0","stackToItemX","stackToItemY","closeIPoint","_previousPoint","pp0","pp1","pp2","pp3","_points","_firstPoint","__assign","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__generator","ops","verb","__read","ar","__makeTemplateObject","cooked","raw","templateObject_1","LineChart","createLineSeries","dashedLine","deprecatedLog","componentName","templateObject_1$1","templateObject_1$2","LineChart$2","responsive","categoryAxis","getSize","borders","createLineCategory","createLineValue","flexGrow","primary","main","getCursorPosition","templateObject_1$3","templateObject_1$4","templateObject_1$5","templateObject_1$6","RadarChart$2","onClick","seriesAName","seriesBName","activeTheme","getStrokeColor","backgrounds","useLayoutEffect","currentScore","buildCustomLabel","dataVis","bullet1","series2","bullet2","ControlAlignmentOverview","ControlAlignmentOverview$2","getChartData","nameMapCounter","chartNameToOriginalMap","newData","paletteIndex","colorPalette","dataVisWithMeaning","newChartName","getTextColor","customLabel","activeCols","originalName","seriesColumn","labelBullet","BoxTreeChart","spacing","getContainerColor","getColumnTextColor","paletteShade","shade","level1","level1_column","level1_bullet","tooltipBackgroundColor","navBackground","allLabels","displayedLabels","remainingLabelsCount","remainingLabelsCountText","labelList","renderTooltip","level2_bullet","templateObject_1$7","templateObject_1$8","RiskAlignmentOverview","templateObject_1$9","templateObject_1$a","templateObject_1$b","templateObject_1$c","getContainerColor$1","RiskAlignmentOverview$2","customLabels","hoverSlice","hovered","allSlices","currentSliceCategory","inactiveSliceCategories","activeSlice","seriesSlice","sliceDataItem","resetSlice","setActiveSlice","HorizontalDivergentStackedBarChart","getContainerColor$2","ScoreChart","negativeSeries","positiveSeries","memoTransformData","useMemo","negativeKeyMap","negativeValues","acc","transformData","activeLabels","clickedItem","onColumnClick","parentLabel","color$1","adjustHeight","targetHeight","firstCategory_1","templateObject_1$d","templateObject_1$e","templateObject_1$f","templateObject_1$g","templateObject_1$h","templateObject_1$i","monthLabelText","renderExtender","ScoreChart$2","chartData","chartColors","stageSizePercent","reverseAxis","positionPercent","positionValue","stageSizeValue","valuePercent","stages","toPercent","results","lastValue","formatData","minRangeX","maxRangeX","extendedMin","extendedMax","maxAxisTicks","valueData","labelValue","isInteger","toFixed","lastItem","DonutChart","getContainerColor$3","DonutChart$2","activeId","useTransitions","defaultRadius","hoverRadius","activeRadius","pieSeries","defaultActiveItem","HorizontalDumbbellPlotChart","getNestedContainerColor","getContainerColor$4","getColorLibrary","HorizontalDumbbellPlotChart$2","colorPaletteName","valueColor","rangeColor","minCategoryCount","getRangeColor","getValueColor","disableLabel","rangeEnd","rangeStart","rangeSeries","hideIfZero","openBullet","closeBullet","valueSeries","valueBullet","availableSpace","BoxTree","templateObject_1$j","templateObject_1$k","templateObject_1$l","templateObject_1$m","templateObject_2","templateObject_3","templateObject_4","templateObject_5","templateObject_6","templateObject_7","templateObject_8","templateObject_9","templateObject_10","templateObject_11","templateObject_12","templateObject_13","templateObject_14","templateObject_15","templateObject_16","templateObject_17","templateObject_18","templateObject_19","templateObject_20","templateObject_21","templateObject_22","templateObject_23","templateObject_24","templateObject_25","templateObject_26","templateObject_27","templateObject_28","templateObject_29","templateObject_30","templateObject_31","templateObject_32","templateObject_33","templateObject_34","templateObject_35","ISortDirection","getContainerColor$5","BubbleChart","selectedControl","buildData","homeText","breadcrumbs","formatBreadcrumbItem","hoverBreadcrumb","labelItem","labelItem_column","labelItem_bullet","countItem_bullet","_f","itemId","getContainerColor$6","getColorLibrary$1","getContainerColor$7","seriesCount","bubble","textOffset","setBubbleColor","labelColor","bubbleLabelColor","xLabel","getLabel","seriesType","yLabel","circleText","circleLabel","diamond","diamondText","diamondLabel","RefresherChart","showAllRows","fillParentHeight","Table","TableHead","TableWrapper","TableChartContent","TableChartLegendKeyWrapper","TableChartLegend","TableRow","hasBorder","Logo","LabelCell","isClickable","isOpaque","CellContent","span","TableChartCell","TableChartRow","TableChartRowCells","TableChartRowSeperator","hideZeroLine","TableChartRowBlock","variant","TableChartRowBlockLabel","TooltipTrigger","RadioSelect","NAME_HEADER","VALUE_HEADER","largestFirst","negativeKeys","positiveKeys","positiveKeyIds","negativeKeyIds","getRange","hideLegend","middlePercent","getTotalValueAsPercent","totalAcc","rowRange","getRowRange","transformToBlocks","firstPositiveKey","defaultColor","blocks","block","transparent","firstPositive","configuration","build","remainingNegative","remainingPositive","initialNegativePercent","initialPositivePercent","renderRemainder","remainder","sortField","noNegatives","aRange","bRange","aRangeTotal","bRangeTotal","aName","bName","dataChart","templateObject_1$n","templateObject_2$1","templateObject_3$1","templateObject_4$1","templateObject_5$1","templateObject_6$1","templateObject_7$1","templateObject_8$1","templateObject_9$1","templateObject_10$1","templateObject_11$1","templateObject_12$1","templateObject_13$1","templateObject_14$1","templateObject_15$1","templateObject_16$1","templateObject_17$1","templateObject_18$1","templateObject_19$1","templateObject_20$1","templateObject_21$1","templateObject_22$1","templateObject_23$1","templateObject_24$1","templateObject_25$1","templateObject_26$1","templateObject_1$o","templateObject_2$2","templateObject_1$p","templateObject_1$q","templateObject_1$r","templateObject_2$3","templateObject_3$2","templateObject_4$2","templateObject_1$s","templateObject_1$t","templateObject_2$4","templateObject_3$3","templateObject_4$3","templateObject_5$2","templateObject_6$2","templateObject_7$2","templateObject_8$2","templateObject_9$2","templateObject_10$2","templateObject_11$2","templateObject_1$u","VerticalRefresherChart","ChartHolder","ScrollWrapper","showXAxis","ul","Marker","li","Labels","Columns","showYAxis","BlockWrapper","singlePadding","Block","useMinHeight","LabelWrapper","BlockWithCount","OuterCount","Icon","RefresherChart$2","onRowClick","onValueClick","selected","showRadios","onSort","initialSortField","hideCounts","tooltipContents","showFolders","enableDrillDown","activeItemId","setActiveItem","labelsCanWrap","preventInteraction","useNameOverTotal","showAcinLogoOnRows","firstColumnWidth","_g","Asc","setSortField","highlightedItem","setHighlightedItem","firstRow","legendItems","onSortClick","sortDir","Desc","renderTooltipContent","showLegend","getRowHeight","checkHeight","nameHeader","sortable","secondaryHeader","valueHeader","rowId","showName","hasRowBorder","hasCellBorder","renderGapCell","noHighlightedItem","checkRowForHighlights","rowIncludesHighlight","itemIsClickable","onChange","isChecked","renderFirstColumn","noWrap","handleRowClick","secondaryValue","isAcin","infoId","handleBlockClick","tooltipRef","weight","VerticalRefresherChart$2","chartHeight","yAxisLabel","useMinHeights","columnsRef","setWidth","setHeight","updateWidth","updateHeight","highestColumn","highest","currentTotal","calculatePercentage","sortedChart","sumA","sumB","roundedHighestColumn","calcuateYAxisRange","columnId","isZero","isSingle","StackedAreaChart","getPaletteColours","COUNT_VALUE","StackedAreaChart$2","licence","xAxisLabel","handleClickCallback","categoryName","formattedData","formatData$1","paletteIndexes","getPaletteIndexes","paletteColours","colorLibrary","license","categoryField","maxTotalCount","maxYValueAxis","serieColor","valueYField","categoryXField","customTooltip","labelHTML","tooltipBackground","getContrastTextColor","ChartSummary","Tile","borderRadius","newR","newG","newB","padStart","reduceOpacity","Count","Label$1","ChartSummary$2","tile","getColor","InsightCodeTable","InsightTable","LabelCellContent","Block$1","Instances","NameHeadCell","getColorLibrary$2","InsightCodeTable$2","onBlockClick","getBlockColor","cat","totalA","instances","instance","totalB","localeCompare","isEmpty","IAdpFileStage","IAdpFileStatus","IAlertMessageType","IApprovalWorkflow","IBubbleChartShape","IChart_Value_Format","ICalibrateDownloadFileStatus","IColorPaletteName","IControlQualityScore","IDashboardItemType","IDataFormat","IDataMatcherAssignedTo","IDataMatchingMatchStatus","IDataMatchingStatus","IDataQualityInputTextVariant","IDataQualityJobStatus","IDataQualityPromptCategory","IDownloadFileType","IDownloadStatus","IEntityAssigneesType","IFileUploadStatus","IFilterGroupInputType","IFilterType","IGlobalSearchResultAssetType","IInsightMetricType","IInsightType","IInspectorIdType","IMatchingJobClusterStatus","IMatchingJobControlAction","IMatchingJobControlStatus","IMatchingJobQualityLevel","IProductType","IReadPermission","IReasonCodeType","IReportChartType","IReportType","IRiskIntelligenceAlertInsightType","IRiskIntelligenceType","ISentiment","ITableHeaderType","ITableRowType","ITableVariant","IUnmatchedIndexControlStatus","Overview","DetailsWrapper","DataRelationshipsWrapper","ControlDetails","HeadingWrapper","HeadingText","NSSWrapper","Content","AcinControlDescription$2","control","showMore","toggleDescription","showDescription","review","identify","actions","renderDescription","previewText","showPreview","isExpanded","AcinControlNetworkSignalScore","AcinControlNetworkSignalScore$2","score","ControlDescriptionQuality","templateObject_2$5","ControlDescriptionQuality$2","startCase","toLower","Unclear","Clear","getBadgeColour","appearance","containerBackground","RelationshipGroup","HeaderWrapper","EmtpyGroupNotice","GroupedLinkList","GroupedContentWrapper","GroupHeading","AccordionHeading","accent1","ProductGroup","ProductType","Product","ProductList","ControlSelect","HeadingText$1","HeadingWrapper$1","CompareRow","isHeader","Actions","Rewrite","INIITIAL_STATE","copiedDescription","onUpdateCopiedDescription","navigateToRewrite","Context","useControlRewrite","ControlDetails$2","isShowMoreOpen","setIsSohowMoreOpen","user","setDrawerState","__typename","controlCode","controlSource","objectives","controlType","controlOwner","controlFrequency","nss","automation","optionalControlCode","optionalControlSource","optionalDescription","optionalObjectives","optionalControlType","optionalControlOwner","optionalControlFrequency","controlQualityScore","getData","accountName","subTitle","RiskDetails","Content$1","RelationshipGroupHeading","EmptyRelationshipGroup","heading","hideTitle","getHeaderText","isPlural","allowsNavigation","GroupedContent","allowsNavigation$1","GroupedRelationshipGroupList","renderGroupHeading","onNavigate","flatMap","onLinkListClick","hasAction","GroupedRelationshipGroupContext","hasGroups","useGroupedRelationshipGroupContext","GroupedRelationshipGroup","renderWhenEmpty","Provider","NoGroups","Panel","Header","Accordion","Groups","templateObject_2$6","templateObject_2$7","templateObject_3$4","templateObject_5$3","templateObject_2$8","templateObject_3$5","templateObject_4$4","templateObject_5$4","templateObject_2$9","templateObject_3$6","templateObject_4$5","templateObject_2$a","templateObject_2$b","templateObject_3$7","templateObject_4$6","templateObject_5$5","RelationshipGroup$2","hasItems","renderLinkList","RiskGroup","pageRiskId","risks","RiskDetails$2","riskCode","riskSource","riskGroup","optionalRiskCode","riskLevel","optionalRiskLevel","riskReason","optionalRiskReason","optionalRiskSource","getTitle","DataRelationships","HeadingText$2","containerBackground$1","RiskDataListAccordian","RiskDataListNestedAccordian","AccordianContent","AccordionContentNested","RiskDataList","RiskDataListContent","RiskDataListDescription","RiskDataRow","RiskDatalLink","RiskDataLinkList","RiskIntelText","ImpactedRegRowHeader","HeaderText","HeaderWrapper$1","RiskDataList$1","listCount","listName","listDescription","withAccordion","headerActions","defaultOpen","RiskDataHeader","ImpactedRegListContent","sortedByArticles","regulator","articles","regulationId","inline","articleId","newWindow","ImpactedRegulationsList","expandAll","setExpandAll","ProductsGroup","products","hasProducts","buildCategoryRow","productsByType","product","findProductsByType","Asset","Trading","Settlement","Instrument","DataRelationships$2","relatedRisks","relatedControls","relatedBusinessLines","relatedRisksInventories","relatedRegulations","keywords","showProducts","hideProductsTitle","hideThemesTitle","accountHasThemes","riskItems","riskInventoryItems","controlItems","businessLineItems","themeItems","productItems","Overview$2","controlData","riskData","loading","isControl","isRisk","withOverlay","relatedRiskInventories","relatedClientControls","NetworkMatch","MatchSection","Content$2","AlertWrapper","CompareRow$1","CompareHeader","headingA","headingB","countA","countB","onClickRewrite","withLogo","CompareControlDetails","renderMultipleA","renderMultipleB","isDescriptionExpanded","controlA","controlB","highlightedFields","controlALink","controlBLink","useState","setShowDescription","applyHighlight","CompareDataRelationships","CompareDataRelationships$1","controlARiskItems","controlBRiskItems","controlABusinessLineItems","controlBRiskInventoryItems","controlAThemes","controlBThemes","controlAThemeItems","controlBThemeItems","controlBRelatedProducts","AlertMessage","ViewControlButtonPanel","ViewControlButtonPanel$1","controlLink","matchedControlLink","asButton","useControlLink","controlAId","controlBId","CompareControlOneToOne","ControlSelect$2","fullWidthDropdown","formatControlSelectData","controlsB","controlsA","CompareControlOneToMany","activeControl","setActiveControl","controlCount","matchedControl","CompareControlManyToOne","CompareEmpty","ControlInstanceOptions","IconWrapper","GetControlInstanceOptionsDocument","useGetControlInstanceOptionsLazyQuery","baseOptions","useLazyQuery","templateObject_1$v","templateObject_1$w","templateObject_1$x","templateObject_1$y","templateObject_1$z","templateObject_1$A","templateObject_1$B","templateObject_1$C","templateObject_1$D","templateObject_1$E","templateObject_1$F","INIITIAL_STATE$1","insightBySelection","controlInstanceSelection","onUpdateInsightBy","onUpdateControlInstance","onResetControlInstance","Context$1","useControlInstance","ControlInstanceProvider","setControlInstanceSelection","setInsightBySelection","FILTERS_KEYS","availableInsightsBy","ControlInstanceOptionsWithParams","controlId","updateQuery","availableControlInstance","setAvailableControlInstance","locationSearch","setLocationSearch","insightByParam","setInsightByParam","controlInstanceParam","setControlInstanceParam","fetchPolicy","getControlInstanceOptions","URLSearchParams","newInsightParam","newControlInstanceParam","insightByIdValue","variables","insightBy","groupKey","filterValues","filterGroups","availableFilters","onApplyChange","filterInput","insightValue","controlInstanceValue","RadioList","appliedFiltersCount","appliedFilters","getFiltersFromQuery","FILTERS_KEYS$1","ControlInstanceOptions$1","insightById","controlInstanceId","onInsightByIdChange","onControlInstanceIdChange","foundInsightBySelection","NetworkCompareAlertMessageFragmentDoc","RelatedKeywordFragmentDoc","RelatedClientRiskFragmentDoc","NetworkCompareClientControlFragmentDoc","RelatedAcinRiskFragmentDoc","RelatedRiskInventoryFragmentDoc","RelatedRegulatoryArticleFragmentDoc","RelatedRegulationFragmentDoc","AcinControlNetworkSignalScoreFragmentDoc","RelatedProductFragmentDoc","NetworkCompareAcinControlFragmentDoc","NetworkCompareControlOneToOneFragmentDoc","NetworkCompareControlOneToManyFragmentDoc","NetworkCompareControlManyToOneFragmentDoc","NetworkCompareEmptyFragmentDoc","RelationshipInsightContextFragmentDoc","GetControlComparisonDataDocument","templateObject_1$G","templateObject_2$c","templateObject_3$8","templateObject_4$7","templateObject_5$6","templateObject_6$3","templateObject_12$2","templateObject_1$H","templateObject_2$d","templateObject_3$9","templateObject_4$8","templateObject_5$7","templateObject_6$4","templateObject_7$3","templateObject_1$I","templateObject_1$J","templateObject_2$e","templateObject_3$a","templateObject_4$9","templateObject_1$K","templateObject_2$f","templateObject_1$L","templateObject_1$M","templateObject_2$g","templateObject_3$b","templateObject_4$a","templateObject_1$N","templateObject_1$O","templateObject_1$P","templateObject_1$Q","templateObject_1$R","containerBackground$2","nestedContainerBackground","boxShadow","GroupHeader$1","ControlListGroupDividerRow","ControlListSubGroupDividerRow","ControlListGroupDivider","ControlListFooterRow","ScrollToTopButton","ControlListFooter","Toggle","GroupContent","SubGroup","SubGroupToggle","GroupHeaderSwatch","ControlRowWrapper","ControlRow","CompletenessReportControlListView","RiskInventory","LoadingWrapper","LoadingInnerWrapper","Footer","RelationshipInsights","Insight","ColourStrip","Title","Description","ExternalComment","RelationshipInsights$2","insight","externalComment","ControlRoute","MenuWrapper","Page","ControlAnchorMenu","ListItem","ControlAnchorMenu$2","MenuWrapper$1","menuItems","querySelector","offsetPosition","scrollTo","CompareRisks","Content$3","Section","HeadingWrapper$2","CompareRiskOneToMany","risksB","riskA","renderCount","CompareRiskManyToOne","risksA","riskB","NetworkCompareClientRiskFragmentDoc","NetworkCompareAcinRiskFragmentDoc","NetworkCompareRiskOneToManyFragmentDoc","NetworkCompareRiskManyToOneFragmentDoc","GetComparisonByRiskIdDocument","templateObject_1$S","templateObject_2$h","templateObject_1$T","templateObject_2$i","templateObject_1$U","templateObject_2$j","templateObject_1$V","templateObject_1$W","NetworkMatchRisks","riskId","useQuery","previousData","isNetworkLoading","pageData","getComparisonByRiskId","renderContent","NetworkMatch$2","insideDrawer","relationshipType","setRelationshipType","relationshipInstanceId","setRelationshipInstanceId","hasControlInstanceSelection","notifyOnNetworkStatusChange","getControlComparisonData","showAlert","setShowAlert","timer_1","multiline","renderAlert","relationshipInsightContext","renderRelationshipInsights","AttributeChange","AttributeChangeDot","AttributeChange$1","isLatest","Date$1","DateVisible","DateComp","dateISO","visibleDate","getVisibleDate","getTooltipDate","headers","ControlHistoryTableFragmentDoc","GetControlHistoryDocument","templateObject_1$X","templateObject_2$k","templateObject_3$c","templateObject_4$b","templateObject_1$Y","templateObject_1$Z","templateObject_2$l","templateObject_1$_","templateObject_1$$","templateObject_1$10","ControlHistory","SectionContent","LoadingWrapper$1","ErrorWrapper","ControlHistory$2","activePage","itemsPerPage","onSetTotalResults","onSetTotalPages","onSetRange","activeSort","setActiveSort","pagination","controlHistoryData","getControlHistory","getControlHistoryData","attributeChange","getRows","hasNoData","hasServerError","activeSorting","totalResults","totalPages","handleSort","renderHeading","noData","tabIds","defaultTab","tabs","PageHeaderWrapper","activeTab","handleChangeTab","firstTier","variation","isCompressed","createFirstTier","secondTier","onTabClick","hasTabs","pageBackground","ControlPage","AlertWrapper$1","ClientControlFragmentDoc","AcinControlFragmentDoc","GetControlByIdDocument","templateObject_1$11","templateObject_1$12","templateObject_1$13","templateObject_1$14","ControlPage$1","onChangeTab","onInit","selectedTab","setActiveTab","isFirstLoad","getControlById","foundTab","tab","renderActiveTab","tabId","ControlPage$2","ControlRoute$2","history","navigateToTab","getMediaSize","mediaQueryBreakpoints","mediaQuerySizes","xlarge","large","medium","small","xsmall","pageBackground$1","RiskRoute","GetRiskHeadingDocument","templateObject_1$15","templateObject_2$m","templateObject_3$d","templateObject_4$c","templateObject_5$8","templateObject_6$5","templateObject_7$4","templateObject_8$3","templateObject_9$3","templateObject_10$3","templateObject_1$16","templateObject_1$17","templateObject_1$18","templateObject_1$19","RiskHeadingContext","RiskHeadingProvider","Consumer","onLoaded","risk","getRiskById","lastUpdated","showAcinLogo","optionalUpdatedAt","updatedAt","tabs$1","containerBackground$3","Overview$3","RowContainer","RightPanel","RiskDetailsPanel","LayoutRow","TabRow","ControlsGraph","RiskProperties","TabContent","RelatedReasonCodesFragmentDoc","ClientRiskDetailsFragmentDoc","AcinRiskDetailsFragmentDoc","GetRiskDetailsByIdDocument","templateObject_1$1a","templateObject_2$n","templateObject_3$e","templateObject_4$d","templateObject_5$9","templateObject_6$6","templateObject_1$1b","templateObject_2$o","templateObject_3$f","templateObject_4$e","templateObject_5$a","templateObject_1$1c","templateObject_2$p","templateObject_1$1d","templateObject_1$1e","templateObject_1$1f","templateObject_1$1g","templateObject_1$1h","templateObject_1$1i","RiskDetailsContext","RiskDetailsProvider","containerBackground$4","RiskDetailsPanel$1","HeadingText$3","SubHeadingWrapper","SubHeadingText","DescriptionText","ShowAllButton","MatchStatus","SubHeadingText$1","ReasonCodeWrapper","ReasonCode","Inventory","MatchStatus$1","reasonCodes","reasonCode","longName","riskInventories","inventory","RiskDescription","showAll","setShowAll","displayDescription","shortDescription","elipsis","RiskDetailsPanel$2","relatedReasonCodes","containerBackground$5","RiskError","HeadingText$4","RiskError$1","RiskDetailsPanelContainer","RelatedRiskIntelligenceFragmentDoc","RelatedBusinessLineFragmentDoc","ClientGeneralRiskDataFragmentDoc","AcinRiskGroupFragmentDoc","AcinGeneralRiskDataFragmentDoc","GetGeneralRiskDataDocument","templateObject_1$1j","templateObject_2$q","templateObject_3$g","templateObject_4$f","templateObject_1$1k","templateObject_2$r","templateObject_3$h","templateObject_4$g","templateObject_5$b","templateObject_6$7","templateObject_1$1l","templateObject_2$s","templateObject_3$i","templateObject_1$1m","GeneralRiskDataContext","GeneralRiskDataProvider","generalRiskData","useGeneralRiskData","BusinessLinesList","sortedLinks","RiskIntelRow","publishDate","toDateString","RiskIntelList","dateSortedData","containerBackground$6","LoadingWrapper$2","NoDataWrapper","LoadingInnerWrapper$1","GeneralRiskData","ClientRiskList","relatedRiskIntelligence","RiskTaxonomyList","sortedRisks","AcinRiskList","relatedRiskTaxonomy","GeneralRiskData$1","isClientRisk","isAcinRisk","GeneralRiskDataContainer","CompletenessReportControlListAcinControlFragmentDoc","CompletenessReportControlListClientControlFragmentDoc","CompletenessReportControlListControlFragmentDoc","ControlListChildGroupFragmentDoc","ControlListParentGroupFragmentDoc","DonutChartFragmentDoc","DashboardControlAlignmentFragmentDoc","RiskAnalysisResultFragmentDoc","GetRiskAnalysisByIdDocument","templateObject_1$1n","templateObject_2$t","templateObject_3$j","templateObject_4$h","templateObject_5$c","templateObject_1$1o","templateObject_1$1p","templateObject_2$u","templateObject_3$k","templateObject_4$i","templateObject_5$d","templateObject_6$8","templateObject_7$5","templateObject_1$1q","templateObject_2$v","templateObject_3$l","templateObject_4$j","templateObject_5$e","templateObject_6$9","templateObject_7$6","templateObject_8$4","templateObject_9$4","templateObject_10$4","templateObject_1$1r","templateObject_2$w","templateObject_1$1s","templateObject_2$x","templateObject_3$m","templateObject_4$k","templateObject_5$f","templateObject_6$a","templateObject_1$1t","templateObject_1$1u","templateObject_1$1v","templateObject_2$y","templateObject_3$n","templateObject_4$l","templateObject_5$g","templateObject_6$b","templateObject_7$7","templateObject_8$5","templateObject_9$5","templateObject_10$5","templateObject_11$3","templateObject_12$3","templateObject_13$2","templateObject_1$1w","templateObject_1$1x","templateObject_1$1y","templateObject_1$1z","templateObject_1$1A","templateObject_1$1B","templateObject_1$1C","templateObject_1$1D","templateObject_1$1E","templateObject_1$1F","RiskAnalysisContext","onChartClick","RiskAnalysisProvider","selectedChartSegment","setSelectedChartSegment","riskAnalysis","getRiskAnalysisById","controlList","useRiskAnalysis","ControlListGroup","expanded","onToggleExpanded","showLink","toggleExpanded","renderContents","ControlListSubGroup","subGroupId","textSize","tooltipContent","ControlRow$1","renderRiskInventory","riskInventory","renderClientBadges","acinControlCode","clientControlCode","clientBadges","acinBadges","containerBackground$7","HeaderWrapper$2","Header$1","HeaderTextWapper","HeaderControls","LinkButton","ControlListHeader","headerTitleRender","titleRender","isAllExpanded","onToggleExpandAll","extraControls","ControlListGroupDivider$1","ControlListFooter$1","ScrollToTopButton$1","asPrompt","controlledWidth","asFooter","ControlListSubGroupDivider","itemHeights","CompactHeader","ControlListChildren","CompletenessReportControlListPageGroup","CompletenessReportControlListPageSubGroup","AcinControl","ClientControl","ScrollToTop","flattenList","collapsedGroups","expandedSubGroups","subGroups","childItems","subGroupArr","subGroup","CompletenessReportControlListView$2","onInitialised","onConfigure","onInspect","extraHeaderControls","controlListTitleRenderer","onClickRiskTitle","showRiskTitleLink","setCollapsedGroups","setExpandedSubGroups","listRef","listOuterRef","childrenHeight","setChildrenHeight","scrollToTopPosition","setScrollToTopPosition","selectedControlIndex","setSelectedControlIndex","scrollPositionRef","childWrapperRef","handleToggleGroupsExpanded","useCallback","groupId","handleToggleSubGroupsExpanded","setItems","getItemHeight","handleScroll","showScrollToTop","scrollOffset","scrollPromptVisible","setScrollPromptVisible","_j","useEffect","resetAfterIndex","scrollToTop","scrollToAnimated","headerOffset","toggleExpandAll","expandAllGroups","allsubGroupIds","onControlRowClick","mainNav","VirtualRow","String","outerRef","itemSize","overflowX","onScroll","containerBackground$8","RiskControlListView","HeaderText$1","SubHeaderText","ErrorWrapper$1","Footer$1","NoDataWrapper$1","NoDataInnerWrapper","RiskControlList","scrollToCallback","idType","Control","ControlListHeader$1","containerBackground$9","ControlsByNetworkInsight","Header$2","Contents","largeChartSize","smallChartSize","ChartWrapper","Title$1","ViewAllControlsButton","ViewAllButton","LoadingWrapper$3","ControlsByNetworkInsight$1","getLegendData","showCounts","ControlsByNetworkInsightContainer","containerBackground$a","RiskProperties$1","LoadingWrapper$4","RiskPropertyLink","RiskPropertyText","TextWrapper","SubText","RiskPropertyIconArrowDown","RiskPropertyRow","riskProperty","countSubText","RiskProperties$2","riskProperties","RiskPropertiesContainer","getRiskProperties","riskIntelligence","tabs$2","RiskOverview$1","activeTabId","setActiveTabId","setAssociatedControlsActive","scrollIntoView","RiskRouteContent","RiskDataProvider","RiskRoute$2","Wrapper","riskItemBackgroundVariant","riskItemArrowVariant","RiskItem","Count$1","Title$2","RiskItem$1","containerBackground$b","Sort","Sort$2","selectOptions","RiskList$1","activeRisk","onSetActiveRisk","onSetActiveSort","windowHeight","topOffset","riskCount","riskCountText","sortInfoData","sortInfo","onClear","defaultActiveRisk","handleSetSort","sortOption","renderTitle","mainTitleText","mainTitleSize","subtitleText","renderToolbar","available","fixedHeight","bars","showTop","showBottom","sortedNodes","matchedRisk","handleSetActiveRisk","renderList","Wrapper$1","defaultRiskSort","defaultControlSort","controlSortData","ControlList$1","riskTitle","riskTitleOnClick","controlCountText","sortedControls","direction_1","generateControlSortData","mainTitleOnClick","truncateMainTitle","controlLinks","renderControlItems","ClientRiskList$1","SortDataFragmentDoc","ClientRiskListClientRiskFragmentDoc","ClientRiskPageFragmentDoc","GetClientRiskListDocument","riskIds","ids","skip","hanldeOnSetActiveRisk","getClientRisks","templateObject_1$1G","templateObject_1$1H","templateObject_1$1I","templateObject_1$1J","ClientControlList","ControlListClientControlFragmentDoc","GetClientControlsByIdDocument","getControlData","templateObject_1$1K","templateObject_1$1L","templateObject_2$z","templateObject_3$o","templateObject_4$m","templateObject_5$h","templateObject_6$c","templateObject_7$8","templateObject_8$6","templateObject_9$6","templateObject_1$1M","templateObject_1$1N","templateObject_2$A","templateObject_3$p","templateObject_4$n","templateObject_5$i","templateObject_6$d","templateObject_7$9","templateObject_8$7","templateObject_9$7","templateObject_1$1O","templateObject_1$1P","templateObject_2$B","templateObject_3$q","templateObject_4$o","templateObject_1$1Q","templateObject_1$1R","templateObject_1$1S","AcinControlRow","Header$3","HeaderTitle","ControlId","HeaderToolbar","ToolbarButton","ContentSection","MetaContainer","MetaItem","Header$4","flagged","onToggleFlag","onDelete","AcinControlRow$2","onCheck","multiSelect","checkVariant","AcinRiskRow","Header$5","HeaderTitle$1","ControlId$1","HeaderToolbar$1","ToolbarButton$1","ContentSection$1","Header$6","AcinControlTypeahead","SearchSuggestion","Info","Hint","SearchSuggestion$1","AcinControlDescriptionFragmentDoc","AcinControlRowDetailFragmentDoc","SearchAcinControlsDocument","useSearchAcinControlsLazyQuery","templateObject_1$1T","templateObject_2$C","templateObject_1$1U","templateObject_1$1V","templateObject_2$D","templateObject_1$1W","templateObject_1$1X","SearchModal","Header$7","ControlList$2","selectedIds","onSelect","term","setTerm","debouncedSearch","wait","lastCallTime","useRef","lastInvokeTime","timerId","lastArgs","lastThis","funcRef","mounted","useRAF","leading","trailing","maxing","maxWait","debounced","invokeFunc","startTimer","pendingFunc","shouldInvoke","timeSinceLastCall","timeSinceLastInvoke","trailingEdge","timerExpired","timeWaiting","remainingWait","isInvoking","cancel","isPending","flush","useDebouncedCallback","leftAddon","currentTarget","searchAcinControls","totalAvailableControls","SearchModal$1","isOpen","onClose","activeControls","setSelected","setIsDirty","footerButtonPrimary","selectedMap","AcinRiskTypeahead","onOpenModal","onCloseModal","fullListModal","ignoreIds","searchModalOpen","setSearchModalOpen","onOpenSearchModal","debounce","remoteData","getItems","renderSuggestion","suggestion","clearOnSelect","renderInitialView","SearchSuggestion$2","SearchSuggestion$3","AcinRiskRowDetailFragmentDoc","SearchAcinRisksDocument","searchAcinRisks","templateObject_1$1Y","templateObject_1$1Z","templateObject_2$E","templateObject_1$1_","templateObject_1$1$","RiskInventoryTypeahead","SearchSuggestion$4","SearchSuggestion$5","RiskInventorySuggestionFragmentDoc","SearchRiskInventoriesDocument","searchRiskInventories","templateObject_1$20","templateObject_1$21","templateObject_2$F","templateObject_3$r","templateObject_4$p","templateObject_5$j","templateObject_6$e","templateObject_7$a","templateObject_1$22","templateObject_1$23","templateObject_1$24","templateObject_2$G","templateObject_3$s","templateObject_4$q","templateObject_5$k","templateObject_6$f","templateObject_7$b","templateObject_8$8","templateObject_9$8","templateObject_10$6","templateObject_11$4","templateObject_12$4","templateObject_13$3","templateObject_14$2","templateObject_15$2","templateObject_1$25","templateObject_2$H","templateObject_1$26","templateObject_1$27","templateObject_2$I","templateObject_3$t","templateObject_4$r","templateObject_5$l","templateObject_6$g","templateObject_7$c","templateObject_8$9","templateObject_9$9","templateObject_10$7","templateObject_1$28","templateObject_2$J","templateObject_3$u","templateObject_4$s","templateObject_5$m","templateObject_6$h","templateObject_7$d","templateObject_8$a","templateObject_9$a","templateObject_10$8","templateObject_11$5","templateObject_12$5","templateObject_13$4","templateObject_1$29","templateObject_2$K","templateObject_3$v","RiskInventoryRow","Header$8","HeaderTitle$2","HeaderToolbar$2","ToolbarButton$2","Header$9","Inspector","Header$a","ManyHeader","DropdownLogo","Badge","BadgeWrapper","Section$1","StyledHeading","Description$1","AcinHeader","DropdownWrapper","HeadingWrapper$3","Card","Explanation","ControlSelect$3","Header$b","ClientControlSelect","acinControlTitle","AcinControlSelect","clientControlTitle","ControlInsight$1","_k","_l","_m","_o","_p","_q","_r","setControlA","setControlB","findIdInB","findIdInA","hasManyA","hasManyB","isSingleControl","renderAcinHeader","totalRelatedRegulations","totalRelatedRiskInventories","condensed","clientFacingName","ControlInsight$2","StickyHeader","Cell","extraPadding","CellTextTruncatedWrapper","CellButton","CellText","Outer","Inner","AcinLogo","Cell$1","cell","cellRef","hasOverflow","setHasOverflow","windowWidth","scrollWidth","textComponent","textOrButton_1","isLink","highlight","Row","minRowWidth","Grandparent","RowCell","Parent","Child","isLastRow","highlighted","ChevronButton","isDarkMode","TableHeader","TableHeader$1","cells","cellsWidths","widths","itemHeights$1","OuterHeader","StandardRow","StickyListContext","displayName","templateObject_1$2a","templateObject_2$L","templateObject_3$w","templateObject_1$2b","templateObject_2$M","templateObject_3$x","templateObject_4$t","templateObject_5$n","templateObject_6$i","templateObject_7$e","TableConfigurationHeaderKeys","SkeletonRowLoaderEnum","ItemWrapper","ItemRenderer","stickyIndices","StickyRow","innerElementType","stickyItem","StickyList","onItemsRendered","itemData","Row$1","targetId","isCollapsible","inspectedRow","handleClick","isFirstCell","handleInspectRow","SkeletonRow","SkeletonRowLoader","SkeletonRow$1","VirtualisedTable","ScrollBoundary","Header$c","Title$3","Controls","templateObject_1$2c","templateObject_2$N","templateObject_3$y","templateObject_4$u","templateObject_1$2d","templateObject_2$O","templateObject_1$2e","templateObject_1$2f","templateObject_1$2g","templateObject_1$2h","templateObject_1$2i","templateObject_1$2j","templateObject_1$2k","templateObject_1$2l","flattenList$1","openRows","flattenedRows","grandparentRows","grandparentRow","grandparentId","parentList","parentRows","parentRow","childTable","parentId","newParentRow","isExtended","childList","childRows","childRow","replacementItem","skeletonRows","LoadingRow","getSkeletonRows","createRowIdFromName","VirtualisedTable$2","grandparentCellWidths","childCellsWidths","tableVariant","setOpenRows","mutatedList","cellKey","cellInfo","entityId","Distinct","NETWORK_INVENTORY","MATCHED_TO","BUSINESS_ORGANISATION","CONTROL_CODE_AND_NAME","getTab","businessOrgId","riskInventoryId","TableHeader$2","createFilterValue","filterValue","sublabel","mergeActiveFiltersAndFilterGroups","activeFilters","incomingFilterGroups","resetBreadcrumbs","activeFilterGroups","mergedResult","activeGroupKey","activeFilterValues","foundIncomingMatchedFilter","incoming","matchValues","activeValue","incomingGroupKey","incomingFilterValues","incomingValue","getEnableDrillDown","groupByItem","formatBreadcrumbInput","breadcrumb","toTitleCase","transformConfigurationIntoList","transformFiltersIntoList","filtersTotal","filtersList","getFileName","today","disableTableOption","isClient","isControlQuality","INITIAL_STATE","configurationFromChart","filtersFromChart","quickFilterFromChart","currentBreadcrumbs","formattedBreadcrumbs","chartError","chartHasData","activeLevel","incomingFilters","incomingConfiguration","onUpdateIncomingFilters","onUpdateActiveLevel","onUpdateConfigurationFromChart","onUpdateFiltersFromChart","onUpdateQuickFilterFromChart","onUpdateCurrentBreadcrumbs","onUpdateFormattedBreadcrumbs","onUpdateChartError","onUpdateChartHasData","onUpdateLevels","onUpdateIncomingConfiguration","Context$2","useReport","mergeAllFilters","getConfigurations","createUrl","controlInstance","getTableRows","currentGrandparent","ReportDrawer","drawerName","onCloseDrawer","onAddToast","allowCopy","setAllowCopy","clipboard","writeText","delayTime","removeAt","showIconOnly","onOverlayClose","ReportTable","Download","instanceCellWidths","INSIGHT_CATEGORY","INSIGHT_SUB_CATEGORY","SOURCE","NSS_SCORE","CONTROL_OWNER","CONTROL_TYPE","CONTROL_FREQUENCY","CONTROL_AUTOMATION","CONTROL_QUALITY_SCORE","distinctCellWidths","INSIGHT_CATEGORY_COUNT","childCellWidths","VirtualisedTableCellFragmentDoc","VirtualisedTableHeadersFragmentDoc","VirtualisedTableChildRowFragmentDoc","VirtualisedTableParentRowFragmentDoc","VirtualisedTableGrandparentRowFragmentDoc","TableFragmentDoc","PaginationFragmentDoc","GetTableDocument","templateObject_1$2m","templateObject_2$P","templateObject_1$2n","templateObject_1$2o","templateObject_1$2p","templateObject_2$Q","templateObject_3$z","templateObject_4$v","templateObject_5$o","templateObject_1$2q","templateObject_1$2r","ReportTable$2","reportTitle","reportId","showTitleOnTable","createCalibrateDownload","activeTable","setActiveTable","tableTitle","setTableTitle","receivedRows","setReceivedRows","totalRows","setTotalRows","setPagination","hasNextPage","setHasNextPage","hasNextSubPage","setHasNextSubPage","setActivePage","activeSubPage","setActiveSubPage","isLoading","setIsLoading","pauseQuery","setPauseQuery","configurationInput","setConfigurationInput","filtersInput","setFiltersInput","toggleDrawer","setInspectedRow","setControlId","setInsightById","_u","setControlInstanceId","_v","setSelectedTab","subPage","subPageSize","resetTableStates","getTable","rows_1","currentReceivedRows","previousTable","latestTable","grandparentUpdated","updatedRows","latestGrandparentRow","updatedParentRows","mergeTables","handleOnItemsRendered","currentRowIndexIntoView","overscanStopIndex","fallbackTitle","cellsWidths_1","getMinRowWidth","grandparent","ReportDrawer$1","RefresherBarChart","RefresherBarChart$2","verticalChartHeight","ReportChart","LoadingChartWrapper","ChartCard","FlexWrapper","AlertWrapper$2","TableRefresherBarChartFragmentFragmentDoc","GetChartDocument","templateObject_1$2s","templateObject_2$R","templateObject_3$A","templateObject_4$w","templateObject_1$2t","templateObject_1$2u","templateObject_2$S","templateObject_3$B","templateObject_4$x","templateObject_5$p","templateObject_6$j","templateObject_7$f","templateObject_8$b","templateObject_9$b","templateObject_10$9","templateObject_1$2v","templateObject_1$2w","templateObject_1$2x","templateObject_2$T","templateObject_3$C","templateObject_4$y","templateObject_5$q","templateObject_6$k","templateObject_7$g","templateObject_8$c","templateObject_9$c","templateObject_10$a","templateObject_11$6","templateObject_12$6","templateObject_13$5","templateObject_1$2y","templateObject_1$2z","templateObject_1$2A","templateObject_1$2B","ReportChartTableHeader","Actions$1","ShowAllButton$1","Download$1","ChartTableToggle","activeIds","ReportChartTableHeader$2","setShowAllRows","onToggleChartTable","onDownload","hideChartActions","hideShowAllRows","Description$2","ConfigList","Header$d","FilterTitle","FilterList","ChartImageInfo","showSeparator","ChartImageInfo$1","configList","showConfig","filterList","showFilters","showFiltersApplied","ReportChart$2","filterError","openPreview","onUpdateShowPreview","charts","setCharts","visibleChart","setShowConfig","setShowFilters","noCharts","noChartRows","getShowFolders","getChart","availableCharts","selectedChart","configurationOptions","renderChartForDownload","cause","renderChart","ReportProvider$1","setConfigurationFromChart","setFiltersFromChart","setQuickFilterFromChart","setCurrentBreadcrumbs","setFormattedBreadcrumbs","setChartError","setChartHasData","setActiveLevel","setLevels","setIncomingFilters","setIncomingConfiguration","ReportChartAsTable","TableCard","Header$e","GroupNameCell","adaptiveHeight","Indicator","TableBody","TableRow$1","FlexWrapper$1","LoadingWrapper$5","TableCell","ReportChartAsTableCellFragmentDoc","ReportChartAsTableHeaderCellFragmentDoc","ReportChartAsTableBreadcrumbFragmentDoc","GetChartAsTableDocument","templateObject_1$2C","templateObject_1$2D","templateObject_2$U","templateObject_1$2E","currentDirection","currentField","ReportChartTable","setSort","noTableRows","getChartAsTable","getSortDirection","renderTable","preventTruncation","colSpan","positionRelative","wrapText","alignContent","renderTableForDownload","LoadingChartWrapper$1","GetChartTableDocument","templateObject_1$2F","templateObject_1$2G","templateObject_2$V","templateObject_3$D","templateObject_4$z","templateObject_5$r","templateObject_1$2H","ReportChartTable$2","getChartTable","ReportChartStateManager","LoadingFiltersWrapper","ChartTools","LevelSelect","GetChartFiltersDocument","templateObject_1$2I","templateObject_2$W","templateObject_3$E","templateObject_1$2J","templateObject_2$X","templateObject_1$2K","ReportChartSummary","LoadingChartWrapper$2","Heading","ReportChartTableSummary","ChartWrapper$1","GetChartSummaryDocument","templateObject_1$2L","templateObject_1$2M","templateObject_1$2N","templateObject_1$2O","templateObject_2$Y","templateObject_3$F","templateObject_4$A","templateObject_5$s","templateObject_1$2P","templateObject_2$Z","templateObject_3$G","templateObject_4$B","templateObject_1$2Q","templateObject_2$_","templateObject_3$H","templateObject_4$C","templateObject_1$2R","templateObject_1$2S","templateObject_2$$","templateObject_3$I","templateObject_4$D","templateObject_5$t","templateObject_6$l","templateObject_7$h","templateObject_1$2T","templateObject_1$2U","ReportChartSummary$2","getChartSummary","ReportChartTableAndSummary$1","ReportChartStateManager$2","activeView","setActiveView","incomingBreadcrumbs","setIncomingBreadcrumbs","cleanedBreadcrumbs","setCleanedBreadcrumbs","getChartFilters","buildLevels","newFilters","newConfig","activeConfiguration","activeConfig","configurationGroupKey","foundIncomingGroup","mergeConfigurationWithIncomingConfiguration","cleaned","crumb","getIncomingConfiguration","breadcumbsIndex","newBreadcrumbs","renderActiveView","typePolicies","TableResult","keyArgs","existing","pageBackground$2","DataQualityTab","DataQualityTabContent","DataQualityTabContentBlock","TabHeader","TabHeading","Description$3","ErrorBox","TabHeader$1","DataQualityOutputRating","StyledCard","QualityRatingContainer","QualityRatingValue","DataQualityOutputRating$2","rating","foreground","getRatingColorsFromScore","descriptionQuality","DataQualityInputText","InputTextarea","StyledLabel","GenerateButtonContainer","FormatSelect","AddNewControlButton","ScrollableWrapper","DataQualityInputText$2","selectedOption","handleSelectChange","onGenerate","isDisabled","hasSecondaryAction","handleSecondaryAction","secondaryActionLabel","hasMultipleInputBoxes","scrollableWrapperRef","scrollHeight","handleInputChange","newTexts","textAreas","currentLabel","inputId","htmlFor","validTextInputs","textInput","validTextInputsLength","hasEnoughValidInputs","optionValue","GetDataQualityControlQualityScoreDocument","templateObject_1$2V","templateObject_2$10","templateObject_3$J","templateObject_4$E","templateObject_5$u","templateObject_6$m","templateObject_7$i","templateObject_1$2W","templateObject_1$2X","QualityCheck","CDQText","handleCDQTextChange","handleCDQRewrite","previousText","setPreviousText","CDQValue","setCDQValue","useMutation","CDQReadyForDisplay","getDataQuality","textList","DataQualityOutputText","OutputTextareaWrapper","OutputTextarea","StyledLabel$1","GenerateButtonContainer$1","CopyAlert","DataQualityOutputText$2","notificationStatus","setNotificationStatus","notificationText","setNotificationText","GetDataQualityPromptsDocument","templateObject_1$2Y","CreateDataQualityJobDocument","templateObject_1$2Z","GetDataQualityJobDocument","templateObject_1$2_","templateObject_2$11","templateObject_3$K","ControlRewriter","rewriterText","handleRewriterTextChange","textInputLabel","textOutputLabel","promptCategory","previousRewriterText","setPreviousRewriterText","rewrittenControl","setRewrittenControl","selectedFormat","setSelectedFormat","previousSelectedFormat","setPreviousSelectedFormat","jobId","setJobId","isPolling","setIsPolling","createDataQualityJob","createJobError","createJobloading","useGetDataQualityJobLazyQuery","pollInterval","getDataQualityJob","jobError","jobData","jobLoading","stopPolling","useGetDataQualityPromptsMutation","getPrompts","prompts","generateIsDisabled","pollingTimeout","promptFormats","promptOptions","MergeControls","DataQualityPage$2","defaultRewriterText","setCDQText","setRewriterText","PolicyToControl","ProcedureToControl","ProcessToControl","ControlToTestingScript","ControlToKeyControlIndicator","renderTab","ControlRewriteProvider$1","setCopiedDescription","valueEquality","adjustFunctionValueOfSetState","useDebounce","eq","equalityFn","initialState","useStateIgnoreCallback","previousValue","excluded","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","isPlainObject","deepmerge","createMixins","breakpoints","mixins","_toolbar","gutters","up","toolbar","formatMuiErrorMessage","A100","A200","A400","A700","clamp","decomposeColor","re","recomposeColor","getLuminance","emphasize","coefficient","darken","fade","secondary","hint","divider","action","hoverOpacity","selectedOpacity","disabledOpacity","focusOpacity","activatedOpacity","addLightOrDark","intent","tonalOffset","tonalOffsetLight","tonalOffsetDark","createPalette","palette","_palette$primary","_palette$secondary","_palette$error","_palette$warning","warning","_palette$info","_palette$success","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","getContrastText","contrastText","lumA","lumB","getContrastRatio","augmentColor","mainShade","lightShade","darkShade","types","common","caseAllCaps","textTransform","defaultFontFamily","createTypography","typography","_ref$fontFamily","_ref$fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","pxToRem","coef","buildVariant","letterSpacing","casing","variants","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline","createShadow","xs","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","styleFromPropValue","themeBreakpoints","_themeBreakpoints","breakpoint","directions","aliases","marginX","marginY","getCssProperties","memoize","_prop$split","_prop$split2","spacingKeys","createUnarySpacing","themeSpacing","getStyleFromPropValue","cssProperties","transformer","cssProperty","transformed","propTypes","filterProps","easeInOut","easeOut","easeIn","sharp","shortest","shorter","short","standard","enteringScreen","leavingScreen","formatMs","_options$duration","durationOption","_options$easing","easingOption","_options$delay","animatedProp","getAutoHeightDuration","mobileStepper","speedDial","appBar","drawer","snackbar","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","spacingInput","_options$typography","typographyInput","_breakpoints$values","_breakpoints$unit","_breakpoints$step","between","down","upperbound","only","createBreakpoints","mui","argument","createSpacing","muiTheme","overrides","shadows","transitions","for","localTheme","outerTheme","mergeOuterLocalTheme","nested","ownKeys","getOwnPropertyDescriptor","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","proto","getPrototypeOf","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","isSubscribed","listeners","replaceReducer","nextReducer","outerSubscribe","observeState","unsubscribe","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","compose","funcs","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","middleware","INIT_COORDS","BEGIN_DRAG","PUBLISH_DRAG_SOURCE","HOVER","DROP","END_DRAG","strictEquality","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","initialSourceClientOffset","initialClientOffset","clientOffset","offsetA","offsetB","payload","sourceClientOffset","ADD_SOURCE","ADD_TARGET","REMOVE_SOURCE","REMOVE_TARGET","_typeof","itemType","sourceId","targetIds","dropResult","didDrop","isSourcePublic","NONE","ALL","_action$payload","_action$payload$targe","_action$payload$prevT","prevTargetIds","itemsA","itemsB","insertItem","xor","didChange","isEqual","areArraysEqual","prevInnermostTargetId","innermostTargetId","dirtyHandlerIds","dragOffset","refCount","dragOperation","invariant","condition","argIndex","framesToPop","setClientOffset","__IS_NONE__","__IS_ALL__","ResetCoordinatesAction","createBeginDrag","manager","sourceIds","publishSource","_options$publishSourc","getSourceClientOffset","monitor","getMonitor","registry","getRegistry","getSource","verifyInvariants","canDragSource","getDraggableSource","verifyGetSourceClientOffsetIsFunction","beginDrag","verifyItemIsObject","pinSource","getSourceType","createPublishDragSource","matchesType","targetType","draggedItemType","createHover","targetIdsArg","verifyTargetIdsIsArray","lastIndexOf","getTarget","checkInvariants","getTargetType","removeNonMatchingTargetIds","getItemType","hoverAllTargets","createDrop","getTargetIds","canDropOnTarget","getDroppableTargets","drop","verifyDropResultType","getDropResult","determineDropResult","createEndDrag","verifyIsDragging","getSourceId","endDrag","unpinSource","subtract","_defineProperties","descriptor","HandlerRole","DragDropMonitorImpl","Constructor","_classCallCheck","protoProps","staticProps","handlerIds","prevStateId","currentStateId","canSkipListener","dirtyIds","commonIds","areDirty","_this2","previousState","canDrag","canDrop","shallow","nextUniqueId","validateType","allowArray","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","timeoutHandle","handleTimer","intervalHandle","clearInterval","makeRequestCall","toggle","createTextNode","characterData","RawTask","task","onError","release","asapQueue","enqueueTask","requestFlush","flushing","pendingErrors","capacity","scan","newLength","registerPendingError","requestErrorThrow","taskFactory","tasks","freeTasks","_arrayWithHoles","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","arr2","getNextHandlerId","TARGET","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","isDone","_entries$next","HandlerRegistryImpl","dragSources","dropTargets","pinnedSourceId","pinnedSource","validateSourceContract","addHandler","validateTargetContract","handler","includePinned","isSourceId","isTargetId","asap","DragDropManagerImpl","debugMode","isSetUp","handleRefCountChange","shouldSetUp","backend","teardown","reduxDevTools","__REDUX_DEVTOOLS_EXTENSION__","instanceId","makeStoreInstance","publishDragSource","createDragDropActions","boundActions","actionCreator","createDragDropManager","backendFactory","globalContext","backendOptions","receiveBackend","DndContext","dragDropManager","objA","objB","compareContext","compareResult","keysA","keysB","bHasOwnProperty","valueA","valueB","useCollector","collect","onUpdate","_useState2","collected","setCollected","updateCollected","useMonitorOutput","onCollect","_useCollector2","getHandlerId","subscribeToStateChange","useDragDropManager","useContext","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","isDraggingSource","isOverTarget","subscribeToOffsetChange","getItem","getInitialClientOffset","getInitialSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","setRef","wrapHookToRecognizeElement","hook","elementOrNode","isValidElement","throwIfCompositeComponentElement","newRef","previousRef","cloneElement","cloneWithRef","wrapConnectorHooks","hooks","wrappedHooks","endsWith","wrappedHook","isRef","SourceConnector","dragSource","clearDragSource","dragSourceOptions","dragSourceRef","dragSourceNode","reconnectDragSource","dragPreview","clearDragPreview","dragPreviewOptions","dragPreviewRef","dragPreviewNode","reconnectDragPreview","dragSourceOptionsInternal","dragPreviewOptionsInternal","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","lastConnectedDragPreview","lastConnectedDragPreviewOptions","newHandlerId","reconnect","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","dragSourceUnsubscribe","connectDragSource","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","dragPreviewUnsubscribe","connectDragPreview","useDrag","spec","specRef","_useDragSourceMonitor2","getBackend","useDragSourceMonitor","connector","_spec$current","begin","beginResult","globalMonitor","_registerSource","addSource","removeSource","registerSource","_registerSource2","unregister","receiveHandlerId","useDragHandler","previewOptions","TargetConnector","dropTarget","clearDropTarget","dropTargetOptions","dropTargetRef","dropTargetNode","dropTargetOptionsInternal","lastConnectedDropTarget","lastConnectedDropTargetOptions","didDropTargetChange","didOptionsChange","disconnectDropTarget","unsubscribeDropTarget","connectDropTarget","isCallingCanDrop","DropTargetMonitorImpl","useDrop","accept","_useDropTargetMonitor2","useDropTargetMonitor","_registerTarget","registerTarget","_registerTarget2","useDropHandler","sourceKeys","DndProvider","memo","_getDndContextValue","getGlobalContext","instanceSymbol","createDndContext","createSingletonDndContext","isGlobalInstance","getDndContextValue","_getDndContextValue2","EnterLeaveCounter","isNodeInDocument","entered","enteringNode","previousLength","union","leavingNode","isFirefox","isSafari","safari","MonotonicInterpolant","ys","indexes","dys","dxs","c1s","_i2","m2","mNext","dxNext","c2s","c3s","_i3","invDx","_common","xHere","diffSq","ELEMENT_NODE","getNodeClientOffset","nodeType","_el$getBoundingClient","getEventClientOffset","getDragPreviewOffset","sourceNode","anchorPoint","offsetPoint","_document$documentEle","nodeName","isImageNode","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","sourceWidth","sourceHeight","anchorX","anchorY","_getDragPreviewSize","dragPreviewWidth","dragPreviewHeight","getDragPreviewSize","isManualOffsetY","calculateYOffset","_nativeTypesConfig","FILE","TEXT","getDataFromDataTransfer","dataTransfer","typesToTry","resultSoFar","typeToTry","nativeTypesConfig","exposeProperties","files","matchesTypes","NativeDragSource","initializeExposedProperties","newProperties","handle","matchNativeItemType","dataTransferTypes","nativeItemType","OptionsReader","emptyImage","HTML5BackendImpl","sourcePreviewNodes","sourcePreviewNodeOptions","sourceNodes","sourceNodeOptions","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","currentNativeSource","currentNativeHandle","currentDragSourceNode","altKeyPressed","mouseMoveTimeoutTimer","asyncEndDragFrameId","dragOverTargetIds","endDragNativeItem","isDraggingNativeItem","endDragIfSourceWasRemovedFromDOM","clearCurrentDragSourceNode","handleTopDragStartCapture","handleTopDragStart","nativeType","setDragImage","_this$getCurrentSourc","getCurrentSourcePreviewNodeOptions","dragPreviewOffset","setCurrentDragSourceNode","captureDraggingState","beginDragNativeItem","hasAttribute","handleTopDragEndCapture","handleTopDragEnterCapture","enterLeaveCounter","enter","handleTopDragEnter","dropEffect","getCurrentDropEffect","handleTopDragOverCapture","handleTopDragOver","handleTopDragLeaveCapture","leave","handleTopDropCapture","_this$currentNativeSo","loadDataTransfer","handleTopDrop","handleSelectStart","dragDrop","isContentEditable","getActions","_this$dragStartSource","_this$dragOverTargetI","__isReactDndBackendSetUp","addEventListeners","removeEventListeners","_this3","_this4","handleDragEnter","handleDragOver","handleDrop","getCurrentSourceNodeOptions","createNativeDragSource","_this5","HTML5Backend","IntlContext","ErrorKind","TYPE","SKELETON_TYPE","Err","isLiteralElement","literal","isArgumentElement","isNumberElement","isDateElement","isTimeElement","isSelectElement","select","isPluralElement","plural","isPoundElement","pound","isTagElement","isNumberSkeleton","isDateTimeSkeleton","dateTime","SPACE_SEPARATOR_REGEX","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","era","hourCycle","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","roundingPriority","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","stem","notation","minimumIntegerDigits","parseNotationOptions","opt","signOpts","parseNumberSkeleton","tokens","tokens_1","token","currency","useGrouping","maximumFractionDigits","compactDisplay","currencyDisplay","unitDisplay","g3","g4","g5","minimumFractionDigits","trailingZeroDisplay","conciseScientificAndEngineeringOpts","timeData","getDefaultHourSymbolFromLocale","hourCycles","regionTag","languageTag","maximize","region","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","hasNativeStartsWith","startsWith","hasNativeFromCodePoint","fromCodePoint","hasNativeFromEntries","fromEntries","hasNativeCodePointAt","codePointAt","hasTrimStart","trimStart","hasTrimEnd","trimEnd","isSafeInteger","isFinite","REGEX_SUPPORTS_U_AND_Y","RE","matchIdentifierAtIndex","codePoints","fromCharCode","entries_1","IDENTIFIER_PREFIX_RE_1","_isWhiteSpace","_isPatternSyntax","Parser","ignoreTag","requiresOtherClause","shouldParseSkeletons","parseMessage","nestingLevel","parentArgType","expectingCloseTag","isEOF","parseArgument","peek","UNMATCHED_CLOSING_TAG","clonePosition","_isAlpha","parseTag","parseLiteral","bump","parseTagName","bumpSpace","bumpIf","childrenResult","endTagStartPosition","INVALID_TAG","closingTagNameStartPosition","UNCLOSED_TAG","startOffset","_isPotentialElementNameChar","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","codepoint","openingBracePosition","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","parseIdentifierIfPossible","MALFORMED_ARGUMENT","parseArgumentOptions","startingPosition","endOffset","bumpTo","typeStartPosition","argType","typeEndPosition","EXPECT_ARGUMENT_TYPE","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","EXPECT_ARGUMENT_STYLE","styleLocation","argCloseResult","tryParseArgumentClose","parseNumberSkeletonFromString","EXPECT_DATE_TIME_SKELETON","dateTimePattern","skeletonCopy","patternPos","patternChar","extraLength","hourLen","dayPeriodLen","hourChar","getBestPattern","parsedOptions","typeEndPosition_1","EXPECT_SELECT_ARGUMENT_OPTIONS","identifierAndLocation","pluralOffset","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","tryParseDecimalInteger","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","optionsResult","tryParsePluralOrSelectOptions","location_2","pluralType","INVALID_ARGUMENT_TYPE","nestedBraces","apostrophePosition","bumpUntil","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","stringTokens","stringTokens_1","stemAndOptions","INVALID_NUMBER_SKELETON","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selectorLocation","EXPECT_PLURAL_ARGUMENT_SELECTOR","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","fragmentResult","EXPECT_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","expectNumberError","invalidNumberError","hasDigits","decimal","kind","currentOffset","targetOffset","nextCode","pruneLocation","els","opts","SyntaxError","originalMessage","captureLocation","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","monadic","cacheKey","computedValue","variadic","assemble","serialize","ObjectWithoutPrototypeCache","ErrorCode","strategies","PART_TYPE","FormatError","InvalidValueError","variableId","INVALID_VALUE","InvalidValueTypeError","MissingValueError","MISSING_VALUE","isFormatXMLElementFn","formatters","formats","currentPluralValue","els_1","getNumberFormat","varName","getDateTimeFormat","formatFn","PluralRules","MISSING_INTL_API","getPluralRules","lastPart","mergeLiteral","mergeConfigs","defaultConfig","configs","c2","createFastMemoizeCache","IntlErrorCode","IntlMessageFormat","overrideFormats","formatterCache","pluralRules","ast","resolvedOptions","resolvedLocale","getAst","resolveLocale","__parse","createDefaultFormatters","memoizedDefaultLocale","supportedLocales","supportedLocalesOf","Locale","integer","IntlError","exception","captureStackTrace","UnsupportedFormatterError","UNSUPPORTED_FORMATTER","InvalidConfigError","INVALID_CONFIG","MissingDataError","MISSING_DATA","IntlFormatError","FORMAT_ERROR","MessageFormatError","defaultMessage","MissingTranslationError","MISSING_TRANSLATION","allowlist","filtered","DEFAULT_INTL_CONFIG","defaultFormats","fallbackOnEmptyString","onWarn","getNamedFormat","formatType","intl","useIntl","setTimeZoneInOptions","deepMergeOptions","opts1","opts2","deepMergeFormatsAndSetTimeZone","mfFormats","formatMessage","messageDescriptor","defaultRichTextElements","msgId","getMessageFormat","NUMBER_FORMAT_OPTIONS","getFormatter","formatNumber","formatNumberToParts","RELATIVE_TIME_FORMAT_OPTIONS","formatRelativeTime","getRelativeTimeFormat","RelativeTimeFormat","DATE_TIME_FORMAT_OPTIONS","filteredOptions","timeStyle","dateStyle","formatDate","formatTime","formatDateTimeRange","formatRange","formatDateToParts","formatTimeToParts","PLURAL_FORMAT_OPTIONS","formatPlural","LIST_FORMAT_OPTIONS","formatList","getListFormat","formatListToParts","ListFormat","richValues_1","serializedValues","generateToken","DISPLAY_NAMES_OPTONS","formatDisplayName","getDisplayNames","DisplayNames","of","verifyConfigMessages","createIntl","relativeTime","displayNames","createFormatters","resolvedConfig","$t","processIntlConfig","wrapRichTextChunksInFragment","assignUniqueKeysToFormatXMLElementFnArgument","formatXMLElementFn","rawValues","rawDefaultRichTextElements","coreIntl","IntlProvider","prevConfig","getDerivedStateFromProps","aKeys","bKeys","defaultProps","_assertThisInitialized","ReferenceError","createThemeProvider","ThemeProvider","_React$Component","subClass","superClass","getTheme","__proto__","_proto","lastTheme","lastOuterTheme","cachedTheme","_theme","renderProvider","createWithTheme","withTheme","createUseTheme","createContext","_createTheming","plainObjectConstrurctor","cloneStyle","newStyle","createRule","decl","jss","declCopy","onCreateRule","by","toCssValue","cssValue","getWhitespaceSymbols","linebreak","space","indentStr","toCss","_options$indent","fallbacks","_getWhitespaceSymbols","_prop","_prop2","_value2","allowEmpty","escapeRegex","nativeEscape","CSS","BaseStyleRule","isProcessed","Renderer","process","onChangeValue","isDefined","renderable","removeProperty","attached","_BaseStyleRule","scoped","generateId","_proto2","applyTo","toJSON","setSelector","replaceRule","pluginStyleRule","defaultToStringOptions","atRegExp","ConditionalRule","atMatch","at","RuleList","getRule","addRule","onProcessRule","newRule","keyRegExp","pluginConditionalRule","defaultToStringOptions$1","nameRegExp","KeyframesRule","frames","nameMatch","keyRegExp$1","refRegExp","findReferencedKeyframe","keyframes","replaceRef","refKeyframe","pluginKeyframesRule","onProcessStyle","KeyframeRule","pluginKeyframeRule","FontFaceRule","keyRegExp$2","pluginFontFaceRule","ViewportRule","pluginViewportRule","SimpleRule","keysMap","pluginSimpleRule","defaultUpdateOptions","forceUpdateOptions","classes","ruleOptions","_this$options","register","oldRule","nameOrSelector","updateOne","_this$options2","_nextValue","_prevValue","css","StyleSheet","deployed","attach","deploy","detach","addRules","added","_this$rules","PluginsRegistry","internal","external","onProcessSheet","processedValue","use","newPlugin","plugin","SheetsRegistry","_temp","sheets","globalThis$1","globalThis","Function","moduleId","ruleCounter","jssId","minify","cssRule","attributeStyleMap","indexOfImportantFlag","cssValueWithoutImportantFlag","getHead","findPrevNode","insertionPoint","findHigherSheet","findHighestSheet","nextSibling","comment","findCommentNode","getNonce","_insertRule","appendRule","getValidRuleInsertionIndex","DomRenderer","hasInsertedRules","media","meta","createStyle","nextNode","insertionPointElement","insertStyle","insertRules","nativeParent","latestNativeParent","_insertionIndex","refCssRule","ruleStr","insertionIndex","nativeRule","getRules","instanceCounter","Jss","version","createGenerateId","createStyleSheet","removeStyleSheet","createJss","SheetsManager","WeakMap","refs","manage","unmanage","hasCSSTOMSupport","getDynamicStyles","extracted","fnValuesNs","fnRuleNs","fnValues","styleRule","fnRule","isObservable","updateOptions","style$","semiWithNl","colonIndex","atPrefix","GlobalContainerRule","GlobalPrefixedRule","separatorRegExp","addScope","handleNestedGlobalContainerRule","handlePrefixedGlobalRule","valueNs","singleExtend","refRule","mergeExtend","mergeRest","parentRegExp","getReplaceRef","replaceParentRefs","nestedProp","parentProp","parentSelectors","nestedSelectors","getOptions","prevOptions","isNested","isNestedConditional","registerClass","composes","uppercasePattern","msPattern","toHyphenLower","hName","convertCase","hyphenatedProp","addCamelCasedVersion","regExp","newObj","units","border","inset","motion","perspective","iterate","innerProp","_innerProp","camelCasedOptions","propArray","flex","propArrayInObj","propObj","attachment","timingFunction","iterationCount","fillMode","playState","spread","customPropObj","stretch","family","grow","basis","flow","shrink","templateColumns","templateRows","templateAreas","autoColumns","autoRows","autoFlow","rowStart","rowEnd","columnStart","columnEnd","rowGap","columnGap","processArray","scheme","objectToArray","mapValuesByProp","isFallback","isInArray","customProps","propName","_styleDetector","appendedValue","styleDetector","customPropsToStyle","baseProp","js","browser","isTouch","jsCssMap","Moz","O","Webkit","appearence","noPrefill","supportedProperty","colorAdjust","toUpper","camelize","pascalize","longhand","textOrientation","writingMode","userSelect","breakPropsOld","inlineLogicalOld","newProp","unprefixed","prefixed","pascalized","scrollSnap","overscrollBehavior","propMap","flex2012","propMap$1","propKeys","prefixCss","flex2009","multiple","propertyDetectors","computed","key$1","el$1","cache$1","transitionProperties","transPropsRegExp","prefixTransitionCallback","prefixedValue","supportedValue","prefixStyle","changeProp","supportedProp","changeValue","supportedValue$1","atRule","supportedKeyframes","prop0","prop1","defaultUnit","reactPropsRegex","defaultJss","ruleIndex","getSheet","argsStr","flatArgs","innerArgIndex","mergedStyle","styleObject","_cached","cacheValue","createCss","MIN_SAFE_INTEGER","getSheetIndex","JssContext","disableStylesGeneration","isSSR","defaultManagers","getManager","managerId","managers","manageSheet","sheetsMeta","getMeta","existingSheet","getStyles","dynamicStyles","sheetOptions","getSheetOptions","addMeta","addDynamicRules","initialRuleCount","originalRule","getUseInsertionEffect","useInsertionEffect","noTheme","createUseStyles","_options","_options$index","theming","ThemeContext$1","emptyObject","isFirstMount","_useMemo","newSheet","dynamicRules","updateDynamicRules","unmanageSheet","removeDynamicRules","getSheetClasses","useDebugValue","batch","getBatch","nullListeners","notify","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","createStoreHook","useReduxContext","createDispatchHook","useStore","useDispatch","refEquality","createSelectorHook","_useReduxContext","selectedState","contextSub","_useReducer","useReducer","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","NOT_FOUND","defaultEqualityCheck","defaultMemoize","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","comparator","createCacheKeyComparator","equals","put","getEntries","createSingletonCache","cacheIndex","createLruCache","memoized","matchingEntry","createSelectorCreator","memoizeOptionsFromArgs","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dependencies","dep","dependencyTypes","getDependencies","memoizedResultFunc","lastResult","recomputations","resetRecomputations","Q","Z","nn","u","X","rn","freeze","isFrozen","tn","U","H","A","I","N","R","D","z","F","T","C","Proxy","revocable","revoke","proxy","J","K","G","W","B","Reflect","getOwnPropertyNames","deleteProperty","setPrototypeOf","un","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","$","an","createThunkMiddleware","extraArgument","thunk","withExtraArgument","__extends","extendStatics","__","__spreadArray","il","__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","__spreadValues","__spreadProps","__async","__this","__arguments","throw","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","baseProto","createAction","prepareAction","prepared","MiddlewareArray","species","EnhancerArray","freezeDraftable","curryGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","actionCreatorCheck","isBoolean","getDefaultMiddleware","configureStore","rootReducer","curriedGetDefaultMiddleware","devTools","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","trace","defaultEnhancers","storeEnhancers","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","_reducer","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","isStateFunction","frozenInitialState_1","caseReducers","caseReducer","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk2","typePrefix","payloadCreator","requestId","requestStatus","pending","serializeError","rejectedWithValue","aborted","AC","AbortController","class_1","signal","dispatchEvent","reason","throwIfAborted","abort","abortReason","idGenerator","abortController","promise2","finalAction","conditionResult","abortedPromise","err_1","getPendingMeta","race","rejectWithValue","fulfillWithValue","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","createQueueWithTimer","castComparer","comparer","throwInvalidConfigErrorIfTrue","unpackObjectSorter","sortByObj","asc","desc","getSortStrategy","multiPropSorter_1","defaultComparer","multiPropertySorter","sortByArr","valA","valB","objectSorterConfig","equality","createSortInstance","defaultSort","Helper","getDescendantProperty","firstSegment","remaining","dotIndex","FuzzySearch","haystack","caseSensitive","isMatch","propertyValues","toLocaleLowerCase","nearestIndexesFor","letters","indexesOfFirstLetter","startingIndex","loopingIndex","letter","letterIndexes","getThemeProps","omit","styleFunctionSx","styleFunction","newStyleFunction","sx","getPath","_options$cssProperty","themeKey","themeMapping","propValueFinal","getBorder","baseClasses","newClasses","nextClasses","multiKeyStore","key1","key2","subCache","pseudoClasses","generateClassName","_options$disableGloba","disableGlobal","_options$productionPr","productionPrefix","_options$seed","seed","seedPrefix","getNextCounterId","styleSheet","createGenerateClassName","defaultOptions","disableGeneration","sheetsCache","sheetsManager","sheetsRegistry","StylesContext","indexCounter","makeStyles","stylesOrCreator","classNamePrefixOption","_options$defaultTheme","defaultTheme","stylesOptions2","stylesCreator","themingEnabled","stylesWithOverrides","getStylesCreator","stylesOptions","shouldUpdate","currentKey","useSynchronousEffect","sheetManager","staticSheet","flip","serverGenerateClassName","dynamicSheet","_ref4","_ref3","cacheClasses","lastProp","lastJSS","getClasses","useStyles","StyledComponent","classNameProp","ComponentProp","FinalComponent","componentCreator","positions","useForkRef","refA","refB","refValue","useEnhancedEffect","useEventCallback","mapEventPropToEvent","eventProp","_props$disableReactTr","disableReactTree","_props$mouseEvent","mouseEvent","onClickAway","_props$touchEvent","touchEvent","movedRef","nodeRef","activatedRef","syntheticEventRef","handleOwnRef","handleRef","handleClickAway","insideReactTree","clickedRootScrollbar","insideDOM","createHandleSynthetic","handlerName","childrenPropsHandler","childrenProps","mappedTouchEvent","handleTouchMove","mappedMouseEvent","isff","addEvent","useCapture","attachEvent","removeEvent","detachEvent","getMods","getKeys","_keyMap","backspace","esc","del","ins","home","pageup","pagedown","capslock","num_0","num_1","num_2","num_3","num_4","num_5","num_6","num_7","num_8","num_9","num_multiply","num_add","num_enter","num_subtract","num_decimal","num_divide","_modifier","alt","ctrl","cmd","command","modifierMap","_mods","_handlers","_downKeys","winListendFocus","_scope","elementEventMap","setScope","getScope","unbind","keysInfo","eachUnbind","removeKeyEvent","splitKey","originKey","unbindKeys","lastKey","unbindElements","record","isUnbind","a2","arr1","isIndex","eventHandler","modifiersMatch","shortcut","returnValue","stopPropagation","cancelBubble","asterisk","hotkeys","keyName","keyNum","getModifierState","keydown","keyup","handlerKey","keyLen","keyShortcut","_downKeysCurrent","capture","single","keydownListener","keyupListenr","clearModifier","flat","findindex","_api","getPressedKeyString","getModifier","deleteScope","newScope","handlers","getPressedKeyCodes","getAllKeyCodes","isPressed","srcElement","isInput","readOnly","trigger","keyMap","_hotkeys","noConflict","_options$withTheme","WithStyles","innerRef","more","defaultVariantMapping","Typography","_props$align","_props$color","_props$display","_props$gutterBottom","gutterBottom","_props$noWrap","_props$paragraph","paragraph","_props$variant","_props$variantMapping","variantMapping","srOnly","alignLeft","alignCenter","alignRight","alignJustify","textOverflow","colorInherit","colorPrimary","colorSecondary","colorTextPrimary","colorTextSecondary","colorError","displayInline","displayBlock","SvgIcon","_props$component","_props$fontSize","htmlColor","titleAccess","_props$viewBox","viewBox","muiName","flexShrink","colorAction","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeLarge","createSvgIcon","hadKeyboardEvent","hadFocusVisibleRecently","hadFocusVisibleRecentlyTimeout","inputTypesWhitelist","tel","email","password","datetime","handleKeyDown","handleVisibilityChange","visibilityState","isFocusVisible","focusTriggersKeyboardModality","handleBlurVisible","useIsFocusVisible","onBlurVisible","getChildMapping","mapFn","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","onExited","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","in","exit","TransitionGroup","handleExited","isMounting","firstRender","componentDidMount","componentWillUnmount","currentChildMapping","_this$props","childFactory","TransitionGroupContext","_props$pulsate","pulsate","rippleX","rippleY","rippleSize","inProp","_props$onExited","_React$useState","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","timeoutId","TouchRipple","_props$center","center","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimerCommit","startCommit","oldRipples","_options$pulsate","_options$center","_options$fakeElement","fakeElement","sizeX","sizeY","persist","ButtonBase","buttonRefProp","buttonRef","_props$centerRipple","centerRipple","_props$disabled","_props$disableRipple","disableRipple","_props$disableTouchRi","disableTouchRipple","_props$focusRipple","focusRipple","focusVisibleClassName","onBlur","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","onDragLeave","_props$tabIndex","TouchRippleProps","_props$type","rippleRef","focusVisible","setFocusVisible","_useIsFocusVisible","focusVisibleRef","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleDragLeave","handleMouseUp","handleMouseLeave","handleTouchStart","handleTouchEnd","isNonNativeButton","keydownRef","handleKeyUp","buttonProps","handleUserRef","_React$useState2","mountedState","setMountedState","enableTouchRipple","alignItems","justifyContent","WebkitTapHighlightColor","borderStyle","MoreHoriz","_props$expandText","expandText","_props$itemsAfterColl","itemsAfterCollapse","_props$itemsBeforeCol","itemsBeforeCollapse","_props$maxItems","maxItems","_props$separator","setExpanded","allItems","insertSeparators","renderItemsBeforeAndAfter","flexWrap","listStyle","_props$disableElevati","disableElevation","_props$disableFocusRi","disableFocusRipple","endIconProp","endIcon","_props$fullWidth","fullWidth","_props$size","startIconProp","startIcon","textPrimary","textSecondary","outlined","outlinedPrimary","outlinedSecondary","contained","containedPrimary","containedSecondary","borderColor","textSizeSmall","textSizeLarge","outlinedSizeSmall","outlinedSizeLarge","containedSizeSmall","containedSizeLarge","sizeSmall","sizeLarge","iconSizeSmall","iconSizeMedium","iconSizeLarge","that","ownerWindow","createChainedFunction","_props$disablePortal","disablePortal","onRendered","mountNode","setMountNode","getContainer","getScrollbarSize","scrollDiv","scrollbarSize","ariaHidden","getPaddingRight","ariaHiddenSiblings","currentNode","nodesToExclude","blacklist","blacklistTagNames","findIndexOf","containerInfo","handleContainer","fixedNodes","restorePaddings","disableScrollLock","isOverflowing","scrollContainer","ModalManager","modals","containers","modalIndex","modalRef","hiddenSiblingNodes","hiddenSiblings","getHiddenSiblings","containerIndex","nextTop","_props$disableAutoFoc","disableAutoFocus","_props$disableEnforce","disableEnforceFocus","_props$disableRestore","disableRestoreFocus","getDoc","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","rootRef","prevOpenRef","contain","hasFocus","loopFocus","invisible","_props$invisible","defaultManager","inProps","_props$BackdropCompon","BackdropComponent","BackdropProps","_props$closeAfterTran","closeAfterTransition","_props$disableBackdro","disableBackdropClick","_props$disableEscapeK","disableEscapeKeyDown","_props$disableScrollL","_props$hideBackdrop","hideBackdrop","_props$keepMounted","keepMounted","_props$manager","onBackdropClick","onEscapeKeyDown","exited","setExited","mountNodeRef","hasTransition","getHasTransition","getModal","handleMounted","mount","handleOpen","resolvedContainer","isTopModal","handlePortalRef","handleClose","inlineStyle","childProps","onEnter","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","initialStatus","appearStatus","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","componentDidUpdate","prevProps","nextStatus","cancelNextCallback","getTimeouts","mounting","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEntering","onTransitionEnd","onExit","onExiting","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","contextType","getTransitionProps","_props$style","mode","transitionDelay","entering","Grow","_props$disableStrictM","disableStrictModeCompat","_props$timeout","_props$TransitionComp","TransitionComponent","autoTimeout","enableStrictModeCompat","unstable_strictMode","foreignRef","normalizedTransitionCallback","nodeOrAppearing","isAppearing","handleEntering","handleEnter","reflow","_getTransitionProps","handleEntered","handleExiting","handleExit","_getTransitionProps2","nodeOrNext","maybeNext","muiSupportAuto","_props$square","_props$elevation","elevation","elevations","getOffsetTop","getOffsetLeft","getTransformOriginValue","getAnchorEl","anchorEl","Popover","_props$anchorOrigin","anchorOrigin","anchorPosition","_props$anchorReferenc","anchorReference","containerProp","getContentAnchorEl","_props$marginThreshol","marginThreshold","_props$PaperProps","PaperProps","_props$transformOrigi","_props$transitionDura","transitionDurationProp","_props$TransitionProp","TransitionProps","paperRef","getAnchorOffset","contentAnchorOffset","resolvedAnchorEl","anchorRect","anchorVertical","getContentAnchorOffset","contentAnchorEl","getScrollParent","offsetTop","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","anchorOffset","containerWindow","heightThreshold","widthThreshold","_diff","_diff2","_diff3","setPositioningStyles","positioning","handlePaperRef","updatePosition","overflowY","_props$dense","dense","_props$disablePadding","disablePadding","subheader","disableListWrap","nextElementSibling","previousItem","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","MenuList","_props$autoFocus","autoFocus","_props$autoFocusItem","autoFocusItem","_props$disabledItemsF","_props$disableListWra","textCriteriaRef","previousKeyMatched","adjustStyleForScrollbar","containerElement","noExplicitWidth","activeItemIndex","newChildProps","criteria","lowerKey","currTime","keepFocusOnCurrent","RTL_ORIGIN","LTR_ORIGIN","Menu","disableAutoFocusItem","_props$MenuListProps","MenuListProps","PopoverClasses","menuListActionsRef","contentAnchorRef","WebkitOverflowScrolling","ListItemIcon","alignItemsFlexStart","ListItemText","_props$disableTypogra","disableTypography","_props$inset","primaryProp","primaryTypographyProps","secondaryProp","secondaryTypographyProps","isMuiElement","muiNames","_props$alignItems","_props$button","childrenProp","componentProp","_props$ContainerCompo","ContainerComponent","_props$ContainerProps","ContainerProps","ContainerClassName","_props$disableGutters","disableGutters","_props$divider","_props$selected","childContext","listItemRef","componentProps","secondaryAction","borderBottom","backgroundClip","MenuItem","ListItemClasses","_props$role","tabIndexProp","FormControlContext","useFormControl","InputAdornment","_props$disablePointer","disablePointerEvents","variantProp","muiFormControl","hiddenLabel","filled","positionStart","positionEnd","marginDense","formControlState","getStyleValue","computedStyle","TextareaAutosize","rowsMax","_props$rowsMin","rowsMin","rowsMinProp","isControlled","inputRef","shadowRef","renders","syncHeight","inputShallow","singleRowHeight","outerHeight","outerHeightStyle","isFilled","SSR","InputBase","ariaDescribedby","autoComplete","endAdornment","_props$inputComponent","inputComponent","_props$inputProps","inputProps","inputPropsProp","inputRefProp","_props$multiline","renderSuffix","startAdornment","valueProp","handleInputRefWarning","handleInputPropsRefProp","handleInputRefProp","handleInputRef","setFocused","fcs","onFilled","onEmpty","checkDirty","InputComponent","setAdornedStart","formControl","adornedStart","adornedEnd","onAnimationStart","animationName","required","inputMultiline","inputHiddenLabel","inputAdornedStart","inputAdornedEnd","inputTypeSearch","inputMarginDense","placeholderHidden","placeholderVisible","Input","disableUnderline","underline","bottomLineColor","borderBottomColor","borderBottomStyle","FilledInput","borderTopLeftRadius","borderTopRightRadius","WebkitBoxShadow","WebkitTextFillColor","caretColor","NotchedOutline","labelWidthProp","labelWidth","notched","legendLabelled","legendNotched","dangerouslySetInnerHTML","__html","borderWidth","OutlinedInput","_props$labelWidth","notchedOutline","FormLabel","InputLabel","_props$disableAnimati","disableAnimation","shrinkProp","animated","FormControl","_props$error","visuallyFocused","_props$hiddenLabel","_props$margin","_props$required","initialAdornedStart","initialFilled","setFilled","_React$useState3","_focused","registerEffect","flexDirection","marginNormal","FormHelperText","areEqualValues","SelectInput","autoWidth","displayEmpty","IconComponent","labelId","_props$MenuProps","MenuProps","onOpen","openProp","renderValue","_props$SelectDisplayP","SelectDisplayProps","_useControlled","controlled","defaultProp","valueState","useControlled","_useControlled2","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","openState","setOpenState","getSelection","isCollapsed","displaySingle","childrenArray","handleItemClick","displayMultiple","computeDisplay","menuMinWidth","buttonId","selectMenu","nativeInput","iconOpen","NativeSelectInput","iconFilled","iconOutlined","defaultInput","NativeSelect","_props$IconComponent","ArrowDropDown","_props$input","Select","_props$autoWidth","_props$displayEmpty","_props$multiple","_props$native","variantProps","variantComponent","TextField","FormHelperTextProps","helperText","InputLabelProps","InputProps","_props$select","SelectProps","InputMore","_InputLabelProps$requ","displayRequired","helperTextId","inputLabelId","InputElement","ListSubheader","_props$disableSticky","disableSticky","sticky","_createForOfIteratorHelperLoose","allowArrayLike","it","SortOrder","UNINITIALIZED_SENTINEL","useStaticValue","factory","valueRef","useInstanceVariable","Logger","_console","_console2","_console3","formatBullets","FileHelper","isDirectory","file","isDir","isSymlink","isEncrypted","isOpenable","openable","isSelectable","isDraggable","isDroppable","droppable","isDndOpenable","dndOpenable","getModDate","modDate","maybeDate","getChildrenCount","childrenCount","sanitizeInputArray","rawArray","sanitizedFiles","errorMessages","nonObjectFileCount","missingFieldFileCount","seenIds","duplicateIds","repeatedIdsString","arrayString","itemString","errorMessageString","sanitizedArray","OptionIds","FileViewMode","ChonkyIconName","selectInstanceId","selectFileActionMap","fileActionMap","selectFileActionIds","fileActionIds","selectFileActionData","fileActionId","selectToolbarItems","toolbarItems","selectContextMenuItems","contextMenuItems","selectFolderChain","folderChain","selectCurrentFolder","selectParentFolder","selectFileMap","fileMap","selectCleanFileIds","cleanFileIds","selectFileData","fileId","selectHiddenFileIdMap","hiddenFileIdMap","selectHiddenFileCount","selectSearchString","searchString","selectSelectionMap","selectionMap","selectSelectedFileIds","selectSelectionSize","selectIsFileSelected","selectSelectedFiles","selectSelectedFilesForActionCount","_getSelectedFilesForA","getSelectedFilesForAction","selectFileViewConfig","fileViewConfig","selectSortActionId","sortActionId","selectSortOrder","sortOrder","selectOptionValue","optionId","optionMap","selectOptionMap","selectThumbnailGenerator","thumbnailGenerator","selectDoubleClickDelay","doubleClickDelay","selectIsDnDDisabled","disableDragAndDrop","selectClearSelectionOnOutsideClick","clearSelectionOnOutsideClick","selectContextMenuMounted","contextMenuMounted","selectContextMenuConfig","contextMenuConfig","getFileActionMap","getOptionMap","getFileMap","getFileIds","fileIds","getCleanFileIds","getSortActionId","getSortOrder","getSearchString","_getLastClick","lastClick","makeGetAction","fileActionSelector","makeGetOptionValue","makeGetFiles","fileIdsSelector","getSortedFileIds","sortAction","showFolderFirst","prepareSortKeySelector","sortFunctions","sortKeySelector","_sortFunctions$push","configKeyName","ASC","getSearcher","cleanFiles","getSearchFilteredFileIds","searcher","getHiddenFileIdMap","searchFilteredFileIds","showHiddenFiles","searchFilteredFileIdsSet","selectors","getDisplayFileIds","sortedFileIds","getLastClickIndex","displayFileIds","getIsFileSelected","getSelectedFiles","selectedFiles","filteredSelectedFiles","prevFiles","requiresSelection","fileFilter","selectSelectedFilesForAction","thunkUpdateRawFileActions","rawFileActions","disableDefaultFileActions","defaultActionsToAdd","_sanitizeInputArray","disabledActionIds","DefaultFileActions","fileActions","_Array","seenActionIds","addToSeen","wasNotSeen","fileActionArrays","duplicateFreeArrays","duplicateFreeArray","mergeFileActionsArrays","EssentialFileActions","optionDefaults","reduxActions","setRawFileActions","setFileActionsErrorMessages","setFileActions","setOptionDefaults","thunkUpdateToolbarNContextMenuItems","excludedToolbarFileActionIds","OpenParentFolder","seenToolbarGroups","seenContextMenuGroups","getGroup","itemArray","seenMap","_iterator","contextMenu","updateFileActionMenuItems","thunkUpdateDefaultFileViewActionId","setFileViewConfig","thunkActivateSortAction","_getState2","oldActionId","oldOrder","DESC","actionId","thunkRequestFileAction","selectedFilesForAction","contextMenuTriggerFile","_fileMap$config$trigg","triggerFileId","selectContextMenuTriggerFile","actionState","toggleOption","selectionTransform","prevSelection","hiddenFileIds","clearSelection","selectFiles","thunkApplySelectionTransform","effect","maybeEffectPromise","reduxDispatch","getReduxState","effectResult","triggerDispatchAfterEffect","externalFileActionHandler","selectExternalFileActionHandler","thunkDispatchFileAction","I18nNamespace","defineFileAction","__payloadType","errorMessage","findElementAmongAncestors","maybeElement","predicate","getValueOrFallback","desiredType","reduxThunks","disableSelection","fileIdsToSelect","EssentialActions","MouseClickFile","clickType","OpenFiles","targetFile","toggleSelection","exclusive","setLastClickIndex","fileDisplayIndex","lastClickIndex","KeyboardClickFile","enterKey","spaceKey","StartDragNDrop","draggedFile","EndDragNDrop","_ref5","destination","droppedFiles","MoveFiles","ChangeSelection","openParentFolder","iconOnly","_ref6","parentFolder","OpenFileContextMenu","_ref7","triggerFile","showContextMenu","mouseX","mouseY","DefaultActions","OpenSelection","openFiles","SelectAllFiles","selectAllFiles","ClearSelection","EnableListView","entryHeight","EnableCompactView","Compact","entryWidth","compact","EnableGridView","smallThumbnail","SortFilesByName","SortFilesBySize","SortFilesByDate","ToggleHiddenFiles","ToggleShowFoldersFirst","FocusSearchInput","focusSearchInput","ToggleDarkMode","ExtraActions","CopyFiles","CreateFolder","folderCreate","UploadFiles","upload","DownloadFiles","DeleteFiles","trash","initialRootState","fileActionsErrorMessages","rawFolderChain","folderChainErrorMessages","rawFiles","filesErrorMessages","searchMode","setExternalFileActionHandler","_action$payload2","setRawFolderChain","setRawFiles","_sanitizeInputArray2","_Object$keys","selectedFileId","setSortedFileIds","setHiddenFileIds","_Object$keys2","setFocusSearchInput","setSearchString","setSelectionDisabled","_Object$keys3","setThumbnailGenerator","setDoubleClickDelay","setDisableDragAndDrop","setClearSelectionOnOutsideClick","setContextMenuMounted","hideContextMenu","_createSlice","useChonkyStore","chonkyInstanceId","selectionWatcher","unsubscribeCallbacks","oldSelection","selectedFilesIds","useStoreWatchers","useParamSelector","parametrizedSelector","selectorParams","useDTE","usePropReduxUpdate","ChonkyIconPlaceholder","onFileAction","disableDragAndDropProvider","defaultSortActionId","defaultFileViewActionId","iconComponent","darkMode","i18n","getI18nId","namespace","stringId","getActionI18nId","FileActions","useLocalizedFileActionStrings","_action$button","_action$button2","buttonName","buttonTooltip","_action$button3","useLocalizedFileEntryStrings","ChonkyFormattersContext","fileModDateString","formatFileModDate","fileSizeString","formatFileSize","defaultFormatters","safeModDate","_intl","sizeData","bits","symbol","ChonkyIconContext","VideoExtensions","ImageExtensions","AudioExtensions","ColorsLight","ColorsDark","getIconTrie","colourIndex","IconsToExtensions","model","database","archive","video","lock","music","terminal","users","linux","ubuntu","windows","rust","python","nodejs","php","git","adobe","pdf","excel","flash","exactTrie","ignoreCase","_IconsToExtensions","pair","extensions","iconData","colorCode","iconTrie","lightTheme","debugRed","debugBlue","debugGreen","debugPurple","debugYellow","textActive","fontSizes","rootPrimary","rootLayoutMargin","buttonRadius","dnd","canDropColor","cannotDropColor","canDropMask","cannotDropMask","fileListCanDropMaskOne","fileListCanDropMaskTwo","fileListCannotDropMaskOne","fileListCannotDropMaskTwo","dragLayer","fileList","desktopGridGutter","mobileGridGutter","gridFileEntry","childrenCountSize","iconColorFocused","iconSize","iconColor","fileColorTint","folderBackColorTint","folderFrontColorTint","listFileEntry","propertyFontSize","iconFontSize","iconBorderRadius","darkThemeOverride","mobileThemeOverride","useIsMobileBreakpoint","queryInput","supportMatchMedia","_props$options","_props$options$defaul","defaultMatches","_props$options$matchM","_props$options$noSsr","noSsr","_props$options$ssrMat","ssrMatchMedia","setMatch","queryList","updateMatch","addListener","removeListener","useMediaQuery","getStripeGradient","colorOne","colorTwo","makeLocalChonkyStyles","makeGlobalChonkyStyles","selectorMapping","localStyles","globalStyles","localSelector","globalSelector","important","ChonkyBusinessLogicInner","_props$files","useImperativeHandle","getFileSelection","setFileSelection","requestFileAction","useFileBrowserHandle","ChonkyBusinessLogic","useDndContextAvailable","useContextMenuTrigger","contextMenuMountedRef","fileEntryWrapperDiv","dataset","chonkyFileId","findClosestChonkyFileId","ChonkyDndFileEntryType","layerStyles","getItemStyles","initialCursorOffset","initialFileOffset","currentFileOffset","WebkitTransform","DnDFileListDragLayer","_useDragLayer","useDragLayer","selectionSize","fileDragPreview","HotkeyListener","fileAction","hotkeysStr","hotkeyCallback","ChonkyPresentationLayer","dndDisabled","buttonCandidate","hotkeyListenerComponents","dndContextAvailable","useStyles$1","chonkyRoot","onContextMenu","touchAction","webkitTouchCallout","webkitUserSelect","mozUserSelect","msUserSelect","FileBrowser","isMobileBreakpoint","combinedTheme","chonkyComps","CustomVisibilityState","useFileDrag","fileRef","getDndStartPayload","reduxState","sourceInstanceId","onDragStart","onDragEnd","_useDragIfAvailable","mockHook","useDragIfAvailable","dndIsDragging","drag","preview","useFileDrop","forceDisableDrop","includeChildrenDrops","folderChainRef","onDrop","_item","isOver","_item$payload","prohibitedFileIds","folder","currFile","isOverCurrent","_useDropIfAvailable","useDropIfAvailable","_useDropIfAvailable$","dndIsOver","dndIsOverCurrent","dndCanDrop","useDndHoverOpen","dndState","currentFolderRef","_currentFolderRef$cur","TextPlaceholder","minLength","placeholderLength","whitespace","useStyles$2","textPlaceholder","animationIterationCount","animationTimingFunction","useFileEntryHtmlProps","useFileEntryState","getWithCheckpoints","useIconData","_useThumbnailUrl","useThumbnailUrl","thumbnailUrl","thumbnailLoading","fileColor","iconSpin","useDndIcon","dndIconName","dndCannotDrop","dndDragging","_useState","setThumbnailUrl","setThumbnailLoading","loadingAttempts","loadingCancelled","useFileActionTrigger","useFileActionProps","_action$option","actionSelectionEmpty","_action$button$icon","sortAsc","sortDesc","toggleOn","toggleOff","isSortButtonAndCurrentSort","isFileViewButtonAndCurrentView","isOptionAndEnabled","customDisabled","customActive","customVisibility","Disabled","Active","externalClassName","dropdown","useStyles$3","ChonkyIcon","iconWithText","fallbackIcon","fixedWidth","baseButton","iconOnlyButton","activeButton","iconDropdown","SmartToolbarButton","triggerAction","_useFileActionProps","_useLocalizedFileActi","Hidden","FolderChainButton","_useFileDrop","useStyles$4","baseBreadcrumb","disabledBreadcrumb","currentBreadcrumb","folderChainIcon","buttonContainer","dndIndicator","FileNavbar","useStyles$5","folderChainItems","useFolderChainItems","folderChainComponents","components","navbarWrapper","navbarContainer","navbarBreadcrumbs","upDirectoryButton","ToolbarDropdownButton","useStyles$6","SmartToolbarDropdownButton","onClickFollowUp","ToolbarDropdown","anchor","setAnchor","menuItemComponents","localizedName","FileActionGroups","useLocalizedFileActionGroup","useStyles$7","dropdownList","ToolbarInfo","useStyles$8","hiddenCount","fileCountString","Toolbar","fileCount","selectedString","hiddenString","infoContainer","infoText","extraInfoSpan","selectionSizeText","hiddenCountText","ToolbarSearch","searchPlaceholderString","useStyles$9","searchInputRef","reduxSearchString","localSearchString","setLocalSearchString","_useDebounce","debouncedValue","setDebouncedValue","debouncedLocalSearchString","showLoadingIndicator","setShowLoadingIndicator","handleChange","searchFieldContainer","searchIcon","spin","searchFieldInput","searchFieldInputInner","FileToolbar","useStyles$a","toolbarItemComponents","toolbarWrapper","toolbarContainer","toolbarLeft","toolbarRight","toolbarLeftFiller","FileListEmpty","useStyles$b","emptyString","FileList","fileListEmpty","fileListEmptyContent","folderOpen","ClickableWrapper","WrapperTag","wrapperTag","passthroughProps","onSingleClick","onDoubleClick","onKeyboardClick","clickCount","clickTimeout","mouseClickEvent","useClickHandler","keyboardClickEvent","nativeEvent","useKeyDownHandler","compProps","mergedProps","FileEntryName","modifierIconComponents","modifierIcons","symlink","useModifierIconComponents","fileNameComponent","_file$ext","extension","ext","_extname","useFileNameComponent","useStyles$c","CompactEntry","entryState","_useLocalizedFileEntr","useStyles$d","fileEntryHtmlProps","listFileEntryIcon","listFileEntryDescription","listFileEntryName","listFileEntryProperties","listFileEntryProperty","DnDFileEntry","_useFileEntryDnD","_useFileDrag","useFileEntryDnD","useStyles$e","fillParent","FileThumbnail","thumbnailStyle","backgroundImage","useStyles$f","fileThumbnail","backgroundRepeat","backgroundPosition","backgroundSize","GridEntryDndIndicator","useStyles$g","borderLeft","GridEntryPreviewFolder","folderClasses","useFolderStyles","fileClasses","useFileStyles","commonClasses","useCommonEntryStyles","previewFile","folderBackSideMid","folderBackSideTop","folderFrontSide","fileIcon","selectionIndicator","thumbnail","borderRightColor","borderTopColor","borderLeftColor","GridEntryPreviewFile","_c2","focusIndicator","GridEntry","useFileEntryStyles","entryClassName","gridFileEntryPreview","gridFileEntryNameContainer","gridFileEntryName","wordBreak","ListEntry","styleState","useStyles$h","listFileEntrySelection","disabledDndState","SmartFileEntry","EntryComponent","displayIndex","fileViewMode","useStyles$i","fileClickHandlers","onMouseClick","useFileClickHandlers","clickableWrapperProps","fileEntryClickableWrapper","fileEntryProps","getGridConfig","viewConfig","gutter","rowCount","GridContainer","gridRef","gridConfig","setGridConfig","gridConfigRef","oldConf","newConf","resetAfterRowIndex","resetAfterColumnIndex","resetAfterIndices","columnIndex","rowIndex","sizers","gc","displayFileIdsRef","getItemKey","_displayFileIdsRef$cu","cellRenderer","styleWithGutter","useStyles$j","estimatedRowHeight","estimatedColumnWidth","itemKey","ListContainer","useStyles$k","listContainer","_displayFileIds$data$","borderTop","currentFolder","localClasses","useLocalStyles","useStyles$l","listRenderer","fileListWrapper","dndDropZone","dndDropZoneIcon","disableHeight","FileContextMenu","browserMenuShortcutString","useContextMenuDismisser","contextMenuItemComponents","useStyles$m","contextMenuList","browserMenuTooltip","_WINDOW","_DOCUMENT","_PERFORMANCE","mark","_ref$userAgent","WINDOW","DOCUMENT","PERFORMANCE","IS_DOM","NAMESPACE_IDENTIFIER","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","FontAwesomeConfig","coerce","getAttrConfig","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","shims","functions","doScroll","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","isNode","emit","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","invokeCallback","subscriber","settled","_state","handleThenable","resolved","fulfill","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","meaninglessTransform","flipX","flipY","insertCss","headChildren","beforeChild","idPool","htmlEscape","joinStyles","transformIsMeaningful","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","abstract","makeInlineSvgAbstract","_params$icons","icons","iconName","maskId","_params$watchable","watchable","isUploadedIcon","widthClass","attrClass","uploadedIconWidthStyle","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","makeIconMasking","styleString","makeIconStandard","asSymbol","asIcon","noop$1","subject","initialValue","thisContext","bindInternal4","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","ligatures","ligature","hasRegular","shim","oldName","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","parseTransformString","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","asFoundIcon","vectorData","class","baseStyles","dfp","drc","fp","rc","dPatt","customPropPatt","rPatt","Library","definitions","additions","_pullDefinitions","definition","_normalized$key","ensureCss","_cssInserted","apiObject","abstractCreator","findIconDefinition","iconLookup","_iconLookup$prefix","library","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","maybeIconDefinition","chr","_excluded$1","normalizeIconArgs","objectWithKey","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","_classes","beat","beatFade","bounce","shake","spinPulse","spinReverse","pulse","inverse","pull","swapOpacity","renderedIcon","extraProps","convertCurry","_IconMap","convert","attrs","styleToObject","_extraProps$style","existingStyle","IconMap","faCircleNotch","faChevronDown","faMinus","faFistRaised","faArrowDown","faTimes","faBoxOpen","faLevelUpAlt","faCopy","paste","faPaste","share","faShareAlt","faSearch","faObjectGroup","faEraser","faSortAmountDownAlt","faSortAmountUpAlt","faToggleOn","faToggleOff","faList","faThList","faTh","largeThumbnail","faThLarge","faFolder","faFolderPlus","faFolderOpen","folderChainSeparator","faChevronRight","faDownload","faUpload","faTrash","faExclamationTriangle","faExternalLinkAlt","faEyeSlash","faFile","faBalanceScale","faFileCode","faCogs","faCubes","faDatabase","faFileAlt","faFileArchive","faFileImage","faFilm","faInfoCircle","faKey","faLock","faMusic","faTerminal","faUsers","faLinux","faUbuntu","faWindows","faRust","faPython","faNodeJs","faPhp","faGitAlt","faAdobe","faFilePdf","faFileExcel","faFileWord","faRunning","ChonkyIconFA","_IconMap$icon","faProps","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isFunction","toStringTag","isFile","isFileList","isURLSearchParams","allOwnKeys","findKey","_global","isContextDefined","isTypedArray","TypedArray","isHTMLForm","isRegExp","reduceDescriptors","descriptors","reducedDescriptors","ret","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","isStream","pipe","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","kindOf","forEachEntry","matchAll","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","define","toCamelCase","noop","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","request","lineNumber","columnNumber","axiosError","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","visitor","defaultVisitor","useBlob","convertValue","Buffer","isFlatArray","exposedHelpers","encode","charMap","AxiosURLSearchParams","_pairs","encoder","_encode","buildURL","serializeFn","serializedParams","hashmarkIndex","synchronous","runWhen","eject","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","protocols","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transformRequest","hasJSONContentType","isObjectPayload","setContentType","platform","helpers","toURLEncodedForm","formSerializer","_FormData","env","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_header","_rewrite","lHeader","setHeaders","rawHeaders","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","formatHeader","asStrings","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","expires","secure","cookie","toGMTString","read","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","msie","urlParsingNode","originURL","resolveURL","hostname","requestURL","samplesCount","timestamps","firstSampleTS","tail","chunkLength","startedAt","bytesCount","passed","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","loaded","lengthComputable","progressBytes","rate","estimated","requestData","onCanceled","withXSRFToken","cancelToken","auth","username","fullPath","onloadend","responseHeaders","getAllResponseHeaders","ERR_BAD_REQUEST","settle","statusText","paramsSerializer","onreadystatechange","responseURL","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","isURLSameOrigin","xsrfValue","cookies","onDownloadProgress","onUploadProgress","parseProtocol","knownAdapters","http","renderReason","isResolvedHandle","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","validators","deprecatedWarnings","validator","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","_request","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","toFormData","Cancel","isAxiosError","mergeConfig","formToJSON","getAdapter","pack","SuppressedError","IMatchingJobStatus","getDataMatchingUploads","queryType","keyFields","existingNodes","pageInfo","dataMatcher","matchCounts","unmatchedAcinControls","nextWorkflow","DataMatcherClientControl","DataMatchingControlsWorkflow","controlView","summaryView","Dashboard","DataMatching","FormWrapper","UploadWrapper","eventName","listen","prevEvent","newEvents","Upload","checkStatus","setStatus","setPercentage","animateTimer","clearTimer","newPercent","MyDataTableFragmentDoc","MyDataMatchingFileFragmentDoc","GetDataMatchingUploadByIdDocument","Notifications","errorType","totalErrors","UploadingStatus$1","sizeLimit","startPolling","statusUpdated","getDataMatchingUploadById","isLargeUpload","notification","getIssues","getNotification","hideUploadStatusWithNotification","Uploader","Uploader$2","uploadURL","setFile","setFileId","fileUploadIssue","setFileUploadIssue","uploadMessage","supportedTypes","onAddFiles","fetch","uploadFile","onClearFiles","renderProgress","Form","InputWrapper","Form$2","matching","getMatchingAccount","accountId","onFormChange","myValue","matchingAccount","defaultApproverId","defaultmatcherId","defaultApprover","defaultMatcher","approverId","isRequired","inventoryId","getInventories","matcherId","availableMatchers","getMakers","availableApprovers","getApprovers","MyAccountFragmentDoc","MyRiskInventoryFragmentDoc","MyUserFragmentDoc","MyDataMatchingAccountFragmentDoc","GetDataMatchingAccountsDocument","CreateDataMatcherDocument","DataTable","DataTable$2","clientSort","DataMatchingErrors","issues","INITIAL_FORM_STATE","INITIAL_STATUS_STATE","NewIntegrations$1","onCreate","continueEnabled","setRenderKey","setFormData","createDataMatcherMutation","useGetDataMatchingAccountsQuery","hasCompletedFile","isInvalid","onSave","closeAfterSave","saveAndAddAnother","saveAndExit","saveAndContinue","cancelText","submitText","footerButtonSecondary","getDataMatchingAccounts","updates","updateData","Results","AlertContainer","CardContainer","CardItem","CardContents","File","Avatars","Spacer","AdditionalLabel","TooltipWrapper","assignedTo","userId","viewStyle","notStarted","onMatchConnections","sortUsers","aLastName","bLastName","nonUserMatchers","matchers","nonUserApprovers","approvers","approver","hasNoUsers","hasNoApprovers","hasNoMatchers","userMatcher","userApprover","toolTipMatchers","toolTipApprovers","matcherRows","approverRows","noUserTooltipRef","avatars","matcherAvatar","avatar","overlayIcon","Complete","Matcher","approverAvatar","Approver","getAvatars","Progress","ProgressKeyWrapper","ProgressKey","ProgressCircle","ProgressKeyValue","SubTitle","ProgressKey$2","MatcherProgress","isAssignedToMe","approved","matched","leftOver","sortedProgress","calculatePercentage$1","ApproverProgress","Todo","Progress$1","File$1","dateFormatted","createdAt","ErrorAlert","DeleteDataMatcherDocument","ResultsSortFieldFragmentDoc","ResultsSortInfoFragmentDoc","FileDetailsFragmentDoc","ProgressFragmentDoc","AvatarUserFragmentDoc","UserInfoFragmentDoc","DataMatcherCardFragmentDoc","DataMatchingUploadsPageFragmentDoc","GetDataMatchingTabsDocument","DeleteDataMatcherModal","setError","deleteDataMatcherMutation","onCompleted","refetchQueries","onDeleteDataMatcher","Card$2","showDeleteDataMatcherModal","setShowDeleteDataMatcherModal","hasAnyWorkBeenDone","matchingStatus","dropdownMenuItems","account","withMenu","menuIcon","menuDropdownContent","onDropdownMenuClick","renderFooter","Results$2","onAddNewClick","onPageChange","hasSearchTerm","renderAlertTitle","renderAlertMessage","loadMore","nextPage","HeaderBar$1","onShowModal","onSetSort","onChangeSearchTerm","searchTerm","renderCta","titleBar","toolBar","searchConfig","renderSort","tabsBar","DEFAULT_PATE_META_STATE","pageMetaReducer","Dashboard$2","showAddNewIntegrations","pageMeta","setPageMeta","setIsOpen","fetchMore","refetch","setSearchTerm","getCount","getDataMatchingTabs","activeDataMatcherTab","dataMatching","riskInvName","DataMatching$1","Workflow","Footer$2","FooterNextButton","HeaderSort","DataMatchingMatchScoreFragmentDoc","DataMatchingRelationshipCountFragmentDoc","DataMatchingClientControlDescriptionFragmentDoc","DataMatchingCommentFragmentDoc","DataMatchingMatchRecordStatusFragmentDoc","DataMatchingMatchRecordFragmentDoc","DataMatchingClientControlRowFragmentDoc","DataMatchingAcinControlDescriptionFragmentDoc","DataMatchingAcinControlFragmentDoc","DataMatchingAcinControlPreliminaryMissingFragmentDoc","DataMatchingAcinControlRowFragmentDoc","DataMatchingControlViewFragmentDoc","DataMatchingUnassignedAcinControlFragmentDoc","DataMatchingSummaryRowOneToOneFragmentDoc","DataMatchingSummaryRowManyToOneFragmentDoc","DataMatchingSummaryRowManyToManyFragmentDoc","DataMatchingSummaryViewRowFragmentDoc","DataMatchingSummaryViewFragmentDoc","DataMatchingControlsWorkflowFragmentDoc","PartialDataMatcherFragmentDoc","MatchingFilterRangeFragmentDoc","MatchingFilterRangeInputTypeFragmentDoc","ControlMatchingFiltersFragmentDoc","GetDataMatcherByIdDocument","ControlsWorkflow","ControlView","SummaryView","SelectAllWrapper","SelectAllLabel","RowList","ClientControlDescription","ClientControlDescription$2","clientControlObjectives","clientControlType","clientControlOwner","clientControlFrequency","clientControlQualityScore","ClientControlRow","MatchingRow","MatchingRowHeader","Badges","ID","MatchingRowHeader$2","showLogo","badges","MatchingRow$2","isCheckDisabled","onChangeHeight","InternalCommentsBadge","InternalCommentsBadge$2","RelationshipCount","RelationshipCount$2","noMatch","StatusBadge","StatusBadge$2","userType","Unmatched","Approved","Rejected","MatchScore","MatchScore$2","TotalInventoryMatches","TotalInventoryMatches$2","aCodes","bCodes","cCodes","DEFAULT_NO_MATCH_REASON_CODE","DEFAULT_MISSING_REASON_CODE","codes","shortName","internalCommentRequired","externalCommentRequired","omitOverride","allCodes","checkIfSuggestionsHaveRequiredComments","checkIfSuggestionRequiredComments","getReasonCodeType","ReasonCode$2","isSuggestion","ClientControlRow$2","showAdditionalBadges","Matched","totalInternalComments","totalInventoryMatches","matchScore","relationshipCount","status_1","getStatus","emptyCount","unapproved","unmatched","matchedUnassigned","rejectedUnassigned","approvedUnassigned","getCountInfo","startCount","filterFromSummary","unApproved","filterRow","searchFilterSummary","rowItem","selectedClientControls","selectedAcinControls","totalSelected","displayCount","onChangeDisplayCount","addSelected","updateSelectedById","removeSelected","toggleSelected","clearSelected","showMatchingModal","onShowMatchingModal","onCloseMatchingModal","onShowUnassignedNetworkContolModal","onCloseUnassignedNetworkContolModal","showUnassignedNetworkModal","showInheritReasonCodesModal","onShowInheritReasonCodesModal","onCloseInheritReasonCodesModal","onSetIsAllAcinAssigned","isAllAcinAssigned","onChangeView","onSetCountInfo","countInfo","onSetToggleResults","toggleResults","getActiveSort","activeSorts","useMatching","MatchingProvider","onSortChange","restContext","__rest","setDisplayCount","setView","setShowMatchingModal","setShowUnassignedNetworkModal","setShowInheritReasonCodesModal","setIsAllAcinAssigned","setShowToggleResults","setCountInfo","setActiveSorts","newSelected","newView","newActiveSorts","RowWrapper","getItemsSize","sizeRef","onExpand","ControlView$1","setClientFilters","activeClientFilters","isUnmatched","rowsData","removeResolvedResults","searchResults","allChecked","isIndeterminate","newExpanded","decoratedResults","overscanCount","onApply","onCancel","RIADescription","RIADescription$2","AcinControlDescription","MetaContainer$1","MetaItem$1","AcinControlDescription$1","riskInv","MatchingGroup","MatchingGroup$2","groupTitle","groupBadges","isGroup","SummaryRow","isCheckboxDisabled","onSetHeight","isGroupCollapsed","onCollapseGroup","renderRow","isTopLevel","onChangeHeightGroup","rowItems","renderGroup","VirtualRow$1","SummaryView$1","toggled","approverFilters","matcherFilters","filterSummaryResults","hasSomeUnselected","foundItems","counts","getCountInfoForSummary","onToggleSameType","firstRow_1","targetRowType_1","getRowControlType_1","targetRowType","matches_1","firstId","incompatibleType","newCollapsed","AcinControlSuggestion","MetaContainer$2","MetaItem$2","AcinControlSuggestion$2","riskInventoryMatches","inventoryMatches","matchId","ClientControlSuggestion","ClientControlSuggestion$2","ControlsWorkflowMatchingModal","MatchingModal","MatchingModalContent","MatchingModalTitle","TitleWrap","ProgressWrap","Left","Right","Review","CarouselHolder","AcinLogo$1","OverviewRightTitleDetails","OverviewRightTitle","SuggestionList","FilterSection","SearchWrapper","Sort$3","SearchFilter","FilterButton","DataMatchingAcinControlSuggestionFragmentDoc","GetDataMatchingControlsWorkflowAcinControlsDocument","useGetDataMatchingControlsWorkflowAcinControlsQuery","ControlMatches","InventoryRecords","InventoryHeading","RecordHeading","RecordsWrapper","RecordItem","RecordItemLabel","RecordItemValue","MatchingHistoryFragmentDoc","GetDataMatcherClientControlMatchingHistoryDocument","InventoryRecord","ClientControlMatchHistory$2","dataMatcherClientControlId","dataMatcherId","getDataMatcherClientControlMatchingHistory","activeRiskInventory","otherRiskInventories","matchingHistory","VirtualAcinRow","onToggleMatch","Overview$1","onClearSelected","checkedAcinControls","restrictCheckReasonCodes","onSetHideActions","setFilters","setFilterGroups","onRemove","queryData","filteredResults","getDataMatchingControlsWorkflowAcinControls","onChangeSort","foundSort","suggestionRows","controlMatch","matchedAcinControl","reasonCodeType","sortOptions","mySort","toggleFilterDrawer","onRemoveFilter","tabData","ClientControlDescriptionReview","HeaderLabel","ControlTitle","ControlCode","TitleSection","ClientControlDescriptionReview$2","AcinMatchingSuggestionReview","MatchingSuggestionReview","AcinLogo$2","HeaderLabel$1","HeaderStatus","TitleSection$1","TitleWrapper","ControlTitle$1","ControlCode$1","BadgeSection","Flags","BadgeGroup","ControlDetails$1","ScrollWrapper$1","CommentFields","InternalCommentIcon","ExternalCommentIcon","CommentButton","Comments","CommentsList","Comment","CommentsTitle","CommentsIcon","CommentMeta","CommentBody","Comment$1","Comments$2","commonComments","MatchingSuggestionReview$2","controlTitle","comments","hideCommentsBadge","onChangeExternalComment","onChangeInternalComment","renderStatus","stateExternalComment","setStateExternalComment","stateInternalComment","setStateInternalComment","handleOnChangeExternalComment","handleOnChangeInternalComment","debounceExternalComment","debounceInternalComment","dropdownContent","renderInput","renderInfo","AcinControlSuggestionDescription","Body","MetaContainer$3","MetaItem$3","AcinControlSuggestionDescription$2","OverrideReasonCode","OverrideReasonCode$2","codeTypes","reasonCodeTypes","codeType","filteredOverrides","codeRes","AcinMatchingSuggestionReview$2","reviewMatch","activeReviewId","onChangeReview","totalItems","overrideReasonCodes","showOverride","setShowOverride","onChangeExternal","onChangeInternal","internalComment","getDetails","requiredInternalComment","requiredExternalComment","onOverrideCode","ReviewMatchRecordStatus","Success","Warning","ReviewMatchRecordStatus$2","dateMessage","approvedRejectedAt","Review$1","reviewMatches","onChangeActiveReviewId","isCarousel","activeSlide","setActiveSlide","onChangeSlide","getActiveIdFromIndex","statusData","NoMatchReview","NoMatchReview$2","reviewNoMatch","onSetOverride","ReviewNoMatch","onSetApproverMatches","initialLoaded","matchedAcinControlIds_1","acinControlId","matchingNodes","usePrevious","MatcherProgress$1","stepperCount","countData","toDo","skipped","ApproverProgress$1","reviewed","MatchAcinControlToClientControlDocument","ApproveRejectAcinControlToClientControlDocument","GetUnassignedAcinControlsDocument","useGetUnassignedAcinControlsQuery","useGetUnassignedAcinControlsLazyQuery","templateObject_16$2","transformAcinControlMatchesData","matchingMap","INITIAL_STATE$1","checkedSuggestions","disabledQuickSave","reviewFlowOpen","noMatchReviewFlowOpen","matchingReducer","newMatches_1","newActiveReviewId","newReviewMatches","newCheckedSuggestions","newReviewFlowOpen","newReviewNoMatch","newNoMatchReviewFlowOpen","newNoMatch","transformNoMatchesData","batchStatus","newMatches","newCheckedSuggestions_1","isExistingSelected","containsRequired","restrictMatchReasonCodes","firstActiveReviewId","currentReviewMatch","firstUnnassignedId","nextActiveReviewId","newCheckedSuggestions_2","setCurrent","setReviewMatchStatus","ControlsWorkflowMatchingModal$2","modalOpenRef","reviewRef","matchAcinControls","matchMutationLoading","useApproveRejectAcinControlToClientControlMutation","approveReject","approveMutationLoading","mutationloading","hideActions","setHideActions","prevReviewFlowOpen","getSelectedFromPosition","currentId","controlSortInput","summarySortInput","onNext","newPosition","newMatch","onReview","completeReview","completedReviews","unCompletedReviews","newCurrentMatches_1","findItem","matchAcinControlToClientControl","newCurrentMatches","approveRejectAcinControlToClientControl","backToStepOne","onDeleteMatch","onSaveMatch","onApprove","onReject","onSaveNoMatch","onSaveApproveRejectNoMatch","setReviewMatch","onChangeNoMatchReview","setReviewNoMatchData","setApproverMatches","noMatchFound","layerModal","useScrollContent","leftCustomButtons","disableButtons","rightCustomButtons","saveDisabled","currentReview","rejectDisabled","currentItem","setActiveReview","pageBackground$3","UnassignedNetworkControls","UnassignedNetworkControlsHeader","ReadOnlyUnassignedAcinControlRow","ReadOnlyUnassignedAcinControlList","MatchingModal$1","MatchingModalContent$1","MatchingModalTitle$1","TitleWrap$1","ProgressWrap$1","Left$1","Right$1","Review$2","CarouselHolder$1","AcinLogo$3","DataMatchingUploadedClientControlFragmentDoc","DataMatcherClientControlSuggestionFragmentDoc","GetSuggestionsDocument","VirtualAcinRow$1","checkedControls","getDataMatchingControlsWorkflowUnassignedAcinControlsSuggestions","pageBackground$4","AcinControlDescriptionReview","AcinLogo$4","HeaderLabel$2","ControlTitle$2","ControlCode$2","ScrollWrapper$2","TitleSection$2","AcinControlDescriptionReview$2","ClientMatchingSuggestionReview","ClientControlSuggestionDescription","ClientControlSuggestionDescription$2","ClientMatchingSuggestionReview$2","Review$3","ReviewNoMatch$1","missingAcinControl","missing","ApproverProgress$2","missingAcinControls","stepperHistory","MatcherProgress$2","MatchUnassignedClientControlToAcinControlDocument","ApproveRejectMissingAcinControlDocument","transformNoMatchesData$1","dataMatcherUploadedClientControlId","INITIAL_STATE$2","matchingReducer$1","unassignedMatchIds","setCurrent$1","setReviewMatchStatus$1","UnassignedMatchingModal","useApproveRejectMissingAcinControlMutation","approveRejectMutationLoading","awaitRefetchQueries","onQuickSaveNoMatch","setReviewMatch$1","setReviewNoMatchData$1","approveRejectMissingAcinControl","setActiveReview$1","UnassignedAcinControlRow","ReadOnlyModal","closeButtonLabel","ReasonCodeModal","InheritUnmatchedAcinControlReasonCodesDocument","InheritReasonCodesModal$1","unassignedIds","onReasonCodesInherited","inheritUnassignedAcinControlReasonCodesMutation","unassignedAcinControlIds","skipButton","confirmButton","UnassignedNetworkControls$2","onInheritModalNext","getUnassignedAcinControls","noSelectedAcinControls","getDataMatchingControlsWorkflowUnassignedAcinControls","acinControls","UnassignedNetworkControlsHeader$2","setShowModal","totalUnassigned","ControlsWorkflow$2","matchedMissingAcinControls","unassignedAcinControls","totalUnassignedAcinControls","modalOpenDataRef","exact","onBackClick","availableSortInfo","displayTotal","hasFeedbackFromApprover","renderToggle","totalMatchesNotUnassigned","totalMatchesAndApproved","total_1","total_2","getDisplayContext","filterConfig","actionsBar","backLabel","renderActions","renderDataToggle","SubmitDataMatcherFragmentDoc","SubmitDataMatcherDocument","GetUnresolvedMatchingInfoDocument","Footer$3","submitDataMatcher","userIsMatcher","userIsApprover","noMatchedControls","noUnmatchedControls","noUnapprovedMatches","noRejections","onEditClick","firstItem","useGetUnresolvedMatchingInfoLazyQuery","onUnresolvedMatchingCompletion","getUnresolvedMatchingInfo","unresolvedLoading","unresolvedData","onUnassignedFlow","unassignedAcinControlsData","nextWorkflowIsDashboard","nextWorkflowIsSubmitReview","SubmitReview","nextWorkflowIsUnassigned","Unassigned","onSubmit","onCheckForThings","remainingApprovers","DataMatching$3","contentRef","setTopOffset","sortInput","setSortInput","reasonCodesInherited","setReasonCodesInherited","clientControlFilters","overview","summary","currentData","onRemoveClientFilter","getAvailableSortInfo","sortInfoMap","getDataMatcherById","renderWorkflow","DashboardCard","DashboardCard$2","card","Dashboard$3","TableContainer","cards","onCardClick","CONTROL_STATUS","transformControlStatus","Link","Link$1","setChonkyDefaults","templateObject_14$3","templateObject_14$4","templateObject_14$5","TAG_VARIANT","Tag","TagContent","TagIconWrapper","Tag$1","isInspected","List$1","SME_QUALITY_OPTIONS","PROCESS","ATTESTATION","SAMPLE_BASED_MONIT","REQUIREMENT","STATEMENT","MISS_INCOMP","UNCLEAR","transformSmeQuality","Inventories","getHasInventory","currentInventory","inventories","Inventories$1","hasInventory","AcinControlDetails","Certainty","TextHeading$1","CardHeading$1","Heading$3","AcinControlHeader","Content$9","ControlInfo$1","CardDescription$1","DescriptionItem$1","BoldText$1","NoMatch","InventoriesWrapper$1","DataTable$3","clientInventories","hasSearch","noDescription","TableTitle","hasPagination","DataTable$5","tableHeading","tableComponent","preventWrapping","GetAccountsDocument","AccountRoute","GetUploadUrlDocument","onAccountClick","setTable","table_1","accounts","getAccountData","getAccounts","FileUploader","supportedTypesUserMessage","FileUploader$2","accessToken","toasts","setFiles","DEFAULT","fileStatus","setFileStatus","LOADING","ERROR","urlPath","fileData","getUploadUrl","addTimestampToFilename","arrayBuffer","Authorization","progressEvent","percentCompleted","onCloseCallback","SUCCESS","filename","onDropRejected","maxFiles","UploadRoute","MatchingRiskFragmentDoc","MatchingIndicesFragmentDoc","MatchingRiaDescriptionFragmentDoc","MatchingControlFragmentDoc","SuggestedMatchFragmentDoc","GetMatchingJobControlsDocument","useGetMatchingJobControlsQuery","CODES_KEY","CLUSTER_ID_KEY","INITIAL_STATE$4","setControls","unclearQualityDescriptorId","setUnclearQualityDescriptorId","setQuality","resetError","jobStatus","setJobStatus","clusterId","setClusterId","useMatching$1","jobTable","getParams","queryError","setQueryError","getMatchingJobControls","getFilterValues","matchingJobId","GetMatchingJobsDocument","templateObject_1$2$","templateObject_1$30","JobsRoute","AllControls","onJobClick","handleJobClick","job","jobs","formattedDate","fileUploaded","matchingJobName","numberOfControls","numberOfRisks","getJobTable","getMatchingJobs","matchingJobs","Checkbox$2","TOOLS_PERMISSIONS","addSelectAllToHeaders","allControlSelected","addSelectToRow","getSelectedControls$1","controlsSelected","newControlSelected","foundControlIndex","AllControls$2","onControlClick","onStartMatching","isReadOnly","userPermission","getIsReadOnly","handleSelectControl","newControls","matchingJobControls","topMatch","suggestedMatches","topMatchCertainty","certainty","matchedAt","getControlsTable","transformFloatToPercentage","ControlsByClusterId","ControlsByClusterId$2","backToClusters","setSelectedControls","selectedControls","handleSelect","topMatchCode","cq","suggestedQualityScore","matchedTo","suggestedMatch","getControlsByClusterIdTable","Clusters","Checkbox$3","joinUsersNames","GetConnectionUsersDocument","templateObject_1$31","templateObject_1$32","templateObject_1$33","MatchersAndApproversModal","ModalContent","MultiSelectWrapper","MultiSelectHeading","MatchersAndApproversModal$2","onAssign","setUsers","selectedMatchers","setSelectedMatchers","selectedApprovers","setSelectedApprovers","users_1","getConnectionUsers","matchersIds","approversIds","UpdateClustersAssigneesDocument","templateObject_1$34","templateObject_1$35","templateObject_1$36","updateClusterFragment","AssignActions","AssignActions$1","selectedClusters","showAssignModal","setShowAssignModal","distributeAllClusters","setDistributeAllClusters","getMatchingJobClusters","existingData","updateEntityAssignees","newClustersRefs","writeFragment","fragment","clusters","rep","__ref","updateClusterAssignees","Cluster","cluster","GetMatchingJobClustersDocument","templateObject_1$37","templateObject_1$38","templateObject_1$39","templateObject_1$3a","templateObject_1$3b","Clusters$2","checkPermission","setSelectedClusters","canAssignUsers","onClusterClick","handleSelectCluster","allClusterSelected","idRow","getControlsTable$1","ControlJobRoute","TABS","toolsTheme","handleStartMatching","clusterIdParam","createParams","renderTabContent","boxShadowVerticalBoxes","boxShadowTopBorder","colours","RadioList$2","RadioListItemLabel$1","Radio$1","RadioListItemText$1","RadioList$3","selectedId","isSelected","GetUnclearQualityDescriptorsDocument","templateObject_1$3c","templateObject_1$3d","templateObject_1$3e","templateObject_1$3f","templateObject_1$3g","templateObject_1$3h","templateObject_1$3i","templateObject_1$3j","templateObject_1$3k","templateObject_1$3l","templateObject_1$3m","templateObject_1$3n","UnclearQualityDropdown","UnclearQualityDropdown$2","setOptions","unclearQualityDescriptors","getUnclearQualityDescriptors","RisksList","List$2","ListItem$1","RisksList$1","CompareIndices","CompareIndices$2","indices","compareIndices","RiaDescription","RIAText","MarkdownText","RiaDescription$2","riaDescription","renderRia","ClientControlDetails$3","Quality","Heading$4","Details","AccordionContent","ACTIVE_DESC","descriptionTabs","ClientControlDetails$5","activeDescription","setActiveDescription","backgroundColor$1","ControlsCheckList","ControlItem","ControlInfoWrapper","ControlCertainty","ControlCode$3","ControlName","ControlsCheckList$2","onSelectControl","inspectedId","onInspectControl","SearchMatchingControlsDocument","templateObject_1$3o","templateObject_1$3p","templateObject_1$3q","templateObject_1$3r","templateObject_1$3s","templateObject_1$3t","useControlsSearch","searchText","setSearchText","debouncedSearchText","resultsList","setResultsList","controlsData","searchMatchingControls","searchControls","onResetSearch","AcinControlsList","SearchWrapper$2","NoSearchResults$1","IconAlertError$1","SkeletonLoaderWrap","SkeletonLoaderButton","AcinControlsList$2","onInspectedControl","handleInspectedControl","onSearch","searchInput","AcinControlDetails$4","NoControl","Code","Heading$5","DetailsWrapper$1","Details$1","AccordionContent$1","Accordion$1","AcinControlDetails$6","UpdateMatchingJobControlFragmentDoc","UpdateMatchingJobControlDocument","templateObject_1$3u","templateObject_1$3v","templateObject_7$j","templateObject_8$d","templateObject_1$3w","UpdateMatchingJobControlFragment","boxShadowVerticalBoxes$1","boxShadowTopBorder$1","MatchingJobScreen","MatchingJobScreenContent","ClientControlsList","BackLinkWrapper$1","ArrowLeft$1","ClientControlDetails$6","AcinControlDetails$7","AcinControlsList$3","MatchingJobScreenActions","ActionLink$1","ActionText","inspectedControl","setInspectedControl","inspectedMatch","setInspectedMatch","selectedMatches","setSelectedMatches","lastMatch","setLastMatch","currentControl","updateMatchingJobControl","newControl","proposedMatches","updatedControlData","updatedControls","handleNext","updateControl","defaultInspectedControl","exitMatchingScreen","goBack","proposed","matchedIds","descriptorId","__spread","IGlobalSearchResultType","GetDownloadFileByIdsDocument","GetAllCalibrateDownloadsDocument","GenerateCalibrateDownloadDocument","getAtLeastOneDownloadStatus","allCalibrateDownloads","MarkCalibrateDownloadAsReadDocument","DeleteCalibrateDownloadDocument","useGetAllCalibrateDownloads","setAllCalibrateDownloads","oneInProgress","setOneInProgress","oneFailed","setOneFailed","oneProcessed","setOneProcessed","showCalibrateDownloads","setShowCalibrateDownloads","useGenerateCalibrateDownloadMutation","refetchAllCalibrateDownloads","createCalibrateDownloadMutation","useMarkCalibrateDownloadAsReadMutation","markCalibrateAsDownloadedMutation","useDeleteCalibrateDownloadMutation","deleteCalibrateDownload","getAllCalibrateDownloads","atLeastOneDownloadInProgress","atLeastOneDownloadFailed","Failure","atLeastOneDownloadProcessed","Processed","getAllCalibrateDownloadsError","oneCalibrateDownloadProcessed","oneCalibrateDownloadInProgress","oneCalibrateDownloadFailed","markCalibrateAsDownloaded","onAddDownload","onAddComplete","onRemoveComplete","polling","completed","useDownload","DownloadProvider","setPolling","setCompleted","Failed","fileURL","actionPrimary","hideCloseButton","useOldDownload","getDownloadFileByIds","DownloadFileType","downloadOptions","DownloadFileType$2","Csv","Excel","triggerDownload","containerRef","downloadImage","resetTrigger","useDownloadImage","DownloadImage","DownloadImage$2","DownloadImageProvider$1","setShowPreview","exportComponentAsPDF","exportComponentAsJPEG","exportComponentAsPNG","useDownloadImage$1","DownloadImagePreview","Viewport","PreviewArea","Dropdown","Strong","Time","Disclaimer","Template$1","showTimestamp","DownloadImagePreview$2","formatOption","setFormatOption","setShowTimestamp","showPreviewFromProvider","getFileFormat","handleDownload","__values","flattenTags","inputType","getRangeFilterTagItem","filterRangeInputType","tagLabel","tagUnit","filterType","hasFilters","getDataMap","saveFilters","dataMap","setDataMap","clearSavedFilters","getSavedFilters","getAppliedFilters","allFilters","allFilters_1","allFilters_1_1","appliedFilter","newFilterValue","activeRange","applyActiveFiltersToAllFilters","originalFilter","minPayload","maxPayload","useSetFilters","storeKey","useQueryParams","filterString","updateFilters","useFilterQueryParams","paramFilters","useFilterStore","sessionFilters","storeSessionFilters","defaultFilters","setDefaultFilters","onSetFilters","onSetDefault","onSetFilterGroups","newFilterGroups","newGroup","Range","removeFilter","setDefault","onClearAllFilters","useFiltersV2","initialAppliedFiltersPayload","setAllFilters","initialActiveFilters","setInitialActiveFilters","setActiveFilters","initialAppliedFilters","filterPayload","filterPayloadToFilterInput","newAllFilters","mergeGroup","groupMap","mergeFilterInputs","mergeA","mergeB","mergeActiveFiltersAndFilterGroup","newGroupKey","newActiveFilters","Filters","FilterFooter","ResetWrapper","onResetFilters","totalFilters","useFilters","FiltersProvider","setTotalFilters","clearDirty","transformToInput","FilterFooter$1","onApplyFilters","applyLabel","minFilters","myMinFiltersDisabled","FilterDrawer","withClose","FilterGroup","optionsMap","activeFilterOptions","optionLabel","onAdd","formattedValues","activeItems","Tags","activeFilterMap","activeItem","currentRemappedFilters","CheckboxList","SearchBarWrapper","CheckboxList$1","searchVal","setSearchVal","setFilteredOptions","placeholderText","searchRegex","searchFilters","isAllSelected","newMap","RangeFilter","headerLabel","inputRange","onRangeChange","sliderRange","rangefilters","defaultRange","FilterGroup$2","hideLabel","onChangeHandler","isLabelVisible","kebabCase","renderInputType","FilterContent","withReset","Filters$2","renderNoResults","noResults","useSearch","SearchProvider","FilterMenu","BoldLabel","InfoMessage","SearchField","SearchIcon","searchPlaceholder","rightAddon","renderSearch","onReset","disableApplyButton","disableResetButton","ListLevel","GroupList","renderResetButtonText","renderApplyButtonText","ListsWrapper","numberItems","MAX_HEIGHT","SelectAllCheckbox","CheckListWrapper","NoResults","IconInfo","FiltersWrapper","Filters$3","isVirtualised","selectFilters","filters_1","filters_1_1","selectAllFilters","filters_3","filters_3_1","e_3_1","getSelectedIds","getTotalSelectedIds","getSelectedFilters","newAvailableFilters","availableFilter","allFiltersChecked","areAllFiltersChecked","atLeastOneFilterChecked","areRangeEquals","firstRange","secondRange","ShowSelectedToggle","ShowSelectedToggle$1","onToggle","getIsVirtualised","debouncedSearchTerm","searchedResults","setSearchedResults","allSearchedSelected","setAllSearchedSelected","atLeastOneSearchedSelected","setAtLeastOneSearchedSelected","setSelectedIds","temporarySelectedIds","setTemporarySelectedIds","setTotalSelected","showSelected","setShowSelected","allFiltersSelected","setAllFiltersSelected","atLeastOneSelected","setAtLeastOneSelected","setDisableApplyButton","handleChecboxChange","applyButton","selectedIdsArray","shouldDisableApplyButton","allSelectedFilters","filterLabel","matchedFilters","matchedAcc","getMatchedFilters","someFiltersChecked","showNoResultMessage","showSearchedResultList","notRadioList","showToggle","getNumberItems","filters_2","filters_2_1","removeSelectedFilters","collapsible","listTitle","RangeWrapper","Range$1","setDisableResetButton","selectedRange","setSelectedRange","resetButton","FilterMenu$2","handleApplyChanges","showHeader","ButtonWrapper","FilterFolderMenu","MAX_HEIGHT$1","FolderList","CheckListWrapper$1","LevelBack","LevelBackText","CHECKBOX_STATUS","CHECKED","UNCHECKED","INDETERMINATE","getCheckboxStatus","indeterminate","removeAllSelectedChildren","filterClicked","sel","parentIds","areAllSiblingsChecked","idClicked","siblingIds","getSelectedAndCheckedOnUncheck","newChecked","newIndeterminate","flattenHierarchy","updatedChecked","updatedIndeterminate","selectedToAdd","selectedToRemove","parentKey","parentFilters","levelFilters","atLeastOneSiblingChecked","allSiblingChecked","getAllFiltersChecked","getNewSelected","filterClickedStatus","childrenSelectedIds","getChildrenIds","childId","getSelectedAndCheckedOnIndeterminate","getSelectedAndCheckedOnCheck","GetFilterLevelDocument","useNavigateHierarchy","initialScrollOffset","setInitialOffset","currentScrollPosition","setCurrentScrollPosition","allPrevScrollPositions","setAllPrevScrollPositions","setAllParents","currentParent","setCurrentParent","setFlattenHierarchy","setVariables","getFilterLevel","newHierarchy","newKey","newCurrentParent","prevInitialOffset","getFieldColor","FolderListSkeleton","FolderListSkeletonItem","FolderListSkeletonCheckbox","SkeletonLoaderLine","FolderListSkeleton$1","FolderList$1","currentSelected","setCurrentSelected","setChecked","setIndeterminate","isApplyDisabled","setIsApplyDisabled","currentParentStatus","atLeastOneChildSelected","getAtLeastOneChildSelected","getFilterLevelStatus","indeterminateIds","newIsApplyDisabled","sameFilters","compareSelectedAndAppliedFilters","FilterFolderMenu$2","prevAppliedFilters","prevGroupKeysApplied","filterInputGroups","selectedCode","groupIndex","prevGroupKey","transformSelectedToFilterInputGroups","FilterButton$2","appliedFiltersLevel","triggerRef","triggerEl","isSingleChoice","getFilterLabel","renderFilterMenu","innerLabel","forceBottom","getAppliedFiltersCount","getCurrentVisibleFilters","exposedFilters","showExposedFilters","ExposedFilterList","ExposedFilterListContent","ExposedFilterButtons","ExposedFilterWrapper","showFilterButton","ExposedFilterAllFilters","ExposedFilterListContent$1","exposedFilterIds","onAllFilterClick","setExposedFilters","appliedVisibleCount","setAppliedVisibleCount","appliedHiddenCount","setAppliedHiddenCount","leftRef","rightRef","leftChildrenWidths","setLeftChildrenWidths","rightWidth","setRightWidth","setShowExposedFilters","newExposedFilters","getExposedFilters","newShowExposedFilters","visibleCount","currentExposed","getVisibleCount","currentHidden","getHiddenCount","childrenWidths","currentTotalLeft","currentChild","getShowExposedFilters","noExposedFilters","ExposedFilterList$2","parentRef","setParentWidth","DrawerFooter","Drawer","onClearFilters","disableClearFilters","FilterList$1","FilterWrapper","FilterList$3","AllFilters","atLeastOneFilterApplied","atLeastOneApplied","AllFilters$2","handleDrawerClose","handleConfirmation","confirmed","ConfiguratorFilterList","ConfiguratorFilterList$2","lastFilter","InspectorIdType","onSetHeader","inspect","DRAWER_NAME","useInspector","InspectorProvider","prevLocation","isInspectorOpen","handleOnSetHeader","handleOnInspect","handleOnClear","InspectorContent$1","InspectorFooter","InspectorDrawer","ControlInspectorViewClientControlFragmentDoc","ControlInspectorViewCompareAcinControlFragmentDoc","ControlInspectorViewAlertMessageFragmentDoc","ControlInspectorViewCompareControlOneToOneFragmentDoc","ControlInspectorViewCompareControlOneToManyFragmentDoc","ControlInspectorViewCompareControlManyToOneFragmentDoc","ControlInspectorViewCompareEmptyFragmentDoc","ControlInspectorViewCompareControlFragmentDoc","InspectorResultFragmentDoc","InspectDocument","InspectorContent","useInspectQuery","typename","ItemsPerPage","ItemsPerPage$2","itemName","itemNamePlural","activeOption","singleOption","ResultsCount","ResultsCount$2","onSetActivePage","onSetItemsPerPage","usePagination","PaginationProvider","setTotalResults","setTotalPages","setItemsPerPage","setRange","Pagination","onChangeItemsPerPage","Pagination$2","millisecondsInMinute","millisecondsInHour","parseISO","_options$additionalDi","requiredArgs","additionalDigits","toInteger","dateStrings","dateString","timeString","dateTimeDelimiter","timeZoneDelimiter","splitDateString","parseYearResult","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","dayOfWeek","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","isLeapYearIndex","validateDate","validateDayOfYearDate","timeRegex","parseTimeUnit","validateTime","parseTime","dirtyDate","setFullYear","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","RiskIntelligence$2","Feed","ViewAll","RiskIntelligenceCard$1","colorVariant","NavigationWrapper","Star","CardWrapper","DashboardRiskIntelligenceNetworkScenarioFragmentDoc","DashboardRiskIntelligenceNetworkRegulatoryAlertFragmentDoc","DashboardRiskIntelligenceNetworkUpdateFragmentDoc","DashboardRiskIntelligenceRelatedRiskIntelligenceFragmentDoc","DashboardRiskIntelligenceFragmentDoc","GetRiskIntelligenceDocument","ToggleRiskIntelligenceFavouriteDocument","useToggleRiskIntelligenceFavouriteMutation","isValid","renderImpacted","impactedData","totalImpactedRisks","totalImpactedControls","NetworkScenario","showFavourite","favourite","mutation","noStyle","impact","optimisticResponse","toggleRiskIntelligenceFavourite","RegulatoryAlert","NetworkUpdate","RiskIntelligenceCard","renderCard","RiskIntelligence","onClickViewAll","getRiskIntelligence","RiskIntelligenceTable$2","Table$2","RiskIntelligenceTableRowFragmentDoc","GetRiskIntelligenceTableDocument","TextAlignment","ToggleRiskIntelligenceTableRowFavouriteDocument","RiskIntelligenceTable","useToggleRiskIntelligenceTableRowFavouriteMutation","colWidth","matchType","onFavourite","FilterRangeFragmentDoc","FilterRangeInputTypeFragmentDoc","GetRiskIntelligenceHubFiltersDocument","RiskIntelHub$2","AllRiskIntelligence","ChartArea","RegulatoryFinesOverTime$2","ChartHolder$1","GetRegulatoryFinesOverTimeByRiskDocument","RegulatoryFinesOverTime","selectedItem","getRegulatoryFinesOverTimeByRisk","chartTitle","RegulatoryFinesByAcinControl$2","GetRegulatoryFinesByAcinControlsDocument","RegulatoryFinesByAcinControl","onClickQuickFilter","getRegulatoryFinesByAcinControls","RiskIntelHub","onNavigateRiskIntel","onNavigateControlRisk","filtersData","quickFilterFromChartA","setQuickFilterFromChartA","quickFilterFromChartB","setQuickFilterFromChartB","clickedRow","setClickedRow","activeFiltersList","filterCount","riskIntelligenceFiltersShape","quickFilterA","quickFilterB","isQuickFilterAEmpty","isQuickFilterBEmpty","combinedGroups","quickFilterShape","combinedFilters","getRiskIntelligenceHubFilters","thirdTier","RiskIntelligenceAlert$2","Container$1","OverviewContainer","DataMappingContainer","Sidebar","Charts","Summary","Table$1","GetRiskIntelligenceAlertDocument","RiskIntelligenceAlertRelatedData$2","SourceFragmentDoc","RegulationFragmentDoc","GetRiskIntelligenceAlertRelatedDataDocument","Sources$1","SectionHeading","SourceLinks","Regulations$1","RegulationItem$1","RegulationGroup","Regulator","RegulationName","RegulationArticles","ArticleItem","RegulationItem","regulationArticles","regulationName","Regulations","regulations","regulation","Sources","sources","linkData","Risks","onClickRisk","RiskIntelligenceAlertRelatedData","showSources","getRiskIntelligenceAlertRelatedData","showRegulations","showRisks","indexRisks","fine","RiskIntelligenceAlertChart$2","RiskIntelligenceAlertChart","onExploreClick","insightOptions","onChangeInsight","activeInsight","hideExplore","noValues","GetRiskIntelligenceAlertControlsChartDocument","useGetRiskIntelligenceAlertControlsChartQuery","ControlsChart","Index","BusinessLine","getRiskIntelligenceAlertControlsChart","GetRiskIntelligenceAlertRisksChartDocument","useGetRiskIntelligenceAlertRisksChartQuery","RisksChart","getRiskIntelligenceAlertRisksChart","RiskIntelligenceAlertSummary$2","GetRiskIntelligenceAlertSummaryDocument","RiskIntelligenceAlertSummary","getRiskIntelligenceAlertSummary","GetRiskIntelligenceAlertRisksTableDocument","controlsCellWidthsDefault","controlsCellWidthsBusLine","risksCellWidths","INDEX_RISK_CODE_AND_NAME","RISK_CODE_AND_NAME","tableHeader","tableBody","onInspectRow","isControls","controlsCellWidths","RisksTable","risksConfig","GetRiskIntelligenceAlertControlsTableDocument","ControlsTable","insightChoice","setInsightChoice","controlsConfig","Instance","RiskIntelligenceAlert","risksData","overviewPage","dataMappingPage","getRiskIntelligenceAlert","TableRefresherBarChartGroup","RiskIntelligenceAnalysisReport","RiskIntelligenceAnalysisPage","RiskIntelligenceAnalyticsControlListPage","RiskIntelligenceAnalyticsControlListGroup","_extends","isNum","isBool","isStr","isFn","parseClassName","isToastIdValid","toastId","canUseDom","canBeRendered","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","INFO","WARNING","DARK","cssTransition","_ref$appendPosition","appendPosition","_ref$collapse","collapse","_ref$collapseDuration","collapseDuration","preventExitTransition","isIn","enterClassName","exitClassName","baseClassName","animationStep","collapseToast","eventManager","emitQueue","cancelEmit","timers","useKeeper","refresh","staleId","useToastContainer","forceUpdate","_useReducer2","toast","toastCount","collection","toastKey","displayedToast","containerId","isToastActive","getToast","clearWaitingQueue","limit","removeToast","dequeueToast","_queue$shift","appendToast","toastContent","toastProps","buildToast","_objectWithoutPropertiesLoose","updateId","enableMultiContainer","isNotValid","closeToast","isNotAnUpdate","toastAutoClose","containerAutoClose","closeButton","toastClassName","bodyClassName","toastStyle","bodyStyle","pauseOnHover","pauseOnFocusLoss","draggablePercent","draggableDirection","progressClassName","progressStyle","autoClose","hideProgressBar","deleteToast","queueLen","freeSlot","toDequeue","removeFromCollection","getToastToRender","toastToRender","toastList","newestOnTop","_toast","targetTouches","useToast","isRunning","setIsRunning","setPreventExitTransition","toastRef","removalDistance","canCloseOnClick","syncProps","onDragTransitionEnd","_drag$boundingRect","pauseToast","playToast","onDragMove","bindFocusEvents","eventHandlers","onMouseEnter","_ref$ariaLabel","ProgressBar","_animationEvent","userStyle","controlledProgress","animationPlayState","defaultClassName","animationEvent","Toast","_useToast","cssClasses","isProgressControlled","renderCloseButton","Bounce","ToastContainer","_useToastContainer","getClassName","containerStyle","latestInstance","containerDomNode","containerConfig","lazy","generateToastId","getToastId","dispatchToast","mergeOptions","createToastByType","dismiss","oldContent","nextOptions","configure","containerInstance","AccountHeader","AccountHeader$1","tabsBarItems","searchToolBar","setAddAccountModal","setAddUserModal","dropdownContentCom","AccountList","TableContentView","FadedModal","ErroMessage","TotalMessageDisplay","ModalSubMessage","FormItemContainer","useGetAccountsQuery","AccountUsersModal","CreateNewUserPanel","UserInfoInputGroup","UserPanel","InputItem","ActionsButton","GetAccountDocument","AddUserDocument","useAddUserMutation","RemoveUserDocument","useRemoveUserMutation","UpdateUserDocument","InviteUserDocument","useInviteUserMutation","UserManagment","AccountContainer","RoleContentContainer","LoadingContent","RoleCheckBox","RoleLabelName","CounterText","GetRolesQueryDocument","useGetRolesQueryQuery","GetUserByIdQueryDocument","AssignRoleToUserMutationDocument","RemoveRolesFromUserMutationDocument","UserManagementModal$1","showAccount","closeFunc","getRolesUserId","userRoleData","selectedRoles","setSelectedRole","getUserById","useAssignRoleToUserMutationMutation","assignRoleToUserMutationMutation","useRemoveRolesFromUserMutationMutation","removeRolesFromUserMutationMutation","userSelectedRolesId","getRoles","rolesData","availablePermissions","selectedRoleId","newRoles","removeRolesFromUserUserId","removeRolesFromUserRoles","assignRoleToUserRoles","assignRoleToUserUserId","addRemoveRole","getUser","AccountUsersModal$2","onCloseFunc","nameUser","setNameUser","lastName","setLastName","emailAddress","setEmailAddress","showUserAccount","toggleShowAccount","selectedUser","setUserAccount","firstName","addUserMutation","addUserLoading","addUserError","removeUserMutation","removeUserData","loadingRemove","errorDelete","inviteUserMutation","userList","getAccount","userPanel","AccountRIsModal","RIContent","RIMessage","AccountRiskInventoriesDocument","AccountRIsModal$2","listItems","permittedRiskInventories","freeGlobal","freeSelf","Symbol$1","objectProto","nativeObjectToString","symToStringTag","nativeObjectToString$1","nullTag","undefinedTag","symToStringTag$1","baseGetTag","isOwn","unmasked","getRawTag","objectToString","isObjectLike","symbolTag","isSymbol","INFINITY","symbolProto","symbolToString","baseToString","iteratee","arrayMap","identity","asyncTag","funcTag","genTag","proxyTag","coreJsData","maskSrcKey","IE_PROTO","funcToString","toSource","reIsHostCtor","funcProto$1","objectProto$2","funcToString$1","hasOwnProperty$1","reIsNative","baseIsNative","getNative","reIsUint","MAX_SAFE_INTEGER$1","isLength","isArrayLike","objectProto$3","baseIsArguments","objectProto$4","hasOwnProperty$2","isArguments","freeExports","exports","freeModule","module","typedArrayTags","freeExports$1","freeModule$1","freeProcess","nodeUtil","require","binding","nodeIsTypedArray","hasOwnProperty$3","arrayLikeKeys","inherited","isArr","isArg","isBuff","skipIndexes","baseTimes","nativeKeys","overArg","hasOwnProperty$4","baseKeys","Ctor","isPrototype","reIsDeepProp","reIsPlainProp","nativeCreate","hasOwnProperty$5","hasOwnProperty$6","Hash","assocIndexOf","__data__","ListCache","getMapData","isKeyable","MapCache","FUNC_ERROR_TEXT","rePropName","reEscapeChar","stringToPath","memoizeCapped","quote","subString","castPath","INFINITY$1","toKey","baseGet","Stack","pairs","LARGE_ARRAY_SIZE","propertyIsEnumerable$1","nativeGetSymbols","getSymbols","resIndex","arrayFilter","getAllKeys","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","DataView","Promise$1","mapTag$1","promiseTag","setTag$1","weakMapTag$1","dataViewTag$1","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ctorString","getTag$1","SetCache","arraySome","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","equalArrays","bitmask","customizer","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","setToArray","COMPARE_PARTIAL_FLAG$1","COMPARE_UNORDERED_FLAG$1","boolTag$1","dateTag$1","errorTag$1","mapTag$2","numberTag$1","regexpTag$1","setTag$2","stringTag$1","symbolTag$1","arrayBufferTag$1","dataViewTag$2","symbolProto$1","symbolValueOf","valueOf","COMPARE_PARTIAL_FLAG$2","hasOwnProperty$7","COMPARE_PARTIAL_FLAG$3","argsTag$2","arrayTag$1","objectTag$2","hasOwnProperty$8","baseIsEqualDeep","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","byteLength","byteOffset","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","skipCtor","objValue","objCtor","othCtor","equalObjects","baseIsEqual","COMPARE_PARTIAL_FLAG$4","COMPARE_UNORDERED_FLAG$2","isStrictComparable","matchesStrictComparable","srcValue","baseMatches","matchData","getMatchData","noCustomizer","baseIsMatch","baseHasIn","hasIn","hasFunc","hasPath","COMPARE_PARTIAL_FLAG$5","COMPARE_UNORDERED_FLAG$3","baseMatchesProperty","basePropertyDeep","arrayAggregator","setter","accumulator","fromRight","baseFor","iterable","baseEach","eachFunc","createBaseEach","baseAggregator","initializer","hasOwnProperty$9","groupBy","baseAssignValue","UserInventoryModal","AvailableCheckBox","AccountSelectionBox","InventoryName","SelectAllButton","SelectAccount","GetUserSelectedInventoriesDocument","GetAccountInventoriesDocument","AddInventoryToUserDocument","UserInventoryModal$2","selectedAccountId","setCurrentAccountId","preSelectedData","useAddInventoryToUserMutation","addInventoryToUserMutation","addLoading","addError","selectedInventories","setSelectedInventories","selectedAll","setSelectAll","accountsData","useGetAccountInventoriesQuery","loadingAvailableInventories","preSelectedIds","getUserInventoriesBySource","availableRiskInventories","emailSplit","userIsAcin","filterAccounts","accountOptions","inventoryIds","selectAllButton","setSelectedOption","EditUserModal","showUserModal","refetchCallBack","toggleShowUserModal","nameLastName","setLastNameUser","setAccountId","updateUserMutation","accountsOptions","UserTableView","totalUsers","showEditUserModal","showUserInventoryModal","toggleShowInventoryModal","groupedItems","groupedContent","userInventoriesInfo","lastLogin","reload","CreateAccountDocument","DeleteAccountDocument","ChangeDefaultAccountDocument","AccountTableView","errorContent","deleteAccountMutation","useChangeDefaultAccountMutation","changeDefaultAccountMutation","errorChanging","showUsersModalAction","showRIModelAction","totalAccounts","totalRiskInventories","AddAccountModal","createAccountMutation","dataCreateAccount","loadingCreatAccount","errorCreateAccount","toggleShowAddModal","showAddModal","createAccountVal","setCreateAccountVal","codeValue","setCodeValue","addAccount","alert","GetUsersDocument","AddUserModal","AccountList$2","refetchAccounts","usersData","refetchUsers","getUsers","showAccountModal","toggleShowAccountModal","showAddUserModal","toggleShowAddUserModal","selectedAccount","setSelectedAccount","onSearchChange","showRIModal","toggleShowRIModal","filteredAccounts","setFilteredAccounts","filterdUsers","setFilteredUsers","accountsTotalDisplay","setAccountsTotalDisplay","usersTotalDisplay","setUsersTotalDisplay","newAccounts","newUsers","newAccountsTotal","newUsersTotal","UserAccountModal","InfoContent","MyAccountDocument","UserAccountModal$2","showInventories","noAccountContent","me","ri","accountContent","NoAccessPage","NoAccessPage$2","hasAccount","userName","hasAccountContent","noAccessContent","__spreadArrays","jl","hexGen","Factory","exitTimeout","hashStack","factoryRef","factoryContainer","getInstanceChildren","onResolve","promiseResolve","instanceOptions","isAppendIntances","omitState","getInstance","resolveAll","PureComponent","defaultScope","factoryStack","PromiseController","hasInstance","registerRef","canUseDOM","_createClass","Portal","_possibleConstructorReturn","_inherits","defaultNode","renderPortal","portal","LegacyPortal","supportsPassiveEvents","TOUCHSTART","handlerRef","useLatest","getWindow","isElement","Element","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","userAgentData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","getWindowScroll","win","scrollLeft","pageXOffset","pageYOffset","getNodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","willChange","getContainingBlock","auto","basePlacements","clippingParents","viewport","popper","reference","variationPlacements","placement","modifierPhases","modifiers","visited","requires","requiresIfExists","depModifier","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","roundOffsetsByDPR","initialStyles","arrow","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","fittingPlacement","within","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","CONTENT_CLASS","BACKDROP_CLASS","ARROW_CLASS","SVG_ARROW_CLASS","TOUCH_OPTIONS","TIPPY_DEFAULT_APPEND_TO","getValueAtIndexOrReturn","invokeWithArgsOrReturn","normalizeToArray","pushIfUnique","arrayFrom","removeUndefinedProps","isMouseEvent","isReferenceElement","_tippy","getArrayOfElements","isNodeList","setTransitionDuration","setVisibilityState","getOwnerDocument","elementOrElements","updateTransitionEndListener","actualContains","_target$getRootNode","currentInput","lastMouseMoveTime","onDocumentTouchStart","onDocumentMouseMove","onWindowBlur","isIE11","msCrypto","pluginProps","animateFill","followCursor","inlinePositioning","appendTo","aria","getReferenceClientRect","hideOnClick","ignoreAttributes","interactiveBorder","interactiveDebounce","moveTransition","onAfterUpdate","onBeforeUpdate","onDestroy","onHidden","onHide","onMount","onShow","onShown","onTrigger","onUntrigger","onClickOutside","popperOptions","showOnCreate","triggerTarget","allowHTML","defaultKeys","getExtendedPassedProps","passedProps","evaluateProps","valueAsString","getDataAttributeProps","createArrowElement","setContent","getChildren","firstElementChild","boxChildren","backdrop","_getChildren","$$tippy","idCounter","mouseMoveListeners","mountedInstances","createTippy","scheduleHideAnimationFrame","lastTriggerEvent","currentTransitionEndListener","isVisibleFromClick","didHideDueToDocumentMouseDown","didTouchMove","ignoreOnFirstUpdate","debouncedOnMouseMove","onMouseMove","popperInstance","isMounted","isShown","clearDelayTimeouts","setProps","partialProps","invokeHook","removeListeners","addListeners","cleanupInteractiveMouseListeners","handleAriaExpandedAttribute","handleStyles","createPopperInstance","getNestedPopperTree","nestedPopper","isAlreadyVisible","isTouchAndTouchDisabled","getCurrentTarget","getIsDefaultRenderFn","addDocumentPress","_getDefaultTemplateCh2","getDefaultTemplateChildren","_instance$popperInsta2","_getDefaultTemplateCh3","_box","handleAriaContentAttribute","onTransitionedIn","isAlreadyHidden","removeDocumentPress","_getDefaultTemplateCh4","onTransitionedOut","unmount","hideWithInteractivity","getDocument","destroyPopperInstance","_props$render","pluginsHooks","hasAriaExpanded","scheduleShow","getNormalizedTouchSettings","getIsCustomTouchBehavior","_instance$props$rende","getDelay","isShow","fromHide","shouldInvokePropsHook","_instance$props","pluginHooks","onDocumentPress","actualTarget","onBlurOrFocusOut","_lastTriggerEvent","shouldScheduleClickHide","isEventListenerStopped","wasFocused","scheduleHide","isCursorOverReferenceOrPopper","popperTreeData","_instance$popperInsta","popperState","topDistance","bottomDistance","leftDistance","rightDistance","exceedsTop","exceedsBottom","exceedsLeft","exceedsRight","isCursorOutsideInteractiveBorder","_instance$props2","computedReference","tippyModifier","_getNormalizedTouchSe","touchValue","touchDelay","tippy","optionalProps","setDefaultProps","preserveRef","ssrSafeCreateDiv","deepEqual","uniqueByShape","outputItem","deepPreserveProps","instanceProps","_instanceProps$popper","_componentProps$poppe","useIsomorphicLayoutEffect","useMutableBox","updateClassName","classNamePlugin","isDefaultRenderFn","TippyGenerator","singleton","_ref$disabled","_ref$ignoreAttributes","restOfNativeProps","__source","__self","isControlledMode","isSingletonMode","setMounted","setAttrs","_useState3","singletonContent","setSingletonContent","mutableBox","computedProps","$$activeSingletonInstance","deps","_instance$props$poppe","_state$modifiersData","hideData","referenceHidden","escaped","createPortal","dataAttrs","toDataAttributes","forwardRef","Tippy","fun","und","nul","equ","useForceUpdate","withDefault","callProp","interpolateTo","forward","onStart","onRest","onFrame","immediate","destroyed","getForwardProps","Animated","getAnimatedValue","getPayload","AnimatedArray","AnimatedObject","applyAnimatedValues","colorNames","injectApplyAnimatedValues","injectColorNames","names","interpolation","injectStringInterpolator","defaultElement","injectDefaultElement","createAnimatedStyle","manualFrameloop","animatedApi","injectCreateAnimatedStyle","AnimatedProps","controllers","controller","configIdx","endOfAnimation","valIdx","animatedValues","fromValues","toValues","lastPosition","isAnimated","velocity","initialVelocity","decay","lastVelocity","numSteps","friction","mass","isOvershooting","isVelocity","isDisplacement","createInterpolator","extrapolate","outputRange","extrapolateLeft","extrapolateRight","findRange","inputMin","inputMax","outputMin","outputMax","AnimatedInterpolation","parents","calc","updateConfig","gentle","wobbly","stiff","slow","molasses","addAnimatedStyles","AnimatedValue","animatedStyles","animatedStyle","clearStyles","AnimatedValueArray","Controller","idle","guid","interpolations","localQueue","getValues","_ref$delay","onEnd","_ref3$from","_ref3$to","finished","async","runAsync","fresh","_this$props$from","_this$props$to","_this$props$config","isInterpolation","fromValue","toConfig","interpolation$$1","currentValueDiffersFromGoal","hasNewGoal","hasNewConfig","useSprings","newProps","updateCtrl","updateProps","propValues","useSpring","_useSprings","ENTER","LEAVE","UPDATE","mapKeys","_props$keys","useTransition","keyTransform","_get","_get$lazy","_get$reset","unique","onDestroyed","_onRest","_ref8","_get2","_get2$trail","trail","_get2$order","_get3","currentKeys","currentSet","nextSet","removed","originalKey","keyIndex","slot","_ref9","diffItems","filterKey","AnimatedStyle","burntsienna","PERCENTAGE","hsla","hex3","hex4","hex6","hex8","parse255","int","parse360","parse1","parsePercentage","colorToRgba","int32Color","normalizeColor","stringShapeRegex","colorRegex","colorNamesRegex","isUnitlessNumber","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","floodOpacity","stopOpacity","strokeMiterlimit","dangerousStyleValue","isCustomProperty","prefixKey","attributeCache","rangeValue","outputRanges","styleValue","dashCase","lowercase","extendedAnimated","propsAnimated","attachProps","oldPropsAnimated","didUpdate","_getValue","animatedProps","refFn","childRef","seal","construct","thisValue","Func","arrayForEach","unapply","arrayPop","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","addToSet","transformCaseFunc","lcElement","cleanArray","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","EXPRESSIONS","NODE_TYPE","getGlobal","purify","createDOMPurify","DOMPurify","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","trustedTypes","ElementPrototype","cloneNode","getChildNodes","trustedTypesPolicy","emptyHTML","createNodeIterator","createDocumentFragment","importNode","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createHTMLDocument","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","CONFIG","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","tbody","TRUSTED_TYPES_POLICY","createHTML","createScriptURL","purifyHostElement","createPolicy","ATTR_NAME","policyName","scriptUrl","_createTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","leadingWhitespace","dirtyPayload","createDocument","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","namespaceURI","hasChildNodes","_isNode","_executeHooks","_sanitizeElements","allowedTags","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","expr","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","getAttributeType","_sanitizeShadowDOM","shadowNode","shadowIterator","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","COMMON_MIME_TYPES","toFileWithPath","withMimeType","webkitRelativePath","FILES_TO_IGNORE","getInputFiles","evt","fromList","getFsHandleFiles","handles","getFile","getDataTransferFiles","dt","toFilePromises","noIgnoredFiles","flatten","webkitGetAsEntry","fromDataTransferItem","fromDirEntry","getAsFile","fwp","fromEntry","fromFileEntry","createReader","readEntries","FILE_INVALID_TYPE","FILE_TOO_LARGE","FILE_TOO_SMALL","TOO_MANY_FILES","getInvalidTypeRejectionErr","messageSuffix","getTooLargeRejectionErr","getTooSmallRejectionErr","minSize","TOO_MANY_FILES_REJECTION","fileAccepted","isAcceptable","fileMatchSize","isPropagationStopped","isEvtWithFiles","onDocumentDragOver","composeEventHandlers","canUseFileSystemAccessAPI","filePickerOptionsTypes","_excluded","_excluded2","_excluded3","_excluded4","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_objectWithoutProperties","Dropzone","_useDropzone","useDropzone","Fragment","getFilesFromEvent","isChangeEvt","preventDropOnDocument","noClick","noKeyboard","noDrag","noDragEventsBubbling","useFsAccessApi","onFileDialogCancel","onFileDialogOpen","onDragEnter","onDragOver","onDropAccepted","isFileDialogActive","isDragActive","isDragAccept","isDragReject","draggedFiles","acceptedFiles","fileRejections","_defaultProps$options","onFileDialogOpenCb","onFileDialogCancelCb","onWindowFocus","dragTargetsRef","onDocumentDrop","onDragEnterCb","onDragOverCb","hasFiles","_unused","onDragLeaveCb","targetIdx","_fileAccepted2","accepted","acceptError","_fileMatchSize2","sizeMatch","sizeError","customErrors","onDropCb","openFileDialog","showOpenFilePicker","finally","onKeyDownCb","isEqualNode","onFocusCb","onBlurCb","onClickCb","isIe","isEdge","isIeOrEdge","composeHandler","composeKeyboardHandler","composeDragHandler","getRootProps","_ref2$refKey","refKey","onInputElementClick","getInputProps","_ref3$refKey","allFilesAccepted","GREYS$1","DATAVIS$1","DATAVIS_WITH_MEANING$1","buildValueLookup$1","buildPaletteValueLookup$1","getValueDataVis$1","getValueDataVisWithMeaning$1","colors$1","accent2","overlay","shadowStrong","paletteKeys","nextValuePaletteKey","buildDataVisWithMeaningLookup$1","typeScale","sizes","getLineHeight","allLayers","getLayerIndex","verticalNav","horizontalNav","footer","currentLayer","getNextLayer","templateObject_1$3x","boxShadow2","templateObject_2$1S","boxShadow3","templateObject_3$1q","overlayStyling","templateObject_4$17","sidebarWidth","isDarkMode$4","templateObject_5$X","templateObject_6$N","templateObject_7$D","templateObject_8$w","templateObject_9$t","templateObject_10$o","templateObject_11$i","templateObject_2$1R","templateObject_3$1p","templateObject_4$16","templateObject_5$W","templateObject_6$M","templateObject_7$C","templateObject_8$v","templateObject_9$s","templateObject_10$n","templateObject_2$1Q","templateObject_3$1o","templateObject_4$15","templateObject_5$V","templateObject_6$L","templateObject_7$B","templateObject_2$1P","templateObject_3$1n","templateObject_4$14","templateObject_5$U","templateObject_6$K","templateObject_7$A","templateObject_8$u","templateObject_9$r","templateObject_10$m","templateObject_11$h","templateObject_12$f","templateObject_13$c","templateObject_14$a","templateObject_2$1O","templateObject_3$1m","templateObject_4$13","templateObject_5$T","templateObject_6$J","templateObject_7$z","templateObject_8$t","templateObject_9$q","templateObject_10$l","templateObject_11$g","templateObject_12$e","templateObject_13$b","templateObject_14$9","templateObject_15$9","templateObject_16$7","templateObject_17$6","templateObject_18$5","templateObject_2$1N","templateObject_3$1l","templateObject_4$12","templateObject_5$S","templateObject_6$I","templateObject_2$1M","templateObject_3$1k","getPageBackgroundColor","getDrawerColor","getTooltipColor","getShadowStrongColor","getDisabledFieldColor","boxShadowForDarkMode","contrastTextColor","GREYS","DATAVIS","DATAVIS_WITH_MEANING","buildValueLookup","buildPaletteValueLookup","getValueDataVis","getValueDataVisWithMeaning","buildDataVisLookup","buildDataVisWithMeaningLookup","darkTheme","themeHelpers","colorPalettes","STORYBOOK","initialEntries","Router","history$1","PrivateRoute","isAuthenticated","redirectPath","memoQuery","pushQueryParams","handleUpdateQuery","getAll","useDrawer","DrawerProvider","setIsopen","handleSetDrawerState","allClosed","handleToggleDrawer","testId","getSizeAndLineHeight","getWeight","Text$3","getVariant","Text$1","hideTitleOnEllipsis","textRef","rawText","setRawText","hasVerticalOverflow","hasHorizontalOverflow","View$2","IconWrapper$4","sizeVariant$4","Label$7","BaseButtonStyle","Button$3","Loading$3","Modal$2","customWidth","sizeVariant$2","noMinHeight","Close$2","Body$1","BodyContent","useScroll","ButtonGroup$3","LeftButtons","RightButtons","Footer$5","ModalWrapper","IconButton$2","sizeVariant$1","DropdownContent$2","Layer$1","prevTheme","Layer","DropdownContent","useTransform","setPosition","setSize","validClickOutside","onResizeOrScroll","triggerRect","triggerDimensions","contentSize","triggerHeight","canvasSize","offsetRight","offsetBottom","calculateOffset","useTarget","setTrigger","templateObject_2$1L","templateObject_3$1j","templateObject_4$11","templateObject_2$1K","templateObject_2$1J","templateObject_3$1i","templateObject_4$10","IconButton","SVG$1j","xmlns","SvgAdd$1","MemoSvgAdd$1","SVG$1i","clipRule","SvgAlertErrorFilled","MemoSvgAlertErrorFilled","SVG$1h","SvgAlertError","MemoSvgAlertError","SVG$1g","SvgAlertInformationFilled","MemoSvgAlertInformationFilled","SVG$1f","SvgAlertInformation","MemoSvgAlertInformation","SVG$1e","SvgAlertSuccessFilled","MemoSvgAlertSuccessFilled","SVG$1d","SvgAlertSuccess","MemoSvgAlertSuccess","SVG$1c","SvgAlertWarning","MemoSvgAlertWarning","SVG$1b","SvgArrowDown$1","MemoSvgArrowDown$1","SVG$1a","SvgArrowUp$1","MemoSvgArrowUp$1","SVG$19","SvgArrowDown","MemoSvgArrowDown","SVG$18","SvgArrowUp","MemoSvgArrowUp","SVG$16","SvgAnalyticsPie","MemoSvgAnalyticsPie","SVG$15","SvgCalendar","MemoSvgCalendar","SVG$13","SvgCheck","MemoSvgCheck","SVG$12","SvgChevronDown","MemoSvgChevronDown","SVG$11","SvgChevronLeft","MemoSvgChevronLeft","SVG$10","SvgChevronRight","MemoSvgChevronRight","SVG$$","SvgChevronUp","MemoSvgChevronUp","SVG$Z","SvgClose","MemoSvgClose","SVG$X","SvgControls","MemoSvgControls","SVG$W","SvgCopyPaste","MemoSvgCopyPaste","SVG$V","SvgDataDecrease","MemoSvgDataDecrease","SVG$U","SvgAdd","MemoSvgAdd","SVG$T","SvgDataIncrease","MemoSvgDataIncrease","SVG$S","SvgDelete","MemoSvgDelete","SVG$R","SvgDownload","MemoSvgDownload","SVG$Q","SvgEarth","MemoSvgEarth","SVG$P","SvgEdit","MemoSvgEdit","SVG$O","SvgFavouriteNo","MemoSvgFavouriteNo","SVG$N","SvgFavouriteYes","MemoSvgFavouriteYes","SVG$L","SvgFlaggedNo","MemoSvgFlaggedNo","SVG$K","SvgFlaggedYes","MemoSvgFlaggedYes","SVG$J","SvgFolderClosed","MemoSvgFolderClosed","SVG$I","SvgFolderOpen","MemoSvgFolderOpen","SVG$G","SvgKebabHorizontal","MemoSvgKebabHorizontal","SVG$F","SvgKebabVertical","MemoSvgKebabVertical","SVG$E","SvgLegalHammer","MemoSvgLegalHammer","SVG$D","SvgLinkOut","MemoSvgLinkOut","SVG$C","SvgListBullets","MemoSvgListBullets","SVG$B","SvgListNumbers","MemoSvgListNumbers","SVG$A","SvgLoader","MemoSvgLoader","SVG$z","SvgLocationTarget","MemoSvgLocationTarget","SVG$r","SvgModulePuzzle","MemoSvgModulePuzzle","SVG$q","SvgMoodHappy","MemoSvgMoodHappy","SVG$p","SvgNetworkAdoption","MemoSvgNetworkAdoption","SVG$o","SvgNotesWarning","MemoSvgNotesWarning","SVG$l","SvgRefresh","MemoSvgRefresh","SVG$k","SvgRisk","MemoSvgRisk","SVG$j","SvgSave","MemoSvgSave","SVG$i","SvgSearch","MemoSvgSearch","SVG$h","SvgSecurityLocked","MemoSvgSecurityLocked","SVG$f","SvgSettingsHuman","MemoSvgSettingsHuman","SVG$e","SvgSettings","MemoSvgSettings","SVG$d","SvgShare","MemoSvgShare","SVG$c","SvgSortDown","MemoSvgSortDown","SVG$b","SvgSortUp","MemoSvgSortUp","SVG$8","SvgUserMultiple","MemoSvgUserMultiple","SVG$7","SvgUpload","MemoSvgUpload","SVG$6","SvgWarningFilled","MemoSvgWarningFilled","SVG$5","SvgDocumentTableBased","MemoSvgDocumentTableBased","SVG$4","SvgDumbbell","MemoSvgDumbbell","SVG$3","SvgTable","MemoSvgTable","SVG$2","SvgAnalyticsBarsHorizontal","MemoSvgAnalyticsBarsHorizontal","SVG$1","SvgAnalyticsBars","MemoSvgAnalyticsBars","SVG","SvgMerge","MemoSvgMerge","sizeVariant","Logo$2","WideLogo$2","setTheme","useThemeProvider","setActiveTheme","handleSetActiveTheme","WideLogo$1","SVGDark","xmlnsXlink","patternContentUnits","xlinkHref","WideLogo","TruncationWrapper","HeadingWithLogo","HeadingWrapperLogo","top$1","bottom$1","isElement$1","applyStyles$1","getBasePlacement$1","min$1","max$1","arrow$1","hash$1","placements$1","flip$1","offset$1","preventOverflow$1","debounce$1","styleInject","insertAt","templateObject_2$1I","templateObject_3$1h","templateObject_2$1H","templateObject_3$1g","templateObject_4$$","templateObject_5$R","templateObject_6$H","templateObject_7$y","templateObject_8$s","templateObject_9$p","templateObject_10$k","templateObject_11$f","templateObject_12$d","templateObject_2$1G","templateObject_3$1f","templateObject_4$_","templateObject_2$1F","templateObject_2$1E","templateObject_3$1e","templateObject_4$Z","templateObject_5$Q","templateObject_6$G","templateObject_7$x","templateObject_8$r","templateObject_9$o","templateObject_10$j","templateObject_11$e","templateObject_12$c","templateObject_2$1D","templateObject_3$1d","templateObject_4$Y","templateObject_5$P","templateObject_6$F","templateObject_7$w","templateObject_8$q","templateObject_9$n","templateObject_10$i","templateObject_11$d","templateObject_12$b","templateObject_13$a","templateObject_14$8","templateObject_15$8","templateObject_16$6","templateObject_17$5","templateObject_18$4","templateObject_19$3","templateObject_20$3","templateObject_21$3","templateObject_22$2","templateObject_2$1C","templateObject_3$1c","templateObject_4$X","templateObject_5$O","templateObject_6$E","templateObject_7$v","templateObject_8$p","templateObject_9$m","templateObject_10$h","templateObject_11$c","templateObject_12$a","templateObject_13$9","templateObject_14$7","templateObject_15$7","templateObject_16$5","templateObject_2$1B","templateObject_3$1b","templateObject_2$1A","templateObject_3$1a","templateObject_4$W","templateObject_2$1z","templateObject_3$19","templateObject_4$V","templateObject_2$1y","templateObject_3$18","templateObject_2$1x","templateObject_3$17","templateObject_2$1w","templateObject_3$16","templateObject_4$U","templateObject_5$N","templateObject_6$D","templateObject_7$u","templateObject_8$o","templateObject_2$1v","templateObject_2$1u","templateObject_3$15","Tooltip$2","TooltipContent","TooltipWrapper$1","setVisible","useWindowSize","headingRef","isTruncated","renderText","getLogoSize","Heading$2","Button$1","renderIcon","ScrollableContent$2","Content$6","ScrollShadow","hideBottom","hideTop","ScrollFade","ScrollableContent","onHitEnd","hitEndPadding","fixedTop","fixedBottom","gradientBarPosition","setGradientBarPosition","scrollBarProps","defaultPosition","getBarsPositions","handleInfiniteScroll","autoHeight","autoHeightMin","autoHeightMax","Overlay$3","AnimatedOverlay","Overlay$1","scrollbarsConfig","customHeader","hideFooter","hasClose","hasButtons","renderFooterButtons","modalPadding","modalHeaderAndFooter","themePadding","Confirmation","confirmationModal","createModal","ConfirmationFactory","onRemoveToast","useToaster","ToasterProvider","setToasts","showCloseButton","actionSecondary","shouldAutoClose","newToast","dismissableToasts","toRemoveIds","isDarkMode$3","GlobalStyle","ModalsWrapper","OverlayWrapper$1","Core","setLoaded","generateCypressId","trackPendoEvent","eventProperties","pendo","useHasOverflow","isDarkMode$2","Accordion$2","HeaderContent","CheckWrapper$1","Toggle$1","Content$5","Label$6","Label$4","View","LabelsWrapper$1","Label$3","reducedWidth","FirstLabel$1","hasSubLabel","SubLabel$1","StyledCheckbox","Checkbox","subLabel","handleOnChange","checkbox","renderLabel","renderSubLabel","LabelsWrapper","Label$2","FirstLabel","SubLabel","StyledRadio","Radio","radio","Collapse","unmountOnClose","onWork","UnmountClosed","isOpened","initialSize","initialDefaultOpen","openHeight","AddonStyled","AddonWrapperStyled","isSuccess","Addon","renderAddon","Avatar$2","Initials","OverlayWrapper","OverlayContent","Avatar","noImage","getInitials","renderInitials","Breadcrumbs$2","BreadcrumbText","variantColor","BreadcrumbLink","BreadcrumbSeparator","BreadcrumbItem","hasNextItem","Breadcrumbs","ButtonGroup$2","ButtonGroup","Title$5","dd","DefinitionList$2","Item$3","DropdownMenu$2","Menu$5","menuItemHoverState","menuItemStyles","MenuItem$2","hasDropdown","LeftIcon","RightIcon$1","DropdownChevron","MenuItem$1","setChildOpen","Menu$3","scrollbarsRef","setCursor","childOpen","showScroll","renderItems","newCursor","scrollBehavior","DropdownMenu","Wrapper$4","Image$2","ImagePlaceholder","EnhancedImage","imgPromise","decoratedSrc","useImage","srcList","ErrorBoundary","hasError","getDerivedStateFromError","Fallback","setShow","templateObject_2$1t","templateObject_3$14","templateObject_2$1s","Input$3","Input$2","restProps","hasAddon","sanitizedValue","Input$1","Textarea$2","textarea","templateObject_2$1r","templateObject_3$13","templateObject_4$T","templateObject_5$M","templateObject_6$C","templateObject_2$1q","templateObject_2$1p","templateObject_3$12","templateObject_2$1o","templateObject_3$11","templateObject_4$S","templateObject_5$L","templateObject_6$B","templateObject_7$t","templateObject_8$n","templateObject_2$1n","templateObject_3$10","templateObject_2$1m","templateObject_3$$","templateObject_4$R","templateObject_5$K","templateObject_6$A","templateObject_2$1l","templateObject_3$_","templateObject_4$Q","templateObject_5$J","templateObject_6$z","templateObject_7$s","templateObject_8$m","templateObject_9$l","templateObject_10$g","templateObject_11$b","templateObject_12$9","templateObject_13$8","templateObject_2$1k","templateObject_3$Z","templateObject_4$P","templateObject_5$I","templateObject_6$y","templateObject_7$r","templateObject_8$l","templateObject_9$k","templateObject_10$f","templateObject_2$1j","templateObject_2$1i","templateObject_3$Y","templateObject_4$O","templateObject_5$H","templateObject_6$x","templateObject_7$q","templateObject_8$k","templateObject_9$j","templateObject_10$e","templateObject_11$a","templateObject_2$1h","templateObject_2$1g","templateObject_3$X","templateObject_4$N","templateObject_5$G","templateObject_6$w","templateObject_7$p","templateObject_8$j","templateObject_9$i","templateObject_10$d","templateObject_11$9","templateObject_12$8","templateObject_13$7","templateObject_14$6","templateObject_15$6","templateObject_2$1f","templateObject_3$W","templateObject_2$1e","templateObject_3$V","templateObject_4$M","templateObject_5$F","templateObject_2$1d","templateObject_2$1c","templateObject_2$1b","templateObject_3$U","templateObject_4$L","templateObject_5$E","templateObject_6$v","templateObject_2$1a","templateObject_3$T","templateObject_4$K","templateObject_5$D","templateObject_6$u","templateObject_7$o","templateObject_8$i","templateObject_9$h","templateObject_2$19","templateObject_3$S","templateObject_2$18","templateObject_3$R","templateObject_4$J","templateObject_5$C","templateObject_6$t","templateObject_7$n","templateObject_8$h","templateObject_9$g","templateObject_10$c","templateObject_2$17","templateObject_2$16","templateObject_3$Q","templateObject_4$I","templateObject_5$B","templateObject_2$15","templateObject_2$14","templateObject_3$P","templateObject_4$H","templateObject_5$A","templateObject_6$s","templateObject_2$13","templateObject_2$12","templateObject_3$O","templateObject_4$G","templateObject_5$z","templateObject_6$r","templateObject_3$N","templateObject_4$F","templateObject_5$y","templateObject_6$q","templateObject_7$m","templateObject_8$g","templateObject_9$f","templateObject_10$b","templateObject_11$8","templateObject_12$7","templateObject_13$6","templateObject_15$5","templateObject_16$4","templateObject_17$4","templateObject_18$3","templateObject_19$2","templateObject_20$2","templateObject_21$2","templateObject_27$1","templateObject_28$1","templateObject_29$1","templateObject_30$1","templateObject_31$1","templateObject_3$M","templateObject_5$x","templateObject_6$p","templateObject_7$l","templateObject_8$f","templateObject_9$e","templateObject_11$7","templateObject_15$4","templateObject_16$3","templateObject_17$3","templateObject_18$2","templateObject_3$L","templateObject_5$w","templateObject_6$o","Select$2","Datepicker$2","Error$2","Validation$2","Icon$2","InfoText$3","InfoWrapper","GroupLabel","TextWrapper$2","InputGroup$2","hasErrors","errorState$3","errorState$2","errorState$5","errorState$4","errorState$1","errorState","ValidationRow","CharacterCount$1","Error$1","Validation","CharacterCount","typedCharacters","maxCharacters","InputGroup","characterCountProps","Layout$2","Navigation$1","Content$4","renderNavigation","listVariant","Link$2","isListItem","LinkAsButton","primaryDisabledStyles","RightIcon","hideIcon","renderRightIcon","Panel$2","PanelSection","withBreaker","noBottomPadding","Pretitle","Subtitle","Toolbar$3","Title$4","Footer$4","menuLabel","menuOnClick","noBottomPaddingOnHeader","PanelTitle","pretitleText","clampSubtitleText","titleConfig","clearable","getActiveOption","renderItem","TabGroup$2","groupVariant","Tab","tabVariant","TabGroup","preventTabChange","defaultTabs","Tabs$2","Nav","Tabs","defaultActive","activeContent","Tag$2","tagVariant","Textarea","Loading$2","CenterWrapper","Loading","BounceLoader","Popover$2","Drawer$2","FooterActions","DrawerContent","DrawerContentWrapper","withFooter","DrawerHeader","AnimatedDrawer$1","PageDrawer$2","PageDrawerContentWrapper","AnimatedDrawer","showContent","setShowContent","maxHeightOffset","thisDrawerOpen","PageDrawer","percentageWidth","tranformWidth","clickOnOverlay_1","MenuButtonTooltip","MenuButton$2","ButtonText","MainNav$2","AcinLogoWide$1","LogoHolder","Menu$2","MenuGroup$1","GroupTitle","MenuButton$1","rePositionTooltip","setShowTooltip","onMouseOver","MenuGroup","headerAbbr","Menu$1","FooterUser","User","UserDetails","Name$1","Company","MenuItemWrapper","DownloadListAbsolute","Item$2","UPLOAD_STATUS$3","navigation","onNavigationClick","onLogoClick","collapsed","setCollapsed","hasScrolled","setHasScrolled","onMenuClick","onOpenSettings","onItemClick","showChildId","borderColors","DragDropUpload$2","Wrapper$3","Message$2","IconWrapper$3","DefaultMessage","optionalText","UPLOAD_STATUS$2","ProgressBar$3","AnimatedBar","Bar","ProgressBar$1","testIds","bar","UploadingContent$2","FileListWrapper","FileListPercentage","CloseButtonWrapper","UPLOAD_STATUS$1","DragDropUpload","UPLOAD_STATUS","UploadingContent","progressBarData","Notification$2","Message$1","Notification","getStatusIcon","Favourite$2","Favourite","THead$1","thead","TBody$1","Cell$2","SortIcon$1","TextWrapper$1","HeadCell$3","th","Row$3","FavouriteCell$1","DeleteCell$1","Star$1","CardTable","Row$2","HeadCell$2","FavouriteCell","DeleteCell","HeadCell","getSortArrow","extractText","renderChildren","TBody","THead","Headers","showDelete","cleanHeaders","favouriteValue","enableDelete","handleFavourite","hasValidId","hasValidFavourite","getFavouriteValue","handleDelete","getRowTestId","createKey","rowTotal","dataHeaders","setDataHeaders","dataRows","setDataRows","isLoaded","setIsLoaded","originalRows","getSortedHeader","orderBy","sortData","isSecondarySize","canDelete","templateObject_5$v","templateObject_6$n","templateObject_7$k","templateObject_8$e","templateObject_9$d","ToggleSwitchWrapper","ToggleSwitch$2","ToggleSwitch","toggleSwitch","StatusIcon","Alert$2","Multiline","Close$1","Alert","AvatarCluster$2","MoreCounter","AvatarCluster","firstAvatar","secondAvatar","thirdAvatar","CardBoard$2","CardBoardContent","CardBoardItem$2","CardBoard","throttleLoadMore","disableScrollableContent","resultsRef","CardBoardItem","Autosuggest$2","Item$1","Wrapper$2","Autosuggest","onChangeProp","suggestions","setSuggestions","autosuggestRef","onSuggestionsFetchRequested","matchesLabel","matchesCode","onSuggestionsClearRequested","onSuggestionSelected","getSuggestionValue","isHighlighted","renderSuggestionsContainer","containerProps","shouldRenderSuggestions","renderInputComponent","TitleBar$1","TitleWrapper$1","RenderedTitleWrapper","ActionWrapper","ToolBar$1","Primary","Secondary","FilterArea","Search","PageHeader$2","NavBar$1","ActionsBar$1","Actions$3","TagList$2","TagList","TabsBar$1","templateObject_15$3","templateObject_17$2","templateObject_36","templateObject_37","templateObject_38","templateObject_39","templateObject_40","templateObject_41","templateObject_42","templateObject_43","templateObject_44","templateObject_45","templateObject_46","templateObject_47","templateObject_48","templateObject_49","templateObject_50","templateObject_51","templateObject_52","templateObject_53","PageHeaderCondensed$2","CompactHeaderProvider$2","PageHeader","navBar","isParent","PageHeaderActionsBar","PageHeaderTitleBar","renderFavourite","acinLogo","badge","renderLayout","PageHeaderToolBar","renderLayoutToggle","renderDropdown","renderReload","renderFilterArea","PageHeaderTabsBar","PageHeaderCondensed","Toolbar$2","showAfter","renderHeader","setIsVisible","scrollPosition","setScrollPosition","scrollY","renderButton","SortAction$2","SortIcon","LastUpdated$2","DataUpdated","LastUpdated","AutosuggestTags$2","AutosuggestTagsList","AutosuggestTags","filteredItems","ShowMore$2","LinkWrapper","ShowMoreButton$1","getIsOpen","showLessLabel","showMoreLabel","CustomRenderStyles","Markdown$2","Markdown","markdownContent","processSync","ShowMore","showMoreLength","trimmedText","sentenceBroken","hasMoreText","DataCard$2","CardLink","ContentWrapper","DataCard","subTitleComp","renderWithLink","LinkList$2","LinkList","InfoText$2","InfoText","KeyText","Key","columnStyle","ChartLegend$2","layoutVariant","ChartLegendKey$1","showCount","hasCount","ChartLegend","ChartLegendKey","Badge$3","badgeSize","badgeVariant","BadgeText","textColor","withIcon","withRightIcon","Badge$1","rightIcon","isSmall","SkeletonLoader","shouldRender","setShouldRender","highlightColor","AuthorBlock$2","LogoSection","AuthorSection","Toaster$2","authorTitle","Toast$1","Close","ErrorIcon","SuccessIcon","WarningIcon","Message","Actions$2","AnimatedToast","Toaster","BadgeScore$2","BadgeScore","renderAsText","renderScores","Lock$2","Overlay","Status$1","statusStyling","Lock","lockedContentText","unavailableContentText","isLocked","StorybookWelcome$2","Acin","Btn","Icon$1","RadioTabs$2","repoURL","onVisitDocs","RadioTab","Datetimepicker$2","ButtonStyle","Back","Next$1","CarouselContainer","AcinCarousel","Carousel","isInfinite","arrowsPlugin","arrowLeft","arrowLeftDisabled","arrowRight","arrowRightDisabled","addArrowClickHandler","Dots","scoreConfig","veryStrong","strong","moderate","NssScore","renderScoreBand","DataListRow$2","DataListRowAcinLogo","DataListRowLeftContent","DataListRowCode","DataListRowDescription","DataListRowRightContent","DataListRowAcinBadges","DataListRow","rowRef","badgesRef","hideAcinBadges","setHideAcinBadges","badgesOffsetRight","setBadgesOffsetRight","containerOffsetRight","BackToTopButton$2","buttonVariant","Prompt","BackToTopButton$1","BackToTopButton","ThemeChanger$2","StoryBackground","RangeSlider$2","thumbstyle","Thumb","ThumbZindex3","ThumbZindex4","ThumbZindex5","MinThumb","minVal","MaxThumb","SliderPart","SliderTrackPart","SliderTrack","SliderRange","RangeSlider","externalRange","internalRange","setInternalRange","minRangeRef","maxRangeRef","rangeRef","getPercent","minPercent","maxPercent","onMinValChanged","updatedRange","onMaxValChanged","RangeSliderInput$2","RangeSliderContainer","Heading$1","RangeInput","RangeSliderInput","minValText","setMinValText","maxValText","setMaxValText","minValTextInternal","maxValTextInternal","minError","setMinError","maxError","setMaxError","onRangeSliderChanged","debounceMinValChanged","onMinTextValChanged","debounceMaxValChanged","maxVal","onMaxTextValChanged","paginationButton","Item","Prev","Next","More","disablePrev","disableNext","showEllipsis","showFirstEllipsis","showLastEllipsis","buttonTestId","firstPage","lastPage","renderEllipsis","VALUES","pageNo","renderPages","firstColumnFixedWidth","columnsWidth","borderRightShadow","OuterContainer","InnerContainer","CollapsibleTable$2","TRow","THeadCell","isFixedColumn","showBorder","ParentRow$1","ParentCell","ArrowWrapper","LogoWrapper","ParentRow","isFirstCol","getArrow","setShowBorder","tableTop","setTableTop","setIsFixedColumn","tableRef","childrenRows","isRowOpen","isSecondLastRow","newIsOpen","isInverted","SearchInput","ClearButton","SearchBar","Trend$2","PositiveSentiment","NegativeSentiment","Trend","sentiment","isPercentage","CompactHeader$2","CompactHeaderSection","CompactHeaderFirstTier","CompactHeaderSecondTier","CompactHeaderThirdTier","FirstTier$2","FirstTierLeft","LeftRef","maxLeftWidth","FirstTierHeading","maxLeftHeadingWidth","FirstTierRight","RightRef","ActionsWrapper","ActionsMenu","SecondTier$2","ThirdTier$2","ThirdTierWrapItems","ThirdTierSearchWrapper","FirstTier","setIsCompressed","leftWidth","setLeftWidth","expandedRightWidth","setExpandedRightWidth","setMaxLeftWidth","acinLogoWidth","getMaxLeftHeadingWidth","SecondTier","ThirdTier","notChildren","CompactHeaderActions","iconActions","linkActions","iconAction","Circle$1","ErrorPage$2","ErrorStatus","Character","ErrorMessage$2","character","renderErrorStatus","ErrorMessage","friendlyMessage","noDataTestId","fallbackStatus","fallbackMessage","renderNoData","isDarkMode$1","FilterLabel","FilterInnerLabel","FilterIcon","LARGE_CHARS_ARR","MEDIUM_CHARS_ARR","SMALL_CHARS_ARR","totalCount","labelRef","setLabelWidth","truncateIndex","strWidth","strArr","currentChar","getTruncateIndex","MAX_WIDTH","innerLabelTruncate_1","renderInnerLabel","CheckList$2","AccordionList","CheckWrapper","hasSublabel","IconWrapper$2","CHECKBOX_VARIANT","RADIO_VARIANT","CheckList","checkListRef","setActiveIds","partiallyActiveIds","setPartiallyActiveIds","createItem","ItemRow","PageWrapper$2","Absolute","ContentScrollable","PageWrapper","FIRST_TIER_HEIGHT","ColourBlock$3","ColourBlock$1","ColourBlockList$2","ColourBlock","ColourBlockList","DownloadProgress$1","DownloadProgress","progressPercentage","DownloadsListItem$1","NameWrapper","Name","Status","IconWrapper$1","Delete","IconExcel","IconAlert","FileType","FileStatus","DownloadLink","DownloadsListItem","inProgress","transformName","failedComp","Downloaded","DownloadsList$2","DownloadsListHeader","DownloadsListHeading","IconClose","DownloadsListWrapper","NoDownloads","DownloadsList","MainNavHorizontal$2","topPosition","AcinLogoWide","ButtonStyles","MenuButton","Tools","IconButtons","UserEmail","SearchHolder","NavDrawer$1","MenuCardsContainer","MenuCards","Divider","NavCard$1","TextContainer","NavButton","NavCard","descriptionColor","NavDrawer","drawerRef","handleOutsideClick","highlights","navItems","MainNavHorizontal","onBreadcrumbsClick","settingsMenuContents","customTopPosition","userEmail","previousActiveMenu","setPreviousActiveMenu","secondLevelNav","setSecondLevelNav","openDrawer","setOpenDrawer","activeMenuItem","navItem","activeHighlight","handleMenuButtonClick","menuEl","isAcinLogo","LayoutHorizontal$2","Navigation","LayoutHorizontal","PageContentLayout$2","headerHeight","PageContentLayout","MultiSelect$2","MultiSelectOptions","OptionWrapper","NoOptions","Options","OptionItem","InputRemove","OptionLabel","OptionSublabel","OptionSelected","RemoveIconWrapper","MultiSelect","setSearch","optionsList","setOptionsList","setInputFocus","handleInputFocus","inputWasOpen","__importStar","__esModule","React","core_1","helpers_1","Loader","calculateRgba","jsx","heightWidthDefaults","sizeMarginDefaults","sizeDefaults","parseLengthAndUnit","climbingBox","hill","quarter","heightWidthRadiusDefaults","rand","sizeWithUnit","marginWithUnit","lat","before","moon","moonSize","ballStyle","ball","pacman","s2","pacmanStyle","pac","man","propagate","puff","even","odd","skew","proptypes_1","sync","BasicColors","res_1","__export","commonValues","sizeValue","cssUnit","cm","mm","pc","em","rem","vw","vh","vmin","vmax","valueString","lengthWithunit","__importDefault","BarLoader_1","BeatLoader_1","BounceLoader_1","CircleLoader_1","ClimbingBoxLoader_1","ClipLoader_1","ClockLoader_1","DotLoader_1","FadeLoader_1","GridLoader_1","HashLoader_1","MoonLoader_1","PacmanLoader_1","PropagateLoader_1","PulseLoader_1","PuffLoader_1","RingLoader_1","RiseLoader_1","RotateLoader_1","ScaleLoader_1","SkewLoader_1","SquareLoader_1","SyncLoader_1","BarLoader","BeatLoader","CircleLoader","ClimbingBoxLoader","ClipLoader","ClockLoader","DotLoader","FadeLoader","GridLoader","HashLoader","MoonLoader","PacmanLoader","PropagateLoader","PulseLoader","PuffLoader","RingLoader","RiseLoader","RotateLoader","ScaleLoader","SkewLoader","SquareLoader","SyncLoader","checkIsAuthor","authorId","FEATURE_TESTER","ACIN_QUALITY_TOOLS_USER","CUSTOMER_QUALITY_TOOLS_USER","EMAIL_NOTIFICATIONS_USER","AccountRow","AccountTypeahead","AccountSuggestionFragmentDoc","SearchAccountDocument","searchAccounts","GetUserAuthorizationDocument","defaultContext","login","logout","hasRole","AuthContext","AuthProvider$1","authClient","onAuthenticated","onLogout","originUrlKey","setAccessToken","setUser","setIsAuthenticated","setLoading","permissionFromToken","globalUserPermissions","getUserAuthorization","getUserAuthorizationQuery","originUrl","checkIsAuthenticated","user_1","userMetadata","preferences","handleRedirectCallback","localStorage","getTokenSilently","user_metadata","sub","picture","totalInventories","roles","checkRoleAccess","loginWithRedirect","useAuth$1","__entries__","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","addObserver","connect_","removeObserver","disconnect_","updateObservers_","gatherActive","hasActive","broadcastActive","subtree","disconnect","instance_","SVGGraphicsElement","SVGElement","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","DOMRectReadOnly","contentRect","activeObservations_","observations_","callback_","controller_","callbackCtx_","clearActive","webpackPolyfill","deprecate","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","V","allocUnsafe","isMap","isSet","isConcatSpreadable","resetWarningCache","bool","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","checkPropTypes","PropTypes","thru","plant","ki","Mi","Ci","Ni","Li","Di","Ii","Vi","Bi","Ui","AbstractRecoilValue","RecoilState","RecoilValueReadOnly","isRecoilValue","recoilValues","registerNode","getNode","getNodeMaybe","NodeMissingError","DefaultValue","DEFAULT_VALUE","RecoilValueNotReady","setByAddingToSet","setByDeletingFromSet","mapBySettingInMap","mapByUpdatingInMap","mapByDeletingFromMap","mapByDeletingMultipleFromMap","getNodeLoadable","peekNodeLoadable","setNodeValue","setUnvalidatedAtomValue","atomValues","nonvalidatedAtoms","dirtyAtoms","getDownstreamNodes","getGraph","nodeToNodeSubscriptions","nodeDeps","addToDependencyMap","cloneGraph","graph","mergeDepsIntoDependencyMap","saveDependencyMapToStore","currentTree","nextTree","previousTree","Y","et","replaceState","nt","rt","getRecoilValueAsLoadable","setRecoilValue","setRecoilValueLoadable","markRecoilValueModified","setUnvalidatedRecoilValue","subscribeToRecoilValue","nodeToComponentSubscriptions","applyAtomValueWrites","ot","setPass","setFail","ut","st","lt","ft","stateID","transactionMetadata","makeEmptyTreeState","makeEmptyStoreState","knownAtoms","knownSelectors","transactionSubscriptions","nodeTransactionSubscriptions","queuedComponentCallbacks_DEPRECATED","suspendedComponentResolvers","graphsByVersion","versionsUsedByComponent","getNextTreeStateVersion","ht","vt","yt","gt","wt","Ot","St","_store","getLoadable","toPromise","isModified","isInitialized","loadable","subscribers","getSubscribers_UNSTABLE","At","Et","getStore_INTERNAL","subscribeToTransactions","addTransactionMetadata","getID","getID_INTERNAL","jt","xt","Snapshot","MutableSnapshot","freshSnapshot","cloneSnapshot","Tt","Rt","Pt","kt","Mt","Ct","Nt","Lt","Dt","It","Vt","Bt","Ut","Ft","Wt","zt","Ht","Gt","qt","Xt","Yt","Kt","Jt","Qt","Zt","te","ee","ne","setNotifyBatcherOfChange","oe","ae","ie","useStoreRef","useRecoilMutableSource","RecoilRoot","initializeState_DEPRECATED","initializeState","store_INTERNAL","createMutableSource","unstable_createMutableSource","setUnvalidatedAtomValues","sendEndOfBatchNotifications_FOR_TESTING","ue","ce","le","fe","pe","de","he","ve","be","ye","ge","we","Oe","Se","je","Ee","Ae","xe","Te","useMutableSource","unstable_useMutableSource","Re","$disableRecoilValueMutableSource_TEMP_HACK_DO_NOT_USE","Pe","ke","Me","Ce","persistence_UNSTABLE","Ne","unstable_batchedUpdates","shouldRestoreFromSnapshots","Le","De","Ie","recoilComponentGetRecoilValueCount_FOR_TESTING","useGotoRecoilSnapshot","useRecoilCallback","_len4","_key4","snapshot","gotoSnapshot","useRecoilInterface","getRecoilValue","getRecoilValueLoadable","getRecoilState","getRecoilStateLoadable","getSetRecoilState","getResetRecoilState","useRecoilSnapshot","useRecoilState","useRecoilStateLoadable","useRecoilTransactionObserver","previousSnapshot","useRecoilValue","useRecoilValueLoadable","useResetRecoilState","useSetRecoilState","useSetUnvalidatedAtomValues","useTransactionObservation_DEPRECATED","backButton","previousAtomValues","atomInfo","modifiedAtoms","useTransactionSubscription_DEPRECATED","Ve","Be","Ue","Fe","We","valueMaybe","valueOrThrow","errorMaybe","errorOrThrow","promiseMaybe","promiseOrThrow","He","ze","$e","Ge","loadableWithValue","loadableWithError","loadableWithPromise","loadableLoading","loadableAll","qe","Xe","Ye","_base","toBuiltInMap","Ke","Je","Qe","Ze","cn","sn","ln","pn","dn","startPerfBlock","yn","gn","mn","cacheImplementation_UNSTABLE","_ref10","_ref11","dangerouslyAllowMutability","wn","On","Sn","jn","En","An","xn","Tn","Rn","Pn","effects_UNSTABLE","_ref12","_ref13","setSelf","resetSelf","onSet","kn","allowFunctions","Mn","Cn","Nn","cacheImplementationForParams_UNSTABLE","Ln","Dn","In","Vn","Bn","Un","Fn","Wn","zn","$n","Hn","Gn","qn","Xn","waitForNone","_ref14","waitForAny","_ref15","waitForAll","_ref16","noWait","_ref17","Yn","Kn","Jn","Qn","Zn","er","nr","rr","ir","ur","sr","lr","fr","dr","useRecoilBridgeAcrossReactRoots_UNSTABLE","_ref18","atom","atomFamily","_ref19","selectorFamily","constSelector","errorSelector","readOnlySelector","useRecoilTransactionObserver_UNSTABLE","useTransactionObservation_UNSTABLE","useSetUnvalidatedAtomValues_UNSTABLE","vr","yr","gr","Or","Sr","jr","Er","Ar","clicked","dragEnd","xr","Tr","Rr","Pr","kr","Mr","Cr","Nr","Lr","Dr","Ir","Vr","Br","Ur","Fr","Wr","zr","$r","Hr","Gr","qr","Xr","Yr","Kr","Jr","Qr","Zr","eo","no","ro","oo","ao","uo","co","so","lo","po","ho","vo","bo","mo","throttle","wo","Oo","So","HTMLDocument","jo","Eo","Ao","To","Ro","Po","sham","resizeHandler","resizeObserver","targetDomEl","targetRef","findDOMNode","getRenderType","rafClean","onResize","handleWidth","handleHeight","createUpdater","skipOnMount","refreshMode","refreshRate","refreshOptions","unmounted","createRef","createResizeHandler","toggleObserver","cancelHandler","Mo","Co","No","Lo","Do","Io","Vo","Bo","Uo","zo","Fo","Wo","$o","Ho","Go","qo","Xo","Yo","Ko","Jo","Qo","screenX","screenY","touchstart","touchmove","touchend","bubbles","detail","Zo","ta","na","ra","oa","numberOfSlides","aa","carouselProps","ni","SLIDES_TO_SHOW","trackContainerRef","ia","ua","ca","la","va","ha","fa","pa","ba","numberOfInfiniteClones","ya","slides","INFINITE","ga","ma","wa","Oa","Sa","CLICK_TO_CHANGE","slideCustomProps","pageX","itemClassNames","ja","Ea","Aa","xa","Ta","Ra","stopAutoPlayOnHover","Pa","AUTOPLAY","trackCustomProps","ka","Ma","Ca","Na","La","Da","Ia","RTL","transformOffset","carouselClassNames","carouselCustomProps","Va","CENTERED","Ba","Ua","SLIDES_TO_SCROLL","Fa","Wa","za","$a","ARROWS","beforeCarouselItems","afterCarouselItems","Ha","FAST_SWIPE","Ga","qa","Xa","Ya","Ka","Ja","Qa","Za","ti","ei","oi","ui","ci","si","fi","currentSlideIndex","isDraggingEnabled","mi","vi","yi","gi","wi","carouselRef","carouselPlugins","nearestSlideIndex","setItemWidth","animationSpeed","slidesPerPage","Oi","Si","ji","Ei","Ai","xi","Ti","Ri","Pi","thumbnails","isSpeedy","speedy","ctr","_tag","createStyleElement","ownerNode","sheetForTag","isImportRule","needle","toSheet","Sheet","ruleSheet","stylisOptions","stylis","inserted","stylisPlugins","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","hyphenateRegex","animationRegex","isProcessableValue","processStyleName","processStyleValue","handleInterpolation","couldBeSelectorInterpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","labelPattern","serializeStyles","stringMode","identifierName","EmotionCacheContext","ThemeContext","CacheProvider","withEmotionCache","typePropName","Noop","cssProp","ele","possiblyStyleElement","Emotion","argsLength","createElementArgArray","createEmotionProps","Global","InnerGlobal","updater","insertable","classnames","cls","toAdd","ClassNames","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","unicode","svgPathData","hastCssPropertyMap","hastName","appendStyle","prevStyle","nextStyle","typeFactory","ok","anyFactory","matchesFactory","tests","convertAll","visitParents","CONTINUE","SKIP","EXIT","tree","one","subresult","toResult","IS_UNITLESS","asn1","bignum","constants","decoders","encoders","_createNamed","named","_initNamed","_getDecoder","enc","_getEncoder","reporter","Reporter","DecoderBuffer","EncoderBuffer","readUInt8","fail","_reporterState","assert","methods","_baseState","reverseArgs","optional","useDecoder","explicit","implicit","_wrap","stateProps","cstate","equal","_useArgs","def","_decode","wrapResult","prevObj","present","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","elem","partial","tagClass","tagClassByName","_reverse","tagByName","der","DERDecoder","DERNode","derDecodeTag","buf","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","readUInt16BE","numstr","printstr","identifiers","ident","subident","mon","sec","pem","PEMDecoder","base64","DEREncoder","two","encodedTag","encodeTag","lenOctets","writeUInt16BE","objid","numArray","dataBuffer","defaultBuffer","PEMEncoder","ctor","superCtor","super_","TempCtor","BN","endian","isBN","wordSize","parseHex4Bits","parseHexByte","lowerBound","parseBase","mul","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","limbLen","limbPow","imuln","_iaddn","dest","_expand","_normSign","groupSizes","groupBases","smallMulTo","carry","ncarry","rword","maxJ","groupSize","groupBase","modn","idivn","toBuffer","toArrayLike","ArrayType","reqLength","littleEndian","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","uor","iuand","iand","and","uand","iuxor","ixor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","comb10MulTo","al0","ah0","al1","ah1","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","bl0","bh0","bl1","bh1","bl2","bh2","bl3","bh3","bl4","bh4","bl5","bh5","bl6","bh6","bl7","bh7","bl8","bh8","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","mulTo","hncarry","bigMulTo","makeRBT","revBin","rb","permute","rbt","rws","iws","rtws","itws","rtwdf","itwdf","rtwdf_","itwdf_","guessLen13b","conjugate","normalize13b","ws","convert13b","stub","ph","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","extended","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","bhi","qj","divmod","divn","umod","divRound","dm","half","r2","egcd","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gten","gte","ltn","lten","lte","eqn","Red","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","outLen","mod3","nOne","lpow","inv","wnd","currentLen","mont","acceptedFilesArray","mimeType","baseMimeType","validType","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","_move","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","Rand","_rand","getBytes","getByte","crypto","getRandomValues","randomBytes","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s3","ksRow","RCON","INV_SBOX","INV_SUB_MIX","x8","AES","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","iv","decrypt","alloc","_cipher","ck","_ghash","_finID","ghash","toPad","ivBits","writeUIntBE","calcIv","_prev","_cache","_secCache","_decrypt","_alen","_mode","_authTag","_called","_update","rump","encrypt","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","padded","unpad","setAutoPadding","setTo","autoPadding","PADDING","padBuff","writeUInt8","ZEROES","_multiply","lsbVi","Zi","abl","pad","encryptStart","encryptByte","byteParam","shiftIn","getBlock","chunkNum","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","ivLen","CipherBase","des","instantiate","EDE","modeName","_des","des3","getr","priv","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","exponent1","exponent2","createHash","stream","verify","algorithms","Sign","algorithm","Writable","_hashType","_hash","_signType","Verify","createSign","createVerify","_write","digest","sig","sigBuffer","createHmac","EC","parseKeys","algo","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","privateKey","toDER","ecSign","priv_key","dsaSign","checkValue","pub","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","signature","montp","dsaVerify","padNum","SlowBuffer","bufferEq","install","origBufEqual","origSlowBufEqual","ieee754","customInspectSymbol","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","encodingOrOffset","encoding","isEncoding","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","numberIsNaN","fromObject","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","thisStart","thisEnd","thisCopy","targetCopy","hexSliceLookupTable","checkOffset","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","getMessage","Base","addNumericalSeparator","ERR_OUT_OF_RANGE","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","i16","BufferBigIntNotDefined","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","_flush","fin","comma","padLeft","padRight","isNull","isNullOrUndefined","isPrimitive","elliptic","ECDH","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","ec","formatReturnValue","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","inenc","keyFromPublic","getPublic","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","MD5","RIPEMD160","sha","alg","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","dirtyNumber","subMilliseconds","dirtyAmount","addMilliseconds","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getUTCISOWeek","fourthOfJanuary","startOfUTCISOWeekYear","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","getUTCWeek","startOfUTCWeekYear","addLeadingZeros","targetLength","signedYear","dayPeriodEnumValue","numberOfDigits","dayPeriodEnum","localize","ordinalNumber","lightFormatters","signedWeekYear","weekYear","isoWeek","getUTCDayOfYear","localDayOfWeek","isoDayOfWeek","dayPeriod","_localize","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","originalDate","dirtyDelimiter","absOffset","dateLongFormatter","formatLong","timeLongFormatter","longFormatters","dateTimeFormat","matchResult","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","valueCallback","formatDistance","formatRelative","_date","_baseDate","rem100","narrow","abbreviated","wide","pm","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","getTimezoneOffsetInMilliseconds","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","argStr","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","defaultArrayMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","deepmerge_1","CBCState","_cbcInit","_cbcState","inp","inOff","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_pad","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k1","k2","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","generatePrime","DH","ENCODINGS","gen","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","simpleSieve","fermatTest","checkPrime","__gen","_gen","secret","getPrime","front","getGenerator","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","n2","addPxToStyle","camel","detect","getParamBytesForAlg","MAX_OCTET","signatureAsBuffer","countPadding","derToJose","paramBytes","maxEncodedParamLength","inputLength","TAG_SEQ","seqLength","rLength","rOffset","sLength","sOffset","rPadding","sPadding","joseToDer","signatureBytes","rsBytes","shortLength","getParamSize","paramBytesForAlg","ES256","ES384","ES512","eddsa","getNAF","getJSF","BaseCurve","conf","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","_fixedNafMul","doubles","_getDoubles","naf","nafW","repr","jpoint","mixedAdd","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","jb","decodePoint","pointFromX","encodeCompressed","precompute","_getBeta","_hasDoubles","dbl","EdwardsCurve","twisted","mOneA","oneC","Point","zOne","_mulA","_mulC","rhs","lhs","pointFromY","isInfinity","fromJSON","_extDbl","nx","ny","nz","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","zi","eqXToP","xc","edwards","MontCurve","i4","a24","diffAdd","jumlAdd","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","len1","_endoSplit","v1","v2","q1","q2","_endoWnafMulAdd","npoints","ncoeffs","pre","endoMul","obj2point","ys1","dyinv","_precompute","negate","zinv","zinv2","pz2","z2","u1","u2","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","yyyy","yyyy8","c8","gamma","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","yyu4","kbase","z3","pz3","zs","PresetCurve","defineCurve","sha256","sha384","sha512","HmacDRBG","KeyPair","Signature","nh","keyPair","fromPrivate","fromPublic","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","ns2","_truncateToN","truncOnly","bkey","ns1","kp","kpX","recoveryParam","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","privEnc","pubEnc","derive","_importDER","Position","place","getLength","octetLen","rmPadding","constructLength","octets","LN2","backHalf","parseBytes","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","Rencoded","encodePoint","s_","pubBytes","makeSignature","SG","intFromLE","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","cachedProperty","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","minAssert","minUtils","zero2","m8","m14","m24","computer","ReflectOwnKeys","ReflectApply","receiver","NumberIsNaN","EventEmitter","emitter","errorListener","eventTargetAgnosticAddListener","flags","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","salt","keyBits","used","keyStart","ivStart","ExactTrie","trie","putAll","valuesIsArray","hasAll","candidate","checkpointChar","getAllWithCheckpoints","hasWithCheckpoints","hasAllWithCheckpoints","hasOwn","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","getProperty","copyIsArray","autoBom","createEvent","initMouseEvent","saveAs","HTMLAnchorElement","rel","iec","jedec","unix","localeOptions","spacer","fullform","fullforms","roundingMethod","padEnd","deflate","fieldNames","_inflate","_deflate","_interopRequireDefault","inflate","asyncIterator","SYMBOL_TO_STRING_TAG","getLocation","lineRegexp","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","_wrapNativeSuper","Class","_construct","_getPrototypeOf","_setPrototypeOf","_isNativeReflectConstruct","GraphQLError","_Error","Derived","hasNativeReflectConstruct","Super","NewTarget","_createSuper","originalError","_nodeLocations","_nodeLocations2","_nodeLocations3","undefinedIfEmpty","nodeLocations","_this$nodes","originalExtensions","_i4","_error$nodes2","_i6","_error$locations2","printError","syntaxError","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","BLOCK_STRING","COMMENT","devAssert","Source","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Lexer","startOfFileToken","lastToken","advance","lookahead","_token$next","readToken","printCharCode","lexer","bodyLength","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","char2hex","invalidSequence","isSource","_lexer","parseName","expectToken","parseDocument","many","parseDefinition","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","OPERATION_DEFINITION","operation","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","expectOptionalToken","parseValueLiteral","VARIABLE","SELECTION_SET","selections","parseSelection","parseFragment","parseField","alias","nameOrAlias","parseArguments","isConst","parseConstArgument","ARGUMENT","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","BOOLEAN","NULL","LIST","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","ENUM_VALUE_DEFINITION","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","processFragments","seenKeys","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","allowLegacyFragmentVariables","workSet","endToken","stripLoc","gql","literals","gql_1","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","throwIfNotStringOrBuffer","_digest","ripemd","hmac","sha1","sha224","ripemd160","BlockHash","pendingTotal","outSize","padLength","_delta8","_delta32","join32","rotl32","sum32","sum32_3","sum32_4","Kh","Ah","Bh","Ch","Dh","Eh","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","al","eh","fl","gh","gl","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","hastToReact","spaces","commas","toH","parentSchema","addAttribute","vdom","subprop","vue","hyperscript","commaSeparated","react","styleReplacer","parseStyle","mustUseProperty","$0","$1","_isVue","vd","xtend","own","nodeSchema","allowDoctypes","handleDoctypeName","allowComments","handleCommentValue","handleTagName","reqs","allowed","toPropertyValueMap","handlePropertyValues","handlePropertyValue","allow","replacement","colon","questionMark","numberSign","slash","handleProtocol","clobber","clobberPrefix","tagNames","ancestors","isAbsolute","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","valueEqual","aValue","bValue","addLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","allKeys","fromIndex","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","goForward","unblock","unlisten","upperBound","createMemoryHistory","_props$initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","predResist","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","kmac","reseed","addEnc","reactIs","REACT_STATICS","childContextTypes","contextTypes","getDefaultProps","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","inheritedComponent","targetStatics","sourceStatics","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","EMPTY_STRING","lineno","errorsList","silent","declaration","decls","declarations","jws","jwt","JsonWebTokenError","NotBeforeError","TokenExpiredError","expiredAt","semver","satisfies","iat","SemVer","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_BUILD_LENGTH","safeRe","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRe","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","major","patch","prerelease","valid","clean","compareMain","comparePre","compareIdentifiers","inc","version1","version2","defaultResult","numeric","anum","bnum","neq","Comparator","comp","ANY","rcompareIdentifiers","compareLoose","rcompare","rsort","parseRange","isX","hyphenReplace","fM","fm","fpr","fb","tM","tm","tp","tpr","testSet","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","intersects","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","compRe","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","r1","timespan","PS_SUPPORTED","SUPPORTED_ALGS","sign_options_schema","expiresIn","notBefore","audience","issuer","jwtid","noTimestamp","keyid","mutatePayload","registered_claims_schema","nbf","parameterName","options_to_payload","options_for_objects","secretOrPrivateKey","typ","kid","failure","validatePayload","invalid_options","validateOptions","claim","PUB_KEY_ALGS","RSA_KEY_ALGS","HS_ALGS","jwtString","secretOrPublicKey","clockTimestamp","decodedToken","secretCallback","hasSignature","ignoreNotBefore","clockTolerance","ignoreExpiration","audiences","aud","targetAudience","iss","jti","maxAge","maxAgeTimestamp","bufferEqual","formatEcdsa","util","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","MSG_INVALID_SIGNER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","typeError","asymmetricKeyType","checkIsPrivateKey","fromBase64","toBase64","base64url","errMsg","normalizeInput","createHmacSigner","checkIsSecretKey","createHmacVerifier","computedSig","createKeySigner","signer","createKeyVerifier","publicKey","verifier","createPSSKeySigner","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","createECDSAVerifer","createNoneSigner","createNoneVerifier","signerFactories","ps","es","none","verifierFactories","SignStream","VerifyStream","ALGORITHMS","Stream","DataStream","readable","nextTick","jwa","jwsSign","secretOrKey","securedInput","encodedHeader","encodedPayload","jwsSecuredInput","secretStream","JWS_REGEX","safeJsonParse","headerFromJWS","jwsSig","signatureFromJWS","isValidJws","jwsVerify","securedInputFromJWS","jwsDecode","payloadFromJWS","tracking","setItem","parseValue","onstorage","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","nativeMax","nativeMin","isBinary","leadingEdge","MAX_INTEGER","argsTag","stringTag","baseIsNaN","baseValues","isArrayLikeObject","guard","toFinite","baseFindIndex","baseIndexOf","funcProto","objectCtorString","getPrototype","isHostObject","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","baseForOwn","createBaseFor","arrayTag","objectTag","isMasked","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","othCriteria","ordersLength","cacheHas","stubArray","mapTag","setTag","weakMapTag","dataViewTag","stubFalse","baseIsTypedArray","HASH_UNDEFINED","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","MAX_ARRAY_LENGTH","wrapFlags","boolTag","dateTag","errorTag","numberTag","regexpTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","cloneableTags","stringEscapes","freeParseFloat","moduleExports","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","arrayEach","arrayEachRight","arrayEvery","arrayIncludes","arrayIncludesWith","arrayReduce","initAccum","arrayReduceRight","asciiSize","baseProperty","baseFindKey","strictIndexOf","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTrim","trimmedEndIndex","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","replaceHolders","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","oldDash","objectCreate","spreadableSymbol","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssign","copyObject","baseAt","lower","upper","baseClone","isDeep","isFlat","isFull","initCloneArray","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","copySymbols","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","initCloneByTag","subValue","getAllKeysIn","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseForRight","baseFunctions","baseGt","baseHas","baseIntersection","arrays","caches","baseInvoke","othProps","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","getIteratee","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsUndefined","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","typedArray","composeArgs","partials","holders","isCurried","argsIndex","holdersLength","leftIndex","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","isNew","createAggregator","createAssigner","assigner","isIterateeCall","createCaseFirst","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","getFuncName","funcName","isLaziable","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","charsLength","createRange","baseRange","createRelationalOperation","wrapFunc","isCurry","setWrapToString","createRound","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","otherFunc","isMaskable","otherArgs","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","differenceBy","differenceWith","findLastIndex","intersectionBy","intersectionWith","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xorBy","xorWith","zip","zipWith","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","bindKey","WRAP_BIND_FLAG","defer","overArgs","transforms","funcsLength","partialRight","rearg","iteratorToArray","toLength","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","invoke","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","upperFirst","lowerCase","lowerFirst","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flowRight","methodOf","mixin","over","overEvery","overSome","rangeRight","augend","addend","divide","dividend","multiplier","multiplicand","minuend","subtrahend","castArray","cond","conforms","baseConforms","curry","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","mapValues","matchesProperty","nthArg","omitBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","tap","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isEqualWith","isMatchWith","isNative","isNil","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","strLength","radix","floating","reduceRight","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","imports","importsKeys","importsValues","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toSafeInteger","omission","uniqueId","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","ARRAY16","rotl","fnF","fnG","fnH","fnI","getter","normalise","getterFactory","ondefinition","gather","canContainEols","autolink","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","blockQuote","characterEscape","characterReference","codeFenced","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeIndented","codeText","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreakEscape","hardBreak","hardBreakTrailing","htmlFlow","htmlFlowData","htmlText","htmlTextData","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","thematicBreak","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","onexitlabeltext","lineEnding","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","compile","tokenStack","listStack","prepareList","sliceSerialize","stringifyPosition","tailIndex","tailEvent","firstBlankLineIndex","atMarker","containerBalance","listSpread","_spread","lang","normalizeIdentifier","referenceType","safeFromInt","ordered","compiler","postprocess","preprocessor","backReference","footnoteById","footnoteOrder","hProperties","footnoteReference","dangerous","augment","revert","ignore","blockquote","break","footnote","imageReference","inlineCode","linkReference","toml","yaml","footnoteDefinition","listItemLoose","listLoose","alignLength","allowDangerousHTML","deprecationWarningIssued","allowDangerousHtml","unknownHandler","passThrough","onfootnotedefinition","hChildren","generated","foot","unknown","subtype","encodeCache","exclude","keepEscaped","defaultChars","getEncodeCache","componentChars","asciiAlpha","regexCheck","asciiAlphanumeric","asciiAtext","asciiDigit","asciiHexDigit","asciiPunctuation","unicodePunctuationRegex","unicodePunctuation","unicodeWhitespace","text$1","attention","headingAtx","labelEnd","labelStartImage","labelStartLink","setextUnderline","contentInitial","flowInitial","insideSpan","null","markdownLineEnding","factorySpace","tokenize","effects","contentStart","constructs","consume","partialBlankLine","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","containerState","continuation","inspectContinue","inspectLess","currentConstruct","concrete","flowContinue","inspectDone","interrupt","interruptible","containerConstruct","inspectFlowEnd","_closeFlow","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","_tokenizer","continueFlow","documentAfterPeek","defineSkip","sliceStream","nok","afterConstruct","initializeFactory","createResolver","notText","atBreak","resolveAllLineSuffixes","extraResolver","bufferIndex","eventIndex","_bufferIndex","combineExtensions","createTokenizer","miniflat","subtokenize","atCarriageReturn","chunkedPush","chunkedSplice","classifyCharacter","sequence","_open","_close","openingSequence","closingSequence","nextEvents","asciiControl","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","markdownSpace","decodeEntity","_interopDefaultLegacy","decodeEntity__default","markdownLineEndingOrSpace","prefixSize","closingFenceConstruct","closingSequenceStart","sizeOpen","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","contentContinue","indentedContentConstruct","afterPrefix","tailExitIndex","headEnterIndex","contentEnd","continuationConstruct","factoryDestination","factoryLabel","factoryWhitespace","factoryTitle","labelAfter","titleConstruct","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","markerType","labelEscape","atFirstTitleBreak","atTitleBreak","titleEscape","fenceOpenInside","headingBreak","htmlBlockNames","htmlRawNames","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","resolveTo","returnState","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","commentStart","commentStartDash","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","_used","destinationAfter","afterLabel","sizeChunks","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","parameters","serializeChunks","sliceChunks","initialize","resolveAllConstructs","accountForPotentialSkip","constructFactory","addResult","onsuccessfulcheck","chunkIndex","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPrevious","startCurrentConstruct","startEventsIndex","startStack","called","atTab","startBufferIndex","endBufferIndex","subcontent","startPositions","tokenizer","childEvents","jumps","gaps","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","otherIndex","otherEvent","subevents","_movePreviousLineEndings","brorand","MillerRabin","_randbelow","min_bytes","_randrange","rone","n1","rn1","getDivisor","msAbs","fmtLong","fmtShort","propIsEnumerable","test1","test2","test3","shouldUseNative","toObject","intKey","hasShallowProperty","getShallowPropertySafely","objectPath","getShallowProperty","doNotReplace","currentPath","includeInheritedProps","ensureExists","coalesce","nextObj","withInheritedProps","certificate","RSAPrivateKey","seq","RSAPublicKey","AlgorithmIdentifier","null_","PublicKey","bitstr","PrivateKeyInfo","octstr","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECParameters","namedCurve","ECPrivateKey","asn","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","rdnSequence","Validity","Extension","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","cipher","match2","aesid","fixProc","compat","passphrase","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","keylen","characters","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escapeGroup","escapeString","encodeURIComponentPretty","pretty","attachKeys","sensitive","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","isWindows","normalizeArray","allowAboveRoot","trimArray","splitDeviceRe","splitTailRe","win32","win32SplitPath","device","result2","win32StatPath","isUnc","normalizeUNCRoot","resolvedDevice","resolvedTail","resolvedAbsolute","cwd","trailingSlash","joined","lowerFrom","lowerTo","lowerFromParts","lowerToParts","samePartsLength","outputParts","_makeLong","resolvedPath","dirname","extname","pathObject","pathString","allParts","splitPathRe","posix","posixSplitPath","ZERO_BUF","checkParameters","defaultEncoding","subtle","toBrowser","getNextTick","browserPbkdf2","iterations","importKey","deriveBits","prom","checkNative","resp","MAX_ALLOC","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","run","DK","block1","destPos","hLen","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","uptime","titleCase","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","argv","chdir","umask","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","propFullName","getShim","ReactPropTypes","bigint","DefinedInfo","Type","camelcase","datasetToProperty","kebab","datasetToAttribute","xlink","booleanish","spaceSeparated","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaColCount","ariaColIndex","ariaColSpan","ariaDescribedBy","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSetSize","ariaSort","caseInsensitiveTransform","overloadedBoolean","acceptcharset","classname","htmlfor","httpequiv","abbr","acceptCharset","accessKey","allowFullScreen","allowPaymentRequest","allowUserMedia","autoCapitalize","autoPlay","charSet","cite","contentEditable","controlsList","decoding","dirName","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","hrefLang","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","itemProp","itemRef","itemScope","manifest","muted","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onCanPlay","onCanPlayThrough","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragExit","onDurationChange","onEmptied","onEnded","onFormData","onHashChange","onInput","onInvalid","onKeyPress","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseOut","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onSecurityPolicyViolation","onSeeked","onSeeking","onSlotChange","onStalled","onStorage","onSuspend","onTimeUpdate","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","ping","playsInline","poster","preload","referrerPolicy","rowSpan","sandbox","seamless","spellCheck","srcDoc","srcLang","srcSet","typeMustMatch","useMap","aLink","bgColor","bottomMargin","cellPadding","cellSpacing","charOff","classId","codeBase","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","profile","rev","rightMargin","scrolling","standby","topMargin","valueType","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","security","unselectable","caseSensitiveTransform","commaOrSpaceSeparated","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","floodColor","fontSizeAdjust","fontStretch","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onFocusIn","onFocusOut","onMouseWheel","onRepeat","overlinePosition","overlineThickness","paintOrder","panose1","renderingIntent","stopColor","strikethroughPosition","strikethroughThickness","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","textAnchor","textRendering","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","xHeight","playbackOrder","timelineBegin","about","accumulate","alphabetic","amplitude","azimuth","bandwidth","baseFrequency","baseProfile","bias","calcMode","clipPathUnits","contentScriptType","contentStyleType","defaultAction","descent","diffuseConstant","edgeMode","editable","externalResourcesRequired","filterRes","focusHighlight","glyphRef","gradientTransform","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","numOctaves","orient","pathLength","patternTransform","pitch","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","stdDeviation","stemh","stemv","stitchTiles","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan","Schema","checksLength","powers","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xmlLang","xmlBase","xmlSpace","xmlnsxlink","xmlnsXLink","i2ops","mgf","withPublic","zBuffer","iHash","maskedSeed","maskedDb","db","oaep","pkcs1","paddedMsg","hLen2","dblen","cur","nonZero","vendors","caf","frameDuration","_now","polyfill","MAX_BYTES","MAX_UINT32","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","_react","_getRequireWildcardCache","hasPropertyDescriptor","_interopRequireWildcard","_propTypes","_arrays","_Autowhatever","alwaysTrue","REASON_SUGGESTIONS_REVEALED","REASON_INPUT_FOCUSED","REASON_INPUT_CHANGED","REASON_ESCAPE_PRESSED","_Component","_alwaysRenderSuggestions","alwaysRenderSuggestions","justClickedOnSuggestionsContainer","suggestionsContainer","autowhatever","sectionIndex","updateHighlightedSuggestion","pressedSuggestion","justSelectedSuggestion","justMouseEntered","multiSection","keepSuggestionsOnSelect","shouldKeepSuggestionsOnSelect","suggestionValue","resetHighlightedSuggestion","_this$props2","focusInputOnSuggestionClick","_this$getSuggestionIn","getSuggestionIndices","findSuggestionElement","suggestionIndex","clickedSuggestion","getSuggestion","clickedSuggestionValue","maybeCallOnChange","closeSuggestions","_this$props3","highlightedSuggestion","getHighlightedSuggestion","highlightedSectionIndex","highlightedSuggestionIndex","valueBeforeUpDown","blurEvent","onSuggestionMouseEnter","onSuggestionMouseLeave","onSuggestionMouseDown","onSuggestionTouchStart","onSuggestionTouchMove","onSuggestionClick","getQuery","justPressedUpDown","onDocumentMouseDown","onDocumentMouseUp","itemsContainer","shouldResetHighlighting","highlightFirstSuggestion","willRenderSuggestions","revealSuggestions","_this$props4","onSuggestionHighlighted","shouldResetValueBeforeUpDown","_this$props5","getSectionSuggestions","_this$state","suggestionElement","startNode","_this$props$inputProp","_this$props6","renderSectionTitle","_this$state2","_onFocus","_onKeyDown","autowhateverInputProps","newHighlightedSectionIndex","newHighlightedItemIndex","getSuggestionValueByIndex","_newValue","willCloseSuggestions","renderSuggestionData","renderItemsContainer","renderItemData","getSectionItems","highlightedItemIndex","itemProps","mapToAutowhateverTheme","storeAutowhateverRef","_sectionIterator","_reactThemeable","_SectionTitle","_ItemList","Autowhatever","userRef","section","isInputFocused","nextPrev","_this$sectionIterator2","sectionIterator","setSectionsItems","setSectionIterator","ensureHighlightedItemIsVisible","sectionsItems","sectionsLengths","allSectionsAreEmpty","itemsCount","keyPrefix","sectionKeyPrefix","isFirstSection","onHighlightedItemChange","getItemId","storeItemsListReference","itemOffsetRelativeToContainer","renderedItems","renderSections","ariaActivedescendant","itemsContainerId","storeInputReference","storeItemsContainerReference","containerOpen","inputOpen","inputFocused","itemsContainerOpen","itemsList","itemFirst","itemHighlighted","sectionContainer","sectionContainerFirst","sectionTitle","_compareObjects","storeItemReference","_Item","ItemsList","sectionPrefix","isItemPropsFunction","isFirst","itemPropsObj","allItemProps","storeHighlightedItemReference","SectionTitle","aValueKeys","bValueKeys","aValueKey","suggestionsContainerOpen","suggestionsList","suggestionFirst","suggestionHighlighted","checkTimeout","containerHeight","isFullyOpened","isFullyClosed","hasOpened","hasClosed","isOpenining","isClosing","initialStyle","onRefContainer","onRefContent","_Collapse","_React$PureComponent","isResting","isInitialRender","getInitialStyle","fromClientRect","Uint16Array","errorValue","highStart","highValueIndex","Uint32Array","STRING_TOKEN","BAD_STRING_TOKEN","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","HASH_TOKEN","DELIM_TOKEN","AT_KEYWORD_TOKEN","PREFIX_MATCH_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUFFIX_MATCH_TOKEN","SUBSTRING_MATCH_TOKEN","DIMENSION_TOKEN","PERCENTAGE_TOKEN","NUMBER_TOKEN","FUNCTION","FUNCTION_TOKEN","IDENT_TOKEN","COLUMN_TOKEN","URL_TOKEN","BAD_URL_TOKEN","CDC_TOKEN","CDO_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","UNICODE_RANGE_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","consumeName","reconsumeCodePoint","consumeNumericToken","consumeIdentLikeToken","consumeUnicodeRangeToken","consumeWhiteSpace","consumeUrlToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","consumeNumber","_tokens","parseComponentValue","parseValues","parseComponentValues","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","aA","AA","cA","TRANSPARENT","tA","eA","rA","nA","iA","oA","sA","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","VALUE","IDENT_VALUE","TYPE_VALUE","TOKEN_VALUE","BORDER_BOX","PADDING_BOX","CONTENT_BOX","uA","lA","hA","fA","dA","pA","BA","wA","mA","optimumDistance","optimumCorner","QA","LINEAR_GRADIENT","CA","yA","vA","FA","SUPPORT_RANGE_BOUNDS","selectNode","SUPPORT_SVG_DRAWING","SUPPORT_FOREIGNOBJECT_DRAWING","SUPPORT_CORS_IMAGES","SUPPORT_RESPONSE_TYPE","SUPPORT_CORS_XHR","UA","NA","_caches","EA","getOrigin","isSameOrigin","_origin","setContext","_current","attachInstance","detachInstance","addImage","_A","xA","loadImage","SA","allowTaint","IA","imageTimeout","bA","LA","HA","TA","RA","CIRCLE","FARTHEST_CORNER","ELLIPSE","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","RADIAL_GRADIENT","OA","KA","MA","PA","DA","kA","REPEAT","NO_REPEAT","REPEAT_X","REPEAT_Y","zA","jA","qA","AUTO","CONTAIN","COVER","VA","XA","GA","JA","WA","YA","ZA","$A","SOLID","LEFT","RIGHT","INLINE_START","INLINE_END","STRICT","INSIDE","OUTSIDE","DISC","SQUARE","DECIMAL","CJK_DECIMAL","DECIMAL_LEADING_ZERO","LOWER_ROMAN","UPPER_ROMAN","LOWER_GREEK","LOWER_ALPHA","UPPER_ALPHA","ARABIC_INDIC","ARMENIAN","BENGALI","CAMBODIAN","CJK_EARTHLY_BRANCH","CJK_HEAVENLY_STEM","CJK_IDEOGRAPHIC","DEVANAGARI","ETHIOPIC_NUMERIC","GEORGIAN","GUJARATI","GURMUKHI","HEBREW","HIRAGANA","HIRAGANA_IROHA","JAPANESE_FORMAL","JAPANESE_INFORMAL","KANNADA","KATAKANA","KATAKANA_IROHA","KHMER","KOREAN_HANGUL_FORMAL","KOREAN_HANJA_FORMAL","KOREAN_HANJA_INFORMAL","LAO","LOWER_ARMENIAN","MALAYALAM","MONGOLIAN","MYANMAR","ORIYA","PERSIAN","SIMP_CHINESE_FORMAL","SIMP_CHINESE_INFORMAL","TAMIL","TELUGU","THAI","TIBETAN","TRAD_CHINESE_FORMAL","TRAD_CHINESE_INFORMAL","UPPER_ARMENIAN","DISCLOSURE_OPEN","DISCLOSURE_CLOSED","VISIBLE","HIDDEN","SCROLL","BREAK_WORD","CENTER","STATIC","RELATIVE","ABSOLUTE","FIXED","STICKY","LOWERCASE","UPPERCASE","CAPITALIZE","matrix3d","COLLAPSE","BREAK_ALL","KEEP_ALL","ITALIC","OBLIQUE","backgroundOrigin","borderBottomRightRadius","borderBottomLeftRadius","borderTopStyle","borderRightStyle","borderLeftStyle","float","cssFloat","lineBreak","listStyleImage","listStylePosition","listStyleType","overflowWrap","textDecorationColor","textDecorationLine","textShadow","isTransparent","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","quotes","counterIncrement","counterReset","textNodes","replaceChild","setStart","setEnd","textBounds","splitText","currentSrc","intrinsicWidth","intrinsicHeight","baseVal","selectedIndex","TEXT_NODE","counters","getCounterValue","getCounterValues","integers","scrolledElements","referenceElement","quoteDepth","toIFrame","scrollX","onclone","clonedReferenceElement","ready","adoptNode","createElementClone","createCanvasClone","createStyleClone","inlineImages","putImageData","resolvePseudoContent","BEFORE","ignoreElements","copyStyles","AFTER","internalSubset","publicId","systemId","VECTOR","BEZIER_CURVE","startControl","endControl","subdivide","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","getParentEffects","listValue","_document","parseMetrics","baseline","middle","getMetrics","_activeEffects","fontMetrics","applyEffects","popEffect","applyEffect","renderStack","renderStackContent","renderNode","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","createFontStyle","renderTextNode","renderReplacedElement","formatPath","renderRepeat","resizeImage","renderBackgroundImage","gA","addColorStop","renderBorder","Qi","logging","removeContainer","foreignObjectRendering","getTopics","compress","compressPdf","userUnit","putOnlyUsedFonts","__private__","PubSub","getPdfVersion","setPdfVersion","a10","b10","c3","c4","c5","c6","c7","c9","c10","legal","ledger","tabloid","getPageFormats","getPageFormat","f2","f3","getFileId","convertDateToPDFDate","convertPDFDateToDate","setCreationDate","getCreationDate","padd2","setCustomOutputDestination","resetCustomOutputDestination","getArrayBuffer","getStandardFonts","setFontSize","getFontSize","R2L","setR2L","getR2L","setZoomMode","getZoomMode","setPageMode","getPageMode","setLayoutMode","getLayoutMode","setDisplayMode","author","creator","getDocumentProperty","getDocumentProperties","setDocumentProperties","setProperties","setDocumentProperty","hotfixes","newObjectDeferred","newAdditionalObject","objId","decodeColorString","encodeColorString","ch1","ch2","ch3","ch4","pdfColorType","RGBColor","getFilters","putStream","alreadyAppliedFilters","addLength1","additionalKeyValues","API","processDataByFilters","reverseChain","putPage","mediaBox","contentsObjId","topRightX","bottomLeftX","topRightY","bottomLeftY","rootDictionaryObjId","resourceDictionaryObjId","cropBox","bleedBox","trimBox","artBox","pageContext","pageNumber","putPages","postScriptName","fontName","isStandardFont","metadata","pdfEscape","sourceEncoding","outputEncoding","autoencode","codePages","noBOM","beginPage","getNumberOfPages","disableWarning","noFallback","putInfo","putCatalog","putTrailer","putHeader","putXRef","buildDocument","isAlreadyPutted","objectNumber","getBlob","getPageInfo","getPageInfoByObjId","getCurrentPageInfo","addPage","setPage","insertPage","movePage","deletePage","lineHeightFactor","TabLen","scaleFactor","splitTextToSize","mutex","activeFontKey","activeFontSize","charSpace","renderingMode","usedRenderingMode","getStringUnitWidth","isHex","lstext","clip_fixed","isValidStyle","roundedRect","SQRT2","setFont","setFontStyle","setFontType","getFontList","setLineWidth","setLineHeightFactor","getLineHeightFactor","getHorizontalCoordinate","getVerticalCoordinate","getHorizontalCoordinateString","getVerticalCoordinateString","strokeColor","getDrawColor","setStrokeColor","setDrawColor","fillColor","getFillColor","setFillColor","setTextColor","getCharSpace","setCharSpace","CapJoinStyles","butt","but","miter","projecting","project","bevel","setLineCap","setLineJoin","setMiterLimit","returnPromise","unload","getFont","getCoordinateString","collections","newObjectDeferredBegin","pages","getPDFVersion","hasHotfix","dictionary","__acroform__","BBox","setBit","clearBit","getBit","getBitForPdf","setBitForPdf","clearBitForPdf","calculateCoordinates","lowerLeft_X","lowerLeft_Y","upperRight_X","upperRight_Y","appearanceStreamContent","DV","maxFontSize","xForms","acroFormDictionaryRoot","printedOut","acroformPlugin","Fields","hasAnnotation","annotations","_eventID","Kids","Rect","createDefaultAppearanceStream","getKeyValueListForStream","hasAppearanceStream","FieldNum","arrayToPdfArray","writeable","Ff","FT","addOption","removeOption","combo","edit","pushButton","optionName","appearanceState","_AppearanceType","RadioButton","createAppearanceStream","setAppearance","getCA","createOption","CheckBox","YesNormal","YesPushDown","Off","OffPushDown","Bezier_C","Cross","calculateCross","addField","addButton","addTextField","addChoiceField","ChoiceField","ListBox","ComboBox","EditBox","PushButton","PasswordField","AcroForm","Appearance","AcroFormChoiceField","AcroFormListBox","AcroFormComboBox","AcroFormEditBox","AcroFormButton","AcroFormPushButton","AcroFormRadioButton","AcroFormCheckBox","AcroFormTextField","AcroFormPasswordField","AcroFormAppearance","PNG","TIFF","JPEG","JPEG2000","GIF87a","GIF89a","BMP","getImageFileTypeByImageData","arrayBufferToBinaryString","color_spaces","INDEXED","pal","DEVICE_CMYK","bpc","dp","trns","smask","loadFile","DEVICE_RGB","DEVICE_GRAY","CAL_GREY","CAL_RGB","LAB","ICC_BASED","PATTERN","SEPARATION","DEVICE_N","DCT_DECODE","FLATE_DECODE","LZW_DECODE","JPX_DECODE","JBIG2_DECODE","ASCII85_DECODE","ASCII_HEX_DECODE","RUN_LENGTH_DECODE","CCITT_FAX_DECODE","image_compression","FAST","MEDIUM","SLOW","sHashCode","validateStringAsBase64","extractInfoFromBase64DataURI","extractImageFromDataUrl","supportsArrayBuffer","Int8Array","Uint8ClampedArray","Int16Array","Int32Array","Float32Array","Float64Array","binaryStringToUint8Array","arrayBufferToBase64","createImageInfo","imageData","compression","convertStringToImageData","processJPEG","numcomponents","processJPG","getImageProperties","fileType","colorSpace","compressionMode","bitsPerComponent","_nameMap","magFactor","createAnnotation","textWithLink","getTextWidth","__arabicParser__","isInArabicSubstitutionA","isArabicLetter","isArabicEndLetter","isArabicAlfLetter","arabicLetterHasIsolatedForm","arabicLetterHasFinalForm","arabicLetterHasInitialForm","arabicLetterHasMedialForm","resolveLigatures","isArabicDiacritic","getCorrectForm","processArabic","autoPrint","addJS","pageWrapXEnabled","pageWrapX","pageWrapYEnabled","pageWrapY","context2d","_canvas","setHeaderFunction","getTextDimensions","table_font_size","cellAddPage","cellInitialize","printHeaders","tableHeaderRow","printHeaderRow","printingHeaderRow","arrayMax","autoSize","lnMod","calculateLineHeight","setTableHeaderRow","lastCellPos","table_x","table_y","isStrokeTransparent","isFillTransparent","lineCap","clip_path","miterLimit","ignoreClearRect","arial","verdana","helvetica","fixed","monospace","courier","cursive","fantasy","serif","applyToPoint","isIdentity","counterclockwise","strokeRect","ctxStack","isCanvasGradient","strokeText","decompose","shx","sy","applyToRectangle","autoPaging","posX","posY","deltas","colorStops","shy","predictor","adler32cs","Deflater","overrideMimeType","loadImageFile","enableLinks","html2canvas","jsPDF","toContainer","toCanvas","toImg","toPdf","thenList","setPageSize","javascriptEnabled","onrendered","isHtml2CanvasLoaded","toContext2d","outputImg","outputPdf","doCallback","getPageSize","updateProgress","thenCore","thenExternal","catchExternal","using","worker","createNamedDestinations","makeRef","namesOid","genIds_r","renderRoot","objStart","count_r","objEnd","makeString","LOG2E","processPNG","imgData","colorType","pixelBitlength","decodePixels","transparency","processGIF89A","decodeAndBlitFrameRGBA","processGIF87A","processBMP","setLanguage","languageSettings","af","sq","hy","az","eu","my","cv","nl","fj","fur","gd","gu","hu","iu","ks","kk","km","ky","tlh","lv","lb","mk","nv","ng","nb","oc","om","qu","rm","ru","sz","sg","sc","sd","sk","sl","sb","sw","sv","tig","tk","uk","hsb","zu","languageCode","getCharWidthsArray","Unicode","fof","widthOfString","widthOfGlyph","characterToGlyph","getArraySum","textIndent","lineIndent","WinAnsiEncoding","Courier","Helvetica","ZapfDingbats","existsFileInVFS","getFileFromVFS","TTFFont","glyIdsUsed","addSvg","addSVG","addSvgAsImage","ignoreMouse","ignoreAnimation","ignoreClear","putTotalPages","pdfEscape16","viewerPreferences","HideToolbar","explicitSet","valueSet","pdfVersion","HideMenubar","HideWindowUI","FitWindow","CenterWindow","DisplayDocTitle","NonFullScreenPageMode","Direction","ViewArea","ViewClip","PrintArea","PrintClip","PrintScaling","Duplex","PickTrayByPDFSize","PrintPageRange","NumCopies","viewerpreferences","addMetadata","toUnicode","subset","PDFObject","stemV","italicAngle","ascender","decender","rawData","hmtx","cmap","codeMap","vFS","addFileToVFS","addHTML","rasterizeHTML","dim","useFor","imageCompression","pagesplit","mozImageSmoothingEnabled","webkitImageSmoothingEnabled","msImageSmoothingEnabled","rstz","SCRIPT","STYLE","NOSCRIPT","EMBED","SELECT","setBlockBoundary","setBlockStyle","executeWatchFunctions","margins_doc","addText","watchFunctions","outY","FOOTER","writeln","elementHandlers","splitFragmentsIntoLines","RenderTextFragment","getPdfColor","lastTextColor","renderParagraph","blockstyle","priorblockstyle","priorMarginBottom","bolder","lighter","italic","oblique","justify","both","fromHTML","html2pdf","_wrapX","_wrapY","_page","setName","_pageBreakAt","pageBreaks","_gotoPage","BlobBuilder","WebKitBlobBuilder","MSBlobBuilder","MozBlobBuilder","ActiveXObject","lastModified","lastModifiedDate","isPrototypeOf","Event","EMPTY","DONE","onloadstart","onprogress","readAsArrayBuffer","WRITING","onwritestart","onwrite","onwriteend","has_local_palette","palette_offset","data_offset","data_length","transparent_index","interlaced","disposal","numFrames","loopCount","frameInfo","decodeAndBlitFrameBGRA","GifWriter","addFrame","GifReader","datav","is_with_alpha","bottom_up","parseHeader","parseBGR","Adler32","checksum","fromUtf8","fromBuffer","updateUtf8","updateBuffer","__bidiEngine__","EN","AN","hiLevel","doBidiReorder","isInputVisual","isOutputVisual","isInputRtl","isOutputRtl","isSymmetricSwapping","fileSize","getUint32","reserved","headerSize","getInt32","planes","getUint16","bitPP","rawSize","importantColors","getUint8","quad","bit1","bit4","bit8","bit15","bit16","bit24","bit32","build_tree","dyn_tree","stat_desc","static_tree","elems","heap_len","heap_max","heap","opt_len","static_len","max_code","pqdownheap","extra_bits","extra_base","max_length","bl_count","good_length","max_lazy","nice_length","max_chain","_length_code","base_length","base_dist","d_code","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","static_l_desc","static_d_desc","static_bl_desc","pending_buf","flush_pending","avail_in","read_buf","total_in","total_out","pending_out","deflateInit","dstate","deflateEnd","deflateParams","deflateSetDictionary","next_out","next_in","avail_out","next_in_index","next_out_index","_jzlib_Deflater","feldspar","lightslateblue","violetred","example","toRGB","registerTTF","directory","hhea","maxp","post","os2","loca","glyf","lineGap","xMin","yMin","xMax","yMax","italic_angle","familyClass","isSerif","isScript","isFixedPitch","forGlyph","readByte","writeByte","readUInt32","writeUInt32","readInt32","writeInt32","readUInt16","writeUInt16","readInt16","writeInt16","writeString","readShort","writeShort","readLongLong","writeLongLong","readInt","writeInt","scalarType","tableCount","searchRange","entrySelector","rangeShift","tables","__super__","revision","checkSumAdjustment","magicNumber","created","modified","macStyle","lowestRecPPEM","fontDirectionHint","indexToLocFormat","glyphDataFormat","platformID","encodingID","isUnicode","subtable","maxGlyphID","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","caretOffset","metricDataFormat","numberOfMetrics","averageCharWidth","weightClass","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","panose","charRange","vendorID","firstCharIndex","lastCharIndex","winAscent","winDescent","codePageRange","defaultChar","breakChar","maxContext","minMemType42","maxMemType42","minMemType1","maxMemType1","glyphNameIndex","numGlyphs","languageID","nameID","copyright","fontSubfamily","uniqueSubfamily","postscriptName","trademark","manufacturer","designer","vendorUrl","designerUrl","licenseUrl","preferredFamily","preferredSubfamily","compatibleFull","sampleText","maxPoints","maxContours","maxCompositePoints","maxComponentContours","maxZones","maxTwilightPoints","maxStorage","maxFunctionDefs","maxInstructionDefs","maxStackElements","maxSizeOfInstructions","maxComponentElements","maxComponentDepth","lsb","leftSideBearings","glyphFor","lengthOf","numberOfContours","compound","glyphIDs","glyphOffsets","unicodes","generateCmap","glyphsFor","compressionMethod","filterMethod","interlaceMethod","numPlays","xOffset","yOffset","disposeOp","blendOp","grayscale","hasAlphaChannel","mozResponseArrayBuffer","decodePalette","copyToImageData","_decodedPalette","decodeFrames","createImageData","renderFrame","_timeout","stopAnimation","_png","bufferLength","eof","ensureBuffer","readBlock","lookChar","getChar","makeSubStream","getBits","codeSize","codeBuf","bytesPos","getCode","generateHuffmanTable","html2CanvasOptions","pdfOptions","pdfFormat","renderViewDefault","_react2","renderTrackHorizontalDefault","finalStyle","renderTrackVerticalDefault","renderThumbHorizontalDefault","renderThumbVerticalDefault","_raf2","_raf3","_domCss2","_propTypes2","_isString2","_getScrollbarWidth2","_returnFalse2","_getInnerWidth2","_getInnerHeight2","_styles","_defaultRenderElements","Scrollbars","getScrollLeft","getScrollTop","getScrollWidth","getScrollHeight","getClientWidth","getClientHeight","getThumbHorizontalWidth","getThumbVerticalHeight","getScrollLeftForOffset","getScrollTopForOffset","scrollToLeft","scrollToRight","scrollToBottom","handleTrackMouseEnter","handleTrackMouseLeave","handleHorizontalTrackMouseDown","handleVerticalTrackMouseDown","handleHorizontalThumbMouseDown","handleVerticalThumbMouseDown","handleWindowResize","handleDrag","handleDragEnd","didMountUniversal","componentDidMountUniversal","universal","hideTracksTimeout","detectScrollingInterval","_ref2$scrollLeft","_ref2$scrollTop","_ref2$scrollWidth","_ref2$scrollHeight","_ref2$clientWidth","_ref2$clientHeight","thumbSize","thumbMinSize","_view","trackWidth","trackHorizontal","_props2","_view2","trackHeight","trackVertical","_view3","_view4","thumbHorizontal","thumbVertical","teardownDragging","_props3","onScrollFrame","viewScrollLeft","viewScrollTop","detectScrolling","onScrollStart","handleScrollStartAutoHide","autoHide","showTracks","onScrollStop","handleScrollStopAutoHide","hideTracks","targetLeft","thumbWidth","targetTop","thumbHeight","prevPageX","prevPageY","disableSelectStyle","onselectstart","disableSelectStyleReset","stopImmediatePropagation","handleDragEndAutoHide","trackMouseOver","handleTrackMouseEnterAutoHide","handleTrackMouseLeaveAutoHide","autoHideTimeout","handleScrollStart","lastViewScrollLeft","lastViewScrollTop","handleScrollStop","_this6","_props4","hideTracksWhenNotNeeded","trackHorizontalWidth","thumbHorizontalWidth","thumbHorizontalStyle","trackVerticalHeight","thumbVerticalHeight","thumbVerticalStyle","trackHorizontalStyle","trackVerticalStyle","_this7","scrollbarWidth","_props5","renderView","renderTrackHorizontal","renderTrackVertical","renderThumbHorizontal","renderThumbVertical","autoHideDuration","containerStyleDefault","containerStyleAutoHeight","viewStyleDefault","viewStyleAutoHeight","viewStyleUniversalInitial","trackAutoHeightStyle","trackHorizontalStyleDefault","trackVerticalStyleDefault","thumbHorizontalStyleDefault","thumbVerticalStyleDefault","_Scrollbars","_Scrollbars2","MsOverflowStyle","_domCss","maybe","acceptsBooleans","attributeNamespace","sanitizeURL","removeEmptyString","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","prepareStackTrace","_payload","_valueTracker","stopTracking","defaultChecked","_wrapperState","initialChecked","ab","eb","defaultSelected","gb","hb","ib","kb","mathml","ob","MSApp","execUnsafeLocalFunction","qb","gridArea","ub","menuitem","embed","keygen","param","wbr","vb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","fc","hc","jc","kc","lc","mc","nc","qc","blockedOn","domEventName","eventSystemFlags","targetContainers","tc","wc","lanePriority","unstable_runWithPriority","hydrate","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","cd","unstable_UserBlockingPriority","fd","hd","uc","jd","kd","nd","od","pd","qd","_reactName","_targetInst","isDefaultPrevented","isPersistent","wd","xd","yd","eventPhase","timeStamp","isTrusted","ud","Ad","pageY","zd","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Up","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","Xd","Yd","wheelDelta","deltaZ","Zd","$d","oninput","HTMLIFrameElement","selectionStart","selectionEnd","anchorNode","focusNode","focusOffset","Yb","bf","cf","Nb","ef","ff","parentWindow","gf","hf","jf","kf","lf","mf","nf","pf","qf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","eg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","mg","og","pg","qg","rg","_currentValue","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ih","memoizedProps","revealOrder","jh","kh","mh","oh","pendingProps","qh","uh","_workInProgressVersionPrimary","ReactCurrentDispatcher","wh","Fh","Gh","Hh","baseQueue","Ih","Jh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","readContext","useDeferredValue","useOpaqueIdentifier","unstable_isNewReconciler","uf","ReactCurrentOwner","baseLanes","UNSAFE_componentWillUpdate","componentWillUpdate","qi","pendingContext","retryLane","unstable_avoidThisFallback","unstable_expectedLoadTime","isBackwards","rendering","renderingStartTime","tailMode","Fi","Gi","wasMultiple","onclick","Hi","Ji","Ki","componentDidCatch","componentStack","WeakSet","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","Wj","Xj","pingCache","Yj","Zj","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","removeAllRanges","addRange","onCommitFiberRoot","fk","gk","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","lk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","hk","_calculateChangedBits","unstable_observedBits","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","supportsFiber","inject","flushSync","unmountComponentAtNode","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","useSuspense","Img","loader","unloader","loaderContainer","unloaderContainer","crossorigin","_skeleton","_skeletonTheme","_core","SkeletonTheme","themeStyles","defaultBaseColor","defaultHighlightColor","Skeleton","skeletonStyles","skeletonKeyframes","_taggedTemplateLiteral","customStyle","customClassName","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","changedBits","createEventEmitter","_React$Component2","createNamedContext","historyContext","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","Lifecycle","onUnmount","cacheLimit","cacheCount","generatePath","compilePath","Redirect","computedMatch","_ref$push","cacheLimit$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","_compilePath","pathCache","compilePath$1","Route","context$1","isEmptyChildren","createURL","staticHandler","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","useHistory","useLocation","useParams","useRouteMatch","_objectAssign","_objectAssign2","truthy","classNameDecorator","ownEnumerableKeys","ToObject","windowObject","cancelFrame","clearTimeoutFn","setTimeoutFn","cancelAnimationFrameFn","mozCancelAnimationFrame","webkitCancelAnimationFrame","requestAnimationFrameFn","mozRequestAnimationFrame","webkitRequestAnimationFrame","createDetectElementResize","animationKeyframes","animationStartEvent","animationStyle","checkTriggers","resetTriggers","scrollListener","triggers","__resizeTriggers__","contract","lastElementChild","expandChild","__resizeLast__","__resizeRAF__","__resizeListeners__","keyframeprefix","domPrefixes","startEvents","pfx","elm","addResizeListener","elementStyle","createStyles","expandTrigger","contractTrigger","__animationListener__","removeResizeListener","animationFrameID","timeoutID","AutoSizer","defaultHeight","scaledHeight","scaledWidth","_autoSizer","_detectElementResize","_parentNode","_resizeObserver","_timeoutId","_onResize","disableWidth","_setRef","autoSizer","ResizeObserverInstance","doNotBailOutOnEmptyChildren","outerStyle","childParams","bailoutOnChildren","safeIsNaN","areInputsEqual","newInputs","lastInputs","resultFn","calledOnce","newArgs","cancelTimeout","requestTimeout","recalculate","cachedRTLResult","getRTLOffsetType","outerDiv","innerDiv","innerStyle","defaultItemKey","createGridComponent","_class","getColumnOffset","getColumnStartIndexForOffset","getColumnStopIndexForStartIndex","getEstimatedTotalHeight","getEstimatedTotalWidth","getOffsetForColumnAndAlignment","getOffsetForRowAndAlignment","getRowOffset","getRowStartIndexForOffset","getRowStopIndexForStartIndex","initInstanceProps","shouldResetStyleCacheOnItemSizeChange","validateProps","_PureComponent","_instanceProps","_resetIsScrollingTimeoutId","_outerRef","isScrolling","horizontalScrollDirection","initialScrollLeft","initialScrollTop","scrollUpdateWasRequested","verticalScrollDirection","_callOnItemsRendered","overscanColumnStartIndex","overscanColumnStopIndex","overscanRowStartIndex","overscanRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","visibleRowStartIndex","visibleRowStopIndex","_callOnScroll","_getItemStyle","itemStyleCache","_getItemStyleCache","isRtl","___","_onScroll","_event$currentTarget","calculatedScrollLeft","calculatedScrollTop","_resetIsScrollingDebounced","_outerRefSetter","_resetIsScrolling","validateSharedProps","scrollToItem","_ref4$align","estimatedTotalHeight","horizontalScrollbarSize","verticalScrollbarSize","_callPropsCallbacks","innerTagName","_this$props4$itemKey","outerElementType","outerTagName","useIsScrolling","_this$_getHorizontalR","_getHorizontalRangeToRender","columnStartIndex","columnStopIndex","_this$_getVerticalRan","_getVerticalRangeToRender","rowStartIndex","rowStopIndex","_rowIndex","_columnIndex","estimatedTotalWidth","_this$_getHorizontalR2","_overscanColumnStartIndex","_overscanColumnStopIndex","_visibleColumnStartIndex","_visibleColumnStopIndex","_this$_getVerticalRan2","_overscanRowStartIndex","_overscanRowStopIndex","_visibleRowStartIndex","_visibleRowStopIndex","_this$state3","_horizontalScrollDirection","_scrollLeft","_scrollTop","_scrollUpdateWasRequested","_verticalScrollDirection","overscanColumnCount","overscanColumnsCount","_this$state4","overscanCountResolved","stopIndex","overscanBackward","overscanForward","_this$props7","overscanRowCount","overscanRowsCount","_this$state5","rowMetadataMap","lastMeasuredRowIndex","totalSizeOfMeasuredRows","itemMetadata","columnMetadataMap","lastMeasuredColumnIndex","getItemMetadata","itemMetadataMap","lastMeasuredIndex","findNearestItem","findNearestItemBinarySearch","findNearestItemExponentialSearch","getOffsetForIndexAndAlignment","estimatedTotalSize","VariableSizeGrid","shouldForceUpdate","_ref6$shouldForceUpda","defaultItemKey$1","createListComponent","getItemOffset","getEstimatedTotalSize","getItemSize","getStartIndexForOffset","getStopIndexForStartIndex","scrollDirection","overscanStartIndex","visibleStartIndex","visibleStopIndex","isHorizontal","offsetHorizontal","_onScrollHorizontal","_onScrollVertical","_event$currentTarget2","validateSharedProps$1","_this$props5$itemKey","_this$_getRangeToRend","_getRangeToRender","_this$_getRangeToRend2","_overscanStartIndex","_overscanStopIndex","_visibleStartIndex","_visibleStopIndex","_scrollDirection","_scrollOffset","getItemMetadata$1","findNearestItemBinarySearch$1","findNearestItemExponentialSearch$1","estimatedItemSize","totalSizeOfMeasuredItems","VariableSizeList","findNearestItem$1","FixedSizeList","lastItemOffset","middleOffset","numVisibleItems","shallowDiffers","_attribute","areEqual","prevRest","nextRest","jsxs","_status","_result","IsSomeRendererActing","_currentValue2","_threadCount","createFactory","pna","objectKeys","Readable","allowHalfOpen","onend","_writableState","ended","onEndNT","highWaterMark","_readableState","_destroy","PassThrough","ReadableState","EElistenerCount","OurUint8Array","debugUtil","debuglog","BufferList","destroyImpl","kProxyEvents","isDuplex","objectMode","readableObjectMode","hwm","readableHwm","readableHighWaterMark","defaultHwm","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","awaitDrain","readingMore","_read","readableAddChunk","addToFront","skipChunkCheck","emitReadable","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","needMoreData","_undestroy","undestroy","setEncoding","MAX_HWM","howMuchToRead","computeNewHighWaterMark","emitReadable_","maybeReadMore_","nReadingNextTick","resume_","hasStrings","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","increasedAwaitDrain","dests","_fromList","afterTransform","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","prefinish","err2","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","need","getBuffer","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","custom","emitErrorNT","readableDestroyed","writableDestroyed","copyProps","SafeBuffer","defaultCompare","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","__SERVER_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","fromMarkdown","globalCreateElement","globalFragment","toHastOptions","toHast","remarkReactComponents","tableElements","Compiler","tableCellStyle","globalReact","fn1","fn2","fn3","fn4","fn5","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","nextNonEmptySectionIndex","_position2","prevNonEmptySectionIndex","finalSize","_finalSize","accum","assigned","lowBits","highBits","Algorithm","Sha","rotl30","Sha1","rotl5","Sha256","Sha224","maj","sigma0","sigma1","gamma0","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","arrA","arrB","previousSeed","shuffled","randomFromSeed","ORIGINAL","setCharacters","_alphabet_","getShuffled","characterIndex","sourceArray","targetArray","previousSeconds","clusterWorkerId","loopCounter","seedValue","workerId","newCharacters","randomByte","_seed_","EE","pipeline","_isStdio","didOnEnd","createErrorType","NodeError","_Base","determiner","this_len","createReadableStreamAsyncIterator","getHighWaterMark","_require$codes","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","emitClose","autoDestroy","updateReadableListening","wState","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","rState","_Object$setPrototypeO","prim","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_Object$create","_getString","_getBuffer","customInspect","emitErrorAndCloseNT","emitCloseNT","ERR_STREAM_PREMATURE_CLOSE","eos","onlegacyfinish","writableEnded","readableEnded","onrequest","req","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","highWaterMarkFrom","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","hasIterator","isPropValid","styledComponentId","REACT_APP_SC_ATTR","SC_ATTR","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","indexOfGroup","clearGroup","registerName","isServer","useCSSOMInjection","gs","server","registerId","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clearRules","clearTag","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","disableCSSOMInjection","disableVendorPrefixes","getName","isCss","parentComponentId","shouldForwardProp","componentStyle","foldedComponentIds","$as","withComponent","_foldedDefaultProps","withConfig","removeStyles","renderStyles","_emitSheetCSS","getStyleTags","sealed","getStyleElement","collectStyles","interleaveWithNodeStream","hasSpace","hasSeparator","separatorSplitter","unseparate","hasCamel","camelSplitter","uppers","uncamelize","trough","invoked","bail","plain","vfile","unified","frozen","attachers","transformers","freezeIndex","assertUnfrozen","addPlugin","addList","addPreset","assertParser","newable","assertCompiler","assertNode","runSync","assertDone","asyncName","allFactory","grandparents","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","stylize","stylizeNoColor","showHidden","_extend","stylizeWithColor","formatValue","styleType","recurseTimes","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","numLinesEst","reduceToSingleString","pid","VMessagePrototype","VMessage","parseOrigin","fatal","proc","VFile","assertPart","assertNonEmpty","assertPath","firstNonSlashEnd","seenNonSlash","extIndex","unmatchedSlash","startDot","startPart","preDotState","lastSlashIndex","lastSegmentLength","lastSlash","normalizeString","Object_keys","defineProp","globals","Script","wEval","eval","wExecScript","execScript","winKeys","runInThisContext","runInNewContext","isContext","createScript","toPropertyKey","appendClass","newClass","_inheritsLoose","unsupportedIterableToArray","arrayLikeToArray","NetworkStatus","isNetworkRequestInFlight","networkStatus","PROTOCOL_ERRORS_SYMBOL","graphQLResultHasProtocolErrors","isApolloError","ApolloError","graphQLErrors","protocolErrors","clientErrors","networkError","extraInfo","generateErrorMessage","contextKey","getApolloContext","useApolloClient","override","client","EAGER_METHODS","execOptionsRef","optionsRef","queryRef","internalState","useQueryResult","initialFetchPolicy","getDefaultFetchPolicy","eagerMethods","forceUpdateState","EAGER_METHODS_1","execute","executeOptions","executeQuery","queryResult","Mutation","setResult","mutationId","ignoreResults","clientOptions","mutate","result_1","result_2","result_3","didWarnUncachedGetSnapshot","useSyncExternalStore","getServerSnapshot","__DEV__","inst","canUse","checkIfSnapshotChanged","wrapperSymbol","hookName","useHook","clientOrObsQuery","queryManager","wrappers","wrapHook","_useQuery","useInternalState","stateRef","InternalState","ssrDisabledResult","maybeDeepFreeze","skipStandbyResult","toQueryResultCache","Query","previousResult","watchQueryOptions","createWatchQueryOptions","queryHookOptions","concast","reobserveAsConcast","getObsQueryOptions","toQueryResult","getCurrentResult","renderPromises","useOptions","obsQuery","useObservableQuery","handleStoreChange","resubscribeAfterError","disableNetworkFetches","unsafeHandlePartialRefetch","currentWatchQueryOptions","reobserve","ssr","toMerge","globalDefaults","watchQuery","otherOptions","getSSRObservable","obsQueryFields","subscribeToMore","ssrAllowed","registerSSRObservable","addObservableQueryPromise","nextResult","handleErrorOrCompleted","error_1","toApolloError","resultWithoutPartial","partialRefetch","DocumentType","operationName","Subscription","fragments","queries","mutations","subscriptions","verifyDocumentType","requiredOperationName","usedOperationName","resetCache","scheduledCleanup","schedule","AutoCleanedWeakCache","AutoCleanedStrongCache","globalCaches","registerGlobalCache","getApolloClientMemoryInternals","limits","getCurrentCacheSizes","canonicalStringify","linkInfo","getDocumentInfo","documentTransforms","transformInfo","documentTransform","getMemoryInternals","getInMemoryCacheMemoryInternals","_getApolloCacheMemoryInternals","addTypenameDocumentTransform","inMemoryCache","executeSelectionSet","getWrapperInformation","executeSubSelectedArray","maybeBroadcastWatch","fragmentRegistry","findFragmentSpreads","getApolloCacheMemoryInternals","fragmentQueryDocuments","isWrapper","recurseTransformInfo","cacheSizeSymbol","cacheSizes","isNonEmptyArray","canUseWeakMap","HermesInternal","canUseWeakSet","canUseSymbol","canUseAsyncIteratorSymbol","usingJSDOM","canUseLayoutEffect","prefixCounts","makeUniqueId","deepFreeze","shallowFreeze","stringifyForDisplay","undefId","genericMessage","InvariantError","verbosityLevels","verbosityLevel","wrapConsoleMethod","arg0","getHandledErrorMsg","getFallbackErrorMsg","newInvariantError","optionalParams","ApolloErrorMessageHandler","messageArgs","defaultDispose","StrongCache","newest","oldest","older","newer","_WeakRef","WeakRef","deref","_WeakMap","_FinalizationRegistry","FinalizationRegistry","WeakCache","unfinalizedNodes","finalizationScheduled","finalize","keyRef","deleteNode","scheduleFinalization","fnToStr","previousComparisons","aTag","previouslyCompared","definedKeys","keyCount","aIterator","aKey","aCode","nativeCodeSuffix","isDefinedKey","bSet","MAX_RECURSIVE_DEPTH","seenValues","previouslySeenValues","customInspectFn","getCustomFn","getObjectTag","formatObject","formatObjectValue","defineInspect","classObject","nodejsCustomInspectSymbol","Location","Token","dedentBlockStringValue","rawString","commonIndent","_commonIndent","isFirstLine","isEmptyLine","getBlockStringIndentation","isBlank","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","printAsMultipleLines","Kind","isProduction","provided","__webpack_module_cache__","__webpack_require__","cachedModule","__webpack_modules__","leafPrototypes","getProto","chunkId","miniCssF","hmd","dataWebpackPrefix","script","needAttach","scripts","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","ApolloProvider","ApolloContext","parentContext","IS_HTMLDDA","Deno","v8","withoutSetter","EXISTS","PROPER","CONFIGURABLE","inspectSource","facade","enforce","getterFor","unsafe","nonConfigurable","nonWritable","trunc","NATIVE","POLYFILL","stat","dontCallGetSet","forced","QObject","findChild","useSetter","useSimple","keyFor","codeAt","IteratorPrototype","BUGGY_SAFARI_ITERATORS","opera","BigInt64Array","BigUint64Array","TypedArrayConstructor","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","exportTypedArrayStaticMethod","getTypedArrayConstructor","TypedArrayPrototype","Arguments","isExtensible","preventExtensions","objectID","weakData","fastKey","getWeakData","onFreeze","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","getConstructor","setStrong","_deferreds","_immediateFn","_unhandledRejectionFn","allSettled","ignoreBOM","TextEncoder","TextDecoder","initEvent","createEventObject","__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL","Request","AbortSignal","locked","addToLocked","unlock","acquiredIatSet","acquireLock","releaseLock","releaseLock__private__","waitForSomethingToChange","refreshLockWhileAcquired","waiters","timeoutKey","timeAcquired","timeRefreshed","lockCorrector","removeFromWaiting","addToWaiting","notifyWaiters","timeoutInSeconds","error_description","fromPayload","appState","mfa_token","webkitSubtle","oncomplete","credentials","fetchUrl","fetchOptions","useFormData","baseUrl","auth0Client","client_id","fromKey","fromCacheEntry","enclosedCache","keyManifest","nowProvider","getCacheKeys","matchExistingCacheKey","expiresAt","refresh_token","wrapCacheEntry","clearSync","expires_in","claims","storage","clientId","storageKey","transaction","daysUntilExpire","id_token","__raw","encoded","azp","max_age","auth_time","leeway","organizationId","org_id","sameSite","cookieDomain","sessionStorage","Worker","manifestKey","createManifestKeyFrom","memory","localstorage","_releaseLockOnPageHide","cacheLocation","httpTimeoutMs","httpTimeoutInSeconds","cookieStorage","legacySameSiteCookie","orgHintCookieName","isAuthenticatedCookieName","sessionCheckExpiryDays","useCookiesForTransactions","transactionManager","cacheManager","domainUrl","tokenIssuer","advancedOptions","useRefreshTokens","customOptions","authorizeTimeoutInSeconds","redirect_uri","useRefreshTokensFallback","_getParams","detailedResponse","response_type","response_mode","code_challenge","code_challenge_method","_authorizeUrl","_verifyIdToken","_parseNumber","_processOrgIdHint","buildAuthorizeUrl","organization","code_verifier","loginWithPopup","grant_type","getIdTokenClaims","redirectMethod","oauthTokenScope","checkSession","ignoreCache","_getTokenSilently","access_token","_getEntryFromCache","_getTokenUsingRefreshToken","_getTokenFromIFrame","getTokenWithPopup","buildLogoutUrl","federated","localOnly","crossOriginIsolated","ResultRow","ResultBadge","NetworkLogo","LeftContent","assetTypeMap","CLIENT_RISK","ACIN_RISK","CLIENT_CONTROL","ACIN_CONTROL","REG_ALERT","NETWORK_UPDATE","NETWORK_SCENARIO","REPORT","REPORT_BUILDER","networkAssetTypes","ResultRow$2","assetType","isNetwork","GetGlobalSearchResultsDocument","useGetGlobalSearchResultsLazyQuery","SearchContainer","SearchHeader","ResultsWrapper","ResultRows","setSearchValue","setErr","getGlobalSearchResults","searchedTerms","resultsMessage","handleClear","handleNavigate","SearchField$2","SearchDropdown","Results$1","ResultsText","Suggestion","Checkboxes","onUpdateSearchTerm","dropdownVisible","onUpdateDropdownVisible","setDropdownVisible","SearchDropdown$2","dropdownRef","activeSources","setActiveSources","queryFilters","setQueryFilters","resultTypes","handleClickOutside","newQueryFilters","isReports","isRiskIntel","ClientRisk","AcinRisk","RegAlert","Report","ReportBuilder","generateQueryFilters","instructions","filterOptions","sourceOptions","handleSelection","showSource","convertToSelectedIds","showResults","showInstructions","styled","widenSearch","SearchBarExtender","DropdownHolder","pulseAnimation","DownloadIconAnimated","IconDownload","dotColor","DownloadsWrapper","_jsx","SC","DownloadsListComp","openDownload","UserPreferencesModal","ThumbnailWrapper","Version","Thumbnail","SVGWrapper","_jsxs","SetUiThemeDocument","UserFragmentDoc","MeDocument","useMeQuery","Apollo","setUiTheme","useSetUiThemeMutation","themeSelection","setThemeSelection","handleSetTheme","_data$me","Dark","Default","packageJson","NotificationCategoryFieldsFragmentDoc","GetEmailNotificationSettingsDocument","UpdateEmailNotificationSettingsDocument","EmailPreferencesModal","getLoading","useGetEmailNotificationSettingsQuery","updateEmailNotificationSettings","updateLoading","useUpdateEmailNotificationSettingsMutation","notificationSettings","setNotificationSettings","initialSettings","setInitialSettings","categoryCheckboxes","onCategoryChange","newNotificationSettings","fetchedSettings","getEmailNotificationSettings","notificationCategories","currentSetting","onUpdateClick","updatedNotificationCategories","GetReportCategoriesDocument","MainNav","useAuth","useGetReportCategoriesQuery","setShowUserAccount","showPreferencesModal","setShowPreferencesModal","showEmailNotificationsModal","setShowEmailNotificationsModal","stopDotAnimation","setStopDotAnimation","showDropdown","setShowDropdown","setWidenSearch","fieldRef","handleOpenSearch","_data$me$preferences","getActiveMenuItem","buildReportCategories","getAllReportsQuickFilters","_category$filter","_category$filter2","getDotColor","userMenuItems","showSearch","handleCloseSearch","clickedElement","_fieldRef$current","_dropdownRef$current","CoreMainNav","redirect","returnTo","REACT_APP_CYPRESS_ENABLE","handleMenuClick","getIcons","navIcons","IconUpload","closeDownloads","UiCorePrivateRoute","HomePage","Homepage","RiskIntelligenceHub","ConnectData","ManageAccounts","Explorer","Calibrate","Documents","PrivateLayout","requestedLandingTabId","Login","Auth","App","handleLogout","resetTimer","activityEvents","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","Observable","hostReportError","enqueue","cleanupSubscription","_cleanup","closeSubscription","_queue","notifySubscription","onNotify","flushSubscription","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","_proto3","hasSeed","startNext","completeIfDone","getFragmentQueryDocument","actualFragmentName","createFragmentMap","symTable","getFragmentFromSelection","fragmentMap","sortingMap","stableObjectReplacer","everyKeyInOrder","unsortedKey","sortedKeys","sortedKey","sortedObject_1","makeReference","isReference","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","nestedArgArrayObj","isEnumValue","isNullValue","KNOWN_DIRECTIVES","storeKeyNameStringify","getStoreKeyName","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","setStringify","argumentsObjectFromField","argObj_1","resultKeyNameFromField","getTypenameFromResult","fragments_1","operations","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","queryDef","getMainDefinition","queryDoc","getDefaultValues","defaultValues","passthrough","toLink","ApolloLink","isTerminating","leftLink","rightLink","starting","createOperation","transformedOperation","transformOperation","OPERATION_FIELDS","validateOperation","firstLink","nextLink","setOnError","QueryDocumentKeys","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","visitorKeys","inArray","edits","newRoot","isEdited","editOffset","editKey","editValue","_visitorKeys$node$kin","visitFn","getVisitFn","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","shouldInclude","directive","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","getInclusionDirectives","evaledValue","hasDirectives","nameSet","uniqueCount","hasClientExports","serializeFetchParameter","parseError","nodeStreamIterator","waiting","onData","shiftedArr","readerIterator","responseIterator","isAsyncIterableIterator","getReader","isReadableStream","isStreamableBlob","promiseIterator","isNodeReadableStream","throwServerError","statusCode","mergeDeep","mergeDeepArray","merger","DeepMerger","defaultReconciler","reconciler","pastCopies","targetValue","shallowCopyForMerge","isExecutionPatchIncrementalResult","isApolloPayloadResult","mergeIncrementalData","prevResult","mergedData","headerText","headersInit","name_1","parseJsonBody","bodyText","getResult","printCache","printDocASTReducer","varDefs","argsLine","addDescription","_ref20","_ref21","_ref22","_ref23","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","fallbackHttpConfig","includeQuery","includeExtensions","preserveHeaderCase","defaultPrinter","printer","selectHttpOptionsAndBodyInternal","normalizedHeaders_1","headerData","normalizedHeaders","removeDuplicateHeaders","fromError","TYPENAME_FIELD","nullIfDocIsEmpty","fragmentDef","getFragmentDefinition","getDirectiveMatcher","testConfig","makeInUseGetterFunction","defaultKey","inUse","fragmentSpreads","removeDirectivesFromDocument","getInUseByOperationName","getInUseByFragmentName","getInUse","ancestor","operationCount","directiveMatcher","shouldRemoveField","nodeDirectives","originalFragmentDefsByPath","firstVisitMadeChanges","fieldOrInlineFragmentVisitor","docWithoutDirectiveSubtrees","_path","populateTransitiveVars","transitiveVars","childFragmentName","allFragmentNamesUsed","enterVisitor","usedVariableNames_1","varDef","addTypenameToDocument","buildQueryFromSelectionSet","removeClientSetsFromDocument","backupFetch","createHttpLink","linkOptions","preferredFetch","useGETForQueries","includeUnusedVariables","fetcher","checkFetcher","linkConfig","chosenURI","fallbackURI","contextURI","selectURI","clientAwarenessHeaders","clientAwareness","contextConfig","transformedQuery","unusedNames","filterOperationVariables","isSubscription","definitionIsSubscription","hasDefer","acceptHeader","queryParams","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","currentFetch","observerNext","ctype","boundaryVal","searchFrom","contentType_1","readMultipartBody","handleError","HttpLink","defaultMakeData","Trie","weakness","makeData","lookupArray","getChildTrie","peekArray","isObjRef","weak","currentContext","ignored","globalKey","globalHost","Slot","slots","withValue","saved","noContext","parentEntrySlot","arrayFromSet","maybeUnsubscribe","entryOrDep","emptySetPool","POOL_TARGET_SIZE","optionalMessage","valueGet","valueCopy","Entry","childValues","dirtyChildren","recomputing","mightBeDirty","rememberParent","recompute","forgetChildren","recomputeNewValue","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","eachParent","forgetChild","forget","dependOn","forgetDeps","reportDirtyChild","reportCleanChild","normalizeResult","oldValueCopy","parentCount","parentWasClean","removeDirtyChild","EntryMethods","depsByKey","depend","entryMethodName","defaultKeyTrie","defaultMakeCacheKey","originalFunction","makeCacheKey","cacheOption","optimistic","dirtyKey","peekKey","forgetKey","ApolloCache","assumeImmutableResults","getFragmentDoc","updateResult","optimisticId","performTransaction","recordOptimisticTransaction","transformDocument","transformForLink","readQuery","rootId","watchFragment","latestDiff","diffOptions","returnPartialData","watch","readFragment","writeQuery","dataId","updateFragment","MissingFieldError","mapFor","removeArray","DocumentTransform","resultCache","getCacheKey","stableCacheKeys_1","performWork","cacheKeys","transformedDocument","otherTransform","isNullish","defaultDataIdFromObject","keyObject","dataIdFromObject","addTypename","resultCaching","canonizeResults","shouldCanonizeResults","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","storeValueIsStoreObject","extractFragmentContext","lookupFragment","DELETE","delModifier","INVALIDATE","EntityStore","policies","rootIds","getFieldValue","objectOrReference","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","storeObject","rootTypenamesById","dependOnExistence","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","readField","fieldNameOrOptions","getStorage","checkReference","seenReference","someNonReference","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","rest_1","retain","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","makeDepKey","maybeDependOnExistenceOfEntity","supportsResultCaching","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","ObjectCanon","known","pool","passes","keysByJSON","admit","isKnown","shallowCopy","original","proto_1","array_1","firstValueIndex_1","obj_1","execSelectionSetKeyArgs","StoreReader","knownResults","canon","peekArgs","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","execResult","firstMissing","isFresh","latest","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","fragmentMatches","finalResult","childResult","getTypenameFromStoreObject","assertSelectionSetForIdValue","cloneDeepHelper","copy_1","copy_2","cacheSlot","cacheInfoMap","getCacheInfo","vars","forgetCache","rv","makeVar","broadcastWatches","broadcast","oldListeners","onNextChange","attachCache","specifierInfoCache","lookupSpecifierInfo","keyFieldsFnFromSpecifier","specifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","keyPath","firstKey","firstChar","variableName","varKeyPath","directiveName_1","directiveArgs","extractor","getSpecifierPaths","paths_1","currentPath_1","argsFromFieldSpecifier","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeObjects","mergeFalseFn","Policies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","mutationType","subscriptionType","updateTypePolicy","setMerge","getFieldPolicy","supertype","getSupertypeSet","policy_1","supertypes_1","fuzzy","fuzzySupertypes","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","fuzzyString","fieldSpec","specifierOrString","directivesObj","storeKeyNameFromField","readOptions","makeFieldFunctionOptions","getReadFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","argc","eType","iType","getContextFlavor","clientOnly","flavored","flavors","StoreWriter","writeToStore","operationDefinition","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","parentType","typeDotName","warnings","childTypenames","warnAboutDataLoss","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","mergeMergeTrees","mergeTreeIsEmpty","fieldMap","limitingTrie","inheritedContext","visitedNode","if","getStorageArgs","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","addTypenameTransform","txCount","normalizeConfig","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","broadcastWatch","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","alreadyDirty","addFragmentsToDocument","lastDiff","fromOptimisticTransaction","asyncMap","catchFn","promiseQueue","makeCallback","examiner","graphQLResultHasError","getGraphQLErrorsFromResult","incrementalResult","iterateObserversSafely","observers","observersWithMethod","obs","fixObservableSubclass","subclass","Concast","nextResultListeners","deliverLastMessage","nextOrError","beforeNext","equalByQuery","aData","aRest","bData","bRest","equalBySelectionSet","aResult","bResult","seenSelections","selectionHasNonreactiveDirective","resultKey","aResultChild","bResultChild","childSelectionSet","aChildIsArray","bChildIsArray","directiveIsNonreactive","ObservableQuery","queryInfo","subObserver","defaultSubscriptionObserverErrorCallback","tearDownQuery","waitForOwnResult","skipCacheDataFor","isTornDown","defaultFetchPolicy","queryId","generateQueryId","opDef","queryName","lastQuery","removeQuery","resetDiff","saveAsLastResult","getLastResult","hasForcedResolvers","getDiff","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","hasNonreactiveDirective","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","reobserveOptions","resetLastWrite","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","updatedQuerySet","fetchQuery","fetchMoreResult","reobserveCacheFirst","startGraphQLSubscription","subscriptionData","silentSetOptions","mergedOptions","broadcastQueries","updatePolling","applyNextFetchPolicy","nextFetchPolicy","newNetworkStatus","setObservableQuery","ssrMode","pollingInfo","maybeFetch","skipPollAttempt","poll","useDisposableConcast","oldVariables","oldFetchPolicy","finishWaitingForOwnResult","fromLink","reportResult","reportError","lastError","isDifferent","errorResult","hasObservers","stopQuery","currentFetchPolicy","isSelectionNode","LocalState","resolvers","fragmentMatcher","selectionsToResolveCache","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","addExportedVariables","document_1","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","rootValue_1","rootValue","mainDefinition","selectionsToResolve","definitionOperation","defaultOperationType","execContext","collectSelectionsToResolve","resolveSelectionSet","isClientFieldDescendant","resultsToMerge","resolveField","fieldResult","isInlineFragment","aliasedFieldName","aliasUsed","resultPromise","resolverType","resolverMap","isClientField","resolveSubSelectedArray","isSingleASTNode","collectByDefinition","definitionNode","fragmentSelections","destructiveMethodCounts","wrapDestructiveCacheMethod","cancelNotifyTimeout","QueryInfo","lastRequestId","observableQuery","getDiffOptions","updateWatch","oq","updateLastDiff","setDiff","notifyTimeout","oqListener","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","shouldWriteResult","errorPolicy","markReady","markError","ignoreErrors","writeWithErrors","IGNORE","QueryManager","queryDeduplication","onBroadcast","localState","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","defaultDocumentTransform","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","mutationStoreValue","isOptimistic","updateQueries","updateWithProxyFn","onQueryUpdated","keepRootFields","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","asQuery","updateQueries_1","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","isFinalResult","isExecutionPatchInitialResult","include","fetchConcastWithInfo","getQueryStore","cacheEntry","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","hasProtocolErrors","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","forceFetch","printedServerQuery_1","varJson_1","getResultsFromLink","linkDocument","aqr","containsDataFromLink","fromVariables","sourcesWithInfo","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resultsFromLink","newContext","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","resetStore","devToolsHookCb","dataWithOptimisticResults","windowWithDevTools","devtoolsSymbol","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","errorHandler","retriedSub","retriedResult","ErrorLink","ORIGIN_URL_KEY","envValue","deploymentQueryStringService","Cypress","ConsoleApiName","globalConsole","originalConsoleMethods","PREFIX","catchUserErrors","errorMsg","onMonitorErrorCollected","setDebugMode","newDebugMode","callMonitored","displayIfDebugEnabled","arrayLike","objectValues","objectEntries","toAssign","getGlobalObject","globalObject","_dd_temp_","ONE_KIBI_BYTE","ONE_MEBI_BYTE","HAS_MULTI_BYTES_CHARACTERS","computeBytesCount","getZoneJsOriginalValue","browserWindow","Zone","__symbol__","pendingExecutionWithParameters","pendingTimeoutId","needLeadingExecution","needTrailingExecution","inWaitPeriod","throttled","jsonStringify","replacer","restoreObjectPrototypeToJson","detachToJsonMethod","restoreArrayPrototypeToJson","restoreValuePrototypeToJson","restoreValueToJson","objectToJson","shallowClone","objectHasValue","isEmptyObject","CUSTOMER_DATA_BYTES_LIMIT","CUSTOMER_COMPRESSED_DATA_BYTES_LIMIT","BYTES_COMPUTATION_THROTTLING_DELAY","createCustomerDataTrackerManager","compressionStatus","customerDataTrackers","alreadyWarned","checkCustomerDataLimit","initialBytesCount","bytesCountLimit","tracker","getBytesCount","displayCustomerDataLimitReachedWarning","createDetachedTracker","createCustomerDataTracker","getOrCreateTracker","setCompressionStatus","newCompressionStatus","getCompressionStatus","bytesCountCache","computeBytesCountThrottled","cancelComputeBytesCount","resetBytesCount","updateCustomerData","resetCustomerData","mergeInto","circularReferenceChecker","set_1","hasAlreadyBeenSeen","createCircularReferenceChecker","merged_1","deepClone","combine","sources_1","SANITIZE_DEFAULT_MAX_CHARACTER_COUNT","JSON_PATH_ROOT_ELEMENT","KEY_DECORATION_LENGTH","maxCharacterCount","containerQueue","visitedObjectsWithPath","sanitizedData","sanitizeProcessor","accumulatedCharacterCount","containerToProcess","separatorLength","targetData","warnOverCharacterLimit","parentPath","sourceToSanitize","tryToApplyToJSON","sanitizePrimitivesAndFunctions","sanitizedSource","sanitizeObjects","sourceAsObject","changeType","onFirstSubscribe","onLastUnsubscribe","mergeObservables","observables","globalObservable","createContextManager","customerDataTracker","changeObservable","contextManager","clearContext","setContextProperty","removeContextProperty","ExperimentalFeature","TrackingConsent","GRANTED","NOT_GRANTED","enabledExperimentalFeatures","isExperimentalFeatureEnabled","featureName","getExperimentalFeatures","performDraw","threshold","navigationStart","ONE_SECOND","ONE_MINUTE","ONE_HOUR","ONE_YEAR","relativeToClocks","getCorrectedTimeStamp","timeStampToClocks","getRelativeTime","correctedOrigin","dateNow","getNavigationStart","addDuration","getTimeStamp","toServerDuration","relativeNow","clocksNow","clocksOrigin","elapsed","timing","eventTarget","listenerWithMonitor","__ddIsTrusted","allowUntrustedEvents","DOM_EVENT","CONTEXT_STORE_KEY_PREFIX","storageListeners","storeContextManager","productKey","customerDataType","buildStorageKey","getFromStorage","rawContext","STORAGE","createIdentityEncoder","outputBytesCount","isAsync","additionalEncodedBytesCount","finishSync","rawBytesCount","pendingData","estimateEncodedBytesCount","UNKNOWN_FUNCTION","computeStackTrace","stackProperty","tryToGetString","exString","stackFrame","CHROME_LINE_RE","isEval","submatch","CHROME_EVAL_RE","parseChromeLine","CHROME_ANONYMOUS_FUNCTION_RE","parseChromeAnonymousLine","WINJS_LINE_RE","parseWinLine","GECKO_LINE_RE","GECKO_EVAL_RE","parseGeckoLine","fileUrl","filePosition","computeStackTraceFromOnErrorMessage","messageObj","ERROR_TYPES_RE","tryToParseMessage","createHandlingStack","formattedStack","stackTrace","toStackTraceString","formatErrorMessage","NO_ERROR_STACK_PRESENT_MESSAGE","computeRawError","handlingStack","startClocks","nonErrorPrefix","handling","isErrorInstance","computeMessage","hasUsableStack","causes","flattenErrorCauses","fingerprint","tryToGetFingerprint","dd_fingerprint","parentSource","currentError","INTAKE_SITE_STAGING","INTAKE_SITE_FED_STAGING","INTAKE_SITE_US1","INTAKE_SITE_EU1","PCI_INTAKE_HOST_US1","sendToExtension","__ddBrowserSdkExtensionCallback","getConnectivity","onLine","connection","effective_type","effectiveType","onRawTelemetryEventCollected","TelemetryType","usage","ALLOWED_FRAME_URLS","TELEMETRY_EXCLUDED_SITES","telemetryConfiguration","maxEventsPerPage","sentEventCount","startTelemetry","telemetryService","contextProvider","telemetryEnabled","site","telemetrySampleRate","telemetryEnabledPerType","telemetryConfigurationSampleRate","telemetryUsageSampleRate","runtimeEnvInfo","is_local_file","is_worker","rawEvent","service","_dd","format_version","telemetry","runtime_env","connectivity","experimental_features","toTelemetryEvent","addTelemetryError","maxTelemetryEventsPerPage","setContextProvider","provider","addTelemetryDebug","addTelemetry","scrubCustomerFrames","addTelemetryUsage","allowedFrameUrl","sanitizeUser","newUser","displayAlreadyInitializedError","sdkName","initConfiguration","silentMultipleInit","BoundedBuffer","drain","getEventBridge","eventBridgeGlobal","DatadogEventBridge","getCapabilities","getPrivacyLevel","getAllowedWebViewHosts","viewId","bridgeSupports","capability","bridge","canUseEventBridge","currentHost","allowedHost","generateUUID","initCookieParsed","getCurrentSiteCache","COMMA_SEPARATED_KEY_VALUE","findCommaSeparatedValue","safeTruncate","correctedLength","setCookie","expireDelay","crossSite","partitioned","getCookie","getInitCookie","findCommaSeparatedValues","deleteCookie","browserCache","SYNTHETICS_TEST_ID_COOKIE_NAME","SYNTHETICS_RESULT_ID_COOKIE_NAME","SYNTHETICS_INJECTS_RUM_COOKIE_NAME","willSyntheticsInjectRum","_DATADOG_SYNTHETICS_INJECTS_RUM","detectBrowserCached","chrome","detectBrowser","SESSION_STORE_KEY","SESSION_TIME_OUT_DELAY","SESSION_EXPIRATION_DELAY","SESSION_ENTRY_REGEXP","SESSION_ENTRY_SEPARATOR","EXPIRED","getExpiredSessionState","isExpired","isSessionInNotStartedState","session","isSessionInExpiredState","sessionState","expire","expandSessionState","toSessionString","toSessionState","sessionString","isValidSessionString","OLD_SESSION_COOKIE_NAME","OLD_RUM_COOKIE_NAME","OLD_LOGS_COOKIE_NAME","RUM_SESSION_KEY","LOGS_SESSION_KEY","tryOldCookiesMigration","cookieStoreStrategy","oldSessionId","oldRumType","oldLogsType","isSessionStarted","persistSession","selectCookieStrategy","cookieOptions","useSecureSessionCookie","usePartitionedCrossSiteSessionCookie","useCrossSiteSessionCookie","trackSessionAcrossSubdomains","testCookieName","domainLevels","candidateDomain","getCurrentSite","buildCookieOptions","testCookieValue","isCookieCorrectlySet","areCookiesAuthorized","initCookieStrategy","cookieStore","isLockEnabled","persistSessionCookie","retrieveSession","retrieveSessionCookie","expireSession","expireSessionCookie","LOCAL_STORAGE_TEST_KEY","persistInLocalStorage","retrieveSessionFromLocalStorage","expireSessionFromLocalStorage","ongoingOperations","LOCK_RETRY_DELAY","LOCK_MAX_TRIES","bufferedOperations","processSessionStoreOperations","sessionStoreStrategy","numberOfRetries","persistWithLock","currentLock","retrieveStore","currentStore","retryLater","processedSession","sessionStore","currentNumberOfRetries","nextOperations","STORAGE_POLL_DELAY","selectSessionStoreStrategyType","sessionStoreStrategyType","allowFallbackToLocalStorage","testKey","retrievedId","selectLocalStorageStrategy","startSessionStore","computeSessionState","sessionCache","renewObservable","expireObservable","watchSessionTimeoutId","synchronizeSession","startSession","isTracked","synchronizedSession","trackingType","expandOrRenewSessionState","hasSessionInCache","renewSessionInCache","throttledExpandOrRenewSession","cancelExpandOrRenewSession","isSessionInCacheOutdated","expandOrRenewSession","expandSession","getSession","restartSession","normalizeUrl","buildUrl","supportedURL","isURLSupported","originalURL","getSupportedUrl","anchorElement","baseElement","createEndpointBuilder","trackType","configurationTags","buildUrlWithParameters","normalizedProxyUrl_1","internalAnalyticsSubdomain","usePciIntake","domainParts","buildEndpointHost","createEndpointUrlWithParametersBuilder","api","clientToken","retry","flushReason","COLLECT_FLUSH_REASON","lastFailureStatus","buildEndpointParameters","urlPrefix","TAG_SIZE_LIMIT","FORBIDDEN_CHARACTERS","buildTag","valueSizeLimit","computeTransportConfiguration","datacenter","buildTags","endpointBuilders","logsEndpointBuilder","rumEndpointBuilder","sessionReplayEndpointBuilder","computeEndpointBuilders","intakeUrlPrefixes","computeIntakeUrlPrefixes","replicaConfiguration","replica","replicaEndpointBuilders","applicationId","computeReplicaConfiguration","isIntakeUrl","intakeEndpoint","DOC_LINK","DefaultPrivacyLevel","ALLOW","MASK","MASK_USER_INPUT","TraceContextInjection","SAMPLED","validateAndBuildConfiguration","sessionSampleRate","trackingConsent","enableExperimentalFeatures","beforeSend","batchBytesLimit","eventRateLimiterThreshold","flushTimeout","batchMessagesLimit","messageBytesLimit","isMatchOption","matchList","useStartsWith","clearTracingIfNeeded","isAborted","traceId","spanId","traceSampled","injectHeadersIfTracingAllowed","sessionManager","getCrypto","findTrackedSession","tracingOption","allowedTracingUrls","traceSampleRate","traceContextInjection","TraceIdentifier","propagatorTypes","tracingHeaders","propagatorType","toDecimalString","traceparent","toPaddedHexadecimalString","makeTracingHeaders","DEFAULT_PROPAGATOR_TYPES","validateAndBuildRumConfiguration","sessionReplaySampleRate","excludedActivityUrls","tracingOptions_1","expectedItem","isTracingOption","validateAndBuildTracingOptions","baseConfiguration","actionNameAttribute","startSessionReplayRecordingManually","workerUrl","compressIntakeRequests","trackUserInteractions","trackViewsManually","trackResources","trackLongTasks","subdomain","defaultPrivacyLevel","customerDataTelemetrySampleRate","getSelectedTracingPropagators","usedTracingPropagators","createPreStartStrategy","getCommonContext","trackingConsentState","doStartRum","firstStartViewCall","deflateWorker","cachedInitConfiguration","cachedConfiguration","ignoreInitIfSyntheticsWillInjectRum","startDeflateWorker","bufferApiCalls","trackingConsentStateSubscription","tryStartRum","isGranted","initialViewOptions","startRumResult","eventBridgeAvailable","overrideInitConfigurationForBridge","tryToInit","getInternalContext","stopSession","addTiming","startView","addAction","commonContext","providedError","addFeatureFlagEvaluation","startDurationVital","vitalStart","stopDurationVital","PageExitReason","UNLOADING","PAGEHIDE","FROZEN","isPageExitReason","getMutationObserverConstructor","originalInstance","runOnReadyState","expectedReadyState","LOAD","DOM_CONTENT_LOADED","FAKE_INITIAL_DOCUMENT","RESOURCE_TYPES","initiatorType","computeResourceKind","isValidUrl","getPathName","RESOURCE_TYPES_1","areInOrder","computePerformanceResourceDuration","responseEnd","computePerformanceResourceDetails","validEntry","toValidEntry","fetchStart","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","secureConnectionStart","connectEnd","requestStart","responseStart","formatTiming","first_byte","ssl","dns","TOLERANT_RESOURCE_TIMINGS","areCommonTimingsInOrder","areRedirectionTimingsInOrder","hasRedirection","computeSize","encodedBodySize","decodedBodySize","encoded_body_size","decoded_body_size","transfer_size","transferSize","isAllowedRequestUrl","DATA_URL_REGEX","MAX_ATTRIBUTE_VALUE_CHAR_LENGTH","isLongDataUrl","sanitizeDataUrl","isTextNode","isElementNode","isNodeShadowHost","shadowRoot","isNodeShadowRoot","DOCUMENT_FRAGMENT_NODE","forEachChildNodes","RumPerformanceEntryType","INITIAL_DOCUMENT_OUTDATED_TRACE_ID_THRESHOLD","getDocumentTraceId","traceIdMeta","traceTimeMeta","createDocumentTraceData","getDocumentTraceDataFromMeta","getTraceCommentFromNode","findTraceComment","getDocumentTraceDataFromComment","traceTime","rawTraceTime","COMMENT_NODE","isCommentNode","supportPerformanceObject","supportPerformanceTimingEvent","entryType","PerformanceObserver","supportedEntryTypes","startPerformanceCollection","lifeCycle","cleanupTasks","forcedAttributes","RESOURCE","NAVIGATION","getEntriesByType","navigationEntry","relativePerformanceTiming","computeRelativePerformanceTiming","renderBlockingStatus","retrieveInitialDocumentResourceTiming","handleRumPerformanceEntries","performanceEntries_1","handlePerformanceEntryList_1","mainEntries","LONG_TASK","PAINT","experimentalEntries","LARGEST_CONTENTFUL_PAINT","FIRST_INPUT","LAYOUT_SHIFT","EVENT","buffered","durationThreshold","mainObserver_1","entryTypes","removePerformanceListener","clearResourceTimings","sendFakeTiming","retrieveNavigationTiming","stopFirstInputTiming","startTimeStamp","timingSent","CLICK","MOUSE_DOWN","KEY_DOWN","TOUCH_START","POINTER_DOWN","processingStart","processingEnd","sendTimingIfPointerIsNotCancelled","sendTiming","POINTER_UP","POINTER_CANCEL","retrieveFirstInputTiming","numberKey","timingElement","rumAllowedPerformanceEntries","loadEventEnd","isIncompleteNavigation","isForbiddenResource","ErrorSource","AGENT","CONSOLE","CUSTOM","LOGGER","NETWORK","createEventRateLimiter","onLimitReached","eventCount","allowNextEvent","isLimitReached","getSyntheticsContext","_DATADOG_SYNTHETICS_PUBLIC_ID","getSyntheticsTestId","resultId","_DATADOG_SYNTHETICS_RESULT_ID","getSyntheticsResultId","test_id","result_id","injected","limitModification","modifiableFieldPaths","fieldPath","fieldType","isValidObjectContaining","newType","isValidObject","modifiableFieldPathsByEvent","VIEW_MODIFIABLE_FIELD_PATHS","USER_CUSTOMIZABLE_FIELD_PATHS","startRumAssembly","viewContexts","urlContexts","actionContexts","displayContext","ciVisibilityContext","WRITABLE_RESOURCE_GRAPHQL","eventRateLimiters","syntheticsContext","rawRumEvent","domainContext","savedCommonContext","customerContext","viewContext","findView","urlContext","findUrl","findActionId","serverRumEvent","drift","session_sample_rate","session_replay_sample_rate","browser_sdk_version","application","referrer","synthetics","ci_test","has_replay","hasReplay","sampled_for_replay","sessionReplayAllowed","usr","rateLimitReached","shouldSend","xhrObservable","LifeCycle","AbstractLifeCycle","eventCallbacks","END_OF_TIMES","CLEAR_OLD_VALUES_INTERVAL","ValueHistory","maxEntries","clearOldValuesInterval","clearOldValues","closeActive","latestEntry","findAll","oldTimeThreshold","VIEW_CONTEXT_TIME_OUT_DELAY","instrumentMethod","targetPrototype","onPreCall","instrumentation","postCallCallback","onPostCall","createInstrumentedMethod","instrumentationWrapper","instrumentSetter","originalDescriptor","stoppedInstrumentation","fetchObservable","xhrContexts","initXhrObservable","stopInstrumentingStart","openXhr","stopInstrumentingSend","startContext","hasBeenReported","stopInstrumentingOnReadyStateChange","unsubscribeLoadEndListener","completeContext","sendXhr","stopInstrumentingAbort","abortXhr","createXhrObservable","initFetchObservable","methodFromParams","responsePromise","reportFetch","DOMException","ABORT_ERR","afterSend","nextRequestIndex","startRequestCollection","tracer","traceFetch","headers_1","traceXhr","startTracer","requestIndex","getNextRequestIndex","trackXhr","clonedResponse","tryToClone","readBytesCount","onDone","limitExceeded","collectStreamBody","completeBuffer_1","offset_1","bytesLimit","readMore","readBytesFromStream","waitForResponseToComplete","trackFetch","trackEventCounts","isChildEvent","eventCounts","errorCount","longTaskCount","resourceCount","actionCount","frustrationCount","frustration","discarded","PAGE_ACTIVITY_VALIDATION_DELAY","PAGE_ACTIVITY_END_DELAY","waitPageActivityEnd","domMutationObservable","pageActivityEndCallback","maxDuration","pageActivityObservable","firstRequestIndex","pendingRequestsCount","notifyPageActivity","isExcludedUrl","startEvent","stopTrackingWindowOpen","isBusy","createPageActivityObservable","pageActivityEndTimeoutId","hasCompleted","validationTimeoutId","hadActivity","maxDurationTimeoutId","pageActivitySubscription","lastChangeTime","doWaitPageActivityEnd","requestUrl","cssEscape","asCodePoint","getParentElement","DEFAULT_PROGRAMMATIC_ACTION_NAME_ATTRIBUTE","getActionNameFromElement","userProgrammaticAttribute","getActionNameFromElementProgrammatically","getActionNameFromElementForStrategies","priorityStrategies","fallbackStrategies","targetElement","programmaticAttribute","elementWithAttribute","supportsElementClosestResult","supportsElementClosest","normalizeWhitespace","supportsLabelPropertyResult","HTMLInputElement","supportsLabelProperty","getTextualContent","labelledByAttribute","refElement","MAX_PARENTS_TO_CONSIDER","recursionCounter","strategies_1","trimmedName","removeTextFromElements","element_1","textToReplace","supportScopeSelectorCache","STABLE_ATTRIBUTES","GLOBALLY_UNIQUE_SELECTOR_GETTERS","getStableAttributeSelector","isGeneratedValue","UNIQUE_AMONG_CHILDREN_SELECTOR_GETTERS","getClassList","getSelectorFromElement","targetElementSelector","globallyUniqueSelector","findSelector","isSelectorUniqueGlobally","isSelectorUniqueAmongSiblings","combineSelector","getPositionSelector","getAttributeSelector","STABLE_ATTRIBUTES_1","elementIndex","selectorGetters","childSelector","selectorGetters_1","elementSelector","selectorGetter","fullSelector","supportScopeSelector","MAX_DURATION_BETWEEN_CLICKS","MAX_DISTANCE_BETWEEN_CLICKS","createClickChain","firstClick","onFinalize","maxDurationBetweenClicksTimeoutId","bufferedClicks","appendClick","stopObservable","tryFinalize","dontAcceptMoreClick","isStopped","tryAppend","areEventsSimilar","isSelectionEmpty","isValidPointerEvent","MIN_CLICKS_PER_SECOND_TO_CONSIDER_RAGE","computeFrustration","clicks","rageClick","getUserActivity","isRage","addFrustration","isDead","hasSelectionChanged","DEAD_CLICK_EXCLUDE_SELECTOR","hasPageActivity","msMatchesSelector","CLICK_ACTION_MAX_DURATION","ACTION_CONTEXT_TIME_OUT_DELAY","trackClickActions","currentClickChain","stopClickChain","stopActionEventsListener","selectionEmptyAtPointerDown","clickContext","onPointerDown","onPointerUp","userActivity","SELECTION_CHANGE","localUserActivity_1","INPUT","listenActionEvents","pointerDownEvent","clickActionBase","computeClickActionBase","hadActivityOnPointerDown","pageActivityEndEvent","processPointerDown","appendClickToClickChain","newClick","stopWaitPageActivityEnd","discard","viewEndedSubscription","endClocks","stopSubscription","startClickAction","rageClick_1","finalizeClicks","activityEndTime","historyEntry","eventCountsSubscription","frustrationTypes","newActivityEndTime","frustrationType","domEvents","clickAction","processAction","pageStateHistory","autoActionProperties","isAutoAction","loading_time","long_task","in_foreground","wasInPageStateAt","trackRuntimeError","errorObservable","handleRuntimeError","rawError","stopInstrumentingOnError","errorObj","stopInstrumentingOnUnhandledRejection","instrumentUnhandledRejection","consoleObservablesByApi","initConsoleObservable","apis","consoleObservables","originalConsoleApi","formatConsoleParameters","firstErrorParam","buildConsoleLog","createConsoleObservable","RawReportType","intervention","deprecation","cspViolation","initReportObservable","SECURITY_POLICY_VIOLATION","blockedURI","effectiveDirective","buildStack","originalPolicy","sourceFile","originalReport","buildRawReportFromCspViolation","createCspViolationReportObservable","reportTypes","ReportingObserver","handleReports","reports","report","buildRawReportFromReport","createReportObservable","startErrorCollection","featureFlagContexts","consoleError","trackConsoleError","csp","disposition","trackReportError","handling_stack","source_type","featureFlagContext","findFeatureFlagEvaluations","feature_flags","processError","doStartErrorCollection","matchRequestTiming","sameNameEntries","getEntriesByName","candidates","errorMargin","isBetween","startResourceCollection","matchingTiming","shouldIndex","shouldIndexResource","tracingInfo","hasBeenTraced","span_id","trace_id","rule_psr","getRulePsr","computeRequestTracingInfo","correspondingTimingOverrides","computePerformanceEntryMetrics","wasInPageStateDuringPeriod","computeRequestDuration","pageStateInfo","computePageStateInfo","resourceEvent","status_code","performanceEntry","requestInput","requestInit","processRequest","processResourceEntry","computeEntryTracingInfo","entryMetrics","responseStatus","resourceStart","render_blocking_status","RESOURCE_PAGE_STATES","page_states","page_was_discarded","wasDiscarded","FCP_MAXIMUM_DELAY","previousLcp","LCP_MAXIMUM_DELAY","wrongLcpReported","trackLargestContentfulPaint","firstHidden","firstInteractionTimestamp","stopEventListener","biggestLcpSize","unsubscribeLifeCycle","lcpEntry","lcpTargetSelector","ZERO_LCP_TELEMETRY","lcpEntries","wrongLcpDetected","toSerializableLCP","timeOrigin","monitorLcpEntries","targetSelector","jsonEntry","trackInitialViewMetrics","setLoadEvent","scheduleViewUpdate","initialViewMetrics","stopNavigationTracking","domComplete","domContentLoaded","domContentLoadedEventEnd","domInteractive","loadEvent","trackNavigationTimings","navigationTimings","stopListeners","PAGE_HIDE","VISIBILITY_CHANGE","trackFirstHidden","stopFCPTracking","fcpEntry","trackFirstContentfulPaint","firstContentfulPaint","stopLCPTracking","largestContentfulPaint","stopFIDTracking","firstInputEntry","firstInputDelay","firstInputTargetSelector","trackFirstInput","firstInput","trackCumulativeLayoutShift","maxClsValue","largestLayoutShiftTarget","largestLayoutShiftTime","largestLayoutShift","slidingSessionWindow","hadRecentInput","clsTarget","cslTargetSelector","interactionCountEstimate","minKnownInteractionId","maxKnownInteractionId","viewportObservable","getInteractionCount","interactionCount","MAX_INTERACTION_ENTRIES","MAX_INP_VALUE","trackInteractionToNextPaint","viewStart","viewLoadingType","PerformanceEventTiming","getInteractionToNextPaint","setViewEnd","interactionToNextPaintTargetSelector","interactionId","previousInteractionCount","computeViewInteractionCount","getViewInteractionCount","stopViewInteractionCount","trackViewInteractionCount","viewEnd","longestInteractions","sortAndTrimLongestInteractions","interactionIndex","minLongestInteraction","estimateP98Interaction","trackLongestInteractions","interactionToNextPaint","newInteraction","viewEndTime","getScrollX","visual","pageLeft","getScrollY","pageTop","initViewportObservable","updateDimension","getViewportDimension","RESIZE","createViewportObservable","THROTTLE_SCROLL_DURATION","trackScrollMetrics","scrollValues","throttleDuration","scrollingElement","scrollDepth","computeScrollValues","throttledNotify_1","observerTarget_1","resizeObserver_1","eventListener_1","createScrollValuesObservable","maxScrollDepth","maxScrollHeight","maxScrollHeightTime","maxDepth","maxDepthScrollTop","trackCommonViewMetrics","loadingType","commonViewMetrics","loadType","isWaitingForLoadEvent","isWaitingForActivityLoadingTime","loadingTimeCandidates","invokeCallbackIfAllCandidatesAreReceived","trackLoadingTime","newLoadingTime","loadingTime","stopLoadingTimeTracking","stopScrollMetricsTracking","newScrollMetrics","stopCLSTracking","cumulativeLayoutShift","stopINPTracking","getCommonViewMetrics","THROTTLE_VIEW_UPDATE_PERIOD","SESSION_KEEP_ALIVE_INTERVAL","KEEP_TRACKING_AFTER_VIEW_DELAY","trackViews","locationChangeObservable","areViewsTrackedAutomatically","locationChangeSubscription","activeViews","currentView","startNewView","viewOptions","newlyCreatedView","customTimings","documentVersion","sessionIsActive","viewCreatedEvent","triggerViewUpdate","cancelScheduleViewUpdate","stopCommonViewMetricsTracking","stopInitialViewMetricsTracking","trackViewEventCounts","stopEventCountsTracking","keepAliveIntervalId","currentEnd","looksLikeRelativeTime","sanitized","sanitizeTiming","pageExitEvent","otherLocation","oldLocation","newLocation","correspondingId","isHashAnAnchor","getPathFromHash","renewViewOnLocationChange","startViewCollection","recorderApi","replayStats","getReplayStats","pageStates","viewEvent","document_version","replay_stats","start_session_replay_recording_manually","cumulative_layout_shift","cumulative_layout_shift_target_selector","dom_complete","dom_content_loaded","dom_interactive","first_contentful_paint","first_input_delay","first_input_time","first_input_target_selector","interaction_to_next_paint","interaction_to_next_paint_target_selector","is_active","largest_contentful_paint","largest_contentful_paint_target_selector","load_event","discardNegativeDuration","loading_type","time_spent","max_depth","max_depth_scroll_top","max_scroll_height","max_scroll_height_time","privacy","replay_level","custom_timings","processViewUpdate","VISIBILITY_CHECK_DELAY","SESSION_CONTEXT_TIMEOUT_DELAY","stopCallbacks","startSessionManager","sessionContextHistory","buildSessionContext","trackActivity","expandSessionWhenVisible","visibilityCheckInterval","trackVisibility","RESUME","trackResume","findActiveSession","startRumSessionManager","rawTrackingType","hasValidRumSession","isTypeTracked","rumSessionType","Batch","flushController","upsertBuffer","flushObservable","addOrUpdate","upsert","upsertMessages","isPageExit","sendOnExit","encoderResult","formatPayloadFromEncoder","pendingMessages","serializedMessage","estimatedMessageBytesCount","hasMessageFor","notifyBeforeAddMessage","notifyAfterAddMessage","realMessageBytesCount","removedMessage","messageBytesCount","notifyAfterRemoveMessage","flushEvent","MAX_ONGOING_BYTES_COUNT","MAX_ONGOING_REQUESTS","MAX_QUEUE_BYTES_COUNT","MAX_BACKOFF_TIME","INITIAL_BACKOFF_TIME","sendWithRetryStrategy","sendStrategy","transportStatus","queuedPayloads","bandwidthMonitor","canHandle","onSuccess","retryQueuedPayloads","onFailure","scheduleRetry","dequeue","currentBackoffTime","shouldRetryRequest","ongoingRequestCount","queueFullReported","previousQueue","newPayloadQueue","createHttpRequest","endpointBuilder","retryState","ongoingByteCount","sendStrategyForRetry","onResponse","canUseKeepAlive","isKeepAliveSupported","keepalive","xhrUrl","sendXHR","fetchKeepAliveStrategy","canUseBeacon","sendBeacon","beaconUrl","hasReportedBeaconError","reportBeaconError","sendBeaconStrategy","createFlushController","durationLimitTimeoutId","messagesLimit","durationLimit","pageExitObservable","sessionExpireObservable","pageExitSubscription","sessionExpireSubscription","currentBytesCount","currentMessagesCount","messagesCount","cancelDurationLimitTimeout","messageBytesCountDiff","startRumBatch","telemetryEventObservable","createEncoder","primaryBatch","createBatch","replicaBatch","endpoint","replicated","transformMessage","startBatchWithReplica","isTelemetryReplicationAllowed","URL_CONTEXT_TIME_OUT_DELAY","createLocationChangeObservable","stopHistoryTracking","onHistoryChange","stopInstrumentingPushState","stopInstrumentingReplaceState","POP_STATE","trackHistory","onLocationChange","stopHashTracking","HASH_CHANGE","trackHash","FEATURE_FLAG_CONTEXT_TIME_OUT_DELAY","currentPeriodMeasures","currentBatchMeasures","batchHasRumEvent","MEASURES_PERIOD_DURATION","sendCurrentPeriodMeasures","batchCount","initCurrentPeriodMeasures","updateMeasure","mergeMeasure","batchBytesCount","batchMessagesCount","globalContextBytes","userContextBytes","featureFlagBytes","initCurrentBatchMeasures","MAX_PAGE_STATE_ENTRIES","MAX_PAGE_STATE_ENTRIES_SELECTABLE","PAGE_STATE_CONTEXT_TIME_OUT_DELAY","startPageStateHistory","maxPageStateEntriesSelectable","currentPageState","pageStateEntryHistory","addPageState","getPageState","stopEventListeners","PAGE_SHOW","FOCUS","BLUR","FREEZE","persisted","computePageState","nextPageState","eventStartTime","pageStateEntries","pageStateServerEntries","pageState","relativeStartTime","startVitalCollection","vitalStartsByName","vitalStop","vital","stopClocks","buildDurationVital","valueComputedBySdk","computed_value","processVital","createCookieObservable","cookieName","detectCookieChangeStrategy","CHANGE","changeEvent","listenToCookieStoreChange","watchCookieFallback","WATCH_COOKIE_INTERVAL_DELAY","previousCookieValue","watchCookieIntervalId","cookieValue","CI_VISIBILITY_TEST_ID_COOKIE_NAME","getSessionReplayUrl","sessionId","rumConfiguration","getSiteDefaultSubdomain","getDatadogSiteUrl","statsPerView","MAX_STATS_HISTORY","getSegmentsCount","getOrCreateReplayStats","segments_count","records_count","segments_total_raw_size","isFirst_1","deleteOldestStats","NodePrivacyLevel","PRIVACY_ATTR_NAME","PRIVACY_ATTR_VALUE_ALLOW","PRIVACY_ATTR_VALUE_MASK","PRIVACY_ATTR_VALUE_MASK_USER_INPUT","PRIVACY_ATTR_VALUE_HIDDEN","PRIVACY_CLASS_ALLOW","PRIVACY_CLASS_MASK","PRIVACY_CLASS_MASK_USER_INPUT","PRIVACY_CLASS_HIDDEN","CENSORED_STRING_MARK","CENSORED_IMG_MARK","FORM_PRIVATE_TAG_NAMES","OUTPUT","TEXTAREA","OPTION","DATALIST","OPTGROUP","getNodePrivacyLevel","parentNodePrivacyLevel","nodePrivacyLevel","reducePrivacyLevel","getNodeSelfPrivacyLevel","childPrivacyLevel","privAttr","inputElement","autocomplete","relAttribute","getLowerCaseAttribute","nameAttribute","propertyAttribute","shouldIgnoreElement","shouldMaskNode","privacyLevel","isFormElement","censorText","getTextContent","textNode","ignoreWhiteSpace","serializedNodeIds","hasSerializedNode","getSerializedNodeId","getElementInputValue","URL_IN_CSS_REF","ABSOLUTE_URL","DATA_URI","switchToAbsoluteUrl","cssHref","matchingSubstring","singleQuote","urlWrappedInSingleQuotes","doubleQuote","urlWrappedInDoubleQuotes","urlNotWrappedInQuotes","makeUrlAbsolute","TAG_NAME_REGEX","getValidTagName","processedTagName","censoredImageForSize","FullSnapshot","IncrementalSnapshot","Focus","ViewEnd","VisualViewport","FrustrationRecord","NodeType","CDATA","IncrementalSource","MouseMove","MouseInteraction","ViewportResize","TouchMove","MediaInteraction","StyleSheetRule","MouseInteractionType","MouseUp","MouseDown","Click","ContextMenu","DblClick","Blur","TouchStart","TouchEnd","MediaInteractionType","Play","Pause","serializeStyleSheets","cssStyleSheets","cssStyleSheet","serializeAttribute","getCssRulesString","getCssRuleStringForSafari","getCssRuleString","isCSSStyleRule","isCSSImportRule","serializeNodeWithId","serializedNode","DOCUMENT_NODE","serializeChildNodes","adoptedStyleSheets","serializeDocumentNode","serializationContext","shadowRootsController","addShadowRoot","serializeDocumentFragmentNode","DOCUMENT_TYPE_NODE","documentType","isSVG","rr_width","rr_height","safeAttrs","formValue","optionElement","stylesheet","DISABLE_REPLAY_INLINE_CSS","_cssText","mediaElement","rr_mediaState","elementsScrollPositions","rr_scrollLeft","rr_scrollTop","serializeAttributes","serializeElementNode","serializeTextNode","CDATA_SECTION_NODE","serializeNode","_nextId","serializedNodeWithId","serializeNodeId","setSerializedNodeId","serializedChildNode","serializeDocument","composed","convertMouseEventToLayoutCoordinates","layoutViewportX","layoutViewportY","visualViewportX","visualViewportY","isVisualViewportFactoredIn","assembleIncrementalSnapshot","MOUSE_MOVE_OBSERVER_THRESHOLD","trackMove","moveCb","coordinates","tryToComputeCoordinates","timeOffset","cancelThrottle","MOUSE_MOVE","TOUCH_MOVE","eventTypeToMouseInteraction","CONTEXT_MENU","DBL_CLICK","TOUCH_END","trackMouseInteraction","mouseInteractionCb","recordIds","getIdForEvent","SCROLL_OBSERVER_THRESHOLD","trackScroll","scrollCb","scrollPositions","trackViewportResize","viewportResizeCb","viewportResizeSubscription","trackMediaInteraction","mediaInteractionCb","PLAY","PAUSE","trackStyleSheet","styleSheetCb","checkStyleSheetAndCallback","instrumentationStoppers","CSSStyleSheet","adds","removes","instrumentGroupingCSSRuleClass","parentStyleSheet","getPathToNestedCSSRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","stopper","currentRule","parentRule","trackFocus","focusCb","has_focus","trackFrustration","frustrationCb","frustrationSubscription","trackViewEnd","viewEndCb","viewEndSubscription","trackInput","inputCb","stopPropertySetterInstrumentation","lastInputStateMap","HTMLTextAreaElement","HTMLSelectElement","onElementChange","instrumentationStoppers_1","inputState","cbWithDedup","lastInputState","MUTATION_PROCESS_MAX_DELAY","createMutationBatch","processMutationBatch","cancelScheduledFlush","pendingMutations","addMutations","requestIdleCallback","cancelIdleCallback","trackMutation","mutationCallback","mutationBatch","nodePrivacyLevelCache","removedNodes","removedNode","traverseRemovedShadowDom","removeShadowRoot","filteredMutations","nodeAndAncestorsHaveSerializedNode","addedAndMovedNodes","addedNodes","mutations_1","sortedAddedAndMovedNodes","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","addedNodeMutations","sortedAddedAndMovedNodes_1","hasBeenSerialized","nextId","removedNodeMutations","processChildListMutations","textMutations","handledNodes","filteredMutations_1","processCharacterDataMutations","attributeMutations","handledElements","handledAttributes","emittedMutations","filteredMutations_2","transformedValue","inputValue","emittedMutation","processAttributesMutations","processMutations","takeRecords","attributeOldValue","characterDataOldValue","shadowDomRemovedCallback","initShadowRootsController","controllerByShadowRoot","mutationTracker","inputTracker","scrollTracker","emitAndComputeStats","scrollPositionsByElement","createElementsScrollPositions","stopFullSnapshots","flushMutations","fullSnapshotCallback","takeFullSnapshot","records","initialOffset","startFullSnapshots","initRecordIds","trackers","viewEndRecord","Segment","creationReason","encodedBytesCount","creation_reason","has_full_snapshot","index_in_view","addRecord","additionalBytesCount","SEGMENT_DURATION_LIMIT","SEGMENT_BYTES_LIMIT","startSegmentCollection","httpRequest","getSegmentContext","nextSegmentCreationReason","unsubscribeViewCreated","flushSegment","unsubscribePageExited","rawSegmentBytesCount","metadataAndSegmentSizes","raw_segment_size","compressed_segment_size","serializedMetadataAndSegmentSizes","buildReplayPayload","expirationTimeoutId","doStartSegmentCollection","computeSegmentContext","isBrowserSupported","NodeList","getSessionReplayLink","isRecordingStarted","getErrorType","createDeflateEncoder","streamId","compressedDataTrailer","compressedData","nextWriteActionId","pendingWriteActions","removeMessageListener","workerResponse","trailer","nextPendingAction","writeCallback","finishCallback","consumeResult","buffers","buffers_1","concatBuffers","sendResetIfNeeded","pendingWriteAction","INITIALIZATION_TIME_OUT_DELAY","createDeflateWorker","onInitializationFailure","createDeflateWorkerImpl","removeErrorListener_1","removeMessageListener_1","onInitialized","initializationFailureCallbacks","onTimeout","doStartDeflateWorker","getDeflateWorkerStatus","baseMessage","worker_version","stream_id","startRecordingImpl","onRumStart","isRecording","startStrategy","stopStrategy","getSessionReplayLinkStrategy","cachedDeflateEncoder","deflateEncoder","stopRecording","makeRecorderApi","replayRequest","startRecordBridge","segmentCollection","datadogRum","startRumImpl","customerDataTrackerManager","globalContextManager","userContextManager","currentConsent","createTrackingConsentState","buildCommonContext","CUSTOM_VITALS","rumPublicApi","stopTime","storeContextsAcrossPages","createPostStartStrategy","sanitizedOptions","publicApi","onReady","makePublicApi","setTrackingConsent","feature","tracking_consent","setGlobalContextProperty","removeGlobalContextProperty","setGlobalContext","clearGlobalContext","getInitConfiguration","checkUser","setUserProperty","sanitizedProperty","removeUserProperty","clearUser","startSessionReplayRecording","stopSessionReplayRecording","makeRumPublicApi","bridge_1","startRumTelemetry","startFeatureFlagContexts","pagehideEnabled","stopBeforeUnloadListener","BEFORE_UNLOAD","createPageExitObservable","startRumSessionManagerStub","startRumEventBridge","batch_1","batchFlushObservable","startCustomerDataTelemetry","createDOMMutationObservable","viewContextHistory","buildViewContext","startViewContexts","previousViewUrl","urlContextHistory","viewUrl","buildUrlContext","changeTime","startUrlContexts","startActionCollection","viewportDimension","startDisplayContext","cookieObservable","testExecutionId","cookieObservableSubscription","test_execution_id","startCiVisibilityContext","startRumEventCollection","stopRumEventCollection","addTelemetryConfiguration","baseSerializedConfiguration","telemetry_sample_rate","telemetry_configuration_sample_rate","telemetry_usage_sample_rate","use_before_send","use_cross_site_session_cookie","use_partitioned_cross_site_session_cookie","use_secure_session_cookie","use_proxy","silent_multiple_init","track_session_across_subdomains","allow_fallback_to_local_storage","store_contexts_across_pages","allow_untrusted_events","trace_sample_rate","trace_context_injection","action_name_attribute","use_allowed_tracing_urls","selected_tracing_propagators","default_privacy_level","use_excluded_activity_urls","use_worker_url","compress_intake_requests","track_views_manually","track_user_interactions","track_resources","track_long_task","serializeRumConfiguration","startLongTaskCollection","stopViewCollection","stopPerformanceCollection","vitalCollection","internalContext","application_id","session_id","user_action","startInternalContext","existingGlobalVariable","defineGlobal","initialisePendo","_userMetadata$account","annotateUrl","screenWidth","screen","screenHeight","ControlInsight","_Fragment","createAuth0Client","auth0","_process$env","_process2$env","_process3$env","_process4$env","_process","REACT_APP_DATADOG_APPLICATION_ID","_process2","REACT_APP_DATADOG_CLIENT_TOKEN","_process3","REACT_APP_BUILD_ENV","_process4","datadogInit","httpLink","errorLink","withTokenLink","bearerToken","authLink","inflateLink","introspectionResult","riskIntelTypePolicies","riskAndControlsTypePolicies","getClient","ReactDOM","AuthProvider","ControlRewriteProvider","renderApp","serviceWorker","registration"],"sourceRoot":""}